JP5400886B2 - マルチコアメモリモジュール内のパワーダウンモードの動的利用 - Google Patents

マルチコアメモリモジュール内のパワーダウンモードの動的利用 Download PDF

Info

Publication number
JP5400886B2
JP5400886B2 JP2011522943A JP2011522943A JP5400886B2 JP 5400886 B2 JP5400886 B2 JP 5400886B2 JP 2011522943 A JP2011522943 A JP 2011522943A JP 2011522943 A JP2011522943 A JP 2011522943A JP 5400886 B2 JP5400886 B2 JP 5400886B2
Authority
JP
Japan
Prior art keywords
memory
threshold
virtual storage
mode
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011522943A
Other languages
English (en)
Other versions
JP2011530760A (ja
Inventor
アン,ジュン,ホ
ジョウッピ,ノーマン,ピー.
レヴェリッチ,ジェイコブ,ビー.
シュレイバー,ロバート,エス.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2011530760A publication Critical patent/JP2011530760A/ja
Application granted granted Critical
Publication of JP5400886B2 publication Critical patent/JP5400886B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)

Description

本発明の実施形態は、メモリモジュールに関連し、特に、プログラムの動的動作に基づいて、メモリモジュールの個別の仮想記憶装置を異なる動作モードに移行させるための方法に関する。
現代のコンピュータシステムでは、メモリ容量及びメモリ帯域幅に対する需要が増加しつつある。近年におけるマイクロプロセッサの性能アップは、チップ当たりのコア数の増加に頼っており、マルチコア及びコア数の多いチップマルチプロセッサ(CMP: chip multi-processor)は、1プロセッサにつき多数のメモリコントローラを使用することによってさらに高いメモリ帯域幅及びメモリ容量を要求する。そのため、メインメモリモジュールの電力バジェット(power budget。または電力予算)は、現在のコンピュータシステムにおけるプロセッサのそれと同程度かそれよりも大きくなっている。
しかしながら、典型的なメモリモジュールはエネルギー効率が悪い。たとえば、メモリモジュールの待機電力(またはスタンバイエネルギー)は、多数のメモリモジュールがプロセッサのメモリコントローラに接続されているときには、メインメモリの全使用エネルギーの大きな部分を占める。メモリモジュールがメモリ要求に能動的に応答しないときには、メモリモジュールの大部分は、次のメモリ要求を待っている間待機電力を使用するアイドル状態であるが、これは、エネルギーの使用効率が悪い。待機電力を節約するために、複数のパワーダウンモードが現在の多くのメモリチップに装備されており、システムソフトウェア及びハードウェアは、待機電力を節約するためにこれらのパワーダウンモードを使用する。しかしながら、同じパワーダウンモードをモジュール内の全てのメモリチップに適用しなければならないために、節約される電力量は制約される。
システム性能をそれほど犠牲にすることなくエネルギーを節約しつつ、メモリシステムに格納された情報へのアクセスを可能にするメモリシステム及び方法が必要とされている。
本発明の種々の実施形態は、メモリコントローラが、プログラムの動的な挙動に基づいて、メモリモジュールの仮想記憶装置(仮想メモリ装置または仮想メモリデバイスともいう)の特定の動作モードを選択できるようにする方法に向けられている。1実施形態では、メモリモジュールの仮想記憶装置の各々の動作モードを決定するための方法はある基準を提供する指標(測定基準ともいう。以下同じ)を選択することを含み、該ある基準によって、マルチコアプロセッサにおける1つ以上のアプリケーションの実行中のメモリモジュールの性能及び/またはエネルギー効率が最適化される。仮想記憶装置の各々について、該方法は、また、ある時間期間にわたって仮想記憶装置に関連する使用情報を収集すること、該指標及び使用情報に基づいて、仮想記憶装置の動作モードを決定すること、及び、仮想記憶装置を該動作モードに移行させることを含む。
8個のメモリチップを有するメモリモジュールの等角図である。 回路基板に搭載されたメモリモジュール及びメモリコントローラの等角図である。 1つのメモリチップを構成する8個のバンクの略図である。 従来のメモリモジュールの略図である。 従来のメモリモジュールの全てのメモリチップにコマンド(命令)を一斉に送る場合の1例を示す。 本発明のいくつかの実施形態にしたがって構成された単一のマルチコアメモリモジュールの等角図である。 本発明のいくつかの実施形態にしたがう、回路基板に搭載されたマルチコアメモリモジュール及びメモリコントローラの等角図である。 本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。 本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。 本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。 本発明のいくつかの実施形態にしたがって構成されたマルチコア、デュアルインラインメモリモジュールの全体的な略図である。 本発明のいくつかの実施形態にしたがって構成された例示的なマルチコア、デュアルインラインメモリモジュールの略図である。 本発明のいくつかの実施形態にしたがう、メモリコントローラに電子的に接続されたマルチコアデュアルインラインメモリモジュールを示す。 本発明のいくつかの実施形態にしたがう、図7に示すマルチコアデュアルインラインメモリモジュールの仮想記憶装置の各々の使用情報を示す棒グラフである。 本発明のいくつかの実施形態にしたがう、図7に示すマルチコアデュアルインラインメモリモジュールのうちの、異なるエネルギー節約モードにある3つの仮想記憶装置を示す。 図8Aに示す棒グラフに閾値を加えたものであり、該閾値は、本発明のいくつかの実施形態にしたがう、図7に示すマルチコアデュアルインラインメモリモジュールの全実行時間の最適化にしたがって調整されている。 本発明のいくつかの実施形態にしたがうエネルギー節約モードにある、図7に示すマルチコアデュアルインラインメモリモジュールの1つの仮想記憶装置を示す。 本発明のいくつかの実施形態にしたがう、メモリモジュールの仮想記憶装置をパワーダウンモードに動的に移行させるための方法の制御フロー図である。 本発明のいくつかの実施形態にしたがう、図10の方法のサブルーチンの制御フロー図である。
本発明の種々の実施形態は、メモリコントローラが、動的なプログラムの挙動に基づいてメモリモジュールのメモリチップの特定の動作モードを選択できるようにする方法に向けられている。たとえば、メモリコントローラを、ある時間期間にわたって多くのメモリ要求を受け取るいくつかのメモリチップをスタンバイモードに移行させるように構成することができ、これによって、それらのメモリチップが使用されていないときに、それらのメモリチップがメモリ要求に迅速に応答できるようにする。一方で、メモリコントローラはまた、それと同じ時間期間にわたって、比較的低い活動状態(アクティビティ)にある他のメモリチップを多くのエネルギー節約モードのうちの1つに移行させることができる。方法の実施形態は、システム性能をエネルギー効率とバランスさせることができるという点で柔軟性がある。「性能」という用語は、メモリシステムが、ある時間期間にわたって実行する作業(または処理)の量を指す。待ち時間、応答時間、及び帯域幅は、メモリシステムの性能を、該メモリシステムの変化の前後の性能と比較するために、あるいは、他のメモリシステムの性能と比較するために使用できる指標である。方法の実施形態は、性能よりもエネルギー効率を優先させたときにメモリコントローラがエネルギー節約モードに移行させるであろうメモリチップよりも少ない数のメモリチップをエネルギー節約モードに移行させるように該メモリコントローラに指示することによって、エネルギー効率よりも性能を優先できるようにする。
本発明の方法の実施形態を、システム性能に小さな影響しか与えずにメモリシステムのエネルギー効率を改善するように設計された、従来のメモリモジュール及びマルチコアメモリモジュールに適用することができる。マルチコアメモリモジュールは、「仮想記憶装置」(「VMD))と呼ばれる1つ以上のメモリチップのグループに分割される複数のメモリチップを含む。メモリチップを、ダイナミックランダムアクセスメモリ(「DRAM」)チップとすることができる。
詳細な説明は次のように編成されている。最初のサブセクションでは従来のメモリモジュールを概説する。2番目のサブセクションではマルチコアメモリモジュールを説明する。3番目のサブセクションでは本発明の方法の実施形態を説明する。
メモリモジュール
メモリモジュールは、典型的には、「デュアルインラインメモリモジュール」(「DIMM」)と呼ばれる記憶装置を形成する、プリント回路基板に搭載されたいくつかのDRAMチップから構成される。図1Aは、8個のDRAMチップから構成される単一のDIMMの等角図である。この場合、1つ以上のDIMMが、回路基板に搭載されて、メモリコントローラによって制御される。図1Bは、回路基板106に搭載されたメモリ102及びメモリコントローラ104の等角図である。メモリ102は、4つのDIMMスロット112〜115に挿入された4つのDIMM 108〜111からなる。メモリコントローラ104は、コンピュータチップ、またはマルチコアマイクロプロセッサチップの一部であり、DIMM108−111に対して送受信されるコマンド及びデータの流れを管理(及び/または制御)し、メモリ102をコンピュータシステムの他の主要なコンポーネント(中央処理装置など)とインターフェース(接続)する。各DIMMは、インターフェース118を介してメモリコントローラ104と電気的に通信する。インターフェース118は、メモリコントローラ104からメモリ102にクロック信号及びコマンドを伝送し、及び、DIMM108〜111とメモリコントローラ104間でデータ信号を伝送するバスである。データ信号は、メモリコントローラ104とDIMM108〜111内のDRAMチップとの間を並列(または同時)に送られる。インターフェース118は、シングルデータレート(single-data rate:SDR)、ダブルデータレート(double-data rate:DDR)、及び、これらより高いデータレートでのデータ転送をサポートすることができる。SDRは、1クロックサイクルで1回データを送信することをいい、DDRは、コンピュータシステムクロック信号の立ち上がりエッジと立ち下がりエッジの両方においてデータを送信することをいう。メモリコントローラ104及びDIMM108〜111を、SDR及びDDRにしたがってデータを送受信するように構成することができる。DDRにおいてクロックの両方のエッジを使用することによって、データ信号を同じ限界周波数で動作させた場合に、シングルデータレート送信に比べてデータ伝送速度(またはデータ伝送率)が2倍になる。
DRAMチップは、トランジスタ及びコンデンサからなるDRAMメモリセルと呼ばれる構造中に1ビットを記憶する。単一のDRAMチップ中に数十億のセルがあり、これらのセルを、「バンク」と呼ばれる多くの2次元アレイからなる2次元配列をなすように編成することができる。図2は、DRAMチップ200を構成する0〜7で示される8個のバンクの略図である。図2の例に示すように、各バンクは、交差信号線を介して行デコーダ、センスアンプ、及び列デコーダに接続されている。たとえば、バンク0は、信号線204などのx軸に平行に走る信号線を介して行デコーダ202に接続されている。バンク0はまた、信号線210などのy軸に平行に走る信号線を介して、センスアンプ206及び列デコーダ208に接続されている。メモリセルは信号線の交差部に配置されている。たとえば、メモリセル212は、信号線204と210が交差するポイントに配置されている。
メモリコントローラ104からメモリ102に送られるコマンドには、READ(読み出し)、WRITE(書き込み)、ACTIVATE(活性化または起動)、REFRESH(リフレッシュ)、及び、PRECHARGE(プリチャージ)が含まれる。コマンドは、制御信号及びアドレス信号からなる。制御信号は、コマンドによって実行される動作(または処理)を表し、アドレス信号は、そのコマンドが実行されるDRAMチップ内のバンク及び行アドレスまたは列アドレスを特定する。たとえば、ACTIVATEコマンドは、活性化制御信号、並びに、該ACTIVATEコマンドが実行されるDRAMチップ内のバンク及び行を識別するバンクアドレス及び行アドレスから構成される。READ及びWRITEコマンドは、読み出し及び書き込み制御信号、並びに、該READ及びWRITEコマンドが実行されるDRAMチップ内のバンク及び列を識別するバンクアドレス及び列アドレスから構成される。
DRAMチップ200のバンクに格納されたデータは2つのステップでアクセスされる。先ず、メモリコントローラ(不図示)がDRAMチップ200の行アドレスとバンクアドレスを指定するACTIVATEコマンドを送信する。典型的には、8または16Kビットである、該バンクの行中の全てのビットが、活性化されて該バンク内のセンスアンプに送られる。次に、該バンクアドレス及び列アドレスを指定する1以上のREAD/WRITEコマンドが送信される。READ/WRITEトランザクション当たりに伝送されるビット数は、データバスの大きさとバースト長によって決まる。バースト長は、単一のバーストトランザクションまたはデータブロックの高速伝送において実行されるREAD/WRITE動作(処理)の数を制御するメモリに関連する共通の基本入力/出力システム設定値である。典型的には、バースト長は4または8に設定される。DRAMチップが、たとえばメモリREADリクエストを受け取ると、該チップは、インターフェース118の信号線にデータを供給することによって応答する。メモリREADリクエストに応答して送られるデータブロックの大きさは、バースト長によって決まる。64ビット幅のデータバス(すなわち、64個のシングルエンド信号線、または、128個の差分(差動)信号線)、及びバースト長4をサポートするように構成されたDRAMチップを有するメモリモジュールは、メモリコントローラからの単一のREADリクエストに応答して、32バイト(4×64ビット=32バイト)のデータブロックを送る。一方、64ビット幅のデータバス、及びバースト長8をサポートするように構成されたDRAMチップを有するメモリモジュールは、メモリコントローラからの単一のREADリクエストに応答して、64バイト(8×64ビット=64バイト)のデータブロックを送る。
データが、DRAMチップの同じバンク内の2つの異なる行で読み出されるときには、第2の行のデータを読み出すことができるようになる前に、第1の行を書き戻して、ビットラインを充電し、及び、PRECHARGE及びACTIVATEコマンドによって該第2の行をラッチしなければならない。PRECHARGEコマンドは、その行をDRAMバンクに書き戻すが、これは、ACTIVATEコマンドが破壊的読み出しを行うために必要である。バンクアドレスは、READ、WRITE、ACTIVATE、及びPRECHARGEコマンド中の少数のビットによって与えられる。これらのコマンド処理には、しばしば、同じバンクにおける最初のACTIVATEコマンドと次のACTIVATEコマンドとの間で約50nsを要する。したがって、ACTIVATEコマンドとPRECHARGEコマンドの間に多くのREAD/WRITEコマンドが存在しない場合には、コマンド/アドレス/データバスは、しばしばアイドル状態となる。しかしながら、データが異なるバンクで読み出される場合には、異なるバンクへのコマンドをパイプライン処理することができる。なぜなら、2つの異なるバンク間のACTIVATEからACTIVATEまでの時間は、約8nsだけ短いからである。したがって、異なるバンクにおけるリクエスト(要求)をインターリーブすることによって、より高いスループットを達成することができ、これは、ACTIVATEコマンドとPRECHARGEコマンドの対の間にREAD/WRITEコマンドが多く存在しない場合に特にあてはまる。
図3Aは、各々が8ビットデータバスを有する8個のDRAMチップを備える従来のDIMM300の略図である。矢印302は、メモリコントローラ(不図示)からレジスタ304と呼ばれるオプションの装置に送られるコマンドの配送を表している。レジスタ304は、メモリコントローラとDRAMチップの間のバス上に配置されている。レジスタ304は、メモリコントローラからのコマンド信号をラッチし、その後、メモリコントローラに対する電気的負荷を小さくし、かつ、コマンド信号の安定性を維持するために、信号の品質及びタイミングマージンがより良好とされた状態で、該コマンド信号を各DRAMチップに転送する。レジスタ304は、また、1つのメモリコントローラ毎に複数のDIMMを有するシステム内のそれぞれのDIMMに対する重複するアクセスを容易にするために、コマンドをバッファリングし、及び、クロック信号をDRAMチップへと一斉に送信(以下、「一斉に送信」には、同時送信ではない配信、または同報送信が含まれる)することができる。分岐した矢印306及び308によって示すように、レジスタ304は、それらのコマンドをバスを介して8個の全てのDRAMチップに一斉に送信する。他の従来のメモリモジュールでは、コマンドは、レジスタ304なしでDRAMチップに一斉に送信される。
図3Bは、従来のDIMM動作の1例を示す。図3Bの例に示すように、DIMM300内の全てのDRAMチップは、メモリコントローラから同じコマンドを受け取って、影付きの領域310によって表されている各DRAMチップ内の同じ行を活性化する。この結果、DIMM300内の全てのDRAMチップは、より広いデータパス及びより大きな行を有する単一のDRAMチップとして動作する。
図2を参照して上述したように、DRAMチップの行のサイズ(大きさ)は典型的には8(すなわち16Kビット)である。DIMMに対するキャッシュラインを読み出し、または、該DIMMに対するキャッシュラインに書き込むために、READ/WRITEコマンドが全てのDRAMチップに一斉に送信され、各DRAMチップは同じ行を活性化する。換言すれば、8個のDRAMチップから構成される典型的なDIMMにおいて、各DRAMチップは、8Kビットからなる同じ行アドレスを活性化する。したがって、1つのDIMMの8×8Kビットすなわち64KビットのDRAMセルが一度に活性化されるが、これは、読み出しまたは書き込みが行われることになるキャッシュラインのサイズよりも大きい。典型的なキャッシュラインは、64バイトすなわち512ビットのオーダーである。DIMMに対するREAD/WRITEコマンドは、典型的には、キャッシュラインの粒度で読み出され、または、書き込まれるので、活性化されているDRAMセルの99%以上が、単一のREADまたはWRITEトランザクションに対して使用されず、エネルギーの使用効率が悪い。
マルチコアメモリモジュール
マルチコアメモリモジュールは、メモリコントローラからコマンドを受け取るためのデマルチプレクサレジスタ(「demux register」)と、プリント回路基板に搭載されたVMDにグループ化されたメモリチップを備える。いくつかの実施形態では、メモリチップをDRAMチップとすることができる。図4Aは、本発明のいくつかの実施形態にしたがう、回路基板412に配置された8個のDRAMチップ401−408、及びdemux register410から構成される単一のマルチコアデュアルインラインメモリモジュール400の等角図である。これらのDRAMチップ401〜408を1つ以上のDRAMチップからなるVMDにグループ化することができる。この例については、より詳細に後述する。
従来のDIMMと同様に、1つ以上のMCDIMMを回路基板に搭載して、メモリコントローラによって制御することができる。図4Bは、本発明のいくつかの実施形態にしたがう、回路基板424に搭載されたメモリ420及びメモリコントローラ422の等角図である。メモリ420は、DIMMスロット430〜433にそれぞれ挿入されたMCDIMM426−429から構成される。MCDIMM400は、メモリコントローラ422とメモリモジュール426−429のdemux registerとの間にインターフェース434を有する。インターフェース434は、メモリコントローラ422からメモリ420へとコマンド信号を送るバス、及び、メモリコントローラ422とメモリ420の間でデータ信号を伝送するデータバスを備える。このアーキテクチャでは、メモリコントローラ422によって送られるコマンドは、メモリ420のDRAMチップに一斉送信はされない。その代わり、メモリコントローラ420は、MCDIMM426〜429のdemux registerにコマンドを送る。MCDIMM426−429の各々は、demux registerがコマンドをVMDに直接送れるようにするコマンドバスを備える。
MCDIMMは、マルチコアプロセッサと互換性がある。たとえば、複数のアプリケーションを1つのマルチコアプロセッサで同時に実行することができ、この場合、各コアは1つのマルチスレッドアプリケーションを実行し、マルチコアプロセッサ内のメモリコントローラは1つのアプリケーションに対する要求だけを処理する。
図5Aは、本発明のいくつかの実施形態にしたがって構成されたMCDIMM500の全体的な略図である。MCDIMM500はn個のVMDを備える。ここで、nは、MCDIMM500内のVMDの数を表す整数である。VMDの各々は、図5Aに表されており、VMDによって示されている。ここで、下付き文字kは、1〜nの範囲の整数である。MCDIMM500は、VMDの各々が別個の組をなす信号線を介してdemux register502に接続されるように構成されている。demux register502の2つの異なる実施形態については、図5Bと図5Cを参照して後述する。たとえば、VMD、VMD、VMD、VMDk+1、VMDn−2、VMDn−1が、信号線の組504〜509を介してdemux register502に接続される。VMDをdemux register502に接続する信号線の組み合わされた組は、「コマンドバス」と呼ばれる。各VMDを、DRAMチップなどの1つ以上のメモリチップから構成することができる。メモリコントローラ(不図示)からMCDIMM500に送信されたコマンドは、「コマンドパス」と呼ばれる1組の信号線510を介してdemux register502に到達する。VMDの各々は、図5Aにおいて、両矢印511などの両矢印によって識別される別個のデータバスでメモリコントローラとデータをやりとりする。
図5Bは、本発明のいくつかの実施形態にしたがって構成された第1のdemux register525の略図である。demux register525は、レジスタ512とデマルチプレクサ514から構成される。demux register525は、メモリコントローラから、図5Aのコマンドパス510を介してコマンドを受け取る。これらのコマンドは時分割多重される。換言すれば、各コマンドは、持続時間が一定のタイムスロットでメモリコントローラからdemux register525に送られるビットストリームに符号化される。図5Bにおいて、時分割多重されたコマンドのタイムスロットは、一連の矩形515〜520によって表されている。図5Bに示されているコマンドの各々は、該コマンドを受け取ることが意図されている図5AのVMDのインデックスを含んでいる。それらのコマンドがdemux register525に送られる順番は、メモリコントローラによって決定される。したがって、それらのコマンドは、その順番で図5Bに現れている。実行されることになる特定の種類の動作(処理や演算)を識別する制御信号、バンクや行や列を識別するアドレス信号、及び、メモリコントローラによってコマンドを受け取るように割り当てられた特定のVMDを識別するVMDアドレスが、コマンドに埋め込まれている。たとえば、あるコマンドが特定のVMDに送られようとしているときには、メモリコントローラは、そのVMDを特定するVMDアドレスを含むコマンドを生成する。一般に、VMDアドレスは、logn個のビットからなるビット列である。
レジスタ512は、コマンドを受け取ってそれを一時的に格納するバッファである。デマルチプレクサ514は2つの入力を備える。矢印522、524によって示されているように、レジスタは、一方の入力にコマンドを送り、他方の入力にVMDアドレスを送る。デマルチプレクサ514は、VMDアドレスを使用して、該VMDアドレスによって特定されるVMDに通じているコマンドバスのうちの適切な信号線の組を選択する。図5Bにおいて、コマンドバスの信号線のn個の組のうちの6個の組が、それらの信号線の組504〜509に対応する矢印504−509によって示されており、かつ、図5Aに示す関連するVMDのインデックスでラベル付けされている。各コマンドは、次のコマンドが処理される前に、特定の時間間隔内でdemux register525によって別個に処理されることに注意されたい。
たとえば、図5A及び図5Bに関して、メモリコントローラがコマンドk+1 519をVMDに送る場合を考える。図5Aにおいて、コマンドk+1 519は、コマンドパス510に沿ってdemux register525へと送られる。図5Bに示すように、レジスタ512は、コマンドk+1 519を受け取ってそれを一時的に格納し、VMDアドレス及び該コマンドがデマルチプレクサ514に送られ、該デマルチプレクサは、次に、適切な信号線の組506を選択して、該コマンドk+1 519を図5AのVMDk+1に送る。コマンドk+1 519が送られた後、次のコマンド1 518が同様にして処理される。
図5Bに示すように、demux register525は、信号線の各組に関連付けられたカウンタをオプションとして備える。カウンタは、VMDのDRAMチップがキャッシュラインのREADまたはWRITEトランザクションに関連する長いバースト長をサポートできないときに必要になりうる。demux registerは、キャッシュラインをキャッシュラインセグメントに分割して、該コマンドを、各々が1つのキャッシュラインセグメントに対応する複数のコマンドに変換する。したがって、VMDに送られる各キャッシュラインセグメントは、カウンタによって送られる対応するコマンドの後にくる。たとえば、VMDの1つ以上のDRAMチップのバースト長を1つのキャッシュラインをカバーするのに十分な長さに設定できない場合には、カウンタは、READまたはWRITEなどの列レベルのコマンドを、各キャッシュラインセグメントに対する複数のREAD/WRITEコマンドに変換して、各キャッシュラインセグメントを、該DRAMチップに対して別個に読み出しまたは書き込みできるようにする。各カウンタは、分割されたキャッシュライン用に生成されたコマンドの数を追跡する(把握して記憶する)計数装置を備える。カウンタによって実行される変換は、メモリコントローラからのコマンド帯域幅を節約する。
図5Cは、本発明のいくつかの実施形態にしたがって構成された第2のdemux register527の略図である。demux register527は、0〜n−1で示されているn個のコマンドセレクタと1つのブロードキャストバス(broadcast bus。または同報通信バス)528を備えており、1つのコマンドセレクタが、図5Aに示すn個のVMDの各々に対して設けられている。図5Bを参照して上述したように、メモリコントローラは、時分割多重されたコマンド515〜520を、コマンドパス510を通じてdemux register527に送る。コマンドセレクタは、分岐529〜534を介してブロードキャストバス528に電子的に接続されており、各コマンドセレクタは、コマンドバスの1組の信号線を介してVMDの1つに接続されている。図5Cにおいて、コマンドバスの信号線のn個の組のうちの6個の組が、該信号線の組504〜509に対応する矢印504〜509によって示されており、かつ、図5Aに示す関連するVMDのインデックスでラベル付けされている。図5Cに示すように、各コマンドは、n個の全てのコマンドセレクタに一斉に送信される。各コマンドセレクタは、コマンドに埋め込まれたVMDアドレスを抽出して、該コマンドを対応するVMDに送るべきか、または、該コマンドは異なるVMDにアドレス指定されているかを判定するように構成されている。後者と判定された場合には、該コマンドは破棄される。したがって、n個の全てのコマンドセレクタに一斉送信される各コマンドについて、該コマンドは、コマンドセレクタのうちの1つによってのみ対応するVMDに送られる。たとえば、demux register527は、コマンドn-2 520を受け取って、それを、n個の全てのコマンドセレクタ0〜n−1に一斉に送信する。しかしながら、コマンドn-2 520は、VMDn−2のアドレスを含んでいるので、コマンドセレクタn−2は、該コマンドn-2 520を信号線の組508を介してVMDn−2に送り、他のコマンドセレクタは該コマンドn-2 520を破棄する。各コマンドは、次のコマンドが処理される前に、特定の時間間隔内でdemux register527によって別個に処理されることに留意されたい。
図5Dは、本発明のいくつかの実施形態にしたがって構成された例示的なコマンドセレクタn−2の略図である。他のn−1個のコマンドセレクタも同様に構成される。コマンドセレクタn−2は、ANDゲート530、レジスタ/カウンタ532、及び、ランダムアクセスメモリ(「DRAM」)タイミング制御534を備える。コマンドは、分岐533においてコマンドセレクタn−1に入力される。ANDゲート530は、各コマンドに埋め込まれたVMDアドレスを抽出して、システムクロック信号を受け取る。ANDゲート530は、抽出されたVMDアドレスが対応するVMDn−2のアドレスに一致するときに、レジスタ/カウンタ532に選択信号を送るように構成されている。ANDゲート530は、クロック信号を受け取って、レジスタ/カウンタがいつコマンドをラッチするか(またはしたか)を判定し、ANDゲート530を、立ち上がり及び/または立ち下がりクロックエッジ毎に該選択信号を送るように構成することができる。レジスタ/カウンタ532はバッファであり、選択信号をANDゲート530から受け取ったときに、コマンドを一時的に格納して、該コマンドを対応するVMDn−2に送る。レジスタ/カウンタ532はまた、図5Bを参照して上述したように、キャッシュライン及びコマンドの分割を実行するカウンタを備える。RAMタイミング制御534は、レジスタ/カウンタ532のカウンタ部分を制御する。
一般的に、ANDゲートは、全ての入力信号がビット「1」に対応しているときにビット「1」に対応する信号を出力し、入力信号のうちの少なくとも1つがビット「0」に対応しているときにビット「0」に対応する信号を出力する。ここで、ビット「1」、「0」は、それぞれ、信号の高電圧、低電圧を表すことができる。コマンドセレクタ0〜n−1のANDゲートは、いくつかの入力信号線上にインバータ(反転器)を備えることができる。インバータは、ビット「0」に関連付けられた信号をビット「1」に関連付けられた信号に変換し、その逆も同様である。ANDゲートは、対応するVMDを表すVMDアドレスを全てのビットが「1」ビットからなるビットストリームに変換するために、いくつかの入力信号線上にインバータを備える。この場合、ANDゲートは、ビット「1」に対応する選択信号をレジスタ/カウンタ532に出力する。たとえば、VMDn−2のVMDアドレスがビットストリーム11...1101である場合を想定する。ANDゲート530は、線538においてANDゲート530に入力される信号の電圧を反転するインバータ536を備える。したがって、図5Dに示すように、コマンド内に埋め込まれたVMDアドレスが該アドレス11...1101と一致するときには、該アドレスは、11...1111に変換され、ANDゲート530は、クロック信号と組み合わせて、ビット「1」を表す選択信号をレジスタ/カウンタ532へと出力し、該レジスタ/カウンタ532は該コマンドをラッチして該コマンドを信号線の組508上に送り出す。他のアドレスについては、ANDゲート530に入るビットストリームは少なくとも1つの「0」ビットを有し、ANDゲート530は、信号を出力しないか、ビット「0」に対応する低(レベル)信号を出力する。したがって、レジスタ/カウンタ532は、該コマンドをラッチして信号線の組508上に送り出すということをしない。
図6Aは、本発明のいくつかの実施形態にしたがって構成されたMCDIMM600の略図である。MCDIMM600は、VMDによって識別される4個のVMDとdemux register602を備えている。ここで、kは0〜3の範囲の整数である。VMDの各々は、2つのDRAMチップを有し、demux register602を、図5B〜図5Dを参照して上述したように構成して動作させることができる。MCDIMM600のコマンドバスは、VMDの各々のDRAMチップをdemux register602に接続する4個の組の信号線604〜607から構成されている。コマンドは、コマンドパス608を通ってメモリコントローラ(不図示)からdemux register602に送られる。logn(nは4)にしたがって、VMDを、2ビットのVMDアドレス00、01、10、11の1つに割り当てることができ、これらは、該コマンドを受け取ることになっているVMDを識別するために該コマンドに含められる。VMDの各々は、コマンドバスを通じて異なるコマンドを受け取り、他のVMDとは独立して、両矢印610などの両矢印で示されているように、各自のデータバスを介してデータを転送する。
図6A及び図6BのMCDIMM600の例では、1つのメモリ要求に対して2つのDRAMチップが関与する。DRAMチップの対の全く同様の影付き領域は、異なるコマンドに関連する異なる別個のメモリ要求を表している。各VMDは、コマンドバスを通じてコマンドを受け取り、各自のデータバスを用いて独立にデータを転送する。したがって、従来のDIMMよりもより少ないビットが活性化される(図3に関する説明参照)ことによってエネルギーが節約される。しかしながら、従来のDIMMよりもデータを配信するのに必要な時間は長くなりうる。なぜなら、データバスのサイズが、従来のDIMMにおけるデータバスのサイズよりも小さいからである。たとえば、データを、直列化された(または連続した)より小さなデータ部分に分割することができ、この場合、各部分は、VMDバスを介してメモリコントローラに別々に送られる。このように、データを直列化することによって、従来のDIMMを用いてデータを送るのに必要な時間量が長くなる。直列化により追加されるこの遅れ(待ち時間)の問題は、システム性能に悪影響を与える場合がある。
本発明の方法の実施形態
本発明の方法の実施形態を、MCDIMMの個々のVMDのエネルギー消費(量)を動的に変化させることに関連して説明する。メモリチップは、複数の異なる動作モードに入ることができる。たとえば、メモリチップは、あるメモリ要求に応答して活性化モードに入ることができる。そのメモリチップがそのメモリ要求をもはや処理していないときには、該メモリチップはスタンバイモードに入ることができる。このスタンバイモードでは、該メモリチップにはスタンバイエネルギーが供給され、このスタンバイエネルギーは、メモリ要求を能動的に処理するのに必要なエネルギーよりは小さいが、内部のメモリチップコンポーネントの動作を維持して該メモリチップが別のメモリ要求に迅速に応答できるようにするのには十分な大きさである。しかしながら、1つのメモリチャネル当たりに多数のメモリモジュールが存在するときには、スタンバイモードにあるメモリチップは、該メモリモジュールに送られる全エネルギーの大きな部分を消費する。
一時的に使用されていないメモリチップをエネルギー節約モードに移行させることによってスタンバイエネルギーを節約することができる。エネルギー節約モードにあるメモリチップを起動しなければならないが、これによって応答時間が長くなる。たとえば、パワーダウンモードは、いくつかの内部メモリチップコンポーネントをオフにすることによってエネルギーを節約するエネルギー節約モードであるが、このモードに関連するいくつかの性能限界がある。メモリチップがパワーダウンモードにある間は通常のメモリチップアクセスはできず、該メモリチップを起動しなければならない。このため、パワーダウンモードに入るのに要する時間及びパワーダウンモードから出るのに要する時間は、スタンバイモードに入るのに要する時間及びスタンバイモードから出るのに要する時間よりも長い。その結果、パワーダウンモードを用いることによって典型的にはエネルギーは節約されるが、メモリシステムの性能は低くなってしまう。メモリチップを起動するのに必要な時間を短くするために、多くのメモリチップを複数のパワーダウンモードを有するように構成することもできる。各々のパワーダウンモードは、エネルギー節約のそれぞれ異なる増分レベルを提供する。しかしながら、エネルギー節約における段階的増加の各段階は、メモリチップを起動するのに必要なより長い時間量に対応する。
本発明の方法の実施形態を、マルチコアプロセッサで動作している1つ以上のアプリケーションに対して透過的なものとすることができるが、これは、ある動作モードを選択する決定をハードウェアによって完全に行うことができるからである。本発明の方法は、また、実行中に、コンパイラーまたは1つ以上のアプリケーションによって該決定を変更するというフレキシビリティも有する。図7は、本発明のいくつかの実施形態にしたがう、インターフェース704を介してメモリコントローラ702に電子的に接続されたMCDIMM700を示す。MCDIMM700は、図5Aを参照して上述したように構成されたdemux register706及びn個のVMDを備える。図7に示すように、メモリコントローラ702は、内部ロジック708及び内部記憶装置710を有するように構成される。各VMDの使用に関する情報(使用量や使用頻度などの情報)を内部記憶装置710に格納することができ、本発明の方法を、メモリコントローラの内部ロジック708によって完全に実行することができる。
方法の実施形態は、マルチコアプロセッサ上で動作している1つ以上のアプリケーションの実行中にメモリモジュールの性能及び/またはエネルギー効率を最適化することを含む。コンピュータシステムのオペレータ、アプリケーションのうちの1つ以上、または、オペレーティングシステムは、ある基準を提供する指標を選択する。この場合、該基準によって、メモリモジュールの性能及び/またはエネルギー効率が最適化される。該指標を最小の全実行時間(total execution time:TET)、最小の全エネルギー消費量(total energy consumption:TEC)、最小のエネルギー遅延積(energy-delay product:EDP)、または、任意の他の適切な基準(これらの基準によって、メモリモジュールの性能及び/またはエネルギー効率を最適化することができる)。該指標を1つ以上のアプリケーションの最小のTETに設定することによって、それらのアプリケーションは、メモリモジュールによって提供される記憶容量に帯域幅のほぼ全てでもってアクセスすることが可能になる。換言すれば、メモリチップがメモリ要求を能動的に処理していないときには、該メモリチップはパワーダウンモードに入るのではなく、該メモリチップはスタンバイモードに入って、該メモリチップが次のメモリ要求に迅速に応答できるようにする。したがって、TETは性能指標である。他方、該指標をTECに設定することによって、メモリチップがエネルギー節約モードに移行して、各メモリ要求に対してすぐに利用可能なメモリチップの数が少なくなる。これによって、帯域幅が減少し、及び、メモリの応答時間が遅くなるが、該指標をTETに設定する場合に比べてエネルギーが節約される。該指標を最小のEDPに設定することによって、TETとTECの間の折衷点が得られる。EDP指標は、エネルギー(またはメモリ要求に関連するエネルギー)と、メモリ要求に関連する遅れとの積として定義される。所与の性能レベルにおける最小のエネルギーを得るために、または、同じエネルギーでより高い性能を得るために、EDPを用いることができる。
ある指標が選択されると、1つ以上のアプリケーションの実行中における各VMDの使用に関する情報が決定される。使用情報は、収集されて、メモリコントローラ702に格納される。該使用情報は、次の(1)〜(5)のうちの1つ以上を含むことができる。(1)メモリコントローラが、ある時間期間にわたって十分な数のメモリ要求を受け取るときの各VMD当たりのメモリ要求の回数(または頻度)の記録、(2)メモリ要求の数とある時間期間にわたって実行された命令の数との比(または、ある時間期間におけるメモリ要求の数と該ある時間期間にわたって実行された命令の数との比)、(3)他の動作モードではなくある1つの動作モードを選択すること(または選択したこと)に割り当てられたペナルティ、(4)コンパイラーが、それが処理する1つ以上のアプリケーションに関連する各VMD当たりのメモリアクセスの回数(または頻度)に関する情報をメモリコントローラ702に提供できること、(5)実行されている1つ以上のアプリケーションが、各VMD当たりのメモリアクセスの回数(または頻度)の履歴をメモリコントローラ702に提供できること。
メモリコントローラは、各VMDに関する使用情報を1つ以上の閾値と比較し、あるVMDに適切なコマンドを送ることによって、該VMDを対応する動作モードに移行させる。たとえば、あるVMDに関連する使用情報がある閾値より小さいときには、メモリコントローラは、該VMDを対応するパワーダウンモードに移行させ、該VMDに関連する使用情報が該閾値よりも大きいときには、該メモリコントローラは、該VMDをスタンバイモードに移行させる。これらの閾値は、メモリモジュールの使用を最適化するために選択された指標にしたがって選び出される。たとえば、本発明のいくつかの実施形態は、指標がTETに設定されているときに、エネルギー節約モードをバイパスできること、または、それらの閾値を、エネルギー節約モードに入るVMDがほとんど無いように小さい値に設定できることを含んでいる。他方、該指標をTECまたはEDPに設定することによって、それらの閾値は、TETに関連する閾値よりも大きくなり、これによって、多くのVMDをエネルギー節約モードに移行させることができる。
本発明のいくつかの実施形態はまた、必要なメモリの量または1つ以上のアプリケーションのメモリアクセスパターンに関する特性情報をメモリコントローラに提供するマルチコアプロセッサまたはコンパイラーで動作する該1つ以上のアプリケーションを含む。該特性情報及び該指標は、オペレーティングシステムや、実際のコンピュータのように1つ以上のアプリケーションを実行するソフトウェアによって実施されるコンピュータである仮想マシンなどのランタイムシステムを介してメモリコントローラに送られる。ランタイムシステムは、メモリコントローラのために指標及び特性情報を解釈して、該メモリコントローラに、該アプリケーション用の適切な動作モードを選択するように指示することができる。たとえば、システムオペレータが、マルチコアプロセッサの複数のコアで同時に動作している複数のアプリケーションについてEDP指標を選択する場合であって、アプリケーションの作者またはコンパイラーによって提供された特性情報によって、それらのアプリケーションのほとんどが頻繁にメモリアクセスを行うアプリケーションとして識別されている場合を想定する。結果として、ランタイムシステムは、メモリコントローラに、メモリアクセスの数に関する統計情報を収集することなく、パワーダウンモードを使用しないようにMCDIMMを構成するように指示することができる。また、動作(または実行)中のアプリケーションをスケジューリングをし、モニタ(監視)し、サポートするランタイムシステムのハイパーバイザーまたは他の要素は、メモリコントローラにMCDIMMを構成するように指示することができる。
図8Aは、本発明のいくつかの実施形態にしたがう、MCDIMM700のVMDの各々についての使用情報を示す棒グラフ800である。グラフ800の各棒は、MCDIMM700のあるVMDがある時間期間にわたってアクセスされた頻度すなわち回数を表すことができる。グラフ800は、閾値T、T、Tmaxをそれぞれ表す3つの破線801〜803を含んでいる。それらの閾値はまた、3つの異なるパワーダウンモードPDM、PDM、PDMmaxに関連している。PDMmaxは、最大数の内部メモリチップコンポーネントをオフにする(または電力が供給されないようにする)ことによって、PDM及びPDMよりも電力を節約するが、起動のための遅延時間は最も長い。PDMは、最も少ない数の内部メモリチップコンポーネントをオフにするためにエネルギー節約量は最も少ないが、起動のための遅延時間は最も短い。PDMは、PDMmaxとPDMの間のエネルギー節約量を提供し、起動のための遅延時間も中程度である。
図8Aに示す閾値T801、T802、Tmax 803は、指標をTECまたはEDPに設定することによって決定された閾値を表すことができる。これらの閾値は、許容可能な性能とエネルギー効率との間のバランスを表す。たとえば、棒グラフ800は、VMD、VMD、VMD、VMDk+1、VMDk−2が全て、閾値Tを超える使用情報を有することを明らかにしている。換言すれば、メモリコントローラは、1つ以上のアプリケーションが動作している間しばしばこれらのVMDを使用する。したがって、それらのVMDがメモリ要求を能動的に処理していないときには、メモリコントローラは、それらのVMDをエネルギー節約モードの1つに移行させるのではなく、それらのVMDをスタンバイモードに移行させる。他方、図8Bに示すように、VMDに関連する使用情報はTmaxよりも小さく、VMDn−3に関連する使用情報はTmaxよりも大きくかつTよりも小さい。また、VMDn−1に関連する使用情報はTよりも大きくかつTよりも小さい。したがって、エネルギーを節約するために、メモリコントローラは、VMD、VMDn−3、及びVMDn−1がメモリ要求に応答するために起動されるまで、VMDをPDMmaxに、VMDn−3をPDMに、及び、VMDn−1をPDMにそれぞれ移行させておく。
図9Aは、図8Aに示すMCDIMM700のVMDの各々についての使用情報を表す棒グラフ800であるが、指標をTETに設定することにともなって閾値が変更されている。VMDの各々に関連する使用情報を表す棒は、図8Aに示されている棒と変わっていないことに留意されたい。しかしながら、指標がTETに変更されているので、図8Aにおける閾値T、T、Tmaxは、図9Aにおいて破線901、902、903でそれぞれ表されている閾値T'、T'、T'maxに変更されている。この特定の例では、性能はエネルギー効率にまさる。したがって、図9Aは、1つのVMDだけがある閾値を下回っていることを明らかにしている。具体的には、VMDに関連する使用情報は、閾値T'よりも大きく閾値T'よりも小さい。メモリコントローラは、VMDがメモリ要求のために起動されるまでのある時間期間、VMDをパワーダウンモードPDMに移行させておく。メモリコントローラは、残りのVMDがメモリ要求を能動的に処理していないときには、それらのVMDをスタンバイモードに移行させる。
いくつかの実施形態では、メモリコントローラは、使用すべき動作モードを選択することができる。いくつかの実施形態では、メモリが頻繁に使用されているか、または、性能がより重要なときには、メモリコントローラはエネルギー節約モードを使用しない。
方法の実施形態は動的である。なぜなら、使用情報をメモリコントローラによって定期的に収集することができ、VMDの各々に関連する使用情報を、1つ以上のアプリケーションが動作しているときに更新できるからである。この結果、該1つ以上のアプリケーションが動作している間に、メモリアクセスを禁止することなく、現在の使用情報に基づいて、VMDを異なる動作モードに定期的に切り替えることができる。さらに、いくつかの実施形態では、1つ以上のアプリケーションが動作しているときに、コンピュータシステムのオペレータによって指標を変更することもできる。
図10は、本発明のいくつかの実施形態にしたがう、メモリモジュールのVMDをいくつかの動作モードに動的に移行させるための方法の制御フロー図である。ステップ1001において、動作中の1つ以上のアプリケーションに関連するメモリ性能及び/またはエネルギー消費を最適化するために、指標TETやTECやEDPなどの指標が選択される。上述したように、コンピュータシステムのオペレータ、または、1つ以上のそれらのアプリケーション、または、オペレーティングシステムによって指標を選択することができる。ステップ1002において、1つ以上のそれらのアプリケーションが実行される。ステップ1003において、オペレーティングシステムは、該1つ以上のアプリケーションを処理するために1つ以上のコアを選択する。ステップ1004において、オペレーティングシステムは、該1つ以上のアプリケーションのメモリ要件に基づいて、MCDIMMの1つ以上のVMDを選択する。ステップ1005において、ランタイムシステムは、該指標、及び/または、アプリケーション自体によって提供された特性情報にしたがって、メモリコントローラをステップ1006に進めて、ステップ1006〜1009で実行される該方法のエネルギー節約部分に移行させることができる。そうでない場合には、ランタイムシステムは、該方法のエネルギー節約部分をスキップする(飛ばす)ようにメモリコントローラに指示することができる。たとえば、該1つ以上のアプリケーションによって提供された特性情報が、それらのアプリケーションを、頻繁にメモリアクセスを行うアプリケーションとして特定しているときには、ランタイムシステムは、メモリコントローラに対して、ステップ1006〜1009で実行される該方法のエネルギー節約部分をスキップするように指示することができる。ステップ1006のforループにおいて、ステップ1007〜1008は、メモリモジュールのVMDの各々について実行される。ステップ1007において、図7を参照して上述したように、メモリコントローラは、ある時間期間にわたってVMDの使用情報を収集して格納する。ステップ1008において、図11の制御フロー図に関して後述するように、メモリコントローラは、指標及び使用情報に基づいてVMDをある動作モードに移行させる。たとえば、VMDがメモリ要求を能動的に処理していないときには、図8〜図9を参照して上述したように、メモリコントローラは、スタンバイモードまたは多くのエネルギー節約モードのうちの1つにVMDを移行させることができる。ステップ1009において、全てのVMDがある動作モードに入っている場合にはステップ1010に進み、そうでなければ、別のVMDに対してステップ1007及び1008が繰り返される。ステップ1010において、該1つ以上のアプリケーションの実行(動作)が終了していないときには、本発明のいくつかの実施形態は、オプションとしてステップ1011を含むことができ、該1つ以上のアプリケーションの実行(動作)が終了しているときには、ステップ1012に進んで、異なる組をなす1つ以上のアプリケーション、または、続いて実行される同じ組をなす1つ以上のアプリケーションについてステップ1001〜1009が繰り返される。ステップ1011において、該1つ以上のアプリケーションが依然として実行中である場合には、コンピュータシステムのオペレータは指標を変更することができる。たとえば、コンピュータシステムのオペレータは、最初にステップ1001において指標をTETに設定することができ、その後、該1つ以上のアプリケーションが実行されているときに該指標をTECに変更することができる。
図11は、本発明のいくつかの実施形態にしたがう、VMDをパワーダウンモードに動的に移行させるための方法の制御フロー図である。この実施形態では、図8〜図9を参照して上述したように、メモリチップは、ステップ1103、1105、及び1107に記載されている3つのエネルギー節約パワーダウンモードを有することが想定されている。ステップ1101において、3つのパワーダウンモードに対応する閾値が、図8〜図9を参照して上述したように、図10のステップ1001で選択された指標に基づいて決定される。メモリコントローラは、図10のステップ1006で収集されて格納された使用情報を使用して、ステップ1102〜1107において1つまたは3つのパワーダウンモードを選択する。これらのパワーダウンモードは、図8Aを参照して上述したPDM、PDM、PDMmaxである。ステップ1102において、使用情報が閾値Tmaxよりも小さいときにはステップ1103に進み、そうでないときにはステップ1104に進む。ステップ1103において、メモリコントローラは、VMDをPDMmaxに移行させる。ステップ1104において、使用情報が閾値Tより小さいときにはステップ1105に進み、そうでないときにはステップ1106に進む。ステップ1105において、メモリコントローラは、VMDをPDMに移行させる。ステップ1106において、使用情報が閾値Tより小さいときにはステップ1107に進み、そうでないときにはステップ1108に進む。ステップ1107において、メモリコントローラは、VMDをPDMに移行させる。ステップ1108において、メモリコントローラは、VMDをスタンバイモードに移行させる。他の実施形態では、メモリチップを、1つ、2つ、または4つ以上の異なるパワーダウンモードを有するように構成することができる。
以上の説明は、説明のためのものであり、本発明を十分に理解できるようにするために特定の用語を使用した。しかしながら、本発明を実施するために特定の細部は必要ではないことが当業者には明らかであろう。本発明の特定の実施形態の上記説明は、例示及び説明のために提示されたものである。それらは、本発明を網羅することも、本発明を開示した形態そのものに限定することも意図していない。上記の教示に照らして多くの改良及び変形が可能であることは明らかである。それらの実施形態は、本発明の原理及びその実用上の適用を最良に説明し、これによって、当業者が、意図する特定の用途に適するように本発明及び種々の実施形態を様々に改変して最良に利用できるようにするために、図示し説明されている。本発明の範囲は、添付の特許請求の範囲及びそれの等価物によって画定されることが意図されている。

