JP2019520640A - セルフリフレッシュステートマシンmopアレイ - Google Patents

セルフリフレッシュステートマシンmopアレイ Download PDF

Info

Publication number
JP2019520640A
JP2019520640A JP2018561678A JP2018561678A JP2019520640A JP 2019520640 A JP2019520640 A JP 2019520640A JP 2018561678 A JP2018561678 A JP 2018561678A JP 2018561678 A JP2018561678 A JP 2018561678A JP 2019520640 A JP2019520640 A JP 2019520640A
Authority
JP
Japan
Prior art keywords
memory
controller
power state
mop
state
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.)
Granted
Application number
JP2018561678A
Other languages
English (en)
Other versions
JP6761873B2 (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 JP2019520640A publication Critical patent/JP2019520640A/ja
Application granted granted Critical
Publication of JP6761873B2 publication Critical patent/JP6761873B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0629Configuration or reconfiguration of storage systems
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0625Power saving in storage systems
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4074Power supply or voltage generation circuits, e.g. bias voltage generators, substrate voltage generators, back-up power, power control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2227Standby or low power modes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/401Indexing scheme relating to cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C2211/406Refreshing of dynamic cells
    • G11C2211/4067Refresh in standby or low power modes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Power Engineering (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)

Abstract

一形態において、メモリコントローラは、コントローラと、メモリ動作アレイと、を含む。コントローラは、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を有する。メモリ動作アレイは、複数のエントリを含み、各エントリは、複数の符号化フィールドを有する。コントローラは、電力状態変更要求信号のアクティベーションに応じて、メモリ動作アレイにアクセスして少なくとも1つのエントリをフェッチし、そのエントリによって示される少なくとも1つのメモリ動作を発行する。別の形態において、システムは、メモリシステムと、メモリシステムに接続されたプロセッサと、を備える。プロセッサは、かかるメモリコントローラを用いてメモリモジュールにアクセスするように構成されている。【選択図】図7

Description

本開示は、概して、データ処理システムに関し、より具体的には、低電力状態を有するメモリとインタフェースをとるデータ処理システム用のメモリコントローラに関する。
コンピュータシステムは、通常、安価で高密度なダイナミックランダムアクセスメモリ(DRAM)チップをメインメモリに使用する。今日販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって公布された様々なダブルデータレート(DDR)DRAM規格と互換性がある。DDR DRAMは、様々な低電力モードを提供することによって、高性能及び低電力動作の両方を提供する。これらの低電力モードのうち1つは、プリチャージパワーダウンとして知られている。プリチャージパワーダウンの間、全てのバンクがプリチャージされ、オンチップ遅延ロックループ(DLL)を無効にし、入力クロックをオフにし、出力バッファを無効にして、消費電力を大幅に減らすことができる。プリチャージパワーダウンは比較的早く終了するため、DLLを実行したままにすることで終了時間を短縮することができる。
メモリコントローラは、今日市場に出回っている様々な想定されるDDRメモリデバイスをサポートすることが望ましい。例えば、DDRバージョン3(DDR3)、DDRバージョン4(DDR4)、低電力(LP)DDR3(LPDDR3)、LPDDR4及びグラフィックスDDRバージョン5(gDDR5)等は、全て現在利用可能な選択肢である。しかしながら、それぞれ異なるDDRメモリデバイスは、異なるセットのモードレジスタ(MR)を有しており、異なる数及び構成のメモリバンクを有することができ、異なる低電力モードをサポートすることができる。したがって、これらの全てのバリエーションに対して低電力モードを効率的にサポートするように、単一のメモリコントローラを設計することが困難であった。
いくつかの実施形態による、データ処理システムのブロック図である。 図1のデータ処理システムでの使用に適したアドバンストプロセッシングユニット(APU)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適したメモリコントローラ及び関連する物理インタフェース(PHY)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適した他のメモリコントローラ及び関連するPHYのブロック図である。 いくつかの実施形態による、メモリコントローラのブロック図である。 いくつかの実施形態による、図1のデータ処理システムの一部に対応するデータ処理システムのブロック図である。 いくつかの実施形態による、図5のメモリチャネルコントローラの一部に対応するメモリチャネルコントローラのブロック図である。 いくつかの実施形態による、図7のMOPアレイのエントリのブロック図である。
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」という用語及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
以下に説明するように、メモリコントローラは、コントローラと、メモリ動作(MOP)アレイと、を含む。コントローラは、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を有する。MOPアレイは、複数のエントリを含み、各エントリは、複数の符号化フィールドを有する。コントローラは、電力状態変更要求信号のアクティベーションに応じて、MOPアレイにアクセスして少なくとも1つのエントリをフェッチし、そのエントリによって示される少なくとも1つのメモリ動作を発行する。メモリコントローラは、例えば、電力状態変更要求を実施するために使用される特定のメモリ動作を記述したMOPアレイの部分を含むことが可能である。例えば、DDR4及びLPDDR4 DRAMは、異なるステートマシンと、異なる低電力モードと、を実装しており、アクティブ状態から低電力状態に移行するための異なるシーケンスを要求する。ある場合には、メモリコントローラは、MOPアレイを使用して、DDRレジスタ付きDIMMのレジスタ制御ワード(RCW)又はバッファ制御ワード(BCW)に書き込まれるようにコマンドを定義することができる。
別の形態では、このようなメモリコントローラを、プロセッサとメモリモジュールとを含む処理システムのプロセッサに含めることができる。プロセッサは、メモリコントローラとメモリシステムとの間に接続された物理インタフェース(PHY)をさらに含むことができる。
さらに別の形態では、メモリシステムの電力状態を制御するための方法が開示されている。電力状態変更信号を受信する。電力状態変更要求信号に応じて、メモリ動作(MOP)アレイにアクセスする。MOPアレイのエントリを少なくとも1つのメモリ動作に復号する。このように復号された各メモリ動作を出力する。所定の終了条件が発生するまで、MOPアレイ内の連続するエントリに対して、復号及び出力を繰り返す。所定の終了条件は、例えば、MOPアレイ内のヌルエントリであってもよい。受信した電力状態変更要求信号は、プリチャージパワーダウン、セルフリフレッシュパワーダウン又はアイドルパワーダウン等のアクティブ状態から低電力状態への変更、又は、アクティブ状態におけるある動作周波数から別の動作周波数への変更であってもよい。また、基本入出力システム(BIOS)は、メモリシステムの特性の検出に応じてMOPアレイをプログラムすることができる。
図1は、いくつかの実施形態による、データ処理システム100のブロック図である。データ処理システム100は、概して、アクセラレーテッドプロセッシングユニット(APU)の形態のデータプロセッサ110と、メモリシステム120と、PCIe(Peripheral Component Interconnect Express)システム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メモリ(例えば、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)及び高帯域幅メモリ(HBM)等)に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。以下により詳細に説明するように、データプロセッサ110は、オーバーヒートを回避し、サーマルオーバロードの可能性を低減するために、特定の状況において電力を抑制することができるメモリコントローラを備える。
図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と、書込みデータバッファ(WDB)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に双方向に接続されており、メモリチャネルコントローラ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は、概して、AXI(Advanced Extensible Interface, version 1)へのインタフェース552と、APBインタフェース554と、電力エンジン560と、を含む。インタフェース552は、SMNへの第1双方向接続であって、図5に別に示された「EVENT_n」と付されたイベント信号を受信するための入力を含む第1双方向接続と、出力と、を含む。APBインタフェース554は、インタフェース552の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。電力エンジン560は、インタフェース552の出力に接続された入力と、キュー514の入力に接続された出力と、を有する。電力エンジン560は、構成レジスタ562のセットと、マイクロコントローラ(μC)564と、セルフリフレッシュコントローラ(SLFREF/PE)566と、信頼性のある読出し/書込みタイミングエンジン(RRW/TE)568と、を含む。構成レジスタ562は、AXIバスを介してプログラムされており、メモリコントローラ500内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ562は、図5に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ566は、リフレッシュロジック532によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し/書込みタイミングエンジン568は、DDRインタフェース最大読出しレイテンシ(MRL)トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はI/Oデバイスに提供する。
メモリチャネルコントローラ510は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器522は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー520は、プリデコードされた情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレス生成器522がどのように復号するのかを決定するために、構成情報を記憶する。アービタ538は、復号化されたアドレス情報と、タイミングブロック534によって示されたタイミング適格性情報と、ページテーブル536によって示されたアクティブページ情報と、を使用して、例えばQoS要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ538は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ538は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
図6は、いくつかの実施形態による、図1のデータ処理システム100の一部に対応するデータ処理システム600のブロック図である。データ処理システム600は、概して、「MC」610と付されたメモリコントローラと、PHY620と、メモリモジュール630と、を含む。
メモリコントローラ610は、例えばCPUコア212又はグラフィックスコア220等のプロセッサのメモリアクセスエージェントからメモリアクセス要求を受信し、このメモリアクセスエージェントへのメモリ応答を提供する。メモリコントローラ610は、図2のメモリコントローラ290の何れかに対応する。メモリコントローラ610は、DFI互換バスを介してPHY620にメモリアクセスを出力し、PHY620から応答を受信する。
PHY620は、DFIバスを介してメモリコントローラ610に接続されている。PHY620は、「C/A」と付された1セットのコマンド及びアドレス出力と、64ビットのデータ及び8ビットのECCを含む「DQ」と付された1セットの72の双方向データ信号とを提供することによって、受信したメモリアクセスに応答する物理的シグナリングを実行する。
メモリモジュール630は、任意の数のメモリタイプ及びスピードグレードをサポートすることができる。図示した実施形態において、メモリモジュール630は、「DDR4」と付された1セットのメモリチップ640と、「RCD」と付されたレジスタクロックドライバ650と、それぞれ「B」と付された1セットのバッファ660と、を含むDDR4レジスタードDIMM(RDIMM)である。メモリチップ640は、MビットセットのN倍のメモリチップを含む。72のデータ信号(64ビットのデータ+8ビットのECC)をサポートするためには、M×N=72である。例えば、各メモリチップが4倍(N=4)である場合、メモリモジュール620は、18個のDDR4メモリチップを含む。或いは、各メモリチップが8倍(N=8)である場合、メモリモジュール620は、9個のDDR4メモリチップを含む。各バッファ660は、1×N個のメモリチップと関連しており、対応するNビットのデータをラッチするために使用される。図6に示す例において、メモリモジュール630は、DDR4メモリを含み、C/A信号は、DDR4仕様に記載されている信号を含む。DDR4仕様は、RCD650によって受信されラッチされた同一のC/A信号が各メモリチップ640に対して左右に再駆動される、「フライバイ」アーキテクチャを指定する。しかしながら、データ信号DQは、対応するバッファ及びメモリのみに与えられる。
メモリモジュール630は、レジスタ制御ワード(RCW)にプログラムされたRCD650、及び、バッファ制御ワード(BCW)にプログラムされたバッファ660の制御情報に従って動作する。よって、メモリコントローラ610は、メモリモジュール630を低電力状態にすると、以下に十分に説明する方法でRCW及びBCWの設定を変更する。
データ処理システム600は、メモリモジュール630としてレジスタ付きバッファ付きDDR4 DRAM DIMMを使用しているが、メモリコントローラ610及びPHY620は、いくつかの異なるタイプのメモリモジュールにインタフェースすることができる。特に、メモリコントローラ610及びPHY620は、いくつかの異なるタイプのメモリ(例えば、DDR、FLASH、PCM等)、いくつかの異なるレジスタ状態(未使用、RCD、フラッシュコントローラ等)、及び、いくつかの異なるバッファ状態(未使用、データバッファのみ等)の多種多様な組み合わせをサポートすることができる。メモリコントローラ610は、これらの組み合わせをサポートするために、システムBIOSが特定のメモリシステム特性についてプログラムすることができる低電力モードに移行及び抜け出るための独自のプランを可能にするアーキテクチャを実装する。これらの特徴について以下に説明する。
図7は、いくつかの実施形態による、図5のメモリチャネルコントローラ550の一部に対応するメモリチャネルコントローラ700のブロック図である。メモリチャネルコントローラ700は、上記の図5に示すようなUMCSMN552及びセルフリフレッシュコントローラ566と、メモリ動作(MOP)アレイ710と、を含む。UMCSMN552は、上述したように、SMNに接続するための第1ポートを含み、本明細書に関連して詳細に示すように、データファブリック250から「電力要求(POWER REQUEST)」と付された電力状態変更要求信号を受信するための入力と、データファブリック250への「電力肯定応答(POWER ACKNOWLEDGE)」と付された電力状態変更肯定応答信号を提供するための出力と、を含む。また、UMCSMN552は、「M_PSTATE REQ」と付されたメモリ電力状態変更要求信号を提供するための第1出力と、MOPアレイ710に記憶するためのデータを提供するための第2出力と、を有する第2ポートを含む。セルフリフレッシュコントローラ566は、UMCSMN552の第2ポートの第1出力に接続された入力と、双方向ポートと、復号されたMMOPをBEQ514に提供するためにBEQ514に接続された出力と、を含む。MOPアレイ710は、UMCSMN552の第2ポートの第2出力に接続された入力と、セルフリフレッシュコントローラ566への双方向接続と、を有しており、コマンド(すなわち、MOP)を記憶するための第1部分712と、データを記憶するための第2部分714と、に分割されている。
システムBIOSメモリ157に記憶されたシステムBIOSは、起動時に、メモリシステム120に対してクエリし、インストールされたメモリのタイプ及びその機能を判別する。通常、システム内の各DIMM上のシリアルプレゼンス検出(SPD)メモリ内のレジスタを読み出すことによって行われる。例えば、PHYは、DDR3、DDR4、低電力DDR4(LPDDR4)及びグラフィックスDDRバージョン5(gDDR5)メモリのうち何れか1つをサポートするように構成されてもよい。メモリシステム120にインストールされたメモリのタイプ及び機能を検出したことに応じて、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始するコマンドシーケンスをMOPアレイ710に投入する。
図示した実施形態において、メモリチャネルコントローラ550は、ACPI(Advanced Configuration and Power Interface)仕様に記載されたモデルに従い定義された様々なデバイスの低電力状態をサポートする。ACPI仕様によれば、デバイス(メモリコントローラ500等)の動作状態は、D0状態又は「完全にオン」状態として知られている。他の状態は低電力状態であり、D1、D2、D3状態を含み、これらのうちD3状態は「オフ」状態である。メモリコントローラ500は、メモリシステム120をメモリコントローラ500のD状態に対応する低電力状態にし、D0状態において周波数及び/又は電圧を変化させることができる。UMCSMN552は、電力要求を受信すると、どの電力状態が要求されているのかを示すために、M_PSTATE REQ信号をセルフリフレッシュコントローラ566に提供する。セルフリフレッシュコントローラ566は、メモリチップと、DIMMのRCW及びBCW(サポートされている場合)とを、要求されたD状態に適した状態にするMOPシーケンスを実行したことに応じて、MOPアレイ710にアクセスする。セルフリフレッシュコントローラ566は、インデックスをMOPアレイ710に出力し、MOPアレイ710は、これに応じて符号化コマンド(MOP)を返す。
メモリチャネルコントローラ550は、セルフリフレッシュコントローラ566用のファームウェアを形成するプログラム可能なコマンドを記憶するためのMOPアレイ710を含むことによって、異なる特性を有する多種多様なメモリタイプをサポートしながら比較的少量の回路面積を用いて実装される。さらに、未だ指定されていないが将来指定される可能性のあるメモリタイプ及び特性についてのメモリ状態の変更を可能にする上位互換アーキテクチャを提供する。したがって、メモリチャネルコントローラ550は、モジュール方式であり、費用のかかる将来の再設計の必要性を回避する。
これらのメモリコントローラデバイスの電力状態(D状態)とDRAM動作との間の相互作用について説明する。D0状態は、メモリコントローラ500の動作状態である。D0状態において、メモリコントローラ500は、異なるMEMCLK周波数及び関連するタイミングパラメータをそれぞれ有する4つのプログラム可能な電力状態(P状態)をサポートする。メモリコントローラ500は、P状態毎に1セットのレジスタを維持しており、P状態に関するタイミングパラメータを記憶し、コンテキストを定義する。メモリコントローラ500は、DRAMをセルフリフレッシュモードにして、P状態/コンテキストを変更する。MOPアレイ710は、適切なシーケンシングをサポートするために、D0状態における周波数変化と共に使用するための1セットのコマンドを含む。
D1状態は、ストップクロック状態として知られており、メモリ状態変更要求に使用される。メモリコントローラ500をD1状態にすると、出入りレイテンシは、PHY620を再トレーニングする必要がある場合を除いて最も低い。メモリコントローラ500は、通常、D1電力状態変更要求の結果として如何なるアービトレーションキューエントリもフラッシュしない。しかしながら、メモリコントローラ500は、保留中のリフレッシュを通常実行しないが、コマンドキュー520内の全ての書込みを事前にフラッシュする。メモリコントローラ500は、システム内の全てのメモリチップをプリチャージパワーダウン又はセルフリフレッシュの何れかにする。
D2状態は、スタンバイ状態として知られており、システムC1/C2/C3及びストップクロック/スタッタ状態に対応する。D2状態は、メモリコントローラ500自体の動作にとってより低電力状態である。D2状態において、メモリコントローラ500は、ローカルクロックゲーティング及びオプションのパワーゲーティングを使用して、電力をさらに低下させる。メモリコントローラ500は、コマンドキュー520からの書込み及び読出しをフラッシュする。D2状態において、メモリコントローラ500は、自動セルフリフレッシュを有効にした状態で、システム内の全てのメモリを、同様にプリチャージパワーダウンにする。しかしながら、D2は、よりディープなパワー状態であるため、自動セルフリフレッシュを用いてプリチャージパワーダウンに移行する前に、必要とされる(owed)リフレッシュをすぐに実行する。
D3状態は、サスペンド状態として知られている。メモリコントローラ500は、2つのD3状態をサポートする。第1のD3状態は、システムS3状態に使用される。メモリコントローラ500は、システムS3状態へのエントリ(移行)を見越して、DRAM及びPHYを最低電力状態にする。メモリコントローラ500は、コマンドキュー520からの書込みをフラッシュし、保留中のリフレッシュサイクルを実行する。第2のD3状態は、非同期DRAMリフレッシュ(ADR)スタイルのセルフリフレッシュに使用される。ADRは、停電又はシステムクラッシュの間に保留中の書込みデータを不揮発性メモリにフラッシュするために、サーバで使用される機能である。自動セルフリフレッシュを有効にした状態でDRAM及びPHYをプリチャージパワーダウンにする。
本明細書で使用されているように、電力要求信号は、任意の電力状態から他の電力状態への変更を示す。利用可能な電力状態は、メモリのタイプによって異なる。さらに、本明細書で使用されているように、「低電力状態」は、他の状態と比較して節電する状態を意味する。例えば、DDR4 SDRAMは、セルフリフレッシュ及びプリチャージパワーダウンとして知られる2つの低電力状態をサポートする。しかしながら、LPDDR4は、アクティブパワーダウン、セルフリフレッシュパワーダウン及びアイドルパワーダウンとして知られる3つの低電力状態をサポートする。これらの状態に出入りすることができる条件は異なり、対応する公開されているJEDEC規格の状態図に規定されており、「低電力状態」はこれらの状態のうち何れかを含む。
MOPアレイ710は、これらの電力状態の変化の全てをサポートするためのコマンドの効率的な符号化を可能にするコマンドフォーマットをサポートする。MOPアレイ710は、4つのP状態コンテキストの各々に対して「SrEnterMOP」及び「SrExitMOP」として知られる2つのアレイを使用する。SrEnterMOPは、P状態要求に対してセルフリフレッシュに移行する前に処理される。SrExitMOPは、P状態要求に対してセルフリフレッシュを抜け出た後に処理される。MOPアレイは、モードレジスタ(MR)、DRAM毎のアクセス可能性(PDA)を有するMR、レジスタ制御ワード(RCW)又はバッファ制御ワード(BCW)コマンドのシーケンシャルリストを指定する。セルフリフレッシュコントローラ566は、電力状態変更要求を受信すると、MOPアレイ710内の選択されたコンテキストに対するコマンドにアクセスして、メモリシステムに発行されたMOPのシーケンス及びタイミングを決定する。
MOP712の一部は、対応する1つ以上のD状態を示すフィールドを含む。したがって、セルフリフレッシュコントローラ566は、現在のコンテキストには適用できないMOPを無視して、特定のコンテキストに適用可能なコマンドについて最初の位置から開始するMOPアレイ712を走査する。また、MOPアレイ712は、適切な場合に、メモリチップの動的タイミングパラメータを満たすために、MOP間の適切なタイミングを決定するためのカウンタ値を含む。セルフリフレッシュコントローラ566は、コマンドシーケンスを開始した後に、電力状態変更についてのシーケンスの終了を示すヌルエントリに遭遇するまでMOPアレイ712を走査し続け、有効なコマンドを実行し続ける。電力状態変更についてのコマンドの効率的なストレージを可能にするために使用することができるMOPアレイ712のフィールドの一例を次に説明する。
図8は、いくつかの実施形態による、図7のMOPアレイ710のエントリ800のブロック図である。エントリ800は、MOPを定義する様々な符号化ビットフィールドを含む40ビットのエントリである。サポートされているビットフィールドは、以下の表1に示されている。
Figure 2019520640
MOPアレイ712は、セルフリフレッシュコントローラ566が、許可された状態変更に対して要求されたMOPを適切に復号して発行するように続く、様々なプログラミング要件を有する。セルフリフレッシュコントローラ566は、最初のヌルエントリがアレイから読み出されるまで、分岐することなく線形的にMOPを復号して発行する。ヌルエントリは、MOP_RANKの全てのビット及びMOP_CIDの全てのビットがゼロであるエントリである。したがって、システムBIOSがMOPアレイ712をプログラムする場合、コンテキスト毎に少なくとも1つのヌルエントリをプログラムすべきである。
MOPは、MOP_VLD_D1、MOP_VLD_D2及びMOP_VLD_D3のうち2つ以上を設定することによって、異なるD状態によって共有することができる。MOPは、MOP_VLD_D1、MOP_VLD_D2及びMOP_VLD_D3のうち対応する1つをクリアすることによって、特定のD状態によってスキップされる。
D状態エントリルーチン(SrEnterMOP)は一定の要件を含む。すなわち、パリティが有効な場合に、パリティを無効にするコマンドを含める必要がある。レジスタードDIMM(RDIMM)の推奨順序は、最初にDRAMチップのパリティを無効にしてから、バッファのパリティを無効にすることである。また、コマンド間遅延時間(tccd)をプログラムするコマンドを含める必要があり、このコマンドは、DDR4仕様に従って、モードレジスタ6(MR6)のビット12〜10に時間を設定することによってプログラムされる。また、RDIMMを含むシステムでは、ターゲットレジスタ制御ワードRC0A及びRC3xをプログラムするためのコマンドを含める必要がある。
また、D状態終了ルーチン(SrExitMOP)も一定の要件を含む。すなわち、パリティが有効になっている場合には、パリティを有効にするコマンドを含める必要がある。RDIMMの推奨設定は、レジスタ内でのみパリティを有効にすることである。
単一のMOPエントリは、複数のチップ選択をターゲットとすると予想される。偶数/奇数のチップ選択が非対称の設定を意図的に受信していない限り、MOP_RANKは、全ての設定されたチップ選択を反映することが推奨される。この点について、BEQ514は、反転が可能である場合に単一のMOPを2つのコマンドに変換し、反転及びミラーリングの両方が可能である場合に単一のMOPを4つのコマンドに変換するように、反転及びミラーリングを可能にするモードを有する。例えば、クアッドランクDIMMの場合、符号化されたチップ選択を含むクアッドランクRDIMMについて、モードレジスタセットコマンド毎に2つのMOPエントリを使用することができる。
MOPアレイ712は、コマンドの効率的な符号化を可能にし、これを小さいサイズで実装することを可能にする様々なフィールドをサポートする。例えば、セルフリフレッシュコントローラ566がMOPアレイ712にアクセスするために使用するコマンド走査技術は、各低電力状態に対するコマンドを複製するのを必要とすることなく、複数の低電力状態に対して特定のコマンドを使用することを可能にする。さらに、ヌルエントリを使用して終了条件を知らせることは、セルフリフレッシュコントローラ566が所望の状態変更及びコンテキストに基づいてエントリポイント及びエグジットポイントを計算するのを必要とすることなく、各コマンドシーケンスの終了を符号化する効率的な方法である。
したがって、本明細書に記載されるメモリコントローラは、コントローラ及びプログラマブルMOPアレイを使用して、多種多様な利用可能なメモリタイプ及びDIMM構成の何れかをサポートする。コントローラは、電力状態変更要求信号のアクティベーションに応じて、MOPアレイにアクセスして少なくとも1つのエントリをフェッチし、このエントリによって示される少なくとも1つのメモリ動作を発行して電力状態変更要求を実行する。このように構成されているので、MOPアレイは、メモリコントローラがコンパクトな回路を用いて多種多様なメモリタイプ及び構成をサポートするのを可能にする。さらに、システムBIOSは、スタートアップ時にメモリの構成を決定し、このシステム内の特定のタイプのメモリの電力状態変更動作に対応するエントリのセットを用いてMOPアレイをプログラムすることができる。
メモリコントローラは、ハードウェア及びソフトウェアの様々な組み合わせで実装することができる。BIOSメモリに記憶され、システムBIOSによってMOPアレイにロードされる等のソフトウェアコンポーネントのいくつかは、少なくとも1つのプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に記憶され得る。さらに、電力状態変更に使用されるいくつかの共通動作をマイクロコントローラ564等の他のハードウェアに実装して、MOPアレイのフィールドの数及び/又はサイズを簡略化することができる。
図5のメモリコントローラ500又はその一部は、集積回路を製造するために直接的又は間接的にプログラムによって読み出され使用され得るデータベース又は他のデータ構造の形態でコンピュータアクセス可能なデータ構造によって記載又は表現することができる。例えば、このデータ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、その記述を合成して合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出すことができる。ネットリストは、集積回路を含むハードウェアの機能性も表すゲートのセットを含む。その後、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次に、マスクを様々な半導体製造工程に使用して、集積回路を製造することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、必要に応じてグラフィックデータシステム(GDS)IIデータであってもよい。
特定の実施形態について説明したが、これらの実施形態に対する様々な変更は、当業者に明らかであろう。例えば、サポートされているメモリデバイスの範囲は、異なる実施形態では変わることになり、上述した例に限定されない。また、MOPアレイのフィールド定義は、異なる実施形態では変わるであろう。さらに、エントリが適用される特定の電力状態を示すフィールドを含むものとしてMOPアレイ710を説明したが、他の実施形態において、MOPアレイは、特定のサポートされた電力状態変更要求又はターゲット電力空間に対応するエントリアドレス及びエグジットアドレスによって編成することができる。
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することが意図されている。
本開示は、概して、データ処理システムに関し、より具体的には、低電力状態を有するメモリとインタフェースをとるデータ処理システム用のメモリコントローラに関する。
コンピュータシステムは、通常、安価で高密度なダイナミックランダムアクセスメモリ(DRAM)チップをメインメモリに使用する。今日販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって公布された様々なダブルデータレート(DDR)DRAM規格と互換性がある。DDR DRAMは、様々な低電力モードを提供することによって、高性能及び低電力動作の両方を提供する。これらの低電力モードのうち1つは、プリチャージパワーダウンとして知られている。プリチャージパワーダウンの間、全てのバンクがプリチャージされ、オンチップ遅延ロックループ(DLL)を無効にし、入力クロックをオフにし、出力バッファを無効にして、消費電力を大幅に減らすことができる。プリチャージパワーダウンは比較的早く終了するため、DLLを実行したままにすることで終了時間を短縮することができる。
メモリコントローラは、今日市場に出回っている様々な想定されるDDRメモリデバイスをサポートすることが望ましい。例えば、DDRバージョン3(DDR3)、DDRバージョン4(DDR4)、低電力(LP)DDR3(LPDDR3)、LPDDR4及びグラフィックスDDRバージョン5(gDDR5)等は、全て現在利用可能な選択肢である。しかしながら、それぞれ異なるDDRメモリデバイスは、異なるセットのモードレジスタ(MR)を有しており、異なる数及び構成のメモリバンクを有することができ、異なる低電力モードをサポートすることができる。したがって、これらの全てのバリエーションに対して低電力モードを効率的にサポートするように、単一のメモリコントローラを設計することが困難であった。
いくつかの実施形態による、データ処理システムのブロック図である。 図1のデータ処理システムでの使用に適したアドバンストプロセッシングユニット(APU)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適したメモリコントローラ及び関連する物理インタフェース(PHY)のブロック図である。 いくつかの実施形態による、図2のAPUでの使用に適した他のメモリコントローラ及び関連するPHYのブロック図である。 いくつかの実施形態による、メモリコントローラのブロック図である。 いくつかの実施形態による、図1のデータ処理システムの一部に対応するデータ処理システムのブロック図である。 いくつかの実施形態による、図5のメモリチャネルコントローラの一部に対応するメモリチャネルコントローラのブロック図である。 いくつかの実施形態による、図7のMOPアレイのエントリのブロック図である。
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」という用語及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
以下に説明するように、メモリコントローラは、コントローラと、メモリ動作(MOP)アレイと、を含む。コントローラは、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を有する。MOPアレイは、複数のエントリを含み、各エントリは、複数の符号化フィールドを有する。コントローラは、電力状態変更要求信号のアクティベーションに応じて、MOPアレイにアクセスして少なくとも1つのエントリをフェッチし、そのエントリによって示される少なくとも1つのメモリ動作を発行する。メモリコントローラは、例えば、電力状態変更要求を実施するために使用される特定のメモリ動作を記述したMOPアレイの部分を含むことが可能である。例えば、DDR4及びLPDDR4 DRAMは、異なるステートマシンと、異なる低電力モードと、を実装しており、アクティブ状態から低電力状態に移行するための異なるシーケンスを要求する。ある場合には、メモリコントローラは、MOPアレイを使用して、DDRレジスタ付きDIMMのレジスタ制御ワード(RCW)又はバッファ制御ワード(BCW)に書き込まれるようにコマンドを定義することができる。
別の形態では、このようなメモリコントローラを、プロセッサとメモリモジュールとを含む処理システムのプロセッサに含めることができる。プロセッサは、メモリコントローラとメモリシステムとの間に接続された物理インタフェース(PHY)をさらに含むことができる。
さらに別の形態では、メモリシステムの電力状態を制御するための方法が開示されている。電力状態変更信号を受信する。電力状態変更要求信号に応じて、メモリ動作(MOP)アレイにアクセスする。MOPアレイのエントリを少なくとも1つのメモリ動作に復号する。このように復号された各メモリ動作を出力する。所定の終了条件が発生するまで、MOPアレイ内の連続するエントリに対して、復号及び出力を繰り返す。所定の終了条件は、例えば、MOPアレイ内のヌルエントリであってもよい。受信した電力状態変更要求信号は、プリチャージパワーダウン、セルフリフレッシュパワーダウン又はアイドルパワーダウン等のアクティブ状態から低電力状態への変更、又は、アクティブ状態におけるある動作周波数から別の動作周波数への変更であってもよい。また、基本入出力システム(BIOS)は、メモリシステムの特性の検出に応じてMOPアレイをプログラムすることができる。
図1は、いくつかの実施形態による、データ処理システム100のブロック図である。データ処理システム100は、概して、アクセラレーテッドプロセッシングユニット(APU)の形態のデータプロセッサ110と、メモリシステム120と、PCIe(Peripheral Component Interconnect Express)システム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メモリ(例えば、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)及び高帯域幅メモリ(HBM)等)に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。以下により詳細に説明するように、データプロセッサ110は、オーバーヒートを回避し、サーマルオーバロードの可能性を低減するために、特定の状況において電力を抑制することができるメモリコントローラを備える。
図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と、書込みデータバッファ(WDB)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に双方向に接続されており、メモリチャネルコントローラ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は、概して、AXI(Advanced Extensible Interface, version 1)へのインタフェース552と、APBインタフェース554と、電力エンジン560と、を含む。インタフェース552は、SMNへの第1双方向接続であって、図5に別に示された「EVENT_n」と付されたイベント信号を受信するための入力を含む第1双方向接続と、出力と、を含む。APBインタフェース554は、インタフェース552の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。電力エンジン560は、インタフェース552の出力に接続された入力と、キュー514の入力に接続された出力と、を有する。電力エンジン560は、構成レジスタ562のセットと、マイクロコントローラ(μC)564と、セルフリフレッシュコントローラ(SLFREF/PE)566と、信頼性のある読出し/書込みタイミングエンジン(RRW/TE)568と、を含む。構成レジスタ562は、AXIバスを介してプログラムされており、メモリコントローラ500内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ562は、図5に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ566は、リフレッシュロジック532によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し/書込みタイミングエンジン568は、DDRインタフェース最大読出しレイテンシ(MRL)トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はI/Oデバイスに提供する。
メモリチャネルコントローラ510は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器522は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー520は、プリデコードされた情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレス生成器522がどのように復号するのかを決定するために、構成情報を記憶する。アービタ538は、復号化されたアドレス情報と、タイミングブロック534によって示されたタイミング適格性情報と、ページテーブル536によって示されたアクティブページ情報と、を使用して、例えばQoS要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ538は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ538は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
図6は、いくつかの実施形態による、図1のデータ処理システム100の一部に対応するデータ処理システム600のブロック図である。データ処理システム600は、概して、「MC」610と付されたメモリコントローラと、PHY620と、メモリモジュール630と、を含む。
メモリコントローラ610は、例えばCPUコア212又はグラフィックスコア220等のプロセッサのメモリアクセスエージェントからメモリアクセス要求を受信し、このメモリアクセスエージェントへのメモリ応答を提供する。メモリコントローラ610は、図2のメモリコントローラ290の何れかに対応する。メモリコントローラ610は、DFI互換バスを介してPHY620にメモリアクセスを出力し、PHY620から応答を受信する。
PHY620は、DFIバスを介してメモリコントローラ610に接続されている。PHY620は、「C/A」と付された1セットのコマンド及びアドレス出力と、64ビットのデータ及び8ビットのECCを含む「DQ」と付された1セットの72の双方向データ信号とを提供することによって、受信したメモリアクセスに応答する物理的シグナリングを実行する。
メモリモジュール630は、任意の数のメモリタイプ及びスピードグレードをサポートすることができる。図示した実施形態において、メモリモジュール630は、「DDR4」と付された1セットのメモリチップ640と、「RCD」と付されたレジスタクロックドライバ650と、それぞれ「B」と付された1セットのバッファ660と、を含むDDR4レジスタードDIMM(RDIMM)である。メモリチップ640は、MビットセットのN倍のメモリチップを含む。72のデータ信号(64ビットのデータ+8ビットのECC)をサポートするためには、M×N=72である。例えば、各メモリチップが4倍(N=4)である場合、メモリモジュール620は、18個のDDR4メモリチップを含む。或いは、各メモリチップが8倍(N=8)である場合、メモリモジュール620は、9個のDDR4メモリチップを含む。各バッファ660は、1×N個のメモリチップと関連しており、対応するNビットのデータをラッチするために使用される。図6に示す例において、メモリモジュール630は、DDR4メモリを含み、C/A信号は、DDR4仕様に記載されている信号を含む。DDR4仕様は、RCD650によって受信されラッチされた同一のC/A信号が各メモリチップ640に対して左右に再駆動される、「フライバイ」アーキテクチャを指定する。しかしながら、データ信号DQは、対応するバッファ及びメモリのみに与えられる。
メモリモジュール630は、レジスタ制御ワード(RCW)にプログラムされたRCD650、及び、バッファ制御ワード(BCW)にプログラムされたバッファ660の制御情報に従って動作する。よって、メモリコントローラ610は、メモリモジュール630を低電力状態にすると、以下に十分に説明する方法でRCW及びBCWの設定を変更する。
データ処理システム600は、メモリモジュール630としてレジスタ付きバッファ付きDDR4 DRAM DIMMを使用しているが、メモリコントローラ610及びPHY620は、いくつかの異なるタイプのメモリモジュールにインタフェースすることができる。特に、メモリコントローラ610及びPHY620は、いくつかの異なるタイプのメモリ(例えば、DDR、FLASH、PCM等)、いくつかの異なるレジスタ状態(未使用、RCD、フラッシュコントローラ等)、及び、いくつかの異なるバッファ状態(未使用、データバッファのみ等)の多種多様な組み合わせをサポートすることができる。メモリコントローラ610は、これらの組み合わせをサポートするために、システムBIOSが特定のメモリシステム特性についてプログラムすることができる低電力モードに移行及び抜け出るための独自のプランを可能にするアーキテクチャを実装する。これらの特徴について以下に説明する。
図7は、いくつかの実施形態による、図5のメモリチャネルコントローラ550の一部に対応するメモリチャネルコントローラ700のブロック図である。メモリチャネルコントローラ700は、上記の図5に示すようなUMCSMN552及びセルフリフレッシュコントローラ566と、メモリ動作(MOP)アレイ710と、を含む。UMCSMN552は、上述したように、SMNに接続するための第1ポートを含み、本明細書に関連して詳細に示すように、データファブリック250から「電力要求(POWER REQUEST)」と付された電力状態変更要求信号を受信するための入力と、データファブリック250への「電力肯定応答(POWER ACKNOWLEDGE)」と付された電力状態変更肯定応答信号を提供するための出力と、を含む。また、UMCSMN552は、「M_PSTATE REQ」と付されたメモリ電力状態変更要求信号を提供するための第1出力と、MOPアレイ710に記憶するためのデータを提供するための第2出力と、を有する第2ポートを含む。セルフリフレッシュコントローラ566は、UMCSMN552の第2ポートの第1出力に接続された入力と、双方向ポートと、復号されたMMOPをBEQ514に提供するためにBEQ514に接続された出力と、を含む。MOPアレイ710は、UMCSMN552の第2ポートの第2出力に接続された入力と、セルフリフレッシュコントローラ566への双方向接続と、を有しており、コマンド(すなわち、MOP)を記憶するための第1部分712と、データを記憶するための第2部分714と、に分割されている。
システムBIOSメモリ157に記憶されたシステムBIOSは、起動時に、メモリシステム120に対してクエリし、インストールされたメモリのタイプ及びその機能を判別する。通常、システム内の各DIMM上のシリアルプレゼンス検出(SPD)メモリ内のレジスタを読み出すことによって行われる。例えば、PHYは、DDR3、DDR4、低電力DDR4(LPDDR4)及びグラフィックスDDRバージョン5(gDDR5)メモリのうち何れか1つをサポートするように構成されてもよい。メモリシステム120にインストールされたメモリのタイプ及び機能を検出したことに応じて、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始するコマンドシーケンスをMOPアレイ710に投入する。
図示した実施形態において、メモリチャネルコントローラ550は、ACPI(Advanced Configuration and Power Interface)仕様に記載されたモデルに従い定義された様々なデバイスの低電力状態をサポートする。ACPI仕様によれば、デバイス(メモリコントローラ500等)の動作状態は、D0状態又は「完全にオン」状態として知られている。他の状態は低電力状態であり、D1、D2、D3状態を含み、これらのうちD3状態は「オフ」状態である。メモリコントローラ500は、メモリシステム120をメモリコントローラ500のD状態に対応する低電力状態にし、D0状態において周波数及び/又は電圧を変化させることができる。UMCSMN552は、電力要求を受信すると、どの電力状態が要求されているのかを示すために、M_PSTATE REQ信号をセルフリフレッシュコントローラ566に提供する。セルフリフレッシュコントローラ566は、メモリチップと、DIMMのRCW及びBCW(サポートされている場合)とを、要求されたD状態に適した状態にするMOPシーケンスを実行したことに応じて、MOPアレイ710にアクセスする。セルフリフレッシュコントローラ566は、インデックスをMOPアレイ710に出力し、MOPアレイ710は、これに応じて符号化コマンド(MOP)を返す。
メモリチャネルコントローラ550は、セルフリフレッシュコントローラ566用のファームウェアを形成するプログラム可能なコマンドを記憶するためのMOPアレイ710を含むことによって、異なる特性を有する多種多様なメモリタイプをサポートしながら比較的少量の回路面積を用いて実装される。さらに、未だ指定されていないが将来指定される可能性のあるメモリタイプ及び特性についてのメモリ状態の変更を可能にする上位互換アーキテクチャを提供する。したがって、メモリチャネルコントローラ550は、モジュール方式であり、費用のかかる将来の再設計の必要性を回避する。
これらのメモリコントローラデバイスの電力状態(D状態)とDRAM動作との間の相互作用について説明する。D0状態は、メモリコントローラ500の動作状態である。D0状態において、メモリコントローラ500は、異なるMEMCLK周波数及び関連するタイミングパラメータをそれぞれ有する4つのプログラム可能な電力状態(P状態)をサポートする。メモリコントローラ500は、P状態毎に1セットのレジスタを維持しており、P状態に関するタイミングパラメータを記憶し、コンテキストを定義する。メモリコントローラ500は、DRAMをセルフリフレッシュモードにして、P状態/コンテキストを変更する。MOPアレイ710は、適切なシーケンシングをサポートするために、D0状態における周波数変化と共に使用するための1セットのコマンドを含む。
D1状態は、ストップクロック状態として知られており、メモリ状態変更要求に使用される。メモリコントローラ500をD1状態にすると、出入りレイテンシは、PHY620を再トレーニングする必要がある場合を除いて最も低い。メモリコントローラ500は、通常、D1電力状態変更要求の結果として如何なるアービトレーションキューエントリもフラッシュしない。しかしながら、メモリコントローラ500は、保留中のリフレッシュを通常実行しないが、コマンドキュー520内の全ての書込みを事前にフラッシュする。メモリコントローラ500は、システム内の全てのメモリチップをプリチャージパワーダウン又はセルフリフレッシュの何れかにする。
D2状態は、スタンバイ状態として知られており、システムC1/C2/C3及びストップクロック/スタッタ状態に対応する。D2状態は、メモリコントローラ500自体の動作にとってより低電力状態である。D2状態において、メモリコントローラ500は、ローカルクロックゲーティング及びオプションのパワーゲーティングを使用して、電力をさらに低下させる。メモリコントローラ500は、コマンドキュー520からの書込み及び読出しをフラッシュする。D2状態において、メモリコントローラ500は、自動セルフリフレッシュを有効にした状態で、システム内の全てのメモリを、同様にプリチャージパワーダウンにする。しかしながら、D2は、よりディープなパワー状態であるため、自動セルフリフレッシュを用いてプリチャージパワーダウンに移行する前に、必要とされる(owed)リフレッシュをすぐに実行する。
D3状態は、サスペンド状態として知られている。メモリコントローラ500は、2つのD3状態をサポートする。第1のD3状態は、システムS3状態に使用される。メモリコントローラ500は、システムS3状態へのエントリ(移行)を見越して、DRAM及びPHYを最低電力状態にする。メモリコントローラ500は、コマンドキュー520からの書込みをフラッシュし、保留中のリフレッシュサイクルを実行する。第2のD3状態は、非同期DRAMリフレッシュ(ADR)スタイルのセルフリフレッシュに使用される。ADRは、停電又はシステムクラッシュの間に保留中の書込みデータを不揮発性メモリにフラッシュするために、サーバで使用される機能である。自動セルフリフレッシュを有効にした状態でDRAM及びPHYをプリチャージパワーダウンにする。
本明細書で使用されているように、電力要求信号は、任意の電力状態から他の電力状態への変更を示す。利用可能な電力状態は、メモリのタイプによって異なる。さらに、本明細書で使用されているように、「低電力状態」は、他の状態と比較して節電する状態を意味する。例えば、DDR4 SDRAMは、セルフリフレッシュ及びプリチャージパワーダウンとして知られる2つの低電力状態をサポートする。しかしながら、LPDDR4は、アクティブパワーダウン、セルフリフレッシュパワーダウン及びアイドルパワーダウンとして知られる3つの低電力状態をサポートする。これらの状態に出入りすることができる条件は異なり、対応する公開されているJEDEC規格の状態図に規定されており、「低電力状態」はこれらの状態のうち何れかを含む。
MOPアレイ710は、これらの電力状態の変化の全てをサポートするためのコマンドの効率的な符号化を可能にするコマンドフォーマットをサポートする。MOPアレイ710は、4つのP状態コンテキストの各々に対して「SrEnterMOP」及び「SrExitMOP」として知られる2つのアレイを使用する。SrEnterMOPは、P状態要求に対してセルフリフレッシュに移行する前に処理される。SrExitMOPは、P状態要求に対してセルフリフレッシュを抜け出た後に処理される。MOPアレイは、モードレジスタ(MR)、DRAM毎のアクセス可能性(PDA)を有するMR、レジスタ制御ワード(RCW)又はバッファ制御ワード(BCW)コマンドのシーケンシャルリストを指定する。セルフリフレッシュコントローラ566は、電力状態変更要求を受信すると、MOPアレイ710内の選択されたコンテキストに対するコマンドにアクセスして、メモリシステムに発行されたMOPのシーケンス及びタイミングを決定する。
MOP712の一部は、対応する1つ以上のD状態を示すフィールドを含む。したがって、セルフリフレッシュコントローラ566は、現在のコンテキストには適用できないMOPを無視して、特定のコンテキストに適用可能なコマンドについて最初の位置から開始するMOPアレイ712を走査する。また、MOPアレイ712は、適切な場合に、メモリチップの動的タイミングパラメータを満たすために、MOP間の適切なタイミングを決定するためのカウンタ値を含む。セルフリフレッシュコントローラ566は、コマンドシーケンスを開始した後に、電力状態変更についてのシーケンスの終了を示すヌルエントリに遭遇するまでMOPアレイ712を走査し続け、有効なコマンドを実行し続ける。電力状態変更についてのコマンドの効率的なストレージを可能にするために使用することができるMOPアレイ712のフィールドの一例を次に説明する。
図8は、いくつかの実施形態による、図7のMOPアレイ710のエントリ800のブロック図である。エントリ800は、MOPを定義する様々な符号化ビットフィールドを含む40ビットのエントリである。サポートされているビットフィールドは、以下の表1に示されている。
Figure 2019520640
MOPアレイ712は、セルフリフレッシュコントローラ566が、許可された状態変更に対して要求されたMOPを適切に復号して発行するように続く、様々なプログラミング要件を有する。セルフリフレッシュコントローラ566は、最初のヌルエントリがアレイから読み出されるまで、分岐することなく線形的にMOPを復号して発行する。ヌルエントリは、MOP_RANKの全てのビット及びMOP_CIDの全てのビットがゼロであるエントリである。したがって、システムBIOSがMOPアレイ712をプログラムする場合、コンテキスト毎に少なくとも1つのヌルエントリをプログラムすべきである。
MOPは、MOP_VLD_D1、MOP_VLD_D2及びMOP_VLD_D3のうち2つ以上を設定することによって、異なるD状態によって共有することができる。MOPは、MOP_VLD_D1、MOP_VLD_D2及びMOP_VLD_D3のうち対応する1つをクリアすることによって、特定のD状態によってスキップされる。
D状態エントリルーチン(SrEnterMOP)は一定の要件を含む。すなわち、パリティが有効な場合に、パリティを無効にするコマンドを含める必要がある。レジスタードDIMM(RDIMM)の推奨順序は、最初にDRAMチップのパリティを無効にしてから、バッファのパリティを無効にすることである。また、コマンド間遅延時間(tccd)をプログラムするコマンドを含める必要があり、このコマンドは、DDR4仕様に従って、モードレジスタ6(MR6)のビット12〜10に時間を設定することによってプログラムされる。また、RDIMMを含むシステムでは、ターゲットレジスタ制御ワードRC0A及びRC3xをプログラムするためのコマンドを含める必要がある。
また、D状態終了ルーチン(SrExitMOP)も一定の要件を含む。すなわち、パリティが有効になっている場合には、パリティを有効にするコマンドを含める必要がある。RDIMMの推奨設定は、レジスタ内でのみパリティを有効にすることである。
単一のMOPエントリは、複数のチップ選択をターゲットとすると予想される。偶数/奇数のチップ選択が非対称の設定を意図的に受信していない限り、MOP_RANKは、全ての設定されたチップ選択を反映することが推奨される。この点について、BEQ514は、反転が可能である場合に単一のMOPを2つのコマンドに変換し、反転及びミラーリングの両方が可能である場合に単一のMOPを4つのコマンドに変換するように、反転及びミラーリングを可能にするモードを有する。例えば、クアッドランクDIMMの場合、符号化されたチップ選択を含むクアッドランクRDIMMについて、モードレジスタセットコマンド毎に2つのMOPエントリを使用することができる。
MOPアレイ712は、コマンドの効率的な符号化を可能にし、これを小さいサイズで実装することを可能にする様々なフィールドをサポートする。例えば、セルフリフレッシュコントローラ566がMOPアレイ712にアクセスするために使用するコマンド走査技術は、各低電力状態に対するコマンドを複製するのを必要とすることなく、複数の低電力状態に対して特定のコマンドを使用することを可能にする。さらに、ヌルエントリを使用して終了条件を知らせることは、セルフリフレッシュコントローラ566が所望の状態変更及びコンテキストに基づいてエントリポイント及びエグジットポイントを計算するのを必要とすることなく、各コマンドシーケンスの終了を符号化する効率的な方法である。
したがって、本明細書に記載されるメモリコントローラは、コントローラ及びプログラマブルMOPアレイを使用して、多種多様な利用可能なメモリタイプ及びDIMM構成の何れかをサポートする。コントローラは、電力状態変更要求信号のアクティベーションに応じて、MOPアレイにアクセスして少なくとも1つのエントリをフェッチし、このエントリによって示される少なくとも1つのメモリ動作を発行して電力状態変更要求を実行する。このように構成されているので、MOPアレイは、メモリコントローラがコンパクトな回路を用いて多種多様なメモリタイプ及び構成をサポートするのを可能にする。さらに、システムBIOSは、スタートアップ時にメモリの構成を決定し、このシステム内の特定のタイプのメモリの電力状態変更動作に対応するエントリのセットを用いてMOPアレイをプログラムすることができる。
メモリコントローラは、ハードウェア及びソフトウェアの様々な組み合わせで実装することができる。BIOSメモリに記憶され、システムBIOSによってMOPアレイにロードされる等のソフトウェアコンポーネントのいくつかは、少なくとも1つのプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に記憶され得る。さらに、電力状態変更に使用されるいくつかの共通動作をマイクロコントローラ564等の他のハードウェアに実装して、MOPアレイのフィールドの数及び/又はサイズを簡略化することができる。
図5のメモリコントローラ500又はその一部は、集積回路を製造するために直接的又は間接的にプログラムによって読み出され使用され得るデータベース又は他のデータ構造の形態でコンピュータアクセス可能なデータ構造によって記載又は表現することができる。例えば、このデータ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、その記述を合成して合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出すことができる。ネットリストは、集積回路を含むハードウェアの機能性も表すゲートのセットを含む。その後、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次に、マスクを様々な半導体製造工程に使用して、集積回路を製造することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、必要に応じてグラフィックデータシステム(GDS)IIデータであってもよい。
特定の実施形態について説明したが、これらの実施形態に対する様々な変更は、当業者に明らかであろう。例えば、サポートされているメモリデバイスの範囲は、異なる実施形態では変わることになり、上述した例に限定されない。また、MOPアレイのフィールド定義は、異なる実施形態では変わるであろう。さらに、エントリが適用される特定の電力状態を示すフィールドを含むものとしてMOPアレイ710を説明したが、他の実施形態において、MOPアレイは、特定のサポートされた電力状態変更要求又はターゲット電力空間に対応するエントリアドレス及びエグジットアドレスによって編成することができる。
1つの形態では、メモリコントローラ(500)は、コントローラ(566)と、メモリ動作アレイ(710)と、を備える。コントローラ(566)は、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含む。メモリ動作アレイ(710)は、複数のエントリを含み、各エントリ(800)は複数の符号化フィールドを備える。メモリ動作アレイ(710)は、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、複数のエントリ内の複数のタイプのメモリのうち特定のタイプのメモリについての異なるコマンドシーケンスを記憶するようにプログラム可能である。コントローラ(566)は、電力状態変更要求信号のアクティベーションに応じて、メモリ動作アレイ(710)にアクセスして少なくとも1つのエントリをフェッチし、少なくとも1つのエントリによって示される少なくとも1つのメモリ動作を発行する。複数の符号化フィールドのうち1つは、少なくとも1つのメモリデバイス電力状態の何れが少なくとも1つのエントリに対応しているかを示す電力状態フィールドを備えてもよい。
1つの態様によれば、少なくとも1つのメモリデバイス電力状態は、動的電圧状態、動的周波数状態及び低電力状態のうち1つに対応してもよい。
他の態様によれば、少なくとも1つのメモリデバイス電力状態は、アドバンストコンフィグレーションアンドパワーインタフェース(ACPI) D1状態、ACPI D2状態及びACPI D3状態のうち選択された1つに対応しており、ACPI D3状態は、ダブルデータレートメモリ(660)のセルフリフレッシュ状態に対応してもよい。
他の形態では、メモリシステム(130/140)の電力状態を制御する方法は、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、複数のタイプのメモリのうち特定のタイプのメモリについてのプログラム可能なコマンドのシーケンスを、メモリ動作(MOP)アレイ(710)に記憶することと、電力状態変更要求信号を受信することと、電力状態変更要求信号に応じて、MOPアレイ(710)にアクセスすることと、MOPアレイ(710)のエントリを少なくとも1つのメモリ動作に復号することと、少なくとも1つのメモリ動作を出力することと、所定の終了条件が発生するまで、MOPアレイ(710)内の連続するエントリのために、当該復号すること及び当該出力することを繰り返すことと、を含む。
1つの態様によれば、電力状態変更要求信号は、アクティブ状態から低電力状態に変更する要求であってもよい。
他の態様によれば、電力状態変更要求信号は、アクティブ状態において第1動作周波数から第2動作周波数に変更する要求であってもよい。
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することが意図されている。

