(57)【要約】【課題】  メモリ機器において誤り訂正符号を利用するための機器および方法を提供する。【解決手段】  たとえば、この機器および方法は、データ記憶装置のデータバッファにおいて実現されることが可能である。１つの変形例では、単一のメモリ装置がデータおよび関連付けられる誤り訂正符号の両方を格納するために利用される。データおよび関連付けられる誤り訂正符号は、メモリ装置の別個のメモリバンクに格納される。誤り訂正符号は、メモリ装置での利用可能なメモリ空間の利用を改善するために、メモリ装置の中の１つ以上の領域にまとめられることができる。さらに、データおよび関連付けられる誤り訂正符号を格納するために別個のメモリバンクを利用することによって、データおよび誤り訂正符号はオーバーラップする態様でアクセス可能である。【選択図】図１
2007115390.tif 000002
【特許請求の範囲】
【請求項１】
メモリ機器であって、
データを受取り、データについての誤り訂正符号を生成するように動作可能なメモリコントローラと、
第１のメモリバンクおよび第２のメモリバンクを含むメモリとを含み、メモリコントローラは、データを第１のメモリバンクに格納し、誤り訂正符号を第２のメモリバンクに格納するようにさらに動作可能であって、誤り訂正符号はデータに関連付けられる、メモリ機器。
【請求項２】
メモリコントローラは、データに関連付けられる第１のアドレスを受取るように動作可能であって、メモリコントローラは、前記第１のアドレスに対応する位置においてデータをメモリに置くようにさらに動作可能である、請求項１に記載のメモリ機器。
【請求項３】
メモリコントローラは、第１のアドレスを変換することによって第２のアドレスを生成し、前記第２のアドレスに対応する位置において誤り訂正をメモリに格納するように動作可能である、請求項２に記載のメモリ機器。
【請求項４】
メモリは４つのバンクおよび２つの誤り訂正符号記憶領域を含む、請求項３に記載のメモリ機器。
【請求項５】
メモリの合計サイズは値Ｓを有し、データのバイト数と誤り訂正符号のバイト数との間の割合は値Ｒであり、４つのバンクはバンク１、バンク２、バンク３およびバンク４を含み、第１のアドレスがバンク１またはバンク２にデータを置く場合、第２のアドレスは次の式［(first address−S/(R*2))/R］＋［S−S/(R*2)］によって求められ、第１のアドレスがバンク３またはバンク４にデータを置く場合、第２のアドレスは次の式［(first address−(S/2))/R］によって求められる、請求項４に記載のメモリ機器。
【請求項６】
誤り訂正符号を生成するために多項式が使用される、請求項１に記載のメモリ機器。
【請求項７】
多項式は、Ｘ16＋Ｘ15＋Ｘ11＋Ｘ10＋Ｘ6＋Ｘ4＋Ｘ3＋１で構成される、請求項６に記載のメモリ機器。
【請求項８】
メモリコントローラは、メモリへのデータの転送、およびメモリへの誤り訂正符号の転送を連続して実行するように動作可能である、請求項１に記載のメモリ機器。
【請求項９】
メモリコントローラは、メモリへのデータの転送、およびメモリへの誤り訂正符号の転送をオーバーラップする態様で同時に実行するように動作可能である、請求項１に記載のメモリ機器。
【請求項１０】
メモリコントローラは、メモリへのデータの転送を同時に実行する間、メモリへの誤り訂正符号の転送のためのアドレスを生成するように動作可能である、請求項１に記載のメモリ機器。
【請求項１１】
メモリコントローラは、第２のメモリバンクにおいて誤り訂正符号の転送を同時に実行する間、第１のメモリバンクの閉鎖を実行するように動作可能である、請求項１に記載のメモリ機器。
【請求項１２】
メモリコントローラからデータを受取り、データをデータ記憶媒体に置くように動作可能なトランスデューサをさらに含む、請求項１に記載のメモリ機器。
【請求項１３】
メモリコントローラは、データを第１のメモリバンクから取出し、誤り訂正符号を第２のメモリバンクから取出し、取出されたデータが誤りを含むかどうかを誤り訂正符号に基づいて判断するようにさらに動作可能である、請求項１２に記載のメモリ機器。
【請求項１４】
メモリコントローラは、誤り訂正符号に基づいて誤りを訂正するようにさらに動作可能である、請求項１３に記載のメモリ機器。
【請求項１５】
メモリはＤＤＲメモリを含む、請求項１４に記載のメモリ機器。
【請求項１６】
データは３２バイトで構成され、誤り訂正符号は２バイトで構成される、請求項１に記載のメモリ機器。
【請求項１７】
メモリはＤＤＲメモリを含む、請求項１に記載のメモリ機器。
【請求項１８】
誤り訂正符号はハミング符号を含む、請求項１に記載のメモリ機器。
【請求項１９】
誤り訂正符号はＢＣＨ符号を含む、請求項１に記載のメモリ機器。
【請求項２０】
データ記憶媒体は磁気データ記憶テープを含む、請求項１３に記載のメモリ機器。
【請求項２１】
誤り訂正符号は、単一誤り訂正／二重誤り検出符号を含む、請求項２０に記載のメモリ機器。
【請求項２２】
誤り訂正符号は、二重誤り訂正／三重誤り検出符合を含む、請求項１５に記載のメモリ機器。
【請求項２３】
データ記憶媒体は磁気テープを含む、請求項１２に記載のメモリ機器。
【請求項２４】
データ記憶媒体は書込可能なＣＤまたは再書込可能なＣＤを含む、請求項１２に記載のメモリ機器。
【請求項２５】
データ記憶媒体は、書込可能なＤＶＤまたは再書込可能なＤＶＤを含む、請求項１２に記載のメモリ機器。
【請求項２６】
データ記憶媒体はハードドライブを含む、請求項１２に記載のメモリ機器。
【請求項２７】
メモリからデータを受取るように動作可能なコンピュータをさらに含む、請求項１に記載のメモリ機器。
【請求項２８】
メモリコントローラは、データを第１のメモリバンクから取出し、誤り訂正符号を第２のメモリバンクから取出し、誤り訂正符号に基づいてデータの完全性を調べ、データを前記コンピュータに転送するようにさらに動作可能である、請求項２７に記載のメモリ機器。
【請求項２９】
データ記憶媒体からデータを読出し、データをメモリコントローラに転送するように動作可能なトランスデューサをさらに含む、請求項２８に記載のメモリ機器。
【請求項３０】
メモリはＤＤＲメモリを含む、請求項２９に記載のメモリ機器。
【請求項３１】
データ記憶媒体は磁気テープを含む、請求項３０に記載のメモリ機器。
【請求項３２】
メモリコントローラは、データを第１のメモリバンクから取出し、誤り訂正符号を第２のメモリバンクから取出し、誤り訂正符号に基づいてデータの完全性を調べるようにさらに動作可能である、請求項１に記載のメモリ機器。
【請求項３３】
メモリコントローラは、誤り訂正符号に基づいてデータの中の誤りを訂正するようにさらに動作可能である、請求項３２に記載のメモリ機器。
【請求項３４】
メモリはＤＤＲメモリを含む、請求項３２に記載のメモリ機器。
【請求項３５】
データを転送する方法であって、
データを受取ることと、
誤り訂正符号を生成することと、
メモリモジュールのメモリアレイの中の第１のメモリ空間にデータを置くことと、メモリモジュールのメモリアレイの中の第２のメモリ空間に誤り訂正符号を置くこととを含み、誤り訂正はデータに関連付けられ、第１のメモリ空間および第２のメモリ空間はメモリアレイ内では連続的ではない、方法。
【請求項３６】
第１のメモリ空間はメモリモジュールの中の第１のメモリバンクを含み、第２のメモリ空間はメモリモジュールの中の第２のメモリバンクを含む、請求項３５に記載の方法。
【請求項３７】
メモリモジュールはＤＤＲメモリモジュールを含む、請求項３６に記載の方法。
【請求項３８】
データを第１のメモリ空間から取出すことと、
誤り訂正符号を第２のメモリ空間から取出すことと、
誤り訂正符号に基づいてデータの完全性を調べることとをさらに含む、請求項３５に記載の方法。
【請求項３９】
誤り訂正符号に基づいてデータを訂正することをさらに含む、請求項３８に記載の方法。
【請求項４０】
データを受取ることはメモリコントローラを用いてデータを受取ることを含み、メモリコントローラは、誤り訂正符号を生成し、メモリモジュールの中の第１のメモリバンクにデータを置き、メモリモジュールの中の第２のメモリバンクに誤り訂正符号を置くように構成される、請求項３８に記載の方法。
【請求項４１】
データを格納する方法であって、
データを受取ることと、
誤り訂正符号を生成することと、
メモリの中の第１のメモリバンクにデータを置くことと、
メモリの中の第２のメモリバンクに誤り訂正符号を置くこととを含み、誤り訂正はデータに関連付けられる、方法。
【請求項４２】
データを第１のメモリバンクに置くことおよび誤り訂正符号を第２のメモリバンクに置くことは、連続して実行される、請求項４１に記載の方法。
【請求項４３】
データを第１のメモリバンクに置くことおよび誤り訂正符号を第２のメモリバンクに置くことは、オーバーラップする態様で同時に実行される、請求項４１に記載の方法。
【請求項４４】
データを第１のメモリバンクに置くことは、メモリコントローラに与えられるアドレスを利用して実行される、請求項４１に記載の方法。
【請求項４５】
データを第１のメモリバンクに置くことは、アドレス変換なしに実行される、請求項４１に記載の方法。
【請求項４６】
誤り訂正符号を第２のメモリバンクに置くことは、アドレス変換とともに実行される、請求項４５に記載の方法。
【請求項４７】
データを第１のメモリバンクから取出すことと、
誤り訂正符号を第２のメモリバンクから取出すことと、
誤り訂正符号に基づいてデータの完全性を調べることとをさらに含む、請求項４１に記載の方法。
【請求項４８】
データをデータ記憶媒体に書込むことをさらに含む、請求項４７に記載の方法。
【請求項４９】
データ記憶媒体は磁気データ記憶媒体を含む、請求項４８に記載の方法。
【請求項５０】
データ記憶媒体は光学データ記憶媒体を含む、請求項４８に記載の方法。
【請求項５１】
磁気データ記憶媒体はテープを含む、請求項４９に記載の方法。
【請求項５２】
磁気データ記憶媒体はハードドライブを含む、請求項４９に記載の方法。
【請求項５３】
光学データ記憶媒体はＤＶＤを含む、請求項５０に記載の方法。
【請求項５４】
光学データ記憶媒体はＣＤを含む、請求項５０に記載の方法。
【請求項５５】
データの完全性が妥協された場合に誤り訂正符号に基づいてデータを訂正することをさらに含む、請求項４７に記載の方法。
【請求項５６】
データを受取ることは、メモリコントローラを用いてデータを受取ることを含む、請求項５５に記載の方法。
【請求項５７】
メモリはＤＤＲメモリを含む、請求項５６に記載の方法。
【請求項５８】
誤り訂正符号はＳＥＣ／ＤＥＤハミング符号を含む、請求項５７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は概して、誤り訂正符号の分野に関する。この発明の１つの局面では、本明細書に開示される機器および方法は、一方の装置から他方の装置へのデータ転送の間にシステムの信頼性を改善するために、データバッファにおいて実現されることができる。
【背景技術】
【０００２】
背景
以前の世代のデータ記憶装置の多くは、メモリがシングルビットエラーを示すメモリ適性問題を有していた。たとえば、いくつかのメモリコントローラは、データバッファ内のデータの完全性を検証するための誤り検出符号（ＥＤＣ）として垂直パリティまたは水平パリティを使用する。したがって、シングルビットエラーは決定的誤りであった。データバッファは、媒体への読出および書込時に顧客データをキャッシュに入れるために使用される。データバッファは、コントローラマイクロプロセッサのためのランダムアクセスメモリとして、およびマイクロプロセッサプログラムコードのための命令記憶装置としても使用されてもよい。
【０００３】
メモリの形状が小型化し続け、装置の動作速度／周波数が増加し続けるにつれて、ソフトエラーの率も増加する。シングルビットエラーが決定的でありかつ発生し得る構成の実現例は望ましくなく、いくつかの用途では許容されることさえできない。ソフトエラーに起因する故障率を最小にするための効果的な方法は、誤り訂正符号（ＥＣＣ）の利用によるものである。
【０００４】
ＥＣＣの実現例を有するデータ記憶装置の多くは、データバッファの中で２つ以上の別個のメモリチップを利用する。つまり、データを格納するために１つ以上のメモリチップを利用し、関連付けられるＥＣＣを格納するために１つのメモリチップを利用する。しかしながら、複数のメモリチップの使用は、コストを増大させる可能性があり、および／または動作効率を減少させる可能性がある。
【０００５】
最近になって、データおよびＥＣＣの両方を格納するためにデータバッファの中で単一のチップを利用する装置が導入されるようになった。このような装置の例は、２００２年３月５日付のカーネベル（Carnevale）らに発行された「垂直ＥＣＣ記憶装置を利用してダイナミックランダムアクセスメモリにおいて誤り訂正符号化（ＥＣＣ）を実現するための方法および機器（Method and apparatus for implementing error correction coding(ECC) in a dynamic random access memory utilizing vertical ECC storage）」と題される米国特許第６，３５３，９１０号、ならびに２００３年２月２５日付のキシノ（Kishino）に発行された「ＥＣＣを生成するためおよびＥＣＣをデータに追加するための記憶装置（Storage for generating ECC and adding ECC to data）」と題される米国特許第６，５２６，５３７号に示され、これらの各々はすべての目的で引用によって全文が援用される。単一のメモリ装置にデータおよびＥＣＣを格納するこれらの装置の多くは、「垂直」ＥＣＣを利用する。典型的には、データおよびその対応するＥＣＣは、連続的な一連のビットとしてメモリアレイに格納される。完成されたＥＣＣ符号語（データ＋ＥＣＣ）の大きさが典型的には２Ｎではないので、ＥＣＣ符号語によって完全には埋められていないメモリの中の所定の記憶フィールド内のメモリ位置は未使用のまま残され、したがって無駄になる。さらに、垂直ＥＣＣは、メモリをシステムアプリケーションに連続しているように見せるために、ＥＣＣの冗長性および未使用のメモリを飛ばすようにシステムがアドレス変換を実行することを必要とする。これによって、システム性能がより低くなり、
および／またはメモリ資源の使用が非効率になる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、データバッファでのＥＣＣの実現例が改善される必要がある。特に、システムの動作効率を改善し、同時に製造コストを最小にする（たとえば、より少ない構成要素を利用するなどの）能力が特に望ましいであろう。
【課題を解決するための手段】
【０００７】
発明の概要
データバッファリングまたは記憶装置においてＥＣＣを実現するための機器および方法が本明細書に開示される。この機器および方法は、データ記憶システム、コンピュータシステム、ネットワークシステム、およびメモリ装置／チップに格納されたデータの完全性を保証するためにＥＣＣが実現されるさまざまな他のシステムにおいて利用されることができる。
【０００８】
１つの変形例では、データバッファリング装置はメモリコントローラとメモリとを含むように構成される。メモリコントローラは、データを受取り、そのデータについての誤り訂正符号を生成するように動作可能である。メモリは、少なくとも第１のメモリバンクおよび第２のメモリバンクを含む。メモリコントローラは、データを第１のメモリバンクに格納し、誤り訂正符号を第２のメモリバンクに格納するように動作可能である。データおよび誤り訂正符号は、誤り訂正符号がデータに関連付けられるようにメモリバンクの中に置かれる。メモリは２つ以上のメモリバンクを含むことができ、メモリコントローラは、データをその関連付けられる誤り訂正符号から分離するために複数のバンクの任意の組合せを利用するように設計されることが可能である。
【０００９】
別の変形例では、データおよび関連付けられるＥＣＣの両方を格納するために、単一のメモリ装置（たとえば、ＤＤＲ−ＳＤＲＡＭ、ＳＤＲ−ＳＤＲＡＭ、ＤＤＲ２−ＳＤＲＡＭなど）がデータバッファとしてデータ記憶装置において実現され、データおよび関連付けられるＥＣＣは単一のメモリ装置の中の２つの別個の領域にあるメモリ装置に格納される。たとえば、単一のＤＤＲ（ダブルデータレート）メモリチップ（たとえば、ＤＤＲ−ＳＤＲＡＭなど）は、複数のデータおよびそれらの対応するＥＣＣを受取るように実現されてもよい。ＤＤＲメモリは、メモリチップに保存されるべきデータを受取るための複数のメモリバンクを含む。データおよびＥＣＣは、ＤＤＲメモリにおける異なるメモリバンクの中に置かれる。１つの例では、複数のデータセットはメモリバンク番号１の中に置かれ、それらの関連付けられるＥＣＣはメモリバンク番号３の中に置かれる。バンクは必ずしもデータまたはＥＣＣのみに専用であるとは限らない。アドレス範囲の異なる部分については、データはメモリバンク番号３に入る可能性があり、そのＥＣＣは別のメモリバンクに入るであろう。
【００１０】
ＥＣＣをその関連のデータセットから分離することによって、データセットはさらなるアドレス変換ステップの必要なく連続した態様で格納されることができる。さらに、データセットおよびその関連付けられるＥＣＣが別個のバンクに格納されるので、データセットおよびその対応するＥＣＣの各々は連続して（たとえば、オーバーラップする態様で同時に）アクセス可能である。
【００１１】
この開示の利点を有する当業者は、複数のメモリバンクを有する状態で構成されるさまざまな他のランダムアクセスメモリ（ＲＡＭ）もこの発明とともに利用され得ることを理解するであろう。さらに、この開示に鑑みて、当業者は、２つ以上のメモリチップがこの機器において実現され得ることも理解するであろう。１つの変形例では、２つのメモリチ
ップはメモリコントローラとともに利用され、各々のデータセットはその関連付けられるＥＣＣとともにメモリチップに格納される（つまり、ＥＣＣはその関連付けられるデータと同一のメモリチップに置かれるが、異なるバンクに置かれる）。
【００１２】
この発明の別の局面は、誤り訂正符号を利用して、データバッファに格納されたデータのデータ完全性を保つための方法を含む。１つの変形例では、この方法は、データを受取ることと、誤り訂正符号を生成することと、メモリモジュールのメモリアレイの中の第１のメモリ空間にデータを置くことと、メモリモジュールのメモリアレイの中の第２のメモリ空間に誤り訂正符号を置くこととを含み、誤り訂正はデータに関連付けられ、第１のメモリ空間および第２のメモリ空間はメモリアレイ内では連続していない。１つの実現例では、メモリコントローラは、データを受取り、誤り訂正符号を生成し、データおよび誤り訂正符号をメモリの中のメモリ空間に置くために利用される。メモリは複数のメモリバンクを含んでもよく、そのため、データおよびＥＣＣは別個のメモリバンクに置かれる。
【００１３】
一旦データがデータバッファのメモリに格納されると、データは後にこれらのメモリ空間（たとえば、メモリバンク）にアクセスすることによってデータバッファから取出されることができる。１つの変形例では、この方法はさらに、データをその対応するメモリ空間から取出すことと、誤り訂正符号をその対応するメモリ空間から取出すことと、誤り訂正符号に基づいてデータの完全性を調べることとを含む。データの中に誤りが検出される場合、メモリコントローラはデータを訂正するために誤り訂正符号を利用してもよい。
【発明を実施するための最良の形態】
【００１４】
この発明のこれらのおよび他の実施例、特徴および利点は、最初に簡単に説明される添付の図面に関連してこの発明の以下のより詳細な説明を参照しながら取入れられるときに、当業者により明らかになる。
【００１５】
発明の詳細な説明
以下の詳細な説明は図面を参照しながら読まれるべきであり、図面では、異なる図全体にわたって同一の参照番号が同様の要素を指す。図面は、必ずしも一定の比率に応じて描かれているわけではなく、選択的な実施例を示し、この発明の範囲を限定するように意図されるものではない。詳細な説明は、限定としてではなく一例として、この発明の原理を示す。この説明によって、明らかに当業者はこの発明をなすことおよび使用することができ、この説明は、この発明を実施する最良の形態であると現在のところ信じられているものを含むこの発明のいくつかの実施例、適合例、変形例、代替例および使用例を記載する。
【００１６】
本明細書に開示されるこの発明のさまざまな局面を示すために、メモリが複数のメモリバンクを有する、ＥＣＣを利用するための例示的な適用例として、磁気テープドライブが本明細書において使用される。本明細書における開示に鑑みて、本明細書に開示される方法および機器が、メモリに格納されたデータの完全性を保証するためにＥＣＣを利用するさまざまなメモリ記憶構成要素またはデータバッファリング機器において実現され得ることを当業者は理解するであろう。たとえば、本明細書に開示される方法および機器は、データ保護をもたらすようにさまざまな他のデータ記憶システム（たとえば、ハードドライブ、光学ドライブなど）において実現されることもできる。別の例では、データバッファリングプロセスにおいてＥＣＣを実現するネットワークルータも、効率的なＥＣＣの利用を達成するために、本明細書に開示される方法および機器を利用してもよい。さらに別の例では、本明細書に開示される方法および機器は、低コストの単一のＤＲＡＭパーソナルコンピュータのメインメモリのためのメモリコントローラ用に使用されることができるであろう。
【００１７】
本明細書および特許請求の範囲の中で使用されるように、文脈が明らかに異なったように規定しない限り、単数形は複数の指示対象を含むことも注目されなければならない。したがって、たとえば、「トランスデューサ」という用語は単一のトランスデューサまたはトランスデューサの組合せを意味するように意図され、「電気信号」は１つ以上の電気信号またはそれらの変調を意味するように意図される。
【００１８】
１つの例では、メモリ機器は、ＡＳＩＣ（特定用途向け集積回路）内に、ＤＤＲメモリの「バースト」性質およびＤＤＲメモリが複数のバンクを収容しているという事実を利用するＤＤＲメモリコントローラ論理を含む。メモリコントローラは、３４バイトの長さのＥＣＣ符号語を実現する。ＥＣＣ符号語は、２バイトのＥＣＣ（つまり、ＥＣＣ冗長バイト）および３２バイトのデータで構成される。メモリコントローラは、３２バイトのデータを転送する２つの１６バイトのＤＤＲバーストと、２バイトのＥＣＣを転送する２バイトのＤＤＲバーストとによって、ＥＣＣ符号語をＤＤＲメモリに置く。
【００１９】
ＥＣＣ（つまり、ＥＣＣ冗長バイト）は、メモリコントローラによって計算された（たとえば、アドレス変換）アドレスにおいて、データと同一のメモリＩＣ（集積回路）内に格納されるが、データバイトとは別個の「バンク」に格納される。図１は、データおよびその関連付けられるＥＣＣをメモリ２に置くための１つの構成を図示する。バンク０および１の中のデータは、その関連付けられるバースト（Burst）ECCをバンク３の中に有する。バンク２および３の中のデータは、その関連付けられるバーストECCをバンク０の中に有する。この例では、バンク０および１のためのＥＣＣは、バンク３内の単一の領域にまとめられる。２バイトのＥＣＣをメモリＩＣの隔離された領域にまとめることによって、ＤＤＲメモリ内の記憶空間の使用を最大にすることが可能である。たとえば、１６個の異なる２バイトのＥＣＣは、３２バイトの予め割当てられたデータ記憶空間に格納されることが可能である。同様に、バンク２および３に格納されたデータについてのＥＣＣは、バンク０内の単一の領域にまとめられる。
【００２０】
ＤＤＲメモリは、装置のコマンド待ち時間を隠すことができるように複数の内部バンクを有する状態で設計される。所与のアドレスへの読出または書込を実行するために、メモリコントローラは最初に、データがメモリコントローラとＤＤＲメモリとの間で転送され得る前に、起動（ＡＣＴＩＶＡＴＥ）コマンドを発行し、続いて読出（ＲＥＡＤ）または書込（ＷＲＩＴＥ）コマンドを発行する。単一のバンクしかもたないメモリ装置では、これはシリアル動作である。結果として、コマンドがＤＤＲメモリに送られる間はデータが転送されないいくつかのクロックサイクルが存在することになる。これは、メモリコントローラとＤＤＲメモリとの間のデータ転送帯域幅を低下させる。複数のバンクを有することによって、データ転送がバンクＢについて進行中である間にバンクＡについてのアドレス指定コマンドが送られることが可能である。したがって、ＤＤＲコマンド待ち時間のいくつかの部分を「隠す」。
【００２１】
１つの変形例では、ＤＤＲメモリコントローラ論理は、メモリの第１のバンクにデータを書込み、次いで、メモリの第２のバンクの中でＥＣＣの冗長性の位置を計算する。ＥＣＣの冗長性を第２のバンクに格納することによって、以下のアルゴリズムを使用して、コントローラは、メモリコントローラによってアドレス指定される絶対位置で連続してデータを格納できるようにする。ＥＣＣの冗長性は、メモリコントローラ論理によって自動的に計算される間接的な位置で格納される。
【００２２】
３２メガバイトのメモリの場合、メモリコントローラは以下のように各々のデータバーストごとにバーストECCの位置を計算する。
【００２３】
データアドレスがバンク０または１内にある場合、バーストECCアドレスは以下の式に
よって求められる。
【００２４】
【数１】
2007115390.tif 000003
【００２５】
データアドレスがバンク２または３内にある場合、バーストECCアドレスは以下の式によって求められる。
【００２６】
【数２】
2007115390.tif 000004
【００２７】
ここで、Ｓはメモリのサイズ（たとえば、３２メガバイト）であり、ＲはECC_Bytesに対するData_Bytesの割合（たとえば、３２／２＝１６）である。
【００２８】
１つの変形例では、ＳＥＣ／ＤＥＤ（単一誤り訂正／二重誤り検出）ハミング符号が、３２バイトまたは２５６ビットのデータをシングルビットエラーから保護するために利用される。２ビットエラー検出を用いてこれを行なうために、１０個の冗長ビットのみが必要である。ここで２ｎ−１＞２５６であり、ｎ＝９である場合、２９−１＝５１１であり、これは２５６よりも大きい。しかしながらこの例では、ＥＣＣの冗長性が格納される位置には利用可能な１６ビットが存在する。ｎに１５を使用する（１５：０は１６ビットである）場合、２15−１＝３２，７６７ビットである。これは、ＥＣＣの冗長性を生成するために非常に効率的なパリティ（ＸＯＲ）ツリーを作り出すことができる符号を２５６ビットに「短縮する」ことができるので、役立ち得る。短縮された符号は１０の出力（ｎ＝９）の代わりに１６の出力（ｎ＝１５）を有し、パリティツリーは狭く深いものではなく、幅広く浅いものである。ＥＣＣについての、２ビット検出を用いる生成多項式Ｇ（ｆ）が以下に示される。
【００２９】
【数３】
2007115390.tif 000005
【００３０】
【数４】
2007115390.tif 000006
【００３１】
データおよびバーストECCバンクを分離することによって、１つ以上の以下の利点が達成され得る。その利点とは、（１）メモリ帯域幅を最大にすることである。これは、連続したデータおよびバーストECCをＤＤＲメモリに転送できるようにＤＤＲコマンドがオーバーラップされることができ、したがって、ＥＣＣ（つまり、ＥＣＣ冗長バイト）を含む読出または書込動作が、ＥＣＣの冗長性を持たない同一の動作が取るであろうクロックサイクルよりも１つだけ長いクロックサイクルを取り得るためである。（２）ＥＣＣ符号語に利用可能なわずかなメモリのみ、つまりこの特定の例では１／１６（冗長バイト／［データバイト＋冗長バイト］）を犠牲にすることによって、データ使用に利用できない単一のＤＤＲメモリ内の位置を最小にすることである。（３）ＥＣＣの冗長性を格納するため
のいかなる追加のＤＤＲメモリＩＣも無くすことである。これは、ＥＣＣおよびデータが２つの別個のチップの代わりに同一のチップに格納されることができるためである（これは、製造コストを減少させ得る）。（４）アドレス変換が必要でない連続したデータメモリアドレス範囲を提供することである（メモリコントローラの構成を単純にし、最大動作周波数を増加させる）。これは、ＥＣＣがその関連付けられるデータに隣接して格納されず、データがメモリアレイの中で順々にバンクに置かれ、したがってデータが連続したメモリアドレス範囲を利用できるためである。
【００３２】
さらに、この機器は、メモリの要求がＤＤＲ「バースト」未満であるときに、ＤＤＲメモリの中に正確な「バーストECC」を維持するため、およびアプリケーションに対するランダムアクセスメモリ装置のランダムアクセスの性質を維持するために、必要な読出−修正−書込動作を自動的にメモリコントローラが実行するように構成されてもよい。
【００３３】
別の例では、ＥＣＣデータバッファはデータ記憶装置１２において実現される。データ記憶機器は磁気テープドライブ１４を含む。この機器は、データバッファメモリコントローラ１８を含むＡＳＩＣ（特定用途向け集積回路）１６を含む。データバッファメモリコントローラ１８は、ホストコンピュータ２０インターフェイスとデータ記憶テープインターフェイス論理２２との間でデータをバッファに入れるために利用される。このメモリコントローラ１８は、データがデータバッファにある間データを保護するためのＳＥＣ／ＤＥＤ（単一誤り訂正／二重誤り検出）ハミングＥＣＣデータ完全性スキームを組入れる。このＥＣＣは残りのテープドライブサブシステムに透過である。この開示の利点を有する当業者は、ＤＥＣ／ＴＥＤ（二重誤り訂正／三重誤り検出）ＢＣＨ符号またはリードソロモン符号などの他の誤り訂正符号スキームがハミングＥＣＣの代わりに利用されることもできることを理解するであろう。
【００３４】
この例では、ＥＣＣはデータバッファ内で３２バイトの「バースト」を保護するように設計される。データの３２バイトのバーストは各々、２バイトの「バーストECC」（つまり、ＥＣＣ）によって保護される。図２は、テープドライブ内のデータバッファ（ＤＤＲ−ＳＤＲＡＭ）２４およびメモリコントローラ１８と、取付けられたホストコンピュータとの間の関係を図示するブロック図を示す。
【００３５】
ホストコンピュータ２０からテープドライブ１４の中のテープにデータを転走するために、データは最初にホストコンピュータ２０からメモリコントローラ１８に転送される。メモリコントローラの動作はプロセッサ２６によって管理される。メモリコントローラ１８は、データの流れをバッファに入れてオーバーフローを防ぐためにＤＤＲ−ＳＤＲＡＭ２４を利用することによって、ホストコンピュータ２０からテープインターフェイス論理２２へのデータの流れを制御する。メモリコントローラ１８によって受取られるデータの各々のセット（たとえば、３２バイト）ごとに、メモリコントローラ１８はＥＣＣ（たとえば、２バイトのＥＣＣの冗長性）を生成する。この特定の実現例では、４つの別個のバンク２８、３０、３２、３４を有するＤＤＲ−ＳＤＲＡＭ２４が、データバッファのデータ記憶領域として実現される。メモリコントローラ１８は次いで、ＤＤＲ−ＳＤＲＡＭ２４の中の、４つの利用可能なバンクのうちの１つである第１のバンクの中にデータを伝送し、次いで３つの残りのバンクのうちの１つである第２のバンクの中にＥＣＣを伝送する。結果として、データおよびその関連付けられるＥＣＣは２つの別個のバンクに保存される。しかしながら、この構成に応じて、２つのバンクはさまざまな組合せを有する可能性があり、２つの隣接するバンクに限定されない。たとえば、データはバンク♯２  ３０に格納される場合もあり、関連付けられるＥＣＣはバンク♯０  ３４に格納される。
【００３６】
さらに、データおよびＥＣＣは、オーバーラップする態様で同時になど、順々にシリアルにまたは連続して転送されることができる。バンクの各々がメモリコントローラによっ
て独立してアクセス可能である別個のバンクにデータおよびＥＣＣが格納されることになるので、データバンクの転送が進行中の間にＥＣＣバンクをアドレス指定し始めることが可能である。さらに、ＥＣＣ符号がデータ間にインターリーブされずにメモリ内のデータの格納が連続しているので、一連の対応するデータの格納のためのアドレスはアドレス変換ステップの必要なくメモリに直接にマッピングされることが可能である。関連付けられるＥＣＣを格納するために、（メモリコントローラ内で実現される）ハードウェアアドレス変換は、関連付けられるＥＣＣを別個のバンクに格納するためのアドレスを割当てるように利用されることができる。
【００３７】
テープインターフェイス論理がデータを受取る準備が整っていることをプロセスが判断するとき、データおよびその関連付けられるＥＣＣは次いでメモリコントローラによってＤＤＲ−ＳＤＲＡＭの中の対応するバンクから取出される。上述のように、複数のバンクが互いから独立してアクセス可能であるので、異なるバンクに格納されるデータおよび関連付けられるＥＣＣはシリアルにまたは連続して（たとえば、オーバーラップする態様で同時に）取出されることができる。この例では、ＥＣＣおよび関連付けられるデータは、転送の速度を促進するためにオーバーラップする態様で同時にアクセスされる。メモリコントローラは次いで、データの完全性を調べる（つまり、データの中に誤りが存在するかどうかを判断する）ためにＥＣＣを利用する。誤りが存在することをメモリコントローラが判断した場合には、メモリコントローラはさらにこのような誤りを訂正するためにＥＣＣを利用してもよい。誤りは、メモリハードウェア自体によって引起されるノイズおよび／またはハード／ソフトエラーなどのさまざまな要因に起因して、ＤＤＲ−ＳＤＲＡＭに保存されたデータの中に表れ得る。一旦データが調べられるおよび／または訂正されると、ＥＣＣは廃棄され、データはテープインターフェイス論理に伝送され、テープインターフェイス論理はトランスデューサ（たとえば、電子磁気テープドライブヘッド）を介してデータを磁気テープに置く。
【００３８】
テープドライブの中の磁気データ記憶テープからホストコンピュータに顧客データを転送するために、上述のプロセスと同様のプロセスが逆の態様で利用される。磁気テープのデータはトランスデューサによって取込まれ、次いでメモリコントローラに転送され、メモリコントローラは次いでデータについてのＥＣＣを生成し、次いでＤＤＲ−ＳＤＲＡＭの中の２つの別個のバンクにデータおよび関連付けられるＥＣＣを保存する。ホストコンピュータがデータを受取る準備が整ったことをプロセスが判断するとき、メモリコントローラは、シリアルにまたは連続して、対応するバンクからデータおよびその関連付けられるＥＣＣを取出す。再び、この特定の例では、データおよびその関連付けられるＥＣＣはオーバーラップする態様で同時に取出される。メモリコントローラは次いで、データの完全性を調べ、および／またはＥＣＣに基づいていかなる誤りも訂正する。その後、データはメモリコントローラからホストコンピュータに転送される。
【００３９】
この例についての技術的な実現例の詳細が以下に記載される。ＤＤＲメモリの機能のうちの１つは、メモリ内のアドレス空間が複数の「バンク」に分割されるという事実である。これらのバンクは、メモリ内の位置ごとにアドレスの一部として選択される。どのメモリ位置も単一のバンクに存在し、そのバンクを起動する（開く）、読出すまたは書込む、次いでプリチャージする（閉じる）コマンドを発行することによってアクセス可能である。
【００４０】
所与の位置の完全なアドレスは３つの構成要素に細分される。バンク−典型的なＤＤＲ装置は４つまたは８つの内部バンクを有する。これは、バンク選択のために２つまたは３つのアドレスビットが存在することを意味する。行−アドレスのこの部分は起動コマンドの際にＤＤＲメモリに渡され、開かれることになりかつメモリコントローラでのアクセスに利用可能になる「行」を決定する。行アドレスビットの数はＤＤＲの密度によって異な
り、業界基準によって規定される。列−アドレスのこの部分は、読出または書込コマンドとともに渡され、データ転送のための厳密な開始アドレスをアドレス指定する開かれた「行」内の「列」を決定する。列アドレスビットの数はＤＤＲの密度によって異なり、業界基準によって規定される。行を開く（起動）「コマンド」およびデータにアクセスする（読出／書込）「コマンド」は、それらの位置へのデータ転送が行なわれ得る前に実行されるべきである。同一のバンクの別の行の中の位置にアクセスすることも、さらなるクロックサイクルを取るバンクが閉じられる（プリチャージ）ことを必要とする。
【００４１】
ＤＤＲ−ＳＤＲＡＭの「バンク」機能を使用することによって、メモリコントローラが複数のバンクのためのこれらのコマンド動作を「オーバーラップさせる」ことが可能である。したがって、各々のバンクごとのこのコマンドオーバーヘッドを効果的に「隠し」、メモリ転送帯域幅をより効率的に利用する。バーストECCメモリコントローラは、バーストECCアクセスに必要なコマンドオーバーヘッドを「隠す」ために、ＤＤＲ−ＳＤＲＡＭの「バンク」機能を使用する。
【００４２】
この特定の例におけるバーストECCメモリコントローラは以下のように構成される。（１）この機器は、単一の１６ビット幅の外部ＤＤＲ  ＳＤＲＡＭ内でＳＥＣ／ＤＥＤ  ＥＣＣデータ保護スキームを実現する。（２）バーストECCスキームは、データバッファを使用するすべての論理に透過であり（つまり、バーストECCはメモリコントローラに対してのみ意味を有する）、データバッファのすべての他のユーザはその実現を見ることができない。バーストECCはメモリコントローラ自体の中で厳密に生成され、調べられ、管理される。したがって、データ「バースト」サイズ未満のデータバッファへの書込データアクセスはいずれも、アドレス指定されたデータバーストおよびその関連付けられるバーストECC位置の読出／修正／書込動作をメモリコントローラ論理が自動的に実行することを必要とする。
【００４３】
データがバースト転送されるときにＤＤＲ−ＳＤＲＡＭメモリが効率的であるので、１つの変形例では、この機器はメモリコントローラ論理グループデータが３２バイトのバースト転送を行なうように構成される。この３２バイトのデータサイズは、ＤＤＲインターフェイスメモリ帯域幅を最大にする（ＤＤＲコマンド動作当り大きなバーストサイズを選択する）ことと、データバッファの複数のユーザの中でデータバッファ帯域幅を分ける（ユーザ待ち時間をデータバッファに限定するように小さなバーストサイズを選択する）こととの間のバランスである。３２バイトのデータバーストは、メモリコントローラにおいて実現されるＳＥＣ／ＤＥＤハミングＥＣＣ符号とも十分に機能する。単一の１６ビット（２バイト）の位置は、関連付けられる３２バイトのデータバーストについてのバーストECCを保持するために使用される。したがって、３４バイトのＥＣＣ符号語、つまり３２バイトのデータおよび２バイトのＥＣＣ（つまり、ＥＣＣの冗長性）が存在することになる。この開示の利点を有する当業者が理解するであろうように、データおよびバーストECCのさまざまな他のバーストサイズも、スループットおよびＥＣＣタイプの要件に応じて利用され得るであろう。
【００４４】
データバッファユーザデータに利用可能なメモリの量を最大にするために、オーバーヘッド用に使用される物理的なＤＤＲメモリの量を最小にすることが可能である。このオーバーヘッドは２つのタイプ、つまり（１）ＥＣＣ（つまり、バーストECC）用に使用されるメモリ位置および（２）データまたはＥＣＣ用に利用されず、利用できなくなる「未使用の」メモリ位置で構成され得る。
【００４５】
データバーストサイズが３２バイトであり、バーストECCサイズが２バイトである場合、オーバーヘッドに与えられるメモリの可能な最小量は以下のとおりである。
【００４６】
【数５】
2007115390.tif 000007
【００４７】
この開示の利点を有する当業者が理解するであろうように、この構成の実現例の変形例は、バーストECC用により多くのメモリを使用することを選択できる。上の式は、バーストECCに充てられるメモリの必要量を示し、これは３２バイトのデータバーストサイズおよび２バイトのバーストECCサイズのための理論的な最小オーバーヘッドである。
【００４８】
この例では、データバッファのどのユーザ（つまり、データバッファと通信する他の構成要素）も、メモリコントローラがデータアクセスを要求するときに完全な２５ビットのアドレスをメモリコントローラに与えるように構成される。これによって、ユーザは３２メガバイトの物理的なメモリ範囲内のいずれの位置もアドレス指定することができる。この開示の利点を有する当業者が理解するであろうように、より大きな数またはより小さな数のビットを有するアドレスは、実現されているメモリのサイズに応じて利用され得る。この特定の実現例では、データバッファは合計３２メガバイトであり、３０メガバイトがユーザデータに利用可能である。これは、２メガバイト（または、合計メモリの１／１６）がオーバーヘッド（バーストECCおよび未使用の）用に使用されることになることを意味する。この特定の構成は、コントローラの実現例を単純にするために、１／１７の代わりに１／１６のオーバーヘッドポイントのメモリ割当てを有する状態で構成される。
【００４９】
データバッファユーザ論理から受取られたアドレスは、メモリコントローラ論理によって外部ＤＤＲメモリに付与される物理的なアドレスにマッピングされる。このマッピングは、メモリコントローラにおける３２メガバイトの密度の場合について図３に示される。図３に示されるようにデータバッファユーザアドレス（論理）を物理的な（ＤＤＲ）アドレスに分割することは、この実現例についてのものであった。バンクアドレスビットが論理アドレスの最上位ビットである必要はない。
【００５０】
別の変形例では、メモリコントローラは図４に示されるアドレス分割スキーム４４を実現する。図３および図４は、４つの内部バンクを有するＤＤＲメモリについての実現例を示す。８つの内部バンクを有するＤＤＲメモリの場合、第３のバンク選択ビットは図３および図４に示される他の２つとともにグループ分けされ得る。
【００５１】
ＤＤＲ−ＳＤＲＡＭの「バンク」構造は、２バイトのバーストECCおよび３２バイトのデータバーストを別個のバンクに置くことによって、３４バイトのＥＣＣ符号語のバーストECC部分およびデータ部分の分割を可能にする。
【００５２】
データおよびＥＣＣを異なるバンクに分離することによって、この実現例は１つ以上の以下の利点を達成することができる。その利点とは、（１）メモリ帯域幅を最大にすることである。これは、連続したデータおよびバーストECCをＤＤＲメモリに転送できるようにＤＤＲコマンドがオーバーラップされることができるためである。ＥＣＣ冗長バイトを含む読出または書込動作は、ＥＣＣの冗長性を持たない同一の動作が取るであろうクロックサイクルよりもほんのわずかに長いクロックサイクルを取る。（２）バーストECC冗長バイトに利用可能なメモリのうち最低限のわずかなメモリを犠牲にすることによって、データ使用に利用可能でないＤＤＲメモリ内の位置の数を最小にできることである。メモリの中の使用不能な位置は、物理的なＤＤＲメモリサイズの合計が複数のＥＣＣ符号語のサイズ（この例では、３４バイト）ではない場合に発生し得る。しかしながら、本明細書に示されるように、符号語のサイズは使用不能なメモリ位置を最小にするように選択されることが可能である。この特定の３２メガバイトのデータバッファの構成の場合、符号語の
サイズは以下のとおりである。
【００５３】
【数６】
2007115390.tif 000008
【００５４】
【数７】
2007115390.tif 000009
【００５５】
（３）データ領域アドレス変換が必要でない連続したデータメモリアドレス範囲を考慮することである（メモリコントローラの構成を単純にし、最大動作周波数を増加させる）。データアドレスが変換されないこと、およびすべてのデータバイトが連続していることを知ることには、ハードウェアレベルでのデバッグ、およびメモリのブロックを表示するためのソフトウェアデバッガツールの使用の点で利点がある。（４）ＥＣＣの冗長性を格納するためのいずれの追加のＤＤＲメモリＩＣも無くすことである。これは、データおよびバーストECCが同一の物理的なＤＤＲ−ＳＤＲＡＭに存在するためである。これらのおよび他の利点はさらに以下に示される。
【００５６】
メモリコントローラの実現例は、データバッファユーザデータアドレスを取得し、それを直接に使用して、物理的なＤＤＲメモリのデータ領域内にデータを位置決めし、次いでデータアドレスを使用して、物理的なＤＤＲメモリ内のバーストECC冗長バイトの位置を計算する（変換する）。
【００５７】
図５は、データバッファの実現例の１つの変形例についてのＤＤＲメモリ内のこの分割を図示する。このデータバッファの実現例はバンク選択のためにアドレスの２つの最上位ビットを使用するので、物理的なメモリが４つのバンク５４にいかに分割されるかを見ることは容易である。メモリコントローラの構成をさらに単純にするために、図５に示されるように、１／１６のオーバーヘッドのバーストECCを有する実現例が利用可能である。
【００５８】
合計メモリサイズが３２メガバイトであるので、２つの等しいデータ（１６メガバイト）およびバーストECC領域に分けられるときには、１／１６のオーバーヘッドの各々のバーストECC領域のサイズは以下のとおりである。
【００５９】
【数８】
2007115390.tif 000010
【００６０】
さらに、このデータバッファの実現例は、バーストECC符号語のサイズを32Bytes_dataおよび２Bytes_BurstECC_Redundancy＝34Bytesとして規定することを選択した。そして、データの３２バイトのバーストごとに、２バイトのバーストECCが存在することになる。バーストECCアドレスについてのオフセットを得るために１６で除算されたData_addressを使用することが可能である。したがって、メモリコントローラは以下のように各々のデータバーストごとにバーストECCの位置を計算する。
【００６１】
データアドレスがバンク０または１内にある場合、バーストECCアドレスは以下の式によって求められる。
【００６２】
【数９】
2007115390.tif 000011
【００６３】
データアドレスがバンク２または３内にある場合、バーストECCアドレスは以下の式によって求められる。
【００６４】
【数１０】
2007115390.tif 000012
【００６５】
図５を参照して、物理的なＤＤＲメモリのデータ「領域」は、物理的なＤＤＲメモリの初めおよび終わりに存在する２つのより小さなバーストECC領域の間にある。データがバンク０または１に存在する場合、その関連付けられるバーストECCはバンク３に存在することになる。データがバンク２または３に存在する場合、その関連付けられるバーストECCはバンク０に存在することになる。これによって、メモリコントローラはデータおよびバーストECCの転送のためのＤＤＲコマンド動作をオーバーラップさせることが可能である。１／１６のオーバーヘッドの実現例は、合計メモリ用の１２８キロバイトの合計未使用位置に対して、バーストECC領域の各々用に６４キロバイトの未使用位置をもたらす。
【００６６】
別の変形例では、図６に示されるように、１／１７のオーバーヘッドのデータバッファの実現例は、メモリ割当て６４が二重のバーストECC領域を有する状態で実現される。この実現例はバンク選択のためにアドレスの２つの最上位ビットを使用するので、物理的なメモリが４つのバンクにいかに分割されるかを見ることは容易である。
【００６７】
合計メモリサイズが３２メガバイトであり、２つの等しいデータ（１６メガバイト）およびバーストECC領域に分けられると、１／１７のオーバーヘッドの各々のバーストECC領域のサイズは以下のとおりである。
【００６８】
【数１１】
2007115390.tif 000013
【００６９】
次の３２バイト境界に切上げられるこの数は、986,912＝0x00F_0F20である。
バーストECC符号語のサイズを32Bytes_dataおよび２Bytes_BurstECC_Redundancy＝34Bytesとして維持する。そして、データの３２バイトのバーストごとに、２バイトのバーストECCが存在することになる。バーストECCアドレスについてのオフセットを得るために１６で除算されたData_addressを使用することが可能である。
【００７０】
したがって、データバッファのための１／１７のオーバーヘッドのメモリコントローラのこの変形例は、以下のように各々のデータバーストごとにバーストECCの位置を計算する。
【００７１】
データアドレスがバンク０または１内にある場合、バーストECCアドレスは以下の式に
よって求められる。
【００７２】
【数１２】
2007115390.tif 000014
【００７３】
データアドレスがバンク２または３内にある場合、バーストECCアドレスは以下の式によって求められる。
【００７４】
【数１３】
2007115390.tif 000015
【００７５】
図６に図示されるように、物理的なＤＤＲメモリのデータ「領域」６６は、物理的なＤＤＲメモリの初めおよび終わりに存在する２つのより小さなバーストECC領域６８の間にある。データがバンク０または１に存在する場合、その関連付けられるバーストECCはバンク３に存在することになる。データがバンク２または３に存在する場合、その関連付けられるバーストECCはバンク０に存在することになる。これによって、メモリコントローラはデータおよびバーストECCの転送のためのＤＤＲコマンド動作をオーバーラップさせることが可能である。
【００７６】
１／１７のオーバーヘッドの実現例を有するデータバッファは、合計メモリ用の３６バイトの合計未使用位置に対して、バーストECC領域の各々用に１８バイトの未使用位置をもたらす。この例は、データおよびバーストECCをＲＡＭの別個のバンクに分離するというスキームがメモリ性能にマイナスの影響を及ぼすことなく合計メモリの利用をいかに大幅に改善できるかを示す。
【００７７】
図７を参照して、単一のＥＣＣ記憶領域７４の別の変形例が図示される。データ領域が２つのＥＣＣ記憶領域の間にある状態でメモリが分割される必要はない。一例として、メモリコントローラは、図７に示されるように物理的なランダムアクセスメモリを分割するように構成される。ＥＣＣ（つまり、冗長バイト）がデータから分離されるので、ＥＣＣはグループ分けされることができ、メモリ内のどこにでも置かれることができる。単一のＥＣＣ領域の追加の利点は、単一のＥＣＣ領域が低いオーバーヘッドをもたらす（たとえば、バイトの未使用の数を最小にする）ことである。
【００７８】
この変形例では、メモリコントローラは、図７に示される物理的なメモリの分割とともにメモリを利用する。この実現例は、データバッファユーザアドレスがData_address用に直接に使用され（マッピングは必要とされない）、すべてのアドレス変換がバーストECCアドレスの生成中に行われるという点で、上述の実現例の鍵となる機能を保持する。
【００７９】
この特定の実現例は、バンク選択ビットを完全なアドレスの中のより低い位置に置き、ＥＣＣアドレス生成のためにより複雑なアドレス変換を必要とする。バーストECCがデータバーストと同一のバンクに入る場合、バンクアドレスビットは、バーストECCアドレスを各々のデータバーストごとに独自なものにする方法を介して、バーストECCを異なるバンクに入れるように操作される。しかしながら、バーストECCアドレスがすぐには使用されないので、このより複雑なバーストECCアドレス生成のパイプライン化はデータ位相コマンドおよび転送オーバーヘッド内に隠されることができる。
【００８０】
合計メモリサイズが３２バイトであるので、単一のデータおよびバーストECC領域に分けられると、１／１７オーバーヘッドのバーストECC領域のサイズは以下のとおりである。
【００８１】
【数１４】
2007115390.tif 000016
【００８２】
次の３２バイト境界に切上げられるこの数は、1,973,792＝0x01E_1E20である。
バーストECC符号語のサイズを32Bytes_dataおよび２Bytes_BurstECC_Redundancy＝34Bytesとして維持する。そして、データの３２バイトのバーストごとに、２バイトのバーストECCが存在することになる。
【００８３】
図７に図示されるように、物理的なＤＤＲメモリのデータ「領域」７６は、物理的なＤＤＲメモリの上部で始まり、単一のバーストECC領域７８は物理的なＤＤＲメモリの終わりにある。この変形例は、合計メモリ用に２バイトの未使用位置をもたらす。これは、バイトの未使用の数が３４バイトのＥＣＣ符号語のサイズ未満であるときにこの物理的なメモリのサイズにとって非常に効率的な利用になることを表す。
【００８４】
データおよびＥＣＣがＤＤＲメモリの別個のバンクにあるので、ＥＣＣ転送のコマンド動作がデータ転送をオーバーラップさせることが可能である。これはＤＤＲメモリ帯域幅を増加させ、データおよびＥＣＣを別個のＤＤＲバンクに分離することに関連するいかなるパフォーマンスインパクトも打消し得る。
【００８５】
図８は、バーストECC転送のための起動コマンド（ＡＣＴｅ）が書込データコマンド（ＷＲｄ２）の動作とオーバーラップされ、そのため、ＤＤＲインターフェイスで転送位相が連続している１つの例を示すタイミング図である。
【００８６】
図９は、ＤＤＲ−ＳＤＲＡＭインターフェイス読出バースト動作の一例を示すタイミング図である。同一のバンク／列に対する２つのＢＬ＝８  ＲＤバーストを有するものと、ＥＣＣバンク／列に対する単一のＢＬ＝８  ＲＤバーストを有するものとの２つのＡＣＴがあり、ＰＲＥ（ａｌｌ）はＥＣＣ読出に割込み、両方のバンクを閉じる。次いで、別のＡＣＴが次の動作を開始させる。
【００８７】
図１０を参照して、図１０２はメモリコントローラによって実行されるステップの一例を示すために設けられる。メモリコントローラは、物理的なＤＤＲメモリ内でデータおよび関連付けられるＥＣＣのアドレスを求め、次いでこれらのアドレスを利用して、メモリのバンク内の対応する位置にデータおよびＥＣＣを置く。図１０に示されるように、データバッファユーザは、データ（つまり、データバッファユーザから渡されるアドレス）をメモリの中のどこに置くかをメモリコントローラに示す１０４。メモリコントローラは、データをメモリの中に置くために、データバッファユーザによって与えられたデータアドレス（つまり、Data_address）を利用する１０６。メモリコントローラは次いで、データアドレスを取得し、それを変換し、関連付けられるＥＣＣのアドレス（バーストECCアドレス）を生成する１０８。メモリコントローラによって生成されたＥＣＣは次いで、対応するバーストECCアドレスの中に置かれることができる。
【００８８】
上述のように、データおよびＥＣＣをバッファの外部メモリに分離することができるように高度なＲＡＭの中で複数のバンクの機能を使用することによって、メモリ機器はさま
ざまな性能の改善を有する状態で設計されることが可能である。たとえば、この機器の変形例は、ＥＣＣアドレスのみに関して別個のアドレス変換を考慮するように構成されることができる。これによって、ＥＣＣ冗長バイトがともにグループ分けされることができ、物理的なメモリ空間内のどこにでも置かれることが可能になる。結果として、ＥＣＣ冗長バイトは、それらの間に「未使用の」位置がない状態で物理的なＤＤＲメモリに連続して存在することが可能である。したがって、この構成は、各々のページ境界においてメモリ位置を未使用のまま残すことによってメモリを無駄にする必要がない。メモリを無駄にすることは、単一のメモリ装置を利用する「垂直」ＥＣＣにおいて典型的には生じ、その理由は完成されたＥＣＣ符号語（データ＋ＥＣＣの冗長性）の大きさが２Nではないためである。結果として、物理的なメモリのデータ領域は連続している可能性があり、アドレス変換なしにアドレス指定されることができる。データアドレスが変換されず、すべてのデータバイトが連続していることを知ることには、ハードウェアレベルでのより容易なデバッグ、およびメモリのブロックを表示するためにソフトウェアデバッガツールを使用する際のより単純な実現を含むさまざまな利点がある。この構成はさらに、データアドレスのアドレス変換論理をパイプライン化するための待ち時間クロックサイクルを低減する。ＥＣＣアドレスはデータアドレスの後にアクセスされ、したがって、使用の前に多くのクロックサイクルを有し、高周波数性能のためにパイプライン化待ち時間をもたらすことができる。さらに、上述のように、この実現例は、現在は別個のバンクに存在するデータおよびＥＣＣコマンド動作をオーバーラップさせることによって、改善された性能を有する構成を考慮に入れる。
【００８９】
さらに上述のように、データおよびＥＣＣをＲＡＭの中の２つ以上のバンクに分離するプロセスは、装置および／または構成要素間でデータをバッファリングおよび転送するための方法として実現されることが可能である。方法１２２の一例が図１１に記載される。
【００９０】
この発明が記載され、この発明の特定の例が示されてきた。この発明は特定の変形例および例示的な図の点で記載されてきたが、この発明は記載される変形例または図に限定されるものではないことを当業者は認識する。さらに、上述の方法およびステップが特定の順序で発生する特定の事象を示す場合には、特定のステップの順序付けは修正されることができ、このような修正はこの発明の変形例に従うことを当業者は認識する。さらに、特定のステップは可能であるときには並列のプロセスで同時に実行されることができ、上述のようにシーケンシャルに実行されることもできる。したがって、この開示の精神の範囲内である、または特許請求の範囲に見られるこの発明と等価であるこの発明の変形例が存在する程度まで、この特許はそれらの変形例も包含することが意図される。最後に、本明細書において引用されたすべての公報および特許出願は、まるで各々の個々の公報または特許出願が本明細書において具体的におよび個々に説明されるかのように、引用によって全文が本明細書に援用される。
【図面の簡単な説明】
【００９１】
【図１】データおよびその関連付けられるＥＣＣを別個のメモリバンクに置くためのメモリ空間の割当ての一例を示す図である。
【図２】ＥＣＣデータバッファを有するデータ記憶ドライブの一例を示すブロック図である。データバッファ（ＤＤＲ−ＳＤＲＡＭ）、メモリコントローラ、ホストコンピュータ、およびテープインターフェイス論理の間の関係が示される。
【図３】ＥＣＣをＤＤＲメモリの中に置くために、データバッファユーザ論理から受取られたアドレスを物理的なアドレスにマッピングする一例を示すテーブルの図である。
【図４】メモリコントローラによって利用されるアドレス分割スキームの別の変形例を示すテーブルの図である。
【図５】１／１６のオーバーヘッドのスキームを実現する、３２メガバイトのＤＤＲメモリ内でのＥＣＣ／データ分割についての一例を示す図である。
【図６】１／１７のオーバーヘッドのスキームを実現する、３２メガバイトのＤＤＲメモリ内でのＥＣＣ／データ分割についての別の変形例を示す図である。
【図７】ＥＣＣ／データ分割についてのさらに別の変形例を示す図である。この例では、メモリ内の単一の領域はＥＣＣの格納に専用である。
【図８】オーバーラップする態様でデータおよびＥＣＣをＤＤＲ−ＳＤＲＡＭに書込むための一例を示すタイミング図である。この例では、３２バイトのデータおよび２バイトのＥＣＣの書込バーストが実現される。
【図９】オーバーラップする態様でデータおよびＥＣＣをＤＤＲ−ＳＤＲＡＭから読出すための一例を示すタイミング図である。この例では、３２バイトのデータおよび２バイトのＥＣＣの読出バーストが実現される。
【図１０】メモリコントローラのデータおよびＥＣＣのアドレス生成フローの一例を示すフローチャートである。
【図１１】データおよびその関連付けられるＥＣＣを別個のバンクに置くことによるデータバッファリングのための方法の一例を示すフローチャートである。
【符号の説明】
【００９２】
１６  ＡＳＩＣ
１８  メモリコントローラ
２０  ホストコンピュータ
２２  テープインターフェイス論理
【図１】
2007115390.tif 000017
【図２】
2007115390.tif 000018
【図３】
2007115390.tif 000019
【図４】
2007115390.tif 000020
【図５】
2007115390.tif 000021
【図６】
2007115390.tif 000022
【図７】
2007115390.tif 000023
【図８】
2007115390.tif 000024
【図９】
2007115390.tif 000025
【図１０】
2007115390.tif 000026
【図１１】
2007115390.tif 000027
【外国語明細書】
2007115390000001.pdf