メモリ回路システム及び方法
【課題】メモリ回路システムを提供する。
【解決手段】インタフェース回路104が複数のメモリ回路102及びシステム106と通信できる。使用時、インタフェース回路は、メモリ回路の命令スケジューリングにおける制約を減少させるため、メモリ回路及びシステムをインターフェースするように動作する。別の実施形態では、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、インタフェース回路は、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換するように動作する。更に別の実施形態では、少なくとも1つのメモリ積層体が、複数のDRAM集積回路を備えている。DRAM集積回路とホストシステムの間で1つ以上の物理パラメータを変換する目的で、ホストシステムに結合されたバッファ回路を使用して、ホストシステムにメモリ積層体をインターフェースする。
【解決手段】インタフェース回路104が複数のメモリ回路102及びシステム106と通信できる。使用時、インタフェース回路は、メモリ回路の命令スケジューリングにおける制約を減少させるため、メモリ回路及びシステムをインターフェースするように動作する。別の実施形態では、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、インタフェース回路は、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換するように動作する。更に別の実施形態では、少なくとも1つのメモリ積層体が、複数のDRAM集積回路を備えている。DRAM集積回路とホストシステムの間で1つ以上の物理パラメータを変換する目的で、ホストシステムに結合されたバッファ回路を使用して、ホストシステムにメモリ積層体をインターフェースする。
【発明の詳細な説明】
【技術分野】
【0001】
[001]本発明はメモリに関し、より詳細には、メモリ回路の命令スケジューリングにおける制約に関する。
【背景技術】
【0002】
[002]一般的に、メモリ回路のインタフェースの速度が高いときには、バスの高速動作を容易にする目的で、従来のマルチドロップ型メモリバス上の負荷(又はランク)の数が減少する。更に、メモリ回路の密度と価格は、しばしば指数的な関係にあり、高密度の集積回路では、一般的な密度の集積回路よりもメガバイト(MB)あたりの単価(ドル)が高い。従って、サーバにおいて経済的に使用することのできるメモリの量には、一般には上限が存在する。更に、大きな記憶容量を提供するためには、一般的には大きなプリント基板領域が要求され、従って、小型のシステム(例えばサーバ)の記憶容量は制限されている。
【0003】
[003]更には、メモリシステムに要求されるデータ転送速度及び帯域幅は着実に増大しており、従って、帯域幅を高めるため、メモリシステムにおいてより多くの命令をスケジューリング、発行、及びパイプライン化することが必要となっている。しかしながら、従来、メモリシステムには命令スケジューリングにおける制約が存在し、この制約は、命令の発行レートを制限し、従って、帯域幅などを更に高めるための様々な試みを制限するものである。従って、従来技術に関連する上記の問題若しくはそれ以外の問題、又はその両方の問題に対処する必要性が存在している。
【発明の概要】
【0004】
[004]メモリ回路システム及び方法を提供する。一実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、メモリ回路の命令スケジューリングにおける制約を減少させるため、メモリ回路及びシステムをインターフェースする(interface)ように動作する。
【0005】
[005]別の実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換するように動作する。
【0006】
[006]更に別の実施形態においては、少なくとも1つのメモリ積層体が、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているバッファ回路を使用して、ホストシステムに対してメモリ積層体をインターフェースし、DRAM集積回路とホストシステムとの間で1つ以上の物理パラメータを変換する。
【0007】
[007]更に別の実施形態においては、少なくとも1つのメモリ積層体が、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているインタフェース回路を使用して、ホストシステムに対してメモリ積層体をインターフェースし、メモリ積層体を1つのDRAM集積回路として動作させる。
【図面の簡単な説明】
【0008】
【図1】一実施形態による、メモリ回路をインターフェースするためのサブシステムを示している。
【図2】別の実施形態による、メモリ回路の命令スケジューリングにおける制約を減少させる方法を示している。
【図3】更に別の実施形態による、システムとメモリ回路との間で伝達される命令に関連付けられるアドレスを変換する方法を示している。
【図4】別の実施形態による、コンピュータプラットフォームの論理コンポーネントを含んでいるブロック図を示している。
【図5】更に別の実施形態による、デバイス内の命令列と、デバイス内のタイミング制約と、結果としてのアイドルサイクル(DDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図を図解している。
【図6】更に別の実施形態による、デバイス間の命令列と、デバイス間のタイミング制約と、結果としてのアイドルサイクル(DDR SDRAM、DDR2 SDRAM、又はDDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図を図解している。
【図7】別の実施形態による、メモリコントローラに接続されているDRAMデバイスのアレイを示しているブロック図を図解している。
【図8】更に別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているインタフェース回路を示しているブロック図を図解している。
【図9】別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているDDR3 SDRAMインタフェース回路を示しているブロック図を図解している。
【図10】更に別の実施形態による、複数のDRAMデバイスに接続されており、複数の独立したデータバスを備えているバースト融合インタフェース回路を示しているブロック図を図解している。
【図11】別の実施形態による、命令列における複数の命令にわたる連続的なデータ転送を示しているタイミング図を図解している。
【図12】更に別の実施形態による、複数の独立したデータバスを備えており、複数のDRAMデバイスに接続されているプロトコル変換・インタフェース回路を示しているブロック図を図解している。
【図13】別の実施形態による、メモリコントローラが列アクセス命令を遅らせて発行するときの効果を示しているタイミング図を図解している。
【図14】更に別の実施形態による、メモリコントローラが列アクセス命令を早期に発行するときの効果を示しているタイミング図を図解している。
【図15】(A)〜(C)は別の実施形態による、複数のDRAM積層体を備えているDIMMを示している。
【図16A】更に別の実施形態による、バッファ搭載DRAM積層体を備えているDIMM PCBを示している。
【図16B】更に別の実施形態による、4GB DRAMをエミュレートするバッファ搭載DRAM積層体を示している。
【図17A】別の実施形態による、バッファ集積回路とDRAM積層体とを使用するDIMMの例を示している。
【図17B】更に別の実施形態による、DRAMの物理積層体を示している。
【図18A】更に別の実施形態による、マルチランクのバッファ集積回路とDIMMとを示している。
【図18B】更に別の実施形態による、マルチランクのバッファ集積回路とDIMMとを示している。
【図19A】別の実施形態による、ホストシステムからの有効な集積回路セレクト信号の数に等しい数のランクをDIMM上に提供するバッファを示している。
【図19B】別の実施形態による、ホストシステムからの有効な集積回路セレクト信号の数に等しい数のランクをDIMM上に提供するバッファを示している。
【図19C】更に別の実施形態による、メモリの論理パーティションとメモリの物理パーティションとの間のマッピングを示している。
【図20A】更に別の実施形態による、メモリコントローラとDIMMとの間の接続構成を示している。
【図20B】別の実施形態による、ホストシステムからの命令に基づいてランクの数を構成設定するため、集積回路セレクト信号線をDIMM上のバッファに接続する方法を示している。
【図21】更に別の実施形態による、アップグレード能力を有する、コネクタ又はインターポーザを備えたDIMM PCBを示している。
【図22】更に別の実施形態による、マルチランクバッファ集積回路において使用する線形アドレスマッピングの例を示している。
【図23】別の実施形態による、シングルランクのバッファ集積回路による線形アドレスマッピングの例を示している。
【図24】更に別の実施形態による、マルチランクのバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。
【図25】更に別の実施形態による、シングルランクのバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。
【図26A】別の実施形態による、DRAM集積回路及び不揮発性メモリ集積回路を含んでいるバッファ搭載積層体の例を示している。
【図26B】別の実施形態による、DRAM集積回路及び不揮発性メモリ集積回路を含んでいるバッファ搭載積層体の例を示している。
【図27】(A)〜(C)は更に別の実施形態による、電源デカップリング層を備えているバッファ搭載積層体を示している。
【図28】一実施形態による、代表的なハードウェア環境を示している。
【詳細な説明】
【0009】
[0040]図1は、一実施形態による、メモリ回路をインターフェースするサブシステム100を示している。図示したように、サブシステム100は、メモリ回路102とシステム106とに結合されているインタフェース回路104を含んでいる。本明細書の説明においては、このようなメモリ回路102は、メモリとして機能することのできる任意の回路を含んでいることができる。
【0010】
[0041]例えば、様々な実施形態において、メモリ回路102の少なくとも1つは、モノリシックメモリ回路、半導体ダイ、チップ、実装メモリ回路(packaged memory circuit)、又はその他の任意のタイプの有形のメモリ回路を含んでいることができる。一実施形態においては、メモリ回路102は、ダイナミックランダムアクセスメモリ(DRAM)回路の形態をとることができる。そのようなDRAMは、任意の形態をとることができ、例えば、シンクロナスDRAM(SDRAM)、ダブルデータレートシンクロナスDRAM(DDR SDRAM、DDR2 SDRAM、DDR3 SDRAMなど)、グラフィックスダブルデータレートDRAM(GDDR、GDDR2、GDDR3など)、クワッドデータレートDRAM(QDR DRAM)、RAMBUS XDR DRAM(XDR DRAM)、高速ページモードDRAM(FPM DRAM)、ビデオDRAM(VDRAM)、拡張データアウトDRAM(EDO DRAM)、バーストEDO RAM(BEDO DRAM)、マルチバンクDRAM(MDRAM)、シンクロナスグラフィックスRAM(SGRAM)、その他の任意のタイプのDRAM、のうちの1つ以上の形態をとることができる(ただしこれらに限定されない)。
【0011】
[0042]別の実施形態においては、メモリ回路102の少なくとも1つは、磁気ランダムアクセスメモリ(MRAM)、インテリジェントランダムアクセスメモリ(IRAM:intelligent random access memory)、分散ネットワークアーキテクチャ(DNA)メモリ、ウィンドウランダムアクセスメモリ(WRAM:window random access memory)、フラッシュメモリ(例えば、NAND、NOR)、疑似スタティックランダムアクセスメモリ(PSRAM)、ウェットウェアメモリ(wetware memory)、或いは、半導体技術、原子技術、分子技術、光技術、有機技術、生物学的技術、化学技術、又はナノスケール技術に基づくメモリ、或いは、揮発型又は不揮発型、ランダムアクセス型又は非ランダムアクセス型、若しくはシリアルアクセス型又はパラレルアクセス型の、その他の任意のタイプのメモリ回路、のうちの1つ以上を含んでいることができる。
【0012】
[0043]厳密にはオプションとして、メモリ回路102は、必要であれば、少なくとも1つのデュアルインラインメモリモジュール(DIMM)(図示していない)上に配置することができる。様々な実施形態において、DIMMは、レジスタードDIMM(R−DIMM)、スモールアウトラインDIMM(SO−DIMM:small outline− DIMM)、フリーバッファードDIMM(FB−DIMM:fully buffered DIMM)、アンバッファードDIMM(UDIMM:unbuffered DIMM)、シングルインラインメモリモジュール(SIMM)、MiniDIMM、超ロープロファイル仕様の(VLP)R−DIMMなどを含んでいることができる。別の実施形態においては、メモリ回路102は、必要であれば、基板、カード、モジュール、薄板、繊維、厚紙、担体、又はその他の任意のタイプの固体若しくは可撓性の構成要素、形態、又は物体(entity,form,or object)を形成する、任意の種類の材料上に配置することができる。当然ながら、更に別の実施形態においては、メモリ回路102は、必要であれば、実装を目的とする任意の望ましい構成要素、形態、又は物体の中又は上に配置することができる。更には、メモリ回路102は、必要であれば、ランクに編成することができる。この場合のランクは、上記の構成要素、形態、又は物体、その他のうちのいずれかにおけるメモリ回路102の任意の配置編成を意味する。
【0013】
[0044]更に、本明細書の説明においては、システム106は、メモリ回路102へのアクセスが結果として発生するプロセスを要求する、若しくは開始する、又はその両方を行うことのできる任意のシステムを含んでいることができる。オプションとして、システム106は、この動作を、メモリコントローラ(図示していない)、又はその他の任意の望ましいメカニズムを使用して達成することができる。一実施形態においては、このようなシステム106は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、ストレージシステム、ネットワーキングシステム、ワークステーション、携帯情報端末(PDA)、携帯電話、テレビ、コンピュータ周辺装置(例えばプリンタ)、家庭用電子機器、通信システム、或いはその他の任意のソフトウェア若しくはハードウェア又はその両方、のうちの1つ以上の形態のシステム、を含んでいることができる。
【0014】
[0045]インタフェース回路104は、本明細書の説明においては、メモリ回路102及びシステム106をインターフェースする(例えば、通信する、バッファリングする)ことのできる任意の回路を意味する。例えば、インタフェース回路104は、複数の異なる実施形態においては、メモリ回路102及びシステム106と、直接的に(例えば、配線、バス、コネクタ、又はその他の任意の直接通信媒体、のうちの1つ以上を介して)、若しくは間接的に(例えば、無線、光、容量、電界、磁界、電磁界、或いはその他の任意の間接通信媒体、のうちの1つ以上を介して)、又はその両方によって通信することのできる回路を含んでいる。更なる別の実施形態においては、この場合の通信は、直接接続(例えば、ポイントツーポイント、シングルドロップバス、マルチドロップバス、シリアルバス、パラレルバス、リンク、又はその他の任意の直接接続、のうちの1つ以上)を使用することができ、又は、間接接続(例えば、中間回路、中間ロジック、1本又は複数本の中間バス、又はその他の任意の間接接続、のうちの1つ以上を通じての接続)を使用することができる。
【0015】
[0046]更なるオプションの実施形態においては、インタフェース回路104は、1つ以上の回路、例えば、バッファ(例えばバッファチップ)、レジスタ(例えばレジスタチップ)、アドバンストメモリバッファ(AMB)(例えばAMBチップ)、少なくとも1枚のDIMM上に配置されているコンポーネント、メモリコントローラなどを含んでいることができる。更に、レジスタは、様々な実施形態においては、JEDEC半導体技術協会(JEDEC Solid State Technology Association)(JEDECとして知られている)規格のレジスタ(JEDECレジスタ)、或いは、転送機能、格納機能、バッファリング機能のうちの少なくとも1つを備えているレジスタを含んでいることができる。様々な実施形態においては、レジスタチップ、バッファチップ、又はその他の任意のインタフェース回路104のうちの1つ以上を、インテリジェント型とすることができ、すなわち、1つ以上の機能、例えば、情報の収集若しくは格納、又はその両方、状態若しくはステータス、又はその両方の推測、予測、格納のうちの少なくとも1つ、論理的判定の実行、入力信号に対する演算の実行、のうちの少なくとも1つを行うことのできるロジック、を含んでいることができる。更に別の実施形態においては、インタフェース回路104は、オプションとして、モノリシック形態、実装形態、プリント回路形態、或いはその他の任意の回路製造形態、のうちの1つ以上として製造することができる。更に、別の実施形態においては、インタフェース回路104をDIMM上に配置することができる。
【0016】
[0047]更に別の実施形態においては、上述した複数のインタフェース回路104は、それらの組合せとして、メモリ回路102及びシステム106をインターフェースする役割を果たすことができる。従って、様々な実施形態においては、このようなインタフェース接続を目的として、1つ、2つ、3つ、4つ、又は5つ以上のインタフェース回路104を使用することができる。更に、複数のインタフェース回路104を、任意の望ましい方式において相対的に構成設定する(configure)、又は相対的に接続することができる。例えば、インタフェース回路104を、並列に、又は直列に、又は並列及び直列の様々な組合せにおいて、構成設定する、或いは接続することができる。複数のインタフェース回路104を、互いに直接的に接続する、又は互いに間接的に接続する、又は直接接続及び間接接続を組み合わせて接続することができる。更には、任意の数のインタフェース回路104を、任意の数のメモリ回路102に割り当てることができる。別の様々な実施形態においては、複数のインタフェース回路104のそれぞれを、同じ回路、又は異なる回路とすることができる。更には、インタフェース回路104は、同じか又は類似するインタフェースタスクを共有する、若しくは異なるインタフェースタスクを実行する、又はその両方とすることができる。
【0017】
[0048]メモリ回路102と、インタフェース回路104と、システム106とを個別の構成要素として図示したが、このような構成要素(又はその(1つ以上の)部分)を任意の望ましい方式において一体化することができる。様々な実施形態においては、オプションとしてのこのような一体化として、このような構成要素を単純に一緒に実装する(例えば、構成要素を積み重ねて、DRAM回路の積層体、DRAM積層体、複数のDRAM積層体、ハードウェア積層体を形成する(この場合の積層体とは、構成要素若しくは回路、又はその両方の任意のまとまり、集合、又はグループ化を意味する))、若しくは、これらの構成要素をモノリシック構造として一体化する、又はその両方を行うことができる。単なる一例として、オプションの一実施形態においては、少なくとも1つのインタフェース回路104(又はその(1つ以上の)部分)を、メモリ回路102の少なくとも1つと一緒に実装することができる。このようにして、一実施形態においては、インタフェース回路104及びメモリ回路102が積層体の形態をとることができる。
【0018】
[0049]例えば、DRAM積層体は、必要であれば、少なくとも1つのインタフェース回路104(又はその(1つ以上の)部分)を含んでいることができる。別の実施形態においては、様々な数のインタフェース回路104(又はその(1つ以上の)部分)を一緒に実装することができる。このような様々な実装構造を採用する場合、オプションとして、例えば、モノリシックシリコン実装を有利に使用することができる。
【0019】
[0050]複数の異なる実施形態においては、インタフェース回路104を、様々な機能性を備えたものとすることができる。例えば、オプションの一実施形態においては、インタフェース回路104は、メモリ回路102とシステム106との間に接続されている複数の信号をインターフェースすることができる。この場合の信号は、例えば、アドレス信号、データ信号、制御信号、イネーブル信号、クロック信号、リセット信号、或いは、メモリ回路102、システム106、又は(1つ以上の)インタフェース回路104を動作させるために使用される、又はこれらに関連付けられているその他の任意の信号、を含んでいることができる。オプションとしてのいくつかの実施形態においては、この信号は、直接接続を使用する信号、間接接続を使用する信号、専用接続を使用する信号とする、又は、いくつかの接続にまたがって信号を符号化する、又は、1つ以上の接続にまたがってその他の方式で信号を符号化する(例えば時分割多重化する)、のうちの1つ以上とすることができる。
【0020】
[0051]この実施形態の一態様においては、インターフェースされる信号は、メモリ回路102とシステム106との間に接続されている信号のすべてとすることができる。別の態様においては、信号の少なくとも一部は、メモリ回路102とシステム106との間の直接接続を使用することができる。更に、オプションとして、インターフェースされる信号が、メモリ回路102とシステム106との間の信号接続の総数の少なくとも大部分を含んでいるように、(例えば、直接接続を使用する複数の信号に対して)インターフェースされる信号の数を変化させることができる。
【0021】
[0052]更に別の実施形態においては、インタフェース回路104は、第1の数のメモリ回路102、及びシステム106をインターフェースして、システム106に対して第2の数のメモリ回路をシミュレートするように動作することができる。以下では、説明を明確にするうえで適切である場合、第1の数のメモリ回路102を「物理」メモリ回路102又はメモリ回路と称する(ただしこれらに限定されない)。単なる一例として、物理メモリ回路102は、1つの物理メモリ回路を含んでいることができる。更に、以下では、説明を明確にするうえで適切である場合、システム106によって認識される少なくとも1つのシミュレートされたメモリ回路を、少なくとも1つの「仮想」メモリ回路と称する。
【0022】
[0053]この実施形態の更に別の態様においては、仮想メモリ回路の第2の数は、物理メモリ回路102の第1の数よりも大きい、第1の数に等しい、又は第1の数よりも小さい。単なる一例として、第2の数の仮想メモリ回路は、1つのメモリ回路を含んでいることができる。ただし、当然ながら、任意の数のメモリ回路をシミュレートすることができる。
【0023】
[0054]本明細書の説明においては、用語「シミュレートする(される)」は、メモリ回路102の少なくとも1つの側面が、結果としてシステム106に異なって認識されることになる、何らかのシミュレート、エミュレート、仮装、変形、修正、変更、一部変更、成形、変換などを行うことを意味する。複数の異なる実施形態においては、このような側面は、例えば、数、信号、記憶容量、タイミング、レイテンシ、設計パラメータ、論理インタフェース、制御システム、プロパティ、挙動(例えば、電力挙動、例えば、以下に限定されないが、消費電力、消費電流、電流波形、電力パラメータ、電力指標、電力管理又は電力挙動のその他の任意の側面)、或いはその他の任意の側面、のうちの1つ以上を含んでいることができる。
【0024】
[0055]複数の異なる実施形態においては、シミュレーションは、電気特性のシミュレーション、論理特性のシミュレーション、プロトコル特性のシミュレーションとする、又は任意のその他の望ましい方式において実行する、のうちの1つ以上とすることができる。例えば、電気特性のシミュレーションにおいては、ピン、配線、信号などの数をシミュレートすることができる。論理特性のシミュレーションにおいては、特定の機能或いは挙動をシミュレートすることができる。プロトコルのシミュレーションにおいては、特定のプロトコル(例えばDDR3)をシミュレートすることができる。更に、プロトコルのシミュレーションにおいては、シミュレーションによって、異なるプロトコル(例えばDDR2とDDR3)の間で変換することができる、又は、同じプロトコルの異なるバージョンの間で変換する(例えば、4−4−4 DDR2から6−6−6 DDR2に変換する)ことができる。
【0025】
[0056]例示的な一実施形態においては、DRAMデバイスの記憶素子を複数のバンクに編成することができ、この場合、バンクのそれぞれが複数の行を有し、行のそれぞれが複数の列を有する。DRAMデバイスの記憶容量は、バンクの数と、バンクあたりの行の数と、行あたりの列の数と、列あたりの記憶ビットの数とを乗じた値に等しいものとすることができる。汎用DRAMデバイス(例えば、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM、GDDR2 SDRAM、GDDR3 SDRAM、GDDR4 SDRAM)においては、デバイスあたりのバンクの数、バンクあたりの行の数、行あたりの列の数、及び列のサイズは、標準化委員会(例えば、電子機器技術評議会(JEDEC:Joint Electron Device Engineering Council))によって決定されている。
【0026】
[0057]例えば、JEDEC規格では、4ビット幅のデータバスを備えている1ギガバイト(GB)のDDR2 SDRAM又はDDR3 SDRAMデバイスは、デバイスあたり8個のバンク、バンクあたり8192行、行あたり2048列、列あたり4ビットを有することが要求される。同様に、4ビット幅のデータバスを備えている2GBのデバイスは、デバイスあたり8個のバンク、バンクあたり16384行、行あたり2048列、列あたり4ビットを備えていなければならない。4ビット幅のデータバスを備えている4GBのデバイスは、デバイスあたり8個のバンク、バンクあたり32768行、行あたり2048列、列あたり4ビットを備えていなければならない。これら1GB、2GB、及び4GBのデバイスにおいては、行のサイズは一定であり、行の数は、デバイスの容量が2倍になるごとに2倍になっている。従って、上述したように、複数の1GBのデバイス及び2GBのデバイスを使用し、行アクティブ化命令(row−activation command)を行アクティブ化命令に直接変換し、列アクセス命令を列アクセス命令に直接変換することによって、2GB又は4GBのデバイスをシミュレートすることができる。一実施形態においては、このエミュレーションが可能であるのは、1GBのデバイスと、2GBのデバイスと、4GBのデバイスの行サイズが同じであるためである。
【0027】
[0058]一実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、メモリ回路の命令スケジューリングにおける制約を減少させるため、メモリ回路、及びシステムをインターフェースするように動作する。
【0028】
[0059]別の実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換するように動作する。
【0029】
[0060]更に別の実施形態においては、少なくとも1つのメモリ積層体は、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているバッファ回路を使用して、ホストシステムにメモリ積層体をインターフェースし、DRAM集積回路とホストシステムとの間で1つ以上の物理パラメータを変換する。
【0030】
[0061]更に別の実施形態においては、少なくとも1つのメモリ積層体は、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているインタフェース回路を使用して、ホストシステムに対してメモリ積層体をインターフェースし、メモリ積層体を1つのDRAM集積回路として動作させる。
【0031】
[0062]以下では、必要であれば、ユーザの要望に応じて上記のシステムを実施することができる、オプションとしての様々なアーキテクチャ及び使用形態に関して、説明上の情報を更に記載する。なお、以下の情報は、説明を目的として記載したものであり、本発明を何らかの形で制限するものと解釈すべきではないことに留意されたい。以下の特徴・機能のいずれも、記載した別の特徴・機能を取り除いて、又は取り除かずに、オプションとして組み込むことができる。
【0032】
[0063]図2は、別の実施形態による、メモリ回路の命令スケジューリングにおける制約を減少させる方法200を示している。オプションとして、方法200は、図1のシステム100において実施することができる。当然ながら、この方法200は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0033】
[0064]動作202に示したように、複数のメモリ回路、及びシステムをインターフェースする。一実施形態においては、メモリ回路及びシステムを、インタフェース回路を使用してインターフェースすることができる。このインタフェース回路は、例えば、図1に関連して上述したインタフェース回路を含んでいることができる。更に、一実施形態においては、インターフェースするステップは、メモリ回路とシステムとの間の通信を容易にする(facilitate)ステップを含んでいることができる。ただし、当然ながら、メモリ回路及びシステムを、任意の望ましい方式においてインターフェースすることができる。
【0034】
[0065]更に、動作204に示したように、メモリ回路の命令スケジューリングにおける制約を減少させる。本明細書の説明においては、命令スケジューリングにおける制約は、メモリ回路に関連する命令のスケジューリング(若しくは発行、又はその両方)に関連付けられる任意の制限を含んでいる。オプションとして、命令スケジューリングにおける制約は、製造業者が自社のメモリデバイスのデータシートの中に定義する、或いは、標準化機構(例えばJEDEC)によって定義される。
【0035】
[0066]一実施形態においては、命令スケジューリングにおける制約は、デバイス内命令スケジューリングにおける制約(intra−device command scheduling constraints)を含んでいることができる。このようなデバイス内命令スケジューリングにおける制約は、デバイスの中でのスケジューリング制約を含んでいることができる。例えば、デバイス内命令スケジューリングにおける制約は、列間遅延時間(column−to−column delay time)(tCCD)、行間アクティブ化遅延時間(row−to−row activation delay time)(tRRD)、4バンクアクティブ化ウィンドウ時間(four−bank activation window time)(tFAW)、書込み−読取りターンアラウンドタイム(write−to−read turn−around time)(tWTR)などを含んでいることができる。オプションとして、デバイス内命令スケジューリングにおける制約は、デバイス内のリソースを共有する、デバイスの要素(例えば、列、行、バンク)に関連付けることができる。このようなデバイス内命令スケジューリングにおける制約の一例については、後から図5に関連して更に詳しく説明する。
【0036】
[0067]一実施形態においては、命令スケジューリングにおける制約は、デバイス間命令スケジューリングにおける制約(inter−device command scheduling constraints)を含んでいることができる。このようなデバイス間スケジューリング制約は、デバイス(例えばメモリデバイス)の間のスケジューリング制約を含んでいることができる。単なる一例として、デバイス間命令スケジューリングにおける制約は、ランク間のデータバスターンアラウンドタイム(rank−to−rank data bus turnaround times)、オンダイターミネーション(ODT:on−die−termination)制御スイッチング時間などを含んでいることができる。オプションとして、デバイス間命令スケジューリングにおける制約は、互いの間の接続(例えば通信するための接続)を提供するリソース(例えばデータバス)を共有するデバイスに関連付けることができる。このようなデバイス間命令スケジューリングにおける制約の一例については、後から図6に関連して更に詳しく説明する。
【0037】
[0068]更に、命令スケジューリングにおける制約を減少させるステップは、制約を完全に排除する、又は制約をいくらか低減させるステップを含んでいることができる。更には、メモリ回路に命令を発行する方式を制御することによって、命令スケジューリングにおける制約を減少させることができる。このような命令は、例えば、行アクティブ化命令、又は列アクセス命令を含んでいることができる。更には、オプションとして、複数のメモリ回路に関連付けられる個別のバスを使用して、メモリ回路に命令を発行することができる。個別のバスが関連付けられているメモリ回路の一例については、後から図8に関連して更に詳しく説明する。
【0038】
[0069]一実施形態においては、仮想メモリ回路のシミュレーションに基づいてメモリ回路に命令を発行することによって、命令スケジューリングにおける制約を減少させることができる。例えば、複数のメモリ回路(すなわち物理メモリ回路)が仮想メモリ回路としてシステムに認識されるように、それら複数のメモリ回路、及びシステムをインターフェースすることができる。そのようなシミュレートされた仮想メモリ回路は、オプションとして、図1に関連して上述した仮想メモリ回路を含んでいることができる。
【0039】
[0070]更に、仮想メモリ回路では、物理メモリ回路よりも命令スケジューリングにおける制約を少なくすることができる。例示的な一実施形態においては、メモリ回路を、命令スケジューリングにおける制約が存在しない1つ以上のメモリ回路から成るまとまりとして認識させることができる。従って、オプションとして、複数の異なる物理メモリ回路ではなく1つの仮想メモリ回路を対象とする命令を発行することによって、命令スケジューリングにおける制約を減少させることができる。このようにして、オプションとして、アイドル状態のデータバスサイクルを排除することができ、メモリシステムの帯域幅を高めることができる。
【0040】
[0071]当然ながら、命令スケジューリングにおける制約は任意の望ましい方式において減少させることができる。従って、一実施形態においては、メモリ回路(例えば論理DRAMデバイス)のデバイス間命令スケジューリングにおける制約若しくはデバイス内命令スケジューリングにおける制約、又はその両方の少なくとも一部を、本インタフェース回路を使用して排除することができる。更には、メモリ回路の命令スケジューリングにおける制約が減少する結果として、命令発行レートを高めることができる。例えば、命令スケジューリングにおける制約に関連付けられる制限を減少させることによって、より多くの命令をメモリ回路に発行することができる。命令スケジューリングにおける制約を減少させることによって命令発行レートを高めることに関しては、後から図11に関連して更に詳しく説明する。
【0041】
[0072]図3は、更に別の実施形態による、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換する方法300を示している。オプションとして、方法300は、図1若しくは図2、又はその両方のアーキテクチャ及び環境において実行することができる。当然ながら、方法300は、任意の望ましい環境において実行することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0042】
[0073]動作302に示したように、複数のメモリ回路、及びシステムをインターフェースする。一実施形態においては、インタフェース回路(例えば、図1に関連して上述したインタフェース回路)を使用して、メモリ回路及びシステムをインターフェースすることができる。一実施形態においては、インターフェースするステップは、メモリ回路とシステムとの間の通信を容易にするステップを含んでいることができる。ただし、当然ながら、メモリ回路及びシステムは、任意の望ましい方式においてインターフェースすることができる。
【0043】
[0074]更に、動作304に示したように、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換する。このような命令は、例えば、行アクティブ化命令、列アクセス命令、或いはシステムとメモリ回路との間で伝達することのできるその他の任意の命令、のうちの1つ以上を含んでいることができる。オプションとして、この変換はシステムに透過的とすることができる。このようにして、システムはメモリ回路に命令を発行することができ、この場合、命令の変換は、システムが認識或いは入力することなく行うことができる。
【0044】
[0075]更には、アドレスの変換は、任意の望ましい方式において行うことができる。このような変換は、任意の変換、変更、変形を含んでいることができる。一実施形態においては、アドレスを変換するステップは、アドレスをシフトさせるステップを含んでいることができる。別の実施形態においては、アドレスの変換は、アドレスをマッピングすることによって行うことができる。オプションとして、図1若しくは図2、又はその両方に関連して上述したように、メモリ回路は物理メモリ回路を含んでいることができ、インタフェース回路によって仮想メモリ回路をシミュレートすることができる。これを目的として、仮想メモリ回路は、オプションとして、自身に関連付けられる行アドレスを、物理メモリ回路とは異なる(例えば、より多くの)数だけ有することができる。
【0045】
[0076]従って、別の実施形態においては、変換を、行アドレスの数の差異の関数として実行することができる。更に別の実施形態においては、変換では、仮想メモリ回路の行アドレスの数が反映されるようにアドレスを変換することができる。更に別の実施形態においては、変換では、オプションとして、列アドレス及び行アドレスの関数としてアドレスを変換することができる。
【0046】
[0077]従って、命令が行アクセス命令を含んでいる例示的な一実施形態においては、列アクセス命令の予測到着タイムの関数として変換を実行することができる。命令が行アクセス命令を含んでいる別の例示的な実施形態においては、変換によって、列アクセス命令が必ず空きバンクにアドレッシングされるようにすることができる。オプションとして、インタフェース回路は、システムとメモリ回路との間で伝達される命令を遅らせるように動作することができる。これを目的として、変換の結果として、メモリ回路(例えば論理DRAMデバイス)の行の一部をアクティブ化することができる。アドレスの変換の様々な例については、後から図8及び図12に関連して更に詳しく説明する。
【0047】
[0078]従って、一実施形態においては、行のサイズが小さいメモリ回路を使用して、行のサイズが大きい、より大きなメモリ回路をエミュレートすることができるように、アドレスマッピングにおいて、1つの命令と別の命令との間でアドレスをシフトするステップを使用することができる。従って、行の一部のアクティブ化を提供することができる。様々な実施形態においては、このような行の一部のアクティブ化によって消費電力を減少させることもでき、パフォーマンスを更に向上させることができる。
【0048】
[0079]図4は、別の実施形態による、コンピュータプラットフォーム400の論理コンポーネントを含んでいるブロック図を示している。オプションとして、コンピュータプラットフォーム400は、図1〜図3のアーキテクチャ及び環境において実施することができる。当然ながら、コンピュータプラットフォーム400は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0049】
[0080]図示したように、コンピュータプラットフォーム400は、システム420を含んでいる。システム420は、メモリインタフェース421と、外部メモリの属性の予測を取得及び格納するロジック422と、メモリインタラクション(memory interaction)属性423と、データ処理エンジン424と、ユーザインタフェースを容易にする様々なメカニズム425とを含んでいる。コンピュータプラットフォーム400は、完全に個別のコンポーネント、すなわち、システム420(例えばマザーボード)と、メモリ回路410(例えば物理メモリ回路)とから構成することができる。更に、コンピュータプラットフォーム400は、オプションとして、1つ以上のソケットによってシステム420に直接接続されているメモリ回路410を含んでいることができる。
【0050】
[0081]一実施形態においては、メモリ回路410は、様々な規格、例えば、メモリ回路410をJEDEC準拠の半導体メモリ(例えば、DRAM、SDRAM、DDR2、DDR3)であるように定義する規格、の仕様に従って設計することができる。そのような規格の仕様は、物理的な相互接続と、メモリ回路410の論理機能とを規定していることがある。
【0051】
[0082]別の実施形態においては、システム420は、物理メモリ回路410(例えばDIMM)に問い合わせてメモリ属性422,423を取得及び格納することができるシステムBIOSプログラム(図示していない)を含んでいることができる。更に、様々なタイプの外部メモリ回路410(例えば、JEDECに準拠するDIMM)は、DIMMのメモリ属性が格納されているEEPROMデバイス(SPD(serial presence detect)として知られている)を含んでいることができる。BIOSによるSPDとのインタラクションと、物理属性についてのBIOSによる物理メモリ回路410とのインタラクションとによって、システム420のメモリ属性の予測422とメモリインタラクション属性423とをシステム420に認識させることができる。
【0052】
[0083]様々な実施形態においては、コンピュータプラットフォーム400は、電気的にはシステム420と物理メモリ回路410との間に配置されている1つ以上のインタフェース回路470を含んでいることができる。このインタフェース回路470は、システムに面しているいくつかのインタフェース(例えば、システムアドレス信号インタフェース471、システム制御信号インタフェース472、システムクロック信号インタフェース473、システムデータ信号インタフェース474)を含んでいることができる。同様に、インタフェース回路470は、メモリに面しているいくつかのインタフェース(例えば、メモリアドレス信号インタフェース475、メモリ制御信号インタフェース476、メモリクロック信号インタフェース477、メモリデータ信号インタフェース478)を含んでいることができる。
【0053】
[0084]更には、インタフェース回路470は、エミュレーションロジック480を含んでいることができる。このエミュレーションロジック480は、システムに面しているインタフェースからの、又はシステムに面しているインタフェースを経由する電気信号(例えば、ロジックレベル、命令、信号、プロトコルシーケンス、通信)を受け取り、オプションとしてそれを格納するように動作することができ、更に、そのような電気信号を処理するように動作することができる。エミュレーションロジック480は、システム420に応答を返し、システム420に信号を供給することによって、システムに面しているインタフェースからの信号に応答することができ、更に、以前に格納されている別の情報を用いてその信号を処理することができる。別のオプションとして、エミュレーションロジック480は、物理メモリ回路410に信号を供給することができる。ただし、当然ながら、エミュレーションロジック480は、上述した任意の機能を任意の順序において実行することができる。
【0054】
[0085]更には、エミュレーションロジック480は、パーソナリティ(personality)を導入するように動作することができ、この場合のパーソナリティは、物理メモリ回路の属性を定義することができる。様々な実施形態においては、パーソナリティは、インタフェース回路470と物理メモリ回路410との間の配線、ボンディングオプション、ストラッピング(strapping)、プログラマブルなストラッピング、のうちの任意の組合せによって構成することができる。更には、インタフェース回路470に接続されている物理メモリ回路410の実際の物理属性(例えば、モードレジスタの値、拡張モードレジスタの値)(インタフェース回路470及び物理メモリ回路410がパワーアップされるときに決定される)によって、パーソナリティを構成することができる。
【0055】
[0086]図5は、更に別の実施形態による、デバイス内の命令列(intra−device command sequence)と、デバイス内のタイミング制約と、結果としてのアイドルサイクル(DDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図500を図解している。オプションとして、このタイミング図500は、図1〜図4のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図500は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0056】
[0087]図示したように、タイミング図500は、命令サイクルと、タイミング制約と、メモリのアイドルサイクルとを示している。例えば、DDR3 SDRAMメモリシステムを含んでいる実施形態においては、1つのDRAMデバイスを対象としている任意の2つの行アクセス命令は、tRRDよりも短い間隔でスケジューリングされるとは限らない。別の例として、tFAW以内に1つのDRAMデバイスにスケジューリングすることのできる行アクセス命令は、最大で4つである。更に、特定のDRAMデバイスに、連続する列読取りアクセス命令及び連続する列書込みアクセス命令をtCCDよりも短い間隔でスケジューリングされるとは限らない(tCCDは、DDR3 DRAMデバイスにおいては4サイクル(データの半サイクル×8)に等しい)。
【0057】
[0088]この実施形態においては、行アクセス命令若しくは行アクティブ化命令、又はその両方は、ACTとして示してある。更に、列アクセス命令は、「読取り」又は「書込み」として示してある。従って、例えば、図2に示したような、4つの半サイクルのデータバーストとしてのデータアクセスが要求されるメモリシステムにおいては、列アクセスを連続的にスケジューリングすることが、tCCD制約によって抑制されることがある。更には、特定のDRAMデバイスに送られるDRAM命令に課されるこれらの制約510,520によって、命令レートが制限されることがあり、結果としてデータバス上にアイドルサイクル又はバブル530が発生し、従って、帯域幅が減少する。
【0058】
[0089]DDR3 SDRAMメモリシステムを含んでいる、オプションの別の実施形態においては、同じデータバス上の複数の異なるDRAMデバイスに送られる連続する列アクセス命令は、データバースト時間長と、ランク間のデータバスターンアラウンドタイムに起因する更なるアイドルサイクルとの合計である時間期間よりも短い間隔でスケジューリングされるとは限らない。列読取りアクセス命令の場合、同じデータバス上の2つのDRAMデバイスが、2つのバスマスターであることがある。オプションとして、1つのバスマスターが、メモリコントローラへのデータの供給を完了して共有データバスの制御を解放し、これにより別のバスマスターがデータバスの制御を取得してデータを送り始めるためには、バス上に少なくとも1つのアイドルサイクルが必要である。
【0059】
[0090]図6は、更に別の実施形態による、デバイス間の命令列(inter−device command sequence)と、デバイス間のタイミング制約と、結果としてのアイドルサイクル(DDR SDRAM、DDR2 SDRAM、又はDDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図600を図解している。オプションとして、このタイミング図600は、図1〜図4のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図600は任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0060】
[0091]図示したように、タイミング図600は、複数の異なるデバイスに発行される命令を示しており、この場合、同じデバイスに発行される命令に課される制約(例えば、tRRD、tCCD)は存在しない。しかしながら、図示したように、1つのデバイスから別のデバイスにデータバスを引き渡すために、データバス上に少なくとも1つのデータバスアイドルサイクル610が要求される。従って、このタイミング図600は、DDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる制限を示している。この命令スケジューリングにおける制約の結果として、DDR3 SDRAMメモリシステム(tCCDよりも短いバーストを使用する)において帯域幅を完全に使用することのできる命令列が存在しないことがある。
【0061】
[0092]図7は、別の実施形態による、メモリコントローラに接続されているDRAMデバイスのアレイを示しているブロック図700を図解している。オプションとして、このブロック図700は、図1〜図6のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図700は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0062】
[0093]図示したように、8個のDRAMデバイスが共有データバス710を通じてメモリコントローラに直接接続されている。従って、DRAMデバイスを対象とする、メモリコントローラからの命令は、命令スケジューリングにおける制約(例えば、tRRD、tCCD、tFAW、tWTR)の条件下で発行することができる。従って、このような命令スケジューリングにおける制約に基づき、命令の発行が遅れることがある。
【0063】
[0094]図8は、更に別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているインタフェース回路を示しているブロック図800を図解している。オプションとして、このブロック図800は、図1〜図6のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図800は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0064】
[0095]図示したように、インタフェース回路810は、メモリコントローラ820とのDRAMインタフェースを提供し、独立しているDRAMデバイス830に命令を渡す。メモリデバイス830のそれぞれに異なるデータバス540を関連付けることができ、従って、デバイス間制約が防止される。更に、個々の独立したメモリデバイス830を使用して、仮想メモリデバイスの要素(例えば列、行、バンク)をエミュレートすることができる。従って、デバイス内制約も防止することができる。これを目的として、インタフェース回路510に接続されているメモリデバイス830を、命令スケジューリングにおける制約が存在しない、1つ以上のメモリデバイス530から成るまとまりとして、メモリコントローラ820に認識させることができる。
【0065】
[0096]例示的な一実施形態においては、インタフェース回路を使用することにより、N個の物理DRAMデバイスを使用してM個の論理DRAMデバイスをエミュレートすることができる。インタフェース回路は、M個の論理デバイスを対象とする、メモリコントローラからの命令ストリームを受け取ることができる。更に、インタフェース回路は、P本の独立したデータ経路を介してインタフェース回路に接続されているN個の物理デバイス向けに、これらの命令を変換することができる。命令の変換は、例えば、M個の論理デバイスのうちの1つを対象としている正しい命令を正しいデバイス(すなわち、N個の物理デバイスのうちの1つ)にルーティングするステップを含んでいることができる。全体として、N個の物理デバイスがP本のデータ経路によって接続されていることにより、オプションとして、インタフェース回路は、命令が並列且つ独立して実行されるように保証することができ、従って、N個の物理デバイスに関連付けられる命令スケジューリングにおける制約が防止される。このように、この方策がなければデバイス間命令スケジューリングにおける制約及びデバイス内命令スケジューリングにおける制約に起因して存在するはずの、データバスのアイドルサイクル或いはバブルを、インタフェース回路によって排除することができる。
【0066】
[0097]図9は、別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているDDR3 SDRAMインタフェース回路を示しているブロック図900を図解している。オプションとして、このブロック図900は、図1〜図8のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図900は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0067】
[0098]図示したように、DDR3 SDRAMインタフェース回路910は、デバイス間のスケジューリング制約及びデバイス内のスケジューリング制約に起因する、データバスのアイドルサイクルを排除する。この実施形態においては、DDR3 SDRAMインタフェース回路910は、複数のDDR3 SDRAMデバイスを複数の独立したデータバスに接続しているインタフェース回路の命令変換回路を含んでいることができる。例えば、DDR3 SDRAMインタフェース回路910は、物理メモリ回路とシステムとの間の信号をインターセプトすることのできる命令・制御コンポーネント及びアドレスコンポーネントを含んでいることができる。更には、これら命令・制御コンポーネント及びアドレスコンポーネントによって、以下に図10に関連して説明するように、バーストを融合することができる。
【0068】
[0099]図10は、更に別の実施形態による、複数の独立したデータバスによって複数のDRAMデバイスに接続されているバースト融合インタフェース回路を示しているブロック図1000を図解している。オプションとして、このブロック図1000は、図1〜図9のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図1000は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0069】
[00100]バースト融合インタフェース回路1010は、複数のDRAMデバイス1030を複数の独立したデータバス1040に接続するインタフェース回路のデータコンポーネントを含んでいることができる。更に、バースト融合インタフェース回路1010は、ある時間期間内に受け取る複数のバースト命令を融合することができる。図示したように、バースト融合インタフェース回路1010には、8個のDRAMデバイス1030を8本の独立したデータ経路を介して接続することができる。更には、バースト融合インタフェース回路1010は、メモリコントローラ820への1本のデータ経路を使用することができる。なお、この実施形態においては8個のDRAMデバイス1030を示しているが、別の実施形態においては、16個、24個、32個といったデバイスを8本の独立したデータ経路に接続することができる。更に別の実施形態においては、DRAMデバイス1030には、2本、4本、8本、16本、又はそれ以上の独立したデータ経路を関連付けることができる。
【0070】
[00101]バースト融合インタフェース回路1010は、メモリコントローラ1020との1つの電気的インタフェースを提供することができ、従って、デバイス間制約(例えば、ランク間のターンアラウンドタイム)が排除される。一実施形態においては、メモリコントローラ1020は、自身がバースト融合インタフェース回路1010を通じてDRAMデバイス1030を間接的に制御していることと、バスのターンアラウンドタイムが必要ないこととを認識していることができる。別の実施形態においては、バースト融合インタフェース回路1010は、DRAMデバイス1030を使用してM個の論理デバイスをエミュレートすることができる。更に、バースト融合インタフェース回路1010は、個々のDRAMデバイス1030のそれぞれによってデバイス間制約(例えば、tRRD、tCCD、tFAW、tWTR)が必ず満たされる一方で、バースト融合インタフェース回路1010が、デバイス間制約の存在しないM個の論理デバイスとして自身を定義できるようにする目的で、行アクティブ化命令及び列アクセス命令を、DRAMデバイス1030のうちの1つを対象として変換することができる。
【0071】
[00102]図11は、別の実施形態による、命令列における複数の命令にわたる連続的なデータ転送を示しているタイミング図1100を図解している。オプションとして、このタイミング図1100は、図1〜図10のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図1100は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0072】
[00103]図示したように、デバイス間制約及びデバイス内制約が排除されており、従って、バースト融合インタフェース回路は、データバス上での連続的なバーストデータ転送を許可することができ、従って、データ帯域幅が高まる。例えば、バースト融合インタフェース回路に関連付けられているインタフェース回路は、業界標準のDRAMインタフェースを、命令スケジューリングにおける制約の存在しない1つ以上のDRAMデバイスとしてメモリコントローラに提示することができる。更に、このインタフェース回路では、DRAMメモリシステムの電気的インタフェース或いは命令セットを変更する必要なしに、DRAMデバイスを、命令スケジューリングにおける制約が存在しないデバイスとしてエミュレートすることができる。なお、この実施形態に説明したインタフェース回路は、任意のタイプのメモリシステム(例えば、DDR2、DDR3)を含んでいることができる。
【0073】
[00104]図12は、更に別の実施形態による、複数の独立したデータバスによって複数のDRAMデバイスに接続されているプロトコル変換・インタフェース回路を示しているブロック図1200を図解している。オプションとして、このブロック図1200は、図1〜図11のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図1200は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0074】
[00105]図示したように、プロトコル変換・インタフェース回路1210は、プロトコルの変換機能若しくは操作機能、又はその両方を実行することができ、更に、インタフェース回路として機能することができる。例えば、このプロトコル変換・インタフェース回路1210は、メモリコントローラを複数のメモリデバイスに接続しているインタフェース回路の中に含めることができる。
【0075】
[00106]一実施形態においては、プロトコル変換・インタフェース回路1210は、行アクティブ化命令若しくは列アクセス命令、又はその両方を遅らせることができる。更に、プロトコル変換・インタフェース回路1210は、複数の異なる種類のアドレスマッピング方式(列アクセス命令の予測到着タイムに依存する)を透過的に実行することができる。1つの方式においては、メモリコントローラによって列アクセス命令を通常のタイミングにおいて送ることができる(すなわち、列アクセス命令が早期である方式と比較して遅れて到着する)。
【0076】
[00107]第2の方式においては、DRAMデバイスのインタフェースにおいて行アクセス命令が必要となる前に、メモリコントローラによって列アクセス命令を送ることができる(すなわち、早期に到着する)。DDR2 SDRAMメモリシステム及びDDR3 SDRAMメモリシステムにおいては、早期に到着する列アクセス命令をポステッドCAS命令(Posted−CAS command)と称することがある。従って、必要に応じて行の一部をアクティブ化することができ、従って、行の一部のアクティブ化が提供される。更に、低電力も提供することができる。
【0077】
[00108]なお、上述した方式の実施形態では、ピンを追加する、或いはメモリコントローラが新しい命令をプロトコル変換・インタフェース回路に送ることが必ずしも要求されない。このように、広帯域幅のDRAMデバイスを提供することができる。
【0078】
[00109]図示したように、プロトコル変換・インタフェース回路1210には、8本の独立したデータ経路を介して8個のDRAMデバイスを接続することができる。例えば、プロトコル変換・インタフェース回路1210は、8個の1GB DRAMデバイスによって1つの8GB DRAMデバイスをエミュレートすることができる。従って、メモリコントローラは、8個のバンク、バンクあたり32768行、行あたり4096列、列あたり4ビットが存在しているものと予測する。メモリコントローラは、行アクティブ化命令を発行するとき、後に続く列アクセス命令において4096列が使用可能であるものと予測するが、1GBのデバイスは行あたり2048列を備えているのみである。同様に、2GBのデバイスを使用して16GBのDRAMデバイスをエミュレートするとき、或いは、4GBのデバイスを使用して32GBのデバイスをエミュレートするとき、行のサイズが一致しないという同じ問題が生じうる。
【0079】
[00110]1GB DRAMデバイスと8GB DRAMデバイス、2GB DRAMデバイスと16GB DRAMデバイス、4GB DRAMデバイスと32GB DRAMデバイスなどにおいて、行のサイズが異なる状況に対応するため、プロトコル変換・インタフェース回路1210は、より大きな行の任意の部分にアクセスしうる次の列アクセス命令に備えて準備するため、適切な数の行アクティブ化命令を計算して発行することができる。特定の条件に応じて異なる挙動をとるように、プロトコル変換・インタフェース回路1210を構成設定することができる。
【0080】
[00111]例示的な一実施形態においては、メモリコントローラは、列アクセス命令を早期に発行しない。プロトコル変換・インタフェース回路1210は、より大きな容量の論理DRAMデバイスにおけるより大きな行サイズに一致するように、より小さい複数の行をアクティブ化することができる。
【0081】
[00112]更には、プロトコル変換・インタフェース回路1210は、図示したように、メモリコントローラまでの1本のデータ経路を提供することができる。従って、プロトコル変換・インタフェース回路1210は、メモリコントローラとの1つの電気的インタフェースを備えている1つのDRAMデバイスとして自身を認識させることができる。例えば、プロトコル変換・インタフェース回路1210が8個の1GB DRAMデバイスを使用して1つの標準の8GB DRAMデバイスをエミュレートする場合、メモリコントローラは、8GBの論理DRAMデバイスがリフレッシュ命令を実行するのに300ns以上かかるものと予測する。更に、プロトコル変換・インタフェース回路1210は、リフレッシュ命令をインテリジェント式にスケジューリングすることができる。すなわち、例えば、プロトコル変換・インタフェース回路1210は、1GB DRAMデバイスへのリフレッシュ命令を個別にスケジューリングする(リフレッシュ命令のそれぞれが100nsかかる)ことができる。
【0082】
[00113]これを目的として、プロトコル変換・インタフェース回路1210が複数の物理DRAMデバイスを使用して、より大きな1つのDRAMデバイスをエミュレートする場合、メモリコントローラは、リフレッシュ命令を実行するのに論理デバイスが比較的長い時間期間を要するものと予測する。プロトコル変換・インタフェース回路1210は、物理DRAMデバイスのそれぞれへのリフレッシュ命令を個別にスケジューリングすることができる。従って、より大きな論理DRAMデバイスのリフレッシュにかかる時間期間を、同じサイズの物理DRAMデバイスのリフレッシュと比較して短くすることができる。更には、DDR3メモリシステムでは、熱的な変動によって生じるタイミングのずれに対して高速データI/O回路が定期的に調整(較正)されるように、キャリブレーションシーケンスを必要とすることがある。更に、オプションとして、時間的にずらせたリフレッシュ命令によって、独立した物理DRAMデバイスのそれぞれを個別に調整するうえで要求されるI/Oクワイエットタイム(I/O quiet time)を確保することもできる。
【0083】
[00114]このように、一実施形態においては、プロトコル変換・インタフェース回路1210によって、論理DRAMデバイスのリフレッシュタイムを時間的にずらすことができる。DDR3デバイスでは、オプションとして、様々なレベルのZQ(zero quotient)キャリブレーションシーケンスが要求されることがある。このキャリブレーションシーケンスでは、保証されたシステムクワイエットタイムが必要とされることがあるが、電力消費量が多いことがあり、システム内の別のI/Oが同時にスイッチングされていないことが要求されることがある。従って、小さい容量の複数の異なる物理DRAMデバイスへのリフレッシュ命令を時間的にずらすことによって、より大きな容量の論理DRAMデバイスにおけるリフレッシュ命令をエミュレートすることができる。リフレッシュ命令を時間的にずらすことにより、オプションとして、独立した物理DRAMデバイスのそれぞれを個別に調整するうえで要求されうる保証されたクワイエットタイムを提供することができる。
【0084】
[00115]図13は、別の実施形態による、メモリコントローラが列アクセス命令を遅らせて発行するときの効果を示しているタイミング図1300を図解している。オプションとして、このタイミング図1300は、図1〜図12のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図1300は任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0085】
[00116]図示したように、DRAMデバイスの行アクセスのレイテンシ及び列アクセスのレイテンシの両方をカバーするだけの十分なレイテンシを確保せずに、メモリコントローラによって列アクセス命令が発行されるメモリシステムにおいては、インタフェース回路は、次の列アクセスが必ず空きバンクにアドレッシングされるように、複数の行アクセス命令を複数のDRAMデバイスに送ることができる。例示的な一実施形態においては、物理デバイスの行サイズが1キロバイト(KB)であり、論理デバイスの行サイズが2KBである。この場合、インタフェース回路は、2つの異なる物理デバイスにおいて1KBの2つの行をアクティブ化することができる(tRRDの期間内に同じデバイスにおいて2行をアクティブ化することはできないため)。別の例示的な実施形態においては、物理デバイスの行サイズが1KBであり、論理デバイスの行サイズが4KBである。この場合、4KBの行の任意の部分を対象としうる列アクセス命令の到着に備えて準備するため、1KBの4つの行をオープンすることができる。
【0086】
[00117]一実施形態においては、メモリコントローラは、列アクセス命令を早期に発行することができる。インタフェース回路は、このような早期の発行を、任意の望ましい方式において、例えば、DDR2デバイス及びDDR3デバイスのアディティブレイテンシ(additive latency)特性を使用して、行うことができる。更に、インタフェース回路は、1つの特定のDRAMデバイスにおける1つの特定の行をアクティブ化することができる。これにより、より大きな容量の論理DRAMデバイスにおいて、行の一部をアクティブ化することができる。
【0087】
[00118]図14は、更に別の実施形態による、メモリコントローラが列アクセス命令を早期に発行するときの効果を示しているタイミング図1400を図解している。オプションとして、このタイミング図1400は、図1〜図13のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図1300は任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0088】
[00119]この実施形態においては、メモリコントローラは、列アクセス命令を早期に、すなわち、行アクティブ化命令がDRAMデバイスに発行される前に、発行することができる。従って、インタフェース回路は、列アドレスの一部を取得し、それを行アドレスと結合して行の一部のアドレスを形成することができる。これを目的として、インタフェース回路は、列アクセス命令が対象としている行をアクティブ化することができる。単なる一例として、物理デバイスの行サイズが1KBであり、論理デバイスの行サイズが2KBである場合、早期の列アクセス命令によって、インタフェース回路は1KBの1つの行をアクティブ化することができる。従って、インタフェース回路は、物理デバイスの行サイズよりも大きな行サイズを有する論理デバイスにおける行の一部のアクティブ化を、追加のピン或いは特殊な命令を使用する必要なしに実施することができる。
【0089】
[00120]図15の(A)〜(C)は、別の実施形態による、複数のDRAM積層体を備えているDIMMを示している。オプションとして、このDIMMは、図1〜図14において実施することができる。当然ながら、このDIMMは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0090】
[00121]図示したように、複数のDRAM積層体を備えているDIMMが提供されており、DRAM積層体のそれぞれが、複数のDIMMにまたがるビットスライス(bit slice)を備えている。一例として、図15の(A)は、4つのDIMM(例えば、DIMM A、DIMM B、DIMM C、DIMM D)を示している。更に、この例においては、4つのDIMMにまたがる9個のビットスライス(識別符号DA0,...,DA6,...,DA8が付けられている)が存在している。ビットスライス「6」は、ブロック1510に囲んで示してある。図15の(B)は、バッファ搭載DRAM積層体(buffered DRAM stack)を示している。バッファ搭載DRAM積層体1530は、バッファ集積回路(1520)と、DRAMデバイスDA6,DB6,DC6,DD6とを備えている。従って、ビットスライス6はデバイスDA6,DB6,DC6,DD6から生成されている。図15の(C)は、複数のバッファ搭載DRAM積層体を備えている高密度DIMMの平面図である。高密度DIMM(1540)は、個々のDRAMの代わりに、バッファ搭載DRAM積層体(1550)を備えている。
【0091】
[00122]以下に、いくつかの例示的な実施形態を示す。
【0092】
[00123]より大きなPCB領域を必要とすることなくシステムの総記憶容量を増大させることのできる、DIMMの密度が高い配置構成。従って、より高い密度のDIMMが、現在のDIMMの機械的制約及び空間的制約の中に収まる。
【0093】
[00124]より高い密度のDIMMを、既存のDIMMの熱設計枠(thermal envelope)の中に収めることのできる、電力損失を分散させた配置構成。1枚のDIMM上に複数のバッファを備えている実施形態においては、バッファリング機能の電力損失がDIMM全体に拡散する。
【0094】
[00125]システムのパフォーマンスを高めるため、レイテンシを累積させない(非アディティブ)方式の配置構成。レイテンシを累積させない方式の配置構成においては、特定のDIMM上のバッファ集積回路を通じてのレイテンシは、そのDIMMにアクセスするときにのみ発生する。
【0095】
[00126]バッファ搭載DRAM積層体の実施形態においては、積層体の複数のDRAMデバイスは、バッファ集積回路よりも電気的に後ろに位置している。言い換えれば、バッファ集積回路は、電気的には積層体の複数のDRAMデバイスとホスト電子システムとの間に配置されており、積層化されているDRAMデバイスとホストシステムとの間で渡される信号の一部又はすべてをバッファリングする。DRAMデバイスは標準的な既製の高速デバイス(例えば、DDR SDRAM或いはDDR2 SDRAM)であるため、バッファ集積回路は、いくつかの信号(例えばクロック)を再生成しなければならないことがあり、その一方で、別の信号(例えばデータ信号)を、それらのジッタを最小にするためクロック又はデータストローブに再同期させなければならないことがある。更に別の信号(例えばアドレス信号)は、論理回路(例えば復号器)によって操作することができる。バッファ集積回路のいくつかの実施形態においては、DRAMデバイスとホスト電子システムとの間の信号の一部又はすべてを再生成しない、又は再同期させない、又は論理的に操作しない。
【0096】
[00127]バッファ集積回路及びDRAMデバイスは、多くの異なる方式において物理的に配置することができる。一実施形態においては、バッファ集積回路及びDRAMデバイスを、すべて同じ積層体に含めることができる。別の実施形態においては、バッファ集積回路を、DRAM集積回路の積層体とは個別にすることができる(すなわち、バッファ集積回路を積層体の外側とすることができる)。更に別の実施形態においては、バッファ集積回路よりも電気的に後ろに位置しているDRAM集積回路を複数の積層体に含めることができる(すなわち、バッファ集積回路がDRAM集積回路の複数の積層体をインターフェースすることができる)。
【0097】
[00128]一実施形態においては、バッファ集積回路よりも電気的に後ろに位置しているDRAMデバイスが、積層体の全DRAMデバイスの容量の合計値に等しい容量を有する1つのDRAM集積回路として、ホストシステムによって認識されるように、バッファ集積回路を設計することができる。従って、例えば、積層体に8個の512MB DRAM集積回路が含まれている場合、この積層体が1つの4GB DRAM集積回路としてホストシステムに認識されるように、この実施形態のバッファ集積回路を設計する。この場合、アンバッファードDIMM、レジスタードDIMM、SO−DIMM、又はFB−DIMMを、個々のDRAMデバイスではなく、バッファを搭載したDRAM積層体を使用して構築することができる。例えば、バッファ搭載DRAM積層体を使用するダブル(2)ランクのレジスタードDIMMでは、18個の積層体を備えることができ、そのうちの9個の積層体をDIMM PCBの片面に配置し、ホスト電子システムからの第1の集積回路セレクト信号によって制御することができ、9個の積層体をDIMM PCBの反対面に配置し、ホスト電子システムからの第2の集積回路セレクト信号によって制御することができる。これらの積層体のそれぞれが、複数のDRAMデバイス、及びバッファ集積回路を含んでいることができる。
【0098】
[00129]図16Aは、更に別の実施形態による、バッファ搭載DRAM積層体を備えているDIMM PCBを示している。オプションとして、このDIMM PCBは、図1〜図15において実施することができる。当然ながら、このDIMM PCBは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0099】
[00130]図示したように、DIMM PCBの上面及び下面の両方が、複数のバッファ搭載DRAM積層体(例えば、1610及び1620)を備えている。なお、図を単純にするため、レジスタードDIMMのレジスタ及びクロックPLLの集積回路は示していない。
【0100】
[00131]図16Bは、更に別の実施形態による、4GB DRAMをエミュレートするバッファ搭載DRAM積層体を示している。オプションとして、このバッファ搭載DRAM積層体は、図1〜図16Aにおいて実施することができる。当然ながら、このバッファ搭載DRAM積層体は任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0101】
[00132]一実施形態においては、DRAMデバイスのバッファ搭載積層体をホストシステムに1つのDRAMデバイスとして認識させる、又は1つのDRAMデバイスをエミュレートすることができる。このような場合、ホストシステムから認識されるメモリバンクの数を、積層体における利用可能なバンクの数よりも小さくすることができる。説明を目的として、積層体に8個の512MB DRAM集積回路が含まれている場合、この実施形態のバッファ集積回路によって、ホストシステムからは積層体が1つの4GB DRAM集積回路であるように認識される。従って、積層体に32個のバンク(512MBの集積回路あたり4つのバンク×8個の集積回路)が存在している場合であっても、この実施形態のバッファ集積回路では、ホストシステムには8個のバンクが認識されるのみであり、なぜなら、規格によると4GB DRAMは8個のバンクのみを有するためである。この例において、8個の512MB DRAM集積回路を物理DRAMデバイスと称することができ、1つの4GB DRAM集積回路を仮想DRAMデバイスと称することができる。同様に、物理DRAMデバイスのバンクを物理バンクと称することができ、仮想DRAMデバイスのバンクを仮想バンクと称することができる。
【0102】
[00133]本発明の別の実施形態においては、n個のDRAMデバイスの積層体が、mランクのDRAMデバイス(n?m且つm?2)としてホストに認識されるように、バッファ集積回路が設計されている。説明を目的として、積層体に8個の512MB DRAM集積回路が含まれている場合、この実施形態のバッファ集積回路によって、積層体を2ランクの2GB DRAMデバイスとして認識させる(m=2の場合)、又は4ランクの1GB DRAMデバイスとして認識させる(m=4の場合)、又は8ランクの512MB DRAMデバイスとして認識させる(m=8の場合)ことができる。結果として、8個の512MB DRAMデバイスの積層体は、16個の仮想バンク(m=2、2GBの仮想DRAMあたり8個のバンク×2ランク)、又は32個の仮想バンク(m=4、1GB DRAMあたり8個のバンク×4ランク)、又は32個のバンク(m=8、512MB DRAMあたり4つのバンク×8ランク)を備えることができる。
【0103】
[00134]一実施形態においては、ランクの数は、ホストシステムからバッファ集積回路に接続されている集積回路セレクト信号の数によって決定することができる。例えば、最も広く使用されている、JEDEC準拠のDIMMコネクタのピンアウトは、2つの集積回路セレクト信号を有する。従って、この実施形態においては、DIMMコネクタからの2つの集積回路セレクト信号を、DIMM上のバッファ集積回路のそれぞれにルーティングすることによって、積層体のそれぞれを2つのDRAMデバイスとして認識させる(バッファ集積回路のそれぞれが異なるランクに属している)ことができる。説明を目的として、いま、DRAMデバイスの積層体のそれぞれが専用のバッファ集積回路を備えており、マザーボード上のDIMMコネクタに接続されている2つの集積回路セレクト信号に識別符号CS0#及びCS1#を付けるものと想定する。更に、積層体のそれぞれが8ビット幅であり(すなわち、8本のデータピンを備えている)、積層体には、バッファ集積回路と、8ビット幅の8個の512MB DRAM集積回路とが含まれているものと想定する。この例においては、CS0#及びCS1#の両方が、DIMM上のすべての積層体に接続されている。従って、9個の積層体を備えている、シングルサイドのレジスタードDIMM(CS0#及びCS1#が9個の積層体のすべてに接続されている)では、実質的に2つの2GBランク(ランクのそれぞれが8個のバンクを有する)を備えている。
【0104】
[00135]別の実施形態においては、18個の積層体(PCBの面のそれぞれに9個ずつ)を使用して、ダブルサイドのレジスタードDIMMを構築することができ、この場合、積層体のそれぞれは、4ビット幅であり、バッファ集積回路と、4ビット幅の8個の512MB DRAMデバイスとを含んでいる。上と同様に、2つの集積回路セレクト信号CS0#及びCS1#がすべての積層体に接続されている場合、そのDIMMは、実質的に2つの4GBランク(ランクのそれぞれが8個のバンクを有する)を備えている。しかしながら、ランクの容量の半分はDIMM PCBの片面に存在しており、残りの半分が反対面に存在している。例えば、いま、DIMM上の積層体に番号S0〜S17を付け、積層体S0〜S8がDIMM PCBの片面に存在しており、積層体S9〜S17がPCBの反対面に存在しているものとする。積層体S0をホストシステムのデータ信号線DQ[3:0]に接続し、積層体S9をホストシステムのデータ信号線DQ[7:4]に接続し、積層体S1をデータ信号線DQ[11:8]に接続し、積層体S10をデータ信号線DQ[15:12]に接続し、以下同様に接続することができる。積層体S0の8個の512MB DRAMデバイスに識別符号S0_M0〜S0_M7を付けることができ、積層体S9の8個の512MB DRAMデバイスに識別符号S9_M0〜S9_M7を付けることができる。一例においては、積層体S0に関連付けられているバッファ集積回路は、集積回路S0_M0〜S0_M3を使用して、第1のランクに属している(すなわち、集積回路セレクト信号CS0#によって制御される)2GB DRAM集積回路をエミュレートすることができる。同様に、積層体S0に関連付けられているバッファ集積回路は、集積回路S0_M4〜S0_M7を使用して、第2のランクに属している(すなわち、集積回路セレクト信号CS1#によって制御される)2GB DRAM集積回路をエミュレートすることができる。従って、一般的には、集積回路Sn_M0〜Sn_M3を使用して、第1のランクに属している2GB DRAM集積回路をエミュレートすることができ、その一方で、集積回路Sn_M4〜Sn_M7を使用して、第2のランクに属している2GB DRAM集積回路をエミュレートすることができる(nは積層体の番号を表す(すなわち、0?n?17))。なお、上述した配置構成は、説明を目的としているに過ぎない。請求項の概念及び範囲から逸脱することなく、別の配置構成を使用して同じ結果を達成することができる。例えば、集積回路S0_M0,S0_M2,S0_M4,S0_M6を、これらに関連付けられるバッファ集積回路によって1つのグループとし、第1のランクにおける2GB DRAM集積回路をエミュレートすることができ、その一方で、集積回路S0_M1,S0_M3,S0_M5,S0_M7を、これらに関連付けられるバッファ集積回路によって1つのグループとし、DIMMの第2のランクにおける2GB DRAM集積回路をエミュレートすることができる。
【0105】
[00136]図17Aは、別の実施形態による、バッファ集積回路とDRAM積層体とを使用するDIMMの例を示している。オプションとして、このDIMMは、図1〜図16において実施することができる。当然ながら、このDIMMは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0106】
[00137]なお、図を単純にする目的で、レジスタードDIMMのレジスタ及びクロックPLLの集積回路は示していない。DIMM PCB1700は、DIMM PCB1700の上面におけるバッファ搭載DRAM積層体(例えばS5)と、DIMM PCB1700の下面におけるバッファ搭載DRAM積層体(例えばS15)とを含んでいる。バッファ搭載積層体のそれぞれが2つのDRAMをエミュレートする。
【0107】
[00138]図17Bは、更に別の一実施形態による、物理DRAM積層体を示している。オプションとして、この物理DRAM積層体は、図1〜図17Aにおいて実施することができる。当然ながら、この物理DRAM積層体は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0108】
[00139]例えば、積層体1720は、4ビット幅の8個の512MB DRAMデバイスと、バッファ集積回路1730とを備えている。図示したように、Sn_M0、Sn_M1、Sn_M2、及びSn_M3から成る第1のデバイスグループは、CS0#によって制御される。Sn_M4、Sn_M5、Sn_M6、及びSn_M7から成る第2のデバイスグループは、CS1#によって制御される。なお、8個のDRAMデバイス及びバッファ集積回路が1つの積層体に属しているものとして示してあるが、これは単なる一例である。別の実施形態も可能である。例えば、バッファ集積回路1730をDRAMデバイスの積層体の外側とすることができる。更に、8個のDRAMデバイスを複数の積層体に編成することもできる。
【0109】
[00140]図18A及び図18Bは、更に別の実施形態による、マルチランクのバッファ集積回路とDIMMとを示している。オプションとして、このマルチランクバッファ集積回路及びDIMMは、図1〜図17において実施することができる。当然ながら、このマルチランクバッファ集積回路及びDIMMは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0110】
[00141]マルチランクの実施形態のオプションとしての変形形態においては、DRAM集積回路の複数の積層体に1つのバッファ集積回路を関連付けることができる。図18A及び図18Bに例示した実施形態においては、1つのバッファ集積回路がDRAM集積回路の2つの積層体に専用となっている。図18Bは、2つの積層体(DIMM PCBの面のそれぞれに1つの積層体)と、DIMM PCBの片面に配置されている1つのバッファ集積回路B0とを示している。しかしながら、この実施形態は、完全に説明を目的としているに過ぎない。バッファ集積回路が関連付けられている複数の積層体を、DIMM PCBの同じ面に配置することができ、或いは、PCBの両面に配置することができる。
【0111】
[00142]図18A及び図18Bに例示した実施形態においては、DRAMデバイスの積層体のそれぞれが512MBの8個の集積回路を含んでいる。積層体には番号S0〜S17が付けられており、積層体のそれぞれの中で、集積回路に識別符号Sn_M0〜Sn_M7(nは0〜17)が付けられている。更に、この例の場合、バッファ集積回路は8ビット幅であり、バッファ集積回路には番号B0〜B8が付けられている。バッファB0には、データ信号線DQ[7:0]と同様に、2つの集積回路セレクト信号CS0#及びCS1#が接続されている。図示したように、積層体S0〜S8が一次積層体であり、積層体S9〜S17はオプションの積層体である。積層体S9は、DIMM PCBの反対の面、積層体S0(及びバッファB0)のちょうど反対側に配置されている。積層体S9の集積回路はバッファB0に接続されている。言い換えれば、積層体S0及び積層体S9のDRAMデバイスがバッファB0に接続されており、バッファB0がホストシステムに接続されている。DIMMが一次積層体S0〜S8のみを含んでいる場合、バッファ集積回路B0は、積層体S0の8個のDRAMデバイスをエミュレートしてホストシステムに2つの2GBデバイスとして認識させ、この場合、一方の2GBデバイスがCS0#によって制御され、他方の2GBデバイスがCS1#によって制御される。DIMMが一次積層体S0〜S8とオプションの積層体S9〜S17の両方を含んでいる場合、バッファ集積回路B0は、積層体S0及び積層体S9の16個の512MB DRAMデバイスをまとめてエミュレートしてホストシステムに2つの4GB DRAMデバイスとして認識させ、この場合、一方の4GB DRAMデバイスがCS0#によって制御され、他方の4GB DRAMデバイスがCS1#によって制御される。
【0112】
[00143]なお、上の説明から明らかであるように、このアーキテクチャでは、メモリバス上の電気的負荷とランクの数とが無関係になる。従って、9個の積層体(S0〜S8)と9個のバッファ集積回路(B0〜B8)とによって低密度のDIMMを構築することができ、18個の積層体(S0〜S17)と9個のバッファ集積回路(B0〜B8)とによって高密度のDIMMを構築することができる。なお、DIMM上のバッファ集積回路のそれぞれに集積回路セレクト信号CS0#及びCS1#の両方を接続する必要はない。9個の積層体(S0〜S8)と9個のバッファ集積回路(B0〜B8)とによってシングルランクの低密度DIMMを構築することができ、この場合、DIMM上のバッファ集積回路のそれぞれにCS0#が接続されている。同様に、17個の積層体(S0〜S17)と9個のバッファ集積回路とによってシングルランクの高密度DIMMを構築することができ、この場合、DIMM上のバッファ集積回路のそれぞれにCS0#が接続されている。
【0113】
[00144]マルチランクバッファを使用してマルチランクの実施形態を実施するDIMMは、形状因子が小さくDIMMスロットの数が制限されるシステムにおいてオプションとして使用することができる。例えば、いま、8個の集積回路セレクト信号を有し、従って、最大8個のランクをサポートするプロセッサを考える。このようなプロセッサは、4つの2ランクDIMM又は8個のシングルランクDIMM、又は、8個のランクを提供するその他の任意の組合せをサポートすることができる。このとき、ランクのそれぞれがy個のバンクを有し、すべてのランクが同一であると想定すると、このプロセッサは、任意の瞬間に最大8*y個のメモリページをオープン状態に維持することができる。形状因子が小さいサーバ(例えば、ブレードサーバ或いは1Uサーバ)では、DIMMスロットのための物理的空間がプロセッサあたり2つのみである場合がある。すなわち、そのような形状因子の小さいサーバにおけるプロセッサは、たとえ8*y個のページをオープン状態に維持する能力を備えていても、オープンすることができるメモリページは最大で4*y個である。そのようなシステムにおいては、DRAMデバイス及びマルチランクバッファ集積回路の積層体を含んでいるDIMMを使用することにより、システム内のDIMMスロットの数が、そのプロセッサがサポートすることのできる最大のスロット数よりも少ない場合であっても、プロセッサが8*y個のメモリページをオープン状態に維持するようにDIMMを設計することができる。これを達成するための一方法は、ホストシステムの集積回路セレクト信号のすべてを、マザーボード上のすべてのDIMMスロットの間で割り当てることである。例えば、プロセッサが2つのみの専用DIMMスロットを備えている場合、DIMMコネクタのそれぞれに4つの集積回路セレクト信号を接続することができる。しかしながら、プロセッサが4つの専用DIMMスロットを備えている場合、DIMMコネクタのそれぞれに2つの集積回路セレクト信号を接続することができる。
【0114】
[00145]バッファ及びDIMMの設計を説明する目的で、いま、バッファ集積回路が、ホストシステムからアクセス可能である最大8個の集積回路セレクト信号入力を備えているように設計されているものとする。これらの集積回路セレクト信号入力のそれぞれに対して、ホストシステムの集積回路セレクト信号のロジックハイの電圧レベルとロジックローの電圧レベルとの間の電圧までの弱いプルアップ回路を設けることができる。例えば、VDDQとGND(グランド)との間の中間の電圧(VTT)までのプルアップ抵抗器を接続することができる。これらのプルアップ抵抗器はDIMM PCB上に配置することができる。マザーボードの設計に応じて、ホストシステムからの2つ以上の集積回路セレクト信号を、DIMMコネクタ、従ってバッファ集積回路の集積回路セレクト信号入力に接続することができる。パワーアップ時、バッファ集積回路は、自身のいくつかの集積回路セレクト信号入力において有効なローロジックレベル又はハイロジックレベルを検出することができ、別のいくつかの集積回路セレクト信号入力においてVTTを検出することができる。これにより、積層体におけるランクの数が、有効な集積回路セレクト信号入力の数に一致するように、バッファ集積回路によって積層体におけるDRAMを構成設定することができる。
【0115】
[00146]図19A及び図19Bは、別の実施形態による、ホストシステムからの有効な集積回路セレクト信号の数に等しい数のランクをDIMM上に提供するバッファを示している。オプションとして、このバッファは、図1〜図18において実施することができる。当然ながら、このバッファは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0116】
[00147]図19Aは、2枚のDIMMに接続されているメモリコントローラを示している。ホストシステムのメモリコントローラ(1900)は、8本の集積回路セレクト(CS)信号線(CS0#〜CS7#)を駆動する。最初の4本の信号線(CS0#〜CS3#)は、第1のDIMM(1910)におけるメモリランクを選択するために使用され、残りの4本の信号線(CS4#〜CS7#)は、第2のDIMM(1920)におけるメモリランクを選択するために使用される。図19Bは、DIMMのランクの数を構成設定するために使用される、DIMMにおけるバッファ及びプルアップ回路を示している。この例の場合、バッファ1930は、8個の集積回路セレクト信号入力(CS0#〜CS7#)を含んでいる。DIMM1910上のプルアップ回路は、接続されている集積回路セレクト信号線の電圧を、中間電圧値(すなわち、VDDQとGNDとの中間、VTT)まで吊り上げる。CS0#〜CS3#は、プルアップ回路を介してバッファ1930に接続されている。CS4#〜CS7#はDIMM1910には接続されていない。従って、この例の場合、DIMM1910は、信号線CS0#〜CS3#に基づいてランクを構成設定する。
【0117】
[00148]従来のマザーボードの設計では、集積回路セレクト信号のサブセットがDIMMコネクタのそれぞれに配線によって接続されている。例えば、プロセッサあたり4つのDIMMコネクタが存在する場合、2つの集積回路セレクト信号をDIMMコネクタのそれぞれに配線によって接続することができる。しかしながら、4つのDIMMコネクタのうち2つのコネクタにのみ装着されている場合、たとえプロセッサが8*y個のバンクをサポートしている場合であっても、利用することのできるメモリバンクは4*y個のみであり、なぜなら、4つのDIMMコネクタのうち2つのコネクタのみにDIMMが装着されているためである。メモリバンクの動的な可用性を提供する一方法としては、ホストシステムからのすべての集積回路セレクト信号がマザーボード上のすべてのDIMMコネクタに接続されているように、マザーボードを構成設定する。パワーアップ時、ホストシステムは、システム内の装着済みDIMMコネクタの数を問い合わせ、次いで、すべての装着済みコネクタの間で集積回路セレクト信号を割り当てる。
【0118】
[00149]一実施形態においては、DIMMのそれぞれにおけるバッファ集積回路を、特定の集積回路セレクト信号にのみ応答するようにプログラムすることができる。上と同じ例として、プロセッサが4つの専用DIMMコネクタを備えており、4つのDIMMコネクタのうちの2つのみが装着されている場合を考える。最初の4つの集積回路セレクト信号(例えば、CS0#〜CS3#)が第1のDIMMコネクタに割り当てられ、残りの4つの集積回路セレクト信号(例えば、CS4#〜CS7#)が第2のDIMMコネクタに割り当てられるように、プロセッサをプログラムすることができる。プロセッサは、第1のDIMM上のバッファ集積回路に、信号CS0#〜CS3#に対してのみ応答して信号CS4#〜CS7#を無視するように、命令することができる。更に、プロセッサは、第2のDIMM上のバッファ集積回路に、信号CS4#〜CS7#に対してのみ応答して信号CS0#〜CS3#を無視するように、命令することができる。後の時点において、残りの2つのDIMMコネクタが装着された場合、プロセッサは、第1のDIMM上のバッファ集積回路を、信号CS0#及びCS1#に対してのみ応答するように再プログラムし、第2のDIMM上のバッファ集積回路を、信号CS2#及びCS3#に対してのみ応答するように再プログラムし、第3のDIMM上のバッファ集積回路を、信号CS4#及びCS5#に対してのみ応答するようにプログラムし、第4のDIMM上のバッファ集積回路を、信号CS6#及びCS7#に対してのみ応答するようにプログラムすることができる。この方法によると、この例のプロセッサは、装着されているDIMMコネクタの数には関係なく、8*y個のページをオープン状態に維持することができる(DIMMのそれぞれが最大8個のメモリランクをサポートする能力を備えているものと想定する)。本質的に、この方法では、オープンされるメモリページの数と、システム内のDIMMの数とが無関係になる。
【0119】
[00150]図19Cは、更に別の実施形態による、メモリの論理パーティションとメモリの物理パーティションとの間のマッピングを示している。オプションとして、このマッピングは、図1〜図19Bにおいて実施することができる。当然ながら、このマッピングは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0120】
[00151]複数のオペレーティングシステム及びソフトウェアスレッドを共通のハードウェアプラットフォーム上で同時に実行することのできる実施形態においては、バッファ集積回路は、積層体の1つ以上のメモリデバイスのセットを特定のオペレーティングシステム又はソフトウェアスレッドに割り当てることができ、その一方で、メモリデバイスの別のセットを別のオペレーティングシステム又はスレッドに割り当てることができる。図19Cの例においては、第1のオペレーティングシステムには、物理パーティション1980に対応する第1の論理アドレス範囲1960が割り当てられ、それ以外のすべてのオペレーティングシステムには、物理パーティション1990に対応する第2の論理アドレス範囲1970が割り当てられるように、ホストシステム(図示していない)が動作することができる。第1以外のオペレーティングシステム又はスレッドから第1のオペレーティングシステム又はスレッドへのコンテキストスイッチ時、ホストシステムは、1つ又は複数のDIMM上のバッファに、コンテキストスイッチの特性を通知することができる。この通知は、例えば、ホストシステムが命令又は制御信号をメモリバスの信号線を通じて(すなわち、インバンドシグナリング)、又は個別の信号線を通じて(すなわちサイドバンドシグナリング(side band signaling))バッファ集積回路に送ることによって、達成することができる。サイドバンドシグナリングの例として、命令をSMBusを通じてバッファ集積回路に送る。次いで、バッファ集積回路は、第1のオペレーティングシステム又はスレッドに割り当てられているメモリ集積回路1980をアクティブ状態にする一方で、(現在実行されていない)それ以外のオペレーティングシステム又はスレッドに割り当てられているそれ以外のすべてのメモリ集積回路1990を、低電力モード又はパワーダウンモードにする。このオプションの方法では、メモリ積層体における電力損失が減少するのみならず、ディスクへのアクセスも減少する。例えば、ホストシステムがオペレーティングシステム又はスレッドの実行を一時的に停止するとき、そのオペレーティングシステム又はスレッドに関連付けられているメモリが低電力モードにされるが、メモリの内容は保持される。後の時点においてホストシステムが再びそのオペレーティングシステム又はスレッドに切り換えるとき、関連付けられるメモリがバッファ集積回路によって低電力モードから脱してアクティブ状態にされ、オペレーティングシステム又はスレッドは、関連するデータについてディスクにアクセスする必要なしに、停止した箇所から実行を再開することができる。すなわち、オペレーティングシステム又はスレッドのそれぞれは、他のオペレーティングシステム又はスレッドによってアクセスすることができない自身専用のメインメモリを有する。なお、この実施形態は、シングルランクのバッファ集積回路とマルチランクのバッファ集積回路の両方に適用することができる。
【0121】
[00152]ユーザがホストシステムの記憶容量を増やすことを望むとき、通常の方法は、未使用のDIMMコネクタにメモリモジュールを装着することである。しかしながら、未装着のコネクタが存在しないときには、従来、ユーザは、小さい容量のメモリモジュールを取り外して、より大きい容量の新しいメモリモジュールと交換していた。取り外された小さいモジュールは、別のホストシステムにおいて使用することができるが、実際には一般に破棄される。オプションとして、ユーザは、未装着のDIMMコネクタが存在しないシステムの記憶容量を、現在使用されているモジュールを破棄する必要なしに増大させることができる。
【0122】
[00153]バッファ集積回路を採用する一実施形態においては、コネクタ又はそれ以外の何らかのインターポーザが、DIMM PCBの面のうちバッファ集積回路と同じ面に、又はバッファ集積回路とは反対の面において、DIMM上に配置されている。より大きな記憶容量が望まれるとき、ユーザは、追加のメモリ積層体を含んでいるPCBを、コネクタ又はインターポーザによってDIMM PCBに機械的及び電気的に結合することができる。説明を目的として、一例としてのマルチランクのレジスタードDIMMは、8ビット幅の9個の積層体を備えており、積層体のそれぞれが複数のDRAMデバイスとマルチランクバッファとを含んでいる。この例の場合、9個の積層体をDIMM PCBの一方の面に配置することができ、1つ以上のコネクタ又はインターポーザを、DIMM PCBの反対の面に配置することができる。これにより、DRAMデバイスの積層体を含んでいる追加のPCBを、DIMM PCB上の1つ以上のコネクタ又は1つ以上のインターポーザを使用してDIMM PCBに機械的及び電気的に結合することによって、DIMMの容量を増大させることができる。この実施形態の場合、DIMM PCB上のマルチランクバッファ集積回路は、追加の積層体の存在を検出し、それら追加の積層体を使用する1つ以上の配置構成に自身を構成設定することにより、追加の積層体を使用することができる。なお、追加のPCB上の積層体の記憶容量は、DIMM PCB上の積層体の記憶容量と同じである必要はない。更に、DIMM PCB上の積層体に1つの集積回路セレクト信号を接続する場合、追加のPCB上の積層体に別の集積回路セレクト信号を接続することができる。或いは、DIMM PCB上の積層体と追加のPCB上の積層体とを、集積回路セレクト信号の同じセットに接続することができる。
【0123】
[00154]図20Aは、更に別の実施形態による、メモリコントローラとDIMMとの間の接続構成を示している。オプションとして、このメモリコントローラ及びDIMMは、図1〜図19において実施することができる。当然ながら、このメモリコントローラ及びDIMMは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0124】
[00155]図20Aは、DIMMにおけるランクの数を、ホストシステムからの命令に基づいて構成設定するメモリシステムを示している。この実施形態の場合、すべての集積回路セレクト信号線(例えば、CS0#〜CS7#)が、DIMM2010及び2020と、メモリコントローラ2030との間に接続されている。
【0125】
[00156]図20Bは、別の実施形態による、ホストシステムからの命令に基づいてランクの数を構成設定するために、集積回路セレクト信号線をDIMM上のバッファに接続する方法を示している。オプションとして、集積回路セレクト信号線をDIMM上のバッファに接続するこの方法は、図1〜図20Aにおいて実施することができる。当然ながら、集積回路セレクト信号線をDIMM上のバッファに接続するこの方法は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0126】
[00157]図20Bは、DIMMにおけるランクの数をホストシステムからの命令に基づいて構成設定するメモリシステムを示している。この実施形態の場合、すべての集積回路セレクト信号線(CS0#〜CS7#)がDIMM2010上のバッファ2040に接続されている。
【0127】
[00158]ビジュアライゼーションプロセッサ(virtualization processor)及びマルチコアプロセッサを使用する場合、複数のオペレーティングシステム及びソフトウェアスレッドを共通のハードウェアプラットフォーム上で同時に実行することが可能である。すなわち、複数のオペレーティングシステム及びスレッドがサーバ内のメモリを共有しなくてはならず、結果としてのコンテキストスイッチに起因して、ハードディスクとメモリとの間での転送が増大することがある。
【0128】
[00159]図21は、更に別の実施形態による、アップグレード能力を有する、コネクタ又はインターポーザを備えたDIMM PCBを示している。オプションとして、このDIMM PCBは、図1〜図20において実施することができる。当然ながら、このDIMM PCBは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0129】
[00160]DIMM PCB2100は、複数のバッファ搭載積層体(例えばバッファ搭載積層体2130)を備えている。図示したように、バッファ搭載積層体2130は、バッファ集積回路2140とDRAMデバイス2150とを含んでいる。アップグレードモジュールPCB2110は、コネクタ又はインターポーザ2180及び2170を介してDIMM PCB2100に接続されており、DRAMの積層体(例えばDRAM積層体2120)を含んでいる。この例においては、図21に示したように、アップグレードモジュールPCB2110は、8ビット幅の9個の積層体を含んでおり、積層体のそれぞれがDRAM集積回路2160のみを含んでいる。DIMM PCB2100上のマルチランクバッファ集積回路2140のそれぞれは、追加の積層体が検出された時点で、自身が電気的にホストシステムとDRAM集積回路の2つの積層体との間に位置するように自身を再構成設定する。すなわち、再構成設定の後、バッファ集積回路は、DIMM PCB2100上の積層体、及びアップグレードモジュールPCB2110上の対応する積層体と、ホストシステムとの間に、電気的に位置している。しかしながら、バッファ集積回路(2140)と、DRAM積層体(2120)と、DIMM PCB2100と、アップグレードモジュールPCB2110は、請求項の概念及び範囲から逸脱することなく、同じ結果が達成される様々な方式における別の実施形態として構成設定することができる。例えば、追加のPCB上の積層体2120がバッファ集積回路を含んでいることもできる。従って、この例においては、アップグレードモジュール2110が1つ以上のバッファ集積回路を含んでいることができる。
【0130】
[00161]バッファ集積回路は、ホストシステムからのアドレスを、いくつかの方法において積層体のDRAMデバイスにマッピングすることができる。一実施形態においては、仮想(又はエミュレートされた)DRAMの1つのバンクが物理バンクのセットにマッピングされるように、アドレスを線形的にマッピングすることができ、この場合、セット内の物理バンクのそれぞれが、相異なる物理DRAMデバイスの一部である。説明を目的として、いま、それぞれが4つのメモリバンクを有する8個の512MB DRAM集積回路(すなわち、物理DRAMデバイス)を含んでいる積層体を考える。更に、バッファ集積回路がマルチランクの実施形態であり、ホストシステムには、それぞれが8個のバンクを有する2つの2GB DRAMデバイス(すなわち、仮想DRAMデバイス)として認識されるものと想定する。物理DRAMデバイスに識別符号M0〜M7を付けるならば、次の表1に示したような線形アドレスマッピングを実施することができる。
【表1】
【0131】
[00162]図22は、更に別の実施形態による、マルチランクバッファ集積回路において使用する線形アドレスマッピングの例を示している。オプションとして、この線形アドレスマッピングは、図1〜図21において実施することができる。当然ながら、この線形アドレスマッピングは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0132】
[00163]次の表2は、シングルランクバッファ集積回路による線形アドレスマッピングの例を示している。
【表2】
【0133】
[00164]図23は、別の実施形態による、シングルランクバッファ集積回路による線形アドレスマッピングの例を示している。オプションとして、この線形アドレスマッピングは、図1〜図22において実施することができる。当然ながら、この線形アドレスマッピングは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0134】
[00165]図23に示した構成設定を使用すると、DRAMデバイスの積層体は、8個のメモリバンクを有する1つの4GB集積回路として認識される。
【0135】
[00166]図24は、更に別の実施形態による、マルチランクバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。オプションとして、この「ビットスライス」アドレスマッピングは、図1〜図23において実施することができる。当然ながら、この「ビットスライス」アドレスマッピングは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0136】
[00167]別の実施形態においては、ホストシステムからのアドレスの1つ以上のバンク(仮想バンク)が積層体の1つの物理DRAM集積回路にマッピングされる(「バンクスライス(bank slice)」マッピング)ように、ホストシステムからのアドレスをバッファ集積回路によってマッピングすることができる。図24は、マルチランクバッファ集積回路によるバンクスライスアドレスマッピングの例を示している。更に、次の表3は、バンクスライスアドレスマッピングの例を示している。
【表3】
【0137】
[00168]この例の積層体は、それぞれが4つのメモリバンクを有する8個の512MB DRAM集積回路を含んでいる。この例においては、マルチランクバッファ集積回路を想定しており、すなわち、ホストシステムは、それぞれが8個のバンクを有する2つの2GB DRAMデバイスとして積層体を認識する。
【0138】
[00169]バンクスライスアドレスマッピングにより、仮想DRAMにおいて、それを構成する物理DRAMデバイスに特有のいくつかのタイミング制約を低減又は排除することができる。例えば、物理DRAMデバイスには、1つの物理DRAMデバイスにアクティブ化操作を発行することのできる頻度を制限するtFAW(4バンクアクティブ化ウィンドウ)制約が存在することがある。しかしながら、バンクスライスアドレスマッピングを使用する仮想DRAM回路には、この制約が存在しない。一例として、図24におけるアドレスマッピングでは、仮想DRAMデバイスの2つのバンクが1つの物理DRAMデバイスにマッピングされる。従って、ホストシステムがtRCウィンドウ以内に3つ以上の連続するアクティブ化命令を特定の物理DRAMデバイスに発行することが、tRCタイミングパラメータによって防止されるため(tRC>tFAW)、tFAW制約が排除される。同様に、以下に図25に関連して説明するように、このアドレスマッピングを使用する仮想DRAMデバイスでは、それを構成する物理DRAMデバイスのtRRD制約が排除される。
【0139】
[00170]図25は、更に別の実施形態による、シングルランクバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。オプションとして、この「ビットスライス」アドレスマッピングは、図1〜図24において実施することができる。当然ながら、この「ビットスライス」アドレスマッピングは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0140】
[00171]次の表4は、シングルランクバッファ集積回路によるバンクスライスマッピングを示している。
【表4】
【0141】
[00172]この例の積層体は、8個の512MB DRAMデバイスを含んでおり、従って、ホストシステムは、この積層体を、8個のバンクを有する1つの4GBデバイスとして認識する。上に示したアドレスマッピングは、説明を目的としているに過ぎない。請求項の概念及び範囲から逸脱することなく、別のマッピングを実施することができる。
【0142】
[00173]更に、バンクスライスアドレスマッピング方式では、バッファ集積回路又はホストシステムは、DIMM上のDRAMデバイスの電力管理をより細かいレベルで行うことができる。これを説明するため、いま、図25に示したアドレスマッピングを使用する仮想DRAMデバイスを考え、仮想DRAMデバイスのバンクのそれぞれが1つの物理DRAMデバイスに対応しているものとする。従って、この仮想DRAMデバイスのバンク0(すなわち、仮想バンク0)へのアクセスが行われるとき、対応する物理DRAMデバイスM0をアクティブモードにすることができる。しかしながら、仮想バンク0への未処理アクセスが存在しないとき、バッファ集積回路又はホストシステム(或いはシステム内のその他の任意のエンティティ)によって、DRAMデバイスM0を低電力(例えばパワーダウン)モードにすることができる。物理DRAMデバイスを低電力モードにすることは可能であるが、物理DRAMデバイスの特定のバンク(又は一部)を低電力モードにし、同時にDRAMデバイスの残りのバンク(又は一部)をアクティブモードにしておくことはできない。しかしながら、仮想DRAMデバイスは複数の物理DRAMデバイスを使用してエミュレートされているため、仮想DRAM回路のバンク又はバンクのセットを低電力モードにし、同時に仮想DRAM回路の別のバンクをアクティブモードにすることができる。例えば、図25及び図23から理解することができるように、バンクスライスマッピング(図25)では、1つの物理DRAMデバイスにマッピングされる仮想バンクが、線形マッピング(図23)の場合よりも少ない。従って、任意の瞬間に物理DRAMデバイスにおける(物理)バンクのすべてがプリチャージ状態にある確率は、線形マッピングの場合よりもバンクスライスマッピングの場合の方が高い。従って、バンクスライスマッピングを使用するときの方が、バッファ集積回路又はホストシステム(或いはシステム内のその他の何らかのエンティティ)によって物理DRAMデバイスがより頻繁に低電力モードにされる。
【0143】
[00174]いくつかの市場分野においては、メインメモリ(通常はDRAM)の内容を、定期的に、又は特定のイベントが起きたときに保持することが望ましいことがある。例えば、スーパーコンピュータの市場においては、ホストシステムがメインメモリの内容を定期的にハードドライブに書き込むことが一般的である。すなわち、ホストシステムは、定期的なチェックポイントを作成する。このようにチェックポイントを作成する方法により、システムクラッシュの場合に、システムは最初からではなく最後のチェックポイントからプログラムの実行を再開することができる。別の市場においては、電源障害或いはシステムクラッシュに対して保護するため、1つ以上のアドレス範囲の内容を定期的に不揮発性メモリに格納することが望ましいことがある。本文書に開示したバッファ集積回路においては、1つ以上の不揮発性メモリ集積回路(例えばフラッシュメモリ)を積層体に組み込むことによって、これらの機能のすべてをオプションとして実施することができる。いくつかの実施形態においては、バッファ集積回路は、DRAMデバイス集積回路及び不揮発性メモリ集積回路を含んでいる1つ以上の積層体をインターフェースするように設計されている。なお、これらの積層体のそれぞれは、DRAMデバイスのみを含んでいる、又は不揮発性メモリ集積回路のみを含んでいる、又はDRAMと不揮発性メモリ集積回路の両方を含んでいることができる。
【0144】
[00175]図26A及び図26Bは、別の実施形態による、DRAM集積回路及び不揮発性メモリ集積回路を含んでいるバッファ搭載積層体の例を示している。オプションとして、このバッファ搭載積層体は、図1〜図25において実施することができる。当然ながら、このバッファ搭載積層体は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0145】
[00176]DIMM PCB2600は、バッファ搭載積層体(バッファ2610及びDRAM2620)と、フラッシュ2630とを含んでいる。図26Bに示した別の実施形態においては、DIMM PCB2640は、バッファ搭載積層体(バッファ2650、DRAM2660、及びフラッシュ2670)を含んでいる。オプションのバッファ非搭載積層体は、少なくとも1つの不揮発性メモリデバイス(例えばフラッシュ2690)又はDRAMデバイス2680を含んでいる。バッファ集積回路に接続されているすべての積層体をバッファ集積回路と同じPCB上に載せることができ、或いは、積層体のいくつかを同じPCB上に載せ、それ以外の積層体を、バッファ集積回路を含んでいるPCBにコネクタ又はインターポーザによって電気的且つ機械的に結合されている別のPCB上に載せることができる。
【0146】
[00177]いくつかの実施形態においては、バッファ集積回路は、自身がインターフェースする積層体のDRAMデバイスの内容の一部又はすべてを、自身がインターフェースする積層体の不揮発性メモリ集積回路にコピーする。このイベントは、例えば、ホストシステムからバッファ集積回路への命令又は信号によって、又はバッファ集積回路への外部信号によってトリガーする、若しくは、電源障害などのイベント又は致命的(catastrophic)条件が(バッファ集積回路によって)検出されたときにトリガーすることができる。一例として、いま、バッファ集積回路が、4GBのDRAMメモリと4GBの不揮発性メモリとを含んでいる複数の積層体をインターフェースしているものと想定する。ホストシステムは、DRAMメモリの内容を不揮発性メモリにコピーするための命令を、定期的にバッファ集積回路に発行することができる。すなわち、ホストシステムは、DRAMメモリの内容のチェックポイントを定期的に作成する。システムクラッシュの場合、再起動時に、不揮発性メモリの内容をDRAMメモリにコピーして戻すことによって、DRAMの内容を復元することができる。これにより、メモリのチェックポイントを定期的に作成する能力がホストシステムに提供される。
【0147】
[00178]別の実施形態においては、バッファ集積回路は、電源レール(すなわち、電圧レール又は電圧プレーン)を監視して、致命的なイベント(例えば電源障害)を検出することができる。バッファ集積回路は、致命的なイベントを検出した時点で、DRAMメモリの内容の一部又はすべてを不揮発性メモリにコピーすることができる。更に、ホストシステムは、バッファ集積回路がDRAMメモリの内容の一部又はすべてを不揮発性メモリにコピーすることができるように、電源障害の後、少なくともいくらかの時間期間にわたり、無停電電源をバッファ集積回路及びメモリ積層体に提供することができる。別の実施形態においては、ホストシステムの電源障害の場合におけるバッファ集積回路及びメモリ積層体のための内蔵バックアップ電源を、メモリモジュールが備えていることができる。例えば、メモリモジュールは、ホストシステムの電源障害の場合にバッファ集積回路及びメモリ積層体にバックアップ電力を提供するため、バッテリ又は大型キャパシタと、絶縁スイッチ(isolation switch)とをモジュール自身に備えていることができる。
【0148】
[00179]複数のバッファ(それぞれが、DRAM集積回路及び不揮発性メモリ集積回路を含んでいる1つ以上の積層体をインターフェースする)を備えている、上述したようなメモリモジュールを、インスタントオン(instant−on)機能を提供するように構成設定することもできる。このことは、オペレーティングシステムと、それ以外の重要なソフトウェアと、頻繁に使用されるデータとを不揮発性メモリに格納することによって、達成することができる。
【0149】
[00180]システムクラッシュの場合、メインメモリの内容を維持するうえで必要であるすべての必要な信号を、ホストシステムのメモリコントローラが供給できないことがある。例えば、メモリコントローラは、定期的なリフレッシュ命令をメインメモリに送ることができず、これに起因してメモリ内のデータが消失することがある。システムクラッシュの場合におけるそのようなデータ消失が防止されるように、バッファ集積回路を設計することができる。一実施形態においては、バッファ集積回路は、ホストシステムのメモリコントローラからの信号の状態を監視して、システムクラッシュを検出することができる。一例として、所定の時間長又はプログラム可能な時間長にわたりメモリバス上にアクティビティが存在していない場合、或いは、バッファ集積回路がメモリコントローラから不正又は無効な命令を受け取った場合に、システムクラッシュを検出するように、バッファ集積回路を設計することができる。或いは、システムエラー、システム停止、又はシステムクラッシュが起きたときにアサートされる1つ以上の信号を、バッファ集積回路が監視することができる。例えば、Opteronプロセッサをベースとするシステムにおいて、バッファ集積回路は、HT_SyncFlood信号を監視してシステムエラーを検出することができる。バッファ集積回路は、このイベントを検出すると、ホストシステムのメモリバスを積層体のメモリ集積回路から切り離し、例えばホストシステムが動作可能となるまでメモリ集積回路の内容を保持するうえで必要な信号を、内部的に生成することができる。従って、例えば、システムクラッシュを検出した時点で、バッファ集積回路は、ホストシステムのメモリコントローラからの信号を無視し、代わりに、積層体のDRAMデバイスに格納されているデータを維持するため、信号(例えば、CKE、CS#、RAS#、CAS#、WE#)の有効な組合せを生成することができ、更に、DRAM集積回路に対する定期的なリフレッシュ信号を生成することができる。なお、バッファ集積回路がシステムクラッシュを検出する方法は数多くあり、これらの変形形態のすべては請求項の範囲内に含まれる。
【0150】
[00181]メモリ集積回路の1つ以上の積層体とホストシステムとの間にバッファ集積回路を配置することによって、バッファ集積回路が、ホストシステムからメモリ集積回路への信号と、メモリ集積回路からホストシステムへの信号とにおけるスキュー又はタイミング変動を補正することができる。例えば、メモリバスの動作の高速動作時、ホストシステムのメモリコントローラとメモリ集積回路との間の信号のトレース長が一致することがしばしばある。トレース長の一致は、特に、形状因子が小さいシステムにおいて問題である。更に、DRAMのプロセスは、高速I/O回路の設計にそのままでは対応しない。結果として、DRAM集積回路のI/O信号を互いに揃えることと、関連付けられるデータストローブ信号及びクロック信号に揃えることとがしばしば困難である。
【0151】
[00182]バッファ集積回路の一実施形態においては、I/O信号のタイミングを調整する回路を組み込むことができる。言い換えれば、バッファ集積回路は、ピンごとのタイミングキャリブレーション(per−pin timing calibration)を行って、I/O信号のスキュー又はタイミング変動を補正する能力を備えている。例えば、いま、バッファ集積回路とメモリコントローラとの間のデータ信号DQ[0]が、別のデータ信号DQ[7:1]よりもトレース長が短い、又は容量性負荷が小さいとする。結果として、すべての信号がバッファ集積回路(メモリへの書込み時)又はメモリコントローラ(メモリからの読取り時)に同時には到着しないため、データ信号のスキューが生じる。そのようなスキューが補正されないと、ホストシステムのメモリサブシステムの最大の動作周波数が制限される傾向にある。バッファ集積回路のI/O回路にピンごとのタイミングキャリブレーション回路及び補正回路を組み込むことによって、バッファ集積回路は、(メモリからの読取り時に)DQ[0]信号を他のデータ信号よりも後から駆動して、DQ[0]信号の短いトレース長を補正することができる。同様に、ピンごとのタイミングキャリブレーション回路及び補正回路によって、バッファ集積回路は、メモリへの書込み動作時にデータ信号DQ[7:0]のすべてが揃えられてサンプリングされるように、DQ[0]データ信号を遅らせることができる。更に、ピンごとのタイミングキャリブレーション回路及び補正回路によって、バッファ集積回路は、DRAMデバイスのI/Oピンにおけるタイミング変動を補正することができる。バッファ集積回路は、ホストシステムのメモリコントローラに接続されている信号のピンごとのタイミングキャリブレーションと、積層体のメモリデバイスに接続されている信号のピンごとのタイミングキャリブレーションとを実行するため、特定のパターン又はシーケンスを使用することができる。
【0152】
[00183]ピンごとのタイミングキャリブレーション回路及び補正回路をバッファ集積回路に組み込むことによって、更に、バッファ集積回路は、低速の複数のDRAMデバイスをひとまとまりにして(gang)、より高速のDRAM集積回路をホストシステムに対してエミュレートすることができる。すなわち、バッファ集積回路にピンごとのタイミングキャリブレーション回路及び補正回路を組み込むことにより、バッファ集積回路が、第1のクロック速度において動作する複数のDRAMデバイスをひとまとまりにして、第2のクロック速度において動作する1つ以上のDRAM集積回路をホストシステムに対してエミュレートすることも可能になる(第1のクロック速度は第2のクロック速度よりも遅い)。
【0153】
[00184]例えば、バッファ集積回路は、8ビット幅の2つのDDR2 SDRAMデバイスを、533MHzのデータレートにおいて並列に動作させることにより、1066MHzのデータレートにおいて動作する8ビット幅の1つのDDR2 SDRAM集積回路としてホストシステムに認識させることができる。この例においては、2つのDRAMデバイスはDDR2デバイスであるため、これらのDRAMデバイスは、メモリからの読取り時、又はメモリへの書込み時にデータピンのそれぞれにおいて4つのデータビットを送る、又は受け取るように設計されている(バースト長が4である場合)。従って、並列に動作する2つのDRAMデバイスは、この例においては、メモリからの1回の読取り、又はメモリへの1回の書込みにおいて、データピンあたり64個のビットを送る、又は受け取ることができる。ホストシステムはバッファの後ろに1つのDDR2集積回路を認識しているため、メモリからの1回の読取り、又はメモリへの1回の書込みにおいて、ホストシステムはピンあたり32個のデータビットを受け取る、又は送るのみである。様々なデータ幅に対応する目的で、バッファ集積回路はDM信号(データマスク)を利用することができる。いま、ホストシステムが、DA[7:0]、DB[7:0]、DC[7:0]、及びDD[7:0]を、1066MHzのデータレートにおいてバッファ集積回路に送るものとする。バッファ集積回路は、DA[7:0]、DC[7:0]、XX、及びXXを第1のDDR2 SDRAM集積回路に送り、DB[7:0]、DD[7:0]、XX、及びXXを第2のDDR2 SDRAM集積回路に送ることができ、この場合、XXは、DDR2 SDRAM集積回路へのDM入力の(バッファ集積回路による)アサートによってマスクされているデータを表している。
【0154】
[00185]別の実施形態においては、バッファ集積回路は、2つの低速DRAMデバイスを、よりビット幅が広く、且つ高速の1つのDRAMとして動作させる。説明を目的として、バッファ集積回路は、533MHzのデータレートにおいて動作する8ビット幅の2つのDDR2 SDRAMデバイスを、1066MHzのデータレートにおいて動作する16ビット幅の1つのDDR2 SDRAM集積回路としてホストシステムに認識されるように、動作させることができる。この実施形態においては、バッファ集積回路は、DM信号を使用しない。別の実施形態においては、2つのDDR2 SDRAMデバイス(この例においては、8ビット幅、データレート533MHzの集積回路)を、1つのDDR3 SDRAM集積回路(この例においては、8ビット幅、データレート1066MHzのDDR3デバイス)としてホストシステムに認識されるように、並列に動作させるように、バッファ集積回路を設計することができる。別の実施形態においては、バッファ集積回路は、DRAM集積回路とのインタフェースよりもビット幅が狭く且つ高速である、ホストシステムとのインタフェースを提供することができる。例えば、バッファ集積回路は、1つ以上のDRAMデバイスとの、16ビット幅、データレート533MHzのインタフェースを備えていることができ、一方で、ホストシステムとの、8ビット幅、データレート1066MHzのインタフェースを備えていることができる。
【0155】
[00186]ピンごとのタイミングキャリブレーション能力及び補正能力に加えて、スルーレート(すなわち立上り時間及び立下り時間)、プルアップの能力又は強さ、及びプルダウンの能力又は強さを制御する回路を、バッファ集積回路のI/Oピンのそれぞれに追加する、又はオプションとして、バッファ集積回路の一連のI/Oピンに共通回路として追加することができる。バッファ集積回路の出力ドライバ及び入力レシーバは、バッファ集積回路とホストシステムとの間、及びバッファ集積回路と積層体のメモリ集積回路との間を接続しているトレースにおける不均一性を補正することと、ホストシステム及び積層体のメモリ集積回路のI/Oピンの特性を補正することとを目的として、プリエンファシスを行う能力を備えていることができる。
【0156】
[00187]複数のメモリ集積回路(揮発性及び不揮発性の両方)を積層化することは、熱特性及び電力供給特性に影響する。積層体におけるすべてのメモリ集積回路が長時間にわたりアクティブモードにあることは極めて起こり得るため、これらのすべての集積回路によって消費される電力に起因して、メモリ集積回路の周囲温度、ケース温度(case temperature)、及び接合部温度が上昇することがある。一般に、高い接合部温度は、IC、特にDRAMの動作に対してマイナスに影響する。更に、複数のDRAMデバイスが、電圧レール及びグランドレール(すなわち、電力トレース及びグランドトレース、又は電力プレーン及びグランドプレーン)が共有されるように上下に重ねて積層化されているときには、これらの集積回路を同時に動作させると、それに起因して電圧レール及びグランドレールに大きなスパイクが発生することがある。例えば、積層体のDRAMデバイスのすべてが同時にリフレッシュされると、電圧レールから大きな電流が流れ、これに起因して、電圧レール及びグランドレールに大きな変動(又はスパイク)が生じることがある。ノイズのある電圧レール及びグランドレールは、特に高速時にDRAMデバイスの動作に影響する。これらの現象の両方に対処する目的で、以下では、発明に相当する手法をいくつか開示する。
【0157】
[00188]一実施形態においては、積層体の1つ以上の層がメモリ集積回路ではなくデカップリングキャパシタを備えている積層化手法を使用する。例えば、積層体の5層ごとに電源デカップリング層とする(他の4層はメモリ集積回路を含んでいる)ことができる。メモリ集積回路を含んでいる層は、メモリ集積回路のピンアウトに存在しているよりも多くの電力ボール及びグランドボール(又は電力ボール及びグランドボール)を備えているように設計する。これらの余分な電力ボール及びグランドボールは、積層体の層の縁部のすべてに沿って配置されていることが好ましい。
【0158】
[00189]図27の(A)〜(C)は、更に別の実施形態による、電源デカップリング層を備えているバッファ搭載積層体を示している。オプションとして、このバッファ搭載積層体は、図1〜図26において実施することができる。当然ながら、このバッファ搭載積層体は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0159】
[00190]図27の(A)に示したように、DIMM PCB2700は、デカップリング層を含んでいる、DRAMのバッファ搭載積層体を含んでいる。具体的には、この実施形態の場合、バッファ搭載積層体は、バッファ2710と、DRAMデバイスの第1のセット2720と、第1のデカップリング層2730と、DRAMデバイスの第2のセット2740と、オプションの第2のデカップリング層2750とを含んでいる。更に、この積層体は、オプションのヒートシンク又はヒートスプレッダ2755を備えている。
【0160】
[00191]図27の(B)は、DRAMダイの一実施形態の平面図及び側面図を示している。DRAMダイ2760は、信号/電力/GNDボール2762と、1つ以上の余分な電力/GNDボール2764とを備えているパッケージ(積層体の層)2766を含んでいる。余分な電力/GNDボール2764は熱伝導率を高める。
【0161】
[00192]図27の(C)は、デカップリング層の一実施形態の平面図及び側面図を示している。デカップリング層2775は、1つ以上のデカップリングキャパシタ2770と、信号/電力/GNDボール2785と、1つ以上の余分な電力/GNDボール2780とを含んでいる。余分な電力/GNDボール2780は熱伝導率を高める。
【0162】
[00193]図27の(B)及び(C)に示した余分な電力ボール及びGNDボールは、メモリ集積回路と、積層体が含まれているPCBとの間、及び、メモリ集積回路とオプションのヒートシンク又はヒートスプレッダとの間とに、熱伝導経路を形成している。電源デカップリング層におけるデカップリングキャパシタは、積層体のメモリデバイスまでの変動の少ない電圧レール及びグランドレールを提供する目的で、関連する電力ピン及びグランドピンに接続されている。上述した積層化手法は、積層体のメモリ集積回路までの変動の少ない電力レール及び変動の少ないグランドレールを提供し、更にメモリ集積回路から熱を逃がすための一方法である。
【0163】
[00194]別の実施形態においては、電力レール及びグランドレールにおけるノイズは、積層体のDRAM集積回路が動作を同時に実行することを防止することによって減少させることができる。前述したように、積層体のDRAM集積回路のすべてがリフレッシュ動作を同時に実行する場合、電力レールから大量の電流が流れる。電力レールから流れるピーク電流が低減するように、積層体のDRAM集積回路へのリフレッシュ命令を時間的にずらせて発行する、又は分散させるように、バッファ集積回路を設計することができる。例えば、いま、積層体が4つの1GB DDR2 SDRAM集積回路を備えており、これらが1つの4GB DDR2 SDRAM集積回路としてホストシステムに認識されるようにバッファ集積回路によってエミュレートされるものとする。JEDEC仕様では、4GB DRAM集積回路のリフレッシュサイクルタイム(すなわちtRFC)は400nsと規定されているが、1GB DRAM集積回路のtRFCの仕様値は110nsである。従って、ホストシステムは、エミュレートされた4GB DRAM集積回路にリフレッシュ命令を発行するとき、リフレッシュが400ns以内に行われるものと予測する。しかしながら、積層体には4つの1GB DRAM集積回路が含まれているため、バッファ集積回路は、積層体の1GB DRAM集積回路のそれぞれに、間隔を置いて個別のリフレッシュ命令を発行することができる。一例として、バッファ集積回路は、ホストシステムからのリフレッシュ命令を受け取った時点で、4つの1GB DRAM集積回路のうちの2つにリフレッシュ命令を発行し、200nsの後、残りの2つの1GB DRAM集積回路に別のリフレッシュ命令を発行することができる。1GB DRAM集積回路は、リフレッシュ動作を実行するのに110nsを要するため、積層体の4つの1GB DRAM集積回路のすべては、(4GB DRAM集積回路の)リフレッシュサイクルタイムである400nsが経過する前にリフレッシュ動作を実行する。この時差式のリフレッシュ動作によって、電力レールから流れうる最大電流が制限される。なお、同じ恩恵を提供する別の実施形態も可能であり、そのような実施形態も請求項の範囲に網羅される。
【0164】
[00195]一実施形態においては、メモリ集積回路の周囲温度、ケース温度、又は接合部温度を測定するデバイス(例えばサーマルダイオード)を積層体に埋め込むことができる。オプションとして、特定の積層体に関連付けられるバッファ集積回路は、メモリ集積回路の温度を監視することができる。温度が限界値を超えたとき、バッファ集積回路は、メモリ集積回路の過熱及び起こり得る損傷を防止するための適切な措置を講じることができる。オプションとして、測定された温度をホストシステムから利用できるようにすることができる。
【0165】
[00196]オプションの機能が提供されるように、その他の機能回路をバッファ集積回路に追加することができる。例えば、パワーアップ時、又はホストシステムがそのように命令したときに、メモリエラー又はメモリ障害のチェックを実行するように、バッファ集積回路を設計することができる。メモリのチェック時、バッファ集積回路は、積層体のメモリ集積回路に1つ以上のパターンを書き込み、内容を読み取り、読み取ったデータと書き込んだデータとを比較して、縮退故障又はその他のメモリ障害をチェックすることができる。
【0166】
[00197]図28は、一実施形態による、代表的なハードウェア環境2800を示している。オプションとして、このハードウェア環境2800は、図1〜図27において実施することができる。当然ながら、このハードウェア環境2800は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0167】
[00198]例示的な一実施形態においては、ハードウェア環境2800は、コンピュータシステムを含んでいることができる。図示したように、このハードウェア環境2800は、通信バス2802に接続されている少なくとも1つの中央プロセッサ2801を含んでいる。更に、このハードウェア環境2800はメインメモリ2804を含んでいる。メインメモリ2804は、例えば、ランダムアクセスメモリ(RAM)若しくはその他の望ましいタイプのメモリ、又はその両方を含んでいることができる。更には、様々な実施形態において、メインメモリ2804は、メモリ回路、インタフェース回路などを含んでいることができる。
【0168】
[00199]更に、ハードウェア環境2800は、グラフィックスプロセッサ2806とディスプレイ1508とを含んでいる。更に、ハードウェア環境2800は二次記憶装置2810を含んでいることができる。二次記憶装置2810は、例えば、ハードディスクドライブ若しくはリムーバブルストレージドライブ、又はその両方を含んでおり、リムーバブルストレージドライブは、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどである。リムーバブルストレージドライブは、リムーバブルストレージユニットからの読取り、若しくはリムーバブルストレージユニットへの書込み、又はその両方を、周知の方式において行う。
【0169】
[00200]コンピュータプログラム、又はコンピュータ制御ロジックアルゴリズムを、メインメモリ2804若しくは二次記憶装置2810、又はその両方に格納することができる。そのようなコンピュータプログラムが実行されることにより、コンピュータシステム2800が様々な機能を実行することができる。なお、メモリ2804、記憶装置2810、又は任意のその他の記憶装置は、コンピュータ可読媒体として使用可能な例である。
【0170】
[00201]ここまで、様々な実施形態について説明したが、これらの実施形態は、本発明を制限するものではなく一例として提示してあるに過ぎないことを理解されたい。従って、好ましい実施形態の範囲は、上述した例示的な実施形態のいずれによっても制限されることはなく、請求項及びそれらの等価形態によってのみ定義されるものとする。
【技術分野】
【0001】
[001]本発明はメモリに関し、より詳細には、メモリ回路の命令スケジューリングにおける制約に関する。
【背景技術】
【0002】
[002]一般的に、メモリ回路のインタフェースの速度が高いときには、バスの高速動作を容易にする目的で、従来のマルチドロップ型メモリバス上の負荷(又はランク)の数が減少する。更に、メモリ回路の密度と価格は、しばしば指数的な関係にあり、高密度の集積回路では、一般的な密度の集積回路よりもメガバイト(MB)あたりの単価(ドル)が高い。従って、サーバにおいて経済的に使用することのできるメモリの量には、一般には上限が存在する。更に、大きな記憶容量を提供するためには、一般的には大きなプリント基板領域が要求され、従って、小型のシステム(例えばサーバ)の記憶容量は制限されている。
【0003】
[003]更には、メモリシステムに要求されるデータ転送速度及び帯域幅は着実に増大しており、従って、帯域幅を高めるため、メモリシステムにおいてより多くの命令をスケジューリング、発行、及びパイプライン化することが必要となっている。しかしながら、従来、メモリシステムには命令スケジューリングにおける制約が存在し、この制約は、命令の発行レートを制限し、従って、帯域幅などを更に高めるための様々な試みを制限するものである。従って、従来技術に関連する上記の問題若しくはそれ以外の問題、又はその両方の問題に対処する必要性が存在している。
【発明の概要】
【0004】
[004]メモリ回路システム及び方法を提供する。一実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、メモリ回路の命令スケジューリングにおける制約を減少させるため、メモリ回路及びシステムをインターフェースする(interface)ように動作する。
【0005】
[005]別の実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換するように動作する。
【0006】
[006]更に別の実施形態においては、少なくとも1つのメモリ積層体が、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているバッファ回路を使用して、ホストシステムに対してメモリ積層体をインターフェースし、DRAM集積回路とホストシステムとの間で1つ以上の物理パラメータを変換する。
【0007】
[007]更に別の実施形態においては、少なくとも1つのメモリ積層体が、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているインタフェース回路を使用して、ホストシステムに対してメモリ積層体をインターフェースし、メモリ積層体を1つのDRAM集積回路として動作させる。
【図面の簡単な説明】
【0008】
【図1】一実施形態による、メモリ回路をインターフェースするためのサブシステムを示している。
【図2】別の実施形態による、メモリ回路の命令スケジューリングにおける制約を減少させる方法を示している。
【図3】更に別の実施形態による、システムとメモリ回路との間で伝達される命令に関連付けられるアドレスを変換する方法を示している。
【図4】別の実施形態による、コンピュータプラットフォームの論理コンポーネントを含んでいるブロック図を示している。
【図5】更に別の実施形態による、デバイス内の命令列と、デバイス内のタイミング制約と、結果としてのアイドルサイクル(DDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図を図解している。
【図6】更に別の実施形態による、デバイス間の命令列と、デバイス間のタイミング制約と、結果としてのアイドルサイクル(DDR SDRAM、DDR2 SDRAM、又はDDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図を図解している。
【図7】別の実施形態による、メモリコントローラに接続されているDRAMデバイスのアレイを示しているブロック図を図解している。
【図8】更に別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているインタフェース回路を示しているブロック図を図解している。
【図9】別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているDDR3 SDRAMインタフェース回路を示しているブロック図を図解している。
【図10】更に別の実施形態による、複数のDRAMデバイスに接続されており、複数の独立したデータバスを備えているバースト融合インタフェース回路を示しているブロック図を図解している。
【図11】別の実施形態による、命令列における複数の命令にわたる連続的なデータ転送を示しているタイミング図を図解している。
【図12】更に別の実施形態による、複数の独立したデータバスを備えており、複数のDRAMデバイスに接続されているプロトコル変換・インタフェース回路を示しているブロック図を図解している。
【図13】別の実施形態による、メモリコントローラが列アクセス命令を遅らせて発行するときの効果を示しているタイミング図を図解している。
【図14】更に別の実施形態による、メモリコントローラが列アクセス命令を早期に発行するときの効果を示しているタイミング図を図解している。
【図15】(A)〜(C)は別の実施形態による、複数のDRAM積層体を備えているDIMMを示している。
【図16A】更に別の実施形態による、バッファ搭載DRAM積層体を備えているDIMM PCBを示している。
【図16B】更に別の実施形態による、4GB DRAMをエミュレートするバッファ搭載DRAM積層体を示している。
【図17A】別の実施形態による、バッファ集積回路とDRAM積層体とを使用するDIMMの例を示している。
【図17B】更に別の実施形態による、DRAMの物理積層体を示している。
【図18A】更に別の実施形態による、マルチランクのバッファ集積回路とDIMMとを示している。
【図18B】更に別の実施形態による、マルチランクのバッファ集積回路とDIMMとを示している。
【図19A】別の実施形態による、ホストシステムからの有効な集積回路セレクト信号の数に等しい数のランクをDIMM上に提供するバッファを示している。
【図19B】別の実施形態による、ホストシステムからの有効な集積回路セレクト信号の数に等しい数のランクをDIMM上に提供するバッファを示している。
【図19C】更に別の実施形態による、メモリの論理パーティションとメモリの物理パーティションとの間のマッピングを示している。
【図20A】更に別の実施形態による、メモリコントローラとDIMMとの間の接続構成を示している。
【図20B】別の実施形態による、ホストシステムからの命令に基づいてランクの数を構成設定するため、集積回路セレクト信号線をDIMM上のバッファに接続する方法を示している。
【図21】更に別の実施形態による、アップグレード能力を有する、コネクタ又はインターポーザを備えたDIMM PCBを示している。
【図22】更に別の実施形態による、マルチランクバッファ集積回路において使用する線形アドレスマッピングの例を示している。
【図23】別の実施形態による、シングルランクのバッファ集積回路による線形アドレスマッピングの例を示している。
【図24】更に別の実施形態による、マルチランクのバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。
【図25】更に別の実施形態による、シングルランクのバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。
【図26A】別の実施形態による、DRAM集積回路及び不揮発性メモリ集積回路を含んでいるバッファ搭載積層体の例を示している。
【図26B】別の実施形態による、DRAM集積回路及び不揮発性メモリ集積回路を含んでいるバッファ搭載積層体の例を示している。
【図27】(A)〜(C)は更に別の実施形態による、電源デカップリング層を備えているバッファ搭載積層体を示している。
【図28】一実施形態による、代表的なハードウェア環境を示している。
【詳細な説明】
【0009】
[0040]図1は、一実施形態による、メモリ回路をインターフェースするサブシステム100を示している。図示したように、サブシステム100は、メモリ回路102とシステム106とに結合されているインタフェース回路104を含んでいる。本明細書の説明においては、このようなメモリ回路102は、メモリとして機能することのできる任意の回路を含んでいることができる。
【0010】
[0041]例えば、様々な実施形態において、メモリ回路102の少なくとも1つは、モノリシックメモリ回路、半導体ダイ、チップ、実装メモリ回路(packaged memory circuit)、又はその他の任意のタイプの有形のメモリ回路を含んでいることができる。一実施形態においては、メモリ回路102は、ダイナミックランダムアクセスメモリ(DRAM)回路の形態をとることができる。そのようなDRAMは、任意の形態をとることができ、例えば、シンクロナスDRAM(SDRAM)、ダブルデータレートシンクロナスDRAM(DDR SDRAM、DDR2 SDRAM、DDR3 SDRAMなど)、グラフィックスダブルデータレートDRAM(GDDR、GDDR2、GDDR3など)、クワッドデータレートDRAM(QDR DRAM)、RAMBUS XDR DRAM(XDR DRAM)、高速ページモードDRAM(FPM DRAM)、ビデオDRAM(VDRAM)、拡張データアウトDRAM(EDO DRAM)、バーストEDO RAM(BEDO DRAM)、マルチバンクDRAM(MDRAM)、シンクロナスグラフィックスRAM(SGRAM)、その他の任意のタイプのDRAM、のうちの1つ以上の形態をとることができる(ただしこれらに限定されない)。
【0011】
[0042]別の実施形態においては、メモリ回路102の少なくとも1つは、磁気ランダムアクセスメモリ(MRAM)、インテリジェントランダムアクセスメモリ(IRAM:intelligent random access memory)、分散ネットワークアーキテクチャ(DNA)メモリ、ウィンドウランダムアクセスメモリ(WRAM:window random access memory)、フラッシュメモリ(例えば、NAND、NOR)、疑似スタティックランダムアクセスメモリ(PSRAM)、ウェットウェアメモリ(wetware memory)、或いは、半導体技術、原子技術、分子技術、光技術、有機技術、生物学的技術、化学技術、又はナノスケール技術に基づくメモリ、或いは、揮発型又は不揮発型、ランダムアクセス型又は非ランダムアクセス型、若しくはシリアルアクセス型又はパラレルアクセス型の、その他の任意のタイプのメモリ回路、のうちの1つ以上を含んでいることができる。
【0012】
[0043]厳密にはオプションとして、メモリ回路102は、必要であれば、少なくとも1つのデュアルインラインメモリモジュール(DIMM)(図示していない)上に配置することができる。様々な実施形態において、DIMMは、レジスタードDIMM(R−DIMM)、スモールアウトラインDIMM(SO−DIMM:small outline− DIMM)、フリーバッファードDIMM(FB−DIMM:fully buffered DIMM)、アンバッファードDIMM(UDIMM:unbuffered DIMM)、シングルインラインメモリモジュール(SIMM)、MiniDIMM、超ロープロファイル仕様の(VLP)R−DIMMなどを含んでいることができる。別の実施形態においては、メモリ回路102は、必要であれば、基板、カード、モジュール、薄板、繊維、厚紙、担体、又はその他の任意のタイプの固体若しくは可撓性の構成要素、形態、又は物体(entity,form,or object)を形成する、任意の種類の材料上に配置することができる。当然ながら、更に別の実施形態においては、メモリ回路102は、必要であれば、実装を目的とする任意の望ましい構成要素、形態、又は物体の中又は上に配置することができる。更には、メモリ回路102は、必要であれば、ランクに編成することができる。この場合のランクは、上記の構成要素、形態、又は物体、その他のうちのいずれかにおけるメモリ回路102の任意の配置編成を意味する。
【0013】
[0044]更に、本明細書の説明においては、システム106は、メモリ回路102へのアクセスが結果として発生するプロセスを要求する、若しくは開始する、又はその両方を行うことのできる任意のシステムを含んでいることができる。オプションとして、システム106は、この動作を、メモリコントローラ(図示していない)、又はその他の任意の望ましいメカニズムを使用して達成することができる。一実施形態においては、このようなシステム106は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、ストレージシステム、ネットワーキングシステム、ワークステーション、携帯情報端末(PDA)、携帯電話、テレビ、コンピュータ周辺装置(例えばプリンタ)、家庭用電子機器、通信システム、或いはその他の任意のソフトウェア若しくはハードウェア又はその両方、のうちの1つ以上の形態のシステム、を含んでいることができる。
【0014】
[0045]インタフェース回路104は、本明細書の説明においては、メモリ回路102及びシステム106をインターフェースする(例えば、通信する、バッファリングする)ことのできる任意の回路を意味する。例えば、インタフェース回路104は、複数の異なる実施形態においては、メモリ回路102及びシステム106と、直接的に(例えば、配線、バス、コネクタ、又はその他の任意の直接通信媒体、のうちの1つ以上を介して)、若しくは間接的に(例えば、無線、光、容量、電界、磁界、電磁界、或いはその他の任意の間接通信媒体、のうちの1つ以上を介して)、又はその両方によって通信することのできる回路を含んでいる。更なる別の実施形態においては、この場合の通信は、直接接続(例えば、ポイントツーポイント、シングルドロップバス、マルチドロップバス、シリアルバス、パラレルバス、リンク、又はその他の任意の直接接続、のうちの1つ以上)を使用することができ、又は、間接接続(例えば、中間回路、中間ロジック、1本又は複数本の中間バス、又はその他の任意の間接接続、のうちの1つ以上を通じての接続)を使用することができる。
【0015】
[0046]更なるオプションの実施形態においては、インタフェース回路104は、1つ以上の回路、例えば、バッファ(例えばバッファチップ)、レジスタ(例えばレジスタチップ)、アドバンストメモリバッファ(AMB)(例えばAMBチップ)、少なくとも1枚のDIMM上に配置されているコンポーネント、メモリコントローラなどを含んでいることができる。更に、レジスタは、様々な実施形態においては、JEDEC半導体技術協会(JEDEC Solid State Technology Association)(JEDECとして知られている)規格のレジスタ(JEDECレジスタ)、或いは、転送機能、格納機能、バッファリング機能のうちの少なくとも1つを備えているレジスタを含んでいることができる。様々な実施形態においては、レジスタチップ、バッファチップ、又はその他の任意のインタフェース回路104のうちの1つ以上を、インテリジェント型とすることができ、すなわち、1つ以上の機能、例えば、情報の収集若しくは格納、又はその両方、状態若しくはステータス、又はその両方の推測、予測、格納のうちの少なくとも1つ、論理的判定の実行、入力信号に対する演算の実行、のうちの少なくとも1つを行うことのできるロジック、を含んでいることができる。更に別の実施形態においては、インタフェース回路104は、オプションとして、モノリシック形態、実装形態、プリント回路形態、或いはその他の任意の回路製造形態、のうちの1つ以上として製造することができる。更に、別の実施形態においては、インタフェース回路104をDIMM上に配置することができる。
【0016】
[0047]更に別の実施形態においては、上述した複数のインタフェース回路104は、それらの組合せとして、メモリ回路102及びシステム106をインターフェースする役割を果たすことができる。従って、様々な実施形態においては、このようなインタフェース接続を目的として、1つ、2つ、3つ、4つ、又は5つ以上のインタフェース回路104を使用することができる。更に、複数のインタフェース回路104を、任意の望ましい方式において相対的に構成設定する(configure)、又は相対的に接続することができる。例えば、インタフェース回路104を、並列に、又は直列に、又は並列及び直列の様々な組合せにおいて、構成設定する、或いは接続することができる。複数のインタフェース回路104を、互いに直接的に接続する、又は互いに間接的に接続する、又は直接接続及び間接接続を組み合わせて接続することができる。更には、任意の数のインタフェース回路104を、任意の数のメモリ回路102に割り当てることができる。別の様々な実施形態においては、複数のインタフェース回路104のそれぞれを、同じ回路、又は異なる回路とすることができる。更には、インタフェース回路104は、同じか又は類似するインタフェースタスクを共有する、若しくは異なるインタフェースタスクを実行する、又はその両方とすることができる。
【0017】
[0048]メモリ回路102と、インタフェース回路104と、システム106とを個別の構成要素として図示したが、このような構成要素(又はその(1つ以上の)部分)を任意の望ましい方式において一体化することができる。様々な実施形態においては、オプションとしてのこのような一体化として、このような構成要素を単純に一緒に実装する(例えば、構成要素を積み重ねて、DRAM回路の積層体、DRAM積層体、複数のDRAM積層体、ハードウェア積層体を形成する(この場合の積層体とは、構成要素若しくは回路、又はその両方の任意のまとまり、集合、又はグループ化を意味する))、若しくは、これらの構成要素をモノリシック構造として一体化する、又はその両方を行うことができる。単なる一例として、オプションの一実施形態においては、少なくとも1つのインタフェース回路104(又はその(1つ以上の)部分)を、メモリ回路102の少なくとも1つと一緒に実装することができる。このようにして、一実施形態においては、インタフェース回路104及びメモリ回路102が積層体の形態をとることができる。
【0018】
[0049]例えば、DRAM積層体は、必要であれば、少なくとも1つのインタフェース回路104(又はその(1つ以上の)部分)を含んでいることができる。別の実施形態においては、様々な数のインタフェース回路104(又はその(1つ以上の)部分)を一緒に実装することができる。このような様々な実装構造を採用する場合、オプションとして、例えば、モノリシックシリコン実装を有利に使用することができる。
【0019】
[0050]複数の異なる実施形態においては、インタフェース回路104を、様々な機能性を備えたものとすることができる。例えば、オプションの一実施形態においては、インタフェース回路104は、メモリ回路102とシステム106との間に接続されている複数の信号をインターフェースすることができる。この場合の信号は、例えば、アドレス信号、データ信号、制御信号、イネーブル信号、クロック信号、リセット信号、或いは、メモリ回路102、システム106、又は(1つ以上の)インタフェース回路104を動作させるために使用される、又はこれらに関連付けられているその他の任意の信号、を含んでいることができる。オプションとしてのいくつかの実施形態においては、この信号は、直接接続を使用する信号、間接接続を使用する信号、専用接続を使用する信号とする、又は、いくつかの接続にまたがって信号を符号化する、又は、1つ以上の接続にまたがってその他の方式で信号を符号化する(例えば時分割多重化する)、のうちの1つ以上とすることができる。
【0020】
[0051]この実施形態の一態様においては、インターフェースされる信号は、メモリ回路102とシステム106との間に接続されている信号のすべてとすることができる。別の態様においては、信号の少なくとも一部は、メモリ回路102とシステム106との間の直接接続を使用することができる。更に、オプションとして、インターフェースされる信号が、メモリ回路102とシステム106との間の信号接続の総数の少なくとも大部分を含んでいるように、(例えば、直接接続を使用する複数の信号に対して)インターフェースされる信号の数を変化させることができる。
【0021】
[0052]更に別の実施形態においては、インタフェース回路104は、第1の数のメモリ回路102、及びシステム106をインターフェースして、システム106に対して第2の数のメモリ回路をシミュレートするように動作することができる。以下では、説明を明確にするうえで適切である場合、第1の数のメモリ回路102を「物理」メモリ回路102又はメモリ回路と称する(ただしこれらに限定されない)。単なる一例として、物理メモリ回路102は、1つの物理メモリ回路を含んでいることができる。更に、以下では、説明を明確にするうえで適切である場合、システム106によって認識される少なくとも1つのシミュレートされたメモリ回路を、少なくとも1つの「仮想」メモリ回路と称する。
【0022】
[0053]この実施形態の更に別の態様においては、仮想メモリ回路の第2の数は、物理メモリ回路102の第1の数よりも大きい、第1の数に等しい、又は第1の数よりも小さい。単なる一例として、第2の数の仮想メモリ回路は、1つのメモリ回路を含んでいることができる。ただし、当然ながら、任意の数のメモリ回路をシミュレートすることができる。
【0023】
[0054]本明細書の説明においては、用語「シミュレートする(される)」は、メモリ回路102の少なくとも1つの側面が、結果としてシステム106に異なって認識されることになる、何らかのシミュレート、エミュレート、仮装、変形、修正、変更、一部変更、成形、変換などを行うことを意味する。複数の異なる実施形態においては、このような側面は、例えば、数、信号、記憶容量、タイミング、レイテンシ、設計パラメータ、論理インタフェース、制御システム、プロパティ、挙動(例えば、電力挙動、例えば、以下に限定されないが、消費電力、消費電流、電流波形、電力パラメータ、電力指標、電力管理又は電力挙動のその他の任意の側面)、或いはその他の任意の側面、のうちの1つ以上を含んでいることができる。
【0024】
[0055]複数の異なる実施形態においては、シミュレーションは、電気特性のシミュレーション、論理特性のシミュレーション、プロトコル特性のシミュレーションとする、又は任意のその他の望ましい方式において実行する、のうちの1つ以上とすることができる。例えば、電気特性のシミュレーションにおいては、ピン、配線、信号などの数をシミュレートすることができる。論理特性のシミュレーションにおいては、特定の機能或いは挙動をシミュレートすることができる。プロトコルのシミュレーションにおいては、特定のプロトコル(例えばDDR3)をシミュレートすることができる。更に、プロトコルのシミュレーションにおいては、シミュレーションによって、異なるプロトコル(例えばDDR2とDDR3)の間で変換することができる、又は、同じプロトコルの異なるバージョンの間で変換する(例えば、4−4−4 DDR2から6−6−6 DDR2に変換する)ことができる。
【0025】
[0056]例示的な一実施形態においては、DRAMデバイスの記憶素子を複数のバンクに編成することができ、この場合、バンクのそれぞれが複数の行を有し、行のそれぞれが複数の列を有する。DRAMデバイスの記憶容量は、バンクの数と、バンクあたりの行の数と、行あたりの列の数と、列あたりの記憶ビットの数とを乗じた値に等しいものとすることができる。汎用DRAMデバイス(例えば、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM、GDDR2 SDRAM、GDDR3 SDRAM、GDDR4 SDRAM)においては、デバイスあたりのバンクの数、バンクあたりの行の数、行あたりの列の数、及び列のサイズは、標準化委員会(例えば、電子機器技術評議会(JEDEC:Joint Electron Device Engineering Council))によって決定されている。
【0026】
[0057]例えば、JEDEC規格では、4ビット幅のデータバスを備えている1ギガバイト(GB)のDDR2 SDRAM又はDDR3 SDRAMデバイスは、デバイスあたり8個のバンク、バンクあたり8192行、行あたり2048列、列あたり4ビットを有することが要求される。同様に、4ビット幅のデータバスを備えている2GBのデバイスは、デバイスあたり8個のバンク、バンクあたり16384行、行あたり2048列、列あたり4ビットを備えていなければならない。4ビット幅のデータバスを備えている4GBのデバイスは、デバイスあたり8個のバンク、バンクあたり32768行、行あたり2048列、列あたり4ビットを備えていなければならない。これら1GB、2GB、及び4GBのデバイスにおいては、行のサイズは一定であり、行の数は、デバイスの容量が2倍になるごとに2倍になっている。従って、上述したように、複数の1GBのデバイス及び2GBのデバイスを使用し、行アクティブ化命令(row−activation command)を行アクティブ化命令に直接変換し、列アクセス命令を列アクセス命令に直接変換することによって、2GB又は4GBのデバイスをシミュレートすることができる。一実施形態においては、このエミュレーションが可能であるのは、1GBのデバイスと、2GBのデバイスと、4GBのデバイスの行サイズが同じであるためである。
【0027】
[0058]一実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、メモリ回路の命令スケジューリングにおける制約を減少させるため、メモリ回路、及びシステムをインターフェースするように動作する。
【0028】
[0059]別の実施形態においては、インタフェース回路が、複数のメモリ回路、及びシステムと通信することができる。使用時、このインタフェース回路は、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換するように動作する。
【0029】
[0060]更に別の実施形態においては、少なくとも1つのメモリ積層体は、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているバッファ回路を使用して、ホストシステムにメモリ積層体をインターフェースし、DRAM集積回路とホストシステムとの間で1つ以上の物理パラメータを変換する。
【0030】
[0061]更に別の実施形態においては、少なくとも1つのメモリ積層体は、複数のDRAM集積回路を備えている。更に、ホストシステムに結合されているインタフェース回路を使用して、ホストシステムに対してメモリ積層体をインターフェースし、メモリ積層体を1つのDRAM集積回路として動作させる。
【0031】
[0062]以下では、必要であれば、ユーザの要望に応じて上記のシステムを実施することができる、オプションとしての様々なアーキテクチャ及び使用形態に関して、説明上の情報を更に記載する。なお、以下の情報は、説明を目的として記載したものであり、本発明を何らかの形で制限するものと解釈すべきではないことに留意されたい。以下の特徴・機能のいずれも、記載した別の特徴・機能を取り除いて、又は取り除かずに、オプションとして組み込むことができる。
【0032】
[0063]図2は、別の実施形態による、メモリ回路の命令スケジューリングにおける制約を減少させる方法200を示している。オプションとして、方法200は、図1のシステム100において実施することができる。当然ながら、この方法200は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0033】
[0064]動作202に示したように、複数のメモリ回路、及びシステムをインターフェースする。一実施形態においては、メモリ回路及びシステムを、インタフェース回路を使用してインターフェースすることができる。このインタフェース回路は、例えば、図1に関連して上述したインタフェース回路を含んでいることができる。更に、一実施形態においては、インターフェースするステップは、メモリ回路とシステムとの間の通信を容易にする(facilitate)ステップを含んでいることができる。ただし、当然ながら、メモリ回路及びシステムを、任意の望ましい方式においてインターフェースすることができる。
【0034】
[0065]更に、動作204に示したように、メモリ回路の命令スケジューリングにおける制約を減少させる。本明細書の説明においては、命令スケジューリングにおける制約は、メモリ回路に関連する命令のスケジューリング(若しくは発行、又はその両方)に関連付けられる任意の制限を含んでいる。オプションとして、命令スケジューリングにおける制約は、製造業者が自社のメモリデバイスのデータシートの中に定義する、或いは、標準化機構(例えばJEDEC)によって定義される。
【0035】
[0066]一実施形態においては、命令スケジューリングにおける制約は、デバイス内命令スケジューリングにおける制約(intra−device command scheduling constraints)を含んでいることができる。このようなデバイス内命令スケジューリングにおける制約は、デバイスの中でのスケジューリング制約を含んでいることができる。例えば、デバイス内命令スケジューリングにおける制約は、列間遅延時間(column−to−column delay time)(tCCD)、行間アクティブ化遅延時間(row−to−row activation delay time)(tRRD)、4バンクアクティブ化ウィンドウ時間(four−bank activation window time)(tFAW)、書込み−読取りターンアラウンドタイム(write−to−read turn−around time)(tWTR)などを含んでいることができる。オプションとして、デバイス内命令スケジューリングにおける制約は、デバイス内のリソースを共有する、デバイスの要素(例えば、列、行、バンク)に関連付けることができる。このようなデバイス内命令スケジューリングにおける制約の一例については、後から図5に関連して更に詳しく説明する。
【0036】
[0067]一実施形態においては、命令スケジューリングにおける制約は、デバイス間命令スケジューリングにおける制約(inter−device command scheduling constraints)を含んでいることができる。このようなデバイス間スケジューリング制約は、デバイス(例えばメモリデバイス)の間のスケジューリング制約を含んでいることができる。単なる一例として、デバイス間命令スケジューリングにおける制約は、ランク間のデータバスターンアラウンドタイム(rank−to−rank data bus turnaround times)、オンダイターミネーション(ODT:on−die−termination)制御スイッチング時間などを含んでいることができる。オプションとして、デバイス間命令スケジューリングにおける制約は、互いの間の接続(例えば通信するための接続)を提供するリソース(例えばデータバス)を共有するデバイスに関連付けることができる。このようなデバイス間命令スケジューリングにおける制約の一例については、後から図6に関連して更に詳しく説明する。
【0037】
[0068]更に、命令スケジューリングにおける制約を減少させるステップは、制約を完全に排除する、又は制約をいくらか低減させるステップを含んでいることができる。更には、メモリ回路に命令を発行する方式を制御することによって、命令スケジューリングにおける制約を減少させることができる。このような命令は、例えば、行アクティブ化命令、又は列アクセス命令を含んでいることができる。更には、オプションとして、複数のメモリ回路に関連付けられる個別のバスを使用して、メモリ回路に命令を発行することができる。個別のバスが関連付けられているメモリ回路の一例については、後から図8に関連して更に詳しく説明する。
【0038】
[0069]一実施形態においては、仮想メモリ回路のシミュレーションに基づいてメモリ回路に命令を発行することによって、命令スケジューリングにおける制約を減少させることができる。例えば、複数のメモリ回路(すなわち物理メモリ回路)が仮想メモリ回路としてシステムに認識されるように、それら複数のメモリ回路、及びシステムをインターフェースすることができる。そのようなシミュレートされた仮想メモリ回路は、オプションとして、図1に関連して上述した仮想メモリ回路を含んでいることができる。
【0039】
[0070]更に、仮想メモリ回路では、物理メモリ回路よりも命令スケジューリングにおける制約を少なくすることができる。例示的な一実施形態においては、メモリ回路を、命令スケジューリングにおける制約が存在しない1つ以上のメモリ回路から成るまとまりとして認識させることができる。従って、オプションとして、複数の異なる物理メモリ回路ではなく1つの仮想メモリ回路を対象とする命令を発行することによって、命令スケジューリングにおける制約を減少させることができる。このようにして、オプションとして、アイドル状態のデータバスサイクルを排除することができ、メモリシステムの帯域幅を高めることができる。
【0040】
[0071]当然ながら、命令スケジューリングにおける制約は任意の望ましい方式において減少させることができる。従って、一実施形態においては、メモリ回路(例えば論理DRAMデバイス)のデバイス間命令スケジューリングにおける制約若しくはデバイス内命令スケジューリングにおける制約、又はその両方の少なくとも一部を、本インタフェース回路を使用して排除することができる。更には、メモリ回路の命令スケジューリングにおける制約が減少する結果として、命令発行レートを高めることができる。例えば、命令スケジューリングにおける制約に関連付けられる制限を減少させることによって、より多くの命令をメモリ回路に発行することができる。命令スケジューリングにおける制約を減少させることによって命令発行レートを高めることに関しては、後から図11に関連して更に詳しく説明する。
【0041】
[0072]図3は、更に別の実施形態による、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換する方法300を示している。オプションとして、方法300は、図1若しくは図2、又はその両方のアーキテクチャ及び環境において実行することができる。当然ながら、方法300は、任意の望ましい環境において実行することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0042】
[0073]動作302に示したように、複数のメモリ回路、及びシステムをインターフェースする。一実施形態においては、インタフェース回路(例えば、図1に関連して上述したインタフェース回路)を使用して、メモリ回路及びシステムをインターフェースすることができる。一実施形態においては、インターフェースするステップは、メモリ回路とシステムとの間の通信を容易にするステップを含んでいることができる。ただし、当然ながら、メモリ回路及びシステムは、任意の望ましい方式においてインターフェースすることができる。
【0043】
[0074]更に、動作304に示したように、システムとメモリ回路との間で伝達される命令に関連付けられているアドレスを変換する。このような命令は、例えば、行アクティブ化命令、列アクセス命令、或いはシステムとメモリ回路との間で伝達することのできるその他の任意の命令、のうちの1つ以上を含んでいることができる。オプションとして、この変換はシステムに透過的とすることができる。このようにして、システムはメモリ回路に命令を発行することができ、この場合、命令の変換は、システムが認識或いは入力することなく行うことができる。
【0044】
[0075]更には、アドレスの変換は、任意の望ましい方式において行うことができる。このような変換は、任意の変換、変更、変形を含んでいることができる。一実施形態においては、アドレスを変換するステップは、アドレスをシフトさせるステップを含んでいることができる。別の実施形態においては、アドレスの変換は、アドレスをマッピングすることによって行うことができる。オプションとして、図1若しくは図2、又はその両方に関連して上述したように、メモリ回路は物理メモリ回路を含んでいることができ、インタフェース回路によって仮想メモリ回路をシミュレートすることができる。これを目的として、仮想メモリ回路は、オプションとして、自身に関連付けられる行アドレスを、物理メモリ回路とは異なる(例えば、より多くの)数だけ有することができる。
【0045】
[0076]従って、別の実施形態においては、変換を、行アドレスの数の差異の関数として実行することができる。更に別の実施形態においては、変換では、仮想メモリ回路の行アドレスの数が反映されるようにアドレスを変換することができる。更に別の実施形態においては、変換では、オプションとして、列アドレス及び行アドレスの関数としてアドレスを変換することができる。
【0046】
[0077]従って、命令が行アクセス命令を含んでいる例示的な一実施形態においては、列アクセス命令の予測到着タイムの関数として変換を実行することができる。命令が行アクセス命令を含んでいる別の例示的な実施形態においては、変換によって、列アクセス命令が必ず空きバンクにアドレッシングされるようにすることができる。オプションとして、インタフェース回路は、システムとメモリ回路との間で伝達される命令を遅らせるように動作することができる。これを目的として、変換の結果として、メモリ回路(例えば論理DRAMデバイス)の行の一部をアクティブ化することができる。アドレスの変換の様々な例については、後から図8及び図12に関連して更に詳しく説明する。
【0047】
[0078]従って、一実施形態においては、行のサイズが小さいメモリ回路を使用して、行のサイズが大きい、より大きなメモリ回路をエミュレートすることができるように、アドレスマッピングにおいて、1つの命令と別の命令との間でアドレスをシフトするステップを使用することができる。従って、行の一部のアクティブ化を提供することができる。様々な実施形態においては、このような行の一部のアクティブ化によって消費電力を減少させることもでき、パフォーマンスを更に向上させることができる。
【0048】
[0079]図4は、別の実施形態による、コンピュータプラットフォーム400の論理コンポーネントを含んでいるブロック図を示している。オプションとして、コンピュータプラットフォーム400は、図1〜図3のアーキテクチャ及び環境において実施することができる。当然ながら、コンピュータプラットフォーム400は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0049】
[0080]図示したように、コンピュータプラットフォーム400は、システム420を含んでいる。システム420は、メモリインタフェース421と、外部メモリの属性の予測を取得及び格納するロジック422と、メモリインタラクション(memory interaction)属性423と、データ処理エンジン424と、ユーザインタフェースを容易にする様々なメカニズム425とを含んでいる。コンピュータプラットフォーム400は、完全に個別のコンポーネント、すなわち、システム420(例えばマザーボード)と、メモリ回路410(例えば物理メモリ回路)とから構成することができる。更に、コンピュータプラットフォーム400は、オプションとして、1つ以上のソケットによってシステム420に直接接続されているメモリ回路410を含んでいることができる。
【0050】
[0081]一実施形態においては、メモリ回路410は、様々な規格、例えば、メモリ回路410をJEDEC準拠の半導体メモリ(例えば、DRAM、SDRAM、DDR2、DDR3)であるように定義する規格、の仕様に従って設計することができる。そのような規格の仕様は、物理的な相互接続と、メモリ回路410の論理機能とを規定していることがある。
【0051】
[0082]別の実施形態においては、システム420は、物理メモリ回路410(例えばDIMM)に問い合わせてメモリ属性422,423を取得及び格納することができるシステムBIOSプログラム(図示していない)を含んでいることができる。更に、様々なタイプの外部メモリ回路410(例えば、JEDECに準拠するDIMM)は、DIMMのメモリ属性が格納されているEEPROMデバイス(SPD(serial presence detect)として知られている)を含んでいることができる。BIOSによるSPDとのインタラクションと、物理属性についてのBIOSによる物理メモリ回路410とのインタラクションとによって、システム420のメモリ属性の予測422とメモリインタラクション属性423とをシステム420に認識させることができる。
【0052】
[0083]様々な実施形態においては、コンピュータプラットフォーム400は、電気的にはシステム420と物理メモリ回路410との間に配置されている1つ以上のインタフェース回路470を含んでいることができる。このインタフェース回路470は、システムに面しているいくつかのインタフェース(例えば、システムアドレス信号インタフェース471、システム制御信号インタフェース472、システムクロック信号インタフェース473、システムデータ信号インタフェース474)を含んでいることができる。同様に、インタフェース回路470は、メモリに面しているいくつかのインタフェース(例えば、メモリアドレス信号インタフェース475、メモリ制御信号インタフェース476、メモリクロック信号インタフェース477、メモリデータ信号インタフェース478)を含んでいることができる。
【0053】
[0084]更には、インタフェース回路470は、エミュレーションロジック480を含んでいることができる。このエミュレーションロジック480は、システムに面しているインタフェースからの、又はシステムに面しているインタフェースを経由する電気信号(例えば、ロジックレベル、命令、信号、プロトコルシーケンス、通信)を受け取り、オプションとしてそれを格納するように動作することができ、更に、そのような電気信号を処理するように動作することができる。エミュレーションロジック480は、システム420に応答を返し、システム420に信号を供給することによって、システムに面しているインタフェースからの信号に応答することができ、更に、以前に格納されている別の情報を用いてその信号を処理することができる。別のオプションとして、エミュレーションロジック480は、物理メモリ回路410に信号を供給することができる。ただし、当然ながら、エミュレーションロジック480は、上述した任意の機能を任意の順序において実行することができる。
【0054】
[0085]更には、エミュレーションロジック480は、パーソナリティ(personality)を導入するように動作することができ、この場合のパーソナリティは、物理メモリ回路の属性を定義することができる。様々な実施形態においては、パーソナリティは、インタフェース回路470と物理メモリ回路410との間の配線、ボンディングオプション、ストラッピング(strapping)、プログラマブルなストラッピング、のうちの任意の組合せによって構成することができる。更には、インタフェース回路470に接続されている物理メモリ回路410の実際の物理属性(例えば、モードレジスタの値、拡張モードレジスタの値)(インタフェース回路470及び物理メモリ回路410がパワーアップされるときに決定される)によって、パーソナリティを構成することができる。
【0055】
[0086]図5は、更に別の実施形態による、デバイス内の命令列(intra−device command sequence)と、デバイス内のタイミング制約と、結果としてのアイドルサイクル(DDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図500を図解している。オプションとして、このタイミング図500は、図1〜図4のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図500は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0056】
[0087]図示したように、タイミング図500は、命令サイクルと、タイミング制約と、メモリのアイドルサイクルとを示している。例えば、DDR3 SDRAMメモリシステムを含んでいる実施形態においては、1つのDRAMデバイスを対象としている任意の2つの行アクセス命令は、tRRDよりも短い間隔でスケジューリングされるとは限らない。別の例として、tFAW以内に1つのDRAMデバイスにスケジューリングすることのできる行アクセス命令は、最大で4つである。更に、特定のDRAMデバイスに、連続する列読取りアクセス命令及び連続する列書込みアクセス命令をtCCDよりも短い間隔でスケジューリングされるとは限らない(tCCDは、DDR3 DRAMデバイスにおいては4サイクル(データの半サイクル×8)に等しい)。
【0057】
[0088]この実施形態においては、行アクセス命令若しくは行アクティブ化命令、又はその両方は、ACTとして示してある。更に、列アクセス命令は、「読取り」又は「書込み」として示してある。従って、例えば、図2に示したような、4つの半サイクルのデータバーストとしてのデータアクセスが要求されるメモリシステムにおいては、列アクセスを連続的にスケジューリングすることが、tCCD制約によって抑制されることがある。更には、特定のDRAMデバイスに送られるDRAM命令に課されるこれらの制約510,520によって、命令レートが制限されることがあり、結果としてデータバス上にアイドルサイクル又はバブル530が発生し、従って、帯域幅が減少する。
【0058】
[0089]DDR3 SDRAMメモリシステムを含んでいる、オプションの別の実施形態においては、同じデータバス上の複数の異なるDRAMデバイスに送られる連続する列アクセス命令は、データバースト時間長と、ランク間のデータバスターンアラウンドタイムに起因する更なるアイドルサイクルとの合計である時間期間よりも短い間隔でスケジューリングされるとは限らない。列読取りアクセス命令の場合、同じデータバス上の2つのDRAMデバイスが、2つのバスマスターであることがある。オプションとして、1つのバスマスターが、メモリコントローラへのデータの供給を完了して共有データバスの制御を解放し、これにより別のバスマスターがデータバスの制御を取得してデータを送り始めるためには、バス上に少なくとも1つのアイドルサイクルが必要である。
【0059】
[0090]図6は、更に別の実施形態による、デバイス間の命令列(inter−device command sequence)と、デバイス間のタイミング制約と、結果としてのアイドルサイクル(DDR SDRAM、DDR2 SDRAM、又はDDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる)とを示しているタイミング図600を図解している。オプションとして、このタイミング図600は、図1〜図4のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図600は任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0060】
[0091]図示したように、タイミング図600は、複数の異なるデバイスに発行される命令を示しており、この場合、同じデバイスに発行される命令に課される制約(例えば、tRRD、tCCD)は存在しない。しかしながら、図示したように、1つのデバイスから別のデバイスにデータバスを引き渡すために、データバス上に少なくとも1つのデータバスアイドルサイクル610が要求される。従って、このタイミング図600は、DDR3 SDRAMメモリシステムにおいて帯域幅を完全に利用することを妨げる制限を示している。この命令スケジューリングにおける制約の結果として、DDR3 SDRAMメモリシステム(tCCDよりも短いバーストを使用する)において帯域幅を完全に使用することのできる命令列が存在しないことがある。
【0061】
[0092]図7は、別の実施形態による、メモリコントローラに接続されているDRAMデバイスのアレイを示しているブロック図700を図解している。オプションとして、このブロック図700は、図1〜図6のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図700は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0062】
[0093]図示したように、8個のDRAMデバイスが共有データバス710を通じてメモリコントローラに直接接続されている。従って、DRAMデバイスを対象とする、メモリコントローラからの命令は、命令スケジューリングにおける制約(例えば、tRRD、tCCD、tFAW、tWTR)の条件下で発行することができる。従って、このような命令スケジューリングにおける制約に基づき、命令の発行が遅れることがある。
【0063】
[0094]図8は、更に別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているインタフェース回路を示しているブロック図800を図解している。オプションとして、このブロック図800は、図1〜図6のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図800は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0064】
[0095]図示したように、インタフェース回路810は、メモリコントローラ820とのDRAMインタフェースを提供し、独立しているDRAMデバイス830に命令を渡す。メモリデバイス830のそれぞれに異なるデータバス540を関連付けることができ、従って、デバイス間制約が防止される。更に、個々の独立したメモリデバイス830を使用して、仮想メモリデバイスの要素(例えば列、行、バンク)をエミュレートすることができる。従って、デバイス内制約も防止することができる。これを目的として、インタフェース回路510に接続されているメモリデバイス830を、命令スケジューリングにおける制約が存在しない、1つ以上のメモリデバイス530から成るまとまりとして、メモリコントローラ820に認識させることができる。
【0065】
[0096]例示的な一実施形態においては、インタフェース回路を使用することにより、N個の物理DRAMデバイスを使用してM個の論理DRAMデバイスをエミュレートすることができる。インタフェース回路は、M個の論理デバイスを対象とする、メモリコントローラからの命令ストリームを受け取ることができる。更に、インタフェース回路は、P本の独立したデータ経路を介してインタフェース回路に接続されているN個の物理デバイス向けに、これらの命令を変換することができる。命令の変換は、例えば、M個の論理デバイスのうちの1つを対象としている正しい命令を正しいデバイス(すなわち、N個の物理デバイスのうちの1つ)にルーティングするステップを含んでいることができる。全体として、N個の物理デバイスがP本のデータ経路によって接続されていることにより、オプションとして、インタフェース回路は、命令が並列且つ独立して実行されるように保証することができ、従って、N個の物理デバイスに関連付けられる命令スケジューリングにおける制約が防止される。このように、この方策がなければデバイス間命令スケジューリングにおける制約及びデバイス内命令スケジューリングにおける制約に起因して存在するはずの、データバスのアイドルサイクル或いはバブルを、インタフェース回路によって排除することができる。
【0066】
[0097]図9は、別の実施形態による、DRAMデバイスのアレイとメモリコントローラとの間に配置されているDDR3 SDRAMインタフェース回路を示しているブロック図900を図解している。オプションとして、このブロック図900は、図1〜図8のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図900は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0067】
[0098]図示したように、DDR3 SDRAMインタフェース回路910は、デバイス間のスケジューリング制約及びデバイス内のスケジューリング制約に起因する、データバスのアイドルサイクルを排除する。この実施形態においては、DDR3 SDRAMインタフェース回路910は、複数のDDR3 SDRAMデバイスを複数の独立したデータバスに接続しているインタフェース回路の命令変換回路を含んでいることができる。例えば、DDR3 SDRAMインタフェース回路910は、物理メモリ回路とシステムとの間の信号をインターセプトすることのできる命令・制御コンポーネント及びアドレスコンポーネントを含んでいることができる。更には、これら命令・制御コンポーネント及びアドレスコンポーネントによって、以下に図10に関連して説明するように、バーストを融合することができる。
【0068】
[0099]図10は、更に別の実施形態による、複数の独立したデータバスによって複数のDRAMデバイスに接続されているバースト融合インタフェース回路を示しているブロック図1000を図解している。オプションとして、このブロック図1000は、図1〜図9のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図1000は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0069】
[00100]バースト融合インタフェース回路1010は、複数のDRAMデバイス1030を複数の独立したデータバス1040に接続するインタフェース回路のデータコンポーネントを含んでいることができる。更に、バースト融合インタフェース回路1010は、ある時間期間内に受け取る複数のバースト命令を融合することができる。図示したように、バースト融合インタフェース回路1010には、8個のDRAMデバイス1030を8本の独立したデータ経路を介して接続することができる。更には、バースト融合インタフェース回路1010は、メモリコントローラ820への1本のデータ経路を使用することができる。なお、この実施形態においては8個のDRAMデバイス1030を示しているが、別の実施形態においては、16個、24個、32個といったデバイスを8本の独立したデータ経路に接続することができる。更に別の実施形態においては、DRAMデバイス1030には、2本、4本、8本、16本、又はそれ以上の独立したデータ経路を関連付けることができる。
【0070】
[00101]バースト融合インタフェース回路1010は、メモリコントローラ1020との1つの電気的インタフェースを提供することができ、従って、デバイス間制約(例えば、ランク間のターンアラウンドタイム)が排除される。一実施形態においては、メモリコントローラ1020は、自身がバースト融合インタフェース回路1010を通じてDRAMデバイス1030を間接的に制御していることと、バスのターンアラウンドタイムが必要ないこととを認識していることができる。別の実施形態においては、バースト融合インタフェース回路1010は、DRAMデバイス1030を使用してM個の論理デバイスをエミュレートすることができる。更に、バースト融合インタフェース回路1010は、個々のDRAMデバイス1030のそれぞれによってデバイス間制約(例えば、tRRD、tCCD、tFAW、tWTR)が必ず満たされる一方で、バースト融合インタフェース回路1010が、デバイス間制約の存在しないM個の論理デバイスとして自身を定義できるようにする目的で、行アクティブ化命令及び列アクセス命令を、DRAMデバイス1030のうちの1つを対象として変換することができる。
【0071】
[00102]図11は、別の実施形態による、命令列における複数の命令にわたる連続的なデータ転送を示しているタイミング図1100を図解している。オプションとして、このタイミング図1100は、図1〜図10のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図1100は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0072】
[00103]図示したように、デバイス間制約及びデバイス内制約が排除されており、従って、バースト融合インタフェース回路は、データバス上での連続的なバーストデータ転送を許可することができ、従って、データ帯域幅が高まる。例えば、バースト融合インタフェース回路に関連付けられているインタフェース回路は、業界標準のDRAMインタフェースを、命令スケジューリングにおける制約の存在しない1つ以上のDRAMデバイスとしてメモリコントローラに提示することができる。更に、このインタフェース回路では、DRAMメモリシステムの電気的インタフェース或いは命令セットを変更する必要なしに、DRAMデバイスを、命令スケジューリングにおける制約が存在しないデバイスとしてエミュレートすることができる。なお、この実施形態に説明したインタフェース回路は、任意のタイプのメモリシステム(例えば、DDR2、DDR3)を含んでいることができる。
【0073】
[00104]図12は、更に別の実施形態による、複数の独立したデータバスによって複数のDRAMデバイスに接続されているプロトコル変換・インタフェース回路を示しているブロック図1200を図解している。オプションとして、このブロック図1200は、図1〜図11のアーキテクチャ及び環境に関連付けることができる。当然ながら、このブロック図1200は、任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0074】
[00105]図示したように、プロトコル変換・インタフェース回路1210は、プロトコルの変換機能若しくは操作機能、又はその両方を実行することができ、更に、インタフェース回路として機能することができる。例えば、このプロトコル変換・インタフェース回路1210は、メモリコントローラを複数のメモリデバイスに接続しているインタフェース回路の中に含めることができる。
【0075】
[00106]一実施形態においては、プロトコル変換・インタフェース回路1210は、行アクティブ化命令若しくは列アクセス命令、又はその両方を遅らせることができる。更に、プロトコル変換・インタフェース回路1210は、複数の異なる種類のアドレスマッピング方式(列アクセス命令の予測到着タイムに依存する)を透過的に実行することができる。1つの方式においては、メモリコントローラによって列アクセス命令を通常のタイミングにおいて送ることができる(すなわち、列アクセス命令が早期である方式と比較して遅れて到着する)。
【0076】
[00107]第2の方式においては、DRAMデバイスのインタフェースにおいて行アクセス命令が必要となる前に、メモリコントローラによって列アクセス命令を送ることができる(すなわち、早期に到着する)。DDR2 SDRAMメモリシステム及びDDR3 SDRAMメモリシステムにおいては、早期に到着する列アクセス命令をポステッドCAS命令(Posted−CAS command)と称することがある。従って、必要に応じて行の一部をアクティブ化することができ、従って、行の一部のアクティブ化が提供される。更に、低電力も提供することができる。
【0077】
[00108]なお、上述した方式の実施形態では、ピンを追加する、或いはメモリコントローラが新しい命令をプロトコル変換・インタフェース回路に送ることが必ずしも要求されない。このように、広帯域幅のDRAMデバイスを提供することができる。
【0078】
[00109]図示したように、プロトコル変換・インタフェース回路1210には、8本の独立したデータ経路を介して8個のDRAMデバイスを接続することができる。例えば、プロトコル変換・インタフェース回路1210は、8個の1GB DRAMデバイスによって1つの8GB DRAMデバイスをエミュレートすることができる。従って、メモリコントローラは、8個のバンク、バンクあたり32768行、行あたり4096列、列あたり4ビットが存在しているものと予測する。メモリコントローラは、行アクティブ化命令を発行するとき、後に続く列アクセス命令において4096列が使用可能であるものと予測するが、1GBのデバイスは行あたり2048列を備えているのみである。同様に、2GBのデバイスを使用して16GBのDRAMデバイスをエミュレートするとき、或いは、4GBのデバイスを使用して32GBのデバイスをエミュレートするとき、行のサイズが一致しないという同じ問題が生じうる。
【0079】
[00110]1GB DRAMデバイスと8GB DRAMデバイス、2GB DRAMデバイスと16GB DRAMデバイス、4GB DRAMデバイスと32GB DRAMデバイスなどにおいて、行のサイズが異なる状況に対応するため、プロトコル変換・インタフェース回路1210は、より大きな行の任意の部分にアクセスしうる次の列アクセス命令に備えて準備するため、適切な数の行アクティブ化命令を計算して発行することができる。特定の条件に応じて異なる挙動をとるように、プロトコル変換・インタフェース回路1210を構成設定することができる。
【0080】
[00111]例示的な一実施形態においては、メモリコントローラは、列アクセス命令を早期に発行しない。プロトコル変換・インタフェース回路1210は、より大きな容量の論理DRAMデバイスにおけるより大きな行サイズに一致するように、より小さい複数の行をアクティブ化することができる。
【0081】
[00112]更には、プロトコル変換・インタフェース回路1210は、図示したように、メモリコントローラまでの1本のデータ経路を提供することができる。従って、プロトコル変換・インタフェース回路1210は、メモリコントローラとの1つの電気的インタフェースを備えている1つのDRAMデバイスとして自身を認識させることができる。例えば、プロトコル変換・インタフェース回路1210が8個の1GB DRAMデバイスを使用して1つの標準の8GB DRAMデバイスをエミュレートする場合、メモリコントローラは、8GBの論理DRAMデバイスがリフレッシュ命令を実行するのに300ns以上かかるものと予測する。更に、プロトコル変換・インタフェース回路1210は、リフレッシュ命令をインテリジェント式にスケジューリングすることができる。すなわち、例えば、プロトコル変換・インタフェース回路1210は、1GB DRAMデバイスへのリフレッシュ命令を個別にスケジューリングする(リフレッシュ命令のそれぞれが100nsかかる)ことができる。
【0082】
[00113]これを目的として、プロトコル変換・インタフェース回路1210が複数の物理DRAMデバイスを使用して、より大きな1つのDRAMデバイスをエミュレートする場合、メモリコントローラは、リフレッシュ命令を実行するのに論理デバイスが比較的長い時間期間を要するものと予測する。プロトコル変換・インタフェース回路1210は、物理DRAMデバイスのそれぞれへのリフレッシュ命令を個別にスケジューリングすることができる。従って、より大きな論理DRAMデバイスのリフレッシュにかかる時間期間を、同じサイズの物理DRAMデバイスのリフレッシュと比較して短くすることができる。更には、DDR3メモリシステムでは、熱的な変動によって生じるタイミングのずれに対して高速データI/O回路が定期的に調整(較正)されるように、キャリブレーションシーケンスを必要とすることがある。更に、オプションとして、時間的にずらせたリフレッシュ命令によって、独立した物理DRAMデバイスのそれぞれを個別に調整するうえで要求されるI/Oクワイエットタイム(I/O quiet time)を確保することもできる。
【0083】
[00114]このように、一実施形態においては、プロトコル変換・インタフェース回路1210によって、論理DRAMデバイスのリフレッシュタイムを時間的にずらすことができる。DDR3デバイスでは、オプションとして、様々なレベルのZQ(zero quotient)キャリブレーションシーケンスが要求されることがある。このキャリブレーションシーケンスでは、保証されたシステムクワイエットタイムが必要とされることがあるが、電力消費量が多いことがあり、システム内の別のI/Oが同時にスイッチングされていないことが要求されることがある。従って、小さい容量の複数の異なる物理DRAMデバイスへのリフレッシュ命令を時間的にずらすことによって、より大きな容量の論理DRAMデバイスにおけるリフレッシュ命令をエミュレートすることができる。リフレッシュ命令を時間的にずらすことにより、オプションとして、独立した物理DRAMデバイスのそれぞれを個別に調整するうえで要求されうる保証されたクワイエットタイムを提供することができる。
【0084】
[00115]図13は、別の実施形態による、メモリコントローラが列アクセス命令を遅らせて発行するときの効果を示しているタイミング図1300を図解している。オプションとして、このタイミング図1300は、図1〜図12のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図1300は任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0085】
[00116]図示したように、DRAMデバイスの行アクセスのレイテンシ及び列アクセスのレイテンシの両方をカバーするだけの十分なレイテンシを確保せずに、メモリコントローラによって列アクセス命令が発行されるメモリシステムにおいては、インタフェース回路は、次の列アクセスが必ず空きバンクにアドレッシングされるように、複数の行アクセス命令を複数のDRAMデバイスに送ることができる。例示的な一実施形態においては、物理デバイスの行サイズが1キロバイト(KB)であり、論理デバイスの行サイズが2KBである。この場合、インタフェース回路は、2つの異なる物理デバイスにおいて1KBの2つの行をアクティブ化することができる(tRRDの期間内に同じデバイスにおいて2行をアクティブ化することはできないため)。別の例示的な実施形態においては、物理デバイスの行サイズが1KBであり、論理デバイスの行サイズが4KBである。この場合、4KBの行の任意の部分を対象としうる列アクセス命令の到着に備えて準備するため、1KBの4つの行をオープンすることができる。
【0086】
[00117]一実施形態においては、メモリコントローラは、列アクセス命令を早期に発行することができる。インタフェース回路は、このような早期の発行を、任意の望ましい方式において、例えば、DDR2デバイス及びDDR3デバイスのアディティブレイテンシ(additive latency)特性を使用して、行うことができる。更に、インタフェース回路は、1つの特定のDRAMデバイスにおける1つの特定の行をアクティブ化することができる。これにより、より大きな容量の論理DRAMデバイスにおいて、行の一部をアクティブ化することができる。
【0087】
[00118]図14は、更に別の実施形態による、メモリコントローラが列アクセス命令を早期に発行するときの効果を示しているタイミング図1400を図解している。オプションとして、このタイミング図1400は、図1〜図13のアーキテクチャ及び環境に関連付けることができる。当然ながら、このタイミング図1300は任意の望ましい環境に関連付けることができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0088】
[00119]この実施形態においては、メモリコントローラは、列アクセス命令を早期に、すなわち、行アクティブ化命令がDRAMデバイスに発行される前に、発行することができる。従って、インタフェース回路は、列アドレスの一部を取得し、それを行アドレスと結合して行の一部のアドレスを形成することができる。これを目的として、インタフェース回路は、列アクセス命令が対象としている行をアクティブ化することができる。単なる一例として、物理デバイスの行サイズが1KBであり、論理デバイスの行サイズが2KBである場合、早期の列アクセス命令によって、インタフェース回路は1KBの1つの行をアクティブ化することができる。従って、インタフェース回路は、物理デバイスの行サイズよりも大きな行サイズを有する論理デバイスにおける行の一部のアクティブ化を、追加のピン或いは特殊な命令を使用する必要なしに実施することができる。
【0089】
[00120]図15の(A)〜(C)は、別の実施形態による、複数のDRAM積層体を備えているDIMMを示している。オプションとして、このDIMMは、図1〜図14において実施することができる。当然ながら、このDIMMは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0090】
[00121]図示したように、複数のDRAM積層体を備えているDIMMが提供されており、DRAM積層体のそれぞれが、複数のDIMMにまたがるビットスライス(bit slice)を備えている。一例として、図15の(A)は、4つのDIMM(例えば、DIMM A、DIMM B、DIMM C、DIMM D)を示している。更に、この例においては、4つのDIMMにまたがる9個のビットスライス(識別符号DA0,...,DA6,...,DA8が付けられている)が存在している。ビットスライス「6」は、ブロック1510に囲んで示してある。図15の(B)は、バッファ搭載DRAM積層体(buffered DRAM stack)を示している。バッファ搭載DRAM積層体1530は、バッファ集積回路(1520)と、DRAMデバイスDA6,DB6,DC6,DD6とを備えている。従って、ビットスライス6はデバイスDA6,DB6,DC6,DD6から生成されている。図15の(C)は、複数のバッファ搭載DRAM積層体を備えている高密度DIMMの平面図である。高密度DIMM(1540)は、個々のDRAMの代わりに、バッファ搭載DRAM積層体(1550)を備えている。
【0091】
[00122]以下に、いくつかの例示的な実施形態を示す。
【0092】
[00123]より大きなPCB領域を必要とすることなくシステムの総記憶容量を増大させることのできる、DIMMの密度が高い配置構成。従って、より高い密度のDIMMが、現在のDIMMの機械的制約及び空間的制約の中に収まる。
【0093】
[00124]より高い密度のDIMMを、既存のDIMMの熱設計枠(thermal envelope)の中に収めることのできる、電力損失を分散させた配置構成。1枚のDIMM上に複数のバッファを備えている実施形態においては、バッファリング機能の電力損失がDIMM全体に拡散する。
【0094】
[00125]システムのパフォーマンスを高めるため、レイテンシを累積させない(非アディティブ)方式の配置構成。レイテンシを累積させない方式の配置構成においては、特定のDIMM上のバッファ集積回路を通じてのレイテンシは、そのDIMMにアクセスするときにのみ発生する。
【0095】
[00126]バッファ搭載DRAM積層体の実施形態においては、積層体の複数のDRAMデバイスは、バッファ集積回路よりも電気的に後ろに位置している。言い換えれば、バッファ集積回路は、電気的には積層体の複数のDRAMデバイスとホスト電子システムとの間に配置されており、積層化されているDRAMデバイスとホストシステムとの間で渡される信号の一部又はすべてをバッファリングする。DRAMデバイスは標準的な既製の高速デバイス(例えば、DDR SDRAM或いはDDR2 SDRAM)であるため、バッファ集積回路は、いくつかの信号(例えばクロック)を再生成しなければならないことがあり、その一方で、別の信号(例えばデータ信号)を、それらのジッタを最小にするためクロック又はデータストローブに再同期させなければならないことがある。更に別の信号(例えばアドレス信号)は、論理回路(例えば復号器)によって操作することができる。バッファ集積回路のいくつかの実施形態においては、DRAMデバイスとホスト電子システムとの間の信号の一部又はすべてを再生成しない、又は再同期させない、又は論理的に操作しない。
【0096】
[00127]バッファ集積回路及びDRAMデバイスは、多くの異なる方式において物理的に配置することができる。一実施形態においては、バッファ集積回路及びDRAMデバイスを、すべて同じ積層体に含めることができる。別の実施形態においては、バッファ集積回路を、DRAM集積回路の積層体とは個別にすることができる(すなわち、バッファ集積回路を積層体の外側とすることができる)。更に別の実施形態においては、バッファ集積回路よりも電気的に後ろに位置しているDRAM集積回路を複数の積層体に含めることができる(すなわち、バッファ集積回路がDRAM集積回路の複数の積層体をインターフェースすることができる)。
【0097】
[00128]一実施形態においては、バッファ集積回路よりも電気的に後ろに位置しているDRAMデバイスが、積層体の全DRAMデバイスの容量の合計値に等しい容量を有する1つのDRAM集積回路として、ホストシステムによって認識されるように、バッファ集積回路を設計することができる。従って、例えば、積層体に8個の512MB DRAM集積回路が含まれている場合、この積層体が1つの4GB DRAM集積回路としてホストシステムに認識されるように、この実施形態のバッファ集積回路を設計する。この場合、アンバッファードDIMM、レジスタードDIMM、SO−DIMM、又はFB−DIMMを、個々のDRAMデバイスではなく、バッファを搭載したDRAM積層体を使用して構築することができる。例えば、バッファ搭載DRAM積層体を使用するダブル(2)ランクのレジスタードDIMMでは、18個の積層体を備えることができ、そのうちの9個の積層体をDIMM PCBの片面に配置し、ホスト電子システムからの第1の集積回路セレクト信号によって制御することができ、9個の積層体をDIMM PCBの反対面に配置し、ホスト電子システムからの第2の集積回路セレクト信号によって制御することができる。これらの積層体のそれぞれが、複数のDRAMデバイス、及びバッファ集積回路を含んでいることができる。
【0098】
[00129]図16Aは、更に別の実施形態による、バッファ搭載DRAM積層体を備えているDIMM PCBを示している。オプションとして、このDIMM PCBは、図1〜図15において実施することができる。当然ながら、このDIMM PCBは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0099】
[00130]図示したように、DIMM PCBの上面及び下面の両方が、複数のバッファ搭載DRAM積層体(例えば、1610及び1620)を備えている。なお、図を単純にするため、レジスタードDIMMのレジスタ及びクロックPLLの集積回路は示していない。
【0100】
[00131]図16Bは、更に別の実施形態による、4GB DRAMをエミュレートするバッファ搭載DRAM積層体を示している。オプションとして、このバッファ搭載DRAM積層体は、図1〜図16Aにおいて実施することができる。当然ながら、このバッファ搭載DRAM積層体は任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0101】
[00132]一実施形態においては、DRAMデバイスのバッファ搭載積層体をホストシステムに1つのDRAMデバイスとして認識させる、又は1つのDRAMデバイスをエミュレートすることができる。このような場合、ホストシステムから認識されるメモリバンクの数を、積層体における利用可能なバンクの数よりも小さくすることができる。説明を目的として、積層体に8個の512MB DRAM集積回路が含まれている場合、この実施形態のバッファ集積回路によって、ホストシステムからは積層体が1つの4GB DRAM集積回路であるように認識される。従って、積層体に32個のバンク(512MBの集積回路あたり4つのバンク×8個の集積回路)が存在している場合であっても、この実施形態のバッファ集積回路では、ホストシステムには8個のバンクが認識されるのみであり、なぜなら、規格によると4GB DRAMは8個のバンクのみを有するためである。この例において、8個の512MB DRAM集積回路を物理DRAMデバイスと称することができ、1つの4GB DRAM集積回路を仮想DRAMデバイスと称することができる。同様に、物理DRAMデバイスのバンクを物理バンクと称することができ、仮想DRAMデバイスのバンクを仮想バンクと称することができる。
【0102】
[00133]本発明の別の実施形態においては、n個のDRAMデバイスの積層体が、mランクのDRAMデバイス(n?m且つm?2)としてホストに認識されるように、バッファ集積回路が設計されている。説明を目的として、積層体に8個の512MB DRAM集積回路が含まれている場合、この実施形態のバッファ集積回路によって、積層体を2ランクの2GB DRAMデバイスとして認識させる(m=2の場合)、又は4ランクの1GB DRAMデバイスとして認識させる(m=4の場合)、又は8ランクの512MB DRAMデバイスとして認識させる(m=8の場合)ことができる。結果として、8個の512MB DRAMデバイスの積層体は、16個の仮想バンク(m=2、2GBの仮想DRAMあたり8個のバンク×2ランク)、又は32個の仮想バンク(m=4、1GB DRAMあたり8個のバンク×4ランク)、又は32個のバンク(m=8、512MB DRAMあたり4つのバンク×8ランク)を備えることができる。
【0103】
[00134]一実施形態においては、ランクの数は、ホストシステムからバッファ集積回路に接続されている集積回路セレクト信号の数によって決定することができる。例えば、最も広く使用されている、JEDEC準拠のDIMMコネクタのピンアウトは、2つの集積回路セレクト信号を有する。従って、この実施形態においては、DIMMコネクタからの2つの集積回路セレクト信号を、DIMM上のバッファ集積回路のそれぞれにルーティングすることによって、積層体のそれぞれを2つのDRAMデバイスとして認識させる(バッファ集積回路のそれぞれが異なるランクに属している)ことができる。説明を目的として、いま、DRAMデバイスの積層体のそれぞれが専用のバッファ集積回路を備えており、マザーボード上のDIMMコネクタに接続されている2つの集積回路セレクト信号に識別符号CS0#及びCS1#を付けるものと想定する。更に、積層体のそれぞれが8ビット幅であり(すなわち、8本のデータピンを備えている)、積層体には、バッファ集積回路と、8ビット幅の8個の512MB DRAM集積回路とが含まれているものと想定する。この例においては、CS0#及びCS1#の両方が、DIMM上のすべての積層体に接続されている。従って、9個の積層体を備えている、シングルサイドのレジスタードDIMM(CS0#及びCS1#が9個の積層体のすべてに接続されている)では、実質的に2つの2GBランク(ランクのそれぞれが8個のバンクを有する)を備えている。
【0104】
[00135]別の実施形態においては、18個の積層体(PCBの面のそれぞれに9個ずつ)を使用して、ダブルサイドのレジスタードDIMMを構築することができ、この場合、積層体のそれぞれは、4ビット幅であり、バッファ集積回路と、4ビット幅の8個の512MB DRAMデバイスとを含んでいる。上と同様に、2つの集積回路セレクト信号CS0#及びCS1#がすべての積層体に接続されている場合、そのDIMMは、実質的に2つの4GBランク(ランクのそれぞれが8個のバンクを有する)を備えている。しかしながら、ランクの容量の半分はDIMM PCBの片面に存在しており、残りの半分が反対面に存在している。例えば、いま、DIMM上の積層体に番号S0〜S17を付け、積層体S0〜S8がDIMM PCBの片面に存在しており、積層体S9〜S17がPCBの反対面に存在しているものとする。積層体S0をホストシステムのデータ信号線DQ[3:0]に接続し、積層体S9をホストシステムのデータ信号線DQ[7:4]に接続し、積層体S1をデータ信号線DQ[11:8]に接続し、積層体S10をデータ信号線DQ[15:12]に接続し、以下同様に接続することができる。積層体S0の8個の512MB DRAMデバイスに識別符号S0_M0〜S0_M7を付けることができ、積層体S9の8個の512MB DRAMデバイスに識別符号S9_M0〜S9_M7を付けることができる。一例においては、積層体S0に関連付けられているバッファ集積回路は、集積回路S0_M0〜S0_M3を使用して、第1のランクに属している(すなわち、集積回路セレクト信号CS0#によって制御される)2GB DRAM集積回路をエミュレートすることができる。同様に、積層体S0に関連付けられているバッファ集積回路は、集積回路S0_M4〜S0_M7を使用して、第2のランクに属している(すなわち、集積回路セレクト信号CS1#によって制御される)2GB DRAM集積回路をエミュレートすることができる。従って、一般的には、集積回路Sn_M0〜Sn_M3を使用して、第1のランクに属している2GB DRAM集積回路をエミュレートすることができ、その一方で、集積回路Sn_M4〜Sn_M7を使用して、第2のランクに属している2GB DRAM集積回路をエミュレートすることができる(nは積層体の番号を表す(すなわち、0?n?17))。なお、上述した配置構成は、説明を目的としているに過ぎない。請求項の概念及び範囲から逸脱することなく、別の配置構成を使用して同じ結果を達成することができる。例えば、集積回路S0_M0,S0_M2,S0_M4,S0_M6を、これらに関連付けられるバッファ集積回路によって1つのグループとし、第1のランクにおける2GB DRAM集積回路をエミュレートすることができ、その一方で、集積回路S0_M1,S0_M3,S0_M5,S0_M7を、これらに関連付けられるバッファ集積回路によって1つのグループとし、DIMMの第2のランクにおける2GB DRAM集積回路をエミュレートすることができる。
【0105】
[00136]図17Aは、別の実施形態による、バッファ集積回路とDRAM積層体とを使用するDIMMの例を示している。オプションとして、このDIMMは、図1〜図16において実施することができる。当然ながら、このDIMMは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0106】
[00137]なお、図を単純にする目的で、レジスタードDIMMのレジスタ及びクロックPLLの集積回路は示していない。DIMM PCB1700は、DIMM PCB1700の上面におけるバッファ搭載DRAM積層体(例えばS5)と、DIMM PCB1700の下面におけるバッファ搭載DRAM積層体(例えばS15)とを含んでいる。バッファ搭載積層体のそれぞれが2つのDRAMをエミュレートする。
【0107】
[00138]図17Bは、更に別の一実施形態による、物理DRAM積層体を示している。オプションとして、この物理DRAM積層体は、図1〜図17Aにおいて実施することができる。当然ながら、この物理DRAM積層体は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0108】
[00139]例えば、積層体1720は、4ビット幅の8個の512MB DRAMデバイスと、バッファ集積回路1730とを備えている。図示したように、Sn_M0、Sn_M1、Sn_M2、及びSn_M3から成る第1のデバイスグループは、CS0#によって制御される。Sn_M4、Sn_M5、Sn_M6、及びSn_M7から成る第2のデバイスグループは、CS1#によって制御される。なお、8個のDRAMデバイス及びバッファ集積回路が1つの積層体に属しているものとして示してあるが、これは単なる一例である。別の実施形態も可能である。例えば、バッファ集積回路1730をDRAMデバイスの積層体の外側とすることができる。更に、8個のDRAMデバイスを複数の積層体に編成することもできる。
【0109】
[00140]図18A及び図18Bは、更に別の実施形態による、マルチランクのバッファ集積回路とDIMMとを示している。オプションとして、このマルチランクバッファ集積回路及びDIMMは、図1〜図17において実施することができる。当然ながら、このマルチランクバッファ集積回路及びDIMMは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0110】
[00141]マルチランクの実施形態のオプションとしての変形形態においては、DRAM集積回路の複数の積層体に1つのバッファ集積回路を関連付けることができる。図18A及び図18Bに例示した実施形態においては、1つのバッファ集積回路がDRAM集積回路の2つの積層体に専用となっている。図18Bは、2つの積層体(DIMM PCBの面のそれぞれに1つの積層体)と、DIMM PCBの片面に配置されている1つのバッファ集積回路B0とを示している。しかしながら、この実施形態は、完全に説明を目的としているに過ぎない。バッファ集積回路が関連付けられている複数の積層体を、DIMM PCBの同じ面に配置することができ、或いは、PCBの両面に配置することができる。
【0111】
[00142]図18A及び図18Bに例示した実施形態においては、DRAMデバイスの積層体のそれぞれが512MBの8個の集積回路を含んでいる。積層体には番号S0〜S17が付けられており、積層体のそれぞれの中で、集積回路に識別符号Sn_M0〜Sn_M7(nは0〜17)が付けられている。更に、この例の場合、バッファ集積回路は8ビット幅であり、バッファ集積回路には番号B0〜B8が付けられている。バッファB0には、データ信号線DQ[7:0]と同様に、2つの集積回路セレクト信号CS0#及びCS1#が接続されている。図示したように、積層体S0〜S8が一次積層体であり、積層体S9〜S17はオプションの積層体である。積層体S9は、DIMM PCBの反対の面、積層体S0(及びバッファB0)のちょうど反対側に配置されている。積層体S9の集積回路はバッファB0に接続されている。言い換えれば、積層体S0及び積層体S9のDRAMデバイスがバッファB0に接続されており、バッファB0がホストシステムに接続されている。DIMMが一次積層体S0〜S8のみを含んでいる場合、バッファ集積回路B0は、積層体S0の8個のDRAMデバイスをエミュレートしてホストシステムに2つの2GBデバイスとして認識させ、この場合、一方の2GBデバイスがCS0#によって制御され、他方の2GBデバイスがCS1#によって制御される。DIMMが一次積層体S0〜S8とオプションの積層体S9〜S17の両方を含んでいる場合、バッファ集積回路B0は、積層体S0及び積層体S9の16個の512MB DRAMデバイスをまとめてエミュレートしてホストシステムに2つの4GB DRAMデバイスとして認識させ、この場合、一方の4GB DRAMデバイスがCS0#によって制御され、他方の4GB DRAMデバイスがCS1#によって制御される。
【0112】
[00143]なお、上の説明から明らかであるように、このアーキテクチャでは、メモリバス上の電気的負荷とランクの数とが無関係になる。従って、9個の積層体(S0〜S8)と9個のバッファ集積回路(B0〜B8)とによって低密度のDIMMを構築することができ、18個の積層体(S0〜S17)と9個のバッファ集積回路(B0〜B8)とによって高密度のDIMMを構築することができる。なお、DIMM上のバッファ集積回路のそれぞれに集積回路セレクト信号CS0#及びCS1#の両方を接続する必要はない。9個の積層体(S0〜S8)と9個のバッファ集積回路(B0〜B8)とによってシングルランクの低密度DIMMを構築することができ、この場合、DIMM上のバッファ集積回路のそれぞれにCS0#が接続されている。同様に、17個の積層体(S0〜S17)と9個のバッファ集積回路とによってシングルランクの高密度DIMMを構築することができ、この場合、DIMM上のバッファ集積回路のそれぞれにCS0#が接続されている。
【0113】
[00144]マルチランクバッファを使用してマルチランクの実施形態を実施するDIMMは、形状因子が小さくDIMMスロットの数が制限されるシステムにおいてオプションとして使用することができる。例えば、いま、8個の集積回路セレクト信号を有し、従って、最大8個のランクをサポートするプロセッサを考える。このようなプロセッサは、4つの2ランクDIMM又は8個のシングルランクDIMM、又は、8個のランクを提供するその他の任意の組合せをサポートすることができる。このとき、ランクのそれぞれがy個のバンクを有し、すべてのランクが同一であると想定すると、このプロセッサは、任意の瞬間に最大8*y個のメモリページをオープン状態に維持することができる。形状因子が小さいサーバ(例えば、ブレードサーバ或いは1Uサーバ)では、DIMMスロットのための物理的空間がプロセッサあたり2つのみである場合がある。すなわち、そのような形状因子の小さいサーバにおけるプロセッサは、たとえ8*y個のページをオープン状態に維持する能力を備えていても、オープンすることができるメモリページは最大で4*y個である。そのようなシステムにおいては、DRAMデバイス及びマルチランクバッファ集積回路の積層体を含んでいるDIMMを使用することにより、システム内のDIMMスロットの数が、そのプロセッサがサポートすることのできる最大のスロット数よりも少ない場合であっても、プロセッサが8*y個のメモリページをオープン状態に維持するようにDIMMを設計することができる。これを達成するための一方法は、ホストシステムの集積回路セレクト信号のすべてを、マザーボード上のすべてのDIMMスロットの間で割り当てることである。例えば、プロセッサが2つのみの専用DIMMスロットを備えている場合、DIMMコネクタのそれぞれに4つの集積回路セレクト信号を接続することができる。しかしながら、プロセッサが4つの専用DIMMスロットを備えている場合、DIMMコネクタのそれぞれに2つの集積回路セレクト信号を接続することができる。
【0114】
[00145]バッファ及びDIMMの設計を説明する目的で、いま、バッファ集積回路が、ホストシステムからアクセス可能である最大8個の集積回路セレクト信号入力を備えているように設計されているものとする。これらの集積回路セレクト信号入力のそれぞれに対して、ホストシステムの集積回路セレクト信号のロジックハイの電圧レベルとロジックローの電圧レベルとの間の電圧までの弱いプルアップ回路を設けることができる。例えば、VDDQとGND(グランド)との間の中間の電圧(VTT)までのプルアップ抵抗器を接続することができる。これらのプルアップ抵抗器はDIMM PCB上に配置することができる。マザーボードの設計に応じて、ホストシステムからの2つ以上の集積回路セレクト信号を、DIMMコネクタ、従ってバッファ集積回路の集積回路セレクト信号入力に接続することができる。パワーアップ時、バッファ集積回路は、自身のいくつかの集積回路セレクト信号入力において有効なローロジックレベル又はハイロジックレベルを検出することができ、別のいくつかの集積回路セレクト信号入力においてVTTを検出することができる。これにより、積層体におけるランクの数が、有効な集積回路セレクト信号入力の数に一致するように、バッファ集積回路によって積層体におけるDRAMを構成設定することができる。
【0115】
[00146]図19A及び図19Bは、別の実施形態による、ホストシステムからの有効な集積回路セレクト信号の数に等しい数のランクをDIMM上に提供するバッファを示している。オプションとして、このバッファは、図1〜図18において実施することができる。当然ながら、このバッファは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0116】
[00147]図19Aは、2枚のDIMMに接続されているメモリコントローラを示している。ホストシステムのメモリコントローラ(1900)は、8本の集積回路セレクト(CS)信号線(CS0#〜CS7#)を駆動する。最初の4本の信号線(CS0#〜CS3#)は、第1のDIMM(1910)におけるメモリランクを選択するために使用され、残りの4本の信号線(CS4#〜CS7#)は、第2のDIMM(1920)におけるメモリランクを選択するために使用される。図19Bは、DIMMのランクの数を構成設定するために使用される、DIMMにおけるバッファ及びプルアップ回路を示している。この例の場合、バッファ1930は、8個の集積回路セレクト信号入力(CS0#〜CS7#)を含んでいる。DIMM1910上のプルアップ回路は、接続されている集積回路セレクト信号線の電圧を、中間電圧値(すなわち、VDDQとGNDとの中間、VTT)まで吊り上げる。CS0#〜CS3#は、プルアップ回路を介してバッファ1930に接続されている。CS4#〜CS7#はDIMM1910には接続されていない。従って、この例の場合、DIMM1910は、信号線CS0#〜CS3#に基づいてランクを構成設定する。
【0117】
[00148]従来のマザーボードの設計では、集積回路セレクト信号のサブセットがDIMMコネクタのそれぞれに配線によって接続されている。例えば、プロセッサあたり4つのDIMMコネクタが存在する場合、2つの集積回路セレクト信号をDIMMコネクタのそれぞれに配線によって接続することができる。しかしながら、4つのDIMMコネクタのうち2つのコネクタにのみ装着されている場合、たとえプロセッサが8*y個のバンクをサポートしている場合であっても、利用することのできるメモリバンクは4*y個のみであり、なぜなら、4つのDIMMコネクタのうち2つのコネクタのみにDIMMが装着されているためである。メモリバンクの動的な可用性を提供する一方法としては、ホストシステムからのすべての集積回路セレクト信号がマザーボード上のすべてのDIMMコネクタに接続されているように、マザーボードを構成設定する。パワーアップ時、ホストシステムは、システム内の装着済みDIMMコネクタの数を問い合わせ、次いで、すべての装着済みコネクタの間で集積回路セレクト信号を割り当てる。
【0118】
[00149]一実施形態においては、DIMMのそれぞれにおけるバッファ集積回路を、特定の集積回路セレクト信号にのみ応答するようにプログラムすることができる。上と同じ例として、プロセッサが4つの専用DIMMコネクタを備えており、4つのDIMMコネクタのうちの2つのみが装着されている場合を考える。最初の4つの集積回路セレクト信号(例えば、CS0#〜CS3#)が第1のDIMMコネクタに割り当てられ、残りの4つの集積回路セレクト信号(例えば、CS4#〜CS7#)が第2のDIMMコネクタに割り当てられるように、プロセッサをプログラムすることができる。プロセッサは、第1のDIMM上のバッファ集積回路に、信号CS0#〜CS3#に対してのみ応答して信号CS4#〜CS7#を無視するように、命令することができる。更に、プロセッサは、第2のDIMM上のバッファ集積回路に、信号CS4#〜CS7#に対してのみ応答して信号CS0#〜CS3#を無視するように、命令することができる。後の時点において、残りの2つのDIMMコネクタが装着された場合、プロセッサは、第1のDIMM上のバッファ集積回路を、信号CS0#及びCS1#に対してのみ応答するように再プログラムし、第2のDIMM上のバッファ集積回路を、信号CS2#及びCS3#に対してのみ応答するように再プログラムし、第3のDIMM上のバッファ集積回路を、信号CS4#及びCS5#に対してのみ応答するようにプログラムし、第4のDIMM上のバッファ集積回路を、信号CS6#及びCS7#に対してのみ応答するようにプログラムすることができる。この方法によると、この例のプロセッサは、装着されているDIMMコネクタの数には関係なく、8*y個のページをオープン状態に維持することができる(DIMMのそれぞれが最大8個のメモリランクをサポートする能力を備えているものと想定する)。本質的に、この方法では、オープンされるメモリページの数と、システム内のDIMMの数とが無関係になる。
【0119】
[00150]図19Cは、更に別の実施形態による、メモリの論理パーティションとメモリの物理パーティションとの間のマッピングを示している。オプションとして、このマッピングは、図1〜図19Bにおいて実施することができる。当然ながら、このマッピングは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0120】
[00151]複数のオペレーティングシステム及びソフトウェアスレッドを共通のハードウェアプラットフォーム上で同時に実行することのできる実施形態においては、バッファ集積回路は、積層体の1つ以上のメモリデバイスのセットを特定のオペレーティングシステム又はソフトウェアスレッドに割り当てることができ、その一方で、メモリデバイスの別のセットを別のオペレーティングシステム又はスレッドに割り当てることができる。図19Cの例においては、第1のオペレーティングシステムには、物理パーティション1980に対応する第1の論理アドレス範囲1960が割り当てられ、それ以外のすべてのオペレーティングシステムには、物理パーティション1990に対応する第2の論理アドレス範囲1970が割り当てられるように、ホストシステム(図示していない)が動作することができる。第1以外のオペレーティングシステム又はスレッドから第1のオペレーティングシステム又はスレッドへのコンテキストスイッチ時、ホストシステムは、1つ又は複数のDIMM上のバッファに、コンテキストスイッチの特性を通知することができる。この通知は、例えば、ホストシステムが命令又は制御信号をメモリバスの信号線を通じて(すなわち、インバンドシグナリング)、又は個別の信号線を通じて(すなわちサイドバンドシグナリング(side band signaling))バッファ集積回路に送ることによって、達成することができる。サイドバンドシグナリングの例として、命令をSMBusを通じてバッファ集積回路に送る。次いで、バッファ集積回路は、第1のオペレーティングシステム又はスレッドに割り当てられているメモリ集積回路1980をアクティブ状態にする一方で、(現在実行されていない)それ以外のオペレーティングシステム又はスレッドに割り当てられているそれ以外のすべてのメモリ集積回路1990を、低電力モード又はパワーダウンモードにする。このオプションの方法では、メモリ積層体における電力損失が減少するのみならず、ディスクへのアクセスも減少する。例えば、ホストシステムがオペレーティングシステム又はスレッドの実行を一時的に停止するとき、そのオペレーティングシステム又はスレッドに関連付けられているメモリが低電力モードにされるが、メモリの内容は保持される。後の時点においてホストシステムが再びそのオペレーティングシステム又はスレッドに切り換えるとき、関連付けられるメモリがバッファ集積回路によって低電力モードから脱してアクティブ状態にされ、オペレーティングシステム又はスレッドは、関連するデータについてディスクにアクセスする必要なしに、停止した箇所から実行を再開することができる。すなわち、オペレーティングシステム又はスレッドのそれぞれは、他のオペレーティングシステム又はスレッドによってアクセスすることができない自身専用のメインメモリを有する。なお、この実施形態は、シングルランクのバッファ集積回路とマルチランクのバッファ集積回路の両方に適用することができる。
【0121】
[00152]ユーザがホストシステムの記憶容量を増やすことを望むとき、通常の方法は、未使用のDIMMコネクタにメモリモジュールを装着することである。しかしながら、未装着のコネクタが存在しないときには、従来、ユーザは、小さい容量のメモリモジュールを取り外して、より大きい容量の新しいメモリモジュールと交換していた。取り外された小さいモジュールは、別のホストシステムにおいて使用することができるが、実際には一般に破棄される。オプションとして、ユーザは、未装着のDIMMコネクタが存在しないシステムの記憶容量を、現在使用されているモジュールを破棄する必要なしに増大させることができる。
【0122】
[00153]バッファ集積回路を採用する一実施形態においては、コネクタ又はそれ以外の何らかのインターポーザが、DIMM PCBの面のうちバッファ集積回路と同じ面に、又はバッファ集積回路とは反対の面において、DIMM上に配置されている。より大きな記憶容量が望まれるとき、ユーザは、追加のメモリ積層体を含んでいるPCBを、コネクタ又はインターポーザによってDIMM PCBに機械的及び電気的に結合することができる。説明を目的として、一例としてのマルチランクのレジスタードDIMMは、8ビット幅の9個の積層体を備えており、積層体のそれぞれが複数のDRAMデバイスとマルチランクバッファとを含んでいる。この例の場合、9個の積層体をDIMM PCBの一方の面に配置することができ、1つ以上のコネクタ又はインターポーザを、DIMM PCBの反対の面に配置することができる。これにより、DRAMデバイスの積層体を含んでいる追加のPCBを、DIMM PCB上の1つ以上のコネクタ又は1つ以上のインターポーザを使用してDIMM PCBに機械的及び電気的に結合することによって、DIMMの容量を増大させることができる。この実施形態の場合、DIMM PCB上のマルチランクバッファ集積回路は、追加の積層体の存在を検出し、それら追加の積層体を使用する1つ以上の配置構成に自身を構成設定することにより、追加の積層体を使用することができる。なお、追加のPCB上の積層体の記憶容量は、DIMM PCB上の積層体の記憶容量と同じである必要はない。更に、DIMM PCB上の積層体に1つの集積回路セレクト信号を接続する場合、追加のPCB上の積層体に別の集積回路セレクト信号を接続することができる。或いは、DIMM PCB上の積層体と追加のPCB上の積層体とを、集積回路セレクト信号の同じセットに接続することができる。
【0123】
[00154]図20Aは、更に別の実施形態による、メモリコントローラとDIMMとの間の接続構成を示している。オプションとして、このメモリコントローラ及びDIMMは、図1〜図19において実施することができる。当然ながら、このメモリコントローラ及びDIMMは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0124】
[00155]図20Aは、DIMMにおけるランクの数を、ホストシステムからの命令に基づいて構成設定するメモリシステムを示している。この実施形態の場合、すべての集積回路セレクト信号線(例えば、CS0#〜CS7#)が、DIMM2010及び2020と、メモリコントローラ2030との間に接続されている。
【0125】
[00156]図20Bは、別の実施形態による、ホストシステムからの命令に基づいてランクの数を構成設定するために、集積回路セレクト信号線をDIMM上のバッファに接続する方法を示している。オプションとして、集積回路セレクト信号線をDIMM上のバッファに接続するこの方法は、図1〜図20Aにおいて実施することができる。当然ながら、集積回路セレクト信号線をDIMM上のバッファに接続するこの方法は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0126】
[00157]図20Bは、DIMMにおけるランクの数をホストシステムからの命令に基づいて構成設定するメモリシステムを示している。この実施形態の場合、すべての集積回路セレクト信号線(CS0#〜CS7#)がDIMM2010上のバッファ2040に接続されている。
【0127】
[00158]ビジュアライゼーションプロセッサ(virtualization processor)及びマルチコアプロセッサを使用する場合、複数のオペレーティングシステム及びソフトウェアスレッドを共通のハードウェアプラットフォーム上で同時に実行することが可能である。すなわち、複数のオペレーティングシステム及びスレッドがサーバ内のメモリを共有しなくてはならず、結果としてのコンテキストスイッチに起因して、ハードディスクとメモリとの間での転送が増大することがある。
【0128】
[00159]図21は、更に別の実施形態による、アップグレード能力を有する、コネクタ又はインターポーザを備えたDIMM PCBを示している。オプションとして、このDIMM PCBは、図1〜図20において実施することができる。当然ながら、このDIMM PCBは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0129】
[00160]DIMM PCB2100は、複数のバッファ搭載積層体(例えばバッファ搭載積層体2130)を備えている。図示したように、バッファ搭載積層体2130は、バッファ集積回路2140とDRAMデバイス2150とを含んでいる。アップグレードモジュールPCB2110は、コネクタ又はインターポーザ2180及び2170を介してDIMM PCB2100に接続されており、DRAMの積層体(例えばDRAM積層体2120)を含んでいる。この例においては、図21に示したように、アップグレードモジュールPCB2110は、8ビット幅の9個の積層体を含んでおり、積層体のそれぞれがDRAM集積回路2160のみを含んでいる。DIMM PCB2100上のマルチランクバッファ集積回路2140のそれぞれは、追加の積層体が検出された時点で、自身が電気的にホストシステムとDRAM集積回路の2つの積層体との間に位置するように自身を再構成設定する。すなわち、再構成設定の後、バッファ集積回路は、DIMM PCB2100上の積層体、及びアップグレードモジュールPCB2110上の対応する積層体と、ホストシステムとの間に、電気的に位置している。しかしながら、バッファ集積回路(2140)と、DRAM積層体(2120)と、DIMM PCB2100と、アップグレードモジュールPCB2110は、請求項の概念及び範囲から逸脱することなく、同じ結果が達成される様々な方式における別の実施形態として構成設定することができる。例えば、追加のPCB上の積層体2120がバッファ集積回路を含んでいることもできる。従って、この例においては、アップグレードモジュール2110が1つ以上のバッファ集積回路を含んでいることができる。
【0130】
[00161]バッファ集積回路は、ホストシステムからのアドレスを、いくつかの方法において積層体のDRAMデバイスにマッピングすることができる。一実施形態においては、仮想(又はエミュレートされた)DRAMの1つのバンクが物理バンクのセットにマッピングされるように、アドレスを線形的にマッピングすることができ、この場合、セット内の物理バンクのそれぞれが、相異なる物理DRAMデバイスの一部である。説明を目的として、いま、それぞれが4つのメモリバンクを有する8個の512MB DRAM集積回路(すなわち、物理DRAMデバイス)を含んでいる積層体を考える。更に、バッファ集積回路がマルチランクの実施形態であり、ホストシステムには、それぞれが8個のバンクを有する2つの2GB DRAMデバイス(すなわち、仮想DRAMデバイス)として認識されるものと想定する。物理DRAMデバイスに識別符号M0〜M7を付けるならば、次の表1に示したような線形アドレスマッピングを実施することができる。
【表1】
【0131】
[00162]図22は、更に別の実施形態による、マルチランクバッファ集積回路において使用する線形アドレスマッピングの例を示している。オプションとして、この線形アドレスマッピングは、図1〜図21において実施することができる。当然ながら、この線形アドレスマッピングは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0132】
[00163]次の表2は、シングルランクバッファ集積回路による線形アドレスマッピングの例を示している。
【表2】
【0133】
[00164]図23は、別の実施形態による、シングルランクバッファ集積回路による線形アドレスマッピングの例を示している。オプションとして、この線形アドレスマッピングは、図1〜図22において実施することができる。当然ながら、この線形アドレスマッピングは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0134】
[00165]図23に示した構成設定を使用すると、DRAMデバイスの積層体は、8個のメモリバンクを有する1つの4GB集積回路として認識される。
【0135】
[00166]図24は、更に別の実施形態による、マルチランクバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。オプションとして、この「ビットスライス」アドレスマッピングは、図1〜図23において実施することができる。当然ながら、この「ビットスライス」アドレスマッピングは、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0136】
[00167]別の実施形態においては、ホストシステムからのアドレスの1つ以上のバンク(仮想バンク)が積層体の1つの物理DRAM集積回路にマッピングされる(「バンクスライス(bank slice)」マッピング)ように、ホストシステムからのアドレスをバッファ集積回路によってマッピングすることができる。図24は、マルチランクバッファ集積回路によるバンクスライスアドレスマッピングの例を示している。更に、次の表3は、バンクスライスアドレスマッピングの例を示している。
【表3】
【0137】
[00168]この例の積層体は、それぞれが4つのメモリバンクを有する8個の512MB DRAM集積回路を含んでいる。この例においては、マルチランクバッファ集積回路を想定しており、すなわち、ホストシステムは、それぞれが8個のバンクを有する2つの2GB DRAMデバイスとして積層体を認識する。
【0138】
[00169]バンクスライスアドレスマッピングにより、仮想DRAMにおいて、それを構成する物理DRAMデバイスに特有のいくつかのタイミング制約を低減又は排除することができる。例えば、物理DRAMデバイスには、1つの物理DRAMデバイスにアクティブ化操作を発行することのできる頻度を制限するtFAW(4バンクアクティブ化ウィンドウ)制約が存在することがある。しかしながら、バンクスライスアドレスマッピングを使用する仮想DRAM回路には、この制約が存在しない。一例として、図24におけるアドレスマッピングでは、仮想DRAMデバイスの2つのバンクが1つの物理DRAMデバイスにマッピングされる。従って、ホストシステムがtRCウィンドウ以内に3つ以上の連続するアクティブ化命令を特定の物理DRAMデバイスに発行することが、tRCタイミングパラメータによって防止されるため(tRC>tFAW)、tFAW制約が排除される。同様に、以下に図25に関連して説明するように、このアドレスマッピングを使用する仮想DRAMデバイスでは、それを構成する物理DRAMデバイスのtRRD制約が排除される。
【0139】
[00170]図25は、更に別の実施形態による、シングルランクバッファ集積回路による「ビットスライス」アドレスマッピングの例を示している。オプションとして、この「ビットスライス」アドレスマッピングは、図1〜図24において実施することができる。当然ながら、この「ビットスライス」アドレスマッピングは任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0140】
[00171]次の表4は、シングルランクバッファ集積回路によるバンクスライスマッピングを示している。
【表4】
【0141】
[00172]この例の積層体は、8個の512MB DRAMデバイスを含んでおり、従って、ホストシステムは、この積層体を、8個のバンクを有する1つの4GBデバイスとして認識する。上に示したアドレスマッピングは、説明を目的としているに過ぎない。請求項の概念及び範囲から逸脱することなく、別のマッピングを実施することができる。
【0142】
[00173]更に、バンクスライスアドレスマッピング方式では、バッファ集積回路又はホストシステムは、DIMM上のDRAMデバイスの電力管理をより細かいレベルで行うことができる。これを説明するため、いま、図25に示したアドレスマッピングを使用する仮想DRAMデバイスを考え、仮想DRAMデバイスのバンクのそれぞれが1つの物理DRAMデバイスに対応しているものとする。従って、この仮想DRAMデバイスのバンク0(すなわち、仮想バンク0)へのアクセスが行われるとき、対応する物理DRAMデバイスM0をアクティブモードにすることができる。しかしながら、仮想バンク0への未処理アクセスが存在しないとき、バッファ集積回路又はホストシステム(或いはシステム内のその他の任意のエンティティ)によって、DRAMデバイスM0を低電力(例えばパワーダウン)モードにすることができる。物理DRAMデバイスを低電力モードにすることは可能であるが、物理DRAMデバイスの特定のバンク(又は一部)を低電力モードにし、同時にDRAMデバイスの残りのバンク(又は一部)をアクティブモードにしておくことはできない。しかしながら、仮想DRAMデバイスは複数の物理DRAMデバイスを使用してエミュレートされているため、仮想DRAM回路のバンク又はバンクのセットを低電力モードにし、同時に仮想DRAM回路の別のバンクをアクティブモードにすることができる。例えば、図25及び図23から理解することができるように、バンクスライスマッピング(図25)では、1つの物理DRAMデバイスにマッピングされる仮想バンクが、線形マッピング(図23)の場合よりも少ない。従って、任意の瞬間に物理DRAMデバイスにおける(物理)バンクのすべてがプリチャージ状態にある確率は、線形マッピングの場合よりもバンクスライスマッピングの場合の方が高い。従って、バンクスライスマッピングを使用するときの方が、バッファ集積回路又はホストシステム(或いはシステム内のその他の何らかのエンティティ)によって物理DRAMデバイスがより頻繁に低電力モードにされる。
【0143】
[00174]いくつかの市場分野においては、メインメモリ(通常はDRAM)の内容を、定期的に、又は特定のイベントが起きたときに保持することが望ましいことがある。例えば、スーパーコンピュータの市場においては、ホストシステムがメインメモリの内容を定期的にハードドライブに書き込むことが一般的である。すなわち、ホストシステムは、定期的なチェックポイントを作成する。このようにチェックポイントを作成する方法により、システムクラッシュの場合に、システムは最初からではなく最後のチェックポイントからプログラムの実行を再開することができる。別の市場においては、電源障害或いはシステムクラッシュに対して保護するため、1つ以上のアドレス範囲の内容を定期的に不揮発性メモリに格納することが望ましいことがある。本文書に開示したバッファ集積回路においては、1つ以上の不揮発性メモリ集積回路(例えばフラッシュメモリ)を積層体に組み込むことによって、これらの機能のすべてをオプションとして実施することができる。いくつかの実施形態においては、バッファ集積回路は、DRAMデバイス集積回路及び不揮発性メモリ集積回路を含んでいる1つ以上の積層体をインターフェースするように設計されている。なお、これらの積層体のそれぞれは、DRAMデバイスのみを含んでいる、又は不揮発性メモリ集積回路のみを含んでいる、又はDRAMと不揮発性メモリ集積回路の両方を含んでいることができる。
【0144】
[00175]図26A及び図26Bは、別の実施形態による、DRAM集積回路及び不揮発性メモリ集積回路を含んでいるバッファ搭載積層体の例を示している。オプションとして、このバッファ搭載積層体は、図1〜図25において実施することができる。当然ながら、このバッファ搭載積層体は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0145】
[00176]DIMM PCB2600は、バッファ搭載積層体(バッファ2610及びDRAM2620)と、フラッシュ2630とを含んでいる。図26Bに示した別の実施形態においては、DIMM PCB2640は、バッファ搭載積層体(バッファ2650、DRAM2660、及びフラッシュ2670)を含んでいる。オプションのバッファ非搭載積層体は、少なくとも1つの不揮発性メモリデバイス(例えばフラッシュ2690)又はDRAMデバイス2680を含んでいる。バッファ集積回路に接続されているすべての積層体をバッファ集積回路と同じPCB上に載せることができ、或いは、積層体のいくつかを同じPCB上に載せ、それ以外の積層体を、バッファ集積回路を含んでいるPCBにコネクタ又はインターポーザによって電気的且つ機械的に結合されている別のPCB上に載せることができる。
【0146】
[00177]いくつかの実施形態においては、バッファ集積回路は、自身がインターフェースする積層体のDRAMデバイスの内容の一部又はすべてを、自身がインターフェースする積層体の不揮発性メモリ集積回路にコピーする。このイベントは、例えば、ホストシステムからバッファ集積回路への命令又は信号によって、又はバッファ集積回路への外部信号によってトリガーする、若しくは、電源障害などのイベント又は致命的(catastrophic)条件が(バッファ集積回路によって)検出されたときにトリガーすることができる。一例として、いま、バッファ集積回路が、4GBのDRAMメモリと4GBの不揮発性メモリとを含んでいる複数の積層体をインターフェースしているものと想定する。ホストシステムは、DRAMメモリの内容を不揮発性メモリにコピーするための命令を、定期的にバッファ集積回路に発行することができる。すなわち、ホストシステムは、DRAMメモリの内容のチェックポイントを定期的に作成する。システムクラッシュの場合、再起動時に、不揮発性メモリの内容をDRAMメモリにコピーして戻すことによって、DRAMの内容を復元することができる。これにより、メモリのチェックポイントを定期的に作成する能力がホストシステムに提供される。
【0147】
[00178]別の実施形態においては、バッファ集積回路は、電源レール(すなわち、電圧レール又は電圧プレーン)を監視して、致命的なイベント(例えば電源障害)を検出することができる。バッファ集積回路は、致命的なイベントを検出した時点で、DRAMメモリの内容の一部又はすべてを不揮発性メモリにコピーすることができる。更に、ホストシステムは、バッファ集積回路がDRAMメモリの内容の一部又はすべてを不揮発性メモリにコピーすることができるように、電源障害の後、少なくともいくらかの時間期間にわたり、無停電電源をバッファ集積回路及びメモリ積層体に提供することができる。別の実施形態においては、ホストシステムの電源障害の場合におけるバッファ集積回路及びメモリ積層体のための内蔵バックアップ電源を、メモリモジュールが備えていることができる。例えば、メモリモジュールは、ホストシステムの電源障害の場合にバッファ集積回路及びメモリ積層体にバックアップ電力を提供するため、バッテリ又は大型キャパシタと、絶縁スイッチ(isolation switch)とをモジュール自身に備えていることができる。
【0148】
[00179]複数のバッファ(それぞれが、DRAM集積回路及び不揮発性メモリ集積回路を含んでいる1つ以上の積層体をインターフェースする)を備えている、上述したようなメモリモジュールを、インスタントオン(instant−on)機能を提供するように構成設定することもできる。このことは、オペレーティングシステムと、それ以外の重要なソフトウェアと、頻繁に使用されるデータとを不揮発性メモリに格納することによって、達成することができる。
【0149】
[00180]システムクラッシュの場合、メインメモリの内容を維持するうえで必要であるすべての必要な信号を、ホストシステムのメモリコントローラが供給できないことがある。例えば、メモリコントローラは、定期的なリフレッシュ命令をメインメモリに送ることができず、これに起因してメモリ内のデータが消失することがある。システムクラッシュの場合におけるそのようなデータ消失が防止されるように、バッファ集積回路を設計することができる。一実施形態においては、バッファ集積回路は、ホストシステムのメモリコントローラからの信号の状態を監視して、システムクラッシュを検出することができる。一例として、所定の時間長又はプログラム可能な時間長にわたりメモリバス上にアクティビティが存在していない場合、或いは、バッファ集積回路がメモリコントローラから不正又は無効な命令を受け取った場合に、システムクラッシュを検出するように、バッファ集積回路を設計することができる。或いは、システムエラー、システム停止、又はシステムクラッシュが起きたときにアサートされる1つ以上の信号を、バッファ集積回路が監視することができる。例えば、Opteronプロセッサをベースとするシステムにおいて、バッファ集積回路は、HT_SyncFlood信号を監視してシステムエラーを検出することができる。バッファ集積回路は、このイベントを検出すると、ホストシステムのメモリバスを積層体のメモリ集積回路から切り離し、例えばホストシステムが動作可能となるまでメモリ集積回路の内容を保持するうえで必要な信号を、内部的に生成することができる。従って、例えば、システムクラッシュを検出した時点で、バッファ集積回路は、ホストシステムのメモリコントローラからの信号を無視し、代わりに、積層体のDRAMデバイスに格納されているデータを維持するため、信号(例えば、CKE、CS#、RAS#、CAS#、WE#)の有効な組合せを生成することができ、更に、DRAM集積回路に対する定期的なリフレッシュ信号を生成することができる。なお、バッファ集積回路がシステムクラッシュを検出する方法は数多くあり、これらの変形形態のすべては請求項の範囲内に含まれる。
【0150】
[00181]メモリ集積回路の1つ以上の積層体とホストシステムとの間にバッファ集積回路を配置することによって、バッファ集積回路が、ホストシステムからメモリ集積回路への信号と、メモリ集積回路からホストシステムへの信号とにおけるスキュー又はタイミング変動を補正することができる。例えば、メモリバスの動作の高速動作時、ホストシステムのメモリコントローラとメモリ集積回路との間の信号のトレース長が一致することがしばしばある。トレース長の一致は、特に、形状因子が小さいシステムにおいて問題である。更に、DRAMのプロセスは、高速I/O回路の設計にそのままでは対応しない。結果として、DRAM集積回路のI/O信号を互いに揃えることと、関連付けられるデータストローブ信号及びクロック信号に揃えることとがしばしば困難である。
【0151】
[00182]バッファ集積回路の一実施形態においては、I/O信号のタイミングを調整する回路を組み込むことができる。言い換えれば、バッファ集積回路は、ピンごとのタイミングキャリブレーション(per−pin timing calibration)を行って、I/O信号のスキュー又はタイミング変動を補正する能力を備えている。例えば、いま、バッファ集積回路とメモリコントローラとの間のデータ信号DQ[0]が、別のデータ信号DQ[7:1]よりもトレース長が短い、又は容量性負荷が小さいとする。結果として、すべての信号がバッファ集積回路(メモリへの書込み時)又はメモリコントローラ(メモリからの読取り時)に同時には到着しないため、データ信号のスキューが生じる。そのようなスキューが補正されないと、ホストシステムのメモリサブシステムの最大の動作周波数が制限される傾向にある。バッファ集積回路のI/O回路にピンごとのタイミングキャリブレーション回路及び補正回路を組み込むことによって、バッファ集積回路は、(メモリからの読取り時に)DQ[0]信号を他のデータ信号よりも後から駆動して、DQ[0]信号の短いトレース長を補正することができる。同様に、ピンごとのタイミングキャリブレーション回路及び補正回路によって、バッファ集積回路は、メモリへの書込み動作時にデータ信号DQ[7:0]のすべてが揃えられてサンプリングされるように、DQ[0]データ信号を遅らせることができる。更に、ピンごとのタイミングキャリブレーション回路及び補正回路によって、バッファ集積回路は、DRAMデバイスのI/Oピンにおけるタイミング変動を補正することができる。バッファ集積回路は、ホストシステムのメモリコントローラに接続されている信号のピンごとのタイミングキャリブレーションと、積層体のメモリデバイスに接続されている信号のピンごとのタイミングキャリブレーションとを実行するため、特定のパターン又はシーケンスを使用することができる。
【0152】
[00183]ピンごとのタイミングキャリブレーション回路及び補正回路をバッファ集積回路に組み込むことによって、更に、バッファ集積回路は、低速の複数のDRAMデバイスをひとまとまりにして(gang)、より高速のDRAM集積回路をホストシステムに対してエミュレートすることができる。すなわち、バッファ集積回路にピンごとのタイミングキャリブレーション回路及び補正回路を組み込むことにより、バッファ集積回路が、第1のクロック速度において動作する複数のDRAMデバイスをひとまとまりにして、第2のクロック速度において動作する1つ以上のDRAM集積回路をホストシステムに対してエミュレートすることも可能になる(第1のクロック速度は第2のクロック速度よりも遅い)。
【0153】
[00184]例えば、バッファ集積回路は、8ビット幅の2つのDDR2 SDRAMデバイスを、533MHzのデータレートにおいて並列に動作させることにより、1066MHzのデータレートにおいて動作する8ビット幅の1つのDDR2 SDRAM集積回路としてホストシステムに認識させることができる。この例においては、2つのDRAMデバイスはDDR2デバイスであるため、これらのDRAMデバイスは、メモリからの読取り時、又はメモリへの書込み時にデータピンのそれぞれにおいて4つのデータビットを送る、又は受け取るように設計されている(バースト長が4である場合)。従って、並列に動作する2つのDRAMデバイスは、この例においては、メモリからの1回の読取り、又はメモリへの1回の書込みにおいて、データピンあたり64個のビットを送る、又は受け取ることができる。ホストシステムはバッファの後ろに1つのDDR2集積回路を認識しているため、メモリからの1回の読取り、又はメモリへの1回の書込みにおいて、ホストシステムはピンあたり32個のデータビットを受け取る、又は送るのみである。様々なデータ幅に対応する目的で、バッファ集積回路はDM信号(データマスク)を利用することができる。いま、ホストシステムが、DA[7:0]、DB[7:0]、DC[7:0]、及びDD[7:0]を、1066MHzのデータレートにおいてバッファ集積回路に送るものとする。バッファ集積回路は、DA[7:0]、DC[7:0]、XX、及びXXを第1のDDR2 SDRAM集積回路に送り、DB[7:0]、DD[7:0]、XX、及びXXを第2のDDR2 SDRAM集積回路に送ることができ、この場合、XXは、DDR2 SDRAM集積回路へのDM入力の(バッファ集積回路による)アサートによってマスクされているデータを表している。
【0154】
[00185]別の実施形態においては、バッファ集積回路は、2つの低速DRAMデバイスを、よりビット幅が広く、且つ高速の1つのDRAMとして動作させる。説明を目的として、バッファ集積回路は、533MHzのデータレートにおいて動作する8ビット幅の2つのDDR2 SDRAMデバイスを、1066MHzのデータレートにおいて動作する16ビット幅の1つのDDR2 SDRAM集積回路としてホストシステムに認識されるように、動作させることができる。この実施形態においては、バッファ集積回路は、DM信号を使用しない。別の実施形態においては、2つのDDR2 SDRAMデバイス(この例においては、8ビット幅、データレート533MHzの集積回路)を、1つのDDR3 SDRAM集積回路(この例においては、8ビット幅、データレート1066MHzのDDR3デバイス)としてホストシステムに認識されるように、並列に動作させるように、バッファ集積回路を設計することができる。別の実施形態においては、バッファ集積回路は、DRAM集積回路とのインタフェースよりもビット幅が狭く且つ高速である、ホストシステムとのインタフェースを提供することができる。例えば、バッファ集積回路は、1つ以上のDRAMデバイスとの、16ビット幅、データレート533MHzのインタフェースを備えていることができ、一方で、ホストシステムとの、8ビット幅、データレート1066MHzのインタフェースを備えていることができる。
【0155】
[00186]ピンごとのタイミングキャリブレーション能力及び補正能力に加えて、スルーレート(すなわち立上り時間及び立下り時間)、プルアップの能力又は強さ、及びプルダウンの能力又は強さを制御する回路を、バッファ集積回路のI/Oピンのそれぞれに追加する、又はオプションとして、バッファ集積回路の一連のI/Oピンに共通回路として追加することができる。バッファ集積回路の出力ドライバ及び入力レシーバは、バッファ集積回路とホストシステムとの間、及びバッファ集積回路と積層体のメモリ集積回路との間を接続しているトレースにおける不均一性を補正することと、ホストシステム及び積層体のメモリ集積回路のI/Oピンの特性を補正することとを目的として、プリエンファシスを行う能力を備えていることができる。
【0156】
[00187]複数のメモリ集積回路(揮発性及び不揮発性の両方)を積層化することは、熱特性及び電力供給特性に影響する。積層体におけるすべてのメモリ集積回路が長時間にわたりアクティブモードにあることは極めて起こり得るため、これらのすべての集積回路によって消費される電力に起因して、メモリ集積回路の周囲温度、ケース温度(case temperature)、及び接合部温度が上昇することがある。一般に、高い接合部温度は、IC、特にDRAMの動作に対してマイナスに影響する。更に、複数のDRAMデバイスが、電圧レール及びグランドレール(すなわち、電力トレース及びグランドトレース、又は電力プレーン及びグランドプレーン)が共有されるように上下に重ねて積層化されているときには、これらの集積回路を同時に動作させると、それに起因して電圧レール及びグランドレールに大きなスパイクが発生することがある。例えば、積層体のDRAMデバイスのすべてが同時にリフレッシュされると、電圧レールから大きな電流が流れ、これに起因して、電圧レール及びグランドレールに大きな変動(又はスパイク)が生じることがある。ノイズのある電圧レール及びグランドレールは、特に高速時にDRAMデバイスの動作に影響する。これらの現象の両方に対処する目的で、以下では、発明に相当する手法をいくつか開示する。
【0157】
[00188]一実施形態においては、積層体の1つ以上の層がメモリ集積回路ではなくデカップリングキャパシタを備えている積層化手法を使用する。例えば、積層体の5層ごとに電源デカップリング層とする(他の4層はメモリ集積回路を含んでいる)ことができる。メモリ集積回路を含んでいる層は、メモリ集積回路のピンアウトに存在しているよりも多くの電力ボール及びグランドボール(又は電力ボール及びグランドボール)を備えているように設計する。これらの余分な電力ボール及びグランドボールは、積層体の層の縁部のすべてに沿って配置されていることが好ましい。
【0158】
[00189]図27の(A)〜(C)は、更に別の実施形態による、電源デカップリング層を備えているバッファ搭載積層体を示している。オプションとして、このバッファ搭載積層体は、図1〜図26において実施することができる。当然ながら、このバッファ搭載積層体は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0159】
[00190]図27の(A)に示したように、DIMM PCB2700は、デカップリング層を含んでいる、DRAMのバッファ搭載積層体を含んでいる。具体的には、この実施形態の場合、バッファ搭載積層体は、バッファ2710と、DRAMデバイスの第1のセット2720と、第1のデカップリング層2730と、DRAMデバイスの第2のセット2740と、オプションの第2のデカップリング層2750とを含んでいる。更に、この積層体は、オプションのヒートシンク又はヒートスプレッダ2755を備えている。
【0160】
[00191]図27の(B)は、DRAMダイの一実施形態の平面図及び側面図を示している。DRAMダイ2760は、信号/電力/GNDボール2762と、1つ以上の余分な電力/GNDボール2764とを備えているパッケージ(積層体の層)2766を含んでいる。余分な電力/GNDボール2764は熱伝導率を高める。
【0161】
[00192]図27の(C)は、デカップリング層の一実施形態の平面図及び側面図を示している。デカップリング層2775は、1つ以上のデカップリングキャパシタ2770と、信号/電力/GNDボール2785と、1つ以上の余分な電力/GNDボール2780とを含んでいる。余分な電力/GNDボール2780は熱伝導率を高める。
【0162】
[00193]図27の(B)及び(C)に示した余分な電力ボール及びGNDボールは、メモリ集積回路と、積層体が含まれているPCBとの間、及び、メモリ集積回路とオプションのヒートシンク又はヒートスプレッダとの間とに、熱伝導経路を形成している。電源デカップリング層におけるデカップリングキャパシタは、積層体のメモリデバイスまでの変動の少ない電圧レール及びグランドレールを提供する目的で、関連する電力ピン及びグランドピンに接続されている。上述した積層化手法は、積層体のメモリ集積回路までの変動の少ない電力レール及び変動の少ないグランドレールを提供し、更にメモリ集積回路から熱を逃がすための一方法である。
【0163】
[00194]別の実施形態においては、電力レール及びグランドレールにおけるノイズは、積層体のDRAM集積回路が動作を同時に実行することを防止することによって減少させることができる。前述したように、積層体のDRAM集積回路のすべてがリフレッシュ動作を同時に実行する場合、電力レールから大量の電流が流れる。電力レールから流れるピーク電流が低減するように、積層体のDRAM集積回路へのリフレッシュ命令を時間的にずらせて発行する、又は分散させるように、バッファ集積回路を設計することができる。例えば、いま、積層体が4つの1GB DDR2 SDRAM集積回路を備えており、これらが1つの4GB DDR2 SDRAM集積回路としてホストシステムに認識されるようにバッファ集積回路によってエミュレートされるものとする。JEDEC仕様では、4GB DRAM集積回路のリフレッシュサイクルタイム(すなわちtRFC)は400nsと規定されているが、1GB DRAM集積回路のtRFCの仕様値は110nsである。従って、ホストシステムは、エミュレートされた4GB DRAM集積回路にリフレッシュ命令を発行するとき、リフレッシュが400ns以内に行われるものと予測する。しかしながら、積層体には4つの1GB DRAM集積回路が含まれているため、バッファ集積回路は、積層体の1GB DRAM集積回路のそれぞれに、間隔を置いて個別のリフレッシュ命令を発行することができる。一例として、バッファ集積回路は、ホストシステムからのリフレッシュ命令を受け取った時点で、4つの1GB DRAM集積回路のうちの2つにリフレッシュ命令を発行し、200nsの後、残りの2つの1GB DRAM集積回路に別のリフレッシュ命令を発行することができる。1GB DRAM集積回路は、リフレッシュ動作を実行するのに110nsを要するため、積層体の4つの1GB DRAM集積回路のすべては、(4GB DRAM集積回路の)リフレッシュサイクルタイムである400nsが経過する前にリフレッシュ動作を実行する。この時差式のリフレッシュ動作によって、電力レールから流れうる最大電流が制限される。なお、同じ恩恵を提供する別の実施形態も可能であり、そのような実施形態も請求項の範囲に網羅される。
【0164】
[00195]一実施形態においては、メモリ集積回路の周囲温度、ケース温度、又は接合部温度を測定するデバイス(例えばサーマルダイオード)を積層体に埋め込むことができる。オプションとして、特定の積層体に関連付けられるバッファ集積回路は、メモリ集積回路の温度を監視することができる。温度が限界値を超えたとき、バッファ集積回路は、メモリ集積回路の過熱及び起こり得る損傷を防止するための適切な措置を講じることができる。オプションとして、測定された温度をホストシステムから利用できるようにすることができる。
【0165】
[00196]オプションの機能が提供されるように、その他の機能回路をバッファ集積回路に追加することができる。例えば、パワーアップ時、又はホストシステムがそのように命令したときに、メモリエラー又はメモリ障害のチェックを実行するように、バッファ集積回路を設計することができる。メモリのチェック時、バッファ集積回路は、積層体のメモリ集積回路に1つ以上のパターンを書き込み、内容を読み取り、読み取ったデータと書き込んだデータとを比較して、縮退故障又はその他のメモリ障害をチェックすることができる。
【0166】
[00197]図28は、一実施形態による、代表的なハードウェア環境2800を示している。オプションとして、このハードウェア環境2800は、図1〜図27において実施することができる。当然ながら、このハードウェア環境2800は、任意の望ましい環境において実施することができる。更には、上述した定義は、以下の説明にも同様に適用される。
【0167】
[00198]例示的な一実施形態においては、ハードウェア環境2800は、コンピュータシステムを含んでいることができる。図示したように、このハードウェア環境2800は、通信バス2802に接続されている少なくとも1つの中央プロセッサ2801を含んでいる。更に、このハードウェア環境2800はメインメモリ2804を含んでいる。メインメモリ2804は、例えば、ランダムアクセスメモリ(RAM)若しくはその他の望ましいタイプのメモリ、又はその両方を含んでいることができる。更には、様々な実施形態において、メインメモリ2804は、メモリ回路、インタフェース回路などを含んでいることができる。
【0168】
[00199]更に、ハードウェア環境2800は、グラフィックスプロセッサ2806とディスプレイ1508とを含んでいる。更に、ハードウェア環境2800は二次記憶装置2810を含んでいることができる。二次記憶装置2810は、例えば、ハードディスクドライブ若しくはリムーバブルストレージドライブ、又はその両方を含んでおり、リムーバブルストレージドライブは、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどである。リムーバブルストレージドライブは、リムーバブルストレージユニットからの読取り、若しくはリムーバブルストレージユニットへの書込み、又はその両方を、周知の方式において行う。
【0169】
[00200]コンピュータプログラム、又はコンピュータ制御ロジックアルゴリズムを、メインメモリ2804若しくは二次記憶装置2810、又はその両方に格納することができる。そのようなコンピュータプログラムが実行されることにより、コンピュータシステム2800が様々な機能を実行することができる。なお、メモリ2804、記憶装置2810、又は任意のその他の記憶装置は、コンピュータ可読媒体として使用可能な例である。
【0170】
[00201]ここまで、様々な実施形態について説明したが、これらの実施形態は、本発明を制限するものではなく一例として提示してあるに過ぎないことを理解されたい。従って、好ましい実施形態の範囲は、上述した例示的な実施形態のいずれによっても制限されることはなく、請求項及びそれらの等価形態によってのみ定義されるものとする。
【特許請求の範囲】
【請求項1】
1つ以上のデバイス命令スケジューリングにおける制約によってそれぞれ制限される第1の複数の物理メモリ回路と、
インタフェース回路と、
を備え、
前記インタフェース回路は、
前記第1の複数の物理メモリ回路及びメモリコントローラと通信し、
別の第2の複数の仮想メモリ回路をシミュレートするように、前記第1の複数の物理メモリ回路をインタフェースし、
前記別の第2の複数の仮想メモリ回路を前記メモリコントローラにプリセットし、
1つ以上の行アクティブ化命令又は1つ以上の列アクセス命令を受け取り、
前記仮想メモリ回路のための前記メモリコントローラから前記受け取った行アクティブ化命令又は前記受け取った列アクセス命令に基づいて、物理行アクティブ化命令又は物理列アクセス命令を前記第1の複数の物理メモリ回路のいずれかに発行し、前記発行された物理行アクティブ化命令及び前記発行された物理列アクセス命令のタイミングは、前記1つ以上のデバイス命令スケジューリングにおける制約を満たし、
前記第1の複数の物理メモリ回路のいずれかからのデータバーストを連続的なデータバースト内に結合し、
前記別の第2の複数の仮想メモリ回路が、前記メモリコントローラに対して、前記1つ以上のデバイス命令スケジューリングにおける制約が存在しないようにみえるように、前記連続的なデータバーストを提供する、
ように構成されている、
サブシステム。
【請求項2】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス間命令スケジューリングにおける制約を含んでいる、請求項1に記載のサブシステム。
【請求項3】
前記デバイス間命令スケジューリングにおける制約が、ランク間のデータバスターンアラウンドタイム又はオンダイターミネーション(ODT)制御スイッチング時間の少なくとも1つを含んでいる、請求項2に記載のサブシステム。
【請求項4】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス内命令スケジューリングにおける制約を含んでいる、請求項1に記載のサブシステム。
【請求項5】
前記デバイス内命令スケジューリングにおける制約が、列間遅延時間(tCCD)、行間アクティブ化遅延時間(tRRD)、4バンクアクティブ化ウィンドウ時間(tFAW)又は書込み−読取りターンアラウンドタイム(tWTR)の少なくとも1つを含んでいる、請求項4に記載のサブシステム。
【請求項6】
前記インタフェース回路が、更に、複数の個別の命令バスを用いて、前記第1の複数の物理メモリ回路における少なくとも1つに対して命令を発行するように構成されている、請求項1に記載のサブシステム。
【請求項7】
前記インタフェース回路が、デュアルインラインメモリモジュール(DIMM)上に配置されている回路を含んでいる、請求項1に記載のサブシステム。
【請求項8】
前記インタフェース回路が、複数の独立したデータバスを介して前記物理メモリ回路と電気的に接続されており、個別のデータバスを介してメモリコントローラと電気的に接続されるように構成されている、請求項1に記載のサブシステム。
【請求項9】
前記第1の複数の物理メモリ回路が積層体内に配列されており、前記インタフェース回路が前記積層体内部に集積化されている、請求項1に記載のサブシステム。
【請求項10】
第1の複数の物理メモリ回路、及び、別の第2の複数の仮想メモリ回路をシミュレートするように前記第1の複数の物理メモリ回路をインタフェースするメモリコントローラと通信するステップと、
前記別の第2の複数の仮想メモリ回路を前記メモリコントローラにプリセットするステップと、
1つ以上の行アクティブ化命令又は1つ以上の列アクセス命令を受け取るステップと、
前記仮想メモリ回路のための前記メモリコントローラから前記受け取った行アクティブ化命令又は前記受け取った列アクセス命令に基づいて、物理行アクティブ化命令又は物理列アクセス命令を前記第1の複数の物理メモリ回路のいずれかに発行するステップであって、前記発行された物理行アクティブ化命令及び前記発行された物理列アクセス命令のタイミングは、前記1つ以上のデバイス命令スケジューリングにおける制約を満たす、当該ステップと、
前記第1の複数の物理メモリ回路のいずれかからのデータバーストを連続的なデータバースト内に結合するステップと、
前記別の第2の複数の仮想メモリ回路が、前記メモリコントローラに対して、前記1つ以上のデバイス命令スケジューリングにおける制約が存在しないようにみえるように、前記連続的なデータバーストを提供するステップと、
を備える、方法。
【請求項11】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス間命令スケジューリングにおける制約を含んでいる、請求項10に記載の方法。
【請求項12】
前記デバイス間命令スケジューリングにおける制約が、ランク間のデータバスターンアラウンドタイム又はオンダイターミネーション(ODT)制御スイッチング時間の少なくとも1つを含んでいる、請求項11に記載の方法。
【請求項13】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス内命令スケジューリングにおける制約を含んでいる、請求項10に記載の方法。
【請求項14】
前記デバイス内命令スケジューリングにおける制約が、列間遅延時間(tCCD)、行間アクティブ化遅延時間(tRRD)、4バンクアクティブ化ウィンドウ時間(tFAW)又は書込み−読取りターンアラウンドタイム(tWTR)の少なくとも1つを含んでいる、請求項13に記載の方法。
【請求項15】
メモリコントローラと、
メモリモジュールと、
を備え、
前記メモリモジュールは、
1つ以上のデバイス命令スケジューリングにおける制約によってそれぞれ制限される第1の複数の物理メモリ回路と、
インタフェース回路と、
を備え、
前記インタフェース回路は、
前記第1の複数の物理メモリ回路及びメモリコントローラと通信し、
別の第2の複数の仮想メモリ回路をシミュレートするように、前記第1の複数の物理メモリ回路をインタフェースし、
前記別の第2の複数の仮想メモリ回路を前記メモリコントローラにプリセットし、
1つ以上の行アクティブ化命令又は1つ以上の列アクセス命令を受け取り、
前記仮想メモリ回路のための前記メモリコントローラから前記受け取った行アクティブ化命令又は前記受け取った列アクセス命令に基づいて、物理行アクティブ化命令又は物理列アクセス命令を前記第1の複数の物理メモリ回路のいずれかに発行し、前記発行された物理行アクティブ化命令及び前記発行された物理列アクセス命令のタイミングは、前記1つ以上のデバイス命令スケジューリングにおける制約を満たし、
前記第1の複数の物理メモリ回路のいずれかからのデータバーストを連続的なデータバースト内に結合し、
前記別の第2の複数の仮想メモリ回路が、前記メモリコントローラに対して、前記1つ以上のデバイス命令スケジューリングにおける制約が存在しないようにみえるように、前記連続的なデータバーストを提供する、
ように構成されている、
システム。
【請求項16】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス間命令スケジューリングにおける制約を含んでいる、請求項15に記載のシステム。
【請求項17】
前記デバイス間命令スケジューリングにおける制約が、ランク間のデータバスターンアラウンドタイム又はオンダイターミネーション(ODT)制御スイッチング時間の少なくとも1つを含んでいる、請求項16に記載のシステム。
【請求項18】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス内命令スケジューリングにおける制約を含んでいる、請求項15に記載のシステム。
【請求項19】
前記デバイス内命令スケジューリングにおける制約が、列間遅延時間(tCCD)、行間アクティブ化遅延時間(tRRD)、4バンクアクティブ化ウィンドウ時間(tFAW)又は書込み−読取りターンアラウンドタイム(tWTR)の少なくとも1つを含んでいる、請求項18に記載のシステム。
【請求項20】
前記第1の複数の物理メモリ回路が積層体内に配列されており、前記インタフェース回路が前記積層体内部に集積化されている、請求項15に記載のサブシステム。
【請求項1】
1つ以上のデバイス命令スケジューリングにおける制約によってそれぞれ制限される第1の複数の物理メモリ回路と、
インタフェース回路と、
を備え、
前記インタフェース回路は、
前記第1の複数の物理メモリ回路及びメモリコントローラと通信し、
別の第2の複数の仮想メモリ回路をシミュレートするように、前記第1の複数の物理メモリ回路をインタフェースし、
前記別の第2の複数の仮想メモリ回路を前記メモリコントローラにプリセットし、
1つ以上の行アクティブ化命令又は1つ以上の列アクセス命令を受け取り、
前記仮想メモリ回路のための前記メモリコントローラから前記受け取った行アクティブ化命令又は前記受け取った列アクセス命令に基づいて、物理行アクティブ化命令又は物理列アクセス命令を前記第1の複数の物理メモリ回路のいずれかに発行し、前記発行された物理行アクティブ化命令及び前記発行された物理列アクセス命令のタイミングは、前記1つ以上のデバイス命令スケジューリングにおける制約を満たし、
前記第1の複数の物理メモリ回路のいずれかからのデータバーストを連続的なデータバースト内に結合し、
前記別の第2の複数の仮想メモリ回路が、前記メモリコントローラに対して、前記1つ以上のデバイス命令スケジューリングにおける制約が存在しないようにみえるように、前記連続的なデータバーストを提供する、
ように構成されている、
サブシステム。
【請求項2】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス間命令スケジューリングにおける制約を含んでいる、請求項1に記載のサブシステム。
【請求項3】
前記デバイス間命令スケジューリングにおける制約が、ランク間のデータバスターンアラウンドタイム又はオンダイターミネーション(ODT)制御スイッチング時間の少なくとも1つを含んでいる、請求項2に記載のサブシステム。
【請求項4】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス内命令スケジューリングにおける制約を含んでいる、請求項1に記載のサブシステム。
【請求項5】
前記デバイス内命令スケジューリングにおける制約が、列間遅延時間(tCCD)、行間アクティブ化遅延時間(tRRD)、4バンクアクティブ化ウィンドウ時間(tFAW)又は書込み−読取りターンアラウンドタイム(tWTR)の少なくとも1つを含んでいる、請求項4に記載のサブシステム。
【請求項6】
前記インタフェース回路が、更に、複数の個別の命令バスを用いて、前記第1の複数の物理メモリ回路における少なくとも1つに対して命令を発行するように構成されている、請求項1に記載のサブシステム。
【請求項7】
前記インタフェース回路が、デュアルインラインメモリモジュール(DIMM)上に配置されている回路を含んでいる、請求項1に記載のサブシステム。
【請求項8】
前記インタフェース回路が、複数の独立したデータバスを介して前記物理メモリ回路と電気的に接続されており、個別のデータバスを介してメモリコントローラと電気的に接続されるように構成されている、請求項1に記載のサブシステム。
【請求項9】
前記第1の複数の物理メモリ回路が積層体内に配列されており、前記インタフェース回路が前記積層体内部に集積化されている、請求項1に記載のサブシステム。
【請求項10】
第1の複数の物理メモリ回路、及び、別の第2の複数の仮想メモリ回路をシミュレートするように前記第1の複数の物理メモリ回路をインタフェースするメモリコントローラと通信するステップと、
前記別の第2の複数の仮想メモリ回路を前記メモリコントローラにプリセットするステップと、
1つ以上の行アクティブ化命令又は1つ以上の列アクセス命令を受け取るステップと、
前記仮想メモリ回路のための前記メモリコントローラから前記受け取った行アクティブ化命令又は前記受け取った列アクセス命令に基づいて、物理行アクティブ化命令又は物理列アクセス命令を前記第1の複数の物理メモリ回路のいずれかに発行するステップであって、前記発行された物理行アクティブ化命令及び前記発行された物理列アクセス命令のタイミングは、前記1つ以上のデバイス命令スケジューリングにおける制約を満たす、当該ステップと、
前記第1の複数の物理メモリ回路のいずれかからのデータバーストを連続的なデータバースト内に結合するステップと、
前記別の第2の複数の仮想メモリ回路が、前記メモリコントローラに対して、前記1つ以上のデバイス命令スケジューリングにおける制約が存在しないようにみえるように、前記連続的なデータバーストを提供するステップと、
を備える、方法。
【請求項11】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス間命令スケジューリングにおける制約を含んでいる、請求項10に記載の方法。
【請求項12】
前記デバイス間命令スケジューリングにおける制約が、ランク間のデータバスターンアラウンドタイム又はオンダイターミネーション(ODT)制御スイッチング時間の少なくとも1つを含んでいる、請求項11に記載の方法。
【請求項13】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス内命令スケジューリングにおける制約を含んでいる、請求項10に記載の方法。
【請求項14】
前記デバイス内命令スケジューリングにおける制約が、列間遅延時間(tCCD)、行間アクティブ化遅延時間(tRRD)、4バンクアクティブ化ウィンドウ時間(tFAW)又は書込み−読取りターンアラウンドタイム(tWTR)の少なくとも1つを含んでいる、請求項13に記載の方法。
【請求項15】
メモリコントローラと、
メモリモジュールと、
を備え、
前記メモリモジュールは、
1つ以上のデバイス命令スケジューリングにおける制約によってそれぞれ制限される第1の複数の物理メモリ回路と、
インタフェース回路と、
を備え、
前記インタフェース回路は、
前記第1の複数の物理メモリ回路及びメモリコントローラと通信し、
別の第2の複数の仮想メモリ回路をシミュレートするように、前記第1の複数の物理メモリ回路をインタフェースし、
前記別の第2の複数の仮想メモリ回路を前記メモリコントローラにプリセットし、
1つ以上の行アクティブ化命令又は1つ以上の列アクセス命令を受け取り、
前記仮想メモリ回路のための前記メモリコントローラから前記受け取った行アクティブ化命令又は前記受け取った列アクセス命令に基づいて、物理行アクティブ化命令又は物理列アクセス命令を前記第1の複数の物理メモリ回路のいずれかに発行し、前記発行された物理行アクティブ化命令及び前記発行された物理列アクセス命令のタイミングは、前記1つ以上のデバイス命令スケジューリングにおける制約を満たし、
前記第1の複数の物理メモリ回路のいずれかからのデータバーストを連続的なデータバースト内に結合し、
前記別の第2の複数の仮想メモリ回路が、前記メモリコントローラに対して、前記1つ以上のデバイス命令スケジューリングにおける制約が存在しないようにみえるように、前記連続的なデータバーストを提供する、
ように構成されている、
システム。
【請求項16】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス間命令スケジューリングにおける制約を含んでいる、請求項15に記載のシステム。
【請求項17】
前記デバイス間命令スケジューリングにおける制約が、ランク間のデータバスターンアラウンドタイム又はオンダイターミネーション(ODT)制御スイッチング時間の少なくとも1つを含んでいる、請求項16に記載のシステム。
【請求項18】
前記1つ以上のデバイス命令スケジューリングにおける制約が、デバイス内命令スケジューリングにおける制約を含んでいる、請求項15に記載のシステム。
【請求項19】
前記デバイス内命令スケジューリングにおける制約が、列間遅延時間(tCCD)、行間アクティブ化遅延時間(tRRD)、4バンクアクティブ化ウィンドウ時間(tFAW)又は書込み−読取りターンアラウンドタイム(tWTR)の少なくとも1つを含んでいる、請求項18に記載のシステム。
【請求項20】
前記第1の複数の物理メモリ回路が積層体内に配列されており、前記インタフェース回路が前記積層体内部に集積化されている、請求項15に記載のサブシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16A】
【図16B】
【図17A】
【図17B】
【図18A】
【図18B】
【図19A】
【図19B】
【図19C】
【図20A】
【図20B】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26A】
【図26B】
【図27】
【図28】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16A】
【図16B】
【図17A】
【図17B】
【図18A】
【図18B】
【図19A】
【図19B】
【図19C】
【図20A】
【図20B】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26A】
【図26B】
【図27】
【図28】
【公開番号】特開2013−12233(P2013−12233A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−197678(P2012−197678)
【出願日】平成24年9月7日(2012.9.7)
【分割の表示】特願2008−554369(P2008−554369)の分割
【原出願日】平成19年2月8日(2007.2.8)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
2.EEPROM
【出願人】(507421186)メタラム インコーポレイテッド (6)
【Fターム(参考)】
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2012−197678(P2012−197678)
【出願日】平成24年9月7日(2012.9.7)
【分割の表示】特願2008−554369(P2008−554369)の分割
【原出願日】平成19年2月8日(2007.2.8)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
2.EEPROM
【出願人】(507421186)メタラム インコーポレイテッド (6)
【Fターム(参考)】
[ Back to top ]