(57)【要約】  キャッシュメモリにおけるキャッシュの格納位置を、論理アドレスと物理アドレスのマッピングの単位となる一定サイズのページ毎にカラーＩＤで識別するメモリマッピング方法において、メモリ１１上の一のアドレスを物理アドレス空間１２上の領域１３−０、１３−１、１３−Ｎ−１にマップし、領域１３−０、１３−１、１３−Ｎ−１のそれぞれからメモリ１１へのアクセスに対して、それぞれ異なるアドレス変換１４−０、１４−１、１４−Ｎ−１を行い、メモリ１１の一のアドレスに対して、領域１３−０、１３−１、１３−Ｎ−１のそれぞれから異なるカラーＩＤでアクセスする。
2009110446.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、前記メモリに記憶されるデータを一時保持し、物理アドレスによって前記データの格納位置が決まるキャッシュメモリと、を備え、前記格納位置を、論理アドレスと前記物理アドレスとのマッピングの単位となる一定サイズのページ毎に、カラーＩＤで識別するメモリシステムでの、前記メモリの物理アドレス空間へのマッピング方法において、
前記メモリの一のアドレスを前記物理アドレス空間の複数の領域にマップし、
前記複数の領域のそれぞれから前記メモリへのアクセスに対して、それぞれ異なるアドレス変換を行い、
前記メモリ上の前記一のアドレスに対して、前記複数の領域のそれぞれから異なるカラーＩＤでアクセスする、
ことを特徴とするメモリマッピング方法。
【請求項２】
前記アドレス変換は、前記キャッシュメモリとメモリバスとの間に備わるアドレス変換部によって行われること、を特徴とする請求項１に記載のメモリマッピング方法。
【請求項３】
前記アドレス変換は、メモリバスと前記メモリとの間に備わるアドレス変換部によって行われること、を特徴とする請求項１に記載のメモリマッピング方法。
【請求項４】
前記アドレス変換は、前記領域毎に異なるオフセットを前記領域のアドレスに加えることで行われることを特徴とする請求項１乃至３のいずれか１項に記載のメモリマッピング方法。
【請求項５】
前記物理アドレス空間上でとり得る前記カラーＩＤの個数をカラー数とし、
前記マッピングは、前記物理アドレス空間上で前記カラー数と同数の領域に前記メモリをマップし、
前記アドレス変換は、前記複数の領域のそれぞれで前記カラーＩＤを１ずつずらすようにアドレス変換を行うこと、を特徴とする請求項１乃至４のいずれか１項に記載のメモリマッピング方法。
【請求項６】
前記マッピングは、前記物理アドレス空間上の前記複数の領域に、該領域毎に先頭ページの前記カラーＩＤが異なるように前記メモリをマップすること、を特徴とする請求項１乃至４のいずれか１項に記載のメモリマッピング方法。
【請求項７】
前記マッピングは、前記物理アドレス空間上の前記カラー数よりも少ない数の領域に前記メモリをマップし、
前記アドレス変換は、前記複数の領域のそれぞれで前記カラーＩＤを１ずつずらすようにアドレス変換を行うこと、を特徴とする請求項１乃至４のいずれか１項に記載のメモリマッピング方法。
【請求項８】
前記アドレス変換は、複数の前記アドレス変換部によって行われること、を特徴とする請求項１乃至７のいずれか１項に記載のメモリマッピング方法。
【請求項９】
前記マッピングは、前記複数の領域のそれぞれのサイズが前記メモリのサイズよりも小さい場合は、前記複数の領域の個数を前記カラー数よりも大きくすること、を特徴とする請求項１乃至８のいずれか１項に記載のメモリマッピング方法。
【請求項１０】
前記アドレス変換は、前記アドレス変換の方法を変更すること、を更に備えることを特徴とする請求項１乃至９のいずれか１項に記載のメモリマッピング方法。
【請求項１１】
前記アドレス変換は、前記物理アドレス空間上のアドレスとメモリ空間上のアドレスとを対応させるアドレス変換表に基づいて行われ、
前記アドレス変換表は内容を変更することが可能であること、を特徴とする請求項１乃至１０のいずれか１項に記載のメモリマッピング方法。
【請求項１２】
物理アドレス空間上のメモリをマップした前記領域のサイズが前記メモリのサイズと等しいこと、を特徴とする請求項１１に記載のメモリマッピング方法。
【請求項１３】
メモリと、前記メモリに記憶されるデータを一時保持し、物理アドレスによって前記データの格納位置が決まるキャッシュメモリと、物理アドレス空間上の複数の領域のそれぞれから前記メモリへのアクセスに対して、それぞれ異なるアドレス変換を行うアドレス変換部と、を備え、
前記格納位置を、論理アドレスと前記物理アドレスとのマッピングの単位となる一定サイズのページ毎に、カラーＩＤで識別し、
前記メモリ上の一のアドレスを前記複数の領域にマップし、前記複数の領域のそれぞれから前記メモリへのアクセスに対して、前記アドレス変換部でそれぞれ異なるアドレス変換を行い、前記複数の領域のそれぞれから異なるカラーＩＤで前記一のアドレスにアクセスすることを特徴とするメモリシステム。
【請求項１４】
前記キャッシュメモリとメモリバスとの間に前記アドレス変換部を備えること、を特徴とする請求項１３に記載のメモリシステム。
【請求項１５】
メモリバスと前記メモリとの間に前記アドレス変換部を備えること、を特徴とする請求項１３に記載のメモリシステム。
【請求項１６】
前記アドレス変換部は、前記領域毎に異なるオフセットを前記領域のアドレスに加えることによってアドレス変換を行うこと、を特徴とする請求項１３乃至１５のいずれか１項に記載のメモリシステム。
【請求項１７】
前記物理アドレス空間上でとり得る前記カラーＩＤの個数をカラー数とし、
前記物理アドレス空間上で前記カラー数と同数の領域に前記メモリをマップし、
前記アドレス変換部は、前記複数の領域のそれぞれで前記カラーＩＤを１ずつずらすようにアドレス変換を行うこと、を特徴とする請求項１３乃至１６のいずれか１項に記載のメモリシステム。
【請求項１８】
前記物理アドレス空間上の前記複数の領域に、該領域毎に先頭ページの前記カラーＩＤが異なるように前記メモリをマップしたこと、を特徴とする請求項１３乃至１６のいずれか１項に記載のメモリシステム。
【請求項１９】
前記物理アドレス空間上の前記カラー数よりも少ない数の領域に前記メモリをマップし、
前記アドレス変換部は、前記複数の領域のそれぞれで前記カラーＩＤを１ずつずらすようにアドレス変換を行うこと、を特徴とする請求項１３乃至１６のいずれか１項に記載のメモリシステム。
【請求項２０】
前記アドレス変換部を複数備えること、を特徴とする請求項１３乃至１９のいずれか１項に記載のメモリシステム。
【請求項２１】
前記複数の領域のそれぞれのサイズが前記メモリのサイズよりも小さい場合は、前記複数の領域の個数を前記カラー数よりも大きくすること、を特徴とする請求項１３乃至２０のいずれか１項に記載のメモリシステム。
【請求項２２】
前記アドレス変換部は、前記アドレス変換の方法を変更するための変換式を備えること、を特徴とする請求項１３乃至２１記載のメモリシステム。
【請求項２３】
前記アドレス変換部は、
物理アドレス空間上のアドレスとメモリ空間上のアドレスとを対応させるアドレス変換表を備え、
前記アドレス変換表は内容を変更することが可能であって、
前記アドレス変換表を用いてアドレス変換を行うことを特徴とする請求項１３乃至２２記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムにおけるメモリシステム及びメモリマッピング方法に関し、特にメモリをアドレス空間にマップするメモリシステム及びメモリマッピング方法に関する。
【背景技術】
【０００２】
プロセッサ、キャッシュメモリ及び主メモリ（以下、主メモリを単にメモリと呼ぶ）を備えるコンピュータシステムにおいて、メモリに記憶されるデータを一時保持するキャッシュメモリ（以下、キャッシュメモリをキャッシュと呼ぶ）を有効に利用して動作速度の遅いメモリによるレイテンシ(latency)を隠蔽する方法は、アプリケーションソフトウェアの性能向上に重要であることが知られている。【０００３】
物理インデックスキャッシュでは、物理アドレスによってデータがキャッシュ上に格納されるときの位置（インデックス）が決められる。ＯＳによる論理アドレスと物理アドレスのマッピングはページと呼ばれる単位（４ＫＢがよく用いられる）で行われ、キャッシュ上で同じ位置に格納されるページは同じカラー番号（カラーＩＤ）で表現される。【０００４】
図１に、物理アドレス空間とキャッシュの関係の例を示す。【０００５】
図１の物理アドレス空間中のカッコ外の番号はページ番号を表わし、カッコ内の番号はカラー番号を表す。ページ番号は、
ページ番号 = アドレス / ページサイズ
であり、
カラー番号 = ページ番号 % カラー数
である。ただし、/ は整数除算を表わし % は剰余演算(reminder operation)を表す。又、カラー数は、物理アドレス空間でとり得るカラー番号の個数である。【０００６】
図１はカラー数が8の場合の例であるが、カラー番号はキャッシュ上の格納位置を示している。図１のキャッシュ中の番号はカラー番号を示しており、物理アドレス空間上のページはキャッシュ上の同じカラー番号を持つ場所に格納される。【０００７】
非特許文献１に記載されているように、このような物理インデックスキャッシュの特徴を利用して、ＯＳによるプロセスの論理アドレスと物理アドレスのマッピング時に、キャッシュの利用効率を高めることが可能であることが知られている。【０００８】
キャッシュの利用効率を悪化させる現象として、プロセス間のキャッシュ競合がある。これは、図２に示すように、複数のプロセスがアクセスするデータがキャッシュ上の同じ位置に格納される場合に、お互いにデータをキャッシュ上から追い出しあう現象である。このようなキャッシュ競合を削減する方法として、プロセス毎に利用可能なカラー番号を分け、それぞれのプロセスの論理ページには利用可能カラー番号を持つ物理ページのみをマッピングすることで、プロセス毎にキャッシュ上の同じ位置を利用させないようにする方法がある。【０００９】
図３に、２つのプロセスＡ、Ｂ間のキャッシュ競合を削減するための論理アドレスと物理アドレスのマッピングを示す。プロセスＡの論理ページはカラー番号0,1,2,3を持つページにのみマップされ、プロセスＢの論理ページはカラー番号4,5を持つページにのみマップされている。従って、図４に示すように、２つのプロセスはキャッシュ上の同じ位置を利用しない。【００１０】
特許文献１はリアルタイムタスクとその他のタスクでカラー番号を分けることによって、リアルタイムタスクがキャッシュ競合によって性能が下がらないようにする方法を開示している。【００１１】
特許文献２は、このようなメモリサイズ制限の問題を解決する方法としてフリーカラーリング（Free Coloring）手法を開示している。図５はFree Coloring手法を説明するための図面である。【００１２】
図５に示すようにFree Coloringでは、ＣＰＵバスのアドレス幅を、メモリバスのアドレス幅に対してカラー数分だけ増やす。【００１３】
図５において、増加分のｂｉｔ（図中のｃ）はキャッシュにアクセスするときにカラーを指定する位置に加えられる。【００１４】
一方、メモリにアクセスする際はこの増加分のｂｉｔが削除される。このようにすることで、物理アドレス空間とメモリの対応関係（マッピング）は図６の様に、複数の物理アドレス空間上のページがメモリ上の１つのページに対応するようになる。ここでは、このメモリ上の同一のページに対応する物理空間上のページをグループと呼ぶ。【００１５】
グループ内にはカラー数だけのページが存在し、それらはすべて異なるカラーを持つため、任意のカラーでメモリ上のページにアクセスすることが可能となる。従って、カラー指定のためにプロセスが利用可能なメモリサイズの制限を緩和できる。【００１６】
特許文献３は、メモリを複数の区分に分け、区分間でキャッシュを共有するものであって、異なる区分のメモリが同一の物理アドレスを有し、キャッシュのタグにPID（パーティション識別部）という拡張ビットを付して異なる区分のメモリ位置を区別している。【００１７】
又、特許文献４は、キャッシュがメモリアクセスに対して発生する競合ミスの確率を低くするようにキャッシュ上のセットを特定するインデックスを決定するようにしている。
【特許文献１】特開２０００−３３９２２０号公報
【特許文献２】特表平０９−５０７５９９号公報
【特許文献３】特開２００１−２８２６１７号公報
【特許文献４】特開平０９−２２３０６９号公報
【非特許文献１】Kessler他著「Page Placement Algorithms for Large Real-Indexed Caches」 ACM Transactions on Computer Systems, 1992, Vol. 4, No. 10, pp.338-359
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、論理ページと物理ページのマッピングによってプロセスのキャッシュ利用を制御する特許文献１では、プロセスに割り当て可能なページを制限するために、プロセスが利用可能なメモリサイズが小さくなることである。図７に、８カラーの場合に利用可能なカラーの集合（カラー集合）が{0,1}に制限されたプロセスの例を示す。図の左側が物理アドレス空間であり、図の右側にプロセスの論理アドレス空間にマップ可能なページを示す。図７に示されているように、このプロセスは最大で全メモリサイズの２５％しか利用できないという問題がある。【００１９】
又、特許文献２のようにグループ内の全てのページが同一のメモリ上のページに対応することは、同時にはグループ内のページ内の１つしか利用することができないことを意味し、ＣＰＵバス上の物理アドレス空間をとびとびに利用しなければならないことになる。ここではこの様な制限を「アドレスの連続性が失われる」と呼ぶことにする。【００２０】
特許文献２に係るFree Coloringでは、このようにアドレスの連続性が失われるため、アドレスに連続性があることを前提とした既存のＯＳに組み込むことが困難であるという問題がある。【００２１】
又、連続する複数の物理ページをまとめて１つのページテーブルエントリで大きな論理ページにマップするラージページでは、まとめられたページの全てにアクセスされる可能性がある。従ってアドレスの連続性が失われた場合は、ラージページの使用が困難になるという問題もある。【００２２】
特許文献３では、キャッシュのタグにPIDという拡張ビットを付して異なる区分のメモリ位置を区別しているが、メモリ上の同一位置からキャッシュ上の異なるカラーにはアクセスできないという問題がある。【００２３】
特許文献４も、キャッシュがメモリアクセスに対して発生する競合ミスの確率を低くするようにキャッシュ上のセットを特定するインデックスを決定するようにしているが、メモリをマップした物理アドレス空間上に複数の領域を有さず、メモリ上の同一位置からキャッシュ上の異なるカラーにはアクセスできないという問題がある。【００２４】
本発明の典型的(exemplary)な目的は、ＯＳの論理アドレスと物理アドレスのマッピングによってプロセスのキャッシュ利用を制御する方式において、アドレスの連続性を失うことなく、プロセスが利用可能なメモリサイズを増やすことができるメモリマッピング方法及びメモリシステムを提供することにある。
【課題を解決するための手段】
【００２５】
本発明に係る典型的(exemplary)なメモリマッピング方法は、メモリと、前記メモリに記憶されるデータを一時保持し、物理アドレスによって前記データの格納位置が決まるキャッシュメモリと、を備え、前記格納位置を、論理アドレスと前記物理アドレスとのマッピングの単位となる一定サイズのページ毎に、カラーＩＤで識別するメモリシステムでの、前記メモリの物理アドレス空間へのマッピング方法において、
前記メモリの一のアドレスを前記物理アドレス空間の複数の領域にマップし、
前記複数の領域のそれぞれから前記メモリへのアクセスに対して、それぞれ異なるアドレス変換を行い、
前記メモリ上の前記一のアドレスに対して、前記複数の領域のそれぞれから異なるカラーＩＤでアクセスする、
ことを特徴とする。【００２６】
本発明に係る典型的(exemplary)なメモリシステムは、メモリと、前記メモリに記憶されるデータを一時保持し、物理アドレスによって前記データの格納位置が決まるキャッシュメモリと、物理アドレス空間上の複数の領域のそれぞれから前記メモリへのアクセスに対して、それぞれ異なるアドレス変換を行うアドレス変換部と、を備え、
前記格納位置を、論理アドレスと前記物理アドレスとのマッピングの単位となる一定サイズのページ毎に、カラーＩＤで識別し、
前記メモリ上の一のアドレスを前記複数の領域にマップし、前記複数の領域のそれぞれから前記メモリへのアクセスに対して、前記アドレス変換部でそれぞれ異なるアドレス変換を行い、前記複数の領域のそれぞれから異なるカラーＩＤで前記一のアドレスにアクセスすることを特徴とする。
【発明の効果】
【００２７】
本発明による典型的(exemplary)な効果は、メモリ上の一のアドレスを物理アドレス空間上の複数の領域にマップし、これらの領域のそれぞれからメモリへのアクセスに対して異なるアドレス変換を行うことで、これらの領域のそれぞれから異なるカラーＩＤでアクセスすることにより、アドレスの連続性を失うことなく、かつプロセスが利用可能なメモリサイズを減少させることなく、ＯＳの論理ページと物理ページのマッピングによってプロセスのキャッシュ利用を制御することができるメモリマッピング方法及びメモリシステムを得ることができることである。
【図面の簡単な説明】
【００２８】
【図１】物理インデックスキャッシュと物理アドレス空間の関係を説明するための図である。
【図２】プロセス間キャッシュ競合を説明するための図である。
【図３】ＯＳの論理アドレスと物理アドレスの変換によるキャッシュ制御を説明するための図である。
【図４】ＯＳの論理アドレスと物理アドレスの変換によるキャッシュ制御によるプロセス間キャッシュ制御を説明するための図である。
【図５】特許文献２に係るFree Coloring手法を説明するための図である。
【図６】特許文献２に係るFree Coloring手法によるメモリマップを説明するための図である。
【図７】特許文献１に係るキャッシュ制御のために生じるメモリサイズ制限を説明するための図である。
【図８】本発明の概要を示す図である。
【図９】本発明の第１の実施の形態の構成を示す図である。
【図１０】本発明の第１の実施の形態の動作を示すフローチャートである。
【図１１】本発明の第１の実施の形態におけるメモリマッピングを示す図である。
【図１２】本発明の第１の実施の形態の構成を示す図である。
【図１３】本発明の第１の実施の形態の別の構成を示す図である。
【図１４】本発明の第１の実施の形態におけるページの対応関係を示す図である。
【図１５】本発明の第１の実施の形態に対応する別の実施の形態におけるメモリマッピングを示す図である。
【図１６】本発明の第２の実施の形態の構成を示す図である。
【図１７】本発明の第２の実施の形態におけるメモリマッピングを示す図である。
【図１８】本発明の第２の実施の形態におけるページの対応関係を示す図である。
【図１９】本発明の第３の実施の形態の構成を示す図である。
【図２０】本発明の第３の実施の形態の動作を示すフローチャートである。
【図２１】本発明の第３の実施の形態の構成を示す図である。
【図２２】本発明の第４の実施の形態の構成を示す図である。
【図２３】本発明の第４の実施の形態の構成を示す図である。
【図２４】本発明の第４の実施の形態のアドレス変換表の例を示す図である。
【図２５】本発明の第４の実施の形態のアドレス変換表の例を示す図である。
【符号の説明】
【００２９】
１  メモリ
２  物理アドレス空間
３−０、３−１、３−Ｎ−１  領域
４−０、４−１、４−Ｎ−１  アドレス変換
１５  ＣＰＵ
１６  キャッシュ
１７  アドレス変換部
１８  メモリ
１９  物理アドレス空間
２５  ＣＰＵ
２６  キャッシュ
２７  アドレス変換部
２８  メモリ
２９  物理アドレス
３５  ＣＰＵ
３６  キャッシュ
３７  アドレス変換部
３７ａ  第１アドレス変換部
３７ｂ  第２アドレス変換部
３８  メモリ
４５  ＣＰＵ
４６  キャッシュ
４７  アドレス変換部
４７ａ  アドレス変換変更部
４８  メモリ
４９  物理アドレス
５０  アドレス変換表
【発明を実施するための最良の形態】
【００３０】
次に、本発明を実施するための典型的(exemplary)な実施の形態について図面を参照して詳細に説明する。ここで、図８は本発明の概要を示す図である。【００３１】
図８に示すメモリマッピング方法は、メモリ１１を物理アドレス空間１２上の複数の領域１３−０〜１３−Ｎ−１にマップし、それぞれの領域からメモリへのアクセスに対して異なるアドレス変換１４−０〜１４−Ｎ−１を行うことで、それぞれの領域からメモリ上の同一アドレスに異なるカラーでアクセスする。【００３２】
複数の領域を用いることによって、メモリ上の同一アドレスに異なるカラーでアクセスできるため、カラー指定されたプロセスに対して、ＯＳがプロセスに割り当て可能な物理ページが増加する。【００３３】
また各領域内ではアドレスの連続性が保たれる。
［第１の実施の形態］
図９は本発明の第1の実施の形態の構成を示す図である。本実施の形態は、ＣＰＵ１５、キャッシュ１６、アドレス変換部１７、メモリ１８及びメモリ１８を複数の領域にマップした物理アドレス空間１９によって構成される。キャッシュ１６はメモリ１８に記憶されるデータを一時保持する。キャッシュ１６はキャッシュメモリ、メモリ１８は主メモリである。物理アドレス空間１９は、メモリ１８をマップした領域をカラー数と等しい数だけ持つ。【００３４】
又、アドレス変換部１７は、領域毎に１カラーずつずれるようにアドレスにオフセットを加えるようにアドレス変換を行う。【００３５】
すなわち、本実施の形態のアドレス変換においては、領域数とカラー数をNとするときに、メモリ上のアドレスyに対応する領域i上のアドレスを xi,yとしたときのカラーの集合{Color(xi,y): i=0,1,..,N-1}に対して、以下の式１が成り立つ。【００３６】
{Color(xi,y): i=0,1,..,N-1} = {0,1,...,N-1}      （式１）
なお、Color(x)はアドレスxのカラーを表わし、以下の式で表される。【００３７】
Color(x) = (x / ページサイズ) % カラー数
ただし、/ は整数除算を表わし % は剰余を表す。また、カラー数は、
カラー数 = キャッシュサイズ / Way 数 / ページサイズ
である。【００３８】
式１を満たすようなアドレス変換が存在することを説明するために、具体的な例を用いて説明する。ただし、これは、本実施の形態のアドレス変換が、この具体的な例に限られることを示すものではない。【００３９】
式１を満たすようなアドレス変換の例は、領域i上のアドレスxiに対して以下の変換式fi(xi)を適用することである。ここで、baseiは領域iの先頭アドレスである。【００４０】
fi(xi) = xi- basei + ページサイズ * i
このアドレス変換の場合、メモリ上のyに対応する領域i上のアドレスxi,yは、
y = f(xi,y) = xi,y - basei+ ページサイズ * i
であるから、xi,y= y + basei - ページサイズ * i
である。従って、
Color(xi,y) = Color(y + basei - ページサイズ * i)
であるから、例えば全ての領域に対して Color(basei) = C （Cは定数）となるように先頭アドレスを選べば、
Color(xi,y) = (Color(y) + C + i) % カラー数
となり、式１が成り立つことが分かる。【００４１】
次に本発明の第１の実施の形態の動作を説明する。図１０は、本発明の第１の実施の形態の動作を示す図であって、領域i上のアドレスxiを通してメモリ上のアドレスyにアクセスする場合の動作を示している。【００４２】
この場合のメモリアクセスは以下のような順序で行われる。なお、ＭＭＵ (Memory Management Unit)による論理アドレスと物理アドレスの変換までの動作は明らかであるため、物理アドレスへの変換後から説明する。また、アドレス変換部での領域iに対する変換をfiとする。【００４３】
手順としては、図１０に示したように、
（１）ＣＰＵ１５が物理アドレスxiを発行する（ステップＳ１１）
（２）キャッシュ１６がアドレスxiでアクセスされる（ステップＳ１２）。この時のカラーはColor(xi)である。
（３）キャッシュミス等でメモリ１８にアクセスが起こるとき、物理アドレス xiが発行される（ステップＳ１３）
（４）アドレス変換部１７によりアドレスy = fi (xi)に変更される（ステップＳ１４）
（５）メモリ１８に対してアドレスyが発行される（ステップＳ１５）
である。【００４４】
次に、具体的な例を用いて本実施形態を説明する。【００４５】
図１１は本発明の第１の実施の形態におけるメモリマップを示す。本実施の形態は、メモリサイズが256MB（アドレス0x00000000から0x0fffffff）、ページサイズが4KB、カラー数と領域数が４の場合の例である。本実施の形態では、図１１に示すように、メモリは物理アドレス空間上の４つの領域にマップされており、それぞれの開始アドレス（basei）は、領域０は0x00000000、領域１は0x10000000、領域２は0x20000000、領域３は0x3000000である。【００４６】
又、本実施の形態の以下のアドレス変換式を適用することでアドレス変換を行う。【００４７】
fi(x) = x - ページサイズ * i ? basei * i + sizei
(basei ≦ x ＜ basei + ページサイズ * i)
fi(x) = x - ページサイズ * i ? basei
(basei + ページサイズ * i ≦ x ＜ basei + sizei)
ここで、sizeiはメモリのサイズを表す。【００４８】
図１２に本発明の第１の実施の形態の構成を示す。本実施の形態では、アドレス変換はキャッシュ１６とバスの間で行われる。本実施の形態の別の構成として、図１３に示すように、バスとメモリ１８の間でアドレス変換を行っても良い。【００４９】
次に本実施の形態の動作を説明するため、図１１の領域2上の0x20006000番地にアクセスする場合を例に説明する。【００５０】
手順としては、
（１）ＣＰＵがアドレス0x20006000を発行する
（２）キャッシュがアドレス0x20006000でアクセスされる。この時のカラーは (0x20006000 / 4KB) % 4 = 1 である
（３）キャッシュミス等によりメモリにアクセスが発生する場合、物理アドレス0x20006000が発行される
（４）アドレス変換部によりアドレス (0x20006000 - 4KB * 2 - 0x20000000) = 0x00004000 に変換される
（５）メモリにアドレス0x00004000が発行されるである。【００５１】
本実施の形態における各領域とメモリの対応関係を図１４に示す。図中括弧外の数字はページ番号（すなわちアドレス/ページサイズ）を表わし、括弧内の数字はカラー番号（すなわちページ番号%カラー数）を表す。【００５２】
図１４に示されているように、アドレス変換により各領域でカラーが1ずつずらされており、４つの領域を利用することで、メモリ上のページに対して任意のカラーでアクセスできることが分かる。【００５３】
例えば、メモリ上のページ0x00000をマップした領域０上のページは0x00000でカラーは０であるのに対して、領域１上のページは0x10001でカラーは１、領域２上のページは0x20002でカラーは２、領域３上のページは0x30003でカラーは３である。つまり、メモリ上のページ0x00000にアクセス可能なカラーの集合は {0,1,2,3}であり、全カラーを含んでいる。従って、利用可能カラー集合がどのようなプロセスでも、メモリ上のページ0x00000を利用することができる。【００５４】
例えば、利用可能カラーの集合が{0}に設定されたプロセスの場合、１つの領域しか利用できない場合の利用可能な最大メモリサイズは256MB/4=64MBで、全体の25%である。これに対して本実施の形態の場合では利用可能なメモリサイズは256MBと、全メモリの100%に増加している。【００５５】
次に、本発明の第１の実施の形態に対応する別の実施の形態について説明する。図１５の本実施の形態におけるメモリマップに示すように、各領域の開始アドレスをずらすことによって、アドレス変換を簡略化している。【００５６】
本実施の形態は、メモリサイズが256MB（アドレス0x00000000から0x0fffffff）、カラー数と領域数が４の場合の例である。本実施の形態では、図15に示すように、メモリは物理アドレス空間上の４つの領域にマップされており、それぞれの開始アドレス（basei）は、領域０は0x00000000、領域１は0x10001000、領域２は0x20002000、領域３は0x30003000である。また、本実施の形態のアドレス変換式を以下に示す。【００５７】
fi(x) = x - basei * i
本実施の形態における各領域とメモリの対応関係は図１４に示した第１の実施の形態の対応関係と同じである。【００５８】
以上説明したように、ＯＳによる論理アドレスと物理アドレスのマッピングによるキャッシュ制御によってプロセスが利用可能なカラー集合をもつ場合に、Color(xi)がその集合に含まれず、領域i中のxiを含むページをこのプロセスに割り当てることができない場合であっても、本発明の第１の実施の形態によれば、メモリ上のアドレスyにアクセスするために複数の領域を利用することが可能である。【００５９】
これは、式１から分かるように、アドレスyに対応する物理アドレス空間上のアドレスのカラー集合{Color(xi,y: i=0,1,...n-1) は全てのカラーを含む。従って、Color(xi,y)にプロセスが利用可能なカラーとなるような領域iが必ず存在するため、そのようなxi,yを含むページをプロセスに割り当てることで、プロセスはメモリ上のアドレスyを利用することができる。すなわち、プロセスが利用可能なカラーの集合に関わらず、プロセスに任意のページを割り当てることが可能になり、キャッシュ制御を行うためにプロセスの利用可能なメモリサイズが減少するという問題を解決できる。【００６０】
また、変換式から分かるように、各領域中の全てのアドレスは異なるメモリ上のアドレスに対応しているため、物理アドレス空間上のアドレスの連続性が失われないという効果も奏する。
［第２の実施の形態］
次に、本発明の第２の実施の形態を実施するための最良の形態について図面に基づいて詳細に説明する。図１６は本発明の第２の実施の形態の構成を示す図である。【００６１】
本実施の形態は、ＣＰＵ２５、キャッシュ２６、アドレス変換部２７、メモリ２８及びメモリ２８を複数の領域にマップした物理アドレス空間２９から構成される。【００６２】
本実施の形態の物理アドレス空間２９は、メモリ２８をマップした領域数がカラー数より少ない。【００６３】
本実施の形態のアドレス変換部２７は、 それぞれの領域毎に０以上でカラー数より小さい異なる定数Ci（iは領域を表す番号）だけカラーをずらすようにアドレスにオフセットを加えることでアドレス変換をする。【００６４】
すなわち、本発明のアドレス変換の特徴は、カラー数をN、領域数をMとすると、メモリ上のアドレスyに対応する領域i上のアドレスをxi,yとしたときのカラーの集合{Color(xi,y): i=0,1,..,M-1}に対して以下の式２が成り立つことである。
{Color(xi,y): i=0,1,...,M-1} = {(Cy + Ci) % N: i=0,1,...,M-1}     （式２）
ここで、
M < N、
Ciは全てのiに対して異なる0以上N-1以下の定数、
Cyはyによって異なる0からN-1までの定数
である。【００６５】
すなわち、カラーの集合{Color(xi,y): i=0,1,...,M-1}がM個の異なるカラーを含んでいることを意味している。なお、第１の実施の形態は、式２においてN=Mの場合である。【００６６】
次に、本発明の第２の実施の形態の具体的な動作について説明する。本実施の形態は、メモリサイズが256MB（アドレス0x00000000から0x0fffffff）、カラー数が４で領域数が２の場合の例である。本実施の形態では、図１７に示すように、メモリは物理アドレス空間上の２つの領域にマップされており、それぞれの開始アドレス（basei）は、領域０は0x00000000、領域１は0x10000000である。【００６７】
また、本実施の形態では領域毎に2カラーずらすように、以下のようなアドレス変換式が用いられている。
fi(x) = x - ページサイズ * 2 * i - basei * i + sizei
(basei ≦ x ＜ basei + ページサイズ * 2 * i)
fi(x) = x - ページサイズ * 2 * i - basei
(basei + ページサイズ * 2 * i ≦ x ＜ basei + sizei)
ここで、sizeiはメモリのサイズを表す。【００６８】
この実施の形態における各領域とメモリの対応関係を図１８に示す。【００６９】
図１８に示されているように、アドレス変換により各領域でカラーが２ずつずらされており、４つの領域を利用することで、メモリ上のページに対して２カラーでアクセスできることが分かる。【００７０】
例えば、メモリ上のページ0x00000をマップした領域０上のページは0x00000でカラーは０であるのに対して、領域１上のページは0x10001でカラーは２である。従って、利用可能カラー集合に0を含むプロセスのみならず、2を含むプロセスもメモリ上のページ0x00000を利用することができる。【００７１】
又、利用可能カラーの集合が{0}に設定されたプロセスの場合、１つの領域しか利用できない場合の利用可能な最大メモリサイズは256MB/4=64MBで、全体の25%である。これに対して本実施の形態による複数の領域を利用する場合は128MBであり、メモリの 50%が利用可能である。【００７２】
以上説明したように、本実施の形態では、メモリ上のアドレスyに対応するための物理アドレス空間上のアドレスのカラー集合がM色のカラーを含むため、アドレスyにM色のカラーでアクセスできる。従って、利用できるカラーが制限されたプロセスに対して、メモリ上のアドレスyに対応するときのカラー集合 {Color(xi,y):i=0,...,M-1}中に、利用可能なカラーが含まれる場合は、このプロセスにyを含むページを割り当てることが可能になり、プロセスに割り当て可能なページを増加させることができるという効果を奏する。【００７３】
又、本実施の形態では、領域数がカラー数より小さいため、本発明の第１の実施の形態に比べて物理アドレス空間中のメモリをマップした領域の数を小さくできるという効果がある。【００７４】
第１及び第２の実施の形態の別形態として、メモリを物理アドレス空間上にマップした複数の領域のうち、いくつかの領域のサイズ又は全ての領域のサイズは、メモリのサイズよりも小さくてよい。この場合、メモリ上の特定のアドレスにアクセスするときのカラー集合が小さくなるためプロセスに割り当て可能なメモリサイズを増加する効果は小さくなるが、物理アドレス空間上にメモリが占める領域が小さくなるという効果がある。【００７５】
第１及び第２の実施の形態の更なる別形態として、メモリを物理アドレス空間上にマップした複数の領域の数が、カラー数より多くても良い。領域のサイズがメモリサイズより小さい場合は、メモリ上の特定のアドレスにアクセスするときのカラー集合が小さくなるが、領域数を増やすことによってカラー集合を大きくするという効果がある。
［第３の実施の形態］
次に、本発明の第３の実施の形態について図面を参照しながら詳細に説明する。ここで、図１９は、本発明の第３の実施の形態の構成を示す図である。【００７６】
本実施の形態は、ＣＰＵ３５、キャッシュ３６、複数のアドレス変換部３７、メモリ３８及びメモリを複数の領域にマップした物理アドレス空間からなる。【００７７】
本実施の形態は、複数のアドレス変換部３７が連続してアドレス変換を行い、物理アドレス空間上にマップされた複数の領域から異なるカラーでメモリにアクセスすることを特徴とする。【００７８】
本実施の形態の動作を図２０を用いて説明する。図２０は、本発明の第３の実施の形態の動作を示す図である。なお、以下の説明ではアドレス変換部の数をnとし、領域i上のアドレスxiにアクセスがあった場合について説明する。【００７９】
手順としては、図２０に示したように、
（１）ＣＰＵが物理アドレスxiを発行する（ステップＳ２１）
（２）キャッシュがアドレスxiでアクセスされる。この時のカラーはColor(xi)である（ステップＳ２２）
（３）キャッシュミス等でメモリにアクセスが起こるとき、物理アドレスxiが発行される（ステップＳ２３）
（４）アドレス変換部0によりアドレスyi,0 = fi,0(xi)に変更される（ステップＳ２４）
（５）以下同様にアドレス変換部kにより、アドレスyi,k = fi,k(yi,k-1)に変換される（ステップＳ２５）
（６）最後にアドレス変換部n-1により場合、アドレスy = fi,n-1(yi,n-2)に変換される（ステップＳ２６）
（７）メモリに対してアドレスyが発行される（ステップＳ２７）
である。【００８０】
次に、本発明の第３の実施の形態の具体的な動作について説明する。【００８１】
本実施の形態は、メモリサイズが256MB（アドレス0x00000000から0x0fffffff）、カラー数が４で領域数が４の場合の例である。本実施の形態では、第１の実施の形態と同様に図１５に示すように、メモリは物理空間上の４つの領域にマップされており、それぞれの開始アドレス（basei）は、領域０は0x00000000、領域１は0x10001000、領域２は0x20002000、領域３は0x30003000である。【００８２】
本実施の形態の形態を図２１に示す。本実施の形態は２つのアドレス変換部を備える。
第１アドレス変換部３７ａは、キャッシュとバスの間にあり、アドレス変換式は以下である。
fi(x) = x - ページサイズ * I
第２アドレス変換部３７ｂは、バスのアドレスデコーダである。ここでアドレスデコーダとは、アドレスの上位４ビットが、0x0, 0x1, 0x2, 0x3の場合にメモリへのアクセスであることを伝える信号を出し、アドレスの下位28ビットをメモリへのアドレス信号とするという動作をするものとする。【００８３】
本実施の形態の動作を説明するため、物理アドレス空間上の0x20006000番地にアクセスする場合の動作を説明する。【００８４】
手順としては、
（１）ＣＰＵ３５がアドレス0x20006000を発行する
（２）キャッシュ３６がアドレス0x20006000でアクセスされる。この時のカラーは (0x20006000 / 4KB) % 4 = 1 である
（３）キャッシュミス等によりメモリにアクセスが発生する場合、物理アドレス0x20006000が発行される
（４）第１アドレス変換部３７ａによりアドレス (0x20006000 - 4KB * 2) = 0x20004000 に変換される
（５）第２アドレス変換部（アドレスデコーダ）３７ｂにより、アドレス0x20004000の上位４ビットがメモリへのアクセスを示すビットであることが判定され、メモリ３８へのアクセスであることを示す信号が出される。またアドレスの下位28ビット0x0004000がメモリに発行するアドレスとされる
（６）メモリ３８にアドレス0x0004000が発行される
である。【００８５】
本実施の形態における各領域とメモリの対応関係は図１４に示した第１の実施の形態の対応関係と同じである。【００８６】
以上説明したように、本実施の形態により、利用できるカラーが制限されたプロセスにおいて利用可能なメモリサイズが増加することは、第１及び第２の実施の形態から明らかである。【００８７】
本実施の形態によれば、システム中に既に存在する他の目的のための構成要素が、本発明のためのアドレス変換の一部として利用できる場合に、アドレス変換の一部をその構成要素を用いて行うことによって、新たに追加するアドレス変換部を簡略化できることである。【００８８】
なお、本実施の形態の別形態として、複数のアドレス変換部のうちいくつかは複数の領域に対して共通していても良い。
［第４の実施の形態］
次に、本発明の第４の実施の形態について詳細に説明する。【００８９】
本実施の形態の構成を図２２に示す。図２２は、本発明の第４の実施の形態の構成を示す図である。【００９０】
本実施の形態は、ＣＰＵ４５、キャッシュ４６、アドレス変換部４７、アドレス変換変更部４７ａ、メモリ４８及びメモリ４８を複数の領域にマップした物理アドレス空間４９からなる。【００９１】
本実施の形態は、アドレス変換部４７がソフトウェアからアドレス変換を変更するためのアドレス変換変更部４７ａを備えていることを特徴とする。ここで、アドレス変換を変更するとは、変更前のアドレス変換では物理空間上のアドレスxに対応するメモリ上のアドレスがf(x)とするとき、変更後では対応するメモリ上のアドレスがf(x)とは異なるf'(x)となることを意味する。【００９２】
本実施の形態におけるメモリアクセス時の動作は、これまでの説明から明らかであるので、ここではアドレス変換を変更することによる効果について説明する。なお、以下の説明では、変更前の領域iに対するアドレス変換をfiとする。【００９３】
この場合にメモリ上のアドレスyにアクセスするための物理アドレス空間上のアドレスをxiとすると、
y = fi(xi)
である。従って、領域iを用いることによって、メモリ上のアドレスyを、カラー Color(xi)でアクセスすることができる。これに対して、アドレス変換変更部を用いることによって、領域iに対するアドレス変換をf'iに変更した場合の、メモリ上のアドレスyにアクセスするためのアドレスをx'iとすると、y = f'i(x'i)
であり、このときのカラーはColor(x'i)である。従って、
Color(xi) != Color(x'i)
となるf'iを選ぶことによって、領域iを通してメモリ上のアドレスyにアクセスする時のカラーを変更することができる。なお、「!=」はノットイコール演算子を示し、左辺と右辺が等しくないことを表す。【００９４】
メモリをマップした物理空間上の領域のサイズがメモリサイズより小さい場合や、領域数がカラー数より少ない場合は、メモリ上のアドレスにアクセス可能なカラー数が少なくなる。このような場合でも、本実施の形態では、各領域を通してアクセスするときのカラーを変更することができるので、変更前のアドレス変換ではアクセスできなかったカラーでメモリをアクセスすることができる。従って、メモリ上のアドレスにアクセス可能なカラーが増加するという効果が得られる。【００９５】
次に本発明の第４の実施の形態についてより具体的に説明する。本実施の形態の構成を図２３に示す。本実施の形態は、ＣＰＵ４５、キャッシュ４６、アドレス変換部４７、アドレス変換表５０、物理アドレス空間４９及びメモリ４８から構成される。本実施の形態はメモリサイズが256MBの例である。【００９６】
本実施の形態は、アドレス変換部４７がアドレス変換表５０を用いて、物理アドレス空間４９上のアドレスをメモリ４８上のアドレスに変換することと、物理アドレス空間４９上のメモリをマップした範囲のサイズがメモリサイズと同じであることを特徴とする。【００９７】
まず、アドレス変換表５０について説明する。アドレス変換表５０は、物理アドレス空間４９上のアドレスとそのアドレスが変換されるメモリ４８上のアドレスを記憶するための表である。【００９８】
アドレス変換部４７は、アドレス変換を行う際に、アドレス変換表５０を検索し、物理アドレス空間４９上のアドレスが見つかれば、対応するメモリ空間上のアドレスを変換結果として抽出するという動作をする。【００９９】
アドレスが見つからない場合は、エラーを返すといった動作や、デフォルトの変換を行って変換結果とするといった動作をすることができる。なお、本実施の形態では、アドレス変換表５０はページサイズ単位でアドレスの対応関係を記録するが、これはアドレス変換表５０が記録する単位をページサイズに限るものではない。【０１００】
アドレス変換表５０は、主メモリ上に記憶されても良いし、専用のメモリを持っても良い。また物理アドレスと論理アドレスの変換に使われるページテーブルの TLB（Translation Look-aside Buffer）ように高速なメモリでキャッシュされても良い。【０１０１】
次に本実施の形態の動作を説明するため、物理アドレス空間上の0x00000010番地（ページ番号は0x00000）にアクセスする場合を例に説明する。これの例ではカラー数は４とする。また、利用するアドレス変換表は図２３に記載のものである。【０１０２】
手順としては、
（１）ＣＰＵ４５がアドレス0x00000010を発行する
（２）キャッシュ４６がアドレス0x00000010でアクセスされる。この時のカラーは (0x00000010 / 4KB) % 4 = 0 である。
（３）キャッシュミス等によりメモリ４８にアクセスが発生する場合、物理アドレス0x00000010が発行される。
（４）アドレス変換部４７は、アドレス変換表を検索して、物理アドレス空間４９上のページ0x00000に対応するメモリ４８上のアドレスが0x00003であることを得る。
（５）メモリ４８にアドレス0x00003010が発行される。【０１０３】
次に、アドレス変換表を用いたアドレス変換によって、メモリ上のアドレスに対して異なるカラーでアクセスする例を、図２４に示すアドレス変換表の例を用いて説明する。【０１０４】
図２４のアドレス変換表は、物理アドレス空間上のページ 0x00000（カラー0）と 0x00001（カラー1）がメモリ上のページ 0x00000 に対応するように記録されている。従って、メモリ上のページ0x00000に対してカラー０または１でアクセスすることが可能である。【０１０５】
これによって、本実施の形態が、ＯＳによる論理アドレスと物理アドレスの変換を利用したキャッシュ制御を行う際のプロセスが利用可能なメモリサイズの制限を緩和する効果を持つ。【０１０６】
本実施の形態では、アドレス変換表に記録する対応関係を変更することによって、物理アドレス空間上のアドレスが変換されるメモリ上のアドレスを変更することが可能である。すなわち、アドレス変換表５０は、アドレス変換を変更するためのアドレス変換変更部４７ａである。従って、本実施の形態のアドレス変換部４７はアドレス変換変更部４７ａを備えている。【０１０７】
次に、本実施の形態の物理アドレス空間について説明する。前述のように本実施の形態では、物理アドレス空間上のメモリをマップする範囲のサイズは、メモリサイズと同じであるという特徴を持つ。これは、アドレス変換表の記録内容を変更することによって、ある物理ページが対応するメモリ上のページを変更することができるため、物理アドレス空間上のメモリをマップした範囲のサイズをメモリのサイズより大きくすることなく、メモリ上の全ページにアクセスすることができるからである。【０１０８】
例えば、図２４に示したアドレス変換表の場合では、メモリ上のページ0x00000に対応する物理アドレス空間上のページが２ページある。従って、このアドレス変換表の内容では、物理アドレス空間上のメモリをマップした範囲のサイズがメモリサイズと同じ場合は、メモリ上にアクセスできないページが存在する。【０１０９】
しかし、アドレス変換表は記録内容を変更可能であるため、メモリ上のページ 0x00000に対応していた２つの物理アドレス空間上のページのどちらかの対応先をアクセスできなかったページに変更することによって、アクセスを可能にできる。【０１１０】
例えば、メモリ上のアクセスできなかったページが0x00010であった場合には、図２５に示すようにアドレス変換表を変更することによって、そのページにアクセスすることが可能となる。従って、本実施の形態では、物理アドレス空間上のメモリをマップする範囲のサイズをメモリサイズと同じサイズに抑えながら、メモリ上の同一アドレスに複数のカラーでアクセスすることを可能にするという効果がある。【０１１１】
本実施の形態では、アドレス変換表を用いることで、ページサイズ単位でアドレスの対応を決定している。従って、本実施の形態は、領域サイズがページサイズで、領域数がページ数の場合である第１の本発明の最良の実施の形態の別形態に対応する実施の形態でもある。【０１１２】
以上、本発明の代表的な実施形態について説明したが、本発明は、本願の請求の範囲によって規定される、その精神または主要な特徴から逸脱することなく、他の種々の形で実施することができる。そのため、前述した各実施形態は単なる例示にすぎず、限定的に解釈されるべきではない。本発明の範囲は特許請求の範囲によって示すものであって、明細書や要約書の記載には拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更はすべて本発明の範囲内のものである。【０１１３】
本願は、２００８年３月４日に出願された特願２００８−０５３３４２号に基づき、優先権の利益を主張するものである。そして、特願２００８−０５３３４２号の内容は本願の明細書の内容に含まれる。
【産業上の利用可能性】
【０１１４】
本発明によれば、キャッシュメモリ及び論理アドレスと物理アドレスの変換を行うプロセッサを備えたコンピュータにおいて、アプリケーションソフトを動かす際のキャッシュミスペナルティによる動作速度の低下を抑止するという用途に利用することができる。
【図１】
2009110446.tif 000003
【図２】
2009110446.tif 000004
【図３】
2009110446.tif 000005
【図４】
2009110446.tif 000006
【図５】
2009110446.tif 000007
【図６】
2009110446.tif 000008
【図７】
2009110446.tif 000009
【図８】
2009110446.tif 000010
【図９】
2009110446.tif 000011
【図１０】
2009110446.tif 000012
【図１１】
2009110446.tif 000013
【図１２】
2009110446.tif 000014
【図１３】
2009110446.tif 000015
【図１４】
2009110446.tif 000016
【図１５】
2009110446.tif 000017
【図１６】
2009110446.tif 000018
【図１７】
2009110446.tif 000019
【図１８】
2009110446.tif 000020
【図１９】
2009110446.tif 000021
【図２０】
2009110446.tif 000022
【図２１】
2009110446.tif 000023
【図２２】
2009110446.tif 000024
【図２３】
2009110446.tif 000025
【図２４】
2009110446.tif 000026
【図２５】
2009110446.tif 000027
【国際調査報告】
2009110446.tif 000028
2009110446.tif 000029