(57)【要約】一形態において、メモリコントローラは、コントローラと、メモリ動作アレイと、を含む。コントローラは、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を有する。メモリ動作アレイは、複数のエントリを含み、各エントリは、複数の符号化フィールドを有する。コントローラは、電力状態変更要求信号のアクティベーションに応じて、メモリ動作アレイにアクセスして少なくとも１つのエントリをフェッチし、そのエントリによって示される少なくとも１つのメモリ動作を発行する。別の形態において、システムは、メモリシステムと、メモリシステムに接続されたプロセッサと、を備える。プロセッサは、かかるメモリコントローラを用いてメモリモジュールにアクセスするように構成されている。【選択図】図７
2019520640.tif 000002
【特許請求の範囲】
【請求項１】
電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含むコントローラ（５６６）と、
複数のエントリを含むメモリ動作アレイ（７１０）であって、各エントリ（８００）は複数の符号化フィールドを備える、メモリ動作アレイと、を備え、
前記コントローラ（５６６）は、前記電力状態変更要求信号のアクティベーションに応じて、前記メモリ動作アレイ（７１０）にアクセスして少なくとも１つのエントリをフェッチし、前記エントリによって示される少なくとも１つのメモリ動作を発行する、
メモリコントローラ（５００）。
【請求項２】
前記メモリ動作は、ダブルデータレート（ＤＤＲ）メモリモジュール（６３０）用のモードレジスタセット（ＭＲＳ）コマンドを含む、
請求項１のメモリコントローラ（５００）。
【請求項３】
前記メモリ動作は、前記ＤＤＲメモリモジュール（６３０）のレジスタ（６５０）を構成するためのレジスタ制御ワード書き込みコマンドを備える、
請求項２のメモリコントローラ（５００）。
【請求項４】
前記メモリ動作は、前記ＤＤＲメモリモジュール（６３０）のデータバッファ（６６０）を構成するためのバッファ制御ワード書き込みコマンドを含む、
請求項３のメモリコントローラ（５００）。
【請求項５】
前記複数のエントリは、少なくとも１つの有効なエントリと、後続のヌルエントリと、を含む、
請求項１のメモリコントローラ（５００）。
【請求項６】
前記複数の符号化フィールドのうち１つは、少なくとも１つのメモリデバイス電力状態の何れが前記エントリに対応しているかを示す電力状態フィールドを備える、
請求項１のメモリコントローラ（５００）。
【請求項７】
前記少なくとも１つのメモリデバイス電力状態は、動的電圧状態、動的周波数状態及び低電力状態のうち１つに対応する、
請求項６のメモリコントローラ（５００）。
【請求項８】
前記少なくとも１つのメモリデバイス電力状態は、アドバンストコンフィグレーションアンドパワーインタフェース（ＡＣＰＩ）  Ｄ１状態、ＡＣＰＩ  Ｄ２状態及びＡＣＰＩ  Ｄ３状態のうち選択された１つに対応しており、
前記ＡＣＰＩ  Ｄ３状態は、ダブルデータレートメモリ（６６０）のセルフリフレッシュ状態に対応する、
請求項６のメモリコントローラ（５００）。
【請求項９】
メモリシステム（１３０／１４０）の電力状態を制御する方法であって、
電力状態変更要求信号を受信することと、
前記電力状態変更要求信号に応じて、メモリ動作（ＭＯＰ）アレイ（７１０）にアクセスすることと、
前記ＭＯＰアレイ（７１０）のエントリを少なくとも１つのメモリ動作に復号することと、
前記少なくとも１つのメモリ動作を出力することと、
所定の終了条件が発生するまで、前記ＭＯＰアレイ（７１０）内の連続するエントリのために、前記復号すること及び前記出力することを繰り返すことと、を含む、
方法。
【請求項１０】
前記所定の終了条件は、連続するエントリがヌルエントリである場合に発生する、
請求項９の方法。
【請求項１１】
前記電力状態変更要求信号は、アクティブ状態から低電力状態に変更する要求である、
請求項９の方法。
【請求項１２】
前記電力状態変更要求信号は、アクティブ状態において第１動作周波数から第２動作周波数に変更する要求である、
請求項９の方法。
【請求項１３】
前記メモリシステム（１３０）の特性を検出したことに応じて、一連の動作を前記ＭＯＰアレイ（７１０）に記憶することをさらに含む、
請求項９の方法。
【請求項１４】
前記記憶することは、
基本入出力システム（ＢＩＯＳ）の制御下において、前記一連の動作を前記ＭＯＰアレイ（７１０）に記憶することを含む、
請求項１３の方法。
【請求項１５】
メモリモジュール（１３４／１３６／１３８）を備えるメモリシステム（１３０）と、
前記メモリシステム（１３０）に接続され、メモリコントローラ（５００）を用いて前記メモリモジュール（１３４／１３６／１３８）にアクセスするように構成されたプロセッサ（１１０）と、を備え、
前記メモリコントローラ（５００）は、
電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含むコントローラ（５６６）と、
複数のエントリを含むメモリ動作アレイ（７１０）であって、各エントリは複数の符号化フィールドを備える、メモリ動作アレイ（７１０）と、を有しており、
前記コントローラ（５６６）は、前記電力状態変更要求信号のアクティベーションに応じて、前記メモリ動作アレイ（７１０）にアクセスして少なくとも１つのエントリをフェッチし、前記エントリによって示される少なくとも１つのメモリ動作を発行する、
システム（１００）。
【請求項１６】
前記プロセッサ（１１０）は、
前記プロセッサ（１１０）の動的動作に応じて前記電力状態変更要求を生成するシステム管理ユニット（１３０）を含む、
請求項１５のシステム（１００）。
【請求項１７】
前記メモリモジュール（１３４／１３６／１３８）は、
複数のダブルデータレート（ＤＤＲ）メモリチップ（６６０）を含む、
請求項１５のシステム（１００）。
【請求項１８】
前記メモリモジュール（１３４／１３６／１３８）は、
複数のコマンド及びアドレス信号を受信するために前記プロセッサ（１１０）に接続される入力と、前記複数のＤＤＲメモリチップ（６６０）に接続された出力と、を有するレジスタ（６６０）を含む、
請求項１７のシステム（１００）。
【請求項１９】
前記メモリモジュール（１３４／１３６／１３８）は、
前記プロセッサ（１１０）に接続された第１双方向データポートと、前記複数のＤＤＲメモリチップ（６６０）に接続された第２双方向データポートと、を有する複数のデータバッファ（６５０）を含む、
請求項１７のシステム（１００）。
【請求項２０】
前記プロセッサ（１１０）は、
前記メモリコントローラ（５００）と前記メモリシステム（６２０）との間に接続された物理インタフェース（ＰＨＹ）（６２０）を含む、
請求項１５のシステム（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より具体的には、低電力状態を有するメモリとインタフェースをとるデータ処理システム用のメモリコントローラに関する。
【背景技術】
【０００２】
コンピュータシステムは、通常、安価で高密度なダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップをメインメモリに使用する。今日販売されている殆どのＤＲＡＭチップは、ＪＥＤＥＣ（Joint Electron Devices Engineering Council）によって公布された様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ規格と互換性がある。ＤＤＲ  ＤＲＡＭは、様々な低電力モードを提供することによって、高性能及び低電力動作の両方を提供する。これらの低電力モードのうち１つは、プリチャージパワーダウンとして知られている。プリチャージパワーダウンの間、全てのバンクがプリチャージされ、オンチップ遅延ロックループ（ＤＬＬ）を無効にし、入力クロックをオフにし、出力バッファを無効にして、消費電力を大幅に減らすことができる。プリチャージパワーダウンは比較的早く終了するため、ＤＬＬを実行したままにすることで終了時間を短縮することができる。
【０００３】
メモリコントローラは、今日市場に出回っている様々な想定されるＤＤＲメモリデバイスをサポートすることが望ましい。例えば、ＤＤＲバージョン３（ＤＤＲ３）、ＤＤＲバージョン４（ＤＤＲ４）、低電力（ＬＰ）ＤＤＲ３（ＬＰＤＤＲ３）、ＬＰＤＤＲ４及びグラフィックスＤＤＲバージョン５（ｇＤＤＲ５）等は、全て現在利用可能な選択肢である。しかしながら、それぞれ異なるＤＤＲメモリデバイスは、異なるセットのモードレジスタ（ＭＲ）を有しており、異なる数及び構成のメモリバンクを有することができ、異なる低電力モードをサポートすることができる。したがって、これらの全てのバリエーションに対して低電力モードを効率的にサポートするように、単一のメモリコントローラを設計することが困難であった。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアドバンストプロセッシングユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、図１のデータ処理システムの一部に対応するデータ処理システムのブロック図である。
【図７】いくつかの実施形態による、図５のメモリチャネルコントローラの一部に対応するメモリチャネルコントローラのブロック図である。
【図８】いくつかの実施形態による、図７のＭＯＰアレイのエントリのブロック図である。
【発明を実施するための形態】
【０００５】
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」という用語及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
【０００６】
以下に説明するように、メモリコントローラは、コントローラと、メモリ動作（ＭＯＰ）アレイと、を含む。コントローラは、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を有する。ＭＯＰアレイは、複数のエントリを含み、各エントリは、複数の符号化フィールドを有する。コントローラは、電力状態変更要求信号のアクティベーションに応じて、ＭＯＰアレイにアクセスして少なくとも１つのエントリをフェッチし、そのエントリによって示される少なくとも１つのメモリ動作を発行する。メモリコントローラは、例えば、電力状態変更要求を実施するために使用される特定のメモリ動作を記述したＭＯＰアレイの部分を含むことが可能である。例えば、ＤＤＲ４及びＬＰＤＤＲ４  ＤＲＡＭは、異なるステートマシンと、異なる低電力モードと、を実装しており、アクティブ状態から低電力状態に移行するための異なるシーケンスを要求する。ある場合には、メモリコントローラは、ＭＯＰアレイを使用して、ＤＤＲレジスタ付きＤＩＭＭのレジスタ制御ワード（ＲＣＷ）又はバッファ制御ワード（ＢＣＷ）に書き込まれるようにコマンドを定義することができる。
【０００７】
別の形態では、このようなメモリコントローラを、プロセッサとメモリモジュールとを含む処理システムのプロセッサに含めることができる。プロセッサは、メモリコントローラとメモリシステムとの間に接続された物理インタフェース（ＰＨＹ）をさらに含むことができる。
【０００８】
さらに別の形態では、メモリシステムの電力状態を制御するための方法が開示されている。電力状態変更信号を受信する。電力状態変更要求信号に応じて、メモリ動作（ＭＯＰ）アレイにアクセスする。ＭＯＰアレイのエントリを少なくとも１つのメモリ動作に復号する。このように復号された各メモリ動作を出力する。所定の終了条件が発生するまで、ＭＯＰアレイ内の連続するエントリに対して、復号及び出力を繰り返す。所定の終了条件は、例えば、ＭＯＰアレイ内のヌルエントリであってもよい。受信した電力状態変更要求信号は、プリチャージパワーダウン、セルフリフレッシュパワーダウン又はアイドルパワーダウン等のアクティブ状態から低電力状態への変更、又は、アクティブ状態におけるある動作周波数から別の動作周波数への変更であってもよい。また、基本入出力システム（ＢＩＯＳ）は、メモリシステムの特性の検出に応じてＭＯＰアレイをプログラムすることができる。
【０００９】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、ＰＣＩｅ（Peripheral Component Interconnect Express）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネル、ＰＣＩｅリンクに接続するためのＰＣＩｅルートコンプレックス、ＵＳＢネットワークに接続するためのＵＳＢコントローラ、及び、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースが含まれる。
【００１０】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、この例では別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１１】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、様々な不揮発性メモリタイプ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等）の何れかであってもよい。
【００１２】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１３】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１４】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、最新のＤＤＲメモリ（例えば、ＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等）に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。以下により詳細に説明するように、データプロセッサ１１０は、オーバーヒートを回避し、サーマルオーバロードの可能性を低減するために、特定の状況において電力を抑制することができるメモリコントローラを備える。
【００１５】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００１６】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。この例では、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックス２１０は任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００１７】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を、高度に統合された並列方式で実行することの可能な高性能グラフィックス処理装置（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができる。グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリも使用する。
【００１８】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００１９】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２０】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２１】
周辺バスコントローラ２７０はシステムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２２】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロックソース（例えば位相ロックループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された消費電力値を受信して、適切な電力状態を判断してもよい。
【００２３】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２４】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するための電力エンジン３２０を有する。
【００２５】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有の電力エンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００２６】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、概して、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、概して、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、連想メモリ（ＣＡＭ）５２４と、リプレイキュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、書込みデータバッファ（ＷＤＢ）５４６と、を含む。
【００２７】
インタフェース５１２は、外部バスを介したデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって仕様化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００２８】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表される物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、正規化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００２９】
リプレイキュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長チェック（ＣＲＣ）応答、又は、ｇＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているかを判別する。リプレイキュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスが再実行されるのを可能にする。
【００３０】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウン状態にある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、リフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。
【００３１】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、アクティブコマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、リプレイキュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、リプレイキュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３２】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３３】
電力コントローラ５５０は、概して、ＡＸＩ（Advanced Extensible Interface, version 1）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「ＥＶＥＮＴ＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みタイミングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みタイミングエンジン５６８は、ＤＤＲインタフェース最大読出しレイテンシ（ＭＲＬ）トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３４】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのように復号するのかを決定するために、構成情報を記憶する。アービタ５３８は、復号化されたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３５】
図６は、いくつかの実施形態による、図１のデータ処理システム１００の一部に対応するデータ処理システム６００のブロック図である。データ処理システム６００は、概して、「ＭＣ」６１０と付されたメモリコントローラと、ＰＨＹ６２０と、メモリモジュール６３０と、を含む。
【００３６】
メモリコントローラ６１０は、例えばＣＰＵコア２１２又はグラフィックスコア２２０等のプロセッサのメモリアクセスエージェントからメモリアクセス要求を受信し、このメモリアクセスエージェントへのメモリ応答を提供する。メモリコントローラ６１０は、図２のメモリコントローラ２９０の何れかに対応する。メモリコントローラ６１０は、ＤＦＩ互換バスを介してＰＨＹ６２０にメモリアクセスを出力し、ＰＨＹ６２０から応答を受信する。
【００３７】
ＰＨＹ６２０は、ＤＦＩバスを介してメモリコントローラ６１０に接続されている。ＰＨＹ６２０は、「Ｃ／Ａ」と付された１セットのコマンド及びアドレス出力と、６４ビットのデータ及び８ビットのＥＣＣを含む「ＤＱ」と付された１セットの７２の双方向データ信号とを提供することによって、受信したメモリアクセスに応答する物理的シグナリングを実行する。
【００３８】
メモリモジュール６３０は、任意の数のメモリタイプ及びスピードグレードをサポートすることができる。図示した実施形態において、メモリモジュール６３０は、「ＤＤＲ４」と付された１セットのメモリチップ６４０と、「ＲＣＤ」と付されたレジスタクロックドライバ６５０と、それぞれ「Ｂ」と付された１セットのバッファ６６０と、を含むＤＤＲ４レジスタードＤＩＭＭ（ＲＤＩＭＭ）である。メモリチップ６４０は、ＭビットセットのＮ倍のメモリチップを含む。７２のデータ信号（６４ビットのデータ＋８ビットのＥＣＣ）をサポートするためには、Ｍ×Ｎ＝７２である。例えば、各メモリチップが４倍（Ｎ＝４）である場合、メモリモジュール６２０は、１８個のＤＤＲ４メモリチップを含む。或いは、各メモリチップが８倍（Ｎ＝８）である場合、メモリモジュール６２０は、９個のＤＤＲ４メモリチップを含む。各バッファ６６０は、１×Ｎ個のメモリチップと関連しており、対応するＮビットのデータをラッチするために使用される。図６に示す例において、メモリモジュール６３０は、ＤＤＲ４メモリを含み、Ｃ／Ａ信号は、ＤＤＲ４仕様に記載されている信号を含む。ＤＤＲ４仕様は、ＲＣＤ６５０によって受信されラッチされた同一のＣ／Ａ信号が各メモリチップ６４０に対して左右に再駆動される、「フライバイ」アーキテクチャを指定する。しかしながら、データ信号ＤＱは、対応するバッファ及びメモリのみに与えられる。
【００３９】
メモリモジュール６３０は、レジスタ制御ワード（ＲＣＷ）にプログラムされたＲＣＤ６５０、及び、バッファ制御ワード（ＢＣＷ）にプログラムされたバッファ６６０の制御情報に従って動作する。よって、メモリコントローラ６１０は、メモリモジュール６３０を低電力状態にすると、以下に十分に説明する方法でＲＣＷ及びＢＣＷの設定を変更する。
【００４０】
データ処理システム６００は、メモリモジュール６３０としてレジスタ付きバッファ付きＤＤＲ４  ＤＲＡＭ  ＤＩＭＭを使用しているが、メモリコントローラ６１０及びＰＨＹ６２０は、いくつかの異なるタイプのメモリモジュールにインタフェースすることができる。特に、メモリコントローラ６１０及びＰＨＹ６２０は、いくつかの異なるタイプのメモリ（例えば、ＤＤＲ、ＦＬＡＳＨ、ＰＣＭ等）、いくつかの異なるレジスタ状態（未使用、ＲＣＤ、フラッシュコントローラ等）、及び、いくつかの異なるバッファ状態（未使用、データバッファのみ等）の多種多様な組み合わせをサポートすることができる。メモリコントローラ６１０は、これらの組み合わせをサポートするために、システムＢＩＯＳが特定のメモリシステム特性についてプログラムすることができる低電力モードに移行及び抜け出るための独自のプランを可能にするアーキテクチャを実装する。これらの特徴について以下に説明する。
【００４１】
図７は、いくつかの実施形態による、図５のメモリチャネルコントローラ５５０の一部に対応するメモリチャネルコントローラ７００のブロック図である。メモリチャネルコントローラ７００は、上記の図５に示すようなＵＭＣＳＭＮ５５２及びセルフリフレッシュコントローラ５６６と、メモリ動作（ＭＯＰ）アレイ７１０と、を含む。ＵＭＣＳＭＮ５５２は、上述したように、ＳＭＮに接続するための第１ポートを含み、本明細書に関連して詳細に示すように、データファブリック２５０から「電力要求（POWER REQUEST）」と付された電力状態変更要求信号を受信するための入力と、データファブリック２５０への「電力肯定応答（POWER ACKNOWLEDGE）」と付された電力状態変更肯定応答信号を提供するための出力と、を含む。また、ＵＭＣＳＭＮ５５２は、「Ｍ＿ＰＳＴＡＴＥ  ＲＥＱ」と付されたメモリ電力状態変更要求信号を提供するための第１出力と、ＭＯＰアレイ７１０に記憶するためのデータを提供するための第２出力と、を有する第２ポートを含む。セルフリフレッシュコントローラ５６６は、ＵＭＣＳＭＮ５５２の第２ポートの第１出力に接続された入力と、双方向ポートと、復号されたＭＭＯＰをＢＥＱ５１４に提供するためにＢＥＱ５１４に接続された出力と、を含む。ＭＯＰアレイ７１０は、ＵＭＣＳＭＮ５５２の第２ポートの第２出力に接続された入力と、セルフリフレッシュコントローラ５６６への双方向接続と、を有しており、コマンド（すなわち、ＭＯＰ）を記憶するための第１部分７１２と、データを記憶するための第２部分７１４と、に分割されている。
【００４２】
システムＢＩＯＳメモリ１５７に記憶されたシステムＢＩＯＳは、起動時に、メモリシステム１２０に対してクエリし、インストールされたメモリのタイプ及びその機能を判別する。通常、システム内の各ＤＩＭＭ上のシリアルプレゼンス検出（ＳＰＤ）メモリ内のレジスタを読み出すことによって行われる。例えば、ＰＨＹは、ＤＤＲ３、ＤＤＲ４、低電力ＤＤＲ４（ＬＰＤＤＲ４）及びグラフィックスＤＤＲバージョン５（ｇＤＤＲ５）メモリのうち何れか１つをサポートするように構成されてもよい。メモリシステム１２０にインストールされたメモリのタイプ及び機能を検出したことに応じて、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始するコマンドシーケンスをＭＯＰアレイ７１０に投入する。
【００４３】
図示した実施形態において、メモリチャネルコントローラ５５０は、ＡＣＰＩ（Advanced Configuration and Power Interface）仕様に記載されたモデルに従い定義された様々なデバイスの低電力状態をサポートする。ＡＣＰＩ仕様によれば、デバイス（メモリコントローラ５００等）の動作状態は、Ｄ０状態又は「完全にオン」状態として知られている。他の状態は低電力状態であり、Ｄ１、Ｄ２、Ｄ３状態を含み、これらのうちＤ３状態は「オフ」状態である。メモリコントローラ５００は、メモリシステム１２０をメモリコントローラ５００のＤ状態に対応する低電力状態にし、Ｄ０状態において周波数及び／又は電圧を変化させることができる。ＵＭＣＳＭＮ５５２は、電力要求を受信すると、どの電力状態が要求されているのかを示すために、Ｍ＿ＰＳＴＡＴＥ  ＲＥＱ信号をセルフリフレッシュコントローラ５６６に提供する。セルフリフレッシュコントローラ５６６は、メモリチップと、ＤＩＭＭのＲＣＷ及びＢＣＷ（サポートされている場合）とを、要求されたＤ状態に適した状態にするＭＯＰシーケンスを実行したことに応じて、ＭＯＰアレイ７１０にアクセスする。セルフリフレッシュコントローラ５６６は、インデックスをＭＯＰアレイ７１０に出力し、ＭＯＰアレイ７１０は、これに応じて符号化コマンド（ＭＯＰ）を返す。
【００４４】
メモリチャネルコントローラ５５０は、セルフリフレッシュコントローラ５６６用のファームウェアを形成するプログラム可能なコマンドを記憶するためのＭＯＰアレイ７１０を含むことによって、異なる特性を有する多種多様なメモリタイプをサポートしながら比較的少量の回路面積を用いて実装される。さらに、未だ指定されていないが将来指定される可能性のあるメモリタイプ及び特性についてのメモリ状態の変更を可能にする上位互換アーキテクチャを提供する。したがって、メモリチャネルコントローラ５５０は、モジュール方式であり、費用のかかる将来の再設計の必要性を回避する。
【００４５】
これらのメモリコントローラデバイスの電力状態（Ｄ状態）とＤＲＡＭ動作との間の相互作用について説明する。Ｄ０状態は、メモリコントローラ５００の動作状態である。Ｄ０状態において、メモリコントローラ５００は、異なるＭＥＭＣＬＫ周波数及び関連するタイミングパラメータをそれぞれ有する４つのプログラム可能な電力状態（Ｐ状態）をサポートする。メモリコントローラ５００は、Ｐ状態毎に１セットのレジスタを維持しており、Ｐ状態に関するタイミングパラメータを記憶し、コンテキストを定義する。メモリコントローラ５００は、ＤＲＡＭをセルフリフレッシュモードにして、Ｐ状態／コンテキストを変更する。ＭＯＰアレイ７１０は、適切なシーケンシングをサポートするために、Ｄ０状態における周波数変化と共に使用するための１セットのコマンドを含む。
【００４６】
Ｄ１状態は、ストップクロック状態として知られており、メモリ状態変更要求に使用される。メモリコントローラ５００をＤ１状態にすると、出入りレイテンシは、ＰＨＹ６２０を再トレーニングする必要がある場合を除いて最も低い。メモリコントローラ５００は、通常、Ｄ１電力状態変更要求の結果として如何なるアービトレーションキューエントリもフラッシュしない。しかしながら、メモリコントローラ５００は、保留中のリフレッシュを通常実行しないが、コマンドキュー５２０内の全ての書込みを事前にフラッシュする。メモリコントローラ５００は、システム内の全てのメモリチップをプリチャージパワーダウン又はセルフリフレッシュの何れかにする。
【００４７】
Ｄ２状態は、スタンバイ状態として知られており、システムＣ１／Ｃ２／Ｃ３及びストップクロック／スタッタ状態に対応する。Ｄ２状態は、メモリコントローラ５００自体の動作にとってより低電力状態である。Ｄ２状態において、メモリコントローラ５００は、ローカルクロックゲーティング及びオプションのパワーゲーティングを使用して、電力をさらに低下させる。メモリコントローラ５００は、コマンドキュー５２０からの書込み及び読出しをフラッシュする。Ｄ２状態において、メモリコントローラ５００は、自動セルフリフレッシュを有効にした状態で、システム内の全てのメモリを、同様にプリチャージパワーダウンにする。しかしながら、Ｄ２は、よりディープなパワー状態であるため、自動セルフリフレッシュを用いてプリチャージパワーダウンに移行する前に、必要とされる（owed）リフレッシュをすぐに実行する。
【００４８】
Ｄ３状態は、サスペンド状態として知られている。メモリコントローラ５００は、２つのＤ３状態をサポートする。第１のＤ３状態は、システムＳ３状態に使用される。メモリコントローラ５００は、システムＳ３状態へのエントリ（移行）を見越して、ＤＲＡＭ及びＰＨＹを最低電力状態にする。メモリコントローラ５００は、コマンドキュー５２０からの書込みをフラッシュし、保留中のリフレッシュサイクルを実行する。第２のＤ３状態は、非同期ＤＲＡＭリフレッシュ（ＡＤＲ）スタイルのセルフリフレッシュに使用される。ＡＤＲは、停電又はシステムクラッシュの間に保留中の書込みデータを不揮発性メモリにフラッシュするために、サーバで使用される機能である。自動セルフリフレッシュを有効にした状態でＤＲＡＭ及びＰＨＹをプリチャージパワーダウンにする。
【００４９】
本明細書で使用されているように、電力要求信号は、任意の電力状態から他の電力状態への変更を示す。利用可能な電力状態は、メモリのタイプによって異なる。さらに、本明細書で使用されているように、「低電力状態」は、他の状態と比較して節電する状態を意味する。例えば、ＤＤＲ４  ＳＤＲＡＭは、セルフリフレッシュ及びプリチャージパワーダウンとして知られる２つの低電力状態をサポートする。しかしながら、ＬＰＤＤＲ４は、アクティブパワーダウン、セルフリフレッシュパワーダウン及びアイドルパワーダウンとして知られる３つの低電力状態をサポートする。これらの状態に出入りすることができる条件は異なり、対応する公開されているＪＥＤＥＣ規格の状態図に規定されており、「低電力状態」はこれらの状態のうち何れかを含む。
【００５０】
ＭＯＰアレイ７１０は、これらの電力状態の変化の全てをサポートするためのコマンドの効率的な符号化を可能にするコマンドフォーマットをサポートする。ＭＯＰアレイ７１０は、４つのＰ状態コンテキストの各々に対して「ＳｒＥｎｔｅｒＭＯＰ」及び「ＳｒＥｘｉｔＭＯＰ」として知られる２つのアレイを使用する。ＳｒＥｎｔｅｒＭＯＰは、Ｐ状態要求に対してセルフリフレッシュに移行する前に処理される。ＳｒＥｘｉｔＭＯＰは、Ｐ状態要求に対してセルフリフレッシュを抜け出た後に処理される。ＭＯＰアレイは、モードレジスタ（ＭＲ）、ＤＲＡＭ毎のアクセス可能性（ＰＤＡ）を有するＭＲ、レジスタ制御ワード（ＲＣＷ）又はバッファ制御ワード（ＢＣＷ）コマンドのシーケンシャルリストを指定する。セルフリフレッシュコントローラ５６６は、電力状態変更要求を受信すると、ＭＯＰアレイ７１０内の選択されたコンテキストに対するコマンドにアクセスして、メモリシステムに発行されたＭＯＰのシーケンス及びタイミングを決定する。
【００５１】
ＭＯＰ７１２の一部は、対応する１つ以上のＤ状態を示すフィールドを含む。したがって、セルフリフレッシュコントローラ５６６は、現在のコンテキストには適用できないＭＯＰを無視して、特定のコンテキストに適用可能なコマンドについて最初の位置から開始するＭＯＰアレイ７１２を走査する。また、ＭＯＰアレイ７１２は、適切な場合に、メモリチップの動的タイミングパラメータを満たすために、ＭＯＰ間の適切なタイミングを決定するためのカウンタ値を含む。セルフリフレッシュコントローラ５６６は、コマンドシーケンスを開始した後に、電力状態変更についてのシーケンスの終了を示すヌルエントリに遭遇するまでＭＯＰアレイ７１２を走査し続け、有効なコマンドを実行し続ける。電力状態変更についてのコマンドの効率的なストレージを可能にするために使用することができるＭＯＰアレイ７１２のフィールドの一例を次に説明する。
【００５２】
図８は、いくつかの実施形態による、図７のＭＯＰアレイ７１０のエントリ８００のブロック図である。エントリ８００は、ＭＯＰを定義する様々な符号化ビットフィールドを含む４０ビットのエントリである。サポートされているビットフィールドは、以下の表１に示されている。
【表１】
2019520640.tif 000003
【００５３】
ＭＯＰアレイ７１２は、セルフリフレッシュコントローラ５６６が、許可された状態変更に対して要求されたＭＯＰを適切に復号して発行するように続く、様々なプログラミング要件を有する。セルフリフレッシュコントローラ５６６は、最初のヌルエントリがアレイから読み出されるまで、分岐することなく線形的にＭＯＰを復号して発行する。ヌルエントリは、ＭＯＰ＿ＲＡＮＫの全てのビット及びＭＯＰ＿ＣＩＤの全てのビットがゼロであるエントリである。したがって、システムＢＩＯＳがＭＯＰアレイ７１２をプログラムする場合、コンテキスト毎に少なくとも１つのヌルエントリをプログラムすべきである。
【００５４】
ＭＯＰは、ＭＯＰ＿ＶＬＤ＿Ｄ１、ＭＯＰ＿ＶＬＤ＿Ｄ２及びＭＯＰ＿ＶＬＤ＿Ｄ３のうち２つ以上を設定することによって、異なるＤ状態によって共有することができる。ＭＯＰは、ＭＯＰ＿ＶＬＤ＿Ｄ１、ＭＯＰ＿ＶＬＤ＿Ｄ２及びＭＯＰ＿ＶＬＤ＿Ｄ３のうち対応する１つをクリアすることによって、特定のＤ状態によってスキップされる。
【００５５】
Ｄ状態エントリルーチン（ＳｒＥｎｔｅｒＭＯＰ）は一定の要件を含む。すなわち、パリティが有効な場合に、パリティを無効にするコマンドを含める必要がある。レジスタードＤＩＭＭ（ＲＤＩＭＭ）の推奨順序は、最初にＤＲＡＭチップのパリティを無効にしてから、バッファのパリティを無効にすることである。また、コマンド間遅延時間（ｔｃｃｄ）をプログラムするコマンドを含める必要があり、このコマンドは、ＤＤＲ４仕様に従って、モードレジスタ６（ＭＲ６）のビット１２〜１０に時間を設定することによってプログラムされる。また、ＲＤＩＭＭを含むシステムでは、ターゲットレジスタ制御ワードＲＣ０Ａ及びＲＣ３ｘをプログラムするためのコマンドを含める必要がある。
【００５６】
また、Ｄ状態終了ルーチン（ＳｒＥｘｉｔＭＯＰ）も一定の要件を含む。すなわち、パリティが有効になっている場合には、パリティを有効にするコマンドを含める必要がある。ＲＤＩＭＭの推奨設定は、レジスタ内でのみパリティを有効にすることである。
【００５７】
単一のＭＯＰエントリは、複数のチップ選択をターゲットとすると予想される。偶数／奇数のチップ選択が非対称の設定を意図的に受信していない限り、ＭＯＰ＿ＲＡＮＫは、全ての設定されたチップ選択を反映することが推奨される。この点について、ＢＥＱ５１４は、反転が可能である場合に単一のＭＯＰを２つのコマンドに変換し、反転及びミラーリングの両方が可能である場合に単一のＭＯＰを４つのコマンドに変換するように、反転及びミラーリングを可能にするモードを有する。例えば、クアッドランクＤＩＭＭの場合、符号化されたチップ選択を含むクアッドランクＲＤＩＭＭについて、モードレジスタセットコマンド毎に２つのＭＯＰエントリを使用することができる。
【００５８】
ＭＯＰアレイ７１２は、コマンドの効率的な符号化を可能にし、これを小さいサイズで実装することを可能にする様々なフィールドをサポートする。例えば、セルフリフレッシュコントローラ５６６がＭＯＰアレイ７１２にアクセスするために使用するコマンド走査技術は、各低電力状態に対するコマンドを複製するのを必要とすることなく、複数の低電力状態に対して特定のコマンドを使用することを可能にする。さらに、ヌルエントリを使用して終了条件を知らせることは、セルフリフレッシュコントローラ５６６が所望の状態変更及びコンテキストに基づいてエントリポイント及びエグジットポイントを計算するのを必要とすることなく、各コマンドシーケンスの終了を符号化する効率的な方法である。
【００５９】
したがって、本明細書に記載されるメモリコントローラは、コントローラ及びプログラマブルＭＯＰアレイを使用して、多種多様な利用可能なメモリタイプ及びＤＩＭＭ構成の何れかをサポートする。コントローラは、電力状態変更要求信号のアクティベーションに応じて、ＭＯＰアレイにアクセスして少なくとも１つのエントリをフェッチし、このエントリによって示される少なくとも１つのメモリ動作を発行して電力状態変更要求を実行する。このように構成されているので、ＭＯＰアレイは、メモリコントローラがコンパクトな回路を用いて多種多様なメモリタイプ及び構成をサポートするのを可能にする。さらに、システムＢＩＯＳは、スタートアップ時にメモリの構成を決定し、このシステム内の特定のタイプのメモリの電力状態変更動作に対応するエントリのセットを用いてＭＯＰアレイをプログラムすることができる。
【００６０】
メモリコントローラは、ハードウェア及びソフトウェアの様々な組み合わせで実装することができる。ＢＩＯＳメモリに記憶され、システムＢＩＯＳによってＭＯＰアレイにロードされる等のソフトウェアコンポーネントのいくつかは、少なくとも１つのプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に記憶され得る。さらに、電力状態変更に使用されるいくつかの共通動作をマイクロコントローラ５６４等の他のハードウェアに実装して、ＭＯＰアレイのフィールドの数及び／又はサイズを簡略化することができる。
【００６１】
図５のメモリコントローラ５００又はその一部は、集積回路を製造するために直接的又は間接的にプログラムによって読み出され使用され得るデータベース又は他のデータ構造の形態でコンピュータアクセス可能なデータ構造によって記載又は表現することができる。例えば、このデータ構造は、Ｖｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル（ＲＴＬ）記述であってもよい。この記述は、その記述を合成して合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出すことができる。ネットリストは、集積回路を含むハードウェアの機能性も表すゲートのセットを含む。その後、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次に、マスクを様々な半導体製造工程に使用して、集積回路を製造することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト（合成ライブラリの有無にかかわらず）若しくはデータセット、又は、必要に応じてグラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００６２】
特定の実施形態について説明したが、これらの実施形態に対する様々な変更は、当業者に明らかであろう。例えば、サポートされているメモリデバイスの範囲は、異なる実施形態では変わることになり、上述した例に限定されない。また、ＭＯＰアレイのフィールド定義は、異なる実施形態では変わるであろう。さらに、エントリが適用される特定の電力状態を示すフィールドを含むものとしてＭＯＰアレイ７１０を説明したが、他の実施形態において、ＭＯＰアレイは、特定のサポートされた電力状態変更要求又はターゲット電力空間に対応するエントリアドレス及びエグジットアドレスによって編成することができる。
【００６３】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することが意図されている。
【図１】
2019520640.tif 000004
【図２】
2019520640.tif 000005
【図３】
2019520640.tif 000006
【図４】
2019520640.tif 000007
【図５】
2019520640.tif 000008
【図６】
2019520640.tif 000009
【図７】
2019520640.tif 000010
【図８】
2019520640.tif 000011
【手続補正書】
【提出日】平成31年2月22日(2019.2.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含むコントローラ（５６６）と、
複数のエントリを含むメモリ動作アレイ（７１０）であって、各エントリ（８００）は複数の符号化フィールドを備える、メモリ動作アレイと、を備え、
前記メモリ動作アレイ（７１０）は、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、前記複数のエントリ内の複数のタイプのメモリのうち前記特定のタイプのメモリについての異なるコマンドシーケンスを記憶するようにプログラム可能であり、
前記コントローラ（５６６）は、前記電力状態変更要求信号のアクティベーションに応じて、前記メモリ動作アレイ（７１０）にアクセスして少なくとも１つのエントリをフェッチし、前記少なくとも１つのエントリによって示される少なくとも１つのメモリ動作を発行する、
メモリコントローラ（５００）。
【請求項２】
前記メモリ動作は、ダブルデータレート（ＤＤＲ）メモリモジュール（６３０）用のモードレジスタセット（ＭＲＳ）コマンドを含む、
請求項１のメモリコントローラ（５００）。
【請求項３】
前記メモリ動作は、前記ＤＤＲメモリモジュール（６３０）のレジスタ（６５０）を構成するためのレジスタ制御ワード書き込みコマンドを備える、
請求項２のメモリコントローラ（５００）。
【請求項４】
前記メモリ動作は、前記ＤＤＲメモリモジュール（６３０）のデータバッファ（６６０）を構成するためのバッファ制御ワード書き込みコマンドを含む、
請求項３のメモリコントローラ（５００）。
【請求項５】
前記複数のエントリは、少なくとも１つの有効なエントリと、後続のヌルエントリと、を含む、
請求項１のメモリコントローラ（５００）。
【請求項６】
前記複数の符号化フィールドのうち１つは、少なくとも１つのメモリデバイス電力状態の何れが前記エントリに対応しているかを示す電力状態フィールドを備える、
請求項１のメモリコントローラ（５００）。
【請求項７】
メモリシステム（１３０／１４０）の電力状態を制御する方法であって、
特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、複数のタイプのメモリのうち前記特定のタイプのメモリについてのプログラム可能なコマンドのシーケンスを、メモリ動作（ＭＯＰ）アレイ（７１０）に記憶することと、
電力状態変更要求信号を受信することと、
前記電力状態変更要求信号に応じて、前記ＭＯＰアレイ（７１０）にアクセスすることと、
前記ＭＯＰアレイ（７１０）のエントリを少なくとも１つのメモリ動作に復号することと、
前記少なくとも１つのメモリ動作を出力することと、
所定の終了条件が発生するまで、前記ＭＯＰアレイ（７１０）内の連続するエントリのために、前記復号すること及び前記出力することを繰り返すことと、を含む、
方法。
【請求項８】
前記所定の終了条件は、連続するエントリがヌルエントリである場合に発生する、
請求項７の方法。
【請求項９】
前記メモリシステム（１３０）の特性を検出したことに応じて、一連の動作を前記ＭＯＰアレイ（７１０）に記憶することをさらに含む、
請求項７の方法。
【請求項１０】
前記記憶することは、
基本入出力システム（ＢＩＯＳ）の制御下において、前記一連の動作を前記ＭＯＰアレイ（７１０）に記憶することを含む、
請求項９の方法。
【請求項１１】
メモリモジュール（１３４／１３６／１３８）を備えるメモリシステム（１３０）と、
前記メモリシステム（１３０）に接続され、メモリコントローラ（５００）を用いて前記メモリモジュール（１３４／１３６／１３８）にアクセスするように構成されたプロセッサ（１１０）と、を備え、
前記メモリコントローラ（５００）は、
電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含むコントローラ（５６６）と、
複数のエントリを含むメモリ動作アレイ（７１０）であって、各エントリは複数の符号化フィールドを備える、メモリ動作アレイ（７１０）と、を有しており、
前記コントローラ（５６６）は、前記電力状態変更要求信号のアクティベーションに応じて、前記メモリ動作アレイ（７１０）にアクセスして少なくとも１つのエントリをフェッチし、前記少なくとも１つのエントリによって示される少なくとも１つのメモリ動作を発行する、
システム（１００）。
【請求項１２】
前記プロセッサ（１１０）は、
前記プロセッサ（１１０）の動的動作に応じて前記電力状態変更要求信号を生成するシステム管理ユニット（１３０）を含む、
請求項１１のシステム（１００）。
【請求項１３】
前記メモリモジュール（１３４／１３６／１３８）は、
複数のダブルデータレート（ＤＤＲ）メモリチップ（６６０）と、
複数のコマンド及びアドレス信号を受信するために前記プロセッサ（１１０）に接続される入力と、前記複数のＤＤＲメモリチップ（６６０）に接続された出力と、を有するレジスタ（６６０）と、を含む、
請求項１１のシステム（１００）。
【請求項１４】
前記メモリモジュール（１３４／１３６／１３８）は、
前記プロセッサ（１１０）に接続された第１双方向データポートと、前記複数のＤＤＲメモリチップ（６６０）に接続された第２双方向データポートと、を有する複数のデータバッファ（６５０）を含む、
請求項１３のシステム（１００）。
【請求項１５】
前記プロセッサ（１１０）は、
前記メモリコントローラ（５００）と前記メモリシステム（６２０）との間に接続された物理インタフェース（ＰＨＹ）（６２０）を含む、
請求項１１のシステム（１００）。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より具体的には、低電力状態を有するメモリとインタフェースをとるデータ処理システム用のメモリコントローラに関する。
【背景技術】
【０００２】
コンピュータシステムは、通常、安価で高密度なダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップをメインメモリに使用する。今日販売されている殆どのＤＲＡＭチップは、ＪＥＤＥＣ（Joint Electron Devices Engineering Council）によって公布された様々なダブルデータレート（ＤＤＲ）ＤＲＡＭ規格と互換性がある。ＤＤＲ  ＤＲＡＭは、様々な低電力モードを提供することによって、高性能及び低電力動作の両方を提供する。これらの低電力モードのうち１つは、プリチャージパワーダウンとして知られている。プリチャージパワーダウンの間、全てのバンクがプリチャージされ、オンチップ遅延ロックループ（ＤＬＬ）を無効にし、入力クロックをオフにし、出力バッファを無効にして、消費電力を大幅に減らすことができる。プリチャージパワーダウンは比較的早く終了するため、ＤＬＬを実行したままにすることで終了時間を短縮することができる。
【０００３】
メモリコントローラは、今日市場に出回っている様々な想定されるＤＤＲメモリデバイスをサポートすることが望ましい。例えば、ＤＤＲバージョン３（ＤＤＲ３）、ＤＤＲバージョン４（ＤＤＲ４）、低電力（ＬＰ）ＤＤＲ３（ＬＰＤＤＲ３）、ＬＰＤＤＲ４及びグラフィックスＤＤＲバージョン５（ｇＤＤＲ５）等は、全て現在利用可能な選択肢である。しかしながら、それぞれ異なるＤＤＲメモリデバイスは、異なるセットのモードレジスタ（ＭＲ）を有しており、異なる数及び構成のメモリバンクを有することができ、異なる低電力モードをサポートすることができる。したがって、これらの全てのバリエーションに対して低電力モードを効率的にサポートするように、単一のメモリコントローラを設計することが困難であった。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムでの使用に適したアドバンストプロセッシングユニット（ＡＰＵ）のブロック図である。
【図３】いくつかの実施形態による、図２のＡＰＵでの使用に適したメモリコントローラ及び関連する物理インタフェース（ＰＨＹ）のブロック図である。
【図４】いくつかの実施形態による、図２のＡＰＵでの使用に適した他のメモリコントローラ及び関連するＰＨＹのブロック図である。
【図５】いくつかの実施形態による、メモリコントローラのブロック図である。
【図６】いくつかの実施形態による、図１のデータ処理システムの一部に対応するデータ処理システムのブロック図である。
【図７】いくつかの実施形態による、図５のメモリチャネルコントローラの一部に対応するメモリチャネルコントローラのブロック図である。
【図８】いくつかの実施形態による、図７のＭＯＰアレイのエントリのブロック図である。
【発明を実施するための形態】
【０００５】
以下の説明では、異なる図面における同じ参照番号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続された」という用語及びその関連する動詞の形態は、従来技術で知られている手段による直接接続及び間接的な電気的接続を含み、直接接続の説明は、間接的な電気的接続の適切な方式を用いる別の実施形態も含む。
【０００６】
以下に説明するように、メモリコントローラは、コントローラと、メモリ動作（ＭＯＰ）アレイと、を含む。コントローラは、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を有する。ＭＯＰアレイは、複数のエントリを含み、各エントリは、複数の符号化フィールドを有する。コントローラは、電力状態変更要求信号のアクティベーションに応じて、ＭＯＰアレイにアクセスして少なくとも１つのエントリをフェッチし、そのエントリによって示される少なくとも１つのメモリ動作を発行する。メモリコントローラは、例えば、電力状態変更要求を実施するために使用される特定のメモリ動作を記述したＭＯＰアレイの部分を含むことが可能である。例えば、ＤＤＲ４及びＬＰＤＤＲ４  ＤＲＡＭは、異なるステートマシンと、異なる低電力モードと、を実装しており、アクティブ状態から低電力状態に移行するための異なるシーケンスを要求する。ある場合には、メモリコントローラは、ＭＯＰアレイを使用して、ＤＤＲレジスタ付きＤＩＭＭのレジスタ制御ワード（ＲＣＷ）又はバッファ制御ワード（ＢＣＷ）に書き込まれるようにコマンドを定義することができる。
【０００７】
別の形態では、このようなメモリコントローラを、プロセッサとメモリモジュールとを含む処理システムのプロセッサに含めることができる。プロセッサは、メモリコントローラとメモリシステムとの間に接続された物理インタフェース（ＰＨＹ）をさらに含むことができる。
【０００８】
さらに別の形態では、メモリシステムの電力状態を制御するための方法が開示されている。電力状態変更信号を受信する。電力状態変更要求信号に応じて、メモリ動作（ＭＯＰ）アレイにアクセスする。ＭＯＰアレイのエントリを少なくとも１つのメモリ動作に復号する。このように復号された各メモリ動作を出力する。所定の終了条件が発生するまで、ＭＯＰアレイ内の連続するエントリに対して、復号及び出力を繰り返す。所定の終了条件は、例えば、ＭＯＰアレイ内のヌルエントリであってもよい。受信した電力状態変更要求信号は、プリチャージパワーダウン、セルフリフレッシュパワーダウン又はアイドルパワーダウン等のアクティブ状態から低電力状態への変更、又は、アクティブ状態におけるある動作周波数から別の動作周波数への変更であってもよい。また、基本入出力システム（ＢＩＯＳ）は、メモリシステムの特性の検出に応じてＭＯＰアレイをプログラムすることができる。
【０００９】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、アクセラレーテッドプロセッシングユニット（ＡＰＵ）の形態のデータプロセッサ１１０と、メモリシステム１２０と、ＰＣＩｅ（Peripheral Component Interconnect Express）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネル、ＰＣＩｅリンクに接続するためのＰＣＩｅルートコンプレックス、ＵＳＢネットワークに接続するためのＵＳＢコントローラ、及び、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースが含まれる。
【００１０】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、この例では別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、ＤＤＲｘバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、ＤＤＲｘバス１４２に接続されたＤＩＭＭのセットを含む。
【００１１】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、様々な不揮発性メモリタイプ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等）の何れかであってもよい。
【００１２】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１３】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１４】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を提供することによって、現代のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、最新のＤＤＲメモリ（例えば、ＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等）に接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約する低電力モードを提供し、組み込み型サーマルモニタリングも提供する。以下により詳細に説明するように、データプロセッサ１１０は、オーバーヒートを回避し、サーマルオーバロードの可能性を低減するために、特定の状況において電力を抑制することができるメモリコントローラを備える。
【００１５】
図２は、図１のデータ処理システム１００での使用に適したＡＰＵ２００のブロック図である。ＡＰＵ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセットと、を含む。
【００１６】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。この例では、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックス２１０は任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００１７】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を、高度に統合された並列方式で実行することの可能な高性能グラフィックス処理装置（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮ及びデータファブリック２５０に対して双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、ＡＰＵ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有する統合メモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャの何れかをサポートすることができる。グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリも使用する。
【００１８】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００１９】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２０】
周辺コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々が、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、ＡＰＵ２００で使用可能な周辺コントローラの単なる例示である。
【００２１】
周辺バスコントローラ２７０はシステムコントローラ（即ち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々が、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、システムハブ２６６及びデータファブリック２５０に対して双方向に接続されている。したがって、例えば、ＣＰＵコアは、データファブリック２５０がＩ／Ｏハブ２７６を介してルーティングするアクセスを通じて、ＵＳＢコントローラ２６２、ＳＡＴＡインタフェースコントローラ２６４、ＳＢ２７２、又は、ＰＣＩｅコントローラ２７４内のレジスタをプログラムすることができる。
【００２２】
ＳＭＵ２８０は、ＡＰＵ２００上のリソースの動作を制御し、それらの間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、ＡＰＵ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、ＡＰＵ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロックソース（例えば位相ロックループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された消費電力値を受信して、適切な電力状態を判断してもよい。
【００２３】
また、ＡＰＵ２００は、様々なシステムモニタリング及び省電力機能を実装する。特に、１つのシステムモニタリング機能は、サーマルモニタリングである。例えば、ＳＭＵ２８０は、ＡＰＵ２００が高温になると、ＣＰＵコア２１２，２１４及び／又はグラフィックスコア２２０の周波数及び電圧を低減させてもよい。ＡＰＵ２００が非常に高温になった場合には、ＡＰＵ２００が完全にシャットダウンされてもよい。サーマルイベントは、ＳＭＵ２８０によって、外部センサからＳＭＮバスを介して受信されてもよく、ＳＭＵ２８０は、これに応じてクロック周波数及び／又は電源電圧を低下させてもよい。
【００２４】
図３は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適したメモリコントローラ３００及び関連する物理インタフェース（ＰＨＹ）３３０のブロック図である。メモリコントローラ３００は、メモリチャネル３１０と、電力エンジン３２０と、を含む。メモリチャネル３１０は、ホストインタフェース３１２と、メモリチャネルコントローラ３１４と、物理インタフェース３１６と、を含む。ホストインタフェース３１２は、メモリチャネルコントローラ３１４を、スケーラブルデータポート（ＳＤＰ）を介してデータファブリック２５０に双方向に接続する。物理インタフェース３１６は、メモリチャネルコントローラ３１４を、ＤＤＲ−ＰＨＹインタフェース仕様（ＤＦＩ）に準拠するバスを介してＰＨＹ３３０に双方向に接続する。電力エンジン３２０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢ（Advanced Peripheral Bus）を介してＰＨＹ３３０に双方向に接続されており、メモリチャネルコントローラ３１４にも双方向に接続されている。ＰＨＹ３３０は、例えば図１のメモリチャネル１３０又はメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ３００は、単一のメモリチャネルコントローラ３１４を使用した単一のメモリチャネル用のメモリコントローラの例示であり、以下にさらに説明するメモリチャネルコントローラ３１４の動作を制御するための電力エンジン３２０を有する。
【００２５】
図４は、いくつかの実施形態による、図２のＡＰＵ２００での使用に適した別のメモリコントローラ４００及び関連するＰＨＹ４４０，４５０のブロック図である。メモリコントローラ４００は、メモリチャネル４１０，４２０と、電力エンジン４３０と、を含む。メモリチャネル４１０は、ホストインタフェース４１２と、メモリチャネルコントローラ４１４と、物理インタフェース４１６と、を含む。ホストインタフェース４１２は、メモリチャネルコントローラ４１４を、ＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４１６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４１４をＰＨＹ４４０に双方向に接続する。メモリチャネル４２０は、ホストインタフェース４２２と、メモリチャネルコントローラ４２４と、物理インタフェース４２６と、を含む。ホストインタフェース４２２は、メモリチャネルコントローラ４２４を、別のＳＤＰを介してデータファブリック２５０に双方向に接続する。物理インタフェース４２６は、ＤＦＩ仕様に準拠しており、メモリチャネルコントローラ４２４をＰＨＹ４５０に双方向に接続する。電力エンジン４３０は、ＳＭＮバスを介してＳＭＵ２８０に双方向に接続されており、ＡＰＢを介してＰＨＹ４４０，４５０に双方向に接続されており、メモリチャネルコントローラ４１４，４２４にも双方向に接続されている。ＰＨＹ４４０は、例えば図１のメモリチャネル１３０等のメモリチャネルに対する双方向接続を有する。ＰＨＹ４５０は、例えば図１のメモリチャネル１４０等のメモリチャネルに対する双方向接続を有する。メモリコントローラ４００は、２つのメモリチャネルコントローラを有するメモリコントローラの例示であり、共有の電力エンジン４３０を使用して、以下にさらに説明するように、メモリチャネルコントローラ４１４及びメモリチャネルコントローラ４２４の各々の動作を制御する。
【００２６】
図５は、いくつかの実施形態による、メモリコントローラ５００のブロック図である。メモリコントローラ５００は、概して、メモリチャネルコントローラ５１０と、電力コントローラ５５０と、を含む。メモリチャネルコントローラ５１０は、概して、インタフェース５１２と、キュー５１４と、コマンドキュー５２０と、アドレス生成器５２２と、連想メモリ（ＣＡＭ）５２４と、リプレイキュー５３０と、リフレッシュロジックブロック５３２と、タイミングブロック５３４と、ページテーブル５３６と、アービタ５３８と、エラー訂正コード（ＥＣＣ）チェックブロック５４２と、ＥＣＣ生成ブロック５４４と、書込みデータバッファ（ＷＤＢ）５４６と、を含む。
【００２７】
インタフェース５１２は、外部バスを介したデータファブリック２５０との第１双方向接続と、出力と、を有する。メモリコントローラ５００において、この外部バスは、「ＡＸＩ４」として知られている、英国ケンブリッジのＡＲＭ  Ｈｏｌｄｉｎｇｓ，ＰＬＣによって仕様化されたアドバンストエクステンシブルインタフェースバージョン４と互換性があるが、他の実施形態では、他のタイプのインタフェースであってもよい。インタフェース５１２は、ＦＣＬＫ（又はＭＥＭＣＬＫ）ドメインとして知られる第１クロックドメインから、ＵＣＬＫドメインとして知られるメモリコントローラ５００の内部の第２クロックドメインへのメモリアクセス要求を変換する。同様に、キュー５１４は、ＵＣＬＫドメインから、ＤＦＩインタフェースに関連するＤＦＩＣＬＫドメインへのメモリアクセスを提供する。
【００２８】
アドレス生成器５２２は、データファブリック２５０からＡＸＩ４バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたアドレスとして表される物理アドレス空間内のアクセスアドレスを含む。アドレス生成器５２２は、正規化されたアドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに関連付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスにクエリしてそのサイズ及び構成を判断し、アドレス生成器５２２に関連する構成レジスタのセットをプログラムする。アドレス生成器５２２は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー５２０は、データ処理システム１００内のメモリアクセスエージェント（例えば、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等）から受信したメモリアクセス要求のキューである。コマンドキュー５２０は、アドレス生成器５２２によって復号化されたアドレスフィールドと、アクセスタイプ及びサービス品質（ＱｏＳ）識別子を含むメモリアクセスをアービタ５３８が効率的に選択するのを可能にする他のアドレス情報と、を記憶する。ＣＡＭ５２４は、例えばライトアフターライト（ＷＡＷ）及びリードアフターライト（ＲＡＷ）順序付けルール等の順序付けルールを実施するための情報を含む。
【００２９】
リプレイキュー５３０は、例えば、アドレス及びコマンドパリティ応答、ＤＤＲ４  ＤＲＡＭの書込み巡回冗長チェック（ＣＲＣ）応答、又は、ｇＤＤＲ５  ＤＲＡＭの書込み及び読出しＣＲＣ応答等の応答を待つアービタ５３８によって取り出されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー５３０は、ＥＣＣチェックブロック５４２にアクセスして、返されたＥＣＣが正しいか否か又はエラーを示しているかを判別する。リプレイキュー５３０は、何れかのサイクルでパリティ又はＣＲＣエラーの場合にアクセスが再実行されるのを可能にする。
【００３０】
リフレッシュロジック５３２は、メモリアクセスエージェントから受信した通常の読出し及び書込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ、終端抵抗（ＺＱ）較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウン状態にある場合には、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック５３２は、リフレッシュコマンドを定期的に生成して、ＤＲＡＭチップ内のメモリセルのチャージオフストレージキャパシタのリークによって生じるデータエラーを防止する。さらに、リフレッシュロジック５３２は、ＺＱを定期的に較正して、システム内の熱変化によるオンダイ終端抵抗のミスマッチを防止する。
【００３１】
アービタ５３８は、コマンドキュー５２０に双方向に接続されており、メモリチャネルコントローラ５１０の中心部分である。アービタ５３８は、メモリバスの利用を改善するために、インテリジェントなアクセススケジューリングによって効率を改善する。アービタ５３８は、タイミングブロック５３４を使用して、コマンドキュー５２０内の特定のアクセスの発行に適しているか否かをＤＲＡＭタイミングパラメータに基づいて判断することによって、適切なタイミング関係を実施する。例えば、各ＤＲＡＭは、アクティブコマンド間の最小指定時間（「ｔＲＣ」として知られる）を有する。タイミングブロック５３４は、リプレイキュー５３０に双方向に接続されており、このタイミングパラメータ及びＪＥＤＥＣ仕様で指定された他のタイミングパラメータに基づいて適格性を判断するカウンタのセットを維持する。ページテーブル５３６は、リプレイキュー５３０に双方向に接続されており、アービタ５３８のメモリチャネルの各バンク及びランクのアクティブページに関する状態情報を維持する。
【００３２】
ＥＣＣ生成ブロック５４４は、インタフェース５１２から受信した書込みメモリアクセス要求に応じて、書込みデータに従ってＥＣＣを計算する。ＤＢ５４６は、受信したメモリアクセス要求の書込みデータ及びＥＣＣを記憶する。アービタ５３８が、メモリチャネルにディスパッチするための対応する書込みアクセスを選ぶと、ＤＢ５４６は、結合した書込みデータ／ＥＣＣをキュー５１４に出力する。
【００３３】
電力コントローラ５５０は、概して、ＡＸＩ（Advanced Extensible Interface, version 1）へのインタフェース５５２と、ＡＰＢインタフェース５５４と、電力エンジン５６０と、を含む。インタフェース５５２は、ＳＭＮへの第１双方向接続であって、図５に別に示された「ＥＶＥＮＴ＿ｎ」と付されたイベント信号を受信するための入力を含む第１双方向接続と、出力と、を含む。ＡＰＢインタフェース５５４は、インタフェース５５２の出力に接続された入力と、ＡＰＢを介してＰＨＹに接続するための出力と、を有する。電力エンジン５６０は、インタフェース５５２の出力に接続された入力と、キュー５１４の入力に接続された出力と、を有する。電力エンジン５６０は、構成レジスタ５６２のセットと、マイクロコントローラ（μＣ）５６４と、セルフリフレッシュコントローラ（ＳＬＦＲＥＦ／ＰＥ）５６６と、信頼性のある読出し／書込みタイミングエンジン（ＲＲＷ／ＴＥ）５６８と、を含む。構成レジスタ５６２は、ＡＸＩバスを介してプログラムされており、メモリコントローラ５００内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ５６２は、図５に詳細に示されていないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ５６６は、リフレッシュロジック５３２によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読出し／書込みタイミングエンジン５６８は、ＤＤＲインタフェース最大読出しレイテンシ（ＭＲＬ）トレーニング及びループバックテスト等の目的のために、連続的なメモリアクセスストリームをメモリ又はＩ／Ｏデバイスに提供する。
【００３４】
メモリチャネルコントローラ５１０は、関連するメモリチャネルへのディスパッチのためにメモリアクセスを選択することを可能にする回路を含む。アドレス生成器５２２は、所望のアービトレーションの決定を行うために、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号化し、コマンドキュー５２０は、プリデコードされた情報を記憶する。構成レジスタ５６２は、受信したアドレス情報をアドレス生成器５２２がどのように復号するのかを決定するために、構成情報を記憶する。アービタ５３８は、復号化されたアドレス情報と、タイミングブロック５３４によって示されたタイミング適格性情報と、ページテーブル５３６によって示されたアクティブページ情報と、を使用して、例えばＱｏＳ要件等の他の基準を遵守しながらメモリアクセスを効率的にスケジューリングする。例えば、アービタ５３８は、メモリページを変更するのに必要なプリチャージ及びアクティブ化コマンドのオーバヘッドを避けるために、オープンページへのアクセスを優先し、或るバンクへのオーバヘッドアクセスを、他のバンクへの読出し及び書込みアクセスをインタリーブすることによって隠す。特に、アービタ５３８は、通常動作中に、異なるページを選択する前にプリチャージされる必要があるまで、異なるバンク内のページオープンを維持することを決定してもよい。
【００３５】
図６は、いくつかの実施形態による、図１のデータ処理システム１００の一部に対応するデータ処理システム６００のブロック図である。データ処理システム６００は、概して、「ＭＣ」６１０と付されたメモリコントローラと、ＰＨＹ６２０と、メモリモジュール６３０と、を含む。
【００３６】
メモリコントローラ６１０は、例えばＣＰＵコア２１２又はグラフィックスコア２２０等のプロセッサのメモリアクセスエージェントからメモリアクセス要求を受信し、このメモリアクセスエージェントへのメモリ応答を提供する。メモリコントローラ６１０は、図２のメモリコントローラ２９０の何れかに対応する。メモリコントローラ６１０は、ＤＦＩ互換バスを介してＰＨＹ６２０にメモリアクセスを出力し、ＰＨＹ６２０から応答を受信する。
【００３７】
ＰＨＹ６２０は、ＤＦＩバスを介してメモリコントローラ６１０に接続されている。ＰＨＹ６２０は、「Ｃ／Ａ」と付された１セットのコマンド及びアドレス出力と、６４ビットのデータ及び８ビットのＥＣＣを含む「ＤＱ」と付された１セットの７２の双方向データ信号とを提供することによって、受信したメモリアクセスに応答する物理的シグナリングを実行する。
【００３８】
メモリモジュール６３０は、任意の数のメモリタイプ及びスピードグレードをサポートすることができる。図示した実施形態において、メモリモジュール６３０は、「ＤＤＲ４」と付された１セットのメモリチップ６４０と、「ＲＣＤ」と付されたレジスタクロックドライバ６５０と、それぞれ「Ｂ」と付された１セットのバッファ６６０と、を含むＤＤＲ４レジスタードＤＩＭＭ（ＲＤＩＭＭ）である。メモリチップ６４０は、ＭビットセットのＮ倍のメモリチップを含む。７２のデータ信号（６４ビットのデータ＋８ビットのＥＣＣ）をサポートするためには、Ｍ×Ｎ＝７２である。例えば、各メモリチップが４倍（Ｎ＝４）である場合、メモリモジュール６２０は、１８個のＤＤＲ４メモリチップを含む。或いは、各メモリチップが８倍（Ｎ＝８）である場合、メモリモジュール６２０は、９個のＤＤＲ４メモリチップを含む。各バッファ６６０は、１×Ｎ個のメモリチップと関連しており、対応するＮビットのデータをラッチするために使用される。図６に示す例において、メモリモジュール６３０は、ＤＤＲ４メモリを含み、Ｃ／Ａ信号は、ＤＤＲ４仕様に記載されている信号を含む。ＤＤＲ４仕様は、ＲＣＤ６５０によって受信されラッチされた同一のＣ／Ａ信号が各メモリチップ６４０に対して左右に再駆動される、「フライバイ」アーキテクチャを指定する。しかしながら、データ信号ＤＱは、対応するバッファ及びメモリのみに与えられる。
【００３９】
メモリモジュール６３０は、レジスタ制御ワード（ＲＣＷ）にプログラムされたＲＣＤ６５０、及び、バッファ制御ワード（ＢＣＷ）にプログラムされたバッファ６６０の制御情報に従って動作する。よって、メモリコントローラ６１０は、メモリモジュール６３０を低電力状態にすると、以下に十分に説明する方法でＲＣＷ及びＢＣＷの設定を変更する。
【００４０】
データ処理システム６００は、メモリモジュール６３０としてレジスタ付きバッファ付きＤＤＲ４  ＤＲＡＭ  ＤＩＭＭを使用しているが、メモリコントローラ６１０及びＰＨＹ６２０は、いくつかの異なるタイプのメモリモジュールにインタフェースすることができる。特に、メモリコントローラ６１０及びＰＨＹ６２０は、いくつかの異なるタイプのメモリ（例えば、ＤＤＲ、ＦＬＡＳＨ、ＰＣＭ等）、いくつかの異なるレジスタ状態（未使用、ＲＣＤ、フラッシュコントローラ等）、及び、いくつかの異なるバッファ状態（未使用、データバッファのみ等）の多種多様な組み合わせをサポートすることができる。メモリコントローラ６１０は、これらの組み合わせをサポートするために、システムＢＩＯＳが特定のメモリシステム特性についてプログラムすることができる低電力モードに移行及び抜け出るための独自のプランを可能にするアーキテクチャを実装する。これらの特徴について以下に説明する。
【００４１】
図７は、いくつかの実施形態による、図５のメモリチャネルコントローラ５５０の一部に対応するメモリチャネルコントローラ７００のブロック図である。メモリチャネルコントローラ７００は、上記の図５に示すようなＵＭＣＳＭＮ５５２及びセルフリフレッシュコントローラ５６６と、メモリ動作（ＭＯＰ）アレイ７１０と、を含む。ＵＭＣＳＭＮ５５２は、上述したように、ＳＭＮに接続するための第１ポートを含み、本明細書に関連して詳細に示すように、データファブリック２５０から「電力要求（POWER REQUEST）」と付された電力状態変更要求信号を受信するための入力と、データファブリック２５０への「電力肯定応答（POWER ACKNOWLEDGE）」と付された電力状態変更肯定応答信号を提供するための出力と、を含む。また、ＵＭＣＳＭＮ５５２は、「Ｍ＿ＰＳＴＡＴＥ  ＲＥＱ」と付されたメモリ電力状態変更要求信号を提供するための第１出力と、ＭＯＰアレイ７１０に記憶するためのデータを提供するための第２出力と、を有する第２ポートを含む。セルフリフレッシュコントローラ５６６は、ＵＭＣＳＭＮ５５２の第２ポートの第１出力に接続された入力と、双方向ポートと、復号されたＭＭＯＰをＢＥＱ５１４に提供するためにＢＥＱ５１４に接続された出力と、を含む。ＭＯＰアレイ７１０は、ＵＭＣＳＭＮ５５２の第２ポートの第２出力に接続された入力と、セルフリフレッシュコントローラ５６６への双方向接続と、を有しており、コマンド（すなわち、ＭＯＰ）を記憶するための第１部分７１２と、データを記憶するための第２部分７１４と、に分割されている。
【００４２】
システムＢＩＯＳメモリ１５７に記憶されたシステムＢＩＯＳは、起動時に、メモリシステム１２０に対してクエリし、インストールされたメモリのタイプ及びその機能を判別する。通常、システム内の各ＤＩＭＭ上のシリアルプレゼンス検出（ＳＰＤ）メモリ内のレジスタを読み出すことによって行われる。例えば、ＰＨＹは、ＤＤＲ３、ＤＤＲ４、低電力ＤＤＲ４（ＬＰＤＤＲ４）及びグラフィックスＤＤＲバージョン５（ｇＤＤＲ５）メモリのうち何れか１つをサポートするように構成されてもよい。メモリシステム１２０にインストールされたメモリのタイプ及び機能を検出したことに応じて、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始するコマンドシーケンスをＭＯＰアレイ７１０に投入する。
【００４３】
図示した実施形態において、メモリチャネルコントローラ５５０は、ＡＣＰＩ（Advanced Configuration and Power Interface）仕様に記載されたモデルに従い定義された様々なデバイスの低電力状態をサポートする。ＡＣＰＩ仕様によれば、デバイス（メモリコントローラ５００等）の動作状態は、Ｄ０状態又は「完全にオン」状態として知られている。他の状態は低電力状態であり、Ｄ１、Ｄ２、Ｄ３状態を含み、これらのうちＤ３状態は「オフ」状態である。メモリコントローラ５００は、メモリシステム１２０をメモリコントローラ５００のＤ状態に対応する低電力状態にし、Ｄ０状態において周波数及び／又は電圧を変化させることができる。ＵＭＣＳＭＮ５５２は、電力要求を受信すると、どの電力状態が要求されているのかを示すために、Ｍ＿ＰＳＴＡＴＥ  ＲＥＱ信号をセルフリフレッシュコントローラ５６６に提供する。セルフリフレッシュコントローラ５６６は、メモリチップと、ＤＩＭＭのＲＣＷ及びＢＣＷ（サポートされている場合）とを、要求されたＤ状態に適した状態にするＭＯＰシーケンスを実行したことに応じて、ＭＯＰアレイ７１０にアクセスする。セルフリフレッシュコントローラ５６６は、インデックスをＭＯＰアレイ７１０に出力し、ＭＯＰアレイ７１０は、これに応じて符号化コマンド（ＭＯＰ）を返す。
【００４４】
メモリチャネルコントローラ５５０は、セルフリフレッシュコントローラ５６６用のファームウェアを形成するプログラム可能なコマンドを記憶するためのＭＯＰアレイ７１０を含むことによって、異なる特性を有する多種多様なメモリタイプをサポートしながら比較的少量の回路面積を用いて実装される。さらに、未だ指定されていないが将来指定される可能性のあるメモリタイプ及び特性についてのメモリ状態の変更を可能にする上位互換アーキテクチャを提供する。したがって、メモリチャネルコントローラ５５０は、モジュール方式であり、費用のかかる将来の再設計の必要性を回避する。
【００４５】
これらのメモリコントローラデバイスの電力状態（Ｄ状態）とＤＲＡＭ動作との間の相互作用について説明する。Ｄ０状態は、メモリコントローラ５００の動作状態である。Ｄ０状態において、メモリコントローラ５００は、異なるＭＥＭＣＬＫ周波数及び関連するタイミングパラメータをそれぞれ有する４つのプログラム可能な電力状態（Ｐ状態）をサポートする。メモリコントローラ５００は、Ｐ状態毎に１セットのレジスタを維持しており、Ｐ状態に関するタイミングパラメータを記憶し、コンテキストを定義する。メモリコントローラ５００は、ＤＲＡＭをセルフリフレッシュモードにして、Ｐ状態／コンテキストを変更する。ＭＯＰアレイ７１０は、適切なシーケンシングをサポートするために、Ｄ０状態における周波数変化と共に使用するための１セットのコマンドを含む。
【００４６】
Ｄ１状態は、ストップクロック状態として知られており、メモリ状態変更要求に使用される。メモリコントローラ５００をＤ１状態にすると、出入りレイテンシは、ＰＨＹ６２０を再トレーニングする必要がある場合を除いて最も低い。メモリコントローラ５００は、通常、Ｄ１電力状態変更要求の結果として如何なるアービトレーションキューエントリもフラッシュしない。しかしながら、メモリコントローラ５００は、保留中のリフレッシュを通常実行しないが、コマンドキュー５２０内の全ての書込みを事前にフラッシュする。メモリコントローラ５００は、システム内の全てのメモリチップをプリチャージパワーダウン又はセルフリフレッシュの何れかにする。
【００４７】
Ｄ２状態は、スタンバイ状態として知られており、システムＣ１／Ｃ２／Ｃ３及びストップクロック／スタッタ状態に対応する。Ｄ２状態は、メモリコントローラ５００自体の動作にとってより低電力状態である。Ｄ２状態において、メモリコントローラ５００は、ローカルクロックゲーティング及びオプションのパワーゲーティングを使用して、電力をさらに低下させる。メモリコントローラ５００は、コマンドキュー５２０からの書込み及び読出しをフラッシュする。Ｄ２状態において、メモリコントローラ５００は、自動セルフリフレッシュを有効にした状態で、システム内の全てのメモリを、同様にプリチャージパワーダウンにする。しかしながら、Ｄ２は、よりディープなパワー状態であるため、自動セルフリフレッシュを用いてプリチャージパワーダウンに移行する前に、必要とされる（owed）リフレッシュをすぐに実行する。
【００４８】
Ｄ３状態は、サスペンド状態として知られている。メモリコントローラ５００は、２つのＤ３状態をサポートする。第１のＤ３状態は、システムＳ３状態に使用される。メモリコントローラ５００は、システムＳ３状態へのエントリ（移行）を見越して、ＤＲＡＭ及びＰＨＹを最低電力状態にする。メモリコントローラ５００は、コマンドキュー５２０からの書込みをフラッシュし、保留中のリフレッシュサイクルを実行する。第２のＤ３状態は、非同期ＤＲＡＭリフレッシュ（ＡＤＲ）スタイルのセルフリフレッシュに使用される。ＡＤＲは、停電又はシステムクラッシュの間に保留中の書込みデータを不揮発性メモリにフラッシュするために、サーバで使用される機能である。自動セルフリフレッシュを有効にした状態でＤＲＡＭ及びＰＨＹをプリチャージパワーダウンにする。
【００４９】
本明細書で使用されているように、電力要求信号は、任意の電力状態から他の電力状態への変更を示す。利用可能な電力状態は、メモリのタイプによって異なる。さらに、本明細書で使用されているように、「低電力状態」は、他の状態と比較して節電する状態を意味する。例えば、ＤＤＲ４  ＳＤＲＡＭは、セルフリフレッシュ及びプリチャージパワーダウンとして知られる２つの低電力状態をサポートする。しかしながら、ＬＰＤＤＲ４は、アクティブパワーダウン、セルフリフレッシュパワーダウン及びアイドルパワーダウンとして知られる３つの低電力状態をサポートする。これらの状態に出入りすることができる条件は異なり、対応する公開されているＪＥＤＥＣ規格の状態図に規定されており、「低電力状態」はこれらの状態のうち何れかを含む。
【００５０】
ＭＯＰアレイ７１０は、これらの電力状態の変化の全てをサポートするためのコマンドの効率的な符号化を可能にするコマンドフォーマットをサポートする。ＭＯＰアレイ７１０は、４つのＰ状態コンテキストの各々に対して「ＳｒＥｎｔｅｒＭＯＰ」及び「ＳｒＥｘｉｔＭＯＰ」として知られる２つのアレイを使用する。ＳｒＥｎｔｅｒＭＯＰは、Ｐ状態要求に対してセルフリフレッシュに移行する前に処理される。ＳｒＥｘｉｔＭＯＰは、Ｐ状態要求に対してセルフリフレッシュを抜け出た後に処理される。ＭＯＰアレイは、モードレジスタ（ＭＲ）、ＤＲＡＭ毎のアクセス可能性（ＰＤＡ）を有するＭＲ、レジスタ制御ワード（ＲＣＷ）又はバッファ制御ワード（ＢＣＷ）コマンドのシーケンシャルリストを指定する。セルフリフレッシュコントローラ５６６は、電力状態変更要求を受信すると、ＭＯＰアレイ７１０内の選択されたコンテキストに対するコマンドにアクセスして、メモリシステムに発行されたＭＯＰのシーケンス及びタイミングを決定する。
【００５１】
ＭＯＰ７１２の一部は、対応する１つ以上のＤ状態を示すフィールドを含む。したがって、セルフリフレッシュコントローラ５６６は、現在のコンテキストには適用できないＭＯＰを無視して、特定のコンテキストに適用可能なコマンドについて最初の位置から開始するＭＯＰアレイ７１２を走査する。また、ＭＯＰアレイ７１２は、適切な場合に、メモリチップの動的タイミングパラメータを満たすために、ＭＯＰ間の適切なタイミングを決定するためのカウンタ値を含む。セルフリフレッシュコントローラ５６６は、コマンドシーケンスを開始した後に、電力状態変更についてのシーケンスの終了を示すヌルエントリに遭遇するまでＭＯＰアレイ７１２を走査し続け、有効なコマンドを実行し続ける。電力状態変更についてのコマンドの効率的なストレージを可能にするために使用することができるＭＯＰアレイ７１２のフィールドの一例を次に説明する。
【００５２】
図８は、いくつかの実施形態による、図７のＭＯＰアレイ７１０のエントリ８００のブロック図である。エントリ８００は、ＭＯＰを定義する様々な符号化ビットフィールドを含む４０ビットのエントリである。サポートされているビットフィールドは、以下の表１に示されている。
【表１】
2019520640.tif 000012
【００５３】
ＭＯＰアレイ７１２は、セルフリフレッシュコントローラ５６６が、許可された状態変更に対して要求されたＭＯＰを適切に復号して発行するように続く、様々なプログラミング要件を有する。セルフリフレッシュコントローラ５６６は、最初のヌルエントリがアレイから読み出されるまで、分岐することなく線形的にＭＯＰを復号して発行する。ヌルエントリは、ＭＯＰ＿ＲＡＮＫの全てのビット及びＭＯＰ＿ＣＩＤの全てのビットがゼロであるエントリである。したがって、システムＢＩＯＳがＭＯＰアレイ７１２をプログラムする場合、コンテキスト毎に少なくとも１つのヌルエントリをプログラムすべきである。
【００５４】
ＭＯＰは、ＭＯＰ＿ＶＬＤ＿Ｄ１、ＭＯＰ＿ＶＬＤ＿Ｄ２及びＭＯＰ＿ＶＬＤ＿Ｄ３のうち２つ以上を設定することによって、異なるＤ状態によって共有することができる。ＭＯＰは、ＭＯＰ＿ＶＬＤ＿Ｄ１、ＭＯＰ＿ＶＬＤ＿Ｄ２及びＭＯＰ＿ＶＬＤ＿Ｄ３のうち対応する１つをクリアすることによって、特定のＤ状態によってスキップされる。
【００５５】
Ｄ状態エントリルーチン（ＳｒＥｎｔｅｒＭＯＰ）は一定の要件を含む。すなわち、パリティが有効な場合に、パリティを無効にするコマンドを含める必要がある。レジスタードＤＩＭＭ（ＲＤＩＭＭ）の推奨順序は、最初にＤＲＡＭチップのパリティを無効にしてから、バッファのパリティを無効にすることである。また、コマンド間遅延時間（ｔｃｃｄ）をプログラムするコマンドを含める必要があり、このコマンドは、ＤＤＲ４仕様に従って、モードレジスタ６（ＭＲ６）のビット１２〜１０に時間を設定することによってプログラムされる。また、ＲＤＩＭＭを含むシステムでは、ターゲットレジスタ制御ワードＲＣ０Ａ及びＲＣ３ｘをプログラムするためのコマンドを含める必要がある。
【００５６】
また、Ｄ状態終了ルーチン（ＳｒＥｘｉｔＭＯＰ）も一定の要件を含む。すなわち、パリティが有効になっている場合には、パリティを有効にするコマンドを含める必要がある。ＲＤＩＭＭの推奨設定は、レジスタ内でのみパリティを有効にすることである。
【００５７】
単一のＭＯＰエントリは、複数のチップ選択をターゲットとすると予想される。偶数／奇数のチップ選択が非対称の設定を意図的に受信していない限り、ＭＯＰ＿ＲＡＮＫは、全ての設定されたチップ選択を反映することが推奨される。この点について、ＢＥＱ５１４は、反転が可能である場合に単一のＭＯＰを２つのコマンドに変換し、反転及びミラーリングの両方が可能である場合に単一のＭＯＰを４つのコマンドに変換するように、反転及びミラーリングを可能にするモードを有する。例えば、クアッドランクＤＩＭＭの場合、符号化されたチップ選択を含むクアッドランクＲＤＩＭＭについて、モードレジスタセットコマンド毎に２つのＭＯＰエントリを使用することができる。
【００５８】
ＭＯＰアレイ７１２は、コマンドの効率的な符号化を可能にし、これを小さいサイズで実装することを可能にする様々なフィールドをサポートする。例えば、セルフリフレッシュコントローラ５６６がＭＯＰアレイ７１２にアクセスするために使用するコマンド走査技術は、各低電力状態に対するコマンドを複製するのを必要とすることなく、複数の低電力状態に対して特定のコマンドを使用することを可能にする。さらに、ヌルエントリを使用して終了条件を知らせることは、セルフリフレッシュコントローラ５６６が所望の状態変更及びコンテキストに基づいてエントリポイント及びエグジットポイントを計算するのを必要とすることなく、各コマンドシーケンスの終了を符号化する効率的な方法である。
【００５９】
したがって、本明細書に記載されるメモリコントローラは、コントローラ及びプログラマブルＭＯＰアレイを使用して、多種多様な利用可能なメモリタイプ及びＤＩＭＭ構成の何れかをサポートする。コントローラは、電力状態変更要求信号のアクティベーションに応じて、ＭＯＰアレイにアクセスして少なくとも１つのエントリをフェッチし、このエントリによって示される少なくとも１つのメモリ動作を発行して電力状態変更要求を実行する。このように構成されているので、ＭＯＰアレイは、メモリコントローラがコンパクトな回路を用いて多種多様なメモリタイプ及び構成をサポートするのを可能にする。さらに、システムＢＩＯＳは、スタートアップ時にメモリの構成を決定し、このシステム内の特定のタイプのメモリの電力状態変更動作に対応するエントリのセットを用いてＭＯＰアレイをプログラムすることができる。
【００６０】
メモリコントローラは、ハードウェア及びソフトウェアの様々な組み合わせで実装することができる。ＢＩＯＳメモリに記憶され、システムＢＩＯＳによってＭＯＰアレイにロードされる等のソフトウェアコンポーネントのいくつかは、少なくとも１つのプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に記憶され得る。さらに、電力状態変更に使用されるいくつかの共通動作をマイクロコントローラ５６４等の他のハードウェアに実装して、ＭＯＰアレイのフィールドの数及び／又はサイズを簡略化することができる。
【００６１】
図５のメモリコントローラ５００又はその一部は、集積回路を製造するために直接的又は間接的にプログラムによって読み出され使用され得るデータベース又は他のデータ構造の形態でコンピュータアクセス可能なデータ構造によって記載又は表現することができる。例えば、このデータ構造は、Ｖｅｒｉｌｏｇ又はＶＨＤＬ等の高水準設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル（ＲＴＬ）記述であってもよい。この記述は、その記述を合成して合成ライブラリからゲートのリストを含むネットリストを生成することができる合成ツールによって読み出すことができる。ネットリストは、集積回路を含むハードウェアの機能性も表すゲートのセットを含む。その後、ネットリストを配置及びルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次に、マスクを様々な半導体製造工程に使用して、集積回路を製造することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト（合成ライブラリの有無にかかわらず）若しくはデータセット、又は、必要に応じてグラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００６２】
特定の実施形態について説明したが、これらの実施形態に対する様々な変更は、当業者に明らかであろう。例えば、サポートされているメモリデバイスの範囲は、異なる実施形態では変わることになり、上述した例に限定されない。また、ＭＯＰアレイのフィールド定義は、異なる実施形態では変わるであろう。さらに、エントリが適用される特定の電力状態を示すフィールドを含むものとしてＭＯＰアレイ７１０を説明したが、他の実施形態において、ＭＯＰアレイは、特定のサポートされた電力状態変更要求又はターゲット電力空間に対応するエントリアドレス及びエグジットアドレスによって編成することができる。
【００６３】
１つの形態では、メモリコントローラ（５００）は、コントローラ（５６６）と、メモリ動作アレイ（７１０）と、を備える。コントローラ（５６６）は、電力状態変更要求信号を受信するための入力と、メモリ動作を提供するための出力と、を含む。メモリ動作アレイ（７１０）は、複数のエントリを含み、各エントリ（８００）は複数の符号化フィールドを備える。メモリ動作アレイ（７１０）は、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、複数のエントリ内の複数のタイプのメモリのうち特定のタイプのメモリについての異なるコマンドシーケンスを記憶するようにプログラム可能である。コントローラ（５６６）は、電力状態変更要求信号のアクティベーションに応じて、メモリ動作アレイ（７１０）にアクセスして少なくとも１つのエントリをフェッチし、少なくとも１つのエントリによって示される少なくとも１つのメモリ動作を発行する。複数の符号化フィールドのうち１つは、少なくとも１つのメモリデバイス電力状態の何れが少なくとも１つのエントリに対応しているかを示す電力状態フィールドを備えてもよい。
【００６４】
１つの態様によれば、少なくとも１つのメモリデバイス電力状態は、動的電圧状態、動的周波数状態及び低電力状態のうち１つに対応してもよい。
【００６５】
他の態様によれば、少なくとも１つのメモリデバイス電力状態は、アドバンストコンフィグレーションアンドパワーインタフェース（ＡＣＰＩ）  Ｄ１状態、ＡＣＰＩ  Ｄ２状態及びＡＣＰＩ  Ｄ３状態のうち選択された１つに対応しており、ＡＣＰＩ  Ｄ３状態は、ダブルデータレートメモリ（６６０）のセルフリフレッシュ状態に対応してもよい。
【００６６】
他の形態では、メモリシステム（１３０／１４０）の電力状態を制御する方法は、特定のタイプのメモリについてサポートされている低電力モードへの出入りを開始する、複数のタイプのメモリのうち特定のタイプのメモリについてのプログラム可能なコマンドのシーケンスを、メモリ動作（ＭＯＰ）アレイ（７１０）に記憶することと、電力状態変更要求信号を受信することと、電力状態変更要求信号に応じて、ＭＯＰアレイ（７１０）にアクセスすることと、ＭＯＰアレイ（７１０）のエントリを少なくとも１つのメモリ動作に復号することと、少なくとも１つのメモリ動作を出力することと、所定の終了条件が発生するまで、ＭＯＰアレイ（７１０）内の連続するエントリのために、当該復号すること及び当該出力することを繰り返すことと、を含む。
【００６７】
１つの態様によれば、電力状態変更要求信号は、アクティブ状態から低電力状態に変更する要求であってもよい。
【００６８】
他の態様によれば、電力状態変更要求信号は、アクティブ状態において第１動作周波数から第２動作周波数に変更する要求であってもよい。
【００６９】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することが意図されている。
【国際調査報告】
2019520640.tif 000013
2019520640.tif 000014