(57)【要約】【課題】メモリアクセスにおいてECCの方式変更を自動的に行う技術を提供する。【解決手段】バッファメモリと、このバッファメモリを単位データ毎にキャッシュするキャッシュメモリと、この単位データにバイトＥＣＣを付加する付加手段とを備えたメモリ制御装置。また、バッファメモリを備えたメモリ制御装置におけるメモリ制御方法であって、このバッファメモリを単位データ毎にキャッシュし、この単位データにバイトＥＣＣを付加するメモリ制御方法。【選択図】  図５
2013003983.tif 000002
【特許請求の範囲】
【請求項１】
バッファメモリと、
このバッファメモリを単位データ毎にキャッシュするキャッシュメモリと、
この単位データにバイトＥＣＣを付加する付加手段とを
備えたメモリ制御装置。
【請求項２】
前記付加手段は、キャッシュされた前記単位データが前記バッファメモリにライトバックされる際に前記バイトＥＣＣを付加する請求項１に記載のメモリ制御装置。
【請求項３】
更にフラグ管理手段を備え、このフラグ管理手段は前記バイトＥＣＣが付加されているか否かを管理する請求項１に記載のメモリ制御装置。
【請求項４】
更にエラー検出／訂正手段を備え、このエラー検出／訂正手段は前記バイトＥＣＣを用いてエラー検出／訂正を行う請求項１に記載のメモリ制御装置。
【請求項５】
バッファメモリを備えたメモリ制御装置におけるメモリ制御方法であって、
このバッファメモリを単位データ毎にキャッシュし、
この単位データにバイトＥＣＣを付加するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリ制御装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
DRAMデータ化けを保護するECC
(Error Checking and Correcting)はアクセス単位のデータ毎に付加する必要があるが、小さい単位にECCを付加すると記憶領域が多く必要であるデメリットがあるが、小さい単位のアクセスが早いメリットがある。
【０００３】
また、大きい単位にECCを付加すると大きい単位でしかアクセスできないため、一部のデータを使用する時にも全データをリードしてECCをチェックしなければならずさらにライト時にはECCの再計算のため一旦全データを読みだしてからライトする必要がありアクセスが遅くなるデメリットがある。しかしECCの総サイズが少なくて済むため記憶領域を節約できるメリットがある。
【０００４】
これらの問題を解決するため、不揮発性記憶媒体にデータを格納しているときには大きな単位に対してECCを付加し記憶媒体の容量消費を抑え、DRAM上にデータをコピーした後、データを使用する時に小さい単位のECCに変更する方法があるが、ECCの方式変更を行う手間が必要であった。
【０００５】
例えば、特許文献１では、キャッシュメモリの初期化処理を不要とし、即座にキャッシュメモリへのリード転送又はライト転送を開始可能とする。完了フラグが未完了を示すときに前記バースト制御手段から出力された指示によって、前記転送アドレスを変換又は生成するアドレス変換手段と、 前記完了フラグが未完了を示すときに前記バースト制御手段から出力された指示によって、前記転送データにパディングデータを付加するパディング手段と備えのキャッシュメモリ制御装置なるものが記載されている。即ち、キャッシュの初期化を管理テーブルにより制御している技術であるが、初期化に伴い、ECC付加を実施する技術に関しては開示されていない。
【０００６】
また、特許文献２では、エラー検知のモードをパリティ付加モード、ＥＣＣコード付加モード及びパリティビット付きＥＣＣコード付加モードのいずれかに設定するためのエラー検知切り換え部とを備え、メモリ装置からのデータのリードまたはデータのライトを最大データ転送サイズで常に行うように制御し、データリードの際、所定のエラー検知・訂正を実行するとある。しかし、モードによりパリティ付加、ECC付加等の制御を実施しているが、ライトバックを実施する際、ECCの形式を変更する技術に関しては開示されていない。
【０００７】
また、メモリ制御部内にバーストアクセス用のＥＣＣ制御部とシングルアクセス用のＥＣＣ制御部を設け、これらバーストアクセスとシングルアクセスを選択可能としたことにより、ＥＣＣによる高信頼化とメモリアクセスの高速化との両立が図られるというものもある。しかし、バーストアクセス用のECC 制御部とシングルアクセス用のECC 制御部を設ける制御に関しているが、ライトバックを実施する際、シングルアクセス用のECCを付加したデータをライトバックする技術に関しては開示されていない。
【０００８】
即ち、メモリアクセスにおいてECCの方式変更を自動的に行う技術への要望があるが、かかる要望を実現するための手段は知られていない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−２７２５５１号公報
【特許文献２】特開平１０−２８９１６４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の実施の形態は、メモリアクセスにおいてECCの方式変更を自動的に行う技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、実施形態によればメモリ制御装置は、バッファメモリと、このバッファメモリを単位データ毎にキャッシュするキャッシュメモリと、この単位データにバイトＥＣＣを付加する付加手段とを備えた。
【図面の簡単な説明】
【００１２】
【図１】実施形態の磁気ディスク装置を備えた電子機器の典型的な構成を示すブロック図。
【図２】同実施形態のByteECC付加イメージ図。
【図３】同実施形態のＣＰＵ２８０を主体とする動作を説明するために示すフローチャート。
【図４】同実施形態のByteECC化前のキャッシュミスリードの例を示す説明図。
【図５】同実施形態のライトバックによるByteECC化の例を示す説明図。
【図６】同実施形態のByteECC付加後のキャッシュミスリードの例を示す説明図。
【発明を実施するための形態】
【００１３】
以下、一実施形態を図１乃至図６を参照して説明する。
図１は第１の実施形態の磁気ディスク装置を備えた電子機器の典型的な構成を示すブロック図である。図１において、電子機器は、磁気ディスク装置（ＨＤＤ）１０及びホスト（ホストシステム）２０を備えている。電子機器は、例えば、パーソナルコンピュータ、ビデオカメラ、音楽プレーヤー、携帯端末、或いは携帯電話機である。ホスト２０はＨＤＤ１０を当該ホスト２０の記憶装置として利用する。
【００１４】
ＨＤＤ１０は、ヘッドディスクアセンブリ部（ＨＤＡ部）１００と、制御ボード部２００とを備えている。
ＨＤＡ部１００は、例えば２枚のディスク（磁気ディスク）１１０-1及び１１０-2と、スピンドルモータ（ＳＰＭ）１３０と、アクチュエータ１４０と、ヘッドＩＣ１５０とを備えている。
【００１５】
ディスク１１０-1及び１１０-2の各々は上側と下側の２つの記録面を備えている。ディスク１１０-1及び１１０-2はＳＰＭ１３０により高速に回転させられる。ディスク１１０-i（ｉ＝１，２）はＣＤＲ（constant density recording）と呼ばれる周知の記録フォーマットを適用している。このためディスク１１０-iの各記録面は、当該ディスク１１-iの半径方向に複数のゾーンに区分して管理される。つまり、ディスク１１０-iの各記録面は、複数のゾーンを備えている。
【００１６】
アクチュエータ１４０はディスク１１０-1のそれぞれの記録面に対応して配置されるヘッド・アームの先端にヘッド（磁気ヘッド）１２０-0及び１２０-1を備えている。アクチュエータ１４０は更に、ディスク１１０-2のそれぞれの記録面に対応して配置されるヘッド・アームの先端にヘッド１２０-2及び１２０-3を有する。ヘッド１２０-0及び１２０-1は、ディスク１１０-1へ／からのデータの書き込み／読み出しに用いられ、ヘッド１２０-2及び１２０-3は、ディスク１１０-2へ／からのデータの書き込み／読み出しに用いられる。
【００１７】
アクチュエータ１４０はボイスコイルモータ（ＶＣＭ）１４１を備えている。アクチュエータ１４０はＶＣＭ１４１によって駆動され、ヘッド１２０-0乃至１２０-3をディスク１１０-1及び１１０-2の半径方向に移動させる。
【００１８】
ＳＰＭ１３０及びＶＣＭ１４１は、後述するモータドライバＩＣ２１０からそれぞれ供給される駆動電流（ＳＰＭ電流及びＶＣＭ電流）により駆動される。
ヘッドＩＣ１５０は、ヘッド１２０-j（ｊ＝０，１，２，３）により読み出された信号（リード信号）を増幅する。ヘッドＩＣ１５０はまた、後述するリード／ライトチャネル２３０から転送されるライトデータをライト電流に変換してヘッド１２０-jに出力する。
【００１９】
制御ボード部２００は、モータドライバＩＣ２１０及びシステムＬＳＩ２２０の２つのＬＳＩを備えている。モータドライバＩＣ２１０は、ＳＰＭ１３０を一定の回転速度で駆動する。モータドライバＩＣ２１０はまた、ＣＰＵ２７０から指定されたＶＣＭ操作量に相当する値の電流（ＶＣＭ電流）をＶＣＭ１４１に供給することで、アクチュエータ１４０を駆動する。
【００２０】
システムＬＳＩ２２０は、リード／ライトチャネル（Ｒ／Ｗチャネル）２３０、ディスクコントローラ（ＨＤＣ）２４０、バッファＲＡＭ２５０、フラッシュメモリ２６０、プログラムＲＯＭ２７０、ＣＰＵ２８０及びＲＡＭ２９０が単一チップに集積されたＳＯＣ（System on Chip）と呼ばれるＬＳＩである。後述するラインキャッシュ領域は、例えばこのＣＰＵ２８０またはＲＡＭ２９０内のキャッシュメモリ上で実現可能である。
【００２１】
Ｒ／Ｗチャネル２３０は、リード／ライトに関連する信号処理を行う信号処理デバイスである。Ｒ／Ｗチャネル２３０は、リード信号をデジタルデータに変換し、このデジタルデータからリードデータを復号する。Ｒ／Ｗチャネル２３０はまた、上記デジタルデータからヘッド１２０-jの位置決めに必要なサーボデータを抽出する。Ｒ／Ｗチャネル２３０はまた、ライトデータを符号化する。
【００２２】
ＨＤＣ２４０は、ホスト２０とホストインタフェース２１を介して接続されている。ＨＤＣ２４０は、ホスト２０から転送されるコマンド（ライトコマンド、リードコマンド等）を受信する。ＨＤＣ２４０は、ホスト２０と当該ＨＤＣ２４０との間のデータ転送を制御する。ＨＤＣ２４０は、Ｒ／Ｗチャネル２３０を介して行われるディスク１１０-i（ｉ＝１，２）と当該ＨＤＣ２４０との間のデータ転送を制御する。
【００２３】
バッファＲＡＭ２５０は、ディスク１１０-iに書き込まれるべきデータ及びディスク１１０-iからヘッドＩＣ１５０及びＲ／Ｗチャネル２３０を介して読み出されたデータを一時格納するのに用いられる。
【００２４】
フラッシュメモリ２６０は、書き換え可能な不揮発性メモリである。フラッシュメモリ２６０は、例えばホストから受信するライトコマンドの端数セクタのデータを一時的に格納するのに用いられる。
【００２５】
プログラムＲＯＭ２７０は、制御プログラム（ファームウェアプログラム）を予め格納する。なお、制御プログラムがフラッシュメモリ２６０の一部の領域に格納されていても構わない。
【００２６】
ＣＰＵ２８０は、ＨＤＤ１０の主コントローラとして機能する。ＣＰＵ２８０はプログラムＲＯＭ２７０に格納されている制御プログラムに従ってＨＤＤ１０内の他の少なくとも一部の要素を制御する。ＲＡＭ２９０の一部の領域は、ＣＰＵ２８０の作業領域として用いられる。この作業領域には、ＨＤＤ１０のパワーオン時に、フラッシュメモリ２６０に格納されている一部のデータがロードされる。
【００２７】
さて一般的に実施されるByteECC付加とは、１Byteのデータに対し5bit(ここでは便宜上１Byteデータとして扱う。この5bitにより１bit誤りの訂正と２bit誤りの検出が可能となる。)のECCデータを付加することである（図２参照）。即ち、図２（ａ）のオリジナルデータＤＡＴＡ０に図２（ｂ）のＥＣＣ０を付加して、総体２Byteのデータとなる。
【００２８】
実際のハードウェア動作では、内部回路にDRAMアドレスに対しでByteECC化済みフラグを持つことにより、キャッシュミスリード時にDRAMからのリードデータがByteECC化されているか判断する（図３）。ByteECC化されていないデータをリードする場合、DRAMからリードしたデータをすべてキャッシュする。ByteECC化されているデータをリードする場合、DRAMからリードしたユーザーデータをキャッシュするような機構を持つ（ByteECCデータはキャッシュしない）。
【００２９】
図３（ａ）のＨＤＣ２４０またはＣＰＵ２８０を主体とする動作を説明するために示すフローチャートに沿ってこれらをより詳細に述べると次のようになる。
ステップＳ１：  キャッシュミスリードの発生を把握する。
ステップＳ２：  DRAMからのリードデータがByteECC化されているか判定する。
ステップＳ３：  ステップＳ２の判定結果がＮｏである場合には、ByteECCモードＯＦＦでＤＲＡＭをリードする。
ステップＳ４：  ステップＳ２の判定結果がＹｅｓである場合には、ByteECCモードＯＮでＤＲＡＭをリードする。
ステップＳ５：  データが訂正化か判定する。
ステップＳ６：  ステップＳ６の判定結果がＹｅｓである場合には、データを訂正化する。
ステップＳ７：  ステップＳ６の判定結果がＮｏである場合には、データの誤りを検出済みか判定する。
ステップＳ８：  ステップＳ６の判定結果がＹｅｓである場合には、このリードしたデータを不使用とする。
図３（ｂ）もＣＰＵ２８０を主体とする動作を説明するために示すフローチャートである。ライトバックする際には（ステップＳ９）、ユーザーデータ１Byteに対し、ユーザーデータの例えば1Byte上位アドレスに１ByteのByteECCを付加してDRAMライトする（ステップＳ１０）。
【００３０】
また、ByteECCを含めた単位データ分のECCを生成することにより、ラインキャッシュ以外のこの機能を装備していないDRAM転送に関して、ECCのデータ保護を実施することができる。
【００３１】
但し、この機能を実現するためには、ByteECCで付加する対象領域と同じ空き領域(図４reserved、例えば５１２バイト)がDRAM上に必要となる。図４は、実施形態のByteECC化前のキャッシュミスリードの例を示す説明図である。例えば、単位データＡでは単位データＡ用ＥＣＣデータも外部ＤＲＡＭメモリ領域（バッファＲＡＭ２５０）に存在する。単位データＢなど他の単位データに関しても同様である。
【００３２】
図５は、実施形態のライトバックによるByteECC化の例を示す説明図である。図４の位置構成において、矢印で示すようにByteECCを付加してライトバックを行う。実際には図２のようなイメージの２バイト単位の集合としてライトバックを行うのが好適である。単位データＡ用ＥＣＣデータは例えば前半と後半に分け各ByteECCを含んだＣＣデータとして方式変更されて書かれる。
【００３３】
図６は、実施形態のByteECC付加後のキャッシュミスリードの例を示す説明図である。外部ＤＲＡＭメモリ領域からは５１２バイトのデータが読まれるが、ByteECCをはずした２５６バイト分がキャッシュされる。
【００３４】
DRAMデータ化けを保護するECCはアクセス単位のデータ毎に付加する必要があるが、小さい単位にECCを付加すると記憶領域が多く必要であるデメリットがあるが、小さい単位のアクセスが早いメリットがある。
【００３５】
また、大きい単位にECCを付加すると大きい単位でしかアクセスできないため、一部のデータを使用する時にも全データをリードしてECCをチェックしなければならずさらにライト時にはECCの再計算のため一旦全データを読みだしてからライトする必要がありアクセスが遅くなるデメリットがある。しかしECCの総サイズが少なくて済むため記憶領域を節約できるメリットがある。
【００３６】
これらの問題を解決するため、不揮発性記憶媒体にデータを格納しているときには大きな単位に対してECCを付加し記憶媒体の容量消費を抑え、DRAM上にデータをコピーした後、データを使用する時に小さい単位のECCに変更する方法があるが、ECCの方式変更を行う手間が必要であった。
【００３７】
本実施形態の方式ではCPUのDRAMアクセスに応じてECCの方式変更を必要な量だけHWが自動的に行うため、CPUはECCの方式変更を意識することなくまた方式変更も必要に応じて分割して行われるため、DRAM上にデータをコピーした後にすぐそのデータを使用することができる。
【００３８】
例えば、ＨＤＣ２４０が、フラッシュメモリ２６０内のフラグテーブル２６４として、バッファＲＡＭ２５０の各単位データ毎にByteECCを付加したか否かのフラグを管理するようにすればよい。
【００３９】
本実施形態の言わばECC符号自動付加機能付きラインキャッシュの方式ではCPUのDRAMアクセスに応じてECCの方式変更を必要な量だけHWが自動的に行うため、CPUはECCの方式変更を意識することなくまた方式変更も必要に応じて分割して行われるため、DRAM上にデータをコピーした後にすぐそのデータを使用することができる。
【００４０】
実施形態の特徴として、DRAMからデータをリードする時に1回目のリード（図４）はByteECCなしとしてデータをリードし、このデータをDRAMにライトバック（図５）する時にデータ保護のためByteECCを付加し、2回目以降のDRAMリード（図６）はByteECCを使用してデータのエラー検出/訂正を自動で行うラインキャッシュ機能を発揮する。
【００４１】
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。例えばキャッシュの対象はユーザーデータのみではなくファームウェアのコードなどでもよい。所謂メディアファームディスク上のファームウェアのコードをＲＡＭや書き換え可能なＲＯＭに展開する際に用いてもよい。
【００４２】
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係わる構成要素を適宜組み合わせても良いものである。
【符号の説明】
【００４３】
１０…ＨＤＤ（磁気ディスク装置）、２０…ホスト、１１０-1，１１０-2，１１０-i…ディスク、１１１…パラメータ調整領域、１２０-0〜１２０-3…ヘッド、２３０…Ｒ／Ｗチャネル（リード／ライトチャネル）、２４０…ＨＤＣ、２５０…バッファＲＡＭ、２６０…フラッシュメモリ、２６４…フラグテーブル、２７０…プログラムＲＯＭ、２８０…ＣＰＵ、２９０…ＲＡＭ。
【図１】
2013003983.tif 000003
【図２】
2013003983.tif 000004
【図３】
2013003983.tif 000005
【図４】
2013003983.tif 000006
【図５】
2013003983.tif 000007
【図６】
2013003983.tif 000008