IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

<>
  • 特表-効率的なメモリバス管理 図1
  • 特表-効率的なメモリバス管理 図2
  • 特表-効率的なメモリバス管理 図3
  • 特表-効率的なメモリバス管理 図4
  • 特表-効率的なメモリバス管理 図5
  • 特表-効率的なメモリバス管理 図6
  • 特表-効率的なメモリバス管理 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-06-30
(54)【発明の名称】効率的なメモリバス管理
(51)【国際特許分類】
   G06F 12/00 20060101AFI20230623BHJP
   G06F 13/362 20060101ALI20230623BHJP
【FI】
G06F12/00 572A
G06F13/362 510C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022567751
(86)(22)【出願日】2021-04-27
(85)【翻訳文提出日】2023-01-04
(86)【国際出願番号】 US2021029299
(87)【国際公開番号】W WO2021231076
(87)【国際公開日】2021-11-18
(31)【優先権主張番号】15/931,825
(32)【優先日】2020-05-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】グァンハオ シェン
(72)【発明者】
【氏名】ラビンドラ ナス バルガバ
(72)【発明者】
【氏名】ラガヴァ スラヴァン アディダム
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA14
5B160CD01
5B160CD13
5B160CD19
(57)【要約】
メモリコントローラは、メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを発生させるアービタを備える。アービタは、ストリーク中に、メモリチャネルのデータバス効率のインジケータを監視する。インジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、アービタは、現在のストリークを停止し、他のタイプのストリークを開始する。
【選択図】図4
【特許請求の範囲】
【請求項1】
メモリコントローラであって、
アービタを備え、
前記アービタは、
(a)メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを発生させ、(b)読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、前記メモリチャネルのデータバス効率のインジケータを監視し、(c)データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始するように動作可能である、
メモリコントローラ。
【請求項2】
メモリアクセス要求を受信するための第1の入力を有するコマンドキューと、
少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)に結合するように構成されたメモリチャネルであって、コマンドバス及びデータバスを含むメモリチャネルに結合するための出力を有するメモリインタフェースキューと、を更に備え、
前記アービタは、前記コマンドキューからエントリを選択し、これらのエントリを前記メモリインタフェースキューに配置して前記メモリチャネルを介して送信させるために、前記コマンドキューに結合されている、
請求項1のメモリコントローラ。
【請求項3】
前記データバス効率のインジケータは、データバス利用率のローリング計算値を含む、
請求項1のメモリコントローラ。
【請求項4】
前記データバス効率のインジケータは、列アドレスストローブ(CAS)コマンド間の時間間隔の測定値を含む、
請求項1のメモリコントローラ。
【請求項5】
前記データバス効率のインジケータは、直近に送信されたCASコマンドと、選択された後続のCASコマンドを送信可能な時間と、の間の時間間隔を含む、
請求項4のメモリコントローラ。
【請求項6】
前記データバス効率のインジケータは、直近に送信された3つのCASコマンドが送信された間隔を含む、
請求項4のメモリコントローラ。
【請求項7】
前記アービタは、ストリーク中の選択されたコマンドの後であって、同じストリークの後続のコマンドの前に、前記所定の閾値を調整するように更に動作可能である、
請求項1のメモリコントローラ。
【請求項8】
前記アービタは、ストリークの初期読み取り又は書き込みに関してより低いデータバス効率を可能にし、その後、より高いデータバス効率を要求するように更に動作可能である、
請求項7のメモリコントローラ。
【請求項9】
データバス効率が所定の閾値未満であることを示すことは、前記現在のストリークを停止して他のタイプのストリークを開始するための予測ターンアラウンド時間に更に基づいている、
請求項1のメモリコントローラ。
【請求項10】
方法であって、
メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを発生させるステップと、
読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、メモリチャネルのデータバス効率のインジケータを監視するステップと、
データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始するステップと、を含む、
方法。
【請求項11】
メモリ読み取り及びメモリ書き込みを含む複数のメモリアクセス要求を受信するステップと、
前記メモリアクセス要求を満たすためのメモリアクセスコマンドをメモリインタフェースキューに選択的に配置し、前記メモリアクセスコマンドを、前記メモリインタフェースキューから、少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)に結合されたメモリチャネルに送信するステップと、を更に含む、
請求項10の方法。
【請求項12】
前記データバス効率のインジケータは、データバス利用率のローリング計算値を含む、
請求項10の方法。
【請求項13】
前記データバス効率のインジケータは、列アドレスストローブ(CAS)コマンド間の時間間隔の測定値を含む、
請求項10の方法。
【請求項14】
前記データバス効率のインジケータは、直近に送信されたCASコマンドと、選択された後続のCASコマンドを送信可能な時間と、の間の時間間隔を含む、
請求項13の方法。
【請求項15】
前記データバス効率のインジケータは、直近に送信された3つのCASコマンドが送信された間隔を含む、
請求項13の方法。
【請求項16】
ストリーク中の選択されたコマンドの後であって、同じストリークの後続のコマンドの前に、前記所定の閾値を調整するステップを更に含む、
請求項10の方法。
【請求項17】
ストリークの初期読み取り又は書き込みに関してより低いデータバス効率を可能にし、その後、より高いデータバス効率を要求するステップを更に含む、
請求項16の方法。
【請求項18】
データバス効率が所定の閾値未満であることを示すことは、前記現在のストリークを停止して他のタイプのストリークを開始するための予測ターンアラウンド時間に更に基づいている、
請求項10の方法。
【請求項19】
データ処理システムであって、
中央処理ユニットと、
前記中央処理ユニットに結合されたデータファブリックと、
前記中央処理ユニットからのメモリ要求を満たすために前記データファブリックに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
メモリアクセス要求を受けるための第1の入力を有するコマンドキューと、
少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)に結合するように構成されたメモリチャネルに結合するための出力を有するメモリインタフェースキューと、
前記コマンドキューからエントリを選択し、これらのエントリを前記メモリインタフェースキューに配置して前記メモリチャネルを介して送信するために前記コマンドキューに結合されたアービタと、を備え、
前記アービタは、
(a)前記メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを発生させ、(b)読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、前記メモリチャネルのデータバス効率のインジケータを監視し、(c)データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始するように動作可能である、
データ処理システム。
【請求項20】
前記データバス効率のインジケータは、データバス利用率のローリング計算値を含む、
請求項19のデータ処理システム。
【請求項21】
前記データバス効率のインジケータは、列アドレスストローブ(CAS)コマンド間の時間間隔の測定値を含む、
請求項19のメモリコントローラ。
【請求項22】
前記データバス効率のインジケータは、直近に送信されたCASコマンドと、選択された後続のCASコマンドを送信可能な時間と、の間の時間間隔を含む、
請求項21のメモリコントローラ。
【請求項23】
前記データバス効率のインジケータは、直近に送信された3つのCASコマンドが送信された間隔を含む、
請求項21のデータ処理システム。
【請求項24】
前記アービタは、ストリーク中の選択されたコマンドの後であって、同じストリークの後続のコマンドの前に、前記所定の閾値を調整するように更に動作可能である、
請求項19のデータ処理システム。
【請求項25】
前記アービタは、ストリークの初期読み取り又は書き込みに関してより低いデータバス効率を可能にし、その後、より高いデータバス効率を要求するように更に動作可能である、
請求項24のデータ処理システム。
【請求項26】
データバス効率が所定の閾値未満であることを示すことは、前記現在のストリークを停止して他のタイプのストリークを開始するための予測ターンアラウンド時間に更に基づいている、
請求項19のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、一般に、メインメモリ用の安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップを使用する。今日販売されている殆どのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって広められた様々なダブルデータ速度(DDR)DRAM規格に適合する。DDR DRAMは、高速アクセス回路を伴う従来のDRAMメモリセルアレイを使用して、高い転送速度を達成し、メモリバスの利用率を向上させる。
【0002】
典型的なDDRメモリコントローラは、メモリコントローラが保留中の要求を順不同に選ぶことによって効率を高めることができるようにすべく、保留中の読み取り要求及び書き込み要求を記憶するためのキューを維持する。例えば、メモリコントローラは、所定のランクのメモリ内の同じ行に対する複数のメモリアクセス要求(「ページヒット」と呼ばれる)をキューから順不同に取り出し、それらをメモリシステムに連続して発行して、現在の行をプリチャージして別の行を繰り返しアクティブ化するオーバーヘッドを回避することができる。しかしながら、DDR 5等の最新のメモリ技術で利用可能なバス帯域幅を利用しながら、ディープキューからアクセスを走査して選ぶことは、既知のメモリコントローラにより達成することが困難になっている。メモリコントローラは、バス効率を向上させるために、読み取りコマンド又は書き込みコマンドのストリーク(streaks)を生成する等の技術を使用することができる。しかしながら、そのような技術は、現在のストリークの一部ではないコマンドを遅延させることにより生じるレイテンシ懸念、及び、コマンドバスを読み取りストリークから書き込みストリークへ及びその逆へ「ターンアラウンド(turning around)する」ことに関連する更なる性能オーバーヘッド等の性能トレードオフを伴う。
【図面の簡単な説明】
【0003】
図1】先行技術で知られている加速処理ユニット(APU)及びメモリシステムのブロック図である。
図2】幾つかの実施形態に係る、図1と同様のAPUで用いるのに適したメモリコントローラのブロック図である示す。
図3】幾つかの実施形態に係る、図2のメモリコントローラの一部のブロック図である。
図4】幾つかの実施形態に係る、ストリーク効率を管理するためのプロセスのフロー図である。
図5】幾つかの更なる実施形態に係る、ストリーク効率を管理するための他のプロセスのフロー図である。
図6】幾つかの実施形態に係る、クロスモードアクティブ化コマンドを実行するためのプロセスのフロー図である。
図7】幾つかの実施形態に係る、クロスモードアクティブ化コマンドを実行するための他のプロセスのフロー図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。特に言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、特に言及されなければ、直接接続の任意の記述は、適切な形態の間接電気接続を使用する代わりの実施形態も意味する。
【0005】
メモリコントローラは、(a)メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを引き起こし、(b)読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、メモリチャネルのデータバス効率のインジケータを監視し、及び、(c)データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始する、ように動作可能なアービタを備える。
【0006】
方法は、メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを引き起こすことを含む。読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、メモリチャネルのデータバス効率のインジケータが監視される。データバス効率のインジケータが、データバス効率が所定の未満であることを示すことに応じて、現在のストリークが停止され、他のタイプのストリークが開始される。
【0007】
データ処理システムは、中央処理ユニットと、中央処理ユニットに接続されるデータファブリックと、中央処理ユニットからのメモリ要求を満たすためにデータファブリックに接続されるメモリコントローラと、を含む。メモリコントローラは、コマンドキューと、メモリインタフェースキューと、アービタと、を備える。コマンドキューは、メモリアクセス要求を受けるための第1の入力を含む。メモリインタフェースキューは、少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)に接続するようになっているとともにコマンドバス及びデータバスを含むメモリチャネルに結合するための出力を有する。アービタは、コマンドキューからエントリを選択するとともにこれらのエントリをそれらがメモリチャネルを介して送信されるようにするメモリインタフェースキューに配置するためにコマンドキューに接続される。アービタは、(a)メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを引き起こし、(b)読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、メモリチャネルのデータバス効率のインジケータを監視し、及び、(c)データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始する、ように動作可能である。
【0008】
図1は、従来技術において知られている加速処理ユニット(APU)100及びメモリシステム130のブロック図である。APU100は、ホストデータ処理システムにおけるプロセッサとして用いるのに適した集積回路であり、概して、中央処理ユニット(CPU)コア複合体110と、グラフィックスコア120と、ディスプレイエンジン122のセットと、メモリ管理ハブ140と、データファブリック125と、周辺コントローラ160のセットと、周辺バスコントローラ170のセットと、システム管理ユニット(SMU)180と、を含む。
【0009】
CPUコア複合体110は、CPUコア112とCPUコア114とを含む。この例では、CPUコア複合体110が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体110が任意の数のCPUコアを含むことができる。CPUコア112,114のそれぞれは、制御ファブリックを形成するシステム管理ネットワーク(SMN)と、データファブリック125と、に対して双方向で接続されるとともに、データファブリック125にメモリアクセス要求を与えることができる。CPUコア112,114のそれぞれは、単一のコアであってもよく、又は更に、キャッシュ等の特定のリソースを共有する2つ以上の単一のコアを伴うコア複合体であってもよい。
【0010】
グラフィックスコア120は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニット(GPU)である。グラフィックスコア120は、SMNとデータファブリック125とに対して双方向で接続され、データファブリック125にメモリアクセス要求を与えることができる。これに関して、APU100は、CPUコア複合体110とグラフィックスコア120とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体110とグラフィックスコア120とがメモリ空間の一部を共有する一方でグラフィックスコア120がCPUコア複合体110によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0011】
ディスプレイエンジン122は、モニタ上に表示するためにグラフィックスコア120によって生成されたオブジェクトをレンダリングしてラスタライズする。グラフィックスコア120及びディスプレイエンジン122は、メモリシステム130内の適切なアドレスへの均一な変換のために共通メモリ管理ハブ140に双方向で接続されており、メモリ管理ハブ140は、そのようなメモリアクセスを生成してメモリシステムから戻される読み取りデータを受信するためにデータファブリック125に双方向で接続される。
【0012】
データファブリック125は、任意のメモリアクセスエージェントとメモリ管理ハブ140との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を決定するための、基本入力/出力システム(BIOS)によって規定されるシステムメモリマップと、各仮想接続のためのバッファと、を含む。
【0013】
周辺コントローラ160は、ユニバーサルシリアルバス(USB)コントローラ162及びシリアルアドバンストテクノロジーアタッチメント(SATA)インタフェースコントローラ164を含み、これらのそれぞれは、システムハブ166及びSMNバスに対して双方向で接続される。これらの2つのコントローラは、APU100で使用され得る周辺コントローラの単なる典型例である。
【0014】
周辺バスコントローラ170は、システムコントローラ又は「サウスブリッジ」(SB)172と、周辺構成要素相互接続エクスプレス(PCIe)コントローラ174と、を含み、これらのそれぞれは、入力/出力(I/O)ハブ176及びSMNバスに対して双方向で接続されている。また、I/Oハブ176は、システムハブ166及びデータファブリック125に対して双方向で接続されている。したがって、例えば、CPUコアは、データファブリック125がI/Oハブ176を介してルーティングするアクセスにより、USBコントローラ162、SATAインタフェースコントローラ164、SB 172、又は、PCIeコントローラ174内のレジスタをプログラムすることができる。APU100のためのソフトウェア及びファームウェアは、リードオンリーメモリ(ROM)、フラッシュ電気的消去可能プログラマブルROM(EEPROM)等の様々な不揮発性メモリタイプの何れかであり得るシステムデータドライブ又はシステムBIOSメモリ(図示省略)に記憶される。概して、BIOSメモリはPCIeバスを介してアクセスされ、システムデータドライブはSATAインタフェースを介してアクセスされる。
【0015】
SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(PLL)等の1つ以上のクロックソース(図示省略)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を決定するためにCPUコア112,114及びグラフィックスコア120から測定された電力消費値を受信することができる。
【0016】
メモリ管理ハブ140及びその関連する物理インタフェース(PHY)151,152は、この実施形態ではAPU100と統合される。メモリ管理ハブ140は、メモリチャネル141,142とパワーエンジン149とを含む。メモリチャネル141は、ホストインタフェース145と、メモリチャネルコントローラ143と、物理インタフェース147と、を含む。ホストインタフェース145は、メモリチャネルコントローラ143を、シリアル存在検出リンク(SDP)を介してデータファブリック125に対して双方向で接続する。物理インタフェース147は、メモリチャネルコントローラ143をPHY151に対して双方向で接続し、DDR PHYインタフェース(DFI)仕様に準拠する。メモリチャネル142は、ホストインタフェース146と、メモリチャネルコントローラ144と、物理インタフェース148と、を含む。ホストインタフェース146は、他のSDPを介してメモリチャネルコントローラ144をデータファブリック125に対して双方向で接続する。物理インタフェース148は、メモリチャネルコントローラ144をPHY152に対して双方向で接続し、DFI仕様に準拠する。パワーエンジン149は、SMNバスを介してSMU180に対して、APBを介してPHY151,152に対して双方向で接続されるとともに、メモリチャネルコントローラ143、144に対して双方向で接続される。PHY151は、メモリチャネル131への双方向接続を有する。PHY152は双方向接続メモリチャネル133を有する。
【0017】
メモリ管理ハブ140は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、共有パワーエンジン149を使用して、以下で更に説明する態様でメモリチャネルコントローラ143及びメモリチャネルコントローラ144の両方の動作を制御する。メモリチャネル141、142のそれぞれは、DDRバージョン5(DDR 5)、DDRバージョン4(DDR 4)、低電力DDR 4(LPDDR 4)、グラフィックスDDRバージョン5(GDDR 5)、及び、高帯域幅メモリ(HBM)等の最先端DDRメモリに接続することができ、将来のメモリ技術に適合され得る。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを与えるとともに、内蔵熱監視も行なう。
【0018】
メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、この例では別個のランクに対応する代表的なDIMM134,136,138を含む、DDRxバス132に接続されるデュアルインラインメモリモジュール(DIMM)のセットを含む。同様に、メモリチャネル133は、代表的なDIMM135,137,139を含む、DDRxバス129に接続されるDIMMのセットを含む。
【0019】
APU100は、ホストデータ処理システムの中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインタフェースを与える。これらのインタフェースは、2つのダブルデータレート(DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶デバイスへのインタフェースを含む。
【0020】
また、APU100は、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は熱監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112,114及び/又はグラフィックスコア120の周波数及び電圧を低減することができる。APU100が高温になりすぎる場合、SMUを完全にシャットダウンすることができる。SMNバスを介してSMU180によって外部センサから熱事象を受けることもでき、SMU180は、それに応じてクロック周波数及び/又は電源電圧を低減することができる。
【0021】
図2は、図1のようなAPUで用いるのに適したメモリコントローラ200のブロック図である。メモリコントローラ200は、概して、メモリチャネルコントローラ210及び電力コントローラ250を含む。メモリチャネルコントローラ210は、概して、インタフェース212と、メモリインタフェースキュー214と、コマンドキュー220と、アドレス生成器222と、コンテントアドレッサブルメモリ(CAM)224と、再生キュー230を含む再生制御ロジック231と、リフレッシュ制御ロジックブロック232と、タイミングブロック234と、ページテーブル236と、アービタ238と、誤り訂正符号(ECC)チェック回路242と、ECC生成ブロック244と、データバッファ246と、リフレッシュロジック247と、を含む。
【0022】
インタフェース212は、外部バスを介したデータファブリック125に対する第1の双方向接続を有し、出力を有する。メモリコントローラ200において、この外部バスは、「AXI 4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インタフェースバージョン4と適合するが、他の実施形態では他のタイプのインタフェースとなり得る。インタフェース212は、メモリアクセス要求を、FCLK(又はMEMCLK)ドメインとして知られている第1のクロックドメインから、UCLKドメインとして知られているメモリコントローラ200の内部の第2のクロックドメインに変換する。同様に、メモリインタフェースキュー214は、UCLKドメインからDFIインタフェースと関連付けられるDFICLKドメインへのメモリアクセスを与える。
【0023】
アドレス生成器222は、AXI 4バスを介してデータファブリック125から受信されるメモリアクセス要求のアドレスを復号する。メモリアクセス要求は、正規化フォーマットで表わされた物理アドレス空間内のアクセスアドレスを含む。アドレス生成器222は、正規化されたアドレスを、メモリシステム130内の実際のメモリデバイスをアドレス指定するために及び関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システムBIOSは、メモリシステム130内のメモリデバイスに問い合わせてそれらのサイズ及び構成を決定し、アドレス生成器222と関連付けられた構成レジスタのセットをプログラムする。アドレス生成器222は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー220は、CPUコア112,114及びグラフィックスコア120等のAPU100内のメモリアクセスエージェントから受信されるメモリアクセス要求のキューである。コマンドキュー220は、アドレス生成器222によって復号されたアドレスフィールドと、アービタ238がアクセスタイプ及びサービス品質(QoS)識別子を含むメモリアクセスを効率的に選択できるようにする他のアドレス情報と、を記憶する。CAM224は、書き込み後の書き込み(WAW)及び書き込み後の読み取り(RAW)順序規則等の順序規則を実施するための情報を含む。
【0024】
誤り訂正符号(ECC)生成ブロック244は、メモリに送られる書き込みデータのECCを決定する。ECCチェック回路242は、受信されたECCを入力されたECCと照合してチェックする。
【0025】
再生キュー230は、アドレス及びコマンドパリティ応答等の応答を待っているアービタ238によって選択されたメモリアクセスを記憶するための一時的なキューである。再生制御ロジック231は、ECCチェック回路242にアクセスして、戻されたECCが正しいか又はエラーを示すかを決定する。再生制御ロジック231は、これらのサイクルのうち何れかのパリティ又はECCエラーの場合にアクセスが再生される再生シーケンスを開始して制御する。再生されたコマンドは、メモリインタフェースキュー214に配置される。
【0026】
リフレッシュ制御ロジック232は、メモリアクセスエージェントから受信した通常の読み取り及び書き込みメモリアクセス要求とは別個に生成される様々な電源断、リフレッシュ、及び、終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュ制御ロジックは、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュ制御ロジック232は、DRAMチップ内のメモリセルの蓄積キャパシタからの電荷の漏れによって引き起こされるデータ誤りを防止するために、定期的に、所定の条件に応じて、リフレッシュコマンドを生成する。リフレッシュ制御ロジック232はアクティブ化カウンタ248を含み、この実施形態において、アクティブ化カウンタ248は、メモリチャネルを介してメモリ領域に送信されるアクティブ化コマンドのローリング数をカウントするカウンタをメモリ領域ごとに有する。メモリ領域は、以下で更に説明するように、幾つかの実施形態ではメモリバンクであり、他の実施形態ではメモリサブバンクである。更に、リフレッシュ制御ロジック232は、システム内の熱変化に起因するオンダイ終端抵抗の不一致を防止するためにZQを定期的に較正する。
【0027】
アービタ238は、コマンドキュー220に双方向で接続されるとともに、メモリチャネルコントローラ210の主要な部分であり、メモリバスの使用を改善するためにアクセスのインテリジェントスケジューリングによって効率を向上させる。アービタ238は、タイミングブロック234を使用して、DRAMタイミングパラメータに基づいてコマンドキュー220内の特定のアクセスが発行に適格であるかどうかを決定することによって適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られる、アクティブ化コマンド間の最小指定時間を有する。タイミングブロック234は、JEDEC仕様で定められたこのタイミングパラメータ及び他のタイミングパラメータに基づいて適格性を決定するカウンタのセットを維持し、再生キュー230に対して双方向で接続される。ページテーブル236は、アービタ238のためのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、再生キュー230に対して双方向で接続される。
【0028】
ECC生成ブロック244は、インタフェース212から受信した書き込みメモリアクセス要求に応じて、書き込みデータにしたがってECCを計算する。データバッファ246は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。データバッファは、アービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをメモリインタフェースキュー214に出力する。
【0029】
電力コントローラ250は、概して、アドバンスト拡張可能インタフェース、バージョン1(AXI)へのインタフェース252と、アドバンスト周辺バス(APB)インタフェース254と、パワーエンジン260と、を含む。インタフェース252は、図2に別々に示される「EVENT_n」とラベル付けされたイベント信号を受信するための入力と、出力と、を含む、SMNへの第1の双方向接続を有する。APBインタフェース254は、インタフェース252の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。パワーエンジン260は、インタフェース252の出力に接続された入力と、メモリインタフェースキュー214の入力に接続された出力と、を有する。パワーエンジン260は、構成レジスタ262のセットと、マイクロコントローラ(μC)264と、セルフリフレッシュコントローラ(SLFREF/PE)266と、信頼性のある読み取り/書き込みタイミングエンジン(RRW/TE)268と、を含む。構成レジスタ262は、AXIバスを介してプログラムされ、メモリコントローラ200内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ262は、図2に詳細に示されないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ266は、リフレッシュ制御ロジック232によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読み取り/書き込みタイミングエンジン268は、DDRインタフェース最大読み取りレイテンシ(MRL)トレーニング及びループバック試験のような目的のために、メモリ又はI/Oデバイスへ連続的なメモリアクセスストリームを与える。
【0030】
メモリチャネルコントローラ210は、関連するメモリチャネルへのディスパッチのためのメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーション決定を行なうために、アドレス生成器222は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループを含むプリデコードされた情報に復号し、コマンドキュー220がプリデコードされた情報を記憶する。構成レジスタ262は、アドレス生成器222が受信したアドレス情報をどのように復号するかを決定するための構成情報を記憶する。アービタ238は、復号されたアドレス情報、タイミングブロック234によって示されるタイミング適格性情報、及び、ページテーブル236によって示されるアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。例えば、アービタ238は、メモリページを変更するために必要なプリチャージコマンド及びアクティブ化コマンドのオーバーヘッドを回避するために、オープンページへのアクセスの優先度を実装し、あるバンクへのオーバーヘッドアクセスを別のバンクへの読み取り及び書き込みアクセスとインターリーブすることによって隠す。特に、通常動作中、アービタ238は、通常、ページを、これらのページが異なるページを選択する前にプリチャージされる必要があるまで、異なるバンクで開いたままにする。アービタ238は、幾つかの実施形態では、それぞれのコマンドのターゲットメモリ領域に関するアクティブ化カウンタ248の少なくともそれぞれの値に基づいてコマンド選択の適格性を決定する。
【0031】
図3は、幾つかの実施形態に係る、図2のメモリコントローラ200の一部分300のブロック図である。部分300は、アービタ238と、アービタ238の動作に関連する制御回路360のセットと、を含む。アービタ238は、サブアービタ305及び最終アービタ350のセットを含む。サブアービタ305は、サブアービタ310と、サブアービタ320と、サブアービタ330と、を含む。サブアービタ310は、「PH ARB」とラベル付けされたページヒットアービタ312と、出力レジスタ314と、を含む。ページヒットアービタ312は、コマンドキュー220に接続された第1の入力、第2の入力、及び、出力を有する。レジスタ314は、ページヒットアービタ312の出力に接続されたデータ入力、UCLK信号を受信するためのクロック入力、及び、出力を有する。サブアービタ320は、「PC ARB」とラベル付けされたページコンフリクトアービタ322と、出力レジスタ324と、を含む。ページコンフリクトアービタ322は、コマンドキュー220に接続された第1の入力と、第2の入力と、出力と、を有する。レジスタ324は、ページコンフリクトアービタ322の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。サブアービタ330は、「PM ARB」とラベル付けされたページミスアービタ332と、出力レジスタ334と、を含む。ページミスアービタ332は、コマンドキュー220に接続された第1の入力と、第2の入力と、出力と、を有する。レジスタ334は、ページミスアービタ332の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。最終アービタ350は、リフレッシュ制御ロジック232の出力に接続された第1の入力と、ページ閉鎖予測器362からの第2の入力と、出力レジスタ314の出力に接続された第3の入力と、出力レジスタ324の出力に接続された第4の入力と、出力レジスタ334の出力に接続された第5の入力と、「CMD 1」とラベル付けされたキュー214に第1のアービトレーションの勝者を提供するための第1の出力と、「CMD 2」とラベル付けされたキュー214に第2のアービトレーションの勝者を提供するための第2の出力と、を有する。
【0032】
制御回路360は、図2に関して上述したようにタイミングブロック234及びページテーブル236、並びに、ページ閉鎖予測器362、現在モードレジスタ302、及び、クロスモードイネーブルロジック304を含む。タイミングブロック234は、クロスモードイネーブルロジック304に接続される出力と、ページヒットアービタ312と、ページコンフリクトアービタ322と、ページミスアービタ332とに接続される入力及び出力と、を有する。ページテーブル234は、再生キュー230の出力に接続された入力と、再生キュー230の入力に接続された出力と、コマンドキュー220の入力に接続された出力と、タイミングブロック234の入力に接続された出力と、ページ閉鎖予測器362の入力に接続された出力と、を有する。ページ閉鎖予測器362は、ページテーブル236の一方の出力に接続される入力と、出力レジスタ314の出力に接続される入力と、最終アービタ350の第2の入力に接続される出力と、を有する。クロスモードイネーブルロジック304は、現在モードレジスタ302に接続される入力と、コマンドキュー220に接続される入力と、最終アービタ350に接続される入力及び出力と、ページヒットアービタ310、ページコンフリクトアービタ320、並びに、ページミスアービタ330に接続される入力及び出力と、を有する。
【0033】
動作中、アービタ238は、現在のモード(読み取りストリーク又は書き込みストリークが進行中であるかどうかを示す)、各エントリのページ状態、各メモリアクセス要求の優先度、及び、要求間の依存関係を考慮に入れて、コマンドキュー220及びリフレッシュ制御ロジック232からメモリアクセスコマンドを選択する。優先度は、AXI 4バスから受信されてコマンドキュー220に記憶される要求のサービス品質すなわちQoSに関連するが、メモリアクセスのタイプ及びアービタ238の動的動作に基づいて変更することができる。アービタ238は、既存の集積回路技術の処理限界と送信限界との間の不整合に対処するために並列に動作する3つのサブアービタを含む。それぞれのサブアービトレーションの勝者が最終アービタ350に提示される。最終アービタ350は、これらの3つのサブアービトレーションの勝者間、並びに、リフレッシュ制御ロジック232からのリフレッシュ動作を選択し、ページ閉鎖予測器362によって決定されるように読み取り又は書き込みコマンドを読み取り又はオートプリチャージコマンドによる書き込みに更に修正することができる。
【0034】
クロスモードイネーブルロジック304は、メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを引き起こすように動作する。何れかのタイプのコマンドの現在のストリーク中、クロスモードイネーブルロジック304は、図4及び図5に関して以下で更に説明するように、メモリチャネルのデータバス効率のインジケータを監視する。データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、クロスモードイネーブルロジック304は、現在のストリークを停止し、他のタイプのストリークを開始し、現在モードレジスタ302内の現在のモードを変更する。
【0035】
ページヒットアービタ312、ページコンフリクトアービタ322及びページミスアービタ332のそれぞれは、これらのそれぞれのカテゴリに属するコマンドキュー220内のコマンドのタイミング適格性を決定するためにタイミングブロック234の出力に接続された入力を有する。タイミングブロック234は、各ランクにおけるそれぞれのバンクごとに特定の動作に関連する持続時間をカウントするバイナリカウンタのアレイを含む。状態を決定するために必要なタイマの数は、タイミングパラメータ、所定のメモリタイプのバンクの数、及び、所定のメモリチャネル上でシステムによってサポートされるランクの数に依存する。次に実装されるタイミングパラメータの数は、システムに実装されるメモリのタイプに依存する。例えば、GDDR 5メモリは、他のDDRxメモリタイプよりも多くのタイミングパラメータに従うためにより多くのタイマを必要とする。バイナリカウンタとして実装された汎用タイマのアレイを含むことにより、タイミングブロック234は、異なるメモリタイプに関してスケーリングされて再利用され得る。クロスモードイネーブルロジック304からの入力は、何れのタイプのコマンドが読み取る又は書き込むかをサブアービタにシグナリングして、最終アービタ350の候補として提供する。
【0036】
ページヒットは、開いているページに対する読み取り又は書き込みサイクルである。ページヒットアービタ312は、ページを開くためにコマンドキュー220内のアクセス間を調停する。タイミングブロック234におけるタイマによって追跡されてページヒットアービタ312によってチェックされるタイミング適格パラメータは、例えば、行アドレスストローブ(RAS)を列アドレスストローブ(CAS)遅延時間(tRCD)及びCAS待ち時間(tCL)に含む。例えば、tRCDは、ページがRASサイクルで開かれた後のページへの読み取り又は書き込みアクセスの前に経過しなければならない最小時間を指定する。ページヒットアービタ312は、割り当てられたアクセスの優先度に基づいてサブアービトレーションの勝者を選択する。一実施形態では、優先度が4ビット、1ホット値であり、したがって、これは4つの値の中の1つの優先度を示すが、この4レベルの優先度方式が単なる一例であることは明らかである。ページヒットアービタ312が同じ優先度レベルで2つ以上の要求を検出する場合、最も古いエントリが勝つ。
【0037】
ページコンフリクトは、バンク内の別の行が現在アクティブ化される場合のバンク内の1つの行へのアクセスである。ページコンフリクトアービタ322は、コマンドキュー220内のアクセスと、対応するバンク及びランクにおいて現在開いているページとコンフリクトするページとの間で調停する。ページコンフリクトアービタ322は、プリチャージコマンドを発行させるサブアービトレーション勝者を選択する。タイミングブロック234のタイマによって追跡されてページコンフリクトアービタ322によってチェックされるタイミング適格パラメータは、例えば、プリチャージコマンド期間(tRAS)を含む。ページコンフリクトアービタ322は、割り当てられたアクセスの優先度に基づいてサブアービトレーション勝者を選択する。ページコンフリクトアービタ322が同じ優先度レベルの2つ以上の要求を検出する場合、最も古いエントリが勝つ。
【0038】
ページミスは、プリチャージ状態にあるバンクへのアクセスである。ページミスアービタ332は、コマンドキュー220内のアクセスとプリチャージされたメモリバンクとの間を調停する。タイミングブロック234のタイマによって追跡されてページミスアービタ332によってチェックされるタイミング適格パラメータは、例えば、プリチャージコマンド期間(tRP)を含む。同じ優先度レベルでページミスである2つ以上の要求がある場合、最も古いエントリが勝つ。
【0039】
各サブアービタは、それぞれのサブアービトレーション勝者のための優先度値を出力する。最終アービタ350は、ページヒットアービタ312、ページコンフリクトアービタ322、及び、ページミスアービタ332のそれぞれからのサブアービトレーション勝者の優先度値を比較する。最終アービタ350は、一度に2つのサブアービトレーション勝者を考慮に入れた相対的な優先度比較のセットを実行することによって、サブアービトレーション勝者間の相対的な優先度を決定する。サブアービタは、現在のモードが変化するときに利用可能な候補コマンドのセットがサブアービトレーション勝者として迅速に利用可能であるように、モード、読み取り及び書き込みごとにコマンドを調停するためのロジックのセットを含むことができる。
【0040】
最終アービタ350は、3つのサブアービトレーション勝者の相対的な優先度を決定した後、サブアービトレーション勝者が競合するか否かを決定する(すなわち、それらの勝者が同じバンク及びランクに向けられているかどうか)。そのような競合が存在しない場合、最終アービタ350は、最高の優先度を有する最大2つのサブアービトレーション勝者を選択する。競合がある場合、最終アービタ350は以下のルールに従う。ページヒットアービタ312のサブアービトレーション勝者の優先度値がページコンフリクトアービタ322の優先度値よりも高く且つそれらが両方とも同じバンク及びランクである場合、最終アービタ350は、ページヒットアービタ312によって示されるアクセスを選択する。ページコンフリクトアービタ322のサブアービトレーション勝者の優先度値がページヒットアービタ312の優先度値よりも高く且つそれらが両方とも同じバンク及びランクである場合、最終アービタ350は、幾つかの更なる要因に基づいて勝者を選択する。場合によっては、ページ閉鎖予測器362は、オートプリチャージ属性を設定することにより、ページヒットアービタ312が示すアクセスの終了時にページを閉鎖させる。
【0041】
ページヒットアービタ312内で、優先度は、メモリアクセスエージェントからの要求優先度によって最初に設定されるが、アクセスのタイプ(読み取り又は書き込み)及びアクセスのシーケンスに基づいて動的に調整される。概して、ページヒットアービタ312は、読み取りに対してより高い暗黙の優先度を割り当てるが、書き込みが完了に向かって進行するようにするために優先度上昇メカニズムを実装する。
【0042】
ページヒットアービタ312が読み取り又は書き込みコマンドを選択するたびに、ページ閉鎖予測器362は、オートプリチャージ(AP)属性を伴うコマンドを送信するか否かを決定する。読み取り又は書き込みサイクル中、オートプリチャージ属性は、所定のアドレスビットを用いて設定され、オートプリチャージ属性は、読み取り又は書き込みサイクルが完了した後にDDRデバイスにページを閉じさせ、これにより、メモリコントローラがそのバンクのための個別のプリチャージコマンドを後に送信する必要性を回避する。ページ閉鎖予測器362は、選択されたコマンドと同じバンクにアクセスするコマンドキュー220に既に存在する他の要求を考慮に入れる。ページ閉鎖予測器362がメモリアクセスをAPコマンドに変換する場合、そのページへの次のアクセスはページミスとなる。
【0043】
異なるメモリアクセスタイプのために異なるサブアービタを使用することによって、各アービタは、全てのアクセスタイプ(ページヒット、ページミス及びページコンフリクト)間で調停することが必要とされる場合よりも単純なロジックで実装され得る。これにより、アービトレーションロジックを簡略化でき、アービタ238のサイズを比較的小さく抑えることができる。
【0044】
他の実施形態では、アービタ238は、異なる数のサブアービタを含むことができる。更に他の実施形態では、アービタ238は、特定のタイプの2つ以上のサブアービタを含むことができる。例えば、アービタ238は、2つ以上のページヒットアービタ、2つ以上のページコンフリクトアービタ、及び/又は、2つ以上のページミスアービタを含むことができる。
【0045】
図4は、幾つかの実施形態に係る、ストリーク効率を管理するためのプロセスのフロー図400である。幾つかのバージョンでは、プロセスは、メモリコントローラのアービタ(例えば、アービタ238、図2)内のロジック回路を監視することで具現化される。他のバージョンでは、プロセスは、上述したサブアービタ305及び最終アービタ350とは異なるアービトレーション方法を使用しながら、同様の機能を有するデジタルロジック又はコントローラによって実行されてもよい。このプロセスは、概して、ストリークプロセスのターンアラウンドをいつ実行するかを決定し、現在のモードを書き込みから読み取りに変更し又は読み取りから書き込みに変更してデータバス利用効率を向上させる。このプロセスは、読み取りコマンド又は書き込みコマンドのストリークの長さを決定する他の技術と組み合わせて使用されてもよい。
【0046】
プロセスは、コマンドの各ストリークの開始時にブロック402で開始し、プロセスがターンアラウンドを行なって新しいストリークを開始するように現在のモードを変更することを決定するまでコマンドのストリークを監視する。ブロック404において、ストリークの開始時の1つ以上の初期コマンドは、適切なコマンドアービトレーションプロセスに従ってアービタによって送信される。ブロック406において、データバス効率が初期コマンドに関して監視又は予測される。幾つかの実施形態において、データバス効率のインジケータは、データバス利用率のローリング計算として計算される。他の実施形態では、以下で更に説明するように、他のインジケータが使用される。ブロック408において、プロセスは、データバス効率のインジケータが所定の低効率閾値よりも低いかどうかをチェックする。この低効率インジケータは、ストリークの開始時に使用される。これは、データがデータバスを通過するまでストリークの最初の幾つかのコマンドが効率の変化をもたらさないからである。ストリークが続くにつれて、一連の効率的なコマンドが利用可能であれば、効率が急速に高効率に変化すると予想される。
【0047】
ブロック408において、効率インジケータが、所定の低効率閾値よりも低くない場合、プロセスはブロック412に進む。それが低い場合、プロセスはブロック410に進み、高効率で利用可能なクロスモードコマンドがあるかどうかをチェックする。ブロック410は、アービタにおいて候補コマンドにおける予測効率を計算することを含むことができる。概して、計算された効率インジケータは、クロスモードコマンドが高効率であるかどうかを決定するために所定の閾値と比較される。幾つかの実施形態において、計算された効率インジケータと比較される閾値は、新しいストリークを開始するためにそのプロセスをターンアラウンドするのにかかる時間に少なくとも部分的に基づく。幾つかの実施形態において、効率インジケータは「コスト」インジケータとして計算され、高コストは非効率を示し、低コストは効率的なコマンドを示す。ブロック410において利用可能なクロスモード高効率コマンドがある場合、プロセスはブロック411に進み、そこで現在のストリークを終了し、他のタイプのストリークを開始する。そうでない場合、プロセスはブロック412に進み、現在のストリークが継続される。
【0048】
ブロック412において、効率閾値が高効率レベルに上げられる。このより高いレベルは、ストリークが初期の非効率性を過ぎた後に予想される高い効率を反映するように選択され、ストリークの初期中央でしばしば発生する高い効率を達成している。効率閾値が調整されると、プロセスは、ブロック414において、ストリーク内の次のコマンドを送信することによってストリークを継続する。データバス効率は、ブロック416に示されるように、コマンドを送信することによってもたらされる又はもたらされることになるデータバス効率を監視又は予測するために使用される効率インジケータを計算することによって、コマンドごとに監視され続ける。
【0049】
ブロック418において、効率インジケータが高効率閾値よりも低い場合、現在のストリークを終了することが有利であり得る。プロセスはブロック420に進み、高効率クロスモードコマンドが利用可能であるかどうかをチェックする。そうである場合、プロセスはブロック422に進み、現在のストリークを終了し、他のタイプのストリークを開始する。利用可能な高効率クロスモードコマンドがない場合、プロセスはブロック414に進み、現在のストリークが継続する。
【0050】
この実施形態では、低効率閾値が高効率閾値に調整されるが(ブロック412)、他の実施形態では、効率閾値は、ストリークで送信される各コマンドの後に調整される。そのような場合、効率閾値は、効率インジケータ値を計算する前にブロック416において更新される。幾つかの実施形態では、現在のストリークの長さを追跡するためにカウンタが使用され、効率閾値は、カウンタの値に基づいて送信された各コマンドの後により高い効率を必要とするように調整される。
【0051】
図5は、幾つかの更なる実施形態に係る、ストリーク効率を管理するためのプロセスのフロー図500である。このプロセスは、ストリークがストリーク効率を監視し始めるたびに使用され、概して、メモリコントローラのアービタ(例えば、アービタ238、図2)内のロジックを監視することによって実行される。図示したプロセスは、データバス効率のインジケータとして2つ以上の隣接する列アドレスストローブ(CAS)コマンド間の間隔を使用し、プロセスが「ターンアラウンド」してストリークを終了することを決定するまで、ストリークで送信された各コマンドについて繰り返される。
【0052】
新しいストリークが始まると、ブロック502のプロセスは、ターンアラウンドモニタプロセスを開始する。ブロック504において、ストリークの初期コマンドがコマンドバスを介して送信される。コマンドが送信された後、プロセスは、ストリークが終了すべきか継続すべきかを決定するために幾つかのチェックを実行する。ブロック506において、プロセスは、アービタにおいて送信されるべく現在のモードコマンドのみが利用可能であるかどうかを決定する。例えば、現在のストリークが書き込みストリークである場合、ブロック506は、書き込みコマンドのみが保留中であるか否かを決定する。そうである場合、プロセスは、ストリークを継続し、ブロック504に戻る。次に、ブロック508において、プロセスは、クロスモードコマンドのみがアービタにおいて利用可能であるか否かを決定する。そうである場合、プロセスは、現在のストリークを終了し、新しいストリークを開始する。そうでない場合、プロセスはブロック510に進み、そこで、プロセスは、「CAS-CAS」間隔と呼ばれる、CASコマンド間の間隔に基づいてそれぞれのコマンドごとにデータバス効率を監視又は予測する。
【0053】
ブロック510は、少なくとも1つのコマンドに関するデータバス効率のインジケータを計算する。幾つかの実施形態において、インジケータは、アービタにおける多くの候補コマンドについて計算される。データバス効率のインジケータは、列アドレスストローブ(CAS)コマンド間の1つ以上の時間間隔の測定又は予測を含む。例えば、一実施形態において、データバス効率のインジケータは、直近に送信されたCASコマンドと、選択された後続のCASコマンドを送信可能な時間と、の間の時間間隔を含む。この計算は、それぞれの候補コマンドのデータバス効率の予測をもたらす。他の実施形態は、計算に2つ以上のCAS-CAS間隔を含む。概して、間隔はクロックサイクルで測定される。
【0054】
ブロック512において、プロセスは、ブロック510において計算されたインジケータに基づいて、候補として利用可能な任意のクロスモードコマンドが高効率を有するかどうかを決定する。利用可能な高効率クロスモードコマンドがない場合、プロセスは、現在のストリークを継続する。この条件付きチェックは、ターンアラウンドが行なわれるシーケンスを防止するという利点を有し、その結果、高効率コマンドが他のモードで利用可能ではなく、プロセスが再び繰り返しターンアラウンドする。概して、計算された効率インジケータは、クロスモードコマンドが高効率であるかどうかを決定するために所定の閾値と比較される。インジケータがクロックサイクルで直接計算されたCAS-CAS間隔である場合、このインジケータは、低コストが高効率をシグナリングするコスト関数として扱うことができる。値と比較される閾値は、幾つかの実施形態では、新しいストリークを開始するためにプロセスをやり直すのにかかる時間に少なくとも部分的に基づく。
【0055】
ブロック512で利用可能な高効率クロスモードコマンドがある場合、プロセスは、ブロック514に進み、そこで、高効率閾値値内にわずかしかないが全体的に非効率的なストリークを提供するコマンドの連続シーケンスを防止するために別のタイプの効率インジケータを使用する。ブロック514は、直近に送信されたCASコマンドと、3つ前のCASコマンドで発生した前のCASコマンドとの間の間隔を与える「最後の3(last 3)」現在モードCAS-CAS間隔を計算する。この「最後の3」間隔が所定の閾値よりも大きい場合、プロセスは現在のストリークを終了させ、ターンアラウンドを実行する。
【0056】
「最後の3」間隔が所定の閾値内にある場合、ブロック514のプロセスはブロック516に進む。ブロック516において、現在のモードに利用可能な高効率コマンドがあるかどうかをチェックする。そうである場合、プロセスは、現在のストリークを継続する。そうでない場合、プロセスはブロック518に進み、そこで現在のストリークを終了する。示されたそれぞれの場合においてストリークを終了させることは、他のモードのストリークが開始されるターンアラウンドプロセスを引き起こす。ターンアラウンドは、クロスモード(以前の現在のモード)の処理中タグをクリアすることを含み、新しい現在のモードにおける待ち進行中タグをクリアする。ストリークを継続することは、ブロック504において送信のための次のコマンドを選択するアービタ238を含む。
【0057】
この実施形態におけるプロセスは、現在のストリークを終了するかどうかを決める際に幾つかの異なる決定を使用するが、他の実施形態は、示された条件チェックの全てよりも少ない数を含むことができる。
【0058】
図6は、幾つかの実施形態に係る、クロスモードアクティブ化コマンドを実行するためのプロセスのフロー図600である。この実施形態において、図示したプロセスは、図3のロジック304等のクロスモードイネーブルロジックによってアービタにおいて実行される。幾つかの実施形態において、図示したプロセスは、図4又は図5等の効率監視技術と共に使用される。概して、このプロセスは、クロスモードに関するページミス/コンフリクト要求のページオープンレイテンシを隠すために、クロスモードからの行アクティブ化(ACT)コマンドが現在のモードコマンドのストリークの終わりに向かって生じることができるようにすることによって、コマンドのストリークの効率を向上させる。
【0059】
ブロック602において、プロセスは、DRAMを有するメモリチャネルを介して処理される連続した読み取りコマンドのストリークを開始する。ブロック604において、プロセスは、共に読み取りコマンドを構成するコマンドをDRAMに送信する。特定の選択されたコマンドに続いて、コマンドバスは、読み取りコマンド又は書き込みコマンドのために行アクティブ化を実行するべくACTコマンドを送信することができる利用可能時間を有する。プロセスは、利用可能な時間を満たしてコマンドバスを効率的に使用するために、送信されるべきアービタで利用可能なACTコマンドの中から選択する必要がある。
【0060】
ブロック606において、プロセスは、現在のモードコマンド、この場合には読み取りコマンドに関連して利用可能なACTコマンドがあるかどうかをチェックする。そうである場合、プロセスは、ブロック609に進み、そこで、読み取りコマンドのためにACTコマンドのうち選択された1つを送信する。そうでない場合、プロセスは、ブロック608に進み、現在クロスモードである利用可能な書き込みコマンドが所定の最小閾値以上であるかどうかをチェックする。そうである場合、プロセスは、クロスモードACTコマンドを送信することを許可され、ブロック610は、書き込みコマンドに関連付けられた利用可能なACTコマンドがあるかどうかをチェックする。そうである場合、ブロック612において、クロスモードACTコマンドが選択されて送信される。ブロック610でクロスモードACTが利用可能でない場合、プロセスは、ブロック611に進み、処理中のコマンドバスタイムスロットのACTを送信しない。
【0061】
ブロック609又は612で何れかのタイプのACTが送信された後、又は、ブロック611でACTがスキップされた後、プロセスは、ブロック614に進み、そこで終了ストリーク状態をチェックする。ストリークを終了させる特定の条件は、異なる実施形態において異なる。例えば、図4図5の処理を用いてもよく、他の処理を用いてもよい。例示的な別の実施形態では、ストリークの長さは、ストリークの開始時にストリークで使用できるコマンドの数のスナップショット又はカウントによって決定される。そのようなスナップショットは、多くの場合、ストリークがどのくらい長く、効率的であり続けることができるかの良好なインジケータである。そのような場合、ブロック614におけるストリーク状態の終了は、ストリークが開始した時点の利用可能なコマンド(スナップショット)から得られたカウントにストリークのサイズが等しいことである。ブロック614における終了ストリーク状態に応じて、プロセスは、ブロック616に進み、そこで現在のストリークを終了し、現在のモード及びクロスモードをスワップし、ブロック612においてACTコマンドが送信された任意のクロスモードコマンドを含むクロスモードコマンドのトランザクションを開始する。ブロック614において、終了ストリーク状態が見つからない場合、プロセスは、ブロック604に戻り、読み取りコマンドを送信する現在のストリークを継続する。
【0062】
図7は、幾つかの実施形態に係る、クロスモードアクティブ化コマンドを実行するための別のプロセスのフロー図700である。図示したプロセスは、読み取りコマンドではなく書き込みコマンドのストリークを示すことを除いて、図6のプロセスと同様である。ブロック702において、プロセスは、メモリチャネルを介してDRAMにトランザクションされる連続した書き込みコマンドのストリークを開始する。これは、概して、ブロック616(図6)におけるもの等の以前のストリークの終了を伴う。ブロック704において、プロセスは、書き込みコマンドを実施するために低レベルコマンドをDRAMに送信する。
【0063】
ACTコマンドのために利用可能なスロットが発生すると、プロセスは、送信されるべきアービタで使用可能なACTコマンドの中から選択する必要がある。ブロック706において、プロセスは、現在のモードコマンド(書き込みコマンド)に関連して利用可能なACTコマンドがあるかどうかをチェックする。そうである場合、プロセスは、ブロック709に進み、そこで書き込みコマンド用のACTコマンドのうち選択された1つを送信する。そうでない場合、プロセスは、ブロック708に進み、そこで、現在クロスモードである利用可能な読み取りコマンドが所定の最小閾値以上であるかどうかをチェックする。そうである場合、プロセスは、クロスモードACTコマンドを送信することを許可され、ブロック710は、書き込みコマンドに関連付けられた利用可能なACTコマンドがあるかどうかをチェックする。所定の最小閾値は、読み取りコマンドがクロスモードの場合の読み取り閾値と、書き込みコマンドがクロスモードの場合の読み取り閾値と異なる書き込み閾値(図6)である。読み取り閾値は、書き込み閾値よりも低いことが好ましい。
【0064】
ブロック710においてクロスモードACTコマンドが利用可能である場合、ブロック712においてクロスモードACTコマンドが選択されて送信される。ブロック710でクロスモードACTが利用可能でない場合、プロセスは、ブロック711に進み、処理中のコマンドバスタイムスロットのACTを送信しない。
【0065】
ブロック709又は712で何れかのタイプのACTが送信された後、又は、ブロック711でACTがスキップされた後、プロセスは、ブロック714に進み、そこで終了ストリーク状態をチェックする。ブロック714における終了ストリーク状態に応じて、プロセスは、ブロック616に進み、そこで現在のストリークを終了し、現在のモード及びクロスモードをスワップし、ブロック712においてACTコマンドが送信された任意のクロスモードコマンドを含むクロスモードコマンドのトランザクションを開始する。ブロック714において、終了ストリーク状態が見つからない場合、プロセスは、ブロック704に戻り、読み取りコマンドを送信する現在のストリークを継続する。
【0066】
図2のメモリコントローラ200又はアービタ238及びリフレッシュ制御ロジック232等の任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られることができる。ネットリストは、集積回路を含むハードウェアの機能も表わすゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0067】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。例えば、メモリチャネルコントローラ210及び/又はパワーエンジン250の内部アーキテクチャは、異なる実施形態において異なり得る。メモリコントローラ200は、高帯域幅メモリ(HBM)、RAMbus DRAM(RDRAM)等のように、DDRx以外の他のタイプのメモリとインタフェースすることができる。図示した実施形態は、別個のDIMM又はSIMMに対応するメモリの各ランクを示したが、他の実施形態では、各モジュールは複数のランクをサポートすることができる。更に他の実施形態は、ホストマザーボードに取り付けられたDRAM等のように、特定のモジュールに含まれていない他のタイプのDRAMモジュール又はDRAMを含むことができる。したがって、添付の特許請求の範囲は、開示された実施形態の範囲内に入る開示された実施形態の全ての変更を網羅することを意図している。
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2023-01-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリコントローラであって、
アービタを備え、
前記アービタは、
(a)メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを発生させ、(b)読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、前記メモリチャネルのデータバス効率のインジケータを監視し、(c)データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始するように動作可能である、
メモリコントローラ。
【請求項2】
メモリアクセス要求を受信するための第1の入力を有するコマンドキューと、
少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)に結合するように構成されたメモリチャネルであって、コマンドバス及びデータバスを含むメモリチャネルに結合するための出力を有するメモリインタフェースキューと、を更に備え、
前記アービタは、前記コマンドキューからエントリを選択し、これらのエントリを前記メモリインタフェースキューに配置して前記メモリチャネルを介して送信させるために、前記コマンドキューに結合されている、
請求項1のメモリコントローラ。
【請求項3】
前記データバス効率のインジケータは、データバス利用率のローリング計算値を含む、
請求項1のメモリコントローラ。
【請求項4】
前記データバス効率のインジケータは、列アドレスストローブ(CAS)コマンド間の時間間隔の測定値を含む、
請求項1のメモリコントローラ。
【請求項5】
前記データバス効率のインジケータは、直近に送信されたCASコマンドと、選択された後続のCASコマンドを送信可能な時間と、の間の時間間隔を含む、
請求項4のメモリコントローラ。
【請求項6】
前記データバス効率のインジケータは、直近に送信された3つのCASコマンドが送信された間隔を含む、
請求項4のメモリコントローラ。
【請求項7】
前記アービタは、ストリーク中の選択されたコマンドの後であって、同じストリークの後続のコマンドの前に、前記所定の閾値を調整するように更に動作可能である、
請求項1のメモリコントローラ。
【請求項8】
前記アービタは、ストリークの初期読み取り又は書き込みに関してより低いデータバス効率を可能にし、その後、より高いデータバス効率を要求するように更に動作可能である、
請求項7のメモリコントローラ。
【請求項9】
方法であって、
メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを発生させるステップと、
読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、メモリチャネルのデータバス効率のインジケータを監視するステップと、
データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始するステップと、を含む、
方法。
【請求項10】
メモリ読み取り及びメモリ書き込みを含む複数のメモリアクセス要求を受信するステップと、
前記メモリアクセス要求を満たすためのメモリアクセスコマンドをメモリインタフェースキューに選択的に配置し、前記メモリアクセスコマンドを、前記メモリインタフェースキューから、少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)に結合されたメモリチャネルに送信するステップと、を更に含む、
請求項の方法。
【請求項11】
前記データバス効率のインジケータは、データバス利用率のローリング計算値を含む、
請求項の方法。
【請求項12】
前記データバス効率のインジケータは、列アドレスストローブ(CAS)コマンド間の時間間隔の測定値を含む、
請求項の方法。
【請求項13】
前記データバス効率のインジケータは、直近に送信されたCASコマンドと、選択された後続のCASコマンドを送信可能な時間と、の間の時間間隔を含む、
請求項12の方法。
【請求項14】
前記データバス効率のインジケータは、直近に送信された3つのCASコマンドが送信された間隔を含む、
請求項12の方法。
【請求項15】
データ処理システムであって、
中央処理ユニットと、
前記中央処理ユニットに結合されたデータファブリックと、
前記中央処理ユニットからのメモリ要求を満たすために前記データファブリックに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
メモリアクセス要求を受けるための第1の入力を有するコマンドキューと、
少なくとも1つのダイナミックランダムアクセスメモリ(DRAM)に結合するように構成されたメモリチャネルに結合するための出力を有するメモリインタフェースキューと、
前記コマンドキューからエントリを選択し、これらのエントリを前記メモリインタフェースキューに配置して前記メモリチャネルを介して送信するために前記コマンドキューに結合されたアービタと、を備え、
前記アービタは、
(a)前記メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを発生させ、(b)読み取りコマンド及び書き込みコマンドのうち一方の現在のストリーク中に、前記メモリチャネルのデータバス効率のインジケータを監視し、(c)データバス効率のインジケータが、データバス効率が所定の閾値未満であることを示すことに応じて、現在のストリークを停止し、読み取りコマンド又は書き込みコマンドのうち他方のストリークを開始するように動作可能である、
データ処理システム。
【国際調査報告】