JP2009187049A - 装置 - Google Patents

装置 Download PDF

Info

Publication number
JP2009187049A
JP2009187049A JP2008022995A JP2008022995A JP2009187049A JP 2009187049 A JP2009187049 A JP 2009187049A JP 2008022995 A JP2008022995 A JP 2008022995A JP 2008022995 A JP2008022995 A JP 2008022995A JP 2009187049 A JP2009187049 A JP 2009187049A
Authority
JP
Japan
Prior art keywords
program
error
unit
storage unit
mpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008022995A
Other languages
English (en)
Inventor
Keiichi Yorimitsu
圭一 依光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008022995A priority Critical patent/JP2009187049A/ja
Priority to US12/362,990 priority patent/US8151167B2/en
Publication of JP2009187049A publication Critical patent/JP2009187049A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1883Methods for assignment of alternate areas for defective areas
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • G11B2020/1843Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information using a cyclic redundancy check [CRC]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2508Magnetic discs
    • G11B2220/2516Hard disks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】致命的な異常制御を防止しつつ、動作速度の低減が緩和された装置を提供する。
【解決手段】装置において、プログラム、変数データの初期値、定数データが記憶された不揮発性記憶部と、揮発性記憶部と、不揮発性記憶部に記憶されたプログラム、変数データの初期値、および定数データを揮発性記憶部に書き込んだ後、揮発性記憶部に書き込んだプログラムを実行する制御部とを備え、制御部が、揮発性記憶部のビット化けを検出する検出部と、定数データに誤りが検出された場合に、不揮発性記憶部から定数データを読み出し揮発性記憶部に書き込んだ後、制御部にプログラムの実行を継続させる定数回復部と、変数データおよびプログラムのいずれかに誤りが検出された場合に、不揮発性記憶部からプログラム、変数データの初期値、および定数データを読み出し揮発性記憶部に書き込んだ後、制御部にプログラムを始めから実行させる再起動部とを備える。
【選択図】 図2

Description

