JP2010522374A - 非eccコンポーネントにおけるeccの実装 - Google Patents

非eccコンポーネントにおけるeccの実装 Download PDF

Info

Publication number
JP2010522374A
JP2010522374A JP2009554534A JP2009554534A JP2010522374A JP 2010522374 A JP2010522374 A JP 2010522374A JP 2009554534 A JP2009554534 A JP 2009554534A JP 2009554534 A JP2009554534 A JP 2009554534A JP 2010522374 A JP2010522374 A JP 2010522374A
Authority
JP
Japan
Prior art keywords
ecc
memory
data
address
physical address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009554534A
Other languages
English (en)
Other versions
JP5303477B2 (ja
Inventor
ジョン ヘーテル マイケル
スティーブン ポルジン アール.
コチェブ アンドレイ
ベネット スタインマン モーリス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2010522374A publication Critical patent/JP2010522374A/ja
Application granted granted Critical
Publication of JP5303477B2 publication Critical patent/JP5303477B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation

Abstract

ECC非対応コンポーネントにおいて誤り訂正符号(ECC)検査を実装するための方法および装置。前記方法は、メモリの第1の物理アドレスおよび第2の物理アドレスにマップしている論理アドレスを受け取るステップを有する。前記メモリの前記第1の物理アドレスおよび前記第2の物理アドレスは、データを記憶しているメモリ位置と、対応するECCを記憶しているメモリ位置とにそれぞれ対応している。前記方法は、前記論理アドレスを、前記第1の物理アドレスおよび前記第2の物理アドレスに変換するステップと、データパスを介して前記データにアクセスするステップと、同じデータパスを介して前記ECCに別個にアクセスするステップと、前記ECCを使用して前記データの整合性を検査するステップと、を更に有する。

Description

本発明は、コンピュータシステムに関し、より詳細には、メモリサブシステムにおける誤り検査および訂正に関する。
高性能のコンピュータシステムの多くは、メモリサブシステムに「ECC」と呼ばれる機能を備えている。ECC(誤り訂正符号、あるいは誤り検査および訂正)は、メモリ内で破損したデータを検出し、可能であればその破損したデータを訂正するために使用される。メモリ内のデータは、自然のバックグラウンド放射、電気的ノイズ、部品の故障などのさまざま原因によって破損しうる。
ECCサブシステムは、所望のメモリの内容を、誤り訂正符号を形成する追加のビットを計算するためのベースとして使用して機能する。データと、ECCを構成するビットの両方がメモリに記憶される。ECC対応システムのなかには、ECCを含むビットが、ECCが保護しているデータとは別に記憶されるものがある(例えば、一部のRAIDシステムなど)。ほかのECC対応コンピュータシステムでは、データと、ECCを含むビットとを記憶するために、特殊なメモリデバイスが使用される。このようなメモリデバイスは、保護されているデータと共にECCを記憶するために余分な記憶空間(1つのタイプでは12.5%)を必要とする。また、この余分な記憶空間により、メモリコントローラとメモリ間で追加のビットを伝達するために、追加の相互接続(すなわちコネクタおよび回路配線)が必要となる。ECCメモリコンポーネントは、主として高性能のコンピュータシステムで使用されており、このため、大量生産の恩恵を受ける(economies of scale)程には普及していない。このため、メモリサブシステムにECCを実装するには、多額の追加コストが必要となりうる。
コストの要因に加えて、一部のコンピュータシステムへのECCメモリの実装は実際的ではないことがある。例えば、追加の相互接続と記憶空間を実装するための物理空間は、ラップトップコンピュータシステムでは(仮に確保できるとしても)大きく制限される。また、一部のデスクトップコンピュータシステムでも空間が制限されることがある。このため、このようなシステムでは、ECC対応コンポーネントの使用が他の点では望ましい場合であっても、これを使用できないことがある。
ECC非対応コンポーネントにおいて誤り訂正符号(ECC)検査を実装するための方法および装置が開示される。一実施形態では、前記方法は、メモリの第1の物理アドレスおよび第2の物理アドレスにマップしている論理アドレスを受け取るステップを有する。前記メモリの前記第1の物理アドレスおよび前記第2の物理アドレスは、データを記憶しているメモリ位置と、対応するECCを記憶しているメモリ位置とにそれぞれ対応している。前記方法は、前記論理アドレスを、前記第1の物理アドレスおよび前記第2の物理アドレスに変換するステップと、データパスを介して前記データにアクセスするステップと、同じデータパスを介して前記ECCに別個にアクセスするステップと、前記ECCを使用して前記データの整合性を検査するステップと、を更に有する。
一実施形態では、メモリサブシステムは、メモリと、データパスと、前記データパスによって前記メモリと結合されたメモリコントローラと、を有する。前記メモリコントローラは、論理アドレスを受け取るために結合され、前記論理アドレスを、第1の物理アドレスおよび第2の物理アドレスに変換するように構成されている。前記第1の物理アドレスは、データが記憶されているメモリ位置に対応し、前記第2の物理アドレスは、前記データに関連するECCが記憶されているメモリ位置に対応している。前記メモリコントローラは、前記データパスを介して前記データにアクセスし、前記データパスを介して前記ECCに別個にアクセスし、前記ECCを使用して前記データの整合性を検査するように更に構成されている。
各種実施形態では、一部のデータと、そのデータに関連するECCとがメモリの同じページまたは行に存在するように、一部のデータおよびそのデータに関連するECCの記憶域(storage)が配置されうる。このようにデータとその対応するECCにアクセスするために、(2つの別々の列アドレスと共に)1つの行アドレスのみを提供するだけで済む。必要なのが1つの行アドレスのみであるため、アクセスペナルティ(別の行をプリチャージする必要がある)を回避することができる。一般に、所定のメモリデバイス内でのデータとECCの配置は、データのビットおよびその対応するECCのビットが、物理的に近い位置に記憶されるように構成されうる。
コンピュータシステムの一実施形態を示す図。 メモリサブシステムの一実施形態を示す図。 誤り訂正符号(ECC)を記憶するために一部が予約されているメモリの一実施形態のアドレッシングを示す図。 データと、そのデータに関連するECCとがメモリの同じページに記憶されることを保証するために、アドレスビットを並べ換える方法の一実施形態を示す図。 メモリモジュールの一実施形態を示す図。 ECC非対応のメモリデバイスを備えたECCサブシステムを使用して、データの整合性を検証する一実施形態のフローチャート。
以下の詳細な説明を読み、添付図面を参照することにより、本発明の他の態様が明らかになるであろう。
本発明は、さまざまに変形されたり、代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその説明は、本発明を開示された特定の形態に限定するようには意図されてはおらず、逆に、本発明は、添付の特許請求の範囲によって規定される本発明の趣旨および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
図1を参照すると、コンピュータシステム300の一実施形態が示される。図1の実施形態では、コンピュータシステム300は、複数の処理ノード312A,312B,312C,312Dを備える。各処理ノードは、処理ノード312A〜312Dにそれぞれ設けられているメモリコントローラ316A〜316Dを介して各々のメモリ314A〜314Dに結合されている。更に、処理ノード312A〜312Dは、処理ノード312A〜312D間の通信に使用するインタフェースロジックを備える。例えば、処理ノード312Aは、処理ノード312Bと通信するためのインタフェースロジック318Aと、処理ノード312Cと通信するためのインタフェースロジック318Bと、更に別の処理ノード(図示せず)と通信するための第3のインタフェースロジック318Cとを備える。同様に、処理ノード312Bは、インタフェースロジック318D,318E,318Fを備え、処理ノード312Cは、インタフェースロジック318G,318H,318Iを備え、処理ノード312Dは、インタフェースロジック318J,318K,318Lを備える。処理ノード312Dは、インタフェースロジック318Lを介して複数の入出力デバイス(例えばデイジーチェーン構成のデバイス320A〜320B)と通信するように結合される。その他の処理ノードも、同様にほかのI/Oデバイスと通信してもよい。
処理ノード312A〜312Dは、処理ノード間で通信を行うためにパケットベースのリンクを実施している。この実施形態では、このリンクは、一方向のラインの組として実施されてもよい(例えば、ライン324Aは、処理ノード312Aから処理ノード312Bにパケットを送信するために使用され、ライン324Bは、処理ノード312Bから処理ノード312Aにパケットを送信するために使用される)。ラインのその他の組324C〜324Hは、図4に示すように、その他の処理ノード間でパケットを送信するために使用される。一般に、ラインの各組324は、1本以上のデータラインと、このデータラインに対応する1本以上のクロックラインと、伝達するパケットの種類を示す1本以上の制御ラインとを含み得る。このリンクは、処理ノード間の通信ではキャッシュコヒーレントな方法で動作するか、処理ノードとI/Oデバイス間の通信(あるいは、バスブリッジから、周辺機器相互接続(Peripheral Component Interconnect:PCI)バスまたは業界標準アーキテクチャ(Industry Standard Architecture:ISA)バスなどの従来の構成のI/Oバスへの通信)で非コヒーレントな方法で動作しうる。また、図に示すように、このリンクは、I/Oデバイス間のデイジーチェーン構成を使用して、非コヒーレントな方法で動作することもできる。1つの処理ノードから別の処理ノードに送信されるパケットが、1つ以上の中間ノードを通過しうる点に留意されたい。例えば、図4に示すように、処理ノード312Aによって処理ノード312Dに送信されるパケットは、処理ノード312Bか処理ノード312Cのいずれかを通過しうる。適したルーティングアルゴリズムであれば、どのようなものでも使用することができる。コンピュータシステム300の別の実施形態では、処理ノードの数が、図4に示した実施形態よりも増減してもよい。
一般に、パケットは、ノード間のライン324を伝わる1つ以上のビットタイミング(bit time)として送信され得る。ビットタイミングは、対応するクロックラインを伝わるクロック信号の立ち上がりまたは立ち下がりであり得る。パケットには、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維持するためのプローブパケット、プローブおよびコマンドに応答する応答パケットなどがあり得る。
処理ノード312A〜312Dは、メモリコントローラおよびインタフェースロジックに加えて、1つ以上のプロセッサを有していてもよい。概して、処理ノードは、少なくとも1つのプロセッサを備えており、必要に応じてメモリおよびその他の論理回路と通信するためのメモリコントローラを任意選択で備えていてもよい。より詳細には、各処理ノード312A〜312Dは、図1に示すように、プロセッサ10のコピーを1つ以上備えていてもよい(例えば、図2〜3に示す各種の構造および動作の詳細を含む)。1つ以上のプロセッサが、処理ノード内にまたは処理ノードを形成するチップマルチプロセッシング(CMP)またはチップマルチスレッド(CMT)対応の集積回路を備えても、あるいは、処理ノードが、ほかの任意の望ましい内部構造を備えてもよい。
メモリ314A〜314Dは任意の適したメモリデバイスを備えうる。例えば、メモリ314A〜314Dは、1つ以上のラムバスDRAM(RDRAM)、シンクロナスDRAM(SDRAM)、DDR SDRAM、スタティックRAMなどを備えてもよい。コンピュータシステム300のアドレス空間は、メモリ314A〜314Dに分割されている。各処理ノード312A〜312Dは、アドレスとメモリ314A〜314Dとの対応関係、すなわち、特定のアドレスについてメモリ要求を転送すべき処理ノード314A〜314Dの決定に用いるメモリマップを備えていてもよい。一実施形態では、コンピュータシステム300内のアドレスのコヒーレンシポイント(coherency point)は、そのアドレスに対応しているバイトを記憶しているメモリに結合されたメモリコントローラ316A〜316Dである。換言すれば、メモリコントローラ316A〜316Dは、対応するメモリ314A〜314Dへのあらゆるメモリアクセスが、キャッシュコヒーレントな方法で行われることを保証する責任を負っている。メモリコントローラ316A〜316Dは、メモリ314A〜314Dとインタフェースするための制御回路を備えうる。更に、メモリコントローラ316A〜316Dは、メモリ要求をキューに記憶するための要求キューを備えていてもよい。
インタフェースロジック318A〜318Lは、リンクからパケットを受信すると共に、リンクに送信するパケットをバッファするための各種バッファを備えうる。コンピュータシステム300は、パケットを送信するための任意の適切なフロー制御メカニズムを使用することができる。例えば、一実施形態では、各インタフェースロジック318は、そのインタフェースロジックに接続されているリンクの反対側にある受信装置内の各種バッファの数のカウントを記憶している。インタフェースロジックは、パケットを記憶するための空きバッファが受信側のインタフェースロジックになければ、パケットを送信しない。パケットを前方にルーティングしたことで受信側のバッファに空きが生ずると、受信側のインタフェースロジックは、バッファに空きが生じたことを知らせるメッセージを、送信側のインタフェースロジックに送信する。このようなメカニズムは、「クーポンベースの」システムと呼ぶことができる。
I/Oデバイス320A〜320Bは、適したI/Oデバイスであれば、どのようなものであってもよい。例えば、I/Oデバイス320A〜320Bは、別のコンピュータシステムに結合され、そのコンピュータシステムと通信するためのデバイス(ネットワークインタフェースカードやモデムなど)を備えうる。更に、I/Oデバイス320A〜320Bは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、SCSI(Small Computer Systems Interface)アダプタ、テレフォニーカード、サウンドカード、およびGPIBインタフェースカードまたはフィールドバスインタフェースカードなどの各種のデータ収集カードを含んでいてもよい。更に、カードとして実装される任意のI/Oデバイスが、システム300のメイン回路基板上の回路および/または処理ノードで実行されるソフトウェアとして実装されてもよい。本明細書において「I/Oデバイス」との用語と「周辺機器」との用語は同義であるとされる点に留意されたい。
更に、1つ以上のプロセッサ10が、1つ以上のI/O相互接続および/またはメモリに対するブリッジへのプロセッサの1つ以上のインタフェースを有する、従来のパーソナルコンピュータ(PC)構成で実装されてもよい。
図2を参照すると、メモリサブシステムの一実施形態の図が示される。図の実施形態では、メモリサブシステムは、複数のメモリモジュール314を含むメモリを備える。各メモリモジュール314は、複数のメモリデバイス360を備える。実施形態によって、各モジュールにあるメモリモジュール314とメモリデバイス360の個数が、メモリのサイズ(および可能な最大サイズ)、コネクタの数、キャッシュラインのサイズ、ならびに他の共通の要因などのパラメータに応じて変わってもよい。
メモリモジュール314は、メモリバス350を介してメモリコントローラ316と結合されている。メモリバス350は、メモリモジュール314とメモリコントローラ316の間で、データを伝達し、信号のアドレッシングを行うように構成されうる。データ信号は、メモリバス350の一部であるデータパスを介して、メモリモジュール314との間で伝達されうる。アドレス信号は、メモリコントローラ316からメモリモジュール314に伝達され、(メモリの行を選択するための)別個の行アドレス信号と、(行内の特定のアドレスを選択するための)列アドレス信号を含んでもよく、これらは別のタイミングで送信される。データと誤り訂正符号(ECC)は、各種メモリデバイス360をまたがってメモリモジュールに記憶されうる。例えば、メモリモジュール314が8つのメモリデバイス360を有する場合、各メモリデバイスに1バイトのデータの1ビットを記憶することにより、1バイトのデータが記憶されうる。
メモリコントローラ316は、ECCサブシステム340を備え、ECCサブシステム340は、メモリから読み出されたデータの整合性を検証し、場合によっては、存在しうる誤りを訂正するために使用されうる。ECCサブシステム340は、保護するデータに対してECCを生成するための、公知の複数の方法の1つを使用しうる。
一実施形態では、メモリモジュール314は、(最新技術によって理解される)ECC対応のメモリモジュールではない。しかし、メモリモジュール314内に、ECCを記憶するためにメモリ空間を予約することができる。例えば、一実施形態では、メモリモジュールの使用可能なアドレス空間の1/8がECC用に予約され、残りの7/8がデータの記憶用に予約されうる。ECC用に予約される一部のメモリはアプリケーションから隠されており、このため、メモリコントローラ316のECCサブシステム340しか使用することができない。次に、メモリアドレス空間を、データの記憶用に予約されるアドレスと、ECCの記憶用に予約されるアドレスとに分割する方法について、図3を参照して更に詳細に説明する。
図3は、ECCを記憶するために一部が予約されているメモリの一実施形態のアドレッシングを示す図である。図の実施形態では、メモリ414は、論理アドレス空間と物理アドレス空間の両方で示されている。論理アドレス空間では、メモリの一部がECCの記憶用に予約され、アドレス空間の大半がデータの記憶用に予約される。このため、記憶されているECCのそれぞれは、データ用に予約されているアドレス空間に記憶されているデータブロックに対応している。データの記憶用に予約されるアドレス空間は、データの記憶および取得のためにメモリを必要とするソフトウェアアプリケーションによってアクセスされうる。これに対して、ECCの記憶用に予約されるアドレス空間は、ソフトウェアアプリケーションによってアクセスされず、ソフトウェアアプリケーションから隠されうる。ECCの記憶用の部分は、ECCサブシステムからは、図2に示すように見えうる。
物理アドレス空間では、データと、対応するECCとが、メモリのページまたは行に従って配置される。この特定の実施形態では、特定のデータブロックに対応するECCは、データブロックと共に同じページ内の、ページ境界の近くに配置される。これにより、アクセスしようとするデータと、その対応するECCに対して、1つの行アドレスのみが送られるため、より効率的なアクセスが可能となる。換言すれば、データとその対応するECCの単位は、同じ行の、別の列に記憶されうる。ECCと、対応するデータとの両方にアクセスするために1つの行アドレスのみを送信するだけで済むように、ECCと対応するデータとを配置することによって、行のプリチャージに関連するアクセスペナルティを回避することができる。このため、ECCは、そのECCが保護しているデータの近くのアドレス位置に記憶される。一般に、この配置は、ECCの記憶用に1/n(例えば、n=8の場合は1/8)のアドレスを予約し、ECCが保護するデータの記憶用に、残りの(n−1)/n(例えば、7/8)のアドレスを予約することによって得られる。
データと対応するECCとのほかの配置も可能であり、考察される。例えば、一実施形態では、対応するECCの記憶用に使用されるメモリの実際の位置を求めるために、ユーザが要求する各記憶位置の数値アドレスに、(n+1)/n(例えば、n=8の場合9/8)を掛けうる。これにより、データブロック間の1/n(例えば、1/8)のギャップにECCが記憶されるようになる。
図4は、データと、そのデータに関連するECCとがメモリの同じページに記憶されることを保証するために、アドレスビットを並べ換える方法の一実施形態を示す図である。図の実施形態では、ECCの記憶用に、論理アドレス空間の特定の一部(ここでは、A8 A7 A6 A5 A4 A3 A2 A1 A0として示す)が予約される。より詳細には、この例では、データの記憶用に使用可能な最上位の論理アドレスは、110_111_111である。このため、この例では、論理アドレス111_xxx_xxxの全てがECCの記憶用に予約され、残りの論理アドレスがデータの記憶用に予約される。
ある範囲のデータに対応するECCの記憶用の物理アドレス空間を予約するために、アドレスビットが並べ換えられうる。このため、図に示すように、物理アドレスの1つの特定の範囲に対して、特定のアドレスビットを置き換える(すなわち交換する)ことによって、対応するECCの物理アドレスを得ることができる。この例では、対応するECCの記憶用の物理アドレスを得るために、アドレスビットA8、A7およびA6が、アドレスビットA5、A4およびA3と交換される。この結果、メモリに供給されるアドレスは、A5 A4 A3 A8 A7 A6 A2 A1 A0となる。このため、物理アドレスA5 A4 A3 A8 A7 A6 x x xの範囲に記憶されているデータについて、対応するECCが、物理アドレスA5 A4 A3 1 1 1 A2 A1 A0に記憶されうる。このようにビットアドレスを並べ換えることにより、データと、対応するECCとに、より効率的にアクセスすることが可能となる。アドレスビットは、ECCが、対応するデータブロックと同じページ内に記憶されるように(例えば上の例のように)並べ換えられ、図3に示すようにページ境界に記憶されうる。このため、1つの行アドレスに対応するメモリのページに対して、データと、その対応するECCの両方が、同じ行の、別の列に記憶される。このため、ECCとデータの両方にアクセスするために1つの行アドレスのみが送信され、対応する列アドレスは別個に送信されうる。このように、データブロックと対応するECCとの両方にアクセスするために、2つの異なる行アドレスからの情報にアクセスする必要がある2回のプリチャージサイクルではなく、1回のプリチャージサイクルのみでよく、これにより、アクセスのレーテンシが最小限に短縮される。
図5は、メモリモジュールの一実施形態の図である。図の実施形態では、メモリモジュール314は、現在の最新技術において理解されるECC対応メモリモジュールでない。最新のECC対応メモリモジュールでは、通常、ECC専用の追加の記憶域が設けられている。この追加の記憶域は、メモリモジュールのPCB(プリント回路基板)に実装されている追加のメモリデバイスによって提供されうる。また、ECC対応メモリモジュール(一般にECC対応メモリ)間のデータパスは、ECCを、対応する保護されているデータと同時に伝達可能なように、広く設計されている。
これに対して、図5に示すメモリモジュール314は、ECCに準拠するための特定の事項を考慮していないデータ記憶域用に設計されている。しかし、本明細書に開示の手法を使用して、このタイプのメモリモジュールでECCの使用を実装することができる。
この特定の実施形態では、メモリモジュール314は、8つのメモリデバイス360を有する。各メモリデバイス360は、それぞれ、データブロックの一部およびECCの一部を記憶しうる。例えば、1バイト(8ビット)の1ビットを8つのメモリデバイスのそれぞれに記憶することによって、1バイトがメモリモジュール314に記憶されうる。同様に、各メモリデバイス360は、それぞれ、8ビットのECCの1ビットも記憶しうる。このため、データおよびECCの記憶域(storage)を、メモリモジュール314の複数のメモリデバイスに分散させることができる。しかし、このような配置は、図3に関連して上で説明した物理アドレス空間のマップに従って記憶されているデータおよびECCの配置に適したものとなりうる。
また、メモリモジュール314は、コネクタ370を備え、コネクタ370によりメモリモジュールがメモリバスと結合可能となる。コネクタ370は、カードエッジコネクタであっても、他のどのような適切なタイプのコネクタでもよい。接続のデータ部分の幅(ビットの数)は、使用されるシステムのキャッシュラインに応じて決まりうる。システムがECCに対応していない場合、キャッシュラインはデータを転送するには十分広いが、ECCの同時転送に対応するほどには広くない。下に更に詳しく説明するように、このような実施形態では、ECCが、データの転送とは独立した転送で、データバスで伝達されうる。
図6は、ECC非対応のメモリデバイスを備えたECCサブシステムを使用して、データの整合性を検証する一実施形態のフローチャートである。図の実施形態では、方法600は、論理アドレスの供給から開始する(605)。論理アドレスは、コンピュータシステムで実行されているソフトウェアによって、メモリコントローラに供給されうる。メモリコントローラは、論理アドレスを受け取ると、論理アドレスを第1の物理アドレスと第2の物理アドレスに変換しうる(610)。これらの物理アドレスの第1の物理アドレスは、メモリに記憶されているデータブロックに対応し、第2の物理アドレスは、このデータブロックの整合性を検査するために使用されるECCに対応しうる。一実施形態では、論理アドレスが、1つの行アドレスと2つの別々の列アドレスに変換されうる。第1の列アドレスは、(行アドレスと併せて)データブロックが記憶されている場所に対応し、第2の列アドレスは、(同じ行アドレスと併せて)このデータブロックに関連するECCに対応している。
論理アドレスを第1の物理アドレスと第2の物理アドレスに変換すると、第1のサイクル中に、データが、データパスを介して第1の物理アドレスからアクセスされうる(615)。メモリシステムは、ECCに対応の標準的なフォームファクタ(form factor)に対して明確に設計されていないため、データに対応するECCが、別の第2のサイクルで同じデータパスを介してアクセスされる(620)。このため、ECCに対するアドレス空間を予約し、データにアクセスするサイクルとは別のサイクルでECCにアクセスすることにより、ECC対応として明確に設計されていないデバイスでも、開示のECCの実装が可能となる。データおよびその対応するECCへのアクセス後、ECCサブシステムが、ECCの手順に従ってデータの整合性を検査しうる(625)。このステップは、誤りが検出されたときに、可能であればデータを修正するステップを含んでもよい。
また、メモリに書き込むデータに対してECCを生成し、記憶するための方法も考察される。この方法は、データを記憶する位置に対応する論理アドレスを受け取るステップを考察する。論理アドレスの変換から、データの記憶用の第1の物理アドレスが得られる。論理アドレスを使用して、対応するECCの記憶用の第2の物理アドレスが得られ、このアドレスは、ECC記憶域のために予約されるアドレス空間の一部にマップしている。データの受信時に、特定のECCの手順に従って対応するECCを生成するためにデータが使用されうる。第1のサイクルにおいて、データがメモリ内の第1の物理アドレスに書き込まれうる。第2のサイクルにおいて、ECCが第2の物理アドレスに書き込まれうる。本明細書に記載したほかの実施形態と同様に、第1物理アドレスと第2の物理アドレスの両方は、同じ行アドレスを有するが、列アドレスは異なりうる。
本発明を特定の実施形態を参照して記載したが、この実施形態は例示であり、本発明の範囲はこれに制限されないことが理解されよう。記載した各種実施形態のどのような変形、変更、追加および改良も可能である。このような変形、変更、追加および改良は、添付の特許請求の範囲に詳述する発明の範囲に含まれうる。
本発明は、一般にマイクロプロセッサに利用可能である。

Claims (10)

  1. データの記憶用に構成されたメモリの第1の物理アドレスと、前記第1の物理アドレスに記憶されている前記データに対応する誤り訂正符号(ECC)の記憶用に構成された前記メモリの第2の物理アドレスとにマップしている論理アドレスを受け取るステップと、
    前記論理アドレスを、前記第1の物理アドレスおよび前記第2の物理アドレスに変換するステップと、
    データパスを介して前記第1の物理アドレスから前記データにアクセスするステップと、
    前記データパスを介して前記ECCに別個にアクセスするステップと、
    前記ECCを使用して前記データの整合性を検査するステップと、を含む方法。
  2. 前記第1の物理アドレスはメモリページに存在し、前記第2の物理アドレスは同じメモリページに存在する請求項1に記載の方法。
  3. メモリの所定のページに対して、データの記憶用に物理アドレスの第1のサブセットが予約され、ECCの記憶用にアドレスの第2のサブセットが予約され、前記ECCのそれぞれは、前記第1のサブセットの物理アドレスに記憶されているデータに関連している請求項2に記載の方法。
  4. 前記論理アドレスを、第1の物理アドレスおよび第2の物理アドレスに変換するステップは、前記ECCが保護するデータが記憶されている前記メモリの実際の位置の近くの物理メモリ位置に、前記ECCが記憶されるように、前記論理アドレスのビットを並べ換えるステップを含み、前記並べ換えはページ境界に基づいて実行される請求項1に記載の方法。
  5. 前記ECCが保護するデータの近くのアドレス位置において、データブロックの間のブロックに前記ECCを記憶するステップを更に含み、前記アドレスの1/nがECCの記憶用に予約され、前記アドレスの(n−1)/nがデータの記憶用に予約される請求項1に記載の方法。
  6. メモリと、
    データパスと、
    前記データパスによって前記メモリと結合され、論理アドレスを受け取るために結合されたメモリコントローラとを備え、前記メモリコントローラは、
    論理アドレスを、データの記憶用に構成されたメモリの第1の物理アドレスと、前記第1の物理アドレスに記憶されている前記データに対応する誤り訂正符号(ECC)の記憶用に構成された前記メモリの第2の物理アドレスとに変換し、
    データパスを介して前記メモリ内の前記第1の物理アドレスから前記データにアクセスし、
    前記データパスを介して前記第2の物理アドレスから前記ECCに別個にアクセスし、
    前記ECCを使用して前記データの整合性を検査するように構成されているメモリサブシステム。
  7. 前記第1の物理アドレスはメモリページに存在し、前記第2の物理アドレスは同じメモリページに存在する請求項6に記載のメモリサブシステム。
  8. メモリの所定のページに対して、データの記憶用に物理アドレスの第1のサブセットが予約され、ECCを記憶するためにアドレスの第2のサブセットが予約され、前記ECCのそれぞれは、前記第1のサブセットの物理アドレスに記憶されているデータに関連している請求項7に記載のメモリサブシステム。
  9. 前記メモリコントローラは、前記ECCが保護するデータが記憶されている前記メモリの実際の位置の近くの物理メモリ位置に、前記ECCが記憶されるように、前記論理アドレスのビットを並べ換えることによって、前記論理アドレスを、第1の物理アドレスおよび第2の物理アドレスに変換するように構成されており、前記並べ換えはページ境界に基づいて実行される請求項6に記載のメモリサブシステム。
  10. 前記ECCは、前記ECCがデータブロックの間のブロックに記憶され、前記アドレスの1/nがECCの記憶用に予約され、前記アドレスの(n−1)/nがデータの記憶用に予約される請求項6に記載のメモリサブシステム。
JP2009554534A 2007-03-20 2008-03-14 非eccコンポーネントにおけるeccの実装 Active JP5303477B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/725,922 US8135935B2 (en) 2007-03-20 2007-03-20 ECC implementation in non-ECC components
US11/725,922 2007-03-20
PCT/US2008/003365 WO2008115400A1 (en) 2007-03-20 2008-03-14 Ecc implementation in non-ecc components

Publications (2)

Publication Number Publication Date
JP2010522374A true JP2010522374A (ja) 2010-07-01
JP5303477B2 JP5303477B2 (ja) 2013-10-02

Family

ID=39563549

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009554534A Active JP5303477B2 (ja) 2007-03-20 2008-03-14 非eccコンポーネントにおけるeccの実装

Country Status (8)

Country Link
US (1) US8135935B2 (ja)
JP (1) JP5303477B2 (ja)
KR (1) KR101500635B1 (ja)
CN (1) CN101711385B (ja)
DE (1) DE112008000736T5 (ja)
GB (1) GB2461428A (ja)
TW (1) TWI498913B (ja)
WO (1) WO2008115400A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612891B2 (en) 2013-09-25 2017-04-04 Fujitsu Limited Memory controller, information processing apparatus, and method of controlling information processing apparatus
JP2017156984A (ja) * 2016-03-02 2017-09-07 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法
JP7354253B2 (ja) 2018-12-11 2023-10-02 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5605238B2 (ja) * 2011-01-25 2014-10-15 ソニー株式会社 メモリシステムおよびその動作方法
US8949686B1 (en) 2011-02-13 2015-02-03 Apple Inc. Protection against word line failure in memory devices
US9767098B2 (en) 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
WO2013147888A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Memories utilizing hybrid error correcting code techniques
US9612901B2 (en) 2012-03-30 2017-04-04 Intel Corporation Memories utilizing hybrid error correcting code techniques
US9391637B2 (en) 2012-03-30 2016-07-12 Intel Corporation Error correcting code scheme utilizing reserved space
US9323608B2 (en) 2012-06-07 2016-04-26 Micron Technology, Inc. Integrity of a data bus
US9009570B2 (en) 2012-06-07 2015-04-14 Micron Technology, Inc. Integrity of an address bus
US8924832B1 (en) 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
US10120579B1 (en) 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US9652487B1 (en) * 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US8984368B2 (en) * 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
FR2996937B1 (fr) * 2012-10-16 2015-12-11 Bull Sas Procede et dispositif pour ameliorer la fiabilite de memorisation de donnees dans un disque dur comprenant plusieurs plateaux
US10558581B1 (en) 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
CN105474190A (zh) * 2013-07-25 2016-04-06 慧与发展有限责任合伙企业 包括不兼容的存储器技术或与不兼容的存储器技术接合的存储器模块的应答控制
WO2015065426A1 (en) 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Memory access for busy memory
KR101500877B1 (ko) 2013-11-28 2015-03-09 엘에스산전 주식회사 전력선 통신의 중계장치 및 중계방법
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US9665423B2 (en) * 2015-06-15 2017-05-30 Nxp Usa, Inc. End-to-end error detection and correction
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
JP6258399B2 (ja) * 2016-05-16 2018-01-10 ウィンボンド エレクトロニクス コーポレーション 半導体装置
US10291258B2 (en) 2017-05-25 2019-05-14 Advanced Micro Devices, Inc. Error correcting code for correcting single symbol errors and detecting double bit errors
KR102362229B1 (ko) * 2017-08-10 2022-02-11 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서
FR3100347B1 (fr) * 2019-09-04 2022-07-22 St Microelectronics Rousset Détection d'erreurs
FR3100346B1 (fr) 2019-09-04 2022-07-15 St Microelectronics Rousset Détection d'erreurs
US11468962B2 (en) * 2021-03-03 2022-10-11 Micron Technology, Inc. Performing memory testing using error correction code values

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675863A (ja) * 1992-08-26 1994-03-18 Kofu Nippon Denki Kk 誤り検出修正機能付メモリファイル
JP2002544622A (ja) * 1999-05-18 2002-12-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 記憶装置のための誤り訂正回路および方法
JP2005173860A (ja) * 2003-12-10 2005-06-30 Sony Corp データ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラム
JP2005528712A (ja) * 2002-05-31 2005-09-22 エヌヴィディア コーポレイション トランスペアレントeccメモリシステム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4727474A (en) * 1983-02-18 1988-02-23 Loral Corporation Staging memory for massively parallel processor
US5263032A (en) 1991-06-27 1993-11-16 Digital Equipment Corporation Computer system operation with corrected read data function
US5390308A (en) * 1992-04-15 1995-02-14 Rambus, Inc. Method and apparatus for address mapping of dynamic random access memory
US6438726B1 (en) 1999-05-18 2002-08-20 Advanced Micro Devices, Inc. Method of dual use of non-volatile memory for error correction
US6675344B1 (en) 2000-05-01 2004-01-06 Hewlett-Packard Development Company, L.P. Multiple ECC schemes to improve bandwidth
GB0031436D0 (en) * 2000-12-22 2001-02-07 Koninkl Philips Electronics Nv Method and apparatus for data reproduction
US6915479B2 (en) * 2001-05-17 2005-07-05 Matsushita Electric Industrial Co., Ltd. Apparatus and method for error correction
US7308621B2 (en) 2002-04-30 2007-12-11 International Business Machines Corporation Testing of ECC memories
US6965537B1 (en) 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
TWI277869B (en) * 2005-08-23 2007-04-01 Via Tech Inc Architecture and method for storing data
JP2008108297A (ja) * 2006-10-23 2008-05-08 Toshiba Corp 不揮発性半導体記憶装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675863A (ja) * 1992-08-26 1994-03-18 Kofu Nippon Denki Kk 誤り検出修正機能付メモリファイル
JP2002544622A (ja) * 1999-05-18 2002-12-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 記憶装置のための誤り訂正回路および方法
JP2005528712A (ja) * 2002-05-31 2005-09-22 エヌヴィディア コーポレイション トランスペアレントeccメモリシステム
JP2005173860A (ja) * 2003-12-10 2005-06-30 Sony Corp データ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612891B2 (en) 2013-09-25 2017-04-04 Fujitsu Limited Memory controller, information processing apparatus, and method of controlling information processing apparatus
JP2017156984A (ja) * 2016-03-02 2017-09-07 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法
JP7354253B2 (ja) 2018-12-11 2023-10-02 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム

Also Published As

Publication number Publication date
GB0916720D0 (en) 2009-11-04
CN101711385B (zh) 2013-06-12
US8135935B2 (en) 2012-03-13
US20080235485A1 (en) 2008-09-25
WO2008115400A1 (en) 2008-09-25
KR101500635B1 (ko) 2015-03-09
GB2461428A (en) 2010-01-06
CN101711385A (zh) 2010-05-19
JP5303477B2 (ja) 2013-10-02
DE112008000736T5 (de) 2010-01-21
TW200845022A (en) 2008-11-16
KR20100015704A (ko) 2010-02-12
TWI498913B (zh) 2015-09-01

Similar Documents

Publication Publication Date Title
JP5303477B2 (ja) 非eccコンポーネントにおけるeccの実装
JP7121875B1 (ja) パーシステントメモリシステム等のデータ完全性
US8245109B2 (en) Error checking and correction (ECC) system and method
US8738995B2 (en) Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information
US7584336B2 (en) Systems and methods for providing data modification operations in memory subsystems
US6754858B2 (en) SDRAM address error detection method and apparatus
KR101093857B1 (ko) 공통 프레임에서 공유 에러 비트 코드와 함께 데이터 및 데이터 마스크 비트들을 전송하기 위한 시스템, 방법 및 장치
US20070271495A1 (en) System to detect and identify errors in control information, read data and/or write data
JP5301668B2 (ja) インバンドのデータ・マスク・ビットの転送システム、方法、及び装置
JP2019128948A (ja) 集積回路装置及びストレージ装置
US10911181B2 (en) Method for checking address and control signal integrity in functional safety applications, related products
CN117270771A (zh) 加速单元、存储控制芯片、固态硬盘和数据读取方法
WO2012046343A1 (ja) メモリモジュール冗長化方法、記憶処理装置、及びデータ処理装置
JP2003345669A (ja) メモリアクセスエラーを防止するシステム及び方法
CN115016981A (zh) 存储区域的设置方法、数据读取、写入方法及相关装置
US6795938B2 (en) Memory access controller with response faking
KR20190052490A (ko) 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
CN113454611A (zh) 在功能安全应用、相关产品中校验地址和控制信号完整性的方法、相关产品
Carretero et al. MEMORY CONTROLLER-LEVEL EXTENSIONS FOR GDDR5 SINGLE DEVICE DATA CORRECT SUPPORT.

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100421

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110314

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121212

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130311

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130318

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130412

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130624

R150 Certificate of patent or registration of utility model

Ref document number: 5303477

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250