(57)【要約】【課題】２つ以上のキャッシュメモリにより２つ以上のプログラムを高速に切り換えてＣＰＵのオーバーヘッドを可及的に解消して処理速度を向上させる磁気ディスク装置のキャッシュメモリアクセス方法を提供する【解決手段】ＣＰＵ１０とＳＤＲＡＭ１１との間にあるキャッシュ・コントローラ１２に、ＳＤＲＡＭ１１の複数のプログラムにそれぞれ対応する複数のキャッシュメモリ（ＦｉＦＯ＿１、ＦｉＦＯ＿２）を設ける。ＣＰＵ１０は、アドレスマッピング１４上で、複数のプログラムに対応する複数のアクセスウインドウを設ける。ＣＰＵ１０は、複数のプログラムによる複数のタスクを切り替えながら実行するに際して、これから実行するタスクのプログラムに対応するアクセスウインドウにより、このアクセスウインドウのプログラムに対応するキャッシュメモリから当該プログラムを取得する。【選択図】      図１
2005044145.tif 000002
【特許請求の範囲】
【請求項１】
磁気ディスク装置の外付けＳＤＲＡＭ（Synchronous Dinamic Random Access Memory）にＣＰＵ（central processing unit）が実行すべき少なくとも２つ以上のプログラムが格納されているとき該プログラムへの上記ＣＰＵからのアクセス方法であって、
上記ＣＰＵと上記ＳＤＲＡＭ間に配置されるデスク制御装置内に上記２つ以上のプログラムの数に対応する数のキャッシュを並列に設け、
ＣＰＵのアクセス空間領域に上記キャッシュの数に対応する数の独立したメモリウインドウを設け、
ＣＰＵが上記いずれかのプログラムを実行するに際し実行するプログラムに対応する上記メモリウインドウに基づき上記キャッシュを通して上記ＳＤＲＡＭにアクセスする、
ことを特徴とする磁気ディスク装置のキャッシュアクセス方法。
【請求項２】
上記２つ以上のプログラムは、少なくともコントローラプログラムおよびサーボプログラムを含んでいることを特徴とする請求項１記載の磁気ディスク装置のキャッシュアクセス方法。
【請求項３】
上記２つ以上のプログラムは、少なくともコントローラプログラム、サーボプログラム、およびリオーダリングプログラムを含んでいることを特徴とする請求項１記載の磁気ディスク装置のキャッシュアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つ以上のキャッシュメモリにより２つ以上のプログラムを高速に切り換えてＣＰＵ（central processing unit）のオーバーヘッドを可及的に解消し処理速度を向上させる磁気ディスク装置のキャッシュメモリアクセス方法に関する。
【背景技術】
【０００２】
従来、ＣＰＵが、例えば磁気ディスク装置の制御を行う場合の方法としては、磁気ディスク装置とデータの授受を行うインタフェースコントローラの制御と、磁気ディスク装置を駆動するモータ及び読み取り書き込みを行うサーボの制御との独立した２つの制御を行わなければならない。
【０００３】
この場合、ＣＰＵがそれらのタスクを実行するためのコントローラプログラムやサーボプログラムは、予めハードディスクなどからメインメモリのＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）に読み込まれており、ＣＰＵはそれらのプログラムを、これから実行する制御タスクの順序に応じてＳＤＲＡＭから順次読み込みながら、その制御タスクを実行する。
【０００４】
その場合、ＣＰＵからＳＤＲＡＭへのアクセス速度を向上させるために、ＣＰＵとＳＤＲＡＭの間に１個のキャッシュメモリを配置した構成（例えば、特許文献１参照）、２個のキャッシュメモリを直列に配置した構成（例えば、特許文献２参照）、あるいは２個のキャッシュメモリを並列に配置した構成（例えば、特許文献３参照）などのものが存在した。
【０００５】
図５(a) は、従来のＣＰＵとＳＤＲＡＭの間に１個のキャッシュメモリを配置した例を示す図であり、図５(b) は、その動作タイムチャートを示す図である。
【０００６】
図５(a) に示す例では、ＣＰＵ１とＳＤＲＡＭ２との間に、１個のキャッシュメモリ３と、このキャッシュメモリ３の入出力を制御するキャッシュ・コントローラ（Cache Controller）４が配置されている。通常のこのような場合は、キャッシュメモリ３としては図５(a) に示すように、ＦｉＦＯ（first-in first-out）が用いられる。
【０００７】
図５(b) は、上記の構成における、ａ：ＣＰＵ１によるプログラムに基づくタスク切り替えのタイミング、ｂ：キャッシュメモリ３のキャッシュ動作のタイミング、及び、ｃ：ＣＰＵ１のタスク実行動作のタイミングを示している。ｃのＣＰＵ１のタスク実行動作のタイミングチャートの進行は、そのままＣＰＵ１の処理速度に関係してくるものである。
【０００８】
図５(b) において、ａ及びｂに示すように、ＣＰＵ１は、データ入出力のためのコントローラプログラムに基づくコントローラ制御タスクＣ０，Ｃ１，Ｃ２，Ｃ３を実行中に、ハードディスクを駆動制御するためのサーボ制御の割り込みが発生した場合、そのサーボ制御タスクを実行するためのサーボプログラムが格納されているＳＤＲＡＭ２上のアドレスをＣａｃｈｅＣｏｎｔｒｏｌｌｅｒ４に送出する。
【０００９】
ＣａｃｈｅＣｏｎｔｏｌｌｅｒ４は、ＦＩＦＯ３内に、上記のアドレスに該当するデータが存在するかの検索を実行し（Ｃａｃｈｅ  Ｈｉｔ  Ｃｈｅｃｋ）、該当するデータがあった場合は、ＣＰＵ１にそのデータの受け渡しを行う。
【００１０】
しかし、該当するデータが存在しない場合は、ＣａｃｈｅＣｏｎｔｏｌｌｅｒ４は、図５(b) のｂ：に示すように、一旦、ＦＩＦＯ３内のデータをフラッシュ（消去）し（単にオーバーライトする場合もある）、ＳＤＲＡＭ２へ該当アドレスのデータの要求を出し、そのデータをＦＩＦＯ３内に取り込んで、順次ＣＰＵ１に引き渡す。
【００１１】
上記のようにＣａｃｈｅＣｏｎｔｏｌｌｅｒ４がＦＩＦＯ３内のデータをフラッシュし、ＳＤＲＡＭ２へ該当アドレスのデータの要求を出してそのデータをＦＩＦＯ３内に取り込んでいる間の取込時間ｔ１は、ＣＰＵ１のオーバーへッド時間となり、ＣＰＵ１による実行時間ｔ２の実際のサーボ制御タスクＳ０、Ｓ１、Ｓ２及びＳ３の実行は、上記の取込時間ｔ１の後に行われる。したがって、ＣＰＵ１の実行動作は、取込時間ｔ１も含めた全体の動作つまり取込時間ｔ１＋実行時間ｔ２として観察され、ＣＰＵ１の実行動作つまり処理速度が低下しているように見えることとなる。
【００１２】
また、このサーボ制御タスクが完了した後、今度はコントローラ制御タスクを実行するためのコントローラプログラムの呼び出すことになるが、この場合も上記と同一の現象が発生することになる。
【００１３】
このように、図５(a) 及び図５(b) に示される１個のキャッシュメモリを持った構成では、ＣＰＵは、インタフェースコントローラ制御中にサーボ制御の割り込みが発生した場合、インタフェースコントローラ制御を一次中断しサーボ制御に切り換えを行おうとする。
【００１４】
そして、キャッシュコントローラの動作としては、ＳＤＲＡＭ上のコントローラ制御プログラムとは異なったアドレスにあるサーボ制御用プログラムのキャッシュメモリへの読み込みを実行しようとする。すなわち、キャッシュメモリはフラツシュ（消失）され、新規にデータの取得を行おうと動作する。
【００１５】
したがって、ＣＰＵは、上述したように、キャッシュメモリにデータが蓄積されるまで、一次的に停止した状態となり、実行速度の低下を招いていた。このため、上記のような問題を解決するアクセス速度の改善策として、現在複数個のキャッシュメモリを持った構成が一般に用いられるようになっている。
【００１６】
図６は、従来の縦に２つのキャッシュメモリ（一次キャッシュ、二次キャッシュ）を配列する縦列型の構成を示している。図６に示すように、ＣＰＵ１とＳＤＲＡＭ２との間には、ＳＤＲＡＭ２側から見て一次キャッシュ５、二次キャッシュ６の２つのキャッシュメモリが直列に配置され、これらを制御するＣａｃｈｅＣｏｎｔｏｌｌｅｒ７が配置されている。
【００１７】
この構成は、二次キャッシュ６は、単に一次キャッシュ５のデータを取り込めば良く、その間に一次キャッシュ５が次のデータをＳＤＲＡＭ２から取り込むように、制御される。これによって、アクセス速度の改善を図っている。しかしながら、このように２つのキャッシュメモリを直列に配置したものは以下のような問題点を有している。
【００１８】
すなわち、図６に示す直列型は、比較的小さな且つシーケンシャルなプログラムの場合には効果を発揮することもあるが、二次キャッシュ６内に該当するデータが無い（ミスヒットした）場合には、結局一次キャッシュ５がＳＤＲＡＭ２上のデータを読みに行かなくてはならない。そして、キャッシュメモリにデータが蓄積されるまで、ＣＰＵ１の一次的な停止状態が発生して実行速度の低下を招くことにおいては、図５(a) 、図５(b) の場合と、それほど大きく変わるところがないことになる。
【００１９】
図７(a) は、従来の並列に２つのキャッシュメモリを配置する並列型の構成を示す図であり、図７(b) は、この構成におけるＣＰＵ側のアドレスマッピングとＳＤＲＡＭ上のプログラムメモリ領域のアドレスとの関係を模式的に示す図である。
【００２０】
図７(a) に示すように、ＣＰＵ１とＳＤＲＡＭ２との間には、Ｃａｃｈｅ−１、Ｃａｃｈｅ−２の２つのキャッシュメモリが並列に配置され、これらを制御するＣａｃｈｅＣｏｎｔｏｌｌｅｒ８が配置されている。
【００２１】
この構成では、図７(b) において、ＳＤＲＡＭ２の右に示すようにＳＤＲＡＭ２のメモリ領域は、アドレス００＿００００からアドレス１０＿００００までがプログラム１であり、アドレス２０＿００００からアドレス３０＿００００までがプログラム２であるとして、これに対する図のＳＤＲＡＭ２の左に示すＣＰＵ上のアクセスウインドウは、１０００＿００００から１００Ｆ＿ＦＦＦＦ間の一つのアドレス空間で対応している。
【００２２】
アクセスウインドウのＳＤＲＡＭへのアドレス空間は、上記の１０００＿００００から１００Ｆ＿ＦＦＦＦ間と限るわけではなく、どこに設定されてもよいが、いずれにしても従来は、上記のように、複数のプログラムに対して一つのアドレス空間で対応していたものである。
【００２３】
この構成は、ＣａｃｈｅＣｏｎｔｏｌｌｅｒ８は、ＣＰＵ１がどちらか一方のキャッシュメモリ（例えばＣａｃｈｅ−ｌ）のデータを実行中に、そのデータに連続するデータを先にＳＤＲＡＭ２から読み出して、そのデータをＣａｃｈｅ−２に蓄えるように制御する。
【００２４】
これにより、ＣＰＵ１は、Ｃａｃｈｅ−ｌ上でのプログラムの実行が終了後、Ｃａｃｈｅ−ｌには続くプログラムが無いので、Ｃａｃｈｅ−２に切り換えることにより続くプログラムをヒットし、連続的にプログラムの実行が可能となる。Ｃａｃｈｅ−ｌからＣａｃｈｅ−２、Ｃａｃｈｅ−２からＣａｃｈｅ−ｌを繰り返すことにより、プログラムの継続的な実行が可能となるというものである。
【００２５】
しかしながら、このように２つのキャッシュメモリを並列に配置したとしても、従来の構成では、以下のような問題点を有している。
【００２６】
すなわち、図７(a) に示す並列型は、キャッシュをプログラムによって使い分けている訳ではなく、単にハード的に使い分けているに過ぎないから、磁気ディスク装置のようにプログラムがランダムに分割されているプログラムを実行しようとする場合は、Ｃａｃｈｅ−２の先読みを行ったとしても、実行するプログラムが離れたアドレス空間にある場合には、結局、Ｃａｃｈｅ−２のデータは、一旦フラッシュされてから、離れたアドレスのデータを読み込むことになるため、この場合も、ＣＰＵは、データが蓄えられるまで待たされることになり、やはり、実行速度の低下を招くことにおいては何ら変わりがないことになる。
【００２７】
従来は、一般にＣＰＵの動作クロックは３３ＭＨｚ〜６６ＭＨｚ程度であって、これに対してバッファの動作クロックは１００ＭＨｚであったから、バッファの動作速度の方がＣＰＵの動作クロックよりもほぼ２倍速く、つまり、バッファに対するＣＰＵからのアクセス要求が遅かったから、上記のようなオーバーヘッドによる処理速度の低下は、全体のＣＰＵの動作から見ると気になるほど目立たなかったものである。
【００２８】
ところが，近年のように、ＣＰＵの動作クロックが１００ＭＨｚを超え、バッファの動作クロックが１００ＭＨｚのままであると、ＣＰＵの動作速度とバッファの動作速度が相対的に１対１の速度となるから、上記のようなオーバーヘッドによる処理速度の低下は、全体として無視できないものになってきている。
【００２９】
また、従来は、一般に例えばサーボプログラムのような性能重視のプログラムでは、比較的速度の遅いＳＤＲＡＭ上で実行する構成を極力避けて、ＳＤＲＡＭよりも処理速度の速いＳＲＡＭをサーボ機構に内蔵して、このＳＲＡＭ上で処理タスクを実行させることにより高い性能を確保するようにしていた。
【００３０】
【特許文献１】特開平１０−１０６１１７号公報（［要約］、図１）
【発明の開示】
【発明が解決しようとする課題】
【００３１】
しかし、このようにＳＲＡＭをサーボ機構に内蔵する構成は、年々増加するプログラムに対応すべくＳＲＡＭも８Ｍや１６Ｍと順次大きくなってきていて、このように増加するプログラムに対応してＳＲＡＭも増加させなければならないから、メモリを構成するチップ単体のコスト面から見ると、高価なものとなり、結果として製品全体のコストアップを招くという問題が発生する。
【００３２】
また、キャッシュは、プログラムの大きさによって作用が異なる。すなわち、キャッシュの容量が大きすぎると、ＣＰＵの待時間が大きくなり、容量が小さすぎると、ヒット回数が少なくなり書き換えが頻繁に行われるから、やはりＣＰＵの待時間が増加する。
【００３３】
また、ＳＲＡＭは、本質的にデータバッファという目的はあるが、今のように容量がせっかく大きなメモリとなったのであるから、その大きな容量のメモリを従来のように単にバッファをとして使うだけでは、プログラムによってはバッファの空き容量が出来過ぎて無駄が多いという問題も発生する。
【００３４】
いずれにしても、これまでに、上述したＣＰＵの待ち時間を解消するために、キャッシュメモリの多重化により、待ち時間をＣＰＵに見せないようにするなどの提案があるが、これらはいずれもプログラムのシングルタスクにおいてのアクセス向上を図ったものであり、例えば磁気ディスクでの複数のタスクで使用することを意図して考案されたものではない。
【００３５】
つまり、プログラムの実行（タスク）に応じて、キャッシュメモリの使用用途を考慮されているものは、存在しなかったものである。
【００３６】
本発明の課題は、上記従来の実情に鑑み、２つ以上のキャッシュメモリにより２つ以上のプログラムを高速に切り換えてＣＰＵのオーバーヘッドを可及的に解消して処理速度を向上させる磁気ディスク装置のキャッシュメモリアクセス方法を提供することである。
【課題を解決するための手段】
【００３７】
本発明の実施の形態においては、磁気ディスク装置の外付けＳＤＲＡＭ（Synchronous Dinamic Random Access Memory）にＣＰＵ（central processing unit）が実行すべき少なくとも２つ以上のプログラムが格納されているとき該プログラムへの上記ＣＰＵからのアクセスするに際し、上記ＣＰＵと上記ＳＤＲＡＭ間に配置されるデスク制御装置内に上記２つ以上のプログラムの数に対応する数のキャッシュを並列に設け、ＣＰＵのアクセス空間領域に上記キャッシュの数に対応する数の独立したメモリウインドウを設け、ＣＰＵが上記いずれかのプログラムを実行するに際し実行するプログラムに対応する上記メモリウインドウに基づき上記キャッシュを通して上記ＳＤＲＡＭにアクセスする方法が採用される。
【００３８】
上記２つ以上のプログラムは、少なくともコントローラプログラムおよびサーボプログラムを含むようにすることが好ましく。また、少なくともコントローラプログラム、サーボプログラム、およびリオーダリングプログラムを含むようにしてもよい。
【発明の効果】
【００３９】
以上のように、本発明によれば、プログラムの実行（タスク）に応じて、キャッシュメモリの使用用途を考慮し、タスクの種類に応じて独立した２個以上のキャッシュメモリを設けることにより、例えばコントローラ制御プログラムとサーボ制御プログラムへの独立したアクセスを可能とし、この場合、各々のキャッシュメモリにおいて前回キャッシュしたデータが保存されていることから、前回のアクセス時のプログラムがキャッシュ上から消失することがなく、継続的なプログラムの実行が実現でき、従来のようなキャッシュのフラッシュから新規データのアクセスまでのＣＰＵのオーバーヘッドが無くなり、ＣＰＵの実行速度の向上を図ることができる。
【００４０】
また、ＳＤＲＡＭ上のプログラム実行速度の向上により、従来内蔵ＳＲＡＭ上で実行していたプログラムをＳＤＲＡＭ上で実行可能となり、延いては内蔵ＳＲＡＭの削減（削除）も可能となることにより、チップコストを削減することができ、より安価で性能のよいディスク装置の提供が可能となる。
【発明を実施するための最良の形態】
【００４１】
以下に、本発明の実施形態について、図面を参照しながら説明する。
【実施例１】
【００４２】
図１(a) は、第１の実施の形態におけるハード的に見た全体の回路構成を示す図であり、ＣＰＵとＳＤＲＡＭとの間に２つのキャッシュメモリを並列に配置する構成を示している。また、図１(b) は、この構成におけるＣＰＵのアドレスマッピングとＳＤＲＡＭ上のプログラムメモリ領域のアドレスとの関係を模式的に示している。尚、図１(b) には、図１(a) に示す２つのキャッシュメモリの図示を省略している。
【００４３】
図１(a) に示すように、本例では、ＣＰＵ１０とＳＤＲＡＭ１１との間に配置されているキャッシュ・コントローラ（Cache Controller）１２は、ＦｉＦＯ＿１とＦｉＦＯ＿２の２つのキャッシュを備えている。
【００４４】
図１(a) の構成のみを見れば図７(a) の場合と同じように見えるが、本例の図１(a) の場合は図７(a) の場合と異なり、後述するようにＦｉＦＯ＿１はコントローラプログラム用であり、ＦｉＦＯ＿２はサーボプログラム用に設定されている。
【００４５】
即ち、図１(b) に示すように、ＳＤＲＡＭ１１上のメモリ空間１３には、たとえば００＿００００から０Ｆ＿ＦＦＦＦまでにコントローラプログラムが配置され、１０＿００００から１Ｆ＿ＦＦＦＦまでにサーボプログラムが配置されていたとする。なお、２０＿００００から上は、ホストとのデータの遣り取りをする際の通常のデータバッファ領域である。
【００４６】
これに対して、ＣＰＵ１０側のアドレスマッピングでは、上記のコントローラプログラムとサーボプログラムの２つのプログラムに対し、アクセス空間１４の１０００＿００００から１ＦＦＦ＿ＦＦＦＦまでのアクセスウインドウからＦｉＦＯ＿１を介してＳＤＲＡＭ１１のコントローラプログラムにアクセスし、２０００＿００００から２ＦＦＦ＿ＦＦＦＦまでのアクセスウインドウから、ＦｉＦＯ＿２を介してサーボプログラムにアクセスする。
【００４７】
即ち、２つのＦｉＦＯ＿１とＦｉＦＯ＿２を、アクセスウインドウ上からサーボ用とコントローラ用に２つに分けて、コントローラプログラムとサーボプログラムの２つのプログラムに対し、独立にアクセスを行う。
【００４８】
このように、本例では、ＣＰＵ１０から見たＳＤＲＡＭ１１のメモリ空間１３に対するアクセス空間１４を２重化し、各々のタスクに対応するＦｉＦＯ＿１とＦｉＦＯ＿２の２つの独立のキャッシュメモリを持つようにしている。これにより、２つのプログラムへのアクセスの高速化が実現される。
【００４９】
図２は、上記の図１(a) および図１(b) に示す構成における処理のタイミングチャートを示す図であり、上から、ａ：タスク切り替え、ｂ：コントローラ制御用キャッシュ動作、ｃ：サーボ制御用キャッシュ動作、ｄ：ＣＰＵ実行動作、のタイミングを示している。
【００５０】
前述の図１(a),(b) の構成において、電源投入後においては、２つのキャッシュメモリのＦｉＦＯ＿１とＦｉＦＯ＿２とはクリア状態であるので、初めのアクセスにおいては、コントローラ制御を行うために図２のｄに示すＣ０〜Ｃ３で示されるコントローラプログラムを、図１(ｂ) に示すアクセス空間１４のアクセスウインドウ１０００＿００００から１ＦＦＦ＿ＦＦＦＦに対応して配置されるキャッシュメモリのＦｉＦＯ＿１に、図２のｂに示すように読み込むまでの間、従来と同様な待ちの問題が発生する。
【００５１】
同様に、次にサーボ制御を行うために図２のｄに示すＳ０〜Ｓ３で示すサーボプログラムを、図１(b) に示すアクセス空間１４のアクセスウインドウ２０００＿００００から２ＦＦＦ＿ＦＦＦＦに対応して配置されるキャッシュメモリのＦｉＦＯ＿２に、図２のｃに示すように読み込むまでの間、この場合も従来と同様な待ちの問題が発生する。
【００５２】
しかし、その後においては、上記の２回のキャッシュ動作によって、Ｃ０〜Ｃ３で示されるコントローラプログラムはＦｉＦＯ＿１に読み込まれて保持されており、Ｓ０〜Ｓ３で示されるサーボプログラムも、ＦｉＦＯ＿２に読み込まれて保持されている。
【００５３】
図２のタイミングチャートは、上記の２回のキャッシュ動作が行われた以降のタイミングチャートを示している。
【００５４】
ＣＰＵ１０は、データの読み書きの際には、上記のコントローラ制御のタスクとサーボ制御のタスクを交互に繰り返すので、最初にコントローラ制御のタスクとサーボ制御のタスクを行った後は、図１(a) のＣＰＵ１０は、図２のｄに示すように、コントローラ制御のタスクＣ０〜Ｃ３を実行した後、待ち時間無しに、直ちにＦｉＦＯ＿２のサーボプログラムを図２の矢印ａに示すようにキャッシュヒットしてサーボ制御のタスクＳ０〜Ｓ３を実行することができる。
【００５５】
さらに、図２のｄに示すように、上記のサーボ制御のタスクＳ０〜Ｓ３を実行した後は、ＣＰＵ１０は、この場合も、最初にＦｉＦＯ＿１に読み込まれたまま保持されているＣ０〜Ｃ３で示されるコントローラプログラムを矢印ｂに示すようにキャッシュヒットして、待ち時間無しに、直ちにコントローラ制御のタスクＣ０〜Ｃ３を実行することができる。そして、これが交互に繰り返される。
【実施例２】
【００５６】
ところで、上記のように独立に動作するプログラムとしては、上記の他にリオーダリングプログラムがある。このリオーダリングプログラムは、バッファ上に入ってくるデータを順番に整列をさせるように制御するプログラムであり、これをバックグランドで動作させる構成のものが多い。
【００５７】
このリオーダリングプログラムのように別個に動作するプログラムがある場合には、これも上記のように独立のキャッシュメモリに割り当てて、これをＣＰＵが読み込むようにすると、この場合も、ＣＰＵの処理動作の速度を向上させることができる。これを第２の実施の形態として，以下に説明する。
【００５８】
図３(a) は、第２の実施の形態におけるハード的に見た全体の回路構成を示す図であり、ＣＰＵとＳＤＲＡＭとの間に３つのキャッシュメモリを並列に配置する構成を示している。図３(b) は、この構成におけるＣＰＵのアドレスマッピングを示す図であり、ＣＰＵ上のアドレスウインドウとＳＤＲＡＭ上のプログラムメモリ領域のアドレスとの関係を模式的に示している。尚、この場合も図３(b) には、図３(a) に示す３つのキャッシュメモリの図示を省略している。
【００５９】
図３(a) に示すように、本例では、ＣＰＵ１０とＳＤＲＡＭ１１との間に配置されているキャッシュ・コントローラ（Cache Controller）１５は、ＦｉＦＯ＿１、ＦｉＦＯ＿２およびＦｉＦＯ＿３の３つのキャッシュメモリを備えている。ＦｉＦＯ＿１はコントローラプログラム用であり、ＦｉＦＯ＿２はサーボプログラム用であり、そして、ＦｉＦＯ＿３はリオーダリングプログラム用である。
【００６０】
図３(b) に示すように、本例ではＳＤＲＡＭ１１上のメモリ空間１３には、００＿００００から０Ｆ＿ＦＦＦＦまでにコントローラプログラムが配置され、１０＿００００から１Ｆ＿ＦＦＦＦまでにサーボプログラムが配置され、２０＿００００から２Ｆ＿ＦＦＦＦまでにリオーダリングプログラムが配置されていたとする。なお、３０＿００００から上は、ホストとのデータの遣り取りをする際の通常のデータバッファ領域である。
【００６１】
このＳＤＲＡＭ１１に対して、ＣＰＵ１０は、アクセス空間１４の１０００＿００００から１ＦＦＦ＿ＦＦＦＦまでのアクセスウインドウからＦｉＦＯ＿１を介してＳＤＲＡＭ１１のコントローラプログラムにアクセスし、２０００＿００００から２ＦＦＦ＿ＦＦＦＦまでのアクセスウインドウから、ＦｉＦＯ＿２を介してサーボプログラムにアクセスし、そして、３０００＿００００から３ＦＦＦ＿ＦＦＦＦまでのアクセスウインドウから、ＦｉＦＯ＿３を介してリオーダリングプログラムにアクセスする。
【００６２】
即ち、ＣＰＵ１０は、３つのＦｉＦＯ＿１、ＦｉＦＯ＿２、およびＦｉＦＯ＿３を、アクセスウインドウ上からサーボ用とコントローラ用とリオーダリング用の３つに分けて、コントローラプログラムとサーボプログラムとリオーダリングプログラムの３つのプログラムに対し、独立にアクセスを行う。
【００６３】
このように、本例の場合では、ＣＰＵ１０から見たＳＤＲＡＭ１１のメモリ空間１３に対するアクセス空間１４を３重化し、この３重化されたメモリウインドウに対応する３つのキャッシュとしてＦｉＦＯ＿１、ＦｉＦＯ＿２、ＦｉＦＯ＿３を備え、これにより、３つの各々のタスクに対応するの３つの独立のキャッシュを持つようにしている。これにより３つのプログラムへのアクセスの高速化が実現される。
【００６４】
図４は、上記の図３(a) および図３(b) に示す構成における処理のタイミングチャートを示す図であり、上から、ａ：タスク切り替え、ｂ：コントローラ制御用キャッシュ動作、ｃ：リオーダリング制御用キャッシュ動作、ｄ：サーボ制御用キャッシュ動作、そして、ｅ：ＣＰＵ実行動作、のタイミングを示している。
【００６５】
この構成において、電源投入後においては、３つのキャッシュメモリのＦｉＦＯ＿１、ＦｉＦＯ＿２、およびＦｉＦＯ＿３は、それぞれクリア状態であるので、図４のａに示すように３つのタスクを切り替えながら処理を実行していくに際して、コントローラ制御、次のリオーダリング制御、そして３番目のサーボ制御のそれぞれ初めのアクセスにおいては、前述の図１(a),(b) の構成のＦｉＦＯが２つの場合と同様に、従来と同様な時間待ちの問題が発生する。
【００６６】
しかし、その後は、図４のｂおよびｅでＣ０〜Ｃ３として示されるコントローラプログラム（またはタスク）はアクセスウインドウ１０００＿００００から１ＦＦＦ＿ＦＦＦＦに対応して配置されているキャッシュメモリのＦｉＦＯ＿１内に読み込まれてデータとして保持されている。
【００６７】
また、図４のｂおよびｅでＲ０〜Ｒｌとして示されるリオーダリングプログラム（またはタスク）は、アクセスウインドウ３０００＿００００から３ＦＦＦ＿ＦＦＦＦに対応して配置されているキャッシュメモリのＦｉＦＯ＿３内に読み込まれてデータとして保持されている。
【００６８】
さらに、図４のｄおよびｅでＳ０〜Ｓ３として示されるサーボプログラム（またはタスク）も、アクセスウインドウ２０００＿００００から２ＦＦＦ＿ＦＦＦＦに対応して配置されているキャッシュメモリのＦｉＦＯ＿２に、すでに読み込まれて保持されている。
【００６９】
したがって、ＣＰＵ１０のタスクが上記最初のサーボ制御のタスクから二回目からのコントローラ制御タスクに切り替わって、コントローラプログラムを実行しようとしたとき、キャッシュヒット状態となり、ＣＰＵ１０は待ち時間無しにプログラムデータを受け取って、直ちにコントローラ制御のタスクＣ０〜Ｃ３を実行することが可能となる。図４のタイミングチャートは、この二回目から以降のタイミングチャートを示している。
【００７０】
すなわち図４のａに示すように、二回目のコントローラ制御のタスクから次にリオーダ制御にタスクが切り替わって、リオーダリングプログラムを実行しようとした場合は、図４のｃ、ｅの矢印ｃで示すようにキャッシュヒット状態となり、ＣＰＵ１０は待ち時間無しにプログラムデータを受け取って、ｅに示すように直ちにリオーダリング制御のタスクＲ０〜Ｒ３を実行することが可能となる。
【００７１】
また、したがって、ＣＰＵ１０がサーボプログラムを実行しようとした場合は、この場合もキャッシュヒット状態となり、図４のｄ、ｅの矢印ｄで示すように、ＣＰＵ１０は待ち時間無しにプログラムデータを受け取って、ｅに示すように直ちにサーボ制御のタスクＳ０〜Ｓ３を実行することが可能となる。
【００７２】
これは、サーボ制御からコントローラ制御、再びコントローラ制御からリオーだリング制御へとタスクが切り替わる際も、図４の矢印ｅ、ｆ、ｇ、・・・に示すようにキャッシュヒット状態となるため、上記と同じように待ち時間無しのタスク切り替えが順次実行されていく。
【００７３】
このように、３つのプログラムに対してキャッシュヒットを繰り返して、待ち時間無しに、直ちにタスクを切り替えながら高速に処理を実行していくことができる。
【００７４】
尚、上記の説明では、アドレスのＲＡＳ／ＣＡＳの挿入タイミングを示していないが、ＲＡＳ／ＣＡＳの挿入クロックは一般に７〜１０サイクルである。ＣＰＵは通常、内蔵のＳＲＡＭで動作しており、この場合１サイクルで１つのデータの受け渡しを行うが、たとえばＦｉＦＯに読み込むプログラムが１６命令（３２ワード）であるとすると、データの受け渡しに要するサイクル数に比較してＲＡＳ／ＣＡＳの挿入のサイクル数が、無視できるほどではないが、それでも遥かに短い。上記の説明でＲＡＳ／ＣＡＳの挿入タイミングを示さなかったのは、ＲＡＳ／ＣＡＳの挿入タイミングを並示すると図面と説明が煩雑になるのと、そのこと自体が本発明の要部ではないことから省略したものである。
【００７５】
また、一般に、キャッシュヒットの確率は、ＣＰＵの動作速度、バッファのアビトレーション、ＳＤＲＡＭの動作速度、キャッシュのＦｉＦＯサイズなどのハード要因によって異なってくる。また、プログラムの作り方によっても変わってくる。
【００７６】
したがって、上記本発明の構成によるＣＰＵの処理速度の高速化は、一定した値で示すことはできないが、上記のＣＰＵの動作速度、バッファのアビトレーション、ＳＤＲＡＭの動作速度、キャッシュのＦｉＦＯサイズ、さらにはプログラムの作り方、いずれの条件の場合でも、従来のアクセス方式を採用した場合と比較した場合、本発明のアクセス方式によって処理動作が向上することは間違いない。
【００７７】
すなわち、本発明の構成においては、常にＦｉＦＯの深さ分のＣＰＵのオーバーヘッドを削減することが可能となる。例えば、単純に見積って、ＳＤＲＡＭのアクセスが１００ＭＨｚで動作した場合（Ａｄｄｒｅｓｓ，ＲＡＳ／ＣＡＳの挿入時間含まず）、キャッシュのＦｉＦＯが８ワードとすると、タスクの切り替えごとに１０ｎｓ×８ワード分の時間の短縮が可能となる。
【００７８】
このように、本発明によれば、プログラムの実行（タスク）に応じて、キャッシュメモリの使用用途を考慮し、タスクの種類に応じて独立した２個以上のキャッシュメモリを設けることにより、例えばコントローラ制御プログラムとサーボ制御プログラムへの独立したアクセスを可能とし、この場合、各々のキャッシュメモリにおいて前回キャッシュしたデータが保存されていることから、前回のアクセス時のプログラムがキャッシュ上から消失することがなく、継続的なプログラムの実行が実現でき、従来のようなキャッシュメモリのフラッシュから新規データのアクセスまでのＣＰＵのオーバーヘッドが無くなり、ＣＰＵの実行速度の向上を図ることができる。
【００７９】
また、本発明のＳＤＲＡＭ上のプログラム実行速度の向上により、従来内蔵ＳＲＡＭ上で実行していたプログラムをＳＤＲＡＭ上で実行可能となり、延いては内蔵ＳＲＡＭの削減（削除）が可能となり、チップコストの削減に貢献する。
【産業上の利用可能性】
【００８０】
以上のように本発明の磁気ディスク装置のキャッシュメモリアクセス方法は、２つ以上のキャッシュメモリにより２つ以上のプログラムを高速に切り換えてＣＰＵのオーバーヘッドを可及的に解消し処理速度を向上させるものであり、本発明は、磁気ディスク装置のキャッシュメモリをアクセスする構成を用いる全ての産業において利用することが可能である。
【図面の簡単な説明】
【００８１】
【図１】(a) は第１の実施の形態におけるハード的に見た全体の回路構成を示しＣＰＵとＳＤＲＡＭとの間に２つのキャッシュメモリを並列に配置する構成を示す図、(b) はこの構成におけるＣＰＵのアドレスマッピングとＳＤＲＡＭ上のプログラムメモリ領域のアドレスとの関係を模式的に示す図である。
【図２】図１(a) 及び図１(b) に示す構成における処理のタイミングチャートを示す図である。
【図３】(a) は第２の実施の形態におけるハード的に見た全体の回路構成を示しＣＰＵとＳＤＲＡＭとの間に３つのキャッシュメモリを並列に配置する構成を示す図、(b) はこの構成におけるＣＰＵのアドレスマッピングとＳＤＲＡＭ上のプログラムメモリ領域のアドレスとの関係を模式的に示す図である。
【図４】図３(a) 及び図３(b) に示す構成における処理のタイミングチャートを示す図である。
【図５】(a) は従来のＣＰＵとＳＤＲＡＭの間に１個のキャッシュメモリを配置した例を示す図、(b) はその動作タイムチャートを示す図である。
【図６】従来の縦に一次キャッシュ、二次キャッシュの２つのキャッシュメモリを配列する縦列型の構成を示す図である。
【図７】(a) は従来の並列に２つのキャッシュメモリを配置する並列型の構成を示す図、(b) はこの構成におけるＣＰＵ上のアドレスウインドウとＳＤＲＡＭ上のメモリマッピングとの関係を模式的に示す図である。
【符号の説明】
【００８２】
１      ＣＰＵ（central processing unit）  
２      ＳＤＲＡＭ（Synchronous Dinamic Random Access Memory）
３      キャッシュメモリ：ＦＩＦＯ（first-in first-out）
４      キャッシュ・コントローラ（Cache Controller）４
５      一次キャッシュ
６      二次キャッシュ
７、８  ＣａｃｈｅＣｏｎｔｏｌｌｅｒ
１０    ＣＰＵ
１１    ＳＤＲＡＭ
１２、１５  キャッシュ・コントローラ（Cache Controller）
１３    メモリ空間
１４    アクセス空間
【図１】
2005044145.tif 000003
【図２】
2005044145.tif 000004
【図３】
2005044145.tif 000005
【図４】
2005044145.tif 000006
【図５】
2005044145.tif 000007
【図６】
2005044145.tif 000008
【図７】
2005044145.tif 000009