(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムで動いている複数のアクティブプロセススロットの一つに対する仮想アドレスが現在のプロセススロットへエイリアシングされるシステムにおいて仮想アドレスエイリアシングをサポートする方法において、
仮想キャッシュまたはメモリ管理装置に対する仮想アドレスをインターセプトし、
前記の仮想アドレスがエイリアシングされているかどうかを決定し、
もしそれら仮想アドレスがエイリアシングされていなければ、前記の仮想キャッシュまたはメモリ管理装置へ前記の仮想アドレスを通し、そして
もし仮想アドレスがエイリアシングされていれば、前記のインターセプトされた仮想アドレスから新しい仮想アドレスを形成し、この新しい仮想アドレスを前記の仮想キャッシュまたはメモリ管理装置へ通す
ことを特徴とする方法。
【請求項２】
前記オペレーティングシステムは、仮想アドレス空間を、別々のアクティブプロセスに対応する複数のプロセススロットに分割するものであり、ここで、アドレスのエイリアシングが現在のプロセススロットと前記アクティブプロセススロットの内の１つの間に存在していることを特徴とする請求項１に記載の方法。
【請求項３】
前記現在のプロセススロットへのアドレスは、前記現在のプロセススロットへのアドレスを検出し、それを前記エイリアシングされたアクティブプロセスにアクセスするように変更することによって、前記エイリアシングされたアクティブプロセススロットにアクセスするためにリダイレクションされる請求項２に記載の方法。
【請求項４】
アクティブプロセスのうちの現在のアクティブプロセスに対する仮想アドレスをエイリアシングすることを更に含む請求項３に記載の方法。
【請求項５】
現在のプロセスに対するアドレスエイリアシングをせずに、仮想キャッシュまたはメモリ管理装置がアドレスされるように、新しいアドレスを形成することを更に含む請求項４に記載の方法。
【請求項６】
前記プロセスの内の一つをアクティブプロセスになるように割り当て、
ＣＰＵで実行されている前記アクティブプロセスを仮想アドレススペースでそれのスロットと付加的なスロットの両方にマップすることを更に含む請求項２に記載の方法。
【請求項７】
新しいアドレスを形成するステップは、
現在のプロセススロットに対する仮想アドレスを検出し、そして
そのアドレスを変更して、アクティブプロセスのうちの現在のアクティブプロセスを保持する仮想キャッシュのセクションに対する新しいアドレスを発生する
ことを含む請求項６記載の方法。
【請求項８】
仮想アドレスを変更するステップは、仮想アドレスの高位ビットをアクティブプロセスのうちの現在のアクティブプロセスのアドレスへと変えることを含む請求項７に記載の方法。
【請求項９】
オペレーティングシステムで動いている複数のアクティブプロセススロットの一つからの仮想アドレスからエイリアシングが除去されるシステムにおいて仮想アドレスデエイリアシングをサポートする仮想アドレスデエイリアサーを含むシステムにおいて、
仮想キャッシュまたはメモリ管理装置への仮想アドレスをインターセプトし、そして仮想アドレスがエイリアシングされているかどうかを決定する比較ロジックと、
もし仮想アドレスがエイリアシングされていないと前記の比較ロジックが決定すると、仮想アドレスを仮想キャッシュまたはメモリ管理装置へと通し、そしてもし仮想アドレスがエイリアシングされていると前記のインターセプトされた仮想アドレスから新しいアドレスを形成してその新しいアドレスを仮想キャッシュまたはメモリ管理装置へ通す選択ロジックと
を備えることを特徴とするシステム。
【請求項１０】
比較ロジックは、仮想アドレスが現在のプロセスを保持するだけであるアドレススペースのセクションに対するものであるかどうかを決定する請求項９に記載のシステム。
【請求項１１】
選択ロジックは、比較ロジックが現在のプロセスのセクションに対する仮想アドレスを検出するときに、現在のプロセスを保持しているアドレススペースの別のセクションに対応する新しい仮想アドレスを発生する請求項１０に記載のシステム。
【請求項１２】
アクティブプロセスのうちの現在のアクティブプロセスを記憶する現在プロセスレジスタを更に備えている請求項９に記載のシステム。
【請求項１３】
選択ロジックは、現在プロセスレジスタの内容を新しい仮想アドレスの高位ビットとして通す請求項１２に記載のシステム。
【請求項１４】
オペレーティングシステムで動いている複数のアクティブプロセススロットの一つに対する仮想アドレスが現在のプロセススロットへエイリアシングされるシステムにおいて仮想アドレスエイリアシングをサポートする方法において、
仮想キャッシュとメモリ管理装置に対する仮想アドレスをインターセプトし、
前記の仮想アドレスがエイリアシングされているかどうかを決定し、
もしそれら仮想アドレスがエイリアシングされていなければ、前記の仮想キャッシュとメモリ管理装置へ前記の仮想アドレスを通し、そして
もし仮想アドレスがエイリアシングされていれば、前記のインターセプトされた仮想アドレスから新しい仮想アドレスを形成し、この新しい仮想アドレスを前記の仮想キャッシュとメモリ管理装置へ通す
ことを特徴とする方法。
【請求項１５】
オペレーティングシステムで動いている複数のアクティブプロセススロットの一つからの仮想アドレスからエイリアシングが除去されるシステムにおいて仮想アドレスデエイリアシングをサポートする仮想アドレスデエイリアサーを含むシステムにおいて、
仮想キャッシュとメモリ管理装置への仮想アドレスをインターセプトし、そして仮想アドレスがエイリアシングされているかどうかを決定する比較ロジックと、
もし仮想アドレスがエイリアシングされていないと前記の比較ロジックが決定すると、仮想アドレスを仮想キャッシュとメモリ管理装置へと通し、そしてもし仮想アドレスがエイリアシングされていると前記のインターセプトされた仮想アドレスから新しいアドレスを形成してその新しいアドレスを仮想キャッシュとメモリ管理装置へ通す選択ロジックとを備えることを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的には、キャッシュアドレスパスのハードウエア変更に関するものであり、より詳細には、仮想アドレスエイリアシングをサポートする方法および装置に関するものである。
【０００２】
【従来の技術】
データ／命令キャッシュに対する仮想アドレッシングは、物理アドレッシング技法に比べて利点を有している。仮想アドレスを使用するソフトウエアは、リローケーションに関連して有利であり、特に、多重処理環境において有用である。さらに、ハードドライブの如きより大きなデータストアにデータ／命令をキュッシングすることにより、マシンに存在する物理メモリよりも大きなメモリを必要とするプログラムを実行することができる。
【０００３】
しかしながら、典型的には、ハードウエアは、仮想アドレッシングをサポートするために待ち時間ペナルティを被る。ソフトウエアによって発生され中央処理装置（ＣＰＵ）または入力／出力（Ｉ／Ｏ）装置から発せられる仮想アドレスは、先ず、翻訳バッファを使用して仮想アドレスを物理アドレスへと変換するメモリ管理装置（ＭＭＵ）へと通されねばならない。それから、この物理アドレスは、物理的にアドレスされるキャッシュへと通される。しかしながら、これらのオペレータは、直列的であるため、すなわち、仮想−物理アドレス翻訳に続いて物理アドレッシングを行なうので、情報がキャッシュから戻されて受信されるまでに時間がかかり、また、所望の情報がキャッシュに存在しないようなキャッシュミスの決定前に時間がかかってしまう。
【０００４】
仮想アドレッシングに通常伴うハードウエア待ち時間を除去するようにした、仮想キャッシュ、すなわち、仮想アドレッシングをサポートするキャッシュが開発されてきている。ＣＰＵからの仮想アドレスは、ＭＭＵおよび仮想キャッシュへ並列に通される。ＭＭＵは、キャッシュアドレッシングおよび物理アドレスのための許可／アクセスを与え、仮想キャッシュは、アドレスされた情報を返すか、または、キャッシュミスを返す。キャッシュミス状況においては、ＭＭＵの物理アドレスが使用される。
【０００５】
仮想キャッシュで生ずる共通の問題点は、エイリアシング、すなわち、多重の仮想アドレスがメモリの同じ物理アドレスにマッピングされてしまうことである。このような場合には、ライトバックデータキャッシュに問題が生じ、主メモリへ戻されるまで、データが有効な場所のみがキャッシュにあるように、ソフトウエアがそのキャッシュのデータを更新する。仮想キャッシュにエイリアシングされた仮想アドレスが存在する場合には、互いにインコヒーレントである仮想キャッシュの部分が生じてしまう。データが戻されるとき、主メモリは、ＣＰＵによって元々キャッシュに対してなされた変化の部分のみを含みうる。
【０００６】
ハードウエアは、どうしても仮想アドレスエイリアシングの問題に直面する。それは、付加的ハードウエアでサポートされるか、または、単に無効とされるか、すなわち、サポートされないかであり、これは、そのソフトウエア両立性を制限する。
【０００７】
仮想アドレスエイリアシングに対するハードウエアサポートは、バックマップの形をとる。これは、キャッシュと並列なタグストアである。バックマップは、キャッシュミスに関して、アクセスされたブロックが既にキャッシュに存在するがエイリアシングされたアドレスの下にあるかを指示する。バックマップは、キャッシュミスについてのみ調べられるようにクリチカルパスの外にあるという点で利点がある。したがって、これらは、待ち時間を増大しない。しかしながら、各キャッシュロケーションに対して付加的なタグストアを設けねばならないという欠点がある。このために、多くのハードウエアシステムは、仮想アドレスエイリアシングのためにバックマップを設けていない。
【０００８】
【発明の概要】
本発明は、プロセススロット粒度でキャッシュアドレスに対してハードウエア変更をすることに向けられている。このスケールでの仮想アドレスエイリアシングは、多重処理オペレーティングシステムにおいては普通である。本発明は、多重のエイリアシングされたアドレスのためのハードウエアサポートを提供するものであり、すなわち、ＣＰＵの観点から、アドレススペースにおいて同じ物理アドレスに対する多重仮想アドレスをサポートする。しかしながら、この変更は、待ち時間に実質的に影響を与えない。
【０００９】
本発明は、広義においては、仮想キャッシュのためのアドレスを発生する方法および装置に関する。本発明は、オペレーティングシステムがアクティブプロセスの間でのエイリアシングの可能性を必要とするだけであるような状況において最も有用である。より詳細に述べると、本発明は、２つの仮想アドレスロケーションに現在のプロセスのみが存在することを必要とするシステムにおける同じ物理アドレスに対する多重仮想アドレスを効果的にサポートする。
【００１０】
次の実施例に関する説明は、仮想アドレスエイリアシングをサポートする方法を特徴付けている。仮想キャッシュおよび／またはメモリ管理装置に対するアドレスは、先ず、インターセプトされ、そのアドレスがエイリアシングされているかの判断がなされ、すなわち、１つより多い仮想アドレスがメモリの同じロケーションに存在するかの判断がなされる。もし、エイリアシングされていな場合には、それらアドレスは、単に、仮想キャッシュおよび／またはメモリ管理装置へ通される。しかしながら、エイリアシングがある場合には、デエイリアシング（dealiasing）が行われる。新しいアドレスが発生され、仮想キャッシュおよび／またはメモリ管理装置へと通され、エイリアシングされているアドレスが仮想キャッシュの同じロケーションへと向けられるようにされる。このようにして、仮想アドレスエイリアシングを使用するオペレーティングシステムは、サポートされる。何故ならば、ＣＰＵは、透過的にエイリアシングされた仮想アドレスを発し得るからである。しかしながら、これらのアドレスは、仮想キャッシュにおける同じロケーションへ向けられ、それらアドレスは、キャッシュの観点からはエイリアシングされていないようになり、したがって、アドレススペースエイリアシングを補償するために他のハードウエアを必要としないようにすることができる。
【００１１】
好ましい実施例では、アドレスは、仮想キャッシュおよびメモリ管理装置の両方へ通される。しかしながら、ここで認識すべきことは、他の状況においては、キャッシュまたはメモリ管理装置の個々に対するパスに関して本発明のデエリアザー（dealiaser)を実施するのが望ましいということである。
【００１２】
他の実施例では、仮想キャッシュは、現在のプロセススロットとアクティブプロセススロットのうちの１つとの間でアドレスエイリアシングが存在する状態で、別々のアクティブプロセスに対応するプロセススロットへと分割される。現在のプロセススロットに対するアドレスは、エイリアシングされたアクティブプロセススロットにアクセスするためにリダイレクションされる。これは、現在のプロセススロットに対するアドレスを検出し、エイリアシングされたアクティブプロセススロットにアクセスするように変更することによって達成される。いくつかの実施例では、アドレスの高位ビットのみを変更するだけでよい。
【００１３】
【発明の実施の形態】
次に、添付図面に基づいて、本発明の好ましい実施例について、本発明をより詳細に説明する。添付図面において、同様の参照符号は、同様の部分を示すものである。また、これら図面は、尺度において必ずしも同じでなく、むしろ、本発明の好ましい実施例を例示するために強調がなされている。
【００１４】
あるいくつかのオペレーティングシステム、例えば、Windows TM  ＣＥが有名であるが、これらは、プロセス管理において仮想アドレスエイリアシングを使用している。Windows TM  ＣＥの特定の例のコンテキストにおいては、オペレーティングシステムは、仮想アドレススペースの下位の２つのギガバイト（ＧＢ）を６４スロット０．．６３に分割している。最上位仮想アドレス（ＶＡ）ビットは、ユーザスペースとシステムスペースとの間で選択する。このビットは、ユーザスペースでクリアされる（ＶＡ＜３１＞＝＝０）。
【００１５】
ユーザスペースにおける最初のスロット、すなわち、最上位７ビットが零に等しい（ＶＡ＜３１：２５＞＝＝０）仮想アドレスによって指定されるスロット０は、現在実行されているプロセスに対するものである。スロット１から６３（ＶＡ＜３１：２５＞＝＝１．．６３）は、このシステムによってサポートされる６３のアクティブプロセスを保持する。これらのプロセスの各々は、３２メガバイト（ＭＢ）へ制限される。このコンフィギュレーションは、図１に例示されている。
【００１６】
このような構成は、有用である。何故ならば、インタープロセスコミュニケーションを容易とするからである。これらプロセスは、次のようにアドレスを確立するだけで互いにアドレスする。
ＶＡ＝procNum * ２25＋addressInProc
ここで、procNum ＝1.６３であり、すなわち、他のアクティブプロセスのうちの１つおよびaddressInProc ＝０．．１×１ＦＦＦＦＦＦ
【００１７】
仮想アドレスエイリアシングが起きる。何故ならば、ＣＰＵで実行されている現在のプロセスまたはアクティブプロセスは、そのスロット、すなわち、１．．６３のうちの１つおよびスロット０の両方に対して仮想アドレススペースにてマップされる。図１の例では、スロット＃４におけるプロセスは、現在のプロセスであり、したがって、スロット＃０にて見出される。このようなオペレーティングシステムは、バックマッピングハードウエアを必要とするようなページレベルでの仮想アドレスエイリアシングを必要としていない。その代わりに、仮想アドレスエイリアシングは、サポートされたアプリケーションの間で、または、プロセススロットスケールで起きる。
【００１８】
仮想アドレスデエリアザーの効果は、図２に例示されている。スロット１．．６３プロセスパスにおけるアクティブプロセスの任意の１つに対する仮想アドレスは、仮想キャッシュを通して不変である。しかしながら、スロット０における現在のプロセスに対するどのアドレスもハードウエアにおて、スロット１から６３におけるプロセスのうちの現在の１つへと、すなわち、例示した例におけるスロット＃４におけるプロセスへとリダイレクションされる。
【００１９】
効果において、データおよび命令アドレスパスに対して次のようなフィクスアップ（fix-ｕp)がなされる。
0004021555.tif 000002
ここで、va＝ＣＰＵからのアドレス
va′＝仮想アドレスデエリアザーからのＭＭＵおよび仮想キャッシュへ送られた仮想アドレスであり、ＣＰＲは、現在のプロセスの番号（１．．６３）を保持する付加レジスタである。
【００２０】
図３は、本発明を使用したマイクロプロセッサ１０の構成を例示している。好ましい実施例では、プロセッサは、StrongARM 1100型プロセッサである。一般的には、レジスタファイル１２は、読取りポートＲＮおよびＲＭを介して、データを演算論理装置（ＡＬＵ）および乗算器（Ｍｕｌ）１４へ供給する。シフタ１３が、読取りポートＲＭに配置されており、シフトコントローラ３６およびレジスタファイルポートＲＳによって制御される。読取りポートＲＭは、また、ＰＣマルチプレクサ１５によって、新しいプログラムカウンタのためのソースとして選択されうる。他のプログラムソースが示されている。アドフォアインクレメンター（add-four incrementer) １６が使用され、または、ＡＬＵ１４のレッグまたはブランチ命令のための前のＰＣからの出力をシフトする変位マルチプレクサ１８が使用されうる。
【００２１】
ＰＣマルチプレクサ１５からの命令は、これらの成分の観点からエイリアシングを除去するために、命令キャッシュ２０および命令メモリ管理装置２２の前に本発明の仮想アドレスデエリアザー１００に通される。結果として、ＭＭＵ２２における仮想キャッシュ２０または翻訳バッファは、エイリアシングされたアドレスを有さず、したがって、エイリアシングをサポートするための適当なハードウエアを必要としない。
【００２２】
データ側で、データ仮想キャッシュ２４およびデータＭＭＵ２６に対するロード／ストアアドレスＬＤ／ＳＴのソースは、ＬＤ／ＳＴマルチプレクサ２８である。これは、３つの入力から、すなわち、レジスタファイル１２からの読取りポートＲＮ、ＡＬＵ１４からの出力、または、バイトアドレスキャッシュ２４における次の３２ビットアドレスを選択するアドレスインクレメントー３０を選択する。仮想キャッシュからのアドレスされたデータは、レジスタファイル１２のロードバスLbusへ通される。
【００２３】
第２のデータデエリアザー１００が、データアドレスをデエイリアシングするために仮想データキャッシュ２４およびデータＭＭＵ２６へのアドレスをインターセプトするように配置される。
【００２４】
図４は、命令またはデータ仮想キャッシュおよびＭＭＵのうちのどちらか、または両方のためのデエリアザー１００の１つのハードウエア実施を示している。３２ビット仮想アドレスＶＡ＜３１：０＞が、ＡＬＵまたは他のソースからデエリアザー１００で受け取られる。その仮想アドレスの上位７ビットの値は、ロジック１１０において０と比較される。ロジック１１０は、例えば、７入力ＮＯＲゲートとして実施されうる。このロジック１１０の出力は、マルチプレクサ１１２のための選択ビットとして使用される。もし、仮想アドレスＶＡがスロット０において現在のプロセスに対するものでない場合には、その仮想アドレスは、デエリアザーを通して不変のままＶＡ′としてＭＭＵおよび仮想キャッシュの両方へ通される。何故ならば、マルチプレクサ１１２は、そのsel ＝０入力でＶＡを通すからである。しかしながら、もし、アドレスがスロット０において現在のプロセスのためのものである場合には、その仮想アドレスの下位２５ビットは、デエリアザー１００のマルチプレクサ１１２に通される。上位７ビットは、１．．６３アクティブプロセススロットの中で現在のプロセスのスロットアドレスへと変えられる。これらの７ビットの値は、現在プロセスレジスタ（ＣＰＲ）１１４に保持される。これにより、仮想キャッシュは、レンジ０．．０×１ＦＦＦＦＦＦにおけるアドレスに対するすべての基準を知り、CPR * 225 ＋０．．＋０×１ＦＦＦＦＦＦに対する同様の基準をルックさせられる。このようなフィクスアップにより、仮想キャッシュの観点から仮想エイリアシングを避けつつ、現在のプロセスもスロット＃０にあるとの仮定の下でのＣＰＵのファンクションを行えるようにすることができる。このようにして、本発明は、バックマップを付加したり、各コンテキストスイッチ毎にキャッシュをフラッシュする必要なしに、制限された仮想アドレスエイリアシングをサポートする。
【００２５】
好ましい実施例について本発明を特に説明してきたのであるが、当業者には、本発明の範囲から逸脱することなく、それら実施例について種々な変更をなすことができるものであることは、理解されよう。
【図面の簡単な説明】
【図１】プロセススロットスケール仮想アドレスエイリアシングを必要とするオペレーティングのための仮想アドレスマップを示す図である。
【図２】制限されたエイリアシングをサポートするため本発明の一実施例によって行われる仮想アドレス翻訳を例示するアドレスマップを示す図である。
【図３】マイクロプロセッサの内部アーキテクチャおよび本発明のデエリアザーの好ましい実施例の関係を例示するブロック図である。
【図４】本発明の好ましい実施例の一つのハドウエア実施例を示す図である。
【符号の説明】
１０  マイクロプロセッサ
１２  レジスタファイル
１３  シフタ
１４  演算論理装置および乗算器
１５  ＰＣマルチプレクサ
１６  アドフォアインクレメンター
１８  変位マルチプレクサ
２０  命令キャッシュ
２２  命令メモリ管理装置
２４  データ仮想キャッシュ
２６  データＭＭＵ
２８  ＬＤ／ＳＴマルチプレクサ
３０  アドレスインクレメンター
３６  シフトコントローラ
１００  データデエリアザー
１１０  ロジック
１１２  マルチプレクサ
１１４  現在プロセスレジスタ
【図１】
0004021555.tif 000003
【図２】
0004021555.tif 000004
【図３】
0004021555.tif 000005
【図４】
0004021555.tif 000006