[go: up one dir, main page]

JPH0332092B2 - - Google Patents

Info

Publication number
JPH0332092B2
JPH0332092B2 JP59233427A JP23342784A JPH0332092B2 JP H0332092 B2 JPH0332092 B2 JP H0332092B2 JP 59233427 A JP59233427 A JP 59233427A JP 23342784 A JP23342784 A JP 23342784A JP H0332092 B2 JPH0332092 B2 JP H0332092B2
Authority
JP
Japan
Prior art keywords
address
bit
page
virtual
bits
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.)
Expired - Lifetime
Application number
JP59233427A
Other languages
Japanese (ja)
Other versions
JPS60123947A (en
Inventor
Doisu Hesutaa Fuiritsupu
Ozumondo Shinpuson Richaado
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 JPS60123947A publication Critical patent/JPS60123947A/en
Publication of JPH0332092B2 publication Critical patent/JPH0332092B2/ja
Granted legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】[Detailed description of the invention]

[産業上の利用分野] この発明は、広くはコンピユータメモリシステ
ムに関し、特に仮想メモリシステムに関するもの
である。さらに詳しく述べるなら、この発明は、
仮想アドレスを実メモリアドレスに変換し、メモ
リ階層内で特定の制御機能を行うための装置に関
するものである。 [従来技術] 最新のコンピユータシステムにおいては、プロ
グラムを実行する際、システムのどこかに(すな
わち、キヤツシユ/主記憶/ダイレクトアクセス
記憶装置(DASD)の記憶階層のどこかのレベ
ル、もしくは分散ネツトワークのノードに)在駐
するデータ、またはコードにアクセスすることが
頻繁に試みられる。例えば、最も初歩的なシステ
ムにおいて、このアクセスを行うためにプログラ
ムが何を理解しなければならないかを考えてみよ
う: (a‐1) データ(あるいはコード)はどこにあるの
か?そのロケーシヨンによつてアクセスにはど
んな種類のアドレス(例えば、24ビツトからな
る主記憶アドレス、デイスクトラツクのセクタ
アドレスまたはネツトワークのノードアドレス
など)を使用しなければならないかが決定され
よう。また、そのデータの位置によつて、アク
セスを行うためには、どんな種類の命令(例え
ば、主記憶アクセスのためのロード/記憶/分
岐、デイスクアクセスのためのコマンドワー
ド、またはネツトワークアクセスのための回線
プロトコルなど)を使用しなければならないか
が決定されよう。 (a‐2) このデータは他の実行プログラムと併用さ
れているか?もしそうなら、ある種のロツクが
解除されなければアクセスを進めることはでき
ない。そして、このプログラムがデータに対し
て行おうとしている変化を、この時点で他のプ
ログラムが窺い知ることがなければ、私用アド
レスに対して記憶命令が出されなくてはならな
い。 (a‐3) このデータは回復可能であるべきか?もし
そうなら、必要時にデータの一つ前の一定状態
が検索可能となるように、何らかの“ジヤーナ
リング”策が講じられなければならない。 さて、このきわめて初歩的なシステムにおい
て、プログラムがアクセス毎に上記の識別動作を
行うことを実際に要求されているものと仮定しよ
う。すると次のような結果が生じてこよう: (b‐1) もしこのプログラムが汎用でなくてはなら
ないなら、最も頻繁に生じる“単純かつ安全
な”諸要求に対して、すなわち主記憶の私用で
非回復的なデータに対してすらアクセスがきわ
めて低速になるだろう。 (b‐2) もしプログラムを良好に走らせようとする
なら、プログラムは1つのアクセスモードにロ
ツクされることになろう。すると、プログラム
は異なつた特性のデータに対しては正確に動作
しないだろう。 (b‐3) そのプログラムは複雑で、膨大で、エラー
を生じやすいものとなるだろう。 そこで、最新のコンピユータシステムはさまざ
まな程度において上記問題に取り組んでいる。例
えば: (c‐1) 再配置可能なアーキテクチヤにより、一般
的に、私用で非回復的で非持続的なデータ及び
プログラムが、16〜32ビツトのアドレスサイズ
(通常、一時計算用)により一律にアドレス可
能となる。これらのアーキテクチヤを適正なア
ドレス変換(look−aside)ハードウエアにつ
いて実現した場合、それらのアドレスのきわめ
て大部分はキヤツシユまたは主記憶の速度で実
行される。そして、このアドレス変換ハードウ
エアに障害が生じたときのみ(それが起こるの
は100回のうち1回以下である)、システムは再
配置可能なテーブル構造にアクセスするという
手間を払うことになる。さらに、その再配置可
能なテーブル構造に障害が生じたとき(すなわ
ち、データが主記憶にないとき)のみ、システ
ムはページフオールトというオーバーヘツドを
払うことになる。このように、上記システムで
はペナルテイが払われるのは実際にそのペナル
テイが必要なときのみであるが、これはすぐれ
たアーキテクチヤの到達点であろう。 (c‐2) このプログラムは実行能力を超えてデータ
を持続すべきときは、最新のシステムでは、ロ
ード/記憶/分岐命令のかわりに、ソフトウエ
アによつて実行される“アクセス方法”に対す
る明示的な要求によつてアクセスを行うことが
必要とされる。これらのアクセス方法は“記録
及びフアイル”と呼ばれるある決められた総量
に組成されたデータを汎くサポートするもので
ある。アクセスのための“命令”は通常、読み
取り/書き込み”或いは“ゲツト/プツト”と
呼ばれている。 このデータは共用されておらず、回復可能で
もない。このデータは実際上、主記憶(バツフ
ア領域のどこか)に在駐することができる。し
かし、アクセスのたびに、プログラムはこれら
の明示的な“読み取り/書き込み”要求という
オーバヘツドを払わなければならない。このよ
うなアクセス方法は、適正に設定されたとき
は、初歩的なシステムのみでなくより一般的な
システムで使用可能かつあまり複雑でないプロ
グラムを実現させる。しかし、これらのアクセ
スの実行速度は一律にロード/記憶方式よりも
低く、またアクセスされたデータは好適な集合
構造に構成する必要がある。 (c‐3) データを共用または回復させるべき場合
に、最新のシステムでは、ソフトウエアにより
実行される“データベースサブシステム”に対
して明示的な要求が必要である。これらのアク
セスの速度は、一般的には上記アクセス方法の
場合の速度よりもより遅い。これは、ロツクと
ジヤーナルの管理という付加的な機能のための
みでなく、これらのサブシステムが支持するデ
ータの集計の種類(例えば、データの関係、階
層など)それ自身が相当に複雑なためである。 すなわち、実際、主記憶中のバツフアでデー
タをより簡単に構造化させることができるかも
しれないが、アクセス要求のたび毎にオーバヘ
ツドを支払う必要がある。 また、“チエツクポインテイング”と呼ばれ
る手段を備えて非持続性データの回復をはかる
システムが設けられている。このとき、回復可
能なアプリケーシヨンを作成しようとするプロ
グラマは、計算のデータのチエツクポインテイ
ング、フアイルの明示的バツクアツプ及びデー
タベースに対する“確約”命令、という三つの
異なる機能を扱わなければならない。 IBMシステム/38は、すべてのデータに対し
て少くとも一様なアドレス構造を与える点で他の
システムよりも進んでいる。しかし、そのシステ
ムも、すべてのアドレスを膨大にし、アクセスを
低下させ、アークテクチヤを実現するのに必要な
記憶とハードウエアとを増大させるという犠牲を
払つてそのことを達成しているのであり、さらに
データの共用や回復を行うための一様な手段を与
えるまでに至つていない。 また、本質的には単一のユニツトにより実行さ
れるのであれ、あるいは複数の処理ユニツトによ
り実行されるのであれ、単一のメモリを複数のコ
ンピユータプログラムで共用するようにしたさま
ざまな技術が従来より知られている。メモリをこ
のようにして複数のプログラムで共用しようとす
ると、きわめて大きい親メモリの容量を要する。
この必要な容量はメモリの実際の容量よりもはる
かに大きいきとがしばしばである。例えば、もし
システムが32ビツトのアドレススキームを使用す
るなら、2の32乗バイトの仮想記憶容量が利用可
能となる。この仮想記憶空間は、従来、予定の数
の領域またはセグメントに分割されるものと考え
られている。そしてこれらの領域またはセグメン
トの各々はさらに複数のページに分割され、各ペ
ージは予定の数のバイトをもつ予定の数のライン
を備えることになる。このように、仮想記憶空間
に割りつけされたセグメント及びページの指定ま
たはアドレスは任意にプログラムされた指定であ
り、主記憶の中の実際のロケーシヨンではない。
従つて、仮想セグメントとページは、通常主記憶
全体にランダムに配置されており、必要時に2次
記憶装置と主記憶との間でスワツプ・インまたは
スワツプ・アウトする。 主記憶におけるセグメントとページのランダム
な配置を行うためには、主記憶中に配置されて従
来ページフレームテーブルと呼ばれている一組の
アドレス変換テーブルを用いて、仮想アドレスを
実アドレスに変換する事が必要である。大型の仮
想システムにおいては、そのようなきわめて多数
の変換テーブルが使用される。これらを構成する
には異なる複数の方法があるが、本質的な特徴
は、特定の仮想アドレスが、その仮想アドレスに
対応する実アドレス(もし存在するなら)を含む
テーブル中のメモリロケーシヨンに対して論理的
にマツプされなければならない、という事であ
る。 機械的には、そのようなアドレス変換テーブル
の動作は次のとおりである: すなわち、特定の仮想アドレスの最高位ビツト
は上記変換テーブルの特定のセクシヨンにアクセ
スするのに使用される。この変換テーブルは特定
のフレームまたはセグメントに関するものであ
り、その変換テーブルでは下位のビツトについて
特定の仮想ビツトが含まれているか否かの検索が
行なわれる。そして、そこに特定の仮想ビツトが
含まれていれば、どのような実アドレスがその仮
想アドレスに対応しているかがさらに検索され
る。仮想フレームアドレスにより指定された各ペ
ージテーブルには、フレームのうちある1つのす
べてのページの実ロケーシヨンが含まれている。
それゆえ、もし特定のフレームが例えば16ページ
に分割されているとすると、各フレームに対する
それぞれ16ページのテーブルと、個々のページテ
ーブルの特定の組を指定する記入項目をもつ、分
離したフレームテーブルとが存在することになろ
う。ただし、これらは一般化された記述であり、
ページテーブルを用いたアドレス変換を構成する
多くの異なつた方法やCPUで作成した仮想アド
レスから出発して、アドレスを行うための手段等
もあることを理解されたい。尚、のちに述べる本
発明の好適な実施例の説明において、ハツシユア
ドレステーブル(HAT)及び逆ページテーブル
(IPT)についての詳細な記述を行うことにする。 さて、実アドレス変換を行う場合には、システ
ム構成全体の細部やページテーブルの使用にかか
わりなく、ページ・フレームテーブルへの個有の
エントリが作成され、ページテーブルは現在の仮
想アドレスを引数として使用することによりアク
セスされる。そして、通常は、複数のメモリにア
クセスした後に、ページテーブルへ所望のエント
リが見出される。この時点で、すべてのシステム
のプロトコルが追従されているか否かを決定する
ためのチエツクが行なわれ、もしそうなら、記憶
装置中の要求されたページの実アドレスがページ
テーブルからアクセスされる。仮想アドレスのバ
イト部分は本質的に相対アドレスであり、それは
実アドレス中と仮想アドレス中とで等しいもので
ある。こうして、仮想アドレスの所望の実ページ
アドレス部分が一たん変換されると、そのバイト
部分は実ページアドレスロケーシヨンに連結さ
れ、主記憶における実バイトアドレスが作成され
る。 ところで、最新の仮想メモリシステムでは周知
のことではあるが、メモリにアクセスするたびに
仮想アドレスを変換しなければならないことを避
けるため、仮想アドレスを実アドレスに変換する
ためのテーブルは、最新ではデイレクトリ変換テ
ーブル(DLAT)あるいはアドレス変換テーブ
ル(Translation Look−aside Table:TLB)
と呼ばれる特定の組の高速アクセス可能なテーブ
ルまたは高速メモリ中に保持される。尚、上記
DLATまたはTLBは本発明中でも使用される。
これらのテーブルまたはバツフアは、一般に、特
に高速あるいは高速アクセス可能なメモリであ
り、前述したページフレームテーブルよりもずつ
と高速にアクセス可能である。従つて、これによ
り、頻繁に使用される仮想アドレスがこのテーブ
ル中に記憶され高速アクセス可能となるので、コ
ンピユータの実行時間を大いに節約することがで
きる。そのようなTLBアドレス変換システムの
有効性は、特定の仮想ページへの最初のアクセス
のあとで、所定のプログラムの実行の間にその同
一仮想ページに対してきわめて多数回のアクセス
がある、という事実に基づき肯定される。また、
既に述べたように、それ以降のアクセスはあるペ
ージ内の異なるラインとバイトとに対して行なわ
れるのであるが、仮想ページから実ページへの変
換は、どのライン及びバイトがアドレスされるか
にかかわらず、そのページについては同一であ
る。 すなわち、TLBの使用により(ページフレー
ムテーブルで)行うべき変換回路が低減され、こ
のようにして仮想メモリシステム全体の動作に相
当の効果が得られる。 既に述べたように、仮想メモリシステムはコン
ピユータ技術において長年来周知である。また、
仮想アドレスの実アドレスへの変換可能性を保証
すべきある種のリロケーシヨン手段、あるいはア
ドレス変換手段を介して仮想アドレスを実アドレ
スに変換しなければならないことも周知である。
そこで、仮想記憶装置に関連するすべての特許や
論文をすべてここにリストアツプすることはとて
も不可能だが、次の示す従来技術が、典型的なア
ドレス変換機構として十分例示的であり、また本
願発明にとつて、知られている最も近い技術であ
ると発明者は信じる。 先ず、Berglund他の米国特許第3828327号には
アドレスに対し最高位ビツトを付加する手段によ
りメモリを拡張するための記憶制御技術が記載さ
れている。その最高位ビツトはプログラムの見か
けのアドレスの一部ではなくて、割り込みモー
ド、I/O(入出力)モード等の異なつたシステ
ムモードにより制御を受けるのである。この特許
はメモリ拡張システムに関するものだが、適当な
アドレス変換用ハードウエアが組み込まれてい
る。 次に、Bourke他の米国特許第4042911号には主
記憶を拡大するためのシステムが開示されてお
り、そのシステムには明らかにアドレス変換手段
が備えられている。 しかし、これらのどの特許にも、仮想アドレス
拡張の概念や、TLBとページフレームテーブル
の双方に特別なロツクビツトを付与えることは開
示されていない。 1982年4月発行のACM SIGPLAN
MOTICES、Vol.17、No..4に記載の“The 801
Minicomputer”と題するGeorge Radinによる
論文には、ある実験的なコンピユータについての
一般的な記述が与えられている。そのコンピユー
タとは、動作特性が、相当な程度、リロケーシヨ
ン機構が特定の用途をもつようなきわめて高速の
メモリサブシステムに依存するものである。 Bourke他の米国特許第4050094号は、スタツク
セグメンテーシヨンレジスタを有するアドレスリ
ロケーシヨン変換器を備えたメモリ構成について
開示する。この特許に開示された特有のセグメン
テーシヨンレジスタは、本発明で利用される拡張
された仮想アドレスよりもむしろ、主記憶中の物
理的ブロツクの、割り付けされた実アドレスを記
憶するために利用される。 Mitchell他の米国特許第4251860号は、大型の
アドレスメモリを実現するための仮想アドレス装
置を備えたメモリアドレスシスタムを開示する。
この特許には、仮想アドレスをセグメント部分と
オフセツト部分とに分割することが記載されてい
る。しかし、そのセグメント部分と、それに接続
されたセグメントレジスタとはアドレスを分割す
る、という従来の方法で使用されているのであ
り、本発明のアドレス変換スキームとはその動作
状態が全く異なるのである。 Birney他の米国特許第4037215号は、上述した
米国特許第4050094号のシステムと非常によく似
たシステムを開示する。すなわち、そのシステム
においては、セグメンテーシヨンレジスタの列
が、特定の実メモリブロツクを指定するために使
用される。この特許にはさらに、特定のセグメン
テーシヨンレジスタに接続された「読み取り専
用」有効ビツトを使用することが示されている。
しかし、これらのビツトは、この発明のリロケー
シヨン機構のハードウエアに設けられた特殊な目
的のロツクビツトとはほとんど類似するところが
ない。」 Corde他の米国特許第4077059号はジヤーナリ
ングとコピーバツクとを容易ならしめるために特
殊な制御手段を備えた階層的メモリシステムを開
示する。この特許には複数の2重メモリについて
記載されており、それにおいてはデータの現版が
2重メモリのうちの一方に保持され、データの変
化が2重メモリのうち他方に結知され、これによ
り、それに続くジヤーナリングとコピーバツクの
動作が容易となる。この特許のハードウエアと制
御手段も本発明のロツクビツトシステムとはほと
んど類似しない。 Hogan他の米国特許第4064948号にはアドレス
変換システムが開示されている。このシステムは
カウンタを備えた手段を有しており、その手段は
各々、デイレクト変換テーブル(DLAT)中に
入口を持つている。 Hoffman他の米国特許第4218743号はIBMシス
テム/38のリロケーシヨンアーキテクチヤに関連
して今までにリストアツプしたいくつかの特許の
うちの一つの例をなすものである。この特許は、
I/Oが仮想記憶コンピユータシステム中でアド
レス動作を処理する方法の簡略化について述べた
ものである。仮想記憶システムに関連する特許と
しては他に、米国特許第4170039号、第4251860
号、第4215402号などがある。 Corde他の米国特許第4020466号もまた、ジヤ
ーナリングとコピーバツク手続とを簡単化するた
めの特殊な手段を組み込んだメモリシステムを開
示するものである。しかし、この特許は本発明の
ロツクビツト制御手段に全く関連がない。 Lowlorの米国特許第3942155号は、仮想メモリ
システムにおいてある形状のセグメントの区分方
式を開示する。しかし、この特許で採用されてい
るセグメントの区分方式は、仮想アドレスを拡張
するために使用されるこの発明のセグメント方式
とは全く異なるものである。 また、仮想メモリ変換機構にアクセスするため
に、さまざまなハツシユスキームを使用するもの
の一例として米国特許第4215402号を挙げておこ
う。 [発明が解決しようとする問題点] この発明の目的は、仮想記憶装置において、ハ
ツシユアドレステーブルと逆ページテーブルとを
結合させたテーブルを使用することにより、仮想
メモリアドレスから実メモリアドレスへの変換動
作を支援するために必要なハードウエアの量を低
減することにある。 [問題点を解決するための手段] この発明は、仮想メモリアドレスを実メモリア
ドレスに変換するためのシステムで使用される結
合されたテーブルに関するものである。この結合
されたテーブルは、仮想アドレスから形成された
ハツシユアドレスを利用したものである。そし
て、ハツシユアドレス中の仮想アドレスは、さら
にページテーブルにアクセスするために索引され
る。すなわち、そのページテーブルには各実メモ
リアドレスに個別に対応する仮想メモリアドレス
が含まれているのである。この発明は、ある選択
した仮想アドレスをハツシングしてハツシユアド
レスを作成するための手段と、結合されたテーブ
ルとを提供するものである。この結合されたテー
ブルは、各メモリアドレスの個別の仮想アドレス
からなる第1のリストと、各ハツシユアドレスを
予定の初期仮想アドレスに結合させる第2のリス
トとからなる。上記の予定の初期仮想アドレスは
連結された一群の仮想アドレスからなるものであ
り、それらの仮想アドレスはハツシユされたとき
は、結合させたハツシユアドレスを作成する。こ
の発明のシステムはさらに、選択された仮想アド
レスが配置されるまで、テーブル中で各々の連結
された群を検索するための手段と、上記仮想アド
レスのロケーシヨンに応答して上記第1のリスト
から配置された仮想アドレスの実メモリアドレス
にアクセスするための手段とを備えている。 [実施例] (A) 仮想アドレス−実アドレス変換機構の概要 第1図は、本発明の一実施例の仮想アドレス
−実アドレス変換機構の概要ブロツク図であ
る。この変換機構は、最大16Mバイトの記憶装
置とインターフエースを行うのに必要な論理回
路を備えている。このとき記憶装置はインター
リーブ(介在)されるものでもされないもので
もどちらでもよく、またスタテイツク型とダイ
ナミツク型のどちらでもよい。この変換機構は
機能的には三つの部分に分割される。すなわ
ち、第1図において、CPU記憶チヤネル
(CSC)インターフエースとしての論理回路1
0は、共通フロントエンド回路12(CFE)
と、アドレス変換論理回路14と、記憶制御論
理回路16とからなる。このうち共通フロント
エンド回路12は、記憶用チヤネルからアドレ
ス変換論理回路14と記憶制御論理回路16と
に適正なプロトコルを供給するためのものであ
る。そして、記憶用チヤネルを介して行き来す
るすべての情報データはこの共通フロントエン
ド回路12で処理されることになる。また、ア
ドレス変換論理回路14は、記憶用チヤネルか
ら受け取つた仮想アドレスを、記憶装置にアク
セスするために使用される実アドレスに変換す
るはたらきをもつ。このために、アドレス変換
論理回路14は、16個の互いに合同な類をな
す、両方向の集合体として構成されたアドレス
変換バツフア(TLB)を備えている。さらに
アドレス変換論理回路14には、要求に応じて
主記憶のページテーブルからTLBの入力端子
に自動的に再ロードさせるための論理回路が設
けられている。記憶制御論理回路16はアドレ
ス変換論理回路14から記憶装置へのインター
フエースを行うためのものである。記憶装置と
してダイナミツクが使用されているときは、そ
のダイナミツクメモリのリフレツシユ制御もこ
の記憶制御論理回路16によつて行う。 尚、このとき注意しなければならないのは、
この発明が何よりも先ず周知のコンピユータ回
路や、装置や、機能的ユニツトの近規な構造的
結合及び機能的動作に要するものであつて、そ
れらの特定の詳細な構造にあるのではない、と
いうことである。従つて、これらの周知の回
路、装置及びブロツクの構造、制御手段及び配
列は、理解しやすいようにブロツク表示と機能
的図表を用いて図示することとし、この発明に
関連が深い箇所のみを詳細に図示することを了
解頂きたい。というのは、構成を細々と記載す
るとこの発明の焦点が不明瞭になつてしまうか
らであり、またこの発明の焦点でない周知の箇
所は機能的記載だけで、熟練した当業者にはき
わめて明らかであろうと考えるからである。さ
らに、これらのシステムのさまざまな部分は、
この発明の関連が深い特徴をとくに強調するた
めに適当に重点を置かれ、あるいは機能的に記
載してある。これ以降の記載は熟練した当業者
をして開示されるメモリシステムの可能性と能
力とを認めさせ、またその開示は、当業者がさ
まざまなコンピユータアーキテクチヤにこの発
明のメモリシスタムを適用実施するに十分な程
度詳しいものであると信じる。 さて、実施例の説明に戻ろう。第1図のシス
テムでアドレスが変換される(すなわち、仮想
アドレスとして処理される)か、あるいは実ア
ドレスとして処理されるかは、CPU記憶チヤ
ネル(CSC)上の変換モードビツト(Tビツ
ト)の値によつて制御される。CSC上に何らか
のリクエストを出す各々の装置は、そのリクエ
スト毎に変換モードビツトの値を制御すること
になる。この変換モードビツトは、CPUから
出されるメモリアクセス命令の適当な領域から
取つたものである。I/O装置によつて出され
た記憶装置へのアクセス命令に対し、付属アダ
プタによつてTビツトの値が作成される。そし
て、Tビツトが“1”であると、記憶アドレス
(チエツチ命令、データロード、データストア)
がアドレス変換論理回路14に送られる。ま
た、Tビツトが“0”であると、記憶アドレス
は実アドレスとして処理される。 なお、ここに開示するアーキテクチヤの範囲
内では、アドレス変換論理回路14に送られて
いない記憶要求に対しては、記憶保護が有効と
されない。 しかし、参照及び変更のレコーデイングは、
記憶要求がアドレス変換論理回路14に送られ
ているか否かにかかわらずすべての記憶要求に
対して有効である。 さて、アドレス変換論理回路14に送られた
アドレスについては、その変換動作は次のよう
に進行する。 尚、以下では厳密に論理的に順次進行するプ
ロセスとして記載を行うが、さまざまな実行動
作によりこれらの機能の各部分を平行して実行
してもよい。 本発明のアドレス変換機構は、“単一レベル
記憶”アドレス構造を採用している。このアド
レス変換機構は、ここに開示した好適な実施例
中の次のものに対して支援を行う: (a) 多重独立仮想アドレス空間 (b) 4Gバイトのアドレス空間 (c) 要求時ページング (d) 2048バイトまたは4096バイトのページ (e) 記憶保護機構 (f) 命令及びデータに対して共用されたセグメ
ント (g) 128バイトラインのジヤーナリング及びロ
ツキング (h) 16Gバイトまでの実記憶アドレス可能性 (i) 各実ページに対する参照及び変更ビツト (j) 実アドレスのロード、アドレス変換バツフ
ア(TLB)入力の無効化、及び例外アドレ
スの記憶に対するハードウエアの援助 記憶装置は、各々256Mバイトを有する4096
個のセグメントからなる、単一の40ビツトのア
ドレス空間上にマツプされているかのように処
理される。すなわち、CPU記憶チヤネル
(CSC)から受け取つた32ビツトのアドレスは、
16個のセグメントレジスタのうち1個を選択す
るための、4個の最高位ビツトを用いて40ビツ
トのアドレス(“長形仮想アドレス”)に変換さ
れる。これは、選択したセグメントレジスタの
もつ12ビツトの内容と、SCSから受け取つた32
ビツトのうちから上位4ビツトを除いた残り28
ビツトとを連結したものである。この40ビツト
の仮想アドレスは、記憶装置にアクセスするた
め、アドレス変換機構によつて実アドレスに変
換される。なお、仮想アドレスの大きさがハー
ドウエアによつて多少異なることは容易に見て
とれよう。 さて、任意の瞬間に、記憶装置のうち4Gバ
イトのみ、すなわち16個のセグメントレジスタ
として指定された、256Mバイトの容量をもつ
16個のセグメントのみがアドレス可能である。
この事実により、セグメントレジスタに対して
適当な値をロードすることによつて、オペレー
テイングシステムが多重独立仮想アドレス空間
をつくり出すことが可能となる。この方式によ
れば、限界的なケースとして、完全に独立な
4Gバイトのアドレス空間を256個つくり出すこ
とができよう。しかし、(中核コードのような)
いくつかのセグメントが多重アドレス空間に亘
つて共有されることが多いであろう。 また、IBMシステム370記憶保護機構と同様
な記憶保護機構が、2Kまたは4Kバイトのペー
ジ基体上に設けられている。記憶保護とフエツ
チ保護とは、各256Mバイトのセグメントに独
立に指定された(IBMシステム370のプログラ
ム状況ワードにおけるキーと等価な)保護キー
により支援される。 さらに、保持記憶クラスに対しては、各仮想
ページに連結した一組の“ロツクビツト”によ
り支援が行なわれる。このロツクビツトは、記
憶保護の細分性を(2Kページに対して128バイ
ト、あるいは4Kページに対して256バイトの)
記憶の“ライン”まで有効に延長し、オペレー
テイングシステムが保持変数に対する変更を検
知してその変更を自動的にジヤーナルすること
を可能とする。尚、ここで使用される保護記憶
クラスは、デイスクフアイル記憶上に常駐する
記憶を意味するものとする。 (B) この実施例で使用される特殊な用語の定義 以下に示す用語は、このあとの説明を通して
使用されるものであり、説明を簡明にするため
ここで予め定義しておこう。 バイト・インデツクス:2Kバイトのページ
に対しては0から2047までの、また4Kバイト
のページに対しては0から4095までの範囲の数
字であり、この数字はページまたはページフレ
ーム内のバイトを識別するためのものである。
このバイト・インデツクスは、2Kバイトペー
ジの場合は有効アドレスの下位11ビツトから、
また4Kバイトページの場合は有効アドレスの
下位12ビツトから取つたものである。 変更ビツト:各ページフレームに個別に関連
づけられた1つのビツトであり、そのページフ
レームに対して次の記憶の参照(書き込みの
み)が行なわれたときは必ず、変更ビツトは
“1”にセツトされる。 有効アドレス:記憶チヤネル上の装置によつ
た発生された32ビツトの記憶チヤネルアドレス
である。この有効アドレスは、ホストCPUに
より、フエツチ命令や、データロードや、デー
タストアとして出力されたアドレスであつても
よく、さらにまたDMA(直接メモリアクセス)
アドレスのような記憶チヤネル上のI/O装置
によつて発生されたアドレスであつてもよい。 ライン:128バイト境界上のページの128ビツ
ト部分である。この128ビツトがロツクビツト
(後述)によつて制御される記憶の数である。 ロツクビツト:保持記憶セグメントの各ペー
ジに接続された16ビツトの組のうちの1つのビ
ツトである。各ロツクビツトは記憶装置の1つ
のラインと接続されている。そして、あるライ
ンにおけるトランザクシヨンID(取引識別信
号)、書き込みビツト、及びロツクビツトの値
により、保護記憶セグメント内で記憶アドレス
要求を容認するか拒否するかのどちらかが決定
される。 ページ:2048バイトの境界上の2048バイトの
容量をもつ記憶域、または4096バイトの境界上
の4096バイトの容量をもつ記憶域である。“ペ
ージ”とは正しくは仮想記憶のことであり、
“ページフレーム”が実記憶を示す。しかし、
“ページ”という用語は慣用的には仮想記憶と
実記憶の両方の意味に用いられている。 ページフレーム:2048バイトの境界上の2048
バイトの容量をもつ記憶域、または4096バイト
の境界上の4096バイトの容量をもつ記憶域であ
る。上記ページはページフレームの中、もしく
は外部記憶(例えばデイスク)上に存在する。 ページテーブル:主記憶内で、ハツシユアン
カーテーブルと逆ページテーブルを結合した内
容のことである。このページテーブルは、仮想
アドレスを、それに対応する実アドレスに変換
するために用いられる。尚、このあとページテ
ーブルをHAT/IPTと記すことがある。 保護キー:各セグメントレジスタ中の1ビツ
トの値であり、所定のセグメント内のデータに
アクセスすることに関して現在実行中のプロセ
スの権限レベルを示すためのものである。この
保護キーはIBMシステム370のプログラム状況
ワードキーと機能が類似しているが、アドレス
可能なすべてのメモリ全体よりもむしろ各セグ
メント個々に設けられている点で異なる。 実アドレス:変換動作によつて得られた結果
であり、有効アドレスの下位11(または12)ビ
ツトに実ページインデツクス(後述)の10〜13
ビツトを連結したものである。 実ページインデツクス:0〜8192(13ビツト)
の範囲の数であり実記憶中のページフレームを
識別するためのものである。ある実施態様では
上記13ビツトという値は10ビツト程度に限定さ
れてしまうかもしれず、すると支援すべき実記
憶の最大容量も2Mバイトからなる2Kバイトペ
ージに制限されることになる。 参照ビツト:各ページフレームと接続された
1ビツトのことである。この参照ビツトは次の
記憶参照信号(読み取りまたは書き込み)がフ
レームに出されたときは必ず“1”にセツトさ
れる。 セグメントID:0〜4095(12ビツト)の範囲
の数であり、256Mバイトの仮想記憶セグメン
トを識別するためのものである。仮想ページイ
ンデツクスと連結されたセグメントIDは40ビ
ツト仮想アドレス空間内で個別にページを指定
する。 記憶キー:各TLB(後述)の内容中の2ビツ
トの値であり、個有のページに連結した記憶保
護のレベルを示すためのものである。このキー
はIBMシステム370の各メモリページに連結し
た記憶キーと機能において類似している。 TLB:アドレス変換バツフア(Translation
Look−aside Buffer)。このTLBは、仮想−
実マツピングを有するハードウエアである。
尚、ある実施態様では、任意の時にTLBがこ
のマツピングの一部のみを含むようにしてもよ
い。そのマツピングに加えて、TLBには変換
識別信号や記憶キーや、ロツクビツトなどのよ
うな、そのTLBに連結した他の情報を収める
ようにしてもよい。 トランザクシヨンID:0〜255(8ビツト)
の範囲の数であり、現在TLB中にロードされ
ているロツクビツトの組の“所有者”を識別す
るためのものである。 仮想アドレス:セグメントIDと、有効アド
レスの下位28ビツトをアドレス変換機構の下位
28ビツトと結合することにより形成した40ビツ
トのアドレスである。 仮想ページインデツクス:2Kバイトページ
に対する0〜131072(17ビツト)までの範囲の
数、または4Kバイトページに対する0〜65536
(16ビツト)までの範囲の数であり、ある仮想
記憶セグメント内のページを識別するためのも
のである。仮想ページインデツクスは、その範
囲が17ビツトであるときは有効アドレスの4〜
20ビツトを、またその範囲が16ビツトであると
きは、効有アドレスの4〜19ビツトを占めるこ
とになる。 (C) アドレス変換機構のためのハードウエア それでは、アドレス変換機構を支援するため
に必要なハードウエアをこれから説明しよう。 先ずTLBは任意の数の内容を備え、これら
の各内容は1つのページの仮想アドレスを実ア
ドレスに変換する制御を行うためのものであ
る。 TLBの構成の詳細は実施態様に依存する。
このとき、2つの実施態様が可能である。すな
わち、セグメントIDによつてアドレスされる
連想記憶装置(CAM)と、実記憶フレーム毎
に1つの内容をもつ仮想ページインデツクスで
ある。そして、CAMのインデツクスは実ペー
ジインデツクスに等しいと考えられる。また、
連合する組をなすTLBは仮想ページインデツ
クスのいくつかの下位ビツトによりアドレスさ
れると考えられる。さらに、実ページインデツ
クスは、TLBの内容のあるフイールド内に含
まれることになろう。 そして、各TLBの内容はIOR(入出力読み出
し)命令またはIOW(入出力書き込み)命令を
用いてCPUにより個別に読み出し・書き込み
可能である。TLBの内容は次のようなフイー
ルドを含む: 先ず(CPUまたはI/O装置から)入力さ
れた32ビツトの有効アドレスは、この有効アド
レスに対するセグメント識別アドレスの結合に
よつて40ビツトに拡張される。この仮想アドレ
スは次に変換用ハードウエアへ移送され、等価
な実アドレスに変換される。それでは、仮想ア
ドレスが実アドレスに変換されるプロセスを、
以下に具体的に示そう。 (D) アドレス変換動作 入力された有効アドリスの最高位の4ビツト
は、セグメントテーブルに指標として与えら
れ、16個のセグメントのうち1つを選択するた
めに使用される。ここで第2図を参照すると、
エントリ番号0〜15を順次割り付けたのが上記
16個のセグメントである。同図に示すように、
選択されたセグメントレジスタからは12ビツト
のセグメントID(セグメント識別ビツト)と、
1ビツトのセグメント特殊ビツトと、1ビツト
のキービツトとが得られる。特殊セグメントビ
ツトとキービツトとは、以下に述べるアクセス
検証のために使用される。 次に第3図を参照すると、12ビツトのセグメ
ントIDは、入力された有効アドレスの4ビツ
ト目から31ビツト目までの28ビツトのアドレス
と結合されて、40ビツトの仮想アドレスが形成
される。この有効アドレスのうち、2Kページ
に対しては下位11ビツトが、また4Kページに
対しては下位12ビツトが、選択された実ページ
用のバイトアドレス(バイトインデツクス)と
して使用される。残りの29ビツト(4Kページ
の場合は28ビツト)は次に変換用ハードウエア
に移送される。 次に第4図を参照すると、この図に示された
アドレス変換システムは頻繁に使用される仮想
アドレスの変換を行うために、アドレス変換バ
ツフア(TLB)を使用している。また、新た
な仮想アドレスが変換されるためにTLBに移
送されて来たとき、主記憶ページテーブルから
のTLBの内容を自動的に更新するためにハー
ドウエアが使用される。尚、各TLBのフオー
マツトについては第5図に示されている。 第4図のシステムは2個のTLBを使用して
おり、各TLBは16個のエントリ(内容)、すな
わち16個の合同なクラスと連想的な両方向性の
セツトを備えている。仮想ページインデツクス
の下位4ビツトは双方のTLBを並列的にアド
レスするために使用される。各TLB中のアド
レスタグエントリ(第4図中では“タグ”と表
示)は仮想ページインデツクスの残りのビツト
(2Kページの場合は25ビツト、4Kページの場
合は24ビツト)と結合されたセグメントIDと
比較される。そして、セグメントIDとアドレ
スタグエントリとが等しく且つTLBの内容が
有効(それは第5図の有効ビツトVにより指示
される)であれば、連合されたTLBが所与の
仮想アドレスに対応する変換情報をもつことに
なる。 さて、選択されたTLBエントリ中の実ペー
ジ番号フイールド(第4,5図では“RPN”
と表示)は、所与の仮想アドレスにマツプされ
る、主記憶中の実ページの番号を含む。もし、
この番号が特殊セグメント(第2図参照)でな
ければ、アクセスが許可される前に、TLBエ
ントリからのキービツトとセグメントレジスタ
からのキービツトとを使用して記憶保護の違反
になつていないかどうかのチエツクが、そのア
クセスにつき行なわれる。また、セグメントレ
ジスタの特殊セグメントビツト(第2図参照)
によつて示されるように、この番号が特殊セグ
メントであれば、アクセスが許可される前にロ
ツクビツト処理が行なわれる。 さて、次に記憶保護機能について説明する。
この機能は、特殊セグメントの処理を行うこと
である。 もし、アクセスが許容されると、主記憶に対
してアクセスが行なわれて、ページに連結され
た参照ビツトREF(第4図)と変更ビツトCHG
(第4図)とが更新される。参照ビツトと変更
ビツトのセツト動作については後に説明する。 また、2個のTLBを比較して、これらから
何ら一致が得られないと、アドレス変換論理回
路14が、主記憶のページテーブルから誤つた
TLBの内容を再ロードしようと試るであろう。
主記憶のページテーブルは実記憶中に在駐し、
論理的には、ハツシユアンカーテーブル
(HAT)という2つの部分からなる。この
HATは、ハツシング機能によつて、すべての
仮想アドレスを実アドレスにマツプ(射影)す
ることを可能とする。 また、逆ページテーブル(IPT)は、(もし
存在するならば)各実ページフレームに関連づ
けられた仮想アドレスを指示するためのもので
ある。逆ページテーブルは実ページ番号によつ
てインデツクスされた複数の内容のアレイ(配
列)として構成されており、その各内容は、関
連づけられたセグメントIDと仮想ページイン
デツクスとを含んでいる。 ところで、所与の実アドレスに対して仮想ア
ドレスを決定することは簡単である。なぜな
ら、IPTは実ページ番号によつてインデツクス
されているからである。一方、所与の仮想アド
レスに対して実アドレスを効率的に決定するた
めには、ハツシユ衝突(Collision)を解決す
るべく仮想アドレスをアンカーポイントとエン
トリ内容のチエーンに対してマツプすることが
必要である。このことは、熟練した当業者によ
つて十分理解されるだろう。 ハツシユアンカーテーブル(HAT)は、ハ
ードウエアの有効性の理由から逆ページテーブ
ル(IPT)に物理的には組み入られているのだ
けれども、論理的にはIPTとは分離されてい
る。第6図に示すように、ハツシユ機能によ
り、仮想アドレスは先ずHATの中のエントリ
のインデツクスに変換される。そして、この
HATインデツクスは、そのHATインデツク
スと同じインデツクスをもつIPTエントリ(実
ページ)チエーンの第1の部分を指定する。仮
想アドレスに一致するIPTエントリのチエーン
を検索することにより、その所望の仮想アドレ
スに対応するIPTインデツクス(すなわち実ア
ドレス)が得られるか、あるいは何ら一致が得
られないで検索を終えるか(ページがマツプさ
れていない)のどちらかに帰着するであろう。
尚、この実施例では実記憶の各ページに対して
HATのエントリとIPTのエントリとが1つづ
つ対応している。 仮想アドレスの実アドレスへの変換は、有効
アドレスの選択した下位ビツトと、セグメント
IDのビツトとの排他的論理和をとることによ
つて実行される。この“ハツシユ”されたアド
レスは、HATに対してインデツクスをつける
ための使用される。また、選択されたHATの
内容は所与の仮想アドレスに対応して検索すべ
きIPTエントリのリストの開始点へのポインタ
となる。検索すべきIPTエントリのリスト中の
内容は、検索すべき次のIPTエントリを指定す
る、各エントリ中のポインタによつて相互に連
結される。IPTエントリ中にはフラグビツトが
あり、このフラグビツトはその検索チエーンの
最終点を表示するために使用される。尚、検索
すべき1つのIPTチエーンの中には複数の仮想
アドレスの内容が存在し得ることに注意された
い。というのは、ハツシユ機能により異なる複
数の有効アドレスに対して同一のHATアドレ
スが生成されることがあるからである。 さて、前にも述べたように、ハードウエアの
効率という理由から、HATとIPTとは単一の
インデツクス構造によりアドレス可能な単一の
構造中に結合されている。すなわち、実記憶の
各ページに対応して、この結合されたHATと
IPT中のエントリが1つづつ存在する。例え
ば、2Kバイトページとして構成された1Mバイ
トの実記憶には、512個のエントリが必要だし、
4Kバイトページとして構成された512Kバイト
の実記憶には128個のエントリが必要である。
この結合されたHAT及びIPTページエントリ
のフオーマツトは第7図に示されている。第7
図のページエントリは1ページの実メモリをあ
らわしている。HAT/IPTは各ページエント
リに対して16バイトずつの領域を有しており、
そのテーブルの大きさの倍数のアドレス上でス
タートする。 各ページエントリの第1ワードには、セグメ
ントIDと仮想ページインデツクスとの結合に
より形成されたアドレスタグが含まれている。
尚、アドレスタグは、2Kバイトページの場合
は29ビツトであり、4Kバイトページの場合は
28ビツトであることに留意されたい。すなわ
ち、もし4Kバイトの大きさのページが使用さ
れるのであれば、28ビツト長のアドレスタグが
第1ワードの3〜30ビツトに格納され、2ビツ
ト目は保留される。この第1ワードは、後述す
る記憶保護用の2ビツトのキービツトを含んで
いる。 第2ワードには、HATポインタ、IPTポイ
ンタ、及び空ビツト(E)及び最終ビツト(L)と称す
る各ポインタのための有効ビツトとが含まれて
いる。これらのフイールドの用途については後
述する。 第3ワードには、書き込み保護ビツトと、ロ
ツクビツトと、各特殊セグメント用のTID(ト
ランザクシヨンID)とが含まれている。これ
らのフイールドの用途についても後述する。 第4ワードはTLB(アドレス変換バツフア)
の再ロード用には使用されず、将来のあり得べ
き使用に備えて保留される。 HAT/IPTの基底アドレスは、変換制御レ
ジスタ(第12図参照)のフイールドであり、
主記憶ページテーブルの開始アドレスを算出す
るために使用される。このHAT/IPTの基底
アドレスには、主記憶ページテーブルの開始ア
ドレスの値を得るために、記憶容量とページの
サイズに応じて表(すぐあとに示す)中の値
を掛けあわせる。表にはまた、各記憶容量と
ページのサイズに対応するHAT/IPTの大き
さが示されている。
INDUSTRIAL APPLICATION FIELD OF THE INVENTION This invention relates generally to computer memory systems, and more particularly to virtual memory systems. To explain in more detail, this invention:
The present invention relates to an apparatus for converting virtual addresses to real memory addresses and performing certain control functions within a memory hierarchy. [Prior Art] In modern computer systems, when a program is executed, it must be executed somewhere in the system (i.e., at some level of the cache/main memory/direct access storage (DASD) storage hierarchy, or on a distributed network). Attempts are frequently made to access data or code residing on nodes in the network. For example, consider what a program must understand to make this access in the most rudimentary system: (a-1) Where is the data (or code) located? The location will determine what type of address (eg, a 24-bit main memory address, a disk track sector address, or a network node address) must be used for access. Also, depending on the location of the data, what type of instruction (e.g. load/store/branch for main memory access, command word for disk access, or command word for network access) is required to perform the access. line protocols) should be used. (a‐2) Is this data used in conjunction with other executable programs? If so, access cannot proceed unless some type of lock is removed. If no other program can see at this point the changes that this program is attempting to make to the data, a store command must be issued to the private address. (a‐3) Should this data be recoverable? If so, some "journaling" strategy must be taken so that the previous constant state of the data can be retrieved when needed. Now suppose that in this very rudimentary system, a program is actually required to perform the above identification operation on every access. The following consequences would then arise: (b-1) If this program must be general-purpose, it must be able to handle the most frequently occurring "simple and safe" requirements, i.e., for private use of main memory. access will be extremely slow even for non-recoverable data. (b-2) If a program is to run well, it will be locked into one access mode. Then the program will not work correctly on data with different characteristics. (b-3) The program will be complex, large, and error-prone. Modern computer systems therefore address the above problems to varying degrees. For example: (c-1) Relocatable architectures typically allow private, non-recoverable, non-persistent data and programs to be stored with address sizes of 16 to 32 bits (typically for temporary computations). It becomes uniformly addressable. When these architectures are implemented with proper look-aside hardware, the vast majority of these addresses are executed at cache or main memory speeds. And only when this address translation hardware fails (which happens less than 1 in 100 times) does the system go to the trouble of accessing the relocatable table structure. Furthermore, only when the relocatable table structure fails (ie, when the data is not in main memory) does the system incur page fault overhead. Thus, in the system described above, penalties are paid only when they are actually needed, which would be the goal of good architecture. (c-2) When the program must persist data beyond its execution capabilities, modern systems require explicit instructions on the ``access method'' performed by the software instead of load/store/branch instructions. Access is required based on specific requests. These access methods generally support data organized into certain fixed volumes called "records and files." The “instructions” for access are commonly referred to as read/writes or “gets/puts.” This data is neither shared nor recoverable; it is effectively However, for each access, the program must pay the overhead of these explicit “read/write” requests. Such access methods are When configured, they result in less complex programs that can be used on more general systems as well as rudimentary systems. However, the execution speed of these accesses is uniformly slower than the load/store method, and Accessed data must be organized into a suitable aggregate structure. (c-3) When data is to be shared or recovered, modern systems require a “database subsystem” implemented by software. An explicit request is required.The speed of these accesses is generally slower than that of the above access methods, not only because of the additional functionality of lock and journal management. , because the types of data aggregation these subsystems support (e.g., data relationships, hierarchies, etc.) are themselves fairly complex. It may be possible to make the data non-persistent, but you will have to pay the overhead for each access request.In addition, systems are in place to recover non-persistent data using a method called "checkpointing." A programmer attempting to create a recoverable application must deal with three different functions: checkpointing data in a computation, explicitly backing up files, and "commit" commands to the database. IBM System/38 is more advanced than other systems in providing at least a uniform address structure for all data.However, that system also makes all addresses large, reduces access, and reduces architecture. This is accomplished at the expense of increasing the storage and hardware required to achieve this, and even providing a uniform means for data sharing and recovery. There are also various techniques that allow a single memory to be shared by multiple computer programs, whether executed by essentially a single unit or by multiple processing units. has been known for a long time. Sharing memory among multiple programs in this way requires an extremely large amount of parent memory.
This required capacity is often much larger than the actual capacity of the memory. For example, if a system uses a 32-bit addressing scheme, 2^32 bytes of virtual storage capacity is available. This virtual storage space is conventionally thought of as being divided into a predetermined number of regions or segments. Each of these regions or segments is then further divided into pages, each page having a predetermined number of lines with a predetermined number of bytes. Thus, the designations or addresses of segments and pages allocated to virtual storage space are arbitrarily programmed designations and not their actual locations in main memory.
Therefore, virtual segments and pages are typically randomly located throughout main memory and are swapped in or out between secondary storage and main memory as needed. In order to randomly arrange segments and pages in main memory, virtual addresses are converted to real addresses using a set of address translation tables, conventionally called page frame tables, located in main memory. things are necessary. In large virtual systems, a large number of such translation tables are used. There are several different ways to configure these, but the essential feature is that a particular virtual address is associated with a memory location in the table that contains the real address (if any) that corresponds to that virtual address. This means that it must be mapped logically. Mechanically, the operation of such an address translation table is as follows: The most significant bit of a particular virtual address is used to access a particular section of the translation table. This conversion table is related to a specific frame or segment, and in this conversion table, a search is performed to see whether or not a specific virtual bit is included in the lower bits. If a specific virtual bit is included there, a further search is made to find out what kind of real address corresponds to that virtual address. Each page table specified by a virtual frame address contains the real locations of all pages in one of the frames.
Therefore, if a particular frame is divided into, say, 16 pages, there will be a separate frame table with a 16-page table for each frame, and an entry specifying the particular set of individual page tables. will exist. However, these are generalized descriptions;
It should be appreciated that there are many different ways of configuring address translation using page tables, starting from virtual addresses created by the CPU, and so on. In the description of the preferred embodiment of the present invention, which will be described later, the hash address table (HAT) and the inverse page table (IPT) will be described in detail. Now, when performing a real address translation, regardless of the details of the overall system configuration or the use of page tables, a unique entry is created in the page/frame table, and the page table uses the current virtual address as an argument. accessed by The desired entry into the page table is then typically found after accessing multiple memories. At this point, a check is made to determine whether all system protocols are being followed, and if so, the real address of the requested page in storage is accessed from the page table. The byte portion of a virtual address is essentially a relative address, which is the same in real and virtual addresses. Thus, once the desired real page address portion of the virtual address has been translated, that byte portion is concatenated to the real page address location to create a real byte address in main memory. By the way, as is well known in modern virtual memory systems, in order to avoid having to translate virtual addresses every time memory is accessed, the table for translating virtual addresses to real addresses is now stored in a directory. Translation table (DLAT) or address translation table (Translation Look-aside Table: TLB)
A specific set of fast-accessible tables called or maintained in fast memory. Furthermore, the above
DLAT or TLB are also used in the present invention.
These tables or buffers are generally particularly fast or fast-accessible memories, and can be accessed much faster than the page frame tables described above. This therefore saves a lot of computer execution time since frequently used virtual addresses are stored in this table for fast access. The effectiveness of such a TLB address translation system is due to the fact that after the first access to a particular virtual page, there will be a very large number of accesses to that same virtual page during the execution of a given program. It is affirmed based on. Also,
As mentioned earlier, subsequent accesses are to different lines and bytes within a page, but the conversion from a virtual page to a real page is independent of which lines and bytes are addressed. First, the pages are the same. That is, the use of a TLB reduces the translation circuitry that must be performed (in the page frame table), thus providing a significant effect on the overall operation of the virtual memory system. As previously mentioned, virtual memory systems have been well known in computer technology for many years. Also,
It is also well known that virtual addresses must be translated into real addresses via some kind of relocation means or address translation means which should ensure the translatability of virtual addresses into real addresses.
Therefore, it is impossible to list here all the patents and papers related to virtual storage devices, but the following prior art is sufficiently illustrative as a typical address translation mechanism, and the present invention The inventors believe this is the closest known technology for . First, U.S. Pat. No. 3,828,327 to Berglund et al. describes a storage control technique for expanding memory by adding a most significant bit to an address. The most significant bit is not part of the program's apparent address, but is controlled by different system modes such as interrupt mode, I/O (input/output) mode, etc. This patent relates to a memory expansion system that incorporates appropriate address translation hardware. Second, U.S. Pat. No. 4,042,911 to Bourke et al. discloses a system for expanding main memory, which system apparently includes address translation means. However, none of these patents disclose the concept of virtual address extension or the provision of special lock bits to both the TLB and page frame table. ACM SIGPLAN published April 1982
MOTICES, Vol.17, No... “The 801” described in 4.
A paper by George Radin titled ``Minicomputer'' gives a general description of an experimental computer, a computer whose operating characteristics are such that the relocation mechanism has a specific purpose. U.S. Pat. No. 4,050,094 to Bourke et al. discloses a memory arrangement with an address relocation converter having a stack segmentation register. The unique segmentation registers disclosed are utilized to store allocated real addresses of physical blocks in main memory, rather than the extended virtual addresses utilized in the present invention.Mitchell Another US Pat. No. 4,251,860 discloses a memory addressing system with a virtual addressing device for realizing a large addressing memory.
This patent describes dividing a virtual address into a segment part and an offset part. However, the segment portion and the segment register connected thereto are used in the conventional method of dividing addresses, and their operating state is completely different from the address translation scheme of the present invention. US Pat. No. 4,037,215 to Birney et al. discloses a system very similar to that of US Pat. No. 4,050,094, discussed above. That is, in that system, columns of segmentation registers are used to specify particular blocks of real memory. The patent further teaches the use of "read-only" valid bits connected to certain segmentation registers.
However, these bits bear little resemblance to the special purpose lock bits provided in the hardware of the relocation mechanism of the present invention. No. 4,077,059 to Corde et al. discloses a hierarchical memory system with special controls to facilitate journaling and copyback. This patent describes a plurality of dual memories in which the current version of the data is held in one of the dual memories, changes in the data are signaled to the other of the dual memories, and in which This facilitates subsequent journaling and copyback operations. The hardware and control means of this patent also bear little resemblance to the lock bit system of the present invention. U.S. Pat. No. 4,064,948 to Hogan et al. discloses an address translation system. The system has means with counters, each having an entry into a Direct Translation Table (DLAT). U.S. Pat. No. 4,218,743 to Hoffman et al. constitutes one example of several patents previously listed relating to the relocation architecture of the IBM System/38. This patent is
This describes a simplification of how I/O handles addressing operations in virtual memory computer systems. Other patents related to virtual memory systems include U.S. Patent Nos. 4170039 and 4251860.
No. 4215402, etc. U.S. Pat. No. 4,020,466 to Corde et al. also discloses a memory system that incorporates special means to simplify journaling and copyback procedures. However, this patent has no bearing on the lock bit control means of the present invention. Lowlor, US Pat. No. 3,942,155, discloses a scheme for partitioning segments of a certain shape in a virtual memory system. However, the segmentation scheme employed in this patent is quite different from the segmentation scheme of this invention used to extend virtual addresses. Also, cite U.S. Pat. No. 4,215,402 as an example of the use of various hashing schemes to access virtual memory translation mechanisms. [Problems to be Solved by the Invention] An object of the present invention is to solve the problem from a virtual memory address to a real memory address by using a table that combines a hash address table and a reverse page table in a virtual storage device. The goal is to reduce the amount of hardware required to support the conversion operation. SUMMARY OF THE INVENTION The present invention relates to a combined table used in a system for converting virtual memory addresses to real memory addresses. This combined table utilizes hashed addresses formed from virtual addresses. The virtual address in the hash address is then indexed for further page table access. That is, the page table includes a virtual memory address that individually corresponds to each real memory address. The present invention provides a means and associated table for hashing a selected virtual address to create a hashed address. This combined table consists of a first list of individual virtual addresses for each memory address, and a second list that binds each hash address to its expected initial virtual address. The scheduled initial virtual address is comprised of a concatenated group of virtual addresses that, when hashed, create a combined hashed address. The system of the invention further includes means for searching each concatenated group in the table until a selected virtual address is located from the first list in response to the location of the virtual address. and means for accessing the real memory address of the located virtual address. [Embodiment] (A) Overview of virtual address-real address translation mechanism FIG. 1 is a schematic block diagram of a virtual address-real address translation mechanism according to an embodiment of the present invention. The conversion mechanism includes the logic necessary to interface with up to 16 Mbytes of storage. At this time, the storage device may be either interleaved or non-interleaved, and may be either static or dynamic. This conversion mechanism is functionally divided into three parts. That is, in FIG. 1, logic circuit 1 as a CPU storage channel (CSC) interface
0 is common front end circuit 12 (CFE)
, an address conversion logic circuit 14 , and a storage control logic circuit 16 . Among these, the common front end circuit 12 is for supplying an appropriate protocol to the address translation logic circuit 14 and the storage control logic circuit 16 from the storage channel. All information data passing back and forth via the storage channel will be processed by this common front end circuit 12. Address translation logic 14 also serves to translate virtual addresses received from the storage channel into real addresses used to access the storage device. To this end, address translation logic 14 includes address translation buffers (TLBs) configured as a collection of 16 mutually congruent, bidirectional classes. Furthermore, the address translation logic circuit 14 is provided with a logic circuit for automatically reloading the page table of the main memory into the input terminal of the TLB in response to a request. Storage control logic circuit 16 is for interfacing address translation logic circuit 14 to a storage device. When a dynamic memory is used as a storage device, refresh control of the dynamic memory is also performed by the storage control logic circuit 16. At this time, it is important to note that
This invention resides primarily in the general structural combination and functional operation of well-known computer circuits, devices, and functional units, and not in the specific detailed structure thereof. That's true. Therefore, the structures, control means, and arrangements of these well-known circuits, devices, and blocks will be illustrated using block representations and functional diagrams for ease of understanding, and only those portions that are closely related to this invention will be described in detail. Please understand that the diagram is shown below. This is because a detailed description of the structure would obscure the focus of this invention, and well-known parts that are not the focus of this invention are only functional descriptions and are not very obvious to a person skilled in the art. This is because I think there will be. Furthermore, various parts of these systems are
Appropriate emphasis or functional description has been placed to emphasize particularly relevant features of the invention. The following description will enable those skilled in the art to appreciate the possibilities and capabilities of the disclosed memory system, and the disclosure will enable those skilled in the art to apply and implement the memory system of the present invention in a variety of computer architectures. I believe it is sufficiently detailed. Now, let's return to the explanation of the embodiment. Whether an address is translated (that is, treated as a virtual address) or as a real address in the system of Figure 1 depends on the value of the translation mode bit (T bit) on the CPU storage channel (CSC). controlled. Each device that makes some request on the CSC will control the value of the conversion mode bit for each request. This conversion mode bit is taken from the appropriate area of the memory access instruction issued by the CPU. A T-bit value is created by the attached adapter in response to a storage access command issued by an I/O device. If the T bit is “1”, the memory address (check instruction, data load, data store)
is sent to the address translation logic circuit 14. Furthermore, if the T bit is "0", the storage address is treated as a real address. Note that within the scope of the architecture disclosed herein, storage protection is not enabled for storage requests that have not been sent to address translation logic circuit 14. However, the recording of references and changes
It is valid for all storage requests regardless of whether the storage request is sent to address translation logic 14 or not. Now, regarding the address sent to the address translation logic circuit 14, the translation operation proceeds as follows. Although described below as a process that proceeds strictly logically and sequentially, portions of these functions may be performed in parallel by various execution operations. The address translation mechanism of the present invention employs a "single level storage" address structure. This address translation mechanism provides support for the following in the preferred embodiment disclosed herein: (a) multiple independent virtual address spaces (b) 4 Gbyte address space (c) on-demand paging (d ) 2048-byte or 4096-byte pages (e) Storage protection mechanism (f) Shared segments for instructions and data (g) 128-byte line journaling and locking (h) Up to 16 GB real memory addressability ( i) references and modified bits for each real page; (j) hardware assistance for loading real addresses, invalidating address translation buffer (TLB) inputs, and storing exception addresses;
It is treated as if it were mapped onto a single 40-bit address space consisting of 2 segments. That is, the 32-bit address received from the CPU storage channel (CSC) is
The four most significant bits are used to convert to a 40-bit address (a "long virtual address") to select one of the 16 segment registers. This includes the 12-bit contents of the selected segment register and the 32-bit contents received from the SCS.
Remaining 28 bits after removing the top 4 bits
This is a concatenation of bits. This 40-bit virtual address is translated into a real address by an address translation mechanism to access the storage device. Note that it is easy to see that the size of the virtual address varies somewhat depending on the hardware. Now, at any given moment, we have only 4 GB of storage, i.e. 256 MB of capacity, designated as 16 segment registers.
Only 16 segments are addressable.
This fact allows the operating system to create multiple independent virtual address spaces by loading appropriate values into the segment registers. According to this method, in the marginal case, completely independent
We can create 256 4GB address spaces. But (like the core code)
Often some segments will be shared across multiple address spaces. A storage protection mechanism similar to the IBM System 370 storage protection mechanism is also provided on the 2K or 4K byte page substrate. Storage and fetch protection is supported by protection keys (equivalent to the keys in the IBM System 370's program status word) that are independently specified for each 256 Mbyte segment. Additionally, the persistent storage class is supported by a set of "lock bits" associated with each virtual page. This lock bit increases the granularity of storage protection (128 bytes for a 2K page or 256 bytes for a 4K page).
It effectively extends to a "line" of memory, allowing the operating system to detect changes to retained variables and automatically journalize the changes. Note that the protected storage class used here means storage that resides on disk file storage. (B) Definition of special terms used in this example The following terms will be used throughout the following explanation, and will be defined here in advance to simplify the explanation. Byte Index: A number ranging from 0 to 2047 for 2K byte pages and 0 to 4095 for 4K byte pages that identifies a byte within a page or page frame. It is for the purpose of
For a 2K byte page, this byte index starts from the lower 11 bits of the effective address.
In the case of a 4K byte page, it is taken from the lower 12 bits of the effective address. Modified bit: One bit associated with each page frame individually.The modified bit is set to “1” whenever the next memory reference (write only) is made to that page frame. Ru. Effective Address: A 32-bit storage channel address generated by a device on the storage channel. This effective address may be the address output by the host CPU for a fetch instruction, a data load, a data store, or even a DMA (direct memory access) address.
The address may be an address generated by an I/O device on a storage channel, such as an address. Line: A 128-bit portion of a page on a 128-byte boundary. These 128 bits are the number of memories controlled by lock bits (described later). Lock Bit: One bit of a set of 16 bits connected to each page of a retained storage segment. Each lock bit is connected to one line of storage. The values of the transaction ID, write bit, and lock bit in a given line then determine whether to accept or deny a storage address request within the protected storage segment. Page: A storage area with a capacity of 2048 bytes on a 2048-byte boundary, or a storage area with a capacity of 4096 bytes on a 4096-byte boundary. “Page” correctly refers to virtual memory,
A “page frame” indicates real memory. but,
The term "page" is conventionally used to refer to both virtual and real memory. Page frame: 2048 on a 2048 byte boundary
A storage area with a capacity of 4096 bytes, or a storage area with a capacity of 4096 bytes on a 4096-byte boundary. The page exists in a page frame or on external storage (for example, a disk). Page table: Contents in main memory that are a combination of a hash anchor table and a reverse page table. This page table is used to translate virtual addresses to their corresponding real addresses. Note that the page table is sometimes referred to as HAT/IPT. Protection Key: A one-bit value in each segment register that indicates the privilege level of the currently executing process with respect to accessing data within a given segment. This protection key is similar in function to the IBM System 370's program status word key, except that it is provided for each segment individually rather than for all addressable memory as a whole. Real address: This is the result obtained from the conversion operation, and the lower 11 (or 12) bits of the effective address contain the real page index (described later) 10 to 13.
It is a concatenation of bits. Actual page index: 0 to 8192 (13 bits)
This is a number in the range of , and is used to identify page frames in real storage. In some embodiments, the 13-bit value may be limited to about 10 bits, which would limit the maximum amount of real memory to be supported to 2K byte pages of 2M bytes. Reference bit: One bit connected to each page frame. This reference bit is set to "1" whenever the next storage reference signal (read or write) is issued in a frame. Segment ID: A number in the range of 0 to 4095 (12 bits) for identifying a 256 MB virtual storage segment. Segment IDs concatenated with virtual page indexes specify individual pages within the 40-bit virtual address space. Storage key: A 2-bit value in the contents of each TLB (described later), which indicates the level of storage protection linked to a unique page. This key is similar in function to the storage keys associated with each memory page in the IBM system 370. TLB: Address translation buffer (Translation)
Look-aside Buffer). This TLB is virtual-
This is hardware with real mapping.
Note that in some embodiments, the TLB may include only a portion of this mapping at any given time. In addition to the mapping, the TLB may also contain other information associated with the TLB, such as translation identification signals, storage keys, lock bits, and the like. Transaction ID: 0 to 255 (8 bits)
is a number in the range , to identify the ``owner'' of the set of lock bits currently loaded into the TLB. Virtual address: The segment ID and the lower 28 bits of the effective address are converted into the lower 28 bits of the address translation mechanism.
It is a 40-bit address formed by combining with 28 bits. Virtual page index: A number ranging from 0 to 131072 (17 bits) for a 2K byte page, or 0 to 65536 for a 4K byte page.
(16 bits) to identify a page within a virtual memory segment. When the virtual page index is 17 bits long, the effective address range is 4 to 4.
20 bits, or if the range is 16 bits, it will occupy 4 to 19 bits of the effective address. (C) Hardware for the address translation mechanism Let's now explain the hardware required to support the address translation mechanism. First, the TLB has an arbitrary number of contents, and each of these contents is for controlling translation of a virtual address of one page into a real address. The details of TLB configuration are implementation dependent.
Two implementations are then possible. a content addressable memory (CAM) addressed by segment ID, and a virtual page index with one content per real storage frame. The CAM index is considered to be equal to the real page index. Also,
A federated set of TLBs may be considered addressed by some low order bits of the virtual page index. Additionally, the real page index will be contained within a field with the content of the TLB. The contents of each TLB can be read and written individually by the CPU using an IOR (input/output read) instruction or an IOW (input/output write) instruction. The contents of the TLB include the following fields: First, the 32-bit effective address input (from the CPU or I/O device) is expanded to 40 bits by concatenating the segment identification address to this effective address. . This virtual address is then transferred to translation hardware and translated to an equivalent real address. Now, let us describe the process by which a virtual address is translated into a real address.
I will show it in detail below. (D) Address conversion operation The highest four bits of the input valid address are given to the segment table as an index and are used to select one of the 16 segments. Now, referring to Figure 2,
The above is the sequential allocation of entry numbers 0 to 15.
There are 16 segments. As shown in the figure,
From the selected segment register, a 12-bit segment ID (segment identification bit) and
One segment special bit and one key bit are obtained. Special segment bits and key bits are used for access verification described below. Next, referring to FIG. 3, the 12-bit segment ID is combined with the 28-bit address from the 4th bit to the 31st bit of the input effective address to form a 40-bit virtual address. Of this effective address, the lower 11 bits for a 2K page and the lower 12 bits for a 4K page are used as a byte address (byte index) for the selected real page. The remaining 29 bits (28 bits for 4K pages) are then transferred to the conversion hardware. Referring now to FIG. 4, the address translation system shown in this figure uses an address translation buffer (TLB) to perform translations of frequently used virtual addresses. Additionally, hardware is used to automatically update the contents of the TLB from the main memory page table when a new virtual address is brought into the TLB for translation. The format of each TLB is shown in FIG. The system of Figure 4 uses two TLBs, each with 16 entries (content), ie, a set of 16 congruent classes and associative bidirectionalities. The lower four bits of the virtual page index are used to address both TLBs in parallel. The address tag entry (labeled "tag" in Figure 4) in each TLB is a segment that is combined with the remaining bits of the virtual page index (25 bits for 2K pages, 24 bits for 4K pages). Compare with ID. Then, if the segment ID and address tag entry are equal and the contents of the TLB are valid (as indicated by the valid bit V in Figure 5), then the federated TLB contains the translation information corresponding to the given virtual address. It will have . Now, the real page number field (“RPN” in Figures 4 and 5) in the selected TLB entry.
) contains the number of the real page in main memory that is mapped to the given virtual address. if,
If this number is not a special segment (see Figure 2), the key bit from the TLB entry and the key bit from the segment register are used to determine whether storage protection has been violated before access is allowed. A check is made on the access. In addition, the special segment bit of the segment register (see Figure 2)
If this number is a special segment, lock bit processing is performed before access is granted, as shown by . Now, the memory protection function will be explained next.
This function is to handle special segments. If access is allowed, the main memory is accessed and the reference bits REF (Figure 4) and change bits CHG linked to the page are accessed.
(Fig. 4) is updated. The operation of setting reference bits and change bits will be explained later. Furthermore, if two TLBs are compared and no match is found, the address translation logic circuit 14 indicates that an error has been made from the main memory page table.
An attempt will be made to reload the contents of the TLB.
Main memory page tables reside in real memory,
Logically, it consists of two parts: the hatch anchor table (HAT). this
The HAT allows all virtual addresses to be mapped to real addresses using a hashing function. Also, an inverse page table (IPT) is for indicating the virtual address associated with each real page frame (if any). The reverse page table is organized as an array of contents indexed by real page number, each of which includes an associated segment ID and virtual page index. By the way, determining a virtual address for a given real address is easy. This is because the IPT is indexed by real page number. On the other hand, in order to efficiently determine the real address for a given virtual address, it is necessary to map the virtual address to an anchor point and a chain of entry contents to resolve hash collisions. be. This will be well understood by those skilled in the art. Although the Hatch Anchor Table (HAT) is physically integrated into the Inverse Page Table (IPT) for reasons of hardware efficiency, it is logically separate from the IPT. As shown in FIG. 6, the hash function first converts the virtual address to an index of an entry in the HAT. And this
A HAT index specifies the first part of a chain of IPT entries (real pages) with the same index as the HAT index. Searching for a chain of IPT entries that match a virtual address will either yield the IPT index (i.e., the real address) corresponding to the desired virtual address, or the search will terminate with no match (if the page is (not mapped).
In this example, for each page of real memory,
One HAT entry corresponds to one IPT entry. The translation of a virtual address to a real address consists of the selected lower bits of the effective address and the segment
This is done by exclusive ORing with the bits of the ID. This "hatched" address is used to index into the HAT. The contents of the selected HAT also serve as a pointer to the starting point of the list of IPT entries to be searched for a given virtual address. The contents in the list of IPT entries to be searched are interconnected by pointers in each entry that specify the next IPT entry to be searched. There is a flag bit in the IPT entry that is used to indicate the end point of the search chain. Note that there may be multiple virtual address contents within one IPT chain to be searched. This is because the hashing function may generate the same HAT address for different valid addresses. Now, as mentioned earlier, for reasons of hardware efficiency, the HAT and IPT are combined into a single structure that is addressable by a single index structure. That is, for each page of real memory, this combined HAT and
There is one entry in the IPT. For example, 1MB of real storage organized as 2KB pages requires 512 entries,
512K bytes of real storage organized as 4K byte pages requires 128 entries.
The format of this combined HAT and IPT page entry is shown in FIG. 7th
A page entry in the figure represents one page of real memory. HAT/IPT has an area of 16 bytes for each page entry,
Start at an address that is a multiple of the size of the table. The first word of each page entry contains an address tag formed by combining the segment ID and the virtual page index.
The address tag is 29 bits for a 2K byte page, and 29 bits for a 4K byte page.
Note that it is 28 bits. That is, if a 4K byte sized page is used, a 28 bit long address tag is stored in bits 3-30 of the first word, with the second bit reserved. This first word includes two key bits for memory protection, which will be described later. The second word contains the HAT pointer, the IPT pointer, and a valid bit for each pointer called the empty bit (E) and the last bit (L). The uses of these fields will be described later. The third word contains a write protect bit, a lock bit, and a TID (transaction ID) for each special segment. The uses of these fields will also be described later. The 4th word is TLB (address translation buffer)
It is not used for reloading, but is reserved for possible future use. The base address of the HAT/IPT is a field in the translation control register (see Figure 12),
Used to calculate the start address of the main memory page table. This base address of the HAT/IPT is multiplied by the value in the table (shown immediately below) depending on the storage capacity and page size to obtain the value of the start address of the main memory page table. The table also shows the HAT/IPT size for each storage capacity and page size.

【表】 (E) ハツシユアドレステーブル(HAT)のアド
レス生成 すでに述べたように、HATのインデツクス
は、セグメントIDのうちの選択した複数のビ
ツトと、有効アドレスの複数のビツトとの排他
的論理和をとることにより算出される。このと
き使用されるビツトの数は、生成されるインデ
ツクスがHAT/IPTのn個のエントリのうち
1つを選択するように選定される。このハツシ
ユ動作については第6図に示される。また、
HATインデツクスの生成に使用されるビツ
ト、は表(すぐあとに示す)にリストされて
いる。選択されたHATエントリの記憶アドレ
スは、[HAT/IPT基底アドレス]+[HATイ
ンデツクス]により算出される。 次に選択されたHATのエントリがアクセス
されて、IPT検索チエーンが空であるかどうか
を検知するため空ビツトE(第6図)がチエツ
クされる。もし空ビツトが“1”であれば、所
与の仮想アドレスにマツプされているページが
ない、ということなので、後述するように、
“ページフオールト”が報告される。また空ビ
ツトが“0”であれば、IPT検索チエーン中の
エントリが存在する、ということなので、IPT
中のエントリが検索される。その後、選択され
たHATエントリのHATポインタフイールド
がIPT検索チエーンの起点のポインタとして使
用される。
[Table] (E) Address generation for hash address table (HAT) As already mentioned, the HAT index is based on the exclusive logic between selected bits of the segment ID and multiple bits of the effective address. Calculated by taking the sum. The number of bits used at this time is chosen such that the index generated selects one of the n entries of the HAT/IPT. This hashing operation is shown in FIG. Also,
The bits used to generate the HAT index are listed in the table (shown immediately below). The storage address of the selected HAT entry is calculated by [HAT/IPT base address] + [HAT index]. The selected HAT entry is then accessed and the empty bit E (FIG. 6) is checked to detect whether the IPT search chain is empty. If the empty bit is “1”, it means that there is no page mapped to the given virtual address, so as explained later,
A “page fault” is reported. Also, if the empty bit is “0”, it means that an entry exists in the IPT search chain, so IPT
The entries inside are searched. The HAT pointer field of the selected HAT entry is then used as the pointer to the origin of the IPT search chain.

【表】 ドを示す。
以前にアクセスされたHATポインタはIPT
への起点インデツクスとして使用される。そし
て、第1のIPTエントリの記憶アドレスは、
[HAT/IPT基底アドレス]+[HATポインタ]
により算出される。 次に、IPT内の第1のエントリにアクセスが
行なわれて、そのアドレスタグが所与の仮想ア
ドレスに比較される。もし、そのアドレスタグ
と仮想アドレスとが等しければ、その仮想アド
レスに割り付けられた実ページがロケート(配
置)され、フオールトするTLBエントリを再
ロードできるようになる。また、そのアドレス
タグと仮想アドレスとが等しくなければ、IPT
ポインタにアクセスすることによりIPTの検索
が続けられる。そのIPTポインタの値は、
[HAT/IPT基底アドレス]+[HATポインタ]
により算出される。次に、IPTポインタにアク
セスが行なわれて、IPT検索チエーン中にまだ
エントリが他にあるかどうかを検知するため最
終ビツトL(第7図)のチエツクが行なわれる。
そして、もし最終ビツトが“0”であると、こ
れは他にもエントリがあるということだから、
検索プロセスが続けられる。また、もし最終ビ
ツトが“1”であれば、検索すべきIPTエント
リがないということだから、“ページフオール
ト”が報告される。 検索すべきIPTエントリがある場合、検索を
行うための次のIPTエントリのアドレスは、
[HAT/IPT基底アドレス]+[IPTポインタ]
により算出される。このアドレスは、IPT検索
チエーン中の次のエントリにアクセスするため
に使用され、その選択されたエントリ中に含ま
れるアドレスタグが所与の仮想アドレスに比較
される。そして、もしそのアドレスタグとその
仮想アドレスが等しいなら、その仮想アドレス
に割り付けられた実ページがロケートされ、フ
オールド状態のTLBエントリが再ロード可能
となる。また、もしそのアドレスタグとその仮
想アドレスとが等しくないなら、検索すべき次
のエントリに対するポインタにアクセスするこ
とにより検索プメセスが続けられる。次のエン
トリに対するポインタのアドレスは[HAT/
IPT基底アドレス]+[IPTポインタ]による算
出される。次にこのロード(第7図において、
HATポインタとIPTポインタとを含むワード)
にアクセスが行なわれ、IPT検索チエーン中に
まだ他にエントリがあるかどうかを検知するた
め最終ビツトL(第7図)のチエツクが行なわ
れる。そして、もし最終ビツトが“1”であれ
ば、検査すべきIPTエントリはもうないという
ことだから、“ページフオールト”が報告され
る。また、もし最終ビツトが“0”であれば、
他にもまだIPTエントリが残つているというこ
とだから、検索プロセスが続けられる。この時
点でのIPTポインタは、上述したプロセスを実
行することによりそれ以降のエントリにアクセ
スするために用いられるが、このことは、IPT
エントリ中のアドレスタグが所与の仮想アドレ
スに等しくなるか、それらの一致が見出されな
いで、これ以上のエントリが検索チエイン中に
存在しないということを最終ビツトが表示する
まで続けられる。 ここで、仮想アドレスをIPTエントリのイン
デツクス(及びそれに対応する実アドレス)に
変換するために実行すべきステツプの概要につ
いて順次示してみよう: ステツプ(a):仮想ページ番号の下位13ビツト
を選択する。この13ビツトは、4Kバイトペー
ジが使用されているなら有効アドレスの7〜19
ビツトを占め、2Kバイトページが使用されて
いるなら有効アドレスの8〜20ビツトを占める
ことになる。 ステツプ(b):次に、有効アドレスの0〜3ビ
ツトにより指定されたセグメントレジスタの12
ビツトの内容を選択する。その12ビツトの左端
に“0”ビツトを結合することにより13ビツト
のフイールドを形成する。 ステツプ(c):上記ステツプ(a)とステツプ(b)と
で得られた各々13ビツトのフイールドの排他的
論理和をとり、13ビツトのハツシユアンカーテ
ーブル番号を作成する。 ステツプ(d):ステツプ(c)で得られた値を左方
へ4ビツトシフトさせる。これにより、所望の
HATエントリを物理的に含むIPTエントリの
始点のバイトオフセツトが行なわれたことにな
る。 ステツプ(e):HAT/IPTエントリのアドレ
スを算出する。この計算は、IPTの開始アドレ
スに、ステツプ(d)で得られた結果を加算するこ
とにより行なわれる。もし、IPTが好適な2乗
バイトの境界上で開始するように束縛されてい
るなら、上記の“加算”を行うかわりに論理
ORをとつたり、2つの値を結合させてもよ
い。 ステツプ(f):ここで、IPTチエーンが空かど
うかのチエツクを行う。そのためにはHAT/
IPTエントリ中で“E”(空)ビツト(第7図
参照)を調べる。もしE=1ならIPTチエーン
が空(HATポインタが無効)ということだか
ら、検索は不成功に終つたことになる。すなわ
ち、仮想ページはマツプされない。 ステツプ(g):もしIPTチエーンが空でないな
ら、アドレスされたHAT/IPTエントリから
HATポインタを選択する。この13ビツトの
HATポインタ(第7図参照)の値は、同一の
ハツシユ値(ステツプ(c)参照)をもつエントリ
のチエーン内で第1のIPTエントリのインデツ
クスとなる。 ステツプ(h):IPTインデツクスの値を左に4
ビツトシフトさせる。これにより、仮想アドレ
スとの一致をチエツクすべきIPTエントリの始
点のバイトオフセツトが行なわれたことにな
る。 ステツプ(j):IPTエントリのアドレスを算出
する。このことは、IPTの開始アドレスに、ス
テツプ(h)で得られた結果を加算することにより
行なわれる。もしIPTが好適な2乗バイトの境
界上で開始するように束縛されているなら、上
記の“加算”を行うかわりに、論理ORをとる
か、または2つの値を結合させてもよい。 ステツプ(k):仮想アドレスとの一致を調べる
ため比較を行う。すなわち、セグメントIDに
IPTエントリから得た仮想ページ番号を結合し
た値と、有効アドレスによつて指定されたセグ
メントレジスタの内容に有効アドレス中の仮想
ページ番号を結合した値とを比較する。 ステツプ(l):もしステツプ(k)での比較の結
果、両者が一致していれば、検索は成功裡に終
了する。このときのエントリは所望の仮想アド
レスに対応するものであり、そのインデツクス
番号は要求される実ページ番号に等しい。 ステツプ(m):もし、ステツプ(k)での比較
の結果、両者が一致していなければ、チエーン
の最終であるかどうかをチエツクする。そのた
めのはIPTエントリ中の“L”(最終)ビツト
を調べる。もしL=1であれば、これはチエー
ンの最終IPTエントリであることを示し、検索
は不成功裡に終了する。すなわち、仮想ページ
はマツプされない。 ステツプ(n):もし、最終チエーンでない
なら、IPTエントリからIPTポインタフイール
ドを選択する。この13ビツトの値は調べるべき
次のIPTエントリのインデツクスとなる。 ステツプ(p):ステツプ(h)に戻る。 さて、HATとIPTとを単一のテーブル構造
中に結合させることの意義は、それにより単一
のインデツクス構造によりアドレスが可能とな
つたことにある。このことは7A図を参照すれ
ばよりよく理解されよう。すなわち第7A図は
7つの代表的なページエントリをもつメモリの
構造をあらわしている。そして、その各ページ
エントリはそれぞれ第7図の単一のページエン
トリと等しい構造を有している。これら7つの
ページエントリは7ページの実記憶:10、20、
30、40、50、60及び70をあらわす。実メモリ中
にはそのようなページが数百から数千、存在す
ると考えてよい。しかしながら、選択したペー
ジエントリ中のHATポインタやIPTポインタ
のようなデータのインデツクス付けやアドレス
付けは単一の基底アドレスレジスタ72に記憶
された情報に基づき行なわれるのである。尚、
このレジスタ72は第12図の変換制御レジス
タに関連して後に述べるHAT/IPTフイール
ド、すなわち基底アドレスレジスタと等価なも
のである。 この時点で、第7A図のメモリ構成を用い
て、個別の仮想アドレスに対して実メモリペー
ジがどのようにロケートされるかを考慮してみ
れば、本発明が一層よく理解できると思われ
る。ところで、第7A図に関連してこのあと展
開してゆく処理手続については、それらの機能
及び演算につき既に第6,7図に関連して説明
済であることに注意頂きたい。従つて、ここで
は、メモリ構成内で実ページアドレスをロケー
トすべきこれらの機能がどのように使用される
か、ということにつき段階的に説明を進めてみ
たい。さて、仮想アドレスはハツシユ機能手段
71内で、前に述べたような方法でハツシユさ
れて、ハツシユアドレスが作成される。このバ
ツシユアドレスは、テーブルエントリアドレス
計算手段75に供給される。テーブルエントリ
アドレス計算手段75は、レジスタ72の基底
アドレスから、アクセスすべきHATポインタ
を含む特定のページエントリまでのオフセツト
を計算するためのものである。そこで、この
HATポインタがページエントリ50に含まれ
ていると仮定しよう。すると、テーブルエント
リアドレス計算手段75はポインタ手段73を
介してページエントリ50にアクセスすること
になる。次に、ページエントリ50上のHAT
ポインタがフエツチされ、バス74を介してテ
ーブルエントリアドレス計算手段75に加えら
れる。すると、テーブルエントリアドレス計算
手段75が基底アドレスから、ページ50上の
ポインタによつて指定された特定のページエン
トリにアクセスするための適当なオフセツトを
算出する。ここで、ページエントリ20が指定
されたものと仮定しよう。このことは、ハツシ
ユ機能手段71からハツシユアドレスが供給さ
れたときに、それと同一のハツシユアドレスを
生成させる(アドレスタグによつて代表され
る)仮想アドレスからなる一群のページのうち
先頭のものがページ20である、ということを意
味する。 次に、この先頭ページエントリが、求められ
ている仮想アドレス(その求められている仮想
アドレスのアドレスタグは、ハツシユ機能手段
71に加えられる仮想アドレスのアドレスタグ
に比較される。)を含んでいるかどうかが判断
される。そして、もしページ20のこの仮想アド
レスと一致するものがないなら、連結された仮
想アドレス群の中の次のページエントリにアク
セスする場合につきすでに述べたように、ペー
ジエントリ20中のIPTポインタが基底として
使用される。このことは、ハツシユされたポイ
ンタの情報をバス74を介してテーブルエント
リアドレス計算手段75に送ることにより達成
させる。すなわち、ハツシユされたポインタの
情報を受け取つたテーブルエントリアドレス計
算手段は、基底アドレスから次の連結されたペ
ージエントリ(第7A図においてはページエン
トリ30がそれに相当する)までのオフセツト
を算出する。 次に、ページエントリ30中のアドレスダグ
と、加えられた仮想アドレスのアドレスタグと
の比較が行なわれる。そして、これらが一致し
なければ、ページエントリ30中のIPTポイン
タが、既に述べたように、次の連結されたペー
ジエントリにアクセスするために使用される。
言いかえると、同一のハツシユアドレスを併用
する一群の仮想アドレスのうちの一つが見出さ
れるような次のページエントリを連結するため
に、IPTポインタが使用されているのである。
この手続は、既に述べたように、加えられた仮
想アドレスと、アクセスされる特定のページ中
のアドレスとで一致が見出されるか、さもなけ
れば、一致が存在しないことが判明するまで続
けられる。そこで、ページエントリ30上で一
致があつたものと仮定しよう。すると、ページ
30が加えられた仮想アドレスの実アドレスとな
る。 本発明においてHATとIPTとの結合したテ
ーブルが使用されていることは第7図に示され
ているが、このことは、第6図に図式的に示し
たような分離したHATとIPTとを使用するシ
ステムに比較して、著しいハードウエアの節減
をもたらし得ることが第7A図から見てとれよ
う。さらに、第7A図のメモリ構造は単一の結
合テーブルを使用しているので、基底アドレス
レジスタとテーブルエントリアドレス計算手段
とはそれぞれ一個づつあればよい。ところがも
しそうでなく、第6図に示すようにHATと
IPTとが分離している場合、各テーブルにつき
基底アドレスレジスタと、テーブルエントリ計
算手段とがそれぞれ個別に必要である。また、
各テーブルにつきポインタ及びフエツチ手段も
個別に必要である。 (E) TLB再ロード もしアドレスフイールドについて所与の仮想
アドレスと等しいIPTエントリが見出された
ら、フオールト状態のTLBエントリが再ロー
トされる。この再ロード手続は、フオールト状
態にある仮想アドレスの合同なクラスに対して
最も以前に使用されたTLBエントリを選出す
ることと、その所与の仮想アドレスタグフイー
ルドについての選択したエントリ、実ページ番
号及びキービツトをロードすることからなる。
もし、このIPTエントリがセグメントレジスタ
中の特殊セグメントビツト(第2図)により表
示された特殊セグメントであるなら、第5図に
示す書き込みビツト(W)、トランザクシヨン
ID(TID)及びロツクビツトも再ロードされ
る。 各合同クラスにおいてどのTLBエントリが
最も前に使用されたのかを決定するためにはハ
ードウエアが使用される。そして、仮想アドレ
スの下位ビツトによつて合同グラスが決定され
るので、どのTLBが選択されたエントリを置
換されているかを決定しさえすればよい。そこ
で最も以前に参照された所与の合同クラス中の
エントリを、2つのTLBのうちどちらのTLB
が有するかに基づき、どちらか一方のTLBが
選択される。 所与の合同クラスにつき最も以前に使用され
たTLBのエントリが決定されると、その選択
されたTLBエントリが再ロード可能となる。
このとき、アドレスタグフイールドとキービツ
トとが主記憶に収められているIPTエントリか
ら再ロードされる。このIPTエントリのアドレ
スは前にIPT検索プロセスで算出されたもので
ある。そして、その検索プロセスで算出された
IPTインデツクスは実ページ番号に等しいの
で、この値はTLB中の実ページ番号フイール
ドを再ロードするために使用される。もし、こ
の値が、セグメントレジスタ中の特殊セグメン
トビツトにより表示された特殊セグメントであ
れば、トランザクシヨンIDとロツクビツトも
再ロードされる。尚、このトランザクシヨン
IDとロツクビツトとは、選択されたIPTエン
トリ中の第3のワード(第7図参照)にアクセ
スすることにより再ロードされるのである。 (F) 記憶アクセス制御 この実施例のアドレス変換機構は2つのアク
セス制御手段を備えている。第1のアクセス制
御手段は、特殊でないセグメントに適用される
ものであり、実記憶の各ページに対する読み出
し/書き込み保護を行う。第2のアクセス制御
手段は、専ら特殊セグメントに適用されるもの
であり、接続型データを支持するために使用さ
れる。尚、これらのアクセス制御手段は変換型
のアクセスにのみ適用される。そして、その規
制違反が一方のアクセス制御手段により検知さ
れると、記憶装置へのアクセスが停止される。
但し、それには例外があり、その例外について
はあとで述べる。 (G) 記憶保護処理 記憶保護処理は特殊でないセグメントについ
てのみ適用される。すなわち、TLBにより実
アドレスと仮想アドレスとの対応が一たん定ま
ると、適正なアクセスの権限を保証するため
に、要求されたアクセスが検証される。この検
証手段により、アクセスがないことや、読み出
しのみや、読み出し/書き込み等の情報を各ペ
ージにマークすることが可能となる。 アクセス制御は、選択したセグメントレジス
タ中の1ビツトの保護キー、及びTLBエント
リ中の2ビツトキー及びアクセスがロード状態
かストア状態か否かの関数である。 アクセスは次の表に示すように制御され
る:
[Table] Shows do.
Previously accessed HAT pointers are IPT
used as a starting point index. And the storage address of the first IPT entry is
[HAT/IPT base address] + [HAT pointer]
Calculated by The first entry in the IPT is then accessed and its address tag is compared to the given virtual address. If the address tag and virtual address are equal, the real page allocated to that virtual address is located, allowing the faulting TLB entry to be reloaded. Also, if the address tag and the virtual address are not equal, the IPT
The IPT search continues by accessing the pointer. The value of that IPT pointer is
[HAT/IPT base address] + [HAT pointer]
Calculated by The IPT pointer is then accessed and the last bit L (FIG. 7) is checked to see if there are any more entries in the IPT search chain.
And if the final bit is “0”, this means there are other entries, so
The search process continues. Also, if the final bit is "1", it means that there is no IPT entry to be searched, and a "page fault" is reported. If there is an IPT entry to search, the address of the next IPT entry to search is
[HAT/IPT base address] + [IPT pointer]
Calculated by This address is used to access the next entry in the IPT search chain and the address tag contained in that selected entry is compared to the given virtual address. If the address tag and the virtual address are equal, the real page allocated to that virtual address is located and the folded TLB entry can be reloaded. Also, if the address tag and the virtual address are not equal, the search process continues by accessing the pointer to the next entry to search. The address of the pointer to the next entry is [HAT/
IPT base address] + [IPT pointer]. Next, this load (in Figure 7,
(word containing HAT pointer and IPT pointer)
is accessed and the final bit L (FIG. 7) is checked to detect if there are any more entries in the IPT search chain. If the final bit is "1", it means that there are no more IPT entries to check, and a "page fault" is reported. Also, if the final bit is “0”,
This means there are more IPT entries left, so the search process can continue. The IPT pointer at this point is used to access subsequent entries by executing the process described above;
This continues until a final bit indicates that either the address tag in the entry is equal to the given virtual address or no match is found and there are no more entries in the search chain. Here is an overview of the steps that must be performed to convert a virtual address to an index of an IPT entry (and its corresponding real address): Step (a): Select the lower 13 bits of the virtual page number. . These 13 bits are valid addresses 7 to 19 if 4K byte pages are used.
If 2K byte pages are used, it will occupy 8 to 20 bits of the effective address. Step (b): Next, 12 of the segment register specified by bits 0 to 3 of the effective address.
Select the bit content. A 13-bit field is formed by connecting a "0" bit to the left end of the 12 bits. Step (c): Exclusive OR the 13-bit fields obtained in step (a) and step (b) above to create a 13-bit hash anchor table number. Step (d): Shift the value obtained in step (c) 4 bits to the left. This allows the desired
This means that a byte offset of the starting point of the IPT entry that physically contains the HAT entry has been performed. Step (e): Calculate the address of the HAT/IPT entry. This calculation is performed by adding the result obtained in step (d) to the starting address of the IPT. If the IPT is bound to start on a preferred squared byte boundary, then instead of doing the "addition" above,
You can also perform an OR or combine two values. Step (f): Here, it is checked whether the IPT chain is empty. For that purpose, HAT/
Examine the "E" (empty) bit (see Figure 7) in the IPT entry. If E=1, it means that the IPT chain is empty (HAT pointer is invalid), and the search ends in failure. That is, virtual pages are not mapped. Step (g): If the IPT chain is not empty, from the addressed HAT/IPT entry
Select HAT pointer. This 13 bit
The value of the HAT pointer (see Figure 7) becomes the index of the first IPT entry in the chain of entries with the same hash value (see step (c)). Step (h): Move the IPT index value to the left by 4
Bit shift. This means that the byte offset of the starting point of the IPT entry whose match with the virtual address is to be checked has been performed. Step (j): Calculate the address of the IPT entry. This is done by adding the result obtained in step (h) to the starting address of the IPT. If the IPT is constrained to start on a suitable squared byte boundary, instead of doing the "addition" described above, one may perform a logical OR or combine the two values. Step (k): Compare to check for match with virtual address. i.e. in segment id
The value obtained by combining the virtual page number obtained from the IPT entry is compared with the value obtained by combining the virtual page number in the effective address with the contents of the segment register specified by the effective address. Step (l): If both match as a result of the comparison in step (k), the search ends successfully. The entry at this time corresponds to the desired virtual address, and its index number is equal to the requested real page number. Step (m): If the result of the comparison in step (k) is that they do not match, check whether it is the last in the chain. To do this, check the "L" (last) bit in the IPT entry. If L=1, indicating this is the last IPT entry in the chain, the search ends unsuccessfully. That is, virtual pages are not mapped. Step (n): If it is not the last chain, select the IPT pointer field from the IPT entry. This 13-bit value becomes the index of the next IPT entry to examine. Step (p): Return to step (h). Now, the significance of combining HAT and IPT into a single table structure is that it enables addressing using a single index structure. This will be better understood with reference to Figure 7A. That is, FIG. 7A represents the structure of a memory having seven representative page entries. Each page entry has the same structure as the single page entry shown in FIG. These 7 page entries are 7 pages of real memory: 10, 20,
Represents 30, 40, 50, 60 and 70. It can be assumed that there are hundreds to thousands of such pages in real memory. However, indexing and addressing of data such as HAT pointers and IPT pointers in selected page entries is done based on information stored in a single base address register 72. still,
This register 72 is equivalent to the HAT/IPT field, ie, the base address register, described below in connection with the translation control register of FIG. At this point, the present invention may be better understood by considering how real memory pages are located for individual virtual addresses using the memory organization of FIG. 7A. By the way, it should be noted that the functions and operations of the processing procedures that will be developed later in connection with FIG. 7A have already been explained in connection with FIGS. 6 and 7. Therefore, we will now provide a step-by-step explanation of how these functions are used to locate real page addresses within a memory structure. The virtual address is now hashed in the hashing function means 71 in the manner described above to create a hashed address. This basing address is supplied to table entry address calculation means 75. The table entry address calculation means 75 is for calculating the offset from the base address of the register 72 to a specific page entry containing the HAT pointer to be accessed. So, this
Assume that a HAT pointer is included in page entry 50. Then, the table entry address calculation means 75 accesses the page entry 50 via the pointer means 73. Then HAT on page entry 50
A pointer is fetched and applied via bus 74 to table entry address calculation means 75. Then, the table entry address calculation means 75 calculates an appropriate offset from the base address for accessing the specific page entry specified by the pointer on the page 50. Let us now assume that page entry 20 has been specified. This means that when a hash address is supplied from the hash function means 71, the first page of a group of virtual addresses (represented by address tags) generates the same hash address. This means that page 20 is page 20. Next, does this first page entry contain the sought virtual address (the address tag of the sought virtual address is compared with the address tag of the virtual address added to the hash function means 71)? It will be decided whether And if there is no match for this virtual address of page 20, then the IPT pointer in page entry 20 is used as. This is accomplished by sending the hashed pointer information via bus 74 to table entry address calculation means 75. That is, the table entry address calculation means that receives the hashed pointer information calculates the offset from the base address to the next connected page entry (corresponding to page entry 30 in FIG. 7A). A comparison is then made between the address tag in page entry 30 and the address tag of the added virtual address. And if they do not match, the IPT pointer in page entry 30 is used to access the next concatenated page entry, as described above.
In other words, the IPT pointer is used to concatenate the next page entry in which one of a group of virtual addresses with the same hash address is found.
This procedure continues, as previously described, until a match is found between the added virtual address and an address in the particular page being accessed, or else it is determined that no match exists. Therefore, let us assume that there is a match on page entry 30. Then the page
It becomes the real address of the virtual address with 30 added. The use of a combined HAT and IPT table in the present invention is shown in FIG. It can be seen from Figure 7A that significant hardware savings can be achieved compared to systems used. Further, since the memory structure of FIG. 7A uses a single association table, only one base address register and one table entry address calculation means are required. However, if this is not the case, as shown in Figure 6, the HAT and
If the IPT is separate, a separate base address register and table entry calculation means are required for each table. Also,
Separate pointer and fetch means are also required for each table. (E) TLB Reload If an IPT entry equal to the given virtual address is found for the address field, the faulted TLB entry is reloaded. This reload procedure consists of electing the most recently used TLB entry for the congruent class of virtual addresses in fault, and the selected entry for that given virtual address tag field, real page number. and loading key bits.
If this IPT entry is a special segment, as indicated by the special segment bit in the segment register (Figure 2), the write bit (W), transaction
ID (TID) and lock bits are also reloaded. Hardware is used to determine which TLB entry was most recently used in each congruence class. Since the congruence glass is determined by the lower bits of the virtual address, it is only necessary to determine which TLB is replacing the selected entry. The most previously referenced entry in a given congruence class is then
One of the TLBs is selected based on which TLB it has. Once the most recently used TLB entry for a given congruence class is determined, the selected TLB entry can be reloaded.
At this time, the address tag field and key bits are reloaded from the IPT entry stored in main memory. The address of this IPT entry was previously calculated in the IPT lookup process. Then, the search process calculated
Since the IPT index is equal to the real page number, this value is used to reload the real page number field in the TLB. If this value is a special segment as indicated by the special segment bit in the segment register, the transaction ID and lock bit are also reloaded. Furthermore, this transaction
The ID and lock bits are reloaded by accessing the third word (see Figure 7) in the selected IPT entry. (F) Storage Access Control The address translation mechanism of this embodiment includes two access control means. The first access control means is applied to non-special segments and provides read/write protection for each page of real storage. The second access control means applies exclusively to special segments and is used to support connected data. Note that these access control means are applied only to conversion type access. When a violation of the regulations is detected by one of the access control means, access to the storage device is stopped.
However, there are exceptions to this, which will be discussed later. (G) Memory protection processing Memory protection processing is applied only to non-special segments. That is, once the correspondence between real and virtual addresses is determined by the TLB, the requested access is verified to ensure proper access authority. This verification means makes it possible to mark each page with information such as no access, read only, read/write, etc. Access control is a function of a 1-bit protection key in the selected segment register, a 2-bit key in the TLB entry, and whether the access is a load or store. Access is controlled as shown in the following table:

【表】 もしアクセスが許容されなければ、アドレス
変換動作は終了し、記憶保護の例外がCPUに
報告される。 (H) ロツクビツト処理 ロツクビツト処理は、選択されたセグメント
レジスタ中の特殊セグメントビツトにより表示
された特殊セグメントにのみ適用される。この
ロツクビツト処理により、オペレーテイングシ
ステムが持続変数に対する変化を自動的にモニ
タしてその変化をジヤーナルすることを可能と
するとともに、またロツクビツト処理は陰のペ
ージ(Shadow Page)を作成し、データベー
ス維持のために必要な他の処理も行う。 さらにロツクビツトにより、2Kまたは4Kバ
イトの分解能のページの記憶保護が128または
256バイトのラインの記憶保護まで拡張される。
言いかえると、2Kバイトページには128バイト
の分解能が与えられ、4Kバイトページには256
バイトの分解能が与えられる。すなわち、個別
のラインのロツクビツトは、2Kバイトページ
に対しては有効ビツトの21ビツト目から24ビツ
トト目までにより選択され、4Kバイトページ
に対しては有効ビツトの20ビツト目から23ビツ
ト目までにより選択される。 このとは、アクセス制御は、選択したTLB
エントリ中の1ビツトの書き込みビツトと、選
択したラインのロツクビツトの値と、TLB中
のトランザクシヨンIDと現在のトランザクシ
ヨンIDとの比較結果と、アクセスがロードと
ストアのどちらの動作モードであるかの関数で
ある。そして、アクセスは表のように制御さ
れる。
[Table] If the access is not allowed, the address translation operation is terminated and a memory protection exception is reported to the CPU. (H) Lock Bit Processing Lock bit processing applies only to the special segment indicated by the special segment bit in the selected segment register. Lockbit processing allows the operating system to automatically monitor and journal changes to persistent variables, and lockbit processing also creates shadow pages to help maintain the database. Also perform other necessary processing. In addition, lockbits provide 128 or 128 or more pages of 2K or 4K byte resolution
Extends to 256-byte line memory protection.
In other words, a 2K byte page is given a resolution of 128 bytes, a 4K byte page is given a resolution of 256
The resolution in bytes is given. That is, the lock bits of an individual line are selected by the 21st to 24th valid bits for a 2K byte page, and by the 20th to 23rd valid bits for a 4K byte page. selected. This means that the access control is based on the selected TLB
The result of comparing the 1-bit write bit in the entry, the value of the lock bit of the selected line, the transaction ID in the TLB and the current transaction ID, and whether the access is in load or store operation mode. is a function of Access is then controlled like a table.

【表】 データ記憶の例外が、ロツクビツトの規則違
反を結告するために使用される。この規則違反
は必ずしもエラーとはならない。というのはそ
れはオペレーテイングシステムが新たに変更し
たラインを処理しなければならないということ
を指示するにすぎないからである。 さて、実記憶の各ページには参照ビツトと変
更ビツトとが設けられている。これらのビツト
は、本実施例のアドレス変換機構の外側に配列
されており、実記憶へのアクセスに対応して必
要時にそれらのビツトの値が更新される。参照
ビツトは、それに対応する実システムが読み出
しまたは書き込みのためにアクセスされたとき
に“1”にセツトされる。また変更ビツトは、
それに対応するページが書き込まれたときに
“1”にセツトされる。 参照ビツトと変更ビツトには、CPUからの
I/O読み出し命令(IOR)及び書き込み命令
(IOW)によりアクセス可能である。各実記憶
に対応する参照ビツトと変更ビツトは、I/O
基底アドレスレジスタにより指定されたI/O
アドレスにX‘1000'を加えたアドレスを起点
とする。そして、任意のページに対する参照ビ
ツトと変更ビツトのI/Oアドレスは次の式で
与えられる: [I/Oアドレス]=[I/O基底アドレスレジスタに
より指定されたアドレス]+X‘1001'+[ページ番
号] 各I/Oアドレスには、実記憶の1ページ毎
に対応する参照ビツトと変更ビツトとが含まれ
ている。この参照ビツトRと変更ビツトCとの
フオーマツトは第8図に示されている。すなわ
ち、アクセスにより参照ビツトと変更ビツとへ
転送されるデータは次のように定義されてい
る: ビツト0〜29:ゼロ ビツト30:参照ビツト。対応する実ページ
が、読み出しまたは書き込み動作のためにアク
セスされるとき“1”にセツトされる。 ビツト31:変更ビツト。対応する実ページ
が、書き込み動作のためにアクセスされるとき
“1”にセツトされる。 尚、参照ビツト及び変更ビツトはハードウエ
アによつて初期化されない。これらのビツトは
システムソフトウエアのIOW命令により初期
化及びクリアされるのである。そして、参照ビ
ツト及び変更ビツトは、それらのビツトをセツ
トまたはクリアするためのプログラムの実行に
よりセツトすることができるので、参照ビツト
及び変更ビツトからデータを読み出す前に、そ
れらのビツトをセツトまたはクリアするための
書き込みの際に、書き込まれたものと同一のデ
ータが読み取われるとき限らない。 (J) 制御レジスタ群 さて、記憶構成や、ページテーブルアドレス
や、I/O基底アドレスを設定するために複数
の制御レジスタが備えられている。これらのレ
ジスタ群は、CPUからのI/O読み出し
(IOR)及びI/O書き込み(IOW)命令を介
してシステムソフトウエアにより初期化(ロー
ド)される。その各々のレジスタの構成とフオ
ーマツトは第9図から第18.3図までに示し
てある。これらのレジスタは監視プログラム状
態でのみアクセス可能である。 64KブロツクのI/Oアドレスを指定する
I/O基底アドレス(第9図)が、アドレス変
換システムには割り付けられている。このI/
O基底アドレスの値はI/O基底アドレスレジ
スタに収められている値に65536(X‘10000')
を掛けた値に等しい。I/O基底アドレスレジ
スタのフオーマツトは第9図に示すとおりであ
る。 I/O基底アドレスレジスタは次のように定
義されている: ビツト0〜23:保留 ビツト24〜31:I/O基底アドレス。この8
ビツトの値は、アドレス変換システムによつて
認識されているI/Oアドレス内で、64Kバイ
トのI/Oアドレスのブロツクのうちどのブロ
ツクがアドレス変換システムに割り付けられる
かということを設定する。すなわち、これらの
8ビツトは最上位の8ビツトである。 (J‐1) RAM指定レジスタ 第10図に示すレジスタは“RAM指定レ
ジスタ”である。このRAM指定レジスタ
は、RAMのサイズと、RAMの開始アドレ
スと、リフレツシユ速度と、パリテイチエツ
クまたはエラー補正コード(ECC)が使用
されるか否かを設定するためのものである。
尚、パリテイチエツクとECCは本発明の主
旨からは外れているので、ここではこれ以上
説明しない。 RAM指定レジスタは第10図のフオーマ
ツトをもち、次のように設定されている: ビツト0〜10:保留 ビツト11〜19:リフレツシユ速度。この9
ビツトによりリフレツシユサイクルの速度が
設定される。リフレツシユサイクルの速度は
ビツト10〜18に収められている値にCPUの
クロツク周波数を掛けたものに等しい。この
ビツト10〜18の値をゼロにするとリフレツシ
ユ動作が不能化される。リフレツシユ速度の
値は必要とされるメモリリフレツシユ速度を
CPUのクロツク周波数で割ることにより算
出することができる。例えば、128行に2m
s毎にリフレツシユを必要とするダイナミツ
クメモリをもつシステムにおいては、各行毎
のリフレツシユ間隔は2ms÷128=15.6μs
である。そしてCPUのクロツク周期が200ns
だとすると、リフレツシユ速度の計数値は
15.6μs/200ns、すなわち78(X‘04E')であ
る。この値によりX‘04E'のリフレツシユ速
度がロードされる。 尚、このリフレツシユ速度はプログラム操
作シーケンスの一部でX‘01A'に初期化さ
れる。 ビツト20〜27:RAMの開始アドレス。こ
の8ビツトフイールドにより変換アクセスと
非変換アクセスの両方に対してRAMの開始
アドレスが設定される。 ビツト28〜31:RAMのサイズ。この4ビ
ツトフイールドにより現在アドレス変換シス
テムに配属されているRAMのサイズが設定
される。 (J‐2) ROS指定レジスタ ここでROSとはRead Only Storageすな
わち読み出し専用記憶装置をさすものとす
る。尚、このROSという略称は第1図にも
使用されている。さて、ROS指定レジスタ
とは、ROSの開始アドレスと、ROSのサイ
ズと、ROSによつてパリテイが与えられて
いるか否か、とを設定するためのものであ
り、そのフオーマツトは第11図に示すとお
りである。尚、ROSは変換モードと非変換
モードのどちらでもアクセス可能とする。 ROS指定レジスタは次のように設定され
ている: ビツト0〜19:保留 ビツト20〜27:ROSの開始アドレス。こ
の8ビツトのフイールドにより、変換アクセ
スと非変換アクセスのどちらの場合にも
ROSの開始アドレスが設定される。 ビツト28〜31:ROSのサイズ。この4ビ
ツトのフイールドにより、アドレス変換シス
テムに配属されるROSのサイズが設定され
る。 (J‐3) 変換制御レジスタ 変換制御レジスタ(TCR)は、各ページ
のサイズ(2Kバイトまたは4Kバイト)、主
記憶ページテーブル(HATとIPTの組みあ
わせ)の開始アドレス、次のハードウエア
TLB再ロードに割り込みが発生していか否
か、及び参照アレイと変更アレイ上でパリテ
イが使用されているか否かを指定するための
ものであり、そのフオーマツトは第12図に
示すとおりである。 変換制御レジスタは次のように設定されて
いる: ビツト0〜20:保留 ビツト21(第12図R):TLB再ロード成
功上の割り込みエネーブル。このビツトはハ
ードイアによるTLBの再ロード成功の報告
を可能化するために使用される。このビツト
Rが“1”にセツトされると、ハードウエア
によるTLBの再ロード成功により例外応答
が出されるとともに、記憶例外レジスタ(後
述、第13図参照)中のTLB再ロードビツ
トTが“1”にセツトされる。また、このビ
ツトR(第12図)が“0”にセツトされる
と、TLBのエントリのハードウエアによる
次の再ロードは報告されない。このビツトの
機能はTLBの動作をソフトウエアにより測
定するために使用することができる。 ビツト22(第12図P):参照アレイと変更
アレイのパリテイエネーブル。このビツト
は、パリテイが外部の参照アレイと変更アレ
イ上で使用されているか否かを示すために使
用される。もしこのビツトが“1”にセツト
されていれば、パリテイは参照アレイと変更
アレイ上で使用されている。また、もしこの
ビツトが“0”にセツトされていれば、参照
アレイと変更アレイ上でパリテイが使用され
ていない。 ビツト23(第12図S):ページサイズ。
2Kバイトページに対しては値“0”が使用
され、4Kバイトページに対しては値“1”
が使用される。 ビツト24〜31:HAT/IPT基底アドレス。
この8ビツトフイールドは、主記憶における
HAT/IPTエントリの開始アドレスを指定
するために使用される。このフイールドに収
められる値には、実記憶とそのページサイズ
で決定されるある定数が掛けあわされ、この
値によりHAT/IPTエントリの開始アドレ
スが指定される。2Kバイトページの場合は、
基底アドレスがこの変換制御レジスタのビツ
ト24〜31より指定され、また4Kバイトペー
ジの場合は、基底アドレスがこのレジスタの
ビツト25〜31により指定される。尚、記憶サ
イズとページサイズのさまざまな値に対する
定数値が前記表にリストされているので参
照されたい。 (J‐4) 記憶例外レジスタ 記憶例外レジスタ(SER)は記憶のアク
セスの際、変換プロセスにおけるエラー及び
システムエラーを報告するために使用され
る。すなわち、個々のビツトは、変換システ
ムによつて検出された各々のエラー条件を報
告するために設けられている。そして、エラ
ーが複数重なつた場合、各々のエラーは、そ
れぞれに割り当てられた適当なビツトをセツ
トすることにより報告される。尚、前回のエ
ラーでセツトされたビツトが、そのあとに生
じたエラーによりリセツトされることはな
い。 この記憶例外レジスタ(SER)は、プロ
グラム操作シーケンス(POR)によりゼロ
に初期化される。そして、一たんある例外が
報告されると、その例外動作が処理されたあ
とシステムソフトウエアがSERをクリアす
る役割を担うことになる。この記憶例外レジ
スタ(SER)のフオーマツトは第13図に
示すとおりである。 ビツト0〜21:保留 ビツト22(第13図T):TLB再ロード成
功。TLBのエントリ成功上の割り込みが首
尾よく再ロードされたとき、このビツトが
“1”にセツトされる。 ビツト23(第13図R):参照アレイと変更
アレイのパリテイエラー。参照アレイ及び変
更アレイ中でパリテイエラーが検出されたと
きこのビツトが“1”にセツトされる。 ビツト24(第13図W):試みられたROS
への書き込み。ROSアドレス空間に含まれ
るアドレスに対して書き込みが試みられたと
きこのビツトが“1”にセツトされる。 ビツト25(第13図I):IPT指定エラー。
IPT検索チエーン中に無限ループが検出され
たときこのビツトが“1”にセツトされる。
無限ループは、システムソフトウエアのエラ
ーにより誤つてIPTポインタの値が指定され
たときに生じることがある。IPC検索チエー
ンに無限ループが生じると、IPTポインタに
よりIPT検索チエーン中に、前のエントリが
指定されることになる。ビツト26(第13図
E):外部装置例外。このビツトは外部装置
によつて例外がひき起こされたときに“1”
にセツトされる。 ビツト27(第13図M):多重例外。記憶例
外レジスタ中で例外表示がクリアされる前に
二つ以上の例外(IPT指定エラー、ページフ
オールト、記憶保護あるいはデータ)が生じ
たときにこのビツトが“1”にセツトされ
る。 このビツトは、通常はシステムソフトウエ
アが例外を処理し損なつたことを示す。しか
しながら、多重ロード(LM)または多重ス
トア(STM)命令によつて例外が起こされ
たのであれば、このビツトはセツトされ得
る。というのは、多重ロード命令または多重
ストア命令は、例外によつて終了する前に、
その命令によつて指定されたすべてのレジス
タをロードまたはストアしようと試みると考
えられるからである。 ビツト28(第13図F):ページフオール
ト。このビツトは、TLBエントリや主記憶
のページテーブルに仮想アドレスに対応する
変換アドレスが含まれていないという理由に
より変換動作が終了したときに“1”にセツ
トされる。 ビツト29(第13図S):指定。このビツト
は、同一の仮想アドレスに対して2つの
TLBエントリが見出されたという理由で変
換動作が終了したときに“1”にセツトされ
る。 ビツト30(第13図P):記憶保護。このビ
ツトは、特殊でないセグメントに対する記憶
保護処理により、記憶へのアクセスが許容さ
れないと決定されたことを理由として変換動
作が終了したときに“1”にセツトされる。 ビツト31(第13図D):データ。このビツ
トは、特殊セグメントに対するトランザクシ
ヨンID/ロツクビツト処理により、記憶へ
のアクセスが許容されないと決定された事を
理由として変換動作が終了したときに“1”
にセツトされる。 (J‐5) 記憶例外アドレスレジスタ 記憶例外アドレスレジスタ(SEAR)は、
有効記憶アドレスを収めるためのものであ
る。この有効記憶アドレスはCPUからのロ
ード及びストア要求に対する例外を生じさ
せ、その例外は記憶例外レジスタ(SER)
によつて報告される。尚、SEARはフエツチ
命令や、外部デバイスによつてひき起こされ
た例外に対してはロードされない。この記憶
例外アドレスレジスタのフオーマツトは第1
4図に示すとおりである。 記憶例外アドレスレジスタは次のように定
義されている: ビツト0〜31:記憶例外アドレス。この32
ビツト有効記憶アドレスは、記憶例外レジス
タによつて報告される例外をひき起こす。多
重エラーが発生した場合(記憶例外レジスタ
のビツト27が“1”にセツトされている場
合)、記憶例外アドレスレジスタに収められ
ているアドレスは、最も古い例外のアドレス
である。 (J‐6) 被変換実アドレスレジスタ 被変換実アドレスレジスタ(TRAR)は、
実アドレス演算動作によつて決定された実記
憶アドレスを収めるためのものである。この
実アドレス演算機能は、仮想アドレスが実記
憶内に現在マツプされているかどうかを判断
し、もしマツプされていればそれに対応する
実アドレスを決定するために使用される。実
アドレス演算機能はあとで述べる。被変換実
アドレスレジスタのフオーマツトは第15図
に示すとおりである。 被変換実アドレスレジスタは次のように定
義されている: ビツト0(第15図I):無効ビツト。この
ビツトはアドレス変換が失敗したときに
“1”セツトされ、アドレス変換が成功した
ときに“0”にセツトされる。 ビツト1〜7:ゼロ。これら7ビツトのフ
イールドは常にゼロである。 ビツト8〜31:実記憶アドレス。アドレス
変換が成功したなら、この24ビツトのフイー
ルドには所与の仮想アドレスにマツプされる
実記憶アドレスが収められる。また、アドレ
ス変換が失敗したなら、このフイールドはゼ
ロにセツトされる。 (J‐7) トランザクシヨン識別レジスタ トランザクシヨン識別レジスタ(TID)
は、現在特殊ビツトの“所有者”として設定
されているタクスを識別するための8ビツト
のデータを収める。すなわち、もしあるセグ
メントが選択したセグメントレジスタ中の特
殊ビツトによつて特殊セグメントとして設定
されているならば、その記憶アクセスに対し
て、既述したロツクビツト処理が適用され
る。ロツクビツト処理は、トランザクシヨン
IDに収められた値を用い、その値をTLB中
のトランザクシヨンIDエントリに対して比
較し、その記憶アクセスが許容されているか
どうかを決定する。トランザクシヨン識別ア
クセスが許容されているかどうかを決定す
る。トランザクシヨン識別レジスタのフオー
マツトは第16図に示すとおりである。 トランザクシヨン識別レジスタは次のよう
に定義されている: ビツト0〜23:保留。 ビツト24〜31:トランザクシヨンID。こ
の8ビツト値は特殊プログラムの“所有者”
を指定するためのものである。 (J‐8) セグメントレジスタ セグメントレジスタは等しいフオーマツト
のものが16個あり、ここではそのうち一つだ
けを示す。セグメントレジスタはセグメント
ID、特殊ビツト、及びキービツトからなる。
12ビツトのセグメントIDは各々256Mバイト
をもつ、4096個の仮想記憶セグメントのうち
の1個を指定するためのものである。特殊ビ
ツトは、このビツトが立つているセグメント
が特殊セグメントであり、ロツクビツト処理
が適用されていることを示す。キービツト
は、ある所与のセグメント内で記憶アクセス
に関連して現在実行中のタスクについてのア
クセス権限レベルを示すためのものである。
セグメントレジスタのフオーマツトは第17
図に示すとおりである。 各セグメントレジスタの内容は次のように
定義されている: ビツト0〜17:保留。 ビツト18〜29:セグメントID。この12ビ
ツトの値により、256Mバイトをもつ、4096
個の仮想記憶セグメントのうちの1つが指定
される。 ビツト30(第17図S):特殊ビツト。この
ビツトは特殊セグメントに対して“1”にセ
ツトされ、非特殊セグメントに対して“0”
にセツトされる。 ビツト31(第17図K):キービツト。この
ビツトは所与のセグメント内のアクセスに対
して現在実行中のアクセス権限のレベルを決
定するためのものである。このビツトを記憶
アクセス制御に用いることについては例えば
第2図との関連で説明してある。 ところで、ここで開示した実施例において
は、2個のTLBのうちの各々が16個ずつの
エントリをもち、これらのエントリにより仮
想アドレスを実アドレスに変換するために必
要な変換及び制御情報が与えられる。それに
加えて、各TLBエントリには記憶アクセス
制御に使用される情報も含まれている。ま
た、TLBの内容はハードウエアによつて主
記憶ページテーブルから自動的に更新される
ので、TLBエントリに書き込みを行つたあ
と読み取りを行つても、書き込まれた同一の
データは必ずしも読み取られない。さらに、
TLBエントリを変更することは、仮想アド
レスと実アドレスとの対応関係をこわすこと
になるから、予測のつかない結果を招きかね
ない。すなわち、TLBの内容へのアクセス
は診断的な目的でのみ行なわれ、かつ非変換
モードでのみ行なわれるべきである。そうし
て、他のすべての変換アクセスを不能化して
非変換モードでTLBエントリに書き込みを
行い、そのあと読み取りを行えば、書き込ま
れたのと同一のデータが読み取られることに
なろう。 (K) TLBエントリ 各TLBエントリは論理的に66ビツト(保留
ビツトを除く)を有し、その66ビツトの内訳
は、アドレスタグが25ビツト、実ページ番号が
13ビツト、有効ビツトが1ビツト、キービツト
が2ビツト、書き込みビツトが1ビツト、トラ
ンザクシヨンIDが8ビツト、ロツクビツトが
16ビツトである。各TLBエントリは3つのフ
イールドに画分けされており、それらのフイー
ルドは個別にアドレス可能である。このTLB
エントリの各フイールドのフオーマツトは第1
8図.1〜第18.3図に示すとおりである。 先ず第18.1図のフイールドをTLBアド
レスダグフイールドと呼ぼう。このTLBアド
レスタグフイールドにはセグメントIDと仮想
ページインデツクスとが収められる。この収め
られるデータは2Kバイトページに対してはセ
グメントIDと仮想ページインデツクスとの上
位25ビツトであり、また4Kバイトページに対
してはそれらの上位24ビツトである。 TLBアドレスタグフイールドは次のように
定義されている: ビツト0〜2:保留。 ビツト3〜27:アドレスタグ。このフイール
ドには、2Kバイトページに対するセグメント
IDと仮想ページインデツクスの上位25ビツト
が収められる。尚、4Kバイトページに対して
はアドレスタグは[ビツト3〜26]となる。 ビツト28〜31:保留。 次に第18.2図のフイールドをTLB実ペ
ージ番号フイールドと呼ぼう。このTLB実ペ
ージ番号フイールドには、実ページ番号と、有
効ビツト(V)は、キービツト(KEY)とが
収められる。実ページ番号とはTLBエントリ
のアドレスタグフイールド中に収められた仮想
アドレスに割り付けられた番号である。有効ビ
ツト(V)とは、所与のTLBエントリが有効
な情報を有していることを示すためのビツトで
ある。また、キービツト(KEY)とは、所与
のページに対して必要なアクセス権限を示すた
めのものである。 実ページ番号フイールドは次のように定義さ
れている: ビツト0〜15:保留。 ビツト16〜28:実ページ番号。この13ビツト
のフイールドにより8192個の実ページのうちの
1つが指定される。もし使用する実ページが
8129個より少ないなら、使用される実ページに
アクセスするには、下位側のビツトのみを用い
ればよい。 ビツト29(第18.2図V):有効ビツト。こ
のビツトは、選択したTLBエントリが有効な
情報をもつとき“1”となり、もしTLBエン
トリが無効な情報をもつとき“0”となる。 ビツト30〜31(第18.2図KEY):キービ
ツト。この2ビツトのフイールドは各ページに
対するアクセス権限を設定する。 次に、第18.3図のフイールドをTIDロツ
クビツトフイールドと呼ぼう。このTIDロツク
ビツトフイールドは、書き込みビツトと、トラ
ンザクシヨンIDと、ロツクビツトとを有して
いる。もしTLBエントリが特殊ビツト用であ
れば、ロツクビツトはTLBのアドレスタグフ
イールド中に収められた仮想アドレスに対して
割付けされている。 TIDロツクビツトフイールドの内容は次のよ
うに定義されている: ビツト0〜6:保留。 ビツト7(第18.3図W):書き込みビツ
ト。このビツトは特殊セグメントに対応する各
ページに関するアクセス権限を設定する。 ビツト8〜14:トランザクシヨンID。この
8ビツトのフイールドにより、現在、特殊セグ
メント内で選択されたページを所有するタスク
が設定される。これらのビツトをロツクビツト
処理中で使用することについてはすでに述べて
ある。 ビツト15〜31:ロツクビツト。この16ビツト
のフイールドにより特殊ビツトに対応する2K
バイトページまたは4Kバイトページ内の各
“ライン”に対するアクセス権限が設定される。
1本のラインは2Kバイトページに対しては128
バイト、また4Kバイトページに対しては256バ
イトである。これらのビツトをロツクビツト処
理中で使用することについてはすでに述べてあ
る。 本実施例のアドレス変換機構においては、頻
繁に要求される変換機能に対してはハードウエ
アで支援するようにしている。このハードウエ
アはTLBエントリを選択的に無効化する能力
と、IBMシステム/370フアミリがもつ機能に
類似する“実アドレスロード”機能を実行する
能力を備えている。 また、仮想アドレスマツピングへの変更が行
なわれると、システムソフトウエアはTLBの
内容を主記憶中のページテーブルの内容に同期
させる必要がある。そして、それ以降のアドレ
ス変換時に、既に使用済みのマツピング情報が
使用されることのないように、TLB中のエン
トリとページフレームテーブル中のエントリと
は無効化する必要がある。 さて、上記同期化についてであるが、本実施
例のシステムはTLBエントリを主記憶中のペ
ージテーブルに同期させることを支援するため
に3つの機能を備えている。これらの機能は
TLBエントリのすべて、または選択した一部
のTLBエントリを無効化するために使用する
ことができる。また、これらの機能は、システ
ムによつて認識されたI/Oアドレスの64バイ
トのブロツク内で特定のI/Oアドレスに指令
されたI/O書き込み命令(IOW)によつて
呼び出される。尚、これらの各々の機能に対す
るアドレスの割り付けは必要に応じてシステム
に与えることになる。 (L) TLBに対するさまざまな機能 (L‐1) TLB全体の無効化 “全TLBの無効化”機能はすべてのTLB
エントリを無効化させるものである。このこ
とにより、次のアドレス変換に対応する主記
憶中のページテーブルからTLBの内容が更
新される。 この機能に関連づけられたアドレスへの
I/O書き込み命令により、すべてのTLB
エントリの無効化がはかられる。なお、この
ときI/O書き込み命令によつて移送された
データは使用されない。 (L‐2) 特定セグメント内のTLBエントリ無効化 “特定セグメント内のTLBエントリ無効
化”機能により特定のセグメントIDに関す
るすべてのTLBエントリが無効化される。
このセグメントIDを使用する。それ以降の
アドレス変換動作によりTLBの内容が主記
憶内のページテーブ取から更新される。 この機能に関連づけられたアドレスへの
I/O書き込み命令により、特定のセグメン
トIDに関するTLBエントリが無効化される。
そして、I/O書き込み命令によつて移送さ
れたビツト0〜4のデータはセグメントID
を選択するために使用される。すなわち、そ
の選択されたセグメントIDを含むTLBエン
トリがすべて無効化される。その無効化され
たセグメント内の有効アドレスに関する、以
下のアドレス変換により、TLBの内容が主
記憶のページテーブルから更新される。 (L‐3) 特定の有効アドレスに対するTLBエント
リ無効化 “特定有効アドレスに対するTLBエント
リ無効化”機能により特定の有効アドレスに
関するTLBエントリが無効化される。そし
て、特定の有効アドレスを含むページ内のあ
る有効アドレスに関して次にアドレス変換を
行うことにより、TLBの内容が主記憶の中
のページテーブルから更新される。 この機能に関連づけられたアドレスへの
I/O書き込み命令により、特定の有効アド
レスに関するTLBエントリが無効化される。
このとき、I/O書き込み命令によつて移送
されたビツト0〜31のデータは有効アドレス
として使用される。通常のアドレス変換プロ
セスは、本実施例のアドレス変換機構中に含
まれるセグメントレジスタの内容を使用する
ことにより適用される。 (L‐4) 実アドレス演算 “実アドレス演算”機能はシステムソフト
ウエアにより、(i)所与の仮想アドレスが現在
実記憶中にマツプされているか、及び(ii)もし
マツプされているならどの実アドレスが仮想
アドレスに割り付けられているのか、を決定
するために使用される。 そして、仮想アドレスがマツプされていな
ければ、実アドレス演算機能の使用によりペ
ージフオールトがひき起こされる。このペー
ジフオールトの情報は割り込みをデイスエー
ブルして動作しているシステムルーチンに対
しては重要であろう。というのは、たいてい
のI/O動作は実記憶アドレスを利用して実
行されているからであり、それゆえにシステ
ムI/Oルーチンにも仮想アドレスを実アド
レスした変換結果が必要である。 実アドレス演算機能は、この機能に関連づ
けられたアドレスへのI/O書き込み命令に
よつて呼び出される。I/Oデータ書き込み
命令によつて移送されたデータのビツト0〜
31は有効アドレスとして使用される。この有
効アドレスは、アドレス変換結果が記憶アク
セスよりもむしろ被変換実アドレスレジスタ
(第15図)へロードされる場合を除き、通
常の変換プロセスに使用されることになる。
前にも述べたように、被変換実アドレスレジ
スタはアドレス変換が成功したかどうかを示
すためのビツトと、そのアドレス変換が成功
した場合の、対応する実記憶アドレスとを備
えている。通常の記憶保護処理とロツクビツ
ト処理とはアドレス変換成功の表示がある際
に実行される。実アドレス演算機能により得
られた結果は被変換実アドレスレジスタの
I/O読み取り命令によつて読み取られる。 64KバイトからなるI/Oアドレスのブロ
ツクがアドレス変換機構に割り付けられてい
る。この64KバイトのブロツクはI/O基底
アドレスレジスタにより指定されたI/Oア
ドレスから開始する。I/O基底アドレスは
64Kバイトの境界上に設定されている。表4
にリストしたI/Oアドレスの割り当ては、
その指定された64Kバイトのブロツク中での
変位である。このとき、絶対I/Oアドレス
はI/O基底アドレスに変位を加えたものに
等しい。
[Table] Data storage exceptions are used to flag violations of lockbit rules. Violation of this rule does not necessarily result in an error. This is because it merely indicates to the operating system that it should process the newly modified line. Now, each page of real memory is provided with reference bits and change bits. These bits are arranged outside the address translation mechanism of this embodiment, and the values of these bits are updated when necessary in response to accesses to real memory. A reference bit is set to "1" when the corresponding real system is accessed for reading or writing. Also, the changed bits are
It is set to "1" when the corresponding page is written. Reference bits and modified bits can be accessed by I/O read instructions (IOR) and write instructions (IOW) from the CPU. The reference bits and change bits corresponding to each real memory are stored in the I/O
I/O specified by base address register
The starting point is the address plus X'1000'. The I/O address of reference bits and modified bits for any page is given by the following formula: [I/O address] = [address specified by I/O base address register] + X'1001' + [ Page Number] Each I/O address includes reference bits and change bits corresponding to each page of real memory. The format of this reference bit R and change bit C is shown in FIG. That is, the data transferred to reference bits and modified bits upon access is defined as follows: Bits 0 to 29: Zero Bit 30: Reference bit. Set to "1" when the corresponding real page is accessed for a read or write operation. Bit 31: Change bit. Set to "1" when the corresponding real page is accessed for a write operation. Note that the reference bit and change bit are not initialized by hardware. These bits are initialized and cleared by system software IOW instructions. Since reference bits and changed bits can be set by executing a program to set or clear those bits, those bits must be set or cleared before reading data from the reference bits and changed bits. This does not necessarily mean that the same data that was written is read when the data is written. (J) Control Register Group A plurality of control registers are provided for setting the memory configuration, page table address, and I/O base address. These registers are initialized (loaded) by system software via I/O read (IOR) and I/O write (IOW) instructions from the CPU. The structure and format of each register is shown in FIGS. 9 through 18.3. These registers are only accessible in supervisor state. An I/O base address (FIG. 9) that specifies the I/O address of the 64K block is assigned to the address translation system. This I/
The value of the O base address is 65536 (X'10000') stored in the I/O base address register.
is equal to the value multiplied by . The format of the I/O base address register is as shown in FIG. The I/O base address register is defined as follows: Bits 0-23: Reserved Bits 24-31: I/O base address. This 8
The value of the bit sets which block of 64K byte I/O addresses within the I/O addresses known by the address translation system will be allocated to the address translation system. That is, these 8 bits are the most significant 8 bits. (J-1) RAM specification register The register shown in Figure 10 is the "RAM specification register." This RAM specification register is used to set the RAM size, RAM starting address, refresh rate, and whether parity check or error correction code (ECC) is used.
Note that the parity check and ECC are outside the scope of the present invention and will not be further explained here. The RAM specification register has the format shown in Figure 10 and is set as follows: Bits 0 to 10: Reserved Bits 11 to 19: Refresh speed. This 9
The bit sets the refresh cycle speed. The refresh cycle rate is equal to the value stored in bits 10-18 times the CPU clock frequency. Setting the value of bits 10 to 18 to zero disables the refresh operation. The refresh rate value determines the required memory refresh rate.
It can be calculated by dividing by the CPU clock frequency. For example, 2m for 128 lines
In a system with dynamic memory that requires refresh every s, the refresh interval for each row is 2ms ÷ 128 = 15.6μs.
It is. And the CPU clock cycle is 200ns
If so, the refresh rate count is
15.6μs/200ns, or 78(X'04E'). This value loads the refresh rate of X'04E'. Note that this refresh rate is initialized to X'01A' as part of the program operation sequence. Bits 20-27: RAM start address. This 8-bit field sets the starting address of the RAM for both translation and non-translation accesses. Bits 28-31: RAM size. This 4-bit field sets the size of the RAM currently allocated to the address translation system. (J-2) ROS specification register Here, ROS refers to Read Only Storage, that is, a read-only storage device. The abbreviation ROS is also used in Figure 1. Now, the ROS specification register is used to set the start address of ROS, the size of ROS, and whether or not parity is provided by ROS, and its format is shown in Figure 11. That's right. Note that ROS can be accessed in both conversion mode and non-conversion mode. The ROS specification register is set as follows: Bits 0-19: Reserved Bits 20-27: ROS start address. This 8-bit field allows for both conversion and non-translation accesses.
The starting address of ROS is set. Bits 28-31: ROS size. This 4-bit field sets the size of the ROS assigned to the address translation system. (J-3) Conversion control register The conversion control register (TCR) stores the size of each page (2K bytes or 4K bytes), the start address of the main memory page table (combination of HAT and IPT), and the next hardware address.
This is used to specify whether or not an interrupt occurs during TLB reloading, and whether or not parity is used on the reference array and modified array, and its format is as shown in FIG. The conversion control register is set as follows: Bits 0-20: Pending Bit 21 (Figure 12R): Interrupt enable on successful TLB reload. This bit is used to enable reporting of a successful TLB reload by the hard ear. When this bit R is set to "1", an exception response is issued due to successful reloading of the TLB by the hardware, and the TLB reload bit T in the storage exception register (see Figure 13 below) is set to "1". is set to Also, when this bit R (FIG. 12) is set to "0", the next reload by the hardware of an entry in the TLB will not be reported. The functionality of this bit can be used to measure TLB operation by software. Bit 22 (Figure 12P): Parity enable for reference array and modified array. This bit is used to indicate whether parity is used on the external reference and modification arrays. If this bit is set to ``1'', parity is being used on the reference array and the modified array. Also, if this bit is set to ``0'', parity is not used on the reference array and the modified array. Bit 23 (S in Figure 12): Page size.
The value “0” is used for 2K byte pages and the value “1” is used for 4K byte pages.
is used. Bits 24-31: HAT/IPT base address.
This 8-bit field is stored in main memory.
Used to specify the starting address of a HAT/IPT entry. The value stored in this field is multiplied by a constant determined by the real memory and its page size, and this value specifies the starting address of the HAT/IPT entry. For a 2KB page,
The base address is specified by bits 24-31 of this conversion control register, and in the case of a 4K byte page, the base address is specified by bits 25-31 of this register. Please refer to the table above for constant values for various values of storage size and page size. (J-4) Storage Exception Register The Storage Exception Register (SER) is used to report errors in the conversion process and system errors during storage accesses. That is, individual bits are provided to report each error condition detected by the conversion system. If multiple errors occur, each error is reported by setting the appropriate bit assigned to it. Note that the bit set by the previous error will not be reset by any subsequent error. This storage exception register (SER) is initialized to zero by the program operation sequence (POR). Once an exception is reported, the system software is responsible for clearing the SER after the exception is handled. The format of this storage exception register (SER) is as shown in FIG. Bits 0 to 21: Hold Bit 22 (T in Figure 13): TLB reload successful. This bit is set to ``1'' when the interrupt on successful entry of the TLB is successfully reloaded. Bit 23 (Figure 13R): Parity error between reference array and modified array. This bit is set to "1" when a parity error is detected in the reference array and the modified array. Bit 24 (Figure 13 W): Attempted ROS
writing to. This bit is set to "1" when a write is attempted to an address contained in the ROS address space. Bit 25 (Figure 13 I): IPT specification error.
This bit is set to "1" when an infinite loop is detected in the IPT search chain.
Infinite loops can occur when a system software error causes an incorrect IPT pointer value to be specified. If an infinite loop occurs in the IPC search chain, the IPT pointer will point to the previous entry in the IPT search chain. Bit 26 (Figure 13E): External device exception. This bit is set to “1” when an exception is caused by an external device.
is set to Bit 27 (M in Figure 13): Multiple exceptions. This bit is set to ``1'' when two or more exceptions (IPT specification error, page fault, storage protection, or data) occur before the exception indication is cleared in the storage exception register. This bit usually indicates that the system software failed to handle the exception. However, if the exception was caused by a load multiple (LM) or store multiple (STM) instruction, this bit may be set. This is because before a load or store multiple instruction terminates with an exception,
This is because it is considered that an attempt is made to load or store all registers specified by the instruction. Bit 28 (Figure 13F): Page fault. This bit is set to "1" when the translation operation is completed because the translation address corresponding to the virtual address is not included in the TLB entry or the main memory page table. Bit 29 (Figure 13 S): Designation. This bit allows two
Set to ``1'' when a translation operation is completed because a TLB entry was found. Bit 30 (Figure 13P): Memory protection. This bit is set to ``1'' when the conversion operation ends because the storage protection process for the non-special segment has determined that access to the storage is not allowed. Bit 31 (Figure 13D): Data. This bit is set to ``1'' when the conversion operation ends because it is determined that access to memory is not allowed by transaction ID/lock bit processing for the special segment.
is set to (J-5) Storage exception address register The storage exception address register (SEAR) is
It is used to store valid storage addresses. This valid storage address causes an exception to load and store requests from the CPU, and the exception is registered in the storage exception register (SER).
Reported by. Note that SEAR is not loaded for fetch instructions or exceptions caused by external devices. The format of this storage exception address register is
As shown in Figure 4. The storage exception address register is defined as follows: Bits 0-31: Storage exception address. This 32
A bit valid storage address will cause an exception to be reported by the storage exception register. If multiple errors occur (bit 27 of the storage exception register is set to "1"), the address stored in the storage exception address register is the address of the oldest exception. (J-6) Translated real address register The translated real address register (TRAR) is
It is used to store the real storage address determined by the real address arithmetic operation. This real address arithmetic function is used to determine whether a virtual address is currently mapped in real memory and, if so, to determine its corresponding real address. The real address calculation function will be described later. The format of the real address register to be converted is as shown in FIG. The translated real address register is defined as follows: Bit 0 (Figure 15I): Invalid bit. This bit is set to "1" when address translation fails and is set to "0" when address translation is successful. Bits 1-7: Zero. These 7-bit fields are always zero. Bits 8-31: Real memory address. If the address translation is successful, this 24-bit field contains the real memory address that maps to the given virtual address. This field is also set to zero if the address translation fails. (J-7) Transaction identification register Transaction identification register (TID)
contains 8-bit data for identifying the task currently set as the "owner" of the special bit. That is, if a segment is set as a special segment by a special bit in the selected segment register, the lock bit processing described above is applied to that memory access. Lock bit processing is a transaction
It uses the value contained in the ID and compares it against the transaction ID entry in the TLB to determine whether the storage access is allowed. Determine whether transaction identification access is allowed. The format of the transaction identification register is as shown in FIG. The transaction identification register is defined as follows: Bits 0-23: Pending. Bits 24-31: Transaction ID. This 8-bit value is the “owner” of the special program.
This is for specifying. (J-8) Segment Register There are 16 segment registers with the same format, and only one of them is shown here. segment register is segment
Consists of ID, special bits, and key bits.
The 12-bit segment ID specifies one of 4096 virtual storage segments, each 256 Mbytes in size. The special bit indicates that the segment in which this bit is set is a special segment and lock bit processing is applied to it. The key bits are intended to indicate the access privilege level for the currently executing task related to storage access within a given segment.
The segment register format is 17th.
As shown in the figure. The contents of each segment register are defined as follows: Bits 0-17: Reserved. Bits 18-29: Segment ID. This 12-bit value results in 4096
One of the virtual storage segments is specified. Bit 30 (S in Figure 17): Special bit. This bit is set to “1” for special segments and “0” for non-special segments.
is set to Bit 31 (Figure 17K): Key bit. This bit determines the level of access authority currently in effect for access within a given segment. The use of this bit for storage access control is discussed, for example, in connection with FIG. By the way, in the embodiment disclosed here, each of the two TLBs has 16 entries, and these entries provide the translation and control information necessary to translate a virtual address into a real address. It will be done. In addition, each TLB entry also contains information used for storage access control. Furthermore, since the contents of the TLB are automatically updated from the main memory page table by hardware, even if a TLB entry is written and then read, the same data that was written will not necessarily be read. moreover,
Changing a TLB entry destroys the correspondence between virtual addresses and real addresses, which can lead to unpredictable results. That is, access to the contents of the TLB should only be made for diagnostic purposes and only in non-translation mode. If you then write to a TLB entry in non-translation mode, disabling all other translation accesses, and then read it, you will read the same data that was written. (K) TLB entry Each TLB entry has 66 logical bits (excluding reserved bits), and the 66 bits consist of 25 bits for the address tag and 25 bits for the real page number.
13 bits, valid bit is 1 bit, key bit is 2 bits, write bit is 1 bit, transaction ID is 8 bits, lock bit is
It is 16 bits. Each TLB entry is partitioned into three fields, which are individually addressable. This TLB
The format of each field in the entry is
Figure 8. 1 to 18.3. First, let's call the field in Figure 18.1 the TLB address field. This TLB address tag field contains a segment ID and a virtual page index. The stored data is the upper 25 bits of the segment ID and virtual page index for a 2K byte page, and the upper 24 bits of the segment ID and virtual page index for a 4K byte page. The TLB address tag field is defined as follows: Bits 0-2: Reserved. Bits 3 to 27: Address tag. This field contains the segment for a 2KB page.
Contains the ID and the top 25 bits of the virtual page index. Note that for a 4K byte page, the address tag is [bits 3 to 26]. Bits 28-31: Hold. Next, let's call the field in Figure 18.2 the TLB actual page number field. This TLB real page number field stores a real page number, a valid bit (V), and a key bit (KEY). The real page number is the number assigned to the virtual address contained in the address tag field of the TLB entry. A valid bit (V) is a bit that indicates that a given TLB entry has valid information. Furthermore, a key bit (KEY) is used to indicate the necessary access authority for a given page. The real page number field is defined as follows: Bits 0-15: Reserved. Bits 16-28: Actual page number. This 13-bit field specifies one of 8192 real pages. If the actual page you use is
If there are fewer than 8129, only the lower bits need to be used to access the actual page being used. Bit 29 (Figure 18.2 V): Valid bit. This bit becomes "1" when the selected TLB entry has valid information, and becomes "0" if the TLB entry has invalid information. Bits 30-31 (Figure 18.2 KEY): Key bits. This 2-bit field sets access authority for each page. Next, let's call the field in Figure 18.3 the TID lock bit field. The TID lock bit field contains a write bit, a transaction ID, and a lock bit. If the TLB entry is for a special bit, the lock bit is assigned to the virtual address contained in the TLB's address tag field. The contents of the TID lock bit field are defined as follows: Bits 0-6: Hold. Bit 7 (Figure 18.3 W): Write bit. This bit sets access privileges for each page corresponding to the special segment. Bits 8-14: Transaction ID. This 8-bit field sets the task that currently owns the selected page within the special segment. The use of these bits during lock bit processing has already been discussed. Bits 15-31: Lock bits. This 16-bit field supports 2K bits that correspond to special bits.
Access privileges are set for each “line” within a byte page or 4K byte page.
One line is 128 for a 2KB page
bytes, or 256 bytes for a 4KB page. The use of these bits during lock bit processing has already been discussed. In the address translation mechanism of this embodiment, frequently requested translation functions are supported by hardware. This hardware has the ability to selectively invalidate TLB entries and perform a "real address load" function similar to that found in the IBM Systems/370 family. Additionally, when changes to virtual address mapping are made, system software must synchronize the contents of the TLB with the contents of the page table in main memory. Then, the entries in the TLB and the page frame table must be invalidated so that mapping information that has already been used will not be used during subsequent address translations. Now, regarding the above synchronization, the system of this embodiment has three functions to support synchronization of TLB entries with page tables in main memory. These features are
Can be used to invalidate all or selected TLB entries. These functions are also invoked by an I/O write instruction (IOW) directed to a particular I/O address within a 64-byte block of I/O addresses recognized by the system. Note that the allocation of addresses to each of these functions will be given to the system as necessary. (L) Various functions for TLB (L-1) Disabling the entire TLB The “Disabling all TLB” function
This invalidates the entry. As a result, the contents of the TLB are updated from the page table in the main memory corresponding to the next address translation. An I/O write instruction to the address associated with this function causes all TLB
The entry will be invalidated. Note that at this time, the data transferred by the I/O write command is not used. (L-2) Invalidating TLB entries in a specific segment The “Invalidating TLB entries in a specific segment” function invalidates all TLB entries related to a specific segment ID.
Use this segment ID. Subsequent address translation operations update the contents of the TLB from the page table in main memory. An I/O write instruction to an address associated with this function invalidates the TLB entry for a particular segment ID.
The data of bits 0 to 4 transferred by the I/O write command is the segment ID.
used to select. That is, all TLB entries including the selected segment ID are invalidated. The following address translations for valid addresses within the invalidated segment update the contents of the TLB from the page table in main memory. (L-3) Invalidating TLB entries for specific valid addresses The "Invalidating TLB entries for specific valid addresses" function invalidates TLB entries for specific valid addresses. The contents of the TLB are then updated from the page table in the main memory by performing address translation on a certain effective address within the page that includes the specific effective address. An I/O write instruction to an address associated with this function invalidates the TLB entry for a particular valid address.
At this time, the data of bits 0 to 31 transferred by the I/O write command is used as a valid address. The normal address translation process is applied by using the contents of the segment registers included in the address translation mechanism of this embodiment. (L-4) Real Address Arithmetic The “Real Address Arithmetic” function allows system software to determine (i) whether a given virtual address is currently mapped in real memory, and (ii) if so, which one. Used to determine whether a real address is assigned to a virtual address. If the virtual address is not mapped, use of the real address arithmetic function will cause a page fault. This page fault information may be important to system routines operating with interrupts disabled. This is because most I/O operations are performed using real storage addresses, and therefore system I/O routines also require the result of converting virtual addresses to real addresses. A real address arithmetic function is called by an I/O write instruction to an address associated with this function. Bits 0--of the data transferred by the I/O data write command
31 is used as a valid address. This effective address will be used for the normal translation process, except when the address translation result is loaded into the translated real address register (FIG. 15) rather than a storage access.
As previously mentioned, the translated real address register contains a bit to indicate whether the address translation was successful and the corresponding real storage address if the address translation was successful. Normal memory protection processing and lock bit processing are executed when there is an indication of successful address translation. The result obtained by the real address arithmetic function is read by the I/O read instruction of the real address register to be translated. A block of I/O addresses consisting of 64K bytes is allocated to the address translation mechanism. This 64K byte block starts at the I/O address specified by the I/O base address register. The I/O base address is
It is set on a 64K byte boundary. Table 4
The I/O address assignments listed in
This is the displacement within the specified 64K byte block. At this time, the absolute I/O address is equal to the I/O base address plus the displacement.

【表】【table】

Claims (1)

【特許請求の範囲】 1 複数のページフレームをもつ階層形メモリ
と、 仮想アドレスを供給するための中央処理装置
と、 上記中央処理装置から供給された仮想アドレス
を上記ページフレーム内の、該仮想アドレスより
も少さいメモリ空間をもつ実記憶アドレスに変換
するための変換手段とを有する仮想記憶装置にお
いて、 所与の仮想アドレスをハツシユして、ハツシユ
アドレスを作成するためのハツシユ手段と、 各々の実アドレスに仮想アドレスを対応させた
第1のテーブルと、各々のハツシユアドレスを、
それぞれ異なる一群の連結された仮想アドレスの
うちの予定の仮想アドレスに結合させ、該一群の
仮想アドレスの各々がハツシユされたときは上記
結合されたハツシユアドレスを作成させるための
第2のテーブルとを結合させた、上記階層形メモ
リ内の結合テーブルと、 上記結合テーブル内の上記一群の連結された仮
想アドレス内で所与の仮想アドレスの位置を検索
するための検索手段と、 上記検索手段により見出された仮想アドレスの
位置に応答して、上記第1のテーブルから、見出
された該仮想アドレスに対応する実記憶アドレス
にアクセスするためのアクセス手段、 とを具備する仮想記憶装置。 2 上記変換手段は、上記第1のテーブルの基底
アドレスと上記第2のテーブルの基底アドレスと
を結合した基底アドレスを記憶するための手段を
備えてなる特許請求の範囲第1項に記載の仮想記
憶装置。
[Scope of Claims] 1. A hierarchical memory having a plurality of page frames; a central processing unit for supplying virtual addresses; a hashing means for hashing a given virtual address to create a hashed address; and a hashing means for hashing a given virtual address to create a hashed address; A first table that associates virtual addresses with real addresses, and each hash address,
a second table for binding to a scheduled virtual address of a group of concatenated virtual addresses that are different from each other, and for creating the combined hash address when each of the virtual addresses of the group is hashed; a binding table in said hierarchical memory, combining said virtual addresses in said binding table; searching means for searching for a location of a given virtual address within said group of concatenated virtual addresses in said binding table; A virtual storage device comprising: access means for accessing a real storage address corresponding to the found virtual address from the first table in response to the position of the found virtual address. 2. The virtual converter according to claim 1, wherein the conversion means includes means for storing a base address that is a combination of the base address of the first table and the base address of the second table. Storage device.
JP59233427A 1983-12-07 1984-11-07 Virtual memory Granted JPS60123947A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US55824483A 1983-12-07 1983-12-07
US558244 1995-11-17

Publications (2)

Publication Number Publication Date
JPS60123947A JPS60123947A (en) 1985-07-02
JPH0332092B2 true JPH0332092B2 (en) 1991-05-09

Family

ID=24228755

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59233427A Granted JPS60123947A (en) 1983-12-07 1984-11-07 Virtual memory

Country Status (2)

Country Link
JP (1) JPS60123947A (en)
CA (1) CA1220286A (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2600441B1 (en) * 1986-06-18 1990-09-21 France Etat MEMORY MANAGEMENT UNIT

Also Published As

Publication number Publication date
CA1220286A (en) 1987-04-07
JPS60123947A (en) 1985-07-02

Similar Documents

Publication Publication Date Title
EP0113240B1 (en) Virtual memory address translation mechanism with controlled data persistence
US4680700A (en) Virtual memory address translation mechanism with combined hash address table and inverted page table
EP0950223B1 (en) Cache replacement policy with locking
US5493660A (en) Software assisted hardware TLB miss handler
JP2833062B2 (en) Cache memory control method, processor and information processing apparatus using the cache memory control method
US4905141A (en) Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
EP1934753B1 (en) Tlb lock indicator
US7673345B2 (en) Providing extended memory protection
JP2567594B2 (en) A page-type storage device management unit capable of selectively supporting a plurality of address spaces
US5440710A (en) Emulation of segment bounds checking using paging with sub-page validity
US5265227A (en) Parallel protection checking in an address translation look-aside buffer
US5418927A (en) I/O cache controller containing a buffer memory partitioned into lines accessible by corresponding I/O devices and a directory to track the lines
US6430668B2 (en) Speculative address translation for processor using segmentation and optical paging
US6430670B1 (en) Apparatus and method for a virtual hashed page table
US7831799B1 (en) Speculative address translation for processor using segmentation and optional paging
US6233668B1 (en) Concurrent page tables
US5555395A (en) System for memory table cache reloads in a reduced number of cycles using a memory controller to set status bits in the main memory table
US6073226A (en) System and method for minimizing page tables in virtual memory systems
WO2009087226A1 (en) Dynamic address translation with load page table entry address
JP2930071B2 (en) Information processing device and processor
JPH0332092B2 (en)
EP0377971B1 (en) I/O bus caching
JPH0679294B2 (en) Address conversion method
JPH06187244A (en) Address conveting buffer mechanism