(57)【要約】【課題】バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なＥＣＣ制御を行う。【解決手段】情報処理装置１は、データおよび当該データを訂正するためのＥＣＣを格納するバッファーメモリ５と、バッファーメモリから転送されるデータおよびＥＣＣを取り込んで、データおよびＥＣＣを格納するキャッシュメモリ２０と、バッファーメモリからキャッシュメモリにデータおよびＥＣＣが転送される場合に、データをＥＣＣを用いて訂正するＥＣＣ処理部２８と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサ１２と、を有するＥＣＣ制御装置１０を備える。【選択図】図１
2008158779.tif 000002
【特許請求の範囲】
【請求項１】
データおよび当該データを訂正するためのＥＣＣを格納するバッファーメモリと、
前記バッファーメモリから転送される前記データおよび前記ＥＣＣを取り込んで、前記データおよび前記ＥＣＣを格納するキャッシュメモリと、
前記バッファーメモリから前記キャッシュメモリに前記データおよび前記ＥＣＣが転送される場合に、前記データを前記ＥＣＣを用いて訂正するＥＣＣ処理部と、
前記キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、
を有するＥＣＣ制御装置を備えることを特徴とする情報処理装置。
【請求項２】
前記ＥＣＣ処理部は、前記キャッシュメモリから前記バッファーメモリに前記データが転送される場合に、前記データを訂正するためのＥＣＣを生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記バッファーメモリと前記キャッシュメモリとの間のデータ転送は、固定されたデータ単位で行われ、
前記キャッシュメモリと前記プロセッサとの間のデータ転送は、可変するデータ単位で行われることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記キャッシュメモリは、データのヒット判定を行うと共に、当該データに対応するＥＣＣのヒット判定を行う機能を有することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記キャッシュメモリは、データのアドレス情報を、当該データに対応するＥＣＣのアドレス情報に変換するアドレス変換部を有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記キャッシュメモリは、当該キャッシュメモリに格納された前記データまたは前記ＥＣＣが、前記バッファーメモリに格納された前記データまたは前記ＥＣＣと同一であるか否かを判定する機能を有することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記ＥＣＣ制御装置は、外部から前記バッファーメモリにデータが転送される場合に、転送される当該データを訂正するためのＥＣＣを生成し、生成されたＥＣＣを前記バッファーメモリに転送する第２のＥＣＣ処理部を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記第２のＥＣＣ処理部は、前記バッファーメモリから外部にデータが転送される場合に、転送される当該データを前記ＥＣＣを用いて訂正することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記ＥＣＣ制御装置は、ハードディスクコントローラであることを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
データおよび当該データを訂正するためのＥＣＣを格納するバッファーメモリと、
前記バッファーメモリから転送される前記データおよび前記ＥＣＣを取り込んで、前記データおよび前記ＥＣＣを格納するキャッシュメモリと、
前記バッファーメモリから前記キャッシュメモリに前記データおよび前記ＥＣＣが転送される場合に、前記データを前記ＥＣＣを用いて訂正するＥＣＣ処理部と、
前記キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、
を備えることを特徴とするＥＣＣ制御装置。
【請求項１１】
バッファーメモリ、キャッシュメモリおよびプロセッサを備える装置におけるＥＣＣ制御方法であって、
前記バッファーメモリから前記キャッシュメモリに、データおよび当該データを訂正するためのＥＣＣを転送する際に、前記データを前記ＥＣＣを用いて訂正するＥＣＣ処理ステップと、
前記ＥＣＣを用いて訂正された前記データを前記キャッシュメモリに格納するデータ格納ステップと、
を含むＥＣＣ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファーメモリに記憶されたデータのＥＣＣ処理を行う情報処理装置、ＥＣＣ制御装置およびＥＣＣ制御方法に関する。
【背景技術】
【０００２】
現在、例えばハードディスク制御用のＬＳＩ（Large Scale Integration）などの情報処理装置には、ＤＲＡＭ（DynamicRandom Access Memory）であるバッファーメモリが設けられており、データを一時的に格納するために利用されている。この情報処理装置において、バッファーメモリの不良が発生して、バッファーメモリの記憶回路の一部が正常に機能しない場合がある。このようなバッファーメモリの不良に対処するための一般的な技術として、ハードディスク制御用のＬＳＩに、バッファーメモリ用のＥＣＣ（ErrorCorrecting Code）機能が設けられている。
【０００３】
情報処理装置のバッファーメモリには、主に、ファイルデータなどのユーザーデータが格納されており、そのユーザーデータは基本的にセクタ（例えば５１２バイト）単位でアクセスされる。したがって、セクタ中の最大ビットのエラー訂正を行う場合、それに応じたビットのＥＣＣを追加する必要がある。セクタ単位でリードする時にＥＣＣも同時にリードすることで、最大ビットまでのエラー訂正が可能となる。
【０００４】
しかしながら、情報処理装置のバッファーメモリには、ユーザーデータ以外に、ファームウェア制御用コードやデータ、情報処理装置を出荷する前の検査時に実行するヒートランプログラムなどのシステムデータが格納される場合もある。その場合、バッファーメモリは短いビット単位（例えば６４/３２/１６/８ビット単位）でアクセス(リード/ライト)される。この場合、上記のセクタ単位のＥＣＣを用いてのエラー訂正をすることができない。
【０００５】
バッファーメモリに短いビット単位でアクセスする場合を考慮して、８ビットのデータ単位でＥＣＣを追加すると、８ビットのデータに対して３ビットのＥＣＣが必要とされるため、ＥＣＣのデータ量が飛躍的に増大する。よって、メモリ実効使用可能領域が下がり、メモリ実効アクセス速度も落ちてしまうため、この方法は現実的ではない。
【０００６】
なお、従来文献（特許文献１）には、バッファーメモリを有し、ＥＣＣ処理を行う情報処理装置の一例が示されている。
【特許文献１】特開平５‐８８９８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したように、バッファーメモリにセクタ単位でアクセスすることを考慮してセクタ単位でＥＣＣを生成すると、バッファーメモリの使用効率およびアクセス速度を向上させることができるが、バッファーメモリに短いビット単位でアクセスする場合にエラー訂正処理を行うことができない。一方、バッファーメモリに短いビット単位でアクセスすることを考慮して短いビット単位でＥＣＣを生成すると、ＥＣＣのデータ量が増大して、バッファーメモリの使用効率およびアクセス速度が低下してしまう。
【０００８】
本発明は、上記の課題を解決するためになされたもので、バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なＥＣＣ制御を行うことが可能な情報処理装置、ＥＣＣ制御装置およびＥＣＣ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した目的を達成するために、本発明の情報処理装置は、データおよび当該データを訂正するためのＥＣＣを格納するバッファーメモリと、バッファーメモリから転送されるデータおよびＥＣＣを取り込んで、データおよびＥＣＣを格納するキャッシュメモリと、バッファーメモリからキャッシュメモリにデータおよびＥＣＣが転送される場合に、データをＥＣＣを用いて訂正するＥＣＣ処理部と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、を有するＥＣＣ制御装置を備えることを特徴とする。
【００１０】
また、本発明のＥＣＣ制御装置は、データおよび当該データを訂正するためのＥＣＣを格納するバッファーメモリと、バッファーメモリから転送されるデータおよびＥＣＣを取り込んで、データおよびＥＣＣを格納するキャッシュメモリと、バッファーメモリからキャッシュメモリにデータおよびＥＣＣが転送される場合に、データをＥＣＣを用いて訂正するＥＣＣ処理部と、キャッシュメモリに格納されたデータを利用して処理を行うプロセッサと、を備えることを特徴とする。
【００１１】
また、本発明のＥＣＣ制御方法は、バッファーメモリ、キャッシュメモリおよびプロセッサとを備える装置におけるＥＣＣ制御方法であって、バッファーメモリからキャッシュメモリに、データおよび当該データを訂正するためのＥＣＣを転送する際に、データをＥＣＣを用いて訂正するＥＣＣ処理ステップと、ＥＣＣを用いて訂正されたデータをキャッシュメモリに格納するデータ格納ステップと、を含むＥＣＣ制御方法である。
【発明の効果】
【００１２】
本発明によれば、バッファーメモリの使用効率およびアクセス速度を出来るだけ落とさずに、最適なＥＣＣ制御を行うことが可能な情報処理装置、ＥＣＣ制御装置およびＥＣＣ制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して、本発明の好適な実施形態について詳細に説明する。なお、説明において、同一要素又は同一機能を有する要素には、同一符号を用いることとし、重複する説明は省略する。
【００１４】
図１は、本実施形態に係る情報処理装置１を示すブロック図である。情報処理装置１は、情報処理装置１自体を示すホスト３と、データを一時的に格納するバッファーメモリ５と、磁気を利用したディスク状の記憶媒体であるハードディスク７と、ハードディスク７に関する制御を行うハードディスクコントローラ１０と、を備えている。なお、情報処理装置１としては、例えば、ハードディスク７を記憶媒体として有するコンピュータ装置や、放送波を受信して得られる音声映像データをハードディスク７に記録する録画再生装置などである。
【００１５】
バッファーメモリ５は、ハードディスクコントローラ１０により処理されるデータを一時的に格納するために用いられる記憶媒体であり、ＤＲＡＭ（Dynamic Random Access Memory）により構成されている。図２に示されるように、バッファーメモリ５には、ユーザにより利用されるユーザデータ（例えば、ファイルデータや音声映像データなど）を格納するためのユーザデータ領域と、ユーザデータ訂正用のＥＣＣ（ErrorCorrecting Code：誤り訂正符号）を格納するためのＥＣＣ領域１と、システムデータ（例えば、ファームウェア制御用のコードおよびデータや、出荷前検査用のヒートランプログラムなど）を格納するためのシステムデータ領域と、システムデータ訂正用のＥＣＣを格納するためのＥＣＣ領域２と、が設けられている。
【００１６】
ここで、バッファーメモリ５は、ユーザデータ領域、ＥＣＣ領域１、システムデータ領域およびＥＣＣ領域２の各々の記憶容量を任意に調節可能となっている。例えば、バッファーメモリ５は、ユーザデータを多く格納する必要がある場合には、ユーザデータ領域の記憶容量を増やして、他の領域の記憶容量を減らす。また例えば、バッファーメモリ５は、システムデータを多く格納する必要がある場合には、システムデータ領域の記憶容量を増やして、他の領域の記憶容量を減らす。なお、バッファーメモリ５のＥＣＣ領域１，２には、８ｂｉｔの空きｂｉｔを挿入することなく、複数のＥＣＣを連続して書き込むことができる。
【００１７】
ハードディスクコントローラ１０は、主要な構成として、ハードディスクコントローラ１０を統括的に制御するプロセッサであるＣＰＵ（Central Processing Unit）１２と、ホスト３とのコマンドやデータなどの受け渡しを制御するホスト制御部１４と、バッファーメモリ５とのデータやＥＣＣなどの受け渡しを制御するメモリ制御部１６と、ハードディスク７に対するデータの書き込みおよび読み出しを制御するディスク制御部１８と、を備えている。なお、ハードディスクコントローラ１０は、特許請求の範囲におけるＥＣＣ制御装置に相当する。
【００１８】
ハードディスクコントローラ１０は、ＣＰＵ１２とメモリ制御部１６との間に、キャッシュメモリ（ＳＲＡＭ：Static Random Access Memory）２０と、ＥＣＣ処理部２８と、を備えている。また、ハードディスクコントローラ１０は、ホスト制御部１４とメモリ制御部１６との間に、別のキャッシュメモリ（ＳＲＡＭ）３０と、別のＥＣＣ処理部３８と、を備えている。また、ハードディスクコントローラ１０は、ディスク制御部１８とメモリ制御部１６との間に、さらに別のキャッシュメモリ（ＳＲＡＭ）４０と、さらに別のＥＣＣ処理部４８とを備えている。
【００１９】
キャッシュメモリ２０は、バッファーメモリ５に格納されたデータやＥＣＣなどの一部を一時的に格納するために用いられる記憶媒体であり、ＳＲＡＭ（Static Random Access Memory）により構成されている。キャッシュメモリ２０は、ユーザデータおよびシステムデータを格納するためのデータ記憶領域２２と、データ記憶領域２２に格納されたユーザデータおよびシステムデータを訂正するためのＥＣＣを格納するためのＥＣＣ記憶領域２４と、を有する。
【００２０】
キャッシュメモリ２０は、バッファーメモリ５に格納されたデータおよびＥＣＣのうち、ＣＰＵ１２により頻繁に利用されるデータおよびＥＣＣの一部を格納し、格納されたデータおよびＥＣＣの一部をＣＰＵ１２に利用可能に提供する。ＣＰＵ１２は、キャッシュメモリ２０のシステムデータを、６４ｂｉｔ、３２ｂｉｔ、１６ｂｉｔ、８ビットなどの可変のデータ単位でリードまたはライトすることが可能である。一方、バッファーメモリ５とキャッシュメモリ２０との間では、キャッシュメモリ２０の１ラインが２５６ｂｉｔであるため、２５６ｂｉｔという固定されたデータ単位でデータおよびＥＣＣが受け渡しされる。なお、２５６ｂｉｔのデータをエラー訂正するためには、少なくとも１０ｂｉｔのＥＣＣが必要となる。
【００２１】
キャッシュメモリ２０に格納されたデータがＣＰＵ１２により書き換えられた場合には、バッファーメモリ５に格納されたデータは最新のデータではなくなるため（ダーティ状態）、バッファーメモリ５に格納されたデータを更新する必要が生じる。よって、適切なタイミングで、キャッシュメモリ２０からバッファーメモリ５に最新のデータが転送されて、バッファーメモリ５のデータが更新される。このようなキャッシュメモリ２０の機能は、コピーバック機能またはライトバック機能と呼ばれる。
【００２２】
キャッシュメモリ２０は、データ記憶領域２２に格納されたデータおよびＥＣＣのバッファーメモリ５におけるアドレスを指示するポインタを保持しており、このポインタを用いてキャッシュヒットまたはキャッシュミスヒットを判定している。すなわち、キャッシュメモリ２０は、ＣＰＵ１２からリード対象のデータのポインタ指定を受けた場合に、そのポインタを保持していればリード対象のデータはキャッシュメモリ２０に有るため、リード対象のデータについてキャッシュヒットを判定する。一方、キャッシュメモリ２０は、そのポインタを保持していなければリード対象のデータはキャッシュメモリ２０に無いため、リード対象のデータについてキャッシュミスヒットを判定する。
【００２３】
また、キャッシュメモリ２０は、リード対象のデータのポインタに基づいて、そのデータに対応するＥＣＣのバッファーメモリ５におけるアドレスを指示するポインタに変換するアドレス変換部２６を有しており、このアドレス変換部２６を利用してキャッシュヒットまたはキャッシュミスヒットを判定している。すなわち、キャッシュメモリ２０は、ＣＰＵ１２からリード対象のデータのポインタ指定を受けた場合に、アドレス変換部２６によりＥＣＣのポインタに変換し、そのＥＣＣのポインタを保持していればＥＣＣはキャッシュメモリ２０に有るため、ＥＣＣについてキャッシュヒットを判定する。一方、キャッシュメモリ２０は、そのＥＣＣのポインタを保持していなければＥＣＣはキャッシュメモリ２０に無いため、ＥＣＣについてキャッシュミスヒットを判定する。なお、アドレス変換部は、データのポインタを変数としてＥＣＣのポインタを算出可能なアドレス変換関数を利用するものでもよいし、データのポインタにＥＣＣのポインタが対応付けられたアドレス変換テーブルを利用するものでもよい。
【００２４】
また、キャッシュメモリ２０は、バッファーメモリ５から読み出されたデータおよびＥＣＣが更新されたか否かを判定する更新判定機能を有している。キャッシュメモリ２０に格納されているデータおよびＥＣＣが更新されている場合には、バッファーメモリ５のデータおよびＥＣＣは最新ではないため、キャッシュメモリ２０のデータおよびＥＣＣをバッファーメモリ５に転送して、バッファーメモリ５のデータおよびＥＣＣを更新する必要がある。なお、キャッシュメモリ２０のデータおよびＥＣＣが更新されておらず、バッファーメモリ５に格納されたデータおよびＥＣＣが最新である状態を、「クリーン（clean）」という。一方、キャッシュメモリ２０のデータおよびＥＣＣが更新されており、バッファーメモリ５に格納されたデータおよびＥＣＣが最新ではない状態を、「ダーティ（dirty）」という。
【００２５】
なお、キャッシュメモリ２０は、ＣＰＵ１２による書き換え処理が複数回行われた後に、データおよびＥＣＣをバッファーメモリ５に転送する。このため、キャッシュメモリ２０とバッファーメモリ５との間のデータ転送の冗長性やオーバーヘッドを低減させて、転送効率を向上させることができる。またＣＰＵ１２による書き換え処理ごとにバッファーメモリ５が受信処理を行うことがないため、バッファーメモリ５に別の処理を行わせることができる。
【００２６】
ＥＣＣ処理部２８は、キャッシュメモリ２０とバッファーメモリ５との間でデータが転送されるときに、転送されるデータを訂正するためのＥＣＣを生成する機能を有する。また、ＥＣＣ処理部２８は、キャッシュメモリ２０とバッファーメモリ５との間でデータが転送されるときに、転送されるデータをＥＣＣを用いてエラー訂正する機能を有する。
【００２７】
ホスト制御部１４とメモリ制御部１６との間に設けられたキャッシュメモリ（ＳＲＡＭ）３０およびＥＣＣ処理部３８は、上述したキャッシュメモリ２０およびＥＣＣ処理部２８と類似する処理を行う。すなわち、ホスト３からバッファーメモリ５にデータが転送されるときには、ＥＣＣ処理部３８は、バッファーメモリ５の不良に対処するために、転送されるデータをエラー訂正するためのＥＣＣを生成し、データとともにＥＣＣをバッファーメモリ５に格納する。なお、ホスト制御部１４とメモリ制御部１６との間では、５１２ｂｉｔという固定されたデータ単位でデータが転送されており、ＥＣＣ処理部３８は５１２ｂｉｔのデータをエラー訂正するために少なくとも１３ｂｉｔのＥＣＣを生成する。
【００２８】
一方、バッファーメモリ５からホスト３にデータが転送されるときには、ＥＣＣ処理部３８は、バッファーメモリ５からＥＣＣを読み出して、ＥＣＣを用いてバッファーメモリ５の不良に起因するエラーを検出し訂正する。なお、キャッシュメモリ３０は、少なくとも２セクタ（５１２ｂｉｔ×２）分の記憶領域をもつ記憶媒体であり、ＥＣＣ処理部３８によるＥＣＣ生成処理およびエラー訂正処理のための一時的な記憶領域として利用される。
【００２９】
ディスク制御部１８とメモリ制御部１６との間に設けられたキャッシュメモリ（ＳＲＡＭ）４０およびＥＣＣ処理部４８は、上述したキャッシュメモリ２０およびＥＣＣ処理部２８と類似する処理を行う。すなわち、ハードディスク７からバッファーメモリ５にデータが転送されるときには、ＥＣＣ処理部４８は、バッファーメモリ５の不良に対処するために、転送されるデータをエラー訂正するためのＥＣＣを生成し、データとともにＥＣＣをバッファーメモリ５に格納する。なお、ディスク制御部１８とメモリ制御部１６との間では、５１２ｂｉｔという固定されたデータ単位でデータが転送されており、ＥＣＣ処理部４８は５１２ｂｉｔのデータをエラー訂正するために少なくとも１３ｂｉｔのＥＣＣを生成する。
【００３０】
一方、バッファーメモリ５からハードディスク７にデータが転送されるときには、ＥＣＣ処理部４８は、バッファーメモリ５からＥＣＣを読み出して、ＥＣＣを用いてバッファーメモリ５の不良に起因するエラーを検出し訂正する。なお、キャッシュメモリ４０は、少なくとも２セクタ（５１２ｂｉｔ×２）分の記憶領域をもつ記憶媒体であり、ＥＣＣ処理部４８によるＥＣＣ生成処理およびエラー訂正処理のための一時的な記憶領域として利用される。
【００３１】
図３は、キャッシュメモリ２０のデータ格納状況を場合分けして示す一覧表である。キャッシュメモリ２０は、ＣＰＵ１２からデータリードまたはデータライトの要求があった場合に、データのヒット判定を行うとともに、そのデータについてエラー訂正を行うためのＥＣＣのヒット判定を行う。また、キャッシュメモリ２０は、データおよびＥＣＣのヒット判定を行うとともに、キャッシュメモリ２０に格納されたデータおよびＥＣＣが、バッファーメモリ５に格納されたデータおよびＥＣＣと同一（ｃｌｅａｎ）であるか、または相違（ｄｉｒｔｙ）であるかの判定を行う。そして、キャッシュメモリ２０は、データ格納状況に応じた処理を行う。
【００３２】
以降に説明する状況１〜状況７の処理は、ＣＰＵ１２によるデータリード時の処理である。
【００３３】
（状況１）
状況１は、ＣＰＵ１２によるデータリードにおいて、キャッシュメモリ２０のデータ用記憶領域においてリード対象のデータがヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがヒットした場合である。図４は、状況１におけるハードディスクコントローラ１０の処理を示すフローチャートである。状況１では、ＣＰＵ１２は、キャッシュメモリ２０に格納されたユーザデータまたはシステムデータを読み出し可能であるため、キャッシュメモリ２０からユーザデータまたはシステムデータを読み出す（Ｓ４０１）。
【００３４】
（状況２）
状況２は、ＣＰＵ１２によるデータリードにおいて、キャッシュメモリ２０のデータ用記憶領域においてリード対象のデータがヒットしたが、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合である。図４は、状況２におけるハードディスクコントローラ１０の処理も示している。状況２では、ＣＰＵ１２は、キャッシュメモリ２０に格納されたユーザデータまたはシステムデータを読み出し可能であるため、キャッシュメモリ２０からユーザデータまたはシステムデータを読み出す（Ｓ４０１）。
【００３５】
（状況３）
状況３は、ＣＰＵ１２によるデータリードにおいて、キャッシュメモリ２０のデータ用記憶領域においてリード対象のデータがミスヒットしたが、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがクリーンである場合である。図５は、状況３におけるハードディスクコントローラ１０の処理を示すフローチャートである。
バッファーメモリ５からキャッシュメモリ２０にリード対象のデータが転送される（Ｓ５０１）。このデータ転送の際に、ＥＣＣ処理部２８は、キャッシュ内のＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ５０２）。ＣＰＵ１２は、キャッシュメモリ２０からリード対象のユーザデータまたはシステムデータを読み出す（Ｓ５０２）。
【００３６】
（状況４）
状況４は、ＣＰＵ１２によるデータリードにおいて、キャッシュメモリ２０のデータ用記憶領域においてリード対象のデータがミスヒットしたが、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがダーティである場合である。図６は、状況４におけるハードディスクコントローラ１０の処理を示すフローチャートである。
キャッシュメモリ２０からバッファーメモリ５にリプレイス対象のデータが転送される（Ｓ６０１）。ＥＣＣ処理部２８は、転送されるデータをエラー訂正するためのＥＣＣを生成し、生成されたＥＣＣをキャッシュメモリ２０に書き込む（Ｓ６０２）。バッファーメモリ５からキャッシュメモリ２０にリード対象のデータが転送される（Ｓ６０３）。ＥＣＣ処理部２８は、キャッシュメモリ２０のＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ６０４）。ＣＰＵ１２は、キャッシュメモリ２０からリード対象のユーザデータまたはシステムデータを読み出す（Ｓ６０５）。
【００３７】
（状況５）
状況５は、ＣＰＵ１２によるデータリードにおいて、キャッシュメモリ２０のデータ用記憶領域においてリード対象のデータがミスヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータおよびＥＣＣがクリーンである場合である。図７は、状況５におけるハードディスクコントローラ１０の処理を示すフローチャートである。
バッファーメモリ５からキャッシュメモリ２０にリード対象のデータおよびそのＥＣＣを転送する（Ｓ７０１）。ＥＣＣ処理部２８は、転送されるＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ７０２）。ＣＰＵ１２は、キャッシュメモリ２０からリード対象のユーザデータまたはシステムデータを読み出す（Ｓ７０３）。
【００３８】
（状況６）
状況６は、ＣＰＵ１２によるデータリードにおいて、キャッシュメモリ２０のデータ用記憶領域においてリード対象のデータがミスヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがクリーンであり、ＥＣＣがダーティである場合である。図８は、状況６におけるハードディスクコントローラ１０の処理を示すフローチャートである。
キャッシュメモリ２０からバッファーメモリ５にリプレイス対象のＥＣＣが転送される（Ｓ８０１）。バッファーメモリ５からキャッシュメモリ２０にリード対象のデータおよびそのＥＣＣが転送される（Ｓ８０２）。ＥＣＣ処理部２８は、転送されるＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ８０３）。ＣＰＵ１２は、キャッシュメモリ２０からリード対象のユーザデータまたはシステムデータを読み出す（Ｓ８０４）。
【００３９】
（状況７）
状況７は、ＣＰＵ１２によるデータリードにおいて、キャッシュメモリ２０のデータ用記憶領域においてリード対象のデータがミスヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがダーティである場合である。図９は、状況７におけるハードディスクコントローラ１０の処理を示すフローチャートである。
キャッシュメモリ２０からバッファーメモリ５にリプレイス対象のデータが転送される（Ｓ９０１）。ＥＣＣ処理部２８は、転送されるデータをエラー訂正するためのＥＣＣを生成し、バッファーメモリ５に転送する（Ｓ９０２）。バッファーメモリ５からキャッシュメモリ２０にリード対象のデータおよびそのＥＣＣが転送される（Ｓ９０３）。ＥＣＣ処理部２８は、転送されるＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ９０４）。ＣＰＵ１２は、キャッシュメモリ２０からリード対象のユーザデータまたはシステムデータを読み出す（Ｓ９０５）。
【００４０】
以降に説明する状況８〜状況１４の処理は、ＣＰＵ１２によるデータライト時の処理である。
【００４１】
（状況８）
状況８は、ＣＰＵ１２によるデータライトにおいて、キャッシュメモリ２０のデータ用記憶領域においてライト対象のデータがヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがヒットした場合である。図１０は、状況８におけるハードディスクコントローラ１０の処理を示すフローチャートである。状況８では、ＣＰＵ１２は、ライトデータをキャッシュに書き込む（Ｓ１００１）。
【００４２】
（状況９）
状況９は、ＣＰＵ１２によるデータライトにおいて、キャッシュメモリ２０のデータ用記憶領域においてライト対象のデータがヒットしたが、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合である。図１０は、状況９におけるハードディスクコントローラ１０の処理も示している。状況９では、ＣＰＵ１２は、ライトデータをキャッシュに書き込む（Ｓ１００１）。
【００４３】
（状況１０）
状況１０は、ＣＰＵ１２によるデータライトにおいて、キャッシュメモリ２０のデータ用記憶領域においてライト対象のデータがミスヒットしたが、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがクリーンである場合である。図１１は、状況１０におけるハードディスクコントローラ１０の処理を示すフローチャートである。
バッファーメモリ５からキャッシュメモリ２０にライト対象のデータが転送される（Ｓ１１０１）。ＥＣＣ処理部２８は、キャッシュメモリのＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ１１０２）。ＣＰＵ１２からのライトデータがキャッシュに書き込まれる（Ｓ１１０３）。
【００４４】
（状況１１）
状況１１は、ＣＰＵ１２によるデータライトにおいて、キャッシュメモリ２０のデータ用記憶領域においてライト対象のデータがミスヒットしたが、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがダーティである場合である。図１２は、状況１１におけるハードディスクコントローラ１０の処理を示すフローチャートである。
キャッシュメモリ２０からバッファーメモリ５にリプレイス対象のデータが転送される（Ｓ１２０１）。ＥＣＣ処理部２８は、転送されるデータをエラー訂正するためのＥＣＣを生成し、キャッシュメモリ２０に書き込む（Ｓ１２０２）。バッファーメモリ５からキャッシュメモリ２０にライト対象のデータが転送される（Ｓ１２０３）。ＥＣＣ処理部２８は、キャッシュメモリ２０のＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ１２０４）。ＣＰＵ１２からのライトデータがキャッシュに書き込まれる（Ｓ１２０５）。
【００４５】
（状況１２）
状況１２は、ＣＰＵ１２によるデータライトにおいて、キャッシュメモリ２０のデータ用記憶領域においてライト対象のデータがミスヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがクリーンであり、そのデータに対応するＥＣＣがクリーンである場合である。図１３は、状況１２におけるハードディスクコントローラ１０の処理を示すフローチャートである。
バッファーメモリ５からキャッシュメモリ２０にライト対象のデータおよびそのＥＣＣが転送される（Ｓ１３０１）。ＥＣＣ処理部２８は、転送されるＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ１３０２）。ＣＰＵ１２からのライトデータがキャッシュに書き込まれる（Ｓ１３０３）。
【００４６】
（状況１３）
状況１３は、ＣＰＵ１２によるデータライトにおいて、キャッシュメモリ２０のデータ用記憶領域においてライト対象のデータがミスヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがクリーンであり、そのデータに対応するＥＣＣがダーティである場合である。図１４は、状況１３におけるハードディスクコントローラ１０の処理を示すフローチャートである。
キャッシュメモリ２０からバッファーメモリ５にリプレイス対象のＥＣＣが転送される（Ｓ１４０１）。バッファーメモリ５からキャッシュメモリ２０にライト対象のデータおよびそのＥＣＣが転送される（Ｓ１４０２）。ＥＣＣ処理部２８は、転送されるＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ１４０３）。ＣＰＵ１２からのライトデータがキャッシュに書き込まれる（Ｓ１４０４）。
【００４７】
（状況１４）
状況１４は、ＣＰＵ１２によるデータライトにおいて、キャッシュメモリ２０のデータ用記憶領域においてライト対象のデータがミスヒットし、ＥＣＣ用記憶領域においてそのデータに対応するＥＣＣがミスヒットした場合であり、さらに、キャッシュメモリ２０においてリプレイス対象のデータがダーティである場合である。図１５は、状況１４におけるハードディスクコントローラ１０の処理を示すフローチャートである。
キャッシュメモリ２０からバッファーメモリ５にリプレイス対象のデータが転送される（Ｓ１５０１）。ＥＣＣ処理部２８は、転送されるデータをエラー訂正するためのＥＣＣを生成し、バッファーメモリ５に転送する（Ｓ１５０２）。バッファーメモリ５からキャッシュメモリ２０にライト対象のデータおよびそのＥＣＣが転送される（Ｓ１５０３）。ＥＣＣ処理部２８は、転送されるＥＣＣを用いて、転送されるデータのエラーを検出し訂正する（Ｓ１５０４）。ＣＰＵ１２からのライトデータがキャッシュに書き込まれる（Ｓ１５０５）。
【００４８】
本実施形態のハードディスクコントローラ１０によれば、バッファーメモリ５に書き込まれるユーザデータおよびシステムデータをエラー訂正するためにＥＣＣを生成するため、バッファーメモリ５に書き込まれたユーザデータおよびシステムデータのビットエラーをＥＣＣを用いて検出し訂正することができる。よって、バッファーメモリ５に不良メモリセルが存在しても、ＥＣＣを用いたエラー訂正処理によりバッファーメモリ５の不良を補償することで、バッファーメモリ５の不良メモリセルを原因とするハードディスクコントローラ１０の不良率を抑制することができる。
【００４９】
また、本実施形態のハードディスクコントローラ１０によれば、キャッシュメモリ２０およびＥＣＣ処理部２８が設けられているため、バッファーメモリ５の使用効率およびアクセス速度を出来るだけ落とさずに、最適なＥＣＣ制御を行うことができる。すなわち、バッファーメモリ５とキャッシュメモリ２０との間で、２５６ｂｉｔという固定されたデータ単位でデータが送受信されるため、２５６ｂｉｔのデータに対応してＥＣＣを１０ｂｉｔという小容量で済ませることができる。よって、バッファーメモリ５の使用可能領域（ＥＣＣを除く記憶領域）を増加させることができる。一方、ＣＰＵ１２は、キャッシュメモリ２０のシステムデータを、６４ｂｉｔ、３２ｂｉｔ、１６ｂｉｔ、８ビットなどの可変のデータ単位でリードまたはライトすることが可能であるため、ＣＰＵ１２は必要なデータだけをリードまたはライトすることができ、ＣＰＵ１２からのアクセス速度を向上することができる。
【００５０】
また、本実施形態では、バッファーメモリ５からキャッシュメモリ２０にデータが転送されるので、ＣＰＵ１２はデータリードおよびデータライトのためにキャッシュメモリ２０にアクセスする。よって、バッファーメモリ５とキャッシュメモリ２０との間でデータ転送が行われない場合には、バッファーメモリ５は他の処理を行うことができる。
【００５１】
また、ホスト３とバッファーメモリ５との間のデータ転送、および、ディスク制御部１８とバッファーメモリ５との間のデータ転送についても、上述したハードディスク７とバッファーメモリ５との間のデータ送受と同じことが言える。すなわち、バッファーメモリ５に不良メモリセルが存在しても、ユーザデータおよびシステムデータのエラー訂正をすることにより、バッファーメモリ５の不良メモリセルを原因とするハードディスクコントローラ１０の不良率を抑制することができる。そして、バッファーメモリ５の使用可能領域を増加させることができる。
【図面の簡単な説明】
【００５２】
【図１】本実施形態に係る情報処理装置を示すブロック図である。
【図２】バッファーメモリのデータ構成を示す図である。
【図３】キャッシュメモリのデータ格納状況を場合分けして示す一覧表である。
【図４】ＣＰＵのリード時の処理を示す第１のフローチャートである。
【図５】ＣＰＵのリード時の処理を示す第２のフローチャートである。
【図６】ＣＰＵのリード時の処理を示す第３のフローチャートである。
【図７】ＣＰＵのリード時の処理を示す第４のフローチャートである。
【図８】ＣＰＵのリード時の処理を示す第５のフローチャートである。
【図９】ＣＰＵのリード時の処理を示す第６のフローチャートである。
【図１０】ＣＰＵのライト時の処理を示す第１のフローチャートである。
【図１１】ＣＰＵのライト時の処理を示す第２のフローチャートである。
【図１２】ＣＰＵのライト時の処理を示す第３のフローチャートである。
【図１３】ＣＰＵのライト時の処理を示す第４のフローチャートである。
【図１４】ＣＰＵのライト時の処理を示す第５のフローチャートである。
【図１５】ＣＰＵのライト時の処理を示す第６のフローチャートである。
【符号の説明】
【００５３】
１…情報処理装置、３…ホスト、５…バッファーメモリ、７…ハードディスク、１０…ハードディスクコントローラ、１２…ＣＰＵ、１４…ホスト制御部、１６…メモリ制御部、１８…ディスク制御部、２０…キャッシュメモリ、２６…アドレス変換部、２８…ＥＣＣ処理部、３０…キャッシュメモリ、３８…ＥＣＣ処理部、４０…キャッシュメモリ、４８…ＥＣＣ処理部。
【図１】
2008158779.tif 000003
【図２】
2008158779.tif 000004
【図３】
2008158779.tif 000005
【図４】
2008158779.tif 000006
【図５】
2008158779.tif 000007
【図６】
2008158779.tif 000008
【図７】
2008158779.tif 000009
【図８】
2008158779.tif 000010
【図９】
2008158779.tif 000011
【図１０】
2008158779.tif 000012
【図１１】
2008158779.tif 000013
【図１２】
2008158779.tif 000014
【図１３】
2008158779.tif 000015
【図１４】
2008158779.tif 000016
【図１５】
2008158779.tif 000017