(57)【特許請求の範囲】
【請求項１】
データ処理装置であって、
共有メモリ内のデータへのアクセスを必要とするデータ処理動作を実行するための複数の処理装置を備える処理回路であって、複数の階層レベルのソフトウエアから成るソフトウエアを実行するように構成された処理回路と
アクセス動作拡張値を記憶保存するための設定状況記憶装置であって、前記アクセス動作拡張値が所定の階層レベルで実行されるソフトウエアによって設定及び設定解除される設定状況記憶装置と、
前記複数の処理装置による共有アクセス動作の取り扱いを調整するための共有アクセス調整回路と、を備え、
それぞれの前記処理装置は、その処理装置によるアクセスのために前記データのサブセットを記憶保存するための、それと関連付けられたローカル・キャッシュ構造と、前記ローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うためのアクセス制御回路とを有し、
前記アクセス動作の少なくとも１つのタイプは、ローカル・アクセス動作又は前記共有アクセス動作として行われ、
前記共有アクセス動作を受けると、前記アクセス制御回路が前記関連付けられたローカル・キャッシュ構造へのローカル・アクセス動作を行うのに加えて前記共有アクセス調整回路に共有アクセス信号を送り、
前記ローカル・アクセス動作を受けると、前記ローカル・アクセス動作が前記所定の階層レベルよりも低い階層レベルにおいてソフトウエアにより実行されている場合、前記アクセス制御回路が、前記アクセス動作拡張値が設定されていなければ前記共有アクセス調整回路に共有アクセス信号を送ることなく前記関連付けられたローカル・キャッシュ構造に対してローカル・アクセス動作を行い、前記アクセス動作拡張値が設定されていれば前記ローカル・アクセス動作を共有アクセス動作として対処するように構成されるデータ処理装置。
【請求項２】
前記少なくとも１つのタイプのアクセス動作が、前記ローカル・キャッシュ構造の少なくとも１つのエントリー内に保存されているデータの状態を更新するために行われるメインテナンス・アクセス動作を備えていることを特徴とする、請求項１記載のデータ処理装置。
【請求項３】
前記メインテナンス・アクセス動作が、前記ローカル・キャッシュ構造の前記少なくとも１つのエントリーに関して、除去動作と無効化動作のうちの少なくとも１つを実行することを特徴とする、請求項２記載のデータ処理装置。
【請求項４】
前記処理回路がその処理回路上での少なくとも１つの仮想記憶装置の作動実行をサポートするためにハイパーバイザ・ソフトウエアを作動させ、その仮想記憶装置が少なくとも１つのタイプのアクセス動作を行うことを特徴とする、請求項１から３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記少なくとも１つの仮想記憶装置のそれぞれが１つ以上のアプリケーション・プログラムを実行させるオペレーティング・システムを備えていることを特徴とする、請求項４記載のデータ処理装置。
【請求項６】
前記ハイパーバイザ・ソフトウエアが前記オペレーティング・システムを前記複数の処理装置のうちの第１の処理装置から前記複数の処理装置のうちの第２の処理装置に移行させた場合に、前記ハイパーバイザ・ソフトウエアが前記アクセス動作拡張値を設定させることを特徴とする、請求項５記載のデータ処理装置。
【請求項７】
前記アクセス動作拡張値の設定に続いて、前記アクセス制御回路が前記少なくとも１つの仮想記憶装置によって行われたすべてのローカル・アクセス動作を前記共有アクセス動作として対処するが、引き続き、前記ハイパーバイザ・ソフトウエアによって行われたローカル・アクセス動作をローカル・アクセス動作として取り扱うことを特徴とする、請求項６記載のデータ処理装置。
【請求項８】
前記ローカル・キャッシュ構造が、前記データ処理動作のためのオペランド・データとして用いられたデータをキャッシュ化するためのデータ・キャッシュであることを特徴とする、請求項１から７のいずれか１項に記載のデータ処理装置。
【請求項９】
前記ローカル・キャッシュ構造が、前記共有メモリ内のページ・テーブルから得られ、前記関連付けられた処理装置内で仮想アドレスから物理アドレスへの変換を行う際に用いられるページ・テーブル・データをキャッシュ化するための変換ルックアサイド・バッファを備えていることを特徴とする、請求項１から７のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記ローカル・キャッシュ構造が、前記データ処理動作を定義するために用いられる命令をキャッシュ化するための命令キャッシュであることを特徴とする、請求項１から７のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記共有アクセス調整回路が、前記共有アクセス信号に応答して、そのアクセス制御回路が前記共有アクセス信号を発行した処理装置以外の各処理装置に対してローカル・アクセス動作要求を一斉に送り、それによってそのローカル・アクセス動作がそれら各処理装置上で実行されることを特徴とする、請求項１から１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
前記共有アクセス調整回路が前記共有アクセス信号に応答して、そのローカル・キャッシュ構造が前記共有アクセス動作で識別されたデータを含んでいる可能性のある前記複数の処理装置のうちの処理装置のサブセットを判定して、そのサブセット内の処理装置のそれぞれにローカル・アクセス動作要求を送ることを特徴とする、請求項１から１０のいずれか１項に記載の処理装置。
【請求項１３】
前記処理装置のうちの第１の処理装置によってメモリ・バリア動作が実行されると、前記処理装置のうちの前記第１の処理装置が、前記アクセス動作拡張値が設定されていれば、メモリ・バリア信号を送って前記メモリ・バリア動作を前記処理装置のうちの少なくとも１つの他の処理装置で実行させるようにすることを特徴とする、請求項１から１２のいずれか１項記載のデータ処理装置。
【請求項１４】
前記処理装置のうちの前記第１の処理装置が前記メモリ・バリア信号を前記共有アクセス調整回路に送って、前記メモリ・バリア動作を前記処理装置のうちの前記少なくとも１つの処理装置上で実行させることを特徴とする、請求項１３記載のデータ処理装置。
【請求項１５】
前記共有アクセス調整回路がキャッシュ・コヒーレンス・プロトコルを用いるキャッシュ・コヒーレンス回路を備えており、各処理装置によってアクセスされた前記データが確実に最新の状態に更新されていることを特徴とする、請求項１から１４のいずれか１項に記載のデータ装置。
【請求項１６】
前記設定状況記憶装置が前記複数の処理装置のそれぞれに対して個別のアクセス動作拡張値を記憶保存しており、ローカル・アクセス動作を取り扱う際に前記アクセス制御回路がその関連付けられたアクセス動作拡張値を参照することを特徴とする、請求項１から１５のいずれか１項に記載のデータ装置。
【請求項１７】
前記複数の処理装置が対称型マルチプロセッシング（ＳＭＰ）処理回路の複数のプロセッサを形成していることを特徴とする、請求項１から１６のいずれか１項に記載のデータ装置。
【請求項１８】
複数の階層レベルのソフトウエアから成るソフトウエアを実行するように構成され、共有メモリ内のデータへのアクセスを必要とするデータ処理動作を行うための複数の処理装置を有しているデータ処理装置であって、各処理装置がその処理装置によるアクセスのための前記データのサブセット保存用に関連付けられたローカル・キャッシュ構造を有しているデータ処理装置、の内の前記ローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための方法であって、
前記複数の処理装置による共有アクセス動作の取り扱いを調整する共有アクセス調整回路を設けるステップと、
アクセス動作拡張値を記憶保存し、前記アクセス動作拡張値が所定の階層レベルで実行されるソフトウエアによって設定及び設定解除されるステップと、
前記ローカル・キャッシュ構造の１つに対して行われる前記共有アクセス動作を取り扱う際に、その１つのローカル・キャッシュ構造に対するローカル・アクセス動作を実行するのに加えて、前記共有アクセス調整回路に共有アクセス信号を送るステップと、
前記ローカル・キャッシュ構造の１つに対して行われるローカル・アクセス動作を取り扱う際に、前記ローカル・アクセス動作が前記所定の階層レベルよりも低い階層レベルにおいてソフトウエアにより実行されている場合、
（i）   前記アクセス動作拡張値が設定されていなければ、前記共有アクセス調整回路に共有アクセス信号を送らずに、前記ローカル・キャッシュ構造の前記１つに対してローカル・アクセス動作を行い、
（ii）  前記アクセス動作拡張値が設定されていれば、そのローカル・アクセス動作を共有アクセス動作として対処するステップ、とを備えるアクセス動作を取り扱う方法。
【請求項１９】
データ処理装置であって、
共有メモリ内のデータに対するデータ処理動作を行うための複数の処理装置手段を備え、複数の階層レベルのソフトウエアから成るソフトウエアを実行するための処理手段回路であって、各処理装置手段が、その処理装置手段によるアクセス用の前記データのサブセットを記憶保存するための、それと関連付けられたローカル・キャッシュ構造手段と、そのローカル・キャッシュ構造手段に対して行われるアクセス動作を取り扱い、そのローカル・キャッシュ構造に対して行われる少なくとも１つのタイプのアクセス動作がローカル・アクセス動作か共有アクセス動作として行われるアクセス制御手段と、を有する処理手段回路と、
アクセス動作拡張値を記憶保存するための設定状況記憶保存手段であって、前記アクセス動作拡張値が所定の階層レベルで実行されるソフトウエアによって設定及び設定解除される設定状況記憶保存手段と、
前記複数の処理装置手段による前記共有アクセス動作を調整するための共有アクセス調整手段と、を備え、
前記共有アクセス動作を受けると、前記アクセス制御手段が、関連付けられたローカル・キャッシュ構造に対してローカル・アクセス動作を実行するに加えて前記共有アクセス調整手段に対して共有アクセス信号を送り、
前記ローカル・アクセス動作を受けると、前記ローカル・アクセス動作が前記所定の階層レベルよりも低い階層レベルにおいてソフトウエアにより実行されている場合、前記アクセス制御手段が、アクセス動作拡張値が設定されていなければ共有アクセス調整手段に対して共有アクセス信号を送らずにその関連付けられたローカル・キャッシュ構造手段にローカル・アクセス動作を行い、アクセス動作拡張値が設定されていればそのローカル・アクセス動作を前記共有アクセス動作として対処するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うための装置及び方法に関するものであり、より具体的には、そのデータ処理装置がそれぞれ、そのようなローカル・キャッシュ構造を有する複数の処理装置を備えている場合のアクセス動作を取り扱うための装置及び方法に関する。
【背景技術】
【０００２】
従来、２つ以上の処理装置、例えば、プロセッサ・コアが共有メモリに対してアクセスする多重処理システムが知られている。こうしたシステムは、通常、それぞれのデータ処理動作を同時並行的に行うために異なった処理コアを配置することによってより高い性能を得るために用いられている。
【０００３】
そのような多重処理システム内でのデータに対するアクセス速度をさらに向上するために、その処理装置のそれぞれに、その内部に共有されたメモリ内に保存されている前記データのサブセットを保存するための少なくとも１つのローカル・キャッシュ構造を設けることが知られている。そのようなローカル・キャッシュ構造は、例えば、前記処理装置で処理されたデータを保存するために用いられるデータ・キャッシュとか、前記処理装置による実行のための命令を保存するために用いられる命令キャッシュとか、前記処理装置によって物理アドレスなどに発行された仮想アドレスを変換する時に用いられるページ・テーブル情報を保存するために用いられる変換索引バッファなどの種々の形態を採ることができる。
【０００４】
多重処理システム内では、アプリケーションが１つの処理装置から別の処理装置に移行される場合がある。その結果、１つの処理装置を実行する場合に１つのアプリケーションで用いられたデータが、そのアプリケーションが別の処理装置に移行された後に、その処理装置のローカル・キャッシュ構造内に残っている可能性がある。種々のローカル・キャッシュ構造内に残されたデータを追跡し続けるコヒーレンス機構を備えることは知られているが、１つの処理装置が最新の更新版のデータにいつでも確実にアクセスできるようにするために、１つのローカル・キャッシュ構造の１つ以上のエントリーに対して動作が、そのような動作の実行が適切である場合に、別の処理装置のローカル・キャッシュ構造内に保持されているデータに対して対応する動作を行わせないような場合があり得る。そのような場合の一例はキャッシュ・メインテナンス動作の性能である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
キャッシュ・メインテナンス動作は、そのローカル・キャッシュ構造への１回以上のエントリーの状態を更新するために、オペレーティング・システムによってしばしば行われる。例えば、オペレーティング・システムがハイパーバイザ・ソフトウエア層によってハードウエア・プラットホームからシールドされているモノプロセッサ・オペレーティング・システムであるような場合に、そのオペレーティング・システムがそのデータ処理装置が備えている複数の処理装置を十分に認識していない時には、そのキャッシュ・メインテナンス動作に関連性のあるデータが別の処理装置のローカル・キャッシュ構造に保存されている可能性があっても、キャッシュ・メインテナンス動作が、そのオペレーティング・システムが現在作動している処理装置に関係するローカル・キャッシュ構造に関してのみ行われることが起こり得る。純粋に例として示す場合には、特定のアドレス範囲やあるいは特定のプロセス識別子（プロセスＩＤ）に対するすべてのキャッシュ化されたエントリーを無効化すべきだと認識している状況を想定する。その動作が、オペレーティング・システムが現在作動している処理装置のローカル・キャッシュ構造に関してのみ行われた場合に、そのようなキャッシュ・メインテナンス動作はその特定のアドレス範囲内にあったり、あるいはその特定のプロセスＩＤに関連したそのローカル・キャッシュ構造内でキャッシュ化されているすべてのエントリーを正しく無効化する。しかしながら、他の処理装置のいずれかに対応するローカル・キャッシュ構造内に保持されているデータに対しては何の動作も行われない。前に述べたように、これらの処理装置はそのようなキャッシュ・メインテナンス動作の対象として意図されたデータを依然として保持している可能性があるが、そのオペレーティング・システムがハードウエア・アーキテクチャを認識していないので、それらのエントリーがそのキャッシュ・メインテナンス動作の対象にはならない。
【０００６】
こうした問題はハイパーバイザ・ソフトウエアが用いられた場合に起きるだけでなく、ハイパーバイザ・ソフトウエア層が用いられている場合にもしばしば起きる可能性がある。特に、それぞれ１つ以上のアプリケーション・プログラムを作動させている１つのオペレーティング・システムを含む処理回路内の少なくとも１つの仮想記憶装置の実行をサポートするために、ハイパーバイザ・ソフトウエアを実行してしまう可能性がある。こうした状況では、そのオペレーティング・システムとその１つ以上のアプリケーション・プログラムは根底にあるハードウエア・プラットホームに関する知識を保有している必要はなく、そして特に、多重処理システムが使用中であることを必ずしも認識していない場合がある。従って、そのアプリケーション・プログラム及び／又はそのオペレーティング・システムがモノプロセッサ環境を想定したキャッシュ・メインテナンス動作を実行してしまう可能性があり、従って、前に述べたような問題を引き起こす可能性がある。
【０００７】
この問題を解決するための１つの方法は、ハイパーバイザが、そのオペレーティング・システム及び／又はアプリケーションが１つの処理装置から別の処理装置に移行されている（「切り換えられている」と表現される場合もある）時に、別の形態のキャッシュ・メインテナンス動作を行うこと。例えば、切り換えられたオペレーティング・システム及び／又はアプリケーション・プログラムが新しいプロセッサ・コアに対して動作を開始出来るようにされる前に、ハイパーバイザがデータ・キャッシュ除去及び無効化動作、命令キャッシュ無効化動作、ＴＬＢ無効化動作などを広範に行う場合もある。しかしながら、そのようなアプローチが問題を解決する可能性はあるが、そのことは性能にかなりの影響を及ぼし、そして、特に多重処理プラットホームを用いることでもたらされる可能性のある利点の実現を阻んでしまう。
【０００８】
別の方式は、そのオペレーティング・システム及び／又はアプリケーションを１つのソース処理装置から目的の処理装置に移行している時に、ハイパーバイザがその目的のプロセッサに後で行われる可能性のある動作の一部の目標になる可能性があることをマークする方法である。その場合、ハイパーバイザ・ソフトウエアはそのような動作をソース・プロセッサと同時に目的のプロセッサに対しても行う必要があるかどうかも判断することになろう。しかし、そのようなアプローチの重大な欠陥は、その目的のプロセッサに対して行われる動作をトラップする必要があることである。このことは、ハイパーバイザ・ソフトウエアが必要とされる以上に呼び出されるので、性能上のかなりの負担を生じさせることになる。特に、そのトラッピング機能が微細ベースに対して設計されていない場合には、そのハイパーバイザ・ソフトウエアはそのソース・プロセッサとの関連で何の動作も必要とされないような多数の動作のために呼び出されてしまう可能性がある。さらに、ハイパーバイザ・ソフトウエアがそのソース・プロセッサと同時に目的のプロセッサに対してもそのような動作を行う必要性があるかどうかを理解する必要性があるので、複雑性に関するかなり重大な問題が生じてしまう。
【０００９】
従って、それぞれがそのようなローカル・キャッシュ構造を有している複数の処理装置を有するデータ処理システム内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うためのより改良された技術を提供することが望ましい。
【課題を解決するための手段】
【００１０】
第１の態様から鑑みると、本発明は、共有されたメモリ内のデータにアクセスする必要があるデータ処理動作を行うための複数の処理装置を備えたデータ処理装置を提供するものであり、それぞれの処理装置は当該処理装置によってアクセスされる前記データのサブセットを保存するためのそれに関連したローカル・キャッシュ構造と、そのローカル・キャッシュ構造に対して行われるアクセス動作、ローカル・アクセス動作か共有アクセス動作として行われるそのローカル・キャッシュ構造に対する少なくとも１つのタイプのアクセス動作を取り扱うアクセス制御回路を備える。さらにこのデータ処理装置は、アクセス動作拡張値を記憶保存するための状況設定記憶装置と、前記複数の処理装置による共有アクセス動作の取り扱いを調整する共有アクセス調整回路とを含んでいる。そして、その共有アクセス動作を受け取ると、アクセス制御回路がその関連するローカル・キャッシュ構造に対するローカル・アクセス動作を行うのに加えて共有アクセス調整回路に共有アクセス信号を送り、そのローカル・アクセス動作を受けると、前記アクセス拡張値が設定されていなければその共有アクセス調整回路に共有アクセス信号を送らずにそのローカル・アクセス動作を行うように構成され、アクセス動作拡張値が設定されていれば、そのローカル・アクセス動作を前記共有アクセス動作として取り扱うように構成されている。
【００１１】
本発明によれば、一定のタイプのアクセス動作はローカル・アクセス動作あるいは共有アクセス動作として行うことができる。その場合、そのアクセス動作拡張値が設定されているかどうかに基づいてローカル・アクセス動作が取り扱われるような形態でアクセス動作拡張値を記憶保存するために、設定状況記憶装置が設けられる。１つのローカル・キャッシュ構造に関連したアクセス制御回路によって共有アクセス動作が受け取られ、そしてそのアクセス動作拡張値の値が関係のないものであれば、そのアクセス制御回路は単にその関連したローカル・キャッシュ構造に対するローカル・アクセス動作と行って、さらに、共有アクセス調整回路に共有アクセス信号を送るだけである。そして、共有アクセス調整回路はその他の処理装置に信号を一斉送信して、そのローカル・アクセス動作がそれらの関連しているローカル・キャッシュ構造に関して行われるようにするか、あるいは、その共有アクセス調整回路が保持している一定の状態に関してその信号を送るべき処理装置のサブセットを判定する。
【００１２】
アクセス制御回路がローカル・アクセス動作を受けた時に、アクセス動作拡張値が設定されていなければ、そのアクセス制御回路は単にその関連するローカル・キャッシュ構造に対するローカル・アクセス動作を実行するだけである。しかし、アクセス動作拡張値が設定されていれば、その場合は、本発明に従って、唯１つのローカル・アクセス動作が受け取られただけでも、そのアクセス制御回路はそのローカル・アクセス動作を共有アクセス動作として取り扱う。
【００１３】
そのような方式によれば、上に述べた問題が軽減されることが理解されよう。特に、一度アクセス動作拡張値が設定されてしまうと、ローカル・アクセス動作が共有アクセス動作として取り扱われるので、従って、そのローカル・アクセス動作を行わせるエンティティがその多重処理システムの構造について認識しているかどうか、あるいは、それが標的にしようとしているデータが別の処理装置のローカル・キャッシュ構造に実際に記憶保存されている可能性は問題とはならない。
【００１４】
さらに、本発明による方式は、多重処理プラットホーム上で動作するという性能上の利点が保持されているので、前に述べた機構と比較して、性能をかなり向上させ、複雑さを軽減してくれる。さらに、ハイパーバイザ・ソフトウエアが用いられる実施形態では、どんなローカル・アクセス動作もトラップする必要はないし、ハイパーバイザ・ソフトウエアがそのようなトラップされた動作をどのように処理すべきかを決めるためにそれらの動作を理解する必要もない。
【００１５】
アクセス動作拡張値が一度設定されると、一実施形態においては、その後のすべてのローカル・アクセス動作を、そのソースには関係なく共有アクセス動作として取り扱わせることができる。しかしながら、別の実施形態においては、処理回路上で実行されるソフトウエアが複数の階層レベルのソフトウエアから成り、所定の階層レベルで実行されるソフトウエアによって、アクセス動作拡張値が設定されたり設定解除されたりし、アクセス制御回路は、前記所定の階層レベルより低い階層レベルのソフトウエアによって行われるローカル・アクセス動作を取り扱う場合、それに応答するだけである。従って、１つの例として、ハイパーバイザ・ソフトウエアが用いられている実施形態を想定すると、そのハイパーバイザ・ソフトウエアが最も高い階層レベルを形成し、オペレーティング・システムがより低い階層レベルを形成し、そしてそのオペレーティング・システム上で動作するアプリケーション・プログラムがさらに低い階層レベルを形成する場合がある。ハイパーバイザ・レベルでアクセス動作拡張値が設定されると、そのオペレーティング・システムやアプリケーション・プログラムによって行われるどのローカル・アクセス動作も共有アクセス動作として取り扱われ、ハイパーバイザ・ソフトウエアはローカル・アクセス動作として取り扱われるローカル・アクセス動作を引き続き行うことができる。これは、例えば、オペレーティング・システムがモノプロセッサ・オペレーティング・システムであって、従ってその処理回路の多重処理的性質を認識していない場合に有益である。別の例でも、そのオペレーティング・システムが処理回路の多重プロセッサ的性質を認識しており、例えば、１つの動作がどのプロセッサを対象に行われるべきかを認識するような方法で最適化されているが、その知識がそのオペレーティング・システムがハイパーバイザの下で実行しているような、間違っている可能性があるような場合でも有益である。
【００１６】
別の実施形態において、アクセス動作拡張値がオペレーティング・システムによって設定される場合は、その下層のアプリケーション・プログラムによって行われるすべてのローカル・アクセス動作は共有アクセス動作として取り扱われるが、そのオペレーティング・システム（そして、そのオペレーティング・システムの上位にあるすべてのハイパーバイザ・レベル）は、アクセス制御回路によってローカル・アクセス動作として取り扱われるローカル・アクセス動作を引き続き行うことができる。
【００１７】
ローカル・アクセス動作と共有アクセス動作のいずれとしてでも行うことができる少なくとも１つのタイプのアクセス動作は、種々の形態を採ることができる。一実施形態において、１つのそのようなアクセス動作はローカル・キャッシュ構造の少なくとも１つのエントリーに記憶保存されているデータの状態を更新するために行われるメインテナンス・アクセス動作である。従って、メインテナンス・アクセス動作は必ずしもキャッシュ構造内に保存されているデータ自体を更新しなくても、その代わりにそのデータに関連したローカル・キャッシュ構造内に保持された関連した状態への変更をもたらす。１つの特殊な実施形態では、メインテナンス・アクセス動作はそのローカル・キャッシュ構造内の前記少なくとも１つのエントリーに対する除去動作か無効化動作のうちの少なくとも１つを実行する。除去動作はすべてのダーティーな、そして有効なデータをメモリに追い出し、ダーティーなデータがメモリに保持されている対応するデータより新しいデータになる。そのようなメインテナンス・アクセス動作は通常はデータ・キャッシュに関連して行われる。無効化動作は、例えば、そのエントリーに関連した有効ビットをリセットすることによって、そのローカル・キャッシュ構造内の特定のエントリーの現在の内容を無効にする。無効化動作は、例えば、命令キャッシュ、データ・キャッシュ、ＴＬＢなどの種々の異なったローカル・キャッシュ構造との関連でしばしば用いられる。
【００１８】
一実施形態において、処理回路はハイパーバイザ・ソフトウエアを実行してその処理回路上の少なくとも１つの仮想記憶装置の実行をサポートし、その仮想記憶装置は前記の少なくとも１つのタイプのアクセス動作を行うように構成される。各仮想記憶装置は通常１つ以上のアプリケーション・プログラムを実行するオペレーティング・システムによって構成される。上にも述べたように、多重処理システム内のそのようなハイパーバイザ・ソフトウエアの１つの使用は、モノプロセッサにその多重処理システムで実行すべきオペレーティング・システムを認識できるようにして、そのハイパーバイザ・ソフトウエアがハードウエア・プラットホームの特殊な構造をそのオペレーティング・システムから遮蔽できるようにするためである。
【００１９】
しかしながら、そのオペレーティング・システムが多重プロセッサで使用可能のものであっても、ハイパーバイザ・ソフトウエアの制御の下でそのようなオペレーティング・システムを実行することには依然として利点があり得る。例えば、多重プロセッサで使用可能にされたオペレーティング・システムを、複数のオペレーティング・システムが所定の多重プロセッサ・システム上で共存することが求められた場合に、ハイパーバイザ・ソフトウエアの制御下で実行させることができる。こうした方式によって、２つの知られているオペレーティング・システムをそのいずれかを修正しなくても、そのハードウエア上で同時並行的に実行させることができる。別の例として、ハイパーバイザ・ソフトウエアはプロセッサのパワー・アップ及びダウンがそのハイパーバイザの制御下で行われる場合に、多重プロセッサ・システム内でしばしば用いられることもある。そのような実施形態では、オペレーティング・システムは、通常はその上で作動しているハードウエアが作業負荷に応じて異なった数のプロセッサを有していることを認識しない。ハイパーバイザ・レベル内で多重プロセッサ・システムのパワー・アップ／ダウンを制御することにより、ＯＥＭベンダーは必要とされる多重オペレーティング・システムに修正を加えることなく、付加価値を提供することができる。
【００２０】
ハイパーバイザ・ソフトウエアを用いるのは、通常は、ある時点でオペレーティング・システムを複数の処理装置のうちの１つの処理装置から別の処理装置に移動させて、その移動プロセス後に、そのオペレーティング・システムが、それが移動させられた処理装置上で、下層に存在するすべてのアプリケーションと共に動作を再開させるようにする場合である。１つの特殊な実施形態で、ハイパーバイザ・ソフトウエアが１つのオペレーティング・システムをそのような状態で移動させた場合、そのハイパーバイザ・ソフトウエアはアクセス動作拡張値を設定させる。そのアクセス動作拡張値の設定に続いて、アクセス制御回路が前記少なくとも１つの仮想記憶装置によって行われたすべてのアクセス動作を共有アクセス動作として取り扱うが、そのハイパーバイザ・ソフトウエアによって行われたローカル・アクセス動作は引き続きローカル・アクセス動作として取り扱う。
【００２１】
前述のように、ローカル・キャッシュ構造は様々な形態を採ることができる。一実施形態において、ローカル・キャッシュ構造は前記データ処理動作に関するオペランド・データとして用いられるキャッシング・データ用のデータ・キャッシュである。あるいは、そのローカル・キャッシュ構造は前記共有メモリ内のページ・テーブルから得られて関連する処理装置内で仮想アドレスから物理アドレスへの変換を行う場合に用いられるページ・テーブル・データをキャッシングするためのトランスレーション・ルックアサイド・バッファで構成することもできる。別の例では、ローカル・キャッシュ構造は前記データ処理動作を定義するために用いられる命令をキャッシングするための命令キャッシュで構成することもできる。さらに別の例で、そのローカル・キャッシュ構造を１つの分岐を取り入れるか取り入れないかを予測する場合に分岐予測装置によって参照されるデータを保存するために用いられる分岐履歴バッファや、分岐命令のためのターゲット・アドレスを保存するために用いられる分岐・ターゲット・バッファで構成することもできる。
【００２２】
共有アクセス調整回路が共有アクセス信号に対応できるようにする方法は多数ある。一実施形態において、共有アクセス調整回路は前記共有アクセス信号に応答して、そのアクセス制御回路が前記アクセス信号を出した処理装置以外の処理装置のそれぞれにローカル・アクセス動作要求を一斉に送り、それによって、そのローカル・アクセス動作がそれら処理装置のそれぞれで実行される。従って、そのような実施形態では、共有アクセス調整回路は最初の共有アクセス動作の対象であるデータをどの処理装置が含んでいるのか（つまり、その最初の共有アクセス動作がその通りに行われた共有アクセス動作であるか、あるいは、アクセス動作拡張値が設定されているのでアクセス制御回路によって共有アクセス動作にアップグレードされたローカル・アクセス動作であるか）を判定しようとは試みない。その代わりに、共有アクセス調整回路は単にそれぞれの処理装置に対して要求を送り、それらの処理装置に、最初の共有アクセス動作によって指定されたデータに関してローカル・アクセス動作を行わせるだけである。
【００２３】
別の実施形態において、共有アクセス調整回路は前記アクセス信号に応答して、そのローカル・キャッシュ構造が共有アクセス動作によって識別されたデータを含んでいる可能性のある前記複数の処理装置から処理装置のサブセットを判定して、そのサブセットのそれぞれの処理装置にローカル・アクセス動作要求を送る。そのような方式は、共有アクセス調整回路がそのデータがどこでキャッシュ化されたかについてのなんらかの記録を保持しており、従って、その特定のデータに関して、どのローカル・キャッシュ構造がそのデータのコピーを記憶している可能性があるかが分かっているような場合に利用可能である。これによって、その共有アクセス調整回路によって出された要求を処理装置のサブセットに限定して、それによって、エネルギー効率ゲインを生み出し、可能性としては不必要なアクセス動作が実行される回数を減少することによって性能を向上させる可能性も生まれる。
【００２４】
上に述べた本発明の実施形態の技術はアクセス動作との関連で用いられるが、その技術は他のタイプの動作との関連で用いることもできる。例えば、１つのアプリケーション・プログラムが、例えば書き込み動作など前のメモリ動作がそのシステムの他の部分で確実に見えるようにしたり、あるいは、後のメモリ動作がそのような前のメモリ動作と順序づけられることを求めているような場合に、そのようなアプリケーション・プログラムがメモリ・アクセスの所定の順序付けを強制的に実行するか、あるいは、前のメモリ動作の結果が確実に見えるようにされるために、アプリケーション・プログラムがメモリ・バリア動作を行うことが知られている。しかしながら、当該メモリ動作とメモリ・バリア動作の間にそのアプリケーション・プログラムが１つの処理装置から別の処理装置に移行されている場合は、そのメモリ・バリア動作が意図した目的を達成できない可能性もある。しかし、一実施形態によれば、前記処理装置の最初の１つによるメモリ・バリア動作が実行されると、その最初の処理装置が、前記アクセス動作拡張値が設定されていれば、メモリ・バリア信号を送って前記メモリ・バリア動作を前記複数の処理装置のうちの少なくとも１つの処理装置上で実行させるように構成される。
【００２５】
他の処理装置にメモリ・バリア信号と従ってメモリ・バリア動作をローカルで実行する必要性を通知するために、専用伝達経路を設けることもできる。しかしながら、一実施形態においては、前記複数の処理装置のうちの最初の装置がそのメモリ・バリア信号を前記共通アクセス調整回路に送って、そのメモリ・バリア動作を前記複数の処理装置のうちの少なくとも１つの他の装置上で実行させる。従って、そのような実施形態では、必要な処理装置に対するメモリ・バリア動作の伝達を管理するために共有アクセス調整回路が再利用される。
【００２６】
共有アクセス調整回路は様々な形態を採ることができる。しかしながら、一実施形態においては、共有アクセス調整回路はそれぞれの処理装置によってアクセスされる前記データが確実に更新されるようにするためにキャッシュ・コヒーレンス・プロトコルを採用するキャッシュ・コヒーレンス回路を備える。
【００２７】
一実施形態においては、システム全体のために単一のアクセス動作拡張値を設けることができる。しかしながら、別の実施形態においては、設定状況記憶装置が前記複数の処理装置のそれぞれに対して個別のアクセス動作拡張値を保存しており、アクセス制御回路はローカル・アクセス動作を取り扱う時にその関連するアクセス動作拡張値を参照するようになっている。そのような一実施形態において、何らかの中央記憶装置によってそのような設定状況記憶装置が与えられる場合もあるし、あるいは、各処理装置内に個別の記憶保存装置が設けられそれらが集合的に設定状況記憶装置を形成し、各処理装置に対して適切なアクセス動作拡張値がローカルに記憶保存されるようになっている。
【００２８】
複数の処理装置が種々の形態を採ることもでき、一実施形態においては、それら複数の処理装置のそれぞれがプロセッサを備えている。これらのプロセッサはすべてが同一のものでなくてもよいが、一実施形態においては、それら複数のプロセッサが対称型マルチプロセッシング（ＳＭＰ）処理回路を形成している。
【００２９】
第２の態様から鑑みると、本発明は１つのデータ処理装置内のローカル・キャッシュ構造に対して行われるアクセス動作を取り扱う方法を提供し、そのデータ処理装置は共有メモリ内のデータに対するアクセスを必要とするデータ処理動作を実行するための複数の処理装置を有しており、各処理装置はその処理装置によるアクセスするために前記データのサブセットを記憶保存するためにそれ関連付けられたローカル・キャッシュ構造を有している。さらに、その方法は、前記複数の処理装置による共有アクセス動作の取り扱いを調整するための共有アクセス調整回路を設けるステップと、アクセス動作拡張値を記憶保存するステップと、それらローカル・キャッシュ構造の１つに対して行われる前記共有アクセス動作を取り扱う場合に、前記複数のローカル・キャッシュ構造のうちの前記１つのローカル・キャッシュ構造に対するローカル・アクセス動作を実行するのに加えて、共有アクセス調整回路に対して共有アクセス信号を送るステップと、前記複数のローカル・キャッシュ構造の１つに対して行われるローカル・アクセス動作を取り扱う場合に、(i)そのアクセス動作拡張値が設定されていなければ、共有アクセス調整回路に対して共有アクセス信号を送らずに前記複数のローカル・キャッシュ構造の前記１つの構造に対してローカル・アクセス動作を実行し、そして(ii)アクセス動作拡張値が設定されていれば、その共有アクセス動作に対処するステップを備える。
【００３０】
第３の態様から鑑みると、本発明はデータ処理装置を提供し、このデータ処理装置は共有メモリ内のデータに対するアクセスを必要とするデータ処理動作を実行するための複数の処理装置手段を備えており、各処理装置手段はその処理装置手段によるアクセス用の前記データのサブセットを記憶保存するためにそれと関連付けられたローカル・キャッシュ構造手段と、そのローカル・キャッシュ構造に対して行われるアクセス動作を取り扱うためのアクセス制御手段を有しており、そのローカル・キャッシュ構造手段に対する少なくとも１つのタイプのアクセス動作がローカル・アクセス動作か又は共有アクセス動作として行われることを特徴としている。このデータ処理装置はさらに、１つのアクセス動作拡張値を記憶保存するための設定状況記憶手段と、前記複数の処理装置手段による前記共有アクセス動作の取り扱いを調整するための共有アクセス調整手段を含んでおり、前記共有アクセス動作を受け取ると、アクセス制御手段がその関連付けられたローカル・キャッシュ構造に対するローカル・アクセス動作を実行するのに加えて共有アクセス調整手段に共有アクセス信号を送り、前記ローカル・アクセス動作を受け取ると、アクセス制御手段が、アクセス動作拡張値が設定されていなければ、共有アクセス調整回路に共有アクセス信号を送らずに関連付けられたローカル・キャッシュ構造手段に対してローカル・アクセス動作を実行し、そして、アクセス動作拡張値が設定されていれば、そのローカル・アクセス動作を前記共有アクセス動作として処理する。
以下に、添付図面に図示されている実施形態を参照して、例示のみを目的として本発明をさらに詳しく説明する。
【図面の簡単な説明】
【００３１】
【図１】図１は、本発明の一実施形態による多重処理システムを図式的に示す図である。
【図２】図２は、一実施形態において、キャッシュ・メインテナンス動作がどのように取り扱われるかを示すフローチャートである。
【図３】図３は、一実施形態において、ハイパーバイザがアクセス動作拡張ビットをどのように設定することができるかを示すフローチャートである。
【図４Ａ】図４Ａは、一実施形態において、アクセス動作拡張ビットが設定された場合のローカル・アクセス動作の取り扱いを図式的に示している。
【図４Ｂ】図４Ｂは、別の一実施形態において、アクセス動作拡張ビットが設定された場合のローカル・アクセス動作の取り扱いを図式的に示している。
【図５】図５は、１つの処理装置から別の処理装置への移行によって生じる可能性のある問題を、一実施形態の技術を用いることで回避しているコード発生プロセスを示すフローチャートである。
【図６】第１の処理装置から第２の処理装置に移行され、次に前記第１の処理装置に送り返された場合に発生し得る問題を、一実施形態の技術を用いて回避しているページ・テーブル更新プロセスを図式的に示すフローチャートである。
【図７】図７は、一実施形態において、メモリ・バリア動作をどのように取り扱うことが出来るかを図式的に示すフローチャートである。
【図８】図８は、メモリ・バリア動作を含む一連の動作を図式的に示すフローチャートで、１つの処理装置から別の処理装置への切り換えを通じて生じ得る問題が一実施形態の技術を用いることで回避されていることを示している。
【発明を実施するための形態】
【００３２】
図１は一実施形態による多重処理システムを示している。複数の処理装置１０、４０が設けられており、図示されている例では、両方も処理装置とも１つのプロセッサ・コアと関連付けられたローカル・キャッシュ構造を含んでいる。プロセッサは同一である必要はないが、一実施形態においては、これらのプロセッサは同様の構造を持ち、ＳＭＰシステムを形成している。図に示すように、第１の処理回路１０は一連の命令を実行するためのコア２０を備えている。コア２０は１つ以上のキャッシュ２４へのアクセスを有しており、これらのキャッシュ２４は一実施形態においては命令キャッシュと個別データ・キャッシュで構成することができる。仮想アドレスから物理アドレスへの変換などのメモリ・アクセス制御動作を行う場合には、メモリ管理装置（ＭＭＵ）２６によって参照されるＴＬＢ２８のような他のローカル・キャッシュ構造を設けることもできる。
【００３３】
前記ローカル・キャッシュ構造、この例ではキャッシュ２４とＴＬＢ２８に関するメインテナンス動作を行うためにメインテナンス回路２２も設けられている。一実施形態において、このメインテナンス回路２２はプロセッサ・コア２０の一部を形成しているとみなすことができ、例えば、コア２０によって提供される実行原理の１つを形成していると考えることができる。プロセッサ１０はプロセッサの動作を構成するために用いられる１つ以上の設定状況レジスタ３０も含んでいる。本発明のこれらの実施形態によれば、この設定状況レジスタ３０はキャッシュ・メインテナンス動作を実行する時にメインテナンス回路２２が参照する１つのアクセス動作拡張値を含んでいる。具体的には、後でより詳細に説明するように、このアクセス動作拡張値の値に基づいて、メインテナンス回路はローカル動作として指定されたキャッシュ・メインテナンス動作をどのように取り扱うかを変更する。
【００３４】
図示してある実施形態では、プロセッサ４０がプロセッサ１０に対して同じ形態で構成されており、従って、コア５０、メインテナンス回路５２、キャッシュ５４、ＭＭＵ５６内部のＴＬＢ５８、及び１つ以上の設定状況レジスタ６０を含んでいる。
【００３５】
種々の処理装置１０、４０はコヒーレント相互接続７０を介して共有メモリ７５に接続されている。コヒーレント相互接続７０は種々のローカル・キャッシュ構造内に保存されているデータを確実にコヒーレントな状態で保存するので、従って、各プロセッサはそのデータを同じように見ている。それ故、例として言えば、コア５０がそのデータ・キャッシュ５４内に無いデータ・アクセス要求を出した場合、これはコヒーレント相互接続７０に要求を出させることになり、それが要求されたデータが処理装置１０の対応するデータ・キャッシュ２４内に保存されているかどうかを判断することになる。保存されていれば、そのデータは処理装置１０のデータ・キャッシュから引き出されて、処理装置４０に提供される。コヒーレント相互接続７０によって用いられるコヒーレンス・プロトコルに従って、処理装置１０のデータ・キャッシュ内の関連性のあるデータを無効としてマークすることもできるし、あるいは、処理装置１０と４０の両方がそのデータのコピーを共有のものとマークすることもできる。このことは、次に、そのデータに関連して行われるその後のアクセス動作がどのように取り扱われるかに影響を及ぼす。要求されているデータをその他のキャッシュの１つに見出せない場合だけ、そのデータはメモリ７５からアクセスされる。
【００３６】
そのような技術はデータのコヒーレンスを維持する上ではうまく働くが、ハードウエアで作動するオペレーティング・システムとより下層のアプリケーションがそのハードウエアの多重プロセッサ的な性質を認識していないと、複数の仮想記憶装置を稼動させようとしてハイパーバイザ・ソフトウエアを用いる場合に起きるような問題が発生する可能性がある。特に、図１に示すように、ハイパーバイザ・ソフトウエア８０が処理回路上の少なくとも１つの仮想記憶装置９０の作動をサポートするために、複数の処理装置１０、４０から成るハードウエア・プラットホーム上で実行される場合がある。各仮想記憶装置は１つ以上のアプリケーション・プログラム９４、９６を作動させるオペレーティング・システム９２から成る。以下により詳細に述べるように、本発明の前記の実施形態の技術は単一の仮想記憶装置９０だけがハイパーバイザ８０によって実行される場合に用いることができるが、その作動がハイパーバイザ・ソフトウエアによってサポートされる２つ以上の仮想記憶装置が存在する場合もある。従って、点線で囲んだ箇所に示すように、複数のアプリケーション・プログラム１０４、１０６を作動させるオペレーティング・システム１０２なら成る少なくともさらに１つの仮想記憶装置１００を設けることもできる。
【００３７】
動作中に、ハイパーバイザ・ソフトウエア８０が、例えば、各処理装置１０、４０のデータ流負荷を考慮して性能を増大させようとする場合のように、仮想記憶装置を１つの処理装置から別の処理装置に移行させることができる。下層にあるハードウエアがハイパーバイザ・ソフトウエア８０によってその仮想記憶装置から遮蔽されているので、仮想記憶装置９０は、通常、処理装置１０と４０のいずれで作動しているかを認識しておらず、さらに、その動作が１つの処理装置から別の処理装置に切り換えられた時点も通常は認識していない。従って、オペレーティング・システム９２及び／又はアプリケーション・プログラム９４、９６は、仮想記憶装置がこれらのキャッシュ・メインテナンス動作の対象であるデータがローカル・キャッシュ構造内に保存されていると予想するので、ローカル・キャッシュ・メインテナンス動作として指定されるキャッシュ・メインテナンス動作を行う。しかしながら、そのデータが最初にキャッシュ構造に保存されていた時とそのキャッシュ・メインテナンス動作が行われた時との間に、その仮想記憶装置が１つの処理装置から別の処理装置に移されていたとすると、この前提条件は正しくなくなり、そのキャッシュ・メインテナンス動作の対象であるデータのすべてが必ずしもそのキャッシュ・メインテナンス動作の対象とはされないことから、間違った動作をもたらす可能性がある。
【００３８】
コヒーレント相互接続７０の存在と特定のキャッシュ・エントリーを共有のものとマークすることは、それ自体では、問題が確実に発生しないようにする上で十分ではない。例えば、１つの仮想記憶装置が１０個のデータ値をキャッシュに書き込んで、それらのデータ値のうちの３つが処理装置１０のキャッシュ２４に書き込まれ、仮想記憶装置９０が処理装置１０で作動しており、次に仮想記憶装置９０を処理装置４０への切換えがハイパーバイザによって行われ、残りの７つのデータ値がデータ・キャッシュ５４に書き込まれる場合を想定する。次に、キャッシュ・メインテナンス動作がこれら１０個のデータ値を含む一連のアドレスを除去するためにキャッシュ・メインテナンス動作が行われて、仮想記憶装置９０が依然として処理装置４０上で作動しているとすると、キャッシュ５４内の７つのデータ値がそのキャッシュに存在しており、必要な除去作業が行われることは明らかである。これらのエントリーが共有のものとマークされていると、そのデータの他のすべてもコピーも確実に無効化されるように、コヒーレント相互接続７０に対しても信号が送られる。しかしながら、問題の他の３つのデータ値に関しては、処理装置４０内のローカルに実行されるキャッシュ・メインテナンス動作がこれらの関連付けられたアドレスに関連してキャッシュ・ミスを検出するだけで、さらに別の動作は行わない（その代わりに、そのデータはすでにメモリに追い出されたと想定される）。しかし、その結果として、これら３つのデータ値は依然としてキャッシュ２４内に存在しており、除去されていないから、これら３つのデータ値に関して共有メモリ７５が更新されていないという結果になる。このことは仮想記憶装置の正しくない動作を引き起こす可能性がある。
【００３９】
本発明の実施形態によれば、この問題はアクセス動作拡張ビットの提供を通じて解決される。このアクセス動作拡張ビットは特定の階層レベルのソフトウエアによって設定され、一度設定されると、その階層のより低いレベルのソフトウエアによって行われるローカル・キャッシュ・メインテナンス動作の取り扱い方に影響を及ぼす。従って、一実施形態においては、このアクセス動作拡張ビットは、オペレーティング・システム９２によって設定され、アプリケーション９４、９６によって行われるその後のすべてのキャッシュ・メインテナンス動作は、そのオペレーティング・システムがアクセス動作拡張ビットを設定してあるか否かによって異なった状態で取り扱われるようにされる。しかしながら、以下の検討では、仮想記憶装置によって（オペレーティング・システム９２によるものかアプリケーション・プログラム９４、９４のいずれか１つに依るかは関係なく）行われるすべてのキャッシュ・メインテナンス動作が、アクセス動作拡張ビットが設定されているか否かによって異なった状態で取り扱われるように、そのアクセス動作拡張ビットはハイパーバイザ・ソフトウエア８０によって設定可能であることを想定している。
【００４０】
図２は、一実施形態によるアクセス動作拡張ビットの値によってローカル・キャッシュ・メインテナンス動作の取り扱いがどのように影響を受けるかを示すフローチャートである。具体的には、ステップ１５０で、メインテナンス回路がキャッシュ・メインテナンス動作の受け入れを待機している。キャッシュ・メインテナンス動作が受け取られると、ステップ１５５で、そのキャッシュ・メインテナンス動作がローカル・アクセス動作か否かが判定される。否であれば、プロセスはステップ１６５に進んで、共有アクセス信号がコヒーレント相互接続に送られて、１つ以上の他の処理装置上でローカル・アクセス動作を行わせ、さらに、ステップ１７０で、ステップ１５０でキャッシュ・メインテナンス動作を受け入れるメインテナンス回路に関連付けられたローカル・キャッシュ構造に関して、ローカル・キャッシュ・メインテナンス動作が行われる。
【００４１】
なお、ステップ１６５と１７０が連続して示されているが、これらのステップは逆の順番で行われてもよく、あるいは、並行的に行われてもよい。さらにいくつかの実施形態では、ステップ１７０で行われるローカル・キャッシュ・メインテナンス動作はその共有アクセス信号に対して、その他のいずれの処理装置上での対応するローカル・キャッシュ・メインテナンス動作の実行結果には無関係に実行される。しかしながら、別の実施形態においては、ステップ１７０でのローカル・キャッシュ・メインテナンス動作の実行は、ステップ１６５でコヒーレント相互接続で出された共有アクセス信号に応答して、他の種々の処理装置がそれぞれのローカル・キャッシュ・メインテナンス動作の実行を完了するまで遅延されてしまう場合がある。
【００４２】
ステップ１５５で、キャッシュ・メインテナンス動作がローカル・アクセス動作であると判断された場合、ステップ１６０で、アクセス動作拡張ビットが設定されているか否かが判定される。否であれば、そのキャッシュ・メインテナンス動作は単にローカルな動作として取り扱われ、従って、そのローカル。キャッシュ・メインテナンス動作はステップ１７０で実行される。しかしながら、そのアクセス動作拡張ビットがステップ１６０で設定済みと判断された場合は、そのローカル・アクセス動作は実際に共有アクセス動作として対処される。従って、ステップ１６５とステップ１７０が実行される。その結果、アクセス動作拡張ビットが設定されている場合、ローカル・アクセス動作として指定されたキャッシュ・メインテナンス動作が『アップグレード』されて共有アクセス動作として対処される。従って、これによって、どの処理装置上で仮想記憶装置が現在作動しているかには関係なく、関係するすべてのキャッシュ構造で確実に実行される。
【００４３】
図３は一実施形態においてアクセス動作拡張ビットをいつ設定するかを、ハイパーバイザ・ソフトウエア８０がどのように判断するかを示すフローチャートである。ステップ２００で、ハイパーバイザはオペレーティング・システムをソース処理装置から目的の処理装置に移行させる。このプロセスの間、ハイパーバイザ・ソフトウエアはステップ２０５でそのオペレーティング・システムが多重プロセッサを認識しているかどうか、この例では、ハードウエアがＳＭＰ処理回路であるから「ＳＭＰを認識しているかどうか」を判定する。オペレーティング・システムがＳＭＰを認識していなければ、プロセスがステップ２１０に進んで、アクセス動作拡張ビットが設定され、そのオペレーティング・システムがＳＭＰを認識しているのであれば、ステップ２１５でそのアクセス動作拡張ビットが除去される。ステップ２１０あるいは２１５に続いて、ハイパーバイザはそのオペレーティング・システムがステップ２２０で目的の処理装置上で作動を開始できるようにする。
【００４４】
図３を参照して説明した実施形態では、オペレーティング・システムがＳＭＰを認識していれば、それがキャッシュ・メインテナンス動作を行い、共有かローカルかが正しく識別される。しかし、別の実施形態においては、オペレーティング・システムがＳＭＰを認識しているか否かに関係なく、単にオペレーティング・システムを１つの処理装置から別の処理装置に移動させる度に、アクセス動作拡張ビットを設定するように構成される場合もある。こうした方式は、ＳＭＰで稼動可能にされるオペレーティング・システムが、どのプロセッサの上で動作が行われるべきかを理解するような方法で最適化されている場合には有効である。何故なら、この知識はそのオペレーティング・システムがハイパーバイザ層の下で稼動している場合は間違っている可能性があるからである。
【００４５】
図４Ａは、一実施形態において、ローカル・アクセス動作がどのように取り扱われるかを図式的に示している。この例の目的に合わせて、多重処理システムが３つの処理装置３００、３２０、３４０を有していると仮定されている。図示のために、これらの処理装置の関連性のある内部構造だけを示してある。従って、キャッシュ処理装置３００、３２０、３４０は関連するメインテナンス回路３０５、３２５、３４５を有しており、これらは１つ以上のローカル・キャッシュ構造３１０、３３０、３５０と結合されている。アクセス動作拡張ビット３０７が処理装置３００との関連で示されており、この例では、そのアクセス動作拡張ビットが設定されることを想定している。種々の信号ラインに沿って示されている丸で囲んだ数字は、メインテナンス回路３０５が受け取ると起きるローカル・アクセス動作の順番を示している。従って、図に示されているように、ローカル・アクセス動作がメインテナンス回路３０５によって一度受け取られると、それはアクセス動作拡張ビット３０７を参照するが、この例では、それは設定されている。従って、メインテナンス回路３０５はその関連するローカル・キャッシュ構造３１０に対してローカル・アクセス動作を行うと同時に、コヒーレント相互接続３６０内の調整回路３７０に対しても共有アクセス信号を送る。この例では、その調整回路は共有アクセス信号を受信すると他の処理装置のそれぞれに要求を一斉に送るだけであるから、従って、メインテナンス回路３２５とメインテナンス回路３４５の両方は要求を受け取って、ローカル・アクセス動作を実行する。従って、図４Ａに示すように、メインテナンス回路３２５、３４０の両方はそれらが関連付けられているローカル・キャッシュ構造３３０、３５０に対してそれぞれローカル・アクセス動作を実行する。
【００４６】
ローカル・キャッシュ構造３１０に関するローカル・アクセス動作の実行は調整回路に共有アクセス信号を送るプロセスやその後の他のローカル・アクセス動作とは完全に切り離すことができるが、一実施形態においては、メインテナンス回路３０５は他のローカル・アクセス動作がすべて実行されて、それらのローカル・アクセス動作の結果が調整回路３７０を介してメインテナンス回路３０５に戻されるまで、そのローカル・アクセス動作の実行を遅らせることができる。従って、メインテナンス回路３０５とローカル・キャッシュ構造３１０の間のローカル・アクセス動作信号経路の近くの丸で囲んだ数字６が示すように、そのローカル・アクセス動作はその他の動作が完了した後で実行されてもよい。
【００４７】
図４Ｂは、別の実施形態を示しており、この実施形態では、調整回路３７０が共有アクセス信号を受信したら他のどの処理装置が要求を送るべきかの判断を可能にする履歴データを保持している。図４Ｂに示しているこの特殊な例では、調整回路３７０がローカル・キャッシュ構造に対する割り当てデータの履歴３８０を保持している。従って、調整回路３７０によって共有アクセス信号が受信されると、その調整回路はその共有アクセス信号で識別されたデータ・アドレスを考慮に入れて、その割り当て履歴３８０を参照して、ローカル・キャッシュ構造３３０、３５０のいずれがそのアドレスで以前にキャッシュ化されたデータを有しているかを判断することができる。図示されている例では、調整回路３７０はローカル・キャッシュ構造３３０がそのアドレスで以前にキャッシュ化されたデータを有しており、ローカル・キャッシュ構造３５０の方は有していないと判断する。従って、その要求はメインテナンス回路３２５に送られるだけで、メインテナンス回路３４５には送られない。
【００４８】
調整回路３７０は様々な形態を採り得るが、一実施形態においては、キャッシュ・コヒーレンス・プロトコルによって必要とされるようなスヌープ動作を実行するために用いられるスヌープ制御装置によって形成される。その機能はデータ・キャッシュに関してばかりでなく、命令キャッシュ、ＴＬＢなどに関しても行われるように拡張することができる。
【００４９】
図５は、仮想記憶装置で実行できる動作の特殊なシーケンスを図示するフローチャートである。具体的に、ステップ４００であるコードが発生されると、その間に、そのコードは通常はデータ・キャッシュに書き込まれる。しかしながら、そのコードが実行される前に、最初にメモリの外部に保存され、それから命令キャッシュ内に取り込まれる。従って、ステップ４１０で、ローカル・データ・キャッシュ除去動作が行われて、そしてステップ４２０で、ローカル命令キャッシュ無効化動作が行われる。このローカル・キャッシュ除去動作４１０は有効ではあるがダーティーなデータをデータ・キャッシュ内にもたらし、それらのデータはメモリに追い出されるが、ローカル命令キャッシュ無効化動作は、コード発生ステップ４００で更新された可能性のあるすべての命令を確実に無効化して、新しいコードの実行が開始された際に誤って参照されないようにする。従って、ステップ４３０で、その新しいコードが実行される際、メモリから正しい命令が受け取られ、通常は命令キャッシュに保存される。
【００５０】
本発明の実施形態による上に述べた技術が用いられないとしたら、１つの処理装置から別の処理装置への仮想記憶装置の実行の切り換えが、正しくない動作を引き起こしてしまう可能性があるだろう。具体的には、図５に示す時間帯Ａ（これはコード発生プロセスが開始してから若干後に始まり、ステップ４１０でローカル・データ除去動作が行われる前に終了する）の間に、仮想記憶装置が第１の処理装置から第２の処理装置に切り換えられると、その後、第２の処理装置のデータ・キャッシュに保存されているデータだけが取り除かれることになる。このことは、新しく発生されたコードのいくつかが第１の処理装置のデータ・キャッシュに残ってしまい、そのデータは取り除かれないという事態をもたらす可能性がある。しかしながら、上に述べた技術を用いれば、ステップ４１０で行われるローカル・データ・キャッシュのデータ除去動作が共有データ・キャッシュのデータ除去動作にアップグレードされるので、これらのエントリーが第２の処理装置のデータ・キャッシュ内にあるのか、あるいは第１の処理装置のデータ・キャッシュ内にあるのかには関係なく、必要なエントリーのすべてを取り除いてくれる。
【００５１】
同様に、時間帯Ｂの間に、第２の処理装置から第１の処理装置に仮想記憶装置の実行が切り戻されると、問題が発生する可能性がある。そのような例では、本発明を用いなければ、第１の処理装置のローカル命令キャッシュがステップ４２０で無効化されていないから、従って、ステップ４３０で正しくない命令が実行されてしまう可能性がある。しかしながら、上に述べた技術を用いることにより、ローカル命令キャッシュ無効化動作がステップ４２０で共有命令キャッシュ無効化動作にアップグレードされるので、両方の命令キャッシュの関連するエントリーが確実に無効化される。
【００５２】
図６はページ・テーブル更新プロセスを示すフローチャートである。特に、ステップ４５０で、ページ・テーブル・エントリーを用いてアドレス変換が行われ、その間に、ページ・テーブル・エントリーは通常はＭＭＵのＴＬＢ内に保存される。その後、そのページ・テーブル・エントリーを更新する必要がある。従って、ローカルＴＬＢ無効化動作がステップ４６０で行われて、更新される予定のＴＬＢ内のすべてのキャッシュ・エントリーが無効化される。その後、関連するページ・テーブル・エントリーがステップ４７０で修正される。そして、ステップ４８０でページ・テーブル・エントリーを用いてそのプロセスが再開されてアドレス変換が行われ、その間に、ページ・テーブル・データが再びメモリからＴＬＢに保存される。そのようなプロセスが単一の処理装置で行われるなら、何の問題も起こらない。しかしながら、仮想記憶装置の動作が図６の時間帯Ａのいつかの時点で第１の処理装置から第２の処理装置に切り換えられて、その後に、その仮想記憶装置の動作が時間帯Ｂのいつかの時点で第２の処理装置から第１の処理装置に切り戻されたとしたら、本発明の実施形態の技術が用いられていなければ、問題が発生する。具体的には、時間帯Ａ中に起きる切り換えのせいで、ステップ４６０でのローカルＴＬＢ無効化動作が第１の処理装置のＴＬＢ内の関連するページ・テーブル・エントリーを無効化しない。このことは、実行が後で時間帯Ｂ中に第１の処理装置に戻されると、第１の処理装置のＴＬＢ内にまだ残っている古くなったデータの存在によりヒットが送る可能性があることを意味している。しかしながら、上に述べた本発明の実施形態の技術を用いることによって、この問題は発生しなくなる。何故なら、ステップ４６０で行われるローカルＴＬＢ無効化動作が共有ＴＬＢ無効化動作にアップグレードされて、従って、両方のＴＬＢの関連するエントリーが無効化されるからである。
【００５３】
本発明の実施形態による技術をキャッシュ・メインテナンス動作の取り扱いとの関連で上に述べたが、それらの技術は以下に図７と８を参照して述べるように、メモリ・バリア動作を確実に正しく行わせるためにも用いることができる。当業者なら分かるが、プログラムが書き込み動作などの前に行ったメモリ動作の結果をシステム内のいくつかの他のエージェント(agent)にはっきりと確実に見えるようにすることを望んだり、あるいは、何らかのメモリ動作がその後で行われる前に前のメモリ動作が確実に完了しているようにすることを望むのであれば、メモリ・バリア動作を実行することができる。従って、図７のステップ５００に示すように、メモリ・バリア動作を実行すべきかどうかについての判断が行われ、メモリ・バリア動作を実行すると判断された時にはいつでも、ステップ５１０でアクセス動作拡張ビットが設定されているかどうかの判定がなされる。メモリ・バリア動作を実行しない場合、ステップ５３０で、仮想記憶装置が現在実行されている処理装置上でメモリ・バリア動作が単にローカルに実行されるだけである。しかし、アクセス動作拡張ビットが設定されていれば、ステップ５２０でメモリ・バリア信号５２０がコヒーレント相互接続に送られ、そして、ステップ５３０でメモリ・バリア動作がローカルに行われる。そして、コヒーレント相互接続が適切な要求を他の処理装置に送らせて、それらの処理装置にもメモリ・バリア動作をローカルに実行させる。そのような方式の利点は、図８に示すイベントのシーケンス例を想定した場合にはっきり理解することができる。
【００５４】
具体的には、ステップ５５０で、書き込み動作が行われて、その書き込みデータがバッファされる。具体的に、多くのシステムで、書き込み動作はその書き込み動作が書き込みバッファに置かれた時点で改良したと想定され、実際には、書き込みバッファがドレインされて、その書き込みデータは実際にメモリに入れられるのは多くのサイクルの後であることがある。
【００５５】
従って、書き込みデータを後の何らかの動作に見えるようにすることが重要である場合には、通常は、図８のステップ５６０で示されているように、書き込み動作に続いてメモリ・バリア動作が行われる。その後、前の書き込み動作の書き込み動作が見えることを期待する動作がステップ５７０で行われると、ステップ５６０で行われるメモリ・バリア動作がその書き込みデータを確実に実際に見えるようにする。しかしながら、仮想記憶装置の実行が図８に示す時間Ａで１つの処理装置から別の処理装置に切り換えられると、本発明の実施形態の技術が採用されなければ、メモリ・バリア動作５６０はその目的を達成できないことが明らかである。何故ならば、その動作は仮想記憶装置が現在作動している処理装置にローカルに実施されるが、書き込みデータは実際には別の処理装置の書き込みバッファに保持されているからである。しかしながら、本発明の実施形態の技術を使用すれば、ステップ５６０で行われるメモリ・バリア動作が共有メモリ・バリア動作にアップグレードされて、そのメモリ・バリア動作を両方の装置で行われるようにし、従って、その書き込みデータをメモリに排出させ、そして後の動作がステップ５７０で行われると見えるようにするからである。
【００５６】
具体的な実施形態を上に述べたが、本発明はこれらの実施形態に限定されるものではなく、本発明の範囲内で多くの修正や付け加えが可能であると理解されるべきである。例えば、以下の従属請求項の特徴の様々な組み合わせを、本発明の範囲を逸脱せずに行うことも可能である。
【符号の説明】
【００５７】
１０  第１の処理回路、プロセッサ、処理装置
２０  コア、プロセッサ・コア
２２  メインテナンス回路
２４  キャッシュ、データ・キャッシュ
２６  メモリ管理装置（ＭＭＵ）
３０  設定状況レジスタ
４０  プロセッサ、処理装置
５０  コア
５２  メインテナンス回路
５４  キャッシュ、データ・キャッシュ
６０  設定状況レジスタ
７０  コヒーレント相互接続
７５  共有メモリ、メモリ
８０  ハイパーバイザ・ソフトウエア、ハイパーバイザ
９０  仮想記憶装置
９２  オペレーティング・システム
９４  アプリケーション・プログラム
９６  アプリケーション・プログラム
１００  仮想記憶装置
１０２  オペレーティング・システム
１０４、１０６  アプリケーション・プログラム
３００  処理装置、キャッシュ処理装置
３０５  メインテナンス回路
３０７  アクセス動作拡張ビット
３１０  ローカル・キャッシュ構造
３２５  メインテナンス回路
３３０  ローカル・キャッシュ構造
３４５  メインテナンス回路
３５０  ローカル・キャッシュ構造
３６０  コヒーレント相互接続
３７０  調整回路
３８０  割り当て履歴
【図１】
0005543022.tif 000002
【図２】
0005543022.tif 000003
【図３】
0005543022.tif 000004
【図４Ａ】
0005543022.tif 000005
【図４Ｂ】
0005543022.tif 000006
【図５】
0005543022.tif 000007
【図６】
0005543022.tif 000008
【図７】
0005543022.tif 000009
【図８】
0005543022.tif 000010