説明

シリアルポートメモリ通信の待ち時間および信頼性を改善するための方法およびシステム

メモリ待ち時間を短縮するための方法、装置およびシステムが開示される。一実施形態では、ホストコンピュータシステムとメモリとの間のデータを、複数の時間間隔にわたって、メモリでポートまたはポート群を介して通信し、このホストコンピュータはメモリと連結される。さらに、データに関連したコマンドを、単一の時間間隔にわたって、ホストコンピュータシステムとメモリとの間でポートまたはポート群を介して通信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、広義にはコンピュータメモリの分野に関し、特にシリアルポートメモリ通信の待ち時間と信頼性を改善することに関する。
【0002】
(関連出願の相互参照)
本出願は、2008年10月29日にファイルされた米国仮特許出願第61/109,480号明細書の非仮出願であり、その優先権を主張する。
【背景技術】
【0003】
あるホスト(システムオンチップ、コンピュータ、グラフィックスコントローラなど)または複数のホストとメモリとの間で、個々のポートを介してコマンドやデータが転送される高速シリアルインタフェースを用いたメモリシステムでは、何らかのエラー検出と組み合わせて帯域幅を最大にし、適切なシステム動作を保証するのが望ましい。
【0004】
シリアルリンクには、一度に1ビットしか送信されないがゆえの固有の待ち時間がある。また、シリアライゼーションおよびデシリアライゼーションプロセスによって、待ち時間がさらに長くなる。ポートを個々に使用しても待ち時間が大幅に改善されることはなく、帯域幅の改善には定型化されたアクセス方法が用いられる(ストライプアクセスの場合のように、各ポートから異なる専用のメモリ領域にアクセスするなど)。(複数のポートを一斉に用いて)ポートバインディングを可能にすることで、定型化されたアクセス方法を使わずに数ビットのデータを一度に転送しつつ帯域幅を広げ、メモリ待ち時間を低減することができる。
【0005】
メモリには、ある程度のデータセキュリティも必要である。たとえば、シリアルチャネルにおいては、待ち時間を許容外の長さにする方法を使わないかぎり検出できないエラーが生じる可能性がある。バウンドポート状況では、コマンド時間にアイドル状態のままになるポートがいくつかある。この未使用の帯域幅は、その同じ時間内にコマンドの複製で満たされる。この方法は、時間的な複製を用いて単一ポートにまでおよび、ポート構成に対する特徴をあたえている。
【0006】
図1は、EIA標準RS−232−Cにおける従来のシリアルビット割り当て100を示す。図中、データのシリアル転送は、個々のバイナリ値(ビット)102〜118を一度に1つずつ順に観察し、それらを値124内の異なるビット位置に割り当てることで、値全体124にアセンブルするRS−232リンクと類似している。たとえば、値124の最上位ビットに割り当てられる104が第1のビットである場合、第2のビット106が続き、同様に通信される最後のビット118で最下位ビットが埋まるまで続くといった具合である。この場合のアセンブルされた値を、値124ならびにストップビット102、およびスタートビット120を含むフレーム128と呼ぶ。また、スタートビット120およびストップビット122を含むフレーミングビット126と呼ばれる余分のビットを使用して、フレーム128の輪郭を画定する。これは、受信機がフレーム128の開始点を探したり、フレームが想定時に到着しているか否かをチェックしたりするのに使用可能である。他のスキームでは、フレーミングビット126を用いて、送信機と受信機との間のデータ転送速度がわずかに異なるまたは変化している場合ですらも、受信機が高信頼度で個々のビットを探すのを助ける。
【発明の概要】
【発明が解決しようとする課題】
【0007】
個々のシリアルリンクでのメモリに対する通信によって、かなりの待ち時間が発生し、2つ以上のホストによって単一メモリにアクセスさせると、メモリ資源が複雑になる。さらに、メモリは1つ以上のポートを持ち得るものであり、各々が、待ち時間および帯域幅を改善するために、シリアル送信機とシリアル受信機ならびに関連の回路を含む。バウンドポート状況では、コマンド時間のあいだもいくつかのポートがアイドルのままである。この未使用帯域幅を同一の時間間隔におけるコマンドの空間的な複製で埋め、異なる時間間隔で、時間的な複製を用いてこの方法を単一ポートにも拡張し、すべてのポート構成にこの特徴を持たせる。バウンドポート状況では、データが複数ポートで送信されるが、コマンドはスタンドアロンでなければならない。第一に、未使用のポートはコマンドの複製を含み得る。第二に、特定のコマンドを同時に発行可能である。さらに、シリアライゼーション、デシリアライゼーション、エラー管理のためのデータのフレーミング、さらには同期などの追加のプロセスがゆえに、シリアル通信ではパラレル通信よりも待ち時間が長くなる。
【0008】
したがって、メモリ待ち時間を減らすための技術を導入および採用するのが望ましい。
【課題を解決するための手段】
【0009】
ポートメモリ通信のメモリ待ち時間および信頼性を改善するための方法、装置およびシステムが開示される。
【0010】
一実施形態では、この方法は、ホストコンピュータシステムとメモリとの間で、メモリにて複数の時間間隔にわたってポート群を介してデータを通信することを含み、ホストコンピュータがメモリに連結され、ホストコンピュータシステムとメモリとの間で、単一の時間間隔にわたって、ポートまたはポート群を介してデータと関連したコマンドを通信することを含む。
【0011】
一実施形態では、装置が、メモリと連結されたホストコンピュータシステムであって、メモリは、複数の時間間隔にわたって、メモリのポート群を介してホストコンピュータシステムからデータを受信するためのものである。メモリは、単一の時間間隔にわたって、ホストコンピュータシステムからポートまたはポート群を介してデータと関連したコマンドを受信するようさらに改変されている。
【0012】
一実施形態では、方法が、帯域幅および待ち時間を変えるため、および/または電力を節約するために、群内のポート数をad hocで選択可能であるホストコンピュータシステムとメモリとの間でデータを通信することを含む。
【0013】
一実施形態では、装置が、ホストコンピュータシステムとメモリとの間でデータを通信し、帯域幅および待ち時間を変えるため、および/または電力を節約するために、群内のポート数をad hocで選択することを含む。
【0014】
一実施形態では、複数のホストをメモリに接続するためのシステムが開示される。このシステムは、メモリに連結されたホストコンピュータシステムまたはコンピュータシステム内の機能を含み、メモリは、ポートバインディングシステムを採用してメモリ待ち時間を短縮し、ポートバインディングシステムはデータおよびコマンドの通信用に複数のポートを有し、複数のポートの2つ以上のポートが、ad hocにて1つ以上のポート群に組み合わせられ、ポートバインディングシステムは、複数の時間間隔にわたって、メモリでポート群を介してホストとメモリとの間でデータを通信し、データに関連したコマンドを、単一の時間間隔で、ポートまたはポート群を介してホストとメモリとの間で通信する。
【0015】
添付の図面の各図に本発明の実施形態を限定ではなく一例として図示し、図中、同様の参照符号は同様の要素を示す。
【図面の簡単な説明】
【0016】
【図1】RS−232の従来のシリアルビット割り当てを示す。
【図2A】単一ホストバウンドポートメモリの実施形態を示す。
【図2B】4ポートメモリの単一ホスト接続の実施形態を示す。
【図2C】単一ホストインタフェース用ポートバインディング選択の実施形態を示す。
【図2D】スマートモバイルフォンアーキテクチャの実施形態を示す。
【図2E】シリアルポートDRAM(SPDRAM)を利用したスマートフォンアーキテクチャの図2Dとは別の実施形態を示す。
【図2F】複数ホストバインディング構成の実施形態を示す。
【図2G】マルチホストバウンドポートメモリの実施形態を示す。
【図2H】最大16ポート用のポートバインディング制御レジスタならびに、最大16ポート用の複製コマンドチェックレジスタの実施形態を示す。
【図2I】バインディングデマルチプレクサの実施形態を示す。
【図2J】バインディングデマルチプレクサ経路指定を示すテーブルの実施形態を示す。
【図2K】バインディングマルチプレクサの実施形態を示す。
【図2L】バインディングマルチプレクサ経路指定を示すテーブルの実施形態を示す。
【図3】フレーム同期のためのプロセスの実施形態を示す。
【図4】電源制御のためのプロセスの実施形態を示す。
【図5】単一ポートを採用している、複製チェックおよびコマンド解釈のためのプロセスの実施形態を示す。
【図6】ポート内でフレームを受信およびデコードするためのプロセスの実施形態を示す。
【図7A】17ビットのデコード後フレーム(フォーマット)の実施形態を示す。
【図7B】コマンド、ステータス、データエンコード用フレームの実施形態を示す。
【図7C】アクティブバンクおよびアクティブコマンドの実施形態を示す。
【図7D】書き込みマスクおよび書き込みコマンドの実施形態を示す。
【図8A】書き込みマスクモデルの実施形態を示す。
【図8B】書き込みマスクモデルの実施形態を示す。
【図8C】書き込みマスクモデルの実施形態を示す。
【図9】複数ポートを採用している、複製チェックおよびコマンド解釈のためのプロセスの実施形態を示す。
【図10】コマンド複製モデルの実施形態を示す。
【発明を実施するための形態】
【0017】
本発明の実施形態は、広義にはシリアルポートメモリ通信の待ち時間と信頼性を改善することに関する。しかしながら、これは高速パラレルなどの他のスタイルのインタフェースにも等しく適用可能である。
【0018】
本明細書で使用する場合、「メモリ」とは、コンピューティングプロセッサあるいは、キーボード、ディスプレイ、カメラ、大容量記憶装置(磁気ディスク、光ディスク、磁気テープなど)、ネットワークコントローラといった周辺機器、あるいはワイヤレスネットワークなどの任意の「ホスト」で使用するために、事前に格納されたデータの検索を担うコンピュータシステム(図2D、図2Eなど)におけるコンポーネントを示す。一般に、メモリは、コンピュータシステムでデータを処理するために、1つ以上のマイクロプロセッサと連結される。データは、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、FLASH、PROM(プログラム可能な読み出し専用メモリ)、消去可能なPROM(EPROM)、電気的消去可能なPROM(EEPROM)用などのホストによってメモリに格納可能であるか、読み出し専用メモリ(ROM)場合のように、あらかじめ定められている。メモリは、ホストによって、PCIなどをバスを介して、あるいは中間メモリコントローラを介して、直接アクセス可能なものである。メモリへのシリアルアクセスでは、メモリとの間で、単一の回路を伝搬する単一シーケンスの電気信号を意味のあるコマンドおよびデータに変換したり、その逆の変換をしたりする(図1に示すようなRS−232と同様)。この変換を実施する回路を「ポート」と呼ぶ。
【0019】
一実施形態では、メモリ待ち時間を短縮するために、マスク情報を含めることなく、同一の通信フレームに書き込みコマンドおよびデータを記述し、フレーム内のビット数を減らして待ち時間を短くできるマスキングスキームが採用される。さらに、待ち時間を短縮するために、メモリベースのプロトコルを利用して、フレームサイズを小さくして待ち時間を減らし、より大きな拡張性vs.レガシーのダイナミックランダムアクセスメモリ(DRAM)プロトコルを提供し、帯域幅を広げる際のコマンドセットの変化を少なくする。
【0020】
図2Aは、単一ホストバウンドポートメモリ200の実施形態を示す。バウンドポートメモリ200の図示の実施形態は、バウンドポートメモリ200のバウンドポートメモリシステム204と接続されている、多数のバンク(8バンクなど)を有するコアメモリ202(DRAM、FLASHなど)を含む。メモリコア202のバンクは、4つのポート206〜212などの多数のポートと通信状態にある。4つのポート206〜212はすべて一緒に動作し、可変帯域幅で単一ホストに対するインタフェースをなす。バンクは、1つのバンクから同時に読み出しがなされ、別のバンクから書き込みがなされる場合のように、独立して用いられる。メモリコア202は、データを読み出すためのメモリ読み出しバスと、データを書き込むためのメモリ書き込みバスとを含むものであってもよい。しかしながら、メモリコア202内で読み出しデータと書き込みデータの両方に対して単一の接続がなされている場合もある。さらに、バウンドポートメモリシステム204は、それぞれ図2Kおよび図2Iにおいて説明する、バインディングマルチプレクサ264とバインディングデマルチプレクサ262とを含む。
【0021】
従来の技術では、すべてのコマンドおよびデータビットが、形成対象となるコードについて同時に到着することになる個々のパラレルワイヤで一度に送信される。しかしながら、速度が高くなればなるほど、これらの個々のワイヤを流れるデータが、不正確または誤った時点でサンプリングされてしまう(関連のクロック信号を使用するなど)。高速サンプリングの問題を解決するために、セルフサンプリングされるシリアル信号(図1のRS−232など)を利用している。しかしながら、データが時間的に処理されるため、パラレルでの方法よりも待ち時間が長くなる。一実施形態では、メモリを有するシリアルポート通信での通信の待ち時間と信頼性が、複数のシリアルインタフェースまたはポートをグルーピングし、次々と、または時間的に、またはポート間で同時に、または空間的にコマンドを複製することを採用している。この技術の一実施形態をここに図示し、単一ホストポートバウンドポートメモリ200で採用する。
【0022】
一実施形態では、送信機(Tx)が16ビットのパラレルデータをシリアルビットストリームに変えればよく、その単一ビットストリームを送信するのに対し、受信機(Rx)は16ビットの単一ストリームを受信した後、これをパラレルストリームに変えればよい。ローカルメモリは、この場合、転送速度がほぼ同一の32ビット幅であればよい。図示のポートメモリ200では、4つのポート206〜212が採用されているため、4つのポート206〜212を介して各方向に64ビットのデータが流れる128ビット分のデータの移動がある(各方向に16ビット×4ポートで64ビットなど)。この128ビットの移動は、チップ内にある必要な回路で支持される。
【0023】
従来の技術とは異なり、各ポート206〜212では、データストリームをさらに高速にシリアライズおよびデシリアライズするためのシリアライザ/デシリアライザを使用する。たとえば、PLLを用いて入力クロックをさらに高い速度まで多重化し、個々のビットのサンプリングに用いられる入力データ転送速度に合わせるようにしてもよい。ポート206〜212でのデータストリームの到着時刻がわずかに異なることもあるが、このようなデータストリームの流れは速くなる。言葉をかえると、各ストリームが、同じ速度ではあるが、かなり速度が増して流れる。さらに、個々のビットのタイミングは全体として完全ではないこともあるが、ビット同士を整列させる必要はない。なぜなら、当該ビットの実際の到着時刻は問題ではなく、ピンで各ビットを同期させる代わりに、たとえばアスタリスク232〜238で示すように、各ポート206〜212でのデシリアライゼーション後にビットを同期させる。また、これらのアスタリスク232〜238またはその近辺でポート206〜212のデシリアライゼーション後にデータビットが流れる速度は、高速外部メモリインタフェース214〜228(250ピコ秒など)に比べると20倍遅く(5ナノ秒など)なることもある。一実施形態では、ポート206〜212は、位相検出、データビットの管理、当該データビットのサンプリング、レーンアライメントが可能である。
【0024】
コマンドインタープリタ248は、レーン構成(図2C、図7C、図7Dでさらに説明する)に基づいて、コマンドすなわち付属の/密接に関連したコマンドを処理しつづける。
【0025】
図2Bは、4ポートメモリ200の単一ホスト接続270の実施形態を示す。ホスト271に対するメモリ200の接続270の図示の実施形態。ホスト271は、1回の読み出し動作と1回の書き込み動作を同時におこなう。SPMTがグルーピングポートをまとめて画定して広範囲のデータ通信を形成するのに対し、バインディング群におけるポート206〜212の数は動的に選択可能である。たとえば、単一ポートを使用可能であり、あるいは、提供された数のポート206〜212に何個のポートを束ねてもよい(2乗など)。少なめのポートを使用する場合、ピンの数が少なくなり、必要な電力も小さくなる。ポートの数を増やすと帯域幅が広がり、結果として同一量のデータを検索するための待ち時間が短くなる。バウンドポートの数はいつでも変更できると考えられる。
【0026】
図2Cは、単一ホストインタフェース用のポートバインディング選択275の実施形態を示す。2つ以上のポートが束ねられる(277、278)と、データ帯域幅を効果的に多重化してすべてのポートのデータが群で転送される。しかしながら、個々のコマンドにはポートが1つあれば十分なこともあり、残りのポートが未使用のまま残るため、帯域幅の無駄を回避し、メモリ動作を向上させ、コマンド帯域幅を節約して、一組の密接に関連したコマンドまたは付属コマンドが得られる。これらのコマンドは、それがなければ無駄になっていた余分な帯域幅を適切に使用させるものである。当該密接に関連した/付属コマンドについては、他のポートで同時にコマンドを発行可能である前または後に発行すればよい。たとえば、アクティブコマンド(ACT)が発行されたら、コマンドを完成させるための付属としてアクティブバンクコマンド(ABNK)を同時に発行可能である。同様に、付属書き込みマスクコマンド(WMSK)に対して、書き込みコマンド(WR)を同時に付随させることが可能である。どのコマンドもポート0で受信できるが、関連した付属コマンドは、コマンド帯域幅を節約するために他のポートで受信される。コマンドACT、ABNK、WR、WMSKについては、図7B〜図7Dを参照して後述する。
【0027】
また、単一オプションは、逸脱したコマンドがゆえにメモリの動作状態に間違いが生じるのを防ぐための拡張エラー検出用のコマンド複製を可能にする。このオプションがイネーブルの状態で、単一ポートは、第1のフレームのコマンドと、続くフレームの複製とを比較する。2つ以上のポートが束ねられ(277、278)て使用される場合は、複製が別のポートで同時に生じるため、複製のために使う帯域幅が増えることはない。コマンドは複製されるが、この実施形態のデータは複製されない。少なくとも4つのバウンドポート278がある場合、複製コマンドと付属コマンドの両方を同時に使用してもよい。
【0028】
図2Dは、282およびアプリケーションプロセッサ281、個々の揮発性メモリ(DRAM274、SRAM/DRAM283など)、不揮発性メモリ(NAND272およびNORフラッシュ273など)、2つのプロセッサ281、282間の通信チャネル269で構成されるスマートモバイルフォンアーキテクチャ280の実施形態を示す。メモリ272〜274、283は、実行可能なプログラムコードならびに、接続されたそれぞれのプロセッサにとっては共有されずにプライベートなままのデータを格納・検索するのに用いられる。共有または通信は、通信チャネル269経由でなされる。アプリケーションプロセッサ281は、カメラ201および表示装置203などの他の周辺装置に連結されていてもよい。
【0029】
図2Eは、SPDRAM285を有するスマートフォンアーキテクチャ284の図2Dとは別の実施形態を示す。一実施形態では、メモリがベースバンドプロセッサ282とアプリケーションプロセッサ281とで共有される。この実施形態では、SPDRAM285を使用して、ベースバンドプロセッサとアプリケーションプロセッサとの間で通信をし、両プロセッサ用のプログラムコードとデータを格納し、このアーキテクチャをインプリメントするのに必要なメモリコンポーネントまたは技術の数を減らす。さらに、専用の通信チャネルがなくなることを含めて、メモリとプロセッサとの間の接続数が減る。いくつかのホストがメモリの一部にアクセスできる一方で、他のメモリはそれができないような形で、セグメント化がなされる。これによって、ベースバンドソフトウェア用などのセキュア環境でメモリデバイスの共有が可能になる。たとえば、アプリケーションプロセッサ281は、ベースバンドソフトウェア画像をSPDRAM285にロードし、ベースバンドプロセッサ282に対して画像が準備できたことを示すことが可能である。その後、ベースバンドプロセッサ282は他のホストへのアクセスをなくし、その上で画像の有効性を確認する。これが正しければ、ベースバンドプロセッサ282は、アプリケーションプロセッサ281で動作しているソフトウェアに中断されることなく、その画像から動作を進めることができる。
【0030】
図2Fは、複数ホストバインディング構成286、287、288の実施形態を示す。一実施形態では、複数ポートバインディングを、マルチホストの機能性と組み合わせることが可能である。たとえば、アプリケーションプロセッサ281などの1つのホストがさらに広い帯域幅を必要とする場合、これはそのインタフェースにいくつかのバウンドポートを使用できるが、一方で他のもうひとつのホストは、単一ポートを使用しつづければよい。図示の実施形態では、4ポートデバイスのいくつかのホストを束ねる若干の組み合わせ286、287、288が提供される。たとえば、組み合わせ286において、ホスト1および2の各々が2つのポートとの間をインタフェースする。組み合わせ287では、ホスト1がポート0との間をインタフェースするのに対し、ホスト2は2つのポート2、3との間をインタフェースする。組み合わせ288では、各ホストが単一ポートとの間をインタフェースする。単一ホストが4つのホストすべてを一緒に束ねられるなど、ホスト−ポートバインディングまたはインタフェースのどのような組み合わせでも提供できると考えられる。厳密にどのポートをどのホストに割り当てるかは、バウンドポート群の長さを決めるレジスタの設定次第のこともある。
【0031】
図2Gは、マルチホストバウンドポートメモリ292の実施形態を示す。4つのポート290を有する図示のマルチホストバウンドポートメモリ(マルチホストメモリシステム)292は、8つのバンク289を有するメモリコア291と通信できる状態にある。説明を簡単明瞭にするために、限られた数のポート290およびバンク289を図示してある。このマルチホストメモリシステム292は、図2Aの単一ホストメモリシステム204と類似しており、ここでは各ポート290からのデータを各バンク289が個々に利用できる。この実施形態では、バンク289が、データ転送用に独立にアドレス可能なマルチホストメモリシステム292全体の一部として画定される。また、個々のアクセスを提供することで、ポート290の単一ポートを、他のバンクにアクセスしている他のポートと衝突することなく指示どおりの期間、バンク289の単一バンクに接続できる。バインディングマルチプレクサ293およびデマルチプレクサ294を多重化して、バンク289と複数ポート群のポート290との間でデータを送るクロスバースイッチの考え得る実施形態を得る。
【0032】
図2Hは、最大16ポート用のポートバインディング制御レジスタ295と、最大16ポート用の複製コマンドチェックレジスタ296の実施形態を示す。簡単明瞭にするために、この実施形態では、マッチング係数(4つのポートにポート0、2つのポートにポート0または2、または単一ポートに任意のポートなど)のあるバイナリ倍数(ポート1、2または4など)の連続したポートでバインディングが生じると仮定している。ポートは、レジスタ設定に基づいてバインディング群での自らのメンバーシップを決めてもよい。16ポートのバインディング制御レジスタ295を図示する。バインディングは、ビットがセットされていなければ、すべてのポートが独立に動作するなど、階層パターンとして説明され、これを提供する。2ポートデバイスの場合、単にビット0が用いられるのに対し、4ポートデバイスでは、残りの2つのポートバインディングを4つのポートに加え、すべてのポートを束ねることで、ビット0〜4で考え得るバインディングを記述する。8ポートデバイスでは、残りの2つのポートがビット8〜11にバインディング、4つのポートがビット13および14にバインディング、すべてのポートがビット15にバインディングする。このパターンを無限に続けることが可能である。
【0033】
さらに、ポートはバインディング群に属していなくてもよく、この場合独自に動作できる。ポートは、バインディング群の一部でなくて個々に動作してもよいし、2つ以上のバインディング群の一部であってもよい。このような衝突を解決するためのひとつの技術に、指定された最大のバインディング群を選択することがある。このレジスタ295を用いてポートをバインディング群に加えたら、バインディング群の中で次のコマンドを使用し、新たなポートの準備ができるまで、どのコマンドも発行してはならない。ポートをバインディング群から除いたら、これをデセーブルにするか、それ自体を直後に使用すればよい。
【0034】
さらに、1ポートあたり1ビットをレジスタに割り当てて、ここでは複製コマンドチェックレジスタ296として図示する複製コマンドチェックをイネーブルにする。ポートが群に束ねられている場合、これはその連続したポートでコマンド値をチェックする。群に束ねられていない場合は、連続したサイクルに複製が見られる。
【0035】
図2Iは、バインディングデマルチプレクサ295の実施形態を示す。一実施形態では、個々のポート290によって、それぞれのバインディング指示を前提にポート待機レーン295(port_rdyレーンなど)が生成される。たとえば、4つのポート290が束ねられる場合、すべてのポート待機レーン295がアサートされる。しかしながら、ポート290のうちのポート2および3だけが2つのポート群に束ねられている場合、ポート待機レーン295のport_rdy[3:2]がアサートされる。同様に、ポート1が単独で動作している場合、port_rdy[1]だけがアサートされる。この技術を使用して、転送サイズと、ポート290からメモリバンク289への正しいポート待機レーン295への経路指定ならびに、格納用のメモリ全体の作業を構築するラッチを判断する。
【0036】
図2Jは、バインディングデマルチプレクサの経路指定を示すテーブル296、297の実施形態を示す。たとえば、データが到着すると、デマルチプレクサが経路指定関数テーブル296に従ってポートデータを正しいレーンに経路指定する。次に、テーブル297に示すように、デマルチプレクサレジスタが、enable_fn(図2Iの298)の関数に従って、メモリ用に束ねられた正しいポートレーンにデータを捕捉する。すべてのデータがラッチされたら、wr_strobeを用いてenable_fn 298によってデータを格納するようコアに指令する。
【0037】
書き込みマスキング関数または選択したデータ格納の抑止は、パラレルデータ経路を用いて達成可能である。格納サイクルの最初に、enable_fnに従ってすべてのマスクを設定(すべてのレーンを抑止するなど)する。データが到着したら、関連のマスクを経路指定し、データと一緒に格納する。すべてのデータが到着していない(中断または短い転送など)場合、到着していないデータレーンには、関連のマスクをクリアする機会がないため、到着したデータだけを格納する。
【0038】
図2Kは、バインディングマルチプレクサ293の実施形態を示す。一実施形態では、ポート待機(port_rdyなど)295および読み出しコマンド(read_cmdなど)信号が、データがメモリから時間内に到着し(およびラッチされ)、出力ポート290を選択するような形で、メモリの読み出し待ち時間(RL)299だけ遅延する。このようなポートの選択は、単に遅延入力値を用いてなされる。読み出しコマンドからのport_rdyレーン295は、デマルチプレクサ294の解釈と同様にマルチプレクサ293によって解釈される。マルチプレクサは、図2Lのテーブル279に示す関数に基づいて、出力ポート290へのレーンマッピングを選択する。
【0039】
簡単明瞭にするために、各サイクルにメモリから1(64ビット)データワードを送達でき、単一ポートの場合をカバーするようデータ転送速度を落とす可能性のある格納または遅延があると仮定する。データをフェッチするのに出力サイクルよりも多くのサイクルを必要とする場合、連続したサイクル全体にわたってさらに大きなワードをメモリからロードし、短めのセグメントを選択する「プリフェッチバッファ」でコアを構築する。この場合、データラッチをプリフェッチバッファと組み合わせることが可能である。データをスロットル調整するために、コマンドインタープリタは読み出しコマンドをそれより短い量に分割し、出力速度に合う遅めのペースで中間コマンドを発行できる。
【0040】
図3は、フレーム同期用プロセスの実施形態を示す。始めに、システムリセット302用にメモリポートの電源を切る。ポートの電源を入れるには、/LPDがゼロに等しいときにリンクパワーダウン(/LPD)をハイ304に駆動し、ポートをデセーブルにする。しかしながら、/LPDが1のとき、SYNCと呼ばれる特定のコードまたはビットシーケンスについてフレームサーチが開始306される。SYNCが検出されると、プロセスは動作モード308に入る。このプロセスを、図4で説明するように複数のポート(用いる場合)について継続してもよい。
【0041】
ホストおよびメモリはシリアルにデータを交換するため、受信機が同期してフレーム内のビット位置の対応を判断する。正しい同期を判断するために、リンクは「フレーム検索」条件306で特定のビットシーケンスを検索する。たとえば、最初に、シリアルリンクが2つの同期ビットシーケンス:SYNCおよびSYNC2のうちの一方を送る。ホストとメモリの両方に使用され、Rx−PHYがこれらのフレーミングデータパケットを検出する。SYNCは、リセットまたはエラー後のリンクの立ち上げにおいて重要な役割を果たす。また、SYNCは、正常動作時に任意の未使用フレームでメモリTx−PHYによって送信される。ホストTx−PHYは、正常動作時に未使用フレームでSYNCまたはSYNC2のいずれかを送る。SYNCがメモリから検出されて認識されると、プロセスが正常動作モード308に進む。20ビットのデコーディングエラーによってフレーミングに失敗したことがわかると、たとえば、SYNCが再度検出されるまでメモリが「フレーム検索」条件306に戻る。いずれの状態でも、/LPDがゼロになると、ポートが「リンクダウン」状態に戻ってやり直しになることが示される。
【0042】
SYNC2は、「リンクダウン」状態が残っているか、フレーミングエラーかのいずれかが原因でのホストデータ受信時のエラーを示すために、メモリによって送られる。ホストは、メモリがフレーミングを再構築してSYNCの送信を開始するまで、SYNCを排他的に送信して応答する。ホストは、適切なエラー回復動作用のコマンド間にSYNC2を送信する。SYNCおよびSYNC2は、リンクフレーミングを構築して回収し、ホストはリンク構築を調整する。
【0043】
図4は、電源制御のためのプロセスの実施形態を示す。/LPD(リンクパワーダウン)を受信する。判断ブロック402で、ポートがオンであるか否かを判断する。/LPDの先頭にあるスラッシュは、/LPDがゼロに等しいとき、リンクがパワーダウンされる、つまり電源が入らないことを意味するなどの逆論理を表す。同様に、1に等しい/LPDは、パワーダウンされていないことを表し、つまり電源が入ることを意味する。/LPDが1に等しい(リンクの電源が入るなど)場合、処理ブロック404で訓練プロセスが実施され、特定のコードまたはビットシーケンス(SYNCなど)についてのフレームを探す。SYNC検索の訓練プロセスは、SYNCが検出されるまで継続され、その後プロセスは処理ブロック406で動作モードに入る。このプロセスについては、図3を参照してさらに説明する。判断ブロック408で、ポートエラーがあるか否かを判断する。ある場合、プロセスは判断ブロック402を続ける。ない場合、判断ブロック410でさらにポートが動作モードに入っているか否かを判断する。他のポートが加わっていない場合、プロセスは処理ブロック406で動作モードを継続する。しかしながら、追加のポートが検出されたら、プロセスは処理ブロック414で新たなポートの訓練を続ける。
【0044】
これらの追加の(複数の)ポートは、処理ブロック416で処理される。複数ポートの使用については、図9を参照しても説明する。判断ブロック418で、ポートエラーを判断する。判断ブロック430でポートによって生じた1つがパワーダウンしているなど(/LPD=0など)、ポートエラーが判断されると。イエスの場合、処理ブロック432ですべてのポートをデセーブルにし、判断ブロック434でプロセスは単一ポートモードで継続できる。判断ブロック434で、/LPDがゼロではない(/LPD=1など)場合、すべてのポートを処理ブロック436で訓練し、プロセスは処理ブロック416を続ける。判断ブロック430に戻り、/LPDがゼロではない(/LPD=1など)場合、処理ブロック428でプロセスはエラーポートの訓練を続けた後、さらに処理ブロック416を続ける。
【0045】
判断ブロック418に戻り、ポートエラーが見つからない場合、判断ブロック420でさらにポートが加わるか否かのもうひとつの判断がなされる。加わる場合、処理ブロック414でプロセスは新たなポートの訓練プロセス(新たなポート各々のSYNCを探すなど)を続ける。追加のポートがイネーブルになっていない場合、判断ブロック422でいずれかのポートが外れたか否かを判断する。外れていない場合、プロセスは処理ブロック416を続ける。外れている場合、処理ブロック424で外れたポートをデセーブルにする。この時点で、判断ブロック426において、単一ポートを利用して単一ポートモードに戻れるかどうかを判断する。イエスの場合、プロセスは処理ブロック406を単一ポートモードで継続する。ノーの場合、プロセスは処理ブロック416を複数ポートモードで継続する。
【0046】
(図2Aの)電源制御238が/LPDの伝搬を担うのに対し、ポート206〜212は図3および図4の自らの訓練と処理を担う。
【0047】
図5は、単一ポートを採用する複製チェックおよびコマンド解釈のためのプロセスの実施形態を示す。複数ポートを採用する、これよりも複雑なプロセスについては、図9に示す。図5にさらに示すように、データの受信、読み出し、デコードが、処理ブロック502において第1のフレームから開始してポート(第1のポートまたはマスターポートなど)で実施される。判断ブロック504で、ポートエラーが検出されたか否かを判断する。エラーが検出されたら、エラーを返すとともにブロック528でプロセスは終了する。ポートエラーが検出されなかったら、判断ブロック506で、複製がオンであるか否かを判断する。必要または要望に応じて複製をオンまたはオフにできると考えられる。複製がオンの場合、プロセスは、データの受信、読み出し、デコードを継続し、今度は処理ブロック508にて第2のフレームを用いてポートで実施される。繰り返すが、判断ブロック510で、ポートエラーが検出されるか否かを判断する。検出される場合、ブロック528でプロセスはエラーを返して終了する。
【0048】
ポートエラーが検出されない(なおかつ判断ブロック506に戻って複製がオンではない)場合、プロセスはフレームがコマンドであるかデータであるかの判断に移動する。フレームがコマンドの場合、判断ブロック516で、コマンドが有効であるか否かを判断する。コマンドが有効でない場合、プロセスはエラーを返すとともにブロック528で終了する。コマンドが有効であれば、判断ブロック518で、コマンドが順序どおりすなわち正しい位置にあるか否かを判断する。コマンドが順序どおりでない場合、プロセスはエラーを返すとともにブロック528で終了する。コマンドが順序どおりであれば、処理ブロック520でこのコマンドを処理し、ブロック530で正常復帰を発行する。
【0049】
判断ブロック514に戻ると、フレームがデータである場合、判断ブロック522で書き込み動作用にメモリが準備されているか否かを判断する。準備されていない場合、正常復帰。されている場合、処理ブロック524でデータをメモリに書き込み、プロセスは正常復帰とともにブロック530で終了する。この実施形態では、ブロック516、518、520のプロセスを図2Aのコマンドインタープリタ248で実施するが、残りのプロセスについては図2Aのポート206〜212で実施する。
【0050】
図6は、ポート内のさまざまな機能を実施するためのプロセスの実施形態を示す。ブロック602において、データストリームを受信、読み出し、デコードするプロセスが提供される。たとえば、ここに図示するように、Rxによってポートでシングルデータストリーム(ビットで)を受信し、パラレルストリームに形成した後、デコード(17B/20Bデコーディングを使用するなど)する。リンクパワーダウン(/LPD)信号を使用して、図2Aに示すような単一ホストバウンドポートメモリのすべてのポートに出入りする電力(図2Aの点線が/LPDの電源制御を示すなど)など、すべてのポートへの電源を(電源制御機構によって)制御する。判断ブロック604で、/LPDがゼロに等しいか否かを判断する。ゼロである場合、ブロック614でエラーを返してプロセスを終了する。しかしながら、/LPDがゼロに等しくない場合、プロセスは処理ブロック606で継続する。
【0051】
処理ブロック606で、ビットごとのデータストリームを読み出し、フレームのパラレルストリーム(20ビット、デシリアライズなど)を生成するポートを含むデータフレームを読み出す。このフレームをデコード(17B/20Bデコーディング技術を使用するなど)した後、処理ブロック608で有効性データを生成する。判断ブロック610では、フレームの有効性をチェックする。たとえば、フレームが正しく17ビット値にデコードされた20ビットのコードを有するか否かを判断する。曖昧さがゆえに何の結果も生成しないなど、この変換に失敗すると、有効性が欠如してブロック614でエラーが返される。しかしながら、変換に成功し、結果が生成されると、そのデータフレームは有効であるとみなされ、図9にさらに示すようにブロック612で正常が返される。
【0052】
図7Aは、17ビットのデコード後フレームフォーマット700の実施形態を示す。17ビットのデコード化フレーム700の図示の実施形態を使用して、17ビットのデータ、コマンドおよび/またはステータスを送信したり、遷移エンコードしたりして、シリアル伝送用の20ビットのフレームを生成することができる。データ、コマンド、ステータスは、20ビットのフレームで送受信される。受信時、逆プロセスが実施され、20ビットの遷移コード化フレームがデコードされ、データ、コマンド、ステータスを保持する17ビットのフレーム700が生成される。
【0053】
図示の17ビットのデコード後フレーム(フォーマット)700では、最初の16ビットをペイロード702にあて、最後の1ビット(17番目のビットなど)をペイロードインジケーター704にあてている。メモリアクセスフォーマットは、基本的なデコード化フォーマットの上に形成される。たとえば、ビット16 704は、データ、コマンドまたはステータスについて、ペイロードが1にセットされたかゼロにセットされたかを示す。コマンドおよび書き込みデータは、受信機リンクをフレームごとに共有できる。待ち時間を減らすために、コマンドを書き込みデータストリームに挿入または先取りし、書き込みコマンドの完成を遅らせてもよい。
【0054】
図7Bは、コマンド、ステータス、データエンコード用フレームフォーマット720の実施形態を示す。図示の実施形態は、シリアルポートDRAM(SPDRAM)コマンド、ステータス、データエンコード用フレーム720の実施形態を含むが、これに限定されるものではない。図示の17ビットのエンコード用フレーム720は、将来、技術が変化したり要求があったりしたときなどに、多数のビットを逆にして追加のコマンドを加えるための柔軟性を提供するものであり、拡張可能である。たとえば、フラグ722およびサブコマンド724がフレーム720の最初の7ビット(ビット0〜7)を占め、サブコマンド724のほとんどのエントリが1であるため、フラグ領域722を含めてこの領域は、将来、追加のコマンド(最大16コマンドなど)を加えて、フレーム720を広げるのに使用可能である。
【0055】
同様に、同じく追加のコマンド(単に3つのコマンドを有するモードレジスタ群726のサブコマンド領域など)用に使用可能なモードレジスタ群726などの限られた範囲で、他のセクションがある。もうひとつのそのような領域に、同じく他のコマンドを追加するのに使用できるDRAMコマンド群728(すべてが1のDRAMコマンド群728のサブコマンド領域など)がある。
【0056】
SYNC 730がリンクフレーム同期を制御して管理するのに対し、SYNC2 732は特定のリンク動作状態を示す。SYNC 730および732については、ともに図3および図4を参照して説明する。データフレーム734は、1に設定された17ビットと、これに続く8ビットずつ2つのバイトとを有する、図7Aに示すデータフレーム700に類似した17ビットのフレームを含む。起動バンク(ABNK)736および起動(ACT)738を、図7Cで説明する。書き込みコマンド(WR)740は、指定のバンクと列に対してメモリ書き込みサイクルを開始する。書き込みマスク(WMSK)742は、進行中の書き込みコマンド用に8バイトのマスクを設定し、WRコマンド740に任意の作用を持たせる。WMSK 742については、図7Dを参照してさらに説明する。
【0057】
読み出し(RD)744は、メモリ読み出しサイクルを開始するための読み出しコマンドを示し、一方バーストストップ(BSTP)746は、指定のバンクに応じてポートの現在の読み出しまたは書き込みコマンドを中断させるためのコマンドを示す。プリチャージ(PCG)748は、コマンドで指定されたバンクをプリチャージするコマンドを示し、一方プリチャージオール(PCA)750は、すべてのバンクを同時にプリチャージするコマンドを示す。バンクごとのリフレッシュ(REFB)752では、指定のバンクが自動的にリフレッシュされるのに対し、全バンクリフレッシュ(REFA)754では、内部カウンタに従ってすべてのバンクがリフレッシュされる。REFAコマンドの発行前にすべてのバンクがプリチャージ状態になる。
【0058】
モードレジスタ書き込み(MRW)758は、モードレジスタへの書き込みを実施するためのコマンドを示す。モードレジスタ書き込みデータ(MRD)760は、MRDコマンド760の形でポート0からすぐ次のフレームにおいてMRWコマンド758の後に書き込みデータを提供する。モードレジスタ読み出し(MRR)756は、モードレジスタからの読み出しを実施するためのコマンドを示す。セルフリフレッシュパワーダウン(SRPD)762は、メモリコアをすみやかに自己リフレッシュ状態にする。パワーダウン終了(PDX)764は、セルフリフレッシュパワーダウンを終了するために発行され、リンク確立後にメモリコアを起こすのに用いられるコマンドを示す。
【0059】
図7Cは、ABNKおよびACTコマンド736、738の実施形態を示す。2つ以上のコマンドを同時に送信するために、これらのコマンドは互いの機能を支持するか、機能的に直交しているかのいずれかである。メモリ意味論または実装判断によって、直交性に障害が生じることがあるため、第3の基準として複雑さがあげられる。たとえば、シリアルポートDRAMが、バンクを起動するコマンドを有するものである、起動対象となる行アドレスが1フレームには長すぎる、などである。単一ポートの場合、このコマンドは2つ以上のフレームを必要とすることもあるが、バウンドポートでは、2つ以上のポートで1つのフレーム時間にて通信可能である。
【0060】
たとえば、ABNK736は、以後の起動(ACT)コマンド738で使用される標的バンク752と行アドレスの上位5ビット754を設定する。起動コマンド738は、最後のABNKコマンド736で指定されたバンク752に送られる。2つ以上のポートが束ねられている場合、どのABNK736コマンドもポート2に出現できる。行アドレスの下位15ビット764は、ACTコマンド738の最下位15ビットで指定され、最上位の5ビットは、ポート2に出現する最後のABNKコマンド736またはABNK770の下位5ビットで指定される。この例は、各コマンド736、738が、いつでも以後のフレームで自然に立てることを指摘するものである。これによって、さまざまなポート群サイズ、ポート群サイズとは関係ない共通コントローラ、ポートバインディング間の一貫した意味論が可能になる。また、コマンド738、770は互いに補い、同時に実行可能である。
【0061】
図7Dは、WMSKおよびWRコマンド742、740の実施形態を示す。図7Dは、選択的書き込み用のWRコマンド742および関連のバイト/書き込みマスク742を示している。WMSK742は、進行中のWRコマンド740に8バイトのマスク772を設定するコマンドを表し、WRコマンド740に任意の作用を持たせる。8バイトのデータを通信した後、次の8バイトに対してマスク772が開始される。マスク772の文字「H」は、ワード転送のハイバイト(ビット15〜8など)を示し、「L」はローバイト(ビット7〜0など)を示す。
【0062】
WRコマンド740は、指定のバンク774および列776に対するメモリ書き込みサイクルを開始する。WRコマンド740が送られると、書き込みデータが続く。2つ以上のポートが束ねられている場合、任意のWMSKコマンド780が、最初の8バイトをカバーまたはマスク778しているポート2に送られる。マスク778は、以後のWMSKコマンドによってリセットされるまで8バイトごとに繰り返される。2以上のポートバインディングの他の例として、メモリおよびインタフェース意味論に応じて、読み出しと書き込みを同時にする組み合わせあるいは、起動と書き込みを同時にする組み合わせがあげられる。
【0063】
図8A、図8B、図8Cは、書き込みマスクモデル800、850、875の実施形態を示す。シリアル通信を用いるメモリの場合、不可分転送用のビット数を減らして、待ち時間を短くする。不可分転送は、「書き込み」および標的アドレスなどのコマンドを完成させるのに必要な即値オペランドデータを含む、一全体データ量(バイトなど)または実行可能なコマンドを記述するビット単位のフレームまたはワード長として定義される。
【0064】
ほとんどのメモリでは、書き込み動作は、WRコマンド、アドレス、演算子(この場合はマスク)、書き込みデータを同時に含む。さらに高速のメモリデバイスの場合、コマンドを記述するのに必要な速度が禁止的であるため、バースト転送を使用する。バースト転送は、コマンドおよび初期データを用いて開始されるが、以後のアドレスを計算してデータストリームで継続される(インクリメントなど)。データ転送には常に、信号を示す追加の書き込みマスクを伴う。
【0065】
シリアル通信では、コマンド、アドレス、書き込みマスク、データをすべて一度にコーディングするのは、非効率的になり得る。なぜなら、コマンドとアドレスは以後のデータ転送に必要ないこともあるからである。この点で、データは、バースト転送を用いてデータを委ねるWRコマンドおよびアドレスに追従する。待ち時間を短縮するために、書き込みマスクまたはWMSKコマンド(1バイトあたり1ビットなど)は、書き込みバースト内の場所への値がいつ格納されるかに応じて、データを伴う必要があるだけである。このような最適化はシリアルインタフェース効率にとって決定的なものとなり得るが、このスキームを用いてパラレルメモリインタフェースでの帯域幅の要件を減らすことが可能である。シリアルインタフェースは、マルチホストメモリの実用性を改善するため、各ホストは、書き込みマスクをコマンドストリーム内におくことで、書き込みマスクを独立した転送に独立して使う機能を有する。データを伴うWMSKを含むことが待ち時間に頼る依存性を低減するために、バースト内の3種類の使用モデルを仮定し、ここに図示する。
【0066】
図8Aは、事前のメモリ内容802、コマンドストリーム804、事後のメモリ内容806を含む繰り返しパターンWMSKモデル800の実施形態を示す。同図において、赤、緑、青のデータからなる矩形内の赤の値だけを変化させ、他の2色をマスクして、このWMSKを矩形内のすべてのRGB(赤、緑、青)データで繰り返すなど、WMSKは転送ごとに繰り返される。図8Bは、事前のメモリ内容852、コマンドストリーム854、事後のメモリ内容856を含む最初と最後のWMSKモデル850の実施形態を示す。ここで、書き込みマスクは、転送の最初の部分だけに用いられる。たとえば、ネットワークパケットを奇数の転送境界(4バイト転送であれば第2バイト)で開始して、アクセス(整列)をパケット残りのデータ構造に合わせて最適化してもよい。最初のマスクが排出されたら、残りのパケットデータ全体をメモリに書き込む。転送を完了するために、新たなWMSKを挿入して最後の2バイトをトリムする。図8Cは、事前のメモリ内容876、コマンドストリーム878、事後のメモリ内容880を含むパターンWMSKモデル875を繰り返すために複数のシリアルインタフェースを用いる実施形態を示す。ここで、WMSKは、転送サイズ内で1つのデータ構造を選択するシングル転送に用いられる。たとえば、32ビットの整数のうち第2のバイトだけの書き込み。
【0067】
モデル800、850に関して、書き込みマスクを再利用するか、まれに使用する。たとえば、キャッシュ書き込みおよび大容量記憶転送などのいくつかのタイプの転送では、マスキングを必要としない。これらの場合、データのある書き込みマスクはほとんどの時間は使われないため、これを含むと非効率的である。単位転送と同じかそれ未満と小さい転送では、バースト転送の利益が得られないため、データ、コマンド、アドレス、書き込みマスクがいずれも指定される。このような短い転送は通常、バースト向けのメモリをこのタイプの頻繁な動作から救済する、キャッシュメモリに対して内部で発生する。
【0068】
モデル800、850での仮定に焦点を当てると、書き込みマスクはデータとともに含まれるが、バースト転送の利点が得られるのであれば、書き込みマスクをコマンドと束ねるのは不十分である。この点で、コマンドおよびデータから書き込みマスク転送を新たなコマンドとしてデカップリングすることを実現する。不可分転送(フレーム)からなる単一シリアルストリームでは、書き込みコマンドがそのアドレスとともに1フレームで発行され、データはフレームのシーケンスで計算されたメモリアドレスに流れ、書き込みマスクは個々のコマンドとして記述されて単位バーストに適用され、必要に応じて書き込みコマンドの後でデータ内に発行される。単位バーストは、単一書き込みマスクビットが適用されるビット数に、書き込みマスクコマンド内の書き込みマスクビットを掛けたものとして定義される。書き込みコマンドが発行されると、すべての以後のデータが書き込まれるなど、書き込みマスクがクリアされる。書き込みマスクコマンドが書き込みコマンドにすぐ続く場合、最初の単位バーストでの開始に該当する。
【0069】
モデル800に記述された繰り返しパターンを用いる場合、マスクがすべての単位バーストで繰り返される。転送内でパターンを変更する場合、別の書き込みマスクコマンドが発行され、以後のすべてのデータに新たな書き込みマスクが適用される。モデル850に記述された最初のパターンを用いる場合、第1の単位バースト後に書き込みマスクがクリアされる。追加のマスキングが必要な場合(最後の単位バーストなど)、次の単位バーストだけに適用される追加の書き込みマスクコマンドが発行され、その時点で書き込みマスクがクリアされる。
【0070】
モデル875では、マスクは繰り返されるが、WMSKコマンドが(異なるポートで)WRコマンドと同時に生じるモデル800のマルチポートバージョンを使用する。複数のシリアルインタフェースを用いる場合、さらに柔軟性の高いコマンドレイアウトを生成できる。2つのポートを一緒に使用する場合、たとえば、書き込みコマンドをひとつのポートで別のポートの第1の書き込みマスクと組み合わせ、帯域幅の利用率を改善することが可能である。
【0071】
図9は、複数ポートを採用する複製チェックおよびコマンド解釈用のプロセスの実施形態を示す。プロセスポートはブロック902で開始され、処理ブロック904に複数ポートの第1のポートがある。データを有するデータストリームが、処理ブロック906で対応するRxによって第1のポートで受信される(続いてデコードされる)。処理ブロック906の「ポートm+i」という表現を参照すると、「m」はバインディング群を示し、「i」はバインディング群における数を示す。この実施形態では、iはゼロから開始するのに対し、単一ホストが採用されるため、mはゼロに等しい。判断ブロック908では、第1のポート(ポート0)にエラーがないかどうかチェックする。エラーが見つかると、プロセスはエラーを返すとともにブロック942で終了する。エラーが見つからなければ、プロセスは処理ブロック910ですべてのポートをチェックするまで次のポートのチェックを継続する。たとえば、判断ブロック912では、さらにポートが残っているか否かを判断する。残っている場合、プロセスは次のポートで処理ブロック906を継続する。残っていなければ、プロセスは処理ブロック914を継続する。
【0072】
判断ブロック916では、複製がオンであるか否かを判断する。オンである場合、判断ブロック918で、現在のポートを判断し、結果に応じて、プロセスはエラーを返すとともにブロック942で終了するか、(複製がオンでなければ判断ブロック916に戻って)判断ブロック920を継続してポートがデータを有する否かを判断する。データが複製されていなければ、比較されることもない。データがあれば、判断ブロック936で書き込み動作が実施される。書き込みが進行中ではない場合、プロセスはエラーを返すとともにブロック942で終了する。書き込み動作実行中であれば、処理ブロック938ですべてのポートからデータがメモリに書き込まれ、ブロック940で正常復帰がなされる。
【0073】
判断ブロック920に戻ると、ポートがデータを持たない場合、判断ブロック922でコマンド有効化がなされる。判断ブロック922では、たとえば、コマンドの一覧をチェックすることで、ポートコマンドが有効であるか否かを判断する。コマンドが有効ではない場合、プロセスはブロック942で終了する。コマンドが有効であるとわかると、判断ブロック924で、コマンドが順序どおりであるか否かを判断する(コマンドが正しい位置かどうかなど)。コマンドが順序どおりでない場合、ブロック942でエラーが返される。コマンドが順序どおりであるとわかると、コマンドは処理ブロック926で処理される。
【0074】
判断ブロック928では、次のポートをチェックして、次のポート対でデータの複製があるか否かを調べる。データの複製は通常、一対のポートを必要とするため、処理ブロック930では次の2つのポートをチェックするようポートの数は2ずつ増える。判断ブロック928に戻ると、答えがイエスの場合、処理ブロック934で次の(単一)ポートが選択される。続いて、プロセスは判断ブロック932に進み、さらに他のポートが処理対象となっているか否かを判断する。なっている場合、プロセスは判断ブロック916で継続する。なっていなければ、ブロック940で正常復帰が発行される。
【0075】
一実施形態では、ポートでデータを受信し、コマンドをポートで受信する。コマンドは、ここではブロック922、924、926で表す(図2Aに示すような)コマンドインタープリタ248で処理され、一方で、ここではブロック916、918、920で表す(図2Aに示すような)2つの三角形254で示す場所で複製チェックがなされる。
【0076】
図10は、実施形態コマンド複製モデル1002、1004、1006を示す。一実施形態では、拡張エラー検出にコマンド複製を使用する。コマンドを2回送信し元のコマンドを複製コマンドと比較する。1つまたは2つのポートを使用する1002、1004場合、元のコマンド1008、1012の直後に複製コマンド1010、1014がフレームに出現する。4つ以上のポートを使用する場合1006、複製コマンド1016、1018が他のポートに出現する。
【0077】
(1)バウンドポート状況では、複製を用いて未使用の帯域幅を埋めることができる;(2)コマンドの誤解釈によって、コマンドシーケンス決定違反(すでに起動されたバンクの起動または未起動バンク内での起動など)あるいは現在の転送とは関係ないメモリ場所の破損などの予想外の結果が生じることがある;かたや、コマンドが正しければ、間違ったデータは少なくとも現在の転送が制限される;(3)繰り返しのデータによって優位な結果が得られるが、コマンドに利用できるフリースペースがデータストリームには利用できないため、有効システム帯域幅が半分になるといった理由から、コマンドが特に選択される。
【0078】
コマンド複製モデル1002、1004、1006は、単一ポート1002およびバウンドポート1004、1006と複製との組み合わせを示す。また、複製と複数コマンドがどのようにして一緒に働くのかについても示す。たとえば、最大2つの異なるコマンドが1フレーム時間で転送される。
【0079】
単一ポートモデル1002では、コマンドが単独で発行され、コマンド1008の後にその複製1010が続く。2ポートモデル1004の場合、複製コマンド1014が同一のフレーム時間で送られる。しかしながら、複製がオフになると、2つのコマンドでフレーム時間を埋めることができる。4つ以上のポートモデル1006では、2つ(またはそれより多く)のコマンド1020、1022で1つのフレーム時間を埋めることができ、2つのコマンド1020、1022がともに同一のフレーム時間内で複製コマンド1016、1018に複製可能である。同時送信されるコマンド数にも、群内のポート数の粒度にも必要な制約はない。
【0080】
使用モデル1002、1004、1006次第では、日和見的なコマンドの実行が許容可能なことがある。これは、場合によっては待ち時間を節約するが、エラーの可能性と、エラーに対処するためのコストが生じる可能性の点で不利になる。複製がすべて1フレーム時間内に得られるのであれば、エラーの結果をすぐに利用できる。
【0081】
上記では、説明の目的で、本発明を十分に理解できるよう多数の具体的な詳細について記載した。しかしながら、これらの具体的な詳細のいくつかを除いて本発明を実施してもよいことは、当業者であれば自明であろう。他の例では、周知の構造およびデバイスがブロック図の形態で示される。図示のコンポーネント間に中間構造が存在することもある。本明細書で説明または図示したコンポーネントは、図示または説明されない追加の入力または出力を持つものであってもよい。
【0082】
本発明のさまざまな実施形態が、さまざまなプロセスを含み得る。これらのプロセスは、ハードウェアコンポーネントで実施してもよいし、コンピュータプログラムまたは機械実行可能な指示の中で実現してもよく、これを用いて、プロセスを実施するための指示で汎用または専用のプロセッサまたは論理回路をプログラムしてもよい。あるいは、ハードウェアとソフトウェアの組み合わせでプロセスを実施してもよい。
【0083】
マルチホスト増強機構の実施形態内またはこれと関連するものに図示したものなど、本明細書全体をとおして説明した1つ以上のモジュール、コンポーネントまたは要素は、ハードウェア、ソフトウェアおよび/またはこれらの組み合わせを含むものであってもよい。モジュールがソフトウェアを含む場合、機械/電子デバイス/ハードウェアによって製品を介してソフトウェアデータ、指示および/または構成を提供してもよい。製品は、指示、データなどを提供するためのコンテンツを有する、機械アクセス可能/読み出し可能な媒体を含むものであってもよい。このコンテンツは、電子デバイス、たとえば、ここに記載のさまざまな動作または実行をする本明細書に記載したようなファイラ、ディスクまたはディスクコントローラにつながるものであってもよい。
【0084】
本発明のさまざまな実施形態の一部分を、コンピュータプログラム指示が格納されたコンピュータ読み出し可能な媒体を含み得るコンピュータプログラム製品として提供してもよく、これを用いてコンピュータ(または他の電子デバイス)をプログラムし、本発明の実施形態によるプロセスを実行させてもよい。機械読み出し可能な媒体としては、フロッピー(登録商標)ディスク、光ディスク、CDROM、光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気または光カード、フラッシュメモリあるいは、電子指示を格納するのに適した他のタイプの媒体/機械読み出し可能な媒体があげられるが、これに限定されるものではない。さらに、本発明は、コンピュータプログラム製品としてダウンロードされるものであってもよく、このプログラムはリモートコンピュータから要求側コンピュータに転送されてもよい。
【0085】
方法の多くをその最も基本的な形態で記載してあるが、本発明の基本的な範囲から逸脱することなく、この方法に対してプロセスを追加または削除しても構わないし、ここに記載のメッセージのいずれかに対して情報を加えたり引いたりしてもよい。さらに多くの改変および適応化をなし得ることは、当業者であれば自明であろう。特定の実施形態は本発明を限定するための提供されるものではなく、これを例示するためのものである。本発明の実施形態の範囲は、上記にて取り上げた具体例によってではなく、以下の特許請求の範囲によってのみ判断される。
【0086】
要素「A」が要素「B」と連結される、またはこれに連結されると言う場合、要素Aを要素Bと直接連結してもよいし、たとえば、要素Cを介して間接的に連結してもよい。明細書または特許請求の範囲で、コンポーネント、特徴、構造、プロセスまたは特性Aが、コンポーネント、特徴、構造、プロセスまたは特性Bを「引き起こす」と表現する場合、これは「A」が「B」の少なくとも一因ではあるが、「B」を引き起こす一助となる少なくとも1つの他のコンポーネント、特徴、構造、プロセスまたは特性があり得ることを意味する。明細書に、コンポーネント、特徴、構造、プロセスまたは特性が含まれ「てもよい」、「るかもしれない」または「得る」とする場合、この特定のコンポーネント、特徴、構造、プロセスまたは特性は、必ずしも含まれているとはかぎらない。明細書または特許請求の範囲で「一(a)」または「一(an)」要素という場合、これは表記の要素が1つしかないことを意味するわけではない。
【0087】
実施形態は、本発明の実施または一例である。明細書での「実施形態」「一実施形態」「いくつかの実施形態」または「他の実施形態」という言い回しは、実施形態に関して説明した特定の特徴、構造または特性が、少なくともいくつかの実施形態には含まれるが、かならずしもすべての実施形態に含まれるとはかぎらないことを意味する。「実施形態」、「一実施形態」または「いくつかの実施形態」としてさまざまな形で出てくるが、すべてが同一の実施形態を示しているとはかぎらない。本発明の例示としての実施形態に関する上記の説明では、開示を簡略化し、さまざまな発明性のある態様の1つ以上を理解する上での一助とするために、いくつかの特徴を一緒にして単一の実施形態、図または説明にまとめた部分もある点は理解されたい。しかしながら、この開示方法は、特許請求の範囲に記載の発明が各請求項に明示的に記載した以上の特徴を必要とするという意図を反映したものとしてはみなされない。そうではなく、以下の請求項に反映されるように、発明性のある態様が上記にて開示した単一の実施形態のいくつかに含まれる。よって、これらの請求項を本説明に明示的に援用し、各項をそのままで本発明の別個の実施形態として有効とする。

