JP7181863B2 - データ処理システム、データプロセッサ及び方法 - Google Patents

データ処理システム、データプロセッサ及び方法 Download PDF

Info

Publication number
JP7181863B2
JP7181863B2 JP2019520832A JP2019520832A JP7181863B2 JP 7181863 B2 JP7181863 B2 JP 7181863B2 JP 2019520832 A JP2019520832 A JP 2019520832A JP 2019520832 A JP2019520832 A JP 2019520832A JP 7181863 B2 JP7181863 B2 JP 7181863B2
Authority
JP
Japan
Prior art keywords
memory
mode register
controller
rank
data
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
JP2019520832A
Other languages
English (en)
Other versions
JP2019536136A (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
Publication of JP2019536136A publication Critical patent/JP2019536136A/ja
Application granted granted Critical
Publication of JP7181863B2 publication Critical patent/JP7181863B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • 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/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Description

ダイナミックランダムアクセスメモリ(DRAM)チップは、サブミクロンフィーチャを有するキャパシタの大規模アレイから形成され、コンピュータシステムのメインメモリに利用されている。DRAMは、比較的安価で高密度であることにより、大量のDRAMをデバイス毎に集積化するのを可能にする。今日販売されている殆どのDRAMチップは、半導体技術協会(JEDEC:Joint Electron Devices Engineering Council)によって公表された様々なダブルデータレート(DDR)DRAM規格と互換性がある。
一部のDDRメモリチップは、温度や電圧等の動作条件の変化に合わせて特定の動作パラメータを較正するように、定期的に再較正することができる。例えば、DDR3やDDR4では、「ZQキャリブレーション」として知られる出力バッファインピーダンスの定期的な再較正が可能であり、DDR4では、「VREFDQトレーニング」として知られる内部基準電圧の定期的な再較正が可能である。さらに、DRAMチップがデュアルインラインメモリモジュール(DIMM)に含まれる場合、DRAMチップは、再較正される必要があるタイミングパラメータを有するデータバッファをオプションで含むことができる。
例えば、DDR4 DRAMチップでは、初期化中にホストDDRコントローラによってVREFDQ値を構成し、動作中にVREFDQ値を再較正することができる。VREFDQ値は、特定のモードレジスタセットコマンドを介して構成される。VREFDQは、例えば基板の過熱や電源のドリフト等のように条件が変化した場合に、動作中に再トレーニングされることが好ましい。再トレーニングは、既存のソフトウェアメカニズムを介して行われた場合に、中断され、パフォーマンスを低下させる可能性がある。また、JEDEC仕様は、DDR4 DRAMチップ上のVREFDQ値を更新するために、マルチモードレジスタセットコマンドの特定のシーケンスを必要とし、当該シーケンス中に他のDRAMコマンドが介在するのを許可しない。現在のJEDEC規格では、例えばハードウェアデバッグツール等のスクリプトツールを介してシングルテストモードレジスタコマンドを利用することが困難である。
いくつかの実施形態による、データ処理システムのブロック図である。 図1のデータ処理システムでの使用に適したアクセラレーテッドプロセッシングユニット(APU:accelerated processing unit)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適したメモリコントローラ及び関連する物理インタフェース(PHY)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適した他のメモリコントローラ及び関連するPHYのブロック図である。 いくつかの実施形態による、メモリコントローラのブロック図である。 いくつかの実施形態による、モードレジスタセット書き込みコマンドを有効にするための状態遷移図である。 いくつかの実施形態による、ダブルデータレートデータバッファ動作についての状態遷移図である。 いくつかの実施形態による、図5のメモリコントローラによって使用され得るダブルデータレート動作についてのフロー図である。 いくつかの実施形態による、図5のメモリコントローラによって使用され得るデータバッファ制御動作についてのフロー図である。 いくつかの実施形態による、図5のメモリコントローラによって使用され得る多目的レジスタのコンテンツ検索についてのフロー図である。 いくつかの実施形態による、ある範囲の入力値に応じてDRAMの出力値をグラフィカルに表示する2次元データアイを示す図である。
以下の説明では、異なる図面において同じ参照番号を使用して、類似又は同一のアイテムを示している。特に断りのない限り、「接続された」という単語及びこれに関連する動詞形は、当技術分野において既知の手段による直接接続及び間接的な電気接続の両方を含む。特に断りのない限り、直接接続の説明は、適切な形態の間接的な電気接続を使用する代替の実施形態をも意味している。
一形態において以下に説明するように、データ処理システムは、メモリチャネルと、メモリチャネルに接続されたデータプロセッサと、を備える。データプロセッサは、メモリチャネルに接続されたメモリコントローラを含み、ダブルデータレートメモリの少なくとも1つのランクにアクセスするように構成されている。メモリコントローラは、受信したメモリアクセス要求を記憶するコマンドキューと、コマンドキューからメモリアクセス要求を抽出し、メモリアクセス要求をメモリチャネルに提供するアービタと、を含む。メモリアクセス要求は、所定の基準に基づいて、及び、保留中の動作を静止させるモードレジスタアクセス要求に応じて選択される。また、メモリコントローラは、モードレジスタアクセス要求に応じて、メモリバスに対する少なくとも1つの対応するモードレジスタセットコマンドを生成するモードレジスタアクセスコントローラを含む。そして、メモリコントローラは、メモリバスの制御をアービタに解放する。
別の形態では、データプロセッサは、メモリアクセスエージェントと、メモリアクセスエージェントに接続されたメモリコントローラと、を備える。メモリコントローラは、メモリシステムに接続するように構成されており、受信したメモリアクセス要求を記憶するコマンドキューと、アービタと、モードレジスタと、を含む。アービタは、モードレジスタアクセス要求に応じて、コマンドキューからメモリアクセス要求を選択的に抽出し、メモリアクセス要求をメモリチャネルに提供する。この要求は、保留中の動作を静止させるためにメモリチャネルに提供される。モードレジスタアクセスコントローラは、モードレジスタアクセス要求に応じて、メモリバスに対する少なくとも1つの対応するモードレジスタセットコマンドを生成し、次いで、メモリバスの制御をアービタに解放する。
さらに別の形態では、モードレジスタアクセスコントローラを介してメモリシステムのダブルデータレートインタフェースをマージニング及びテストする方法が記載されている。システム初期化の後に、ダブルデータレート動作を生成するための要求を受信する。ランクの現在及び保留中のダブルデータレート動作を静止させる要求を生成する。モードレジスタセットコマンドシーケンスをメモリバスで受信する。モードレジスタコマンドシーケンスの受信に応じて、第1モードレジスタコマンドシーケンスをランク内の複数のバンクに送信し、当該ランクに関連する第1パラメータの制御を取得する。後続のモードレジスタコマンドシーケンスを複数のバンクに送信して、当該ランクに関連する第1パラメータを更新する。
さらにまた別の形態では、モードレジスタアクセスコントローラを介してメモリシステムのダブルデータレートデータバッファインタフェースをマージニング及びテストする方法が記載されている。ダブルデータレートデータバッファの初期化後にバッファ制御ワード書き込みコマンドシーケンスを生成する要求を、初期化後に受信する。アービタは、現在及び保留中のダブルデータレートバッファ動作の静止を有効にする。バッファ制御ワード書き込みコマンドシーケンスを分配して、電圧パラメータ及びデータバッファタイミングパラメータのうち少なくとも1つのパラメータを変更する。
図1は、いくつかの実施形態による、データ処理システム100のブロック図である。データ処理システム100は、概して、アクセラレーテッドプロセッシングユニット(APU)の形態のデータプロセッサ110と、メモリシステム120と、周辺機器相互接続エクスプレス(PCIe)システム150と、ユニバーサルシリアルバス(USB)システム160と、ディスクドライブ170と、を含む。データプロセッサ110は、データ処理システム100の中央処理装置(CPU)として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、2つのダブルデータレート(DDRx)メモリチャネルと、PCIeリンクへの接続用のPCIeルートコンプレックスと、USBネットワークへの接続用のUSBコントローラと、SATA(Serial Advanced Technology Attachment)大容量記憶デバイスへのインタフェースと、が含まれる。
メモリシステム120は、メモリチャネル130と、メモリチャネル140と、を含む。メモリチャネル130は、本例において別々のランクに対応する代表的なDIMM134,136,138を含む、DDRxバス132に接続されたデュアルインラインメモリモジュール(DIMM)のセットを含む。同様に、メモリチャネル140は、代表的なDIMM144,146,148を含む、DDRxバス142に接続されたDIMMのセットを含む。
PCIeシステム150は、データプロセッサ110内のPCIeルートコンプレックスに接続されたPCIeスイッチ152と、PCIeデバイス154と、PCIeデバイス156と、PCIeデバイス158と、を含む。PCIeデバイス156は、システム基本入出力システム(BIOS)メモリ157に接続されている。システムBIOSメモリ157は、例えば読出し専用メモリ(ROM)、フラッシュEEPROM(electrically erasable programmable ROM)等の様々な不揮発性メモリタイプの何れかであってもよい。
USBシステム160は、データプロセッサ110内のUSBマスタに接続されたUSBハブ162と、USBハブ162にそれぞれ接続された代表的なUSBデバイス164,166,168と、を含む。USBデバイス164,166,168は、例えばキーボード、マウス、フラッシュEEPROMポート等のデバイスであってもよい。
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
データ処理システム100は、メモリチャネル130及びメモリチャネル140を設けることによって、最新のコンピューティングアプリケーションでの使用に適している。各メモリチャネル130,140は、例えばDDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(GDDR5)及び高帯域幅メモリ(HBM)等の最新のDDRメモリに接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードも設けており、組み込み型サーマルモニタリングも提供する。
図2は、図1のデータ処理システム100での使用に適したAPU200のブロック図である。APU200は、概して、中央処理装置(CPU)コアコンプレックス210と、グラフィックスコア220と、ディスプレイエンジン230のセットと、メモリ管理ハブ240と、データファブリック250と、周辺コントローラ260のセットと、周辺バスコントローラ270のセットと、システム管理ユニット(SMU)280と、メモリコントローラ290のセットと、を含む。
CPUコアコンプレックス210は、CPUコア212と、CPUコア214と、を含む。本例において、CPUコアコンプレックス210は2つのCPUコアを含むが、他の実施形態では、CPUコアコンプレックス210は任意の数のCPUコアを含んでもよい。各CPUコア212,214は、制御ファブリックを形成するシステム管理ネットワーク(SMN)及びデータファブリック250に対して双方向に接続されており、メモリアクセス要求をデータファブリック250に提供することができる。各CPUコア212,214は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する2つ以上の単一コアを有するコアコンプレックスであってもよい。
グラフィックスコア220は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンド等のグラフィックス操作を、高度に統合された並列形式で実行することの可能な高性能グラフィックス処理ユニット(GPU)である。グラフィックスコア220は、SMN及びデータファブリック250に対して双方向に接続されており、メモリアクセス要求をデータファブリック250に提供することができる。
これに関して、APU200は、CPUコアコンプレックス210及びグラフィックスコア220が同じメモリ空間を共有するユニファイドメモリアーキテクチャ、又は、CPUコアコンプレックス210及びグラフィックスコア220がメモリ空間の一部を共有するメモリアーキテクチャをサポートしてもよいが、グラフィックスコア220は、CPUコアコンプレックス210がアクセスできない専用のグラフィックスメモリを使用してもよい。
ディスプレイエンジン230は、グラフィックスコア220によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア220及びディスプレイエンジン230は、メモリシステム120の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ240に対して双方向に接続されており、メモリ管理ハブ240は、かかるメモリアクセスを生成し、メモリシステムから返された読み出しデータを受信するために、データファブリック250に対して双方向に接続されている。
データファブリック250は、任意のメモリアクセスエージェントとメモリコントローラ290との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック250は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、BIOSによって定義されたシステムメモリマップを含む。
周辺コントローラ260は、USBコントローラ262と、SATAインタフェースコントローラ264と、を含み、これらの各々が、システムハブ266及びSMNバスに対して双方向に接続されている。これらの2つのコントローラは、APU200で使用可能な周辺コントローラの単なる例示である。
周辺バスコントローラ270は、システムコントローラ(即ち「サウスブリッジ」(SB))272と、PCIeコントローラ274と、を含み、これらの各々が、入出力(I/O)ハブ276及びSMNバスに対して双方向に接続されている。また、I/Oハブ276は、システムハブ266及びデータファブリック250に対して双方向に接続されている。したがって、例えば、CPUコアは、データファブリック250がI/Oハブ276を介してルーティングするアクセスを通じて、USBコントローラ262、SATAインタフェースコントローラ264、SB272、又は、PCIeコントローラ274内のレジスタをプログラムすることができる。
SMU280は、APU200上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。SMU280は、APU200上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU280は、APU200の各コンポーネントにクロック信号を提供するために、図2に示されていない1つ以上のクロック源(例えば位相同期ループ(PLL)等)を含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックの電力を管理し、CPUコア212,214及びグラフィックスコア220から測定された電力消費値を受信して、適切な電力状態を判断してもよい。
また、APU200は、様々なシステムモニタリング及び省電力機能を実装する。特に、1つのシステムモニタリング機能は、サーマルモニタリングである。例えば、SMU280は、APU200が高温になると、CPUコア212,214及び/又はグラフィックスコア220の周波数及び電圧を低減させてもよい。APU200が非常に高温になった場合には、APU200が完全にシャットダウンされてもよい。サーマルイベントは、SMU280によって、外部センサからSMNバスを介して受信されてもよく、SMU280は、これに応じてクロック周波数及び/又は電源電圧を低下させてもよい。
図3は、いくつかの実施形態による、図2のAPU200での使用に適したメモリコントローラ300及び関連する物理インタフェース(PHY)330のブロック図である。メモリコントローラ300は、メモリチャネル310と、パワーエンジン320と、を含む。メモリチャネル310は、ホストインタフェース312と、メモリチャネルコントローラ314と、物理インタフェース316と、を含む。ホストインタフェース312は、メモリチャネルコントローラ314を、スケーラブルデータポート(SDP)を介してデータファブリック250に双方向に接続する。物理インタフェース316は、メモリチャネルコントローラ314を、DDR-PHYインタフェース仕様(DFI)に準拠するバスを介してPHY330に双方向に接続する。パワーエンジン320は、SMNバスを介してSMU280に双方向に接続されており、APB(Advanced Peripheral Bus)を介してPHY330に双方向に接続されており、メモリチャネルコントローラ314にも双方向に接続されている。PHY330は、例えば図1のメモリチャネル130又はメモリチャネル140等のメモリチャネルに対する双方向接続を有する。メモリコントローラ300は、単一のメモリチャネルコントローラ314を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ314の動作を制御するためのパワーエンジン320を有する。
図4は、いくつかの実施形態による、図2のAPU200での使用に適した別のメモリコントローラ400及び関連するPHY440,450のブロック図である。メモリコントローラ400は、メモリチャネル410,420と、パワーエンジン430と、を含む。メモリチャネル410は、ホストインタフェース412と、メモリチャネルコントローラ414と、物理インタフェース416と、を含む。ホストインタフェース412は、メモリチャネルコントローラ414を、SDPを介してデータファブリック250に双方向に接続する。物理インタフェース416は、DFI仕様に準拠しており、メモリチャネルコントローラ414をPHY440に双方向に接続する。メモリチャネル420は、ホストインタフェース422と、メモリチャネルコントローラ424と、物理インタフェース426と、を含む。ホストインタフェース422は、メモリチャネルコントローラ424を、別のSDPを介してデータファブリック250に双方向に接続する。物理インタフェース426は、DFI仕様に準拠しており、メモリチャネルコントローラ424をPHY450に双方向に接続する。パワーエンジン430は、SMNバスを介してSMU280に双方向に接続されており、APBを介してPHY440,450に双方向に接続されており、メモリチャネルコントローラ414,424にも双方向に接続されている。PHY440は、例えば図1のメモリチャネル130等のメモリチャネルに対する双方向接続を有する。PHY450は、例えば図1のメモリチャネル140等のメモリチャネルに対する双方向接続を有する。メモリコントローラ400は、2つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有のパワーエンジン430を使用して、以下にさらに説明するように、メモリチャネルコントローラ414及びメモリチャネルコントローラ424の各々の動作を制御する。
図5は、いくつかの実施形態による、メモリコントローラ500のブロック図である。メモリコントローラ500は、メモリチャネルコントローラ510と、電力コントローラ550と、を含む。メモリチャネルコントローラ510は、インタフェース512と、キュー514と、コマンドキュー520と、アドレス生成器522と、コンテンツアドレス可能メモリ(CAM)524と、リプレイキュー530と、リフレッシュロジックブロック532と、タイミングブロック534と、ページテーブル536と、アービタ538と、エラー訂正コード(ECC)チェックブロック542と、ECC生成ブロック544と、データバッファ(DB)546と、を含む。
インタフェース512は、外部バスを介したデータファブリック250との第1双方向接続と、出力と、を有する。メモリコントローラ500において、この外部バスは、「AXI4」として知られている、英国ケンブリッジのARM Holdings,PLCによって仕様化されたアドバンストエクステンシブルインタフェースバージョン4と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース512は、FCLK(又はMEMCLK)ドメインとして知られる第1クロックドメインから、UCLKドメインとして知られるメモリコントローラ500の内部の第2クロックドメインへのメモリアクセス要求を変換する。同様に、キュー514は、UCLKドメインから、DFIインタフェースに関連するDFICLKドメインへのメモリアクセスを提供する。
アドレス生成器522は、データファブリック250からAXI4バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表わされる物理アドレス空間内のアクセスアドレスを含む。アドレス生成器522は、正規化されたアドレスを、メモリシステム120内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジュールするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムBIOSは、起動時に、メモリシステム120内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器522に関連する構成レジスタのセットをプログラムする。アドレス生成器522は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー520は、データ処理システム100内のメモリアクセスエージェント(例えば、CPUコア212,214及びグラフィックスコア220等)から受信したメモリアクセス要求のキューである。コマンドキュー520は、アドレス生成器522によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質(QoS)識別子を含むメモリアクセスをアービタ538が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。CAM524は、例えばライトアフターライト(WAW)及びリードアフターライト(RAW)順序付けルール等の順序付けルールを実施するための情報を含む。
リプレイキュー530は、例えば、アドレス及びコマンドパリティ応答、DDR4 DRAMの書込み巡回冗長検査(CRC)応答、又は、GDDR5 DRAMの書込み及び読出しCRC応答等の応答を待つアービタ538によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー530は、ECCチェックブロック542にアクセスして、返されたECCが正しいか否か又はエラーを示しているか否かを判別する。リプレイキュー530は、何れかのサイクルでパリティ又はCRCエラーの場合にアクセスがリプレイされるのを可能にする。
リフレッシュロジック532は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、及び、終端抵抗(ZQ)キャリブレーションサイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック532は、オートリフレッシュコマンドを定期的に生成して、DRAMチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック532は、ZQを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。
アービタ538は、コマンドキュー520及び構成レジスタ562に双方向に接続されている。アービタ538は、メモリチャネルコントローラ510の中心部分である。アービタ538は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ538は、タイミングブロック534を使用して、コマンドキュー520内の特定のアクセスの発行に適しているか否かをDRAMタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各DRAMは、起動コマンド間の最小指定時間(「tRC」として知られる)を有する。タイミングブロック534は、リプレイキュー530に双方向に接続されており、このタイミングパラメータ及びJEDEC仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル536は、リプレイキュー530に双方向に接続されており、アービタ538のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
ECC生成ブロック544は、インタフェース512から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。DB546は、受信したメモリアクセス要求の書き込みデータ及びECCを記憶する。アービタ538が、メモリチャネルにディスパッチするための対応する書き込みアクセスを選ぶと、DB546は、結合した書き込みデータ/ECCをキュー514に出力する。
電力コントローラ550は、アドバンストエクテンシブルインタフェースバージョン1(AXI)へのインタフェース552と、APBインタフェース554と、パワーエンジン560と、を含む。インタフェース552は、SMNへの第1双方向接続であって、図5に別に示された「イベント_n」と付されたイベント信号を受信するための入力を含む第1双方向接続と、出力と、を含む。APBインタフェース554は、インタフェース552の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。パワーエンジン560は、インタフェース552の出力に接続された入力と、キュー514の入力に接続された出力と、を有する。パワーエンジン560は、構成レジスタ562のセットと、マイクロコントローラ(μC)564と、セルフリフレッシュコントローラ(SLFREF/PE)566と、信頼性のある読み出し/書き込みモードレジスタアクセス(RRW/MRA)コントローラ568と、を含む。構成レジスタ562は、キュー514に双方向に接続されている。構成レジスタ562は、AXIバスを介してプログラムされており、メモリコントローラ500内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ562は、図5に詳細に示されていないこれらのブロックに接続された追加の出力を有する。セルフリフレッシュコントローラ566は、リフレッシュロジック532によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。RRW/MRAコントローラ568は、DDRインタフェース読み出しレイテンシ(MRL)トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はI/Oデバイスに提供する。また、RRW/MRAコントローラ568は、インタフェース552の選択動作を制御するロジックを設けている。
メモリチャネルコントローラ510は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを抽出することを可能にする回路を含む。アドレス生成器522は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー520は、プリデコードされた情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレス生成器522がどのように復号するのかを決定するために、構成情報を記憶する。アービタ538は、復号化されたアドレス情報と、タイミングブロック534によって示されたタイミング適格性情報と、ページテーブル536によって示されたアクティブページ情報と、を使用して、例えばQoS要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ538は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバーヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバーヘッドアクセスを、他のバンクへの読み出し及び書き込みアクセスをインタリーブすることによって隠す。特に、アービタ538は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
動作中、図5のメモリコントローラ500等のメモリコントローラは、図2のCPUコアコンプレックス210のCPUコア又はグラフィックスコア220等のメモリアクセスエージェントに接続されており、このメモリアクセスエージェントからメモリアクセス要求を受信する。また、メモリコントローラ500は、図1のメモリシステム120に接続するように構成されている。上述したように、メモリシステム120は、図1のDIMM134,136,138として実装された複数のランクのメモリを含むことができる。メモリコントローラ500内のアービタ538は、所定の基準に基づいて、コマンドキュー520からメモリアクセス要求を抽出する。アービタ538は、リフレッシュと同様に読み出し及び書き込みアクセスを実行し、RRW/MRAコントローラ568からの要求に応答する。RRW/MRAコントローラ568は、少なくとも1つのDDRメモリバスアクセス要求に応じて、DDRメモリバスの制御を解放するためのアービタ538への要求を生成する。アービタ538は、メモリバスの制御をRRW/MRAコントローラ568に解放し、一連の指定された動作(例えば、特定のモードレジスタセット(MRS)コマンド等)を生成し、VREFDQトレーニングを実施する。
概して、構成レジスタ562は、インタフェース552を介して再較正書き込みコマンド要求を受信する。ミッションモードの高帯域幅データ転送中に、再較正書き込みコマンド要求がインタフェース512を介して提供される。RRW/MRAコントローラ568は、書き込みコマンド要求に応じて、メモリバスの制御を取得する要求をアービタ538に送信する。アービタ538は、RRW/MRAコントローラ568からの要求に応じて、保留中の動作を静止させる。保留中の動作を静止させることは、ターゲットバスに関連する現在及び保留中の動作を完了させ、停止させることを含むことができるが、これに限定されない。また、バスを静止させることは、緊急のリフレッシュコマンドが保留中ではないことを判別することを含むことができる。アービタ538がターゲットランクに関連する現在及び保留中の動作を静止させた後に、RRW/MRAコントローラ568は、一連のMRSコマンドを実行する。一連のMRSコマンドの完了後に、RRW/MRAコントローラ568は、メモリバスの制御をアービタ538に戻し、通常の読み出し及び書き込みメモリバス動作を再開する。メモリアクセス要求のフローを僅かに中断してメモリへのリフレッシュを行うだけでメモリバスを制御するサイドチャネルを提供することによって、メモリコントローラ500は、パフォーマンスを著しく損なったり、アクセスレイテンシを増大させたりすることなく、パラメータの定期的な再較正を可能にする。
図6は、いくつかの実施形態による、図5のメモリコントローラ500によって使用され得る状態図600である。状態図600は、ダブルデータレートメモリのパラメータを読み書きするためにメモリコントローラ500によって利用されるマージニング及びテストコマンドに対応する状態図である。状態図600は、要求状態602と、検出状態604と、静止状態606と、生成状態610と、MRA制御状態608と、待機状態612と、分配状態614と、無効状態616と、アービタ制御状態618と、を含む。状態図600は、矢印によって状態遷移を表し、メモリコントローラ500は、対応する要求に応じて状態遷移を実行する。
状態図600は、上述したメモリコントローラ動作に対応するステートマシンの状態を表す。要求状態602において、RRW/MRAコントローラ568は、オペレーティングシステムから要求を受信する。要求状態602は、少なくとも1つのMRSコマンドを実行するために、構成レジスタ562にアクセスする要求に対応する。この要求は、ステートマシンがMRSコマンドを送信する先のDRAMのランクを選択する。1つの実施形態において、DRAMデバイスは、DRAM毎のアクセシビリティ(PDA)MRSコマンドを利用して、ランクの特定のDRAMデバイスへのMRSコマンドを生成するためのサポートを提供する。PDA機能を利用して、例えば、所定のランクのDRAMデバイスのオンダイ終端抵抗(ODT)値及び内部基準電圧値等の所定のパラメータをプログラミングする。
検出状態604において、アービタ538は、何等かのアクティブシステム動作を検出する。モードレジスタにアクセスする要求に応じて、アクティブシステム動作中に、アービタ538は、アクティブシステム動作が完了するのを待機することによって、メモリチャネルへの保留中の動作(保留中のリフレッシュ及び通常の読み書き動作を含む)を静止させる。現在及び保留中のメモリランク動作の静止は、静止状態606に対応する。メモリバスを静止させると、DRAMはアイドル状態になる。DRAMがアイドル状態にある場合、又は、タイミングパラメータが満たされているプリチャージ状態にDIMMがある場合に、モードレジスタコンテンツをオペレーティングシステムの通常動作中に変更することができる。現在及び保留中の動作の静止後に、アービタ538は、メモリバスの制御を構成レジスタ562に解放する。
MRA制御状態608において、モードレジスタアクセスコントローラは、ターゲットランクの制御を引き受け、モードレジスタは、変更されたパラメータ値を実行するようにプログラミングされる。これに応じて、生成状態610において、RRW/MRAコントローラ568は、DIMM134,136,138に関連するメモリバス(例えば、DDRxバス132等)への少なくとも1つの対応するモードレジスタセットコマンドを生成する。生成状態610において、MRSコマンドは、DRAMモードレジスタ書き込みコマンドシーケンス、レジスタ制御ワードコマンドシーケンス及びデータバッファ制御ワード書き込みコマンドシーケンスのうち1つである。MRSコマンドサイクルタイムは、モードレジスタへの書き込み動作を完了するために必要であり、MRSコマンド間で必要な最小時間である。
したがって、待機状態612において、モードレジスタセットコマンドサイクルタイムは、MRSコマンド毎に満たされる。モードレジスタをプログラミングする場合に、アクセスされたモードレジスタ内のアドレスフィールドは、RRW/MRAコントローラ568がMRSコマンドを発行する場合に再定義される。分配状態614において、MRSコマンドは、メモリバスに分配され、再分配される。RRW/MRAコントローラ568は、各MRSコマンドの実行後に分配状態614と待機状態612との間を循環し、MRSコマンドの実行間に必要とされる最小時間を満たす。いくつかのモードレジスタにはデフォルト値が定義されているが、全てのモードレジスタにデフォルト値が定義されているとは限らないので、モードレジスタのコンテンツは、必要に応じて、分配状態614において初期化及び/又は再初期化される(すなわち、書き込まれる)。モードレジスタセットコマンドがさらに実行される前に、所定数のクロックサイクルが実行される。
最後に受信したモードレジスタセットコマンドの実行に応じて、待機状態612は、所定数のクロックサイクルを実行し、無効状態616に遷移する。無効状態616において、ターゲットパラメータの変更が停止される。アービタ制御状態618において、RRW/MRAコントローラ568は、メモリバスの制御をアービタに戻す。要求状態602に戻ると、メモリコントローラは、少なくとも1つのDRAMパラメータを変更及び/又は読み出すための次の要求を待つ。
1つの実施形態において、MRSコマンドがモードレジスタ書き込みコマンドシーケンスである場合に、書き込みコマンドシーケンスは、ダブルデータレートメモリのランク内の全てのDRAMに分配される。モードレジスタ書き込みコマンドシーケンスは、更新されるダブルデータレートメモリのランク内のDRAMに関連する電圧パラメータ、タイミングパラメータ及び所定の代替のデバイスパラメータのうち少なくとも1つを有効にする。1つの例において、内部基準電圧を更新することが要求されると、生成されたMRSコマンドの受信時に、MRSコマンドの少なくとも一部が、少なくとも1つのランクのダブルデータレートメモリに関連するモードレジスタ6(MR6)において受信される。MRSコマンドの受信に応じて、プロセスは、後続のMRSコマンドを実行する前に、待機状態612において、所定数の電圧基準メモリクロックサイクルを待つ。
別の実施形態において、DDRデバイスに関連するパラメータの即時制御を行う要求を受信する。メモリバスへの即時アクセス要求に応じて、アービタ538がバイパスされる。メモリバスの即時制御を取得することを可能にするダイレクトMRSコマンドがメモリバス(DDRxバス132)に対して生成される。
図7は、いくつかの実施形態による、図5のメモリコントローラ500によって使用され得る状態図700である。状態図700は、ダブルデータレートメモリに関連するデータバッファのパラメータを読み出して更新するためにメモリコントローラ500によって利用されるマージニング及びテストコマンドに対応する状態図である。状態図700は、要求状態702と、初期化状態704と、アクティブ状態706と、アイドル状態708と、アービタ制御状態710と、待機状態712と、書き込み状態714と、静止状態716と、有効状態718と、待機時間状態720と、待機状態722と、を含む。
動作中に、バッファ制御ワード(BCW)書き込みは、データバッファに関連するバス(例えば、バッファ制御バス又はDDRxバス132等)を介したコマンドシーケンスとして、レジスタクロックドライバ(RCD)からDIMM134,136,138に関連するデータバッファに送信される。構成レジスタ562は、コマンドシーケンスを受信する。アービタ538は、所定の基準に基づいて、コマンドキュー520からデータバッファにコマンドを読み書きするためのメモリアクセス要求を抽出する。所定の基準は、リフレッシュ要求、緊急リフレッシュ要求、時系列要求(chronological ordered requests)、及び、予めスケジューリングされた分配要求を含むことができる。データバッファへのアクセス要求を受信したことに応じて、RRW/MRAコントローラ568は、メモリバスの現在及び保留中のアクティビティを静止させるように、アービタ538に指示する。RRW/MRAコントローラ568は、メモリバスを制御して、BCW書き込みコマンドシーケンスを介して、所定のパラメータ(例えば、内部基準電圧パラメータ及びデータバッファタイミング値等)を変更する。所定のデータバッファパラメータを変更するBCW書き込みコマンドシーケンスは、バッファ制御バスを介したコマンドシーケンスとして、レジスタクロックドライバ(RCD)からDIMM134,136,138に関連するデータバッファに送信される。BCW書き込みコマンドシーケンス内の制御ワードを用いてデータバッファパラメータを変更すると、デバイスが安定するまでに時間がかかる。BCW書き込みコマンドシーケンスを実行する場合に、メモリコントローラ500は、最後の制御ワードがアクセスした後であってDRAMへのさらなるアクセスが行われ得る前に、所定数のクロックサイクル(tMRC)を待つ。クロックタイミングの変更又は書き込みの場合、安定するまでに最大tDLLK時間かかる。
さらに、状態図700は、メモリコントローラ500を介した実行のために上述したDIMMデータバッファのトレーニング及びマージニング動作に対応するステートマシンの状態を表す。状態図700によってさらに示すように、RCDは、オペレーティングシステムの初期化状態704、アクティブ状態706又はアイドル状態708において、DIMM134,136,138に関連するパラメータにアクセスして更新する要求を受信する。初期化状態704は、オペレーティングシステムのスタートアップ状態に対応する。複数の機能がアクティブ状態706に関連付けられてもよい。1つの実施形態において、データ処理システム100に関連するアクティビティは、フルミッションモードのトラフィック動作から最小ミッションモードのトラフィック動作まで及ぶことができる。アイドル状態708は、非アクティブで機能的なデータ処理システム100に対応する。初期化状態704、アクティブ状態706又はアイドル状態708の間にデータバッファにアクセスする要求の受信に応じて、メモリコントローラ500は、待機状態712に遷移する。待機状態712は、BCW書き込みコマンドシーケンスの実行用にデータバッファを準備するのに利用される所定の待機時間である。状態718において、アービタ538は、RRW/MRAコントローラ568がメモリバスを制御できるようにする。待機状態712に関連する所定の待機サイクルの完了後に、アービタ538は、データバッファに関連する現在及び保留中の動作を静止させる。遷移は、待機状態712に戻る。
状態716において、構成レジスタ562は、メモリバスの制御をアービタ538に要求する。アービタ538がメモリバスに関連するアクティビティを一時的に停止させた場合、アービタ538は、メモリバスの制御を構成レジスタ562に解放する。データバッファ書き込み動作は、書き込み状態714で生成されたBCW書き込みコマンドシーケンスを利用して、RRW/MRAコントローラ568を介して実行される。1つの実施形態において、BCWコマンドシーケンスは、BCW読み出しコマンドシーケンスに対応する。1つの実施形態において、各BCW書き込み及び読み出しコマンドシーケンス後に、5つのデータ転送サイクルと、パリティデータ転送サイクルとが実行される。書き込み状態714において、生成されたBCW書き込みコマンドシーケンスは、バッファ制御バスを介したコマンドシーケンスとして、DDR4レジスタクロックドライバからランクのDDRデータバッファに送信される。バッファ制御ワード及びパラメータ設定を変更すると、デバイスが安定するまでに時間がかかる。BCW時間(tBCW)パラメータは、アクティブBCW書き込みコマンドから後続の有効なBCW書き込みコマンドへの遷移に利用される時間を示す。書き込み状態714において、所定数のサイクル遷移は、BCW書き込みコマンド間の待機サイクル712への遷移数に対応する。
DDR BCW書き込みコマンドシーケンスは、バッファ制御設定の変更後にDDRメモリの少なくとも1つのランクに分配され、書き込み状態714において、メモリコントローラ500は、所定数のクロックサイクルtMRCの実行のために待機状態720に遷移する。待機状態720への遷移は、最後の制御ワードアクセス後に、DRAMへのさらなるアクセスが発生する前に発生する。クロックタイミングへの変更のために、書き込み状態714において、メモリコントローラ500は、待機状態722に遷移する。待機状態712への最後の遷移に応じて、待機状態720及び待機状態722のうち少なくとも1つにおいて、追加のサイクルタイムへの遷移が行われる。待機状態722は、タイミングパラメータの変更後に実行される所定数のクロックサイクルtDLLKに対応し、次いで状態710において、メモリコントローラ500は、アービタ538がメモリバスの制御を取り戻すことを可能にする。
1つの実施形態において、電圧基準パラメータ、タイミング制御パラメータ、所定の代替のバッファパラメータ及び代替のデータバッファパラメータの中から少なくとも1つのデータバッファパラメータが選択される。例えば、DIMMデータバッファパラメータは、基準電圧動作範囲、基準電圧ステップサイズ、基準電圧設定公差、基準電圧ステップタイム、基準電圧有効公差及びクロックタイミングを含むことができるが、これらに限定されない。タイミング制御パラメータは、ダブルデータレートメモリの関連するランクのデータバッファのタイミング制御レジスタで受信される。さらに、DIMMデータバッファは、バッファアドレサビリティ(PBA)について呼ばれる、バッファ制御ワードアクセストランザクションにおける機能をサポートする。各データバッファは、互いに独立して構成することができる。PBAは、バッファ毎に独立したパラメータ変更及びトレーニングを行うことができ、又は、所定のDIMMデータバッファのODTインピーダンス設定に対して独立することができる。PBA機能は、PBAモードでプログラミングされる必要があるレジスタを含まないワードに記憶されたBCWビットによって有効になる。これにより、バッファ毎に特別にプログラミングされたBCWビットを変更する必要なしに、バッファがPBAモードに出入りするのを可能にする。
図6及び図7の状態間で切り替えるためにいくつかの条件は、単独又は様々な組み合わせで使用することができる。図示した実施形態において、これらの条件には、読み出し又は書き込みコマンドシーケンス、タイミング待機サイクル、メモリバスアクセス、アービタ制御及び保留中の動作の静止の生成が含まれる。さらに、図6及び図7は、メモリの所定のランク(すなわち、PDA及びPBA)内の単一のデバイスについてのマージニング及びトレーニングを示すことができる一方で、図6及び図7のステートマシンは、シングルランク及びマルチランク等の様々な方法でメモリシステムのより大きなサブセットに拡張することができる。
図8は、図5のメモリコントローラ500によって使用され得る方法800のフロー図である。ブロック802において、システム初期化後に少なくとも1つのDDRトレーニング及びマージニング動作を生成する要求をオペレーティングシステムから受信する。ブロック804において、RRW/MRAコントローラ568は、ランクの現在及び保留中のダブルデータレート動作を静止させるためのアービタ538への要求を生成する。ブロック806において、MRSコマンドをメモリバス(例えば、DDRxバス132等)で受信する。メモリバスでのMRSコマンドの受信に応じて、ブロック808において、RRW/MRAコントローラ568を介して第1MRSコマンドをランクに送信して、ランクの所定のDDRメモリデバイスパラメータ(例えば、VREFDQパラメータ等)の制御を取得する。ブロック810において、所定数のクロックサイクル(tVREF)を実行する。ブロック812において、ランクに関連する少なくとも1つのDDR4メモリデバイスパラメータを更新するための第2モードレジスタコマンドシーケンスを、当該ランクに送信する。DDR4メモリデバイスパラメータ変更の実行後に、ブロック814において、所定数のクロックサイクルを実行する。RRW/MRAコントローラ568は、後続のMRSコマンドをランクに送信して、パラメータ制御を無効にする。ブロック818において、追加の所定数のクロックサイクルを実行する。ブロック820において、アービタがメモリバスへのアクセスを取り戻すのを可能にする。プロセスは、最後のブロックで終了する。
図9は、図5のメモリコントローラ500によって使用され得る方法900のフロー図である。ブロック902において、システム初期化後に、所定のデータバッファパラメータを変更するためのBCW書き込みコマンドシーケンスを生成する要求を受信する。RRW/MRAコントローラ568は、メモリバスの制御をアービタ538に要求する。ブロック904において、メモリコントローラ500は、アービタ538が現在及び保留中のバッファ動作を静止させるのを可能にする。ブロック906において、所定数のクロックサイクルを実行する。ブロック908において、BCW書き込みコマンドシーケンスを生成する。BCW書き込みコマンドシーケンスの生成に応じて、ブロック910において、BCW書き込みコマンドシーケンスを、第1パラメータを変更するために少なくとも1つのデータバッファに分配する。ブロック912において、所定数のクロックサイクルを実行する。ブロック914において、ランクに関連する第2パラメータを更新するために、後続のBCW書き込みコマンドシーケンスをデータバッファに送信する。パラメータ更新の実行後に、ブロック916において、別の所定数のクロックサイクル(最大tDLLK)を実行する。ブロック918において、後続のBCW書き込みコマンドシーケンスを送信して、データバッファの制御を無効にする。ブロック920において、追加の数の所定のクロックサイクルを実行する。ブロック922において、アービタが現在及び保留中のデータバス動作へのアクセスを取り戻すのを可能にする。プロセスは、最後のブロックで終了する。
図10は、図5のメモリコントローラ500によって使用され得る方法1000のフロー図である。ブロック1002において、多目的レジスタのコンテンツを取得/読み出す要求をRRW/MRAコントローラ568で受信する。ブロック1004において、DDRメモリデバイスの現在及び保留中のDDRメモリバス動作を静止させる要求を、RRW/MRAコントローラ568によって生成し、アービタ538で受信する。ブロック1006において、メモリコントローラ500は、アービタ538が現在及び保留中のDDR4メモリバス動作を静止させることを可能にする。ブロック1008において、MRSコマンドをメモリバスで受信する。ブロック1010において、ランク内の少なくとも1つのDRAMデバイスに関連する所定のパラメータ値を読み出すために、少なくとも1つのMRSコマンドを当該ランクに分配する。ブロック1012において、所定数のクロックサイクルを実行する。ブロック1014において、関連するランクのコンテンツを取得する/読み出す。コンテンツの読み出し後に、ブロック1016において、所定数のクロックサイクルを実行する。ブロック1018において、メモリコントローラは、アービタが現在及び保留中のメモリデータバス動作へのアクセスを取り戻すのを可能にする。プロセスは、最後のブロックで終了する。
図11は、ある範囲の入力値に応じてDRAMの出力値をグラフィカルに表示する2次元データアイを示す図である。データアイ1100は、データアイ1106と、軸1102と、軸1104と、を含む。軸1102は、最小及び最大のy軸値を表示し、軸1104は、最小及び最大のx軸値を表示する。
1つの実施形態において、データアイ1100は、DRAMデバイスの所定のパラメータを最適化するために利用される2次元データアイである。アービタ538がメモリバスを静止させた後に、RRW/MRAコントローラ568は、MRSコマンドをDRAMデバイスに分配して、所定のパラメータ値をデータアイの中央に動的に移動させるのを可能にする。所定のパラメータ値をデータアイの中央に移動させることは、テスト及びマージニング中に、DRAMデバイスに関連するパラメータ値を動的に最適化する。
図8、図9及び図10に示すいくつか又は全ての方法を、コンピュータ可読記憶媒体に記憶され、少なくとも1つのプロセッサにより実行される命令によって管理することができる。図8、図9及び図10に示す各動作は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応してもよい。様々な実施形態において、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスクストレージデバイス、フラッシュメモリ等のソリッドステートストレージデバイス、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈及び/又は実行可能な他の命令フォーマットであってもよい。
特定の実施形態について説明したが、これらの実施形態に対する様々な変更が当業者には明らかであろう。メモリコントローラ500は、高帯域幅メモリ(HBM)、複数のタイプの同期DRAM等のDDRxメモリに加えて、他のタイプのメモリにもインタフェースすることができる。図示した実施形態は、別々のDIMMに対応するメモリの各ランクを示したが、他の実施形態において、各DIMMは、複数のランクをサポートすることが可能である。さらに、メモリチャネルは、複数のランクのDDR4メモリ又はシングルランクのDDR4メモリを含むことができる。また、例えばVREFDQトレーニングのZQキャリブレーション等の特定のタイプの較正を参照してMRAコントローラの動作を説明したが、動作中に実行される他のタイプの較正及びトレーニングにも使用できることが明らかであろう。
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を包含することが意図される。

Claims (15)

  1. データ処理システム(100)であって、
    メモリバス(132)と、モードレジスタを含むダブルデータレートメモリ(134/136/138)の少なくとも1つのランクと、を有するメモリチャネル(130)と、
    前記メモリチャネル(130)に接続されたメモリコントローラ(500)であって、前記ダブルデータレートメモリの少なくとも1つのランクにアクセスするように構成されたメモリコントローラ(500)を有するデータプロセッサ(110)と、を備え、
    前記メモリコントローラは、
    受信したメモリアクセス要求を記憶するコマンドキュー(520)と、
    所定の基準に基づいて前記コマンドキュー(520)からメモリアクセス要求を抽出し、前記メモリアクセス要求を前記メモリチャネルに提供し、モードレジスタアクセス要求に応じて、保留中の動作を静止させる(606)アービタ(538)と、
    前記モードレジスタアクセス要求に応じて、少なくとも1つの対応するモードレジスタセットコマンドを前記メモリチャネル(130)に提供した後に、前記メモリバスの制御を前記アービタ(538)に解放するモードレジスタアクセスコントローラ(568)と、を備える、
    データ処理システム(100)。
  2. 前記少なくとも1つの対応するモードレジスタセットコマンドを、DRAMモードレジスタ書き込みコマンドシーケンス、レジスタ制御ワードコマンドシーケンス及びデータバッファ制御ワード書き込みコマンド(714)シーケンスのうち何れかとして生成すること(610)を備える、
    請求項1のデータ処理システム(100)。
  3. 少なくとも1つの他のDRAMモードレジスタセットコマンドを、ダブルデータレートメモリの少なくとも1つのランク内の複数のDRAMに分配すること(614)を備える、
    請求項2のデータ処理システム(100)。
  4. 前記少なくとも1つの他のDRAMモードレジスタセットコマンドは、DDRメモリの少なくとも1つのランク(134/136/138)に関連する電圧基準パラメータ、タイミングパラメータ及び所定の代替デバイスパラメータのうち少なくとも1つが更新されるのを可能にする、
    請求項3のデータ処理システム(100)。
  5. 前記データバッファ制御ワード書き込みコマンド(714)シーケンスを生成したことに応じて、前記データバッファ制御ワード書き込みコマンド(714)シーケンスを、前記ダブルデータレートメモリの少なくとも1つのランクの少なくとも1つのデータバッファに分配する、
    請求項2のデータ処理システム(100)。
  6. 前記データバッファ制御ワード書き込みコマンド(714)シーケンスは、前記ダブルデータレートメモリの少なくとも1つのランクの少なくとも1つのデータバッファの初期化(704/706/708)後に、少なくとも1つのデータバッファパラメータを変更する、
    請求項5のデータ処理システム(100)。
  7. 前記少なくとも1つのデータバッファパラメータは、電圧基準パラメータ、タイミング制御パラメータ(714/908/912)、所定の代替のバッファパラメータ及び代替のデータバッファパラメータの中から選択される、
    請求項6のデータ処理システム(100)。
  8. メモリアクセスエージェント(210/220)と、
    前記メモリアクセスエージェント(210/212)に接続され、メモリバス及び少なくとも1つのメモリデバイスを含むメモリシステム(120)に接続するように構成されたメモリコントローラ(292/500)であって、前記メモリコントローラ(292/500)は、受信したメモリアクセス要求を記憶するコマンドキュー(520)を備える、メモリコントローラ(292/500)と、
    前記コマンドキュー(520)からメモリアクセス要求を選択的に抽出し、前記メモリアクセス要求をメモリチャネルに提供し、モードレジスタアクセス要求に応じて、保留中の動作を静止させるアービタ(538)と、
    前記モードレジスタアクセス要求に応じて、前記メモリバスに対して少なくとも1つの対応するモードレジスタセットコマンドを提供した後に、前記メモリバスの制御を前記アービタ(538)に解放するモードレジスタアクセスコントローラ(568)と、を備える、
    データプロセッサ(110/200)。
  9. 前記モードレジスタアクセスコントローラ(568)は、前記少なくとも1つの対応するモードレジスタセットコマンド(608)を、ダイナミックランダムアクセスメモリ(DRAM)モードレジスタ書き込みコマンドシーケンス(608)及びバッファ制御ワード書き込みコマンドシーケンス(714)のうち何れかとして提供する、
    請求項8のデータプロセッサ(110/200)。
  10. 前記モードレジスタアクセスコントローラは、即時モードレジスタアクセス要求(602/610)に応じて、前記アービタのバイパスを可能にし、前記メモリバスに対してダイレクトモードレジスタセットコマンドを提供して、前記メモリバスの即時制御を取得する、
    請求項8のデータプロセッサ(110/200)。
  11. メモリコントローラ(500)が、モードレジスタアクセスコントローラ(568)を介して、メモリバス及びダブルデータレートメモリ(134/136/138)の少なくとも1つのランクを含むメモリシステム内のダブルデータレートインタフェースをマージニング及びテストする方法(800/900)であって、
    システム初期化後にダブルデータレート動作を生成する要求を受信することと、
    ランクの現在及び保留中のダブルデータレート動作を静止する要求を生成することと、
    モードレジスタコマンドシーケンスをメモリバスに提供することと、
    前記モードレジスタコマンドシーケンスの受信に応じて、第1モードレジスタコマンドシーケンスを前記ランクの複数のバンクに送信して、前記ランクに関連する第1パラメータの制御を取得することと、
    後続のモードレジスタコマンドシーケンスを前記複数のバンクに送信して(808)、前記ランクに関連する前記第1パラメータを更新することと(812)、を含む、
    方法(800)
  12. 待機サイクルを開始すること(810)を含み、
    前記待機サイクルは、前記後続のモードレジスタコマンドシーケンスの実行後に開始される所定数の基準電圧メモリクロックサイクル(612)である、
    請求項11の方法(800)。
  13. メモリコントローラ(500)が、モードレジスタアクセスコントローラを介して、メモリバス及びダブルデータレートメモリ(134/136/138)の少なくとも1つのランクを含むメモリシステム内のダブルデータレートデータバッファインタフェースをマージニング及びテストする方法(900)であって、
    ダブルデータレートデータバッファの初期化後に、バッファ制御ワード書き込みコマンドシーケンスを生成する要求を受信することと(902)、
    現在及び保留中のダブルデータレートデータバッファ動作の静止を有効にすることと(904)、
    前記バッファ制御ワード書き込みコマンドシーケンスを、前記ダブルデータレートメモリ(134/136/138)の少なくとも1つのランクのダブルデータレートデータバッファに分配して、前記ダブルデータレートデータバッファの電圧パラメータ及びデータバッファタイミングパラメータのうち少なくとも1つのパラメータを変更することと(908)、を含む、
    方法(900)。
  14. 各バッファ制御ワード書き込みコマンドシーケンスに続く待機サイクルを開始することであって(912)、前記待機サイクルは、第1の所定数のクロックサイクルである、ことと、
    後続のバッファ制御ワード書き込みコマンドシーケンスを送信すること(914)と、第2の所定数のクロックサイクルを待機することと(916)、を含む、
    請求項13の方法(900)。
  15. 前記電圧パラメータは、DQ基準電圧レベル(908/912)である、
    請求項13の方法(900)。
JP2019520832A 2016-10-21 2017-07-27 データ処理システム、データプロセッサ及び方法 Active JP7181863B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/299,994 US9965222B1 (en) 2016-10-21 2016-10-21 Software mode register access for platform margining and debug
US15/299,994 2016-10-21
PCT/US2017/044143 WO2018075118A1 (en) 2016-10-21 2017-07-27 Software mode register access for platform margining and debug

Publications (2)

Publication Number Publication Date
JP2019536136A JP2019536136A (ja) 2019-12-12
JP7181863B2 true JP7181863B2 (ja) 2022-12-01

Family

ID=61970204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019520832A Active JP7181863B2 (ja) 2016-10-21 2017-07-27 データ処理システム、データプロセッサ及び方法

Country Status (6)

Country Link
US (1) US9965222B1 (ja)
EP (2) EP3529703A4 (ja)
JP (1) JP7181863B2 (ja)
KR (1) KR102444201B1 (ja)
CN (1) CN109863481B (ja)
WO (1) WO2018075118A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7768847B2 (en) 2008-04-09 2010-08-03 Rambus Inc. Programmable memory repair scheme
SG11201908904TA (en) * 2017-04-14 2019-10-30 Huawei Tech Co Ltd Memory refresh technology and computer system
US10719058B1 (en) * 2017-09-25 2020-07-21 Cadence Design Systems, Inc. System and method for memory control having selectively distributed power-on processing
CN108829348B (zh) * 2018-05-29 2022-03-04 上海兆芯集成电路有限公司 存储器装置及命令重排序方法
US10896265B2 (en) * 2018-08-02 2021-01-19 Micron Technology, Inc. Register access
WO2020051921A1 (en) * 2018-09-15 2020-03-19 Intel Corporation Runtime cell row replacement in a memory
US11200106B2 (en) * 2019-08-12 2021-12-14 Advanced Micro Devices, Inc. Data integrity for persistent memory systems and the like
CN111158875B (zh) * 2019-12-25 2023-05-02 眸芯科技(上海)有限公司 基于多模块的多任务处理方法、装置及系统
US11231879B2 (en) * 2020-02-28 2022-01-25 Micron Technology, Inc. Dedicated design for testability paths for memory sub-system controller
CN112395011B (zh) 2020-11-24 2022-11-29 海宁奕斯伟集成电路设计有限公司 命令响应信息的返回方法、返回控制装置和电子设备
CN112559399A (zh) * 2020-11-27 2021-03-26 山东云海国创云计算装备产业创新中心有限公司 一种多axi接口的ddr控制器及其控制方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007241799A (ja) 2006-03-10 2007-09-20 Kyocera Mita Corp メモリコントローラ
JP2010055246A (ja) 2008-08-27 2010-03-11 Seiko Epson Corp リクエスト調停装置及びリクエスト調停方法
WO2010137330A1 (ja) 2009-05-27 2010-12-02 パナソニック株式会社 遅延調整装置、遅延調整方法
JP2016018430A (ja) 2014-07-09 2016-02-01 ソニー株式会社 メモリ管理装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7610455B2 (en) * 2005-05-11 2009-10-27 Infineon Technologies Ag Technique to read special mode register
US9171585B2 (en) * 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US7647467B1 (en) 2006-05-25 2010-01-12 Nvidia Corporation Tuning DRAM I/O parameters on the fly
US8407394B2 (en) * 2008-01-08 2013-03-26 Cisco Technology, Inc. System and methods for memory expansion
US8825965B2 (en) * 2008-01-08 2014-09-02 Cisco Technology, Inc. System and methods for memory expansion
US7924637B2 (en) 2008-03-31 2011-04-12 Advanced Micro Devices, Inc. Method for training dynamic random access memory (DRAM) controller timing delays
US8102724B2 (en) 2009-01-29 2012-01-24 International Business Machines Corporation Setting controller VREF in a memory controller and memory device interface in a communication bus
EP2339795B1 (en) * 2009-12-07 2013-08-14 STMicroelectronics (Research & Development) Limited Inter-chip communication interface for a multi-chip package
EP2333673B1 (en) * 2009-12-07 2014-04-16 STMicroelectronics (Research & Development) Limited Signal sampling and transfer
US8274308B2 (en) * 2010-06-28 2012-09-25 Intel Corporation Method and apparatus for dynamic memory termination
US8850155B2 (en) 2011-12-19 2014-09-30 Advanced Micro Devices, Inc. DDR 2D Vref training
US9715467B2 (en) 2012-11-26 2017-07-25 Rambus Inc. Calibration protocol for command and address bus voltage reference in low-swing single-ended signaling
US9846606B2 (en) 2014-11-07 2017-12-19 Mediatek Inc. Storage device calibration methods and controlling device using the same
US9933950B2 (en) * 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US10025685B2 (en) * 2015-03-27 2018-07-17 Intel Corporation Impedance compensation based on detecting sensor data
US10031677B1 (en) * 2015-10-14 2018-07-24 Rambus Inc. High-throughput low-latency hybrid memory module

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007241799A (ja) 2006-03-10 2007-09-20 Kyocera Mita Corp メモリコントローラ
JP2010055246A (ja) 2008-08-27 2010-03-11 Seiko Epson Corp リクエスト調停装置及びリクエスト調停方法
WO2010137330A1 (ja) 2009-05-27 2010-12-02 パナソニック株式会社 遅延調整装置、遅延調整方法
JP2016018430A (ja) 2014-07-09 2016-02-01 ソニー株式会社 メモリ管理装置

Also Published As

Publication number Publication date
EP3529703A4 (en) 2020-08-12
KR20190059325A (ko) 2019-05-30
KR102444201B1 (ko) 2022-09-19
CN109863481B (zh) 2021-06-18
US9965222B1 (en) 2018-05-08
EP3529703A1 (en) 2019-08-28
CN109863481A (zh) 2019-06-07
JP2019536136A (ja) 2019-12-12
US20180113648A1 (en) 2018-04-26
EP4339769A2 (en) 2024-03-20
WO2018075118A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
JP7181863B2 (ja) データ処理システム、データプロセッサ及び方法
US11221772B2 (en) Self refresh state machine mop array
KR102235055B1 (ko) 미세 입도의 리프레시
US10037150B2 (en) Memory controller with virtual controller mode
KR102442078B1 (ko) 고속 메모리 인터페이스들을 위한 명령 중재
EP3436958B1 (en) Low power memory throttling
JP2023508660A (ja) ダブルデータレートメモリトレーニングの削減によるメモリコンテキスト復元、システムオンチップのブート時間の短縮
KR20230010675A (ko) Dram을 위한 리프레시 관리
KR20230160854A (ko) 메모리 제어기 전력 상태들
EP3270295A1 (en) Memory controller with virtual controller mode

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210831

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220705

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221018

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: 20221108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221118

R150 Certificate of patent or registration of utility model

Ref document number: 7181863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150