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

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

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

特許7195484不揮発性デュアルインラインメモリモジュールのコマンドリプレイ
<>
  • 特許-不揮発性デュアルインラインメモリモジュールのコマンドリプレイ 図1
  • 特許-不揮発性デュアルインラインメモリモジュールのコマンドリプレイ 図2
  • 特許-不揮発性デュアルインラインメモリモジュールのコマンドリプレイ 図3
  • 特許-不揮発性デュアルインラインメモリモジュールのコマンドリプレイ 図4
  • 特許-不揮発性デュアルインラインメモリモジュールのコマンドリプレイ 図5
  • 特許-不揮発性デュアルインラインメモリモジュールのコマンドリプレイ 図6
  • 特許-不揮発性デュアルインラインメモリモジュールのコマンドリプレイ 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-12-15
(45)【発行日】2022-12-23
(54)【発明の名称】不揮発性デュアルインラインメモリモジュールのコマンドリプレイ
(51)【国際特許分類】
   G06F 12/06 20060101AFI20221216BHJP
【FI】
G06F12/06 515J
【請求項の数】 15
(21)【出願番号】P 2022539326
(86)(22)【出願日】2020-12-10
(86)【国際出願番号】 US2020064188
(87)【国際公開番号】W WO2021138014
(87)【国際公開日】2021-07-08
【審査請求日】2022-08-30
(31)【優先権主張番号】16/730,092
(32)【優先日】2019-12-30
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジン ワン
(72)【発明者】
【氏名】ジェームズ アール. マグロ
(72)【発明者】
【氏名】ケダーナシュ バラクリシュナン
【審査官】後藤 彰
(56)【参考文献】
【文献】国際公開第2019/125564(WO,A1)
【文献】特表2021-507399(JP,A)
【文献】特開2017-157217(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
メモリコントローラであって、
揮発性読み取り、揮発性書き込み、不揮発性読み取り及び不揮発性書き込みを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有するコマンドキューと、
前記コマンドキューの出力に結合された入力と、揮発性デュアルインラインメモリモジュール(DIMM)及び不揮発性DIMMが結合された異種メモリチャネルに結合するための出力と、を有するメモリインタフェースキューと、
前記メモリインタフェースキューに配置された不揮発性読み取りコマンドを格納するために前記コマンドキューの出力に結合された不揮発性コマンドキュー(NVキュー)と、
前記メモリインタフェースキューに配置された、選択されたメモリアクセスコマンドを格納するために前記コマンドキューの出力に結合されたリプレイキューと、
前記異種メモリチャネルを介して受信した情報に基づいて、回復シーケンスを必要とするエラーが発生したことを検出し、前記エラーに応じて、前記リプレイキューに格納された、選択されたメモリアクセスコマンドを送信することと、前記NVキューに格納された不揮発性読み取りを送信することと、を含む前記回復シーケンスを開始するためのリプレイ制御回路と、を備える、
メモリコントローラ。
【請求項2】
前記回復シーケンスは、前記リプレイキューに格納された全ての選択されたメモリアクセスコマンドを送信した後に、前記NVキューに格納された不揮発性読み取りを送信することを含む、
請求項1のメモリコントローラ。
【請求項3】
前記回復シーケンスは、1つ以上の前記DIMM上の全ての保留中の読み取り識別子(RID)のリセットを要求することを含む、
請求項1のメモリコントローラ。
【請求項4】
前記選択されたメモリアクセスコマンドは、揮発性読み取り、揮発性書き込み、不揮発性書き込み、多目的レジスタ(MPR)関連コマンド、及び、MPR関連コマンドに関連するSENDコマンドを含む、
請求項1のメモリコントローラ。
【請求項5】
前記回復シーケンスは、不揮発性読み取りに関連する、前記リプレイキューに格納されたSENDコマンドをスキップすることと、前記回復シーケンス中に前記不揮発性DIMMから受信したリードレディ(RD_RDY)応答に応じて新しいSENDコマンドを生成することと、を含む、
請求項1のメモリコントローラ。
【請求項6】
前記回復シーケンスを必要とする前記エラーは、コマンドパリティエラー、不揮発性DIMMに関連する書き込みコマンド誤り訂正符号(ECC)エラー、及び、不揮発性DIMMに関連する読み取りコマンドECCエラーのうち何れかである、
請求項1のメモリコントローラ。
【請求項7】
方法であって、
揮発性メモリの読み取り、揮発性メモリの書き込み、不揮発性メモリの読み取り及び不揮発性メモリの書き込みを含む複数のメモリアクセス要求を受信することと、
前記メモリアクセス要求を満たすためのメモリアクセスコマンドをメモリインタフェースキューに配置し、前記メモリアクセスコマンドを、前記メモリインタフェースキューから揮発性デュアルインラインメモリモジュール(DIMM)及び不揮発性DIMMに結合された異種メモリチャネルに送信することと、
前記メモリインタフェースキューに配置された、選択されたメモリアクセスコマンドをリプレイキューに格納することと、
前記メモリインタフェースキューに配置された前記不揮発性読み取りを不揮発性コマンドキュー(NVキュー)に格納することと、
前記異種メモリチャネルを介して受信した情報に基づいて、回復シーケンスを必要とするエラーが発生したことを検出し、前記エラーに応じて、(i)前記リプレイキューに格納された、選択されたメモリアクセスコマンドを送信することと、(ii)前記NVキューに格納された不揮発性読み取りを送信することと、を含む前記回復シーケンスを開始することと、を含む、
方法。
【請求項8】
前記回復シーケンスは、前記リプレイキューに格納された全ての選択されたメモリアクセスコマンドを送信した後に、前記NVキューに格納された不揮発性読み取りを送信することを含む、
請求項の方法。
【請求項9】
前記回復シーケンスは、1つ以上の前記DIMM上の全ての保留中の読み取り識別子(RID)のリセットを要求することを含む、
請求項の方法。
【請求項10】
前記回復シーケンスは、1つ以上の前記DIMM上のバッファの書き込みクレジットを要求し、取得することを含む、
請求項の方法。
【請求項11】
前記選択されたメモリアクセスコマンドは、揮発性読み取り、揮発性書き込み、不揮発性書き込み、多目的レジスタ(MPR)関連コマンド、及び、MPR関連コマンドに関連するSENDコマンドを含む、
請求項の方法。
【請求項12】
前記回復シーケンスは、不揮発性読み取りに関連する、前記リプレイキューに格納されたSENDコマンドをスキップすることと、前記回復シーケンス中に前記不揮発性DIMMから受信したリードレディ(RD_RDY)応答に応じて新しいSENDコマンドを生成することと、を含む、
請求項の方法。
【請求項13】
データ処理システムであって、
中央処理装置と、
前記中央処理装置に結合されたデータファブリックと、
前記データファブリックを介してなされたメモリアクセス要求を満たすために前記データファブリックに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
揮発性読み取り、揮発性書き込み、不揮発性読み取り及び不揮発性書き込みを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有するコマンドキューと、
前記コマンドキューの出力に結合された入力と、揮発性デュアルインラインメモリモジュール(DIMM)及び不揮発性DIMMが結合された異種メモリチャネルに結合するための出力と、を有するメモリインタフェースキューと、
前記メモリインタフェースキューに配置された不揮発性読み取りを格納するために前記コマンドキューの出力に結合された不揮発性コマンドキュー(NVキュー)と、
前記メモリインタフェースキューに配置された、選択されたメモリアクセスコマンドを格納するために前記コマンドキューの出力に結合されたリプレイキューと、
前記異種メモリチャネルを介して受信した情報に基づいて、回復シーケンスを必要とするエラーが発生したことを検出し、前記エラーに応じて、前記リプレイキューに格納された、選択されたメモリアクセスコマンドを送信し、前記NVキューに格納された不揮発性読み取りを送信するリプレイ制御回路と、を備える、
データ処理システム。
【請求項14】
前記回復シーケンスは、前記リプレイキューに格納された全ての選択されたメモリアクセスコマンドを送信した後に、前記NVキューに格納された不揮発性読み取りを送信することを含む、
請求項13のデータ処理システム。
【請求項15】
前記回復シーケンスは、1つ以上の前記DIMM上の全ての保留中の読み取り識別子(RID)のリセットを要求することを含む、
請求項13のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップをメインメモリに使用する。今日販売されているほとんどのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって公布されている様々なダブルデータレート(DDR)DRAM規格と互換性がある。DDRメモリコントローラは、公開されているDDR規格に従って、様々なメモリアクセスエージェントとDDR DRAMとの間のインタフェースを管理するために使用される。
【0002】
永続ストレージを備えた不揮発性デュアルインラインメモリモジュール(NVDIMM-P)は、標準的なDDR DIMMの代わりに使用できるストレージクラスメモリであるが、永続メモリを含む。DRAM等の揮発性メモリをサポートするメモリチャネルを備えた永続又は「不揮発性」メモリの使用には、いくつかの新しい問題がある。不揮発性DIMMの不揮発性メモリからの読み取りは、DRAMからの読み取りよりも遅いプロセスである。不揮発性メモリの読み取りは、決定的な既知の時間でより速く完了するDRAM読み取りとは対照的に、通常、非決定的な時間で完了する。このような違いに対処するには、不揮発性DIMMと相互作用できるメモリコントローラを設計する際に様々な課題がある。
【図面の簡単な説明】
【0003】
図1】先行技術で既知のアクセラレーテッドプロセシングユニット(APU)及びメモリシステム示すブロック図である。
図2】いくつかの実施形態による、図1のようなAPUでの使用に適したメモリコントローラのブロック図である。
図3】いくつかの実施形態による、データ処理システムのブロック図である。
図4】いくつかの実施形態による、メモリアクセス要求を処理するためのプロセスのフロー図である。
図5】いくつかの実施形態による、エラーを処理するためのプロセスのフロー図である。
図6図5のプロセス示す図である。
図7図5のプロセスのさらなる部分を示す図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面での同じ符号の使用は、類似又は同一のアイテムを示す。他に述べられない限り、「結合される(coupled)」という用語及びその関連する動詞の形式は、本分野において既知の手段による直接接続及び間接電気接続の両方を含み、他に述べられない限り、直接接続との記載は、適切な形式の間接電気接続も使用した代替的な実施形態を暗に意味する。
【0005】
メモリコントローラは、コマンドキューと、メモリインタフェースキューと、不揮発性コマンドキュー(NVキュー)と、リプレイキューと、リプレイ制御回路と、を含む。コマンドキューは、揮発性読み取り、揮発性書き込み、不揮発性読み取り及び不揮発性書き込みを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有する。メモリインタフェースキューは、コマンドキューから選択されたコマンドを受信するための入力と、少なくとも1つの不揮発性デュアルインラインメモリモジュール(DIMM)に結合された異種メモリチャネルに結合するための出力と、を有する。NVキューは、メモリインタフェースキューに配置された不揮発性読み取りコマンドを格納するためのコマンドキューの出力に結合される。リプレイキューは、メモリインタフェースキューに配置された、選択されたメモリアクセスコマンドを格納するためのコマンドキューの出力に結合される。リプレイ制御回路は、異種メモリチャネルを介して受信した情報に基づいて、回復シーケンスを必要とするエラーが発生したことを検出し、エラーに応じて、リプレイキューに格納された、選択されたメモリアクセスコマンドを送信することと、NVキューに格納された不揮発性読み取りを送信することと、を含む回復シーケンスを開始する。
【0006】
方法は、メモリシステムのエラーに応答する。方法は、揮発性メモリの読み取り、揮発性メモリの書き込み、不揮発性メモリの読み取り及び不揮発性メモリの書き込みを含む複数のメモリアクセス要求を受信することを含む。メモリアクセス要求を満たすためのメモリアクセスコマンドは、メモリインタフェースキューに配置される。メモリアクセスコマンドは、メモリインタフェースキューから、揮発性デュアルインラインメモリモジュール(DIMM)及び不揮発性DIMMに結合された異種メモリチャネルに送信される。メモリインタフェースキューに配置された、選択されたメモリアクセスコマンドは、リプレイキューに格納される。メモリインタフェースキューに配置された不揮発性読み取りは、不揮発性コマンドキュー(NVキュー)に格納される。方法は、異種メモリチャネルを介して受信した情報に基づいて、回復シーケンスを必要とするエラーが発生したことを検出し、エラーに応じて、(i)リプレイキューに格納された、選択されたメモリアクセスコマンドを送信することと、(ii)NVキューに格納された不揮発性読み取りを送信することと、を含む回復シーケンスを開始する。メモリインタフェースキューに配置されたメモリアクセスコマンドを少なくとも1つのストレージキューに格納する。
【0007】
データ処理システムは、中央処理装置と、中央処理装置に結合されたデータファブリックと、中央処理装置からのメモリアクセス要求を満たすためにデータファブリックに結合されたメモリコントローラと、を含む。メモリコントローラは、コマンドキューと、メモリインタフェースキューと、不揮発性コマンドキュー(NVキュー)と、リプレイキューと、リプレイ制御回路と、を含む。コマンドキューは、揮発性読み取り、揮発性書き込み、不揮発性読み取り及び不揮発性書き込みを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有する。メモリインタフェースキューは、コマンドキューから選択されたコマンドを受信するための入力と、少なくとも1つの不揮発性デュアルインラインメモリモジュール(DIMM)に結合された異種メモリチャネルに結合するための出力と、を有する。NVキューは、メモリインタフェースキューに配置された不揮発性読み取りコマンドを格納するためのコマンドキューの出力に結合される。リプレイキューは、メモリインタフェースキューに配置された、選択されたメモリアクセスコマンドを格納するためのコマンドキューの出力に結合される。リプレイ制御回路は、異種メモリチャネルを介して受信した情報に基づいて、回復シーケンスを必要とするエラーが発生したことを検出し、エラーに応じて、リプレイキューに格納された、選択されたメモリアクセスコマンドを送信することと、NVキューに格納された不揮発性読み取りを送信することと、を含む回復シーケンスを開始する。
【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との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック125は、システム構成に基づいてメモリアクセスの宛先を判定するための、システムの基本入出力システム(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、SB172、又は、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をデータファブリック125にシリアルプレゼンス検出リンク(SDP)経由で双方向に接続する。物理インタフェース147は、メモリチャネルコントローラ143をPHY151に双方向に接続し、DDR PHYインタフェース(DFI)仕様に準拠するものである。メモリチャネル142は、ホストインタフェース146と、メモリチャネルコントローラ144と、物理インタフェース148と、を含む。ホストインタフェース146は、メモリチャネルコントローラ144をデータファブリック125に別のSDP経由で双方向に接続する。物理インタフェース148は、メモリチャネルコントローラ144をPHY152に双方向に接続し、DFI仕様に準拠するものである。パワーエンジン149は、SMNバス経由でSMU180に双方向に接続され、アドバンストペリフェラルバス(APB)経由でPHY151,152に双方向に接続され、そしてまた、メモリチャネルコントローラ143,144にも双方向に接続される。PHY151は、メモリチャネル131に双方向に接続される。PHY152は、メモリチャネル133に双方向に接続される。
【0017】
メモリ管理ハブ140及びそれに関連する物理インタフェース(PHY)151,152は、この実施形態においてAPU100と統合される。メモリ管理ハブ140は、メモリチャネル141,142とパワーエンジン149とを含む。メモリチャネル141は、ホストインタフェース145と、メモリチャネルコントローラ143と、物理インタフェース147と、を含む。ホストインタフェース145は、メモリチャネルコントローラ143をデータファブリック125にシリアルプレゼンス検出リンク(SDP)経由で双方向に接続する。物理インタフェース147は、メモリチャネルコントローラ143をPHY151に双方向に接続し、DDR PHYインタフェース(DFI)仕様に準拠するものである。メモリチャネル142は、ホストインタフェース146と、メモリチャネルコントローラ144と、物理インタフェース148と、を含む。ホストインタフェース146は、メモリチャネルコントローラ144をデータファブリック125に別のSDP経由で双方向に接続する。物理インタフェース148は、メモリチャネルコントローラ144をPHY152に双方向に接続し、DFI仕様に準拠するものである。パワーエンジン149は、SMNバス経由でSMU180に双方向に接続され、アドバンストペリフェラルバス(APB)経由でPHY151,152に双方向に接続され、そしてまた、メモリチャネルコントローラ143,144にも双方向に接続される。PHY151は、メモリチャネル131に双方向に接続される。PHY152は、メモリチャネル133に双方向に接続される。
【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が非常に高温になると、それが完全にシャットダウンされ得る。温度イベントは、外部センサからSMU180によってSMNバスを介して受信することもでき、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と、不揮発性(NV)バッファ247と、NVキュー248と、を含む。
【0022】
インタフェース212は、データファブリック125への外部バス経由での第1の双方向接続を有し、且つ、出力を有する。メモリコントローラ200において、この外部バスは、ARM Holdings、PLC of Cambridge、Englandによって規定された「AXI4」として知られているアドバンストエクステンシブルインタフェースバージョン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によって復号されたアドレスフィールド、加えて、アクセスタイプ及びサービス品質(QoS)識別子を含む、アービタ238がメモリアクセスを効率的に選択することを可能にする他のアドレス情報を格納する。CAM224は、ライトアフターライト(WAW)及びリードアフターライト(RAW)の順序付け規則といった順序付け規則を実行する情報を含む。
【0024】
誤り訂正符号(ECC)生成ブロック244は、NVDIMM-Pに送信される書き込みデータのECCを判定する。ECCチェック回路242は、受信したECCを着信ECCと照合する。
【0025】
リプレイキュー230は、アドレス及びコマンドパリティ応答等の応答を待機しているアービタ238によって選択されている、選択されたメモリアクセスを格納するための一時的なキューである。リプレイ制御ロジック231は、ECCチェックブロック242にアクセスして、返されたECCが正しいかそれともエラーを示すかを判定する。リプレイ制御ロジック231は、これらのサイクルの1つのパリティ又は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に双方向に接続される。
【0029】
インタフェース212から受信した書き込みメモリアクセス要求に応じて、ECC生成ブロック244は、書き込みデータに従ってECCを計算する。データバッファ246は、受信したメモリアクセス要求に対する書き込みデータ及びECCを格納する。データバッファ246は、アービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをメモリインタフェースキュー214に出力する。
【0030】
パワーコントローラ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デバイスに連続的なメモリアクセスストリームを提供する。
【0031】
メモリチャネルコントローラ210は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。所望の調停決定を行うために、アドレスジェネレータ222は、アドレス情報を、メモリシステムにおけるランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコード情報に復号し、コマンドキュー220は、プリデコード情報を格納する。構成レジスタ262は、構成情報を格納して、アドレスジェネレータ222が受信したアドレス情報をどのように復号するかを判定する。アービタ238は、復号されたアドレス情報、タイミングブロック234によって示されたタイミング適格性情報、及び、ページテーブル236によって示されたアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準に遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ238は、オープンページへのアクセスについて基本設定を実装してメモリページを変更するために必要とされるプリチャージ及びアクティブ化コマンドのオーバーヘッドを回避し、それらを一方のバンクへの読み取り及び書き込みアクセスにインターリーブすることにより、オーバーヘッドアクセスを他方のバンクに隠す。特に、通常の動作中に、アービタ238は、通常、異なるページを選択する前にプリチャージされることをページが要求されるまで、異なるバンク内でそれらのページを開いたままにする。
【0032】
図3は、いくつかの実施形態による、データ処理システム300のブロック図である。データ処理システム300は、APU310とメモリシステム330とを含む。メモリ配置に焦点を合わせるために、システムの他の様々な部分が示されていない。APU310は、メモリシステム330とインタフェースするために異種メモリチャネルをサポートするメモリコントローラ200(図2)のようなメモリコントローラを含む。通常のDDRxメモリチャネルに加えて、APU310は、バス342を介して接続されたRDIMM344,346,348のみを備えた同種メモリチャネル340に加えて、通常のレジスタードDIMM又はRDIMM334,336とNVDIMM-P338の両方を備えた異種メモリチャネル330でNVDIMM-P338をサポートする。LRDIMMやUDIMM等の他のDIMMタイプは、いくつかの実施形態でサポートされる。この実施形態では、異種メモリチャネル330は、NVDIMM-P及びRDIMMの両方に接続するが、いくつかの実施形態では、異種メモリチャネルは、全てのNVDIMM-PタイプのDIMMとインタフェースする能力を有する。
【0033】
ドラフトNVDIMM-P規格に従って、APU310のメモリコントローラとNVDIMM-P338の間のトランザクションは「リンク」ECCによって保護される。リンクECCは、バス332経由でのメモリコントローラとNVDIMMとの間のデータ転送のデータ整合性を保証する。既知のECCメカニズムに従って、ランダムエラー又は一時的なエラーによって引き起こされるリンク上のデータ破損から保護する。保護は、使用するECC符号によって異なる。ECCは、例えば、多ビットエラー検出による単一ビット訂正を可能にする場合がある。訂正不可能なエラーの検出に応じて、メモリコントローラは、トランザクションをリプレイして、一時的又はランダムエラーが持続しないようにし、訂正可能なエラーと訂正不可能なエラーの両方をオペレーティングシステムにレポートすることもできる。
【0034】
NVDIMM-PタイプのDIMMがこの実施形態で説明されているが、他の実施形態では、本明細書の技術を使用して、異種メモリチャネルを介して他のタイプのストレージクラスメモリ(SCM)モジュールとインタフェースする。本明細書で使用されるように、SCMは、システムメモリ空間でアドレス指定可能な不揮発性メモリを備えたメモリモジュールを示す。SCMモジュールの不揮発性メモリは、RAMでバッファリングすること、及び/又は、SCMモジュールに搭載されたRAMとペアリングすることができる。SCMメモリアドレスマップは、オペレーティングシステム(OS)の観点から、従来のDRAMポピュレーションと一緒に表示される。OSは、通常、SCMで定義されたアドレス範囲が従来のメモリとは「異なる」タイプのメモリであることを認識する。この違いは、このメモリがより潜在的であり、永続的な品質を持つ可能性があることをOSに通知することである。OSは、SCMメモリを直接アクセスメモリ又はファイルシステムアクセスメモリとしてマップすることができる。直接アクセスとは、OSが物理的でアドレス指定可能なメモリとしてSCMアドレス範囲にアクセスすることを意味する。ファイルシステムアクセスは、OSがファイルシステムの一部として永続メモリを管理し、ファイルベースのAPIを介してSCMへのアクセスを管理することを意味する。最終的に、要求は、上位レベルのOSがアクセスを管理する方法に関係なく、SCMアドレス範囲内のメモリコントローラに達する。
【0035】
図4は、いくつかの実施形態による、メモリアクセスコマンドを処理するためのプロセス400のフロー図である。プロセス400は、不揮発性読み取りコマンドの処理に焦点を合わせ、図2のメモリコントローラ200又は他のメモリコントローラ装置を用いた実装に適する。プロセス400は、ブロック402で始まり、揮発性メモリの読み取り、揮発性メモリの書き込み、不揮発性メモリの読み取り及び不揮発性メモリの書き込みを含む複数のメモリアクセス要求を受信する。ブロック404で、要求を満たすためのメモリアクセスコマンドがスケジュールされ、メモリインタフェースキューに配置される。ブロック404は、概して、メモリアクセス要求のためのメモリアクセスコマンドを復号することを含み、アービタ238(図2)等のアービタによってスケジュールされメモリインタフェースキューに配置される前に、コマンドキューにメモリアクセスコマンドを保持することを含み得る。
【0036】
ブロック406で、プロセス400は、メモリインタフェースキューに配置された不揮発性読み取りコマンドを不揮発性コマンドキュー(NVキュー)に格納する。ブロック408で、メモリインタフェースキューからのメモリアクセスコマンドは、少なくとも1つの不揮発性デュアルインラインメモリモジュール(DIMM)に結合された異種メモリチャネルを介して送信される。いくつかの実施形態では、メモリチャネルは、少なくとも1つの揮発性DIMMに結合される。
【0037】
ブロック410に示すように、異種メモリチャネルを介して送信された不揮発性読み取りコマンドに対して、不揮発性DIMMは、概して、不揮発性DIMMの不揮発性メモリ、不揮発性DIMMのDRAM又はメディアコントローラのキャッシュにある可能性がある、要求されたデータを読み取る予測不可能なプロセスのために、非決定的な期間の後に応答する。非決定的な期間中、他のメモリアクセスコマンドは、概して、メモリインタフェースキューから送信される。不揮発性DIMMのメディアコントローラは、要求されたデータの読み取りプロセスを完了すると、レディ応答信号「RD_RDY」をメモリコントローラに送信する。プロセスは、不揮発性読み取りごとにRD_RDYを受信するのを待つ。概して、RD_RDY信号は、メモリインタフェースキューがメモリアクセスコマンドへの応答を受信するサブチャネルとは別の異種メモリチャネルのサブチャネルで送受信される。例えば、NVDIMM-Pメモリチャネルにより、RD_RDY信号は、概して、コマンドとデータが送信される「CMD」及び「DQ」ラインとは別のメモリチャネルの「RSP_R」ラインで送信される。
【0038】
ブロック412で、応答データが関連する1つの不揮発性読み取りコマンドに利用可能であることを示すRD_RDY信号が不揮発性DIMMから受信される。この実施例ではNVバッファ247(図2)である制御回路は、RD_RDY信号を受信する。それに応じて、ブロック414で、NVバッファ247は、SENDコマンドをメモリインタフェースキューに配置する。これにより、SENDコマンドは、不揮発性DIMMへの送信用にスケジュール又はキューに入れられる。
【0039】
SENDコマンドを受信すると、不揮発性DIMMメディアコントローラは、コマンドと関連する識別子を含む不揮発性読み取りコマンドで読み取られた応答データをメモリコントローラに送り返す。この実施形態における関連する識別子は、読み取りコマンドの読み取り識別子「RID」である。ブロック416で、応答データと関連する識別子がメモリコントローラの不揮発性DIMMから受信される。それに応じて、メモリコントローラのNVバッファは、関連する識別子を使用して、同じ関連する識別子を持つNVキュー内の不揮発性読み取りコマンドを識別する。ブロック418で、応答データは、不揮発性レディコマンドが生成された関連する不揮発性読み取り要求を実行するために提供される。これにより要求が満たされ、関連する不揮発性読み取りコマンドがNVキューから除去される。
【0040】
いくつかの実施形態では、ブロック404でのプロセス400は、アービタ238(図2)等のアービタを用いてメモリアクセスコマンドをスケジューリングすることを含む。一例では、プロセスは、メモリアクセスコマンドをメモリインタフェースキューに配置する前に、不揮発性読み取りコマンドを他の不揮発性読み取りコマンド又は揮発性読み取りコマンドとグループ化する。いくつかの実施形態では、ブロック414のプロセス400は、SENDコマンドをメモリインタフェースキューに配置する前に、SENDコマンドを不揮発性又は揮発性読み取りコマンドのグループとグループ化することをさらに含む。SENDコマンドの応答時間が決定的であるため、メモリインタフェースキュー214は、SENDコマンドを、通常のDDRx読み取り及び書き込み並びに不揮発性書き込み等の他のコマンドと、揮発性メモリに混合することができる。
【0041】
図5は、いくつかの実施形態による、エラーを処理するためのプロセスのフロー図である。図6及び図7は、図5のプロセスを示す一連の図600,700である。図5図7を参照すると、プロセス500は、概して、コマンドの格納と、チャネル及び不揮発性DIMMがリセットされて、エラーを訂正するために最近のコマンドがリプレイされる回復シーケンスの提供と、を処理する。ブロックが特定の順序で示されているが、この順序は限定的なものではなく、一部のブロックが継続的に並行して発生する。プロセス500は、メモリコントローラ200(図2)又は適切なNVキュー及びリプレイキューとエラー検出機能を備えた他のメモリコントローラによって実行されるのに適する。
【0042】
ブロック502において、不揮発性読み取りコマンドのコピーは、それぞれの不揮発性DIMMに送信するためにメモリインタフェースキューに配置される場合に、NVキューに格納される。これは、図600において、送信のために選択された場合にメモリインタフェースキューに行くコマンドを示す矢印601と、NVキューに格納されている不揮発性読み取りコマンドのコピーを示す矢印602で示される。他のタイプのコマンドは、ブロック504に示すように、不揮発性書き込み、揮発性書き込み、揮発性読み取り、SENDコマンド及び他のメモリアクセスコマンドを含む、リプレイキューに格納されたコピーを有する。図600の矢印603は、リプレイキューに格納されている他のコマンドを示す。ブロック502,504は、メモリコントローラがメモリアクセス要求を処理する場合に継続的に発生する。
【0043】
エラーが検出されない場合、プロセス500は、コマンドをNVキューとリプレイキューに格納し続け、これらのコマンドは、実行されてそれぞれのキューから除去されるまで保持される。ブロック506でのプロセス500は、メモリチャネル上の1つのDIMMで、回復シーケンスを必要とするエラーがあったか否かを検出し、回復シーケンスを開始し、検出されたエラーの性質に応じて、ブロック507、508又は509のうち何れかに進む。検出されたエラーがコマンドパリティエラーである場合、プロセス500は、ブロック506から、メモリチャネル上の各DIMMでパリティエラーをクリアするためのコマンドを送信するブロック507に進む。書き込み又は読み取りECCエラーが検出された場合、プロセス500は、書き込み又は読み取りECCステータスをクリアするブロック508に進む。コマンドパリティエラーと書き込み/読み取りECCエラーの両方が検出された場合、プロセス500は、チャネル上の各DIMMでパリティエラーをクリアするためのコマンドを送信するブロック509に進み、そして書き込み又は読み取りECCステータスをクリアするブロック510に進む。いくつかの実施形態では、プロセスがエラータイプを判定できない場合、エラーステータスが完全にクリアされることを確実にするために両方のエラータイプのエラーをクリアすると、ブロック509もブロック510に進む。次に、プロセス500は、回復シーケンスを継続するためにブロック511に進む。
【0044】
ブロック511において、多目的レジスタ(MPR)モードが現在アクティブである場合、それが無効になる。メモリコントローラは、ブロック512でPHYの先入れ先出し(FIFO)バッファをリセットする。ブロック514において、全ての読み取りID(RID)が、メモリチャネル及びチャネルバッファ上の不揮発性DIMMにリセットされる。いくつかの実施形態では、ブロック514は、リセットRID(RST_RID)コマンドを送信すること、レディ(RDY)応答を待機すること、SENDコマンドを送信すること、及び、不揮発性DIMMが保留中の読み取りコマンドに対してRDY応答を送信しないように、全ての未処理の読み取りがリセットされたことを確認するために、結果のデータパケットを待機すること、を含む。
【0045】
書き込みクレジットが必要な場合、ブロック516で要求され、取得される。いくつかの実施形態では、ブロック516は、書き込みステータスコマンドを送信して不揮発性DIMMに利用可能な書き込みクレジットの数を判定すること、より多くの書き込みクレジットが必要か否かを決定すること、次に、より多くの書き込みクレジットを要求及び取得することを含む。要求は、十分な書き込みクレジットが受信されるまで、複数の書き込みクレジット要求をループすることを含み得る。
【0046】
回復シーケンスの前にMPRモードがアクティブである場合、エラーが発生した場合と同じ状態で不揮発性DIMMを配置して必要なコマンドをリプレイするために、ブロック518で再び有効になる。
【0047】
この時点で、コマンドのリプレイを開始するために、回復シーケンスがリセットされ、チャネルと不揮発性DIMMの様々な部分がクリアされる。ブロック520において、プロセス500は、リプレイキューから選択されたコマンドから開始してコマンドのリプレイを開始する。いくつかの実施形態では、選択されたコマンドは、任意の揮発性読み取り、多目的レジスタ(MPR)関連コマンド、MPR関連コマンドに関連するSENDコマンド、揮発性書き込み、及び、リプレイキューにある不揮発性書き込みを含む。不揮発性読み取りに関連するSENDコマンドは、レポート及びデバッグの目的でリプレイキューに格納されるが、ブロック520で送信されない。リプレイキューにあるFLUSHコマンドもリプレイされない。
【0048】
好ましくは、ブロック506~ブロック520までのブロックは、リプレイ制御ロジック231(図2)又は同様のリプレイ制御回路の制御下で実行される。次に、プロセスは、不揮発性読み取りコマンドのリプレイを完了するために、制御をNVバッファ247に渡す。
【0049】
ブロック522において、プロセス500は、NVキューに格納された全ての不揮発性読み取りをメモリインタフェースキューに送信することにより、それらをリプレイすることを含む。好ましくは、このリプレイは、リプレイキューに格納された全ての選択されたメモリアクセスコマンドを送信した後に発生する。図4に関して説明したように、不揮発性読み取りの応答時間は非決定的であり、つまり、不揮発性読み取りのRD_RDY応答に続いて最初に送信されたSENDコマンドは、必ずしも同じ順序で再度送信されるとは限らない。この順序付けを処理するために、プロセス500は、不揮発性読み取りに関連するリプレイキューに格納されたSENDコマンドをスキップすることと、ブロック524において、回復シーケンス中に不揮発性DIMMから受信したリードレディ(RD_RDY)応答に応じて新しいSENDコマンドを生成することにより、不揮発性読み取りのために到着した場合にRD-RDY応答に応答することとを含む。この時点で、リプレイシーケンスが完了し、メモリコントローラは、リプレイシーケンスを終了して通常の動作状態に戻る。
【0050】
したがって、本明細書で説明するようなメモリコントローラ及びデータ処理システムは、不揮発性DIMMとインタフェースするメモリコントローラの能力を向上させる。さらに、本明細書のメモリコントローラは、非決定的で潜在的に長い待ち時間を有する不揮発性読み取りコマンドが実行されるまで、メモリインタフェースキューがそれらを保持する必要性を排除することにより、メモリインタフェースキューの長さを短縮する。
【0051】
図2のメモリコントローラ200又はアービタ238等のその任意の部分は、プログラムによって読み取ることができ、集積回路を製造するために直接的又は間接的に使用できるデータベース又は他のデータ構造の形式にあるコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ツールによって読み取られ、合成ツールは、記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成し得る。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。次に、ネットリストは、マスクに適用される幾何学形状を記述するデータセットを生成するように配置及びルーティングされ得る。次いで、マスクは、集積回路を生成するために様々な半導体製造工程において使用されてもよい。代替として、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(GDS)IIデータであり得る。
【0052】
特定の実施形態が説明されているが、これらの実施形態に対する様々な変更が当業者には明らかであろう。例えば、メモリチャネルコントローラ210の内部アーキテクチャ及び/又はパワーエンジン250は、異なる実施形態において変化し得る。メモリコントローラ200は、例えば高帯域幅メモリ(HBM)、RAMバスDRAM(RDRAM)等のような、NVDIMM-Pメモリ以外の他のタイプのメモリにインタフェースし得る。図示した実施形態は、別々のDIMMに対応する各ランクのメモリを示しているが、他の実施形態において、各DIMMは、複数のランクをサポートすることができる。さらに、異種メモリチャネルが一般にサポートされるが、チャネルは、不揮発性DIMMで完全に満たされる場合がある。さらに、回復及びリプレイを達成するために2つの個別のキューが説明されているが、いくつかの実施形態では、単一の専用ストレージキューが使用される。
【0053】
したがって、開示された実施形態の範囲内に収まる開示された実施形態の全ての変更を網羅することが、添付の特許請求の範囲によって意図される。
【要約】
メモリアクセスコマンドは、メモリインタフェースキューに配置され、メモリインタフェースキューから、揮発性デュアルインラインメモリモジュール(DIMM)及び不揮発性DIMMに結合された異種メモリチャネルに送信される。メモリインタフェースキューに配置された、選択されたメモリアクセスコマンドは、リプレイキューに格納される。メモリインタフェースキューに配置された不揮発性読み取りは、不揮発性コマンドキュー(NVキュー)に格納される。本方法は、異種メモリチャネルを介して受信した情報に基づいて、回復シーケンスを必要とするエラーが発生したことを検出する。エラーに応じて、本方法は、(i)リプレイキューに格納された、選択されたメモリアクセスコマンドを送信することと、(ii)NVキューに格納された不揮発性読み取りを送信することと、を含む回復シーケンスを開始する。
【選択図】図7
図1
図2
図3
図4
図5
図6
図7