本発明は、プログラムを実行する制御部を備えた装置に関する。
複雑な機能が求められる装置にプログラムを実行する制御部を備え、この制御部に装置内の各部を制御させることが広く行われている。装置の制御部は、メモリに記憶されたプログラムを読出して実行することによって装置各部の制御し、また、プログラムの実行に伴い各種データをメモリから読出し、あるいは必要に応じてメモリに書き込む。例えば、ホストコンピュータからの要求に応じて磁気ディスクに情報を記録しまた情報を読み出す磁気ディスク装置は、プロセッサで構成された制御部を内蔵している。制御部はメモリに記憶されたプログラムを実行することによって、ホストコンピュータから送信されてくる要求コマンドに応じて磁気ディスクのスピンドルモータやヘッドが取り付けられたキャリッジアームのモータを制御し、磁気ディスクへのデータの記憶、および記憶されたデータの読み出しを行う。プロセッサによって実行されるプログラムおよびデータの記憶装置としては、SRAMやDRAMといった揮発性の半導体メモリがある。揮発性の半導体メモリは読み書きが高速に行えるが、電源オフによって内容が失われる。そこで、プログラムやデータは通常、フラッシュメモリやディスク媒体といった低速ではあるが不揮発性の記憶装置または半導体メモリに格納されており、装置の電源投入時に揮発性の半導体メモリにロードされてから実行される。
半導体メモリの微細化加工の進歩に伴いメモリセルの集積度が高まる一方で、ソフトエラーによるビット化けが起こりやすくなっている。ソフトエラーは、宇宙空間から大気圏を突き抜けて地上に達した宇宙線(α線)が半導体メモリに衝突し、メモリセルに保持されたデータの状態(1か0か)が変化することを指す。例えばDRAMは、2値からなるビット情報を、メモリセルに蓄積される電荷量として保持するため、宇宙線が衝突するときのエネルギーで電荷が変化すると情報が失われる。メモリセルのサイズは集積度が高まるほど小さくなり、1回の宇宙線衝突で影響を受けるビット数も増加する。
SRAMやDRAMに書き込まれたプログラムやプログラム動作に必須のデータがビット化けにより変化することは、装置が所期の性能を発揮できなくなる原因となるだけでなく、異常動作や破損の原因ともなる。磁気ディスク装置の例では、制御部が暴走すると目的の情報が磁気ディスクに記録されないだけでなく、正常に記録されていたデータが破壊されたり、磁気ディスクが損傷を受け読出し不能になったりするおそれがある。
揮発性の半導体メモリにおけるビット化け対応のひとつとして、エラー訂正機能を内蔵したECCメモリの利用がある。しかし、ECCメモリは、正しくエラー訂正できるビット数に限度があるだけでなく、複雑なエラー訂正回路を内蔵するためコストが高く、またエラー訂正回路によるアクセス遅延によって読み書きの動作が低速になるという問題がある。
また、別のビット化け対策として、パリティ付メモリの多重使用がある。これは、揮発性のメモリとしてパリティ付メモリを用い、このパリティ付メモリの2箇所あるいは2個のパリティ付メモリにプログラムおよびデータを書き込み、2つのメモリのうち一方からプログラムを読み出すときにパリティエラーが検出された場合には、他方のメモリからプログラムを読み出すものである。ただし、メモリの多重使用は、メモリの使用効率を低下させるためコストが増大してしまう。
そこで、メモリの多重化やエラー訂正は行わずに、ビット化けの検出のみを行う手法が提案されている。例えば、所定のブロックごとにプログラムやデータのパリティやチェックサムを確認し、異常が検出されたブロックをROMやフラッシュメモリのオリジナルで上書きする手法が提案されている(例えば、特許文献1〜3参照。)。
特開2000−132461号公報 特開2005−208958号公報 特開2006−72461号公報
しかしながら、この手法では、パリティまたはチェックサムのエラーを検出する前のプログラムやデータがプロセッサによってすでに利用されていると、プログラムが上書きされただけではプロセッサが異常な動作から復帰しないおそれがあり、異常動作が連鎖するおそれがある。この一方、記憶内容のエラーを検出するたびに装置全体をリセットすると全体的な動作速度が低下し、要求された時間内で応答ができないおそれがある。
上記事情に鑑み、本明細書に記載する実施形態は、ビット化けのための特別な訂正回路を用いることなく、装置にとって致命的な異常制御を防止しつつ、動作速度の低減が緩和された装置を提供する。
上記目的を達成する装置の基本形態は、プログラム、このプログラムの実行に伴い値が変化する変数データの初期値、およびこのプログラムの実行に拘わらず値が一定である定数データが記憶された不揮発性記憶部と、
揮発性記憶部と、
上記不揮発性記憶部に記憶されたプログラム、変数データの初期値、および定数データを読出し上記揮発性記憶部に書き込んだ後、この揮発性記憶部に書き込んだプログラムを実行する制御部とを備え、
上記制御部が、
上記揮発性記憶部に記憶されたプログラム、変数データ、および定数データのビット化けを検出する検出部と、
上記検出部によって定数データに誤りが検出された場合に、上記不揮発性記憶部から定数データを読み出し上記揮発性記憶部に書き込んだ後、上記制御部に、上記検出部に誤りを検出する前に実行していた箇所の続きからプログラムの実行を継続させる定数回復部と、
上記検出部によって変数データおよびプログラムのいずれかに誤りが検出された場合に、上記不揮発性記憶部からプログラム、変数データの初期値、および定数データを読み出し上記揮発性記憶部に書き込んだ後、上記制御部に、この揮発性記憶部に書き込まれたプログラムを始めから実行させる再起動部とを備えている。
この基本形態によれば、定数データは本来不揮発性記憶部に記憶された状態から値が変化しないので、不揮発性記憶部から読み出したオリジナルを揮発性記憶部に書き込んでプログラムの実行を継続するので動作速度の低下が抑えられる。この一方、プログラム、および値が通常変化する変数データに誤りが検出された場合には不揮発性記憶部から読み出したオリジナルを揮発性記憶部に書き込んでも正常な動作を続行できない確率が高い。この基本形態によれば、プログラム自体および値が通常変化する変数データに誤りが検出された場合にはプログラム、変数データの初期値、および定数データを読み出し上記揮発性記憶部に書き込んだ後、制御部にプログラムを始めから実行させることによって動作の回復を確実にしている。したがって、ビット化けのための特別な訂正回路を用いることなく、装置にとって致命的な異常制御を防止しつつ、動作速度の低減が緩和される。
上記基本形態に対し、上記制御部が、外部から送信されてきた処理要求に応じた処理および応答を行う要求処理部を備え、
上記検出部は、上記要求処理部による処理および応答が完了した後で誤りを検出するものである応用形態は好適である。
この好適な応用形態によれば、処理要求に応じた処理および応答を行った後に誤りを検出するので、誤り検出の時間による応答遅延が抑えられる。
上記基本形態に対し、上記検出部が、上記揮発性記憶部に記憶されたプログラム、変数データ、および定数データそれぞれからチェックサムを計算することによって誤りを検出する応用形態は好適である。
この好適な応用形態によれば、パリティ付メモリやECCメモリといった、複雑な回路を有するメモリではなく一般的な構成のメモリを使用することができるので、装置の製造コストを低減できる。
上記基本形態に対し、上記揮発性記憶部が、プログラム、変数データ、および定数データに付随してパリティ符号を記憶するものであり、
上記検出部が、上記揮発性記憶部からプログラム、変数データ、および定数データのそれぞれとともに読み出されたパリティ符号の状態を確認することによって誤りを検出するものである応用形態は好適である。
この好適な応用形態によれば、制御部が誤り検出のために基準となる値を読み出したり、読み出した値の演算を行う必要がないので処理を高速に行うことができる。
上記基本形態に対し、上記検出部が、検出した誤りの履歴を上記不揮発性記憶部に記憶するものである応用形態は好適である。
この好適な応用形態によれば、不揮発性記憶部に記憶された履歴は故障解析等に有用である。
上記基本形態に対し、更に所定の時間が経過するごとに初期化要求割り込みを生成するウォッチドッグタイマを備え、
上記再起動部は、上記ウォッチドッグタイマが初期化要求割り込みを生成した場合にも上記制御部に、上記揮発性記憶部に書き込まれたプログラムを始めから実行させるものであり、
上記制御部は、上記揮発性記憶部に書き込まれたプログラムの実行中は、上記ウォッチドッグタイマにおける上記所定の時間が経過する前に、このウォッチドッグタイマをリセットするものである応用形態は好適である。
この好適な応用形態によれば、検出部で誤りが検出できない事態となっても、異常動作を短時間で終了することができる。
上記基本形態に対し、更に情報が記録される情報記録媒体と、
上記情報記録媒体に情報を記録する情報記録部とを備え、
上記制御部が、上記情報記録部を制御して上記情報記録媒体に情報を記録させるものである応用形態は好適である。
これまで説明した構成は、例えばハードディスク装置のような、情報記録媒体に情報を高速に記録する応用形態に好適である。
以上説明したように、装置の上記基本形態によればビット化けのための特別な訂正回路を用いることなく、装置にとって致命的な異常制御を防止しつつ、動作速度の低減が緩和される。
基本形態および応用形態について上記説明した装置に対する具体的な実施形態を、以下図面を参照して説明する。
図1は、装置の具体的な第1実施形態であるハードディスク装置(HDD)の内部構造を示す図である。
図に示すハードディスク装置(HDD)1は、情報が記録される円盤状の磁気ディスク11、磁気ディスク11を回転駆動するスピンドルモータ12、磁気ディスク11に対して情報の書き込み読出しを行う磁気ヘッド13、磁気ヘッド13が先端に取り付けられ、磁気ディスク11に沿ってスイングするキャリッジアーム14、キャリッジアーム14を駆動する駆動部としてのボイスコイルモータ16、および、HDD1の全体を制御する制御回路20を備えている。
このHDD1では、磁気ディスク11へ情報の記録、および磁気ディスク11に記録された情報の再生が行われる。これらの情報の記録および再生にあたっては、まず、制御回路20の制御によってスピンドルモータ12が磁気ディスク11を駆動するとともにボイスコイルモータ16がキャリッジアーム14を駆動する。磁気ディスク11上には、情報が記録される領域である複数のトラックが同心円状に配置されており、各トラックは複数のサーボ領域によって区切られ、サーボ領域とサーボ領域の間にはさらに、情報の書き込みおよび読出しの単位となる複数のセクタが配置されている。サーボ領域には各トラックおよび各サーボを識別するためのサーボ番号が記録されている。磁気ヘッド13は制御回路20の制御によって磁気ディスク11上の所望のトラックに位置決めされると、磁気ディスク11の回転によって、磁気ディスク11の各トラックに並ぶセクタに順次近接する。情報の記録時には、磁気ディスク11に近接した磁気ヘッド13に電気的な記録信号が入力される。磁気ヘッド13は、入力された記録信号に応じてセクタに磁界を印加して、その記録信号に担持された情報をそれらのセクタの磁化方向の形式で記録する。また、情報の再生時には、その磁気ヘッドが、それらのセクタの磁化方向の形式で記録された情報を、それらの磁化それぞれから発生する磁界に応じて電気的な再生信号を生成することにより取り出す。
ここで、磁気ディスク11は、上述した応用形態における情報記憶媒体部の一例に相当し、スピンドルモータ12、磁気ヘッド13、ボイスコイルモータ16のそれぞれは、上述した応用形態における情報記録部の一例に相当する。
図2は、図1に示すハードディスク装置の制御回路の構成を示すブロック図である。
図2に示す制御回路20は、インストラクションを実行するプロセッサおよび周辺機能をワンチップに集積されたマイクロコントローラユニット(MCU)30、インストラクションおよびデータが記憶されたフラッシュメモリ21、外部のホストコンピュータと情報をやり取りするホストインターフェース(ホストIF)22、磁気ヘッド13(図1参照)と、情報をあらわす記録信号をやり取りするリードチャネルコントローラ(RDC)24、そして、スピンドルモータ(SPM)12およびボイスコイルモータ(VCM)16への制御信号を出力するスピンドルVCMコントローラ(SVC)25を有している。MCU30、フラッシュメモリ21、ホストIF22、フラッシュメモリ21、RDC24、および、SVC25は、外部バス26を介して互いに接続されている。
MCU30は、インストラクションを実行するマイクロプロセシングユニット(MPU)31、MPU31で実行されるインストラクションが書き込まれるRAM32、RAM32から読み出される値のパリティエラーを検出するパリティ検出部321、MCU30内部のMPUバス33aと外部バス26との間で中継を行う外部バスIF34、MCU30の初期化インストラクションが記憶されたROM35、MCU30とサーボ機能を担当する各部との間で中継を行うサーボIF36、インストラクションを実行することによってサーボ機能を実行するデジタルシグナルプロセッサ(DSP)37、DSP37の初期化インストラクションが記憶されたDSPROM38、DSP37にサーボ機能を実行させるためのインストラクションが記憶されるDSPRAM39、DSPRAM39から読み出される値のパリティエラーを検出するパリティ検出部391、および、MPU31の動作を監視するためのウォッチドッグタイマ311を有している。MPU31、RAM32、ROM35、サーボIF36、ウォッチドッグタイマ311は、MPUバス33aを介して互いに接続されており、MPU31はRAM32およびROM35に記憶されたインストラクションを実行する。MPU31はさらに、フラッシュメモリ21、ホストIF22、およびSDRAM23に対しても、外部バスIF34を介してデータの書き込みおよび読み出しを行うことができる。RAM32は、パリティ付スタティックRAM(SRAM)で構成されている。ROM35はマスクROMであり、MPU31の初期化インストラクションが記憶されている。ウォッチドッグタイマ311は、カウントを行うことにより所定の時間を計時しこの時間が経過するとMPU31に対する初期化要求割り込みを生成する。MPU31は、初期化要求割り込みに応じてROM35の初期化インストラクションを実行する。ウォッチドッグタイマ311は、MPU31が所定の時間を表すカウンタ値を書き込むことによってリセットされる。なお、MCU30には、上記各部の他にも、特殊な演算をワイヤードロジック回路によって実行しMPU31の処理を補助する回路や、汎用IOポートの入出力信号を処理する回路も含まれているが詳細な説明および図示は省略する。
DSP37、DSPROM38、SDPRAM39はDSPバス33bを介して互いに接続されている。DSP37は、サーボIF36を介してMPU31からサーボコマンドを受信し、またMPU31にサーボコマンドの実行結果を送信する。DSP37は、さらに、外部バスIF34を介してフラッシュメモリ21にアクセスすることができる。
フラッシュメモリ21は不揮発性メモリであり、MPU31およびDSP37のファームウェアが記憶されている。ファームウェアには、インストラクションおよびインストラクションの実行中に参照されるテーブル含まれる。フラッシュメモリ21は低速すなわちアクセスタイムが比較的長い。このため、インストラクションおよびテーブルは、電源投入後の初期化動作中にフラッシュメモリ21から読み出されて高速のRAM32およびDSPRAM39に書き込まれる。MPU31およびDSP37は、RAM32およびDSPRAM39に書き込まれたインストラクションコピーを読み出して実行する。このインストラクションの内容およびインストラクション実行の詳細については後述する。
ROM35には、電源投入および再起動の直後にMPU31によって実行される初期化インストラクションが記憶されている。MPU31は初期化インストラクションを読み出し実行することによって、MCU30内の各部を初期化し、フラッシュメモリ21からインストラクションを読み出してRAM32に書き込み、RAM32に書き込んだインストラクションに制御を移す。RAM32は、インストラクションに付随してパリティ符号も記憶する。パリティ検出部321は、MPU31がRAM32に対し書き込みを行う場合にパリティ符号を生成し、MPU31がRAM32から読出しを行う場合に読み出した値のパリティを確認し、パリティエラーを検出した場合には、エラーを意味する検出フラグを立て、パリティエラーを検出したアドレスを内蔵するエラーアドレスレジスタに記憶する。検出フラグおよびエラーアドレスレジスタは、MPU31によって読出し可能である。
DSPROM38もROM35と同様にマスクROMであり、電源投入および再起動の直後にDSP38によって実行される初期化インストラクションが記憶されている。DSP38はDSPROM38の初期化インストラクションを読み出し実行することによって、周辺の各部を初期化しフラッシュメモリ21からインストラクションを読み出してDSPRAM39に書き込み、DSPRAM39に書き込んだインストラクションに制御を移す。
パリティ検出部391は、DSP38がDSPRAM39に対し書き込みを行う場合にパリティ符号を生成し、DSP38がDSPRAM39から読出しを行う場合に読み出した値のパリティを確認し、パリティエラーを検出した場合には、エラーを意味する検出フラグを立て、パリティエラーを検出したアドレスを内蔵するエラーアドレスレジスタに記憶する。検出フラグおよびエラーアドレスレジスタは、DSP38によって読出し可能である。
ホストIF22は、外部のホストコンピュータからの情報書き込みおよび読出しのコマンドを受信し、MPU31に通知する。ホストコンピュータからはセクタ単位で書き込みおよび読出しが指示される。RDC24は、情報の読出し時に、磁気ヘッド13(図1参照)が読み出した情報の変換処理を行い、処理した情報をホストIF22に送信する。ホストIF22は、RDC24から受信した情報をSDRAM23に一時的に蓄積した後、ホストコンピュータに送信する。情報の書き込み時には、ホストIF22がホストコンピュータから供給されてきた情報をRDC24に送信し、この情報をRDC24が磁気ヘッド13に供給する。
サーボIF36、DSP37、DSPROM38、SDPRAM39、およびSVC25は、MPU31に対しサーボ機能を提供している。SDPRAM39に書き込まれたインストラクションを実行するDSP37は、MPU31から目的のセクタが配置されたトラックとサーボ領域の位置を受け取ると、磁気ヘッド13からRDC24を介して読み出したサーボの情報と比較し、SVC25に制御信号を送信してSPM12およびVCM16の動作を制御して磁気ヘッド13を目的のトラックの位置に移動させ追従させる。磁気ヘッド13から読み出されたサーボの情報が目的とするサーボ領域と一致しオントラック状態となった場合には、DSP37はMPU31に対しサーボの正常終了を通知する。オントラック状態となった後、目的のセクタに対しホストIF22およびRDC24によって情報の記録または情報の読み出しが行われる。DSP37は、情報が記録されたセクタの後に配置されたサーボ領域についても確認を行い、情報が適切なセクタに記憶されたことを確認する。
ここで、MPU31とROM35の組み合わせ、およびDSP37とDSPROM38の組み合わせのそれぞれは、上述した基本形態における制御部の一例に相当する。また、ROM35は、上述した基本形態における不揮発性記憶部の一例に相当し、RAM32およびDSPRAM39のそれぞれは、上述した基本形態における揮発性記憶部の一例に相当する。
続いて、インストラクションの内容およびインストラクション実行について説明する。
図3は、図2に示すフラッシュメモリに記憶されたファームウェアの構成を示す図である。
フラッシュメモリ21には、MPU31によって実行されるコマンド処理ファームウェア41と、DSP37によって実行されるサーボ処理ファームウェア42が記憶されている。ここで、ファームウェアは、プロセッサによって実行されるインストラクションとインストラクションを実行するプロセッサによって参照または書き込みされるテーブルを含んだものを意味する。
コマンド処理ファームウェア41には、MPU31が実行するインストラクション411、MPU31がインストラクションを実行する際に参照するAテーブル413の初期値およびBテーブル415が含まれている。Aテーブル413には、MCU30のIOポートを設定するIOPテーブル、データを一時保存するキャッシュテーブル、およびアドレスの変換処理に用いるアドレス変換テーブルが含まれている。Aテーブル413は、インストラクションの実行に伴い値が書き換えられるものであり、インストラクション自身が正常に実行されるため必須となるテーブルである。フラッシュメモリ21に記憶されたAテーブル413の初期値はインストラクションの実行開始時における初期値である。Bテーブル415は、インストラクションの実行に拘わらず値が一定である。コマンド処理ファームウェア41にはインストラクション411、Aテーブル413、Bテーブル415のそれぞれに対応したチェックサム412,414,416も含まれている。チェックサム412,414,416のそれぞれは、より詳細には、インストラクション411、Aテーブル413、Bテーブル415のそれぞれがさらに所定ワード数ごとに区切られたブロックに応じた値を含んでいる。
MPU31とDSP37とは、プロセッサによって実行可能なインストラクションセットが異なり、担当する機能も異なる。このため、コマンド処理ファームウェア41とサーボ処理ファームウェア42とは、まったく異なる内容であるが、サーボ処理ファームウェア42は、コマンド処理ファームウェア41と同様の構成を有しており、具体的には、DSP37が実行するインストラクション421、DSP37がインストラクションを実行する際に参照するAテーブル423およびBテーブル425が含まれており、さらに、インストラクション421、Aテーブル423およびBテーブル425のそれぞれに相当したチェックサム422,424,426が含まれている。
ここで、インストラクション411,421は、上述した基本形態におけるプログラムの一例に相当し、Aテーブル413、423が上述した基本形態における変数データの一例に相当し、Bテーブル415、425が上述した基本形態における定数データの一例に相当する。
MPU31は、電源投入後および再起動後、ROM35に記憶された初期化インストラクションを実行することによって、フラッシュメモリ21に記憶されたコマンド処理ファームウェア41を読み出し、このコマンド処理ファームウェア41の全体に亘るコピーをRAM32とSDRAM23の双方に書き込む。コピーがRAM32に書き込まれる際にはパリティ検出部321によってワードごとにパリティが生成され、RAM32にはこのパリティも記憶される。コピーの書き込みが終了した後、初期化プログラムを実行していたMPU31は、RAM32に書き込まれたコマンド処理ファームウェア41のインストラクション411の実行を開始する。Aテーブル413はRAM32に書き込まれており、インストラクション411の実行に伴い書き換えられ変化していく。SDRAM23に書き込まれたコピーは、RAM32のバックアップデータとなる。
図4は、フラッシュメモリに記憶されたコマンド処理ファームウェアのコピーがRAMおよびSDRAMに書き込まれる様子を説明する図である。
フラッシュメモリ21に記憶されたコマンド処理ファームウェアに含まれるインストラクション411、Aテーブル(初期値)413、Bテーブル415、およびチェックサム412,414,416のコピーが、RAM32とSDRAM23の双方に書き込まれる。
DSP37も、MPU31と同様に、電源投入(Power On)後および再起動(Reboot)後、DSPROM38に記憶された初期化プログラムを実行することによって、フラッシュメモリ21に記憶されたサーボ処理ファームウェア42を読み出し、このサーボ処理ファームウェア42の全体に亘るコピーをDSPRAM39とSDRAM23の双方に書き込む。コピーがDSPRAM39に書き込まれる際にはパリティ検出部391によってワードごとにパリティが生成され、DSPRAM39にはこのパリティも記憶される。コピーの書き込みが終了した後、初期化プログラムを実行していたDSP37は、DSPRAM39に書き込まれたサーボ処理ファームウェア42のうちインストラクション421の実行を開始する。SDRAM23に書き込まれたコピーは、DSPRAM39のバックアップデータとなる。なお、以降の説明では、RAM32およびSDRAM23に書き込まれたインストラクション、Aテーブル、およびBテーブルについてもフラッシュメモリ21に記憶されたものと同一の符号を付して説明を続ける。
続いて、制御回路20の動作の概略を説明する。コマンド処理ファームウェア41を実行するMPU31は、ホストIF22を介して外部のホストコンピュータから、特定のセクタに対する情報の記録(Write)または情報の読み出し(Read)のコマンドを受け、指定されたセクタに対応するトラックおよびサーボ領域を指定するとともに、ホストIF22およびRDC24に対し、目的のサーボ領域に続く目標のセクタに対する記録または読出しの設定を行う。サーボ処理ファームウェア42を実行するDSP37は、MPU31から目的とするトラックおよびサーボ領域の指定を受け、RDC24を介して磁気ヘッド13からサーボ領域のサーボ番号を読み出しながら、SVC25によるVCM16の駆動を制御して、磁気ヘッド13を指定されたトラック上に移動させる。磁気ヘッド13が指定されたトラック上に移動すると、磁気ヘッド13からは指定されたサーボ領域のサーボ番号が読み出される。こうしてDSP37はオントラック状態、すなわち磁気ヘッド13が指定されたトラック上にある状態を検知し、このオントラック状態をMPU31に通知する。また、ホストIF22およびRDC24が、サーボ領域に続く目的のセクタに対する記録または読出しを行う。
図5は、磁気ヘッドがトラックに沿って移動している状態で、サーボ領域が検出されるタイミングを示す図である。
磁気ヘッド13は、トラックに沿って移動している状態では、トラック上に配置された複数のサーボ領域n,n+1,n+2,…が磁気ヘッド13を通過する。ここでは、目的とするサーボ領域がサーボ領域nとして説明する。サーボ領域nが磁気ヘッド13を通過すると、DSP37は、サーボ領域の通過を検出する(図5のタイミングA)。この後、DSP37はサーボ領域のサーボ番号nを取得し、MPU31によって指定されたサーボ領域の番号と一致するか確認し、一致する場合には、オントラック状態であることをサーボ番号とともにMPU31に通知する(タイミングB)。このサーボ領域の後、目的とするセクタが磁気ヘッド13を通過する。MPU31では、DSP37からの通知によって割り込みが発生する(タイミングC)。MPU31は割り込み処理で、DSP37から通知されたサーボ番号とMPU31が指定していたサーボ番号の一致を確認し、一致が確認されればオントラック状態を表すフラグを立てて割り込み処理を終了する。割り込み処理から復帰したMPU31は通常処理でフラグを確認することにより、オントラック状態を確認する(タイミングD)。
オントラック状態の確認は、目的とするセクタが磁気ヘッド13を通過した後でも行われる。
図6は、記録コマンドにおいて、サーボ領域が検出されるタイミングを示す図である。図6には、サーボ領域nに続く3つのセクタm,m+1,m+2に情報が記録される場合のタイミングが示されている。
情報が最終のセクタm+2まで適切に記録されたか否か、すなわち、磁気ヘッド13がセクタm+2までトラックに沿って移動したか否かは、セクタm+2の後のサーボ領域n+1の通過により検知される。
セクタm+2に情報の記録が行われた後、サーボ領域n+1が磁気ヘッド13を通過すると、DSP37は、サーボ領域の通過を検出し(図6のタイミングA)、サーボ領域のサーボ番号n+1を取得し、MPU31によって指定されたサーボ領域の次の番号と一致するか確認し、一致する場合には、オントラック状態であることをサーブ番号とともにMPU31に通知する(タイミングB)。MPU31では、DSP37からの通知によって割り込みが発生する(タイミングC)。MPU31はオントラック状態を表すフラグを立てて割り込み処理を終了する。割り込み処理から復帰したMPU31は通常処理でフラグを確認することにより、記録が成功したと判断し、ホストコンピュータに記録コマンドの完了ステータスXを報告する(タイミングE)。これによって、ホストコンピュータは記録が成功したことを検知する。
MPU31およびDSP37は、上述した処理とともに、RAM32およびSDRAM23に書き込まれたプログラムのビット化けを検出し、ビット化けを検出した場合にはプログラムの復旧を行っている。この実施形態では、RAM32に書き込まれた、インストラクションおよびテーブルを含むプログラムのビット化けは、まず、パリティ検出部321によって検出される。パリティ検出部321は、アドレスを指定したMPU31によってパリティ付きのRAM32からプログラムのインストラクションおよびテーブルが読み出されるとき、パリティ検出部321は読み出された内容のパリティをチェックする。パリティ検出部321は、パリティエラーを検出した場合、エラーが検出されたアドレスを内部のレジスタに記憶し、エラーの検出を表すフラグを立てる。エラーが検出されたアドレスおよびエラーの検出を表すフラグは、次に、MPU31によって読み出される。このようにして、最終的にはMPU31が、RAM32に書き込まれたプログラムのビット化けを検出する。
また、この実施形態では、DSPRAM39に書き込まれた、DSP37のインストラクションおよびテーブルを含むプログラムのビット化けは、まず、パリティ検出部391によって検出される。パリティ検出部391は、アドレスを指定したDSP37によってパリティ付きのDSPRAM39からプログラムのインストラクションおよびテーブルが読み出されるとき、パリティ検出部391は読み出された内容のパリティをチェックする。パリティ検出部391は、パリティエラーを検出した場合、エラーが検出されたアドレスを内部のレジスタに記憶し、エラーの検出を表すフラグを立てる。エラーが検出されたアドレスおよびエラーの検出を表すフラグは、次に、DSP37によって読み出される。このようにして、最終的にはDSP37が、DSPRAM39に書き込まれたプログラムのビット化けを検出する。
図7は、図2に示すDSPにおけるサーボ確認処理を示すフローチャートである。図7には、図5に示すタイミングAおよびタイミングBに対応して、DSPがサーボ領域を検出してからMPU31にオントラック状態を通知するまでの処理が示されている。なお、DSP37が行うサーボ処理には、図7に示すサーボ確認処理以外にも、MPU31からコマンドを受けて、SVC25を制御する処理や、オントラック状態に至らない場合にSVC25を制御する処理も含まれているが、これらは従来公知の処理であり、詳細な説明および図示を省略する。
図7に示すサーボ確認処理において、磁気ディスク11のトラックに配置されたサーボ領域が磁気ヘッド13を通過すると、DSP37は、RDC24(図1参照)を介してサーボ領域を検出する(S11)。次に、DSP37は、DSPRAM39でパリティエラーが発生したか否かを判別する(S12)。より詳細には、DSP37は、パリティ検出部391においてエラーの検出を表すフラグが立っているか否かを判別する。パリティエラーが発生していない場合(ステップS12でNo)、DSP37はサーボ番号取得の処理(S16)を行うが、パリティエラーが発生していた場合(ステップS12でYes)、DSP37はエラー位置確認を行う(S13)。より詳細には、DSP37はパリティ検出部391からエラーが検出されたアドレスを読出し、エラーが検出されたアドレスがDSPRAM39に書き込まれたサーボ処理ファームウェア42のうち、インストラクション421、Aテーブル423、およびBテーブル425のいずれに属するものであるかを判別する。
ステップS13の確認の結果、Aテーブルまたはインストラクションでのエラーが確認された場合、DSP37は、MPU31に対しサーボ処理の失敗を通知し(S14)、フラッシュメモリ21からのリブート(再起動)を実施する(S15)。この処理によって、DSP37が再起動する。より詳細には、DSP37は、DSPROM38に記憶された初期化プログラムを実行する。これによって、DSP37は、フラッシュメモリ21(図2参照)に記憶されたサーボ処理ファームウェア42(図3参照)を読み出し、このサーボ処理ファームウェア42の全体に亘るコピーをDSPRAM39とSDRAM23の双方に書き込み、そして、DSPRAM39に書き込まれたインストラクション421を始めから実行する。これによって、サーボ処理はリセットされ、ビット化けに起因した、装置にとって致命的な異常制御を防止することができる。なお、DSP37からサーボ処理の失敗が通知されたMPU31は、ホストコンピュータから指示された情報の記録または読出しを完了するため、リブートが終了したDSP37に再度サーボ処理を実行させることとなる。
ステップS13の確認の結果、Bテーブルでのエラーが確認された場合、DSP37は、バックアップデータからの復元処理(S16)を行ってから、サーボ番号取得の処理(S17)を行う。ステップS16のバックアップデータからの復元処理では、DSP37は、SDRAM23に書き込まれたサーボ処理ファームウェア42のコピーのうち、Bテーブル425のコピーを読み出して、DSPRAM39のBテーブルの領域に書き込む。これによって、Bテーブルの領域が初期状態となりエラーが解消する。Bテーブルはインストラクションの実行に拘わらず値が変わらない。したがって、SDRAM23から読み出された値が書き込まれることによって、エラーが検出された時点における、エラーのない正規の状態に復元される。Bテーブルでエラーが検出された場合には、Bテーブル自身を復元するだけでサーボ処理を継続することにより、サーボ処理全体として動作速度の低減が抑えられる。ステップS16の復元処理では、ステップS12でエラーを検出する前に実行していた箇所の続きの処理、すなわちステップS17のサーボ番号取得・オントラック状態確認処理からインストラクションの実行が継続される。
ステップS17のサーボ番号取得・オントラック状態確認処理で、DSP37は、検出されたサーボ領域のサーボ番号をRDC24から取得し、目的とするサーボ番号との比較を行う。RDC24から取得したサーボ番号と目的のサーボ番号とが一致する場合には、磁気ヘッド13が目的のトラック上にあるオントラック状態となっている。
次に、DSP37は、DSPRAM39でパリティエラーが発生したか否かを再び判別する(S22)。ステップS17のサーボ番号取得・オントラック状態確認処理ではDSPRAM39からの読出しが広範囲にわたって行われ、パリティ検出部391によってパリティエラーが検出されている確率が高いためである。パリティエラーが検出された場合の処理は、上述したステップS13〜S16と同様である。すなわち、パリティエラーが発生していた場合(ステップS22でYes)、DSP37はエラー位置確認を行う(S23)。Aテーブルまたはインストラクションでのエラーが確認された場合、DSP37は、MPU31に対しサーボ処理の失敗を通知し(S24)、フラッシュメモリ21からのリブートを実施する(S25)。Bテーブルでのエラーが確認された場合、DSP37は、バックアップデータからの復元処理(S26)を行う。
次のステップS27で、DSP37は、MPU31にサーボ処理の完了を通知し、サーボ確認処理を終了する。図7に示すサーボ確認処理によって、DSP37は、MPU31にオントラック状態を通知する。
ここで、DSP37が実行するステップS12,S13およびステップS22,S23の処理とパリティ検出部391との組み合わせが、上述した基本形態における検出部の一例に相当する。また、上記ステップS16およびステップS26の処理が、上述した基本形態における定数回復部の一例に相当し、上記ステップS15およびステップS25の処理が上述した基本形態における再起動部の一例に相当する。
続いて、MPU31の処理について説明する。
図8は、図2に示すMPUにおけるコマンド実行処理を示すフローチャートである。
コマンド実行処理において、MPU31は、外部のホストコンピュータからコマンドを受信すると(S31)コマンド解析を行う(S32)。コマンド解析の処理では、コマンドに含まれたセクタの値から、目的のトラック番号やサーボ番号が求められる。
次に、MPU31は、RAM32でパリティエラーが発生したか否かを判別する(S34)。より詳細には、MPU31は、パリティ検出部321においてエラーの検出を表すフラグが立っているか否かを判別する。パリティエラーが発生していない場合(ステップS34でNo)、MPU31はシークおよびリード・ライト処理(S39)を行うが、パリティエラーが発生していた場合(ステップS34でYes)、MPU31はエラー位置確認を行う(S35)。より詳細には、MPU31はパリティ検出部321からエラーが検出されたアドレスを読出し、エラーが検出されたアドレスがRAM32に書き込まれたコマンド処理ファームウェア41のうち、インストラクション411、Aテーブル413、およびBテーブル415のいずれかを判別する。
ステップS35の確認の結果、Aテーブルまたはインストラクションでのエラーが確認された場合、MPU31は、ホストコンピュータに対しエラーを報告し(S36)、フラッシュメモリ21からのリブートを実施する(S37)。この処理によって、MPU31が再起動する。より詳細には、MPU31は、ROM35に記憶された初期化インストラクションを実行する。これによって、MPU31は、フラッシュメモリ21(図2参照)に記憶されたコマンド処理ファームウェア41(図3参照)を読み出し、このコマンド処理ファームウェア41の全体に亘るコピーをRAM32とSDRAM23の双方に書き込み、そして、インストラクション411の実行を開始する。これによって、コマンド実行処理はリセットされ、ビット化けに起因した、装置にとって致命的な異常制御を防止することができる。なお、MPU31はホストコンピュータから複数のコマンドを受信し、実行待ちのコマンドを保持している場合があるが、これら実行待ちのコマンドについては、コマンド実行処理がリセットされると、実行終了が報告されないため、ホストコンピュータでタイムアウトエラーとして取り扱われることととなる。
ステップS35の確認の結果、Bテーブルでのエラーが確認された場合、MPU31は、バックアップデータからの復元処理(S38)を行ってから、シークおよびリード・ライト処理(S39)を行う。ステップS38のバックアップデータからの復元処理では、MPU31は、SDRAM23に書き込まれたコマンド処理ファームウェア41のコピーのうち、Bテーブル415のコピーを読み出して、RAM32のBテーブルの領域に書き込む。これによって、Bテーブルの領域が初期状態となりエラーが解消する。Bテーブルはインストラクションの実行に拘わらず値が変わらない。したがって、SDRAM23から読み出された値が書き込まれることによって、エラーが検出された時点における、エラーのない正規の状態に復元される。また、インストラクションの実行に必須となるAテーブルと異なり、Bテーブルでエラーが発見された状況でもインストラクショがMPU31によって実行されている確率は高い。したがって、Bテーブルでエラーが検出された場合には、Bテーブル自身を復元するだけで、コマンド実行処理を継続することにより、コマンド実行処理全体として動作速度の低減が緩和する。
ステップS39のシークおよびリード・ライト処理で、MPU31は、DSP37に得られたトラック番号およびサーボ番号を供給してサーボ処理を行わせ、ホストIF22およびRDC24に情報の記録または読出しの設定を行う。この結果、DSP37で目的のトラック番号およびサーボ番号が検出され、ホストIF22およびRDC24を介して、磁気ディスク11上の目的のセクタに対する記録または読出しが行われる(S41)。記録または読出しが完了すると(S41)、MPU31は、RAM32でパリティエラーが発生したか否かを再び判別する(S44)。パリティエラーが検出された場合の処理は、上述したステップS34〜S38と同様である。すなわち、パリティエラーが発生していた場合(ステップS44でYes)、MPU31はエラー位置確認を行う(S45)。Aテーブルまたはインストラクションでのエラーが確認された場合、MPU31は、ホストコンピュータに対しエラーを報告し(S46)、フラッシュメモリ21からのリブートを実施する(S47)。Bテーブルでのエラーが確認された場合、MPU31は、バックアップデータからの復元処理(S48)を行ってから、シークおよびリード・ライト処理(S49)を行う。
ステップS49の処理で、MPU31は、ステップS31で受信したコマンドの正常終了をホストコンピュータに報告する。これによって、ホストコンピュータが情報の記録または読出しが完了したことを認識する。
ここで、MPU31が実行するステップS34,S35およびステップS44,S45の処理とパリティ検出部321との組み合わせが、上述した基本形態における検出部の一例に相当する。また、上記ステップS38およびステップS48の処理が、上述した基本形態における定数回復部の一例に相当し、上記ステップS37およびステップS47の処理が上述した基本形態における再起動部の一例に相当する。
図9は、図6に示す本実施形態の比較例として、仮に、ECCメモリを採用した場合の検出タイミングを示す図である。
図9に示すように、ECCメモリは、エラー訂正回路によるアクセス遅延が大きいため、ECCメモリを採用すると、オントラック状態であることをサーブ番号とともにMPU31に通知するタイミング(タイミングB)に遅延が生じる。この結果、MPU31がホストコンピュータに記録コマンドの完了ステータスXを報告するタイミング(タイミングE)が遅れる。
しかし、この実施形態によれば、パリティエラーの発生を確認するだけなので、サーボ確認の応答が図6に示すように遅滞なく行われる。
これまで、MPU31がホストコンピュータからのコマンド受信に対応した処理を説明したが、続いて、コマンドを受信していない状態で実行されるRAMパトロール処理について説明する。
RAMパトロール処理は、ホストコンピュータから受信したコマンドのうち未処理のコマンドがない場合に実行される。RAMパトロール処理では、MPU31がRAM32に書き込まれたインストラクションおよびテーブルをワード単位で順に全て読み出し、パリティエラーを検出する。インストラクションおよびテーブルを所定ワード数ごとに区切ったブロックごとに、チェックサムを確認する。また、コマンドを受信した場合には、RAMパトロール処理を中断してコマンドに対応する処理を行い、コマンドの処理終了後には、中断した箇所からRAMパトロール処理を続行する。
図10、図11および図12は、MPUのRAMパトロール処理を示すフローチャートである。図10には、RAM32のうちインストラクションが書き込まれた領域を対象とした
処理が示され、図11には、Aテーブルが書き込まれた領域を対象とした処理が示され、
図12には、Bテーブルが書き込まれた領域を対象とした処理が示されている。
RAMパトロール処理でMPU31は、まず、ウォッチドッグタイマのリセットを行う(S50)。より詳細には、MPU31は、ウォッチドッグタイマ311に対し初期化要求割り込みを行う所定の時間を設定する。所定の時間として例えば5秒間とする。時間が設定されることによってウォッチドッグタイマ311がリセットされ、5秒間の計時を開始する。仮に、計時の開始から5秒が経過した場合には、ウォッチドッグタイマ311が初期化要求割り込みを生成しMPU31が初期化要求割り込みに応じてフラッシュメモリ21からのリブートを実施する。ただし、ステップS50の処理は、5秒以下の間隔で実施され、処理の度にウォッチドッグタイマ311がリセットされるので、MPU31が暴走しない限りウォッチドッグタイマ311の初期化要求割り込みに起因するリブートは生じない。ウォッチドッグタイマにおけるリセット処理のさらなる詳細については後述する。
MPU31は次に、新規の処理か、またはコマンド受信により中断していた処理の続行であるかを判別し(S51)、電源投入後またはリブート後における新規の処理である場合には、ポインタの初期化を行う(S52)。より詳細には、エラー検出の対象となるアドレスを表すポインタに対し、RAM32におけるインストラクションが書き込まれたインストラクション領域の先頭アドレスを設定する。
次に、ポインタのアドレスからエラー検出の対象領域を判別する(S53)。ポインタが表す対象領域がインストラクションの場合にはステップS54の処理を行い、対象領域がAテーブルの場合にはステップS74(図11参照)の処理を行い、対象領域がBテーブルの場合にはステップS94(図12参照)の処理を行う。
図10に示すステップS54では、MPU31は、RAM32のポインタが表すアドレスから読出しを行う。次に、MPU31は、パリティ検出部321の検出フラグによって、パリティエラーが発生したか否かを判別し(S55)、パリティエラーが発生した場合には(S55でYes)、アドレスの情報をフラッシュメモリ21のログに履歴としてセーブして(S56)、フラッシュメモリ21からのリブートの処理を行う(S57)。ログは、後の故障解析等で利用される。リブートの処理は、図8を参照して説明したコマンド実行処理におけるリブート(S37)と同一であり、この処理によって、MPU31が再起動する。一方、パリティエラーが発生しない場合(S55でNo)、ホストコンピュータから受信したコマンドがあるときには(S58でYes)、RAMパトロール処理を中断してコマンドの処理を実行し(S59)、コマンドの処理後RAMパトロール処理を再開する。コマンドがないときには(S58でNo)、インストラクションを構成する複数ブロックのうちの1つのブロックが完了したか否かを判別し(S61)、1つのブロックが完了していない場合には(S61でNo)、ポインタを加算して(S62)リード(S54)を繰り返す。1つのブロックが完了した場合には(S61でYes)、チェックサムを確認する(S63)。より詳細には、MPU31が、今まで読み出したブロックの値からチェックサムを算出し、SDRAM23に書き込まれたコマンド処理ファームウェア41のコピーのうち、インストラクション411のチェックサム412のうち対象となっているブロックに対応する値と一致するか否かを判別する。ここで、チェックサムエラーが検出された場合にも(S64でYes)、ログへのセーブを行い(S65)、リブートの処理を行う(S66)。チェックサムエラーが検出されない場合には(S64でNo)、ポインタを加算し(S67)、インストラクション411の領域が終了しない場合には(S68でNo)リード(S54)を繰り返す。インストラクション411の領域が終了した場合には(S68でYes)、ポインタに、RAM32におけるAテーブルが書き込まれた領域のアドレスを設定し(S69)、Aテーブルについてエラーチェック(図11のS71)を行う。
図11に示すAテーブルについてのエラーチェックは、図10に示すインストラクションについてのエラーチェックと同様に行われる。具体的には、図11に示すステップS74からステップS89までのそれぞれの処理は、図10に示すステップS54からステップS69までのそれぞれの処理と同様であり、異なるのは、エラー検出の対象となるRAM32のアドレスである。また、図11に示すAテーブルについてのエラーチェックで、Aテーブル413の領域が終了した場合には(S88でYes)、ポインタに、RAM32におけるBテーブルが書き込まれた領域のアドレスを設定し(S89)、Bテーブルについてエラーチェック(図12のS94)を行う。
図12に示すBテーブルについてのエラーチェックは、大半の処理が図10に示すインストラクションについてのエラーチェックと同様に行われる。具体的には、図11に示すステップS94からステップS109までのそれぞれの処理は、図10に示すステップS54からステップS69までのそれぞれの処理と同様であり、異なるのはエラー検出の対象となるRAM32のアドレスである。ただし、図12に示すBテーブルについてのエラーチェックでは、パリティエラーを検出した場合(S95でYes)、およびチェックサムエラーを検出した場合(S104でYes)に、リセットを伴うフラッシュメモリ21からのリブートの処理ではなく、図8に示すステップS38のように、SDRAM23のバックアップデータからBテーブル領域のみを復元し(S97,S106)、ポインタを加算して(S111,S112)エラーチェックを続行する点が異なる。また、Bテーブルについてのエラーチェックで、Bテーブル413の領域が終了した場合には(S108でYes)、ポインタに、RAM32におけるインストラクションが書き込まれた領域のアドレスを設定し(S109)、インストラクションについてエラーチェック(図10のS54)を行う点が異なる。Bテーブルについてのエラーチェックが終了後、エラーチェックが、インストラクションのエラーチェック(図10のS54)から再び繰り返される。また、この繰り返しごとにウォッチドッグタイマのリセット(図10のS50)も実行される。
MPU31が実行する処理には、タイマ割り込みや外部割込みといったハードウェア割り込みによって実行される割り込み処理(例外処理)と、上述したパトロール処理のように、割り込み処理が実行されていない状態で繰り返し実行される、通常の逐次作業および分岐作業からなる通常処理とがある。本実施形態では、割り込み処理ではなく通常処理としてのパトロール処理でウォッチドッグタイマのリセット(図10のS50)が繰り返し実行されている。
図13は、図2に示すウォッチドッグタイマに関する処理の状態を示すタイムチャートである。図13には、ウォッチドッグタイマ311の動作およびウォッチドッグタイマの設定処理の例が時間の経過を追って示されている。
図13に示す例では、ウォッチドッグタイマ311が、通常処理であるパトロール処理内のウォッチドッグタイマリセット処理(図10のS50)で、MPU31によってリセットされる(時間:0S)、このときウォッチドッグタイマ311には、初期化要求割り込みを生成するまで所定の時間として5秒が設定される。パトロール処理におけるRAM32のチェックが一巡すると、ウォッチドッグタイマ311が再びリセットされる(時間:2秒)。MPU31が、RAM32に書き込まれたプログラムに含まれているパトロール処理を実行中に所定時間である5秒が経過する前にウォッチドッグタイマ311をリセットする。ウォッチドッグタイマ311が5秒以内にリセットされる限り、初期化要求割り込みは生成されない。
ここで、RAM32のビット化けが生じ、パリティチェックでエラーが検出できずにMPU31が暴走すると、ウォッチドッグタイマのリセット処理(図10のS50)が実行されない。この結果、ウォッチドッグタイマ311が、前回のリセットから5秒経過した時点で(時間:7S)初期化要求割り込みを生成する。これによりMPU31が再起動する。より詳細には、MPU31が、ROM35の初期化プログラムを実行することによって、MCU30の各部を初期化し、フラッシュメモリ21からプログラムを読み出してRAM32に書き込む。本実施形態によれば、ウォッチドッグタイマのリセット処理が、割り込み処理ではなく、通常処理であるRAMパトロール処理に含まれている。
ここで、MPU31が実行するステップS54,S55,S56、ステップS74,S75,S76、ステップS94,S95,S96の処理とパリティ検出部321との組み合わせ、および、ステップS63,S64,S65、ステップS83,S84,S85,S103,S104,S105の処理のそれぞれが、上述した基本形態における検出部の一例に相当する。また、上記ステップS97,S106の処理のそれぞれが、上述した基本形態における定数回復部の一例に相当し、上記ステップS57,S66,S77,S86の処理のそれぞれが上述した基本形態における再起動部の一例に相当する。
図14は、比較例として、ウォッチドッグタイマのリセット処理をタイマ割り込み処理として実行した場合の処理を示すタイムチャートである。
ウォッチドッグタイマの定期的なリセット処理は、例えばタイマ割り込み処理といった割り込み処理として実行することも可能である。しかし、タイマ割り込みハードウェアであるタイマによって実行開始するため、RAMのビット化けに起因するMPUの暴走に拘わらず正常に動作する可能性が高い。例えば、図13に示すように、ウォッチドッグタイマのリセット処理を1秒に設定されたタイマによるタイマ割り込み処理で実行すると、RAMのビット化けによりMPUが暴走しても(時間:3S)、ウォッチドッグタイマのリセット処理が1秒ごとに実行されるため、ウォッチドッグタイマ311による初期化要求割り込みが生成されない。
一方、図13に示す本実施形態の例では、MPU31が、RAM32に書き込まれたプログラムに含まれているパトロール処理を実行中は、ウォッチドッグタイマ311をリセットするので、RAM32のビット化けがパリティチェックで検出できない場合にもMPU31の暴走による、HDD1の異常動作や磁気ディスク11の破損を防ぐことができる。
次に、装置の具体的な第2実施形態であるHDDについて説明する。以下の第2実施形態の説明にあたっては、これまで説明してきた第1実施形態における各要素と同一の要素には同一の符号を付けて示し、前述の実施形態との相違点について説明する。
具体的な第2実施形態のHDDは、第1実施形態のHDD2(図1)の制御回路20(図2)に対し、2つのパリティ検出部321が削除されている。また、第2実施形態のHDDは、MPUおよびDSPで実行される処理が異なる。第2実施形態のHDDにおけるその他の点は第1実施形態と同じであり、これまで説明してきた第1実施形態における図および符号を流用して説明する。
第2実施形態のDSP37は、サーボ確認処理において、RAM32のパリティエラーを検出する代わりに、チェックサムを計算することによってビット化けを検出する。
図15は、第2実施形態におけるDSPのサーボ確認処理を示すフローチャートである。
図15に示すサーボ確認処理において、磁気ディスク11のトラックに配置されたサーボ領域が磁気ヘッド13を通過すると、DSP37は、RDC24(図1参照)を介してサーボ領域を検出する(S211)。DSP37は、次に、サーボ番号取得の処理(S212)を行い、次のステップS213で、MPU31にサーボ処理の完了を通知する。これらステップS212,S213の処理は、図7を参照して説明したステップS17のサーボ番号取得、およびステップS27のサーボ処理完了通知と同じである。サーボ確認処理によって、DSP37は、MPU31にオントラック状態を通知する。
次に、DSP37は、DSPRAM39にロードされているプログラムのチェックサム計算処理を実行する(S214)。図3に示すように、フラッシュメモリ21に記憶されているサーボ処理ファームウェア42は、インストラクション421、Aテーブル423、およびBテーブル425を有している。そして、インストラクション421、Aテーブル423、およびBテーブル425のそれぞれは、さらに所定ワード数ごとに区切られたブロックで構成されており、ブロックごとにチェックサム422,424,426が記憶されている。DSPRAM39およびSDRAM23の双方には、フラッシュメモリ21に記憶されているサーボ処理ファームウェア42のコピーが書き込まれている。ステップS214の計算処理では、DSPRAM39に書き込まれたインストラクション421、Aテーブル423、およびBテーブル425のそれぞれが有する全てのブロックについて、チェックサムを計算する。次に、DSP37は、計算したチェックサムをSDRAM23内のバックアップのチェックサムと比較する(S215)。上述したように、SDRAM23には、バックアップとして、図3に示すように、フラッシュメモリ21に記憶されているサーボ処理ファームウェア42のコピーが、チェックサムも含め書き込まれている。ステップS215では、計算によって得られたチェックサムと、SDRAM23に書き込まれているチェックサムとを比較する。
ステップS215でのチェックサムの比較結果、全てのチェックサムが一致している場合、サーボ確認処理を終了する。ステップS215のチェックサムでの比較結果、チェックサムが不一致の場合、DSP37はエラー位置確認を行う(S216)。より詳細には、DSP37はチェックサムが不一致となった箇所が、DSPRAM39に書き込まれたサーボ処理ファームウェア42のうち、インストラクション421、Aテーブル423、およびBテーブル425のいずれかを判別する。ステップS216の確認の結果、Aテーブルまたはインストラクションでのエラーが確認された場合、DSP37は、MPU31に対しサーボ処理の失敗を通知し(S217)、フラッシュメモリ21からのリブートを実施する(S218)。この処理によって、DSP37が再起動する。先のステップS213の処理で、MPU31はサーボ処理完了の通知を受けているが、今回のステップS213の処理で、サーボ処理失敗の通知を受けることによって、DSP37によるサーボ処理が失敗したことを認識する。
ステップS216の確認の結果、Bテーブルでのエラーが確認された場合、DSP37は、バックアップデータからの復元処理(S219)を行ってから、サーボ確認処理を終了する。これによって、Bテーブルの領域が初期状態となりエラーが解消する。
ここで、DSP37が実行するステップS211からステップS213の処理が、上述した基本形態および応用形態における要求処理部の一例に相当し、ステップS214からステップS216の処理が、上述した基本形態および応用形態における検出部の一例に相当する。
図16は、第2実施形態におけるMPUのコマンド実行処理を示すフローチャートである。
図16に示すコマンド実行処理のうち、ステップS231およびステップS232は、図8に示すステップS31およびステップS32とそれぞれ同じであり、図16に示すステップS239、ステップS241、ステップS249は、図8に示すステップS39、ステップS41、およびステップS49とそれぞれ同じである。したがって、図16に示すコマンド実行処理のうち、図8に示す処理と異なる部分について説明する。
コマンド実行処理において、MPU31は、記録または読出しが完了すると(S241)、RAM32にロードされているプログラムのチェックサム計算処理を実行する(S242)。
フラッシュメモリ21に記憶されているコマンド処理ファームウェア41は、インストラクション411、Aテーブル413、およびBテーブル415を有している。そして、インストラクション411、Aテーブル413、およびBテーブル415のそれぞれは、さらに所定ワード数ごとに区切られたブロックで構成されており、ブロックごとにチェックサム412,414,416が記憶されている。RAM32およびSDRAM23の双方には、フラッシュメモリ21に記憶されているコマンド処理ファームウェア41のコピーが書き込まれている。ステップS242の計算処理では、RAM32に書き込まれたインストラクション411、Aテーブル413、およびBテーブル415のそれぞれが有する全てのブロックについて、チェックサムを計算する。次に、MPU31は、計算したチェックサムをSDRAM23内のバックアップのチェックサムと比較する(S244)。上述したように、SDRAM23には、バックアップとして、図3に示すように、フラッシュメモリ21に記憶されているコマンド処理ファームウェア41のコピーが、チェックサムも含め書き込まれている。ステップS244では、計算によって得られたチェックサムと、SDRAM23に書き込まれているチェックサムとを比較する。
ステップS244でのチェックサムの比較結果、全てのチェックサムが一致している場合、ホストコンピュータにコマンドの正常終了を通知する(S249)。ステップS244のチェックサムでの比較結果、チェックサムが不一致の場合、MPU31はエラー位置確認を行う(S245)。確認の結果、Aテーブルまたはインストラクションでのエラーが確認された場合、MPU31は、コマンドのエラー終了を通知し、フラッシュメモリ21からのリブートを実施する(S218)。この処理によって、MPU31が再起動する。
ステップS244の確認の結果、Bテーブルでのエラーが確認された場合、MPU31は、バックアップデータからの復元処理(S248)を行ってから、ホストコンピュータにコマンドの正常終了を通知する(S249)。
図15を参照して説明したように、DSP37は、DSP37に対する外部の制御部であるMPU31から送信されてきたサーボ確認の要求に応じたステップS211〜S214の処理が完了した後でエラーを検出している。したがって、エラー検出に時間がかかるチェックサムを採用する場合であっても、サーボ確認の応答で生じる遅延を抑えることができる。
なお、具体的な各実施形態に対する上記説明では、「課題を解決するための手段」で説明した基本形態における装置の一例としてHDD1が示されているが、この装置は、HDD以外にも光ディスクやテープドライブ等記録装置であってもよく、あるいは記録装置以外の電子制御装置であってもよい。
装置の具体的な第1実施形態であるハードディスク装置(HDD)の内部構造を示す図である。 図1に示すハードディスク装置の制御回路の構成を示すブロック図である。 図2に示すフラッシュメモリに記憶されたファームウェアの構成を示す図である。 フラッシュメモリに記憶されたコマンド処理ファームウェアのコピーがRAMおよびSDRAMに書き込まれる様子を説明する図である。 磁気ヘッドがトラックに沿って移動している状態で、サーボ領域が検出されるタイミングを示す図である。 記録コマンドにおいて、サーボ領域が検出されるタイミングを示す図である。 図2に示すDSPにおけるサーボ確認処理を示すフローチャートである。 図2に示すMPUにおけるコマンド実行処理を示すフローチャートである。 図6に示す本実施形態の比較例として、仮に、ECCメモリを採用した場合の検出タイミングを示す図である。 MPUのRAMパトロール処理を示すフローチャートである。 図10に続く処理を示すフローチャートである。 図11に続く処理を示すフローチャートである。 図2に示すウォッチドッグタイマに関する処理の状態を示すタイムチャートである。 本実施形態の比較例として、ウォッチドッグタイマのリセット処理をタイマ割り込み処理として実行した場合の処理を示すタイムチャートである。 第2実施形態におけるDSPのサーボ確認処理を示すフローチャートである。 第2実施形態におけるMPUのコマンド実行処理を示すフローチャートである。
符号の説明
1 ハードディスク装置(HDD)
11 磁気ディスク
12 スピンドルモータ
13 磁気ヘッド
16 ボイスコイルモータ
20 制御回路
21 フラッシュメモリ
41 コマンド処理ファームウェア
42 サーボ処理ファームウェア
311 ウォッチドッグタイマ
32 RAM
321 パリティ検出部
39 DSPRAM
391 パリティ検出部
411,421 インストラクション(プログラム)
412,414,416,422,424,426 チェックサム
413,423 Aテーブル(変数データ(の初期値))
415,425 Bテーブル(定数データ)

