本発明は、2つ以上のキャッシュメモリにより2つ以上のプログラムを高速に切り換えてCPU(central processing unit)のオーバーヘッドを可及的に解消し処理速度を向上させる磁気ディスク装置のキャッシュメモリアクセス方法に関する。
従来、CPUが、例えば磁気ディスク装置の制御を行う場合の方法としては、磁気ディスク装置とデータの授受を行うインタフェースコントローラの制御と、磁気ディスク装置を駆動するモータ及び読み取り書き込みを行うサーボの制御との独立した2つの制御を行わなければならない。
この場合、CPUがそれらのタスクを実行するためのコントローラプログラムやサーボプログラムは、予めハードディスクなどからメインメモリのSDRAM(Synchronous Dynamic Random Access Memory)に読み込まれており、CPUはそれらのプログラムを、これから実行する制御タスクの順序に応じてSDRAMから順次読み込みながら、その制御タスクを実行する。
その場合、CPUからSDRAMへのアクセス速度を向上させるために、CPUとSDRAMの間に1個のキャッシュメモリを配置した構成(例えば、特許文献1参照)、2個のキャッシュメモリを直列に配置した構成(例えば、特許文献2参照)、あるいは2個のキャッシュメモリを並列に配置した構成(例えば、特許文献3参照)などのものが存在した。
図5(a) は、従来のCPUとSDRAMの間に1個のキャッシュメモリを配置した例を示す図であり、図5(b) は、その動作タイムチャートを示す図である。
図5(a) に示す例では、CPU1とSDRAM2との間に、1個のキャッシュメモリ3と、このキャッシュメモリ3の入出力を制御するキャッシュ・コントローラ(Cache Controller)4が配置されている。通常のこのような場合は、キャッシュメモリ3としては図5(a) に示すように、FiFO(first-in first-out)が用いられる。
図5(b) は、上記の構成における、a:CPU1によるプログラムに基づくタスク切り替えのタイミング、b:キャッシュメモリ3のキャッシュ動作のタイミング、及び、c:CPU1のタスク実行動作のタイミングを示している。cのCPU1のタスク実行動作のタイミングチャートの進行は、そのままCPU1の処理速度に関係してくるものである。
図5(b) において、a及びbに示すように、CPU1は、データ入出力のためのコントローラプログラムに基づくコントローラ制御タスクC0,C1,C2,C3を実行中に、ハードディスクを駆動制御するためのサーボ制御の割り込みが発生した場合、そのサーボ制御タスクを実行するためのサーボプログラムが格納されているSDRAM2上のアドレスをCacheController4に送出する。
CacheContoller4は、FIFO3内に、上記のアドレスに該当するデータが存在するかの検索を実行し(Cache Hit Check)、該当するデータがあった場合は、CPU1にそのデータの受け渡しを行う。
しかし、該当するデータが存在しない場合は、CacheContoller4は、図5(b) のb:に示すように、一旦、FIFO3内のデータをフラッシュ(消去)し(単にオーバーライトする場合もある)、SDRAM2へ該当アドレスのデータの要求を出し、そのデータをFIFO3内に取り込んで、順次CPU1に引き渡す。
上記のようにCacheContoller4がFIFO3内のデータをフラッシュし、SDRAM2へ該当アドレスのデータの要求を出してそのデータをFIFO3内に取り込んでいる間の取込時間t1は、CPU1のオーバーへッド時間となり、CPU1による実行時間t2の実際のサーボ制御タスクS0、S1、S2及びS3の実行は、上記の取込時間t1の後に行われる。したがって、CPU1の実行動作は、取込時間t1も含めた全体の動作つまり取込時間t1+実行時間t2として観察され、CPU1の実行動作つまり処理速度が低下しているように見えることとなる。
また、このサーボ制御タスクが完了した後、今度はコントローラ制御タスクを実行するためのコントローラプログラムの呼び出すことになるが、この場合も上記と同一の現象が発生することになる。
このように、図5(a) 及び図5(b) に示される1個のキャッシュメモリを持った構成では、CPUは、インタフェースコントローラ制御中にサーボ制御の割り込みが発生した場合、インタフェースコントローラ制御を一次中断しサーボ制御に切り換えを行おうとする。
そして、キャッシュコントローラの動作としては、SDRAM上のコントローラ制御プログラムとは異なったアドレスにあるサーボ制御用プログラムのキャッシュメモリへの読み込みを実行しようとする。すなわち、キャッシュメモリはフラツシュ(消失)され、新規にデータの取得を行おうと動作する。
したがって、CPUは、上述したように、キャッシュメモリにデータが蓄積されるまで、一次的に停止した状態となり、実行速度の低下を招いていた。このため、上記のような問題を解決するアクセス速度の改善策として、現在複数個のキャッシュメモリを持った構成が一般に用いられるようになっている。
図6は、従来の縦に2つのキャッシュメモリ(一次キャッシュ、二次キャッシュ)を配列する縦列型の構成を示している。図6に示すように、CPU1とSDRAM2との間には、SDRAM2側から見て一次キャッシュ5、二次キャッシュ6の2つのキャッシュメモリが直列に配置され、これらを制御するCacheContoller7が配置されている。
この構成は、二次キャッシュ6は、単に一次キャッシュ5のデータを取り込めば良く、その間に一次キャッシュ5が次のデータをSDRAM2から取り込むように、制御される。これによって、アクセス速度の改善を図っている。しかしながら、このように2つのキャッシュメモリを直列に配置したものは以下のような問題点を有している。
すなわち、図6に示す直列型は、比較的小さな且つシーケンシャルなプログラムの場合には効果を発揮することもあるが、二次キャッシュ6内に該当するデータが無い(ミスヒットした)場合には、結局一次キャッシュ5がSDRAM2上のデータを読みに行かなくてはならない。そして、キャッシュメモリにデータが蓄積されるまで、CPU1の一次的な停止状態が発生して実行速度の低下を招くことにおいては、図5(a) 、図5(b) の場合と、それほど大きく変わるところがないことになる。
図7(a) は、従来の並列に2つのキャッシュメモリを配置する並列型の構成を示す図であり、図7(b) は、この構成におけるCPU側のアドレスマッピングとSDRAM上のプログラムメモリ領域のアドレスとの関係を模式的に示す図である。
図7(a) に示すように、CPU1とSDRAM2との間には、Cache−1、Cache−2の2つのキャッシュメモリが並列に配置され、これらを制御するCacheContoller8が配置されている。
この構成では、図7(b) において、SDRAM2の右に示すようにSDRAM2のメモリ領域は、アドレス00_0000からアドレス10_0000までがプログラム1であり、アドレス20_0000からアドレス30_0000までがプログラム2であるとして、これに対する図のSDRAM2の左に示すCPU上のアクセスウインドウは、1000_0000から100F_FFFF間の一つのアドレス空間で対応している。
アクセスウインドウのSDRAMへのアドレス空間は、上記の1000_0000から100F_FFFF間と限るわけではなく、どこに設定されてもよいが、いずれにしても従来は、上記のように、複数のプログラムに対して一つのアドレス空間で対応していたものである。
この構成は、CacheContoller8は、CPU1がどちらか一方のキャッシュメモリ(例えばCache−l)のデータを実行中に、そのデータに連続するデータを先にSDRAM2から読み出して、そのデータをCache−2に蓄えるように制御する。
これにより、CPU1は、Cache−l上でのプログラムの実行が終了後、Cache−lには続くプログラムが無いので、Cache−2に切り換えることにより続くプログラムをヒットし、連続的にプログラムの実行が可能となる。Cache−lからCache−2、Cache−2からCache−lを繰り返すことにより、プログラムの継続的な実行が可能となるというものである。
しかしながら、このように2つのキャッシュメモリを並列に配置したとしても、従来の構成では、以下のような問題点を有している。
すなわち、図7(a) に示す並列型は、キャッシュをプログラムによって使い分けている訳ではなく、単にハード的に使い分けているに過ぎないから、磁気ディスク装置のようにプログラムがランダムに分割されているプログラムを実行しようとする場合は、Cache−2の先読みを行ったとしても、実行するプログラムが離れたアドレス空間にある場合には、結局、Cache−2のデータは、一旦フラッシュされてから、離れたアドレスのデータを読み込むことになるため、この場合も、CPUは、データが蓄えられるまで待たされることになり、やはり、実行速度の低下を招くことにおいては何ら変わりがないことになる。
従来は、一般にCPUの動作クロックは33MHz〜66MHz程度であって、これに対してバッファの動作クロックは100MHzであったから、バッファの動作速度の方がCPUの動作クロックよりもほぼ2倍速く、つまり、バッファに対するCPUからのアクセス要求が遅かったから、上記のようなオーバーヘッドによる処理速度の低下は、全体のCPUの動作から見ると気になるほど目立たなかったものである。
ところが,近年のように、CPUの動作クロックが100MHzを超え、バッファの動作クロックが100MHzのままであると、CPUの動作速度とバッファの動作速度が相対的に1対1の速度となるから、上記のようなオーバーヘッドによる処理速度の低下は、全体として無視できないものになってきている。
また、従来は、一般に例えばサーボプログラムのような性能重視のプログラムでは、比較的速度の遅いSDRAM上で実行する構成を極力避けて、SDRAMよりも処理速度の速いSRAMをサーボ機構に内蔵して、このSRAM上で処理タスクを実行させることにより高い性能を確保するようにしていた。
しかし、このようにSRAMをサーボ機構に内蔵する構成は、年々増加するプログラムに対応すべくSRAMも8Mや16Mと順次大きくなってきていて、このように増加するプログラムに対応してSRAMも増加させなければならないから、メモリを構成するチップ単体のコスト面から見ると、高価なものとなり、結果として製品全体のコストアップを招くという問題が発生する。
また、キャッシュは、プログラムの大きさによって作用が異なる。すなわち、キャッシュの容量が大きすぎると、CPUの待時間が大きくなり、容量が小さすぎると、ヒット回数が少なくなり書き換えが頻繁に行われるから、やはりCPUの待時間が増加する。
また、SRAMは、本質的にデータバッファという目的はあるが、今のように容量がせっかく大きなメモリとなったのであるから、その大きな容量のメモリを従来のように単にバッファをとして使うだけでは、プログラムによってはバッファの空き容量が出来過ぎて無駄が多いという問題も発生する。
いずれにしても、これまでに、上述したCPUの待ち時間を解消するために、キャッシュメモリの多重化により、待ち時間をCPUに見せないようにするなどの提案があるが、これらはいずれもプログラムのシングルタスクにおいてのアクセス向上を図ったものであり、例えば磁気ディスクでの複数のタスクで使用することを意図して考案されたものではない。
つまり、プログラムの実行(タスク)に応じて、キャッシュメモリの使用用途を考慮されているものは、存在しなかったものである。
本発明の課題は、上記従来の実情に鑑み、2つ以上のキャッシュメモリにより2つ以上のプログラムを高速に切り換えてCPUのオーバーヘッドを可及的に解消して処理速度を向上させる磁気ディスク装置のキャッシュメモリアクセス方法を提供することである。
本発明の実施の形態においては、磁気ディスク装置の外付けSDRAM(Synchronous Dinamic Random Access Memory)にCPU(central processing unit)が実行すべき少なくとも2つ以上のプログラムが格納されているとき該プログラムへの上記CPUからのアクセスするに際し、上記CPUと上記SDRAM間に配置されるデスク制御装置内に上記2つ以上のプログラムの数に対応する数のキャッシュを並列に設け、CPUのアクセス空間領域に上記キャッシュの数に対応する数の独立したメモリウインドウを設け、CPUが上記いずれかのプログラムを実行するに際し実行するプログラムに対応する上記メモリウインドウに基づき上記キャッシュを通して上記SDRAMにアクセスする方法が採用される。
上記2つ以上のプログラムは、少なくともコントローラプログラムおよびサーボプログラムを含むようにすることが好ましく。また、少なくともコントローラプログラム、サーボプログラム、およびリオーダリングプログラムを含むようにしてもよい。
以上のように、本発明によれば、プログラムの実行(タスク)に応じて、キャッシュメモリの使用用途を考慮し、タスクの種類に応じて独立した2個以上のキャッシュメモリを設けることにより、例えばコントローラ制御プログラムとサーボ制御プログラムへの独立したアクセスを可能とし、この場合、各々のキャッシュメモリにおいて前回キャッシュしたデータが保存されていることから、前回のアクセス時のプログラムがキャッシュ上から消失することがなく、継続的なプログラムの実行が実現でき、従来のようなキャッシュのフラッシュから新規データのアクセスまでのCPUのオーバーヘッドが無くなり、CPUの実行速度の向上を図ることができる。
また、SDRAM上のプログラム実行速度の向上により、従来内蔵SRAM上で実行していたプログラムをSDRAM上で実行可能となり、延いては内蔵SRAMの削減(削除)も可能となることにより、チップコストを削減することができ、より安価で性能のよいディスク装置の提供が可能となる。
以下に、本発明の実施形態について、図面を参照しながら説明する。
図1(a) は、第1の実施の形態におけるハード的に見た全体の回路構成を示す図であり、CPUとSDRAMとの間に2つのキャッシュメモリを並列に配置する構成を示している。また、図1(b) は、この構成におけるCPUのアドレスマッピングとSDRAM上のプログラムメモリ領域のアドレスとの関係を模式的に示している。尚、図1(b) には、図1(a) に示す2つのキャッシュメモリの図示を省略している。
図1(a) に示すように、本例では、CPU10とSDRAM11との間に配置されているキャッシュ・コントローラ(Cache Controller)12は、FiFO_1とFiFO_2の2つのキャッシュを備えている。
図1(a) の構成のみを見れば図7(a) の場合と同じように見えるが、本例の図1(a) の場合は図7(a) の場合と異なり、後述するようにFiFO_1はコントローラプログラム用であり、FiFO_2はサーボプログラム用に設定されている。
即ち、図1(b) に示すように、SDRAM11上のメモリ空間13には、たとえば00_0000から0F_FFFFまでにコントローラプログラムが配置され、10_0000から1F_FFFFまでにサーボプログラムが配置されていたとする。なお、20_0000から上は、ホストとのデータの遣り取りをする際の通常のデータバッファ領域である。
これに対して、CPU10側のアドレスマッピングでは、上記のコントローラプログラムとサーボプログラムの2つのプログラムに対し、アクセス空間14の1000_0000から1FFF_FFFFまでのアクセスウインドウからFiFO_1を介してSDRAM11のコントローラプログラムにアクセスし、2000_0000から2FFF_FFFFまでのアクセスウインドウから、FiFO_2を介してサーボプログラムにアクセスする。
即ち、2つのFiFO_1とFiFO_2を、アクセスウインドウ上からサーボ用とコントローラ用に2つに分けて、コントローラプログラムとサーボプログラムの2つのプログラムに対し、独立にアクセスを行う。
このように、本例では、CPU10から見たSDRAM11のメモリ空間13に対するアクセス空間14を2重化し、各々のタスクに対応するFiFO_1とFiFO_2の2つの独立のキャッシュメモリを持つようにしている。これにより、2つのプログラムへのアクセスの高速化が実現される。
図2は、上記の図1(a) および図1(b) に示す構成における処理のタイミングチャートを示す図であり、上から、a:タスク切り替え、b:コントローラ制御用キャッシュ動作、c:サーボ制御用キャッシュ動作、d:CPU実行動作、のタイミングを示している。
前述の図1(a),(b) の構成において、電源投入後においては、2つのキャッシュメモリのFiFO_1とFiFO_2とはクリア状態であるので、初めのアクセスにおいては、コントローラ制御を行うために図2のdに示すC0〜C3で示されるコントローラプログラムを、図1(b) に示すアクセス空間14のアクセスウインドウ1000_0000から1FFF_FFFFに対応して配置されるキャッシュメモリのFiFO_1に、図2のbに示すように読み込むまでの間、従来と同様な待ちの問題が発生する。
同様に、次にサーボ制御を行うために図2のdに示すS0〜S3で示すサーボプログラムを、図1(b) に示すアクセス空間14のアクセスウインドウ2000_0000から2FFF_FFFFに対応して配置されるキャッシュメモリのFiFO_2に、図2のcに示すように読み込むまでの間、この場合も従来と同様な待ちの問題が発生する。
しかし、その後においては、上記の2回のキャッシュ動作によって、C0〜C3で示されるコントローラプログラムはFiFO_1に読み込まれて保持されており、S0〜S3で示されるサーボプログラムも、FiFO_2に読み込まれて保持されている。
図2のタイミングチャートは、上記の2回のキャッシュ動作が行われた以降のタイミングチャートを示している。
CPU10は、データの読み書きの際には、上記のコントローラ制御のタスクとサーボ制御のタスクを交互に繰り返すので、最初にコントローラ制御のタスクとサーボ制御のタスクを行った後は、図1(a) のCPU10は、図2のdに示すように、コントローラ制御のタスクC0〜C3を実行した後、待ち時間無しに、直ちにFiFO_2のサーボプログラムを図2の矢印aに示すようにキャッシュヒットしてサーボ制御のタスクS0〜S3を実行することができる。
さらに、図2のdに示すように、上記のサーボ制御のタスクS0〜S3を実行した後は、CPU10は、この場合も、最初にFiFO_1に読み込まれたまま保持されているC0〜C3で示されるコントローラプログラムを矢印bに示すようにキャッシュヒットして、待ち時間無しに、直ちにコントローラ制御のタスクC0〜C3を実行することができる。そして、これが交互に繰り返される。
ところで、上記のように独立に動作するプログラムとしては、上記の他にリオーダリングプログラムがある。このリオーダリングプログラムは、バッファ上に入ってくるデータを順番に整列をさせるように制御するプログラムであり、これをバックグランドで動作させる構成のものが多い。
このリオーダリングプログラムのように別個に動作するプログラムがある場合には、これも上記のように独立のキャッシュメモリに割り当てて、これをCPUが読み込むようにすると、この場合も、CPUの処理動作の速度を向上させることができる。これを第2の実施の形態として,以下に説明する。
図3(a) は、第2の実施の形態におけるハード的に見た全体の回路構成を示す図であり、CPUとSDRAMとの間に3つのキャッシュメモリを並列に配置する構成を示している。図3(b) は、この構成におけるCPUのアドレスマッピングを示す図であり、CPU上のアドレスウインドウとSDRAM上のプログラムメモリ領域のアドレスとの関係を模式的に示している。尚、この場合も図3(b) には、図3(a) に示す3つのキャッシュメモリの図示を省略している。
図3(a) に示すように、本例では、CPU10とSDRAM11との間に配置されているキャッシュ・コントローラ(Cache Controller)15は、FiFO_1、FiFO_2およびFiFO_3の3つのキャッシュメモリを備えている。FiFO_1はコントローラプログラム用であり、FiFO_2はサーボプログラム用であり、そして、FiFO_3はリオーダリングプログラム用である。
図3(b) に示すように、本例ではSDRAM11上のメモリ空間13には、00_0000から0F_FFFFまでにコントローラプログラムが配置され、10_0000から1F_FFFFまでにサーボプログラムが配置され、20_0000から2F_FFFFまでにリオーダリングプログラムが配置されていたとする。なお、30_0000から上は、ホストとのデータの遣り取りをする際の通常のデータバッファ領域である。
このSDRAM11に対して、CPU10は、アクセス空間14の1000_0000から1FFF_FFFFまでのアクセスウインドウからFiFO_1を介してSDRAM11のコントローラプログラムにアクセスし、2000_0000から2FFF_FFFFまでのアクセスウインドウから、FiFO_2を介してサーボプログラムにアクセスし、そして、3000_0000から3FFF_FFFFまでのアクセスウインドウから、FiFO_3を介してリオーダリングプログラムにアクセスする。
即ち、CPU10は、3つのFiFO_1、FiFO_2、およびFiFO_3を、アクセスウインドウ上からサーボ用とコントローラ用とリオーダリング用の3つに分けて、コントローラプログラムとサーボプログラムとリオーダリングプログラムの3つのプログラムに対し、独立にアクセスを行う。
このように、本例の場合では、CPU10から見たSDRAM11のメモリ空間13に対するアクセス空間14を3重化し、この3重化されたメモリウインドウに対応する3つのキャッシュとしてFiFO_1、FiFO_2、FiFO_3を備え、これにより、3つの各々のタスクに対応するの3つの独立のキャッシュを持つようにしている。これにより3つのプログラムへのアクセスの高速化が実現される。
図4は、上記の図3(a) および図3(b) に示す構成における処理のタイミングチャートを示す図であり、上から、a:タスク切り替え、b:コントローラ制御用キャッシュ動作、c:リオーダリング制御用キャッシュ動作、d:サーボ制御用キャッシュ動作、そして、e:CPU実行動作、のタイミングを示している。
この構成において、電源投入後においては、3つのキャッシュメモリのFiFO_1、FiFO_2、およびFiFO_3は、それぞれクリア状態であるので、図4のaに示すように3つのタスクを切り替えながら処理を実行していくに際して、コントローラ制御、次のリオーダリング制御、そして3番目のサーボ制御のそれぞれ初めのアクセスにおいては、前述の図1(a),(b) の構成のFiFOが2つの場合と同様に、従来と同様な時間待ちの問題が発生する。
しかし、その後は、図4のbおよびeでC0〜C3として示されるコントローラプログラム(またはタスク)はアクセスウインドウ1000_0000から1FFF_FFFFに対応して配置されているキャッシュメモリのFiFO_1内に読み込まれてデータとして保持されている。
また、図4のbおよびeでR0〜Rlとして示されるリオーダリングプログラム(またはタスク)は、アクセスウインドウ3000_0000から3FFF_FFFFに対応して配置されているキャッシュメモリのFiFO_3内に読み込まれてデータとして保持されている。
さらに、図4のdおよびeでS0〜S3として示されるサーボプログラム(またはタスク)も、アクセスウインドウ2000_0000から2FFF_FFFFに対応して配置されているキャッシュメモリのFiFO_2に、すでに読み込まれて保持されている。
したがって、CPU10のタスクが上記最初のサーボ制御のタスクから二回目からのコントローラ制御タスクに切り替わって、コントローラプログラムを実行しようとしたとき、キャッシュヒット状態となり、CPU10は待ち時間無しにプログラムデータを受け取って、直ちにコントローラ制御のタスクC0〜C3を実行することが可能となる。図4のタイミングチャートは、この二回目から以降のタイミングチャートを示している。
すなわち図4のaに示すように、二回目のコントローラ制御のタスクから次にリオーダ制御にタスクが切り替わって、リオーダリングプログラムを実行しようとした場合は、図4のc、eの矢印cで示すようにキャッシュヒット状態となり、CPU10は待ち時間無しにプログラムデータを受け取って、eに示すように直ちにリオーダリング制御のタスクR0〜R3を実行することが可能となる。
また、したがって、CPU10がサーボプログラムを実行しようとした場合は、この場合もキャッシュヒット状態となり、図4のd、eの矢印dで示すように、CPU10は待ち時間無しにプログラムデータを受け取って、eに示すように直ちにサーボ制御のタスクS0〜S3を実行することが可能となる。
これは、サーボ制御からコントローラ制御、再びコントローラ制御からリオーだリング制御へとタスクが切り替わる際も、図4の矢印e、f、g、・・・に示すようにキャッシュヒット状態となるため、上記と同じように待ち時間無しのタスク切り替えが順次実行されていく。
このように、3つのプログラムに対してキャッシュヒットを繰り返して、待ち時間無しに、直ちにタスクを切り替えながら高速に処理を実行していくことができる。
尚、上記の説明では、アドレスのRAS/CASの挿入タイミングを示していないが、RAS/CASの挿入クロックは一般に7〜10サイクルである。CPUは通常、内蔵のSRAMで動作しており、この場合1サイクルで1つのデータの受け渡しを行うが、たとえばFiFOに読み込むプログラムが16命令(32ワード)であるとすると、データの受け渡しに要するサイクル数に比較してRAS/CASの挿入のサイクル数が、無視できるほどではないが、それでも遥かに短い。上記の説明でRAS/CASの挿入タイミングを示さなかったのは、RAS/CASの挿入タイミングを並示すると図面と説明が煩雑になるのと、そのこと自体が本発明の要部ではないことから省略したものである。
また、一般に、キャッシュヒットの確率は、CPUの動作速度、バッファのアビトレーション、SDRAMの動作速度、キャッシュのFiFOサイズなどのハード要因によって異なってくる。また、プログラムの作り方によっても変わってくる。
したがって、上記本発明の構成によるCPUの処理速度の高速化は、一定した値で示すことはできないが、上記のCPUの動作速度、バッファのアビトレーション、SDRAMの動作速度、キャッシュのFiFOサイズ、さらにはプログラムの作り方、いずれの条件の場合でも、従来のアクセス方式を採用した場合と比較した場合、本発明のアクセス方式によって処理動作が向上することは間違いない。
すなわち、本発明の構成においては、常にFiFOの深さ分のCPUのオーバーヘッドを削減することが可能となる。例えば、単純に見積って、SDRAMのアクセスが100MHzで動作した場合(Address,RAS/CASの挿入時間含まず)、キャッシュのFiFOが8ワードとすると、タスクの切り替えごとに10ns×8ワード分の時間の短縮が可能となる。
このように、本発明によれば、プログラムの実行(タスク)に応じて、キャッシュメモリの使用用途を考慮し、タスクの種類に応じて独立した2個以上のキャッシュメモリを設けることにより、例えばコントローラ制御プログラムとサーボ制御プログラムへの独立したアクセスを可能とし、この場合、各々のキャッシュメモリにおいて前回キャッシュしたデータが保存されていることから、前回のアクセス時のプログラムがキャッシュ上から消失することがなく、継続的なプログラムの実行が実現でき、従来のようなキャッシュメモリのフラッシュから新規データのアクセスまでのCPUのオーバーヘッドが無くなり、CPUの実行速度の向上を図ることができる。
また、本発明のSDRAM上のプログラム実行速度の向上により、従来内蔵SRAM上で実行していたプログラムをSDRAM上で実行可能となり、延いては内蔵SRAMの削減(削除)が可能となり、チップコストの削減に貢献する。
以上のように本発明の磁気ディスク装置のキャッシュメモリアクセス方法は、2つ以上のキャッシュメモリにより2つ以上のプログラムを高速に切り換えてCPUのオーバーヘッドを可及的に解消し処理速度を向上させるものであり、本発明は、磁気ディスク装置のキャッシュメモリをアクセスする構成を用いる全ての産業において利用することが可能である。
(a) は第1の実施の形態におけるハード的に見た全体の回路構成を示しCPUとSDRAMとの間に2つのキャッシュメモリを並列に配置する構成を示す図、(b) はこの構成におけるCPUのアドレスマッピングとSDRAM上のプログラムメモリ領域のアドレスとの関係を模式的に示す図である。
図1(a) 及び図1(b) に示す構成における処理のタイミングチャートを示す図である。
(a) は第2の実施の形態におけるハード的に見た全体の回路構成を示しCPUとSDRAMとの間に3つのキャッシュメモリを並列に配置する構成を示す図、(b) はこの構成におけるCPUのアドレスマッピングとSDRAM上のプログラムメモリ領域のアドレスとの関係を模式的に示す図である。
図3(a) 及び図3(b) に示す構成における処理のタイミングチャートを示す図である。
(a) は従来のCPUとSDRAMの間に1個のキャッシュメモリを配置した例を示す図、(b) はその動作タイムチャートを示す図である。
従来の縦に一次キャッシュ、二次キャッシュの2つのキャッシュメモリを配列する縦列型の構成を示す図である。
(a) は従来の並列に2つのキャッシュメモリを配置する並列型の構成を示す図、(b) はこの構成におけるCPU上のアドレスウインドウとSDRAM上のメモリマッピングとの関係を模式的に示す図である。
符号の説明
1 CPU(central processing unit)
2 SDRAM(Synchronous Dinamic Random Access Memory)
3 キャッシュメモリ:FIFO(first-in first-out)
4 キャッシュ・コントローラ(Cache Controller)4
5 一次キャッシュ
6 二次キャッシュ
7、8 CacheContoller
10 CPU
11 SDRAM
12、15 キャッシュ・コントローラ(Cache Controller)
13 メモリ空間
14 アクセス空間