(57)【要約】【課題】致命的な異常制御を防止しつつ、動作速度の低減が緩和された装置を提供する。【解決手段】装置において、プログラム、変数データの初期値、定数データが記憶された不揮発性記憶部と、揮発性記憶部と、不揮発性記憶部に記憶されたプログラム、変数データの初期値、および定数データを揮発性記憶部に書き込んだ後、揮発性記憶部に書き込んだプログラムを実行する制御部とを備え、制御部が、揮発性記憶部のビット化けを検出する検出部と、定数データに誤りが検出された場合に、不揮発性記憶部から定数データを読み出し揮発性記憶部に書き込んだ後、制御部にプログラムの実行を継続させる定数回復部と、変数データおよびプログラムのいずれかに誤りが検出された場合に、不揮発性記憶部からプログラム、変数データの初期値、および定数データを読み出し揮発性記憶部に書き込んだ後、制御部にプログラムを始めから実行させる再起動部とを備える。【選択図】        図２
2009187049.tif 000002
【特許請求の範囲】
【請求項１】
プログラム、該プログラムの実行に伴い値が変化する変数データの初期値、および該プログラムの実行に拘わらず値が一定である定数データが記憶された不揮発性記憶部と、
揮発性記憶部と、
前記不揮発性記憶部に記憶されたプログラム、変数データの初期値、および定数データを読出し前記揮発性記憶部に書き込んだ後、該揮発性記憶部に書き込んだプログラムを実行する制御部とを備え、
前記制御部が、
前記揮発性記憶部に記憶されたプログラム、変数データ、および定数データのビット化けを検出する検出部と、
前記検出部によって定数データに誤りが検出された場合に、前記不揮発性記憶部から定数データを読み出し前記揮発性記憶部に書き込んだ後、前記制御部に、前記検出部に誤りを検出する前に実行していた箇所の続きからプログラムの実行を継続させる定数回復部と、
前記検出部によって変数データおよびプログラムのいずれかに誤りが検出された場合に、前記不揮発性記憶部からプログラム、変数データの初期値、および定数データを読み出し前記揮発性記憶部に書き込んだ後、前記制御部に、該揮発性記憶部に書き込まれたプログラムを始めから実行させる再起動部とを備えた装置。
【請求項２】
前記制御部が、外部から送信されてきた処理要求に応じた処理および応答を行う要求処理部を備え、
前記検出部は、前記要求処理部による処理および応答が完了した後で誤りを検出するものであることを特徴とする請求項２記載の装置。
【請求項３】
前記検出部が、前記揮発性記憶部に記憶されたプログラム、変数データ、および定数データそれぞれからチェックサムを計算することによって誤りを検出するものであることを特徴とする請求項１または２記載の装置。
【請求項４】
前記揮発性記憶部が、プログラム、変数データ、および定数データに付随してパリティ符号を記憶するものであり、
前記検出部が、前記揮発性記憶部からプログラム、変数データ、および定数データのそれぞれとともに読み出されたパリティ符号の状態を確認することによって誤りを検出するものである請求項１または２記載の装置。
【請求項５】
前記検出部が、検出した誤りの履歴を前記不揮発性記憶部に記憶するものであることを特徴とする請求項１から４いずれか１項記載の装置。
【請求項６】
所定の時間が経過するごとに初期化要求割り込みを生成するウォッチドッグタイマを備え、
前記再起動部は、前記ウォッチドッグタイマが初期化要求割り込みを生成した場合にも前記制御部に、前記揮発性記憶部に書き込まれたプログラムを始めから実行させるものであり、
前記制御部は、前記揮発性記憶部に書き込まれたプログラムの実行中は、前記ウォッチドッグタイマにおける前記所定の時間が経過する前に、該ウォッチドッグタイマをリセットするものであることを特徴とする請求項１から５いずれか１項記載の装置。
【請求項７】
情報が記録される情報記録媒体と、
前記情報記録媒体に情報を記録する情報記録部とを備え、
前記制御部が、前記情報記録部を制御して前記情報記録媒体に情報を記録させるものであることを特徴とする請求項１から６いずれか１項記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行する制御部を備えた装置に関する。
【背景技術】
【０００２】
複雑な機能が求められる装置にプログラムを実行する制御部を備え、この制御部に装置内の各部を制御させることが広く行われている。装置の制御部は、メモリに記憶されたプログラムを読出して実行することによって装置各部の制御し、また、プログラムの実行に伴い各種データをメモリから読出し、あるいは必要に応じてメモリに書き込む。例えば、ホストコンピュータからの要求に応じて磁気ディスクに情報を記録しまた情報を読み出す磁気ディスク装置は、プロセッサで構成された制御部を内蔵している。制御部はメモリに記憶されたプログラムを実行することによって、ホストコンピュータから送信されてくる要求コマンドに応じて磁気ディスクのスピンドルモータやヘッドが取り付けられたキャリッジアームのモータを制御し、磁気ディスクへのデータの記憶、および記憶されたデータの読み出しを行う。プロセッサによって実行されるプログラムおよびデータの記憶装置としては、ＳＲＡＭやＤＲＡＭといった揮発性の半導体メモリがある。揮発性の半導体メモリは読み書きが高速に行えるが、電源オフによって内容が失われる。そこで、プログラムやデータは通常、フラッシュメモリやディスク媒体といった低速ではあるが不揮発性の記憶装置または半導体メモリに格納されており、装置の電源投入時に揮発性の半導体メモリにロードされてから実行される。
【０００３】
半導体メモリの微細化加工の進歩に伴いメモリセルの集積度が高まる一方で、ソフトエラーによるビット化けが起こりやすくなっている。ソフトエラーは、宇宙空間から大気圏を突き抜けて地上に達した宇宙線（α線）が半導体メモリに衝突し、メモリセルに保持されたデータの状態（１か０か）が変化することを指す。例えばＤＲＡＭは、２値からなるビット情報を、メモリセルに蓄積される電荷量として保持するため、宇宙線が衝突するときのエネルギーで電荷が変化すると情報が失われる。メモリセルのサイズは集積度が高まるほど小さくなり、１回の宇宙線衝突で影響を受けるビット数も増加する。
【０００４】
ＳＲＡＭやＤＲＡＭに書き込まれたプログラムやプログラム動作に必須のデータがビット化けにより変化することは、装置が所期の性能を発揮できなくなる原因となるだけでなく、異常動作や破損の原因ともなる。磁気ディスク装置の例では、制御部が暴走すると目的の情報が磁気ディスクに記録されないだけでなく、正常に記録されていたデータが破壊されたり、磁気ディスクが損傷を受け読出し不能になったりするおそれがある。
【０００５】
揮発性の半導体メモリにおけるビット化け対応のひとつとして、エラー訂正機能を内蔵したＥＣＣメモリの利用がある。しかし、ＥＣＣメモリは、正しくエラー訂正できるビット数に限度があるだけでなく、複雑なエラー訂正回路を内蔵するためコストが高く、またエラー訂正回路によるアクセス遅延によって読み書きの動作が低速になるという問題がある。
【０００６】
また、別のビット化け対策として、パリティ付メモリの多重使用がある。これは、揮発性のメモリとしてパリティ付メモリを用い、このパリティ付メモリの２箇所あるいは２個のパリティ付メモリにプログラムおよびデータを書き込み、２つのメモリのうち一方からプログラムを読み出すときにパリティエラーが検出された場合には、他方のメモリからプログラムを読み出すものである。ただし、メモリの多重使用は、メモリの使用効率を低下させるためコストが増大してしまう。
【０００７】
そこで、メモリの多重化やエラー訂正は行わずに、ビット化けの検出のみを行う手法が提案されている。例えば、所定のブロックごとにプログラムやデータのパリティやチェックサムを確認し、異常が検出されたブロックをＲＯＭやフラッシュメモリのオリジナルで上書きする手法が提案されている（例えば、特許文献１〜３参照。）。
【特許文献１】特開２０００−１３２４６１号公報
【特許文献２】特開２００５−２０８９５８号公報
【特許文献３】特開２００６−７２４６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、この手法では、パリティまたはチェックサムのエラーを検出する前のプログラムやデータがプロセッサによってすでに利用されていると、プログラムが上書きされただけではプロセッサが異常な動作から復帰しないおそれがあり、異常動作が連鎖するおそれがある。この一方、記憶内容のエラーを検出するたびに装置全体をリセットすると全体的な動作速度が低下し、要求された時間内で応答ができないおそれがある。
【０００９】
上記事情に鑑み、本明細書に記載する実施形態は、ビット化けのための特別な訂正回路を用いることなく、装置にとって致命的な異常制御を防止しつつ、動作速度の低減が緩和された装置を提供する。
【課題を解決するための手段】
【００１０】
上記目的を達成する装置の基本形態は、プログラム、このプログラムの実行に伴い値が変化する変数データの初期値、およびこのプログラムの実行に拘わらず値が一定である定数データが記憶された不揮発性記憶部と、
揮発性記憶部と、
上記不揮発性記憶部に記憶されたプログラム、変数データの初期値、および定数データを読出し上記揮発性記憶部に書き込んだ後、この揮発性記憶部に書き込んだプログラムを実行する制御部とを備え、
上記制御部が、
上記揮発性記憶部に記憶されたプログラム、変数データ、および定数データのビット化けを検出する検出部と、
上記検出部によって定数データに誤りが検出された場合に、上記不揮発性記憶部から定数データを読み出し上記揮発性記憶部に書き込んだ後、上記制御部に、上記検出部に誤りを検出する前に実行していた箇所の続きからプログラムの実行を継続させる定数回復部と、
上記検出部によって変数データおよびプログラムのいずれかに誤りが検出された場合に、上記不揮発性記憶部からプログラム、変数データの初期値、および定数データを読み出し上記揮発性記憶部に書き込んだ後、上記制御部に、この揮発性記憶部に書き込まれたプログラムを始めから実行させる再起動部とを備えている。
【００１１】
この基本形態によれば、定数データは本来不揮発性記憶部に記憶された状態から値が変化しないので、不揮発性記憶部から読み出したオリジナルを揮発性記憶部に書き込んでプログラムの実行を継続するので動作速度の低下が抑えられる。この一方、プログラム、および値が通常変化する変数データに誤りが検出された場合には不揮発性記憶部から読み出したオリジナルを揮発性記憶部に書き込んでも正常な動作を続行できない確率が高い。この基本形態によれば、プログラム自体および値が通常変化する変数データに誤りが検出された場合にはプログラム、変数データの初期値、および定数データを読み出し上記揮発性記憶部に書き込んだ後、制御部にプログラムを始めから実行させることによって動作の回復を確実にしている。したがって、ビット化けのための特別な訂正回路を用いることなく、装置にとって致命的な異常制御を防止しつつ、動作速度の低減が緩和される。
【００１２】
上記基本形態に対し、上記制御部が、外部から送信されてきた処理要求に応じた処理および応答を行う要求処理部を備え、
上記検出部は、上記要求処理部による処理および応答が完了した後で誤りを検出するものである応用形態は好適である。
【００１３】
この好適な応用形態によれば、処理要求に応じた処理および応答を行った後に誤りを検出するので、誤り検出の時間による応答遅延が抑えられる。
【００１４】
上記基本形態に対し、上記検出部が、上記揮発性記憶部に記憶されたプログラム、変数データ、および定数データそれぞれからチェックサムを計算することによって誤りを検出する応用形態は好適である。
【００１５】
この好適な応用形態によれば、パリティ付メモリやＥＣＣメモリといった、複雑な回路を有するメモリではなく一般的な構成のメモリを使用することができるので、装置の製造コストを低減できる。
【００１６】
上記基本形態に対し、上記揮発性記憶部が、プログラム、変数データ、および定数データに付随してパリティ符号を記憶するものであり、
上記検出部が、上記揮発性記憶部からプログラム、変数データ、および定数データのそれぞれとともに読み出されたパリティ符号の状態を確認することによって誤りを検出するものである応用形態は好適である。
【００１７】
この好適な応用形態によれば、制御部が誤り検出のために基準となる値を読み出したり、読み出した値の演算を行う必要がないので処理を高速に行うことができる。
【００１８】
上記基本形態に対し、上記検出部が、検出した誤りの履歴を上記不揮発性記憶部に記憶するものである応用形態は好適である。
【００１９】
この好適な応用形態によれば、不揮発性記憶部に記憶された履歴は故障解析等に有用である。
【００２０】
上記基本形態に対し、更に所定の時間が経過するごとに初期化要求割り込みを生成するウォッチドッグタイマを備え、
上記再起動部は、上記ウォッチドッグタイマが初期化要求割り込みを生成した場合にも上記制御部に、上記揮発性記憶部に書き込まれたプログラムを始めから実行させるものであり、
上記制御部は、上記揮発性記憶部に書き込まれたプログラムの実行中は、上記ウォッチドッグタイマにおける上記所定の時間が経過する前に、このウォッチドッグタイマをリセットするものである応用形態は好適である。
【００２１】
この好適な応用形態によれば、検出部で誤りが検出できない事態となっても、異常動作を短時間で終了することができる。
【００２２】
上記基本形態に対し、更に情報が記録される情報記録媒体と、
上記情報記録媒体に情報を記録する情報記録部とを備え、
上記制御部が、上記情報記録部を制御して上記情報記録媒体に情報を記録させるものである応用形態は好適である。
【００２３】
これまで説明した構成は、例えばハードディスク装置のような、情報記録媒体に情報を高速に記録する応用形態に好適である。
【発明の効果】
【００２４】
以上説明したように、装置の上記基本形態によればビット化けのための特別な訂正回路を用いることなく、装置にとって致命的な異常制御を防止しつつ、動作速度の低減が緩和される。
【発明を実施するための最良の形態】
【００２５】
基本形態および応用形態について上記説明した装置に対する具体的な実施形態を、以下図面を参照して説明する。
【００２６】
図１は、装置の具体的な第１実施形態であるハードディスク装置（ＨＤＤ）の内部構造を示す図である。
【００２７】
図に示すハードディスク装置（ＨＤＤ）１は、情報が記録される円盤状の磁気ディスク１１、磁気ディスク１１を回転駆動するスピンドルモータ１２、磁気ディスク１１に対して情報の書き込み読出しを行う磁気ヘッド１３、磁気ヘッド１３が先端に取り付けられ、磁気ディスク１１に沿ってスイングするキャリッジアーム１４、キャリッジアーム１４を駆動する駆動部としてのボイスコイルモータ１６、および、ＨＤＤ１の全体を制御する制御回路２０を備えている。
【００２８】
このＨＤＤ１では、磁気ディスク１１へ情報の記録、および磁気ディスク１１に記録された情報の再生が行われる。これらの情報の記録および再生にあたっては、まず、制御回路２０の制御によってスピンドルモータ１２が磁気ディスク１１を駆動するとともにボイスコイルモータ１６がキャリッジアーム１４を駆動する。磁気ディスク１１上には、情報が記録される領域である複数のトラックが同心円状に配置されており、各トラックは複数のサーボ領域によって区切られ、サーボ領域とサーボ領域の間にはさらに、情報の書き込みおよび読出しの単位となる複数のセクタが配置されている。サーボ領域には各トラックおよび各サーボを識別するためのサーボ番号が記録されている。磁気ヘッド１３は制御回路２０の制御によって磁気ディスク１１上の所望のトラックに位置決めされると、磁気ディスク１１の回転によって、磁気ディスク１１の各トラックに並ぶセクタに順次近接する。情報の記録時には、磁気ディスク１１に近接した磁気ヘッド１３に電気的な記録信号が入力される。磁気ヘッド１３は、入力された記録信号に応じてセクタに磁界を印加して、その記録信号に担持された情報をそれらのセクタの磁化方向の形式で記録する。また、情報の再生時には、その磁気ヘッドが、それらのセクタの磁化方向の形式で記録された情報を、それらの磁化それぞれから発生する磁界に応じて電気的な再生信号を生成することにより取り出す。
【００２９】
ここで、磁気ディスク１１は、上述した応用形態における情報記憶媒体部の一例に相当し、スピンドルモータ１２、磁気ヘッド１３、ボイスコイルモータ１６のそれぞれは、上述した応用形態における情報記録部の一例に相当する。
【００３０】
図２は、図１に示すハードディスク装置の制御回路の構成を示すブロック図である。
【００３１】
図２に示す制御回路２０は、インストラクションを実行するプロセッサおよび周辺機能をワンチップに集積されたマイクロコントローラユニット（ＭＣＵ）３０、インストラクションおよびデータが記憶されたフラッシュメモリ２１、外部のホストコンピュータと情報をやり取りするホストインターフェース（ホストＩＦ）２２、磁気ヘッド１３（図１参照）と、情報をあらわす記録信号をやり取りするリードチャネルコントローラ（ＲＤＣ）２４、そして、スピンドルモータ（ＳＰＭ）１２およびボイスコイルモータ（ＶＣＭ）１６への制御信号を出力するスピンドルＶＣＭコントローラ（ＳＶＣ）２５を有している。ＭＣＵ３０、フラッシュメモリ２１、ホストＩＦ２２、フラッシュメモリ２１、ＲＤＣ２４、および、ＳＶＣ２５は、外部バス２６を介して互いに接続されている。
【００３２】
ＭＣＵ３０は、インストラクションを実行するマイクロプロセシングユニット（ＭＰＵ）３１、ＭＰＵ３１で実行されるインストラクションが書き込まれるＲＡＭ３２、ＲＡＭ３２から読み出される値のパリティエラーを検出するパリティ検出部３２１、ＭＣＵ３０内部のＭＰＵバス３３ａと外部バス２６との間で中継を行う外部バスＩＦ３４、ＭＣＵ３０の初期化インストラクションが記憶されたＲＯＭ３５、ＭＣＵ３０とサーボ機能を担当する各部との間で中継を行うサーボＩＦ３６、インストラクションを実行することによってサーボ機能を実行するデジタルシグナルプロセッサ（ＤＳＰ）３７、ＤＳＰ３７の初期化インストラクションが記憶されたＤＳＰＲＯＭ３８、ＤＳＰ３７にサーボ機能を実行させるためのインストラクションが記憶されるＤＳＰＲＡＭ３９、ＤＳＰＲＡＭ３９から読み出される値のパリティエラーを検出するパリティ検出部３９１、および、ＭＰＵ３１の動作を監視するためのウォッチドッグタイマ３１１を有している。ＭＰＵ３１、ＲＡＭ３２、ＲＯＭ３５、サーボＩＦ３６、ウォッチドッグタイマ３１１は、ＭＰＵバス３３ａを介して互いに接続されており、ＭＰＵ３１はＲＡＭ３２およびＲＯＭ３５に記憶されたインストラクションを実行する。ＭＰＵ３１はさらに、フラッシュメモリ２１、ホストＩＦ２２、およびＳＤＲＡＭ２３に対しても、外部バスＩＦ３４を介してデータの書き込みおよび読み出しを行うことができる。ＲＡＭ３２は、パリティ付スタティックＲＡＭ（ＳＲＡＭ）で構成されている。ＲＯＭ３５はマスクＲＯＭであり、ＭＰＵ３１の初期化インストラクションが記憶されている。ウォッチドッグタイマ３１１は、カウントを行うことにより所定の時間を計時しこの時間が経過するとＭＰＵ３１に対する初期化要求割り込みを生成する。ＭＰＵ３１は、初期化要求割り込みに応じてＲＯＭ３５の初期化インストラクションを実行する。ウォッチドッグタイマ３１１は、ＭＰＵ３１が所定の時間を表すカウンタ値を書き込むことによってリセットされる。なお、ＭＣＵ３０には、上記各部の他にも、特殊な演算をワイヤードロジック回路によって実行しＭＰＵ３１の処理を補助する回路や、汎用ＩＯポートの入出力信号を処理する回路も含まれているが詳細な説明および図示は省略する。
【００３３】
ＤＳＰ３７、ＤＳＰＲＯＭ３８、ＳＤＰＲＡＭ３９はＤＳＰバス３３ｂを介して互いに接続されている。ＤＳＰ３７は、サーボＩＦ３６を介してＭＰＵ３１からサーボコマンドを受信し、またＭＰＵ３１にサーボコマンドの実行結果を送信する。ＤＳＰ３７は、さらに、外部バスＩＦ３４を介してフラッシュメモリ２１にアクセスすることができる。
【００３４】
フラッシュメモリ２１は不揮発性メモリであり、ＭＰＵ３１およびＤＳＰ３７のファームウェアが記憶されている。ファームウェアには、インストラクションおよびインストラクションの実行中に参照されるテーブル含まれる。フラッシュメモリ２１は低速すなわちアクセスタイムが比較的長い。このため、インストラクションおよびテーブルは、電源投入後の初期化動作中にフラッシュメモリ２１から読み出されて高速のＲＡＭ３２およびＤＳＰＲＡＭ３９に書き込まれる。ＭＰＵ３１およびＤＳＰ３７は、ＲＡＭ３２およびＤＳＰＲＡＭ３９に書き込まれたインストラクションコピーを読み出して実行する。このインストラクションの内容およびインストラクション実行の詳細については後述する。
【００３５】
ＲＯＭ３５には、電源投入および再起動の直後にＭＰＵ３１によって実行される初期化インストラクションが記憶されている。ＭＰＵ３１は初期化インストラクションを読み出し実行することによって、ＭＣＵ３０内の各部を初期化し、フラッシュメモリ２１からインストラクションを読み出してＲＡＭ３２に書き込み、ＲＡＭ３２に書き込んだインストラクションに制御を移す。ＲＡＭ３２は、インストラクションに付随してパリティ符号も記憶する。パリティ検出部３２１は、ＭＰＵ３１がＲＡＭ３２に対し書き込みを行う場合にパリティ符号を生成し、ＭＰＵ３１がＲＡＭ３２から読出しを行う場合に読み出した値のパリティを確認し、パリティエラーを検出した場合には、エラーを意味する検出フラグを立て、パリティエラーを検出したアドレスを内蔵するエラーアドレスレジスタに記憶する。検出フラグおよびエラーアドレスレジスタは、ＭＰＵ３１によって読出し可能である。
【００３６】
ＤＳＰＲＯＭ３８もＲＯＭ３５と同様にマスクＲＯＭであり、電源投入および再起動の直後にＤＳＰ３８によって実行される初期化インストラクションが記憶されている。ＤＳＰ３８はＤＳＰＲＯＭ３８の初期化インストラクションを読み出し実行することによって、周辺の各部を初期化しフラッシュメモリ２１からインストラクションを読み出してＤＳＰＲＡＭ３９に書き込み、ＤＳＰＲＡＭ３９に書き込んだインストラクションに制御を移す。
【００３７】
パリティ検出部３９１は、ＤＳＰ３８がＤＳＰＲＡＭ３９に対し書き込みを行う場合にパリティ符号を生成し、ＤＳＰ３８がＤＳＰＲＡＭ３９から読出しを行う場合に読み出した値のパリティを確認し、パリティエラーを検出した場合には、エラーを意味する検出フラグを立て、パリティエラーを検出したアドレスを内蔵するエラーアドレスレジスタに記憶する。検出フラグおよびエラーアドレスレジスタは、ＤＳＰ３８によって読出し可能である。
【００３８】
ホストＩＦ２２は、外部のホストコンピュータからの情報書き込みおよび読出しのコマンドを受信し、ＭＰＵ３１に通知する。ホストコンピュータからはセクタ単位で書き込みおよび読出しが指示される。ＲＤＣ２４は、情報の読出し時に、磁気ヘッド１３（図１参照）が読み出した情報の変換処理を行い、処理した情報をホストＩＦ２２に送信する。ホストＩＦ２２は、ＲＤＣ２４から受信した情報をＳＤＲＡＭ２３に一時的に蓄積した後、ホストコンピュータに送信する。情報の書き込み時には、ホストＩＦ２２がホストコンピュータから供給されてきた情報をＲＤＣ２４に送信し、この情報をＲＤＣ２４が磁気ヘッド１３に供給する。
【００３９】
サーボＩＦ３６、ＤＳＰ３７、ＤＳＰＲＯＭ３８、ＳＤＰＲＡＭ３９、およびＳＶＣ２５は、ＭＰＵ３１に対しサーボ機能を提供している。ＳＤＰＲＡＭ３９に書き込まれたインストラクションを実行するＤＳＰ３７は、ＭＰＵ３１から目的のセクタが配置されたトラックとサーボ領域の位置を受け取ると、磁気ヘッド１３からＲＤＣ２４を介して読み出したサーボの情報と比較し、ＳＶＣ２５に制御信号を送信してＳＰＭ１２およびＶＣＭ１６の動作を制御して磁気ヘッド１３を目的のトラックの位置に移動させ追従させる。磁気ヘッド１３から読み出されたサーボの情報が目的とするサーボ領域と一致しオントラック状態となった場合には、ＤＳＰ３７はＭＰＵ３１に対しサーボの正常終了を通知する。オントラック状態となった後、目的のセクタに対しホストＩＦ２２およびＲＤＣ２４によって情報の記録または情報の読み出しが行われる。ＤＳＰ３７は、情報が記録されたセクタの後に配置されたサーボ領域についても確認を行い、情報が適切なセクタに記憶されたことを確認する。
【００４０】
ここで、ＭＰＵ３１とＲＯＭ３５の組み合わせ、およびＤＳＰ３７とＤＳＰＲＯＭ３８の組み合わせのそれぞれは、上述した基本形態における制御部の一例に相当する。また、ＲＯＭ３５は、上述した基本形態における不揮発性記憶部の一例に相当し、ＲＡＭ３２およびＤＳＰＲＡＭ３９のそれぞれは、上述した基本形態における揮発性記憶部の一例に相当する。
【００４１】
続いて、インストラクションの内容およびインストラクション実行について説明する。
【００４２】
図３は、図２に示すフラッシュメモリに記憶されたファームウェアの構成を示す図である。
【００４３】
フラッシュメモリ２１には、ＭＰＵ３１によって実行されるコマンド処理ファームウェア４１と、ＤＳＰ３７によって実行されるサーボ処理ファームウェア４２が記憶されている。ここで、ファームウェアは、プロセッサによって実行されるインストラクションとインストラクションを実行するプロセッサによって参照または書き込みされるテーブルを含んだものを意味する。
【００４４】
コマンド処理ファームウェア４１には、ＭＰＵ３１が実行するインストラクション４１１、ＭＰＵ３１がインストラクションを実行する際に参照するＡテーブル４１３の初期値およびＢテーブル４１５が含まれている。Ａテーブル４１３には、ＭＣＵ３０のＩＯポートを設定するＩＯＰテーブル、データを一時保存するキャッシュテーブル、およびアドレスの変換処理に用いるアドレス変換テーブルが含まれている。Ａテーブル４１３は、インストラクションの実行に伴い値が書き換えられるものであり、インストラクション自身が正常に実行されるため必須となるテーブルである。フラッシュメモリ２１に記憶されたＡテーブル４１３の初期値はインストラクションの実行開始時における初期値である。Ｂテーブル４１５は、インストラクションの実行に拘わらず値が一定である。コマンド処理ファームウェア４１にはインストラクション４１１、Ａテーブル４１３、Ｂテーブル４１５のそれぞれに対応したチェックサム４１２，４１４，４１６も含まれている。チェックサム４１２，４１４，４１６のそれぞれは、より詳細には、インストラクション４１１、Ａテーブル４１３、Ｂテーブル４１５のそれぞれがさらに所定ワード数ごとに区切られたブロックに応じた値を含んでいる。
【００４５】
ＭＰＵ３１とＤＳＰ３７とは、プロセッサによって実行可能なインストラクションセットが異なり、担当する機能も異なる。このため、コマンド処理ファームウェア４１とサーボ処理ファームウェア４２とは、まったく異なる内容であるが、サーボ処理ファームウェア４２は、コマンド処理ファームウェア４１と同様の構成を有しており、具体的には、ＤＳＰ３７が実行するインストラクション４２１、ＤＳＰ３７がインストラクションを実行する際に参照するＡテーブル４２３およびＢテーブル４２５が含まれており、さらに、インストラクション４２１、Ａテーブル４２３およびＢテーブル４２５のそれぞれに相当したチェックサム４２２，４２４，４２６が含まれている。
【００４６】
ここで、インストラクション４１１，４２１は、上述した基本形態におけるプログラムの一例に相当し、Ａテーブル４１３、４２３が上述した基本形態における変数データの一例に相当し、Ｂテーブル４１５、４２５が上述した基本形態における定数データの一例に相当する。
【００４７】
ＭＰＵ３１は、電源投入後および再起動後、ＲＯＭ３５に記憶された初期化インストラクションを実行することによって、フラッシュメモリ２１に記憶されたコマンド処理ファームウェア４１を読み出し、このコマンド処理ファームウェア４１の全体に亘るコピーをＲＡＭ３２とＳＤＲＡＭ２３の双方に書き込む。コピーがＲＡＭ３２に書き込まれる際にはパリティ検出部３２１によってワードごとにパリティが生成され、ＲＡＭ３２にはこのパリティも記憶される。コピーの書き込みが終了した後、初期化プログラムを実行していたＭＰＵ３１は、ＲＡＭ３２に書き込まれたコマンド処理ファームウェア４１のインストラクション４１１の実行を開始する。Ａテーブル４１３はＲＡＭ３２に書き込まれており、インストラクション４１１の実行に伴い書き換えられ変化していく。ＳＤＲＡＭ２３に書き込まれたコピーは、ＲＡＭ３２のバックアップデータとなる。
【００４８】
図４は、フラッシュメモリに記憶されたコマンド処理ファームウェアのコピーがＲＡＭおよびＳＤＲＡＭに書き込まれる様子を説明する図である。
【００４９】
フラッシュメモリ２１に記憶されたコマンド処理ファームウェアに含まれるインストラクション４１１、Ａテーブル（初期値）４１３、Ｂテーブル４１５、およびチェックサム４１２，４１４，４１６のコピーが、ＲＡＭ３２とＳＤＲＡＭ２３の双方に書き込まれる。
【００５０】
ＤＳＰ３７も、ＭＰＵ３１と同様に、電源投入（Ｐｏｗｅｒ  Ｏｎ）後および再起動（Ｒｅｂｏｏｔ）後、ＤＳＰＲＯＭ３８に記憶された初期化プログラムを実行することによって、フラッシュメモリ２１に記憶されたサーボ処理ファームウェア４２を読み出し、このサーボ処理ファームウェア４２の全体に亘るコピーをＤＳＰＲＡＭ３９とＳＤＲＡＭ２３の双方に書き込む。コピーがＤＳＰＲＡＭ３９に書き込まれる際にはパリティ検出部３９１によってワードごとにパリティが生成され、ＤＳＰＲＡＭ３９にはこのパリティも記憶される。コピーの書き込みが終了した後、初期化プログラムを実行していたＤＳＰ３７は、ＤＳＰＲＡＭ３９に書き込まれたサーボ処理ファームウェア４２のうちインストラクション４２１の実行を開始する。ＳＤＲＡＭ２３に書き込まれたコピーは、ＤＳＰＲＡＭ３９のバックアップデータとなる。なお、以降の説明では、ＲＡＭ３２およびＳＤＲＡＭ２３に書き込まれたインストラクション、Ａテーブル、およびＢテーブルについてもフラッシュメモリ２１に記憶されたものと同一の符号を付して説明を続ける。
【００５１】
続いて、制御回路２０の動作の概略を説明する。コマンド処理ファームウェア４１を実行するＭＰＵ３１は、ホストＩＦ２２を介して外部のホストコンピュータから、特定のセクタに対する情報の記録（Ｗｒｉｔｅ）または情報の読み出し（Ｒｅａｄ）のコマンドを受け、指定されたセクタに対応するトラックおよびサーボ領域を指定するとともに、ホストＩＦ２２およびＲＤＣ２４に対し、目的のサーボ領域に続く目標のセクタに対する記録または読出しの設定を行う。サーボ処理ファームウェア４２を実行するＤＳＰ３７は、ＭＰＵ３１から目的とするトラックおよびサーボ領域の指定を受け、ＲＤＣ２４を介して磁気ヘッド１３からサーボ領域のサーボ番号を読み出しながら、ＳＶＣ２５によるＶＣＭ１６の駆動を制御して、磁気ヘッド１３を指定されたトラック上に移動させる。磁気ヘッド１３が指定されたトラック上に移動すると、磁気ヘッド１３からは指定されたサーボ領域のサーボ番号が読み出される。こうしてＤＳＰ３７はオントラック状態、すなわち磁気ヘッド１３が指定されたトラック上にある状態を検知し、このオントラック状態をＭＰＵ３１に通知する。また、ホストＩＦ２２およびＲＤＣ２４が、サーボ領域に続く目的のセクタに対する記録または読出しを行う。
【００５２】
図５は、磁気ヘッドがトラックに沿って移動している状態で、サーボ領域が検出されるタイミングを示す図である。
【００５３】
磁気ヘッド１３は、トラックに沿って移動している状態では、トラック上に配置された複数のサーボ領域ｎ，ｎ＋１，ｎ＋２，…が磁気ヘッド１３を通過する。ここでは、目的とするサーボ領域がサーボ領域ｎとして説明する。サーボ領域ｎが磁気ヘッド１３を通過すると、ＤＳＰ３７は、サーボ領域の通過を検出する（図５のタイミングＡ）。この後、ＤＳＰ３７はサーボ領域のサーボ番号ｎを取得し、ＭＰＵ３１によって指定されたサーボ領域の番号と一致するか確認し、一致する場合には、オントラック状態であることをサーボ番号とともにＭＰＵ３１に通知する（タイミングＢ）。このサーボ領域の後、目的とするセクタが磁気ヘッド１３を通過する。ＭＰＵ３１では、ＤＳＰ３７からの通知によって割り込みが発生する（タイミングＣ）。ＭＰＵ３１は割り込み処理で、ＤＳＰ３７から通知されたサーボ番号とＭＰＵ３１が指定していたサーボ番号の一致を確認し、一致が確認されればオントラック状態を表すフラグを立てて割り込み処理を終了する。割り込み処理から復帰したＭＰＵ３１は通常処理でフラグを確認することにより、オントラック状態を確認する（タイミングＤ）。
【００５４】
オントラック状態の確認は、目的とするセクタが磁気ヘッド１３を通過した後でも行われる。
【００５５】
図６は、記録コマンドにおいて、サーボ領域が検出されるタイミングを示す図である。図６には、サーボ領域ｎに続く３つのセクタｍ，ｍ＋１，ｍ＋２に情報が記録される場合のタイミングが示されている。
【００５６】
情報が最終のセクタｍ＋２まで適切に記録されたか否か、すなわち、磁気ヘッド１３がセクタｍ＋２までトラックに沿って移動したか否かは、セクタｍ＋２の後のサーボ領域ｎ＋１の通過により検知される。
【００５７】
セクタｍ＋２に情報の記録が行われた後、サーボ領域ｎ＋１が磁気ヘッド１３を通過すると、ＤＳＰ３７は、サーボ領域の通過を検出し（図６のタイミングＡ）、サーボ領域のサーボ番号ｎ＋１を取得し、ＭＰＵ３１によって指定されたサーボ領域の次の番号と一致するか確認し、一致する場合には、オントラック状態であることをサーブ番号とともにＭＰＵ３１に通知する（タイミングＢ）。ＭＰＵ３１では、ＤＳＰ３７からの通知によって割り込みが発生する（タイミングＣ）。ＭＰＵ３１はオントラック状態を表すフラグを立てて割り込み処理を終了する。割り込み処理から復帰したＭＰＵ３１は通常処理でフラグを確認することにより、記録が成功したと判断し、ホストコンピュータに記録コマンドの完了ステータスＸを報告する（タイミングＥ）。これによって、ホストコンピュータは記録が成功したことを検知する。
【００５８】
ＭＰＵ３１およびＤＳＰ３７は、上述した処理とともに、ＲＡＭ３２およびＳＤＲＡＭ２３に書き込まれたプログラムのビット化けを検出し、ビット化けを検出した場合にはプログラムの復旧を行っている。この実施形態では、ＲＡＭ３２に書き込まれた、インストラクションおよびテーブルを含むプログラムのビット化けは、まず、パリティ検出部３２１によって検出される。パリティ検出部３２１は、アドレスを指定したＭＰＵ３１によってパリティ付きのＲＡＭ３２からプログラムのインストラクションおよびテーブルが読み出されるとき、パリティ検出部３２１は読み出された内容のパリティをチェックする。パリティ検出部３２１は、パリティエラーを検出した場合、エラーが検出されたアドレスを内部のレジスタに記憶し、エラーの検出を表すフラグを立てる。エラーが検出されたアドレスおよびエラーの検出を表すフラグは、次に、ＭＰＵ３１によって読み出される。このようにして、最終的にはＭＰＵ３１が、ＲＡＭ３２に書き込まれたプログラムのビット化けを検出する。
【００５９】
また、この実施形態では、ＤＳＰＲＡＭ３９に書き込まれた、ＤＳＰ３７のインストラクションおよびテーブルを含むプログラムのビット化けは、まず、パリティ検出部３９１によって検出される。パリティ検出部３９１は、アドレスを指定したＤＳＰ３７によってパリティ付きのＤＳＰＲＡＭ３９からプログラムのインストラクションおよびテーブルが読み出されるとき、パリティ検出部３９１は読み出された内容のパリティをチェックする。パリティ検出部３９１は、パリティエラーを検出した場合、エラーが検出されたアドレスを内部のレジスタに記憶し、エラーの検出を表すフラグを立てる。エラーが検出されたアドレスおよびエラーの検出を表すフラグは、次に、ＤＳＰ３７によって読み出される。このようにして、最終的にはＤＳＰ３７が、ＤＳＰＲＡＭ３９に書き込まれたプログラムのビット化けを検出する。
【００６０】
図７は、図２に示すＤＳＰにおけるサーボ確認処理を示すフローチャートである。図７には、図５に示すタイミングＡおよびタイミングＢに対応して、ＤＳＰがサーボ領域を検出してからＭＰＵ３１にオントラック状態を通知するまでの処理が示されている。なお、ＤＳＰ３７が行うサーボ処理には、図７に示すサーボ確認処理以外にも、ＭＰＵ３１からコマンドを受けて、ＳＶＣ２５を制御する処理や、オントラック状態に至らない場合にＳＶＣ２５を制御する処理も含まれているが、これらは従来公知の処理であり、詳細な説明および図示を省略する。
【００６１】
図７に示すサーボ確認処理において、磁気ディスク１１のトラックに配置されたサーボ領域が磁気ヘッド１３を通過すると、ＤＳＰ３７は、ＲＤＣ２４（図１参照）を介してサーボ領域を検出する（Ｓ１１）。次に、ＤＳＰ３７は、ＤＳＰＲＡＭ３９でパリティエラーが発生したか否かを判別する（Ｓ１２）。より詳細には、ＤＳＰ３７は、パリティ検出部３９１においてエラーの検出を表すフラグが立っているか否かを判別する。パリティエラーが発生していない場合（ステップＳ１２でＮｏ）、ＤＳＰ３７はサーボ番号取得の処理（Ｓ１６）を行うが、パリティエラーが発生していた場合（ステップＳ１２でＹｅｓ）、ＤＳＰ３７はエラー位置確認を行う（Ｓ１３）。より詳細には、ＤＳＰ３７はパリティ検出部３９１からエラーが検出されたアドレスを読出し、エラーが検出されたアドレスがＤＳＰＲＡＭ３９に書き込まれたサーボ処理ファームウェア４２のうち、インストラクション４２１、Ａテーブル４２３、およびＢテーブル４２５のいずれに属するものであるかを判別する。
【００６２】
ステップＳ１３の確認の結果、Ａテーブルまたはインストラクションでのエラーが確認された場合、ＤＳＰ３７は、ＭＰＵ３１に対しサーボ処理の失敗を通知し（Ｓ１４）、フラッシュメモリ２１からのリブート（再起動）を実施する（Ｓ１５）。この処理によって、ＤＳＰ３７が再起動する。より詳細には、ＤＳＰ３７は、ＤＳＰＲＯＭ３８に記憶された初期化プログラムを実行する。これによって、ＤＳＰ３７は、フラッシュメモリ２１（図２参照）に記憶されたサーボ処理ファームウェア４２（図３参照）を読み出し、このサーボ処理ファームウェア４２の全体に亘るコピーをＤＳＰＲＡＭ３９とＳＤＲＡＭ２３の双方に書き込み、そして、ＤＳＰＲＡＭ３９に書き込まれたインストラクション４２１を始めから実行する。これによって、サーボ処理はリセットされ、ビット化けに起因した、装置にとって致命的な異常制御を防止することができる。なお、ＤＳＰ３７からサーボ処理の失敗が通知されたＭＰＵ３１は、ホストコンピュータから指示された情報の記録または読出しを完了するため、リブートが終了したＤＳＰ３７に再度サーボ処理を実行させることとなる。
【００６３】
ステップＳ１３の確認の結果、Ｂテーブルでのエラーが確認された場合、ＤＳＰ３７は、バックアップデータからの復元処理（Ｓ１６）を行ってから、サーボ番号取得の処理（Ｓ１７）を行う。ステップＳ１６のバックアップデータからの復元処理では、ＤＳＰ３７は、ＳＤＲＡＭ２３に書き込まれたサーボ処理ファームウェア４２のコピーのうち、Ｂテーブル４２５のコピーを読み出して、ＤＳＰＲＡＭ３９のＢテーブルの領域に書き込む。これによって、Ｂテーブルの領域が初期状態となりエラーが解消する。Ｂテーブルはインストラクションの実行に拘わらず値が変わらない。したがって、ＳＤＲＡＭ２３から読み出された値が書き込まれることによって、エラーが検出された時点における、エラーのない正規の状態に復元される。Ｂテーブルでエラーが検出された場合には、Ｂテーブル自身を復元するだけでサーボ処理を継続することにより、サーボ処理全体として動作速度の低減が抑えられる。ステップＳ１６の復元処理では、ステップＳ１２でエラーを検出する前に実行していた箇所の続きの処理、すなわちステップＳ１７のサーボ番号取得・オントラック状態確認処理からインストラクションの実行が継続される。
【００６４】
ステップＳ１７のサーボ番号取得・オントラック状態確認処理で、ＤＳＰ３７は、検出されたサーボ領域のサーボ番号をＲＤＣ２４から取得し、目的とするサーボ番号との比較を行う。ＲＤＣ２４から取得したサーボ番号と目的のサーボ番号とが一致する場合には、磁気ヘッド１３が目的のトラック上にあるオントラック状態となっている。
【００６５】
次に、ＤＳＰ３７は、ＤＳＰＲＡＭ３９でパリティエラーが発生したか否かを再び判別する（Ｓ２２）。ステップＳ１７のサーボ番号取得・オントラック状態確認処理ではＤＳＰＲＡＭ３９からの読出しが広範囲にわたって行われ、パリティ検出部３９１によってパリティエラーが検出されている確率が高いためである。パリティエラーが検出された場合の処理は、上述したステップＳ１３〜Ｓ１６と同様である。すなわち、パリティエラーが発生していた場合（ステップＳ２２でＹｅｓ）、ＤＳＰ３７はエラー位置確認を行う（Ｓ２３）。Ａテーブルまたはインストラクションでのエラーが確認された場合、ＤＳＰ３７は、ＭＰＵ３１に対しサーボ処理の失敗を通知し（Ｓ２４）、フラッシュメモリ２１からのリブートを実施する（Ｓ２５）。Ｂテーブルでのエラーが確認された場合、ＤＳＰ３７は、バックアップデータからの復元処理（Ｓ２６）を行う。
【００６６】
次のステップＳ２７で、ＤＳＰ３７は、ＭＰＵ３１にサーボ処理の完了を通知し、サーボ確認処理を終了する。図７に示すサーボ確認処理によって、ＤＳＰ３７は、ＭＰＵ３１にオントラック状態を通知する。
【００６７】
ここで、ＤＳＰ３７が実行するステップＳ１２，Ｓ１３およびステップＳ２２，Ｓ２３の処理とパリティ検出部３９１との組み合わせが、上述した基本形態における検出部の一例に相当する。また、上記ステップＳ１６およびステップＳ２６の処理が、上述した基本形態における定数回復部の一例に相当し、上記ステップＳ１５およびステップＳ２５の処理が上述した基本形態における再起動部の一例に相当する。
【００６８】
続いて、ＭＰＵ３１の処理について説明する。
【００６９】
図８は、図２に示すＭＰＵにおけるコマンド実行処理を示すフローチャートである。
【００７０】
コマンド実行処理において、ＭＰＵ３１は、外部のホストコンピュータからコマンドを受信すると（Ｓ３１）コマンド解析を行う（Ｓ３２）。コマンド解析の処理では、コマンドに含まれたセクタの値から、目的のトラック番号やサーボ番号が求められる。
【００７１】
次に、ＭＰＵ３１は、ＲＡＭ３２でパリティエラーが発生したか否かを判別する（Ｓ３４）。より詳細には、ＭＰＵ３１は、パリティ検出部３２１においてエラーの検出を表すフラグが立っているか否かを判別する。パリティエラーが発生していない場合（ステップＳ３４でＮｏ）、ＭＰＵ３１はシークおよびリード・ライト処理（Ｓ３９）を行うが、パリティエラーが発生していた場合（ステップＳ３４でＹｅｓ）、ＭＰＵ３１はエラー位置確認を行う（Ｓ３５）。より詳細には、ＭＰＵ３１はパリティ検出部３２１からエラーが検出されたアドレスを読出し、エラーが検出されたアドレスがＲＡＭ３２に書き込まれたコマンド処理ファームウェア４１のうち、インストラクション４１１、Ａテーブル４１３、およびＢテーブル４１５のいずれかを判別する。
【００７２】
ステップＳ３５の確認の結果、Ａテーブルまたはインストラクションでのエラーが確認された場合、ＭＰＵ３１は、ホストコンピュータに対しエラーを報告し（Ｓ３６）、フラッシュメモリ２１からのリブートを実施する（Ｓ３７）。この処理によって、ＭＰＵ３１が再起動する。より詳細には、ＭＰＵ３１は、ＲＯＭ３５に記憶された初期化インストラクションを実行する。これによって、ＭＰＵ３１は、フラッシュメモリ２１（図２参照）に記憶されたコマンド処理ファームウェア４１（図３参照）を読み出し、このコマンド処理ファームウェア４１の全体に亘るコピーをＲＡＭ３２とＳＤＲＡＭ２３の双方に書き込み、そして、インストラクション４１１の実行を開始する。これによって、コマンド実行処理はリセットされ、ビット化けに起因した、装置にとって致命的な異常制御を防止することができる。なお、ＭＰＵ３１はホストコンピュータから複数のコマンドを受信し、実行待ちのコマンドを保持している場合があるが、これら実行待ちのコマンドについては、コマンド実行処理がリセットされると、実行終了が報告されないため、ホストコンピュータでタイムアウトエラーとして取り扱われることととなる。
【００７３】
ステップＳ３５の確認の結果、Ｂテーブルでのエラーが確認された場合、ＭＰＵ３１は、バックアップデータからの復元処理（Ｓ３８）を行ってから、シークおよびリード・ライト処理（Ｓ３９）を行う。ステップＳ３８のバックアップデータからの復元処理では、ＭＰＵ３１は、ＳＤＲＡＭ２３に書き込まれたコマンド処理ファームウェア４１のコピーのうち、Ｂテーブル４１５のコピーを読み出して、ＲＡＭ３２のＢテーブルの領域に書き込む。これによって、Ｂテーブルの領域が初期状態となりエラーが解消する。Ｂテーブルはインストラクションの実行に拘わらず値が変わらない。したがって、ＳＤＲＡＭ２３から読み出された値が書き込まれることによって、エラーが検出された時点における、エラーのない正規の状態に復元される。また、インストラクションの実行に必須となるＡテーブルと異なり、Ｂテーブルでエラーが発見された状況でもインストラクショがＭＰＵ３１によって実行されている確率は高い。したがって、Ｂテーブルでエラーが検出された場合には、Ｂテーブル自身を復元するだけで、コマンド実行処理を継続することにより、コマンド実行処理全体として動作速度の低減が緩和する。
【００７４】
ステップＳ３９のシークおよびリード・ライト処理で、ＭＰＵ３１は、ＤＳＰ３７に得られたトラック番号およびサーボ番号を供給してサーボ処理を行わせ、ホストＩＦ２２およびＲＤＣ２４に情報の記録または読出しの設定を行う。この結果、ＤＳＰ３７で目的のトラック番号およびサーボ番号が検出され、ホストＩＦ２２およびＲＤＣ２４を介して、磁気ディスク１１上の目的のセクタに対する記録または読出しが行われる（Ｓ４１）。記録または読出しが完了すると（Ｓ４１）、ＭＰＵ３１は、ＲＡＭ３２でパリティエラーが発生したか否かを再び判別する（Ｓ４４）。パリティエラーが検出された場合の処理は、上述したステップＳ３４〜Ｓ３８と同様である。すなわち、パリティエラーが発生していた場合（ステップＳ４４でＹｅｓ）、ＭＰＵ３１はエラー位置確認を行う（Ｓ４５）。Ａテーブルまたはインストラクションでのエラーが確認された場合、ＭＰＵ３１は、ホストコンピュータに対しエラーを報告し（Ｓ４６）、フラッシュメモリ２１からのリブートを実施する（Ｓ４７）。Ｂテーブルでのエラーが確認された場合、ＭＰＵ３１は、バックアップデータからの復元処理（Ｓ４８）を行ってから、シークおよびリード・ライト処理（Ｓ４９）を行う。
【００７５】
ステップＳ４９の処理で、ＭＰＵ３１は、ステップＳ３１で受信したコマンドの正常終了をホストコンピュータに報告する。これによって、ホストコンピュータが情報の記録または読出しが完了したことを認識する。
【００７６】
ここで、ＭＰＵ３１が実行するステップＳ３４，Ｓ３５およびステップＳ４４，Ｓ４５の処理とパリティ検出部３２１との組み合わせが、上述した基本形態における検出部の一例に相当する。また、上記ステップＳ３８およびステップＳ４８の処理が、上述した基本形態における定数回復部の一例に相当し、上記ステップＳ３７およびステップＳ４７の処理が上述した基本形態における再起動部の一例に相当する。
【００７７】
図９は、図６に示す本実施形態の比較例として、仮に、ＥＣＣメモリを採用した場合の検出タイミングを示す図である。
【００７８】
図９に示すように、ＥＣＣメモリは、エラー訂正回路によるアクセス遅延が大きいため、ＥＣＣメモリを採用すると、オントラック状態であることをサーブ番号とともにＭＰＵ３１に通知するタイミング（タイミングＢ）に遅延が生じる。この結果、ＭＰＵ３１がホストコンピュータに記録コマンドの完了ステータスＸを報告するタイミング（タイミングＥ）が遅れる。
【００７９】
しかし、この実施形態によれば、パリティエラーの発生を確認するだけなので、サーボ確認の応答が図６に示すように遅滞なく行われる。
【００８０】
これまで、ＭＰＵ３１がホストコンピュータからのコマンド受信に対応した処理を説明したが、続いて、コマンドを受信していない状態で実行されるＲＡＭパトロール処理について説明する。
【００８１】
ＲＡＭパトロール処理は、ホストコンピュータから受信したコマンドのうち未処理のコマンドがない場合に実行される。ＲＡＭパトロール処理では、ＭＰＵ３１がＲＡＭ３２に書き込まれたインストラクションおよびテーブルをワード単位で順に全て読み出し、パリティエラーを検出する。インストラクションおよびテーブルを所定ワード数ごとに区切ったブロックごとに、チェックサムを確認する。また、コマンドを受信した場合には、ＲＡＭパトロール処理を中断してコマンドに対応する処理を行い、コマンドの処理終了後には、中断した箇所からＲＡＭパトロール処理を続行する。
【００８２】
図１０、図１１および図１２は、ＭＰＵのＲＡＭパトロール処理を示すフローチャートである。図１０には、ＲＡＭ３２のうちインストラクションが書き込まれた領域を対象とした
処理が示され、図１１には、Ａテーブルが書き込まれた領域を対象とした処理が示され、
図１２には、Ｂテーブルが書き込まれた領域を対象とした処理が示されている。
【００８３】
ＲＡＭパトロール処理でＭＰＵ３１は、まず、ウォッチドッグタイマのリセットを行う（Ｓ５０）。より詳細には、ＭＰＵ３１は、ウォッチドッグタイマ３１１に対し初期化要求割り込みを行う所定の時間を設定する。所定の時間として例えば５秒間とする。時間が設定されることによってウォッチドッグタイマ３１１がリセットされ、５秒間の計時を開始する。仮に、計時の開始から５秒が経過した場合には、ウォッチドッグタイマ３１１が初期化要求割り込みを生成しＭＰＵ３１が初期化要求割り込みに応じてフラッシュメモリ２１からのリブートを実施する。ただし、ステップＳ５０の処理は、５秒以下の間隔で実施され、処理の度にウォッチドッグタイマ３１１がリセットされるので、ＭＰＵ３１が暴走しない限りウォッチドッグタイマ３１１の初期化要求割り込みに起因するリブートは生じない。ウォッチドッグタイマにおけるリセット処理のさらなる詳細については後述する。
【００８４】
ＭＰＵ３１は次に、新規の処理か、またはコマンド受信により中断していた処理の続行であるかを判別し（Ｓ５１）、電源投入後またはリブート後における新規の処理である場合には、ポインタの初期化を行う（Ｓ５２）。より詳細には、エラー検出の対象となるアドレスを表すポインタに対し、ＲＡＭ３２におけるインストラクションが書き込まれたインストラクション領域の先頭アドレスを設定する。
【００８５】
次に、ポインタのアドレスからエラー検出の対象領域を判別する（Ｓ５３）。ポインタが表す対象領域がインストラクションの場合にはステップＳ５４の処理を行い、対象領域がＡテーブルの場合にはステップＳ７４（図１１参照）の処理を行い、対象領域がＢテーブルの場合にはステップＳ９４（図１２参照）の処理を行う。
【００８６】
図１０に示すステップＳ５４では、ＭＰＵ３１は、ＲＡＭ３２のポインタが表すアドレスから読出しを行う。次に、ＭＰＵ３１は、パリティ検出部３２１の検出フラグによって、パリティエラーが発生したか否かを判別し（Ｓ５５）、パリティエラーが発生した場合には（Ｓ５５でＹｅｓ）、アドレスの情報をフラッシュメモリ２１のログに履歴としてセーブして（Ｓ５６）、フラッシュメモリ２１からのリブートの処理を行う（Ｓ５７）。ログは、後の故障解析等で利用される。リブートの処理は、図８を参照して説明したコマンド実行処理におけるリブート（Ｓ３７）と同一であり、この処理によって、ＭＰＵ３１が再起動する。一方、パリティエラーが発生しない場合（Ｓ５５でＮｏ）、ホストコンピュータから受信したコマンドがあるときには（Ｓ５８でＹｅｓ）、ＲＡＭパトロール処理を中断してコマンドの処理を実行し（Ｓ５９）、コマンドの処理後ＲＡＭパトロール処理を再開する。コマンドがないときには（Ｓ５８でＮｏ）、インストラクションを構成する複数ブロックのうちの１つのブロックが完了したか否かを判別し（Ｓ６１）、１つのブロックが完了していない場合には（Ｓ６１でＮｏ）、ポインタを加算して（Ｓ６２）リード（Ｓ５４）を繰り返す。１つのブロックが完了した場合には（Ｓ６１でＹｅｓ）、チェックサムを確認する（Ｓ６３）。より詳細には、ＭＰＵ３１が、今まで読み出したブロックの値からチェックサムを算出し、ＳＤＲＡＭ２３に書き込まれたコマンド処理ファームウェア４１のコピーのうち、インストラクション４１１のチェックサム４１２のうち対象となっているブロックに対応する値と一致するか否かを判別する。ここで、チェックサムエラーが検出された場合にも（Ｓ６４でＹｅｓ）、ログへのセーブを行い（Ｓ６５）、リブートの処理を行う（Ｓ６６）。チェックサムエラーが検出されない場合には（Ｓ６４でＮｏ）、ポインタを加算し（Ｓ６７）、インストラクション４１１の領域が終了しない場合には（Ｓ６８でＮｏ）リード（Ｓ５４）を繰り返す。インストラクション４１１の領域が終了した場合には（Ｓ６８でＹｅｓ）、ポインタに、ＲＡＭ３２におけるＡテーブルが書き込まれた領域のアドレスを設定し（Ｓ６９）、Ａテーブルについてエラーチェック（図１１のＳ７１）を行う。
【００８７】
図１１に示すＡテーブルについてのエラーチェックは、図１０に示すインストラクションについてのエラーチェックと同様に行われる。具体的には、図１１に示すステップＳ７４からステップＳ８９までのそれぞれの処理は、図１０に示すステップＳ５４からステップＳ６９までのそれぞれの処理と同様であり、異なるのは、エラー検出の対象となるＲＡＭ３２のアドレスである。また、図１１に示すＡテーブルについてのエラーチェックで、Ａテーブル４１３の領域が終了した場合には（Ｓ８８でＹｅｓ）、ポインタに、ＲＡＭ３２におけるＢテーブルが書き込まれた領域のアドレスを設定し（Ｓ８９）、Ｂテーブルについてエラーチェック（図１２のＳ９４）を行う。
【００８８】
図１２に示すＢテーブルについてのエラーチェックは、大半の処理が図１０に示すインストラクションについてのエラーチェックと同様に行われる。具体的には、図１１に示すステップＳ９４からステップＳ１０９までのそれぞれの処理は、図１０に示すステップＳ５４からステップＳ６９までのそれぞれの処理と同様であり、異なるのはエラー検出の対象となるＲＡＭ３２のアドレスである。ただし、図１２に示すＢテーブルについてのエラーチェックでは、パリティエラーを検出した場合（Ｓ９５でＹｅｓ）、およびチェックサムエラーを検出した場合（Ｓ１０４でＹｅｓ）に、リセットを伴うフラッシュメモリ２１からのリブートの処理ではなく、図８に示すステップＳ３８のように、ＳＤＲＡＭ２３のバックアップデータからＢテーブル領域のみを復元し（Ｓ９７，Ｓ１０６）、ポインタを加算して（Ｓ１１１，Ｓ１１２）エラーチェックを続行する点が異なる。また、Ｂテーブルについてのエラーチェックで、Ｂテーブル４１３の領域が終了した場合には（Ｓ１０８でＹｅｓ）、ポインタに、ＲＡＭ３２におけるインストラクションが書き込まれた領域のアドレスを設定し（Ｓ１０９）、インストラクションについてエラーチェック（図１０のＳ５４）を行う点が異なる。Ｂテーブルについてのエラーチェックが終了後、エラーチェックが、インストラクションのエラーチェック（図１０のＳ５４）から再び繰り返される。また、この繰り返しごとにウォッチドッグタイマのリセット（図１０のＳ５０）も実行される。
【００８９】
ＭＰＵ３１が実行する処理には、タイマ割り込みや外部割込みといったハードウェア割り込みによって実行される割り込み処理（例外処理）と、上述したパトロール処理のように、割り込み処理が実行されていない状態で繰り返し実行される、通常の逐次作業および分岐作業からなる通常処理とがある。本実施形態では、割り込み処理ではなく通常処理としてのパトロール処理でウォッチドッグタイマのリセット（図１０のＳ５０）が繰り返し実行されている。
【００９０】
図１３は、図２に示すウォッチドッグタイマに関する処理の状態を示すタイムチャートである。図１３には、ウォッチドッグタイマ３１１の動作およびウォッチドッグタイマの設定処理の例が時間の経過を追って示されている。
【００９１】
図１３に示す例では、ウォッチドッグタイマ３１１が、通常処理であるパトロール処理内のウォッチドッグタイマリセット処理（図１０のＳ５０）で、ＭＰＵ３１によってリセットされる（時間：０Ｓ）、このときウォッチドッグタイマ３１１には、初期化要求割り込みを生成するまで所定の時間として５秒が設定される。パトロール処理におけるＲＡＭ３２のチェックが一巡すると、ウォッチドッグタイマ３１１が再びリセットされる（時間：２秒）。ＭＰＵ３１が、ＲＡＭ３２に書き込まれたプログラムに含まれているパトロール処理を実行中に所定時間である５秒が経過する前にウォッチドッグタイマ３１１をリセットする。ウォッチドッグタイマ３１１が５秒以内にリセットされる限り、初期化要求割り込みは生成されない。
【００９２】
ここで、ＲＡＭ３２のビット化けが生じ、パリティチェックでエラーが検出できずにＭＰＵ３１が暴走すると、ウォッチドッグタイマのリセット処理（図１０のＳ５０）が実行されない。この結果、ウォッチドッグタイマ３１１が、前回のリセットから５秒経過した時点で（時間：７Ｓ）初期化要求割り込みを生成する。これによりＭＰＵ３１が再起動する。より詳細には、ＭＰＵ３１が、ＲＯＭ３５の初期化プログラムを実行することによって、ＭＣＵ３０の各部を初期化し、フラッシュメモリ２１からプログラムを読み出してＲＡＭ３２に書き込む。本実施形態によれば、ウォッチドッグタイマのリセット処理が、割り込み処理ではなく、通常処理であるＲＡＭパトロール処理に含まれている。
【００９３】
ここで、ＭＰＵ３１が実行するステップＳ５４，Ｓ５５，Ｓ５６、ステップＳ７４，Ｓ７５，Ｓ７６、ステップＳ９４，Ｓ９５，Ｓ９６の処理とパリティ検出部３２１との組み合わせ、および、ステップＳ６３，Ｓ６４，Ｓ６５、ステップＳ８３，Ｓ８４，Ｓ８５，Ｓ１０３，Ｓ１０４，Ｓ１０５の処理のそれぞれが、上述した基本形態における検出部の一例に相当する。また、上記ステップＳ９７，Ｓ１０６の処理のそれぞれが、上述した基本形態における定数回復部の一例に相当し、上記ステップＳ５７，Ｓ６６，Ｓ７７，Ｓ８６の処理のそれぞれが上述した基本形態における再起動部の一例に相当する。
【００９４】
図１４は、比較例として、ウォッチドッグタイマのリセット処理をタイマ割り込み処理として実行した場合の処理を示すタイムチャートである。
【００９５】
ウォッチドッグタイマの定期的なリセット処理は、例えばタイマ割り込み処理といった割り込み処理として実行することも可能である。しかし、タイマ割り込みハードウェアであるタイマによって実行開始するため、ＲＡＭのビット化けに起因するＭＰＵの暴走に拘わらず正常に動作する可能性が高い。例えば、図１３に示すように、ウォッチドッグタイマのリセット処理を１秒に設定されたタイマによるタイマ割り込み処理で実行すると、ＲＡＭのビット化けによりＭＰＵが暴走しても（時間：３Ｓ）、ウォッチドッグタイマのリセット処理が１秒ごとに実行されるため、ウォッチドッグタイマ３１１による初期化要求割り込みが生成されない。
【００９６】
一方、図１３に示す本実施形態の例では、ＭＰＵ３１が、ＲＡＭ３２に書き込まれたプログラムに含まれているパトロール処理を実行中は、ウォッチドッグタイマ３１１をリセットするので、ＲＡＭ３２のビット化けがパリティチェックで検出できない場合にもＭＰＵ３１の暴走による、ＨＤＤ１の異常動作や磁気ディスク１１の破損を防ぐことができる。
【００９７】
次に、装置の具体的な第２実施形態であるＨＤＤについて説明する。以下の第２実施形態の説明にあたっては、これまで説明してきた第１実施形態における各要素と同一の要素には同一の符号を付けて示し、前述の実施形態との相違点について説明する。
【００９８】
具体的な第２実施形態のＨＤＤは、第１実施形態のＨＤＤ２（図１）の制御回路２０（図２）に対し、２つのパリティ検出部３２１が削除されている。また、第２実施形態のＨＤＤは、ＭＰＵおよびＤＳＰで実行される処理が異なる。第２実施形態のＨＤＤにおけるその他の点は第１実施形態と同じであり、これまで説明してきた第１実施形態における図および符号を流用して説明する。
【００９９】
第２実施形態のＤＳＰ３７は、サーボ確認処理において、ＲＡＭ３２のパリティエラーを検出する代わりに、チェックサムを計算することによってビット化けを検出する。
【０１００】
図１５は、第２実施形態におけるＤＳＰのサーボ確認処理を示すフローチャートである。
【０１０１】
図１５に示すサーボ確認処理において、磁気ディスク１１のトラックに配置されたサーボ領域が磁気ヘッド１３を通過すると、ＤＳＰ３７は、ＲＤＣ２４（図１参照）を介してサーボ領域を検出する（Ｓ２１１）。ＤＳＰ３７は、次に、サーボ番号取得の処理（Ｓ２１２）を行い、次のステップＳ２１３で、ＭＰＵ３１にサーボ処理の完了を通知する。これらステップＳ２１２，Ｓ２１３の処理は、図７を参照して説明したステップＳ１７のサーボ番号取得、およびステップＳ２７のサーボ処理完了通知と同じである。サーボ確認処理によって、ＤＳＰ３７は、ＭＰＵ３１にオントラック状態を通知する。
【０１０２】
次に、ＤＳＰ３７は、ＤＳＰＲＡＭ３９にロードされているプログラムのチェックサム計算処理を実行する（Ｓ２１４）。図３に示すように、フラッシュメモリ２１に記憶されているサーボ処理ファームウェア４２は、インストラクション４２１、Ａテーブル４２３、およびＢテーブル４２５を有している。そして、インストラクション４２１、Ａテーブル４２３、およびＢテーブル４２５のそれぞれは、さらに所定ワード数ごとに区切られたブロックで構成されており、ブロックごとにチェックサム４２２，４２４，４２６が記憶されている。ＤＳＰＲＡＭ３９およびＳＤＲＡＭ２３の双方には、フラッシュメモリ２１に記憶されているサーボ処理ファームウェア４２のコピーが書き込まれている。ステップＳ２１４の計算処理では、ＤＳＰＲＡＭ３９に書き込まれたインストラクション４２１、Ａテーブル４２３、およびＢテーブル４２５のそれぞれが有する全てのブロックについて、チェックサムを計算する。次に、ＤＳＰ３７は、計算したチェックサムをＳＤＲＡＭ２３内のバックアップのチェックサムと比較する（Ｓ２１５）。上述したように、ＳＤＲＡＭ２３には、バックアップとして、図３に示すように、フラッシュメモリ２１に記憶されているサーボ処理ファームウェア４２のコピーが、チェックサムも含め書き込まれている。ステップＳ２１５では、計算によって得られたチェックサムと、ＳＤＲＡＭ２３に書き込まれているチェックサムとを比較する。
【０１０３】
ステップＳ２１５でのチェックサムの比較結果、全てのチェックサムが一致している場合、サーボ確認処理を終了する。ステップＳ２１５のチェックサムでの比較結果、チェックサムが不一致の場合、ＤＳＰ３７はエラー位置確認を行う（Ｓ２１６）。より詳細には、ＤＳＰ３７はチェックサムが不一致となった箇所が、ＤＳＰＲＡＭ３９に書き込まれたサーボ処理ファームウェア４２のうち、インストラクション４２１、Ａテーブル４２３、およびＢテーブル４２５のいずれかを判別する。ステップＳ２１６の確認の結果、Ａテーブルまたはインストラクションでのエラーが確認された場合、ＤＳＰ３７は、ＭＰＵ３１に対しサーボ処理の失敗を通知し（Ｓ２１７）、フラッシュメモリ２１からのリブートを実施する（Ｓ２１８）。この処理によって、ＤＳＰ３７が再起動する。先のステップＳ２１３の処理で、ＭＰＵ３１はサーボ処理完了の通知を受けているが、今回のステップＳ２１３の処理で、サーボ処理失敗の通知を受けることによって、ＤＳＰ３７によるサーボ処理が失敗したことを認識する。
【０１０４】
ステップＳ２１６の確認の結果、Ｂテーブルでのエラーが確認された場合、ＤＳＰ３７は、バックアップデータからの復元処理（Ｓ２１９）を行ってから、サーボ確認処理を終了する。これによって、Ｂテーブルの領域が初期状態となりエラーが解消する。
【０１０５】
ここで、ＤＳＰ３７が実行するステップＳ２１１からステップＳ２１３の処理が、上述した基本形態および応用形態における要求処理部の一例に相当し、ステップＳ２１４からステップＳ２１６の処理が、上述した基本形態および応用形態における検出部の一例に相当する。
【０１０６】
図１６は、第２実施形態におけるＭＰＵのコマンド実行処理を示すフローチャートである。
【０１０７】
図１６に示すコマンド実行処理のうち、ステップＳ２３１およびステップＳ２３２は、図８に示すステップＳ３１およびステップＳ３２とそれぞれ同じであり、図１６に示すステップＳ２３９、ステップＳ２４１、ステップＳ２４９は、図８に示すステップＳ３９、ステップＳ４１、およびステップＳ４９とそれぞれ同じである。したがって、図１６に示すコマンド実行処理のうち、図８に示す処理と異なる部分について説明する。
【０１０８】
コマンド実行処理において、ＭＰＵ３１は、記録または読出しが完了すると（Ｓ２４１）、ＲＡＭ３２にロードされているプログラムのチェックサム計算処理を実行する（Ｓ２４２）。
【０１０９】
フラッシュメモリ２１に記憶されているコマンド処理ファームウェア４１は、インストラクション４１１、Ａテーブル４１３、およびＢテーブル４１５を有している。そして、インストラクション４１１、Ａテーブル４１３、およびＢテーブル４１５のそれぞれは、さらに所定ワード数ごとに区切られたブロックで構成されており、ブロックごとにチェックサム４１２，４１４，４１６が記憶されている。ＲＡＭ３２およびＳＤＲＡＭ２３の双方には、フラッシュメモリ２１に記憶されているコマンド処理ファームウェア４１のコピーが書き込まれている。ステップＳ２４２の計算処理では、ＲＡＭ３２に書き込まれたインストラクション４１１、Ａテーブル４１３、およびＢテーブル４１５のそれぞれが有する全てのブロックについて、チェックサムを計算する。次に、ＭＰＵ３１は、計算したチェックサムをＳＤＲＡＭ２３内のバックアップのチェックサムと比較する（Ｓ２４４）。上述したように、ＳＤＲＡＭ２３には、バックアップとして、図３に示すように、フラッシュメモリ２１に記憶されているコマンド処理ファームウェア４１のコピーが、チェックサムも含め書き込まれている。ステップＳ２４４では、計算によって得られたチェックサムと、ＳＤＲＡＭ２３に書き込まれているチェックサムとを比較する。
【０１１０】
ステップＳ２４４でのチェックサムの比較結果、全てのチェックサムが一致している場合、ホストコンピュータにコマンドの正常終了を通知する（Ｓ２４９）。ステップＳ２４４のチェックサムでの比較結果、チェックサムが不一致の場合、ＭＰＵ３１はエラー位置確認を行う（Ｓ２４５）。確認の結果、Ａテーブルまたはインストラクションでのエラーが確認された場合、ＭＰＵ３１は、コマンドのエラー終了を通知し、フラッシュメモリ２１からのリブートを実施する（Ｓ２１８）。この処理によって、ＭＰＵ３１が再起動する。
【０１１１】
ステップＳ２４４の確認の結果、Ｂテーブルでのエラーが確認された場合、ＭＰＵ３１は、バックアップデータからの復元処理（Ｓ２４８）を行ってから、ホストコンピュータにコマンドの正常終了を通知する（Ｓ２４９）。
【０１１２】
図１５を参照して説明したように、ＤＳＰ３７は、ＤＳＰ３７に対する外部の制御部であるＭＰＵ３１から送信されてきたサーボ確認の要求に応じたステップＳ２１１〜Ｓ２１４の処理が完了した後でエラーを検出している。したがって、エラー検出に時間がかかるチェックサムを採用する場合であっても、サーボ確認の応答で生じる遅延を抑えることができる。
【０１１３】
なお、具体的な各実施形態に対する上記説明では、「課題を解決するための手段」で説明した基本形態における装置の一例としてＨＤＤ１が示されているが、この装置は、ＨＤＤ以外にも光ディスクやテープドライブ等記録装置であってもよく、あるいは記録装置以外の電子制御装置であってもよい。
【図面の簡単な説明】
【０１１４】
【図１】装置の具体的な第１実施形態であるハードディスク装置（ＨＤＤ）の内部構造を示す図である。
【図２】図１に示すハードディスク装置の制御回路の構成を示すブロック図である。
【図３】図２に示すフラッシュメモリに記憶されたファームウェアの構成を示す図である。
【図４】フラッシュメモリに記憶されたコマンド処理ファームウェアのコピーがＲＡＭおよびＳＤＲＡＭに書き込まれる様子を説明する図である。
【図５】磁気ヘッドがトラックに沿って移動している状態で、サーボ領域が検出されるタイミングを示す図である。
【図６】記録コマンドにおいて、サーボ領域が検出されるタイミングを示す図である。
【図７】図２に示すＤＳＰにおけるサーボ確認処理を示すフローチャートである。
【図８】図２に示すＭＰＵにおけるコマンド実行処理を示すフローチャートである。
【図９】図６に示す本実施形態の比較例として、仮に、ＥＣＣメモリを採用した場合の検出タイミングを示す図である。
【図１０】ＭＰＵのＲＡＭパトロール処理を示すフローチャートである。
【図１１】図１０に続く処理を示すフローチャートである。
【図１２】図１１に続く処理を示すフローチャートである。
【図１３】図２に示すウォッチドッグタイマに関する処理の状態を示すタイムチャートである。
【図１４】本実施形態の比較例として、ウォッチドッグタイマのリセット処理をタイマ割り込み処理として実行した場合の処理を示すタイムチャートである。
【図１５】第２実施形態におけるＤＳＰのサーボ確認処理を示すフローチャートである。
【図１６】第２実施形態におけるＭＰＵのコマンド実行処理を示すフローチャートである。
【符号の説明】
【０１１５】
１    ハードディスク装置（ＨＤＤ）
１１    磁気ディスク
１２      スピンドルモータ
１３    磁気ヘッド
１６    ボイスコイルモータ
２０    制御回路
２１    フラッシュメモリ
４１    コマンド処理ファームウェア
４２    サーボ処理ファームウェア
３１１    ウォッチドッグタイマ
３２    ＲＡＭ
３２１    パリティ検出部
３９    ＤＳＰＲＡＭ
３９１    パリティ検出部
４１１，４２１    インストラクション（プログラム）
４１２，４１４，４１６，４２２，４２４，４２６    チェックサム
４１３，４２３    Ａテーブル（変数データ（の初期値））
４１５，４２５    Ｂテーブル（定数データ）
【図１】
2009187049.tif 000003
【図２】
2009187049.tif 000004
【図３】
2009187049.tif 000005
【図４】
2009187049.tif 000006
【図５】
2009187049.tif 000007
【図６】
2009187049.tif 000008
【図７】
2009187049.tif 000009
【図８】
2009187049.tif 000010
【図９】
2009187049.tif 000011
【図１０】
2009187049.tif 000012
【図１１】
2009187049.tif 000013
【図１２】
2009187049.tif 000014
【図１３】
2009187049.tif 000015
【図１４】
2009187049.tif 000016
【図１５】
2009187049.tif 000017
【図１６】
2009187049.tif 000018