(57)【特許請求の範囲】
【請求項１】
物理アドレスによってキャッシュ上の格納位置が決定されるキャッシュをキャッシュ先とし、メモリ上の一定サイズの領域において論理アドレスと物理アドレスのマッピングの単位となるページ毎にキャッシュ上の格納位置をカラーＩＤで識別できるメモリシステムであって、
異なるカラーが割り当てられている複数の物理アドレスから、メモリ上の同一アドレスにアクセスできるように物理アドレス空間を構成し、
前記構成した前記物理アドレス空間上のページ（以下「物理ページ」という。）をマップしている論理アドレス空間上のページ（以下「論理ページ」という。）が、前記マップしている物理ページと同一のメモリ上のページ（以下「メモリページ」という。）にアクセスができ、かつ異なるカラーを持つ他の物理ページをマップするように変更するアドレス変更手段を備えることを特徴とするメモリシステム。
【請求項２】
前記物理アドレス空間上に、アドレスが連続する複数の物理ページが、アドレスが連続する複数のメモリページをマップする領域を複数備え、
前記物理アドレス空間の構成を、物理アドレス空間上のそれぞれの領域に対するアクセスに対して異なったアドレス変換をすることで異なるカラーの複数の物理アドレスからメモリ上の同一アドレスにアクセスできるようにすることを特徴とする請求項１に記載のメモリシステム。
【請求項３】
ページテーブルを変更する権限を有する指定元から指定された物理ページと同一のメモリページにアクセス可能な物理ページであって、かつ前記指定元から指定されたカラーを持つ物理ページを決定する移動先ページ決定手段と、
前記指定された移動元物理ページをマップしている論理ページが、前記指定された移動先物理ページをマップするように変更する物理ページ移動手段と、
を有するカラー変更手段を更に備えることを特徴とする請求項２に記載のメモリシステム。
【請求項４】
物理アドレスとメモリ上のアドレスの対応関係を記憶したアドレス変換表を更に備えた請求項３記載のメモリシステムであって、
ページテーブルを変更する権限を有する指定元から指定されたカラーでアクセス可能な物理ページを移動先物理ページとする移動先物理ページ決定手段と、
前記指定された移動元物理ページに対応していたメモリページに、前記決定した移動先物理ページが対応するようにアドレス変換表を変更するアドレス変換表変更手段と、
前記指定された移動元物理ページをマップしている論理ページが、前記決定した移動先物理ページをマップするように変更する物理ページ移動手段と、を有するカラー管理手段と、
を更に備えることを特徴とする請求項３記載のメモリシステム。
【請求項５】
前記カラー管理手段が、プロセスＩＤと論理ページ番号から物理ページ番号を求める論理物理ページ変換手段を更に備えることを特徴とする請求項３又は４に記載のメモリシステム。
【請求項６】
前記カラー管理手段が、プロセスＩＤと移動元カラー集合と移動先カラー集合から移動元物理ページ集合を決定する移動元物理ページ決定手段を更に備えることを特徴とする請求項３又は４に記載のメモリシステム。
【請求項７】
前記カラー管理手段が、プロセスＩＤと移動先カラー集合から移動元カラー集合を決定する移動元カラー決定手段を更に備えることを特徴とする請求項６に記載のメモリシステム。
【請求項８】
物理アドレスとメモリ上のアドレスの対応関係を記憶したアドレス変換表を用意し、
前記物理アドレス空間へのアクセスに対して、前記アドレス変換表を利用して物理アドレスからメモリ上のアドレスへの変換を行うことにより異なるカラーの複数の物理アドレスからメモリ上の同一アドレスにアクセスできるように前記物理アドレス空間を構成することを特徴とする請求項１に記載のメモリシステム。
【請求項９】
前記アドレス変換手段がキャッシュとメモリバスの間に設けられていることを特徴とする請求項１乃至８の何れか１項に記載のメモリシステム。
【請求項１０】
前記アドレス変換手段がメモリバスとメモリの間に設けられていることを特徴とする請求項１乃至８の何れか１項に記載のメモリシステム。
【請求項１１】
請求項１乃至１０の何れか１項に記載のメモリシステムであって、
複数のプロセスが動作しており、時間の経過とともにプロセス間の関係が変換する場合に、前記アドレス変更手段を動作させプロセスへのキャッシュ割り当てを変更することを特徴とするメモリシステム。
【請求項１２】
請求項１乃至１０の何れか１項に記載のメモリシステムであって、
単数又は複数のプロセスが動作しており、時間の経過とともに生じたキャッシュ領域毎の利用量に偏りを削減するように前記アドレス変更手段を動作させプロセスへのキャッシュ割り当てを変更することを特徴とするメモリシステム。
【請求項１３】
請求項１乃至１０の何れか１項に記載のメモリシステムであって、
単数又は複数のプロセスが動作しており、プロセスの利用する命令やデータがキャッシュ上で競合を起こす場合に、プロセスの任意の時点で、プロセス内でのキャッシュ競合ミスを削減するように前記アドレス変更手段を動作させプロセスへのキャッシュ割り当てを変更することを特徴とするメモリシステム。
【請求項１４】
物理アドレスによってキャッシュ上の格納位置が決定されるキャッシュをキャッシュ先とし、メモリ上の一定サイズの領域において論理アドレスと物理アドレスのマッピングの単位となるページ毎にキャッシュ上の格納位置をカラーＩＤで識別できるメモリシステムにおけるメモリ管理方法であって、
異なるカラーが割り当てられている複数の物理アドレスから、メモリ上の同一アドレスにアクセスできるように物理アドレス空間を構成し、
前記構成した前記物理ページをマップしている論理ページが、前記マップしている物理ページと同一のメモリページにアクセスができ、かつ異なるカラーを持つ他の物理ページをマップするように変更するアドレス変更ステップを備えることを特徴とするメモリ管理方法。
【請求項１５】
前記メモリシステムが前記物理アドレス空間上に、アドレスが連続する複数の物理ページが、アドレスが連続する複数のメモリページをマップする領域を複数備え、
前記物理アドレス空間の構成を、物理アドレス空間上のそれぞれの領域に対するアクセスに対して異なったアドレス変換をすることで異なるカラーの複数の物理アドレスからメモリ上の同一アドレスにアクセスできるようにすることを特徴とする請求項１４に記載のメモリ管理方法。
【請求項１６】
ページテーブルを変更する権限を有する指定元から指定された物理ページと同一のメモリページにアクセス可能な物理ページであって、かつ前記指定元から指定されたカラーを持つ物理ページを決定する移動先ページ決定ステップと、
前記指定された移動元物理ページをマップしている論理ページが、前記指定された移動先物理ページをマップするように変更する物理ページ移動ステップと、
を有するカラー変更ステップを更に備えることを特徴とする請求項１５に記載のメモリ管理方法。
【請求項１７】
前記メモリシステムが、物理アドレスとメモリ上のアドレスの対応関係を記憶したアドレス変換表を更に備えているシステムであって、
ページテーブルを変更する権限を有する指定元から指定されたカラーでアクセス可能な物理ページを移動先物理ページとする移動先物理ページ決定ステップと、
前記指定された移動元物理ページに対応していたメモリページに、前記決定した移動先物理ページが対応するようにアドレス変換表を変更するアドレス変換表変更ステップと、
前記指定された移動元物理ページをマップしている論理ページが、前記決定した移動先物理ページをマップするように変更する物理ページ移動ステップと、を有するカラー管理ステップを更に備えることを特徴とする請求項１６記載のメモリ管理方法。
【請求項１８】
前記カラー管理ステップが、プロセスＩＤと論理ページ番号から物理ページ番号を求める論理物理ページ変換ステップを更に備えることを特徴とする請求項１６又は１７に記載のメモリ管理方法。
【請求項１９】
前記カラー管理ステップが、プロセスＩＤと移動元カラー集合と移動先カラー集合から移動元物理ページ集合を決定する移動元物理ページ決定ステップを更に備えることを特徴とする請求項１６又は１７に記載のメモリ管理方法。
【請求項２０】
前記カラー管理ステップが、プロセスＩＤと移動先カラー集合から移動元カラー集合を決定する移動元カラー決定ステップを更に備えることを特徴とする請求項１９に記載のメモリ管理方法。
【請求項２１】
物理アドレスとメモリ上のアドレスの対応関係を記憶したアドレス変換表を用意し、
前記物理アドレス空間へのアクセスに対して、前記アドレス変換表を利用して物理アドレスからメモリ上のアドレスへの変換を行うことにより異なるカラーの複数の物理アドレスからメモリ上の同一アドレスにアクセスできるように前記物理アドレス空間を構成することを特徴とする請求項１４に記載のメモリ管理方法。
【請求項２２】
前記アドレス変換ステップがキャッシュとメモリバスの間に設けられていることを特徴とする請求項１４乃至２１の何れか１項に記載のメモリ管理方法。
【請求項２３】
前記アドレス変換ステップがメモリバスとメモリの間に設けられていることを特徴とする請求項１４乃至２１の何れか１項に記載のメモリ管理方法。
【請求項２４】
請求項１４乃至２３の何れか１項に記載のメモリ管理方法であって、
複数のプロセスが動作しており、時間の経過とともにプロセス間の関係が変換する場合に、前記アドレス変更ステップを動作させプロセスへのキャッシュ割り当てを変更することを特徴とするメモリ管理方法。
【請求項２５】
請求項１４至２３の何れか１項に記載のメモリ管理方法であって、
単数又は複数のプロセスが動作しており、時間の経過とともに生じたキャッシュ領域毎の利用量に偏りを削減するように前記アドレス変更ステップを動作させプロセスへのキャッシュ割り当てを変更することを特徴とするメモリ管理方法。
【請求項２６】
請求項１４乃至２３の何れか１項に記載のメモリ管理方法であって、
単数又は複数のプロセスが動作しており、プロセスの利用する命令やデータがキャッシュ上で競合を起こす場合に、プロセスの任意の時点で、プロセス内でのキャッシュ競合ミスを削減するように前記アドレス変更ステップを動作させプロセスへのキャッシュ割り当てを変更することを特徴とするメモリ管理方法。
【請求項２７】
物理アドレスによってキャッシュ上の格納位置が決定されるキャッシュをキャッシュ先とし、メモリ上の一定サイズの領域において論理アドレスと物理アドレスのマッピングの単位となるページ毎にキャッシュ上の格納位置をカラーＩＤで識別できるメモリシステムとしてコンピュータを機能させるためのメモリ管理プログラムであって、
異なるカラーが割り当てられている複数の物理アドレスから、メモリ上の同一アドレスにアクセスできるように物理アドレス空間を構成し、
前記構成した前記物理ページをマップしている論理ページが、前記マップしている物理ページと同一のメモリページにアクセスができ、かつ異なるカラーを持つ他の物理ページをマップするように変更するアドレス変更手段を備えることを特徴とするメモリシステムとしてコンピュータを機能させるためのメモリ管理プログラム。
【請求項２８】
前記メモリシステムを、前記物理アドレス空間上に、アドレスが連続する複数の物理ページが、アドレスが連続する複数のメモリページをマップする領域を複数備え、
前記物理アドレス空間の構成を、物理アドレス空間上のそれぞれの領域に対するアクセスに対して異なったアドレス変換をすることで異なるカラーの複数の物理アドレスからメモリ上の同一アドレスにアクセスできるようにすることを特徴とするメモリシステムとして機能させることを特徴とする請求項２７記載のメモリ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はキャッシュメモリを備えたメモリシステム、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
プロセッサ、キャッシュメモリおよび主メモリ（以下主メモリを単に「メモリ」とする。）を有するコンピュータシステムにおいて、キャッシュメモリ（以下キャッシュメモリを単に「キャッシュ」とする。）を有効に利用して、メモリの動作速度の遅さから発生するレイテンシを隠蔽する方法は、アプリケーションソフトウェアの性能向上に重要であることが知られている。
【０００３】
インデックスメモリを用いるキャッシュ方式である物理インデックスキャッシュ方式では、物理アドレスによってデータがキャッシュ上に格納されるときの位置（インデックス）が決められる。
【０００４】
また、物理ページ管理手法としてページカラーリングという手法がある。ページカラーリングによるページ管理では、ＯＳ（Operating System）による論理アドレスと物理アドレスのマッピングはページと呼ばれる単位（一般的に４ＫＢがよく用いられる。）で行われる。また、キャッシュ上で同じ位置に格納されるページは同じカラー番号を持つと表される。
【０００５】
図１に、物理アドレス空間とキャッシュの関係の例を示す。図中の物理アドレス空間中のカッコ外の番号はページ番号を表わし、カッコ内の番号はカラー番号を表す。ページ番号は、
ページ番号＝アドレス／ページサイズ
であり、
カラー番号＝ページ番号％カラー数
である。ここで、「／」は整数除算を、「％」は剰余を表す。
【０００６】
図１に示しているのはカラー数が８の場合の例であり、カラー番号はキャッシュ上の格納位置を示している。図１に示すキャッシュ中の番号はカラー番号を示しており、物理アドレス空間上のページはキャッシュ上の同じカラー番号を持つ場所に格納される。
【０００７】
非特許文献１に記載されているように、このような物理インデックスキャッシュの特徴を利用して、ＯＳによるプロセスの論理アドレスと物理アドレスのマッピング時に、キャッシュの利用効率を高めることが可能であることが知られている（非特許文献１参照）。
【０００８】
また、キャッシュの利用効率を悪化させる現象として、プロセス間のキャッシュ競合がある。プロセス間のキャッシュ競合とは、図２に示すように、複数のプロセスがアクセスするデータが、キャッシュ上の同じ位置に格納される場合に、お互いにデータをキャッシュ上から追い出し合う現象である。このようなキャッシュ競合を削減する方法として、プロセス毎に利用可能なカラー番号を分け、それぞれのプロセスの論理ページには利用可能カラー番号を持つ物理ページのみをマッピングすることで、プロセス毎にキャッシュ上の同じ位置を利用させないようにする方法がある。
【０００９】
図３に、二つのプロセスＡ，Ｂ間のキャッシュ競合を削減するための論理アドレスと物理アドレスのマッピングを示す。プロセスＡの論理ページはカラー番号０，１，２，３を持つ物理ページにのみマップされ、プロセスＢの論理ページはカラー番号４，５を持つページにのみマップされている。したがって、図４に示すように、二つのプロセスはキャッシュ上の同じ位置を利用しない。
【００１０】
関連する技術として、特許文献１はリアルタイムタスクとその他のタスクでカラー番号を分けることによって、リアルタイムタスクがキャッシュ競合によって性能が下がらないようにする方法を開示している。
【特許文献１】特開２０００−３３９２２０号公報
【非特許文献１】Kessler他著「PagePlacementAlgorithmsforLargeReal-IndexedCaches」ACM Transactions on Computer Systems,  1992,  Vol.4, No.10,  pp.338-359
【発明の開示】
【発明が解決しようとする課題】
【００１１】
複数のプロセスが動くシステムでは、プロセスの動作に関わる状況が時間とともに変化する。しかし、ＯＳによる論理アドレスと物理アドレスのマッピングを利用したキャッシュ制御は、プロセスへの物理ページの割り当て時に行われるため、プロセスが動作をすることにより生じる状況変化とともに有効性を失っていくという問題がある。
【００１２】
状況変化とともに有効性を失っていく状態の説明として、図３および図４に示したプロセス間のキャッシュ割り当て制御の例において、プロセスの優先度が逆転した場合について図５に示す。図５に示した例では、優先度の逆転によりプロセスＢがプロセスＡより優先度が高くなったにもかかわらず、プロセスＢは少量のキャッシュしか使えないままである。一般に、プロセスが利用するメモリ空間は、各プロセスに割り当てられるキャッシュサイズよりも大きい。そして、プロセスが利用できるキャッシュサイズが大きいほどキャッシュミスが少なくなり、性能が向上する。つまり、図５に示した例では、プロセスＢの優先度が高くなったにも関わらず、プロセスＢに割り当てられるキャッシュサイズは大きくなっていないので、十分な性能が発揮できないという問題が生じる。
【００１３】
この問題は、プロセスの動作に関わる状況が変化したにもかかわらず、プロセスが利用するカラーが変更されないために生じている。
【００１４】
そこで、本発明はプロセスによるキャッシュの利用状況を効率的にするような、メモリシステム、その方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の観点によれば、物理アドレスによってキャッシュ上の格納位置が決定されるキャッシュをキャッシュ先とし、メモリ上の一定サイズの領域において論理アドレスと物理アドレスのマッピングの単位となるページ毎にキャッシュ上の格納位置をカラーＩＤで識別できるメモリシステムであって、異なるカラーが割り当てられている複数の物理アドレスから、メモリ上の同一アドレスにアクセスできるように物理アドレス空間を構成し、前記構成した前記物理アドレス空間上のページ（以下「物理ページ」という。）をマップしている論理アドレス空間上のページ（以下「論理ページ」という。）が、前記マップしている物理ページと同一のメモリ上のページ（以下「メモリページ」という。）にアクセスができ、かつ異なるカラーを持つ他の物理ページをマップするように変更するアドレス変更手段を備えることを特徴とするメモリシステムが提供される。
【００１６】
本発明の第２の観点によれば、物理アドレスによってキャッシュ上の格納位置が決定されるキャッシュをキャッシュ先とし、メモリ上の一定サイズの領域において論理アドレスと物理アドレスのマッピングの単位となるページ毎にキャッシュ上の格納位置をカラーＩＤで識別できるメモリシステムにおけるメモリ管理方法であって、異なるカラーが割り当てられている複数の物理アドレスから、メモリ上の同一アドレスにアクセスできるように物理アドレス空間を構成し、前記構成した前記物理ページをマップしている論理ページが、前記マップしている物理ページと同一のメモリページにアクセスができ、かつ異なるカラーを持つ他の物理ページをマップするように変更するアドレス変更ステップを備えることを特徴とするメモリ管理方法が提供される。
【００１７】
本発明の第３の観点によれば、物理アドレスによってキャッシュ上の格納位置が決定されるキャッシュをキャッシュ先とし、メモリ上の一定サイズの領域において論理アドレスと物理アドレスのマッピングの単位となるページ毎にキャッシュ上の格納位置をカラーＩＤで識別できるメモリシステムとしてコンピュータを機能させるためのメモリ管理プログラムであって、異なるカラーが割り当てられている複数の物理アドレスから、メモリ上の同一アドレスにアクセスできるように物理アドレス空間を構成し、前記構成した前記物理ページをマップしている論理ページが、前記マップしている物理ページと同一のメモリページにアクセスができ、かつ異なるカラーを持つ他の物理ページをマップするように変更するアドレス変更手段を備えることを特徴とするメモリシステムとしてコンピュータを機能させるためのメモリ管理プログラムが提供される。
【発明の効果】
【００１８】
本発明によれば、アプリケーションが利用することが可能なカラーを変更できることから、アプリケーションが利用することが可能なキャッシュサイズを増やし、アプリケーションの実行速度を向上させることが可能となる。
【発明を実施するための最良の形態】
【００１９】
まず、本発明の実施形態の概略を説明する。本発明の実施形態では、
１．異なるカラーの複数の物理アドレスからメモリ上の同一アドレスにアクセスできるように物理アドレス空間を構成する（図６の物理アドレス空間参照）。
【００２０】
２．そして、物理アドレス空間上の或るページ（以下「物理ページ」という。）をマップしている論理アドレス空間上のページ（以下「論理ページ」という。）が、その物理ページと同一のメモリ上のページ（以下「メモリページ」という。）にアクセスできる異なる物理ページをマップするように変更する（図６の変更を示す矢印参照）手段を提供する。
【００２１】
このような構成と手段を用いることで、プロセスに割り当てられている物理ページを異なるカラーを持つ物理ページに変更することができる。これにより、プロセスが利用するカラーを変更できる。したがって、プロセスのキャッシュ利用を制御できるため、本発明の目的を達成することができる。
【００２２】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２３】
［第１の実施の形態］
本発明の第１の実施の形態は、ハードウェア、物理アドレス空間及びカラー管理部を有する。
【００２４】
図７は、第１の実施の形態が有するハードウェアの構成を示す。本実施の形態では、ＣＰＵ１０と、キャッシュ２０とメモリ４０の間にアドレス変換部３０を有することを特徴とする。アドレス変換部３０は、ＣＰＵ１０がメモリ４０にアクセスする際に発行した物理アドレスを入力として、メモリ４０にアクセスする際のアドレスを生成する機能を有する。
【００２５】
図８は、第１の実施の形態の物理アドレス空間の構成を示す。本実施の形態では、物理アドレス空間上にメモリ４０をマップする領域を複数有することを特徴とする。各領域の連続する物理ページは、メモリ４０上の連続するページをマップする。各領域にアクセスする際には、アドレス変換部３０によって領域毎に異なるアドレス変換が行われ、各領域中の物理アドレスからメモリ４０上の同一のアドレスにアクセスができるように変換が行われる。さらに、メモリ４０上の同一アドレスにアクセスするための各領域中の物理アドレスのカラーが異なるように変換が行われる。
【００２６】
アドレス変換部３０によって行われるアドレス変換についてより具体的に説明する。領域ｉに対するアドレス変換をｆｉとし、領域ｉ上の物理アドレスｘｉとすると、ｘｉを通してアクセスできるメモリ４０上のアドレスｙは、
ｙ＝ｆｉ（ｘｉ）
である。このとき、
ｙ＝ｆｊ（ｘｊ）
となる領域ｊが存在するとき、メモリ４０上のアドレスｙに対して異なる物理アドレスでアクセスすることができる。
【００２７】
一方、物理アドレスｘのカラーＣｏｌｏｒ（ｘ）は、
Ｃｏｌｏｒ（ｘ）＝（ｘ／ページサイズ）％カラー数
で求められる。ここで、／は整数除算を、％は剰余を表す。カラー数は、
カラー数＝キャッシュサイズ／キャッシュＷａｙ数／ページサイズ
である。したがって、
Ｃｏｌｏｒ（ｘｉ）！＝Ｃｏｌｏｒ（ｘｊ）
となるように、アドレス変換ｆｉ，ｆｊを決める。ここで、「！＝」は同一でないことを表す。
【００２８】
各領域のサイズがメモリサイズに等しく、領域の数がカラー数と等しい場合、メモリ４０上の全てのページに全てのカラーでアクセスすることができるため、最もキャッシュ制御に適した形態となる。一方で、物理アドレス空間上に占めるメモリの領域を小さくするために、一部または全部の領域のサイズを小さくしたり、領域の数をカラー数より小さくしたりしても良い。
【００２９】
次に本実施の形態におけるカラー管理部５０について説明する。カラー管理部５０は、ページテーブルにアクセスする権限を持つソフトウェアによって実現される。そのようなソフトウェアの例としてはＯＳが挙げられる。このことから、カラー管理部５０をＯＳの一機能として実現する形態が実装例として考えられる。
【００３０】
カラー管理部５０は、物理ページをマップしている論理ページが、同一のメモリ４０上のページに対応する異なるカラーを持つ物理ページをマップするように変更する機能を持つ。図９は、本実施の形態におけるカラー管理部５０の構成を示す。本実施の形態におけるカラー管理部５０は、移動先物理ページ決定部５１と物理ページ移動部５２を有することを特徴とする。
【００３１】
移動先物理ページ決定部５１は、移動元物理ページと移動先カラーを指定されて呼び出される。移動先物理ページ決定部５１は、複数の領域を持つ物理アドレス空間から、移動元物理ページと同一のメモリページに対応し、かつ、移動先カラーを持つ物理ページである移動先物理ページを決定する機能を有する。
【００３２】
物理ページ移動部５２は、移動元物理ページと移動先物理ページを指定されて呼び出される。本実施の形態の物理ページ移動部５２は、移動元物理ページをマップしている論理ページが移動先物理ページをマップするように、ページテーブルを書き換える機能を有することを特徴とする。
【００３３】
次に、第１の実施の形態の動作を図面を用いて詳細に説明する。アドレス変換部３０が関係するメモリアクセス時の動作と、カラー管理部５０が関わる物理ページのカラーを変更する動作の二つの動作について説明する。
【００３４】
アドレス変換部３０の構成は上述のよう図７に示されている。更に、図１０は、本実施の形態において、メモリアクセスを行う際の動作について説明するための図面である。本図では、領域ｉ上のアドレスｘｉを通してメモリ４０上のアドレスｙにアクセスする場合の動作を示す。この場合のメモリアクセスは以下のような順序で行われる。なお、ＭＭＵ（Memory Management Unit）による論理アドレスと物理アドレスの変換までの動作は当業者には明らかであるため、物理アドレスへの変換後から説明する。また、アドレス変換部３０での領域ｉに対する変換をｆｉとする。
【００３５】
ＣＰＵ１０が物理アドレスｘｉを発行する（ステップＳ１０１）。
【００３６】
キャッシュ２０がアドレスｘｉでアクセスされる。この時のカラーはＣｏｌｏｒ（ｘｉ）である（ステップＳ１０２）。
【００３７】
キャッシュミス等でメモリ４０にアクセスが起こるとき、物理アドレスｘｉが発行される（ステップＳ１０３）。
【００３８】
アドレス変換部３０によりアドレスｙ＝ｆｉ（ｘｉ）に変更される（ステップＳ１０４）。
【００３９】
メモリ４０に対してアドレスｙが発行される（ステップＳ１０５）。
【００４０】
なお、説明を簡便にするために上記の説明ではキャッシュラインについての説明を省略しているが、キャッシュライン単位でアクセスするために、上記のステップＳ１０３で発行されるアドレスをキャッシュラインの先頭アドレスとしても良いことは、当業者には明らかである。
【００４１】
次に、プロセスが利用するカラーを変更するときの動作について図面を用いて詳細に説明する。本実施の形態では、カラー管理部５０を、移動元物理ページと移動先カラーを指定して呼び出すことで、カラーの変更を行う。
【００４２】
カラー管理部５０が呼び出されると、まずカラー管理部５０の移動物理先ページ決定部が動作する。この動作を図１１を用いて説明する。
【００４３】
移動先物理ページ決定部５１は、移動元物理ページのカラーが移動先カラーと一致するか調べる。一致する場合は移動を行わず、要求元に応答を返す（ステップＳ２０１）。
【００４４】
移動元物理ページのカラーが移動先カラーと一致しない場合、移動先物理ページ決定部５１は、移動元物理ページが移動可能かを調べる（ステップＳ２０２）。
【００４５】
移動元物理ページが移動不可能な場合は、要求元に移動不可能であるという応答を返す（ステップＳ２０６）。ここで、移動不可能な場合の例としては、移動元物理ページがＯＳによりロックされているページである場合が挙げられる。
【００４６】
一方、移動元物理ページが移動可能な場合は、移動元物理ページに対応するメモリページを求める（ステップＳ２０３）。
【００４７】
移動先物理ページ決定部５１は、ステップＳ２０３で求めたメモリページに対して、指定された移動先カラーでアクセスできる物理ページが存在するか調べる（ステップＳ２０４）。
【００４８】
指定された移動先カラーでアクセスできる物理ページが存在しない場合は、移動は行わず、要求元に応答を返す（ステップＳ２０６）。
【００４９】
一方、指定された移動先カラーでアクセスできる物理ページが存在する場合、そのページを移動先物理ページとして決定する（ステップＳ２０５）。
【００５０】
次に、移動元物理ページと移動先物理ページを指定して、物理ページ移動部５２が呼び出される。両物理ページは、メモリ上の同じページに対応しているため、移動元ページをマップしている論理ページを、移動先ページをマップするように変更すれば良い。物理ページ移動部５２が行うこの動作は以下のように行われる。
【００５１】
（１）移動元物理ページをマップしている論理ページを検索する。
【００５２】
（２）移動元物理ページをマップしている論理ページに対して、対応するページテーブルのエントリを、移動先物理ページをマップするように変更する。
【００５３】
以上の動作により、移動元物理ページをマップしていた論理ページは、移動先カラーを持つ物理ページをマップするように変更される。したがって、プロセスがマップしている物理ページと移動先カラーを指定してカラー管理部５０を呼び出すことによって、プロセスが利用するカラーを変更することが可能である。これにより、本発明の目的を達成することができる。このとき、物理ページに対応する論理アドレスは変更されないため、移動元の物理ページをマップしていたプロセスは、カラーが変更されたことを認識する必要はない。
【００５４】
第１の実施の形態を変形した形態として、移動対象として複数の物理ページが指定されるようにしても良い。その場合、それぞれの物理ページを対象として上記の動作が行われる。
【００５５】
第１の実施の形態を変形した形態として、移動先カラーとしてカラー集合が指定されるようにしても良い。カラー集合が複数のカラーを含む場合は、任意のアルゴリズムを用いてその中から移動先カラーを選択して良い。
【００５６】
アドレスからページ番号は一意に求めることができるため、第１の実施の形態を変形した形態として、物理ページ番号の変わりに物理アドレスが指定されても良い。
【００５７】
［第２の実施の形態］
次に、本発明を実施するための第２の最良の形態について図面を参照して詳細に説明する。
【００５８】
図１２は、本実施の形態のハードウェアの構成を示す。本実施の形態では、ＣＰＵ１０、キャッシュ２０、アドレス変換部３０及びメモリ４０に加えて、アドレス変換部３０が利用するアドレス変換表６０を有することを特徴とする。アドレス変換表６０は、物理ページとメモリ４０ページの組を記録するための表である。アドレス変換部３０は、アドレス変換表６０を検索することによって、入力された物理アドレスに対応する物理メモリ４０上のアドレスを出力する。アドレス変換表６０はソフトウェア、ハードウェア又はこれらの組合せにより実現することができる。アドレス変換表６０は、ＣＰＵ１０が利用する主記憶装置と同じメモリ４０上におかれても良いし、専用のメモリ上におかれても良い。また、ページテーブルに対するＴＬＢ（Translation Look-aside Buffer）の様に、高速なメモリでキャッシュされても良い。
【００５９】
図１３は、本実施の形態の物理アドレス空間を示す。本実施の形態では、アドレス変換表６０を利用することで任意の物理ページを通して任意のメモリページにアクセスすることが可能であるため、物理アドレス空間上のメモリをマップした範囲のサイズを小さくできることを特徴としている。
【００６０】
図１４は、本実施の形態のカラー管理部５０の構成を示す。本実施の形態のカラー管理部５０は、移動先物理ページ決定部５１と物理ページ移動部５２に加えて、アドレス変換表変更部５３を有することを特徴とする。アドレス変換表変更部５３は、アドレス変換表６０を変更することによって、物理ページとメモリ４０ページの対応を変更する機能を有する。本実施の形態では、ページテーブルとアドレス変換表６０の両方を変更することによって、異なる物理ページからメモリ４０上の同一ページに異なるカラーでアクセスすることを可能とする。
【００６１】
次に、図１５を用いて、メモリ４０アクセス時のアドレス変換部３０の動作を説明する。なお、メモリ４０アクセス時のアドレス変換部３０の以前の動作およびアドレス変換部３０以後の動作は、第１の実施の形態と同様であるため説明を省略する。
【００６２】
アドレス変換部３０は、ＣＰＵ１０が発行した物理アドレスのページ番号を求める（ステップＳ３０１）。
【００６３】
アドレス変換部３０は、アドレス変換表６０にステップＳ３０１で求めた物理ページに対応するエントリが存在するか検索する（ステップＳ３０２）。
【００６４】
対応するエントリが存在する場合は、エントリに記録されているメモリ４０上のページ番号に、ページオフセットを加えてメモリ４０上のアドレスを求める（ステップＳ３０３）。
【００６５】
存在しない場合は、あらかじめ決められたデフォルトの変換方法を用いて変換する（ステップＳ３０４）。
【００６６】
上記で求めたメモリ４０上のアドレスを発行する（ステップＳ３０５）。
【００６７】
次にプロセスの利用するカラーを変更するときの動作について説明する。本実施の形態では、カラー管理部５０が、移動元物理ページと移動先カラーを指定して呼び出され、移動元物理ページをマップしている論理ページが、移動先カラーを持つ物理ページをマップするように変更することで、カラーの変更を行う。
【００６８】
まず、図１６を用いて、カラー管理部５０の移動先物理ページ決定部５１の動作を説明する。移動先ページ決定部は、移動元物理ページと移動先カラーを指定して呼び出される。図中ステップＳ２０３までの動作は、図１１で示した第１の実施の形態と同様であるため、ステップＳ４０４から説明する。
【００６９】
移動元ページ決定部は、ＯＳのメモリ管理機能に対して、移動先カラーを持つ空き物理ページを要求する（ステップＳ４０４）。ＯＳのメモリ管理機能は、空き物理ページを管理し、要求に対して空き物理ページを割り当てる機能を有する。
【００７０】
移動先カラーを持つ物理ページを取得できなかった場合は、カラーの変更は行わずに要求元に応答を返す。物理ページを取得できた場合は、アドレス変換表変更部５３を呼び出して動作を終了する（ステップＳ４０５）。
【００７１】
次に、アドレス変換表変更部５３の動作を説明する。アドレス変換表変更部５３は、移動元物理ページおよび移動先物理ページ決定部５１が取得した移動先物理ページを指定して呼び出される。
【００７２】
（１）アドレス変換表変更部５３は、アドレス変換表６０を検索して、移動元物理ページに対応するメモリページを求める。アドレス変換表６０に移動元物理ページに対応するエントリが存在しない場合は、デフォルトの変換を用いて対応するメモリページを求める。このメモリページをページＡとする。
【００７３】
（２）アドレス変換表変更部５３は、アドレス変換表６０を検索して、移動先物理ページに対応するメモリページを求める。（１）同様に、アドレス変換表６０に存在しない場合は、デフォルトの変換を用いて対応するメモリページを求める。このメモリページをページＢとする。
【００７４】
（３）アドレス変換表変更部５３は、移動元物理ページに対応するメモリページをページＢに、移動先物理ページに対応するメモリページをページＡとするようにアドレス変換表６０を変更する。
【００７５】
（４）アドレス変換表変更部５３は、物理ページ移動部５２を呼び出す。
【００７６】
以上の動作により、移動元物理ページに対応していたメモリページに対して、移動先物理ページを通してアクセスすることが可能となる。また、移動先ページに対応していたメモリページに、移動元物理ページを通してアクセスできるようになる。
【００７７】
次に、物理ページ移動部５２の動作を説明する。物理ページ移動部５２は、移動元物理ページと移動先物理ページを指定して呼び出される。
【００７８】
（１）物理ページ移動部５２は、移動元物理ページをマップしていた論理ページを検索する。
【００７９】
（２）物理ページ移動部５２は、検索された論理ページがマップする物理ページが移動先物理ページとなるように、ページテーブルを書き換える。
【００８０】
（３）物理ページ移動部５２は、移動元物理ページを解放するように、メモリ管理機能に要求する。
【００８１】
以上の動作により、移動元物理ページをマップしていた論理ページは、移動先カラーを持つ物理ページをマップするように変更される。したがって、この論理ページを利用しているプロセスの利用するカラーが変更される。
【００８２】
本実施の形態では、アドレス変換表６０の更新はカラー管理部５０が行うため、メモリ管理機能がアドレス変換表６０を考慮する必要がないという特徴がある。したがって、本実施の形態は従来のメモリ管理機能に変更を加えることなく実現をすることができるという効果がある。
【００８３】
一方、本実施の形態を変形した形態として、メモリ管理機能がアドレス変換表６０の管理を行う場合は、カラー管理部５０がメモリ管理機能の提供する機能を用いる形態を取っても良い。
【００８４】
また、第１の実施の形態と同様に、第２の実施の形態を変形した形態として、移動対象として複数の物理ページが指定されても良く、また、移動先カラーとしてカラー集合が指定されても良く、また、物理ページ番号の変わりに物理アドレスが指定されても良い。
【００８５】
本実施の形態では、説明を簡単にするため、アドレス変換表６０を用いた物理アドレスとメモリ４０上のアドレスの変換はページサイズ単位で行ったが、本実施の形態を変形した形態として、ページと異なるサイズを単位としてアドレスの変換を行っても良い。
【００８６】
［第３の実施の形態］
次に、本発明を実施するための第３の形態について図面を参照して説明する。本実施の形態は、本発明の第１または第２の発明の実施の形態において、カラー管理部５０が、論理物理ページ変換部５４を更に有すること特徴とする実施の形態である。
【００８７】
図１７は、本実施の形態のカラー管理部５０の構成を示す。図１７では第１の実施の形態のカラー管理部５０において、移動先物理ページ決定部５１の前に論理物理ページ変換部５４を有する場合の例を示している。第２の実施の形態のカラー管理部５０において、論理物理ページ変換部５４を更に有する場合も、移動先物理ページ決定部５１の前に論理物理ページ変換部５４を有する構成であることは、この図１７から明らかである。
【００８８】
本実施の形態の論理物理ページ変換部５４以外の構成については、本発明の第１または第２の発明の実施の形態と同様であるので、ここでは説明を省略する。また、以下の説明が、第１の実施の形態に論理物理ページ変換部５４が加わった場合と、第２の実施の形態に論理物理ページ変換部５４が加わった場合の両方に関しての説明であることは明らかである。
【００８９】
論理物理ページ変換部５４は、論理ページが物理ページをマップしているかを調べ、マップしている場合はその物理ページ番号を問い合わせ元に返す機能を有する。本実施の形態では、カラー管理部５０が、論理物理ページ変換部５４を有することで、論理ページに対応する物理ページを検出する機能を有するため、カラー変更要求時に、物理ページ番号ではなく論理ページ番号を指定することができることを特徴とする。
【００９０】
図１８を用いて、本実施の形態のカラー管理部５０の動作を説明する。
【００９１】
本実施の形態では、カラー管理部５０に、プロセスを特定する識別子（以降の説明及び各図面においてプロセスＩＤと表記する。）、移動対象の論理ページ番号及び移動先のカラーが指定されて、カラー変更要求が行われることによって、動作が開始される（ステップＳ５０１）。
【００９２】
論理物理ページ変換部５４は、指定されたプロセスの指定された論理ページが物理ページをマップしているか調べる（ステップＳ５０２）。マップしていない場合は、要求元に応答を返す（ステップＳ５０４）。
【００９３】
マップしている場合は、マップしている物理ページを求め、移動元物理ページとする（ステップＳ５０３）。
【００９４】
以上の動作により、移動元物理ページと移動先カラーが得られる。したがって、以降の動作は、上述した第１の実施の形態の動作と同様であり、既に明らかであるため説明を省略する。
【００９５】
［第４の実施の形態］
次に、本発明を実施するための第４の形態について図面を参照して説明する。本実施の形態では、第１または第２の実施の形態に加えて、カラー管理部５０が、移動元物理ページ決定部５５を有することを特徴とする実施の形態である。図１９は、本実施の形態のカラー管理部５０を示し、第１の実施の形態におけるカラー管理部５０に、移動元物理ページ決定部５５を加えた場合の構成を示している。本図より、第２の実施の形態に移動元物理ページ決定部５５を加えた構成についても明らかである。また、以下の説明が、第１の実施の形態に移動元物理ページ決定部５５を加えた場合と、第２の実施の形態に加えた場合のどちらについても説明していることも明らかである。
【００９６】
移動元物理ページ決定部５５は、プロセスＩＤとカラー集合を指定されると、プロセスＩＤによって指定されたプロセスがマップしている物理ページの中から、指定されたカラー集合に含まれるカラーを持つ物理ページを特定する機能を有する。
【００９７】
図２０を用いて、本実施の形態の動作を説明する。
【００９８】
本実施の形態では、プロセスＩＤ、移動元カラー集合、移動先カラー集合が指定されて、カラー管理部５０にカラー変更要求がなされることによって、動作が開始される（ステップＳ６０１）。
【００９９】
移動元物理ページ決定部５５は、プロセスがマップしている物理ページの中から、移動元カラー集合に含まれるカラーを持つ物理ページの集合を求める（ステップＳ６０２）。集合が空の場合は（ステップＳ６０３においてＹＥＳ）、要求元へ応答を返す（ステップＳ６０４）。
【０１００】
集合が空で無い場合は（ステップＳ６０３においてＮＯ）、移動先物理ページ決定部５１が、移動元物理ページ決定部５５が求めた物理ページ集合と、移動先カラー集合を指定されて呼び出される。
【０１０１】
以降の動作は、第１または第２の実施の形態の動作と同様であり、明らかであるため説明を省略する。
【０１０２】
本実施の形態は、プロセスＩＤ、移動元カラー集合及び移動先カラー集合を指定してカラー管理部５０を呼び出すことができるという特徴を有する。
【０１０３】
［第５の実施の形態］
次に、本発明を実施するための第５の形態について図２１を参照して説明する。
【０１０４】
本実施の形態では、第４の実施の形態に加えて、カラー管理部５０が、移動元カラー決定部５６を有することを特徴とする。移動元カラー決定部５６は、移動先カラー集合を指定されると、移動元カラー集合を決定する。決定された移動元カラー集合は、移動先カラー集合に含まれないカラーが含まれる。また、移動元カラー集合が、移動先ページカラー集合に含まれるカラーを含んでも良い。
【０１０５】
図２２を用いて、本実施の形態の動作を説明する。
【０１０６】
本実施の形態では、プロセスＩＤ、移動先カラー集合が指定されて、カラー管理部５０にカラー変更要求がなされることによって、動作が開始される（ステップＳ７０１）。
【０１０７】
移動元カラー決定部５６は、移動先カラー集合から、移動元カラー集合を決定する（ステップＳ７０２）。集合が空の場合は要求元に応答を返す（ステップＳ７０４）。
【０１０８】
一方、集合が空で無い場合は、プロセスＩＤと決定された移動元カラー集合とを指定して、移動元ページ決定部が呼び出される。
【０１０９】
以降の動作は、第４の実施の形態の動作と同様であり、明らかであるため説明を省略する。
【０１１０】
本実施の形態は、プロセスＩＤ、移動先カラー集合を指定してカラー管理部５０を呼び出すことができるという特徴を有する。
【実施例１】
【０１１１】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の説明をする。
【０１１２】
実施例１は、本発明の第１及び第５の実施の形態に対応する実施例である。すなわち、物理アドレス空間は第１の実施の形態の構成であり、カラー管理部５０は第５の実施の形態の構成である。
【０１１３】
本実施例は、メモリサイズが２５６ＭＢ（アドレス０ｘ００００００００から０ｘ０ｆｆｆｆｆｆｆ）、ページサイズが４ＫＢ、キャッシュはサイズが８ページでダイレクトマップ方式を採用している場合の例である。この場合のカラー数は８である。また領域数はカラー数と同様の８の場合である。
【０１１４】
まず、本実施例における物理アドレス空間について説明する。図２３に本実施例の物理アドレス空間を示す。メモリは物理アドレス空間上の８つの領域にマップされており、それぞれの開始アドレス（ｂａｓｅｉ）は、領域０は０ｘ００００００００、領域１は０ｘ１０００００００、領域２は０ｘ２０００００００、領域３は０ｘ３００００００、領域４は０ｘ４０００００００、領域５は０ｘ５０００００００、領域６は０ｘ６００００００、領域７は０ｘ７０００００００である。なお、図では領域４から領域７までは表記を省略している。
【０１１５】
また、本実施例では以下のアドレス変換式を適用することでアドレス変換を行う。
【０１１６】
ｆｉ（ｘ）＝ｘ−ページサイズ＊ｉ−ｂａｓｅｉ＊ｉ＋ｓｉｚｅｉ
（ｂａｓｅｉ≦ｘ＜ｂａｓｅｉ＋ページサイズ＊ｉ）
ｆｉ（ｘ）＝ｘ−ページサイズ＊ｉ−ｂａｓｅｉ
（ｂａｓｅｉ＋ページサイズ＊ｉ≦ｘ＜ｂａｓｅｉ＋ｓｉｚｅｉ）
ここで、ｓｉｚｅｉはメモリのサイズを表す。
【０１１７】
図２４に本実施例のハードウェア構成を示す。本実施例では、アドレス変換はキャッシュ２００とバス（図中ではｂｕｓと表記する。）４００の間で行われる。本実施の例の別の構成として、図２５に示すように、バス４００とメモリ５００の間でアドレス変換を行うようにしても良い。
【０１１８】
次に本実施例のメモリアクセス時の動作について、領域２上の０ｘ２０００６０００番地にアクセスする場合を例に説明する。
【０１１９】
（１）ＣＰＵ１００がアドレス０ｘ２０００６０００を発行する。
【０１２０】
（２）キャッシュ２００がアドレス０ｘ２０００６０００にアクセスする。この時のカラーは（０ｘ２０００６０００／４ＫＢ）％８＝６である。
【０１２１】
（３）キャッシュミス等によりメモリにアクセスが発生する場合、物理アドレス０ｘ２０００６０００が発行される。
【０１２２】
（４）アドレス変換部３００によりアドレス（０ｘ２０００６０００−４ＫＢ＊２−０ｘ２０００００００）＝０ｘ００００４０００に変換される。
【０１２３】
（５）メモリにアドレス０ｘ００００４０００が発行される。
【０１２４】
本実施例における各領域とメモリの対応関係を図２６に示す。図中括弧外の数字はページ番号（すなわちアドレス／ページサイズ）を表わし、括弧内の数字はカラー番号（すなわちページ番号％カラー数）を表す。なお、図では領域４、５及び７は省略している。
【０１２５】
次に本実施例において、二つのプロセスＡ及びＢの間でキャッシュ利用量を制御する場合の例について説明する。本実施例のソフトウェアの構成を図２７に示す。本実施例のソフトウェアは、Ａ及びＢの二つのプロセス、優先度制御部及びカラー管理部５０を有するＯＳによって構成される。また本実施例におけるカラー管理部５０は、移動元カラー決定部５６、移動先物理ページ決定部５５、移動先物理ページ決定部５１及び物理ページ移動部５２を有する。カラー管理部５０の機能については、本発明の実施の形態で説明したとおりである。優先度制御部は、二つのプロセス間の優先度およびキャッシュ割り当てを制御する機能を持つ。
【０１２６】
本実施例では、プロセスＡがプロセスＢよりも優先度が高い状況から、プロセスＢがプロセスＡに対して優先度が高い状況に変化する場合の例を説明する。プロセスＡがプロセスＢよりも優先度が高い状況での二つのプロセスのキャッシュ利用は、図２８に示すカラー割り当てに制御されていたとする。
【０１２７】
すなわち、優先度制御部は、プロセスＡに利用可能カラー集合｛０，１，２，３｝を、プロセスＢに利用可能カラー集合｛４，５｝を割り当てている。プロセスＡとプロセスＢに異なるカラーを割り当てることで、それぞれのプロセスが利用可能なキャッシュ領域を分割し、プロセス間のキャッシュ競合による性能低下やばらつきを削減している。また、優先度が高いプロセスＡにより多くのカラーを割り当てることで、より多くキャッシュを利用可能にし、より高い性能で動作できるように制御している。
【０１２８】
プロセスＡとプロセスＢの優先度が逆転する場合の動作を以下に説明する。プロセスＡの優先度が変更される前のメモリマップを図２９（ａ）に示す。プロセスＡは４つの仮想ページ｛０ｘ０００００，０ｘ００００１，０ｘ００００２，０ｘ００００３｝を利用している。図２９（ａ）に示すように、それぞれの仮想ページは、物理ページ｛０ｘ０００００，０ｘ００００２，０ｘ００００３，０ｘ００００９｝をマップしている。この時のプロセスＡのページテーブルの内容は図２９（ａ）に示す通りである。優先度制御部は、プロセスＡとプロセスＢの優先度を変更すると同時に、カラー管理部５０に対して、プロセスＡはカラー集合｛０，１｝を利用可能なように、プロセスＢはカラー集合｛２，３，４，５｝を利用可能な様に変更を行う。
【０１２９】
プロセスＡの利用可能カラーの変更は以下のようにして行われる。
【０１３０】
（１）優先度制御部は、カラー変更部に対して、プロセスＡのプロセスＩＤと移動先カラー集合として｛０，１｝を指定して、カラー変更要求を行う。
【０１３１】
（２）移動元カラー決定部５６は、移動対象カラー集合として｛２，３｝を選ぶ。
【０１３２】
（３）移動先物理ページ決定部５５は、移動対象物理ページ集合として、移動対象カラー集合に含まれるカラーを持つ物理ページ集合｛０ｘ００００２，０ｘ００００３｝を選ぶ。
【０１３３】
（４）移動先物理ページ決定部５１が、移動元物理ページ集合｛０ｘ００００２，０ｘ００００３｝と移動先カラー集合｛０，１｝を指定して呼び出される。
【０１３４】
（５）移動先物理ページ決定部５１は、物理ページ０ｘ００００２に対応するメモリページが０ｘ００００２であることを求める（図２６参照）。
【０１３５】
（６）移動先物理ページ決定部５１は、メモリページ０ｘ００００２に移動先カラー集合｛０，１｝に含まれるカラーでアクセス可能な領域として領域６を選ぶ（図２６参照）。
【０１３６】
（７）移動先物理ページ決定部５１は、移動元物理ページを０ｘ００００２、移動先物理ページを領域２上の０ｘ６０００８として、物理ページ移動部５２を呼び出す。
【０１３７】
（８）物理ページ移動部５２は、物理ページ０ｘ００００２をマップしている論理ページとして、プロセスＡの論理ページ０ｘ００００１を検索する。
【０１３８】
（９）物理ページ移動部５２は、プロセスＡの論理ページ０ｘ００００１がマップする物理ページを０ｘ６０００８となるようにページテーブルを変更する。
【０１３９】
同様に、物理ページに０ｘ００００３に対しても（５）から（９）の動作を行い、プロセスＡの論理ページ０ｘ００００２がマップする物理ページが０ｘ６０００９となるようにページテーブルを変更する。変更後のプロセスＡのメモリマップを図２９（ｂ）に示す。
【０１４０】
また、プロセスＢについても同様にして、カラー集合｛２，３，４，５｝が利用されるように変更を行う。図３０に、二つのプロセスに対する利用可能カラー変更後のキャッシュ制御の状況を示す。図に示されているように、プロセスＡはカラー｛０，１｝のキャッシュ領域が利用可能で、プロセスＢはカラー｛２，３，４，５｝のキャッシュ領域が利用可能なように変更されている。これにより、プロセスＢが変更前より高い性能を発揮することが可能になる。
【０１４１】
よって、プロセス間の優先度変更に合わせて、プロセス間の利用可能なキャッシュ量を変更することができ、状況に合わせたキャッシュ制御が行うことができている。
【０１４２】
本実施例では、二つのプロセス間でのキャッシュ制御を例にしたが、三つ以上の任意の数のプロセス間にも用いることができることは明らかである。
【０１４３】
本実施例では、優先度制御部はＯＳの外にあるが、実施例１の別例として優先度制御部がＯＳ内にあるようにしても良い。
【実施例２】
【０１４４】
次に、実施例２について説明する。実施例２は、本発明の第２および第５の実施の形態に対応する実施例である。
【０１４５】
まず、本実施例のハードウェア構成を図３１に示す。本実施例は、ＣＰＵ１００、キャッシュ、アドレス変換部３００、アドレス変換表６００及びメモリを有する。本実施例では、アドレス変換表６００はメモリの一部を利用している。本実施例はメモリサイズが２５６ＭＢ、ページサイズが４ＫＢ、キャッシュサイズが８ページでダイレクトマップキャッシュ方式を採用している場合の例である。この場合のカラー数は８である。図３２に、本実施例の物理アドレス空間を示す。本実施例では、物理アドレス空間上のメモリサイズと等しいサイズの範囲がメモリをマップしている。先頭アドレスは０ｘ００００００である。
【０１４６】
本実施例は、アドレス変換部３００がアドレス変換表６００を用いて、物理アドレス空間上のアドレスをメモリ上のアドレスに変換することを特徴とする。更に本実施例は、物理アドレス空間上のメモリをマップした範囲のサイズがメモリサイズと同じであることを特徴とする。
【０１４７】
まず、アドレス変換表６００について説明する。アドレス変換表６００は、本発明の第２の発明を実施するための最良の形態の説明として前述したように、物理アドレス空間上のアドレスとそのアドレスが変換されるメモリ上のアドレスを記憶するための表である。本実施例では、アドレス変換部３００は、アドレス変換を行う際に、アドレス変換表６００を検索し、物理アドレス空間上のアドレスが見つかれば、対応するメモリ空間上のアドレスを変換結果とする。一方、物理アドレス空間上のアドレスが見つからない場合は、デフォルトの変換を行うという動作をする。
【０１４８】
本実施例でのデフォルトの変換として以下の変換を行う。
ｙ＝ｘ
なお、本実施例では、アドレス変換表６００はページサイズ単位でアドレスの対応関係を記録するが、これはあくまで例示でありアドレス変換表６００が記録する単位をページサイズに限定するものではない。
【０１４９】
次に本実施例のメモリアクセス時の動作を説明するため、物理アドレス空間上の０ｘ００００００１０番地（ページ番号は０ｘ０００００）にアクセスする場合を例に説明する。この例ではカラー数は８とする。また、このとき利用するアドレス変換表６００は図３３に記載のものである。
【０１５０】
（１）ＣＰＵ１００がアドレス０ｘ００００００１０を発行する。
【０１５１】
（２）キャッシュがアドレス０ｘ００００００１０でアクセスされる。この時のカラーは（０ｘ００００００１０／４ＫＢ）％８＝０である。
【０１５２】
（３）キャッシュミス等によりメモリにアクセスが発生する場合、物理アドレス０ｘ００００００１０が発行される。
【０１５３】
（４）アドレス変換部３００は、アドレス変換表６００を検索して、物理アドレス空間上のページ０ｘ０００００に対応するメモリ上のアドレスが０ｘ００００３であることを得る。
【０１５４】
（５）メモリにアドレス０ｘ００００３０１０が発行される。
【０１５５】
次に本実施例において、二つのプロセスＡおよびＢの間でキャッシュ利用量を制御する場合の例について説明する。図３４に本実施例のソフトウェアの構成を示す。ＯＳのカラー管理部５０以外の構成は実施例１と同一である。またカラー管理部５０の機能は、本発明の実施の形態で説明した通りである。
【０１５６】
実施例１の同様の状況である、プロセスＡがプロセスＢよりも優先度が高い状況から、プロセスＢがプロセスＡに対して優先度が高い状況に優先度が逆転する場合を例に説明する。また、優先度が逆転する前のアドレス変換表６００にはエントリが存在しないとする。すなわち全てのメモリアクセス時には前述したデフォルトの変換が行われる。つまり、本実施例における優先度変更前のプロセスＡに関連する論理アドレス空間、物理アドレス空間、アドレス変換表６００及びプロセスＡのページテーブルは、図３５に示す通りである。
【０１５７】
カラー管理部５０の移動先物理ページ決定部５１が呼び出されるまでの動作は実施例１と同様である。したがって、移動先物理ページ決定部５１は、移動元物理ページ集合｛０ｘ００００２，０ｘ００００３｝と移動先カラー集合｛０，１｝を指定して呼び出される。移動先物理ページ決定部５１が呼び出されてから以降の動作を以下で説明する。
【０１５８】
（１）移動先物理ページ決定部５１は、ＯＳのメモリ管理機能に対してカラー集合｛０，１｝を指定して、２つの空き物理ページを要求する。
【０１５９】
（２）ＯＳのメモリ管理機能から物理ページ集合｛０ｘ００００１，０ｘ００００８｝が返えされる。
【０１６０】
（３）移動先物理ページ決定部５１は、移動元物理ページ集合｛０ｘ００００２，０ｘ００００３｝と移動先物理ページ集合｛０ｘ００００１，０ｘ００００８｝を指定して、アドレス変換表６００変更部５３を呼び出す。以下では、移動元物理ページ０ｘ００００３を移動先物理ページ０ｘ００００８に移動する動作を説明する。移動元物理ページ０ｘ００００２についても同様の動作が行われる。
【０１６１】
（４）アドレス変換表６００変更部５３は、アドレス表を検索して、物理ページ０ｘ００００３に対応するメモリ上のページとして、デフォルトの変換を用いて、メモリページ０ｘ００００３を求める。
【０１６２】
（５）アドレス変換表６００変更部５３は、アドレス表を検索して、物理ページ０ｘ００００８に対応するメモリ上のページとして、デフォルトの変換を用いて、メモリページ０ｘ００００８を求める。
【０１６３】
（６）アドレス変換表６００変更部５３は、アドレス変換表６００に、＜物理ページ、メモリページ＞の組として、＜０ｘ００００３，０ｘ００００８＞、＜０ｘ００００８、０ｘ００００３＞を記入する。
【０１６４】
（７）アドレス変換表６００変更部５３は、移動元物理ページを０ｘ００００３、移動先物理ページを０ｘ０００００８として物理ページ移動部５２を呼び出す。
【０１６５】
（８）物理ページ移動部５２は、移動元物理ページ０ｘ００００３をマップしている論理ページを検索して、プロセスＡの論理ページ０ｘ００００２を求める。
【０１６６】
（９）物理ページ移動部５２は、プロセスＡのページテーブルを書き換え、論理ページ０ｘ００００２に対応する物理ページを０ｘ００００８に変更する。
【０１６７】
物理ページ移動部５２は、物理ページ０ｘ００００３を解放する。
【０１６８】
この動作を終えた後のプロセスＡに関連する論理アドレス空間、物理アドレス空間及びメモリの対応関係と、アドレス変換表６００、プロセスＡのページテーブルを図３６に示す。一連の動作により、プロセスＡの利用するカラーの集合が｛０，１｝に変更されたことが分かる。また、アドレス変換表６００を更新することによって、プロセスＡが利用するメモリページは変更することなく、プロセスＡの利用するカラー集合が変更されていることが分かる。
【実施例３】
【０１６９】
次に、実施例３について説明する。本実施例は、キャッシュの一部の領域へのアクセスが集中するのを防ぐための例である。本実施例は、第１または第２の実施の形態に対応する実施例であり、ＯＳがカラー分散指示部５７を有することを特徴とする。カラー分散指示部５７は、利用されている物理ページのカラーを調べ、特定のカラーが多く利用されている場合にカラー管理部５０を呼び出す機能を有する。本実施例におけるソフトウェアは、図３７に示すように、ＯＳ内のカラー管理部５０及びカラー分散指示部５７を有している。その他の構成については、これまでの説明で明らかであるので、ここでは省略する。
【０１７０】
本実施例の動作を説明する。
【０１７１】
（１）カラー分散指示部５７が、全てのプロセスによって利用されている物理ページのカラーを調べヒストグラムを作成する。作成されたヒストグラムの例を図３８に示す。
【０１７２】
（２）カラー分散指示部５７は、利用されている全物理ページ数をカラー数で割り平均を求める。本例では、平均は２ページである。
【０１７３】
（３）カラー分散指示部５７は、２ページ以上利用されているカラーを持つ物理ページに対して、カラー変更をする。
【０１７４】
（３．１）カラー分散指示部５７は、物理ページ１６（カラー０）と移動先カラー２を指定して、カラー管理部５０を呼び出す。
【０１７５】
（３．２）カラー管理部５０は、物理ページ１６をマップしている論理ページが物理ページ３（カラー３）をマップするように変更することで、カラーを変更する。カラー管理部５０の動作については実施例１および実施例２で詳しく述べたのでここでは説明は省略する。
【０１７６】
以下、その他の物理ページに対しても同様にしてカラー変更を行う。
【０１７７】
図３９に、カラー変更後のヒストグラムを示す。カラーを均等に分散させることによって、特定のキャッシュ領域へのアクセス集中を削減することができる。
【０１７８】
本実施例では、全てのプロセスによって利用されている物理ページをカラー分散の対象にしたが、本実施例の別例として、一部のプロセスをカラー分散の対象にする形態をとっても良い。例えば、頻繁に実行されるプロセスの集合をカラー分散の対象にする形態や、同時に実行されるプロセスの集合をカラー分散の対象にする形態、単一プロセスをカラー分散の対象にする形態をとっても良い。また、本実施例の別例として、ＯＳが利用する物理ページをカラー分散の対象として含めても良い。
【実施例４】
【０１７９】
次に、実施例４について説明する。本実施例は、本発明の第３の実施の形態に対応しており、プロセス内でのキャッシュ競合ミスを動的に削減する例である。本実施例のソフトウェア構成を図４０に示す。
【０１８０】
プロセスの利用する異なるデータが、同じカラーを持つ異なる物理ページにマップされる場合、深刻なキャッシュ競合ミスを起こす可能性がある。例えば図４１に示すプログラム例では、配列ａとｂが同じカラーを持つ物理ページにマップされる場合、ループを実行する際に、深刻なキャッシュ競合ミスが起こる。この様な競合ミスを、データのカラーが異なる様に指定する事によって解決する。
【０１８１】
図４１の例では以下のような動作が行われる。
【０１８２】
（１）プログラムは、配列ａの論理ページ番号とカラー番号を指定して、カラー管理部５０を呼び出す。
【０１８３】
（２）カラー管理部５０は、配列ａが割り当てられている物理ページを求め、指定されたカラーの物理ページへ移動する。
【０１８４】
（３）プログラムは、配列ｂの論理ページ番号と（１）とは異なるカラー番号を指定して、カラー管理部５０を呼び出す。
【０１８５】
（４）カラー管理部５０は、配列ｂが割り当てられている物理ページを求め、指定されたカラーの物理ページへ移動する。
【０１８６】
以上により、配列ａとｂは異なるカラーを持つ物理ページに割り当てられる。
【０１８７】
プログラムの実行フェーズが変わり、配列間の競合関係が変更した場合は、当該配列間で同様の動作を行うことによって、動的に競合関係を解消することができる。
【０１８８】
以上詳細に説明した本発明の実施形態及び実施例によれば、アプリケーションが利用可能なカラーを変更することができる。したがって、アプリケーションが利用可能なカラーを増やすことで、アプリケーションが利用可能なキャッシュサイズを増やすことが可能である。アプリケーションが利用可能なキャッシュサイズが増えると、メモリアクセスのレイテンシを削減することができるため、アプリケーションの性能を向上させるという効果を奏する。
【０１８９】
また、新しいアプリケーションが起動されたときなどに、既存のアプリケーションが利用可能なカラーと、新しいアプリケーションが利用可能なカラーが重複しないように、利用可能なカラーを変更することができる。これにより、アプリケーション間のキャッシュ競合を削減することができるので、各アプリケーションの性能を安定化させるという効果を奏する。
【０１９０】
なお、上述した本発明の各実施形態及び各実施例は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。
【図面の簡単な説明】
【０１９１】
【図１】物理アドレス空間とキャッシュの関係を表す図である。
【図２】プロセス間のキャッシュ競合について表す図である。
【図３】キャッシュ競合を削減するための論理アドレスと物理アドレスのマッピングについて表す図である。
【図４】二つのプロセスがキャッシュ上の同じ位置を利用しないことについて表す図である。
【図５】プロセスの優先度が逆転した場合について示す図である。
【図６】本発明の実施形態の概略について示す図である。
【図７】本発明の第１の実施の形態が有するハードウェアの構成を示す図である。
【図８】本発明の第１の実施の形態の物理アドレス空間の構成を示す図である。
【図９】カラー管理部５０の構成を示す図である。
【図１０】メモリアクセスを行う際の動作について説明するための図である。
【図１１】移動物理先ページ決定部５１の動作について示す図である。
【図１２】本発明の第２の実施の形態が有するハードウェアの構成を示す図である。
【図１３】本発明の第２の実施の形態が有する物理アドレス空間の構成を示す図である。
【図１４】本発明の第２の実施の形態が有するカラー管理部５０の構成を示す図である。
【図１５】アドレス変換部３０の動作を説明する図である。
【図１６】移動先物理ページ決定部５１の動作を説明する図である。
【図１７】本発明の第３の実施の形態におけるカラー管理部５０の構成を示す図である。
【図１８】本発明の第３の実施の形態におけるカラー管理部５０の動作を示す図である。
【図１９】本発明の第４の実施の形態におけるカラー管理部５０の構成を示す図である。
【図２０】本発明の第４の実施の形態におけるカラー管理部５０の動作を示す図である。
【図２１】本発明の第５の実施の形態におけるカラー管理部５０の構成を示す図である。
【図２２】本発明の第５の実施の形態におけるカラー管理部５０の動作を示す図である。
【図２３】本発明の実施例１の物理アドレス空間を示す図である。
【図２４】本発明の実施例１のハードウェアの基本的構成を示す図である。
【図２５】本発明の実施例１のハードウェアの基本的構成の変形例を示す図である。
【図２６】本発明の実施例１における各領域とメモリの対応関係を示す図である。
【図２７】本発明の実施例１におけるソフトウェアの構成を示す図である。
【図２８】本発明の実施例１におけるカラー割り当てについて示す図である。
【図２９】本発明の実施例１において優先度が逆転する場合について示す図である。
【図３０】本発明の実施例１における利用可能カラー変更後のキャッシュ制御の状況について示す図である。
【図３１】本発明の実施例２のハードウェアの基本的構成を示す図である。
【図３２】本発明の実施例２の物理アドレス空間を示す図である。
【図３３】本発明の実施例２におけるアドレス変換表について示す図である。
【図３４】本発明の実施例２においてキャッシュ利用量を制御する場合について示す図である。
【図３５】本発明の実施例２における優先度変更前のプロセスＡに関連する情報について示す図である。
【図３６】本発明の実施例２におけるプロセスＡのページテーブルについて示す図である。
【図３７】本発明の実施例３におけるＯＳの基本的構成を表す図である。
【図３８】本発明の実施例３において作成されたヒストグラムの例について示す図である。
【図３９】カラー変更後のヒストグラムについて示す図である。
【図４０】本発明の実施例４におけるソフトウェアの基本的構成を表す図である。
【図４１】本発明の実施例４におけるプログラム例について示す図である。
【符号の説明】
【０１９２】
１０、１００  ＣＰＵ
２０、２００  キャッシュ
３０、３００  アドレス変換部
４０、５００  メモリ
５０  カラー管理部
５１  移動先物理ページ決定部
５２  物理ページ移動部
５３  アドレス変換表変更部
５４  論理物理ページ決定部
５５  移動元物理ページ決定部
５６  移動元カラー決定部
５７  カラー分散指示部
６０、６００  アドレス変換表
４００  バス
【図１】
0005196249.tif 000002
【図２】
0005196249.tif 000003
【図３】
0005196249.tif 000004
【図４】
0005196249.tif 000005
【図５】
0005196249.tif 000006
【図６】
0005196249.tif 000007
【図７】
0005196249.tif 000008
【図８】
0005196249.tif 000009
【図９】
0005196249.tif 000010
【図１０】
0005196249.tif 000011
【図１１】
0005196249.tif 000012
【図１２】
0005196249.tif 000013
【図１３】
0005196249.tif 000014
【図１４】
0005196249.tif 000015
【図１５】
0005196249.tif 000016
【図１６】
0005196249.tif 000017
【図１７】
0005196249.tif 000018
【図１８】
0005196249.tif 000019
【図１９】
0005196249.tif 000020
【図２０】
0005196249.tif 000021
【図２１】
0005196249.tif 000022
【図２２】
0005196249.tif 000023
【図２３】
0005196249.tif 000024
【図２４】
0005196249.tif 000025
【図２５】
0005196249.tif 000026
【図２６】
0005196249.tif 000027
【図２７】
0005196249.tif 000028
【図２８】
0005196249.tif 000029
【図２９】
0005196249.tif 000030
【図３０】
0005196249.tif 000031
【図３１】
0005196249.tif 000032
【図３２】
0005196249.tif 000033
【図３３】
0005196249.tif 000034
【図３４】
0005196249.tif 000035
【図３５】
0005196249.tif 000036
【図３６】
0005196249.tif 000037
【図３７】
0005196249.tif 000038
【図３８】
0005196249.tif 000039
【図３９】
0005196249.tif 000040
【図４０】
0005196249.tif 000041
【図４１】
0005196249.tif 000042