JPH02206837A - パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置 - Google Patents

パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置

Info

Publication number
JPH02206837A
JPH02206837A JP1169734A JP16973489A JPH02206837A JP H02206837 A JPH02206837 A JP H02206837A JP 1169734 A JP1169734 A JP 1169734A JP 16973489 A JP16973489 A JP 16973489A JP H02206837 A JPH02206837 A JP H02206837A
Authority
JP
Japan
Prior art keywords
address
write
memory
instruction
signal
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.)
Pending
Application number
JP1169734A
Other languages
English (en)
Inventor
David B Fite
デヴィッド ビー ファイト
Tryggve Fossum
トリューグヴ フォッサム
Ricky C Hetherington
リッキー シー ヒーザリントン
John E Murray
ジョン イー マーリー
Jr David A Webb
ディヴィッド エイ ウェブ ジュニア
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 JPH02206837A publication Critical patent/JPH02206837A/ja
Pending 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野) 本願は、計算システムの成る側面を開示するものであっ
て、これについては本願と同時に出願された以下の米国
特許出願にも記載されている=Evance et a
l、、AN INTERFACE BETWEEN A
 SYSTEM C0NTR0L UNIT AND 
A SERVICE PROCESING UNITO
F A DIGITRL COMPUTER(ディジタ
ルコンピューターのシステム制御装置とサービス処理装
置との間のインターフェース)  : Arnold 
et al、、METHODAND APPARATU
S FORINTERFACING A SYSTEM
 C0NTR0L UNIT FORA MULTIP
ROCESSORSYSTBM WITHTHECEN
TRAL PROCESSING UNITS (中央
処理装置を持ったマルチプロセッサーシステムのシステ
ム制御装置をインターフェースする方法及び装置);G
agliardo et al、、 METHOD A
ND MEANS FORINTERFACING A
 SYSTEM C0NTR0L UNIT FORA
 MULTI−PROCESSORSYSTEM WI
THTHE SYSTEM MAIN MEMORY 
 (システム主メモリーを持ったマルチプロセッサーシ
ステムのシステム制御装置をインターフェースする方法
及び装置)  ; D、Fite et al、、DE
cODING MULTIPLE 5PECIFIER
3IN A VARIABLE LE!NGTHlN5
TRUCTION ARCHITBCTURE (可変
長命令アーキテクチャにおける多重指定子の解読)  
; D、Fite et al、、VIRTUAL l
N5TURCTION CACHE R,EFILL 
ALGORITHM (仮想命令キャッシュ補給アルゴ
リズム)  ; Herman etal、、PIPB
LINB PROCESSING OF REGIST
ERAND REGISTERMODIFYING 5
PECIFIBR3WITHIN THE SAME 
lN5TRUCTION  (同じ命令内でのレジスタ
ー及びレジスター修飾指定子のパイプライン処理)  
; Murrayet al、、MULTIPLE l
N5TRUCTION PREPROCESSINGS
YSTEM WITHDATA DEPENDENCY
 RESOLUTION FORDIGITAL CO
MPUTERS  (ディジタルコンピューターのデー
タ依存分解能を持った多重命令処理システム) ; D
、Fite et al、、PRBPROCESSIN
G IMPLIED 5PECIFIBR3IN A 
PIPELINED PROCESSOR(パイプライ
ン化したプロセッサーにおける暗示指定子の前処理) 
 HD、Fite et al、、METHOD OF
 BRANCHPREDICTION(ブランチ予測方
法)  ; Fossum et al、、PIPEL
INED FLOATING POINT ADDER
FORDIGITAL COMPUTER;  (ディ
ジタルコンピューターの)でイブライン化浮動小数点加
算器)  ; Grundmann et al、+ 
58LF TIMED REGISTERFILE (
自己計時レジスターファイル)  ; Beaven 
et al、、METHOD AND APPARAT
USFORDETECTING AND C0RREC
TING ERROR3IN A PIPRLINED
 COMPUTERSYSTEM  (パイプライン化
コンピューターシステムにおいて誤りを検出し訂正する
方法及び装置)  ; Flynn et al、、M
ETHOD AND MEANS FORARBITR
ATING COMMUNICATION REQUE
STSUSING A SYSTEM C0NTR0L
 UNIT IN A MULTI−PROCESSO
RSYSTEM  (マルチプロセッサーシステムにお
0てシステム制御装置を使って通信要求を調停する方法
及び手段)  ; E、Fite al、、C0NTR
0L OF MULTIPLE FUNCTION U
NITS WITHPARALLEL 0PERATI
ON INA MICROCODED EXECUTI
ON UNIT (マイクo =:r−ド化された実行
装置における並列動作機能付き多重機能装置の制御) 
 ; Webb、Jr、et al、、 PROCES
SINGOF MEMORY ACCESS BXCE
PTIONS WITHPRII:FETCHEDIN
STRUCTIONS WITHIN THE lN5
TRUCTION PIPELINEOF A VIT
UAL MEMORY SYSTEM−BASED D
IGITAL COMPUTBR(仮想記憶装置システ
ムベースドディジタルコンピューターの命令パイプライ
ン方式内先取りされた命令に伴うメモリーアクセス除外
の処理); Hetherington et al、
、METHOD AND APPARATUSFORC
0NTR0LLING THE C0NVER3ION
 OF VIRTUAL TOPHYSICAL ME
MORY ADDRESSES IN A DIGIT
AL COMPUTERSYSTEM  (ディジタル
コンピューターシステムにおける仮想メモリーアドレス
から物理的メモリーアドレスへの変換を制御する方法及
び装置); Hetherington et al、
、WRITE BACK BUFFERWITHERR
ORC0RRECTING CAPABILITIES
 (誤り訂正能力を持ったライトパックバッファー) 
 ; Flynn etal、、MBTHOD AND
 MEANS FORARBITRATING COM
MUINCATION REQUESTS USING
 A SYSTEM C0NTR0L UNITIN 
