(57)【要約】      （修正有）【課題】1つまたは複数のメモリデバイスを含むシステムと、エラーの検出および訂正の方法を提供する。【解決手段】システムのメモリデバイス２００が、パケットを受信するための入力２１３を含む。パケットの第１の部分は、少なくとも１つのコマンドバイトを含み、パケットの第２の部分は、コマンドエラー検出を容易にするパリティビットを含む。メモリデバイスは、パリティビットに基づいて、エラーが少なくとも１つのコマンドバイト内に存在するかどうかを検出するように構成されているエラーマネージャ２１７と、パケットをエラーマネージャに供給するように構成されている回路２１４とを含む。【選択図】図３
2015099598.tif 000002
【特許請求の範囲】
【請求項１】
ポイントツーポイントのリングトポロジーにおいて使用するために構成されたメモリデバイスであって、
コマンドエラー検出を容易にするエラー検出コードを含むコマンドパケットを受信するための入力と、
前記エラー検出コードに基づいて、前記コマンドパケットの送信においてエラーが生じたかどうかを検出するように構成されているエラーマネージャと、
前記コマンドパケットを保存するように構成されているとともに、前記コマンドパケットを前記エラーマネージャに提供するように構成されているコマンドレジスタと、
前記コマンドパケットを前記ポイントツーポイントのリングトポロジーの後続デバイスに送信する出力と、
を備える、メモリデバイス。
【請求項２】
前記エラーマネージャは、前記メモリデバイスが前記エラーを訂正することが可能かどうかを確定するようにさらに構成されている、請求項１に記載のメモリデバイス。
【請求項３】
前記エラーマネージャは、前記エラーが訂正可能である場合、前記エラーを訂正するようにさらに構成されている、請求項２に記載のメモリデバイス。
【請求項４】
前記エラーマネージャは、前記エラーが訂正不可能なメモリ動作をもたらす可能性があるものであるかどうかを識別するようにさらに構成されている、請求項１に記載のメモリデバイス。
【請求項５】
前記メモリデバイスは、フラッシュメモリデバイスであり、前記メモリ動作は、プログラム動作および消去動作のうちの選択された１つから成る、請求項４に記載のメモリデバイス。
【請求項６】
前記エラーマネージャは、当該エラーを確実に識別すると、前記エラーが、前記訂正不可能なメモリ動作をもたらす可能性があるものであるという指示を提供するようにさらに構成されている、請求項４に記載のメモリデバイス。
【請求項７】
前記エラーマネージャは、選択的にディスエーブル可能である、請求項１に記載のメモリデバイス。
【請求項８】
いくつかのビットの情報と、前記エラーマネージャがディスエーブルされたかどうかを示す少なくとも１つのビットとを保存するように構成されている制御レジスタをさらに備える、請求項７に記載のデバイス。
【請求項９】
前記メモリデバイスは、非揮発性メモリデバイスである、請求項１に記載のメモリデバイス。
【請求項１０】
前記非揮発性メモリデバイスは、ＮＡＮＤフラッシュメモリデバイスである、請求項９に記載のメモリデバイス。
【請求項１１】
前記入力における読出しステータスコマンドパケットの受信後に前記出力に送信されるコマンドパケットエラーフラグを含むステータスレジスタをさらに備える、請求項１に記載のデバイス。
【請求項１２】
前記読出しステータスコマンドパケットは、ブロードキャスト読出しステータスコマンドパケットであり、前記メモリデバイスのステータスレジスタのコンテンツは、前記入力において受信される前記ポイントツーポイントのリングトポロジーの前のデバイスのステータスレジスタのコンテンツに付加される、請求項１１に記載のメモリデバイス。
【請求項１３】
ポイントツーポイントのリングトポロジーにおいて使用されるメモリデバイス内で実行される方法であって、
前記メモリデバイスの入力において、コマンドエラー検出を容易にするエラー検出コードを含むコマンドパケットを受信するステップと、
前記メモリデバイスのエラーマネージャにおいて、前記エラー検出コードに基づいて、前記コマンドパケットの送信においてエラーが生じたかどうかを検出するステップと、
前記メモリデバイスのコマンドレジスタにおいて、前記コマンドパケットを保存し、前記コマンドパケットを前記エラーマネージャに提供するステップと、
前記メモリデバイスの出力において、前記コマンドパケットを前記ポイントツーポイントのリングトポロジーの後続デバイスに送信するステップと、
を含む、方法。
【請求項１４】
前記メモリデバイスが前記エラーを訂正することが可能かどうかを確定するステップをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記エラーが訂正可能である場合、前記エラーを訂正するステップをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記エラーが、訂正不可能なメモリ動作をもたらす可能性があるものであるかどうかを識別するステップをさらに含む、請求項１３に記載の方法。
【請求項１７】
前記メモリ動作は、プログラム動作および消去動作のうちの選択された１つから成る、請求項１６に記載の方法。
【請求項１８】
当該エラーを確実に識別すると、前記エラーが、前記訂正不可能なメモリ動作をもたらす可能性があるものであるというデバイス内部指示を生成するステップをさらに含む、請求項１６に記載の方法。
【請求項１９】
前記メモリデバイスのステータスレジスタにより、前記入力における読出しステータスコマンドパケットの受信後にコマンドパケットエラーフラグを前記出力に送信するステップであって、前記読出しステータスコマンドパケットは、ブロードキャスト読出しステータスコマンドパケットである、ステップと、
前記メモリデバイスのステータスレジスタのコンテンツを、前記入力において受信される前記ポイントツーポイントのリングトポロジーの前のデバイスのステータスレジスタのコンテンツに付加するステップと、をさらに含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、2008年12月18日に出願の米国特許仮出願第61/138,575号、2008年12月23日に出願の米国特許仮出願第61/140,147号、および2009年4月6日に出願の米国特許出願第12/418,892号の優先権の便益を主張するものであり、これらの出願のすべてを、それらの全体を参照によって本明細書に組み込む。
【背景技術】
【０００２】
コンピュータや他の情報技術システムは、一般に、メモリなどの半導体デバイスを含む。半導体デバイスは、コンピュータの中央処理装置(CPU)の一部を形成しても、またはそれとは別であってもよいコントローラによって制御される。コントローラは、半導体デバイスへの、および半導体デバイスからの情報を伝達するためのインターフェースを有する。伝達される情報の中には、様々な理由で、時にエラーが生じることがあり、多くの知られているシステムには、エラーを訂正する性能がないか、または少なくとも、多くのエラーを訂正する十分な性能がないことが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許仮出願第61/138,575号明細書
【特許文献２】米国特許仮出願第61/140,147号明細書
【特許文献３】米国特許出願第12/418,892号明細書
【特許文献４】米国特許出願公開第2008/0201548 A1号明細書
【特許文献５】米国特許出願公開第2008/0049505 A1号明細書
【特許文献６】米国特許出願公開第2008/0052449 A1号明細書
【特許文献７】米国特許出願公開第2007/0233917 A1号明細書
【特許文献８】米国特許出願公開第2008/0080492 A1号明細書
【特許文献９】米国特許出願第12/401,963号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、1つまたは複数のメモリデバイスを含む改良されたシステムを提供することである。
【課題を解決するための手段】
【０００５】
本発明の1つの態様によれば、パケットを受信するための入力を含むメモリデバイスが提供され、パケットの第1の部分は、少なくとも1つのコマンドバイトを含み、パケットの第2の部分は、コマンドエラー検出を容易にするパリティビットを含む。エラーマネージャが、パリティビットに基づいて、エラーが少なくとも1つのコマンドバイト内に存在するかどうかを検出するように構成されている。メモリデバイスはまた、パケットをエラーマネージャに供給するように構成されている回路も含む。
【０００６】
本発明の別の態様によれば、複数の半導体メモリデバイスと、デバイスと通信するためのコントローラデバイスとを含むシステムが提供される。コントローラは、メモリデバイスに向かうことになるパケットを生成するためのコマンドエンジンを含む。パケットの第1の部分は、少なくとも1つのコマンドバイトを含み、パケットの第2の部分は、コマンドエラー検出を容易にするパリティビットを含む。コントローラデバイスの出力は、パケットを複数の半導体メモリデバイスの第1のデバイスに出力することが可能である。直列相互接続構成が、システムのコントローラデバイスと、半導体メモリデバイスとの間に存在し、それにより、システムは、ポイントツーポイントのリングトポロジーを有することになる。
【０００７】
本発明のさらなる別の態様によれば、パケットを受信するための入力を有するメモリデバイス内で実行される方法が提供される。方法は、パケットを受信するステップを含み、パケットの第1の部分は、少なくとも1つのコマンドバイトを含み、パケットの第2の部分は、コマンドエラー検出を容易にするパリティビットを含む。方法はまた、パリティビットに基づいて、エラーが少なくとも1つのコマンドバイト内に存在するかどうかを検出するステップも含む。
【０００８】
本発明のさらなる別の態様によれば、パケットを受信するための手段を含む装置が提供され、パケットの第1の部分は、少なくとも1つのコマンドバイトを含み、パケットの第2の部分は、コマンドエラー検出を容易にするパリティビットを含む。装置はまた、パリティビットに基づいて、エラーが少なくとも1つのコマンドバイト内に存在するかどうかを検出するための手段も含む。装置はまた、パケットをエラーマネージャに供給するための手段も含む。
【０００９】
本発明のさらなる別の態様によれば、複数の半導体メモリデバイスと、デバイスと通信するためのコントローラ手段とを含むシステムが提供される。コントローラ手段は、メモリデバイスに向かうことになるパケットを生成するための手段を含む。パケットの第1の部分は、少なくとも1つのコマンドバイトを含み、パケットの第2の部分は、コマンドエラー検出を容易にするパリティビットを含む。コントローラ手段はまた、パケットを複数の半導体メモリデバイスの第1のデバイスに出力するための手段も含む。直列相互接続構成が、システムの半導体メモリデバイス間に存在し、そのシステムは、ポイントツーポイントのリングトポロジーを有する。
【００１０】
本発明のさらなる別の態様によれば、パケットを受信するための入力手段を有するメモリデバイスが提供される。メモリデバイスはまた、パケットを受信する手段も含む。パケットの第1の部分は、少なくとも1つのコマンドバイトを含み、パケットの第2の部分は、コマンドエラー検出を容易にするパリティビットを含む。メモリデバイスはまた、パリティビットに基づいて、エラーが少なくとも1つのコマンドバイト内に存在するかどうかを検出するための手段も含む。
【００１１】
したがって、1つまたは複数のメモリデバイスを含む改良されたシステムが提供されている。
【００１２】
次に、例として添付の図面を参照する。
【図面の簡単な説明】
【００１３】
【図１Ａ】パラレルクロック信号を受信する例示のシステムのブロック図である。
【図１Ｂ】ソースシンクロナスクロック信号を受信する例示のシステムのブロック図である。
【図２Ａ】図1Bのシステムと類似する例示のシステムであるが、より具体的な例示のシステムのブロック図である。
【図２Ｂ】図1Aのシステムと類似する例示のシステムであるが、より具体的な例示のシステムのブロック図である。
【図３】例示のメモリデバイスの図である。
【図４】例示のメモリコントローラの図である。
【図５】例示の実施形態によるパリティビット計算を示す図である。
【図６】例示の実施形態によるエラーを処理する方法を流れ図の形態で示す図である。
【図７】例示の実施形態によるブロードキャストステータス読出しコマンドの動作を示すタイミング図である。
【発明を実施するための形態】
【００１４】
類似または同一の参照数字が、図面に示す類似する例示の特徴を示すために、別の図に使用されている場合がある。
【００１５】
リング型トポロジーを有するシステムの例は、2008年8月21日に発行された「SYSTEM HAVING ONE OR MORE MEMORY DEVICES」と題された米国特許出願公開第2008/0201548 A1号、2008年2月28日に発行された「SCALABLE MEMORY SYSTEM」と題された米国特許出願公開第2008/0049505 A1号、および2008年2月28日に発行された「MODULAR COMMAND STRUCTURE FOR MEMORY AND MEMORY SYSTEM」と題された米国特許出願公開第2008/0052449 A1号に記載されている。続く説明においては様々な点で、特定の例示のコマンド、アドレス、およびデータのフォーマット、プロトコル、内部デバイス構造、バストランザクションなどを参照することにし、さらなる例示の詳細を、上述の特許参照に関して迅速に得ることが可能であることを当業者は理解する。
【００１６】
ここで図1Aおよび1Bを参照する。いくつかの例示の実施形態により、コマンドパケットは、コントローラから生じ、最後にコントローラに戻るまで、ポイントツーポイント式に各メモリデバイスを通ってリングを回る。図1Aを参照すると、パラレルクロック信号を受信する例示のシステムのブロック図があり、図1Bは、ソースシンクロナスクロック信号を受信する図1Aの同一システムのブロック図である。クロック信号は、単一エンドのクロック信号、または差動クロックペアのいずれかであってよい。
【００１７】
図1Aにおいては、システム20は、少なくとも1つの出力ポートSout、および入力ポートSinを有するメモリコントローラ22と、直列に接続されているメモリデバイス24、26、28および30とを含み、それにより、直列相互接続構成が、システムのコントローラデバイスとメモリデバイスとの間に存在することになる。図1Aでは明白に符号付けしていないが、各メモリデバイスは、Sin入力ポートおよびSout出力ポートを有する。入力ポートおよび出力ポートは、メモリデバイスを、それがその一部であるシステムにインターフェースする1つまたは複数の物理的ピンまたは接続部から成る。いくつかの例では、メモリデバイスは、フラッシュメモリデバイスである。図1Aの当例は、4つのメモリデバイスを含むが、代替の例は、単一のメモリデバイスを含んでも、または任意の適切な数のメモリデバイスを含んでもよい。したがって、メモリデバイス24が、メモリコントローラ22のSoutに接続されているシステム20の第1のデバイスである場合には、メモリデバイス30は、メモリコントローラ22のSinに接続されているN番目の、または最後のデバイスであり、ただし、Nは、ゼロよりも大きい整数である。次いで、メモリデバイス26から28は、第1のメモリデバイスと、最後のメモリデバイスとの間のシリアル接続されているメモリデバイスを介在している。各メモリデバイスは、システムの初期化を起動すると、個別識別(ID)番号またはデバイスアドレス(DA)を取ることが可能であり、それにより、個々にアドレス指定できるようになる。いくつかの本出願と同一出願人による米国特許出願には、システムの連続的に接続されているメモリデバイスに対して、デバイスアドレスを作成し、指定するための方法が記載されている。例えば、「APPARATUS AND METHOD FOR ESTABLISHING DEVICE IDENTIFIERS FOR SERIALLY INTERCONNECTED DEVICES」と題された米国特許出願公開第2007/0233917 A1号、および「PACKET BASED ID GENERATION FOR SERIALLY INTERCONNECTED DEVICES」と題された米国特許出願公開第2008/0080492 A1号を参照されたい。
【００１８】
メモリデバイス24から30(図1A)は、1つのメモリデバイスのデータ入力が、前のメモリデバイスのデータ出力に接続されているという理由から、連続的に接続されていると見なされ、それによって、チェーン内の第1のメモリデバイスと最後のメモリデバイスとを除いて、直列接続システム組織を形成する。メモリコントローラ22のチャンネルは、導電線に接続されている個別ピン、または同一ピンによって供給されるデータ、アドレス、および制御情報を含む。図1Aの例は、1つのチャンネルを含み、1つのチャンネルは、Soutポート、および対応するSinポートを含む。しかし、メモリコントローラ22は、個別メモリデバイスチェーンに適応するための任意の適切な数のチャンネルを含んでよい。図1Aの例においては、メモリコントローラ22は、クロック信号CKを供給し、それは、すべてのメモリデバイスに並列に接続される。
【００１９】
概括的な動作において、メモリコントローラ22は、そのSoutポートを通じてコマンドを発行し、それは、動作コード(opコード)と、デバイスアドレスと、読出しまたはプログラミングのためのオプションのアドレス情報と、レジスタプログラミングのためのオプションのデータとを含む。コマンドは、シリアルビットストリームコマンドパケットとして発行可能であり、パケットは、所定の大きさのセグメントに論理的に細分可能である。各セグメントは、例えば、1バイトの大きさであることが可能である。ビットストリームは、経時的に供給される一続きの、または一連のビットである。コマンドは、第1のメモリデバイス24によって、その入力ポートSinを通って受信され、それは、デバイスアドレスをその指定されたアドレスと比較する。そのアドレス同士が一致する場合には、メモリデバイス24は、コマンドを実行する。コマンドは、それ自体の出力ポートSoutを通って、次のメモリデバイス26に送られ、そこで同一の手順が繰り返される。最終的には、選択されたメモリデバイスと呼ばれる、一致したデバイスアドレスを有するメモリデバイスが、コマンドによって指定された動作を実行することになる。コマンドが、読出しデータコマンドである場合、選択されたメモリデバイスは、その出力ポートSout(符号付けせず)を通して読出しデータを出力することになり、それは、メモリコントローラ22のSinポートに到達するまで、介在するメモリデバイスを通って連続的に送られる。コマンドおよびデータは、シリアルビットストリームで供給されるので、クロックは、シリアルビットにクロッキングし、シリアルビットからクロッキングするため、および内部メモリデバイス動作を同期させるために、各メモリデバイスによって使用される。このクロックは、システム20内のすべてのメモリデバイスによって使用される。
【００２０】
図1Aによるシステムに使用されるクロック周波数が比較的低いという理由から、ロバストなデータ通信をもたらすために、非終端のフルスイングCMOSシグナリングレベルが使用可能である。これは当業者によく知られているように、Low Voltage Transistor Transistor Logic(LVTTL:低電圧トランジスタ・トランジスタロジック)シグナリングとも呼ばれる。
【００２１】
図1Aのシステム20を上回るさらなる性能の改良は、図1Bのシステムによって得ることが可能である。図1Bのシステム40は、クロック信号CKが、必ずしもメモリコントローラ42でなく、前のデバイスから各メモリデバイスに連続的に供給されることを除けば、図1Aのシステム20と類似している(例えば、図1Aにおけるように、直列相互接続構成が、システムのコントローラデバイスと、半導体メモリデバイスとの間に存在している)。各メモリデバイス44、46、48、および50は、ソースシンクロナスクロックをそのクロック入力ポート上で受信し、それを、そのクロック出力ポートを介して、システム内の次のデバイスに転送することが可能である。システム40のいくつかの例においては、クロック信号CKは、1つのメモリデバイスから別のメモリデバイスに短い信号線を介して送られる。このような環境においては、(複数のデバイスによる負荷などの)並列クロック分配スキームに関連するクロック性能の問題は存在せず、CKは、高い周波数で動作することが可能である。したがって、システム40は、図1Aのシステム20よりも速い速度で動作することが可能である。例えば、High Speed Transceiver Logic (HSTL:高速トランシーバロジック)のシグナリングを使用して、高い性能のデータ通信を提供することが可能である。HSTLシグナリングフォーマットで、各メモリデバイスは、入ってくるデータ信号のロジック状態を確定するために使用される参照電圧を受け取ることが可能である。別の類似するシグナリングフォーマットは、Stub Series Terminated Logic (SSTL:スタブ直列終端ロジック)のシグナリングフォーマットである。したがって、システム20および40のメモリデバイスにおけるデータ入力回路と、クロック入力回路とは、お互いに異なって構造化される。HSTLおよびSSTLのシグナリングフォーマットはともに、当業者にはよく知られているはずである。
【００２２】
次に、図1Bに示すタイプのシステムのより具体的な例を提供するために、ここで図2Aを参照することにする。図2Aにおいては、システム100が、メモリコントローラ102と、4つのメモリデバイス104、106、108、および110とを含む。メモリコントローラ102は、制御信号を並列にメモリデバイスに供給する。これらは、チップイネーブル信号CE#と、リセット信号RST#とを含む。CE#の1つの例示の使用に際しては、デバイスは、CE#が低ロジックレベルであるとき、イネーブルにされる。すでに考慮したいくつかのデバイスにおいては、Flashメモリデバイスがプログラムを開始するか、動作を消去すると、CE#は、デアサートされ得るか、または高いロジックレベルに駆動され得る。しかし、1つの例示の実施形態においては、デアサートしたCE#は、ディスエーブルにされたシリアルメモリデバイスのSinからSoutへの通信をディスエーブルにする効果を有する。シリアルメモリデバイスは、リング状に接続されているので、デバイスのいずれかをディスエーブルにすることにより、リングを周る通信が遮断され、メモリコントローラは、メモリシステム内のメモリデバイスのすべてと通信することが不可能になる。結果として、CE#は、すべてのシリアルメモリデバイスに共通の信号であり、全メモリを低パワー状態にするために使用される。RST#の1つの例示の使用においては、メモリデバイスは、RST#が低ロジックレベルであるとき、リセットモードに設定される。リセットモードにおいては、パワーは、安定することが可能であり、デバイスは、すべての有限状態マシンを初期化することによって、かついずれの構成およびステータスレジスタをそれらのデフォルト状態にリセットすることによって、動作に向けての準備をする。メモリコントローラ102は、相補的クロック信号CKとCK#とを供給するためのクロック出力ポートCKO#とCKO、および相補的クロック信号をシステムの最後のメモリデバイスから受信するためのクロック入力ポートCKI#とCKIを含む。各メモリデバイスは受信されたクロックの位相を生成するためのDLLまたはPLLなど、クロックシンセサイザを含むことが可能である。特定の位相は、信頼できる動作を確実にするために、入力データ有効ウィンドウ内部でクロックエッジを中心に置くために使用可能である。図2Aにおける各メモリデバイスは、相補的クロック信号を次のメモリデバイスのクロック入力ポートに送るためのクロック出力ポートCKO#とCKO、およびメモリコントローラ102、または前のメモリデバイスのいずれかから相補的クロック信号を受信するためのクロック入力ポートCKIとCKI#を有する。最後のメモリデバイス110は、クロック信号をメモリコントローラ102へと戻して供給する。
【００２３】
メモリコントローラ102のチャンネルは、データ出力ポートSoutと、データ入力ポートSinと、コマンドストローブ入力CSIと、コマンドストローブ出力CSOと、データストローブ入力DSIと、データストローブ出力DSOとを含む。出力ポートSoutと、入力ポートSinとは、幅が1ビットであっても、または幅がnビットであってもよく、ただし、nは、メモリコントローラの特性に応じて、正の整数である。例えば、nが1である場合には、1バイトのデータは、クロックの8つのデータラッチングエッジ後に受信される。データラッチングクロックエッジは、例えば、シングルデータレート(SDR)動作においては、立上がりクロックエッジであってよく、または例えば、ダブルデータレート(DDR)動作においては、クロックの立上がりエッジおよび立下がりエッジの両方であってよい。nが2である場合には、1バイトのデータは、クロックの4つのラッチングエッジ後に受信される。nが4である場合には、1バイトのデータは、クロックの2つのラッチングエッジ後に受信される。メモリデバイスは、SoutおよびSinのいずれの幅に対して静的に構成されていても、または動的に構成されていてもよい。したがって、nが1よりも大きい構成においては、メモリコントローラは、データをパラレルビットストリームで供給する。CSIは、入力ポートSin上に現れるラッチングコマンドデータを制御するか、またはイネーブルにするために使用され、コマンドがデータ入力ポートSin上に存在するときの時間の範囲を定めるためのパルス期間を有する。より具体的には、コマンドデータは、いくつかのクロックサイクルによって測定される期間を有することになり、CSI信号のパルス期間は、対応する期間を有することになる。DSIは、読出しデータを出力するように、選択されたメモリデバイスの出力ポートSoutのバッファをイネーブルにするために使用され、メモリデバイスデータ出力ポートSoutから供給される読出しデータの範囲を定めるためのパルス期間を有し、それにより、メモリコントローラは、読出しトランザクションにおけるデータの量を制御することが可能になる。
【００２４】
図2Aの現在説明している実施形態は、高速動作に向けられるものであるので、例えば、HSTLシグナリングフォーマットなど、高速シグナリングフォーマットが使用される。したがって、参照電圧VREFが、各メモリデバイスに供給され、それは、Sin、CSIおよびDSIの入力ポートにおいて受信される信号のロジックレベルを確定するために、各メモリデバイスによって使用される。参照電圧VREFは、例えば、プリント回路基板上の別の回路によって生成可能であり、HSTL信号の電圧スイング中間点に基づいて、所定の電圧レベルに設定される。
【００２５】
図2Aの実施形態の使用においては、各メモリデバイスは、リング内の1つのデバイス上のSout出力ポートピンと、次のデバイスのSin入力ポートピンとの間の距離および信号トラック長が最小限になるように、プリント回路基板上に位置付けられる。あるいは、4つのメモリデバイスは、パッケージモジュール内のシステム(SIP)にまとめることが可能であり、それは、信号トラック長をさらに最小に抑える。メモリコントローラ102と、メモリデバイス104から110とは、リングトポロジーを形成するように連続的に接続され、最後のメモリデバイス110が、その出力をメモリコントローラ102へと戻して供給することを意味している。したがって、メモリデバイス110と、メモリコントローラ102との間の距離は、容易に最小に抑えられることを当業者は認識するであろう。
【００２６】
図2Bにおいては、システム150が、メモリコントローラ152と、メモリデバイス154、156、158、および160とを含む。メモリコントローラ152は、クロック信号が並列に供給され、そのため、各メモリデバイスのクロック出力ポートCKO#とCKOが存在しないか、または接続されていないことを除けば、図2Aに示すメモリコントローラ102のものと類似する機能を提供するように設計可能である。さらには、データおよびストローブ信号に対するシグナリングフォーマットは、図2Aのシステムと比較すると、図2Bのシステムの場合は異なる。例えば、図2Bのシステムに対するシグナリングフォーマットは、フルスイング非終端LVTTLシグナリングフォーマットであることが可能である。より低いクロック周波数とともに使用されるLVTTLシグナリングは、参照電圧VREFを使用しない。図2Bのシステムにのみ使用するためのメモリデバイスには、VREF入力が必要でない。VREF入力が存在する場合、それらがまた、VREFが必要な高速シグナリング仕様により通信することが可能であるからである。このような場合では、VREFは、利便性からは離れてシグナリング中間点以外の電圧レベルに設定されるか、またはLVTTLシグナリングが使用されていることを示すように設定される。例えば、このようなデバイスの場合、VREFは、LVTTLシグナリングと、HSTLシグナリングとは対照的に、図2Bによるネットワーク組織および図2Aによるネットワーク構成とを示すVDD、またはVSSのいずれかに設定可能になる。
【００２７】
例示の実施形態によれば、図2Aのメモリデバイス104、106、108、および110と、図2Bのメモリデバイス154、156、158、および160とは、他のメモリデバイスとシリアル相互接続するために設計された入力/出力インターフェースを有する任意のタイプのメモリデバイスであることが可能である。現在説明している実施形態によれば、図2Aおよび図2Bのメモリデバイスは、同一であってよく、したがって、それらは、LVTTL入力信号またはHSTL入力信号で動作することが可能な入力および出力のバッファ回路を有することになるので、両方のシステムにおいて動作可能である。メモリデバイスが、LVTTL信号またはHSTL信号の信号フォーマット以外のタイプの信号フォーマットで動作するための入力および出力のバッファ回路を含むことが可能であることを当業者は認識するであろう。
【００２８】
述べてきたように、前の図面に示すシステムのそれぞれは、1つまたは複数のメモリデバイスを含み、例示の実施形態により、図3は、前述のシステムのうちのいずれか1つの中に設置可能な例示のメモリデバイス200の図である。新規メモリデバイス200は、少なくともいくつかの例においては、複数(n)の消去可能なブロックを有するNANDフラッシュセルアレイ構造であるメモリバンク202を有する。消去可能なブロックのそれぞれは、複数(m)のプログラム可能なページに細分される。ページのそれぞれは、(j+k)バイトから成る。ページは、データが保存されるjバイトのデータストレージ領域と、典型的には、エラー管理機能に使用される個別のkバイトの領域とにさらに分割される。例えば、それぞれのページは、2,112バイトを含み、そのうちの2048バイトがデータストレージ用に使用され、64バイトがエラー管理機能用に使用されることになる。上述したメモリバンク202は、ページによってアクセスされる。図3は、単一のメモリバンク202を示しているが、メモリデバイス200は、複数のメモリバンク202を有することが可能である。
【００２９】
メモリバンク202にアクセスするためのコマンドは、コントローラからI/O(Input/Output:入力/出力)回路213を介してコマンドレジスタ214によって受信される。受信されたコマンドは、コマンドレジスタ214に入り、実行までそこにとどまる。制御ロジック216は、そのコマンドをメモリバンク202に対して実行可能な形態に変換する。コマンドは概して、チップの外部パッケージ上の種々のピンのアサーションを介して、メモリデバイス200に入り、この場合、種々のピンは、種々のコマンドを示すために使用可能である。例えば、コマンドは、読出し、プログラム、消去、レジスタ読出し、およびレジスタ書込みを含むことが可能である。レジスタ書込みに関しては、1つの例において、メモリデバイス200は、IDに対しての1バイトと、コマンドに対しての1バイトと、ペイロードとしての残りのバイトとを含む5バイトのレジスタ書込みコマンドパケットを処理できることが可能である。
【００３０】
読出しコマンドと、プログラムコマンドとは、ページベースで実行されるが、消去コマンドは、ブロックベースで実行される。また、メモリデバイス200のいくつかの例においては、デバイスの様々なピンはそれぞれ、ストローブポート(複数可)のうちの1つか、データポート(複数可)のうちの1つか、または図2Aおよび2Bに関連して前述した他のポートと関連付けられる。I/O回路213は、メモリデバイス200のデータピンと、内部コンポーネントとの間に示されているのに対し、チップインターフェース回路215は、メモリデバイス200の他のピンと、内部コンポーネントとの間に示されている。
【００３１】
読込みコマンドまたはプログラムコマンドが、I/O回路213を介してコマンドレジスタ214によって受信されると、コマンドが関係するメモリバンク202内のページについてのアドレスが、アドレスバッファ・ラッチ218にI/O回路213によって供給される。アドレスバッファ・ラッチ218からは次いで、アドレス情報が、アドレスによって示されるページへのアクセスに向けて、制御・プリデコーダ206と、センス増幅器(S/A)・データレジスタ204と、行デコーダ208とに供給される。読出し動作に関しては、データレジスタ204は、完全なページを受信し、それは次いで、I/O回路213に供給されて、メモリデバイス200から出力される(より具体的には、それは、明示していないI/O回路213の以下のサブコンポーネント:I/Oバッファ・ラッチに供給され、次いで出力ドライバに供給される)。
【００３２】
アドレスバッファ・ラッチ218は、アドレスがその中に位置するページを確定し、そのページに対応する行アドレス(複数可)を行デコーダ208に供給する。対応する行は、アクティブになる。データレジスタ・S/A 204は、ページを感知し、ページからのデータをデータレジスタ204に転送する。全ページからのデータが、データレジスタに転送し終わると、データは、I/O回路213を介して、デバイスから順次読み出される。
【００３３】
プログラムコマンドもまた、ページベースで処理される。プログラムコマンドは、I/O回路213を介して、コマンドレジスタ214によって受信され、付随アドレスが、I/O回路213を介して、アドレスバッファ218によって受信される。入力データは、I/O回路213によって受信されて、データトランジスタ204に転送される。入力データのすべてが、データレジスタ204内に入ると、入力データがその上に保存すべきページが、入力データによりプログラミングされる。
【００３４】
消去コマンドは、ブロックベースで処理される。消去コマンドは、I/O回路213を介してコマンドレジスタ214によって受信され、ブロックアドレスがI/O回路213を介して、アドレスバッファ218によって受信される。
【００３５】
図示のメモリデバイス200はまた、オプションで、ECCマネージャ217を含む。ECCマネージャ217は、より詳細に後述する例示の実施形態により、エラーの検出および訂正をイネーブルにする。図示のECCマネージャは、制御ロジック216と連通して示しているが、代替の例においては、ECCマネージャは、例えば、アドレスバッファ・ラッチ218のうちの1つまたは複数、およびコマンドレジスタ214などの他の図示するコンポーネントに直接、作用することを可能にする回路およびロジックを含むことが可能になる。パケットが、メモリデバイス200の入力からECCマネージャ217にそれを通じて供給可能な様々の知られている回路の存在を当業者は理解するであろう。
【００３６】
図示のメモリデバイス200はまた、1つまたは複数のステータスレジスタ249を含む(多くのタイプの従来のステータスレジスタは、当業者にはよく知られている)。制御ロジック216からの制御の下で、ステータスレジスタは、システムのコントローラに向けられるステータスタイプの情報を供給することが可能であり、典型的には、この情報を、I/O回路213を通じて伝達されている他の情報およびデータに介在/干渉しない形で供給する。1つの例においては、ステータスレジスタ249に保存されている情報は、具体的には、メモリデバイス上の1つまたは複数の専用ピンを介して、送出可能である。これに関して、オプションのECCジェネレータ251が、このプロセスを容易にするために、ステータスレジスタ249と、I/O回路213との間に設置可能である。
【００３７】
述べてきたように、図1A、1B、2A、および2Bに示すシステムのそれぞれは、メモリコントローラを含み、例示の適切なメモリコントローラ310のブロック図を図4に示す。
【００３８】
図4を参照すると、図示の新規フラッシュコントローラ310は、中央処理装置(CPU)312と、例えば、ランダムアクセスメモリ(RAM)316および読出し専用メモリ(ROM)318を有するメモリ314とを含む。当業者には理解されるように、フラッシュコントローラ310は、チップ上のシステムとしても、パッケージ内のシステムとしても、または複数のチップとしても構成可能である。また、図示のフラッシュコントローラ310は、フラッシュコマンドエンジン322と、エラー訂正用コード(ECC)マネージャ324と、フラッシュデバイスインターフェース326とを含む。いくつかの例においては、フラッシュデバイスインターフェースは、図2Aに示すメモリコントローラポートか、または図2Bに示すメモリコントローラポートかのいずれかを含むことが可能であり、(メモリデバイスとの関連で同様に説明したように)これらのそれぞれは、メモリコントローラ310のそれぞれのピンと関連付け可能である。例示の便宜上、フラッシュコントローラ310のピンすべてを図4に明示するのでなく、ピンは、符号付けしたフラッシュデバイスインターフェース326で表される。
【００３９】
さらに図4に関して、図示のフラッシュコントローラ310は、ホストインターフェースコントローラ332と、ホストインターフェース334とを含む。CPU312と、メモリ314と、フラッシュコマンドエンジン322と、ホストインターフェースコントローラ332とは、共通バス330を通じて接続されている。ホストインターフェース334は、バス、接続リンク、インターフェースなどを通じて、外部デバイス(例えば、ATA(Advanced Technology Attachment:アドバンストテクノロジーアタッチメント)、PATA(Parallel ATA:パラレルATA)、SATA(シリアルATA)、USB(universal serial bus:ユニバーサルシリアルバス)、またはPCIe(PCI Express:ピーシーアイエクスプレス))に接続するためのものである。ホストインターフェース334は、ホストインターフェースコントローラ332によって制御される。図示の例のCPU312は、ROM318に保存されている命令で動作し、処理されたデータは、RAM316に保存される。フラッシュコマンドエンジン322は、コマンドを解釈し、フラッシュコントローラ310は、フラッシュデバイスインターフェース326を通じて、フラッシュデバイスの動作を制御する。また、いくつかの例においては、フラッシュコマンドエンジン322は、メモリデバイスに向かうことになるパケットを生成する。ECCマネージャ324は、プログラムデータエラーコードの作成、ならびに読出しデータエラーコードのチェックおよび読出しデータの訂正などの他の可能な機能の中で、エラー訂正用コード(ECC)を作成して、特定のコマンドが、順調かつ完全に実行されることを確実にする。ECCマネージャは、より詳細に後述する例示の実施形態により、エラーの検出および訂正をイネーブルにする。
【００４０】
次に、伝送エラーがコマンドパケット内に生じた場合、エラーに対処するための1つの手法は、コントローラ310が、受信されたパケットを、当初伝送されたパケットと比較することによって、エラーを検出することになる。これは、メモリデバイスがコマンドを適切に受信したかどうかをコントローラが検出する固有の機構がないバストポロジーと比較すると、リングトポロジーの有用な特徴である。しかし、リングトポロジーにおけるこのエラー検出方法をもってしても、エラーが検出し終わる時までに、それを訂正するには遅すぎる場合がある。例えば、コマンドパケットがプログラムまたは消去コマンドであり、エラーがアドレスビットのうちの1つ(デバイスアドレス、ブロックアドレス、またはページアドレスのうちのいずれか1つ)において生じた場合、プログラムまたは消去動作は、コントローラがエラーを検出する時までに、すでに開始している場合があり、データは、誤アドレスが上書きされるか、または消去されると、修復できないように失われる可能性がある。別の回復できない可能性があるエラーは、非プログラムまたは非消去コマンドがプログラムまたは消去コマンドとして誤って受信された場合に生じる。概して、誤った読出しコマンドは、コントローラが別の読出し動作を要求し、望ましくないデータを破棄することが簡単に可能であるので、問題ではない。
【００４１】
概して、メモリアレイに書き込まれるか、またはメモリアレイから読み出されるデータにおけるよりも、コマンドにおけるエラーに対する方がより問題がある。データ内にエラー検出およびエラー訂正のコードを埋め込むためには多くのスキームがある。データの中には、より重大であるものがあり、概して、より高いオーバーヘッドおよびより大きいパフォーマンスインパクトを有する、よりロバストなエラースキームを有することが可能なものがある。システム設計者は、要求されるロバスト性のレベルを確定することが可能である。少なくともいくつかの例示の実施形態によってアドレスされる問題は、コマンドフィールド、アドレスフィールド、およびレジスタ書込みフィールドにおけるエラーに関する。これらのエラーは、読出しおよび書込みデータ内のエラー検出コードおよびエラー訂正コードでの解決は不可能である。生じる可能性があるコマンドエラー、アドレスエラー、およびレジスタ書込みエラーの多くの形態がある。概して、意図的でない読出しは、データが無視されてよく、コントローラ310がコマンドを再発行することが可能であるという理由から、問題ではない。使用中のメモリバンクに読み出されたページは、簡単に無視されることになる。エラーは、ターゲットデバイスの前か、またはデバイスの後かのいずれかのリング内のある場所で生じる可能性がある。以下のTable 1(表1)に、場所によるエラーの影響を詳述する。
【００４２】
【表１】
2015099598.tif 000003
【００４３】
図3および図4を参照すると、ターゲットデバイス200は、エラーに関してチェック可能であり、コマンドは、エラーが検出された場合、中止可能である。少なくとも1つの例示の実施形態により、予備のエラーコードバイトが、フラッシュコマンドエンジン322によって生成可能な各メモリデバイスに向かうことになるコマンドパケットに付加される。いくつかの実施形態においては、パケットは、リング内のパワーを節約するために、ターゲットデバイスによって切断可能である。読出しパケット、または結合されたコマンドパケットとプログラムデータパケットとのデータ部分を切断することは問題ない。しかし、コントローラ310がエラーに関してフルパケットをチェックすることが可能になるように、パケットのコマンド部分プラスこの予備のエラーコードバイトは、リング内のデバイスによって切断すべきでない。エラーが検出された場合には、コントローラ310は、メモリデバイスのデバイスステータスレジスタ249を読み出して、リング内のデバイスもまたエラーを検出したかどうか、およびコマンドが実際に実行されたかどうかを確定することが可能である。いくつかの例により、パケットの第1のバイトでDevice IDフィールドに対応するデバイス200であるターゲットデバイスは、受信されたコマンドバイトに基づいて、エラーコードを計算し、その結果を受信されたエラーコードバイトと比較することになる。いずれかの差異があった場合、コマンドは実行されなくなり、伝送エラーフラグが、ステータスレジスタ249内に設定されることになる。あるいは、エラーコードがエラー訂正をサポートする場合、デバイス200は、エラーを訂正し、コマンドを実行することが可能になる。例えば、巡回冗長コード(Cyclic Redundancy Code: CRC)、Bose-Chaudhuri-Hocquenghem(BCH)コード、Reed-Solomon(RS)コードなどのエラー検出用コードについて多くの企図される可能性があるが、少なくとも1つの例示の実施形態により、シングルビットエラーの場所が識別されることを可能にし、すべてのダブルビットエラーを検出することが可能なHammingコードが使用される。以下のTable 2(表2)に、追加のエラーコードバイトを有する例示の7バイトのコマンドパケットのビットを詳述する。
【００４４】
【表２】
2015099598.tif 000004
【００４５】
シングルビットエラーは、シングルビットエラーの場所が知られているので、訂正可能である。また、2ビットエラーは、検出可能であるが、訂正不可能である。このタイプのコードは、SECDED(Single Error Correction, Double Error Detection:シングルエラー訂正、ダブルエラー検出)コードとして知られている。
【００４６】
したがって、Hammingコードは、シングルビットエラー訂正と、2ビットエラー検出を提供する。Table 2(表2)に示した7バイトのペイロードは、前述の米国特許出願公開第2008/0049505 A1号および2008/0052449 A1号に述べられているすべての教示をカバーしている。しかし、8ビットのHammingコードは、15バイトのペイロードをカバーするのに十分であり、より大きなコマンドセットの可能性に対する将来の拡張を可能にする。7バイト未満のコマンドパケットの場合、存在しないデータビットは、ゼロであると仮定可能である。パリティビットは、図5に示すように計算される。
【００４７】
受信されたデータペイロードビットに関して計算されたパリティビットが、受信されたパリティビットとは異なる場合、その差異は、エラー内にあるデータビットを指す。例えば、D3がエラーにおいて受信された場合、計算されたパリティビットP0、P1、およびP2は、受信されたパリティビットとは異なることになる。それぞれのパリティビットP64、P32、P16、P8、P4、P2、P1が異なる場合の「1」と、それらが同一である場合の「0」とを有する7ビットのバイナリワード、すなわち、0,0,0,0,0,1,1は、シングルビットエラーが生じた場合のD3を指す。P0は、ペイロード内にシングルエラーがある場合、常に異なることになる。ワード内に単一の「1」がある(すなわち、唯一の1つの計算されたパリティビットが、受信されたパリティビットとは異なる)場合、それは、パリティビット内のエラーを示す。計算されたパリティビットP0が、受信されたP0と同一であり、他のパリティビットのうちの少なくとも1つが異なる場合には、訂正不可能なダブルエラーがパケット内にある。
【００４８】
いくつかの例示の実施形態により、ステータスレジスタ249(図3)は、コマンドパケット異常が生じたことを示す追加ビットを含む。
【００４９】
ここで、1つの例においては、ポイントツーポイントのリングトポロジーを有するシステムのメモリデバイスのうちの1つまたは複数のそれぞれは、4つのバンクを含むメモリデバイスである。このような例においては、各メモリバンクに関するReady/BusyフラグおよびPass/Failフラグを含むステータスレジスタの完全に占有されたバイトがあり得る。そのため、追加のバイトは、以下のTable 3(表3)に示すように追加すべきである。
【００５０】
【表３】
2015099598.tif 000005
【００５１】
上述の例示の実施形態についてのERRフラグは、永続的である。読出しステータスレジスタコマンドが受信され、続いて、クリアされるまでは、「1」は残ったままになる。
【００５２】
デバイスがシングルビットエラー訂正をサポートする場合、以下のTable 4(表4)に示すステータスレジスタフォーマットは使用可能である。
【００５３】
【表４】
2015099598.tif 000006
【００５４】
上述のステータスレジスタの実装の細部は、異なる例示のメモリにより異なることは認識されるであろう。例えば、4個未満のメモリバンクを有するそれらのメモリの場合、シングルバイトのステータスレジスタを使用することは、企図されている可能性である。また、2バイトを超えるステータスレジスタの使用も、特には、4個を超えるメモリバンクを有するメモリの場合、企図されている可能性である。加えて、ステータスビットは、ステータス読出しコマンドが受信されるまでは、永続的であることが可能であるか、またはいずれの後続の有効コマンドを受信すると、クリアにすることが可能である。
【００５５】
少なくとも1つの例示の実施形態により、コントローラ310(図4)は、メモリデバイスのようにパリティビットを再計算することによってか、または伝送されたコマンドパケットの各ワードを、受信されたパケットとただ比較することによってのいずれかで、コマンドパケットエラーが生じているかを確定することが可能である。後者の手法と前者の手法との相違は、後者の手法は、マルチビットエラーを識別することが可能であることである。エラーが検出された場合には、コントローラ310は、エラーが、ターゲットデバイスの前に生じたのか、または後に生じたのかを確定する必要がある。コントローラ310は、ステータスレジスタ249を読み出すためには、ステータスレジスタ読出しコマンドをターゲットデバイス200(図3)に発行する必要がある。あるいは、Device Addressフィールドのエラーの場合には、コントローラ310は、それが、エラーフラグの状態を確定するために、コマンドパケットの意図された受信側であると誤って判断するデバイス(本明細書においては、誤ってアドレス指定されるデバイスと呼ぶ)に対して、ステータスレジスタ読出しコマンドを発行する必要がある。
【００５６】
図6は、例示の実施形態による方法500を流れ図の形態で示している。最初に、動作501において、コントローラは、コマンドパケットがリングを循環した後にそれを受信し、コントローラは、動作503において、エラーについてチェックする。エラーがない場合は、それ以上の動作は、図示の方法と関連して取られる必要はないが、少なくとも1つのエラーが存在する場合には、動作504が次に続く。
【００５７】
動作504においては、エラーがIDフィールド内で生じたかどうかに関しての確定が行われる。エラーがIDフィールド内で生じなかった場合には、動作509が次に続く(動作509については、本特許明細書において後述する)。エラーがIDフィールド内で生じた場合には、動作506が次に続く。動作506においては、コントローラ310(図4)は、誤ってアドレス指定されるデバイスに、ステータス読出しコマンドを発行し、それにより、やがて、誤ってアドレス指定されるデバイスのステータスレジスタが読み出され、ステータスレジスタの永続的なエラービット指示をクリアにすることになる。次に、コントローラは、動作507において、誤ってアドレス指定されるデバイスバイトを受信する。
【００５８】
動作509は、動作507に続く。動作509においては、ターゲットデバイスのレジスタが読み出され、次いで、次の動作510において示すように、コントローラ310(図4)は、リングにおける最後のデバイスから、ターゲットデバイスのエラーバイト(例えば、先のTable 3(表3)に示した「Byte 1」)を受信する。この動作は、ターゲットデバイスにおける永続的なエラービット指示をクリアにすることになる。いくつかの例においては、このエラーバイトは、フラッシュデバイスインターフェース326を介して、ECCマネージャ324に供給される。次に、動作520において、ECCマネージャ324は、エラーバイトのERRビットが「0」であるのか、または「1」であるのかを確定することが可能である。ERRビットが「0」である場合、これは、コマンドが、ターゲットデバイスにおいて適切に受信されたこと、およびエラーがターゲットデバイスの後のリング内のある場所で生じたことを意味する。このような場合には、コマンドが再発行される必要はない。ERRビットが「1」である場合、これは、エラーがターゲットデバイスの前のある場所で生じたことを意味する。このような場合には、コマンドは再発行される(動作530)。当業者には認識されるように、フラッシュコマンドエンジン322は、CPU312の命令の下、コマンドの再発行をもたらすことが可能である。
【００５９】
いくつかの例示の実施形態においては、リング内のあらゆるデバイスは、エラーに関して、コマンドパケットをチェックし、エラーフラグを適切に設定する。コントローラ310(図4)は次いで、リング内のあらゆるデバイスのステータスレジスタ249(図3)をチェックして、どの点においてエラーが生じたのか、およびターゲットデバイスが、コマンドを受信し、それを実行したのかどうかを確定する。リング内の各デバイスに個々のステータスレジスタコマンドを送信するのでなく、別の手法は、ブロードキャストステータス読出しコマンドを使用することになる。前述の米国特許出願公開第2008/0049505 A1号と整合して、Broadcast Device Addressとして認識される、例えば「11111111」などの特有のデバイスアドレスが存在することが可能である。ローカルなDevice IDとの通常の比較は、Broadcast Device Addressの場合には、無効にされる。
【００６０】
図7は、例示の実施形態によるブロードキャストステータス読出しコマンドの動作を示すタイミング図である。このタイミング図においては、複数のデバイスは、リング内の複数のデバイスを通じて伝達されるブロードキャストステータス読出しコマンドの性質に関して、明白な例示的な詳細を提供するために、例えば、D0、Q0/D1、Q1/D2についての信号図で表される。
【００６１】
図7の示される例示の実施形態により、Device 0は、CSI0信号で示されるD0に対する2バイトのブロードキャスト読出しステータスコマンドを受信する。数クロックサイクルの後、それは、ステータスレジスタのコンテンツがQ0に対して出力すべきであることを示すデータストローブ信号DSI0を受信する。デバイス0は、出力データストローブDSO0を1つのクロックサイクルだけ拡大し、DSO0ストローブの拡大された部分で示されるタイムスロット内でQ0に対する2バイトのステータスレジスタデータを出力する。このようにして、データストローブパルスの長さは、リング上の各デバイスとともに増大して、リング上の各デバイスからステータス情報のバーストをもたらす。このコマンドは、すべてのデバイスが、エラーに関してコマンドパケットをチェックするとき、リング内のどこでコマンドパケットエラーが生じたのかを確定するのに有用である。それはまた、種々のメモリデバイスに同時に生じる複数の読出し、プログラム、および消去の動作のステータスをチェックするための通常の動作においても有用である。
【００６２】
すべてのデバイスが、等しい長さ2バイトのステータスレジスタを有する場合のブロードキャストステータス読出し動作について説明してきた。この技術はまた、異なるステータスレジスタ長を有するデバイスに対しても役立つことが可能である。リングが初期化されると、コントローラは、各デバイスのデバイス情報レジスタを読み出し、各デバイスのステータスレジスタの長さを確定する。ブロードキャストレジスタ読出し動作の間に、各デバイスは、いかなる長さであろうとも、そのステータスレジスタ情報をバースト上に付加し、この付加された情報を含むように、出力データストローブを拡大する。フルバーストのステータス情報を受信すると、コントローラは、各デバイスから予測されるバイトの数を知り、その情報を分けることが可能である。
【００６３】
説明したメモリデバイスがサポートするエラーの検出および/または訂正は、エラーの検出および/または訂正が、ディスエーブルにされることを可能にするようにプログラムできることが可能である。例えばリセットされると、メモリデバイスは、エラーの検出および訂正をディスエーブルさせることが可能である。コントローラが、エラーの検出および/または訂正の使用を望む場合、それは、例えば、これらの機能をイネーブルにするために、各メモリデバイス内の制御レジスタに1つまたは複数のビットを書き込むことが可能である。コントローラが、これらの機能をディスエーブルにする場合、各コマンドパケットの終端における追加のパリティビットは、1つのバスのタイムスロットを省くために取り除かれるか、またはメモリデバイスによって無視されることになるヌルデータでロードされるかのいずれかであってよい。このようにして、低コストのシステムが、エラーの訂正および/または検出をサポートする必要があるのではなく、共通のメモリデバイスが、コマンドパケットエラーの検出および/または訂正を必要とするシステムに加えて、低コストのシステムの働きをすることが可能である。
【００６４】
いくつかの例においては、前述のスキームと類似しているエラーの検出および訂正のスキームが提供されており、それは、読出しおよび書込みのデータに適用される。この追加のスキームの具体的な実装形態においては、共通のパケットに使用されるのと同じパリティチェック用ロジック回路が、チップ範囲および複雑さを抑えるために使用可能である。以下のTable 5(表5)に、コマンドパリティバイトおよびデータパリティバイトを有する例示の書込みデータパケットを詳述する。
【００６５】
【表５】
2015099598.tif 000007
【００６６】
Table 5(表5)の例においては、バイト0から4は、前述したコマンド部分と、機能とを含む。フルページサイズまでの任意の数の書込みデータバイトが、コマンド部分に続くことが可能である。パケットの最終バイトは、書込みデータバイトに対して計算された書込みデータパリティバイトである。前述の同じSECDED Hammingコードが使用されることになった場合、それは、15バイトまでに対してのみ、シングルエラーの訂正適用範囲を提供することになる。15バイトの後は、パリティ方程式は、単にラップアラウンドすることになり、シングルビットのエラー訂正は、もはや実装不可能になる。あるいは、大きいデータパケットに対して、より優れたエラー適用範囲を有する、よりロバストなCRCコードが選択可能になる。コマンドおよびデータに対する個々のエラー検出ビットは、ステータスレジスタに供給可能になる。
【００６７】
読出しデータパリティに関しては、これは、同様にして達成可能である。内部メモリ配列からデータを読み出すと、メモリデバイスは、読出しデータパケットの終端に付加するパリティバイトを計算することになる。コントローラは、Data Strobe信号の長さを制御することによって、読み出すべきバイトの数を確定する。メモリデバイスが、読出しデータバーストを終了させるData Strobe信号の立下がりエッジを検出すると、メモリデバイスは、累積パリティバイトを出力する。読出しデータを受信すると、コントローラは、同一のパリティ計算を実行し、その結果を、読出しデータバーストの終端に付加された受信パリティバイトと比較して、ビットエラーがあったかどうかを確定する。ユーザは、エラー訂正コードをレジスタデータに重ね合わせることはできないので、これは、ステータスレジスタ読出しコマンドなどのレジスタ読出しコマンドには特に有用である。メモリ配列への、およびメモリ配列からの通常の読出しおよび書込みのデータにより、ユーザは、適切なエラー検出コードを選択して、データとともに保存することが可能である。
【００６８】
本明細書に示し、説明するいくつかの例示の実施形態は、ポイントツーポイントのリングトポロジーを有するシステムに関するが、システムのコントローラデバイスと、システムの複数の半導体メモリデバイスとの間に存在する直列相互接続構成があるので、いくつかの代替の例示の実施形態が、例えば、マルチドロップシステムであると特徴付けられることになるものなどの他のタイプのシステムに関することは認識されるであろう。
【００６９】
他の変更形態が企図される。例えば、Table 3(表3)およびTable 4(表4)に関して前述した4バンクメモリデバイスの例と類似する別の例においては、ポイントツーポイントのリングトポロジーを有するシステムのメモリデバイスのうちの1つまたは複数のそれぞれは、ブリッジングデバイスと、4つのディスクリートメモリデバイスとを含む複合メモリである。(企図される複合メモリに関するさらなる詳細に関して、「A Composite Memory Having a Bridging Device for Connecting Discrete Memory Devices to a System」と題された米国特許出願第12/401,963号を参照し、その全内容を、参照によって本明細書に組み込む)。このような例においては、ステータスレジスタは、ブリッジングデバイス内にあってよい。
【００７０】
いくつかの例示の実施形態は、例えば、NAND Flash EEPROMデバイス(複数可)、NOR Flash EEPROMデバイス(複数可)、AND Flash EEPROMデバイス(複数可)、DiNOR Flash EEPROMデバイス(複数可)、Serial Flash EEPROMデバイス(複数可)、DRAMデバイス(複数可)、SRAMデバイス(複数可)、Ferro RAMデバイス(複数可)、Magnetic RAMデバイス(複数可)、Phase Change RAMデバイス(複数可)、またはこれらのデバイスの任意の適切な組合せを含むものなどの任意の適切な固体メモリシステムに適用可能である。これらの技術はまた、単一のバスマスタ、および複数のスレーブか、または複数のバスマスタの構成として体系化されているかどうかにかかわらず、リングまたは他の相互接続トポロジーを介して通信するメモリと、メモリでないデバイスとの両方に適用可能できる。
【００７１】
本明細書において、要素を別の要素に「接続される」、または「結合される」と呼ぶ場合、それが他の要素に直接、接続されても、または直接、結合されても、あるいは介在する要素が存在してもよいことは認識されるであろう。対称的に、本明細書において、要素を別の要素に「直接、接続される」、または「直接、結合される」と呼ぶ場合、介在する要素は存在しない。要素間の関係を説明するために使用する他の単語を、同様に(すなわち、「間で」対「間で直接」、「隣接する」対「直接、隣接する」など)解釈すべきである。
【００７２】
説明した実施形態の特定の適合形態および修正形態を行うことが可能である。そのため、上述の実施形態は、例示的であると見なすべきであり、限定的であると見なすべきではない。
【符号の説明】
【００７３】
20  システム
22  メモリコントローラ
24  メモリデバイス
26  メモリデバイス
28  メモリデバイス
30  メモリデバイス
40  システム
42  メモリコントローラ
44  メモリデバイス
46  メモリデバイス
48  メモリデバイス
50  メモリデバイス
100  システム
102  メモリコントローラ
104  メモリデバイス
106  メモリデバイス
108  メモリデバイス
110  メモリデバイス
150  システム
152  メモリコントローラ
154  メモリデバイス
156  メモリデバイス
158  メモリデバイス
160  メモリデバイス
200  メモリデバイス
202  メモリバンク
204  センス増幅器(S/A)・データレジスタ
206  制御・プリデコーダ
208  行デコーダ
213  I/O回路
214  コマンドレジスタ
215  チップインターフェース回路
216  制御ロジック
217  ECCマネージャ
218  アドレスバッファ・ラッチ
249  ステータスレジスタ
251  ECCジェネレータ
310  フラッシュコントローラ
312  中央処理装置(CPU)
314  メモリ
316  ランダムアクセスメモリ(RAM)
318  読出し専用メモリ(ROM)
322  フラッシュコマンドエンジン
324  エラー訂正用コード(ECC)マネージャ
326  フラッシュデバイスインターフェース
330  共通バス
332  ホストインターフェースコントローラ
334  ホストインターフェース
500  方法
501  動作
503  動作
504  動作
506  動作
507  動作
509  動作
510  動作
520  動作
530  動作
【図１Ａ】
2015099598.tif 000008
【図１Ｂ】
2015099598.tif 000009
【図２Ａ】
2015099598.tif 000010
【図２Ｂ】
2015099598.tif 000011
【図３】
2015099598.tif 000012
【図４】
2015099598.tif 000013
【図５】
2015099598.tif 000014
【図６】
2015099598.tif 000015
【図７】
2015099598.tif 000016