Claims (7)

  1. プログラム、該プログラムの実行に伴い値が変化する変数データの初期値、および該プログラムの実行に拘わらず値が一定である定数データが記憶された不揮発性記憶部と、
    揮発性記憶部と、
    前記不揮発性記憶部に記憶されたプログラム、変数データの初期値、および定数データを読出し前記揮発性記憶部に書き込んだ後、該揮発性記憶部に書き込んだプログラムを実行する制御部とを備え、
    前記制御部が、
    前記揮発性記憶部に記憶されたプログラム、変数データ、および定数データのビット化けを検出する検出部と、
    前記検出部によって定数データに誤りが検出された場合に、前記不揮発性記憶部から定数データを読み出し前記揮発性記憶部に書き込んだ後、前記制御部に、前記検出部に誤りを検出する前に実行していた箇所の続きからプログラムの実行を継続させる定数回復部と、
    前記検出部によって変数データおよびプログラムのいずれかに誤りが検出された場合に、前記不揮発性記憶部からプログラム、変数データの初期値、および定数データを読み出し前記揮発性記憶部に書き込んだ後、前記制御部に、該揮発性記憶部に書き込まれたプログラムを始めから実行させる再起動部とを備えた装置。
  2. 前記制御部が、外部から送信されてきた処理要求に応じた処理および応答を行う要求処理部を備え、
    前記検出部は、前記要求処理部による処理および応答が完了した後で誤りを検出するものであることを特徴とする請求項2記載の装置。
  3. 前記検出部が、前記揮発性記憶部に記憶されたプログラム、変数データ、および定数データそれぞれからチェックサムを計算することによって誤りを検出するものであることを特徴とする請求項1または2記載の装置。
  4. 前記揮発性記憶部が、プログラム、変数データ、および定数データに付随してパリティ符号を記憶するものであり、
    前記検出部が、前記揮発性記憶部からプログラム、変数データ、および定数データのそれぞれとともに読み出されたパリティ符号の状態を確認することによって誤りを検出するものである請求項1または2記載の装置。
  5. 前記検出部が、検出した誤りの履歴を前記不揮発性記憶部に記憶するものであることを特徴とする請求項1から4いずれか1項記載の装置。
  6. 所定の時間が経過するごとに初期化要求割り込みを生成するウォッチドッグタイマを備え、
    前記再起動部は、前記ウォッチドッグタイマが初期化要求割り込みを生成した場合にも前記制御部に、前記揮発性記憶部に書き込まれたプログラムを始めから実行させるものであり、
    前記制御部は、前記揮発性記憶部に書き込まれたプログラムの実行中は、前記ウォッチドッグタイマにおける前記所定の時間が経過する前に、該ウォッチドッグタイマをリセットするものであることを特徴とする請求項1から5いずれか1項記載の装置。
  7. 情報が記録される情報記録媒体と、
    前記情報記録媒体に情報を記録する情報記録部とを備え、
    前記制御部が、前記情報記録部を制御して前記情報記録媒体に情報を記録させるものであることを特徴とする請求項1から6いずれか1項記載の装置。
