DRAMをスタックする方法及び装置
【課題】スタックドメモリチップをシグナルインテグリティ等の問題を排除するように構成する。
【解決手段】第1の速度でアクセス可能な複数のセルから構成されるメモリコアを備え、垂直方向にスタックされた複数のDRAM集積回路と、第1の速度よりも大きい速度で、DRAM集積回路とメモリバスとの間でインタフェースを設けるインタフェース集積回路と、メモリスペアリングとを備え、スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、q個のDRAM集積回路が、メモリ集積回路のスペアプールとして用いられる複数のDRAM集積回路を備える。
【解決手段】第1の速度でアクセス可能な複数のセルから構成されるメモリコアを備え、垂直方向にスタックされた複数のDRAM集積回路と、第1の速度よりも大きい速度で、DRAM集積回路とメモリバスとの間でインタフェースを設けるインタフェース集積回路と、メモリスペアリングとを備え、スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、q個のDRAM集積回路が、メモリ集積回路のスペアプールとして用いられる複数のDRAM集積回路を備える。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本特許出願は、2005年9月2日に出願された“Methods and Apparatus of Stacking DRAMs”という発明の名称の米国仮特許出願第60/713,815号に対する利益を主張する。
【技術分野】
【0002】
本発明は、幅広いマーケットに対してコスト効率のいいカスタムメモリシステムを構築するという分野に関連する。
【背景技術】
【0003】
ダイナミックランダムアクセスメモリ(DRAM)は、最もポピュラーなタイプの揮発性メモリであり、多くの異なるマーケットで幅広く用いられている。DRAMの人気は、大部分はコストパフォーマンス(Mb/$)によるものである。PCのメインメモリ市場は、DRAMの最大の消費者である。
【0004】
いくつかの重要なマーケットにおけるDRAMインタフェース速度は、急激に増加している。例えば、現在のPC市場は、667MHzのDDR2 SDRAMを使用する。当業界は、2006年に、800MHzのDDR2 SDRAMを使用する方向に向かっている。また、800MHz〜1600MHzのインタフェース速度を有すると期待されているDDR3 SDRAMを開発する努力も進行中である。
【0005】
シグナルインテグリティは、インタフェース速度が増すにつれて、ますます困難になってきている。高速においては、クリーンな信号を確保するために、1つのメモリチャネルに対する負荷の数を減らさなければならない。例えば、PCデスクトップセグメントが133MHzのSDRAMを使用した場合、バッファリングされていないモジュールを使用した場合には、メモリチャネル(または、バスあるいはインタフェース)当たり3DIMMスロットが標準的である。この市場区分がDDR SDRAMや現在のDDR2 SDRAMを採用した場合、メモリチャネル当たりのDIMMスロットの数は、2に落ちる。DDR3速度においては、メモリチャネル当たりたった1DIMMスロットが可能であることが予測される。このことは、明らかに、システムの最大記憶容量に対して上限を設けることになる。
【0006】
コスト効率が良く、かつ現在及び将来の標準規格と互換性があり、シグナルインテグリティのような様々な技術的問題を解決する様態でシステムの記憶容量を増加させる発明に対する要求が明確にある。
【発明の概要】
【0007】
一実施形態において、大容量メモリシステムが、スタックドメモリ集積回路またはチップを用いて構成される。該スタックドメモリチップは、シグナルインテグリティのような問題をなくすと共に、現在及び将来のメモリ標準規格にも合うように構成される。
【図面の簡単な説明】
【0008】
【図1】FB−DIMMの場合の一実施形態を示す図である。
【図2a】メモリコントローラと2つのFB−DIMMとの間の待ち時間を説明する注釈の付いた、図1のFB−DIMMを含む図である。
【図2b】各スタックが2つのDRAMを含む、DRAMスタックを有するFB−DIMMにアクセスする際の待ち時間を示す図である。
【図3】多重メモリコアチップを含むメモリデバイスの一実施形態を示すブロック図である。
【図4】高速DRAMデバイスを非同期メモリコアチップとインタフェースチップとに区分する一実施形態を示すブロック図である。
【図5】メモリデバイスを同期メモリチップとデータインタフェースチップとに区分する一実施形態を示すブロック図である。
【図6】スタックドメモリチップの場合の一実施形態を示す図である。
【図7】メモリデバイスとDDR2のメモリバスをインタフェースする一実施形態を示すブロック図である。
【図8a】1つのDIMMモジュール上にメモリチップをスタックする一実施形態を示すブロック図である。
【図8b】メモリチップをメモリスペアリングでスタックする一実施形態を示すブロック図である。
【図8c】スタックメモリの作業プールの動作を示すブロック図である。
【図8d】スタックドメモリチップに対してメモリスペアリングを実施する一実施形態を示すブロック図である。
【図8e】スタックごとにメモリスペアリングを実施する一実施形態を示すブロック図である。
【図9a】一実施形態によるメモリミラーリングを説明するブロック図である。
【図9b】メモリミラーリングを可能にする記憶装置の場合の一実施形態を説明するブロック図である。
【図9c】メモリのスタックを有するミラードメモリシステムの場合の一実施形態を説明するブロック図である。
【図9d】全てのDIMMのスタックに対する同時メモリミラーリングを可能にする一実施形態を説明するブロック図である。
【図9e】スタックごとのメモリミラーリングを可能にする一実施形態を説明するブロック図である。
【図10a】書き込み動作中のメモリRAID機能を有するメモリチップのスタックを説明するブロック図である。
【図10b】読み出し動作中のメモリRAID機能を有するメモリチップのスタックを説明するブロック図である。
【図11】DRAMを高速メモリバスに追加した結果としての従来のインピーダンス負荷を示す。
【図12】一実施形態による、DRAMを高速メモリバスに追加した結果としてのインピーダンス負荷を示す。
【図13】ソケットを用いて低速メモリチップを追加する一実施形態を説明するブロック図である。
【図14】スタックの上部にソケットを配置したPCBを示す。
【図15】スタックの反対側にソケットを配置したPCBを示す。
【図16】1つ以上のメモリチップを収容できるアップグレードPCBを示す。
【図17】メモリチップをスタックする一実施形態を説明するブロック図である。
【図18】8ビット長のDDR2 SDRAMSで構成された3チップスタック内でデータマスク(「DM」)信号を用いてメモリRAIDを実施するタイミング図である。
【発明を実施するための形態】
【0009】
2005年9月2日に提出された“Methods and Apparatus of Stacking DRAMs”という発明の名称の米国仮特許出願第60/713,815号の開示は参照により本明細書に組み込まれる。
【0010】
大記憶容量を必要とするサーバやワークステーション等の市場区分がある。大記憶容量を可能にする1つの方法は、DRAMが、AMB(Advanced Memory Buffer)によってメモリチャネルから電気的に絶縁されているFB−DIMM(Fully Buffered DIMM)を用いることである。FB−DIMMソリューションは、サーバ及びワークステーションの市場区分で用いられることが期待されている。AMBは、メモリチャネルとDRAMの間のブリッジとして機能し、また、リピータとしても機能する。このことは、メモリチャネルが常に二地点間接続であることを実現する。図1は、FB−DIMMを有するメモリチャネルの一実施形態を示す。FB−DIMM100及び150は、DRAMチップ(110及び160)と、AMB120及び170とを含む。高速双方向リンク135は、メモリコントローラ130をFB−DIMM100に結合する。同様に、FB−DIMM100は、高速双方向リンク140を介してFB−DIMM150に結合されている。追加のFB−DIMMを同様の様態で追加してもよい。
【0011】
このFB−DIMMソリューションは、いくつかの欠点を有しており、主な2つの欠点は、高コストと長い待ち時間(すなわち、低パフォーマンス)である。各AMBは、10ドル〜15ドルの費用がかかり、これは、メモリモジュールコストのかなりの割合を占める。加えて、各AMBは、かなりの量の待ち時間(〜5ns)を導入する。そのため、より多くのFB−DIMMを追加することによって、システムの記憶容量が増加するにつれて、該システムのパフォーマンスは、一連のAMBの待ち時間によって低下する。
【0012】
記憶容量を増加させる代わりの方法は、DRAMを相互にスタックすることである。このことは、追加の分散型負荷を追加することなく、システムの総記憶容量を増加させる(その代わりに、電気的負荷は、ほぼ単一箇所に追加される)。また、多重FB−DIMMを、スタックDRAMを含む単一のFB−DIMMと置き換えることができるため、DRAMを相互にスタックすることは、AMBのパフォーマンスインパクトを低減する。図2aは、メモリコントローラと2つのFB−DIMMとの間の待ち時間を説明する注釈の付いた図1のFB−DIMMを含む。メモリコントローラ130とFB−DIMM100の間の待ち時間は、t1とtc1の合計である。ただし、t1は、AMB120のメモリチャネルインタフェースと、AMB120のDRAMインタフェースとの間の遅延時間(すなわち、ブリッジとして機能する場合のAMB120を介した遅延時間)であり、tc1は、メモリコントローラ130とFB−DIMM100との間の信号伝播遅延時間である。t1は、AMB120を通るアドレス又は制御信号の遅延時間と、場合により、AMB120を通るデータ信号の遅延時間とを含むことに留意されたい。また、tc1は、メモリコントローラ130からFB−DIMM100への信号の伝播遅延時間と、場合により、FB−DIMM100からメモリコントローラ130への信号の伝播遅延時間とを含む。図2aに示すように、メモリコントローラ130とFB−DIMM150の間の待ち時間は、t2+t1+tc1+tc2の合計であり、ただし、t2は、AMB120の入力メモリチャネルインタフェースと出力メモリチャネルインタフェースとの間の遅延時間であり(すなわち、AMB120がリピータとして機能している場合)、tc2は、FB−DIMM100とFB−DIMM150との間の信号伝播遅延時間である。t2は、AMB120を介したメモリコントローラ130からFB−DIMM150への信号の遅延時間と、場合により、AMB120を介したFB−DIMM150からメモリコントローラ130への信号の遅延時間とを含む。同様に、tc2は、FB−DIMM100からFB−DIMM150への信号の伝播遅延時間と、場合により、FB−DIMM150からFB−DIMM100への信号の伝播遅延時間とを表す。t1は、ブリッジとして機能しているAMBチップを通る信号の遅延時間を表す。ブリッジは、この場合には、AMB170である。
【0013】
図2bは、DRAMスタックを有するFB−DIMMにアクセスする際の待ち時間を示す。ただし、各スタックは、2つのDRAMを含む。いくつかの実施形態において、「スタック」は、少なくとも1つのDRAMチップを備える。他の実施形態において、「スタック」は、少なくとも1つのDRAMチップを有するインタフェースまたはバッファチップを備える。FB−DIMM210は、3つのDRAMスタック(220、230及び240)と、メモリコントローラ200によってアクセスされるAMB250とを含む。図2bに示すように、これらのDRAMのスタックにアクセスするための待ち時間は、t1とtc1の合計である。該待ち時間は、2つの標準的なFB−DIMM(すなわち、個々のDRAMを有するFB−DIMM)を有するメモリチャネルにおける待ち時間よりも、2−DRAMスタックを含むFB−DIMMを有するメモリチャネルにおける待ち時間の方が少ないことが図2a及び図2bを見て分かる。図2bは、2つの標準的なFB−DIMMと、2−DRAMスタックを用いるFB−DIMMとを比較した場合を示すことに留意されたい。しかし、このことは、n個の標準的なFB−DIMMと、n−DRAMスタックを用いるFB−DIMMとの比較の場合にも拡大適用することができる。
【0014】
高速DRAMを相互にスタックすることは、それ自体の課題を有する。高速DRAMがスタックされるにつれて、それぞれの電気的負荷または入力寄生成分(入力キャパシタンス、入力インダクタンス等)が合算されて、シグナルインテグリティ及び電気的負荷の問題を引き起こして、スタックが作動することのできる最大インタフェース速度を制限する。加えて、ソース同期ストローブ信号の使用は、高速DRAMをスタックする場合に、さらなる複雑性を導入する。
【0015】
低速DRAMを相互にスタックすることは、高速DRAMを相互にスタックすることよりも容易である。高速DRAMの詳しい研究は、該高速DRAMが、低速メモリコアと高速インタフェースとからなることを示している。従って、高速DRAMを2つのチップ、すなわち、低速メモリチップと高速インタフェースチップとに分けることができる場合、単一の高速インタフェースチップの背後に多重低速メモリチップをスタックすることができる。図3は、多重メモリコアチップを含むメモリデバイスの一実施形態を説明するブロック図である。メモリデバイス320は、1つの高速インタフェースチップ300と、高速インタフェースチップ300の背後にスタックされた複数の低速メモリチップ310とを含む。区分化する1つの方法は、高速DRAMを、低速でワイドな非同期メモリコアと、高速インタフェースチップとに分けることである。図4は、高速DRAMデバイスを非同期メモリコアとインタフェースチップとに区分する一実施形態を説明するブロック図である。メモリデバイス400は、インタフェースチップ410を介してメモリチャネルへインタフェースされる非同期メモリコアチップ420を含む。図4に示すように、インタフェースチップ410は、アドレス430、コマンド440及び外部データバスからのデータ460を受取り、アドレス435、コマンド及び制御445及び450、並びに内部データバスを通じたデータ465を用いて、非同期メモリコアチップ420と情報をやりとりする。
【0016】
しかし、いくつかの他の区分けも可能であることに留意しなければならない。例えば、高速DRAMのアドレスバスは、典型的には、データバスよりも低速で作動する。DDR400 DDR SDRAMの場合、アドレスバスが200MHzの速度で作動すると共に、データバスが400MHzの速度で作動する。一方、DDR2−800DDR2 SDRAMの場合、アドレスバスは400MHzの速度で作動し、データバスは800MHzで作動する。高速DRAMは、高データレートをサポートするために、プリフェッチを利用する。従って、各読出しまたは書き込み動作の場合に、4nデータビットがメモリコアからアクセスされることを除いて、DDR2−800デバイスは、内部で200MHzに等しいレートで作動し、ただし、nは、外部データバスの幅である。4n内部データビットは、n外部データピンに多重化又は逆多重化され、このことは、外部データピンが、200MHzの内部データレートの4倍で作動することを可能にする。
【0017】
このため、例えば、高速nビット長DDR2 SDRAMを区分けする別の方法は、該SDRAMをより遅い4nビット長の同期DRAMチップと、4nからnにデータ多重化/逆多重化する高速データインタフェースチップとに分割することとすることができる。図5は、メモリデバイスを同期メモリチップとデータインタフェースチップとに区分けする一実施形態を説明するブロック図である。この実施形態の場合、メモリデバイス500は、同期メモリチップ510とデータインタフェースチップ520とを含む。同期メモリチップ510は、メモリチャネルからアドレス530と、コマンド及びクロック540とを受け取る。また、該同期メモリチップ510は、コマンド及び制御550を介するとともに、4nビット長内部データバスを通じてデータ570を介してデータインタフェースチップ520とも接続されている。データインタフェースチップ520は、nビット長外部データバス545及び4nビット長内部データバス570に接続されている。一実施形態において、nビット長高速DRAMは、m*nビット長同期DRAMチップと、m*nto nデータ多重化又は逆多重化を行う高速データインタフェースチップとに区分けすることができる。ただし、mはプリフェッチの量であり、すなわちm>1であり、mは、典型的には偶数である。
【0018】
上述したように、いくつかの異なる区分けが可能であるが、いくつかの実施形態においては、区分けは、次のように行うべきである。
・ホストシステムが(メモリデバイスがDIMM上にある実施形態において、DIMMごとに)単一の負荷のみを、メモリチャネルまたはバスの高速信号またはピンで見る。
・これらのメモリチップをスタックすることがシグナルインテグリティに影響を及ぼさないように、相互にスタックすべきメモリチップが、メモリチャネルまたはバスのデータレート(すなわち、外部データバスのレート)よりも低い速度で作動する。
【0019】
これに基づいて、多重メモリチップを、該メモリチャネルの信号の一部または全てにインタフェースする単一のインタフェースチップの背後にスタックすることができる。これは、メモリチップのI/O信号の一部または全てが、該ホストシステムのメモリチャネルまたはバスに直接ではなく、該インタフェースチップに接続されていることを意味することに留意されたい。該多重メモリチップからのI/O信号は、該インタフェースチップへ一緒にバスで転送することができるか、または、個々の信号として該インタフェースチップに接続することができる。同様に、該ホストシステムのメモリチャネルまたはバスに直接接続すべき該多重メモリチップからのI/O信号は、一緒にバスで転送することができるか、または、個々の信号として該外部メモリバスに接続されてもよい。該インタフェースチップまたはメモリチャネルまたはバスのいずれかに該I/O信号をバスで転送すべき場合、1つ以上のバスを用いることができる。同様に、該メモリチップのための電力は、該インタフェースチップによって供給することができるか、または、該ホストシステムから直接もたらされてもよい。
【0020】
図6は、スタックドメモリチップの場合の一実施形態を示す。メモリチップ620、630及び640は、s1、s2、s3、s4ならびにv1及びv2のための入力および/または出力を含む。s1及びs2の入力および/または出力は、外部メモリバス650に結合されており、s3及びs4の入力および/または出力は、インタフェースチップ610に結合されている。メモリ信号s1及びs4は、バスで転送されない信号の例である。メモリ信号s2及びs3は、バスで転送されるメモリ信号の例である。メモリの電源配線v1は、外部バス650に直接接続されているメモリ電源の例であり、v2は、インタフェース610に接続されたメモリ電源配線の例である。相互にスタックされるべきメモリチップは、複数のダイ、または、複数の個々のパッケージ化された部品としてスタックすることができる。1つの方法は、それらの部品は、スタッキングの前に検査及びバーンインを行うことができるため、個々にパッケージ化された部品をスタックすることである。加えて、パッケージ化された部品は、相互にスタックして一緒にはんだ付けすることができるため、スタックを修復しやすい。例えば、スタック内の一部が故障した場合、該スタックは、はんだを吸い取って、個々のパッケージに分離することができ、この故障したチップを新しい有効なチップと置き換えることができ、また、該スタックは、組立て直すことができる。しかし、上述したようにスタックを修復することが、時間がかかりかつ手間がかかることは明らかである。
【0021】
有効なp−チップメモリスタックを作る1つの方法は、(p+q)個のメモリチップと1つのインタフェースチップとを用いることであり、ただし、q個の余分なメモリチップ(典型的には、1≦q≦p)はスペアチップであり、p及びqは整数値からなる。該スタックの組立て中に、p個のメモリチップのうちの1つ以上が損傷した場合、それらのチップは、このスペアチップと置き換えることができる。故障したチップの組立て後の検知は、テスタを用いて、または、該インタフェースチップ内のビルトインセルフテスト(built−in self test;BIST)ロジックを用いて行うことができる。また、該インタフェースチップは、この置き換えがホストシステムに対して透過的であるように、故障したチップをスペアチップと置き換える能力を有するように設計することもできる。
【0022】
このアイデアは、スタック内のメモリチップの(通常の作動条件下での)ランタイムの置換に拡大適用することができる。DRAM等の電子メモリチップは、ハード及びソフトメモリエラーを起こしやすい。ハードエラーは、典型的には、該メモリチップが常に間違った結果に戻るような故障したまたは不具合のあるハードウェアによって引き起こされる。例えば、メモリアレイ内のセルは、該セル内に「1」が格納されている場合であっても、常に「0」という値に戻るように、lowを持続する可能性がある。ハードエラーは、シリコンの欠陥、はんだ接合の不良、コネクタピンの破損等によって引き起こされる。ハードエラーは、典型的には、厳しい検査と、DRAMチップ及びメモリモジュールのバーンインとによって検査することができる。ソフトエラーは、メモリセル付近の障害が該セルの内容を変更した場合に引き起こされるランダムで一時的なエラーである。この障害は、一般に、メモリチップに影響を与える宇宙粒子によって引き起こされる。ソフトエラーは、メモリセルの間違った内容に正しいデータで上書きすることによって修正することができる。DRAMの場合、ハードエラーよりもソフトエラーが一般的である。
【0023】
コンピュータ製造業者は、ソフトエラーに対処するために多くの技術を用いる。最も単純な方法は、誤り訂正符号(error correcting code;ECC)を用いることである。この場合、典型的には、64ビットのデータを格納するのに72ビットが用いられる。この種の符号は、シングルビットエラーの検出及び訂正、および2ビットエラーの検出を可能にする。ECCは、DRAMチップのハード故障から保護しない。コンピュータ製造業者は、この種のチップ故障から保護するために、チップキル(Chipkill)またはアドバンストECCと呼ばれる技術を用いる。ディスク製造業者は、同様のディスクエラーに対処するために、レイド(Redundant Array of Inexpensive Disks;RAID)と呼ばれる技術を用いる。
【0024】
また、メモリエラーから保護し、より高いレベルのメモリ可用性を提供するために、メモリスペアリング、メモリミラーリング及びメモリRAID等のより高度な技術も利用可能である。これらの特徴は、典型的には、ハイエンドサーバに見られ、メモリコントローラにおいて特別な論理を必要とする。メモリスペアリングは、許容できないレベルのソフトエラーを呈するメモリバンクを置き換えるスペアまたは冗長メモリバンクの使用を伴う。メモリバンクは、単一のDIMMまたは多重DIMMで構成することができる。アドバンストメモリ保護技術に関するこの論考におけるメモリバンクは、DRAMの内部バンクと混同すべきではないことに留意されたい。
【0025】
メモリミラーリングにおいて、データの全てのブロックは、システムまたは作業メモリに、ならびにミラードメモリ内の同じ記憶位置に書き込まれるが、データは、作業メモリのみからリードバックされる。リードバック中に、該作業メモリ内のバンクが、許容できないレベルのエラーを呈する場合、該作業メモリは、該ミラードメモリと置き換えられることになる。
【0026】
RAIDは、ディスクエラーから保護するためにディスク業界によって用いられる周知の一連の技術である。同様のRAID技術は、メモリエラーから保護するために、メモリ技術に適用することができる。メモリRAIDは、ディスク技術において用いられるRAID3またはRAID4と概念が同じである。メモリRAIDにおいて、データのブロック(典型的には、いくつかの整数個のキャッシュライン)が、2つ以上のメモリバンクに書き込まれると共に、そのブロックのパリティが専用パリティバンクに格納される。該バンクのうちのいずれかが故障している場合には、該データのブロックを、残りのバンクからのデータと、パリティデータとによって再作成することができる。
【0027】
これらのアドバンスト技術(メモリスペアリング、メモリミラーリング及びメモリRAID)は、これまでは個々のDIMMまたはDIMMの群を用いて実施されてきた。このことは明らかに、メモリコントローラ内に専用ロジックを必要とする。しかし、本開示においては、そのような特徴は、ほとんどメモリスタック内で実施することができ、該メモリコントローラから最小限の追加的サポートのみを必要とし、または、追加サポートを必要としない。
【0028】
DIMMまたはFB−DIMMは、個々のDRAMの代わりにメモリスタックを用いて形成することができる。例えば、標準的なFB−DIMMは、9個、18個またはそれ以上のDDR2 SDRAMチップを収容できる。FB−DIMMは、9個、18個、またはそれ以上のDDR2スタックを収容することができ、各スタックは、1つのDDR2 SDRAMインタフェースチップと、該インタフェースチップの上部にスタックされた(すなわち、電気的に該インタフェースチップの背後に、すなわち、該インタフェースチップは、電気的に該メモリチップと外部メモリバスとの間にある)1つ以上の低速メモリチップとを含む。同様に、標準的なDDR2 DIMMは、9個、18個またはそれ以上のDDR2 SDRAMチップを含むことができる。DDR2 DIMMは、代わりに、9個、18個またはそれ以上のDDR2スタックを含むことができ、各スタックは、1つのDDR2 SDRAMインタフェースチップと、該インタフェースチップの上部にスタックされた1つ以上の低速メモリチップとを含む。一実施形態に従って形成されたDDR2スタックの例を図7に示す。
【0029】
図7は、メモリデバイスをDDR2メモリバスにインタフェースする一実施形態を説明するブロック図である。図7に示すように、メモリデバイス700は、DDR2 SDRAMインタフェースチップ710に結合されたメモリチップ720を備える。また、DDR2 SDRAMインタフェースチップ710は、メモリチップ720を外部DDR2メモリバス730にインタフェースする。上述したように、一実施形態において、有効なp−チップメモリスタックは、(p+q)個のメモリチップと、1つのインタフェースチップとで形成することができ、ただし、q個のチップはスペアとして使用することができ、また、p及びqは整数値である。該スタック内でメモリスペアリングを実施するために、この(p+q)個のチップは、チップからなる2つのプール、すなわち、p個のチップからなる作業プールと、q個のチップからなるスペアプールとに分けることができる。従って、該作業プール内の1つのチップが故障した場合、その故障したチップは、該スペアプールからのチップと置き換えることができる。この故障した作業チップのスペアチップによる置き換えは、例えば、作業チップにおけるマルチビット障害の検知によって、または、作業チップからリードバックされたデータにおけるエラーの数が、所定のまたはプログラム可能なエラーしきい値をまたいだときに引き起こされる。
【0030】
ECCは、典型的には、メモリチャネル内の64データビット全体および場合により、複数のメモリチャネルにわたって実施されるため、リードバックされたデータにおけるシングルビットまたはマルチビットエラーの検知は、メモリコントローラ(または、FB−DIMMの場合にはAMB)によってのみ行われる。該メモリコントローラ(またはAMB)は、各DIMMからリードバックされたデータにおけるエラーの実行カウントを保つように設計することができる。このエラーの実行カウントが所定のまたはプログラムされたしきい値を超えた場合、該メモリコントローラは、エラーを生じている作業プール内のチップを、スペアプールからのチップと置き換えるようにインタフェースチップに伝えることができる。
【0031】
例えば、DDR2 DIMMの場合を考察する。該DIMMが9個のDDR2スタック(スタック0〜8、ただし、スタック0は、72ビット長のメモリチャネルの最下位の8つのデータビットに対応する。また、スタック8は、最上位の8つのデータビットに対応する)を含むと仮定する。また、各DDR2スタックが5つのチップからなり、そのうちの4つが作業プールに割当てられており、5番目のチップがスペアプールに割当てられていると仮定する。また、該作業プール内の1番目のチップがアドレスレンジ[N−1:0]に対応し、該作業プール内の2番目のチップがアドレスレンジ[2N−1:N]に対応し、該作業プール内の3番目のチップがアドレスレンジ[3N−1:2N]に対応し、該作業プール内の4番目のチップがアドレスレンジ[4N−1:3N]に対応し、ただし、「N」は整数値であると仮定する。
【0032】
通常の動作条件下では、該メモリコントローラは、アドレスレンジ[4N−1:3N]、[3N−1:2N]、[2N−1:N]及び[N−1:0]からのデータにおけるエラーのトラックを保つように設計することができる。仮に、アドレスレンジ[3N−1:2N]内のデータにおけるエラーが所定のしきい値を超えた場合、該メモリコントローラは、該スタック内のインタフェースチップに、該作業プール内の3番目のチップを該スタック内のスペアチップと置き換えるように命令することができる。この置き換えは、DIMM内の9個全てで同時に、または、スタックごとに行うことができる。アドレスレンジ[3N−1:2N]からのデータにおけるエラーが、該DIMMからのデータビット[7:0]に限定されると仮定する。前者の場合には、全てのスタックにおける3番目のチップが、それぞれのスタック内のスペアチップと置き換えられる。後者の場合には、スタック0内の3番目のチップ(LSBスタック)のみが、当該スタック内のスペアチップと置き換えられることになる。後者の場合は、(全てのスタックにおいて同じチップである必要がない)各スタックにおける1つの故障チップを補いまたは許容するのに対して、前者の場合は、該DIMM内の全てのスタックの中で1つの故障チップを補いまたは許容する。そのため、後者の場合の方がよりフレキシブルである。従って、後者の場合、(p+q)個のメモリチップで形成された有効なp−チップスタックに対して、スタックごとにq個までのチップが故障してもよく、スペアチップと置き換えることができる。該メモリコントローラ(またはAMB)は、バンド内信号によって、あるいはサイドバンド信号によって、該インタフェースチップと情報をやりとりすることにより、メモリスペアリング機能(すなわち、故障している作業チップのスペアチップとの置き換え)を引き起こすことができる。システムマネジメントバス(System Management Bus;SMBus)は、サイドバンド信号の一例である。
【0033】
いくつかの実施形態に従って構成されたメモリスタック内でのメモリスペアリングの場合の実施形態を図8a〜図8eに示す。
【0034】
図8aは、1つのDIMMモジュール上にメモリチップをスタックする一実施形態を説明するブロック図である。この例の場合、メモリモジュール800は、9個のスタック(810、820、830、840、850、860、870、880及び890)を含む。各スタックは、少なくとも2つのメモリチップを備える。一実施形態において、メモリモジュール800は、DDR2の仕様に従って作動するように構成されている。
【0035】
図8bは、メモリスペアリングによってメモリチップをスタックする一実施形態を説明するブロック図である。図8bに示すこの例のメモリスタックの場合、メモリデバイス875は、作業メモリプールを形成するようにスタックされたメモリチップ(885、886、888及び892)を含む。この実施形態の場合、該作業メモリプールにアクセスするために、該メモリチップにはそれぞれ、図8bに示すようなアドレスレンジが割当てられている。また、メモリデバイス875はまた、該スペアメモリプールを形成するスペアメモリチップ895を含む。しかし、該スペアメモリプールは、メモリチップをいくつ備えていてもよい。
【0036】
図8cは、作業メモリプールの動作を説明するブロック図である。この実施形態の場合、メモリモジュール812は、複数の集積回路メモリスタック(814、815、816、817、818、819、821、822及び823)を含む。この例の場合、各スタックは、作業メモリプール825とスペアメモリチップ855とを含む。
【0037】
図8dは、スタックドメモリチップのためのメモリスペアリングを実施する一実施形態を説明するブロック図である。この例の場合、メモリモジュール824は、複数の集積回路メモリスタック(826、827、828、829、831、832、833、834及び835)を含む。この実施形態の場合、メモリスペアリングは、1つ以上のメモリチップでデータエラーが発生した(すなわち、1つのアドレスレンジで発生した)場合に、その機能を有効にすることができる。図8dに示す例の場合、所定のしきい値を超えているデータエラーが、アドレスレンジ[3N−1:2N]におけるDQ[7:0]で発生している。メモリスペアリングを実施するために、この故障チップは、該DIMMの全てのスタックで同時に置き換えられる。具体的には、この例の場合、故障チップ857は、該DIMMの全てのメモリスタック内のスペアチップ855と置き換えられる。
【0038】
図8eは、スタックごとにメモリスペアリングを実施する一実施形態を説明するブロック図である。この例の場合、メモリモジュール836はまた、複数の集積回路メモリスタック(837、838、839、841、842、843、844、846及び847)を含む。各スタックは、作業メモリプールとスペアメモリプール(例えば、スペアチップ861)とに割当てられている。この例の場合、メモリチップ863がスタック847で故障している。メモリスペアリングを可能にするために、スタック847内のスペアチップのみが該故障チップと置き換えられ、他の全てのスタックは、該作業プールを用いて作動し続ける。
【0039】
メモリミラーリングは、各スタック内の(p+q)個のチップを、2つの等しいサイズのセクション、すなわち、作業セクション及びミラードセクションに分割することによって実施することができる。メモリコントローラによってメモリに書き込まれる各データは、該作業セクション及び該ミラードセクションにおける同じ記憶位置に格納される。該メモリコントローラによって該メモリからデータが読み出される場合、該インタフェースチップは、該作業セクション内の適切な記憶位置のみを読み取り、そのデータを該メモリコントローラに戻す。該メモリコントローラが、この戻されたデータがマルチビットエラーを有することを検知する場合、例えば、読み出したデータにおける累積エラーが所定のまたはプログラムされたしきい値を超えている場合、該メモリコントローラは、(バンド内信号またはサイドバンド信号によって)該インタフェースチップに、該作業セクションを使うことを止めて、その代わりに、該ミラードセクションを作業セクションとして扱うことを命じるように設計することができる。メモリスペアリングの場合に論じたように、この置き換えは、該DIMM内の全てのスタックにわたって行うことができ、または、スタックごとに行うことができる。後者の場合、各スタック内の1つの故障チップを補いまたは許容するのに対して、前者の場合は、該DIMM内の全てのスタックの中で1つの故障チップを補いまたは許容する。そのため、後者の場合の方がよりフレキシブルである。
【0040】
メモリスタック内でのメモリミラーリングの場合の実施形態を図9a〜図9eに示す。
【0041】
図9aは、一実施形態によるメモリミラーリングを説明するブロック図である。図9aに示すように、メモリデバイス900は、メモリを外部メモリバスにインタフェースするインタフェースチップ910を含む。該メモリは、作業メモリセクション920とミラードメモリセクション930とに分けられている。通常の動作中、書き込み動作は、作業メモリセクション920及びミラードメモリセクション930の両方で行われる。しかし、読み出し動作は、作業メモリセクション920のみから行われる。
【0042】
図9bは、メモリミラーリングを可能にするメモリデバイスの場合の一実施形態を説明するブロック図である。この例の場合、メモリデバイス900は、作業メモリ920内で生じた、あるしきい値のエラーにより、ミラードメモリセクション930を作業メモリとして用いる。従って、作業メモリセクション920は、使用不能作業メモリセクションとして分類される。動作中、インタフェースチップ910は、ミラードメモリセクション930、および場合により、使用不能作業メモリセクション920に対して、書き込み動作を実行する。しかし、メモリミラーリングが可能な状態で、読み出しは、ミラードメモリセクション930から行われる。
【0043】
図9cは、集積回路メモリスタックを有するミラードメモリシステムの場合の一実施形態を説明するブロック図である。この実施形態の場合、メモリモジュール915は、複数の集積回路メモリスタック(902、903、904、905、906、907、908、909及び912)を含む。図9cに示すように、各スタックは、図9cにおいて「W」という符号が付けられた作業メモリセクション953と、図9cにおいて「M」という符号が付けられたミラードメモリセクション951とに分けられている。この例の場合、該作業メモリセクションがアクセスされる(すなわち、ミラードメモリは使用可能ではない)。
【0044】
図9dは、DIMMの全てのスタックにわたってメモリミラーリングを同時に可能にする一実施形態を説明するブロック図である。この実施形態の場合、メモリモジュール925はまた、ミラードメモリセクション956と作業メモリセクション958とに分けられた複数の集積回路メモリスタック(921、922、923、924、926、927、928、929及び931)を含む。この実施形態の場合、メモリミラーリングが可能である場合、該DIMM内の各スタックのミラードメモリセクション内の全てのチップは、作業メモリとして使われる。
【0045】
図9eは、スタックごとにメモリミラーリングを可能にする一実施形態を説明するブロック図である。この実施形態の場合、メモリモジュール935は、ミラードセクション961(「M」という符号が付けられた)と作業メモリセクション963(「W」という符号が付けられた)とに分けられた複数の集積回路メモリスタック(941、942、943、944、945、946、947、948及び949)を含む。この実施形態の場合、所定のしきい値のエラーが、これらの作業メモリの一部から生じると、対応するスタックからのミラードメモリが作業メモリと置き換えられる。例えば、DQ[7:0]でデータエラーが起こり、あるしきい値を超えた場合には、スタック949に対してのみ(「Mu」という符号が付けられた)ミラードメモリセクション961が(「uW」という符号が付けられた)作業メモリセクション963に置き換わる。
【0046】
一実施形態において、(p+1)−チップスタック内でのメモリRAIDは、p個のチップ全てにデータを格納し、かつそれとは別個のチップ(すなわち、パリティチップ)にパリティ(すなわち、エラー訂正符号または情報)を格納することによって実施することができる。従って、データのブロックが該スタックに書き込まれると、該ブロックは、p個の等しいサイズの部分に分かれ、データの各部分は、該スタック内の独立したチップに書き込まれる。すなわち、該データは、該スタック内のp個のチップ全てに「ストライピング」される。
【0047】
例えば、該メモリコントローラが、データブロックAを該メモリスタックに書き込むとする。該インタフェースチップは、このデータをp個の等しいサイズの部分(A1、A2、A3、…、Ap)に分割し、A1を該スタック内の1番目のチップに書き込み、A2を2番目のチップに書き込み、A3を3番目のチップに書き込み、以下、Apが該スタック内のp番目のチップに書き込まれるまで同様である。また、データブロックA全体のパリティ情報は、該インタフェースチップによって演算されて、該パリティチップ内に格納される。該メモリコントローラが、データブロックAの読み出し要求を送ると、該インタフェースチップは、1番目、2番目、3番目、…、p番目のチップからそれぞれA1、A2、A3、…、Apを読み出してデータブロックAを形成する。また、該インタフェースチップは、格納されているデータブロックAのパリティ情報を読み出す。該メモリコントローラが、該スタック内のいずれかのチップからリードバックされたデータ内にエラーを検出すると、該メモリコントローラは、該インタフェースチップに、該パリティ情報と、該データブロックAの正しい部分とを用いて正しいデータを再形成するように命令することができる。
【0048】
メモリスタック内でのメモリRAIDの場合の実施形態を図10a及び図10bに示す。
【0049】
図10aは、書き込み動作の実行中のメモリRAID機能を有するメモリチップからなるスタックを説明するブロック図である。メモリデバイス1000は、「p+1」個のメモリチップ(1015、1020、1025及び1030)を外部メモリバスにインタフェースするインタフェースチップ1010を含む。図10aは、データブロック「A」の書き込み動作を示し、データブロック「A」のデータは、メモリチップに次のように書き込まれる。
A=Ap…A2、A1;
パリティ[A]=(Ap)n…n(A2)、n(A1)、ただし、「n」は、ビット排他論理和演算子である。
【0050】
図10bは、読み出し動作中のメモリRAID機能を有するメモリチップからなるスタックを説明するブロック図である。メモリデバイス1040は、インタフェースチップ1050と、「p」個のメモリチップ(1060、1070及び1080)と、パリティメモリチップ1090とを含む。読み出し動作の場合、データブロック「A」は、A1、A2、…Ap及びパリティ[A]からなり、図10bに示すように、それぞれのメモリチップから読み出される。
【0051】
この技法は、各スタックに格納されたデータを何らかのエラーから回復することができるようにすることに留意されたい。該メモリコントローラは、1つのDIMM上の全てのメモリスタックからのデータ、および場合により多重DIMMに対してエラー訂正を実施することができる。
【0052】
他の実施形態においては、余分なチップに格納されたビットは、パリティ以外の代替的機能を有することができる。例として、余分なストレージまたは隠れビットフィールドは、キャッシュラインに、関連するキャッシュラインのアドレスを付けるのに用いることができる。従って、該メモリコントローラがキャッシュラインAをフェッチした前回を仮定すると、該メモリコントローラは、キャッシュラインBもフェッチしている(ただし、Bは、ランダムアドレスである)。この結果、該メモリコントローラは、該隠れビットフィールド内のキャッシュラインBのアドレスでキャッシュラインAを書き戻すことができる。そして、次に該メモリコントローラがキャッシュラインAを読出すと、該メモリコントローラは、該隠れビットフィールド内のデータも読出し、かつキャッシュラインBをプリフェッチする。また別の実施形態においては、メタデータまたはキャッシュタグあるいはプリフェッチ情報を該隠れビットフィールドに格納することができる。
【0053】
従来の高速DRAMの場合、余分なメモリの追加は、図11に示すように、複数のメモリチップをメモリコントローラに接続する高速メモリバスに余計な電気的負荷を加えることを伴う。
【0054】
図11は、複数のDRAMを1つの高速メモリバスに付加する結果としての従来のインピーダンス負荷を示す。この実施形態の場合、メモリコントローラ1110は、高速バス1115上のメモリにアクセスする。従来のDRAMの高速メモリバス1115に対する負荷(1120)を図11に示す。追加のメモリ容量を従来の方法で付加するために、複数のメモリチップが高速バス1115に付加され、その結果として、追加の負荷(1125及び1130)が高速メモリバス1115に付加される。
【0055】
該メモリバスの速度が増加するのにつれて、該メモリバスに並列に接続することのできるチップの数は減少する。このことは、最大記憶容量を制限する。言い換えると、該メモリバス上の並列チップの数が増加するのにつれて、該メモリバスの速度は低下する。従って、高記憶容量を実現するためには、低速(およびより低いメモリ性能)を容認しなければならない。
【0056】
高速DRAMを高速インタフェースと低速メモリチップとに分けることは、メモリバス速度及びメモリシステムのパフォーマンスに悪影響を及ぼすことなく、余分な記憶容量の追加を容易にする。単一の高速インタフェースチップは、メモリバスからなるラインの一部または全てに接続して、該メモリバスに公知の一定の負荷を与えることができる。該インタフェースチップの反対側は、低速で作動するため、パフォーマンスを犠牲にすることなく、多重低速メモリチップを該インタフェースチップ(の低速側)に接続して、メモリをアップグレードする能力を与えることができる。実質的に、追加的メモリチップの電気的負荷は、(現在、従来の高速DRAMを用いた場合である)高速バスから低速バスにシフトしてきている。低速バスに追加の電気的負荷を加えることは常に、高速バスに追加の電気的負荷を加えることの問題よりも、解決するのがかなり容易である。
【0057】
図12は、一実施形態による、高速メモリバスに複数のDRAMを付加する結果としてのインピーダンス負荷を示す。この実施形態の場合、メモリコントローラ1210は、高速メモリバス1215上の高速インタフェースチップ1200にアクセスする。該高速インタフェースチップからの負荷1220を図12に示す。低速バス1240は、高速インタフェースチップ1200に結合している。メモリチップ(1230及び1225)の負荷は、低速バス1240に加えられる。その結果として、追加の負荷は、高速メモリバス1215には付加されない。
【0058】
該インタフェースチップに接続される低速メモリチップの数は、該メモリスタックの製造時に一定にしてもよく、または、製造後に変えてもよい。該メモリスタックの製造後に、余分な記憶容量をアップグレードし、かつ付加する能力は、ユーザが、意図される用途に必要なシステム全体の記憶容量の明確な理解を有していない可能性のあるデスクトップPC等のマーケットにおいて特に有用である。追加の記憶容量を付加するこの能力は、PC業界が、デスクトップやモバイル等のいくつかの主要市場区分においてDDR3メモリを採用する場合には、非常に重要になる。これは、DDR3の速度においては、メモリチャネル当たりで、1つのDIMMだけがサポートされることが予想されるためである。このことは、エンドユーザにとっては、システムが構築されて出荷された後に、追加のメモリをシステムに付加する簡単な方法がないことを意味する。
【0059】
メモリスタックの記憶容量を増加させる能力を与えるために、少なくとも1つの低速メモリチップを付加するのにソケットを用いてもよい。一つの態様において、該ソケットは、プリント配線板(PCB)の該メモリスタックと同じ側であって、該メモリスタックに隣接して設けることができる。メモリスタックは、少なくとも1つの高速インタフェースチップまたは少なくとも1つの高速インタフェースチップと少なくとも1つの低速メモリチップとからなることができる。図13は、ソケットを用いて低速メモリチップを付加する一実施形態を説明するブロック図である。この実施形態の場合、DIMM等のプリント配線板(PCB)1300は、高速インタフェースチップからなる1つ以上のスタックを含む。他の実施形態においては、該スタックは、低速メモリチップも含む。図13に示すように、1つ以上のソケット(1310)が、スタック1320に隣接してPCB1300上に実装されている。PCB1300の記憶容量を増加させるために、低速メモリチップをこれらのソケットに追加することができる。また、この実施形態の場合、ソケット1310は、PCB1300上のスタック1320と同じ側に配置されている。
【0060】
該PCBのスペースが限定されているか、または、該PCBの寸法が、ある工業規格または顧客の要求を満たさなければならない状況においては、追加の低速メモリチップのためのソケットは、図14に示すように、該PCBの該メモリスタックと同じ側にあり、かつ該メモリスタックの上部に位置するように設計することができる。
【0061】
図14は、ソケットがスタックの上部に配置されたPCBを示す。PCB1400は、複数のスタック(1420)を含む。1つのスタックは、1つの高速インタフェースチップと、場合により、1つ以上の低速メモリチップとを含む。この実施形態の場合、ソケット1410は、1つ以上のスタックの上部に位置している。記憶容量を該PCB(例えば、DIMM)に付加するために、複数のメモリチップがソケット(1410)内に配置されている。別法として、該追加の低速メモリチップのためのソケットは、図15に示すように、該PCBの、該メモリスタックとは反対側にあるように設計することができる。
【0062】
図15は、ソケットがスタックの反対側に配置されたPCBを示す。この実施形態の場合、DIMM等のPCB1500は、高速インタフェースチップと、場合により1つ以上の低速メモリチップとを含む1つ以上のスタック(1520)を備える。この実施形態の場合、図15に示すように、1つ以上のソケット(1510)が、該PCBの、該スタックとは反対側に実装されている。低速メモリチップは、該メモリスタックに1つずつ付加することができる。すなわち、各スタックは、関連するソケットを有することができる。この場合、追加の容量を該メモリシステムに付加することは、1つ以上の低速メモリチップを、メモリランクにおける各スタックに付加することを伴う(ランクは、メモリアクセスに応答する全てのメモリチップまたはスタック、すなわち、共通のチップセレクト信号によって使用可能にされる全てのメモリチップまたはスタックを意味する)。同じ数で同じ密度のメモリチップを、あるランクにおける各スタックに付加しなければならないことに留意されたい。代替的方法は、ランク内の全てのスタックに対して共通のソケットを用いることとすることができる。この場合、追加の記憶容量を付加することは、多重メモリチップを含むPCBを該ソケットに挿入することを伴い、また、該ランクにおける各スタックに対して少なくとも1つのメモリチップがある。上述したように、同じ数で同じ密度のメモリチップを、該ランクにおける各スタックに付加しなければならない。
【0063】
多くの異なる種類のソケットを使用することができる。例えば、該ソケットは、メス型ソケットとすることができ、アップグレードメモリチップを有するPCBは、関連するオス型ピンを有することができる。
【0064】
図16は、1つ以上のメモリチップを収容できるアップグレードPCBを示す。この実施形態の場合、アップグレードPCB1610は、1つ以上のメモリチップ(1620)を含む。図16に示すように、PCB1610は、オス型ソケットピン1630を含む。DIMM PCB上のメス型レセプタクルソケット1650は、追加のメモリチップ(1620)を含むように、オス型ソケットピン1630と嵌合して、その記憶容量をアップグレードする。別のアプローチは、オス型ソケットと、関連するメス型レセプタクルを有するアップグレードPCBとを用いることである。
【0065】
高速DRAMを低速メモリチップと高速インタフェースチップとに分けること、および多重メモリチップを1つのインタフェースチップの背後にスタックすることは、多重チップをスタックすることに関連する性能に不利な条件を確実に最小限にする。しかし、このアプローチは、現在のDRAMのアーキテクチャへの変更を要し、このこともまた、この技術を市場に送り出すことに関連する時間及びコストを増加させる。より安くかつより迅速なアプローチは、待ち時間を費やすことなく、バッファチップの背後に、多重在庫のある既製品の高速DRAMチップをスタックすることである。
【0066】
現在の在庫品の高速DRAM(DDR2 SDRAM等など)は、ソース同期ストローブ信号を、データの双方向転送のためのタイミング基準として用いる。4ビット長のDDRまたはDDR2 SDRAMの場合、専用のストローブ信号が、該DRAMの4つのデータ信号と関連付けられている。8ビット長チップの場合には、専用ストローブ信号が8つのデータ信号と関連付けられている。16ビット及び32ビットチップの場合は、専用ストローブ信号が、8つのデータ信号の各セットと関連付けられている。たいていのメモリコントローラは、メモリチャネルまたはバスにおける4つまたは8つ全てのデータラインのための専用ストローブ信号に適応するように設計されている。その結果、シグナルインテグリティ及び電気的負荷という考慮すべき事柄により、たいていのメモリコントローラは、(72ビット長のメモリチャネルの場合)ランクごとに9個または18個のメモリチップのみに接続することが可能である。接続性に対するこの制限は、2つの4ビット長の高速メモリチップを現在の工業規格のDIMM上で相互にスタックすることができるが、2つ以上のチップをスタックすることは困難であることを意味する。2つの4ビット長チップを相互にスタックすることは、DIMMの密度を倍にすることに留意すべきである。1つのスタックにおける3つ以上のDRAMに関連するシグナルインテグリティの問題は、スタッキング技術を用いて、1つのDIMMの密度を2倍以上にすることを困難にする。
【0067】
以下に述べるスタッキング技術を用いると、相応して4個、6個または8個のDRAMを相互にスタックすることにより、1つのDIMMの密度を4倍、6倍または8倍に増加させることが可能である。このことを遂行するために、1つのバッファチップが外部メモリチャネルと複数のDRAMチップとの間に設けられ、該バッファチップは、該DRAMチップへの及び該DRAMからのアドレス信号、制御信号及びデータ信号のうちの少なくとも1つをバッファリングする。一つの実施においては、スタックごとに1つのバッファチップを用いてもよい。他の実施においては、スタックごとに1つ以上のバッファチップを用いてもよい。さらに他の実施においては、複数のスタックに対して1つのバッファチップを用いてもよい。
【0068】
図17は、複数のメモリチップをスタックする一実施形態を説明するブロック図である。この実施形態の場合、バッファチップ1810は、ホストシステムに、典型的には、該ホストシステムのメモリコントローラに結合されている。メモリデバイス1800は、バッファチップ1810の背後にスタックされた少なくとも2つの高速メモリチップ1820(例えば、DDR2 SDRAM等のDRAM)を含む(例えば、高速メモリチップ1820は、バッファチップ1810によってアクセスされる)。
【0069】
図17に示す実施形態が、既に説明した図3に示す実施形態と同様であることは明らかである。主な違いは、図3に示すスキームにおいては、多重低速メモリチップが、高速インタフェースチップの上部にスタックされていることである。該高速インタフェースチップは、該ホストシステムに対して業界標準のインタフェース(例えば、DDR SDRAMまたはDDR2 SDRAM)を与え、該高速インタフェースチップと低速メモリチップとの間のインタフェースは規格外(すなわち、独自仕様)であってもよく、あるいは、業界標準に準拠していてもよい。一方、図17に示すスキームは、多重高速の在庫品DRAMを1つの高速バッファチップの上にスタックする。該バッファチップは、プロトコル変換を実行してもしなくてもよい(すなわち、該バッファチップは、外部メモリチャネル及び高速DRAMチップの両方に対して、DDR2等の業界標準のインタフェースを提供することができる)。さらに、該バッファチップは、該メモリチップが呈する電気的負荷(すなわち、該メモリチップの入力寄生成分)を該メモリチャネルから簡単に分離することができる。
【0070】
他の実施において、該バッファチップは、プロトコル変換を実行することができる。例えば、該バッファチップは、DDR3からDDR2への変換を実行することができる。この方式においては、多重DDR2 SDRAMチップを、該ホストシステムに対して1つ以上のDDR3 SDRAMチップとして見える可能性がある。また、該バッファチップは、プロトコルの1つのバージョンから同じプロトコルの別のバージョンに変換することもできる。この種の変換の例として、該バッファチップは、DDR2パラメータからなる1つのセットから、DDR2パラメータからなる異なるセットへ変換することができる。このように、該バッファチップは、例えば、あるタイプの1つ以上のDDR2チップ(例えば、4−4−4DDR2 SDRAM)を、該ホストシステムに対して、異なるタイプの2つ以上のDDR2チップ(例えば、6−6−6DDR2 SDRAM)として見せることができる。他の実施においては、1つのバッファチップを1つ以上のスタックによって共用してもよいことに留意されたい。また、該バッファチップは、該スタックの一部とするのではなく、該スタックに対して外付けとすることも可能である。また、2つ以上のバッファチップを1つのスタックと関連付けてもよい。
【0071】
バッファチップを用いて、高速DRAMの電気的負荷を該メモリチャネルから分離することは、多重(典型的には、2〜8個の)メモリチップを、1つのバッファチップの上にスタックすることを可能にする。一実施形態においては、1つのスタック内の全てのメモリチップは、同じアドレスバスに接続してもよい。別の実施形態においては、複数のアドレスバスを1つのスタック内のメモリチップに接続してもよく、この場合、各アドレスバスは、該スタック内の少なくとも1つのメモリチップに接続する。同様に、1つのスタック内の全てのメモリチップのデータ信号及びストローブ信号は、一実施形態において、同じデータバスに接続することができ、一方、別の実施形態においては、多重データバスを、1つのスタック内の該メモリチップのデータ信号及びストローブ信号に接続することができ、この場合、各メモリチップは、1つのデータバスにのみ接続し、各データバスは、該スタック内の少なくとも1つのメモリチップに接続する。
【0072】
このようにバッファチップを用いることは、第1の数のDRAMが、第2の数のうちの少なくとも1つのDRAMをシミュレートすることを可能にする。本説明の文脈の中で、該シミュレーションは、該システムに対して違って見える該DRAMの少なくとも1つの態様(例えば、この実施形態における数等)をもたらす何らかのシミュレーション、エミュレーション、偽装等を指す。異なる実施形態においては、該シミュレーションは、本質的に電気的、本質的に論理的とすることができ、および/または他の何らかの所望の方法で実行することができる。例えば、電気的シミュレーションのコンテキストにおいては、多重ピン、ワイヤ、信号等をシミュレートすることができ、一方、論理的シミュレーションのコンテキストにおいては、特定の機能をシミュレートすることができる。
【0073】
本実施形態のさらに追加の態様において、該第2の数は、該第1の数よりも大きくまたは小さくすることができる。さらに、後者の場合においては、該第2の数は、単一のDRAMがシミュレートされるように1とすることができる。本発明の様々な態様を利用することができる異なる任意の実施形態を、本明細書において以下に記載する。
【0074】
さらにまた他の実施形態において、該バッファチップは、該DRAMと、少なくとも1つのDRAMをシミュレートするシステムとを、複数のDRAMのうちの少なくとも1つの少なくとも1つの態様とは異なる少なくとも1つの態様とインタフェースするように作動させることができる。このような実施形態の様々な態様によれば、そのような態様は、信号、容量、タイミング、論理インタフェース等を含むことができる。該1つ以上のDRAMに関連するどのような態様も、上記の方法とは異なる方法でシミュレートすることができるため、当然、そのような態様の例は、単に例示を目的として記載されており、従って、限定するものとして解釈すべきではない。
【0075】
該信号の場合、そのような信号は、アドレス信号、制御信号、データ信号および/または他の何らかの信号を含むことができる。例えば、上述した多重信号は、より少ないかまたはより多い信号として見えるようにシミュレートすることができ、または、異なる種類に対応するようにシミュレートすることもできる。さらに他の実施形態においては、多重信号を組み合わせて、別の信号をシミュレートすることができる。さらに、信号がアサートされる時間の長さは、異なるようにシミュレートすることができる。
【0076】
容量の場合、これは、(DRAMの数の関数であってもなくてもよい)記憶容量を指すものとする。例えば、該バッファチップは、複数のDRAMのうちの少なくとも1つの第2の記憶容量よりも大きい(または、小さい)第1の記憶容量を有する少なくとも1つのDRAMをシミュレートするために動作可能にすることができる。
【0077】
該態様がタイミングに関連がある場合、該タイミングは、待ち時間(例えば、時間遅延等)に関連する可能性がある。本発明の一つの態様において、そのような待ち時間は、カラムアドレスストローブ(column address strobe;CAS)レイテンシー(column address strobe latency;tCAS)を含み得、これは、データのカラムにアクセスすることに関連する待ち時間を指す。さらに、該待ち時間は、tRCD(RAS(row address strobe)to CAS latency)を含み得、これは、RASとCASの間で必要な待ち時間を指す。さらに、該待ち時間は、tRP(row precharge latency)を含み、これは、開いた行に対するアクセスを終了するのに必要な待ち時間を指す。さらに、該待ち時間は、tRAS(active to precharge latency)を含み、これは、データ要求とプリチャージコマンドとの間のデータのある行にアクセスするのに必要な待ち時間を指す。いずれの場合においても、該バッファチップは、複数のDRAMのうちの少なくとも1つの第2の待ち時間よりも長い(または短い)第1の待ち時間を有する少なくとも1つのDRAMをシミュレートするために動作可能にすることができる。本実施形態の様々な特徴を利用する異なる任意の実施形態を以下に記載する。
【0078】
さらに別の実施形態において、バッファチップは、該システムから信号を受取って、ある遅延の後、その信号を複数のDRAMのうちの少なくとも1つに伝えるように動作可能にすることができる。ここでもまた、該信号は、アドレス信号、コマンド信号(例えば、起動コマンド信号、プリチャージコマンド信号、書き込み信号等)、データ信号、または、他の何らかの信号を指すものとする。様々な実施形態において、このような遅延は、固定することができ、または、変化する可能性もある。
【0079】
場合により、該遅延は、上述した信号のうちのいずれか1つまたはそれ以上に関連する累積遅延を含んでもよい。また、該遅延は、(他の信号に対して)間に合うように該信号を前後にタイムシフトすることができる。当然、そのような前後のタイムシフトは、大きさが等しくても等しくなくてもよい。一実施形態において、このタイムシフトは、それぞれが、異なる信号に対して異なる遅延を適用する複数の遅延関数を利用することによって遂行することができる。
【0080】
さらに、上述したバッファチップは、レジスタ、AMB(Advanced memory buffer)、少なくとも1つのDIMM上に配置された構成要素、メモリコントローラ等を含んでもよいことに留意すべきである。そのようなレジスタは、様々な実施形態において、JEDEC(Joint Electron Device Engineering Council;電子素子技術連合評議会)レジスタ、本明細書に記載されている1つ以上の機能を含むJEDECレジスタ、転送、格納および/またはバッファリング能力等を有するレジスタを含むことができる。様々な特徴を利用する異なる任意の実施形態を以下に記載する。
【0081】
様々な実施形態において、シミュレートしたDRAM回路が、所望のDRAM規格または他の設計仕様に従って作動するか否かを判断することが望ましい。多くのDRAM回路の動作が、JEDEC規格によって定められており、いくつかの実施形態においては、特定のJEDEC規格のDRAMを正確にシミュレートすることが望ましい。JEDEC規格は、DRAM回路が対応しなければならないコマンドと、そのようなコマンドの結果としてのDRAM回路の動作とを規定する。例えば、DDR2 DRAMのためのJEDEC仕様は、JESD79−2Bとして知られている。
【0082】
例えば、JEDEC規格に合っているか否かを判断することが望ましい場合、次のようなアルゴリズムを用いることができる。このようなアルゴリズムは、論理の形式的検証のためのソフトウェア検証ツールのセットを用いて、シミュレートしたDRAM回路のプロトコル動作が、所望の規格または他の設計仕様と同じであるかを確認する。この形式的検証は、DRAM規格に記載のDRAMプロトコルが典型的には、少数のプロトコルコマンド(例えば、JEDEC DDR2仕様の場合、約15のプロトコルコマンド)に限定されているため、問題なく実現可能である。
【0083】
上述したソフトウェア検証ツールの実例は、SYNOPSYSにより供給されるMAGELLAN、または、CADENCEにより供給されるINCISIVE等の他のソフトウェア検証ツール、JASPERにより供給される検証ツール、REAL INTENTにより供給されるVERIX、MENTOR CORPORATIONにより供給される0−IN等を含む。これらのソフトウェア検証ツールは、DRAMのプロトコル及び仕様によって規定されたルールに対応する書き込まれたアサーションを用いる。それらのアサーションはさらに、バッファチップのための論理記述を構成するコードに含まれている。シミュレートしたDRAM回路の所望の動作に対応するアサーションを書き込むことにより、所望の設計要件に合っているか否かを判断する裏付けを構築することができる。このようにして、1つの規格、多重規格または他の設計仕様への準拠性のために様々な実施形態をテストすることができる。
【0084】
例えば、アサーションは、2つのDRAM制御信号が、アドレスバス、制御バス及びクロックバスに対して同時に出せるようになっていないと書き込むことができる。当業者は、本明細書に記載された様々なバッファチップ及びDRAMスタック構成及びアドレスマッピングのうちのどれが適しているかを理解しているだろうが、上述したアルゴリズムは、設計者が、シミュレートしたDRAM回路が、所要の規格または他の設計仕様を厳密に合っていることを検証できるようにする。例えば、データのための共通バス及びアドレスのための共通バスを用いるアドレスマッピングが、所要の仕様に合わない制御バス及びクロックバスを生じる場合には、他のバス構成を有するバッファチップのための代替設計またはバッファチップと他の構成要素との間の配線のための代替設計を、所望の規格または他の設計仕様に対する準拠性のために用いてテストすることができる。
【0085】
該バッファチップは、業界標準のDRAMと同じ設置面積(例えば、DDR2 SDRAMの設置面積)(またはピン配列)を有するように設計することができる。該バッファチップの上にスタックされる高速DRAMチップは、業界標準のピン配列を有するか、または非標準のピン配列を有することができる。このことは、各スタックが、単一の業界標準DRAMチップと同じ設置面積を有するため、標準的なDIMM PCBを使用することを可能にする。いくつかの企業は、多重DRAMを相互にスタックする独自仕様の方法を開発している(例えば、Tessera,Inc.のμZ Ball Stack、Staktek Holdings,Inc.のHigh Performance Stakpak)。バッファチップ(図18)または高速インタフェースチップ(図3)のいずれかの背後に多重メモリチップをスタックする開示された技術は、メモリチップをスタックする全ての異なる方法に適合する。この方法はいかなる特定のスタッキング技術も必要としない。
【0086】
両面DIMM(すなわち、PCBの両面にメモリチップがあるDIMM)は、特に、高速データ及びストローブ信号が、該基板の各面に1つずつある2つのDRAMへ送られなければならない場合には、片面DIMMよりも電気的に分が悪い。これは、データ信号が、各ブランチが基板の両面のDRAMで終端している、該DIMM上の2つのブランチ(すなわち、T字型トポロジー)に分かれなければならないことを意味する。T字型トポロジーは典型的には、シグナルインテグリティの観点から、ニ地点間トポロジーよりも分が悪い。Rambus社は、高速信号がT字型トポロジーではなくニ地点間トポロジーを有するように、両面RIMM(Rambus In−line Memory Module)にミラーパッケージを用いた。このことは、主に品揃えの関係で、DRAMメーカーによって広く採用されてはいない。本開示において、該バッファチップは、業界標準のDIMNピン配列及びミラーピン配列を用いて設計することができる。該バッファチップの背後にスタックされるDRAMチップは、該バッファチップが業界標準のピン配列またはミラードピン配列を有するかどうかに関わらず、共通の業界標準ピン配列を有することができる。このことは、ミラードパッケージを用いて、それぞれをスタックすると共に、在庫品のDRAMチップを用いることによって、高速及び高容量の両面DIMMを形成することを可能にする。業界標準のDRAM PCBは全て、該PCBの両面で標準的な(すなわち、非ミラード)DRAMパッケージに適応するように設計されるため、当然、このことは、非標準DIMM PCBの使用を要する。
【0087】
別の態様においては、該バッファチップは、スタックされたメモリチップの電気的負荷をメモリチャネルから分離するだけではなく、メモリスペアリング、メモリミラーリング及びメモリRAID等の冗長性を提供する能力を有するように設計することができる。このことは、業界標準のメモリモジュールと同じ設置面積(すなわち、ピン互換性)を有するだけではなく、全ての冗長性を提供する高密度DIMMを形成することを可能にする。この能力は、DIMMスロット(または、コネクタ)の数が、サーバマザーボードのスモールフォームファクタによって制約されるブレードサーバ及び1Uラックサーバセグメント等のサーバ市場のキーセグメントにとって重要である。多くのアナリストが、該セグメントが、サーバ市場における最も急成長しているセグメントになると予測している。
【0088】
メモリスペアリングは、(p+q)個の高速メモリチップと1つのバッファチップとからなる1つ以上のスタックで実施することができる。各スタックのp個のメモリチップは、作業プールに割当てられており、オペレーティングシステム(OS)及びアプリケーションソフトウェア等のシステムリソースに利用できる。該メモリコントローラ(または場合により、AMB)が、該スタックの作業プール内のメモリチップのうちの1つが、例えば、訂正不可能なマルチビットエラーを生成したこと、または、所定のしきい値を超える訂正可能なエラーを生成したことを検知した場合、該メモリコントローラは、その不良チップを、該スペアプール内に置かれているq個のチップのうちの1つと置き換えることを選択することができる。前述のとおり、該メモリコントローラは、1つの特定のスタック内の1つの作業チップのみがエラー条件を引き起こした場合でも、ランク内の全てのスタックに対してスペアリングを行うことを選択することができ、または、エラー条件を引き起こした特定のスタックのみに、このスペアリング操作を限定することを選択してもよい。前者の方法は、メモリコントローラの観点から実施するのがより簡単であり、一方、後者の方法は、より耐障害性がある。1つの高速インタフェースチップと多重低速DRAMとで形成されたスタックの場合のメモリスペアリングを図8に示す。同じ方法を、複数の高速の在庫品DRAMと、1つのバッファチップとで形成されたスタックに適用することができる。他の実施においては、該バッファチップは、該スタックの一部ではなくてもよい。さらに他の実施においては、1つのバッファチップを、メモリチップからなる複数のスタックと共に用いることができ、または、複数のバッファチップを、メモリチップからなる単一のスタックによって使用することができる。
【0089】
メモリミラーリングは、1つのスタック内の複数の高速メモリチップを、2つの等しいセット、すなわち、作業セットとミラードセットとに分割することによって実施することができる。該メモリコントローラがデータを該メモリに書き込む場合、該バッファチップは、該データを、該作業セット及びミラードセットの両方における同じ記憶位置に書き込む。読み取りの間、該バッファチップは、該作業セットからデータを戻す。戻されたデータが訂正不可能なエラー条件を有していた場合、または、戻されたデータにおける累積訂正可能エラーが所定のしきい値を超えた場合には、該メモリコントローラは、その時点から、該作業セットにおけるエラー条件が修正されるまで、該ミラードセットから(メモリ読み取り上の)データを戻すように該バッファチップに命令することができる。該バッファチップは、該作業セット及びミラードセットの両方に書き込みを送り続けることができ、または、書き込みを該ミラードセットのみに限定してもよい。上述したように、該メモリミラーリング動作は、ランク内の全てのメモリスタックに対して同時に引き起こすことができ、または、場合により、スタックごとに行ってもよい。前者の方法は、実施するのがより容易であり、一方、後者の方法は、耐障害性を与える。1つの高速インタフェースチップと、多重低速メモリチップとで形成されたスタックの場合のメモリミラーリングを図9に示す。同じ方法を、複数の高速の在庫品DRAMと1つのバッファチップとで形成されたスタックに適用することができる。他の実施においては、該バッファチップは、該スタックの一部ではなくてもよい。さらに他の実施形態においては、1つのバッファチップを、メモリチップからなる複数のスタックと共に用いることができ、または、複数のバッファチップを、メモリチップからなる単一のスタックによって使用することができる。
【0090】
1つのスタック内でメモリミラーリングを実施することは、スタックに関連するバッファチップの故障からは保護されないという1つの欠点を有している。この場合、該メモリ内のデータは、1つのスタック内の異なる2つのメモリチップにミラーリングされるが、それら2つのチップは両方とも、共通の関連するバッファチップを介してホストシステムに情報を伝えなければならない。従って、あるスタック内のバッファチップが故障した場合、ミラードメモリの能力は無効になる。この問題を解決するための1つの方法は、該作業セット内の全てのチップを1つのスタックにグループ化するとともに、該ミラードセット内の全てのチップを別のスタックにグループ化することである。この場合、該作業スタックは、該DIMM PCBの一方の面にあり、該ミラードスタックは、該DIMM PCBの他方の面にあるとすることができる。従って、該作業スタック内のバッファチップが故障した場合、該メモリコントローラは、該PCBの該他方の面のミラードスタックにスイッチすることができる。
【0091】
該作業セットからミラードセットへのスイッチは、バンド内信号またはサイドバンド信号を、それぞれのスタック内のバッファへ送るメモリコントローラ(またはAMB)によって引き起こすことができる。別法として、それらのバッファ自体が、該作業セットからミラードセットへスイッチする能力を有するように、論理を該バッファに付加してもよい。例えば、Intel社のサーバメモリコントローラハブ(memory controller hub;MCH)のうちのいくつかは、該MCHが、当該記憶位置の最初の読み取りで訂正不可能なエラーを検知した場合、2度目のための記憶位置を読み取ることになる。該バッファチップは、最後のm個の読み取りのアドレスのトラックを保持し、かつ現在の読み取りのアドレスを、格納されているm個のアドレスと比較するように設計することができる。該バッファチップがこの一致を検知した場合、最も有効なシナリオは、該MCHがリードバックされた該データ内の訂正不可能なエラーを検地し、問題になっている記憶位置に対して2度目の読み取りを試みることである。この場合、該バッファチップは、該作業セット内の対応する記憶位置における内容がエラーを有していることを知っているため、該ミラードセットから該記憶位置の内容を読出すことができる。また、該バッファチップは、ある期間、このようなイベント(すなわち、訂正不可能なエラーによる記憶場所に対する2度目の読み取り)の数のトラックを保持するように設計することもできる。それらのイベントの数が、変化する時間窓で、あるしきい値を超えた場合には、該バッファチップは、該ミラードセットへ恒久的にスイッチし、該作業セットの機能が無効になっていたことを外部デバイスに知らせる。
【0092】
高速の在庫品DRAMからなる1つのスタック内でメモリRAIDを実施することは、非標準DRAMからなるスタック内でメモリRAIDを実施することよりも難しい。その理由は、現在の高速DRAMが、各読出しまたは書き込みアクセスのそれぞれに対して、一定量の情報を該DRAMから読出し、または該DRAMに書き込む必要がある最小バースト長を有するためである。例えば、nビット長のDDR2 SDRAMは、4という最小バースト長を有し、このことは、読み取りまたは書き込み動作ごとに、4nビットを該DRAMから読出し、または該DRAMに書き込まなければならないことを意味する。例示目的のため、以下の議論は、複数のスタックを形成するのに用いられる全てのDRAMが、8ビット長のDDR2 SDRAMであり、各スタックが専用バッファチップを有すると仮定する。
【0093】
該スタックを形成するのに8ビット長のDDR2 SDRAMを用いると仮定すると、8個のスタックがメモリランクごとに必要になる(ECCに必要な9番目のスタックを無視する)。DDR2 SDRAMは、4という最小バースト長を有するため、単一の読み取りまたは書き込み動作は、該メモリコントローラと1つのスタックとの間で、4バイトのデータを転送することを必要とする。このことは、該メモリコントローラが、各読出しまたは書き込み動作に対して、最小限32バイトのデータ(8個のスタックの場合、スタックごとに4バイト)をメモリランクへ転送しなければならないことを意味する。現在のCPUは典型的には、64バイトのキャッシュラインを、該システムメモリへのデータ転送、および該システムメモリからのデータ転送の基本単位として用いる。このことは、読出しまたは書き込み動作に対して、8バイトのデータを該メモリコントローラと各スタックとの間で転送することができることを意味する。
【0094】
1つのスタック内でメモリRAIDを実施するために、3個の8ビット長DDR2 SDRAMと、1つのバッファチップとを含むスタックを形成することができる。1つのスタック内の3つのDRAMをチップA、チップB及びチップCとする。該メモリコントローラが、ランク内の各スタックに対して、8バイトのバースト書込みを実行する(すなわち、該メモリコントローラは、64バイトのデータ、すなわち1つのキャッシュラインを全ランクに送る)メモリ書込み動作の場合を考察する。該バッファチップは、最初の4バイト(例えば、バイトZ0、Z1、Z2及びZ3)をチップA内の特定の記憶位置に書き込み、次の4バイト(例えば、バイトZ4、Z5、Z6及びZ7)を、チップBの同じ記憶位置(すなわち、アドレスx1、x2、x3及びx4)に書き込むように設計されてもよい。また、該バッファチップは、これらの8バイトに相当するパリティ情報をチップC内の同じ記憶位置に格納するように設計することもできる。すなわち、該バッファチップは、P[0,4]=Z0^Z4をチップCのアドレスx1に格納し、P[1,5]=Z1^Z5をチップCのアドレスx2に格納し、P[2,6]=Z2^Z6をチップCのアドレスx3に格納し、P[3,7]=Z3^Z7をチップCのアドレスx4に格納する。ただし、^は、ビット排他論理和演算子である。従って、例えば、P[0,4]の最下位ビット(ビット0)は、Z0及びZ4の最下位ビットの排他論理和であり、P[0,4]のビット1は、Z0のビット1とZ4のビット1の排他論理和であり、以下同様である。他のストライピング方法を用いることもできることに留意されたい。例えば、該バッファチップは、バイトZ0、Z2、Z4及びZ6をチップAに、バイトZ1、Z3、Z5及びZ7をチップBに格納してもよい。
【0095】
ここで、該メモリコントローラが同じキャッシュをリードバックする場合、該バッファチップは、チップA及びチップBの両方における記憶位置x1、x2、x3及びx4を読出し、チップAからバイトZ0、Z1、Z2及びZ3を戻した後、チップBからバイトZ4、Z5、Z6及びZ7を戻す。ここで、該メモリコントローラが、バイトZ1内にマルチビットエラーを検知したと仮定する。前述のように、Intel社のサーバMCHのうちのいくつかは、最初の読出しコマンドに応答して戻されたデータ内に訂正不可能なエラーを検知した場合、アドレス記憶位置を再び読み出す。従って、該メモリコントローラが、バイトZ1に対応するアドレス記憶位置を再び読み出す場合、該バッファチップは、該メモリコントローラが、訂正不可能なエラーをZ1内で検知したことを知っているため、2番目の読出しを検知して、Z1ではなくP[1,5]^Z5のビット排他論理和を戻すように設計することができる。
【0096】
訂正不可能なエラーの検知後の該メモリコントローラの動作は、該バッファチップのエラー回復動作に影響を及ぼす可能性がある。例えば、該メモリコントローラが、訂正不可能なエラーの発生時に、キャッシュライン全体をリードバックするが不良なバイトでスタートするバーストを要求する場合には、適切なカラムアドレスを参照して、どのバイトが該訂正不可能なエラーに相当するかを判断するように該バッファチップを設計することができる。例えば、Z1が訂正不可能なエラーに相当し、該メモリコントローラは、該スタックが、バイトZ1から続けて、8バイト(Z0〜Z7)を該コントローラへ送り戻すことを要求すると仮定する。換言すれば、該メモリコントローラは、Z1、Z2、Z3、Z0、Z5、Z6、Z7及びZ4の順番で、この8バイトを送り戻すように該スタックに求める(すなわち、バースト長=8、バーストタイプ=シーケンシャル、およびスタートカラムアドレスA[2:0]=001b)。該バッファチップは、このことが、バイトZ1が、訂正不可能なエラーに相当し、P[1,5]^Z5、Z2、Z3、Z0、Z5、Z6、Z7及びZ4を戻すことを示すことを認識するように設計することができる。別法として、該バッファチップは、いずれかの所与のバイト内の訂正不可能なエラーだけではなく、チップ全体(この場合、チップA)が故障した場合も訂正することが好ましい場合は、P[1,5]^Z5、P[2,6]^Z6、P[3,7]^Z7、P[0,4]^Z4、Z5、Z6、Z7及びZ4を戻すように設計することもできる。一方、該メモリコントローラが、通常の読出し動作中および訂正不可能なエラーによって引き起こされる2番目の読出し中と同じ順序で、キャッシュライン全体を読み出す場合には、該コントローラは、該2番目の読出しを実行する前または最中に、該バッファチップに対して、バンド内信号を介して、または、サイドバンド信号を介して、どのバイトまたはチップが該訂正不可能なエラーに相当するかを知らせなければならない。
【0097】
しかし、該メモリコントローラが、(単一のバースト長8ではなく)2つの別々のバースト長4で、64バイトキャッシュラインの読出しまたは書き込みを行う可能性もある。これは、I/Oデバイスがメモリアクセスを開始する場合である可能性もある。また、これは、64バイトキャッシュラインが、2つのDIMMに並列に格納される場合である可能性もある。このような場合、メモリRAIDの実施は、DM(Data Mask)信号の使用を要する可能性がある。ここでもまた、3個の8ビット長DDR2 SDRAMと、1つのバッファチップとで形成されている3チップスタックの場合を考察する。メモリRAIDは、1つのスタックに書き込まれる4バイトのデータが、2つのメモリチップに対してストライピングされると共に(すなわち、2バイトが各メモリチップに書き込まれる)、パリティが演算されて、第3のメモリチップに格納されることを要する。しかし、該DDR2 SDRAMは、最小バースト長4を有し、これは、転送するように設計されている最小データ量が4バイトであることを意味する。これらの両要件を満たすために、該バッファチップは、該DM信号を用いて、1つのバースト内の4つのバイトのうちの2つをチップAに導き、かつ1つのバースト内の他の2つのバイトをチップBに導くように設計することができる。この概念は、以下の例によって最もうまく説明される。
【0098】
該メモリコントローラは、メモリランクに対して32バイトの書き込みを行う場合に、バイトZ0、Z1、Z2及びZ3を特定のスタックに送り、関連するアドレスがx1、x2、x3及びx4であるとする。この例における該スタックは、3個の8ビットDDR2 SDRAM(チップA、チップB及びチップC)と、1つのバッファチップとで構成されている。該バッファチップは、3つ全てのチップA、B及びC上の記憶場所x1、x2、x3及びx4に書き込みコマンドを生成し、以下の動作を実行するように設計することができる。
・Z0及びZ2をチップAに書き込み、チップAに対するZ1及びZ3の書き込みをマスクする。
・Z1及びZ3をチップBに書き込み、チップBに対するZ0及びZ2の書き込みをマスクする。
・(Z0^Z1)及び(Z2^Z3)をチップCに書き込み、他の2つの書き込みをマスクする。
【0099】
このことは当然、該バッファチップが、メモリRAIDの実施の詳細を該メモリコントローラから隠すために、単純なアドレス変換を行う能力を有することを要する。図18は、8ビット長のDDR2 SDRAMから構成される3つのチップスタックにデータマスク(DM)信号を用いてメモリRAIDを実施するタイミング図である。図18のタイミング図の第1の信号は、ホストシステムから該スタックに送られたデータを表す。DQ_A及びDM_Aという符号が付けられた第2及び第3の信号は、チップAに対する書き込み動作中に、該バッファチップによってチップAに送られたデータ信号及びデータマスク信号を表す。同様に、信号DQ_B及びDM_Bは、チップBに対する書き込み動作中に、該バッファチップによってチップBに送られた信号を表し、信号DQ_C及びDM_Cは、チップCに対する書き込み動作中に、該バッファチップによってチップCへ送られた信号を表す。
【0100】
ここで、該メモリコントローラが、該スタックからバイトZ0、Z1、Z2及びZ3をリードバックする場合、該バッファチップは、チップA及びチップBの両方から記憶場所x1、x2、x3及びx4を読出し、各チップによって戻された4つのバイトから適切な2つのバイトを選択し、元のデータを再構成し、再構成したデータを該メモリコントローラへ戻す。2つのチップに対するデータストライピングは、他の方法で行ってもよいことに留意すべきである。例えば、バイトZ0及びZ1をチップAに書き込み、バイトZ2及びZ3をチップBに書き込んでもよい。また、この概念は、異なる数のチップで形成されているスタックに拡大適用することもできる。例えば、5個の8ビット長DDR2 SDRAMチップと、1つのバッファチップとで形成されたスタックの場合、1つのスタックに対する4バイトバーストは、各チップに対して1つのバイトを書き込み、DM信号を用いて、該バースト内の残りの3つの書き込みをマスクすることにより、4つのチップに対してストライピングすることができる。パリティ情報は、ここでもまた、関連するDM信号を用いて、第5のチップに格納することができる。
【0101】
前述のように、該メモリコントローラ(または、AMB)が、リードバックされたデータ内に訂正不可能なエラーを検知する場合、該バッファチップは、他のチップ内のデータならびにパリティ情報を用いて、不良データを再構成するように設計することができる。該バッファチップは、該メモリコントローラによって、そうすることを明確に命令された場合、または、該メモリコントローラによって送られた読出し要求をモニタリングし、ある期間中に、同じアドレスに対する多重読出しを検知することにより、あるいは、他のいくつかの手段によって、この動作を実行することができる。
【0102】
メモリRAIDにおける他のメモリチップからのデータ及びパリティデータを用いて、不良データを再構成することは、ある追加の時間を必要とする。すなわち、該バッファチップが該不良データを再構成しなければならない場合のメモリ読出し待ち時間は、通常の読出し待ち時間よりも大きい可能性が大いにある。このことは、多くの方法で適応させることができる。通常の読出し待ち時間が4クロックサイクルであり、該バッファチップが不良データを再形成しなければならない場合の読出し待ち時間を5クロックサイクルとする。該メモリコントローラは、単純に、全ての読出し動作に対して、5クロックサイクルを読出し待ち時間として用いることを選択してもよい。別法として、該コントローラは、全ての通常の読出し動作に対して、4クロックサイクルをデフォルト値とするが、該バッファチップがデータを再形成しなければならない場合には、5クロックサイクルに切り替えてもよい。該バッファチップには、データの一部を再形成しなければならない場合に、該メモリコントローラを機能停止させるという別の選択もある。これら及び他の方法は、本開示の範囲に含まれる。
【0103】
上述したように、1つのスタック内での複数のメモリチップと1つのバッファチップの組合せを用いてメモリRAIDを実施することができる。このことは、単一のメモリチップ内で、または、ランク内の多重メモリチップに対して、マルチビットエラーを訂正する能力を与える。しかし、追加のメモリチップを該スタックに付加することにより、追加のレベルの冗長性を生成することができる。すなわち、該メモリRAIDがn個のチップに対して実施される場合(この場合、データは、(n−1)個のチップに対してストライピングされ、パリティがn番目のチップに格納される)、少なくとも(n+1)個のメモリチップによって該スタックを形成することにより、別のレベルの冗長性を生成することができる。例示目的のため、2つのメモリチップ(例えば、チップA及びチップB)に対してデータをストライピングすることを望んでいると仮定する。この場合、パリティ情報を格納するために、第3のチップ(例えば、チップC)が必要である。第4のチップ(チップD)を該スタックに追加することにより、追加のレベルの冗長性を生成することができる。チップBが故障し、または、容認できないレベルの訂正不可能なエラーを生成していると仮定する。該スタック内のバッファチップは、周知のディスクRAIDシステムで用いられているのと同様の様態で、チップA内のデータと、チップC内のパリティ情報とを用いて、チップB内のデータを再構成することができる。該メモリシステムのパフォーマンスは、チップBが有効に置き換えられるまで、(チップB内のデータの再形成に関連する潜在的な長い待ち時間により)明らかに劣化する可能性がある。しかし、該スタック(チップD)内に未使用のメモリチップを有するため、次のメンテナンス操作まで、チップBの代わりに該未使用のメモリチップを用いることができる。該バッファチップは、(チップA内のデータと、チップC内のパリティ情報とを用いて)チップB内のデータを再形成して、該再形成したデータをチップDに書き込むように設計することができる。一旦、このことが完了すると、チップBは、廃棄することができる(すなわち、もはや該バッファチップによって使用されない)。チップB内でのデータの再形成および該再形成されたデータのチップDへの転送は、バックグランドで(すなわち、チップA、チップB、チップC及びチップDを含むランクが用いられないときのサイクル中に)実行するように行うことができる。または、チップDへの該転送は、データ回復動作のために、該メモリコントローラによって明確にスケジューリングされているサイクル中に実行することができる。
【0104】
メモリスペアリング、メモリミラーリング及びメモリRAID等のより高いレベルのメモリ保護を実施するのに必要な論理は、各スタックに関連するバッファチップに組込むことができる。または、該論理は、「より包括的な」バッファチップ(すなわち、個々のスタックに関連するデータビットよりも多くのデータビットをバッファリングするバッファチップ)内で実施することができる。例えば、この論理は、AMBに組込むことができる。この変形例も本開示の範囲に含まれる。
【0105】
ソケットからなる手段を用いて、高速インタフェースの背後に、追加の低速メモリチップを付加する方法を開示した。同じコンセプト(図12、図13、図14及び図15参照)は、バッファチップの背後に、高速の在庫品DRAMチップをスタックすることにも適用可能である。このことも本発明の範囲に含まれる。
【0106】
本発明を具体的な例示的実施形態に関して説明してきたが、当業者には、本発明の精神及び範囲から逸脱することなく、様々な変更及び修正を行えることが正しく認識される。
【関連出願の相互参照】
【0001】
本特許出願は、2005年9月2日に出願された“Methods and Apparatus of Stacking DRAMs”という発明の名称の米国仮特許出願第60/713,815号に対する利益を主張する。
【技術分野】
【0002】
本発明は、幅広いマーケットに対してコスト効率のいいカスタムメモリシステムを構築するという分野に関連する。
【背景技術】
【0003】
ダイナミックランダムアクセスメモリ(DRAM)は、最もポピュラーなタイプの揮発性メモリであり、多くの異なるマーケットで幅広く用いられている。DRAMの人気は、大部分はコストパフォーマンス(Mb/$)によるものである。PCのメインメモリ市場は、DRAMの最大の消費者である。
【0004】
いくつかの重要なマーケットにおけるDRAMインタフェース速度は、急激に増加している。例えば、現在のPC市場は、667MHzのDDR2 SDRAMを使用する。当業界は、2006年に、800MHzのDDR2 SDRAMを使用する方向に向かっている。また、800MHz〜1600MHzのインタフェース速度を有すると期待されているDDR3 SDRAMを開発する努力も進行中である。
【0005】
シグナルインテグリティは、インタフェース速度が増すにつれて、ますます困難になってきている。高速においては、クリーンな信号を確保するために、1つのメモリチャネルに対する負荷の数を減らさなければならない。例えば、PCデスクトップセグメントが133MHzのSDRAMを使用した場合、バッファリングされていないモジュールを使用した場合には、メモリチャネル(または、バスあるいはインタフェース)当たり3DIMMスロットが標準的である。この市場区分がDDR SDRAMや現在のDDR2 SDRAMを採用した場合、メモリチャネル当たりのDIMMスロットの数は、2に落ちる。DDR3速度においては、メモリチャネル当たりたった1DIMMスロットが可能であることが予測される。このことは、明らかに、システムの最大記憶容量に対して上限を設けることになる。
【0006】
コスト効率が良く、かつ現在及び将来の標準規格と互換性があり、シグナルインテグリティのような様々な技術的問題を解決する様態でシステムの記憶容量を増加させる発明に対する要求が明確にある。
【発明の概要】
【0007】
一実施形態において、大容量メモリシステムが、スタックドメモリ集積回路またはチップを用いて構成される。該スタックドメモリチップは、シグナルインテグリティのような問題をなくすと共に、現在及び将来のメモリ標準規格にも合うように構成される。
【図面の簡単な説明】
【0008】
【図1】FB−DIMMの場合の一実施形態を示す図である。
【図2a】メモリコントローラと2つのFB−DIMMとの間の待ち時間を説明する注釈の付いた、図1のFB−DIMMを含む図である。
【図2b】各スタックが2つのDRAMを含む、DRAMスタックを有するFB−DIMMにアクセスする際の待ち時間を示す図である。
【図3】多重メモリコアチップを含むメモリデバイスの一実施形態を示すブロック図である。
【図4】高速DRAMデバイスを非同期メモリコアチップとインタフェースチップとに区分する一実施形態を示すブロック図である。
【図5】メモリデバイスを同期メモリチップとデータインタフェースチップとに区分する一実施形態を示すブロック図である。
【図6】スタックドメモリチップの場合の一実施形態を示す図である。
【図7】メモリデバイスとDDR2のメモリバスをインタフェースする一実施形態を示すブロック図である。
【図8a】1つのDIMMモジュール上にメモリチップをスタックする一実施形態を示すブロック図である。
【図8b】メモリチップをメモリスペアリングでスタックする一実施形態を示すブロック図である。
【図8c】スタックメモリの作業プールの動作を示すブロック図である。
【図8d】スタックドメモリチップに対してメモリスペアリングを実施する一実施形態を示すブロック図である。
【図8e】スタックごとにメモリスペアリングを実施する一実施形態を示すブロック図である。
【図9a】一実施形態によるメモリミラーリングを説明するブロック図である。
【図9b】メモリミラーリングを可能にする記憶装置の場合の一実施形態を説明するブロック図である。
【図9c】メモリのスタックを有するミラードメモリシステムの場合の一実施形態を説明するブロック図である。
【図9d】全てのDIMMのスタックに対する同時メモリミラーリングを可能にする一実施形態を説明するブロック図である。
【図9e】スタックごとのメモリミラーリングを可能にする一実施形態を説明するブロック図である。
【図10a】書き込み動作中のメモリRAID機能を有するメモリチップのスタックを説明するブロック図である。
【図10b】読み出し動作中のメモリRAID機能を有するメモリチップのスタックを説明するブロック図である。
【図11】DRAMを高速メモリバスに追加した結果としての従来のインピーダンス負荷を示す。
【図12】一実施形態による、DRAMを高速メモリバスに追加した結果としてのインピーダンス負荷を示す。
【図13】ソケットを用いて低速メモリチップを追加する一実施形態を説明するブロック図である。
【図14】スタックの上部にソケットを配置したPCBを示す。
【図15】スタックの反対側にソケットを配置したPCBを示す。
【図16】1つ以上のメモリチップを収容できるアップグレードPCBを示す。
【図17】メモリチップをスタックする一実施形態を説明するブロック図である。
【図18】8ビット長のDDR2 SDRAMSで構成された3チップスタック内でデータマスク(「DM」)信号を用いてメモリRAIDを実施するタイミング図である。
【発明を実施するための形態】
【0009】
2005年9月2日に提出された“Methods and Apparatus of Stacking DRAMs”という発明の名称の米国仮特許出願第60/713,815号の開示は参照により本明細書に組み込まれる。
【0010】
大記憶容量を必要とするサーバやワークステーション等の市場区分がある。大記憶容量を可能にする1つの方法は、DRAMが、AMB(Advanced Memory Buffer)によってメモリチャネルから電気的に絶縁されているFB−DIMM(Fully Buffered DIMM)を用いることである。FB−DIMMソリューションは、サーバ及びワークステーションの市場区分で用いられることが期待されている。AMBは、メモリチャネルとDRAMの間のブリッジとして機能し、また、リピータとしても機能する。このことは、メモリチャネルが常に二地点間接続であることを実現する。図1は、FB−DIMMを有するメモリチャネルの一実施形態を示す。FB−DIMM100及び150は、DRAMチップ(110及び160)と、AMB120及び170とを含む。高速双方向リンク135は、メモリコントローラ130をFB−DIMM100に結合する。同様に、FB−DIMM100は、高速双方向リンク140を介してFB−DIMM150に結合されている。追加のFB−DIMMを同様の様態で追加してもよい。
【0011】
このFB−DIMMソリューションは、いくつかの欠点を有しており、主な2つの欠点は、高コストと長い待ち時間(すなわち、低パフォーマンス)である。各AMBは、10ドル〜15ドルの費用がかかり、これは、メモリモジュールコストのかなりの割合を占める。加えて、各AMBは、かなりの量の待ち時間(〜5ns)を導入する。そのため、より多くのFB−DIMMを追加することによって、システムの記憶容量が増加するにつれて、該システムのパフォーマンスは、一連のAMBの待ち時間によって低下する。
【0012】
記憶容量を増加させる代わりの方法は、DRAMを相互にスタックすることである。このことは、追加の分散型負荷を追加することなく、システムの総記憶容量を増加させる(その代わりに、電気的負荷は、ほぼ単一箇所に追加される)。また、多重FB−DIMMを、スタックDRAMを含む単一のFB−DIMMと置き換えることができるため、DRAMを相互にスタックすることは、AMBのパフォーマンスインパクトを低減する。図2aは、メモリコントローラと2つのFB−DIMMとの間の待ち時間を説明する注釈の付いた図1のFB−DIMMを含む。メモリコントローラ130とFB−DIMM100の間の待ち時間は、t1とtc1の合計である。ただし、t1は、AMB120のメモリチャネルインタフェースと、AMB120のDRAMインタフェースとの間の遅延時間(すなわち、ブリッジとして機能する場合のAMB120を介した遅延時間)であり、tc1は、メモリコントローラ130とFB−DIMM100との間の信号伝播遅延時間である。t1は、AMB120を通るアドレス又は制御信号の遅延時間と、場合により、AMB120を通るデータ信号の遅延時間とを含むことに留意されたい。また、tc1は、メモリコントローラ130からFB−DIMM100への信号の伝播遅延時間と、場合により、FB−DIMM100からメモリコントローラ130への信号の伝播遅延時間とを含む。図2aに示すように、メモリコントローラ130とFB−DIMM150の間の待ち時間は、t2+t1+tc1+tc2の合計であり、ただし、t2は、AMB120の入力メモリチャネルインタフェースと出力メモリチャネルインタフェースとの間の遅延時間であり(すなわち、AMB120がリピータとして機能している場合)、tc2は、FB−DIMM100とFB−DIMM150との間の信号伝播遅延時間である。t2は、AMB120を介したメモリコントローラ130からFB−DIMM150への信号の遅延時間と、場合により、AMB120を介したFB−DIMM150からメモリコントローラ130への信号の遅延時間とを含む。同様に、tc2は、FB−DIMM100からFB−DIMM150への信号の伝播遅延時間と、場合により、FB−DIMM150からFB−DIMM100への信号の伝播遅延時間とを表す。t1は、ブリッジとして機能しているAMBチップを通る信号の遅延時間を表す。ブリッジは、この場合には、AMB170である。
【0013】
図2bは、DRAMスタックを有するFB−DIMMにアクセスする際の待ち時間を示す。ただし、各スタックは、2つのDRAMを含む。いくつかの実施形態において、「スタック」は、少なくとも1つのDRAMチップを備える。他の実施形態において、「スタック」は、少なくとも1つのDRAMチップを有するインタフェースまたはバッファチップを備える。FB−DIMM210は、3つのDRAMスタック(220、230及び240)と、メモリコントローラ200によってアクセスされるAMB250とを含む。図2bに示すように、これらのDRAMのスタックにアクセスするための待ち時間は、t1とtc1の合計である。該待ち時間は、2つの標準的なFB−DIMM(すなわち、個々のDRAMを有するFB−DIMM)を有するメモリチャネルにおける待ち時間よりも、2−DRAMスタックを含むFB−DIMMを有するメモリチャネルにおける待ち時間の方が少ないことが図2a及び図2bを見て分かる。図2bは、2つの標準的なFB−DIMMと、2−DRAMスタックを用いるFB−DIMMとを比較した場合を示すことに留意されたい。しかし、このことは、n個の標準的なFB−DIMMと、n−DRAMスタックを用いるFB−DIMMとの比較の場合にも拡大適用することができる。
【0014】
高速DRAMを相互にスタックすることは、それ自体の課題を有する。高速DRAMがスタックされるにつれて、それぞれの電気的負荷または入力寄生成分(入力キャパシタンス、入力インダクタンス等)が合算されて、シグナルインテグリティ及び電気的負荷の問題を引き起こして、スタックが作動することのできる最大インタフェース速度を制限する。加えて、ソース同期ストローブ信号の使用は、高速DRAMをスタックする場合に、さらなる複雑性を導入する。
【0015】
低速DRAMを相互にスタックすることは、高速DRAMを相互にスタックすることよりも容易である。高速DRAMの詳しい研究は、該高速DRAMが、低速メモリコアと高速インタフェースとからなることを示している。従って、高速DRAMを2つのチップ、すなわち、低速メモリチップと高速インタフェースチップとに分けることができる場合、単一の高速インタフェースチップの背後に多重低速メモリチップをスタックすることができる。図3は、多重メモリコアチップを含むメモリデバイスの一実施形態を説明するブロック図である。メモリデバイス320は、1つの高速インタフェースチップ300と、高速インタフェースチップ300の背後にスタックされた複数の低速メモリチップ310とを含む。区分化する1つの方法は、高速DRAMを、低速でワイドな非同期メモリコアと、高速インタフェースチップとに分けることである。図4は、高速DRAMデバイスを非同期メモリコアとインタフェースチップとに区分する一実施形態を説明するブロック図である。メモリデバイス400は、インタフェースチップ410を介してメモリチャネルへインタフェースされる非同期メモリコアチップ420を含む。図4に示すように、インタフェースチップ410は、アドレス430、コマンド440及び外部データバスからのデータ460を受取り、アドレス435、コマンド及び制御445及び450、並びに内部データバスを通じたデータ465を用いて、非同期メモリコアチップ420と情報をやりとりする。
【0016】
しかし、いくつかの他の区分けも可能であることに留意しなければならない。例えば、高速DRAMのアドレスバスは、典型的には、データバスよりも低速で作動する。DDR400 DDR SDRAMの場合、アドレスバスが200MHzの速度で作動すると共に、データバスが400MHzの速度で作動する。一方、DDR2−800DDR2 SDRAMの場合、アドレスバスは400MHzの速度で作動し、データバスは800MHzで作動する。高速DRAMは、高データレートをサポートするために、プリフェッチを利用する。従って、各読出しまたは書き込み動作の場合に、4nデータビットがメモリコアからアクセスされることを除いて、DDR2−800デバイスは、内部で200MHzに等しいレートで作動し、ただし、nは、外部データバスの幅である。4n内部データビットは、n外部データピンに多重化又は逆多重化され、このことは、外部データピンが、200MHzの内部データレートの4倍で作動することを可能にする。
【0017】
このため、例えば、高速nビット長DDR2 SDRAMを区分けする別の方法は、該SDRAMをより遅い4nビット長の同期DRAMチップと、4nからnにデータ多重化/逆多重化する高速データインタフェースチップとに分割することとすることができる。図5は、メモリデバイスを同期メモリチップとデータインタフェースチップとに区分けする一実施形態を説明するブロック図である。この実施形態の場合、メモリデバイス500は、同期メモリチップ510とデータインタフェースチップ520とを含む。同期メモリチップ510は、メモリチャネルからアドレス530と、コマンド及びクロック540とを受け取る。また、該同期メモリチップ510は、コマンド及び制御550を介するとともに、4nビット長内部データバスを通じてデータ570を介してデータインタフェースチップ520とも接続されている。データインタフェースチップ520は、nビット長外部データバス545及び4nビット長内部データバス570に接続されている。一実施形態において、nビット長高速DRAMは、m*nビット長同期DRAMチップと、m*nto nデータ多重化又は逆多重化を行う高速データインタフェースチップとに区分けすることができる。ただし、mはプリフェッチの量であり、すなわちm>1であり、mは、典型的には偶数である。
【0018】
上述したように、いくつかの異なる区分けが可能であるが、いくつかの実施形態においては、区分けは、次のように行うべきである。
・ホストシステムが(メモリデバイスがDIMM上にある実施形態において、DIMMごとに)単一の負荷のみを、メモリチャネルまたはバスの高速信号またはピンで見る。
・これらのメモリチップをスタックすることがシグナルインテグリティに影響を及ぼさないように、相互にスタックすべきメモリチップが、メモリチャネルまたはバスのデータレート(すなわち、外部データバスのレート)よりも低い速度で作動する。
【0019】
これに基づいて、多重メモリチップを、該メモリチャネルの信号の一部または全てにインタフェースする単一のインタフェースチップの背後にスタックすることができる。これは、メモリチップのI/O信号の一部または全てが、該ホストシステムのメモリチャネルまたはバスに直接ではなく、該インタフェースチップに接続されていることを意味することに留意されたい。該多重メモリチップからのI/O信号は、該インタフェースチップへ一緒にバスで転送することができるか、または、個々の信号として該インタフェースチップに接続することができる。同様に、該ホストシステムのメモリチャネルまたはバスに直接接続すべき該多重メモリチップからのI/O信号は、一緒にバスで転送することができるか、または、個々の信号として該外部メモリバスに接続されてもよい。該インタフェースチップまたはメモリチャネルまたはバスのいずれかに該I/O信号をバスで転送すべき場合、1つ以上のバスを用いることができる。同様に、該メモリチップのための電力は、該インタフェースチップによって供給することができるか、または、該ホストシステムから直接もたらされてもよい。
【0020】
図6は、スタックドメモリチップの場合の一実施形態を示す。メモリチップ620、630及び640は、s1、s2、s3、s4ならびにv1及びv2のための入力および/または出力を含む。s1及びs2の入力および/または出力は、外部メモリバス650に結合されており、s3及びs4の入力および/または出力は、インタフェースチップ610に結合されている。メモリ信号s1及びs4は、バスで転送されない信号の例である。メモリ信号s2及びs3は、バスで転送されるメモリ信号の例である。メモリの電源配線v1は、外部バス650に直接接続されているメモリ電源の例であり、v2は、インタフェース610に接続されたメモリ電源配線の例である。相互にスタックされるべきメモリチップは、複数のダイ、または、複数の個々のパッケージ化された部品としてスタックすることができる。1つの方法は、それらの部品は、スタッキングの前に検査及びバーンインを行うことができるため、個々にパッケージ化された部品をスタックすることである。加えて、パッケージ化された部品は、相互にスタックして一緒にはんだ付けすることができるため、スタックを修復しやすい。例えば、スタック内の一部が故障した場合、該スタックは、はんだを吸い取って、個々のパッケージに分離することができ、この故障したチップを新しい有効なチップと置き換えることができ、また、該スタックは、組立て直すことができる。しかし、上述したようにスタックを修復することが、時間がかかりかつ手間がかかることは明らかである。
【0021】
有効なp−チップメモリスタックを作る1つの方法は、(p+q)個のメモリチップと1つのインタフェースチップとを用いることであり、ただし、q個の余分なメモリチップ(典型的には、1≦q≦p)はスペアチップであり、p及びqは整数値からなる。該スタックの組立て中に、p個のメモリチップのうちの1つ以上が損傷した場合、それらのチップは、このスペアチップと置き換えることができる。故障したチップの組立て後の検知は、テスタを用いて、または、該インタフェースチップ内のビルトインセルフテスト(built−in self test;BIST)ロジックを用いて行うことができる。また、該インタフェースチップは、この置き換えがホストシステムに対して透過的であるように、故障したチップをスペアチップと置き換える能力を有するように設計することもできる。
【0022】
このアイデアは、スタック内のメモリチップの(通常の作動条件下での)ランタイムの置換に拡大適用することができる。DRAM等の電子メモリチップは、ハード及びソフトメモリエラーを起こしやすい。ハードエラーは、典型的には、該メモリチップが常に間違った結果に戻るような故障したまたは不具合のあるハードウェアによって引き起こされる。例えば、メモリアレイ内のセルは、該セル内に「1」が格納されている場合であっても、常に「0」という値に戻るように、lowを持続する可能性がある。ハードエラーは、シリコンの欠陥、はんだ接合の不良、コネクタピンの破損等によって引き起こされる。ハードエラーは、典型的には、厳しい検査と、DRAMチップ及びメモリモジュールのバーンインとによって検査することができる。ソフトエラーは、メモリセル付近の障害が該セルの内容を変更した場合に引き起こされるランダムで一時的なエラーである。この障害は、一般に、メモリチップに影響を与える宇宙粒子によって引き起こされる。ソフトエラーは、メモリセルの間違った内容に正しいデータで上書きすることによって修正することができる。DRAMの場合、ハードエラーよりもソフトエラーが一般的である。
【0023】
コンピュータ製造業者は、ソフトエラーに対処するために多くの技術を用いる。最も単純な方法は、誤り訂正符号(error correcting code;ECC)を用いることである。この場合、典型的には、64ビットのデータを格納するのに72ビットが用いられる。この種の符号は、シングルビットエラーの検出及び訂正、および2ビットエラーの検出を可能にする。ECCは、DRAMチップのハード故障から保護しない。コンピュータ製造業者は、この種のチップ故障から保護するために、チップキル(Chipkill)またはアドバンストECCと呼ばれる技術を用いる。ディスク製造業者は、同様のディスクエラーに対処するために、レイド(Redundant Array of Inexpensive Disks;RAID)と呼ばれる技術を用いる。
【0024】
また、メモリエラーから保護し、より高いレベルのメモリ可用性を提供するために、メモリスペアリング、メモリミラーリング及びメモリRAID等のより高度な技術も利用可能である。これらの特徴は、典型的には、ハイエンドサーバに見られ、メモリコントローラにおいて特別な論理を必要とする。メモリスペアリングは、許容できないレベルのソフトエラーを呈するメモリバンクを置き換えるスペアまたは冗長メモリバンクの使用を伴う。メモリバンクは、単一のDIMMまたは多重DIMMで構成することができる。アドバンストメモリ保護技術に関するこの論考におけるメモリバンクは、DRAMの内部バンクと混同すべきではないことに留意されたい。
【0025】
メモリミラーリングにおいて、データの全てのブロックは、システムまたは作業メモリに、ならびにミラードメモリ内の同じ記憶位置に書き込まれるが、データは、作業メモリのみからリードバックされる。リードバック中に、該作業メモリ内のバンクが、許容できないレベルのエラーを呈する場合、該作業メモリは、該ミラードメモリと置き換えられることになる。
【0026】
RAIDは、ディスクエラーから保護するためにディスク業界によって用いられる周知の一連の技術である。同様のRAID技術は、メモリエラーから保護するために、メモリ技術に適用することができる。メモリRAIDは、ディスク技術において用いられるRAID3またはRAID4と概念が同じである。メモリRAIDにおいて、データのブロック(典型的には、いくつかの整数個のキャッシュライン)が、2つ以上のメモリバンクに書き込まれると共に、そのブロックのパリティが専用パリティバンクに格納される。該バンクのうちのいずれかが故障している場合には、該データのブロックを、残りのバンクからのデータと、パリティデータとによって再作成することができる。
【0027】
これらのアドバンスト技術(メモリスペアリング、メモリミラーリング及びメモリRAID)は、これまでは個々のDIMMまたはDIMMの群を用いて実施されてきた。このことは明らかに、メモリコントローラ内に専用ロジックを必要とする。しかし、本開示においては、そのような特徴は、ほとんどメモリスタック内で実施することができ、該メモリコントローラから最小限の追加的サポートのみを必要とし、または、追加サポートを必要としない。
【0028】
DIMMまたはFB−DIMMは、個々のDRAMの代わりにメモリスタックを用いて形成することができる。例えば、標準的なFB−DIMMは、9個、18個またはそれ以上のDDR2 SDRAMチップを収容できる。FB−DIMMは、9個、18個、またはそれ以上のDDR2スタックを収容することができ、各スタックは、1つのDDR2 SDRAMインタフェースチップと、該インタフェースチップの上部にスタックされた(すなわち、電気的に該インタフェースチップの背後に、すなわち、該インタフェースチップは、電気的に該メモリチップと外部メモリバスとの間にある)1つ以上の低速メモリチップとを含む。同様に、標準的なDDR2 DIMMは、9個、18個またはそれ以上のDDR2 SDRAMチップを含むことができる。DDR2 DIMMは、代わりに、9個、18個またはそれ以上のDDR2スタックを含むことができ、各スタックは、1つのDDR2 SDRAMインタフェースチップと、該インタフェースチップの上部にスタックされた1つ以上の低速メモリチップとを含む。一実施形態に従って形成されたDDR2スタックの例を図7に示す。
【0029】
図7は、メモリデバイスをDDR2メモリバスにインタフェースする一実施形態を説明するブロック図である。図7に示すように、メモリデバイス700は、DDR2 SDRAMインタフェースチップ710に結合されたメモリチップ720を備える。また、DDR2 SDRAMインタフェースチップ710は、メモリチップ720を外部DDR2メモリバス730にインタフェースする。上述したように、一実施形態において、有効なp−チップメモリスタックは、(p+q)個のメモリチップと、1つのインタフェースチップとで形成することができ、ただし、q個のチップはスペアとして使用することができ、また、p及びqは整数値である。該スタック内でメモリスペアリングを実施するために、この(p+q)個のチップは、チップからなる2つのプール、すなわち、p個のチップからなる作業プールと、q個のチップからなるスペアプールとに分けることができる。従って、該作業プール内の1つのチップが故障した場合、その故障したチップは、該スペアプールからのチップと置き換えることができる。この故障した作業チップのスペアチップによる置き換えは、例えば、作業チップにおけるマルチビット障害の検知によって、または、作業チップからリードバックされたデータにおけるエラーの数が、所定のまたはプログラム可能なエラーしきい値をまたいだときに引き起こされる。
【0030】
ECCは、典型的には、メモリチャネル内の64データビット全体および場合により、複数のメモリチャネルにわたって実施されるため、リードバックされたデータにおけるシングルビットまたはマルチビットエラーの検知は、メモリコントローラ(または、FB−DIMMの場合にはAMB)によってのみ行われる。該メモリコントローラ(またはAMB)は、各DIMMからリードバックされたデータにおけるエラーの実行カウントを保つように設計することができる。このエラーの実行カウントが所定のまたはプログラムされたしきい値を超えた場合、該メモリコントローラは、エラーを生じている作業プール内のチップを、スペアプールからのチップと置き換えるようにインタフェースチップに伝えることができる。
【0031】
例えば、DDR2 DIMMの場合を考察する。該DIMMが9個のDDR2スタック(スタック0〜8、ただし、スタック0は、72ビット長のメモリチャネルの最下位の8つのデータビットに対応する。また、スタック8は、最上位の8つのデータビットに対応する)を含むと仮定する。また、各DDR2スタックが5つのチップからなり、そのうちの4つが作業プールに割当てられており、5番目のチップがスペアプールに割当てられていると仮定する。また、該作業プール内の1番目のチップがアドレスレンジ[N−1:0]に対応し、該作業プール内の2番目のチップがアドレスレンジ[2N−1:N]に対応し、該作業プール内の3番目のチップがアドレスレンジ[3N−1:2N]に対応し、該作業プール内の4番目のチップがアドレスレンジ[4N−1:3N]に対応し、ただし、「N」は整数値であると仮定する。
【0032】
通常の動作条件下では、該メモリコントローラは、アドレスレンジ[4N−1:3N]、[3N−1:2N]、[2N−1:N]及び[N−1:0]からのデータにおけるエラーのトラックを保つように設計することができる。仮に、アドレスレンジ[3N−1:2N]内のデータにおけるエラーが所定のしきい値を超えた場合、該メモリコントローラは、該スタック内のインタフェースチップに、該作業プール内の3番目のチップを該スタック内のスペアチップと置き換えるように命令することができる。この置き換えは、DIMM内の9個全てで同時に、または、スタックごとに行うことができる。アドレスレンジ[3N−1:2N]からのデータにおけるエラーが、該DIMMからのデータビット[7:0]に限定されると仮定する。前者の場合には、全てのスタックにおける3番目のチップが、それぞれのスタック内のスペアチップと置き換えられる。後者の場合には、スタック0内の3番目のチップ(LSBスタック)のみが、当該スタック内のスペアチップと置き換えられることになる。後者の場合は、(全てのスタックにおいて同じチップである必要がない)各スタックにおける1つの故障チップを補いまたは許容するのに対して、前者の場合は、該DIMM内の全てのスタックの中で1つの故障チップを補いまたは許容する。そのため、後者の場合の方がよりフレキシブルである。従って、後者の場合、(p+q)個のメモリチップで形成された有効なp−チップスタックに対して、スタックごとにq個までのチップが故障してもよく、スペアチップと置き換えることができる。該メモリコントローラ(またはAMB)は、バンド内信号によって、あるいはサイドバンド信号によって、該インタフェースチップと情報をやりとりすることにより、メモリスペアリング機能(すなわち、故障している作業チップのスペアチップとの置き換え)を引き起こすことができる。システムマネジメントバス(System Management Bus;SMBus)は、サイドバンド信号の一例である。
【0033】
いくつかの実施形態に従って構成されたメモリスタック内でのメモリスペアリングの場合の実施形態を図8a〜図8eに示す。
【0034】
図8aは、1つのDIMMモジュール上にメモリチップをスタックする一実施形態を説明するブロック図である。この例の場合、メモリモジュール800は、9個のスタック(810、820、830、840、850、860、870、880及び890)を含む。各スタックは、少なくとも2つのメモリチップを備える。一実施形態において、メモリモジュール800は、DDR2の仕様に従って作動するように構成されている。
【0035】
図8bは、メモリスペアリングによってメモリチップをスタックする一実施形態を説明するブロック図である。図8bに示すこの例のメモリスタックの場合、メモリデバイス875は、作業メモリプールを形成するようにスタックされたメモリチップ(885、886、888及び892)を含む。この実施形態の場合、該作業メモリプールにアクセスするために、該メモリチップにはそれぞれ、図8bに示すようなアドレスレンジが割当てられている。また、メモリデバイス875はまた、該スペアメモリプールを形成するスペアメモリチップ895を含む。しかし、該スペアメモリプールは、メモリチップをいくつ備えていてもよい。
【0036】
図8cは、作業メモリプールの動作を説明するブロック図である。この実施形態の場合、メモリモジュール812は、複数の集積回路メモリスタック(814、815、816、817、818、819、821、822及び823)を含む。この例の場合、各スタックは、作業メモリプール825とスペアメモリチップ855とを含む。
【0037】
図8dは、スタックドメモリチップのためのメモリスペアリングを実施する一実施形態を説明するブロック図である。この例の場合、メモリモジュール824は、複数の集積回路メモリスタック(826、827、828、829、831、832、833、834及び835)を含む。この実施形態の場合、メモリスペアリングは、1つ以上のメモリチップでデータエラーが発生した(すなわち、1つのアドレスレンジで発生した)場合に、その機能を有効にすることができる。図8dに示す例の場合、所定のしきい値を超えているデータエラーが、アドレスレンジ[3N−1:2N]におけるDQ[7:0]で発生している。メモリスペアリングを実施するために、この故障チップは、該DIMMの全てのスタックで同時に置き換えられる。具体的には、この例の場合、故障チップ857は、該DIMMの全てのメモリスタック内のスペアチップ855と置き換えられる。
【0038】
図8eは、スタックごとにメモリスペアリングを実施する一実施形態を説明するブロック図である。この例の場合、メモリモジュール836はまた、複数の集積回路メモリスタック(837、838、839、841、842、843、844、846及び847)を含む。各スタックは、作業メモリプールとスペアメモリプール(例えば、スペアチップ861)とに割当てられている。この例の場合、メモリチップ863がスタック847で故障している。メモリスペアリングを可能にするために、スタック847内のスペアチップのみが該故障チップと置き換えられ、他の全てのスタックは、該作業プールを用いて作動し続ける。
【0039】
メモリミラーリングは、各スタック内の(p+q)個のチップを、2つの等しいサイズのセクション、すなわち、作業セクション及びミラードセクションに分割することによって実施することができる。メモリコントローラによってメモリに書き込まれる各データは、該作業セクション及び該ミラードセクションにおける同じ記憶位置に格納される。該メモリコントローラによって該メモリからデータが読み出される場合、該インタフェースチップは、該作業セクション内の適切な記憶位置のみを読み取り、そのデータを該メモリコントローラに戻す。該メモリコントローラが、この戻されたデータがマルチビットエラーを有することを検知する場合、例えば、読み出したデータにおける累積エラーが所定のまたはプログラムされたしきい値を超えている場合、該メモリコントローラは、(バンド内信号またはサイドバンド信号によって)該インタフェースチップに、該作業セクションを使うことを止めて、その代わりに、該ミラードセクションを作業セクションとして扱うことを命じるように設計することができる。メモリスペアリングの場合に論じたように、この置き換えは、該DIMM内の全てのスタックにわたって行うことができ、または、スタックごとに行うことができる。後者の場合、各スタック内の1つの故障チップを補いまたは許容するのに対して、前者の場合は、該DIMM内の全てのスタックの中で1つの故障チップを補いまたは許容する。そのため、後者の場合の方がよりフレキシブルである。
【0040】
メモリスタック内でのメモリミラーリングの場合の実施形態を図9a〜図9eに示す。
【0041】
図9aは、一実施形態によるメモリミラーリングを説明するブロック図である。図9aに示すように、メモリデバイス900は、メモリを外部メモリバスにインタフェースするインタフェースチップ910を含む。該メモリは、作業メモリセクション920とミラードメモリセクション930とに分けられている。通常の動作中、書き込み動作は、作業メモリセクション920及びミラードメモリセクション930の両方で行われる。しかし、読み出し動作は、作業メモリセクション920のみから行われる。
【0042】
図9bは、メモリミラーリングを可能にするメモリデバイスの場合の一実施形態を説明するブロック図である。この例の場合、メモリデバイス900は、作業メモリ920内で生じた、あるしきい値のエラーにより、ミラードメモリセクション930を作業メモリとして用いる。従って、作業メモリセクション920は、使用不能作業メモリセクションとして分類される。動作中、インタフェースチップ910は、ミラードメモリセクション930、および場合により、使用不能作業メモリセクション920に対して、書き込み動作を実行する。しかし、メモリミラーリングが可能な状態で、読み出しは、ミラードメモリセクション930から行われる。
【0043】
図9cは、集積回路メモリスタックを有するミラードメモリシステムの場合の一実施形態を説明するブロック図である。この実施形態の場合、メモリモジュール915は、複数の集積回路メモリスタック(902、903、904、905、906、907、908、909及び912)を含む。図9cに示すように、各スタックは、図9cにおいて「W」という符号が付けられた作業メモリセクション953と、図9cにおいて「M」という符号が付けられたミラードメモリセクション951とに分けられている。この例の場合、該作業メモリセクションがアクセスされる(すなわち、ミラードメモリは使用可能ではない)。
【0044】
図9dは、DIMMの全てのスタックにわたってメモリミラーリングを同時に可能にする一実施形態を説明するブロック図である。この実施形態の場合、メモリモジュール925はまた、ミラードメモリセクション956と作業メモリセクション958とに分けられた複数の集積回路メモリスタック(921、922、923、924、926、927、928、929及び931)を含む。この実施形態の場合、メモリミラーリングが可能である場合、該DIMM内の各スタックのミラードメモリセクション内の全てのチップは、作業メモリとして使われる。
【0045】
図9eは、スタックごとにメモリミラーリングを可能にする一実施形態を説明するブロック図である。この実施形態の場合、メモリモジュール935は、ミラードセクション961(「M」という符号が付けられた)と作業メモリセクション963(「W」という符号が付けられた)とに分けられた複数の集積回路メモリスタック(941、942、943、944、945、946、947、948及び949)を含む。この実施形態の場合、所定のしきい値のエラーが、これらの作業メモリの一部から生じると、対応するスタックからのミラードメモリが作業メモリと置き換えられる。例えば、DQ[7:0]でデータエラーが起こり、あるしきい値を超えた場合には、スタック949に対してのみ(「Mu」という符号が付けられた)ミラードメモリセクション961が(「uW」という符号が付けられた)作業メモリセクション963に置き換わる。
【0046】
一実施形態において、(p+1)−チップスタック内でのメモリRAIDは、p個のチップ全てにデータを格納し、かつそれとは別個のチップ(すなわち、パリティチップ)にパリティ(すなわち、エラー訂正符号または情報)を格納することによって実施することができる。従って、データのブロックが該スタックに書き込まれると、該ブロックは、p個の等しいサイズの部分に分かれ、データの各部分は、該スタック内の独立したチップに書き込まれる。すなわち、該データは、該スタック内のp個のチップ全てに「ストライピング」される。
【0047】
例えば、該メモリコントローラが、データブロックAを該メモリスタックに書き込むとする。該インタフェースチップは、このデータをp個の等しいサイズの部分(A1、A2、A3、…、Ap)に分割し、A1を該スタック内の1番目のチップに書き込み、A2を2番目のチップに書き込み、A3を3番目のチップに書き込み、以下、Apが該スタック内のp番目のチップに書き込まれるまで同様である。また、データブロックA全体のパリティ情報は、該インタフェースチップによって演算されて、該パリティチップ内に格納される。該メモリコントローラが、データブロックAの読み出し要求を送ると、該インタフェースチップは、1番目、2番目、3番目、…、p番目のチップからそれぞれA1、A2、A3、…、Apを読み出してデータブロックAを形成する。また、該インタフェースチップは、格納されているデータブロックAのパリティ情報を読み出す。該メモリコントローラが、該スタック内のいずれかのチップからリードバックされたデータ内にエラーを検出すると、該メモリコントローラは、該インタフェースチップに、該パリティ情報と、該データブロックAの正しい部分とを用いて正しいデータを再形成するように命令することができる。
【0048】
メモリスタック内でのメモリRAIDの場合の実施形態を図10a及び図10bに示す。
【0049】
図10aは、書き込み動作の実行中のメモリRAID機能を有するメモリチップからなるスタックを説明するブロック図である。メモリデバイス1000は、「p+1」個のメモリチップ(1015、1020、1025及び1030)を外部メモリバスにインタフェースするインタフェースチップ1010を含む。図10aは、データブロック「A」の書き込み動作を示し、データブロック「A」のデータは、メモリチップに次のように書き込まれる。
A=Ap…A2、A1;
パリティ[A]=(Ap)n…n(A2)、n(A1)、ただし、「n」は、ビット排他論理和演算子である。
【0050】
図10bは、読み出し動作中のメモリRAID機能を有するメモリチップからなるスタックを説明するブロック図である。メモリデバイス1040は、インタフェースチップ1050と、「p」個のメモリチップ(1060、1070及び1080)と、パリティメモリチップ1090とを含む。読み出し動作の場合、データブロック「A」は、A1、A2、…Ap及びパリティ[A]からなり、図10bに示すように、それぞれのメモリチップから読み出される。
【0051】
この技法は、各スタックに格納されたデータを何らかのエラーから回復することができるようにすることに留意されたい。該メモリコントローラは、1つのDIMM上の全てのメモリスタックからのデータ、および場合により多重DIMMに対してエラー訂正を実施することができる。
【0052】
他の実施形態においては、余分なチップに格納されたビットは、パリティ以外の代替的機能を有することができる。例として、余分なストレージまたは隠れビットフィールドは、キャッシュラインに、関連するキャッシュラインのアドレスを付けるのに用いることができる。従って、該メモリコントローラがキャッシュラインAをフェッチした前回を仮定すると、該メモリコントローラは、キャッシュラインBもフェッチしている(ただし、Bは、ランダムアドレスである)。この結果、該メモリコントローラは、該隠れビットフィールド内のキャッシュラインBのアドレスでキャッシュラインAを書き戻すことができる。そして、次に該メモリコントローラがキャッシュラインAを読出すと、該メモリコントローラは、該隠れビットフィールド内のデータも読出し、かつキャッシュラインBをプリフェッチする。また別の実施形態においては、メタデータまたはキャッシュタグあるいはプリフェッチ情報を該隠れビットフィールドに格納することができる。
【0053】
従来の高速DRAMの場合、余分なメモリの追加は、図11に示すように、複数のメモリチップをメモリコントローラに接続する高速メモリバスに余計な電気的負荷を加えることを伴う。
【0054】
図11は、複数のDRAMを1つの高速メモリバスに付加する結果としての従来のインピーダンス負荷を示す。この実施形態の場合、メモリコントローラ1110は、高速バス1115上のメモリにアクセスする。従来のDRAMの高速メモリバス1115に対する負荷(1120)を図11に示す。追加のメモリ容量を従来の方法で付加するために、複数のメモリチップが高速バス1115に付加され、その結果として、追加の負荷(1125及び1130)が高速メモリバス1115に付加される。
【0055】
該メモリバスの速度が増加するのにつれて、該メモリバスに並列に接続することのできるチップの数は減少する。このことは、最大記憶容量を制限する。言い換えると、該メモリバス上の並列チップの数が増加するのにつれて、該メモリバスの速度は低下する。従って、高記憶容量を実現するためには、低速(およびより低いメモリ性能)を容認しなければならない。
【0056】
高速DRAMを高速インタフェースと低速メモリチップとに分けることは、メモリバス速度及びメモリシステムのパフォーマンスに悪影響を及ぼすことなく、余分な記憶容量の追加を容易にする。単一の高速インタフェースチップは、メモリバスからなるラインの一部または全てに接続して、該メモリバスに公知の一定の負荷を与えることができる。該インタフェースチップの反対側は、低速で作動するため、パフォーマンスを犠牲にすることなく、多重低速メモリチップを該インタフェースチップ(の低速側)に接続して、メモリをアップグレードする能力を与えることができる。実質的に、追加的メモリチップの電気的負荷は、(現在、従来の高速DRAMを用いた場合である)高速バスから低速バスにシフトしてきている。低速バスに追加の電気的負荷を加えることは常に、高速バスに追加の電気的負荷を加えることの問題よりも、解決するのがかなり容易である。
【0057】
図12は、一実施形態による、高速メモリバスに複数のDRAMを付加する結果としてのインピーダンス負荷を示す。この実施形態の場合、メモリコントローラ1210は、高速メモリバス1215上の高速インタフェースチップ1200にアクセスする。該高速インタフェースチップからの負荷1220を図12に示す。低速バス1240は、高速インタフェースチップ1200に結合している。メモリチップ(1230及び1225)の負荷は、低速バス1240に加えられる。その結果として、追加の負荷は、高速メモリバス1215には付加されない。
【0058】
該インタフェースチップに接続される低速メモリチップの数は、該メモリスタックの製造時に一定にしてもよく、または、製造後に変えてもよい。該メモリスタックの製造後に、余分な記憶容量をアップグレードし、かつ付加する能力は、ユーザが、意図される用途に必要なシステム全体の記憶容量の明確な理解を有していない可能性のあるデスクトップPC等のマーケットにおいて特に有用である。追加の記憶容量を付加するこの能力は、PC業界が、デスクトップやモバイル等のいくつかの主要市場区分においてDDR3メモリを採用する場合には、非常に重要になる。これは、DDR3の速度においては、メモリチャネル当たりで、1つのDIMMだけがサポートされることが予想されるためである。このことは、エンドユーザにとっては、システムが構築されて出荷された後に、追加のメモリをシステムに付加する簡単な方法がないことを意味する。
【0059】
メモリスタックの記憶容量を増加させる能力を与えるために、少なくとも1つの低速メモリチップを付加するのにソケットを用いてもよい。一つの態様において、該ソケットは、プリント配線板(PCB)の該メモリスタックと同じ側であって、該メモリスタックに隣接して設けることができる。メモリスタックは、少なくとも1つの高速インタフェースチップまたは少なくとも1つの高速インタフェースチップと少なくとも1つの低速メモリチップとからなることができる。図13は、ソケットを用いて低速メモリチップを付加する一実施形態を説明するブロック図である。この実施形態の場合、DIMM等のプリント配線板(PCB)1300は、高速インタフェースチップからなる1つ以上のスタックを含む。他の実施形態においては、該スタックは、低速メモリチップも含む。図13に示すように、1つ以上のソケット(1310)が、スタック1320に隣接してPCB1300上に実装されている。PCB1300の記憶容量を増加させるために、低速メモリチップをこれらのソケットに追加することができる。また、この実施形態の場合、ソケット1310は、PCB1300上のスタック1320と同じ側に配置されている。
【0060】
該PCBのスペースが限定されているか、または、該PCBの寸法が、ある工業規格または顧客の要求を満たさなければならない状況においては、追加の低速メモリチップのためのソケットは、図14に示すように、該PCBの該メモリスタックと同じ側にあり、かつ該メモリスタックの上部に位置するように設計することができる。
【0061】
図14は、ソケットがスタックの上部に配置されたPCBを示す。PCB1400は、複数のスタック(1420)を含む。1つのスタックは、1つの高速インタフェースチップと、場合により、1つ以上の低速メモリチップとを含む。この実施形態の場合、ソケット1410は、1つ以上のスタックの上部に位置している。記憶容量を該PCB(例えば、DIMM)に付加するために、複数のメモリチップがソケット(1410)内に配置されている。別法として、該追加の低速メモリチップのためのソケットは、図15に示すように、該PCBの、該メモリスタックとは反対側にあるように設計することができる。
【0062】
図15は、ソケットがスタックの反対側に配置されたPCBを示す。この実施形態の場合、DIMM等のPCB1500は、高速インタフェースチップと、場合により1つ以上の低速メモリチップとを含む1つ以上のスタック(1520)を備える。この実施形態の場合、図15に示すように、1つ以上のソケット(1510)が、該PCBの、該スタックとは反対側に実装されている。低速メモリチップは、該メモリスタックに1つずつ付加することができる。すなわち、各スタックは、関連するソケットを有することができる。この場合、追加の容量を該メモリシステムに付加することは、1つ以上の低速メモリチップを、メモリランクにおける各スタックに付加することを伴う(ランクは、メモリアクセスに応答する全てのメモリチップまたはスタック、すなわち、共通のチップセレクト信号によって使用可能にされる全てのメモリチップまたはスタックを意味する)。同じ数で同じ密度のメモリチップを、あるランクにおける各スタックに付加しなければならないことに留意されたい。代替的方法は、ランク内の全てのスタックに対して共通のソケットを用いることとすることができる。この場合、追加の記憶容量を付加することは、多重メモリチップを含むPCBを該ソケットに挿入することを伴い、また、該ランクにおける各スタックに対して少なくとも1つのメモリチップがある。上述したように、同じ数で同じ密度のメモリチップを、該ランクにおける各スタックに付加しなければならない。
【0063】
多くの異なる種類のソケットを使用することができる。例えば、該ソケットは、メス型ソケットとすることができ、アップグレードメモリチップを有するPCBは、関連するオス型ピンを有することができる。
【0064】
図16は、1つ以上のメモリチップを収容できるアップグレードPCBを示す。この実施形態の場合、アップグレードPCB1610は、1つ以上のメモリチップ(1620)を含む。図16に示すように、PCB1610は、オス型ソケットピン1630を含む。DIMM PCB上のメス型レセプタクルソケット1650は、追加のメモリチップ(1620)を含むように、オス型ソケットピン1630と嵌合して、その記憶容量をアップグレードする。別のアプローチは、オス型ソケットと、関連するメス型レセプタクルを有するアップグレードPCBとを用いることである。
【0065】
高速DRAMを低速メモリチップと高速インタフェースチップとに分けること、および多重メモリチップを1つのインタフェースチップの背後にスタックすることは、多重チップをスタックすることに関連する性能に不利な条件を確実に最小限にする。しかし、このアプローチは、現在のDRAMのアーキテクチャへの変更を要し、このこともまた、この技術を市場に送り出すことに関連する時間及びコストを増加させる。より安くかつより迅速なアプローチは、待ち時間を費やすことなく、バッファチップの背後に、多重在庫のある既製品の高速DRAMチップをスタックすることである。
【0066】
現在の在庫品の高速DRAM(DDR2 SDRAM等など)は、ソース同期ストローブ信号を、データの双方向転送のためのタイミング基準として用いる。4ビット長のDDRまたはDDR2 SDRAMの場合、専用のストローブ信号が、該DRAMの4つのデータ信号と関連付けられている。8ビット長チップの場合には、専用ストローブ信号が8つのデータ信号と関連付けられている。16ビット及び32ビットチップの場合は、専用ストローブ信号が、8つのデータ信号の各セットと関連付けられている。たいていのメモリコントローラは、メモリチャネルまたはバスにおける4つまたは8つ全てのデータラインのための専用ストローブ信号に適応するように設計されている。その結果、シグナルインテグリティ及び電気的負荷という考慮すべき事柄により、たいていのメモリコントローラは、(72ビット長のメモリチャネルの場合)ランクごとに9個または18個のメモリチップのみに接続することが可能である。接続性に対するこの制限は、2つの4ビット長の高速メモリチップを現在の工業規格のDIMM上で相互にスタックすることができるが、2つ以上のチップをスタックすることは困難であることを意味する。2つの4ビット長チップを相互にスタックすることは、DIMMの密度を倍にすることに留意すべきである。1つのスタックにおける3つ以上のDRAMに関連するシグナルインテグリティの問題は、スタッキング技術を用いて、1つのDIMMの密度を2倍以上にすることを困難にする。
【0067】
以下に述べるスタッキング技術を用いると、相応して4個、6個または8個のDRAMを相互にスタックすることにより、1つのDIMMの密度を4倍、6倍または8倍に増加させることが可能である。このことを遂行するために、1つのバッファチップが外部メモリチャネルと複数のDRAMチップとの間に設けられ、該バッファチップは、該DRAMチップへの及び該DRAMからのアドレス信号、制御信号及びデータ信号のうちの少なくとも1つをバッファリングする。一つの実施においては、スタックごとに1つのバッファチップを用いてもよい。他の実施においては、スタックごとに1つ以上のバッファチップを用いてもよい。さらに他の実施においては、複数のスタックに対して1つのバッファチップを用いてもよい。
【0068】
図17は、複数のメモリチップをスタックする一実施形態を説明するブロック図である。この実施形態の場合、バッファチップ1810は、ホストシステムに、典型的には、該ホストシステムのメモリコントローラに結合されている。メモリデバイス1800は、バッファチップ1810の背後にスタックされた少なくとも2つの高速メモリチップ1820(例えば、DDR2 SDRAM等のDRAM)を含む(例えば、高速メモリチップ1820は、バッファチップ1810によってアクセスされる)。
【0069】
図17に示す実施形態が、既に説明した図3に示す実施形態と同様であることは明らかである。主な違いは、図3に示すスキームにおいては、多重低速メモリチップが、高速インタフェースチップの上部にスタックされていることである。該高速インタフェースチップは、該ホストシステムに対して業界標準のインタフェース(例えば、DDR SDRAMまたはDDR2 SDRAM)を与え、該高速インタフェースチップと低速メモリチップとの間のインタフェースは規格外(すなわち、独自仕様)であってもよく、あるいは、業界標準に準拠していてもよい。一方、図17に示すスキームは、多重高速の在庫品DRAMを1つの高速バッファチップの上にスタックする。該バッファチップは、プロトコル変換を実行してもしなくてもよい(すなわち、該バッファチップは、外部メモリチャネル及び高速DRAMチップの両方に対して、DDR2等の業界標準のインタフェースを提供することができる)。さらに、該バッファチップは、該メモリチップが呈する電気的負荷(すなわち、該メモリチップの入力寄生成分)を該メモリチャネルから簡単に分離することができる。
【0070】
他の実施において、該バッファチップは、プロトコル変換を実行することができる。例えば、該バッファチップは、DDR3からDDR2への変換を実行することができる。この方式においては、多重DDR2 SDRAMチップを、該ホストシステムに対して1つ以上のDDR3 SDRAMチップとして見える可能性がある。また、該バッファチップは、プロトコルの1つのバージョンから同じプロトコルの別のバージョンに変換することもできる。この種の変換の例として、該バッファチップは、DDR2パラメータからなる1つのセットから、DDR2パラメータからなる異なるセットへ変換することができる。このように、該バッファチップは、例えば、あるタイプの1つ以上のDDR2チップ(例えば、4−4−4DDR2 SDRAM)を、該ホストシステムに対して、異なるタイプの2つ以上のDDR2チップ(例えば、6−6−6DDR2 SDRAM)として見せることができる。他の実施においては、1つのバッファチップを1つ以上のスタックによって共用してもよいことに留意されたい。また、該バッファチップは、該スタックの一部とするのではなく、該スタックに対して外付けとすることも可能である。また、2つ以上のバッファチップを1つのスタックと関連付けてもよい。
【0071】
バッファチップを用いて、高速DRAMの電気的負荷を該メモリチャネルから分離することは、多重(典型的には、2〜8個の)メモリチップを、1つのバッファチップの上にスタックすることを可能にする。一実施形態においては、1つのスタック内の全てのメモリチップは、同じアドレスバスに接続してもよい。別の実施形態においては、複数のアドレスバスを1つのスタック内のメモリチップに接続してもよく、この場合、各アドレスバスは、該スタック内の少なくとも1つのメモリチップに接続する。同様に、1つのスタック内の全てのメモリチップのデータ信号及びストローブ信号は、一実施形態において、同じデータバスに接続することができ、一方、別の実施形態においては、多重データバスを、1つのスタック内の該メモリチップのデータ信号及びストローブ信号に接続することができ、この場合、各メモリチップは、1つのデータバスにのみ接続し、各データバスは、該スタック内の少なくとも1つのメモリチップに接続する。
【0072】
このようにバッファチップを用いることは、第1の数のDRAMが、第2の数のうちの少なくとも1つのDRAMをシミュレートすることを可能にする。本説明の文脈の中で、該シミュレーションは、該システムに対して違って見える該DRAMの少なくとも1つの態様(例えば、この実施形態における数等)をもたらす何らかのシミュレーション、エミュレーション、偽装等を指す。異なる実施形態においては、該シミュレーションは、本質的に電気的、本質的に論理的とすることができ、および/または他の何らかの所望の方法で実行することができる。例えば、電気的シミュレーションのコンテキストにおいては、多重ピン、ワイヤ、信号等をシミュレートすることができ、一方、論理的シミュレーションのコンテキストにおいては、特定の機能をシミュレートすることができる。
【0073】
本実施形態のさらに追加の態様において、該第2の数は、該第1の数よりも大きくまたは小さくすることができる。さらに、後者の場合においては、該第2の数は、単一のDRAMがシミュレートされるように1とすることができる。本発明の様々な態様を利用することができる異なる任意の実施形態を、本明細書において以下に記載する。
【0074】
さらにまた他の実施形態において、該バッファチップは、該DRAMと、少なくとも1つのDRAMをシミュレートするシステムとを、複数のDRAMのうちの少なくとも1つの少なくとも1つの態様とは異なる少なくとも1つの態様とインタフェースするように作動させることができる。このような実施形態の様々な態様によれば、そのような態様は、信号、容量、タイミング、論理インタフェース等を含むことができる。該1つ以上のDRAMに関連するどのような態様も、上記の方法とは異なる方法でシミュレートすることができるため、当然、そのような態様の例は、単に例示を目的として記載されており、従って、限定するものとして解釈すべきではない。
【0075】
該信号の場合、そのような信号は、アドレス信号、制御信号、データ信号および/または他の何らかの信号を含むことができる。例えば、上述した多重信号は、より少ないかまたはより多い信号として見えるようにシミュレートすることができ、または、異なる種類に対応するようにシミュレートすることもできる。さらに他の実施形態においては、多重信号を組み合わせて、別の信号をシミュレートすることができる。さらに、信号がアサートされる時間の長さは、異なるようにシミュレートすることができる。
【0076】
容量の場合、これは、(DRAMの数の関数であってもなくてもよい)記憶容量を指すものとする。例えば、該バッファチップは、複数のDRAMのうちの少なくとも1つの第2の記憶容量よりも大きい(または、小さい)第1の記憶容量を有する少なくとも1つのDRAMをシミュレートするために動作可能にすることができる。
【0077】
該態様がタイミングに関連がある場合、該タイミングは、待ち時間(例えば、時間遅延等)に関連する可能性がある。本発明の一つの態様において、そのような待ち時間は、カラムアドレスストローブ(column address strobe;CAS)レイテンシー(column address strobe latency;tCAS)を含み得、これは、データのカラムにアクセスすることに関連する待ち時間を指す。さらに、該待ち時間は、tRCD(RAS(row address strobe)to CAS latency)を含み得、これは、RASとCASの間で必要な待ち時間を指す。さらに、該待ち時間は、tRP(row precharge latency)を含み、これは、開いた行に対するアクセスを終了するのに必要な待ち時間を指す。さらに、該待ち時間は、tRAS(active to precharge latency)を含み、これは、データ要求とプリチャージコマンドとの間のデータのある行にアクセスするのに必要な待ち時間を指す。いずれの場合においても、該バッファチップは、複数のDRAMのうちの少なくとも1つの第2の待ち時間よりも長い(または短い)第1の待ち時間を有する少なくとも1つのDRAMをシミュレートするために動作可能にすることができる。本実施形態の様々な特徴を利用する異なる任意の実施形態を以下に記載する。
【0078】
さらに別の実施形態において、バッファチップは、該システムから信号を受取って、ある遅延の後、その信号を複数のDRAMのうちの少なくとも1つに伝えるように動作可能にすることができる。ここでもまた、該信号は、アドレス信号、コマンド信号(例えば、起動コマンド信号、プリチャージコマンド信号、書き込み信号等)、データ信号、または、他の何らかの信号を指すものとする。様々な実施形態において、このような遅延は、固定することができ、または、変化する可能性もある。
【0079】
場合により、該遅延は、上述した信号のうちのいずれか1つまたはそれ以上に関連する累積遅延を含んでもよい。また、該遅延は、(他の信号に対して)間に合うように該信号を前後にタイムシフトすることができる。当然、そのような前後のタイムシフトは、大きさが等しくても等しくなくてもよい。一実施形態において、このタイムシフトは、それぞれが、異なる信号に対して異なる遅延を適用する複数の遅延関数を利用することによって遂行することができる。
【0080】
さらに、上述したバッファチップは、レジスタ、AMB(Advanced memory buffer)、少なくとも1つのDIMM上に配置された構成要素、メモリコントローラ等を含んでもよいことに留意すべきである。そのようなレジスタは、様々な実施形態において、JEDEC(Joint Electron Device Engineering Council;電子素子技術連合評議会)レジスタ、本明細書に記載されている1つ以上の機能を含むJEDECレジスタ、転送、格納および/またはバッファリング能力等を有するレジスタを含むことができる。様々な特徴を利用する異なる任意の実施形態を以下に記載する。
【0081】
様々な実施形態において、シミュレートしたDRAM回路が、所望のDRAM規格または他の設計仕様に従って作動するか否かを判断することが望ましい。多くのDRAM回路の動作が、JEDEC規格によって定められており、いくつかの実施形態においては、特定のJEDEC規格のDRAMを正確にシミュレートすることが望ましい。JEDEC規格は、DRAM回路が対応しなければならないコマンドと、そのようなコマンドの結果としてのDRAM回路の動作とを規定する。例えば、DDR2 DRAMのためのJEDEC仕様は、JESD79−2Bとして知られている。
【0082】
例えば、JEDEC規格に合っているか否かを判断することが望ましい場合、次のようなアルゴリズムを用いることができる。このようなアルゴリズムは、論理の形式的検証のためのソフトウェア検証ツールのセットを用いて、シミュレートしたDRAM回路のプロトコル動作が、所望の規格または他の設計仕様と同じであるかを確認する。この形式的検証は、DRAM規格に記載のDRAMプロトコルが典型的には、少数のプロトコルコマンド(例えば、JEDEC DDR2仕様の場合、約15のプロトコルコマンド)に限定されているため、問題なく実現可能である。
【0083】
上述したソフトウェア検証ツールの実例は、SYNOPSYSにより供給されるMAGELLAN、または、CADENCEにより供給されるINCISIVE等の他のソフトウェア検証ツール、JASPERにより供給される検証ツール、REAL INTENTにより供給されるVERIX、MENTOR CORPORATIONにより供給される0−IN等を含む。これらのソフトウェア検証ツールは、DRAMのプロトコル及び仕様によって規定されたルールに対応する書き込まれたアサーションを用いる。それらのアサーションはさらに、バッファチップのための論理記述を構成するコードに含まれている。シミュレートしたDRAM回路の所望の動作に対応するアサーションを書き込むことにより、所望の設計要件に合っているか否かを判断する裏付けを構築することができる。このようにして、1つの規格、多重規格または他の設計仕様への準拠性のために様々な実施形態をテストすることができる。
【0084】
例えば、アサーションは、2つのDRAM制御信号が、アドレスバス、制御バス及びクロックバスに対して同時に出せるようになっていないと書き込むことができる。当業者は、本明細書に記載された様々なバッファチップ及びDRAMスタック構成及びアドレスマッピングのうちのどれが適しているかを理解しているだろうが、上述したアルゴリズムは、設計者が、シミュレートしたDRAM回路が、所要の規格または他の設計仕様を厳密に合っていることを検証できるようにする。例えば、データのための共通バス及びアドレスのための共通バスを用いるアドレスマッピングが、所要の仕様に合わない制御バス及びクロックバスを生じる場合には、他のバス構成を有するバッファチップのための代替設計またはバッファチップと他の構成要素との間の配線のための代替設計を、所望の規格または他の設計仕様に対する準拠性のために用いてテストすることができる。
【0085】
該バッファチップは、業界標準のDRAMと同じ設置面積(例えば、DDR2 SDRAMの設置面積)(またはピン配列)を有するように設計することができる。該バッファチップの上にスタックされる高速DRAMチップは、業界標準のピン配列を有するか、または非標準のピン配列を有することができる。このことは、各スタックが、単一の業界標準DRAMチップと同じ設置面積を有するため、標準的なDIMM PCBを使用することを可能にする。いくつかの企業は、多重DRAMを相互にスタックする独自仕様の方法を開発している(例えば、Tessera,Inc.のμZ Ball Stack、Staktek Holdings,Inc.のHigh Performance Stakpak)。バッファチップ(図18)または高速インタフェースチップ(図3)のいずれかの背後に多重メモリチップをスタックする開示された技術は、メモリチップをスタックする全ての異なる方法に適合する。この方法はいかなる特定のスタッキング技術も必要としない。
【0086】
両面DIMM(すなわち、PCBの両面にメモリチップがあるDIMM)は、特に、高速データ及びストローブ信号が、該基板の各面に1つずつある2つのDRAMへ送られなければならない場合には、片面DIMMよりも電気的に分が悪い。これは、データ信号が、各ブランチが基板の両面のDRAMで終端している、該DIMM上の2つのブランチ(すなわち、T字型トポロジー)に分かれなければならないことを意味する。T字型トポロジーは典型的には、シグナルインテグリティの観点から、ニ地点間トポロジーよりも分が悪い。Rambus社は、高速信号がT字型トポロジーではなくニ地点間トポロジーを有するように、両面RIMM(Rambus In−line Memory Module)にミラーパッケージを用いた。このことは、主に品揃えの関係で、DRAMメーカーによって広く採用されてはいない。本開示において、該バッファチップは、業界標準のDIMNピン配列及びミラーピン配列を用いて設計することができる。該バッファチップの背後にスタックされるDRAMチップは、該バッファチップが業界標準のピン配列またはミラードピン配列を有するかどうかに関わらず、共通の業界標準ピン配列を有することができる。このことは、ミラードパッケージを用いて、それぞれをスタックすると共に、在庫品のDRAMチップを用いることによって、高速及び高容量の両面DIMMを形成することを可能にする。業界標準のDRAM PCBは全て、該PCBの両面で標準的な(すなわち、非ミラード)DRAMパッケージに適応するように設計されるため、当然、このことは、非標準DIMM PCBの使用を要する。
【0087】
別の態様においては、該バッファチップは、スタックされたメモリチップの電気的負荷をメモリチャネルから分離するだけではなく、メモリスペアリング、メモリミラーリング及びメモリRAID等の冗長性を提供する能力を有するように設計することができる。このことは、業界標準のメモリモジュールと同じ設置面積(すなわち、ピン互換性)を有するだけではなく、全ての冗長性を提供する高密度DIMMを形成することを可能にする。この能力は、DIMMスロット(または、コネクタ)の数が、サーバマザーボードのスモールフォームファクタによって制約されるブレードサーバ及び1Uラックサーバセグメント等のサーバ市場のキーセグメントにとって重要である。多くのアナリストが、該セグメントが、サーバ市場における最も急成長しているセグメントになると予測している。
【0088】
メモリスペアリングは、(p+q)個の高速メモリチップと1つのバッファチップとからなる1つ以上のスタックで実施することができる。各スタックのp個のメモリチップは、作業プールに割当てられており、オペレーティングシステム(OS)及びアプリケーションソフトウェア等のシステムリソースに利用できる。該メモリコントローラ(または場合により、AMB)が、該スタックの作業プール内のメモリチップのうちの1つが、例えば、訂正不可能なマルチビットエラーを生成したこと、または、所定のしきい値を超える訂正可能なエラーを生成したことを検知した場合、該メモリコントローラは、その不良チップを、該スペアプール内に置かれているq個のチップのうちの1つと置き換えることを選択することができる。前述のとおり、該メモリコントローラは、1つの特定のスタック内の1つの作業チップのみがエラー条件を引き起こした場合でも、ランク内の全てのスタックに対してスペアリングを行うことを選択することができ、または、エラー条件を引き起こした特定のスタックのみに、このスペアリング操作を限定することを選択してもよい。前者の方法は、メモリコントローラの観点から実施するのがより簡単であり、一方、後者の方法は、より耐障害性がある。1つの高速インタフェースチップと多重低速DRAMとで形成されたスタックの場合のメモリスペアリングを図8に示す。同じ方法を、複数の高速の在庫品DRAMと、1つのバッファチップとで形成されたスタックに適用することができる。他の実施においては、該バッファチップは、該スタックの一部ではなくてもよい。さらに他の実施においては、1つのバッファチップを、メモリチップからなる複数のスタックと共に用いることができ、または、複数のバッファチップを、メモリチップからなる単一のスタックによって使用することができる。
【0089】
メモリミラーリングは、1つのスタック内の複数の高速メモリチップを、2つの等しいセット、すなわち、作業セットとミラードセットとに分割することによって実施することができる。該メモリコントローラがデータを該メモリに書き込む場合、該バッファチップは、該データを、該作業セット及びミラードセットの両方における同じ記憶位置に書き込む。読み取りの間、該バッファチップは、該作業セットからデータを戻す。戻されたデータが訂正不可能なエラー条件を有していた場合、または、戻されたデータにおける累積訂正可能エラーが所定のしきい値を超えた場合には、該メモリコントローラは、その時点から、該作業セットにおけるエラー条件が修正されるまで、該ミラードセットから(メモリ読み取り上の)データを戻すように該バッファチップに命令することができる。該バッファチップは、該作業セット及びミラードセットの両方に書き込みを送り続けることができ、または、書き込みを該ミラードセットのみに限定してもよい。上述したように、該メモリミラーリング動作は、ランク内の全てのメモリスタックに対して同時に引き起こすことができ、または、場合により、スタックごとに行ってもよい。前者の方法は、実施するのがより容易であり、一方、後者の方法は、耐障害性を与える。1つの高速インタフェースチップと、多重低速メモリチップとで形成されたスタックの場合のメモリミラーリングを図9に示す。同じ方法を、複数の高速の在庫品DRAMと1つのバッファチップとで形成されたスタックに適用することができる。他の実施においては、該バッファチップは、該スタックの一部ではなくてもよい。さらに他の実施形態においては、1つのバッファチップを、メモリチップからなる複数のスタックと共に用いることができ、または、複数のバッファチップを、メモリチップからなる単一のスタックによって使用することができる。
【0090】
1つのスタック内でメモリミラーリングを実施することは、スタックに関連するバッファチップの故障からは保護されないという1つの欠点を有している。この場合、該メモリ内のデータは、1つのスタック内の異なる2つのメモリチップにミラーリングされるが、それら2つのチップは両方とも、共通の関連するバッファチップを介してホストシステムに情報を伝えなければならない。従って、あるスタック内のバッファチップが故障した場合、ミラードメモリの能力は無効になる。この問題を解決するための1つの方法は、該作業セット内の全てのチップを1つのスタックにグループ化するとともに、該ミラードセット内の全てのチップを別のスタックにグループ化することである。この場合、該作業スタックは、該DIMM PCBの一方の面にあり、該ミラードスタックは、該DIMM PCBの他方の面にあるとすることができる。従って、該作業スタック内のバッファチップが故障した場合、該メモリコントローラは、該PCBの該他方の面のミラードスタックにスイッチすることができる。
【0091】
該作業セットからミラードセットへのスイッチは、バンド内信号またはサイドバンド信号を、それぞれのスタック内のバッファへ送るメモリコントローラ(またはAMB)によって引き起こすことができる。別法として、それらのバッファ自体が、該作業セットからミラードセットへスイッチする能力を有するように、論理を該バッファに付加してもよい。例えば、Intel社のサーバメモリコントローラハブ(memory controller hub;MCH)のうちのいくつかは、該MCHが、当該記憶位置の最初の読み取りで訂正不可能なエラーを検知した場合、2度目のための記憶位置を読み取ることになる。該バッファチップは、最後のm個の読み取りのアドレスのトラックを保持し、かつ現在の読み取りのアドレスを、格納されているm個のアドレスと比較するように設計することができる。該バッファチップがこの一致を検知した場合、最も有効なシナリオは、該MCHがリードバックされた該データ内の訂正不可能なエラーを検地し、問題になっている記憶位置に対して2度目の読み取りを試みることである。この場合、該バッファチップは、該作業セット内の対応する記憶位置における内容がエラーを有していることを知っているため、該ミラードセットから該記憶位置の内容を読出すことができる。また、該バッファチップは、ある期間、このようなイベント(すなわち、訂正不可能なエラーによる記憶場所に対する2度目の読み取り)の数のトラックを保持するように設計することもできる。それらのイベントの数が、変化する時間窓で、あるしきい値を超えた場合には、該バッファチップは、該ミラードセットへ恒久的にスイッチし、該作業セットの機能が無効になっていたことを外部デバイスに知らせる。
【0092】
高速の在庫品DRAMからなる1つのスタック内でメモリRAIDを実施することは、非標準DRAMからなるスタック内でメモリRAIDを実施することよりも難しい。その理由は、現在の高速DRAMが、各読出しまたは書き込みアクセスのそれぞれに対して、一定量の情報を該DRAMから読出し、または該DRAMに書き込む必要がある最小バースト長を有するためである。例えば、nビット長のDDR2 SDRAMは、4という最小バースト長を有し、このことは、読み取りまたは書き込み動作ごとに、4nビットを該DRAMから読出し、または該DRAMに書き込まなければならないことを意味する。例示目的のため、以下の議論は、複数のスタックを形成するのに用いられる全てのDRAMが、8ビット長のDDR2 SDRAMであり、各スタックが専用バッファチップを有すると仮定する。
【0093】
該スタックを形成するのに8ビット長のDDR2 SDRAMを用いると仮定すると、8個のスタックがメモリランクごとに必要になる(ECCに必要な9番目のスタックを無視する)。DDR2 SDRAMは、4という最小バースト長を有するため、単一の読み取りまたは書き込み動作は、該メモリコントローラと1つのスタックとの間で、4バイトのデータを転送することを必要とする。このことは、該メモリコントローラが、各読出しまたは書き込み動作に対して、最小限32バイトのデータ(8個のスタックの場合、スタックごとに4バイト)をメモリランクへ転送しなければならないことを意味する。現在のCPUは典型的には、64バイトのキャッシュラインを、該システムメモリへのデータ転送、および該システムメモリからのデータ転送の基本単位として用いる。このことは、読出しまたは書き込み動作に対して、8バイトのデータを該メモリコントローラと各スタックとの間で転送することができることを意味する。
【0094】
1つのスタック内でメモリRAIDを実施するために、3個の8ビット長DDR2 SDRAMと、1つのバッファチップとを含むスタックを形成することができる。1つのスタック内の3つのDRAMをチップA、チップB及びチップCとする。該メモリコントローラが、ランク内の各スタックに対して、8バイトのバースト書込みを実行する(すなわち、該メモリコントローラは、64バイトのデータ、すなわち1つのキャッシュラインを全ランクに送る)メモリ書込み動作の場合を考察する。該バッファチップは、最初の4バイト(例えば、バイトZ0、Z1、Z2及びZ3)をチップA内の特定の記憶位置に書き込み、次の4バイト(例えば、バイトZ4、Z5、Z6及びZ7)を、チップBの同じ記憶位置(すなわち、アドレスx1、x2、x3及びx4)に書き込むように設計されてもよい。また、該バッファチップは、これらの8バイトに相当するパリティ情報をチップC内の同じ記憶位置に格納するように設計することもできる。すなわち、該バッファチップは、P[0,4]=Z0^Z4をチップCのアドレスx1に格納し、P[1,5]=Z1^Z5をチップCのアドレスx2に格納し、P[2,6]=Z2^Z6をチップCのアドレスx3に格納し、P[3,7]=Z3^Z7をチップCのアドレスx4に格納する。ただし、^は、ビット排他論理和演算子である。従って、例えば、P[0,4]の最下位ビット(ビット0)は、Z0及びZ4の最下位ビットの排他論理和であり、P[0,4]のビット1は、Z0のビット1とZ4のビット1の排他論理和であり、以下同様である。他のストライピング方法を用いることもできることに留意されたい。例えば、該バッファチップは、バイトZ0、Z2、Z4及びZ6をチップAに、バイトZ1、Z3、Z5及びZ7をチップBに格納してもよい。
【0095】
ここで、該メモリコントローラが同じキャッシュをリードバックする場合、該バッファチップは、チップA及びチップBの両方における記憶位置x1、x2、x3及びx4を読出し、チップAからバイトZ0、Z1、Z2及びZ3を戻した後、チップBからバイトZ4、Z5、Z6及びZ7を戻す。ここで、該メモリコントローラが、バイトZ1内にマルチビットエラーを検知したと仮定する。前述のように、Intel社のサーバMCHのうちのいくつかは、最初の読出しコマンドに応答して戻されたデータ内に訂正不可能なエラーを検知した場合、アドレス記憶位置を再び読み出す。従って、該メモリコントローラが、バイトZ1に対応するアドレス記憶位置を再び読み出す場合、該バッファチップは、該メモリコントローラが、訂正不可能なエラーをZ1内で検知したことを知っているため、2番目の読出しを検知して、Z1ではなくP[1,5]^Z5のビット排他論理和を戻すように設計することができる。
【0096】
訂正不可能なエラーの検知後の該メモリコントローラの動作は、該バッファチップのエラー回復動作に影響を及ぼす可能性がある。例えば、該メモリコントローラが、訂正不可能なエラーの発生時に、キャッシュライン全体をリードバックするが不良なバイトでスタートするバーストを要求する場合には、適切なカラムアドレスを参照して、どのバイトが該訂正不可能なエラーに相当するかを判断するように該バッファチップを設計することができる。例えば、Z1が訂正不可能なエラーに相当し、該メモリコントローラは、該スタックが、バイトZ1から続けて、8バイト(Z0〜Z7)を該コントローラへ送り戻すことを要求すると仮定する。換言すれば、該メモリコントローラは、Z1、Z2、Z3、Z0、Z5、Z6、Z7及びZ4の順番で、この8バイトを送り戻すように該スタックに求める(すなわち、バースト長=8、バーストタイプ=シーケンシャル、およびスタートカラムアドレスA[2:0]=001b)。該バッファチップは、このことが、バイトZ1が、訂正不可能なエラーに相当し、P[1,5]^Z5、Z2、Z3、Z0、Z5、Z6、Z7及びZ4を戻すことを示すことを認識するように設計することができる。別法として、該バッファチップは、いずれかの所与のバイト内の訂正不可能なエラーだけではなく、チップ全体(この場合、チップA)が故障した場合も訂正することが好ましい場合は、P[1,5]^Z5、P[2,6]^Z6、P[3,7]^Z7、P[0,4]^Z4、Z5、Z6、Z7及びZ4を戻すように設計することもできる。一方、該メモリコントローラが、通常の読出し動作中および訂正不可能なエラーによって引き起こされる2番目の読出し中と同じ順序で、キャッシュライン全体を読み出す場合には、該コントローラは、該2番目の読出しを実行する前または最中に、該バッファチップに対して、バンド内信号を介して、または、サイドバンド信号を介して、どのバイトまたはチップが該訂正不可能なエラーに相当するかを知らせなければならない。
【0097】
しかし、該メモリコントローラが、(単一のバースト長8ではなく)2つの別々のバースト長4で、64バイトキャッシュラインの読出しまたは書き込みを行う可能性もある。これは、I/Oデバイスがメモリアクセスを開始する場合である可能性もある。また、これは、64バイトキャッシュラインが、2つのDIMMに並列に格納される場合である可能性もある。このような場合、メモリRAIDの実施は、DM(Data Mask)信号の使用を要する可能性がある。ここでもまた、3個の8ビット長DDR2 SDRAMと、1つのバッファチップとで形成されている3チップスタックの場合を考察する。メモリRAIDは、1つのスタックに書き込まれる4バイトのデータが、2つのメモリチップに対してストライピングされると共に(すなわち、2バイトが各メモリチップに書き込まれる)、パリティが演算されて、第3のメモリチップに格納されることを要する。しかし、該DDR2 SDRAMは、最小バースト長4を有し、これは、転送するように設計されている最小データ量が4バイトであることを意味する。これらの両要件を満たすために、該バッファチップは、該DM信号を用いて、1つのバースト内の4つのバイトのうちの2つをチップAに導き、かつ1つのバースト内の他の2つのバイトをチップBに導くように設計することができる。この概念は、以下の例によって最もうまく説明される。
【0098】
該メモリコントローラは、メモリランクに対して32バイトの書き込みを行う場合に、バイトZ0、Z1、Z2及びZ3を特定のスタックに送り、関連するアドレスがx1、x2、x3及びx4であるとする。この例における該スタックは、3個の8ビットDDR2 SDRAM(チップA、チップB及びチップC)と、1つのバッファチップとで構成されている。該バッファチップは、3つ全てのチップA、B及びC上の記憶場所x1、x2、x3及びx4に書き込みコマンドを生成し、以下の動作を実行するように設計することができる。
・Z0及びZ2をチップAに書き込み、チップAに対するZ1及びZ3の書き込みをマスクする。
・Z1及びZ3をチップBに書き込み、チップBに対するZ0及びZ2の書き込みをマスクする。
・(Z0^Z1)及び(Z2^Z3)をチップCに書き込み、他の2つの書き込みをマスクする。
【0099】
このことは当然、該バッファチップが、メモリRAIDの実施の詳細を該メモリコントローラから隠すために、単純なアドレス変換を行う能力を有することを要する。図18は、8ビット長のDDR2 SDRAMから構成される3つのチップスタックにデータマスク(DM)信号を用いてメモリRAIDを実施するタイミング図である。図18のタイミング図の第1の信号は、ホストシステムから該スタックに送られたデータを表す。DQ_A及びDM_Aという符号が付けられた第2及び第3の信号は、チップAに対する書き込み動作中に、該バッファチップによってチップAに送られたデータ信号及びデータマスク信号を表す。同様に、信号DQ_B及びDM_Bは、チップBに対する書き込み動作中に、該バッファチップによってチップBに送られた信号を表し、信号DQ_C及びDM_Cは、チップCに対する書き込み動作中に、該バッファチップによってチップCへ送られた信号を表す。
【0100】
ここで、該メモリコントローラが、該スタックからバイトZ0、Z1、Z2及びZ3をリードバックする場合、該バッファチップは、チップA及びチップBの両方から記憶場所x1、x2、x3及びx4を読出し、各チップによって戻された4つのバイトから適切な2つのバイトを選択し、元のデータを再構成し、再構成したデータを該メモリコントローラへ戻す。2つのチップに対するデータストライピングは、他の方法で行ってもよいことに留意すべきである。例えば、バイトZ0及びZ1をチップAに書き込み、バイトZ2及びZ3をチップBに書き込んでもよい。また、この概念は、異なる数のチップで形成されているスタックに拡大適用することもできる。例えば、5個の8ビット長DDR2 SDRAMチップと、1つのバッファチップとで形成されたスタックの場合、1つのスタックに対する4バイトバーストは、各チップに対して1つのバイトを書き込み、DM信号を用いて、該バースト内の残りの3つの書き込みをマスクすることにより、4つのチップに対してストライピングすることができる。パリティ情報は、ここでもまた、関連するDM信号を用いて、第5のチップに格納することができる。
【0101】
前述のように、該メモリコントローラ(または、AMB)が、リードバックされたデータ内に訂正不可能なエラーを検知する場合、該バッファチップは、他のチップ内のデータならびにパリティ情報を用いて、不良データを再構成するように設計することができる。該バッファチップは、該メモリコントローラによって、そうすることを明確に命令された場合、または、該メモリコントローラによって送られた読出し要求をモニタリングし、ある期間中に、同じアドレスに対する多重読出しを検知することにより、あるいは、他のいくつかの手段によって、この動作を実行することができる。
【0102】
メモリRAIDにおける他のメモリチップからのデータ及びパリティデータを用いて、不良データを再構成することは、ある追加の時間を必要とする。すなわち、該バッファチップが該不良データを再構成しなければならない場合のメモリ読出し待ち時間は、通常の読出し待ち時間よりも大きい可能性が大いにある。このことは、多くの方法で適応させることができる。通常の読出し待ち時間が4クロックサイクルであり、該バッファチップが不良データを再形成しなければならない場合の読出し待ち時間を5クロックサイクルとする。該メモリコントローラは、単純に、全ての読出し動作に対して、5クロックサイクルを読出し待ち時間として用いることを選択してもよい。別法として、該コントローラは、全ての通常の読出し動作に対して、4クロックサイクルをデフォルト値とするが、該バッファチップがデータを再形成しなければならない場合には、5クロックサイクルに切り替えてもよい。該バッファチップには、データの一部を再形成しなければならない場合に、該メモリコントローラを機能停止させるという別の選択もある。これら及び他の方法は、本開示の範囲に含まれる。
【0103】
上述したように、1つのスタック内での複数のメモリチップと1つのバッファチップの組合せを用いてメモリRAIDを実施することができる。このことは、単一のメモリチップ内で、または、ランク内の多重メモリチップに対して、マルチビットエラーを訂正する能力を与える。しかし、追加のメモリチップを該スタックに付加することにより、追加のレベルの冗長性を生成することができる。すなわち、該メモリRAIDがn個のチップに対して実施される場合(この場合、データは、(n−1)個のチップに対してストライピングされ、パリティがn番目のチップに格納される)、少なくとも(n+1)個のメモリチップによって該スタックを形成することにより、別のレベルの冗長性を生成することができる。例示目的のため、2つのメモリチップ(例えば、チップA及びチップB)に対してデータをストライピングすることを望んでいると仮定する。この場合、パリティ情報を格納するために、第3のチップ(例えば、チップC)が必要である。第4のチップ(チップD)を該スタックに追加することにより、追加のレベルの冗長性を生成することができる。チップBが故障し、または、容認できないレベルの訂正不可能なエラーを生成していると仮定する。該スタック内のバッファチップは、周知のディスクRAIDシステムで用いられているのと同様の様態で、チップA内のデータと、チップC内のパリティ情報とを用いて、チップB内のデータを再構成することができる。該メモリシステムのパフォーマンスは、チップBが有効に置き換えられるまで、(チップB内のデータの再形成に関連する潜在的な長い待ち時間により)明らかに劣化する可能性がある。しかし、該スタック(チップD)内に未使用のメモリチップを有するため、次のメンテナンス操作まで、チップBの代わりに該未使用のメモリチップを用いることができる。該バッファチップは、(チップA内のデータと、チップC内のパリティ情報とを用いて)チップB内のデータを再形成して、該再形成したデータをチップDに書き込むように設計することができる。一旦、このことが完了すると、チップBは、廃棄することができる(すなわち、もはや該バッファチップによって使用されない)。チップB内でのデータの再形成および該再形成されたデータのチップDへの転送は、バックグランドで(すなわち、チップA、チップB、チップC及びチップDを含むランクが用いられないときのサイクル中に)実行するように行うことができる。または、チップDへの該転送は、データ回復動作のために、該メモリコントローラによって明確にスケジューリングされているサイクル中に実行することができる。
【0104】
メモリスペアリング、メモリミラーリング及びメモリRAID等のより高いレベルのメモリ保護を実施するのに必要な論理は、各スタックに関連するバッファチップに組込むことができる。または、該論理は、「より包括的な」バッファチップ(すなわち、個々のスタックに関連するデータビットよりも多くのデータビットをバッファリングするバッファチップ)内で実施することができる。例えば、この論理は、AMBに組込むことができる。この変形例も本開示の範囲に含まれる。
【0105】
ソケットからなる手段を用いて、高速インタフェースの背後に、追加の低速メモリチップを付加する方法を開示した。同じコンセプト(図12、図13、図14及び図15参照)は、バッファチップの背後に、高速の在庫品DRAMチップをスタックすることにも適用可能である。このことも本発明の範囲に含まれる。
【0106】
本発明を具体的な例示的実施形態に関して説明してきたが、当業者には、本発明の精神及び範囲から逸脱することなく、様々な変更及び修正を行えることが正しく認識される。
【特許請求の範囲】
【請求項1】
第1の速度でアクセス可能な複数のセルから構成されるメモリコアを備える、垂直方向にスタックされた複数のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記第1の速度よりも大きい速度で、前記DRAM集積回路とメモリバスとの間でインタフェースを設けるインタフェース集積回路と、を備えるメモリデバイス。
【請求項2】
前記インタフェース集積回路が、複数の前記DRAM集積回路とは無関係に、前記メモリバスに一定の負荷をさらに与える、請求項1に記載のメモリデバイス。
【請求項3】
前記DRAM集積回路が複数のDRAM集積回路ダイを備える、請求項1に記載のメモリデバイス。
【請求項4】
前記DRAM集積回路が複数のDRAM集積回路パッケージを備える、請求項1に記載のメモリデバイス。
【請求項5】
前記インタフェース集積回路が、業界で規定された仕様に従って作動する、請求項1に記載のメモリデバイス。
【請求項6】
前記インタフェース集積回路が、DDR2 SRAM仕様に従って作動する請求項1に記載のメモリデバイス。
【請求項7】
メモリスペアリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、メモリ集積回路のスペアプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える、請求項1に記載のメモリデバイス。
【請求項8】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記インタフェース集積回路に信号を送るメモリコントローラをさらに備え、
前記インタフェース集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のスペアプールからの少なくとも1つのDRAM集積回路と置き換える、請求項7に記載のメモリデバイス。
【請求項9】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える、請求項8に記載のメモリデバイス。
【請求項10】
前記メモリコントローラがさらに、サイドバンド信号を用いて前記エラーを伝える、請求項8に記載のメモリデバイス。
【請求項11】
メモリミラーリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、メモリ集積回路のミラードプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える、請求項1に記載のメモリデバイス。
【請求項12】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記インタフェース集積回路に信号を送るメモリコントローラをさらに備え、
前記インタフェース集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路と置き換える、請求項11に記載のメモリデバイス。
【請求項13】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える、請求項12に記載のメモリデバイス。
【請求項14】
前記メモリコントローラがさらに、サイドバンド信号を用いて前記エラーを伝える、請求項12に記載のメモリデバイス。
【請求項15】
前記pに等しいDRAM集積回路の数が、前記qに等しいDRAM集積回路の数に等しい、請求項11に記載のメモリデバイス。
【請求項16】
メモリスキームをさらに備え、
前記スタックされたDRAM集積回路が、(p+1)個のDRAM集積回路を備え、
p個のDRAM集積回路が、前記p個のDRAM集積回路に対してデータを格納する作業メモリデバイスとして用いられる複数のDRAM集積回路を備え、
少なくとも1つのDRAM集積回路が、前記p個のDRAM集積回路に格納されたデータのための追加の情報を格納し、
pが整数値を備える、請求項1に記載のメモリデバイス。
【請求項17】
前記メモリスキームがRAIDメモリスキームを備え、前記追加の情報がパリティ情報を備える、請求項16に記載のメモリデバイス。
【請求項18】
前記追加の情報がプリフェッチ情報を備える、請求項16に記載のメモリデバイス。
【請求項19】
スタックに結合され、少なくとも1つの追加のDRAM集積回路を前記スタックに付加するソケットをさらに備える、請求項1に記載のメモリデバイス。
【請求項20】
前記スタックが、少なくとも1つのインタフェース集積回路と、少なくとも1つのDRAM集積回路とを備える、請求項19に記載のメモリデバイス。
【請求項21】
前記スタックが、少なくとも1つのインタフェース集積回路を備える請求項19に記載のメモリデバイス。
【請求項22】
前記複数のDRAM集積回路が、前記メモリデバイスの製造時に、一定数のDRAM集積回路を備えるか、または、前記メモリデバイスの製造後に、可変数のDRAM集積回路を備える、請求項1に記載のメモリデバイス。
【請求項23】
異なる時間に、少なくとも1つのDRAM集積回路が追加される、請求項1に記載のメモリデバイス。
【請求項24】
ランク内の複数のDRAM集積回路をプリント配線板に実装するソケットを備える請求項1に記載のメモリデバイス。
【請求項25】
低速でアクセス可能な複数のセルから構成されるメモリコアを備える、垂直方向にスタックされた複数のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記DRAM集積回路と1つのメモリバスとの間で、前記メモリコアの前記低速アクセスと比較して高い速度でインタフェースを設けるインタフェース集積回路と、を備えるメモリデバイス。
【請求項26】
第1の速度でアクセス可能な複数のセルから構成されるメモリコアを備える複数のダイナミックランダムアクセスメモリ(DRAM)集積回路を垂直方向にスタックする手段と、
前記第1の速度よりも大きい速度で、前記DRAM集積回路と、1つのメモリバスとの間でインタフェースを設ける手段と、を備える、メモリデバイス。
【請求項27】
垂直方向にスタックされた、複数の業界標準のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記DRAM集積回路の電気的負荷と前記メモリバスとを分離するように、アドレス信号、制御信号及びデータ信号のうちの少なくとも1つをバッファリングすることにより、前記複数のDRAM集積回路と1つのメモリバスとの間でインタフェースを設けるバッファ集積回路と、を備えるメモリデバイス。
【請求項28】
前記バッファ集積回路が、前記DRAM集積回路から構成される複数のスタックのためのインタフェースを設ける、請求項27に記載のメモリデバイス。
【請求項29】
前記バッファ集積回路が、前記DRAM集積回路から構成されるスタックの外部にある、請求項27に記載のメモリデバイス。
【請求項30】
複数のバッファ集積回路が、前記DRAM集積回路から構成されるスタックと関連付けられている、請求項27に記載のメモリデバイス。
【請求項31】
メモリスペアリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、メモリ集積回路のスペアプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える請求項27に記載のメモリデバイス。
【請求項32】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記バッファ集積回路に信号を送るメモリコントローラをさらに備え、
前記バッファ集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のスペアプールからの少なくとも1つのDRAM集積回路と置き換える、請求項31に記載のメモリデバイス。
【請求項33】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える請求項32に記載のメモリデバイス。
【請求項34】
前記メモリコントローラがさらに、前記サイドバンド信号を用いて前記エラーを伝える、請求項32に記載のメモリデバイス。
【請求項35】
前記バッファ集積回路が、前記作業メモリ集積回路内で所定数のエラーが生じたか否かを判断するとともに、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のスペアプールからの少なくとも1つのDRAM集積回路と置き換える、請求項31に記載のメモリデバイス。
【請求項36】
メモリミラーリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、前記集積回路の作業メモリプールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、pに等しく、かつ前記集積回路のミラードメモリプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える、請求項27に記載のメモリデバイス。
【請求項37】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記バッファ集積回路に信号を送るメモリコントローラをさらに備え、
前記バッファ集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路と置き換える、請求項36に記載のメモリデバイス。
【請求項38】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える、請求項37に記載のメモリデバイス。
【請求項39】
前記メモリコントローラがさらに、サイドバンド信号を用いて前記エラーを伝える、請求項37に記載のメモリデバイス。
【請求項40】
前記バッファ集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路にスイッチする命令を受け取る、請求項37に記載のメモリデバイス。
【請求項41】
前記バッファ集積回路が、前記作業メモリ集積回路内で所定数のエラーが生じたか否かを判断するとともに、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路と置き換える、請求項36に記載のメモリデバイス。
【請求項42】
前記バッファ集積回路が、
アドレス情報を格納し、
前記アドレス情報を、現在の読出し動作におけるアドレス情報と比較し、
前記格納されたアドレス情報が現在の読出し動作における前記アドレス情報に匹敵する場合に、前記格納されたアドレス情報を用いる、請求項36に記載のメモリデバイス。
【請求項43】
前記バッファ集積回路が、コマンドを受け取り、
前記コマンドが、
アドレス情報を格納し、
前記アドレス情報を、現在の読出し動作におけるアドレス情報と比較し、
前記格納されたアドレス情報が現在の読出し動作における前記アドレス情報に匹敵する場合に、前記アドレス情報を用いる、請求項36に記載のメモリデバイス。
【請求項44】
メモリスキームをさらに備え、
前記スタックされたDRAM集積回路が、(p+1)個のDRAM集積回路を備え、
p個のDRAM集積回路が、前記p個のDRAM集積回路に対してデータを格納する作業メモリデバイスとして用いられる複数のDRAM集積回路を備え、
1つのDRAM集積回路が、前記p個のDRAM集積回路に格納されたデータのための追加の情報を格納し、
pが整数値を備える、請求項27に記載のメモリデバイス。
【請求項45】
前記メモリスキームがRAIDメモリスキームを備え、前記追加の情報がパリティ情報を備える、請求項44に記載のメモリデバイス。
【請求項46】
スタックに結合され、少なくとも1つの追加のDRAM集積回路を前記スタックに追加するソケットをさらに備える、請求項27に記載のメモリデバイス。
【請求項47】
前記スタックが、少なくとも1つのインタフェース集積回路と、少なくとも1つのDRAM集積回路とを備える、請求項46に記載のメモリデバイス。
【請求項48】
前記スタックが、少なくとも1つのインタフェース集積回路を備える、請求項46に記載のメモリデバイス。
【請求項49】
前記バッファ集積回路が、業界標準DRAMのピン配列を備える、請求項27に記載のメモリデバイス。
【請求項50】
前記DRAM集積回路と、少なくとも1つの前記バッファ集積回路とを備える両面DIMMプリント配線板をさらに備える、請求項27に記載のメモリデバイス。
【請求項51】
前記バッファ集積回路が、m個のこれまでの読出しのアドレスをトラッキングし、現在の読出しのアドレスを前記m個のこれまでの読出しと比較する、請求項27に記載のメモリデバイス。
【請求項52】
前記バッファ集積回路が、イベントをトラッキングし、過去のイベントに基づいて、機能を実行する、請求項27に記載のメモリデバイス。
【請求項53】
前記イベントがエラーを備え、前記機能が第2の読出し動作を備える、請求項52に記載のメモリデバイス。
【請求項54】
前記バッファ集積回路が、前記メモリバスにおいて、1つ以上のプロトコルを1つ以上のプロトコルに変換し、前記DRAM集積回路にアクセスする、請求項27に記載のメモリデバイス。
【請求項55】
垂直方向にスタックされた、複数のJEDEC規格のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記DRAMの電気的負荷を前記メモリバスから分離するように、アドレス信号、制御信号及びデータ信号のうちの少なくとも1つをバッファリングすることにより、前記複数のDRAM集積回路と、1つのメモリバスとの間でインタフェースを設けるバッファ集積回路と、を備えるメモリデバイス。
【請求項1】
第1の速度でアクセス可能な複数のセルから構成されるメモリコアを備える、垂直方向にスタックされた複数のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記第1の速度よりも大きい速度で、前記DRAM集積回路とメモリバスとの間でインタフェースを設けるインタフェース集積回路と、を備えるメモリデバイス。
【請求項2】
前記インタフェース集積回路が、複数の前記DRAM集積回路とは無関係に、前記メモリバスに一定の負荷をさらに与える、請求項1に記載のメモリデバイス。
【請求項3】
前記DRAM集積回路が複数のDRAM集積回路ダイを備える、請求項1に記載のメモリデバイス。
【請求項4】
前記DRAM集積回路が複数のDRAM集積回路パッケージを備える、請求項1に記載のメモリデバイス。
【請求項5】
前記インタフェース集積回路が、業界で規定された仕様に従って作動する、請求項1に記載のメモリデバイス。
【請求項6】
前記インタフェース集積回路が、DDR2 SRAM仕様に従って作動する請求項1に記載のメモリデバイス。
【請求項7】
メモリスペアリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、メモリ集積回路のスペアプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える、請求項1に記載のメモリデバイス。
【請求項8】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記インタフェース集積回路に信号を送るメモリコントローラをさらに備え、
前記インタフェース集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のスペアプールからの少なくとも1つのDRAM集積回路と置き換える、請求項7に記載のメモリデバイス。
【請求項9】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える、請求項8に記載のメモリデバイス。
【請求項10】
前記メモリコントローラがさらに、サイドバンド信号を用いて前記エラーを伝える、請求項8に記載のメモリデバイス。
【請求項11】
メモリミラーリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、メモリ集積回路のミラードプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える、請求項1に記載のメモリデバイス。
【請求項12】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記インタフェース集積回路に信号を送るメモリコントローラをさらに備え、
前記インタフェース集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路と置き換える、請求項11に記載のメモリデバイス。
【請求項13】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える、請求項12に記載のメモリデバイス。
【請求項14】
前記メモリコントローラがさらに、サイドバンド信号を用いて前記エラーを伝える、請求項12に記載のメモリデバイス。
【請求項15】
前記pに等しいDRAM集積回路の数が、前記qに等しいDRAM集積回路の数に等しい、請求項11に記載のメモリデバイス。
【請求項16】
メモリスキームをさらに備え、
前記スタックされたDRAM集積回路が、(p+1)個のDRAM集積回路を備え、
p個のDRAM集積回路が、前記p個のDRAM集積回路に対してデータを格納する作業メモリデバイスとして用いられる複数のDRAM集積回路を備え、
少なくとも1つのDRAM集積回路が、前記p個のDRAM集積回路に格納されたデータのための追加の情報を格納し、
pが整数値を備える、請求項1に記載のメモリデバイス。
【請求項17】
前記メモリスキームがRAIDメモリスキームを備え、前記追加の情報がパリティ情報を備える、請求項16に記載のメモリデバイス。
【請求項18】
前記追加の情報がプリフェッチ情報を備える、請求項16に記載のメモリデバイス。
【請求項19】
スタックに結合され、少なくとも1つの追加のDRAM集積回路を前記スタックに付加するソケットをさらに備える、請求項1に記載のメモリデバイス。
【請求項20】
前記スタックが、少なくとも1つのインタフェース集積回路と、少なくとも1つのDRAM集積回路とを備える、請求項19に記載のメモリデバイス。
【請求項21】
前記スタックが、少なくとも1つのインタフェース集積回路を備える請求項19に記載のメモリデバイス。
【請求項22】
前記複数のDRAM集積回路が、前記メモリデバイスの製造時に、一定数のDRAM集積回路を備えるか、または、前記メモリデバイスの製造後に、可変数のDRAM集積回路を備える、請求項1に記載のメモリデバイス。
【請求項23】
異なる時間に、少なくとも1つのDRAM集積回路が追加される、請求項1に記載のメモリデバイス。
【請求項24】
ランク内の複数のDRAM集積回路をプリント配線板に実装するソケットを備える請求項1に記載のメモリデバイス。
【請求項25】
低速でアクセス可能な複数のセルから構成されるメモリコアを備える、垂直方向にスタックされた複数のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記DRAM集積回路と1つのメモリバスとの間で、前記メモリコアの前記低速アクセスと比較して高い速度でインタフェースを設けるインタフェース集積回路と、を備えるメモリデバイス。
【請求項26】
第1の速度でアクセス可能な複数のセルから構成されるメモリコアを備える複数のダイナミックランダムアクセスメモリ(DRAM)集積回路を垂直方向にスタックする手段と、
前記第1の速度よりも大きい速度で、前記DRAM集積回路と、1つのメモリバスとの間でインタフェースを設ける手段と、を備える、メモリデバイス。
【請求項27】
垂直方向にスタックされた、複数の業界標準のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記DRAM集積回路の電気的負荷と前記メモリバスとを分離するように、アドレス信号、制御信号及びデータ信号のうちの少なくとも1つをバッファリングすることにより、前記複数のDRAM集積回路と1つのメモリバスとの間でインタフェースを設けるバッファ集積回路と、を備えるメモリデバイス。
【請求項28】
前記バッファ集積回路が、前記DRAM集積回路から構成される複数のスタックのためのインタフェースを設ける、請求項27に記載のメモリデバイス。
【請求項29】
前記バッファ集積回路が、前記DRAM集積回路から構成されるスタックの外部にある、請求項27に記載のメモリデバイス。
【請求項30】
複数のバッファ集積回路が、前記DRAM集積回路から構成されるスタックと関連付けられている、請求項27に記載のメモリデバイス。
【請求項31】
メモリスペアリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、メモリ集積回路の作業プールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、メモリ集積回路のスペアプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える請求項27に記載のメモリデバイス。
【請求項32】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記バッファ集積回路に信号を送るメモリコントローラをさらに備え、
前記バッファ集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のスペアプールからの少なくとも1つのDRAM集積回路と置き換える、請求項31に記載のメモリデバイス。
【請求項33】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える請求項32に記載のメモリデバイス。
【請求項34】
前記メモリコントローラがさらに、前記サイドバンド信号を用いて前記エラーを伝える、請求項32に記載のメモリデバイス。
【請求項35】
前記バッファ集積回路が、前記作業メモリ集積回路内で所定数のエラーが生じたか否かを判断するとともに、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のスペアプールからの少なくとも1つのDRAM集積回路と置き換える、請求項31に記載のメモリデバイス。
【請求項36】
メモリミラーリングをさらに備え、
前記スタックされたDRAM集積回路が(p+q)個のDRAM集積回路を備え、
p個のDRAM集積回路が、前記集積回路の作業メモリプールとして用いられる複数のDRAM集積回路を備え、
q個のDRAM集積回路が、pに等しく、かつ前記集積回路のミラードメモリプールとして用いられる複数のDRAM集積回路を備え、
p及びqが整数値を備える、請求項27に記載のメモリデバイス。
【請求項37】
所定数のエラーが前記作業メモリ集積回路内で生じたか否かを判断するとともに、前記エラーを知らせるために、前記バッファ集積回路に信号を送るメモリコントローラをさらに備え、
前記バッファ集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路と置き換える、請求項36に記載のメモリデバイス。
【請求項38】
前記メモリコントローラがさらに、バンド内信号を用いて前記エラーを伝える、請求項37に記載のメモリデバイス。
【請求項39】
前記メモリコントローラがさらに、サイドバンド信号を用いて前記エラーを伝える、請求項37に記載のメモリデバイス。
【請求項40】
前記バッファ集積回路が、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路にスイッチする命令を受け取る、請求項37に記載のメモリデバイス。
【請求項41】
前記バッファ集積回路が、前記作業メモリ集積回路内で所定数のエラーが生じたか否かを判断するとともに、前記メモリ集積回路の作業プールからの少なくとも1つのDRAM集積回路を、前記メモリ集積回路のミラードプールからの少なくとも1つのDRAM集積回路と置き換える、請求項36に記載のメモリデバイス。
【請求項42】
前記バッファ集積回路が、
アドレス情報を格納し、
前記アドレス情報を、現在の読出し動作におけるアドレス情報と比較し、
前記格納されたアドレス情報が現在の読出し動作における前記アドレス情報に匹敵する場合に、前記格納されたアドレス情報を用いる、請求項36に記載のメモリデバイス。
【請求項43】
前記バッファ集積回路が、コマンドを受け取り、
前記コマンドが、
アドレス情報を格納し、
前記アドレス情報を、現在の読出し動作におけるアドレス情報と比較し、
前記格納されたアドレス情報が現在の読出し動作における前記アドレス情報に匹敵する場合に、前記アドレス情報を用いる、請求項36に記載のメモリデバイス。
【請求項44】
メモリスキームをさらに備え、
前記スタックされたDRAM集積回路が、(p+1)個のDRAM集積回路を備え、
p個のDRAM集積回路が、前記p個のDRAM集積回路に対してデータを格納する作業メモリデバイスとして用いられる複数のDRAM集積回路を備え、
1つのDRAM集積回路が、前記p個のDRAM集積回路に格納されたデータのための追加の情報を格納し、
pが整数値を備える、請求項27に記載のメモリデバイス。
【請求項45】
前記メモリスキームがRAIDメモリスキームを備え、前記追加の情報がパリティ情報を備える、請求項44に記載のメモリデバイス。
【請求項46】
スタックに結合され、少なくとも1つの追加のDRAM集積回路を前記スタックに追加するソケットをさらに備える、請求項27に記載のメモリデバイス。
【請求項47】
前記スタックが、少なくとも1つのインタフェース集積回路と、少なくとも1つのDRAM集積回路とを備える、請求項46に記載のメモリデバイス。
【請求項48】
前記スタックが、少なくとも1つのインタフェース集積回路を備える、請求項46に記載のメモリデバイス。
【請求項49】
前記バッファ集積回路が、業界標準DRAMのピン配列を備える、請求項27に記載のメモリデバイス。
【請求項50】
前記DRAM集積回路と、少なくとも1つの前記バッファ集積回路とを備える両面DIMMプリント配線板をさらに備える、請求項27に記載のメモリデバイス。
【請求項51】
前記バッファ集積回路が、m個のこれまでの読出しのアドレスをトラッキングし、現在の読出しのアドレスを前記m個のこれまでの読出しと比較する、請求項27に記載のメモリデバイス。
【請求項52】
前記バッファ集積回路が、イベントをトラッキングし、過去のイベントに基づいて、機能を実行する、請求項27に記載のメモリデバイス。
【請求項53】
前記イベントがエラーを備え、前記機能が第2の読出し動作を備える、請求項52に記載のメモリデバイス。
【請求項54】
前記バッファ集積回路が、前記メモリバスにおいて、1つ以上のプロトコルを1つ以上のプロトコルに変換し、前記DRAM集積回路にアクセスする、請求項27に記載のメモリデバイス。
【請求項55】
垂直方向にスタックされた、複数のJEDEC規格のダイナミックランダムアクセスメモリ(DRAM)集積回路と、
前記DRAMの電気的負荷を前記メモリバスから分離するように、アドレス信号、制御信号及びデータ信号のうちの少なくとも1つをバッファリングすることにより、前記複数のDRAM集積回路と、1つのメモリバスとの間でインタフェースを設けるバッファ集積回路と、を備えるメモリデバイス。
【図1】
【図2a】
【図2b】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8a】
【図8b】
【図8c】
【図8d】
【図8e】
【図9a】
【図9b】
【図9c】
【図9d】
【図9e】
【図10a】
【図10b】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2a】
【図2b】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8a】
【図8b】
【図8c】
【図8d】
【図8e】
【図9a】
【図9b】
【図9c】
【図9d】
【図9e】
【図10a】
【図10b】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2012−238376(P2012−238376A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−132119(P2012−132119)
【出願日】平成24年6月11日(2012.6.11)
【分割の表示】特願2008−529353(P2008−529353)の分割
【原出願日】平成18年9月1日(2006.9.1)
【出願人】(507421186)メタラム インコーポレイテッド (6)
【Fターム(参考)】
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2012−132119(P2012−132119)
【出願日】平成24年6月11日(2012.6.11)
【分割の表示】特願2008−529353(P2008−529353)の分割
【原出願日】平成18年9月1日(2006.9.1)
【出願人】(507421186)メタラム インコーポレイテッド (6)
【Fターム(参考)】
[ Back to top ]