(57)【要約】  【課題】  複数のタスクを並行処理するマイクロプロセッサ、キャッシュメモリ及びメインメモリを備えたコンピュータシステムにおいて、あるタスクの処理によって、別のタスクのキャッシュヒット率が低下する可能性をなくすことを目的とする。  【解決手段】  キャッシュ制御装置１は、マイクロプロセッサが並行処理する各タスクとキャッシュメモリ２のメモリ領域を分割した各領域とを対応付けて管理する領域管理部１２と、マイクロプロセッサのあるタスクの処理過程において、マイクロプロセッサから送られてきたアドレスを受け付けて分解するアドレス分解部１４と、アドレスの分解によって生成したタグがキャッシュディレクトリ１７において対応付けて記録されていない場合、メインメモリから、受け付けたアドレスに存在するデータを含むブロック単位のデータ群を取得し、タスクと対応付けられている領域にそのデータ群を格納するキャッシング部とを備える。  【選択図】  図２
2004178571.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを並行処理するマイクロプロセッサ、キャッシュメモリ及びメインメモリを備えたコンピュータシステムにおいて、キャッシュメモリを制御するキャッシュ制御装置であって、
前記各タスクと前記キャッシュメモリのメモリ領域を分割した各領域とを対応付けて管理する領域管理手段と、
前記マイクロプロセッサからアクセス対象のデータが存在する前記メインメモリのアドレスを受け付けるアドレス受付手段と、
あるタスクの処理過程において前記アドレスを受け付けたときに、当該アドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから当該アドレスに存在するデータを含むデータ群を取得し、当該タスクと対応付けられている領域に格納するキャッシング手段とを備える
ことを特徴とするキャッシュ制御装置。
【請求項２】
前記領域管理手段は、前記マイクロプロセッサによって並行処理されているタスクの数に応じて前記キャッシュメモリのメモリ領域を複数の領域に分割し、各領域と各タスクとを対応付けて管理することを特徴とする請求項１記載のキャッシュ制御装置。
【請求項３】
前記領域管理手段は、前記マイクロプロセッサによって並行処理されているタスクの数の情報と各タスクの処理に必要とされるキャッシュメモリサイズの情報とを受け付けて、係る情報に基づいて前記キャッシュメモリのメモリ領域を分割し、分割された各領域と各タスクとを対応付けて管理することを特徴とする請求項２記載のキャッシュ制御装置。
【請求項４】
前記キャッシュ制御装置は、
前記マイクロプロセッサが処理中のタスクを識別するタスクＩＤを受け付けるタスクＩＤ受付手段を備え、
前記領域管理手段は、前記キャッシュメモリ内の各領域と、前記各タスクのタスクＩＤとを対応付けて管理し、
前記キャッシング手段は、前記タスクＩＤが受け付けたタスクＩＤが示すタスクの処理過程においてメインメモリから取得したデータ群を、当該タスクＩＤと対応付けられている領域に格納する
ことを特徴とする制球項３記載のキャッシュ制御装置。
【請求項５】
前記タスクＩＤは、識別対象のタスクであるプログラムが格納されているメモリアドレスであることを特徴とする請求項４記載のキャッシュ制御装置。
【請求項６】
前記タスクＩＤは、識別対象のタスクであるプログラムが格納されているメモリアドレスを変換したものであることを特徴とする請求項４記載のキャッシュ制御装置。
【請求項７】
前記マイクロプロセッサは、ＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ ）制御下でマルチタスク処理するものであり、
前記タスクＩＤは、前記ＯＳによって割り振られるプロセスＩＤであることを特徴とする請求項４記載のキャッシュ制御装置。
【請求項８】
前記キャッシュ制御装置は、
あるタスクの処理過程において前記アドレス受付手段により受け付けられたアドレスに存在するデータが前記キャッシュメモリに格納されているかどうかを、当該キャッシュメモリの全メモリ領域を確認して判定する判定手段を備えることを特徴とする請求項４記載のキャッシュ制御装置。
【請求項９】
前記キャッシュ制御装置は、
あるタスクの処理過程において前記アドレス受付手段により受け付けられたアドレスに存在するデータが前記キャッシュメモリに格納されているかどうかを、前記領域管理手段によって前記タスクと対応付けられている領域のみを確認して判定する判定手段を備えることを特徴とする請求項４記載のキャッシュ制御装置。
【請求項１０】
前記キャッシュメモリは、複数のウェイで構成されており、
前記領域管理手段によって各タスクと対応付けて管理されている各領域は、１又は複数のウェイを含む領域であることを特徴とする請求項４記載のキャッシュ制御装置。
【請求項１１】
前記各領域のうち複数のウェイを含む領域については、セットアソシエィティブ方式を用いてキャッシング制御を行うことを特徴とする請求項１０記載のキャッシュ制御装置。
【請求項１２】
前記領域管理手段は、前記キャッシュメモリのメモリ領域を特定領域と一般領域に分割し、前記マイクロプロセッサによって並行処理される複数のタスクのうち、特定のタスクを特定領域と対応付けて管理し、
前記キャッシング手段は、前記特定のタスクの処理過程において、前記アドレス受付手段により第１のアドレスを受け付けたときに、第１のアドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから第１のアドレスに存在するデータを含むデータ群を取得して、前記特定領域に格納し、前記特定のタスク以外のタスクの処理過程において、前記アドレス受付手段により第２のアドレスを受け付けたときに、第２のアドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから第２のアドレスに存在するデータを含むデータ群を取得して、前記一般領域に格納することを特徴とする請求項１記載のキャッシュ制御装置。
【請求項１３】
前記マイクロプロセッサは、第１のタスク、第２のタスク及び第３のタスクを並行処理し、
前記領域管理手段は、前記キャッシュメモリを第１の領域と第２の領域とに分割し、第１の領域と第１のタスク及び第２のタスクとを対応付け、第２の領域と第３のタスクとを対応付けて管理し、
前記キャッシング手段は、第１のタスク又は第２のタスクの処理過程において前記メインメモリから取得したデータ群を、第１の領域に格納し、第３のタスクの処理過程において前記メインメモリから取得したデータ群を、第２の領域に格納することを特徴とする請求項１記載のキャッシュ制御装置。
【請求項１４】
複数のタスクを並行処理するマイクロプロセッサ、キャッシュメモリ及びメインメモリを備えたコンピュータシステムにおいて用いられる、キャッシュ制御方法であって、
前記各タスクと前記キャッシュメモリのメモリ領域を分割した各領域とを対応付けて管理する領域管理ステップと、
前記マイクロプロセッサからアクセス対象のデータが存在する前記メインメモリのアドレスを受け付けるアドレス受付ステップと、
あるタスクの処理過程において前記アドレスを受け付けたときに、当該アドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから当該アドレスに存在するデータを含むデータ群を取得し、当該タスクと対応付けられている領域に格納するキャッシングステップとを含む
ことを特徴とするキャッシュ制御方法。
【請求項１５】
複数のタスクを並行処理するマイクロプロセッサ、キャッシュ制御装置、キャッシュメモリ及びメインメモリを備えたコンピュータシステムであって、
前記キャッシュ制御装置は、
前記各タスクと前記キャッシュメモリのメモリ領域を分割した各領域とを対応付けて管理する領域管理手段と、
前記マイクロプロセッサからアクセス対象のデータが存在する前記メインメモリのアドレスを受け付けるアドレス受付手段と、
あるタスクの処理過程において前記アドレスを受け付けたときに、当該アドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから当該アドレスに存在するデータを含むデータ群を取得し、当該タスクと対応付けられている領域に格納するキャッシング手段とを備える
ことを特徴とするコンピュータシステム。
【請求項１６】
前記コンピュータシステムは、
前記マイクロプロセッサが発したアクセス対象のデータが存在する前記メインメモリのアドレスを示す論理アドレスを物理アドレスに変換し、当該物理アドレスを前記アドレス受付手段に送るアドレス変換手段を備え、
前記キャッシュ制御装置は、
前記キャッシング手段により格納されたデータ群を、前記アドレス受付手段が、前記アドレス変換手段より受け付けた前記物理アドレスを用いて管理するデータ群管理手段を備える
ことを特徴とする請求項１５に記載のコンピュータシステム。
【請求項１７】
前記キャッシュ制御装置は、
前記キャッシング手段により格納されたデータ群を、前記アドレス受付手段が受け付けた、前記マイクロプロセッサが発したアクセス対象のデータが存在する前記メインメモリのアドレスを示す論理アドレスを用いて管理するデータ群管理手段を備え、
前記コンピュータシステムは、
前記キャッシュ制御装置から発せられたアクセス対象のデータが存在するメインメモリのアドレスを示す論理アドレスを物理アドレスに変換し、当該物理アドレスを前記メインメモリに送るアドレス変換手段を備える
ことを特徴とする請求項１５に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを制御するキャッシュ制御装置及びキャッシュ制御方法に関する。
【背景技術】
【０００２】
現在の主なコンピュータシステムは、いくつかの記憶装置を階層化して用いている。これは、アクセス速度は速いがコストの高い記憶装置と、アクセス速度は遅いがコストの安い記憶装置とを組み合わせて用いることで、擬似的に高速で大容量、且つコストの安い記憶システムを得ることを目的としている。
例えば、一般的なパソコンでは、マイクロプロセッサ内にあるレジスタ、キャッシュメモリ、メインメモリ、ハードディスクといった各記憶装置を、階層化して用いている。
【０００３】
キャッシュメモリは、メインメモリよりアクセス速度が高速なメモリであり、キャッシュメモリへのデータの読み出し及び書き込みといったアクセス制御はキャッシュ制御装置によってなされる。
キャッシュ制御装置は、マイクロプロセッサからアクセス要求されたデータがキャッシュメモリに格納されていなければ、当該データを含む、連続したアドレスに格納されているデータ群をメインメモリから取得して、キャッシュメモリに格納する。
【０００４】
メインメモリからキャッシュメモリへのデータ転送をキャッシングと呼び、その転送単位は、キャッシュメモリの記憶単位であるライン（又はブロックともいう。）である。
また、マイクロプロセッサがアクセス要求するデータが格納されていないためアクセスに失敗することをキャッシュミスと呼ぶ。
キャッシュミスが起こると、キャッシュ制御装置は、メインメモリから要求されたデータを含むデータ群をライン単位でキャッシングするが、その間、マイクロプロセッサはキャッシングが終わるまで待ち状態となる。
【０００５】
反対に、マイクロプロセッサがアクセス要求するデータがキャッシュメモリに格納されていて、アクセスに成功することをキャッシュヒットと呼び、キャッシュヒットした回数を総アクセス回数で割った値をキャッシュヒット率と呼ぶ。
マイクロプロセッサが処理するプログラムのメモリアクセスパターンには、アクセスされたメインメモリアドレスの近傍アドレスが、近い将来にアクセスされる確率が高いことを示す空間的局所性と、アクセスされたメインメモリアドレスが、近い将来に再びアクセスされる確率が高いことを示す時間的局所性の２つの性質があるので、キャッシュミスによってライン単位でキャッシングしたデータ群は、近い将来にアクセスされる可能性が高いと言える。
【０００６】
キャッシングされたライン単位のデータ群は、所定のキャッシュ制御方法（マッピング方式ともいう。）に基づいて、キャッシュメモリ内の指定された場所に格納される。
主なキャッシュ制御方法として、フルアソシエィティブ方式、ダイレクトマッピング方式、セットアソシエィティブ方式の３つが挙げられ、これらのキャッシュ制御方法については、下記の非特許文献に詳しく説明されている。
【０００７】
なお、フルアソシエィティブ方式は、キャッシュメモリ上に空いている場所があれば、どこでも記憶してもよい方式であり、最もキャッシュメモリの使用効率が高いものであるが、比較器を多数備える必要があるため、一般的にはあまり用いられていない。
【非特許文献１】斎藤忠夫・大森健児共著「現代  計算機アーキテクチャ原理」オーム社出版、平成６年４月１０日、ｐ１１２
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、タスクＡとタスクＢを並行処理するコンピュータシステムにおいて、ダイレクトマッピング方式又はセットアソシエィティブ方式を用いてキャッシングを行う場合、タスクＡの処理によりキャッシングされたデータ群Ａが格納されている場所に、タスクＢの処理によりキャッシングされたデータ群Ｂが格納されることにより、データ群Ａが上書き消去されることがある。
【０００９】
タスクＡのアクセス対象となるデータがデータ群Ｂに含まれている可能性は低いため、この上書きによって、タスクＡの処理におけるキャッシュヒット率が低下する可能性が高まるという問題が発生する。
本発明は、上記問題を解決するべくなされたものであり、複数のタスクを並行処理するコンピュータシステムにおいて、あるタスクの処理によって、別のタスクのキャッシュヒット率が低下する可能性をなくすべく、新たなキャッシュ制御方法を用いてキャッシュメモリを制御するキャッシュ制御装置及び当該キャッシュ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明に係るキャッシュ制御装置は、複数のタスクを並行処理するマイクロプロセッサ、キャッシュメモリ及びメインメモリを備えたコンピュータシステムにおいて、キャッシュメモリを制御するキャッシュ制御装置であって、前記各タスクと前記キャッシュメモリのメモリ領域を分割した各領域とを対応付けて管理する領域管理手段と、前記マイクロプロセッサからアクセス対象のデータが存在する前記メインメモリのアドレスを受け付けるアドレス受付手段と、あるタスクの処理過程において前記アドレスを受け付けたときに、当該アドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから当該アドレスに存在するデータを含むデータ群を取得し、当該タスクと対応付けられている領域に格納するキャッシング手段とを備えることを特徴とする。
【発明の効果】
【００１１】
上記構成により、複数のタスクを並行処理するコンピュータシステムに上記キャッシュ制御装置を備えることにより、あるタスク（第１のタスクとする。）の処理によってキャッシングされたデータ群は第１のタスクと対応付けられている領域に格納され、別のタスク（第２のタスクとする。）の処理によってキャッシングされたデータ群は第２のタスクと対応付けられている領域に格納されるので、従来のキャッシュ制御方法において生じていた、第１のタスク処理によってキャッシングされたデータ群が、第２のタスク処理によってキャッシングされたデータ群によって上書きされるという問題を解決することができる。すなわち、第２のタスク処理によって、第１のタスク処理におけるキャッシュヒット率が低下する可能性をなくすことができる。
【００１２】
また、前記領域管理手段は、前記マイクロプロセッサによって並行処理されているタスクの数に応じて前記キャッシュメモリのメモリ領域を複数の領域に分割し、各領域と各タスクとを対応付けて管理することとしてもよい。
この構成により、マイクロプロセッサによって並行処理されているタスクの数に応じて、キャッシュメモリを分割して各タスクと各領域とを対応付けて管理することができる。
【００１３】
また、前記領域管理手段は、前記マイクロプロセッサによって並行処理されているタスクの数の情報と各タスクの処理に必要とされるキャッシュメモリサイズの情報とを受け付けて、係る情報に基づいて前記キャッシュメモリのメモリ領域を分割し、分割された各領域と各タスクとを対応付けて管理することとしてもよい。
この構成により、各タスクの処理において必要とされるキャッシュメモリサイズが確保することができる。例えば、高速アクセスを必要としないタスクには、割り当てるキャッシュサイズを小さくし、高速アクセスを必要とするタスクには、割り当てるキャッシュサイズを大きくするといった調整が可能である。
【００１４】
また、前記キャッシュ制御装置は、前記マイクロプロセッサが処理中のタスクを識別するタスクＩＤを受け付けるタスクＩＤ受付手段を備え、前記領域管理手段は、前記キャッシュメモリ内の各領域と、前記各タスクのタスクＩＤとを対応付けて管理し、前記キャッシング手段は、前記タスクＩＤが受け付けたタスクＩＤが示すタスクの処理過程においてメインメモリから取得したデータ群を、当該タスクＩＤと対応付けられている領域に格納することとしてもよい。
【００１５】
ここで、タスクＩＤは、マイクロプロセッサから受け付けてもよいし、タスク管理している他のハードウェアから受け付けてもよい。
また、前記タスクＩＤは、識別対象のタスクであるプログラムが格納されているメモリアドレスであるとしてもよいし、前記タスクＩＤは、識別対象のタスクであるプログラムが格納されているメモリアドレスを変換したものであるとしてもよい。
【００１６】
また、前記マイクロプロセッサは、ＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ ）制御下でマルチタスク処理するものであり、前記タスクＩＤは、前記ＯＳによって割り振られるプロセスＩＤであるとしてもよい。
また、前記キャッシュ制御装置は、あるタスクの処理過程において前記アドレス受付手段により受け付けられたアドレスに存在するデータが前記キャッシュメモリに格納されているかどうかを、当該キャッシュメモリの全メモリ領域を確認して判定する判定手段を備えることとしてもよい。
【００１７】
また、前記キャッシュ制御装置は、あるタスクの処理過程において前記アドレス受付手段により受け付けられたアドレスに存在するデータが前記キャッシュメモリに格納されているかどうかを、前記領域管理手段によって前記タスクと対応付けられている領域のみを確認して判定する判定手段を備えることとしてもよい。
この構成により、キャッシュメモリ内に格納されているデータ群を素早く検出することができる。
【００１８】
また、  前記キャッシュメモリは、複数のウェイで構成されており、前記領域管理手段によって各タスクと対応付けて管理されている各領域は、１又は複数のウェイを含む領域であるとしてもよい。
また、前記各領域のうち複数のウェイを含む領域については、セットアソシエィティブ方式を用いてキャッシング制御を行うこととしてもよい。
【００１９】
また、前記領域管理手段は、前記キャッシュメモリのメモリ領域を特定領域と一般領域に分割し、前記マイクロプロセッサによって並行処理される複数のタスクのうち、特定のタスクを特定領域と対応付けて管理し、前記キャッシング手段は、前記特定のタスクの処理過程において、前記アドレス受付手段により第１のアドレスを受け付けたときに、第１のアドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから第１のアドレスに存在するデータを含むデータ群を取得して、前記特定領域に格納し、前記特定のタスク以外のタスクの処理過程において、前記アドレス受付手段により第２のアドレスを受け付けたときに、第２のアドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから第２のアドレスに存在するデータを含むデータ群を取得して、前記一般領域に格納するとしてもよい。
【００２０】
この構成により、例えば、リアルタイム性を保証する必要性のあるアプリケーションプログラムを特定のタスクであるとして、当該タスクと特定領域とを対応付けて管理することにより、特定のタスクの処理過程においてキャッシングされたデータ群は、他のタスク処理においてキャッシングされたデータ群によって上書きされる恐れはないので、当該タスク処理におけるキャッシュヒット率が低下する可能性をなくすことができ、リアルタイム性を保証することができる。
【００２１】
また、前記マイクロプロセッサは、第１のタスク、第２のタスク及び第３のタスクを並行処理し、前記領域管理手段は、前記キャッシュメモリを第１の領域と第２の領域とに分割し、第１の領域と第１のタスク及び第２のタスクとを対応付け、第２の領域と第３のタスクとを対応付けて管理し、前記キャッシング手段は、第１のタスク又は第２のタスクの処理過程において前記メインメモリから取得したデータ群を、第１の領域に格納し、第３のタスクの処理過程において前記メインメモリから取得したデータ群を、第２の領域に格納するとしてもよい。
【００２２】
この構成により、第１のタスクと第２のタスクが、同じ局所性のアクセスパターンである場合に、キャッシュヒット率を高めることができる。
また、本発明に係るキャッシュ制御方法は、複数のタスクを並行処理するマイクロプロセッサ、キャッシュメモリ及びメインメモリを備えたコンピュータシステムにおいて用いられるキャッシュ制御方法であって、前記各タスクと前記キャッシュメモリのメモリ領域を分割した各領域とを対応付けて管理する領域管理ステップと、前記マイクロプロセッサからアクセス対象のデータが存在する前記メインメモリのアドレスを受け付けるアドレス受付ステップと、あるタスクの処理過程において前記アドレスを受け付けたときに、当該アドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから当該アドレスに存在するデータを含むデータ群を取得し、当該タスクと対応付けられている領域に格納するキャッシングステップとを含むことを特徴とする。
【００２３】
また、本発明に係るコンピュータシステムは、複数のタスクを並行処理するマイクロプロセッサ、キャッシュ制御装置、キャッシュメモリ及びメインメモリを備えたコンピュータシステムであって、前記キャッシュ制御装置は、前記各タスクと前記キャッシュメモリのメモリ領域を分割した各領域とを対応付けて管理する領域管理手段と、前記マイクロプロセッサからアクセス対象のデータが存在する前記メインメモリのアドレスを受け付けるアドレス受付手段と、あるタスクの処理過程において前記アドレスを受け付けたときに、当該アドレスに存在するデータが前記キャッシュメモリに格納されていない場合、前記メインメモリから当該アドレスに存在するデータを含むデータ群を取得し、当該タスクと対応付けられている領域に格納するキャッシング手段とを備えることを特徴とする。
【００２４】
また、前記コンピュータシステムは、前記マイクロプロセッサが発したアクセス対象のデータが存在する前記メインメモリのアドレスを示す論理アドレスを物理アドレスに変換し、当該物理アドレスを前記アドレス受付手段に送るアドレス変換手段を備え、前記キャッシュ制御装置は、前記キャッシング手段により格納されたデータ群を、前記アドレス受付手段が、前記アドレス変換手段より受け付けた前記物理アドレスを用いて管理するデータ群管理手段を備えることとしてもよい。
【００２５】
また、前記キャッシュ制御装置は、前記キャッシング手段により格納されたデータ群を、前記アドレス受付手段が受け付けた、前記マイクロプロセッサが発したアクセス対象のデータが存在する前記メインメモリのアドレスを示す論理アドレスを用いて管理するデータ群管理手段を備え、前記コンピュータシステムは、前記キャッシュ制御装置から発せられたアクセス対象のデータが存在するメインメモリのアドレスを示す論理アドレスを物理アドレスに変換し、当該物理アドレスを前記メインメモリに送るアドレス変換手段を備えることとしてもよい。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の一実施形態であるキャッシュ制御装置について、図面を用いて説明する。
＜コンピュータシステムの構成＞
図１は、本発明に係るキャッシュ制御装置を含むコンピュータシステムの構成を示す図である。
【００２７】
本システムは、キャッシュ制御装置１、キャッシュメモリ２、マイクロプロセッサ３、メインメモリ４、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）５、ハードディスク（図示せず）等を備える。なお、本発明の特徴を説明する上で必要のない装置については、説明及び図示を省略する。
マイクロプロセッサ３は、プログラムの処理及び各種演算を行なうデバイスであり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）制御下において、複数のプログラムをタスクとしてマルチタスク処理を行う。
【００２８】
また、マイクロプロセッサ３は、処理するタスクが切り替ると、タスクＩＤ信号線１０１を介して、現在処理されるタスクを識別するタスクＩＤをキャッシュ制御装置１に送る。
タスクＩＤは、タスクとして処理されるプログラムが格納されているメインメモリアドレスを示す論理アドレスを変換して生成する。
【００２９】
また、マイクロプロセッサ３は、メモリアクセス信号線１０２を介してアクセス要求するメインメモリアドレスを示す論理アドレスをキャッシュ制御装置１に送り、当該アクセス要求がリードアクセスの場合、要求したメインメモリアドレスに存在するデータをキャッシュ制御装置１からデータ信号線１０３を介して受け取る。
更に、マイクロプロセッサ３は、ＯＳ等のシステム管理を行うプログラムを処理した際に、処理するタスクの数、各タスクを識別するタスクＩＤ、各タスクが必要とするキャッシュメモリサイズ等を含む領域指定情報を領域指定信号線１０６を介してキャッシュ制御装置１に送る。
【００３０】
キャッシュ制御装置１は、キャッシュメモリ２に対するデータアクセスを制御する装置であり、従来のキャッシュ制御装置とは異なる特徴として、マイクロプロセッサ３によってマルチタスク処理されている各タスクと、キャッシュメモリ２のメモリ領域を分割した各領域とを対応付けて管理し、あるタスクの実行過程においてキャッシングされたライン単位のデータ群を、当該タスクと対応付けられている領域に格納する点が挙げられる。
【００３１】
係る特徴を実現するキャッシュ制御装置１の機能構成については後で詳しく述べる。
キャッシュメモリ２は、メインメモリ４より高速にデータアクセスが可能な記憶媒体であり、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
ＭＭＵ５は、キャッシュ制御装置１からメモリアクセス信号線１０４を介して送られてきたメインメモリアドレスを示す論理アドレスを物理アドレスに変換する。
【００３２】
メインメモリ４は、キャッシュメモリ２よりアクセス速度が低速な記憶媒体であり、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。なお、メインメモリ４には、メインメモリ４に対するデータアクセスを制御するメモリコントローラが備わっている。
メモリコントローラは、メモリアクセス信号線１０４を介してキャッシュ制御装置１から送信されてきたメインメモリアドレス（物理アドレス）を受けると、当該アドレスを含む連続したアドレスに存在するデータ群をメインメモリ４から読み出して、データ信号１０５を介してキャッシュ制御装置１に当該データ群を送る。
＜キャッシュ制御装置の構成＞
次にキャッシュ制御装置１の構成について図面を用いて詳しく説明する。
【００３３】
図２は、キャッシュ制御装置１の機能構成を示す図である。
キャッシュ制御装置１は、タスクＩＤ入力レジスタ１１、領域管理部１２、アドレス分解部１４、キャッシュ内アドレス生成部１５、ｈｉｔ／ｍｉｓｓ判定部１６、キャッシュディレクトリ１７、キャッシング部１８、データアクセス部１９から成る。領域管理部１２は、領域決定部１３を含む。
【００３４】
領域管理部１２は、マイクロプロセッサ３から領域指定信号線１０６を介して送られてきた領域指定情報に基づいて、キャッシュメモリ２のメモリ領域を分割し、各領域とタスクＩＤとを対応付けて管理する。
図２に示す各領域情報には、マイクロプロセッサ３によって並行処理されている各タスクのタスクＩＤが記載されている。
【００３５】
タスクＩＤ入力レジスタ１１は、マイクロプロセッサ３からタスクＩＤ信号線１０１を介して送られてきたタスクＩＤを受け付け、領域管理部１２に送る。
タスクＩＤ入力レジスタ１１からタスクＩＤが送られてくると、領域管理部１２は、送られてきたタスクＩＤと各領域情報に記載されているタスクＩＤを比較器（ｃｍｐ）で比較する。送られてきたタスクＩＤと領域情報に記載されているタスクＩＤが一致した比較器は、領域を示す領域番号を領域決定部１３に送る。
【００３６】
領域決定部１３は、マイクロプロセッサ３から領域指定信号線１０６を介して送られてきた領域指定情報に基づいて領域管理テーブルを生成し、保持している。
図３は、領域管理テーブルの具体的な一例を示す図である。
領域管理テーブル２０は、領域番号、ベースアドレス及びサイズを組にして対応付けた表である。
【００３７】
領域番号は、割り当てられた各領域を識別する番号である。
ベースアドレスは、各領域の開始位置を示すキャッシュ内アドレスである。
サイズは、各領域の容量を示す値であり、値１が１ラインに相当する。
なお、１ラインを１６バイトとし、メインメモリの１アドレスには１バイト分のデータが格納されているものとする。
【００３８】
領域決定部１３は、領域管理部１２から送られてきた領域番号を受けて、領域管理表を参照し、当該領域番号と対応するベースアドレスをキャッシュ内アドレス生成部１５に、サイズをアドレス分解部１４に送る。
アドレス分解部１４は、マイクロプロセッサ３からメモリアクセス信号線１０２を介して送られてきたメインメモリアドレス（論理アドレス）を受け付けて、当該メインメモリアドレス（論理アドレス）を３つのフィールドに分解する。分解される各フィールドをタグ、インデックス、バイトセレクトと呼ぶことにする。
【００３９】
図４は、１６ビットで表されたメインメモリアドレス（論理アドレス）を分解する場合の３つのフィールドを示す図である。
タグは、キャッシュ内アドレス生成部１５によって生成されたキャッシュ内アドレスに格納されているデータ群が、マイクロプロセッサ３から要求されたデータを含むデータ群であるか否かを判別するのに用いられる。
【００４０】
インデックスは、キャッシュ内アドレスを生成するのに用いられる。
バイトセレクトは、ライン単位のデータ群の中から要求されたデータを選択するのに用いられる。
本実施の形態において１ラインは、１６個のデータであるので、メインメモリアドレス（論理アドレス）の下位４ビットをバイトセレクトとして用いる。
【００４１】
タグフィールドとインデックスフィールドそれぞれのフィールドサイズは、領域決定部１３から送られてくる領域のサイズに応じて変わる。
例えば、指定された領域のサイズが２５６ライン（２５６×１６バイト＝４０９６バイト）の場合、メインメモリアドレス（論理アドレス）の上位４ビットをタグフィールド、続く８ビットをインデックスフィールドとする。インデックスの８ビットで、指定された領域の２５６ラインを表す。
【００４２】
また、指定された領域のサイズが１２８ラインであれば、メインメモリアドレスの上位５ビットをタグフィールド、続く７ビットをインデックスフィールドとし、インデックスの７ビットで、指定された領域の１２８ラインを表す。
アドレス分解部１４は、インデックスをキャッシュ内アドレス生成部１５に送り、タグをｈｉｔ／ｍｉｓｓ判定部１６に送り、バイトセレクトをデータアクセス部１９に送る。
【００４３】
キャッシュ内アドレス生成部１５は、領域決定部１３から送られてきたベースアドレスと、アドレス分解部１４から送られてきたインデックスを加算して、ライン単位のデータ群を格納するキャッシュメモリのアドレスを示すキャッシュ内アドレスを生成する。生成されたキャッシュ内アドレスは、ｈｉｔ／ｍｉｓｓ判定部１６に送られる。
ｈｉｔ／ｍｉｓｓ判定部１６は、キャッシュディレクトリ１７を参照し、アドレス分解部１４から送られてきたタグが、当該キャッシュディレクトリ１７にキャッシュ内アドレスと対応付けて記録されているかどうかを確認して、キャッシュヒット又はキャッシュミスの判定を行う。キャッシュディレクトリ１７は、キャッシュ内アドレスとタグとを対応付けたテーブルである。
【００４４】
キャッシュヒットの判定である場合、ｈｉｔ／ｍｉｓｓ判定部１６は、アクセスするキャッシュ内アドレスをデータアクセス部１９に送る。
キャッシュミスの判定である場合、ｈｉｔ／ｍｉｓｓ判定部１６は、キャッシュ内アドレス生成部１５から送られてきたキャッシュ内アドレスと、アドレス分解部１４から送られてきたタグをキャッシング部１８に送る。
【００４５】
キャッシング部１８は、ｈｉｔ／ｍｉｓｓ判定部１６がキャッシュミス判定をした場合に、アドレス分解部１４が受け取ったメインメモリアドレス（論理アドレス）をメモリアクセス信号線１０４を介してＭＭＵ５に送る。ＭＭＵ５は論理アドレスを変換した物理アドレスをメインメモリ４に送る。
そして、キャッシング部１８は、データ信号線１０５を介してメインメモリ４から送られてきたライン単位のデータ群を取得して、ｈｉｔ／ｍｉｓｓ判定部１６から受けたキャッシュ内アドレスに格納し、キャッシュディレクトリ１７にタグとキャッシュ内アドレスとを対応付けて記録する。
【００４６】
データアクセス部１９は、ｈｉｔ／ｍｉｓｓ判定部１６からキャッシュ内アドレスを、アドレス分解部１４からバイトセレクトを受けて、当該キャッシュ内アドレスに格納されているデータ群からバイトセレクトを用いて、要求されたデータのみを選択してデータの書き込み又は読み出しを行う。
リードアクセスである場合、該当データを読み出して、データ信号線１０３を介してマイクロプロセッサ３に送る。
【００４７】
＜動作＞
次に、キャッシュ制御装置１が、マイクロプロセッサ３からリードアクセスを受けて行うキャッシュ制御処理について説明する。
図５は、キャッシュ制御装置１が、マイクロプロセッサ３からリードアクセスを受けて行うキャッシュ制御処理を説明するためのフローチャートである。
【００４８】
まず、タスクＩＤ入力レジスタ１１が、マイクロプロセッサ３から送られてきたタスクＩＤを受け付け（ステップＳ１）、領域管理部１２に送る。
領域管理部１２は、各領域情報に記載されているタスクＩＤと、タスクＩＤ入力レジスタ１１から送られてきたタスクＩＤとを、比較器（ｃｍｐ）で比較して領域番号を領域決定部１３に送る。
【００４９】
領域決定部１３は、送られてきた領域番号を受けて、領域管理表を参照して領域を決定し（ステップＳ２）、当該領域番号と対応するベースアドレスをキャッシュ内アドレス生成部１５に、サイズをアドレス分解部１４に送る。
アドレス分解部１４は、マイクロプロセッサ３から送られてきたメインメモリアドレスを受け付けて（ステップＳ３）、タグ、インデックス、バイトセレクトに分解する。
【００５０】
続いて、キャッシュアドレス生成部１５において、インデックスと、ベースアドレスを加算することでキャッシュ内アドレスを生成する。タグとキャッシュ内アドレスは、ｈｉｔ／ｍｉｓｓ判定部１６に送られる。
ｈｉｔ／ｍｉｓｓ判定部１６は、キャッシュディレクトリ１７を参照して、送られてきたタグがキャッシュ内アドレスと対応付けて記録されているか否かを判定する（ステップＳ４）。
【００５１】
タグがキャッシュ内アドレスと対応付けて記録されている場合、すなわちキャッシュヒットの場合（ステップＳ４：ＨＩＴ）、ステップＳ８に進む。
タグがキャッシュ内アドレスと対応付けて記録されていない場合、すなわちキャッシュミスの場合（ステップＳ４：ＭＩＳＳ）、キャッシュ制御装置１は、メインメモリ４にデータ群の取得要求を行い（ステップＳ６）、メインメモリ４から送られてきたデータ群を、キャッシュ内アドレスに格納する（ステップＳ７）。また、キャッシュディレクトリ１７に、データ群を格納したキャッシュ内アドレスとタグとを対応付けて記録する。
【００５２】
ステップＳ８において、キャッシュ制御装置１は、要求されたデータをマイクロプロセッサ３に送出して、マイクロプロセッサ３から受けたリードアクセスにより行ったキャッシュ制御処理を終了する。
なお、ライトアクセスを受けた場合も、リードアクセスとほぼ同様のキャッシュ制御処理を行い、異なる点は、キャッシュメモリ２内のデータを読み出す代わりに、マイクロプロセッサ３から送られてきた書き込み用データをキャッシュメモリ２に書き込む点である。
【００５３】
＜変形例＞
次に上記実施の形態の変形例について説明する。
上記実施の形態で説明したキャッシュ制御装置１は、領域指定信号線１０６を介してマイクロプロセッサ３から領域指定情報を受け付け、並行処理される各タスクの数だけキャッシュメモリ２のメモリ領域を分割して、各タスクを識別するタスクＩＤと各領域とを対応付けて管理していたが、マイクロプロセッサ３から、特定のタスクを識別するタスクＩＤ及び当該タスクの処理に必要なキャッシュメモリサイズが含まれる領域指定情報を受け付けて、特定のタスクを識別するタスクＩＤを特定領域と対応付けて管理するようにしてもよい。
【００５４】
図７は、特定領域と一般領域とに分割して管理されているキャッシュメモリ２Ａを示す図である。
図２に示す領域管理部１２に含まれる領域情報は、本変形例の場合、特定領域情報のみが存在し、特定領域情報には、指定された特定のタスクを識別するタスクＩＤが記載されている。特定領域情報に記載されているタスクＩＤとタスクＩＤ入力レジスタ１１から送られてきたタスクＩＤとの一致、不一致を比較する比較器（ｃｍｐ）も１つだけである。それ以外の機能部については、上記実施形態で説明したキャッシュメモリ制御装置１と同様である。
【００５５】
この変形例におけるキャッシュ制御装置のキャッシュ制御処理について説明する。
図６は、変形例のキャッシュ制御装置１が行うキャッシュ制御処理を説明するためのフローチャートである。
まず、タスクＩＤ入力レジスタ１１が、マイクロプロセッサ３から送られてきたタスクＩＤを受け付け（ステップＳ１０）、領域管理部１２に送る。
【００５６】
領域管理部１２は、領域情報に記載されているタスクＩＤと、タスクＩＤ入力レジスタ１１から送られてきたタスクＩＤとを、比較器（ｃｍｐ）で比較し、一致すれば（ステップＳ１１：ＹＥＳ）、特定領域を示す領域番号を領域決定部１３に送り、図５に示すステップＳ３に進む。一致しなければ、（ステップＳ１１：ＮＯ）、一般領域を示す領域番号を領域決定部１３に送り、図５に示すステップＳ３に進む。ステップＳ３以降は、上記実施形態で説明したキャッシュ制御処理の動作と同様である。
【００５７】
特定領域と対応付けられるタスク（プログラム）は、例えば、リアルタイム性の保証を必要とするアプリケーションプログラム等である。
ここでいうリアルタイム性の保証とは、所定時間内に所定の処理を完了することを保証するという意味である。係るアプリケーションプログラムとして、映像や音声等のストリームデータの再生処理又は録画処理をするメディア処理アプリケーションプログラムが挙げられる。
【００５８】
このようなリアルタイム性の保証を必要とするアプリケーションプログラムには、予め当該プログラムがリアルタイム性の保証が必要である旨を示すフラグ情報及び必要なキャッシュメモリサイズ情報を含ませておき、マイクロプロセッサ３は、係るアプリケーションプログラムを１タスクとして、その他複数のタスクと合わせて並行処理する際に、フラグ情報を読み取ることで当該アプリケーションプログラムのタスクが特定のタスクであるとして、キャッシュ制御装置１に通知することができる。
＜補足＞
なお、本発明は上記実施の形態及び変形例に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【００５９】
（１）キャッシュメモリ２は、複数のウェイで構成されたものであってもよい。ウェイは、物理的又は論理的に独立しているメモリ領域の単位である。
上述した実施の形態の領域管理テーブル２０は、領域番号、ベースアドレス及びサイズを組にして対応付けていたが、本発明のキャッシュ制御装置は、領域番号をウェイ番号とし、タスクＩＤとウェイとを対応付けて領域管理をするものであってもよい。
【００６０】
図８は、各領域に複数のウェイが含まれる形で領域管理されたキャッシュメモリ２Ｂを示す図である。
複数のウェイを含む領域については、セットアソシエィティブ方式を用いてキャッシング制御を行うようにしてもよい。
（２）上記実施の形態において、キャッシュ制御装置１は、各領域と各タスクとの対応付け及び領域のサイズを、マイクロプロセッサ３から通知された領域指定情報に基づいて設定したが、他の外部装置から係る領域指定情報を受け付けて設定するものであってもよい。例えば、タスク管理を行うハードウェアから受け付けてもよい。
【００６１】
（３）本発明に係るキャッシュ制御装置は、マイクロプロセッサ又は他の外部装置から受けた領域指定情報に基づいて、動的に領域の生成及び消去が可能であるとしてもよい。
（４）上記実施の形態において、キャッシュ制御装置１は、マイクロプロセッサ３からタスクＩＤを受け付けて領域指定を行っていたが、マルチプロセッサや、複数のプロセッサからプロセッサＩＤを受け付けて領域指定を行ってもよいし、プロセッサＩＤとタスクＩＤを共に受け付けて領域指定を行ってもよい。
【００６２】
（５）上記実施の形態において、各領域と各タスクとの対応関係は１対１であるが、複数のタスクが、同じメインメモリアドレスに存在するデータをアクセスする確率が高い場合、１つの領域と複数のタスクとを対応付けて管理してもよい。
例えば、マイクロプロセッサ３が、タスクＡ、タスクＢ及びタスクＣを並行処理する場合、前記領域管理部１２は、マイクロプロセッサ３から通知された領域指定情報に基づいて、キャッシュメモリ２を２つの領域に分割して、第１の領域と、タスクＡを識別するタスクＩＤ及びタスクＢを識別するタスクＩＤと対応付け、また、第２の領域とタスクＣを識別するタスクＩＤとを対応付けて管理し、キャッシング部１８は、タスクＡ又はタスクＢの処理過程においてキャッシュミスがあった場合、キャッシングしたデータ群を第１の領域に格納し、タスクＣの処理過程においてキャッシュミスがあった場合、キャッシングしたデータ群を、第２の領域に格納するようにしてもよい。
【００６３】
（６）実施の形態において、ｈｉｔ／ｍｉｓｓ判定部１６は、キャッシュディレクトリ１７に記録されている全てのキャッシュ内アドレスとタグとを対応付けた情報を参照してキャッシュミス、キャッシュヒットの判定をしていたが、キャッシュディレクトリ１７に記録されている情報のうち、指定された領域内のキャッシュ内アドレスのみを参照するようにしてもよい。
【００６４】
（７）実施の形態において説明したコンピュータシステムにおいて、ＭＭＵ５は、キャッシュ制御装置１とメインメモリ４の間に備えられていたが、マイクロプロセッサ３とキャッシュ制御装置１との間に備えられていてもよい。これにより、キャッシュメモリ制御装置１は、キャッシングしたデータ群をＭＭＵによって変換されたメインメモリ４の物理アドレスに基づいて管理することができる。
【００６５】
（８）同一のアプリケーションプログラムが、複数の異なるタスクとして動作する場合は、ＯＳ又はタスク管理を行うハードウェアからタスク判別信号を受けて判別するようにしてもよい。
（９）上記実施の形態において、キャッシュ制御装置１がタスクＩＤ信号線１０１を介してマイクロプロセッサ３から受け付けるタスクＩＤは、タスクとして処理されるプログラムが格納されているメインメモリアドレスを示す論理アドレスそのものであってもよく、また、プログラムカウンタの値であってもよい。
【００６６】
（１０）上記実施の形態において、キャッシュ制御装置１とキャッシュメモリ２は、それぞれ単体のデバイスであるとして説明したが、本発明は、キャッシュ制御装置１の機能とキャッシュメモリ２の機能を含む１のデバイスであってもよく、更に、マイクロプロセッサ３の機能をも含む１のデバイスであってもよい。
（１１）上記実施の形態及び変形例のコンピュータシステムは、複数のタスクを時分割で並行処理していたが、複数のマイクロプロセッサ又は複数のタスクを同時処理することが可能なマルチプロセッサによって、複数のタスクを同時に並行処理するものであって、キャッシュメモリ２を共有して用いるものであってもよい。
【００６７】
（１２）上記実施の形態及び変形例のコンピュータシステムは、複数のタスクを並行処理する前に、その並行処理の状況下において、マイクロプロセッサ３が、リアルタイム性を保証する必要性のあるアプリケーションプログラムのリアルタイム性を十分に保証できるだけの処理能力を持つものかどうかを判定し、十分な処理能力を持たないと判定した場合に、上述したようなキャッシュ制御処理をキャッシュ制御装置１に行わせるものであってもよい。
【００６８】
また、リアルタイム性の保証が必要なアプリケーションプログラムは、係る判定を行うためのテストプログラムを含むものであってもよい。
（１３）上記変形例において、リアルタイム性を保証する必要性のあるアプリケーションプログラムには、リアルタイム性の保証が必要である旨を示すフラグ情報が含まれているとしたが、係るフラグ情報は、リアルタイム性の保証を要求する度合いを示す要求レベルを含むものであってもよい。
【００６９】
また、要求レベルが大きいフラグ情報を持つアプリケーションプログラムのタスクに、十分なキャッシュメモリ領域が割り当てられない場合、動的に他のタスクと対応付けられている領域のサイズを減らして、当該要求レベルが大きいフラグ情報を持つアプリケーションプログラムのタスクに割り当てるようにしてもよい。
（１４）上記変形例において、例えば、ディスプレイにウィンドウを表示させるアプリケーションプログラムであって、別のアプリケーションプログラムによって表示されているウィンドウより前面に表示されている場合に、その前面に表示されたウィンドウのアプリケーションプログラムをリアルタイム性を保証する必要性のあるアプリケーションプログラムとしてもよい。また、タスクとして処理される各アプリケーションプログラムの動作履歴を、ＯＳが管理して、Ａｃｔｉｖｅになっている頻度が多いものをリアルタイム性を保証する必要性のあるアプリケーションプログラムとしてもよい。
【００７０】
（１５）本発明は、上記実施の形態に示すキャッシュ制御方法であるとしてもよい。また、キャッシュ制御方法を実現する制御プログラムであるとしてもよいし、前記制御プログラムからなるデジタル信号であるとしてもよい。
（１６）本発明は、前記制御プログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリ等に記録したものとしてもよい。
【００７１】
（１７）本発明は、前記制御プログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
（１８）本発明は、前記制御プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記制御プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するものとしてもよい。
【産業上の利用可能性】
【００７２】
本発明に係るキャッシュ制御装置を、複数のタスクを並行処理するマイクロプロセッサ、キャッシュメモリ及びメインメモリを備えたコンピュータシステムに用いることにより、あるタスクの処理によって、別のタスクのキャッシュヒット率が低下する可能性をなくすことができるので、リアルタイム性の保証が必要とされるアプリケーションプログラムを含む複数のプログラムをマルチタスク処理するコンピュータシステムにおいて大変有用である。
【図面の簡単な説明】
【００７３】
【図１】本発明に係るキャッシュ制御装置を含むコンピュータシステムの構成を示す図である。
【図２】キャッシュ制御装置１の構成を示す図である。
【図３】領域管理テーブルの具体的な一例を示す図である。
【図４】１６ビットで表されたメインメモリアドレスを分解する場合の３つのフィールドを示す図である。
【図５】キャッシュ制御装置１が行うキャッシュ制御処理を説明するためのフローチャートである。
【図６】変形例のキャッシュ制御装置１が行うキャッシュ制御処理を説明するためのフローチャートである。
【図７】特定領域と一般領域とに分割して管理されているキャッシュメモリ２Ａを示す図である。
【図８】各領域に複数のウェイが含まれたキャッシュメモリ２Ｂを示す図である。
【符号の説明】
【００７４】
１  キャッシュ制御装置
２  キャッシュメモリ
３  マイクロプロセッサ
４  メインメモリ
５  ＭＭＵ
１１  タスクＩＤ入力レジスタ
１２  領域管理部
１３  領域決定部
１４  アドレス分解部
１５  キャッシュ内アドレス生成部
１６  ｈｉｔ／ｍｉｓｓ判定部  
１７  キャッシュディレクトリ
１８  キャッシング部
１９  データアクセス部
【図１】
2004178571.tif 000003
【図２】
2004178571.tif 000004
【図３】
2004178571.tif 000005
【図４】
2004178571.tif 000006
【図５】
2004178571.tif 000007
【図６】
2004178571.tif 000008
【図７】
2004178571.tif 000009
【図８】
2004178571.tif 000010