JPH0526219B2 - - Google Patents

Info

Publication number
JPH0526219B2
JPH0526219B2 JP2007008A JP700890A JPH0526219B2 JP H0526219 B2 JPH0526219 B2 JP H0526219B2 JP 2007008 A JP2007008 A JP 2007008A JP 700890 A JP700890 A JP 700890A JP H0526219 B2 JPH0526219 B2 JP H0526219B2
Authority
JP
Japan
Prior art keywords
unit
memory
instruction
memory access
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2007008A
Other languages
English (en)
Other versions
JPH02234248A (ja
Inventor
Shii Hiizaringuton Ritsukii
Ei Uetsubu Junia Deiuitsudo
Bii Fuaito Deiuitsudo
Etsukusu Matsukiin Furanshisu
Ei Fuaasutenbaagu Maaku
Ii Maarei Jon
Pii Manrii Dowaito
Emu Saretsuto Ronarudo
Fuo Toryuugu
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH02234248A publication Critical patent/JPH02234248A/ja
Publication of JPH0526219B2 publication Critical patent/JPH0526219B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、これと同時に出願された次のような
米国特許出願に開示されているコンピユータシス
テムの幾つかの特徴を有するものである。
エバンス氏等の「デジタルコンピユータのシス
テム制御ユニツトとサービス処理ユニツトとの間
のインターフエイス(AN INTERFACE
BETWEEN A SYSTEM CONTROL UNIT
AND A SERVICE PROCESSING UNIT
OF A DIGITAL COMPUTER)」;アーノル
ド氏等の「システムの中央処理ユニツトとをイン
ターフエイスする方法及び装置(METHOD
AND APPARATUS FOR INTERFACING
A SYSTEM WITH THE CENTRAL
PROCESSING UNITS)」;ガグリアード氏等の
「マルチプロセツサシステムのシステム制御ユニ
ツトをシステムの主メモリとインターフエイスす
るための方法及び手段(METHOD AND
MEANS FOR INTERFACING A SYSTEM
CONTROL UNIT FOR A
MULTIPROCESSOR SYSYTEM WITH
THE SYSYTEM MAIN MEMORY)」;D.フ
イツト氏等の「パイプライン式コンピユータシス
テムにおいて考えられる種々の数のメモリアクセ
ス競合を分析する方法と装置(METHOD AND
APPARATUS FOR RESOLVING A
VARIABLE NUMBER OF POTENTIAL
MEMORY ACCESS CONFLICTS IN A
PIPELINED COMPUTER SYSYTEM)」;D.
フイツト氏等の「可変長さの命令アーキテクチヤ
において多数の指定子をデコードする方法
(DECODING MULTIPLE SPECIFIERS IN
A VARIABLE LENGTH INSTRUCTION
ARCHITECTURE)」;D.フイツト氏等の「仮想
命令キヤツシユリフイルアルゴリズム
(VIRTUAL INSTRUCTION CACHEREFILL
ALGORITHM)」;ハーマン氏等の「同じ命令内
のレジスタ及びレジスタ変更指定子のパイプライ
ン処理(PIPELINE PROGESSING OF
REGISTER AND REGISTER MODIFYING
SPECIFIERS WITHIN THE SAME
INSTRUCTION)」;マーレイ氏等の「デジタル
コンピユータにおいてデータ依存性を分析する多
命令処理システム(MULTIPLE
INSTRUCTION PREPROCESSING
SYSTEM WITH DATA DEPENDENCY
RESOLUTION FOR DEGITAL
COMPUTERS)」; フイツト氏等の「パイプラインプロセツサにお
いて暗示された指定子を予め処理する方法
(PREPROCESSING IMPLIED SPECIFIERS
IN A PIPELINED PROCESSER)」;D.フイ
ツト氏等の「ブランチ予想(BRANCH
PREDICTION)」; フオツサム氏等の「デジタルコンピユータのパ
イプライン式フローテイングポイント加算器
(PIPEL INEDFLOATING POINT ADDER
FOR DIGITAL COMPUTER)」;グランドマン
氏等の「自己計時式レジスタフアイル(SALF
TIMED REGISTER FILE)」;ベベン氏等の
「パイプライン式コンピユータシステムにおいて
エラーを検出して修正する方法及び装置
(METHOD AND APPARATUS FOR
DETECTING AND CORRECTING ERRORS
IN A PIPELINED COMPUTER
SYSTEM)」;フリン氏等の「マルチプロセツサ
システムにおいてシステム制御ユニツトを用いて
通信要求を仲裁する方法及び装置(METHOD
AND MEANS FOR ARBITRATING
COMMUNICATION REQUESTS USING A
SYSYTEM CONTROL UNIT IN A
MULTI−PROCESSOR SYSTEM)」;E.フイ
ツト氏等の「マイクロコード化実行ユニツトにお
ける並列動作式の制御多機能ユニツト
(CONTROL MULTIPLE FUNCTION
UINTS WITH PARALLEL OPERATION
IN A MICROCODED EXECURION
UINT)」;ヘザリントン氏等の「デジタルコンピ
ユータシステムにおいて仮想−物理メモリアドレ
スの変換を制御する方法及び装置(METHOD
AND APPARATUS FOR CONTROLLING
THE CONVERSION OF VIRTUAL TO
PHYSICAL MEMORY ADDRESSES IN A
DIGITAL CONPUTER SYSYTEM)」;ヘ
ザリントン氏等の「エラー修正機能を有するライ
トバツクバツフア(WRITE BACK BUFFER
WITH ERROR CORRECTING
CAPABILITIES)」;フリン氏等の「マルチプロ
セツサシステムにおいてシステム制御ユニツトを
用いて通信要求を仲裁する方法及び手段
(METHOD AND MEANS FOR
ARBITRATING COMMUNICATION
REQUESTS USING A SYSTEM
CONTROL UNIT IN A MULTI−
PROCESSOR SESTEM)」;チナズワミー氏等
の「マルチプロセツサシステムにおいてシステム
ユニツト間のデータトランザクシヨンに対するモ
ジユール式クロスバー相互接続ネツトワーク
(MODULAR CROSSBAR
INTERCONNECTION METWORK FOR
DATA TRANSACTIONS BETWEEN
SYSTEMUNITS IN A MULTI−
PROCESSOR SYSTEM)」;ボルジン氏等の
「入力/出力ユニツトを有するマルチプロセツサ
システムに対するシステム制御ユニツトをインタ
ーフエイスする方法及び装置(METHOD AND
APPARATUS FOR INTERFACING A
SYSYTEM CONTROL UNIT FOR A
MULTI−PROCESSOR SYSYTEM WITH
INPUT/OUTPUT UNITS)」;ガグリアード
氏等の「システム主メモリを有するマルチプロセ
ツサシステムのためのシステム制御ユニツトをイ
ンターフエイスする手段に用いるメモリ構成
(MEMORY CONFIGURATION FOR USE
WITH MEANS FOR INTERFA CING A
SYSTEN CONTROL UNIT FOR A
MULTI−PROCESSOR SYSTEM WITH
THE SYSTEM MAIN MEMORY)」;そして
ガグリアード氏等の「システムモジユール間の
DRAM制御信号のエラーチエツクのための方法
及び手段(METHOD AND MEANS FOR
ERROR CHECKING OF DRAM−
CONTROL SIGNALS BETWEEN SYSTEM
MODULES)」。
本発明は、一般に、仮想メモリシステムをベー
スとするデジタルコンピユータに係る。より詳細
には、本発明は、パイプライン式命令処理コンピ
ユータシステムの命令パイプライン内の予めフエ
ツチした命令でメモリアクセス例外を処理する技
術に係る。
従来の技術 仮想メモリを使用するコンピユータシステム
は、仮想アドレス空間内に定められた非常に多数
のアドレス(32ビツトコンピユータの場合に4百
万以上のアドレス)を確認することができる。コ
ンピユータの実際の物理的なメインメモリは実質
的に小型であるが、そのシステムはアドレス空間
全体にアドレスが分散されたデータを処理するこ
とができる。このような能力は、精巧なメモリマ
ネージメント技術によつて発揮され、この技術で
は、仮想アドレス空間の大部分が実際に利用でき
るという仮定のもとでプログラムを実行すること
ができ、これにより、実際よりも相当に多くのメ
インメモリアドレス空間を利用できるという錯覚
をユーザに与えることができる。メモリマツピン
グ及び論理/物理アドレス変換を使用することに
より、仮想メモリシステムは、非隣接物理記憶に
基づく隣接論理メモリをコンピユータに与えるも
のである。
仮想メモリシステムは、一般に、メモリのリニ
アなアレイをそれより小さなメモリ領域に静的又
は動的に仕切ることと、ブロツクアドレスマツピ
ングシステムとの組合せを使用してメモリをブロ
ツクに分けるという考え方に基づくものであり、
上記マツピングシステムにより、仮想アドレス
は、ブロツク位置と、ブロツク内の変位とに変換
される。仮想アドレスから物理アドレスへのマツ
ピングプロセスは、典型的に、ブロツクマツピン
グテーブルによつて行なわれ、このテーブルは、
各物理メモリブロツクごとにメモリ内のブロツク
アドレスを含む入力を保持し、可変サイズブロツ
ク式のメモリシステムの場合は、メモリブロツク
のサイズを保持する。このようなブロツク式仮想
メモリ機構においては、ブロツク位置の変換を容
易にするために全ての物理ブロツクが同じサイズ
のものであり、メモリ内のいずれの物理ブロツク
位置にも仮想メモリブロツクを配置できるように
なつている。各メモリブロツクはメモリページと
称され、いかなるときにも全ての仮想ページが一
次メモリ内に存在するのではない。むしろ、ある
二次記憶手段、通常はデイスクを用いて、残りの
ページが保持される。
ページ式メモリシステムにおける仮想アドレス
から実(物理)アドレスへのマツピング即ち変換
は、実際に使用される仮想アドレス空間の各主領
域ごとにページテーブルを使用することにより実
行される。ページテーブルは、ページテーブル入
力の仮想連続アレイであり、各入力は1つの仮想
ページに対する物理的なマツピングを表わしてい
るロングワードである。仮想アドレスから物理ア
ドレスへの変換は、単に仮想ページ数を所与のペ
ージテーブルベースアドレスからページテーブル
へのインデツクスとして使用するだけで実行され
る。とりわけ、ページテーブルは、メモリページ
が一次メモリに物理的に位置されているか二次メ
モリに位置されているかを表わすフイールドを含
んでいる。メモリマネージメント及び例外論理回
路は、プログラムの仮想アドレスを物理アドレス
に変換し、プログラム及びそれに関連したデータ
を便利な位置(メインメモリ又は補助メモリの)
に記憶し、そして必要なデータ又はプログラムセ
グメントをメインメモリに入れるために使用され
る。
上記形式の仮想メモリコンピユータシステムに
おいては、仮想アドレスが発生され、これら仮想
アドレスがその後に物理アドレスに変換され、物
理アドレスの一部分を使用してページテーブルを
インデツクスしそしてそれに対応するページテー
ブル入力(PTE)をフエツチすることにより物
理メモリ及び入力/出力(I/O)装置がアクセ
スされる。PTEは、典型的に、アクセス特権
(ピリビレジ)に関する情報と、幾つかの物理ア
ドレスと、アドレスの変更及び有効状態を表わす
ビツトとを含んでいる。又、PTEは、アドレス
ページがメモリ内に存在しないときに生じるよう
なアクセス例外をハンドリングするためにシステ
ムソフトウエアにより使用される状態ビツトも含
んでいる。従つて、オペレーテイングシステムは
物理メモリのイメージを与え、これはメモリソー
ス位置を参照することなくユーザがアクセスでき
るものである。変換プロセスの結果として、オペ
レーテイングシステムは、その後、アクセスされ
たメモリセグメントへのアクセスを許可するか又
は拒絶する。メモリアクセス要求が許可された場
合には、それに対応するメモリオペレーシヨンが
完了まで行なわれる。一方、アクセス要求が拒絶
された場合には、プログラム実行プロセスが停止
され、例外ハンドラルーチンが実行される。
命令を実行すべきときには、仮想メモリシステ
ムのハードウエアは、その命令に対応する仮想ア
ドレスを発生し、そしてそれを読み取り又は書き
込みのようなメモリアクセスオペレーシヨンの要
求と共にシステムメモリユニツトへ中継する。メ
モリユニツト内に設けられた変換手段は、仮想ア
ドレスに対応する物理アドレスを計算し、そして
変換プロセスが首尾よく終ると、所要のメモリア
クセスオペレーシヨンが実行される。仮想アドレ
スから物理アドレスへの変換が何らかの理由で不
首尾に終つた場合には、メモリユニツトは命令プ
ロセツサに信号を返送し、プログラムの実行を続
けるのではなく、メモリアクセス例外を開始させ
る。
アクセス例外の検出時にプログラムの実行を停
止する技術は考え方としては単純であるが、マル
チプロセツシング及びパイプライン式命令実行を
典型的に使用する高性能コンピユータに利用する
場合には、著しく複雑で且つやつかいなものとな
る。高性能コンピユータは、一般に、複数の中央
処理ユニツトを用いて適当な問題分析により所定
のタスクを実行することによつてシステムレベル
でマルチプロセスを行なうという考え方に基づい
ている。マルチプロセス動作は、パイプライン搬
送のプロセスによつて更に複雑化され、コンピユ
ータの命令が一連のより小さなそしてより簡単な
オペレーシヨンに分割され、これらのオペレーシ
ヨンは特定の目的に最も適した多数の専用のフア
ンクシヨンユニツトにより次々に実行される。こ
のようなシステムでは、多数のI/Oバスを介し
て大量記憶装置及び他の装置への並列路を使用す
ることにより、高速で且つ広範囲な接続性及び冗
長性が与えられる。
高性能コンピユータシステムにおいては、命令
を実行するに必要なオペレーシヨンの全シーケン
スがパイプライン式であるために、メモリアクセ
ス例外の検出及び処理が複雑なものとなる。その
典型的な例は、米国、マサチユーセツツ州、メイ
ナード、111パワダーミルロードのデジタル・イ
クイツプメント社から入手できる“VAX”ブラ
ンドフアミリーのコンピユータである。
VAX8600モデルのコンピユータに対する命令パ
イプラインが、1985年8月の「Digital
Technical Jourual」第1号の第8−23頁に掲載
されたフオサム氏等著の「VAX8600システムの
概要(An Overview Of The VAX8600
System)」と題する論文に詳細に述べられてい
る。この論文に示されたように、高性能パイプラ
インは、命令の実行に含まれるオペレーシヨンの
種々の各段階ごとに個別のパイプライン段を使用
している。これらのパイプライン段は、典型的
に、命令のフエツチ、命令のデコード、オペラン
ドアドレスの発生、オペランドのフエツチ、命令
の実行及び結果の記憶を含む。メモリアクセス例
外の処理は、一度に多数の命令がアクテイブとな
るので困難である。更に、各命令は、多数のメモ
リ参照、命令読み取り、オペランド読み取り、オ
ペランド書き込み、アドレス読み取り及びストリ
ング読み取りをアクテイベートする。更に、これ
らのオペレーシヨンの各々は、命令パイプライン
内の種々の段において種々のハードウエアセグメ
ントによつて実行されることか多い。
命令パイプラインに沿つて命令を実行する動作
の一部分としてメモリ参照が行なわれるときに
は、命令により与えられた仮想アドレスから物理
アドレスを発生するためにアドレス変換プロセス
が行なわれる。これらの変換段の各々において
は、メモリアクセス例外が生じるおそれがある。
次の命令段の実行に必要であると予想される命令
及びオペランドをコンピユータシステムが予めフ
エツチするようにされ、その間に特定の命令が作
用されるときには、複雑な問題が生じる。従つ
て、例外が検出されたときに全ての必要なアクセ
ス例外が作用される場合には、そこから生じるア
クセス違反を分析するために相互依存のオペレー
シヨン段が停止されたときにパイプラインが迅速
に停止することになる。そこで、高速度のパイプ
ライン式命令処理を達成することと、関連するメ
モリアクセス例外が同時に実行されるときに生じ
る比較的低速度の逐次処理を達成することとの間
には直接的な競合が存在する。従つて、パイプラ
イン段内で生じるメモリ例外を、他のパイプライ
ン段の妨害による命令パイプラインの停止を回避
するように取り扱うことが極めて重要となる。例
えば、VAXアーキテクチヤでは、命令を予めフ
エツチする動作の一部分としてメモリを読み取る
際に生じる例外がその前に発生された命令の実行
を妨げないようにするプロトコルによつてこの問
題に対処している。
発明の構成 例外情報を、実行されている命令の他の部分と
共にパイプライン処理するという考え方に基づく
例外取り扱い機構が提供される。本発明の重要な
特徴によれば、パイプライン段で発生された例外
情報は、パイプラインに沿つて搬送され、そして
命令がパイプラインの実行段に達したときだけ作
用される。従つて、例外情報が有効であつて実行
段に存在することが分かつた場合だけ例外ハンド
リングルーチンを呼び出せばよい。例外が存在す
ると分つた命令実行パイプラインの各段において
例外ハンドリングルーチンに依存するという複雑
で且つ時間浪費なプロセスは排除される。このよ
うな機構から得られる主な利点は、関連する例外
に付随する命令が実行段に達する前に命令の流れ
が変えられる場合に、例外条件を残りの命令と共
に省けることである。
本発明の好ましい実施例によれば、命令パイプ
ラインの各段から、仮想/物理変換を行なうメモ
リユニツトの前端へとポートで結ぶことにより、
上記の機構が達成される。メモリユニツトの後端
は、その前端で発生された物理アドレスを用い
て、主メモリ又はキヤツシユメモリ内のアドレス
されたデータをアクセスするように構成される。
又、パイプライン段に対してメモリユニツトの前
端に設けられた各ポートには、命令に付随する仮
想アドレスを記憶する手段と、検出された例外に
関連し“欠陥”情報を記憶する手段とが設けられ
る。この例外情報は、実行段のみにおいてシステ
ムソフトウエアにより作用される。メモリユニツ
トの前端でメモリアクセス例外に遭遇したときに
は、そこから発生された欠陥情報が記憶段にロー
ドされ、そしてポートはそれ以上の参照を受け入
れないよう阻止される。然し乍ら、他のパイプラ
イン段に対応するポートは、メモリ参照を受け入
れるためにアクテイブな状態に保持される。この
構成では、命令の流れの手前の段で生じた欠陥又
は例外によつて妨げられることなく更に命令をパ
イプラインに沿つて完了させることができる。
本発明の別の特徴によれば、例外ハンドリング
プロセスを命令実行プロセスと同期させる手段が
設けられる。命令が発生段を通過する前にパイプ
ライン段で発見された欠陥は、命令の予めの処理
及びオペランドの予めのフエツチにより導出され
たデータ及び制御ワードと共に(又はそれに代つ
て)パイプライン処理される。欠陥パイプライン
は、実行段で命令を発生するためにこのデータ及
び制御が必要とされる時点でチエツクされ、欠陥
又は例外が見つかつた場合には、命令を発生する
のではなく、例外が開始される。このように、発
生段に続くパイプライン段に存在している全ての
命令は、何の妨げもなく完了することができる。
本発明の別の重要な特徴によれば、メモリ書き
込みオペレーシヨンのための行先オペランドアド
レスがパイプラインのオペランド処理ユニツト段
において計算され、そしてその後、変換のために
メモリユニツトへ通される。データが実行段の後
まで得られないので、それに対応する書き込みオ
ペレーシヨンは通常延期される。変換された行先
アドレスは書き込み待ち行列に記憶され、そして
その後、実行段に続いて受け取つた対応データと
対にされる。命令がリタイアされるときには、書
き込まれるべきメモリの行先をその点に定めるこ
とが重要である。行先アドレスは予め変換されて
いるので、データ書き込み待ち行列に対応する有
効入力が存在する限り、実行段又はそれに続いて
命令を便利にリタイアすることが可能となる。
要約すれば、パイプライン段は必要に応じてメ
モリ参照を出力し、パイプラインによつて実行さ
れるべきタスクは、そのメモリ参照に対応するア
ドレス変換が首尾よく終つた場合に通常の仕方で
完了され、この場合、パイプライン段に関連した
データを用いて命令が最終的に実行段において実
行される。然し乍ら、メモリ参照に対応するアド
レス変換が不首尾に終つた場合には、欠陥情報が
発生され、メモリユニツト内のパイプライン段に
対応するポートが閉状態として示される。メモリ
ユニツトにより発生された欠陥情報はパイプライ
ンを経て伝幡され、最終的に実行段において、欠
陥又は例外情報に基づいて欠陥ハンドラルーチン
を呼び出すためのベースとして使用される。
本発明の他の目的及び効果は、添付図面を参照
した以下の詳細な説明から明らかとなろう。
実施例 本発明は種々の形態で実施できるが、その特定
の実施例を一例として添付図面に示し、これにつ
いて以下に詳細に説明する。然し乍ら、本発明は
これに限定されるものではなく、特許請求の範囲
に述べた本発明の精神及び範囲から逸脱せずに
種々の変更や修正がなされ得ることが明らかであ
ろう。
第1図は、パイプライン式仮想メモリベースの
コンピユータシステム10の最高レベルブロツク
図である。このコンピユータシステム10は、1
つ以上の中央処理ユニツト(CPU)12を使用
しており、全てのシステムCPUがシステムに対
して共通のメインメモリ14を共通できるように
することによりこれら全てのCPUを同時に即ち
並列に動作できるように構成されている。実施例
においては、メインメモリ14を効果的に共有す
ることにより4つまでのCPUをこのシステムに
おいて同時に動作させることができる。パイプラ
インの考え方により、CPU12は非均質(non−
homogeneous)プロセツサであり、個々の命令
がその実行に先立つて分別された特定のタスクを
専用に且つ最適に実行するよう構成された1組の
特殊目的のフアンクシヨンユニツトを含んでい
る。
パイプライン技術によれば、各々の基本的なオ
ペレーシヨン(加算、乗算等の)が多数の独立し
た段に分割され、これは製造組立ラインをいかに
編成するかに良く似ている。各段が動作の完了に
“t”秒を要すると仮定すれば、オペランド対は
各段t秒で終了し、次いで、次の段へ通され、新
たなオペランド対を開始できるようになる。例え
ば、4つの独立した段を必要とする命令の場合
(指数減算、仮数整列、仮数加算及び結果の正規
化の4つの別々の段を必要とするフローテイング
ポイント加算演算の場合のような)、実行プロセ
スの開始から終了までに4t秒の時間周期が必要と
される。然し乍ら、重要なことは、t秒ごとに新
たな結果を形成できることである。換言すれば、
各々の専用の段がそこに割り当てられたタスクを
実行するにつれて、当該命令が完了に近ずいてい
く。パイプラインの最終段において、システムサ
イクルの通過に伴ないタスクが完了するたびに、
命令の完了を表わす新たな結果が発生される。こ
のようなパイプラインは、一般に、1つのオペレ
ーシヨンを実行するのに通常以上に長い時間を要
するが、一連の同様のオペレーシヨンを実行すべ
きである場合には、パイプラインは同じ長さの時
間内に相当に多数のオペレーシヨンを実行するこ
とができる。
一般に、命令の実行は次のような個々の段に分
割される。即ち、命令のフエツチ、命令のデコー
ド、オペランドのフエツチ、命令の実行そして結
果の記憶。又、これらの独立した段を或る形態で
オーバーラツプさせ、全命令スループツトを高め
ることもできる。この形式の考え方によれば、各
パイプライン段の結果が共通のシステムロツクに
基づいて次の段へ転送される。例えば、第1のク
ロツクサイクル中に、命令フエツチを専用に行な
うフアンクシヨンユニツトによつて命令がフエツ
チされる。第2のクロツクサイクル中に、そのフ
エツチされた命令が命令デコード段へ転送され、
そこで専用のフアンクシヨンユニツトが命令をデ
コードし、それと同時に、命令フエツチ段がアク
テイブな状態に保たれ、命令フエツチユニツトを
介して次の命令をフエツチすることになる。次の
クロツクサイクル中には、各パイプライン段によ
つて発生された結果がパイプラインの次の段へシ
フトされ、それと同時に、別の新たな命令がフエ
ツチされる。このプロセスは、パイプラインの最
終段がアクテイベートされるまで続き、その点で
パイプラインがいつぱいになる。その後、新たな
命令が第1のパイプライン段によりフエツチされ
続ける限り、各次々のクロツクサイクルの終りに
最終段によつて命令が完了される。
さて、第1図を参照すれば、各CPU12は、
本質的に、少なくとも3つの独立したフアンクシ
ヨンユニツト、即ちメモリアクセスユニツト16
(Mユニツト)、命令ユニツト18(Iユニツト)
及び実行ユニツト20(Eユニツト)に仕切られ
る。
Mユニツト16は、メモリ、I/O及び他の
CPUユニツトに対するCDUインターフエイスを
なし、より詳細には、仮想メモリ参照を受け入
れ、これらの参照を物理アドレスに変換しそして
適当なインターフエイス手段を介してメインメモ
リ14内のメモリデータへのアクセスを開始する
か又はローカルキヤツシユ内のメモリデータへの
アクセスを開始するための手段として働く。
第1図に示されたシステムでは、Mユニツト1
6はメインキヤツシユ22を備えており、これ
は、命令及びEユニツト12及び13がメインメ
モリ14の通常のアクセス時間で許される以上の
相当に速い速度でデータをアクセスして処理でき
るようにするものである。このメインキヤツシユ
は、プロセツサが現在オペレーシヨンの実行に必
要としているデータ(典型的に、最も最近使用し
た命令とデータ項目)を一時的に保持する。この
キヤツシユは、所要のアドレス位置とキヤツシユ
の内容との間の対応を定める連想メモリマツプを
使用することによりメモリアドレスを解読する。
システムが動作して、所要のデータ項目がキヤツ
シユ内にあることが分かると、メインメモリへの
要求を禁止すると共に、プロセツサにより要求さ
れたデータをキヤツシユから供給する。メインメ
モリ14は、所要のデータ項目がキヤツシユ18
から得られないときだけアクセスされ、この場
合、データはシステムメモリからフエツチされ
て、それを要求しているユニツトへ送られる。手
短かに述べると、キヤツシユ18は、プログラム
内のローカリテイの現象に基づいて動作し、シス
テムのメインメモリにウインドウを形成すると共
に、空間的及び一時的なローカリテイで参照デー
タへの高速アクセスを行なえるようにするもので
ある。
メインキヤツシユ22は、データエレメントの
選択された所定のブロツクを記憶する手段と、指
定のデータエレメントをアクセスするために変換
バツフア24を経てメモリアクセス要求を受け取
る手段と、指定のデータエレメントがキヤツシユ
内に記憶されたメモリのブロツク内に存在するか
どうかをチエツクする手段と、指定のデータエレ
メントを含むブロツクに対するデータがキヤツシ
ユ内にないときに、指定のデータブロツクをメイ
ンメモリ14から検索しそしてそれをキヤツシユ
22に記憶するように働く手段とを備えている。
所要のデータエレメントがキヤツシユ22内に存
在しないことが分かるたびに、データエレメント
を含むデータの全ブロツクがメインメモリ14か
ら得られる。プロセツサのフアンクシヨンユニツ
トがメモリからデータエレメントを次に要求する
ときに、ローカリテイの原理により、所要のデー
タエレメントは、その前にアドレスされたデータ
エレメントを含むメモリブロツク内に見い出され
る可能性が大きくなる。キヤツシユ22はメイン
メモリ14よりも相当に高速度でアクセスされる
ので、メインメモリは、システム性能を著しく低
下することなく、キヤツシユよりも比例的にゆつ
くりとしたアクセス時間をもつことができるよう
になる。従つて、メインメモリ14は、低速で且
つ安価なメモリエレメントで構成される。
変換バツフア24は、最も最近使用された仮
想/物理アドレス変換を記憶する高速連想メモリ
である。ここで述べる形式の仮想メモリシステム
では、1つの仮想アドレスを参照することによ
り、所望のメモリ情報が得られる前に多数のメモ
リ参照を生じさせることができる。然し乍ら、変
換バツフア24は、仮想アドレスからそれに対応
する物理アドレスへの変換を単にバツフア内の
“ヒツト”に探索することに減少することにより、
変換プロセスを簡単化することができる。
コマンド及び入力データを第1図のコンピユー
タシステムへ送信すると共に、システムからデー
タ出力を受け取るために、I/Oバス25がメイ
ンメモリ14及びメインキヤツシユ22にリンク
される。
Iユニツト18は、プログラムカウンタ26
と、メインキヤツシユ22からの命令をフエツチ
するための命令キヤツシユ28とを備えている。
プログラムカウンタ26は、メインメモリ14及
びキヤツシユ22の物理メモリ位置ではなくて仮
想メモリ位置をアドレスするのが好ましい。従つ
て、プログラムカウンタ26により出力された仮
想アドレスは、所要の命令を検索できるようにな
る前に、メインメモリ14の対応する物理アドレ
スに変換されることが必要である。この変換は、
Mユニツト16の変換バツフア24によつて行な
われる。プログラムカウンタ26の内容はMユニ
ツト11へ転送され、そこで変換バツフア24が
アドレス変換を実行する。その後、所要の命令が
キヤツシユ22又はメインメモリ14内の物理メ
モリ位置から検索され、データ戻りラインを経て
命令キヤツシユ28へ送られる。キヤツシユ22
及び変換バツフア24の構成及びオペレーシヨン
は、1980年デジタル・イクイツプメント社の「コ
ンピユータプログラミング及びアーキテクチヤ、
VAX−11(Computer Programming and
Architecture、The VAX−11)」の第351−368
頁に掲載されたレビー及びアクホース二世著の第
11章の論文の説明されている。
命令キヤツシユ28は、一般に、プログラムカ
ウンタ26により指定されたアドレスに予め記憶
された命令を有している。キヤツシユ28は、多
データバイトのブロツクで命令データを受け取つ
たり送信したりするように構成され、これらブロ
ツクに対するメモリアドレスがPC26で与えら
れたアドレスの指定のビツトによつて指定される
ようになつているのが好ましい。アドレスされた
命令は、次いで、命令バツフア(I−Buf)30
に転送するべく直ちに得ることができ、そしてこ
のバツフアは、システムクロツクのクロツク動作
に基づいて命令データを受け取るためのデータラ
ツチとして本質的に動作する。I−Buf30から
の命令は命令デコード32へ送られ、このデコー
ドは、命令に付随するオペレーシヨンコード
(OPコード)及び指定子の両方をデコードする。
オペランド処理ユニツト(OPU)33は、オペ
ランドに対するメモリ又はレジスタアドレスを発
生するか、或いはリテラルの場合には命令流から
のオペランドを直接評価する。レジスタアドレス
及びリテラルはEユニツト20に送られる。
OPU33により発生されたアドレスは仮想アド
レスであり、メモリソース(読み取り)及び行先
(書き込み)オペランドに対する仮想アドレスを
表わしている。メモリ読み取りオペランドの場合
には、OPU33がこれらの仮想アドレスをMユ
ニツト16に供給し、物理アドレスに変換する。
次いで変換プロセスにより指定された物理メモリ
位置がアクセスされ、メモリソースオペランドと
してのオペランドがフエツチされる。
メモリ書き込みオペランドの場合、書き込まれ
るべきデータは、命令の実行が完了するまで得る
ことができず、従つて、書き込まれるべきデータ
が得られるまで書き込みアドレスを記憶すること
が必要となる。然し乍ら、行先の仮想アドレスか
らそれに対応する物理アドレスへの変換は、命令
の実行に要する時間中に終了させることができ
る。更に、OPU33は、命令が実行されている
時間中に多数の命令指定子を予め処理することに
より命令の実行速度を増加するという点で効果的
に使用される。これらのフアクタを受け入れるた
めに、Mユニツト16には、変換バツフア24と
メインキヤツシユ22との間に配置された書き込
み待ち行列構成体34かつ設けられる。この書き
込み待ち行列構成体34は、Eユニツト20が命
令を完了するまでその変換されたアドレスを本質
的に保持し、そしてそれにより生じたデータをM
ユニツト16へ中継し、そこでこのデータは記憶
された書き込みアドレスと対にされ、その後に、
その変換された物理アドレスで指定されたキヤツ
シユ22内のメモリ位置に書き込まれる。好まし
い書き込み待ち行列構成体が、本発明の譲受人の
所有する「パイプライン式コンピユータシステム
において可変数の潜在的なメモリアクセス競合を
分析する方法及び装置(Method and
Apparatus For Resolving A Variable
Number Of Potential Memary Access
Conflicts In A Pipelined Computer
System)」と題する1989年2月3日出願のD.フア
イト氏等の米国特許出願第306767号に詳細に開示
されている。
メモリ読み取り動作を要求する命令の場合に
は、変換バツフア24は、読み取り命令のオペラ
ンドに対する物理アドレスを直接発生する。変換
されたアドレスを記憶するための一時的な記憶手
段36がMユニツト16に設けられており、この
変換されたアドレスは、後でメインキヤツシユ2
2によつて使用されて、識別されたメモリ位置を
アクセスすると共に、そこに記憶されたデータを
適当なデータ返送ラインを経てEユニツト20へ
供給する。38及び40で各々示されたマルチプ
レクサ及びデマルチプレクサユニツトは、一時的
な記憶ユニツト36又は書き込み待ち行列34の
いずれかを選択してメインキヤツシユ22と変換
バツフア24との間で変換されたアドレスを変換
するためにメモリユニツト16に設けられてい
る。
各々の命令において、第1バイトはOPコード
を含んでおりそしてそれに続くバイトはデコード
されるべきオペランド指定子である。各指定子の
第1バイトは、その指定子のためのアドレスモー
ドを指示する。このバイトは通常半分に分割さ
れ、一方の半分はアドレスモードを指定しそして
他方の半分はアドレス動作に使用されるレジスタ
を指定する。命令は、可変長さであるのが好まし
く、種々の形式の指定子を同じOPコードと共に
使用することができる。この形式の典型的な構成
が1980年12月23日付のストレツカー氏等の米国特
許第4241397号に開示されている。
命令を処理する第1の段階は、命令の“OPコ
ード”をデコードすることである。各命令の第1
部分は、命令において実行されるべきオペレーシ
ヨン、指定子の数及び各指定子の形式を指定する
OPコードより成る。デコード動作は、命令デコ
ーダ32におけるテーブル・ルツクアツプ技術を
用いて行なわれる。命令デコーダは、ルツクアツ
プテーブルにおいて命令を実行するためのマイク
ロコードスタートアドレスを見い出し、そのスタ
ートアドレスをEユニツト20に通す。その後、
Eユニツトは、指示されたスタートアドレスで始
まる予め記憶されたマイクロコードを実行するこ
とにより指定のオペレーシヨンを実行する。又、
デコーダは、ソースオペランド及び先行オペラン
ド指定子が命令内のどこに生じるかを決定し、こ
れらの指定子を命令実行前に予め処理するために
OPU33に通す。
ルツクアツプテーブルは、多数の入力を各々有
する多ブロツクのアレイとして構成される。ルツ
クアツプテーブルの各入力は、そのブロツク及び
入力インデツクスによりアドレスすることができ
る。OPコードバイトはブロツクをアドレスし、
実行点カウンタからのポインタ(命令における現
在指定子の位置を指示する)はブロツク内の特定
入力を選択する。選択された入力は、各指定子ご
とに、データコンテツクスト(バイト、ワード
等)、データ形式(アドレス、整数等)及びアド
レスモード(読み取り、書き込み、変更等)を指
定する。
命令がデコードされた後に、OPU33はオペ
ランド指定子を通し、それらの有効アドレスを計
算する。このプロセスは、GPRを読み取りそし
ておそらく自動増加又は自動減少によつてGPR
の内容を変更することを含む。次いで、オペラン
ドがこれらの有効アドレスからフエツチされてE
ユニツト20へ通され、該ユニツトは命令を実行
しそしてその結果を、その命令に対して先行ホイ
ンタで識別された先行へ書き込む。OPU33は、
各命令のOPコードに基づいて指定子信号も発生
する。
命令がEユニツトに通されるたびに、Iユニツ
トはマイクロコードデイスパツチアドレス及び1
組のポインタを送信するが、これは、(1)ソースオ
ペランドを見出すことのできるEユニツトレジス
タフアイル内の位置と、(2)結果を記憶すべき位置
とに対するものである。Eユニツト内において、
1組のバツフアベースの待ち行列42は、マイク
ロコードデイスパツチアドレスを記憶するための
フオーク待ち行列と、ソースオペランド位置を記
憶するためのソースポインタ待ち行列と、行先位
置を記憶するための先行ポインタ待ち行列とを備
えている。これら待ち行列の各々は、多数の命令
に対してデータを保持することのできるFIFOバ
ツフアである。
又、Eユニツト20はソースオペランドリスト
44も備えており、これは、GPRのコピーを含
むマルチポートレジスタフアイルに記憶される。
従つて、ソースポインタ待ち行列の入力は、レジ
スタオペランドに対するGPR位置を指すか、或
いはメモリ及びリテラルオペランドに対するソー
スリストを指す。Mユニツト16及びIユニツト
18はソースリスト44に入力を書き込み、Eユ
ニツト20は必要に応じてソースリストからオペ
ランドを読み取つて命令を実行する。命令を実行
するために、Eユニツト20は、命令発生ユニツ
ト46と、マイクロコード実行ユニツト48と、
演算処理ユニツト(ALU)50と、命令リタイ
ヤユニツト52とを備えている。
本発明の重要な特徴によれば、各々のパイプラ
イン段にはMユニツトの前端に向つてポートが設
けられている。この構成では、Mユニツトにより
処理されるメモリアクセス要求に、その要求を開
始した特定のパイプライン段に関して便利なよう
にフラグを立てることができる。従つて、例外を
生じるメモリアクセス要求に関連したポートを容
易に分離し、そしてそれを不作動化するか、或い
はその例外が適当に処理されるまでその関連パイ
プライン段からそれ以上のメモリアクセス要求を
受け入れないよう阻止することができる。
第1図において、前端は変換バツフア24によ
つて表わされており、このバツフアは、図示され
たように、Iユニツト18及びEユニツト20内
に配置されたパイプラインの適当な段からメモリ
アクセス要求を受け取るためのポートを有してい
る。特に、Iバツフア30は命令キヤツシユ28
を経てMユニツト16の対応する前端ポート24
Aに接続される。OPU33はそれに対応する前
端ポート24Bに接続され、。そしてEユニツト
段に対して前端ポート24Cが設けられている。
メモリアクセス要求を発生するパイプラインの
別々の段に対して他の個別のポートを設けること
ができ、第1図に示されたポートは単に説明のた
めのものであつて、これらに限定されるものでな
いことが理解されよう。
典型的な命令の実行に含まれた種々のパイプラ
イン段について、第2図を参照して以下に説明す
る。上記したように、パイプライン式プロセツサ
においては、プロセツサの命令フエツチハードウ
エアが1つの命令をフエツチする間に、他のハー
ドウエアが第2命令のオペレーシヨンコードをデ
コードし、第3命令のオペランドをフエツチし、
第4命令を実行し、そして第5命令の処理済みデ
ータを記憶する。第2図は、次のような典型的な
命令に対するパイプラインを示している。
ADDL3 R0、B^12(R1)、R2これは、変位モー
ドアドレス動作を用いたロングワード加算であ
る。
この命令のパイプライン実行の第1段において
は、命令のプログラムカウンタ(第1図のPC2
6)が形成される。これは、通常、手前の命令か
らプログラムカウンタを増加するか、又は分岐命
令のターゲツトアドレスを使用することによつて
達成される。次いで、PCを使用し、パイプライ
ンの第2段において命令キヤツシユ28がアクセ
スされる。
パイプラインの第3段においては、命令データ
がキヤツシユ22から得られ、これは命令デコー
ダ32によつて使用されるか或いは命令バツフア
30へロードされる。命令デコーダ32は、以下
で詳細に述べるように、単一のサイクルにおいて
OPコード及び3つの指定子をデコードする。オ
ペランドアドレスR0及びR2はALUユニツト50
へ送られ、そしてオペランドは、デコードサイク
ルの終りにバイト変位と共にOPU33R1へ送
られる。
段4において、オペランドユニツト33は、位
置R1にあるGPRレジスタフアイルの内容を読み
取り、その値を指定の変位(この場合、12)に加
え、そしてそれにより得られたアドレスをアドレ
ス発生段階の終りにMユニツト16内の変換バツ
フア24へOP読み取り要求と共に送信する。
段5において、Mユニツト16は、段4で発生
されたアドレスを実行のために選択する。変換バ
ツフア24を使用し、Mユニツト16は、アドレ
ス変換段階中に仮想アドレスを物理アドレスに変
換する。アドレス変換による欠陥が検出されそし
てそれに対応する欠陥情報が発生されるのはこの
段階である。本発明によれば、それにより生じた
欠陥情報は記憶装置に入れられ、欠陥情報の関連
セグメントが現在段で発生された結果と共にその
後読段で処理されるべく通される。欠陥情報の発
生及びその最終的な使い方は以下で詳細に説明す
る。次いで、物理アドレスを用いてキヤツシユ2
2がアドレスされ、これはパイプラインの段6で
読み取られる。
パイプラインの段7において、命令がALU2
7に発生され、ALU27は2つのオペランドを
加算し、その結果をリタイヤユニツト28へ送
る。段4の間に、R1及びR2に対するレジスタ値
と、メモリデータに対するソースリスト位置を指
すポインタとがEユニツトへ送られそしてポイン
タ待ち行列に記憶される。次いで、キヤツシユ読
み取り段階中に、Eユニツトはソースリストにお
いて2つのソースオペランドを探す。この特定例
においては、R0内のレジスタデータのみを見つ
けるが、この段の終りに、メモリデータが到達
し、レジスタフアイルの無効化された読み出しと
取り替えられる。従つて、命令実行段階中に両方
のオペランドが得られる。メモリの実行には、命
令発生段階に続いて、指定のオペランドを使用す
る実際の実行が本質的に含まれる。
本発明によれば、パイプラインの手前の段階の
完了により得られたデータは、実行段において欠
陥情報の存在に対してチエツクされる。欠陥の指
示が検出された場合には、その欠陥が最初に検出
されたときに既に記憶された更に別の欠陥情報が
呼び出され、そして以下に述べるように、実行ハ
ンドリングルーチンが呼び出される。
パイプラインのリタイヤ段8において、得られ
たデータがリタイヤ待ち行列における次の入力と
対にされる。多数のフアンクシヨンEユニツトが
同時にビジーになることがあるが、1つのサイク
ル中には1つの命令しかリタイヤできない。
ここに示すパイプラインの最後の段9において
は、Eユニツト20がIユニツト18の両方のレ
ジスタフアイルのGPR部分にデータが書き込ま
れる。
本発明によれば、メモリアクセス要求は、仮
想/物理メモリアドレス変換を必要とする命令パ
イプライン内の段により留められる。これらの要
求は、Mユニツトの前端に設けられた対応するポ
ートに留められる。この留められたメモリアクセ
ス要求に関連した仮想アドレスは、所定の組のメ
モリアクセス違反の存在を決定するように処理さ
れる。違反の存在が見つからない場合には、メモ
リアクセス要求が許可され、それに関連したメモ
リ動作が通常の仕方が完了される。然し乍ら、違
反の存在か見つかると、それに関連した仮想アド
レスが、遭遇したアクセス違反の特定形式を識別
するコードと共に記憶される。次いで、違反の存
在を示す欠陥信号が発生され、そこに含まれた情
報が、その後のパイプライン段に沿つて送られる
得られたデータと共にEユニツトへ伝幡される。
命令を実行するためにこのデータがEユニツトに
よつて要求されるときには、このデータが欠陥信
号の存在に対してEユニツトによつてチエツクさ
れる。この信号が存在すると分つた場合には、M
ユニツトに既に記憶された欠陥アドレス及びコー
ドが検索され、それに対応する所定の例外ハンド
リングルーチンが呼び出される。
留められたメモリアクセス要求に伴なう仮想ア
ドレスは、変換バツフア30(第1図)が最近使
用された仮想/物理変換の局部的なキヤツシユと
共に動作するときにはこの変換バツフア30の動
作によつて発生することができ、或いはその局部
的な変換バツフアキヤツシユが所要のアドレス変
換を含まないときにはアドレス変換を取り扱う当
該変換バツフア固定(fix−up)ユニツトの動作
によつて発生することができる。変換バツフア3
0の機能構成部分、それに関連した固定ユニツト
の詳細な説明、及びそれに関連した動作の説明
は、参考としてここに取り上げる本発明の譲受人
の所有する「デジタルコンピユータシステムにお
いて仮想/物理メモリアドレス変換を制御する方
法及び装置(Method And Apparatus For
Controlling The Conversion Of Virtual To
Physiacl Memory Addresses In A Digital
Computer System)」と題する1989年2月3日付
の上記ヘサリングトン氏の米国特許出願第306544
号に開示されている。本発明を容易に理解するた
め、第3図及び第4図を参照して変換バツフア及
び固定ユニツトの動作を簡単に説明する。
第3図を参照し、変換バツフア24の動作につ
いて詳細に説明する。変換バツフア24は、5つ
の種々のソースから仮想アドレスを受け取るよう
に接続される。これらソースのうちの3つはメモ
リアクセスユニツト16の外部にあり、以下、一
般に外部と称する。他の2つのソースはメモリア
クセスユニツト16内から制御され、以下、一般
に内部と称する。これらの内部レジスタは、変換
バツフアの“ミス”中に、メモリから仮想/物理
変換を検索しそしてそれを変換バツフア24に入
れるのに使用される。
外部ソースは、Iユニツト18の一部分であつ
て命令のプリフエツチアドレスを与える役目を果
たすIバツフア30と、オペランドのプリフエツ
チアドレスを与えるOPU33と、明確なオペラ
ンドアドレスを与えるEユニツト20とを備えて
いる。変換バツフア24の動作は、全てのアドレ
スが同一に処理されるので、処理されている特定
の外部アドレスとは独立したものである。
これら外部ソースの各々はマルチプレクサ54
の入力に送られ、このマルチプレクサは、選択さ
れた入力を変換バツフア24へ制御可能に与え
る。変換バツフア24は、受け取つた仮想アドレ
スを、最近使用した仮想/物理アドレス変換のキ
ヤツシユ55と比較する。一致が得られた場合に
は、変換バツフア24はそれに対応する物理アド
レスを選択し、それをキヤツシユ22へ供給す
る。仮想/物理変換をフエツチするためにキヤツ
シユ22をアクセスする必要がない。というの
は、この仮想/物理変換は、その手前の使用によ
り変換バツフアキヤツシユ55内に既に存在する
からである。この点について、変換バツフア24
は、メモリへのアクセス回数を減少することによ
りプロセツサの速度を相当に高める。
然し乍ら、変換バツフアキヤツシユ55は、少
数の仮想/物理変換した含まない。従つて、現在
変換されている仮想アドレスは変換バツフアキヤ
ツシユ55内に存在しないことが考えられる。こ
れが生じたときには、メモリから変換を検索しそ
してそれを変換バツフアキヤツシユ55に入れ
て、仮想/物理変換を完了できるようにすること
が必要である。
又、選択された外部ソースによつて与えられた
仮想アドレスは、変換バツフアの固定ユニツト
(TB Fixup)56にも送られる。その名前が示
すように、TB Fixup56は、主として、変換バ
ツフアキヤツシユ51内に存在しないこれらの変
換を検索してそれらを変換バツフア24に入れる
ことのみを行なう。TB Fixup56の特定の動作
は、現在処理されているメモリアクセスの形式に
よつて制御される。これを理解するためには、先
ず、仮想メモリの構成を説明することが必要であ
る。
仮想アドレス空間は、実際に、多数の機能領域
即ちセグメントに分割される。先ず、仮想アドレ
ス空間は、システム空間及びプロセス空間と称す
る2つの半部分に分割される。プロセス空間は、
プログラム領域(P0)及び制御領域(P1)に分
割される。各領域は、そのメモリ領域に対し全て
の仮想/物理アドレス変換を集めたものを有して
いる。これらの変換は全体的にページテーブルと
称され、一方個々の変換はページテーブル入力
(PTE)と称される。各領域はそれ自身のページ
テーブルを有しており、2つのレジスタ、即ちペ
ージテーブルスタートアドレスを含むベースレジ
スタと、そのテーブル内のページテーブル入力の
数を含む長さレジスタとによつて定められる。
仮想アドレスは、32ビツト長さの2進数であ
り、2つの上位ビツトがメモリの領域を定める。
例えば、ビツト31はシステム及びプロセス空間を
定める。この位置が1つであることはシステム空
間を指示し、一方0であることはプロセス空間を
指示する。更に、ビツト30は2つのプロセス領域
(P0、P1)を定める。プロセス空間の上位アドレ
スの半分は制御領域(P1)であり、一方下位ア
ドレスの半分はプログラム領域(P0)によつて
占有される。
アドレス空間の上位アドレスの半部分は、シス
テム内の全てのプログラムによつて共有されるの
でシステム空間と称され、オペレーテイングシス
テムはこの領域内で動作する。システム空間に対
しては1つのページテーブルしかなく、これは、
全てのシステム空間参照を変換するシステムペー
ジテーブル(SPT)である。このSPTは、2つ
のハードウエアレジスタ、即ちシステムベースレ
ジスタ(SBR)及びシステム長さレジスタ
(SLR)によつて説明される。これらのレジスタ
は、オペレーテイングシステムがブートされると
きにソフトウエアによつてロードされる。
SPTは物理アドレスによつて参照されねばな
らないことに注意するのが重要である。というの
は、ページテーブル自体のない仮想/物理アドレ
ス変換はないからである。例えば、変換プロセス
を開始するためには、少なくともSPTの物理ア
ドレスが既知となつて仮想/物理変換を検索する
ようになつていなければならない。
メモリの下位アドレスの半分は、システム空間
とは異なりシステム内の各プログラムに独特なも
のであるからプロセス空間と称される。各プログ
ラムは、そのプログラム及び制御領域に対しそれ
自身のページテーブルを有しており、これらはそ
れに対応するベース及び長さレジスタ(P0BR、
P1BR、P0LR及びP1LR)によつて定められる。
例えば、同じプロセス空間の仮想アドレスを参照
する種々のプログラムが種々の物理メモリ位置を
アクセスする。従つて、プロセスページテーブル
は、物理メモリアドレスではなくて仮想メモリア
ドレスによつて参照される。従つて、プロセス空
間仮想アドレスの変換は、プロセスページテーブ
ルの物理メモリ位置を先ず探索しなければならな
い。これらのアドレスは、システムページテーブ
ル(SPT)の物理メモリ位置において得られる。
システムメモリ参照の変換は1つの段階で行なう
ことができるが、プロセスメモリ参照は2つの変
換、即ち先ず第1にプロセスベースレジスタアド
レスの変換と、そして第2に、仮想アドレス自体
の変換とを行なわねばならない。
プログラム領域(P0)はユーザプログラムを
含んでいて、プログラムがロードされると予想さ
れるゼロベースの仮想アドレス空間を与えるよう
になつている。これに対し、制御領域(P1)は
プロセスのユーザモードスタツクを受け入れる。
又、オペレーテイングシステムは、保護されたプ
ロセス特有データ及びコードを含むと共により高
いアクセスモードに対してスタツクを含むように
制御領域を使用することができる。
第3図を再び参照すると、TB Fixup56は、
マルチプレクサ50からの仮想アドレスを受け取
りそしてビツト30及び31を使用して、アクセスさ
れている仮想メモリ領域を決定する。指定された
領域は、どのベースレジスタを使用して対応する
ページテーブルを検索すべきかを決定するのに使
用される。システムメモリ参照の場合は、SBR
から計算されたページテーブルアドレスが物理ア
ドレスであり、これをメモリアクセスユニツトの
キヤツシユ22へ直接供給して、対応する仮想/
物理変換を記憶することができる。然し乍ら、
“ミス”が生じたときに変換バツフア24を固定
するだけでよい。従つて、変換バツフア24はミ
ス信号をTB Fixup56に供給し、計算したアド
レスをキヤツシユ22に供給することができる。
TB“ミス”の場合には、変換がキヤツシユ22
から検索され、変換バツフアキヤツシユ55に記
憶される。従つて、変換バツフアキヤツシユ55
とペンデイング中の仮想アドレスとの直後の比較
は当然“ヒツト”を生じるはずである。それ故、
TB Fixup56は変換バツフア24を経て制御を
一時的にアサートして変換バツフアキヤツシユ5
5を更新し、これによりペンデイング中の変換が
“ミス”から“ヒツト”に変えられ、仮想/物理
変換が完了される。
これに対し、アドレスされている仮想メモリ領
域がプロセス領域に対応する場合には、プロセス
ベースレジスタP0BR、P1BRのいずれかから計
算したアドレスが仮想アドレスである。この仮想
アドレスはキヤツシユ22に送られることはない
が、先ず初めに物理アドレスに変換されねばなら
ない。もちろん、仮想/物理のアドレス変換は通
常の変換バツフア24によつて行なわれる。変換
バツフア24は現在ストールされていて、そのキ
ヤツシユ51を更新するためにTB Fixup56を
待期しているので、TB Fixup56は変換バツフ
アを経て制御をアサートし、この仮想/物理変換
を実行することができる。TB Fixup56は、プ
ロセスページテーブルの計算された仮想アドレス
を変換バツフア“ミス”に応答して内部レジスタ
57に供給する。マルチプレクサ58は、内部レ
ジスタ57の内容をマルチプレクサ54の入力に
与えるためにTB Fixup56によつて選択され
る。又、TB Fixup56は、マルチプレクサ58
の出力をマルチプレクサ54への入力として選択
するように動作する。プロセスメモリ参照に対す
る変換バツフア“ミス”が生じると、プロセスペ
ージテーブルの計算された仮想アドレスが仮想/
物理変換のために変換バツフア24に送られるよ
うになることが明らかであろう。従つて、この時
に変換バツフア24に“ヒツト”が生じると、物
理アドレスが変換バツフア24によつてキヤツシ
ユ22へ直接送られる。
又、第2の変換バツフアの“ミス”が内部レジ
スタ56に含まれたアドレスに対して生じること
も考えられる。又、TB Fixup56はこの第2の
“ミス”を修正することもできる。固定(fixup)
ルーチンは、システム参照“ミス”に対して
PTEを検索するのに用いたものと同じである。
検索されたPTEは変換バツフアキヤツシユに記
憶され、これを用いて、変換バツフア24をその
後に通過する際に仮想/物理変換の物理アドレス
を形成する。
又、シーケンサ59は、内部レジスタ57と同
じバスを経てTB Fixup56から入力を受け取
る。シーケンス59は、メモリから多数の隣接バ
イトを読み取ることが必要な多数の高精度動作中
に使用される。シーケンサ50はアドレスを増加
し、それをマルチプレクサ58に供給する。TB
Fixup56は、シーケンサの第1の内部レジスタ
アドレス及び第2の増加されたアドレスを連続的
に供給するためにどのマルチプレクサ入力が選択
されるかを制御する。マルチバイトオペレーシヨ
ンの全てのバイトはこのようにアクセスされる。
第4図は、変換バツフア24及びTB Fixup5
6の詳細なブロツク図である。変換バツフア24
は、最近使用されたPTEのキヤツシユ55を保
持する。32ビツトの仮想アドレスは変換バツフア
30によつて受け取られ、そしてビツト31及び
17:09はキヤツシユ55の1024個のメモリ位置に
対するポインタとして使用される。
キヤツシユ55内の各メモリ位置は、仮想アド
レスのビツト30:18に対応する13ヒツトタグを有
している。これらのタグはAp−A1024と示されて
おり、全体的にページ変換デイレクトリと称され
る。下位の512個のタグはプロセスメモリ参照に
対応しそして上位の512個のタグはシステムメモ
リ参照に対応する。タグをプロセスタグとシステ
ムタグとに分離する目的は、コンテクストの切換
が生じたときに現在プログラムに関連したタグの
みをオペレーテイングシステムが迅速に無効化で
きるようにするためである。例えば、別のプログ
ラムが実行を開始するときにこれらの入力が無効
化されない場合には、この次のプログラムが、そ
の手前のプログラムにより予め変換されているプ
ロセス仮想アドレスを発生することにより間違つ
た物理メモリ位置をアクセスすることがある。従
つて、変換バツフア30が“ミス”を検出するの
ではなく、手前のプログラムの仮想/物理変換に
基づいてタグの一致が生じる。
システムタグはコンテクストの切換の後に無効
化される必要がない。というのは、全てのプロセ
スがシステム空間を共有しそして仮想/物理変換
が各プロセスごとに同じだからである。従つて、
いずれのプログラムからのシステムメモリ参照も
同じ物理メモリ位置をアクセスし、システムタグ
をフラツシユする必要はない。ビツト31はプロセ
スタグをシステムタグから分離する。
タグAp−A1024の各々に関連しているのは、Bp
−B1024と示された対応PTEを含む32ビツトのデ
ータフイールドである。このPTEは、ビツト
24:00の物理ページフレーム数と、ビツト31の有
効ビツトと、ビツト30:27の保護フイールドと、
ビツト26の変更ビツトとを含む。これらのPTE
は全体的にページ変換記憶装置と称される。
比較器60は、仮想アドレスのビツト30:18
と、ポインタに対応する13ビツトタグとを受け取
る。これらのビツト間の一致は、仮想アドレスに
対応するPTEがページ変換記憶装置においてタ
グビツトに対応する位置に配置されることを示し
ている。選択されたPTEのビツト29:09はレジ
スタ62の1つの入力に送られる。レジスタ62
の他方の入力は、仮想アドレスのビツト08:00か
ら形成される。換言すれば、対応する物理ページ
は、実際の物理アドレスを形成する仮想アドレス
のバイトオフセツトに添付される。この物理アド
レスはレジスタ62に維持され、このレジスタは
比較器60からの反転したパルスによつてクロツ
クされる。従つて、計算された物理アドレスは、
ページ変換デイレクトリに“ヒツト”が見つかつ
たことを比較器60が指示する場合にのみキヤツ
シユ22へ供給される。
同時に、VPN(ビツト29:09)がTB Fixup5
6に送られる。状態マシン66は、比較器60か
らの制御入力(TBミス)と、仮想アドレスのビ
ツト31:30とに応答してTB Fixup56の動作を
制御する。状態マシン66は、TBミス信号に応
答し、所要のPTEのアドレスを計算する。一般
に、PTEは、VPN及びベースレジスタのアドレ
スを加算することにより決定される。
ビツト31:30の状態は、PTEを計算するのに
用いられる特定のベースレジスタを決定する。前
記したように、3つの別々のメモリ領域があり、
その各々はそれ自身の独特のページテーブル及び
ベースアドレスを有している。状態マシン66
は、ビツト31:30を解読し、マルチプレクサ68
の選択入力に制御信号を供給して、適当なベース
レジスタを選択できるようにする。マルチプレク
サ68への入力は、各メモリ領域のベース及び長
さレジスタを含む一連の6個のレジスタ70
(P0BR、P1BR、SBR、P0LR、P1BR及びSLR)
に接続される。
又、状態マシン66はマルチプレクサ72の選
択入力を制御し、このマルチプレクサは、レジス
タセツト73を形成している一連の3つのアドレ
スレジスタの出力に接続され、そしてレジスタセ
ツト73は種々の形式のTB“ミス”状態に対応
する仮想アドレスを一時的に記憶するようにされ
る。より詳細には、プロセツサメモリ内の第1の
“ミス”に対応する仮想アドレスを記憶するため
の“ポートミス”レジスタが設けられており、固
定ユニツトから変換バツフアを次々に参照するこ
とにより生じる“ミス”に対応する仮想アドレス
を記憶するための“固定ミス”レジスタが設けら
れており、そして遅延固定動作を必要とする“ミ
ス”に対応する仮想アドレスを記憶するための
“遅延ミス”レジスタが設けられている。これら
の記憶された仮想アドレスに対する固定ユニツト
の応答は以下で説明する。システムメモリ内の
“ミス”又はプロセスメモリ内の第1“ミス”の間
に、状態マシン66は、仮想アドレスのビツト
21:2を含むマルチプレクサ72へのベースミス
アドレス入力を選択する。最も下位の2ビツトは
必要とされない。というのは、PTEがロングワ
ード整列(4バイト)でキヤツシユ28に記憶さ
れているからである。マルチプレクサ68,72
は、それらの出力を加算器74へ供給し、ここで
合成されてPTEのアドレスを形成する。このア
ドレスは仲裁ユニツト75又はキヤツシユ22へ
送られる。
アドレスと共に、状態マシン66は、計算した
アドレスが物理アドレスであるか仮想アドレスで
あるかによつて仲裁ユニツト75又はキヤツシユ
28のいずれかに要求信号を供給する。要求信号
は、仲裁ユニツト75及びキヤツシユ22の一方
をイネーブルするように働く。例えば、プロセス
ベースレジスタにより計算されたアドレスは仮想
アドレスであり、キヤツシユ22に送ることはで
きず、変換バツフア24において仮想/物理変換
を受けねばならない。従つて、状態マシン66は
仲裁ユニツト75に要求信号を供給する。仲裁ユ
ニツト75は第3図に示されたマルチプレクサ5
4に対応し、優先順位機構に基づいて外部レジス
タ又は内部レジスタから信号を供給するように働
く。内部レジスタ、即ちシーケンサ59及び内部
レジスタ57は、最も高い優先順位を有してい
る。従つて、状態マシン66が仲裁ユニツト75
に要求信号を与えるときには、内部レジスタが外
部レジスタに対して選択され、外部レジスタから
の競合を招くことなくTB Fixupルーチンを進め
ることができる。
これに対し、システムベースレジスタから計算
されたアドレスは物理アドレスであり、キヤツシ
ユ22へ直接送つて所望のPTEを検索すること
ができる。PTEはメモリから検索されてレジス
タ76へ送られる。それに対応する仮想アドレス
のビツト30:18はレジスタ78に与えられる。レ
ジスタ76,78の内容は、ポインタにより指示
された位置に記憶され、最も最近に使用された仮
想/物理変換で変換バツフアキヤツシユ51が更
新される。
プロセスメモリ“ミス”の間に変換バツフア2
4を第2回目に参照することによつて“ミス”が
生じることも考えられる。TB Fixup56はこの
2重の“ミス”を取り扱うことができる。状態マ
シン66は、第2の連続する“ミス”信号を比較
器60から受け取つたときに2重ミス状態を確認
する。状態マシン66は、マルチプレクサ68を
介してシステムベースレジスタを選択すると共
に、マルチプレクサ72を介して固定ミスアドレ
スを選択する。ポートミスアドレスレジスタに
は、第1の“ミス”を生じた元の仮想アドレスが
ロードされたまゝとなる。加算器74はこれらの
選択された信号を合成し、プロセスページレジス
タの物理システムアドレスを得るようにする。こ
れはシステムメモリ参照であるから、そのアドレ
スは物理メモリ位置を識別し、これは、キヤツシ
ユイネーブル信号と共にキヤツシユ22へ直接送
ることができる。ここで、プロセスは元のシステ
ムメモリ参照と実質的に同じであり、キヤツシユ
22はそれに応答して、識別されたアドレスに記
憶されたPTEを変換バツフアキヤツシユ55に
送る。従つて、外部レジスタが仲裁ユニツト75
によつて再び選択されると、変換バツフア24は
仮想/物理変換に対して当然“ヒツト”となる。
変換バツフア固定ルーチンによれば、TB
Fixup56がPTEアドレスを計算する前に、仮想
アドレスがページテーブルの長さパラメータに違
反したかどうかを判断するために欠換チエツクが
行なわれる。より簡単に述べると、メモリの領域
内で利用できるページの数が既知であり、メモリ
内のページ数より大きな仮想ページはシステムエ
ラーにならねばならない。加算器74を用いてこ
の比較が行なわれる。状態マシン66は、マルチ
プレクサ72からの入力を反転しそしてビツトの
桁上げをイネーブルすることにより2の補数の減
算を行なうように加算器74を構成する。このた
め、計算には2つの最下位ビツトが必要であり、
従つて、ポートミスアドレス入力を選択するので
はなく、状態マシンはマルチプレクサ72への遅
延ミスアドレス入力を選択し、仮想アドレスのビ
ツト21:0を検索する。
又、状態マシン66は、変換されているメモリ
の命令に対応する長さレジスタ70も選択する。
従つて、ページテーブルの既知の長さから仮想ア
ドレスを減算することにより、否定結果は、仮想
アドレスが不存在PTEをアクセスしようとして
いることを指示する。或いは又、肯定結果は、長
さ違反が存在せず、固定プロセスを進められるこ
とを指示する。
状態マシン66は、加算器74の桁上げビツト
を介してこのプロセスを監視する。桁上げビツト
がアサートされた場合には、その結果が否定であ
り、欠陥コマンドがEユニツト16にアサートさ
れる。
変換バツフア24における“ミス”を修正する
のに加えて、TB Fixup56はマルチ高精度オペ
レーシヨン中にデータを検索する上で助成する。
これらのマルチ高精度命令は、たとえ1つのメモ
リ位置が命令において識別されたとしても多数の
メモリ位置をアクセスする必要がある。従つて、
第1のメモリ参照が変換バツフア24へ通される
間に、TB Fixup56は次に続くアドレスを計算
しそしてそれをシーケンサ59に供給する。仮想
アドレスは、マルチプレクサ72のゼロ入力に送
られ、状態マシン66によつて選択される。同時
に、値4の定数がマルチプレクサ68のゼロ入力
に配置され、状態マシン66によつて選択され
る。それ故、加算器74の出力は、マルチ高精度
命令に必要な次のロングワードの仮想アドレスで
ある。このアドレスは仲裁ユニツト75へ送ら
れ、そこで外部レジスタより大きい優先順位をと
り、変換バツフア24によつて物理アドレスに変
換される。
更に、ベース及び長さレジスタ70をロードす
るプロセスは、CPUの初期化段階中にEユニツ
ト20によつて制御される。Eユニツト20は、
4ビツトのタグアドレス及びイネーブル信号をデ
コーダ80に供給する。デコーダ80はそれに応
答して対応するレジスタ70をイネーブルし、仮
想アドレスに存在するデータを入力する。このプ
ロセスは、全てのレジスタに適当なデータがロー
ドされるまでベース及び長さレジスタ70の各々
に対して繰り返される。
第5図は、本発明の例外ハンドリング機構に基
づいて欠陥情報を発生する好ましい構成体を示す
ブロツク図である。図示されたように、Mユニツ
ト(第1図の参照番号16)の前端の個々のポー
トに受け取られたメモリアクセス要求に関連した
仮想アドレスは、OPU33(第1図)、Iユニツ
ト18及びEユニツト20に各々対応する通信リ
ンク93,94及び95を介して仲裁ユニツト9
2によつて受け入れられる。仲裁ユニツト92
は、所定の優先順位構成をベースとしてMユニツ
トに定められた3つの外部ポートのうちの1つに
対応するアドレスを選択するようになつている。
変換バツフア及び変換バツフア固定ユニツトの動
作を参照して上記したように、処理されている仮
想アドレスは、メモリへのアクセスを必要とする
命令実行パイプライン内の段によつて発生された
32ビツトアドレスであるのが好ましい。入力ポー
トに受け取られた3つの仮想アドレスの1つは、
仲裁ユニツト92により処理するように選択さ
れ、そしてメモリのアドレスセグメントをアクセ
スするために後で使用される変換バツフア要求ア
ドレスとして出力される。仲裁ユニツト92は、
本質的に、外部ソースよりも高い優先順位を内部
ソースに与える優先順位機構に基づいて内部又は
外部の仮想アドレスソースから信号を中継するよ
うに機能する。
仲裁ユニツトに受け取られる仮想アドレスは、
変換バツフアの“ヒツト”動作により外部ソース
から直接発生することもできるし、或いは仮想ア
ドレスをシステムメモリにおける対応する物理ア
ドレスに変換するプロセスの間に“ミス”動作に
続いて変換バツフア固定ユニツトの動作により内
部ソースを介して発生することもできる点に注意
されたい。
仲裁ユニツトにより選択された特定の仮想アド
レスは保護チエツクユニツト96へ送られ、該ユ
ニツトは、アクセスされた仮想アドレスを処理
し、所定の1組のメモリアクセス違反の存在を決
定する。好ましい実施例によれば、保護チエツク
ユニツト96は、以下の表Aにリストしたメモリ
アクセス違反の少なくとも5つの形式の存在を監
視する。
表 A 欠陥コードにおける違反の形式 アサートされたビツト アクセスモード 1 無効変換 2 長 さ 3 無効PPTE 4 変 更 5 問題とする仮想アドレスが所定のメモリアクセ
ス違反の1つにに対応することが分つた場合、違
反の存在を表わす欠陥信号96Aが発生される。
この欠陥信号96Aは単1ビツトフラグの形態で
あるのが好ましく、これはその後のパイプライン
段に沿つて送られるデータに加えられ且つこれと
共に送られ、最終的にEユニツトの実行段に達す
る。
保護チエツクを行なうために、チエツクユニツ
ト96は32ビツトPTE98を受け取り、これは、
処理されている仮想アドレスに対応し、上記で詳
細に述べた仮想/物理アドレス変換プロセスの結
果として発生されたものである。PTEは、ビツ
ト20:00の物理ページフレーム数PFNと、ビツ
ト31の“有効”ビツトと、ビツト30:27より成る
保護フイールドと、ビツト6の“変更”ビツトと
を含むことを想起されたい。機能的には、保護チ
エツクユニツト96は、対応する所定のメモリア
クセス違反の存在を決定するために32ビツト
PTE98内の指定のビツトの状態をチエツクす
る状態マシンである。より詳細には、PTE98
のビツト31は、それがアサートされたかどうかに
ついてチエツクされる。上記したように、ビツト
31は、これがアサートされると、それに対応する
ページ数がメモリ内に存在することを表わす有効
ビツトを表わし、このビツト31がアサートされな
いときには、そのPTEに対応する有効アドレス
はそれに対応する有効変換をもたない。PTEの
ビツト31がアサートされないことがチエツクユニ
ツト96によつて分かると、アクセス違反の存在
を指示する欠陥信号96Aを発生する。
又、保護チエツクユニツト96は、PTE98
により表わされたビツト情報内の変更ビツトもチ
エツクする。このビツトがアサートされない場合
には、PTEにより参照されたメモリ内の特定の
ページが書き込みアクセスをもたず、メモリアク
セス違反の存在を表わすことを指示する。
又、チエツクユニツト96は、長さ違反につい
てもPTE98を監視し、メモリアクセス要求に
伴なう仮想アドレスが第4図を参照して上記した
ように不存在のPTEをアクセスしようとしてい
るかどうか判断する。この場合にも、長さ違反が
存在すると分かると、欠陥信号96Aが発生され
る。
同様に、無効入力がシステムメモリのプロセス
部分に対してページテーブルを参照しているかど
うかを調べるためにもPTE98がチエツクされ、
これは、プロセスPTE又はPPTEが無効である
ことを意味する。その結果が肯定であれば、欠陥
信号96Aが発生される。
保護チエツクユニツト96によつて確認される
メモリアクセス違反の別の形式は、プロセツサユ
ニツトが動作している現在モードを超えるメモリ
アクセス要求に基づくモードアクセス違反であ
る。例えば、メモリアクセス要求は、ユーザモー
ドにおいてシステムの動作中に発生し、そして監
視モードにおいてメモリセグメントをアドレスす
るが、このような要求をアクセス違反として識別
することが重要である。これを行なうために、チ
エツクユニツト96には、保護チエツクが実行さ
れるときにシステムが動作されるモードを表わす
2ビツトコード97が設けられる。
本発明によれば、所定のメモリアクセス違反の
検出に続いて、その検出された違反の特定形式を
示す欠陥コードが発生される。より詳細には、欠
陥コードフイールドの個別のビツトが上記テーブ
ルAにリストされた所定のアクセス違反の各々に
対して指定される。例えば、5ビツト欠陥コード
のビツト1は、モードアクセス違反が見つかつた
場合にセツトされ、ビツト2は、無効変換違反が
存在する場合にアサートされ、ビツト3は、
PPTE違反が存在する場合にアサートされ、そし
てビツト5は、変更違反が検出された場合にアサ
ートされる。5ビツト欠陥コードは外部仮想アド
レスソースの各々に対して発生されそして対応す
る5ビツトレジスタに別々に記憶される。より詳
細には、レジスタセツト100が設けられてお
り、その中の5ビツトレジスタ101は、Eユニ
ツトから発生する仮想アドレスに対応して発生さ
れた欠陥コードを記憶する。同様に、5ビツトレ
ジスタ102は、OPUに対応する欠陥コードを
記憶するために設けられており、そして更に別の
5ビツトレジスタ103は、Iユニツトに対応す
る欠陥コードを記憶するために設けられている。
アクセス違反が保護チエツクユニツト96によ
つて検されそしてそれに対応する欠陥信号96A
が発生されるのと同時に、その違反に対応する仮
想アドレスが変換バツフア要求99として中継さ
れ、そしてその後、レジスタセツト104の対応
するレジスタに記憶される。レジスタセツトは、
Eユニツトによつて発生されるメモリアクセス違
反を表わすものとしてチエツクユニツトにより決
定された仮想アドレスを記憶するための32ビツト
アドレスレジスタ105を備えている。同様に、
Iユニツトにより発生された32ビツト仮想アドレ
スを記憶するためのアドレスレジスタ106が設
けられていると共に、OPUに対応する仮想アド
レスを記憶するための32ビツトレジスタ107が
設けられている。
レジスタ105−107に記憶された欠陥アド
レス情報はマルチプレクサ108へ送られる。こ
のMUX108には、欠陥優先順位信号109と
して示された選択信号が与えられ、これは、記憶
された欠陥情報がその後に呼び出されるときに2
つ以上の欠陥アドレスがアドレスレジスタにおい
てアクテイブであると分つた場合にその記憶され
た欠陥アドレスをチヤンネルから出す順序を決定
する。レジスタセツト100及び104に記憶さ
れた欠陥アドレス情報及び欠陥コード情報は、E
ユニツトが欠陥パラメータの転送を要求するまで
Mユニツト内に保持される。このような要求は、
命令が実行段においてEユニツトによつて処理さ
れそして1ビツト欠陥信号の存在に対するチエツ
クが肯定であると分つたときに発生される。
本発明の特徴によれば、Eユニツトにより開始
されたメモリアクセス違反に応答して発生された
欠陥情報は、OPUにより発生された欠陥情報に
対する手順をとるものとして指定され、これは次
いでIユニツト欠陥よりも優先順位が高いものと
して指定される。実際に、欠陥は、Eユニツト内
のパイプライン段により指示される実行順序で処
理される。欠陥優先順位機構においてEユニツト
欠陥を最も高いレベルにおく理由は、現在命令を
実行するためにはEユニツトパイプライン段の動
作を完了させることが不可避だからである。これ
は、OPU段が予めフエツチした命令を処理する
ためのもので且つオペランドが現在命令の完了に
重要でないというケースではない。欠陥優先順位
信号は、好ましくは2ビツトの制御信号であり、
これは、有効欠陥アドレスがEユニツト及びIユ
ニツトのアドレスレジスタ各々105及び106
に同時に存在する場合にEユニツトのアドレスレ
ジスタデータをMUX104の出力として選択す
る。
同様に、レジスタ101−103に記憶された
欠陥コード情報はMUX110に送られ、これ
は、MUX108に送られる同じ欠陥優先順位信
号に基づいて、それに入力される3つの5ビツト
コードの1つを表わす出力111を発生する。
MUX108から発生された32ビツト欠陥アドレ
スは、MUX110により発生された5ビツト欠
陥コードと第3のMUX111において合成さ
れ、従つて、実際には、欠陥アドレス及びそれに
対応する欠陥コードは、欠陥表示が実行段におい
て検出されたときにEユニツトにより要求される
欠陥パラメータとしてEユニツトへ中継される欠
陥データを構成する。欠陥パラメータは、Mユニ
ツトからEユニツトへデータを転送するために通
常使用される同じラインに沿つて中継される。
第6図は、メモリアクセス例外又は欠陥の識別
及び発生中にシステムにより行なわれる手順段階
を実施するフローチヤート120を示している。
ステツプ121において、Mユニツトに与えられた
外部ソースポートの1つに対応するメモリアクセ
ス要求が処理のために選択される。その後、ステ
ツプ122において、選択されたメモリアクセス要
求に対応する仮想アドレスが処理され、仮想/物
理アドレス変換を受ける。
ステツプ123において、変換プロセスの結果と
して発生された情報(特に、PTE)に対して保
護チエツクが実行される。このチエツク手順で
は、所定の1組のメモリアクセス欠陥の存在が検
出される。ステツプ123Aでは、メモリアクセス
違反又は欠陥が存在するかどうかについての判断
がなされる。ステツプ123Aの答えが肯定である
場合には、ステツプ124がアクセスされる。ステ
ツプ123Aで行なわれたチエツクに関してメモリ
アクセス違反が検出されない場合には、システム
はステツプ131において他のメモリアクセス要求
のパイプライン処理を自動的に続ける。
次のステツプ124では、アクセス欠陥の特定形
式が識別され、それに対応する欠陥コードが保護
チエツクユニツトによつて発生される。その後、
ステツプ125において、検出されたメモリアクセ
ス違反を招く要求を発した外部ポートがMユニツ
トにおいて不作動化される。次いで、ステツプ
126において、要求されるメモリアクセスが読み
取り動作に対応するかどうかについての判断がな
される。
ステツプ126の答えが肯定であると分つた場合
には、ステツプ127に達し、欠陥ビツトをアサー
トすることによりメモリアクセス違反の存在を表
わす欠陥信号が発生され、欠陥ビツトは、メモリ
アクセス要求の結果と共にパイプラインに沿つて
伝幡される。ステツプ128において、保護チエツ
クプロセスにより発生された仮想欠陥アドレス及
び欠陥コードを含む欠陥パラメータがMユニツト
の対応するレジスタに記憶される。
次のステツプ129においては、現在処理されて
いる仮想アドレスに対応する変換された物理アド
レスに基づいて読み取り動作が行なわれる。ステ
ツプ130において、読み取られたデータは、次の
パイプライン段に沿つてアサートされた欠陥ビツ
トとの組合せで伝幡され、やがてこのデータはE
ユニツト内のソースリスト44(第1図)内に記
憶される。その後、ステツプ131において、シス
テムは、ステツプ125で行なわれた不作動化の影
響を受けないMユニツトの前端ポートに関連した
メモリアクセス要求のパイプライン処理を続け
る。
ステツプ126の答えが否定であると分つた場合
には、メモリアクセス要求が書き込み動作に対応
することが指示され、ステツプ132がアクセスさ
れ、欠陥ビツトをアサートすることにより欠陥信
号が発生される。ステツプ133において、仮想欠
陥アドレスを含む欠陥情報と、要求を発したポー
トを識別する欠陥コードとが、後で使用するため
に欠陥パラメータとして記憶される。ステツプ
134において、変換された物理アドレスは、次の
パイプライン段に沿つて伝幡されるのではなく、
そのアサートされた欠陥ビツトと共に書き込み待
ち行列構成体34(第1図)に記憶される。
実際の書き込み動作は、このように延期しなけ
ればならない。というのは、書き込まれるべきデ
ータは実行段階の後まで得られないからである。
データが実際に得られるときには、書き込み待ち
行列内に記憶された変換された行先アドレスがE
ユニツトから受け取つた対応データと対にされ
る。従つて、命令は、Eユニツトのデータをそれ
に対応する予め変換された行先アドレスに書き込
むことによつて便利にリタイヤされ、この点で仮
想/物理アドレス変換を行なうのに必要とされる
時間が節約される。ステツプ134の実行に続いて、
システムはステツプ131をアクセスし、ステツプ
125で不作動化されなかつたポートからの他の顕
著なメモリアクセス要求のパイプライン処理が続
けられる。
第7図には、欠陥情報の存在を検出しそしてそ
れに応答して行なわれる一連のオペレーシヨンを
示すフローチヤートが示されている。又、図示さ
れたように、メモリ読み取り動作の検出及び応答
プロセスがステツプ141で開始される。ステツプ
142において、ソースオペランドを表わす読み取
りデータがEユニツト20のソースリスト44
(第1図)から検索される。ステツプ143におい
て、記憶されたデータに関連した欠陥ビツトが検
査され、そしてステツプ144において欠陥ビツト
がアサートされたかどうかについての判断がなさ
れる。欠陥ビツトがアサートされないことが分か
ると、ステツプ145がアクセスされ、読み取り動
作のためのオペランドとしてソースリストから検
索されたデータを用いて命令が通常の形態で実行
される。
然し乍ら、ステツプ144の答えが肯定であると
分つた場合、即ち欠陥ビツトが実際にアサートさ
れたと分つた場合には、ステツプ146がアクセス
され、システムのマイクロエンジンがトラツプさ
れて、パイプライン命令実行プロセスを制御する
マイクロコードの実行が停止される。その後、ス
テツプ147において、Eユニツト20はMユニツ
ト16をアクセスし、Mユニツト内部の欠陥アド
レスレジスタ及び欠陥コードレジスタに記憶され
た対応する欠陥パラメータがEユニツトへ送られ
るように要求する。Mユニツトから欠陥パラメー
タを受け取ると、欠陥コードが通常のやり方でE
ユニツトによつてデコードされ、そして1組の所
定のトラツプルーチンの対応する1つが呼び出さ
れ、検出されたメモリアクセス違反の特定形式を
処理する。過剰の違反を取り扱うためのこのよう
なトラツプルーチンの定義は通常のものであり、
ここでは詳細に説明しない。
ステツプ146におけるシステムマイクロエンジ
ンのトラツプ動作は、メモリアクセス違反を生じ
た命令がEユニツト内の実行段に到達しそしてそ
れに対応する読み取り又は書き込みデータが命令
の実行に絶対的に必要である場合だけ生じること
に注意されたい。従つて、本発明の実行処理機構
は、違反が検出されたパイプライン段の点におい
てアクセス違反に応答してトラツプルーチンが呼
び出されるような従来の技術に勝る顕著な効果を
もたらす。このような機構では、次に続く全ての
パイプライン段の処理作用が妨害を受ける。更
に、このような従来の欠陥処理機構では相当の時
間浪費を招く。というのは、次のパイプライン段
で生じる事象により命令の実行の前に結局キヤン
セルされるようなオペレーシヨンについてもトラ
ツプルーチンが呼び出されるからである。これら
の問題は本発明によつて解消される。というの
は、命令を実行する前にメモリアクセス例外を処
理することが重要なときしかトラツプルーチンを
呼び出さないように、命令の最終的な実行時にし
か記憶された欠陥パラメータが呼び出されないか
らである。
第7図のフローチヤートにおいて、メモリ書き
込み動作の場合の欠陥情報の処理はステツプ150
で開始され、その後、ステツプ151において、E
ユニツトにより発生された書き込みデータが検索
され、これは、Mユニツトにアドレスが既に記憶
されているメモリのセグメントに書き込まれなけ
ればならない。ステツプ152において、書き込み
待ち行列構成体34(第1図)の対応するアドレ
ス入力がMユニツトから検索される。その後、ス
テツプ153において、書き込み待ち行列入力に関
連して記憶された欠陥ビツトも検査される。ステ
ツプ154において、欠陥ビツトがアサートされた
かどうかについて判断がなされる。その答えが否
定であると分つた場合には、システムはステツプ
155をアクセスし、書き込み待ち行列からの検索
されたアドレス入力を先行オペランドとして使用
することにより命令の実行が通常の形態で行なわ
れる。然し乍ら、欠陥ビツトが実際にステツプ
154においてアサートされると分つた場合には、
システムは、メモリ読み取り動作の処理で用いた
ものと同じやり方でステツプ146、147、148及び
149を実行する。より詳細には、システムマイク
ロエンジンがトラツプされ、Mユニツトに既に記
憶された欠陥パラメータが呼び出され、そこに含
まれた欠陥コードがデコードされ、そしてそれに
対応するトラツプルーチンが呼び出されて、欠陥
が処理される。
上記した例外取り扱い構成は、命令が完了した
ときでも(ベース、位置及びサイズオペランドで
指定された可変長さビツトフイールドオペレーシ
ヨンを実行する場合のように)次の命令実行に必
要とされてもされなくてもよいメモリ参照の処理
中に遭遇する例外情報を効率的に取り扱うのに特
に適している。アドレス変換問題によりベースア
ドレスについてのみ例外情報が発生するが、それ
に対応する真のフイールドアドレスにアクセス違
反がない場合には、その例外に遭遇したパイプラ
イン段に対応するポートが不作動化されない。む
しろ、実行情報が例外段にパイプライン搬送さ
れ、真のフイールドの判断がなされる。この点に
おいてフイールドがアクテイブでないと分つた場
合には、欠陥情報が捨てられ、真のフイールドデ
ータがフエツチされる。一方、この構成では、命
令の流れがその方向を変えないので流れの問題を
生じることなく他のオペランドデータを予めフエ
ツチすることができる。
【図面の簡単な説明】
第1図は、本発明によりメモリアクセス例外を
処理する機構に用いられるパイプライン式の仮想
メモリベースのコンピユータシステムを示す簡単
なブロツク図、第2図は、典型的な命令を実行す
るのに含まれる種々のパイプライン段を示す図、
第3図は、第1図の変換バツフアを用いて仮想/
物理アドレス変換を行なうのに含まれる機能ブロ
ツクを示すブロツク図、第4図は、第3図に示さ
れた変換バツフア及び変換バツフア固定ユニツト
の構成を示す詳細なブロツク図、第5図は、本発
明の例外処理機構による欠陥情報の発生を示すブ
ロツク図、第6図は、欠陥情報及びそれに関連し
たコード及びパラメータの発生に伴なう一連のオ
ペレーシヨンを示す簡単なフローチヤート、そし
て第7図は、本発明により欠陥情報を検出しそし
てそれに応答する際に含まれるオペレーシヨンを
示す簡単なフローチヤートである。 10……パイプライン式仮想メモリベースのコ
ンピユータシステム、12……中央処理ユニツ
ト、14……メインメモリ、16……メモリアク
セスユニツト(Mユニツト)、18……命令ユニ
ツト(Iユニツト)、20……実行ユニツト(E
ユニツト)、22……メインキヤツシユ、24…
…変換バツフア、25……I/Oバス、26……
プログラムカウンタ、28……命令キヤツシユ、
30……命令バツフア(I−Buf)、32……命
令デコーダ、33……オペランド処理ユニツト
(OPU)、34……書き込み待ち行列構成体、3
6……一時的な記憶手段、38……マルチプレク
サ、40……デマルチプレクサ、44……ソース
オペランドリスト、46……命令発生ユニツト、
48……マイクロコード実行ユニツト、50……
演算論理ユニツト、52……命令リタイヤユニツ
ト。

Claims (1)

  1. 【特許請求の範囲】 1 仮想メモリをベースとするコンピユータシス
    テムのパイプライン命令実行中に生じたメモリア
    クセス例外を処理する方法において、上記命令の
    実行は複数のパイプライン段を用いることによつ
    て行なわれ、各段は、命令が細分化された多数の
    タスクのうちの予め定めた1つを専用に実行する
    ものであり、上記コンピユータは、命令ユニツト
    (Iユニツト)と、実行ユニツト(Eユニツト)
    システムと、物理アドレスでインデツクスされる
    システムメモリと、メモリユニツト(Mユニツ
    ト)とを具備しており、このメモリユニツトは、
    上記I及びEユニツトによつて与えられた仮想ア
    ドレスをシステムメモリ内の物理アドレスに変換
    するための変換バツフアを備えており、上記方法
    は、 上記E及びIユニツトのパイプライン段からメ
    モリ読み取り又は書き込み動作を含むメモリアク
    セス要求を受け取り、これらは仮想/物理アドレ
    ス変換を必要とするものであり、 上記変換バツフアを使用して、メモリアクセス
    要求に伴なう仮想アドレスをそれに対応する物理
    アドレスに変換し、 上記仮想アドレスと、上記アドレス変換の結果
    とをチエツクして、1つ以上の予め定められた組
    のメモリアクセス違反の存在を判断し、 メモリアクセス違反の検出に応答して欠陥情報
    を発生し、 上記欠陥情報の選択されたセグメントを後続の
    パイプライン段に沿つてパイプライン搬送し、そ
    して 上記命令が実行段にあるときに欠陥情報の上記
    パイプラインセグメントの存在を検出し、そして
    それに応答して、この検出された欠陥情報に関連
    したメモリアクセス違反に対応する予め定められ
    た例外ハンドラルーチンを呼び出すという段階を
    具備することを特徴とする方法。 2 上記E及びIユニツト内のパイプライン段か
    らのメモリアクセス要求は、上記パイプライン段
    に対応して定められた個別のポートにおいてMユ
    ニツトにより受け入れられ、更に、メモリアクセ
    ス違反を生じたメモリアクセス要求を開始したパ
    イプライン段に対応するポートは、それ以上のメ
    モリアクセス要求を受け入れないよう阻止される
    請求項1に記載の例外処理方法。 3 上記欠陥情報は、メモリアクセス違反の存在
    を表わすフラグ情報と、検出されたメモリアクセ
    ス違反の形式を識別する欠陥コードと、上記検出
    された違反に関連した仮想アドレスに対応する欠
    陥アドレスとを含む請求項2に記載の例外処理方
    法。 4 上記フラグ情報のみが後続のパイプライン段
    に沿つてパイプライン搬送され、そして欠陥コー
    ド及び欠陥アドレスが上記Mユニツト内に記憶さ
    れる請求項3に記載の例外処理方法。 5 パイプライン式コンピユータシステムの動作
    中にメモリアクセス例外を処理する方法におい
    て、上記コンピユータシステムは、メモリユニツ
    トと、命令ユニツトと、命令を処理するための命
    令パイプラインを形成するように相互接続された
    実行ユニツトとを有しており、上記命令ユニツト
    は、オペレーシヨンコードと、ソース及び行先オ
    ペランド指定子とを得るように命令をフエツチ
    し、デコードするための手段と、上記ソースオペ
    ランド指定子によつて指定されたソースオペラン
    ドをフエツチするための手段とを備えており、上
    記実行ユニツトは、上記ソースオペランドに基づ
    いて上記オペレーシヨンコードにより指定された
    オペレーシヨンを実行するための手段と、付加的
    なオペランドをフエツチするための手段と、上記
    オペレーシヨンの結果をリタイヤするための手段
    とを備えており、上記メモリユニツトは、仮想/
    物理アドレス変換を行なう手段と、上記命令をフ
    エツチする手段に接続された第1ポートと、上記
    ソースオペランドをフエツチする手段に接続され
    た第2ポートと、上記付加的なオペランドをフエ
    ツチする手段に接続された第3ポートとを備えて
    おり、上記方法は、 (a) 上記フエツチ手段によるメモリアクセス要求
    がメモリアクセス違反を生じたときにそれを感
    知し、このメモリアクセス違反に応答して、欠
    陥情報を発生すると共に、メモリアクセス違反
    を生じさせた各々のフエツチ手段からの付加的
    なメモリ要求の処理を禁止し、 (b) 上記命令フエツチ手段により発生された欠陥
    に関する欠陥情報を上記メモリユニツトから実
    行ユニツトへパイプライン搬送する手段と、ソ
    ースオペランドをフエツチする手段とを備えて
    いて、欠陥情報を命令パイプラインと並列にパ
    イプライン搬送し、上記実行ユニツトは、上記
    付加的なオペランドをフエツチする手段により
    発生された欠陥に関する欠陥情報も受け取り、
    そして (c) 欠陥情報の受け取りに応答して、上記実行ユ
    ニツトは、その受け取つた欠陥情報に関連した
    メモリアクセス違反に対応する予め定められた
    例外ハンドリングルーチンを呼び出すという段
    階を具備することを特徴とする方法。 6 上記段階(a)で発生された欠陥情報は、メモリ
    アクセス違反の存在を表わすフラグ情報と、その
    検出されたメモリアクセス違反の形成を識別する
    欠陥コードと、上記検出された違反に関連した仮
    想アドレスに対応する欠陥アドレスとを含んでい
    る請求項5に記載の方法。 7 上記フラグ情報のみが上記段階(b)において実
    行ユニツトへパイプライン搬送され即ち通され、
    そして欠陥コード及び欠陥アドレスが上記メモリ
    アクセスユニツト内に記憶される請求項6に記載
    の方法。 8 上記実行ユニツトは、上記段階(c)において、
    欠陥を生じた命令が欠陥の不存在中に発生される
    ような点で上記実行ハンドリングルーチンを呼び
    出す請求項5に記載の方法。 9 メモリユニツトと、命令ユニツトと、命令を
    処理する命令パイプラインを形成するように相互
    接続された実行ユニツトとを備えたパイプライン
    式コンピユータシステムにおいて、上記命令ユニ
    ツトは、オペレーシヨンコードと、ソース及び行
    先オペランド指定子とを得るように命令をフエツ
    チしてデコードするための手段と、上記ソースオ
    ペランド指定子により指定されたソースオペラン
    ドをフエツチするための手段とを備えており、上
    記実行ユニツトは、上記ソースオペランドに基づ
    いて上記オペレーシヨンコードにより指定された
    オペレーシヨンを実行するための手段と、付加的
    なオペランドをフエツチするための手段と、上記
    オペレーシヨンの結果をリタイヤするための手段
    とを備えており、上記メモリユニツトは、仮想/
    物理アドレス変換を行なう手段と、上記命令ユニ
    ツトの命令をフエツチする上記手段に接続された
    第1ポートと、上記命令ユニツトのソースオペラ
    ンドをフエツチする上記手段に接続された第2ポ
    ートと、上記実行ユニツトの付加的なオペランド
    をフエツチする上記手段に接続された第3ポート
    とを備えており、上記メモリユニツトは、更に、
    上記フエツチ手段によるメモリアクセス要求がメ
    モリアクセス違反を生じたときにそれを感知する
    手段と、メモリアクセス違反の感知に応答して、
    欠陥情報を発生すると共に、メモリアクセス違反
    を生じた各々のフエツチ手段からの付加的なメモ
    リ要求の処理を禁止する手段とを備えており、上
    記コンピユータシステムは、更に、上記命令フエ
    ツチ手段により発生された欠陥に関する欠陥情報
    を上記メモリユニツトから上記実行ユニツトへパ
    イプライン搬送する手段と、ソースオペランドを
    フエツチする手段とを備えており、欠陥情報は命
    令パイプラインと並列にパイプライン搬送され、
    上記メモリユニツトは、付加的なオペランドをフ
    エツチする上記ユニツトにより発生された欠陥に
    関する欠陥情報を通すために上記実行ユニツトに
    接続され、そして上記実行ユニツトは、更に、上
    記受け取つた欠陥情報に応答して予め定めた例外
    ハンドリングルーチンを呼び出す手段を備えてい
    ることを特徴とするコンピユータシステム。 10 上記発生手段は、メモリアクセス違反の存
    在を示すフラグ情報と、検出されたメモリアクセ
    ス違反の形式を示す欠陥コードと、上記検出され
    た違反に関連した仮想アドレスに対応する欠陥ア
    ドレスとを発生するための手段を備えている請求
    項9に記載のコンピユータシステム。 11 上記メモリアクセスユニツトは、上記欠陥
    コード及び欠陥アドレスを記憶する手段を備え、
    そして上記パイプライン手段は、上記フラグ情報
    をパイプライン搬送する手段を備えている請求項
    10に記載の方法。
JP2007008A 1989-02-03 1990-01-16 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法 Granted JPH02234248A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/306,866 US4985825A (en) 1989-02-03 1989-02-03 System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US306866 1989-02-03

Publications (2)

Publication Number Publication Date
JPH02234248A JPH02234248A (ja) 1990-09-17
JPH0526219B2 true JPH0526219B2 (ja) 1993-04-15

Family

ID=23187213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007008A Granted JPH02234248A (ja) 1989-02-03 1990-01-16 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法

Country Status (7)

Country Link
US (1) US4985825A (ja)
EP (1) EP0381470B1 (ja)
JP (1) JPH02234248A (ja)
AT (1) ATE158423T1 (ja)
AU (1) AU631420B2 (ja)
CA (1) CA1323701C (ja)
DE (1) DE69031433T2 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297263A (en) * 1987-07-17 1994-03-22 Mitsubishi Denki Kabushiki Kaisha Microprocessor with pipeline system having exception processing features
US5197133A (en) * 1988-12-19 1993-03-23 Bull Hn Information Systems Inc. Control store addressing from multiple sources
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
US5329629A (en) * 1989-07-03 1994-07-12 Tandem Computers Incorporated Apparatus and method for reading, writing, and refreshing memory with direct virtual or physical access
JP2504235B2 (ja) * 1989-11-16 1996-06-05 三菱電機株式会社 デ―タ処理装置
JPH03185530A (ja) * 1989-12-14 1991-08-13 Mitsubishi Electric Corp データ処理装置
US5546551A (en) * 1990-02-14 1996-08-13 Intel Corporation Method and circuitry for saving and restoring status information in a pipelined computer
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
JP2570466B2 (ja) * 1990-05-18 1997-01-08 日本電気株式会社 情報処理装置
CA2045789A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Granularity hint for translation buffer in high performance processor
US5251310A (en) * 1990-06-29 1993-10-05 Digital Equipment Corporation Method and apparatus for exchanging blocks of information between a cache memory and a main memory
GB9114513D0 (en) * 1991-07-04 1991-08-21 Univ Manchester Condition detection in asynchronous pipelines
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo Befehlsablauffolgeplanung von einem risc-superskalarprozessor
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
WO1993022722A1 (en) * 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
JPH0667980A (ja) * 1992-05-12 1994-03-11 Unisys Corp 4ブロックキャッシュメモリへのアクセスを最適化するためのキャッシュ論理システムおよびメインフレームコンピュータの高速キャッシュメモリへのアクセス時のダブルミスを防ぐ方法
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
JP3531166B2 (ja) * 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5615402A (en) * 1993-10-18 1997-03-25 Cyrix Corporation Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US6219773B1 (en) 1993-10-18 2001-04-17 Via-Cyrix, Inc. System and method of retiring misaligned write operands from a write buffer
US5740398A (en) * 1993-10-18 1998-04-14 Cyrix Corporation Program order sequencing of data in a microprocessor with write buffer
US5471598A (en) * 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer
SG48907A1 (en) * 1993-12-01 1998-05-18 Intel Corp Exception handling in a processor that performs speculative out-of-order instruction execution
DE4434895C2 (de) * 1993-12-23 1998-12-24 Hewlett Packard Co Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
US5555399A (en) * 1994-07-07 1996-09-10 International Business Machines Corporation Dynamic idle list size processing in a virtual memory management operating system
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5933651A (en) * 1995-09-29 1999-08-03 Matsushita Electric Works, Ltd. Programmable controller
US6101590A (en) 1995-10-10 2000-08-08 Micro Unity Systems Engineering, Inc. Virtual memory system with local and global virtual address translation
US5778208A (en) * 1995-12-18 1998-07-07 International Business Machines Corporation Flexible pipeline for interlock removal
US5802573A (en) * 1996-02-26 1998-09-01 International Business Machines Corp. Method and system for detecting the issuance and completion of processor instructions
US6061773A (en) * 1996-05-03 2000-05-09 Digital Equipment Corporation Virtual memory system with page table space separating a private space and a shared space in a virtual memory
JP3849951B2 (ja) * 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
US6219758B1 (en) * 1998-03-24 2001-04-17 International Business Machines Corporation False exception for cancelled delayed requests
US6233668B1 (en) 1999-10-27 2001-05-15 Compaq Computer Corporation Concurrent page tables
US6766440B1 (en) * 2000-02-18 2004-07-20 Texas Instruments Incorporated Microprocessor with conditional cross path stall to minimize CPU cycle time length
US6859897B2 (en) * 2000-03-02 2005-02-22 Texas Instruments Incorporated Range based detection of memory access
JP4522548B2 (ja) * 2000-03-10 2010-08-11 富士通フロンテック株式会社 アクセス監視装置及びアクセス監視方法
DE10108107A1 (de) * 2001-02-21 2002-08-29 Philips Corp Intellectual Pty Schaltungsanordnung sowie Verfahren zum Erkennen einer Zugriffsverletzung bei einer Mikrokontrolleranordnung
US7310800B2 (en) * 2001-02-28 2007-12-18 Safenet, Inc. Method and system for patching ROM code
US7684447B2 (en) * 2004-12-23 2010-03-23 Agilent Technologies, Inc. Sequencer and method for sequencing
US7752427B2 (en) * 2005-12-09 2010-07-06 Atmel Corporation Stack underflow debug with sticky base
US20080181210A1 (en) * 2007-01-31 2008-07-31 Finisar Corporation Processing register values in multi-process chip architectures
US9507725B2 (en) * 2012-12-28 2016-11-29 Intel Corporation Store forwarding for data caches
US20140189246A1 (en) * 2012-12-31 2014-07-03 Bin Xing Measuring applications loaded in secure enclaves at runtime
KR101978984B1 (ko) * 2013-05-14 2019-05-17 한국전자통신연구원 프로세서의 오류를 검출하는 장치 및 방법
US10061675B2 (en) 2013-07-15 2018-08-28 Texas Instruments Incorporated Streaming engine with deferred exception reporting
US9311508B2 (en) * 2013-12-27 2016-04-12 Intel Corporation Processors, methods, systems, and instructions to change addresses of pages of secure enclaves
US9672354B2 (en) * 2014-08-18 2017-06-06 Bitdefender IPR Management Ltd. Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
US20160085695A1 (en) 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
US10528353B2 (en) 2016-05-24 2020-01-07 International Business Machines Corporation Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor
US10467008B2 (en) * 2016-05-31 2019-11-05 International Business Machines Corporation Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor
US10248555B2 (en) 2016-05-31 2019-04-02 International Business Machines Corporation Managing an effective address table in a multi-slice processor
US10747679B1 (en) * 2017-12-11 2020-08-18 Amazon Technologies, Inc. Indexing a memory region
US11860795B2 (en) * 2020-02-18 2024-01-02 Arm Limited Device, system, and method of determining memory requirements and tracking memory usage

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1443777A (en) * 1973-07-19 1976-07-28 Int Computers Ltd Data processing apparatus
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
JPS57185545A (en) * 1981-05-11 1982-11-15 Hitachi Ltd Information processor
US4710866A (en) * 1983-09-12 1987-12-01 Motorola, Inc. Method and apparatus for validating prefetched instruction
US4757445A (en) * 1983-09-12 1988-07-12 Motorola, Inc. Method and apparatus for validating prefetched instruction
ATE24784T1 (de) * 1983-09-16 1987-01-15 Ibm Einrichtung im befehlswerk eines fliessbandprozessors zur befehlsunterbrechung und -wiederholung.
US5063497A (en) * 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
US4875160A (en) * 1988-07-20 1989-10-17 Digital Equipment Corporation Method for implementing synchronous pipeline exception recovery

Also Published As

Publication number Publication date
EP0381470A3 (en) 1992-11-19
US4985825A (en) 1991-01-15
DE69031433D1 (de) 1997-10-23
EP0381470A2 (en) 1990-08-08
ATE158423T1 (de) 1997-10-15
JPH02234248A (ja) 1990-09-17
DE69031433T2 (de) 1998-04-16
CA1323701C (en) 1993-10-26
AU5394390A (en) 1991-12-19
AU631420B2 (en) 1992-11-26
EP0381470B1 (en) 1997-09-17

Similar Documents

Publication Publication Date Title
US4985825A (en) System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
EP0381447B1 (en) Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
CA1325285C (en) Method and apparatus for ordering and queueing multiple memory requests
US5142631A (en) System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
US5125083A (en) Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
EP0380859B1 (en) Method of preprocessing multiple instructions
US5249286A (en) Selectively locking memory locations within a microprocessor's on-chip cache
US6065103A (en) Speculative store buffer
JP3588755B2 (ja) コンピュータシステム
US5751983A (en) Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US6519682B2 (en) Pipelined non-blocking level two cache system with inherent transaction collision-avoidance
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US20070050592A1 (en) Method and apparatus for accessing misaligned data streams
WO1996012227A1 (en) An address queue capable of tracking memory dependencies
EP1782184B1 (en) Selectively performing fetches for store operations during speculative execution
US5898849A (en) Microprocessor employing local caches for functional units to store memory operands used by the functional units
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US6446189B1 (en) Computer system including a novel address translation mechanism
EP0459233A2 (en) Selectively locking memory locations within a microprocessor's on-chip cache
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
EP0726524A2 (en) Protocol and system for performing line-fill addressing during copy-back operation
US7496734B1 (en) System and method for handling register dependency in a stack-based pipelined processor
US6219784B1 (en) Processor with N adders for parallel target addresses calculation
IE901525A1 (en) Processing of memory access exceptions with pre-fetched¹instructions within the instruction pipeline of a memory¹system based digital computer
IE901528A1 (en) Method and apparatus for controlling the conversion of¹virtual to physical memory addresses in a digital computer¹system