請求の範囲
1 メモリおよびアドレス翻訳プログラムを備え
るデータプロセシングシステムにおいて、前記メ
モリをアクセスするのに前記翻訳プログラムによ
つて使用されるための論理アドレスを発生するた
めの改良された装置であつて、
論理アドレスを示すデータをストアするための
手段を備え、
前記データはインデツクス選択データおよび変
位データを含み、
インデツクスデータをそれぞれ含む複数のイン
デツクスレジスタと、
前記インデツクス選択データに応答して前記イ
ンデツクスレジスタのうちの1つを選択するため
の手段と、
拡張されたアドレスレジスタと、
選択されたインデツクスレジスタ内のインデツ
クスデータを前記変位データに加算するためのお
よびその和を前記拡張されたアドレスレジスタ内
にストアするための加算器を含む手段と、
第1および第2の部分を備える論理アドレスレ
ジスタと、
前記拡張されたアドレスレジスタ内の和の予め
定められる数の最下位桁を前記論理アドレスレジ
スタの前記第1の部分内にストアするための手段
と、
前記システムによつて実行されることのできる
複数のプログラムのうちの対応するプログラムの
ための複数のアドレス配置エントリをそれぞれ含
む複数のテーブルをストアするためのテーブルス
トア手段と、
前記システムによつて与えられたプログラム識
別番号と、前記拡張されたアドレスレジスタ内の
和の予め定められる数の最上位桁とに応答して、
前記テーブルのうちの選択されたテーブルにおけ
るアドレス配置エントリのうちの対応するエント
リをアクセスし、かつこのアクセスされたエント
リを、前記論理アドレスレジスタの前記第2の部
分にストアする選択手段と、
前記論理アドレスレジスタの第1および第2の
部分の内容を前記アドレス翻訳プログラムに加え
るための手段とを備える、論理アドレス発生装
置。
2 前記予め定められる数の前記最下位桁と連結
される前記予め定められる数の最上位桁は、前記
拡張されたアドレスレジスタ内の和を構成する、
請求の範囲第1項記載の装置。
3 前記変位データは、前記拡張されたアドレス
レジスタ内の前記予め定められる数の予め定めら
れる数字内に桁上げを引起こすほどそれ自体では
大きいことはない値を備える、請求の範囲第2項
記載の装置。
4 論理アドレスを示すデータをストアするため
の前記手段は、前記論理アドレスにあるデータに
ついて実行されるべきオペレーシヨンの形式を示
すオペレーシヨンデータを付加的に含む命令レジ
スタである、請求の範囲第1項記載の装置。
5 前記メモリは複数のセグメントを含み、かつ
テーブル内の各データ配置エントリは特定のセグ
メントの基準アドレスを示す、請求の範囲第1
項、第2項、第3項または第4項のいずれかに記
載の装置。
6 プログラムに対応するテーブルはプログラム
に対して指定されるセグメントの基準アドレスに
対応するアドレス配置エントリを含み、かつその
テーブルはまた他のプログラムで共用されるセグ
メントの基準アドレスに対応する少なくとも1つ
のアドレス配置エントリを含む、請求の範囲第5
項記載の装置。
7 各アドレス配置エントリはそれらの状態を示
すチエツクデータを含む、請求の範囲第6項記載
の装置。
8 前記拡張されたアドレスレジスタ内の前記予
め定められる数の最下位桁は、選択されたアドレ
ス配置エントリによつて示されるセグメント内に
アクセスされる結果的位置を決定する、請求の範
囲第6項記載の装置。
9 メモリおよびアドレス翻訳プログラムを備え
るデータプロセシングシステムにおいて、前記メ
モリをアクセスするのに前記翻訳プログラムによ
つて使用されるための論理アドレスを発生するた
めの改良された方法であつて、
論理アドレスを示すインデツクス選択データお
よび変位データを設けるステツプと、
前記システムによつて実行されることのできる
複数のプログラムのうちの対応するプログラムの
ための複数のアドレス配置エントリをそれぞれ含
む複数のテーブルを設けるステツプと、
前記インデツクス選択データに応答して複数の
インデツクス値のうちの1つを選択し、前記変位
データを選択されたインデツクス値に加算して和
を形成するステツプと、
前記システムによつて与えられたプログラム識
別番号と、前記和の予め定められる数の最上位桁
とに応答して、選択されたテーブルからアドレス
配置エントリを選択するステツプと、
前記和の残つている桁とともに選択されたアド
レス配置エントリを前記アドレス翻訳プログラム
に適用するステツプとを備える方法。
10 前記変位データは、前記予め定められる数
の予め定められる桁内に桁上げを引起こすほどそ
れ自体としては大きいことはない値を備える、請
求の範囲第9項記載の方法。
11 前記メモリは複数のセグメントを含み、か
つテーブル内の各データ配置エントリは特定のセ
グメントの基準アドレスを示す、請求の範囲第9
項または第10項記載の方法。
12 プログラムに対応するテーブルは、プログ
ラムに対して指定されるセグメントの基準アドレ
スに対応するアドレス配置エントリを含み、かつ
テーブルはまた他のプログラムで共用されるセグ
メントの基準アドレスに対応する少なくとも1つ
のアドレス配置エントリを含む、請求の範囲第1
1項記載の方法。
13 前記和の前記残つている数字は、選択され
たアドレス配置エントリによつて示されるセグメ
ント内にアクセスされる結果的位置を決定する、
請求の範囲第12項記載の方法。
関連特許出願の参照
この発明は、発明者B.Gaitherその他のアドレ
ス発生装置および方法のための に提出され
た我々の共通に譲渡された特許出願S.N. に
関連する主な事項を含んでいる。
発明の背景
この発明は一般的にデータプロセシングシステ
ム内のメモリアドレスを発生するための改良され
た方法および装置に関し、より特定的には仮想ま
たはマツプされたデータ記憶装置を用いるデータ
プロセシングシステム内の比較的大きな仮想また
は論理アドレスを発生するための改良された方法
および装置に関する。大きなアドレスを作り出す
ための最も直接的な方法は、アドレスのすべての
ビツトに適合する充分に広いデータ経路を備える
データプロセツサを設けることである。しかしこ
のような方法によつて得られるハードウエアは、
非常に不経済である。
他に知られている方法は、データプロセツサ内
に比較的狭いデータ経路を設け、次にデータ経路
よりも広いアドレスを処理するためにこれらの狭
いデータ経路の多重パスを形成することである。
この多重パス方法に伴う困難性は、これらの多重
パスがオペレーテイング速度の大幅な低下を招く
ということである。
上述した多重パス方法の欠点を克服する1つの
方法が、発明者G.R.Mitchell他の1981年2月17日
発行の米国特許第4251860号に記述されている。
この特許において、大きい仮想アドレスを操作す
るために多重パスを必要とすることなく、比較的
に狭いデータの幅の使用を可能とする実施例が記
述されている。これは、セグメントレジスタおよ
びオフセツトレジスタ内に仮想アドレスを形成す
るために用いられるデータを含む基準アドレスレ
ジスタを分けることによつて達成される。次に動
作は、選択された基準アドレスのオフセツト部分
のみが仮想アドレスを形成するために計算操作に
関係することが必要とされ、それによつて生成さ
れた仮想アドレスがより広いものであつても狭い
データ経路が用いられることを可能とするように
設けられている。
アドレス技術と考えられる他の背景的な情報
が、1980年12月16日発行の米国特許第4240139
号,1980年8月のIan LeMairのコンピユータ設
計p.111―118の記事「Indexed Mapping
Extends Microprocessor Addressing Range」、
IBM Technical Disclosure Bulletin,Vol.23,
No.5のP.L.Martinezの記事「Storage Relocation
Translator」、IBM Technical Disciosure
Bulletin,Vol.23,No.6,1980年11月,p.2199お
よび2200のP.L.Martinezの記事「Relocation
Translator Address Bit Scheme」、および上記
の特許および記事に引用された参照文に見られ
る。
発明の概要
この発明の好ましい実施例において、多重パス
を必要とすることなくより広いアドレスを発生す
るために狭いデータ経路が用いられることを可能
とするために、前述の特許第4251860号に記述さ
れたのと一般的に類似の方法が用いられる。しか
しこの発明は、比較的に簡単でかつ経済性の高い
方法においてより一層融通性および対応性のある
アドレス発生能力をさらに提供するものである。
簡単に、この発明の好ましい実施例においてこ
れらの付加された能力は、通常的に利用できるプ
ログラムのアドレツシングレンジ以外の非常に大
きなデータ構造にアクセスすることのできるアド
レスをプログラムが発生することを可能にするデ
イメンシヨンオーバライドアドレツシングオプシ
ヨンを設けるために、独特の2重目的の方法でイ
ンデツクシングを用いることによつて達成され
る。
この発明の特別の特性ならびにこの発明の他の
特徴、効果、目的および用途は、添付の図面を参
照する以下の詳細な説明により明らかとなろう。
【図面の簡単な説明】
第1図は、この発明の好ましい実施例を示す概
略ブロツク図である。第2図は、インデツクシン
グもデイメンシヨンオーバライドもされていない
第1図のオペレーシヨンの例を示す。第3図は、
第2図の例の結果を示す図形的表現である。第4
図は、デイメンシヨンオーバライドがされずイン
テツクシングがされた第1図のオペレーシヨンの
例を示す。第5図は、第4図の結果を示す図形的
表現である。第6図は、インデツクシングおよび
デイメンシヨンオーバライドがともにされた第1
図のオペレーシヨンの例を示す。第7図は、第6
図の例の結果を示す図形的表現である。
【発明の詳細な説明】
同一の数字および文字は、全図面を通じて同じ
要素を示す。
前述した特許第4251860号に記述されたような
先行技術の仮想または論理アドレスシステムにお
いて、メモリ記憶装置は典型的にブロツクまたは
セグメントとして共通に参照される識別可能な領
域に分割されていると考えられる。これらのセグ
メントは2パート論理アドレスによつて典型的に
参照され、第1のパートはセグメントの特別のも
のを識別し、また第2のパートはセグメント内の
オフセツトを識別する。
前述の特許第4251860号に記述された実施例に
おいて、命令からの仮想アドレスの生成は、分離
したセグメントおよびオフセツトレジスタに分割
され、それらのセグメントおよびオフセツト値が
ともに選択された基準アドレスを構成するセグメ
ントおよびオフセツト値を備える基準アドレスを
選択するための命令によつて設けられる基準レジ
スタフイールドの使用を含んでいる。また命令に
よつて設けられた変位フイールドは、所望の仮想
アドレスを形成するための選択されたセグメント
レジスタに含まれる基準アドレスのセグメント部
分と結合される結果的オフセツト値を設けるため
の選択されたオフセツトレジスタ内に含まれてい
る値に加算される。選択された基準アドレスのオ
フセツト部分のみが仮想アドレスを形成するため
の変位フイールドと加算されることが必要である
ので、そうでない場合に可能なよりもより狭いデ
ータ経路が必要とされる。
前述した特許第4251860号に記述された仮想ア
ドレス発生方法は比較的狭いデータ経路を用いて
大きな仮想アドレスが発生されることを可能とす
るが、命令によつて発生され得るこの仮想アドレ
スは、この命令の変位フイールドを命令の基準レ
ジスタフイールドによつて選択される特定の基準
アドレスに加算することに限定されることは明ら
かであろう。オーバフローが検出されるならば結
果のアドレスが次のセグメントを侵略することを
示しており、操作は打切られる。各命令が特許第
4251860号に記述された方法を用いてアクセスし
得るアドレスレンジは、1つのセグメントに限ら
れることはこのように理解されよう第1図に示さ
れたこの発明の好ましい実施例は、特許第
4251860号の狭いデータ経路の効果を備えてはい
るが、一方以下の説明から明らかになろうよう
に、複数の異なつたセグメント内のデータにアク
セスすることのできるアドレスを発生することが
同一の命令にとつて可能であるようにしている。
したがつて第1図を参照して、データプロセシ
ングオペレーシヨンの間に典型的に起こるよう
に、処理されるべき命令が取出されて命令レジス
タ10内に置かれることが理解されよう。示され
るように典型的な命令は、実行されるべきオペレ
ーシヨンを指定するOPコードのOPと、これから
後に記述されるように、仮想または論理アドレス
の発生にともに協力するインデツクスセレクタIS
および変位Dを備えるアドレス部分とを含む。典
型的にこのOPコードOPは、発生されたアドレス
に対応するメモリ内のデータ上のOPコードによ
つて指定されるオペレーシヨンの実行のために、
データプロセツサの実行装置(図示せず)に送ら
れる。そのような実行が完成され得る特別な方法
は、この発明の一部ではない。
なお第1図を参照して、インデツクスセレクタ
ISは出力が複数のインデツクスレジスタ16のう
ちの特定の1つが選択するインデツクスデコーダ
14に用いられているが命令レジスタ10内の命
令の変位Dは計算および論理装置(ALU)12
の右側の入力に用いられていることが見られよ
う。選択されたインデツクス16aは、命令レジ
スタ10からの変位Dとの加算のために、ALU
12の左側に加えられる。ALU12の出力での
結果的和はオフセツト部分15aおよびデイメン
シヨンオーバライド部分15bを持つ拡張された
アドレスレジスタ15内にストアされる。アクセ
スするための命令を許容することがそれによつて
望まれるアドレスレンジのため、拡張されたアド
レスレジスタ15は好ましくはオーバフローする
ことなくALU12の出力で最も大きな和の出現
にも充分適合する広さに形成されることが理解さ
れよう。
第1図に示されるように、拡張されたアドレス
レジスタ15内のオフセツト部分15aは、所望
の仮想または論理アドレスのオフセツト値であ
り、かつ論理アドレスレジスタ20のオフセツト
部分20a内にロードされる。デイメンシヨンオ
ーバライド部分15bは、論理アドレスレジスタ
20のセグメント部分にロードされるセグメント
を導き出すために用いられる。より詳細には、第
1図から理解されるように、拡張されたアドレス
レジスタ15のデイメンシヨンオーバライド部分
15bは、プロセツサによつて実行されている複
数のプログラムのうちの特定のものを示すプログ
ラム番号信号をまた受信するデイメンシヨンオー
バライドデコーダ23に用いられる。プログラム
番号はこのデイメンシヨンオーバライドデコーダ
23が複数のセグメントテーブルのうちの特定の
もの(各プログラムが実行されるためのもの)を
選択するようにし、またデイメンシヨンオーバラ
イド部分15bはデイメンシヨンオーバライドデ
コーダ23が選択されたセグメントテーブル内の
特定のセグメントエントリ48を選択するように
する。これらのセグメントテーブル25はCPU
の主記憶装置の一部としてまたは分離したハード
ウエアまたはフアームウエアとして設けられ得る
ことが理解されよう。
第1図の各セグメントテーブル25は、その各
プログラムがアクセスを許されるであろう特定の
記憶セグメントを指定する複数のセグメントエン
トリ48を含む。これらのセグメントエントリ4
8は、リアルメモリ内の隣接部分に対応する必要
はない。これらのセグメントの1つまたはそれ以
上が他のプログラムによつて特権を与えられおよ
び/または共用され得るので、各セグメントエン
トリ48は、選択されたセグメントが不当または
使用不可能であるときにイベントに移行されるた
めの適当な動作を許可するためにCPUに送られ
るセグメントチエツクビツト48aを含んでい
る。このような動作はたとえば、選択されたセグ
メントが使用可能になるまでプログラムを阻止す
ることを含んでもよい。
セグメントチエツクビツト48aが、選択され
たセグメントテーブル25内の選択されたセグメ
ントエントリ48が妥当または使用可能であるこ
とを示しているならば、デイメンシヨンオーバラ
イドデコーダ23はそのときはこの選択されたセ
グメントエントリ48が論理アドレスレジスタ2
0のセグメント部分20b内に読込まれるように
する。各オフセツト内の連結されたオフセツトお
よびセグメントと論理アドレスレジスタ20のセ
グメント部分20aおよび20bとは、このよう
に次にCPU主記憶装置40に用いられる物理ア
ドレス内に翻訳またはマツプするために、アドレ
ス翻訳プログラム30(従来の形式のものであつ
てよい)に用いられる全論理アドレスを構成す
る。
この発明のアドレス発生手段の対応性および適
応性は、第1図に従つて第2図から第7図に描か
れた例を参照して、ここで実証されよう。論理ア
ドレスレジスタのセグメント部分20b内にロー
ドされた選択されたセグメントエントリはセグメ
ントの基準アドレスに対応し、オフセツト部分2
0a内にロードされたオフセツトはこのセグメン
ト内のオフセツトであり、またアドレス翻訳プロ
グラム30はCPU主記憶装置40内の実際のア
ドレスを得るためのこれらの部分20aおよび2
0bと結合していることが、これらの例により推
測されよう。しかしこの発明はまた、部分20a
および20bの内容に応答する実際のアドレスを
導出するための異なつた形式のアドレス翻訳技術
にも適用可能であることが理解されるべきであ
る。
第2図および第3図は、全部0である選択され
たインデツクスレジスタ16(第1図の命令レジ
スタ10内のインデツクスセレクタISによつて選
択される)によつて示されるように、インデツク
スもデイメンシヨンオーバライドも命令によつて
呼出されない場合の例を示している。典型的に各
インデツクスレジスタ16は、8つの2進化10進
数字を備え得る。第2図に示されるように選択さ
れインデツクスレジスタ16が全部0である場合
には、拡張されたアドレスレジスタ15内にロー
ドされる結果的和は、単に第1図の命令レジスタ
10内の変位Dにすぎない。通常変位Dの最大値
は拡張されたアドレスレジスタ15のデイメンシ
ヨンオーバライド部分15b内に桁上げされるほ
ど大きくはないので、デイメンシヨンオーバライ
ド部分15bは第2図に示されるように全部0の
値のまま残るであろう。典型的に拡張されたアド
レスレジスタのオフセツト部分15aは、6つの
2進化10進数字を含むことができ、デイメンシヨ
ンオーバライド部分15bは2つの2進化10進数
字を備え得る。
選択されたアドレスレジスタ15内のデイメン
シヨンオーバライド部分15bの全部0の値は、
(デイメンシヨンオーバライドデコーダ23を通
じて、)現行のプログラム番号に対応するセグメ
ントテーブル25内のエントリ48のうちの最初
のものを選択する。論理アドレスレジスタ20の
セグメント部分20b内にロードされるこの最初
のエントリは、単に現行のプログラムに対して指
定されると考えられるセグメントBの基準アドレ
スにすぎない。セグメントB内の結果的アドレス
は、第3図に図式的に示されている。
次に第4図および第5図に示された例を考える
と、この例はインデツクシングがデイメンシヨン
オーバライドを除いて呼出されている状態を示し
ている。第4図に示されるように、選択されたイ
ンデツクスレジスタ16はたとえば00012163であ
ると考えられ、また変位Dはたとえば900054であ
ると考えられる。ALU12によつて設けられる
和は、したがつて912217である。この和912217は
デイメンシヨンオーバライド部分15b内に桁上
げされないので、拡張されたアドレスレジスタ1
5内のデイメンシヨンオーバライド部分15bは
したがつて全部0のまま残る。したがつてセグメ
ントB基準アドレスを指示するように、セグメン
トB基準レジスタアドレスが再び論理アドレスレ
ジスタ20のセグメント部分20b内にロードさ
れるようにするセグメントテーブル25の最初の
エントリが再び選択されるが、拡張されたアドレ
スレジスタ15のオフセツト部分15a内の和
912217は論理アドレスレジスタ20のオフセツト
部分20a内にロードされる。典型的な結果的ア
ドレスが、第5図に示されている。
考慮されるべき最後の例が第6図および第7図
に示されており、かつインデツクシングおよびデ
イメンシヨンオーバライドがともに呼出されてい
る状態を示している。これは選択されたインデツ
クス内のインデツクスが今度は大きな値1142131
を持つているとされるが、変位Dは再び900054で
あるとされる第5図に示されている。今度は
ALU12の出力で形成される和は02042185であ
るので、拡張されたアドレスレジスタ15のデイ
メンシヨンオーバライド部分15b内への02の桁
上げがある。したがつてデイメンシヨンオーバラ
イド部分15bは今度は、たとえばセグメントQ
の基準アドレスに対応するセグメントテーブル2
5内の3番目のエントリを、論理アドレスレジス
タ20のセグメント部分20b内にロードする。
このセグメントQは、たとえばプログラムの番号
によつて分割されかつプログラムの指定セグメン
トのいかなるものにも含まれるように非常に大き
いテーブルまたは他の大きいデータ構造の部分を
含み得る。セグメントQ内の典型的な結果的論理
アドレスが、第7図に示されている。もちろん選
択されたエントリ48のチエツクビツト48aが
それが不当であるかまたは使用不可能であること
を示しているなら、そのときはCPUは従来の方
法において達成され得るオペレーシヨンを中止す
る。
拡張されたアドレスレジスタ15のデイメンシ
ヨンオーバライド部分15b内にロードされた値
は変位Dと選択されたインデツクスレジスタ16
との和からの桁上げであるので、たとえば前述の
特許第4251860号における場合のようにオーバフ
ローが起こつたときであつても翻訳を禁止または
打切る必要がなく、それによつて命令によつてア
クセスされるための非常に拡張されたアドレスの
範囲が可能となるということが、第6図および第
7図の例から理解されよう。
この発明は特定の図示された実施例との関係に
おいて記述されてきたが、構成、配列および用途
における多くの変形がこの発明の範囲内において
可能であることが理解されよう。たとえばこの発
明はマツプされたメモリならびに仮想メモリとと
もにの使用、および様々なタイプのメモリ機構に
適用可能である。
したがつてこの発明は、添付した請求の範囲の
範囲内に包含されるすべての可能な修正および変
形を含んでいると考えられる。 Claim 1: In a data processing system comprising a memory and an address translation program, an improved apparatus for generating logical addresses for use by the translation program to access the memory, comprising: means for storing data indicating an address, the data including index selection data and displacement data; a plurality of index registers each containing index data; and a plurality of index registers each containing index data; means for selecting one of the displacement data, an expanded address register, and means for adding index data in the selected index register to the displacement data and adding the sum to the expanded address register. means including an adder for storing a predetermined number of least significant digits of the sum in the extended address register; a logical address register comprising first and second portions; means for storing within the first portion of the system; and a plurality of tables each containing a plurality of address location entries for a corresponding one of a plurality of programs that can be executed by the system. table store means for storing, responsive to a program identification number provided by said system and a predetermined number of most significant digits of a sum in said extended address register;
selecting means for accessing a corresponding one of the address arrangement entries in a selected one of the tables and storing the accessed entry in the second portion of the logical address register; and means for adding the contents of first and second portions of an address register to said address translation program. 2. the predetermined number of most significant digits concatenated with the predetermined number of least significant digits constitute a sum in the expanded address register;
An apparatus according to claim 1. 3. The displacement data comprises a value that is not large enough by itself to cause a carry within the predetermined number of predetermined numbers in the expanded address register. equipment. 4. Said means for storing data indicative of a logical address is an instruction register additionally containing operation data indicative of the type of operation to be performed on the data at said logical address. Apparatus described in section. 5. The memory includes a plurality of segments, and each data location entry in the table indicates a reference address for a particular segment.
The device according to any one of paragraphs 1, 2, 3, and 4. 6. The table corresponding to the program contains address location entries corresponding to the base address of the segment specified for the program, and the table also includes at least one address corresponding to the base address of the segment shared by other programs. Claim 5, including a placement entry
Apparatus described in section. 7. The apparatus of claim 6, wherein each address configuration entry includes check data indicating their status. 8. The least significant digits of the predetermined number in the expanded address register determine the resulting location accessed within the segment indicated by the selected address location entry. The device described. 9. In a data processing system comprising a memory and an address translation program, an improved method for generating a logical address for use by the translation program to access the memory, the method comprising: indicating the logical address; providing index selection data and displacement data; providing a plurality of tables each including a plurality of address location entries for a corresponding one of a plurality of programs that can be executed by the system; selecting one of a plurality of index values in response to said index selection data and adding said displacement data to the selected index value to form a sum; and a program provided by said system. selecting an address configuration entry from a selected table in response to an identification number and a predetermined number of most significant digits of said sum; and selecting the selected address configuration entry along with the remaining digits of said sum. applying the address translation program to the address translation program. 10. The method of claim 9, wherein the displacement data comprises a value that is not itself large enough to cause a carry within a predetermined digit of the predetermined number. 11. Claim 9, wherein the memory includes a plurality of segments, and each data location entry in the table indicates a reference address for a particular segment.
The method according to paragraph 1 or paragraph 10. 12 The table corresponding to the program includes an address location entry corresponding to the base address of the segment specified for the program, and the table also includes at least one address corresponding to the base address of the segment shared by other programs. Claim 1, including a placement entry
The method described in Section 1. 13. the remaining digits of the sum determine the resulting location to be accessed within the segment indicated by the selected address location entry;
The method according to claim 12. REFERENCE TO RELATED PATENT APPLICATIONS This invention relates to an address generation apparatus and method by inventor B. Gaither et al. Our commonly assigned patent application filed in SN Contains the main matters related to. BACKGROUND OF THE INVENTION This invention relates generally to an improved method and apparatus for generating memory addresses within a data processing system, and more particularly to a comparison within a data processing system using virtual or mapped data storage. The present invention relates to an improved method and apparatus for generating virtually large virtual or logical addresses. The most straightforward way to create large addresses is to provide a data processor with a data path wide enough to accommodate all bits of the address. However, the hardware obtained by this method is
It is extremely uneconomical. Another known method is to provide relatively narrow data paths within the data processor and then form multiple passes of these narrow data paths to process addresses that are wider than the data paths.
The difficulty with this multi-pass method is that these multiple passes result in a significant reduction in operating speed. One method for overcoming the drawbacks of the multi-pass method described above is described in US Pat. No. 4,251,860 issued February 17, 1981 to GRMitchell et al.
In this patent, an embodiment is described that allows the use of relatively narrow data widths without requiring multiple passes to manipulate large virtual addresses. This is accomplished by separating the reference address register, which contains the data used to form the virtual address, into segment and offset registers. The operation then requires that only the offset portion of the selected reference address be involved in the computational operation to form the virtual address, such that the generated virtual address is narrower even if it is wider. A data path is provided to enable it to be used. Other background information on possible addressing techniques is provided in U.S. Patent No. 4,240,139, issued December 16, 1980.
Issue, August 1980, Ian LeMair's article "Indexed Mapping", Computer Design, p. 111-118.
Extends Microprocessor Addressing Range”,
IBM Technical Disclosure Bulletin , Vol.23,
No. 5 PL Martinez’s article “Storage Relocation
Translator”, IBM Technical Disciosure
Bulletin, Vol. 23, No. 6, November 1980, p. 2199 and 2200, PL Martinez's article “Relocation
Translator Address Bit Scheme" and references cited in the above patents and articles. SUMMARY OF THE INVENTION In a preferred embodiment of the present invention, the method described in the above-mentioned patent no. Generally similar methods are used. However, the present invention further provides even more flexible and responsive address generation capabilities in a relatively simple and economical manner. Briefly, in the preferred embodiment of the invention, these added capabilities allow a program to generate addresses that can access very large data structures outside the program's normally available addressing range. This is achieved by using indexing in a unique dual purpose manner to provide dimension override addressing options. Particular characteristics of the invention, as well as other features, advantages, objects and uses of the invention, will become apparent from the following detailed description, taken in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a schematic block diagram illustrating a preferred embodiment of the invention. FIG. 2 shows an example of the operation of FIG. 1 without indexing or dimension override. Figure 3 shows
3 is a graphical representation showing the results of the example of FIG. 2; Fourth
The figure shows an example of the operation of FIG. 1 with no dimension override and indexing. FIG. 5 is a graphical representation of the results of FIG. Figure 6 shows the first example with both indexing and dimension override.
An example of the operation of the figure is shown. Figure 7 shows the 6th
Figure 2 is a graphical representation of the results of the example shown. DETAILED DESCRIPTION OF THE INVENTION Like numbers and letters indicate like elements throughout the drawings. In prior art virtual or logical addressing systems, such as those described in the aforementioned patent no. 4,251,860, memory storage is typically considered to be divided into distinguishable regions commonly referred to as blocks or segments. . These segments are typically referenced by a two-part logical address, with the first part identifying the particular segment and the second part identifying the offset within the segment. In the embodiment described in the aforementioned patent no. 4,251,860, the generation of a virtual address from an instruction is divided into separate segment and offset registers, the segment and offset values of which together constitute the selected reference address. It includes the use of a reference register field provided by the instruction to select a reference address with a segment and offset value. The displacement field provided by the instruction also specifies the selected offset value to provide a resulting offset value that is combined with the segment portion of the reference address contained in the selected segment register to form the desired virtual address. is added to the value contained in the set register. Because only the offset portion of the selected reference address needs to be added with the displacement field to form the virtual address, a narrower data path is required than would otherwise be possible. Although the virtual address generation method described in the aforementioned patent No. 4,251,860 allows large virtual addresses to be generated using a relatively narrow data path, this virtual address, which can be generated by an instruction, It will be clear that we are limited to adding the instruction's displacement field to the particular reference address selected by the instruction's reference register field. If an overflow is detected, indicating that the resulting address invades the next segment, the operation is aborted. Each instruction has a patent number
It is thus understood that the address range that can be accessed using the method described in No. 4,251,860 is limited to one segment. The preferred embodiment of the invention shown in FIG.
Although it has the effect of the narrow data path of No. 4251860, as will become clear from the discussion below, the same instruction can generate addresses that can access data in several different segments. We are trying to make it possible for everyone. Thus, with reference to FIG. 1, it will be appreciated that the instruction to be processed is fetched and placed into instruction register 10, as typically occurs during a data processing operation. A typical instruction, as shown, is an OP code specifying the operation to be performed, and an index selector IS, which together cooperate in generating a virtual or logical address, as will be described later.
and an address portion with a displacement D. Typically, this OP code OP performs the operation specified by the OP code on the data in memory corresponding to the generated address.
The data is sent to the data processor's execution unit (not shown). The specific manner in which such implementation may be accomplished is not part of this invention. Referring to Figure 1, select the index selector.
IS is used for an index decoder 14 whose output selects a particular one of a plurality of index registers 16, but the displacement D of an instruction within an instruction register 10 is used by an arithmetic and logic unit (ALU) 12.
You can see that it is used for the input on the right side of . The selected index 16a is added to the ALU for addition with the displacement D from the instruction register 10.
Added to the left side of 12. The resulting sum at the output of ALU 12 is stored in an extended address register 15 having an offset portion 15a and a dimension override portion 15b. Due to the address range by which it is desired to allow instructions to access, the extended address register 15 is preferably wide enough to accommodate even the largest sum occurrence at the output of the ALU 12 without overflowing. It will be understood that it is formed. As shown in FIG. 1, offset portion 15a in expanded address register 15 is the offset value of the desired virtual or logical address and is loaded into offset portion 20a of logical address register 20. Dimension override portion 15b is used to derive the segment to be loaded into the segment portion of logical address register 20. More specifically, as understood from FIG. 1, the dimension override portion 15b of the extended address register 15 is a program indicating a particular one of a plurality of programs being executed by the processor. It is used in the dimension override decoder 23 which also receives the number signal. The program number allows the dimension override decoder 23 to select a specific one (for each program to be executed) from a plurality of segment tables, and the dimension override portion 15b allows the dimension override decoder 23 to select a specific one (for each program to be executed) from among the plurality of segment tables. Causes decoder 23 to select a particular segment entry 48 in the selected segment table. These segment tables 25 are
It will be appreciated that it may be provided as part of the main memory or as separate hardware or firmware. Each segment table 25 of FIG. 1 includes a plurality of segment entries 48 specifying particular storage segments that each program will be permitted to access. These segment entries 4
8 need not correspond to adjacent portions in real memory. Since one or more of these segments may be privileged and/or shared by other programs, each segment entry 48 will respond to the event when the selected segment is invalid or unavailable. Contains a segment check bit 48a that is sent to the CPU to permit proper operation to be migrated. Such operations may include, for example, blocking the program until the selected segment is available. If the segment check bit 48a indicates that the selected segment entry 48 in the selected segment table 25 is valid or usable, the dimension override decoder 23 then Entry 48 is logical address register 2
0 segment portion 20b. The concatenated offsets and segments within each offset and segment portions 20a and 20b of the logical address register 20 are thus combined into an address translator for translation or mapping into a physical address that is then used in CPU main memory 40. Configure all logical addresses used by program 30 (which may be of conventional type). The correspondence and adaptability of the address generation means of the invention will now be demonstrated with reference to the examples depicted in FIGS. 2 to 7 in accordance with FIG. The selected segment entry loaded into segment portion 20b of the logical address register corresponds to the base address of the segment and offset portion 20b.
The offset loaded in 0a is the offset within this segment, and the address translation program 30 reads these portions 20a and 2 to obtain the actual address in CPU main memory 40.
It can be inferred from these examples that it is bound to 0b. However, this invention also includes portion 20a.
It should be understood that different types of address translation techniques for deriving the actual address responsive to the contents of and 20b are also applicable. FIGS. 2 and 3 show that the index is set as indicated by the selected index register 16 (selected by the index selector IS in the instruction register 10 of FIG. 1) which is all zeros. An example is shown in which neither Dimension Override nor Dimension Override is called by the instruction. Typically each index register 16 may contain eight binary coded decimal digits. If selected as shown in FIG. 2 and index register 16 is all zeros, the resulting sum loaded into expanded address register 15 is simply the displacement in instruction register 10 of FIG. It's just D. Normally, the maximum value of the displacement D is not large enough to be carried into the dimension override section 15b of the extended address register 15, so the dimension override section 15b is filled with all zeros as shown in FIG. The value will remain the same. Typically, the offset portion 15a of the extended address register may contain six binary coded decimal digits, and the dimension override portion 15b may comprise two binary coded decimal digits. The value of all 0s in the dimension override portion 15b in the selected address register 15 is:
The first of the entries 48 in the segment table 25 corresponding to the current program number is selected (through the dimension override decoder 23). This first entry loaded into segment portion 20b of logical address register 20 is simply the base address of segment B that is considered to be designated for the current program. The resulting address within segment B is shown diagrammatically in FIG. Considering now the example shown in FIGS. 4 and 5, this example shows a situation where indexing is invoked except for dimension override. As shown in FIG. 4, the selected index register 16 may be, for example, 00012163, and the displacement D may be, for example, 900054. The sum provided by ALU 12 is therefore 912217. This sum 912217 is not carried into the dimension override part 15b, so the extended address register 1
The dimension override portion 15b within 5 therefore remains entirely 0. The first entry of the segment table 25 is therefore again selected so that the segment B reference register address is again loaded into the segment portion 20b of the logical address register 20 so as to point to the segment B reference address; Sum in offset portion 15a of extended address register 15
912217 is loaded into the offset portion 20a of the logical address register 20. A typical resulting address is shown in FIG. The final example to be considered is shown in FIGS. 6 and 7, and shows a situation where indexing and dimension override are both called. This means that the index in the selected index will now have a large value of 1142131
It is shown in FIG. 5 that the displacement D is again assumed to be 900054. Next time
Since the sum formed by the output of ALU 12 is 02042185, there is a carry of 02 into dimension override portion 15b of extended address register 15. Therefore, dimension override portion 15b is now, for example, segment Q.
Segment table 2 corresponding to the reference address of
5 into segment portion 20b of logical address register 20.
This segment Q may contain portions of a very large table or other large data structure, such as divided by program number and included in any of the program's designated segments. A typical resulting logical address within segment Q is shown in FIG. Of course, if the check bit 48a of the selected entry 48 indicates that it is invalid or unusable, then the CPU aborts the operation, which could be accomplished in a conventional manner. The value loaded into the dimension override portion 15b of the extended address register 15 is the displacement D and the selected index register 16.
Since it is a carry from the sum of It will be seen from the examples of FIGS. 6 and 7 that a very extended range of addresses is possible for use. Although this invention has been described in connection with specific illustrated embodiments, it will be understood that many variations in construction, arrangement and application are possible within the scope of this invention. For example, the invention is applicable to use with mapped memory and virtual memory, and to various types of memory schemes. It is therefore believed that the invention includes all possible modifications and variations falling within the scope of the appended claims.