Claims (20)

  1. 電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含むコントローラ(566)と、
    複数のエントリを含むメモリ動作アレイ(710)であって、各エントリ(800)は複数の符号化フィールドを備える、メモリ動作アレイと、を備え、
    前記コントローラ(566)は、前記電力状態変更要求信号のアクティベーションに応じて、前記メモリ動作アレイ(710)にアクセスして少なくとも1つのエントリをフェッチし、前記エントリによって示される少なくとも1つのメモリ動作を発行する、
    メモリコントローラ(500)。
  2. 前記メモリ動作は、ダブルデータレート(DDR)メモリモジュール(630)用のモードレジスタセット(MRS)コマンドを含む、
    請求項1のメモリコントローラ(500)。
  3. 前記メモリ動作は、前記DDRメモリモジュール(630)のレジスタ(650)を構成するためのレジスタ制御ワード書き込みコマンドを備える、
    請求項2のメモリコントローラ(500)。
  4. 前記メモリ動作は、前記DDRメモリモジュール(630)のデータバッファ(660)を構成するためのバッファ制御ワード書き込みコマンドを含む、
    請求項3のメモリコントローラ(500)。
  5. 前記複数のエントリは、少なくとも1つの有効なエントリと、後続のヌルエントリと、を含む、
    請求項1のメモリコントローラ(500)。
  6. 前記複数の符号化フィールドのうち1つは、少なくとも1つのメモリデバイス電力状態の何れが前記エントリに対応しているかを示す電力状態フィールドを備える、
    請求項1のメモリコントローラ(500)。
  7. 前記少なくとも1つのメモリデバイス電力状態は、動的電圧状態、動的周波数状態及び低電力状態のうち1つに対応する、
    請求項6のメモリコントローラ(500)。
  8. 前記少なくとも1つのメモリデバイス電力状態は、アドバンストコンフィグレーションアンドパワーインタフェース(ACPI) D1状態、ACPI D2状態及びACPI D3状態のうち選択された1つに対応しており、
    前記ACPI D3状態は、ダブルデータレートメモリ(660)のセルフリフレッシュ状態に対応する、
    請求項6のメモリコントローラ(500)。
  9. メモリシステム(130/140)の電力状態を制御する方法であって、
    電力状態変更要求信号を受信することと、
    前記電力状態変更要求信号に応じて、メモリ動作(MOP)アレイ(710)にアクセスすることと、
    前記MOPアレイ(710)のエントリを少なくとも1つのメモリ動作に復号することと、
    前記少なくとも1つのメモリ動作を出力することと、
    所定の終了条件が発生するまで、前記MOPアレイ(710)内の連続するエントリのために、前記復号すること及び前記出力することを繰り返すことと、を含む、
    方法。
  10. 前記所定の終了条件は、連続するエントリがヌルエントリである場合に発生する、
    請求項9の方法。
  11. 前記電力状態変更要求信号は、アクティブ状態から低電力状態に変更する要求である、
    請求項9の方法。
  12. 前記電力状態変更要求信号は、アクティブ状態において第1動作周波数から第2動作周波数に変更する要求である、
    請求項9の方法。
  13. 前記メモリシステム(130)の特性を検出したことに応じて、一連の動作を前記MOPアレイ(710)に記憶することをさらに含む、
    請求項9の方法。
  14. 前記記憶することは、
    基本入出力システム(BIOS)の制御下において、前記一連の動作を前記MOPアレイ(710)に記憶することを含む、
    請求項13の方法。
  15. メモリモジュール(134/136/138)を備えるメモリシステム(130)と、
    前記メモリシステム(130)に接続され、メモリコントローラ(500)を用いて前記メモリモジュール(134/136/138)にアクセスするように構成されたプロセッサ(110)と、を備え、
    前記メモリコントローラ(500)は、
    電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含むコントローラ(566)と、
    複数のエントリを含むメモリ動作アレイ(710)であって、各エントリは複数の符号化フィールドを備える、メモリ動作アレイ(710)と、を有しており、
    前記コントローラ(566)は、前記電力状態変更要求信号のアクティベーションに応じて、前記メモリ動作アレイ(710)にアクセスして少なくとも1つのエントリをフェッチし、前記エントリによって示される少なくとも1つのメモリ動作を発行する、
    システム(100)。
  16. 前記プロセッサ(110)は、
    前記プロセッサ(110)の動的動作に応じて前記電力状態変更要求を生成するシステム管理ユニット(130)を含む、
    請求項15のシステム(100)。
  17. 前記メモリモジュール(134/136/138)は、
    複数のダブルデータレート(DDR)メモリチップ(660)を含む、
    請求項15のシステム(100)。
  18. 前記メモリモジュール(134/136/138)は、
    複数のコマンド及びアドレス信号を受信するために前記プロセッサ(110)に接続される入力と、前記複数のDDRメモリチップ(660)に接続された出力と、を有するレジスタ(660)を含む、
    請求項17のシステム(100)。
  19. 前記メモリモジュール(134/136/138)は、
    前記プロセッサ(110)に接続された第1双方向データポートと、前記複数のDDRメモリチップ(660)に接続された第2双方向データポートと、を有する複数のデータバッファ(650)を含む、
    請求項17のシステム(100)。
  20. 前記プロセッサ(110)は、
    前記メモリコントローラ(500)と前記メモリシステム(620)との間に接続された物理インタフェース(PHY)(620)を含む、
    請求項15のシステム(100)。
