(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-06-11
(45)【発行日】2025-06-19
(54)【発明の名称】メモリコントローラのためのチャネル及びサブチャネルスロットリング
(51)【国際特許分類】
G06F 12/00 20060101AFI20250612BHJP
G06F 12/06 20060101ALI20250612BHJP
【FI】
G06F12/00 550E
G06F12/06 550A
(21)【出願番号】P 2024576455
(86)(22)【出願日】2023-06-22
(86)【国際出願番号】 US2023025982
(87)【国際公開番号】W WO2024006145
(87)【国際公開日】2024-01-04
【審査請求日】2025-01-23
(32)【優先日】2022-06-29
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ケダーナシュ バラクリシュナン
(72)【発明者】
【氏名】ジェームズ アール. マグロ
【審査官】下林 義明
(56)【参考文献】
【文献】米国特許出願公開第2013/0054901(US,A1)
【文献】特開2012-074042(JP,A)
【文献】特表2019-525271(JP,A)
【文献】特表2024-512623(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00 - 12/06
G06F 13/16 - 13/18
(57)【特許請求の範囲】
【請求項1】
メモリにディスパッチするためのコマンドを選択するように動作可能なメモリコントローラであって、
アービタと、
1つ以上の追加のアービタと協調して過剰な電力使用量の増加を緩和するために、前記アービタに接続されたトラフィックスロットル回路と、を備え、
前記トラフィックスロットル回路は、
第1の所定の期間にわたって、前記アービタ及び前記1つ以上の追加のアービタによって選択された読取りコマンド及び書込みコマンドの数を測定するための監視回路と、
低アクティビティ状態に応じて、第2の所定の期間中に発行される読取りコマンド及び書込みコマンドの数を制限するスロットル回路と、を備える、
メモリコントローラ。
【請求項2】
前記スロットル回路は、前記第2の所定の期間にわたる読取りコマンド及び書込みコマンドの許容可能な増加量を示す制限値を保持するプログラマブル制御レジスタを備える、
請求項1のメモリコントローラ。
【請求項3】
前記プログラマブル制御レジスタは、前記第1の所定の期間及び前記第2の所定の期間をクロックサイクル数として示す値を保持する、
請求項2のメモリコントローラ。
【請求項4】
前記監視回路は、前記1つ以上の追加のアービタからそれぞれ信号を受信する1つ以上の第1の入力であって、前記信号は、前記追加のアービタの各々が、読取りコマンド又は書込みコマンドに関連付けられた列アドレスストローブコマンドを前記メモリに送信したことを示す、1つ以上の第1の入力を含む、
請求項1のメモリコントローラ。
【請求項5】
前記監視回路は、前記1つ以上の追加のアービタからそれぞれ第2の信号を受信する1つ以上の第2の入力であって、前記第2の信号は、前記追加のアービタの各々が、前記メモリに送信される読取りコマンド又は書込みコマンドを選択したことを示す、1つ以上の第2の入力を含む、
請求項4のメモリコントローラ。
【請求項6】
前記1つ以上の追加のアービタのうち少なくとも1つは、前記アービタと少なくとも部分的に共有されるメモリチャネルのサブチャネルにコマンドをディスパッチするためのサブチャネルアービタである、
請求項1のメモリコントローラ。
【請求項7】
前記1つ以上の追加のアービタのうち少なくとも1つは、前記アービタによって使用されるチャネルとは別のチャネルにコマンドをディスパッチするためのチャネルアービタである、
請求項1のメモリコントローラ。
【請求項8】
前記スロットル回路は、前記低アクティビティ状態に続いて、前記アービタが読取りコマンド及び書込みコマンドを送信するのを許可されているか否かを前記アービタに示すように動作可能なトグル回路を含み、
前記トグル回路は、前記1つ以上の追加のアービタ内の同様のトグル回路と同期される、
請求項1のメモリコントローラ。
【請求項9】
アービタにおける過剰な電力使用増加を1つ以上の追加のアービタと協調して緩和する方法であって、
第1の所定の期間にわたって、前記アービタ及び前記1つ以上の追加のアービタによって選択された読取りコマンド及び書込みコマンドの数を測定することと、
読取りコマンド及び書込みコマンドに関連する低アクティビティ状態に応じて、第2の所定の期間中にメモリに送信するために前記アービタによって発行される読取りコマンド及び書込みコマンドの数を制限することと、を含む、
方法。
【請求項10】
プログラマブル制御レジスタに保持された第1の値に基づいて、前記第2の所定の期間にわたる読取りコマンド及び書込みコマンドの許容可能な増加量を決定することを含む、
請求項9の方法。
【請求項11】
クロックサイクルの数を示す、前記プログラマブル制御レジスタに保持された第2の値に基づいて、前記第1の期間及び前記第2の期間を決定することを含む、
請求項10の方法。
【請求項12】
前記1つ以上の追加のアービタの各々から信号を受信することであって、前記信号は、前記追加のアービタの各々が、読取りコマンド又は書込みコマンドに関連付けられた列アドレスストローブコマンドを前記メモリに送信したことを示す、ことを含む、
請求項9の方法。
【請求項13】
前記1つ以上の追加のアービタの各々から第2の信号を受信することであって、前記第2の信号は、前記追加のアービタの各々が、前記メモリに送信される読取りコマンド又は書込みコマンドを選択したことを示す、ことを含む、
請求項9の方法。
【請求項14】
前記1つ以上の追加のアービタのうち少なくとも1つは、前記アービタと少なくとも部分的に共有されるメモリチャネルのサブチャネルにコマンドをディスパッチするためのサブチャネルアービタである、
請求項9の方法。
【請求項15】
前記1つ以上の追加のアービタのうち少なくとも1つは、前記アービタによって使用されるチャネルとは別のチャネルにコマンドをディスパッチするためのチャネルアービタである、
請求項9の方法。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、一般に、メインメモリ用に、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップを使用する。今日販売されているほとんどのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)が普及を推進した様々なダブルデータレート(DDR)DRAM規格と適合する。DDR DRAMは、高速アクセス回路を有する従来のDRAMメモリセルアレイを使用して、高い転送レートを達成し、メモリバスの利用を改善する。DDRメモリコントローラは、より多くのDRAMモジュールを収容し、単一のチャネルを使用するより速くデータをメモリと交換するために、複数のDDRチャネルとインターフェースし得る。更に、現代のサーバシステムは、単一のデータプロセッサ内に複数のメモリコントローラを含むことが多い。例えば、いくつかの現代のサーバプロセッサは、各々がそれぞれのDDRチャネルに接続された8個又は12個のメモリコントローラを含む。
【0002】
メモリチャネル上のトラフィックは、電力を節約するためにスロットリングされるか又は減速されることがある。このようなスロットリングは、メモリクロック速度に対して比較的長い時間期間にわたって行われ、例えば、メモリクロック及び/又はメモリコントローラクロックを調整することによって達成される。メモリチャネル上のトラフィックは、しばしば「バースト性(bursty)」であり、すなわち、アイドル期間又は低トラフィックの期間の後に、高トラフィックの時間期間が続くことがある。メモリコントローラは、メモリにコマンドを発行しない低電力モードに置かれてもよく、低電力モードが終了するとコマンドの発行を開始してもよい。特に、複数のメモリコントローラが含まれる場合、トラフィックのそのような突然の増加は、メモリコントローラ及びメモリチャネル回路によって消費される電流に有害なスパイクを引き起こす可能性がある。これらのスパイクは、メモリクロック速度と比較して比較的短い時間期間に発生する可能性がある。
【図面の簡単な説明】
【0003】
【
図1】従来技術による、データ処理システム100のブロック図である。
【
図2】
図1のデータ処理システム100で用いるのに適したAPUのブロック図である。
【
図3】いくつかの実施形態による、複数のメモリコントローラを含むメモリシステムのブロック図である。
【
図4】
図2のようなAPUで用いるのに適したデュアルチャネルメモリコントローラを含む部分的なデータ処理システムのブロック図である。
【
図5】いくつかの実施形態による、メモリコントローラでトラフィックをスロットリングするための他のプロセスのフロー図である。
【
図6】いくつかの実施形態による、トラフィックスロットリング回路のブロック図である。
【
図7】いくつかの実施形態による、トラフィックをスロットリングするための別のプロセスのフロー図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様のアイテム又は同一のアイテムを示す。別段の言及がなければ、「連結される(coupled)」という単語及びその関連する動詞は、当該技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段の言及がなければ、直接接続という任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も同様に意味する。
【0005】
メモリコントローラは、メモリへのディスパッチのためにコマンドキューからコマンドを取り出すように動作可能である。メモリコントローラは、アービタと、1つ以上の追加のアービタと協調して過剰な電力使用量の増加を緩和するためのトラフィックスロットル回路と、を含む。トラフィックスロットル回路は、監視回路及びスロットル回路を含む。監視回路は、第1の所定の期間にわたってアービタ及び1つ以上の追加のアービタによって選択された読取りコマンド及び書込みコマンドの数を測定するためのものである。スロットル回路は、読取り及び書込みコマンドに関連する低アクティビティ状態に応じて、第2の所定の期間中にアービタによって発行される読取り及び書込みコマンドの数を制限する。
【0006】
方法は、1つ以上の追加のアービタと協調して、アービタにおける過剰な電力使用量の増加を緩和する。この方法は、第1の所定の期間にわたってアービタ及び1つ以上の追加のアービタによって選択された読取りコマンド及び書込みコマンドの数を測定することを含む。本方法は、読取りコマンド及び書込みコマンドに関連する低アクティビティ状態に応じて、第2の所定の期間中にアービタによって発行される読取りコマンド及び書込みコマンドの数を制限することを含む。
【0007】
処理システムは、データプロセッサと、データプロセッサをメモリに接続する複数のメモリチャネルと、を含む。メモリコントローラは、何れかのメモリチャネルに対応するメモリにディスパッチするために、コマンドキューからコマンドを取り出すように動作可能である。メモリコントローラは、アービタと、各メモリチャネルに対する1つ以上の追加のアービタと協調して過剰な電力使用量の増加を緩和するためのトラフィックスロットル回路と、を含む。トラフィックスロットル回路は、監視回路及びスロットル回路を含む。監視回路は、第1の所定の期間にわたってアービタ及び1つ以上の追加のアービタによって選択された読取りコマンド及び書込みコマンドの数を測定する。スロットル回路は、監視回路及びアービタに接続され、読取りコマンド及び書込みコマンドに関連する低アクティビティ状態に応じて、第2の所定の期間中にアービタによって発行される読取りコマンド及び書込みコマンドの数を制限する。
【0008】
図1は、従来技術による、データ処理システム100のブロック図である。データ処理システム100は、概して、加速処理ユニット(APU)形式のデータプロセッサ110と、メモリシステム120と、周辺部品相互接続エクスプレス(PCIe)システム150と、ユニバーサルシリアルバス(USB)システム160と、ディスクドライブ170と、を含む。データプロセッサ110は、データ処理システム100の中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを与える。これらのインターフェースは、2つのダブルデータレート(DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、シリアルアドバンストテクノロジーアタッチメント(SATA)大容量記憶デバイスへのインターフェースを含む。
【0009】
メモリシステム120は、メモリチャネル130及びメモリチャネル140を含む。メモリチャネル130は、DDRxバス132に接続されるデュアルインラインメモリモジュール(DIMM)のセットを含み、これには、本例では個別のランクに対応する代表的なDIMM134、136、138が含まれる。同様に、メモリチャネル140は、代表的なDIMM144、146、148を含む、DDRxバス142に接続されるDIMMのセットを含む。
【0010】
PCIeシステム150は、データプロセッサ110内のPCIeルート複合体に接続されたPCIeスイッチ152と、PCIeデバイス154と、PCIeデバイス156と、PCIeデバイス158と、を含む。PCIeデバイス156は、システム基本入力/出力システム(basic input/output system、BIOS)メモリ157に接続される。システムBIOSメモリ157は、読み出し専用メモリ(ROM)、フラッシュ電気的消去可能プログラマブルROM(EEPROM)等の様々な不揮発性メモリタイプの何れかとすることができる。
【0011】
USBシステム160は、データプロセッサ110内のUSBマスタに接続されたUSBハブ162と、USBハブ162にそれぞれ接続された代表的なUSBデバイス164、166、168と、を含む。USBデバイス164、166、168は、キーボード、マウス、フラッシュEEPROMポート等のデバイスとすることができる。
【0012】
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量記憶装置を提供する。
【0013】
データ処理システム100は、メモリチャネル130及びメモリチャネル140を提供することによって、最新のコンピューティングアプリケーションでの使用に適している。メモリチャネル130及び140の各々は、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(GDDR5)及び高帯域幅メモリ(HBM)等の最新技術DDRメモリに接続することができ、将来のメモリ技術に適合させることができる。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを提供すると共に、内蔵の熱監視機能も提供する。
【0014】
図2は、
図1のデータ処理システム100のようなシステムで用いるのに適したAPU200のブロック図である。APU200は、概して、中央処理装置(CPU)コア複合体210と、グラフィックスコア220と、ディスプレイエンジン230のセットと、メモリ管理ハブ240と、データファブリック250と、周辺コントローラ260のセットと、周辺バスコントローラ270のセットと、システム管理ユニット(SMU)280と、メモリコントローラ290のセットと、を含む。
【0015】
CPUコア複合体210は、CPUコア212及びCPUコア214を含む。この例では、CPUコア複合体210が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体210が任意の数のCPUコアを含むことができる。CPUコア212及び214の各々は、制御ファブリックを形成するシステム管理ネットワーク(SMN)に、且つ、データファブリック250に双方向に接続され、データファブリック250にメモリアクセス要求を提供することができる。CPUコア212及び214の各々は、単体のコアであり得るか、又は、更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であり得る。
【0016】
グラフィックスコア220は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニット(GPU)である。グラフィックスコア220は、SMNに、且つ、データファブリック250に双方向に接続され、メモリアクセス要求をデータファブリック250に提供することができる。これに関して、APU200は、CPUコア複合体210とグラフィックスコア220とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体210とグラフィックスコア220とがメモリ空間の一部を共有する一方で、グラフィックスコア220がCPUコア複合体210によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0017】
ディスプレイエンジン230は、モニタ上に表示するために、グラフィックスコア220によって生成されたオブジェクトをレンダリング及びラスタライズする。グラフィックスコア220及びディスプレイエンジン230は、メモリシステム120内の適切なアドレスへの均一な変換のために共通のメモリ管理ハブ240に双方向で接続され、メモリ管理ハブ240は、そのようなメモリアクセスを生成してメモリシステムから戻される読取りデータを受信するためにデータファブリック250に双方向で接続される。
【0018】
データファブリック250は、任意のメモリアクセスエージェントとメモリコントローラ290との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック250は、システム構成に基づいてメモリアクセスの送信先を決定するための、BIOSによって規定されるシステムメモリマップ、及び、各仮想接続のためのバッファも含む。
【0019】
周辺コントローラ260は、USBコントローラ262及びSATAインターフェースコントローラ264を含み、これらの各々は、システムハブ266及びSMNバスに対して双方向で接続される。これらの2つのコントローラは、APU200で使用され得る周辺コントローラの典型例に過ぎない。
【0020】
周辺バスコントローラ270は、システムコントローラ又は「サウスブリッジ」(Southbridge、SB)272、及び、PCIeコントローラ274を含み、これらの各々は、入力/出力(I/O)ハブ276に、且つ、SMNバスに双方向に接続されている。また、I/Oハブ276は、システムハブ266に、且つ、データファブリック250にも双方向に接続されている。したがって、例えば、CPUコアは、データファブリック250がI/Oハブ276を介してルーティングするアクセスにより、USBコントローラ262、SATAインターフェースコントローラ264、SB272、又は、PCIeコントローラ274内のレジスタをプログラムすることができる。
【0021】
SMU280は、APU200上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU280は、APU200上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット信号、イネーブル信号及び他の信号を介して複数のオフチップデバイスを制御する。SMU280は、APU200の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(PLL)等の1つ以上のクロックソース(
図2に示さず)を含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を判定するために、CPUコア212、214及びグラフィックスコア220から、測定された電力消費値を受信することができる。
【0022】
メモリコントローラのセット290は、この実施形態では、メモリコントローラ292、294、296、298を含む。各メモリコントローラは、更に以下に説明するように、データファブリック250へのアップストリーム双方向接続と、DDRメモリ等のメモリにアクセスするための、メモリチャネルへのダウンストリーム接続と、を有する。
【0023】
図3は、いくつかの実施形態による、複数のメモリコントローラを含むメモリシステム300のブロック図である。メモリシステム300は、概して、
図2のもののように、APU、GPU又はCPUシステムオンチップ等の集積回路上に具現化される。メモリシステム300は、メモリコントローラ310、320、330と、1つ以上の外部メモリモジュールとインターフェースするためのDDR PHYインターフェース340、342、344と、を含む。また、メモリシステム300は、概して、回路が電圧VDDの電源から給電される「VDDドメイン」とラベル付けされた第1の電力ドメイン302と、回路が電圧VDDPの電源から給電される「VDDPドメイン」とラベル付けされた第2の電力ドメイン304と、を含む電力分配ネットワーク(PDN)を含む。3つのメモリコントローラが示されているが、現代のサーバシステムにおけるほとんどの実施形態では、システムオンチップは、12個、16個又はそれ以上等のように、より多くのメモリコントローラを有するはるかに多くのDDRチャネルを有することができる。いくつかの実施形態では、そのようなメモリコントローラは、メモリコントローラのグループがグループ間のスロットリングを調整する「象限(quadrants)」内に配置される。メモリコントローラ310、320、330は、この実施形態においてそのようなグループを構成する。
【0024】
メモリチャネルコントローラ310、320、330は、概して、第1の電力ドメイン302内に供給され、PDN内の第1の電力ドメイン302の下に、各メモリコントローラに固有の下位レベルドメインを含み得る。同様に、DDR PHYインターフェース340、342、344は、概して、第2の電力ドメイン304において供給され、各DDR PHYインターフェースに固有の、PDNにおける第2の電力ドメイン304の下の、より低いレベルのドメインを含み得る。概して、動作中、メモリチャネルコントローラ310、320、330は、メモリチャネルコントローラがアイドルであり、その後すぐにビジーになってメモリアクセス要求を満たす「バースト性(bursty)」挙動を示す様々なトラフィック負荷を処理する。そのような挙動は、VDDPドメイン304及びVDDドメイン302の一方又は両方において電圧ドループを引き起こす傾向がある。特に、象限内の全てのメモリコントローラがアイドルからほぼ同時に立ち上がり、読取り(RD)コマンド及び書込み(WR)コマンドをそれらの全帯域幅容量で送信し始める場合に、ナノ秒(10~20ナノ秒)のオーダーの電圧ドループが生じる傾向がある。
【0025】
各メモリチャネルコントローラは、それぞれの1つ以上のアービタ312、322、332と、それぞれのトラフィックスロットリング回路314、324、334と、を含む。各トラフィックスロットリング回路は、他のメモリコントローラのアービタと協調して過剰な電力使用量の増加を緩和するために、他のトラフィックスロットリング回路に双方向に接続される。この実施形態では、各トラフィックスロットル回路314、324、334は、第1の所定の期間にわたってそのそれぞれのアービタ及び他のアービタによって取り上げられた読取りコマンド及び書込みコマンドの数を測定するための監視回路と、監視回路及びそれぞれのアービタに結合されたスロットル回路と、を含む。各スロットル回路は、読取りコマンド及び書込みコマンドに関連する低アクティビティ状態に応じて、第2の所定の期間中にアービタによって発行される読取りコマンド及び書込みコマンドの数を制限するように動作し、これは以下で更に説明するように繰り返すことができる。
【0026】
図4は、
図2のようなAPUで用いるのに適したデュアルチャネルメモリコントローラ410を含む部分的データ処理システム400のブロック図である。データファブリック250に接続されたデュアルチャネルメモリコントローラ410が示されており、デュアルチャネルメモリコントローラ410は、データ処理システム400内に存在するいくつかのメモリエージェントを用いて、データファブリック250と通信することができる。デュアルチャネルメモリコントローラ410は、例えば、DDR5 DRAMとともに使用するためのDDR5仕様において定義されるような2つのサブチャネル、又は、高帯域幅メモリ2(HBM2)及びHBM3規格において定義されるそれらのサブチャネルを制御することができる。いくつかの実施形態では、2つのサブチャネルの代わりに、デュアルチャネルメモリコントローラ410は、2つの個別のメモリチャネルコントローラを置換し、データファブリック250及びAPU200内の様々なメモリアドレス指定エージェントに透過的な方法で2つのDDRxチャネルを一緒に制御することができ、その結果、単一のメモリコントローラインターフェース412を使用してメモリアクセスコマンドを送信し、結果を受信することができる。デュアルチャネルメモリコントローラ410は、概して、インターフェース412と、アドレスデコーダ422と、異なるメモリチャネルにそれぞれ割り当てられたメモリチャネル制御回路423A及び423Bの2つのインスタンスと、を含む。メモリチャネル制御回路423A、423Bの各インスタンスは、メモリインターフェースキュー414A、414Bと、コマンドキュー420A、420Bと、連想メモリ(CAM)424A、424Bと、タイミングブロック434A、434Bと、ページテーブル436A、436Bと、アービタ438A、438Bと、ECC生成ブロック444A、444Bと、データバッファ446A、446Bと、窓監視回路(window monitoring circuit)448A、448Bを含むトラフィックスロットル回路432A、432Bと、を含む。
【0027】
他の実施形態では、コマンドキュー430A、430B、アービタ438A、438B、トラフィックスロットル回路432A、432B、及び、メモリインターフェースキュー414A、414Bのみが、使用されるメモリチャネル又はサブチャネル毎に複製され、残りの図示された回路は、2つのチャネルとともに使用するように適合される。更に、図示されたデュアルチャネルメモリコントローラ410は、2つのメモリチャネル又はサブチャネルを制御するために、アービタ438A、438B、コマンドキュー420A、420B、及び、メモリインターフェースキュー414A、414Bの2つのインスタンスを含むが、他の実施形態は、本明細書のクレジット管理技術に従って3つ又は4つのチャネル又はサブチャネル上でDRAMと通信するために使用される、3つ又は4つ以上等のより多くのインスタンスを含み得る。更に、この実施形態ではデュアルチャネルメモリコントローラが使用されるが、他の実施形態は、本明細書のスロットリング技術をシングルチャネルメモリコントローラとともに使用することができる。
【0028】
インターフェース412は、通信バスを介したデータファブリック250への第1の双方向接続と、クレジット制御回路421への第2の双方向接続と、を有する。この実施形態では、インターフェース412は、データファブリック250と通信するためのいくつかのチャネルを確立するためにスケーラブルデータポート(SDP)リンクを使用するが、他のインターフェースリンク規格も使用に適している。例えば、別の実施形態では、通信バスは、「AXI4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インターフェースバージョン4と適合するが、他の実施形態では他のタイプのインターフェースとなり得る。インターフェース412は、メモリアクセス要求を、「FCLK」(又は「MEMCLK」)ドメインとして知られている第1のクロックドメインから、「UCLK」ドメインとして知られているデュアルチャネルメモリコントローラ410の内部の第2のクロックドメインに変換する。同様に、メモリインターフェースキュー414は、UCLKドメインからDFIインターフェースに関連付けられる「DFICLK」ドメインへのメモリアクセスを与える。
【0029】
アドレスデコーダ422は、インターフェース412への双方向リンクと、第1のコマンドキュー420A(「コマンドキュー0」とラベル付けされている)に接続された第1の出力と、第2のコマンドキュー420B(「コマンドキュー1」とラベル付けされている)に接続された第2の出力と、を有する。アドレスデコーダ422は、インターフェース412を介してデータファブリック250上で受信されたメモリアクセス要求のアドレスを復号する。メモリアクセス要求は、正規化フォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アクセスアドレスに基づいて、アドレスデコーダ422は、要求を処理するために、コマンドキュー420A、420Bのうち関連付けられたコマンドキューを有する何れかのメモリチャネルを選択する。選択されたチャネルは、クレジット発行決定を行うことができるように、要求毎にクレジット制御回路421に対して識別される。アドレスデコーダ422は、正規化されたアドレスを、メモリシステム130内の実際のメモリデバイスをアドレス指定するために、且つ、関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システムBIOSは、メモリシステム130内のメモリデバイスに問い合わせてそれらのサイズ及び構成を判定し、アドレスデコーダ422に関連付けられた構成レジスタのセットをプログラムする。アドレスデコーダ422は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。各メモリアクセス要求は、アドレスデコーダ422によって選択されたメモリチャネルに対するコマンドキュー420A又は420Bにロードされる。
【0030】
各コマンドキュー420A、420Bは、CPUコア212及び214並びにグラフィックスコア220等のAPU200内の様々なメモリアクセスエンジンから受信されるメモリアクセス要求のキューである。各コマンドキュー420A、420Bは、関連付けられたメモリチャネルを介して発行されるメモリアクセス要求をコマンドキュー420A、420Bから選択するために、それぞれのアービタ438A、438Bに双方向に接続される。各コマンドキュー420A、420Bは、アドレスデコーダ422によって復号されたアドレスフィールド、並びに、それぞれのアービタ438A、438Bがアクセスタイプ及びサービス品質(QoS)識別子を含むメモリアクセスを効率的に選択できるようにする他のアドレス情報を記憶する。各CAM424A、424Bは、書込み後の書込み(WAW)及び書込み後の読取り(RAW)順序規則等の順序規則を課すための情報を含む。
【0031】
アービタ438A、438Bの各々は、適切なコマンドで満たされるメモリアクセス要求を選択するために、それぞれのコマンドキュー420A、420Bに双方向に接続され、スロットリング信号を受信するために、それぞれのトラフィックスロットリング回路432A、432Bに双方向に接続される。アービタ438A、438Bは、概して、メモリチャネルのメモリバスの使用を改善するために、アクセスのインテリジェントスケジューリングによって、そのそれぞれのメモリチャネルの効率を改善する。各アービタ438A、438Bは、それぞれのタイミングブロック434A、434Bを使用して、それぞれのコマンドキュー420A、420B内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判定することによって、適切なタイミング関係を課すようになっている。各ページテーブル436A、436Bは、そのそれぞれのアービタ438A、438Bのためのそれぞれのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、そのそれぞれのリプレイキュー430A、430Bに対して双方向で接続される。各アービタ438A、438Bは、デコードされたアドレス情報、タイミングブロック434A、434Bによって示されるタイミング適格性情報、及び、ページテーブル436A、436Bによって示されるアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。いくつかの実施形態では、アービタ438A、438Bは、トラフィックスロットリング回路432A、432Bからの信号に基づいて、選択されたコマンドが解放されるのを許可されるかどうかを決定する。
【0032】
各トラフィックスロットリング回路432A、432Bは、それぞれのアービタ438A、438Bに双方向に接続され、他のメモリコントローラ内にあり得る1つ以上の他のトラフィックスロットリング回路に双方向に接続される。図示されるように、トラフィックスロットリング回路432A、432Bは、列アドレスストローブ(CAS)コマンドがメモリチャネルに送信されたときを互いに示すためにCASSENTとラベル付けされた信号を提供するように、互いに双方向に接続される。CASSENT信号は、
図5~
図7に関して以下で更に説明するように、スロットリングプロセスにおいて使用される。各トラフィックスロットリング回路は、第1の所定の期間にわたってそのそれぞれのアービタ438A、438B及び1つ以上の追加のアービタによって選択された読取りコマンド及び書込みコマンドの数を測定するための窓監視回路448A、448Bを含む。概して、以下で更に説明するように、各トラフィックスロットリング回路432A、432Bは、読取りコマンド及び書込みコマンドに関連する低アクティビティ状態に応じて、第2の所定の期間中にアービタ438A、438Bによって発行される読取りコマンド及び書込みコマンドの数を制限するように動作する。各トラフィックスロットリング回路432A、432Bは、アイドル状態を示すために「IDLE」信号を送信することもでき、CAS信号がディスパッチされていない指定された長さの期間が、送信トラフィックスロットリング回路のアービタにおいて到達されている。このIDLE信号に応じて、現在スロットリングモードにあるトラフィックスロットリング回路432A、432Bは、より多くのCASコマンドが送信されるのを可能にするために、それ自体のスロットリング率を調整する。
【0033】
各エラー訂正コード(ECC)生成ブロック444A、444Bは、メモリに送信される書込みデータのECCを判定する。インターフェース412から受信した書込みメモリアクセス要求に応じて、ECC生成ブロック444A、444Bは、書込みデータに従ってECCを計算する。データバッファ446A、446Bは、受信したメモリアクセス要求に関する書込みデータ及びECCを記憶する。データバッファ446A、446Bは、それぞれのアービタ438A、438Bがメモリチャネルへのディスパッチのために対応する書込みアクセスを選択すると、組み合わされた書込みデータ/ECCをそれぞれのメモリインターフェースキュー414A、414Bに出力する。
【0034】
図5は、いくつかの実施形態による、メモリコントローラでトラフィックをスロットリングするためのプロセスのフロー
図500である。このプロセスは、
図3のメモリシステム、
図4のメモリコントローラとともに、あるいは、複数のメモリチャネル又はサブチャネルを使用し、
図3、
図4又は
図6に示すようなトラフィックスロットリング回路を含む他の適切なシステムとともに使用するのに適している。
【0035】
プロセスはブロック502で始まり、トラフィックスロットリング回路は、メモリへのディスパッチのために選ばれたいくつかのメモリアクセスコマンド(具体的には、読取り及び書込み)についていくつかのアービタ又はサブチャネルアービタを監視する。ブロック504において、そのような監視中に、トラフィックスロットリング回路は、指定された前の時間窓にわたるデータコマンドの低アクティビティ状態を検出する。時間窓は、メモリクロックの設定可能なクロックサイクル数、例えば64サイクルとして測定される。監視は、単一のメモリコントローラの2つのサブチャネルについて行われてもよいし、又は、例えば、
図3に示されるようにリンクされたトラフィックスロットリング回路を有する複数のメモリコントローラにわたって行われてもよい。低アクティビティ状態を検出することは、第1の期間中にメモリに対して読取りコマンド又は書込みコマンドが発行されないこと、あるいは、第1の期間中に、指定された閾値未満のいくつかのコマンドが発行されるのを検出することを含み得る。
【0036】
低アクティビティ状態の検出に応じて、ブロック506におけるプロセスは、第2の所定の期間中にアービタによって発行される読取りコマンド及び書込みコマンドの数を制限する。第2の期間も、メモリクロックサイクルの数、例えば32として構成可能である。読取りコマンド及び書込みコマンドは、監視する場合に異なる重みが割り当てられ得ることに留意されたい。この実施形態では、コマンドの数を制限することは、アービタにおいて又はアービタのためのメモリインターフェースキューにおいて、読取りコマンド及び書込みコマンド(具体的には、CASコマンド)が発行されるのを阻止することにより時間窓中に課されるランプアップ制限を設定することによって、達成される。
【0037】
ブロック508において、メモリコントローラは、次いで、低アクティビティ状態を脱して、メモリコマンドをディスパッチし始める。例えば、これは、メモリコントローラがアイドル状態を脱するか、又は、単に、メモリコントローラへのコマンドトラフィックがある時間期間にわたって途絶え、その後にトラフィックが発生するためであり得る。ブロック510に示されるように、各アービタにおけるスロットル回路は、アービタがトラフィックを利用可能な帯域幅の100%まで直ちに増加させないということを保証するために、ランプアップ制限を課す。ランプアップ制限は、第2の窓又は指定された時間期間にわたって課され、プロセスに関与する各アービタにおいて課される。窓モニタ回路(例えば、
図4の448A、448B、
図6の602)が、現在の窓又は時間期間についてランプアップ制限に達したと判定すると、各アービタにおけるトラフィックスロットリング回路は、そのそれぞれのアービタのトラフィックをスロットリングする。例えば、プロセスが
図4のメモリコントローラ410とともに使用される場合、2つのサブチャネルアービタは、集合的にランプアップ制限を有する。別の一例として、プロセスが、
図3のメモリコントローラのグループに対して有効化された象限レベルのスロットリングとともに使用される場合に、3つのメモリコントローラ310、320、330の全てが集合的にランプアップ制限を有する。
【0038】
ブロック512において、スロットル回路は、第2の指定された期間の後、各アービタにおけるランプアップ制限を増加させる。次いで、ブロック510及び512は、限界が利用可能な帯域幅の100%に達するまで繰り返される。
【0039】
サブチャネルスロットリングの場合、プロセスは、メモリコントローラ内のレジスタに設定された構成設定を使用して構成可能である。サブチャネルスロットリングを可能にするために、レジスタ設定が提供される。レジスタ設定は、スロットル条件が満たされた場合にプロセスが両方のサブチャネルにCASを同時に送信させないクロックサイクルの数を指定するために提供され、監視される時間窓のサイズを指定する。サブチャネル間のスロットリングを開始する前に両方のチャネルがアイドル状態であるクロックの最大数を指定するために、別のレジスタ設定が提供される。別のレジスタ設定は、監視される各時間窓に対する帯域幅増加制限を提供し、例えば、総帯域幅のパーセンテージとして、スロットリング中の各時間窓に対する「ランプレート(ramp rate)」を設定する。
【0040】
概して、ランプアップ制限は、第2の所定の期間にわたる読取りコマンド及び書込みコマンドの許容可能な増加を設定し、プログラム可能制御レジスタに保持された第1の値に基づいている。第1の期間の長さ及び第2の期間の長さは、クロックサイクルの数を示すプログラマブル制御レジスタに保持された第2の値に基づくことが好ましい。
【0041】
図6は、いくつかの実施形態による、トラフィックスロットリング回路600のブロック図である。トラフィックスロットリング回路600は、
図3のメモリシステム、
図4のメモリコントローラ、又は、複数のメモリチャネル若しくはサブチャネルを使用する他の適切なシステムにおいて使用するのに適している。
【0042】
この例におけるトラフィックスロットリング回路600は、「UMC0」と指定されたメモリコントローラ内で具現化されるが、この「UMC0」というメモリコントローラは、他の2つの「UMC1」及び「UMC2」を含むメモリコントローラのグループ内に存在する。トラフィックスロットリング回路600は、「CASSENT UMC1」とラベル付けされた第1の入力と、「CASSENT UMC2」とラベル付けされた第2の入力と、「CASSENT UMC0」とラベル付けされた出力と、を有し、窓監視回路602と、同期カウンタ604と、ランプカウンタ606と、スロットリングプロセスを実施するスロットリングロジックと、を含む。また、トラフィックスロットリング回路600は、同期カウンタ604を他のメモリコントローラの同期カウンタと調整するための同期入力(図示せず)を含んでもよい。
【0043】
CASSENT UMC0出力は、列アドレスストローブ(CAS)がUMC0によってディスパッチされたことを示すために使用され、例えば、
図3に示すように、UMC1及びUMC2のトラフィックスロットリング回路に供給される。CASSENT UMC1及びCASSENT UMC2は、UMC1及びUMC2から同様の信号を受信する。窓監視回路602は、第1の所定の期間にわたってUMC0のアービタ並びにUMC1及びUMC2の追加のアービタによって取り上げられた読取りコマンド及び書込みコマンドの数を測定する。この実施形態では、測定は、第1の期間中に、UMC0においてディスパッチされたCASコマンドと、UMC1及びUMC2から受信されたCASSENTインジケータと、をカウントすることによって実行される。
【0044】
同期カウンタ604は、概して、複数のメモリコントローラ間で調整することによってランプアップ制限を課す「トグル」回路として動作する。この実施形態では、同期カウンタ604は、メモリコントローラの各コマンドサイクル(コマンドサイクル当たり8クロックサイクル)で0、1、2のカウントを循環し、以下で更に説明するように、メモリコントローラUMC0、UMC1、UMC2のうち何れが、特定の条件下で各コマンドサイクルにおいて読取りコマンド及び書込みコマンドを送信するのを許可されているかを直接示す。同期カウンタは、同期信号を受信して、UMC1及びUMC2における同期カウンタと同期されるのを保証することができる。
【0045】
ランプカウンタ606は、この例においてランプアップ限界を追跡するために使用される。ランプカウンタ606は、UMC1又はUMC2から受信したCASSENT信号の立ち上がりエッジによって示されるように、UMC1又はUMC2の一方がCASコマンドを送信した場合に開始される。この実施形態では、ランプカウンタ606は、指定された値からカウントダウンし、
図7に関して更に説明するように、UMC0におけるCASコマンドの送信を遅延させるために2つの異なるモードで使用される。
【0046】
いくつかの実施形態では、このカウンタ及びシグナリングの構成が使用されるが、他の実施形態は、もちろん、様々なカウンタ及びタイマ構成を使用して同様の機能を達成することができる。
【0047】
図7は、いくつかの実施形態による、トラフィックをスロットリングするための別のプロセスのフロー
図700である。プロセスは、
図3のメモリシステム及び
図6のトラフィックスロットリング回路とともに使用するのに適しており、概して、メモリコントローラにおいて低アクティビティ状態を脱した後にランプアップ制限を課す(例えば、
図5のブロック510)、1つの例示的な方法を提供する。プロセスは、メモリコントローラのグループ又は象限内の各メモリコントローラにおいて実行される。プロセスステップが順番に示されているが、この順番は限定的なものではなく、ステップは、概して、トラフィックスロットリング回路600内のデジタル論理によって並列に実行される。
【0048】
プロセスはブロック702で始まり、ここで、象限レベルのスロットリングがイネーブルされているか否かを判定し、これは、この実装では構成レジスタ内のビットによって判定される。象限レベルのスロットリングは、
図3のメモリコントローラ310、320、330等の複数のメモリコントローラ間で、アイドル状態からのランプアップを調整する1つの方法を提供する。
【0049】
象限レベルスロットリングが使用される場合、プロセスブロック704は、2つのメモリコントローラ(UMC)のCASSENT信号がアサートされ、ランプカウンタが非0である場合、アービタによって選択されたCASコマンドとしてブロックする。上述したように、この実装におけるランプカウンタ606は、0までカウントダウンして、スロットリングコマンドのための遅延期間を提供する。
【0050】
ブロック706において、別のメモリコントローラから1つのCASSENT信号のみがアサートされる場合、プロセスは、同期カウンタ604が現在のメモリコントローラを示す場合に、CASが現在のメモリコントローラから送信されるのを可能にする。
【0051】
象限レベルのスロットリングがイネーブルされていない場合、ブロック708~712のプロセスが使用される。ブロック708において、プロセスは、グループ内の任意の他のメモリコントローラがCASSENT信号をアサートし、ランプカウンタ606が非0である場合に、現在のメモリコントローラから送信されているCASコマンドをブロックする。ブロック710において、ランプカウンタ606が0に一旦達すると、同期カウンタ604が現在のメモリコントローラを示す場合の、CASが現在のメモリコントローラから送信されることが許可される。ブロック712において、プロセスは、2つのCASSENT信号が他のメモリコントローラから同時にアサートされる場合、スロットリングを終了し、現在のメモリコントローラの通常動作を再開する。
【0052】
このプロセスは、同期カウンタ及びランプカウンタを使用するが、他のプロセスは、もちろん、アービタによって発行される読取りコマンド及び書込みコマンドの数を制限するために他の方式を使用することができる。
【0053】
レジスタ設定は、象限レベルのスロットリングを構成するために提供される。象限レベルのスロットリングを可能にするために、レジスタ設定が提供される。レジスタ設定は、スロットリングを必要とするアイドル状態の検出を構成するために提供され、アクティブ化されているアイドル状態を考慮するための非アクティブのクロックサイクルの数を含む。ランプ率設定は、象限レベルスロットリング中に各々監視された窓期間に対する最大増加を提供する。スロットル長設定は、時間窓の間にランプレートに達した場合に次のCASを遅延させるためのクロックサイクル数を提供する。
【0054】
図3のメモリシステム、
図2のデュアルチャネルメモリコントローラ及び
図6のトラフィックスロットリング回路、又は、それらの任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(RTL)記述であり得る。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造してもよい。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィック・データ・システム(GDS)IIデータであってもよい。
【0055】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、デュアルチャネルメモリコントローラが例として使用されているが、本明細書の技術は、データファブリック及びホストデータ処理システムに透過的な方法でそれらの容量を組み合わせるために、3つ以上のメモリチャネルに適用されてもよい。例えば、3つ又は4つのメモリチャネルは、各チャネルに対して個別のコマンドキュー及びメモリチャネル制御回路を提供する一方で、単一のインターフェースと、アドレスデコーダと、個々のメモリチャネルから独立した要求クレジットをデータファブリックに発行するクレジット制御回路と、を提供することによって、本明細書の技術を使用して制御され得る。更に、デュアルチャネルメモリコントローラ210の内部アーキテクチャは、異なる実施形態では変化し得る。デュアルチャネルメモリコントローラ210は、高帯域幅メモリ(HBM)、RAMbus DRAM(RDRAM)等のように、DDRx以外の他のタイプのメモリとインターフェースすることができる。図示した実施形態は、個別のDIMM又はSIMMに対応するメモリの各ランクを示したが、他の実施形態では、各モジュールは、複数のランクをサポートすることができる。更に他の実施形態は、ホストマザーボードに取り付けられたDRAM等のように、特定のモジュールに含まれていない他のタイプのDRAMモジュール又はDRAMを含むことができる。したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。
【要約】
アービタは、メモリにディスパッチするためのコマンドをコマンドキューから取り出すように動作可能である。アービタは、1つ以上の追加のアービタと協調して過剰な電力使用量の増加を緩和するためのトラフィックスロットル回路を含む。トラフィックスロットル回路は、監視回路及びスロットル回路を含む。監視回路は、第1の所定の期間にわたって、アービタ及び1つ以上の追加のアービタによって選択された読取りコマンド及び書込みコマンドの数を測定する。スロットル回路は、低アクティビティ状態に応じて、第2の所定の期間中にアービタによって発行される読取り及び書込みコマンドの数を制限する。
【選択図】
図3