(57)【特許請求の範囲】
【請求項１】
メモリモジュールの仮想記憶装置の各々の動作モードを決定するための方法であって、
１つ以上のアプリケーション用のある基準を提供する指標を選択するステップ（１００１）であって、該基準によって、マルチコアプロセッサにおける前記１つ以上のアプリケーションの実行中に、前記メモリモジュールの性能とエネルギー効率の両方または一方が最適化される、ステップと、
前記１つ以上のアプリケーション用に複数の仮想記憶装置を選択するステップ（１００４）であって、該メモリモジュールは前記選択された複数の仮想記憶装置を有する、ステップと、
前記メモリモジュールの性能とエネルギー効率の両方または一方を最適化するために、前記選択された複数の仮想記憶装置の各々について（１００６）、
ある時間期間にわたって前記仮想記憶装置に関連する使用情報を収集するステップ（１００７）と、
前記指標及び前記使用情報に基づいて前記仮想記憶装置の動作モードを決定するステップ（１００８）と、
前記仮想記憶装置を前記動作モードに移行させるステップ（１１０３、１１０５、１１０７、１１０８）
を実行するステップ
を含む方法。
【請求項２】
前記指標は、最小の全実行時間、最小の全エネルギー消費量、最小のエネルギー遅延積、または、他の適切な基準をさらに含み、これらによって、前記メモリモジュールの性能とエネルギー効率の両方または一方を最適化することが可能である、請求項１の方法。
【請求項３】
前記収集するステップ、前記決定するステップ、及び前記移行させるステップが、前記選択された複数の仮想記憶装置の全てがそれぞれの動作モードに移行するまで繰り返される（１００９）、請求項１または２の方法。
【請求項４】
前記指標、及び、必要とされるメモリの量または前記１つ以上のアプリケーションのメモリアクセスパターンに関する特性情報を受け取り、前記指標及び前記特性情報を解釈し、メモリコントローラに対して、前記選択された複数の仮想記憶装置の各々を適切な動作モードに移行させるように指示するように構成されたランタイムシステム
をさらに含む、請求項１〜３のいずれかの方法。
【請求項５】
前記使用情報が、
メモリコントローラが、前記時間期間にわたって十分な数のメモリ要求を受け取っているときのメモリ要求の数と、
前記メモリ要求の数と、前記時間期間にわたって実行された命令の数との比と、
別の動作モードではなくある１つの動作モードを選択することに割り当てられたペナルティと、
前記メモリコントローラに対してコンパイラーによって提供されたアプリケーションに関連するメモリアクセスの数と、
実行中のアプリケーションによって決定されて前記メモリコントローラに送られたメモリアクセスの数
のうちの１つ以上を決定するステップをさらに含む、請求項１〜４のいずれかの方法。
【請求項６】
指標を選択する前記ステップが、
前記指標を選択するコンピュータシステムのオペレータと、
前記指標を選択するようにプログラムされた前記１つ以上のアプリケーションと、
前記指標を選択するオペレーティングシステムと、
実行中のアプリケーションをスケジューリングし、モニタし、及び、サポートするランタイムシステムのハイパーバイザーまたは他の要素と
のうちの１つをさらに含む、請求項１〜５のいずれかの方法。
【請求項７】
使用情報を収集する前記ステップが、前記時間期間にわたって前記仮想記憶装置がアクセスされる回数をメモリコントローラ（７０２）によって格納するステップをさらに含む、請求項１〜６のいずれかの方法。
【請求項８】
仮想記憶装置の動作モードを決定する前記ステップがさらに、
前記指標に基づいて少なくとも１つの閾値を決定するステップ（１１０１）と、
前記使用情報を前記少なくとも１つの閾値と比較するステップ（１１０２、１１０４、１１０６）と、
前記比較の結果に基づいて、前記仮想記憶装置が移行する動作モードを決定するステップ
を含み、
前記使用情報が前記少なくとも１つの閾値のうちの最大の閾値（Ｔ１）よりも大きい場合には、前記仮想記憶装置は使用されていないときにスタンバイモードに移行させられ（１１０８）、前記使用情報が前記最大の閾値（Ｔ１）よりも大きくない場合には、前記仮想記憶装置はエネルギー節約モードに移行させられる（１１０３、１１０５、１１０７）ことからなる、請求項１〜７のいずれかの方法。
【請求項９】
前記エネルギー節約モードが少なくとも１つのパワーダウンモードをさらに含み、該少なくとも１つのパワーダウンモードの各々は、前記少なくとも１つの閾値の各々に関連付けられている、請求項８の方法。
【請求項１０】
前記少なくとも１つの閾値が、第１の閾値と、該第１の閾値よりも大きな第２の閾値とを少なくとも含み、前記使用情報が、前記第１の閾値よりも大きくかつ前記第２の閾値よりも小さいときには、前記仮想記憶装置は、前記第２の閾値に関連付けられたパワーダウンモードに移行させられる、請求項９の方法。
【請求項１１】
前記動作モードがさらに、前記仮想記憶装置がメモリ要求を処理しておらず、かつ、前記メモリモジュールの性能がエネルギーを節約することよりも優先されるときのスタンバイモードを含む、請求項１〜７のいずれかの方法。
【請求項１２】
前記複数の仮想記憶装置が、前記１つ以上のアプリケーションのメモリ要件に基づいて選択される、請求項１〜１１のいずれかの方法。
【請求項１３】
前記１つ以上のアプリケーションの実行中に前記指標を変更するステップ（１０１１）をさらに含む、請求項１〜１２のいずれかの方法。
【請求項１４】
前記少なくとも１つの閾値は、前記メモリモジュールの許容可能な性能とエネルギー効率との間のバランスを表す、請求項８〜１０のいずれかの方法。
【請求項１５】
前記最小の全実行時間に対する前記少なくとも１つの閾値が、前記最小の全エネルギー消費量または前記最小のエネルギー遅延積に対する前記少なくとも１つの閾値よりも小さい、請求項２を含む請求項８の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリモジュールに関連し、特に、プログラムの動的動作に基づいて、メモリモジュールの個別の仮想記憶装置を異なる動作モードに移行させるための方法に関する。
【背景技術】
【０００２】
現代のコンピュータシステムでは、メモリ容量及びメモリ帯域幅に対する需要が増加しつつある。近年におけるマイクロプロセッサの性能アップは、チップ当たりのコア数の増加に頼っており、マルチコア及びコア数の多いチップマルチプロセッサ（CMP: chip multi-processor）は、１プロセッサにつき多数のメモリコントローラを使用することによってさらに高いメモリ帯域幅及びメモリ容量を要求する。そのため、メインメモリモジュールの電力バジェット（power budget。または電力予算）は、現在のコンピュータシステムにおけるプロセッサのそれと同程度かそれよりも大きくなっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、典型的なメモリモジュールはエネルギー効率が悪い。たとえば、メモリモジュールの待機電力（またはスタンバイエネルギー）は、多数のメモリモジュールがプロセッサのメモリコントローラに接続されているときには、メインメモリの全使用エネルギーの大きな部分を占める。メモリモジュールがメモリ要求に能動的に応答しないときには、メモリモジュールの大部分は、次のメモリ要求を待っている間待機電力を使用するアイドル状態であるが、これは、エネルギーの使用効率が悪い。待機電力を節約するために、複数のパワーダウンモードが現在の多くのメモリチップに装備されており、システムソフトウェア及びハードウェアは、待機電力を節約するためにこれらのパワーダウンモードを使用する。しかしながら、同じパワーダウンモードをモジュール内の全てのメモリチップに適用しなければならないために、節約される電力量は制約される。
【０００４】
システム性能をそれほど犠牲にすることなくエネルギーを節約しつつ、メモリシステムに格納された情報へのアクセスを可能にするメモリシステム及び方法が必要とされている。
【課題を解決するための手段】
【０００５】
本発明の種々の実施形態は、メモリコントローラが、プログラムの動的な挙動に基づいて、メモリモジュールの仮想記憶装置（仮想メモリ装置または仮想メモリデバイスともいう）の特定の動作モードを選択できるようにする方法に向けられている。１実施形態では、メモリモジュールの仮想記憶装置の各々の動作モードを決定するための方法はある基準を提供する指標（測定基準ともいう。以下同じ）を選択することを含み、該ある基準によって、マルチコアプロセッサにおける１つ以上のアプリケーションの実行中のメモリモジュールの性能及び／またはエネルギー効率が最適化される。仮想記憶装置の各々について、該方法は、また、ある時間期間にわたって仮想記憶装置に関連する使用情報を収集すること、該指標及び使用情報に基づいて、仮想記憶装置の動作モードを決定すること、及び、仮想記憶装置を該動作モードに移行させることを含む。
【図面の簡単な説明】
【０００６】
【図１Ａ】８個のメモリチップを有するメモリモジュールの等角図である。
【図１Ｂ】回路基板に搭載されたメモリモジュール及びメモリコントローラの等角図である。
【図２】１つのメモリチップを構成する８個のバンクの略図である。
【図３Ａ】従来のメモリモジュールの略図である。
【図３Ｂ】従来のメモリモジュールの全てのメモリチップにコマンド（命令）を一斉に送る場合の１例を示す。
【図４Ａ】本発明のいくつかの実施形態にしたがって構成された単一のマルチコアメモリモジュールの等角図である。
【図４Ｂ】本発明のいくつかの実施形態にしたがう、回路基板に搭載されたマルチコアメモリモジュール及びメモリコントローラの等角図である。
【図５Ａ】本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。
【図５Ｂ】本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。
【図５Ｃ】本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。
【図５Ｄ】本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。
【図６】本発明のいくつかの実施形態にしたがって構成された例示的なマルチコア、デュアルインラインメモリモジュールの略図である。
【図７】本発明のいくつかの実施形態にしたがう、メモリコントローラに電子的に接続されたマルチコアデュアルインラインメモリモジュールを示す。
【図８Ａ】本発明のいくつかの実施形態にしたがう、図７に示すマルチコアデュアルインラインメモリモジュールの仮想記憶装置の各々の使用情報を示す棒グラフである。
【図８Ｂ】本発明のいくつかの実施形態にしたがう、図７に示すマルチコアデュアルインラインメモリモジュールのうちの、異なるエネルギー節約モードにある３つの仮想記憶装置を示す。
【図９Ａ】図８Ａに示す棒グラフに閾値を加えたものであり、該閾値は、本発明のいくつかの実施形態にしたがう、図７に示すマルチコアデュアルインラインメモリモジュールの全実行時間の最適化にしたがって調整されている。
【図９Ｂ】本発明のいくつかの実施形態にしたがうエネルギー節約モードにある、図７に示すマルチコアデュアルインラインメモリモジュールの１つの仮想記憶装置を示す。
【図１０】本発明のいくつかの実施形態にしたがう、メモリモジュールの仮想記憶装置をパワーダウンモードに動的に移行させるための方法の制御フロー図である。
【図１１】本発明のいくつかの実施形態にしたがう、図１０の方法のサブルーチンの制御フロー図である。
【発明を実施するための形態】
【０００７】
本発明の種々の実施形態は、メモリコントローラが、動的なプログラムの挙動に基づいてメモリモジュールのメモリチップの特定の動作モードを選択できるようにする方法に向けられている。たとえば、メモリコントローラを、ある時間期間にわたって多くのメモリ要求を受け取るいくつかのメモリチップをスタンバイモードに移行させるように構成することができ、これによって、それらのメモリチップが使用されていないときに、それらのメモリチップがメモリ要求に迅速に応答できるようにする。一方で、メモリコントローラはまた、それと同じ時間期間にわたって、比較的低い活動状態（アクティビティ）にある他のメモリチップを多くのエネルギー節約モードのうちの１つに移行させることができる。方法の実施形態は、システム性能をエネルギー効率とバランスさせることができるという点で柔軟性がある。「性能」という用語は、メモリシステムが、ある時間期間にわたって実行する作業（または処理）の量を指す。待ち時間、応答時間、及び帯域幅は、メモリシステムの性能を、該メモリシステムの変化の前後の性能と比較するために、あるいは、他のメモリシステムの性能と比較するために使用できる指標である。方法の実施形態は、性能よりもエネルギー効率を優先させたときにメモリコントローラがエネルギー節約モードに移行させるであろうメモリチップよりも少ない数のメモリチップをエネルギー節約モードに移行させるように該メモリコントローラに指示することによって、エネルギー効率よりも性能を優先できるようにする。
【０００８】
本発明の方法の実施形態を、システム性能に小さな影響しか与えずにメモリシステムのエネルギー効率を改善するように設計された、従来のメモリモジュール及びマルチコアメモリモジュールに適用することができる。マルチコアメモリモジュールは、「仮想記憶装置」（「VMD））と呼ばれる１つ以上のメモリチップのグループに分割される複数のメモリチップを含む。メモリチップを、ダイナミックランダムアクセスメモリ（「DRAM」）チップとすることができる。
【０００９】
詳細な説明は次のように編成されている。最初のサブセクションでは従来のメモリモジュールを概説する。２番目のサブセクションではマルチコアメモリモジュールを説明する。３番目のサブセクションでは本発明の方法の実施形態を説明する。
【００１０】
メモリモジュール
メモリモジュールは、典型的には、「デュアルインラインメモリモジュール」（「DIMM」）と呼ばれる記憶装置を形成する、プリント回路基板に搭載されたいくつかのDRAMチップから構成される。図１Ａは、８個のDRAMチップから構成される単一のDIMMの等角図である。この場合、１つ以上のDIMMが、回路基板に搭載されて、メモリコントローラによって制御される。図１Ｂは、回路基板１０６に搭載されたメモリ１０２及びメモリコントローラ１０４の等角図である。メモリ１０２は、４つのDIMMスロット１１２〜１１５に挿入された４つのDIMM １０８〜１１１からなる。メモリコントローラ１０４は、コンピュータチップ、またはマルチコアマイクロプロセッサチップの一部であり、DIMM１０８−１１１に対して送受信されるコマンド及びデータの流れを管理（及び／または制御）し、メモリ１０２をコンピュータシステムの他の主要なコンポーネント（中央処理装置など）とインターフェース（接続）する。各DIMMは、インターフェース１１８を介してメモリコントローラ１０４と電気的に通信する。インターフェース１１８は、メモリコントローラ１０４からメモリ１０２にクロック信号及びコマンドを伝送し、及び、DIMM１０８〜１１１とメモリコントローラ１０４間でデータ信号を伝送するバスである。データ信号は、メモリコントローラ１０４とDIMM１０８〜１１１内のDRAMチップとの間を並列（または同時）に送られる。インターフェース１１８は、シングルデータレート（single-data rate：SDR）、ダブルデータレート（double-data rate：DDR）、及び、これらより高いデータレートでのデータ転送をサポートすることができる。SDRは、１クロックサイクルで１回データを送信することをいい、DDRは、コンピュータシステムクロック信号の立ち上がりエッジと立ち下がりエッジの両方においてデータを送信することをいう。メモリコントローラ１０４及びDIMM１０８〜１１１を、SDR及びDDRにしたがってデータを送受信するように構成することができる。DDRにおいてクロックの両方のエッジを使用することによって、データ信号を同じ限界周波数で動作させた場合に、シングルデータレート送信に比べてデータ伝送速度（またはデータ伝送率）が２倍になる。
【００１１】
DRAMチップは、トランジスタ及びコンデンサからなるDRAMメモリセルと呼ばれる構造中に１ビットを記憶する。単一のDRAMチップ中に数十億のセルがあり、これらのセルを、「バンク」と呼ばれる多くの２次元アレイからなる２次元配列をなすように編成することができる。図２は、DRAMチップ２００を構成する０〜７で示される８個のバンクの略図である。図２の例に示すように、各バンクは、交差信号線を介して行デコーダ、センスアンプ、及び列デコーダに接続されている。たとえば、バンク０は、信号線２０４などのｘ軸に平行に走る信号線を介して行デコーダ２０２に接続されている。バンク０はまた、信号線２１０などのｙ軸に平行に走る信号線を介して、センスアンプ２０６及び列デコーダ２０８に接続されている。メモリセルは信号線の交差部に配置されている。たとえば、メモリセル２１２は、信号線２０４と２１０が交差するポイントに配置されている。
【００１２】
メモリコントローラ１０４からメモリ１０２に送られるコマンドには、READ（読み出し）、WRITE（書き込み）、ACTIVATE（活性化または起動）、REFRESH（リフレッシュ）、及び、PRECHARGE（プリチャージ）が含まれる。コマンドは、制御信号及びアドレス信号からなる。制御信号は、コマンドによって実行される動作（または処理）を表し、アドレス信号は、そのコマンドが実行されるDRAMチップ内のバンク及び行アドレスまたは列アドレスを特定する。たとえば、ACTIVATEコマンドは、活性化制御信号、並びに、該ACTIVATEコマンドが実行されるDRAMチップ内のバンク及び行を識別するバンクアドレス及び行アドレスから構成される。READ及びWRITEコマンドは、読み出し及び書き込み制御信号、並びに、該READ及びWRITEコマンドが実行されるDRAMチップ内のバンク及び列を識別するバンクアドレス及び列アドレスから構成される。
【００１３】
DRAMチップ２００のバンクに格納されたデータは２つのステップでアクセスされる。先ず、メモリコントローラ（不図示）がDRAMチップ２００の行アドレスとバンクアドレスを指定するACTIVATEコマンドを送信する。典型的には、８または１６Ｋビットである、該バンクの行中の全てのビットが、活性化されて該バンク内のセンスアンプに送られる。次に、該バンクアドレス及び列アドレスを指定する１以上のREAD／WRITEコマンドが送信される。READ／WRITEトランザクション当たりに伝送されるビット数は、データバスの大きさとバースト長によって決まる。バースト長は、単一のバーストトランザクションまたはデータブロックの高速伝送において実行されるREAD／WRITE動作（処理）の数を制御するメモリに関連する共通の基本入力／出力システム設定値である。典型的には、バースト長は４または８に設定される。DRAMチップが、たとえばメモリREADリクエストを受け取ると、該チップは、インターフェース１１８の信号線にデータを供給することによって応答する。メモリREADリクエストに応答して送られるデータブロックの大きさは、バースト長によって決まる。６４ビット幅のデータバス（すなわち、６４個のシングルエンド信号線、または、１２８個の差分（差動）信号線）、及びバースト長４をサポートするように構成されたDRAMチップを有するメモリモジュールは、メモリコントローラからの単一のREADリクエストに応答して、３２バイト（４×６４ビット＝３２バイト）のデータブロックを送る。一方、６４ビット幅のデータバス、及びバースト長８をサポートするように構成されたDRAMチップを有するメモリモジュールは、メモリコントローラからの単一のREADリクエストに応答して、６４バイト（８×６４ビット＝６４バイト）のデータブロックを送る。
【００１４】
データが、DRAMチップの同じバンク内の２つの異なる行で読み出されるときには、第２の行のデータを読み出すことができるようになる前に、第１の行を書き戻して、ビットラインを充電し、及び、PRECHARGE及びACTIVATEコマンドによって該第２の行をラッチしなければならない。PRECHARGEコマンドは、その行をDRAMバンクに書き戻すが、これは、ACTIVATEコマンドが破壊的読み出しを行うために必要である。バンクアドレスは、READ、WRITE、ACTIVATE、及びPRECHARGEコマンド中の少数のビットによって与えられる。これらのコマンド処理には、しばしば、同じバンクにおける最初のACTIVATEコマンドと次のACTIVATEコマンドとの間で約５０ｎｓを要する。したがって、ACTIVATEコマンドとPRECHARGEコマンドの間に多くのREAD／WRITEコマンドが存在しない場合には、コマンド／アドレス／データバスは、しばしばアイドル状態となる。しかしながら、データが異なるバンクで読み出される場合には、異なるバンクへのコマンドをパイプライン処理することができる。なぜなら、２つの異なるバンク間のACTIVATEからACTIVATEまでの時間は、約８ｎｓだけ短いからである。したがって、異なるバンクにおけるリクエスト（要求）をインターリーブすることによって、より高いスループットを達成することができ、これは、ACTIVATEコマンドとPRECHARGEコマンドの対の間にREAD／WRITEコマンドが多く存在しない場合に特にあてはまる。
【００１５】
図３Ａは、各々が８ビットデータバスを有する８個のDRAMチップを備える従来のDIMM３００の略図である。矢印３０２は、メモリコントローラ（不図示）からレジスタ３０４と呼ばれるオプションの装置に送られるコマンドの配送を表している。レジスタ３０４は、メモリコントローラとDRAMチップの間のバス上に配置されている。レジスタ３０４は、メモリコントローラからのコマンド信号をラッチし、その後、メモリコントローラに対する電気的負荷を小さくし、かつ、コマンド信号の安定性を維持するために、信号の品質及びタイミングマージンがより良好とされた状態で、該コマンド信号を各DRAMチップに転送する。レジスタ３０４は、また、１つのメモリコントローラ毎に複数のDIMMを有するシステム内のそれぞれのDIMMに対する重複するアクセスを容易にするために、コマンドをバッファリングし、及び、クロック信号をDRAMチップへと一斉に送信（以下、「一斉に送信」には、同時送信ではない配信、または同報送信が含まれる）することができる。分岐した矢印３０６及び３０８によって示すように、レジスタ３０４は、それらのコマンドをバスを介して８個の全てのDRAMチップに一斉に送信する。他の従来のメモリモジュールでは、コマンドは、レジスタ３０４なしでDRAMチップに一斉に送信される。
【００１６】
図３Ｂは、従来のDIMM動作の１例を示す。図３Ｂの例に示すように、DIMM３００内の全てのDRAMチップは、メモリコントローラから同じコマンドを受け取って、影付きの領域３１０によって表されている各DRAMチップ内の同じ行を活性化する。この結果、DIMM３００内の全てのDRAMチップは、より広いデータパス及びより大きな行を有する単一のDRAMチップとして動作する。
【００１７】
図２を参照して上述したように、DRAMチップの行のサイズ（大きさ）は典型的には８（すなわち１６Ｋビット）である。DIMMに対するキャッシュラインを読み出し、または、該DIMMに対するキャッシュラインに書き込むために、READ／WRITEコマンドが全てのDRAMチップに一斉に送信され、各DRAMチップは同じ行を活性化する。換言すれば、８個のDRAMチップから構成される典型的なDIMMにおいて、各DRAMチップは、８Ｋビットからなる同じ行アドレスを活性化する。したがって、１つのDIMMの８×８Ｋビットすなわち６４ＫビットのDRAMセルが一度に活性化されるが、これは、読み出しまたは書き込みが行われることになるキャッシュラインのサイズよりも大きい。典型的なキャッシュラインは、６４バイトすなわち５１２ビットのオーダーである。DIMMに対するREAD／WRITEコマンドは、典型的には、キャッシュラインの粒度で読み出され、または、書き込まれるので、活性化されているDRAMセルの９９％以上が、単一のREADまたはWRITEトランザクションに対して使用されず、エネルギーの使用効率が悪い。
【００１８】
マルチコアメモリモジュール
マルチコアメモリモジュールは、メモリコントローラからコマンドを受け取るためのデマルチプレクサレジスタ（「demux register」）と、プリント回路基板に搭載されたVMDにグループ化されたメモリチップを備える。いくつかの実施形態では、メモリチップをDRAMチップとすることができる。図４Ａは、本発明のいくつかの実施形態にしたがう、回路基板４１２に配置された８個のDRAMチップ４０１−４０８、及びdemux register４１０から構成される単一のマルチコアデュアルインラインメモリモジュール４００の等角図である。これらのDRAMチップ４０１〜４０８を１つ以上のDRAMチップからなるVMDにグループ化することができる。この例については、より詳細に後述する。
【００１９】
従来のDIMMと同様に、１つ以上のMCDIMMを回路基板に搭載して、メモリコントローラによって制御することができる。図４Ｂは、本発明のいくつかの実施形態にしたがう、回路基板４２４に搭載されたメモリ４２０及びメモリコントローラ４２２の等角図である。メモリ４２０は、DIMMスロット４３０〜４３３にそれぞれ挿入されたMCDIMM４２６−４２９から構成される。MCDIMM４００は、メモリコントローラ４２２とメモリモジュール４２６−４２９のdemux registerとの間にインターフェース４３４を有する。インターフェース４３４は、メモリコントローラ４２２からメモリ４２０へとコマンド信号を送るバス、及び、メモリコントローラ４２２とメモリ４２０の間でデータ信号を伝送するデータバスを備える。このアーキテクチャでは、メモリコントローラ４２２によって送られるコマンドは、メモリ４２０のDRAMチップに一斉送信はされない。その代わり、メモリコントローラ４２０は、MCDIMM４２６〜４２９のdemux registerにコマンドを送る。MCDIMM４２６−４２９の各々は、demux registerがコマンドをVMDに直接送れるようにするコマンドバスを備える。
【００２０】
MCDIMMは、マルチコアプロセッサと互換性がある。たとえば、複数のアプリケーションを１つのマルチコアプロセッサで同時に実行することができ、この場合、各コアは１つのマルチスレッドアプリケーションを実行し、マルチコアプロセッサ内のメモリコントローラは１つのアプリケーションに対する要求だけを処理する。
【００２１】
図５Ａは、本発明のいくつかの実施形態にしたがって構成されたMCDIMM５００の全体的な略図である。MCDIMM５００はｎ個のVMDを備える。ここで、ｎは、MCDIMM５００内のVMDの数を表す整数である。VMDの各々は、図５Ａに表されており、VMDｋによって示されている。ここで、下付き文字ｋは、１〜ｎの範囲の整数である。MCDIMM５００は、VMDの各々が別個の組をなす信号線を介してdemux register５０２に接続されるように構成されている。demux register５０２の２つの異なる実施形態については、図５Ｂと図５Ｃを参照して後述する。たとえば、VMD０、VMD１、VMDｋ、VMDｋ＋１、VMDｎ−２、VMDｎ−１が、信号線の組５０４〜５０９を介してdemux register５０２に接続される。VMDをdemux register５０２に接続する信号線の組み合わされた組は、「コマンドバス」と呼ばれる。各VMDを、DRAMチップなどの１つ以上のメモリチップから構成することができる。メモリコントローラ（不図示）からMCDIMM５００に送信されたコマンドは、「コマンドパス」と呼ばれる１組の信号線５１０を介してdemux register５０２に到達する。VMDの各々は、図５Ａにおいて、両矢印５１１などの両矢印によって識別される別個のデータバスでメモリコントローラとデータをやりとりする。
【００２２】
図５Ｂは、本発明のいくつかの実施形態にしたがって構成された第１のdemux register５２５の略図である。demux register５２５は、レジスタ５１２とデマルチプレクサ５１４から構成される。demux register５２５は、メモリコントローラから、図５Ａのコマンドパス５１０を介してコマンドを受け取る。これらのコマンドは時分割多重される。換言すれば、各コマンドは、持続時間が一定のタイムスロットでメモリコントローラからdemux register５２５に送られるビットストリームに符号化される。図５Ｂにおいて、時分割多重されたコマンドのタイムスロットは、一連の矩形５１５〜５２０によって表されている。図５Ｂに示されているコマンドの各々は、該コマンドを受け取ることが意図されている図５ＡのVMDのインデックスを含んでいる。それらのコマンドがdemux register５２５に送られる順番は、メモリコントローラによって決定される。したがって、それらのコマンドは、その順番で図５Ｂに現れている。実行されることになる特定の種類の動作（処理や演算）を識別する制御信号、バンクや行や列を識別するアドレス信号、及び、メモリコントローラによってコマンドを受け取るように割り当てられた特定のVMDを識別するVMDアドレスが、コマンドに埋め込まれている。たとえば、あるコマンドが特定のVMDに送られようとしているときには、メモリコントローラは、そのVMDを特定するVMDアドレスを含むコマンドを生成する。一般に、VMDアドレスは、log２ｎ個のビットからなるビット列である。
【００２３】
レジスタ５１２は、コマンドを受け取ってそれを一時的に格納するバッファである。デマルチプレクサ５１４は２つの入力を備える。矢印５２２、５２４によって示されているように、レジスタは、一方の入力にコマンドを送り、他方の入力にVMDアドレスを送る。デマルチプレクサ５１４は、VMDアドレスを使用して、該VMDアドレスによって特定されるVMDに通じているコマンドバスのうちの適切な信号線の組を選択する。図５Ｂにおいて、コマンドバスの信号線のｎ個の組のうちの６個の組が、それらの信号線の組５０４〜５０９に対応する矢印５０４−５０９によって示されており、かつ、図５Ａに示す関連するVMDのインデックスでラベル付けされている。各コマンドは、次のコマンドが処理される前に、特定の時間間隔内でdemux register５２５によって別個に処理されることに注意されたい。
【００２４】
たとえば、図５Ａ及び図５Ｂに関して、メモリコントローラがコマンドk＋1 ５１９をVMDｋに送る場合を考える。図５Ａにおいて、コマンドk＋1 ５１９は、コマンドパス５１０に沿ってdemux register５２５へと送られる。図５Ｂに示すように、レジスタ５１２は、コマンドk＋1 ５１９を受け取ってそれを一時的に格納し、VMDアドレス及び該コマンドがデマルチプレクサ５１４に送られ、該デマルチプレクサは、次に、適切な信号線の組５０６を選択して、該コマンドk＋1 ５１９を図５ＡのVMDｋ＋１に送る。コマンドk＋1 ５１９が送られた後、次のコマンド1 ５１８が同様にして処理される。
【００２５】
図５Ｂに示すように、demux register５２５は、信号線の各組に関連付けられたカウンタをオプションとして備える。カウンタは、VMDのDRAMチップがキャッシュラインのREADまたはWRITEトランザクションに関連する長いバースト長をサポートできないときに必要になりうる。demux registerは、キャッシュラインをキャッシュラインセグメントに分割して、該コマンドを、各々が１つのキャッシュラインセグメントに対応する複数のコマンドに変換する。したがって、VMDに送られる各キャッシュラインセグメントは、カウンタによって送られる対応するコマンドの後にくる。たとえば、VMDの１つ以上のDRAMチップのバースト長を１つのキャッシュラインをカバーするのに十分な長さに設定できない場合には、カウンタは、READまたはWRITEなどの列レベルのコマンドを、各キャッシュラインセグメントに対する複数のREAD／WRITEコマンドに変換して、各キャッシュラインセグメントを、該DRAMチップに対して別個に読み出しまたは書き込みできるようにする。各カウンタは、分割されたキャッシュライン用に生成されたコマンドの数を追跡する（把握して記憶する）計数装置を備える。カウンタによって実行される変換は、メモリコントローラからのコマンド帯域幅を節約する。
【００２６】
図５Ｃは、本発明のいくつかの実施形態にしたがって構成された第２のdemux register５２７の略図である。demux register５２７は、０〜ｎ−１で示されているｎ個のコマンドセレクタと１つのブロードキャストバス(broadcast bus。または同報通信バス)５２８を備えており、１つのコマンドセレクタが、図５Ａに示すｎ個のVMDの各々に対して設けられている。図５Ｂを参照して上述したように、メモリコントローラは、時分割多重されたコマンド５１５〜５２０を、コマンドパス５１０を通じてdemux register５２７に送る。コマンドセレクタは、分岐５２９〜５３４を介してブロードキャストバス５２８に電子的に接続されており、各コマンドセレクタは、コマンドバスの１組の信号線を介してVMDの１つに接続されている。図５Ｃにおいて、コマンドバスの信号線のｎ個の組のうちの６個の組が、該信号線の組５０４〜５０９に対応する矢印５０４〜５０９によって示されており、かつ、図５Ａに示す関連するVMDのインデックスでラベル付けされている。図５Ｃに示すように、各コマンドは、ｎ個の全てのコマンドセレクタに一斉に送信される。各コマンドセレクタは、コマンドに埋め込まれたVMDアドレスを抽出して、該コマンドを対応するVMDに送るべきか、または、該コマンドは異なるVMDにアドレス指定されているかを判定するように構成されている。後者と判定された場合には、該コマンドは破棄される。したがって、ｎ個の全てのコマンドセレクタに一斉送信される各コマンドについて、該コマンドは、コマンドセレクタのうちの１つによってのみ対応するVMDに送られる。たとえば、demux register５２７は、コマンドn-2 ５２０を受け取って、それを、ｎ個の全てのコマンドセレクタ０〜ｎ−１に一斉に送信する。しかしながら、コマンドn-2 ５２０は、VMDｎ−２のアドレスを含んでいるので、コマンドセレクタｎ−２は、該コマンドn-2 ５２０を信号線の組５０８を介してVMDｎ−２に送り、他のコマンドセレクタは該コマンドn-2 ５２０を破棄する。各コマンドは、次のコマンドが処理される前に、特定の時間間隔内でdemux register５２７によって別個に処理されることに留意されたい。
【００２７】
図５Ｄは、本発明のいくつかの実施形態にしたがって構成された例示的なコマンドセレクタｎ−２の略図である。他のｎ−１個のコマンドセレクタも同様に構成される。コマンドセレクタｎ−２は、ANDゲート５３０、レジスタ／カウンタ５３２、及び、ランダムアクセスメモリ（「DRAM」）タイミング制御５３４を備える。コマンドは、分岐５３３においてコマンドセレクタｎ−１に入力される。ANDゲート５３０は、各コマンドに埋め込まれたVMDアドレスを抽出して、システムクロック信号を受け取る。ANDゲート５３０は、抽出されたVMDアドレスが対応するVMDｎ−２のアドレスに一致するときに、レジスタ／カウンタ５３２に選択信号を送るように構成されている。ANDゲート５３０は、クロック信号を受け取って、レジスタ／カウンタがいつコマンドをラッチするか（またはしたか）を判定し、ANDゲート５３０を、立ち上がり及び／または立ち下がりクロックエッジ毎に該選択信号を送るように構成することができる。レジスタ／カウンタ５３２はバッファであり、選択信号をANDゲート５３０から受け取ったときに、コマンドを一時的に格納して、該コマンドを対応するVMDｎ−２に送る。レジスタ／カウンタ５３２はまた、図５Ｂを参照して上述したように、キャッシュライン及びコマンドの分割を実行するカウンタを備える。RAMタイミング制御５３４は、レジスタ／カウンタ５３２のカウンタ部分を制御する。
【００２８】
一般的に、ANDゲートは、全ての入力信号がビット「１」に対応しているときにビット「１」に対応する信号を出力し、入力信号のうちの少なくとも１つがビット「０」に対応しているときにビット「０」に対応する信号を出力する。ここで、ビット「１」、「０」は、それぞれ、信号の高電圧、低電圧を表すことができる。コマンドセレクタ０〜ｎ−１のANDゲートは、いくつかの入力信号線上にインバータ（反転器）を備えることができる。インバータは、ビット「０」に関連付けられた信号をビット「１」に関連付けられた信号に変換し、その逆も同様である。ANDゲートは、対応するVMDを表すVMDアドレスを全てのビットが「１」ビットからなるビットストリームに変換するために、いくつかの入力信号線上にインバータを備える。この場合、ANDゲートは、ビット「１」に対応する選択信号をレジスタ／カウンタ５３２に出力する。たとえば、VMDｎ−２のVMDアドレスがビットストリーム１１．．．１１０１である場合を想定する。ANDゲート５３０は、線５３８においてANDゲート５３０に入力される信号の電圧を反転するインバータ５３６を備える。したがって、図５Ｄに示すように、コマンド内に埋め込まれたVMDアドレスが該アドレス１１．．．１１０１と一致するときには、該アドレスは、１１．．．１１１１に変換され、ANDゲート５３０は、クロック信号と組み合わせて、ビット「１」を表す選択信号をレジスタ／カウンタ５３２へと出力し、該レジスタ／カウンタ５３２は該コマンドをラッチして該コマンドを信号線の組５０８上に送り出す。他のアドレスについては、ANDゲート５３０に入るビットストリームは少なくとも１つの「０」ビットを有し、ANDゲート５３０は、信号を出力しないか、ビット「０」に対応する低（レベル）信号を出力する。したがって、レジスタ／カウンタ５３２は、該コマンドをラッチして信号線の組５０８上に送り出すということをしない。
【００２９】
図６Ａは、本発明のいくつかの実施形態にしたがって構成されたMCDIMM６００の略図である。MCDIMM６００は、VMDｋによって識別される４個のVMDとdemux register６０２を備えている。ここで、ｋは０〜３の範囲の整数である。VMDの各々は、２つのDRAMチップを有し、demux register６０２を、図５Ｂ〜図５Ｄを参照して上述したように構成して動作させることができる。MCDIMM６００のコマンドバスは、VMDの各々のDRAMチップをdemux register６０２に接続する４個の組の信号線６０４〜６０７から構成されている。コマンドは、コマンドパス６０８を通ってメモリコントローラ（不図示）からdemux register６０２に送られる。ｌｏｇ２ｎ（ｎは４）にしたがって、VMDを、２ビットのVMDアドレス００、０１、１０、１１の１つに割り当てることができ、これらは、該コマンドを受け取ることになっているVMDを識別するために該コマンドに含められる。VMDの各々は、コマンドバスを通じて異なるコマンドを受け取り、他のVMDとは独立して、両矢印６１０などの両矢印で示されているように、各自のデータバスを介してデータを転送する。
【００３０】
図６Ａ及び図６ＢのMCDIMM６００の例では、１つのメモリ要求に対して２つのDRAMチップが関与する。DRAMチップの対の全く同様の影付き領域は、異なるコマンドに関連する異なる別個のメモリ要求を表している。各VMDは、コマンドバスを通じてコマンドを受け取り、各自のデータバスを用いて独立にデータを転送する。したがって、従来のDIMMよりもより少ないビットが活性化される（図３に関する説明参照）ことによってエネルギーが節約される。しかしながら、従来のDIMMよりもデータを配信するのに必要な時間は長くなりうる。なぜなら、データバスのサイズが、従来のDIMMにおけるデータバスのサイズよりも小さいからである。たとえば、データを、直列化された（または連続した）より小さなデータ部分に分割することができ、この場合、各部分は、VMDバスを介してメモリコントローラに別々に送られる。このように、データを直列化することによって、従来のDIMMを用いてデータを送るのに必要な時間量が長くなる。直列化により追加されるこの遅れ（待ち時間）の問題は、システム性能に悪影響を与える場合がある。
【００３１】
本発明の方法の実施形態
本発明の方法の実施形態を、MCDIMMの個々のVMDのエネルギー消費（量）を動的に変化させることに関連して説明する。メモリチップは、複数の異なる動作モードに入ることができる。たとえば、メモリチップは、あるメモリ要求に応答して活性化モードに入ることができる。そのメモリチップがそのメモリ要求をもはや処理していないときには、該メモリチップはスタンバイモードに入ることができる。このスタンバイモードでは、該メモリチップにはスタンバイエネルギーが供給され、このスタンバイエネルギーは、メモリ要求を能動的に処理するのに必要なエネルギーよりは小さいが、内部のメモリチップコンポーネントの動作を維持して該メモリチップが別のメモリ要求に迅速に応答できるようにするのには十分な大きさである。しかしながら、１つのメモリチャネル当たりに多数のメモリモジュールが存在するときには、スタンバイモードにあるメモリチップは、該メモリモジュールに送られる全エネルギーの大きな部分を消費する。
【００３２】
一時的に使用されていないメモリチップをエネルギー節約モードに移行させることによってスタンバイエネルギーを節約することができる。エネルギー節約モードにあるメモリチップを起動しなければならないが、これによって応答時間が長くなる。たとえば、パワーダウンモードは、いくつかの内部メモリチップコンポーネントをオフにすることによってエネルギーを節約するエネルギー節約モードであるが、このモードに関連するいくつかの性能限界がある。メモリチップがパワーダウンモードにある間は通常のメモリチップアクセスはできず、該メモリチップを起動しなければならない。このため、パワーダウンモードに入るのに要する時間及びパワーダウンモードから出るのに要する時間は、スタンバイモードに入るのに要する時間及びスタンバイモードから出るのに要する時間よりも長い。その結果、パワーダウンモードを用いることによって典型的にはエネルギーは節約されるが、メモリシステムの性能は低くなってしまう。メモリチップを起動するのに必要な時間を短くするために、多くのメモリチップを複数のパワーダウンモードを有するように構成することもできる。各々のパワーダウンモードは、エネルギー節約のそれぞれ異なる増分レベルを提供する。しかしながら、エネルギー節約における段階的増加の各段階は、メモリチップを起動するのに必要なより長い時間量に対応する。
【００３３】
本発明の方法の実施形態を、マルチコアプロセッサで動作している１つ以上のアプリケーションに対して透過的なものとすることができるが、これは、ある動作モードを選択する決定をハードウェアによって完全に行うことができるからである。本発明の方法は、また、実行中に、コンパイラーまたは１つ以上のアプリケーションによって該決定を変更するというフレキシビリティも有する。図７は、本発明のいくつかの実施形態にしたがう、インターフェース７０４を介してメモリコントローラ７０２に電子的に接続されたMCDIMM７００を示す。MCDIMM７００は、図５Ａを参照して上述したように構成されたdemux register７０６及びｎ個のVMDを備える。図７に示すように、メモリコントローラ７０２は、内部ロジック７０８及び内部記憶装置７１０を有するように構成される。各VMDの使用に関する情報（使用量や使用頻度などの情報）を内部記憶装置７１０に格納することができ、本発明の方法を、メモリコントローラの内部ロジック７０８によって完全に実行することができる。
【００３４】
方法の実施形態は、マルチコアプロセッサ上で動作している１つ以上のアプリケーションの実行中にメモリモジュールの性能及び／またはエネルギー効率を最適化することを含む。コンピュータシステムのオペレータ、アプリケーションのうちの１つ以上、または、オペレーティングシステムは、ある基準を提供する指標を選択する。この場合、該基準によって、メモリモジュールの性能及び／またはエネルギー効率が最適化される。該指標を最小の全実行時間（total execution time:TET）、最小の全エネルギー消費量（total energy consumption:TEC）、最小のエネルギー遅延積（energy-delay product:EDP）、または、任意の他の適切な基準（これらの基準によって、メモリモジュールの性能及び／またはエネルギー効率を最適化することができる）。該指標を１つ以上のアプリケーションの最小のTETに設定することによって、それらのアプリケーションは、メモリモジュールによって提供される記憶容量に帯域幅のほぼ全てでもってアクセスすることが可能になる。換言すれば、メモリチップがメモリ要求を能動的に処理していないときには、該メモリチップはパワーダウンモードに入るのではなく、該メモリチップはスタンバイモードに入って、該メモリチップが次のメモリ要求に迅速に応答できるようにする。したがって、TETは性能指標である。他方、該指標をTECに設定することによって、メモリチップがエネルギー節約モードに移行して、各メモリ要求に対してすぐに利用可能なメモリチップの数が少なくなる。これによって、帯域幅が減少し、及び、メモリの応答時間が遅くなるが、該指標をTETに設定する場合に比べてエネルギーが節約される。該指標を最小のEDPに設定することによって、TETとTECの間の折衷点が得られる。EDP指標は、エネルギー（またはメモリ要求に関連するエネルギー）と、メモリ要求に関連する遅れとの積として定義される。所与の性能レベルにおける最小のエネルギーを得るために、または、同じエネルギーでより高い性能を得るために、EDPを用いることができる。
【００３５】
ある指標が選択されると、１つ以上のアプリケーションの実行中における各VMDの使用に関する情報が決定される。使用情報は、収集されて、メモリコントローラ７０２に格納される。該使用情報は、次の（１）〜（５）のうちの１つ以上を含むことができる。（１）メモリコントローラが、ある時間期間にわたって十分な数のメモリ要求を受け取るときの各VMD当たりのメモリ要求の回数（または頻度）の記録、（２）メモリ要求の数とある時間期間にわたって実行された命令の数との比（または、ある時間期間におけるメモリ要求の数と該ある時間期間にわたって実行された命令の数との比）、（３）他の動作モードではなくある１つの動作モードを選択すること（または選択したこと）に割り当てられたペナルティ、（４）コンパイラーが、それが処理する１つ以上のアプリケーションに関連する各VMD当たりのメモリアクセスの回数（または頻度）に関する情報をメモリコントローラ７０２に提供できること、（５）実行されている１つ以上のアプリケーションが、各VMD当たりのメモリアクセスの回数（または頻度）の履歴をメモリコントローラ７０２に提供できること。
【００３６】
メモリコントローラは、各VMDに関する使用情報を１つ以上の閾値と比較し、あるVMDに適切なコマンドを送ることによって、該VMDを対応する動作モードに移行させる。たとえば、あるVMDに関連する使用情報がある閾値より小さいときには、メモリコントローラは、該VMDを対応するパワーダウンモードに移行させ、該VMDに関連する使用情報が該閾値よりも大きいときには、該メモリコントローラは、該VMDをスタンバイモードに移行させる。これらの閾値は、メモリモジュールの使用を最適化するために選択された指標にしたがって選び出される。たとえば、本発明のいくつかの実施形態は、指標がTETに設定されているときに、エネルギー節約モードをバイパスできること、または、それらの閾値を、エネルギー節約モードに入るVMDがほとんど無いように小さい値に設定できることを含んでいる。他方、該指標をTECまたはEDPに設定することによって、それらの閾値は、TETに関連する閾値よりも大きくなり、これによって、多くのVMDをエネルギー節約モードに移行させることができる。
【００３７】
本発明のいくつかの実施形態はまた、必要なメモリの量または１つ以上のアプリケーションのメモリアクセスパターンに関する特性情報をメモリコントローラに提供するマルチコアプロセッサまたはコンパイラーで動作する該１つ以上のアプリケーションを含む。該特性情報及び該指標は、オペレーティングシステムや、実際のコンピュータのように１つ以上のアプリケーションを実行するソフトウェアによって実施されるコンピュータである仮想マシンなどのランタイムシステムを介してメモリコントローラに送られる。ランタイムシステムは、メモリコントローラのために指標及び特性情報を解釈して、該メモリコントローラに、該アプリケーション用の適切な動作モードを選択するように指示することができる。たとえば、システムオペレータが、マルチコアプロセッサの複数のコアで同時に動作している複数のアプリケーションについてEDP指標を選択する場合であって、アプリケーションの作者またはコンパイラーによって提供された特性情報によって、それらのアプリケーションのほとんどが頻繁にメモリアクセスを行うアプリケーションとして識別されている場合を想定する。結果として、ランタイムシステムは、メモリコントローラに、メモリアクセスの数に関する統計情報を収集することなく、パワーダウンモードを使用しないようにMCDIMMを構成するように指示することができる。また、動作（または実行）中のアプリケーションをスケジューリングをし、モニタ（監視）し、サポートするランタイムシステムのハイパーバイザーまたは他の要素は、メモリコントローラにMCDIMMを構成するように指示することができる。
【００３８】
図８Ａは、本発明のいくつかの実施形態にしたがう、MCDIMM７００のVMDの各々についての使用情報を示す棒グラフ８００である。グラフ８００の各棒は、MCDIMM７００のあるVMDがある時間期間にわたってアクセスされた頻度すなわち回数を表すことができる。グラフ８００は、閾値Ｔ１、Ｔ２、Ｔmaxをそれぞれ表す３つの破線８０１〜８０３を含んでいる。それらの閾値はまた、３つの異なるパワーダウンモードPDM１、PDM２、PDMmaxに関連している。PDMmaxは、最大数の内部メモリチップコンポーネントをオフにする（または電力が供給されないようにする）ことによって、PDM１及びPDM２よりも電力を節約するが、起動のための遅延時間は最も長い。PDM１は、最も少ない数の内部メモリチップコンポーネントをオフにするためにエネルギー節約量は最も少ないが、起動のための遅延時間は最も短い。PDM２は、PDMmaxとPDM１の間のエネルギー節約量を提供し、起動のための遅延時間も中程度である。
【００３９】
図８Ａに示す閾値Ｔ１ ８０１、Ｔ２ ８０２、Ｔmax ８０３は、指標をTECまたはEDPに設定することによって決定された閾値を表すことができる。これらの閾値は、許容可能な性能とエネルギー効率との間のバランスを表す。たとえば、棒グラフ８００は、VMD０、VMD２、VMDｋ、VMDｋ＋１、VMDｋ−２が全て、閾値Ｔ１を超える使用情報を有することを明らかにしている。換言すれば、メモリコントローラは、１つ以上のアプリケーションが動作している間しばしばこれらのVMDを使用する。したがって、それらのVMDがメモリ要求を能動的に処理していないときには、メモリコントローラは、それらのVMDをエネルギー節約モードの１つに移行させるのではなく、それらのVMDをスタンバイモードに移行させる。他方、図８Ｂに示すように、VMD１に関連する使用情報はＴmaxよりも小さく、VMDｎ−３に関連する使用情報はＴmaxよりも大きくかつＴ２よりも小さい。また、VMDｎ−１に関連する使用情報はＴ２よりも大きくかつＴ１よりも小さい。したがって、エネルギーを節約するために、メモリコントローラは、VMD１、VMDｎ−３、及びVMDｎ−１がメモリ要求に応答するために起動されるまで、VMD１をPDMmaxに、VMDｎ−３をPDM２に、及び、VMDｎ−１をPDM１にそれぞれ移行させておく。
【００４０】
図９Ａは、図８Ａに示すMCDIMM７００のVMDの各々についての使用情報を表す棒グラフ８００であるが、指標をTETに設定することにともなって閾値が変更されている。VMDの各々に関連する使用情報を表す棒は、図８Ａに示されている棒と変わっていないことに留意されたい。しかしながら、指標がTETに変更されているので、図８Ａにおける閾値Ｔ１、Ｔ２、Ｔmaxは、図９Ａにおいて破線９０１、９０２、９０３でそれぞれ表されている閾値Ｔ'１、Ｔ'２、Ｔ'maxに変更されている。この特定の例では、性能はエネルギー効率にまさる。したがって、図９Ａは、１つのVMDだけがある閾値を下回っていることを明らかにしている。具体的には、VMD１に関連する使用情報は、閾値Ｔ'２よりも大きく閾値Ｔ'１よりも小さい。メモリコントローラは、VMD１がメモリ要求のために起動されるまでのある時間期間、VMD１をパワーダウンモードPDM１に移行させておく。メモリコントローラは、残りのVMDがメモリ要求を能動的に処理していないときには、それらのVMDをスタンバイモードに移行させる。
【００４１】
いくつかの実施形態では、メモリコントローラは、使用すべき動作モードを選択することができる。いくつかの実施形態では、メモリが頻繁に使用されているか、または、性能がより重要なときには、メモリコントローラはエネルギー節約モードを使用しない。
【００４２】
方法の実施形態は動的である。なぜなら、使用情報をメモリコントローラによって定期的に収集することができ、VMDの各々に関連する使用情報を、１つ以上のアプリケーションが動作しているときに更新できるからである。この結果、該１つ以上のアプリケーションが動作している間に、メモリアクセスを禁止することなく、現在の使用情報に基づいて、VMDを異なる動作モードに定期的に切り替えることができる。さらに、いくつかの実施形態では、１つ以上のアプリケーションが動作しているときに、コンピュータシステムのオペレータによって指標を変更することもできる。
【００４３】
図１０は、本発明のいくつかの実施形態にしたがう、メモリモジュールのVMDをいくつかの動作モードに動的に移行させるための方法の制御フロー図である。ステップ１００１において、動作中の１つ以上のアプリケーションに関連するメモリ性能及び／またはエネルギー消費を最適化するために、指標TETやTECやEDPなどの指標が選択される。上述したように、コンピュータシステムのオペレータ、または、１つ以上のそれらのアプリケーション、または、オペレーティングシステムによって指標を選択することができる。ステップ１００２において、１つ以上のそれらのアプリケーションが実行される。ステップ１００３において、オペレーティングシステムは、該１つ以上のアプリケーションを処理するために１つ以上のコアを選択する。ステップ１００４において、オペレーティングシステムは、該１つ以上のアプリケーションのメモリ要件に基づいて、MCDIMMの１つ以上のVMDを選択する。ステップ１００５において、ランタイムシステムは、該指標、及び／または、アプリケーション自体によって提供された特性情報にしたがって、メモリコントローラをステップ１００６に進めて、ステップ１００６〜１００９で実行される該方法のエネルギー節約部分に移行させることができる。そうでない場合には、ランタイムシステムは、該方法のエネルギー節約部分をスキップする（飛ばす）ようにメモリコントローラに指示することができる。たとえば、該１つ以上のアプリケーションによって提供された特性情報が、それらのアプリケーションを、頻繁にメモリアクセスを行うアプリケーションとして特定しているときには、ランタイムシステムは、メモリコントローラに対して、ステップ１００６〜１００９で実行される該方法のエネルギー節約部分をスキップするように指示することができる。ステップ１００６のforループにおいて、ステップ１００７〜１００８は、メモリモジュールのVMDの各々について実行される。ステップ１００７において、図７を参照して上述したように、メモリコントローラは、ある時間期間にわたってVMDの使用情報を収集して格納する。ステップ１００８において、図１１の制御フロー図に関して後述するように、メモリコントローラは、指標及び使用情報に基づいてVMDをある動作モードに移行させる。たとえば、VMDがメモリ要求を能動的に処理していないときには、図８〜図９を参照して上述したように、メモリコントローラは、スタンバイモードまたは多くのエネルギー節約モードのうちの１つにVMDを移行させることができる。ステップ１００９において、全てのVMDがある動作モードに入っている場合にはステップ１０１０に進み、そうでなければ、別のVMDに対してステップ１００７及び１００８が繰り返される。ステップ１０１０において、該１つ以上のアプリケーションの実行（動作）が終了していないときには、本発明のいくつかの実施形態は、オプションとしてステップ１０１１を含むことができ、該１つ以上のアプリケーションの実行（動作）が終了しているときには、ステップ１０１２に進んで、異なる組をなす１つ以上のアプリケーション、または、続いて実行される同じ組をなす１つ以上のアプリケーションについてステップ１００１〜１００９が繰り返される。ステップ１０１１において、該１つ以上のアプリケーションが依然として実行中である場合には、コンピュータシステムのオペレータは指標を変更することができる。たとえば、コンピュータシステムのオペレータは、最初にステップ１００１において指標をTETに設定することができ、その後、該１つ以上のアプリケーションが実行されているときに該指標をTECに変更することができる。
【００４４】
図１１は、本発明のいくつかの実施形態にしたがう、VMDをパワーダウンモードに動的に移行させるための方法の制御フロー図である。この実施形態では、図８〜図９を参照して上述したように、メモリチップは、ステップ１１０３、１１０５、及び１１０７に記載されている３つのエネルギー節約パワーダウンモードを有することが想定されている。ステップ１１０１において、３つのパワーダウンモードに対応する閾値が、図８〜図９を参照して上述したように、図１０のステップ１００１で選択された指標に基づいて決定される。メモリコントローラは、図１０のステップ１００６で収集されて格納された使用情報を使用して、ステップ１１０２〜１１０７において１つまたは３つのパワーダウンモードを選択する。これらのパワーダウンモードは、図８Ａを参照して上述したPDM１、PDM２、PDMmaxである。ステップ１１０２において、使用情報が閾値Tmaxよりも小さいときにはステップ１１０３に進み、そうでないときにはステップ１１０４に進む。ステップ１１０３において、メモリコントローラは、VMDをPDMmaxに移行させる。ステップ１１０４において、使用情報が閾値T２より小さいときにはステップ１１０５に進み、そうでないときにはステップ１１０６に進む。ステップ１１０５において、メモリコントローラは、VMDをPDM２に移行させる。ステップ１１０６において、使用情報が閾値T１より小さいときにはステップ１１０７に進み、そうでないときにはステップ１１０８に進む。ステップ１１０７において、メモリコントローラは、VMDをPDM１に移行させる。ステップ１１０８において、メモリコントローラは、VMDをスタンバイモードに移行させる。他の実施形態では、メモリチップを、１つ、２つ、または４つ以上の異なるパワーダウンモードを有するように構成することができる。
【００４５】
以上の説明は、説明のためのものであり、本発明を十分に理解できるようにするために特定の用語を使用した。しかしながら、本発明を実施するために特定の細部は必要ではないことが当業者には明らかであろう。本発明の特定の実施形態の上記説明は、例示及び説明のために提示されたものである。それらは、本発明を網羅することも、本発明を開示した形態そのものに限定することも意図していない。上記の教示に照らして多くの改良及び変形が可能であることは明らかである。それらの実施形態は、本発明の原理及びその実用上の適用を最良に説明し、これによって、当業者が、意図する特定の用途に適するように本発明及び種々の実施形態を様々に改変して最良に利用できるようにするために、図示し説明されている。本発明の範囲は、添付の特許請求の範囲及びそれの等価物によって画定されることが意図されている。
【図１Ａ】
0005400886.tif 000002
【図１Ｂ】
0005400886.tif 000003
【図２】
0005400886.tif 000004
【図３Ａ】
0005400886.tif 000005
【図３Ｂ】
0005400886.tif 000006
【図４Ａ】
0005400886.tif 000007
【図４Ｂ】
0005400886.tif 000008
【図５Ａ】
0005400886.tif 000009
【図５Ｂ】
0005400886.tif 000010
【図５Ｃ】
0005400886.tif 000011
【図５Ｄ】
0005400886.tif 000012
【図６】
0005400886.tif 000013
【図７】
0005400886.tif 000014
【図８Ａ】
0005400886.tif 000015
【図８Ｂ】
0005400886.tif 000016
【図９Ａ】
0005400886.tif 000017
【図９Ｂ】
0005400886.tif 000018
【図１０】
0005400886.tif 000019
【図１１】
0005400886.tif 000020