(57)【要約】【課題】動的なアドレス変換を簡易な構成により実現する。【解決手段】領域アドレス１３２に設定された領域アドレスと入力アドレスとの一致が比較器１４０によって検出された際、反転フラグ１３１が反転する旨を示していれば、入力アドレスの所定のビットが排他的論理和回路１６０によって反転される。これにより、入力アドレスは、対となる他のアドレスに変換されて出力される。反転フラグ１３１が反転する旨を示していない場合には、比較器１４０によってアドレスの一致が検出されてもアドレス変換は行われない。キャッシュド領域とアンキャッシュド領域を別々の仮想アドレスとして、同じ物理アドレスにマッピングすることとすれば、反転フラグ１３１および領域アドレス１３２を制御することによりキャッシュの有無が動的に切り替えられる。【選択図】図４
2009205445.tif 000002
【特許請求の範囲】
【請求項１】
変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、
前記変換対象アドレスを変換するかを示す変換フラグを保持する変換フラグ保持手段と、
入力アドレスにおける少なくとも１ビットの所定のビット位置と前記領域アドレス保持手段に保持された前記領域アドレスとの一致を検出する一致検出手段と、
前記一致検出手段において一致が検出された場合において前記変換フラグ保持手段に保持される前記変換フラグが変換する旨を示していれば前記入力アドレスを対となる他のアドレスに変換して出力する変換手段と
を具備することを特徴とするアドレス変換回路。
【請求項２】
変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、
前記変換対象アドレスの一部を反転するかを示す反転フラグを保持する反転フラグ保持手段と、
入力アドレスにおける少なくとも１ビットの所定のビット位置と前記領域アドレス保持手段に保持された前記領域アドレスとの一致を検出する一致検出手段と、
前記一致検出手段において一致が検出された場合において前記反転フラグ保持手段に保持される前記反転フラグが反転する旨を示していれば前記入力アドレスの何れかのビットを反転して出力するビット反転手段と
を具備することを特徴とするアドレス変換回路。
【請求項３】
第１の記憶装置へアクセスする第１のアドレス空間と、第２の記憶装置へアクセスする第２のアドレス空間とを備える記憶装置に対するアドレスを変換するアドレス変換回路であって、
変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、
前記変換対象アドレスを変換するかを示す変換フラグを保持する変換フラグ保持手段と、
入力アドレスにおける少なくとも１ビットの所定のビット位置と前記領域アドレス保持手段に保持された前記領域アドレスとの一致を検出する一致検出手段と、
前記一致検出手段において一致が検出された場合において前記変換フラグ保持手段に保持される前記変換フラグが変換する旨を示していれば前記入力アドレスを前記第１または第２のアドレス空間の他方における対となるアドレスに変換して出力する変換手段と
を具備することを特徴とするアドレス変換回路。
【請求項４】
主記憶装置へ直接アクセスする第１のアドレス空間と、キャッシュメモリを介して前記主記憶装置へアクセスする第２のアドレス空間とを備える記憶装置に対するアドレスを変換するアドレス変換回路であって、
変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、
前記変換対象アドレスを変換するかを示す変換フラグを保持する変換フラグ保持手段と、
入力アドレスにおける少なくとも１ビットの所定のビット位置と前記領域アドレス保持手段に保持された前記領域アドレスとの一致を検出する一致検出手段と、
前記一致検出手段において一致が検出された場合において前記変換フラグ保持手段に保持される前記変換フラグが変換する旨を示していれば前記入力アドレスを前記第１または第２のアドレス空間の他方における対となるアドレスに変換して出力する変換手段と
を具備することを特徴とするアドレス変換回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレス変換回路に関し、特にアドレス変換によりアドレス空間の切替を行うアドレス変換回路に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）コアを含む既存の処理装置に対して、高速化を図るためにキャッシュメモリを追加した場合、何も意識せずにプログラムを作成すると、以下のような種々の問題を生じるおそれがある。例えば、使用頻度の低いプログラム関数などをキャッシュメモリに保持してしまい、その結果、プログラム全体のキャッシュヒット率が低下して高速化の妨げとなることがある。
【０００３】
また、システムによってはキャッシュメモリ追加前のハードウェアで動作していたプログラムに手を加えることなくそのまま動くこと（上位互換性）が求められる。一方、追加したキャッシュメモリを有効利用しようとする場合にプログラムの書き換えが必要になってくる。単純にキャッシュメモリを追加しただけでは、上位互換性を維持するためのプログラムと、キャッシュメモリを有効利用するためのプログラムの２種類を用意する必要が生じる。
【０００４】
これらの問題を解決するためには、あるアドレス領域に対するアクセスについてキャッシュメモリを介するか否かを動的に切り替えることができればよい。このような動的な切替を行うためには、例えばＴＬＢ（Translation Look-aside Buffer）を用いることが考えられる。ＴＬＢは仮想アドレスと実アドレスとの間の変換を行うためのバッファであり、入力された仮想アドレスとバッファ内の各エントリの仮想アドレスとの比較を行い、一致するエントリの実アドレスを出力する（例えば、特許文献１参照。）。
【特許文献１】特許第２７０４１１２号公報（図２）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のＴＬＢによれば、動的なアドレス変換により、キャッシュメモリを介するか否かを動的に切り替えることができる。しかしながら、ＴＬＢを構成するためには、多くの比較器やレジスタアレイが必要になり、回路規模が増大してしまう。
【０００６】
そこで、本発明は、動的なアドレス変換を簡易な構成により実現することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、上記変換対象アドレスを変換するかを示す変換フラグを保持する変換フラグ保持手段と、入力アドレスにおける少なくとも１ビットの所定のビット位置と上記領域アドレス保持手段に保持された上記領域アドレスとの一致を検出する一致検出手段と、上記一致検出手段において一致が検出された場合において上記変換フラグ保持手段に保持される上記変換フラグが変換する旨を示していれば上記入力アドレスを対となる他のアドレスに変換して出力する変換手段とを具備することを特徴とするアドレス変換回路である。これにより、領域アドレス保持手段および変換フラグ保持手段に保持される内容に応じて、入力アドレスを対となる他のアドレスに変換させるという作用をもたらす。
【０００８】
また、本発明の第２の側面は、変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、上記変換対象アドレスの一部を反転するかを示す反転フラグを保持する反転フラグ保持手段と、入力アドレスにおける少なくとも１ビットの所定のビット位置と上記領域アドレス保持手段に保持された上記領域アドレスとの一致を検出する一致検出手段と、上記一致検出手段において一致が検出された場合において上記反転フラグ保持手段に保持される上記反転フラグが反転する旨を示していれば上記入力アドレスの何れかのビットを反転して出力するビット反転手段とを具備することを特徴とするアドレス変換回路である。これにより、領域アドレス保持手段および反転フラグ保持手段に保持される内容に応じて、入力アドレスの何れかのビットを反転して出力させるという作用をもたらす。
【０００９】
また、本発明の第３の側面は、第１の記憶装置へアクセスする第１のアドレス空間と、第２の記憶装置へアクセスする第２のアドレス空間とを備える記憶装置に対するアドレスを変換するアドレス変換回路であって、変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、上記変換対象アドレスを変換するかを示す変換フラグを保持する変換フラグ保持手段と、入力アドレスにおける少なくとも１ビットの所定のビット位置と上記領域アドレス保持手段に保持された上記領域アドレスとの一致を検出する一致検出手段と、上記一致検出手段において一致が検出された場合において上記変換フラグ保持手段に保持される上記変換フラグが変換する旨を示していれば上記入力アドレスを上記第１または第２のアドレス空間の他方における対となるアドレスに変換して出力する変換手段とを具備することを特徴とするアドレス変換回路である。これにより、領域アドレス保持手段および変換フラグ保持手段に保持される内容に応じて、入力アドレスを第１または第２のアドレス空間の他方における対となるアドレスに変換させるという作用をもたらす。
【００１０】
また、本発明の第４の側面は、主記憶装置へ直接アクセスする第１のアドレス空間と、キャッシュメモリを介して上記主記憶装置へアクセスする第２のアドレス空間とを備える記憶装置に対するアドレスを変換するアドレス変換回路であって、変換対象アドレスの少なくとも一部を領域アドレスとして保持する領域アドレス保持手段と、上記変換対象アドレスを変換するかを示す変換フラグを保持する変換フラグ保持手段と、入力アドレスにおける少なくとも１ビットの所定のビット位置と上記領域アドレス保持手段に保持された上記領域アドレスとの一致を検出する一致検出手段と、上記一致検出手段において一致が検出された場合において上記変換フラグ保持手段に保持される上記変換フラグが変換する旨を示していれば上記入力アドレスを上記第１または第２のアドレス空間の他方における対となるアドレスに変換して出力する変換手段とを具備することを特徴とするアドレス変換回路である。これにより、領域アドレス保持手段および変換フラグ保持手段に保持される内容に応じて、主記憶装置へ直接アクセスする第１のアドレス空間またはキャッシュメモリを介して上記主記憶装置へアクセスする第２のアドレス空間の他方における対となるアドレスに入力アドレスを変換させるという作用をもたらす。
【発明の効果】
【００１１】
本発明によれば、動的なアドレス変換を簡易な構成により実現することができるという優れた効果を奏し得る。
【発明を実施するための最良の形態】
【００１２】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００１３】
図１は、本発明の実施の形態において前提となる情報処理システムの構成例を示す図である。この情報処理システムは、処理装置１００などのマスターと記憶装置２００などのスレーブとをバス３００により相互接続することにより構成される。処理装置１００以外の他のマスター１０１および１０２としては、他の処理装置やＬＣＤ（Liquid Crystal Display）コントローラなどが想定される。また、記憶装置２００以外の他のスレーブ２０１および２０２としては、レジスタ群や周辺機器（peripheral equipment）などが想定される。
【００１４】
記憶装置２００は、主記憶を構成するメモリ装置であり、バス３００を介して複数のマスター（１００乃至１０２）からアクセス可能になっている。処理装置１００は、マスターとして記憶装置２００にアクセスし、データ処理を行うものである。この処理装置１００はＣＰＵコア１１０を備え、このＣＰＵコア１１０から記憶装置２００にアクセスする。
【００１５】
ここでは、ＣＰＵコア１１０には一次キャッシュメモリ１１１が設けられているものとする。すなわち、ＣＰＵコア１１０は、一次キャッシュメモリ１１１にヒットしている限りは一次キャッシュメモリ１１１との間で処理を行い、一次キャッシュメモリ１１１がミスヒットとなった場合にＣＰＵコア１１０外へアクセスを行う。
【００１６】
また、処理装置１００内には二次キャッシュメモリ１２０が設けられているものとする。この二次キャッシュメモリ１２０は処理装置１００の内部に追加されるものであり、二次キャッシュメモリ１２０の追加前の状態で動作していたプログラムは、二次キャッシュメモリ１２０の追加後においても動作が保証される（上位互換性）。ＣＰＵコア１１０は、一次キャッシュメモリ１１１がミスヒットとなった場合に、二次キャッシュメモリ１２０が利用可能であればアクセスする。そして、二次キャッシュメモリ１２０にヒットしている限りは二次キャッシュメモリ１２０との間で処理を行い、二次キャッシュメモリ１２０がミスヒットとなった場合に記憶装置２００にアクセスする。
【００１７】
すなわち、ＣＰＵコア１１０から記憶装置２００にアクセスする際に、二次キャッシュメモリ１２０に同一のデータが保持されていれば、実際のアクセスは二次キャッシュメモリ１２０に対して行われるため、記憶装置２００にアクセスするよりも短いレイテンシでデータにアクセスすることが可能となる。また、上述のように、記憶装置２００には複数のマスターからのアクセスが集中する可能性があるため、二次キャッシュメモリ１２０を利用することにより、アクセスの待ち時間を改善することができる。
【００１８】
ＣＰＵコア１１０からのアクセス要求は、アドレス領域に応じて、記憶装置２００に対して直接行われる場合と、二次キャッシュメモリ１２０を介して行われる場合とに分かれる。
【００１９】
図２は、本発明の実施の形態における記憶装置２００へのアクセス経路の種類を示す図である。図２（ａ）は、ＣＰＵコア１１０からアクセスしようとするアドレス領域が二次キャッシュ・キャッシュド（cached）領域である場合のアクセス経路の例である。このアドレス領域においては、二次キャッシュメモリ１２０にデータが保持されるため、ヒットしている限りは二次キャッシュメモリ１２０との間で処理が行われる。そして、二次キャッシュメモリ１２０がミスヒットとなった場合に記憶装置２００へアクセスが行われる。
【００２０】
図２（ｂ）は、ＣＰＵコア１１０からアクセスしようとするアドレス領域が二次キャッシュ・アンキャッシュド（uncached）領域である場合のアクセス経路の例である。このアドレス領域においては、二次キャッシュメモリ１２０にデータが保持されないため、常に記憶装置２００へ直接アクセスが行われる。
【００２１】
本発明の実施の形態では、これらのアクセス経路の切替は、ＣＰＵコア１１０内の制御レジスタにより制御される。
【００２２】
図３は、本発明の実施の形態における記憶装置２００へのアクセス経路の第１の切替例を示す図である。ここでは、１５ビットにより表現される３２Ｋ空間を想定し、そのうち「０ｘ６０００」（「０ｘ」は続く数字が１６進数であることを表す。）番地から「０ｘ６ＦＦＦ」番地の４Ｋ空間と、「０ｘ７０００」番地から「０ｘ７ＦＦＦ」番地の４Ｋ空間は、ともに同じ物理アドレス「０ｘ３０００」番地から「０ｘ３ＦＦＦ」番地の物理領域に割り当てられるものとする。そして、「０ｘ６０００」番地から「０ｘ６ＦＦＦ」番地の４Ｋ空間の仮想領域Ａを二次キャッシュ・キャッシュド領域とし、「０ｘ７０００」番地から「０ｘ７ＦＦＦ」番地の４Ｋ空間の仮想領域Ｂを二次キャッシュ・アンキャッシュド領域とする。
【００２３】
すなわち、物理領域（「０ｘ３０００」番地から「０ｘ３ＦＦＦ」番地）にアクセスする際、仮想領域Ａ（「０ｘ６０００」番地から「０ｘ６ＦＦＦ」番地）を指定した場合には二次キャッシュメモリ１２０を介したアクセスになり、仮想領域Ｂ（「０ｘ７０００」番地から「０ｘ７ＦＦＦ」番地）を指定した場合には二次キャッシュメモリ１２０を介さない記憶装置２００への直接アクセスになる。
【００２４】
このとき、仮想領域Ａの領域アドレスについて反転する旨が制御レジスタに登録されていれば、仮想領域Ａに対するアクセスは仮想領域Ｂの対のアドレスに対するアクセスへ切り替えられる。その結果、二次キャッシュメモリ１２０を介さない記憶装置２００への直接アクセスが行われる。但し、実際にアクセスされる物理アドレスは変わらない。
【００２５】
図４は、本発明の実施の形態におけるアドレス変換機構の第１の実施例を示す図である。このアドレス変換機構はＣＰＵコア１１０に設けられ、制御レジスタ１３０と、比較器１４０と、論理積回路１５０と、排他的論理和回路１６０とを備える。
【００２６】
制御レジスタ１３０は、アドレス変換の設定を保持するレジスタであり、反転フラグ１３１と、領域アドレス１３２とを保持する。反転フラグ１３１は、対応する領域アドレス１３２に合致するアドレスについて、ビット反転を行うか否かを指示するものである。領域アドレス１３２は、検出対象となる領域のアドレスを保持するものである。図３のアドレス空間の例では、仮想領域Ａに対するアクセスを検出するために、入力アドレスの第１４ビットから第１２ビットに相当する３ビット「１１０」を領域アドレス１３２に保持する。なお、この制御レジスタ１３０の内容は、一般ユーザによって自由に変更できないようにすることが望ましく、通常のプログラムが実行されていない状態で特権モードにより変更される。
【００２７】
比較器１４０は、入力アドレスと領域アドレス１３２との一致を検出するものである。この例では、仮想領域Ａに対するアクセスを検出するために、入力アドレスの第１４ビットから第１２ビットの３ビットと、領域アドレス１３２に保持される３ビットとが比較される。すなわち、入力アドレスの第１４ビットから第１２ビットが「１１０」であれば、一致が検出される。
【００２８】
論理積回路１５０は、比較器１４０および反転フラグ１３１の出力の論理積を生成するものである。すなわち、この論理積回路１５０は、比較器１４０においてアドレスの一致が検出され、かつ、反転フラグ１３１がビット反転を行う旨を指示している場合に真（Ｔｒｕｅ）を出力し、それ以外の場合には偽（Ｆａｌｓｅ）を出力する。
【００２９】
排他的論理和回路１６０は、入力アドレスの第１２ビットおよび論理積回路１５０の出力の排他的論理和を生成するものである。すなわち、この排他的論理和回路１６０は、論理積回路１５０の出力が真（Ｔｒｕｅ）を示している場合には入力アドレスの第１２ビットを反転した対のアドレスに変換し、論理積回路１５０の出力が偽（Ｆａｌｓｅ）を示している場合には入力アドレスの第１２ビットを反転せずにそのままとする。
【００３０】
図５は、本発明の実施の形態におけるアドレス変換機構の第１の実施例による真理値表を示す図である。図３のアドレス空間において、入力アドレスの第１４ビットから第１２ビットが「１１０」であって、かつ、反転フラグ１３１が反転する旨（「１」）を示している場合には、入力アドレスの第１２ビットが反転され、出力アドレスの第１４ビットから第１２ビットは「１１１」に変換される。
【００３１】
一方、入力アドレスの第１４ビットから第１２ビットが「１１０」であっても、反転フラグ１３１が反転しない旨（「０」）を示している場合には、ビット反転は行われず、出力アドレスは入力アドレスと一致する。また、入力アドレスの第１４ビットから第１２ビットが「１１０」以外の場合についても同様に、ビット反転は行われない。
【００３２】
これにより、反転フラグ１３１が反転する旨を示している際に、仮想領域Ａに対するアクセスがあったときのみ、仮想領域Ｂへのアドレス変換が行われることになる。この出力アドレスに従って仮想領域へのアクセスが行われるが、記憶装置２００へのアクセスの際にはさらに物理アドレスへの変換が行われる。この第１の実施例の場合、出力アドレスの第１４ビットから第１２ビットの部分を１ビット右シフトして、第１４ビットに「０」を設定したものが物理アドレスとなる。
【００３３】
図６は、本発明の実施の形態における記憶装置２００へのアクセス経路の第２の切替例を示す図である。ここでは、第１の切替例と同様に、３２Ｋ空間において、仮想領域Ａ（「０ｘ６０００」番地から「０ｘ６ＦＦＦ」番地）および仮想領域Ｂ（「０ｘ７０００」番地から「０ｘ７ＦＦＦ」番地）を想定する。
【００３４】
この例では、仮想領域Ｂの領域アドレスについて反転する旨が制御レジスタに登録されていれば、仮想領域Ｂに対するアクセスは仮想領域Ａに対するアクセスへ切り替えられる。その結果、記憶装置２００へのアクセスは、二次キャッシュメモリ１２０を介して行われる。但し、実際にアクセスされる物理アドレスは変わらない。
【００３５】
図７は、本発明の実施の形態におけるアドレス変換機構の第２の実施例による真理値表を示す図である。図６のアドレス空間において、入力アドレスの第１４ビットから第１２ビットが「１１１」であって、かつ、反転フラグ１３１が反転する旨（「１」）を示している場合には、入力アドレスの第１２ビットが反転され、出力アドレスの第１４ビットから第１２ビットは「１１０」に変換される。
【００３６】
一方、入力アドレスの第１４ビットから第１２ビットが「１１１」であっても、反転フラグ１３１が反転しない旨（「０」）を示している場合には、ビット反転は行われず、出力アドレスは入力アドレスと一致する。また、入力アドレスの第１４ビットから第１２ビットが「１１１」以外の場合についても同様に、ビット反転は行われない。
【００３７】
これにより、反転フラグ１３１が反転する旨を示している際に、仮想領域Ｂに対するアクセスがあったときのみ、仮想領域Ａへのアドレス変換が行われることになる。この出力アドレスに従って仮想領域へのアクセスが行われるが、記憶装置２００へのアクセスの際にはさらに物理アドレスへの変換が行われる。この第１の実施例の場合、出力アドレスの第１４ビットから第１２ビットの部分を１ビット右シフトして、第１４ビットに「０」を設定したものが物理アドレスとなる。
【００３８】
なお、このアドレス変換機構の第２の実施例の構成は、図４の第１の実施例のものと同様である。但し、第１の実施例では制御レジスタ１３０の領域アドレス１３２には「１１０」が設定されていたが、この第２の実施例では制御レジスタ１３０の領域アドレス１３２には「１１１」が設定される。
【００３９】
図８は、本発明の実施の形態におけるアドレス変換機構の第１および第２の実施例によるアドレス変換の態様を示す図である。図８（ａ）は、アドレス変換機構の第１の実施例に対応するものであり、領域アドレスとして「１１０」が設定されている。このとき、第１４ビットから第１２ビットが「１１０」のアドレスが入力されると、「１１１」のアドレスが出力される。すなわち、仮想領域Ａに対するアクセスが仮想領域Ｂに対するアクセスに変換される。
【００４０】
図８（ｂ）は、アドレス変換機構の第２の実施例に対応するものであり、領域アドレスとして「１１１」が設定されている。このとき、第１４ビットから第１２ビットが「１１１」のアドレスが入力されると、「１１０」のアドレスが出力される。すなわち、仮想領域Ｂに対するアクセスが仮想領域Ａに対するアクセスに変換される。
【００４１】
制御レジスタ１３０に反転フラグ１３１および領域アドレス１３２の対を複数保持できることとすれば、図８（ａ）および（ｂ）の両者を同時に設定することにより、仮想領域Ａと仮想領域Ｂとを相互に入れ換えることができる。
【００４２】
図９は、本発明の実施の形態における仮想領域の構成例を示す図である。この例では、１５ビットにより表現される３２Ｋ空間を想定し、４Ｋ空間毎に異なる性質が割り当てられている。すなわち、前半の１６Ｋ空間（「０ｘ００００」番地から「０ｘ３ＦＦＦ」番地）はユーザ領域であり、一般ユーザによって自由のアクセス可能な領域となっている。一方、後半の１６Ｋ空間（「０ｘ４０００」番地から「０ｘ７ＦＦＦ」番地）はカーネル領域であり、権限を有する管理者のみによってアクセス可能な領域となっている。
【００４３】
二次キャッシュメモリ１２０の接続を想定していないＣＰＵコア１１０においては、４Ｋ空間が一つおきに用いられ、それ以外はリザーブ領域になっている。そして、ユーザ領域の最初の４Ｋ空間（「０ｘ００００」番地から「０ｘ０ＦＦＦ」番地）では一次キャッシュメモリ１１１を介するアクセスが行われ（cached）、３番目の４Ｋ空間（「０ｘ２０００」番地から「０ｘ２ＦＦＦ」番地）では一次キャッシュメモリ１１１を介さないアクセスが行われる（uncached）ものと想定する。カーネル領域においても同様に、最初の４Ｋ空間（「０ｘ４０００」番地から「０ｘ４ＦＦＦ」番地）では一次キャッシュメモリ１１１を介するアクセスが行われ（cached）、３番目の４Ｋ空間（「０ｘ６０００」番地から「０ｘ６ＦＦＦ」番地）では一次キャッシュメモリ１１１を介さないアクセスが行われる（uncached）ものと想定する。
【００４４】
この例において、二次キャッシュメモリ１２０を接続した場合には、４Ｋ空間毎にキャッシュの有無を定めることが考えられる。すなわち、ユーザ領域の最初の前半の８Ｋ空間（「０ｘ００００」番地から「０ｘ１ＦＦＦ」番地）では一次キャッシュメモリ１１１を介するアクセスが行われ（cached）、後半の８Ｋ空間（「０ｘ２０００」番地から「０ｘ３ＦＦＦ」番地）では一次キャッシュメモリ１１１を介さないアクセスが行われる（uncached）。カーネル領域においても同様に、最初の前半の８Ｋ空間（「０ｘ４０００」番地から「０ｘ５ＦＦＦ」番地）では一次キャッシュメモリ１１１を介するアクセスが行われ（cached）、後半の８Ｋ空間（「０ｘ６０００」番地から「０ｘ７ＦＦＦ」番地）では一次キャッシュメモリ１１１を介さないアクセスが行われる（uncached）。また、二次キャッシュメモリ１２０については４Ｋ空間毎にキャッシュの有無が変化し、奇数個目の４Ｋ空間（「０ｘ００００」番地から「０ｘ０ＦＦＦ」番地、「０ｘ２０００」番地から「０ｘ２ＦＦＦ」番地、「０ｘ４０００」番地から「０ｘ４ＦＦＦ」番地、「０ｘ６０００」番地から「０ｘ６ＦＦＦ」番地）では二次キャッシュメモリ１２０を介するアクセスが行われ（cached）、偶数個目の４Ｋ空間（「０ｘ１０００」番地から「０ｘ１ＦＦＦ」番地、「０ｘ３０００」番地から「０ｘ３ＦＦＦ」番地、「０ｘ５０００」番地から「０ｘ５ＦＦＦ」番地、「０ｘ７０００」番地から「０ｘ７ＦＦＦ」番地）では二次キャッシュメモリ１２０を介さないアクセスが行われる（uncached）。すなわち、ＣＰＵコア１１０に二次キャッシュメモリ１２０を単純に接続した場合には、仮想アドレスと二次キャッシュメモリ１２０との関係は固定されてしまう。
【００４５】
これに対し、本発明の実施の形態では、制御レジスタ１３０への設定に応じて仮想アドレスを変換することにより、二次キャッシュメモリ１２０を介するか否かを切り替えることができる。この例においては、制御レジスタ１３０の別々の領域アドレス１３２に、「０００」、「００１」、「０１０」、「０１１」、「１００」、「１０１」、「１１０」、「１１１」をそれぞれ設定し、対応する反転フラグ１３１を反転する旨（「１」）を指示するよう設定しておくことにより、二次キャッシュメモリ１２０に関する対応関係を入れ換えることができる。
【００４６】
また、全てのアクセスを二次キャッシュメモリ１２０を介するようにするためには、制御レジスタ１３０の別々の領域アドレス１３２に、「００１」、「０１１」、「１０１」、「１１１」をそれぞれ設定し、対応する反転フラグ１３１を反転する旨（「１」）を指示するよう設定しておけば、全てのアクセスは二次キャッシュメモリ１２０を介するよう制御される。
【００４７】
一方、全てのアクセスを二次キャッシュメモリ１２０を介さないようにするためには、制御レジスタ１３０の別々の領域アドレス１３２に、「０００」、「０１０」、「１００」、「１１０」をそれぞれ設定し、対応する反転フラグ１３１を反転する旨（「１」）を指示するよう設定しておけば、全てのアクセスは二次キャッシュメモリ１２０を介さずに直接、記憶装置２００にアクセスするよう制御される。
【００４８】
この例から明らかなように、本発明の実施の形態によれば、ユーザ領域とカーネル領域の管理や一次キャッシュメモリのキャッシュの有無などのアクセス権限についても柔軟に対応することができる。
【００４９】
上述の例では、４Ｋ空間毎に二次キャッシュメモリ１２０へのアクセスを制御する例について説明したが、同じ物理アドレスへマッピングされる空間同士であれば、以下に示すように４Ｋ空間以外を単位とすることも可能である。また、キャッシュ有無（cached/uncached）の領域を任意に混在させることも可能である。
【００５０】
図１０は、本発明の実施の形態における記憶装置２００へのアクセス経路の第３の切替例を示す図である。ここでは、１５ビットにより表現される３２Ｋ空間を想定し、そのうち「０ｘ４０００」番地から「０ｘ５ＦＦＦ」番地の８Ｋ空間と、「０ｘ６０００」番地から「０ｘ７ＦＦＦ」番地の８Ｋ空間は、ともに同じ物理アドレス「０ｘ２０００」番地から「０ｘ３ＦＦＦ」番地の物理領域に割り当てられるものとする。そして、「０ｘ４０００」番地から「０ｘ５ＦＦＦ」番地の８Ｋ空間の仮想領域Ａを二次キャッシュ・キャッシュド領域とし、「０ｘ６０００」番地から「０ｘ７ＦＦＦ」番地の８Ｋ空間の仮想領域Ｂを二次キャッシュ・アンキャッシュド領域とする。
【００５１】
すなわち、物理領域（「０ｘ２０００」番地から「０ｘ３ＦＦＦ」番地）にアクセスする際、仮想領域Ａ（「０ｘ４０００」番地から「０ｘ５ＦＦＦ」番地）を指定した場合には二次キャッシュメモリ１２０を介したアクセスになり、仮想領域Ｂ（「０ｘ６０００」番地から「０ｘ７ＦＦＦ」番地）を指定した場合には二次キャッシュメモリ１２０を介さない記憶装置２００への直接アクセスになる。
【００５２】
このとき、仮想領域Ａの領域アドレスについて反転する旨が制御レジスタに登録されていれば、仮想領域Ａに対するアクセスは仮想領域Ｂに対するアクセスへ切り替えられる。その結果、二次キャッシュメモリ１２０を介さない記憶装置２００への直接アクセスが行われる。但し、実際にアクセスされる物理アドレスは変わらない。
【００５３】
図１１は、本発明の実施の形態におけるアドレス変換機構の第３の実施例を示す図である。このアドレス変換機構は、第１の実施例と同様に、ＣＰＵコア１１０に設けられ、制御レジスタ１３０と、比較器１４０と、論理積回路１５０と、排他的論理和回路１６０とを備える。但し、制御レジスタ１３０の領域アドレス１３２のビット幅は、第１の実施例よりも狭くなる。すなわち、図１０のアドレス空間の例では、仮想領域Ａに対するアクセスを検出するために、入力アドレスの第１４ビットから第１３ビットに相当する２ビット「１０」を領域アドレス１３２に保持する。
【００５４】
図１２は、本発明の実施の形態におけるアドレス変換機構の第３の実施例による真理値表を示す図である。図１０のアドレス空間において、入力アドレスの第１４ビットから第１３ビットが「１０」であって、かつ、反転フラグ１３１が反転する旨（「１」）を示している場合には、入力アドレスの第１３ビットが反転され、出力アドレスの第１４ビットから第１３ビットは「１１」に変換される。
【００５５】
一方、入力アドレスの第１４ビットから第１３ビットが「１０」であっても、反転フラグ１３１が反転しない旨（「０」）を示している場合には、ビット反転は行われず、出力アドレスは入力アドレスと一致する。また、入力アドレスの第１４ビットから第１３ビットが「１０」以外の場合についても同様に、ビット反転は行われない。
【００５６】
これにより、反転フラグ１３１が反転する旨を示している際に、仮想領域Ａに対するアクセスがあったときのみ、仮想領域Ｂへのアドレス変換が行われることになる。この出力アドレスに従って仮想領域へのアクセスが行われるが、記憶装置２００へのアクセスの際にはさらに物理アドレスへの変換が行われる。この第３の実施例の場合、出力アドレスの第１４ビットから第１３ビットの部分を１ビット右シフトして、第１４ビットに「０」を設定したものが物理アドレスとなる。
【００５７】
図１３は、本発明の実施の形態における記憶装置２００へのアクセス経路の第４の切替例を示す図である。ここでは、１５ビットにより表現される３２Ｋ空間を想定し、そのうち「０ｘ００００」番地から「０ｘ３ＦＦＦ」番地の１６Ｋ空間と、「０ｘ４０００」番地から「０ｘ７ＦＦＦ」番地の１６Ｋ空間は、ともに同じ物理アドレス「０ｘ００００」番地から「０ｘ３ＦＦＦ」番地の物理領域に割り当てられるものとする。そして、前半の１６Ｋ空間の仮想領域Ａを二次キャッシュ・キャッシュド領域とし、後半の１６Ｋ空間の仮想領域Ｂを二次キャッシュ・アンキャッシュド領域とする。
【００５８】
すなわち、物理領域（「０ｘ００００」番地から「０ｘ３ＦＦＦ」番地）にアクセスする際、仮想領域Ａ（「０ｘ００００」番地から「０ｘ３ＦＦＦ」番地）を指定した場合には二次キャッシュメモリ１２０を介したアクセスになり、仮想領域Ｂ（「０ｘ４０００」番地から「０ｘ７ＦＦＦ」番地）を指定した場合には二次キャッシュメモリ１２０を介さない記憶装置２００への直接アクセスになる。
【００５９】
このとき、仮想領域Ａの領域アドレスについて反転する旨が制御レジスタに登録されていれば、仮想領域Ａに対するアクセスは仮想領域Ｂに対するアクセスへ切り替えられる。その結果、二次キャッシュメモリ１２０を介さない記憶装置２００への直接アクセスが行われる。但し、実際にアクセスされる物理アドレスは変わらない。
【００６０】
図１４は、本発明の実施の形態におけるアドレス変換機構の第４の実施例を示す図である。このアドレス変換機構は、第１の実施例と同様に、ＣＰＵコア１１０に設けられ、制御レジスタ１３０と、比較器１４０と、論理積回路１５０と、排他的論理和回路１６０とを備える。但し、制御レジスタ１３０の領域アドレス１３２のビット幅は、第１の実施例よりも狭くなる。すなわち、図１３のアドレス空間の例では、仮想領域Ａに対するアクセスを検出するために、入力アドレスの第１４ビットに相当する１ビット「０」を領域アドレス１３２に保持する。
【００６１】
図１５は、本発明の実施の形態におけるアドレス変換機構の第４の実施例による真理値表を示す図である。図１３のアドレス空間において、入力アドレスの第１４ビットが「０」であって、かつ、反転フラグ１３１が反転する旨（「１」）を示している場合には、入力アドレスの第１４ビットが反転され、出力アドレスの第１４ビットは「１」に変換される。
【００６２】
一方、入力アドレスの第１４ビットが「０」であっても、反転フラグ１３１が反転しない旨（「０」）を示している場合には、ビット反転は行われず、出力アドレスは入力アドレスと一致する。また、入力アドレスの第１４ビットが「０」以外（すなわち、「１」）の場合についても同様に、ビット反転は行われない。
【００６３】
これにより、反転フラグ１３１が反転する旨を示している際に、仮想領域Ａに対するアクセスがあったときのみ、仮想領域Ｂへのアドレス変換が行われることになる。この出力アドレスに従って仮想領域へのアクセスが行われるが、記憶装置２００へのアクセスの際にはさらに物理アドレスへの変換が行われる。この第４の実施例の場合、第１４ビットに「０」を設定したものが物理アドレスとなる。
【００６４】
このように、本発明の実施の形態によれば、領域アドレス１３２に設定された領域アドレスと入力アドレスとの間の一致が比較器１４０により検出された場合に、反転フラグ１３１に応じて排他的論理和回路１６０によって特定のビットを反転させることにより、動的なアドレス変換を簡易な構成により実現することができる。これにより、仮想アドレスに応じてキャッシュの有無やアクセス権限を切り替える際、それらの制御を動的に行うことができる。
【００６５】
本発明の実施の形態におけるアドレス変換機構を用いない場合には、二次キャッシュメモリを追加する前との互換性を維持するための互換モードと、二次キャッシュメモリを利用して高速化を図る高速モードの両者に対応するためのプログラムを別途用意する必要があった。例えば、アプリケーションプログラムについては、二次キャッシュメモリ対応プログラムと、二次キャッシュメモリ非対応プログラムとを用意する必要があった。ＯＳ（オペレーティングシステム）としては、二次キャッシュメモリ対応カーネルと、互換カーネルとを用意する必要があった。本発明の実施の形態によれば、二次キャッシュメモリ対応カーネル上で二次キャッシュメモリ非対応プログラムを組み合わせて実行することが可能となる。
【００６６】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【００６７】
すなわち、請求項１、３、４において、領域アドレス保持手段は例えば制御レジスタ１３０の領域アドレス１３２に対応する。また、変換フラグ保持手段は例えば制御レジスタ１３０の反転フラグ１３１に対応する。また、一致検出手段は例えば比較器１４０に対応する。また、変換手段は例えば論理積回路１５０および排他的論理和回路１６０に対応する。
【００６８】
また、請求項２において、領域アドレス保持手段は例えば制御レジスタ１３０の領域アドレス１３２に対応する。また、反転フラグ保持手段は例えば制御レジスタ１３０の反転フラグ１３１に対応する。また、一致検出手段は例えば比較器１４０に対応する。また、ビット反転手段は例えば論理積回路１５０および排他的論理和回路１６０に対応する。
【００６９】
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。
【図面の簡単な説明】
【００７０】
【図１】本発明の実施の形態において前提となる情報処理システムの構成例を示す図である。
【図２】本発明の実施の形態における記憶装置２００へのアクセス経路の種類を示す図である。
【図３】本発明の実施の形態における記憶装置２００へのアクセス経路の第１の切替例を示す図である。
【図４】本発明の実施の形態におけるアドレス変換機構の第１の実施例を示す図である。
【図５】本発明の実施の形態におけるアドレス変換機構の第１の実施例による真理値表を示す図である。
【図６】本発明の実施の形態における記憶装置２００へのアクセス経路の第２の切替例を示す図である。
【図７】本発明の実施の形態におけるアドレス変換機構の第２の実施例による真理値表を示す図である。
【図８】本発明の実施の形態におけるアドレス変換機構の第１および第２の実施例によるアドレス変換の態様を示す図である。
【図９】本発明の実施の形態における仮想領域の構成例を示す図である。
【図１０】本発明の実施の形態における記憶装置２００へのアクセス経路の第３の切替例を示す図である。
【図１１】本発明の実施の形態におけるアドレス変換機構の第３の実施例を示す図である。
【図１２】本発明の実施の形態におけるアドレス変換機構の第３の実施例による真理値表を示す図である。
【図１３】本発明の実施の形態における記憶装置２００へのアクセス経路の第４の切替例を示す図である。
【図１４】本発明の実施の形態におけるアドレス変換機構の第４の実施例を示す図である。
【図１５】本発明の実施の形態におけるアドレス変換機構の第４の実施例による真理値表を示す図である。
【符号の説明】
【００７１】
１００  処理装置
１０１、１０２  マスター
１１０  ＣＰＵコア
１１１  一次キャッシュメモリ
１２０  二次キャッシュメモリ
１３０  制御レジスタ
１３１  反転フラグ
１３２  領域アドレス
１４０  比較器
１５０  論理積回路
１６０  排他的論理和回路
２００  記憶装置
２０１、２０２  スレーブ
３００  バス
【図１】
2009205445.tif 000003
【図２】
2009205445.tif 000004
【図３】
2009205445.tif 000005
【図４】
2009205445.tif 000006
【図５】
2009205445.tif 000007
【図６】
2009205445.tif 000008
【図７】
2009205445.tif 000009
【図８】
2009205445.tif 000010
【図９】
2009205445.tif 000011
【図１０】
2009205445.tif 000012
【図１１】
2009205445.tif 000013
【図１２】
2009205445.tif 000014
【図１３】
2009205445.tif 000015
【図１４】
2009205445.tif 000016
【図１５】
2009205445.tif 000017