JP3809442B2 - メモリ要求の動的並べ替え - Google Patents

メモリ要求の動的並べ替え Download PDF

Info

Publication number
JP3809442B2
JP3809442B2 JP2004043356A JP2004043356A JP3809442B2 JP 3809442 B2 JP3809442 B2 JP 3809442B2 JP 2004043356 A JP2004043356 A JP 2004043356A JP 2004043356 A JP2004043356 A JP 2004043356A JP 3809442 B2 JP3809442 B2 JP 3809442B2
Authority
JP
Japan
Prior art keywords
transaction
arbitrator
buffer
entry
contention
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004043356A
Other languages
English (en)
Other versions
JP2004252985A (ja
Inventor
チャールズ ロス デビット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2004252985A publication Critical patent/JP2004252985A/ja
Application granted granted Critical
Publication of JP3809442B2 publication Critical patent/JP3809442B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison

Description

本発明は、一般に、いくつかのデータ処理ユニットを含むシステムに関し、詳細には、共用メモリ・サブシステムにアクセスするいくつかのベクトル処理ユニットを含むシステムに関する。
本明細書で、ベクトルとは、スカラー値の順序付けられたリストとして定義される。コンピュータのメモリ内の単純なベクトルは、開始アドレス、長さ(要素の数)、およびストライド(メモリ内における要素間の一定の距離)を有するものと定義される。例えば、メモリ内に格納されたアレイが、ベクトルである。ベクトル・プロセッサは、メモリ・サブシステムから値のベクトルをフェッチし、それらの値に対して演算を行い、再びメモリ・サブシステムに格納するベクトル命令を処理する。基本的に、ベクトル処理は、当技術分野で周知の単一命令多重データ(Single Instruction Multiple Data)(SIMD)並列処理技術である。他方、スカラー処理は、1つの命令が各データ値に対して作用することを必要とする。
ベクトル・プロセッサのパフォーマンスは、ベクトル・プロセッサがアクセスするメモリ・サブシステム内におけるリソース競合の出現回数(occurrences)に大きく依存する。それらの競合により、ベクトル・プロセッサを含むシステム全体にピーク・メモリ帯域幅の一部分が使用不可能で、アクセス不可能になる。また、そのようなリソース競合により、メモリ・サブシステムの平均メモリ・アクセス待ち時間も増加する。複数のベクトルが同時にアクティブであるシステムにおいて、ベクトル内競合として知られる同一のベクトルに対するアクセス間の競合、またはベクトル間競合として知られる異なるベクトルに対するアクセス間の競合が生じる可能性がある。
メモリ・サブシステム・リソース競合の原因は、多数、存在する。ただし、原因は、特に、インターリーブ・メモリ・サブシステムを使用していること、および/または異種のアーキテクチャでメモリ・コンポーネントを使用していることに関連する。例えば、最新のダイナミック・ランダム・アクセス・メモリ(DRAM)技術は、通常、バンクおよびページに階層式に構成されている。メモリ・コンポーネント内のメモリ・アレイのそれらのパーティションがアクティブにされる順序が、メモリ・コンポーネントのパフォーマンスに相当な影響を与える。これらのデバイスの階層構造化に加えて、RAMBUS(商標)ダイレクト・ランダム・アクセス・メモリ(Direct Random Access Memory)(RDRAM(登録商標))やダブル・データ・レート・シンクロナス・ダイナミック・ランダム・アクセス・メモリ(Double Data Rate Synchronous Dynamic Random Access Memory)(DDR SDRAM)などの一部の技術は、バンク・インターリーブまたはページ・インターリーブをサポートする。この特徴により、ある要件が満たされる限り、メモリ・サブシステムの待ち時間によって制限されない速度でトランザクションを発行することができるメモリ・アクセスのパイプライン手法(pipelined approach)が容易になる。
メモリ・サブシステムのパフォーマンスを最適化する2つの従来の手法が存在する。それらの手法は、一般に、2つの可能なアクセス・ポリシー、すなわち、オープン・ページ・ポリシーおよびクローズド・ページ・ポリシーに従って適用される。
オープン・ページ・ポリシー
一度、ページがアクセスのために開かれると、そのページに対する後のアクセスを比較的短い待ち時間で実行することができる。オープン・ページ・ポリシーのケースでは、競合は、ページ交差(page−crossing)イベントとして定義される。ページ交差イベントが生じた場合、DRAMコアに再び現在のオープン・ページを復元し、次の要求されたデータを含むページを抽出(つまり、開く)のに数サイクル余計に必要とされる。同一のページに対する繰り返しのアクセスを持続することができる場合、トランザクションをより高い速度で発行することができるが、その速度は、システム・クロック周期の分数にとどまる。これは、この短い待ち時間の動作モードでも、各トランザクションを完了するのに数サイクルが必要とされるためである。さらに、インターリーブが可能ではないので、各トランザクションが完了してからでないと、次のトランザクションが発行されない。メモリシステムのピーク・トランザクション速度は、最短待ち時間の動作モードによって制限され、メモリの同じページに繰り返しアクセスすることによって達せられる。
この動作モードを活用する最も一般的に使用される手法は、各ベクトルにバースト・アクセスを行う(burst access)ことである。実質的に、後の計算で必要とされるものと予期されるデータが、あらかじめフェッチ(pre−fetch)される。
この手法は、以下を含むいくつかの欠点を抱えている。
・最大トランザクション速度が、クロック周期と比べて比較的低くとどまる。
・データ処理ユニット近くにバースト・データをバッファリングする比較的大きいキャッシュ群が必要とされる。この文脈で、データという用語は、フェッチされた命令、または前記命令のオペランドを指す。
・メモリ・アクセス・パターンにおけるデータ依存関係により、あらかじめフェッチされたデータが無効化され、正しいデータを獲得する繰り返しのフェッチが必要とされる可能性がある。
クローズド・ページ・ポリシー
オープン・ページ・ポリシーに対する代替として、特に、メモリ・サブシステムがインターリーブ・アーキテクチャを有する場合、クローズド・ページ・ポリシーを使用することができる。トランザクションは、インターリーブ・メモリシステムの要件に従って発行される限り、毎クロック・サイクルに発行されることが可能である。例えば、メモリシステムは、4サイクルの最小待ち時間、および4重インターリーブ・アーキテクチャを有することが可能である。その場合、トランザクション発行速度を最大化するため、メモリシステムのいずれの単独のサブユニットにも、4クロックサイクルごとに1回より頻繁にアクセスを行ってはならない。これが達せられた場合、ピーク・トランザクション速度は、メモリ・サブシステム待ち行列によって制限されず、代わりに、システム・クロック周波数だけによって制限される。ここでは、メモリ・サブユニットとは、インターリーブが適用されるメモリ・サブシステム内の階層のレベルを指す。クローズド・ページ・ポリシー競合は、メモリのインターリーブされたサブユニットに対するアクセス頻度をそのサブユニットの最大動作周波数より低く保つことができないこととして定義される。以上の要件は、メモリの同じサブユニットに対して何度もアクセスすることを回避し、メモリ・サブシステム待ち時間の逆数として定義された最大周波数でサブユニットに再アクセスすることによって満たされる。
インターリーブ・メモリにおいて競合の頻度を減らそうとする試みにおいて最も一般的に使用される1つの方法が、アドレスの再マッピングである。この技術は、各ストリームに、直線的に、通常、1のストライドでアクセスが行われることを前提にする。この前提が成り立つ場合には、アドレス・バスのビットを適切に入れ替えることにより、ベクトルアクセスが常に競合を免れることが確実になる。実質上、アドレスの再マッピングにより、インターリーブの要件を満たす形でメモリ・サブシステムにわたってベクトルが分散されることが確実になる。アドレスの再マッピングは、一般に、静的に適用されるが、原理的には、動的に適用することも可能である。
この手法には、以下を含むいくつかの欠点が存在する。
・この技術は、ベクトル内競合を減らすことだけに役立ち得る。
・統計上、この技術は、ベクトル間競合の頻度を改善することができない。
・以上、最初の2点に鑑みて、アドレスの再マッピングは、オープン・ページ・ポリシーの場合と同様に、バースト指向のプリフェッチ(pre−fetch)動作モードにおいてだけ本当に有効である。したがって、オープン・ページ・ポリシーの場合と同様に、処理ユニット近くで比較的大きいキャッシュ群が必要とされ、アクセス・パターンにおけるデータ依存関係により、一部のプリフェッチが無効化される可能性があり、
・ベクトルには、常に1のストライドでアクセスが行われるわけではない。しばしば、アクセス・パターンは、アドレスの再マッピングによって競合がないようにすることが可能ないずれの明確に定義されたストライドにも類似しない。
本発明の目的は、上記従来技術の1つまたは複数の欠点を実質的に克服するか、あるいは少なくとも改善することである。
本発明の第1の態様によれば、メモリシステムに対するアクセス要求を並べ替えてメモリシステム競合を減らすためのアービトレータ(arbitrator)が提供され、アービトレータは、
アクセス要求をバッファリングするためのトランザクション・バッファと、
アービトレータによって発行されたアクセス要求をカウントするための出力カウンタと、
少なくとも出力カウンタをトランザクション・バッファ内のアクセス要求にマッピングするためのマッピング・テーブルと、
メモリシステム競合を減らせる発行順序でマッピングがアクセス要求をポイントするように、マッピング・テーブル内のエントリを動的に並べ替える並べ替えユニットとを含む。
本発明の第2の態様によれば、メモリシステムに対するアクセス要求を並べ替えてメモリシステム競合を減らすアービトレーション方法が提供され、方法は、
(a)アクセス要求をトランザクション・バッファ内にバッファリングするステップ、
(b)少なくとも出力カウンタをトランザクション・バッファ内のアクセス要求にマッピングするマッピング・テーブルを維持するステップ、および
(c)メモリシステム競合を減らせる発行順序でマッピングがアクセス要求をポイントするように、マッピング・テーブル内のエントリを動的に並べ替えるステップを含む。
また、本発明のその他の態様も開示する。
次に、本発明の1つまたは複数の実施形態を図面を参照して説明する。
添付の図面の1つまたは複数において、同じ符号を有するステップおよび/または特徴を参照する場合、それらのステップおよび/または特徴は、この説明では、そうでないことを明記しない限り、同じ機能、または同じ動作を有する。
図1は、ホスト・コンピュータ100およびプリンタ・デバイス80を含むプリンタ・システム50の概略ブロック図を示している。ホスト・コンピュータ100は、コンピュータ・モジュール101、入力デバイス102、およびディスプレイ・デバイス114を含む。コンピュータ・モジュール101は、通常、少なくとも1つの処理ユニット105、例えば、半導体ランダム・アクセス・メモリ(RAM)および読み取り専用メモリ(ROM)から形成されたメモリ・ユニット106、ビデオ・インターフェース107、入力デバイス102のためのI/Oインターフェース113、およびプリンタ・デバイス80のためのプリンタ・インターフェース104を含む入力/出力(I/O)インターフェースを含む。記憶デバイス109が提供され、通常、ハードディスク・ドライブ110およびフロッピー(登録商標)ディスク・ドライブ111を含む。CD−ROMドライブ112が、通常、データの不揮発性ソースとして提供される。コンピュータ・モジュール101のコンポーネント104ないし113は、通常、相互接続されたバス117を介して、当分野の技術者に周知のコンピュータ・システム100の従来の動作モードをもたらす形で通信する。
ホスト・コンピュータ100のプロセッサ105上で実行されるアプリケーションが、イメージ・データを、例えば、ディスプレイ・デバイス114上で表示可能であるグラフィックス・デバイス・インターフェース(GDI)フォーマットからオブジェクト・グラフィックス・フォーマットに変換してから、印刷のためにそのイメージ・データをプリンタ・デバイス80にプリンタ・インターフェース104を介して送る。
プリンタ・デバイス80は、I/Oインターフェース86、プリントエンジン81、複数のベクトル・プロセッサ82ないし85、メモリ・インターフェース20、およびローカル・メモリ150を含む。I/Oインターフェース86、プリントエンジン81、ベクトル・プロセッサ82ないし85、およびメモリ・インターフェース20は、当技術分野で周知の形で通信バス91を介して通信する。ローカル・メモリ150は、メモリ・インターフェース20とインターフェースをとる。
I/Oインターフェース86は、プリンタ・インターフェース104を介してプリンタ・デバイス80をホスト・コンピュータ100にインターフェースする。ホスト・コンピュータ100からI/Oインターフェース86によって受け取られたイメージ・データが、メモリ・インターフェース20を介してローカル・メモリ150に転送され、格納されてから、さらに処理される。
ベクトル・プロセッサ82ないし85は、ローカル・メモリ150から圧縮イメージ・データを読み取り、その圧縮イメージ・データをオブジェクト・グラフィックス・フォーマットのイメージ・データに変換し、イメージ・データを格納するためにローカル・メモリ150に送り返すディコンプレッサ(decompressor)82を含む。
ベクトル・プロセッサ82ないし85は、オブジェクト−エッジ・トラッカ(tracker)83およびピクセル・ジェネレータ84をさらに含む。オブジェクト−エッジ・トラッカ83は、ローカル・メモリ150内にオブジェクト・グラフィックス・フォーマットで格納されたイメージ・データを解析して、複数層のイメージ・オブジェクトが印刷される順序を決める。これは、ピクセルのプロパティをラスタ順に決めるのに必要とされる。次に、ピクセル・ジェネレータ84が、オブジェクト−エッジ・トラッカ83からイメージ・オブジェクトの順序を受け取り、各ピクセルに関するピクセル・データを順にフォーマットし、そのピクセル・データを格納するためにローカル・メモリ150に送り返す。
ベクトル・プロセッサ82ないし85は、ピクセル・データにアクセスし、そのピクセル・データをCMYKなどのプリンタ色空間に変換する色空間変換器85をさらに含む。プリンタ色空間内のピクセル・データが、格納のためにローカル・メモリ150に送り返される。
したがって、I/Oインターフェース86、プリントエンジン81、および複数のベクトル・プロセッサ82ないし85がまとまりとしてトランザクション要求のソースを生じさせて、いくつかのトランザクション・ストリームを形成する。各データ処理ユニット81ないし86は、メモリ・インターフェース20を介してローカル・メモリ150内の1つまたは複数のベクトルにアクセスすることができる。
メモリ・インターフェース20は、第1レベル・アービトレータ22および第2レベル・アービトレータ24を含む。データ処理ユニット81ないし86が、第1レベル・アービトレータ22に対して同時にメモリ・アクセスの要求を行う。第1レベル・アービトレータ22は、データ処理ユニット81ないし86から、ローカル・メモリ150内の別個のベクトルに対するトランザクション/別個のベクトルからのトランザクションにそれぞれが関連する複数のトランザクション要求を入力として受け取り、別個のトランザクション・ストリームをインターリーブして、使用されるアービトレーションアルゴリズムの規則に従って第2レベル・アービトレータ24に対する単一の合成トランザクション・ストリーム25にする。第1レベル・アービトレータ22によって実行されるアービトレーションは、データ処理ユニット81ないし86の間でメモリ帯域幅を配分して、すべてのデータ処理ユニット81ないし86がアクティブに保たれることを確実にすることに関わる。第1レベルアービトレーションアルゴリズムは、例えば、データ処理ユニット81ないし86からのトランザクション要求にラウンドロビン・スタイルのアービトレーションを適用することができる。
単一の合成データ・ストリーム25は、ローカル・メモリ150などのメモリに送ることができる。ただし、第1レベル・アービトレータ22によって形成された単一の合成データ・ストリーム25は、メモリ・サブシステムの要件に関して最適化されておらず、メモリ・サブシステム内で複数のリソース競合イベントを生じさせる可能性がある。
したがって、第2レベル・アービトレータ24が、第2のアービトレーションアルゴリズムを適用して、最適化されたベクトル間インターリーブを有する単一の合成トランザクション・ストリーム27を生成することにより、第1レベル・アービトレータ22によって形成された合成データ・ストリーム25を処理するために、第1レベル・アービトレータ22とローカル・メモリ150の間でトランザクション・インターフェースを提供する。
図2は、第2レベル・アービトレータ24のブロック図をより詳細に示している。第2レベル・アービトレータ24の動作の中心となるのが、N個のトランザクション・エントリを保持するトランザクション・バッファ203である。第1レベル・アービトレータ22(図1)から受け取られた合成トランザクション・ストリーム25(入力ストリーム)に対するトランザクションが、トランザクション・バッファ203内にバッファリングされてから、ローカル・メモリ150(図1)に対する競合を減らす順序で並べ替えられたトランザクション・ストリーム27(リオーダード出力ストリーム)に発行される。
トランザクション・バッファ203には、2つのモジュロ16カウンタ、すなわち、入力カウンタ205および出力カウンタ207によってインデックスが付けられる。ただし、カウンタ205および207は、トランザクション・バッファ203に直接にインデックスを付けない。代わりに、カウンタ205および207は、ハッシュ・テーブル211の形態のマッピング・テーブルにインデックスを付け、テーブル211が、入力カウンタ205および出力カウンタ207からそれぞれ書き込みポインタ285および読み取りポインタ287を生成する。入力カウンタ205は、トランザクションがバッファ203にロードされた場合にはいつでも増分され、他方、出力カウンタ207は、バッファ203から並べ替えられたトランザクション・ストリーム27にトランザクションが発行された場合にはいつでも更新される。
入力カウンタ205は、ハッシュ・テーブル211を介して、デマルチプレクサ204に対して動作することによってトランザクション・バッファ203にインデックスを付け、デマルチプレクサ204は、合成トランザクション・ストリーム25上で受け取られた次のトランザクションを書き込みポインタ285によってポイントされたバッファ位置でバッファ203にロードする。同様に、出力カウンタ207も、ハッシュ・テーブル211を介して、マルチプレクサ206に対して動作することによってトランザクション・バッファ203にインデックスを付け、マルチプレクサ206は、トランザクション・バッファ203内の読み取りポインタ287によってポイントされたトランザクションが、並べ替えられたトランザクション・ストリーム27上に発行される次のトランザクションとなるように選択する。読み取りポインタ287がトランザクション・バッファ203内のトランザクションをポイントする順序は、ローカル・メモリ150(図1)に対する競合を少なくする順序である。
以上のことから、ハッシュ・テーブル211は2つの機能を実行することを見て取ることができる。第1に、テーブル211は、入力カウンタ205をトランザクション・バッファ203内のバッファ位置に、そのバッファ位置が第2レベルのアービトレータ順で空にされ、そのバッファ位置を新しいトランザクションで埋めることが可能になるにつれてマッピングする。第2に、ハッシュ・テーブル211は、出力カウンタ207をメモリ・リソース競合の最小の出現回数を含むトランザクション・バッファ203内の一続きのバッファ位置にマッピングする。ハッシュ・テーブル211は、第2レベル・アービトレータ24がリソース競合を回避するように出力ストリームを並べ替えた場合にはいつでも更新される。
リソース競合は、ベクトル間競合検出回路215およびベクトル内競合検出回路219によって検出される。また、合成トランザクション・ストリーム27上で発行された最新のいくつかのトランザクションのアドレスを格納する発行済みアドレス・パイプライン217も提供される。
ベクトル間競合検出回路215が、トランザクション・バッファ203内にバッファリングされた各トランザクションB(n)のアドレスを発行済みアドレス・パイプライン217の中に格納された発行済みアドレスと比較し、そのトランザクションB(n)のいずれが発行済みアドレス・パイプライン217の中に格納された発行済みアドレスと競合するかを特定する。これを行う際、ベクトル間競合検出回路215は、アドレスのメモリ・サブユニットを定義していないすべてのアドレス・ビットをマスクして消し(mask out)、トランザクションB(n)のアドレスが、発行済みアドレス・パイプライン217の中に格納された1つまたは複数の前の発行済みアドレスのアドレスと同じメモリ・サブユニットの中にあるかどうかを判定する。
4重インターリーブ・アーキテクチャを有するベクトル間競合検出サブ回路250を図3に詳細に示している。ベクトル間競合検出回路215(図2)は、N個のそのようなサブ回路250を含む。各ベクトル間競合検出サブ回路250は、トランザクション・バッファ230の1つのバッファ・アドレスにおけるトランザクションB(n)のアドレスを発行済みアドレス・パイプライン217の中に格納された発行済みアドレスと比較する。
4重インターリーブ・アーキテクチャを有するベクトル間競合検出サブ回路250は、3つのアドレス比較器252を含む。各アドレス比較器252は、トランザクションB(n)のアドレスを発行済みアドレス・パイプライン217の中に格納された1つの発行済みアドレスと比較する。ベクトル間競合検出サブ回路250により、したがって、ベクトル間競合検出回路215により、第2レベル・アービトレータ24が、クローズド・ページ・メモリ動作モードとオープン・ページ・メモリ動作モードの両方の規則を実現することが可能になる。クローズド・ページ・モードが所望される場合、クローズド・ページ・モード・フラグ251を「1」の値に設定することにより、展開されたメモリ技術のタイプに合うようにいずれのモードも選択することができる。クローズド・ページ・モードでは、つまり、クローズド・ページ・モード・フラグ251が「1」に設定されているとき、トランザクションB(n)のアドレスが、前の3つの発行済みアドレスのいずれか1つのアドレスと同じメモリ・サブユニット内にある場合、論理要素254ないし257の動作を介して、ベクトル間競合フリー(free)フラグ253が「0」に設定されて、競合が検出されたことが示される。代替として、トランザクションB(n)のアドレスが、前の3つの発行済みトランザクションのそれぞれのアドレスとは異なるメモリ・サブユニット内にあると、ベクトル間競合フリー・フラグ253が「1」に設定されて、クローズド・ページ・モード競合がまったく存在しないことが示される。
オープン・ページ・モードでは、つまり、クローズド・ページ・モード・フラグ251が「0」の値に設定されている場合、ベクトル間競合検出サブ回路250は、トランザクションB(n)のアドレスが、前の発行済みアドレスのアドレスと同じメモリ・サブユニット内だけにあるかどうかを検出する。トランザクションB(n)のアドレスが前の発行済みトランザクションのアドレスと同じメモリ・サブユニット内にある場合、ベクトル間競合フリー・フラグ253が、「1」の値に設定される。代替として、ベクトル間競合フリー・フラグ253が「0」の値に設定され、トランザクションB(n)のアドレスが前の発行済みトランザクションのアドレスとは異なるメモリ・サブユニット内にあることが示される。
図2を再び参照すると、トランザクション・バッファ203内の各トランザクションB(n)のベクトル間競合フリー・ステータスがベクトル間競合検出回路215によって判定された後、ベクトル内競合検出回路219により、ベクトル間競合を有さないトランザクションB(n)のいずれが、ベクトル内競合も有さず、ストリーム内要求の時間的順序が保たれるかを判定する。ベクトル内競合検出回路219の動作を以下により詳細に説明する。
ハッシュ・テーブル更新回路225が、ベクトル内競合検出回路219から受け取られたトランザクションB(n)のそれぞれの競合ステータスを使用して、ハッシュ・テーブル211およびキュー位置レジスタ213を更新する。詳細には、ハッシュ・テーブル更新回路225は、コンテントアドレサブルメモリ(CAM)を使用して、競合フリートランザクションを含むトランザクション・バッファ203内のエントリをポイントする、キュー位置レジスタ213内の位置をまず特定する。例えば、バッファ位置8におけるトランザクションに競合がなく、値8がキュー位置レジスタ213のエントリ4に入っている場合、位置4が、CAMによって戻される。
次に、CAMによって戻された位置から、ハッシュ・テーブル更新回路225は、最低の位置を特定する。その位置の値が、次の競合フリートランザクションを含むトランザクション・バッファ203内の位置をポイントする。ベクトル間競合検出回路215およびベクトル内競合検出回路219によって競合フリートランザクションがまったく存在しないと判定された場合は、CAMによって値0が戻される。
CAMによって戻された値が0より大きい場合には、トランザクションが発行された順序が、競合を回避するように変更可能である。その場合、次の競合フリートランザクションの位置を示すエントリを、出力カウンタが示すエントリに、移動することにより、ハッシュ・テーブル更新回路225がハッシュ・テーブル211を更新する。同時に、出力カウンタによってポイントされたエントリから次の競合フリートランザクションの位置をポイントするエントリの下のエントリまでに位置するハッシュ・テーブル211のエントリが、1エントリだけ上方に移動される。ハッシュ・テーブル211は円形であり、エントリがハッシュ・テーブル211の境界を越えて移動された場合、「循環(wrap−around)」がもたらされる。以上のことから分かるように、ハッシュ・テーブル211は、第2レベル・アービトレータ24(図2)がリソース競合を回避するために出力ストリームを並べ替える度に更新される。
並べ替えられたトランザクション・ストリーム27上にトランザクションが発行される度に、キュー位置レジスタ213が、ハッシュ・テーブル更新回路225によって更新される。特に、キュー位置レジスタ213は、発行済みトランザクションの位置に対応するキュー位置レジスタ213の位置にある値を、キュー位置レジスタ213の後に送り、空の位置のエントリを、1つだけ前に進めることによって更新される。
図4Aおよび4Bは、第2レベル・アービトレータ24の動作を描いたフローチャートである。詳細には、図4Aは、並べ替えられたトランザクション・ストリーム27上にトランザクションを発行する際に第2レベル・アービトレータ24によって使用される方法800のフローチャートであり、図4Bは、新しいトランザクションをトランザクション・バッファ203にロードする際に第2レベル・アービトレータ24によって使用される方法850のフローチャートである。
方法800および850について、図5Aないし5Fを参照して説明する。これらの図は、オープン・ページ・モード動作の例を示すものである。図5Aは、第2レベル・アービトレータ24の初期設定に続く処理を示している。ここで、トランザクション・バッファ203(図2)には、合成トランザクション・ストリーム25から最初の16個の保留中のトランザクションがロードされている。入力カウンタ702の値と出力カウンタ703の値はともに0である。テーブル701は、トランザクション・バッファ203のバッファ位置にロードされたトランザクションのアドレスを示している。テーブル704および705はそれぞれ、ハッシュ・テーブル211(図2)内およびキュー位置レジスタ213(図2)内の(初期)値を示している。テーブル704に示したハッシュ・テーブル211は、カウンタ値のバッファ位置に対する直接マッピングを保持している。テーブル705に示したキュー位置レジスタ213は、トランザクションがトランザクション・バッファ203にロードされた順序を保持しており、つまり、位置0×0が最初に埋められ、次に位置0×1が埋められているといった具合である。トランザクション・バッファ203に対する入力は、すべてのバッファ位置が現在、埋められているため、停止(stall)している。
次に、並べ替えられたトランザクション・ストリーム27上にトランザクションを発行する際に第2レベル・アービトレータ24によって使用される方法800(図4A)も参照する。方法800は、ステップ802で開始し、ベクトル間競合検出回路215(図2)が、トランザクション・バッファ203内にバッファリングされたトランザクションのアドレスを発行済みアドレス・パイプライン217の中に格納された最新の発行済みアドレスと比較する。トランザクションがまだまったく発行されておらず、したがって、ページがまだまったく開いていないため、発行済みアドレス・パイプライン217は空である。したがって、ベクトル間競合検出回路215により、すべてのトランザクションに競合がないことが判定される。また、テーブル701も、トランザクション・バッファ203内の有効な(または保留中の)トランザクションのそれぞれの競合ステータスを示す。バッファ位置0×0であるトランザクション・バッファ203内の次のトランザクションには、競合がないことに留意されたい。
ステップ804で、ハッシュ・テーブル更新回路225(図2)が、トランザクションのそれぞれの競合ステータスを使用して、競合フリートランザクションを含むトランザクション・バッファ203内のエントリをポイントするキュー位置レジスタ213内の位置を特定する。この例では、テーブル701内のすべてのトランザクションに競合がなく、テーブル705に例示するキュー位置レジスタ213のすべての位置が、競合フリートランザクションを保持するバッファ位置へのポインタを含むものとして戻される。初期キュー位置レジスタ(テーブル705)のエントリ0に入っている最小の位置が選択される。
ステップ806で、第2レベル・アービトレータ24により、ステップ804で特定された最小の位置が0であるかどうかが判定される。0の最小の位置は、競合フリートランザクションがまったく存在しないことか、または次のトランザクション、つまり、キュー位置レジスタ213の前部におけるエントリによってポイントされる位置におけるトランザクションに競合がないことを示す。このケースでは、次のトランザクションに競合がないために間隔が0になっている。並べ替えはまったく必要とされず、方法800は、ステップ810に進む。
ステップ810で、出力カウンタ207によってインデックスの付けられた次のトランザクションが、ローカル・メモリ150(図1)に発行される。出力カウンタ703の値は0であるので、ハッシュ・テーブル704内の対応するエントリも0である。したがって、ローカル・メモリ150に発行されるトランザクションは、バッファ位置0×0にあるトランザクションである。AXXXXXXXであるそのトランザクションのアドレスも、ステップ812で発行済みアドレス・パイプライン217(図2)の中に格納される。
このトランザクション発行イベントにより、ステップ814で、出力カウンタ207が、この例において1の値に増分される。ステップ816が続いて行われ、発行済みトランザクションの位置に対応するキュー位置レジスタ213の位置の値をキュー位置レジスタ213の後部に送り、空にされた位置より上のエントリが1つの位置だけ前に進められることにより、キュー位置レジスタ213が更新される。
図5Bは、別のトランザクションが並べ替えられたトランザクション・ストリーム27上に発行されるシナリオを描いている。したがって、方法800が、第2レベル・アービトレータ24によって再び呼び出される。ステップ802で再び開始して、ベクトル間競合検出回路215が、トランザクション・バッファ203内にバッファリングされたトランザクションのアドレスをAXXXXXXXである発行済みアドレス・パイプライン217の中に格納された最新の発行済みアドレスと比較する。テーブル701は、トランザクション・バッファ203内にある保留中のトランザクションのそれぞれの競合ステータスを示している。バッファ位置0×1であるトランザクション・バッファ203内の次のトランザクションは、競合を免れていないことに留意されたい。
ステップ804で、ハッシュ・テーブル更新回路225(図2)が、トランザクションのそれぞれの競合ステータスを使用して、競合フリートランザクションを含むトランザクション・バッファ203内のエントリをポイントするキュー位置レジスタ213内の位置を特定する。この例では、バッファ位置0×4、0×9、および0×Dが、競合フリートランザクションを含む。エントリ0×4、0×9、および0×Dは、キュー位置レジスタ(テーブル706)内のエントリ3、8、およびCをそれぞれ占めているので、ハッシュ・テーブル更新回路225は、キュー位置レジスタ(テーブル706)内のエントリ3を占めるエントリ0×4が、キュー位置レジスタ内の最低のエントリを占めていると判定する。
ステップ806で、第2レベル・アービトレータ24により、ステップ804で特定された最低のエントリが0であるかどうかが判定される。この例では、最低の位置がエントリ3であり、これは、メモリ・リソース競合を回避するようにトランザクションの順序を並べ替えることができることを示しているので、方法800は、ステップ808に進み、ハッシュ・テーブル211が、ハッシュ・テーブル更新回路225によって更新される。この例では、エントリ4である次の競合フリートランザクションの位置をポイントするエントリをエントリ1である出力カウンタによってポイントされるエントリに移動することにより、初期ハッシュ・テーブル704が更新されて、更新されたハッシュ・テーブル708が形成される。同時に、出力カウンタによってポイントされるエントリから次の競合フリートランザクションの位置をポイントするエントリの下のエントリにまで位置するハッシュ・テーブルのエントリが、1エントリだけ上方に移動される。この例では、エントリ1からエントリ4の下のエントリまでに位置するハッシュ・テーブルのエントリ、つまり、エントリ1、2、および3が、1エントリだけ上方に移動され、他方、エントリ4は、エントリ1に移動される。ハッシュ・テーブル211が更新されると、1の値を有する出力カウンタ207が、バッファ位置0×4にインデックスを付ける。
ステップ810で、バッファ位置0×4にあるトランザクションである出力カウンタ207によってインデックスが付けられた次のトランザクションが、ローカル・メモリ150に対して発行される(図1)。やはりAXXXXXXXであるそのトランザクションのアドレスも、ステップ812で、発行済みアドレス・パイプライン217(図2)の中に格納される。
このトランザクション発行イベントにより、ステップ814で、出力カウンタ207が、この例において2の値に増分される。ステップ816が続いて行われ、エントリ3である発行済みトランザクションの位置に対応するキュー位置レジスタ213の位置の値をキュー位置レジスタ213の後部に送り、空にされた位置より上のエントリを1つの位置だけ前に進めることにより、キュー位置レジスタ213が更新される。テーブル709は、キュー位置レジスタ213内の更新された値を示している。
図5Cは、さらに別のトランザクションが並べ替えられたトランザクション・ストリーム27上に発行されるシナリオを描いている。発行済みアドレス・パイプライン217の中に格納された最新の発行済みアドレスがAXXXXXXXであり、ベクトル間競合検出回路215により、バッファ位置0×9および0×Dが競合フリートランザクションを含むことが特定される。
ステップ804で、ハッシュ・テーブル更新回路225(図2)により、バッファ位置0×9および0×Dをポイントする初期キュー位置レジスタ(テーブル709)内のエントリが、7およびBであることが特定される。したがって、最低の位置は、7であると特定される。
この例では、最低の位置がエントリ7であり、これは、0より大きいので、方法800は、ステップ808に進み、ハッシュ・テーブル211が、ハッシュ・テーブル更新回路225によって更新される。この例では、エントリ9である次の競合フリートランザクションの位置をポイントするエントリをエントリ2である出力カウンタによってポイントされたエントリに移動することにより、初期ハッシュ・テーブル708が更新されて、更新されたハッシュ・テーブル710が形成される。同時に、出力カウンタによってポイントされるエントリから次の競合フリートランザクションの位置をポイントするエントリの下のエントリまでに位置するハッシュ・テーブルのエントリが、1エントリだけ上方に移動される。ハッシュ・テーブル211が更新されると、2の値を有する出力カウンタ207が、バッファ位置0×9にインデックスを付ける。
ステップ810で、バッファ位置0×9にあるトランザクションである出力カウンタ207によってインデックスが付けられた次のトランザクションが、ローカル・メモリ150(図1)に発行される。やはりAXXXXXXXであるそのトランザクションのアドレスも、ステップ812で、発行済みアドレス・パイプライン217の中に格納される。
このトランザクション発行イベントにより、ステップ814で、出力カウンタ207が、この例では3の値に増分される。ステップ816が続いて行われ、エントリ7である発行済みトランザクションの位置に対応するキュー位置レジスタ213の位置の値がキュー位置レジスタ213の後部に送られ、空にされた位置より上のエントリが、1つの位置だけ前に進められる。テーブル711は、キュー位置レジスタ213内の更新された値を示している。
図5Dは、新たなトランザクションがトランザクション・バッファ203にロードされ、次に、トランザクション発行が行われるシナリオを描いている。
新たなトランザクションをロードすることから始め、合成トランザクション・ストリーム25から受け取られたトランザクションをロードする際に第2レベル・アービトレータ24によって使用される方法850(図4B)を参照すると、方法850は、ステップ852で開始し、新たなトランザクションが、ハッシュ・テーブル211を介して入力カウンタ205によってインデックスが付けられたバッファ位置でトランザクション・バッファ203にロードされる。この例では、入力カウンタ値702は、0である。テーブル710に現在の状態が示されるハッシュ・テーブル211を介して入力カウンタ205によってインデックスが付けられたバッファ位置は、バッファ位置0×0である。この例では、新たなトランザクションのアドレスは、AXXXXXXXである。
方法850は、ステップ854で終り、入力カウンタ205が増分される。
並べ替えられたトランザクション・ストリーム27上に別のトランザクションを発行するため、方法800が呼び出される。発行済みアドレス・パイプライン217の中に格納された最新の発行済みアドレスがAXXXXXXXであり、ベクトル間競合検出回路215により、バッファ位置0×0および0×Dが競合フリートランザクションを含むことが特定される。バッファ位置0×0は、新たにロードされたトランザクションを含むことに留意されたい。
ステップ804で、ハッシュ・テーブル更新回路225により、バッファ位置0×0および0×Dをポイントする初期キュー位置レジスタ(テーブル711)内のエントリがそれぞれ、DおよびAであることが特定される。したがって、最低の位置は、Aであると特定される。
方法800は、ステップ808に進み、ハッシュ・テーブル211が、ハッシュ・テーブル更新回路225によって更新される。この例では、エントリDである次の競合フリートランザクションの位置をポイントするエントリをエントリ3である出力カウンタによってポイントされるエントリに移動することにより、初期ハッシュ・テーブル710が更新されて、更新されたハッシュ・テーブル712が形成される。同時に、出力カウンタによってポイントされるエントリから次の競合フリートランザクションの位置をポイントするエントリの下のエントリまでに位置するハッシュ・テーブルのエントリが、1エントリだけ上方に移動される。ハッシュ・テーブル211が更新されると、3の値を有する出力カウンタ207が、バッファ位置0×Dにインデックスを付ける。
ステップ810で、バッファ位置0×Dにあるトランザクションである出力カウンタ207によってインデックスが付けられた次のトランザクションが、ローカル・メモリ150(図1)に発行される。そのトランザクションのアドレスも、ステップ812で、発行済みアドレス・パイプライン217(図2)の中に格納され、出力カウンタ207が、ステップ814で、4の値に増分される。
ステップ816が続いて行われ、エントリAである発行済みトランザクションの位置に対応するキュー位置レジスタ213の位置の値をキュー位置レジスタ213の後部に送り、空けられた位置より上のエントリを1つの位置だけ前に進めることにより、キュー位置レジスタ213が更新される。テーブル713は、キュー位置レジスタ213内の更新された値を示している。
図5Eは、新たなトランザクションがトランザクション・バッファ203にロードされ、次にトランザクション発行が行われる別のシナリオを描いている。やはり新たなトランザクションをロードすることから始めると、方法850がステップ852で開始し、新たなトランザクションが、ハッシュ・テーブル211を介して入力カウンタ205によってインデックスが付けられたバッファ位置でトランザクション・バッファ203にロードされる。現在、入力カウンタ値702は1であり、テーブル712に現在の状態を示すハッシュ・テーブル211を介して入力カウンタ205によってインデックスが付けられたバッファ位置は、バッファ位置0×4である。この例では、新たなトランザクションのアドレスは、2XXXXXXXである。方法850は、ステップ854で終り、入力カウンタ205が増分される。
トランザクションは、方法800を呼び出すことによって並べ替えられたトランザクション・ストリーム27上に発行される。各ステップを個別に説明せずに、ベクトル間競合検出回路215により、バッファ位置0×0だけが競合フリートランザクションを含むことが特定される。バッファ位置0×0をポイントする初期キュー位置レジスタ(テーブル713)内のエントリは、Cである。したがって、最低の位置は、Cであると特定される。
ステップ808で、エントリ0である次の競合フリートランザクションの位置をポイントするエントリをエントリ4である出力カウンタによってポイントされたエントリに移動することにより、ハッシュ・テーブル211が、ハッシュ・テーブル更新回路225によって更新されて、更新されたハッシュ・テーブル714が形成される。同時に、出力カウンタによってポイントされるエントリから次の競合フリートランザクションの位置をポイントするエントリの下のエントリまでに位置するハッシュ・テーブルのエントリが、1エントリだけ上方に移動される。テーブル712および714によって表わされるハッシュ・テーブル211の円形の性質は、図5Eから明らかである。ハッシュ・テーブル211が更新されると、4の値を有する出力カウンタ207が、バッファ位置0×0にインデックスを付ける。
ステップ810ないし814で、バッファ位置0×0にある出力カウンタ207によってインデックスが付けられた次のトランザクションが発行され、そのトランザクションのアドレスが、発行済みアドレス・パイプライン217の中に格納され、出力カウンタ207が5の値に増分される。
ステップ816が続いて行われ、エントリCである発行済みトランザクションの位置に対応するキュー位置レジスタ213の位置の値をキュー位置レジスタ213の後部に送り、空けられた位置より上のエントリを1つの位置だけ前に進めることにより、キュー位置レジスタ213が更新される。テーブル715は、キュー位置レジスタ213内の更新された値を示している。
また、競合フリートランザクションがもはや存在しない場合の第2レベル・アービトレータ24の動作も例示するため、図5Fは、新たなトランザクションがトランザクション・バッファ203にロードされ、続いてトランザクション発行が行われる別のシナリオを描いている。やはり新たなトランザクションをロードすることから始めると、方法850は、ステップ852で開始し、新たなトランザクションが、ハッシュ・テーブル211を介して入力カウンタ205によってインデックスが付けられたバッファ位置でトランザクション・バッファ203にロードされる。現在、入力カウンタ値702は、2であり、テーブル714に現在の状態を示したハッシュ・テーブル211を介して入力カウンタ205によってインデックスが付けられたバッファ位置は、バッファ位置0×9である。この例では、新たなトランザクションのアドレスは、3XXXXXXXである。方法850は、ステップ854で終り、入力カウンタ205が増分される。
トランザクションは、やはり方法800を呼び出すことによって並べ替えられたトランザクション・ストリーム27上に発行される。各ステップを個別に説明せずに、ベクトル間競合検出回路215によって有効な競合を免れたトランザクションが存在しないと判定される。
競合フリートランザクションが存在しないので、最小の位置は0に設定され、並べ替えはまったく必要とされず、方法800は、ステップ810に進み、バッファ位置0×1にある出力カウンタ217によってインデックスが付けられたトランザクションが発行される。そのバッファ位置は、トランザクション・バッファ203内の最も古いトランザクションを含むことに留意されたい。したがって、トランザクション・バッファ203がアンロード(unload)される順序は、最も古い競合フリートランザクションから開始して、すべての競合フリートランザクションが発行されるまで続き、次に、トランザクション・バッファ内に残っている最も古いトランザクションの順である。
ステップ812および814で、そのトランザクションのアドレスが発行済みアドレス・パイプライン217の中に格納され、出力カウンタ207が6の値に増分される。ステップ816が続いて行われ、エントリ0である発行済みトランザクションの位置に対応するキュー位置レジスタ213の位置の値をキュー位置レジスタ213の後部に送り、空けられた位置より上のエントリを1つの位置だけ前に進めることにより、キュー位置レジスタ213が更新される。テーブル717は、キュー位置レジスタ213内の更新された値を示している。
図5Aないし5Fに示した例を参照して第2レベル・アービトレータ24の動作を詳細に説明したので、表1は、別のオープン・ページ例を示している。トランザクション・バッファ203(図2)が、トランザクションがポイントするアドレスのメモリ・サブユニットを含む16のエントリを保持している。先入れ先出し(FIFO)順に対応する、トランザクションが第1レベル・アービトレータ22(図1)からローカル・メモリ150(図1)に転送される通常のケースでは、合計で13の競合が生じる。例えば、メモリ・サブユニット8内のトランザクションを含むエントリ2を参照すると、そのトランザクションと前のトランザクションの間で競合が検出される。というのは、前のトランザクション、つまり、エントリ1は、異なるメモリ・サブユニット内のトランザクションを含むからである。したがって、第1レベル・アービトレータ22から受け取られた合成トランザクション・ストリーム25は、13のメモリが競合することを生じさせる順序でトランザクションを含んでいる。その16のトランザクションを並べ替えて、例示する最適化された順序でそのトランザクションを発行するように第2レベル・アービトレータ24を使用すると、メモリ競合が6つだけに削減される。
Figure 0003809442
表2は、クローズド・ページ例を示している。4ステージ・パイプライン・アクセスで、第1レベル・アービトレータ22から受け取られた合成トランザクション・ストリーム25が、4つのメモリの競合を生じさせる順序でトランザクションを含む。例えば、メモリ・サブユニット3内のトランザクションを含むエントリ1を参照すると、前のトランザクションもやはりメモリ・サブユニット3に対するものであったため、競合が検出される。同様に、エントリE内のトランザクションも競合を生じさせる。というのは、前の3つのトランザクションの1つも、メモリ・サブユニット3に対するものであったからである。表2は、クローズド・ページの最適化済み順序に並べ替えられたトランザクションも示している。4ステージ・パイプラインコンテンツも示される。並べ替えられたトランザクションでは、1つの競合だけが生じる。つまり、バッファ・エントリE内のトランザクションがローカル・メモリ150に転送された場合である。というのは、最新の3つのトランザクションの別のトランザクションもメモリ・サブユニット3にアクセスしたからである。
Figure 0003809442
次に、ベクトル内競合検出回路219(図2)の動作をより詳細に説明する。第2レベル・アービトレータ24が、詳細には、ハッシュ・テーブル更新回路225がトランザクションを並べ替える際、トランザクションは、別々のストリームのインターリーブを変更することによって並べ替えられなければならない。ストリーム内要求の時間的順序は、保たれなければならない。トランザクション・ベクトルは、一般に、競合境界にまたがるので、回路225は、境界横断においてストリーム内要求を並べ替えてはならない。表3が誤った動作の例を提示する一方で、表4は、第2レベル・アービトレータ24がどのように動作すべきかを示している。
Figure 0003809442
表3は、7つの保留中のトランザクションを有するトランザクション・バッファを示している。3つのベクトル(ベクトル_A、ベクトル_B、およびベクトル_C)に対するトランザクション/3つのベクトル(ベクトル_A、ベクトル_B、およびベクトル_C)からのトランザクションを生じさせる3つの要求ソースが存在する。ベクトル_Aに対するアクセスによって生成された並べ替えられたトランザクション・ストリーム27が、ページ境界を横断して、ベクトル_Aに対する順序の乱れたアクセスを生じさせる。したがって、第2レベル・アービトレータ24により、その状況が検出され、データ破損を回避するようにその並べ替えが抑制される。
Figure 0003809442
表4に示した例では、バッファ・エントリ0内のトランザクションにサービスを提供した後、第2レベル・アービトレータ24は、次の競合フリーエントリがバッファ・エントリ3にあることを検出する。しかし、ハッシュ・テーブル更新回路225により、エントリ0とエントリ3の間の間隔が順序の乱れたトランザクションを含むことが検出される。これにより、そのサイクルに関する並べ替えの抑制が行われ、したがって、エントリ1(第1レベルのアービトレーションされた順序における次のエントリ)が、サービスを受ける次のエントリである。続く2つのトランザクションで、メモリ・サブユニット3にアクセスするトランザクションが先に処理されて、さらなる競合が回避されてから、メモリ・サブユニット4のトランザクションの残りのトランザクションがサービスを受ける。
図6は、第2レベル・アービトレータ24’の代替の実装例を示している。この実装例では、第1レベル・アービトレータ22からの合成トランザクション・ストリーム25が、読み取り/書き込みデインターリーブ(de−interleave)120によって読み取りトランザクション・ストリーム121と書き込みトランザクション・ストリーム122に分けられる。読み取りトランザクション・ストリーム121および書き込みトランザクション・ストリーム122のトランザクションも、読み取りバッファ123および書き込みバッファ124にそれぞれ別々にバッファリングされる。
第2レベル読み取りアービトレータ125が、読み取りバッファ123内のトランザクションに対して第2のアービトレーションアルゴリズムを実行して、読み取りマルチプレクサ126が、より少ない競合の回数を有する読み取りトランザクションを動的に選択することを可能にし、そのトランザクションが、読み取り/書き込みインターリーブ130に転送される。したがって、読み取りバッファ123の機能は、第2レベル読み取りアービトレータ125に読み取りトランザクション・ストリーム121内のウインドウに対する同時実行のアクセスを提供することである。ウインドウ内のトランザクションが、第2レベル・アービトレータ125によって解析され、トランザクションの第1レベルのアービトレーション順序が、メモリ・リソース競合の出現回数を最小限に抑えるように必要に応じて調整され、第2レベルのアービトレーション順で読み取りトランザクション・ストリーム131が生成される。
第2レベル読み取りアービトレータ125と同様に、第2レベル書き込みアービトレータ127も、書き込みバッファ124内の書き込みトランザクションに対して第2のアービトレーションアルゴリズムを実行する。書き込みマルチプレクサ128が、並べ替えられた順序でそれらのトランザクションを選択して第2レベルのアービトレーション順で書き込みトランザクション・ストリーム132を形成してから、トランザクションを書き込み/読み取りインターリーブ130に転送する。
読み取り/書き込みインターリーブ130は、並べ替えられた読み取りトランザクション・ストリームと書き込みトランザクション・ストリームをインターリーブして、ローカル・メモリ150(図1)に転送される単一の合成トランザクション・ストリーム27にする。
図6のデュアル・バッファ実装例は、読み取り/書き込みターンアラウンド(turnaround)頻度を最小限に抑えることができるというさらなる利点を有する。これにより、読み取り/書き込みターンアラウンドに関連するあらゆるパフォーマンス・ペナルティが最小限に抑えられる。
この実装例では、読み取りバッファ123、マルチプレクサ126、および第2レベル読み取りアービトレータ125が構築され、図2に関連して提示した機能を実行する。同様に、書き込みバッファ124、マルチプレクサ128、および第2レベル書き込みアービトレータ127も、図2に提示したとおり構築される。
以上、本発明の一部の実施形態だけを説明したが、本発明の趣旨および範囲を逸脱することなく、それらの実施形態に変更および/または改変を加えることができる。
本明細書では、「備える(comprising)」という語は、「主に含むが、必ずしも限定されない(including principally but not necessarily solely)」こと、あるいは「有し(having)」または「含む(including)」、ことを意味し、「だけから構成される(consiting only of)」という意味ではない。「comprise」や「comprises」などの「comprising」という語の変形も、同様の意味を有する。
ホスト・コンピュータおよびプリンタ・デバイスを含むプリンタ・システムを示す概略ブロック図である。 第2レベル・アービトレータを示すブロック図である。 4重インターリーブ・アーキテクチャを有するベクトル間競合検出サブ回路を示すブロック図である。 トランザクションを発行する際の第2レベル・アービトレータの動作を示すフローチャートである。 新たに受け取られたトランザクションをロードする際の第2レベル・アービトレータの動作を示すフローチャートである。 例示的なオープン・ページ・モードの第2レベル・アービトレータ回路の動作を示す図である。 例示的なオープン・ページ・モードの第2レベル・アービトレータ回路の動作を示す図である。 例示的なオープン・ページ・モードの第2レベル・アービトレータ回路の動作を示す図である。 例示的なオープン・ページ・モードの第2レベル・アービトレータ回路の動作を示す図である。 例示的なオープン・ページ・モードの第2レベル・アービトレータ回路の動作を示す図である。 例示的なオープン・ページ・モードの第2レベル・アービトレータ回路の動作を示す図である。 第2レベル・アービトレータの代替の実装例を示す図である。
符号の説明
24 アービトレータ
25 データ・ストリーム
27 トランザクション・ストリーム
203 トランザクション・バッファ
204 デマルチプレクサ
205 入力カウンタ
206 マルチプレクサ
207 出力カウンタ
211 ハッシュ・テーブル
213 キュー位置レジスタ
215 ベクトル間競合検出回路
217 発行済みアドレス・パイプライン
219 ベクトル内競合検出回路
225 ハッシュ・テーブル更新回路
251 クローズド・ページ・モード・フラグ
285、287 ポインタ

Claims (10)

  1. メモリシステム競合を減らすためメモリシステムに対するアクセス要求を並べ替えるアービトレータであって、
    前記アクセス要求をバッファリングするためのトランザクション・バッファと、
    アービトレータによって発行されたアクセス要求をカウントするための出力カウンタと、
    少なくとも前記出力カウンタを前記トランザクション・バッファ内の前記アクセス要求にマッピングするためのマッピング・テーブルと、
    メモリシステム競合が減る発行順序で前記アクセス要求をポイントするように、前記マッピング・テーブル内のエントリを動的に並べ替える並べ替えユニットと、
    を備えることを特徴とするアービトレータ。
  2. 前記並べ替えユニットは、
    1つまたは複数の発行済みアクセス要求と前記トランザクション・バッファ内の前記アクセス要求の間のメモリシステム競合を検出するための競合検出回路と、
    入力順に次の競合フリーアクセス要求を選択するための選択ユニットと、
    入力順に前記次の競合フリーアクセス要求に基づいて前記マッピング・テーブル内の前記エントリを並べ替えるマッピング・テーブル更新回路と、
    を備えることを特徴とする請求項1に記載のアービトレータ。
  3. 前記入力順特定するためのキュー位置レジスタをさらに備えることを特徴とする請求項2に記載のアービトレータ。
  4. アービトレータによって受け取られたアクセス要求をカウントするための入力カウンタをさらに含み、前記マッピング・テーブルは、前記入力カウンタを次に受け取られるアクセス要求によって埋められる前記トランザクション・バッファ内のエントリにマッピングすることを特徴とする請求項3に記載のアービトレータ。
  5. 前記マッピング・テーブルは、ハッシュ・テーブルであることを特徴とする請求項1に記載のアービトレータ。
  6. メモリシステム競合を減らすためにメモリシステムに対するアクセス要求を並べ替えるアービトレーション方法であって、
    (a)前記アクセス要求をトランザクション・バッファにバッファリングするステップと、
    (b)少なくともアービトレータによって発行されたアクセス要求をカウントするための出力カウンタを前記トランザクション・バッファ内の前記アクセス要求にマッピングするマッピング・テーブルを保持するステップと、
    (c)前記マッピングが、メモリシステム競合を減らす発行順序で前記アクセス要求をポイントするように前記マッピング・テーブル内のエントリを動的に並べ替えるステップと、
    を含むことを特徴とするアービトレーション方法。
  7. ステップ(c)は、
    (c1)1つまたは複数の発行済みアクセス要求と前記トランザクション・バッファ内の前記アクセス要求の間のメモリシステム競合を検出するサブステップと、
    (c2)入力順序の次の競合フリーアクセス要求を選択するサブステップと、
    (c3)入力順序の前記次の競合フリーアクセス要求に基づいて前記マッピング・テーブル内の前記エントリを並べ替えるサブステップと、
    を含むことを特徴とする請求項6に記載のアービトレーション方法。
  8. (d)前記入力順序を特定すためのキュー位置レジスタを維持するステップをさらに含むことを特徴とする請求項7に記載のアービトレーション方法。
  9. 次のアクセス要求を受け取った際、
    (e)受け取られたアクセス要求を入力カウンタによりカウントするステップと、
    (f)前記マッピング・テーブルは、前記入力カウンタを次に受け取られるアクセス要求によって埋められる前記トランザクション・バッファ内のエントリにマッピングするステップと、
    をさらに含むことを特徴とする請求項8に記載のアービトレーション方法。
  10. 前記マッピング・テーブルは、ハッシュ・テーブルであることを特徴とする請求項6に記載のアービトレーション方法。
JP2004043356A 2003-02-19 2004-02-19 メモリ要求の動的並べ替え Expired - Fee Related JP3809442B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2003900733A AU2003900733A0 (en) 2003-02-19 2003-02-19 Dynamic Reordering of Memory Requests

Publications (2)

Publication Number Publication Date
JP2004252985A JP2004252985A (ja) 2004-09-09
JP3809442B2 true JP3809442B2 (ja) 2006-08-16

Family

ID=30005430

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004043356A Expired - Fee Related JP3809442B2 (ja) 2003-02-19 2004-02-19 メモリ要求の動的並べ替え

Country Status (3)

Country Link
US (1) US7155582B2 (ja)
JP (1) JP3809442B2 (ja)
AU (1) AU2003900733A0 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7486688B2 (en) * 2004-03-29 2009-02-03 Conexant Systems, Inc. Compact packet switching node storage architecture employing Double Data Rate Synchronous Dynamic RAM
TW200705179A (en) * 2005-07-29 2007-02-01 Genesys Logic Inc Efficient data property identification method for a flash memory
US7797467B2 (en) * 2005-11-01 2010-09-14 Lsi Corporation Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features
US7809891B2 (en) * 2007-04-09 2010-10-05 Sap Ag Wait-free parallel data cache
JP4569628B2 (ja) * 2007-12-28 2010-10-27 日本電気株式会社 ロードストアキューの制御方法及びその制御システム
JP2009157887A (ja) * 2007-12-28 2009-07-16 Nec Corp ロードストアキューの制御方法及びその制御システム
US8560796B2 (en) * 2010-03-29 2013-10-15 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information
US8572322B2 (en) * 2010-03-29 2013-10-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US8688957B2 (en) 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
US8775754B2 (en) * 2011-06-24 2014-07-08 Arm Limited Memory controller and method of selecting a transaction using a plurality of ordered lists
JP5759881B2 (ja) * 2011-12-08 2015-08-05 株式会社日立ソリューションズ 情報処理システム
US8782356B2 (en) * 2011-12-09 2014-07-15 Qualcomm Incorporated Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9612955B2 (en) * 2013-01-09 2017-04-04 Wisconsin Alumni Research Foundation High-performance indexing for data-intensive systems
TWI553483B (zh) * 2014-10-13 2016-10-11 瑞昱半導體股份有限公司 處理器及存取記憶體的方法
US10146440B2 (en) * 2016-12-20 2018-12-04 Intel Corporation Apparatus, system and method for offloading collision check operations in a storage device
US10387305B2 (en) * 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
US10198369B2 (en) * 2017-03-24 2019-02-05 Advanced Micro Devices, Inc. Dynamic memory remapping to reduce row-buffer conflicts

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58225432A (ja) * 1982-06-24 1983-12-27 Toshiba Corp 要求バツフア装置
TW388982B (en) * 1995-03-31 2000-05-01 Samsung Electronics Co Ltd Memory controller which executes read and write commands out of order
US6272600B1 (en) * 1996-11-15 2001-08-07 Hyundai Electronics America Memory request reordering in a data processing system
JP2912609B2 (ja) * 1997-05-02 1999-06-28 松下電器産業株式会社 複数アドレス保持記憶装置
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
US6510474B1 (en) * 1998-11-16 2003-01-21 Infineon Technologies Ag Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests
US6195724B1 (en) * 1998-11-16 2001-02-27 Infineon Technologies Ag Methods and apparatus for prioritization of access to external devices
GB9827911D0 (en) * 1998-12-19 1999-02-10 3Com Technologies Ltd System for controlling look-ups in a data table in a network switch

Also Published As

Publication number Publication date
AU2003900733A0 (en) 2003-03-06
US7155582B2 (en) 2006-12-26
US20040199729A1 (en) 2004-10-07
JP2004252985A (ja) 2004-09-09

Similar Documents

Publication Publication Date Title
JP3809442B2 (ja) メモリ要求の動的並べ替え
US11693791B2 (en) Victim cache that supports draining write-miss entries
US7278008B1 (en) Virtual address translation system with caching of variable-range translation clusters
US7296139B1 (en) In-memory table structure for virtual address translation system with translation units of variable range size
US7334108B1 (en) Multi-client virtual address translation system with translation units of variable-range size
US6983350B1 (en) SDRAM controller for parallel processor architecture
US9898415B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US6321310B1 (en) Memory architecture for a computer system
US8495301B1 (en) System and method for scatter gather cache processing
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US8266383B1 (en) Cache miss processing using a defer/replay mechanism
US20030145159A1 (en) SRAM controller for parallel processor architecture
US9595075B2 (en) Load/store operations in texture hardware
US7594100B2 (en) Efficient store queue architecture
WO2001025921A1 (en) An arbitration protocol for a shared data cache
US7370152B2 (en) Memory controller with prefetching capability
US11023410B2 (en) Instructions for performing multi-line memory accesses
US20110072438A1 (en) Fast mapping table register file allocation algorithm for simt processors
US6745308B2 (en) Method and system for bypassing memory controller components
US7313658B2 (en) Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests
US20030093636A1 (en) Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests
US11822815B2 (en) Handling ring buffer updates
JP2010061220A (ja) データ転送装置、データ転送方法およびプロセッサ
US20050021912A1 (en) Line cache controller with lookahead
AU2004200593B2 (en) Dynamic Reordering of Memory Requests

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060414

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060522

R150 Certificate of patent or registration of utility model

Ref document number: 3809442

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140526

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees