JPS6113261B2 - - Google Patents

Info

Publication number
JPS6113261B2
JPS6113261B2 JP56156193A JP15619381A JPS6113261B2 JP S6113261 B2 JPS6113261 B2 JP S6113261B2 JP 56156193 A JP56156193 A JP 56156193A JP 15619381 A JP15619381 A JP 15619381A JP S6113261 B2 JPS6113261 B2 JP S6113261B2
Authority
JP
Japan
Prior art keywords
memory
data
address
processor
cache
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
Application number
JP56156193A
Other languages
Japanese (ja)
Other versions
JPS5858666A (en
Inventor
Tadaaki Bando
Yasushi Fukunaga
Yoshinari Hiraoka
Hidekazu Matsumoto
Toshuki Ide
Takeshi Kato
Tetsuya Kawakami
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.)
Hitachi Engineering Co Ltd
Hitachi Ltd
Original Assignee
Hitachi Engineering Co Ltd
Hitachi Ltd
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 Hitachi Engineering Co Ltd, Hitachi Ltd filed Critical Hitachi Engineering Co Ltd
Priority to JP56156193A priority Critical patent/JPS5858666A/en
Priority to US06/320,934 priority patent/US4481573A/en
Priority to DE8181109719T priority patent/DE3176512D1/en
Priority to CA000390161A priority patent/CA1173567A/en
Priority to EP81109719A priority patent/EP0052370B1/en
Publication of JPS5858666A publication Critical patent/JPS5858666A/en
Publication of JPS6113261B2 publication Critical patent/JPS6113261B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)

Description

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

本発明は複数のプロセツサが1つの主記憶装置
(以下主メモリと略称する)を共用するデータ処
理装置に関する。 ここで、複数のプロセツサのうち、少なくとも
1つは、命令を実行するために仮想アドレスでメ
モリアクセスを行うプロセツサであり、ここで
は、このプロセツサをジヨブプロセツサと称して
いる。 また、少なくとも1つは、補助記憶装置とも称
される外部記憶装置(以下外部メモリと略称す
る)との入出力を行うために、仮想アドレスでメ
モリアクセスを行うプロセツサであり、ここで
は、このプロセツサをフアイルプロセツサと称し
ている。 また、ジヨブプロセツサには、仮想アドレスで
メモリアクセスされるキヤツシユメモリが設けら
れている。 更に、本発明におけるデータ処理装置は、各プ
ロセツサから共通に使用され、仮想アドレスを物
理アドレスに変換するアドレス変換装置を有する
ものである。 本発明は、このようなデータ処理装置におい
て、フアイルプロセツサが主メモリの内容を書き
換え(ページのロールイン、ロールアウト)時
に、アドレス変換テーブルを更新するために生ず
る問題、即ち、キヤツシユメモリが主メモリのコ
ピーであるという従来の考え方がくずれることか
ら生ずる問題を解決するようにしたデータ処理装
置に関する。 まず、本発明の背景を詳細に説明する。 1つの主メモリを複数のプロセツサが共用する
データ処理装置は、一般にマルチプロセツサシス
テムと称されている。 従来のマルチプロセツサシステムでは、一般
に、シングルコンピユータのコスト/パーフオー
マンスを圧迫しない形で、マルチシステム構成を
可能としてきた。そのため、プロセツサ台数が、
2台程度では、最高な構成であつたが、プロセツ
サ台数が更に増加すると、相互の干渉が大きくな
り、ハードウエア構成が大きくなりすぎるという
問題があつた。 マルチプロセツサシステムにおいて、解決しな
ければならない問題の1つに仮想記憶方式があ
る。仮想記憶方式は、良く知られているが、これ
は、主メモリと外部メモリとを見掛け上、一体の
ものとみなし、プロセツサから要求された情報が
主メモリ内になく、外部メモリにある場合には、
主メモリの比較的使われていない一部分の情報を
外部メモリに転送し、要求された情報を外部メモ
リから主メモリへ転送するのを自動的にシステム
が行うものである。 主メモリの情報を外部メモリに転送することを
ロールアウト、逆に、外部メモリの情報を主メモ
リへ転送することをロールインと称している。 このような、ロールイン、ロールアウトの制御
を実施する為、一般には、主メモリと外部メモリ
とは、それぞれページと称される1つの単位に分
割されて使用されている。 各ページに対応して、そのページが現在主メモ
リ上にあるかどうか、またある場合は、それに対
応する主メモリの物理アドレス(実アドレスとも
称されている)がいくらであるかの情報が、変換
テーブル上に置かれている。 プロセツサからのメモリアクセス時のアドレス
は、仮想アドレスで与えられ、その上位アドレス
部で変換テーブルが索引され、物理アドレスへの
変換が行なわれる。 このような、変換テーブルは、仮想アドレスの
ページ数分だけ必要となり、必要なメモリ容量が
大きくなり、そのため、容量の削減を図ろうとし
て変換テーブルをセグメントテーブルと、ページ
テーブルのような2レベルのアドレス変換を実施
するものが多い。 変換テーブルは、上記したように、メモリ容量
を多く必要とするので、一般には、主メモリ上に
置かれている。そのため、プロセツサからのメモ
リアクセスがある毎に、主メモリの変換テーブル
をチエツクしていたのでは、1つのメモリアクセ
ス要求に対して必ず3回以上のメモリアクセスが
発生し、オーバーヘツドが無視できない。 そこで、仮想記憶方式をとるプロセツサには、
TLBと称される高速バツフアを設けているもの
が多く、この高速バツフアには最近使用された仮
想アドレスに対応した物理アドレスが記憶されて
いる。 これによれば、プロセツサからのメモリアクセ
スが発生すると、まず、TLBの中に、対応する
アドレスがないかどうかがチエツクされ、存在す
る場合には、アドレス変換のための、変換テーブ
ルのメモリアクセスが必要でなく、アドレス変換
のオーバーヘツドは少なくてアクセス可能とな
る。このような、TLBを含んだアドレス変換装
置は、従来は、プロセツサ毎におかれ、プロセツ
サ内の制御装置の手助けを借りて仮想制御方式を
実現していた。 一方、性能を上げるためには、キヤツシユメモ
リと呼ばれる高速メモリを各プロセツサに設ける
ことが一般的になつている。このキヤツシユメモ
リは、主メモリの一部の写しで、通常、主メモリ
よりも5〜10倍高速なものとして設計されてい
る。 プロセツサからのメモリアクセスは、まずキヤ
ツシユに該当するものがあるか否かのチエツクを
行い、あれば、その内容を返送し、なければ主メ
モリをアクセスすることになる。 ところで、仮想記憶方式で、キヤツシユメモリ
を有する場合には、従来、プロセツサから見て
TLB、キヤツシユメモリ、主メモリの順で接続
されていた。これは、キヤツシユメモリは、実記
憶である主メモリの写しであるという考え方に基
づくもので、キヤツシユメモリのアクセスは、物
理アドレスに変換してから行なわなければならな
かつた。 このような、従来方式には、次のような問題点
がある。 第1の問題点は、実効的なメモリアクセス時間
が長くなることである。 この理由は、プロセツサからキヤツシユメモリ
をアクセスする場合に、必ずTLBを通らなけれ
ばならないからである。すなわち、プロセツサか
らの仮想アドレスを、TLBにより物理アドレス
に変換してからキヤツシユメモリをアクセスする
ことになるからである。 第2の問題点は、TLBが全プロセツサに必要
なため、プロセツサの数が増えた場合、それにつ
れてハードウエア物量が大きくなるばかりでな
く、TLBのずれを修正しなければならず、これ
が複雑になつていることである。 TLBのずれの修正は、あるプロセツサが、ペ
ージをスワツプした時に、変換システム、TLB
のエントリーを更新するが、当該プロセツサのみ
でなく、他のプロセツサにもその旨を連絡して、
該当部分をクリヤしなければならない。 これは、一般にTLB Purge(Translation
Lookaside Buffer Purge)と称され、マルチプ
ロセツサを構成する場合の1つの重要なポイント
となつている。 第3の問題点は、一般のジヨブプロセツサはメ
モリをアクセスする場合、仮想アドレスを用いる
が、入出力プロセツサは、TLBを持たないた
め、物理アドレスでアクセスすることから生ずる
もので、両者で、アドレスの受け渡しをする際に
変換が必要となるためにオーバーヘツドが増加す
ることである。 第4の問題点は、第2の問題点と類似している
が、マルチプロセツサでなくても、高度なパイプ
ライン制御をするプロセツサでは命令をアクセス
するユニツトとオペランドをアクセスするユニツ
トは別々で、各々にキヤツシユメモリを持ち、高
速化を図ることが行なわれるが、この際にも、従
来方式では、TLBを各ユニツトに持たなければ
ならなくなり、ハードウエア量が増大するという
ことである。 このような問題点を解決するために、キヤツシ
ユメモリを仮想アドレスでアクセスし、ビツトし
ない場合のみアドレス変換を行うたり方が、特開
昭49−53339号公報の中に示されている。これに
よればキヤツシユメモリをアクセスする場合に毎
回アドレス変換を行う必要がなくなつて、高速化
を図ることが可能となる。 しかしながら、この公報には、本方式は次の欠
点があるために、採用できないことを指摘してい
る。それは、 (1) 2つの異なつた仮想アドレスが同一の物理ア
ドレスを参照する場合、うまくゆかない。これ
はある仮想アドレスの内容を書き変えた時に同
一の物理アドレスを示す別の仮想アドレスで指
定されるキヤツシユメモリの内容が書き変つて
いなければならないためである。 (2) ページあるいはセグメントテーブルの内容を
書き変える場合に、キヤツシユの無効化をする
ためのスキヤンが必要である。 (3) ストレージキーは物理アドレスに対応してい
るために、プロテクシヨンチエツクが不可能と
なる。 の3点である。 特開昭56−38649号公報にも、同様に、キヤツ
シユメモリを仮想アドレスでアクセスする方法が
示されているが、上記の問題点の解決法は触れら
れていない。 また、特開昭55−142476号公報には、アドレス
変換装置を複数のプロセツサで共有する方式が示
されている。これによれば、複数のプロセツサで
共有するために、マルチプロセツサ構成時に、経
済性を実現できるというものであるが、ここに
は、キヤツシユメモリは示されていない。 本発明は、複数のプロセツサがあり、その中の
少なくともひとつのプロセツサが、仮想アドレス
でアクセスするキヤツシユメモリを持ち、アドレ
ス変換装置は全プロセツサで共有する構成に適用
されるものである。 このような構成の目的は、アドレス変換装置に
要するハード量を削減した上で、実効メモリアク
セス時間の短縮がはかることにある。 他の目的は、TBL間の一致化制御のような複
雑な処理が不要な方式を提供することである。 他の目的は、入出力プロセツサなどからも仮想
アドレスでメモリをアクセスできる方式を提供
し、アドレスの一元管理を目指するものである。 他の目的は、パイプライン制御を行う複数のユ
ニツトから成る計算機において、高速かつ経済的
な、メモリ制御方式を実現することである。 しかしながらこの方式の最大の問題点は、特開
昭49−53339にも指摘されているように、主メモ
リのページあるいはセグメントテーブルを書換え
た場合に、キヤツシユメモリには、これが伝わら
ず、キヤツシユメモリの内容が主メモリの状態を
正しく反映しなくなることである。 本発明の目的は、この問題点を解決したデータ
処理装置を提供することである。 次に、前述した特開昭49−53339号公報に指摘
されている問題点について、本発明でどう解決し
ているかの考え方を説明する。 まず第1の問題である2つの仮想アドレスが同
一の物理アドレスを示すことができないというこ
とであるが、このようなニーズは多重仮想記憶の
場合に必要であるが、多重仮想記憶が必要となる
第1の要因は、アドレスを指定するビツト長が24
ビツト程度と小さく仮想空間が224=16Mega程度
でサイズが不十分である場合に必要となつたもの
で、232=4Giga,248=256Teraもの大きな仮想空
間をサポートできれば、多重仮想記憶のニーズは
少ない。また共面のサブルーチンや、データを異
なる仮想アドレスでアクセスすることは、エリヤ
管理も複雑となるために、良い方法とは言えな
い。従つて、全てのプログラム、データはユニー
クなアドレスを割付けられる単一仮想記憶の場合
は、これは問題点とはならない。 次に第2の問題は、キヤツシユを仮想アドレス
でアクセスする場合の本質的なことであるが、こ
れを少し詳細に説明する。アドレス変換テーブル
を更新するのは、(i)あるプログラム実行中にミツ
シングページフオールトが発生し、必要なページ
をロールインする場合、あるいは、空エリヤを作
るためにあるページをロールアウトする場合と、
(ii)プログラムを生成して、ある仮想アドレスに割
付ける、あるいは削除する場合である。このよう
な場合に、キヤツシユメモリには、既にロールア
ウトして主メモリにはないデータが残つていた
り、新しいプログラムが生成されたのに、以前の
プログラムがキヤツシユメモリに残つていたりす
ることになる。これに対して、キヤツシユには、
既にロールアウトされた情報が残つているという
点は、キヤツシユメモリは、外部メモリも加えた
空間でのキヤツシと考えれば良く、既にロールア
ウトされた情報を読出せても不都合は生じない。 逆に主メモリのサイズが、キヤツシユの容量分
だけ増える訳で、本方式の利点と言うこともでき
る。主メモリに書込もうとした時には、ストアス
ルー方式のキヤツシユメモリでは、書込毎に毎回
キヤツシユと主メモリの両方を更新するために、
毎回アドレス変換装置を通り、ここで該ページが
主メモリ上にあるか否かチエツクされる。従つて
ロールアウトされたページを使いながら実行して
いるプログラムは、読出しで、キヤツシユがヒツ
トしている限り続行し、キヤツシユミスか、ある
いは、主メモリ書込が起つた時に、ページフオー
ルトが発生することになる。ここでアドレス変換
装置に於けるチエツクとは、ページの状態には(a)
主メモリ上に存在する、(b)ページング中、(c)主メ
モリ上に存在しないの3つの状態があり、一般の
プロセツサは、(a)の時のみアクセスが可能で、外
部メモリとの転送を行うフアイルプロセツサは(b)
の時にもアクセスが可能であり、この規則に合つ
ているか否かのチエツクである。 ページフオールトが発生した場合には、キヤツ
シユメモリ内の該当するブロツクは無効化される
ため、以後はキヤツシユでヒツトしない。尚、リ
ードアクセス時にページフオールトが発生した場
合には、該ブロツクをキヤツシユに書込まないよ
うに制御する。 次に、今まで実行していたプログラムが完了し
て、同一の仮想アドレスに新たにプログラムが生
成される場合には、外部メモリから転送されるの
が普通であるが、この場合、外部メモリからの転
送中に、キヤツシユを無効化する手段を設けるこ
とによつて解決される。具体的には、外部メモリ
からの主メモリへの転送は、仮想アドレスで行
い、このアドレスをキヤツシユメモリは監視して
おいて、もしもキヤツシユメモリ内に該当するブ
ロツクがあれば無効化を行うものである。 次に第3のプロテクトの問題であるが、プロテ
クトは、物理アドレスよりも、仮想アドレスの方
が、プログラム毎にユニークなストレージキイを
割当てることが可能であり、良い方法であると考
えられる。但し書込みは、必ずアドレス変換装置
を通るために書込みプロテクトは必ずチエツクさ
れる。書込みプロテクトエラーが検出された時に
は、キヤツシユメモリの対応するブロツクは無効
化され、キヤツシユメモリに書込んだデータが使
用されないようにする。実行プロテクトは、メモ
リの読出しのために、キヤツシユ内に該当するも
のがあれば、ここで返送しアドレス変換装置を経
由しないために工夫が必要である。本発明では、
キヤツシユメモリを命令キヤツシユとデータキヤ
ツシユに分離した例を示しているが、この例で
は、実行プロテクトエラーが発生した場合にはキ
ヤツシユメモリに入れないように制御している。 以上で、本発明の、従来問題点とされていた項
目に対する解決法が理解できたと思われるが、本
発明はマルチプロセツサに於ける問題点をも同様
な方法で解決している。従来のマルチプロセツサ
構成で、アドレス変換テーブルを書き換えた場合
には、他のプロセツサに対して指令を送つて他の
プロセツサが所有するTLBの無効化(TLB
Purge)を行つていた。これによつて、以前のプ
ログラムがキヤツシユメモリに残つていても
TLBを無効化することによつて、該当するキヤ
ツシユメモリは使用しないようにできたわけであ
る。本発明が適用されるマルチプロセツサに於て
は、あるプロセツサがアドレス変換テーブルを書
換えた時に他のプロセツサのキヤツシユメモリ
が、主メモリと一致しなくなる点が問題である
が、前述のように、外部メモリからの転送を仮想
アドレスで行い、キヤツシユメモリでは、この仮
想アドレスを監視しておいて、該当するブロツク
がキヤツシユメモリ内にあれば、無効化を行うこ
とによつて解決している。 以下、本発明の一実施例を図面を参照して詳細
に説明する。 第1図は本発明が適用されるデータ処理装置の
全体構成の一例を示す図である。 第1図において、10はプログラムおよびデー
タを格納する主メモリで、メモリバス11、メモ
リコントローラ(MCU)12を介して共通バス
50に接続されている。 20は、主メモリ10に格納されるべきプログ
ラムおよびデータを格納する外部メモリで、外部
メモリバス21、フアイルプロセツサ(FCP)
22を介して共通バス50に接続されている。3
0は入出力プロセツサ(IOP)であり、図示しな
い各種入出力装置とのデータ転送の制御を行う。 40はジヨブプロセツサ(JOBP)であり、こ
こでは1つだけを示しているが、プログラム(命
令)の実行を行う。 ジヨブプロセツサ40は、命令キヤツシユ4
1、データキヤツシユ42、Iユニツト43およ
びEユニツトにより構成され、命令キヤツシユ4
1とIユニツト43はバス45で接続され、デー
タキヤツシユ42とEユニツト44はバス46で
接続され、Iユニツト43とEユニツト44はバ
ス47で接続されている。 このように、フアイルプロセツサ22、入出力
プロセツサ30およびジヨブプロセツサ40は、
いずれも共通バス50に接続され、メモリコント
ローラ12を介して主メモリ10をアクセス可能
になつている。 ジヨブプロセツサ4は、Iユニツト43とEユ
ニツト44でパイプライン処理をするもので、前
記の如くそれぞれのユニツトに対して命令キヤツ
シユ41とデータキヤツシユ44を有する。 尚プログラム(命令)が扱うデータはオペラン
ドとも呼ばれ、このデータキヤツシユのことをオ
ペランドキヤツシユと呼ぶ場合がある。 次に実行すべき命令語をIユニツト43がアク
セスする場合、まず、命令キヤツシユ41上にそ
の命令語が存在するか否かチエツクされ、存在す
る場合には、そのデータが命令語としてバス45
を介してIユニツト43へ送られる。存在しない
場合は、命令語の仮想アドレスを共通バス50を
介してメモリコントローラ12へ送出する。 メモリコントローラ12では、仮想アドレスを
物理アドレスに変換してメモリバス11を介して
主メモリ10をアクセスする。得られたデータ
(命令)は、共通バス50を介して、命令キヤツ
シユ41へ送られ、さらにバス45を介してIユ
ニツト43へ送られ、Iユニツト43で処理され
ると同時に、命令キヤツシユ41へ貯わえられ
る。 Iユニツト43では、この得られた命令を解読
し、Eユニツト44に対して「何を為すべきか」
を指示する。Eユニツト44は、この指令に基づ
き、必要なデータを内部のレジスタやデータキヤ
ツシユ42から(データキヤツシユ42上にない
場合は、命令キヤツシユと同様に主メモリ10か
ら)集め、演算処理し、その結果を内部のレジス
タか主メモリ10に格納する。後者の主メモリ1
0に結果を格納する際には、該当する位置のデー
タが既にデータキヤツシユ42内に取込まれてい
るならば、そのデータも更新する。 次に共通バス50の構成例について説明する。
共通バス50は第2図に示す様に、実際に情報を
転送するのに使用される起動バス55、データバ
ス56、応答バス57と、これらのバス55〜5
7をそれぞれどのプロセツサあるいはメモリコン
トローラが使用するかを決めるのに必要な起動バ
ス占有要求線51、データバス占有要求線52、
応答バス占有要求線53とインタロツク信号線5
4を含んでおり、時分割で使用される。 各バス55〜57の情報の中味は次の通りであ
る。 (1) 起動バス55 (a) アドレス (b) アクセスの種類(例えばリードアクセスで
あるか/ライトアクセスであるか、また何バ
イトアクセスするか、等) (c) アクセスキー(MCU12で行うプロテク
シヨンチエツクに使用する。) (2) データバス56 (a) ライトデータ (b) リードデータ (3) 応答バス57 (a) 終了信号 (b) リターンコード(アクセス中に、発生した
エラー及びページフオールトの情報) などである。 これらのバス55〜57が、どの様に使用され
るかを第3図で示す。 この図で示される様に、 (i) aのリード要求とbのリード応答 (ii) aのリード要求とdのライト応答 (iii) cのライト要求とdのライト応答 の3つの組み合せの転送が、同一のタイムスロツ
トで同時に可能となる。 次にバス55〜57の使用の様子を第4図で示
す。この図では、タイムスロツト0でJOBP40
がMCU12にメモリリード起動をかけ、それに
対するリードデータがタイムスロツトNとN+1
で返されて来ており、またタイムスロツト1で
IOP30がMCU12にメモリライト起動をか
け、それに対する応答がタイムスロツトN+2で
返されている。この様に共通バス50では、起動
と応答を分離した、いわゆるスプリツト転送を行
う。また、主メモリ10は複数のメモリアクセス
を処理出来る構成となつている。 以上、述べてきたバス55〜57の転送を行う
に当つて、その前に占有制御を行う必要がある。
これは転送を希望するプロセツサやメモリコント
ローラが、転送の1タイムスロツト前に、転送に
使用するバスに対する占有要求51〜53を出
し、これに対して優先順位を付けて転送を許可す
ることによつて行う。この優先順位の付け方は、
色々な方法が考えられるが、ここではその詳細に
ついては省略する。ただし、応答による占有要求
は、起動による占有要求より優先レベルを上げ
る。というのは、起動による占有要求によつて応
答が返せない事態になると、メモリコントローラ
上で起動の処理が詰まつてしまい、デツドロツク
状態となるからである。例えば、本実施例の場
合、第3図に示すbのデータリード応答と、cの
データライト起動による占有要求が競合した場合
には前者が優先される。 以上の占有制御の様子を簡略化して第5図に示
している。タイムスロツト0ではJOBP40と
IOP30がリード起動をしようとして、各々が起
動バス占有要求51を出している。この内、
JOBP40の方がIOP30より優先レベルが高い
ものとすると、タイムスロツト1でJOBP40は
起動バス55を使用してリードの起動を行い、同
時に占有要求を止める。一方、IOP30は占有が
許可されなかつたので、タイムスロツト1でも起
動バス占有要求51を出したままとする。このス
ロツト1では、JOBP40からの占有要求がなく
なるので、タイムスロツト2でIOP30はリード
起動が可能となる。 この様なシステムにおいて各プロセツサが、他
のプロセツサからのアクセスを排除して、すなわ
ちインタロツクして主メモリ10をアクセスする
場合には、起動バス55を他のプロセツサに使用
させない様にする。というのは、起動バス55を
占有することで、他のプロセツサから今後発生す
る起動を排除し、また既に主メモリ10内で処理
中のメモリ起動に対しては、データバス56、応
答バス57を使用して応答を返すことを可能にす
るためである。もし、これらの応答が返せない
と、メモリコントローラ12上で起動の処理が詰
まつてしまい、デツドロツク状態になつてしまう
からである。 次に、この起動バス55の占有方法の一例を説
明する。メモリコントローラ12をインタロツク
してアクセスしようとするプロセツサは、第6図
に示す様に起動バス占有要求51が受付けられ、
起動バス55に情報を転送するタイムスロツト
で、起動バス55を占有していることを示すイン
タロツク信号54を出す。そして、この信号によ
り他のプロセツサからの起動バス占有要求51が
受付けられない様に制御する。これは例えば第7
図の回路によつて実現される。この図では、各占
有要求51〜53の優先判定回路61は各プロセ
ツサごとに分散して持ち、インタロツク信号線5
4はオープン・コレクタの信号線としている。ま
ず、インタロツクの信号54が出てない場合は、
各占有要求51〜53を優先判定回路61でチエ
ツクし、自分の出した起動バス占有要求51の優
先度が一番高い場合には、アンドゲート62、オ
アゲート63を通して起動バス55の占有許可信
号64が出る。従つて、このプロセツサは次のタ
イムスロツトで、起動バス55に対して情報の転
送が可能である。また、この際プロセツサからイ
ンタロツク要求信号65が出されていると、アン
ドゲート68を介してJ−Kフリツプフロツプ6
6がセツトされ、インタロツク信号54が出力さ
れる。このインタロツク信号54は、インタロツ
ク解除信号67が出されるまで出力されており、
この間このプロセツサは起動バス55を占有した
ままとなる。次に、他のプロセツサからインタロ
ツク信号54が出されている場合には、アンドゲ
ート62で優先判定回路61の出力が禁止される
ので、起動バス占有許可信号64が出ないため、
起動バス55が使用できず、従つてメモリ起動も
出来ない。 次にMCU12について説明する。 MCU12は、通常のメモリアクセスの処理の
他、仮想アドレスから物理アドレスへのアドレス
交換や、プロテクシヨンのチエツクを行う。 また、各プロセツサ間で共通に使用され、高い
スループツトが要求されるため、リード処理とラ
イト処理は、第8図A,Bに示すように、いくつ
かのステージ〜又は′〜′に分かれてお
り、複数個のアクセスを第8図Cに示すようにオ
ーバラツプさせて処理出来るようになつている。 第9図は、MCU12の構成の一例を示したも
のであるが、第8図A,Bに示した各処理ステー
ジでは次のような動作を行う。 (A):リード処理ステージの動作 共通バス50からリード起動受信 起動バス55上の仮想アドレス(VA)、アク
セスの種類(FUN)、アクセスキー
(AKEY)を共通バス受信用レジスタ71に
取込む。 アドレス変換とプロテクシヨンチエツク アドレス変換装置75より、仮想アドレス
(VA)で示されるページが、主メモリ10に
あるか否かの判定を行い、ある場合には物理
アドレス(PA)に変換する。ない場合は、
いわゆるページフオールトとなる。 また、この時プロテクシヨンチエツク回路
76で、そのアクセスが許可されているもの
か否かの判定を行う。 このアドレス変換装置75とプロテクシヨ
ンチエツク回路76については、後で詳細に
述べる。 これらのプロテクシヨンチエツクの結果
と、ページフオールト情報は、他のエラー情
報と共にリターンコード(RC)として、ア
クセスの種類(FUNC)や物理アドレス
(PA)と共にアクセスレジスタ72にセツト
される。 メモリリード起動 アクセスレジスタ72にあるアクセスにエラ
ーやページフオールトが発生していない場合
には、メモリコントローラ77が、アクセス
レジスタ72上の物理アドレス(PA)で、
主メモリ10にメモリ起動151をかけ、主
メモリ10がその起動を受取つたら、アクセ
スの種類(FUNC)とリターンコード
(RC)を一時記憶レジスタ73へ移す。 また、アクセスレジスタ72にあるアクセ
スが、既にエラーやページフオールトの発生
を示している場合は、メモリ起動をせず、前
記の情報を一時記憶レジスタ73へ移す。 リードデータ受信とデータ、応答バス占有
要求 主メモリ10からメモリバス11を介して
リードデータ154を受取ると共に、アクセ
スの種類(FUNC)とリターンコード
(RC)を共通バス送出用レジスタ74へ移
す。 一方、共通バス50に対してはデータバス
占有要求52と応答バス占有要求53を出力
する。 リードデータ、応答バス転送 の占有要求52,53が受付けられたら、
リードデータ154をバス155を介してデ
ータバス56に転送し、また、終了信号とリ
ターンコード(RC)をバス156を介して
応答バス57に転送し、それぞれアクセス元
のプロセツサに返す。 (B):ライト処理ステージの動作 ′ 共通バス50からライト起動受信 起動バス55上の仮想アドレス(VA)、アク
セスの種類(FUNC)、アクセスキー
(AKEY)及びデータバス56上のライトデ
ータ(WD)を共通バス受信用レジスタ71
に取込む。 ′ アドレス変換とプロテクシヨンチエツク ライトデータを(WD)をアクセスレジスタ
72にセツトすることを除いて、リード処理
ステージAのと同じ動作をする。 ′ メモリライト起動 ライトデータ(WD)153を主メモリ10
に転送することを除いて、リード処理ステー
ジAのと同じである。 応答バス占有要求 アクセスの種類(FUNC)とリターンコード
(RC)を共通バス送出用レジスタ74へ移
す。一方、共通バス50に対しては、応答バ
ス占有要求53を出力する。 ′ 応答バス転送 ′の占有要求53が受付けられたら、終了
信号とリターンコード(RC)をバス156
を介して応答バス57に転送し、アクセス元
のプロセツサに返す。 以上の様に、リードとライトの処理は各ステー
ジに分けられており、異なるアクセスの処理の異
なる番号のステージは、第8図Cに示す様に並行
して処理可能である。この図では、共通バス50
からイ4Byteリード起動、ロ4Byteライト起動、
ハ16Byteリード起動を、それぞれタイムスロツ
ト0,1,2で受取つて処理している。そしてタ
イムスロツト2の場合を見ると、イのメモリリー
ド起動3と、ロのアドレス変換とプロテクシヨン
のチエツク2′と、ハの共通バスからのリード起
動受信1を並行して行つている。ここで、ハの
16Byteリードはイの4Byteリードに比べて、〜
のステージを4回繰り返しているが、これは
4Byteを単位としたメモリインタリーブを行つて
いるためである。以下、これについて説明する。 第10図は主メモリ10の構成の一例を示した
図であり、メモリボード(MB)14(14a〜
14d)は4Byteのデータ幅で構成され、各メモ
リボード14a,14b,14c,14dは
4Byte単位に付加されたアドレスの下位2bitが
00,01,10,11であるデータを持つている。そし
て16Byteのデータは、4Byteずつのメモリボード
14a,14b,14c,14d上にあるため、
16Byteリードではメモリボード14で競合をお
こすこと無く、第8図Cの様に連続してメモリボ
ードを起動し、リードデータを続み出して来るこ
とが可能となる。この様な16Byteリードは、主
にキヤツシユミス時にキヤツシユメモリへデータ
を送るブロツク転送に使用される。 Iユニツト43やEユニツト44が命令キヤツ
シユ41やデータキヤツシユ42をアクセスする
場合は、16Byteよりもつと小さな単位(この例
では4Byteとする)で行うので、この16Byteリー
ド時にはIユニツト43やEユニツト44が必要
とした4Byteのデータが残りのデータより早く渡
される様に制御し、アクセス時間を短縮する。そ
してこのためには、第10図Bのごとくアドレス
に応じて、MCU12から起動をかけるメモリボ
ード14の順番を変更すれば良い。 次に、アドレス変換とプロテクシヨンチエツク
について詳細に説明する。 第11図は、第9図のアドレス変換装置75を
中心として更に詳細に示した構成図であり、第1
2図は、アドレス変換の動作フローを示したもの
である。 仮想アドレスから物理アドレスへの変換テーブ
ル130は、そのメモリ容量が大きいので、主メ
モリ10の一部に置かれている。しかし、メモリ
アクセスが発生するたびに、仮想アドレスを物理
アドレスに変換するために、主メモリ10をアク
セスしていてはオーバーヘツドが大きくなるた
め、最近アクセスしたアドレス変換情報を格納し
ておくTLB110がMCU12に設けられてい
る。 TLB110には、アドレス変換テーブル13
0の内、最近使用されたページの内容が格納され
ており、高速にアドレス変換が行なえるようにな
つている。TLB110における各ページの内容
は、有効ビツト(V)111、コネクト(C)ビ
ツト112、仮想アドレスの一部(VAP)11
3、物理アドレスの一部(PPA)114、実行
プロテクシヨンビツト(EP)115およびスト
レージキー(SKEY)116からなつている。V
ビツト111とCビツト112は、該当ページの
現在の状態を示し、Vビツト111が「0」の場
合は、TLB110の該当ページの内容が有効な
データでない(無効)ことを示す。 Vビツト111とCビツト112が共に「1」
の場合は、該当ページが、現在主メモリ10と外
部メモリ20との間で転送されていること、すな
わち、ページング中であることを示し、Vビツト
111が「1」で、Cビツト112が「0」の場
合は、該当ページが主メモリ10にあり、メモリ
アクセス可能なことを示している。 このように、ページング中である状態を付加し
ているのは、ページングを行つているエリアを
ECP22からのページングアクセス以外のアク
セスができないようにするためである。 本システムでは、仮想アドレスから物理アドレ
スへのアドレス変換を、MCU12で、各プロセ
ツサに共通に行なわせているので、ECP22に
よりページングを行なつているアクセスであつて
も、同じアドレス変換装置75を経由することに
なり、そのページング中のエリアを他のプロセツ
サがアクセスすることを許可すると、データの破
壊や喪失につながる。従つて、上記した如く、V
ビツト111とCビツト112が共に「1」を示
している場合には、FCP22からのページング
アクセスのみ許可することにより、上記の不都合
を解決しているのである。 次に仮想アドレスの一部(VPA)113は、
TLB110でアドレス変換を行う際に、該当す
る仮想アドレス(VA)の変換対がTLB110に
登録されているか否かをチエツクするためのもの
であり、また、物理アドレスの一部(PPA)1
14はTLB110の変換対があつた時に、物理
アドレス(PA)を作成するためのものである。 仮想アドレス(VAは)、セグメントアドレス
(SA)121、ページアドレス(PA)122、
ページ内アドレス(DISP)123からなり、上
記の物理アドレスの一部(PPA)114は、ペ
ージ内アドレス(DISP)123と連なつて物理
アドレス(PA)を作る。 実行プロテクシヨンビツト115(EP)は、
データに対し誤まつて命令読出し、実行すること
を防ぐためのものであり、プロテクシヨンチエツ
ク回路76でこのビツトが「1」のエリアに対し
て命令読出しすると実行プロテクトエラーとな
る。従つて本構成例の様に、JOBP40で命令キ
ヤツシユ41とデータキヤツシユ42が分れてい
る場合には、命令キヤツシユ41からのこのエリ
アに対するアクセスは、全て実行プロテクトエラ
ーとなる。 ストレージキー(SKEY)116は、ライトプ
ロテクシヨンを行うためのもので、要求元プロセ
ツサから転送されてきたアクセスキー(AKEY)
と共にプロテクシヨンチエツク回路76により、
ライトアクセスが許可されるか、禁止されるかを
調べられ、後者の場合はライトプロテクトエラー
となる。 アクセスキー(AKEY)は、この様にSKEY1
16との比較によるライトプロテクトエラーのチ
エツクに使う他、ECP22からのページングア
クセスか否かの情報や、命令読出しであるか否か
の情報を含んでおり、これらのプロテクトチエツ
クにも使用する。 次に、変換過程を、第12図のフローチヤート
を参照して順次説明する。 メモリアクセスの種類は大きく次の2つに分け
られる。すなわち、 (1) 一般のプロセツサによるメモリアクセス (2) ECP22によるページング時のメモリアク
セス の2つである。この(1),(2)のアクセスの区別は、
アクセスキーAKEY上にあり、信号線140を経
由してアドレス変換コントローラ125に伝えら
れる。 まず、一般的な(1)の場合のメモリアクセスのア
ドレス変換やアクセスの許可の判定について説明
する。 あるプロセツサ(JOBP40又はIOP30)か
ら出力された仮想アドレスは、共通バス50を経
由してMCU12内の共通バス受信用レジスタ7
1内の仮想アドレスレジスタ120にセツトされ
る。この仮想アドレスレジスタ120にセツトさ
れた仮想アドレスは、セグメントアドレス
(SE)121及びページアドレス(PA)122
の一部分120−2をアドレスとしてまずTLB
110をアクセスする。これにより読み出された
TLB110のエントリのVビツト111および
Cビツト112は、アドレス変換コントローラ1
25に伝えられ、そのパターンにより、その後の
処理が次の〜のように3つに分かれる。 これは、第12図のフローのステツプ(FO
5)に相当している。 Vビツト111=0,Cビツト112=0の
時。 これは、第12図で、「0,0」と表示して
ところであり、前述した如く、TLB110の
該当ページ(エントリ)は無効であり、主メモ
リ10上の変換テーブル130を読み出す。
(F10)この時、すなわち、TLBミス時の詳
細な動作は後述する。 Vビツト111=1,Cビツト112=1の
時。 第12図で「1,1」の時であるが、この
時、仮想アドレスの一部分120−1とTLB
110の仮想アドレスの一部分VPA113を
コンパレータ124で比較した結果、一致し、
TLBヒツト信号141が出力されていれば
(F205)、該当ページは現在ページング中で
あることを示しているので、そのメモリアクセ
スを禁止し、アドレス変換コントローラ125
よりミツシングページフオールト信号142を
出力する。(F45) TLBヒツト信号141が出力されていない
時は、TLBミスであるのでと同様に、主メ
モリ10上の変換テーブル130を読み出す。
(F10) Vビツト111=1,Cビツト112=0の
時。 第12図で、「1,0」の時であるが、ま
ず、TLBヒツト信号141がチエツクされ、
(F30)出力されていない時は、プロテクシ
ヨンチエツク回路76からのプロテクトエラー
信号143をチエツクし、エラーが発生してい
なければ、仮想アドレスレジスタ120のペー
ジ内アドレス部123とTLB110上の物理
アドレスの一部114を連結して物理アドレス
をセレクタ128を介しアクセスレジスタ72
上に作成し、その物理アドレスをメモリアドレ
スバス152に送り、主メモリ10をアクセス
するためメモリコントローラ77よりメモリ起
動信号151を出力する。(F40) 次に(2)のFCP22によるページング時のメモ
リアクセスについて説明する。 FCP22より出力された仮想アドレスは、共
通バス50を経由してMCU12内の仮想アドレ
スレジスタ120にセツトされる。 この場合も、まずTLB110をアクセスし、
アクセスしたTLB110のエントリのVビツト
111及びCビツト112のパターンにより、先
程と同様にその後の処理が3つに分かれる。 Vビツト111=0,Cビツト112=0の
時。 主メモリ10の変換テーブル130の読み出
しを行う。(F10) Vビツト111=1,Cビツト112=1の
時。 この時、TLBヒツト信号114がチエツク
される。(F30)TLBヒツトを示していれ
ば、アクセスレジスタ72上で作成された物理
アドレスで主メモリ10をアクセスする。(F
40) TLBヒツト信号が出ていない場合は、主メ
モリ10の変換テーブル130を読み出す。
(F10) Vビツト=1,Cビツト112=0の時 TLBヒツト信号141がチエツクされる。
(F215) TLBヒツト信号141が出ている時は、禁
止区域をアクセスしていることになるので、
FCP22にエラーを知らせる。(F220) 次に、TLBミスの場合の、主メモリ10上の
変換テーブル130を読み出す時の処理を説明す
る。 変換テーブル130は、テーブルに必要なメモ
リ容量を減らすため、アドレス変換に必要な情報
を有するページテーブル132と、そのページテ
ーブル132の先頭アドレスを保持するセグメン
トテーブル131から成る。TLBミス時には、
まずセグメントテーブルの先頭アドレスを保持す
るレジスタ126(STOR)の内容と、仮想アド
レスレジスタ120のセグメントアドレス
(SA)121をアダー127で加算して物理アド
レスを作り、それでセグメントテーブル131の
該当する位置の内容をリードデータバス155上
に読み出して来る。このデータには、ページテー
ブル132の先頭アドレスが保持されており、こ
の値と、仮想アドレスレジスタ120のページア
ドレス(PA)122をアダー127で加算して
アドレスを作り、ページテーブル132から変換
に必要な情報を読み出す。(F10) このページテーブル132には、Mビツトの
他、TLB110内の、Vビツト111と仮想ア
ドレスの一部113(VPA)を除く情報を含ん
でおり、このMビツトとCビツトがリードデータ
バス155の一部155−1を介してアドレス変
換コントローラ125に入力され、これらのビツ
トパターンにより次の様な処理を取る。 Mビツト=0,Cビツト0の時 該当ベージは主メモリ10上に無く、外部メ
モリ20上にあることを示しており、このペー
ジのアクセス要求に対してはミツシングページ
フオールト信号142を出して、該当プロセツ
サにページフオールトを知らせる。(F45) Mビツト=0,Cビツト=1の時 該当ビツトは現在ページング中であることを
示しているので、FCP22以外のメモリアク
セスに対してはそのメモリアクセスを禁止し、
ミツシングページフオールト信号142を出
す。(F45)FCP22からのメモリアクセス
の場合は、TLB110に登録してアクセスを
行う。(F20) Mビツト=1,Cビツト=0の時 読み出されたリードデータの一部155−2
と仮想アドレスの一部120−1、及びVビツ
ト「1」がTLB110に登録され、(F20)
V,Cビツトのチエツクルーチンに戻る。 以上述べたように、アドレス変換装置75は、
各プロセツサからの仮想アドレスによるメモリア
クセスに対し、仮想アドレスから物理アドレスへ
のアドレス変換を集中して実施することが可能で
アドレス変換の制御が単純となる。 また、FCP22からのアクセスと、他のプロ
セツサからのアクセスとの制御方式を変更するこ
とにより、ページング中のページに対する他のプ
ロセツサからのアクセスを禁止することが可能
で、データの保全が可能となる。 次に、ミツシングページフオールト時の動作に
ついて説明する。 ページフオールト信号を要求元プロセツサが受
取つた時には、その時に実行していたタスクを中
断し、要求したアドレスを含むページを主メモリ
10にロードするために、FCP22に起動をか
ける。FCP22はこの起動を受けて、該当ペー
ジを読み出し、これが完了すると終了割込みを発
生する。この時には必要なページは主メモリ10
上にロールインされているために、前記中断され
たタスクを再開する。このタスクが中断されてい
る間、当該プロセツサは他のタスクを実行する。 次に命令キヤツシユ41とデータキヤツシユ4
2について説明する。第13図は命令キヤツシユ
41の構成例を示した図である。主メモリ10か
らコピーして来たデータがキヤツシユデータ部8
1−I上にあり、そのデータのアドレスがデイレ
クトリイ82−Iと無効化デイレクトリイ83−
Iにあり、またこれらが有効か否かを示す情報が
有効ビツトレジスタ84−Iにある。デイレクト
リイ82−Iと無効化デイレクトリイ83−Iの
内容は同じであり、性能を高めるため分けてあ
る。前者はIユニツト43がアクセスしたデータ
がキヤツシユデータ部81−Iにあるか否かのチ
エツクに使用し、後者は他のプロセツサが主メモ
リ10に書込んだデータがキヤツシユデータ部8
1−Iに取込まれている場合に、既にそのデータ
は古くなつているので無効化しなければならない
(これを無効化処理と呼ぶ)が、そのためのチエ
ツクに使用する。 次に、この命令キヤツシユ41の動作について
説明する。なお、命令キヤツシユ41はデータキ
ヤツシユ42とは異なり、ライトアクセスは処理
しない。 第14図はリードアクセスのキヤツシユミス時
のフロー、第15図は無効化処理のフローを示し
ている。 (1) リードアクセス(第14図参照) Iユニツト43から起動信号91−Iが来
たら、仮想アドレス92−Iの一部、ここで
はビツト18−27でデイレクトリイ82−
Iと有効ビツトレジスタ84−Iの内容を読
み出し、デイレクトリイ82−Iの内容と仮
想アドレス92−Iのビツト0−17をコン
パレータ160−Iで一致チエツクを行い、
またその内容をパリテイチエツカー161−
Iでチエツクする。そしてコンパレータ16
0−Iが一致を示し、パリテイエラーが発生
してなく、かつ有効ビツトレジスタ84−I
が有効であることを示しているならば、ゲー
ト169−Iを介してキヤツシユヒツト信号
170−Iが命令キヤツシユコントローラ1
62−Iに出され、命令キヤツシユコントロ
ーラ162−Iは、仮想アドレスのビツト1
8−29でアクセスされたキヤツシユデータ
部81−Iの内容を、リードデータバス94
−Iに乗せると共に、Iユニツト43に対し
て終了信号93−Iを返す。 キヤツシユミスの場合は、命令キヤツシユ
コントローラ162−Iは、起動バス占有要
求51を出す。 占有要求51が許可されたら、ゲート85
−Iを開き、起動バス55に仮想アドレス
(VA)、アクセスの種類(FUNC)、アクセス
キー(AKEY)を転送する。なお、このアク
セスキー(AKEY)には命令読み出しである
ことを付加する。 セツト信号172−Iにより、仮想アドレ
スのビツト0〜17をデイレクトリイ82−
I、無効化デイレクトリイ83−Iへ書き込
み、有効ビツトレジスタ84−Iをセツトす
る。本処理をこの時点で行う理由は後で述べ
る。 MCU12からデータバス56を介して、
リードデータ(RD)が、また応答バス57
を介して終了信号とリターンコード(アクセ
ス中に発生したエラー及びページフオールト
の情報)(RC)が送られてきたらレジスタ8
6−Iにラツチする。MCU12の説明でも
述べたように、最初に送られて来たデータ
は、Iユニツト43がアクセスしたデータで
あるので、リターンコード(RC)が次の(1)
〜(3)の状態を示している時(第14図Bに示
す条件イ成立時、)は、Iユニツト43に終
了信号93−Iとリードデータ94−Iとリ
ターンコード95−Iを返す。 (1) No Error(エラーが発生してない時) (2) Page Fault(ページフオールトが発生
した時、) (3) Soft Error(ソフトによるエラー、例え
ばプロテクシヨンエラーが発生した時) また、Hard Error(ハードが原因のエラ
ー)の場合は、再度主メモリ10をアクセス
することによつて、救える場合が多いので、
リトライを行う。この為、上記の信号を返さ
ないが、リトライ回数が規定回数を越えた場
合、すなわち、リトライオーバーの場合に
は、エラー報告を行うために、上記の信号を
返す。そして、主メモリ10から読み出して
来たリードデータをキヤツシユデータ部81
−Iに書き込む。 ,, MCU12から送られてくる残り
のリードデータをキヤツシユデータ部81−
Iに書込む。のステージで既にIユニツト
43に対しては終了信号93−Iを戻してあ
るので、この間、Iユニツト43は別な動作
が可能である。の段階ではこれに加えて、
〜のステージでエラーやページフオール
トが発生したかをチエツクし、発生してない
場合には命令キヤツシユ41の動作を止め
る。 エラーやページフオールトが発生している
場合には、のステージでセツトした有効ビ
ツトレジスタ84−Iに対し、命令キヤツシ
ユコントローラ162−Iより有効ビツトク
リア信号171−Iを出して、クリアしキヤ
ツシユデータ部81−Iの該当データを使用
出来ない様にする。また、のステージで
Hard Errorを起こし且つリトライオーバし
てない場合には(第14図Bに示す条件ア成
立)、リトライを行うためのステージに飛
ぶ。 以上がリードアクセスの処理手順であるが、先
程述べた様にキヤツシユ(命令、データキヤツシ
ユ共)では、いわゆる無効化処理が必要となる。
以下、その手順を説明する。 (2) 無効化処理(第15図参照) 起動バス55転送中の仮想アドレス
(VA)とアクセスの種類(FUNC)を毎回レ
ジスタ87に取込む。 上記仮想アドレスのビツト18−27で無
効化デイレクトリイ83−Iの内容を読出
し、無効化する必要があるか否かを無効化判
定回路165−Iでチエツクすると共に、そ
のアドレスのビツト18−27をレジスタ8
8−Iにセツトする。 そして無効化が必要な場合は、レジスタ8
8−Iのアドレスで該当の有効ビツト84−
Iをクリアする。このため無効化判定回路1
65−Iから有効ビツトクリア信号171−
Iを出す。 次に無効化が必要な場合を詳細に説明する。
まず、無効化起動バス55から取んだアクセス
の種類(FUNC)がライトアクセスを示し、そ
れが他方からのものである時行う。そして、次
に示す条件のいずれかを満した時に無効化を行
う。 (a) レジスタ87−Iのアドレスのビツト18
−27で無効化デイレクトリイ83−Iを読
出し、その内容とアドレスのビツト0−17
をコンパレータ163−Iで比較し、一致し
た時。 (b) 無効化デイレクトリイ83−Iを読出した
際に、パリテイチエツカ164−Iでパリテ
イエラーが検出された時。 (c) 無効化デイレクトリイ83−IをJOBP4
内で使用している時。(にチエツクが出来
ないため) 以上無効化処理について述べたが、次に(1)の
リードアクセスのステージでデイレクトリイ
82−I、無効化デイレクトリイ83−Iへア
ドレスを書込み、有効ビツトレジスタ84−I
をセツトしなければならない理由を明らかにす
る。 第16図はリードアクセスがキヤツシユミス
になり、主メモリ10をリードに行く場合と主
メモリ10に対して他からライトアクセスが行
われた場合のキヤツシユの無効化処理が競合し
た時に、各部分がどの様に使用されるかをタイ
ムチヤートで示している。無効化処理について
は斜線で示してあり、それぞれタイムスロツト
1と3で起動バス55、データバス56を転送
中のライトアクセスに対して、タイムスロツト
2と4で無効化デイレクトリイ83−Iのチエ
ツクを行い、タイムスロツト3と5の前半で有
効ビツトレジスタ84−Iをクリアし無効化し
ている。一方、キヤツシユミスとなつたリード
アクセスは、タイムスロツト2で起動バス55
にアドレスを転送しているので、主メモリ10
へのアクセスの順番としては、タイムスロツト
1で起動バス55を転送中のライトアクセスよ
り後で、タイムスロツト3で起動バス55を転
送中のライトアクセスより前となる。従つてキ
ヤツシユと主メモリ10のデータの一致を保つ
ためには、ライトアクセスが無効化デイレクト
リイ83−Iをチエツクするタイムスロツト2
と4の間で、キヤツシユミスを起こしたリード
アクセスのアドレスを無効化デイレクトリイ8
3−Iに書込まなければならないし、またチエ
ツクの結果、有効ビツトレジスタ84−Iを無
効化するタイムスロツト3と5の間で、有効ビ
ツトレジスタ84−Iをセツトする必要があ
る。これらの制御が必要な理由は、主メモリ1
0で複数のメモリアクセスを同時に処理してい
るからである。 なお本構成例では、アドレス情報を2ケ所、
すなわちデイレクトリイ82−Iと無効化デイ
レクトリイ83−Iに持つているため、無効化
デイレクトリイ83−Iの方しか上記の制約を
受けないが、デイレクトリイを1ケ所に持つ場
合は、当然上記の制約を受ける。 次にデータキヤツシユ42について説明す
る。第17図はデータキヤツシユ42の構成例
を示した図であり、無効化処理の回路180−
Dは命令キヤツシユ41と同じであるため省略
してある。尚第13図と第17図で、サフイツ
クスが違うだけのものは相当物である。第13
図の命令キヤツシユではサフイツクスにI、第
17図のデータキヤツシユではサフイツクスに
Dを使用している。命令キヤツシユ41との大
きな違いは、ライトアクセスをサポートしなけ
ればならない点であり、このライトアクセス時
間を短縮するために共通バス送出用バツフア8
9−Dを設け、ライト時には仮想アドレス92
−D、ライトデータ95−D、制御情報96−
Dをこのバツフア89−Dにセツトしただけ
で、終了信号93−DをEユニツト44に返
し、Eユニツト44が次の処理を出来る様に制
御している。 次に、このデータキヤツシユ42の動作につ
いて説明する。但し、リードアクセスの処理は
命令キヤツシユ41と同じであるので省略す
る。 (3) ライトアクセス(第18図参照)。 Eユニツト44から起動信号91−Dが来
たら、仮想アドレス92−D、ライトデータ
95−D、制御情報96−D(アクセスの種
類、アクセスキー等)を共通バス送出用バツ
フア89−Dにセツトし、Eユニツト44に
対して終了信号93−Dを返す。この際、デ
イレクトリイ82−Dと有効ビツトレジスタ
84−Dをチエツクしキヤツシユヒツト(信
号170−Dが出てる)ならば、キヤツシユ
データ部81の仮想アドレスのビツト18−
27で示される位置にデータを書込む。 データキヤツシユコントローラ162−D
より起動バス占有要求51、データバス占有
要求52を出す。 両方の占有要求が許可されたら、ゲート8
5−Dを開き起動バス55に仮想アドレス
(VA)、アクセスの種類(FUNC)、アクセス
キー(AKEY)を転送し、データバス56に
はライトデータを転送する。 MCU12から応答バス57を通して終了
信号とリターンコードが送られてきたらレジ
スタ86−Dにラツチする。そしてリターン
コードをチエツクし、エラーやページフオー
ルトを起こしてない時には共通バス送出用バ
ツフア89−Dからそのアクセスを取り除
き、処理を終了する。一方、第14図Bに示
したアの条件、すなわちHard Errorが発生
しかつリトライオーバしてない時には、リト
ライを行うためのステージに飛ぶ。 上記以外の場合には、共通バス送出用バツ
フア89−Dのアドレスで有効ビツトレジス
タ84−Dをクリアすると共に、Eユニツト
44に対してエラー、ページフオールトの発
生を報告する。有効ビツトレジスタ84−D
をクリアする理由は、例えばプロテクシヨン
エラーの場合は、書込んではならないキヤツ
シユデータ部81−Dのデータに対して、既
にのステージで書込みを行つているためで
ある。 尚データキヤツシユ42から主メモリ10に
ライト起動したアドレスも起動バス55からデ
ータキヤツシユのレジスタ87−D(無効化処
理の回路180−Dに含まれている)にセツト
されるが、それに対しては、自分自身が出した
ものであるからデータキヤツシユコントローラ
162−Dより無効化処理の回路180−Dに
対して信号173−Dを送り無効化を行なわな
い様に制御する。命令キヤツシユ41はライト
アクセスは行なわないので、この信号173−
Dに相当するものはない。 以上詳細に説明したように、本発明によれば、
複数のプロセツサがあり、その中の少なくとも1
つのプロセツサは仮想アドレスでアクセスするキ
ヤツシユメモリを持ち、アドレス変換装置を全プ
ロセツサで共有する構成のデータ処理装置が実現
できる。
The present invention relates to a data processing device in which a plurality of processors share one main memory (hereinafter referred to as main memory). Here, at least one of the plurality of processors is a processor that accesses memory using a virtual address in order to execute instructions, and this processor is herein referred to as a job processor. In addition, at least one processor is a processor that accesses memory using a virtual address in order to perform input/output with an external storage device (hereinafter referred to as external memory), which is also called an auxiliary storage device. is called a file processor. The job processor is also provided with a cache memory that is accessed using virtual addresses. Further, the data processing device according to the present invention includes an address translation device that is commonly used by each processor and converts a virtual address into a physical address. The present invention solves the problem that occurs when the file processor updates the address translation table when rewriting the contents of the main memory (page roll-in, page roll-out) in such a data processing device. The present invention relates to a data processing device that solves problems arising from the collapse of the conventional idea that the main memory is a copy of the main memory. First, the background of the present invention will be explained in detail. A data processing device in which one main memory is shared by multiple processors is generally referred to as a multiprocessor system. Conventional multiprocessor systems generally allow for multi-system configuration without imposing the cost/performance of a single computer. Therefore, the number of processors is
With about two processors, it was the best configuration, but as the number of processors increased further, there was a problem that mutual interference increased and the hardware configuration became too large. One of the problems that must be solved in multiprocessor systems is the virtual memory system. The virtual memory method is well known, and it assumes that main memory and external memory are apparently one unit. teeth,
The system automatically transfers information from a relatively unused portion of main memory to external memory, and transfers requested information from external memory to main memory. Transferring information from main memory to external memory is called rollout, and conversely, transferring information from external memory to main memory is called rollin. In order to perform such roll-in and roll-out control, the main memory and external memory are generally divided into units called pages. For each page, information is provided as to whether the page is currently in main memory, and if so, what the corresponding physical address (also called real address) in main memory is. placed on the conversion table. The address at the time of memory access from the processor is given as a virtual address, the translation table is indexed using the upper address part, and translation into a physical address is performed. Such a translation table is required for the number of pages of virtual addresses, and the required memory capacity becomes large. Therefore, in an attempt to reduce the capacity, the translation table is divided into two levels, such as a segment table and a page table. Many of them perform address translation. As mentioned above, the conversion table requires a large memory capacity, so it is generally placed in the main memory. Therefore, if the conversion table in the main memory is checked every time there is a memory access from the processor, three or more memory accesses will always occur for one memory access request, and the overhead cannot be ignored. Therefore, for processors that use virtual memory,
Many devices are equipped with a high-speed buffer called a TLB, and this high-speed buffer stores the physical address corresponding to the recently used virtual address. According to this, when a memory access from the processor occurs, it is first checked to see if there is a corresponding address in the TLB, and if there is, the memory access of the translation table for address translation is performed. Access is possible with less address translation overhead. Conventionally, such an address translation device including a TLB was placed in each processor, and a virtual control method was realized with the help of a control device within the processor. On the other hand, in order to improve performance, it has become common to provide each processor with a high-speed memory called a cache memory. This cache memory is a copy of a portion of main memory and is typically designed to be 5 to 10 times faster than main memory. When accessing memory from the processor, it first checks to see if there is a corresponding item in the cache, and if so, the contents are returned, and if not, the main memory is accessed. By the way, when using a virtual memory system and having a cache memory, conventionally, from the perspective of the processor,
TLB, cache memory, and main memory were connected in that order. This is based on the idea that cache memory is a copy of main memory, which is real storage, and access to cache memory must be performed after converting it to a physical address. Such conventional methods have the following problems. The first problem is that the effective memory access time becomes longer. The reason for this is that when accessing cache memory from the processor, it must always go through the TLB. That is, the virtual address from the processor is converted into a physical address by the TLB before the cache memory is accessed. The second problem is that TLB is required for all processors, so when the number of processors increases, not only does the amount of hardware increase accordingly, but also the TLB deviation must be corrected, which increases complexity. It's a familiar thing. Correcting TLB drift is when a processor swaps a page, the translation system
update the entry for the processor, but notify not only the processor concerned but also other processors to that effect.
The relevant part must be cleared. This is generally done by TLB Purge (Translation
It is called "Lookaside Buffer Purge" and is one of the important points when configuring a multiprocessor. The third problem arises from the fact that general job processors use virtual addresses when accessing memory, but input/output processors do not have a TLB and therefore access using physical addresses. The problem is that overhead increases because conversion is required when transferring data. The fourth problem is similar to the second problem, but even if it is not a multiprocessor, in a processor that performs advanced pipeline control, the unit that accesses instructions and the unit that accesses operands are separate. , each unit has a cache memory to increase speed, but in this case too, in the conventional system, each unit must have a TLB, which increases the amount of hardware. In order to solve this problem, Japanese Patent Laid-Open No. 49-53339 discloses a method in which the cache memory is accessed using virtual addresses and address translation is performed only when no bits are present. According to this, it is no longer necessary to perform address conversion every time the cache memory is accessed, and it becomes possible to achieve higher speed. However, this publication points out that this method cannot be adopted because it has the following drawbacks. It does not work if (1) two different virtual addresses refer to the same physical address; This is because when the contents of a certain virtual address are rewritten, the contents of the cache memory designated by another virtual address indicating the same physical address must also be rewritten. (2) When rewriting the contents of a page or segment table, a scan is required to invalidate the cache. (3) Since storage keys correspond to physical addresses, protection checks are impossible. There are three points. Japanese Unexamined Patent Publication No. 56-38649 similarly discloses a method of accessing a cache memory using a virtual address, but does not mention a solution to the above problem. Furthermore, Japanese Patent Application Laid-Open No. 142476/1983 discloses a system in which an address translation device is shared by a plurality of processors. According to this, since it is shared by a plurality of processors, it is possible to achieve economical efficiency in a multiprocessor configuration, but the cache memory is not shown here. The present invention is applied to a configuration in which there are a plurality of processors, at least one of which has a cache memory that is accessed using a virtual address, and an address translation device is shared by all the processors. The purpose of such a configuration is to reduce the amount of hardware required for the address translation device and to shorten the effective memory access time. Another purpose is to provide a method that does not require complicated processing such as matching control between TBLs. Another purpose is to provide a method that allows input/output processors to access memory using virtual addresses, with the aim of unified address management. Another purpose is to realize a high-speed and economical memory control method in a computer consisting of a plurality of units that perform pipeline control. However, the biggest problem with this method is that, as pointed out in JP-A No. 49-53339, when a page or segment table in main memory is rewritten, this is not transmitted to the cache memory; This is when the contents of memory no longer correctly reflect the state of main memory. An object of the present invention is to provide a data processing device that solves this problem. Next, the concept of how the present invention solves the problems pointed out in the above-mentioned Japanese Unexamined Patent Publication No. 49-53339 will be explained. The first problem is that two virtual addresses cannot point to the same physical address.This need is necessary in the case of multiple virtual memory; The first factor is that the bit length for specifying the address is 24.
This was necessary when the virtual space was small, about 224 bits, and insufficient in size, at about 224 = 16Mega, and if it could support virtual spaces as large as 232 = 4Giga and 248 = 256Tera, it would eliminate the need for multiple virtual memory. There are few. Furthermore, coplanar subroutines and accessing data using different virtual addresses are not good methods because area management becomes complicated. Therefore, in the case of a single virtual memory where all programs and data are assigned unique addresses, this is not a problem. Next, the second problem, which is essential when accessing a cache using a virtual address, will be explained in some detail. The address translation table is updated when (i) a missing page fault occurs during execution of a program and a necessary page is rolled in, or when a page is rolled out to create an empty area. and,
(ii) This is the case when a program is generated and assigned to a certain virtual address or deleted. In such cases, the cache memory may contain data that has already been rolled out and is not in the main memory, or the previous program may remain in the cache memory even though a new program has been generated. I will do it. On the other hand, in cash,
In that the information that has already been rolled out remains, the cache memory can be thought of as a cache in the space including the external memory, and there is no problem even if the information that has already been rolled out can be read. Conversely, the size of the main memory increases by the capacity of the cache, which can be said to be an advantage of this method. When attempting to write to main memory, with store-through type cache memory, both the cache and main memory are updated each time a write is made.
Each time it passes through an address translator, it is checked whether the page is in main memory or not. Therefore, a program running using rolled out pages will continue to read as long as the cache is hit, and a page fault will occur when a cache miss occurs or a main memory write occurs. It turns out. Here, the check in the address translation device means that the state of the page is (a)
There are three states: existing in main memory, (b) paging, and (c) not existing in main memory.A general processor can only access in (a), and transfers to and from external memory. A file processor that does (b)
It is possible to access the site even when , and it is a check to see if this rule is met. When a page fault occurs, the corresponding block in the cache memory is invalidated, so it will no longer be hit in the cache. Note that if a page fault occurs during read access, the block is controlled not to be written to the cache. Next, when the program that has been running so far is completed and a new program is generated at the same virtual address, it is normally transferred from external memory, but in this case, The problem is solved by providing a means to invalidate the cache during the transfer. Specifically, transfers from external memory to main memory are performed using virtual addresses, and this address is monitored by cache memory, and if there is a corresponding block in cache memory, it is invalidated. It is something. Next, regarding the third problem of protection, virtual addresses are considered to be a better method of protection than physical addresses since it is possible to allocate a unique storage key to each program. However, since writing always passes through the address translation device, write protection is always checked. When a write protect error is detected, the corresponding block in the cache memory is invalidated to prevent the data written to the cache memory from being used. Execution protection needs to be devised so that if there is a corresponding item in the cache, it is returned here so that it does not go through the address translation device in order to read the memory. In the present invention,
An example is shown in which the cache memory is separated into an instruction cache and a data cache. In this example, if an execution protection error occurs, the cache memory is controlled not to be stored in the cache memory. From the above, it is believed that the method of solving the problems of the present invention that has been considered as a problem in the past has been understood, but the present invention also solves the problems of multiprocessors in a similar manner. In a conventional multiprocessor configuration, when the address translation table is rewritten, a command is sent to other processors to invalidate the TLB owned by the other processor (TLB
Purge). This allows the program to be saved even if the previous program remains in cache memory.
By invalidating the TLB, it was possible to prevent the relevant cache memory from being used. A problem with multiprocessors to which the present invention is applied is that when one processor rewrites the address translation table, the cache memory of another processor no longer matches the main memory. , the transfer from external memory is performed using a virtual address, and the cache memory monitors this virtual address, and if the corresponding block is in the cache memory, it is resolved by invalidating it. There is. Hereinafter, one embodiment of the present invention will be described in detail with reference to the drawings. FIG. 1 is a diagram showing an example of the overall configuration of a data processing device to which the present invention is applied. In FIG. 1, a main memory 10 stores programs and data, and is connected to a common bus 50 via a memory bus 11 and a memory controller (MCU) 12. 20 is an external memory for storing programs and data to be stored in the main memory 10; an external memory bus 21; a file processor (FCP);
22 to a common bus 50. 3
0 is an input/output processor (IOP), which controls data transfer with various input/output devices (not shown). A job processor (JOBP) 40, only one of which is shown here, executes programs (instructions). The job processor 40 has an instruction cache 4
1, a data cache 42, an I unit 43 and an E unit;
1 and I unit 43 are connected by bus 45, data cache 42 and E unit 44 are connected by bus 46, and I unit 43 and E unit 44 are connected by bus 47. In this way, the file processor 22, input/output processor 30, and job processor 40 are
Both are connected to a common bus 50, and the main memory 10 can be accessed via the memory controller 12. The job processor 4 performs pipeline processing using an I unit 43 and an E unit 44, and has an instruction cache 41 and a data cache 44 for each unit as described above. Note that the data handled by a program (instruction) is also called an operand, and this data cache is sometimes called an operand cache. When the I unit 43 accesses an instruction word to be executed next, it is first checked whether the instruction word exists on the instruction cache 41, and if it exists, the data is transferred to the bus 45 as an instruction word.
It is sent to I unit 43 via. If it does not exist, the virtual address of the command is sent to the memory controller 12 via the common bus 50. The memory controller 12 converts the virtual address into a physical address and accesses the main memory 10 via the memory bus 11. The obtained data (commands) are sent to the instruction cache 41 via the common bus 50, and further sent to the I unit 43 via the bus 45, where they are processed and simultaneously transferred to the instruction cache 41. Can be stored. The I unit 43 decodes this obtained command and asks the E unit 44 "what to do."
instruct. Based on this command, the E unit 44 collects necessary data from internal registers and the data cache 42 (if it is not on the data cache 42, from the main memory 10 in the same way as the instruction cache), performs arithmetic processing, The result is stored in an internal register or main memory 10. The latter's main memory 1
When storing the result in 0, if the data at the corresponding location has already been taken into the data cache 42, that data is also updated. Next, a configuration example of the common bus 50 will be explained.
As shown in FIG. 2, the common bus 50 includes a startup bus 55, a data bus 56, a response bus 57, and these buses 55-5, which are used to actually transfer information.
A startup bus occupancy request line 51, a data bus occupancy request line 52, and a data bus occupancy request line 52 necessary for determining which processor or memory controller uses each of
Response bus occupancy request line 53 and interlock signal line 5
4 and is used on a time-sharing basis. The contents of the information on each bus 55 to 57 are as follows. (1) Startup bus 55 (a) Address (b) Type of access (for example, read access/write access, how many bytes to access, etc.) (c) Access key (protection performed by MCU 12) (2) Data bus 56 (a) Write data (b) Read data (3) Response bus 57 (a) End signal (b) Return code (errors and page faults that occurred during access) information) etc. FIG. 3 shows how these buses 55-57 are used. As shown in this figure, three combinations are transferred: (i) read request from a and read response from b, (ii) read request from a and write response from d, (iii) write request from c and write response from d. are possible simultaneously in the same time slot. Next, FIG. 4 shows how the buses 55 to 57 are used. In this figure, JOBP40 is set to time slot 0.
activates the memory read on the MCU 12, and the read data for it is sent to time slots N and N+1.
It has been returned in time slot 1, and in time slot 1
The IOP 30 issues a memory write start to the MCU 12, and a response is returned at time slot N+2. In this manner, the common bus 50 performs so-called split transfer in which activation and response are separated. Further, the main memory 10 is configured to be able to process multiple memory accesses. Before performing the transfer of the buses 55 to 57 described above, it is necessary to perform occupancy control.
This is done by the processor or memory controller that wishes to perform the transfer issuing occupancy requests 51 to 53 for the bus used for the transfer one time slot before the transfer, giving priority to these requests, and allowing the transfer. I'll do it. This prioritization method is
Various methods can be considered, but the details are omitted here. However, a response-based occupation request has a higher priority level than an activation-based occupation request. This is because if a response cannot be returned due to an occupancy request due to activation, the activation processing becomes stuck on the memory controller, resulting in a deadlock state. For example, in the case of this embodiment, if there is a conflict between the data read response b shown in FIG. 3 and the occupancy request caused by data write activation c shown in FIG. 3, the former is given priority. The above occupancy control is shown in a simplified manner in FIG. In time slot 0, JOBP40 and
Each of the IOPs 30 is issuing a startup bus occupancy request 51 in an attempt to start a read. Of these,
Assuming that JOBP 40 has a higher priority level than IOP 30, JOBP 40 uses the activation bus 55 to activate the read in time slot 1, and at the same time stops the occupancy request. On the other hand, since occupancy of the IOP 30 was not permitted, the startup bus occupancy request 51 continues to be issued in time slot 1 as well. Since there is no occupancy request from JOBP 40 in slot 1, IOP 30 can start reading in time slot 2. In such a system, when each processor accesses the main memory 10 by excluding access from other processors, that is, by interlocking, the startup bus 55 is prevented from being used by other processors. This is because by occupying the startup bus 55, future startups from other processors are excluded, and in response to memory startups that are already being processed in the main memory 10, the data bus 56 and response bus 57 are This is so that it can be used to return a response. This is because if these responses cannot be returned, the startup process will become stuck on the memory controller 12, resulting in a deadlock state. Next, an example of a method for occupying this startup bus 55 will be explained. A processor attempting to interlock and access the memory controller 12 receives a startup bus occupancy request 51 as shown in FIG.
At the time slot for transferring information to the startup bus 55, an interlock signal 54 indicating that the startup bus 55 is occupied is issued. This signal is used to control the activation bus occupancy request 51 from other processors so that it is not accepted. This is, for example, the seventh
This is realized by the circuit shown in the figure. In this figure, the priority determination circuit 61 for each occupancy request 51 to 53 is distributed for each processor, and the interlock signal line 5
4 is an open collector signal line. First, if the interlock signal 54 is not output,
A priority determination circuit 61 checks each of the occupancy requests 51 to 53, and if the activation bus occupancy request 51 issued by itself has the highest priority, an occupancy permission signal 64 for the activation bus 55 is passed through an AND gate 62 and an OR gate 63. coming out. This processor is therefore able to transfer information to the startup bus 55 in the next time slot. At this time, if the interlock request signal 65 is output from the processor, the JK flip-flop 6 is output via the AND gate 68.
6 is set and an interlock signal 54 is output. This interlock signal 54 is output until the interlock release signal 67 is issued.
During this time, this processor continues to occupy the startup bus 55. Next, if the interlock signal 54 is being output from another processor, the output of the priority determination circuit 61 is prohibited by the AND gate 62, so the startup bus occupancy permission signal 64 is not output.
The startup bus 55 cannot be used, so memory startup is also not possible. Next, the MCU 12 will be explained. In addition to normal memory access processing, the MCU 12 performs address exchange from virtual addresses to physical addresses and protection checks. In addition, since it is commonly used between each processor and requires high throughput, read processing and write processing are divided into several stages ~ or '~' as shown in Figure 8A and B. , multiple accesses can be processed in an overlapping manner as shown in FIG. 8C. FIG. 9 shows an example of the configuration of the MCU 12, and each processing stage shown in FIGS. 8A and 8B performs the following operations. (A): Operation of read processing stage The virtual address (VA), access type (FUN), and access key (AKEY) on the read activation reception activation bus 55 are taken into the common bus reception register 71 from the common bus 50. Address Conversion and Protection Check The address conversion device 75 determines whether a page indicated by a virtual address (VA) exists in the main memory 10 or not, and if so, converts it into a physical address (PA). If not,
This is a so-called page fault. At this time, the protection check circuit 76 determines whether or not the access is permitted. The address translation device 75 and protection check circuit 76 will be described in detail later. The results of these protection checks and page fault information are set in the access register 72 along with other error information as a return code (RC), access type (FUNC), and physical address (PA). If no error or page fault occurs in the access to the memory read start access register 72, the memory controller 77 uses the physical address (PA) on the access register 72 to
A memory activation 151 is applied to the main memory 10, and when the main memory 10 receives the activation, the access type (FUNC) and return code (RC) are transferred to the temporary storage register 73. Furthermore, if the access in the access register 72 already indicates the occurrence of an error or page fault, the memory is not activated and the information is transferred to the temporary storage register 73. Read data reception, data, response bus occupancy request Read data 154 is received from the main memory 10 via the memory bus 11, and the access type (FUNC) and return code (RC) are transferred to the common bus sending register 74. On the other hand, a data bus occupancy request 52 and a response bus occupancy request 53 are output to the common bus 50. When read data and response bus transfer occupancy requests 52 and 53 are accepted,
The read data 154 is transferred to the data bus 56 via the bus 155, and the end signal and return code (RC) are transferred to the response bus 57 via the bus 156 and returned to the accessing processor. (B): Operation of the write processing stage ' Write activation reception from the common bus 50 Virtual address (VA) on the activation bus 55, access type (FUNC), access key (AKEY), and write data (WD) on the data bus 56 ) as common bus reception register 71
Incorporate into. ' The same operation as in read processing stage A is performed except for address conversion and setting protection check write data (WD) in the access register 72. ' Memory write activation write data (WD) 153 is transferred to main memory 10.
This is the same as in read processing stage A, except that the read processing stage is transferred to. The response bus occupancy request access type (FUNC) and return code (RC) are transferred to the common bus sending register 74. On the other hand, a response bus occupancy request 53 is output to the common bus 50. When the occupancy request 53 for 'response bus transfer' is accepted, the end signal and return code (RC) are transferred to the bus 156.
The data is transferred via the response bus 57 and returned to the accessing processor. As described above, read and write processing is divided into stages, and stages with different numbers for different access processing can be processed in parallel as shown in FIG. 8C. In this figure, the common bus 50
From A 4Byte read start, B 4Byte write start,
C. The 16-byte read activation is received and processed at time slots 0, 1, and 2, respectively. Looking at the case of time slot 2, (a) memory read activation 3, (b) address conversion and protection check 2', and (c) read activation reception 1 from the common bus are performed in parallel. Here, the
The 16Byte read is compared to the 4Byte read of
This stage is repeated four times, but this
This is because memory interleaving is performed in units of 4 bytes. This will be explained below. FIG. 10 is a diagram showing an example of the configuration of the main memory 10, and shows a memory board (MB) 14 (14a to
14d) consists of a data width of 4Byte, and each memory board 14a, 14b, 14c, 14d
The lower 2 bits of the address added in 4-byte units are
It has data that is 00, 01, 10, 11. Since the 16 Byte data is on the memory boards 14a, 14b, 14c, and 14d each having 4 Bytes,
When reading 16 Bytes, it is possible to start up the memory boards in succession and continue reading data without causing any contention on the memory board 14, as shown in FIG. 8C. Such a 16-byte read is mainly used for block transfer to send data to the cache memory in the event of a cache miss. When the I unit 43 and the E unit 44 access the instruction cache 41 and the data cache 42, it is done in units smaller than 16 bytes (4 bytes in this example), so when reading this 16 bytes, the I unit 43 and the E unit access the instruction cache 41 and the data cache 42. The 4-byte data required by 44 is controlled to be delivered faster than the rest of the data, reducing access time. To do this, the order of the memory boards 14 to be activated from the MCU 12 may be changed according to the address as shown in FIG. 10B. Next, address translation and protection checking will be explained in detail. FIG. 11 is a block diagram showing the address translation device 75 in FIG. 9 in more detail, and the first
FIG. 2 shows the operational flow of address translation. The virtual address to physical address conversion table 130 is placed in a part of the main memory 10 because its memory capacity is large. However, accessing the main memory 10 to convert a virtual address to a physical address every time a memory access occurs would result in a large overhead, so the TLB 110, which stores recently accessed address conversion information, is It is provided in MCU12. The TLB 110 contains an address translation table 13.
0, the contents of the most recently used pages are stored, so that address translation can be performed at high speed. The contents of each page in the TLB 110 include a valid bit (V) 111, a connect (C) bit 112, and a portion of a virtual address (VAP) 11.
3. consists of part of physical address (PPA) 114, execution protection bit (EP) 115 and storage key (SKEY) 116. V
Bit 111 and C bit 112 indicate the current state of the corresponding page, and when V bit 111 is "0", it indicates that the contents of the corresponding page in TLB 110 are not valid data (invalid). V bit 111 and C bit 112 are both “1”
In this case, it indicates that the page in question is currently being transferred between the main memory 10 and the external memory 20, that is, paging is in progress, and the V bit 111 is "1" and the C bit 112 is "1". 0'' indicates that the corresponding page is in the main memory 10 and can be accessed. In this way, the paging status is added to indicate the area where paging is being performed.
This is to prevent access other than paging access from the ECP 22. In this system, the MCU 12 commonly performs address translation from a virtual address to a physical address for each processor, so even if an access is performed for paging by the ECP 22, it will go through the same address translation device 75. Allowing other processors to access the area being paged can lead to data corruption or loss. Therefore, as mentioned above, V
When the bit 111 and the C bit 112 both indicate "1", the above-mentioned inconvenience is solved by permitting paging access only from the FCP 22. Next, part of the virtual address (VPA) 113 is
When performing address translation in the TLB 110, it is used to check whether the translation pair of the corresponding virtual address (VA) is registered in the TLB 110.
14 is for creating a physical address (PA) when a translation pair of TLB 110 is received. Virtual address (VA), segment address (SA) 121, page address (PA) 122,
It consists of an intra-page address (DISP) 123, and the above-mentioned part of the physical address (PPA) 114 is concatenated with the intra-page address (DISP) 123 to form a physical address (PA). Execution protection bit 115 (EP) is
This is to prevent erroneously reading and executing an instruction with respect to data, and if the protection check circuit 76 reads an instruction to an area where this bit is "1", an execution protection error will occur. Therefore, if the instruction cache 41 and data cache 42 are separated in the JOBP 40 as in this configuration example, all accesses to this area from the instruction cache 41 will result in an execution protection error. The storage key (SKEY) 116 is for write protection and is the access key (AKEY) transferred from the requesting processor.
At the same time, the protection check circuit 76
It is checked whether write access is allowed or prohibited; in the latter case, a write protection error occurs. The access key (AKEY) is SKEY1 like this
In addition to being used to check for write protect errors by comparison with ECP 16, it also contains information on whether or not there is a paging access from the ECP 22, and information on whether or not it is an instruction read, and is also used for these protection checks. Next, the conversion process will be sequentially explained with reference to the flowchart of FIG. Types of memory access can be broadly divided into the following two types. That is, (1) memory access by a general processor, and (2) memory access during paging by the ECP 22. The access distinction in (1) and (2) is
It is on the access key AKEY and is transmitted to the address translation controller 125 via the signal line 140. First, address conversion for memory access and determination of access permission in the general case (1) will be explained. A virtual address output from a certain processor (JOBP 40 or IOP 30) is sent to the common bus reception register 7 in the MCU 12 via the common bus 50.
1 in the virtual address register 120. The virtual addresses set in this virtual address register 120 are segment address (SE) 121 and page address (PA) 122.
First, write TLB using part 120-2 as address.
110. read out by this
The V bit 111 and C bit 112 of the TLB 110 entry are the address translation controller 1
25, and depending on the pattern, subsequent processing is divided into the following three steps. This is the flow step (FO
5). When V bit 111=0 and C bit 112=0. This is displayed as "0,0" in FIG. 12, and as described above, the corresponding page (entry) of the TLB 110 is invalid, and the conversion table 130 on the main memory 10 is read.
(F10) The detailed operation at this time, that is, when a TLB miss occurs, will be described later. When V bit 111=1 and C bit 112=1. In Fig. 12, it is "1, 1", but at this time, part of the virtual address 120-1 and TLB
As a result of comparing the partial virtual address VPA113 of 110 with the comparator 124, it is found that they match,
If the TLB hit signal 141 is output (F205), this indicates that the corresponding page is currently being paged, so the memory access is prohibited and the address translation controller 125
A missing page fault signal 142 is output. (F45) When the TLB hit signal 141 is not output, it is a TLB miss, so the conversion table 130 on the main memory 10 is read out in the same way.
(F10) When V bit 111=1 and C bit 112=0. In FIG. 12, at the time of "1, 0", the TLB hit signal 141 is checked first,
(F30) If no output has occurred, check the protect error signal 143 from the protection check circuit 76, and if no error has occurred, check the in-page address field 123 of the virtual address register 120 and the physical address on the TLB 110. The part 114 is concatenated and the physical address is sent to the access register 72 via the selector 128.
The physical address is sent to the memory address bus 152, and the memory controller 77 outputs the memory activation signal 151 in order to access the main memory 10. (F40) Next, memory access during paging by the FCP 22 in (2) will be explained. The virtual address output from the FCP 22 is set in the virtual address register 120 within the MCU 12 via the common bus 50. In this case as well, first access TLB110,
Depending on the pattern of the V bit 111 and C bit 112 of the accessed entry in the TLB 110, the subsequent processing is divided into three parts as before. When V bit 111=0 and C bit 112=0. The conversion table 130 in the main memory 10 is read. (F10) When V bit 111=1 and C bit 112=1. At this time, the TLB hit signal 114 is checked. (F30) If the TLB hit is indicated, the main memory 10 is accessed using the physical address created on the access register 72. (F
40) If the TLB hit signal is not output, read the conversion table 130 in the main memory 10.
(F10) When the V bit = 1 and the C bit 112 = 0, the TLB hit signal 141 is checked.
(F215) When the TLB hit signal 141 is output, it means that a prohibited area is being accessed.
Notify FCP22 of the error. (F220) Next, the process of reading the conversion table 130 on the main memory 10 in the case of a TLB miss will be described. The conversion table 130 consists of a page table 132 having information necessary for address conversion and a segment table 131 holding the start address of the page table 132 in order to reduce the memory capacity required for the table. When TLB misses,
First, an adder 127 adds the contents of the register 126 (STOR) that holds the start address of the segment table and the segment address (SA) 121 of the virtual address register 120 to create a physical address. The contents are read onto the read data bus 155. This data holds the start address of the page table 132, and the adder 127 adds this value to the page address (PA) 122 of the virtual address register 120 to create an address, which is then used for conversion from the page table 132. Read out information. (F10) In addition to the M bit, this page table 132 includes information in the TLB 110 excluding the V bit 111 and a part of the virtual address 113 (VPA), and these M bits and C bits are used as the read data bus. The bit pattern is input to the address conversion controller 125 through a part 155-1 of the bit pattern 155, and the following processing is performed depending on these bit patterns. When the M bit = 0 and the C bit is 0, this indicates that the corresponding page is not on the main memory 10 but on the external memory 20, and a missing page fault signal 142 is issued in response to an access request for this page. to notify the corresponding processor of the page fault. (F45) When M bit = 0, C bit = 1 Since the corresponding bit indicates that paging is currently in progress, memory access is prohibited for those other than FCP22,
A missing page fault signal 142 is issued. (F45) In the case of memory access from the FCP 22, it is registered in the TLB 110 and accessed. (F20) When M bit = 1, C bit = 0 Part of read data 155-2
, part of the virtual address 120-1, and the V bit "1" are registered in the TLB 110, (F20)
Return to the V and C bit check routine. As described above, the address translation device 75
For memory accesses using virtual addresses from each processor, address translation from virtual addresses to physical addresses can be performed in a concentrated manner, which simplifies control of address translation. Additionally, by changing the control method for access from FCP22 and access from other processors, it is possible to prohibit access from other processors to the page being paged, making it possible to maintain data integrity. . Next, the operation at the time of a missing page fault will be explained. When the requesting processor receives a page fault signal, it interrupts the task it was executing at the time and activates the FCP 22 to load the page containing the requested address into main memory 10. In response to this activation, the FCP 22 reads the corresponding page, and when this is completed, generates an end interrupt. At this time, the required pages are 10 pages in main memory.
Resume the suspended task due to which it has been rolled up. While this task is suspended, the processor performs other tasks. Next, the instruction cache 41 and data cache 4
2 will be explained. FIG. 13 is a diagram showing an example of the structure of the instruction cache 41. The data copied from the main memory 10 is stored in the cache data section 8.
1-I, and the address of the data is on directory 82-I and invalidation directory 83-I.
I, and information indicating whether these are valid or not is in the valid bit register 84-I. The contents of the directory 82-I and the invalidation directory 83-I are the same, and are separated to improve performance. The former is used to check whether the data accessed by the I unit 43 is in the cache data section 81-I, and the latter is used to check whether the data written in the main memory 10 by another processor is in the cache data section 81-I.
1-I, the data is already old and must be invalidated (this is called invalidation processing), but it is used to check for this purpose. Next, the operation of this instruction cache 41 will be explained. Note that unlike the data cache 42, the instruction cache 41 does not process write accesses. FIG. 14 shows the flow when a read access cache miss occurs, and FIG. 15 shows the flow of invalidation processing. (1) Read access (see Figure 14) When the activation signal 91-I comes from the I unit 43, part of the virtual address 92-I, here bits 18-27, is used to access the directory 82-I.
I and the contents of the valid bit register 84-I are read, and a match is checked between the contents of the directory 82-I and bits 0 to 17 of the virtual address 92-I using the comparator 160-I.
Also, the contents are parity checker 161-
Check with I. and comparator 16
0-I indicates a match, no parity error has occurred, and valid bit register 84-I
indicates that the instruction
62-I, and the instruction cache controller 162-I registers bit 1 of the virtual address.
The contents of the cache data section 81-I accessed at 8-29 are transferred to the read data bus 94.
-I, and returns an end signal 93-I to the I unit 43. In the case of a cache miss, the instruction cache controller 162-I issues an activation bus occupancy request 51. If the occupancy request 51 is approved, the gate 85
-I and transfers the virtual address (VA), access type (FUNC), and access key (AKEY) to the startup bus 55. Note that this access key (AKEY) is appended with the fact that it is for command reading. The set signal 172-I sets bits 0 to 17 of the virtual address to the directory 82-I.
I, writes to the invalidation directory 83-I, and sets the valid bit register 84-I. The reason for performing this process at this point will be described later. From the MCU 12 via the data bus 56,
The read data (RD) is also sent to the response bus 57.
When the end signal and return code (information on errors and page faults that occurred during access) (RC) are sent through register 8.
6-Latch to I. As mentioned in the explanation of the MCU 12, the first data sent is the data accessed by the I unit 43, so the return code (RC) is the following (1).
When the state shown in ~(3) is shown (when condition A shown in FIG. 14B is satisfied), an end signal 93-I, read data 94-I, and return code 95-I are returned to the I unit 43. (1) No Error (when no error occurs) (2) Page Fault (when a page fault occurs) (3) Soft Error (when a software error such as a protection error occurs) Hard Errors (errors caused by hardware) can often be saved by accessing the main memory 10 again.
Perform a retry. Therefore, the above signal is not returned, but if the number of retries exceeds the specified number, that is, in the case of retry over, the above signal is returned in order to report an error. Then, the read data read from the main memory 10 is stored in the cache data section 81.
-Write to I. ,, The remaining read data sent from the MCU 12 is stored in the cache data section 81-.
Write to I. Since the end signal 93-I has already been returned to the I unit 43 at the stage , the I unit 43 can perform other operations during this time. In addition to this, at the stage of
It is checked whether an error or page fault has occurred in the stages of . . . , and if no error or page fault has occurred, the operation of the instruction cache 41 is stopped. If an error or page fault has occurred, the instruction cache controller 162-I outputs a valid bit clear signal 171-I to the valid bit register 84-I set at stage 162-I to clear the valid bit register 84-I and clear the valid bit register 84-I. The corresponding data in the data section 81-I is made unusable. Also, on the stage of
If a Hard Error occurs and the retry is not over (condition A shown in FIG. 14B is satisfied), the process jumps to the stage for retrying. The above is the processing procedure for read access, but as mentioned earlier, cache (both instruction and data cache) requires so-called invalidation processing.
The procedure will be explained below. (2) Invalidation processing (see FIG. 15) The virtual address (VA) and access type (FUNC) being transferred on the startup bus 55 are loaded into the register 87 each time. The contents of the invalidation directory 83-I are read using bits 18-27 of the virtual address, and the invalidation determination circuit 165-I checks whether or not invalidation is necessary. Register 8
8-I. And if you need to disable it, register 8
The corresponding valid bit 84- in the address of 8-I
Clear I. Therefore, invalidation determination circuit 1
Valid bit clear signal 171- from 65-I
Give I. Next, cases in which invalidation is necessary will be explained in detail.
First, the type of access (FUNC) taken from the invalidation activation bus 55 indicates a write access, and the access is performed from the other side. Then, invalidation is performed when any of the following conditions is met. (a) Bit 18 of address of register 87-I
-27 reads the invalidation directory 83-I, its contents and bits 0-17 of the address
are compared by the comparator 163-I, and when they match. (b) When the parity checker 164-I detects a parity error when reading the invalidation directory 83-I. (c) Invalidate directory 83-I to JOBP4
When used indoors. (Because it is not possible to check) The invalidation processing has been described above.Next, in the read access stage (1), addresses are written to the directory 82-I and the invalidation directory 83-I, and the valid bit register 84 is written. -I
Explain why it is necessary to set Figure 16 shows how each part is affected when a read access results in a cache miss and there is a conflict between cache invalidation processing when going to read the main memory 10 and when writing access to the main memory 10 is performed from another source. The time chart shows how it is used. Invalidation processing is indicated by diagonal lines, and for write accesses during transfer of the startup bus 55 and data bus 56 in time slots 1 and 3, respectively, the invalidation directory 83-I is checked in time slots 2 and 4. In the first half of time slots 3 and 5, the valid bit register 84-I is cleared and invalidated. On the other hand, the read access that resulted in a cache miss is accessed from the startup bus 55 in time slot 2.
Since the address is transferred to main memory 10
The order of access is after the write access during transfer on the activation bus 55 in time slot 1 and before the write access during transfer on the activation bus 55 in time slot 3. Therefore, in order to maintain consistency between the data in the cache and the main memory 10, write access must be performed at time slot 2 when checking the invalidation directory 83-I.
Disable the read access address that caused the cache error between directory 8 and 4.
The valid bit register 84-I must be set between time slots 3 and 5 to invalidate the valid bit register 84-I as a result of the check. The reason why these controls are necessary is that main memory 1
This is because multiple memory accesses are being processed simultaneously at 0. In this configuration example, address information is stored in two places,
In other words, since it is stored in the directory 82-I and the invalidation directory 83-I, only the invalidation directory 83-I is subject to the above restrictions, but if you have the directory in one place, of course the above restrictions apply. subject to restrictions. Next, the data cache 42 will be explained. FIG. 17 is a diagram showing an example of the configuration of the data cache 42, in which the invalidation processing circuit 180-
D is omitted because it is the same as the instruction cache 41. Note that the items in Figures 13 and 17 whose only difference is the suffix are equivalent. 13th
The instruction cache shown in the figure uses I for the suffix, and the data cache shown in FIG. 17 uses D for the suffix. The major difference from the instruction cache 41 is that it must support write access, and in order to shorten this write access time, a common bus sending buffer 8 is used.
9-D is provided, and when writing, virtual address 92 is provided.
-D, write data 95-D, control information 96-
By simply setting D to this buffer 89-D, a termination signal 93-D is returned to the E unit 44, and the E unit 44 is controlled so that it can perform the next process. Next, the operation of this data cache 42 will be explained. However, since the read access process is the same as that for the instruction cache 41, a description thereof will be omitted. (3) Write access (see Figure 18). When the activation signal 91-D comes from the E unit 44, the virtual address 92-D, write data 95-D, and control information 96-D (access type, access key, etc.) are set in the common bus sending buffer 89-D. Then, it returns a completion signal 93-D to the E unit 44. At this time, the directory 82-D and valid bit register 84-D are checked, and if the cache is being sent (signal 170-D is output), bit 18-D of the virtual address of the cache data section 81 is checked.
Data is written to the position indicated by 27. Data cache controller 162-D
A startup bus occupancy request 51 and a data bus occupancy request 52 are issued. If both occupancy requests are granted, gate 8
5-D is opened and the virtual address (VA), access type (FUNC), and access key (AKEY) are transferred to the startup bus 55, and write data is transferred to the data bus 56. When the end signal and return code are sent from the MCU 12 via the response bus 57, they are latched into the register 86-D. Then, the return code is checked, and if no error or page fault has occurred, the access is removed from the common bus sending buffer 89-D, and the process is terminated. On the other hand, if the condition A shown in FIG. 14B occurs, that is, a hard error occurs and retry is not over, the process jumps to the stage for retrying. In cases other than the above, the valid bit register 84-D is cleared with the address of the common bus sending buffer 89-D, and the occurrence of an error or page fault is reported to the E unit 44. Valid bit register 84-D
The reason for clearing is that, for example, in the case of a protection error, data in the cache data section 81-D that should not be written has already been written in the stage. It should be noted that the address activated by writing from the data cache 42 to the main memory 10 is also set from the activation bus 55 to the data cache register 87-D (included in the invalidation processing circuit 180-D); Since the data cache controller 162-D sends a signal 173-D to the invalidation processing circuit 180-D so as not to perform invalidation, the data cache controller 162-D sends a signal 173-D to the invalidation processing circuit 180-D. Since the instruction cache 41 does not perform write access, this signal 173-
There is no equivalent to D. As explained in detail above, according to the present invention,
There are multiple processors, at least one of which
It is possible to realize a data processing device in which each of the two processors has a cache memory that is accessed using virtual addresses, and the address translation device is shared by all the processors.

【図面の簡単な説明】[Brief explanation of the drawing]

第1図は、本発明が適用されるデータ処理装置
の全体構成を示した図、第2図は第1図の共通バ
スの構成例を示した図、第3図はアクセスごとに
共通バスのどの部分を使用するかを示した図、第
4図は共通バスの使用例を示す図、第5図は共通
バスの占有制御の様子を示した図、第6図はイン
タロツク信号が出ている時の共通バスの占有制御
の様子を示した図、第7図は占有制御回路の構成
例を示した図、第8図A〜CはMCUでの処理フ
ローの例及びMCUで複数のアクセスをオーバラ
ツプさせて処理していることを示した図、第9図
はMCUの構成例を示した図、第10図A,Bは
メモリボードの構成例及び16Byteリード時のデ
ータ返送の順番を示した図、第11図はTLBに
よるアドレス変換装置を示した図、第12図はア
ドレス変換のフローを示した図、第13図は命令
キヤツシユの構成例を示した図、第14図はキヤ
ツシユへのリードアクセス時の処理フローの説明
図、第15図はキヤツシユ無効化の処理フローの
説明図、第16図はキヤツシユ各部分の使用タイ
ミングの例を示した図、第17図はデータキヤツ
シユの構成例を示した図、第18図はライトアク
セスの処理フローの説明図である。 10……主記憶装置、12……メモリアクセス
コントローラ、20……外部記憶装置、22……
フアイルプロセツサ、30……入出力プロセツ
サ、40……ジヨブプロセツサ、41……命令キ
ヤツシユ、42……データキヤツシユ、43……
Iユニツト、44……Eユニツト、50……共通
バス、75……アドレス変換装置。
FIG. 1 is a diagram showing the overall configuration of a data processing device to which the present invention is applied, FIG. 2 is a diagram showing an example of the configuration of the common bus in FIG. 1, and FIG. Figure 4 shows an example of how the common bus is used; Figure 5 shows how the common bus is controlled; Figure 6 shows the interlock signal. 7 is a diagram showing an example of the configuration of the occupancy control circuit, and FIGS. 8A to 8C are examples of the processing flow in the MCU and how the MCU handles multiple accesses. Figure 9 shows an example of the MCU configuration. Figures 10A and B show an example of the memory board configuration and the order of data return when reading 16 bytes. Figure 11 shows an address translation device using TLB, Figure 12 shows the flow of address translation, Figure 13 shows an example of the configuration of an instruction cache, and Figure 14 shows how to convert an address to the cache. Fig. 15 is an explanatory diagram of the processing flow during read access, Fig. 15 is an explanatory diagram of the processing flow of cache invalidation, Fig. 16 is a diagram showing an example of the usage timing of each part of the cache, and Fig. 17 is the configuration of the data cache. FIG. 18, a diagram showing an example, is an explanatory diagram of a write access processing flow. 10...Main storage device, 12...Memory access controller, 20...External storage device, 22...
File processor, 30... Input/output processor, 40... Job processor, 41... Instruction cache, 42... Data cache, 43...
I unit, 44...E unit, 50...common bus, 75...address conversion device.

