JP5666722B2 - メモリ・インターフェース - Google Patents
メモリ・インターフェース Download PDFInfo
- Publication number
- JP5666722B2 JP5666722B2 JP2013557998A JP2013557998A JP5666722B2 JP 5666722 B2 JP5666722 B2 JP 5666722B2 JP 2013557998 A JP2013557998 A JP 2013557998A JP 2013557998 A JP2013557998 A JP 2013557998A JP 5666722 B2 JP5666722 B2 JP 5666722B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- slot
- memory module
- time
- read request
- 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
Links
- 230000004044 response Effects 0.000 claims description 61
- 238000000034 method Methods 0.000 claims description 28
- 238000010586 diagram Methods 0.000 description 10
- 238000012423 maintenance Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/3625—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a time dependent access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
メモリ・トランザクションをスケジューリングするために、メモリ・コントローラは、アドレス/コマンド・バス、データ・バンクおよびデータ・バスのようなシステムの様々な構成要素の状態に関する大量の情報を特に管理する。
各メモリ読取りの間、メモリ・コントローラは、メモリ・モジュールに特定のコマンドを発行して、行の有効化、列の選択、ビット・ラインのプリチャージなど、この読取り操作のあらゆる側面を詳細に管理する。
これは、アドレス/コマンド・バスに性能面で負荷をかける。
メモリ・コントローラはまた、潜在的には数百もの独立したメモリ・バンクの多数の状態を追跡して競合のないアクセスを実現する。
適切な時点で、メモリ・コントローラはまた、例えばDRAMリフレッシュなどのメンテナンス・コマンドも発行することがある。
異質の成分からなるメモリ・システムにおいては、メモリ・コントローラは、異なるメモリ・モジュールに対して異なるメンテナンス要件を実施することがある。
さらに、メモリ・コントローラは、共用メモリ・バス上のデータ転送のためにメモリ・モジュール間のアービトレーションを実施する。
このことはメモリ・コントローラの複雑さを大きく増加させる。
そのため、完全な集中制御を伴うメモリ・コントローラとメモリ・モジュールの間の現在のマスタ−スレーブ・インターフェースは拡張性がなく(not scalable)、将来のコンピュータ・システムに望ましい容量の増加およびより広い帯域の要求を満たすためには適していない。
本明細書で説明する様々な実施形態は、メモリ・コントローラと1つまたは複数のメモリ・モジュールとの間のパケットに基づくメモリ・インターフェースを提供する。
様々なデバイス管理およびメモリ・アクセスのタスクは、従来のマスタ/スレーブ・メモリ・システムにおけるようにメモリ・コントローラではなく、メモリ・モジュールによって実施される。
したがって、各メモリ・モジュールは、従来のマスタ/スレーブ・メモリ・アクセス・システムにおけるメモリ・モジュールと比較してより自律的であり得る。
メモリ操作中、メモリ・コントローラは、メモリ・モジュールに、要求されているメモリ・ブロックのアドレスおよび操作が読取りか書込みかの指示を送る。
一実施形態では、追加の制御情報は何ら用いられない。
読取り要求では、メモリ・モジュールは、要求されたデータを取得し、この要求されたデータを共用バスを介してメモリ・コントローラに送る。
メモリ・インターフェースは、メモリ・コントローラとメモリ・モジュールの間で単一点調停(アービトレーション; arbitration)を用い、これは、共用データ・バス上でデータを転送するための1つまたは複数のタイム・スロット予約として実施される。
メモリ・トランザクションに関連する操作は、このスロット予約を満足するちょうどよいタイミングで行われる。
メモリ・コントローラは、各読取り要求を指定されたタイム・スロット予約で受け取られる戻りデータと関連付けるように構成される。
メモリ・モジュールは、読取り応答が予約されたタイム・スロットでメモリ・コントローラに送られるように固定時間内で各読取り要求を実施する。
データが戻るスロットから時間的に戻って動作するので、すべての他のリソースは自動的にそのトランザクションに対して予約され、いかなる段階でもさらなるアービトレーションは用いられない。
本明細書で説明する技術は、複雑さおよび電力消費が低減された能率的なメモリ・アクセス・インターフェースを提供する。
さらに、以下でさらに説明するように、タイム・スロット予約方式は、メモリ・コントローラにおいてシステム状態が意図的に把握されないことにより生じる或る種の状況を扱うように構成され得る。
このメモリ・インターフェースを参照番号100によって示す。
図1に示すように、メモリ・インターフェース100は、1つまたは複数のメモリ・モジュール104にメモリ・コントローラ106を介して動作可能に結合されるプロセッサ102を含み得る。
プロセッサ102は、頻繁にアクセスされるデータを格納する1つまたは複数のメモリ・キャッシュ108を含み得る。
実施形態では、メモリ・コントローラ106は、プロセッサ102と統合されることがあり、例えば、プロセッサ102と同じダイ上に作製されるか、または、プロセッサ102と同じチップパッケージ内に配置され得る。
実施形態では、メモリ・コントローラ106は、特定用途向け集積回路(ASIC)などの別の集積回路とし得る。
メモリ・コントローラ106は、メモリ・バス110を介してメモリ・モジュール104と結合され得る。
各メモリ・モジュール104は、複数のメモリ・バンク112を含み得る。
各メモリ・モジュール104は、メモリ読取り要求の受信と要求されたデータの提供の間のクロック・サイクル数を示す総メモリ待ち時間に関連し得る。
総メモリ待ち時間は、コマンド転送、非競合バンク・アクセス、オンチップ・ネットワーク・アクセス、およびデータの戻りに用いられるクロック・サイクル数に基づき得る。
総メモリ待ち時間は、シリアル・プレゼンス検出(SPD:Serial Presence Detect)などのメモリ・モジュール104の各々の制御レジスタに格納され得る。
異なるメモリ・モジュール104では異なり得る総メモリ待ち時間は、メモリ・コントローラ106に通信され得る。
例えば、システム起動時に、各メモリ・モジュール104の総メモリ待ち時間は、各メモリ・モジュールのシリアル・プレゼンス検出から読み取ることができ、メモリ・コントローラ106の1つまたは複数の制御レジスタに格納され得る。
メモリ・コントローラ106とメモリ・モジュール104は、メモリ・バス110を介して送信されるバス・パケットを介して通信する。
メモリ・バス110は、メモリ・コントローラ106からメモリ・モジュール104に読取り要求および書込み要求を送るために用いられる共用要求チャネルを含み得る。
読取り要求および書込み要求は、情報の中でもとりわけ、例えば、メモリ・アドレスおよび制御データを含み得る。
メモリ・バス110は、メモリ・モジュール104からメモリ・コントローラ106に応答情報を送り返すのに用いられる共用応答チャネルも含み得る。
この応答情報は、例えば、データの中でもとりわけ、要求されたデータまたは書込み肯定応答を含み得る。
一実施形態では、メモリ・バスは、メモリ読取り操作のための共用の要求チャネルおよび応答チャネル、ならびにメモリ書込み操作のための別の共用の要求チャネルおよび応答チャネルを含み得る。
従来のメモリ・システムと異なり、メモリ・モジュール104は、メモリ・コントローラ106に依存せずに、行の有効化、列の選択、ビット・ライン・プリチャージなどのような低レベル・メモリ・アクセス操作ごとに特定の要求を送出する。
その代わりに、モジュール・コントローラ114は、メモリ・アドレスを含む要求パケットを受け入れ、これらの低レベル・メモリ・アクセス操作を管理する。
モジュール・コントローラ114は、メモリ・リフレッシュや他のメモリ・メンテナンス機能、例えば、フラッシュ・メモリにおけるウェア・レベリングなどを実施するようにも構成され得る。
メモリ・リフレッシュおよびメモリ・アクセスに関係するタイミング制約を扱う論理回路は、メモリ・コントローラ106から取り除き得る。
この書込み要求パケットは、メモリ・アドレス、操作が書込みであることを示す制御情報、およびこのメモリ・アドレスに格納されるべきデータを含む。
書込み要求パケットは、アドレス・バスの幅およびデータ・バスの幅に応じて1つまたは複数のクロック・サイクルで一群のメモリ・モジュール104に送ることができる。
例えば、64ビット・アーキテクチャでは、メモリ・アドレスは専用のアドレス・バス上を2つのクロック・サイクルで送ることができ、データは8クロック・サイクルで送ることができる。
各メモリ・モジュール104は書込み要求パケットを復号し、この書込み操作に対応するターゲット・モジュール・コントローラ114が書込み要求を処理する。
アドレス指定されたデータ・ブロックが使用可能な場合、データは対応するメモリ・アドレスに書き込まれる。データが成功裏にメモリに書き込まれる場合、肯定応答(ACK)がメモリ・コントローラ106に戻される。
アドレス指定されたデータ・ブロックがビジーである場合、または他の理由で使用可能でない場合、ターゲット・モジュール・コントローラ114は否定応答(NACK)をメモリ・コントローラ106に送り返し得る。
一実施形態では、メモリ書込み操作を各メモリ・モジュール104にバッファすることができ、バッファが一杯になった場合にはメモリ・コントローラ106にNACKを送ることができる。
メモリ・コントローラ106が書込み要求に応答したNACKを受け取ると、メモリ・コントローラ106は、特定数のクロック・サイクルの間待機し、書込み要求パケットを再送し得る。
読取り要求パケットは、対応するメモリ・アドレスおよび読取り要求がメモリ読取り操作であることの指示を含む。
一群のメモリ・モジュール104はそれぞれ、読取り要求パケットを復号し、ターゲット・モジュール・コントローラ114が、読取り要求パケットによって示されるメモリ・アドレスから要求されたデータを取得することによって読取り要求を処理する。
次いで、ターゲット・モジュール・コントローラ114は、要求されたデータをデータ・パケットによりメモリ・バス110の共用応答チャネルを介してメモリ・コントローラ106に送る。
後続のアクセスが行バッファの内容に一致するアドレスを有する場合、これらのアクセスは、新たな読取りまたは書込みを行うよりも速く行われる。
このポリシーは、行バッファが最初の要求後も有効なデータを担持し続けるので、オープン・ページを呼ばれる。
オープン・ページ・ポリシーでは、メモリ・バンク112へのアクセス時間は、メモリ・アクセスが行バッファにおいてヒットするかどうかに応じて変化することになる。
このオープン・ページ・ポリシーは、アクセスの流れに強い局所性がある場合に有益である。
行バッファにおいてヒットしない場合、別のページを読み取る前に元のページを閉じる追加のステップが実施され、それによってアクセス時間が長くなる。そのため、ランダム・アクセスでは一般にオープン・ページ・ポリシーが有益でない。
クローズド・ページ・ポリシーでは、メモリ・アクセスが完了し、バンクが次の新たなアクセスの準備をした後でページが閉じられる。
一実施形態では、メモリ・インターフェース100はクローズド・ページ・ポリシーを用いる。
このアービトレーション手順の間、メモリ・コントローラ106は、共用メモリ・バス110上の戻りデータを受け取るための1つまたは複数のタイム・スロットを予約する。
メモリ・バス110の応答チャネル上のあらゆる転送は、メモリ・コントローラ106による明示的な要求により生じる。
さらに、クローズド・ページ・メモリ編成では、オープン・ページ・メモリ編成と比較して、アクセス待ち時間はより確定的である。そのため、データ・バス上のタイム・スロットは、メモリ・コントローラ106によって、各メモリ・モジュール104によって指定される既知の総メモリ待ち時間に基づいて予約することができ、戻りデータが使用可能な場合にメモリ・バス110にアクセスするためのメモリ・モジュール104間のさらなるアービトレーションをなくすことができる。
さらに、メモリ・コントローラ106は、特定のタイム・スロットで戻されるデータを、予約されたタイム・スロットに対応する特定の読取り要求または書込み要求と関連付けるように構成される。
そのため、追加のタグを用いてメモリ・コントローラ106の読取り要求または書込み要求をメモリ・モジュール104の対応する戻りデータに相関させることが不要になり得る。
例えば、読取り要求が或るメモリ・バンク112を参照し、そのメモリ・バンク112がその時点で前の読取り要求の処理に関与している場合、バンク競合が生じ得る。
この場合、第1の読取り要求が完了するまで第2の読取り要求を開始することができない。
このような場合、メモリ・バンク112が使用可能でないことにより加算される追加の待ち時間により、第2の読取り要求に対する応答が対応するタイム・スロット予約に間に合わないことがある。
他のイベントでも、例えば、読取り要求が到来した時点でメモリ・バンク112が周期的なリフレッシュ操作に関与しているか、または低電力スリープ・モードになっている場合、読取り要求がそのタイム・スロット予約期限に間に合わないことが生じ得る。
メモリ・コントローラ106は、生じ得るバンク競合その他の遅延を予測し得る情報をもたない。
これは、メモリ・コントローラ106がバンクごとの状態の詳細を扱わないためである。
一実施形態では、メモリ・コントローラ106は、指定されたタイム・スロットでNACKを受け取った場合、例えば指定時間遅延後に、読取り要求パケットを再送し得る。
一実施形態では、メモリ・コントローラ106が採用するスロット予約方式は、メモリ・モジュール104によって戻されるデータが、対応するタイム・スロット予約で時間内に戻されるようには使用可能でない場合を扱うように構成される。
例えば、メモリ・コントローラ106は、一群のメモリ・モジュール104に送られる読取り要求ごとに2つのタイム・スロットを予約し得る。
データが第1のタイム・スロット予約で使用可能でなかった場合には、第2のタイム・スロット予約が用いられ得る。このスロット予約方式は、図2を参照してよりよく理解されよう。
タイミング図200は、共用データ・バス上のデータ・フローを表す一連のタイム・スロット202を示す。各タイム・スロット202は、メモリ・モジュール104(図1)からメモリ・コントローラ106にデータを戻し得る1つまたは複数のクロック・サイクルに対応する。
各タイム・スロット202のクロック・サイクルを単位とする幅は、キャッシュ・ラインのサイズおよび応答チャネルの幅に基づいて決定し得る。
例えば、64バイトのキャッシュ・ラインおよび64ビットの応答チャネルでは、各読取り要求は、データ・バスが完全にパイプライン化されていると仮定して、4サイクルごとにデュアル・データ・レート送信で行われ得る。
空のボックスとして示される使われていないタイム・スロット204は、現時点で予約されていないタイム・スロット202を表す。
「X」付きのボックスとして示す使用中のタイム・スロット206は、前の読取り要求または書込み要求の結果、現時点で予約されているタイム・スロット202を表す。
このキューから得られる読取り要求を処理するために、メモリ・コントローラ106は、戻りデータを受け取るために用いられ得る1つまたは複数のタイム・スロット202に対してアービトレーションを行う。
この例では、2つのタイム・スロット202が予約される。ただし、1つ、2つ、3つ、またはそれ以上の数を含めて任意の適切な数のタイム・スロット202が予約され得ることを理解されたい。
使用可能なタイム・スロット202は、一群のメモリ・モジュール104に読取り要求を送る前に、識別され予約され得る。
実施形態では、各メモリ・モジュール104の総メモリ待ち時間を用いて、メモリ・モジュール104ごとに固定応答時間を求める。
メモリ・モジュール104ごとに指定される固定応答時間は、メモリ・モジュール104の総メモリ待ち時間以上となり得る。
メモリ・モジュール104ごとに求められる固定応答時間は、例えば、システム起動時に行われ得るタイミング構成段階中に、それぞれの対応するメモリ・モジュール104に通信して戻すことができ、制御レジスタに格納し得る。
一実施形態では、固定応答時間は、メモリ・モジュール104によって指定される総メモリ待ち時間と等しくし得る。
この場合、固定応答時間をメモリ・モジュールに通信して戻すことを省略することができ、メモリ・モジュール104によって指定される総メモリ待ち時間を固定応答時間として用い得る。
固定応答時間は、メモリ・モジュール104の総メモリ待ち時間以上であるクロック・サイクル数として表現され得る。
固定応答時間は、メモリ・コントローラ106によって用いることができ、それによって、メモリ・モジュール104から戻りデータを受け取るためのタイム・スロットが識別され予約され得る。
固定応答時間は、各メモリ・モジュール104によって用いることができ、それによって、特定の読取り要求に応答する時点が求められ得る。
図2に、固定応答時間を参照番号208によって示す。
使用可能なタイム・スロット202を識別するために、メモリ・コントローラ106は、キューから読取り要求が取得される時間ゼロから少なくとも1つの固定応答時間後の第1の使用可能なタイム・スロット202を識別する。
図2に示すように、矢印212で示す、時間ゼロから固定応答時間後のタイム・スロット202が予約される。
そのため、矢印214で示す次に使用可能なタイム・スロットが第1のスロット予約として選択される。
矢印216で示される、第2のスロット予約として識別されたタイム・スロット202は使用されておらず、そのため、第2のスロット予約として用いられ得る。
このタイム・スロット202がすでに使用されている場合、次に使用可能なタイム・スロット202が第2のスロット予約として識別され、かつ、第1のスロット予約は同じ数のタイム・スロットだけ移動しているはずであり、そのため、第1のスロット予約と第2のスロット予約の間の距離が固定応答時間208に等しく保たれる。
さらに、第1のタイム・スロット予約と第2のタイム・スロット予約の時間間隔は固定応答時間208に等しいが、一実施形態では、第1のスロット予約と第2のスロット予約の時間間隔を任意の適切な間隔とすることができ、固定応答時間よりも長くても短くてもよいことを理解されたい。
第2のスロット予約は第1のスロット予約から総メモリ待ち時間1つ分よりも前に位置し得ることも理解されたい。
第1のタイム・スロット予約と第2のタイム・スロット予約の時間間隔が固定応答時間に等しくない場合、第2の固定応答時間を第2のスロット予約に対して指定することができ、タイミング構成段階の間にメモリ・モジュール104に通信し得る。
矢印214で示す第1のタイム・スロット予約は、本明細書では「スロット1」と称し、矢印216で示す第2のタイム・スロット予約は、本明細書では「スロット2」と称することがある。
次いで、メモリ・コントローラ106は、第1のスロット予約および固定応答時間に基づいて求められたクロック・サイクルで読取り要求を一群のメモリ・モジュール104にメモリ・バス110を介して発行する。
例えば、読取り要求は、矢印214で示す第1のスロット予約の時間から固定応答時間208を減算することによって求められるクロック・サイクルで発行され得る。これにより、タイム・スロット予約の位置が、発行された読取り要求から既知の数のタイム・スロット後となり、戻りデータがスロット予約の時間で共用バスに到達することになる。
一実施形態では、(矢印214で示す)第1のスロット予約の時間および(矢印216で示す)第2のスロット予約の時間は、読取り要求パケットによってメモリ・モジュール104に通信されない。
この戻りデータは、要求されたデータ、言い換えれば、読取り要求によって識別されるメモリ・アドレスにおけるデータを含み得る。
ターゲット・メモリ・バンク112がビジーであるか、または、他の理由で対応するメモリ・モジュール104が要求されたデータをスロット1 214内で戻すことができない場合、メモリ・モジュール104によってスロット1 214内で戻される戻りデータは否定応答(NACK)を含み得る。次いで、要求されたデータはスロット2 216内で戻され得るが、ほとんどの状況では、この時点までにはこの要求されたデータが使用可能になる可能性が高い。
ほとんどの場合、要求されたデータはスロット1 214で戻されることになる。
こうすると、スロット2 216の予約がメモリ・インターフェース100の全体的な有効帯域幅に大きな影響を及ぼさないようになる。スロット2 216をスロット1 214から少なくとも総メモリ待ち時間1つ分だけ離して配置することによって、スロット2 216の予約を時間内で解除することができ、それによって後続の読取り要求に対してスロット2 216が使用可能になる。このようなスロット1 214とスロット2 216の時間間隔では、スロット2 216の戻りにいくらかの追加の待ち時間が生じ得るが、スロット2 216が無駄になる可能性が小さくなる。
この場合、メモリ・モジュール104は、要求されたデータをスロット1 214でもスロット2 216でも戻すことができないことがある。
これは、各メモリ・アクセスがバンク・アクセス時間に等しい時間だけ離れるからである。メモリ・モジュール104がスロット1 214でもスロット2 216でもデータを戻すことができない場合、スロット1 214およびスロット2 216の両方でNACKを戻すことができ、その後、メモリ・コントローラ106が読取り要求を再試行し得る。
一実施形態では、この読取り要求は、メモリ・コントローラ106によってメンテナンスされる読取り要求キューの最後に置かれる。
一実施形態では、メモリ・コントローラ106は、一定時間の間待機し、新たな組のタイム・スロット202のアービトレーションを行い、読取り要求を再発行し得る。このプロセスは、潜在的に、複数回繰り返すことができ、そのため、キューの占有、無駄なタイム・スロット202、およびアドレス再送信エネルギーの形でリソースが消費されるが、全体的な性能に何らかの大きな影響を及ぼすほど頻繁に起こらないと予想される。
この方法は、参照番号300で示され、図1のメモリ・コントローラ106によって実施され得る。
この方法は、キューから読取り要求が受け取られるブロック302で開始され得る。
ブロック304で、メモリ・コントローラは、先に述べたように、使用可能なタイム・スロットを識別する。
この使用可能なタイム・スロットは、データを保持するメモリ・モジュールに対して指定される固定応答時間よりも後の最も近くにある未使用のタイム・スロットである。
このようにタイム・スロットを予約すると、戻りデータが予約されたタイム・スロットで戻ることが予想されるサイクル中は他の読取り要求が発行され得ないことが保証される。
言い換えれば、読取り要求パケットは、戻りデータがブロック304で識別されたタイム・スロットで戻るサイクルで発行される。
第1の予約されたタイム・スロットは、ターゲット・メモリ・モジュールの固定応答時間によって示されるサイクルの数だけ発行サイクルよりも先にある。
第2の予約されたタイム・スロットは、第1の予約されたタイム・スロットよりもターゲット・メモリ・モジュールの固定応答時間によって示されるサイクルの数だけ先にある。
このデータは、要求されたデータであることもあるし、NACKなどのメモリ・モジュール104が要求されたデータを第1のタイム・スロットで戻せなかったことを示す指示であることもある。
NACKが第1の予約されたタイム・スロットで戻されなかった場合、プロセスフローは、ブロック314に進むことができ、そこで戻されたデータが処理される。
ブロック316で、第2の予約されたタイム・スロットの予約が解除され、それによってこのタイム・スロットが後続の読取り要求に対して使用可能になる。
次いで、プロセスフローはブロック318に進むことができ、プロセスが終了する。
ブロック320で、第2のスロット予約されたタイム・スロットで戻りデータが受け取られる。
ブロック322で、第2の予約されたタイム・スロットでNACKが受け取られたかどうかに関して判断がなされる。
NACKが受け取られなかった場合、プロセスフローはブロック324に進み得る。ブロック324で、ブロック308で発行された読取り要求パケットに関連するプロセッサ・キャッシュ・ラインに要求されたデータを送ることによって戻りデータが処理される。
次いで、プロセスフローはブロック304に戻ることができ、そこで、新たな組のタイム・スロットが新たな要求パケットに対して識別され得る。
この非一時的コンピュータ可読媒体を、全体的に、参照番号400によって示す。非一時的コンピュータ可読媒体400は、プログラミング・コードなどのような、コンピュータにより実施される命令を格納する任意の典型的なストレージ・デバイスに対応し得る。
例えば、非一時的コンピュータ可読媒体400は、不揮発性メモリ、揮発性メモリ、および/または1つもしくは複数のストレージ・デバイスの1つまたは複数を含み得る。
不揮発性メモリの例には、電気的に消去可能なプログラマブル読出し専用メモリ(EEPROM)や読出し専用メモリ(ROM)が含まれるが、これらに限定されるものではない。
揮発性メモリの例には、スタティック・ランダム・アクセス・メモリ(SRAM)やダイナミック・ランダム・アクセス・メモリ(DRAM)が含まれるが、これらに限定されるものではない。ストレージ・デバイスの例には、ハード・ディスク・ドライブ、コンパクト・ディスク・ドライブ、デジタル多目的ディスク・ドライブ、光学ドライブ、およびフラッシュ・メモリ・デバイスが含まれるが、これらに限定されるものではない。
非一時的コンピュータ可読媒体400は、特定用途向け集積回路(ASIC)とすることもできる。
一実施形態では、有形の機械可読媒体400は、プロセッサ402によってコンピュータ・バス404を介してアクセスされ得る。
第1の領域406は、メモリ・モジュールの総メモリ待ち時間に少なくとも部分的に基づいてメモリ・モジュールの固定応答時間を求めるように構成されるタイミング構成モジュールを含み得る。
このアービトレータは、読取り要求に対応する戻りデータを受け取るための使用可能なタイム・スロットを識別することができ、現時点のクロック・サイクルと使用可能なタイム・スロットの時間差が固定応答時間以上である。
次いで、アービトレータは、使用可能なタイム・スロットを予約することによって第1のスロット予約を生成する。
一実施形態では、アービトレータは、読取り要求に対応する戻りデータを受け取るための第2の使用可能なタイム・スロットも識別し、第2の使用可能なタイム・スロットを予約することによって第2のスロット予約も生成する。
第1のスロット予約と第2のスロット予約の時間間隔は固定応答時間に等しくし得る。
この読取り要求は、第1のスロット予約の時間から固定応答時間を減算することによって求められるクロック・サイクルで発行され得る。
一実施形態では、これらスロット予約のいずれも読取り要求パケットによってメモリ・モジュールに通信されない。
メモリ・モジュールは固定応答時間で読取り要求に応答するように構成されるので、戻りデータは第1のスロット予約で共用バス上に到達することになる。
戻りデータは、読取り要求によって要求されるデータまたは固定応答時間によって指定される時間ではデータが使用可能でなかったことの指示を含み得る。
メモリ・アクセス・インターフェースは、第1のスロット予約で戻された戻りデータを対応する読取り要求に関連付ける。
さらに、第1のスロット予約で戻された戻りデータが読取り要求によって識別されるデータである場合、メモリ・アクセス・インターフェースは、第2のスロット予約を解除し得る。
例えば、非一時的コンピュータ可読媒体400がハード・ドライブである場合、ソフトウェアの構成要素は不連続セクタまたは重なり合うセクタにさえも格納され得る。
Claims (15)
- 共用バスによって接続された複数のメモリ・モジュールの各々の総メモリ待ち時間に少なくとも部分的に基づいて前記メモリ・モジュールの各々の固定応答時間を求めることと、
前記メモリ・モジュールへの読取り要求に対応する戻りデータを前記メモリ・モジュールのターゲット・メモリ・モジュールからデータ・バスを介して受け取るために使用可能なタイム・スロットであって、現時点のクロック・サイクルと前記使用可能なタイム・スロットとの時間差が前記ターゲット・メモリ・モジュールの固定応答時間より長いタイム・スロットを識別することと、
前記使用可能なタイム・スロットを予約することによって第1のスロット予約を生成することと、
前記データ・バスを介して前記メモリ・モジュールに、前記第1のスロット予約の時間から前記ターゲット・メモリ・モジュールの固定応答時間を減算することによって求められるクロック・サイクルで発行される前記読取り要求を発行することと
を含む方法。 - 前記ターゲット・メモリ・モジュールは、前記固定応答時間に対応する期限で前記データ・バスに前記戻りデータを送るように構成される
請求項1に記載の方法。 - 前記固定応答時間で前記戻りデータを受け取ることに基づいて、前記戻りデータを前記対応する読取り要求と一致させること
を含む請求項1に記載の方法。 - 前記ターゲット・メモリ・モジュールから前記戻りデータを受け取るための前記第1のスロット予約は前記メモリ・モジュールに通信されない
請求項1に記載の方法。 - 前記第1のスロット予約よりも時間的に後の第2の使用可能なタイム・スロットを識別し予約することによって前記第1のスロット予約に関連付けられた前記読取り要求と同一の読取り要求に関連付けられる第2のスロット予約を生成すること
を含み、
前記ターゲット・メモリ・モジュールが、前記読取り要求によって示される要求されたデータを、前記要求されたデータが前記第1のスロット予約に到達するための時間内で戻せない場合には、前記読取り要求に対応する第2の戻りデータが前記第2のスロット予約で受け取られる
請求項1に記載の方法。 - 前記第1のスロット予約と前記第2のスロット予約との時間間隔は前記ターゲット・メモリ・モジュールの固定応答時間に等しい
請求項5に記載の方法。 - 共用バスを介してメモリ・コントローラに動作可能に結合される一群のメモリ・モジュール
を備え、
前記メモリ・コントローラは、
前記メモリ・モジュールの各々の総メモリ待ち時間に少なくとも部分的に基づいて前記メモリ・モジュールの各々の固定応答時間を求めるように構成され、
前記メモリ・モジュールへの読取り要求に対応する戻りデータを前記メモリ・モジュールのターゲット・メモリ・モジュールから受け取るための使用可能なタイム・スロットであって、現時点のクロック・サイクルと前記使用可能なタイム・スロットの時間差が前記ターゲット・メモリ・モジュールの前記固定応答時間より長いタイム・スロットを識別することと、
前記使用可能なタイム・スロットを予約することによって第1のスロット予約を生成することと、
前記共用バスを介して読取り要求を発行することと
によって、前記一群のメモリ・モジュールのターゲット・メモリ・モジュールに読取り要求を発行するように構成される
システム。 - 前記メモリ・モジュールのそれぞれは、
前記読取り要求によって指示されるメモリ・アドレスから要求されたデータを取得するように構成されるモジュール・コントローラ
を備える
請求項7に記載のシステム。 - 前記要求されたデータが前記固定応答時間内で使用可能である場合、前記モジュール・コントローラは、前記要求されたデータを含む前記戻りデータを前記ターゲット・メモリ・モジュールの前記固定応答時間で前記共用バスに送る
請求項8に記載のシステム。 - 前記要求されたデータが前記固定応答時間内で使用可能でない場合、前記モジュール・コントローラは、否定応答を含む前記戻りデータを前記ターゲット・メモリ・モジュールの前記固定応答時間で前記共用バスに送る
請求項8に記載のシステム。 - 前記メモリ・コントローラは、前記第1のスロット予約で前記ターゲット・メモリ・モジュールによって戻される前記戻りデータを前記対応する読取り要求と一致させるように構成される
請求項7に記載のシステム。 - 前記メモリ・コントローラは、前記第1のスロット予約に関連付けられた前記読取り要求と同一の読取り要求に関連付けられる第2のスロット予約を生成するように構成され、前記第1のスロット予約と前記第2のスロット予約の時間間隔は前記ターゲット・メモリ・モジュールの固定応答時間に等しい
請求項7に記載のシステム。 - 共用バスによって接続された複数のメモリ・モジュールの各々の固定応答時間を前記メモリ・モジュールの各々の総メモリ待ち時間に少なくとも部分的に基づいて求めることと、
前記メモリ・モジュールへの読取り要求に対応する戻りデータを前記メモリ・モジュールのターゲット・メモリ・モジュールから受け取るための使用可能なタイム・スロットであって、現時点のクロック・サイクルと前記使用可能なタイム・スロットの時間差が前記ターゲット・メモリ・モジュールの固定応答時間より長いクロック・サイクルを識別することと、
前記使用可能なタイム・スロットを予約することによって第1のスロット予約を生成することと、
前記第1のスロット予約の時間から前記ターゲット・メモリ・モジュールの固定応答時間を減算することによって求められるクロック・サイクルで発行される前記読取り要求を前記メモリ・モジュールに発行することと
をプロセッサに指令するように構成されるコードを含む非一時的コンピュータ可読媒体。 - 前記第1のスロット予約で戻される前記戻りデータを前記読取り要求と関連付けるように前記プロセッサに指令するように構成されるコード
を含み、
前記第1のスロット予約は前記メモリ・モジュールに通信されない
請求項13に記載の非一時的コンピュータ可読媒体。 - 前記読取り要求に対応する戻りデータを受け取るための第2の使用可能なタイム・スロットを識別することと、
前記第2の使用可能なタイム・スロットを予約することによって前記第1のスロット予約に関連付けられた前記読取り要求と同一の読取り要求に関連付けられる第2のスロット予約を生成することと
を前記プロセッサに指令するように構成されるコードを含む請求項13に記載の非一時的コンピュータ可読媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/028357 WO2012125149A1 (en) | 2011-03-14 | 2011-03-14 | Memory interface |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014508361A JP2014508361A (ja) | 2014-04-03 |
JP5666722B2 true JP5666722B2 (ja) | 2015-02-12 |
Family
ID=46831015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013557998A Expired - Fee Related JP5666722B2 (ja) | 2011-03-14 | 2011-03-14 | メモリ・インターフェース |
Country Status (5)
Country | Link |
---|---|
US (1) | US9411757B2 (ja) |
EP (1) | EP2686774B1 (ja) |
JP (1) | JP5666722B2 (ja) |
KR (1) | KR101527308B1 (ja) |
WO (1) | WO2012125149A1 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
US10116564B2 (en) * | 2014-11-10 | 2018-10-30 | Cavium, Inc. | Hybrid wildcard match table |
US11218410B2 (en) | 2014-11-10 | 2022-01-04 | Marvell Asia Pte, Ltd. | Hybrid wildcard match table |
US11943142B2 (en) | 2014-11-10 | 2024-03-26 | Marvell Asia Pte, LTD | Hybrid wildcard match table |
US9781225B1 (en) * | 2014-12-09 | 2017-10-03 | Parallel Machines Ltd. | Systems and methods for cache streams |
US9866498B2 (en) * | 2014-12-23 | 2018-01-09 | Intel Corporation | Technologies for network packet cache management |
US10810142B2 (en) | 2017-05-15 | 2020-10-20 | Xilinx, Inc. | Adaptive scheduling of memory requests |
US10140222B1 (en) | 2017-07-06 | 2018-11-27 | Micron Technology, Inc. | Interface components |
US10706005B2 (en) * | 2017-12-08 | 2020-07-07 | Vmware, Inc. | File system interface for remote direct memory access |
US10275352B1 (en) * | 2017-12-28 | 2019-04-30 | Advanced Micro Devices, Inc. | Supporting responses for memory types with non-uniform latencies on same channel |
WO2022025318A1 (ko) | 2020-07-30 | 2022-02-03 | 김영일 | Mmi 인터페이스 장치 및 그에 기반한 컴퓨팅 시스템 |
US11409684B2 (en) | 2020-07-31 | 2022-08-09 | Alibaba Group Holding Limited | Processing accelerator architectures |
US11625341B2 (en) * | 2020-08-11 | 2023-04-11 | Alibaba Group Holding Limited | Narrow DRAM channel systems and methods |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58159127A (ja) * | 1982-03-17 | 1983-09-21 | Nec Corp | メモリ制御装置 |
JPS60140451A (ja) * | 1983-12-28 | 1985-07-25 | Hitachi Ltd | メモリバス方式 |
JPH04119445A (ja) * | 1990-09-11 | 1992-04-20 | Canon Inc | 計算機システム |
US5699520A (en) | 1994-08-25 | 1997-12-16 | Hewlett-Packard Company | Flow control apparatus and method for a computer interconnect using adaptive credits and flow control tags |
US5717931A (en) * | 1994-12-20 | 1998-02-10 | Motorola, Inc. | Method and apparatus for communicating between master and slave electronic devices where the slave device may be hazardous |
JP3563541B2 (ja) | 1996-09-13 | 2004-09-08 | 株式会社東芝 | データ格納装置及びデータ格納方法 |
JPH11119923A (ja) | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | データアクセス制御装置及びデータアクセス制御プログラムを記録した媒体 |
JPH11232040A (ja) * | 1998-02-17 | 1999-08-27 | Sony Corp | データ出力装置及び方法 |
US6377582B1 (en) | 1998-08-06 | 2002-04-23 | Intel Corporation | Decentralized ring arbitration for multiprocessor computer systems |
US6738845B1 (en) | 1999-11-05 | 2004-05-18 | Analog Devices, Inc. | Bus architecture and shared bus arbitration method for a communication device |
US6868486B1 (en) * | 2000-08-25 | 2005-03-15 | Ncr Corporation | Providing multiple memory controllers on a memory bus |
US6415369B1 (en) | 2000-08-29 | 2002-07-02 | Agere Systems Guardian Corp. | Shared devices and memory using split bus and time slot interface bus arbitration |
US7336283B2 (en) | 2002-10-24 | 2008-02-26 | Hewlett-Packard Development Company, L.P. | Efficient hardware A-buffer using three-dimensional allocation of fragment memory |
JP2004310394A (ja) * | 2003-04-07 | 2004-11-04 | Sharp Corp | Sdramアクセス制御装置 |
US20050080999A1 (en) * | 2003-10-08 | 2005-04-14 | Fredrik Angsmark | Memory interface for systems with multiple processors and one memory system |
WO2007105376A1 (ja) * | 2006-03-10 | 2007-09-20 | Matsushita Electric Industrial Co., Ltd. | 集積回路、及び集積回路システム |
US7925168B2 (en) | 2007-10-16 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Optical interconnect system providing communication between computer system components |
CN101911288B (zh) | 2007-10-23 | 2012-12-26 | 惠普开发有限公司 | 计算机系统设备中的全光学快速分布式仲裁 |
US7532785B1 (en) | 2007-10-23 | 2009-05-12 | Hewlett-Packard Development Company, L.P. | Photonic interconnects for computer system devices |
WO2010134201A1 (ja) * | 2009-05-22 | 2010-11-25 | 株式会社日立製作所 | 半導体装置 |
-
2011
- 2011-03-14 KR KR1020137027086A patent/KR101527308B1/ko active IP Right Grant
- 2011-03-14 WO PCT/US2011/028357 patent/WO2012125149A1/en active Application Filing
- 2011-03-14 US US14/005,196 patent/US9411757B2/en not_active Expired - Fee Related
- 2011-03-14 EP EP11860733.2A patent/EP2686774B1/en not_active Not-in-force
- 2011-03-14 JP JP2013557998A patent/JP5666722B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US9411757B2 (en) | 2016-08-09 |
EP2686774A4 (en) | 2014-08-20 |
WO2012125149A1 (en) | 2012-09-20 |
JP2014508361A (ja) | 2014-04-03 |
EP2686774A1 (en) | 2014-01-22 |
KR20130136535A (ko) | 2013-12-12 |
EP2686774B1 (en) | 2017-02-01 |
US20140040518A1 (en) | 2014-02-06 |
KR101527308B1 (ko) | 2015-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5666722B2 (ja) | メモリ・インターフェース | |
EP3729281B1 (en) | Scheduling memory requests with non-uniform latencies | |
EP2223217B1 (en) | System, apparatus, and method for modifying the order of memory accesses | |
US20150046642A1 (en) | Memory command scheduler and memory command scheduling method | |
US20210073152A1 (en) | Dynamic page state aware scheduling of read/write burst transactions | |
JP5305542B2 (ja) | 投機的なプリチャージの検出 | |
CN101609438B (zh) | 存储器系统、其访问控制方法和计算机程序 | |
TWI710910B (zh) | 使用同步化和非同步化記憶體裝置之適應性機制的混合記憶體、其方法及其儲存節點 | |
EP3732578B1 (en) | Supporting responses for memory types with non-uniform latencies on same channel | |
WO2024036985A1 (zh) | 存储系统及其计算存储处理器、固体硬盘和数据读写方法 | |
US9620215B2 (en) | Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode | |
CN110235113B (zh) | 存储器控制器和用于数据处理的系统和方法 | |
WO2021075076A1 (ja) | 情報処理装置、及び情報処理方法 | |
US20170192720A1 (en) | Prioritization of order ids in dram scheduling | |
US8452920B1 (en) | System and method for controlling a dynamic random access memory | |
JP7572856B2 (ja) | 同じチャネルで不均一なレイテンシを有するメモリタイプのための応答のサポート | |
JPWO2015040750A1 (ja) | データ転送装置、情報処理装置及びio制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131105 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140820 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140905 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141117 |
|
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: 20141208 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141210 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5666722 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |