applicationKI9−90−022)に関連するものである。米国特許出願07/697,168号(対応日本出願:特願平4−74370号)の開示はそれを参照することで本件出願の一部分をなすものとする。[0002]【産業上の利用分野】本発明は、一般的には、データ処理システムの仮想記憶装置に関し、およびより詳しくは複数のアドレス発生器を有し、同一ページ変換に対して多数の要求を出すことを排除する効率的な変換装置に関する。Architecture,Addison−Wesley(1987)において記述している。仮想記憶システムにおいて、ページングとは、再配置およびアドレスを物理的な位置に結合するための装置であり、実際に利用可能なメモリ空間よりもはるかに大きいメモリ空間と思われるメモリをユーザのシステムに提供するための装置である。仮想記憶の概念のキーとなる特徴は、実行中のプロセスにおいて参照されるアドレスを主記憶装置において利用可能なアドレスから分離することにある。おいて利用可能なアドレスは実アドレスと呼ばれる。プロセスを実行するときに仮想アドレスを実アドレス中にマッピングしなければならない。そのことがダイナミックアドレス変換(DAT)機構の機能となる。(DLAT)を採用する。このテーブルは、ときには変換ルックアサイドバッファ(TLB)とも呼ばれ、最新の仮想アドレス変換を記憶する。DLATに格納された仮想アドレスに対して、変換プロセスは1マシンサイクル、あるいはせいぜい2マシンサイクルを要するのみである。DLATに格納されていないアドレスに対しては、DATプロセスは15から60サイクルもしくはそれ以上のサイクルを要するかも知れない。PLAT内に格納されていないアドレスの変換を実行する変換装置はバッファコントロールエレメント(BCE)と呼ばれる。(BCE).【0004】仮想アドレスから実アドレスへの変換では、アドレス付けのインストラクションまたはデータがメインメモリのどこに位置するかを検出しなければならない。代表的なアプリケーションでは、プロセッサはサイクルにあたりただ1つのアドレスを発生する。TLB)以上のアドレス発生器を有しているが、依然サイクルあたりただ1つのアドレスが実際に変換されるにすぎない。プロセッサが発達してきたのに応じて、サイクル毎に2つ以上のアドレスを発生し、かつ変換する必要性がでてきた。各サイクルを十分に利用するには、プロセッサは各サイクルに2以上のメモリ要求を必要とする。その要求は、たとえば、3つの個別の命令とすることができ、したがって、各サイクルに3つのアドレスを発生してメモリ要求を行うようにすることが必要である。4-74370号)は複数のアドレス発生器を支援するいくつかのアドレス変換装置について説明している。[0005]【発明が解決しようとする課題】複数のアドレス発生器を、それら自体のDLAT装置または共有のDLAT装置のいずれかと共に並列に動作するときに、同一のページアドレスの変換に対する要求が複数のアドレス変換器によりなされる可能性がある。DLATにあるのでない場合は、変換要求はBCEに対してなされる。each,それによって変換時間が非常に増大することになる。increased.【0006】そこで、本発明の目的は、複数のアドレス発生器を用いて、同一ページの変換に対する複数の要求を排除する、効率的な変換装置を提供することにある。ifなければ、前記変換のためのアドレスを一時的に記憶しておくアドレスバッファおよび比較手段と、前記アドレスバッファおよび比較手段によりマークされ、変換のために記憶されている各アドレスについての、変換の全てのリクエスタを識別する分配手段と、前記アドレスバッファおよび比較手段により一時的に記憶されているアドレスを変換する変換手段であって、該変換手段により前記分配手段に変換されたアドレスを供給して、変換されたアドレスの要求を行っているとしてマークされた前記アドレス発生器の各々および前記テーブル手段に対して、分配を行う変換手段とを具えたことを特徴とする。distribution.【0008】また、本発明は、請求項1に記載のアドレス変換装置において、前記分配手段は、対応する変換されたアドレスが前記分配手段に供給されたときに、前記アドレスバッファおよび比較手段から、変換のためのアドレスを消去する手段を有することを特徴とする。アドレスを要求するとしてマークされた前記発生器の各々に変換されたアドレスを分配するステップとを具えたことを特徴とする。[0011]【作用】本発明によれば、複数のアドレス発生器からのアドレス変換についての複数の要求の結果生じる重複した変換はDLATアドレスバッファを付加することにより排除される。要求されたアドレスがDLATにおいてヒットであれば、変換は慣例の方法で処理される。ミスであれば、アドレスはDLATアドレスバッファに入れられる。他のアドレス発生器からの以後の要求はDLATアドレスバッファ内のアドレスと比較され、このアドレスに対して未処理の要求があるか否かを判断する。なければ、アドレスは、バッファにまた入れられる。theリクエスタは、アドレスを欲しているとしてアドレスディストリビュータにおいて、マークされる。buffer,バッファからの削除が行われる。performed.【0012】上述した本発明の目的および他の目的、本発明の形態よび利点は、図面を参照してなされる本発明の好適な実施例についての以下の詳細な説明からよりよく理解されよう。[0013]【実施例】以下の説明ではダイナミックルック−アサイドテーブルに対して用語“DLAT”を用いるが、当業者は、この用語を変換ルック−アサイドバッファに対する“TLB”と入れ替えて用いてもよいことを理解するであろう。以下の説明のためにページング/セグメンテーション仮想アドレスシステムを仮定する。1に示す通りであり、仮想アドレスのフォーマットは、セグメントインデックス(SX)に対してsビット、ページインデックス(PX)に対してpビットおよびディスプレイスメントインデックス(DX)に対してdビットを有している。仮想アドレスは、たとえば32ビットとすることができ、そのうちのビットA0〜A11がセグメントビットを構成し、ビットA12〜A19がページビットを構成し、ビットA20〜A31がディスプレイスメントビットを構成する。bits.【0014】図2に示すように、仮想アドレスはアドレス発生器20により発生される。アドレス発生器20は中央処理装置(CPU)(不図示)の一部分である。最近に参照されるページはDLAT21にエントリーを有する。A12〜A19を用いてDLATをアドレス付けする。DLAT21から読出された、アドレス付けされたエントリーからの、仮想ページ識別ビットはコンパレータ22において、仮想アドレスのビットA1〜A11と比較される。合致がない場合は、DLATミスが発生している。search,DLATに配置される。この検索を実行する構造はバッファコントロールエレメント(BCE)と呼ばれる。(BCE).【0015】セグメント/ページテーブル検索は、セグメントテーブルオリジンレジスタ23内の値と、加算器24内の仮想アドレスのビットA0〜A12とを加算して、セグメントマップテーブル25のインデックス値を得ることから開始する。次に、セグメントマップテーブル25からのエントリー出力は、ページマップテーブル26エントリーのためのインデックスとして用いられる。ここで、各セグメントに対して個別のページマップテーブルがある。27を通過して、そして、仮想アドレス発生器20のディスプレイスメントビットA20〜A31と連接されて、実アドレスレジスタ28において実アドレスを形成する。29T21からのエントリー出力をオアゲート27へ通過させる。A20~A31,レジスタ28において実記憶アドレスを形成する。明らかに、このアドレス変換のプロセスはDLATミスの時に生じるセグメント/ページテーブル検索の場合よりも著しく速い。セグメント/ページテーブル検索は完了までに15〜80サイクルを要するかもしれないのに対してDLATアクセスは1サイクルで完了することができる。DLATの検索によりなされ、そして、セグメント/ページテーブル検索は、DLATによるかかる変換を行うよりも多数のプロセッササイクルを要するが、セグメント/ページテーブル検索自体は、変換の失敗の可能性がないわけではない。1次記憶装置にロードし、多分プロセス内の現存ページと置換する。process.【0018】たとえセグメントが1次記憶装置内に存在していても、所望のページは1次記憶装置には存在しないかも知れず、それによりオペレーティングシステムは2次記憶装置のページを探し出し、そのページを1次記憶装置にロードし、再び、多分プロセス内の現存ページと置換する。device,数百プロセッササイクルまでかかる。cycles.【0019】上述の説明は、プロセッササイクル毎に(多くとも)1つの変換を行うように意図された慣例のDLAT構造に関するものである。697,168号(対応日本出願:特願平4−74370号)では、プロセッササイクル毎に多数の変換を行うDLAT構造が開示されている。DLAT34,35および36に渡す。DLATがその変換を有していない(DLATミス)場合は、上述のようにアドレスを発生しなければならない。この手法に伴う主な問題は、しばしばあるDLAT用に変換が行われ、同じ変換が別のDLAT用に必要となることである。is,例えば3個のアドレス発生器が並行して仮想アドレスを発生する。第1のDLATでミスが発生し、変換にNサイクルを要する。同様に同じアドレスに対して第2および第3のDLATでもミスが発生すると、それぞれ変換にNサイクルを要する。同じページに対して同じ変換が3回行われることになるので、その変換に合計3Nサイクルが必要になるはずである。変換はオペレーティング・システムによって順次に実行しなければならないことに留意されたい。DLATアドレスバッファを付加することにより複数のアドレス発生器のためのDLAT構造を変更する。簡単のために、図4は1つのDLAT40によって複数のリクエスタ(たとえばアドレス発生器)から変換要求を受ける場合を示す。4に示しているように、共有された1個のDLATであってもよい。本発明はいずれの場合にも適用可能である。DLATアドレスバッファ43に供給される。このアドレスは、このバッファ内において、他のアドレスと比較され、このバッファ内に、合致する変換要求があるか否かを判断する。BCE42による変換のために、バッファ43内に待機させられる(queued)。(ID)と変換されるべきアドレスとがアドレスディストリビュータ44に入力されて、このアドレスディストリビュータ44は、変換されたアドレスをBCE42から受け取るべきリクエスタをマークしまたは識別し、または記録する。record.【0021】他方、もしも、合致する変換要求がバッファ43中に見つかった場合は、それは変換のために待機させられない。"mark",または記録するための入力がアドレスディストリビュータ44に対してなされる。変換はすでに進行中かも知れないし、あるいはBCE42による変換のために少なくとも待機させられているだろうが、この同一アドレスは2度目には変換されないであろう。その理由は、このアドレスはバッファ43において待機させられていないからである。43.【0022】アドレスの変換がBCE42により完了されると、変換されたアドレスはアドレス分配器、すなわちアドレスディストリビュータ44に送られ、このアドレスディストリビュータ44は、変換されたアドレスを要求するアドレス発生器のリクエスタの各々に、アドレスを受けるべきアドレスディストリビュータ44におけるそれらリクエスタを削除する旨をマークし、または識別するエントリーを記録する「マーク」によって示されるように、変換されたアドレスを供給する。addressAT40へも供給して、以後のアドレス変換要求に用いられるようにする。addressにも供給する。このデータをバッファ43により用いて変換を待機しているキュー(queue)の中のエントリーを消去する。43.【0023】図5はDLATアドレスバッファ43およびアドレスディストリビュータ44の構造をさらに詳細に示す。41,アドレスをゲート51を介してアドレスレジスタ50に送る。アドレスレジスタの内容は、比較ロジック52においてテーブル53内の全てのアクチブアドレスと比較される。conversionE42へ送られるべく待機させられるアドレスである。E42.変換されるべきアドレスはテーブル53に入力され、変換されるべき各入力と関連付けられた「アクチブ」ビットによりテーブル53においてアクチブ(付勢状態)とマークされる。0,ポジションnまでいき、ポジション0が利用可能になると、そのポジションに循環される。したがって、テーブル53は、変換されるべき要求の順次の記録を提供する。56からのクロックパルスを計数するn段カウンタ55の制御の下に、ゲート54を介してコンパレータロジック52に順次に読出される。59を介してテーブル53に読出されないようにする。41からの信号により、リセットおよびスタートされ、テーブル53の中を歩進させるために用いられる。カウンタ55は予め定められた数nまで計数する。DLATあてに4〜6、にすべきである。55,カウントアップして全比較サイクルの終了を示すゼロカウントに戻ったときにゼロ検出器60がセットされる。up.ゼロ検出器60がセットされると、それによってアンドゲート61を禁止し、それにより、テーブル53に格納されているアドレスのそれ以後の読出しが阻止される。prevented.この時点で、もしもフリップフロップ57がまだセットされていないのであれば、検出器60の出力によってアンドゲート58をイネーブルに、テーブル53の、「アクチブ」ビットがまだセットされていない次の位置にアドレスレジスタ50内のアドレスを読込む。これはテーブル位置レジスタ77により進められる。67の、アクチブビットがセットされていない最後部の位置を保持する。この位置はカウンタ55からアンドゲート76を介してレジスタ77に入力され、変換されるべき次のアドレスをどの位置に書込むのかを識別するために用いられる。address,その位置に対する変換が受け入れられ、かつその位置が使用可能になったときに滅勢(ノン−アクチブ)状態になる。短いディレイ62の後、検出器60の出力によってフリップフロップ57をもリセットして、次の比較サイクルに備える。検出器60は、カウンタ55と同様に、DLATミスロジック41からの信号によりリセットされる。ports,それにより、個別のアドレス入力の制御の下で、テーブル内のアドレスをいずれのポートからも読出すことができるようにする。変換されるべき次に待機しているアドレスは位置レジスタ63によりアドレスされ、それによってアドレスがテーブル53からゲート64を経由してBCE42に読込まれる。そのアドレスが変換された時に、BCE42からの出力によってインクリメンティングロジック65は位置レジスタ63内のアドレスをインクリメントする。テーブル53からゲート64に読出されたアドレスに対する「アクチブビット」は、もしもセットであれば、ゲート64をイネーブルするが、そのアクチブビットがセットでなければ、ゲート64を禁止するので、テーブル53内の、変換を行う必要のないアドレスは、テーブル53から変換のためにBCE42に読出す必要はない。「アクチブビット」がセットされていないアドレスをテーブル53から万が一読出したとすると、位置レジスタ63内のアドレスをインクリメントする必要がある。これは、インバータ66によって行われる。インバータ66がセットではない「アクチブビット」に応答してインクリメンティングロジック65が位置レジスタ63内のアドレスをインクリメントさせる。bits".【0030】アドレスディストリビュータ44はテーブル53と同様のテーブル67を有する。BCE42からの変換されたアドレスは、ゲート68を介してテーブル67に送られ、テーブル53における要求されたアドレスの位置に対応する位置にストアされる。67にアドレスをストアしておく必要はないけれども、この選択によりデバック動作を向上させることができた。位置は位置レジスタ77から得られ、アンドゲート78を通過してテーブル67に供給される。BCEは、変換を完了すると、ゲート68およびアンドゲート69の双方をイネーブルする。69.【0031】システムにおける各リクエスタに対する「マーク」ビット位置はテーブル67内の各位置と関連付けられている。nのうちの対応するひとつのゲートをイネーブルする。nに送られて、そのアドレスを要求したリクエスタに対して変換されたアドレスをストアしている位置が正しくマークされるようにする。correctly.【0032】比較イコールロジック52から不一致が得られたときは、アドレスはテーブル53の次の順次の位置に入れられ、およびそれと同時に、テーブル67内のアドレスの順次の位置はテーブル位置レジスタ77にストアされる。テーブル67がBCE42からアドレスを受けるとき、ディストリビュータ44はそのアドレスを受け、全てのマークされたリクエスタに分配される。nは、分配されるアドレスに対するマーク要求ビットによりイネーブルされる。アドレスディストリビュータ44は、テーブル53および67においてアクチブ位置のために確保されている位置をも無効にする。これは、アンドゲート69の出力で実行される。それと同時に、分配されるアドレスに対する「マーク」ビットはテーブル67においてリセットされ、この位置を使用可能状態とする。state.【0033】図5に示すハードウェアの実施例をソフトウェアの形態での実施に変更することもできる。テーブル53および67を管理するのに用いるソフトウェアのロジックを図6のフローダイアグラムに示す。その処理は、DLATミスを検出する判定ブロック80で始まる。DLATミスが検出された場合、アドレスディストリビュータ44のテーブル67のリクエスタは、ファンクションブロック81に示すように、マークされる。53に既に存在するか否かを決定するテストが判定ブロック82においてなされる。DLATバッファテーブル53およびディストリビューションバッファテーブル67に入力し、そして、同時に、ファンクションブロック84において「アクチブ」ビットがセットされる。要求されたアドレスがDLATバッファテーブル53に既にある場合は、ファンクションブロック87においてマークビットがディストリビューションバッファテーブル67に入力される。conversionLATバッファテーブル53内の次のアドレスは、ファンクションブロック85に示すように、BCE42が空いたときに、変換のためにBCE42に送られる。86において、アドレスはマークビットで示されているように分配される。テーブル53における関連する「アクチブ」ビットはファンクションブロック88においてリセットされ、そして、テーブル67における対応する「マーク」ビットは、ファンクションブロック90において、リセットされる。reset.【0035】次いで、判定ブロック91において、テーブル53にセットされた何らかの「アクチブ」ビットがあるか否かのテストがなされる。存在するのであれば、プロセスループはファンクションブロック85に戻り、そうでなければ、プロセスループはディシジョンブロック80に戻り、次のDLATミスを待つ。miss.【0036】本発明は好適な実施例に関して説明してきたが、当業者は、添付の特許請求の範囲の精神および範囲内での変更を加えて本発明を実施することができることを認識するものである。DRAWINGS【図1】仮想アドレスのフォーマットを示すブロック図である。address.【図2】プロセッササイクルあたり(高々)1アドレスを変換可能な慣例のダイナミックアドレス変換構造を示すブロック図である。address.【図3】DLATを複製して3つの独立したアドレス発生器を提供することのできる変換構造を示すブロック図である。generator.【図4】本発明による、DLATアドレスバッファを組込んだ新しいDLAT構造のブロック図である。structure.【図5】DLATアドレスバッファおよび図4に示したDLAT構造のアドレスディストリビュータの構造を示す詳細ブロック図である。4.【図6】本発明による新しいDLAT構造の動作のロジックを示すフローチャートである。前記アドレスバッファおよび比較手段により一時的に記憶されているアドレスを変換する変換手段であって、該変換手段により前記分配手段に変換されたアドレスを供給して、変換されたアドレスの要求を行っているとしてマークされた前記アドレス発生器の各々および前記テーブル手段に対して、分配を行う変換手段とを具えたことを特徴とするアドレス変換装置。請求項1に記載のアドレス変換装置において、前記分配手段は、対応する変換されたアドレスが前記分配手段に供給されたときに、前記アドレスバッファおよび比較手段から、変換のためのアドレスを消去する手段を有することを特徴とするアドレス変換装置。comparison,および前記第2テーブル手段内で見出されなかったアドレスを入力する比較手段とを具えたことを特徴とするアドレス変換装置。要求するとしてマークされた前記発生器の各々に変換されたアドレスを分配するステップとを具えたことを特徴とするアドレス変換方法。instructions。