Claims (15)

  1. メモリモジュールの仮想記憶装置の各々の動作モードを決定するための方法であって、
    1つ以上のアプリケーション用のある基準を提供する指標を選択するステップ(1001)であって、該基準によって、マルチコアプロセッサにおける前記1つ以上のアプリケーションの実行中に、前記メモリモジュールの性能とエネルギー効率の両方または一方が最適化される、ステップと、
    前記1つ以上のアプリケーション用に複数の仮想記憶装置を選択するステップ(1004)であって、該メモリモジュールは前記選択された複数の仮想記憶装置を有する、ステップと、
    前記メモリモジュールの性能とエネルギー効率の両方または一方を最適化するために、前記選択された複数の仮想記憶装置の各々について(1006)、
    ある時間期間にわたって前記仮想記憶装置に関連する使用情報を収集するステップ(1007)と、
    前記指標及び前記使用情報に基づいて前記仮想記憶装置の動作モードを決定するステップ(1008)と、
    前記仮想記憶装置を前記動作モードに移行させるステップ(1103、1105、1107、1108)
    を実行するステップ
    を含む方法。
  2. 前記指標は、最小の全実行時間、最小の全エネルギー消費量、最小のエネルギー遅延積、または、他の適切な基準をさらに含み、これらによって、前記メモリモジュールの性能とエネルギー効率の両方または一方を最適化することが可能である、請求項1の方法。
  3. 前記収集するステップ、前記決定するステップ、及び前記移行させるステップが、前記選択された複数の仮想記憶装置の全てがそれぞれの動作モードに移行するまで繰り返される(1009)、請求項1または2の方法。
  4. 前記指標、及び、必要とされるメモリの量または前記1つ以上のアプリケーションのメモリアクセスパターンに関する特性情報を受け取り、前記指標及び前記特性情報を解釈し、メモリコントローラに対して、前記選択された複数の仮想記憶装置の各々を適切な動作モードに移行させるように指示するように構成されたランタイムシステム
    をさらに含む、請求項1〜3のいずれかの方法。
  5. 前記使用情報が、
    メモリコントローラが、前記時間期間にわたって十分な数のメモリ要求を受け取っているときのメモリ要求の数と、
    前記メモリ要求の数と、前記時間期間にわたって実行された命令の数との比と、
    別の動作モードではなくある1つの動作モードを選択することに割り当てられたペナルティと、
    前記メモリコントローラに対してコンパイラーによって提供されたアプリケーションに関連するメモリアクセスの数と、
    実行中のアプリケーションによって決定されて前記メモリコントローラに送られたメモリアクセスの数
    のうちの1つ以上を決定するステップをさらに含む、請求項1〜4のいずれかの方法。
  6. 指標を選択する前記ステップが、
    前記指標を選択するコンピュータシステムのオペレータと、
    前記指標を選択するようにプログラムされた前記1つ以上のアプリケーションと、
    前記指標を選択するオペレーティングシステムと、
    実行中のアプリケーションをスケジューリングし、モニタし、及び、サポートするランタイムシステムのハイパーバイザーまたは他の要素と
    のうちの1つをさらに含む、請求項1〜5のいずれかの方法。
  7. 使用情報を収集する前記ステップが、前記時間期間にわたって前記仮想記憶装置がアクセスされる回数をメモリコントローラ(702)によって格納するステップをさらに含む、請求項1〜6のいずれかの方法。
  8. 仮想記憶装置の動作モードを決定する前記ステップがさらに、
    前記指標に基づいて少なくとも1つの閾値を決定するステップ(1101)と、
    前記使用情報を前記少なくとも1つの閾値と比較するステップ(1102、1104、1106)と、
    前記比較の結果に基づいて、前記仮想記憶装置が移行する動作モードを決定するステップ
    を含み、
    前記使用情報が前記少なくとも1つの閾値のうちの最大の閾値(T)よりも大きい場合には、前記仮想記憶装置は使用されていないときにスタンバイモードに移行させられ(1108)、前記使用情報が前記最大の閾値(T)よりも大きくない場合には、前記仮想記憶装置はエネルギー節約モードに移行させられる(1103、1105、1107)ことからなる、請求項1〜7のいずれかの方法。
  9. 前記エネルギー節約モードが少なくとも1つのパワーダウンモードをさらに含み、該少なくとも1つのパワーダウンモードの各々は、前記少なくとも1つの閾値の各々に関連付けられている、請求項8の方法。
  10. 前記少なくとも1つの閾値が、第1の閾値と、該第1の閾値よりも大きな第2の閾値とを少なくとも含み、前記使用情報が、前記第1の閾値よりも大きくかつ前記第2の閾値よりも小さいときには、前記仮想記憶装置は、前記第2の閾値に関連付けられたパワーダウンモードに移行させられる、請求項9の方法。
  11. 前記動作モードがさらに、前記仮想記憶装置がメモリ要求を処理しておらず、かつ、前記メモリモジュールの性能がエネルギーを節約することよりも優先されるときのスタンバイモードを含む、請求項1〜7のいずれかの方法。
  12. 前記複数の仮想記憶装置が、前記1つ以上のアプリケーションのメモリ要件に基づいて選択される、請求項1〜11のいずれかの方法。
  13. 前記1つ以上のアプリケーションの実行中に前記指標を変更するステップ(1011)をさらに含む、請求項1〜12のいずれかの方法。
  14. 前記少なくとも1つの閾値は、前記メモリモジュールの許容可能な性能とエネルギー効率との間のバランスを表す、請求項8〜10のいずれかの方法。
  15. 前記最小の全実行時間に対する前記少なくとも1つの閾値が、前記最小の全エネルギー消費量または前記最小のエネルギー遅延積に対する前記少なくとも1つの閾値よりも小さい、請求項2を含む請求項8の方法。
