(57)【要約】本発明の様々な実施形態は、マルチコアメモリモジュールに向けられたものである。一実施形態において、メモリモジュール(500)は、メモリチップと、該メモリチップの各々及びメモリコントローラに電気的に接続されたデマルチプレクサレジスタ(502)を備える。該メモリコントローラは、１つか又は複数の前記メモリチップを、性能及び／又はエネルギー効率のニーズの変化に従って、少なくとも１つの仮想メモリデバイスにグループ化する。前記デマルチプレクサレジスタ(502)は、該仮想メモリデバイスのうちの１つを識別するコマンドを受け取って、該識別された仮想メモリデバイスの前記メモリチップに該コマンドを送るよう構成される。ある実施形態において、前記メモリチップは、ダイナミックランダムアクセスメモリチップとすることができる。
2011530734.tif 000002
【特許請求の範囲】
【請求項１】
メモリチップと、
前記メモリチップの各々及びメモリコントローラに電気的に接続されたデマルチプレクサレジスタ（502）
とを備えたメモリモジュール（500）であって、
前記メモリコントローラが、１つか又は複数の前記メモリチップを、性能及び／又はエネルギー効率のニーズの変化に従って、少なくとも１つの仮想メモリデバイスにグループ化し、及び、前記デマルチプレクサレジスタが、前記仮想メモリデバイスのうちの１つを識別するコマンドを受け取って、該識別された仮想メモリデバイスの前記メモリチップに対して該コマンドを送るよう構成されていることからなる、メモリモジュール。
【請求項２】
前記メモリコントローラが、前記１つか又は複数のメモリチップを、オペレーティングシステムか、アプリケーションか、又はコンピュータシステムオペレータによって提供される命令に従って、前記少なくとも１つの仮想メモリデバイスにグループ化する、請求項１に記載のメモリモジュール。
【請求項３】
前記メモリチップが、ダイナミックランダムアクセスメモリチップ（401〜408）を更に含むことからなる、請求項１に記載のメモリモジュール。
【請求項４】
前記メモリコントローラから前記デマルチプレクサレジスタへと時分割多重化手法において前記コマンドが送られて、それにより、各コマンドが、前記デマルチプレクサレジスタに到来して、ある固定期間の時間区間内において、該コマンド内の識別された前記仮想メモリデバイスに送られるようにする（521〜5524）ことからなる、請求項１に記載のメモリモジュール。
【請求項５】
前記メモリコントローラが、１つか又は複数の前記メモリチップを、性能及び／又はエネルギー効率のニーズの変化に従って、少なくとも１つの仮想メモリデバイスにグループ化することは、前記メモリコントローラが、前記メモリコントローラから前記デマルチプレクサレジスタに送られるコンフィギュレーションコマンドを生成することを更に含むことからなる、請求項１に記載のメモリモジュール。
【請求項６】
前記コンフィギュレーションコマンドが、前記少なくとも１つの仮想メモリデバイスを、前記メモリモジュールにおける１つか又は複数の異なるメモリチップで再構成するよう前記デマルチプレクサレジスタに指示する命令を更に含むことからなる、請求項５に記載のメモリモジュール。
【請求項７】
前記デマルチプレクサレジスタが、
少なくとも１つのコマンドセレクタであって、該コマンドセレクタの各々が、前記メモリチップのうちの１つに電気的に接続されていることからなる、少なくとも１つのコマンドセレクタと、
前記コマンドを前記少なくとも１つのコマンドセレクタに対してブロードキャストするよう構成されたブロードキャストバス（532）
とを更に含み、
前記コマンドセレクタの各々が、前記コマンド内に組み込まれたメモリアドレスを抽出するよう構成されており、及び、該アドレスが、前記接続されたメモリチップのアドレスに一致する時には、前記接続されたメモリチップに該コマンドが転送され、一致しない時には、前記コマンドセレクタは該コマンドを破棄することからなる、請求項１に記載のメモリモジュール。
【請求項８】
前記コマンドセレクタが、
前記コマンドから前記メモリチップのアドレスを抽出して、該アドレスが、前記接続されたメモリチップのアドレスに一致する時には選択信号を生成するよう構成されたＡＮＤゲート（544）と、
前記コマンドを受け取って、前記ＡＮＤゲートが選択信号を提供する時には前記接続されたメモリチップに伝達するように構成されたレジスタ／カウンタ（546）であって、前記ＡＮＤゲートが選択信号を提供しない時には該レジスタ／カウンタは、該コマンドを破棄することからなる、レジスタ／カウンタと、
キャッシュライン及びコマンドをより小さなキャッシュラインセグメントへとパーティションで分割することを制御するＲＡＭタイミングコントロール（548）
とを更に含むことからなる、請求項６に記載のメモリモジュール。
【請求項９】
前記メモリチップの各々に電気的に接続されている前記デマルチプレクサレジスタ（502）が、前記デマルチプレクサレジスタと前記メモリチップとの間に配置されたコマンドバスを更に含み、
前記コマンドバスは、前記メモリチップの各々を前記デマルチプレクサレジスタ（502）に前記接続する信号線（504〜511）の個別セットを含むことからなる、請求項１に記載のメモリモジュール。
【請求項１０】
前記メモリモジュールは、ＤＩＭＭ標準とピン互換となるように構成されることからなる、請求項１に記載のメモリモジュール。
【請求項１１】
メモリモジュールを制御するための方法であって、
請求項１に従って構成された前記メモリモジュールを提供し、
少なくとも１つのメモリチップを含む少なくとも１つの仮想メモリデバイスを構成し（901）、
前記メモリコントローラから前記メモリモジュールの前記デマルチプレクサレジスタにコマンドを送り（904）、該コマンドは、前記少なくとも１つの仮想メモリデバイスの前記メモリチップを識別し、
前記デマルチプレクサレジスタから、前記コマンド内において識別された前記少なくとも１つの仮想メモリデバイスの前記少なくとも１つのメモリチップに前記コマンドを送り（906）、及び、
システム性能及び／又はエネルギー効率のニーズの変化に基づいて、前記少なくとも１つの仮想メモリデバイスを再構成する（908）
ことを含むことからなる、方法。
【請求項１２】
前記少なくとも１つの仮想メモリデバイスのアドレスを含めるために前記コマンドをメモリコントローラにおいて準備すること（903）を更に含む、請求項１１に記載の方法。
【請求項１３】
前記少なくとも１つの仮想メモリデバイスを構成することが、
アプリケーションの実行時間中に、仮想メモリデバイス当りに必要とされるメモリチップの数を決定することと、
起動中に仮想メモリデバイス当りに必要とされるメモリチップの数を決定することと、
コンピュータシステムオペレータによって仮想メモリデバイス当りに必要とされるメモリチップの数を決定すること
とのうちの１つを更に含むことからなる、請求項１１に記載の方法。
【請求項１４】
前記少なくとも１つの仮想メモリデバイスを再構成することが、前記少なくとも１つの仮想メモリデバイス内に既に格納されたデータを、前記少なくとも１つの仮想メモリデバイスを再構成することの前に一時的に格納して、次いで、該データを再構成された前記少なくとも１つの仮想メモリデバイス内に格納することを更に含むことからなる、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリモジュールに向けられたものであり、及び、特に、１つか又は複数のメモリチップを含む個々の仮想メモリデバイスの独立制御を可能にするよう構成されたメモリモジュールに向けられたものである。
【背景技術】
【０００２】
現代のコンピュータシステムにおいて、メモリ容量及び帯域幅に対する要求が、高まり続けている。マイクロプロセッサの最近の性能の尺度（スケーリング）は、チップ当りのコア数の増加に依存しており、マルチコア及び多数コアチップマルチプロセッサ（「ＣＭＰ」）は、プロセッサ当りの複数メモリコントローラを通じた更により広いメモリ帯域幅と更により多くのメモリ容量とを必要としている。メインメモリモジュールの電力要求量（電力バジェット）は、現在のコンピュータシステムにおいて、プロセッサの電力要求量（電力バジェット）と同様であるか、或いは、それよりも更に多い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、典型的なメモリモジュールは、エネルギー効率が悪い。例えば、メモリアクセス毎にあまりにも多くのビットがアクティブにされ過ぎ、それらのアクセスされるビットの大部分が、使用されることなく背後に格納されて、動的電力が浪費されている。アクセスパターンの局所性を生かすことにより、複数の時間的に接近したメモリアクセスは、コンパイラか又はメモリコントローラの何れかによって組み合わされ得り、メモリがアクティブにされるごとに、より多くのビットが使用され得る。しかしながら、これらの試みは、イレギュラーなアクセスパターンでの用途では、限定された成果しかもたらさない。このアプローチの効率は、一般的な用途におけるメモリアクセスのランダムな性質により制限され、及び、マルチスレッドからの独立したメモリアクセス要求がインターリーブされるため、ＣＭＰメモリシステム内において更に悪化させられる。
【０００４】
情報に対するアクセスを可能にし、且つ、システム性能を著しく犠牲にすることなく、エネルギーを節約するメモリシステムが望まれている。
【課題を解決するための手段】
【０００５】
概要
本発明の様々な実施形態は、マルチコアメモリモジュールに向けられたものである。一実施形態において、メモリモジュールは、メモリチップと、該メモリチップの各々及びメモリコントローラに電気的に接続されたデマルチプレクサレジスタとを備える。該メモリコントローラは、性能及び／又はエネルギー効率のニーズの変化に従って、１つか又は複数の前記メモリチップを、少なくとも１つの仮想メモリデバイスにグループ化する。前記デマルチプレクサレジスタは、仮想メモリデバイスのうちの１つを識別するコマンドを受け取って、該識別された仮想メモリデバイスのメモリチップへと該コマンドを送るよう構成される。ある実施形態において、該メモリチップは、ダイナミックランダムアクセスメモリチップとすることができる。
【図面の簡単な説明】
【０００６】
【図１Ａ】８個のメモリチップを有するメモリモジュールの等角図を示す図である。
【図１Ｂ】回路基板上に実装されたメモリモジュール及びメモリコントローラの等角図を示す図である。
【図２】メモリチップを構成する８つのバンクの概略図を示す図である。
【図３Ａ】従来のメモリモジュールの概略図を示す図である。
【図３Ｂ】従来のメモリモジュールにおける全てのメモリチップに対してコマンドをブロードキャストすることの一例を示す図である。
【図４Ａ】本発明の実施形態に従って構成された単一マルチコアメモリモジュールの等角図を示す図である。
【図４Ｂ】本発明の実施形態よる、回路基板上に実装されたマルチコアメモリモジュール及びメモリコントローラの等角図を示す図である。
【図５Ａ】本発明の実施形態に従って構成されたマルチコアのデュアルインラインメモリモジュール、及び関連付けられたデマルチプレクサレジスタの大まかな概略図を示す図である。
【図５Ｂ】本発明の実施形態に従って構成されたマルチコアのデュアルインラインメモリモジュール、及び関連付けられたデマルチプレクサレジスタの大まかな概略図を示す図である。
【図５Ｃ】本発明の実施形態に従って構成されたマルチコアのデュアルインラインメモリモジュール、及び関連付けられたデマルチプレクサレジスタの大まかな概略図を示す図である。
【図５Ｄ】本発明の実施形態に従って構成されたマルチコアのデュアルインラインメモリモジュール、及び関連付けられたデマルチプレクサレジスタの大まかな概略図を示す図である。
【図５Ｅ】本発明の実施形態に従って構成されたマルチコアのデュアルインラインメモリモジュール、及び関連付けられたデマルチプレクサレジスタの大まかな概略図を示す図である。
【図６Ａ】例示的なマルチコアのデュアルインラインメモリモジュール、及び、本発明の実施形態に従って構成されたメモリモジュールの第１のコンフィギュレーションに関連付けられたデマルチプレクサレジスタの概略図を示す図である。
【図６Ｂ】例示的なマルチコアのデュアルインラインメモリモジュール、及び、本発明の実施形態に従って構成されたメモリモジュールの第１のコンフィギュレーションに関連付けられたデマルチプレクサレジスタの概略図を示す図である。
【図６Ｃ】例示的なマルチコアのデュアルインラインメモリモジュール、及び、本発明の実施形態に従って構成されたメモリモジュールの第１のコンフィギュレーションに関連付けられたデマルチプレクサレジスタの概略図を示す図である。
【図７Ａ】本発明の実施形態による、図６内に示されたマルチコアのデュアルインラインメモリモジュールにおける２つの異なるＶＭＤコンフィギュレーションのうちの１つの概略図を示す図である。
【図７Ｂ】本発明の実施形態による、図６内に示されたマルチコアのデュアルインラインメモリモジュールにおける２つの異なるＶＭＤコンフィギュレーションのうちの１つの概略図を示す図である。
【図８】本発明の実施形態による、１６個のメモリチップを含むマルチコアのデュアルインラインメモリモジュールの概略図を示す図である。
【図９】本発明の実施形態による、メモリモジュールを制御するための、及び、仮想メモリデバイスを構成するための方法の制御フロー図を示す図である。
【図１０】本発明の実施形態による、図１内に示された標準デュアルインラインメモリモジュールを、図４内に示されたマルチコアデュアルインラインメモリモジュールに置き換えることを示す図である。
【実施例】
【０００７】
詳細な説明
本発明の様々な実施形態は、メモリシステムのエネルギー効率を、コンピュータシステム性能上の僅かなインパクトで改善するために再構成（又は再設定）され得るメモリモジュールに向けられたものである。この用語「性能」は、仕事を完了させるために用いられるリソース数及び時間の量に対する、コンピュータシステムによって完了した有効な仕事の量のことを指す。性能の測定基準は、帯域幅及びレイテンシを含む。例えば、広い帯域幅と少ないレイテンシとを有したコンピュータシステムは、より狭い帯域幅とより多いレイテンシとを有したシステムよりも比較的より高い性能を有している。メモリモジュールは、１つか又は複数のメモリチップのグループにパーティションで区切られ得るメモリチップを含む。該グループは、「仮想メモリデバイス（virtual memory devices）」（「ＶＭＤｓ」）と呼ばれる。各ＶＭＤは、それ自体のデータ経路を有しており、時分割多重化手法において、共有コマンドパスを通じて、別個のメモリリクエストを受け取ることができる。ＶＭＤｓの数と、各ＶＭＤを構成するメモリチップの数とは、起動（ブートアップ）時間中に選択され得るか、アプリケーションの実行時間中に動的に変更され得るか、或いは、コンピュータシステムオペレータによって決定され得る。換言すると、メモリアクセス当りのメモリチップ数は、性能の要求と、エネルギー効率の要求とのバランスを取るために、変更され得り及び選択され得る。
【０００８】
メモリモジュールはまた、多くのメモリモジュール標準とピン互換（ピンコンパチ）となるよう構成され得る。換言すると、従来のメモリモジュールをサポートするために用いられる同じメモリスロットがまた、本発明のメモリモジュールをサポートするためにも用いられ得る。
【０００９】
詳細な説明は、次のように体系化されている。従来のメモリモジュール及び関連したエネルギー非効率性の概略的な説明が、第１のサブセクション内において記載されている。メモリモジュール実施形態の説明が、第２のサブセクション内において提供されている。
【００１０】
メモリモジュールと、メモリーをアクセスすることにおけるエネルギー非効率性
メモリモジュールは、典型的には、「デュアルインラインメモリモジュール」（「ＤＩＭＭ」）と呼ばれる記憶ユニットを形成するプリント回路基板上に実装された幾つかのＤＲＡＭチップから成る。図１Ａは、８個のＤＲＡＭチップを含む単一ＤＩＭＭの等角図を示す。従って、１つか又は複数のＤＩＭＭｓが、回路基板上に実装されて、メモリコントローラによって制御される。図１Ｂは、回路基板１０６上に実装されたメモリ１０２及びメモリコントローラ１０４の等角図を示す。メモリ１０２は、４つのＤＩＭＭスロット１１２〜１１５内へと挿入された４つのＤＩＭＭｓ１０８〜１１１から成る。メモリコントローラ１０４は、コンピュータチップとすることができるか、又はマルチコアマイクロプロセッサチップの一部とすることができ、該メモリコントローラ１０４は、ＤＩＭＭｓ１０８〜１１１に対して送受されるコマンド及びデータの流れを管理し、中央処理装置のような、コンピュータシステムにおける他の主要構成要素と、メモリ１０２をインターフェースする。各ＤＩＭＭは、インターフェース１１８を介してメモリコントローラ１０４と電気的に連通している。インターフェース１１８は、クロック信号と、メモリコントローラ１０４からメモリ１０２へのコマンドと、ＤＩＭＭｓ１０８〜１１１とメモリコントローラ１０４との間のデータ信号とを搬送するバスである。データ信号は、メモリコントローラ１０４と、ＤＩＭＭｓ１０８〜１１１内のＤＲＡＭチップとの間である。インターフェース１１８は、シングルデータレート（「ＳＤＲ」）、ダブルデータレート（「ＤＤＲ」）、及びより高速なデータレートの転送を、サポートすることができる。ＳＤＲは、クロックサイクル毎に、一度データを伝送することを意味しており、ＤＤＲは、コンピュータシステムクロック信号の立ち上がりエッジと立ち下がりエッジとの両方においてデータを伝送することを意味している。メモリコントローラ１０４と、ＤＩＭＭｓ１０８〜１１１とが、ＳＤＲ及びＤＤＲに従ってデータを送受するよう構成され得る。ＤＤＲ内においてクロックの両エッジを用いることにより、それらのデータ信号が、同じ制限された周波数において動作して、シングルデータレート伝送を上まわって、データ伝送レートを２倍にする。
【００１１】
ＤＲＡＭチップは、トランジスタ及びコンデンサから成るＤＲＡＭメモリセルと呼ばれる構造内にビットを格納する。何十億ものセルが、単一ＤＲＡＭチップ内に存在しており、該セルは、「バンク」と呼ばれる多くの２次元アレイの２次元構成内に編成され得る。図２は、ＤＲＡＭチップ２００を構成する、０〜７と表記された８つのバンクの概略図を示す。図２の例において示されているように、各バンクは、交差する信号線を介して、行デコーダ、センス増幅器、及び列デコーダに接続されている。例えば、バンク０は、信号線２０４のように、ｘ軸と並行に走っている信号線を介して、行デコーダ２０２に接続されている。バンク０はまた、信号線２１０のように、ｙ軸と並行に走っている信号線を介して、センス増幅器２０６及び列デコーダ２０８とも接続されている。メモリセルは、信号線の交差点に配置されている。例えば、メモリセル２１２は、信号２０４と信号２１０とが交差する地点に配置されている。
【００１２】
メモリコントローラ１０４からメモリ１０２へと送られるコマンドは、読み出し（リード）、書き込み（ライト）、アクティブ化（アクティベート）、リフレッシュ、及びプリチャージを含む。コマンドは、制御信号と、アドレス信号とから成る。制御信号は、該コマンドによって実行される動作を表し、アドレス信号は、該コマンドが実行されるＤＲＡＭチップ内のバンク及び行又は列アドレスを特定する。例えば、アクティブ化（アクティベート）コマンドは、アクティブ化制御信号と、該アクティブ化コマンドが実行される、ＤＲＡＭチップ内におけるバンク及び行を特定（識別）するバンク及び行アドレスとから成る。読み出し及び書き込みコマンドは、読み出し及び書き込み制御信号と、読み出し及び書き込みコマンドが実行される、ＤＲＡＭチップ内におけるバンク及び列を特定（識別）するバンク及び列アドレスとから成る。読み出し及び書き込みコマンドはまた、「メモリリクエスト」と呼ばれる。
【００１３】
ＤＲＡＭチップ２００のバンク内に格納されたデータは、２つのステップにおいてアクセスされる。第１に、メモリコントローラ（図示せず）が、ＤＲＡＭチップ２００の行アドレスとバンクアドレスとを指定するアクティブ化コマンドを送る。行内の全てのビットは（それらは典型的には、８又は１６ｋビットのバンクである）、バンク内におけるセンス増幅器内へとアクティブ化される。第２に、バンク及び列アドレスを指定する１つか又は複数の読み出し／書き込みコマンドが送られる。読み出し／書き込みトランザクション毎に転送されるビットの数は、データバス及びバースト長のサイズによって決定される。該バースト長は、共通メモリ関連の、基本入力／出力システム設定であり、該基本入力／出力システム設定は、データブロックにおける単一バーストトランザクション内においてか又は高速トランザクション内において実施される読み出し／書き込み動作の数を制御する。典型的には、バースト長は、４か又は８に設定される。ＤＲＡＭチップが、メモリリクエストを受け取った時には、例えば、メモリ読み出しリクエストを受け取った時には、該チップは、インターフェース１１８の信号線にわたってデータを提供することによって応答する。メモリ読み出しリクエストに応答して送られるデータのブロックのサイズは、バースト長によって決定される。６４ビット幅のデータバス（すなわち、６４単一終端信号線か又は１２８差動信号線）と、４のバースト長をサポートするよう構成されたＤＲＡＭチップとを有するメモリモジュールは、メモリコントローラからの単一読み出しリクエストに応答して３２バイト（４×６４ビット＝３２バイト）のデータブロックを送る。一方、６４ビット幅のデータバスと、８のバースト長をサポートするよう構成されたＤＲＡＭチップとを有するメモリーモジュールは、メモリコントローラからの単一読み出しリクエストに応答して６４バイト（８×６４ビット＝６４バイト）のデータブロックを送る。
【００１４】
ＤＲＡＭチップにおける同じバンク内の２つの異なる行内にデータが読み出される時には、第１の行は、ライトバックされる必要があり、そのビットラインは充電される必要があり、及び、第２の行内のデータが読み出され得る前に、プリチャージコマンド及びアクティブ化コマンドによって第２の行はラッチされる必要がある。該プリチャージコマンドは、該行を、ＤＲＡＭバンクにライトバックする。該ライトバックすることは、アクティブ化コマンドが破壊的に読み出すことから必要なことである。バンクアドレスは、読み出し、書き込み、アクティブ化、及びプリチャージコマンド内の少数のビットによってもたらされる。これらのコマンド動作は、同じバンク内において、第１のアクティブ化コマンドと第２のアクティブ化コマンドとの間で頻繁に、約５０ｎｓかかる。従って、アクティブ化コマンドとプリチャージコマンドとの間において、多くの読み出し／書き込みコマンドが存在しない限り、コマンド／アドレス／データのバスは、頻繁に、アイドル状態のままでいる。しかしながら、異なるバンク内においてデータが読み出される場合には、異なるバンクに対するコマンドは、パイプライン化される可能性がある。何故ならば、２つの異なるバンク間におけるアクティブ化からアクティブ化までの時間が、約８ｎｓだけ、より短いからである。従って、異なるバンク内におけるリクエストをインターリーブすることにより、とりわけ、アクティブ化コマンドとプリチャージコマンドとのペアの間に、あまり多くの読み出し／書き込みコマンドが存在しない時には、より高いスループットが達成され得る。
【００１５】
図３Ａは、従来のＤＩＭＭ３００の概略図を示す。該ＤＩＭＭ３００は、８個のＤＲＡＭチップを含み、それらＤＲＡＭチップの各々が、８ビットデータバスを有する。方向矢印３０２は、メモリコントローラ（図示せず）からレジスタ３０２と呼ばれるオプションのデバイスへと送られるコマンドの分配を表す。該レジスタ３０４は、メモリコントローラとＤＲＡＭチップとの間のバス上に配置されている。該レジスタ３０４は、該メモリコントローラからのコマンド信号をラッチし、次いで、該メモリコントローラ上の電気的な負荷を減少させてコマンド信号のスタビリティを維持するために、それらを、より良好な信号品質及びタイミングマージンでもって、各ＤＲＡＭチップへと転送する。レジスタ３０４はまた、コマンドをバッファリングすることができ、及び、クロック信号をＤＲＡＭチップにブロードキャストすることができ、メモリコントローラ当りに複数ＤＩＭＭｓを有したシステム内における異なるＤＩＭＭｓに対する重複アクセスを容易にすることができる。レジスタ３０４は、枝分かれした方向矢印３０６及び３０８によって示されているように、コマンドをバス上の全ての８個のＤＲＡＭチップにブロードキャストする。他の従来のメモリモジュールでは、コマンドが、レジスタ３０４無しに、ＤＲＡＭチップに対してブロードキャストされる。
【００１６】
図３Ｂは、従来のＤＩＭＭ動作の一例を示す。図３Ｂの例内に示されているように、ＤＩＭＭ３００内における全てのＤＲＡＭチップが、メモリコントローラから同じコマンドを受け取り、及び、陰影が付された領域３１０によって表されている各ＤＲＡＭチップ内の同じ行をアクティブ化する。結果として、ＤＩＭＭ３００内における全てのＤＲＡＭチップが、より広いデータ経路とより大きな行とを有した単一ＤＲＡＭチップとして作用する。
【００１７】
図２に関連して上述したように、ＤＲＡＭチップ行のサイズは、典型的には、８ｋビット（又は１６ｋビット）である。ＤＩＭＭに対するキャッシュラインを読み出すためにか又は書き込むために、読み出し／書き込みコマンドが、全てのＤＲＡＭチップに対してブロードキャストされ、各ＤＲＡＭチップが、同じ行をアクティブ化する。換言すると、８個のＤＲＡＭチップからなる典型的なＤＩＭＭ内において、各ＤＲＡＭチップは、８ｋビットを含む同じ行アドレスをアクティブ化する。従って、８×８ｋビット、すなわち６４ｋビットの、ＤＩＭＭにおけるＤＲＡＭセルが、１度にアクティブ化され、それは、読み出されるか又は書き込まれることとなるキャッシュラインのサイズよりも大きい。典型的なキャッシュラインは、６４バイト、すなわち５１２ビットのオーダである。読み出し及び書き込みコマンドが、アクティブ化されたＤＲＡＭセルのうちの１％未満を用いて、１つのキャッシュライン内に典型的には読み出され及び書き込まれるため、アクティブ化されているＤＲＡＭセルのうちの９９％を越えるＤＲＡＭセルが、単一読み出し又は書き込みトランザクションのためには使用されず、このことは、エネルギーの非効率な利用法である。
【００１８】
本発明の実施形態
本発明のメモリモジュール実施形態は、メモリコントローラからのコマンドを受け取るためのデマルチプレクサレジスタ（以下、「ｄｅｍｕｘレジスタ」と記す）を含む。メモリチップが、プリント基板上に、該ｄｅｍｕｘレジスタと共に実装されて、「マルチコアのデュアルインラインメモリモジュール」（以下、「ＭＣＤＩＭＭ」と記す）と呼ばれる単一記憶装置が形成される。各メモリチップは、ｄｅｍｕｘレジスタと電気的に連通している。ある実施形態において、メモリチップは、ＤＲＡＭチップとすることができる。図４Ａは、本発明の実施形態による、プリント回路基板４１２上に実装された８個のＤＲＡＭチップ４０１〜４０８とｄｅｍｕｘレジスタ４１０とを含む単一ＭＣＤＩＭＭ４００の等角図を示す。ＤＲＡＭチップ４０１〜４０８の各々は、別個の信号線セット（図示せず）を介してｄｅｍｕｘレジスタ４１０と電気的に連通している。該信号線セットは、コマンドバスを含み、該コマンドバスによって、ｄｅｍｕｘレジスタ４１０が、ＤＲＡＭチップ４０１〜４０８の各々に対して別個にコマンドを送ることが可能である。
【００１９】
１つか又は複数のＭＣＤＩＭＭは、回路基板上に実装されて、メモリコントローラによって制御され得る。図４Ｂは、本発明の実施形態による、回路基板４１８上に実装されたメモリ４１４及びメモリコントローラ４１６の等角図を示す。メモリ４１４は、ＤＩＭＭスロット４２４〜４２７にそれぞれ挿入されたＭＣＤＩＭＭｓ４２０〜４２３を含む。インターフェース４２８は、メモリコントローラ４１６と、メモリモジュール４２０〜４２３のｄｅｍｕｘレジスタとを電気的に接続する。インターフェース４２８は、メモリコントローラ４１６からメモリ４１４へとコマンド信号を搬送するバスと、メモリコントローラ４１６とメモリ４１４との間においてデータ信号を搬送するデータバスとを含む。このアーキテクチャでは、メモリコントローラ４１６から送られるコマンドは、メモリ４１４のＤＲＡＭチップに対してブロードキャストされない。その代りに、メモリコントローラ４１６が、ＭＣＤＩＭＭｓ４２０〜４２３のｄｅｍｕｘレジスタに対して、どのＤＲＡＭチップがＶＭＤｓを構成するのかを指定する命令が組み込まれたメモリ設定コマンド（以下、「ＣＯＮＦＩＧＵＲＥコマンド」と記す）を送る。換言すると、メモリコントローラ４１６は、１つか又は複数のＤＲＡＭチップを、各ＶＭＤにグループ化（グループ分け）して、メモリリクエストに対処する。各ＶＭＤは、メモリコントローラ４１６に対してデータを独立に送受するための、それ自体のデータバスを有する。ＣＯＮＦＩＧＵＲＥコマンドに従って、ＶＭＤｓが設定された後に、メモリコントローラ４１６は、ＭＣＤＩＭＭｓ４２０〜４２３のＶＭＤｓに対して、メモリリクエストを表すコマンドを送ることを開始することができる。他の実施形態では、２つか又は３つ以上のＣＯＮＦＩＧＵＲＥコマンドのシーケンスが、ＭＣＤＩＭＭのコンフィギュレーション（構成又は設定）を変更するために用いられ得る。
【００２０】
メモリモジュール当りのＶＭＤｓの数が増加すると、データアクセス毎の、消費されるエネルギーが減少する。しかしながら、ＶＭＤｓの数を増加させることは、より少ないＶＭＤｓを有している場合と比較して、同じ量のデータを抽出するために必要な時間の量を増加させる。何故ならば、ＶＭＤ当りのメモリチップの数が減少すると、データバスの幅が減少するからである。ＶＭＤｓのコンフィギュレーションが決定され得る多くのやり方が存在する。一実施形態において、メモリモジュール当りのＶＭＤｓの数は、マシン起動時間中に選択され得る。例えば、あるオペレーティングシステムは、メモリの履歴と、特定のアプリケーションのためのエネルギー利用法とを、保持することが可能である。該特定のアプリケーションは、典型的には、コンピュータシステム上において実行される。該オペレーティングシステムは、次いで、システム性能とエネルギー効率とのバランスをとるために、起動時にＶＭＤｓの数を調整することができる。別の実施形態では、ＶＭＤｓの数を、アプリケーションの実行時間中に、動的に変化させることができる。例えば、アプリケーションが実行している間に、アプリケーションは、コンピュータシステム性能とエネルギー効率とを監視して、エネルギー効率要件に従って変化するメモリ要求（メモリデマンド）を満たすためにＶＭＤｓの数を調整することを可能にすることができる。別の実施形態では、コンピュータシステムオペレータが、コンピュータシステムの性能とエネルギー効率とを監視することができ、それに従ってＶＭＤｓの数を変更することができる。３つのケースの全てにおいて、性能がエネルギー効率よりもより高い優先事項である場合には、ＶＭＤｓの数を減少させることができ、エネルギー効率が性能よりもより高い優先事項である場合には、ＶＭＤｓの数を増加させることができ、或いは、ＶＭＤｓの数を定期的に調整して、性能とエネルギー効率とをうまく両立させることができる。
【００２１】
ある実施形態において、コンピュータシステム内のメモリモジュールの全てが、同じ数のＶＭＤｓで構成され得る。他の実施形態では、各メモリモジュールは、異なる数のＶＭＤｓで構成され得り、及び、該ＶＭＤｓは、異なる数のメモリチップを有することができる。図５Ａ〜図５Ｅは、本発明の実施形態による、同じＭＣＤＩＭＭのメモリチップにおける２つの異なるグルーピングを表す大まかな概略図を提供する。
【００２２】
図５Ａは、本発明の実施形態による、ｄｅｍｕｘレジスタ５０２と、ＶＭＤｓの第１のコンフィギュレーションとを含むＭＣＤＩＭＭ５００の大まかな概略図を示す。ＭＣＤＩＭＭ５００は、ｎ個のメモリチップを含み、ここで、ｎは整数である。図５Ａ内において、ｎ個のメモリチップのうちの８個が表されており、及び「ＭＣ」により示されており、各々は、整数を表す小文字インデックスを含む。ある実施形態において、メモリチップは、ＤＲＡＭチップとすることができる。図５Ａはまた、Ｎ個のＶＭＤｓにグループ化（グループ分け）されたメモリチップも示しており、ここで、Ｎは整数である。図５Ａ内において４つのＶＭＤｓが表されており、及びＶＭＤＫによって示されており、ここで、下付き文字Ｋは、０〜Ｎ−１の範囲にわたる整数である。例えば、図５Ａ内に示されるように、ＶＭＤ０は、ＭＣ０〜ＭＣｇを含み、ＶＭＤＫとＶＭＤＫ＋１は、それぞれ、ＭＣｈ〜ＭＣｉ、ＭＣｊ〜ＭＣｋを含み、及び、ＶＭＤＮ−１は、ＭＣｖ〜ＭＣｎ−１を含み、ここで、ｇ、ｈ、ｉ、ｊ、ｋ、及びｍは、条件０≦ｇ＜ｈ≦ｉ＜ｊ≦ｋ＜ｍ≦ｎ−１を満たす整数である。
【００２３】
各メモリチップは、ｄｅｍｕｘレジスタ５０２に信号線を介して電気的に接続されている。例えば、方向矢印５０４〜５１１は、ｄｅｍｕｘレジスタ５０２を、ＭＣ０、ＭＣｇ、ＭＣｈ、ＭＣｉ、ＭＣｊ、ＭＣｋ、ＭＣｍ、及びＭＣｎ−１に電気的に接続する信号線の別個のセットをそれぞれ表す。信号線の該セットは、コマンドバスを含む。メモリコントローラ（図示せず）が、オペレーティングシステムか、アプリケーションか、又はコンピュータシステムオペレータによって提供された命令に基づいて、ＶＭＤｓの数と、特に、ＶＭＤ当りのメモリチップの数を選択する。メモリコントローラは、「コマンドパス（コマンド経路）」と呼ばれる信号線セット５１２上において、ＣＯＮＦＩＧＵＲＥコマンドを直接ｄｅｍｕｘレジスタ５０２に対して最初に送る。ＣＯＮＦＩＧＵＲＥコマンドは、図５Ａ内に示されているようにメモリチップをグループ化（グループ分け）するようｄｅｍｕｘレジスタ５０２に指示する命令を含む。ＶＭＤｓは各々、少なくともｌｏｇ２ｎビットを含む、関連付けられたＶＭＤアドレスを有する。後続するメモリリクエストコマンドは、ＶＭＤアドレスを含む。例えば、メモリコントローラが、ＶＭＤ０に対するメモリリクエストを表すコマンドを送る時には、該メモリコントローラは、ＶＭＤ０のアドレスをコマンド内において組み込む。ｄｅｍｕｘレジスタ５０２がコマンドを受け取った時には、該ｄｅｕｍｘレジスタ５０２は、該コマンドを、ＶＭＤ０のメモリチップに転送する。例えば、ＭＣ０及びＭＣｇは、ＶＭＤ０を構成するメモリチップのうちの２つであり、ＶＭＤ０は、信号線５０４及び５０５のセット上において、ｄｅｍｕｘレジスタ５０２からのコマンドを受け取る。ＶＭＤｓの各々は、図５Ａ内におけるＤＱと、両矢印５１４などの両矢印とにより識別される別個のデータバス上において、メモリコントローラとデータ交換する。
【００２４】
ｄｅｍｕｘレジスタ５０２を、多くの異なるやり方において構成することができる。図５Ｂは、本発明の実施形態に従って構成されたｄｅｍｕｘレジスタ５１６の概略図を示す。ｄｅｍｕｘレジスタ５１６は、０〜ｎ−１と表記されたｎ個のコマンドセレクタと、ブロードキャストバス５１８とを含み、ここで、１つのコマンドセレクタは、図５Ａ内において示されるｎ個のメモリチップごとに存在する。コマンドセレクタは、ブロードキャストバス５１８に対して分岐線（ブランチ）５２０〜５２８を介して電気的に接続されており、各コマンドセレクタは、図５Ａに関連して上述したコマンドバスを含む信号線５０４〜５１１のセットを介して１つか又は複数のメモリチップに対して接続されている。図５Ｃ内において、これもまた図５Ａ内において示された信号線５０４〜５１１のセットが、図５Ａ内に示された対応するメモリチップのインデックスでラベル付けられている。メモリコントローラは、図５Ａ内において示されたコマンドパス５１２上において時分割多重化コマンドを送る。換言すると、各コマンドは、ビットストリームにエンコードされて、ある固定期間のタイムスロット内においてメモリコントローラからｄｅｍｕｘレジスタ５１６へと送られる。図５Ｂ内において、該タイムスロットは、一連の長方形５３１〜５３４によって表されている。各コマンドは、図５Ａ内のＶＭＤのインデックスを含み、該ＶＭＤは、コマンドを受け取ることが意図されている。ｄｅｍｕｘレジスタ５１６に対してコマンドが送られる順序は、メモリコントローラによって決定される。従って、図５Ｂ内におけるその順序でコマンドが出現する。実行されることとなる特定の種類の動作を識別する制御信号と、バンクか、行か、又は列を識別するアドレス信号と、メモリコントローラによって割り当てられるＶＭＤアドレスとが、コマンド内において組み込まれている。
【００２５】
ｄｅｍｕｘレジスタ５１６に対して送られる各コマンドは、全てのｎ個のコマンドセレクタに対してブロードキャストされる。各コマンドセレクタは、コマンド内に組み込まれたＶＭＤアドレスを抽出して、ＶＭＤにおける対応するメモリチップに対して該コマンドが転送されるべきかどうかを、或いは、該コマンドが破棄されるケースでは異なるＶＭＤに対して該コマンドがアドレス指定されるかどうかを、決定するよう構成されている。従って、全てのｎ個のコマンドセレクタに対してブロードキャストされる各コマンドごとに、該コマンドは、メモリコントローラによって選択されたＶＭＤを構成するメモリチップに対してコマンドセレクタによって送られるだけである。例えば、ｄｅｍｕｘレジスタ５１６は、コマンドＮ−１（５３１）を受け取って、全てのｎ個のコマンドセレクタ０〜ｎ−１に該コマンドＮ−１（５３１）をブロードキャストする。しかしながら、コマンドＮ−１（５３１）は、ＶＭＤＮ−１のアドレスを含んでいるため、コマンドセレクタｍ〜ｎ−１が、該コマンドＮ−１（５３１）を、信号線５１０及び５１１を含む信号線セット５３６上においてＶＭＤＮ−１の対応するメモリチップに対して送る。各コマンドはまた、後続のコマンドが処理される前のある特定の期間において、ｄｅｍｕｘレジスタ５１６によって個別に処理されることに留意されたい。
【００２６】
図５Ｃは、本発明の実施形態に従って構成されたコマンドセレクタｍの概略図を示す。その他のｎ−１個のコマンドセレクタは、類似に構成される。該コマンドセレクタｍは、ＶＭＤアドレスコントロール５４０、コンフィギュレーションレジスタ５４２、レジスタ／カウンタ５４４、及びランダムアクセスメモリ（「ＲＡＭ」）タイミングコントロール５４６を含む。図５Ｂ内にも示されているように、分岐線（ブランチ）５２６上のコマンドセレクタｍに対してコマンドが入力される。ＶＭＤアドレスコントロール５４０は、各コマンド内に組み込まれたＶＭＤアドレスを抽出する。コンフィギュレーションレジスタ５４２は、図５Ａ内に示されている信号線５１０に対して接続されたＶＭＤＮ−１の現在のＶＭＤアドレスを格納する。コンフィギュレーションレジスタ５４２は、クロック信号を受け取って、ＶＭＤアドレスコントロール５４０に対してＶＭＤＮ−１のＶＭＤアドレスをラッチする時を決定する。ＶＭＤアドレスコントロール５４０は、抽出したＶＭＤアドレスを、ＶＭＤＮ−１のＶＭＤアドレスと比較して、該抽出したＶＭＤアドレスが、ＶＭＤＮ−１のアドレスに一致した時に、レジスタ／カウンタ５４４に対して選択信号を送る。レジスタ／カウンタ５４２は、コマンドを一時的に格納するバッファであり、及び、立ち上がり及び／又は立ち下がりクロックエッジ毎に、ＶＭＤアドレスコントロール５４０から選択信号が受け取られる時に、該コマンドを対応するメモリＭＣｍに送る。
【００２７】
レジスタ／カウンタ５４４は、カウンタを含む。キャッシュラインの読み出しか又は書き込みトランザクションに関連した長いバースト長をＶＭＤのＤＲＡＭチップがサポートできない時には、カウンタが必要とされる。ｄｅｍｕｘレジスタは、キャッシュラインをキャッシュラインセグメントにパーティションで区切って、前記コマンドを複数のコマンドに変換（トランスレート）し、該コマンドの各々は、あるキャッシュラインセグメントに対応する。従って、ＶＭＤに対して送られる各キャッシュラインセグメントは、カウンタにより送られる対応するコマンドによって先行させられる。例えば、ＶＭＤにおける１つか又は複数のＤＲＡＭチップのバースト長が、キャッシュラインをカバーするのに十分な長さが設定されることが不可能である時には、該カウンタは、読み出しか又は書き込みのような列レベルのコマンドを、各キャッシュラインセグメントごとの多くの読み出し／書き込みコマンドへと変換（トランスレート）して、各キャッシュラインセグメントが個別にＤＲＡＭチップから読み出され得るか又はＤＲＡＭチップに書き込まれ得るようにする。各カウンタは、パーティションが区切られたキャッシュラインのために生成された多くのコマンドの経過を追う、カウントするデバイスを含む。カウンタによって実行された変換は、メモリコントローラからのコマンド帯域幅を節約する。ＲＡＭタイミングコントロール５４８は、レジスタ／カウンタ５４６のカウンタ部分を制御する。
【００２８】
図５Ａ内に示されるＭＣＤＩＭＭ５００におけるＮ個のＶＭＤｓのコンフィギュレーションは、メモリコントローラからｄｅｍｕｘレジスタ５０２に第２のＣＯＮＦＩＧＵＲＥコマンドを送ることによって変更され得る。該第２のＣＯＮＦＩＧＵＲＥコマンドは、メモリ要件の様々なセットに従ってＶＭＤｓをグループ化（グループ分け）するようｄｅｍｕｘレジスタ５０２に指示する命令に組み込まれる。該メモリ要件の様々なセットは、異なる起動（ブート）時間中に選択され得るか、アプリケーションの開始時の後の時点においてか又はアプリケーションの実行中に選択され得るか、或いは、コンピュータシステムオペレータによって選択され得る。
【００２９】
図５Ｄは、本発明の実施形態による、ＶＭＤｓの第２のコンフィギュレーションでのＭＣＤＩＭＭ５００の大まかな概略図を示す。ＭＣＤＩＭＭ５００は、同じｎ個のメモリチップを含んでいるが、図５Ｄ内に示されているように、ＶＭＤｓの数と、ＶＭＤ当りのメモリチップの数とを、メモリコントローラが再構成（再設定）している。具体的には、８個のメモリチップにおける４つのインデックスが変更されて、ＶＭＤｓを構成するメモリチップにおける異なるグルーピングが表わされている。図５Ｄ内において、メモリチップは、Ｍ個のＶＭＤｓへとグループ化（グループ分け）されており、ここで、Ｍは、Ｎの数とは異なる整数である。４つのＶＭＤｓが、図５Ｄ内において表されており、及びＶＭＤ’Ｌで表記されており、ここで、下付き文字Ｌは、０〜Ｍ−１の範囲にわたる整数である。図５Ｄ内のメモリチップのグルーピングを、図５Ａ内のメモリチップのグルーピングと比較すると、次のことが明らかである。すなわち、ＶＭＤ’０が、ＭＣ０〜ＭＣｓを含み、ここで、整数ｓは、整数ｇとは異なっており、ＶＭＤ’ＬとＶＭＤ’Ｌ＋１が、それぞれ、メモリチップＭＣｔ〜ＭＣｉ、ＭＣｊ〜ＭＣｕを含み、ここで、ｔ及びｕは、ｈ及びｋとは異なっており、及び、ＶＭＤ’Ｍ−１は、ＭＣｖ〜ＭＣｎ−１を含み、ここで、整数ｖは、整数ｍとは異なっている。方向矢印５５０〜５５３は、ｄｅｍｕｘレジスタ５０２をＭＣｓ、ＭＣｔ、ＭＣｕ、及びＭＣｖに電気的にそれぞれ接続する信号線の個別のセットを表す。
【００３０】
ｄｅｍｕｘレジスタ５１６は、本質的には変化しないままであり、及び、各コマンドセレクタのコンフィギュレーションレジスタを第２のＣＯＮＦＩＧＵＲＥコマンドが再設定（再構成）することを除いて、図５Ｂに関連して上述したのと同じ手法において動作させられる。図５Ｅは、図５Ｂに関連して上述したように構成された第２のｄｅｍｕｘレジスタ５１６を示す。図５Ｂに関連して上述したように、ｄｅｍｕｘレジスタ５３０に送られた各コマンドが、全てのｎ個のコマンドセレクタに対してブロードキャストされる。各コマンドセレクタのＶＭＤアドレスコントロールは、コマンド内に組み込まれた、図５Ｄ内に示されたＶＭＤアドレスを、抽出するために再設定されて、ＶＭＤにおける対応するメモリチップ上に該コマンドが転送されるかどうかが決定されるか、或いは、異なるＶＭＤに対して該コマンドがアドレス指定されるかどうかが決定される（このケースでは、該コマンドは破棄される）。例えば、ｄｅｍｕｘレジスタ５１６は、コマンドＭ−１（５６１）を受け取って、該コマンドを全てのｎ個のコマンドセレクタ０〜ｎ−１に対してブロードキャストする。しかしながら、コマンドＭ−１（５６１）はＶＭＤＭ−１のＶＭＤアドレスを含むので、コマンドセレクタｖ〜ｎ−１は、コマンドＭ−１（５７１）を、信号線５６５及び５１１を含む信号線５６２のセット上において、ＶＭＤＭ−１における対応するメモリチップに対して送る。残りのコマンドセレクタは、該コマンドＭ−１（５６１）を破棄する。
【００３１】
典型的な読み出し又は書き込みコマンドは、ＶＭＤにおける幾つかのメモリチップ上において広がるデータに関連付けられるメモリリクエストである。以前のコンフィギュレーション下においてＭＣＤＩＭＭ内に既に格納されたデータをレストアせずに、性能及びエネルギー効率のニーズの変化に従ってＶＭＤｓを再構成することは、データを回復不可能なままにすることとなる。従って、メモリモジュールのＶＭＤｓを再構成することに先立って、該ＶＭＤｓ内に既に格納されたデータは、フェッチされて、別のメモリデバイス内に一時的に格納されるということを、本発明の方法の実施形態が含む。ＶＭＤｓが再構成された後に、新規のＶＭＤコンフィギュレーションでのメモリモジュール内に、該データが再び格納される。
【００３２】
性能及び／又はエネルギー効率のニーズに基づき、必要とされるメモリ量の変化に適応させるために、上述のように、ＶＭＤｓへのメモリチップの、多くの異なるグルーピングが、選択され得る。図５Ａ及び図５Ｄに関連して上述したメモリチップは、ｄｅｍｕｘレジスタ５１６のコマンドセレクタとの１対１のマッピングを有する単一メモリチップである。しかしながら、本発明の実施形態は、そのように限定はされない。他の実施形態において、メモリチップよりも少ないコマンドセレクタとすることもあり得る。例えば、図５内のメモリチップＭＣ０、ＭＣｇ、ＭＣｈ、ＭＣｉ、ＭＣｊ、ＭＣｋ、ＭＣｍ、及びＭｎ−１は、単一コマンドセレクタと電気的に連通する状態にある２つか又は３つ以上のメモリチップのスタックス（積み重ね）を表すことも可能である。以下は、８個か又は１６個のＤＲＡＭチップを有する例示的なＭＣＤＩＭＭｓの説明であり、本発明の実施形態に従って、如何にＶＭＤｓが再構成（再設定）され得るかを説明している。
【００３３】
図６Ａは、本発明の実施形態に従って再構成されたＭＣＤＩＭＭ６００の概略図を示す。図６Ａ内に示されているように、ＭＣＤＩＭＭ６００は、ｄｅｍｕｘレジスタ６０２と、８個のＶＭＤｓとを含み、該８個のＶＭＤｓの各々は、０〜７にラベル付けられた単一ＤＲＡＭチップを含む。ＶＭＤｓのこの第１のコンフィギュレーションは、起動時におけるか、アプリケーションの実行中の時点におけるか、或いは、コンピュータシステムオペレータによって選択された、必要とされるメモリの量を評価した結果とすることができる。方向矢印６０４〜６１１は、ＤＲＡＭｓ０〜７の各々をｄｅｍｕｘレジスタ６０２にそれぞれ電気的に接続する信号線における８つの別個のセットを表す。コマンドが、コマンドパス６１２上においてメモリコントローラ（図示せず）からｄｅｍｕｘレジスタ６０２に対して送られる。ｌｏｇ２Ｎに従って（ここで、Ｎ＝８）、ＤＲＡＭｓ０〜７の各々は、３ビットアドレス０００、００１、０１０、０１１、１００、１０１、１１０、及び１１１のうちの１つにそれぞれ割り当てられ得る。ＤＲＡＭチップ０〜７の各々は、コマンドバスの信号線における対応するセットを通じて異なるコマンドを受け取って、ＤＱ及び（両矢印６１４のような）両矢印によって表されているそれ自体のデータバスを介して、他のＤＲＡＭチップとは独立して、データを転送する。
【００３４】
このＭＣＤＩＭＭがサポートすることが可能な、ＶＭＤｓの最大数Ｎは、８であり、この数はまた、ｄｅｍｕｘレジスタ６０２に必要とされるコマンドセレクタ数でもある。図６Ｂは、ブロードキャストバス６１８と、０〜７と表記されたコマンドセレクタとを含むｄｅｍｕｘレジスタ６１６を示す。８個のＶＭＤｓを有するＭＣＤＩＭＭ６００をサポートするためにｄｅｍｕｘレジスタ６０２の代りに、ｄｅｍｕｘレジスタ６１６が用いられ得る。各コマンドは、全ての８個のコマンドセレクタに対してブロードキャストされる。図６Ｂ内において、あるコマンドに関連付けられた各タイムスロットが、長方形によって表されており、該長方形は、図６Ａ内のＤＲＡＭチップのインデックスを含み、該インデックスは、コマンドを受け取ることを意図するものである。各コマンドセレクタは、コマンド内に組み込まれたＶＭＤアドレスを抽出して、接続されたＤＲＡＭチップに対してコマンドが転送されるべきかどうかを決定するか、或いは、異なるＤＲＡＭチップに対してコマンドがアドレス指定され及び破棄されるかどうかを決定するよう構成される。例えば、ｄｅｍｕｘレジスタ６１６は、ＤＲＡＭチップ５に行くことになっているコマンド５（６２０）を受け取って、全ての８個のコマンドセレクタにブロードキャストバス６１８上においてブロードキャストする。コマンド５（６２０）は、ＤＲＡＭチップ５のアドレスを含んでいるため、コマンドセレクタ５は、コマンド５（６２０）を、信号線６０９のセット上においてＤＲＡＭチップ５に対して送り、その他のコマンドセレクタは、該コマンド５（６２０）を破棄する。
【００３５】
図６Ｃは、本発明の実施形態に従って構成されたコマンドセレクタ５の概略図を示す。その記載は、最大数Ｎ＝８個のＶＭＤｓでの一実施形態に関するものである。従って、３（ｌｏｇ２８）ビットアドレス０００、００１、０１０、０１１、１００、１０１、１１０、及び１１１が、各ＤＲＡＭチップ０〜７をそれぞれ識別するためにコマンド内に用いられる。コマンドセレクタ５は、ＶＭＤアドレスコントロール６２２、レジスタ／カウンタ６２４、ＲＡＭタイミングコントロール６２６、及びコンフィギュレーションレジスタ６２８を含む。その他のコマンドセレクタは、類似に構成されている。ブランチ６３０上のコマンドセレクタ５にコマンドが入力されており、このことは、図６Ｂ内にもまた示されている。ＶＭＤアドレスコントロール６２２は、ＡＮＤゲート６３２と、３つのＯＲゲート６３３〜６３５と、インバータ６３６とを更に含む。ＶＭＤアドレスコントロール６２２は、各コマンドのＶＭＤアドレス部分を抽出する。Ａ２、Ａ１、及びＡ０として識別される３つのアドレス信号線は各々、抽出される３ビットＶＭＤアドレスのうちの１ビットを搬送する。信号線Ａ１上のビットは、インバータ６３６を通過する。コンフィギュレーションレジスタ６２８が、信号線Ｂ２、Ｂ１、及びＢ０上に３ビットを出力する。ここで、Ａ２及びＢ２は、ＯＲゲート６３３に対する入力であり、Ａ１及びＢ１は、ＯＲゲート６３４に対する入力であり、及び、Ａ０及びＢ０は、ＯＲゲート６３５に対する入力である。ＯＲゲート６３３〜６３５の出力Ｃ２、Ｃ１、及びＣ０は、ＡＮＤゲート６３２に対する入力である。ＡＮＤゲート６３２は、全ての入力信号がビット「１」に対応する時には、ビット「１」に対応する信号を出力し、及び、少なくとも１つの入力信号がビット「０」に対応する時には、ビット「０」に対応する信号を出力する。ここで、ビット「１」及び「０」は、信号のハイ及びロー電圧をそれぞれ表すことができる。一方、ＯＲゲート６３３〜６３５の各々は、全ての入力が「０」である時にのみビット「０」を出力し、少なくとも１つの入力がビット「１」である時にビット「１」を出力する。インバータは、ビット「１」をビット「０」へと変換し、その逆もまた同様である。
【００３６】
この実施形態では、到来するコマンド内に指定されたＶＭＤを含んでいるセレクタのうちの１つが、その中に存在するコマンドセレクタであるか否かを決定することにおいて用いられるために、ＶＭＤコンフィギュレーションレジスタ６２８は、（ＶＭＤアドレスと同数の、ｌｏｇ２Ｎ個のビットを有する）ビットマスクを保持する。マスク内の「０」ビットによって、ＶＭＤアドレスにおける（同じ位置内の）対応するビットが、意義あるものにさせられる一方で、マスク内の「１ビット」は、ＶＭＤアドレスにおける対応するビットを、無意味なものにさせるか又は「ドントケア（don't care）」にさせる。該「ドントケア（don't care）」は、このＶＭＤアドレスビットが、コマンドセレクタの出力に影響を及ぼさないことを意味するものである。図６Ａ内に示されているＶＭＤコンフィギュレーションに関して、コンフィギュレーションレジスタ６２８は、ＶＭＤアドレスビットを信号線Ｂ２、Ｂ１、及びＢ０上に常に出力する。例えば、抽出されるＶＭＤアドレスが、ＤＲＡＭチップ５の３ビットＶＭＤアドレスであるビット１０１を含んでいると仮定する。インバータ５３６は、線Ａ１上において搬送される信号の電圧を反転させる。従って、インバータ５３６の後のＡ２、Ａ１、及びＡ０信号線は、ビット１１１を搬送して、ＯＲゲート６３３〜６３５の出力線は、ビット１１１をＡＮＤゲート６３２内に搬送する。ＡＮＤゲート６３２は、ビット「１」を表す選択信号を、レジスタ／カウンタ６２４に出力することによって応答する。該レジスタ／カウンタ６２４は、コマンドを、クロックにより指示された時に、信号線６０９のセット上においてラッチする。他のアドレスについては、コンフィギュレーションレジスタ６２８がビット０００を出力するので、ＡＮＤゲート６３２に入るビットストリームは、少なくとも１つの「０」ビットを含む。従って、ＡＮＤゲート６３２は、信号を出力しないか、又はビット「０」に対応するロー信号を出力し、レジスタ／カウンタ６２４は、コマンドを信号線６０９のセット上においてラッチしない。
【００３７】
図６Ａに戻ると、メモリアクセスリクエスト毎に、１個のＤＲＡＭチップだけが関与させられている。ＤＲＡＭチップ０〜７における陰影が付けられた領域は、異なるコマンドに関連付けられた異なる個別のメモリリクエストを表している。各ＤＲＡＭチップは、コマンドバス上においてコマンドを受け取り、それ自体のデータバスを用いて個別にデータを転送する。従って、より少ないビットがアクティブにされ、アクティベーション及びプリチャージすることのためのエネルギーが節約される。しかしながら、データを転送するために、該データは、より小さなデータシリアル化部分へとパーティションで区切られる可能性があり、ここで、該部分の各々は、ＤＲＡＭチップからメモリコントローラへと別々に送られる。データをシリアル化することは、より大きなデータバス上においてデータを送ることと比較して、データを送るために必要とされる時間の量を増加させる。このシリアル化のレイテンシ問題は、システム性能にネガティブな影響を及ぼす可能性がある。データを転送するために必要とされる時間は、あるＶＭＤｓ内のメモリチップの数を増加させることにより、低減させられ得るということが、オペレーティングシステムによってか、アプリケーションによってか、或いはシステムを監視しているコンピュータシステムオペレータによって、決定され得る。従って、図５Ａ〜図５Ｅに関連して上述したように、本アプリケーションの実施形態によって、オペレーティングシステムか、アプリケーションか、又はコンピュータシステムオペレータが、２つか又は３つ以上のＤＲＡＭチップのグループを有したＶＭＤｓを有したＭＣＤＩＭＭ６００を再構成（又は再設定）することにより、シリアル化レイテンシ問題を軽減することが可能になる。
【００３８】
図６Ａ内に示されるＭＣＤＩＭＭ６００のＶＭＤｓのコンフィギュレーションは、ＣＯＮＦＩＧＵＲＥコマンドをメモリコントローラ（図示せず）からｄｅｍｕｘレジスタ６０２へと送ることによって変更される。様々なメモリ要件セットに従ってＶＭＤｓをグループ化するよう各コマンドセレクタのコンフィギュレーションレジスタに指示する命令に、ＣＯＮＦＩＧＵＲＥコマンドが組み込まれている。該メモリ要件は、アプリケーションの実行中に決定されたメモリ要求（デマンド）の変化の結果とすることができ、該アプリケーションの実行時間中の時点において選択され得るか、該アプリケーションに関連付けられたメモリ要求の履歴に従って起動時間中に決定され得るか、或いは、ＭＣＤＩＭＭ６００の性能及びエネルギー効率を監視するコンピュータシステムオペレータによって決定され得る。メモリ要件の変化は、メモリモジュールの性能とエネルギー効率とのバランスを保つことにおける変化の結果とすることができる。
【００３９】
図６Ａ内に示されたＶＭＤコンフィギュレーション下において、ＭＣＤＩＭＭ６００内に既に格納されたデータが、フェッチされて、ＭＣＤＩＭＭが再構成（再設定）される間、異なる記憶デバイス内に一時的に格納されるということに留意されたい。ＭＣＤＩＭＭ６００が再構成（再設定）された後に、該一時的に格納されたデータが、再構成（再設定）されたＭＣＤＩＭＭ６００に書き込まれる。
【００４０】
図７Ａは、ＭＣＤＩＭＭ６００の概略図を示す。ＶＭＤアドレス００、０１、１０、及び１１をそれぞれ有したＶＭＤ’０、ＶＭＤ’１、ＶＭＤ’２、及びＶＭＤ’３として識別される４つのＶＭＤｓにグループ化されたＤＲＡＭチップ０〜７を、該ＭＣＤＩＭＭ６００は有する。ＶＭＤｓの各々は、２つのＤＲＡＭチップを含む。ＶＭＤｓの各々は、ＱＤ及び（両矢印７０２などの）両矢印によって示される、その自身のデータバスを介して、データを他のＶＭＤｓとは独立に転送する。このコンフィギュレーションにおいてＭＣＤＩＭＭ６００を使用するために、メモリコントローラは、ＣＯＮＦＩＧＵＲＥコマンドをｄｅｍｕｘレジスタ６０２に送る。ｄｅｍｕｘレジスタ６０２は、コンフィギュレーションレジスタを新規のビットマスクにより再構成（再設定）することによって応答する。ｄｅｍｕｘレジスタ６０２は、メモリリクエストを有した後続コマンドを、図６Ｂ〜図６Ｃに関連して上述したのと同じ手法でＶＭＤｓに対して送る。例えば、ＶＭＤ’１に対して送られるコマンドは、ＶＭＤ’１のＶＭＤアドレスを含む。ｄｅｍｕｘレジスタ６０２が、該コマンドを受け取って、該コマンドを、図６Ｂ〜図６Ｂに関連して上述したように、ＤＲＡＭチップ２及び３のみに対して送る。
【００４１】
図７Ａ内に示されたＶＭＤコンフィギュレーションに関して、コンフィギュレーションレジスタ６２８は、ＶＭＤアドレスを、信号線Ｂ２、Ｂ１、及びＢ０上に常に出力する。このことは、コマンドセレクタ０〜７の各々内のコンフィギュレーションレジスタについても当てはまる。ラインＡ０及びＢ０は、ＶＭＤアドレスのうちの幾つかか又は最も右の位置におけるビットを搬送し、該ビットは、最下位ビット（「ＬＳＢｓ」）と呼ばれる。該ＬＳＢｓは、ＯＲゲート６３５に入力される。コンフィギュレーションレジスタ６２８から出力されるＬＳＢが「１」である時には、該ＬＳＢ  ＶＭＤアドレスビットは無視される。例えば、コンフィギュレーションレジスタ６２８から出力されるＬＳＢ出力が「１」である時には、レジスタ／カウンタ６２４は、抽出されたＶＭＤアドレスが１００か又は１０１の時にＡＮＤゲート６３２から選択信号を受け取る。第１の２つのビット１０は、ＶＭＤ’２のＶＭＤアドレスに対応する。ＶＭＤアドレスのＬＳＢは無視されて、ＭＣＤＩＭＭが本コンフィギュレーション内にある間は何があっても影響を及ぼさない。
【００４２】
ＭＣＤＩＭＭ６００が従来のＤＩＭＭとして動作させられ及びＤＲＡＭチップの全てが単一ＶＭＤを含む場合の他の実施形態において、各コマンドセレクタのコンフィギュレーションレジスタには、コマンドセレクタ０〜７のコンフィギュレーションレジスタにビット１１１を出力するよう指示するＣＯＮＦＩＧＵＲＥコマンドが送られるということに留意されたい。このコンフィギュレーションでは、ＶＭＤアドレスコントロール６２２により生成される選択信号は、常に「１」である。
【００４３】
ＶＭＤｓは、同じ数のメモリチップを有するよう制限されない。ＶＭＤｓを、異なる数のメモリチップで再構成（再設定）することができる。図７Ｂは、ＭＣＤＩＭＭ６００の概略図を示す。該ＭＣＤＩＭＭ６００は、本発明の実施形態に従って４つのＶＭＤｓへとグループ化されたＤＲＡＭチップを有している。図７Ｂ内に示されるように、ＤＲＡＭチップ０〜３は、ＶＭＤ”０へとグループ化されており、ＤＲＡＭチップ４〜６は、ＶＭＤ”１及びＶＭＤ”２へとグループ化されており、ＶＭＤ”２とＶＭＤ”３とが、それぞれ、ＤＲＡＭチップ６、及び７をそれぞれ含む。メモリコントローラの制御下において、コマンドセレクタのコンフィギュレーションレジスタ内に異なるビットマスクが格納されることとなることを可能にすることによって、図６Ｃ内に示されるコマンドセレクタの実施形態が、これを可能にする。
【００４４】
図８は、本発明の実施形態による、ｄｅｍｕｘレジスタ８０２に電気的に接続された０〜１５と表記された１６個のＤＲＡＭチップを含むＭＣＤＩＭＭ８００の概略図を示す。ｄｅｍｕｘレジスタ８０２は、８個のコマンドセレクタを含み、ここで、該コマンドセレクタの各々は、ＤＲＡＭチップの対（ペア）に電気的に接続されている。例えば、コマンドセレクタ０は、ＤＲＡＭチップ０と８との対に電気的に接続されている。ＤＲＡＭチップの各対は、ＤＲＡＭチップのスタック（積み重ね）を表してる。積み重ねられたＤＲＡＭチップの各対のデータ線は、互いに接続されており、あるアドレスビットが、それらのうちの２つの間を選択する。
【００４５】
図９は、本発明の実施形態による、メモリモジュールのＶＭＤｓを制御するための及び再構成（再設定）するための方法の制御フロー図を示す。ステップ９０１において、メモリモジュールのＶＭＤｓを構成（設定）するための命令を有したＣＯＮＦＩＧＵＲＥコマンドが生成されて、メモリコントローラからメモリモジュールへと送られる。図５Ｃ〜５Ｅ及び図６〜図７に関連して上述したように、ステップ９０２において、ｄｅｍｕｘレジスタのコンフィギュレーションレジスタが、該ＣＯＮＦＩＧＵＲＥコマンドに従って設定（構成）される。ステップ９０３のｆｏｒループ内において、ステップ９０３〜９０８が、各メモリリクエストごとに繰り返される。ステップ９０４において、該コマンド内のＶＭＤのアドレスをエンコードすることによって、メモリコントローラは、ＶＭＤｓのうちの１つにより受け取られることとなるコマンドを準備する。ステップ９０５において、メモリコントローラは、メモリモジュールのｄｅｍｕｘレジスタに該コマンドを送る。図５Ａに関連して上述したように、該コマンドは、ｄｅｍｕｘレジスタによってコマンドパス（コマンド経路）上において受け取られる。ステップ９０６において、図５Ｂ〜図５Ｃに関連して上述したように、どのＶＭＤがコマンドを受け取るべきかをｄｅｍｕｘレジスタが決定する。ステップ９０７において、図５Ｂ〜図５Ｃに関連して上述したように、ｄｅｍｕｘレジスタが、ＶＭＤにコマンドを送るための適切な信号線セットを選択する。ステップ９０８において、各メモリリクエストは監視され得り、及び、現在のＶＭＤコンフィギュレーションが適切な記憶装置を提供し及びエネルギー効率のニーズを満たしているかどうかを評価するために、性能及びエネルギー効率に関する情報が収集され得る。ステップ９０９において、該ＶＭＤコンフィギュレーションが、適切な性能及び／又はエネルギー効率のニーズを提供していない時には、方法は、ステップ９１０に進み、提供している時には、方法は、ステップ９１１に進む。ステップ９１０において、異なるＶＭＤコンフィギュレーションが、起動時にオペレーティングシステムによってか、アプリケーションを実行中の該アプリケーションによってか、或いは、コンピュータシステムオペレータによって、決定される。ステップ９１１において、方法は、ステップ９０１に戻って、ステップ９０１〜９０９が繰り返される。
【００４６】
他の実施形態において、ＭＣＤＩＭＭｓは、ＤＩＭＭ標準とピン互換（ピンコンパチ）となるよう構成され得る。用語「ＤＩＭＭ標準」は、ＤＩＭＭインターフェースにおいて配置されたピンの数のことを指す。例えば、あるＤＩＭＭｓを、１６８ピンで構成することができ、他のＤＩＭＭｓを、１８４ピンで構成することができる。メモリコントローラは、図５〜図８に関連して上述した異なるＶＭＤコンフィギュレーションの全てを検出して利用するよう構成され得り、及び、図３に関連して上述したように、標準ＤＩＭＭｓを検出して利用するよう構成され得る。ＭＣＤＩＭＭが、既存のＤＩＭＭｓとピン互換（ピンコンパチ）である時には、新たなメモリスロット標準は不要である。ＭＣＤＩＭＭは、標準ピン互換（ピンコンパチ）ＤＩＭＭスロット内へとＭＣＤＩＭＭを挿入することにより、既存のＤＩＭＭを簡単に置き換えることができる。典型的には、ＤＲＡＭチップと、ＤＩＭＭ標準とは、ＤＲＡＭチップにおける位置を指定するために必要なビットよりも、より多くのアドレスビットを備えている（リザーブしている）。これらの追加的なビットの一部は、ＤＩＭＭ標準によってサポートされる最大ＤＲＡＭ容量を犠牲にするＭＣＤＩＭＭ内における１つか又は複数のＶＭＤｓを指定するために使用され得る。ＭＣＤＩＭＭのＶＭＤｓのタイプと数とを検出するために、ＤＲＡＭチップのうちの１つの中において組み込まれたモードレジスタが、この情報をエンコードするために拡張され得る。追加的には、メモリモジュール内の別個のピンが、モードレジスタからメモリコントローラへと情報を伝達するために専用にされ得る。従って、ある実施形態では、メモリコントローラは、各メモリモジュールをチェックすることができ、メモリモジュールがＤＩＭＭｓ１０８〜１１１のような標準ＤＩＭＭであるのかどうかを、或いは、メモリモジュールが、多くの異なる固定のか又は再構成可能なＶＭＤｓを有したＭＣＤＩＭＭであるのかどうかを、決定することができる。他の実施形態において、メモリコントローラは、ＶＭＤアドレスとしてｌｏｇ２Ｎ個のアドレスビットを用いるよう構成（設定）され得り、それにより、アドレス範囲における損失（ロス）が生じない結果となる。
【００４７】
図１０は、本発明の実施形態に従って、図１内に示されたＤＩＭＭ１０９を、図４Ａ内に示されたＭＣＤＩＭＭ４００に置き換えることを示している。図１０内に示されているように、ＭＣＤＩＭＭ４００は、ＤＩＭＭｓ１０８〜１１１とピン互換（ピンコンパチ）であり、従って、ＤＩＭＭ１０９を取り除いて、ＤＩＭＭスロット１１３内へとＭＣＤＩＭＭ４００を挿入することができる。ＭＣＤＩＭＭ４００のための異なるＶＭＤコンフィギュレーションの全てを検出して利用するために、メモリコントローラ１０４が構成される時には、ＭＣＤＩＭＭ４００は、ＶＭＤｓのアドレス及び数に関して、メモリコントローラ１０４に情報を伝達することができる。従って、図６〜図８に関連して上述したように、メモリコントローラ１０４は、ＭＣＤＩＭＭ４００を動作させることを開始することが可能である。しかしながら、図３に関連して上述したように、メモリコントローラ１０４を、ＤＩＭＭｓ１０８、１１０、及び１１１のみを利用するよう構成することもできる。他の実施形態において、ＭＣＤＩＭＭ４００の使用をサポートしないメモリコントローラ１０４は、標準ＤＩＭＭｓ１０８〜１１１と同様の手法において、ＭＣＤＩＭＭ４００を使用することができる。
【００４８】
説明することを目的とするための上述の説明は、本発明の完全な理解を提供するために、特定の専門用語が用いられている。しかしながら、特定の詳細事項は、本発明を実践するためには必要とされないということが当業者にとって明らかであろう。本発明の特定の実施形態の上述の説明は、例示及び説明の目的のために提示されている。それらは、網羅的となるようにか、或いは、開示した正確な形態に本発明を限定するようには意図されていない。上記の教示を考慮して、明らかに、多くの修正及び変形形態が可能である。本発明の原理とその実際の用途を最も良く説明するために、それによって、本発明と、予期される特定の使用法に適合されるような様々な修正を伴った様々な実施形態とを他の当業者が最良に利用することが可能になるようにするために、本実施形態が示され且つ説明されている。下記の特許請求の範囲及びそれらの等価物により、本発明の範囲が画定されることが意図されている。
【図１Ａ】
2011530734.tif 000003
【図１Ｂ】
2011530734.tif 000004
【図２】
2011530734.tif 000005
【図３Ａ】
2011530734.tif 000006
【図３Ｂ】
2011530734.tif 000007
【図４Ａ】
2011530734.tif 000008
【図４Ｂ】
2011530734.tif 000009
【図５Ａ】
2011530734.tif 000010
【図５Ｂ】
2011530734.tif 000011
【図５Ｃ】
2011530734.tif 000012
【図５Ｄ】
2011530734.tif 000013
【図５Ｅ】
2011530734.tif 000014
【図６Ａ】
2011530734.tif 000015
【図６Ｂ】
2011530734.tif 000016
【図６Ｃ】
2011530734.tif 000017
【図７Ａ】
2011530734.tif 000018
【図７Ｂ】
2011530734.tif 000019
【図８】
2011530734.tif 000020
【図９】
2011530734.tif 000021
【図１０】
2011530734.tif 000022
【国際調査報告】
2011530734.tif 000023
2011530734.tif 000024
2011530734.tif 000025