JP2018561678A 2016-06-01 2016-09-23 セルフリフレッシュステートマシンmopアレイ Active JP6761873B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/170,872 US10198204B2 (en) 2016-06-01 2016-06-01 Self refresh state machine MOP array
US15/170,872 2016-06-01
PCT/US2016/053338 WO2017209782A1 (en) 2016-06-01 2016-09-23 Self refresh state machine mop array

Publications (2)

Publication Number Publication Date
JP2019520640A true JP2019520640A (ja) 2019-07-18
JP6761873B2 JP6761873B2 (ja) 2020-09-30

Family

ID=60478906

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018561678A Active JP6761873B2 (ja) 2016-06-01 2016-09-23 セルフリフレッシュステートマシンmopアレイ

Country Status (6)

Country Link
US (2) US10198204B2 (ja)
EP (1) EP3433752B1 (ja)
JP (1) JP6761873B2 (ja)
KR (1) KR20190004302A (ja)
CN (1) CN109154918B (ja)
WO (1) WO2017209782A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11755255B2 (en) 2014-10-28 2023-09-12 SK Hynix Inc. Memory device comprising a plurality of memories sharing a resistance for impedance matching
KR102358177B1 (ko) 2015-12-24 2022-02-07 에스케이하이닉스 주식회사 제어회로 및 제어회로를 포함하는 메모리 장치
US10067903B2 (en) 2015-07-30 2018-09-04 SK Hynix Inc. Semiconductor device
US10332582B2 (en) 2017-08-02 2019-06-25 Qualcomm Incorporated Partial refresh technique to save memory refresh power
US10698846B2 (en) * 2018-11-07 2020-06-30 Realtek Semiconductor Corporation DDR SDRAM physical layer interface circuit and DDR SDRAM control device
US11809382B2 (en) 2019-04-01 2023-11-07 Nutanix, Inc. System and method for supporting versioned objects
US11226905B2 (en) 2019-04-01 2022-01-18 Nutanix, Inc. System and method for mapping objects to regions
US11029993B2 (en) 2019-04-04 2021-06-08 Nutanix, Inc. System and method for a distributed key-value store
US12014213B2 (en) * 2019-09-09 2024-06-18 Advanced Micro Devices, Inc. Active hibernate and managed memory cooling in a non-uniform memory access system
US11704334B2 (en) 2019-12-06 2023-07-18 Nutanix, Inc. System and method for hyperconvergence at the datacenter
US11176986B2 (en) * 2019-12-30 2021-11-16 Advanced Micro Devices, Inc. Memory context restore, reduction of boot time of a system on a chip by reducing double data rate memory training
US11609777B2 (en) 2020-02-19 2023-03-21 Nutanix, Inc. System and method for multi-cluster storage
US11436229B2 (en) 2020-04-28 2022-09-06 Nutanix, Inc. System and method of updating temporary bucket based on object attribute relationships or metadata relationships
US11487787B2 (en) 2020-05-29 2022-11-01 Nutanix, Inc. System and method for near-synchronous replication for object store
US11664062B2 (en) 2020-07-24 2023-05-30 Advanced Micro Devices, Inc. Memory calibration system and method
US12001872B2 (en) 2020-10-14 2024-06-04 Nutanix, Inc. Object tiering from local store to cloud store
US11900164B2 (en) 2020-11-24 2024-02-13 Nutanix, Inc. Intelligent query planning for metric gateway
US11822370B2 (en) 2020-11-26 2023-11-21 Nutanix, Inc. Concurrent multiprotocol access to an object storage system
TWI773106B (zh) * 2021-01-28 2022-08-01 華邦電子股份有限公司 具有運算功能的記憶體裝置及其操作方法
US11934251B2 (en) * 2021-03-31 2024-03-19 Advanced Micro Devices, Inc. Data fabric clock switching
US11636054B2 (en) * 2021-03-31 2023-04-25 Advanced Micro Devices, Inc. Memory controller power states
US11516033B1 (en) 2021-05-31 2022-11-29 Nutanix, Inc. System and method for metering consumption
US20230031388A1 (en) * 2021-07-30 2023-02-02 Advanced Micro Devices, Inc. On-demand ip initialization within power states
US11899572B2 (en) 2021-09-09 2024-02-13 Nutanix, Inc. Systems and methods for transparent swap-space virtualization
US12032857B2 (en) 2021-11-22 2024-07-09 Nutanix, Inc. System and method for shallow copy
US20230342048A1 (en) * 2022-04-21 2023-10-26 Micron Technology, Inc. Self-Refresh Arbitration
US11983411B2 (en) * 2022-04-25 2024-05-14 Infineon Technologies LLC Methods, devices and systems for including alternate memory access operations over memory interface
US20240004560A1 (en) * 2022-06-29 2024-01-04 Advanced Micro Devices, Inc. Efficient memory power control operations

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523089B2 (en) * 2000-07-19 2003-02-18 Rambus Inc. Memory controller with power management logic
US6944708B2 (en) * 2002-03-22 2005-09-13 Intel Corporation Method of self-refresh in large memory arrays
KR100510496B1 (ko) * 2002-11-19 2005-08-26 삼성전자주식회사 페이지 길이를 변환할 수 있는 구조를 가지는 반도체메모리 장치 및 상기 반도체 메모리 장치의 페이지 길이변환방법
US20060181949A1 (en) * 2004-12-31 2006-08-17 Kini M V Operating system-independent memory power management
US7610497B2 (en) * 2005-02-01 2009-10-27 Via Technologies, Inc. Power management system with a bridge logic having analyzers for monitoring data quantity to modify operating clock and voltage of the processor and main memory
US8438328B2 (en) * 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US7561472B2 (en) * 2006-09-11 2009-07-14 Micron Technology, Inc. NAND architecture memory with voltage sensing
US7788414B2 (en) * 2007-01-16 2010-08-31 Lantiq Deutschland Gmbh Memory controller and method of controlling a memory
US8060705B2 (en) * 2007-12-14 2011-11-15 Qimonda Ag Method and apparatus for using a variable page length in a memory
US7971081B2 (en) * 2007-12-28 2011-06-28 Intel Corporation System and method for fast platform hibernate and resume
US20100005212A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Providing a variable frame format protocol in a cascade interconnected memory system
US8639874B2 (en) 2008-12-22 2014-01-28 International Business Machines Corporation Power management of a spare DRAM on a buffered DIMM by issuing a power on/off command to the DRAM device
US8742791B1 (en) 2009-01-31 2014-06-03 Xilinx, Inc. Method and apparatus for preamble detection for a control signal
US8799685B2 (en) * 2010-08-25 2014-08-05 Advanced Micro Devices, Inc. Circuits and methods for providing adjustable power consumption
WO2012115839A1 (en) 2011-02-23 2012-08-30 Rambus Inc. Protocol for memory power-mode control
US9698935B2 (en) * 2011-09-01 2017-07-04 Rambus Inc. Variable code rate transmission
US9195589B2 (en) 2011-12-27 2015-11-24 Intel Corporation Adaptive configuration of non-volatile memory
US20130262792A1 (en) 2012-03-27 2013-10-03 International Business Machines Corporation Memory device support of dynamically changing frequency in memory systems
BR112015019459B1 (pt) * 2013-03-15 2021-10-19 Intel Corporation Dispositivo para uso em um módulo de memória e método realizado em um módulo de memória
KR20150009295A (ko) * 2013-07-16 2015-01-26 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 슬리프 상태 제어 방법
KR102057504B1 (ko) * 2013-07-24 2020-01-22 삼성전자주식회사 어플리케이션 프로세서, 이를 구비하는 모바일 디바이스 및 전력 관리 방법
US9581612B2 (en) * 2013-08-26 2017-02-28 EveryFit, Inc. Systems and methods for a power efficient method for detecting wear and non-wear of a sensor
US9483096B2 (en) * 2013-12-06 2016-11-01 Sandisk Technologies Llc Host interface of a memory device supplied with regulated or non-regulated power based on operating mode of the memory device
US20160077561A1 (en) * 2014-09-11 2016-03-17 Kabushiki Kaisha Toshiba Memory system
US9711192B2 (en) * 2014-11-03 2017-07-18 Samsung Electronics Co., Ltd. Memory device having different data-size access modes for different power modes
KR20170045806A (ko) * 2015-10-20 2017-04-28 삼성전자주식회사 반도체 메모리 장치 및 이의 동작 방법
US20190243721A1 (en) * 2018-02-08 2019-08-08 Micron Technology, Inc. Backup operations from volatile to non-volatile memory

