【解決手段】磁気ディスク装置は、磁気ディスクと、互いに独立に移動せしめられる第1の磁気ヘッドおよび第2の磁気ヘッドと、第1のコントローラチップと、第2のコントローラチップと、第3のメモリと、を備える。第1のコントローラチップは、第1のプロセッサと、第1のメモリと、を備え、第1の磁気ヘッドを制御する。第2のコントローラチップは、第2のプロセッサと、第2のメモリと、を備え、第2の磁気ヘッドを制御する。第3のメモリには、管理情報が格納される。第1のコントローラチップは、第3のメモリに接続されている。第2のコントローラチップは、第1のコントローラチップを介して第3のメモリに接続されている。第2のコントローラチップは、第2のメモリに管理情報をキャッシュする。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかる磁気ディスク装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0008】
(実施形態)
図1は、実施形態にかかる磁気ディスク装置1の構成の一例を示す図である。磁気ディスク装置1は、ホスト2に接続可能である。磁気ディスク装置1とホスト2との間の通信路の規格は、特定の規格に限定されない。一例では、SAS(Serial Attached SCSI)が採用され得る。
【0009】
ホスト2は、例えばプロセッサ、パーソナルコンピュータ、またはサーバなどが該当する。磁気ディスク装置1は、ホスト2からアクセスコマンド(リードコマンドおよびライトコマンド)を受け付けることができる。
【0010】
磁気ディスク装置1は、スピンドルモータ(不図示)の回転軸201を中心に回転する磁気ディスク200を備える。なお、磁気ディスク装置1は、2以上の磁気ディスク200を備え得る。
【0011】
図2は、実施形態にかかる磁気ディスク200の構成の一例を示す図である。磁気ディスク200は、表面に磁性体を有しており、出荷前にサーボライタなどによりサーボ情報が書き込まれている。サーボ情報は、例えばバーストパターンである。
図2には、サーボ情報が書き込まれたサーボゾーンの配置の一例として放射状に配置されたサーボゾーン202が示されている。磁気ディスク200の径方向には同心円の形状の複数のトラック203が所定のピッチで設けられている。各トラック203の周上には多数のセクタが連続的に形成されている。各セクタは、磁性領域を有し、データの書き換えが自在である。それぞれ多数のセクタを有する複数のトラック203によって、データの記録が可能な記録面が構成される。
【0012】
図1に説明を戻す。
磁気ディスク装置1は、それぞれ独立に磁気ディスク200にデータの書き込みおよび読み出しを実行することができる複数の読み書き系300を備える。本実施形態では、磁気ディスク装置1は、一例として、複数の読み書き系300として、読み書き系300−1と、読み書き系300−2とを備える。なお、磁気ディスク装置1は、3以上の読み書き系300を備え得る。
【0013】
読み書き系300−1は、アーム301−1と、磁気ヘッド302−1と、軸303−1と、アクチュエータ304−1とを備える。
【0014】
磁気ヘッド302−1は、アーム301−1の先端に取り付けられている。磁気ヘッド302−1は、磁気ディスク200に対してデータに対応した信号の書き込みやデータに対応した信号の読み出しを実行する。
【0015】
アクチュエータ304−1は、例えばVCM(Voice Coil Motor)である。アクチュエータ304−1は、アーム301−1を軸303−1を中心に回転させることによって、磁気ヘッド302−1を磁気ディスク200の表面に対して相対移動させることができる。なお、
図1に例示されるT1は、磁気ヘッド302−1の軌跡の一例である。
【0016】
読み書き系300−2は、アーム301−2と、磁気ヘッド302−2と、軸303−2と、アクチュエータ304−2とを備える。
【0017】
磁気ヘッド302−2は、アーム301−2の先端に取り付けられている。磁気ヘッド302−2は、磁気ディスク200に対してデータに対応した信号の書き込みやデータに対応した信号の読み出しを実行する。
【0018】
アクチュエータ304−2は、例えばVCMである。アクチュエータ304−2は、アーム301−2を軸303−2を中心に回転させることによって、磁気ヘッド302−2を磁気ディスク200の表面に対して相対移動させることができる。なお、
図1に例示されるT2は、磁気ヘッド302−2の軌跡の一例である。
【0019】
読み書き系300−1を用いたアクセスと、読み書き系300−2を用いたアクセスとが並列に実行されることで、1つの読み書き系300のみによって磁気ディスク200へのアクセスが実行される場合に比べて、データのスループットが向上する。
【0020】
なお、軸303−1と軸303−2とは、共通化されてもよい。つまり、アーム301−1およびアーム301−2が、同一の軸の軸方向に異なる位置に取り付けられ、アーム301−1およびアーム301−2は、当該軸を中心に回転せしめられるように構成されてもよい。アーム301−1およびアーム301−2が、同一の軸の軸方向に異なる位置に取り付けられるので、磁気ヘッド302−1が書き込みおよび読み出しを行う記録面と、磁気ヘッド302−2が書き込みおよび読み出しを行う記録面とが異なり得る。
【0021】
例えば、磁気ヘッド302−1は、磁気ディスク200のおもて面および裏面のうちの一にアクセスを行い、磁気ヘッド302−2は、磁気ディスク200のおもて面および裏面のうちの他にアクセスを行うように構成される。
【0022】
また、各読み書き系300が備える磁気ヘッドの数は1つに限定されない。例えば、次のような構成が採用され得る。即ち、磁気ディスク装置1は、N(Nは2以上の整数)個の磁気ディスク200を備える。読み書き系300−1は、N個の磁気ヘッド302−1を備え、読み書き系300−2は、N個の磁気ヘッド302−2を備える。アーム301−1およびアーム301−2が、同一の軸の軸方向に異なる位置に取り付けられ、当該軸を中心に回転せしめられるように構成されている。読み書き系300−1が備えるN個の磁気ヘッド302−1は、N個の磁気ディスク200が備える合計2*N個の記録面のうちの、N個の記録面にアクセスする。読み書き系300−2が備えるN個の磁気ヘッド302−2は、2*N個の記録面のうちの、読み書き系300−1が備えるN個の磁気ヘッド302−1とは異なるN個の記録面にアクセスする。
【0023】
なお、磁気ヘッド302−1は、第1の磁気ヘッドの一例である。磁気ヘッド302−2は、第2の磁気ヘッドの一例である。
【0024】
磁気ディスク装置1は、さらに、バッファメモリ400を備える。バッファメモリ400は、磁気ディスク200よりも高速にアクセスされ得るメモリである。バッファメモリ400は、揮発性であってもよいし、不揮発性であってもよい。一例では、バッファメモリ400としては、DRAM(Dynamic Random Access Memory)が採用される。なお、バッファメモリ400の種類はDRAMに限定されない。バッファメモリ400には、種々の情報が一時的に格納される。
【0025】
図3は、実施形態にかかるバッファメモリ400に格納される情報の例を示す模式的な図である。バッファメモリ400には、例えば、ユーザデータ501、プログラムコード群502、および管理情報503が格納される。
【0026】
ユーザデータ501は、ホスト2から磁気ディスク装置1に送られてきたデータである。ユーザデータ501は、ホスト2から転送されてきた後、磁気ディスク200に書き込まれる。また、磁気ディスク200に格納されたユーザデータ501は、リードコマンドに応じて読み出され、その後、ホスト2に転送される。バッファメモリ400には、ホスト2と磁気ディスク200との間で転送されるユーザデータ501がバッファリングされる。
【0027】
プログラムコード群502は、コンピュータプログラムを構成するコードの群である。プログラムコード群502に含まれる各コードは、プロセッサ(SoC100−1に内蔵されるCPU(Central Processing Unit)106−1またはSoC100−2に内蔵されるCPU106−2)によって実行される。
【0028】
管理情報503は、磁気ディスク装置1を正常な動作が可能な状態に維持するために必要となる各種の情報を含む。管理情報503は、動作中に、プロセッサによって参照されたり更新されたりする。
【0029】
管理情報503は、例えば、ATI情報504、欠陥位置情報505、およびフォーマット情報506を含む。なお、管理情報503の例はこれらに限定されない。なお、本明細書では、CPU106−1やCPU106−2が実行するプログラムコードや、ユーザデータ501は、管理情報503に該当しない。
【0030】
ATI情報504は、書き込みによる隣接トラック干渉(Adjacent Track Interference:ATI)の影響が記録された情報である。
【0031】
磁気ディスクに書き込みを行った場合、磁気ヘッドを構成するライト素子が発する磁界が、書き込み位置の近傍のトラックに影響を与え、当該トラックの信号の品質が劣化する場合がある。この現象は、隣接トラック干渉として知られている。すでにデータが書き込まれた位置から近い位置に書き込みを行った場合、すでに書き込まれたデータが、隣接トラック干渉によって、読み出せなくなる虞がある。隣接トラック干渉の影響のレベルは、書き込み位置に近いほど大きくなる。
【0032】
そこで、例えば、隣接トラック干渉の影響の度合いを示す評価値が、トラック毎にATI情報504に記録される。書き込みが行われた位置の近傍のすでにデータが書き込まれたトラックの評価値が増加せしめられる。つまり、書き込みが行われる毎にATI情報504が更新される。次に書き込みが実施される際には、トラック毎の評価値が所定以下となるように、書き込みが制御される。
【0033】
欠陥位置情報505は、磁気ディスク200に含まれる欠陥の位置が記録された情報である。
【0034】
磁気ディスク200は、微視的な磁気特性のばらつき、傷、サーボ不良など、種々の要因により、データの読み出しが困難または不可能な位置を含む場合がある。このような位置は、欠陥として欠陥位置情報505に記録され、不使用とされる。欠陥は、出荷前の検査によって検出された先天的な欠陥のほかに、動作中に発生する欠陥を含む。動作中に欠陥が発生した場合には、その欠陥が発生した位置が欠陥位置情報505に書き加えられる。
【0035】
なお、欠陥位置情報505には、典型的には、セクタ単位の位置情報が記録される。欠陥位置情報505に記録される位置情報の単位はこれに限定されない。
【0036】
フォーマット情報506は、トラックまたはセクタの配置が記録された情報である。データの書き込みまたは読み出しの際には、適宜、フォーマット情報506が参照される。
【0037】
図1に説明を戻す。
磁気ディスク装置1は、さらに、複数のSoC(System-On-a-Chip)100を備える。複数のSoC100は、協働して、磁気ディスク装置1の制御系として機能する。
【0038】
SoC100は、読み書き系300毎に設けられる。
図1の例では、磁気ディスク装置1は、読み書き系300−1に接続されたSoC100−1と、読み書き系300−2に接続されたSoC100−2とを備える。
【0039】
なお、SoC100−1およびSoC100−2は、樹脂などによって一体に封止されて、1つのパッケージとして構成されてもよい。SoC100−1およびSoC100−2は、厚さ方向に積層されてもよい。
【0040】
実施形態では、SoC100−1と、SoC100−2とは、同一のハードウェア構成を備える。
【0041】
例えば、SoC100−1と、SoC100−2とは、同じ型式番号のSoC100として製造される。製造された各SoC100は、外部ピンによる設定またはソフトウェア的な設定などによって、SoC100−1として機能するか、SoC100−2として機能するかが決定される。
【0042】
SoC100−1およびSoC100−2でハードウェア構成を共通化することで、SoC100−1およびSoC100−2のそれぞれを個別に設計する場合に比べて、設計や製造に要する時間を短縮することが可能である。
【0043】
また、製造者は、読み書き系300の数を1または3以上に変更したい場合、読み書き系300の数に応じてSoC100の数を変更するだけで、読み書き系300の数の変更後の磁気ディスク装置1の制御系を構築することが可能となる。つまり、読み書き系300の数の変更に伴う制御系の変更が容易になる。
【0044】
なお、
図1は、あくまでも模式的な図である。
図1では、図の煩雑化を避けるために、SoC100−1に含まれる各構成要素の配置と、SoC100−2に含まれる各構成要素の配置とが異なっている。SoC100−1と、SoC100−2とは、同一のハードウェア構成を備えるので、実際には、SoC100−1に含まれる各構成要素の配置と、SoC100−2に含まれる各構成要素の配置と、は互いに等しい。
【0045】
なお、SoC100−1およびSoC100−2のそれぞれは、読み書き制御回路103−1および読み書き制御回路103−2が同じ方向を向くように配置される。
【0046】
各SoC100は、バッファ制御回路101、ホスト制御回路102、読み書き制御回路103、データ通信回路104、およびMCU(Micro Control Unit)105を備える。
【0047】
バッファ制御回路101は、バッファメモリ400へのアクセスを制御する回路である。ホスト制御回路102は、ホスト2に対する通信を制御する回路である。データ通信回路104は、他のSoC100に対する通信を制御する回路である。
【0048】
読み書き制御回路103は、読み書き系300を介した磁気ディスク200への書き込みおよび読み出しを制御するための回路である。例えば、読み書き制御回路103は、デジタルデータを、磁気ヘッド302に供給される信号に変換したり、磁気ヘッド302から出力された信号をデジタルデータに変換したりする。読み書き制御回路103は、リードライトチャネルとも称される。
【0049】
なお、読み書き制御回路103と磁気ヘッド302との間には、アンプ回路が設けられてもよい。また、読み書き制御回路103は、アクチュエータ304を位置決め制御する回路を含んでいてもよい。
【0050】
MCU105は、プログラムコードを実行可能なプロセッサであるCPU106と、CPU106がキャッシュメモリとして使用するSRAM(Static Random Access Memory)107と、を備える。
【0051】
以降、SoC100−1に属する構成要素の符号には「−1」を付し、SoC100−2に属する構成要素の符号には「−2」を付す。
【0052】
なお、SoC100−1は、第1のコントローラチップの一例である。SoC100−2は、第2のコントローラチップの一例である。SoC100−1が備えるCPU106−1は、第1のプロセッサの一例である。SoC100−1が備えるSRAM107−1は、第1のメモリの一例である。SoC100−2が備えるCPU106−2は、第1のプロセッサと同一のハードウェア構成を備える第2のプロセッサの一例である。SoC100−2が備えるSRAM107−2は、第1のメモリと同一のハードウェア構成を備える第2のメモリの一例である。バッファメモリ400は、第3のメモリの一例である。
【0053】
実施形態では、SoC100−1は、ホスト2およびバッファメモリ400にも接続されている。SoC100−2は、SoC100−1を介してバッファメモリ400に接続されている。
【0054】
SoC100−1では、バッファ制御回路101−1およびホスト制御回路102−1は、CPU106−1による制御の下で、協働して、ホスト2とバッファメモリ400との間のユーザデータ501の転送を実行する。また、バッファ制御回路101−1および読み書き制御回路103−1は、CPU106−1による制御の下で、協働して、バッファメモリ400と磁気ディスク200との間のユーザデータ501の転送を実行する。
【0055】
また、バッファ制御回路101−1およびデータ通信回路104−1は、協働して、SoC100−2とバッファメモリ400との間のデータ転送を実行する。
【0056】
CPU106−1は、所定のプログラムコード群を実行することによって、例えば下記に述べる処理を実行する。即ち、CPU106−1は、ホスト2から受信したコマンドを解釈、ホスト2とバッファメモリ400との間のユーザデータ501の転送、磁気ディスク200に対するアクセスを読み書き系300−1および読み書き系300−2にアサインする処理、読み書き系300−1にアサインされた磁気ディスク200に対するアクセスの制御、などを実行する。
【0057】
CPU106−1は、上記の各種の処理を実行する際に、バッファメモリ400に格納された各管理情報503に適宜アクセスすることができる。つまり、CPU106−1は、バッファメモリ400に格納された各管理情報503を参照したり更新したりすることができる。バッファメモリ400に格納された各管理情報503へのアクセスは、バッファ制御回路101−1を介して実行される。
【0058】
SoC100−2では、データ通信回路104−2および読み書き制御回路103−2は、CPU106−2による制御の下で、協働して、読み書き系300−2およびSoC100−1を介した、バッファメモリ400と磁気ディスク200との間のユーザデータ501の転送を実行する。
【0059】
バッファ制御回路101−2およびホスト制御回路102−2は使用されない。SoC100−2は、バッファメモリ400およびホスト2のいずれにも直接に接続されていないからである。CPU106−2は、バッファ制御回路101−2またはホスト制御回路102−2への電力の供給またはクロックの供給を遮断してもよい。
【0060】
CPU106−2は、所定のプログラムコード群に基づいて、読み書き系300−2にアサインされた磁気ディスク200に対するアクセスの制御を実行する。CPU106−2は、当該制御を実行する際に、バッファメモリ400に格納された各管理情報503に適宜アクセスすることができる。つまり、CPU106−2は、バッファメモリ400に格納された各管理情報503を参照したり更新したりすることができる。
【0061】
ここで、SoC100−1は、バッファメモリ400に直接に接続されていることに対し、SoC100−2は、SoC100−1を介してバッファメモリ400に接続されている。よって、CPU106−2がバッファメモリ400内の管理情報503にアクセスする場合、CPU106−1がバッファメモリ400内の管理情報503にアクセスする場合に比べて、アクセスに要する時間が長くなる。その結果、SoC100−2による磁気ディスク200へのアクセスが遅くなり、磁気ディスク装置1の性能の低下が起こり得る。
【0062】
実施形態では、CPU106−2がバッファメモリ400内の管理情報503にアクセスする速度を向上させるために、SoC100−2は、SRAM107−2を、管理情報503へのアクセスのためのキャッシュメモリとして使用する。
【0063】
図4は、実施形態にかかる各SoC100のSRAM107に格納される情報の例を示す模式的な図である。
【0064】
SRAM107−1には、CPU106−1が実行するプログラムコード群601−1がキャッシュデータとして格納される。SoC100−1は、CPU106−1が実行するプログラムコード群のうちの、頻繁に使用されるコード、高速に実行されるべき処理にかかるコード、などをSRAM107−1にプログラムコード群601−1としてキャッシュし、それ以外のコードを、バッファメモリ400にプログラムコード群502として格納しておく。CPU106−1は、必要に応じて、バッファメモリ400からプログラムコードを取得することもできる。
【0065】
SRAM107−2には、CPU106−2が実行するプログラムコード群601−2がキャッシュデータとして格納される。SoC100−2は、CPU106−2が実行するプログラムコード群のうちの、頻繁に使用されるコード、高速に実行されるべき処理にかかるコード、などをSRAM107−2にプログラムコード群601−2としてキャッシュし、それ以外のコードを、バッファメモリ400にプログラムコード群502として格納しておく。CPU106−2は、必要に応じて、バッファメモリ400からプログラムコードを取得することもできる。
【0066】
前述したように、CPU106−1は、ホスト2から受信したコマンドを解釈、ホスト2とバッファメモリ400との間のユーザデータ501の転送、磁気ディスク200に対するアクセスを読み書き系300−1および読み書き系300−2にアサインする処理、読み書き系300−1にアサインされた磁気ディスク200に対するアクセスの制御、などを実行する。
【0067】
これに対し、CPU106−2は、読み書き系300−2にアサインされた磁気ディスク200に対するアクセスの制御を実行する。CPU106−2は、バッファメモリ400やホスト2にかかる処理、つまり、ホスト2から受信したコマンドを解釈、ホスト2とバッファメモリ400との間のユーザデータ501の転送、磁気ディスク200に対するアクセスを読み書き系300−1および読み書き系300−2にアサインする処理などを実行しない。
【0068】
つまり、CPU106−2が実行する処理の量は、CPU106−1が実行する処理の量に比べて少ない。SRAM107−2にキャッシュされるプログラムコード群601−2の量は、CPU106−2が実行しない処理の分だけ、SRAM107−1にキャッシュされるプログラムコード群601−1の量よりも少ない。
【0069】
SoC100−2は、SRAM107−2の記憶領域のうちの、プログラムコード群601−2のキャッシュに使用された領域を除く、残りの領域に、管理情報503をキャッシュする。本図に示されるATI情報602は、ATI情報504のキャッシュデータである。欠陥位置情報603は、欠陥位置情報505のキャッシュデータである。フォーマット情報604は、フォーマット情報506のキャッシュデータである。
【0070】
なお、CPU106−1が実行する処理と、CPU106−2が実行する処理と、の切り分けは、任意に変更され得る。少なくとも、CPU106−1は、ホスト2から受信したコマンドの解釈を実行し、CPU106−2は、ホスト2から受信したコマンドの解釈を実行しない。CPU106−2が実行する処理の量は、少なくともホスト2から受信したコマンドの解釈をしない分だけ、CPU106−1が実行する処理の量より少ないので、SRAM107−2にキャッシュされるプログラムコード群601−2の量は、SRAM107−1にキャッシュされるプログラムコード群601−1の量よりも少ない。
【0071】
このように、CPU106−2は、SRAM107−2を、バッファメモリ400に格納された管理情報503にアクセスするためのキャッシュメモリとして使用する。これによって、管理情報503を取得する速度が向上し、ひいては磁気ディスク装置1の性能が向上する。
【0072】
具体的には、CPU106−2は、管理情報503のうちのある情報を使用(参照または更新)する場合、まず、SRAM107から当該情報を探す。キャッシュヒットした場合、即ち当該情報がSRAM107にキャッシュされている場合、CPU106−2は、SRAM107内のキャッシュされている情報を使用する。キャッシュミスした場合、即ち当該情報がSRAM107にキャッシュされていない場合、CPU106−2は、バッファメモリ400から当該情報を取得して使用する。
【0073】
キャッシュヒットした場合、CPU106−2は、バッファメモリ400にアクセスすることなく管理情報503を取得することが可能であるので、CPU106−2が管理情報503を取得する速度が向上する。
【0074】
なお、SRAM107に適用されるキャッシュの方式は、特定の方式に限定されない。例えば、フルアソシアティブ方式、ダイレクトマップ方式、またはnウェイセットアソシアティブ方式が適用され得る。SRAM107の記憶領域が複数に分割され、分割によって生成された部分毎に異なる方式が適用されてもよい。
【0075】
なお、SRAM107をキャッシュメモリとして使用する制御は、例えば、キャッシュヒット/ミスの判定、追い出し、リフィル、ダーティ/クリーンの管理、などを含む。これらの制御のうちの一部または全部は、CPU106によって実行されてもよいし、専用のハードウェア回路によって実行されてもよい。
【0076】
図5は、実施形態にかかるSRAM107をキャッシュメモリとして使用する制御をハードウェア回路によって実行する場合のSoC100の構成例を説明するための模式的な図である。バッファ制御回路101、ホスト制御回路102、データ通信回路104、および読み書き制御回路103などの図示は省略されている。
【0077】
本図に示されるように、SoC100は、CPU106およびSRAM107のほかに、キャッシュ制御回路108を備える。キャッシュ制御回路108は、例えば、SRAM107をキャッシュメモリとして使用する制御を実行する。
【0078】
また、SRAM107の記憶領域とバッファメモリ400の記憶領域とは、アドレス空間内のそれぞれ異なる領域にマッピングされてもよい。
【0079】
図6は、実施形態にかかるアドレス空間への各記憶領域のマッピングの一例を説明する模式的な図である。本図に示されるように、アドレス空間700には、領域701、702、および703がアロケートされている。そして、領域701にSRAM107−1の記憶領域がマッピングされ、領域702にSRAM107−2の記憶領域がマッピングされ、領域703にバッファメモリ400の記憶領域がマッピングされている。
【0080】
例えば、CPU106−2は、SRAM107−2にキャッシュデータとして格納されている管理情報503にアクセスする場合には、領域702に含まれるアドレスを使用してアクセス先を指定する。また、CPU106−2は、バッファメモリ400に格納されている管理情報503にSRAM107−2を介さずにアクセスする場合には、領域703に含まれるアドレスを使用してアクセス先を指定する。つまり、CPU106−2は、SRAM107−2にアクセスするか、バッファメモリ400にアクセスするかを、アドレスによって切り替えることが可能である。
【0081】
なお、SRAM107とバッファメモリ400とは、必ずしもアドレス空間700内の異なる領域にマッピングされていなくてもよい。
【0082】
以上述べたように、実施形態によれば、SoC100−1は、バッファメモリ400に接続され、SoC100−2は、SoC100−1を介してバッファメモリ400に接続されている。そして、SoC100−2は、SRAM107−2に管理情報503をキャッシュする。
【0083】
よって、CPU106−2がバッファメモリ400に格納された管理情報503を取得する速度が向上し、ひいては磁気ディスク装置1の性能が向上する。
【0084】
なお、以上では、SoC100−1は、SRAM107−1に管理情報503をキャッシュしないこととして説明した。SRAM107−1の記憶領域に空きがある場合には、この限りではない。例えば、SoC100−1もSRAM107−1に管理情報503をキャッシュしてもよい。
【0085】
また、SoC100−1は、CPU106−1が実行するプログラムコード群601−1をSRAM107−1にキャッシュし、SoC100−2は、CPU106−2が実行するプログラムコード群601−2をSRAM107−2にキャッシュする。プログラムコード群601−2の量は、プログラムコード群601−1の量よりも少ない。SoC100−2は、SRAM107−2の記憶領域のうちの残りの領域に、管理情報503をキャッシュする。
【0086】
よって、CPU106−2がバッファメモリ400に格納された管理情報503を取得する速度が向上し、ひいては磁気ディスク装置1の性能が向上する。
【0087】
また、SoC100−1は、ホスト2に接続され、SoC100−2は、SoC100−1を介してホスト2に接続されている。例えば、プログラムコード群601−1は、ホスト2からのコマンドを解釈するためのプログラムコードを含み、プログラムコード群601−2は、ホスト2からのコマンドを解釈するためのプログラムコードを含まない。
【0088】
よって、プログラムコード群601−2の量は、プログラムコード群601−1の量よりも少なく、SRAM107−2の空いた領域に管理情報503をキャッシュすることが可能となる。
【0089】
また、SRAM107−2の記憶領域およびバッファメモリ400の記憶領域は、アドレス空間700内のそれぞれ異なる領域702、703にマッピングされ、CPU106−2は、SRAM107−2にアクセスするかバッファメモリ400に直接にアクセスするかを、アドレスによって切り替えてもよい。
【0090】
なお、一例では、管理情報503は、書き込みによる隣接トラック干渉の影響が記録されたATI情報504を含む。
【0091】
別の例では、管理情報503は、磁気ディスク200に含まれる欠陥の位置が記録された欠陥位置情報505を含む。
【0092】
さらに別の例では、管理情報503は、トラックまたはセクタの配置が記録されたフォーマット情報506を含む。
【0093】
なお、以上では、SoC100−1の型式番号と、SoC100−2の型式番号とは等しいとして説明した。SoC100−1の型式番号と、SoC100−2の型式番号とは、必ずしも同じでなくてもよい。
【0094】
例えば、読み書き制御回路103、データ通信回路104、CPU106、およびSRAM107のハードウェア構成は、SoC100−1とSoC100−2とで等しいが、SoC100−1は、バッファ制御回路101およびホスト制御回路102を備え、SoC100−2は、バッファ制御回路101およびホスト制御回路102を備えなくてもよい。その場合には、SoC100−1の型式番号と、SoC100−2の型式番号とが異なってもよい。
【0095】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。