情報処理装置、ECC制御装置およびECC制御方法
【課題】バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なECC制御を行う。
【解決手段】情報処理装置1は、データおよび当該データを訂正するためのECCを格納するバッファーメモリ5と、バッファーメモリから転送されるデータおよびECCを取り込んで、データおよびECCを格納するキャッシュメモリ20と、バッファーメモリからキャッシュメモリにデータおよびECCが転送される場合に、データをECCを用いて訂正するECC処理部28と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサ12と、を有するECC制御装置10を備える。
【解決手段】情報処理装置1は、データおよび当該データを訂正するためのECCを格納するバッファーメモリ5と、バッファーメモリから転送されるデータおよびECCを取り込んで、データおよびECCを格納するキャッシュメモリ20と、バッファーメモリからキャッシュメモリにデータおよびECCが転送される場合に、データをECCを用いて訂正するECC処理部28と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサ12と、を有するECC制御装置10を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バッファーメモリに記憶されたデータのECC処理を行う情報処理装置、ECC制御装置およびECC制御方法に関する。
【背景技術】
【0002】
現在、例えばハードディスク制御用のLSI(Large Scale Integration)などの情報処理装置には、DRAM(DynamicRandom Access Memory)であるバッファーメモリが設けられており、データを一時的に格納するために利用されている。この情報処理装置において、バッファーメモリの不良が発生して、バッファーメモリの記憶回路の一部が正常に機能しない場合がある。このようなバッファーメモリの不良に対処するための一般的な技術として、ハードディスク制御用のLSIに、バッファーメモリ用のECC(ErrorCorrecting Code)機能が設けられている。
【0003】
情報処理装置のバッファーメモリには、主に、ファイルデータなどのユーザーデータが格納されており、そのユーザーデータは基本的にセクタ(例えば512バイト)単位でアクセスされる。したがって、セクタ中の最大ビットのエラー訂正を行う場合、それに応じたビットのECCを追加する必要がある。セクタ単位でリードする時にECCも同時にリードすることで、最大ビットまでのエラー訂正が可能となる。
【0004】
しかしながら、情報処理装置のバッファーメモリには、ユーザーデータ以外に、ファームウェア制御用コードやデータ、情報処理装置を出荷する前の検査時に実行するヒートランプログラムなどのシステムデータが格納される場合もある。その場合、バッファーメモリは短いビット単位(例えば64/32/16/8ビット単位)でアクセス(リード/ライト)される。この場合、上記のセクタ単位のECCを用いてのエラー訂正をすることができない。
【0005】
バッファーメモリに短いビット単位でアクセスする場合を考慮して、8ビットのデータ単位でECCを追加すると、8ビットのデータに対して3ビットのECCが必要とされるため、ECCのデータ量が飛躍的に増大する。よって、メモリ実効使用可能領域が下がり、メモリ実効アクセス速度も落ちてしまうため、この方法は現実的ではない。
【0006】
なお、従来文献(特許文献1)には、バッファーメモリを有し、ECC処理を行う情報処理装置の一例が示されている。
【特許文献1】特開平5‐88987号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述したように、バッファーメモリにセクタ単位でアクセスすることを考慮してセクタ単位でECCを生成すると、バッファーメモリの使用効率およびアクセス速度を向上させることができるが、バッファーメモリに短いビット単位でアクセスする場合にエラー訂正処理を行うことができない。一方、バッファーメモリに短いビット単位でアクセスすることを考慮して短いビット単位でECCを生成すると、ECCのデータ量が増大して、バッファーメモリの使用効率およびアクセス速度が低下してしまう。
【0008】
本発明は、上記の課題を解決するためになされたもので、バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なECC制御を行うことが可能な情報処理装置、ECC制御装置およびECC制御方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した目的を達成するために、本発明の情報処理装置は、データおよび当該データを訂正するためのECCを格納するバッファーメモリと、バッファーメモリから転送されるデータおよびECCを取り込んで、データおよびECCを格納するキャッシュメモリと、バッファーメモリからキャッシュメモリにデータおよびECCが転送される場合に、データをECCを用いて訂正するECC処理部と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、を有するECC制御装置を備えることを特徴とする。
【0010】
また、本発明のECC制御装置は、データおよび当該データを訂正するためのECCを格納するバッファーメモリと、バッファーメモリから転送されるデータおよびECCを取り込んで、データおよびECCを格納するキャッシュメモリと、バッファーメモリからキャッシュメモリにデータおよびECCが転送される場合に、データをECCを用いて訂正するECC処理部と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、を備えることを特徴とする。
【0011】
また、本発明のECC制御方法は、バッファーメモリ、キャッシュメモリおよびプロセッサとを備える装置におけるECC制御方法であって、バッファーメモリからキャッシュメモリに、データおよび当該データを訂正するためのECCを転送する際に、データをECCを用いて訂正するECC処理ステップと、ECCを用いて訂正されたデータをキャッシュメモリに格納するデータ格納ステップと、を含むECC制御方法である。
【発明の効果】
【0012】
本発明によれば、バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なECC制御を行うことが可能な情報処理装置、ECC制御装置およびECC制御方法を提供することができる。
【発明を実施するための最良の形態】
【0013】
以下、添付図面を参照して、本発明の好適な実施形態について詳細に説明する。なお、説明において、同一要素又は同一機能を有する要素には、同一符号を用いることとし、重複する説明は省略する。
【0014】
図1は、本実施形態に係る情報処理装置1を示すブロック図である。情報処理装置1は、情報処理装置1自体を示すホスト3と、データを一時的に格納するバッファーメモリ5と、磁気を利用したディスク状の記憶媒体であるハードディスク7と、ハードディスク7に関する制御を行うハードディスクコントローラ10と、を備えている。なお、情報処理装置1としては、例えば、ハードディスク7を記憶媒体として有するコンピュータ装置や、放送波を受信して得られる音声映像データをハードディスク7に記録する録画再生装置などである。
【0015】
バッファーメモリ5は、ハードディスクコントローラ10により処理されるデータを一時的に格納するために用いられる記憶媒体であり、DRAM(Dynamic Random Access Memory)により構成されている。図2に示されるように、バッファーメモリ5には、ユーザにより利用されるユーザデータ(例えば、ファイルデータや音声映像データなど)を格納するためのユーザデータ領域と、ユーザデータ訂正用のECC(ErrorCorrecting Code:誤り訂正符号)を格納するためのECC領域1と、システムデータ(例えば、ファームウェア制御用のコードおよびデータや、出荷前検査用のヒートランプログラムなど)を格納するためのシステムデータ領域と、システムデータ訂正用のECCを格納するためのECC領域2と、が設けられている。
【0016】
ここで、バッファーメモリ5は、ユーザデータ領域、ECC領域1、システムデータ領域およびECC領域2の各々の記憶容量を任意に調節可能となっている。例えば、バッファーメモリ5は、ユーザデータを多く格納する必要がある場合には、ユーザデータ領域の記憶容量を増やして、他の領域の記憶容量を減らす。また例えば、バッファーメモリ5は、システムデータを多く格納する必要がある場合には、システムデータ領域の記憶容量を増やして、他の領域の記憶容量を減らす。なお、バッファーメモリ5のECC領域1,2には、8bitの空きbitを挿入することなく、複数のECCを連続して書き込むことができる。
【0017】
ハードディスクコントローラ10は、主要な構成として、ハードディスクコントローラ10を統括的に制御するプロセッサであるCPU(Central Processing Unit)12と、ホスト3とのコマンドやデータなどの受け渡しを制御するホスト制御部14と、バッファーメモリ5とのデータやECCなどの受け渡しを制御するメモリ制御部16と、ハードディスク7に対するデータの書き込みおよび読み出しを制御するディスク制御部18と、を備えている。なお、ハードディスクコントローラ10は、特許請求の範囲におけるECC制御装置に相当する。
【0018】
ハードディスクコントローラ10は、CPU12とメモリ制御部16との間に、キャッシュメモリ(SRAM:Static Random Access Memory)20と、ECC処理部28と、を備えている。また、ハードディスクコントローラ10は、ホスト制御部14とメモリ制御部16との間に、別のキャッシュメモリ(SRAM)30と、別のECC処理部38と、を備えている。また、ハードディスクコントローラ10は、ディスク制御部18とメモリ制御部16との間に、さらに別のキャッシュメモリ(SRAM)40と、さらに別のECC処理部48とを備えている。
【0019】
キャッシュメモリ20は、バッファーメモリ5に格納されたデータやECCなどの一部を一時的に格納するために用いられる記憶媒体であり、SRAM(Static Random Access Memory)により構成されている。キャッシュメモリ20は、ユーザデータおよびシステムデータを格納するためのデータ記憶領域22と、データ記憶領域22に格納されたユーザデータおよびシステムデータを訂正するためのECCを格納するためのECC記憶領域24と、を有する。
【0020】
キャッシュメモリ20は、バッファーメモリ5に格納されたデータおよびECCのうち、CPU12により頻繁に利用されるデータおよびECCの一部を格納し、格納されたデータおよびECCの一部をCPU12に利用可能に提供する。CPU12は、キャッシュメモリ20のシステムデータを、64bit、32bit、16bit、8ビットなどの可変のデータ単位でリードまたはライトすることが可能である。一方、バッファーメモリ5とキャッシュメモリ20との間では、キャッシュメモリ20の1ラインが256bitであるため、256bitという固定されたデータ単位でデータおよびECCが受け渡しされる。なお、256bitのデータをエラー訂正するためには、少なくとも10bitのECCが必要となる。
【0021】
キャッシュメモリ20に格納されたデータがCPU12により書き換えられた場合には、バッファーメモリ5に格納されたデータは最新のデータではなくなるため(ダーティ状態)、バッファーメモリ5に格納されたデータを更新する必要が生じる。よって、適切なタイミングで、キャッシュメモリ20からバッファーメモリ5に最新のデータが転送されて、バッファーメモリ5のデータが更新される。このようなキャッシュメモリ20の機能は、コピーバック機能またはライトバック機能と呼ばれる。
【0022】
キャッシュメモリ20は、データ記憶領域22に格納されたデータおよびECCのバッファーメモリ5におけるアドレスを指示するポインタを保持しており、このポインタを用いてキャッシュヒットまたはキャッシュミスヒットを判定している。すなわち、キャッシュメモリ20は、CPU12からリード対象のデータのポインタ指定を受けた場合に、そのポインタを保持していればリード対象のデータはキャッシュメモリ20に有るため、リード対象のデータについてキャッシュヒットを判定する。一方、キャッシュメモリ20は、そのポインタを保持していなければリード対象のデータはキャッシュメモリ20に無いため、リード対象のデータについてキャッシュミスヒットを判定する。
【0023】
また、キャッシュメモリ20は、リード対象のデータのポインタに基づいて、そのデータに対応するECCのバッファーメモリ5におけるアドレスを指示するポインタに変換するアドレス変換部26を有しており、このアドレス変換部26を利用してキャッシュヒットまたはキャッシュミスヒットを判定している。すなわち、キャッシュメモリ20は、CPU12からリード対象のデータのポインタ指定を受けた場合に、アドレス変換部26によりECCのポインタに変換し、そのECCのポインタを保持していればECCはキャッシュメモリ20に有るため、ECCについてキャッシュヒットを判定する。一方、キャッシュメモリ20は、そのECCのポインタを保持していなければECCはキャッシュメモリ20に無いため、ECCについてキャッシュミスヒットを判定する。なお、アドレス変換部は、データのポインタを変数としてECCのポインタを算出可能なアドレス変換関数を利用するものでもよいし、データのポインタにECCのポインタが対応付けられたアドレス変換テーブルを利用するものでもよい。
【0024】
また、キャッシュメモリ20は、バッファーメモリ5から読み出されたデータおよびECCが更新されたか否かを判定する更新判定機能を有している。キャッシュメモリ20に格納されているデータおよびECCが更新されている場合には、バッファーメモリ5のデータおよびECCは最新ではないため、キャッシュメモリ20のデータおよびECCをバッファーメモリ5に転送して、バッファーメモリ5のデータおよびECCを更新する必要がある。なお、キャッシュメモリ20のデータおよびECCが更新されておらず、バッファーメモリ5に格納されたデータおよびECCが最新である状態を、「クリーン(clean)」という。一方、キャッシュメモリ20のデータおよびECCが更新されており、バッファーメモリ5に格納されたデータおよびECCが最新ではない状態を、「ダーティ(dirty)」という。
【0025】
なお、キャッシュメモリ20は、CPU12による書き換え処理が複数回行われた後に、データおよびECCをバッファーメモリ5に転送する。このため、キャッシュメモリ20とバッファーメモリ5との間のデータ転送の冗長性やオーバーヘッドを低減させて、転送効率を向上させることができる。またCPU12による書き換え処理ごとにバッファーメモリ5が受信処理を行うことがないため、バッファーメモリ5に別の処理を行わせることができる。
【0026】
ECC処理部28は、キャッシュメモリ20とバッファーメモリ5との間でデータが転送されるときに、転送されるデータを訂正するためのECCを生成する機能を有する。また、ECC処理部28は、キャッシュメモリ20とバッファーメモリ5との間でデータが転送されるときに、転送されるデータをECCを用いてエラー訂正する機能を有する。
【0027】
ホスト制御部14とメモリ制御部16との間に設けられたキャッシュメモリ(SRAM)30およびECC処理部38は、上述したキャッシュメモリ20およびECC処理部28と類似する処理を行う。すなわち、ホスト3からバッファーメモリ5にデータが転送されるときには、ECC処理部38は、バッファーメモリ5の不良に対処するために、転送されるデータをエラー訂正するためのECCを生成し、データとともにECCをバッファーメモリ5に格納する。なお、ホスト制御部14とメモリ制御部16との間では、512bitという固定されたデータ単位でデータが転送されており、ECC処理部38は512bitのデータをエラー訂正するために少なくとも13bitのECCを生成する。
【0028】
一方、バッファーメモリ5からホスト3にデータが転送されるときには、ECC処理部38は、バッファーメモリ5からECCを読み出して、ECCを用いてバッファーメモリ5の不良に起因するエラーを検出し訂正する。なお、キャッシュメモリ30は、少なくとも2セクタ(512bit×2)分の記憶領域をもつ記憶媒体であり、ECC処理部38によるECC生成処理およびエラー訂正処理のための一時的な記憶領域として利用される。
【0029】
ディスク制御部18とメモリ制御部16との間に設けられたキャッシュメモリ(SRAM)40およびECC処理部48は、上述したキャッシュメモリ20およびECC処理部28と類似する処理を行う。すなわち、ハードディスク7からバッファーメモリ5にデータが転送されるときには、ECC処理部48は、バッファーメモリ5の不良に対処するために、転送されるデータをエラー訂正するためのECCを生成し、データとともにECCをバッファーメモリ5に格納する。なお、ディスク制御部18とメモリ制御部16との間では、512bitという固定されたデータ単位でデータが転送されており、ECC処理部48は512bitのデータをエラー訂正するために少なくとも13bitのECCを生成する。
【0030】
一方、バッファーメモリ5からハードディスク7にデータが転送されるときには、ECC処理部48は、バッファーメモリ5からECCを読み出して、ECCを用いてバッファーメモリ5の不良に起因するエラーを検出し訂正する。なお、キャッシュメモリ40は、少なくとも2セクタ(512bit×2)分の記憶領域をもつ記憶媒体であり、ECC処理部48によるECC生成処理およびエラー訂正処理のための一時的な記憶領域として利用される。
【0031】
図3は、キャッシュメモリ20のデータ格納状況を場合分けして示す一覧表である。キャッシュメモリ20は、CPU12からデータリードまたはデータライトの要求があった場合に、データのヒット判定を行うとともに、そのデータについてエラー訂正を行うためのECCのヒット判定を行う。また、キャッシュメモリ20は、データおよびECCのヒット判定を行うとともに、キャッシュメモリ20に格納されたデータおよびECCが、バッファーメモリ5に格納されたデータおよびECCと同一(clean)であるか、または相違(dirty)であるかの判定を行う。そして、キャッシュメモリ20は、データ格納状況に応じた処理を行う。
【0032】
以降に説明する状況1〜状況7の処理は、CPU12によるデータリード時の処理である。
【0033】
(状況1)
状況1は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがヒットし、ECC用記憶領域においてそのデータに対応するECCがヒットした場合である。図4は、状況1におけるハードディスクコントローラ10の処理を示すフローチャートである。状況1では、CPU12は、キャッシュメモリ20に格納されたユーザデータまたはシステムデータを読み出し可能であるため、キャッシュメモリ20からユーザデータまたはシステムデータを読み出す(S401)。
【0034】
(状況2)
状況2は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがヒットしたが、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合である。図4は、状況2におけるハードディスクコントローラ10の処理も示している。状況2では、CPU12は、キャッシュメモリ20に格納されたユーザデータまたはシステムデータを読み出し可能であるため、キャッシュメモリ20からユーザデータまたはシステムデータを読み出す(S401)。
【0035】
(状況3)
状況3は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンである場合である。図5は、状況3におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にリード対象のデータが転送される(S501)。このデータ転送の際に、ECC処理部28は、キャッシュ内のECCを用いて、転送されるデータのエラーを検出し訂正する(S502)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S502)。
【0036】
(状況4)
状況4は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図6は、状況4におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S601)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、生成されたECCをキャッシュメモリ20に書き込む(S602)。バッファーメモリ5からキャッシュメモリ20にリード対象のデータが転送される(S603)。ECC処理部28は、キャッシュメモリ20のECCを用いて、転送されるデータのエラーを検出し訂正する(S604)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S605)。
【0037】
(状況5)
状況5は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータおよびECCがクリーンである場合である。図7は、状況5におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にリード対象のデータおよびそのECCを転送する(S701)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S702)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S703)。
【0038】
(状況6)
状況6は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンであり、ECCがダーティである場合である。図8は、状況6におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のECCが転送される(S801)。バッファーメモリ5からキャッシュメモリ20にリード対象のデータおよびそのECCが転送される(S802)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S803)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S804)。
【0039】
(状況7)
状況7は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図9は、状況7におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S901)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、バッファーメモリ5に転送する(S902)。バッファーメモリ5からキャッシュメモリ20にリード対象のデータおよびそのECCが転送される(S903)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S904)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S905)。
【0040】
以降に説明する状況8〜状況14の処理は、CPU12によるデータライト時の処理である。
【0041】
(状況8)
状況8は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがヒットし、ECC用記憶領域においてそのデータに対応するECCがヒットした場合である。図10は、状況8におけるハードディスクコントローラ10の処理を示すフローチャートである。状況8では、CPU12は、ライトデータをキャッシュに書き込む(S1001)。
【0042】
(状況9)
状況9は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがヒットしたが、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合である。図10は、状況9におけるハードディスクコントローラ10の処理も示している。状況9では、CPU12は、ライトデータをキャッシュに書き込む(S1001)。
【0043】
(状況10)
状況10は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンである場合である。図11は、状況10におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にライト対象のデータが転送される(S1101)。ECC処理部28は、キャッシュメモリのECCを用いて、転送されるデータのエラーを検出し訂正する(S1102)。CPU12からのライトデータがキャッシュに書き込まれる(S1103)。
【0044】
(状況11)
状況11は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図12は、状況11におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S1201)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、キャッシュメモリ20に書き込む(S1202)。バッファーメモリ5からキャッシュメモリ20にライト対象のデータが転送される(S1203)。ECC処理部28は、キャッシュメモリ20のECCを用いて、転送されるデータのエラーを検出し訂正する(S1204)。CPU12からのライトデータがキャッシュに書き込まれる(S1205)。
【0045】
(状況12)
状況12は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンであり、そのデータに対応するECCがクリーンである場合である。図13は、状況12におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にライト対象のデータおよびそのECCが転送される(S1301)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S1302)。CPU12からのライトデータがキャッシュに書き込まれる(S1303)。
【0046】
(状況13)
状況13は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンであり、そのデータに対応するECCがダーティである場合である。図14は、状況13におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のECCが転送される(S1401)。バッファーメモリ5からキャッシュメモリ20にライト対象のデータおよびそのECCが転送される(S1402)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S1403)。CPU12からのライトデータがキャッシュに書き込まれる(S1404)。
【0047】
(状況14)
状況14は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図15は、状況14におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S1501)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、バッファーメモリ5に転送する(S1502)。バッファーメモリ5からキャッシュメモリ20にライト対象のデータおよびそのECCが転送される(S1503)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S1504)。CPU12からのライトデータがキャッシュに書き込まれる(S1505)。
【0048】
本実施形態のハードディスクコントローラ10によれば、バッファーメモリ5に書き込まれるユーザデータおよびシステムデータをエラー訂正するためにECCを生成するため、バッファーメモリ5に書き込まれたユーザデータおよびシステムデータのビットエラーをECCを用いて検出し訂正することができる。よって、バッファーメモリ5に不良メモリセルが存在しても、ECCを用いたエラー訂正処理によりバッファーメモリ5の不良を補償することで、バッファーメモリ5の不良メモリセルを原因とするハードディスクコントローラ10の不良率を抑制することができる。
【0049】
また、本実施形態のハードディスクコントローラ10によれば、キャッシュメモリ20およびECC処理部28が設けられているため、バッファーメモリ5の使用効率およびアクセス速度を出来るだけ落とさずに、最適なECC制御を行うことができる。すなわち、バッファーメモリ5とキャッシュメモリ20との間で、256bitという固定されたデータ単位でデータが送受信されるため、256bitのデータに対応してECCを10bitという小容量で済ませることができる。よって、バッファーメモリ5の使用可能領域(ECCを除く記憶領域)を増加させることができる。一方、CPU12は、キャッシュメモリ20のシステムデータを、64bit、32bit、16bit、8ビットなどの可変のデータ単位でリードまたはライトすることが可能であるため、CPU12は必要なデータだけをリードまたはライトすることができ、CPU12からのアクセス速度を向上することができる。
【0050】
また、本実施形態では、バッファーメモリ5からキャッシュメモリ20にデータが転送されるので、CPU12はデータリードおよびデータライトのためにキャッシュメモリ20にアクセスする。よって、バッファーメモリ5とキャッシュメモリ20との間でデータ転送が行われない場合には、バッファーメモリ5は他の処理を行うことができる。
【0051】
また、ホスト3とバッファーメモリ5との間のデータ転送、および、ディスク制御部18とバッファーメモリ5との間のデータ転送についても、上述したハードディスク7とバッファーメモリ5との間のデータ送受と同じことが言える。すなわち、バッファーメモリ5に不良メモリセルが存在しても、ユーザデータおよびシステムデータのエラー訂正をすることにより、バッファーメモリ5の不良メモリセルを原因とするハードディスクコントローラ10の不良率を抑制することができる。そして、バッファーメモリ5の使用可能領域を増加させることができる。
【図面の簡単な説明】
【0052】
【図1】本実施形態に係る情報処理装置を示すブロック図である。
【図2】バッファーメモリのデータ構成を示す図である。
【図3】キャッシュメモリのデータ格納状況を場合分けして示す一覧表である。
【図4】CPUのリード時の処理を示す第1のフローチャートである。
【図5】CPUのリード時の処理を示す第2のフローチャートである。
【図6】CPUのリード時の処理を示す第3のフローチャートである。
【図7】CPUのリード時の処理を示す第4のフローチャートである。
【図8】CPUのリード時の処理を示す第5のフローチャートである。
【図9】CPUのリード時の処理を示す第6のフローチャートである。
【図10】CPUのライト時の処理を示す第1のフローチャートである。
【図11】CPUのライト時の処理を示す第2のフローチャートである。
【図12】CPUのライト時の処理を示す第3のフローチャートである。
【図13】CPUのライト時の処理を示す第4のフローチャートである。
【図14】CPUのライト時の処理を示す第5のフローチャートである。
【図15】CPUのライト時の処理を示す第6のフローチャートである。
【符号の説明】
【0053】
1…情報処理装置、3…ホスト、5…バッファーメモリ、7…ハードディスク、10…ハードディスクコントローラ、12…CPU、14…ホスト制御部、16…メモリ制御部、18…ディスク制御部、20…キャッシュメモリ、26…アドレス変換部、28…ECC処理部、30…キャッシュメモリ、38…ECC処理部、40…キャッシュメモリ、48…ECC処理部。
【技術分野】
【0001】
本発明は、バッファーメモリに記憶されたデータのECC処理を行う情報処理装置、ECC制御装置およびECC制御方法に関する。
【背景技術】
【0002】
現在、例えばハードディスク制御用のLSI(Large Scale Integration)などの情報処理装置には、DRAM(DynamicRandom Access Memory)であるバッファーメモリが設けられており、データを一時的に格納するために利用されている。この情報処理装置において、バッファーメモリの不良が発生して、バッファーメモリの記憶回路の一部が正常に機能しない場合がある。このようなバッファーメモリの不良に対処するための一般的な技術として、ハードディスク制御用のLSIに、バッファーメモリ用のECC(ErrorCorrecting Code)機能が設けられている。
【0003】
情報処理装置のバッファーメモリには、主に、ファイルデータなどのユーザーデータが格納されており、そのユーザーデータは基本的にセクタ(例えば512バイト)単位でアクセスされる。したがって、セクタ中の最大ビットのエラー訂正を行う場合、それに応じたビットのECCを追加する必要がある。セクタ単位でリードする時にECCも同時にリードすることで、最大ビットまでのエラー訂正が可能となる。
【0004】
しかしながら、情報処理装置のバッファーメモリには、ユーザーデータ以外に、ファームウェア制御用コードやデータ、情報処理装置を出荷する前の検査時に実行するヒートランプログラムなどのシステムデータが格納される場合もある。その場合、バッファーメモリは短いビット単位(例えば64/32/16/8ビット単位)でアクセス(リード/ライト)される。この場合、上記のセクタ単位のECCを用いてのエラー訂正をすることができない。
【0005】
バッファーメモリに短いビット単位でアクセスする場合を考慮して、8ビットのデータ単位でECCを追加すると、8ビットのデータに対して3ビットのECCが必要とされるため、ECCのデータ量が飛躍的に増大する。よって、メモリ実効使用可能領域が下がり、メモリ実効アクセス速度も落ちてしまうため、この方法は現実的ではない。
【0006】
なお、従来文献(特許文献1)には、バッファーメモリを有し、ECC処理を行う情報処理装置の一例が示されている。
【特許文献1】特開平5‐88987号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述したように、バッファーメモリにセクタ単位でアクセスすることを考慮してセクタ単位でECCを生成すると、バッファーメモリの使用効率およびアクセス速度を向上させることができるが、バッファーメモリに短いビット単位でアクセスする場合にエラー訂正処理を行うことができない。一方、バッファーメモリに短いビット単位でアクセスすることを考慮して短いビット単位でECCを生成すると、ECCのデータ量が増大して、バッファーメモリの使用効率およびアクセス速度が低下してしまう。
【0008】
本発明は、上記の課題を解決するためになされたもので、バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なECC制御を行うことが可能な情報処理装置、ECC制御装置およびECC制御方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した目的を達成するために、本発明の情報処理装置は、データおよび当該データを訂正するためのECCを格納するバッファーメモリと、バッファーメモリから転送されるデータおよびECCを取り込んで、データおよびECCを格納するキャッシュメモリと、バッファーメモリからキャッシュメモリにデータおよびECCが転送される場合に、データをECCを用いて訂正するECC処理部と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、を有するECC制御装置を備えることを特徴とする。
【0010】
また、本発明のECC制御装置は、データおよび当該データを訂正するためのECCを格納するバッファーメモリと、バッファーメモリから転送されるデータおよびECCを取り込んで、データおよびECCを格納するキャッシュメモリと、バッファーメモリからキャッシュメモリにデータおよびECCが転送される場合に、データをECCを用いて訂正するECC処理部と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、を備えることを特徴とする。
【0011】
また、本発明のECC制御方法は、バッファーメモリ、キャッシュメモリおよびプロセッサとを備える装置におけるECC制御方法であって、バッファーメモリからキャッシュメモリに、データおよび当該データを訂正するためのECCを転送する際に、データをECCを用いて訂正するECC処理ステップと、ECCを用いて訂正されたデータをキャッシュメモリに格納するデータ格納ステップと、を含むECC制御方法である。
【発明の効果】
【0012】
本発明によれば、バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なECC制御を行うことが可能な情報処理装置、ECC制御装置およびECC制御方法を提供することができる。
【発明を実施するための最良の形態】
【0013】
以下、添付図面を参照して、本発明の好適な実施形態について詳細に説明する。なお、説明において、同一要素又は同一機能を有する要素には、同一符号を用いることとし、重複する説明は省略する。
【0014】
図1は、本実施形態に係る情報処理装置1を示すブロック図である。情報処理装置1は、情報処理装置1自体を示すホスト3と、データを一時的に格納するバッファーメモリ5と、磁気を利用したディスク状の記憶媒体であるハードディスク7と、ハードディスク7に関する制御を行うハードディスクコントローラ10と、を備えている。なお、情報処理装置1としては、例えば、ハードディスク7を記憶媒体として有するコンピュータ装置や、放送波を受信して得られる音声映像データをハードディスク7に記録する録画再生装置などである。
【0015】
バッファーメモリ5は、ハードディスクコントローラ10により処理されるデータを一時的に格納するために用いられる記憶媒体であり、DRAM(Dynamic Random Access Memory)により構成されている。図2に示されるように、バッファーメモリ5には、ユーザにより利用されるユーザデータ(例えば、ファイルデータや音声映像データなど)を格納するためのユーザデータ領域と、ユーザデータ訂正用のECC(ErrorCorrecting Code:誤り訂正符号)を格納するためのECC領域1と、システムデータ(例えば、ファームウェア制御用のコードおよびデータや、出荷前検査用のヒートランプログラムなど)を格納するためのシステムデータ領域と、システムデータ訂正用のECCを格納するためのECC領域2と、が設けられている。
【0016】
ここで、バッファーメモリ5は、ユーザデータ領域、ECC領域1、システムデータ領域およびECC領域2の各々の記憶容量を任意に調節可能となっている。例えば、バッファーメモリ5は、ユーザデータを多く格納する必要がある場合には、ユーザデータ領域の記憶容量を増やして、他の領域の記憶容量を減らす。また例えば、バッファーメモリ5は、システムデータを多く格納する必要がある場合には、システムデータ領域の記憶容量を増やして、他の領域の記憶容量を減らす。なお、バッファーメモリ5のECC領域1,2には、8bitの空きbitを挿入することなく、複数のECCを連続して書き込むことができる。
【0017】
ハードディスクコントローラ10は、主要な構成として、ハードディスクコントローラ10を統括的に制御するプロセッサであるCPU(Central Processing Unit)12と、ホスト3とのコマンドやデータなどの受け渡しを制御するホスト制御部14と、バッファーメモリ5とのデータやECCなどの受け渡しを制御するメモリ制御部16と、ハードディスク7に対するデータの書き込みおよび読み出しを制御するディスク制御部18と、を備えている。なお、ハードディスクコントローラ10は、特許請求の範囲におけるECC制御装置に相当する。
【0018】
ハードディスクコントローラ10は、CPU12とメモリ制御部16との間に、キャッシュメモリ(SRAM:Static Random Access Memory)20と、ECC処理部28と、を備えている。また、ハードディスクコントローラ10は、ホスト制御部14とメモリ制御部16との間に、別のキャッシュメモリ(SRAM)30と、別のECC処理部38と、を備えている。また、ハードディスクコントローラ10は、ディスク制御部18とメモリ制御部16との間に、さらに別のキャッシュメモリ(SRAM)40と、さらに別のECC処理部48とを備えている。
【0019】
キャッシュメモリ20は、バッファーメモリ5に格納されたデータやECCなどの一部を一時的に格納するために用いられる記憶媒体であり、SRAM(Static Random Access Memory)により構成されている。キャッシュメモリ20は、ユーザデータおよびシステムデータを格納するためのデータ記憶領域22と、データ記憶領域22に格納されたユーザデータおよびシステムデータを訂正するためのECCを格納するためのECC記憶領域24と、を有する。
【0020】
キャッシュメモリ20は、バッファーメモリ5に格納されたデータおよびECCのうち、CPU12により頻繁に利用されるデータおよびECCの一部を格納し、格納されたデータおよびECCの一部をCPU12に利用可能に提供する。CPU12は、キャッシュメモリ20のシステムデータを、64bit、32bit、16bit、8ビットなどの可変のデータ単位でリードまたはライトすることが可能である。一方、バッファーメモリ5とキャッシュメモリ20との間では、キャッシュメモリ20の1ラインが256bitであるため、256bitという固定されたデータ単位でデータおよびECCが受け渡しされる。なお、256bitのデータをエラー訂正するためには、少なくとも10bitのECCが必要となる。
【0021】
キャッシュメモリ20に格納されたデータがCPU12により書き換えられた場合には、バッファーメモリ5に格納されたデータは最新のデータではなくなるため(ダーティ状態)、バッファーメモリ5に格納されたデータを更新する必要が生じる。よって、適切なタイミングで、キャッシュメモリ20からバッファーメモリ5に最新のデータが転送されて、バッファーメモリ5のデータが更新される。このようなキャッシュメモリ20の機能は、コピーバック機能またはライトバック機能と呼ばれる。
【0022】
キャッシュメモリ20は、データ記憶領域22に格納されたデータおよびECCのバッファーメモリ5におけるアドレスを指示するポインタを保持しており、このポインタを用いてキャッシュヒットまたはキャッシュミスヒットを判定している。すなわち、キャッシュメモリ20は、CPU12からリード対象のデータのポインタ指定を受けた場合に、そのポインタを保持していればリード対象のデータはキャッシュメモリ20に有るため、リード対象のデータについてキャッシュヒットを判定する。一方、キャッシュメモリ20は、そのポインタを保持していなければリード対象のデータはキャッシュメモリ20に無いため、リード対象のデータについてキャッシュミスヒットを判定する。
【0023】
また、キャッシュメモリ20は、リード対象のデータのポインタに基づいて、そのデータに対応するECCのバッファーメモリ5におけるアドレスを指示するポインタに変換するアドレス変換部26を有しており、このアドレス変換部26を利用してキャッシュヒットまたはキャッシュミスヒットを判定している。すなわち、キャッシュメモリ20は、CPU12からリード対象のデータのポインタ指定を受けた場合に、アドレス変換部26によりECCのポインタに変換し、そのECCのポインタを保持していればECCはキャッシュメモリ20に有るため、ECCについてキャッシュヒットを判定する。一方、キャッシュメモリ20は、そのECCのポインタを保持していなければECCはキャッシュメモリ20に無いため、ECCについてキャッシュミスヒットを判定する。なお、アドレス変換部は、データのポインタを変数としてECCのポインタを算出可能なアドレス変換関数を利用するものでもよいし、データのポインタにECCのポインタが対応付けられたアドレス変換テーブルを利用するものでもよい。
【0024】
また、キャッシュメモリ20は、バッファーメモリ5から読み出されたデータおよびECCが更新されたか否かを判定する更新判定機能を有している。キャッシュメモリ20に格納されているデータおよびECCが更新されている場合には、バッファーメモリ5のデータおよびECCは最新ではないため、キャッシュメモリ20のデータおよびECCをバッファーメモリ5に転送して、バッファーメモリ5のデータおよびECCを更新する必要がある。なお、キャッシュメモリ20のデータおよびECCが更新されておらず、バッファーメモリ5に格納されたデータおよびECCが最新である状態を、「クリーン(clean)」という。一方、キャッシュメモリ20のデータおよびECCが更新されており、バッファーメモリ5に格納されたデータおよびECCが最新ではない状態を、「ダーティ(dirty)」という。
【0025】
なお、キャッシュメモリ20は、CPU12による書き換え処理が複数回行われた後に、データおよびECCをバッファーメモリ5に転送する。このため、キャッシュメモリ20とバッファーメモリ5との間のデータ転送の冗長性やオーバーヘッドを低減させて、転送効率を向上させることができる。またCPU12による書き換え処理ごとにバッファーメモリ5が受信処理を行うことがないため、バッファーメモリ5に別の処理を行わせることができる。
【0026】
ECC処理部28は、キャッシュメモリ20とバッファーメモリ5との間でデータが転送されるときに、転送されるデータを訂正するためのECCを生成する機能を有する。また、ECC処理部28は、キャッシュメモリ20とバッファーメモリ5との間でデータが転送されるときに、転送されるデータをECCを用いてエラー訂正する機能を有する。
【0027】
ホスト制御部14とメモリ制御部16との間に設けられたキャッシュメモリ(SRAM)30およびECC処理部38は、上述したキャッシュメモリ20およびECC処理部28と類似する処理を行う。すなわち、ホスト3からバッファーメモリ5にデータが転送されるときには、ECC処理部38は、バッファーメモリ5の不良に対処するために、転送されるデータをエラー訂正するためのECCを生成し、データとともにECCをバッファーメモリ5に格納する。なお、ホスト制御部14とメモリ制御部16との間では、512bitという固定されたデータ単位でデータが転送されており、ECC処理部38は512bitのデータをエラー訂正するために少なくとも13bitのECCを生成する。
【0028】
一方、バッファーメモリ5からホスト3にデータが転送されるときには、ECC処理部38は、バッファーメモリ5からECCを読み出して、ECCを用いてバッファーメモリ5の不良に起因するエラーを検出し訂正する。なお、キャッシュメモリ30は、少なくとも2セクタ(512bit×2)分の記憶領域をもつ記憶媒体であり、ECC処理部38によるECC生成処理およびエラー訂正処理のための一時的な記憶領域として利用される。
【0029】
ディスク制御部18とメモリ制御部16との間に設けられたキャッシュメモリ(SRAM)40およびECC処理部48は、上述したキャッシュメモリ20およびECC処理部28と類似する処理を行う。すなわち、ハードディスク7からバッファーメモリ5にデータが転送されるときには、ECC処理部48は、バッファーメモリ5の不良に対処するために、転送されるデータをエラー訂正するためのECCを生成し、データとともにECCをバッファーメモリ5に格納する。なお、ディスク制御部18とメモリ制御部16との間では、512bitという固定されたデータ単位でデータが転送されており、ECC処理部48は512bitのデータをエラー訂正するために少なくとも13bitのECCを生成する。
【0030】
一方、バッファーメモリ5からハードディスク7にデータが転送されるときには、ECC処理部48は、バッファーメモリ5からECCを読み出して、ECCを用いてバッファーメモリ5の不良に起因するエラーを検出し訂正する。なお、キャッシュメモリ40は、少なくとも2セクタ(512bit×2)分の記憶領域をもつ記憶媒体であり、ECC処理部48によるECC生成処理およびエラー訂正処理のための一時的な記憶領域として利用される。
【0031】
図3は、キャッシュメモリ20のデータ格納状況を場合分けして示す一覧表である。キャッシュメモリ20は、CPU12からデータリードまたはデータライトの要求があった場合に、データのヒット判定を行うとともに、そのデータについてエラー訂正を行うためのECCのヒット判定を行う。また、キャッシュメモリ20は、データおよびECCのヒット判定を行うとともに、キャッシュメモリ20に格納されたデータおよびECCが、バッファーメモリ5に格納されたデータおよびECCと同一(clean)であるか、または相違(dirty)であるかの判定を行う。そして、キャッシュメモリ20は、データ格納状況に応じた処理を行う。
【0032】
以降に説明する状況1〜状況7の処理は、CPU12によるデータリード時の処理である。
【0033】
(状況1)
状況1は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがヒットし、ECC用記憶領域においてそのデータに対応するECCがヒットした場合である。図4は、状況1におけるハードディスクコントローラ10の処理を示すフローチャートである。状況1では、CPU12は、キャッシュメモリ20に格納されたユーザデータまたはシステムデータを読み出し可能であるため、キャッシュメモリ20からユーザデータまたはシステムデータを読み出す(S401)。
【0034】
(状況2)
状況2は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがヒットしたが、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合である。図4は、状況2におけるハードディスクコントローラ10の処理も示している。状況2では、CPU12は、キャッシュメモリ20に格納されたユーザデータまたはシステムデータを読み出し可能であるため、キャッシュメモリ20からユーザデータまたはシステムデータを読み出す(S401)。
【0035】
(状況3)
状況3は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンである場合である。図5は、状況3におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にリード対象のデータが転送される(S501)。このデータ転送の際に、ECC処理部28は、キャッシュ内のECCを用いて、転送されるデータのエラーを検出し訂正する(S502)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S502)。
【0036】
(状況4)
状況4は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図6は、状況4におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S601)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、生成されたECCをキャッシュメモリ20に書き込む(S602)。バッファーメモリ5からキャッシュメモリ20にリード対象のデータが転送される(S603)。ECC処理部28は、キャッシュメモリ20のECCを用いて、転送されるデータのエラーを検出し訂正する(S604)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S605)。
【0037】
(状況5)
状況5は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータおよびECCがクリーンである場合である。図7は、状況5におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にリード対象のデータおよびそのECCを転送する(S701)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S702)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S703)。
【0038】
(状況6)
状況6は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンであり、ECCがダーティである場合である。図8は、状況6におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のECCが転送される(S801)。バッファーメモリ5からキャッシュメモリ20にリード対象のデータおよびそのECCが転送される(S802)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S803)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S804)。
【0039】
(状況7)
状況7は、CPU12によるデータリードにおいて、キャッシュメモリ20のデータ用記憶領域においてリード対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図9は、状況7におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S901)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、バッファーメモリ5に転送する(S902)。バッファーメモリ5からキャッシュメモリ20にリード対象のデータおよびそのECCが転送される(S903)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S904)。CPU12は、キャッシュメモリ20からリード対象のユーザデータまたはシステムデータを読み出す(S905)。
【0040】
以降に説明する状況8〜状況14の処理は、CPU12によるデータライト時の処理である。
【0041】
(状況8)
状況8は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがヒットし、ECC用記憶領域においてそのデータに対応するECCがヒットした場合である。図10は、状況8におけるハードディスクコントローラ10の処理を示すフローチャートである。状況8では、CPU12は、ライトデータをキャッシュに書き込む(S1001)。
【0042】
(状況9)
状況9は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがヒットしたが、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合である。図10は、状況9におけるハードディスクコントローラ10の処理も示している。状況9では、CPU12は、ライトデータをキャッシュに書き込む(S1001)。
【0043】
(状況10)
状況10は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンである場合である。図11は、状況10におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にライト対象のデータが転送される(S1101)。ECC処理部28は、キャッシュメモリのECCを用いて、転送されるデータのエラーを検出し訂正する(S1102)。CPU12からのライトデータがキャッシュに書き込まれる(S1103)。
【0044】
(状況11)
状況11は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットしたが、ECC用記憶領域においてそのデータに対応するECCがヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図12は、状況11におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S1201)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、キャッシュメモリ20に書き込む(S1202)。バッファーメモリ5からキャッシュメモリ20にライト対象のデータが転送される(S1203)。ECC処理部28は、キャッシュメモリ20のECCを用いて、転送されるデータのエラーを検出し訂正する(S1204)。CPU12からのライトデータがキャッシュに書き込まれる(S1205)。
【0045】
(状況12)
状況12は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンであり、そのデータに対応するECCがクリーンである場合である。図13は、状況12におけるハードディスクコントローラ10の処理を示すフローチャートである。
バッファーメモリ5からキャッシュメモリ20にライト対象のデータおよびそのECCが転送される(S1301)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S1302)。CPU12からのライトデータがキャッシュに書き込まれる(S1303)。
【0046】
(状況13)
状況13は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがクリーンであり、そのデータに対応するECCがダーティである場合である。図14は、状況13におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のECCが転送される(S1401)。バッファーメモリ5からキャッシュメモリ20にライト対象のデータおよびそのECCが転送される(S1402)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S1403)。CPU12からのライトデータがキャッシュに書き込まれる(S1404)。
【0047】
(状況14)
状況14は、CPU12によるデータライトにおいて、キャッシュメモリ20のデータ用記憶領域においてライト対象のデータがミスヒットし、ECC用記憶領域においてそのデータに対応するECCがミスヒットした場合であり、さらに、キャッシュメモリ20においてリプレイス対象のデータがダーティである場合である。図15は、状況14におけるハードディスクコントローラ10の処理を示すフローチャートである。
キャッシュメモリ20からバッファーメモリ5にリプレイス対象のデータが転送される(S1501)。ECC処理部28は、転送されるデータをエラー訂正するためのECCを生成し、バッファーメモリ5に転送する(S1502)。バッファーメモリ5からキャッシュメモリ20にライト対象のデータおよびそのECCが転送される(S1503)。ECC処理部28は、転送されるECCを用いて、転送されるデータのエラーを検出し訂正する(S1504)。CPU12からのライトデータがキャッシュに書き込まれる(S1505)。
【0048】
本実施形態のハードディスクコントローラ10によれば、バッファーメモリ5に書き込まれるユーザデータおよびシステムデータをエラー訂正するためにECCを生成するため、バッファーメモリ5に書き込まれたユーザデータおよびシステムデータのビットエラーをECCを用いて検出し訂正することができる。よって、バッファーメモリ5に不良メモリセルが存在しても、ECCを用いたエラー訂正処理によりバッファーメモリ5の不良を補償することで、バッファーメモリ5の不良メモリセルを原因とするハードディスクコントローラ10の不良率を抑制することができる。
【0049】
また、本実施形態のハードディスクコントローラ10によれば、キャッシュメモリ20およびECC処理部28が設けられているため、バッファーメモリ5の使用効率およびアクセス速度を出来るだけ落とさずに、最適なECC制御を行うことができる。すなわち、バッファーメモリ5とキャッシュメモリ20との間で、256bitという固定されたデータ単位でデータが送受信されるため、256bitのデータに対応してECCを10bitという小容量で済ませることができる。よって、バッファーメモリ5の使用可能領域(ECCを除く記憶領域)を増加させることができる。一方、CPU12は、キャッシュメモリ20のシステムデータを、64bit、32bit、16bit、8ビットなどの可変のデータ単位でリードまたはライトすることが可能であるため、CPU12は必要なデータだけをリードまたはライトすることができ、CPU12からのアクセス速度を向上することができる。
【0050】
また、本実施形態では、バッファーメモリ5からキャッシュメモリ20にデータが転送されるので、CPU12はデータリードおよびデータライトのためにキャッシュメモリ20にアクセスする。よって、バッファーメモリ5とキャッシュメモリ20との間でデータ転送が行われない場合には、バッファーメモリ5は他の処理を行うことができる。
【0051】
また、ホスト3とバッファーメモリ5との間のデータ転送、および、ディスク制御部18とバッファーメモリ5との間のデータ転送についても、上述したハードディスク7とバッファーメモリ5との間のデータ送受と同じことが言える。すなわち、バッファーメモリ5に不良メモリセルが存在しても、ユーザデータおよびシステムデータのエラー訂正をすることにより、バッファーメモリ5の不良メモリセルを原因とするハードディスクコントローラ10の不良率を抑制することができる。そして、バッファーメモリ5の使用可能領域を増加させることができる。
【図面の簡単な説明】
【0052】
【図1】本実施形態に係る情報処理装置を示すブロック図である。
【図2】バッファーメモリのデータ構成を示す図である。
【図3】キャッシュメモリのデータ格納状況を場合分けして示す一覧表である。
【図4】CPUのリード時の処理を示す第1のフローチャートである。
【図5】CPUのリード時の処理を示す第2のフローチャートである。
【図6】CPUのリード時の処理を示す第3のフローチャートである。
【図7】CPUのリード時の処理を示す第4のフローチャートである。
【図8】CPUのリード時の処理を示す第5のフローチャートである。
【図9】CPUのリード時の処理を示す第6のフローチャートである。
【図10】CPUのライト時の処理を示す第1のフローチャートである。
【図11】CPUのライト時の処理を示す第2のフローチャートである。
【図12】CPUのライト時の処理を示す第3のフローチャートである。
【図13】CPUのライト時の処理を示す第4のフローチャートである。
【図14】CPUのライト時の処理を示す第5のフローチャートである。
【図15】CPUのライト時の処理を示す第6のフローチャートである。
【符号の説明】
【0053】
1…情報処理装置、3…ホスト、5…バッファーメモリ、7…ハードディスク、10…ハードディスクコントローラ、12…CPU、14…ホスト制御部、16…メモリ制御部、18…ディスク制御部、20…キャッシュメモリ、26…アドレス変換部、28…ECC処理部、30…キャッシュメモリ、38…ECC処理部、40…キャッシュメモリ、48…ECC処理部。
【特許請求の範囲】
【請求項1】
データおよび当該データを訂正するためのECCを格納するバッファーメモリと、
前記バッファーメモリから転送される前記データおよび前記ECCを取り込んで、前記データおよび前記ECCを格納するキャッシュメモリと、
前記バッファーメモリから前記キャッシュメモリに前記データおよび前記ECCが転送される場合に、前記データを前記ECCを用いて訂正するECC処理部と、
前記キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、
を有するECC制御装置を備えることを特徴とする情報処理装置。
【請求項2】
前記ECC処理部は、前記キャッシュメモリから前記バッファーメモリに前記データが転送される場合に、前記データを訂正するためのECCを生成することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記バッファーメモリと前記キャッシュメモリとの間のデータ転送は、固定されたデータ単位で行われ、
前記キャッシュメモリと前記プロセッサとの間のデータ転送は、可変するデータ単位で行われることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記キャッシュメモリは、データのヒット判定を行うと共に、当該データに対応するECCのヒット判定を行う機能を有することを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記キャッシュメモリは、データのアドレス情報を、当該データに対応するECCのアドレス情報に変換するアドレス変換部を有することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記キャッシュメモリは、当該キャッシュメモリに格納された前記データまたは前記ECCが、前記バッファーメモリに格納された前記データまたは前記ECCと同一であるか否かを判定する機能を有することを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記ECC制御装置は、外部から前記バッファーメモリにデータが転送される場合に、転送される当該データを訂正するためのECCを生成し、生成されたECCを前記バッファーメモリに転送する第2のECC処理部を備えることを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記第2のECC処理部は、前記バッファーメモリから外部にデータが転送される場合に、転送される当該データを前記ECCを用いて訂正することを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記ECC制御装置は、ハードディスクコントローラであることを特徴とする請求項1に記載の情報処理装置。
【請求項10】
データおよび当該データを訂正するためのECCを格納するバッファーメモリと、
前記バッファーメモリから転送される前記データおよび前記ECCを取り込んで、前記データおよび前記ECCを格納するキャッシュメモリと、
前記バッファーメモリから前記キャッシュメモリに前記データおよび前記ECCが転送される場合に、前記データを前記ECCを用いて訂正するECC処理部と、
前記キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、
を備えることを特徴とするECC制御装置。
【請求項11】
バッファーメモリ、キャッシュメモリおよびプロセッサを備える装置におけるECC制御方法であって、
前記バッファーメモリから前記キャッシュメモリに、データおよび当該データを訂正するためのECCを転送する際に、前記データを前記ECCを用いて訂正するECC処理ステップと、
前記ECCを用いて訂正された前記データを前記キャッシュメモリに格納するデータ格納ステップと、
を含むECC制御方法。
【請求項1】
データおよび当該データを訂正するためのECCを格納するバッファーメモリと、
前記バッファーメモリから転送される前記データおよび前記ECCを取り込んで、前記データおよび前記ECCを格納するキャッシュメモリと、
前記バッファーメモリから前記キャッシュメモリに前記データおよび前記ECCが転送される場合に、前記データを前記ECCを用いて訂正するECC処理部と、
前記キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、
を有するECC制御装置を備えることを特徴とする情報処理装置。
【請求項2】
前記ECC処理部は、前記キャッシュメモリから前記バッファーメモリに前記データが転送される場合に、前記データを訂正するためのECCを生成することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記バッファーメモリと前記キャッシュメモリとの間のデータ転送は、固定されたデータ単位で行われ、
前記キャッシュメモリと前記プロセッサとの間のデータ転送は、可変するデータ単位で行われることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記キャッシュメモリは、データのヒット判定を行うと共に、当該データに対応するECCのヒット判定を行う機能を有することを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記キャッシュメモリは、データのアドレス情報を、当該データに対応するECCのアドレス情報に変換するアドレス変換部を有することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記キャッシュメモリは、当該キャッシュメモリに格納された前記データまたは前記ECCが、前記バッファーメモリに格納された前記データまたは前記ECCと同一であるか否かを判定する機能を有することを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記ECC制御装置は、外部から前記バッファーメモリにデータが転送される場合に、転送される当該データを訂正するためのECCを生成し、生成されたECCを前記バッファーメモリに転送する第2のECC処理部を備えることを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記第2のECC処理部は、前記バッファーメモリから外部にデータが転送される場合に、転送される当該データを前記ECCを用いて訂正することを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記ECC制御装置は、ハードディスクコントローラであることを特徴とする請求項1に記載の情報処理装置。
【請求項10】
データおよび当該データを訂正するためのECCを格納するバッファーメモリと、
前記バッファーメモリから転送される前記データおよび前記ECCを取り込んで、前記データおよび前記ECCを格納するキャッシュメモリと、
前記バッファーメモリから前記キャッシュメモリに前記データおよび前記ECCが転送される場合に、前記データを前記ECCを用いて訂正するECC処理部と、
前記キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、
を備えることを特徴とするECC制御装置。
【請求項11】
バッファーメモリ、キャッシュメモリおよびプロセッサを備える装置におけるECC制御方法であって、
前記バッファーメモリから前記キャッシュメモリに、データおよび当該データを訂正するためのECCを転送する際に、前記データを前記ECCを用いて訂正するECC処理ステップと、
前記ECCを用いて訂正された前記データを前記キャッシュメモリに格納するデータ格納ステップと、
を含むECC制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2008−158779(P2008−158779A)
【公開日】平成20年7月10日(2008.7.10)
【国際特許分類】
【出願番号】特願2006−346292(P2006−346292)
【出願日】平成18年12月22日(2006.12.22)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成20年7月10日(2008.7.10)
【国際特許分類】
【出願日】平成18年12月22日(2006.12.22)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]