JP2002189572A - ディスク記憶装置、同記憶装置を持つ情報処理機器、及び書き込み失敗時処理方法 - Google Patents

ディスク記憶装置、同記憶装置を持つ情報処理機器、及び書き込み失敗時処理方法

Info

Publication number
JP2002189572A
JP2002189572A JP2000387411A JP2000387411A JP2002189572A JP 2002189572 A JP2002189572 A JP 2002189572A JP 2000387411 A JP2000387411 A JP 2000387411A JP 2000387411 A JP2000387411 A JP 2000387411A JP 2002189572 A JP2002189572 A JP 2002189572A
Authority
JP
Japan
Prior art keywords
write
command
vibration
data
writing
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.)
Withdrawn
Application number
JP2000387411A
Other languages
English (en)
Inventor
Takao Aoki
隆雄 青木
Yasuhiko Ichikawa
靖彦 市川
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000387411A priority Critical patent/JP2002189572A/ja
Publication of JP2002189572A publication Critical patent/JP2002189572A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】継続的な振動の影響で恒久的な損傷のない正常
な箇所に対する代替処理が多発するのを防止する。 【解決手段】HDD100内のCPU101は、ホスト
システム200からのライトコマンドで指定された書き
込みに失敗した場合に、その失敗の原因が振動によるも
のか、それ以外によるものか判定し、振動を原因とする
失敗の場合には、当該失敗箇所の代替処理を起動せず
に、ホストシステム200に振動による異常終了と失敗
箇所とを通知する。ホストシステム200内のCPU2
01は、この通知を受けた場合、失敗箇所から最も最近
に発行したライトコマンドの直前のライトコマンドで指
定されるライト範囲の終端までのデータの再書き込みを
指定するリカバリライトコマンドをHDD100に発行
する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ホストシステムか
らのライトコマンドで指定されたデータをヘッドにより
ディスクに書き込むことが可能なディスク記憶装置、同
記憶装置を持つ情報処理機器、及び書き込み失敗時処理
方法に関する。
【0002】
【従来の技術】記録媒体としてディスクを用い、当該デ
ィスクからのデータの読み出しと当該ディスクへのデー
タの書き込みにヘッドを用いたディスク記憶装置の代表
として磁気ディスク装置(以下、HDDと称する)が知
られている。このHDDでは、当該HDDを利用するパ
ーソナルコンピュータ(以下、PCと称する)等のホス
トシステムから要求されたディスク(磁気ディスク)上
のセクタへのデータの書き込みに失敗した場合、ディス
ク上に確保されている代替用領域内の空きセクタにデー
タを書き込む代替処理が行われるのが一般的である。こ
こで、「書き込みに失敗」とは、例えば予め定められた
回数のリトライを行っても書き込みエラーが解消されな
い状態をいう。
【0003】代替処理が行われると、その後ホストシス
テムから上記書き込みに失敗したセクタへのアクセスが
要求された場合には、代替先のセクタがアクセスされ
る。これにより、例えばHDDの使用段階でディスク上
のセクタに恒久的な損傷(ディフェクト)が新たに発生
したために書き込みに失敗した後でも、ホストシステム
は当該セクタがディフェクトセクタとなったことを意識
することなくHDDにアクセスできる。
【0004】
【発明が解決しようとする課題】HDDにおけるデータ
書き込みの失敗の原因として、アクセス先のセクタに恒
久的な損傷が発生したことの他に、当該ディスク装置に
振動等の衝撃が加わることなどが知られている。特に、
通電状態で持ち運びされることを前提とする可搬型のP
C等の外部記憶装置として用いられるHDDでは、振動
の影響でデータ書き込みに失敗する可能性がある。ま
た、可搬型でないPCに用いられるHDDでも、PC自
体が振動を受ける場所に設置される場合には、その振動
の影響でデータ書き込み失敗を招く恐れがある。但し、
このような使用形態では、振動が継続的に磁気ディスク
装置に加わることはないため、振動の影響でデータ書き
込みに失敗するのは希である。
【0005】しかしながら、HDDをカーナビゲーショ
ン装置の記憶装置として使用する目的等で、車両にHD
Dを搭載した場合には、このHDDを備えた情報処理機
器としてのカーナビゲーション装置(が搭載された車
両)が利用される状況、例えば走行する道路の路面状況
などの影響で振動がHDDに継続的に加わる可能性があ
る。このように、振動が継続的に加わる環境でHDDが
使用された場合、その振動を原因とする書き込みの失敗
が多発する可能性がある。書き込みに失敗すると、従来
のHDDでは前記したように代替処理が行われる。つま
り、振動が継続的に加わる環境では、恒久的な損傷のな
い正常なセクタに対する代替処理が行われる回数が増加
し、ディスク上の代替用領域を使いきってしまう恐れが
ある。
【0006】本発明は上記事情を考慮してなされたもの
でその目的は、ディスクへの書き込みに失敗した場合
に、その原因が継続的な振動によるものかどうかを判定
し、継続的振動によるものと判定される場合には代替処
理を抑止して、「振動による書き込み失敗」としてホス
トシステムに通知することができるようにすることにあ
る。
【0007】本発明の他の目的は、書き込みに失敗した
原因が継続的な振動によるものである場合に、書き込み
に失敗した箇所からホストシステム側で最も最近に発行
したライトコマンドの直前のライトコマンドで指定され
るライト範囲の終端までのデータの再書き込みがホスト
システムから行えるようにすることにある。
【0008】
【課題を解決するための手段】本発明のディスク記憶装
置は、ホストシステムからのライトコマンドで指定され
たディスクへの書き込みに失敗した場合に、当該失敗が
ディスク記憶装置に加えられた振動によるものか、或い
は振動以外によるものかを判定する手段と、ディスクへ
の書き込みに失敗した箇所の代替処理を行う代替手段
と、上記判定手段により上記失敗が振動によるものと判
定された場合、上記代替手段による代替処理を抑制し
て、上記ホストシステムに振動による異常終了を通知す
る手段とを備えたことを特徴とする。
【0009】このように、上記構成のディスク記憶装置
においては、書き込みに失敗した場合に、従来のように
直ちに代替処理を起動するのではなく、まず失敗の原因
が振動によるものか否か(恒久的なディスクの損傷によ
るものか)を判定し、振動による場合、例えば一定レベ
ル以上の振動が一定時間以上継続する継続的な振動によ
る場合には、代替処理を起動せずに、振動による異常終
了(書き込み失敗)としてホストシステムに通知する。
これにより、恒久的な損傷のない正常な箇所(セクタ)
に対する代替処理が発生するのを防ぎ、代替処理を適切
に行うことができる。
【0010】ここで、ホストシステムへの異常終了通知
時に、ディスクへの書き込みに失敗した箇所を併せて通
知する構成とするならば、ホストシステムは、書き込み
に失敗した箇所からの再書き込み、例えば書き込みに失
敗した箇所から最も最近に発行したライトコマンドの直
前のライトコマンドで指定されるライト範囲の終端まで
のデータの再書き込みをディスク記憶装置に対して指定
することが可能となり、書き込み失敗の「後戻り」のリ
カバリ処理が実現できる。
【0011】但し、通常はディスク記憶装置の持つライ
トキャッシュ機能により、ホストシステムへの異常終了
通知以前に、具体的には該当するライトコマンドの指定
するデータがディスク記憶装置のバッファメモリ(ディ
スク用バッファメモリ)に転送された時点で、当該ホス
トシステムではそのライトコマンドは既に正常終了して
いるとして扱われている。このため、異常終了となった
ライトコマンドに対する「後戻り」のリカバリ処理は必
ずしも容易でない。この問題はライトキャッシュを無効
にすれば解決されるが、それでは回転待ちが多発するな
ど処理効率が落ちる。
【0012】そこで本発明では、ライトキャッシュ方式
の中でも処理効率に対して最も効果のある「シーケンシ
ャルヒット」の機能のみを使用し、そのために、ホスト
システムからのライトコマンドがシーケンシャルヒット
のライトコマンドである場合、(たとえディスクへのデ
ータ書き込み中であっても)当該コマンドで指定された
データの受信を許可して、その受信データをディスク用
バッファメモリ内の直前のライトコマンドで指定された
データの終端の次の位置から順次書き込むバッファ書き
込み手段と、このバッファ書き込み手段によるバッファ
メモリへの書き込みが完了し、且つバッファメモリ内の
書き込み待ちデータが予め定められた一定量以下になっ
た場合に、ホストシステムに正常終了を通知して次のコ
マンドを要求する正常終了通知手段とを設ける。
【0013】このような構成においては、ホストシステ
ムからのライトコマンドで指定されたデータがディスク
用バッファメモリに全て書き込まれるだけでなく、バッ
ファメモリ内の書き込み待ちデータが一定量(SH)以
下になったことをもって、ホストシステムに正常終了が
通知される。これにより、ホストシステム側では、書き
込みに失敗した箇所から最も最近に発行したライトコマ
ンドの直前のライトコマンドで指定されるライト範囲の
終端までのデータを再書き込みの対象として指定するな
らば、リカバリ処理の「後戻り」量を必ず上記一定量以
下にすることができ、処理効率の低下を最小限に抑えつ
つホストシステムが「後戻り」のリカバリ処理を行える
ようになる。
【0014】ここで、上記一定量を、1つのライトコマ
ンドで指定可能な最大のブロック数nmax分のデータを
ホストシステムからディスク記憶装置のバッファメモリ
に転送するのに必要な時間内にディスクに書き込むこと
ができるデータ量とするならば、従来とは異なって、バ
ッファメモリへの書き込みが完了した時点ではなくて、
バッファメモリへの書き込みが完了し、且つバッファメ
モリ内の書き込み待ちデータが上記一定量以下になった
時点でホストシステムに正常終了を通知しても、後続の
ライトコマンドの指定するデータの書き込みを、シーケ
ンシャルライトキャッシュを生かして回転待ちが発生す
ることなく実行することができる。
【0015】さて、ホストシステムからの再書き込みを
容易に行うには、ホストシステムに、ディスク記憶装置
に書き込むべきデータを一時格納するためのホスト用バ
ッファメモリと、このバッファメモリに格納されている
データのうち、次にディスク記憶装置に転送すべきデー
タ位置を指し示すバッファポインタと、ホストシステム
から振動による異常終了が通知された場合に、上記バッ
ファポインタの指す位置を異常終了と共に通知された書
き込みに失敗した箇所に戻し、その箇所から最も最近に
発行したライトコマンドの直前のライトコマンドで指定
されるライト範囲の終端までのデータをディスクに書き
込むためのリカバリライトコマンドを発行する手段を備
えればよい。特に、バッファメモリにおけるデータの上
書きを許可する上限位置であって、上記バッファポイン
タの指し示すバッファメモリ内の位置から上記最大ブロ
ック数nmaxと上記一定量との和で示される大きさだけ
ずれた上限位置を示すことで、バッファメモリ内の、当
該上限位置からバッファポインタの示す位置までの範囲
を上書き禁止領域として指定するための上限位置ポイン
タを備えるならば、リカバリ処理に必要な一定量以上の
データを常にバッファメモリに保持しておくことが可能
となる。
【0016】なお、以上のディスク記憶装置(または当
該ディスク記憶装置を備えた情報処理機器)に係る本発
明は、当該装置に相当する方法(書き込み失敗時処理方
法)に係る発明としても成立する。
【0017】
【発明の実施の形態】以下、本発明の実施の形態につき
図面を参照して説明する。
【0018】[全体の構成]図1は本発明の一実施形態
に係る情報処理機器の構成を示すブロック図である。図
1の情報処理機器は、ディスク記憶装置としてのHDD
(磁気ディスク装置)100と、このHDD100を利
用するホストシステム200とを備えている。
【0019】HDD100において、CPU101は装
置全体の制御及びモータドライバ(VCM・SPMドラ
イバ))102の制御を時分割で行う。モータドライバ
102はCPU101からの制御により、磁気ディスク
103を定常回転させるスピンドルモータ(SPM)1
04と、磁気ヘッド106を目標位置に移動させるボイ
スコイルモータ(VCM)105とを駆動するための電
流を、SPM104及びVCM105に流す。
【0020】CPUバス107にはCPU101が実行
すべきプログラムが予め格納されているROM(Read O
nly Memory)108と、CPUバス107のワーク領域
及び変数を保持する変数領域等を提供するRAM(Rand
om Access Memory)109と、ディスクコントローラ
(HDC)110と、HDD100内での制御に必要な
諸信号の生成を行う制御信号生成回路としてのゲートア
レイ111とが接続されている。なお、RAM109を
CPU101に内蔵させ、CPU101がCPUバス1
07から独立にRAM109を直接アクセスする構成と
することも可能である。
【0021】HDC110及びゲートアレイ111は制
御用レジスタの群を有している。各制御用レジスタは、
CPU101のアドレス空間の一部領域に割り当てられ
ている。CPU101は、制御用レジスタが割り当てら
れている領域に対して読み出し/書き込みを行うこと
で、対応するHDC110またはゲートアレイ111を
制御する。
【0022】HDC110は、CPUバス107以外
に、ゲートアレイ111、バッファRAM112、及び
リード/ライトIC113に接続されている。バッファ
RAM112は、RAMによって構成されるバッファメ
モリである。
【0023】HDD100におけるデータの読み出し時
には、磁気ディスク103に記録されているデータが磁
気ヘッド106によって読み出される。磁気ヘッド10
6により読み出された信号(アナログのリード信号)
は、ヘッドIC114によって増幅され、しかる後にリ
ード/ライトIC113によってA/D(アナログ/デ
ィジタル)変換されて符号化(復号化)されてHDC1
10に出力される。また、ヘッドIC114によって増
幅されたリード信号はリード/ライトIC113によっ
てパルス化され、ゲートアレイ111に出力される。ゲ
ートアレイ111は、リード/ライトIC113から出
力されるパルス(リードパルス)から各種タイミング信
号を生成する。HDC110は、リード/ライトIC1
13によって符号化されたリードデータをゲートアレイ
111からの制御用の各信号に従って処理することによ
り、ホストシステム200に転送すべきデータを生成す
る。このデータは一旦バッファRAM112に格納され
てから、インタフェースバス300を介してホストシス
テム200に転送される。このインタフェースバス30
0は、HDD100がホストシステム200からのコマ
ンドを受け付けられない状態にあることを示すビジー
(BUSY)ラインを含む。
【0024】一方、HDD100におけるデータの書き
込み時には、ホストシステム200からインタフェース
バス300を介してHDD100に転送されたデータ
が、当該HDD100のHDC110で受け取られて、
一旦バッファRAM112に格納される。このバッファ
RAM112に格納されたデータは、ゲートアレイ11
1からの制御用の各信号に従ってHDC110によって
符号化され、リード/ライトIC113によって書き込
み用の信号に変換され、ヘッドIC114を経由して磁
気ヘッド106によって磁気ディスク103に書き込ま
れる。
【0025】さて、ホストシステム200は、当該ホス
トシステム200全体を制御するCPU201と、CP
U201が実行すべきプログラム等がロードされる主メ
モリ202と、入出力装置(I/O装置)203と、H
DD100とのインタフェースをなすHDDコントロー
ラ204とを備えている。これらCPU201、主メモ
リ202、I/O装置203及びHDDコントローラ2
04は、システムバス205により相互接続されてい
る。主メモリ202には、図3に示すような、HDD1
00へのデータ書き込み用のバッファ206と、発行待
ち並びに発行済みのライトコマンドに関する情報が格納
されたテーブル(コマンドテーブル)207とが確保さ
れる。このバッファ206及びコマンドテーブル207
の詳細については後述する。
【0026】[HDDのバッファ制御]ここで、HDD
100におけるバッファRAM112の制御について説
明する。
【0027】HDD100内のバッファRAM112は
リングバッファとして使用される。バッファRAM11
2は、図2に示すように、ディスクポインタDP及びホ
ストポインタHPの両ポインタによって管理される。デ
ィスクポインタDP及びホストポインタHPはHDC1
10によって操作される。ディスクポインタDPは、磁
気ディスク103とバッファRAM112との間のデー
タ転送によってその転送長だけ進められ、ホストポイン
タHPはホストシステム200とバッファRAM112
との間のデータ転送によってその転送長だけ進められ
る。ディスクポインタDP及びホストポインタHP共
に、バッファRAM112の上限112aまで達し、そ
こから更に進める必要が生した場合には、当該バッファ
RAM112の下限112bに戻すように操作される。
このようなポインタ操作はラップ処理と呼ばれる。
【0028】さて本発明に直接関係するホストシステム
200からHDD100へのデータの書き込み時には、
ホストポインタHP及びディスクポインタDPは次のよ
うにされる。まず、データがホストシステム200から
バッファRAM112へ転送されると、ホストポインタ
HPはデータ転送量だけ進められる。このホストポイン
タHPにより、常に次にホストシステム200から転送
されるデータが格納されるべきバッファRAM112内
の位置が保持される。これに対してディスクポインタD
Pは、バッファRAM112内のデータが磁気ディスク
103に書き込まれると、その書き込み量だけ進められ
る。このディスクポインタDPにより、常に次に磁気デ
ィスク103に書き込むべきデータのバッファRAM1
12内の位置が保持される。ここで、磁気ディスク10
3への書き込み制御は、ディスクポインタDPがホスト
ポインタHPを追い越さないようにすることで行う。
【0029】[HDDのコマンド処理]次に、HDD1
00におけるコマンド処理について図4のフローチャー
トを参照して説明する。
【0030】HDD100は電源が投入されて起動処理
(初期化処理)が行われると、ホストシステム200か
らのコマンド待ちのループに入る(ステップA1)。こ
の状態でHDD100(内のCPU101)は、ホスト
システム200からのコマンドを受信すると、インタフ
ェースバス300のビジーラインをオンすると共に、そ
の時点においてHDD100が「書き込み動作」中であ
るか否かを判定する(ステップA2)。
【0031】「書き込み動作」とは、HDD100のバ
ッファRAM112内のデータを磁気ディスク103に
書き込む動作のことで、ここで述べている「コマンド処
理」とは別の動作である。「書き込み動作」(の処理ル
ーチン)は、「コマンド処理」(の処理ルーチン)と並
行して行われる。このため、「コマンド処理」は「書き
込み動作」の状態を監視しながらの動作となる。
【0032】「書き込み動作」では、指定されたアドレ
ス(ヘッド番号、シリンダ番号、及びセクタ番号で表さ
れるアドレス)のセクタを先頭としてバッファRAM1
12のデータをアドレスが連続して増加する方向(シー
ケンシャル)に磁気ディスク103に順次書き込む動
作、つまりシーケンシャルライト動作が行われる。
【0033】この「書き込み動作」により、バッファR
AM112内の全データを磁気ディスク103に書き終
えた結果、磁気ディスク103に書き込むべきデータが
バッファRAM112内に存在しなくなると、HDD1
00(内のCPU101)はホストシステム200から
の新たなデータ転送を待つ。この段階では、「書き込み
動作」は終了しない点に注意されたい。そして新たなデ
ータ転送の待ち状態で、ホストシステム200からデー
タを受信すると、その時点で、前に書き込んだ最後のア
ドレスの次のアドレスから書き込みを再開する。
【0034】本実施形態において「書き込み動作」が終
了する条件は、 ・停止要求が発生した場合 ・振動が原因で書き込みに失敗した場合 の2つのみである。もし、「書き込み動作」中にシーケ
ンシャルライト以外の処理を行う場合には、この「書き
込み動作」を停止させる必要がある。
【0035】さて、上記ステップA2での判定の結果、
「書き込み動作」中である場合には、新たに受信したコ
マンドが当該コマンドに先行するライトコマンドの指定
するディスク領域に連続する領域にシーケンシャルにデ
ータを書き込むことを指定するライトコマンドであるか
否か、即ち「シーケンシャルヒット」のライトコマンド
であるか否かを判定する(ステップA3)。このステッ
プA3の判定を行う理由は、受信したコマンドが「シー
ケンシャルヒット」以外のライトコマンド、またはライ
ト以外のコマンドであれば、当該コマンドの実行は、そ
の時点においてバッファRAM112内で磁気ディスク
103への書き込み待ちとなっているデータ(未書き込
みデータ)を全て磁気ディスク103に書き込んでから
行う必要があることによる。
【0036】このため、受信したコマンドが「シーケン
シャルヒット」のライトコマンドでない場合には、バッ
ファRAM112内の書き込み待ちデータが全て磁気デ
ィスク103に書き込まれのを待って、「書き込み動
作」の停止を要求する(ステップA4)。もし、この
「書き込み動作」の停止要求に応じて「書き込み動作」
が停止された場合には、後述するように「書き込み動
作」が正常終了する(図5ステップB8)。また、振動
が原因で書き込みに失敗した場合には、後述するように
ステップA4に無関係に「書き込み動作」が停止され、
異常終了する(図5ステップB21)。
【0037】ステップA4を実行すると、「書き込み動
作」が正常終了したか否かを、「書き込み動作」(の処
理ルーチン)でのみ操作される第2の終了ステータスに
基づいて判定する。もし、正常終了したならば、即ち全
てのデータが正しく書き込まれているならば、受信した
コマンドを実行するために当該コマンドの解釈を行う
(ステップA6)。なお、ステップA2の判定時点で書
き込み動作中でなければ、上記の書き込み動作待ち(ス
テップA4)を行う必要がないので、ステップA3〜A
5をスキップしてコマンド解釈(ステップA6)を行え
ばよい。
【0038】ステップA6でのコマンド解釈の結果、受
信したコマンドがライトコマンド以外であれば当該コマ
ンドに応じた処理を行って、その処理の結果を表す状態
を「コマンド処理」(の処理ルーチン)でのみ操作され
る第1の終了ステータスに設定し(ステップA20)、
当該コマンドを終了させる(ステップA13)。その
後、コマンド待ちループ(ステップA1)に入る。
【0039】一方、受信したコマンドがライトコマンド
であれば、この時点では「書き込み動作」中ではないこ
とから、当該ライトコマンドにより指定された「書き込
み動作」を開始し(ステップA7)、ホストシステム2
00からのデータ(書き込みデータ)の受信を許可する
(ステップA8)。これによりホストシステム200で
は、HDD100へのデータ転送が開始され、HDD1
00では、ホストシステム200からのデータ受信が開
始される。この時点以降は、「書き込み動作」が開始し
ているので、ホストシステム200からの転送データは
バッファRAM112に一旦格納された後順次磁気ディ
スク103に書き込まれる。
【0040】一方、受信したコマンドが「シーケンシャ
ルヒット」のライトコマンドである場合(ステップA
3)、バッファRAM112をシーケンシャルライトキ
ャッシュとして利用できるため、ステップA4〜A7を
スキップして、ホストシステム200からのデータ受信
を直ちに開始する(ステップA8)。これにより、ホス
トシステム200から受信したデータは現在ホストポイ
ンタHPが指しているバッファRAM112の位置から
順に書き込まれる。
【0041】「書き込み動作」が開始すると、この「書
き込み動作」での状態を監視するためのループに直ちに
入る(ステップA9〜A11)。ステップA9では、
「書き込み動作」が異常終了しているか否かを第2の終
了ステータスに基づいて判定する。もし、異常終了して
いればライトキャッシュエラーとして、第2の終了ステ
ータスの示す異常終了の発生原因(振動によって書き込
みに失敗したなど)を第1の終了ステータスに設定し
(ステップA21)、コマンドを終了させる(ステップ
A13)。このステップA21の後のステップA13で
は、ホストシステム200からアクセス可能なステータ
スレジスタ及びエラーレジスタに、それぞれ異常終了を
示すステータス及び異常終了の発生原因と異常箇所(書
き込みに失敗したセクタ位置など)及び書き込むことが
できなかったデータ量(セクタ数)NRが設定されて、
ホストシステム200にコマンド終了割り込みが入る。
このとき、インタフェースバス300のビジーラインが
オフされて、ビジー状態からレディ(READY)状態
に切り替えられる。
【0042】ステップA10では、ホストシステム20
0からバッファRAM112へのデータ転送が完了して
いるか否か、即ち実行中のライトコマンドて書き込むべ
き全データを受信したか否かを判定する。そして、デー
タ転送が完了しないうちは状態監視ループの先頭(ステ
ップA9)へ戻り、完了していれば次のステップA11
へ進む。
【0043】ステップA11では、バッファRAM11
2内に存在し、磁気ディスク103への書き込み待ちと
なっているデータの量を調べ、このデータ量が予め定め
られた一定量SD以下になるまで、ステップA9から始
まる状態監視ループを繰り返す。
【0044】ここで、ステップA11の判定が必要な理
由を述べる。まず従来のように、通常のシーケンシャル
ヒット動作を行うのみであるならば、ステップA11の
判定は不要である。しかし、ステップA11の判定を行
うことで、バッファRAM112内の書き込み待ちデー
タの量が一定量SD以下になるまでは、つまりステップ
A9〜A11の状態監視ループから抜けるまでは、ホス
トシステム200は次のコマンドを出せなくなる。これ
により、書き込みの異常終了時に、後述するようにホス
トシステム200がリカバリ処理を行うのに「後戻り」
しなければならないデータ量を最大でもこの「一定量S
D」とすることができる。このSDは、シーケンシャル
アクセスでありながら回転待ちを発生させず、しかも
「後戻り」を可能とするのに必要な値に設定される。具
体的にはSDは、1ライトコマンドで指定可能な最大の
セクタ(ブロック)数nmax分のデータを当該コマンド
によりホストシステム200からHDD100のバッフ
ァRAM112に転送するのに必要な時間内に磁気ディ
スク103に書き込むことができる最小のデータ量に設
定される。
【0045】さて、ホストシステム200からのデータ
転送が完了し、バッファRAM112内の書き込み待ち
データが「一定量SD」以下になるまで書き込み(磁気
ディスク103への書き込み)が進むと、ステップA9
〜A11からなる状態監視ループを抜け、第1の終了ス
テータスに「正常」を設定した(ステップA12)上で
コマンドを終了させる(ステップA13)。このステッ
プA13では、ステータスレジスタに正常終了を示すス
テータスが設定されると共に、インタフェースバス30
0のビジーラインがオフされて、ビジー状態からレディ
状態に切り替えられて、ホストシステム200にコマン
ド終了割り込みが入る。これによりHDD100からホ
ストシステム200に対し、当該ホストシステム200
から最も最近に発行されたライトコマンドで指定された
データの転送が正常に終了したことと、当該データを含
む既転送のデータのうち、後側のSD以下の量のデータ
(書き込み待ちデータ)を除いて磁気ディスク103に
正常に書き込まれたことを通知することが可能となる。
【0046】従来はバッファRAM112のライトキャ
ッシュ機能により、ホストシステム200からのライト
コマンドで指定されたデータが正常にバッファRAM1
12に書き込まれた段階で、つまりホストシステム20
0からバッファRAM112へのデータ転送が正常終了
した段階で、当該コマンドの正常終了がHDD100か
らホストシステム200に通知されていた。したがっ
て、本実施形態と従来技術とでは、正常終了通知の意味
するものが異なる点に注意されたい。
【0047】インタフェースバス300のビジーライン
がレディ状態に切り替えられると、ホストシステム20
0は次のコマンドを出すことができる。一方、HDD1
00では、ステップA13が終了するとステップA1の
コマンド待ちループに戻る。
【0048】[HDDの書き込み動作]次に、HDD1
00における「書き込み動作」について図5のフローチ
ャートを参照して説明する。
【0049】既に述べたように、「書き込み動作」と
は、「指定されたアドレスのセクタを先頭としてバッフ
ァRAM112のデータをシーケンシャルに書き続け
る」動作である。
【0050】HDD100では、「書き込み動作」が開
始されると、まずアクセス開始アドレスレジスタに、指
定された先頭セクタのアドレスを設定し(ステップB
1)、リトライカウンタ#1及び#2に予め定められた
リトライの上限回数を初期設定する(ステップB2)。
このリトライカウンタ#1及び#2はRAM109の所
定領域に用意される。本実施形態では、磁気ディスク1
03への書き込みでエラーが発生すると、予め定められ
た条件に応じた回数を上限にリトライが行われる。
【0051】そこで、このリトライ回数の決定のため
に、上記2つのリトライカウンタ#1及び#2がそれぞ
れ次のように使用される。まず、リトライカウンタ#1
は、書き込みエラーが発生する度に1だけデクリメント
されるダウンカウンタである。このリトライカウンタ#
1の特徴は、書き込みエラーの原因によらずに必ずデク
リメントされる点にある。次にリトライカウンタ#2
は、振動を原因としない書き込みエラーが発生する度に
1だけデクリメントされるダウンカウンタである。
【0052】本実施形態では、これらのカウンタ#1及
び#2を、 リトライカウンタ#1の値>リトライカウンタ#2の値 の条件を満たす範囲でステップB2で初期設定してお
く。そして、カウンタ#1及び#2のいずれか一方の値
が0になった時点でリトライを終了させて、書き込み異
常と見なすようにする。
【0053】これにより、カウンタの値によって、 ・リトライカウンタ#1が先に0になれば、書き込み異
常の原因は外部から加えられた振動(加振) ・リトライカウンタ#2が先に0になれば、書き込み異
常の原因は外部からの加振以外 と判定できる。
【0054】さて、ステップB2でリトライカウンタ#
1及び#2を初期設定すると、HDD100は書き込み
データ待ちのループに入る(ステップB3,B4)。こ
のループでは、コマンド処理(のルーチン)からの「書
き込み動作」の停止要求のチェックも行っている(ステ
ップB3)。もし、停止要求を検出した場合には、第2
の終了ステータスを「正常」とし(ステップB8)、
「書き込み動作」を終了する(ステップB9)。
【0055】一方、停止要求が検出されなかった場合に
は、バッファRAM112内に書き込むべきデータがあ
るか否かを判定する(ステップB4)。もし、書き込む
べきデータがあれば、次のステップB5で当該データを
磁気ディスク103に書き込む。このステップB5で磁
気ディスク103への書き込みの対象となるデータは、
当該磁気ディスク103への書き込み動作中にホストシ
ステム200から新たに受信してバッファRAM112
に格納されたデータも含む。
【0056】磁気ディスク103への書き込み動作時に
は、書き込みエラーが発生したか否かを判定する状態判
定が行われる(ステップB6)。磁気ディスク103へ
のデータ書き込みは、 ・バッファRAM112内に書き込むべきデータがなく
なる ・書き込みエラーが発生する のどちらかが発生するまで続けられる。
【0057】したがって、ステップB6での状態判定で
書き込みエラーが発生していないことが判定された場合
には、HDD100はデータ待ちの状態となっている。
この場合、「コマンド処理」(の処理ルーチン)からの
書き込み停止要求があるか否かを判定する(ステップB
7)。もし、停止要求があれば、第2の終了ステータス
を「正常」とし(ステップB8)、「書き込み動作」を
終了させる(ステップB9)。
【0058】これに対し、停止要求がない場合には、続
けて書き込みを行うために、ステップB5で書き込んだ
最後のセクタの次のセクタのアドレスをアクセス開始ア
ドレスレジスタに設定し(ステップB20)、ステップ
B2に戻る。以下、前記した場合と同様にリトライカウ
ンタ#1及び#2の初期設定を行った後、書き込みデー
タ待ちのループに入り、書き込みデータがあれば磁気デ
ィスク103へのデータ書き込みを行う。
【0059】もし、ステップB5での書き込み動作中に
エラー(書き込みエラー)が発生し、そのエラーがステ
ップB6で検出された場合には、リトライのための処理
が次のように行われる。
【0060】まず、書き込みエラーの原因が外部からの
加振であるか否かが判定される(ステップB30)。こ
の判定は、図1に示すように、HDD100内に振動検
出器115に設け、その振動検出器115の振動検出結
果を上記ステップB30での判定時にゲートアレイ11
1を介してCPU101内に読み込むことにより行われ
る。
【0061】ステップB30で、書き込みエラーの原因
が外部からの加振でないと判定された場合だけ、リトラ
イカウンタ#2が1デクリメントされる(ステップB4
0)。一方、リトライカウンタ#1は、書き込みエラー
の原因によらずに1デクリメント(ステップB31)。
【0062】リトライカウンタ#1がデクリメントされ
ると、リトライカウンタ#2の値が0になっているか否
かが判定される(ステップB32)。もし、リトライカ
ウンタ#2の値が0になっているならば、書き込みエラ
ーの原因は外部からの加振ではなく、磁気ディスク10
3に異常があると判定される。この場合、書き込みエラ
ーが発生したセクタを代替用領域内の空きセクタに代替
する代替処理を行う(ステップB41)。そして、書き
込みエラーが発生したセクタの次のセクタから書き込み
動作を再開するために、次のステップB42でアクセス
開始アドレスレジスタに書き込みエラーが発生したセク
タの次のセクタのアドレスを設定してステップB5に戻
り、書き込み動作を再開する。
【0063】一方、リトライカウンタ#2の値が0にな
っていないならば、リトライカウンタ#1の値が0にな
っているか否かが判定される(ステップB33)。も
し、リトライカウンタ#1の値が0になっているなら
ば、外部からの加振を原因とする書き込みエラーが規定
回数に達して書き込みに失敗したものと判定する。この
ように加振を原因として書き込みに失敗した場合に代替
処理を行うこと、つまり書き込みに失敗したセクタに恒
久的な損傷がないにも拘わらずに代替処理を行うこと
は、代替領域を無駄に消費することになる。そこで本実
施形態では、加振を原因として書き込みに失敗したこと
を検出した場合、代替処理を行わず、第2の終了ステー
タスを「外部からの加振(振動)」として(ステップB
21)、「書き込み動作」を終了させる(ステップB
9)。
【0064】また、リトライカウンタ#2及び#1の値
が共に0になっていないならば、書き込みエラーが発生
したセクタに対するリトライを継続するため、ステップ
B34で、アクセス開始アドレスレジスタに当該書き込
みエラーが発生したセクタのアドレスを設定してステッ
プB5に戻り、書き込み動作を再開する。
【0065】[ホストシステムのバッファ処理]次に、
ホストシステムにおけるHDD100への書き込み処理
用のバッファ206の制御について説明する。まず、バ
ッファ206の管理について図3(a)を参照して説明
する。図3(a)に示すように、バッファ206は、H
DD100に書き込むべき(転送すべき)データの当該
バッファ206内の位置を示すバッファポインタBPに
よって管理される。このバッファポインタBPは主メモ
リ202の所定領域に格納される。バッファポインタB
Pは、HDD100に対してデータ転送が行われる度
に、CPU201によってその転送量だけ進められる。
これによりバッファポインタBPには、次にHDD10
0に書き込むべき(転送すべき)データの位置が常に保
持される。
【0066】バッファ206はHDD100内のバッフ
ァRAM112と同様にリングバッファとして使用され
る。したがって、HDD100への転送待ちのデータは
直前のデータの次へバッファアドレスを進めながら順次
格納される。この繰り返しによってバッファアドレスが
バッファ206の上限206aに達し、そこから更に進
める必要が生した場合には、当該バッファ206の下限
206bに戻すように操作されるラップ処理が適用され
る。
【0067】またバッファ206は、バッファポインタ
BPの他に、当該バッファ206上でのデータの上書き
を許可する上限アドレスを示すポインタ(上限アドレス
ポインタ)BRによっても管理される。この上限アドレ
スポインタBRとバッファポインタBPとで示されるバ
ッファ206内の領域は、上書きが禁止される領域(上
書き禁止領域)206cとなる。上限アドレスポインタ
BRは、上書き禁止領域206cの大きさ(容量)が予
め定められた一定セクタ数分のデータ量(ブロック数)
SHとなるように制御される。ここで、上限アドレスポ
インタBRを用いる理由について述べる。
【0068】ホストシステム200のバッファ206へ
のデータの書き込みは、HDD100(内の磁気ディス
ク103)へのデータ書き込みと比較して著しく速い。
したがって、特にHDD100への書き込み要求が頻発
するような場合には、HDD100への書き込み待ちデ
ータがラップ処理によって下限方向からバッファポイン
タBPへ接近する状態が発生し得る。このような状態で
は、HDD100に書き込んで間もないデータが新しい
データによって上書きされてしまう。
【0069】そこで本実施形態では、バッファポインタ
BPの位置から一定量SH分だけ手前のアドレスを指す
上限アドレスポインタBRに達しない範囲でのみ新しい
データの書き込みを許可するようにすることで、常にこ
の一定量SHだけアドレスを「後戻り」できるようにし
ている。この「後戻り」を、後述するようにHDD10
0でのライトコマンドの実行で異常終了した場合のリカ
バリ処理に用いる。ここで、上記一定量SHは、1ライ
トコマンドで書き込み指定可能な最大のセクタ(ブロッ
ク)数nmaxと前記ステップA11での判定基準となる
一定量SDとの和nmax+SDに一致するように、即ち SH=nmax+SD となるようにように定められている。
【0070】コマンドテーブル207は、HDD100
に対して発行済みのまたは発行予定のライトコマンドに
関する情報を格納するのに用いられる。そこでコマンド
テーブル207は、図3(b)に示すように、ライトコ
マンドで指定されるHDD100へのデータ書き込みの
先頭アドレス(HDDアドレス)207aと、書き込み
セクタ(ブロック)数207bと、HDD100への書
き込みデータが格納されているバッファ206の先頭ア
ドレス(バッファアドレス)207cとの3つの要素
(項目)から構成されている。
【0071】コマンドテーブル207は、コマンドテー
ブルポインタCPによって管理される。コマンドテーブ
ルポインタCPは、次に実行すべきライトコマンドの情
報が格納されているエントリ位置を示す。コマンドテー
ブル207は、バッファRAM112及びバッファ20
6と同様にリングバッファとして使用される。
【0072】次に、ホストシステム200におけるCP
U201によるバッファ制御(バッファ処理)について
図6のフローチャートを参照して説明する。まずホスト
システム200のCPU201は、処理が開始される
と、アプリケーション(アプリケーションプログラム)
等からHDD100への書き込みデータを受信できる状
態にあるか否かを判定する(ステップC1,C2)。
【0073】ステップC1ではHDD100がコマンド
実行中であるか否かを、インタフェースバス300のビ
ジーラインがビジー状態を示しているか否かにより判定
する。もし、コマンド実行中であれば新たにコマンドを
発行できないのでステップC2に進み、アプリケーショ
ン等からのHDD100への書き込み要求があるか否か
を判定する。もし書き込み要求があるならば、バッファ
206内に、アプリケーション等から要求されたデータ
量分の空きがあるか否かを判定する(ステップC3)。
もし空きがあるならば、要求されたデータを受信し、コ
マンドテーブル207に新たなライトコマンドに関する
情報を格納したエントリを追加設定すると共に、その受
信データをバッファ206内の最も最近にデータが書き
込まれた領域の終端の次の位置から格納する(ステップ
C4)。
【0074】これに対し、ステップC1でコマンドが実
行中でないと判定された場合には、コマンド実行が既に
終了していてコマンドテーブルポインタCPを操作済み
であるか否かを判定する(ステップC10)。もし、ポ
インタ操作済みでないならば、コマンド実行が正常に終
了していたのか否かをHDD100のステータスレジス
タの示すステータスから判定する(ステップC11)。
【0075】ここで、コマンド実行が正常に終了してい
るならば、次のコマンドの処理に進むために、コマンド
テーブルポインタCPをコマンドテーブル207の次の
エントリに進める(ステップC12)。次に、バッファ
206内にHDD100に書き込むべきデータがあるか
否かを判定する(ステップC13)。もしデータがあれ
ば、新たにそのデータをHDD100に書き込むための
ライトコマンドの発行を行い(ステップC14)、次の
データの受信を行うためにステップC2に戻る。つま
り、ステップC14ではライトコマンドの発行処理のみ
を行って、当該コマンドの終了は待たずに次の処理(ス
テップC2)へ進む。本実施形態では、ライトコマンド
の終了待ちはステップC1を含むループで行われる。
【0076】一方、上記ステップC11でライトコマン
ドが異常終了していると判定された場合、その原因が外
部からの加振によるものであるか否かをHDD100の
エラーレジスタの内容から判定する(ステップC1
5)。もし、加振(振動)が原因の場合には、リカバリ
処理の回数が一定回数を越えているリトライオーバーで
あるか否かを判定する(ステップC16)。もし、異常
終了の原因が加振以外にある場合、或いは加振が原因で
あってもリトライオーバーの場合には、予め定められた
エラー処理を行う(ステップC5)。
【0077】これに対し、ライトコマンドの異常終了の
原因が加振にあり、しかもリトライオーバーでなけれ
ば、HDD100に転送したデータのうち、書き込みに
失敗したセクタ(ブロック)以降に書き込まれるべきデ
ータは、当該セクタに恒久的な損傷がないにも拘わらず
に正常に書き込まれていないものと判断する。この場
合、HDD100のエラーレジスタに設定されている書
き込みに失敗したセクタを含むディスク領域への書き込
みを指定したライトコマンドが、最も最近にホストシス
テム200からHDD100に対して発行されたコマン
ド(つまり最新のコマンド)であるか否かが判定される
(ステップC17)。この判定は、コマンドテーブル2
07の各エントリのうち、コマンドテーブルポインタC
Pの指すエントリに含まれているブロック数(セクタ
数)207b(図3の例ではnk)と書き込みに失敗し
たセクタ数NRとを比較することにより行われる。図3
の例では、nk<NRでないならば最新のコマンドであ
ると判定され、nk<NRであるならば最新のコマンド
でないと判定される。
【0078】ステップC17で最新のコマンドであると
判定された場合、その直前のライトコマンドまでは正常
に終了していることから、ステップC13以降の処理に
進む。そしてステップC14で、コマンドテーブルポイ
ンタCPの指すコマンドテーブル207内のエントリに
格納されている最新のコマンド(ライトコマンド)に関
する情報に基づいて、当該コマンドがHDD100に対
して再度発行される。これによりリカバリ処理が可能と
なる。
【0079】これに対し、ステップC17で最新のコマ
ンドでないと判定された場合には、バッファ206のバ
ッファポインタBPを書き込みに失敗したセクタに対応
するブロック位置まで戻す(ステップC17)。そし
て、新たなバッファポインタBPの指すブロック以降、
最新のコマンドの直前のライトコマンドで指定される範
囲の終端までのデータをHDD100に書き込むリカバ
リ処理のためのライトコマンド(以下、リカバリライト
コマンドと称する)を発行する(ステップC18)。こ
のリカバリライトコマンドで指定される書き込みデータ
は、アプリケーション等からの1回の書き込み要求に応
じて受信されたデータ(またはその一部)であるとは限
らず、複数回の書き込み要求分のデータ(またはその一
部)の場合もあり得る。但し、SDを越えることはな
い。
【0080】ホストシステム200では、HDD100
への転送が完了したバッファ206上のデータのうち最
新の一定量SH(=nmax+SD)については他のデー
タで上書きされないようなポインタ制御が行われてい
る。このため、加振を原因とする書き込み失敗(ライト
キャッシュエラー)が発生した場合でも、HDD100
への再書き込みのために、バッファポインタBPをエラ
ー発生セクタ位置のデータ(ブロック)まで戻してHD
D100への転送を行うことが可能である。
【0081】更に、HDD100では、ライトコマンド
がシーケンシャルヒットのコマンドの場合だけ、当該コ
マンドの指定するデータを、それ以前のライトコマンド
で指定されているデータの磁気ディスク103への書き
込みが終了するのを待つことなく、ホストシステム20
0からバッファRAM112に転送できるようになって
いる。この場合、異常終了したセクタの位置は、最新の
ライトコマンドで指定されるライト範囲に含まれる場合
(前者)と、それ以前のライトコマンドで指定されるラ
イト範囲に含まれる場合(後者)とに大別される。前者
は、ライトキャッシュ機能により最新のライトコマンド
の正常終了が通知される前に、当該コマンドが異常終了
した場合である。後者は、ライトキャッシュ機能により
正常終了が通知されたライトコマンドが、その後のディ
スク書き込みで異常終了した場合である。
【0082】そこで本実施形態では、振動が原因で異常
終了したセクタの位置によって条件分けし、後者の場
合、即ち最新のライトコマンド以外で異常終了した場合
に(ステップC17)、上記したように「異常終了した
セクタから、最新のライトコマンドの直前のライトコマ
ンドで指定したライト範囲の終端まで」をHDD100
に書き込むことを指定するリカバリライトコマンドを発
行している(ステップC18)。なお、異常終了したセ
クタは、シーケンシャルライトキャッシュにより、必ず
しも直前のライトコマンドで指定されたライト範囲とは
限らず、それより前のライトコマンドで指定されたライ
ト範囲のものである可能性もある。しかし、上記リカバ
リライトコマンドの指定による書き込みを行えば、未書
き込みのデータ(データ量はSD以下)は全て磁気ディ
スク103に書き込まれることになる。
【0083】このようにリカバリのためのライトコマン
ドを発行したなら(ステップC19)、当該コマンドに
ついては通常のライトコマンドの発行時(ステップC1
4))のような処理(ステップC2〜C4)を行わず
に、(図4のステップA13により)当該コマンドが終
了するまで待つ(ステップC20)。そして、リカバリ
ライトコマンドが終了したならば、当該コマンドの実行
結果を判定する(ステップC21)。もし、リカバリラ
イトコマンドが正常終了したならば、ステップC13以
降の処理へ進む。これに対し、異常終了したならば、再
度ステップC15からのリカバリ処理へ進む。
【0084】これに対し、前者の場合、即ち最新のライ
トコマンドで異常終了した場合には(ステップC1
7)、ステップC13以降の処理へ進み、コマンドテー
ブルポインタCPによって指定される最新のライトコマ
ンドを再発行する(ステップC14)。
【0085】なお、最新のライトコマンドで異常終了し
た場合、当該ライトコマンドを再発行する代わりに、
「異常終了したセクタから、当該コマンドで指定したラ
イト範囲の終端まで」をHDD100に書き込むことを
指定するリカバリライトコマンドを発行するようにして
もよい。この場合、リカバリライトコマンドが正常終了
したならば、ステップC12に進めばよい。但し、この
リカバリライトコマンドは、最新のライトコマンド以外
で異常終了した場合に発行するリカバリライトコマンド
とはライト範囲の終端側が異なるため、ステップC19
のリカバリライトコマンドの発行処理とは別処理とする
必要がある。また、最新のライトコマンドで異常終了し
たか否かに無関係に、「異常終了したセクタから、最新
のライトコマンドで指定したライト範囲の終端まで」を
リカバリコマンドで書き込むようにすることも可能であ
る。 但し、最新のライトコマンドで指定した
ライト範囲によってはリカバリの範囲がnmaxを越える
恐れもある。したがって、リカバリの範囲がnmaxを越
えるか否かによって処理を切り替える必要がある。
【0086】以上の説明では、HDD100からホスト
システム200に振動が原因の異常終了が通知された際
のホストシステム200からのリカバリライトコマンド
の発行タイミングについては特に触れていない。しか
し、異常終了の原因となった振動が継続している状態で
リカバリライトコマンドを発行した場合、当該コマンド
に従うリカバリ処理に失敗する確率が高い。そのため本
実施形態では、リカバリライトコマンドの発行(による
リカバリ処理)を、一定回数を上限にリトライできるよ
うにしている(ステップC16)。
【0087】しかし、リカバリ処理に成功する確率を上
げられるならば、なおよい。そこで、次の第1または第
2の方法のいずれかを適用するとよい。第1は、振動が
原因の異常終了が通知されてから或る一定時間を待って
リカバリコマンドを発行(リカバリ処理を実行)する方
法である。この一定時間は固定でも適宜変更されるもの
であってもよい。特に、一定時間を適宜変更するには、
次の第2の方法と同様にして定期的または不定期に振動
の傾向を調査して、一定レベル以上の振動が検出される
時間間隔の傾向を把握するとよい。不定期の例として
は、図1の情報処理機器が車両に搭載された場合であれ
ば、車両の速度が予め定められた速度範囲で切り替わる
時点(例えば、低速から高速への切り替え時点と、高速
から低速への切り替え時点)である。
【0088】第2は、HDD100内の振動検出器11
5と同様の振動検出器をホストシステム200に設け、
当該振動検出器で検出される振動レベルが一定レベル以
下に下がるのを待って、或いは一定レベル以上の振動が
検出される間隔について一定時間もしくは状況で決まる
時間の問振動レベルを調査して、振動レベルが一定の水
準以下となるのを待って、リカバリ処理を実行する方法
である。状況で決まる時間とは、図1の情報処理機器が
車両に搭載された場合であれば、車両の速度で決まる時
間である。これは、例えば高速走行が行われる高速道路
等では振動の継続期間が短いのに対し、低速走行が行わ
れる悪路等では振動の継続期間が長いことを考慮したも
のである。
【0089】上記第2の方法の精度を上げるためには、
HDD100内の振動検出器115で検出される振動レ
ベルとホストシステム200内の振動検出器で検出され
る振動レベルとの関係を求めておき、ホストシステム2
00内の振動検出器で検出される振動レベルをHDD1
00内の振動検出器115で検出される振動レベルに換
算するとよい。なお、ホストシステム200に振動検出
器を設ける代わりに、ホストシステム200からHDD
100に対して、ポーリング等の手段により当該HDD
100の振動レベルを問い合わせるようにしてもよい。
【0090】上記第1または第2の方法を適用する場合
でも、リカバリ処理自体は上記実施形態と同様に一定回
数を上限にリトライできるようにするとよい。
【0091】以上は本発明をディスク記憶装置としてH
DDを用いた情報処理機器に実施した場合について説明
したが、本発明はヘッドによりリード/ライト可能なデ
ィスク記憶装置であれば光磁気ディスク装置などHDD
以外のディスク記憶装置を備えた情報処理機器にも適用
できる。
【0092】なお、本発明は、上記実施形態に限定され
るものではなく、実施段階ではその要旨を逸脱しない範
囲で種々に変形することが可能である。更に、上記実施
形態には種々の段階の発明が含まれており、開示される
複数の構成要件における適宜な組み合わせにより種々の
発明が抽出され得る。例えば、実施形態に示される全構
成要件から幾つかの構成要件が削除されても、発明が解
決しようとする課題の欄で述べた課題の少なくとも1つ
が解決でき、発明の効果の欄で述べられている効果の少
なくとも1つが得られる場合には、この構成要件が削除
された構成が発明として抽出され得る。
【0093】
【発明の効果】以上詳述したように本発明によれば、ホ
ストシステムからのライトコマンドで指定された書き込
みに失敗した場合に、その失敗の原因が振動によるもの
か、それ以外によるものかを判定し、振動を原因とする
失敗の場合には、失敗箇所(異常セクタ)は恒久的な損
傷がなく正常であるとして、当該失敗箇所の代替処理を
起動せずに、ホストシステムに振動による異常終了(書
き込み失敗)を通知するようにしたので、継続的な振動
の影響で恒久的な損傷のない正常な箇所に対する代替処
理が多発するのを防止できる。
【0094】また本発明によれば、ディスク記憶装置か
らホストシステムへの振動による異常終了通知に応じ
て、ホストシステムからディスク記憶装置に対し、書き
込みに失敗した箇所からの再書き込み、特に書き込みに
失敗した箇所から最も最近に発行したライトコマンドの
直前のライトコマンドで指定されるライト範囲の終端ま
でのデータの再書き込みが指定できるため、書き込み失
敗の「後戻り」のリカバリ処理が実現できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る情報処理機器の構成
を示すブロック図。
【図2】バッファRAM112とディスクポインタDP
及びホストポインタHPとの関係を説明するための図。
【図3】バッファ206とバッファポインタBP及び上
限アドレスポインタBRとの関係、コマンドテーブル2
07とコマンドテーブルポインタCPとの関係、並びに
バッファ206とコマンドテーブル207との関係を説
明するための図。
【図4】HDD100におけるコマンド処理を説明する
ためのフローチャート。
【図5】HDD100における書き込み動作を説明する
ためのフローチャート。
【図6】ホストシステム200におけるバッファ制御
(バッファ処理)を説明するためのフローチャート。
【符号の説明】
100…HDD(磁気ディスク装置、ディスク記憶装
置) 101…CPU 103…磁気ディスク 108…ROM 112…バッファRAM(ディスク用バッファメモリ) 115…振動検出器 200…ホストシステム 201…CPU 206…バッファ(ホスト用バッファメモリ) 207…コマンドテーブル DP…ディスクポインタ HP…ホストポインタ BP…バッファポインタ BR…上限アドレスポインタ CP…コマンドテーブルポインタ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 12/08 557 G06F 12/08 557 12/16 310 12/16 310G 310Q Fターム(参考) 5B005 JJ12 KK12 MM11 NN03 UU33 WW04 5B018 GA06 KA01 KA12 KA14 MA12 QA01 QA15 5B065 BA01 CA11 CC08 CE14 CS01 EA14 EA37 EA39 ZA16

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 ホストシステムからのライトコマンドで
    指定されたデータをヘッドによりディスクに書き込むこ
    とが可能なディスク記憶装置において、 前記ディスクへの書き込みに失敗した場合、当該失敗が
    前記ディスク記憶装置に加えられた振動によるものか、
    或いは振動以外によるものかを判定する手段と、 前記ディスクへの書き込みに失敗した箇所の代替処理を
    行う代替手段と、 前記判定手段により前記失敗が振動によるものと判定さ
    れた場合、前記代替手段による代替処理を抑制して、前
    記ホストシステムに振動による異常終了を通知する手段
    とを具備することを特徴とするディスク記憶装置。
  2. 【請求項2】 前記異常終了通知手段は、前記ホストシ
    ステムへの前記振動による異常終了通知時に、前記ディ
    スクへの書き込みに失敗した箇所を併せて通知すること
    を特徴とする請求項1記載のディスク記憶装置。
  3. 【請求項3】 前記ホストシステムからのライトコマン
    ドで指定された前記ディスクに書き込むべきデータを一
    時格納するライトキャッシュとして利用可能なディスク
    用バッファメモリと、 前記ホストシステムからのライトコマンドがシーケンシ
    ャルヒットのライトコマンドである場合、当該コマンド
    で指定されたデータの受信を許可して、その受信データ
    を前記バッファメモリ内の直前のライトコマンドで指定
    されたデータの終端の次の位置から順次書き込むバッフ
    ァ書き込み手段と、 前記バッファ書き込み手段による前記ライトコマンドで
    指定されたデータの前記バッファメモリへの書き込みが
    完了し、且つ前記バッファメモリ内の前記ディスクへの
    書き込み待ちデータが予め定められた一定量以下になっ
    た場合に、前記ホストシステムに正常終了を通知して次
    のコマンドを要求する正常終了通知手段とを更に具備す
    ることを特徴とする請求項2記載のディスク記憶装置。
  4. 【請求項4】 前記一定量は、1つのライトコマンドで
    指定可能な最大のブロック数nmax分のデータを前記ホ
    ストシステムから前記ディスク記憶装置の前記バッファ
    メモリに転送するのに必要な時間内に前記ディスクに書
    き込むことができるデータ量に設定されていることを特
    徴とする請求項3記載のディスク記憶装置。
  5. 【請求項5】 書き込みエラーが発生する度に、当該エ
    ラーの原因に無関係に第1の基準回数を上限にカウント
    動作を行う第1のリトライカウンタと、 振動を原因としない書き込みエラーが発生する度に前記
    第1の基準回数より少ない第2の基準回数を上限にカウ
    ント動作を行う第2のリトライカウンタとを更に具備
    し、 前記判定手段は前記第1リトライカウンタが先に前記上
    限の回数をカウントした場合に、前記書き込み失敗が振
    動によるものと判定し、前記第2リトライカウンタが先
    に前記上限の回数をカウントした場合に、前記書き込み
    失敗が振動以外によるものと判定することを特徴とする
    請求項1記載のディスク記憶装置。
  6. 【請求項6】 ホストシステムと、当該ホストシステム
    からのライトコマンドで指定されたデータをヘッドによ
    りディスクに書き込むことが可能なディスク記憶装置と
    を備えた情報処理機器において、 前記ディスク記憶装置は、 前記ディスクへの書き込みに失敗した場合、当該失敗が
    前記ディスク記憶装置に加えられた振動によるものか、
    或いは振動以外によるものかを判定する手段と、 前記ディスクへの書き込みに失敗した箇所の代替処理を
    行う代替手段と、 前記判定手段により前記失敗が振動によるものと判定さ
    れた場合、前記代替手段による代替処理を抑制して、前
    記ホストシステムに振動による異常終了を前記書き込み
    に失敗した箇所と共に通知する異常終了通知手段とを備
    え、 前記ホストシステムは、 前記異常終了通知手段から前記振動による異常終了が通
    知された場合に、前記書き込みに失敗した箇所から最も
    最近に発行したライトコマンドの直前のライトコマンド
    で指定されるライト範囲の終端までのデータを前記ディ
    スクに書き込むためのリカバリライトコマンドを前記デ
    ィスク記憶装置に対して発行する手段を備えていること
    を特徴とする情報処理機器。
  7. 【請求項7】 前記ディスク記憶装置は、 前記ホストシステムからのライトコマンドで指定された
    前記ディスクに書き込むべきデータを一時格納するライ
    トキャッシュとして利用可能なディスク用バッファメモ
    リと、 前記ホストシステムからのライトコマンドがシーケンシ
    ャルヒットのライトコマンドである場合、当該コマンド
    で指定されたデータの受信を許可して、その受信データ
    を前記バッファメモリ内の直前のライトコマンドで指定
    されたデータの終端の次の位置から順次書き込むバッフ
    ァ書き込み手段と、 前記バッファ書き込み手段による前記ライトコマンドで
    指定されたデータの前記バッファメモリへの書き込みが
    完了し、且つ前記バッファメモリ内の前記ディスクへの
    書き込み待ちデータが予め定められた一定量以下になっ
    た場合に、前記ホストシステムに正常終了を通知して次
    のコマンドを要求する正常終了通知手段とを更に備え、 前記ホストシステムは、 前記ディスク記憶装置に書き込むべきデータを一時格納
    するためのホスト用バッファメモリと、 前記バッファメモリに格納されているデータのうち、次
    に前記ディスク記憶装置に転送すべきデータ位置を指し
    示すバッファポインタとを更に備え、 前記リカバリライトコマンド発行手段は、前記異常終了
    通知手段から前記振動による異常終了が通知された場合
    に、前記バッファポインタの指す位置を前記異常終了と
    共に通知された書き込みに失敗した箇所に戻し、その箇
    所から最も最近に発行したライトコマンドの直前のライ
    トコマンドで指定されるライト範囲の終端までのデータ
    を前記ディスクに書き込むためのリカバリライトコマン
    ドを発行することを特徴とする請求項6記載の情報処理
    機器。
  8. 【請求項8】 前記ホストシステムは、 前記バッファメモリにおけるデータの上書きを許可する
    上限位置であって、前記バッファポインタの指し示す前
    記バッファメモリ内の位置から前記最大ブロック数n
    maxと前記一定量との和で示される大きさだけずれた上
    限位置を示すことで、前記バッファメモリ内の、当該上
    限位置から前記バッファポインタの示す位置までの範囲
    を上書き禁止領域として指定するための上限位置ポイン
    タを更に備えることを特徴とする請求項7記載の情報処
    理機器。
  9. 【請求項9】 前記ホストシステムは、 前記ディスク記憶装置に対して発行済みのまたは発行予
    定のライトコマンドに関するライトコマンド情報であっ
    て、当該コマンドで指定されるデータが格納されている
    前記ホスト用バッファメモリ内領域の位置情報を含むラ
    イトコマンド情報を一時格納するためのコマンドテーブ
    ルと、 前記コマンドテーブルに格納されているライトコマンド
    情報のうち、最も最近に前記ディスク記憶装置に発行さ
    れた最新のライトコマンドに関するライトコマンド情報
    の格納位置を指し示すコマンドテーブルポインタと前記
    正常終了通知手段から正常終了が通知された場合に前記
    コマンドテーブルポインタを進める手段とを更に備え、 前記リカバリライトコマンド発行手段は、前記異常終了
    通知手段から前記振動による異常終了が通知された場合
    に、前記バッファポインタの指す位置を前記異常終了と
    共に通知された書き込みに失敗した箇所に戻し、その箇
    所から前記コマンドテーブルポインタの指すライトコマ
    ンドの直前のライトコマンドに関するライトコマンド情
    報により示されるライト範囲の終端までのデータを前記
    ディスクに書き込むためのリカバリライトコマンドを前
    記ディスク記憶装置に対して発行することを特徴とする
    請求項8記載の情報処理機器。
  10. 【請求項10】 前記リカバリライトコマンド発行手段
    は、前記リカバリライトコマンドの発行を、書き込みに
    成功するまで一定のリトライ回数を上限に繰り返すこと
    を特徴とする請求項6記載の情報処理機器。
  11. 【請求項11】 前記リカバリライトコマンド発行手段
    は、前記異常終了通知手段から前記振動による異常終了
    が通知された場合に、一定時間を待って、或いは振動が
    一定レベル以下に下がるのを待って、或いは前記一定レ
    ベル以上の振動が検出される間隔について一定時間もし
    くは前記情報処理機器が利用される状況で決まる時間の
    問振動レベルを監視して、振動レベルが一定の水準以下
    に下がるのを待って、前記リカバリライトコマンドを発
    行することを特徴とする請求項6記載の情報処理機器。
  12. 【請求項12】 ホストシステムからのライトコマンド
    で指定されたデータをヘッドによりディスクに書き込む
    ことが可能なディスク記憶装置における書き込み失敗時
    処理方法であって、 前記ディスクへの書き込みに失敗した場合、当該失敗が
    前記ディスク記憶装置に加えられた振動によるものか、
    或いは振動以外によるものかを判定するステップと、 前記判定ステップにより前記失敗が振動以外によるもの
    と判定された場合、前記書き込みに失敗した箇所の代替
    処理を起動するステップと、 前記判定ステップにより前記失敗が振動によるものと判
    定された場合、前記書き込みに失敗した箇所の代替処理
    を抑制して、前記ホストシステムに振動による異常終了
    を通知するステップとを具備することを特徴とする書き
    込み失敗時処理方法。
  13. 【請求項13】 ホストシステムと、当該ホストシステ
    ムからのライトコマンドで指定されたデータをヘッドに
    よりディスクに書き込むことが可能なディスク記憶装置
    とを備えた情報処理機器における書き込み失敗時処理方
    法であって、 前記ディスクへの書き込みに失敗した場合、当該失敗が
    前記ディスク記憶装置に加えられた振動によるものか、
    或いは振動以外によるものかを判定するステップと、 前記判定ステップにより前記失敗が振動以外によるもの
    と判定された場合、前記書き込みに失敗した箇所の代替
    処理を起動するステップと、 前記判定ステップにより前記失敗が振動によるものと判
    定された場合、前記書き込みに失敗した箇所の代替処理
    を抑制して、前記ディスク記憶装置から前記ホストシス
    テムに振動による異常終了を通知するステップと、 前記異常終了通知ステップにより前記ディスク記憶装置
    から前記ホストシステムに前記振動による異常終了が通
    知された場合に、前記書き込みに失敗した箇所から最も
    最近に発行したライトコマンドの直前のライトコマンド
    で指定されるライト範囲の終端までのデータを前記ディ
    スクに書き込むためのリカバリライトコマンドを前記ホ
    スト装置から前記ディスク記憶装置に対して発行するス
    テップとを具備することを特徴とする書き込み失敗時処
    理方法。
