(57)【特許請求の範囲】
【請求項１】
複数のメモリ・ソースに対する階層的バッファ・システム中へのデータ・エントリを制御する方法であって、
データが複数の第一ティア・バッファから一つの第二ティア転送バッファに流通できるようにバッファを管理するステップと、
前記第二ティア転送バッファ中の前記データに対する正確な配信時間を計算するステップと、
前記第二ティア転送バッファ中の前記データを、共用データ・バス上に前記計算された正確な配信時間で配信するステップと、
を含む、方法。
【請求項２】
前記正確な配信時間の前記計算のために初期フレーム待ち時間計算を用いるステップ、をさらに含む、請求項１に記載の方法。
【請求項３】
データに対応付けて計算されるリード・データ・バッファ遅延に関連し、デクリメントされる遅延カウントの値に基づいて、前記データを前記第一ティア・バッファから前記第二ティア転送バッファに移動するタイミングと、前記データを前記第二ティア転送バッファから前記共用データ・バス上に移動するタイミングを判断するステップ、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記リード・データ・バッファ遅延の期限が切れ次第、受動的にデータを前記第二ティア転送バッファに移動するステップ、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第二ティア転送バッファ中のスロットが利用可能になったならば、能動的にデータを前記第二ティア転送バッファに移動するステップ、
をさらに含む、請求項３に記載の方法。
【請求項６】
前記第二ティア転送バッファは、従来型の先入れ先出しバッファとして作動することができ、前記第二ティア転送バッファがステージング・レジスタとしての役割をする能力をさらに含み、前記第二ティア転送バッファは、複数のスロットを含み、前記第二ティア転送バッファは、あるトランザクションに関するデータをあるスロットにローディングすることと、別のトランザクションに関するデータを別のスロットにローディングすることを、同時に行えるものである、請求項１に記載の方法。
【請求項７】
前記階層的バッファ・システムは、前記第一ティア・バッファへのローディングと、前記第二ティア転送バッファへのローディングと、前記第二ティア転送バッファから前記共用データ・バスへのアンローディングとの間のクロック比であるギア比について、複数のギア比のうちのいずれかであることができるものである、請求項１に記載の方法。
【請求項８】
好適なデータ転送レートを維持しながら、前記階層的バッファ・システムにおける前記ギア比に対して必要な速度整合性を提供するため、返送データ・ストリーム中にアイドル・ギャップを挿入するステップ、
をさらに含む、請求項７に記載の方法。
【請求項９】
前記第二ティア転送バッファにバッファされた複数のデータであって、複数のトランザクションに関連する複数のデータを、アイドル・ギャップを挿入することなく、前記共用データ・バス上において返送するステップ、
をさらに含む、請求項７に記載の方法。
【請求項１０】
前記第二ティア転送バッファが利用可能で、前記第一ティア・バッファへのデータ格納が必要でないとき、データを前記第一ティア・バッファを経由せずに前記第二ティア転送バッファに格納するステップ、
をさらに含む、請求項１に記載の方法。
【請求項１１】
メモリ・コントローラにシステム回復ポリシーを実施するようアラートするため、データ・フレーム境界にポイズン・データ・パターンを差し挟むステップ、
をさらに含む、請求項１に記載の方法。
【請求項１２】
メモリ・コアと、
共用データ・バスと
前記メモリ・コアからデータを受信する複数の第一ティア・バッファと、
前記データを前記第一ティア・バッファから受信する第二ティア転送バッファと、
前記第二ティア転送バッファ中の前記データを、予め計算された正確な配信時間で前記共用データ・バス上に配信する手段と、
を含む集積回路デバイス。
【請求項１３】
前記集積回路デバイスは、
データに対応付けて計算されるリード・データ・バッファ遅延に関連し、デクリメントされる遅延カウントの値に基づいて、前記データを前記第一ティア・バッファから前記第二ティア転送バッファに移動するタイミングと、前記データを前記第二ティア転送バッファから前記共用データ・バス上に移動するタイミングを判断する手段を備え、
前記第二ティア転送バッファは、前記第二ティア転送バッファに格納されているデータを前記共用データ・バス上に計算された正確な配信時間で配信するものであり、
前記正確な配信時間は、前記正確な配信時間を計算する際において初期フレーム待ち時間計算が用いられるものである、
請求項１２に記載の集積回路デバイス。
【請求項１４】
前記リード・データ・バッファ遅延の期限が切れ次第、受動的にデータを前記第一ティア・バッファから前記第二ティア転送バッファに転送し、かつ、前記第二ティア転送バッファ中のスロットが利用可能になったならば、能動的にデータを前記第一ティア・バッファから前記第二ティア転送バッファに転送する手段を有する、請求項１３に記載の集積回路デバイス。
【請求項１５】
前記第二ティア転送バッファは、従来型の先入れ先出しバッファとして作動することができ、前記第二ティア転送バッファがステージング・レジスタとしての役割をする能力をさらに含み、前記第二ティア転送バッファは、複数のスロットを含み、前記第二ティア転送バッファは、あるトランザクションに関するデータをあるスロットにローディングすることと、別のトランザクションに関するデータを別のスロットにローディングすることを、同時に行えるものである、請求項１２に記載の集積回路デバイス。
【請求項１６】
前記第一ティア・バッファへのローディングと、前記第二ティア転送バッファへのローディングと、前記第二ティア転送バッファから前記共用データ・バスへのアンローディングとの間のクロック比であるギア比について、複数のギア比のうちのいずれかであることができるものであり、
前記集積回路デバイスは、
好適なデータ転送レートを維持しながら、前記ギア比に対して必要な速度整合性を提供するため、返送データ・ストリーム中にアイドル・ギャップを挿入する手段を有する、
請求項１２に記載の集積回路デバイス。
【請求項１７】
データを包含するキャッシュ・コアと、
共用データ・バスと、
前記データが複数の第一ティア・バッファから第二ティア転送バッファに流通するのを可能にするように前記バッファを管理し、
前記データを、予め計算された正確な配信時間で前記第２ティア転送バッファから前記共用データ・バス上に配信する
ように構成された回路と、
を含む、プロセッサ・デバイス。
【請求項１８】
前記プロセッサ・デバイスは、
データに対応付けて計算されるリード・データ・バッファ遅延に関連し、デクリメントされる遅延カウントの値に基づいて、前記データを前記第一ティア・バッファから前記第二ティア転送バッファに移動するタイミングと、前記データを前記第二ティア転送バッファから前記共用データ・バス上に移動するタイミングを判断する手段を備え、
前記第二ティア転送バッファは、前記第二ティア転送バッファに格納されているデータを前記共用データ・バス上に計算された正確な配信時間で配信するものであり、
前記正確な配信時間は、前記正確な配信時間を計算する際において初期フレーム待ち時間計算が用いられるものである、
請求項１７に記載のプロセッサ・デバイス。
【請求項１９】
前記第二ティア転送バッファは、従来型の先入れ先出しバッファとして作動することができ、前記第二ティア転送バッファがステージング・レジスタとしての役割をする能力をさらに含み、前記第二ティア転送バッファは、複数のスロットを含み、前記第二ティア転送バッファは、あるトランザクションに関するデータをあるスロットにローディングすることと、別のトランザクションに関するデータを別のスロットにローディングすることを、同時に行えるものである、請求項１７に記載のプロセッサ・デバイス。
【請求項２０】
前記第一ティア・バッファへのローディングと、前記第二ティア転送バッファへのローディングと、前記第二ティア転送バッファから前記共用データ・バスへのアンローディングとの間のクロック比であるギア比について、複数のギア比のうちのいずれかであることができるものであり、
前記プロセッサ・デバイスは、
好適なデータ転送レートを維持しながら、前記ギア比に対して必要な速度整合性を提供するため、返送データ・ストリーム中にアイドル・ギャップを挿入する手段を有する、
請求項１７に記載のプロセッサ・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、階層的バッファ・システム中で移動するデータ・エントリを制御することに関する。
【背景技術】
【０００２】
今日、最新式のコンピュータ・システムは、通常、該コンピュータ・システムで情報を処理するため使用可能なプロセッサを含めいくつかの集積回路（ＩＣ：ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）を包含している。プロセッサによって処理されるデータには、プロセッサによって実行されるコンピュータ命令、およびそれらコンピュータ命令を使いプロセッサに操作されるデータを含めることができる。コンピュータ命令およびデータは、通常、コンピュータ・システム中のメイン・メモリに格納されている。
【０００３】
プロセッサは、通常、一連の小さなステップ中の命令を実行することによって命令群を処理する。一部の例では、プロセッサによって処理される命令の数を増加させるために（従って、プロセッサの速度を増大するために）、プロセッサがパイプライン化されることがある。パイプライン化とは、プロセッサ中に分離されたステージを設けることをいい、各ステージは、ある命令を実行するために必要な一つ以上の小さなステップを遂行する。一部の例では、パイプラインが（他の回路とともに）プロセッサ・コアと呼ばれるプロセッサ部分に配置されることがある。一部のプロセッサは複数のプロセッサ・コアを有することが可能で、一部の例では、各プロセッサ・コアが複数のパイプラインを有し得る。プロセッサ・コアが複数のパイプラインを有する場合、命令の群（発行グループという）を並行して複数のパイプラインに発行し、並行して各々のパイプラインに実行させることができる。
【０００４】
処理コアの数が増加するにつれて、それがメモリ・サブシステムに対し、必要なデータ量を配信するためのより多くの要求を課すようになる。プロセッサがメモリ・デバイスに直接連結できるチャネルの数には実用的な限界があるので、一般的なアーキテクチャ上の解決策には、チャネル上に一つ以上のメモリ・バッファ・チップを置くことが含まれる。バッファ・チップの主たる役割は、リード（ｒｅａｄ）オペレーションのストリームを、一つ以上のメモリ・ポートに取り付けられた複数のランクおよびバンクに転送し、返されたリード・データをプロセッサ・コアに返信するためバッファ格納することである。ＤＲＡＭの周波数がメモリ・チャネルの周波数と異なることが多く、このため、返送データのバッファリングと速度整合が必要となる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
バッファ・チップ自体の動作周波数増加とともに、リード・バッファの数が増えるにつれ、新しい問題が生じてきた。処理待ちリード要求の数とデータ・バーストの数との乗算積から、メモリ・チャネル上に多重化する必要のあるデータ・ソースの数が得られる。例えば、各バッファがバースト長８（すなわちＢＬ８）ＤＲＡＭリードを保持可能な、４つのリード・バッファを有するバッファ・チップからは、メモリ・チャネルに配信すべき３２バーストのデータが得られる。２ＧＨｚを上回るチャネル周波数を使い、バッファのデータ・フローは今や１．５ＧＨｚサイクル時間を超える。
【０００６】
さらに、高性能プロセッサは、バッファ・チップに対し、物理的リード・バッファの実際の数を超える処理待ちリード数への対応を要求するような、連続リード・ストリームを生成する能力を有する。例えば、バッファ・チップが４つのリード・バッファを有する場合、メモリ・コントローラが用いる高度なスケジューリング・スキームは、通常、１番目のリードがバッファ・チップから出て行く前に５番目のリードを開始することになろう。これは、メモリ・チャネル、バッファ・チップ、およびＤＲＡＭデバイスにおける既知の固定待ち時間を利用し、追加のリード・オペレーションをパイプライン化してバッファにストレスを加えるものである。
【０００７】
最も簡単な（すなわち、力ずくの）解決策は、バッファ・チップのデータ・フローを過剰設計し、追加バッファのインスタンスを作成することである。簡単なラウンドロビン・スキームを用いて、バッファ管理ロジックを実行するのは容易であるが、追加のハード装置の物理的設計コストがかかる。これは、データ・ソースがチップの周りに散り散りに配置されている場合には大きな問題を生じる。これは、データをバッファ・プールとやり取り転送するだけのためのパイプライン・ステージを追加することを必要とさせることになろう。また、このアプローチは、データ・フロー多重化中にさらに多くのソースを取り込むことによって、データ・ソース全てからの選定をしなければならないという問題を悪化させることにもなろう。
【０００８】
もっと一般的なアプローチは、必要な数だけのバッファ（この例では４つ）を用いることであるが、パイプライン化をサポートするさらに高度なバッファ・コントローラを使うことになる。第一バッファからデータが読み出されると、同時に第一バッファ中への、第五リードからの返送ＤＲＡＭデータのローディングが始まる。次いで、第六リードからの返送データを第二バッファにパイプライン化することができ、以下同様に続く。この対処策は、メモリ・コントローラが連続するリード・ストリームを送信することを可能にし、ＦＲＡＭ周波数のチャネル周波数に対する比率によっては、通常、実際のリード・バッファの数の二倍の持続的処理量を達成することができる。しかしながら、３２のソースの送出処理の問題は依然として残る。これは、１〜２ＧＨｚで作動するデータ・フローを使っても、多くの場合、バッファ・プールとメモリ・チャネルとの間に追加のパイプライン・ステージを必要とする。残念ながら、この方法は、データ配信の開始までの待ち時間に影響を与える。
【課題を解決するための手段】
【０００９】
本発明の実施形態は、階層的バッファ・システムにおけるデータ・エントリの制御のためのシステムおよび方法を提供する。簡単に述べれば、該システムの一つの実施形態は、とりわけ、アーキテクチャにおいて下記のように実装することができる。
【００１０】
該システムは、メモリ・コアと、メモリ・データ・チャネル（共用データ・バス）と、メモリからデータを受信する複数の第一ティア・バッファとを包含する集積回路デバイスを含む。該システムは、所定のタイミングで共用バス上にデータを配信する第二ティア転送バッファをさらに含む。
【００１１】
また、本発明の実施形態は、階層的バッファ・システムにおけるデータ・エントリを制御する方法を提供すると見ることもできる。これに関し、かかる方法の一つの実施形態は、とりわけ、下記のステップによって概略的に要約することができる。該方法は、データが複数の第一ティア・バッファから一つの第二ティア転送バッファに流通できるようにバッファを管理するステップと、所定のタイミングで該データを共用バスに配信するステップとを含む。
【図面の簡単な説明】
【００１２】
【図１】本発明の一つの実施形態による、あるシステムを図示するブロック図である。
【図２】本発明の一つの実施形態による、ある階層的バッファ・システムのアーキテクチャの例を図示するブロック図である。
【図３】本発明の一つの実施形態による、ある階層的バッファ・システムのオペレーションの例を示すフロー・チャートである。
【図４】「図４Ａ」および「図４Ｂ」は、ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【図５】ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【図６】ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【図７】ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【発明を実施するための形態】
【００１３】
本発明の技法を介して、さらなる特質および利点が実現される。本明細書において本発明の他の実施形態および態様が詳細に説明され、これらは請求される発明の一部と見なされる。本発明の特質および利点をよりよく理解するために、これらの説明および図面を参照されたい。
【００１４】
本発明の実施形態とみなされる主題は、本明細書に添付された請求項の中で具体的に指摘され、明確に請求されている。本発明の前述および他の目的、特質、および利点は、添付の図面と併せ、以下の詳細説明を読めば容易に分かる。
【００１５】
これら詳細な説明によって、例示として図面を参照しながら、本発明の好適な実施形態をその利点および特質と併せ解説する。
【００１６】
以下では本発明の実施形態を参照する。ただし、本発明が、説明された特定の実施形態に限定されないことを理解すべきである。それよりむしろ、下記の特質およびエレメントのいかなる組み合わせも、各種の実施形態に関係するかどうかにかかわらず、本発明を実装、実践するものと見なされる。さらに、さまざまな実施形態において、本発明は従来技術を超える数多くの利点を提供する。しかしながら、本発明の実施形態が他の可能な対処策または従来技術あるいはその両方を超える利点を実現することが可能ではあっても、所与の実施形態によってある特定の利点が実現されるかどうかは本発明を限定するものではない。しかして、以下の態様、特質、実施形態、および利点は、単なる例示であって、請求項（群）に明示で記載されている場合を除き、添付の請求項のエレメントまたは限定事項とは見なされるものではない。同様に、「本発明」への言及は、本明細書に開示されたどの発明主題の一般化とも解釈されてはならず、請求項（群）に明示で記載されている場合を除き、添付の請求項のエレメントまたは限定事項と見なされてはならない。
【００１７】
本発明の一つの実施形態は、カスケード式のバッファ構造を用いることによって前述の問題に対処し、該構造では、第一ティアは３つのバッファを含み、第二ティアは４番目のバッファを保持する。高度なバッファ・コントローラが、２レベルのデータ・パイプライン化をサポートする。第一レベルは、上記３つの保持バッファの一つから、第二ティア転送バッファへのデータの移動を生じさせる。所与のバッファ内で第二レベルのパイプライン化が行われ、一つのトランザクションに関連するデータが、同時に第二のトランザクションに対するデータをバッファ中にロードしながら、アンローディングを開始できるようにする。このアプローチは、バースト長８のリード・オペレーションに対する最終的な送出処理マルチプレックスすなわち多重化を最大で８つまでのソースに低減し、データをチャネル上に送信するため必要なパイプライン・ステージの数をさらに低減する。
【００１８】
本発明の別の実施形態は、従来式の並列バッファ・プールを用いた従来式設計の持続的処理量に対応するために、バッファに対しスケジュールされたメモリ・チャネル上のタイム・スライスに先行して、データ・バーストを第一ティア保持バッファから第二ティア転送バッファに転送するフロー・コントローラをさらに考案している。従って、本発明の該一つの実施形態は、複数のリードが近接して連続に発行された場合に、後続のリード・トランザクションに対するデータがギャップレスな仕方で返送されることを確実にするための、速度整合バッファとしての役割もするリード転送バッファを取り入れている。
【００１９】
本発明の一つの実施形態は、４スロットの先入れ先出し（すなわち、ＦＩＦＯ（ｆｉｒｓｔ−ｉｎ  ｆｉｒｓｔ−ｏｕｔ）またはキュー）バッファと、デュアル・ポート２スロットＦＩＦＯバッファと、単純なステージング・レジスタとの間を動的に変形する革新的リード・バッファを含む。この構造は、バッファリングが不必要なとき、わずかな待ち時間の初回データ転送、並びに、任意のシーケンスで発行された４および８バーストのリード・オペレーションの収容を可能にする。ダブルデータレート３同期ダイナミック・ランダム・アクセス・メモリ（ＤＤＲ３  ＤＲＡＭ：ｄｏｕｂｌｅ−ｄａｔａ−ｒａｔｅ  ｔｈｒｅｅ  ｓｙｎｃｈｒｏｎｏｕｓ  ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）は、２つの連続するバースト・チョップ４のリード・オペレーションの間にギャップを取り入れるので、ＤＤＲメモリ・デバイスは、通常２種類のデータ転送をサポートする。バースト・チョップは、データ・トランザクションのサイズがバッファ容量の半分の場合である。バースト長８は、４つの連続するメモリ・クロック期間の各立ち上がりおよび立下りでデータの８ビートを転送する。該好適な実施形態は、メモリからの全体キャッシュ・ラインにアクセスするためにこの型の転送を用いる。さらに、ＤＤＲデバイスは、該デバイスによってデータの４ビートだけが配信される、バースト長４または動的チョップ・オペレーションも可能にする。プロセッサがキャッシュ・ラインの一部しか必要としない状況では、本発明は、第一および第二ティア・バッファの半分を返送データの収容に使うことができるようにする。さらに、第二ティア・バッファは、２つの異なるトランザクションからのデータが第二ティア・バッファの各半分中に同時にロードされ、共用バス上でのシームレスなデータ転送を確実にすることができる手段を提供する。
【００２０】
本発明の一つの実施形態のデュアル・ポート・リード転送バッファは、これらのギャップを排除して、第一、第二両方のトランザクションが利用可能な状況では、第一トランザクションからの４つのデータ・ショットの直後に第二トランザクションからの４つのデータ・ショットを転送することを可能にする。これの一つの利点は、最大処理量を向上、維持するタイミング終了に対するものである。しかしながら、同一のＤＲＡＭポートで２つのバースト・チョップ４のトランザクションが連続的に存在し、一番目のものが、第二ティア・バッファで遅延させられなかった場合、このときまだ、メモリ・データ・チャネルにおいて一番目のトランザクションの終了後と二番目のトランザクションの開始にギャップが生じ得る。
【００２１】
また一方、レイアウト計画の基本的態様もある。最適レイアウト計画の狙いは、できるだけ小さな合計チップ面積および短い遅延時間（すなわち、セル間の短い連結ワイヤ）である。かさねて、ある出力チャネルに集約連結する必要のある１６または３２のバッファを使う例を考えてみると、従来式のアプローチでは、終了タイミングの何らかの見込み持ってこれらをひとまとまりに連結しようとするであろう。しかしながら、これは、データ・ソースがチップの周りに散り散りに配置されている場合には大きな問題を生じる。これは、データをバッファ・プールとやり取り転送するだけのためのパイプライン・ステージの追加を必要とさせることになろう。あらゆる転送が余分の待ち時間増を被り、出力チャネルへの順番を待って１００サイクルの間もバッファ中に置かれるトランザクションすら出よう。
【００２２】
本発明の一つの実施形態の段階化された構造は、回路のレイアウト計画の最適化を可能にする。８つのバッファの４つのプールとして編成され、各プールがチップ角の近辺に配置されている、３２の第一ティアを有する例を考えてみよう。この場合、４つのプールを２つの第二ティア・バッファに集約連結し、これらバッファの各々をパスの中間点に配置することができる。最後に、これら２つの第二ティア・バッファを、出力チャネルに配置された単一の第三ティア・バッファにマルチプレックス化または多重化することができる。これは、バックグラウンドでデータを移動しているリロード・マネージャの一部としてのチップ伝搬遅延を基本的に見えなくする。本発明の一つの実施形態は、クリティカル・パスへのバッファの影響を最小化し、低待ち時間（高速）パス上の伝搬遅延への尽力に集中できるようにするためのやり方である。
【００２３】
本発明の実施形態は、例えばコンピュータ・システムなどのシステムとともに活用することができ、これらに関連させて以下に説明する。本明細書での使用において、システムは、メインフレーム、サーバ、パソコン、インターネット機器、デジタル・メディア機器、携帯情報端末（ＰＤＡ：ｐｏｒｔａｂｌｅ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、携帯音楽／映像プレイヤ、ビデオ・ゲーム・コンソールを含め、プロセッサおよびメモリを利用する任意のシステムを含み得る。メモリは、該メモリを利用するプロセッサと同じダイに配置することができるが、場合によっては、プロセッサとメモリとを異なるダイに配置することもできる（例、別々のモジュール内の別々のチップ、または単一のモジュール内の別々のチップ）。本発明の他の実施形態は、ネットワーク・ルーティング、グラフィック・カード・メモリ・マネジメント、キャッシュ階層などと併せ活用することができる。
【００２４】
以下は、各プロセッサ・コアが複数のパイプラインを使って命令を実行する、複数のメモリを有するプロセッサに関連させて説明するが、本発明の実施形態は、単一の処理コアを有するプロセッサを含め、一つのメモリを使用する任意のプロセッサとともに用いることができる。一般に、本発明の実施形態は、任意のプロセッサとともに活用することができ、いかなる特定の構成にも限定されない。
【００２５】
図１は、階層的バッファ・システムに対する本発明の一つの実施形態を用いるコンピュータ１１の例を示すブロック図である。コンピュータ１１は、以下に限らないが、メインフレーム、サーバ、パソコン、ワークステーション、ラップトップ、ＰＤＡ、手持ちデバイスなどを含む。一般に、図１に示されるように、ハードウエア・アーキテクチャに関して、コンピュータ１１は、ローカル・インタフェース２３を介して通信可能に連結された、プロセッサ２１、メモリ２２、および一つ以上の入力または出力あるいはその両方の（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス（または周辺機器）を含む。ローカル・インタフェース２３は、例えば、以下に限らないが、当技術で既知の、一つ以上のバスあるいは有線または無線の接続とすることができる。ローカル・インタフェース２３には、簡明化のため省略しているが、コントローラ、バッファ（キャッシュ）ドライバ、リピータ、およびレシーバなど、通信を可能にするための追加のエレメントを持たせることができる。さらに、ローカル・インタフェース２３には、前述のコンポーネント間の適切な通信を可能にするための、アドレス、制御、またはデータ接続あるいはこれらの組み合わせを含めることができる。
【００２６】
プロセッサ２１は、メモリ２２に格納可能なソフトウエアを実行するためのハードウエア・デバイスである。データおよび命令へのより速いアクセス、並びにプロセッサ２１のより高い利用度を備えるため、該プロセッサには複数のプロセッサ・コア４１（Ａ〜Ｎ）を持たせることができる。プロセッサ２１は、メモリ２２からローカル・インタフェース２３を介してデータを読み出すことができる。
【００２７】
プロセッサ２１は、実際上、任意のカスタム・メイドまたは市販のプロセッサ、中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、データ信号プロセッサ（ＤＳＰ：ｄａｔａ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、またはコンピュータ１１に属するいくつかのプロセッサのうちの補助プロセッサ、および半導体ベースの（マイクロチップ形状の）マイクロプロセッサまたはマクロプロセッサとすることができる。適切な市販のマイクロプロセッサの例として、米国ＩＢＭ製のＰｏｗｅｒ  ＰＣ（ＩＢＭ社の登録商標）またはＣｅｌｌ  ＢＥ（Ｒ）マイクロプロセッサあるいはｚＳｅｒｉｅｓ（ＩＢＭ社の登録商標）プロセッサ、米国Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ製の８０×８６またはＰｅｎｔｉｕｍ（Ｒ）シリーズ・マイクロプロセッサ、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．製のＳｐａｒｃ（Ｒ）シリーズ・マイクロプロセッサ、Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ社製のＰＡ−ＲＩＳＣ（Ｒ）シリーズ・マイクロプロセッサ、あるいは米国Ｍｏｔｏｒｏｌａ  Ｃｏｒｐｏｒａｔｉｏｎ製の６８ｘｘｘシリーズ・マイクロプロセッサがある。メモリ・エレメント２２（Ａ〜Ｎ）は複製とすることができる。一つの実施形態において、メモリ・エレメント２２（Ａ〜Ｎ）は、本発明の階層的バッファ・システム６０中の、バッファ・マネジメント機能を含むメモリ・バッファ・チップに結合されている。メモリ・バッファ・チップは、デイジー・チェーン・トポロジーに構成され、あらゆるメモリ・トランザクションが各メモリ・バッファ・チップを通して転送され、返送メモリのリード・データは、これも各メモリ・バッファ・チップを通過する単一のアップストリーム・データ・パスを共用する。このトポロジーは、デイジー・チェーン方式で追加の２ポート・メモリ・バッファを接続することにより容易なメモリ拡張を可能にする。
【００２８】
メモリ２２には、揮発性メモリ・エレメント（例、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）などのランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））、および不揮発性メモリ・エレメント（例、ＲＯＭ、消去再書き込み可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、電気的消去再書き込み可能読み取り専用メモリ（ＥＥＰＲＯＭ：ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、フラッシュ、プログラム可能読み取り専用メモリ（ＰＲＯＭ：ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、テープ、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、ディスク、ディスケット、カートリッジ、カセットなど）の任意の一つまたは組み合わせを含めることができる。さらに、メモリ２２には、電子的、磁気的、光学的、または他の種類の記憶媒体あるいはこれらの組み合わせを組み込むことができる。なお、メモリ２２には、メモリ・エレメント２２（Ａ〜Ｎ）の分散型アーキテクチャを含めることができ、さまざまなコンポーネントは相互に遠隔に配置されているが、プロセッサ２１はこれらにアクセスできる。
【００２９】
また、複数のメモリ・エレメント２２（Ａ〜Ｎ）が、階層的バッファ・システム６０を使ってローカル・インタフェース２３に直接取り付けられている、他の実施形態も考えられる。階層的バッファ・システム６０は、リード・データ・バッファ遅延の概念を用い、各返送データ・トランザクションの正確なタイミングをスケジュールし、複数のメモリ・エレメント２２（Ａ〜Ｎ）からのメモリ・データ・トランザクションを分散方式で管理する。本発明の階層的バッファ・システム６０は、複数のメモリ・エレメント２２（Ａ〜Ｎ）内に包含されている階層的バッファ・システム群６０の間で明示的通信は必要としない。
【００３０】
メモリ２２（Ａ〜Ｎ）中のソフトウエアには、各々が論理機能を遂行するための実行可能命令の順序付けられたリストを含む、一つ以上の別個のプログラムを含めることができる。図１に示された事例では、メモリ２２（Ａ〜Ｎ）中のソフトウエアは、適切なオペレーティング・システム（Ｏ／Ｓ：ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）３１を含む。オペレーティング・システム３１は、基本的に、他のコンピュータ・プログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータマネジメント、メモリ・マネジメント、並びに通信制御および関連サービスを提供する。
【００３１】
適切な市販のオペレーティング・システム３１の非包括的リストには、（ａ）Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＷｉｎｄｏｗｓ（Ｒ）オペレーティング・システム、（ｂ）Ｎｏｖｅｌｌ，Ｉｎｃ．から入手可能なＮｅｔｗａｒｅ（Ｒ）オペレーティング・システム、（ｃ）Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ．から入手可能なＭａｃｉｎｔｏｓｈ（Ｒ）オペレーティング・システム、（ｄ）Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ社、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．およびＡＴ＆Ｔ  Ｃｏｒｐｏｒａｔｉｏｎなど多くの供給者から入手可能なＵＮＩＸ（Ｒ）オペレーティング・システム、（ｅ）インターネットで容易に入手可能なフリーウエアであるＬｉｎｕｘ（Ｒ）オペレーティング・システム、（ｆ）ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なｚ／ＯＳ（ＩＢＭ社の登録商標）またはｚ／ＶＭ（ＩＢＭ社の登録商標）オペレーティング・システム、（ｇ）ＷｉｎｄＲｉｖｅｒ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．のランタイムＶｘｗｏｒｋｓ（Ｒ）オペレーティング・システム、（ｈ）手持ちコンピュータまたは携帯情報端末（ＰＤＡ）などに実装されている機器ベースのオペレーティング・システム、（例、Ｓｙｍｂｉａｎ，Ｉｎｃ．から入手可能なＳｙｍｂｉａｎ  ＯＳ（Ｒ）、Ｐａｌｍ  Ｃｏｍｐｕｔｉｎｇ，Ｉｎｃ．から入手可能なＰａｌｍＯＳ（Ｒ）、およびＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＷｉｎｄｏｗｓ  ＣＥ（Ｒ））が挙げられる。
【００３２】
Ｉ／Ｏデバイスには、例えば、以下に限らないが、マウス２４、キーボード２５、スキャナ（図示せず）、マイクロフォン（図示せず）などの入力デバイスを含めることができる。さらに、Ｉ／Ｏデバイスには、例えば、以下に限らないが、プリンタ（図示せず）、ディスプレイ２６などの出力デバイスも含めることができる。最後に、Ｉ／Ｏデバイスには、例えば、以下に限らないが、（遠隔デバイス、他のファイル、デバイス、システム、またはネットワークにアクセスするための）ＮＩＣまたはモデム／通信ポート２７、無線周波数（ＲＦ：ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ）または他のトランシーバ（図示せず）、電話インタフェース（図示せず）、ブリッジ（図示せず）、ルータ（図示せず）などをさらに含めることができる。
【００３３】
コンピュータ１１がパソコン、ワークステーション、インテリジェント・デバイスなどである場合、メモリ２２中のソフトウエアには、基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ  ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）（簡明化のため省略）をさらに含めることができる。ＢＩＯＳは、立ち上げ時にハードウエアを初期化しテストして、オペレーティング・システム３１を開始させ、ハードウエア・デバイスへのデータ転送をサポートする基本的なソフトウエア・ルーチンのセットである。ＢＩＯＳは、コンピュータ１１が始動されたときにＢＩＯＳを実行できるように、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどある種の読み取り専用メモリに格納される。
【００３４】
プロセッサ２１は、コンピュータ１１が作動中、メモリ２２内に格納されたソフトウエアを実行し、メモリ２２とデータのやり取り通信をするように構成され、一般には、コンピュータ１１のオペレーション制御はこれらソフトウエアに従って行われる。オペレーティング・システム３１および他の一切のプログラムは、全体的にまたは部分的にプロセッサ２１によって読み取られ、おそらくはプロセッサ２１内でバッファされ次いで実行される。
【００３５】
図２は、本発明の一つの実施形態による階層的バッファ・システム６０のアーキテクチャの一例を図示したブロック図である。簡明化のため、図２は、階層的バッファ・システム６０、メモリ２２（Ａ〜Ｎ）、およびローカル・インタフェース２３に関して図示され、説明されている。ある別の実施形態において、階層的バッファ・システム６０は、キャッシュ・メモリ４２とプロセッサ２１の単一個のプロセッサ・コア４１との間に配置される。一つの実施形態において、各プロセッサ・コア４１は同一とすることができる（例えば、同一の階層的バッファ・システム６０を含む）。別の実施形態において、各プロセッサ・コア４１は、単一個の階層的バッファ・システム６０を共用することができる。
【００３６】
第一ティア・データ・バッファ６１（ａ〜ｃ）からメモリ・データ・チャネル５９（すなわち、ローカル・インタフェース２３）上へのデータの移動は、第二ティア転送バッファ６５を介する。該好適な実施形態において、メモリ・データ・チャネル５９は、任意のデータ・バスとすることができよう。メモリ・データ・チャネル５９は、データを要求するどのユニットにでも戻る単なるメモリ・データ・チャネルとすることができる。データを要求するユニットは、例えば、以下に限らないが、プロセッサ・ユニット、別の格納ユニット、周辺機器などであり得る。データの移動は、一緒に作業をしているいくつかの有限状態機械によって管理される。第一ティア・データ・バッファ６１（ａ〜ｃ）は、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）によって制御され、該機械は、階層セレクタ６３（ａ〜ｂ）およびセレクタ６４（ａ〜ｄ）を使って、第一ティア・データ・バッファ６１（ａ〜ｃ）から第二転送バッファ６５中へのリード・データのアンローディングを管理する。示された例の実装では、３つのリード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）が、それぞれ一つずつ各物理第一ティア・データ・バッファ６１（ａ〜ｃ）に用いられ、第四リード・データ・バッファ遅延有限状態機械７１ｄが使われている。第四リード・データ・バッファ遅延有限状態機械７１ｄは、リード・データが第一ティア・データ・バッファ６１（ａ〜ｃ）を迂回し、高速パス・ステージング・レジスタ６２から直接第二ティア転送バッファ６５中に直接ロードされる状況で、第二ティア転送バッファ６５中へのリード・データ・トラフィックを管理する。この「フラッシュ」パスについては後記で説明する。
【００３７】
該３つのリード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）は各々が特定の第一ティア・データ・バッファ６１（ａ〜ｃ）に関連付けられており、その第一ティア・データ・バッファ６１（ａ〜ｃ）からのデータのアンローディングを制御する。第一ティア・データ・バッファ６１（ａ〜ｃ）から第二ティア転送バッファ６５中へのデータのアンローディングの制御は、階層セレクタ６３（ａ〜ｂ）およびセレクタ６４（ａ〜ｄ）に対するアービトレイション７２からのコントローラ信号８１および８２によって提供される。第二ティア転送バッファ６５へのデータのローディングの制御は、信号８３によって提供される。該好適な実施形態において、アービトレイション７２は、単に、各リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）からの制御信号を一緒にＯＲして、階層セレクタ６３（ａ〜ｂ）、セレクタ６４（ａ〜ｄ）および第二ティア転送バッファ６５に出力する制御信号を形成する。該好適な実施形態では、一つのリード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）が別の機械に対して優先付け設定されることはない。しかしながら、他の実施形態では、付加的な保護のため、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）に優先付けがされる。また、アービトレイション７２は、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）が、第二ティア転送バッファ６５に同時にデータをロードしようとして衝突が生じるのを防止するためのチェックを行うエラー検出機能を遂行する。
【００３８】
該好適な実施形態において、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）は、ＤＲＡＭクロック周波数で作動し、ＤＲＡＭクロック・インクリメントで遅延を管理する。リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）は、新規のデータ転送が利用可能な第一ティア・データ・バッファ６１（ａ〜ｃ）にロードされると、これら機械が、データを第二ティア転送バッファ６５に同時にアンロードできるように作動する。該好適な実施形態において、これは、各リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）内のキュー・システムを利用し、第一ティア・データ・バッファ６１（ａ〜ｃ）中の各リード・データ転送の、現在および今後のバッファ待ち時間とデータ・バースト長とを追跡することによって達成される。最初の要求のデータが受信される前に、システムに対し複数のリード要求が発行され得るので、キューが用いられる。リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）は、それが最初の要求の処理を待っているまたは処理している間に、後続の要求に対する情報を格納する。最初の要求が完了すると、次の要求が存在する場合、それがキューの前部から取得される。
【００３９】
データが第一ティア・データ・バッファ６１（ａ〜ｃ）からアンロードされたならば、コントロールは、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）から３つのデータ・ブロック・コントローラ（すなわち、ブロック有限状態機械７３（ａ〜ｃ））の一つに移り、該コントローラは、第二ティア転送バッファ６５内のデータを管理し、ブロック・ステージング・レジスタ６８へのデータのシリアライゼーションを制御する。ブロック有限状態機械７３（ａ〜ｃ）は、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）と同様に、データが第二ティア転送バッファ６５中にある間にリード・データ・バッファ遅延を管理し、セレクタ６６とセレクタ６７との間の共用チャネル上でのデータ衝突を防止するため、特定の時間に、データをメモリ・データ・チャネル５９上にアンロードする能力を有する。これがセレクタ６６と６７との間での衝突を防止するだけでなく、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）の使用によって、共用バス上での複数のバッファ・コントローラの間、例えば、複数のメモリ・バッファ・チップの間での衝突も防止される。アービトレイション７５は、ブロック有限状態機械７３（ａ〜ｃ）によって管理され、セレクタ６６およびセレクタ６７を制御する。使用されるブロック有限状態機械７３（ａ〜ｃ）の数は、実装される第一ティア・データ・バッファ６１（ａ〜ｃ）の数に関係する。示された例において、３つのブロック有限状態機械７３（ａ〜ｃ）は、ラウンドロビン方式で作動し、特定の第一ティア・データ・バッファ６１（ａ〜ｃ）に関連付けられてはいない。３つのブロック有限状態機械７３（ａ〜ｃ）の各々は、第二ティア転送バッファ６５からメモリ・データ・チャネル５９上へのデータのシリアライゼーションを独立的に制御することができる。しかして、３つの第一ティア・データ・バッファ６１（ａ〜ｃ）から第二ティア転送バッファ６５にアンロードするときには、衝突を検出し回避するため注意を払わなければならない。リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）は、所与のトランザクションについて、第二ティア転送バッファ６５とブロック・ステージング・レジスタ６８との間での衝突を検出し回避するために、データ・ブロック・コントローラ（すなわち、ブロック有限状態機械７３（ａ〜ｃ））に調整信号を送る。
【００４０】
次いで、ブロック・ステージング・レジスタ６８中のデータが、ポイズン・インジェクタ６９を通して移動された後、メモリ・データ・チャネル５９に置かれる。エラー状態が生じた場合、階層的バッファ・システム６０は、特殊な巡回冗長コード（ＣＲＣ：ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｏｄｅ）を使って、不具合が発生して要求されたリード・データを送信できないことを、ホストに返信する。これにより、ホストは、不具合となったリード命令を再発行する、または、オペレーティング・システムを変更して、メモリ・スペースを割り当て解除し、今後のリードを他の物理メモリ場所にリダイレクトするなど、回復手順を試みることができる。該好適な実施形態において、階層的バッファ・システム６０は、メモリ・データ・チャネル５９で８０ビット幅のデータ・ブロックを用いる。連続する２つの８０ビット・ブロックが単一個のフレームを表す。この１６０ビットのうち、１４４ビットは実際のメモリ・データで、残りの１６ビットは、巡回冗長コード（ＣＲＣ）のため使われる。ＣＲＣは当技術分野ではよく知られており、１４４ビットの送信を保護するために数多くのコードを利用することができる。該好適な実施形態は、いかなる単一個のソリッド・レーンの不具合、および、フレーム内での、４ビットまでのいかなるランダム・ビット・フリップをも検出可能なコードを用いる。全てゼロの８０ビットのブロックが正当なアイドル・パターンと見なされる。フレーム内の２つの８０ビット・ブロックの最初と最後のビットを交互に反転させることにより、これがポイズンＣＲＣコードを生成する。ポイズンＣＲＣは、特殊なパターンであって、送信にエラーが発生した場合、該ビット・フリップは真のＣＲＣエラーをもたらす。しかして、ポイズンＣＲＣコードをメッセージとして使って、ホストに対し、問題が発生し、リード命令をうまく処理することができなかったことを提示することができる。
【００４１】
階層的バッファ・システム６０は、該階層的バッファ・システム内に、エラー・インジケータをモニタする対応機能を有するポイズン・インジェクタ６９を用いる。エラー・インジケータが検出されると、ポイズン・インジェクタ６９は、ブロック・ステージング・レジスタ６８からの処理中の一切の転送を途中捕捉し、存在する８０ビットのデータ・パターンをポイズンＣＴＣパターンに重ね合わせる。さらに、階層的バッファ・システム６０は、新しいフレームの開始部が必ずポイズン・インジェクションから始まっていることを確実にするフレーム境界検出ロジックを包含する。一つの実施形態で用いられるＣＲＣコードは、１番目の８０ビット・ブロック中のランダムなデータ・パターンとそれに続く２番目の８０ビット・ブロック中のポイズンＣＲＣパターンとが、正常なＣＲＣを備えた正当なデータに見えるような１６０ビットのデータを生成する統計的確率を有するようなコードである。ホストが、受信したフレームが正当なデータであると信じるようミスリードされるいかなる可能性をも阻止するために、階層的バッファ・システム６０は、転送の最中にあるフレームを完了させることができる。次のフレーム境界で、ポイズン・インジェクタ６９は、位置パターンを重ね合わせ、データを要求したユニットにその不具合を警告することになる。該好適な実施形態は、全システム的な回復ポリシーを用いており、該ポリシーはある命令が十分な深さのキューを再試行することを可能にし、ポイズン・インジェクタ６９が、次のフレーム境界を待ってポイズンＣＲＣパターンを挿入することができるようにする。
【００４２】
ブロック有限状態機械７３（ａ〜ｃ）を使用することによって、ＤＲＡＭデータの、第一ティア・データ・バッファ６１（ａ〜ｃ）中へのローディングと、第二ティア転送バッファ６５中へのローディングと、第二ティア転送バッファ６５からメモリ・データ・チャネル５９上へのアンローディングとの間の多様なクロック比（すなわち、ギア比）を使うことが可能になる。該好適な実施形態において、ブロック有限状態機械７３（ａ〜ｃ）はリード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）よりも高いクロック周波数で作動し、サブＤＲＡＭクロック・サイクル・リード・バッファ遅延を使って、個別のリード・データ転送の間にギャップのない移行をもたらすことを可能にする。ある他の実施形態において、ブロック有限状態機械７３（ａ〜ｃ）は、リード・データ・バッファ遅延有限状態機械７１のクロック周波数で作動する。
【００４３】
データ転送に用いられる第三コントローラは、リロード・マネージャ７４であり、該マネージャは、第二ティア転送バッファ６５をモニタし、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）に、第二ティア転送バッファ６５が使用可能になることと、第一ティア・データ・バッファ６１（ａ〜ｃ）からデータをロードできることとを信号伝達する役割をもつ。この「早期」アンロードは、後続のデータのため第一ティア・データ・バッファ６１（ａ〜ｃ）の可及的速やかな解放を可能にし、第二ティア転送バッファ６５が十分に利用されることを確実にする。データ・フローを介しての個別リード・データ・オペレーションの追跡に役立てるため、および誤った順序での第一ティア・データ・バッファ６１（ａ〜ｃ）のアンローディングを防止するために、各リード・データ転送にはｉｄが割り当てられる。リロード・マネージャ７４は、どのリードｉｄが、各第一ティア・データ・バッファ６１からアンロードされたか、どれを次にアンロードするかを追跡する。リード・データ・バッファ遅延有限状態機械７１がブロック有限状態機械７３（ａ〜ｃ）にコントロールを移すときに、このｉｄも転送される。ブロック有限状態機械７３（ａ〜ｃ）が、リロード・マネージャ７４に、第二ティア転送バッファがアンロードされていることを信号伝達するとき、この送信の一部として転送ｉｄが連絡され、リロード・マネージャ７４は、第二ティア転送バッファ６５中に移動すべき次の転送ｉｄの情報を更新し、これにより、正しいリード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）に信号伝達することができる。
【００４４】
本発明の一つの実施形態において、高速パス・ステージング・レジスタ６２がタイミングを終了するのが示されている。ある好適な実施形態において、高速パス・ステージング・レジスタ６２は、ステージング・レジスタである。ある他の実施形態において、階層的バッファ・システム６０を提供するシステムおよび方法は、高速パス・ステージング・レジスタ６２がなくても効率的に作動し、データはソース・ドメイン５７から第二ティア転送バッファ６５に直行する。さらに別の実施形態では、階層的バッファ・システム６０を提供するシステムおよび方法は、タイミングを終了するため複数の高速パス・ステージング・レジスタ６２を活用する。
【００４５】
第一ティア・データ・バッファ６１（ａ〜ｃ）を早期にアンロードするために、階層的バッファ・システム６０はリロード・マネージャ７４を利用する。リロード・マネージャ７４エンティティは、第一ティア・データ・バッファ６１（ａ〜ｃ）から第二ティア転送バッファ６５へのデータのフローを能動的に管理し、データがメモリ・データ・チャネル５９に送出される順番がきたとき第二ティア転送バッファ６５で該データの準備が整っていることを確実にする。これが、一般に、データ構造の如何によって以下の３つの仕方のうち一つで作動することになる従来技術との主要差別化点である。該３つの仕方とは、（ａ）単に、遅延が期限切れになる（０に達する）まで、第一ティア・データ・バッファ６１（ａ〜ｃ）にデータを在置する。これは受動的バッファ・パイプライン化といわれる。というのは、第二ティア転送バッファ６５中に利用可能な余地があっても、データは、該データが移動する前に遅延が期限切れになるまで何もせずに待つことになるからである。（ｂ）第二ティア転送バッファ６５が空になるまで待って、その次に第一ティア・データ・バッファ６１（ａ〜ｃ）から第二ティア転送バッファ６５にデータを移動する。この方法は、まったく遅延タイマーには依存しない。これは、要求される遅延時間をデータ中に有するアーキテクチャに対しては機能しない。これは、データが非同期で移動する環境、または従来技術のような構造中でだけ使用することができる。言い換えれば、あるときには、第二ティア転送バッファ６５は５サイクルで空になり得、続いてデータが第一ティア・データ・バッファ６１（ａ〜ｃ）から移動する。しかしながら、次回には、空になるのに５０サイクルかかるかもしれないのに、システム・アーキテクチャはこの可変時間を考慮せず、秩序正しくものごとが運ばれることだけを要求する。（ｃ）遅延期限切れに先立って第二ティア転送バッファ６５が空になった場合に、データを第二ティア転送バッファ６５に早期移動することを試みるため（ａ）と（ｂ）との組み合わせを使えるが、空にならない場合、受動モードのオペレーションに戻ってしまい、ただ遅延が時間切れになるのを待つことになる。これに関する問題は、リードのシーケンスおよびそれらに関連する転送の長さの如何によっており、ギャップレス転送ルールに執着するのはうまくいかない場合がある。というのは、該ルールは、一旦データがバッファされ、ホストへの返信が開始されたならば、残りの全てデータの送信は、ギャップレスとなり正確なサイクルで行われことになるからである。
【００４６】
図３は、本発明の一つの実施形態による、階層的バッファ・システム６０のオペレーションの例を示すフロー・チャートである。該フロー・チャートは、データがバッファの階層を通って移動される際の、データに対する制御パスを示す。該フロー・チャートは、所定のリード遅延、バッファ利用度、およびトランザクション・サイズに基づいた、単一のトランザクション（すなわちバースト長８または７）に対する実行可能なデータ・パスを示す。
【００４７】
ステップ１０１において、階層的バッファ・システム６０は、データの第一バーストをメモリ・データ・チャネル５９上に返さなければならない、正確な配信時間を計算する。該好適な実施形態は、要求者から見た、命令発信から先頭のデータ・バーストが到着するまでの合計伝搬時間を意味する、初期フレーム遅延（ＩＦＬ：ｉｎｉｔｉａｌ  ｆｒａｍｅ  ｌａｔｅｎｃｙ）で構成される方法を用いる。この往復遅延は、システム初期化シーケンスの間に一度計算され、参照のためローカルに保存される。バッファリングが必要でない、バス不活動のウィンドウの間に、コンピュータに対する初期フレーム遅延のベースラインが設定され、ＤＲＡＭアクセス時間およびデータ・フロー内の内部遅延を取り入れてさらに調整される。リード命令が受信されたときにカウンタがロードされ、デクリメントが開始される。カウンタは、データの最初のバーストをメモリ・データ・チャネル５９に送信しなければならなくなるまでの残り時間を表示する。
【００４８】
初回リード命令に近い時間に到着した一切の後続リード命令は、メモリ・データ・チャネル５９が利用可能になるまで待つ間の追加遅延を被る。この追加遅延は、現在のトランザクションのカウンタの値を設定されたベースラインと比較して決められる。その差異は、第二トランザクションが、メモリ・データ・チャネル５９が利用可能になるのを待つため、バッファ格納されなければならない時間の量を表す。また、このリード・バッファ遅延の計算には、転送には複数サイクルの分メモリ・データ・チャネル５９が使われるので、アップストリーム転送のバースト長を取り入れるための調整がさらに含まれることに留意すべきである。また、バッファ格納を要求する（すなわち、正のリード・データ・バッファ遅延を有する）後続のリード要求も、サイクル通過ごとにリード・データ・バッファ遅延をデクリメントするカウンタを有することになる。データが第一ティア・バッファから第二ティア・バッファに移動される際に、残りのリード・データ・バッファ遅延も、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）からブロック有限状態機械７３（ａ〜ｃ）に渡される。
【００４９】
最後に、デイジー・チェーン・トポロジーの場合、階層的バッファ・システム６０は、一つのメモリ・エレメント２２Ｎが現在メモリ・データ・チャネル５９を使っている間に、第二のメモリ・エレメント２２Ａに対するリード要求を受信することができる。この状況において、階層的バッファ・システム６０は、デイジー・チェーンに取り付けられた各メモリ・エレメント２２（Ａ〜Ｎ）に対する初期フレーム遅延を格納する機能も包含し、階層的バッファ・システム６０の各インスタンスが、各メモリ・エレメント（Ａ〜Ｎ）の間で一切通信しないで、分散方式で全ての処理待ちトランザクションの配信時間を計算、追跡することができる。このようにして、階層的バッファ・システム６０は、第二リード要求を管理し、該階層的バッファ・システム６０が他の（遠隔の）メモリ・リソースを標的としていることを理解しながら、第一リード要求をスヌープし、第一要求に対する配信時間を計算し、次いで、これをリード・データ・バッファ遅延として第二要求配信時間計算に適用することになる。従って、リード・データ・バッファ遅延は、ローカルまたは遠隔いずれかのリソースがチャネルを使用していることに起因して、一つのトランザクションが、メモリ・データ・チャネル５９が利用可能になるのを待つためにバッファ格納されなければならない時間量データとして算定される。リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）およびブロック有限状態機械７３（ａ〜ｃ）に対するリード・データ・バッファ遅延を設定する手段を示すため、正確な配信時間を計算する方法を説明する。正確な配信時間を計算するための装置および方法は、本発明の譲受人に譲渡され、同時継続中の、２００８年７月１日付の米国特許出願第１２／１６６，２２６号（代理人番号：ＰＯＵ９２００８０１１０）、名称「Ａｕｔｏｍａｔｉｃ  Ｒｅａｄ  Ｄａｔａ  Ｆｌｏｗ  Ｃｏｎｔｒｏｌ  Ｉｎ  Ａ  Ｃａｓｃａｄｅ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍ」に記載されている。メモリ・データ・チャネルに対する正確な配信時間を設定する他の手段も存在し、本発明が、本明細書に記載された以外の手段の使用を排除するものでないことを理解する。別の実施形態の一つの例は、リード命令の内部に、トランザクションに対し要求される配信時間を指定するフィールド使うことである。このアプローチは、バスまたはメモリのコントローラが、特定のフロー制御およびバス利用を設定することを可能にする。配信時間を計算するためた方法の如何にかかわらず、および関連する一切のリード・データ・バッファ遅延の如何にかかわらず、出願人らの発明は、このエレメントを用い、階層的バッファ・システム６０を介してデータの移動を制御することを意図している。
【００５０】
ステップ１０３において、階層的バッファ・システム６０は、プロセッサ２１によって要求されるデータを受信するのを待つ。プロセッサ２１によって要求されたデータが受信されたならば、各トランザクションにはＩＤが割り当てられ、次いで階層的バッファ・システム６０は、ステップ１０５において、遅延カウントがＤＲＡＭサイクルあたりのブロックのカウントよりも小さいかどうかを確認する。ステップ１０５において、遅延カウントがＤＲＡＭサイクルあたりのブロックのカウントよりも小さいと判定されれば、次いで、階層的バッファ・システム６０のオペレーションは、ステップ１２７にスキップする。しかしながら、ステップ１０５において、遅延カウントがＤＲＡＭサイクルあたりのブロックのカウント以上であると判定された場合、階層的バッファ・システム６０は、ステップ１０７において、第二ティア転送バッファ６５が使用可能かどうかを判定する。ステップ１０７で、第二ティア転送バッファ６５が利用可能と判定されると、階層的バッファ・システム６０のオペレーションはステップ１２５にスキップする。しかしながら、第二ティア転送バッファ６５が利用可能でないと判定された場合は、階層的バッファ・システム６０は、ステップ１０９において、データを第一ティア・データ・バッファ６１（ａ〜ｃ）に格納する。これは、第一ティア・データ・バッファ６１（ａ〜ｃ）が利用可能であることを前提としており、利用可能でなければバッファ・オーバーフロー状態が生じる。
【００５１】
ステップ１１１において、第二ティア転送バッファ６５が満杯かどうかが判定される。第二ティア転送バッファ６５が満杯であると判定された場合、階層的バッファ・システム６０はステップ１１７にスキップする。しかしながら、ステップ１１１において、第二ティア転送バッファ６５が満杯でないと判定された場合には、ステップ１１３において、第一ティア・データ・バッファ６１（ａ〜ｃ）中のシーケンスの次のデータ・トランザクションが、バースト・チョップかどうかが判定される。第一ティア・データ・バッファ６１（ａ〜ｃ）中のデータは、該データ・トランザクションのサイズが第一ティア・データ・バッファ６１（ａ〜ｃ）または第二ティア転送バッファ６５の容量の半分である場合、バースト・チョップである。この場合、該バッファは半分（１／２）が埋まっている。ステップ１１３において、第一ティア・データ・バッファ６１（ａ〜ｃ）中のデータが、バースト・チョップであると判定された場合、階層的バッファ・システム６０のオペレーションは、ステップ１１９にスキップする。また一方、ステップ１１３で、第一ティア・データ・バッファ６１（ａ〜ｃ）のデータがバースト・チョップでないと判定された場合、階層的バッファ・システム６０のオペレーションは、ステップ１１５において、第二ティア転送バッファ６５のアンロード時間の直前まで遅延される。この遅延を行ったのは、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）およびアービトレイション７２である。該好適な実施形態において、ブロック有限状態機械７３（ａ〜ｃ）は、リロード・マネージャ７４に、該機械が、ラインの次のトランザクションのコンテンツに基づいて、第二ティア転送バッファをメモリ・データ・チャネル５９上に空けていると信号伝達する時間を変えることによって、この遅延を実施する。リロード・マネージャ７４は、第二ティア転送バッファ６５が半分詰まっているか完全満杯かによって、随時に、第一ティア・データ・バッファ６１（ａ〜ｃ）を早期アンロードする要求を発行する。次いで、階層的バッファ・システム６０のオペレーションはステップ１１９にスキップする。
【００５２】
ステップ１１７において、階層的バッファ・システム６０のオペレーションは、第一ティア・データ・バッファ６１（ａ〜ｃ）から第二ティア転送バッファ６５中へのデータのアンローディングを、第二ティア転送バッファ６５がメモリ・データ・チャネル５９へのデータのアンローディングを能動的に開始するまで遅延させる。第一ティア・データ・バッファ６１（ａ〜ｃ）にデータがある場合、それを第二ティア転送バッファ６５に移動できる２つの好適なやり方がある。第一の好適な方法では、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）のカウントが自然失効する（すなわち、カウントが、ＤＲＡＭクロック・サイクルあたりのリード・データ・バッファ遅延ステップ数の閾値より低くなる）。第二の好適な方法では、リロード・マネージャ７４が、第二ティア転送バッファ６５が利用可能でロードできることを示す。この「早期」の指示が行われる場合、それはカウントが自然失効する前となる。第一ティア・データ・バッファ６１（ａ〜ｃ）を第二ティア転送バッファ６５中にアンロードするためのこの信号は、第二ティア転送バッファ６５の現在のコンテンツ如何によって、２つの異なるときに生じることになる。第二ティア転送バッファ６５がハーフブロックの（すなわちＢＬ４）トランザクションを保持している場合、これは、第二ティア転送バッファ６５中に２つの使用可能な空きスロットがあることを意味し、リロード・マネージャ７４は、第一ティア・データ・バッファ６１（ａ〜ｃ）からの早期アンロードを、第二ティア転送バッファ６５が満杯であった場合に比べ数サイクル早く信号伝達することができる。これにより、第二ティア転送バッファ６５の２つの空きスロットを、第二ティア転送バッファ６５の他の２つの満たされたスロットからどれかのデータのアンローディングが実際に開始されるよりも前に、満たし始めることができることになる。第二ティア転送バッファ６５が満杯の場合には、階層的バッファ・システム６０は、第一ティア・データ・バッファ６１（ａ〜ｃ）スロットが、少なくとも、該スロットが新しい第一ティア・データ・バッファ６１（ａ〜ｃ）データで満される前に、アンロードされるまで待たなければならない。
【００５３】
ステップ１０３において割り当てられたトランザクションＩＤは、リード・データ遅延とともに使用され、トランザクションが順次的な仕方で処理されており、第一ティア・データ・バッファ６１（ａ〜ｃ）がラウンドロビン方式で処理されていることを確実にする。リロード・マネージャ７４は、第二ティア転送バッファ６５中にロードされることになる次回アンロード・トランザクションＩＤの実行タリーを維持する。リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）がそれらのデータを第二ティア転送バッファ６５にアンロードするとき、これら機械は、リロード・マネージャ７４にトランザクションＩＤを示し、リロード・マネージャ７４が、各第一ティア・データ・バッファ６１（ａ〜ｃ）からアンロードされることになる次のＩＤがどれかについての自分の記録を更新できるようにする。ブロック有限状態機械７３（ａ〜ｃ）が第二ティア転送バッファ６５をアンロードする都度、これら機械もアンロードされたＩＤについてリロード・マネージャ７４に通知する。これにより、トランザクションが順次的に処理されておりスキップされたものがないことを確実にする。
【００５４】
ステップ１１９において、階層的バッファ・システム６０のオペレーションは、第一ティア・データ・バッファ６１（ａ〜ｃ）を早期アンロードすることが実施可能かどうかを判定する。ステップ１１９で、第一ティア・データ・バッファ６１（ａ〜ｃ）が早期アンロード可能と判定された場合、階層的バッファ・システム６０のオペレーションは、ステップ１２９にスキップする。早期アンロードを行うかどうかの決定はリロード・マネージャ７４およびブロック有限状態機械７３（ａ〜ｃ）によって行われる。ブロック有限状態機械７３（ａ〜ｃ）が、リロード・マネージャ７４に、第二ティア・バッファがアンロードされている、またはされようとしていることを通知した場合、リロード・マネージャ７４は、次にアンロード予定の第一ティア・バッファに、そのコンテンツを「早期」アンロードすることを信号伝達可能かどうかを判定する。この決定は、該第一ティア・バッファがそのデータをまだ中に保有しているか、および該バッファがすでに自然的アンローディングを既に開始しているか、または開始しようとしているかに基づいて行われる。それが利用可能なデータを有しているが自然的アンロードは開始していない場合、該バッファは、リロード・マネージャ７４から早期アンロードをすることを信号伝達されることになる。また一方、ステップ１１９において、第一ティア・データ・バッファ６１（ａ〜ｃ）が早期アンロードできないと判定された場合には、階層的バッファ・システム６０のオペレーションは、ステップ１２１において、遅延カウントがＤＲＡＭサイクルあたりのブロックのカウントより小さいかどうかを判定する。ステップ１２１で、遅延カウントがＤＲＡＭサイクルあたりのブロックのカウント以上であると判定された場合、階層的バッファ・システム６０のオペレーションは、ステップ１２１において遅延カウントをデクリメントし、ステップ１０９〜１２１に戻りこれを繰り返す。また一方、ステップ１２１で、遅延カウントがＤＲＡＭサイクルあたりのブロックのカウントを下回ると判定された場合、第一ティア・データ・バッファ６１（ａ〜ｃ）中のデータは、ステップ１２９において第二ティア転送バッファ６５に格納される。
【００５５】
ステップ１３１において、遅延カウントがゼロに等しいかどうか判定される。ステップ１３１で遅延カウントがゼロに等しくないと判定された場合、階層的バッファ・システム６０のオペレーションは、ステップ１３３で遅延カウントをデクリメントし、ステップ１２９〜１３１に戻りこれを繰り返す。また一方、ステップ１３１で、遅延カウントがゼロに等しいと判定された場合、階層的バッファ・システム６０は、ステップ１３５にスキップする。
【００５６】
ステップ１２７において、プロセッサ２１に要求されたデータは、高速パス・ステージング・レジスタ中、１つのサイクル間、格納される。高速パス・ステージング・レジスタ６２中に格納されている、プロセッサ２１に要求されたデータは、ステップ１２９で第二ティア転送バッファ６５中に格納される。
【００５７】
ステップ１３５において、第二ティア転送バッファ６５中のデータはブロック・ステージング・レジスタ６８に格納される。ステップ１３７で、ブロック・ステージング・レジスタ６８中のデータは、ポイズン・インジェクタ６９を通してメモリ・データ・チャネル５９に移動される。ステップ１３９において、階層的バッファ・システム６０のオペレーションはプロセッサ２１のため要求された次のデータの受信を待つ。プロセッサ２１のため要求されたデータを受信した後、階層的バッファ・システム６０のオペレーションはステップ１０３〜１３９に戻りこれを繰り返す。
【００５８】
図４〜図６は、本発明の一つの実施形態による、階層的バッファ・システム１００のオペレーションの例を図示するタイミング図である。
【００５９】
図４Ａに示されているのは、ゼロ・リード・バッファ遅延のフラッシュ・リードに対する例示的タイミング図である。データをＤＲＡＭから返送するときに、メモリ・データ・チャネル５９が空いている／空くことになる状況においては、第一ティア・データ・バッファ６１（ａ〜ｃ）の一つにデータを一時的に格納する必要はない。この場合、２０３で示すように、リード・データは、パイプライン化レジスタ、すなわち高速パス・ステージング・レジスタ６２を介して第一ティア・データ・バッファ６１（ａ〜ｃ）を迂回することになり、２０４で示すように、フラッシュ・リード・データ・バッファ遅延有限状態機械７１（ａ〜ｄ）によって、直接第二ティア転送バッファ６５中にロードされる。同時に、２０５で示すように、３つのブロック有限状態機械７３（ａ〜ｃ）の一つが呼び出され、第二ティア転送バッファ６５からのデータの、メモリ・データ・チャネル５９上への、シリアライゼーションを直ちに開始することになる。この例において、第二ティア転送バッファ６５は、単純なステージング・レジスタとしての役割をする。これは、フラッシュ・リード・データが、該データが単一回のサイクルを超えてバッファ中に在置されることがなく、最小の待ち時間で構造を通り抜けて移動することを可能にする。
【００６０】
図４Ｂ中に示されているのは、非ゼロ・バッファ遅延のフラッシュ・リードに対する例示的タイミング図である。このバッファ構造は、複数のバッファ・デバイスからメモリ・コントローラに戻る共通データチャネルが存在する、カスケード型相互接続メモリ・システムでの使用を意図されているので、リード・データを空の第二ティア転送バッファ６５中にロードできるようにすることは可能であるが、第二ティア転送バッファ６５から直ちにシリアライズしてメモリ・データ・チャネル５９上に置くことはできない（すなわち、チャネルは使用中である）。この状況で、データはこれも第一ティア・データ・バッファ６１（ａ〜ｃ）を迂回して、第二ティア転送バッファ６５中に直接にロードされることになる。しかしながら、この場合も、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）は、ブロック有限状態機械７３（ａ〜ｃ）に非ゼロのバッファ遅延待ち時間を渡すことになる。ブロック有限状態機械７３（ａ〜ｃ）は、リード・データを、第二ティア転送バッファ６５からメモリ・データ・チャネル５９上にアンロードする前に、このバッファ遅延時間を待つことになる。このデータが第二ティア転送バッファ６５中で待っている間に後続のリード・オペレーションが要求された場合、これらのオペレーションからのデータが第一ティア・リード・データ・バッファを満たし始めることになる。
【００６１】
図５に示されているのは、第一ティア・バッファから早期アンロードされる、バッファ格納リードに対する例示的タイミング図である。データ・スループットを最大化し、データが前述の階層的バッファ・システム６０を通して適切な固定タイミングで返送されることを確実にするために、必要な場合にだけ第一ティア・データ・バッファ６１（ａ〜ｃ）が利用され、できるだけ迅速にデータがこれらバッファから第二ティア転送バッファ６５にアンロードされ、しかして、後続のリード・オペレーションのため第一ティア・データ・バッファを空けるように注意が払われる。ブロック有限状態機械７３（ａ〜ｃ）がそのリード・データを第二ティア転送バッファ６５からメモリ・データ・チャネル５９上にアンロードを開始するとき、該機械は、リロード・マネージャ７４に、第二ティア転送バッファ６５が利用可能であることを信号伝達し、今アンロードされルデータ伝送に対するｉｄを提供する。次いで、リロード・マネージャ７４は、第一ティア・データ・バッファ６１（ａ〜ｃ）中にアンロードを待つデータがある場合、ラインの次のリード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）に、第一ティア・データ・バッファ６１（ａ〜ｃ）からのそのデータを第二ティア転送バッファ６５中にアンロードするよう信号伝達することになる。これは、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）に、そのリード・データを、早期に、すなわち待ちカウントがＤＲＡＭサイクルあたりのステップ閾値に達する前に、第二ティア転送バッファ６５中にロードさせる。次いで、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）は、次に利用可能なブロック有限状態機械７３（ａ〜ｃ）を呼び出し、ｉｄおよび残余の待ちカウントがブロック有限状態機械７３（ａ〜ｃ）に移され、カウントされ、データがメモリ・チャネル上にアンロードされる。第一ティア・データ・バッファ６１（ａ〜ｃ）の利用度を最大化するため、第二ティア転送バッファ６５には、しばしば、前のリード・データをメモリ・データ・チャネル５９にアンロードしながら同時に新しいデータがロードされる。
【００６２】
図６に示されているのは、第二ティア転送バッファ６５が２つのソースから同時にロードされることができ、メモリ・データ・チャネル５９が即時の使用のため利用可能である場合の、例示的タイミング図である。このシナリオにおいて、リード・データは、２つの場所、ポートＡおよびポートＢから得られる。ポートＡからのトランザクションはバースト・チョップ４のトランザクションであり、ポートＢ上のトランザクションはＢＬ８である。同時に行われているが、ポートＡからのリードは、メモリ・データ・チャネル上で優先権を与えられており、先に返送される。これにより、トランザクションＡは、高速パス・ステージング・レジスタを利用し、第二ティア転送バッファ６５の上位半分中にロードでき、即時にブロック・ステージング・レジスタに移ることができる（すなわち、リード遅延＝０）。トランザクションＢは、第二ティア転送バッファ６５中にロードされる前に、第一ティア・データ・バッファの一つに格納されることが必要となり、４ブロックのリード遅延が割り当てられることになる。第二ティア転送バッファ６５は、トランザクションＡからのデータがロードされているとき半分だけが満たされ、直ちにブロック・ステージング・レジスタ中にアンロードされることになるので、第二ティア転送バッファ６５の下位半分は、直ちにトランザクションＢからのデータのロードを開始することができる。トランザクションＢからのデータは、第二ティア転送バッファ６５のより下位のスロットから順次にロードが開始され、最後には、該バッファのより上位のスロット中の、既にアンロードされているトランザクションＡからのデータを上書きする。
【００６３】
図７に示されているのは、フラッシュ・リード、バッファ格納リード、および第一ティア・データ・バッファ６１（ａ〜ｃ）からの通常のアンロードを含む、例示的タイミング図である。前述のように、第二ティア転送バッファ６５が使用されている、または使用されようとしているときに、後続のリード・オペレーションが要求された場合、そのオペレーションから返送されるデータには、非ゼロのデータ・バッファ遅延時間が割り当てられ、第一ティア・データ・バッファ６１（ａ〜ｃ）の一つに格納されることになる。データが第一ティア・データ・バッファ６１（ａ〜ｃ）中にロードされるとき、それに対応するリード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）が呼び出される。そのリード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）は、ＤＲＡＭクロック・サイクルで該リード・バッファ遅延待ち時間をカウント・ダウンすることになる。リード・バッファ遅延は、サブＤＲＡＭクロック・サイクルの粒度で作動されるので、リード・バッファ遅延カウントがＤＲＡＭサイクルあたりのステップ閾値に達したならば、リード・データ・バッファ遅延有限状態機械７１（ａ〜ｃ）は、自動的に次に利用可能なブロック有限状態機械７３（ａ〜ｃ）呼び出し、そのデータを第二ティア転送バッファ６５中にアンロードする。残りのリード・バッファ待ち時間（すなわち、残余）は、ブロック有限状態機械７３（ａ〜ｃ）が呼び出されたときに、該機械に渡され、該ブロック有限状態機械（ａ〜ｃ）は、その残り残余時間を待った後で、第二ティア転送バッファ６５からデータをメモリ・データ・チャネル５９にアンロードすることになる。この例において、残余時間はゼロであり、該リード・データが第二ティア転送バッファ６５の中でさらなる時間遅延されることはない。該好適な実施形態において、第二ティア転送バッファ６５は２つのローディング・ポートを有する。
【００６４】
本発明の前述の実施形態は、特にどの「好適な」実施形態も、インプリメンテーションの単なる可能な事例であり、単に、本発明の原理の明瞭な理解のため記述したものであることを強調しておきたい。本発明の精神および原理から実質的に逸脱することなく、本発明の前述の実施形態（群）に、多くの変形および修改を加えることができる。かかる全ての修改および変形は、本明細書内の開示および本発明の範囲に含まれるものと意図されており、添付の請求項で保護されている。
【符号の説明】
【００６５】
１１  コンピュータ
２１  プロセッサ
２２Ａ  メモリ・エレメント
２２Ｎ  メモリ・エレメント
２３  ローカル・インタフェース
２４  マウス
２５  キーボード
２６  ディスプレイ
２７  モデム／通信ポート
３１  オペレーティング・システム
４１Ａ  プロセッサ・コア
４１Ｎ  プロセッサ・コア
４２  キャッシュ・メモリ
６０  階層的バッファ・システム
【図１】
0005764004.tif 000002
【図２】
0005764004.tif 000003
【図３】
0005764004.tif 000004
【図４】
0005764004.tif 000005
【図５】
0005764004.tif 000006
【図６】
0005764004.tif 000007
【図７】
0005764004.tif 000008