(57)【要約】  メモリ・システムにおける通信リンクのデータ帯域幅を改善するため、または負荷を低減するため、あるいはその両方のために、メモリ・デバイスに情報を格納する１つまたは複数のメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せを開示する。システムは、１つまたは複数のメモリ・デバイス、１つまたは複数のメモリ制御回路、および１つまたは複数のデータ・バッファ回路を含むことができる。一実施形態において、ホストは、データ・バッファ回路とのホストの通信リンクでデータを伝送するだけである。一態様において、メモリ制御回路は、制御信号をデータ・バッファ回路に送信しない。一態様において、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める、別々のステート・マシン・ドリブンのアドレス・ポインタまたはローカルなアドレス・シーケンサを保持する。別の態様において、再同期方法が開示される。
2021504842.tif 000002
【特許請求の範囲】
【請求項１】
コマンドがホストから受信されるのに応答してデータを格納するためのメモリ・システムであって、
前記ホストからコマンドを受信し、コマンドおよび制御信号を出力するためのメモリ制御回路と、
データを格納し、前記メモリ制御回路からコマンド信号を受信するように構成された少なくとも１つのメモリ・デバイスと、
前記少なくとも１つのメモリ・デバイスと関連付けられた少なくとも１つのデータ・バッファ回路と、
前記ホストと前記少なくとも１つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、
前記メモリ制御回路と前記少なくとも１つのデータ・バッファ回路との間の制御通信リンクと、
を備え、
前記メモリ制御回路が、
ストア・コマンドおよびストア・データ・タグを前記ホストから受信することに応答して、メモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
前記ホストのストア・データ・タグを前記メモリ制御回路のストア・データ・タグと関連付けること、ならびに
前記メモリ制御回路内のマッピング・テーブルに前記関連を格納すること
を行うように構成される、メモリ・システム。
【請求項２】
前記少なくとも１つのデータ・バッファ回路にデータを格納するための位置を指定するストア・データ・タグは、前記ホストと前記少なくとも１つのデータ・バッファ回路との間の前記データ通信リンクで、前記少なくとも１つのデータ・バッファ回路に送信されない、請求項１に記載のシステム。
【請求項３】
前記メモリ制御回路が、
前記ホストのストア・コマンドを受信することに応答して、前記ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、
前記制御通信リンクで、少なくとも１つのデータ・バッファ回路に前記ライト・ツー・バッファ・コマンドを送信するが、前記データ・バッファ回路に前記データを格納するための前記位置を指定するタグを前記データ・バッファ回路に送信しないことと
を行うようにさらに構成される、請求項２に記載のシステム。
【請求項４】
前記データ・バッファ回路が、前記データ・バッファ回路内のどこにストア動作のためのデータを書き込むかを追跡するための論理回路を含む、請求項３に記載のシステム。
【請求項５】
前記データ・バッファ回路が、
ライト・ツー・バッファ・コマンドを受信することに応答して、前記少なくとも１つのデータ・バッファ回路内の格納位置を指し示すデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
前記データ・バッファ回路のローカルなアドレス・シーケンサによって指し示されたデータ・バッファに、入って来たストア・データをプッシュすることと
を行うように構成される、請求項４に記載のシステム。
【請求項６】
前記メモリ制御回路が、前記メモリ制御回路のローカルなアドレス・シーケンサから受信された前記ローカルなストア・データ・タグと共に前記ストア・フロム・バッファ・コマンドを前記少なくとも１つのデータ・バッファ回路に、前記制御通信リンクで送信すること、および、前記少なくとも１つのメモリ・デバイスに前記ストア・コマンドを送信すること、を行うようにさらに構成される、請求項３に記載のシステム。
【請求項７】
前記少なくとも１つのデータ・バッファ回路が、前記制御通信リンクで前記メモリ制御回路から受信された前記ストア・データ・タグによって指し示された前記データ・バッファの位置からストア・データをプルすること、および前記少なくとも１つのメモリ・デバイスに前記ストア・データを送信すること、を前記少なくとも１つのデータ・バッファ回路に行わせるようにさらに構成される、請求項６に記載のシステム。
【請求項８】
前記メモリ制御回路が、論理回路を有し、ストア動作時にデータを書き込むための前記メモリ制御回路内の前記論理回路が、データを書き込むことになる前記少なくとも１つのデータ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記少なくとも１つのデータ・バッファ回路が、データを書き込むことになる前記少なくとも１つのデータ・バッファ回路の前記次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記メモリ制御回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタが、前記少なくとも１つのデータ・バッファ回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される、請求項１に記載のシステム。
【請求項９】
前記メモリ制御回路のローカルなアドレス・シーケンサと前記少なくとも１つのデータ・バッファ回路のローカルなアドレス・シーケンサが両方、同じ順序で同じタグを収める、請求項８に記載のメモリ・システム。
【請求項１０】
前記メモリ制御回路が、前記少なくとも１つのデータ・バッファ回路にライト・ツー・バッファ・データ・タグを送信しない、請求項８に記載のメモリ・システム。
【請求項１１】
前記データ通信リンクが、前記ホストと前記少なくとも１つのデータ・バッファ回路との間、および、前記少なくとも１つのデータ・バッファ回路と前記少なくとも１つのメモリ・デバイスとの間の通信リンクを含み、データおよびＣＲＣだけが、前記少なくとも１つのデータ・バッファ回路と前記ホストとの間の前記通信リンクで伝送される、請求項８に記載のメモリ・システム。
【請求項１２】
少なくとも１つのモジュールをさらに備え、前記モジュールが、前記モジュール上の単一チップ上に形成された前記メモリ制御回路を有し、前記モジュール上の別々のチップ上に形成されたデータ・バッファ回路のグループ、および、前記モジュール上のチップとして形成され、グループに編成された複数のメモリ・デバイスを有し、前記メモリ制御回路が、データを書き込むことになる前記データ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記データ・バッファ回路のそれぞれが、データを書き込むことになる前記データ・バッファ回路における前記次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記メモリ制御回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタが、前記データ・バッファ回路全ての前記ステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される、請求項１に記載のメモリ・システム。
【請求項１３】
メモリ・デバイスにデータを読み書きするためのメモリ・システムであって、
ホストからコマンドを受信し、コマンドおよび制御信号を出力するための少なくとも１つのメモリ制御回路であって、順番に並べられたローカルなストア・タグ位置を有するローカルなアドレス・シーケンサを有する、メモリ制御回路と、
データを読み込んで格納すること、および前記メモリ制御回路からコマンド信号を受信すること、を行うように構成された少なくとも１つのメモリ・デバイスと、
前記少なくとも１つのメモリ制御回路と関連付けられた少なくとも１つのデータ・バッファ回路であって、前記少なくとも１つのメモリ制御回路の前記ローカルなアドレス・シーケンサと同じ順番のローカルなストア・タグ位置を有するローカルなアドレス・シーケンサを有する、データ・バッファ回路と、
前記ホストと前記少なくとも１つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、
前記メモリ・システムの読み書き動作信号を伝送するための、前記少なくとも１つのメモリ制御回路と前記少なくとも１つのメモリ・デバイスと前記少なくとも１つのデータ・バッファ回路との間の制御通信リンクと
を備え、
前記少なくとも１つのメモリ制御回路が、
ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工すること、
ストア・コマンドを受信すると、前記少なくとも１つのメモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
前記少なくとも１つのデータ・バッファ回路に前記ライト・ツー・バッファ・コマンドを送信すること、
前記少なくとも１つのメモリ・デバイスに前記ストア・コマンドを送信すること、および
ストア・データ・タグと共に前記ストア・フロム・バッファ・コマンドを前記少なくとも１つのデータ・バッファ回路に送信すること、
を行うように構成され、
前記少なくとも１つのデータ・バッファ回路が、
前記ライト・ツー・バッファ・コマンドを受信すると、前記少なくとも１つのデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
前記少なくとも１つのデータ・バッファ回路の前記ローカルなアドレス・シーケンサによって取得された前記ローカルなストア・データ・タグによって指し示されたデータ・バッファに、入って来たストア・データを送信すること、
前記少なくとも１つのメモリ制御回路から受信されたストア・データ・タグによって指し示されたローカルなデータ・バッファからストア・データをプルすること、および
前記少なくとも１つのメモリ・デバイスにストア・データを送信すること、
を行うように構成される、メモリ・システム。
【請求項１４】
メモリ・デバイスにデータを格納するための方法であって、
ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
前記メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および前記関連付けられたタグをマッピング・テーブルに格納することと、
前記メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、
前記ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、
データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
前記データ・バッファ回路のローカルなアドレス・シーケンサから取得された前記ローカルなストア・データ・タグによって指し示された前記データ・バッファ回路内の位置に、入って来たデータをプッシュすることと
を含む、方法。
【請求項１５】
前記データ・バッファ回路が、前記ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュする、請求項１４に記載の方法。
【請求項１６】
前記メモリ制御回路および前記データ・バッファ回路は、それぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持する、請求項１４に記載の方法。
【請求項１７】
前記メモリ制御回路が、前記メモリ制御回路のローカルなアドレス・シーケンサから受信された前記タグを前記データ・バッファ回路に送信しないように構成される、請求項１４に記載の方法。
【請求項１８】
前記メモリ制御回路から前記メモリ・デバイスに前記ストア・コマンドを送信すること、および前記データ・バッファ回路のローカルなアドレス・シーケンサから取得された前記ローカルなストア・データ・タグによって指し示された前記位置から前記メモリ・デバイスにデータを送信すること、をさらに含む、請求項１４に記載の方法。
【請求項１９】
前記データ・バッファ回路のローカルなアドレス・シーケンサに前記ローカルなストア・データ・タグをプッシュして戻すことと、
前記メモリ制御回路のローカルなストア・データ・タグと関連付けられた前記メモリ制御回路のマッピング・テーブルからホストのストア・データ・タグを検索することと、
前記メモリ制御回路のローカルなアドレス・シーケンサに前記ローカルなストア・データ・タグをプッシュして戻すことと、
前記ホストのストア・データ・タグをホストにプッシュして戻すことと
というステップをさらに含む、請求項１８に記載の方法。
【請求項２０】
リモート・メモリ制御回路を有する分散メモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法であって、
複数のデータ・バッファ回路の各ローカルなアドレス・シーケンサから、次に使用されることになるストア・データ・タグをプルすることと、
各データ・バッファ回路の前記ローカルなアドレス・シーケンサから回復された前記ストア・データ・タグを比較することと、
前記データ・バッファ回路からのタグのいずれかが異なる場合、リカバリ・コマンドを発行することと
を含む、方法。
【請求項２１】
前記リカバリ・コマンドが、任意の新しい動作を送出するのを停止すること、全ての未完了動作をフラッシュすること、全てのフェッチ動作が完了するのを待つこと、およびこれらの組合せからなる群のうちの少なくとも１つを含むことができる、請求項２０に記載の方法。
【請求項２２】
メモリ制御回路と前記データ・バッファ回路の両方のローカルなアドレス・シーケンサをリセットすること
をさらに含む、請求項２０に記載の方法。
【請求項２３】
リモート・メモリ制御回路を有するメモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法であって、
前記メモリ制御回路のローカルなアドレス・シーケンサから発行されることになる次のタグをデータ・バッファ回路に送信することと、
前記データ・バッファ回路のローカルなアドレス・シーケンサから発行されることになる次のタグを、前記メモリ制御回路によって送信された次に使用されることになるタグと比較することと、
前記タグがマッチしない場合、リカバリ・コマンドを発行することと、
を含む、方法。
【請求項２４】
前記リカバリ・コマンドが、任意の新しい動作を送出するのを停止すること、全ての未完了動作をフラッシュすること、全てのフェッチ動作が完了するのを待つこと、およびこれらの組合せからなる群のうちの少なくとも１つを含むことができる、請求項２３に記載の方法。
【請求項２５】
メモリ制御回路と前記データ・バッファ回路の両方のローカルなアドレス・シーケンサをリセットすること
をさらに含む、請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ・システムに関し、より詳細には、分散バッファ・メモリ・システムに関する。
【背景技術】
【０００２】
情報技術の最近の進歩、および、情報を格納して処理するためのインターネットの幅広い使用に伴い、コンピューティング・システムによる情報の獲得、処理、格納、および伝播に、ますます需要がある。コンピューティング・システムは、ビジネス、個人的利用、およびエンターテイメントのための、ますます複雑化するアプリケーションをコンピュータが実行できるスピードを、向上させるように開発されつつある。全体的なコンピュータ・システムの性能は、プロセッサの性能／構造、任意のメモリ・キャッシュ、入出力（Ｉ／Ｏ）サブシステム、メモリ制御機能の効率性、メモリ・デバイスおよびシステムの性能、ならびに任意の関連付けられたメモリ・インターフェース要素、ならびにメモリ相互接続インターフェースのタイプおよび構造を含む、コンピュータ構造の主要な要素のそれぞれによって影響を受ける。
【０００３】
ますます複雑化するアプリケーションを実行するプロセッサのスピードを絶えず向上させることは、ソフトウェア・アプリケーションの動作中、データが何度も格納され、アクセスされ、更新されるメモリ・サブシステムを含む、コンピュータにおける他のサブシステムの全てに対して、より厳しく性能を要求する。メモリの読み書き動作によって消費される時間は、コンピュータ・システムの究極のスピードおよび効率性において主要な要因である。ほとんどのコンピュータのメモリ・サブシステムは、通常、メモリ・コントローラによって動作する。メモリ・コントローラのタスクは、コンピュータのメモリ・サブシステムとコンピュータの１つまたは複数のプロセッサとの間で、できるだけ素早くかつ効率的にデータを移動させることである。コンピュータのメモリ・サブシステムは、通常、いくつかのダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：dynamic random access memory）デバイスを含む、１つまたは複数のデュアル・インライン・メモリ・モジュール（ＤＩＭＭ：dual in-line memory module）といったメモリ・モジュールを備えることが多い。
【０００４】
多くのメモリ・サブシステムにおいて、メモリ・コントローラは、複数のメモリ・チャネルを制御することができ、ここで、各チャネルは、１つまたは複数のデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）を含むことができ、ここで、ＤＩＭＭは、１つまたは複数のランク（ｒａｎｋ）に配置されることが可能である。ますます多くの高密度メモリ・デバイスに、ますます速いアクセス・スピードでアクセスできることを、コンピューティング需要が要求する。
【０００５】
メモリ・システム／サブシステムの設計または構造あるいはその両方、およびメモリ・システム／サブシステムが動作する方法、を改善することによって全体的なシステム性能を最大化するという、改善された解決策または革新的な解決策あるいはその両方を作り出すために、大規模なリサーチおよび開発努力が業界によってつぎ込まれる。このような努力は、分散メモリ・システム、分散バッファ・メモリ・システム、レジスタードＤＩＭＭ（ＲＤＩＭＭ）、および負荷低減ＤＩＭＭ（ＬＲＤＩＭＭ：load reduced DIMM）、ならびに、向上したメモリ性能をもたらす、例えばＤＤＲ４およびＤＤＲ５などの他のシステム、仕様、および規格、の開発をもたらしてきた。
【０００６】
１つの例において、分散メモリ・システムは、複数のメモリ・デバイス、メモリ制御回路としても知られる１つまたは複数のアドレス・チップ、および、ＤＣチップとしても知られる複数のデータ・バッファまたはデータ回路（ＤＣ：data circuit）を含むことができる。ホスト・プロセッサと、メモリ制御回路およびデータ・バッファ回路との間の通信リンクまたはバスが存在する。メモリ制御回路からデータ・バッファ回路への通信リンクまたはバスも存在する。例えばＤＲＡＭといったメモリ・デバイスと、メモリ制御回路およびデータ・バッファ回路との間の通信リンクも存在する。通信リンクの帯域幅の限界は、メモリ・システムの性能に影響を及ぼすことがある。例えば、ストア・データ・アドレス・タグおよび位置といった、ストア・データ制御機能を伝送するために配分された帯域幅を含む、ホスト、メモリ制御回路、データ・バッファ回路、およびメモリ・デバイスの間の通信リンクおよびバスで送信されるデータ、コマンド、制御、およびレスポンス信号の量は、メモリ・システムの性能に影響を及ぼす。
【発明の概要】
【０００７】
本開示の概要は、データを格納およびフェッチするメモリ・システム、アーキテクチャ構造、および方法の理解を助けるために示されるが、本開示または本発明を限定することを意図するものではない。本開示は、当業者を対象とする。本開示の様々な態様および特徴は、いくつかの事例において別々に、または、他の事例において本開示の他の態様および特徴と組み合わせて、有利に使用されることが可能であるということを理解されたい。したがって、種々の効果を実現するために、メモリ・システム、アーキテクチャ構造、および動作方法に対して、変形および修正が行われることが可能である。
【０００８】
一実施形態において、コマンドがホストから受信されるのに応答してデータを格納するためのメモリ・システムが開示され、メモリ・システムは、ホストからコマンドを受信し、モジュール・コマンドおよび制御信号を出力するためのメモリ制御回路と、データを格納し、メモリ制御回路からコマンド信号を受信するように構成された少なくとも１つの、好ましくは複数のメモリ・デバイスと、少なくとも１つのメモリ・デバイスと関連付けられた少なくとも１つの、好ましくは複数のデータ・バッファ回路と、ホストと少なくとも１つのデータ・バッファ回路との間でデータを通信するための通信リンクと、メモリ制御回路と少なくとも１つのデータ・バッファ回路との間の制御通信リンクと、を備える。一実施形態において、メモリ制御回路は、ストア・コマンドおよびストア・データ・タグをホストから受信することに応答して、メモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、ホストのストア・データ・タグをメモリ制御回路のストア・データ・タグと関連付けること、ならびにメモリ制御回路内のマッピング・テーブルに関係を格納すること、を行うように構成される。一態様において、システムは、少なくとも１つのデータ・バッファ回路にデータを格納するための位置を指定するストア・データ・タグを、ホストと少なくとも１つのデータ・バッファ回路との間の通信リンクで、少なくとも１つのデータ・バッファ回路に送信しない。
【０００９】
別の実施形態において、メモリ・デバイスにデータを読み書きするためのメモリ・システムが開示され、ここで、システムは、ホストからコマンドを受信し、コマンドおよび制御信号を出力するための少なくとも１つのメモリ制御回路であって、順番に並べられたローカルなストア・タグ位置を有するローカルなアドレス・シーケンサを有する、メモリ制御回路と、データを読み込んで格納すること、およびメモリ制御回路からコマンド信号を受信すること、を行うように構成された少なくとも１つの、好ましくは複数のメモリ・デバイスと、少なくとも１つのメモリ制御回路と関連付けられた少なくとも１つの、好ましくは複数のデータ・バッファ回路であって、少なくとも１つのメモリ制御回路のローカルなアドレス・シーケンサと同じ順番にローカルなストア・タグ位置を並べるローカルなアドレス・シーケンサを有する、少なくとも１つのデータ・バッファ回路と、ホストと少なくとも１つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、メモリ・システムの読み書き動作信号を伝送するための、少なくとも１つのメモリ制御回路と少なくとも１つのメモリ・デバイスと少なくとも１つのデータ・バッファ回路との間の制御通信リンクと、を備え、少なくとも１つのメモリ制御回路は、（ｉ）ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工すること、（ｉｉ）ストア・コマンドを受信すると、少なくとも１つのメモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、（ｉｉｉ）少なくとも１つのデータ・バッファ回路にライト・ツー・バッファ・コマンドを送信すること、（ｉｖ）少なくとも１つのメモリ・デバイスにストア・コマンドを送信すること、および（ｉｖ）ストア・データ・タグと共にストア・フロム・バッファ・コマンドを少なくとも１つのデータ・バッファ回路に送信すること、を行うように構成され、少なくとも１つのデータ・バッファ回路は、（ｉ）ライト・ツー・バッファ・コマンドを受信すると、少なくとも１つのデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、（ｉｉ）少なくとも１つのデータ・バッファ回路のローカルなアドレス・シーケンサによって取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファに、入って来たストア・データを送信すること、（ｉｉｉ）少なくとも１つのメモリ制御回路から受信されたストア・データ・タグによって指し示されたローカルなデータ・バッファからストア・データをプルすること、および（ｉｖ）少なくとも１つのメモリ・デバイスにストア・データを送信すること、を行うように構成される。
【００１０】
メモリ・デバイスにデータを格納するための方法も開示され、方法は、ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および関連付けられたタグをマッピング・テーブルに格納することと、メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファ回路内の位置に、入って来たデータをプッシュすることと、を含む。一実施形態において、データ・バッファ回路は、ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュする。好ましくは、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持する。また、一実施形態において、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサから受信されたタグをデータ・バッファ回路に送信しないように構成される。
【００１１】
リモート・メモリ制御回路を有する分散メモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法も開示され、方法は、複数のデータ・バッファ回路の各ローカルなアドレス・シーケンサから、次に使用されることになるストア・データ・タグをプルすることと、各データ・バッファ回路のローカルなアドレス・シーケンサから回復されたストア・データ・タグを比較することと、データ・バッファ回路からのタグのいずれかが異なる場合、リカバリ・コマンドを発行することと、を含む。リモート・メモリ制御回路を有するメモリ・システムにおけるローカルなアドレス・シーケンサをチェックする別の方法が開示され、方法は、メモリ制御回路のローカルなアドレス・シーケンサから発行されることになる次のタグをデータ・バッファ回路に送信することと、データ・バッファ回路のローカルなアドレス・シーケンサから発行されることになる次のタグを、メモリ制御回路によって送信された、次に使用されることになるタグと比較することと、タグがマッチしない場合、リカバリ・コマンドを発行することと、を含む。リカバリ・コマンドは、任意の新しい動作を送出するのを停止すること、全ての未完了動作をフラッシュすること、全てのフェッチ動作が完了するのを待つこと、およびこれらの組合せからなる群のうちの少なくとも１つを含むことができる。方法は、一実施形態によれば、メモリ制御回路とデータ・バッファ回路の両方のローカルなアドレス・シーケンサをリセットすること、をさらに含むことができる。
【００１２】
メモリ・システム、アーキテクチャ構造、およびその動作方法の様々な態様、特徴、および実施形態は、示された図と共に読めば、より良く理解されよう。メモリ・システム、アーキテクチャ構造、および動作方法の態様、特徴、または様々な実施形態、あるいはその組合せを示すために実施形態が図において示されるが、特許請求の範囲は、示された正確な配列、構造、特徴、態様、実施形態、またはデバイスに限定されるべきではなく、示された配列、構造、サブアセンブリ、特徴、態様、実施形態、方法、およびデバイスは、単独で、または、他の配列、構造、サブアセンブリ、特徴、態様、実施形態、方法、およびデバイスと組み合わせて、使用されることが可能である。
【図面の簡単な説明】
【００１３】
【図１】一実施形態による、一般的なコンピューティング・システムまたはデータ処理システムを描写する図である。
【図２】一実施形態による、メモリ・サブシステムを描写する図である。
【図３】一実施形態による、バッファ型ＤＩＭＭ構成を含むメモリ・サブシステムを描写する図である。
【図４】一実施形態による、分散バッファ・メモリ・システムを図式的に描写する図である。
【図５】一実施形態による、ホストとメモリ制御回路との間の通信リンクで送信されるコマンドおよびアドレス・フレームを示す図である。
【図６】一実施形態による、ホストからデータ・バッファ回路に通信リンクで送信されるデータ・フレームを示す図である。
【図７】一実施形態による、メモリ制御回路からホストに通信リンクで送信されるフレームを示す図である。
【図８】一実施形態による、ストア動作を行う方法のフローチャートである。
【図９】一実施形態による、メモリ・サブシステムにおけるストア動作をマッピングする方法のフローチャートである。
【図１０】一実施形態による、メモリ・サブシステムにおけるストア動作をマッピングするリモート・アドレス・シーケンサの概略図である。
【図１１】一実施形態による、ストア動作を行う代替方法のフローチャートである。
【図１２】一実施形態による、メモリ・サブシステムにおける、タグのチェックまたは同期あるいはその両方を行う方法のフローチャートである。
【図１３】一実施形態による、メモリ・サブシステムにおける、タグのチェックまたは同期あるいはその両方を行う代替方法のフローチャートである。
【発明を実施するための形態】
【００１４】
以下の説明は、本発明の全体的な原理を示すために行われるが、本明細書において特許請求される発明の概念を限定することを意味するものではない。以下の詳細な説明において、メモリ・システム、アーキテクチャ構造、および動作方法の理解をもたらすために非常に多くの詳細が示されるが、メモリ・システム、アーキテクチャ構造、および動作方法の非常に多くの種々の実施形態が、これらの具体的詳細を有さずに実践されることが可能であり、特許請求の範囲および本発明は、本明細書において具体的に説明され、示された詳細の実施形態、サブアセンブリ、特徴、処理、方法、態様、特徴に限定されるべきではないということが、当業者によって理解されよう。さらに、本明細書において説明される特定の特徴は、様々な可能な組合せおよび順列のそれぞれにおける他の説明された特徴と組み合わせて使用されることが可能である。
【００１５】
本明細書において別段の定義が特にない限り、全ての用語は、本明細書から意味される意味、および、当業者によって理解される意味、または辞書、専門書、等において定義されるような意味、あるいはその両方、を含むこれらの可能な限り広範な解釈を与えられることになる。本明細書および添付の特許請求の範囲において使用されるように、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、別段の定めがない限り複数形の指示概念を含むということにも留意されたい。
【００１６】
コンピュータのメモリ・サブシステムは、例えばダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デバイスといった複数のメモリ・デバイスを通常含む、通常、１つまたは複数のデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）といったメモリ・モジュールを備えることが多い。分散メモリ・システムは、例えばＤＩＭＭとしてモジュール上に配列されることが可能なＤＲＡＭといった複数のメモリ・デバイス、１つまたは複数のメモリ制御回路、および１つまたは複数のデータ・バッファ回路またはデータ回路を含むことができる。一実施形態において、メモリ制御回路は、ホスト・プロセッサから信号を受信し、コマンドおよび制御信号を出力する。メモリ制御回路は、メモリ・コントローラを含むことができ、一実施形態において、回路の形態であることが可能なスケジューラを有することができる。メモリ制御回路またはメモリ・コントローラあるいはその両方は、一実施形態において、ホスト・プロセッサ、データ・バッファ回路、またはメモリ・デバイス、あるいはその組合せから離れていてもよい。例えばスケジューラといったメモリ制御回路は、動作および命令の順序を最適化することができ、データ・バッファ回路およびメモリ・デバイスにコマンド信号（例えば命令）を送出する。ホスト（例えばプロセッサ）、メモリ制御回路、データ・バッファ回路、またはメモリ・デバイス、あるいはその組合せの間に通信リンクまたはバスが存在する。一実施形態において、メモリ制御回路からデータ・バッファ回路への通信バスまたはリンクが存在する。一実施形態において、ホストとメモリ制御回路との間の通信リンクまたはバス、およびホストとデータ・バッファ回路との間の別々の通信リンクまたはバスが存在してもよい。メモリ・システムまたはアーキテクチャ構造あるいはその両方は、メモリ・デバイスとメモリ制御回路の間、またはメモリ・デバイスとデータ・バッファ回路の間、あるいはその両方の通信リンクまたはバスをさらに含むことができる。
【００１７】
例えば分散メモリ・システムを含むメモリ・システムもしくはサブシステムにおける読み書き動作を行う、メモリ・システム、メモリ・アーキテクチャ、または、方法、あるいはその組合せが開示される。一実施形態において、メモリ・デバイスを含むメモリ・システムにおけるデータの格納またはフェッチあるいはその両方を行うメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。下記においてより詳細に開示されるようなメモリ・システムは、１つまたは複数のメモリ・デバイス、および１つまたは複数のデータ・バッファ回路を含むことができる。メモリ・システムは、メモリ制御回路をさらに含むことができ、一実施形態において、メモリ・デバイスを行き来するデータのフローを制御するためのメモリ・コントローラを含むことができる。ホスト、メモリ・デバイス、データ・バッファ回路、またはメモリ制御回路、あるいはその組合せの間で、データ、コマンド、レスポンス、または信号、あるいはその組合せを伝送するための通信リンクまたはバスが存在することが可能である。
【００１８】
一態様において、読み書き動作を行うためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せは、ホストとデータ・バッファ回路との間の通信リンクのデータ帯域幅を改善する。別の実施形態において、メモリ制御回路とデータ・バッファ回路との間の通信リンクの負荷を低減させるためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、データ・バッファ回路への書き込みデータを格納するメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一態様において、例えばストア・データ位置タグ・アドレスといった制御情報をメモリ制御回路から送信することなく、データ・バッファ回路においてストア・データを管理するメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、本開示は、データ・バッファ回路がデータをどこに置いたかをデータ・バッファ回路がメモリ制御回路に知らせなくても、また、データをどこに置くべきかをメモリ制御回路がデータ・バッファ回路に知らせなくても、メモリ制御回路によって知られている位置におけるこれらのライト・バッファに、データ・バッファ回路がストア・データを置くためのシステム、アーキテクチャ構造、または方法、あるいはその組合せを提供する。一態様において、メモリ制御回路は、ストア・コマンドおよびストア・データ・タグをホストから受信し、ストア・データ・コマンドをデータ・バッファ回路に送信するが、メモリ制御回路は、ストア・データ・タグをデータ・バッファ回路に送信しない。一態様において、メモリ制御回路およびデータ・バッファ回路は、それぞれ、同じ順序で（データ・バッファにおけるアドレスまたは位置を識別する）同じタグを収める、例えばローカルなストア・タグＦＩＦＯといった、別々のステート・マシン・ドリブンのアドレス・ポインタまたはローカルなアドレス・シーケンサを保持する。メモリ制御回路とデータ・バッファ回路の両方は、ストア動作のための、例えばローカルなストア・タグＦＩＦＯといった、これらの回路のアドレス・シーケンサからの同じタグを使用する。メモリ制御回路は、メモリ制御回路のローカルなストア・データ・タグＦＩＦＯにホストのストア・データ・タグを関連付けるかマッピングし、マッピング・テーブルにホストのストア・データ・タグを格納する。
【００１９】
システムの別の態様において、メモリ制御回路は、ホストのストア・コマンドを受信することに応答して、ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、制御通信リンクで、少なくとも１つのデータ・バッファ回路にライト・ツー・バッファ・コマンドを送信するが、データ・バッファ回路にデータを格納するための位置を指定するタグをデータ・バッファ回路に送信しないことと、を行うようにさらに構成される。一実施形態において、データ・バッファ回路は、データ・バッファ回路内のどこにストア動作のためのデータを書き込むべきかを追跡するための論理回路を含む。システムの少なくとも１つのデータ・バッファ回路は、ライト・ツー・バッファ・コマンドを受信することに応答して、少なくとも１つのデータ・バッファ回路内の格納位置を指し示すデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサによって指し示されたデータ・バッファに、入って来たストア・データをプッシュすることと、を行うようにさらに構成されることが可能である。
【００２０】
メモリ制御回路は、一実施形態において、メモリ制御回路のローカルなアドレス・シーケンサから受信されたローカルなストア・データ・タグと共にストア・フロム・バッファ・コマンドを少なくとも１つのデータ・バッファ回路に、制御通信リンクで送信すること、および少なくとも１つのメモリ・デバイスにストア・コマンドを送信すること、を行うようにさらに構成されることが可能である。また、一実施形態において、少なくとも１つのデータ・バッファ回路は、制御通信リンクでメモリ制御回路から受信されたストア・データ・タグによって指し示されたデータ・バッファの位置からストア・データをプルすること、および少なくとも１つのメモリ・デバイスにストア・データを送信すること、を少なくとも１つのデータ・バッファ回路に行わせるようにさらに構成される。
【００２１】
システムの一態様において、メモリ制御回路は、データを書き込むことになる少なくとも１つのデータ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、少なくとも１つのデータ・バッファ回路は、データを書き込むことになる少なくとも１つのデータ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、メモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタは、少なくとも１つのデータ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される。一実施形態において、メモリ制御回路のローカルなアドレス・シーケンサと少なくとも１つのデータ・バッファ回路のローカルなアドレス・シーケンサは、両方、同じ順序で同じタグを収める。さらなる態様において、メモリ・システムのメモリ制御回路は、少なくとも１つのデータ・バッファ回路にライト・ツー・バッファ・データ・タグを送信しない。一態様において、メモリ・システムにおけるデータ通信リンクは、ホストと少なくとも１つのデータ・バッファ回路との間、および少なくとも１つのデータ・バッファ回路と少なくとも１つのメモリ・デバイスとの間の通信リンクを含み、データおよびＣＲＣだけが、少なくとも１つのデータ・バッファ回路とホストとの間の通信リンクで伝送される。
【００２２】
メモリ・システムは、一実施形態において、モジュール上の単一チップ上に形成されたメモリ制御回路を有し、モジュール上の別々のチップ上に形成された少なくとも９つのデータ・バッファ回路、およびモジュール上に配列された９つのグループに編成された複数のメモリ・デバイスを有する、少なくとも１つのモジュールを備える。
【００２３】
メモリ・デバイスにデータを格納するための方法も開示され、方法は、ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および関連付けられたタグをマッピング・テーブルに格納することと、メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファ回路内の位置に、入って来たデータをプッシュすることと、を含む。一実施形態において、データ・バッファ回路は、ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュする。好ましくは、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持する。また、一実施形態において、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサから受信されたタグをデータ・バッファ回路に送信しないように構成される。
【００２４】
方法は、メモリ制御回路からメモリ・デバイスにストア・コマンドを送信すること、およびデータ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示された位置からメモリ・デバイスにデータを送信すること、をさらに含むことができる。さらなる態様において、方法は、データ・バッファ回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、メモリ制御回路のローカルなストア・データ・タグと関連付けられたメモリ制御回路のマッピング・テーブルからホストのストア・データ・タグを検索することと、メモリ制御回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、ホストのストア・データ・タグをホストにプッシュして戻すことと、を含む。
【００２５】
別の態様において、信頼性を向上させ、例えばローカルなストア・タグＦＩＦＯといったローカルなアドレス・シーケンサの同期が外れるのを阻止して回避するために、周期的なタグ・チェックおよび再同期またはリカバリ方法が実行される。システムは、一態様によれば、少なくとも１つのメモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタが、少なくとも１つのデータ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同じ次のタグを有するかどうかをチェックするようにさらに構成される。システムは、メモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタが、データ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同じアドレスを指し示していない場合、メモリ制御回路のローカルなアドレス・ポインタおよびデータ・バッファ回路のローカルなアドレス・ポインタが両方リセットされるように、さらに構成されることが可能である。さらなる態様において、システムは、メモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタが、データ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同じではない場合、システムは、メモリ制御回路のローカルなアドレス・ポインタおよびデータ・バッファ回路のローカルなアドレス・ポインタをリセットするように構成されることが可能である。一実施形態において、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサからデータ・バッファ回路に、次に使用されることになるストア・データ・タグを送信することができ、データ・バッファ回路は、データ・バッファ回路のローカルなアドレス・シーケンサからのデータ・バッファ回路の、次に使用されることになるタグを、メモリ制御回路によって送信されたタグと比較して、タグが同じであるかどうかを確かめる。別の実施形態において、データ・バッファ回路は、次に使用されることになるストア・データ・タグをホストに送信することができ、ホストは、各データ・バッファ回路から受信されたタグを比較して、これらのタグが同じであるかどうかを確かめる。タグが同じではない場合、システムは、ローカルなアドレス・シーケンサを特にリセットすることができるリカバリ・ルーチンを経ることが可能である。
【００２６】
メモリ・デバイスにデータを格納するためのコンピュータ・プログラム製品が開示され、コンピュータ・プログラム製品は、プログラム命令が含まれるコンピュータ可読ストレージ媒体を備え、プログラム命令は、メモリ・システムに方法を行わせるようにメモリ・システムによって実行可能であり、メモリ・システムは、一実施形態において、メモリ制御回路、１つまたは複数のデータ・バッファ回路、および複数のメモリ・デバイスを含むことができ、方法は、ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および関連付けられたタグをマッピング・テーブルに格納することと、メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファ回路内の位置に、入って来たデータをプッシュすることと、を含む。１つの実施形態において、コンピュータ・プログラム製品は、ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュするデータ・バッファ回路をさらに備える。一態様によるコンピュータ・プログラム製品において、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持し、別の態様によれば、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサから受信されたタグをデータ・バッファ回路に送信しないように構成される。
【００２７】
コンピュータ・プログラム製品であって、方法は、メモリ制御回路からメモリ・デバイスにストア・コマンドを送信すること、およびデータ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示された位置からメモリ・デバイスにデータを送信すること、をさらに含む。コンピュータ・プログラム製品であって、方法は、データ・バッファ回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、メモリ制御回路のローカルなストア・データ・タグと関連付けられたメモリ制御回路のマッピング・テーブルからホストのストア・データ・タグを検索することと、メモリ制御回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、ホストのストア・データ・タグをホストにプッシュして戻すことと、をさらに含む。コンピュータ・プログラム製品であって、方法は、複数のデータ・バッファ回路の各ローカルなアドレス・シーケンサから、次に使用されることになるストア・データ・タグをプルすること、各データ・バッファ回路のローカルなアドレス・シーケンサから回復されたストア・データ・タグを比較すること、およびデータ・バッファ回路からのタグのいずれかが異なる場合、リカバリ・コマンドを発行すること、をさらに含む。コンピュータ・プログラム製品であって、方法は、一実施形態によれば、メモリ制御回路のローカルなアドレス・シーケンサから発行されることになる次のタグをデータ・バッファ回路に送信すること、データ・バッファ回路のローカルなアドレス・シーケンサから発行されることになる次のタグを、メモリ制御回路によって送信された次に使用されることになるタグと比較すること、およびタグがマッチしない場合、リカバリ・コマンドを発行すること、を含む。
【００２８】
プログラム・コードを格納または実行あるいはその両方を行うのに適したコンピューティング・システムまたはデータ処理システム１００は多くの形態を採用することができ、一実施形態において、図１に示されるように、システム・バスを通じてメモリ・デバイスまたはメモリ・エレメントに直接的または間接的に連結された、コントローラであること、またはコントローラの一部であること、が可能な少なくとも１つのプロセッサ１０２を含むことができる。図１におけるコンピューティング・システム１００は、プロセッサ１０２、ランダム・アクセス・メモリ（ＲＡＭ）１０３、不揮発性メモリ１０４、デバイス固有回路１０１、およびＩ／Ｏインターフェース１０５と共に示される。代替として、ＲＡＭ１０３または不揮発性メモリ１０４あるいはその両方は、デバイス固有回路１０１およびＩ／Ｏインターフェース１０５のように、プロセッサ１０２に収められることが可能である。プロセッサ１０２は、例えば、市販のマイクロプロセッサ、カスタム・プロセッサ、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：Field Programmable Gate Array）、特定用途向け集積回路（ＡＳＩＣ：Application Specific Integrated Circuit）、ディスクリート・ロジック、等を含むことができる。ＲＡＭ１０３は、典型的には、変数データ、スタック・データ、実行可能命令、等を保持するために使用され、ダイナミック・ランダム・アクセス・メモリすなわちＤＲＡＭを含むことができる。
【００２９】
様々なアプローチによれば、不揮発性メモリ１０４は、電気的消去可能プログラマブル・リード・オンリ・メモリ（ＥＥＰＲＯＭ）、フラッシュ・プログラマブル・リード・オンリ・メモリ（ＰＲＯＭ）、バッテリ・バックアップＲＡＭ、ハードディスク・ドライブ、等などであるがこれらに限定されない任意のタイプの不揮発性メモリを含むことができる。不揮発性メモリ１０４は、典型的には、実行可能なファームウェア、およびプロセッサ１０２に一定の機能を行わせるように実行されることが可能なプログラム命令を収める任意の不揮発性データを保持するために使用される。
【００３０】
いくつかの実施形態において、Ｉ／Ｏインターフェース１０５は、コントローラの外部のデバイスとプロセッサ１０２が通信できるようにする通信インターフェースを含むことができる。通信インターフェースの例は、ＲＳ−２３２、ＵＳＢ（ユニバーサル・シリアル・バス）、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、ＲＳ−４２２などのシリアル・インターフェース、または、Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、近距離無線通信（ＮＦＣ）、もしくは他のワイヤレス・インターフェースなどのワイヤレス通信インターフェース、を含むことができるがこれらに限定されない。コンピューティング・システム１００は、オートメーション／ドライブ・インターフェース（ＡＤＩ）などの任意の通信プロトコルで通信インターフェース１０５を介して外部デバイスと通信することができる。
【００３１】
図２は、より大きいコンピュータ・システム構造またはネットワークの一部であることが可能な例示的なメモリ・システム２００を描写する。コンピュータ・システム２００は、制御プロセッサ・システム２０２を含み、制御プロセッサ・システム２０２は、メモリ制御ユニット（ＭＣＵ：Memory Control Unit）２１０とインターフェースするように構成されることが可能な、少なくとも１つのプロセッサ・ユニット（ＣＰＵ：processor unit）２０６を含む処理サブシステムである。プロセッサすなわちＣＰＵ２０６は、システム・コントローラ（図示せず）からのリード、ライト、および構成リクエストを処理するモジュールであることが可能である。プロセッサ２０６は、マルチコア・プロセッサであることが可能である。ＭＣＵ２１０は、メモリ・サブシステム２２０における１つまたは複数のメモリ・デバイス２５０（図１において図示せず）との通信を制御する、メモリ・コントローラとも呼ばれる、メモリ・コントローラ・シンクロナス（ＭＣＳ：memory controller synchronous）２０８を含むことができる。ＭＣＵ２１０およびＭＣＳ２０８は、１つもしくは複数の処理回路を含むことができ、または処理は、プロセッサ２０６によって、もしくはプロセッサ２０６と共に、行われることが可能である。制御プロセッサ・システム２０２は、図４に関してより詳細に記述されることになるような、通信バス２１５を通じてメモリ・サブシステム２２０と通信する。制御プロセッサ・システム２０２、プロセッサすなわちＣＰＵ２０６、メモリ制御ユニット２１０、およびＭＣＳ２０８は、個別におよび一括して、本明細書においてホストと呼ばれることがある。ホストは、本明細書において使用されるように、メモリ・システムまたはサブシステムに、コマンドまたは制御信号あるいはその両方を送受信するプロセッサ、コントローラ、またはデバイスを概して指すために使用される。ホストは、メモリ・システムまたはサブシステムからデータ信号を送受信することも可能である。
【００３２】
図３は、メモリ・サブシステム３２０の例を描写する。メモリ・システム３２０は、例えば、デュアル・インライン・メモリ・モジュール、すなわちＤＩＭＭ３２５といった、複数のメモリ・モジュールを備える。図３において３つの（３）ＤＩＭＭ３２５ａ〜ＤＩＭＭ３２５ｃだけが示されているが、メモリ・サブシステム３２０は、より多くの、またはより少ないＤＩＭＭ３２５を収めることができるということが理解されよう。ＤＩＭＭ３２５は、チャネルまたはランクあたり１つまたは複数のＤＩＭＭ３２５で、チャネルおよびランクに配置され得る。各ＤＩＭＭ３２５は、例えば、ダイナミック・ランダム・アクセス・メモリ・チップすなわちＤＲＡＭ３５０といった、１つまたは複数の揮発性メモリ・デバイスを収めることができる。メモリ・デバイス３５０は集積回路またはチップであることが可能であり、情報のビットを保持する基本メモリ・セルを形成する。例えばＤＲＡＭといったメモリ・デバイス内のメモリ・セルは、通常、バンクに配置され、ここで、各バンクは、行と列のアレイである。
【００３３】
メモリ・サブシステムは、１つまたは複数のメモリ制御回路３３０、１つまたは複数のデータ・バッファ回路またはデータ（ＤＣ）回路すなわち（ＤＣ）チップ３４０、および１つまたは複数のメモリ・デバイス３５０を含むこともできる。メモリ制御回路は、メモリ・デバイスを行き来するデータのフローを管理する。メモリ制御回路は、典型的には、例えばホスト・プロセッサといったホストからコマンドおよび制御信号などの信号を受信する。制御信号は、メモリ・デバイス内のどこにデータを格納するべきかについてのアドレス位置またはタグを含むことができる。メモリ制御回路は、メモリ・デバイスまたはデータ・バッファ回路あるいはその両方にコマンドおよび制御信号を出力することができる。メモリ制御回路３３０は、参照を容易にするために、アドレスおよびコマンド回路、ＡＣ回路、またはＡＣチップと呼ばれることもある。メモリ制御回路３３０は、レジスタード・クロック・ドライバすなわちＲＣＤを有しても、有さなくてもよい。メモリ制御回路３３０は、一実施形態において、メモリ・コントローラ３３２を有することができる。メモリ制御回路３３０またはメモリ・コントローラ３３２は、スケジューラ３３８を有することができる。メモリ・コントローラ３３２またはスケジューラ３３８あるいはその両方は、動作および命令の順序を最適化することができ、データ・バッファ回路およびメモリ・デバイスに信号を送出する。メモリ制御回路３３０／メモリ・コントローラ３３２／メモリ・スケジューラ３３８は、動作の順序を再配列することができる。メモリ制御回路は、メモリ・デバイスを伴う、例えばＤＩＭＭといった基板またはモジュール上に配置されても、されなくてもよい。実施形態において、図３に示されるように、メモリ制御回路３３０は、集積回路またはチップとして形成され、メモリ・デバイス３５０と共にモジュール３２５上に配置される。一実施形態において、メモリ制御回路は、ホスト・プロセッサから離れていてもよい。
【００３４】
データ・バッファ回路３４０は、例えば、制御プロセッサ・システム３０２といったホストと、メモリ・デバイス３５０との間で、データをバッファ、受信、伝送、または移送、あるいはその組合せを行う。データ・バッファ回路は、メモリ・デバイスまたはメモリ制御回路あるいはその両方と同じ、例えばＤＩＭＭといった基板またはモジュール上に配置されても、されなくてもよい。データ・バッファ回路３４０は、一実施形態において、集積回路またはチップとしても形成され、メモリ・デバイス３５０と共にモジュール３２５上に配置される。データ・バッファ回路は、データ回路、ＤＣ回路、またはＤＣチップ、あるいはその組合せと呼ばれることもある。
【００３５】
図３の例において、メモリ制御プロセッサ３０２またはメモリ制御ユニット３１０あるいはその両方、およびメモリ・サブシステム３２０を有する分散メモリ・システム３００が示される。メモリ制御ユニット３１０またはメモリ制御プロセッサ３０２あるいはその両方はホストであることが可能である。メモリまたはデータ・ストレージ・システム３２０は、データを格納すること、および１つまたは複数のホストにストレージ・サービスを提供すること、を行うように構成されることが可能であり、１つまたは複数のホストは、直接的に、またはネットワークを通じて（例えばインターネットで）、ストレージ・システム３２０に接続されることが可能である。ストレージ・システムは、ホストとの通信をサポートするためのインターフェースを含むことができる。
【００３６】
図３の実施形態において、メモリ・サブシステム３００は、３つの（３）ＤＩＭＭ３２５ａ〜ＤＩＭＭ３２５ｃを有する。分散メモリ・システム３００は、１つまたは複数の制御プロセッサ・システム３０２を有することができ、より多くの、またはより少ないＤＩＭＭ３２５を有することができる。図３の分散メモリ・システム３００において、各メモリ・モジュール３２５はＤＩＭＭとして構成され、１つのメモリ制御回路すなわちＡＣチップ３３０、９つの（９）データ・バッファ回路すなわちＤＣチップ３４０、および例えばＤＲＡＭといった３６個の（３６）メモリ・デバイス３５０を有する。メモリ制御回路は、データ・バッファ回路およびメモリ・デバイスにコマンドおよび制御信号を送信するように構成され、プログラムされる。この例における各メモリ制御チップすなわちＡＣチップ３３０は、モジュール３２５上のメモリ・デバイスを行き来するデータのフローを管理する。この例における各データ・バッファ回路すなわちＤＣチップ３４０は、４つのメモリ・デバイス３５０の間のデータと対話してバッファする。ＤＩＭＭは、例えば、９、１８、２７、３６、もしくはそれ以上といった９のグループ、または例えば、１０、２０、３０、もしくはそれ以上といった１０のグループに好ましくは配列および編成された、例えばＤＲＡＭといった、メモリ・デバイスを含むことができる。
【００３７】
メモリ・モジュール３２５のため、およびメモリ・サブシステム３２０のための他の構成が想定される。典型的には、９個または１０個のデータ・バッファ・チップ３４０毎に１つのメモリ制御チップ３３０が存在する。例として、ＤＤＲ４メモリ・システムは、メモリ制御回路すなわちＡＣチップ、および９つの（９）データ・バッファ回路すなわちＤＣチップのグループを含むことができる。図３のメモリ・デバイス構造またはモジュールあるいはその両方は、９のグループにおけるメモリ・デバイス３５０を示すが、メモリ・デバイスは、１０以上のグループにおいて配列されることが可能であるということが想定される。図３の例において、ＤＩＭＭ毎に１つのＡＣチップが示されるが、ＤＩＭＭ毎に、より多くのＡＣチップが使用されることが可能である。メモリ・システム・アーキテクチャは、ＤＤＲ４規格およびＤＤＲ５規格をサポートするようにフォーマットされ、構造化されることが可能であるが、開示され、教示される方法、システム、およびアーキテクチャは、将来の規格を含む他の構成に適用できるであろう。
【００３８】
１つの例において、データ・バッファ回路すなわちＤＣチップ３４０は、それぞれ、ホスト・プロセッサ３０２（メモリ制御ユニット３１０）からのストア動作を保持するために使用されるライト・バッファ・アレイを、メモリ制御回路３３０上のメモリ・コントローラ３３２がストア動作をスケジュールできるまで、有することができる。ホスト３０２とメモリ制御回路３３０との間、およびメモリ制御回路３３０とメモリ・デバイス３５０との間の、通信バスまたはリンクが存在する。ホスト３０２とデータ・バッファ回路３４０との間、およびデータ・バッファ回路３４０とメモリ・デバイス３５０との間の、データ通信リンクまたはバスも存在する。メモリ制御回路３３０からデータ・バッファ回路すなわちＤＣチップ３４０への通信リンクまたはバス３３２が存在することが可能である。メモリ制御回路３３０とデータ・バッファ回路３４０との間の通信リンクまたはバスは、ＢＣＯＭと呼ばれる１つの方式のブロードキャスト通信リンクまたはバスであることが可能である。通信バスおよびリンクの特定の実施形態に関するより多くの情報は、下記において説明される。
【００３９】
通信リンクの帯域幅は、メモリ・システム３００の性能に影響を及ぼす。１つまたは複数の実施形態において、メモリ・システム、アーキテクチャ構造、または動作方法、あるいはその組合せは、ホストと１つまたは複数のメモリ・デバイスとの間のデータを格納または検索あるいはその両方を行う際に改善をもたらす。一実施形態において、ホスト３０２とデータ・バッファ回路すなわちＤＣチップ３４０との間の通信リンク上のデータに利用可能な性能または帯域幅あるいはその両方を改善するためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、ホスト３０２とデータ・バッファ回路３４０との間の通信リンクの帯域幅は、ホスト３０２からデータ・バッファ回路すなわちＤＣチップ３４０に制御情報（タグ）を送信する頻度を減少させること（または取り除くこと）によって改善される。
【００４０】
さらなる実施形態において、メモリ制御回路３３０とデータ・バッファ回路すなわちＤＣチップ３４０との間の通信リンクの性能または帯域幅あるいはその両方を改善するためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、メモリ制御回路３３０とデータ・バッファ回路３４０との間の通信リンクの帯域幅は、メモリ制御回路３３０からデータ・バッファ回路（ＤＣチップ）３４０に制御情報（位置タグ）を送信する頻度を減少させることによって改善される。メモリ制御回路３３０とＤＣチップ３４０との間のリンクに対する要求を低減するために、ストア動作を行う一実施形態において、ホスト３００は、ストア・コマンドおよびストア・データ・タグをメモリ制御回路（ＡＣチップ）３３０に送信し、ＡＣチップ３３０は、ストア・データ・コマンドをＤＣチップ３４０に送信するが、ＡＣチップ３３０は、対応するストア・データ・タグをＤＣチップ３４０に送信しない。代わりに、メモリ制御回路（ＡＣチップ）３３０およびＤＣチップ３４０は、両方、同じ順序で同じタグを収める、例えばストア・タグＦＩＦＯといった、別々のステート・マシン・ドリブンのローカルなアドレス・ポインタまたはアドレス・シーケンサ３３５、３４５を保持する。ＡＣチップ３３０およびＤＣチップ３４０は、ストア動作のために、例えばローカルＦＩＦＯといった、ＡＣチップ３３０およびＤＣチップ３４０のローカルなアドレス・シーケンサ３３５、３４５からの同じタグを使用する。ＡＣチップ３３０は、例えば、ＡＣチップ３３０のローカルなストア・データ・タグＦＩＦＯといった、ＡＣチップ３３０のローカルなアドレス・シーケンサ３３５において利用可能な次のタグ（位置アドレス）に、ホストのストア・データ・タグを関連付けるか、マッピングし、マッピング・テーブル３３６にタグの関連ペアを格納する。
【００４１】
図４は、一実施形態による、分散バッファ・メモリ・システム４００の概略図を示す。システムは、例えばＤＲＡＭといった複数のメモリ・デバイス４５０を含む。ＤＲＡＭは、通常、ＤＩＭＭ３２５といった、モジュール上に配列されることが可能である。システム４００は、１つまたは複数のＤＩＭＭを有することができる。システムは、１つまたは複数のメモリ制御回路すなわちＡＣチップ４３０、および１つまたは複数のデータ・バッファ回路すなわちＤＣチップ４４０をさらに含むことができる。一実施形態において、各ＤＩＭＭは、１つのメモリ制御回路すなわちＡＣチップ４３０、および複数のデータ・バッファ回路すなわちＤＣチップ４４０（ＡＣチップあたり９個または１０個のチップ）を含むことができる。各ＤＩＭＭ３２５は、好ましくは、例えば、９、１８、２７、３６、またはそれ以上といった、９のグループに配列される、例えばＤＲＡＭ４５０といった複数のメモリ・デバイスを有することができる。ＤＩＭＭは、例えばＤＲＡＭ４５０といった、等しくない数のメモリ・デバイスを有することができる。一実施形態において、システムは、ＤＤＲ４またはＤＤＲ５メモリ・システムをサポートするように設計されるが、他の構成および配列が想定される。メモリ制御回路４３０は、レギュレーテッド・クロック・ドライバを有しても有さなくてもよく、一実施形態において、メモリ制御回路４３０は、メモリ・コントローラ４３２またはメモリ・スケジューラ４３８あるいはその両方を有することができる。
【００４２】
図４において図式的に示されるリンク４６０は、メモリ・サブシステム３２０にコマンドを送信するためのホスト４０２／４１０からメモリ制御回路すなわちＡＣチップ４３０への８つの（８）レーン、ならびに完了またはエラー通知および詳細である、動作などの状態をレポートするための戻りの１つのＨＳＳレーン、を有するディファレンシャル・ハイ・スピード・シリアル（ＨＳＳ）バスである。図５は、ホスト４０２／４１０からメモリ制御回路すなわちＡＣチップ４３０にリンク４６０で送信されるアドレスおよびコマンド・フレームの１つの例を示す。図５において、アドレスおよびコマンド・フレームは、フレームを作り上げるためのサイクル数を指定するための２つの（２）ビット（Ｌ０〜Ｌ１）、アドレス可能空間の３９個の（３９）ビット（Ａ０〜Ａ３８）、コマンドのための空間の４つの（４）ビット（Ｃ０〜Ｃ３）、書き込み動作のためにＤＣチップに送信されるタグフィールド・マッチのための７つの（７）ビット（Ｑ０〜Ｑ６）、アップストリーム・フレームに対する承認のための１つのビット（ＡＣＫ）、ならびにレーンのエラー検出および特定のために提供される巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）コードのための１１個の（１１）ビット（Ｐ０〜Ｐ１０）、を有する。
【００４３】
リンク４６５は、ストア・データのための、ホスト４０２／４１０から各データ・バッファ回路すなわちＤＣチップ４４０への２つの（２）レーン、および、フェッチ・データのための、各ＤＣチップ４４０からホスト４０２／４１０への２つの（２）レーン、を有するＨＳＳバスである。本線動作について、リンク４６５は、一実施形態において、データを伝送すること、および、このデータを保護するために必要な巡回冗長検査（ＣＲＣ）のためだけに使用される。リンク４６５の帯域幅は、一実施形態において、任意の種類の制御情報のために消費されず、応答情報のために消費されるいずれの帯域幅も有さなくてよい。リンク４６５のための帯域幅の２つのレーンの全ては、一実施形態において、データ（およびＣＲＣ）を伝送するために使用される。図６は、リンク４６５でのホスト４０２／４１０からＤＣチップ４４０への通信のためのデータ・フレームの１つの例を示す。図６において、（９）フレームのうちの９（９）（またはリンク４６５の帯域幅の１００％）が、データおよびＣＲＣのために使用されるべく、１２８ビット（メモリ・サイクル（フレーム）１〜８におけるＤ０〜Ｄ１２７）はデータ・フィールドであり、１６個の（１６）ビット（メモリ・サイクル（フレーム）９におけるＣＲＣ０〜ＣＲＣ１５）はＣＲＣのためのものである。例えば、タグまたはアドレス位置といった、制御信号を伝送するためにリンク４６５を使用しないことによって、９つのうちの（９）メモリ・サイクルの全てが、データおよびＣＲＣの伝送のために使用され、リンク４６５におけるデータ移送効率を改善する。
【００４４】
リンク４７０は、スケジュールされた動作をいつ実行するべきかをＤＣチップに通知するために使用される、メモリ制御回路すなわちＡＣチップ４３０からデータ・バッファ回路すなわちＤＣチップ４４０へのブロードキャスト（ＢＣＯＭ）バスである。フェッチ動作について、ＡＣチップ４３０からＤＣチップ４４０へのリンク４７０でコマンドだけが送信される。一態様によれば、ストア動作について、制御メモリ回路４３０は、ストア・コマンドを、ホスト４０２／４１０からＤＣチップ４４０上のデータ・バッファにデータを書き込む「ライト・バッファ」または「ライト・ツー・バッファ」、および、ＤＣチップ４４０から、例えばＤＲＡＭといったメモリ・デバイス４５０へのデータを格納する「ストア・バッファ」または「ストア・フロム・バッファ」と呼ばれる２つのサブ動作に分解する。ライト・バッファについて、一実施形態において、コマンドは、データ・バッファ回路すなわちＤＣチップ４４０にＡＣチップ４３０からリンク４７０で送信されるが、例えば位置タグ・アドレスといった制御信号は、帯域幅を節約するために、例えばライト・バッファといったデータ・バッファ回路には送信されない。代わりに、各ＤＣチップ４４０におけるステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ４４５が、例えば、ライト・バッファにおけるアドレスまたは位置といった、データ・バッファ回路内のどこにストア・データが書き込まれることになるかを追跡する。ストア・バッファ動作について、コマンドと、例えば、ライト・バッファ・アドレスといった制御信号の両方が、データ・バッファ回路すなわちＤＣチップ４４０に送信される。メモリ・サブシステムの動作は、下記においてより詳細に説明される。
【００４５】
データ・バッファ回路すなわちＤＣチップ４４０と、メモリ制御回路すなわちＡＣチップ４３０との間のエラーＡＴＴＮネットワーク４７５は、ホスト４０２／４１０にレポートする必要があるエラーをＤＣチップ４４０が得たことをメモリ制御回路すなわちＡＣチップ４３０に通知する、データ・バッファ回路すなわちＤＣチップ４４０からのエラーＡＴＴＮ信号を収めることができる。例えばＤＲＡＭといったメモリ・デバイス４５０がエラーを得たことを示すＤＲＡＭのＡＴＴＮ信号は、ＡＣチップ４３０にＡＴＴＮ信号を直接的にルート・バックされる代わりに、メモリ・デバイス４５０からメモリ・デバイス４５０のＤＣチップ４４０にルート・バックされる、ということに留意されたい。ＡＣチップ４３０は、ＤＣチップ４４０のアップストリーム・フレームにおいてＤＣチップ４４０がレスポンスまたは制御情報を有していないので、このエラーをホスト４０２／４１０にレポートしなければならない。ＤＣチップ４４０は、リンク４７５を介してメモリ・デバイス・エラーをＡＣチップ４３０に転送して戻すが、各ＤＣチップ４４０は、例えばＤＲＡＭ４５０といった、ＤＣチップ４４０のメモリ・デバイスのうちの１つがエラーを得たということを知っている。ＡＣチップ４３０は、エラー信号をホストにルート・バックする。ホスト４０２／４１０は、ホスト４０２／４１０のエラー・リカバリ・ルーチンを起動することができ、ホスト４０２／４１０からの非本線動作は、ＤＣチップ４４０の状態レジスタを読み取るために使用されることが可能である。ホスト４０２／４１０は、次に、エラーがＨＳＳリンクで発生したか、ＤＣチップ４４０のメモリ・デバイスのうちの１つからのＡＴＴＮだった場合、または、エラーが、ＤＣチップ４４０上で発生している他のいくつかのエラーだった場合、どのＤＣチップ４４０がエラーを得たものを区分けすることができる。ホスト４０２／４１０は、次に、エラーから回復するために望まれるようなアクションを行うことができる。
【００４６】
リンク４８０は、メモリ制御回路すなわちＡＣチップ４３０から、例えばＤＲＡＭといったメモリ・デバイス４５０への、コマンドおよびアドレス・バスである。リンク４９０は、ストア・データをメモリ・デバイスに送信するため、およびメモリ・デバイス４５０からフェッチ・データを受信するために、ＤＣチップ４４０によって使用されるメモリ・デバイスのデータ・バスである。通信リンク４９０も、メモリ・デバイスのＡＴＴＮ信号を受信する。
【００４７】
メモリ・システムの動作をここで参照すると、正常動作中、ホスト４０２／４１０は、メモリ制御回路すなわちＡＣチップ４３０にストア・コマンドを送信する。ホストによってＡＣチップ４３０に送信されたストア・コマンドは、ＤＣチップ４４０上のデータ・バッファにホストからのデータを書き込む「ライト・バッファ」コマンド、および、ＤＣチップ４４０からメモリ・デバイス４５０へのデータを格納する「ストア・バッファ」コマンドに、加工、デコード、または分解されることが可能である。「ライト・バッファ」コマンドは、直ちに実行するためにスケジュールされ、「ストア・バッファ」コマンドは、システム性能を最適化することに基づいてメモリ制御回路による実行のためにスケジュールされる。
【００４８】
ライト・バッファ・コマンドは、メモリ制御回路すなわちＡＣチップ４３０によってデータ・バッファ回路すなわちＤＣチップ４４０にリンク４７０で送信され、ホスト４０２／４１０は、好ましくは構成可能な遅延の後、格納されることになるデータをＤＣチップ４４０にリンク４６５で送信する。制御信号は、ホストとデータ・バッファ回路との間の通信リンクで送信されない。一実施形態において、ＡＣチップは、データ・バッファ回路４４０のライト・バッファ内のどこにストア・データがあるべきかを識別するアドレス、タグ、または位置をＤＣチップ４４０に送信しない。代わりに、各ＤＣチップ４４０は、ＤＣチップ４４０のライト・バッファ内のどこに次のストア動作のためのホストからのデータが書き込まれるべきかをステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ４４５を通じて追跡する。各ＤＣチップ４４０は、ＨＳＳリンク４６５上でエラーが発生しなかったことを検証するために、受信されたストア・データからのＣＲＣコードをチェックすることができる。エラーが発生したことがわかった場合、ＤＣチップ４４０は、エラーが発生し、ＤＣチップの状態レジスタ４４８にエラーが記録されたことを、リンク４７５でエラーＡＴＴＮ信号を介してＡＣチップ４３０に通知する。
【００４９】
ＡＣチップ４３０は、動作およびシステム命令の順序を最適化し、コマンドを送出するスケジューラ４３８を含むことができる。スケジューラ４３８は、動作を再配列することができる。ＡＣチップ・スケジューラ４３８は、この動作を実行することがシステム性能にとって最適なときに「ストア・バッファ」コマンドをスケジュールすることができる。バンク衝突、周期的動作、およびフェッチ・コマンドは、他の動作が完了すること、またはこれより先に実行すること、を可能にするように、ストア動作を遅らせることができる。「ストア・バッファ」動作がストア動作を完了させると、ホストのストア・コマンドは完了したとみなされ、ＡＣチップ４３０は、どの動作が完了したかを示すために、例として図７における形式を使用して、アップストリーム・フレームをホストにリンク４８０を介して送信する。
【００５０】
一実施形態において、フェッチ動作は、前もってデータを送信する必要がないので、通信リンク４６０を介してフェッチ・コマンドがＡＣチップ４３０に送信されることでスタートする。フェッチ動作は、システムにおいて優先されることが可能であり、使用のためにバスが利用可能な場合、フェッチ動作は、レイテンシを最小化するために待ち行列におけるストア動作を迂回することになる。しかし、スケジュールされる必要がある他の待ち状態のフェッチ動作が存在する場合、フェッチ動作は、メモリ制御回路スケジューラまたはメモリ・シーケンサ４３８に入ることになる。
【００５１】
メモリ制御回路のメモリ・スケジューラ４３８が実行予定のフェッチ動作をスケジュールすると、コマンド信号および例えばアドレス（タグ）といった制御信号は、メモリ・デバイス４５０にＡＣチップ４３０からリンク４８０で送信され、ＤＣチップ４４０は、固定数のサイクルでホスト４０２／４１０に送信されることになるフェッチ・データが到着予定であることをリンク４７０でＡＣチップ４３０によって知らされる。フェッチ・データがＤＣチップ４４０に到着すると、データは、リンク４６５でホスト４１０／４０２に直接的に転送される。フェッチ・データは、好ましくは、バッファすることが追加のレイテンシを作り出すので、バッファされない。ＡＣチップ４３０は、それに応じて、次に、フェッチ動作が完了したことをホストに通知するアップストリーム・フレームをホストに送信することになる。
【００５２】
どの動作が完了するかを示すレスポンス・フレームが図７において示される。図７において、２つの（２）ビット（Ｔ０〜Ｔ１）は、フレーム／タイプ識別子であり、２つの（２）ビット（Ｒ０〜Ｒ１（ｏｐ１））は、第１の動作に対する、例えば、ストア完了、フェッチ完了、または注意レスポンスといった、レスポンス・タイプを識別し、７つの（７）ビット（Ｑ０〜Ｑ６（ｏｐ１））は、第１の動作のレスポンス・タイプと関連付けられたコマンド・キュー・タグであり、２つの（２）ビット（Ｄ０〜Ｄ１（ｏｐ１））は、（４つの（４）メモリ・サイクル・フレームの始まりについて、いつフェッチ・データがリターンすることになるかを指定するために）第１の動作のためのフレーム・オフセット・コードを提供し、６つの（６）ビット（ＣＲＣ０〜ＣＲＣ５）は、フレームのためのＣＲＣであり、１つのビット（ＡＣＫ）は、ダウンストリーム・フレームに対する承認（例えば、ＡＣによって受信された図５におけるフレームに対する承認）である。ストア完了レスポンス・タイプ動作について、Ｑ０〜Ｑ６は、ストア完了タグを表し、その一方で、フェッチ完了レスポンス・タイプ動作について、Ｑ０〜Ｑ６は、フェッチ・データと関連付けられたデータ・タグを表す。動作が注意（ＡＴＴＮ）レスポンスであるとき、１つまたは両方のコマンド・キュー・タグ・フィールドは、リカバリおよびステータス・エラー情報をホストに伝えて戻すために過負荷になる可能性がある。レスポンス・タイプ・フィールドＲ０〜Ｒ１、コマンド・キュー・フィールドＱ０〜Ｑ６、およびフレーム・オフセット・フィールドＤ０〜Ｄ１は、２つの動作フィールド（ｏｐ１およびｏｐ２）を有し、第２の動作（ｏｐ２）のためのフィールドは、第１の動作（ｏｐ１）のためのフィールドと同じ定義を有する。帯域幅を最適化するために、完了情報は、一度に２つの動作に対して送信されることが可能である。Ｏｐ２は、フレームあたりの２つの動作レスポンス（すなわち、１つのストア完了動作および１つのフェッチ完了動作、２つのストア完了動作、または２つのフェッチ完了動作）をＡＣがリターンできるようにするために使用される。エラー条件をレポートするときにＡＣチップによってホストに送信されるレスポンス・フレームは、図７とは異なる。
【００５３】
一定の実施形態において分散メモリ・バッファ・システムを含むメモリ・システムの動作のさらなる詳細が説明されることになる。図８は、本開示の一実施形態による、分散バッファ・メモリ・システムを含む、メモリ・システムにデータを格納する方法を示し、説明する、一実施形態による例示的な流れ図である。便宜上、格納方法８００が説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図８について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、１つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
【００５４】
８０５において、ホスト（例えば、プロセッサ、メモリ・コントローラ）は、例えば図４におけるリンク４６０といった第１の通信リンクを介して、例えばＡＣチップ４３０といったメモリ制御回路に、ホスト・タグ・プールから、ストア・データ・タグまたはホスト・タグと共にストア・コマンドを送信する。参照を容易にするために、メモリ制御回路は、本議論において、および図８において、ＡＣ回路またはＡＣチップと呼ばれることがある。ホスト・タグ・プールからのストア・データ・タグまたはホスト・タグは、ホストのストア・コマンドと相関させ、識別する。処理の後の方で、ストア動作が完了し、動作が完了したことをホストに知らせるレスポンスがＡＣチップからホストに送り返されるとき、このタグは、このレスポンスの一部であるので、ホストは、どの動作が完了したかを知る。図５において、アドレス（データが格納されることになるＤＲＡＭにおける位置）は、ビットＡ０〜Ａ３８として送信され、その一方で、動作を追跡するタグは、Ｑ０〜Ｑ６である。
【００５５】
８１０において、ホストは、格納されることになるデータを、例えばＤＣチップといったデータ・バッファ回路に、例えば、図４におけるリンク４６５といった、異なる第２の通信リンクを介して送信する。一実施形態において、例えばアドレス・タグといった制御信号は、ホストとデータ・バッファ回路との間の通信リンクで送信されない。データ（およびＣＲＣ）だけが、本実施形態において、ホストとデータ・バッファ回路との間の通信リンク（例えば、図４におけるリンク４６５）で送信される。データ・バッファ回路またはＤＣ回路に格納されることになるデータは、構成可能な（またはプログラム可能な）遅延の後、ＤＣ回路に送信されることが可能である。遅延は、構成可能またはプログラム可能な固定された遅延であることが可能である。リンク４６５でアドレス・タグを送信しないことによって、データを伝送するリンク４６５の効率性または能力は、向上される可能性がある。参照を容易にするために、データ・バッファ回路は、本議論において、および図８において、ＤＣ回路またはＤＣチップと呼ばれることがある。
【００５６】
ＡＣ回路４３０およびＤＣ回路４４０は、両方、一実施形態において、８１５において参照されるように、同じ順序で同じタグを収める、例えばローカルなストア・タグＦＩＦＯといった、別々のステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ４３５、４４５を保持することができる。本明細書において使用されるように、ＡＣ回路およびＤＣ回路のローカルなアドレス・シーケンサ４３５、４４５からのローカルなストア・データ・タグは、データが格納される可能性のあるデータ・バッファ回路内の位置またはアドレスへの参照である。ステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサは、バッファ（例えばデータ・バッファ回路）アドレスの位置を指すか、識別するタグのプールを有し、ステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサは、タグまたはアドレスあるいはその両方の追跡を続ける。ＡＣ回路およびＤＣ回路のローカルなアドレス・シーケンサ４３５、４４５は、好ましくは同期され、ＦＩＦＯを制御するステート・マシンが同期されるので、自動的であること、および同期されることが可能である。
【００５７】
８２０において、ＡＣ回路４３０は、ホストのストア・コマンドを受信すると、例えばローカルなストア・タグＦＩＦＯといったＡＣ回路４３０のアドレス・シーケンサ４３５から、ローカルなストア・データ・タグを取得するか、取り出す。８２５において、ＡＣチップは、例えばローカルなストア・データ・タグＦＩＦＯといったＡＣチップのアドレス・シーケンサ４３５によって指し示された、ローカルなストア・データ・タグ（例えば、データがバッファされることになるＤＣチップ上の位置）にホストのストア・データ・タグを関連付けること、例えばマッピングすることを行い、インデックスまたはマッピング・テーブル４３６に情報を格納する。マッピング・テーブル４３６は、ＡＣチップのアドレス・シーケンサ４３５からプルされたローカルなストア・データ・アドレス・タグをストア・データ・タグと関連付けること、または相関させること、あるいはその両方を行うテーブルである。ＡＣ回路は、８３０において、ホストのストア・コマンドを、ライト・ツー・バッファ（「ライト・バッファ」）コマンドおよびストア・フロム・バッファ（「ストア・バッファ」）コマンドに、デコード、加工、または分解、あるいはその組合せを行う。８３５において、ＡＣ回路４３０は、例えば、図４におけるリンク４７０といった、第３の異なる通信リンクを介して、ライト・ツー・バッファ・コマンドをＤＣ回路４４０に送信する。一実施形態において、データ・バッファ回路４４０においてどこにデータを書き込むべきかを指定する、例えばローカルなストア・タグといった、制御信号は、ＤＣ回路４４０に送信されない。より具体的には、ＡＣ回路４３０は、例えば、図４におけるリンク４７０といった、第３の通信リンクで、ストア・データ・タグをＤＣ回路４４０に送信しない。ＡＣ回路は、次に、ストア・データ・タグ（ストア・データが保持されるバッファの位置）と共にストア・フロム・バッファ・コマンドを、スケジューラにおけるストア・コマンド・バッファにプッシュすることになる。すなわち、ストア・フロム・バッファ・コマンドは、このコマンドがスケジューラによって後でスケジュールされることを可能にするべく、ＡＣローカルなストア・タグにおけるストア・コマンド・バッファにプッシュされる（例えば、図８のフローチャートにおける８５０を参照）。
【００５８】
８４０において、ＤＣ回路は、例えば、図４におけるリンク４７０といった第３の通信リンクからライト・ツー・バッファ・コマンドを受信すると、例えば、ローカルなストア・タグＦＩＦＯといった、ＤＣ回路のローカルなアドレス・シーケンサ４４５からローカルなストア・データ・タグを取得すること、生成すること、または取り出すこと、あるいはその組合せを行う。ＤＣ回路のローカルなアドレス・シーケンサ４４５は、ＡＣ回路のローカルなアドレス・シーケンサ４３５と同期されて、ローカルなストア・データ・タグが、ＤＣ回路における同じ位置を指し示すようになるのが好ましい。ライト・ツー・バッファ・コマンドを受信することに応答して、８４５において、ＤＣ回路４４０は、例えば、ローカルなストア・タグＦＩＦＯといった、ＤＣ回路４４０のローカルなアドレス・シーケンサ４４５から取得すること、生成すること、または取り出すこと、あるいはその組合せが行われたストア・データ・タグによって指し示されたデータ・バッファに、例えば、図４におけるリンク４６５といった、第２の通信リンクから入って来た格納されることになるデータをプッシュする。ＤＣ回路４４０は、構成可能な（またはプログラム可能な）遅延の後、ＤＣ回路４４０のバッファにデータをプッシュすることができる。
【００５９】
８５０において、ＡＣ回路４３０は、ストア・フロム・バッファ・コマンドをスケジュールし、例えば、図４におけるリンク４８０といった第４の通信リンクを介して、１つまたは複数のメモリ・デバイス４５０にストア・コマンドを送信する。ストア・コマンドは、ストア・コマンド、およびメモリ・デバイス内のどこにデータが格納されることになるかについてのアドレス位置、を含むことができる。このストア・コマンドは、別々のライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに、以前にデコードまたは分解されたホストのストア・コマンドと同種のものである。一実施形態において、これは、ストア・コマンド、および、メモリ・デバイスにデータが格納されることになるアドレス・タグまたは位置、を含むＤＤＲ４ストア動作であることが可能である。ＡＣ回路４３０は、８５５において、例えば、図４におけるリンク４７０といった第３の通信リンクを介して、ストア・データ・タグと共にストア・フロム・バッファ・コマンドも、ＤＣ回路４４０に送信する。ＤＣ回路に送信されたストア・データ・タグは、メモリ・デバイスに格納されることになるデータが、ＤＣ回路内のどこにあるかをＤＣ回路に知らせるローカルなタグである。８６０において、ＤＣ回路４４０は、例えば、図４におけるリンク４７０といった第３の通信リンクを介して、ＡＣ回路４３０から受信されたストア・データ・タグによって指し示されたデータ・バッファから、格納されることになるデータをプルする。８６５において、ＤＣ回路４４０は、例えば、図４におけるリンク４９０といった第５の通信リンクを介して、格納されることになるデータをメモリ・デバイス４５０に送信する。メモリ・デバイスの視点からは、メモリ・デバイスは、ＡＣ回路とＤＣ回路の組合せから、一実施形態においてＤＤＲ４ストア動作である、ストア動作を見る。
【００６０】
８７０において、ＤＣ回路４４０は、例えば、ＤＣ回路４４０のローカルなストア・タグＦＩＦＯといった、ＤＣ回路４４０のアドレス・シーケンサ４４５にストア・データ・タグをプッシュして戻す。ＡＣ回路４３０は、ＡＣ回路４３０のローカルなストア・データ・タグをマッピング・テーブルへのインデックスとして使用し、８７５において、ＡＣ回路のマッピング・テーブル４３６からホストのストア・データ・タグを検索する。８８０において、ＡＣ回路４３０は、例えば、ＡＣチップのローカルなストア・タグＦＩＦＯといった、ＡＣ回路４３０のアドレス・シーケンサ４３５に、ＡＣ回路４３０のローカルなストア・データ・タグをプッシュして戻す。８８５において、ＡＣ回路４３０は、例えば、図４におけるリンク４６０といった第１の通信リンクを介して、ホストのストア・データ・タグをホストにリターンする。ホスト・タグのリターンは、このタグと関連付けられた動作またはコマンドが完了したことを示す。また、８９０において、ホストは、ホスト・タグ・プールにストア・データ・タグをリターンして戻す。図８は、一連のステップとして方法を開示し、説明するが、上述の順序、および図８における順序は変更されることが可能であるということが理解されよう。
【００６１】
メモリ・システムにデータを格納するシステム、アーキテクチャ、および方法の一態様において、メモリ制御回路は、リモート・アドレス・シーケンサを使用して、データ・バッファ回路のライト・バッファ内のどこに次のストア動作のためのデータを書き込むべきかについての追跡を続ける。同期されたステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサを使用して、例えばバッファ・アドレスといった、データ・バッファ回路内のどこにデータが書き込まれるべきかを追跡することは、ホストとＤＣチップとの間のデータ・リンクの効率性、および、ＡＣチップとＤＣチップとの間のリンクの効率性を改善するはずである。図９は、ＡＣ回路が制御するアドレス・シーケンサを伴う分散メモリ・バッファ・システムが、リモート・シーケンサを使用して、例えばＤＣチップといったデータ・バッファ回路のライト・バッファ内のどこに次の動作のためのデータを書き込むべきかについての追跡を、どのように続けることができるかについての方法を示し、説明する例示的なフローチャートを示す。図９の方法は、ＡＣチップおよびＤＣチップの、マッピング・テーブル、および、例えば、ローカルなストア・タグＦＩＦＯといった、ステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ４３５、４４５を示す図１０に関して説明される。方法９００は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図９について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、１つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
【００６２】
図９の例示的な方法において、９０５において、ストア・データ・タグと共にストア・コマンドを、ホスト４０２は送信し、メモリ制御回路４３０は受信する。ストア・データ・タグは、ホスト・タグ・プール４０６からホストが取得すること、生成すること、または取り出すことを行ったホストのストア・データ・タグであることが可能である。参照を容易にするために、図９および図１０におけるメモリ制御回路は、代替として、ＡＣ回路またはＡＣチップと呼ばれることがある。図１０において示された例において、ホスト４０２は、ホスト・タグ・プール４０６からストア・データ・タグ「Ｇ」を得る。ストア・データ・タグは、ホストのストア・コマンドを相関させ、識別する。ストア・コマンドは、データを格納することになるメモリ・デバイス内の位置を識別し、図５において、ビットＡ０〜Ａ３８は、データを格納することになるメモリ・デバイス内の位置であるが、その一方で、ビットＱ０〜Ｑ６は、コマンドを識別するために使用されるホスト・タグである。ストア・コマンドを受信すると、ＡＣ回路は、図９における９１０において、ＡＣ回路のローカルなアドレス・シーケンサから次のタグを取得するか、取り出す。図１０の例において、ＡＣ回路４３０が、例えば、ローカルなストア・タグＦＩＦＯ４３５といった、ＡＣ回路４３０のローカルなアドレス・シーケンサから取り出す次のタグは、タグ＃２９である。
【００６３】
ＡＣ回路は、図９における９１５において、例えば、ローカルなストア・データ・タグといった、ＡＣ回路のアドレス・シーケンサ４３５から取得されたローカルなタグと、ストア・フロム・バッファ・コマンドを関連付け、ホスト・タグ・プールから受信されたストア・データ・タグに、例えば、ローカルなストア・データ・タグといった、ＡＣ回路のアドレス・シーケンサからのタグをマッピングし、図１０に示されるようなマッピング・テーブル４３６に情報（例えば、関係、関連付け）を格納する。このように、ローカルなストア・データ・タグは、ホストから受信されたコマンドおよびストア・データ・タグと関連付けられる。図１０の例において、ＡＣ回路のアドレス・シーケンサ４３５からの次のタグは、タグ＃２９であり、ローカルなストア・データ・タグ＃２９は、ストア・データ・タグ＃２９がホスト・タグＧと関連付けられるように、ホストのストア・データ・タグＧにマッピングされる。
【００６４】
ＡＣ回路は、図９における９２０において、図１０において示された、例えば、ローカルなストア・タグＦＩＦＯ４４５といった、ＤＣ回路４４０のローカルなアドレス・シーケンサから次のタグを取得するか、取り出すために、ライト・ツー・バッファ・コマンドをＤＣ回路４４０に送信して、ＤＣ回路４４０に知らせる。図９における９２５において、ＤＣ回路は、例えば、ローカルなストア・タグＦＩＦＯ４４５といった、ＤＣ回路のローカルなアドレス・シーケンサから次のタグを加工すること、取得すること、または取り出すことを行い、ＤＣ回路のローカルなアドレス・シーケンサ４４５によって指し示されたデータ・バッファの位置にホスト４０２からのデータを格納する。図１０の例において、ＤＣ回路は、例えば、ＤＣ回路のローカルなストア・タグＦＩＦＯといった、ＤＣ回路のローカルなアドレス・シーケンサ４４５からタグ＃２９を取得し、タグ＃２９と相関関係があるデータ・バッファの位置にホストからのデータを格納する。ＡＣ回路４３０のローカルなアドレス・シーケンサ４３５は、例えばメモリ・バッファといった、ＤＣ回路における同じアドレス／位置をシーケンサが指し示すように、ＤＣ回路４４０のローカルなアドレス・シーケンサ４４５と同期されるはずである。
【００６５】
図１０において示されたＡＣ回路のスケジューラ４４８は、図９における９３０において、ＡＣ回路のマッピング・テーブルにおける関連付けられたローカルなストア・タグと共にストア・コマンドを、メモリ・デバイスに発行する。図９および図１０の例において、ＡＣ回路４３０は、タグ＃２９と関連付けられたストア・コマンドを、図４におけるメモリ・デバイス４５０に送信する。ＡＣ回路は、コマンド（フェッチまたはストア）をメモリ・デバイスに、およびメモリ・アドレス（図５におけるＡ０〜Ａ３８）をメモリ・デバイスに、送信する。ＡＣ回路は、図９における９３５において、ローカルなストア・データ・タグと共にストア・フロム・バッファ・コマンドをＤＣ回路に送信する。図１０の例において、ＡＣ回路のスケジューラ４３８は、タグ＃２９と関連付けられたストア・フロム・バッファ・コマンドをＤＣ回路４４０に発行する。図９における９４０において、ＤＣ回路は、ＡＣ回路から受信されたローカルなストア・タグを使用してバッファの位置からデータを検索する。図１０の例において、ＤＣ回路４４０は、ＡＣ回路４３０から受信されたローカルなタグ＃２９を使用してバッファの位置＃２９からデータを検索する。
【００６６】
ＤＣ回路は、図９における９４５おいて、データをメモリ・デバイスに格納する。図１０の例において、ＤＣ回路４４０は、ホストのストア・コマンドによって元々識別されていた位置（図５におけるビットＡ０〜Ａ３８によって識別される位置またはアドレス）に、メモリ・デバイス（例えば、図４におけるメモリ・デバイス４５０）へのデータを格納する。ＤＣ回路４４０は、図９における９５０において、例えばローカルなストア・タグＦＩＦＯといった、ＤＣ回路４４０のアドレス・シーケンサにローカルなタグをプッシュして戻す。図１０の例において、ＤＣ回路４４０は、ＤＣ回路４４０のローカルなストア・タグＦＩＦＯ４４５にタグ＃２９をプッシュして戻すか、リターンする。図９における９５５において、ＡＣ回路４３０は、ローカルなストア・タグをインデックスとして使用することによって、ＡＣ回路４３０のマッピング・テーブル４３６からホスト・タグを検索し、９５５において、ホストのストア・データ・タグをホストにリターンする。図１０の例において、ＡＣ回路は、タグ＃２９をインデックスとして使用することによって、ＡＣ回路のマッピング・テーブル４３６からホスト・タグＧを検索し、ホストのストア・データ・タグＧをホストにリターンする。図９における９６０において、ＡＣ回路４３０は、ＡＣ回路４３０のローカルなストア・データ・タグを、ＡＣ回路４３０のローカルなアドレス・シーケンサにプッシュして戻す。図１０の例において、ＡＣ回路４３０は、ＡＣ回路４３０のローカルなストア・データ・タグ＃２９を、ローカルなストア・タグＦＩＦＯ４３５にプッシュするか、リターンして戻す。ホストは、図９における９６５において、ホストのストア・データ・タグをホスト・タグ・プールにリターンして戻す。図１０の例において、ホスト４０２は、ホストのストア・データ・タグＧをホスト・タグ・プール４０６にリターンして戻す。
【００６７】
メモリ・システムにデータを格納する一実施形態による代替方法が、図１１において示される。方法１１００は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図１１について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、１つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
【００６８】
図１１の例示的な方法において、１１０５において、ホストは、ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに分解する。１１１０において、例えば、図４におけるリンク４６５といった、ホストとＤＣ回路との間の通信リンクで、ストア・データおよびライト・ツー・バッファ・コマンドを、ホストは送信し、ＤＣチップは受信する。１１１５において、ＡＣチップとＤＣチップは両方、同期され、同じ順序で同じタグを収める、別々のローカルなステート・マシン・ドリブンのアドレス・ポインタまたはローカルなアドレス・シーケンサ（例えば、ローカルなストア・タグＦＩＦＯ）を保持する。本実施形態において、ローカルなストア・タグは、例えば、ＤＣ回路内のアドレスまたは位置といった、メモリ・データ・バッファ回路内の位置を識別する。１１２０において、例えば、図４におけるリンク４６０といった、ホストとＡＣ回路との間の通信リンクを介して、ホスト・プールからのストア・データ・タグ（例えば、ホスト・タグ）と共にストア・コマンドを、ホストは送信し、ＡＣ回路は受信する。
【００６９】
１１２５において、ＡＣ回路は、ホストのストア・データ・コマンドを受信すると、ＡＣ回路のローカルなアドレス・シーケンサ（例えば、ＡＣのストア・タグＦＩＦＯ）からローカルなストア・データ・タグを取得する。ＡＣ回路は、１１３０において、ＡＣローカルなアドレス・シーケンサから受信または取得されたＡＣローカルなストア・データ・タグにホストのストア・データ・タグを関連付けるか、マッピングし、マッピング・テーブルに関連付けを格納する。１１３５において、ＡＣ回路は、ホストのストア・コマンドをストア・フロム・バッファ・コマンドにデコードする。本実施形態において、ホストからＤＣ回路にライト・ツー・バッファ・コマンドが直接的に送信されるので、ＡＣ回路は、ライト・ツー・バッファ・コマンドをＤＣ回路に送信する必要はない。１１４０において、ＡＣ回路は、（バッファ・メモリまたはＤＣ回路におけるアドレス位置に対応し、アドレス位置を識別する）ＡＣ回路のローカルなアドレス・シーケンサから受信されたローカルなストア・データと共にストア・フロム・バッファ・コマンドを、ＡＣ回路のスケジューラにおけるストア・コマンド・バッファにプッシュする。１１４５において、ＤＣ回路４４０は、ライト・ツー・バッファ・コマンドを受信すると、例えば、ローカルなストア・タグＦＩＦＯといった、ＤＣ回路４４０のアドレス・シーケンサ４４５からローカルなストア・データ・タグを取得するか、取り出し、１１５０において、ＤＣ回路４４０のローカルなアドレス・シーケンサから取得されたストア・データ・タグによって指し示されたデータ・バッファにストア・データを格納する。
【００７０】
図１１におけるデータを格納する処理は、図８におけるブロック８５０からブロック８９０において示され、上述された動作で継続する。データを格納する本実施形態において、ＡＣ回路４３０は、ホストのストア・コマンドをストア・フロム・バッファ・コマンドにデコードする。ＤＣ回路（バッファ・メモリ）内のどこにデータを格納するべきかをＤＣ回路が知っているので、ＡＣ回路４３０は、ライト・ツー・バッファ・コマンドをＤＣ回路４４０に送信する必要はもはやない。本実施形態において、ＡＣ回路４３０とＤＣ回路４４０との間のＢＣＯＭリンクの帯域幅は、ライト・ツー・バッファ・コマンドに利用されない。しかし、ホストとＤＣ回路との間のリンクの帯域幅は、データを移送するためだけに使用されない。図８および図９の方法におけるように、ＡＣ回路とＤＣ回路のローカルなタグＦＩＦＯを取り出すようにＡＣ回路がＤＣ回路に命令する代わりに、ＡＣ回路とＤＣ回路のローカルなタグＦＩＦＯを取り出すようにホストがＤＣ回路に命じる。
【００７１】
同期されたステート・マシンを使用して、データが書き込まれるべきバッファ・アドレスを格納するアドレス・ポインタを追跡することは、ホストとＤＣチップとの間、およびＡＣチップとＤＣチップとの間のデータ・リンクの効率性を改善するが、信頼性問題を作り出す可能性もある。例えばローカルなストア・タグＦＩＦＯなどの、例えばアドレス・シーケンサといった、ステート・マシン・ドリブンのアドレス・ポインタが同期しなくなる場合、データ・バッファ回路は、メモリ・デバイス内の、メモリ制御回路（ＡＣチップ）がデータを格納するように命じることになる場所とは異なるアドレスにストア・データを連続的に書き込むことになる。これが発生すると、例えばアドレス・シーケンサといったステート・マシンのうちの１つが同期していないことを検出する方式はなく、エラーは、読み取り動作からＥＣＣエラー（が検出される）まで気づかれないままである可能性がある。例えば、同期されていないステート・マシンによって以前に格納された位置といった、欠陥データと関連付けられたアドレスに対して読み取り動作が行われるとき、ＥＣＣは、悪化するであろう。
【００７２】
同期が外れることによる、メモリ制御回路（ＡＣチップ）およびデータ・バッファ回路（ＤＣチップ）の、例えばローカルなストア・タグＦＩＦＯといった、アドレス・シーケンサのリスクを低減するために、周期的タグ・チェックおよび再同期処理が実行されることが可能である。一実施形態において、メモリ制御回路（ＡＣ回路）は、ＢＣＯＭリンクの非稼働サイクル中に、次に使用されることになるストア・データ・タグをデータ・バッファ回路（ＤＣチップ）に送信すること、または、代替実施形態において、データ・バッファ回路すなわちＤＣチップは、次に使用されることになるストア・データ・タグをホストに送信すること、あるいは両方を行うことができる。両方の処理が、下記においてより詳細に説明される。
【００７３】
メモリ制御回路およびデータ・バッファ回路のステート・マシン・ドリブンのアドレス・ポインタが同期していないかどうかをチェックする１つの方法が、図１２におけるフローチャートにおいて図式的に示される。図１２における方法１２００は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図１２について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、１つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
【００７４】
図１２における１２０５において、ＤＣチップの全ては、ＤＣチップのローカルなアドレス・シーケンサからの、ＤＣチップの「次に書き込まれることになるアドレス」をホストに送信する。例えば、図４におけるＤＣチップ４４０は、第２のリンク４６５を介して、例えば、図１０におけるローカルなストア・タグＦＩＦＯ４４５といった、ＤＣチップ４４０のローカルなアドレス・シーケンサからの、例えばローカルなストア・データ・タグといった、ＤＣチップ４４０の、次に書き込まれることになるアドレスを、ホストに送信することができる。図１２における１２１０において、各ＤＣチップ４４０から受信されたタグは、好ましくはホストによって比較される。ＤＣチップからのタグのいずれかが異なる場合、１２１５において、システムがリカバリ・モードに入ることになるように、リンク４６０を介して、好ましくはホストによって、ＡＣチップ４３０にリカバリ・コマンドが発行されることが可能である。リカバリの一部として、図１２における１２２０において、ＡＣチップ４３０は、リンク４７０を介して、ＤＣチップ４４０をリセットすることができる。システムは、ホストへのリンクが非稼働であるとき、または、設定された頻度もしくは時間期間に応じて、チェックが以前に発生しなかった場合、ＡＣチップのローカルなアドレス・シーケンサとＤＣチップのローカルなアドレス・シーケンサとの同期を周期的にチェックする処理を受けることが可能である。メモリ制御回路（ＡＣチップ）が、システムに対する、例えばアドレス・シーケンサといったアドレス・ポインタを制御しているときに、ホストは、データ・バッファ回路（ＤＣチップ）が正しいアドレス・タグを送信しているかどうかを知らないということに留意されたい。ホストは、ＤＣチップが全て同じ次に書き込まれることになるアドレスをレポートしないということから、エラーが発生したということを検出するにすぎない。ホストは、データ・バッファ回路（ＤＣチップ）の状態レジスタを読み、どこでエラーが発生したか、エラーは何であったかを確認することができる。しかし、同期していないアドレス・シーケンサ（ポインタ）を２つ以上のＤＣチップが有することになるという可能性は非常に低いので、状態レジスタに問い合わせなくても、どのＤＣチップがエラーを得たものをホストが区分けすることができる可能性がある。
【００７５】
リカバリ・モードは、以下のアクションの１つまたは複数を含むことができる。例えば、プロセッサまたはホスト・メモリ・コントローラといった、ホストは、メモリ・チャネルで新しい動作を送出するのを停止することができ、ホストは、未完了の全てのストア動作をフラッシュすること、または、ホストは、全てのフェッチ動作が完了するのを待つこと、あるいは両方を行うことができる。例えば、データ・キューが排出される可能性がある、レーンが割愛される可能性がある、など、妥当なアクションが行われる可能性がある。アクションは、頻繁なエラーを得ている場合、欠陥のあるＤＣチップを除去すること、または割愛することを含むことができる。これらのアクションのうちのいくつかは、典型的には、メモリ・システム上の非本線モードに入る必要がある。ホストは、メモリ制御回路（ＡＣチップ）とデータ・バッファ回路（ＤＣチップ）の全てに、ＡＣチップとＤＣチップのステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサを再初期化させる、ステート・マシン・リセット動作を発行することもできる。ＡＣチップは、リンク４７０を介してコマンドを送信することによって、ＤＣチップローカルなアドレス・シーケンサをリセットすることができる。好ましい実施形態において、このようなアクションは、非本線動作になるであろう。妥当なアクションを行った後、システムおよびホストは、メモリ・チャネルでコマンドを発行することを再開することができる。
【００７６】
メモリ制御回路（ＡＣチップ）およびデータ・バッファ回路（ＤＣチップ）のローカルなアドレス・シーケンサが同期していないかどうかをチェックする代替方法が、図１３のフローチャートにおいて示される。図１３における方法１３００は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図１３について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、１つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
【００７７】
ローカルなアドレス・シーケンサが同期しているかどうかをチェックする方法は、是正措置を受けることを含むこともできる。一実施形態において、是正措置は、ＡＣチップが周期的同期コマンドをＤＣチップに送信することを含むことができる。一実施形態において、ＡＣチップは、ＢＣＯＭリンク４７０が非稼働であるかどうかをチェックすることができる。代替として、またはこれらに加えて、一定時間またはいくつかの動作の後にローカルなアドレス・シーケンサがチェックされない場合、システムは、それでも、図１３について下記において説明されるような、一実施形態による同期チェックを受けることが可能である。通信リンク４７０が完全に利用されるシステムにおいて、プログラム可能な時間の後、ＡＣチップ４３０の、次に使用されることになるタグを、ＡＣチップ４３０が送信するための非稼働サイクルが見つからない場合、ＡＣチップ４３０は、システムが同期チェックを受けることができるように、リンク４７０を介して、次に使用されることになるストア・データ・タグをＤＣチップ４４０の全てにＡＣチップ４３０が送信した後、ＡＣチップ４３０のスケジューラ４３８に信号を送って休止する。図１３における１３０５において、メモリ制御回路（ＡＣチップ）は、例えば、ＡＣチップのローカルなストア・タグＦＩＦＯといった、ＡＣチップのローカルなアドレス・シーケンサからの次に書き込まれることになるアドレス（タグ）を、データ・バッファ回路（ＤＣチップ）に送信することができる。１つの例において、ＡＣチップ４３０は、ＢＣＯＭバス（リンク４７０）で、ＡＣチップ４３０のローカルなストア・タグＦＩＦＯ４３５からの、ＡＣチップ４３０の、次に書き込まれることになるアドレス・タグを、ＤＣチップ４４０に送信することができる。図１３における１３１０において、各ＤＣチップ４４０は、例えば、ＤＣチップ４４０のローカルなストア・データ・タグＦＩＦＯ４４５といった、ＤＣチップ４４０のローカルなアドレス・シーケンサからの、ＤＣチップ４４０の、次に書き込まれることになるアドレス（タグ）を、ＡＣチップ４３０によって送信されたタグと比較し、ＤＣチップのアドレス・ポインタ（アドレス・シーケンサ）が正しいことをチェックする。ＤＣチップ４４０のうちの１つが、エラーになった場合、図１３における１３１５において、ＤＣチップ４４０は、リンク４７５で、ＡＴＴＮ信号によってＡＣチップ４３０に通知する。
【００７８】
このＡＴＴＮ信号は、これが有線の論理和信号なので、どのＤＣチップがエラーを得たかについての情報を提供しない。図１３における１３２０において、ＡＣチップ４３０は、次に、リンク４６０を介して、エラーＡＴＴＮ信号をホストに送信する。ホストは、次に、リカバリ・モードに入ることができる。注意信号を受信すると、ホストは、図１３における１３２５において、リンク４６０を介して、リカバリ・コマンドをＡＣチップ４３０に発行することができる。しかし、ホストは、アドレス・シーケンサ（アドレス・ポインタ）からの次のアドレスをホストにＤＣチップが単純に送信したときのように、何が誤っているのか、およびどこなのかということを、もはや知らない。システムは、リカバリ・モードに入ることができ、これによって、ホストは、メモリ・チャネルで新しい動作を送出するのを停止すること、および全ての未完了動作をフラッシュすることができる。フェッチ動作およびストア動作は、何が誤っているのか、またはどこなのかをホストが知らないので、フラッシュされるはずである。システムは、非本線動作に入ることができる。ホストは、ＤＣチップのレジスタから状態レジスタを読み、どこで、および、どのエラーが発生したかを確認することができる。今や、ホストは、何が誤っているのか、およびどこなのかを知っているので、ホストは、おそらく、アクションを行うことができる。アクションは、頻繁なエラーを得ている場合、欠陥のあるＤＣチップを割愛することであることが可能である。アクションは、例えばアドレス・シーケンサといった、ＡＣチップとＤＣチップのステート・マシン・ドリブンのアドレス・ポインタを、ＡＣチップとＤＣチップの全てに再初期化させるステート・マシン・リセット動作を発行することをさらに含むことができる。ＡＣチップは、図１３における１３３０において、リンク４７０を介して、ＤＣチップ４４０をリセットすることができる。妥当なアクションの後、システムは、非本線モードを出て、メモリ・チャネルでコマンドを発行することを再開することができる。
【００７９】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであることが可能である。コンピュータ・プログラム製品は、本発明の態様をプロセッサに行わせるための、コンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（または複数の媒体）を含むことができる。
【００８０】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述のいずれかの適切な組合せであることが可能であるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されたパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述のいずれかの適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書において使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通じて伝送される電気信号など、それ自体が一過性の信号であると解釈されるべきではない。
【００８１】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング・デバイス／処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング・デバイス／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個々のコンピューティング・デバイス／処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【００８２】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語、もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであることが可能である。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行することができ、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）、もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、または、接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータに対して行われることが可能である。いくつかの実施形態において、例えば、プログラム可能論理回路機器、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路機器は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化にすることによって、コンピュータ可読プログラム命令を実行することができる。
【００８３】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、およびフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行されることが可能であるということが理解されよう。
【００８４】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／行為を実行するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または機械を生み出す他のプログラム可能データ処理装置のプロセッサに提供されることが可能である。特定の手法で機能することを、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指図することができるこれらのコンピュータ可読プログラム命令は、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／行為の態様を実行する命令を含む製品を、命令が格納されたコンピュータ可読ストレージ媒体が含むべく、コンピュータ可読ストレージ媒体に格納されることも可能である。
【００８５】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／行為を実行するべく、コンピュータ実行処理を生み出すコンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップが行われるようにするために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされることも可能である。
【００８６】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の中の各ブロックは、指定された論理機能を実行するための１つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表現することができる。いくつかの代替実装形態において、ブロックに記された機能は、図に記された順序とは異なる順序で発生することが可能である。例えば、連続して示された２つのブロックは、実質的に並行して実行されることが可能であり、またはブロックは、含まれる機能に応じて逆の順序で時には実行されることが可能である。ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能または行為を行うか、専用ハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実行されることが可能であるということにも留意されたい。
【００８７】
その上、様々な実施形態によるシステムは、プロセッサ、およびプロセッサと統合された、またはプロセッサによって実行可能な、あるいはその両方のロジックを含むことができ、ロジックは、本明細書において列挙される処理ステップの１つまたは複数を行うように構成される。統合されることが意味することは、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、などのハードウェア・ロジックとして、プロセッサがロジックを埋め込んでいるということである。プロセッサによって実行可能であることが意味することは、ロジックが、ハードウェア・ロジックであるか、または、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部、などのソフトウェア・ロジックであるか、または、プロセッサによってアクセス可能であり、プロセッサによって実行されると、いくつかの機能をプロセッサに行わせるように構成された、ハードウェアとソフトウェア・ロジックの何らかの組合せである、ということである。ソフトウェア・ロジックは、当技術分野で知られているような、任意のメモリ・タイプのローカル・メモリまたはリモート・メモリあるいはその両方に格納されることが可能である。ソフトウェア・プロセッサ・モジュール、またはＡＳＩＣ、ＦＰＧＡ、中央処理装置（ＣＰＵ）、集積回路（ＩＣ）、グラフィックス処理ユニット（ＧＰＵ）、などのハードウェア・プロセッサ、あるいはその両方など、当技術分野で知られた任意のプロセッサが使用されることが可能である。
【００８８】
前述のシステムまたは方法あるいはその両方の様々な特徴は、上記において提示された説明から複数の組合せを作り出すいずれかの方式で組み合わされることが可能であるということが明らかであろう。
【００８９】
本発明の実施形態は、オンデマンドでサービスを提供するために、顧客の代わりに展開されたサービスの形態で提供されることが可能であるということがさらに認識されよう。
【００９０】
本発明の様々な実施形態の説明が例証のために提示されてきたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正および変更が当業者には明らかであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な用途、もしくは市場において見つかる技術に対する技術的改良、を最も良く説明するように、または、本明細書において開示された実施形態を当業者が理解できるように、選ばれた。
【図１】
2021504842.tif 000003
【図２】
2021504842.tif 000004
【図３】
2021504842.tif 000005
【図４】
2021504842.tif 000006
【図５】
2021504842.tif 000007
【図６】
2021504842.tif 000008
【図７】
2021504842.tif 000009
【図８】
2021504842.tif 000010
【図９】
2021504842.tif 000011
【図１０】
2021504842.tif 000012
【図１１】
2021504842.tif 000013
【図１２】
2021504842.tif 000014
【図１３】
2021504842.tif 000015
【手続補正書】
【提出日】令和2年6月3日(2020.6.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コマンドがホストから受信されるのに応答してデータを格納するためのメモリ・システムであって、
前記ホストからコマンドを受信し、コマンドおよび制御信号を出力するためのメモリ制御回路と、
データを格納し、前記メモリ制御回路からコマンド信号を受信するように構成された少なくとも１つのメモリ・デバイスと、
前記少なくとも１つのメモリ・デバイスと関連付けられた少なくとも１つのデータ・バッファ回路と、
前記ホストと前記少なくとも１つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、
前記メモリ制御回路と前記少なくとも１つのデータ・バッファ回路との間の制御通信リンクと、
を備え、
前記メモリ制御回路が、
ストア・コマンドおよびストア・データ・タグを前記ホストから受信することに応答して、メモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
前記ホストのストア・データ・タグを前記メモリ制御回路のストア・データ・タグと関連付けること、ならびに
前記メモリ制御回路内のマッピング・テーブルに前記関連を格納すること
を行うように構成される、メモリ・システム。
【請求項２】
前記少なくとも１つのデータ・バッファ回路にデータを格納するための位置を指定するストア・データ・タグは、前記ホストと前記少なくとも１つのデータ・バッファ回路との間の前記データ通信リンクで、前記少なくとも１つのデータ・バッファ回路に送信されない、請求項１に記載のシステム。
【請求項３】
前記メモリ制御回路が、
前記ホストのストア・コマンドを受信することに応答して、前記ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、
前記制御通信リンクで、少なくとも１つのデータ・バッファ回路に前記ライト・ツー・バッファ・コマンドを送信するが、前記データ・バッファ回路に前記データを格納するための前記位置を指定するタグを前記データ・バッファ回路に送信しないことと
を行うようにさらに構成される、請求項２に記載のシステム。
【請求項４】
前記データ・バッファ回路が、前記データ・バッファ回路内のどこにストア動作のためのデータを書き込むかを追跡するための論理回路を含む、請求項３に記載のシステム。
【請求項５】
前記データ・バッファ回路が、
ライト・ツー・バッファ・コマンドを受信することに応答して、前記少なくとも１つのデータ・バッファ回路内の格納位置を指し示すデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
前記データ・バッファ回路のローカルなアドレス・シーケンサによって指し示されたデータ・バッファに、入って来たストア・データをプッシュすることと
を行うように構成される、請求項４に記載のシステム。
【請求項６】
前記メモリ制御回路が、前記メモリ制御回路のローカルなアドレス・シーケンサから受信された前記ローカルなストア・データ・タグと共に前記ストア・フロム・バッファ・コマンドを前記少なくとも１つのデータ・バッファ回路に、前記制御通信リンクで送信すること、および、前記少なくとも１つのメモリ・デバイスに前記ストア・コマンドを送信すること、を行うようにさらに構成される、請求項３に記載のシステム。
【請求項７】
前記少なくとも１つのデータ・バッファ回路が、前記制御通信リンクで前記メモリ制御回路から受信された前記ストア・データ・タグによって指し示された前記データ・バッファの位置からストア・データをプルすること、および前記少なくとも１つのメモリ・デバイスに前記ストア・データを送信すること、を前記少なくとも１つのデータ・バッファ回路に行わせるようにさらに構成される、請求項６に記載のシステム。
【請求項８】
前記メモリ制御回路が、論理回路を有し、ストア動作時にデータを書き込むための前記メモリ制御回路内の前記論理回路が、データを書き込むことになる前記少なくとも１つのデータ・バッファ回路の次のアドレス・タグの位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記少なくとも１つのデータ・バッファ回路が、データを書き込むことになる前記少なくとも１つのデータ・バッファ回路の前記次のアドレス・タグの位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記メモリ制御回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタが、前記少なくとも１つのデータ・バッファ回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される、請求項１に記載のシステム。
【請求項９】
前記メモリ制御回路のローカルなアドレス・シーケンサと前記少なくとも１つのデータ・バッファ回路のローカルなアドレス・シーケンサが両方、同じ順序で同じタグを収める、請求項８に記載のメモリ・システム。
【請求項１０】
前記メモリ制御回路が、前記少なくとも１つのデータ・バッファ回路にライト・ツー・バッファ・データ・タグを送信しない、請求項８に記載のメモリ・システム。
【請求項１１】
前記データ通信リンクが、前記ホストと前記少なくとも１つのデータ・バッファ回路との間、および、前記少なくとも１つのデータ・バッファ回路と前記少なくとも１つのメモリ・デバイスとの間の通信リンクを含み、データおよびＣＲＣだけが、前記少なくとも１つのデータ・バッファ回路と前記ホストとの間の前記通信リンクで伝送される、請求項８に記載のメモリ・システム。
【請求項１２】
少なくとも１つのモジュールをさらに備え、前記モジュールが、前記モジュール上の単一チップ上に形成された前記メモリ制御回路を有し、前記モジュール上の別々のチップ上に形成されたデータ・バッファ回路のグループ、および、前記モジュール上のチップとして形成され、グループに編成された複数のメモリ・デバイスを有し、前記メモリ制御回路が、データを書き込むことになる前記データ・バッファ回路の次のアドレス・タグの位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記データ・バッファ回路のそれぞれが、データを書き込むことになる前記データ・バッファ回路における前記次のアドレス・タグの位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記メモリ制御回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタが、前記データ・バッファ回路全ての前記ステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される、請求項１に記載のメモリ・システム。
【請求項１３】
メモリ・デバイスにデータを読み書きするためのメモリ・システムであって、
ホストからコマンドを受信し、コマンドおよび制御信号を出力するための少なくとも１つのメモリ制御回路であって、順番に並べられたローカルなストア・タグの位置を有するローカルなアドレス・シーケンサを有する、メモリ制御回路と、
データを読み込んで格納すること、および前記メモリ制御回路からコマンド信号を受信すること、を行うように構成された少なくとも１つのメモリ・デバイスと、
前記少なくとも１つのメモリ制御回路と関連付けられた少なくとも１つのデータ・バッファ回路であって、前記少なくとも１つのメモリ制御回路の前記ローカルなアドレス・シーケンサと同じ順番のローカルなストア・タグの位置を有するローカルなアドレス・シーケンサを有する、データ・バッファ回路と、
前記ホストと前記少なくとも１つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、
前記メモリ・システムの読み書き動作信号を伝送するための、前記少なくとも１つのメモリ制御回路と前記少なくとも１つのメモリ・デバイスと前記少なくとも１つのデータ・バッファ回路との間の制御通信リンクと
を備え、
前記少なくとも１つのメモリ制御回路が、
ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工すること、
ストア・コマンドを受信すると、前記少なくとも１つのメモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
前記少なくとも１つのデータ・バッファ回路に前記ライト・ツー・バッファ・コマンドを送信すること、
前記少なくとも１つのメモリ・デバイスに前記ストア・コマンドを送信すること、および
ストア・データ・タグと共に前記ストア・フロム・バッファ・コマンドを前記少なくとも１つのデータ・バッファ回路に送信すること、
を行うように構成され、
前記少なくとも１つのデータ・バッファ回路が、
前記ライト・ツー・バッファ・コマンドを受信すると、前記少なくとも１つのデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
前記少なくとも１つのデータ・バッファ回路の前記ローカルなアドレス・シーケンサによって取得された前記ローカルなストア・データ・タグによって指し示されたデータ・バッファに、入って来たストア・データを送信すること、
前記少なくとも１つのメモリ制御回路から受信されたストア・データ・タグによって指し示されたローカルなデータ・バッファからストア・データをプルすること、および
前記少なくとも１つのメモリ・デバイスにストア・データを送信すること、
を行うように構成される、メモリ・システム。
【請求項１４】
メモリ・デバイスにデータを格納するための方法であって、
ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
前記メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および前記関連付けられたタグをマッピング・テーブルに格納することと、
前記メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、
前記ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、
データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
前記データ・バッファ回路のローカルなアドレス・シーケンサから取得された前記ローカルなストア・データ・タグによって指し示された前記データ・バッファ回路内の位置に、入って来たデータをプッシュすることと
を含む、方法。
【請求項１５】
前記データ・バッファ回路が、前記ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュする、請求項１４に記載の方法。
【請求項１６】
前記メモリ制御回路および前記データ・バッファ回路は、それぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持する、請求項１４に記載の方法。
【請求項１７】
前記メモリ制御回路が、前記メモリ制御回路のローカルなアドレス・シーケンサから受信された前記タグを前記データ・バッファ回路に送信しないように構成される、請求項１４に記載の方法。
【請求項１８】
前記メモリ制御回路から前記メモリ・デバイスに前記ストア・コマンドを送信すること、および前記データ・バッファ回路のローカルなアドレス・シーケンサから取得された前記ローカルなストア・データ・タグによって指し示された前記位置から前記メモリ・デバイスにデータを送信すること、をさらに含む、請求項１４に記載の方法。
【請求項１９】
リモート・メモリ制御回路を有する分散メモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法であって、
複数のデータ・バッファ回路の各ローカルなアドレス・シーケンサから、次に使用されることになるストア・データ・タグをプルすることと、
各データ・バッファ回路の前記ローカルなアドレス・シーケンサから回復された前記ストア・データ・タグを比較することと、
前記データ・バッファ回路からのタグのいずれかが異なる場合、リカバリ・コマンドを発行することと
を含む、方法。
【請求項２０】
リモート・メモリ制御回路を有するメモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法であって、
前記メモリ制御回路のローカルなアドレス・シーケンサから発行されることになる次のタグをデータ・バッファ回路に送信することと、
前記データ・バッファ回路のローカルなアドレス・シーケンサから発行されることになる次のタグを、前記メモリ制御回路によって送信された次に使用されることになるタグと比較することと、
前記タグがマッチしない場合、リカバリ・コマンドを発行することと、
を含む、方法。
【国際調査報告】
2021504842.tif 000016
2021504842.tif 000017