(57)【要約】【課題】ハードエラーの発生に対する効率的な対処を実現し、キャッシュ動作の性能の劣化を抑制できるキャッシュコントローラを提供することにある。【解決手段】実施形態によれば、キャッシュコントローラは、エラー検出訂正モジュールと、コントローラとを具備する。エラー検出訂正モジュールは、キャッシュメモリから読み出されたデータからエラーを検出し、当該エラーを訂正する。コントローラは、前記エラー検出訂正手段によるエラー訂正が不可能で前記エラーの種別がハードエラーの場合に、前記キャッシュメモリに対する電源遮断及び電源再投入の電源制御を実行する。【選択図】図１
2012190330.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリから読み出されたデータからエラーを検出し、当該エラーを訂正するエラー検出訂正手段と、
前記エラー検出訂正手段によるエラー訂正が不可能で前記エラーの種別がハードエラーの場合に、前記キャッシュメモリに対する電源遮断及び電源再投入の電源制御を実行する制御手段と
を具備するキャッシュコントローラ。
【請求項２】
前記制御手段は、
前記電源遮断の前に前記キャッシュメモリを封鎖し、
前記電源再投入後に前記キャッシュメモリを復帰する処理を実行するように構成されている請求項１に記載のキャッシュコントローラ。
【請求項３】
複数のキャッシュメモリを有し、前記各キャッシュメモリのそれぞれに独立して電源が供給される構成であり、
前記制御手段は、
前記エラー検出訂正手段によるエラー訂正が不可能で、前記エラーの種別がハードエラーであると特定されたキャッシュメモリに対する前記電源制御を実行するように構成されている請求項１又は請求項２のいずれか１項に記載のキャッシュコントローラ。
【請求項４】
前記制御手段は、
シングルイベントラッチアップ現象によるメモリ機能障害である前記ハードエラーを解消するために、前記電源制御を実行するように構成されている請求項１から請求項３のいずれか１項に記載のキャッシュコントローラ。
【請求項５】
前記エラー検出訂正手段によるエラー訂正が不可能な場合に、データ復元処理を実行する手段を含む請求項１から請求項４のいずれか１項に記載のキャッシュコントローラ。
【請求項６】
前記制御手段は、
マイクロプロセッサからのリード要求に応じたデータが前記キャッシュメモリに格納されているか否かを判定する手段を含み、
前記エラー検出訂正手段によるエラー訂正が不可能で前記エラーの種別がソフトエラーの場合には、前記マイクロプロセッサに通知するように構成されている請求項１から請求項５のいずれか１項に記載のキャッシュコントローラ。
【請求項７】
前記制御手段は、
前記電源再投入後の電源安定化時間の経過後に、前記キャッシュメモリを復帰する処理を実行するように構成されている請求項２に記載のキャッシュコントローラ。
【請求項８】
前記制御手段は、
前記エラー検出訂正手段によるエラー訂正が不可能で前記エラーの種別がハードエラーの場合に、当該キャッシュメモリを前記電源制御の対象として登録する手段を含む請求項１から請求項７のいずれか１項に記載のキャッシュコントローラ。
【請求項９】
前記制御手段は、
前記キャッシュメモリを前記電源制御の対象として登録したことをマイクロプロセッサに通知し、
前記マイクロプロセッサから要求に応じて前記電源制御を実行するように構成されている請求項８に記載のキャッシュコントローラ。
【請求項１０】
キャッシュメモリから読み出されたデータからエラーを検出し、
前記エラーを訂正し、
前記エラー訂正が不可能で前記エラーの種別がハードエラーの場合に、前記キャッシュメモリに対する電源遮断及び電源再投入の電源制御を実行するキャッシュ制御方法。
【請求項１１】
データを格納する記憶媒体と、
前記記憶媒体に対するリード要求のデータをキャッシュメモリから読み出すキャッシュコントローラとを有し、
前記キャッシュコントローラは、
前記キャッシュメモリから読み出されたデータからエラーを検出し、当該エラーを訂正するエラー検出訂正手段と、
前記エラー検出訂正手段によりエラー訂正が不可能で前記エラーの種別がハードエラーの場合に、前記キャッシュメモリに対する電源遮断及び電源再投入の電源制御を実行する制御手段と
を具備するデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュメモリを制御するキャッシュコントローラに関する。
【背景技術】
【０００２】
従来、例えばハードディスクドライブ（ＨＤＤ）などのデータ記憶装置には、メインの記憶デバイス（ＤＲＡＭやディスクなど）以外に、キャッシュ動作を行なうためのキャッシュメモリ及びキャッシュコントローラが設けられている。
【０００３】
キャッシュコントローラは、ライン単位でキャッシュメモリをアクセスする。ここで、あるキャッシュラインで読み出されたデータに、ＥＣＣによる訂正処理では訂正不能なエラーが発生した場合に、キャッシュコントローラは、発生したキャッシュラインにデータの再書き込みを実行する。ここで、キャッシュラインは、キャッシュメモリが扱うデータの格納単位を意味する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３５０４２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のキャッシュコントローラは、訂正不能なエラーが発生した場合に、データの再書き込みを実行する。そして、再書き込みしたデータを読み出したときに、再び訂正不能なエラーが発生した場合にはハードエラーが発生していると判断する。このハードエラーの発生に対して、当該キャッシュラインを封鎖して使用禁止とする場合がある。このため、キャッシュ動作の性能が劣化する可能性がある。
【０００６】
そこで、本発明の目的は、ハードエラーの発生に対するキャッシュ動作の性能の劣化を抑制できるキャッシュコントローラを提供することにある。
【課題を解決するための手段】
【０００７】
実施形態によれば、キャッシュコントローラは、エラー検出訂正手段と、制御手段とを具備する。エラー検出訂正手段は、キャッシュメモリから読み出されたデータからエラーを検出し、当該エラーを訂正する。制御手段は、前記エラー検出訂正手段によるエラー訂正が不可能で前記エラーの種別がハードエラーの場合に、前記キャッシュメモリに対する電源遮断及び電源再投入の電源制御を実行する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に関するキャッシュコントローラの構成を説明するためのブロック図。
【図２】実施形態に関するキャッシュコントローラを使用するハードディスクドライブの要部を説明するためのブロック図。
【図３】実施形態に関するキャッシュコントローラを使用するＳＳＤの要部を説明するためのブロック図。
【図４】実施形態に関するキャッシュコントローラの動作を説明するためのフローチャート。
【発明を実施するための形態】
【０００９】
以下図面を参照して、実施形態を説明する。
【００１０】
［キャッシュコントローラの構成］
図１は、本実施形態に関するキャッシュコントローラの構成を示すブロック図である。
【００１１】
図１に示すように、キャッシュコントローラ１０は、インターフェース（ＣＰＵ-I/F）１１と、シーケンサ１２と、キャッシュメモリ群１３と、エラー処理モジュール１４と、エントリデコーダ１５と、エラー検出用データ生成モジュール１６とを有する。
【００１２】
インターフェース１１は、バス２１を介して外部のマイクロプロセッサ（ＣＰＵ）２０との間でデータやコマンドの転送制御を行なう。ＣＰＵ２０は、後述するように、例えばＨＤＤやＳＳＤなどのデータ記憶装置に設けられており、ホストシステムとのデータの送受信を制御する。
【００１３】
シーケンサ１２は、キャッシュコントローラ１０のメインコントローラであり、例えばハードウェアのロジック及びレジスタ群から構成されている。キャッシュメモリ群１３は、複数（ここで３個）のキャッシュメモリ13-0〜13-2から構成され、それぞれのキャッシュメモリは複数のキャッシュラインから構成される。各キャッシュメモリ13-0〜13-2はそれぞれ、キャッシュデータを格納するキャッシュデータ領域１３１及びキャッシュタグを格納するキャッシュタグ領域１３２を含むグループ化された構成である。キャッシュデータ領域１３１は、例えばＳＲＡＭ（static random access memory）からなる。また、キャッシュタグ領域１３２は、例えばフリップフロップ（flip-flop）群からなる。
【００１４】
エラー処理モジュール１４は、ＥＣＣ（error checking and correcting）処理及びエラー解析処理を実行する。即ち、エラー処理モジュール１４は、キャッシュメモリ群１３から読み出されたデータのエラーを検出し、当該エラーの要因を解析し、かつエラーを訂正する機能を有する。エラー処理モジュール１４は解析機能により、エラーの要因としてソフトエラーまたはハードエラーのいずれかを判定する（後述する）。
【００１５】
エントリデコーダ１５は、ＣＰＵ２０からリード要求時に指定されたアドレスをデコードする。エラー検出用データ生成モジュール１６は、エラーを検出するためのエラー検出用データ（ＥＣＣデータ）を生成し、キャッシュメモリ１３に保存するキャッシュデータに付加する。さらに、キャッシュコントローラ１０は、メインメモリ３０との間でデータの転送を行うインターフェース（図示せず）を含む。メインメモリ３０は、ＤＲＡＭなどである。
【００１６】
ここで、本実施形態のキャッシュコントローラ１０は、電源コントローラ４０及びパワースイッチ42-0〜42-2を含む電源制御用モジュールに接続している。電源コントローラ４０は、シーケンサ１２からの指示に応じて、パワースイッチ42-0〜42-2の電源遮断を実行することで、キャッシュメモリ群１３の各キャッシュメモリ13-0〜13-2に対する電源４１から電源遮断と電源供給を制御する。即ち、各キャッシュメモリ13-0〜13-2はそれぞれ、分離された電源系統（パワースイッチ42-0〜42-2）から電源が供給され、または電源の供給が遮断される構成である。
【００１７】
［データ記憶装置］
図２は、ハードディスクドライブ（ＨＤＤ）の要部を示すブロック図である。ＨＤＤは、ドライブとホストシステム（例えばパーソナルコンピュータ）５０とのインターフェースを構成するディスクコントローラ（ＨＤＣ）２２を有する。本実施形態のキャッシュコントローラ１０及び電源制御用モジュールは、ディスクコントローラ２２のキャッシュモジュールとして適用可能である。
【００１８】
ＨＤＤは、図２に示すように、大別してヘッド・ディスクアセンブリ（head-disk assemblyＨＤＡ）、ヘッドアンプ集積回路（ヘッドアンプＩＣ）２５と、ディスクコントローラ２２を含むモジュール２４とから構成されている。モジュール２４は、ディスクコントローラ２２以外に、Ｒ／Ｗチャネル２３とＣＰＵ２０とを含む。
【００１９】
ＨＤＡは、磁気記録媒体であるディスク２９と、スピンドルモータ（ＳＰＭ）２８と、ヘッド２６を搭載しているアクチュエータ２７とを有する。ディスク２９は、スピンドルモータ２８に固定されて回転される。アクチュエータ２７は、ボイスコイルモータ（ＶＣＭ）の駆動により、ヘッド２６をディスク２９上の指定の位置まで移動制御する。ヘッド２６は、ディスク２９にデータを書き込むライトヘッド素子と、ディスク２９からデータを読み出すリードヘッド素子とを有する。
【００２０】
ヘッドアンプＩＣ２５は、リードヘッド素子により読み出されたデータ信号を増幅してリード／ライト（Ｒ／Ｗ）チャネル２３に伝送するリードアンプを有する。また、ヘッドアンプＩＣ２５は、Ｒ／Ｗチャネル２３から出力されるデータに応じたライト電流をライトヘッド素子に伝送する。
【００２１】
図３は、ＳＳＤ（solid state drive）の要部を示すブロック図である。ＳＳＤは、ドライブとホストシステム５０とのインターフェースを有し、データ記憶媒体であるフラッシュメモリ（flash memory）６１を制御するＳＳＤコントローラ６０を有する。本実施形態のキャッシュコントローラ１０及び電源制御用モジュールは、ＳＳＤコントローラ６０のキャッシュモジュールとして適用可能である。
【００２２】
［キャッシュコントローラの動作］
以下、図４のフローチャートを参照して、キャッシュコントローラ１０の動作を説明する。
【００２３】
まず、ＣＰＵ２０からリード要求（リードコマンドの発行）があると、シーケンサ１２は、キャッシュ動作を開始する（ブロック４００）。即ち、シーケンサ１２は、キャッシュタグ領域１３２に格納されているキャッシュタグをサーチし、キャッシュメモリ１３に該当するデータが存在するか否か（ヒットまたはミス）を確認する（ブロック４０１）。
【００２４】
シーケンサ１２は、キャッシュメモリ１３にデータが存在する場合(ヒット)には、キャッシュデータ領域１３１から該当するデータをリードする（ブロック４０２）。一方、キャッシュメモリ１３にデータが存在しない場合(ミス)には、シーケンサ１２は、メインメモリ３０からライン単位でデータを取得し、キャッシュメモリ１３に保存する（ブロック４０５）。
【００２５】
シーケンサ１２は、キャッシュタグ領域１３２のキャッシュタグの各情報（アドレス及びアクセス履歴及びキャッシュデータの有効性）を更新する。ライン単位のデータとは、該当するデータと共に、所定の範囲の先読みデータを含む。シーケンサ１２は、メインメモリ３０からキャッシュメモリ１３に保存した後に、該当するデータをキャッシュメモリ１３のキャッシュデータ領域１３１からリードする（ブロック４０２）。
【００２６】
エラー処理モジュール１４は、キャッシュデータ領域１３１からリードされたデータにエラーが存在するか否かを判定する（ブロック４０３）。エラーが未検出の場合には、シーケンサ１２は、当該リード要求のデータをインターフェース１１を介してＣＰＵ２０に転送する（ブロック４０３のＮＯ，４０４）。
【００２７】
一方、エラー処理モジュール１４は、リードされたデータからエラーを検出した場合には、データに付加されたＥＣＣデータを使用して訂正可能であるか否かを判定する（ブロック４０６）。なお、ＥＣＣデータは、所定の符号化方式によりエラー訂正符号データである。エラー処理モジュール１４は、訂正可能であれば、エラー訂正処理を実行する（ブロック４０７）。シーケンサ１２は、エラー訂正後のデータをインターフェース１１を介してＣＰＵ２０に転送する（ブロック４０４）。
【００２８】
エラー処理モジュール１４は、エラー訂正が不可能である場合に、既存のデータ復元方法によりデータ復元（データリカバリ）処理を実行する（ブロック４０６のＮＯ，４０８）。例えば、シーケンサ１２は、エラー処理モジュール１４からの訂正不能の通知に応じて、エラーが発生したキャッシュライン（リード要求を含むライン単位のデータ）を再度メインメモリ３０から取得し、リード要求のデータをＣＰＵ２０に転送する（ブロック４０９）。
【００２９】
エラー処理モジュール１４は、エラーの要因を解析し、ソフトエラーまたはハードエラーのいずれであるかのエラー種別を判定する（ブロック４１０）。この場合、エラー処理モジュール１４は、既存のエラー解析方法により、ソフトエラーとハードエラーのエラー種別を判定する。例えば、シーケンサ１２は、エラーが発生したキャッシュラインに対応するキャッシュデータ領域１３１に、メインメモリ３０から再度リードしたデータを書き込む。エラー処理モジュール１４は、そのキャッシュラインを読み出した時に期待値と異なる、若しくは同じエラーが再度発生する場合には、ハードエラーと判断する。一方、エラー処理モジュール１４は、期待値と一致若しくはエラーが発生しない場合にはソフトエラーと判断する。
【００３０】
シーケンサ１２は、エラー処理モジュール１４のエラー解析により、エラー種別がソフトエラーと判断した場合には、ＣＰＵ２０に通知して処理を終了する（ブロック４１１）。ここで、一般的にソフトエラーの場合には、ＣＰＵ２０は通知に応じて、リードリトライを実行することによりエラー回復が可能である。
【００３１】
また、エラー処理モジュール１４がハードエラーと判断した場合は、シーケンサ１２は、当該キャッシュメモリグループ（ここではキャッシュメモリ13-0とする）を、パワーダウン対象（電源制御対象）として内部レジスタに登録し、かつその登録をＣＰＵ２０に通知する（ブロック４１２）。
【００３２】
ここで、本実施形態のキャッシュコントローラ１０は、ＣＰＵ２０からハードエラーに対するリカバリ処理の要求がない場合は処理を終了する（ブロック４１３のＮＯ）。ＣＰＵ２０は、キャッシュコントローラ１０からのパワーダウン対象の登録通知に基づいて、ハードエラーに対するリカバリ処理が必要と判断した場合は、キャッシュメモリのパワーダウン処理を伴う無効（invalidate）要求を発行する（ブロック４１３のＹＥＳ）。ここで、リカバリ処理とは、ハードエラーが発生したキャッシュメモリ13-0を復帰させる処理である。
【００３３】
ＣＰＵ２０からの要求に応じて、シーケンサ１２は、対象とするキャッシュメモリグループ（キャッシュメモリ13-0）に対する封鎖処理を実行する（ブロック４１４）。これにより、シーケンサ１２は、該当するキャッシュメモリ13-0をキャッシュタグ及びキャッシュデータの格納対象から外す。
【００３４】
次に、シーケンサ１２は、電源コントローラ４０に対して、該当するキャッシュメモリ13-0に対する電源供給の遮断を指示する（ブロック４１５）。この指示に応じて、電源コントローラ４０は、パワースイッチ42-0の電源遮断を実行し、キャッシュメモリ13-0に対する電源供給を遮断する。
【００３５】
電源コントローラ４０は、電源遮断後の電源安定化の待ち時間を含む所定の時間経過後に、キャッシュメモリ13-0に対する電源供給を再開する（ブロック４１６）。電源コントローラ４０は、電源の再投入後の電源安定化の待ち時間経過後に、シーケンサ１２にその旨を通知する。シーケンサ１２は、ハードエラーが解消されたと判定し、該当するキャッシュメモリ13-0を復帰させる処理を実行する（ブロック４１８）。
【００３６】
以上のようにして本実施形態によれば、ハードエラーが発生したと判定されたキャッシュメモリグループ（例えばキャッシュメモリ13-0）に対して、電源遮断及び電源再投入の電源制御を実行することにより、ハードエラーの解消を図ることが可能となる。
【００３７】
ここで、本実施形態のハードエラーとは、シングルイベントラッチアップと呼ばれる現象によるメモリ機能障害を想定している。この種のハードエラーは、例えば宇宙放射線による荷電粒子の入射で大電流がキャッシュメモリに流れて、メモリ機能障害が起こる現象である。このようなハードエラーによるメモリ機能障害は、前述の電源制御により復帰する可能性が高い。従って、本実施形態での電源コントローラ４０を介した電源制御により、当該ハードエラーを解消することが可能となる。
【００３８】
一方、ハードエラーがメモリ素子の破壊により発生している場合には、該当するキャッシュメモリグループの復帰は困難となる。キャッシュコントローラ１０は、前述の電源制御により復帰処理したキャッシュメモリグループに、依然としてハードエラーが発生する場合には、メモリ素子の破壊によるハードエラーと判定する。この場合には、キャッシュコントローラ１０は、当該キャッシュメモリグループを封鎖して、使用禁止として処理する（ＣＰＵ２０への通知も含む）。
【００３９】
本実施形態のキャッシュコントローラ１０であれば、キャッシュメモリから読み出したデータに訂正不能なエラーが検出されて、そのエラーがハードエラーの場合でも、データ復元（データリカバリ）処理が実行される。従って、ハードエラーに対して当該キャッシュメモリを封鎖して使用禁止とすることなく、ＣＰＵ２０に対してリード要求のデータを転送できる。従って、キャッシュ動作を中断することなく、キャッシュ動作中にデータ復元が行なわれるため、キャッシュ動作の性能劣化を抑制することができる。
【００４０】
さらに、ハードエラーの発生に対する対処として、パワーダウン処理（電源制御処理）を実行することにより、シングルイベントラッチアップなどのメモリ機能障害によるハードエラーを解消することが可能となる。従って、キャッシュメモリのハードエラーの発生箇所を減少させることが可能となり、キャッシュメモリを封鎖して使用禁止とする事態を抑制できるため、結果としてキャッシュメモリの長寿命化を実現できる。これにより、ハードエラーに対する対処を効率的に実行することができる。
【００４１】
なお、本実施形態では、キャッシュメモリグループ13-0〜13-2毎に電源系統を分離する構成であるため、ハードエラーが発生したキャッシュメモリグループに対してパワーダウン処理（電源制御処理）を選択的に実行できる。従って、他の正常なキャッシュメモリグループに対するキャッシュ動作を維持できる。
【００４２】
（変形例）
前述したように本実施形態のキャッシュコントローラ１０は、ハードエラーが発生したキャッシュメモリグループに対する電源遮断と電源再投入の電源制御処理後に、そのキャッシュメモリグループを復帰させる。本変形例は、当該復帰処理に条件を追加して、電源再投入後にキャッシュメモリグループのテストを実行し、ハードエラーが検出されない場合または使用可能なラインキャッシュが多い場合に復帰する構成である。この場合、当該復帰条件を満たさないと、当該キャッシュメモリグループを再度封鎖して電源供給を遮断する。これにより、キャッシュ動作性能は劣化するが、無駄な電力消費を抑制することが可能となる。
【００４３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４４】
１０…キャッシュコントローラ、１１…インターフェース（ＣＰＵ-I/F）、
１２…シーケンサ、１３…キャッシュメモリ群、
13-0〜13-2…キャッシュメモリグループ、１４…エラー処理モジュール、
１５…エントリデコーダ、１６…エラー検出用データ生成モジュール、
２０…マイクロプロセッサ（ＣＰＵ）、２１…バス、
２２…ディスクコントローラ、６０…ＳＳＤコントローラ、
３０…メインメモリ、４０…電源コントローラ、42-0〜42-2…パワースイッチ、
４１…電源、１３１…キャッシュデータ領域、１３２…キャッシュタグ領域。
【図１】
2012190330.tif 000003
【図２】
2012190330.tif 000004
【図３】
2012190330.tif 000005
【図４】
2012190330.tif 000006