JP2011522943A 2008-08-13 2008-08-13 マルチコアメモリモジュール内のパワーダウンモードの動的利用 Expired - Fee Related JP5400886B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2008/009735 WO2010019119A1 (en) 2008-08-13 2008-08-13 Dynamic utilization of power-down modes in multi-core memory modules

Publications (2)

Publication Number Publication Date
JP2011530760A JP2011530760A (ja) 2011-12-22
JP5400886B2 true JP5400886B2 (ja) 2014-01-29

Family

ID=41669098

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011522943A Expired - Fee Related JP5400886B2 (ja) 2008-08-13 2008-08-13 マルチコアメモリモジュール内のパワーダウンモードの動的利用

Country Status (6)

Country Link
US (1) US8812886B2 (ja)
EP (1) EP2313830B1 (ja)
JP (1) JP5400886B2 (ja)
KR (1) KR101474597B1 (ja)
CN (1) CN102187323B (ja)
WO (1) WO2010019119A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101132797B1 (ko) * 2010-03-30 2012-04-02 주식회사 하이닉스반도체 모듈제어회로를 포함하는 반도체모듈 및 반도체모듈의 제어방법
WO2011154020A1 (de) * 2010-06-09 2011-12-15 Siemens Aktiengesellschaft Rechenvorrichtung mit koordination des zugriffs auf einen internen speicher und betriebsverfahren
US8634302B2 (en) 2010-07-30 2014-01-21 Alcatel Lucent Apparatus for multi-cell support in a network
US8737417B2 (en) 2010-11-12 2014-05-27 Alcatel Lucent Lock-less and zero copy messaging scheme for telecommunication network applications
US8730790B2 (en) 2010-11-19 2014-05-20 Alcatel Lucent Method and system for cell recovery in telecommunication networks
US8861434B2 (en) 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US9357482B2 (en) * 2011-07-13 2016-05-31 Alcatel Lucent Method and system for dynamic power control for base stations
JP5699847B2 (ja) * 2011-08-08 2015-04-15 富士通株式会社 制御装置及び方法
TWI493563B (zh) * 2012-01-06 2015-07-21 Acer Inc 記憶體管理方法及應用該方法之電子裝置
TWI489444B (zh) * 2012-07-17 2015-06-21 Etron Technology Inc 應用於嵌入式顯示埠的動態隨機存取記憶體
US8996902B2 (en) 2012-10-23 2015-03-31 Qualcomm Incorporated Modal workload scheduling in a heterogeneous multi-processor system on a chip
US20140189328A1 (en) * 2012-12-27 2014-07-03 Tomer WEINER Power reduction by using on-demand reservation station size
US20140337650A1 (en) * 2013-05-09 2014-11-13 Lsi Corporation System and Method for Power Management in a Multiple-Initiator Storage System
KR101489870B1 (ko) 2013-08-19 2015-02-06 성균관대학교산학협력단 가상화 장치 및 그 메모리 관리 방법
KR102218735B1 (ko) 2014-01-21 2021-02-23 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 소거 방법
US10108253B2 (en) 2014-01-30 2018-10-23 Hewlett Packard Enterprise Development Lp Multiple compute nodes
US10504578B2 (en) 2015-10-25 2019-12-10 Hewlett Packard Enterprise Development Lp Volatile memory device with automatic lower power state
US10198216B2 (en) * 2016-05-28 2019-02-05 Advanced Micro Devices, Inc. Low power memory throttling
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
US10613612B2 (en) 2017-03-16 2020-04-07 Qualcomm Incorporated Power reduction via memory efficiency compensation
US20190188165A1 (en) 2019-02-22 2019-06-20 Intel Corporation Extended mode (xm) bus mode change, configuration register accesses and broadcast / multi-cast transactions to devices on a xm bus
US11500555B2 (en) * 2020-09-04 2022-11-15 Micron Technology, Inc. Volatile memory to non-volatile memory interface for power management
KR20230067755A (ko) * 2021-11-08 2023-05-17 주식회사 시스기어 가상머신의 메모리관리장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3758437B2 (ja) * 1999-12-16 2006-03-22 コニカミノルタビジネステクノロジーズ株式会社 Dma制御装置
GB0226776D0 (en) * 2002-11-18 2002-12-24 Imec Inter Uni Micro Electr Cost-aware design-time/run-time memory management
US7197652B2 (en) * 2003-12-22 2007-03-27 International Business Machines Corporation Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring
US7216196B2 (en) * 2003-12-29 2007-05-08 Micron Technology, Inc. Memory hub and method for memory system performance monitoring
JP2005216053A (ja) * 2004-01-30 2005-08-11 Matsushita Electric Ind Co Ltd 最適メモリ配置演算装置及び最適メモリ配置方法
US7590796B2 (en) * 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
WO2007095080A2 (en) 2006-02-09 2007-08-23 Metaram, Inc. Memory circuit system and method
CN102177551B (zh) * 2008-08-08 2015-05-20 惠普开发有限公司 与标准存储器模块管脚兼容的存储器模块中的独立可控制和可重新配置的虚拟存储器设备