A MULTIPROCBSSING SYSTEM 
 (多重処理システムにおいてシステム制御装置を使っ
て通信要求を調停する方法及び手段)  ; Chin
nasway et al、。
MODULARCRO3SBARINTERCONNE
CTION NETWORK FORDATA TRA
NSACTIONS BBTWEEN SYSTEM 
UNITS IN AMULTI−PROCESSOR
SYSTEM  (多重処理システムにおけるシステム
装置間でのデータトランザクションのためのモジュラー
クロスノく一相互接続ネ・ソトワーク)  ; Po1
zin et al、、MBTHOD AND APP
ARATUSFORINTERFACING A SY
STEM C0NTR0L UNIT FORAMUL
TI−PROCESSORSYSTEM WITHIN
PUTloUTPUT UNTS (入出力装置を有す
るマルチプロセッサーシステムのためのシステム制御装
置をインターフェースする方法及び装置)  ; Ga
gliardo et al、、 MEMORY C0
NFIGURATION FORUSE WITHME
ANS FORINTERFACING A SYST
EM C0NTR0L UNIT FORA MULT
−PROCESSORSYSTEM WITHTHE 
SYSTEM MAIN MENORY(システム主メ
モリーを持ったマルチプロセ・ソサーシステム用のシス
テム制御装置をインターフェースする手段に用いるメモ
リー排列)  ; Gagliardo et at、
、 METHOD AND MEANS FORERR
ORCHBCKING OF DRAM−CONTRO
L 5IGNALS BETWEEN SYSTEM 
MODULES (システムモジュール間のドラム制御
信号の誤りチエツクのための方法及び手段)。
本発明は、パイプライン方式のプロセ・ツサーのメモリ
ーアクセス動作を制御する装置に関し、特に、書き込み
されるべき書き込みキュー内で待機している先の書き込
み動作を有する記憶場所の読み出しを遅延させる「書き
込みキュー」の使用に関する。
普通のディジタルコンピューターは、メモリーから命令
を取り出して実行する「取り出し実行」サイクルに従っ
てデータを処理する。各サイクルは、命令によっては、
数個の中間段階を含むことがある。例えば、命令は、そ
の命令が実行される前にメモリーから取り出されなけれ
ばならないオペランドを指定することがある。
小さな、低速のコンピューターでは、取り出し−実行サ
イクルは1度に1個の命令について実行される。例えば
、次の命令の取り出しは、現在の命令の結果が格納され
るまでは行なわれない。取り出し一実行サイクルの各ス
テップに使用されるハードウェアは、その対応するステ
ップ中におりてのみ使用され、次の命令に必要とされる
までは遊んでいる。
大きなコンピューターは、命令を先取りすることにより
その実行時間を短縮するので、現在の命令が格納される
と直ちに次の命令を解読することが出来る状態となる。
これは「パイプライン方式」の単純な形であり、この場
合、該サイクルの第1ステツプは、現在の命令について
最後のステップが実行されるのと同時に次の命令につい
て実行される。パイプライン化のこの単純な形は、命令
を実行する合計の時間を短縮するものではあるが、次の
命令がそこから取り出されると思われている記憶場所を
現在の命令が変更する場合には、正しくない命令が先取
りされる可能性がある。これは、取り出される命令のア
ドレスを指す「プログラムカウンター」の値を変更する
ジャンプ命令又はブランチ命令の実行が完了した時に生
じ得る。従って、先取りされた命令の実行を止めて正し
い命令をメモリーから取り出させる制御論理が必要であ
るq 最も進歩したコンピューターは、命令アクティビティの
全シーケンスをパイプライン方式で実行する。第1の例
はディジタル・エクイブメント社(Digitil E
quipment Corporation、111 
Powdermill Road、Maynard、M
A97154−1418 )が製造、販売しているVA
X  8600コンピユーターである。VAX  86
0θ用の命令パイプラインは、1985年のディジタル
・テクニカル嘩ジャーナル第1号、第8−23ページの
T、 Fossum外のrVAX  8600システム
の概観J (T、FOSSet al、、  An O
verview of theVAX  8600Sy
stem、 ” Digital Technical
 Journal、kl、Augustl 985. 
pp、  8−23)に記載されている。
命令取り出し、命令解読、オペランドアドレス生成、オ
ペランド取り出し、命令実行、及び結果格納のために別
々のパイプラインステージが設けられている。該パイプ
ラインステージは普通は使用中で、連続する命令を処理
しているが、パイプラインを通じての移動はいつでも最
高速度であるとは限らない。先にアドレス指定されたデ
ータブロックを格納する高速キャッシュメモリーの代わ
りに主メモリーからデータを取り出さなければないない
時、或は乗算又は除算が命令実行ステージを拘束する時
、色々なステージは遊んでいなければならない。
しかし、もっと高等なパイプラインシステムでは、後続
の命令の前処理と先の命令の実行との間に別の矛盾も生
じる。その種の矛盾の一つは、後続の命令用のオペラン
ドの取り出しが、未だ完了していない先の書き込み命令
により書き込まれるべき記憶場所を読むことを希望する
時に生じる。
例えば、オペランドアドレスは一般的にはパイプライン
の早いステージで利用可能であるが、そのアドレスから
読み出されるべき正しいデータは、その正しいデータを
格納する先の書き込み命令が完了した時点で初めて利用
可能になる。従って、正しいデータが利用可能となるま
ではオペランドアドレスの取り出しは待たされる。従っ
て、オペランドデータがメモリーから取り出される前は
、制御論理は、振り返って、実行される命令と格納され
る結果とを検査する。読み出されるべきオペランドアド
レスに結果が格納されると、制御論理は、転送ゲートが
オペランド取り出しステージによる正しいデータの結果
格納ステージからの直接取得を許すことを可能にする。
しかし、結果をオペランドアドレスに格納させる命令が
実行されているならば、取り出しステージは実行が終了
するまで待たされる。
パイプライン処理の第2の問題は、ブランチ命令が取り
出される時に生じる。全パイプラインを維持するために
、制御論理は、プログラムがどのブランチを追って行く
のかを予測し、該パイプライン内の命令を実行しなげけ
ればならない。ブランチ予測に実際に使われるプロセス
は、ここでは重要でない。そのプロセスがどの様なもの
であるにせよ、時には誤っていて、部分的に処理された
命令を全てパイプラインから流し出さなけれならないと
いうことを理解すれば充分である。
命令が実行される平均速度を更に高めるためには、たと
え命令実行ステージが乗算や除算等の複雑な命令探索の
実行に拘束されても、命令の前処理を継続することが望
ましい。−船釣には、実行ステージが拘束される時間は
色々であり、その間に色々な個数の命令が前処理される
。しかし、各々の前処理された命令は、結局、前処理さ
れるべき次の命令のオペランドアドレスに格納されたデ
ータを含むメモリー内のデータを変更することがある。
その上、誤ったブランチが検出されると、前処理された
命令のうちの幾つかはパイプラインから流されなければ
ならず、且つ、それは最早後続の命令の前処理に対する
潜在的矛盾の源泉と看做されるべきではない。
(発明の概要) パイプライン方式のプロセッサーにおいて複数のオペラ
ンドの先取り中に生じる色々な個数の潜在的メモリーア
クセス矛盾を解決するために、プログラム実行中にメモ
リーアクセス命令を制御する方法及び装置が提供される
。命令を前処理する手段は、それぞれソース及び宛先オ
ペランドである命令に応じて、前選択されたアドレスと
、読み出し及び書き込み信号のうちの一方とを送出し、
前処理が完了するとオペランドを送出する。実行手段は
、該オペランドを受取り、該ソースオペランドを実行し
、その結果としてのデータをメモリーに送り、該メモリ
ーからデータを受け取った後、該宛先オペランドを実行
する。書き込みバッファー手段は、前選択されたアドレ
スと読み出し信号と書き込み信号とを該前処理手段から
受取り、該書き込み信号に対応する前選択されたアドレ
スを格納し、該メツセージされたアドレスに対応するデ
ータを受け取ると、その格納された前選択されたアドレ
スをメモリーに送る。読み出し信号に対応するアドレス
を、該書き込みバッファー手段に格納されているアドレ
スの各々と比較し、若し該書き込みバッファーアドレス
のうちの少なくとも1個が該読み出しアドレスアドレス
に等しければ、遅延信号を送出する手段が設けられる。
最後に、オペランドの取り出しを遅延させる手段は、該
遅延信号に応答して、対応する書き込みバッファーアド
レスがメモリーに送られるまで該オペランドの取り出し
を遅延させる。
次に、添付図面を参照して本発明を具体的に説明する。
(実施例) 本発明は、色々な形で実施することが出来るものである
が、その特定の実施例のみを図示し、以下に説明する。
しかし、本発明は、ここに開示した特定の形に限定され
るものではなく、特許請求の範囲の欄において定義され
た発明の精神及び範囲に属するあらゆる修正、同等物、
及び変形を網羅することが意図されている。
第1図はパイプライン方式コンピューターシステムIO
の一部分の最高レベルのブロック図である。システムI
Oは、主メモリー14へのアクセスを有する少なくとも
1個の中央処理装置(CPU)12を有する。この種の
システムでは、主メモリー14を共有することにより、
追加のCPUを使用することが出来ることが理解されね
ばならない。例えば、4個に及ぶCPUが同時に作動し
て、共有された主メモリー14を通して効率的に通信す
ることは現実的である。
CPU12内では、個々の命令の実行は、複数の小さな
タスクに分解される。それらのタスクは、その目的に最
適化された専用の、別々の独立した機能単位により実行
される。
各命令は結局は相異なる動作を行なうのであるが、各命
令を分解して得られた小さなタスクの多(は全での命令
に共通である。一般に、命令の実行中、命令取り出し、
命令解読、オペランド取り出し、実行、及び結果格納の
ステップが行なわれる。そこで、専用のハードウェアス
テージを使うことにより、これらステップを重ね合わせ
て命令処理の総量を増やすことが出来る。
パイプラインを通じたデータ経路は、各パイプラインス
テージの結果を次のパイプラインステージに転送するた
めのレジスターのそれぞれの組を含む。これらの転送レ
ジスターは、共通のシステムクロックによりクロックさ
れる。例えば、第1のクロックサイクルにおいて、命令
取り出しに専用されるハードウェアにより第1の命令が
取り出される。第2のクロックサイクルにおいて、その
取り出された命令は転送されて命令解読ハードウェアに
より解読され、同時に次の命令が命令取り出しハードウ
ェアによって取り出れる。第3クロツクサイクルにおい
て、各命令がパイプラインの次のステージにシフトされ
、新しい命令が取り出される。この様にして、パイプラ
インが満たされた後、命令は、各クロックサイクルの終
了時には完全に実行され終っている。
このプロセスは、製造環境における組み立てラインに似
ている。各労働者は、その作業ステージを通過する各製
品に対して専ら単一のタスクを行なう。各タスクが行な
われてゆくとき、その製品は完成に近づいてゆく。最終
ステージで、労働者がその割当のタスクを行なう毎に、
完成した製品が組み立てラインから出て行(。
第1図に示されている様に、CPU12は少なくとも3
個の機能単位、即ち、メモリーアクセス装置16、命令
装置18、及び実行装置20、に区分されている。これ
らの装置は時には、それぞれMBOX、IBOX、及び
EBOXと称される。
命令装置18は、命令を先取りし、オプコート(opc
odes )を解読してオペランド及び結果特定子を得
、オペランドを取り出し、プログラムカウンター24を
更新する。命令装置18は、オペランド処理装置22、
プログラムカウンター24、及び命令解読器26を含む
。プログラムカウンター24は、メモリーアクセス装置
16に維持されている高速キャッシュメモリー28から
適切な命令を検索することが出来る様に、命令装置18
に維持されている。キャッシュ28は、主メモリー14
に格納されている情報の僅かな部分のコピーを格納し、
メモリーアクセス時間を短縮することにより処理速度を
高めるために使用される。キャッシュ28の動作を、メ
モリーアクセス装置16の説明と関連させて以下に詳し
く説明する。
プログラムカウンター24は、好ましくは、主メモリー
14及びキャッシュ28の物理的記憶場所ではな(て、
仮想記憶場所を使う。従って、命令を検索する前に、プ
ログラムカウンター24の仮想アドレスを主メモリー1
4の物理的アドレスに翻訳しなければならない。従って
、プログラムカウンター24の内容はメモリーアドレス
装置16に転送され、そこで翻訳バッファー30がアド
レス変換を行なう。命令は、変換されたアドレスを使う
ことによりキャッシュ28内の物理的記憶場所から検索
される。キャッシュ28は、該命令を、データ復帰ライ
ン32を介して命令解読器26に送る。キャッシュ28
及び翻訳バッファー30の較正と動作とはレビー氏及び
ニックハウス・ジュニア氏の下記の論文に記載されてい
る:Chapter 11 of Levy and 
Eckhouse、Jr、、Computer Pro
grammihg and Architecture
、The VAX−11゜Digital Eqtli
pment Corporation、 pp、 35
1−368(1980)。
オペランド処理装置(OPU)22も、仮想アドレスを
作る。特に、0PU22はメモリーソース(読み出し)
及び宛先(書き込み)命令の仮想アドレスを作る。少な
くともメモリー読み出し命令については、0PU22は
、これらの仮想アドレスを、それらが物理的アドレスに
翻訳されるメモリーアクセス装置16に送らなければな
らない。
次に、メモリーソース命令のオペランドを取り出すだめ
に、キャッシュ28の物理的記憶場所がアクセスされる
。本発明の好適な方法を実施するために、0PU22は
、メモリーアクセス装置16に、メモリー宛先命令の宛
先の仮想アドレスも送る。仮想アドレスは、例えば、3
2ビツトの数である。この32ビツトの仮想アドレスを
送る外、0PU22は、その命令が読み出し動作を指定
するか又は書き込み動作を指定するかを示す3ビツト制
御フイールドも送る。仮想アドレスが読み出し命令に対
応することを制御フィールドが示す場合には、キャッシ
ュ28は、特定された記憶場所からデータを検索し、そ
れをデータ復帰ライン34経出で実行装置20に送る。
逆に、書き込み動作については、書き込まれるべきデー
タが利用可能となるまでは、書き込みアドレスが格納さ
れる。明らかに、MOVE又はADD等の命令について
は、書き込まれるべきデータは、該命令の実行が終るま
では、利用可能とはならない。しかし、宛先の仮想アド
レスは、該命令の実行に要する時間の間に、対応する物
理的アドレスに翻訳されることが出来る。また、命令を
実行する全体としての速度を高めるためには、この時間
中OPUが複数の命令指定子を前処理することが望まし
い。この目的のために、メモリーアクセス装置16は、
色々な個数の書き込み動作の物理的宛先アドレスを格納
する「書き込みキュー」36を翻訳バッファー30にキ
ャッシュ28との間に備えている。書き込みキュー36
は、実行装置20が命令を完了し、その結果としてのデ
ータをメモリーアクセス装置16に送るまでは、アドレ
スを維持する。これらのデータは、先に格納された書き
込みアドレスと対にされ、キャッシュ28の、その記憶
場所に書き込まれる。
0PU22は、メモリーオペランドでない命令にも働き
掛ける。例えば、0PU22は、直接的オペランド、短
いリテラル、及びレジスターオペランドも処理する。こ
の種の各命令において、0PU22はその結果を実行装
置20に直接送る。
命令を処理する第1のステップは、命令の「オプコード
」部分解読することである。各命令の第1部分は、該命
令において行なわれるべき動作を指定するオブコードか
ら成る。解読は、命令解読器26において標準的テーブ
ル索引技術を使って行なわれる。命令解読器は命令を実
行するためのマイクロコード開始アドレスを索引テーブ
ルから発見し、該開始アドレスを実行装置20に送る。
命令解読器はその後、実行装置は、先に格納されていた
マイクロコードの実行を、指示された開始アドレスから
開始することにより、指定された動作を行なう。また、
解読器は、ソースオペランド及び宛先オペランド指定子
が該命令のどの場所に存在するかを判定し、それらの指
定子を該命令の実行前に前処理させるためにオペランド
処理装置22に送る。
メモリーアクセス装置16は、キャッシュ28、翻訳バ
ッファー30、書き込みキュー36、レジスター38、
及びマルチプレクサ40を含む。上記の様に、キャッシ
ュ28は、主メモリーに格納された情報の小さな部分の
コピーを格納する高速メモリーである。キャッシュ28
は、主メモリーより遥かに高速でアクセス可能である。
従って、その目的は、実行されるべきメモリーアクセス
(即ち、読み出し又は書き込み)に必要な平均時間を短
縮することである。キャッシュ28は主メモリーに格納
された情報の小さな部分を格納しているに過ぎないので
、キャッシュ28に内蔵されていないメモリーにアクセ
スしようとする試みる命令が時折現われる。キャッシュ
28は、その様な「ミス」が起こった時を認知し、その
様な場合にはキャッシュ28は、特定されたデータを主
メモリー14から検索する。勿論、これらの「ミス」時
にはCPU12の動作に支障があるが、全体としてのメ
モリーアクセス速度は向上する。
翻訳バッファー30は、最後に使用された仮想アドレス
から物理的アドレスへの翻訳°を格納する高速連想記憶
装置である。仮想記憶システムでは、単一の仮想アドレ
スへの参照が、所望の情報が利用可能となる前に数回の
メモリー参照を行なわせる原因となることがある。しか
し、翻訳バッファー30を使用した場合には、翻訳は、
単に翻訳バッファー30において「ヒツト」を発見する
ことに還元される。
仮想アドレスから物理的アドレスへの翻訳が完了すると
、該物理的アドレスは書き込みキュー36及びレジスタ
ー38のうちの一方に転送される。その名が示す様に、
書き込みキュー36は、対応する命令がメモリーへの書
き込みである場合に限ってその物理的アドレスを受け取
る。書き込みキュー36の目的は、書き込み命令の物理
的書き込みアドレスのために仮の格納場所を提供するこ
とである。CPU12にパイプラインの性質を持ってい
るので、書き込みアドレスは、そこに書き込まれるべき
データより前に利用可能となる。
実際には、データは、実行装置20において命令が実行
された後に初めて利用可能となる。更に、パイプライン
内の命令の複数のオペランド指定子を前処理したいので
、複数の物理的書き込みアドレスが、その対応のデータ
を待っていることがあり得る。従って、書き込みキュー
36は、複数の物理的書き込みアドレスを収容する複数
位置・先入れ先出しバッファーである。
逆に、若し物理的アドレスに対応する命令が読み出し命
令であれば、翻訳バッファー30は該読み出し命令のオ
ペランドに物理的アドレスを提供する。該読み出しアド
レスはレジスター38に転送され、ここでマルチプレク
サ40により選択され、キャッシュ28に送られる。キ
ャッシュ28は、特定された記憶場所にアクセスし、そ
の場所に格納されていたデータをデータ復帰ライン34
を介して実行装置20に送る。
読み出しのためのオペランド取り出し中にキャッシュ2
8に直ちにアクセスするが書き込みのための命令実行中
は遅延させられるCPU12の能力は、パイプラインに
おけるタイミング問題の原因となり得る。例えば、連続
する命令が、最初の命令が記憶場所を修正し、その次の
命令がその同じアドレスを読み出すことを必要とするこ
とがある。両方の命令が一連の小さなステップで実行さ
れるので、該読み出し及び書き込み動作はシーケンス外
で実行され得る。書き込み命令の指定子が読み出し命令
の指定子の前に処理され、書き込み動作が読み出し動作
の前に実行される時でも、実行の遅延により、書き込み
動作の結果が格納される前に読み出し動作のための1個
以上のオペランドを取り出すことが可能となる。読み出
しオペランドの取り出しの結果、「陳腐な」データが実
行装置に戻されるかも知れない。従って、CPU12は
、その同じアドレスへの先の書き込み動作が完了するま
で読み出し動作を待たせることが出来なければならない
第2図はrMOVL  MEMISMEM2Jの形の4
バイト移動命令についての命令パイプラインの動作を示
し、ここでMOVLは実行されるべき動作を示し、ME
MI及びMEM2はそれぞれソースアドレス及び宛先ア
ドレスを指定するオペランド指定子である。第2図の対
角線方向に沿った箱は、CPU12が移動命令を実行す
るために行なう連続する動作を示す。第2図の左から右
へ、該動作は11個の順次に進むサイクル又は時間間隔
(1)をおいて行なわれる。第2図において上から下へ
、該動作は、パイプラインの全長(X)に亙って10個
の連続するステージで行なわれる。
第1ステージにおいて、その命令のためのプログラムカ
ウンター(PC)24が場所201に生成される。これ
は、先の命令用のプログラムカウンター(第1図の24
)の値を高めるが、又はブランチ命令の目標アドレスを
使うことによって、なされる。場所202の第2ステー
ジにおいて、命令装置は該プログラムカウンターの仮想
アドレスを持った翻訳バッファー(第1図の30)にア
クセスする。該翻訳バッファーはその仮想アドレスを物
理的アドレスに変換して、メモリー装置キャッシュ28
からデータのブロックを命令装置内のバッファー又はキ
ャッシュ(図示せず)にダウンロードする。命令装置内
のバッファー又はキャッシュが、PC24により指示さ
れた命令を内蔵していなければ、第2ステージを実行す
φことだけが必要である。PCが指示した命令MOVL
を検索するため、該キャッシュは場所203の第3ステ
ージにおいて読み出される。場所204の第4ステージ
は、MOVLからのオプコード(Do)を持った解読テ
ーブルにアクセスすることにより該命令を解読する。
その後、場所205の第5ステージにおいて、オペラン
ド仮想アドレスが第1アーギュメントMEMIから生成
される。同様に、その後、第5ステージの場所206に
おいて、宛先仮想アドレスが第2アーギュメントMEM
2から生成される。
第6ステージにおいて、この同じ時に、場所207で、
0PU22は翻訳バッファー30にアクセスしてオペラ
ンド仮想アドレスを物理的アドレスに変換させる。同様
に、その後、第6パイプラインステージにおいて場所2
08で、0PU22は翻訳バッファー30にアクセスし
て宛先仮想アドレスを物理的アドレスに変換させる。
勿論、MEM2に対応する物理的アドレスへの書き込み
動作は、格納されるべきデータがMEM2に対応する物
理的アドレスから読み出されるまでは、完了され得ない
。従って、MEM2アドレスは、データが利用可能とな
るまでは書き込みキニー36に格納される。場所209
の第7ステージは、メモリーアクセス装置キャッシュ2
8を読み、そのデータを実行装置20に送る。
第8ステージにおいて、場所210で、オペランドデー
タ及び結果アドレスの全てが利用可能となり、命令が実
行される。第9ステージにおいて、場所211で、デー
タ及び書き込みフラグが記憶装置16に送られ、書き込
みキューアドレスが書き込みキューから除去され、キャ
ツシュヒツトについて試験するためにキャッシュタグが
アクセスされる。キャツシュヒツトを仮定すると、実際
の書き込みは10番目の、場所212の最後のステージ
において行なわれる。
第3図を参照すると、書き込みキュー36は8項目円形
バッファー50として略図示されている。
書き込みキュー36は除去ポインター52と挿入ポイン
ター54とを含む。翻訳バッファー30から送られた物
理的書き込みアドレスは、挿入ポインター54により指
示された、8個のレジスター(0−7)のうちの1個に
ロードされる。各書き込みアドレスが書き込み36にロ
ードされた後、挿入ポインター54は時計回りにインク
リメントされるので、該ポインターは常にアドレスがロ
ードされるべき次のレジスターの場所を指示する。
同様に、除去ポインター52は、実行装置20から受信
される次のデータに対応するアドレスを内蔵したレジス
ターを指示する。そのアドレスは除去され、実行装置2
0からのデータは、キャッシュの所望の物理的記憶場所
に格納される。除去ポインター52は時計回りにインク
リメントされる。
除去ポインター52及び挿入ポインター54は共にレジ
スター7からレジスター0まで包み、8個の書き込みキ
ューレジスター(0−7)のいずれをも指示することが
出来る。従って、現在の除去ポインター場所から時計回
り方向に挿入ポインター位置まで(ただし、挿入ポイン
ター位置を含まない)のレジスターだけが有効な書き込
みアドレスを内蔵している。(挿入ポインターが位置が
、キューが満杯である時に限って有効な書き込みアドレ
スを内蔵する:これは、挿入ポインターが除去ポインタ
ーと同じ位置を指す時のことである。)例えば、ポイン
ター52.54が第3図の位置にある時、レジスター1
−4が有効な書き込みアドレスを内蔵している。レジス
ター5.6.7、及び0は有効なアドレスを内蔵してい
ないので、各レジスターのタグ位置に立てられたフラグ
で指示されている。これらのレジスターは、二つの理由
から有効なアドレスを内蔵することが出来る。第1に、
プログラムの実行の開始付近では該レジスターは単に未
だ使われていないことがある。第2に、書き込みキュー
に挿入された有効なアドレスは、使用された後は「陳腐
」となる。実行装置20から結果データが受信されると
、有効なアドレスは書き込みキューから除去され、その
アドレスが再使用されるのを防止するために、除去ポイ
ンター場所の有効フラグは除去ポインターがインクリメ
ントされる前にリセットされる。
書き込みキューレジスターに格納される物理的アドレス
は、好ましくは29ビツトの長さであり、有効ビットを
含む5ビツトタグと共に格納される。
他の4個のタグビットは、その物理的アドレスの色々な
面を示すフラグとして使われる。該タグは、その物理的
アドレスを生成した仮想アドレスから物理的アドレスへ
の翻訳中にページ誤りが生じたかを示す「誤りビット」
であるビット0を含む。
ビットlは、物理的アドレスが多倍精度の結果について
の一連のアドレスのうちの最後のアドレスであることを
示す「最後ビット」である。ビット2は、物理的アドレ
スがカットワードの2個の異なる部分を書き込むために
使われるべきかを示す「真カットビット」である。ビッ
ト3は、物理的アドレスがカットワードの一部の場所を
特定するかを示す「カットビット」である。最後にビッ
ト4は「有効ビット」である。これらタグピットの機能
は、第5図及び第9図と関連して詳しく説明する。
第4図を参照すると、書き込みキュー36の詳細なブロ
ック図が示されている。29ビツト物理的アドレスはア
ドレスバス56を介してレジスタ−0−7(REGO−
REG7)へ送られる。8個の解読済み出力を持った3
ビツトカウンターは挿入ポインターを提供し、その解読
済み出力の一つ一つは、レジスター0−7の各々のクロ
ックイネーブル入力に供給される。従って、任意の与え
られた時点において挿入ポインターカウンター54はレ
ジスター0−7のうちの1個だけがアドレスバス56上
にある物理的アドレスを受け取ることを可能にする。更
に、アドレス56は異なる時に読み出しアドレス及び書
き込みアドレスを運ぶことに留意するべきである。アド
レス56は、アドレスバスが現在は書き込み動作用の宛
先アドレスを運んでいるか否かを示す読み書き制御ビッ
トを運ぶ。従って、各レジスターのクロックイネーブル
入力は、この制御ビットと、挿入ポインターカウンター
のそれぞれの出力との論理ANDを受け取る。従って、
アドレスは、該アドレスが書き込みアドレスに対応する
時、即ち、該書き込み制御ビットが1である時、除去ポ
インターが指示するレジスターにロードされる。従って
、挿入ポインターカウンター54はこの制御ビットをカ
ウントイネーブル信号としても受信するので、挿入ポイ
ンターは、書き込みアドレスが書き込みキューにロード
された直後にインクリメントされる。
逆に、若し読み書き制御ビットがゼロであれば、該アド
レスは読み出し命令のオペランドに対応し、従って物理
的読み出しアドレスに対応する29ビツトは比較器58
a−58hに送られる。比較器58a−58hは、対応
するレジスター0−7の各々に内蔵れれている29ビッ
ト物理的書き込みアドレスからの入力も受け取る。物理
的読み出しアドレスは有効な書き込みアドレスの各々と
比較され、若し一致があれば、比較器は出力信号ORゲ
ート60に送る。ORゲート60の出力は0PU22に
供給されて、別のオペランドの前処理を、そのアドレス
への書き込み動作が完了するまで、待たせる。
読み出しアドレスと無効な書き込みアドレスとの比較を
防止するために、書き込みアドレスタグの有効ビットは
比較器58a−58hをイネーブルするために使われる
。各有効ビットは、それぞれのレジスターが新しい書き
込みアドレスを受け取ることが出来る様にイネーブルさ
れる時にセットされ、各有効ビットは、書き込みアドレ
スがそのそれぞれのレジスターから除去される時にリセ
ットされる。この様にして、保留された書き込みアドレ
スを内蔵したレジスターのみが、存在する読み出しアド
レスと比較される。斯(して、読み出し動作は、その同
じアドレスへの先の書き込み動作の全てが保留されてい
る間に限って延期される。
除去ポインター52は、マルチプレクサ62の選択ライ
ンに接続された3ビツトカウンターである。マルチプレ
クサ62の入力は書き込みキューレジスター0−7の出
力に接続され、その出力はメモリーアクセス装置キャッ
シュ28に接続されている。従って、除去ポインター5
2は、どのレジスターをキャッシュ28に送るかを制御
する。
マルチプレクサ54の動作は実行装置20によりなされ
る。書き込み命令からのデータが利用可能である時、マ
ルチプレクサはイネーブルされ、該データはキャッシュ
28に送られる。有効ビットレジスター場所用のそれぞ
れのリセット信号を提供するために、特定のレジスター
が選択される外、除去ポインターが解読され、解読され
た出力が「除去ポインターインクリメント信号」 (第
9図を見よ)と共にゲート制御される。「除去ポインタ
ーインクリメント」信号も、除去ポインターカラターの
カウントイネーブル入力に供給される。
ここで第5図を参照すると、メモリーページ誤りをもた
らす書き込み動作を防止する制御論理を示すフローチャ
ートが示されている。クロックサイクルの開始時に、除
去ポインター52により選択された書き込みキューレジ
スター0−7の内容がマルチプレクサ62を通して送ら
れ、各タグビットが検査される。最初に、判定ブロック
64において、「誤りビット」が検査されて、メモリー
ページがキ、ヤッシュ28内にあるか否か判定される。
若し誤りビットがセットされていれば、制御権はブロッ
ク66に亙り、そこでハードウェアが主メモリー14か
ら選択されたページを検索する。
殆どの場合、該ページはキャッシュ28内にあり、制御
権は判定ブロック68に亙る。
ステップ68において、「最後のビット」が検査されて
、該アドレスが多倍精度結果の一連のアアドレスのうち
の最後のビットであるか否か判定される。若し最後ビッ
トがセットされていれば、制御権はブロック70に亙り
、物理的アドレスがキャッシュ28に送られて実際の書
き込み動作を完了させる。その他の場合は、該アドレス
は、多倍精度結果の最初の部分又は中間の部分の所望の
格納場所である。多倍精度書き込み動作は、隣接する複
数の記憶場所にデータを格納し、最後のビットは、多倍
精度書き込み動作の最後のバイトに対応するアドレスに
セットされる。その様な多倍精度結果の最初のアドレス
の翻訳中にページ誤りが検出されなかったとしても、最
後のアドレスは最初のアドレスとは異なるページをアド
レス指定することがある。従って、多倍精度結果の最初
の部分は、最後の部分についてページ誤りが生じないこ
とが確認するまでは書き込みされるべきでない。
従って、判定ブロック72において、ページ変更検出信
号(PCD)が検査される。PCD信号は、多バイト書
き込み動作の残りのバイトが現在のアドレスと同じペー
ジにあるか否かを示す。この状態は、存在する物理的ア
ドレス自体から判定されるが、その理由は、それは該物
理的アドレスがページの最後の部分にある時に生じるか
らである。この目的のための解読倫理が第8図に示され
ており、且つ以下に説明をする。若しPCDがセットさ
れておらず、全てのバイトがメモリー内の同じページに
あって、ページエラーがあり得ないことを示していれば
、書き込み動作の進行がブロック72において許される
。しかし、若しページに変更があれば、制御論理は、矛
盾をなるべく早く解決し、メモリーへの結果の書き込み
の遅れを避けるために、書き込みキュー内の他の項目の
誤りをビットを検査するべきである。
多倍精度書き込み動作において各バイトについて誤りビ
ットを検査する必要はない。むしろ、若しワードのバイ
トのいずれかがページの境界と交叉するならば、書き込
み動作の初めと終は必然的に異なるページにあるので、
最後のバイトのアドレスの誤りビットを検査することの
みが必要である。従って、判定ブロック76において、
制御論理は、多倍精度結果の「次の最後のバイト」のキ
ューアドレスを発見するためにキュー内のタグビットを
振り返って検査する。この「次の最後のパイトノは、そ
の「最後ビットjがセットされている(時間回り方向に
おいて)次の書き込みキューアドレスにより指示される
。若し最後のバイトの「誤りビット」がセットされてい
れば、該ページはキャッシュ28において利用可能では
な(て、主メモリー14から検索されなければならない
さもなければ、若し「誤りビット」がセットされていな
ければ、両方のページが存在し、書き込みブロック78
において進行することが出来る。
ここで第6図を参照すると、多倍精度結果の最後のバイ
トについてページ誤りが存在するか否か判定するのに使
われる論理回路のブッロク図が示されている。この判定
は、r次の最後のバイト」のアドレスを発見して、マル
チプレクサ81で対応する誤りビットを選択することに
よりなされる。
マルチプレクサ81の出力は、インバーター82を通さ
れ、ANDゲート83において、キュー内に有効な最後
のビットが存在するか否かを示すORゲート84からの
信号とのANDが取られる。
ANDゲート85は、「分からない」と、反転された誤
りビット信号とを組み合わせて、ページ誤りがない時に
は、「高レベル」となる信号に到達する。
「次の最後の調整」アドレスの位置を突き止める方法は
、除去ポインターから始まり、「次の最後の調整」フラ
グが最後に現れるまで円形レジスターの周囲を時計回り
に進行する。該フラグを求めて置火に試験する簡単なプ
ロセスである様に見える。これは現実であるが、その試
験に必要な論理回路は大規模である。例えば、2ないし
9個の入力を有する64個のANDゲートと、8個の8
入力ORゲートとが必要とされる。書き込みキューに内
蔵されたアドレスの全てを、除去ポインターがゼロアド
レスに移される様に、シフトさせることによって、この
回路を大いに簡単化することが出来る。論理回路は、除
去ポインターに対する1次の最後の調整」アドレスを判
定し、この相対アドレスを除去ポインターの絶対アドレ
スに加える必要があるだけである。固定されたアドレス
に対する「次の最後のバイト」アドレスを判定する方が
相当容易である。(第7図に示されている様に、7個の
ANDゲートを必要とするに過ぎない。)除去ポインタ
ーは円形バッファーの8個の位置のいずれをも取ること
が出来るので、直接判定の論理は、除去ポインターに対
するその場所によって各レジスターに優先順位を割り当
てなければならない。明らかに、除去ポインターが最高
の優先順位を持ち、優先順位は除去ポインターから時計
回り方向に下がってゆ(。逆に、第6図の好適なシステ
ムにおいては、優先順位符号器90は、除去ポインター
がゼロアドレスにあると仮定する。最高の優先順位はな
お除去ポインターに割り当てられるが、除去ポインター
は常に多位置シフト装置89により「ゼロアドレス」に
位置する様に「移される」。従って、優先順位は、除去
ポインターがゼロアドレスであると仮定することが出来
なければ存在することとなる8個のあり得る場合のうち
の1個だけについて判定し、割り当てなければならない
。しかし、優先順位符号器の出力は、除去ポインターの
実際のアドレスにではなくて「ゼロアドレス」に参照さ
れる。従って、優先順位符号器の出力を「ゼロアドレス
」に対するアドレスに変換するアドレス符号器が使用さ
れ、モジューロ−8(3ビツト)加算器96は、その相
対アドレスを除去ポインターの値に加算して、マルチプ
レクサ81により選択されるべき適切な誤りビットのア
ドレスを得る。
第7図は、第6図に示されているブロック図の好適な実
施例の略図である。円形バッファーの各レジスターの「
最後のビット」出力からの「最後のビットJ LBO−
LB7は、一連の2人力ANDゲー)86a−86hに
おいて、その同じレジスターVD O−VD Tの「有
効ビット」出力からの各°「有効ビット」と組み合わさ
れ、該アドレスが有効であることを保証する。これらの
ANDゲート86a−86hの全ての出力は、組み合わ
せられてシフト装置89を形成する8個の8人カマルチ
プレクサ88a−88hのバンクへの入力となる。マル
チプレクサ88a−88hは、全ての「有効な最後のビ
ット」をシフトさせる「バレル型シフタ」として作用す
るので、除去ポインターは実際上「有効な最後のビット
」関してゼロアドレスに移される。従って、7個のAN
Dゲート92a−92gを含む簡単な優先順位符号器9
0は、除去ポインター52を参照して次の有効な最後の
ビットを判定する。
ANDゲート86a−86hの8個の出力は、マルチプ
レクサ88a−88hの各々の全ての入力に直結されて
いるが、各入力は次の様に別様に接続される:即ち、若
し除去ポインターがゼロであれば、マルチプレクサ出力
QO1Ql、Q2、・・・、Q7は最後のビットLBO
1LBISLB2、・・・LB7に直接対応し;若し除
去ポインターが1であれば、マルチプレクサ出力QO1
Q1、Q2、・・・、Q7はLBISLB2、・・・、
LB7、LBOに対応し;・・・;若し除去ポインター
が7であれば、マルチプレクサ出力QO1Q1、Q2、
・・・、Q7はLB7、LBOl・・・LB6に対応す
る。これは、各マルチプレクサ8個の入力ラインの組へ
の接続が、その隣りのマルチプレクサの入力ラインの組
に対して1入力位置だけ回転される様にANDゲート出
力のマルチプレクサ入力への接続パターンを物理的に変
更することによって達成される。
除去ポインターアドレスが各マルチプレクサ88cm8
8gの選択された入力を制御するので、シフト装置89
の出力は、実際上、書き込みキュー36内の有効な「最
後の」ビットのシフトされたものであり、除去ポインタ
ー52のアドレスの有効なビットはQOに位置する。例
えば、若し除去ポインター52が書き込みキュー36の
4番目のレジスターにあるならば、シフト装置89は入
力LBI、LB5、LB6、・・・、LB3を出力QO
−Q7に送る。従って、4番目の書き込みキューレジス
ターの有効な「最後の」ビットはQOに送られる。
マルチプレクサ出力Q O−Q 7はマルチプレクサ出
力Q O−Q 7は、どの書き込みキューアドレスが「
次の最後の調整」であるか判定する優先順位符号器論理
回路90に送られる。書き込みキューアドレスは、除去
ポインターをQOに、残りのアドレスを元の順序でQl
−Qlに置く様にシフトされているので、優先順位はQ
 O−Q 7でなければならない。Qlは、他のアドレ
スQ O−Q 6のいずれもが最後の調整でない場合に
限って「次の最後の調整」となることが出来る。同様に
、QOは、アドレスQO−Q5のいずれもが最後の調整
でない場合に限って最後の調整となることが出来る。逆
に、若しQOが最後の調整であれば、それは次の最後の
調整でなければならない。従って、該論理回路は7個の
ANDゲー)92a−92gを包含し、そこで各出力と
、より高い優先順位を持ったレジスターの逆とのAND
が取られる。Qlは残りの全てのレジスターQ O−Q
 6の逆と組み合わせられ、QOはレジスターQ O−
Q 5の逆のみと組み合わせられなければならない。
ANDゲー)92a−92gの出力とマルチプレクサ8
5のQOの出力とは、アドレス符号器94への入力を形
成する。優先順位符号器90の構造は、−時に単一の出
力のみが「アサートされる」ことを許す。ANDゲート
92a−92gの各々は互いに他に対して排他的である
。しかし、優先順位符号器90の出力のいずれもが高レ
ベルでないということは可能である。この様な状況は、
書き込みキュー37に有効な最後のビットが無くて、そ
れが特別の場合として処理される時に生じる。ORゲー
ト96は、有効な最後のビットが書き込みキュー内に存
在する時を検出し、その出力は最後の結果を限定する。
アドレス符号器94は、除去ポインターアドレスに対す
る次の最後の調整のアドレスに対応する3ビツトアドレ
スを出力する。例えば、次の最後の調整がマルチプレク
サ85のQ4出力に対応するレジスターにあるならば、
ANDゲート92dは「アサートされた」信号を符号器
94に送り、該符号器は100の出力を生成する。これ
は、次の最後の調整アドレスが除去ポインターアドレス
から4レジスター離れて位置していることを示す。
従って、次の最後の調整アドレスに到達するために、符
号器94の出力は除去ポインターアドレスに加えられる
。符号器出力及び除去ポインターアドレスは、加算器9
6のそれぞれの3ビツト入力に接続されている。加算器
96は、結果として得られた和の下位3ビツトを次の最
後の調整の絶対アドレスとして出力する。従って、前述
した実施例においては、除去ポインターは除去ポインタ
ーから離れた絶対アドレス4(100)のレジスターに
あって、該加算器からの下位3ビツトの和はゼロ(00
0)である。従って、次の最後の調整アドレスは、円形
のバッファーのレジスター4にある。従って加算器96
は次の最後のバイトの書き込みキューアドレスをマルチ
プレクサ81の選択入力に送る。マルチプレクサ81へ
の入力は書き込みキューレジスターの誤りビットである
第8図は、ページ横断検出論理を示す。(第4図のマル
チプレクサ62からの)物理的アドレスの下位9ビツト
は、書き込まれるべきデータがページの境界と交叉する
か否か判定するために使われる。データの各ページは、
64本の8バイトラインに配列された512バイトから
成る。上0位ビットはページ上のラインを指示し、下位
3ビツトはライン内のバイトの場所を指示する。書き込
みの結果がページの境界を横断することとなるか否かを
判定するために必要なことは、該ページの最初のバイト
の場所と、書き込みされるべきデータの長さとを知るこ
とだけである。
カッド書き込み時には8バイトの最大書き込み長さが生
じ、各行が8バイトの長さであるので、ページの最後の
行へ書き込み時に限ってページ境界と交叉する危険があ
る。従って、ページの最後の行のアドレス指定かへ6人
力ANDゲート100によって検出される。しかしカッ
ドワードは、若し場所504 (111111000)
から始まる様に位置合わせされていれば、最後の8バイ
トの行に適切に書き込まれることが出来る。504より
大きい場所から始まるカッドワード書き込みは、8バイ
トに満たないバイトがページに残ることになるので、必
然的にページの境界を横断することになる。従って、3
人力ORゲート102は、いずれかのカッドワードが適
切に位置合わせされていないことを検出することが出来
る。最後の3人力ANDゲート104は、ORゲート1
02の出力を「カッドビット」と「ページの最後の行」
信号とで修飾することにより、カッドページ交叉を検出
する。
同様に、長ワード書き込みは、その4バイト長を収容す
るために場所508以下から開始されなければならない
。従って、長ワードはビ・ソト、若しAO及びAIがゼ
ロでなければ、A 2−A 8が全てlであるならばペ
ージを横断する。長ワードの位置合わせは、2人力OR
ゲート106により検出される。長ワードの場合はイン
バーター108により、検出される。長ワードページ横
断の条件の組み合わせは4人力ANDゲートllOによ
り検出される。
2人力ORゲート112は、カッドワード信号と長ワー
ドページ横断信号とを組み合わせて、所望のPCD信号
を提供する。
第9図は、除去ポインターカウンターをインクリメント
し、書き込みキューを流すための制御論理の略図である
。普通、除去ポインター52は、項目がメモリーに書き
込まれる毎にインクリメントされる。しかし、カッドワ
ードは特別の場合である;書き込みキュー36は各カッ
ドワードについて単一の項目を包含するが、各カッドワ
ード書き込みには2個の書き込み動作が必要である。フ
リップフロップ114は、カッドワードの最初の半分が
書き込まれる時にセットされる「次回アラウンドフラグ
」従って、結果が書き込みキュー36の頭の物理的アド
レスに書き込まれる時、「次回アラウンドフラグ」がセ
ットされるが、又は「新カソード」ビットがセットされ
ない場合に限って除去ポインター52はインクリメント
される。若し「次回アラウンド」フラグはセットされな
いが「新カソード」ビットがセットされるならば、「次
回アラウンド」フラグはセットされる。「次回アラウン
ド」フラグは、除去ポインターカウンター52がインク
リメントされる時に、又は初期化の時に、クリアされる
流し操作は、ブランチ予測が命令装置により検出された
通りに無効である時に、又は割り込みその他の例外又は
初期化信号に応じて行われるべきである。しかし、流し
操作はカッドワード 書き込み中に行われるべきではな
い。従って、留保されているカッドワードの後半部が書
き込まれるまではフリップフロップ116が流し要求信
号を格納している。流し信号は、ANDゲートl18及
びORゲート120により生成される。
流し時には、除去ポインターカウンター52は入力ポイ
ンターカウンター54の値にセットされ、全ての「有効
ビット」がクリアされる。
【図面の簡単な説明】
第1図は、中央処理装置及び付属のメモリーの一部の最
高レベルブロック図である。 第2図は、長ワードMOVEオペランドのパンブライン
処理の機能図である。 第3図は、書き込み動作を待ち合わせさせるための8項
目円形バッファーの機能図である。 第4図は、書き込みキュー円形バッファーの詳細ブロッ
ク図である。 第5図は、試験される色々な条件と、メモリーページ誤
りとなる書き込み動作を阻止するために行われる対応す
る動作とを示すフローチャートである。 第6図は、書き込みキュー内の特定の書き込み動作のデ
ータの最後のバイトの位置を発見するために使われる回
路の一般的ブロック図である。 第7図は、第6図のブロック図に一致する特別の回路の
略図である。 第8図は、書き込み動作がページ横断を生じさせる時を
検出する回路の略図である。 第9図は、 書き込みキューレジスターを流す制 御論理を示す機能図である。 F&P1

Claims (16)

    【特許請求の範囲】
  1. (1)パイプライン方式プロセッサー用のプログラムに
    おけるメモリーアクセス命令の実行中にメモリーアクセ
    スを制御する装置であって、 複数のアドレス指定可能な記憶場所を有し、データと、
    対応アドレスとを受け取る前記のアドレス指定可能な記
    憶場所のうちの指定された一つに前記データを格納する
    メモリーを有し、前記命令を前処理する手段を有し、該
    前処理手段は、動作コードと、各命令についての少なく
    とも1個のオペランド指定子とを取り出し、解読に応答
    して、指定されたアドレスと、少なくとも1個の読み書
    き信号とを送出する手段を包含しており、前記読み書き
    信号は、前記アドレスが、指定されたソースオペランド
    についての読み出しアドレスであるのか又は指定された
    宛先オペランドについての書き込みアドレスであるのか
    を示し、前記読み出しアドレスは、該メモリーから指定
    されたソースオペランドを取り出すために送出され、 前記動作コードに応じて、前記オペランドがソースオペ
    ランドである時には、その指定されたオペランドに対し
    て前記動作コードに対応する動作を行ない、前記オペラ
    ンドが宛先オペランドである時には結果のデータを前記
    メモリーに送る実行手段を有し、 該前処理手段から、指定されたアドレス及び該読み書き
    信号を受取り、該書き込みアドレスを格納し、該書き込
    みアドレスに対応する結果データを受け取るとその格納
    されたアドレスを前記メモリーに送る書き込みバッファ
    ー手段を有し、 該読み出しアドレスを該書き込みバッファー手段に格納
    されたアドレスの各々と比較し、該書き込みバッファー
    に格納されたアドレスのうちの少なくとも1個が該読み
    出しアドレスのうちの1個と等しければ待ち信号を送出
    する手段を有し、 前記待ち信号に応じて前記の前処理手段を待たせること
    により、対応する書き込みバッファーアドレスが前記メ
    モリーに送られ且つ前記書き込みバッファーアドレスに
    対応する結果データが前記実行手段から利用可能となる
    まで前記メモリーからのソースオペランドの取り出しを
    延期させる手段とを有することを特徴とする装置。
  2. (2)該書き込みバッファー手段は、複数のレジスター
    を有する先入れ先出しバッファーと、次の書き込みアド
    レスが格納されることとなるレジスターを指示する挿入
    ポインターと、複数のレジスターのうちのどのレジスタ
    ーが、受け取られた結果データに対応するアドレスを内
    蔵しているかを指示する除去ポインターとを包含するこ
    とを特徴とする請求項1に記載の装置。
  3. (3)該前処理手段は、分岐命令に応じて該プログラム
    がどの命令経路に沿って実行されるかを予測し、その予
    測した命令をパイプラインに配置し、若しその予測した
    経路に沿ってプログラムが実行されないことを検出した
    ならば流し信号を送出する手段を含み、前記装置は更に
    、該流し信号を受信すると該書き込みバッファー手段を
    無効にする手段を有することを特徴とする請求項1に記
    載の装置。
  4. (4)前記実行手段は、前記メモリーの複数の連続する
    書き込みアドレスに格納されるべき、単一の動作から生
    じた複数ワードの結果データを送出する手段と、前記複
    数ワードの結果データの送出を指示する信号を送出する
    手段とを含み、前記装置は更に、前記複数ワードの結果
    データの送出を指示する信号を受け取ると、該流し信号
    の送出を阻止する手段を有することを特徴とする請求項
    3に記載の装置。
  5. (5)所定の長さの複数の区画を有する主メモリーと、 該主メモリー区画の一部を中に格納したキャッシュメモ
    リーと、 該書き込みバッファー手段に格納されているアドレスか
    ら開始する、格納されるデータが別のキャッシュメモリ
    ー区画に格納されることになることを検出するとページ
    変更フラグをセットする手段と、 ページ変更フラグがセットされると、該キャッシュメモ
    リー区画を、該書き込みバッファー手段に格納されたア
    ドレスにデータを格納するのに必要な区画と比較し、そ
    の必要なメモリー区画が該キャッシュにおいて利用可能
    でなければ第1信号を送出する手段と、 該第1信号を受信すると該データの格納を阻止する手段
    とを更に含むことを特徴とする請求項1に記載の装置。
  6. (6)前記前処理手段は、前記書き込みオペランドの一
    つが、連続する書き込みアドレスに格納されるべき結果
    データの複数のワードを指定する時を示す複数ワード指
    示信号を送出する手段を含み、 前記書き込みバッファー手段は、更に、前記複数ワード
    信号に応答して、前記複数ワード信号に付随する複数の
    連続する書き込みアドレスと、格納される前記複数ワー
    ド信号に付随する最後の連続する書き込みアドレスをフ
    ラグで示す指示とを格納する手段を含み、 キャッシュメモリー区画を比較する前記比較手段は、格
    納済みの、前記複数ワード信号に付随する最後の連続す
    る書き込みアドレスとして前記指示によりフラグで示さ
    れている次の書き込みアドレスの所要のメモリー区画を
    判定する手段を含むことを特徴とする請求項5に記載の
    装置。
  7. (7)前記書き込みバッファー手段は、前記書き込みア
    ドレスを格納する格納レジスターを含み、前記格納レジ
    スターはそれぞれ連続するアドレスを有し、前記比較手
    段は、 前記複数ワード信号に付随する最後の連続する書き込み
    アドレスを格納する前記レジスターのうちの一つの指示
    を得て、前記実行手段により送出されるべき次の結果デ
    ータの書き込みアドレスを格納する格納レジスターのア
    ドレスに応じて前記指示をシフトさせることにより、前
    記実行手段により送出されるべき次の結果データの書き
    込みアドレスが、前記複数ワード信号に付随する最後の
    連続する書き込みアドレスであるか否かの指示から始ま
    る一連の指示を得るシフト手段と、 前記一連の指示に応じて、前記複数ワード信号に付随す
    る次の最後の連続する書き込みアドレスを格納するレジ
    スターの相対アドレスを得る優先順位符号器手段であっ
    て、前記相対アドレスは、前記実行手段により送出され
    るべき次の結果の書き込みアドレスを格納する記憶場所
    のアドレスに体する相対アドレスである優先順位符号器
    手段と、 前記実行手段により送出されるべき次の結果の書き込み
    アドレスを格納する記憶場所のアドレスにより前記相対
    アドレスを移すことにより前記複数ワード信号に付随す
    る最後の連続する書き込みアドレスを格納するレジスタ
    ーのアドレスを得る手段と、を包含していることを特徴
    とする請求項6に記載の装置。
  8. (8)パイプライン方式プロセッサー用のプログラムに
    おけるメモリーアクセス命令の実行中にメモリーアクセ
    スを制御する装置であって、 複数のアクセス指定可能な記憶場所を有し、データと、
    対応アドレスとを受け取ると前記のアドレス指定可能な
    記憶場所のうちの指定された一つに前記データを格納す
    るメモリーを有し、前記命令を前処理する手段であって
    、オペランドコードと、各命令についての少なくとも1
    個のオペランド指定子とを取り出し、解読に応答して、
    指定されたアドレスと、少なくとも1個の読み書き信号
    とを送出する手段を包含しており、前記読み書き信号は
    、前記アドレスが、指定されたソースオペランドについ
    ての読み出しアドレスであるのか又は指定された宛先オ
    ペランドについての書き込みアドレスであるのかを示し
    、前記読み出しアドレスは、該メモリーから指定された
    ソースオペランドを取り出すために送出され、 前記動作コードに応じて、前記オペランドがソースオペ
    ランドである時には、その指定されたオペランドに対し
    て前記動作コードに対応する動作を行ない、前記オペラ
    ンドが宛先オペランドである時には結果のデータを前記
    メモリーに送る実行手段を有し、 該前処理手段から、指定されたアドレス及び該読み書き
    信号を受取り、該書き込みアドレスを格納し、該書き込
    みアドレスに対応する結果データを受け取るとその格納
    されたアドレスを前記メモリーに送る書き込みバッファ
    ー手段を有し、 該前処理手段は、分岐命令に応じて該プログラムがどの
    命令経路に沿って実行されるかを予測し、その予測した
    命令をパイプラインに配置し、若しその予測した経路に
    沿ってプログラムが実行されないことを検出したならば
    流し信号を送出する手段を含み、前記装置は更に、該流
    し信号を受信すると該書き込みバッファー手段を無効に
    する手段を有することを特徴とする装置。
  9. (9)前記実行手段は、前記メモリーの複数の連続する
    書き込みアドレスに格納されるべき、単一の動作から生
    じた複数ワードの結果データを送出する手段と、前記複
    数ワードの結果データの送出を指示する信号を送出する
    手段とを含み、前記装置は更に、前記複数ワードの結果
    データの送出を指示する信号を受け取ると、該流し信号
    の送出を阻止する手段を有することを特徴とする請求項
    8に記載の装置。
  10. (10)所定の長さの複数の区画を有する主メモリーと
    、 該主メモリー区画の一部を中に格納したキャッシュメモ
    リーと、 該書き込みバッファー手段に格納されているアドレスか
    ら開始する、格納されるデータが別のキャッシュメモリ
    ー区画に格納されることになることを検出するとページ
    変更フラグをセットする手段と、 ページ変更フラグがセットされると、該キャッシュメモ
    リー区画を、該書き込みバッファー手段に格納されたア
    ドレスにデータを格納するのに必要な区画と比較し、そ
    の必要なメモリー区画が該キャッシュにおいて利用可能
    でなければ第1信号を送出する手段と、 該第1信号を受信すると該データの格納を阻止する手段
    とを更に含むことを特徴とする請求項8に記載の装置。
  11. (11)前記前処理手段は、前記書き込みオペランドの
    一つが、連続する書き込みアドレスに格納されるべき結
    果データの複数のワードを指定する時を示す複数ワード
    指示信号を送出する手段を含み、 前記書き込みキュー手段は、更に、前記複数ワード信号
    に応答して、前記複数ワード信号に付随する複数の連続
    する書き込みアドレスと、格納される前記複数ワード信
    号に付随する最後の連続する書き込みアドレスをフラグ
    で示す指示とを格納する手段を含み、 キャッシュメモリー区画を比較する前記比較手段は、格
    納済みの、前記複数ワード信号に付随する最後の連続す
    る書き込みアドレスとして前記指示によりフラグで示さ
    れている次の書き込みアドレスの所要のメモリー区画を
    判定する手段を含むことを特徴とする請求項10に記載
    の装置。
  12. (12)前記書き込みバッファーは、前記書き込みアド
    レスを格納する格納レジスターを含み、前記格納レジス
    ターはそれぞれ連続するアドレスを有し、前記比較手段
    は、 前記複数ワード信号に付随する最後の連続する書き込み
    アドレスを格納する前記レジスターのうちの一つの指示
    を得て、前記実行手段により送出されるべき次の結果デ
    ータの書き込みアドレスを格納する格納レジスターのア
    ドレスに応じて前記指示をシフトさせることにより、前
    記実行手段により送出されるべき次の結果データの書き
    込みアドレスが、前記複数ワード信号に付随する最後の
    連続する書き込みアドレスであるか否かの指示から始ま
    る一連の指示を得るシフト手段と、 前記一連の指示に応じて、前記複数ワード信号に付随す
    る次の最後の連続する書き込みアドレスを格納するレジ
    スターの相対アドレスを得る優先順位符号器手段であっ
    て、前記相対アドレスは、前記実行手段により送出され
    るべき次の結果の書き込みアドレスを格納する記憶場所
    のアドレスに対する相対アドレスである優先順位符号器
    手段と、 前記実行手段により送出されるべき次の結果の書込みア
    ドレスを格納する記憶場所のアドレスにより前記相対ア
    ドレスを移すことにより前記複数ワード信号に付随する
    最後の連続する書き込みアドレスを格納するレジスター
    のアドレスを得る手段と、を包含していることを特徴と
    する請求項11に記載の装置。
  13. (13)パイプライン方式プロセッサー用のプログラム
    におけるメモリーアクセス命令の実行中にメモリーアク
    セスを制御する装置であって、 所定の長さの複数の区画を有する主メモリーと、 指定されたアドレスにより各々特定される複数の記憶場
    所を有し、読み出し動作及び指定されたアドレスを指示
    する信号を受信すると、前選択された記憶場所に格納さ
    れているデータを送出すると共に、書き込み動作及び指
    定されたアドレスを指示する信号を受信すると前選択さ
    れた記憶場所にデータを格納する様になっており、核主
    メモリーの一部を中に格納したキャッシュメモリーを有
    し、 前記命令を前処理する手段を有し、該前処理手段は、動
    作コードと、各命令についての少なくとも1個のオペラ
    ンド指定子とを取り出し、解読に応答して、指定された
    アドレスと、少なくとも1個の読み書き信号とを送出す
    る手段を包含しており、前記読み書き信号は、前記アド
    レスが、指定されたソースオペランドについての読み出
    しアドレスであるのかを示し、前記読み出しアドレスは
    、該メモリーから指定されたソースオペランドを取り出
    すために送出され、前記動作コードに応じて、前記オペ
    ランドがソースオペランドである時には、その指定され
    たオペランドに対して前記動作コードに対応する動作を
    行ない、前記オペランドが宛先オペランドである時には
    結果のデータを前記メモリーに送る実行手段を有し、該
    前処理手段から、指定されたアドレス及び該読み書き信
    号を受取り、該書き込みアドレスを格納し、該書き込み
    アドレスに対応する結果データを受け取るとその格納さ
    れたアドレスを前記メモリーに送る書き込みバッファー
    手段を有し、 該書き込みバッファー手段に格納されているアドレスか
    ら開始する、格納されるデータが別のキャッシュメモリ
    ー区画に格納されることになることを検出するとページ
    変更フラグをセットする手段を有し、 ページ変更フラグがセットされると、該キャッシュメモ
    リー区画を、該書き込みバッファー手段に格納されたア
    ドレスにデータを格納するのに必要な区画と比較し、そ
    の必要なメモリー区画が該キャッシュにおいて利用可能
    でなければ第1信号を送出する手段を有し、 該第1信号を受信すると該データの格納を阻止する手段
    を有することを特徴とする装置。
  14. (14)前記前処理手段は、前記書き込みオペランドの
    一つが、連続する書き込みアドレスに格納されるべき結
    果データの複数のワードを指定する時を示す複数ワード
    指示信号を送出する手段を含み、 前記書き込みバッファー手段は、更に、前記複数ワード
    信号に応答して、前記複数ワード信号に付随する複数の
    連続する書き込みアドレスと、格納される前記複数ワー
    ド信号に付随する最後の連続する書き込みアドレスをフ
    ラグで示す指示とを格納する手段を含み、 キャッシュメモリー区画を比較する前記比較手段は、格
    納済みの、前記複数ワード信号に付随する最後の連続す
    る書き込みアドレスとして前記指示によりフラグで示さ
    れている次の書き込みアドレスの所要のメモリー区画を
    判定する手段を含むことを特徴とする請求項13に記載
    の装置。
  15. (15)前記書き込みバッファー手段は、前記書き込み
    アドレスを格納する格納レジスターを含み、前記格納レ
    ジスターはそれぞれ連続するアドレスを有し、前記比較
    手段は、 前記複数ワード信号に付随する最後の連続する書き込み
    アドレスを格納する前記レジスターのうちの一つの指示
    を得て、前記実行手段により送出されるべき次の結果デ
    ータの書き込みアドレスを格納する格納レジスターのア
    ドレスに応じて前記指示をシフトさせることにより、前
    記実行手段により送出されるべき次の結果データの書き
    込みアドレスが、前記複数ワード信号に付随する最後の
    連続する書き込みアドレスであるか否かの指示から始ま
    る一連の指示を得るシフト手段と、 前記一連の指示に応じて、前記複数ワード信号に付随す
    る次の最後の連続する書き込みアドレスを格納するレジ
    スターの相対アドレスを得る優先順位符号器手段であっ
    て、前記相対アドレスは、前記実行手段により送出され
    るべき次の結果の書き込みアドレスを格納する記憶場所
    のアドレスに対する相対アドレスである優先順位符号器
    手段と、 前記実行手段により送出されるべき次の結果の書き込み
    アドレスを格納する記憶場所のアドレスにより前記相対
    アドレスを移すことにより前記複数ワード信号に付随す
    る最後の連続する書き込みアドレスを格納するレジスタ
    ーのアドレスを得る手段と、を包含していることを特徴
    とする請求項14に記載の装置。
  16. (16)パイプライン方式プロセッサー用のプログラム
    におけるメモリーアクセス命令の実行中にメモリーアク
    セスを制御する方法であって、前記パイプラインプロセ
    ッサーは;複数のアドレス指定可能な記憶場所を有し、
    データと、対応アドレスとを受け取ると前記のアドレス
    指定可能な記憶場所のうちの指定された一つに前記デー
    タを格納するメモリーを含み;前記命令を前処理するオ
    ペランド処理装置を有し、該装置は、動作コードと、各
    命令についての少なくとも1個のオペランド指定子とを
    取り出し、解読に応答して、指定されたアドレスと、少
    なくとも1個の読み書き信号とを送出する手段を包含し
    ており、前記読み書き信号は、前記アドレスが、指定さ
    れたソースオペランドについての読み出しアドレスであ
    るのか又は指定された宛先オペランドについての書き込
    みアドレスであるのかを示し;前記造作コードに応じて
    、前記オペランドがソースオペランドである時には、そ
    の指定されたオペランドに対して前記動作コードに対応
    する動作を行ない、前記オペランドが宛先オペランドで
    ある時には結果のデータを前記メモリーに送る実行装置
    を有し、前記方法は、(a)前記前処理手段により送出
    される前記書き込みアドレスを、前記実行装置が対応す
    る結果データを前記メモリーに送る時点までは先入れ先
    出しキューに挿入し、その時点で前記書き込みアドレス
    を前記キューから除去し、且つ、対応する結果データを
    前記メモリーの、前記キューから除去された書き込みア
    ドレスに格納し、 (b)前記オペランド処理装置が送出した前記読み出し
    アドレスを、該キューに格納されたアドレスの各々と比
    較し、該キュー内の書き込みアドレスのうちの少なくと
    も1個が該読み出しアドレスと等しい時には前記オペラ
    ンド処理装置を待たせることにより、対応する書き込み
    バッファーアドレスが前記メモリーに送られ且つ前記書
    き込みバッファーアドレスに対応する結果データが前記
    実行手段から利用可能となるまでは前記メモリーからの
    ソースオペランドの取り出しを延期させるステップを含
    むことを特徴とする方法。
JP1169734A 1989-02-03 1989-06-30 パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置 Pending JPH02206837A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/306,767 US5125083A (en) 1989-02-03 1989-02-03 Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
US306767 1989-02-03

Publications (1)

Publication Number Publication Date
JPH02206837A true JPH02206837A (ja) 1990-08-16

Family

ID=23186747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1169734A Pending JPH02206837A (ja) 1989-02-03 1989-06-30 パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置

Country Status (6)

Country Link
US (1) US5125083A (ja)
EP (1) EP0380846B1 (ja)
JP (1) JPH02206837A (ja)
AT (1) ATE170995T1 (ja)
CA (1) CA1325283C (ja)
DE (1) DE68928812T2 (ja)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
JPH0328911A (ja) * 1989-06-26 1991-02-07 Mitsubishi Electric Corp マイクロプロセッサ
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
US5539911A (en) 1991-07-08 1996-07-23 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
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
US5379396A (en) * 1991-10-11 1995-01-03 Intel Corporation Write ordering for microprocessor depending on cache hit and write buffer content
EP0547769B1 (en) * 1991-12-18 1999-10-13 Sun Microsystems, Inc. Write overlap with overwrite prevention
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5497470A (en) * 1992-05-18 1996-03-05 Sun Microsystems, Inc. Method and apparatus for providing a high through put cache tag controller
JPH05342084A (ja) * 1992-06-08 1993-12-24 Matsushita Electric Ind Co Ltd データ記憶装置及びデータ記憶方法
US5450561A (en) * 1992-07-29 1995-09-12 Bull Hn Information Systems Inc. Cache miss prediction method and apparatus for use with a paged main memory in a data processing system
US5619668A (en) * 1992-08-10 1997-04-08 Intel Corporation Apparatus for register bypassing in a 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
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
US5542061A (en) * 1993-01-21 1996-07-30 Nec Corporaiton Arrangement of controlling issue timing of a read instruction to a common block in a vector processor
US5481736A (en) * 1993-02-17 1996-01-02 Hughes Aircraft Company Computer processing element having first and second functional units accessing shared memory output port on prioritized basis
US5420990A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Mechanism for enforcing the correct order of instruction execution
US6704861B1 (en) 1993-06-17 2004-03-09 Hewlett-Packard Development Company, L.P. Mechanism for executing computer instructions in parallel
US5428807A (en) * 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5406504A (en) * 1993-06-30 1995-04-11 Digital Equipment Multiprocessor cache examiner and coherency checker
US5748937A (en) * 1993-08-26 1998-05-05 Intel Corporation Computer system that maintains processor ordering consistency by snooping an external bus for conflicts during out of order execution of memory access instructions
US5434987A (en) * 1993-09-21 1995-07-18 Intel Corporation Method and apparatus for preventing incorrect fetching of an instruction of a self-modifying code sequence with dependency on a bufered store
US5740398A (en) * 1993-10-18 1998-04-14 Cyrix Corporation Program order sequencing of data in a microprocessor with write buffer
US6219773B1 (en) 1993-10-18 2001-04-17 Via-Cyrix, Inc. System and method of retiring misaligned write operands from a write buffer
US5471598A (en) * 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer
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
US5608885A (en) * 1994-03-01 1997-03-04 Intel Corporation Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions
US5751986A (en) * 1994-03-01 1998-05-12 Intel Corporation Computer system with self-consistent ordering mechanism
US5465336A (en) * 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
IL110181A (en) * 1994-06-30 1998-02-08 Softchip Israel Ltd Install microprocessor and peripherals
JP3164732B2 (ja) * 1994-07-04 2001-05-08 富士通株式会社 データ処理装置
US5634073A (en) * 1994-10-14 1997-05-27 Compaq Computer Corporation System having a plurality of posting queues associated with different types of write operations for selectively checking one queue based upon type of read operation
US5867734A (en) * 1994-11-21 1999-02-02 Intel Corporation Multiple-reader multiple-writer queue for a computer system
US5649157A (en) * 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5764943A (en) * 1995-12-28 1998-06-09 Intel Corporation Data path circuitry for processor having multiple instruction pipelines
US6092184A (en) * 1995-12-28 2000-07-18 Intel Corporation Parallel processing of pipelined instructions having register dependencies
US5854914A (en) * 1996-02-13 1998-12-29 Intel Corporation Mechanism to improved execution of misaligned loads
US5903749A (en) * 1996-07-02 1999-05-11 Institute For The Development Of Emerging Architecture, L.L.C. Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
US5923900A (en) * 1997-03-10 1999-07-13 International Business Machines Corporation Circular buffer with n sequential real and virtual entry positions for selectively inhibiting n adjacent entry positions including the virtual entry positions
US6145038A (en) * 1997-10-31 2000-11-07 International Business Machines Corporation Method and system for early slave forwarding of strictly ordered bus operations
US6112270A (en) * 1997-10-31 2000-08-29 International Business Machines Corporation Method and system for high speed transferring of strictly ordered bus operations by reissuing bus operations in a multiprocessor system
US6145062A (en) * 1998-01-26 2000-11-07 Intel Corporation Selective conflict write flush
US6173307B1 (en) 1998-08-20 2001-01-09 Intel Corporation Multiple-reader multiple-writer queue for a computer system
US6237067B1 (en) 1998-08-31 2001-05-22 International Business Machines Corporation System and method for handling storage consistency conflict
US6301627B1 (en) 1998-12-18 2001-10-09 International Business Machines Corporation Method/system for identifying delayed predetermined information transfer request as bypassable by subsequently-generated information transfer request using bypass enable bit in bridge translation control entry
US6557084B2 (en) * 1999-07-13 2003-04-29 International Business Machines Corporation Apparatus and method to improve performance of reads from and writes to shared memory locations
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6732234B1 (en) * 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7440454B1 (en) * 2004-12-21 2008-10-21 Xilinx, Inc. Packet reshuffler and method of implementing same
US8677078B1 (en) * 2007-06-28 2014-03-18 Juniper Networks, Inc. Systems and methods for accessing wide registers
US9170944B2 (en) * 2013-06-25 2015-10-27 International Business Machines Corporation Two handed insertion and deletion algorithm for circular buffer
US9652230B2 (en) * 2013-10-15 2017-05-16 Mill Computing, Inc. Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US9811403B1 (en) * 2016-06-22 2017-11-07 Intel Corporation Method, apparatus and system for performing matching operations in a computing system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61107434A (ja) * 1984-10-31 1986-05-26 Hitachi Ltd デ−タ処理装置
JPS63113648A (ja) * 1986-08-27 1988-05-18 アムダ−ル コ−ポレ−シヨン キャッシュ記憶待ち行列

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3601809A (en) * 1968-11-04 1971-08-24 Univ Pennsylvania Addressable list memory systems
US3747072A (en) * 1972-07-19 1973-07-17 Sperry Rand Corp Integrated static mnos memory circuit
US4342081A (en) * 1979-12-12 1982-07-27 Honeywell Information Systems Inc. Tape device adapter
US4392200A (en) * 1980-01-28 1983-07-05 Digital Equipment Corporation Cached multiprocessor system with pipeline timing
US4345309A (en) * 1980-01-28 1982-08-17 Digital Equipment Corporation Relating to cached multiprocessor system with pipeline timing
JPS6057090B2 (ja) * 1980-09-19 1985-12-13 株式会社日立製作所 データ記憶装置およびそれを用いた処理装置
US4589067A (en) * 1983-05-27 1986-05-13 Analogic Corporation Full floating point vector processor with dynamically configurable multifunction pipelined ALU
US4642794A (en) * 1983-09-27 1987-02-10 Motorola Computer Systems, Inc. Video update FIFO buffer
FI86484C (fi) * 1984-04-27 1992-08-25 Honeywell Inf Systems Styrorgan i en digital datamaskin.
US4803654A (en) * 1985-06-20 1989-02-07 General Datacomm Industries, Inc. Circular first-in, first out buffer system for generating input and output addresses for read/write memory independently
US4761731A (en) * 1985-08-14 1988-08-02 Control Data Corporation Look-ahead instruction fetch control for a cache memory
JPS62102344A (ja) * 1985-10-29 1987-05-12 Fujitsu Ltd バツフア・メモリ制御方式
US4949301A (en) * 1986-03-06 1990-08-14 Advanced Micro Devices, Inc. Improved pointer FIFO controller for converting a standard RAM into a simulated dual FIFO by controlling the RAM's address inputs
US4768148A (en) * 1986-06-27 1988-08-30 Honeywell Bull Inc. Read in process memory apparatus
US4785415A (en) * 1986-08-29 1988-11-15 Hewlett-Packard Company Digital data buffer and variable shift register
US4894797A (en) * 1986-11-17 1990-01-16 Amp Incorporated FIFO data storage system using PLA controlled multiplexer for concurrent reading and writing of registers by different controllers
EP0275530B1 (en) * 1986-12-23 1993-09-29 Nec Corporation Device for controlling address storing in a translation look-aside buffer
US4922437A (en) * 1986-12-25 1990-05-01 Kabushiki Kaisha Toshiba Image information processing apparatus
US4890254A (en) * 1987-03-11 1989-12-26 Aristacom International, Inc. Clock disabling circuit
US4991090A (en) * 1987-05-18 1991-02-05 International Business Machines Corporation Posting out-of-sequence fetches

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61107434A (ja) * 1984-10-31 1986-05-26 Hitachi Ltd デ−タ処理装置
JPS63113648A (ja) * 1986-08-27 1988-05-18 アムダ−ル コ−ポレ−シヨン キャッシュ記憶待ち行列

Also Published As

Publication number Publication date
DE68928812T2 (de) 1999-04-29
CA1325283C (en) 1993-12-14
EP0380846A2 (en) 1990-08-08
US5125083A (en) 1992-06-23
EP0380846B1 (en) 1998-09-09
DE68928812D1 (de) 1998-10-15
ATE170995T1 (de) 1998-09-15
EP0380846A3 (en) 1992-09-02

Similar Documents

Publication Publication Date Title
JPH02206837A (ja) パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置
EP0381447B1 (en) Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
US5167026A (en) Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
EP0380859B1 (en) Method of preprocessing multiple instructions
US5113515A (en) Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US4926323A (en) Streamlined instruction processor
EP0134620B1 (en) Data processing apparatus and method
US5142631A (en) System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
CA1325285C (en) Method and apparatus for ordering and queueing multiple memory requests
EP0381444B1 (en) Branch prediction
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
US5148528A (en) Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
US5142633A (en) Preprocessing implied specifiers in a pipelined processor
JPH08249181A (ja) ブランチ予測式データ処理装置および動作方法
US5434986A (en) Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
EP0550289A2 (en) A mechanism to detect stores into the instruction stream
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
JPH0512110A (ja) 情報処理装置
IE901528A1 (en) Method and apparatus for controlling the conversion of¹virtual to physical memory addresses in a digital computer¹system
IE901520A1 (en) Branch prediction
IE901527A1 (en) Method and apparatus for ordering and queuing multiple¹memory requests
IE901517A1 (en) Virtual instruction cache refill algorithm