JP2000387411A 2000-12-20 2000-12-20 ディスク記憶装置、同記憶装置を持つ情報処理機器、及び書き込み失敗時処理方法 Withdrawn JP2002189572A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000387411A JP2002189572A (ja) 2000-12-20 2000-12-20 ディスク記憶装置、同記憶装置を持つ情報処理機器、及び書き込み失敗時処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000387411A JP2002189572A (ja) 2000-12-20 2000-12-20 ディスク記憶装置、同記憶装置を持つ情報処理機器、及び書き込み失敗時処理方法

Publications (1)

Publication Number Publication Date
JP2002189572A true JP2002189572A (ja) 2002-07-05

Family

ID=18854347

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000387411A Withdrawn JP2002189572A (ja) 2000-12-20 2000-12-20 ディスク記憶装置、同記憶装置を持つ情報処理機器、及び書き込み失敗時処理方法

Country Status (1)

Country Link
JP (1) JP2002189572A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122837A (ja) * 2005-10-31 2007-05-17 Toshiba Alpine Automotive Technology Corp 情報再生装置
JP2010152987A (ja) * 2008-12-25 2010-07-08 Toshiba Corp 磁気ディスク装置及び磁気ディスク装置制御方法
JP2013109419A (ja) * 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
US9268706B2 (en) 2011-08-01 2016-02-23 Kabushiki Kaisha Toshiba Information processing device including host device and semiconductor memory device having plurality of address conversion information
WO2016189733A1 (ja) * 2015-05-28 2016-12-01 三菱電機株式会社 ディスク記憶装置、ホスト機器および情報機器システム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122837A (ja) * 2005-10-31 2007-05-17 Toshiba Alpine Automotive Technology Corp 情報再生装置
JP2010152987A (ja) * 2008-12-25 2010-07-08 Toshiba Corp 磁気ディスク装置及び磁気ディスク装置制御方法
US9268706B2 (en) 2011-08-01 2016-02-23 Kabushiki Kaisha Toshiba Information processing device including host device and semiconductor memory device having plurality of address conversion information
US9542117B2 (en) 2011-08-01 2017-01-10 Kabushiki Kaisha Toshiba Information processing device including host device and semiconductor memory device having a plurality of address conversion information
US9870155B2 (en) 2011-08-01 2018-01-16 Toshiba Memory Corporation Information processing device including host device and semiconductor memory device having a block rearrangement to secure free blocks
US10331356B2 (en) 2011-08-01 2019-06-25 Toshiba Memory Corporation Data writing processing into memory of a semiconductor memory device by using a memory of a host device
US10949092B2 (en) 2011-08-01 2021-03-16 Toshiba Memory Corporation Memory system with block rearrangement to secure a free block based on read valid first and second data
US11537291B2 (en) 2011-08-01 2022-12-27 Kioxia Corporation Data reading and writing processing from and to a semiconductor memory and a memory of a host device by using first and second interface circuits
US11868618B2 (en) 2011-08-01 2024-01-09 Kioxia Corporation Data reading and writing processing from and to a semiconductor memory and a memory of a host device by using first and second interface circuits
JP2013109419A (ja) * 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
WO2016189733A1 (ja) * 2015-05-28 2016-12-01 三菱電機株式会社 ディスク記憶装置、ホスト機器および情報機器システム

