JPH1091597A - マルチプロセッサ装置におけるトークンにもとづく命令の直列化 - Google Patents

マルチプロセッサ装置におけるトークンにもとづく命令の直列化

Info

Publication number
JPH1091597A
JPH1091597A JP9197035A JP19703597A JPH1091597A JP H1091597 A JPH1091597 A JP H1091597A JP 9197035 A JP9197035 A JP 9197035A JP 19703597 A JP19703597 A JP 19703597A JP H1091597 A JPH1091597 A JP H1091597A
Authority
JP
Japan
Prior art keywords
processor
token
task
address
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9197035A
Other languages
English (en)
Inventor
Gaerutonaa Ute
ウテ・ガエルトナー
Yorugu Getsutsurafu Klaus
クラウス・ヨルグ・ゲッツラフ
Puetsufuaa Irvine
アーヴィン・プェッファー
Tasuto Hans-Werner
ハンス−ヴェルナー・タスト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH1091597A publication Critical patent/JPH1091597A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

(57)【要約】 【課題】 マルチプロセッサ装置で直列処理される命令
を、トークンを使用して直列化するプロセスを提供す
る。 【解決手段】 トークンは要求に応じてプロセッサの1
つに割当てることができ、その後、プロセッサはコマン
ドを実行する権利を有する。コマンドが、分散したタス
クで構成される場合、コマンドに属する最後の依存タス
クも実行されるまでトークンはブロックされたままであ
る。そのときにのみトークンを他の命令に割当てること
ができる。また、このトークンを管理する装置は3つの
状態を特徴とする。第1の状態ではトークンを利用で
き、第2の状態ではトークンがプロセッサの1つに割当
てられ、第3の状態では、依存タスクがまだ実行されて
いるのでトークンはブロックされる。ここで述べている
トークンの原理を同様に実現できる回路についても説明
してある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
装置の命令を、トークンを使用して直列化するプロセス
と、トークンを管理する装置に関し、特に、全てのプロ
セッサに共通のリソースを変更するIPTE(ページ・
テーブル・エントリ無効化)、SSKE(記憶キー拡張
セット)等のコマンドに関する。
【0002】
【従来の技術】マルチプロセッサ装置では、各々のプロ
セッサが、オペレーティング・システムによって各々の
プロセッサに割当てられた命令の流れを処理する。たと
えば、第1のプロセッサは、メモリ内の指定されたペー
ジに保存されたプログラムを処理し、第2のプロセッサ
は、他のページに保存されたオペレーティング・システ
ムのプログラムを実行する。実行側プロセッサへの個々
のプログラムの割当ては、この例では、オペレーティン
グ・システムの特別なルーチンによって行われる。プロ
セッサが、プロセッサに割当てられているプログラムの
処理を終えると、オペレーティング・システムは、再び
使用できるようになったプロセッサに割当てる新しいプ
ログラムを明示する。
【0003】2つのプロセッサが、それぞれプログラム
を実行中に同じメモリ・アドレスにアクセスすると、衝
突が生じる。最初、実際にはプロセッサのそれぞれの専
用レベル1(L1)キャッシュだけが変更される。ただ
しその後、データの保全性を保証するために、L1キャ
ッシュに保存された2つの権限レベルのどちらが有効か
判断できなければならない。
【0004】マルチプロセッサ装置のプロセッサの1つ
が、全てのプロセッサに共通のリソースを変更するとき
には、データの保全性に関して、より重要な問題が生じ
る。
【0005】その場合、リソースの変更によって、他の
プロセッサで今実行されている命令に関してリソースの
ステータスが未定義のままにならないようにしなければ
ならない。そうでなければデータの保全性に対する違反
が生じる。
【0006】全てのプロセッサに共通のリソースを変更
するコマンドを実行するときには、他の全てのプロセッ
サが、実行されている変更を記憶しなければならないこ
とがある。たとえば、共同リソースのローカル・コピー
を更新しなければならないため等である。従って、共同
リソースを変更するコマンドにより、他の全てのプロセ
ッサで実行する必要のある一連のドーター・プロセス
(daughter process)が起動することがあり得る。
【0007】これらの全てのプロセスの実行で重要なこ
とは、データの保全性を維持することに関連した正しい
スケジューリングである。
【0008】この種の命令の例は、仮想アドレシングに
よりメモリをアドレスするマルチプロセッサ装置の分野
に見られる。普通、仮想アドレスから実アドレスへの変
換は、メモリに保存され、互いに関係のあるいくつかの
テーブルを使用して行われる。図1にこれらのテーブル
の構造を示す。変換に必要な第1のテーブル、セグメン
ト・テーブルの初期アドレスは、CPUの制御レジスタ
に保存される。このようにして指定されたセグメント・
テーブルを起点として、変換を進めるのに必要なページ
・テーブルの初期アドレスを含む、セグメント・テーブ
ル内のエントリに達するために、セグメント索引(仮想
アドレスのビット1乃至11によって形成される)を使
用することができる。
【0009】図2はセグメント・テーブルのエントリを
示す。各エントリは、参照が行われたページ・テーブル
の初期アドレス(ページ・テーブル起点)だけでなく、
その長さも示す。アドレス変換のためにページ・テーブ
ルの使用が予想されなくなると、ページ・テーブルは有
効でなくなったと認識されなければならない。これは、
ページ・テーブルの無効ビットをセットすることによっ
て行われる。ページ・テーブル無効ビットがセットされ
ていない、従って0に等しいページ・テーブルのみアド
レス変換に使用することができる。
【0010】次に、アドレス変換の次の段階で、途中で
見つかっているページ・テーブルを利用して、必要なペ
ージ・フレームの初期アドレスが決定される。図1はこ
の方法を示している。ページ・テーブルの関連エントリ
に達する上での索引の目的は、仮想アドレスの中間領
域、ページ索引(仮想アドレスのビット12乃至19)
によって達成される。このようにして見つかったページ
・テーブル・エントリは、所要ページが保存されたペー
ジ・フレームの初期アドレスを参照する。この例のペー
ジ・フレームは、ページを収容できるメモリ内アドレス
領域である。
【0011】図3はページ・テーブル・エントリを示
す。これはページ・フレームの初期アドレスを含む。ま
たページ無効ビットがあり、指定されたページのデータ
が有効かどうかを示す。ページ・テーブル・エントリ
は、このページ無効ビットがセットされていない、従っ
て0に等しい場合はアドレス変換にのみ使用できる。
【0012】アクセスされる実アドレスを決定するため
に、図1に示すように、仮想アドレスのバイト索引(ビ
ット20乃至31)を、ページ・フレームの初期アドレ
スに追加する必要がある。そのために、バイト索引はペ
ージ・フレームのランプ・アドレスに付加される。この
ようにして得られるアドレスは実アドレスである。この
実アドレスをもとに絶対アドレスを得るには、いわゆる
プレフィクスを実アドレスに追加しなければならないこ
とがある。メモリは、このようにして得られた絶対アド
レスにより、直接アクセスすることができる。
【0013】ここまでに述べた仮想アドレスから実アド
レスへの多段階変換は非常に時間がかかる。テーブルの
階層全体を検索しなければならないためである。1つの
アドレスの変換に約50のプロセッサ・サイクルが必要
である。
【0014】この理由のために、セグメント・テーブル
とページ・テーブルによって詳細な変換を回避する形
で、ページ・フレームの実初期アドレスを高速に検索で
きるよう、アドレス変換キャッシュ(または変換索引バ
ッファ:TLB)が用いられている。そのため、ページ
に関係するアドレス変換キャッシュ・エントリで、仮想
アドレスの上位部(すなわちセグメント索引とページ索
引)が、ページ・フレームの実初期アドレスとの関係か
らセットされる。このエントリは、ページが最初にアド
レスされた場合に作成され、その後、ページがアドレス
される全ての場合に用いられる。アドレス変換キャッシ
ュのルックアップにはわずか数プロセッサ・サイクルし
か要しないので、メモリに保存されるセグメント・テー
ブルとページ・テーブルによる明示的変換に比べて、速
度の点で大きな利点がある。
【0015】各プロセッサに、割当てられた専用のアド
レス変換キャッシュがある。キャッシュは、シーケンス
に従ってプロセッサによって実行されたアドレス変換結
果を保存する。仮想アドレスを、割当てられた実アドレ
スに変換する場合、プロセッサは最初、そのアドレス変
換キャッシュのこのページに関するエントリを保存して
いるかどうかチェックする。そうでない場合にのみ、プ
ロセッサは、メモリ内のテーブルを利用して仮想アドレ
スを変換する。
【0016】仮想アドレス処理によって開かれたアドレ
ス領域は、使用可能なメモリのサイズよりも何倍も大き
い。そのため、ある指定された時点では、実質的にアド
レス可能なページの一部しかメモリ内に存在しない。他
のページは外部記憶媒体にある。
【0017】プロセッサが、メモリに存在しないページ
にアクセスした場合、別のページをメモリから外部記憶
媒体に転送する必要がある。プロセッサがアクセスしよ
うとする新しいページは、メモリにそのように作成した
空き位置に保存することができる。ページの動的な保存
と転送のこのプロセスは"スワッピング"と呼ばれる。
【0018】ページがメモリから外部記憶媒体に転送さ
れるとき、このページに関係するページ・テーブルのエ
ントリも無効にしなければならない。このエントリは実
際に、メモリのページの実初期アドレスを参照していた
からである。これは、関連ページ・テーブル・エントリ
のページ無効ビットをセットすることによって行われ
る。図3はページ・テーブル・エントリの構造を示す。
ページ無効ビットはこの例ではビット21である。ペー
ジ無効ビットがセットされているページ・テーブル・エ
ントリは、アドレス変換には使われなくなることがあ
る。
【0019】ページを外部記憶媒体に転送し、関連ペー
ジ・テーブル・エントリを無効にすることで、メモリ
に、他のページを保存できる空き位置が作成される。
【0020】プロセッサが、まだメモリに存在しないペ
ージをアドレスするとき、当のページは外部記憶媒体か
らメモリに入力しなければならない(デマンド・ページ
ング)。この新しいページはそこで、古いページを無効
にして別の記憶域に転送することによって作成されてい
る空き位置を占める。この新しいページについて、新し
いページ・テーブル・エントリが作成される。全く異な
る仮想アドレス領域が、この新しいページ・テーブル・
エントリによって、古いページに占められていたメモリ
の絶対アドレスの同じ領域にマップされる。
【0021】ここまで、ページがメモリの記憶域に入力
されるとき、またはそこから外部記憶域に転送されると
きに、ページ・テーブルのエントリに変更が必要なこと
について述べてきたが、エントリは、途中で外部記憶域
に転送されているページを参照する個々のプロセッサに
割当てられたアドレス変換キャッシュにも存在する。ペ
ージ・テーブルのエントリと共に、TLBのこれらのエ
ントリも、アドレス変換キャッシュに割当てられたプロ
セッサがこれらのエントリを使用できないように、従っ
て、メモリからすでに転送されており、メモリ内の位置
が他のページによって占められているページをアドレス
しようとしてもできないように、"無効"と宣言しなけれ
ばならない。転送されたページを参照するTLBエント
リが、TLBに存在し続けるものなら、割当てられたプ
ロセッサは、目的のページとは全く異なるページをアド
レスする。
【0022】ここで、メモリから転送されるページを無
効にする目的からは、ページ・テーブルの対応エントリ
を無効にする必要がある一方で、個々のプロセッサに割
当てられた全てのアドレス変換キャッシュのページに関
係した全てのエントリも無効にする必要がある。
【0023】その結果は、ページ・テーブルの1つのエ
ントリを無効にするためには、一方で、ページ・テーブ
ル・エントリ自体(及び開始側プロセッサに割当てられ
たTLBで転送されるページに関係するエントリ)を、
無効化を開始するプロセッサによって無効にする必要が
あり、他方、他の全てのプロセッサに割当てられたアド
レス変換キャッシュで転送されるページに関係するエン
トリを無効にするためには、これらのプロセッサで依存
するタスクを起動する必要もある。
【0024】その場合、変更される共通のリソースは、
メモリの関連ページ・テーブルであり、これはもちろん
全てのプロセッサによってアクセスされる。アドレス変
換キャッシュの対応エントリは、共通リソースのローカ
ル・コピーを表す。共通リソースを変更する場合は、ロ
ーカル・コピーも更新しなければならない。
【0025】重要なことは、開始側プロセッサで初期タ
スクを実行し、開始側プロセッサに依存するタスクの、
他のプロセッサ(レスポンダ)での実行時に、アドレス
変換に関してデータの保全性を保護することである。ど
のプロセッサでも、そこで実行される命令は、どの1つ
のプロセッサでも、その実行時に必要とするアドレス変
換を一貫して行えなければならない。また更に、これ
は、アドレス変換がメモリのテーブル階層を使用した長
いパスを経由して行われるか、アドレス変換キャッシュ
を使用した短いパスを経由して行われるかどうかとは無
関係でなければならない。
【0026】ここで、初期タスク(開始側プロセッサで
実行される)と、それに依存するタスク(他のプロセッ
サで実行される)は、適切な形で、それぞれのプロセッ
サで実行される他の命令と直列化しなければならない。
【0027】マルチプロセッサ装置にはコンピュータ・
コマンドの列全体があり、これは、これまで示してきた
方式に従って発生し、全てのプロセッサに共通のリソー
スは、従って初期タスクによって変更されると同時に、
初期タスクに依存するタスクによって更新される共通リ
ソースのローカル・コピーが利用できる。ここで述べた
ページ・テーブル・エントリの無効化(IPTE)は、
この種のコマンドの1つの例である。
【0028】この種のコンピュータ・コマンドの他の例
は、全てのページに割当てられ、このページへのアクセ
ス権を決定するキー情報の変更に関係する。キー情報
は、所要記憶域に保存される一方、アドレス変換キャッ
シュのエントリにも保存される。ページに割当てられた
キー情報を変更するには、中央のリソース、所要記憶域
を変更する必要がある一方、個々のプロセッサのアドレ
ス変換キャッシュ内のキー情報のローカル・コピーを更
新する必要もある。
【0029】ここでも、共通リソースを変更するために
初期タスクが、またローカル・コピーを更新するための
この初期タスクに依存するタスクが実行される。
【0030】これらのコマンドの場合でも、データの保
全性の保護が保証されなければならない。命令実行中
に、この命令によってアドレスされるページのキーの変
更は防ぐ必要がある。そのためには、初期タスクと、依
存タスクの適切なスケジューリングが必要である。
【0031】この問題の解決方法は、図3に示してい
る、いわゆる"静止"方式で表される。この方式の場
合、"IPTE"コマンド(ページ・テーブル・エントリ
無効化)を実行しようとするプロセッサは、"静止要求"
を他の全てのプロセッサに送る。これらのプロセッサは
ただ、"静止要求"の前に開始された命令を実行している
(301)。これらの命令の1つが完全に実行されると
(302)、関連するプロセッサは、最後のプロセッサ
も、まだ保留中であるその命令の実行を完了する(30
3)まで待機時間を挿入する(304)。この時点から
以降、全てのプロセッサが"静止モード"になる(30
5)。PU0はここで、対応するページ・テーブル・エ
ントリ及び、外部記憶域に転送されるページに関係した
それ自身のTLBのエントリを無効化できる。他のプロ
セッサは、これらに割当てられたTLBのこのページに
関係するエントリを削除するよう促される。
【0032】IPTEコマンドが完全に終了した後、開
始側PUは他の全てのプロセッサに"静止リセット"を送
る(308)。次に後者のプロセッサは、命令フローの
次の命令の処理に進む(309)。PU0も、"静止リ
セット"を送った後、後の命令の処理に進む。
【0033】この方式の欠点は、依存タスクを実行して
いるプロセッサ側で待機時間が長く、その間、これらの
プロセッサは次の命令を実行できないことである。各プ
ロセッサで、待機時間は、各例につき、開始側プロセッ
サがその"静止要求"を送ったとき実行されたばかりのそ
の命令の完了時(302)に始まり、最後のプロセッサ
も、"静止要求"の時点で保留されていたコマンドの実行
を終えた時点に終了する(303)。開始側プロセッサ
がページ・テーブル・エントリを無効にしている間、他
のプロセッサ側はまた待機時間に入り(307)、この
状態は依存タスクを実行する要求が届くまで続く。レス
ポンダPU側に生じるこれら待機時間は無視できるもの
ではなく、達成可能なパフォーマンスを損う。
【0034】レスポンダPUに生じるこれらの待機時間
を避ける方法は、Padegsらによる米国特許番号3947
823号に述べられている。ここで提起している解決方
法の目的は、任意のプロセッサで保留されている命令の
それぞれに用いられるメモリ・アドレス(及びその内
容)を、それら命令に対して命令の完了まで維持するこ
とである。これは、命令によってアクセスされるメモリ
・アドレスと内容に対して特別なバッファ・メモリを取
り入れることにより行われる。その結果、命令は実メモ
リ・ページ、アドレス、及び内容に依存しなくなる。こ
れらへのアクセスは、命令の実行中には行われなくなる
からである。従って、ページ・テーブルのエントリとア
ドレス変換キャッシュの無効化、及び外部I/O装置へ
のページの転送は、まだ実行されている命令を考慮せず
に、これらの命令が、外部記憶域に転送されるページの
アドレスにアクセスする場合でも、実行することができ
る。この方法の場合、結果的に、データの保全性に関し
て、正しいスケジューリングに注意する必要はない。そ
のため、依存タスクの実行に関係する待機時間は、この
方法を利用することにより回避することができる。
【0035】ただし、この方法の欠点は、ちょうど実行
されている命令に必要な全てのアドレス及びアドレス内
容を一時的に保存するために、高価なハードウェアを追
加しなければならないことにある。
【0036】IBM Technical Disclosure Bulletin、Vo
l.33、No.6B、November、1990、P428-433に発表され
た"Low-Synchronization Translation Lookaside Buffe
r Consistency Algorithm(低同期化TLB一貫性アル
ゴリズム)"で、B.S.Rosenburgは、ページ・テーブル
・エントリを無効にするプロセスを示している。ここで
はレスポンダ・プロセッサの待機時間が回避される。そ
のために、開始側プロセッサはまず、対応するページ・
テーブル・エントリを無効化し、変更されたページ・テ
ーブルを識別する。次にレスポンダ・プロセッサに割込
みが送られ、これに応答して、命令フローの割込み可能
点で、アクティブなページ・テーブルの変更を探す。ペ
ージ・テーブル・エントリが無効化されている場合、レ
スポンダ・プロセッサは、存在する場合には対応するロ
ーカルTLBエントリを無効化する。次にレスポンダ・
プロセッサは、命令フローの次の命令の処理に進む。
【0037】この方法の欠点は、全てのレスポンダPU
が、全てのページ・テーブルを調べてフラグを探し、エ
ントリを無効化しなければならないことである。このよ
うな処理にはかなりの時間がかかる。もう1つの欠点と
して、変更されたページ・テーブルにアクセスする命令
に関係したデータの保全性については何も言及されてい
ない。分散タスクから構成されるコマンドの直列化に関
係した技術的な解決方法では、データの保全性という側
面を無視することはできない。
【0038】
【発明が解決しようとする課題】本発明の目的は、マル
チプロセッサ装置において命令の直列化方法を提供する
ことである。この場合、指定されたコマンドの直列化の
必要性は、これらのコマンドにより、全てのプロセッサ
に共通のリソースが変更されるという事実から来てい
る。
【0039】本発明の他の目的は、開始側プロセッサで
実行される1つの初期タスクと、この初期タスクに依存
し、他のプロセッサで実行されるタスクとで構成される
コマンドを実行するために、適切な直列化の方法を提供
することである。共同リソースのローカル・コピーを更
新しなければならない場合には、依存タスクの実行が必
要になることがある。
【0040】本発明の他の目的は、高いパフォーマンス
を保証するために、さまざまなタスクの実行時に生じる
待機時間を最少にすることである。
【0041】また、分散タスクを構成するコマンドの実
行時にデータの保全性を保証することも重要である。
【0042】本発明の他の目的は、ページ・テーブル・
エントリを無効化するコマンド、IPTE、及びページ
に関係するキー情報を変更するコマンド、SSKEを対
象にした、改良された実行形態を提起することである。
【0043】本発明の他の目的は、ここで提供する直列
化処理を行うためのトークンを管理する装置を開示する
ことである。
【0044】本発明の他の目的は、この装置を、ハード
ウェアにあまりコストをかけずに実現することである。
【0045】
【課題を解決するための手段】本発明に従って、マルチ
プロセッサ装置で直列処理される命令の直列化のための
トークンを管理する装置によってタスクが実行される。
プロセッサは、トークンを保有している場合にのみ、直
列処理される命令を実行することができ、トークンを管
理する装置は次の状態を特徴とする。第1の状態では、
どのプロセッサにもトークンは割当てられず、トークン
は、トークンを要求したプロセッサには割当てることが
できる。第2の状態では、プロセッサの1つにトークン
が割当てられ、トークンを要求したプロセッサには割当
てられない。第3の状態では、どのプロセッサにもトー
クンは割当てられず、トークンを要求したプロセッサに
も割当てられない。
【0046】従って、直列化される命令の直列化は、ト
ークンの割当てによって規定される。この場合、第3の
状態については別に、トークンがブロックされる機構が
追加される。これにより直列化される命令の実行を外部
条件と連結することができる。外部条件により、トーク
ンをブロックし、従って直列化される命令の実行を防ぐ
ことができる。
【0047】n個のプロセッサで構成されるマルチプロ
セッサ装置でトークンを管理する装置は、本発明に従っ
て、プロセッサiがトークンを保有している場合にセッ
トされる1つの信号Aiの、各プロセッサiに対する可
用性、各プロセッサiに対して、まだ完全に実行されて
いないタスク(このタスクは直列処理される命令の1つ
の実行で直列化され、そのためにトークンを要求したプ
ロセッサに前記トークンを割当てることができなくな
る)がプロセッサiで保留されているときにセットされ
る1つの信号Biの可用性、及び、マルチプロセッサ装
置全体に共通な信号Cの可用性、によって実現される。
信号Cは、先に列挙された全てのプロセッサの信号A
1、...An、B1、...BnのORチェインによっ
て生じ、要求側プロセッサにトークンを割当てられない
場合にセットされる。ここでトークンを管理する装置の
第1の状態は、信号A1、...An、B1、...B
nのいずれもセットされないことを特徴とする。トーク
ンを管理する装置の第2の状態は、信号A1、...A
nの1つがセットされることを特徴とする。トークンを
管理する装置の第3の状態は、信号A1、...Anは
いずれもセットされないが、B1、...Bn信号の少
なくとも1つはセットされることを特徴とする。
【0048】この実施形態の利点は、トークンを管理す
る装置の状態が、非常に簡素な形で表されることであ
る。その結果、必要なハードウェアのコストは低く抑え
られる。命令の直列化に必要な基本回路は、信号A
1、...An、B1、...BnのORチェインに限定
される。
【0049】本発明の他の利点として、各プロセッサi
に対して、信号AiとBiのORチェインによって生じる
1つの信号Ciの可用性が考慮されている。また、マル
チプロセッサ全体に共通であり、全てのプロセッサの信
号C1、...CnのORチェインによって生じる信号C
の可用性も考慮されている。
【0050】信号Cは、マルチプロセッサ装置全体に共
通な信号なので、これは、回路設計の観点から、各プロ
セッサに置かれるORゲートにより、各プロセッサiに割
当てられる信号Ai及びBiが最初に連接され、1つの
信号Ciを形成する場合は利点になる。その際、1つの
信号、つまり信号Ci、を各プロセッサから中央のORゲ
ートに供給するだけでよいからである。
【0051】本発明の他の利点として、直列処理される
命令は、開始側プロセッサで実行される第1のタスク
と、レスポンダ・プロセッサで実行される依存タスクと
で構成される。ここでトークンは、開始側プロセッサに
割当てなければならないので、開始側プロセッサは第1
のタスクを実行することができる。トークンは、全ての
依存タスクが完了するまで、トークンを要求するプロセ
ッサには割当てられない。
【0052】本発明により、本発明に従ってトークンが
取り得る第3の状態でどのような利点が得られるか明ら
かになる。命令が、異なるプロセッサで実行される分散
タスクで構成される場合、開始側プロセッサは、命令の
実行を開始するためには、トークンを保有していなけれ
ばならない。しかし、まだ保留されているタスクが実行
過程にある限り、トークンはブロックされたままであ
る。ただし開始側プロセッサは、そのタスクをすでに終
えており、トークンを返している可能性はある。こうし
て依存タスクにより、直列処理される新しいコマンドの
実行を開始することはできなくなる。
【0053】本発明の他の利点として、命令バッファが
マルチプロセッサ装置の各プロセッサに割当てられ、こ
こで最初のプロセッサは、最初のタスクの実行時にコマ
ンドやアドレスをレスポンダ・プロセッサの命令バッフ
ァに書込む。これらのコマンドやアドレスは、レスポン
ダ・プロセッサで実行される依存タスクを指定する。
【0054】このようにして、最初のタスクは、レスポ
ンダ・プロセッサに割込む必要なく、必要な依存タスク
を開始することができる。レスポンダ・プロセッサが、
依存タスクを実行できる点に達したときにのみ、命令バ
ッファに書込まれた情報が考慮される。
【0055】本発明の他の利点として、レスポンダPU
の命令バッファへの書込みは、ブロードキャスト強制操
作によって行われる。
【0056】更に、信号Bi("コマンド保留")を、レ
スポンダ・プロセッサiの命令バッファへのコマンドま
たはアドレスの書込みと一緒にセットすることも利点に
なる。
【0057】これと共に、レスポンダ・プロセッサiの
それぞれの依存タスクの終了時に信号Biをリセットす
ることも利点になる。
【0058】また本発明では、依存タスクは、レスポン
ダ・プロセッサの命令フローの中、割込み可能な点に挿
入され実行される。
【0059】これによりレスポンダ・プロセッサの待機
時間が回避され、パフォーマンスは大幅に向上する。
【0060】リマインダをもとにした解決方法で特に大
きな利点のあるコマンドは、SSKE(記憶キー拡張セ
ット)コマンドである。
【0061】マルチプロセッサ装置はメモリで構成され
るが、メモリをアドレスするためには、仮想アドレスか
ら実アドレスへの変換を、アドレス変換テーブルを利用
して行うことができる。すでに行われたアドレス変換の
結果は、アドレス変換キャッシュに保存される。アドレ
ス変換キャッシュはそれぞれプロセッサの1つに割当て
られる。ページに対する個々のプロセッサのアクセス権
を決定するためのキー情報は、メモリの一部分、つまり
キー記憶域に保存される。直列処理される命令は、キー
情報を変更するための命令(SSKE)である。開始側
プロセッサは、最初のタスクの実行時にキー記憶域にあ
るキー情報を変更する。そして、依存タスクの実行時、
他のプロセッサは、他のプロセッサに割当てられたアド
レス変換キャッシュのキー情報を変更する。
【0062】プロセッサは各々、キー記憶域のキーの変
更によって影響を受ける。SSKEの場合にデータの保
全性の観点からコマンドの直列化が必要である。依存タ
スクの実行時には他のコマンドへのトークンの割当ても
防止しなければならない。
【0063】リマインダをもとにした解決方法が特に都
合がよい1つのコマンドは、ページ・テーブルのエント
リを無効化するコマンド、IPTE(ページ・テーブル
・エントリ無効化)である。その場合、マルチプロセッ
サ装置はメモリで構成されるが、メモリをアドレスする
ために、仮想アドレスから実アドレスへの変換を、アド
レス変換テーブルを利用して行うことができる。すでに
行われたアドレス変換の結果は、アドレス変換キャッシ
ュに保存される。アドレス変換キャッシュはそれぞれプ
ロセッサの1つに割当てられる。直列処理される命令
は、ページ・テーブル・エントリを無効化する命令(I
PTE)である。開始側プロセッサは、最初のタスクの
実行時にページ・テーブル・エントリを無効化する。そ
して、依存タスクの実行時、他のプロセッサは、他のプ
ロセッサに割当てられたアドレス変換キャッシュの対応
するエントリを無効化する。
【0064】直列化は、特に、ページ・テーブル・エン
トリを無効化する場合にデータの保全性の観点から重要
である。プロセッサは全て、アドレス変換のためにメモ
リのテーブルにアクセスするので、当然、ページ・テー
ブル・エントリの無効化は全てのプロセッサに影響を与
える。また、まだ依存タスクの実行時に新しいIPTE
を開始することも不可能である。依存タスクは、IPT
Eの場合には、TLBエントリを無効化する。特にこの
ために、返された後でもトークンをブロック状態にする
ことができるトークン管理装置が有利である。
【0065】本発明の利点として、特に、ページ・テー
ブル・エントリの無効化に関係して、n次関連アドレス
変換キャッシュの導入がある。この場合、n回を超える
アドレス変換を要する命令は、ページ・テーブル・エン
トリを無効化する命令(IPTE)で直列化される。
【0066】IPTEは、次の手段により、n回を超え
るアドレス変換を要するこの種のコマンドで有利に直列
化することができる。トークンは、プロセッサiに割当
てなければならない。これによりプロセッサiは、n回
を超えるアドレス変換を要する命令を実行することがで
きる。
【0067】このような手段によりデータの保全性の保
護を保証できる。nタプル関連アドレス変換キャッシュ
により、n回より少ないまたは等しいアドレス変換を要
するコマンドでIPTEを直列化する必要がない。これ
で時間とコストが節約される。
【0068】マルチプロセッサ装置で直列処理される命
令を直列化するため、本発明に従ったプロセスについて
述べる。直列処理される命令の1つの実行は、開始側プ
ロセッサでの第1のタスクの実行から構成され、開始側
プロセッサは、トークンを保有している場合にのみ第1
のタスクを実行することができ、トークンは、使用可能
な場合、プロセッサの1つにのみ割当てることができ
る。このプロセスは次のステップで構成される。(1)
開始側プロセッサにトークンを要求するステップ、
(2)トークンが使用可能な場合に開始側プロセッサに
トークンを割当てるステップ、(3)直列処理される命
令を実行するステップ、(4)直列処理される命令の最
初のタスクが完了した後にトークンを返すステップ(そ
の結果、トークンは、必ずしも他のプロセッサから使用
できるようにする必要がない)、(5)直列処理される
命令の実行が完了した後にトークンの可用性を確立する
ステップ。
【0069】このプロセスの場合、最初のタスクのパフ
ォーマンスは、トークンを保有した実行側プロセッサに
依存する。このプロセッサはまた、最初のタスクの実行
を完了したときにトークンを返す。
【0070】本発明に従った利点は、それにもかかわら
ず、コマンドに属し、他のプロセッサで実行されるタス
クが、すでに完全に完了したかどうかを考慮できるとい
う点にある。他のプロセッサのタスクを含めて、コマン
ド全体が完了したときにのみ、直列処理される新しいコ
マンドを実行することができる。本発明に従って、その
時点までトークンの可用性が再確立されることはない。
【0071】
【発明の実施の形態】図5及び図6は、開始側プロセッ
サで実行される最初のタスクのシーケンスを示す。例に
示すように、ページ・テーブル・エントリの無効化が考
慮されているが、それでもコマンドを実行する基本シー
ケンスは、最初のタスク、及びこの最初のタスクに依存
するタスクで構成された全てのコマンドで同じである。
IPTE(ページ・テーブル・エントリ無効化)の例を
続けるが、最初のタスクが実行されているとき、ページ
無効ビットをセットすることによって、ページ・テーブ
ルのページに関係するエントリを最初に無効化しなけれ
ばならない。次のステップでは、開始側PUのTLBの
ページに関係するエントリを無効化しなければならな
い。更に、開始側プロセッサは他のプロセッサ、レスポ
ンダPUに、他のプロセッサにも割当てられたTLBの
ページに関係するエントリを無効化するよう要求しなけ
ればならない。
【0072】メモリに保存されたアドレス変換テーブル
にアクセスするコマンドが妥当な直列化レベルに達する
には、無効化を行うプロセッサは、トークンを要求し、
トークンを割当てられなければならない。トークンを保
有したプロセッサだけが、アドレス変換テーブルに対す
る修正アクセスを行うことができる。更に、1度にトー
クンを保有できるのは1次のプロセッサだけである。リ
レー・バトンにたとえることのできるトークンを利用す
ることで、共通リソースに対するプロセッサのアクセス
権が規定される。
【0073】あるページが、あるプロセッサによって無
効化されるとき、プロセッサは、最初のステップ(40
0)で、無効化トークンが使用可能か("トークン使用
可能")どうか確認する。トークンが使用できない場
合、最初のタスクの実行は延期される。トークンが使用
できる場合、次のステップ(401)で開始側プロセッ
サがトークンを要求できる。次に、無効化トークンを要
求側プロセッサに割当てることができた("トークン受
信")かどうかの問い合わせがなされる(402)。そ
うでなければ、途中でトークンの可用性に変化があった
ことになる。そのため、処理はシーケンスの先頭へ返る
(400)。トークンを割当てることができた("トー
クン受信")場合、開始側プロセッサは最初のタスクの
実行を開始することができる。
【0074】初めに、外部記憶域に転送されるページに
関係したページ・テーブル・エントリが無効化される
(403)。次のステップ(404)で、開始側PU
は、依存タスクを実行するコマンドを全てのレスポンダ
PUに送る。これは、いわゆるブロードキャスト強制操
作によって行われる。つまり、このページに関係したT
LBエントリを、無効化対象のページのアドレスと共に
無効化するコマンドが、全てのレスポンダPUに送ら
れ、レスポンダPUのそれぞれの無効化バッファに書込
まれる。従って開始側PUは、全てのレスポンダPU
に、処理すべき内容を通知している。ページに関係した
TLBエントリの無効化がそれぞれいつ行われるかは、
レスポンダPUの問題になる。しかし、レスポンダPU
がそのTLBを変更するのに必要とする情報は全て、無
効化バッファに保存されている。レスポンダPUのステ
ータスはここで"コマンド保留"になる。つまり別の依存
タスクが保留されている。
【0075】ブロードキャスト強制操作が実行される
と、初期タスクの終わりに達し、初期タスクは従って、
ステップ(405)で無効化トークンを返すことができ
る。その結果、開始側PUはトークンを保有しなくなる
が、トークンはそれでも、トークンを要求する他のどの
PUにも割当てることはできない。依存タスクはまだレ
スポンダPU側で保留されているからである。
【0076】ステップ(406)は、レスポンダPUの
無効化バッファに保存されたコマンドがレスポンダPU
によってどのように処理されるかを示す。そのため、依
存タスク(ページ・テーブルの無効化では、対応するT
LBエントリを削除するはずのタスク)は、対応するレ
スポンダPUの命令フローで割込み可能点においてルー
プをなし、実行される。レスポンダPUの"コマンド保
留"ステータスは、依存タスクの実行が完全に終了する
と消失する。まだ保留されている最後の依存タスクがそ
のプロセッサによって完全に実行されたとき、要求側プ
ロセッサに対するトークンの可用性が再確立される(4
07)。トークンは再び"使用可能"になる。つまり、要
求側プロセッサにトークンを割当てることができ、従っ
て、ページ・テーブル・エントリの無効化を行う立場に
置くことができる。ステップ(407)では、開始側P
Uの開始側タスクが完了し、開始側PUはそこで命令フ
ローの次の命令を処理できる(408)。
【0077】ステップ(400)で、開始側プロセッサ
は、無効化トークンが使用可能かどうかチェックする。
使用できない場合、つまり、"トークン使用可能"ステー
タスが存在しない場合、開始側プロセッサ、ここでは、
開始側タスクを実行を妨げられているプロセッサは、ス
テップ(410)で、他のPUからの依存タスクが命令
バッファに保存されているかどうかチェックする。IP
TEの例では、これはTLBエントリを無効化するコマ
ンドである。この種の依存タスクが実行されるのを待っ
ていない場合、プロセッサは最初の問い合わせに返る
(400)。最初の問い合わせでトークンの可用性が再
びチェックされる。しかし、他のPUからの依存タスク
が命令バッファに保存されていると、この依存タスクは
ステップ(411)で実行される。従ってIPTEの場
合、外部記憶域に転送されるページに対応したTLBエ
ントリが無効化される。無効化に必要なデータは命令バ
ッファに保存される。依存タスクが完了すると、"コマ
ンド保留"信号がステップ(412)でリセットされ
る。次に、プロセッサは、無効化トークンが途中で使用
可能になったかどうか再確認するために問い合わせに返
る(400)。
【0078】レスポンダPUの観点から見た対応する方
式を図7に示す。レスポンダPUが、実行されたばかり
の命令の処理を終えると、問い合わせステップ(50
0)が実行される。ここでは、他のPUが、TLBエン
トリを無効化するコマンドを当該レスポンダPUの無効
化バッファにブロードキャスト強制操作によって書込ん
だかどうかチェックされる。書込んでいない場合、レス
ポンダPUは命令フローの次の命令の実行に進む(50
3)。しかし依存タスクが保留されている場合、従って
レスポンダPUは"コマンド保留"ステータスにあり、依
存タスクは、ステップ(501)で命令バッファに保存
されたコマンドに従って実行される。ページ・テーブル
・エントリの無効化の場合、外部記憶域に転送されるペ
ージに関係したTLBエントリが無効化される。その
後、ステップ(502)で、当該レスポンダPUで保留
されている依存タスクはなくなったことを示すために"
コマンド保留"信号がリセットされる。次にステップ
(503)で命令フローの次の命令が処理される。
【0079】図8に、直列化に用いられるトークンが取
り得るさまざまな状態の表現を示す。複数のプロセッサ
(601)を有するコンピュータ装置(600)が示し
てある。
【0080】装置の第1の状態(606)で、トークン
(603)はどのプロセッサにも割当てられていない
が、使用はできる。つまりプロセッサの1つから要求が
あれば、そのプロセッサに割当てることができる。
【0081】その場合には、装置は第2の状態(60
7)にシフトする。ここでトークンはプロセッサの1
つ、この例ではプロセッサ2(604)に割当てられ
る。プロセッサ2はこうして、直列処理される特別な命
令を実行する許可を受ける。これらの命令には、開始側
タスクが全てのプロセッサに共通のリソースを変更し、
他のプロセッサで依存タスクを起動する全ての命令が含
まれる。他のプロセッサは、共通リソースのローカル・
コピーを変更する。PU2の場合、トークンを保有する
ことは、この種の命令の開始側タスクを実行できる権利
を意味する。
【0082】開始側タスクが完全に実行されると、PU
2はトークンを返す。これは図5のステップ(405)
に対応する。しかし、まだ完全に実行されていない依存
タスクがレスポンダPUで保留されている場合は、トー
クンは、返されたときにまだ他のプロセッサから使用で
きない。従ってトークンを管理する装置は第3の状態
(608)にシフトする。トークン(605)がどのP
U(601)にも割当てられていないとき、それでもト
ークンはまだ"トークン使用可能"ステータスにはない。
PU(601)の少なくとも1つはまだその"コマンド
保留"信号をリセットしていないからである。これが生
じるとき、つまり、全てのレスポンダPUがそれらに割
当てられた依存タスクを終了しているとき、トークンは
再び開放され、また第1の状態(606)に達する。こ
れは図5のステップ(407)に対応する。PU(60
1)の1つからの要求によりトークン(603)をその
PUに割当てることができる。
【0083】状態1(606)、状態2(607)、状
態3(608)を順次に実行する代わりに、第2の状態
から第1の状態への切り替え(609)も可能である。
つまりプロセッサの1つに割当てられているトークン
(604)は、返されたとき再び直接使用できるように
なる。このような処理は、1つのタスクでのみ構成され
るコマンドには理にかなっており、従って処理の実行は
依存タスクの処理で構成されない。これらのコマンド
は、ここに示した形で、開始側タスクと依存タスクで構
成される、すでに述べたコマンドで直列化できる。この
手順は、データの保全性を守るためには必要になること
がある。
【0084】図9は、トークンを管理するための基本回
路を示す。ここで、どのプロセッサiについても、プロ
セッサiがトークンを保有している("トークン受信")
かどうかを示す信号Ai(701)を使用できる。ま
た、どのプロセッサiについても、まだ完全に実行され
ていない依存タスクがプロセッサiで実行を保留されて
いる("コマンド保留")かどうかを示す信号Bi(70
2)を使用できる。これらの信号は全て、ORチェイン
(700)によって信号C(703)になるよう処理さ
れる。信号Aiのいずれか1つがセットされる(つま
り、プロセッサiがトークンを保有した状態になる)
か、信号Biの少なくとも1つがセットされる(つま
り、まだ完全に実行されていない依存タスクが保留され
ている)と、信号C(703)もセットされる。この信
号Cの意味は"トークン使用不可"である。このようにト
ークンは、信号Cがセットされていない場合、つまりト
ークンが"使用可能"な場合にのみ、要求側プロセッサに
割当てることができる。
【0085】次に、一方ではラインA1からAn(70
1)、BiからBn(702)、及びC(703)の状
態間で、他方では図8に示した状態間で、接続の確立が
試行される。トークンを管理する装置が第1の状態(6
06)にある場合、これはつまり一方でトークン(60
3)はどのプロセッサにも割当てられていないことを意
味する。そのため、信号A1からAn(701)はどれ
もセットされない。他方、どのプロセッサも"コマンド
保留"ステータスにはならない。トークン(603)は
そのとき使用できないからである。よって、ラインBi
からBn(702)のどれもまたセットされない。従っ
て、信号C(703)もセットされない。トークン(6
03)は従って"トークン使用可能"ステータスにある。
【0086】プロセッサの1つからの要求に応答して、
トークンがこのプロセッサに割当てられた場合は、信号
A1からAn(701)の1つがセットされなければな
らない。これは"トークン受信"ステータスに相当する。
従って、信号ラインBiからBn(702)のステータ
スとは無関係に、信号C、"トークン使用不可"がセット
される。プロセッサに割当てられたトークン(604)
は、他のどのプロセッサにも割当てられなくなる。信号
のこのステータスは装置の第2の状態(607)に対応
する。
【0087】ここで、トークンを保有していたプロセッ
サがトークンを返したが、依存タスクはまだ完全に実行
されていない場合、装置は第3の状態(608)にシフ
トする。この時点までセットされていた対応する信号ラ
インAi("トークン受信")は、トークンが返るとリセ
ットされる。しかしまだ処理されていない依存タスクが
レスポンダPU側で実行を保留されているので、信号B
1からBn("コマンド保留")のうち少なくとも1つは
セットされ、そのため、信号C(703)もセットされ
る。つまりすでに返されたトークン(605)は第3の
状態でまだ"トークン使用不可"ステータスにある。
【0088】全ての依存タスクが完全に処理されたとき
だけ、B1からBnの全てのライン("コマンド保留")
もリセットされる。次に信号Cもリセットされ、装置は
再び第1の状態(606)に戻り、トークン(603)
は再び"使用可能"になる。
【0089】図10は、実現の容易さという点では有利
な図9に示した回路の変更例を示す。この例で、プロセ
ッサiに関係した信号Ai(708、"トークン受信")
とBi(709、"コマンド保留")は、ORゲート(71
0)によって処理され、全てのプロセッサでCi信号
(711)が形成される。前記信号Ciは次に中央のOR
ゲート(712)の入力に印加される。この中央ORゲー
トの出力は信号C(713)で、これは"トークン使用
不可"の意味を有する。図9の大きなORゲート(70
0)をn個の小さいORゲート(710)と1つの中央OR
ゲート(712)に分ける利点は、2つのライン(Ai
とBi)を使用する必要はなくなり、各プロセッサから
中央のORゲート(712)に1つ(Ci)だけでよいこ
とである。他の部分の回路は同じである。
【0090】図11は、信号A1乃至An、B1乃至B
n、及びCの時系列と共に、初期タスク及び依存タスク
の時系列を表す試みである。更に、この時系列を、図8
に示している装置に可能な状態とリンクする試みもなさ
れている。
【0091】まず、トークン(800)は第1の状態
(606)にある、つまりトークンは要求に応じてPU
に割当てることができる("トークン使用可能")。従っ
て、信号A1乃至An、B1乃至Bn、またはCのいず
れもセットされない。プロセッサiは、ページ・テーブ
ル・エントリの無効化を開始しようとした場合、最初に
トークンを要求しなければならない。トークンは使用で
きるので、プロセッサの要求に応じてプロセッサに割当
てることができる。(801)。トークンを受信したP
Uiは信号Ai(804、"トークン受信")をセットす
る。
【0092】PUiはトークンを保有したので、共通リ
ソースを変更する命令の初期タスク(802)を実行す
る権利を有する。トークンはここでPUiに割当てられ
るので、トークン(805)を要求する他のPUからは
使用できなくなる。この点、で、信号C(811、"ト
ークン使用不可")も、PUiがトークンを受け取った
時点からセットされなければならない。初期タスク(8
02)の実行中に、開始側PUiは他のPU、すなわち
レスポンダに要求(803)を送り、初期タスクに属す
る依存タスク(808、809)の実行を求める。レス
ポンダPUで実行される依存タスクのより詳しい仕様に
関するコマンド及びデータも、開始側PUによってレス
ポンダの命令バッファに書込まれる。ブロードキャスト
強制操作によってレスポンダPUの命令バッファにコマ
ンド及びデータが書込まれる瞬間、各レスポンダPU
の"コマンド保留"信号がセットされる。PUiによって
開始されたブロードキャスト強制操作の結果、信号Bi
を除く信号B1乃至Bn(810)が全てセットされ
る。
【0093】開始側タスク(802)が終了すると、開
始側PUはトークンを返す(806)。同時に、プロセ
ッサiによるトークンの保有を示す信号Aiがリセット
される(804)。しかし、この返却が生じるとき、ト
ークンは、トークンを要求する他のPUから使用できる
ようにはならない。依存タスクがまだレスポンダPU側
で保留されているからである(810)。装置はここで
第3の状態(608)、つまりどのPUもトークンを保
有していない状態(807)になる。そのためラインA
1乃至Anはどれもセットされない。信号Cは"トーク
ン使用不可"ステータスのままである(811)。レス
ポンダPUがその命令フローの割込み可能点に達する
と、実行を保留されている各依存タスク(808、80
9)を挿入し実行できる。レスポンダPUの1つ、たと
えばPU1、での依存タスクの実行が終了すると、この
レスポンダに関係する"コマンド保留"信号、この場合は
B1がリセットされる(810)。
【0094】開始側PUによって開始された最後の依存
タスク(809)が完了すると、まだセットされている
最後の"コマンド保留"信号がリセットされる。すでに返
却されているトークンはここで再び使用可能になる。装
置は状態3から状態1(812)に変わり、信号Cのス
テータスは"トークン使用可能"になる(811)。トー
クンはまた、トークンを要求するPUに割当てることが
できる。ここで達した状態は、また初期状態(800)
に対応する。
【0095】信号A1乃至An、B1乃至Bn、及びC
のステータスの時間に関係した変化を考慮すると、信号
C(811)は実際には、図9及び図10に描いたよう
に、信号A1乃至An及びB1乃至BnのORチェイン処
理として表せることが明確になる。
【0096】図12は、トークンを管理するための具体
的な回路を示す。PUiがトークンを要求するとき、信
号ライン(901)は"HIGH"にセットされる。信号ライ
ン(902)が同時に"HIGH"になると、つまりトークン
が使用可能であれば、両方の入力、従ってANDゲート
(900)の出力も"HIGH"になる。ANDゲートの出力は
一時的にラッチ(903)に保存される。信号ラインA
i(904)の"HIGH"信号は、トークンが要求の時点で
使用可能だったので要求側PUiに割当てられたことを
意味する。従って信号Aiは、プロセッサiがトークン
を保有している(この場合は信号がセットされる)かど
うかを示す。
【0097】信号ラインAi(904)及び信号ライン
Bi(905、"コマンド保留")は、ORゲート(90
6)の入力を成す。これは図10のORゲート(710)
に対応する。ここで、このORゲート(906)の出力は
信号Ciであり、これは一時的にラッチ(907)に保
存される。中央ORゲート(911)との接続(909)
は、図10の中央ORゲート(712)に相当するドライ
バ・モジュール(906)を介して確立される。他のプ
ロセッサも全て、それぞれの信号ライン(909)に対
応した接続(910)を介して中央ORゲート(911)
の入力に接続される。中央ORゲート(911)の入力
(909、910)は、ここでは図10の信号C1乃至
Cn(711)に相当する。よって、ORゲート(91
1)の出力は、信号Ai("トークン受信")か、でなけ
れば信号Bi("コマンド保留")がいずれかのPUでセ
ットされているかどうかを示す。
【0098】中央ORゲート(911)の出力(912)
は、図10の信号ラインC(713)に相当する。この
信号ラインCが"HIGH"にセットされた場合、これは、ま
だ完全に実行されていない依存タスクがプロセッサの1
つで保留されている(信号Bi、"コマンド保留"の1つ
がセットされている)ので、プロセッサのいずれか1つ
がトークンを保有している(信号Ai、"トークン受信"
の1つがセットされている)か、そうでなければトーク
ンはまだブロックされていることを意味する。ここで、
信号ラインCの"HIGH"ステータスは、トークンを要求す
るPUにトークンを割当てられないこと、従ってトーク
ンは使用不可("トークン使用不可")であることを意味
する。よってトークンは、信号ラインCが"LOW"にな
ったときだけPUに割当てられる。信号Cは中央ORゲー
ト(901)からプロセッサのそれぞれに位置するレシ
ーバ(913)に供給される(912)。従って各プロ
セッサ上には信号ラインC(914、"トークン使用不
可")が存在し、Cのステータスは各ラッチ(915)
から測定できる。
【0099】信号C(914)は、インバータ(91
6)を介して信号(902)に変換され、信号(90
2)はトークンが使用できる("トークン使用可能")そ
のときに"HIGH"になる。信号(902)は、トークン
が"トークン使用可能"ステータス(902)にあるとき
だけプロセッサiに割当てられるように、ANDゲート
(900)の第2の入力に供給される。
【0100】信号Bi(905、"コマンド保留")は、
依存タスクがプロセッサiで保留されているときにセッ
トされる。依存タスクを指定するコマンドは、それを実
行するために必要なデータと共に、ライン(917)を
介してブロードキャスト強制操作によって無効化バッフ
ァ(918)に書込まれる。ラッチ(920)もライン
(917)を介してセットされる。このラッチの出力、
信号ラインBi(905、"コマンド保留")は次に"HIG
H"になる。この信号(905)は、PUiが依存タスク
を完全に実行したときにリセットされる。これは、リセ
ット入力に存在する"トークン・ロック解除"信号(91
9)によってリセットされたラッチ(920)によって
行われる。その結果、信号Bi(905、"コマンド保
留")も再び"LOW"にリセットされる。
【0101】初期タスクには、ページ・テーブルのエン
トリを無効化する目的があるが、依存タスクは、このペ
ージに関係するレスポンダPUの各TLBエントリを削
除する役割がある。TLBエントリを無効化するコマン
ドが無効化バッファ(918)に書込まれる場合、"T
LBエントリ無効化"信号が同時にセットされる。信号
Bi(905)も"HIGH"なので、TLBエントリが無効
化されるのであればANDゲート(922)の出力もセッ
トされる。TLBエントリの削除は、無効化バッファに
保存されたコマンドに従って行われる。
【0102】図13は、アドレス変換キャッシュの構造
及び機能モードを示す。アドレス変換が正常に行われた
場合、ページの実初期アドレスへの仮想アドレスのセグ
メント索引及びページ索引の割当てが、セグメント・テ
ーブルとページ・テーブルのエントリを使用してメモリ
で確立される。しかし、この変換に必要なプロセッサ・
サイクル数はかなりの値になる。ただし、メモリにある
ページをアドレスするのに必要なアドレス変換が1度行
われていると、仮想アドレスのセグメント索引とページ
索引の、ページの実初期アドレスとの接続をテーブルの
エントリに記録することが可能になる。アドレス変換キ
ャッシュは、この種のテーブルを表し、仮想アドレスの
高次の要素をページの実初期アドレスに割当てるための
ものである。プロセッサがページを初めてアドレスする
場合、アドレス変換は、セグメント・テーブルとページ
・テーブルを使用して行う必要がある。そのため、対応
するエントリがTLBに作成される。これにより仮想ア
ドレスの高次の要素がページの実初期アドレスに割当て
られる。プロセッサは、2回目にこのページにアクセス
しようとすると、最初に、プロセッサに割当てられたT
LBを調べ、このページに関係したエントリを探す。こ
の種のエントリをTLBで見つけた場合、明示的アドレ
ス変換の実行は不要になり、かなりの時間が節約され
る。セグメント・テーブルとページ・テーブルを利用し
た明示的アドレス変換は、プロセッサが、プロセッサに
割当てられたTLBのページに関係したエントリを見つ
けなかったときにのみ行われる。
【0103】TLBはアレイ(1006、1007、1
008、1009)で構成される。ページの実初期アド
レスへの仮想アドレスの高次要素の割当てはTLBのタ
スクである。TLBの列(1006)の128エントリ
の1つをアドレスするのに、仮想アドレスの高次要素の
ビット13乃至19(1001)が用いられる。各エン
トリは、仮想アドレスに関係し、仮想アドレスのビット
1乃至12が保存される要素(1011)及びページの
実初期アドレス(1012)で構成される。
【0104】仮想アドレス(1000)を基準に、仮想
アドレスによって指定されたページに関係したTLBエ
ントリの検索を行う場合、まず、TLBの128のエン
トリの1つが、仮想アドレスのビット13乃至19(1
001)を使用してアドレスされる。このようにして見
つけられたエントリは、仮想アドレスのビット13乃至
19と、検索されている仮想アドレスの対応ビットとの
間に一致があり、最近行われたアドレス変換の1つに関
係する。しかし、エントリが実際に検索されたページを
表すかどうかを確認するには、エントリに保存された仮
想アドレスのビット1乃至12(1011)と、検索さ
れている仮想アドレスのビット1乃至12(1002)
との比較が必要である。この比較は比較器(1015)
で行われる。比較器の出力信号(1016)は、比較さ
れたビットが一致するときセットされる。この場合、エ
ントリに保存されたアドレス・ビット1乃至19(10
12)は、検索されているページの実初期アドレスの高
次要素を表す。比較器の出力(1016)がセットされ
ると、実アドレスの高次要素(1012)は、ANDゲー
ト(1017)を介してアドレス・バス(1022)に
切り替えることができる。
【0105】しかしそれでも、2つの仮想アドレスは、
ビット13乃至19が一致し、ビット1乃至12は異な
る可能性はある。アレイのアドレスはビット13乃至1
9を介して行われるので、後で変換されたアドレスのエ
ントリは、先に変換されたアドレスを上書きし、その場
合には1つの列(1006)しか使用できない。従っ
て、ビット13乃至19が一致し、ビット1乃至12は
異なる仮想アドレスのTLBに、共存するエントリを作
成する可能性を得るためには、最初の列に並列な列を追
加する必要がある。図13は4つの列を示す。ここで
は、"4重関連アドレス変換キャッシュ"という用語を用
いる。最初の列に類似した追加列(1007、100
8、1009)はそれぞれ、仮想アドレスのビット1乃
至12を比較するための比較器(1018)を有する。
仮想アドレスが一致する場合、この比較器の出力信号
(1019)は、ANDゲート(1020)を介して、ペ
ージの実初期アドレス(1014)をアドレス・バス
(1022)に切り替える。図13に示した4重関連T
LBで、ビット13乃至19が一致する仮想アドレスに
関係した4つまでの異なるエントリが、4つの列(10
06、1007、1008、1009)に並んで存在す
ることができる。
【0106】これら4つの仮想アドレスの1つがTLB
を使用して変換されるとき、4つの列に関係する4つの
エントリが、仮想アドレスのビット13乃至19によっ
て最初に選択される。変換される仮想アドレスに実際に
対応する4つのエントリが、仮想アドレスのビット1乃
至12と、エントリ内の対応ビットとの比較器により行
われる比較で確認される。比較器によってビットが一致
することが示された列のエントリが、当該エントリのは
ずである。このエントリに保存された実初期アドレスが
ここでANDゲートを介してアドレス・バス(1022)
に切り替えられる。
【0107】全ての列に共通の共通無効ビットをアドレ
スするのに仮想アドレスのビット13乃至19(100
1)も用いられる。そのため、128のラッチで構成さ
れるアレイ(1010)に工夫がされる。TLBエント
リを無効化するため、このエントリに関係した共通無効
ビット(1021)がセットされる。しかしセットされ
た共通無効ビットは4つの列全てに関係する。
【0108】nタプル関連TLBにより、互いに完全に
独立した最大n回のアドレス変換の結果を同時に保存す
ることができる。従って、途中でアドレス変換がn回ま
でしか必要ない命令が実行されるとき、必要なアドレス
変換は全て命令の始めに行うことができる。これは図1
4に示してある。命令(1100)を実行するために必
要なアドレス変換は全て、命令の始めに実行される(1
101)。これらのアドレス変換を実行するために、命
令は、メモリのアドレス変換テーブル、つまりセグメン
ト・テーブルとページ・テーブルにアクセスできなけれ
ばならない。しかしアドレス変換が完了すればこれは必
要なくなる。実行されている全てのアドレス変換につい
て、対応するエントリが、プロセッサに属するTLBで
作成されているからである。従って、命令(1100)
は、その実行中に指定されたアドレスにアクセスしよう
とした場合、対応するTLBエントリを使用してアクセ
スを実行できる。ある命令に必要なアドレス変換の回数
が、使用可能なTLBの列の個数を超えない場合、必要
なアドレス変換は、実行される命令の始めに行うことが
でき、その後にページ・テーブルにアクセスする必要は
なくなる。これはつまり、この種の命令は、ページ・テ
ーブル・エントリを無効化して直列化する必要がないこ
とを意味する。命令はそのローカルTLBにアクセス
し、後で、ページ・テーブルを使用して変換を行う必要
はないからである。
【0109】ある命令の実行中にn回を超えるアドレス
変換を行う必要があり、使用可能なTLBの列がn個し
かないときは事情は異なる。この例は図15に示してあ
る。命令の始め(1103)には、命令に必要な全ての
アドレス変換を実行することはできない。そのために必
要になるエントリがTLBで使用できないからである。
つまり、再びページ・テーブルにアクセスする後続の変
換(1104)は、命令が実行される次の段階で行う必
要があるからである。ページ・テーブルが、命令の実行
時に、第1と第2のアドレス変換の間に変更されるので
あれば、データの保全性の問題が生じる可能性がある。
そのため、n回を超えるアドレス変換を要するこの種の
命令は、ページ・テーブルを変更するコマンド(たとえ
ばページ・テーブル・エントリ無効化)で直列化しなけ
ればならない。
【0110】本発明に従って、この直列化は、n回を超
えるアドレス変換を要するコマンドが、実行されるため
にトークンを保有しなければならないという形で達成さ
れる。対応するシーケンスが図16に示してある。最
初、トークンは第1の状態(1200)にある。プロセ
ッサiは、n回を超えるアドレス変換を要するコマンド
を実行する必要がある場合、トークンを要求しなければ
ならない。トークンが"使用可能"なら、プロセッサiに
割当てることができる(1201)。従ってプロセッサ
iはコマンド(1202)を完全に実行する許可を得
る。プロセッサiはトークンを保有しているので、信号
Ai(1203、"トークン受信")もセットされる。装
置は"トークン使用不可"ステータス(1204)にある
ので、トークンを要求する他のプロセッサにトークンを
割当てることはできない。PUiで実行されたタスクが
終了すると(1202)、コマンドの実行は中断する。
依存タスクは実行されないからである。トークンが、返
されたとき(1206)にすぐに再使用できるようにな
る(1207)のはそのためである。従って装置は、第
2の状態(607)から第1の状態(606)に直接シ
フトする。これは図8の矢印(609)に対応する。こ
れはまた、図16の信号図からも読取れる。PUiで実
行されたタスクが終了すると(1202)、信号Ai
(1203)もリセットされる。依存タスクは実行され
ないので、信号B1乃至Bnはいずれもセットされな
い。そのため信号C(1204)、"トークン使用不可"
は、タスクの終了時にすぐにリセットされ、トークンは
再使用できるようになる。
【0111】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0112】(1)マルチプロセッサ装置で直列処理さ
れる命令の直列化のためのトークンを管理する装置であ
って、プロセッサは、トークンを保有している場合に
は、直列処理される命令の1つのみを実行することがで
き、前記トークンを管理する装置は、前記トークンがい
ずれのプロセッサにも割当てられず、前記トークンを要
求したプロセッサに前記トークンを割当てることができ
る第1の状態と、前記トークンがプロセッサの1つに割
当てられ、前記トークンを要求したプロセッサには前記
トークンを割当てることができない第2の状態と、前記
トークンがいずれのプロセッサにも割当てられず、前記
トークンを要求したプロセッサに前記トークンを割当て
ることができる第3の状態と、を有する、装置。 (2)前記マルチプロセッサ装置はn個(nは1以上の
整数)のプロセッサで構成され、各プロセッサiについ
て、プロセッサiが前記トークンを保有しているときに
セットされる信号Aiが使用でき、各プロセッサiにつ
いて、信号Biが各プロセッサiに使用でき、前記信号
Biは、まだ完全に実行されていないタスクがプロセッ
サiで保留されているときにセットされ、前記タスク
は、直列処理される命令の1つの実行で直列化されなけ
ればならず、そのために、前記トークンを要求したプロ
セッサに前記トークンを割当てることができず、また、
信号Cが使用でき、前記信号Cは、マルチプロセッサ装
置全体に共通であり、すでに列挙されている全てのプロ
セッサの信号A1、...An、B1、...BnのOR
チェインによって生じ、前記トークンを要求側プロセッ
サに割当てることができないときにセットされ、前記ト
ークンを管理する装置の第1の状態は、信号A
1、...An、B1、...Bnのいずれもセットさ
れず、前記トークンを管理する装置の第2の状態は、信
号A1、...Anの1つがセットされ、前記トークン
を管理する装置の第3の状態は、信号A1、...An
のいずれもセットされず、信号B1、...Bnのうち
少なくとも1つはセットされる、前記(1)記載のトー
クン管理装置。 (3)各プロセッサiについて、信号Ai、BiのORチ
ェインにより生じる1つの信号Ciが使用でき、前記マ
ルチプロセッサ装置全体に共通な信号Cが、全てのプロ
セッサの信号C1、...CnのORチェインにより生じ
る、前記(2)記載のトークン管理装置。 (4)各プロセッサiについて、プロセッサiが前記ト
ークンを要求したときにセットされる1つの信号が使用
でき、前記1つの信号は、出力が信号AiであるANDゲ
ートの入力側に、反転した信号Cと共に存在する、前記
(2)記載のトークン管理装置。 (5)直列処理される前記命令は、開始側プロセッサで
実行される第1のタスクと、レスポンダ・プロセッサで
実行される依存タスクとで構成され、前記トークンは、
前記開始側プロセッサが前記第1のタスクを実行できる
ように前記開始側プロセッサに割当てなければならず、
前記トークンは、全ての依存タスクが完了するまでは前
記トークンを要求するプロセッサに割当てられない、前
記(1)記載のトークン管理装置。 (6)前記マルチプロセッサ装置の全てのプロセッサに
命令バッファが割当てられ、前記第1のタスクの実行時
に、前記レスポンダ・プロセッサで実行される依存タス
クを指定するコマンドやアドレスを、前記開始側プロセ
ッサが前記レスポンダ・プロセッサの前記命令バッファ
に書込む、前記(5)記載のトークン管理装置。 (7)第1のタスクの実行中に、前記開始側プロセッサ
は、前記レスポンダ・プロセッサで実行される依存タス
クを指定するコマンドやアドレスを、前記レスポンダ・
プロセッサの命令バッファに、ブロードキャスト強制操
作により書込む、前記(5)記載のトークン管理装置。 (8)前記第1のタスクの実行時に、前記開始側プロセ
ッサは、前記レスポンダ・プロセッサの命令バッファに
コマンドやアドレスを書込み、レスポンダ・プロセッサ
iの前記命令バッファへの書込みで前記信号Biもセッ
トされる、前記(5)記載のトークン管理装置。 (9)レスポンダ・プロセッサiで保留されている前記
依存タスクが完了したとき、前記信号Biはリセットさ
れる、前記(8)記載のトークン管理装置。 (10)前記依存タスクが、前記レスポンダ・プロセッ
サの命令フローの割込み可能点で挿入され実行される、
前記(5)記載のトークン管理装置。 (11)前記マルチプロセッサ装置はメモリを含み、前
記メモリをアドレスするために、仮想アドレスから実ア
ドレスへの変換がアドレス変換テーブルを利用して実行
でき、すでに実行されているアドレス変換の結果は、ア
ドレス変換キャッシュの1つに保存され、前記アドレス
変換キャッシュはそれぞれ前記プロセッサの1つに割当
てられ、直列処理される命令は、ページ・テーブル・エ
ントリを無効化する命令(IPTE)であり、前記開始
側プロセッサは、前記第1のタスクの実行時に前記ペー
ジ・テーブル・エントリを無効化し、前記依存タスクの
実行時に、他のプロセッサは、前記他のプロセッサに割
当てられたアドレス変換キャッシュ内の対応するエント
リを無効化する、前記(5)記載のトークン管理装置。 (12)前記マルチプロセッサ装置はメモリを含み、前
記メモリをアドレスするために、仮想アドレスから実ア
ドレスへの変換がアドレス変換テーブルを利用して実行
でき、すでに実行されているアドレス変換の結果は、ア
ドレス変換キャッシュに保存され、前記アドレス変換キ
ャッシュはそれぞれ前記プロセッサの1つに割当てら
れ、ページに対する個々のプロセッサのアクセス権を明
示するキー情報が、前記メモリの一部、すなわちキー記
憶域に保存され、直列処理される命令は、前記キー情報
を変更する命令(SSKE)であり、前記開始側プロセ
ッサは、前記第1のタスクの実行時に前記キー記憶域の
前記キー情報を変更し、前記依存タスクの実行時に、前
記他のプロセッサに割当てられたアドレス変換キャッシ
ュの前記キー情報を前記他のプロセッサが変更する、前
記(5)記載のトークン管理装置。 (13)マルチプロセッサ装置で直列処理される命令を
直列化するプロセスであって、直列処理される命令の1
つの実行は、開始側プロセッサでの第1のタスクの実行
で構成され、前記開始側プロセッサは、トークンを保有
している場合にのみ前記第1のタスクを実行でき、前記
トークンは、使用できる場合にはプロセッサの1つにの
み割当てることができ、前記開始側プロセッサによって
前記トークンが要求されるステップと、前記トークンが
使用できる場合は、前記開始側プロセッサに前記トーク
ンが割当てられるステップと、直列処理される命令が実
行されるステップと、直列処理される命令の第1のタス
クが完了した後に前記トークンが返されることにより、
前記トークンは必ずしも他のプロセッサが使用できるよ
うにする必要のないステップと、直列処理される命令が
完了した後に、前記トークンの可用性が確立されるステ
ップと、を含む、プロセス。 (14)直列処理される命令を直列化するプロセスであ
って、各プロセッサiで1つの信号Aiが使用でき、前
記トークンが開始側プロセッサiに割当てられたとき、
信号Ai(トークン受信)がセットされ、前記第1のタ
スクが完了した後に前記トークンが返されてから信号A
iがリセットされる、前記(13)記載のプロセス。 (15)直列処理される命令を直列化するプロセスであ
って、直列処理される命令の実行は、開始側プロセッサ
での第1のタスクの実行と、レスポンダ・プロセッサで
の依存タスクの実行とで構成され、全ての依存タスクが
終了したとき前記トークンの可用性が確立される、前記
(13)記載のプロセス。 (16)直列処理される命令を直列化するプロセスであ
って、各プロセッサiに1つの信号Biを使用でき、前
記信号Biは、依存タスクの実行がプロセッサiで保留
されている場合にセットされ、前記信号Biは、前記依
存タスクの実行が完了したときリセットされる、前記
(15)記載のプロセス。 (17)直列処理される命令を直列化するプロセスであ
って、前記依存タスクは、前記レスポンダ・プロセッサ
の命令フローの割込み可能点で挿入され実行される、前
記(15)記載のプロセス。 (18)直列処理される命令を直列化するプロセスであ
って、前記マルチプロセッサ装置の各プロセッサに命令
バッファが割当てられ、前記第1のタスクの実行時に、
前記レスポンダ・プロセッサで実行される前記依存タス
クを指定するコマンドやアドレスを、前記開始側プロセ
ッサが前記レスポンダ・プロセッサの命令バッファに書
込む、前記(15)記載のプロセス。 (19)直列処理される命令を直列化するプロセスであ
って、前記第1のタスクの実行時に、前記レスポンダ・
プロセッサで実行される前記依存タスクを指定するコマ
ンドやアドレスを、前記開始側プロセッサがブロードキ
ャスト強制操作によって前記レスポンダ・プロセッサの
命令バッファに書込む、前記(15)記載のプロセス。 (20)直列処理される命令を直列化するプロセスであ
って、前記信号Biは、前記レスポンダ・プロセッサi
の命令バッファへの書込みによってもセットされる、前
記(18)記載のプロセス。 (21)直列処理される命令を直列化するプロセスであ
って、前記マルチプロセッサ装置はメモリを含み、前記
メモリをアドレスするために、仮想アドレスから実アド
レスへの変換が、アドレス変換テーブルを利用して実行
でき、すでに実行されているアドレス変換の結果は、ア
ドレス変換キャッシュに保存され、前記アドレス変換キ
ャッシュはそれぞれ前記プロセッサの1つに割当てら
れ、直列処理される命令は、ページ・テーブル・エント
リを無効化する命令(IPTE)であり、前記開始側プ
ロセッサは、前記第1のタスクの実行時に前記ページ・
テーブル・エントリを無効化し、前記依存タスクの実行
時に、他のプロセッサは、前記他のプロセッサに割当て
られたアドレス変換キャッシュ内の対応するエントリを
無効化する、前記(15)記載のプロセス。 (22)直列処理される命令を直列化するプロセスであ
って、前記マルチプロセッサ装置はメモリを含み、前記
メモリをアドレスするために、仮想アドレスから実アド
レスへの変換がアドレス変換テーブルを利用して実行で
き、すでに実行されているアドレス変換の結果は、アド
レス変換キャッシュに保存され、前記アドレス変換キャ
ッシュはそれぞれ前記プロセッサの1つに割当てられ、
ページに対する個々のプロセッサのアクセス権を明示す
るキー情報が、前記メモリの一部、すなわちキー記憶域
に保存され、直列処理される命令は、前記キー情報を変
更する命令(SSKE)であり、前記開始側プロセッサ
は、前記第1のタスクの実行時に前記キー記憶域の前記
キー情報を変更し、前記依存タスクの実行時には、前記
他のプロセッサに割当てられたアドレス変換キャッシュ
の前記キー情報を前記他のプロセッサが変更する、前記
(15)記載のプロセス。 (23)直列処理される命令を直列化するプロセスであ
って、前記アドレス変換キャッシュはn次関連性であ
り、n回を超えるアドレス変換を要する命令は、ページ
・テーブル・エントリを無効化する命令(IPTE)で
直列化される、前記(21)記載のプロセス。 (24)直列処理される命令を直列化するプロセスであ
って、プロセッサiが、n回を超えるアドレス変換を要
する命令を実行するためには、前記トークンをプロセッ
サiに割当てなければならない、前記(23)記載のプ
ロセス。
【図面の簡単な説明】
【図1】セグメント・テーブル及びページ・テーブルに
よって仮想アドレスを実アドレスに変換する方法を示す
図である。
【図2】セグメント・テーブル・エントリの構造を示す
図である。
【図3】ページ・テーブル・エントリの構造を示す図で
ある。
【図4】最新技術で実現さるように、マルチプロセッサ
装置のページ・テーブル・エントリを無効化するコマン
ドの時系列を示す図である(静止方法)。
【図5】ページ・テーブル・エントリの無効化の例を使
用して、最初のタスクと依存タスクで構成されるコマン
ドの最初のタスクを実行する、本発明に従ったステップ
のフローチャートを示す図である。
【図6】ページ・テーブル・エントリの無効化の例を使
用して、最初のタスクと依存タスクで構成されるコマン
ドの最初のタスクを実行する、本発明に従ったステップ
のフローチャートを示す図である。
【図7】ページ・テーブル・エントリの無効化の例を使
用して、最初のタスクと依存タスクで構成されるコマン
ドの依存タスクを実行する、本発明に従ったステップの
フローチャートを示す図である。
【図8】本発明に従ってトークンが取り得る3つの状態
を示す図である。
【図9】トークンを管理する基本回路の図である。
【図10】トークンを管理するのに必要な基本回路を実
現するもう1つの可能性を示す図である。
【図11】トークンの現在状態に応じた回路の信号のス
テータスを示す図である。
【図12】トークンを管理する具体的な回路の図であ
る。
【図13】4重関連アドレス変換キャッシュの動作方法
を示す図である。
【図14】nタプル関連アドレス変換キャッシュを有す
るプロセッサでn回より少ないアドレス変換を要する命
令の実行時に守るべき制限を示す図である。
【図15】n回より多いアドレス変換を要する命令の実
行時に守るべき制限を示す図である。
【図16】最初の1つのタスクだけで構成された命令の
場合に、トークンの状態に応じた信号のステータスを示
す図である。
【符号の説明】
600 コンピュータ装置 601 プロセッサ 700、710、712、906、911 ORゲート 802 初期タスク 803 要求 808、809 依存タスク 900、922、1017、1020 ANDゲート 903、907、915、920 ラッチ 913 レシーバ 916 インバータ 918 無効化バッファ 1000 仮想アドレス 1006、1007、1008、1009、1010
アレイ 1012、1014 実初期アドレス 1015、1018 比較器 1016、1019 出力信号 1021 共通無効ビット 1022 アドレス・バス 1100 命令
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クラウス・ヨルグ・ゲッツラフ ドイツ、ディ−71101 シェーンアイク、 フライゼンヴェグ 26 (72)発明者 アーヴィン・プェッファー ドイツ、ディ−71088 ホルツゲルリンゲ ン、テックストラッセ 12 (72)発明者 ハンス−ヴェルナー・タスト ドイツ、ディ−71093 バイル・イン・シ ョーエンバッハ、ハルトマンストラッセ 66

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】マルチプロセッサ装置で直列処理される命
    令の直列化のためのトークンを管理する装置であって、 プロセッサは、トークンを保有している場合には、直列
    処理される命令の1つのみを実行することができ、 前記トークンを管理する装置は、 前記トークンがいずれのプロセッサにも割当てられず、
    前記トークンを要求したプロセッサに前記トークンを割
    当てることができる第1の状態と、 前記トークンがプロセッサの1つに割当てられ、前記ト
    ークンを要求したプロセッサには前記トークンを割当て
    ることができない第2の状態と、 前記トークンがいずれのプロセッサにも割当てられず、
    前記トークンを要求したプロセッサに前記トークンを割
    当てることができる第3の状態と、 を有する、装置。
  2. 【請求項2】前記マルチプロセッサ装置はn個(nは1
    以上の整数)のプロセッサで構成され、 各プロセッサiについて、プロセッサiが前記トークン
    を保有しているときにセットされる信号Aiが使用で
    き、 各プロセッサiについて、信号Biが各プロセッサiに
    使用でき、前記信号Biは、まだ完全に実行されていな
    いタスクがプロセッサiで保留されているときにセット
    され、 前記タスクは、直列処理される命令の1つの実行で直列
    化されなければならず、そのために、前記トークンを要
    求したプロセッサに前記トークンを割当てることができ
    ず、 また、信号Cが使用でき、前記信号Cは、マルチプロセ
    ッサ装置全体に共通であり、すでに列挙されている全て
    のプロセッサの信号A1、...An、B1、...B
    nのORチェインによって生じ、前記トークンを要求側プ
    ロセッサに割当てることができないときにセットされ、 前記トークンを管理する装置の第1の状態は、信号A
    1、...An、B1、...Bnのいずれもセットさ
    れず、 前記トークンを管理する装置の第2の状態は、信号A
    1、...Anの1つがセットされ、 前記トークンを管理する装置の第3の状態は、信号A
    1、...Anのいずれもセットされず、信号B
    1、...Bnのうち少なくとも1つはセットされる、 請求項1記載のトークン管理装置。
  3. 【請求項3】各プロセッサiについて、信号Ai、Bi
    のORチェインにより生じる1つの信号Ciが使用でき、 前記マルチプロセッサ装置全体に共通な信号Cが、全て
    のプロセッサの信号C1、...CnのORチェインによ
    り生じる、 請求項2記載のトークン管理装置。
  4. 【請求項4】各プロセッサiについて、プロセッサiが
    前記トークンを要求したときにセットされる1つの信号
    が使用でき、 前記1つの信号は、出力が信号AiであるANDゲートの
    入力側に、反転した信号Cと共に存在する、 請求項2記載のトークン管理装置。
  5. 【請求項5】直列処理される前記命令は、開始側プロセ
    ッサで実行される第1のタスクと、レスポンダ・プロセ
    ッサで実行される依存タスクとで構成され、 前記トークンは、前記開始側プロセッサが前記第1のタ
    スクを実行できるように前記開始側プロセッサに割当て
    なければならず、 前記トークンは、全ての依存タスクが完了するまでは前
    記トークンを要求するプロセッサに割当てられない、 請求項1記載のトークン管理装置。
  6. 【請求項6】前記マルチプロセッサ装置の全てのプロセ
    ッサに命令バッファが割当てられ、 前記第1のタスクの実行時に、前記レスポンダ・プロセ
    ッサで実行される依存タスクを指定するコマンドやアド
    レスを、前記開始側プロセッサが前記レスポンダ・プロ
    セッサの前記命令バッファに書込む、 請求項5記載のトークン管理装置。
  7. 【請求項7】第1のタスクの実行中に、前記開始側プロ
    セッサは、前記レスポンダ・プロセッサで実行される依
    存タスクを指定するコマンドやアドレスを、前記レスポ
    ンダ・プロセッサの命令バッファに、ブロードキャスト
    強制操作により書込む、 請求項5記載のトークン管理装置。
  8. 【請求項8】前記第1のタスクの実行時に、前記開始側
    プロセッサは、前記レスポンダ・プロセッサの命令バッ
    ファにコマンドやアドレスを書込み、 レスポンダ・プロセッサiの前記命令バッファへの書込
    みで前記信号Biもセットされる、 請求項5記載のトークン管理装置。
  9. 【請求項9】レスポンダ・プロセッサiで保留されてい
    る前記依存タスクが完了したとき、前記信号Biはリセ
    ットされる、請求項8記載のトークン管理装置。
  10. 【請求項10】前記依存タスクが、前記レスポンダ・プ
    ロセッサの命令フローの割込み可能点で挿入され実行さ
    れる、請求項5記載のトークン管理装置。
  11. 【請求項11】前記マルチプロセッサ装置はメモリを含
    み、 前記メモリをアドレスするために、仮想アドレスから実
    アドレスへの変換がアドレス変換テーブルを利用して実
    行でき、 すでに実行されているアドレス変換の結果は、アドレス
    変換キャッシュの1つに保存され、前記アドレス変換キ
    ャッシュはそれぞれ前記プロセッサの1つに割当てら
    れ、 直列処理される命令は、ページ・テーブル・エントリを
    無効化する命令(IPTE)であり、 前記開始側プロセッサは、前記第1のタスクの実行時に
    前記ページ・テーブル・エントリを無効化し、 前記依存タスクの実行時に、他のプロセッサは、前記他
    のプロセッサに割当てられたアドレス変換キャッシュ内
    の対応するエントリを無効化する、 請求項5記載のトークン管理装置。
  12. 【請求項12】前記マルチプロセッサ装置はメモリを含
    み、 前記メモリをアドレスするために、仮想アドレスから実
    アドレスへの変換がアドレス変換テーブルを利用して実
    行でき、 すでに実行されているアドレス変換の結果は、アドレス
    変換キャッシュに保存され、前記アドレス変換キャッシ
    ュはそれぞれ前記プロセッサの1つに割当てられ、 ページに対する個々のプロセッサのアクセス権を明示す
    るキー情報が、前記メモリの一部、すなわちキー記憶域
    に保存され、 直列処理される命令は、前記キー情報を変更する命令
    (SSKE)であり、 前記開始側プロセッサは、前記第1のタスクの実行時に
    前記キー記憶域の前記キー情報を変更し、前記依存タス
    クの実行時に、前記他のプロセッサに割当てられたアド
    レス変換キャッシュの前記キー情報を前記他のプロセッ
    サが変更する、 請求項5記載のトークン管理装置。
  13. 【請求項13】マルチプロセッサ装置で直列処理される
    命令を直列化するプロセスであって、 直列処理される命令の1つの実行は、開始側プロセッサ
    での第1のタスクの実行で構成され、 前記開始側プロセッサは、トークンを保有している場合
    にのみ前記第1のタスクを実行でき、 前記トークンは、使用できる場合にはプロセッサの1つ
    にのみ割当てることができ、 前記開始側プロセッサによって前記トークンが要求され
    るステップと、 前記トークンが使用できる場合は、前記開始側プロセッ
    サに前記トークンが割当てられるステップと、 直列処理される命令が実行されるステップと、 直列処理される命令の第1のタスクが完了した後に前記
    トークンが返されることにより、前記トークンは必ずし
    も他のプロセッサが使用できるようにする必要のないス
    テップと、 直列処理される命令が完了した後に、前記トークンの可
    用性が確立されるステップと、 を含む、プロセス。
  14. 【請求項14】直列処理される命令を直列化するプロセ
    スであって、各プロセッサiで1つの信号Aiが使用で
    き、 前記トークンが開始側プロセッサiに割当てられたと
    き、信号Ai(トークン受信)がセットされ、 前記第1のタスクが完了した後に前記トークンが返され
    てから信号Aiがリセットされる、 請求項13記載のプロセス。
  15. 【請求項15】直列処理される命令を直列化するプロセ
    スであって、 直列処理される命令の実行は、開始側プロセッサでの第
    1のタスクの実行と、レスポンダ・プロセッサでの依存
    タスクの実行とで構成され、 全ての依存タスクが終了したとき前記トークンの可用性
    が確立される、 請求項13記載のプロセス。
  16. 【請求項16】直列処理される命令を直列化するプロセ
    スであって、 各プロセッサiに1つの信号Biを使用でき、 前記信号Biは、依存タスクの実行がプロセッサiで保
    留されている場合にセットされ、 前記信号Biは、前記依存タスクの実行が完了したとき
    リセットされる、 請求項15記載のプロセス。
  17. 【請求項17】直列処理される命令を直列化するプロセ
    スであって、 前記依存タスクは、前記レスポンダ・プロセッサの命令
    フローの割込み可能点で挿入され実行される、請求項1
    5記載のプロセス。
  18. 【請求項18】直列処理される命令を直列化するプロセ
    スであって、 前記マルチプロセッサ装置の各プロセッサに命令バッフ
    ァが割当てられ、 前記第1のタスクの実行時に、前記レスポンダ・プロセ
    ッサで実行される前記依存タスクを指定するコマンドや
    アドレスを、前記開始側プロセッサが前記レスポンダ・
    プロセッサの命令バッファに書込む、請求項15記載の
    プロセス。
  19. 【請求項19】直列処理される命令を直列化するプロセ
    スであって、 前記第1のタスクの実行時に、前記レスポンダ・プロセ
    ッサで実行される前記依存タスクを指定するコマンドや
    アドレスを、前記開始側プロセッサがブロードキャスト
    強制操作によって前記レスポンダ・プロセッサの命令バ
    ッファに書込む、請求項15記載のプロセス。
  20. 【請求項20】直列処理される命令を直列化するプロセ
    スであって、 前記信号Biは、前記レスポンダ・プロセッサiの命令
    バッファへの書込みによってもセットされる、請求項1
    8記載のプロセス。
  21. 【請求項21】直列処理される命令を直列化するプロセ
    スであって、 前記マルチプロセッサ装置はメモリを含み、 前記メモリをアドレスするために、仮想アドレスから実
    アドレスへの変換が、アドレス変換テーブルを利用して
    実行でき、 すでに実行されているアドレス変換の結果は、アドレス
    変換キャッシュに保存され、前記アドレス変換キャッシ
    ュはそれぞれ前記プロセッサの1つに割当てられ、 直列処理される命令は、ページ・テーブル・エントリを
    無効化する命令(IPTE)であり、 前記開始側プロセッサは、前記第1のタスクの実行時に
    前記ページ・テーブル・エントリを無効化し、 前記依存タスクの実行時に、他のプロセッサは、前記他
    のプロセッサに割当てられたアドレス変換キャッシュ内
    の対応するエントリを無効化する、 請求項15記載のプロセス。
  22. 【請求項22】直列処理される命令を直列化するプロセ
    スであって、 前記マルチプロセッサ装置はメモリを含み、 前記メモリをアドレスするために、仮想アドレスから実
    アドレスへの変換がアドレス変換テーブルを利用して実
    行でき、 すでに実行されているアドレス変換の結果は、アドレス
    変換キャッシュに保存され、前記アドレス変換キャッシ
    ュはそれぞれ前記プロセッサの1つに割当てられ、 ページに対する個々のプロセッサのアクセス権を明示す
    るキー情報が、前記メモリの一部、すなわちキー記憶域
    に保存され、 直列処理される命令は、前記キー情報を変更する命令
    (SSKE)であり、 前記開始側プロセッサは、前記第1のタスクの実行時に
    前記キー記憶域の前記キー情報を変更し、 前記依存タスクの実行時には、前記他のプロセッサに割
    当てられたアドレス変換キャッシュの前記キー情報を前
    記他のプロセッサが変更する、 請求項15記載のプロセス。
  23. 【請求項23】直列処理される命令を直列化するプロセ
    スであって、 前記アドレス変換キャッシュはn次関連性であり、 n回を超えるアドレス変換を要する命令は、ページ・テ
    ーブル・エントリを無効化する命令(IPTE)で直列
    化される、 請求項21記載のプロセス。
  24. 【請求項24】直列処理される命令を直列化するプロセ
    スであって、 プロセッサiが、n回を超えるアドレス変換を要する命
    令を実行するためには、前記トークンをプロセッサiに
    割当てなければならない、請求項23記載のプロセス。
JP9197035A 1996-08-13 1997-07-23 マルチプロセッサ装置におけるトークンにもとづく命令の直列化 Pending JPH1091597A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19632522 1996-08-13
DE19632522.6 1996-08-13

Publications (1)

Publication Number Publication Date
JPH1091597A true JPH1091597A (ja) 1998-04-10

Family

ID=7802457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9197035A Pending JPH1091597A (ja) 1996-08-13 1997-07-23 マルチプロセッサ装置におけるトークンにもとづく命令の直列化

Country Status (1)

Country Link
JP (1) JPH1091597A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011509470A (ja) * 2008-01-11 2011-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション フェッチ保護を有する動的アドレス変換

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011509470A (ja) * 2008-01-11 2011-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション フェッチ保護を有する動的アドレス変換
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US9021225B2 (en) 2008-01-11 2015-04-28 International Business Machines Corporation Dynamic address translation with fetch protection in an emulated environment
US9378128B2 (en) 2008-01-11 2016-06-28 International Business Machines Corporation Dynamic address translation with fetch protection in an emulated environment
US9934159B2 (en) 2008-01-11 2018-04-03 International Business Machines Corporation Dynamic address translation with fetch protection in an emulated environment
US10423539B2 (en) 2008-01-11 2019-09-24 International Business Machines Corporation Dynamic address translation with access control in an emulator environment
US10977190B2 (en) 2008-01-11 2021-04-13 International Business Machines Corporation Dynamic address translation with access control in an emulator environment

Similar Documents

Publication Publication Date Title
US5761734A (en) Token-based serialisation of instructions in a multiprocessor system
US4086629A (en) Hierarchical data store with look-ahead action
US5586283A (en) Method and apparatus for the reduction of tablewalk latencies in a translation look aside buffer
US4851991A (en) Central processor unit for digital data processing system including write buffer management mechanism
US4912631A (en) Burst mode cache with wrap-around fill
JPH0997214A (ja) 補助プロセッサのためのアドレス変換を含む情報処理システム
US5675763A (en) Cache memory system and method for selectively removing stale aliased entries
JP3045952B2 (ja) フルアソシアティブ・アドレス変換器
US4658356A (en) Control system for updating a change bit
US5479629A (en) Method and apparatus for translation request buffer and requestor table for minimizing the number of accesses to the same address
JPH0695972A (ja) ディジタルコンピュータシステム
US5341485A (en) Multiple virtual address translation per computer cycle
US4648033A (en) Look-aside buffer LRU marker controller
US6915406B2 (en) Address translation apparatus, address translation method, and two-layer address translation apparatus
JPH0519176B2 (ja)
JPH03235144A (ja) キャッシュメモリ制御装置
JPH1091597A (ja) マルチプロセッサ装置におけるトークンにもとづく命令の直列化
JP3381079B2 (ja) キャッシュメモリを用いた排他制御システム
JPH07234819A (ja) キャッシュメモリ
JPH03235143A (ja) キャッシュメモリ制御装置
JPS6153747B2 (ja)
JPH06103477B2 (ja) 並列キャッシュメモリ
JPH01226056A (ja) アドレス変換回路
KR950013116B1 (ko) 타이콤(ticom) 시스템의 록킹 장치와 록킹 제어 방법
JPS6161143B2 (ja)

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040305

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040305