JP7195486B1 - 異種メモリシステムに対するシグナリング - Google Patents

異種メモリシステムに対するシグナリング Download PDF

Info

Publication number
JP7195486B1
JP7195486B1 JP2022540334A JP2022540334A JP7195486B1 JP 7195486 B1 JP7195486 B1 JP 7195486B1 JP 2022540334 A JP2022540334 A JP 2022540334A JP 2022540334 A JP2022540334 A JP 2022540334A JP 7195486 B1 JP7195486 B1 JP 7195486B1
Authority
JP
Japan
Prior art keywords
memory
volatile
queue
commands
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022540334A
Other languages
English (en)
Other versions
JP2023500741A (ja
Inventor
アール. マグロ ジェームズ
バラクリシュナン ケダーナシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of JP7195486B1 publication Critical patent/JP7195486B1/ja
Publication of JP2023500741A publication Critical patent/JP2023500741A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

Figure 0007195486000001
メモリコントローラは、異種メモリチャネルを介して不揮発性記憶クラスメモリ(SCM)モジュールとインタフェースし、メモリアクセスコマンドを受信するためのコマンドキューを含む。メモリインタフェースキューは、発信コマンドを保持するためのコマンドキューに結合される。不揮発性コマンドキューは、メモリインタフェースキューに配置された不揮発性読み込みコマンドを記憶するためのコマンドキューに結合される。アービタは、コマンドキューからエントリを選択し、異種メモリチャネル上での伝送のためにメモリインタフェースにエントリを配置する。制御回路は、応答データが不揮発性読み込みコマンドに対して利用可能であることを示す準備完了応答を不揮発性SCMモジュールから受信し、準備完了応答を受信したことに応じて、応答データを送信するよう不揮発性SCMモジュールに命令するための送信コマンドがメモリインタフェースキューに配置されるようにするために異種メモリチャネルに結合される。
【選択図】図4

Description

コンピュータシステムは、典型的には、メインメモリに対して、安価且つ高密度のダイナミックランダムアクセスメモリ(DRAM)チップを使用する。今日販売されているほとんどのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって公布されている様々なダブルデータレート(DDR)DRAM規格との互換性を有する。公開されたDDR標準規格に従って、様々なメモリアクセスエージェントとDDR DRAMとの間のインタフェースを管理するためにDDRメモリコントローラが使用される。
永続性記憶装置を有する不揮発性デュアルインラインメモリモジュール(NVDIMM-P)は、永続性メモリを含むことを除き、標準的なDDR DIMMの代わりに使用することができる記憶クラスメモリである。しかしながら、それらのメモリは、非決定的なアクセス待ち時間を有し、不揮発性メモリへのアクセスを一時的に遅延させることがあるオンボード媒体管理活動を有することがあり、よって、それらのメモリは、ハンドシェイクプロトコルがNVDIMM-Pからのデータの可用性に関してホストコントローラに通知することを必要とする。JEDECは、順序通りでない(アウトオブオーダな)トランザクションを有効にし、コマンドをスタックする能力をもたらすよう、この非決定性の性能の影響を軽減するトランザクションのプロトコルを開発している。
従来技術において既知のアクセラレーテッドプロセシングユニット(APU)及びメモリシステムを形成するブロック図である。 いくつかの実施形態による、図1のようなAPUでの使用に適したメモリコントローラを形成するブロック図である。 いくつかの実施形態による、メモリチャネル及びAPUのペアを形成するブロック図である。 いくつかの実施形態による、メモリアクセスコマンドを扱う処理を形成する図である。 図4の処理の更なる部分を形成する図である。 図4及び図5の処理の更なる部分を形成する図である。 いくつかの実施形態による、メモリアクセス要求を扱う処理のフローチャートである。
以下の説明において、異なる図面での同じ符号の使用は、類似又は同一のアイテムを示す。他に述べられない限り、「結合される(coupled)」という用語及びその関連する動詞の形式は、本分野において既知の手段による直接接続及び間接電気接続の両方を含み、他に述べられない限り、直接接続という記載は、適切な形式の間接電気接続も使用した代替的な実施形態を暗に意味する。
メモリコントローラは、少なくとも1つの不揮発性記憶クラスメモリ(SCM)モジュールとインタフェースする。メモリコントローラは、コマンドキューと、メモリインタフェースキューと、不揮発性コマンドキュー(NVキュー)と、アービタと、制御回路と、を含む。コマンドキューは、揮発性メモリ読み込み、揮発性メモリ書き込み、不揮発性メモリ読み込み及び不揮発性メモリ書き込みを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有する。メモリインタフェースキューは、コマンドキューの出力に結合された入力と、少なくとも1つの不揮発性SCMモジュールに結合された異種メモリチャネルに結合するための出力と、を有する。NVキューは、メモリインタフェースキューに配置された不揮発性読み込みコマンドを記憶するためのコマンドキューの出力に結合される。アービタは、コマンドキューからエントリを選択し、メモリインタフェースキューにエントリを配置して、異種メモリチャネルを通じてエントリが伝送されるようにするためのコマンドキューに結合される。制御回路は、不揮発性読み込みコマンドの関連する1つに対して応答データが利用可能であることを示す準備完了応答(ready response)を不揮発性SCMモジュールから受信し、それに応じて、応答データを送信するよう不揮発性SCMモジュールに命令するための送信コマンドがメモリインタフェースキューに配置されるようにするための異種メモリチャネルに結合されるように適合される。
方法は、揮発性メモリ読み込み、揮発性メモリ書き込み、不揮発性メモリ読み込み及び不揮発性メモリ書き込みを含む複数のメモリアクセス要求を受信することを含む。メモリアクセス要求を実行するためのメモリアクセスコマンドは、メモリインタフェースキューに配置され、メモリインタフェースキューから、不揮発性記憶クラスメモリ(SCM)モジュールに接続された異種メモリチャネルにメモリアクセスコマンドを伝送する。方法は、メモリインタフェースキューに配置された不揮発性読み込みコマンドをNVキューに記憶することを含む。応答データが不揮発性読み込みコマンドの関連する1つに対して利用可能であることを示す準備完了応答が不揮発性SCMモジュールから受信される。それに応じて、方法は、応答データを送信するよう不揮発性SCMモジュールに命令するための送信コマンドをメモリインタフェースキューに配置することを含む。
データプロセシングシステムは、セントラルプロセシングユニット、セントラルプロセシングユニットに結合されたデータファブリック、及び、セントラルプロセシングユニットからのメモリ要求を実行するためのデータファブリックに結合されたメモリコントローラを含む。メモリコントローラは、コマンドキューと、メモリインタフェースキューと、NVキューと、アービタと、制御回路と、を含む。コマンドキューは、揮発性メモリ読み込み、揮発性メモリ書き込み、不揮発性メモリ読み込み及び不揮発性メモリ書き込みを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有する。メモリインタフェースキューは、コマンドキューの出力に結合された入力と、少なくとも1つの不揮発性SCMモジュールに結合された異種メモリチャネルに結合するための出力と、を有する。NVキューは、メモリインタフェースキューに配置された不揮発性読み込みコマンドを記憶するためのコマンドキューの出力に結合される。アービタは、コマンドキューからエントリを選択し、エントリをメモリインタフェースキューに配置し、異種メモリチャネルを通じてエントリが伝送されるようにするためのコマンドキューに結合される。制御回路は、不揮発性読み込みコマンドの関連する1つに対して応答データが利用可能であることを示す準備完了応答を不揮発性SCMモジュールから受信し、準備完了応答が受信されたことに応じて、応答データを送信するよう不揮発性SCMモジュールを命令するための送信コマンドがメモリインタフェースキューに配置されるようにするための異種メモリチャネルに結合されるように適合される。
図1は、従来技術において既知のアクセラレーテッドプロセシングユニット(APU)100及びメモリシステム130を形成するブロック図を示す。APU100は、ホストデータプロセシングシステムにおけるプロセッサとしての使用に適切な集積回路であり、セントラルプロセシングユニット(CPU)コアコンプレックス110と、グラフィックコア120と、ディスプレイエンジン122のセットと、メモリ管理ハブ140と、データファブリック125と、周辺機器コントローラ160のセットと、周辺機器バスコントローラ170のセットと、システム管理ユニット(SMU)180と、を全体的に含む。
CPUコアコンプレックス110は、CPUコア112及びCPUコア114を含む。この実施例では、CPUコアコンプレックス110は、2つのCPUコアを含むが、他の実施形態では、CPUコアコンプレックス110は、任意の数のCPUコアを含んでもよい。CPUコア112,114の各々は、制御ファブリックを形成する、システム管理ネットワーク(SMN)に双方向に接続され、データファブリック125に接続され、データファブリック125にメモリアクセス要求を提供する能力を有する。CPUコア112,114の各々は、ユニタリコア(unitary core)であってもよく、又は更に、キャッシュ等の特定のリソースを共有する2つ以上のユニタリコアを有するコアコンプレックスであってもよい。
グラフィックコア120は、高度に統合され、且つ、並列の方式において頂点処理、フラグメント処理、シェーディング及びテキスチャ混合等のグラフィック演算を実行する能力を有する高性能のグラフィックプロセシングユニット(GPU)である。グラフィックコア120は、SMN及びデータファブリック125に双方向に接続され、データファブリック125にメモリアクセス要求を提供する能力を有する。この点で、APU100は、CPUコアコンプレックス110及びグラフィックコア120が同一のメモリ空間を共有する統一したメモリアーキテクチャ、又は、CPUコアコンプレックス110及びグラフィックコア120がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができると共に、グラフィックコア120も、CPUコアコンプレックス110によってアクセス可能でないプライベートグラフィックメモリを使用する。
ディスプレイエンジン122は、モニタ上での表示のためにグラフィックコア120によって生成されたオブジェクトをレンダリング及びラスタライズする。グラフィックコア120及びディスプレイエンジン122は、メモリシステム130における適切なアドレスへの一様な変換のために共通メモリ管理ハブ140に双方向に接続され、メモリ管理ハブ140は、そのようなメモリアクセスを生じさせ、メモリシステムから返された読み込みデータを受信するためにデータファブリック125に双方向に接続される。
データファブリック125は、何れかのメモリアクセスエージェントとメモリ管理ハブ140との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック125は、システム構成と共に仮想接続ごとのバッファに基づいてメモリアクセスの宛先を判定するための、基本入力/出力システム(BIOS)によって定義されたシステムメモリマップを含む。
周辺機器コントローラ160は、ユニバーサルシリアルバス(USB)コントローラ162及びシリアルアドバンストテクノロジアタッチメント(SATA)インタフェースコントローラ164を含み、その各々は、システムハブ166及びSMNバスに双方向に接続される。それらの2つのコントローラは、APU100において使用することができる周辺機器コントローラの例示にすぎない。
周辺機器バスコントローラ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についてのソフトウェア及びファームウェアは、システムデータドライブ又はシステムBIOSメモリ(図示省略)に記憶され、それらは、リードオンリメモリ(ROM)及びフラッシュ電気的消去可能プログラマブルROM(EEPROM)等の様々な不揮発性メモリタイプの何れかであってもよい。典型的には、BIOSメモリは、SATAインタフェースを通じてPCIeバス及びシステムデータドライブを通じてアクセスされる。
SMU180は、APU100上のリソースの動作を制御し、それらの間で通信を同期するローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット信号、イネーブル信号及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素の各々に対してクロック信号を提供するための、位相ロックループ(PLL)等の1つ以上のクロックソース(図示省略)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックについての電力を管理し、適切な電力状態を判定するよう、CPUコア112,114及びグラフィックコア120から測定済み電力消費値を受信してもよい。
メモリ管理ハブ140及びその関連する物理インタフェース(PHY)151,152は、この実施形態では、APU100と統合される。メモリ管理ハブ140は、メモリチャネル141,142及び電力エンジン149を含む。メモリチャネル141は、ホストインタフェース145、メモリチャネルコントローラ143及び物理インタフェース147を含む。ホストインタフェース145は、シリアルプレゼンス検出リンク(SDP)を通じてデータファブリック125にメモリチャネルコントローラ143を双方向に接続する。物理インタフェース147は、PHY151にメモリチャネルコントローラ143を双方向に接続し、DDR PHYインタフェース(DFI)仕様に準拠する。メモリチャネル142は、ホストインタフェース146、メモリチャネルコントローラ144及び物理インタフェース148を含む。ホストインタフェース146は、別のSDPを通じてデータファブリック125にメモリチャネルコントローラ144を双方向に接続する。物理インタフェース148は、PHY152にメモリチャネルコントローラ144を双方向に接続し、DFI仕様に準拠する。電力エンジン149は、SMNバスを通じてSMU180に、APBを通じてPHY151,52に双方向に接続され、また、メモリチャネルコントローラ143,144に双方向に接続される。PHY151は、メモリチャネル131への双方向接続を有する。PHY152は、メモリチャネル133への双方向接続を有する。
メモリ管理ハブ140は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、以下に更に説明する方式においてメモリチャネルコントローラ143及びメモリチャネルコントローラ144の両方の動作を制御するために共有電力エンジン149を使用する。メモリチャネル141,142の各々は、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックDDRバージョン5(gDDR5)及び高帯域幅メモリ(HBM)等の最新のDDRメモリに接続してもよく、後のメモリ技術に対して適合されてもよい。それらのメモリは、高バス帯域幅及び高速動作をもたらす。同時に、それらは、ラップトップコンピュータ等のバッテリー動作用途に対して電力を節約するための低電力モードをもたらし、また、ビルトイン温度監視をもたらす。
メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、この実施例では個別のランクに対応する代表的なデュアルインラインモジュール(DIMM)134,136,138を含む、DDRxバス132に接続されたDIMMのセットを含む。同様に、メモリチャネル133は、代表的なDIMM135,137,139を含む、DDRxバス129に接続されたDIMMのセットを含む。
APU100は、ホストデータプロセシングシステムのセントラルプロセシングユニット(CPU)として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを設ける。それらのインタフェースは、2つのダブルデータレート(DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルートコンプレックス、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶装置へのインタフェースを含む。
また、APU100は、様々なシステム監視及び電力節約機能を実装する。特に、1つのシステム監視機能は、温度監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112,114及び/又はグラフィックコア120の周波数及び電圧を低減させてもよい。APU100が高温になりすぎる場合、APU100が全体的にシャットダウンされてもよい。温度イベントも、SMNバスを介してSMU180によって外部センサから受信されてもよく、SMU180は、それに応じて、クロック周波数及び/又は電力供給電圧を低減させてもよい。
図2は、図1のAPUのような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を全体的に含む。
インタフェース212は、外部バスを通じたデータファブリック125への第1の双方向接続と、出力と、を有する。メモリコントローラ200では、この外部バスは、「AXI4」として既知のARM Holdings,PLC of Cambridge,Englandによって規定されたアドバンストエクステンシブインタフェースバージョン4と互換性を有するが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース212は、FCLK(又は、MEMCLK)ドメインとして既知の第1のクロックドメインから、UCLKドメインとして既知のメモリコントローラ200の内部の第2のクロックドメインにメモリアクセス要求を変換する。同様に、メモリインタフェースキュー214は、UCLKドメインからDFIインタフェースと関連付けられたDFICLKドメインへのメモリアクセスをもたらす。
アドレスジェネレータ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)順序付けルール等の順序付けルールを施行するための情報を含む。
誤り訂正符号(ECC)生成ブロック244は、NVDIMM-Pに送信される書き込みデータのECCを判定する。ECC検査回路242は、入来するECCに対して受信済みECCを検査する。
リプレイキュー230は、アドレス及びコマンドパリティ応答等の応答を待っているアービタ238によってピックされた選択済みメモリアクセスを記憶するための一時的なキューである。リプレイ制御ロジック231は、戻されたECCが正確であるか又は誤りを示すかどうかを判定するためにECC検査回路242にアクセスする。リプレイ制御ロジック231は、それらのサイクルの1つのパリティ又はECC誤りのケースではアクセスがリプレイされるリプレイシーケンスを開始及び制御する。リプレイされたコマンドは、メモリインタフェースキュー214に配置される。
リフレッシュロジック232は、メモリアクセスエージェントから受信した通常の読み込み及び書き込みメモリアクセス要求とは別に生成された様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルについての状態機械を含む。例えば、メモリランクがプリチャージパワーダウンにある場合、それは、リフレッシュサイクルを稼働させるよう周期的にアウェイクされる必要がある。リフレッシュロジック232は、DRAMチップ内のメモリセルのストレージキャパシタの電荷漏れによって生じるデータ誤りを防止するために、リフレッシュコマンドを周期的に生成する。加えて、リフレッシュロジック232は、システムにおける温度変化に起因したオンダイ終端抵抗における不整合を防止するために、ZQを周期的に較正する。
アービタ238は、コマンドキュー220に双方向に接続され、メモリチャネルコントローラ210の中心である。それは、メモリバスの使用を改善するためのアクセスのインテリジェントなスケジューリングによって効率性を改善する。アービタ238は、DRAMタイミングパラメータに基づいてコマンドキュー220における特定のアクセスが発行のために適格であるかどうかを判定することによって、適切なタイミング関係を施行するためにタイミングブロック234を使用する。例えば、各々のDRAMは、「tRC」として既知である、活性化コマンドの間の最小の規定された時間を有する。タイミングブロック234は、JEDEC仕様において規定されたこのタイミングパラメータ及び他のタイミングパラメータに基づいて、適格性を判定するカウンタのセットを維持し、リプレイキュー230に双方向に接続される。ページテーブル236は、アービタ238についてのメモリチャネルのバンク及びランクごとにアクティブページに関する状態情報を維持し、リプレイキュー230に双方向に接続される。
NVバッファ247は、リプレイシーケンスにおける使用のため、及び、NV読み込み応答を管理するための両方で、NV読み込みコマンドをNVキュー248に記憶する。NVバッファ247は、以下に更に説明するように、RD_RDY及びSENDコマンドを扱うためにメモリインタフェースキュー214に双方向に接続される。
インタフェース212から受信した書き込みメモリアクセス要求に応じて、ECC生成ブロック244は、書き込みデータに従ってECCを計算する。データバッファ246は、受信したメモリアクセス要求についての書き込みデータ及びECCを記憶する。アービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスをピックする場合、それは、メモリインタフェースキュー214に結合済み書き込みデータ/ECCを出力する。
電力コントローラ250は、アドバンストエクステンシブルインタフェース、バージョン1(AXI)、アドバンストペリフェラルバス(APB)インタフェース254、及び、電力エンジン260へのインタフェース252を全体的に含む。インタフェース252は、図2において別に示された「イベント_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デバイスに継続したメモリアクセスストリームを提供する。
メモリチャネルコントローラ210は、関連するメモリチャネルへのディスパッチのためにそれがメモリアクセスをピックすることを可能にする回路を含む。所望の調停決定を行うために、アドレスジェネレータ222は、メモリシステムにおけるランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含む、アドレス情報を事前復号済み情報に復号し、コマンドキュー220は、事前復号済み情報を記憶する。構成レジスタ262は、アドレスジェネレータ222が受信済みアドレス情報をどのように復号するかを判定するための構成情報を記憶する。アービタ238は、メモリアクセスを効率的にスケジュールする一方で、サービス品質(QoS)要件等の他の基準を観察するために、復号済みアドレス情報、タイミングブロック234によって示されたタイミング適格性情報、及び、ページテーブル236によって示されたアクティブページ情報を使用する。例えば、アービタ238は、メモリページを変更するために必要とされるプリチャージ及び活性化コマンドのオーバヘッドを回避するために、ページをオープンするためのアクセスについてのプリファレンスを実装し、別のバンクへの読み込み及び書き込みアクセスとそれらをインタリーブすることによって、1つのバンクへのオーバヘッドアクセスを隠蔽する。特に、通常の動作の間、アービタ238は、異なるページを選択する前にそれらがプリチャージされる必要があるまで、異なるバンクにおけるページオープンを通常維持する。
図3は、いくつかの実施形態による、データプロセシングシステム300を形成するブロック図を示す。データプロセシングシステム300は、メモリシステム330及びAPU310を含む。APU310は、メモリシステム330とインタフェースするために異種メモリチャネルをサポートするメモリコントローラ200(図2)のようなメモリコントローラを含む。通常のDDRxメモリチャネルに加えて、APU310は、バス342を通じて接続されたRDIMM344,346,348のみを有する同種メモリチャネル340に加えて、通常の登録された(registered)DIMM又はRDIMM334,336及びNVDIMM-P338の両方を有する異種メモリチャネル330上のNVDIMM-P338をサポートする。この実施形態では、異種メモリチャネル330は、NVDIMM-P及びRDIMMの両方に接続する一方で、異種メモリチャネルは、いくつかの実施形態では、全てのNVDIMM-PタイプDIMMとインタフェースする能力を有する。
ドラフトNVDIMM-P標準規格に従って、APU310上のメモリコントローラとNVDIMM-P338との間のトランザクションは、「リンク」ECCによって保護される。リンクECCは、バス332を通じてメモリコントローラとNVDIMMとの間のデータ転送についてのデータ整合性を保証する。既知のECC機構に従って、それは、ランダム又は過渡的な誤りによって生じるリンク上のデータ損失に対して保護する。保護は、使用されるECCコードに従って変動する。ECCは、複数のビット誤り検出により単一のビット訂正を可能にすることができる。訂正不能誤りを検出したことに応じて、メモリコントローラは、過渡的又はランダムな誤りが持続しないようにトランザクションをリプレイしてもよく、また、訂正可能及び訂正不能誤りをオペレーティングシステムに報告してもよい。
この実施形態では、NVDIMM-PタイプDIMMが説明されると共に、他の実施形態は、異種メモリチャネルを通じて他のタイプの記憶クラスメモリ(SCM)モジュールをインタフェースするために、本明細書における技術を採用する。本明細書で使用されるように、SCMは、システムメモリ空間内でアドレス指定可能な不揮発性メモリを有するメモリモジュールを示す。SCMモジュールにおける不揮発性メモリは、RAMによりバッファされてもよく、及び/又は、SCMモジュールで、オンボードでRAMと対にされてもよい。SCMメモリアドレスマップは、オペレーティングシステム(OS)の観点から、従来のDRAMポピュレーションと並んで(alongside)いるように見える。OSは、通常、SCMにより定義されたアドレス範囲が従来のメモリとは「異なる」タイプのメモリであることを認識する。この違いは、このメモリがより潜在的であり、一貫した品質を有することができることをOSに通知することである。OSは、ダイレクトアクセスメモリ又はファイルシステムアクセスメモリとしてSCMメモリをマッピングしてもよい。ダイレクトアクセスは、物理アドレス指定可能メモリとしてOSがSCMアドレス範囲にアクセスすることを意味する。ファイルシステムアクセスは、OSが、ファイルシステムの一部として一貫したメモリを管理すること、及び、ファイルベースのAPIを介してSCMへのアクセスを管理することを意味する。最終的に、要求は、より上位レベルにおけるOSがアクセスをどのように管理するかとは独立して、SCMアドレス範囲内でメモリコントローラに達する。
図4~図6は、いくつかの実施形態による、不揮発性読み込みコマンドを扱う処理700(図7)を示すシーケンスの図である。表される処理は、XREADコマンド等のNV読み込みコマンドを保持して、コマンドの実行を完了するため及びコマンドのリプレイを必要とする誤りが発生する場合にリプレイ処理に対してコマンドを利用可能にするためのNVキュー248の使用を含む。図4~図6は、図7を参照して説明される。
図7は、いくつかの実施形態による、メモリアクセスコマンドを扱う処理700のフローチャートである。処理700は、図2のメモリコントローラ200又は他のメモリコントローラアレイによる実装態様に適切である。処理700は、ブロック702において開始し、処理は、揮発性メモリ読み込み、揮発性メモリ書き込み、不揮発性メモリ読み込み及び不揮発性メモリ書き込みを含む複数のメモリアクセス要求を受信する。要求を実行するためのメモリアクセスコマンドは、ブロック704において復号され、コマンドキュー220(図2)等のコマンドキューに配置される。
ブロック706において、コマンドキューからのメモリアクセスコマンドは、異種メモリチャネルを通じて伝送のために選択される。選択は、典型的には、アービタ238(図2)等のアービタによって実行される。伝送される選択済みメモリアクセスコマンドは、メモリインタフェースキューに配置される。この例は、図4に示され、矢印401は、メモリインタフェースキューに配置されるコマンドを表す。ブロック708において、処理700は、メモリインタフェースキューに配置される不揮発性読み込みコマンドをNVキュー248(図2)等の不揮発性コマンドキュー(NVキュー)に記憶する。この例は、矢印402において示され、メモリインタフェースキューに伝送されたXREADコマンドがNVキューに記憶される。メモリインタフェースキューからのメモリアクセスコマンドは、揮発性デュアルインラインメモリモジュール(DIMM)及び不揮発性DIMMに結合された異種メモリチャネルを通じて伝送される。メモリインタフェースキューからのメモリアクセスコマンドの伝送は、異種メモリチャネルを通じて不揮発性DIMMにXREADコマンドを渡すことを示す矢印403によって表され、このケースでは、NVDIMM-Pは、媒体コントローラ、不揮発性媒体及びDRAMを含む。
異種メモリチャネルを通じて伝送された不揮発性読み込みコマンドについて、不揮発性DIMMは、典型的には、要求されたデータを読み込む予測不能処理に起因した非決定的期間の後に応答し、要求されたデータは、不揮発性DIMMにおける不揮発性メモリ、不揮発性DIMMにおけるDRAM、又は、媒体コントローラにおけるキャッシュにあってもよい。非決定的期間の間、他のメモリアクセスコマンドは、典型的には、メモリインタフェースキューから実行及び除去される。不揮発性DIMMにおける媒体コントローラが要求されたデータを読み込む処理を完了する場合、それは、メモリコントローラに準備完了応答信号「RD_RDY」を送信する。典型的には、RD_RDY信号は、メモリインタフェースキューがメモリアクセスコマンドへの応答を受信するサブチャネルではなく、異種メモリチャネルの別のサブチャネル上で送信及び受信される。例えば、NVDIMM-Pメモリチャネルにより、RD_RDY信号は、典型的には、コマンド及びデータが伝送される「CMD」及び「DQ」ラインとは別のメモリチャネルの「RSP_R」ライン上で送信される。
ブロック712において、応答データが不揮発性読み込みコマンドの関連する1つに対して利用可能であることを示すRD_RDY信号が不揮発性DIMMから受信される。この実施例では、NVバッファ制御回路である制御回路は、RD_RDY信号を受信する。図5における矢印404は、不揮発性DIMMからNVバッファ制御回路に渡すRD_RDY信号を表す。それに応じて、ブロック714において、制御回路は、矢印405によって表されるように、メモリインタフェースキューにSENDコマンドを配置する。SENDコマンドは、それによって、図6における矢印406によって表されるように、不揮発性DIMMへの伝送に対してスケジュール又はクエリされる。SENDコマンドが到達する場合に応答データが不揮発性DIMMから送信される準備ができていることを理由に、SENDコマンドは、決定的応答時間を有し、したがって、SENDコマンドは、メモリインタフェースキュー動作に非決定的遅延を追加しない。コマンドが実行されるまで不揮発性読み込みコマンドがNVキューではなくメモリインタフェースキューに保持された場合、それは、メモリインタフェースキューを「クロッグ(clog)」し、他のコマンドの処理を遅延させ、コマンドの処理全体に遅延を加える。
SENDコマンドを受信すると、不揮発性DIMM媒体コントローラは、コマンドについての関連する識別子を含む不揮発性読み込みコマンドに対して読み込まれた応答データをメモリコントローラに伝送し返す。関連する識別子は、この実施形態では、メモリコントローラに伝送されたデータ及びRIDを示す、図6における矢印407によって表されるように、読み込みコマンドについての読み込み識別子「RID」である。
ブロック716において、応答データ及び関連する識別子は、メモリコントローラによって不揮発性DIMMから受信される。それに応じて、メモリコントローラのNVバッファは、同一の関連する識別子によりNVキュー内の不揮発性読み込みコマンドを識別するために、関連する識別子を使用する。ブロック718において、応答データは、それに対して不揮発性即時コマンドが生成された関連する不揮発性読み込み要求の実行において提供される。これによって要求を実行し、関連する不揮発性読み込みコマンドは、矢印408に表されるようなNVキュー及びNVキュー内のクロスアウトされたXREADコマンドから除去される。
いくつかの実施形態では、処理700は、アービタ238(図2)等のアービタによりメモリアクセスコマンドをスケジュールすることを含む。1つの実施例では、メモリインタフェースキューにメモリアクセスコマンドを配置する前に、処理は、他の不揮発性読み込みコマンド又は揮発性読み込みコマンドと不揮発性読み込みコマンドをグループ化する。このグループ化は、図4に表され、矢印401は、新たな順序においてメモリインタフェースキューに配置されたメモリアクセスコマンドを示し、READ(揮発性読み込みコマンド)及びXREAD(不揮発性読み込みコマンドのタイプ)コマンドは、共にグループ化され、WRITE(揮発性書き込みコマンド)及びXWRITE(不揮発性書き込みコマンドのタイプ)コマンドは、共にグループ化される。
いくつかの実施形態では、ブロック714における処理700は、メモリインタフェースキューにSENDコマンドを配置する前に、不揮発性又は揮発性読み込みコマンドのグループとSENDコマンドをグループ化し、その後、メモリインタフェースキューに送信コマンドを配置することを更に含む。これは、図5の矢印405において表され、SENDコマンドは、READコマンドのグループに配置される。
よって、本明細書で説明するメモリコントローラ及びデータプロセシングシステムは、異種メモリチャネル上の不揮発性DIMMとインタフェースするメモリコントローラの能力を改善する。その上、本明細書におけるメモリコントローラは、メモリインタフェースキューが実行されるまで、長い期間の間にメモリインタフェースキューが不揮発性読み込みコマンドを保持する必要性を除去することによって、メモリインタフェースキューに対して必要な長さを低減させる。
図2のメモリコントローラ200又はアービタ238等のその何れかの部分は、プログラムによって読み取ることができ、集積回路を製造するために直接的又は間接的に使用することができるデータベース又は他のデータ構造の形式にあるコンピュータアクセス可能データ構造によって記述され又は表されてもよい。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(HDL)においてハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ツールによって読み取られてもよく、合成ツールは、記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成してもよい。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストは、マスクに適用される幾何学形状を記述するデータ集合を生成するように、配置又はルーティングされてもよい。次に、マスクは、集積回路を生成するために様々な半導体製造工程において使用されてもよい。代わりに、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じてネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(GDS)IIデータであり得る。
特定の実施形態が説明されてきたが、これらの実施形態に対する様々な変更例が当業者には明らかであろう。例えば、メモリチャネルコントローラ210の内部アーキテクチャ及び/又は電力エンジン250は、異なる実施形態において変化してもよい。メモリコントローラ200は、高帯域幅メモリ(HBM)及びRAMbus DRAM(RDRAM)等、NVDIMM-P及びDDRxに加えて他のタイプのメモリにインタフェースしてもよい。図示した実施形態は、別々のDIMMに対応する各ランクのメモリを示したが、他の実施形態において、各DIMMは、複数のランクをサポートすることが可能である。更に、異種メモリチャネルが概してサポートされるが、異種チャネルは、全体的に、揮発性DIMMにより全体的に満たされてもよい。更に、本明細書で説明する実施例のタイプの不揮発性読み込みコマンドは、XREADコマンドであると共に、他のタイプの不揮発性読み込みコマンドがサポートされる。例えば、NVDIMM-P仕様は、要求されたメモリが不揮発性DIMM上のDRAMにおいて発見されるが、要求されたメモリがDRAMにおいて利用可能でなく、代わりに、それが不揮発性メモリ媒体から読み込まれる必要があると不揮発性DIMMが判定する場合に非決定的応答時間により不揮発性読み込みとして解釈される場合、決定的応答時間を有する投機的読み込み(SREAD)コマンドを提供する。いくつかの実施形態では、そのような「ミス」が発生する場合、SREADコマンドもNVキューに追加され、次いで、XREADと同様に扱われる。
したがって、開示された実施形態の範囲内に収まる開示された実施形態の全ての変更を網羅することが、添付の特許請求の範囲によって意図される。

Claims (15)

  1. メモリコントローラであって、
    揮発性メモリ読み込み、揮発性メモリ書き込み、不揮発性メモリ読み込み及び不揮発性メモリ書き込みを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有するコマンドキューと、
    前記コマンドキューの出力に結合された入力と、システムメモリ空間内でアドレス指定可能な不揮発性メモリを有する少なくとも1つの不揮発性記憶クラスメモリ(SCM)モジュールに結合された異種メモリチャネルに結合された出力と、を有するメモリインタフェースキューと、
    前記メモリインタフェースキューに配置された不揮発性読み込みコマンドを記憶するために前記コマンドキューの出力に結合された不揮発性コマンドキュー(NVキュー)と、
    前記コマンドキューからエントリを選択し、エントリを前記メモリインタフェースキューに配置して、前記異種メモリチャネルを介して送信させるために前記コマンドキューに結合されたアービタと、
    関連する前記不揮発性読み込みコマンドに対して応答データが利用可能であることを示す準備完了応答を前記不揮発性SCMモジュールから受信し、前記準備完了応答を受信したことに応じて、前記応答データを送信するように前記不揮発性SCMモジュールに命令するための送信コマンドが前記メモリインタフェースキューに配置されるようにするために前記異種メモリチャネルに結合されるように構成された制御回路と、を備える、
    メモリコントローラ。
  2. 前記制御回路は、応答データ及び関連する識別子が前記不揮発性SCMモジュールから受信されたことを検出し、それに応じて、前記関連する識別子を使用して前記不揮発性キュー内の前記関連する不揮発性読み込みコマンドを識別し、前記不揮発性キューから前記関連する不揮発性読み込みコマンドを除去するように構成されている、
    請求項1のメモリコントローラ。
  3. 前記アービタは、前記メモリアクセスコマンドを前記メモリインタフェースキューに配置する前に、不揮発性メモリ読み込みコマンドを他の不揮発性読み込みコマンド又は揮発性読み込みコマンドとグループ化する、
    請求項1のメモリコントローラ。
  4. 前記アービタは、前記送信コマンドを前記メモリインタフェースキューに配置する前に、前記送信コマンドを不揮発性読み込みコマンド又は揮発性読み込みコマンドとグループ化する、
    請求項3のメモリコントローラ。
  5. 前記メモリコントローラは、前記関連する不揮発性読み込みコマンドに続く非決定的期間の後に前記準備完了応答を受信するように動作可能であり、
    前記メモリコントローラは、前記非決定的期間の間、他のメモリアクセスコマンドを実行し、前記メモリインタフェースキューから他のメモリアクセスコマンドを除去するように動作可能である、
    請求項1のメモリコントローラ。
  6. 前記制御回路は、前記メモリインタフェースキューが前記メモリアクセスコマンドへの応答を受信するサブチャネルとは別の前記異種メモリチャネルのサブチャネル上で前記準備完了応答を受信する、
    請求項1のメモリコントローラ。
  7. 揮発性メモリ読み込み、揮発性メモリ書き込み、不揮発性メモリ読み込み及び不揮発性メモリ書き込みを含む複数のメモリアクセス要求を受信することと、
    前記メモリアクセス要求を満たすためのメモリアクセスコマンドをメモリインタフェースキューに配置し、前記メモリアクセスコマンドを、前記メモリインタフェースキューから、システムメモリ空間内でアドレス指定可能な不揮発性メモリを有する不揮発性記憶クラスメモリ(SCM)モジュールに結合された異種メモリチャネルに送信することと、
    前記メモリインタフェースキューに配置された前記不揮発性読み込みコマンドを不揮発性コマンドキュー(NVキュー)に記憶することと、
    関連する前記不揮発性読み込みコマンドに対して応答データが利用可能であることを示す準備完了応答を前記不揮発性SCMモジュールから受信し、前記準備完了応答を受信したことに応じて、前記応答データを送信するように前記不揮発性SCMモジュールに命令するための送信コマンドを前記メモリインタフェースキューに配置することと、を含む、
    方法。
  8. 前記不揮発性SCMモジュールから前記応答データ及び関連する識別子を受信し、それに応じて、前記関連する識別子を使用して前記NVキュー内の前記関連する不揮発性読み込みコマンドを識別し、関連する不揮発性読み込み要求の実行において前記応答データを提供し、前記NVキューから前記関連する不揮発性読み込みコマンドを除去することをさらに含む、
    請求項7の方法。
  9. 前記メモリアクセスコマンドを前記メモリインタフェースキューに配置する前に、不揮発性読み込みコマンドを他の不揮発性読み込みコマンド又は揮発性読み込みコマンドとグループ化することをさらに含む、
    請求項7の方法。
  10. 前記送信コマンドを前記メモリインタフェースキューに配置する前に、前記送信コマンドを不揮発性読み込みコマンド又は揮発性読み込みコマンドのグループとグループ化することをさらに含む、
    請求項9の方法。
  11. 前記関連する不揮発性読み込みコマンドに続く非決定的期間の後に前記準備完了応答が受信され、
    前記非決定的期間の間、他のメモリアクセスコマンドが、実行され、前記メモリインタフェースキューから除去される、
    請求項7の方法。
  12. 前記準備完了応答は、前記メモリインタフェースキューが前記メモリアクセスコマンドへの応答を受信するサブチャネルとは別の前記異種メモリチャネルのサブチャネル上で受信される、
    請求項7の方法。
  13. データプロセシングシステムであって、
    セントラルプロセシングユニットと、
    前記セントラルプロセシングユニットに結合されたデータファブリックと、
    前記セントラルプロセシングユニットからのメモリ要求を実行するために前記データファブリックに結合されたメモリコントローラと、を備え、
    前記メモリコントローラは、
    揮発性読み込みコマンド、揮発性書き込みコマンド、不揮発性読み込みコマンド及び不揮発性書き込みコマンドを含むメモリアクセスコマンドを受信するための第1の入力と、出力と、を有し、複数のエントリを有するコマンドキューと、
    前記コマンドキューの出力に結合された入力と、システムメモリ空間内でアドレス指定可能な不揮発性メモリを有する少なくとも1つの不揮発性記憶クラスメモリ(SCM)モジュールに結合された異種メモリチャネルに結合された出力と、を有するメモリインタフェースキューと、
    前記メモリインタフェースキューに配置された不揮発性読み込みコマンドを記憶するために前記コマンドキューの出力に結合された不揮発性コマンドキュー(NVキュー)と、
    前記コマンドキューからエントリを選択し、エントリを前記メモリインタフェースキューに配置して、前記異種メモリチャネルを介して送信させるために前記コマンドキューに結合されたアービタと、
    関連する前記不揮発性読み込みコマンドに対して応答データが利用可能であることを示す準備完了応答を前記不揮発性SCMモジュールから受信し、前記準備完了応答を受信したことに応じて、前記応答データを送信するように前記不揮発性SCMモジュールに命令するための送信コマンドが前記メモリインタフェースキューに配置されるようにするために前記異種メモリチャネルに結合された制御ロジックと、を備える、
    データプロセシングシステム。
  14. 前記制御ロジックは、応答データ及び関連する識別子が前記不揮発性SCMモジュールから受信されたことを検出し、それに応じて、前記関連する識別子を使用して前記NVキュー内の前記関連する不揮発性読み込みコマンドを識別し、前記NVキューから前記関連する不揮発性読み込みコマンドを除去する、
    請求項13のデータプロセシングシステム。
  15. 前記アービタは、前記メモリアクセスコマンドを前記メモリインタフェースキューに配置する前に、不揮発性読み込みコマンドを他の不揮発性読み込みコマンド又は揮発性読み込みコマンドとグループ化する、
    請求項13のデータプロセシングシステム。
JP2022540334A 2019-12-30 2020-12-10 異種メモリシステムに対するシグナリング Active JP7195486B1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/730,070 2019-12-30
US16/730,070 US11099786B2 (en) 2019-12-30 2019-12-30 Signaling for heterogeneous memory systems
PCT/US2020/064265 WO2021138017A1 (en) 2019-12-30 2020-12-10 Signalling for heterogeneous memory systems

Publications (2)

Publication Number Publication Date
JP7195486B1 true JP7195486B1 (ja) 2022-12-23
JP2023500741A JP2023500741A (ja) 2023-01-10

Family

ID=76546262

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022540334A Active JP7195486B1 (ja) 2019-12-30 2020-12-10 異種メモリシステムに対するシグナリング

Country Status (6)

Country Link
US (2) US11099786B2 (ja)
EP (1) EP4085340A4 (ja)
JP (1) JP7195486B1 (ja)
KR (1) KR102478527B1 (ja)
CN (1) CN114902198B (ja)
WO (1) WO2021138017A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531601B2 (en) * 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
US11099786B2 (en) * 2019-12-30 2021-08-24 Advanced Micro Devices, Inc. Signaling for heterogeneous memory systems
US20230393750A1 (en) * 2022-06-01 2023-12-07 Micron Technology, Inc. Apparatus with response completion pacing
CN116301664B (zh) * 2023-05-16 2023-08-15 北京象帝先计算技术有限公司 存储器的控制器、组件、电子设备及命令缓存方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030177320A1 (en) 2002-02-25 2003-09-18 Suneeta Sah Memory read/write reordering
JP2012513647A (ja) 2008-12-23 2012-06-14 アップル インコーポレイテッド 管理型不揮発性メモリのアドレスマッピングのためのアーキテクチャー
US9996262B1 (en) 2015-11-09 2018-06-12 Seagate Technology Llc Method and apparatus to abort a command
WO2019125564A1 (en) 2017-12-22 2019-06-27 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572322B2 (en) 2010-03-29 2013-10-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
KR20150017526A (ko) 2013-08-07 2015-02-17 삼성전자주식회사 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US10572180B1 (en) * 2015-11-09 2020-02-25 Seagate Technology Llc Method and apparatus to perform a function level reset in a memory controller
US10282103B1 (en) 2015-11-09 2019-05-07 Seagate Technology Llc Method and apparatus to delete a command queue
EP3440553A1 (en) * 2016-04-04 2019-02-13 Marvell World Trade, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US10810144B2 (en) * 2016-06-08 2020-10-20 Samsung Electronics Co., Ltd. System and method for operating a DRR-compatible asynchronous memory module
US11675659B2 (en) * 2016-07-15 2023-06-13 Advanced Micro Devices, Inc. DDR memory error recovery
US10503438B1 (en) * 2018-08-24 2019-12-10 Micron Technology, Inc. Memory sub-system supporting non-deterministic commands
US11137941B2 (en) * 2019-12-30 2021-10-05 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules
US11099786B2 (en) * 2019-12-30 2021-08-24 Advanced Micro Devices, Inc. Signaling for heterogeneous memory systems
US11531601B2 (en) * 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030177320A1 (en) 2002-02-25 2003-09-18 Suneeta Sah Memory read/write reordering
JP2012513647A (ja) 2008-12-23 2012-06-14 アップル インコーポレイテッド 管理型不揮発性メモリのアドレスマッピングのためのアーキテクチャー
US9996262B1 (en) 2015-11-09 2018-06-12 Seagate Technology Llc Method and apparatus to abort a command
WO2019125564A1 (en) 2017-12-22 2019-06-27 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
JP2021507399A (ja) 2017-12-22 2021-02-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 不均一なレイテンシを有するメモリ要求のスケジューリング

Also Published As

Publication number Publication date
US20210200467A1 (en) 2021-07-01
US20210382661A1 (en) 2021-12-09
WO2021138017A1 (en) 2021-07-08
US11099786B2 (en) 2021-08-24
EP4085340A4 (en) 2023-06-14
US11748034B2 (en) 2023-09-05
KR102478527B1 (ko) 2022-12-16
JP2023500741A (ja) 2023-01-10
CN114902198A (zh) 2022-08-12
EP4085340A1 (en) 2022-11-09
CN114902198B (zh) 2023-10-27
KR20220116041A (ko) 2022-08-19

Similar Documents

Publication Publication Date Title
CN109564556B (zh) 具有条纹和读取/写入事务管理的存储器控制器仲裁器
JP7195486B1 (ja) 異種メモリシステムに対するシグナリング
US11561862B2 (en) Refresh management for DRAM
US11531601B2 (en) Error recovery for non-volatile memory modules
JP7195484B1 (ja) 不揮発性デュアルインラインメモリモジュールのコマンドリプレイ
US11694739B2 (en) Refresh management for memory
JP2024512625A (ja) アービトレーション中の書き込みバンクグループのマスク
CN115885268A (zh) Dram命令拖尾管理
CN117120992A (zh) 用于多队列存储器控制器的信用方案
CN115605853A (zh) 高效存储器总线管理
US20220405214A1 (en) Memory controller with hybrid dram/persistent memory channel arbitration

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220830

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221213

R150 Certificate of patent or registration of utility model

Ref document number: 7195486

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150