Similar Documents

Publication Publication Date Title
JP3180063B2 (ja) ディスク・ドライブ装置及びこれの制御方法
JP4788528B2 (ja) ディスク制御装置、ディスク制御方法、ディスク制御プログラム
US8316179B2 (en) Command suspension in response, at least in part, to detected acceleration and/or orientation change
JP2006114206A (ja) Dramおよびフラッシュメモリを有するhdd
US20040268070A1 (en) Method and apparatus for backing up data in virtual storage medium
JP2008046791A (ja) 記憶装置、ファームウェア更新方法、及び制御装置
JPH06309234A (ja) ディスク制御装置
JP2001093220A (ja) 複数ハードディスクドライブ環境における省電力制御システム及び省電力制御方法
JP2008077519A (ja) 仮想テープ装置、仮想テープ装置のデータ管理方法、仮想テープ装置のデータ管理プログラム
JP3544476B2 (ja) メモリ管理テーブル作成方法
JP2002189572A (ja) ディスク記憶装置、同記憶装置を持つ情報処理機器、及び書き込み失敗時処理方法
US7613867B2 (en) Information recording apparatus, information recording method and recording medium recording program
JPH01235075A (ja) ディスクメモリ制御装置
JPH0573221A (ja) 磁気テープ制御装置
JP3150242B2 (ja) ディスク装置
JP2001318832A (ja) ディスクキャッシュ制御システム
JP5661313B2 (ja) 記憶装置
JPH09212424A (ja) ディスクキャッシュ及びディスクキャッシュ方法
JPH06348600A (ja) ディスクキャッシュ装置
JPH0744982A (ja) データ記録再生装置及びデータ書込み制御方法
JPH11306674A (ja) ディスク記憶装置及び同装置に適用されるディスクライト制御方法
JP3034826B2 (ja) ハードディスクドライブ装置及びその方法
JP2004199743A (ja) 記録再生装置および記録再生制御方法
JPH09274543A (ja) ディスクアレイ装置
JPH0281224A (ja) 磁気ディスク装置のバックアップ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050815

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20061120