JP2008022995A 2008-02-01 2008-02-01 装置 Pending JP2009187049A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008022995A JP2009187049A (ja) 2008-02-01 2008-02-01 装置
US12/362,990 US8151167B2 (en) 2008-02-01 2009-01-30 Program processing device and program processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008022995A JP2009187049A (ja) 2008-02-01 2008-02-01 装置

Publications (1)

Publication Number Publication Date
JP2009187049A true JP2009187049A (ja) 2009-08-20

Family

ID=40932914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008022995A Pending JP2009187049A (ja) 2008-02-01 2008-02-01 装置

Country Status (2)

Country Link
US (1) US8151167B2 (ja)
JP (1) JP2009187049A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014215618A (ja) * 2013-04-22 2014-11-17 株式会社デンソー 半導体装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102971515B (zh) * 2010-07-08 2015-12-16 三菱电机株式会社 汽车用数据异常判定装置
JP6473733B2 (ja) * 2016-12-13 2019-02-20 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置およびその動作設定方法
TWI661353B (zh) * 2017-08-30 2019-06-01 慧榮科技股份有限公司 用來於一記憶裝置中為錯誤處置進行資料處理之方法、記憶裝置及其控制器以及電子裝置
US10824501B2 (en) * 2019-01-07 2020-11-03 Mellanox Technologies, Ltd. Computer code integrity checking
EP3742295A1 (en) * 2019-05-23 2020-11-25 NXP USA, Inc. Automatic firmware rollback
JP7249968B2 (ja) * 2020-03-09 2023-03-31 株式会社東芝 情報処理装置およびストレージ
US11741232B2 (en) 2021-02-01 2023-08-29 Mellanox Technologies, Ltd. Secure in-service firmware update

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59174952A (ja) * 1983-03-24 1984-10-03 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン パリテイエラ−回復方法
JPS621049A (ja) * 1985-06-13 1987-01-07 Fujitsu Ltd メモリのアクセス制御方式
JPS63101947A (ja) * 1986-10-17 1988-05-06 Fujitsu Ltd エラ−処理方式
JPH0496846A (ja) * 1990-08-13 1992-03-30 Fujitsu Ltd 携帯用端末機
JPH05158811A (ja) * 1991-12-04 1993-06-25 Nec Eng Ltd データ処理装置の障害検出方式
JPH07182251A (ja) * 1993-12-24 1995-07-21 Nec Corp マイクロプロセッサ
JP2003216487A (ja) * 2002-01-24 2003-07-31 Daikin Ind Ltd 制御装置および制御装置のデータ書き換え方法および書き換え可能な不揮発性メモリおよび空気調和機
JP2004038529A (ja) * 2002-07-03 2004-02-05 Nec Corp 情報処理装置
JP2004110400A (ja) * 2002-09-18 2004-04-08 Toshiba Elevator Co Ltd エレベータ制御装置
JP2007018414A (ja) * 2005-07-11 2007-01-25 Hitachi Ltd メモリビットエラーの訂正機能を有する制御装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000059981A (ja) 1998-08-04 2000-02-25 Meidensha Corp ディジタル形保護継電装置
JP2000132461A (ja) 1998-10-27 2000-05-12 Hitachi Ltd 情報制御装置
JP2005208958A (ja) 2004-01-23 2005-08-04 Hanshin Electric Co Ltd マイコンにおけるプログラムエリアのデータ保全方法
JP3969494B2 (ja) 2004-08-31 2007-09-05 三菱電機株式会社 車載電子制御装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59174952A (ja) * 1983-03-24 1984-10-03 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン パリテイエラ−回復方法
JPS621049A (ja) * 1985-06-13 1987-01-07 Fujitsu Ltd メモリのアクセス制御方式
JPS63101947A (ja) * 1986-10-17 1988-05-06 Fujitsu Ltd エラ−処理方式
JPH0496846A (ja) * 1990-08-13 1992-03-30 Fujitsu Ltd 携帯用端末機
JPH05158811A (ja) * 1991-12-04 1993-06-25 Nec Eng Ltd データ処理装置の障害検出方式
JPH07182251A (ja) * 1993-12-24 1995-07-21 Nec Corp マイクロプロセッサ
JP2003216487A (ja) * 2002-01-24 2003-07-31 Daikin Ind Ltd 制御装置および制御装置のデータ書き換え方法および書き換え可能な不揮発性メモリおよび空気調和機
JP2004038529A (ja) * 2002-07-03 2004-02-05 Nec Corp 情報処理装置
JP2004110400A (ja) * 2002-09-18 2004-04-08 Toshiba Elevator Co Ltd エレベータ制御装置
JP2007018414A (ja) * 2005-07-11 2007-01-25 Hitachi Ltd メモリビットエラーの訂正機能を有する制御装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014215618A (ja) * 2013-04-22 2014-11-17 株式会社デンソー 半導体装置

