(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024137148
(43)【公開日】2024-10-07
(54)【発明の名称】磁気ディスク装置
(51)【国際特許分類】
G06F 3/06 20060101AFI20240927BHJP
G06F 11/10 20060101ALI20240927BHJP
【FI】
G06F3/06 305C
G06F11/10 604
G06F3/06 303G
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2023048550
(22)【出願日】2023-03-24
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】古橋 佳奈
(72)【発明者】
【氏名】近藤 陽介
(57)【要約】
【課題】リード時に期待するスクランブラシードがライト時に使用されたスクランブラシードから変わった場合でも、リードされたデータを正しく評価可能とする。
【解決手段】実施形態の磁気ディスク装置は、リード制御系において、メディアからリードされたメディアデータからスクランブルがかけられたデータ及びライト時にシード値が関連付けられている検査データを抽出し、メディアデータから抽出されたデータに対する検査データを生成し、その検査データとメディアデータから抽出された検査データから両者に関連付けられるシード値を求め、このシード値をコントローラが期待するシード値と比較し、比較結果が不一致の場合はエラーと評価し、一致の場合はそのシード値を用いてメディアデータから抽出されたデータのスクランブルを解除する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
磁気ディスクをメディアとし、コントローラにより指定のセクタにデータをライト及びリードする磁気ディスク装置であって、
前記データを前記メディアのセクタにライトする時、前記データを予め設定されたスクランブラシードに示されるライト先のセクタ固有のシード値を用いてスクランブルし、スクランブルされた後のデータから誤り検出用の検査データを生成し、前記スクランブルに使用したシード値を前記検査データの一部に関連付ける関連付け処理を施し、関連付け処理後の検査データを前記スクランブルされた後のデータに付加してライトするライト制御系と、
前記メディアからリードされたメディアデータから前記スクランブルがかけられた前記データ及び前記検査データを抽出し、前記メディアデータから抽出された前記データに対する検査データを生成し、その検査データと前記メディアデータから抽出された検査データとからシード値を求め、このシード値を前記コントローラが期待するスクランブラシードに示されるリード先のセクタ固有のシード値と比較し、比較結果が不一致の場合はエラーと評価し、一致の場合は前記メディアデータから得られたシード値、前記コントローラが期待するシード値のいずれかを用いて前記メディアデータから抽出されたユーザデータのスクランブルを解除するリード制御系と
を具備する磁気ディスク装置。
【請求項2】
前記リード制御系は、前記リードされたメディアデータから得られたシード値を前記コントローラが期待するシード値と比較した結果が不一致のとき、両者の差が発生した位置に応じてエラーの種類を推測する請求項1記載の磁気ディスク装置。
【請求項3】
前記リード制御系は、前記リードされたメディアデータから得られたシード値と前記コントローラが期待するシード値との比較において、シード値が前記検査データの一部であることを利用して、シード値以外のデータが一致しているか否かを判断し、シード値以外のデータが一致していない場合には、誤訂正と判断し、シード値以外のデータが一致している場合には、シード値が一致しているか否かを判断し、シード値が一致していない場合には、リード位置がセクタずれの可能性ありと判断し、シード値が一致している場合には、リードは正常と判断する請求項2記載の磁気ディスク装置。
【請求項4】
前記ライト制御系は、前記シード値として使用される値が複数のソースを持つ場合に、ライト時に使用したソースを示す値を前記検査データと関連付け処理して前記スクランブルされた後のデータに付加し、
前記リード制御系は、前記メディアデータから抽出された前記データから生成された検査データと前記メディアデータから抽出された検査データとから前記シード値と前記ソースを示す値を求め、そのソース及びシード値を前記コントローラが期待するソース及びシード値と比較し、ソース及びシード値のいずれかが不一致の場合はエラーと評価し、共に一致した場合には、一致したシード値を用いて前記メディアデータから抽出されたデータのスクランブルを解除する、
請求項1記載の磁気ディスク装置。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、磁気ディスク装置に関する。
【背景技術】
【0002】
磁気ディスク装置では、ユーザデータのライト時に、ユーザデータから誤り訂正用の符号としてCRC(Cyclic Redundancy Check:巡回冗長検査)データを生成する。この際、ライト先メディアのセクタ固有の情報で、スクランブラにシード値として与えるスクランブラシードに基づいて、ライト先のセクタ固有のシード値(Seed2)をCRCデータの一部として与えている。具体的には、CRCデータとシード値(Seed2)をXOR(eXxlusive OR:排他的論理和)演算することによりシード値(Seed2)の情報をCRCデータに与えている。これは、リード時にCRCとシード値(Seed2)の両方のチェックを行い、リードしたセクタに誤りが混入していない、かつ、期待したセクタであることを保証するためである。
【0003】
すなわち、ライト時は、ユーザデータとCRCに対し、CRCのシード値(Seed2)と同一もしくは無関係のセクタ固有のシード値(Seed1)を与え、スクランブラをかけてからメディア(磁気ディスク)へのライトを行う。リード時は、コントローラがライト時に設定したシード値(Seed1)を使い、ユーザデータとCRCのスクランブラを解除する。その後、ユーザデータに対してCRCチェックを行うと共に、コントローラが期待するシード値(Seed2)を与えて比較する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第10116292号明細書
【特許文献2】米国特許第6556407号明細書
【特許文献3】特開2006-129593号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
実施形態は、製造過程や評価中に、リード時に期待するスクランブラシードがライト時に使用されたスクランブラシードから変わった場合でも、リードされたデータを正しく評価することのできる磁気ディスク装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
一実施形態によれば、磁気ディスク装置は、磁気ディスクをメディアとし、コントローラにより指定のセクタにデータをライトするライト制御系と、前記コントローラにより指定のセクタからデータをリードするリード制御系とを有する。ライト制御系は、前記データを前記メディアのセクタにライトする時、前記データを予め設定されたスクランブラシードに示されるライト先のセクタ固有のシード値を用いてスクランブルし、スクランブルされた後のデータから誤り検出用の検査データを生成し、前記スクランブルに使用したシード値を前記検査データの一部に関連付ける関連付け処理を施し、関連付け処理後の検査データを前記スクランブルされた後のデータに付加してライトする。リード制御系は、前記メディアからリードされたメディアデータから前記スクランブルがかけられた前記データ及び前記検査データを抽出し、前記メディアデータから抽出された前記データに対する検査データを生成し、その検査データと前記メディアデータから抽出された検査データとから両者に関連付けられるシード値を求め、このシード値を前記コントローラが期待するシード値と比較し、比較結果が不一致の場合はエラーと評価し、一致の場合は前記メディアデータから得られたシード値、前記コントローラが期待するシード値のいずれかを用いて前記メディアデータから抽出されたデータのスクランブルを解除する。
【図面の簡単な説明】
【0007】
【
図1】
図1は、第1の実施形態に係る磁気ディスク装置の構成を示すブロック図である。
【
図2】
図2は、
図1に示すリード制御系の制御動作を示すフローチャートである。
【
図3】
図3は、
図2に示す制御動作を説明するための概念図である。
【
図4】
図4は、
図1に示すリード制御系の制御動作の変形例を示すフローチャートである。
【
図5】
図5は、
図4に示す制御動作を説明するための概念図である。
【
図6】
図6は、第2の実施形態に係る磁気ディスク装置に用いられるコントローラのライト・リード制御系の構成を示すブロック図である。
【
図7】
図7は、
図6に示すリード制御系の制御動作を示すフローチャートである。
【
図8】
図8は、
図7に示すリード制御系の制御動作を説明するための概念図である。
【発明を実施するための形態】
【0008】
以下、実施の形態について図面を参照して説明する。なお、開示はあくまで一例にすぎず、以下の実施形態に記載した内容により発明が限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各部分のサイズ、形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、対応する要素には同じ参照数字を付して、詳細な説明を省略する場合もある。
【0009】
(第1の実施形態)
図1は、第1の実施形態に係る磁気ディスク装置の構成を示すブロック図である。
【0010】
図1において、11はライト制御系及びリード制御系を有するコントローラである。このコントローラ11は、メディアとする磁気ディスクのセクタを指定してユーザデータのライト及びリードを制御するもので、詳細は図示しないが、CPU(Central Processer Unit)111により、ホストシステム(以下、HOST)12からのユーザデータをDRAM(Dynamic random access memory)112に一時記憶し、ライト(write)指示によりライト制御系を通じてメディア(磁気ディスク)13の所定セクタにデータをライトし、リード(read)指示によりリード制御系を通じてメディア13の所定セクタからデータをリードする制御を実行する。
【0011】
ライト制御系では、DRAM112から一時記憶されたユーザデータを読み出してスクランブラ113に送る。スクランブラ113は、スクランブラシード格納部114に格納されるスクランブラシードに示されるライト先のセクタ固有のシード値(以下、ライトシード値Seed-W)に基づいてユーザデータをスクランブルする。
【0012】
スクランブラ113でスクランブルされたユーザデータはCRC付加部115に送られる。CRC付加部115は、スクランブル後のユーザデータから誤り検出用の検査データであるCRCデータを生成してそのユーザデータに付加する。
【0013】
CRCデータが付加されたユーザデータはシード値XOR(eXclusive OR:排他的論理和)演算部(Seed-XOR)116に送られる。シード値XOR演算部116は、ライトシード値格納部114からのライトシード値とCRC付加部115からのユーザデータ+CRCデータとのXOR演算を施す。このXOR演算は、シード値とCRCデータとを関連付けるために実行される。シード値XOR演算部116で演算されたCRCデータは、RLLエンコーダ(RLLEnc)117でRLL符号化され、LDPC(Low-Density Parity Check)付加部118でLDPC符号が付加されて、メディアデータとしてメディア13にライトされる。
【0014】
リード制御系では、メディア13からリードされたデータ(メディアデータ)をLDPC訂正部119に送る。LDPC訂正部119は、メディアデータに付加されているLDPC符号に基づいてリードエラーを訂正する。
【0015】
リードエラー訂正後のメディアデータは、RLLデコーダ(RLLDec)11AでRLL復号され、これによってライト前のユーザデータ+CRCデータが得られる。このうち、ユーザデータはCRC生成部11Bに送られ、CRCデータはCRC-XOR演算部(CRC-XOR)11Cに送られる。
【0016】
CRC生成部11BはRLL復号されたユーザデータからCRCデータを生成してCRC-XOR演算部11Cに送る。CRC-XOR演算部11Cは、スクランブル解除前のユーザデータから生成されるCRCデータとRLLデコーダ(RLLDec)11AでRLL復号されたCRCデータとの間で排他的論理和演算(XOR)を施すことで、リードシード値(Seed-R)を算出する。算出されたリードシード値はシード値格納部11Dに送られ、ユーザデータはデスクランブラ11Eに送られる。
【0017】
ここで、シード値格納部11Dに格納されたリードシード値(Seed-R)は、比較部11Fに送られる。比較部11Fは、ライト側のスクランブラシード格納部114から読み出されるライトシード値(Seed-W)とリード側のシード値格納部11Dに格納されたリードシード値(Seed-R)とを比較する。
【0018】
この比較において、一致していればCPU111の期待したセクタがリードされていると判断し、一致していなければ正しくリードできていない(エラー)と判断する。一致していない場合、両者の差が発生した位置に応じてエラーの種類を推定する。例えば、シード値部分以外の値が一致していないのであれば、誤訂正が発生したと判断し、シード値部分以外の値が一致している場合は、セクタずれの可能性を考慮する。
【0019】
デスクランブラ11Eは、比較部11Fでライトシード値とリードシード値(Seed-R)が一致していると判断された場合に、シード値格納部11Dから読み出されるリードシード値(Seed-R)に基づいてユーザデータのスクランブルを解除する(デスクランブル)。スクランブルが解除されたユーザデータはDRAM111を通じてHOST12に出力される。
【0020】
図2は
図1に示すリード制御系の制御動作を示すフローチャート、
図3は
図2に示す制御動作を説明するための概念図である。
【0021】
第1の実施例では、リードセクタの指示により指定セクタからメディアデータがリードされると(ステップS11)、リードされたメディアデータをLDPC訂正し(119、ステップS12)、RLL復号してユーザデータ(User Data)+CRCデータ(CRC)を取得する(11A、ステップS13)。ここで、ユーザデータのCRCデータを生成し(11B、ステップS14)、ユーザデータから生成されたCRCデータとRLL復号されたCRCデータとの排他的論理和(XOR)を演算してCRCデータに関連付けられているリードシード値(Seed-R)を取得し(11C、ステップS15)、このリードシード値(Seed-R)を保存する(11D、ステップS16)。続いて、リードシード値(Seed-R)をライトシード値(Seed-W)と比較する(11F、ステップS17)。この比較において、シード値がCRCデータの一部であることを利用して、シード値以外のデータが一致しているか否かを判断する(ステップS171)。例えばCRCデータが80ビット、シード値が20ビットの場合、CRCデータとシード値をXOR演算してもCRCデータの60ビットの部分はそのままの値である。この60ビットの部分をシード値以外とし、リードシード値(Seed-R)以外のデータとライトシード値(Seed-W)以外のデータと比較する。ここで、シード値以外のデータが一致していない場合(NO)には、誤訂正(NG)と判断して再リードする。また、シード値以外のデータが一致している場合(YES)には、シード値が一致しているか否かを判断し(ステップS172)、シード値が一致していない場合(NO)には、リード位置がセクタずれの可能性あり(NG)と判断して再リードし、シード値が一致している場合(YES)には、リードは正常と判断して、リードシード値(Seed-R)でユーザデータのスクランブルを解除し(11E、ステップS18)、DRAM111を通じてHOST12に出力する(111、ステップS19)。
【0022】
ここで、磁気ディスク装置の製造過程や評価中では、リード時に期待するスクランブラシードがライト時に使用されたスクランブラシードから変更される場合がある。
【0023】
これに対して、本実施形態では、リード制御系において、メディアからリードされたメディアデータからスクランブルがかけられたユーザデータ及びライト時にシード値とXOR演算されているCRCデータとを抽出し、メディアデータから抽出されたユーザデータに対するCRCデータを生成し、そのCRCデータとメディアデータから抽出されたCRCデータとをXOR演算してシード値を求め、このシード値をコントローラが期待するシード値と比較し、比較結果が不一致の場合はエラーと評価し、一致の場合はXOR演算結果のシード値を用いてメディアデータから抽出されたデータのスクランブルを解除する構成である。
【0024】
したがって、リード時に、スクランブルの解除に対するシード値をCPU111が与えなくても、リードしたセクタに対して訂正に誤り(誤訂正)があったのか、誤訂正以外のセクタずれなのかを推測し評価することができる。これにより、リード時に期待するスクランブラシードがライト時に使用されたスクランブラシードから変わったとしても、リードされたデータを正しく評価することができる。
【0025】
これに対して、上記実施形態の構成と違って、ライト時に設定したシード値を使い、ユーザデータとCRCデータのスクランブラを解除した後、ユーザデータに対してCRCチェックを行うと共に、コントローラが期待するシード値を与えて比較する構成では、リード時に期待するスクランブラシードがライト時に使用されたスクランブラシードから変更される場合には、リードに際してライト時のシード値を正しく設定できなくなる。この結果、セクタからリードされたデータは正しくRLL復号まで行われていても、スクランブラの解除が正しく行われずCRCエラーとなる。このように、スクランブルの解除不可によりCRCエラーとなるため、リードされたデータが本当の誤訂正かセクタ位置のずれが発生したのかも不明となり、リードされたデータに対する評価の信頼性が損なわれる課題があった。
【0026】
前述した通り、本実施形態は、メディアデータから抽出されたユーザデータに対するCRCデータを生成し、そのCRCデータとメディアデータから抽出されたCRCデータとをXOR演算してシード値を求め、このシード値をコントローラが期待するシード値と比較し、その比較結果に基づいて評価して、リードに際してライト時のシード値を正しく設定することができるという効果により、上記の課題を克服することができる。
【0027】
上記構成によれば、リード時に、スクランブルの解除に対するシード値をCPU111が与えなくても、リードしたセクタに対して訂正に誤り(誤訂正)があったのか、誤訂正以外のセクタずれなのかを推測し評価することができる。これにより、リード時に期待するスクランブラシードがライト時に使用されたスクランブラシードから変わってしまっても、リードされたデータの信頼性を評価することができる。
【0028】
(変形例)
図4は
図1に示すリード制御系の制御動作の変形例を示すフローチャート、
図5は
図4に示す制御動作を説明するための概念図である。なお、
図4及び
図5において、
図2及び
図3と同一処理については同一符号を付して示し、ここでは重複する説明を省略する。
【0029】
この変形例では、シード値として使用される値は複数のソースを持つことに着目する。具体的には、シード値として使用されるデータの構成は、LBAモードとLBAシード値(Mode1:SeedLBA)、CHSモードとCHSシード値(Mode2:SeedCHS)などのように、モードとそのモードにより指定されるシード値の組み合わせとする。CPU111はリード時にこのデータがどのモードでライトされたセクタなのかを決定し、各モードに対してどのようなシード値を期待するかを設定し、設定した期待値と、リードされたシード値を比較する(11F、ステップS20)。すなわち、この比較において、リードシード値(Seed-R)がLBAモードとLBAシード値か否かを判断し(Mode=Mode1:SEED=SeedLBA?)(ステップS201)、YESならばリードシード値(Seed-R)をLBAモードとLBAシード値としてユーザデータのスクランブルを解除する(11E、ステップS21)。また、ステップS201でNOならば、リードシード値(Seed-R)がCHSモードとCHSシード値か否かを判断し(Mode=Mode2:SEED=SeedCHS?)(ステップS202)、YESならばリードシード値(Seed-R)をCHSモードとCHSシード値としてユーザデータのスクランブルを解除する(11E、ステップS22)。
【0030】
以上のように、本変形例では、シード値として使用されるデータの構成は、モードとそのモードにより指定されるシード値の組み合わせとし、リード時にユーザデータデータがどのモードでライトされたセクタなのかを決定し、各モードに対しどのようなシード値を期待するかを設定し、設定した期待値とリードシード値を比較し、一致しなければ、CPU11にエラー(正しく訂正できなかった、もしくは期待するセクタでない)を返す。これにより、複数の種類のスクランブラシードが混在(例:製造時はCHSシードでライトされ、製造後はLBAシードでライトされたセクタが混在)していても、もともとのシード値を取得できるため、このセクタが本来リードしたい位置のセクタで、正しく訂正が行われたかどうかを判断することができる。
【0031】
すなわち、例えば、LBA(Logical Block Address)をスクランブラシードに適用してしまうと、そのセクタを復元するには、LBAを総当たりで適用する必要がある。このため、予測が容易なCHS(Cylinder Head Sector)などをスクランブラシードとして適用する場合がある。
【0032】
但し、リード時に誤ったスクランブラシードを使用してしまうと、そのセクタはCRCエラーとなり、再リードが必要となる。このため、CHSをスクランブラシードとして使用したセクタと、LBAをスクランブラシードとして使用したセクタを混在させることができないという課題があった。
【0033】
前述したとおり、上記変形例の構成によれば、シード値として使用されるデータをモードとそのモードにより指定されるシード値の組み合わせとし、リード時にユーザデータデータがどのモードでライトされたセクタなのかを決定し、各モードに対しどのようなシード値を期待するかを設定し、設定した期待値とリードシード値を比較して、一致しなければ、CPU11にエラーを返すようにしているので、上記の課題を克服することができる。
【0034】
(第2の実施形態)
次に、
図6乃至
図8を参照して、第2の実施形態について説明する。ここで、
図6は第2の実施形態に係る磁気ディスク装置に用いられるコントローラのライト・リード制御系の構成を示すブロック図、
図7は
図6に示すリード制御系の制御動作を示すフローチャート、
図8は
図7に示すリード制御系の制御動作を説明するための概念図である。なお、
図6乃至
図8において、
図1乃至
図5と同一処理については同一符号を付して示し、ここでは重複する説明を省略する。
【0035】
本実施形態では、先に述べた変形例と同様に、シード値として使用されるデータの構成は、LBAモードとLBAシード値(Mode1:SeedLBA)、CHSモードとCHSシード値(Mode2:SeedCHS)などのように、モードとそのモードにより指定されるシード値の組み合わせとし、ライト制御系において、スクランブラシード格納部114に格納する。
【0036】
一方、リード制御系では、CPU111はリード時にこのデータがどのモードでライトされたセクタなのかを決定し、各モードに対してどのようなシード値を期待するかを設定し、設定した期待値と、リードされたシード値を比較する(11F、ステップS20)。
【0037】
この比較において、本実施形態では、リードシード値(Seed-R)がLBAモードとLBAシード値か否かを判断する(Mode=Mode1:SEED=SeedLBA?)(ステップS201)。この判断で、YESならばリードシード値(Seed-R)がCPU111の期待するLBAモードのLBAシード値であることをCPU111に通知し、NOならば、リードシード値(Seed-R)がCHSモードとCHSシード値か否かを判断する(Mode=Mode2:SEED=SeedCHS?)(ステップS202)。この判断で、YESならばリードシード値(Seed-R)がCPU111の期待するCHSモードのCHSシード値であることをCPU111に通知し、NOならば、評価をNGとしてCPU111に通知する。CPU111は、ステップS201、S202のいずれかYESだった場合、ライトシード値格納部114に格納されているモードのシード値でユーザデータのスクランブルを解除する。
【0038】
すなわち、本実施形態では、ステップS201、ステップS202でリードシード値(Seed-R)がLBAモードとLBAシード値またはCHSモードとCHSシード値であった場合(YES)、リードシード値ではなく、CRC計算のデータ処理と並行して、CPU111が指定したモードのシード値(Seed-W)を使用してユーザデータのスクランブルを解除する(11E、ステップS23)。
【0039】
これにより、CRC計算を行いながらスクランブルの解除を行うことができるため、データ処理のレーテンシーを短くすることができ、第1の実施形態と同様の効果を得ることができる。
【0040】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0041】
11…ライト・リード制御系コントローラ、111…CPU(Central Processer Unit)、12…ホストシステム(HOST)、112…DRAM(Dynamic random access memory)、13…メディア(磁気ディスク)、113…スクランブラ、114…スクランブラシード格納部、115…CRC付加部、116…シード値XOR演算部(Seed-XOR)、117…RLLエンコーダ(RLLEnc)、118…LDPC(Low-Density Parity Check)付加部、119…LDPC訂正部、11A…RLLデコーダ(RLLDec)、11B…CRC生成部、11C…CRC-XOR演算部(CRC-XOR)、11D…シード値格納部、11E…デスクランブラ、11F…比較部。
【手続補正書】
【提出日】2024-05-17
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0004
【補正方法】変更
【補正の内容】
【0004】
【特許文献1】米国特許第7865802号明細書
【特許文献2】特開2019-153367号公報
【特許文献3】米国特許第7167330号明細書
【特許文献4】米国特許出願公開第2006/0248427号明細書
【特許文献5】米国特許出願公開第2008/0170685号明細書