Claims (1)

【特許請求の範囲】 1 プログラムおよびデータを格納する主記憶装
置と、主記憶装置に格納されるべきプログラムお
よびデータを格納する外部記憶装置と、命令を実
行するために主記憶装置に対して仮想アドレスで
メモリアクセスを行う少なくとも1つのジヨブプ
ロセツサと、主記憶装置と外部記憶装置間でのプ
ログラムおよびデータの入出力を行うために主記
憶装置に対して仮想アドレスでメモリアクセスを
行うフアイルプロセツサと、該主記憶装置に接続
されるものであつて、各プロセツサから共通に使
用され、仮想アドレスを物理アドレスに変換する
アドレス変換装置を含むメモリアクセスコントロ
ーラを有し、該ジヨブプロセツサは、仮想アドレ
スでアクセスされるキヤツシユメモリを有し、該
キヤツシユメモリは、該フアイルプロセツサが主
記憶装置への書き込みを行う場合の仮想アドレス
を受取り、この仮想アドレスに対応するデータブ
ロツクを保持している場合、当該データブロツク
を使用できないようにする無効化処理手段を含む
データ処理装置。 2 キヤツシユメモリは、主記憶装置の一部のコ
ピーを保持するデータ部と、該データ部に格納さ
れた主記憶装置上の仮想アドレスを保持するデイ
レクトリイ部と、該仮想アドレスが有効か否かを
表示する有効表示部と、フアイルプロセツサから
送られてくる仮想アドレスをラツチするラツチレ
ジスタと、該ラツチレジスタにラツチされた仮想
アドレスと該デイレクトリイ部に保持された仮想
アドレスを比較する比較手段を有し、比較結果に
応じて該有効表示部をクリアするようにしている
特許請求の範囲第1項記載のデータ処理装置。 3 アドレス変換装置は、仮想アドレスに対応す
る物理アドレスが主記憶装置上にあるか否かを判
定し、この判定結果をアクセス要求を出したプロ
セツサに連絡する手段を有する特許請求の範囲第
1項記載のデータ処理装置。 4 ジヨブプロセツサ、フアイルプロセツサ、メ
モリアクセスコントローラは共通バスに接続され
ている特許請求の範囲第1項記載のデータ処理装
置。 5 キヤツシユメモリは、共通バスに接続され、
共通バス上の仮想アドレスを受取るようになつて
いる特許請求の範囲第4項記載のデータ処理装
置。
[Claims] 1. A main storage device for storing programs and data, an external storage device for storing programs and data to be stored in the main storage device, and a virtual storage device for the main storage device to execute instructions. at least one job processor that accesses memory using an address; a file processor that accesses memory using a virtual address to the main storage to input and output programs and data between the main storage and the external storage; The job processor is connected to the main storage device and has a memory access controller that is commonly used by each processor and includes an address translation device that translates virtual addresses into physical addresses, and the job processor is accessed using virtual addresses. The cache memory receives a virtual address when the file processor writes to the main memory, and if the file processor holds a data block corresponding to this virtual address, A data processing device including invalidation processing means for making a data block unusable. 2. The cache memory consists of a data section that holds a copy of a part of the main storage, a directory section that holds the virtual address on the main storage stored in the data section, and whether or not the virtual address is valid. a latch register that latches the virtual address sent from the file processor; and a comparison that compares the virtual address latched in the latch register with the virtual address held in the directory section. 2. A data processing device according to claim 1, further comprising means for clearing said valid display section in accordance with a comparison result. 3. The address translation device has means for determining whether or not the physical address corresponding to the virtual address exists on the main storage device, and communicating the result of this determination to the processor that issued the access request. The data processing device described. 4. The data processing device according to claim 1, wherein the job processor, file processor, and memory access controller are connected to a common bus. 5 The cache memory is connected to a common bus,
5. A data processing device as claimed in claim 4, adapted to receive virtual addresses on a common bus.
JP56156193A 1980-11-17 1981-10-02 Data processor Granted JPS5858666A (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP56156193A JPS5858666A (en) 1981-10-02 1981-10-02 Data processor
US06/320,934 US4481573A (en) 1980-11-17 1981-11-13 Shared virtual address translation unit for a multiprocessor system
DE8181109719T DE3176512D1 (en) 1980-11-17 1981-11-16 A virtual storage data processing system
CA000390161A CA1173567A (en) 1980-11-17 1981-11-16 Shared virtual address translation unit for a multiprocessor system
EP81109719A EP0052370B1 (en) 1980-11-17 1981-11-16 A virtual storage data processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP56156193A JPS5858666A (en) 1981-10-02 1981-10-02 Data processor

Publications (2)

Publication Number Publication Date
JPS5858666A JPS5858666A (en) 1983-04-07
JPS6113261B2 true JPS6113261B2 (en) 1986-04-12

Family

ID=15622400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP56156193A Granted JPS5858666A (en) 1980-11-17 1981-10-02 Data processor

Country Status (1)

Country Link
JP (1) JPS5858666A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0260471B2 (en) * 1982-12-25 1990-12-17 Maeda Metal Ind

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4669043A (en) * 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4933835A (en) * 1985-02-22 1990-06-12 Intergraph Corporation Apparatus for maintaining consistency of a cache memory with a primary memory
JPH01280860A (en) * 1988-05-06 1989-11-13 Hitachi Ltd Multiprocessor system with multiport cache memory
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0260471B2 (en) * 1982-12-25 1990-12-17 Maeda Metal Ind

Also Published As

Publication number Publication date
JPS5858666A (en) 1983-04-07

Similar Documents

Publication Publication Date Title
US4481573A (en) Shared virtual address translation unit for a multiprocessor system
Censier et al. A new solution to coherence problems in multicache systems
US6449699B2 (en) Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
JP3067112B2 (en) How to reload lazy push into copy back data cache
US4924466A (en) Direct hardware error identification method and apparatus for error recovery in pipelined processing areas of a computer system
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
JP4119380B2 (en) Multiprocessor system
US7774645B1 (en) Techniques for mirroring data within a shared virtual memory system
JPH0576060B2 (en)
US20040068620A1 (en) Directory structure permitting efficient write-backs in a shared memory computer system
EP0480858A2 (en) Hardware primary directory lock
JP2007533014A (en) System and method for canceling write back processing when snoop push processing and snoop kill processing occur simultaneously in write back cache
JP2829115B2 (en) File sharing method
JP3814521B2 (en) Data processing method and apparatus
JPS6113261B2 (en)
JPS63253448A (en) Multi-computer device
JPS6138504B2 (en)
JPH055137B2 (en)
JPH056706B2 (en)
JPS5864690A (en) Control method for cash memory
JPH03230238A (en) Cache memory control system
JPH0715667B2 (en) Data processing device
JPS63247852A (en) Cache memory control method
JPH0581120A (en) Data processor