Also Published As

Publication number Publication date
US20090199049A1 (en) 2009-08-06
US8151167B2 (en) 2012-04-03

Similar Documents

Publication Publication Date Title
US10930315B2 (en) Error correction for storage devices
US6289484B1 (en) Disk drive employing off-line scan to collect selection-control data for subsequently deciding whether to verify after write
US6327106B1 (en) Disk drive having data-guarding firmware
JP2009187049A (ja) 装置
US7415636B2 (en) Method and apparatus for replacement processing
US8291190B2 (en) Disk drive including a host interface supporting different sizes of data sectors and method for writing data thereto
US5715424A (en) Apparatus and method for writing data onto rewritable optical media
JP4454204B2 (ja) ディスクアレイ制御装置及び方法並びにディスクアレイ制御プログラム
US7805659B2 (en) Method and data storage devices for a RAID system
US7577804B2 (en) Detecting data integrity
US20060218211A1 (en) Data storage device with re-allocation processing
JP2001142650A (ja) アレイディスク制御方法及び装置
CN113190179B (zh) 提升机械硬盘使用寿命的方法、存储设备及系统
JP5381519B2 (ja) ディスクへの書き込み位置の誤算出を検出するストレージ制御装置、ストレージシステム、及びアクセス方法。
JP2010536112A (ja) 中断された書込みの回復のためのデータ記憶方法、機器およびシステム
US10867633B1 (en) Reduced adjacent track erasure from write retry
US20110205654A1 (en) Control apparatus, nonvolatile storage apparatus and data initialization method
US7587656B2 (en) Method and apparatus for detecting and correcting errors in stored information
US20070174739A1 (en) Disk device, method of writing data in disk device, and computer product
JP2003228925A (ja) 磁気ディスク装置の書き込みデータ保証方法
JP2004079011A (ja) データ再生方法及びデータ再生装置
JP3335969B2 (ja) 磁気ディスク装置
JPH04311218A (ja) 外部記憶制御装置
JP2004206291A (ja) データ記憶装置及びデータ記憶方法
JP2007183808A (ja) 磁気ディスク装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20091022

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100527

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130108