Also Published As

Publication number Publication date
EP2313830A1 (en) 2011-04-27
EP2313830A4 (en) 2012-02-08
CN102187323A (zh) 2011-09-14
US20110138387A1 (en) 2011-06-09
US8812886B2 (en) 2014-08-19
KR20110050514A (ko) 2011-05-13
JP2011530760A (ja) 2011-12-22
KR101474597B1 (ko) 2014-12-18
EP2313830B1 (en) 2013-10-02
CN102187323B (zh) 2016-03-16
WO2010019119A1 (en) 2010-02-18

Similar Documents

Publication Publication Date Title
JP5400886B2 (ja) マルチコアメモリモジュール内のパワーダウンモードの動的利用
US11971773B2 (en) Discrete power control of components within a computer system
JP5231642B2 (ja) メモリモジュール内の独立制御式仮想メモリ装置
EP2313890B1 (en) Independently controllable and reconfigurable virtual memory devices in memory modules that are pin-compatible with standard memory modules
EP3433752B1 (en) Self refresh state machine mop array
KR100806284B1 (ko) 동적 전압 스케일링을 적용한 고효율 프로세서
US7209404B2 (en) Low power memory sub-system architecture
US11029746B2 (en) Dynamic power management network for memory devices
US10825486B2 (en) High performance method for reduction of memory power consumption employing RAM retention mode control with low latency and maximum granularity
JP2023508660A (ja) ダブルデータレートメモリトレーニングの削減によるメモリコンテキスト復元、システムオンチップのブート時間の短縮
US8218391B2 (en) Power control of an integrated circuit memory
Zhang et al. Enabling efficient fine-grained DRAM activations with interleaved I/O
TW202318181A (zh) 記憶體交易之路由技術

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130425

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130819

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131025

R150 Certificate of patent or registration of utility model

Ref document number: 5400886

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees