説明

共用データ・バスに対する階層的バッファ・システムのための方法、集積回路デバイス、およびプロセッサ・デバイス

【課題】本発明は、階層的バッファ・システム中でデータ・エントリを制御するためのシステムおよび方法を提供する。
【解決手段】該システムは、メモリ・コア、共用データ・バス、およびメモリからデータを受信する複数の第一ティア・バッファを包含する集積回路デバイスを含む。該システムは、データを共用データ・バス上に所定のタイミングで配信する第二ティア転送バッファをさらに含む。また、本発明は、階層的バッファ・システム中で移動式データ・エントリを制御する方法を提供していると見ることもできる。該方法は、データが複数の第一ティア・バッファから第二ティア転送バッファに流通するのを可能にするようバッファ群を管理するステップと、該データを共用データ・バス上に所定のタイミングで配信するステップとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般に、階層的バッファ・システム中で移動するデータ・エントリを制御することに関する。
【背景技術】
【0002】
今日、最新式のコンピュータ・システムは、通常、該コンピュータ・システムで情報を処理するため使用可能なプロセッサを含めいくつかの集積回路(IC:integrated circuit)を包含している。プロセッサによって処理されるデータには、プロセッサによって実行されるコンピュータ命令、およびそれらコンピュータ命令を使いプロセッサに操作されるデータを含めることができる。コンピュータ命令およびデータは、通常、コンピュータ・システム中のメイン・メモリに格納されている。
【0003】
プロセッサは、通常、一連の小さなステップ中の命令を実行することによって命令群を処理する。一部の例では、プロセッサによって処理される命令の数を増加させるために(従って、プロセッサの速度を増大するために)、プロセッサがパイプライン化されることがある。パイプライン化とは、プロセッサ中に分離されたステージを設けることをいい、各ステージは、ある命令を実行するために必要な一つ以上の小さなステップを遂行する。一部の例では、パイプラインが(他の回路とともに)プロセッサ・コアと呼ばれるプロセッサ部分に配置されることがある。一部のプロセッサは複数のプロセッサ・コアを有することが可能で、一部の例では、各プロセッサ・コアが複数のパイプラインを有し得る。プロセッサ・コアが複数のパイプラインを有する場合、命令の群(発行グループという)を並行して複数のパイプラインに発行し、並行して各々のパイプラインに実行させることができる。
【0004】
処理コアの数が増加するにつれて、それがメモリ・サブシステムに対し、必要なデータ量を配信するためのより多くの要求を課すようになる。プロセッサがメモリ・デバイスに直接連結できるチャネルの数には実用的な限界があるので、一般的なアーキテクチャ上の解決策には、チャネル上に一つ以上のメモリ・バッファ・チップを置くことが含まれる。バッファ・チップの主たる役割は、リード(read)オペレーションのストリームを、一つ以上のメモリ・ポートに取り付けられた複数のランクおよびバンクに転送し、返されたリード・データをプロセッサ・コアに返信するためバッファ格納することである。DRAMの周波数がメモリ・チャネルの周波数と異なることが多く、このため、返送データのバッファリングと速度整合が必要となる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
バッファ・チップ自体の動作周波数増加とともに、リード・バッファの数が増えるにつれ、新しい問題が生じてきた。処理待ちリード要求の数とデータ・バーストの数との乗算積から、メモリ・チャネル上に多重化する必要のあるデータ・ソースの数が得られる。例えば、各バッファがバースト長8(すなわちBL8)DRAMリードを保持可能な、4つのリード・バッファを有するバッファ・チップからは、メモリ・チャネルに配信すべき32バーストのデータが得られる。2GHzを上回るチャネル周波数を使い、バッファのデータ・フローは今や1.5GHzサイクル時間を超える。
【0006】
さらに、高性能プロセッサは、バッファ・チップに対し、物理的リード・バッファの実際の数を超える処理待ちリード数への対応を要求するような、連続リード・ストリームを生成する能力を有する。例えば、バッファ・チップが4つのリード・バッファを有する場合、メモリ・コントローラが用いる高度なスケジューリング・スキームは、通常、1番目のリードがバッファ・チップから出て行く前に5番目のリードを開始することになろう。これは、メモリ・チャネル、バッファ・チップ、およびDRAMデバイスにおける既知の固定待ち時間を利用し、追加のリード・オペレーションをパイプライン化してバッファにストレスを加えるものである。
【0007】
最も簡単な(すなわち、力ずくの)解決策は、バッファ・チップのデータ・フローを過剰設計し、追加バッファのインスタンスを作成することである。簡単なラウンドロビン・スキームを用いて、バッファ管理ロジックを実行するのは容易であるが、追加のハード装置の物理的設計コストがかかる。これは、データ・ソースがチップの周りに散り散りに配置されている場合には大きな問題を生じる。これは、データをバッファ・プールとやり取り転送するだけのためのパイプライン・ステージを追加することを必要とさせることになろう。また、このアプローチは、データ・フロー多重化中にさらに多くのソースを取り込むことによって、データ・ソース全てからの選定をしなければならないという問題を悪化させることにもなろう。
【0008】
もっと一般的なアプローチは、必要な数だけのバッファ(この例では4つ)を用いることであるが、パイプライン化をサポートするさらに高度なバッファ・コントローラを使うことになる。第一バッファからデータが読み出されると、同時に第一バッファ中への、第五リードからの返送DRAMデータのローディングが始まる。次いで、第六リードからの返送データを第二バッファにパイプライン化することができ、以下同様に続く。この対処策は、メモリ・コントローラが連続するリード・ストリームを送信することを可能にし、FRAM周波数のチャネル周波数に対する比率によっては、通常、実際のリード・バッファの数の二倍の持続的処理量を達成することができる。しかしながら、32のソースの送出処理の問題は依然として残る。これは、1〜2GHzで作動するデータ・フローを使っても、多くの場合、バッファ・プールとメモリ・チャネルとの間に追加のパイプライン・ステージを必要とする。残念ながら、この方法は、データ配信の開始までの待ち時間に影響を与える。
【課題を解決するための手段】
【0009】
本発明の実施形態は、階層的バッファ・システムにおけるデータ・エントリの制御のためのシステムおよび方法を提供する。簡単に述べれば、該システムの一つの実施形態は、とりわけ、アーキテクチャにおいて下記のように実装することができる。
【0010】
該システムは、メモリ・コアと、メモリ・データ・チャネル(共用データ・バス)と、メモリからデータを受信する複数の第一ティア・バッファとを包含する集積回路デバイスを含む。該システムは、所定のタイミングで共用バス上にデータを配信する第二ティア転送バッファをさらに含む。
【0011】
また、本発明の実施形態は、階層的バッファ・システムにおけるデータ・エントリを制御する方法を提供すると見ることもできる。これに関し、かかる方法の一つの実施形態は、とりわけ、下記のステップによって概略的に要約することができる。該方法は、データが複数の第一ティア・バッファから一つの第二ティア転送バッファに流通できるようにバッファを管理するステップと、所定のタイミングで該データを共用バスに配信するステップとを含む。
【図面の簡単な説明】
【0012】
【図1】本発明の一つの実施形態による、あるシステムを図示するブロック図である。
【図2】本発明の一つの実施形態による、ある階層的バッファ・システムのアーキテクチャの例を図示するブロック図である。
【図3】本発明の一つの実施形態による、ある階層的バッファ・システムのオペレーションの例を示すフロー・チャートである。
【図4】「図4A」および「図4B」は、ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【図5】ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【図6】ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【図7】ある階層的バッファ・システムのオペレーションの例を図示するタイミング図である。
【発明を実施するための形態】
【0013】
本発明の技法を介して、さらなる特質および利点が実現される。本明細書において本発明の他の実施形態および態様が詳細に説明され、これらは請求される発明の一部と見なされる。本発明の特質および利点をよりよく理解するために、これらの説明および図面を参照されたい。
【0014】
本発明の実施形態とみなされる主題は、本明細書に添付された請求項の中で具体的に指摘され、明確に請求されている。本発明の前述および他の目的、特質、および利点は、添付の図面と併せ、以下の詳細説明を読めば容易に分かる。
【0015】
これら詳細な説明によって、例示として図面を参照しながら、本発明の好適な実施形態をその利点および特質と併せ解説する。
【0016】
以下では本発明の実施形態を参照する。ただし、本発明が、説明された特定の実施形態に限定されないことを理解すべきである。それよりむしろ、下記の特質およびエレメントのいかなる組み合わせも、各種の実施形態に関係するかどうかにかかわらず、本発明を実装、実践するものと見なされる。さらに、さまざまな実施形態において、本発明は従来技術を超える数多くの利点を提供する。しかしながら、本発明の実施形態が他の可能な対処策または従来技術あるいはその両方を超える利点を実現することが可能ではあっても、所与の実施形態によってある特定の利点が実現されるかどうかは本発明を限定するものではない。しかして、以下の態様、特質、実施形態、および利点は、単なる例示であって、請求項(群)に明示で記載されている場合を除き、添付の請求項のエレメントまたは限定事項とは見なされるものではない。同様に、「本発明」への言及は、本明細書に開示されたどの発明主題の一般化とも解釈されてはならず、請求項(群)に明示で記載されている場合を除き、添付の請求項のエレメントまたは限定事項と見なされてはならない。
【0017】
本発明の一つの実施形態は、カスケード式のバッファ構造を用いることによって前述の問題に対処し、該構造では、第一ティアは3つのバッファを含み、第二ティアは4番目のバッファを保持する。高度なバッファ・コントローラが、2レベルのデータ・パイプライン化をサポートする。第一レベルは、上記3つの保持バッファの一つから、第二ティア転送バッファへのデータの移動を生じさせる。所与のバッファ内で第二レベルのパイプライン化が行われ、一つのトランザクションに関連するデータが、同時に第二のトランザクションに対するデータをバッファ中にロードしながら、アンローディングを開始できるようにする。このアプローチは、バースト長8のリード・オペレーションに対する最終的な送出処理マルチプレックスすなわち多重化を最大で8つまでのソースに低減し、データをチャネル上に送信するため必要なパイプライン・ステージの数をさらに低減する。
【0018】
本発明の別の実施形態は、従来式の並列バッファ・プールを用いた従来式設計の持続的処理量に対応するために、バッファに対しスケジュールされたメモリ・チャネル上のタイム・スライスに先行して、データ・バーストを第一ティア保持バッファから第二ティア転送バッファに転送するフロー・コントローラをさらに考案している。従って、本発明の該一つの実施形態は、複数のリードが近接して連続に発行された場合に、後続のリード・トランザクションに対するデータがギャップレスな仕方で返送されることを確実にするための、速度整合バッファとしての役割もするリード転送バッファを取り入れている。
【0019】
本発明の一つの実施形態は、4スロットの先入れ先出し(すなわち、FIFO(first−in first−out)またはキュー)バッファと、デュアル・ポート2スロットFIFOバッファと、単純なステージング・レジスタとの間を動的に変形する革新的リード・バッファを含む。この構造は、バッファリングが不必要なとき、わずかな待ち時間の初回データ転送、並びに、任意のシーケンスで発行された4および8バーストのリード・オペレーションの収容を可能にする。ダブルデータレート3同期ダイナミック・ランダム・アクセス・メモリ(DDR3 DRAM:double−data−rate three synchronous dynamic random access memory)は、2つの連続するバースト・チョップ4のリード・オペレーションの間にギャップを取り入れるので、DDRメモリ・デバイスは、通常2種類のデータ転送をサポートする。バースト・チョップは、データ・トランザクションのサイズがバッファ容量の半分の場合である。バースト長8は、4つの連続するメモリ・クロック期間の各立ち上がりおよび立下りでデータの8ビートを転送する。該好適な実施形態は、メモリからの全体キャッシュ・ラインにアクセスするためにこの型の転送を用いる。さらに、DDRデバイスは、該デバイスによってデータの4ビートだけが配信される、バースト長4または動的チョップ・オペレーションも可能にする。プロセッサがキャッシュ・ラインの一部しか必要としない状況では、本発明は、第一および第二ティア・バッファの半分を返送データの収容に使うことができるようにする。さらに、第二ティア・バッファは、2つの異なるトランザクションからのデータが第二ティア・バッファの各半分中に同時にロードされ、共用バス上でのシームレスなデータ転送を確実にすることができる手段を提供する。
【0020】
本発明の一つの実施形態のデュアル・ポート・リード転送バッファは、これらのギャップを排除して、第一、第二両方のトランザクションが利用可能な状況では、第一トランザクションからの4つのデータ・ショットの直後に第二トランザクションからの4つのデータ・ショットを転送することを可能にする。これの一つの利点は、最大処理量を向上、維持するタイミング終了に対するものである。しかしながら、同一のDRAMポートで2つのバースト・チョップ4のトランザクションが連続的に存在し、一番目のものが、第二ティア・バッファで遅延させられなかった場合、このときまだ、メモリ・データ・チャネルにおいて一番目のトランザクションの終了後と二番目のトランザクションの開始にギャップが生じ得る。
【0021】
また一方、レイアウト計画の基本的態様もある。最適レイアウト計画の狙いは、できるだけ小さな合計チップ面積および短い遅延時間(すなわち、セル間の短い連結ワイヤ)である。かさねて、ある出力チャネルに集約連結する必要のある16または32のバッファを使う例を考えてみると、従来式のアプローチでは、終了タイミングの何らかの見込み持ってこれらをひとまとまりに連結しようとするであろう。しかしながら、これは、データ・ソースがチップの周りに散り散りに配置されている場合には大きな問題を生じる。これは、データをバッファ・プールとやり取り転送するだけのためのパイプライン・ステージの追加を必要とさせることになろう。あらゆる転送が余分の待ち時間増を被り、出力チャネルへの順番を待って100サイクルの間もバッファ中に置かれるトランザクションすら出よう。
【0022】
本発明の一つの実施形態の段階化された構造は、回路のレイアウト計画の最適化を可能にする。8つのバッファの4つのプールとして編成され、各プールがチップ角の近辺に配置されている、32の第一ティアを有する例を考えてみよう。この場合、4つのプールを2つの第二ティア・バッファに集約連結し、これらバッファの各々をパスの中間点に配置することができる。最後に、これら2つの第二ティア・バッファを、出力チャネルに配置された単一の第三ティア・バッファにマルチプレックス化または多重化することができる。これは、バックグラウンドでデータを移動しているリロード・マネージャの一部としてのチップ伝搬遅延を基本的に見えなくする。本発明の一つの実施形態は、クリティカル・パスへのバッファの影響を最小化し、低待ち時間(高速)パス上の伝搬遅延への尽力に集中できるようにするためのやり方である。
【0023】
本発明の実施形態は、例えばコンピュータ・システムなどのシステムとともに活用することができ、これらに関連させて以下に説明する。本明細書での使用において、システムは、メインフレーム、サーバ、パソコン、インターネット機器、デジタル・メディア機器、携帯情報端末(PDA:portable digital assistant)、携帯音楽/映像プレイヤ、ビデオ・ゲーム・コンソールを含め、プロセッサおよびメモリを利用する任意のシステムを含み得る。メモリは、該メモリを利用するプロセッサと同じダイに配置することができるが、場合によっては、プロセッサとメモリとを異なるダイに配置することもできる(例、別々のモジュール内の別々のチップ、または単一のモジュール内の別々のチップ)。本発明の他の実施形態は、ネットワーク・ルーティング、グラフィック・カード・メモリ・マネジメント、キャッシュ階層などと併せ活用することができる。
【0024】
以下は、各プロセッサ・コアが複数のパイプラインを使って命令を実行する、複数のメモリを有するプロセッサに関連させて説明するが、本発明の実施形態は、単一の処理コアを有するプロセッサを含め、一つのメモリを使用する任意のプロセッサとともに用いることができる。一般に、本発明の実施形態は、任意のプロセッサとともに活用することができ、いかなる特定の構成にも限定されない。
【0025】
図1は、階層的バッファ・システムに対する本発明の一つの実施形態を用いるコンピュータ11の例を示すブロック図である。コンピュータ11は、以下に限らないが、メインフレーム、サーバ、パソコン、ワークステーション、ラップトップ、PDA、手持ちデバイスなどを含む。一般に、図1に示されるように、ハードウエア・アーキテクチャに関して、コンピュータ11は、ローカル・インタフェース23を介して通信可能に連結された、プロセッサ21、メモリ22、および一つ以上の入力または出力あるいはその両方の(I/O:Input/Output)デバイス(または周辺機器)を含む。ローカル・インタフェース23は、例えば、以下に限らないが、当技術で既知の、一つ以上のバスあるいは有線または無線の接続とすることができる。ローカル・インタフェース23には、簡明化のため省略しているが、コントローラ、バッファ(キャッシュ)ドライバ、リピータ、およびレシーバなど、通信を可能にするための追加のエレメントを持たせることができる。さらに、ローカル・インタフェース23には、前述のコンポーネント間の適切な通信を可能にするための、アドレス、制御、またはデータ接続あるいはこれらの組み合わせを含めることができる。
【0026】
プロセッサ21は、メモリ22に格納可能なソフトウエアを実行するためのハードウエア・デバイスである。データおよび命令へのより速いアクセス、並びにプロセッサ21のより高い利用度を備えるため、該プロセッサには複数のプロセッサ・コア41(A〜N)を持たせることができる。プロセッサ21は、メモリ22からローカル・インタフェース23を介してデータを読み出すことができる。
【0027】
プロセッサ21は、実際上、任意のカスタム・メイドまたは市販のプロセッサ、中央処理ユニット(CPU:central processing unit)、データ信号プロセッサ(DSP:data signal processor)、またはコンピュータ11に属するいくつかのプロセッサのうちの補助プロセッサ、および半導体ベースの(マイクロチップ形状の)マイクロプロセッサまたはマクロプロセッサとすることができる。適切な市販のマイクロプロセッサの例として、米国IBM製のPower PC(IBM社の登録商標)またはCell BE(R)マイクロプロセッサあるいはzSeries(IBM社の登録商標)プロセッサ、米国Intel Corporation製の80×86またはPentium(R)シリーズ・マイクロプロセッサ、Sun Microsystems,Inc.製のSparc(R)シリーズ・マイクロプロセッサ、Hewlett−Packard社製のPA−RISC(R)シリーズ・マイクロプロセッサ、あるいは米国Motorola Corporation製の68xxxシリーズ・マイクロプロセッサがある。メモリ・エレメント22(A〜N)は複製とすることができる。一つの実施形態において、メモリ・エレメント22(A〜N)は、本発明の階層的バッファ・システム60中の、バッファ・マネジメント機能を含むメモリ・バッファ・チップに結合されている。メモリ・バッファ・チップは、デイジー・チェーン・トポロジーに構成され、あらゆるメモリ・トランザクションが各メモリ・バッファ・チップを通して転送され、返送メモリのリード・データは、これも各メモリ・バッファ・チップを通過する単一のアップストリーム・データ・パスを共用する。このトポロジーは、デイジー・チェーン方式で追加の2ポート・メモリ・バッファを接続することにより容易なメモリ拡張を可能にする。
【0028】
メモリ22には、揮発性メモリ・エレメント(例、ダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic random access memory)、静的ランダム・アクセス・メモリ(SRAM:static random access memory)などのランダム・アクセス・メモリ(RAM:random access memory))、および不揮発性メモリ・エレメント(例、ROM、消去再書き込み可能読み取り専用メモリ(EPROM:erasable programmable read only memory)、電気的消去再書き込み可能読み取り専用メモリ(EEPROM:electronically erasable programmable read only memory)、フラッシュ、プログラム可能読み取り専用メモリ(PROM:programmable read only memory)、テープ、コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read only memory)、ディスク、ディスケット、カートリッジ、カセットなど)の任意の一つまたは組み合わせを含めることができる。さらに、メモリ22には、電子的、磁気的、光学的、または他の種類の記憶媒体あるいはこれらの組み合わせを組み込むことができる。なお、メモリ22には、メモリ・エレメント22(A〜N)の分散型アーキテクチャを含めることができ、さまざまなコンポーネントは相互に遠隔に配置されているが、プロセッサ21はこれらにアクセスできる。
【0029】
また、複数のメモリ・エレメント22(A〜N)が、階層的バッファ・システム60を使ってローカル・インタフェース23に直接取り付けられている、他の実施形態も考えられる。階層的バッファ・システム60は、リード・データ・バッファ遅延の概念を用い、各返送データ・トランザクションの正確なタイミングをスケジュールし、複数のメモリ・エレメント22(A〜N)からのメモリ・データ・トランザクションを分散方式で管理する。本発明の階層的バッファ・システム60は、複数のメモリ・エレメント22(A〜N)内に包含されている階層的バッファ・システム群60の間で明示的通信は必要としない。
【0030】
メモリ22(A〜N)中のソフトウエアには、各々が論理機能を遂行するための実行可能命令の順序付けられたリストを含む、一つ以上の別個のプログラムを含めることができる。図1に示された事例では、メモリ22(A〜N)中のソフトウエアは、適切なオペレーティング・システム(O/S:operating system)31を含む。オペレーティング・システム31は、基本的に、他のコンピュータ・プログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータマネジメント、メモリ・マネジメント、並びに通信制御および関連サービスを提供する。
【0031】
適切な市販のオペレーティング・システム31の非包括的リストには、(a)Microsoft Corporationから入手可能なWindows(R)オペレーティング・システム、(b)Novell,Inc.から入手可能なNetware(R)オペレーティング・システム、(c)Apple Computer,Inc.から入手可能なMacintosh(R)オペレーティング・システム、(d)Hewlett−Packard社、Sun Microsystems,Inc.およびAT&T Corporationなど多くの供給者から入手可能なUNIX(R)オペレーティング・システム、(e)インターネットで容易に入手可能なフリーウエアであるLinux(R)オペレーティング・システム、(f)IBM Corporationから入手可能なz/OS(IBM社の登録商標)またはz/VM(IBM社の登録商標)オペレーティング・システム、(g)WindRiver Systems,Inc.のランタイムVxworks(R)オペレーティング・システム、(h)手持ちコンピュータまたは携帯情報端末(PDA)などに実装されている機器ベースのオペレーティング・システム、(例、Symbian,Inc.から入手可能なSymbian OS(R)、Palm Computing,Inc.から入手可能なPalmOS(R)、およびMicrosoft Corporationから入手可能なWindows CE(R))が挙げられる。
【0032】
I/Oデバイスには、例えば、以下に限らないが、マウス24、キーボード25、スキャナ(図示せず)、マイクロフォン(図示せず)などの入力デバイスを含めることができる。さらに、I/Oデバイスには、例えば、以下に限らないが、プリンタ(図示せず)、ディスプレイ26などの出力デバイスも含めることができる。最後に、I/Oデバイスには、例えば、以下に限らないが、(遠隔デバイス、他のファイル、デバイス、システム、またはネットワークにアクセスするための)NICまたはモデム/通信ポート27、無線周波数(RF:radio frequency)または他のトランシーバ(図示せず)、電話インタフェース(図示せず)、ブリッジ(図示せず)、ルータ(図示せず)などをさらに含めることができる。
【0033】
コンピュータ11がパソコン、ワークステーション、インテリジェント・デバイスなどである場合、メモリ22中のソフトウエアには、基本入出力システム(BIOS:basic input output system)(簡明化のため省略)をさらに含めることができる。BIOSは、立ち上げ時にハードウエアを初期化しテストして、オペレーティング・システム31を開始させ、ハードウエア・デバイスへのデータ転送をサポートする基本的なソフトウエア・ルーチンのセットである。BIOSは、コンピュータ11が始動されたときにBIOSを実行できるように、ROM、PROM、EPROM、EEPROMなどある種の読み取り専用メモリに格納される。
【0034】
プロセッサ21は、コンピュータ11が作動中、メモリ22内に格納されたソフトウエアを実行し、メモリ22とデータのやり取り通信をするように構成され、一般には、コンピュータ11のオペレーション制御はこれらソフトウエアに従って行われる。オペレーティング・システム31および他の一切のプログラムは、全体的にまたは部分的にプロセッサ21によって読み取られ、おそらくはプロセッサ21内でバッファされ次いで実行される。
【0035】
図2は、本発明の一つの実施形態による階層的バッファ・システム60のアーキテクチャの一例を図示したブロック図である。簡明化のため、図2は、階層的バッファ・システム60、メモリ22(A〜N)、およびローカル・インタフェース23に関して図示され、説明されている。ある別の実施形態において、階層的バッファ・システム60は、キャッシュ・メモリ42とプロセッサ21の単一個のプロセッサ・コア41との間に配置される。一つの実施形態において、各プロセッサ・コア41は同一とすることができる(例えば、同一の階層的バッファ・システム60を含む)。別の実施形態において、各プロセッサ・コア41は、単一個の階層的バッファ・システム60を共用することができる。
【0036】
第一ティア・データ・バッファ61(a〜c)からメモリ・データ・チャネル59(すなわち、ローカル・インタフェース23)上へのデータの移動は、第二ティア転送バッファ65を介する。該好適な実施形態において、メモリ・データ・チャネル59は、任意のデータ・バスとすることができよう。メモリ・データ・チャネル59は、データを要求するどのユニットにでも戻る単なるメモリ・データ・チャネルとすることができる。データを要求するユニットは、例えば、以下に限らないが、プロセッサ・ユニット、別の格納ユニット、周辺機器などであり得る。データの移動は、一緒に作業をしているいくつかの有限状態機械によって管理される。第一ティア・データ・バッファ61(a〜c)は、リード・データ・バッファ遅延有限状態機械71(a〜d)によって制御され、該機械は、階層セレクタ63(a〜b)およびセレクタ64(a〜d)を使って、第一ティア・データ・バッファ61(a〜c)から第二転送バッファ65中へのリード・データのアンローディングを管理する。示された例の実装では、3つのリード・データ・バッファ遅延有限状態機械71(a〜c)が、それぞれ一つずつ各物理第一ティア・データ・バッファ61(a〜c)に用いられ、第四リード・データ・バッファ遅延有限状態機械71dが使われている。第四リード・データ・バッファ遅延有限状態機械71dは、リード・データが第一ティア・データ・バッファ61(a〜c)を迂回し、高速パス・ステージング・レジスタ62から直接第二ティア転送バッファ65中に直接ロードされる状況で、第二ティア転送バッファ65中へのリード・データ・トラフィックを管理する。この「フラッシュ」パスについては後記で説明する。
【0037】
該3つのリード・データ・バッファ遅延有限状態機械71(a〜c)は各々が特定の第一ティア・データ・バッファ61(a〜c)に関連付けられており、その第一ティア・データ・バッファ61(a〜c)からのデータのアンローディングを制御する。第一ティア・データ・バッファ61(a〜c)から第二ティア転送バッファ65中へのデータのアンローディングの制御は、階層セレクタ63(a〜b)およびセレクタ64(a〜d)に対するアービトレイション72からのコントローラ信号81および82によって提供される。第二ティア転送バッファ65へのデータのローディングの制御は、信号83によって提供される。該好適な実施形態において、アービトレイション72は、単に、各リード・データ・バッファ遅延有限状態機械71(a〜c)からの制御信号を一緒にORして、階層セレクタ63(a〜b)、セレクタ64(a〜d)および第二ティア転送バッファ65に出力する制御信号を形成する。該好適な実施形態では、一つのリード・データ・バッファ遅延有限状態機械71(a〜c)が別の機械に対して優先付け設定されることはない。しかしながら、他の実施形態では、付加的な保護のため、リード・データ・バッファ遅延有限状態機械71(a〜c)に優先付けがされる。また、アービトレイション72は、リード・データ・バッファ遅延有限状態機械71(a〜c)が、第二ティア転送バッファ65に同時にデータをロードしようとして衝突が生じるのを防止するためのチェックを行うエラー検出機能を遂行する。
【0038】
該好適な実施形態において、リード・データ・バッファ遅延有限状態機械71(a〜d)は、DRAMクロック周波数で作動し、DRAMクロック・インクリメントで遅延を管理する。リード・データ・バッファ遅延有限状態機械71(a〜d)は、新規のデータ転送が利用可能な第一ティア・データ・バッファ61(a〜c)にロードされると、これら機械が、データを第二ティア転送バッファ65に同時にアンロードできるように作動する。該好適な実施形態において、これは、各リード・データ・バッファ遅延有限状態機械71(a〜c)内のキュー・システムを利用し、第一ティア・データ・バッファ61(a〜c)中の各リード・データ転送の、現在および今後のバッファ待ち時間とデータ・バースト長とを追跡することによって達成される。最初の要求のデータが受信される前に、システムに対し複数のリード要求が発行され得るので、キューが用いられる。リード・データ・バッファ遅延有限状態機械71(a〜d)は、それが最初の要求の処理を待っているまたは処理している間に、後続の要求に対する情報を格納する。最初の要求が完了すると、次の要求が存在する場合、それがキューの前部から取得される。
【0039】
データが第一ティア・データ・バッファ61(a〜c)からアンロードされたならば、コントロールは、リード・データ・バッファ遅延有限状態機械71(a〜d)から3つのデータ・ブロック・コントローラ(すなわち、ブロック有限状態機械73(a〜c))の一つに移り、該コントローラは、第二ティア転送バッファ65内のデータを管理し、ブロック・ステージング・レジスタ68へのデータのシリアライゼーションを制御する。ブロック有限状態機械73(a〜c)は、リード・データ・バッファ遅延有限状態機械71(a〜d)と同様に、データが第二ティア転送バッファ65中にある間にリード・データ・バッファ遅延を管理し、セレクタ66とセレクタ67との間の共用チャネル上でのデータ衝突を防止するため、特定の時間に、データをメモリ・データ・チャネル59上にアンロードする能力を有する。これがセレクタ66と67との間での衝突を防止するだけでなく、リード・データ・バッファ遅延有限状態機械71(a〜d)の使用によって、共用バス上での複数のバッファ・コントローラの間、例えば、複数のメモリ・バッファ・チップの間での衝突も防止される。アービトレイション75は、ブロック有限状態機械73(a〜c)によって管理され、セレクタ66およびセレクタ67を制御する。使用されるブロック有限状態機械73(a〜c)の数は、実装される第一ティア・データ・バッファ61(a〜c)の数に関係する。示された例において、3つのブロック有限状態機械73(a〜c)は、ラウンドロビン方式で作動し、特定の第一ティア・データ・バッファ61(a〜c)に関連付けられてはいない。3つのブロック有限状態機械73(a〜c)の各々は、第二ティア転送バッファ65からメモリ・データ・チャネル59上へのデータのシリアライゼーションを独立的に制御することができる。しかして、3つの第一ティア・データ・バッファ61(a〜c)から第二ティア転送バッファ65にアンロードするときには、衝突を検出し回避するため注意を払わなければならない。リード・データ・バッファ遅延有限状態機械71(a〜d)は、所与のトランザクションについて、第二ティア転送バッファ65とブロック・ステージング・レジスタ68との間での衝突を検出し回避するために、データ・ブロック・コントローラ(すなわち、ブロック有限状態機械73(a〜c))に調整信号を送る。
【0040】
次いで、ブロック・ステージング・レジスタ68中のデータが、ポイズン・インジェクタ69を通して移動された後、メモリ・データ・チャネル59に置かれる。エラー状態が生じた場合、階層的バッファ・システム60は、特殊な巡回冗長コード(CRC:cyclic redundancy code)を使って、不具合が発生して要求されたリード・データを送信できないことを、ホストに返信する。これにより、ホストは、不具合となったリード命令を再発行する、または、オペレーティング・システムを変更して、メモリ・スペースを割り当て解除し、今後のリードを他の物理メモリ場所にリダイレクトするなど、回復手順を試みることができる。該好適な実施形態において、階層的バッファ・システム60は、メモリ・データ・チャネル59で80ビット幅のデータ・ブロックを用いる。連続する2つの80ビット・ブロックが単一個のフレームを表す。この160ビットのうち、144ビットは実際のメモリ・データで、残りの16ビットは、巡回冗長コード(CRC)のため使われる。CRCは当技術分野ではよく知られており、144ビットの送信を保護するために数多くのコードを利用することができる。該好適な実施形態は、いかなる単一個のソリッド・レーンの不具合、および、フレーム内での、4ビットまでのいかなるランダム・ビット・フリップをも検出可能なコードを用いる。全てゼロの80ビットのブロックが正当なアイドル・パターンと見なされる。フレーム内の2つの80ビット・ブロックの最初と最後のビットを交互に反転させることにより、これがポイズンCRCコードを生成する。ポイズンCRCは、特殊なパターンであって、送信にエラーが発生した場合、該ビット・フリップは真のCRCエラーをもたらす。しかして、ポイズンCRCコードをメッセージとして使って、ホストに対し、問題が発生し、リード命令をうまく処理することができなかったことを提示することができる。
【0041】
階層的バッファ・システム60は、該階層的バッファ・システム内に、エラー・インジケータをモニタする対応機能を有するポイズン・インジェクタ69を用いる。エラー・インジケータが検出されると、ポイズン・インジェクタ69は、ブロック・ステージング・レジスタ68からの処理中の一切の転送を途中捕捉し、存在する80ビットのデータ・パターンをポイズンCTCパターンに重ね合わせる。さらに、階層的バッファ・システム60は、新しいフレームの開始部が必ずポイズン・インジェクションから始まっていることを確実にするフレーム境界検出ロジックを包含する。一つの実施形態で用いられるCRCコードは、1番目の80ビット・ブロック中のランダムなデータ・パターンとそれに続く2番目の80ビット・ブロック中のポイズンCRCパターンとが、正常なCRCを備えた正当なデータに見えるような160ビットのデータを生成する統計的確率を有するようなコードである。ホストが、受信したフレームが正当なデータであると信じるようミスリードされるいかなる可能性をも阻止するために、階層的バッファ・システム60は、転送の最中にあるフレームを完了させることができる。次のフレーム境界で、ポイズン・インジェクタ69は、位置パターンを重ね合わせ、データを要求したユニットにその不具合を警告することになる。該好適な実施形態は、全システム的な回復ポリシーを用いており、該ポリシーはある命令が十分な深さのキューを再試行することを可能にし、ポイズン・インジェクタ69が、次のフレーム境界を待ってポイズンCRCパターンを挿入することができるようにする。
【0042】
ブロック有限状態機械73(a〜c)を使用することによって、DRAMデータの、第一ティア・データ・バッファ61(a〜c)中へのローディングと、第二ティア転送バッファ65中へのローディングと、第二ティア転送バッファ65からメモリ・データ・チャネル59上へのアンローディングとの間の多様なクロック比(すなわち、ギア比)を使うことが可能になる。該好適な実施形態において、ブロック有限状態機械73(a〜c)はリード・データ・バッファ遅延有限状態機械71(a〜d)よりも高いクロック周波数で作動し、サブDRAMクロック・サイクル・リード・バッファ遅延を使って、個別のリード・データ転送の間にギャップのない移行をもたらすことを可能にする。ある他の実施形態において、ブロック有限状態機械73(a〜c)は、リード・データ・バッファ遅延有限状態機械71のクロック周波数で作動する。
【0043】
データ転送に用いられる第三コントローラは、リロード・マネージャ74であり、該マネージャは、第二ティア転送バッファ65をモニタし、リード・データ・バッファ遅延有限状態機械71(a〜d)に、第二ティア転送バッファ65が使用可能になることと、第一ティア・データ・バッファ61(a〜c)からデータをロードできることとを信号伝達する役割をもつ。この「早期」アンロードは、後続のデータのため第一ティア・データ・バッファ61(a〜c)の可及的速やかな解放を可能にし、第二ティア転送バッファ65が十分に利用されることを確実にする。データ・フローを介しての個別リード・データ・オペレーションの追跡に役立てるため、および誤った順序での第一ティア・データ・バッファ61(a〜c)のアンローディングを防止するために、各リード・データ転送にはidが割り当てられる。リロード・マネージャ74は、どのリードidが、各第一ティア・データ・バッファ61からアンロードされたか、どれを次にアンロードするかを追跡する。リード・データ・バッファ遅延有限状態機械71がブロック有限状態機械73(a〜c)にコントロールを移すときに、このidも転送される。ブロック有限状態機械73(a〜c)が、リロード・マネージャ74に、第二ティア転送バッファがアンロードされていることを信号伝達するとき、この送信の一部として転送idが連絡され、リロード・マネージャ74は、第二ティア転送バッファ65中に移動すべき次の転送idの情報を更新し、これにより、正しいリード・データ・バッファ遅延有限状態機械71(a〜d)に信号伝達することができる。
【0044】
本発明の一つの実施形態において、高速パス・ステージング・レジスタ62がタイミングを終了するのが示されている。ある好適な実施形態において、高速パス・ステージング・レジスタ62は、ステージング・レジスタである。ある他の実施形態において、階層的バッファ・システム60を提供するシステムおよび方法は、高速パス・ステージング・レジスタ62がなくても効率的に作動し、データはソース・ドメイン57から第二ティア転送バッファ65に直行する。さらに別の実施形態では、階層的バッファ・システム60を提供するシステムおよび方法は、タイミングを終了するため複数の高速パス・ステージング・レジスタ62を活用する。
【0045】
第一ティア・データ・バッファ61(a〜c)を早期にアンロードするために、階層的バッファ・システム60はリロード・マネージャ74を利用する。リロード・マネージャ74エンティティは、第一ティア・データ・バッファ61(a〜c)から第二ティア転送バッファ65へのデータのフローを能動的に管理し、データがメモリ・データ・チャネル59に送出される順番がきたとき第二ティア転送バッファ65で該データの準備が整っていることを確実にする。これが、一般に、データ構造の如何によって以下の3つの仕方のうち一つで作動することになる従来技術との主要差別化点である。該3つの仕方とは、(a)単に、遅延が期限切れになる(0に達する)まで、第一ティア・データ・バッファ61(a〜c)にデータを在置する。これは受動的バッファ・パイプライン化といわれる。というのは、第二ティア転送バッファ65中に利用可能な余地があっても、データは、該データが移動する前に遅延が期限切れになるまで何もせずに待つことになるからである。(b)第二ティア転送バッファ65が空になるまで待って、その次に第一ティア・データ・バッファ61(a〜c)から第二ティア転送バッファ65にデータを移動する。この方法は、まったく遅延タイマーには依存しない。これは、要求される遅延時間をデータ中に有するアーキテクチャに対しては機能しない。これは、データが非同期で移動する環境、または従来技術のような構造中でだけ使用することができる。言い換えれば、あるときには、第二ティア転送バッファ65は5サイクルで空になり得、続いてデータが第一ティア・データ・バッファ61(a〜c)から移動する。しかしながら、次回には、空になるのに50サイクルかかるかもしれないのに、システム・アーキテクチャはこの可変時間を考慮せず、秩序正しくものごとが運ばれることだけを要求する。(c)遅延期限切れに先立って第二ティア転送バッファ65が空になった場合に、データを第二ティア転送バッファ65に早期移動することを試みるため(a)と(b)との組み合わせを使えるが、空にならない場合、受動モードのオペレーションに戻ってしまい、ただ遅延が時間切れになるのを待つことになる。これに関する問題は、リードのシーケンスおよびそれらに関連する転送の長さの如何によっており、ギャップレス転送ルールに執着するのはうまくいかない場合がある。というのは、該ルールは、一旦データがバッファされ、ホストへの返信が開始されたならば、残りの全てデータの送信は、ギャップレスとなり正確なサイクルで行われことになるからである。
【0046】
図3は、本発明の一つの実施形態による、階層的バッファ・システム60のオペレーションの例を示すフロー・チャートである。該フロー・チャートは、データがバッファの階層を通って移動される際の、データに対する制御パスを示す。該フロー・チャートは、所定のリード遅延、バッファ利用度、およびトランザクション・サイズに基づいた、単一のトランザクション(すなわちバースト長8または7)に対する実行可能なデータ・パスを示す。
【0047】
ステップ101において、階層的バッファ・システム60は、データの第一バーストをメモリ・データ・チャネル59上に返さなければならない、正確な配信時間を計算する。該好適な実施形態は、要求者から見た、命令発信から先頭のデータ・バーストが到着するまでの合計伝搬時間を意味する、初期フレーム遅延(IFL:initial frame latency)で構成される方法を用いる。この往復遅延は、システム初期化シーケンスの間に一度計算され、参照のためローカルに保存される。バッファリングが必要でない、バス不活動のウィンドウの間に、コンピュータに対する初期フレーム遅延のベースラインが設定され、DRAMアクセス時間およびデータ・フロー内の内部遅延を取り入れてさらに調整される。リード命令が受信されたときにカウンタがロードされ、デクリメントが開始される。カウンタは、データの最初のバーストをメモリ・データ・チャネル59に送信しなければならなくなるまでの残り時間を表示する。
【0048】
初回リード命令に近い時間に到着した一切の後続リード命令は、メモリ・データ・チャネル59が利用可能になるまで待つ間の追加遅延を被る。この追加遅延は、現在のトランザクションのカウンタの値を設定されたベースラインと比較して決められる。その差異は、第二トランザクションが、メモリ・データ・チャネル59が利用可能になるのを待つため、バッファ格納されなければならない時間の量を表す。また、このリード・バッファ遅延の計算には、転送には複数サイクルの分メモリ・データ・チャネル59が使われるので、アップストリーム転送のバースト長を取り入れるための調整がさらに含まれることに留意すべきである。また、バッファ格納を要求する(すなわち、正のリード・データ・バッファ遅延を有する)後続のリード要求も、サイクル通過ごとにリード・データ・バッファ遅延をデクリメントするカウンタを有することになる。データが第一ティア・バッファから第二ティア・バッファに移動される際に、残りのリード・データ・バッファ遅延も、リード・データ・バッファ遅延有限状態機械71(a〜d)からブロック有限状態機械73(a〜c)に渡される。
【0049】
最後に、デイジー・チェーン・トポロジーの場合、階層的バッファ・システム60は、一つのメモリ・エレメント22Nが現在メモリ・データ・チャネル59を使っている間に、第二のメモリ・エレメント22Aに対するリード要求を受信することができる。この状況において、階層的バッファ・システム60は、デイジー・チェーンに取り付けられた各メモリ・エレメント22(A〜N)に対する初期フレーム遅延を格納する機能も包含し、階層的バッファ・システム60の各インスタンスが、各メモリ・エレメント(A〜N)の間で一切通信しないで、分散方式で全ての処理待ちトランザクションの配信時間を計算、追跡することができる。このようにして、階層的バッファ・システム60は、第二リード要求を管理し、該階層的バッファ・システム60が他の(遠隔の)メモリ・リソースを標的としていることを理解しながら、第一リード要求をスヌープし、第一要求に対する配信時間を計算し、次いで、これをリード・データ・バッファ遅延として第二要求配信時間計算に適用することになる。従って、リード・データ・バッファ遅延は、ローカルまたは遠隔いずれかのリソースがチャネルを使用していることに起因して、一つのトランザクションが、メモリ・データ・チャネル59が利用可能になるのを待つためにバッファ格納されなければならない時間量データとして算定される。リード・データ・バッファ遅延有限状態機械71(a〜d)およびブロック有限状態機械73(a〜c)に対するリード・データ・バッファ遅延を設定する手段を示すため、正確な配信時間を計算する方法を説明する。正確な配信時間を計算するための装置および方法は、本発明の譲受人に譲渡され、同時継続中の、2008年7月1日付の米国特許出願第12/166,226号(代理人番号:POU920080110)、名称「Automatic Read Data Flow Control In A Cascade Interconnect Memory System」に記載されている。メモリ・データ・チャネルに対する正確な配信時間を設定する他の手段も存在し、本発明が、本明細書に記載された以外の手段の使用を排除するものでないことを理解する。別の実施形態の一つの例は、リード命令の内部に、トランザクションに対し要求される配信時間を指定するフィールド使うことである。このアプローチは、バスまたはメモリのコントローラが、特定のフロー制御およびバス利用を設定することを可能にする。配信時間を計算するためた方法の如何にかかわらず、および関連する一切のリード・データ・バッファ遅延の如何にかかわらず、出願人らの発明は、このエレメントを用い、階層的バッファ・システム60を介してデータの移動を制御することを意図している。
【0050】
ステップ103において、階層的バッファ・システム60は、プロセッサ21によって要求されるデータを受信するのを待つ。プロセッサ21によって要求されたデータが受信されたならば、各トランザクションにはIDが割り当てられ、次いで階層的バッファ・システム60は、ステップ105において、遅延カウントがDRAMサイクルあたりのブロックのカウントよりも小さいかどうかを確認する。ステップ105において、遅延カウントがDRAMサイクルあたりのブロックのカウントよりも小さいと判定されれば、次いで、階層的バッファ・システム60のオペレーションは、ステップ127にスキップする。しかしながら、ステップ105において、遅延カウントがDRAMサイクルあたりのブロックのカウント以上であると判定された場合、階層的バッファ・システム60は、ステップ107において、第二ティア転送バッファ65が使用可能かどうかを判定する。ステップ107で、第二ティア転送バッファ65が利用可能と判定されると、階層的バッファ・システム60のオペレーションはステップ125にスキップする。しかしながら、第二ティア転送バッファ65が利用可能でないと判定された場合は、階層的バッファ・システム60は、ステップ109において、データを第一ティア・データ・バッファ61(a〜c)に格納する。これは、第一ティア・データ・バッファ61(a〜c)が利用可能であることを前提としており、利用可能でなければバッファ・オーバーフロー状態が生じる。
【0051】
ステップ111において、第二ティア転送バッファ65が満杯かどうかが判定される。第二ティア転送バッファ65が満杯であると判定された場合、階層的バッファ・システム60はステップ117にスキップする。しかしながら、ステップ111において、第二ティア転送バッファ65が満杯でないと判定された場合には、ステップ113において、第一ティア・データ・バッファ61(a〜c)中のシーケンスの次のデータ・トランザクションが、バースト・チョップかどうかが判定される。第一ティア・データ・バッファ61(a〜c)中のデータは、該データ・トランザクションのサイズが第一ティア・データ・バッファ61(a〜c)または第二ティア転送バッファ65の容量の半分である場合、バースト・チョップである。この場合、該バッファは半分(1/2)が埋まっている。ステップ113において、第一ティア・データ・バッファ61(a〜c)中のデータが、バースト・チョップであると判定された場合、階層的バッファ・システム60のオペレーションは、ステップ119にスキップする。また一方、ステップ113で、第一ティア・データ・バッファ61(a〜c)のデータがバースト・チョップでないと判定された場合、階層的バッファ・システム60のオペレーションは、ステップ115において、第二ティア転送バッファ65のアンロード時間の直前まで遅延される。この遅延を行ったのは、リード・データ・バッファ遅延有限状態機械71(a〜c)およびアービトレイション72である。該好適な実施形態において、ブロック有限状態機械73(a〜c)は、リロード・マネージャ74に、該機械が、ラインの次のトランザクションのコンテンツに基づいて、第二ティア転送バッファをメモリ・データ・チャネル59上に空けていると信号伝達する時間を変えることによって、この遅延を実施する。リロード・マネージャ74は、第二ティア転送バッファ65が半分詰まっているか完全満杯かによって、随時に、第一ティア・データ・バッファ61(a〜c)を早期アンロードする要求を発行する。次いで、階層的バッファ・システム60のオペレーションはステップ119にスキップする。
【0052】
ステップ117において、階層的バッファ・システム60のオペレーションは、第一ティア・データ・バッファ61(a〜c)から第二ティア転送バッファ65中へのデータのアンローディングを、第二ティア転送バッファ65がメモリ・データ・チャネル59へのデータのアンローディングを能動的に開始するまで遅延させる。第一ティア・データ・バッファ61(a〜c)にデータがある場合、それを第二ティア転送バッファ65に移動できる2つの好適なやり方がある。第一の好適な方法では、リード・データ・バッファ遅延有限状態機械71(a〜c)のカウントが自然失効する(すなわち、カウントが、DRAMクロック・サイクルあたりのリード・データ・バッファ遅延ステップ数の閾値より低くなる)。第二の好適な方法では、リロード・マネージャ74が、第二ティア転送バッファ65が利用可能でロードできることを示す。この「早期」の指示が行われる場合、それはカウントが自然失効する前となる。第一ティア・データ・バッファ61(a〜c)を第二ティア転送バッファ65中にアンロードするためのこの信号は、第二ティア転送バッファ65の現在のコンテンツ如何によって、2つの異なるときに生じることになる。第二ティア転送バッファ65がハーフブロックの(すなわちBL4)トランザクションを保持している場合、これは、第二ティア転送バッファ65中に2つの使用可能な空きスロットがあることを意味し、リロード・マネージャ74は、第一ティア・データ・バッファ61(a〜c)からの早期アンロードを、第二ティア転送バッファ65が満杯であった場合に比べ数サイクル早く信号伝達することができる。これにより、第二ティア転送バッファ65の2つの空きスロットを、第二ティア転送バッファ65の他の2つの満たされたスロットからどれかのデータのアンローディングが実際に開始されるよりも前に、満たし始めることができることになる。第二ティア転送バッファ65が満杯の場合には、階層的バッファ・システム60は、第一ティア・データ・バッファ61(a〜c)スロットが、少なくとも、該スロットが新しい第一ティア・データ・バッファ61(a〜c)データで満される前に、アンロードされるまで待たなければならない。
【0053】
ステップ103において割り当てられたトランザクションIDは、リード・データ遅延とともに使用され、トランザクションが順次的な仕方で処理されており、第一ティア・データ・バッファ61(a〜c)がラウンドロビン方式で処理されていることを確実にする。リロード・マネージャ74は、第二ティア転送バッファ65中にロードされることになる次回アンロード・トランザクションIDの実行タリーを維持する。リード・データ・バッファ遅延有限状態機械71(a〜c)がそれらのデータを第二ティア転送バッファ65にアンロードするとき、これら機械は、リロード・マネージャ74にトランザクションIDを示し、リロード・マネージャ74が、各第一ティア・データ・バッファ61(a〜c)からアンロードされることになる次のIDがどれかについての自分の記録を更新できるようにする。ブロック有限状態機械73(a〜c)が第二ティア転送バッファ65をアンロードする都度、これら機械もアンロードされたIDについてリロード・マネージャ74に通知する。これにより、トランザクションが順次的に処理されておりスキップされたものがないことを確実にする。
【0054】
ステップ119において、階層的バッファ・システム60のオペレーションは、第一ティア・データ・バッファ61(a〜c)を早期アンロードすることが実施可能かどうかを判定する。ステップ119で、第一ティア・データ・バッファ61(a〜c)が早期アンロード可能と判定された場合、階層的バッファ・システム60のオペレーションは、ステップ129にスキップする。早期アンロードを行うかどうかの決定はリロード・マネージャ74およびブロック有限状態機械73(a〜c)によって行われる。ブロック有限状態機械73(a〜c)が、リロード・マネージャ74に、第二ティア・バッファがアンロードされている、またはされようとしていることを通知した場合、リロード・マネージャ74は、次にアンロード予定の第一ティア・バッファに、そのコンテンツを「早期」アンロードすることを信号伝達可能かどうかを判定する。この決定は、該第一ティア・バッファがそのデータをまだ中に保有しているか、および該バッファがすでに自然的アンローディングを既に開始しているか、または開始しようとしているかに基づいて行われる。それが利用可能なデータを有しているが自然的アンロードは開始していない場合、該バッファは、リロード・マネージャ74から早期アンロードをすることを信号伝達されることになる。また一方、ステップ119において、第一ティア・データ・バッファ61(a〜c)が早期アンロードできないと判定された場合には、階層的バッファ・システム60のオペレーションは、ステップ121において、遅延カウントがDRAMサイクルあたりのブロックのカウントより小さいかどうかを判定する。ステップ121で、遅延カウントがDRAMサイクルあたりのブロックのカウント以上であると判定された場合、階層的バッファ・システム60のオペレーションは、ステップ121において遅延カウントをデクリメントし、ステップ109〜121に戻りこれを繰り返す。また一方、ステップ121で、遅延カウントがDRAMサイクルあたりのブロックのカウントを下回ると判定された場合、第一ティア・データ・バッファ61(a〜c)中のデータは、ステップ129において第二ティア転送バッファ65に格納される。
【0055】
ステップ131において、遅延カウントがゼロに等しいかどうか判定される。ステップ131で遅延カウントがゼロに等しくないと判定された場合、階層的バッファ・システム60のオペレーションは、ステップ133で遅延カウントをデクリメントし、ステップ129〜131に戻りこれを繰り返す。また一方、ステップ131で、遅延カウントがゼロに等しいと判定された場合、階層的バッファ・システム60は、ステップ135にスキップする。
【0056】
ステップ127において、プロセッサ21に要求されたデータは、高速パス・ステージング・レジスタ中、1つのサイクル間、格納される。高速パス・ステージング・レジスタ62中に格納されている、プロセッサ21に要求されたデータは、ステップ129で第二ティア転送バッファ65中に格納される。
【0057】
ステップ135において、第二ティア転送バッファ65中のデータはブロック・ステージング・レジスタ68に格納される。ステップ137で、ブロック・ステージング・レジスタ68中のデータは、ポイズン・インジェクタ69を通してメモリ・データ・チャネル59に移動される。ステップ139において、階層的バッファ・システム60のオペレーションはプロセッサ21のため要求された次のデータの受信を待つ。プロセッサ21のため要求されたデータを受信した後、階層的バッファ・システム60のオペレーションはステップ103〜139に戻りこれを繰り返す。
【0058】
図4〜図6は、本発明の一つの実施形態による、階層的バッファ・システム100のオペレーションの例を図示するタイミング図である。
【0059】
図4Aに示されているのは、ゼロ・リード・バッファ遅延のフラッシュ・リードに対する例示的タイミング図である。データをDRAMから返送するときに、メモリ・データ・チャネル59が空いている/空くことになる状況においては、第一ティア・データ・バッファ61(a〜c)の一つにデータを一時的に格納する必要はない。この場合、203で示すように、リード・データは、パイプライン化レジスタ、すなわち高速パス・ステージング・レジスタ62を介して第一ティア・データ・バッファ61(a〜c)を迂回することになり、204で示すように、フラッシュ・リード・データ・バッファ遅延有限状態機械71(a〜d)によって、直接第二ティア転送バッファ65中にロードされる。同時に、205で示すように、3つのブロック有限状態機械73(a〜c)の一つが呼び出され、第二ティア転送バッファ65からのデータの、メモリ・データ・チャネル59上への、シリアライゼーションを直ちに開始することになる。この例において、第二ティア転送バッファ65は、単純なステージング・レジスタとしての役割をする。これは、フラッシュ・リード・データが、該データが単一回のサイクルを超えてバッファ中に在置されることがなく、最小の待ち時間で構造を通り抜けて移動することを可能にする。
【0060】
図4B中に示されているのは、非ゼロ・バッファ遅延のフラッシュ・リードに対する例示的タイミング図である。このバッファ構造は、複数のバッファ・デバイスからメモリ・コントローラに戻る共通データチャネルが存在する、カスケード型相互接続メモリ・システムでの使用を意図されているので、リード・データを空の第二ティア転送バッファ65中にロードできるようにすることは可能であるが、第二ティア転送バッファ65から直ちにシリアライズしてメモリ・データ・チャネル59上に置くことはできない(すなわち、チャネルは使用中である)。この状況で、データはこれも第一ティア・データ・バッファ61(a〜c)を迂回して、第二ティア転送バッファ65中に直接にロードされることになる。しかしながら、この場合も、リード・データ・バッファ遅延有限状態機械71(a〜c)は、ブロック有限状態機械73(a〜c)に非ゼロのバッファ遅延待ち時間を渡すことになる。ブロック有限状態機械73(a〜c)は、リード・データを、第二ティア転送バッファ65からメモリ・データ・チャネル59上にアンロードする前に、このバッファ遅延時間を待つことになる。このデータが第二ティア転送バッファ65中で待っている間に後続のリード・オペレーションが要求された場合、これらのオペレーションからのデータが第一ティア・リード・データ・バッファを満たし始めることになる。
【0061】
図5に示されているのは、第一ティア・バッファから早期アンロードされる、バッファ格納リードに対する例示的タイミング図である。データ・スループットを最大化し、データが前述の階層的バッファ・システム60を通して適切な固定タイミングで返送されることを確実にするために、必要な場合にだけ第一ティア・データ・バッファ61(a〜c)が利用され、できるだけ迅速にデータがこれらバッファから第二ティア転送バッファ65にアンロードされ、しかして、後続のリード・オペレーションのため第一ティア・データ・バッファを空けるように注意が払われる。ブロック有限状態機械73(a〜c)がそのリード・データを第二ティア転送バッファ65からメモリ・データ・チャネル59上にアンロードを開始するとき、該機械は、リロード・マネージャ74に、第二ティア転送バッファ65が利用可能であることを信号伝達し、今アンロードされルデータ伝送に対するidを提供する。次いで、リロード・マネージャ74は、第一ティア・データ・バッファ61(a〜c)中にアンロードを待つデータがある場合、ラインの次のリード・データ・バッファ遅延有限状態機械71(a〜c)に、第一ティア・データ・バッファ61(a〜c)からのそのデータを第二ティア転送バッファ65中にアンロードするよう信号伝達することになる。これは、リード・データ・バッファ遅延有限状態機械71(a〜c)に、そのリード・データを、早期に、すなわち待ちカウントがDRAMサイクルあたりのステップ閾値に達する前に、第二ティア転送バッファ65中にロードさせる。次いで、リード・データ・バッファ遅延有限状態機械71(a〜c)は、次に利用可能なブロック有限状態機械73(a〜c)を呼び出し、idおよび残余の待ちカウントがブロック有限状態機械73(a〜c)に移され、カウントされ、データがメモリ・チャネル上にアンロードされる。第一ティア・データ・バッファ61(a〜c)の利用度を最大化するため、第二ティア転送バッファ65には、しばしば、前のリード・データをメモリ・データ・チャネル59にアンロードしながら同時に新しいデータがロードされる。
【0062】
図6に示されているのは、第二ティア転送バッファ65が2つのソースから同時にロードされることができ、メモリ・データ・チャネル59が即時の使用のため利用可能である場合の、例示的タイミング図である。このシナリオにおいて、リード・データは、2つの場所、ポートAおよびポートBから得られる。ポートAからのトランザクションはバースト・チョップ4のトランザクションであり、ポートB上のトランザクションはBL8である。同時に行われているが、ポートAからのリードは、メモリ・データ・チャネル上で優先権を与えられており、先に返送される。これにより、トランザクションAは、高速パス・ステージング・レジスタを利用し、第二ティア転送バッファ65の上位半分中にロードでき、即時にブロック・ステージング・レジスタに移ることができる(すなわち、リード遅延=0)。トランザクションBは、第二ティア転送バッファ65中にロードされる前に、第一ティア・データ・バッファの一つに格納されることが必要となり、4ブロックのリード遅延が割り当てられることになる。第二ティア転送バッファ65は、トランザクションAからのデータがロードされているとき半分だけが満たされ、直ちにブロック・ステージング・レジスタ中にアンロードされることになるので、第二ティア転送バッファ65の下位半分は、直ちにトランザクションBからのデータのロードを開始することができる。トランザクションBからのデータは、第二ティア転送バッファ65のより下位のスロットから順次にロードが開始され、最後には、該バッファのより上位のスロット中の、既にアンロードされているトランザクションAからのデータを上書きする。
【0063】
図7に示されているのは、フラッシュ・リード、バッファ格納リード、および第一ティア・データ・バッファ61(a〜c)からの通常のアンロードを含む、例示的タイミング図である。前述のように、第二ティア転送バッファ65が使用されている、または使用されようとしているときに、後続のリード・オペレーションが要求された場合、そのオペレーションから返送されるデータには、非ゼロのデータ・バッファ遅延時間が割り当てられ、第一ティア・データ・バッファ61(a〜c)の一つに格納されることになる。データが第一ティア・データ・バッファ61(a〜c)中にロードされるとき、それに対応するリード・データ・バッファ遅延有限状態機械71(a〜c)が呼び出される。そのリード・データ・バッファ遅延有限状態機械71(a〜c)は、DRAMクロック・サイクルで該リード・バッファ遅延待ち時間をカウント・ダウンすることになる。リード・バッファ遅延は、サブDRAMクロック・サイクルの粒度で作動されるので、リード・バッファ遅延カウントがDRAMサイクルあたりのステップ閾値に達したならば、リード・データ・バッファ遅延有限状態機械71(a〜c)は、自動的に次に利用可能なブロック有限状態機械73(a〜c)呼び出し、そのデータを第二ティア転送バッファ65中にアンロードする。残りのリード・バッファ待ち時間(すなわち、残余)は、ブロック有限状態機械73(a〜c)が呼び出されたときに、該機械に渡され、該ブロック有限状態機械(a〜c)は、その残り残余時間を待った後で、第二ティア転送バッファ65からデータをメモリ・データ・チャネル59にアンロードすることになる。この例において、残余時間はゼロであり、該リード・データが第二ティア転送バッファ65の中でさらなる時間遅延されることはない。該好適な実施形態において、第二ティア転送バッファ65は2つのローディング・ポートを有する。
【0064】
本発明の前述の実施形態は、特にどの「好適な」実施形態も、インプリメンテーションの単なる可能な事例であり、単に、本発明の原理の明瞭な理解のため記述したものであることを強調しておきたい。本発明の精神および原理から実質的に逸脱することなく、本発明の前述の実施形態(群)に、多くの変形および修改を加えることができる。かかる全ての修改および変形は、本明細書内の開示および本発明の範囲に含まれるものと意図されており、添付の請求項で保護されている。
【符号の説明】
【0065】
11 コンピュータ
21 プロセッサ
22A メモリ・エレメント
22N メモリ・エレメント
23 ローカル・インタフェース
24 マウス
25 キーボード
26 ディスプレイ
27 モデム/通信ポート
31 オペレーティング・システム
41A プロセッサ・コア
41N プロセッサ・コア
42 キャッシュ・メモリ
60 階層的バッファ・システム

【特許請求の範囲】
【請求項1】
複数のメモリ・ソースに対する階層的バッファ・システム中へのデータ・エントリを制御する方法であって、
データが複数の第一ティア・バッファから一つの第二ティア転送バッファに流通できるようにバッファを管理するステップと、
前記第二ティア転送バッファ中の前記データに対する正確な配信時間を計算するステップと、
前記第二ティア転送バッファ中の前記データを、共用データ・バス上に前記計算された正確な配信時間で配信するステップと、
を含む、方法。
【請求項2】
前記正確な配信時間の前記計算のために初期フレーム待ち時間計算を用いるステップ、
をさらに含む、請求項1に記載の方法。
【請求項3】
データを前記第一ティア・バッファから前記第二ティア転送バッファに、および前記第二ティア転送バッファから前記共用データ・バス上に移動することが可能になるときまで前記データを前記第一ティア・バッファ中に保持するため、リード・データ・バッファ遅延を用いるステップ、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記リード・データ・バッファ遅延の期限が切れ次第、受動的にデータを前記第二ティア転送バッファに移動するステップ、
をさらに含む、請求項3に記載の方法。
【請求項5】
前記第二ティア転送バッファ中のスロットが利用可能になったならば、能動的にデータを前記第二ティア転送バッファに移動するステップ、
をさらに含む、請求項3に記載の方法。
【請求項6】
前記第二ティア転送バッファは、従来型の先入れ先出しバッファとして作動することができ、前記第二ティア転送バッファがステージング・レジスタとしての役割をする能力をさらに含み、前記第二ティア転送バッファは、複数のデータ転送長さを含む前記データを最小の待ち時間で配信するため、前記データの同時ローディングを備える、請求項1に記載の方法。
【請求項7】
メモリ・コンポーネントを前記共用バスと同期させるための複数のギア比、
をさらに含む、請求項1に記載の方法。
【請求項8】
好適なデータ転送レートを維持しながら、前記複数のギア比の間で必要な速度整合性を提供するため、返送データ・ストリーム中にアイドル・ギャップを挿入するステップ、
をさらに含む、請求項7に記載の方法。
【請求項9】
複数のトランザクションからのバッファされたデータを、アイドル・ギャップを挿入することなく、シームレスなパターンで返送するステップ、
をさらに含む、請求項7に記載の方法。
【請求項10】
前記共用データ・バスが利用可能で、バッファ格納が必要でないとき、待ち時間を最小化するためデータを高速通過させるステップ、
をさらに含む、請求項1に記載の方法。
【請求項11】
メモリ・コントローラにシステム回復ポリシーを実施するようアラートするため、データ・フレーム境界にポイズン・データ・パターンを差し挟むステップ、
をさらに含む、請求項1に記載の方法。
【請求項12】
メモリ・コアと、
共用データ・バスと
前記メモリからデータを受信する複数の第一ティア・バッファと、
前記データを所定のタイミングで前記共用データ・バス上に配信する第二ティア転送バッファと、
を含む集積回路デバイス。
【請求項13】
データを前記第一ティア・バッファから前記第二ティア転送バッファに、および前記第二ティア転送バッファから前記共用データ・バス上に移動することが可能になるときまで前記データを前記第一ティア・バッファ中に保持するための複数のリード・データ・バッファ遅延バッファをさらに含み、前記複数のリード・データ・バッファ遅延バッファは、タグ、トークン、またはアラート・メカニズムの必要なしに、前記第一ティア・バッファ中の前記データに対する正確な配信時間を計算するため、初期フレーム待ち時間計算を用いる、
請求項12に記載の集積回路デバイス。
【請求項14】
前記複数の第一ティア・バッファ中の前記データは、前記リード・データ・バッファ遅延の期限が切れ、前記第二ティア転送バッファ中のスロットが利用可能になったとき、受動的に前記第二ティア転送バッファに移動される、請求項13に記載の集積回路デバイス。
【請求項15】
前記第二ティア転送バッファは、従来型の先入れ先出しバッファとして作動することができ、前記第二ティア転送バッファがステージング・レジスタとしての役割をする能力をさらに含み、前記第二ティア転送バッファは、複数のデータ転送長さを含む前記データを最小の待ち時間で配信するため、前記データの同時ローディングを備える、請求項12に記載の集積回路デバイス。
【請求項16】
メモリ・コンポーネントを前記共用バスと同期させるための複数のギア比をさらに含み、前記複数のギア比の少なくとも一つは、好適なデータ転送レートを維持しながら必要な速度整合性を提供するため、返送データ・ストリーム中にアイドル・ギャップを挿入する、
請求項12に記載の集積回路デバイス。
【請求項17】
データを包含するキャッシュ・コアと、
共用データ・バスと、
前記データが複数の第一ティア・バッファから第二ティア転送バッファに流通するのを可能にするように前記バッファを管理し、
前記データを所定のタイミングで共用データ・バス上に配信する
ように構成された回路と、
を含む、プロセッサ・デバイス。
【請求項18】
データを前記第一ティア・バッファから前記第二ティア転送バッファに、および前記第二ティア転送バッファから前記共用データ・バス上に移動することが可能になるときまで前記データを前記第一ティア・バッファ中に保持するための複数のリード・データ・バッファ遅延バッファをさらに含み、前記複数のリード・データ・バッファ遅延バッファは、タグ、トークン、またはアラート・メカニズムの必要なしに、前記第一ティア・バッファ中の前記データに対する正確な配信時間を計算するため、初期フレーム待ち時間計算を用いる、
請求項17に記載のプロセッサ・デバイス。
【請求項19】
前記第二ティア転送バッファは、従来型の先入れ先出しバッファとして作動することができ、前記第二ティア転送バッファがステージング・レジスタとしての役割をする能力をさらに含み、前記第二ティア転送バッファは、複数のデータ転送長さを含む前記データを最小の待ち時間で配信するため、前記データの同時ローディングを備える、請求項17に記載のプロセッサ・デバイス。
【請求項20】
メモリ・コンポーネントを前記共用バスと同期させるための複数のギア比をさらに含み、前記複数のギア比の少なくとも一つは、好適なデータ転送レートを維持しながら必要な速度整合性を提供するため、返送データ・ストリーム中にアイドル・ギャップを挿入する、
請求項17に記載のプロセッサ・デバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−59252(P2012−59252A)
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願番号】特願2011−166269(P2011−166269)
【出願日】平成23年7月29日(2011.7.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FRAM
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】