Also Published As

Publication number Publication date
WO2017209782A1 (en) 2017-12-07
CN109154918B (zh) 2023-08-15
US11221772B2 (en) 2022-01-11
US20190138234A1 (en) 2019-05-09
CN109154918A (zh) 2019-01-04
US20170351450A1 (en) 2017-12-07
KR20190004302A (ko) 2019-01-11
JP6761873B2 (ja) 2020-09-30
EP3433752A4 (en) 2019-11-27
EP3433752A1 (en) 2019-01-30
EP3433752B1 (en) 2022-05-04
US10198204B2 (en) 2019-02-05

Similar Documents

Publication Publication Date Title
US11221772B2 (en) Self refresh state machine mop array
CN112506422B (zh) 精细粒度刷新
JP6840145B2 (ja) 高速メモリインタフェースのためのコマンドアービトレーション
CN109564556B (zh) 具有条纹和读取/写入事务管理的存储器控制器仲裁器
JP7181863B2 (ja) データ処理システム、データプロセッサ及び方法
JP2022514128A (ja) メモリコントローラのリフレッシュスキーム
JP6761870B2 (ja) 低電力メモリのスロットリング
US11176986B2 (en) Memory context restore, reduction of boot time of a system on a chip by reducing double data rate memory training
KR20220116041A (ko) 이기종 메모리 시스템용 시그널링
JP2023530642A (ja) Dramコマンドストリーク管理
KR20230004912A (ko) 효율적인 메모리 버스 관리
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
JP2024528414A (ja) ハイブリッドdram/永続メモリチャネルアービトレーションを有するメモリコントローラ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190912

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200907

R150 Certificate of patent or registration of utility model

Ref document number: 6761873

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250