(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0005】
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」という用語及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
【0006】
以下に説明するように、メモリコントローラは、コントローラと、メモリ動作(MOP)アレイと、を含む。コントローラは、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を有する。MOPアレイは、複数のエントリを含み、各エントリは、複数の符号化フィールドを有する。コントローラは、電力状態変更要求信号のアクティベーションに応じて、MOPアレイにアクセスして少なくとも1つのエントリをフェッチし、そのエントリによって示される少なくとも1つのメモリ動作を発行する。メモリコントローラは、例えば、電力状態変更要求を実施するために使用される特定のメモリ動作を記述したMOPアレイの部分を含むことが可能である。例えば、DDR4及びLPDDR4 DRAMは、異なるステートマシンと、異なる低電力モードと、を実装しており、アクティブ状態から低電力状態に移行するための異なるシーケンスを要求する。ある場合には、メモリコントローラは、MOPアレイを使用して、DDRレジスタ付きDIMMのレジスタ制御ワード(RCW)又はバッファ制御ワード(BCW)に書き込まれるようにコマンドを定義することができる。
【0007】
別の形態では、このようなメモリコントローラを、プロセッサとメモリモジュールとを含む処理システムのプロセッサに含めることができる。プロセッサは、メモリコントローラとメモリシステムとの間に接続された物理インタフェース(PHY)をさらに含むことができる。
【0008】
さらに別の形態では、メモリシステムの電力状態を制御するための方法が開示されている。電力状態変更信号を受信する。電力状態変更要求信号に応じて、メモリ動作(MOP)アレイにアクセスする。MOPアレイのエントリを少なくとも1つのメモリ動作に復号する。このように復号された各メモリ動作を出力する。所定の終了条件が発生するまで、MOPアレイ内の連続するエントリに対して、復号及び出力を繰り返す。所定の終了条件は、例えば、MOPアレイ内のヌルエントリであってもよい。受信した電力状態変更要求信号は、プリチャージパワーダウン、セルフリフレッシュパワーダウン又はアイドルパワーダウン等のアクティブ状態から低電力状態への変更、又は、アクティブ状態におけるある動作周波数から別の動作周波数への変更であってもよい。また、基本入出力システム(BIOS)は、メモリシステムの特性の検出に応じてMOPアレイをプログラムすることができる。
【0009】
図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)大容量記憶デバイスへのインタフェースが含まれる。
【0010】
メモリシステム120は、メモリチャネル130と、メモリチャネル140と、を含む。メモリチャネル130は、この例では別々のランクに対応する代表的なDIMM134,136,138を含む、DDRxバス132に接続されたデュアルインラインメモリモジュール(DIMM)のセットを含む。同様に、メモリチャネル140は、代表的なDIMM144,146,148を含む、DDRxバス142に接続されたDIMMのセットを含む。
【0011】
PCIeシステム150は、データプロセッサ110内のPCIeルートコンプレックスに接続されたPCIeスイッチ152と、PCIeデバイス154と、PCIeデバイス156と、PCIeデバイス158と、を含む。PCIeデバイス156は、システム基本入出力システム(BIOS)メモリ157に接続されている。システムBIOSメモリ157は、様々な不揮発性メモリタイプ(例えば、読み出し専用メモリ(ROM)、フラッシュEEPROM(Electrically Erasable Programmable ROM)等)の何れかであってもよい。
【0012】
USBシステム160は、データプロセッサ110内のUSBマスタに接続されたUSBハブ162と、USBハブ162にそれぞれ接続された代表的なUSBデバイス164,166,168と、を含む。USBデバイス164,166,168は、例えばキーボード、マウス、フラッシュEEPROMポート等のデバイスであってもよい。
【0013】
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【0014】
データ処理システム100は、メモリチャネル130及びメモリチャネル140を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。各メモリチャネル130,140は、最新のDDRメモリ(例えば、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)及び高帯域幅メモリ(HBM)等)に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。以下により詳細に説明するように、データプロセッサ110は、オーバーヒートを回避し、サーマルオーバロードの可能性を低減するために、特定の状況において電力を抑制することができるメモリコントローラを備える。
【0015】
図2は、
図1のデータ処理システム100での使用に適したAPU200のブロック図である。APU200は、概して、中央処理装置(CPU)コアコンプレックス210と、グラフィックスコア220と、ディスプレイエンジン230のセットと、メモリ管理ハブ240と、データファブリック250と、周辺コントローラ260のセットと、周辺バスコントローラ270のセットと、システム管理ユニット(SMU)280と、メモリコントローラ290のセットと、を含む。
【0016】
CPUコアコンプレックス210は、CPUコア212と、CPUコア214と、を含む。この例では、CPUコアコンプレックス210は2つのCPUコアを含むが、他の実施形態では、CPUコアコンプレックス210は任意の数のCPUコアを含んでもよい。各CPUコア212,214は、制御ファブリックを形成するシステム管理ネットワーク(SMN)及びデータファブリック250に対して双方向に接続されており、メモリアクセス要求をデータファブリック250に提供することができる。各CPUコア212,214は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する2つ以上の単一コアを有するコアコンプレックスであってもよい。
【0017】
グラフィックスコア220は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を、高度に統合された並列方式で実行することの可能な高性能グラフィックス処理装置(GPU)である。グラフィックスコア220は、SMN及びデータファブリック250に対して双方向に接続されており、メモリアクセス要求をデータファブリック250に提供することができる。これに関して、APU200は、CPUコアコンプレックス210及びグラフィックスコア220が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコアコンプレックス210及びグラフィックスコア220がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができる。グラフィックスコア220は、CPUコアコンプレックス210がアクセスできない専用のグラフィックスメモリも使用する。
【0018】
ディスプレイエンジン230は、グラフィックスコア220によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア220及びディスプレイエンジン230は、メモリシステム120の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ240に対して双方向に接続されており、メモリ管理ハブ240は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック250に対して双方向に接続されている。
【0019】
データファブリック250は、任意のメモリアクセスエージェントとメモリコントローラ290との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック250は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、BIOSによって定義されたシステムメモリマップを含む。
【0020】
周辺コントローラ260は、USBコントローラ262と、SATAインタフェースコントローラ264と、を含み、これらの各々が、システムハブ266及びSMNバスに対して双方向に接続されている。これらの2つのコントローラは、APU200で使用可能な周辺コントローラの単なる例示である。
【0021】
周辺バスコントローラ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内のレジスタをプログラムすることができる。
【0022】
SMU280は、APU200上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。SMU280は、APU200上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU280は、APU200の各コンポーネントにクロック信号を提供するために、
図2に示されていない1つ以上のクロックソース(例えば位相ロックループ(PLL)等)を含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックの電力を管理し、CPUコア212,214及びグラフィックスコア220から測定された消費電力値を受信して、適切な電力状態を判断してもよい。
【0023】
また、APU200は、様々なシステムモニタリング及び省電力機能を実装する。特に、1つのシステムモニタリング機能は、サーマルモニタリングである。例えば、SMU280は、APU200が高温になると、CPUコア212,214及び/又はグラフィックスコア220の周波数及び電圧を低減させてもよい。APU200が非常に高温になった場合には、APU200が完全にシャットダウンされてもよい。サーマルイベントは、SMU280によって、外部センサからSMNバスを介して受信されてもよく、SMU280は、これに応じてクロック周波数及び/又は電源電圧を低下させてもよい。
【0024】
図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を有する。
【0025】
図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の各々の動作を制御する。
【0026】
図5は、いくつかの実施形態による、メモリコントローラ500のブロック図である。メモリコントローラ500は、概して、メモリチャネルコントローラ510と、電力コントローラ550と、を含む。メモリチャネルコントローラ510は、概して、インタフェース512と、キュー514と、コマンドキュー520と、アドレス生成器522と、連想メモリ(CAM)524と、リプレイキュー530と、リフレッシュロジックブロック532と、タイミングブロック534と、ページテーブル536と、アービタ538と、エラー訂正コード(ECC)チェックブロック542と、ECC生成ブロック544と、書込みデータバッファ(WDB)546と、を含む。
【0027】
インタフェース512は、外部バスを介したデータファブリック250との第1双方向接続と、出力と、を有する。メモリコントローラ500において、この外部バスは、「AXI4」として知られている、英国ケンブリッジのARM Holdings,PLCによって仕様化されたアドバンストエクステンシブルインタフェースバージョン4と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース512は、FCLK(又はMEMCLK)ドメインとして知られる第1クロックドメインから、UCLKドメインとして知られるメモリコントローラ500の内部の第2クロックドメインへのメモリアクセス要求を変換する。同様に、キュー514は、UCLKドメインから、DFIインタフェースに関連するDFICLKドメインへのメモリアクセスを提供する。
【0028】
アドレス生成器522は、データファブリック250からAXI4バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表される物理アドレス空間内のアクセスアドレスを含む。アドレス生成器522は、正規化されたアドレスを、メモリシステム120内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムBIOSは、起動時に、メモリシステム120内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器522に関連する構成レジスタのセットをプログラムする。アドレス生成器522は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー520は、データ処理システム100内のメモリアクセスエージェント(例えば、CPUコア212,214及びグラフィックスコア220等)から受信したメモリアクセス要求のキューである。コマンドキュー520は、アドレス生成器522によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質(QoS)識別子を含むメモリアクセスをアービタ538が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。CAM524は、例えばライトアフターライト(WAW)及びリードアフターライト(RAW)順序付けルール等の順序付けルールを実施するための情報を含む。
【0029】
リプレイキュー530は、例えば、アドレス及びコマンドパリティ応答、DDR4 DRAMの書込み巡回冗長チェック(CRC)応答、又は、gDDR5 DRAMの書込み及び読出しCRC応答等の応答を待つアービタ538によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー530は、ECCチェックブロック542にアクセスして、返されたECCが正しいか否か又はエラーを示しているかを判別する。リプレイキュー530は、何れかのサイクルでパリティ又はCRCエラーの場合にアクセスが再実行されるのを可能にする。
【0030】
リフレッシュロジック532は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウン状態にある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック532は、リフレッシュコマンドを定期的に生成して、DRAMチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック532は、ZQを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。
【0031】
アービタ538は、コマンドキュー520に双方向に接続されており、メモリチャネルコントローラ510の中心部分である。アービタ538は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ538は、タイミングブロック534を使用して、コマンドキュー520内の特定のアクセスの発行に適しているか否かをDRAMタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各DRAMは、アクティブコマンド間の最小指定時間(「t
RC」として知られる)を有する。タイミングブロック534は、リプレイキュー530に双方向に接続されており、このタイミングパラメータ及びJEDEC仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル536は、リプレイキュー530に双方向に接続されており、アービタ538のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【0032】
ECC生成ブロック544は、インタフェース512から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってECCを計算する。DB546は、受信したメモリアクセス要求の書込みデータ及びECCを記憶する。アービタ538が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、DB546は、結合した書込みデータ/ECCをキュー514に出力する。
【0033】
電力コントローラ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デバイスに提供する。
【0034】
メモリチャネルコントローラ510は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器522は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー520は、プリデコードされた情報を記憶する。構成レジスタ562は、受信したアドレス情報をアドレス生成器522がどのように復号するのかを決定するために、構成情報を記憶する。アービタ538は、復号化されたアドレス情報と、タイミングブロック534によって示されたタイミング適格性情報と、ページテーブル536によって示されたアクティブページ情報と、を使用して、例えばQoS要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ538は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ538は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【0035】
図6は、いくつかの実施形態による、
図1のデータ処理システム100の一部に対応するデータ処理システム600のブロック図である。データ処理システム600は、概して、「MC」610と付されたメモリコントローラと、PHY620と、メモリモジュール630と、を含む。
【0036】
メモリコントローラ610は、例えばCPUコア212又はグラフィックスコア220等のプロセッサのメモリアクセスエージェントからメモリアクセス要求を受信し、このメモリアクセスエージェントへのメモリ応答を提供する。メモリコントローラ610は、
図2のメモリコントローラ290の何れかに対応する。メモリコントローラ610は、DFI互換バスを介してPHY620にメモリアクセスを出力し、PHY620から応答を受信する。
【0037】
PHY620は、DFIバスを介してメモリコントローラ610に接続されている。PHY620は、「C/A」と付された1セットのコマンド及びアドレス出力と、64ビットのデータ及び8ビットのECCを含む「DQ」と付された1セットの72の双方向データ信号とを提供することによって、受信したメモリアクセスに応答する物理的シグナリングを実行する。
【0038】
メモリモジュール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は、対応するバッファ及びメモリのみに与えられる。
【0039】
メモリモジュール630は、レジスタ制御ワード(RCW)にプログラムされたRCD650、及び、バッファ制御ワード(BCW)にプログラムされたバッファ660の制御情報に従って動作する。よって、メモリコントローラ610は、メモリモジュール630を低電力状態にすると、以下に十分に説明する方法でRCW及びBCWの設定を変更する。
【0040】
データ処理システム600は、メモリモジュール630としてレジスタ付きバッファ付きDDR4 DRAM DIMMを使用しているが、メモリコントローラ610及びPHY620は、いくつかの異なるタイプのメモリモジュールにインタフェースすることができる。特に、メモリコントローラ610及びPHY620は、いくつかの異なるタイプのメモリ(例えば、DDR、FLASH、PCM等)、いくつかの異なるレジスタ状態(未使用、RCD、フラッシュコントローラ等)、及び、いくつかの異なるバッファ状態(未使用、データバッファのみ等)の多種多様な組み合わせをサポートすることができる。メモリコントローラ610は、これらの組み合わせをサポートするために、システムBIOSが特定のメモリシステム特性についてプログラムすることができる低電力モードに移行及び抜け出るための独自のプランを可能にするアーキテクチャを実装する。これらの特徴について以下に説明する。
【0041】
図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と、に分割されている。
【0042】
システムBIOSメモリ157に記憶されたシステムBIOSは、起動時に、メモリシステム120に対してクエリし、インストールされたメモリのタイプ及びその機能を判別する。通常、システム内の各DIMM上のシリアルプレゼンス検出(SPD)メモリ内のレジスタを読み出すことによって行われる。例えば、PHYは、DDR3、DDR4、低電力DDR4(LPDDR4)及びグラフィックスDDRバージョン5(gDDR5)メモリのうち何れか1つをサポートするように構成されてもよい。メモリシステム120にインストールされたメモリのタイプ及び機能を検出したことに応じて、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始するコマンドシーケンスをMOPアレイ710に投入する。
【0043】
図示した実施形態において、メモリチャネルコントローラ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)を返す。
【0044】
メモリチャネルコントローラ550は、セルフリフレッシュコントローラ566用のファームウェアを形成するプログラム可能なコマンドを記憶するためのMOPアレイ710を含むことによって、異なる特性を有する多種多様なメモリタイプをサポートしながら比較的少量の回路面積を用いて実装される。さらに、未だ指定されていないが将来指定される可能性のあるメモリタイプ及び特性についてのメモリ状態の変更を可能にする上位互換アーキテクチャを提供する。したがって、メモリチャネルコントローラ550は、モジュール方式であり、費用のかかる将来の再設計の必要性を回避する。
【0045】
これらのメモリコントローラデバイスの電力状態(D状態)とDRAM動作との間の相互作用について説明する。D0状態は、メモリコントローラ500の動作状態である。D0状態において、メモリコントローラ500は、異なるMEMCLK周波数及び関連するタイミングパラメータをそれぞれ有する4つのプログラム可能な電力状態(P状態)をサポートする。メモリコントローラ500は、P状態毎に1セットのレジスタを維持しており、P状態に関するタイミングパラメータを記憶し、コンテキストを定義する。メモリコントローラ500は、DRAMをセルフリフレッシュモードにして、P状態/コンテキストを変更する。MOPアレイ710は、適切なシーケンシングをサポートするために、D0状態における周波数変化と共に使用するための1セットのコマンドを含む。
【0046】
D1状態は、ストップクロック状態として知られており、メモリ状態変更要求に使用される。メモリコントローラ500をD1状態にすると、出入りレイテンシは、PHY620を再トレーニングする必要がある場合を除いて最も低い。メモリコントローラ500は、通常、D1電力状態変更要求の結果として如何なるアービトレーションキューエントリもフラッシュしない。しかしながら、メモリコントローラ500は、保留中のリフレッシュを通常実行しないが、コマンドキュー520内の全ての書込みを事前にフラッシュする。メモリコントローラ500は、システム内の全てのメモリチップをプリチャージパワーダウン又はセルフリフレッシュの何れかにする。
【0047】
D2状態は、スタンバイ状態として知られており、システムC1/C2/C3及びストップクロック/スタッタ状態に対応する。D2状態は、メモリコントローラ500自体の動作にとってより低電力状態である。D2状態において、メモリコントローラ500は、ローカルクロックゲーティング及びオプションのパワーゲーティングを使用して、電力をさらに低下させる。メモリコントローラ500は、コマンドキュー520からの書込み及び読出しをフラッシュする。D2状態において、メモリコントローラ500は、自動セルフリフレッシュを有効にした状態で、システム内の全てのメモリを、同様にプリチャージパワーダウンにする。しかしながら、D2は、よりディープなパワー状態であるため、自動セルフリフレッシュを用いてプリチャージパワーダウンに移行する前に、必要とされる(owed)リフレッシュをすぐに実行する。
【0048】
D3状態は、サスペンド状態として知られている。メモリコントローラ500は、2つのD3状態をサポートする。第1のD3状態は、システムS3状態に使用される。メモリコントローラ500は、システムS3状態へのエントリ(移行)を見越して、DRAM及びPHYを最低電力状態にする。メモリコントローラ500は、コマンドキュー520からの書込みをフラッシュし、保留中のリフレッシュサイクルを実行する。第2のD3状態は、非同期DRAMリフレッシュ(ADR)スタイルのセルフリフレッシュに使用される。ADRは、停電又はシステムクラッシュの間に保留中の書込みデータを不揮発性メモリにフラッシュするために、サーバで使用される機能である。自動セルフリフレッシュを有効にした状態でDRAM及びPHYをプリチャージパワーダウンにする。
【0049】
本明細書で使用されているように、電力要求信号は、任意の電力状態から他の電力状態への変更を示す。利用可能な電力状態は、メモリのタイプによって異なる。さらに、本明細書で使用されているように、「低電力状態」は、他の状態と比較して節電する状態を意味する。例えば、DDR4 SDRAMは、セルフリフレッシュ及びプリチャージパワーダウンとして知られる2つの低電力状態をサポートする。しかしながら、LPDDR4は、アクティブパワーダウン、セルフリフレッシュパワーダウン及びアイドルパワーダウンとして知られる3つの低電力状態をサポートする。これらの状態に出入りすることができる条件は異なり、対応する公開されているJEDEC規格の状態図に規定されており、「低電力状態」はこれらの状態のうち何れかを含む。
【0050】
MOPアレイ710は、これらの電力状態の変化の全てをサポートするためのコマンドの効率的な符号化を可能にするコマンドフォーマットをサポートする。MOPアレイ710は、4つのP状態コンテキストの各々に対して「SrEnterMOP」及び「SrExitMOP」として知られる2つのアレイを使用する。SrEnterMOPは、P状態要求に対してセルフリフレッシュに移行する前に処理される。SrExitMOPは、P状態要求に対してセルフリフレッシュを抜け出た後に処理される。MOPアレイは、モードレジスタ(MR)、DRAM毎のアクセス可能性(PDA)を有するMR、レジスタ制御ワード(RCW)又はバッファ制御ワード(BCW)コマンドのシーケンシャルリストを指定する。セルフリフレッシュコントローラ566は、電力状態変更要求を受信すると、MOPアレイ710内の選択されたコンテキストに対するコマンドにアクセスして、メモリシステムに発行されたMOPのシーケンス及びタイミングを決定する。
【0051】
MOP712の一部は、対応する1つ以上のD状態を示すフィールドを含む。したがって、セルフリフレッシュコントローラ566は、現在のコンテキストには適用できないMOPを無視して、特定のコンテキストに適用可能なコマンドについて最初の位置から開始するMOPアレイ712を走査する。また、MOPアレイ712は、適切な場合に、メモリチップの動的タイミングパラメータを満たすために、MOP間の適切なタイミングを決定するためのカウンタ値を含む。セルフリフレッシュコントローラ566は、コマンドシーケンスを開始した後に、電力状態変更についてのシーケンスの終了を示すヌルエントリに遭遇するまでMOPアレイ712を走査し続け、有効なコマンドを実行し続ける。電力状態変更についてのコマンドの効率的なストレージを可能にするために使用することができるMOPアレイ712のフィールドの一例を次に説明する。
【0052】
図8は、いくつかの実施形態による、
図7のMOPアレイ710のエントリ800のブロック図である。エントリ800は、MOPを定義する様々な符号化ビットフィールドを含む40ビットのエントリである。サポートされているビットフィールドは、以下の表1に示されている。
【表1】
【0053】
MOPアレイ712は、セルフリフレッシュコントローラ566が、許可された状態変更に対して要求されたMOPを適切に復号して発行するように続く、様々なプログラミング要件を有する。セルフリフレッシュコントローラ566は、最初のヌルエントリがアレイから読み出されるまで、分岐することなく線形的にMOPを復号して発行する。ヌルエントリは、MOP_RANKの全てのビット及びMOP_CIDの全てのビットがゼロであるエントリである。したがって、システムBIOSがMOPアレイ712をプログラムする場合、コンテキスト毎に少なくとも1つのヌルエントリをプログラムすべきである。
【0054】
MOPは、MOP_VLD_D1、MOP_VLD_D2及びMOP_VLD_D3のうち2つ以上を設定することによって、異なるD状態によって共有することができる。MOPは、MOP_VLD_D1、MOP_VLD_D2及びMOP_VLD_D3のうち対応する1つをクリアすることによって、特定のD状態によってスキップされる。
【0055】
D状態エントリルーチン(SrEnterMOP)は一定の要件を含む。すなわち、パリティが有効な場合に、パリティを無効にするコマンドを含める必要がある。レジスタードDIMM(RDIMM)の推奨順序は、最初にDRAMチップのパリティを無効にしてから、バッファのパリティを無効にすることである。また、コマンド間遅延時間(tccd)をプログラムするコマンドを含める必要があり、このコマンドは、DDR4仕様に従って、モードレジスタ6(MR6)のビット12〜10に時間を設定することによってプログラムされる。また、RDIMMを含むシステムでは、ターゲットレジスタ制御ワードRC0A及びRC3xをプログラムするためのコマンドを含める必要がある。
【0056】
また、D状態終了ルーチン(SrExitMOP)も一定の要件を含む。すなわち、パリティが有効になっている場合には、パリティを有効にするコマンドを含める必要がある。RDIMMの推奨設定は、レジスタ内でのみパリティを有効にすることである。
【0057】
単一のMOPエントリは、複数のチップ選択をターゲットとすると予想される。偶数/奇数のチップ選択が非対称の設定を意図的に受信していない限り、MOP_RANKは、全ての設定されたチップ選択を反映することが推奨される。この点について、BEQ514は、反転が可能である場合に単一のMOPを2つのコマンドに変換し、反転及びミラーリングの両方が可能である場合に単一のMOPを4つのコマンドに変換するように、反転及びミラーリングを可能にするモードを有する。例えば、クアッドランクDIMMの場合、符号化されたチップ選択を含むクアッドランクRDIMMについて、モードレジスタセットコマンド毎に2つのMOPエントリを使用することができる。
【0058】
MOPアレイ712は、コマンドの効率的な符号化を可能にし、これを小さいサイズで実装することを可能にする様々なフィールドをサポートする。例えば、セルフリフレッシュコントローラ566がMOPアレイ712にアクセスするために使用するコマンド走査技術は、各低電力状態に対するコマンドを複製するのを必要とすることなく、複数の低電力状態に対して特定のコマンドを使用することを可能にする。さらに、ヌルエントリを使用して終了条件を知らせることは、セルフリフレッシュコントローラ566が所望の状態変更及びコンテキストに基づいてエントリポイント及びエグジットポイントを計算するのを必要とすることなく、各コマンドシーケンスの終了を符号化する効率的な方法である。
【0059】
したがって、本明細書に記載されるメモリコントローラは、コントローラ及びプログラマブルMOPアレイを使用して、多種多様な利用可能なメモリタイプ及びDIMM構成の何れかをサポートする。コントローラは、電力状態変更要求信号のアクティベーションに応じて、MOPアレイにアクセスして少なくとも1つのエントリをフェッチし、このエントリによって示される少なくとも1つのメモリ動作を発行して電力状態変更要求を実行する。このように構成されているので、MOPアレイは、メモリコントローラがコンパクトな回路を用いて多種多様なメモリタイプ及び構成をサポートするのを可能にする。さらに、システムBIOSは、スタートアップ時にメモリの構成を決定し、このシステム内の特定のタイプのメモリの電力状態変更動作に対応するエントリのセットを用いてMOPアレイをプログラムすることができる。
【0060】
メモリコントローラは、ハードウェア及びソフトウェアの様々な組み合わせで実装することができる。BIOSメモリに記憶され、システムBIOSによってMOPアレイにロードされる等のソフトウェアコンポーネントのいくつかは、少なくとも1つのプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に記憶され得る。さらに、電力状態変更に使用されるいくつかの共通動作をマイクロコントローラ564等の他のハードウェアに実装して、MOPアレイのフィールドの数及び/又はサイズを簡略化することができる。
【0061】
図5のメモリコントローラ500又はその一部は、集積回路を製造するために直接的又は間接的にプログラムによって読み出され使用され得るデータベース又は他のデータ構造の形態でコンピュータアクセス可能なデータ構造によって記載又は表現することができる。例えば、このデータ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、その記述を合成して合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出すことができる。ネットリストは、集積回路を含むハードウェアの機能性も表すゲートのセットを含む。その後、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次に、マスクを様々な半導体製造工程に使用して、集積回路を製造することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、必要に応じてグラフィックデータシステム(GDS)IIデータであってもよい。
【0062】
特定の実施形態について説明したが、これらの実施形態に対する様々な変更は、当業者に明らかであろう。例えば、サポートされているメモリデバイスの範囲は、異なる実施形態では変わることになり、上述した例に限定されない。また、MOPアレイのフィールド定義は、異なる実施形態では変わるであろう。さらに、エントリが適用される特定の電力状態を示すフィールドを含むものとしてMOPアレイ710を説明したが、他の実施形態において、MOPアレイは、特定のサポートされた電力状態変更要求又はターゲット電力空間に対応するエントリアドレス及びエグジットアドレスによって編成することができる。
【0063】
1つの形態では、メモリコントローラ(500)は、コントローラ(566)と、メモリ動作アレイ(710)と、を備える。コントローラ(566)は、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含む。メモリ動作アレイ(710)は、複数のエントリを含み、各エントリ(800)は複数の符号化フィールドを備える。メモリ動作アレイ(710)は、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、複数のエントリ内の複数のタイプのメモリのうち特定のタイプのメモリについての異なるコマンドシーケンスを記憶するようにプログラム可能である。コントローラ(566)は、電力状態変更要求信号のアクティベーションに応じて、メモリ動作アレイ(710)にアクセスして少なくとも1つのエントリをフェッチし、少なくとも1つのエントリによって示される少なくとも1つのメモリ動作を発行する。複数の符号化フィールドのうち1つは、少なくとも1つのメモリデバイス電力状態の何れが少なくとも1つのエントリに対応しているかを示す電力状態フィールドを備えてもよい。
【0064】
1つの態様によれば、少なくとも1つのメモリデバイス電力状態は、動的電圧状態、動的周波数状態及び低電力状態のうち1つに対応してもよい。
【0065】
他の態様によれば、少なくとも1つのメモリデバイス電力状態は、アドバンストコンフィグレーションアンドパワーインタフェース(ACPI) D1状態、ACPI D2状態及びACPI D3状態のうち選択された1つに対応しており、ACPI D3状態は、ダブルデータレートメモリ(660)のセルフリフレッシュ状態に対応してもよい。
【0066】
他の形態では、メモリシステム(130/140)の電力状態を制御する方法は、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、複数のタイプのメモリのうち特定のタイプのメモリについてのプログラム可能なコマンドのシーケンスを、メモリ動作(MOP)アレイ(710)に記憶することと、電力状態変更要求信号を受信することと、電力状態変更要求信号に応じて、MOPアレイ(710)にアクセスすることと、MOPアレイ(710)のエントリを少なくとも1つのメモリ動作に復号することと、少なくとも1つのメモリ動作を出力することと、所定の終了条件が発生するまで、MOPアレイ(710)内の連続するエントリのために、当該復号すること及び当該出力することを繰り返すことと、を含む。
【0067】
1つの態様によれば、電力状態変更要求信号は、アクティブ状態から低電力状態に変更する要求であってもよい。
【0068】
他の態様によれば、電力状態変更要求信号は、アクティブ状態において第1動作周波数から第2動作周波数に変更する要求であってもよい。
【0069】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することが意図されている。