以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
本発明はメモリシステムアーキテクチャに関する。以下の説明は、この分野で熟練した者によって製作され、使用される程度に開示する。本発明は多様な変更を加えることができ、様々な形態を有することができるため、特定の実施形態を図面に例示して本明細書で詳細に説明する。例示する実施形態は特定の実施形態を提供するための方法及びシステムについて説明する。
しかし、このような方法及びシステムは他の実施形態でも効果的に動作する。“特定の実施形態”や“一実施形態”、及び“他の実施形態”は、同一又は他の実施形態のみならず、多様な実施形態を意味する。これらの実施形態は特定の構成を含むシステム及び/又は装置として表現される。しかし、本発明の実施形態によるシステム及び/又は装置は、図示した構成より更に少ない数の構成でもよく、配列の変更や構成の種類の変更が本発明の範囲を逸脱しない範囲内で行われ得る。本発明の例示的な実施形態は特定の段階を含む方法として説明する。しかし、そのような方法及びシステム動作は本発明の実施形態と矛盾しないか及び/又は他の順序を有する追加的なステップを有する方法でも効果的に動作する。従って、本発明の概念を適用した実施形態は図示した例のみに制限されない。
特定の要素を含む特定のメモリシステムアーキテクチャに含まれるものとして実施形態を説明する。本発明が属する技術分野で通常の知識を有する者は本発明の実施形態が他の追加構成や特徴を含むメモリシステムアーキテクチャでも同様に動作することが理解される。しかし、本発明が属する技術分野で通常の知識を有する者は本発明の方法及びシステムが他の構造でも同様に動作することが理解される。方法及びシステムは文脈上単一要素で表現することもある。しかし、本発明が属する技術分野で通常の知識を有する者は方法及びシステムが複数の要素を有するメモリシステムアーキテクチャを使用して同様に動作することが理解される。
図1は、一実施形態によるメモリシステムアーキテクチャを備えたシステムを示す概略図である。システム100はプロセッサ104に連結されるメモリ102を含む。メモリ102はデータを格納する。データがメモリ102から読み出される時、メモリ102はデータにあるエラーを訂正する。例えば、メモリ102はシングルビットエラーを訂正する。メモリ102はダブルビットエラーを感知する。本実施形態で、例示のために特定のビット数のエラーが訂正されると説明したが、メモリ102は多様なビット数のエラーを訂正するか或いは感知し得る。更に、本実施形態で、1つ又はそれ以上のエラー訂正技術がシングルビットエラー訂正又はダブルビットエラー訂正感知をもたらすが、メモリ102は少なくとも1つのエラーを訂正する何らかのエラー訂正技術も遂行し得る。
メモリ102はデータを格納する装置を含む。特定の例で、メモリ102は、DRAM(dynamic random access memory)である。メモリ102はDDR、DDR2、DDR3、DDR4、又はこれらに類似する標準規約に従うDDR SDRAM(double data rate synchronous dynamic random access memory)を含む。他の実施形態で、メモリ102は、SRAM(static random access memory)、不揮発性メモリ、又はこれらに類似するものを含む。
メモリ102は格納されたデータから読み出されたデータにあるエラーを訂正するか又はエラー訂正の試みに応答してエラー情報を生成する。例えば、エラー情報は、訂正されたエラー、訂正されないエラー、エラー無し(absence of an error)、エラーの数、又はこれらに類似するものに関する情報を含む。エラー情報は、実際のエラー、エラーのアドレス、エラーが発生した回数、又はメモリ102に特定の情報を含む。特定の例で、エラー情報はメモリ102がシングルビットエラーを訂正したことを示すシングルビットエラーに関する情報を含む。本実施形態で、特定のエラー情報を説明したが、エラー情報はエラーに関するどのような情報も含まれ得る。
プロセッサ104はメモリに連結されて命令を実行する。例えば、プロセッサ104は、汎用プロセッサ、DSP(digital signal processor)、GPU(graphics processing unit)、ASIC(application specific integrated circuit)、プログラム可能な論理的装置(programmable logic device)、又はこれらに類似するものである。
プロセッサ104は第1通信経路106及び第2通信経路108を通じてメモリ102に連結される。プロセッサ104は第1通信経路106を通じてメモリからデータを受信する。例えば、第1通信経路106は、データ信号、ストロ−ブ信号、クロック信号、イネーブル信号、又はこれらに類似する信号ラインを備えたシステムメモリインターフェイスである。即ち、通信経路106はプロセッサ104とメインシステムメモリに対するメモリ102との間のインターフェイスであるメインメモリチャンネルの一部である。
プロセッサ104は他の通信経路である第2通信経路108を通じてメモリ102に連結される。プロセッサ104は第2通信経路108を通じてメモリ102からエラー情報を受信する。従って、一実施形態で、プロセッサ104は第1通信経路106と異なる他の第2通信経路108を通じてエラー情報、特に訂正されたエラー情報を受信する。訂正されたエラー情報は訂正されたエラーに関する情報である。上述したように、エラー情報はエラーに関連する多様なタイプの情報を含む。従って、訂正されたエラー情報は訂正されたエラーに関連する類似するタイプの情報を含む。
ソフトウェア110はプロセッサ104に連結されるとして図示した。しかし、ソフトウェア110は、プロセッサ104で実行される多様なプログラム、ドライバ、モジュール、ルーチン、又はこれらに類似するものを含む。例えば、ソフトウェア110は、ドライバ、カーネルモジュール、デーモン(daemon)、アプリケーション、又はこれらに類似するものを含む。
特定の実施形態で、ソフトウェア110はプロセッサ104をイネーブルさせて本明細書で説明する特定の機能を遂行する。
本実施形態で、1つのメモリ102を例示的に使用したが、所定数のメモリ102であっても通信経路(106、108)に類似する2つの通信経路を通じてプロセッサ104に連結され得る。一実施形態で、各々のメモリ102は他のメモリ102と分離されて専用の第1通信経路106を通じて、そして他のメモリ102と分離されて専用の第2通信経路108を通じてプロセッサ104に連結される。しかし、他の実施形態で、第1通信経路106は1つ以上のメモリ102によって共有され、第2通信経路108も1つ以上のメモリ102によってと共有される。更に、本実施形態で、1つの第1通信経路106を説明したが、1つ又はそれ以上のメモリ102との間に複数の第1通信経路106が存在する。更に、本実施形態で、1つの第2通信経路108を説明したが、1つ又はそれ以上のメモリ102との間に複数の第2通信経路108が提供される。
一実施形態で、エラー情報はアウトオブバンド(out of band)通信経路を通じて交換される。第2通信経路108はそのようなアウトオブバンド通信経路である。即ち、プロセッサ104とメモリ102との間のメイン通信は第1通信経路106を通じて遂行される。これに対して、エラー情報はアウトオブバンド通信経路108を通じて交換される。
図2は、一実施形態によるコントローラを含むメモリシステムアーキテクチャを備えたシステムを示す概略図である。本実施形態で、システム200は、図1のメモリ102、プロセッサ104、通信経路(106、108)、及びソフトウェア110に類似するメモリ202、プロセッサ204、通信経路(206、208)、及びソフトウェア210を含む。しかし、第2通信経路208は、コントローラ214、コントローラ214とプロセッサ204との間に連結された第2バス216、及びコントローラ214とメモリ202との間に連結された第1バス212を含む。即ち、プロセッサ204及びメモリ202の両方に連結されたコントローラ214は第2通信経路208の一部である。
コントローラ214はメモリ202及びプロセッサ204に連結された装置である。例えば、プロセッサ214は、汎用プロセッサ、DSP(digital signal processor)、GPU(graphics processing unit)、ASIC(application specific integrated circuit)、プログラム可能な論理的装置(programmable logic device)、又はこれらに類似するものである。
バス(212、216)は多様な通信回線である。例えば、バス(212、216)はSMBus(system management bus)、I2C(inter integrated circuit)バス、IPMI(intelligent platform management interface)準拠のバス、Modbus、又はこれらに類似するものである。特定の実施形態で、第2通信経路208の少なくとも一部は第1通信経路206より遅い伝送速度で動作する。例えば、メモリ202とプロセッサ204との間の第1通信経路206は10GB/Sのデータ伝送速度(data rate transfer)より速くなるように設計される。しかし、第2通信経路208は10Mbit/s、100kbit/s、又はこれらに類似するものより遅いデータ伝送速度を有する。従って、特定の実施形態で、第1通信経路206と第2通信経路208のデータ伝送速度比率は、約100、1000、又はそれ以上である。
一実施形態で、第2通信経路208は専用通信経路である。即ち、第2通信経路208は単にメモリ202とプロセッサ204との間の情報の通信のために使用される。しかし、他の実施形態で、コントローラ214は他の装置にアクセスする。例えば、不揮発性メモリ装置268がバス212によってコントローラ214に連結される。他の実施形態で、他の装置266がコントローラ214に連結される。従って、メモリ202から伝送される情報と異なる情報は、バス212及び/又は216を通じてプロセッサ204及び/又はメモリ202に、そしてプロセッサ204及び/又はメモリ202から伝送される。特に、メモリ202から伝送されるエラー情報は、不揮発性メモリに関する目的を含む他の目的のために使用される第2通信経路208を通じてプロセッサ204と交換される。
一実施形態で、コントローラ214は不揮発性メモリ(NVM)254を含む。不揮発性メモリ254はメモリ202から伝送されたエラー情報を格納する。従って、エラー情報は電源が遮断されでもコントローラ214に保存される。プロセッサ24はコントローラ214から伝送されるエラー情報を要請する。従って、コントローラ214は不揮発性メモリ254に格納されたエラー情報を提供することによって、そのような要請に応答し、メモリ202にアクセスしてプロセッサ204又はこれに類似するものに応答してエラー情報を検索する。
一実施形態で、コントローラ214はエラー情報のためにメモリ202をポーリング(polling)する。他の実施形態で、メモリ202はメモリ情報をコントローラ214にプッシュ(push)する。いずれの場合も、不揮発性メモリ254に格納されたエラー情報は概略最新の情報(up to date copy)である。
図3は、一実施形態によるベースボード管理コントローラ(baseboard management controller:BMC)を含むメモリシステムアーキテクチャを備えたシステムを示す概略図である。本実施形態で、システム300は、図2のメモリ202、プロセッサ204、通信経路(206、208)、及びソフトウェア210に類似するメモリ302、プロセッサ304、通信経路(306、308)、及びソフトウェア310を含む。しかし、コントローラ314はBMC314である。
BMC314はシステム300を管理する。例えば、BMC314はプロセッサ304、メモリ302、他の装置366、又はこれらに類似するセンサーを含むシステム300の多様なセンサーに連結される。BMC314は、温度、冷却状態、電源状態、又はこれらに類似する多様なシステムパラメーターを収集し、報告する。BMC314は、標準規約に従ってシステムを管理し、情報に対するアクセスをイネーブルさせる。管理情報はプロセッサ304が利用し、従ってソフトウェア310で利用される。或いは、BMC314はアウトオブバンド通信経路のような他の通信経路を通じて利用される情報を生成する。ここで、アウトオブバンド通信経路はプロセッサ304を含まない任意の通信経路である。
図4は、一実施形態によるプロセッサ基盤のエラー訂正(processor based error correction)を遂行しないメモリシステムアーキテクチャを備えたシステムを示す概略図である。本実施形態で、システム400は、図1のメモリ102、プロセッサ404、通信経路(106、108)、及びソフトウェア110に類似するメモリ402、プロセッサ404、通信経路(406、408)、及びソフトウェア410を含む。しかし、本実施形態で、プロセッサ404はメモリコントローラ(MC)450及びMCA(machine check architecture)レジスター452を含む。
メモリコントローラ450はプロセッサ404に集積される。メモリコントローラ450はプロセッサ404とメモリ402との間のメインインターフェイスであるメインメモリチャンネルの一部である。メモリコントローラ450は第1通信経路406を通じてメモリ402に格納されたデータに対するアクセスを制御する。特定の実施形態で、メモリコントローラ450は、エラーを訂正する場合、エラー訂正がメモリ402によって遂行されると、そのようなエラーを訂正することができないことがある。しかし、本実施形態で、メモリコントローラ450はメモリ402から読み出されたデータにあるエラーを訂正しない。メモリコントローラ450はメモリ402から読み出されたデータに基づく何らかのエラーも報告されない。
MCAレジスター452はその内部にハードウェアエラーが報告されるレジスターである。例えば、キャッシュエラー、バスエラー、データエラー、又はこれらに類似するものは、MCAレジスター452で感知され、報告される。しかし、メモリコントローラ450は、メモリ402から読み出されたデータにあるエラーを訂正しないため、メモリ402から読み出されたデータに基づく何らかの潜在的エラー情報(potential error information)もMCAレジスター452に報告されない。いずれの場合も、上述したように、エラー情報は第2通信経路408を通じてプロセッサ404と交換される。従って、メモリコントローラ450及びMCAレジスター452を通じなくても、エラー情報はソフトウェア410で利用される。
一実施形態で、第2通信経路408を通じたエラー情報の利用は低コストのシステム400を可能にする。例えば、特定のメモリ訂正がないメモリコントローラ450を備えたプロセッサ404が使用され、その上エラー情報がそれでも利用される場合、特にメモリエラー訂正が要求されたとしても、第2通信経路408を通じて利用されるエラー情報が存在するため、エラー訂正機能が無いプロセッサ404を使用することができる。従って、エラー情報を使用する任意のソフトウェアを含むソフトウェア410は、まるでプロセッサがメモリエラー訂正をするように変わらず動作する。エラー訂正がないプロセッサ404は、より低い電力、より低いコストのプロセッサである。従って、システム400の全体的な電力使用及びコストは減少する。
本実施形態で、メモリコントローラ450がプロセッサ404に集積されたものを図示したが、メモリコントローラ450はプロセッサ404と分離され得る。いずれの場合も、第2通信経路408はメモリコントローラ450及びエラー訂正回路を有するプロセッサ404の他の部分をバイパスする。そのような構成要素のバイパスは、第2通信経路408を通じたエラー情報の交換がメモリコントローラ450、MCAレジスター452、又はこれらに類似するものと独立する。即ち、本実施形態で、類似する情報がメモリコントローラ450及び/又はMCAレジスター452を通じて利用されない場合も、エラー情報は変わらず利用される。
図5は、一実施形態による汚染されたデータストローブ信号(poisoned data strobe signal)を有するメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム500は、図1のメモリ102、プロセッサ104、通信経路(106、108)、及びソフトウェア110に類似するメモリ502、プロセッサ504、通信経路(506、508)、及びソフトウェア510を含む。しかし、本実施形態で、第1通信経路506はデータライン532及びデータストローブライン533を含む。他のラインは、第1通信経路506の一部として提供されるが、簡易のために図示しない。
一実施形態で、訂正不可能なエラーに関連するエラー情報及び訂正可能なエラーに関連するエラー情報は他の経路を通じて交換される。上述したように、訂正可能なエラー情報は第2通信経路508を通じて交換される。訂正不可能なエラー情報は訂正不可能なエラーに基づく多様な他のタイプの情報を含む。訂正不可能なエラー情報は第1通信経路506を通じて交換される。例えば、メモリ502はデータストローブライン533を通じて伝送された(又は、伝送されない)信号によって訂正不可能なエラーを訂正する。即ち、一般的なデータ伝送の間にデータストローブライン533を通じて伝送されるデータストローブ信号は、データが伝送される時にトグリング(toggle)される。しかし、メモリ502が訂正不可能なエラーを感知した場合、メモリ502は、一般的なデータ伝送の間のデータストローブ信号とは異なるデータストローブライン533を通じた伝送のためのデータストローブ信号を生成する。特に、メモリ502がデータストローブライン533を通じて伝送されたデータストローブ信号をトグリングしない場合、そのような条件が感知されると、プロセッサ504はソフトウェア510によって処理されるハードウェア例外(hardware exception)を生成する。
本実施形態で、第1通信経路506内の信号及び/又はラインを訂正不可能なエラーを交換するための技術の例として使用したが、他の信号及び/又はラインがプロセッサと訂正不可能なエラーを交換するために使用され得る。どのようにして交換するかに拘らず、システム500を停止させるか或いは他のアクションをとることによって、プロセッサ504はそのような訂正不可能なエラーの交換に応答する。
図6は、一実施形態による他の訂正不可能なエラー信号を有するメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム600は、図1のメモリ102、プロセッサ104、通信経路(106、108)、及びソフトウェア110に類似するメモリ602、プロセッサ604、通信経路(606、608)、及びソフトウェア610を含む。しかし、本実施形態で、他の通信経路(第3通信経路)634がメモリ602とプロセッサ604との間に連結される。
図5のシステム500と同様に、訂正不可能なエラーはプロセッサ604と交換される。本実施形態で、メモリ602は第3通信経路634を通じて訂正不可能なエラー情報を交換する。例えば、第3通信経路634は第1通信経路606とは別の専用ラインである。従って、訂正不可能なエラーに関連するエラー情報は、第1及び第2通信経路606、608とは異なる通信経路を通じて、プロセッサ604によって受信される。
図7は、一実施形態によるソフトウェアモジュールを有するメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム700は、図1のメモリ102、プロセッサ104、通信経路(106、108)、及びソフトウェア110に類似するメモリ702、プロセッサ704、通信経路(706、708)、及びソフトウェア710を含む。しかし、本実施形態で、ソフトウェア710はモジュール718を含む。
モジュール718はプロセッサを通じてエラー情報722にアクセスするソフトウェア710の一部を表わす。例えば、モジュール718は、カーネルモジュール、ドライバ、拡張、又はこれらに類似するものを含む。モジュール718は通信経路708に関連するインターフェイスのためのドライバを含む。特定の実施形態で、モジュール718はIPMIバス、IPMI2バス、又はこれらに類似するものに関連するドライバを含む。他の情報720はソフトウェア710で利用される。エラー情報722は、エラー情報722に関連するソフトウェア710の一部を示すように別に図示した。
本実施形態で、モジュール718はメモリ702からプロセッサ704に伝送されるエラー情報を要請する。例えば、メモリ702はエラー情報を生成し、その後プロセッサ704は第2通信経路708を通じてエラー情報のための要請を伝送する。メモリ702は第2通信経路708を通じてエラー情報と共に要請に応答する。
図8は、一実施形態によるエラー検出及び訂正(EDAC)モジュールを有するメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム800は、図7のメモリ702、プロセッサ704、通信経路(706、708)、及び情報(720、722)に応答して動作するメモリモジュール718を含むソフトウェア710に類似するメモリ802、プロセッサ804、通信経路(806、808)、及び情報(820、822)に応答して動作するモジュール818を含むソフトウェア810含む。しかし、本実施形態で、ソフトウェア810はエラー検出及び訂正(error detection and correction:EDAC)モジュール824を含む。
一実施形態で、EDACモジュール824は、メモリ、キャッシュ、入出力装置、周辺装置、バス、及び/又はシステム800の他の部分から提供されるエラー情報を管理し、アプリケーションレイヤーのような高機能レイヤーにそのような情報を提供する。特に、EDACモジュール824はモジュール818からエラー情報を受信する。EDACモジュール824は、エラー情報と他の情報とを組合せることで、他のモジュール、アプリケーション、又はこれらに類似するものがエラー情報にアクセスすることを可能にする。
図9は、一実施形態による収集モジュールを備えたメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム900は、図7のメモリ702、プロセッサ704、通信経路(706、708)、及び情報(720、722)に応答して動作するモジュール718を含むソフトウェア710に類似するメモリ902、プロセッサ904、通信経路(906、908)、及び情報(920、922)に応答して動作するモジュール(918、926)を含むソフトウェア910を含む。しかし、本実施形態で、ソフトウェア910は第2モジュール926を含む。第2モジュール926は他の情報920を受信する。特に、他の情報920はメモリ902に対するエラーに関連しない情報を含む。他の情報920の少なくとも一部921は第1モジュール918によって受信される。第1モジュール918は第2モジュール926から伝送された他の情報920の一部又は全部とエラー情報922とを組合せる。第1モジュール918は単一インターフェイスに組合された情報を提供する。例えば、第1モジュール918は、図8のEDACモジュール824のような、EDACモジュールに組合された情報を提供する。
図10は、一実施形態によるメモリコントロールアーキテクチャ(MCA)モジュールから情報を収集するエラー訂正(EC)モジュールを備えたメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム1000は、図9のメモリ902、プロセッサ904、通信経路(906、908)、及び情報(920、922)に応答して動作するモジュール(918、926)を含むソフトウェア910に類似するメモリ1002、プロセッサ1004、通信経路(1006、1008)、及び情報(1020、1022)に応答して動作するモジュール(1018、1026)を含むソフトウェア1010を含む。しかし、本実施形態で、第1モジュール(1018)はエラー訂正(error correction:EC)モジュール1018であり、第2モジュール(1026)はMCAモジュール1026である。
MCAモジュール1026は図4のMCAレジスター452のようなMCAレジスターに対するアクセスを制御する。情報1020はMCAレジスター452から伝送される情報を示す。ECモジュール1018はMCAモジュール1026にアクセスして情報1020を復旧するように構成される。ECモジュール1018はMCAモジュール1026から伝送された情報1020をエラー情報1022と組合せ、組合された情報を単一インターフェイスで提供する。
特に、ECモジュール1018はプロセッサ1004がエラーを訂正するようにするMCAモジュール1026に類似するか又は同一の方式でインターフェイスを提供する。例えば、プロセッサ1004がメモリ1002から読み出されたデータにあるエラーを訂正する場合、その情報はMCAモジュール1026を通じて利用される。しかし、プロセッサ1004がメモリ1002から読み出されたデータにあるエラーを訂正しない場合、メモリ1002で訂正されるエラーのためにMCAモジュール1026によってモニターリングされる通信経路でエラー情報を受信しないと、MCAモジュール1026はエラー情報を提供できない。いずれの場合も、ECモジュール1018は、第2通信経路1008を通じて獲得されたエラー情報1022と情報1020とを組合せ、MCAモジュール1026から提供されてプロセッサ1004によってメモリ1002から読み出されたデータにあるエラーを訂正する情報又はMCAモジュール1026で利用されるエラー情報に類似するか或いは同一の組合された情報を提供する。ソフトウェア1010は、プロセッサ1004がエラー訂正機能を提供するか否かに関係なく、同一であるか又は類似するインターフェイスを使用する。即ち、エラー訂正機能を有するプロセッサ1004は全てに使用されるエラー情報に依存するソフトウェアに対して必須的なことではない。結果的に、エラー訂正機能が無いプロセッサ1004で費用節減が可能になる。
図11は、一実施形態によるインターフェイスを共有する複数のモジュールを備えたメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム1100は、図7のメモリ702、プロセッサ704、通信経路(706、708)、及び情報(720、722)に応答して動作するソフトウェア710に類似するメモリ1102、プロセッサ1104、通信経路(1106、1108)、及び情報(1120、1122)に応答して動作するソフトウェア1110を含む。しかし、本実施形態で、ソフトウェア1110は、第1モジュール1118、第2モジュール1128、及びインターフェイスモジュール1130を含む。
第1モジュール1118は図7のモジュール718に類似する。しかし、第1モジュール1118はインターフェイスモジュール1130を通じてメモリ1102からエラー情報を受信する。インターフェイスモジュール1130は第2通信経路1108にインターフェイスを提供する。例えば、インターフェイスモジュール1130はIPMIバスを通じてアクセスを許容するモジュールである。
第2モジュール1128もインターフェイスモジュール1130を通じて通信を遂行する。例えば、第2モジュール1128は、IPMIバスに接続される他の装置にアクセスするか、或いは熱情報又は電源情報のようなメモリ1102内の他の部分にアクセスする。エラー情報及び他の情報の全てはインターフェイスモジュール1130によって伝達されるエラー情報1122の一部分である。即ち、エラー情報は、全体経路を通じて専用のソフトウェアを使用して伝送されるが、モジュール、インターフェイス、バス、又はこれらに類似するものに関連するか、或いは関連しない情報やソースを共有する。
図12は、一実施形態によるインターフェイスを共有する訂正エラー(CE)モジュール及び直列プレゼンス検出(SPD)/レジスタークロックドライバ(RCD)モジュールを備えたメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム1200は、図11のメモリ1102、プロセッサ1104、通信経路(1106、1108)、及び情報(1120、1122)に応答して動作するモジュール(1118、1128、1130)を含むソフトウェア1110に類似するメモリ1202、プロセッサ1204、通信経路(1206、1208)、及び情報(1220、1222)に応答して動作するモジュール(1218、1228、1230)を含むソフトウェア1210を含む。しかし、本実施形態で、第1モジュール(1218)は訂正エラー(corrected error:CE)モジュールであり、第2モジュール(1228)は直列プレゼンス検出(serial presence detect:SPD)/レジスタークロックドライバ(registering clock driver:RCD)モジュール1228である。
特に、SPD/RCDモジュール1228は直列プレゼンス検出システム及び/又はレジスタークロックドライバシステムに関連する情報にアクセスする。SPD/RCDモジュール1228はそのようなシステムの1つ又は全てにアクセスする。情報は第2通信経路1208を通じてアクセスされる。従って、本実施形態でメモリ1202から提供されるエラー情報はSPD/RCDに関連する情報として第2通信経路1208を通じてアクセスされる。
図13は、一実施形態によるDRAM内エラー訂正を備えたメモリシステムアーキテクチャを含むシステムを示す概略図である。本実施形態で、システム1300は、図10のメモリ1002、プロセッサ1004、及び情報(1020、1022)に応答して動作するエラー訂正モジュール1018とMCAモジュール1026に類似するメモリ1302、プロセッサ1304、及び情報(1320、1322)に応答して動作するエラー訂正(EC)モジュール1318とMCA(machine check architecture)モジュール1326を含むカーネル1310を含む。しかし、本実施形態で、メモリ1302の各々はECC機能を有するデュアルインラインメモリモジュールECC DIMMで提供される。
各々のECC DIMM1302は、データを格納し、格納されたデータにあるエラーを訂正する。本実施形態で、ECC DIMM1302は対応する通信経路1364を通じてプロセッサ1304のメモリコントローラ(MC)1350に各々連結される。通信経路1364は図5の通信経路506と同様にデータ信号及びデータストローブ信号を伝達するためのラインを含む。ECC DIMM1302は図3のバス312、BMC314、及びバス316に類似するバス1312、BMC1314、及びバス1316を含む通信経路1308を通じてプロセッサ1304に各々連結される。
一実施形態で、ECC DIMM1302は、ECC DIMM1302から読み出されたデータにある1つ又はそれ以上のエラーを訂正する。エラー訂正技術は、シングルエラー訂正−ダブルエラー検出(single error correction−double error detection:SEC−DEC)技術、シングルチップチップキル(single chip chipkill)技術、ダブルチップチップキル(double chip chipkill)技術等を含む何らかのエラー訂正技術である。
本実施形態で、メモリコントローラ1350はエラー訂正を遂行しないか、或いはECC DIMM1302からエラー情報を受信しない。ECC DIMM1302を経由するデータは既にエラーが訂正されたため、メモリコントローラ1350は訂正可能なエラーを示す何らの情報も受けない。しかし、エラー情報、特に訂正されたエラー情報はバス(1312、1316)及びBMC1314の通信経路1308を通じてプロセッサ1304に伝達される。
一実施形態で、プロセッサ1304はエラー訂正を遂行しないプロセッサであるが、バス1316に連結されるインターフェイスを有するプロセッサである。しかし、一度、プロセッサ1304がカーネル1310、特にエラー訂正モジュール1318によって設定されると、システム1300はエラー訂正機能を有するプロセッサを含むシステムと同様にエラー訂正を遂行する。
一実施形態で、エラー訂正モジュール1318はエラー訂正インターフェイスを有する仮想メモリコントローラを生成する。例えば、上述したように、エラー訂正モジュール1318はMCAモジュール1326から情報を受信する。この時、情報はエラー訂正インターフェイスを有する実際のメモリコントローラが一部又は全部のエラー情報無しに提供する情報である。エラー訂正モジュール1318はメモリコントローラのECCインターフェイスから期待される情報の完成セットを生成するためのエラー情報を補完する。結果的に、EDACモジュール1324、メモリECCデーモン1358、他のアプリケーション1360等は、エラー訂正と共にプロセッサで使用されるものの、変更無しに使用される。例えば、EDACモジュール1324はメモリECC情報のためにECモジュール1318をポーリング(polling)する。結果、ECモジュール1318は第2通信経路1308を通じて受信されたエラー情報をリターンする。EDACモジュール1324と通信するメモリECCデーモン1358はエラー情報のためにEDACモジュール1324をポーリングする。その後、メモリECCデーモン1358はアプリケーションレベルでエラー情報に対応するアクションを行う。そのようなアクションは、ページ満了、システム1300を動作させるための他のエラー管理動作、信頼性レベルを維持するための動作、廃棄推薦等を含む。
上述したように、訂正不可能なエラーが検出される。訂正不可能なエラー情報は、メモリコントローラ1350、MCAレジスター1352、及びMCAモジュール1326を通じてエラー訂正モジュール1318に伝達される。例えば、訂正不可能なエラーは、MCAモジュール1326を通じてマスク不可インタラプト(non maskable interrupt)、例外等に伝達される。特定の実施形態で、メモリコントローラ1350にどのようにして伝達されたかに拘らず、メモリコントローラ1350は訂正不可能なエラーに応答してハードウェア例外を生成する。MCAモジュール1326は上述した例外情報をインタラプトしてエラー訂正モジュール1318に伝達する。そうすると、エラー訂正モジュール1318は例外情報をEDACモジュール1324に伝達する。上述したように訂正不可能なエラー情報を伝達することに加えて又は伝達することの代わりに、訂正不可能なエラー情報は第2通信経路1308を通じて伝達される。
一実施形態で、ECC DIMM1302は訂正されたデータをプロセッサ1304に伝達する。しかし、データはECC DIMM1302とメモリコントローラ1350との間で誤謬が発生する。従って、特定の形態のエラー訂正がECC DIMM1302とプロセッサ1304又はメモリコントローラ1350との間で遂行される。例えば、ECC DIMM1302から伝達されるデータは通信経路1364上で発生するエラーを検出するように意図されたエラー訂正コードでエンコーディングされる。このようなエラー訂正によって、ECC DIMM1302の格納媒体からプロセッサ1304に伝達される全体経路がエラー訂正から保護される。
図14A〜図14Dは、一実施形態によるモジュール内エラー訂正を備えたメモリシステムアーキテクチャを含むシステムを示す概略図である。
図14Aを参照すると、システム1400は図13のシステムに類似する構成を含む。しかし、本実施形態で、ECC DIMM1402はバッファ1462を含む。バッファ1462はECC DIMM1402から読み出されるデータに含まれるエラーを訂正する。特に、非訂正データはECC DIMM1402のDRAM装置(図示せず)の内部メモリ装置から読み出される。バッファ1462は、本明細書で説明する他のメモリと同様に非訂正データのエラーを訂正し、訂正されたエラー情報を生成する。上述したエラー情報は、第2通信経路1408を通じて伝達され、上述した方法によって使用される。即ち、エラー情報は、エラー情報が生成された方式に拘らず、上述した多様な方法によって使用される。
図14Bを参照すると、システム1400の構成は図14Aのそれに類似する。しかし、本実施形態で、EDACモジュール1424はMCAモジュール1426と情報を交換するように構成される。例えば、EDACモジュール1424は、ハードウェア関連情報、訂正不可能なエラー情報、又はMCAモジュール1426を通じて利用される情報のためにMCAモジュール1426をポーリングする。EDACモジュール1424はMCAモジュール1426から提供される情報とエラー訂正モジュール1418から伝達される情報を組合せる。
図14Cを参照すると、システム1400の構成は図14Aのそれに類似する。しかし、本実施形態で、MCELOGモジュール1425はエラー訂正モジュール1418から伝送される情報を受信する。MCELOGモジュール1425は、メモリエラー、データ伝送エラー等のような多様なシステムエラーに関連するマシンチェックイベント(machine check event:MCE)を記録する。MCELOGモジュール1425はメモリECCデーモン1458に対するインタラプトを発生させ、メモリECCデーモン1458にエラー情報を伝達する。
図14Dを参照すると、システム1400の構成は図14Cのそれに類似する。しかし、本実施形態で、図14Aと図14Bとの間の差異点と同様に、MCELOGモジュール1425は図14BのEDACモジュール1424と同様にMCAモジュール1426から提供される情報を受信する。
本実施形態において、図14A〜図14Dでバッファ1462を含むECC DIMM1402に対して説明したが、他の実施形態で、ECC DIMM1302を含む図13のシステム1300の多様な構成が適用され得る。
図15は、一実施形態によるメモリモジュールを示す概略図である。メモリモジュール1500は、1つ又はそれ以上のメモリ装置(MD)1501、データインターフェイス1536、エラーインターフェイス1538、及びコントローラ1541を含む。データインターフェイス1536は、メモリ装置1501に格納されたデータからデータ1540を伝送し、メモリ装置1501に格納されるデータ1540を受信する。メモリモジュール1500は1つ又はそれ以上のメモリ装置1501から読み出されたデータに対してエラー情報を生成する。エラーインターフェイス1538は1つ又はそれ以上のメモリ装置1501から読み出されたデータにあるエラーの訂正に応答して生成されたエラー情報を伝送する。
データインターフェイス1536は、メモリ装置1501に格納されたデータが伝送されるインターフェイスであり、メモリ装置1501に格納されるデータ1540が受信されるインターフェイスである。例えば、データインターフェイス1536は、データライン、ストロ−ブライン、アドレスライン、イネーブルライン、クロックライン等のようなラインのためのバッファ、ドライバ回路、終端回路(termination)、又は他の回路を含む。
エラーインターフェイス1538は、SMBus、IPMI、又は本明細書で説明する他のバスのような特定のバスを通じて通信するインターフェイスである。一実施形態で、エラーインターフェイス1538はメモリモジュール1500がエラー情報と共に他の情報を交換するための既存のインターフェイスである。従って、情報1542は、エラー情報のみならず、他の情報も含む。
コントローラ1541はメモリ装置1501に連結される特定の装置である。例えば、コントローラ214は、汎用プロセッサ、DSP(digital signal processor)、ASIC(application specific integrated circuit)、プログラム可能な論理装置(programmable logic device)等を含む。詳細に後述するが、コントローラ1541はRCD等のようなバッファを含む。
コントローラ1541は、メモリ装置1501、データインターフェイス1536、及びエラーインターフェイス1538に連結される。コントローラ1541はエラー情報を獲得する。一実施形態で、コントローラ1541はメモリ装置1501からエラー情報を獲得するが、他の実施形態で、コントローラ1541は、メモリ装置1501から伝送されたデータにあるエラーを訂正し、エラー情報を生成する。
一実施形態で、コントローラ1541はデータインターフェイス1536を通じて訂正不可能なエラーを交換する。例えば、上述したように、データストローブ信号は訂正不可能なエラーを示すように使用される。コントローラ1541は訂正不可能なエラーの検出に応答してデータインターフェイス1536を通じて伝送されるストローブ信号を調整する。
図16は、一実施形態によるSPD/RCDインターフェイスを有するメモリモジュールを示す概略図である。本実施形態で、メモリモジュール1600は図15で説明した1つ又はそれ以上のメモリ装置1501、データインターフェイス1536、エラーインターフェイス1538、及びコントローラ1541に類似する1つ又はそれ以上のメモリ装置1601、データインターフェイス1636、エラーインターフェイス(1638)、及びコントローラ1641を含む。しかし、図15のエラーインターフェイス1538はここでSPD/RCDインターフェイス1638である。
SPD/RCDインターフェイス1638は直列プレゼンス検出SPDシステムやRCDシステム(図示せず)に対するアクセスを提供するために使用される。特定の実施形態で、エラー情報は上述したSPD/RCDシステム内の特定のレジスターやメモリ領域を通じて利用される。従って、エラー情報はSPD/RCD情報が獲得される同一のインターフェイスを通じて獲得される。
エラー情報が既存のハードウェアインターフェイスを通じて利用されるため、追加的なハードウェアは不必要である。例えば、エラー情報をアクセスするためのSPD/RCDインターフェイス1638を通じて受信されるコマンドは、アドレス、レジスターアドレス、又はSPD/RCDシステムによって使用されない他のフィールド等において他の命令語と区別される。一実施形態で、エラー情報を掲示するためのSPD/RCDシステムの新しいレジスターが定義される。他の実施形態で、エラー情報を交換するための既存のレジスターが再使用される。
図17は、一実施形態による他の訂正不可能なエラーインターフェイスを有するメモリモジュールを示す概略図である。本実施形態で、メモリモジュール1700は、図15で説明した1つ又はそれ以上のメモリ装置1501、データインターフェイス1536、エラーインターフェイス1538、及びコントローラ1541に類似する1つ又はそれ以上のメモリ装置1701、データインターフェイス1736、エラーインターフェイス1738、及びコントローラ1741を含む。しかし、メモリモジュール1700は更に訂正不可能なエラーインターフェイス(1744)を含む。
訂正不可能なエラー(uncorrectable error:UE)インターフェイス1744はメモリモジュール1700が訂正不可能なエラーを交換する別のインターフェイスである。例えば、訂正不可能なエラーインターフェイス1744は専用ラインであるか或いは専用のバス等である。
図18は、一実施形態によるメモリ装置を示す概略図である。本実施形態で、メモリ装置1800はデータインターフェイス1836及びエラーインターフェイス1838を含む。データインターフェイス1836及びエラーインターフェイス1838は図15のデータインターフェイス1536及びエラーインターフェイス1538に類似する。しかし、本実施形態で、データインターフェイス1836及びエラーインターフェイス1838は、図15のメモリモジュールのようなメモリモジュールではなく、メモリ装置1800に対するインターフェイスである。
メモリ装置1800はコントローラ1841を含む。コントローラ1814は、メモリ1801、データインターフェイス1836、及びエラーインターフェイス1838に連結された特定の装置である。例えば、コントローラ1841は、汎用プロセッサ、DSP(digital signal processor)、ASIC(application specific integrated circuit)、プログラム可能な論理装置(programmable logic device)等を含む。
メモリ1801はデータを格納する。例えば、メモリ1801はメモリセルアレイである。しかし、他の実施形態で、データは他の構成で格納される。メモリ1801は、電気的、磁気的、化学的、光学的、又は他のタイプの格納媒体である。
コントローラ1841はデータインターフェイス1836を通じてメモリ1801に格納されたデータを伝送する。コントローラ1841はデータインターフェイス1836を通じてメモリ1801に格納されるデータを受信する。そのような伝送はデータ1840で示される。
コントローラ1841はエラーインターフェイス1838を通じてメモリ1801から読み出されたデータにあるエラーの訂正に応答して生成されたエラー情報を伝送する。エラー情報は上述したエラー情報のタイプに類似する。コントローラ1841は、エラーインターフェイス1838を通じてコマンド、命令、又は他の情報を受信する。そのようなコマンド、命令、又は他の情報の伝送は情報1842で示される。
本実施形態で、データ1840及び情報1842の全てはコントローラ1841を経由するとして図示した。しかし、他の実施形態で、メモリ装置1800の構成要素はコントローラ1841によって制御され、データ1840及び情報1842はコントローラ1841を経由しないこともある。例えば、特定の実施形態で、データ及び/又はエラー情報は、コントローラ1841の制御の下にデータインターフェイス1836及びエラーインターフェイス1838に提供されるが、コントローラ1841を経由しない。
図19は、一実施形態によるメモリ装置を示す概略図である。本実施形態で、メモリ装置1900はメモリセルアレイ1901を含む。メモリセルアレイ1901はデータが格納されるメモリセルを含む。特に、メモリセルアレイ1901はエンコーディングされたデータを格納する。センスアンプ1902及び書込み回路1904は、データが、アドレス1906によって特定されるアドレスによりメモリセルアレイ1901に記録され、メモリセルアレイ1901から読み出されるメモリ装置1900内にある回路の例である。しかし、他の実施形態で、他の読出し及び書込み回路がメモリセルアレイ1901に関連する。更に、本実施形態で、センスアンプ1902及び書込み回路1904をメモリセルアレイ1901の一部として図示したが、そのような回路はメモリセルアレイ1901から分離され得る。更に、本実施形態で、シングルメモリセルアレイ1901を図示したが、複数のメモリセルアレイ1901が提供され得る。
メモリセルアレイ1901はECC(error correcting code)エンジン1908に連結される。ECCエンジン1908は、メモリセルアレイ1901に記録されるデータをエンコーディングすることによって、そしてメモリセルアレイ1901から読み出されるデータをデコーディングすることによって、メモリから読み出されたデータにある少なくとも1つのエラーを訂正する。特に、ECCエンジン1908は書込みデータ1910を受信する。ECCエンジン1908は書込みデータ1910をエンコーディングし、エンコーディングされたデータは書込み回路1904によってメモリセルアレイ1901内のアドレス1906によって特定された場所に記録される。同様に、ECCエンジン1908は、メモリセルアレイ1901からエンコーディングされたデータを受信し、そのデータをデコーディングされた出力データ1924としてデコーディングする。そのようなエンコーディング及びデコーディングは本明細書で説明する多様なECCアルゴリズムに従って遂行される。例えば、SEC−DED(Single Error Correct−Double Error Detect)がECCアルゴリズムの例として使用されるが、他のアルゴリズムも使用される。
本実施形態で、アドレス1906及び書込みデータ1910のような信号をメモリセルアレイ1901にデータを記録するために使用される信号として図示したが、メモリ装置1900はメモリセルアレイ1901にデータを記録するために関連さする他の信号を受信して処理する。しかし、そのような構成要素は簡易化のために省略した。更に、アドレス1906を変更するか、或いはアクセスの方向を変える他の構成要素も簡易化のために省略した。
特定の実施形態で、書込み動作の間、ECCエンジン1908はメモリ装置1900が格納するビットを書込みデータ1910として受信する。ECCエンジン1908は、エンコーディングされたデータとして元のデータ値と同様に、書込み回路1904を用いてメモリセルアレイ1901に書込みデータ1910に対するECCビット値を計算してECCビットを伝送する。その後、メモリセルアレイ1901はエンコーディングされたデータを格納する。
読出し動作の間、ECCエンジン1908はメモリセルアレイ1901からエンコーディングされたデータを受信する。即ち、センスアンプ1902及び他の回路がエンコーディングされたデータとして先に格納されたECCビット及び元のデータ値を読み出すために使用される。その後、ECCエンジン1908は、エンコーディングされたデータをデコーディングし、出力データ1924を生成し、エラー情報を生成する。
出力データ1924はメモリ装置1900から出力される。特定の実施形態で、他の構成要素がECCエンジンとメモリ装置1900の出力との間に配置される。特定の実施形態で、バッファ1932が出力データ1924をバッファリングする。特定の実施形態で、RCDモジュール1934が、出力データ1924を受信し、バッファリングし、出力する。ここで、そのような選択的な構成要素を点線で図示した。
ECCエンジン1908はエラーフラッグを生成する。例えば、ECCエンジン1908は訂正可能なエラー(correctable error:CE)フラッグを生成する。CEフラッグはECCエンジン1908が成功的にnビットのエラーを訂正する時に設定され、nはECCエンジン1908が訂正するビットエラーの数より少ないか又は同一である。ECCエンジン1908は訂正不可能なエラー(uncorrectable error:UE)フラッグを生成する。ECCエンジン1908が訂正するビットエラーの個数より多く発生したビットエラーの個数をECCエンジン1908が感知する時にUEフラッグが設定される。特定の例で、SEC−DEDと共に、CEフラッグはシングルビットエラーが訂正されたことを指示し、UEフラッグは2ビットエラーが発生したことを指示する。
ECCコントローラ1918はエラー訂正及び関連するエラー情報を管理する。ECCコントローラ1918はECCエンジンからエラー情報1914を受信する。エラー情報1914は、エラーがないか、訂正可能なエラーであるか、訂正不可能なエラーであるか、又はエラーの個数等を示す情報を含む。ECCコントローラ1918は読出しに関連するアドレス1906を受信する。従って、ECCコントローラ1918はECCエンジン1908から伝送されたエラー情報1914とアドレス1906を新しいエラー情報に組合せる。詳細に後述するが、ECCコントローラ1918はECCエンジン1908によってエンコーディングされてメモリセルアレイ1901に記録される書込みデータ1910を生成する。
一実施形態で、ECCコントローラ1918はエラー情報を格納する。例えば、ECCコントローラ1918はエラー情報が格納される複数のレジスターを含む。多様なエラー情報がECCコントローラ1918に格納される。詳細に後述するが、エラーの記録はエラーに関する情報を含んで格納される。例えば、エラー記録は、アドレス情報、エラーのタイプ、メモリセルアレイ1901から読み出されたデータ、リペア、又は他のアクションが実行されたか否か等のような情報を含む。
一実施形態で、ECCコントローラ1918は外部装置と通信1926を遂行する。例えば、通信1926はエラー情報の伝送を含む。訂正可能なエラー又は訂正不可能なエラーが発生すると、エラー情報はECCコントローラ1918によって伝送される。そのような伝送は、規則的なスケジュール、エラーの発生、リフレッシュサイクルの間等に従う外部装置からの要請に応答したものであるか、又は自発的なものである。
一実施形態で、ECCコントローラ1918はエラー情報を交換するためにSMBusのようなバスを通じて通信する。特定の実施形態で、メモリ装置1900はコマンドバッファ1928を含む。コマンドバッファ1928はECCコントローラ1918に対するバスを通じて受信されたコマンドをバッファリングする。
一実施形態で、メモリコントローラ1900はSPDモジュール1930を含む。ECCコントローラ1918はSPDモジュール1930と通信する。SPDモジュール1930はSPDインターフェイスに関連する動作を遂行する。更に、SPDモジュール1930はECCコントローラ1918を通じてエラー情報に対するアクセスを利用可能にする。例えば、SPDモジュール1930を通じて受信された特定のコマンドは適切なコマンド及び/又は信号に変換されてECCコントローラ1918に格納されたエラー情報にアクセスする。
DQS(データストローブ信号)変更器1920は、ECCエンジン1908から伝送されたエラー情報1916に応答してメモリセルアレイ1901から伝送されたデータストローブ信号を変更し、変更されたデータストローブ信号1922を出力する。特定の実施形態で、エラー情報1916は訂正不可能なエラーが発生したか否かを示す信号である。DQS変更器1920は、データストローブ信号1912を変更し、エラー情報1916が訂正不可能なエラーが発生したことを示した場合、出力データストローブ信号1922をトグリングしない。しかし、訂正不可能なエラー信号が発生しない場合、DQS変更器1920はデータストローブ信号1912を通過させる。例えば、DQS変更器1920は、ORゲート、ANDゲート、NANDゲート、伝送ゲート等のような論理回路を含む。
一実施形態で、DQS変更器1920は時間に敏感な(time sensitive)情報を交換するために使用される。例えば、訂正不可能なエラーが発生する場合、エラーは現在の読出し動作に関連する。SMBusによるように、訂正不可能なエラーに関連する情報がECCコントローラ1918によって外部装置と交換される間、通信経路はデータ1924のための通信経路より遅い速度で動作する。従って、訂正不可能なエラーの発生の通信は対応する読出し動作に比べて遅延する。反対に、DQS変更器1920による訂正不可能なエラーの発生の通信は対応する読出し動作と概略同時に発生する。即ち、変更された出力データストローブ信号1922は訂正不可能なエラーを有するデータ1924の伝送に関連するデータストローブ信号である。
本実施形態で、メモリ装置1900の特定の構成要素を例として説明したが、他の構成要素が提供され得る。例えば、メモリ装置1900は、多様なストローブ信号、選択信号、制御信号、イネーブル信号等を受信するか、或いは伝送する。
図20は、一実施形態によるメモリ装置を含むメモリモジュールを示す概略図である。本実施形態で、メモリモジュール2000は図15のデータインターフェイス1536及びエラーインターフェイス1538に類似するデータインターフェイス2036及びエラーインターフェイス2038を含む。しかし、本実施形態で、メモリモジュール2000は複数のECCメモリ装置2001−1〜2001−Nを含む。ECCメモリ装置2001は、上述した図18及び図19のメモリ装置1800及び1900のような、本明細書で説明するメモリ装置の中のいずれかである。
メモリ装置2001の例としてメモリ装置1800を使用し、そして図18及び図20を参照すると、メモリ装置1800の各々はデータインターフェイス2036及びエラーインターフェイス2038に連結される。データインターフェイス2036に関連し、メモリ装置1800のデータインターフェイス1836は少なくともデータインターフェイス2036の一部を形成する。例えば、各々のデータインターフェイス1836のデータ入出力、ストローブ信号等は、データインターフェイス2036に収集される。データインターフェイス2036のアドレス入力及び/又は他の制御信号はメモリ装置1800のデータインターフェイス1836に分配される。従って、データは、データインターフェイス2036を通じてメモリ装置1800(結果的に、メモリモジュール2000に伝送されるか、或いはメモリ装置1800(結果的に、メモリモジュール2000から受信される。
同様に、エラーインターフェイス1838はエラーインターフェイス2038に連結される。エラーインターフェイス1838は多様な方法で連結される。例えば、エラーインターフェイス1838及びエラーインターフェイス2038はメモリモジュール2000内の共用バスで連結される。他の例で、エラーインターフェイス2038はメモリ装置2001の各々のエラーインターフェイス1838に直接連結される。エラーインターフェイス2038はメモリ装置1800からエラー情報を収集する。従って、エラー情報はエラーインターフェイス2038を通じてメモリ装置1800(結果的に、メモリモジュール2000)から伝送される。
本実施形態で、図18のメモリ装置1800をメモリモジュール2000のメモリ装置2001の例として使用したが、他の実施形態で、他のメモリ装置が使用され得る。例えば、図19のメモリ装置1900がメモリ装置2001として使用される。図19を参照すると、各々のメモリ装置1900のアドレス1906、書込みデータ1910、出力データ1924、データストローブ信号1922等は、データインターフェイス2036に連結される。同様に、各々のメモリ装置1900のECCコントローラ1918はエラーインターフェイス2038に連結される。
図21〜図23は、多様な実施形態によるメモリモジュールを示す概略図である。
図21を参照すると、本実施形態で、メモリモジュール2100は、図15の1つ又はそれ以上のメモリ装置1501、データインターフェイス1536、及びコントローラ1541に類似する1つ又はそれ以上のメモリ装置2101、モジュールデータインターフェイス2136、及びコントローラ2141を含む。モジュールエラーインターフェイス2138はエラーインターフェイス1538に類似し、情報1542に類似する情報2142を交換するが、モジュールエラーインターフェイス2138は、モジュールエラーインターフェイス2138とメモリ装置2101の装置エラーインターフェイス2139とを区別するために“モジュール”という用語を使用した。詳細に後述するが、モジュールエラーインターフェイス2138はエラー情報を交換するものとは異なる他の通信のために使用される。
ここで、メモリ装置2101の各々は図18のデータインターフェイス1836及びエラーインターフェイス1838に類似するデータインターフェイス2137及び装置エラーインターフェイス2139を含む。メモリ装置2101のデータインターフェイス2137はモジュールデータインターフェイス2136に連結されるが、そのような連結は簡易化のために図示しない。更に、特定の実施形態で、モジュールデータインターフェイス2136とメモリ装置2101のデータインターフェイス2137との連結はメモリコントローラ2141を経由する必要はない。例えば、特定の実施形態で、メモリモジュール2100から伝送されてメモリモジュール2100に伝送されるデータ2140はコントローラ2141でバッファリングされるが、他の実施形態で、そのような伝送はコントローラ2141をバイパスする。
各々のメモリ装置2101は、モジュールエラーインターフェイス2138に連結され、装置エラーインターフェイス及びモジュールエラーインターフェイスを通じてエラー情報を交換する。本実施形態で、コントローラ2141は装置エラーインターフェイス2139及びモジュールエラーインターフェイス2138に連結される。
更に詳細に後述するが、コントローラ2141はエラー情報に関連する通信のようにメモリ装置2101に関連する通信を管理する。例えば、コントローラ2141は、対応する装置エラーインターフェイス2139を通じてメモリ装置2101に関連するエラー情報にアクセスし、メモリ装置2101との通信を転送し、メモリ装置2101から伝送されたエラー情報を収集する。
特定の実施形態で、コントローラ2141はモジュールエラーインターフェイス2138を通じてアクセス可能なレジスター2149を含む。コントローラ2141は装置エラーインターフェイス2139を通じてメモリ装置2101と通信することによってメモリ装置2101から伝送されたエラー情報を収集する。そのようなエラー情報はレジスター2149に格納され、メモリモジュール2100外部の装置によりアクセスされる。或いは、コントローラ2141はエラー情報を組合せるか又はエラー情報を要約する。特に、一実施形態で、各々のメモリ装置2101は他のメモリ装置2101から独立するそれ自身のエラー情報を生成する。従って、コントローラ2141がメモリ装置2101の全てにアクセスする時に、コントローラ2141は各々のメモリ装置2101が生成できない追加的なエラー情報を生成する。本実施形態で、レジスター2149を例として使用したが、エラー情報及び他の情報は他の方法でコントローラ2141に格納され得る。
一実施形態で、コントローラ2141はメモリ装置2101に関連するコマンドを受信する。本明細書で説明するように、コントローラ2141はエラー情報を読み出すためのコマンドを受信する。しかし、コントローラ2141はメモリ装置2101に関連する他のタイプの通信も受信する。例えば、コントローラ2141はメモリ装置2101の維持に関連するコマンドを受信する。そのような管理の例として、1つ又はそれ以上のメモリ装置2101内のメモリセルをリペアするか、データを再書込みするか、又はリフレッシュサイクルを初期化するためのコマンドがある。コントローラ2141は、そのような通信を受信し、これに応答してメモリ装置2101と通信する。
図22を参照すると、本実施形態で、メモリモジュール2200は、メモリモジュール2100に類似するが、コントローラ2141に連結された直列プレゼンス検出(serial presence detect:SPD)2143モジュールを含む。SPD2143はコントローラ2141を通じて通信する。例えば、コントローラ2141は、SPD2143に、そしてSPD2143から伝送された通信を転送する。他の実施形態で、コントローラ2141は、SPD2143から伝送された情報を獲得し、モジュールエラーインターフェイス2138を通じてそのような情報を使用してSPD2143のためのプロキシとして動作する。本実施形態で、モジュールエラーインターフェイス2138に“エラー”という用語を使用したが、エラー情報と異なる情報がモジュールエラーインターフェイス2138を通じて伝送され、受信され得る。
一実施形態で、コントローラ2141はSPD2143に関連するアドレスに応答する。しかし、コントローラ2141は、他のアドレスに応答するか、或いは通信において追加的な情報を使用し、通信がSPD2143のために意図されたか、エラー情報をアクセスするように意図されたか、メモリ装置2101のために意図されたか、又はコントローラ2141のために意図されたか否か等を判断する。
図23を参照すると、本実施形態で、メモリモジュール2300は図21のメモリモジュール2100又は図22のメモリモジュール2200に類似する。しかし、レジスタークロックドライバ(registering clock driver:RCD)モジュール2145はコントローラ2141の代わりに使用される。ここで、RCD2145は、メモリモジュール2300に伝送され、メモリモジュール2300から伝送されたデータをバッファリングする。更に、RCD2145はコントローラ2141に関連して本明細書で説明する機能を提供する。
SPD2143はRCD2145に連結される。従って、メモリモジュール2200と同様に、SPD2143はRCD2145を通じてアクセスされ、RCD2145は、上述したようにコントローラ2141と同様に、SPD2143のためのプロキシとして動作する。
図24〜図26は、多様な実施形態によるメモリモジュールの一部を示す概略図である。
図24を参照すると、本実施形態で、コントローラ2141、メモリ装置2101、及びSPD2143は、図22のそれらに類似する。コントローラ2141はバス2452に連結される。バス2542はSMBus又は本明細書で説明する他のバスである。バス2542はモジュールエラーインターフェイス2138の一部又は全てを形成する。
コントローラ2141はアドレス2454を受信する。アドレス2454はハードウェアに内装された(hardwired)入力である。特定の実施形態で、アドレス2454は、特定のソケットに挿入される時に、ハイ又はロー値に連結されて同一のバス2542に連結された他のアドレスによるメモリモジュールと区別させるメモリモジュール上の一連のピンである。
一実施形態で、アドレス2454はメモリ装置のSPDモジュールに連結されるが、ここでアドレスはSPD2143のようなSPDの代わりにコントローラ2141と通信するように他の目的に合わせてもよい。従って、本明細書で説明するメモリモジュールは既存のメモリモジュールとピン互換(pin−compatible)される。
本実施形態で、SPD2143及びメモリ装置2101はそれぞれ別個のバス2450を通じて各々コントローラ2141に連結される。ここで、バスはメモリ装置2101−1〜2010−Nに対応するようにバス2450−1〜2450−Nで示した。バス2450−N+1はコントローラ2141及びSPD2143に連結された追加的なバスに対応する。特定の実施形態で、バス2450の各々はSMBus又は他の類似する通信回線である。しかし、他の実施形態で、例えば単なる2つのエンドポイントを有する通信回線を含むポイント・ツー・ポイント(point to point communication link)通信回線がバス2450の代わりに使用される。即ち、本実施形態で、“バス”という用語を使用したが、通信回線は2つの装置間で連結されるように構成され得る。
一実施形態で、SPD2143は、制御信号2147に応答するか、或いは制御信号2147を生成する。制御信号2147はバス2450−N+1に関連してアウトオブバンド(out of band)信号を含む。例えば、制御信号2147はインタラプト信号を含む。特に、一実施形態で、制御信号2147はSPD2143に関連するイベント信号である。コントローラ2141は、制御信号2451を受信するか、或いは生成する。制御信号2451はSPD2143によって使用される信号である。しかし、コントローラ2141はSPD2143が有するインターフェイスを使用するため、SDP2143は制御信号2451を直接受信しない。従って、コントローラ2141は制御信号2147としてSPD2143と制御信号2451とを交換する。本実施形態で、SPDに関連する単一の制御信号を例として使用したが、他の実施形態で、複数の制御信号が、SPD2143、メモリ装置2101、又は他の構成要素から転送され得る。簡易化のためにそのような制御信号を図示しないが、提供され得る。
更に、コントローラ2141は制御信号2147に類似する制御信号に関連するSPD2143以外の追加的な機能を含む。例えば、制御信号2141はメモリ装置2101から伝送されたエラー情報に基づいてインタラプトを生成する。従って、制御信号2451はSPD2143から伝送された信号のみならず、エラー情報基盤のインタラプトを交換するために使用される。コントローラ2141は、そのような制御信号がコントローラ2141、SPD2143等のために意図されたか否かを判断する。
一実施形態で、多くの追加的なピンがメモリ装置2101のために使用される。特定の実施形態で、メモリ装置2101は2つの追加的なピン(1つはクロック信号のためのものであり、その他の1つはデータ信号のためのもの)を含む。コントローラ2141は、バス(2452、2450−1〜2450−N+1)のための2×(N+2)個のピン、アドレス2454のための3つのピン、及び制御信号(2451、2147)のための2つのピンを含む。
図25Aを参照すると、本実施形態で、コントローラ2141、メモリ装置2101、及びSPD2143は、図24のそれらに類似する。しかし、コントローラ2141は、バス2450−1を通じてメモリ装置2101に連結され、バス2450−2を通じてSPD2143に連結される。本実施形態で、バス2450−1及び2450−2は別個のバスである。
更に、バス2450−1はメモリ装置2101のための共用バスである。バス2450はSMBusバスである。複数のメモリ装置2101はバス2450−1に連結されるため、各々のメモリ装置2101は対応するID(識別)入力2456を含む。ID入力2456はアドレス2454に類似する。例えば、各々のメモリ装置2101に対して、対応するID入力2456はメモリ装置2101の中の固有のアドレスに対応するハードウェアに内装(hardwired)される。特定の例で、各々のID入力2456はハイ又はローを維持する4つのピンを含む。従って、16の固有のアドレスはID入力2456のために利用される。本実施形態で、4つのピンを例として使用したが、所定数のピンが、所定数のメモリ装置2101を区別するために使用される。
メモリ装置2101の各々は対応するID入力2456をバス2450−1に使用されるアドレス又は他の識別子に伝送する。一実施形態でID入力2456から生成されたアドレスはSMBusに対するスレーブアドレスとして使用されるアドレスである。本実施形態で、SPD2143及びコントローラ2141はバス2450−2上の装置である。従って、アドレス入力はSPD2143のために使用される必要がない。
一実施形態で、複数の追加的なピンがメモリ装置2101のために使用される。特定の実施形態で、メモリ装置2101は、図24と同様に、2つの追加的なピン(1つはクロック信号のためのものであり、その他の1つはデータ信号のためのもの)を含むが、ID入力2456のための4つのピンを含んでもよい。コントローラ2141は、図24と同様に、バス(2452、2450−1、2450−2)のための6つのピン、アドレス2454のための3つのピン、及びコントロール信号(2451、2147)のための2つのピンを含む。
図25Bを参照すると、本実施形態で、コントローラ2141、メモリ装置2101、及びSPD2143は、図25Aのものに類似する。しかし、SPD2143及びメモリ装置2101は共用バス2450を通じてコントローラ2141に連結される。上述したように、メモリ装置2101はID入力2456を受信する。SPD2143は、メモリ装置2101のように同一のバス2450上に存在するため、SPD2143及びメモリ装置2101の中の固有のアドレスを使用する。SPD2143はID入力2457を受信する。SPD2143はID入力2457をバス2450で使用するためのアドレスに変換する。
一実施形態で、ID入力2457の形態はID入力2456と異なる。例えば、ID入力2457はSPD2143のアドレスを指示するために使用される3つのピンを含むが、ID入力2456は各々4つのピンを含む。更に、ID入力2457及びID入力2456は同一のアドレスに対応する必要がない。例えば、010bのID入力2457及び0010bのID入力2456は他のアドレスに対応する。
一実施形態で、複数の追加的なピンがメモリ装置2101のために使用される。特定の実施形態において、メモリ装置2101は、図24と同様に、2つの追加的なピン(1つはクロック信号のためのものであり、その他の1つはデータ信号のためのもの)を含み、やはりID入力2456のための4つのピンを含む。コントローラ2141は、図24と同様に、バス(2450、2452)のための4つのピン、アドレス2454のための3つのピン、及び制御信号(2451、2147)のための2つのピンを含む。
図26を参照すると、本実施形態で、コントローラ2141、メモリ装置2101、及びSPD2143は、図25Bのものに類似する。SPD2143はコントローラ2141と同様にアドレス2454を受信する。しかし、本実施形態で、メモリ装置2101はID入力2456を受信しない。一方、メモリ装置2101は、バス2450−1から分離された単一のワイヤー又は網(net)のような共用バス2459にそれぞれ連結される。一実施形態で、共用バスはデイジーチェーン回線(daisy−chain link)である。
一実施形態で、メモリ装置2101は共用バス2459に連結される。メモリ装置2101は、コントローラ2141を通じて受信された情報が共用バス2459を通じて受信された信号に応答してメモリ装置2101に関連するか否かを判断する。一実施形態で、メモリ装置2101は、共用バス2459を通じて通信し、メモリ装置2101のアドレスをバス2450に確定する。例えば、第1メモリ装置は、カウンターに応答してアドレスを決定し、カウンターを増加させる。カウンターの値は第2メモリ装置2101に伝送される。第2メモリ装置2101は、カウンターに応答してアドレスを決定し、カウンターを増加させる。この過程は各々のメモリ装置2101が固有のアドレスを有する時まで継続される。
一実施形態で、複数の追加的なピンがメモリ装置2101のために使用される。特定の例で、メモリ装置2101は、図24と同様に、2つの追加的なピン(1つはクロック信号のためのものであり、その他の1つはデータ信号のためのもの)を含み、共用バス2459のための1つの追加的なピンを含む。コントローラ2141は、図24と同様に、バス(2452、2450−1、2450−2)のための6つのピン、アドレス2454のための3つのピン、及び制御信号(2451、2147)のための2つのピンを含む。
一実施形態で、上述した構成のいずれの構成であっても、コントローラ2141は、同一のバスに連結された場合、メモリ装置2101及びSPD2143のアドレスを決定する。例えば、コントローラ2141はSMBusアドレスソリューションプロトコル(address resolution protocol)を用いてアドレスをメモリ装置2101及びSPD2143に動的に割当てる。本実施形態で、1タイプのバスでアドレスを決定する技術を例として使用したが、他の技術が特定なバス2450に適切に使用され得る。
図27は、一実施形態によるメモリモジュールを示す概略図である。本実施形態で、メモリモジュール2700は図21のメモリモジュール2100に類似する。しかし、リピーター(repeater)2750がコントローラ2141として使用される。リピーター2750は、メモリ装置2101及びSPD2143の装置エラーインターフェイス2139が通信回線に連結されるように、モジュールエラーインターフェイス2138に連結された通信回線を拡張する。例えば、メモリ装置2101のローディング及び/又はネットワークの属性が許諾する場合、リピーター2750は単なる共有媒体(shared medium)のワイヤーのようなワイヤーである。他の例で、リピーター2750は更に多い装置がバスに接続されるか、或いは更に長いバスを許容する装置を含む。本実施形態で、リピーターという用語を使用したが、リピーター2750は、ハブ、拡張装置、スイッチ、ブリッジ等を含む。そしてネットワークを拡張させる装置はリピーター2750として使用される。メモリ装置2101がモジュールエラーインターフェイス2138を通じて直接アクセスされるため、メモリモジュール2700の各々のメモリ装置2101はBMCのような外部コントローラによってエラー情報に対して個別的に情報を得られる。
一実施形態で、メモリ装置2101、SPD2143、及びリピーター2750の構成は、図25Bに類似する。即ち、図25B及び図27を参照すると、メモリ装置2101は、リピーター2750に連結されたバス2450に各々連結される。メモリ装置2101の各々はID入力2456を受信する。その結果、メモリ装置2101はバス2450の使用のための各々のアドレスを決定する。
一実施形態で、特定のアドレス又はID入力は多様なタイプの装置に関連する。例えば、温度センサーは特定のアドレス又はアドレス範囲に関連する。しかし、メモリ装置2101はそのようなアドレス又はID入力の関連性を有しない。従って、アドレス、ID(識別情報)、そのようなパラメーターの範囲等は、本明細書で説明するメモリモジュールを使用するシステムを使用しない装置のような、他のタイプの装置から他の目的に合わせられる。例えば、I2CMUXのためのID又はアドレスがメモリ装置2101のID又はアドレスとして用いられる。
図28は、一実施形態によるエラー情報を交換する方法を示すフローチャートである。2800段階で、メモリからデータを読み出す時にエラーが発生する。これに応答して、2802段階で、エラーが診断される。更に詳細に後述するが、エラーが確認されるのみでなく、エラーを訂正するための他の訂正するアクション(corrective action)も取られる。
2804段階で、エラー情報が報告される。上述したように、メモリ装置、メモリモジュールの他の構成要素、及びプロセッサ間の通信回線はエラー情報を交換するために使用される。エラー情報2804の報告はそのような通信回線を通じて遂行される。
図29は、一実施形態によるエラーを取り扱う技術を示すフローチャートである。本実施形態は、訂正可能なエラーがどのようにして取り扱われるか(例えば、訂正可能なエラーが図19のECCコントローラによってどのようにして取り扱われるか)を例示的に示す。2900段階で、訂正可能なエラーCE(訂正されるエラー)が発生した後、CE記録が生成される。CE記録は上述したエラーに関連する多様な情報を含む。
2902段階で、データが再読出しされる。本実施形態で、データの再読出しに応答して、エラーが発生しない場合、訂正可能なエラー(CE)が発生する場合、訂正不可能なエラー(uncorrectable error:UE)が発生する場合の3つの結果が発生する。2902段階でエラーが発生しない場合、2904段階で、記録はソフト−読出しエラーとして表示される。2902段階で訂正可能なエラー(CE)が発生した場合、2908段階で、訂正されたデータが再書込みされる。2902段階で訂正不可能なエラー(UE)が発生した場合、2906段階で、エラー記録は訂正不可能なエラー記録としてアップデートされる。
2908段階で、訂正されたデータの再書込みの一部としてエラーが発生することがある。2908段階でエラーが発生しない場合、2910段階で、エラー記録はソフト−書込みエラーとして表示される。2908段階で訂正不可能なエラー(UE)が発生した場合、2906段階で、エラー記録は訂正不可能なエラー記録としてアップデートされる。
2908段階で訂正可能なエラー(CE)が発生した場合、2912段階で、メモリセルがリペア可能であるか否かが判断される。特定の実施形態で、2912段階の訂正可能なエラーはエラーが再書込みによってリペアされないか否かを表示する。従って、この場合のエラーはハードウェアエラーによって引き起こされる。2912段階のメモリセルのリペア可能の可否に対する判断結果に依存して、エラー記録は更に注釈が付される。2912段階でメモリセルがリペア可能である場合、2914段階で、メモリセルはリペアされ、エラーはハードエラーとして表示される。2912段階でメモリセルがリペア不可能である場合、2916段階で、エラー記録はリペア不可能なハードエラーとして表示される。従って、上述した診断によって、エラーは、更にカテゴリー化されるか、或いはリペアされる。
本実施形態において、2908段階で、再書込みが訂正不可能なエラー、訂正可能なエラー、又はエラーがないことを指示する動作の例を使用したが、そのような情報は他の動作の結果である。例えば、2908段階で、データを再書込みした後、読出し動作が遂行され、同様のエラー情報が生成される。
図30は、一実施形態によるエラーを取り扱う技術を示すフローチャートである。本実施形態は、訂正不可能なエラーがどのようにして取り扱われるか(例えば、訂正不可能なエラーが図19のECCコントローラ1918によってどのようにして取り扱われるか)に関する例である。3000段階で、訂正不可能なエラー(UE)が発生した後、UE記録が生成される。特定の実施形態で、UE記録は図29で説明した2906段階のUE記録に対するアップデートの結果である。
3002段階で、UE記録に関連するデータが再読出しされる。これに応答して、他の動作が遂行される。3002段階で再読出しの後、訂正不可能なエラー(UE)が発生した場合、3006段階で、記録はリペア不可能なエラーとして表示される。3002段階でエラーが発生しない場合、3004段階で、記録はソフト−読出しエラーとして表示される。3002段階で訂正可能なエラー(CE)が発生した場合、3008段階で、訂正されたエラーが再び記録される。図29の2908段階の再書込みと同様に、動作から生成された結果は、再書込みの後にデータを再読出しすることのような他のソースから生じる。
データの再書込みの結果に応答して他の動作が遂行される。3008段階で結果が訂正不可能なエラー(UE)である場合、3006段階で、記録はリペア不可能なエラーとして表示される。3008段階でエラーが発生しない場合、3010段階で、記録はソフト−読出し及びソフト−書込みエラーとして表示される。
3008段階で結果が訂正可能なエラー(CE)である場合、3012段階で、メモリセルがリペア可能であるか否かが判断される。3012段階でメモリセルがリペア可能である場合、3014段階で、リペア動作が実行され、記録はソフト−読出し及びリペア可能なハードエラーとして表示される。3012段階でメモリセルがリペア不可能である場合、3016段階で、記録はソフト−読出し及びリペア不可能なハードエラーとして表示される。
本実施形態で、エラーの多様なカテゴリー化を上述したように説明したが、特定の実施形態で、そのような情報の全てがメモリ装置の外部で利用されないこともあり得る。例えば、図30のソフト−読出し及びソフト−書込みエラーのような特定のタイプのエラーはソフト−エラーとして収集される。特定の収集、要約等であってもメモリ装置から伝送されるエラー情報を生成するために遂行される。更にメモリ装置は詳細な特定レベルを提供する。
一実施形態で、図29及び図30で説明したような技術を用いて、メモリ装置はソフト−読出しエラー回復(例えば、メモリスクラビング(memory scrubbing)、ハード−エラーリペア等のようなエラー管理技術を遂行する。
一実施形態で、上述した動作は読出し動作が実行された後に遂行される。特に、動作は読出し動作を妨げないように構成される。しかし、一度、補修間隔(maintenance interval)、リフレッシュサイクル等のような適切な区間が発生すると、エラー記録は処理され、アップデートされ、メモリセルはリペアされる。
本実施形態で、エラーの処理に関する特定のシークェンスがエラーをカテゴリー化するか、或いはメモリセルをリペアするための基準の例を使用したが、他の実施形態で、他のシークェンスが使用され得る。例えば、図29を参照すると、2912段階のメモリセルがリペア可能であるか否かの判断は、2902段階で再読出し動作の時のCE及び2908段階で再書込み動作の時のCEを伴うCEが発生する場合に、実行される。しかし、他の実施形態として、2912段階のメモリセルがリペア可能であるか否かの判断は、2902段階の再読出し動作が複数の再読出し動作を試みた後、CEをもたらす場合にのみ実行される。即ち、特定の実施形態で、エラーをカテゴリー化する特定の基準は上述した例とは異なる。
更に、本実施形態で、エラータイプの特定の名称を使用したが、特定の実施形態で、そのようなエラータイプの全部が使用されないこともあり得る。同様に、特定の実施形態で、他のエラータイプが使用され得る。
図31Aは、一実施形態によるエラー情報を交換する方法を示すフローチャートである。3100段階で、メモリからデータを読み出す時に読出しエラーが発生する。これに応答してエラー情報が生成される。例えば、読出しエラーは訂正された訂正可能なエラーである。エラー情報は訂正可能なエラーに関する情報である。例えば、読出しエラーは複数のエラーである。この時、エラー情報はこれらのエラーに関する情報である。
3102段階で、読出しエラーコマンドが受信される。一実施形態で、読出しエラーコマンドはメモリモジュールによって受信される。エラーが発生した場合、3104段階で、メモリはエラー情報を伝送する。3102段階で読出しエラーコマンドを受信する前に、メモリモジュールは発生したエラーに関するエラー情報を格納する。3104段階で、先に発生したエラーに関するエラー情報は読出しエラーコマンドに応答して伝送される。しかし、エラーが発生しない場合、3104段階のエラー情報の伝送はエラーが発生しなかったことを示す情報の伝送である。
上述したように、エラー情報はバスを通じて伝送される。特に、バスはメモリモジュールの主データ経路に関してアウトオブバンド(out of band)経路である。従って、3104段階の伝送はバスを通じてエラー情報を伝送することを含む。
図31Bは一実施形態によるエラー情報を交換する方法を示すフローチャートである。図31A及び図31Bを参照すると、本実施形態で、図31Bの動作はコントローラの動作である。特に、3106段階で、読出しエラーコマンドはコントローラから伝送される。3106段階で伝送された読出しエラーコマンドは3102段階で受信された読出しエラーコマンドである。上述したように、3104段階でエラー情報は伝送される。3108段階で、エラー情報がコントローラで受信される。例えば、コントローラはメモリモジュールをポーリングする。従って、コントローラは3106段階で読出しエラーコマンドを受信し、3108段階でエラー情報を受信する。上述したように、コントローラは、メモリコントローラがエラー情報を格納する不揮発性メモリのようなメモリを含む。その後、3110段階で、エラー情報はプロセッサに伝送される。
本実施形態で、例示的に読出しエラーコマンドを伝送するコントローラを使用する場合を説明したが、他の実施形態において、3106段階でプロセッサが読出しエラーコマンドを伝送する。3102段階で、読出しエラーコマンドはメモリモジュールによって受信され、3110段階でエラー情報はプロセッサに伝送される。即ち、エラー情報は、コントローラから受信されるか、或いは処理される必要がない。
図32は、一実施形態によるエラー情報を交換する方法を示すフローチャートである。図28及び図32を参照すると、3200段階で例示的にメモリモジュール2100を使用した場合、通信がモジュールエラーインターフェイス2138を通じて受信される。3202段階で、エラー情報は少なくとも1つのメモリ装置2101から読み出される。
一実施形態において、3202段階のエラー情報の読み出しは3200段階の通信に応答して遂行される。しかし、他の実施形態で、エラー情報の読み出しは異なる時間(例えば、通信を受信する前を含む)に遂行される。いずれの場合も、3204段階で、メモリ装置2101から伝送されたエラー情報は通信に応答するために使用される。
3202段階のエラー情報の読み出しは多様な方法で遂行される。例えば、メモリ装置2101の各々は、図24に示したような対応する専用バスを通じてアクセスされる。他の実施形態で、メモリ装置2101の各々は、図25A、図25B、又は図25Cに示したような、共用バスを通じてアクセスされる。他の実施形態で、通信は図27のリピーター2750のような1つ又はそれ以上のメモリ装置2101に転送される。
本実施形態で、図21のメモリモジュールを例として使用したが、本明細書で説明する技術は、他のメモリモジュール、システム等によって使用され得る。
図33は、一実施形態によるエラー情報を交換する方法を示すフローチャートである。3300段階で、読出しエラーが発生する。3312段階で、読出しエラーコマンドはコントローラに伝送される。例えば、コントローラはプロセッサから読出しエラーコマンドを受信する。3314段階で、読出しエラーコマンドはメモリモジュールに伝送される。例えば、3314段階で、コントローラは、プロセッサから受信された読出しエラーコマンドをメモリモジュールに転送するか、読出しエラーコマンドを変更するか、或いはメモリモジュールに対する他の読出しエラーコマンドを生成して、読出しエラーコマンドをメモリモジュールに伝送する。3314段階で伝送された読出しエラーコマンドは3302段階で受信され、3304段階で、エラー情報は図31Aの3102段階及び3104段階と同様に伝送される。上述したように、エラー情報はプロセッサに伝送される。
上述したように、コントローラは、エラー情報のためにメモリモジュールをポーリングし、エラー情報を格納する。従って、読出しエラーコマンドがプロセッサからコントローラによって受信される時、コントローラは既に読出しエラー情報を有する。コントローラは格納されたエラー情報をプロセッサに伝送する。しかしコントローラは、コントローラに格納されたエラー情報をプロセッサに伝送する前に、更に多いエラー情報のためにメモリモジュールをポーリングする必要がない。
図34は、一実施形態によるエラー情報を交換する方法を示すフローチャートである。3400段階で、プロセッサは読出しエラーコマンドを伝送する。これに応答して、3402段階で、プロセッサはエラー情報を受信する。3406段階で、プロセッサはエラー情報を追加的な情報と結合する。上述したように、追加的な情報は、メモリモジュールに関連しない情報を含むプロセッサの状態、周辺部、バス等のような多様な情報である。特定の実施形態で、プロセッサはエラー情報をMCAモジュールから伝送された情報と結合する。
特定の実施形態において、3408段階で、結合された情報はEDACモジュールに提供される。上述したように、EDACモジュールは多様なシステムのエラーに対する情報を更に高いレベルのアプリケーションで利用可能になるようにする。
図35は、一実施形態によるメモリシステムアーキテクチャを備えたシステムを示す概略図である。本実施形態で、システム3500は図1のプロセッサ104及びソフトウェア110に類似するプロセッサ3504及びソフトウェア3510を含む。しかし、本実施形態で、システム3500はメモリ3502及びエラー訂正回路3568を含む。
本実施形態で、メモリ3502はエラーを訂正しない。メモリ3502は、エラー訂正回路3568に連結され、通信経路3572を通じてエラー訂正回路3568にデータを伝送する。
エラー訂正回路3568はメモリ3502から受信されたデータのエラーを訂正する。エラー訂正回路3568は第2通信経路3570及び第3通信経路3508を通じてプロセッサ3504に連結される。第2通信経路3570はプロセッサ3504がデータを受信するメイン経路である。例えば、第2通信経路3570はプロセッサ3504のためのシステムバスである。
一方、第3通信経路3508は上述した通信経路108に類似する。即ち、第3通信経路3508は、コントローラ3514を含む他のアウトオブバンド通信経路であるか、或いは上述した通信経路の多様な変形である。
図36は、一実施形態によるサーバーを示す概略図である。本実施形態で、サーバー3600は独立(stand alone)サーバー、ラックに搭載されたサーバー、ブレードサーバー(blade server)等を含む。サーバー3600は、メモリ3602、プロセッサ3604、及びBMC3614を含む。プロセッサ3604は通信経路3606を通じてメモリ3602に連結される。BMC3614はバス3616を通じてプロセッサ3604に連結され、バス3612を通じてメモリ3602に連結される。メモリ3602、プロセッサ3604、BMC3614、通信経路3606、及びバス(3612、3616)の各々は上述した対応する構成の中のいずれか1つである。
図37は、一実施形態によるサーバーシステムを示す概略図である。本実施形態で、サーバーシステム3700は複数のサーバー3702−1〜3702−Nを含む。サーバー3702の各々はマネージャ3704に連結される。1つ又はそれ以上のサーバー3702は上述したサーバー3700に類似する。更に、マネージャ3704は上述したメモリシステムアーキテクチャを具備するシステムを含む。
マネージャ3704はサーバーシステム3700のサーバー3702及び他の構成を管理する。例えば、マネージャ3704はサーバー3702の設定を管理する。サーバー3702の各々はマネージャ3704とエラー情報を交換する。エラー情報は、上述したようにサーバー3702の中のいずれか1つのプロセッサに伝送された訂正可能なエラー情報、又は訂正可能なエラー情報に基づく他のエラー情報を含む。マネージャ3704はエラー情報に基づいてアクションを取る。例えば、サーバー3702−1は臨界値を超過する訂正可能なエラーを含む。マネージャ3704は、管理及び/又は代替のためにサーバー3702−1の機能をサーバー3702−2に引き渡し、サーバー2302−1をシャットダウンさせる。本実施形態で、特定の例を提示したが、マネージャ3704はエラー情報に基づいてその他のアクションを取り得る。
図38は、一実施形態によるデータセンターを示す概略図である。本実施形態で、データセンター3800は複数のサーバーシステム3802−1〜3802−Nを含む。サーバーシステム3802は図36で説明したサーバーシステム3600に類似する。サーバーシステム3802はインターネットのようなネットワーク3804に連結される。従って、サーバーシステム3802は多様なノード3806−1〜3806−Mとネットワーク3804を通じて通信する。例えば、ノード3806は、クライアントコンピューター、他のサーバー、遠距離データセンター、ストレージシステム等である。
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。