(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】ハイブリッドDRAM/永続メモリチャネルアービトレーションを有するメモリコントローラ
(51)【国際特許分類】
G06F 12/00 20060101AFI20240723BHJP
G06F 12/06 20060101ALI20240723BHJP
【FI】
G06F12/00 571A
G06F12/00 597U
G06F12/06 515J
G06F12/06 515K
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023577535
(86)(22)【出願日】2022-05-26
(85)【翻訳文提出日】2024-01-22
(86)【国際出願番号】 US2022031102
(87)【国際公開番号】W WO2022271404
(87)【国際公開日】2022-12-29
(32)【優先日】2021-06-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ガンハオ シェン
(72)【発明者】
【氏名】ラビンドラ ナス バルガバ
(72)【発明者】
【氏名】ジェームズ アール. マグロ
(72)【発明者】
【氏名】ケダーナシュ バラクリシュナン
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CD07
5B160MM02
5B160MM03
(57)【要約】
メモリコントローラは、メモリチャネルに対するメモリアクセスコマンドを受信するための入力と、所定の数のメモリアクセスコマンドを保持するためのいくつかのエントリと、を有するコマンドキューと、永続メモリ及びメモリチャネルに結合されたDRAMメモリのうち何れかにディスパッチするためにコマンドキューからメモリコマンドを選択するアービタと、を含む。アービタは、DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するためにコマンドキューに結合された第1のティアのサブアービタ回路と、候補コマンドを受信し、候補コマンドの中から少なくとも1つのコマンドを選択するために第1のティアのサブアービタ回路に結合された第2のティアのサブアービタ回路と、を含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
メモリコントローラであって、
メモリチャネルに対するメモリアクセスコマンドを受信するための入力と、所定の数のメモリアクセスコマンドを保持するためのいくつかのエントリと、を有するコマンドキューと、
永続メモリ及び前記メモリチャネルに結合されたDRAMメモリのうち何れかにディスパッチするために前記コマンドキューからメモリコマンドを選択するためのアービタと、を備え、
前記アービタは、
DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するために前記コマンドキューに結合された第1のティアのサブアービタ回路と、
前記候補コマンドを受信し、前記候補コマンドの中から少なくとも1つのコマンドを選択するために前記第1のティアのサブアービタ回路に結合された第2のティアのサブアービタ回路と、を備える、
メモリコントローラ。
【請求項2】
前記第1のティアのサブアービタ回路は、少なくとも2つの第1のティアのサブアービタを含み、
各第1のティアのサブアービタは、候補DRAMコマンド及び永続メモリコマンドの中から選択し、各第1のティアのサブアービタは、選択された候補コマンドを示す出力を有する、
請求項1のメモリコントローラ。
【請求項3】
前記第1のティアのサブアービタは、読み取り列アドレスストローブ(CAS)及びSREADコマンドの中から選択する読み取り列サブアービタと、書き込みCAS及びX-WRITEコマンドの中から選択する書き込み列サブアービタと、ページミスサブアービタと、X-READサブアービタと、を含み、各第1のティアのサブアービタは、それぞれの候補コマンドを選択し、
前記第2のティアのサブアービタ回路は、前記読み取り列サブアービタ及び前記書き込み列サブアービタから候補コマンドを選択する第1のサブアービタと、前記ページミスサブアービタ及び前記X読み取りサブアービタから候補コマンドを選択する第2のサブアービタと、を含み、
前記アービタは、前記第1のサブアービタ及び前記第2のサブアービタの前記候補コマンドから選択する最終アービタを含む、
請求項2のメモリコントローラ。
【請求項4】
ページ競合候補コマンドを選択するために前記コマンドキューに結合されたページ競合サブアービタを備え、前記最終アービタは、前記ページ競合候補コマンドから選択する、
請求項3のメモリコントローラ。
【請求項5】
前記読み取り列サブアービタは、前記永続メモリに対するSENDコマンドから選択する、
請求項3のメモリコントローラ。
【請求項6】
永続メモリコマンドキューを備え、
前記読み取り列サブアービタは、前記永続メモリコマンドキューからSENDコマンドを選択する、
請求項5のメモリコントローラ。
【請求項7】
前記永続メモリコマンドキューは、不揮発性デュアルインラインメモリモジュール(NVDIMM)制御回路から送信された読み取りレディ応答に基づいて、前記メモリコントローラによってSENDコマンドが提供される、
請求項6のメモリコントローラ。
【請求項8】
方法であって、
DRAMコマンド及び永続メモリコマンドを含む複数のメモリアクセスコマンドをメモリコントローラで受信することと、
前記メモリアクセスコマンドをコマンドキューに配置して、DRAMメモリ及び永続メモリへのディスパッチを待つことと、
前記コマンドキューから複数の候補コマンドを選択することであって、前記候補コマンドのうち少なくとも2つは、前記DRAMコマンド及び永続メモリコマンドの中から選択される、ことと、
メモリチャネル上で送信するために、前記複数の候補コマンドの中から少なくとも1つのコマンドを選択することと、を含む、
方法。
【請求項9】
前記複数の候補コマンドを選択することは、少なくとも2つの第1のティアのサブアービタを用いて実行され、各第1のティアのサブアービタは、候補DRAMコマンド及び永続メモリコマンドの中から選択し、各第1のティアのサブアービタは、選択された候補コマンドを示す出力を有する、
請求項8の方法。
【請求項10】
前記複数の候補コマンドを選択することは、読み取り列アドレスストローブ(CAS)コマンド及びSREADコマンドの中から第1の候補を選択することと、書き込みCASコマンド及びX-WRITEコマンドの中から第2の候補を選択することと、ページミスコマンドの中から第3の候補を選択することと、X-READコマンドの中から第4の候補を選択することと、を含む、
請求項8の方法。
【請求項11】
前記第1の候補及び前記第2の候補の中から第2のティアの候補コマンドを選択することと、前記第3の候補及び前記第4の候補の中から別の第2のティアの候補を選択することと、を含む、
請求項10の方法。
【請求項12】
メモリチャネル上で送信するために、前記複数の候補コマンドの中から少なくとも1つのコマンドを選択することは、前記第2のティアの候補の中から最終候補を選択することを含む、
請求項11の方法。
【請求項13】
前記複数の候補コマンドを選択することは、永続メモリキューの利用可能なSENDコマンドから選択することを含む、
請求項12の方法。
【請求項14】
データ処理システムであって、
DRAMメモリ及び永続メモリに結合されたメモリチャネルと、
前記メモリチャネルに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
前記メモリチャネルに対するメモリアクセスコマンドを受信するための入力と、所定の数のメモリアクセスコマンドを保持するためのいくつかのエントリと、を有するコマンドキューと、
前記永続メモリ及び前記DRAMチャネルのうち何れかに送信するために前記コマンドキューからメモリコマンドを選択するためのアービタと、を備え、
前記アービタは、
DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するために前記コマンドキューに結合された第1のティアのサブアービタ回路と、
前記候補コマンドを受信し、前記候補コマンドの中から少なくとも1つのコマンドを選択するために前記第1のティアのサブアービタ回路に結合された第2のティアのサブアービタ回路と、を備える、
データ処理システム。
【請求項15】
前記第1のティアのサブアービタ回路は、少なくとも2つの第1のティアのサブアービタを含み、
各第1のティアのサブアービタは、候補DRAMコマンド及び永続メモリコマンドの中から選択し、各第1のティアのサブアービタは、選択された候補コマンドを示す出力を有する、
請求項14のデータ処理システム。
【請求項16】
前記第1のティアのサブアービタは、読み取り列アドレスストローブ(CAS)及びSREADコマンドの中から選択する読み取り列サブアービタと、書き込みCAS及びX-WRITEコマンドの中から選択する書き込み列サブアービタと、ページミスサブアービタと、X-READサブアービタと、を含み、各第1のティアのサブアービタは、それぞれの候補コマンドを選択し、
前記第2のティアのサブアービタ回路は、前記読み取り列サブアービタ及び前記書き込み列サブアービタから候補コマンドを選択する第1のサブアービタと、前記ページミスサブアービタ及び前記X読み取りサブアービタから候補コマンドを選択する第2のサブアービタと、を含み、
前記アービタは、前記第1のサブアービタ及び前記第2のサブアービタの前記候補コマンドから選択する最終アービタを含む、
請求項15のデータ処理システム。
【請求項17】
ページ競合候補コマンドを選択するために前記コマンドキューに結合されたページ競合サブアービタを備え、前記最終アービタは、前記ページ競合候補コマンドから選択する、
請求項16のデータ処理システム。
【請求項18】
前記読み取り列サブアービタは、前記永続メモリに対するSENDコマンドから選択する、
請求項16のデータ処理システム。
【請求項19】
永続メモリコマンドキューを備え、
前記読み取り列サブアービタは、前記永続メモリコマンドキューからSENDコマンドが提供される、
請求項18のデータ処理システム。
【請求項20】
前記永続メモリコマンドキューは、不揮発性デュアルインラインメモリモジュール(NVDIMM)制御回路から送信された読み取りレディ応答に基づいて、前記メモリコントローラによってSENDコマンドが提供される、
請求項19のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、典型的には、メインメモリ用の安価で高密度のダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)チップを使用する。今日販売されている殆どのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって広められた様々なダブルデータ速度(double data rate、DDR)DRAM規格と適合する。DDRメモリコントローラは、公開されたDDR規格に従って、様々なメモリアクセスエージェントとDDR DRAMとの間のインターフェースを管理するために使用される。
【0002】
永続ストレージを有する不揮発性デュアルインラインメモリモジュール(「non-volatile dual-inline memory module with persistent storage、NVDIMM-P」)は、標準的なDDR DIMMの代わりに使用可能なストレージクラスメモリであるが、頻繁に要求されるデータへのより高速なアクセスのために揮発性メモリに加えて永続メモリ(persistent memory)を含む。しかしながら、これらのメモリは、非決定論的アクセスレイテンシを有し、不揮発性メモリへのアクセスを一時的に遅延させ得るオンボードメディア管理アクティビティを有し、したがって、これらのメモリは、NVDIMM-Pからのデータの利用可能性についてホストコントローラに通知するためにハンドシェイクプロトコル(handshake protocol)を必要とする。JEDECは、この非決定性の性能への影響を軽減し、アウトオブオーダトランザクションを可能にし、コマンドをスタックする能力を提供するためのトランザクションプロトコルを開発している。
【図面の簡単な説明】
【0003】
【
図1】先行技術で知られている加速処理ユニット(accelerated processing unit、APU)及びメモリシステムのブロック図である。
【
図2】いくつかの実施形態による、
図1と同様のAPUで使用するのに好適なメモリコントローラのブロック図である。
【
図3】いくつかの実施形態による、一対のメモリチャネル及びAPUのブロック図である。
【
図4】いくつかの実施形態による、
図2のメモリコントローラで使用するのに好適なメモリコントローラの一部のブロック図である。
【
図5】さらなる実施形態による、
図2のメモリコントローラ200で使用するのに好適なメモリコントローラの一部のブロック図である。
【
図6】いくつかの実施形態による、メモリアクセスコマンドを処理するプロセスのブロック図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当該技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0005】
メモリコントローラは、メモリチャネルに対するメモリアクセスコマンドを受信するための入力と、所定の数のメモリアクセスコマンドを保持するためのいくつかのエントリと、を含む。アービタは、永続メモリ及びメモリチャネルに結合された何れかのDRAMメモリにディスパッチするためにコマンドキューからメモリコマンドを選択する。アービタは、DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するためのコマンドキューに接続された第1のティアのサブアービタ回路と、候補コマンドを受信し、候補コマンドの中から少なくとも1つのコマンドを選択するための第1のティアのサブアービタ回路に接続された第2のティアのサブアービタ回路と、を含む。
【0006】
方法は、DRAMコマンド及び永続メモリコマンドを含む複数のメモリアクセスコマンドを受信することを含む。メモリアクセスコマンドは、コマンドキューに配置され、DRAMメモリ及び永続メモリへのディスパッチを待つ。複数の候補コマンドは、コマンドキューから選択され、候補コマンドのうち少なくとも2つは、DRAMコマンド及び永続メモリコマンドの中から選択される。少なくとも1つのコマンドは、第2のティア(tier)からメモリチャネル上で送信するために、候補コマンドの中から選択される。
【0007】
データ処理システムは、DRAMメモリ及び永続メモリに接続されたメモリチャネルを含む。メモリコントローラは、メモリチャネルに接続され、コマンドキュー及びアービタを含む。コマンドキューは、メモリチャネルに対するメモリアクセスコマンドを受信するための入力と、所定の数のメモリアクセスコマンドを保持するためのいくつかのエントリと、を有する。アービタは、永続メモリ及びDRAMチャネルのうち何れかへの送信のためにコマンドキューからメモリコマンドを選択する。アービタは、DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するためのコマンドキューに接続された第1のティアのサブアービタ回路と、候補コマンドを受信し、候補コマンドの中から少なくとも1つのコマンドを選択するための第1のティアのサブアービタ回路に接続された第2のティアのサブアービタ回路と、を含む。
【0008】
図1は、従来技術において知られている加速処理ユニット(APU)100及びメモリシステム130のブロック図である。APU100は、ホストデータ処理システムにおけるプロセッサとして使用するのに好適な集積回路であり、概して、中央処理ユニット(central processing unit、CPU)コア複合体110と、グラフィックスコア120と、ディスプレイエンジン122のセットと、メモリ管理ハブ140と、データファブリック125と、周辺コントローラ160のセットと、周辺バスコントローラ170のセットと、システム管理ユニット(system management unit、SMU)180と、を含む。
【0009】
CPUコア複合体110は、CPUコア112及びCPUコア114を含む。この例では、CPUコア複合体110は2つのCPUコアを含むが、他の実施形態では、CPUコア複合体110は任意の数のCPUコアを含むことができる。CPUコア112及び114の各々は、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)及びデータファブリック125に双方向に接続されており、データファブリック125にメモリアクセス要求を提供することができる。CPUコア112及び114の各々は、単体のコアであってもよいし、キャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。
【0010】
グラフィックスコア120は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行可能な高性能グラフィックス処理ユニット(graphics processing unit、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との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するために基本入出力システム(basic input/output system、BIOS)によって規定されたシステムメモリマップ、及び、各仮想接続のためのバッファも含む。
【0013】
周辺コントローラ160は、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ162及びシリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ164を含み、これらの各々は、システムハブ166及びSMNバスに対して双方向で接続される。これらの2つのコントローラは、APU100で使用され得る周辺コントローラの単なる例である。
【0014】
周辺バスコントローラ170は、システムコントローラ又は「サウスブリッジ」(Southbridge、SB)172と、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)コントローラ174と、を含み、これらの各々は、入出力(input/output、I/O)ハブ176及びSMNバスに対して双方向で接続される。また、I/Oハブ176は、システムハブ166及びデータファブリック125に対して双方向で接続される。したがって、例えば、CPUコアは、データファブリック125がI/Oハブ176を介してルーティングするアクセスにより、USBコントローラ162、SATAインターフェースコントローラ164、SB172、又は、PCIeコントローラ174内のレジスタをプログラムすることができる。APU100のためのソフトウェア及びファームウェアは、リードオンリーメモリ(read-only memory、ROM)、フラッシュ電気的消去可能プログラマブルROM(electrically erasable programmable ROM、EEPROM)等の様々な不揮発性メモリタイプの何れかであり得るシステムデータドライブ又はシステムBIOSメモリ(図示せず)に記憶される。典型的には、BIOSメモリは、PCIeバスを介してアクセスされ、システムデータドライブは、SATAインターフェースを介してアクセスされる。
【0015】
SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素の各々にクロック信号を提供するために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を判定するためにCPUコア112、114及びグラフィックスコア120から測定された電力消費値を受信することができる。
【0016】
メモリ管理ハブ140及びその関連する物理インターフェース(physical interface、PHY)151、152は、この実施形態ではAPU100と統合される。メモリ管理ハブ140は、メモリチャネル141、142とパワーエンジン149とを含む。メモリチャネル141は、ホストインターフェース145、メモリチャネルコントローラ143及び物理インターフェース147を含む。ホストインターフェース145は、メモリチャネルコントローラ143を、シリアルプレゼンス検出リンク(serial presence detect、SDP)を介してデータファブリック125に対して双方向で接続する。物理インターフェース147は、メモリチャネルコントローラ143をPHY151に対して双方向で接続し、DDR PHYインターフェース(DDR PHY Interface、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バージョン4(DDR version four、DDR4)、低電力DDR4(low power DDR4、LPDDR4)、グラフィックスDDRバージョン5(graphics DDR version five、gDDR5)及び高帯域幅メモリ(high bandwidth memory、HBM)等の最新技術DDRメモリに接続することができ、将来のメモリ技術に適合させることができる。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを提供すると共に、内蔵熱監視も提供する。
【0018】
メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、DDRxバス132に接続されるデュアルインラインメモリモジュール(dual inline memory module、DIMM)のセットを含み、これには、本例では個別のランクに対応する代表的なDIMM134、136、138が含まれる。同様に、メモリチャネル133は、代表的なDIMM135、137、139を含む、DDRxバス129に接続されるDIMMのセットを含む。
【0019】
APU100は、ホストデータ処理システムの中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを提供する。これらのインターフェースは、2つのダブルデータレート(double data rate、DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶デバイスへのインターフェースを含む。
【0020】
また、APU100は、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は、熱監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112、114及び/又はグラフィックスコア120の周波数及び電圧を低減することができる。APU100が高温になりすぎる場合、それを完全にシャットダウンすることができる。SMNバスを介してSMU180によって外部センサから熱イベントを受けることもでき、SMU180は、それに応じてクロック周波数及び/又は電源電圧を低減することができる。
【0021】
図2は、
図1のようなAPUで使用するのに好適なメモリコントローラ200のブロック図である。メモリコントローラ200は、概して、メモリチャネルコントローラ210及びパワーコントローラ250を含む。メモリチャネルコントローラ210は、概して、インターフェース212と、メモリインターフェースキュー214と、コマンドキュー220と、アドレス生成器222と、コンテントアドレッサブルメモリ(content addressable memory、CAM)224と、リプレイ(再生)キュー230を含むリプレイ(再生)制御ロジック231と、リフレッシュロジックブロック232と、タイミングブロック234と、ページテーブル236と、アービタ238と、エラー訂正コード(error correction code、ECC)チェック回路242と、ECC生成ブロック244と、データバッファ246と、不揮発性(non-volatile、NV)バッファ247と、NVキュー248と、を含む。
【0022】
インターフェース212は、外部バスを介したデータファブリック125に対する第1の双方向接続を有し、出力を有する。メモリコントローラ200において、この外部バスは、「AXI4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インターフェースバージョン4と適合するが、他の実施形態では他のタイプのインターフェースであり得る。インターフェース212は、メモリアクセス要求を、FCLK(又はMEMCLK)ドメインとして知られている第1のクロックドメインから、UCLKドメインとして知られているメモリコントローラ200の内部の第2のクロックドメインに変換する。同様に、メモリインターフェースキュー214は、UCLKドメインからDFIインターフェースと関連付けられるDFICLKドメインへのメモリアクセスを与える。
【0023】
アドレス生成器222は、AXI4バスを介してデータファブリック125から受信されるメモリアクセス要求のアドレスをデコードする。メモリアクセス要求は、正規化フォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アドレス生成器222は、正規化されたアドレスを、メモリシステム130内の実際のメモリデバイスをアドレス指定するために及び関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システムBIOSは、メモリシステム130内のメモリデバイスに問い合わせてそれらのサイズ及び構成を判定し、アドレス生成器222と関連付けられた構成レジスタのセットをプログラムする。アドレス生成器222は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。アドレス生成器222は、NVDIMM-Pメモリを含むメモリのアドレス範囲をデコードし、メモリアクセス要求がNVDIMM-Pに対する要求であるか否かを示すデコードされた信号をコマンドキュー220に記憶する。次いで、アービタ238は、他の要求に対して適切な優先順位でNVDIMM-P要求に優先順位を付けることができる。コマンドキュー220は、CPUコア112、114及びグラフィックスコア120等のAPU100内のメモリアクセスエージェントから受信されるメモリアクセス要求のキューである。コマンドキュー220は、アドレス生成器222によってデコードされたアドレスフィールド、並びに、アービタ238がアクセスタイプ及びサービス品質(quality of service、QoS)識別子を含むメモリアクセスを効率的に選択することを可能にする他のアドレス情報を記憶する。CAM224は、ライトアフターライト(write after write、WAW)及びリードアフターライト(read after write、RAW)順序規則等の順序規則を実施するための情報を含む。
【0024】
エラー訂正コード(ECC)生成ブロック244は、NVDIMM-Pに送信される書き込みデータのECCを判定する。ECCチェック回路242は、受信されたECCを着信ECCに対してチェックする。
【0025】
リプレイキュー230は、アドレス及びコマンドパリティ応答等の応答を待っているアービタ238によって選択されたメモリアクセスを記憶するための一時的なキューである。リプレイ制御ロジック231は、ECCチェック回路242にアクセスして、戻されたECCが正しいか又はエラーを示すかを判定する。リプレイ制御ロジック231は、これらのサイクルのうち何れかのパリティ又はECCエラーの場合にアクセスがリプレイされるリプレイシーケンスを開始して制御する。リプレイされたコマンドは、メモリインターフェースキュー214に配置される。
【0026】
リフレッシュロジック232は、メモリアクセスエージェントから受信した通常の読み取り及び書き込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュロジックは、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック232は、DRAMチップ内のメモリセルの蓄積キャパシタからの電荷の漏れによって引き起こされるデータエラーを防止するために、定期的にリフレッシュコマンドを生成する。加えて、リフレッシュロジック232は、システム内の熱変化に起因するオンダイ終端抵抗の不一致を防止するためにZQを定期的に較正する。
【0027】
アービタ238は、コマンドキュー220に双方向に接続されており、メモリチャネルコントローラ210の中心である。アービタ238は、メモリバスの使用を改善するためのアクセスのインテリジェントスケジューリングによって効率を改善する。アービタ238は、タイミングブロック234を使用して、コマンドキュー220内の特定のアクセスがDRAMタイミングパラメータに基づく発行に適格であるかどうかを決定することによって適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られるアクティブ化コマンド間の最小指定時間を有する。タイミングブロック234は、JEDEC仕様で定められたこのタイミングパラメータ及び他のタイミングパラメータに基づいて適格性を判定するカウンタのセットを維持し、リプレイキュー230に対して双方向で接続されている。ページテーブル236は、アービタ238のためのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、リプレイキュー230に対して双方向で接続されている。
【0028】
NVバッファ247は、再生シーケンスで使用するため及びNV読み取り応答を管理するために、NV読み取りコマンドをNVキュー248に記憶する。以下で更に説明されるように、NVバッファ247は、RD_RDYコマンド及びSENDコマンドを処理するためにメモリインターフェースキュー214に双方向に接続されており、1つ以上のSENDコマンドが利用可能である場合に入力としてSENDコマンドを提供するためにアービタ238に接続されている。
【0029】
インターフェース212から受信した書き込みメモリアクセス要求に応じて、ECC生成ブロック244は、書き込みデータに従ってECCを計算する。データバッファ246は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。データバッファは、アービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをメモリインターフェースキュー214に出力する。
【0030】
パワー(電力)コントローラ250は、概して、アドバンスト拡張可能インターフェース、バージョン1(AXI)へのインターフェース252、アドバンスト周辺バス(advanced peripheral bus、APB)インターフェース254、及び、パワーエンジン260を含む。インターフェース252は、
図2に別々に示される「EVENT_n」とラベル付けされたイベント信号を受信するための入力と、出力と、を含む、SMNへの第1の双方向接続を有する。APBインターフェース254は、インターフェース252の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。パワーエンジン260は、インターフェース252の出力に接続された入力と、メモリインターフェースキュー214の入力に接続された出力と、を有する。パワーエンジン260は、構成レジスタ262のセットと、マイクロコントローラ(microcontroller、μC)264と、セルフリフレッシュコントローラ(self refresh controller、SLFREF/PE)266と、信頼性のある読み取り/書き込みタイミングエンジン(read/write timing engine、RRW/TE)268と、を含む。構成レジスタ262は、AXIバスを介してプログラムされ、メモリコントローラ200内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ262は、
図2に詳細に示されないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ266は、リフレッシュロジック232によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読み取り/書き込みタイミングエンジン268は、DDRインターフェース最大読み取りレイテンシ(maximum read latency、MRL)トレーニング及びループバック試験のような目的のために、メモリ又はI/Oデバイスへ連続的なメモリアクセスストリームを提供する。
【0031】
メモリチャネルコントローラ210は、関連するメモリチャネルへのディスパッチのためのメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーション決定を行うために、アドレス生成器222は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループを含むプリデコードされた情報にデコードし、コマンドキュー220がプリデコードされた情報を記憶する。構成レジスタ262は、アドレス生成器222が受信したアドレス情報をどのようにデコードするかを判定するための構成情報を記憶する。アービタ238は、デコードされたアドレス情報、タイミングブロック234によって示されるタイミング適格性情報、及び、ページテーブル236によって示されるアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。例えば、アービタ238は、メモリページを変更するために必要なプリチャージコマンド及びアクティブ化コマンドのオーバーヘッドを回避するために、オープンページへのアクセスの優先度を実装し、あるバンクへのオーバーヘッドアクセスを別のバンクへの読み取り及び書き込みアクセスとインターリーブすることによって隠す。特に、通常動作中、アービタ238は、通常、ページを、これらのページが異なるページを選択する前にプリチャージされる必要があるまで、異なるバンクで開いたままにする。
【0032】
図3は、いくつかの実施形態による、データ処理システム300のブロック図である。データ処理システム300は、メモリシステム330及びAPU310を含む。APU310は、メモリシステム330とインターフェースするために異種メモリチャネルをサポートするメモリコントローラ200(
図2)のようなメモリコントローラを含む。通常のDDRxメモリチャネルに加えて、APU310は、バス342を介して接続されたRDIMM344、346、348のみを有する同種メモリチャネル340に加えて、通常の登録されたDIMM又はRDIMM334、336及びNVDIMM-P338の両方を有する異種メモリチャネル332上のNVDIMM-P338をサポートする。この実施形態では、異種メモリチャネル332は、NVDIMM-P及びRDIMMの両方に接続されるが、いくつかの実施形態では、異種メモリチャネルは、全てのNVDIMM-PタイプのDIMMとインターフェースする能力を有する。APU310上のメモリコントローラとNVDIMM-P338との間のトランザクションは、リンクECCによって保護される。リンクECCは、メモリチャネル332を介したメモリコントローラとNVDIMMとの間のデータ転送のためのデータ完全性を確実にする。
【0033】
この実施形態では、NVDIMM-PタイプのDIMMが説明されているが、他の実施形態は、異種メモリチャネルを介して他のタイプのストレージクラスメモリ(storage class memory、SCM)モジュールとインターフェースするために、本明細書の技術を用いる。本明細書で使用される場合、SCMは、システムメモリ空間においてアドレス指定可能な不揮発性メモリを有するメモリモジュールを示す。SCMモジュール内の不揮発性メモリは、RAMでバッファされ、及び/又は、SCMモジュール上のRAMとペアにされ得る。SCMメモリアドレスマップは、オペレーティングシステム(operating system、OS)の観点から、従来のDRAMポピュレーションと並んで現れる。OSは、典型的には、SCM定義のアドレス範囲が従来のメモリとは「異なる」タイプのメモリであることを認識している。この区別は、このメモリがより潜在的であり、永続的な品質を有し得ることをOSに通知することである。OSは、SCMメモリを直接アクセスメモリ又はファイルシステムアクセスメモリとしてマッピングすることができる。直接アクセスは、OSが物理アドレス指定可能メモリとしてSCMアドレス範囲にアクセスすることを意味する。ファイルシステムアクセスは、OSがファイルシステムの一部として永続メモリを管理し、ファイルベースのAPIを介してSCMへのアクセスを管理することを意味する。最終的に、要求は、より高いレベルのOSがアクセスをどのように管理するかに関係なく、SCMアドレス範囲内のメモリコントローラに到達する。
【0034】
図4は、いくつかの実施形態による、
図2のメモリコントローラ200で使用するのに好適なメモリコントローラの一部分400のブロック図である。図示された部分400は、コマンドキュー220、NVキュー248、アービタ238及びメモリインターフェースキュー214を含む。上述したように、コマンドキュー220は、メモリチャネルに対するメモリアクセス要求を受信し、所定数のメモリアクセス要求、例えば64個の要求を保持するためのいくつかのエントリを含む。
【0035】
アービタ238は、異種メモリチャネル332(
図3)等のメモリチャネルに接続されたNVDIMM338等の永続メモリ及びRDIMM334、336等のDRAMメモリのうち対応する何れかにディスパッチするために、コマンドキュー220及びNVキュー248からメモリ要求を選択するために提供される。アービタ238は、第1のティアのサブアービタ回路302と、第2のティアのサブアービタ回路304と、最終アービタ306と、を含む。
【0036】
第1のティアのサブアービタ回路302は、コマンドキュー220及びNVキュー248に接続されており、DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するための比較ロジックを含む。複数の候補コマンドは、第2のティアのサブアービタ回路304のそれぞれの入力に接続されている第1のティアのサブアービタ回路302の出力に提示される。いくつかの実施形態では、第1のティアのサブアービタ回路302は、少なくとも2つの第1のティアのサブアービタを含み、各第1のティアのサブアービタは、候補DRAMコマンド及び永続メモリコマンドの中から選択し、各第1のティアのサブアービタは、選択された候補コマンドを示す出力を有する。この実施形態では、コマンドキュー220は、メモリコントローラにおいて最初に受信されたDRAMコマンド及び永続メモリコマンドの両方を保持する。コマンドキュー220に保持される永続的メモリコマンドは、XREAD及びXWRITE等のバッファされた永続的メモリコマンド、PWRITE等の永続的メモリ書き込みコマンド、及び、SREAD等の投機的読み取りコマンドを含み、これらは、所望のデータがバッファされている場合には不揮発性メモリからの読み取り結果を直ちに返すが、所望のデータがバッファされておらず、代わりに永続的メモリから読み取られなければならない場合には、不揮発性読み取りサイクルに入り、利用可能な場合に結果を返す。メモリチャネルを介して送信される特定の不揮発性読み取りコマンドに対して、不揮発性DIMMは、典型的には、不揮発性DIMMにおける不揮発性メモリ内、不揮発性DIMMにおけるDRAM内、又は、メディアコントローラにおけるキャッシュ内に存在し得る要求されたデータを読み取る予測不可能なプロセスに起因して、非決定論的期間の後に応答する。非決定論的期間中、他のメモリアクセスコマンドは、典型的には、実行され、メモリインターフェースキューから除去される。不揮発性DIMMのメディアコントローラは、要求されたデータの読み取り処理を完了すると、レディ応答信号「RD_RDY」をメモリコントローラに送信する。
【0037】
NVバッファ247は、NVキュー248と、特定の不揮発性デュアルインラインメモリモジュール(non-volatile dual inline memory module、NVDIMM)又は他の永続メモリモジュールに固有の制御機能を実施するためのNVDIMM制御回路と、を含む。NVキュー248は、NVバッファ247内のNVDIMM制御回路によってXREADコマンドに対して生成されたXREADコマンドを保持する。他の不揮発性読み取りコマンドがRD_RDY/SENDプロセスを用いる場合、それらもNVキュー248に記憶され、実行を待つ。コマンドは、データがメモリコントローラに返送される準備ができていることを示す、不揮発性メモリからのRD_RDY信号を待って保持される。応答データが受信されると、関連付けられた保留中の不揮発性読み取りコマンドがNVキュー248から除去される。この実施形態では、NVDIMMプロセスの下で、個々のSENDコマンドは、データが送信されるまで特定の保留中の不揮発性読み取りコマンドと関連付けられず、したがって、NVキュー248は、保留中のSENDコマンドの数を追跡し、単一のSENDコマンドを第1のティアのサブアービタ回路302に提示することのみが必要とされる。
【0038】
いくつかの実施形態では、1つ以上の個別のコマンドキューが、XREAD及びXWRITEコマンド等の不揮発性メモリコマンドのために使用され得る。そのような実施形態では、個別のコマンドキューは、コマンドキュー220及びNVキュー248への図示された接続と並列に、第1のティアのサブアービタ回路302の入力に接続されたエントリを有する。この実施形態では、第1のティアのサブアービタ回路302は、候補として考慮するために保留中のSENDコマンドを受信するNVキュー248からの単一の入力を有する。
【0039】
第2のティアのサブアービタ回路304は、第1のティアのサブアービタ回路302によって選択された候補コマンドを受信するために、第1のティアのサブアービタ回路302に接続される。第2のティアのサブアービタ回路304は、概して、順序付けルールのセットを実装し、候補コマンドの中から少なくとも1つのコマンドを選択するための比較ロジックを含む。この実施形態では、第2のティアのサブアービタ回路304は、第2のティアのサブアービタ回路304のそれぞれの出力において最終アービタ306に提示される複数の第2のティアの候補コマンドを選択する。他の実施形態では、最終アービタが使用されず、代わりに第2のティアのサブアービタ回路304が最終コマンド選択を行う。
【0040】
最終アービタ306は、第2のティアのサブアービタ回路304に接続された複数の入力と、メモリインターフェースキュー214に接続された少なくとも1つの出力と、を有する。最終アービタ306は、メモリインターフェースキュー214へのディスパッチのための最終アービトレーション勝者として少なくとも1つのコマンドを選択するための比較ロジックを含む。また、最終アービタ306は、DRAMメモリに対するリフレッシュコマンドを挿入するような機能を実施するためのロジックを含む。タイミングブロック234、ページテーブル236及びリフレッシュロジック232(
図2)等のように、アービタ238のサブアービタに入力を提供するために様々な他の制御回路が含まれ得る。
【0041】
図5は、さらなる実施形態による、
図2のメモリコントローラ200で使用するのに好適なメモリコントローラの一部分500のブロック図である。部分500は、アービタ238と、アービタ238の動作と関連する制御回路560のセットと、を含む。この実施形態では、アービタ238は、第1のティアのサブアービタ530のセットと、第2のティアのサブアービタ540のセットと、最終アービタ550と、を含む、3つのティアのアービタである。この実施形態では、
図4の実施形態と同様に、コマンドキュー220は、DRAMコマンド及び永続メモリコマンドの両方を保持し、一方で、NVキュー(「NVQ」)564は、読み取り結果が準備完了であるという永続メモリからの信号を待っている永続メモリ読み取りのためのXREADコマンドを保持する。
【0042】
第1のティアのサブアービタ530は、読み取り列サブアービタ512(READ COL ARB)、書き込み列サブアービタ535(WRITE COL ARB)、ページミスサブアービタ532(PM ARB)、トランザクション読み取りサブアービタ537(XREAD ARB)、及び、ページ競合サブアービタ522(PC ARB)を含む。第2のティアのサブアービタ540は、列サブアービタ542(COL ARB)及び行サブアービタ544(ROW ARB)を含む。
【0043】
READ COL ARB512は、コマンドキュー220に接続された入力と、NVキュー564に接続された入力と、タイミングブロック234に接続された入力と、COL ARB542に接続された出力と、を含む。READ COL ARB512は、読み取りCASコマンド、SREADコマンド、及び、保留中のXREADコマンドのためのSENDコマンドを含む、特定の利用可能なDRAMコマンド及び永続メモリコマンドの中から選択する。この実施形態では、READ COL ARB512は、候補として考慮するためにSENDコマンドを受信するNVキュー564からの単一の入力を有する。XREADコマンドは、NVキュー564に保持されて実行を待ち、一方で、読み取りCASコマンド及びSREADコマンドは、コマンドキュー220に保持される。典型的には、SENDコマンドは、応答データが受信されるまで個々のXREADコマンドと関連付けられず、したがって、NVキュー564は、実行されていないRD_RDY応答に基づいて保留中のSENDコマンドの数を追跡することのみが必要とされる。したがって、この実施形態におけるREAD COL ARB512の入力幅は、コマンドキュー220内のエントリの数にNVキュー564からの入力を加えたものである。READ COL ARB512は、サブアービトレーション勝者として出力に提示される候補コマンドを選択する際に、コマンドがページヒットであるかどうかを含む、各コマンドの様々なタイミング及び優先順位特性を比較するデジタルロジックを含む。
【0044】
WRITE COL ARB535は、コマンドキュー220に接続された入力と、タイミングブロック234に接続された入力と、COL ARB542に接続された出力と、を含む。また、WRITE COL ARB535は、書き込みCASコマンド及びトランザクション書き込みコマンド(XWRITE)を含む、DRAMコマンド及び永続メモリコマンドの中から選択する。この実施形態におけるWRITE COL ARB535の入力幅は、書き込みコマンド及びXWRITEコマンドの両方がコマンドキュー220内に保持されるので、コマンドキュー220内のエントリの数である。WRITE COL ARB535は、COL ARB542に接続された出力で勝者として提示される候補コマンドを選択する際に、各コマンドの様々なタイミング及び優先順位特性を比較するデジタルロジックを含む。READ COL ARB512及びWRITE COL ARBは共に、ページヒットである候補コマンドを選択する際にページヒットサブアービタとして機能し、同時にSREAD、SEND及びXWRITEコマンドを調停する。
【0045】
PM ARB532は、コマンドキュー220に接続された入力と、タイミングブロック234に接続された入力と、ROW ARB544に接続された出力と、を含む。PM ARB532の入力幅は、コマンドキュー220内のエントリの数である。PM ARB532は、ページミスコマンドの様々な特性を比較し、出力においてアービトレーション勝者として提示する候補コマンドを選択するためのデジタルロジックを含む。
【0046】
XREAD ARB537は、コマンドキュー220に接続された入力と、タイミングブロック234に接続された入力と、ROW ARB544に接続された出力と、を含み、PM ARB532と同様の幅を有する。XREAD ARBは、コマンドキュー220に保持されたXREADコマンドの中から候補を選択し、その候補をアービトレーション勝者としてROW ARB544に接続された出力に提示する。
【0047】
PC ARB522は、コマンドキュー220に接続された入力と、タイミングブロック234に接続された入力と、レジスタ534に接続された出力と、を含む。また、PC ARB522は、コマンドキュー220のサイズの入力幅を有する。PC ARB522は、コマンド特性、典型的には優先順位及び/又は経過時間に基づいてサブアービトレーション勝者としてページ競合コマンドを選択するためのデジタルロジックを含む。この実施形態では、PC ARB522は、勝者候補を第2のティアのサブアービタに提示せず、代わりに、それを最終アービタ550への入力のためにレジスタ534に直接的に供給する。
【0048】
サブアービタの第2の層は、COL ARB542及びROW ARB544を含む。これらのサブアービタの各々は、レジスタ514、524、534と同様に、各クロックサイクルにおいて候補コマンドを受信するために、それらの入力においてレジスタを含み得る。COL ARB542は、READ COL ARB512からの候補コマンド及びWRITE COL ARB535からの候補コマンドをその2つの入力で受信し、コマンド特性に基づいてサブアービトレーション勝者を選択する。勝利候補は、レジスタ514に供給され、最終アービタ550に入力される。同様に、ROW ARB544は、その入力においてPM ARB532及びXREAD ARB537から候補コマンドを受信し、コマンド特性に基づいてサブアービトレーション勝者を選択する。勝利候補は、レジスタ524に供給され、最終アービタ550に入力される。
【0049】
レジスタ514は、COL ARB542の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。レジスタ524は、ROW ARB544の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。レジスタ534は、PC ARB522の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。
【0050】
最終アービタ550は、リフレッシュ制御ロジック232の出力に接続された第1の入力と、ページ閉鎖予測器562からの第2の入力と、出力レジスタ514の出力に接続された第3の入力と、出力レジスタ524の出力に接続された第4の入力と、出力レジスタ534の出力に接続された第5の入力と、「CMD」とラベル付けされたキュー214に第1のアービトレーションの勝者を提供するための第1の出力と、を有する。
【0051】
制御回路560は、
図2に関して上述したようにタイミングブロック234及びページテーブル236、並びに、ページ閉鎖予測器562を含む。タイミングブロック234は、ページテーブル236に接続された入力と、READ COL ARB512、WRITE COL ARB535、ページミスアービタ532、XREAD ARB537及びPC ARB522に接続された入力及び出力と、を有する。ページテーブル236は、コマンドキュー220の入力に接続された出力と、タイミングブロック234の入力に接続された出力と、ページ閉鎖予測器562の入力に接続された出力と、を有する。ページ閉鎖予測器562は、ページテーブル236の一方の出力に接続された入力と、出力レジスタ514の出力に接続された入力と、最終アービタ550の第2の入力に接続された出力と、を有する。
【0052】
READ COL ARB512、WRITE COL ARB535、ページミスアービタ532、XREAD ARB537及びPC ARB522の各々は、これらのそれぞれのカテゴリに属するコマンドキュー220内のコマンドのタイミング適格性を判定するためにタイミングブロック234の出力に接続された入力を有する。タイミングブロック234は、各ランクにおける各バンクごとに特定の動作に関連する持続時間をカウントするバイナリカウンタのアレイを含む。状態を判定するために必要なタイマの数は、タイミングパラメータ、所定のメモリタイプのバンクの数、及び、所定のメモリチャネル上でシステムによってサポートされるランクの数に依存する。次に実装されるタイミングパラメータの数は、システムに実装されるメモリのタイプに依存する。例えば、DDR5及びGDDR5メモリは、他のDDRxメモリタイプよりも多くのタイミングパラメータに従うためにより多くのタイマを必要とする。バイナリカウンタとして実装された汎用タイマのアレイを含むことにより、タイミングブロック234は、異なるメモリタイプに関してスケーリングされて再利用され得る。
【0053】
動作中、アービタ238は、各エントリのページ状態、各メモリアクセス要求の優先度、及び、要求間の依存関係を考慮に入れて、コマンドキュー220及びリフレッシュ制御ロジック232からメモリアクセスコマンドを選択する。優先度は、AXI4バスから受信されてコマンドキュー220に記憶される要求のサービス品質すなわちQoSに関連するが、メモリアクセスのタイプ及びアービタ238の動的動作に基づいて変更することができる。最終アービタ550は、これらの3つのサブアービトレーションの勝者間、及び、リフレッシュ制御ロジック232からのリフレッシュ動作を選択し、ページ閉鎖予測器562によって判定されるように読み取り又は書き込みコマンドを読み取り又はオートプリチャージコマンドによる書き込みに更に修正することができる。
【0054】
READ COL ARB512及びWRITE COL ARB535は、ページヒット、すなわち、開いたページに対する読み取りサイクル又は書き込みサイクル、並びに、SENDコマンド、SREADコマンド及びXWRITEコマンドの間を調停する。タイミングブロック234におけるタイマによって追跡されてREAD COL ARB512によってチェックされるタイミング適格パラメータは、例えば、行アドレスストローブ(row address strobe、RAS)を列アドレスストローブ(column address strobe、CAS)遅延時間(tRCD)に含み、CASをCAS待ち時間(tCCD)に含む。例えば、tRCDは、ページがRASサイクルで開かれた後のページへの読み取りアクセスの前に経過しなければならない最小時間を指定する。COL ARB542は、割り当てられたアクセスの優先度に基づいてサブアービトレーションの勝者を選択する。一実施形態では、優先度が4ビット、1ホット(hot)値であり、したがって、これは4つの値の中の1つの優先度を示すが、この4レベルの優先度方式が単なる一例であることは明らかである。読み取りCAS、SREAD及びSENDコマンドは、データバスをアクティブに保つために、適切な時間にREAD COL ARB512によって選択される。これらのDRAM及び永続メモリの読み取りは両方とも、実行された場合にデータバスを占有するので、READ COL ARB512においてそれらを一緒に調停して、READ COL ARB512における比較ロジックの複雑さ(したがってサイズ)を低減し、最終アービタ550への入力の数を低減することが有利である。
【0055】
ページコンフリクトは、バンク内の別の行が現在アクティブ化される場合のバンク内の1つの行へのアクセスである。PC ARB522は、コマンドキュー220内のアクセスと、対応するバンク及びランクにおいて現在開いているページとコンフリクトするページとの間で調停する。PC ARB522は、プリチャージコマンドを発行させるサブアービトレーション勝者を選択する。タイミングブロック234のタイマによって追跡されてPC ARB522によってチェックされるタイミング適格パラメータは、例えば、プリチャージコマンド期間(tRAS)を含む。書き込みコマンドに対するページ競合サブアービトレーションは、候補書き込みコマンドに対するバンクグループ番号も考慮する。PC ARB522は、割り当てられたアクセスの優先度に基づいてサブアービトレーション勝者を選択する。PC ARB522が同じ優先度レベルで2つ以上の要求を検出する場合、最も古いエントリが勝つ。
【0056】
ページミスは、プリチャージ状態にあるバンクへのアクセスである。ページミスアービタ532は、コマンドキュー220内のアクセスとプリチャージされたメモリバンクとの間を調停する。タイミングブロック234のタイマによって追跡されてページミスアービタ532によってチェックされるタイミング適格パラメータは、例えば、プリチャージコマンド期間(tRP)を含む。同じ優先度レベルでページミスである2つ以上の要求がある場合、最も古いエントリが勝つ。
【0057】
各サブアービタは、それぞれのサブアービトレーション勝者のための優先度値を出力する。最終アービタ550は、COL ARB542、ROW ARB544及びPC ARB522の各々からのサブアービトレーション勝者の優先度値を比較する。最終アービタ550は、相対的な優先度比較のセットを実行することによって、サブアービトレーション勝者間の相対的な優先度を判定する。また、最終アービタ550は、サブアービトレーション勝者が競合するかどうか(すなわち、それらが同じDRAMバンク及びランクに向けられているかどうか)を判定する。そのような競合が存在しない場合、最終アービタ550は、最高の優先度を有するコマンドを選択する。競合がある場合、最終アービタ550は以下のルールに従う。サブアービトレーション勝者COL ARB542の優先度値がPC ARB522の優先度値よりも高く、かつ、それらが両方とも同じバンク及びランクである場合、最終アービタ550は、COL ARB542によって示されるアクセスを選択する。PC ARB522のサブアービトレーション勝者の優先度値がCOL ARB542の優先度値よりも高く、かつ、それらが両方とも同じバンク及びランクである場合、最終アービタ550は、いくつかの更なる要因に基づいて勝者を選択する。場合によっては、ページ閉鎖予測器562は、オートプリチャージ属性を設定することにより、COL ARB542が示すアクセスの終了時にページを閉鎖させる。
【0058】
SREADがREAD COL ARB512によって選ばれた場合、それはSENDコマンドのように扱われ、SREADが永続メモリキャッシュ(NVDIMMキャッシュ等)にヒットした場合にSREADコマンドの読み取りデータを受信するためにデータバススロットが予約される。SREADがミスであることが分かった場合、永続メモリモジュールはデータを送信せず、データバススロット予約内の占有されていないスロットを生じさせる。その場合、SREADの応答がメモリコントローラに到着すると、コントローラは、SREADに対するSENDコマンドを生成する。READ COL ARB512内で、優先度は、メモリアクセスエージェントからの要求優先度によって最初に設定されるが、アクセスのタイプ(読み取り又は書き込み)及びアクセスのシーケンスに基づいて動的に調整される。概して、COL ARB542は、読み取りに対してより高い暗黙の優先度を割り当てるが、書き込みが完了に向かって進行するようにするために優先度上昇メカニズムを実装する。
【0059】
COL ARB542が読み取り又は書き込みコマンドを選択するごとに、ページ閉鎖予測器562は、オートプリチャージ(auto-precharge、AP)属性を伴うコマンドを送信するか否かを判定する。読み取り又は書き込みサイクル中、オートプリチャージ属性は、所定のアドレスビットを用いて設定され、オートプリチャージ属性は、読み取り又は書き込みサイクルが完了した後にDDRデバイスにページを閉じさせ、これにより、メモリコントローラがそのバンクのための個別のプリチャージコマンドを後に送信する必要性を回避する。ページ閉鎖予測器562は、選択されたコマンドと同じバンクにアクセスするコマンドキュー220に既に存在する他の要求を考慮に入れる。ページ閉鎖予測器562がメモリアクセスをAPコマンドに変換する場合、そのページへの次のアクセスはページミスとなる。
【0060】
他の実施形態では、アービタ238は、異なる数のティア及び異なる数のサブアービタを含むことができる。例えば、いくつかの実施形態は、2つのティア、すなわち、DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するためのコマンドキューに結合された第1のティアのサブアービタ回路と、候補コマンドを受信し、候補コマンドの中から最終アービトレーション勝者において選択するための第1のティアのサブアービタ回路に結合された第2のティアのサブアービタ回路と、を含む。1つのそのような実施形態は、第1のティア内の描示されたサブアービタ512、535、532、537、522を使用して構成されており、第1のティアからのサブアービトレーション勝者は、単一の比較ステップにおいてCOL ARB542、ROW ARB544、及び、最終アービタ550の説明された機能を実施する最終アービタに直接的に供給される。他の実施形態では、READ COL ARB及びWRITE COL ARBは、候補読み取りコマンド及び書き込みコマンドが同時に調停されず、それらのアービトレーションが同様のロジックを共有するので、統合される。そのような実施形態では、同じアービトレーションロジックが、読み取りバーストモード及び書き込みバーストモードで使用され得る。書き込みアービトレーションモードでは、NVキュー564の入力はマスクされる。
【0061】
図6は、いくつかの実施形態による、メモリアクセスコマンドを処理するためのプロセスのフロー
図600である。図示されたプロセスは、
図3及び
図4に図示されたもの等のアービタ、又は、他のメモリコントローラ構成による実装に好適である。プロセスは、ブロック602において、メモリチャネルへのディスパッチのためにDRAM及び永続メモリアクセスコマンドを選択することによって開始する。概して、コマンドは、メモリコントローラで受信され、DRAMメモリ及び永続メモリへのディスパッチを待つためにコマンドキューに配置される。いくつかの実施形態では、DRAMコマンド及び永続メモリコマンド(SENDコマンドを除く)の両方が、コマンドキュー220(
図2)等の単一のコマンドキュー内に存在する。ブロック604に示されるように、処理中の永続的又は不揮発性メモリ読み取り(NV読み取り)のためのコマンドが、NVキュー248(
図4)等の永続的メモリキューにおいて提供される。上述したように、いくつかの実施形態では、NVキュー248は、実行を待っているNVキュー248内に保持されているXREAD又は他の永続メモリ読み取りコマンドのための保留中のSENDコマンドの数を追跡することのみが必要とされる。
【0062】
ブロック606において、1つ以上の第1のティアのサブアービタは、DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択する。概して、DRAMコマンドは、READコマンド及びWRITEコマンド、並びに、そのようなコマンドの変形を含み、それらは、用いられるDRAM技術と共に使用するためにREAD CAS等の形式にデコードされ得る。永続メモリコマンドは、XREAD(「X-READ」と称されることもある)、XWRITE(「X-WRITE」と称されることもある)、SREAD、及び、用いられる特定の永続メモリに固有であり得る他の不揮発性メモリコマンド等の永続メモリモジュールコマンドを含む。いくつかの永続メモリコマンドは、永続メモリモジュール内の不揮発性ストレージへのコミットメントを必要としたが、一方で、他のコマンドは、NVDIMM-P等の永続メモリモジュールと関連付けられたDRAMバッファから実行され得る。本明細書では、そのような変形形態の両方は永続メモリコマンドと称される。
【0063】
ブロック606におけるDRAMコマンド及び永続メモリコマンドの両方からの候補の選択は、DRAM及び永続メモリのために個別のサブアービタを使用することと比較して、いくつかの利点を提供する。DRAM及び永続メモリの両方がメモリチャネル上に存在する場合に、最終的なコマンド選択は、異なるアービタに分配する必要がある複雑な比較を必要とし、したがって、何れのアービタもタイミングボトルネックではない。より単純な比較ロジックを有するより多くのサブアービタ入力を含むことと、より複雑な比較ロジックを有するより少ないサブアービタ入力を含むことと、の間にはトレードオフが存在する。例えば、
図3又は
図4に示されるように実装される本明細書で説明されるプロセスは、多数の入力を回避し、同時に、サブアービタ間で比較ロジックを効果的に分散させることによって、比較ロジックの複雑さを低減する。このような分配は、冗長性の少ない効率的なロジックをもたらし、アービタが、過度に大きい比較ロジックなしにメモリバスの速度要求を満たすことを可能にする。また、本明細書の技術は、機能的編成(すなわち、分離DIMMタイプベース)ではなく、リソース中心アービトレーション編成(クロスDIMMタイプベース)を採用する。そのような手法は、データバス競合を回避するために異なるデータコマンド(CAS、SREAD、SEND、XWRITE等)をマージし、コマンドバス競合を回避するために1つのデータコマンド、1つの行コマンド、及び、1つのプリチャージコマンドをマージする。
【0064】
ブロック608において、1つ以上の第2のティアのサブアービタは、第1のティアのサブアービタによって提供された候補の中から選択する。例えば、
図5の実施形態では、COL ARB542は、DRAMコマンド(典型的にはページヒット)又は永続メモリコマンドであり得る候補コマンドの中から選択し、一方で、ROW ARB544は、DRAM行オープンコマンド(ページミス)又は永続メモリコマンドであり得る候補コマンドの中から選択する。一部の実施形態では、上述したように、第2のティアのサブアービタは、最終サブアービタとしても機能する。そのような実施形態では、第2のティアのサブアービタの比較ロジックは、上述したようにより高い複雑さを有する。
【0065】
ブロック610において、最終アービタは、メモリチャネルにディスパッチするために、第2のティアのサブアービタの中から少なくとも1つのコマンドを選択する。理解され得るように、任意の特定のコマンドディスパッチサイクルにおいて、DRAMコマンド又は永続メモリコマンドが最終アービタによって選択され得る。このプロセスによるアービタの複数のティア間での選択ロジックの分配は、DRAMコマンド及び永続メモリコマンドの選択をマージする効率的なプロセスを可能にし、一方で、アービタ設計が、同じチャネル上で永続メモリコマンドを処理することと関連付けられた追加の複雑さを処理しながら、DRAMアービトレーションプロセスの速度要求を満たすことを可能にする。したがって、本明細書で説明されるメモリコントローラ及びデータ処理システムは、不揮発性メモリモジュールとインターフェースするためのメモリコントローラの能力を改善する。
【0066】
図2のメモリコントローラ200又はアービタ238等のその任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成可能な合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造ステップで使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0067】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。例えば、メモリチャネルコントローラ210及び/又はパワーエンジン250の内部アーキテクチャは、異なる実施形態において異なり得る。メモリコントローラ200は、高帯域幅メモリ(HBM)、RAMbus DRAM(RAMbus DRAM、RDRAM)等のような、NVDIMM-P及びDDRx以外の他のタイプのメモリとインターフェースすることができる。図示した実施形態は、個別のDIMMに対応するメモリの各ランクを示したが、他の実施形態では、各DIMMは複数のランクをサポートすることができる。更に、異種メモリチャネルは一般にサポートされるが、異種チャネルは、不揮発性DIMMで完全に満たされ得る。更に、本明細書で説明される例示的なタイプの不揮発性読み取りコマンドはXREADコマンドであるが、他のタイプの不揮発性読み取りコマンドもサポートされる。例えば、NVDIMM-P仕様は、要求されたメモリが不揮発性DIMM上のDRAMで発見される場合、決定論的応答時間を有するが、不揮発性DIMMが、要求されたデータがDRAMで利用可能でなく、代わりに不揮発性メモリ媒体から読み取られなければならないと判定する場合に、非決定論的応答時間を有する不揮発性読み取りとして解釈される、投機的読み取り(speculative read、SREAD)コマンドを提供する。一部の実施形態では、そのような「ミス」が発生した場合、SREADコマンドがNVキューに追加され、次いで、XREADと同様に扱われる。
【0068】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。
【手続補正書】
【提出日】2024-02-16
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリコントローラであって、
メモリチャネルに対するメモリアクセスコマンドを受信するための入力と、所定の数のメモリアクセスコマンドを保持するためのいくつかのエントリと、を有するコマンドキューと、
永続メモリ及び前記メモリチャネルに結合されたDRAMメモリのうち何れかにディスパッチするために前記コマンドキューからメモリコマンドを選択するためのアービタと、を備え、
前記アービタは、
DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するために前記コマンドキューに結合された第1のティアのサブアービタ回路と、
前記候補コマンドを受信し、前記候補コマンドの中から少なくとも1つのコマンドを選択するために前記第1のティアのサブアービタ回路に結合された第2のティアのサブアービタ回路と、を備える、
メモリコントローラ。
【請求項2】
前記第1のティアのサブアービタ回路は、少なくとも2つの第1のティアのサブアービタを含み、
各第1のティアのサブアービタは、候補DRAMコマンド及び永続メモリコマンドの中から選択し、各第1のティアのサブアービタは、選択された候補コマンドを示す出力を有する、
請求項1のメモリコントローラ。
【請求項3】
前記第1のティアのサブアービタは、読み取り列アドレスストローブ(CAS)及びSREADコマンドの中から選択する読み取り列サブアービタと、書き込みCAS及びX-WRITEコマンドの中から選択する書き込み列サブアービタと、ページミスサブアービタと、X-READサブアービタと、を含み、各第1のティアのサブアービタは、それぞれの候補コマンドを選択し、
前記第2のティアのサブアービタ回路は、前記読み取り列サブアービタ及び前記書き込み列サブアービタから候補コマンドを選択する第1のサブアービタと、前記ページミスサブアービタ及び前記X読み取りサブアービタから候補コマンドを選択する第2のサブアービタと、を含み、
前記アービタは、前記第1のサブアービタ及び前記第2のサブアービタの前記候補コマンドから選択する最終アービタを含む、
請求項2のメモリコントローラ。
【請求項4】
ページ競合候補コマンドを選択するために前記コマンドキューに結合されたページ競合サブアービタを備え、前記最終アービタは、前記ページ競合候補コマンドから選択する、
請求項3のメモリコントローラ。
【請求項5】
前記読み取り列サブアービタは、前記永続メモリに対するSENDコマンドから選択する、
請求項3のメモリコントローラ。
【請求項6】
永続メモリコマンドキューを備え、
前記読み取り列サブアービタは、前記永続メモリコマンドキューからSENDコマンドを選択する、
請求項5のメモリコントローラ。
【請求項7】
前記永続メモリコマンドキューは、不揮発性デュアルインラインメモリモジュール(NVDIMM)制御回路から送信された読み取りレディ応答に基づいて、前記メモリコントローラによってSENDコマンドが提供される、
請求項6のメモリコントローラ。
【請求項8】
方法であって、
DRAMコマンド及び永続メモリコマンドを含む複数のメモリアクセスコマンドをメモリコントローラで受信することと、
前記メモリアクセスコマンドをコマンドキューに配置して、DRAMメモリ及び永続メモリへのディスパッチを待つことと、
前記コマンドキューから複数の候補コマンドを選択することであって、前記候補コマンドのうち少なくとも2つは、前記DRAMコマンド及び永続メモリコマンドの中から選択される、ことと、
メモリチャネル上で送信するために、前記複数の候補コマンドの中から少なくとも1つのコマンドを選択することと、を含む、
方法。
【請求項9】
前記複数の候補コマンドを選択することは、少なくとも2つの第1のティアのサブアービタを用いて実行され、各第1のティアのサブアービタは、候補DRAMコマンド及び永続メモリコマンドの中から選択し、各第1のティアのサブアービタは、選択された候補コマンドを示す出力を有する、
請求項8の方法。
【請求項10】
前記複数の候補コマンドを選択することは、読み取り列アドレスストローブ(CAS)コマンド及びSREADコマンドの中から第1の候補を選択することと、書き込みCASコマンド及びX-WRITEコマンドの中から第2の候補を選択することと、ページミスコマンドの中から第3の候補を選択することと、X-READコマンドの中から第4の候補を選択することと、を含む、
請求項8の方法。
【請求項11】
前記第1の候補及び前記第2の候補の中から第2のティアの候補コマンドを選択することと、前記第3の候補及び前記第4の候補の中から別の第2のティアの候補を選択することと、を含む、
請求項10の方法。
【請求項12】
メモリチャネル上で送信するために、前記複数の候補コマンドの中から少なくとも1つのコマンドを選択することは、前記第2のティアの候補の中から最終候補を選択することを含む、
請求項11の方法。
【請求項13】
前記複数の候補コマンドを選択することは、永続メモリキューの利用可能なSENDコマンドから選択することを含む、
請求項12の方法。
【請求項14】
データ処理システムであって、
DRAMメモリ及び永続メモリに結合されたメモリチャネルと、
前記メモリチャネルに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
前記メモリチャネルに対するメモリアクセスコマンドを受信するための入力と、所定の数のメモリアクセスコマンドを保持するためのいくつかのエントリと、を有するコマンドキューと、
前記永続メモリ及び前記DRAMチャネルのうち何れかに送信するために前記コマンドキューからメモリコマンドを選択するためのアービタと、を備え、
前記アービタは、
DRAMコマンド及び永続メモリコマンドの中から候補コマンドを選択するために前記コマンドキューに結合された第1のティアのサブアービタ回路と、
前記候補コマンドを受信し、前記候補コマンドの中から少なくとも1つのコマンドを選択するために前記第1のティアのサブアービタ回路に結合された第2のティアのサブアービタ回路と、を備える、
データ処理システム。
【請求項15】
前記第1のティアのサブアービタ回路は、少なくとも2つの第1のティアのサブアービタを含み、
各第1のティアのサブアービタは、候補DRAMコマンド及び永続メモリコマンドの中から選択し、各第1のティアのサブアービタは、選択された候補コマンドを示す出力を有する、
請求項14のデータ処理システム。
【国際調査報告】