【特許請求の範囲】
【請求項1】
ホストコンピュータシステムとメモリとの間で、前記メモリにて複数の時間間隔にわたって、ポートまたはポート群を介してデータを通信することを含み、前記ホストコンピュータが前記メモリに連結され、前記ポートが前記ポート群のメンバーであり、
前記ホストコンピュータシステムと前記メモリとの間で、単一の時間間隔にわたって、前記ポートまたは前記ポート群を介して前記データと関連したコマンドを通信することを含む、メモリ待ち時間を短縮するための方法。
【請求項2】
前記ポート群内での前記ポートのメンバーシップが、メモリ動作時のどの時点でも変更可能である、請求項1に記載の方法。
【請求項3】
前記コマンドに占められていない前記ポート群の残りのポートを介して以後のコマンドを前記コマンドに通信することをさらに含む、請求項1に記載の方法。
【請求項4】
前記以後のコマンドが前記単一の時間間隔で前記コマンドとして通信される、請求項3に記載の方法。
【請求項5】
前記ポート群の前記残りのポートを介して複製コマンドを前記コマンドに通信することをさらに含む、請求項1に記載の方法。
【請求項6】
マスキングスキームを採用して、マスク情報を含めずに、書き込みデータと同一の通信フレーム内への前記データの書き込みを抑止し、多数の通信ビットおよび前記メモリ待ち時間をさらに減らすことをさらに含む、請求項1に記載の方法。
【請求項7】
前記マスキングスキームがデータストリーム内で変更可能である、請求項6に記載の方法。
【請求項8】
前記マスキングスキームを改変し、マスク情報を含めずに、前記書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項7に記載の方法。
【請求項9】
前記マスキングスキームが以後の単位転送にわたって自動的に繰り返す、請求項7に記載の方法。
【請求項10】
単一の単位転送後に前記マスキングスキームが終了する、請求項7に記載の方法。
【請求項11】
書き込みデータストリーム内にコマンドを挿入できる、請求項1に記載の方法。
【請求項12】
ステータス情報を読取データストリーム内に挿入できる、請求項1に記載の方法。
【請求項13】
メモリと連結されたホストコンピュータシステムであって、前記メモリは、複数の時間間隔にわたって、前記メモリのポートまたはポート群を介して前記ホストコンピュータシステムからデータを受信するためのものであり、前記ポートは前記ポート群のメンバーであり、
前記メモリは、単一の時間間隔にわたって、前記ホストコンピュータシステムから前記ポートまたは前記ポート群を介して前記データと関連したコマンドを受信するようさらに改変されている、メモリ待ち時間を短縮するための装置。
【請求項14】
前記ポート群内の前記ポートの前記メンバーシップが、メモリ動作時のどの特定の時点でも変更可能である、請求項13に記載の装置。
【請求項15】
前記メモリが、前記コマンドに占められていない前記ポート群の残りのポートを介して、前記コマンドに対する以後のコマンドを受信するようさらに改変される、請求項14に記載の装置。
【請求項16】
前記以後のコマンドが前記単一の時間間隔で前記コマンドとして通信される、請求項15に記載の装置。
【請求項17】
前記ポート群の前記残りのポートを介して、前記コマンドに対する複製コマンドを受信するように前記メモリが改変される、請求項13に記載の装置。
【請求項18】
マスク情報を含めずに、前記書き込みデータと同一の通信フレーム内への前記データの書き込みを抑止するマスキングスキームを採用し、多数の通信ビットおよび前記メモリ待ち時間をさらに減らすように前記メモリがさらに改変される、請求項17に記載の装置。
【請求項19】
前記マスキングスキームがデータストリーム内で変更可能である、請求項18に記載の装置。
【請求項20】
前記マスキングスキームを改変し、マスク情報を含めずに、前記書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項19に記載の装置。
【請求項21】
前記マスキングスキームが以後の単位転送にわたって自動的に繰り返す、請求項20に記載の装置。
【請求項22】
単一の単位転送後に前記マスキングスキームが終了する、請求項20に記載の装置。
【請求項23】
書き込みデータストリーム内にコマンドを挿入できる、請求項13に記載の装置。
【請求項24】
ステータス情報を読取データストリーム内に挿入できる、請求項13に記載の装置。
【請求項25】
メモリに連結されたホストコンピュータシステムであって、前記メモリが、前記メモリ待ち時間を短縮するためにポートバインディングシステムを採用し、前記ポートバインディングシステムが、データおよびコマンドの通信用に複数のポートを有し、複数のポートのうちの2つ以上のポートが、1つ以上のポート群に組み合わせられ、前記ポートバインディングシステムが、
前記ホストコンピュータシステムと前記メモリとの間で、複数の時間間隔にわたって、前記メモリにおけるポートまたはポート群を介してデータを通信し、前記ポートが前記ポート群のメンバーであり、
前記ホストコンピュータシステムと前記メモリとの間で、単一の時間間隔にわたって、前記ポートまたは前記ポート群を介して前記データに関連したコマンドを通信するためのものである、メモリ待ち時間を短縮するためのシステム。
【請求項26】
前記ポート群内での前記ポートのメンバーシップが、メモリ動作時のどの特定の時点でも変更可能である、請求項25に記載のシステム。
【請求項27】
前記ポートバインディングシステムが、前記コマンドに占められていない前記ポート群の残りのポートを介して、以後のコマンドを前記コマンドに通信するよう改変される、請求項25に記載のシステム。
【請求項28】
前記以後のコマンドが前記単一の時間間隔で前記コマンドとして通信される、請求項25に記載のシステム。
【請求項29】
前記ポート群の前記残りのポートを介して、前記ポートバインディングシステムが、さらに複製コマンドを前記コマンドに通信するためのものである、請求項25に記載のシステム。
【請求項30】
前記ポートバインディングシステムが、マスク情報を含めずに、前記書き込みデータと同一の通信フレーム内への前記データの前記書き込みを抑止するためのマスキングスキームを採用し、多数の通信ビットおよび前記メモリ待ち時間をさらに減らすようにさらに改変される、請求項23に記載のシステム。
【請求項31】
前記マスキングスキームがデータストリーム内で変更可能である、請求項30に記載のシステム。
【請求項32】
前記マスキングスキームを改変し、マスク情報を含め、前記書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項31に記載のシステム。
【請求項33】
前記マスキングスキームをさらに改変し、マスク情報を含めずに、前記書き込みコマンドと同一の通信フレーム内へのデータの書き込みを抑制する、請求項32に記載のシステム。
【請求項34】
前記マスキングスキームが以後の単位転送にわたって自動的に繰り返す、請求項33に記載のシステム。
【請求項35】
単一の単位転送後に前記マスキングスキームが終了する、請求項33に記載のシステム。
【請求項36】
書き込みデータストリーム内にコマンドを挿入できる、請求項25に記載のシステム。
【請求項37】
ステータス情報を読取データストリーム内に挿入できる、請求項25に記載のシステム。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図2C】
image rotate

【図2D】
image rotate

【図2E】
image rotate

【図2F】
image rotate

【図2G】
image rotate

【図2H】
image rotate

【図2I】
image rotate

【図2J】
image rotate

【図2K】
image rotate

【図2L】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図7C】
image rotate

【図7D】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図8C】
image rotate

【図9】
image rotate

【図10】
image rotate


【公表番号】特表2012−507795(P2012−507795A)
【公表日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2011−534681(P2011−534681)
【出願日】平成21年10月27日(2009.10.27)
【国際出願番号】PCT/US2009/062231
【国際公開番号】WO2010/053756
【国際公開日】平成22年5月14日(2010.5.14)
【出願人】(504441048)シリコン イメージ,インコーポレイテッド (69)
【Fターム(参考)】