JPH02240735A - データ冗長度分解能をもつマルチプル命令処理システム - Google Patents
データ冗長度分解能をもつマルチプル命令処理システムInfo
- Publication number
- JPH02240735A JPH02240735A JP2021909A JP2190990A JPH02240735A JP H02240735 A JPH02240735 A JP H02240735A JP 2021909 A JP2021909 A JP 2021909A JP 2190990 A JP2190990 A JP 2190990A JP H02240735 A JPH02240735 A JP H02240735A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- mask
- register
- read
- general
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
産業上の利用分野
本発明は、これと同時に出願された次のような米国特許
出願に開示されているコンピュータシステムの幾つかの
特徴を有するものである。エバンス氏等の[デジタルコ
ンピュータのシステム制御ユニットとサービス処理ユニ
ットとの間のインターフェイス(AN INTERFA
CE BETWEEN A SYSTEMCONTRO
L LINIT AND A 5ERVICE PRO
CESSING UNITOF A DIGITAL
COMPUTER)J ;アーノルド氏等の「マイク
ロプロセッサシステムのシステム制御ユニットと中央処
理ユニットとをインターフェイスする方法及び装置(M
ETHOD AND APPARATLIS FORI
NTERFACING A SYSTEM C0NTR
0L UNIT FORAMULTIPROCESSO
RSYSTEM WITHT)IE CENTRALP
ROCESSING UNITS)J ;ガグリアー
ド氏等の[マルチプロセッサシステムのシステム制御ユ
ニットをシステムのシステムメインメモリとインターフ
ェイスするための方法及び手段(METHOD AND
MEANS FORINTERFA(jNG A SY
STEM C0NTR0L UNITFORA MU
LTIPROCESSORSYSYTEM WrTII
THESYSYTEM MAIN MEMORY)
J ; D、フィツト氏等の「パイプライン式コンピ
ュータシステムにおいて考えられる種々の数のメモリア
クセス競合を分析する方法と装ffi(METHOD
AND APPARATUS FORRESOLVIN
G A VARIABLE NUMBEROF POT
ENTIALMEMORY ACCESS C0NFL
ICTS IN A PIPELTNEDCOMPUT
ERSYSYTEM)J ; D、フィツト氏等の[
可変長さの命令アーキテクチャにおいて多数の指定子を
デコードする方法(DECODING MULTIPL
ESPECIFIER3IN A VARIABLE
LENCTHlN5TRUCTIONARCHITEC
TURE)J ; D、フィツト氏等の「仮想命令キ
ャッシュリフィルアルゴリズム(VIRTUALINS
TRUCTION CACHE REFILL ALG
ORIT)IM)J ;マーレイ氏等の「同じ命令内で
のレジスタ及びレジスタ変更指定子のパイプライン処理
(PIPELINEPREPROCESSING OF
REGISTERAND REGISTERMODI
−FYINGT 5PECIFIER3WITIIIN
T)IE SAME lN5T−RUCTION)J
; D、フィツト氏等の「パイプラインプロセッサ
において暗示された指定子を予め処理する方法(PRE
PROCESSTNG IMPLIED 5PECIF
IER3INA PIPELINED PROCESS
ER)J ; D、フィツト氏等の「ブランチ予想(
BRANC)I PREDICTION)J ; フォ
ラサム氏等の[デジタルコンピュータのパイプライン式
フローティングポイント加算器(PIPELINEDF
LOATING POINT ADDERFORDIG
ITAL COMPUTER) Jグランドマン氏等の
[自己計時式レジスタファイル(SALF TIMED
REGISTERFILE)J ;ベベン氏等の「
パイプライン式コンピュータシステムにおいてエラーを
検出して修正する方法及び装置(METHODAND
APPARATUS FORDETE(:TANG A
ND C0RRECTINGERROR5IN A P
IPELINED COMPUTERSYSTEM)J
; 7リン氏等の[マルチプロセッサシステムにおい
てシステム制御ユニットを用いて通信要求を仲裁する方
法及び装置(MET)(OD AND MEANS F
ORARBIT−RATING COMMUNICAT
ION REQUESTS USING A SYST
EMCONTROL UNITIN A MULTI−
PROCESSORSYSTEM)J 。
出願に開示されているコンピュータシステムの幾つかの
特徴を有するものである。エバンス氏等の[デジタルコ
ンピュータのシステム制御ユニットとサービス処理ユニ
ットとの間のインターフェイス(AN INTERFA
CE BETWEEN A SYSTEMCONTRO
L LINIT AND A 5ERVICE PRO
CESSING UNITOF A DIGITAL
COMPUTER)J ;アーノルド氏等の「マイク
ロプロセッサシステムのシステム制御ユニットと中央処
理ユニットとをインターフェイスする方法及び装置(M
ETHOD AND APPARATLIS FORI
NTERFACING A SYSTEM C0NTR
0L UNIT FORAMULTIPROCESSO
RSYSTEM WITHT)IE CENTRALP
ROCESSING UNITS)J ;ガグリアー
ド氏等の[マルチプロセッサシステムのシステム制御ユ
ニットをシステムのシステムメインメモリとインターフ
ェイスするための方法及び手段(METHOD AND
MEANS FORINTERFA(jNG A SY
STEM C0NTR0L UNITFORA MU
LTIPROCESSORSYSYTEM WrTII
THESYSYTEM MAIN MEMORY)
J ; D、フィツト氏等の「パイプライン式コンピ
ュータシステムにおいて考えられる種々の数のメモリア
クセス競合を分析する方法と装ffi(METHOD
AND APPARATUS FORRESOLVIN
G A VARIABLE NUMBEROF POT
ENTIALMEMORY ACCESS C0NFL
ICTS IN A PIPELTNEDCOMPUT
ERSYSYTEM)J ; D、フィツト氏等の[
可変長さの命令アーキテクチャにおいて多数の指定子を
デコードする方法(DECODING MULTIPL
ESPECIFIER3IN A VARIABLE
LENCTHlN5TRUCTIONARCHITEC
TURE)J ; D、フィツト氏等の「仮想命令キ
ャッシュリフィルアルゴリズム(VIRTUALINS
TRUCTION CACHE REFILL ALG
ORIT)IM)J ;マーレイ氏等の「同じ命令内で
のレジスタ及びレジスタ変更指定子のパイプライン処理
(PIPELINEPREPROCESSING OF
REGISTERAND REGISTERMODI
−FYINGT 5PECIFIER3WITIIIN
T)IE SAME lN5T−RUCTION)J
; D、フィツト氏等の「パイプラインプロセッサ
において暗示された指定子を予め処理する方法(PRE
PROCESSTNG IMPLIED 5PECIF
IER3INA PIPELINED PROCESS
ER)J ; D、フィツト氏等の「ブランチ予想(
BRANC)I PREDICTION)J ; フォ
ラサム氏等の[デジタルコンピュータのパイプライン式
フローティングポイント加算器(PIPELINEDF
LOATING POINT ADDERFORDIG
ITAL COMPUTER) Jグランドマン氏等の
[自己計時式レジスタファイル(SALF TIMED
REGISTERFILE)J ;ベベン氏等の「
パイプライン式コンピュータシステムにおいてエラーを
検出して修正する方法及び装置(METHODAND
APPARATUS FORDETE(:TANG A
ND C0RRECTINGERROR5IN A P
IPELINED COMPUTERSYSTEM)J
; 7リン氏等の[マルチプロセッサシステムにおい
てシステム制御ユニットを用いて通信要求を仲裁する方
法及び装置(MET)(OD AND MEANS F
ORARBIT−RATING COMMUNICAT
ION REQUESTS USING A SYST
EMCONTROL UNITIN A MULTI−
PROCESSORSYSTEM)J 。
E、フィツト氏等の[マイクロコード化実行ユニットに
おいて並列動作で多機能ユニットを制御する方法(CO
NTROL OF MULTIPLE FUNCTIO
N UINTSWIT)l PARALLEL 0PE
RATION IN A MfCROCODEDEXE
CURION UINT)J 、ウエブ二世氏等の「
仮想メモリシステムをベースとするデジタルコンピュー
タの命令パイプライン内において予めフェッチした命令
でメモリアクセス例外を処理する方法(PROCESS
ING OF MEMORY ACCESS EXCE
PTIONS WIT)IPRE−FETCHED l
N5TRUCTIONS WITHIN TIIE l
N5T−RUCTION PIPELINE OF A
VIRTUALMEMORY SYSTEM−BAS
ED DIGITAL COMPUTER)J ;ヘ
ザリントン氏等の[デジタルコンピュータシステムにお
いて仮想−物理メモリアドレスの変換を制御する方法及
び装fly(METHOD AND APPARATU
S FORC0NTR0LLINGT)IE C0NV
ER3ION OF VIRTUAL TOPHYSI
CAL MEMORYADDRESSES IN A
DIGITAL C0NPUTERSYSYTEM)J
;ヘザリントン氏等の[エラー修正機能を有するラ
イトバックバッフy (WRITE BACK BUF
FERWITHERRORC0RRECTING CA
PABILITIES)J ; 71J ン氏等の「
マルチプロセッサシステムにおいてシステム制御ユニッ
トを用いて通信要求を仲裁する方法及び手段(MET)
IOD AND MEANS FORARBITRAT
INGCOMMUNICATrON REQUESTS
USINGA SYSTEM C0NTR0LUNI
T IN A MULTI−PROCESSORSYS
TEM)J ;チナズワミー氏等の[マルチプロセッ
サシステムにおいてシステムユニット間のデータトラン
ザクションに対するモジュール式クロスバ−相互接続ネ
ットワーク(MODULARCRO3SBARINTE
RCONNECTIONNETWORK FORDAT
A TRANSACTIONS BETWEEN SY
STEMUN[TS IN A M[JLTIPROC
:ESSORSYSTEM)J ;ポルジン氏等の[
入力/出カニニットとマルチプロセッサシステムのシス
テム制御ユニットとをインターフェイスする方法及び装
置(MET)IOD AND APPARA−TUS
FORINTERFACING A SYSYTEM
C0NTR0L UNITFORA MULTI−PR
OCESSORSYSYTEM WITI−1rNPI
JTloUTPUT UNITS)J ;ガグリアー
ド氏等の[マルチプロセッサシステムのシステム制御ユ
ニットとシステムメインメモリとをインターフェイスす
る手段ニ用イルメモリ構成(MEMORY C0NFI
GURATIONFORUSE WIT)I MEAN
S FORINTERFA(jNG A 5YSTEN
CONTROL UNIT FORA MULTI−P
ROCESSORSYSTEMWITHTHE SYS
TEM MAIN MEMORY) J ;そしてガ
グリアード氏等の[システムモジュール間のDRAM制
御信号のエラーチエツクのための方法及び手段(トラE
THOD AND MEANS FORERRO
RCHECKING OF DRA?慴−CONT
ROL 5IGNALS BETWEEN SYSTE
M MODLILES)J 。
おいて並列動作で多機能ユニットを制御する方法(CO
NTROL OF MULTIPLE FUNCTIO
N UINTSWIT)l PARALLEL 0PE
RATION IN A MfCROCODEDEXE
CURION UINT)J 、ウエブ二世氏等の「
仮想メモリシステムをベースとするデジタルコンピュー
タの命令パイプライン内において予めフェッチした命令
でメモリアクセス例外を処理する方法(PROCESS
ING OF MEMORY ACCESS EXCE
PTIONS WIT)IPRE−FETCHED l
N5TRUCTIONS WITHIN TIIE l
N5T−RUCTION PIPELINE OF A
VIRTUALMEMORY SYSTEM−BAS
ED DIGITAL COMPUTER)J ;ヘ
ザリントン氏等の[デジタルコンピュータシステムにお
いて仮想−物理メモリアドレスの変換を制御する方法及
び装fly(METHOD AND APPARATU
S FORC0NTR0LLINGT)IE C0NV
ER3ION OF VIRTUAL TOPHYSI
CAL MEMORYADDRESSES IN A
DIGITAL C0NPUTERSYSYTEM)J
;ヘザリントン氏等の[エラー修正機能を有するラ
イトバックバッフy (WRITE BACK BUF
FERWITHERRORC0RRECTING CA
PABILITIES)J ; 71J ン氏等の「
マルチプロセッサシステムにおいてシステム制御ユニッ
トを用いて通信要求を仲裁する方法及び手段(MET)
IOD AND MEANS FORARBITRAT
INGCOMMUNICATrON REQUESTS
USINGA SYSTEM C0NTR0LUNI
T IN A MULTI−PROCESSORSYS
TEM)J ;チナズワミー氏等の[マルチプロセッ
サシステムにおいてシステムユニット間のデータトラン
ザクションに対するモジュール式クロスバ−相互接続ネ
ットワーク(MODULARCRO3SBARINTE
RCONNECTIONNETWORK FORDAT
A TRANSACTIONS BETWEEN SY
STEMUN[TS IN A M[JLTIPROC
:ESSORSYSTEM)J ;ポルジン氏等の[
入力/出カニニットとマルチプロセッサシステムのシス
テム制御ユニットとをインターフェイスする方法及び装
置(MET)IOD AND APPARA−TUS
FORINTERFACING A SYSYTEM
C0NTR0L UNITFORA MULTI−PR
OCESSORSYSYTEM WITI−1rNPI
JTloUTPUT UNITS)J ;ガグリアー
ド氏等の[マルチプロセッサシステムのシステム制御ユ
ニットとシステムメインメモリとをインターフェイスす
る手段ニ用イルメモリ構成(MEMORY C0NFI
GURATIONFORUSE WIT)I MEAN
S FORINTERFA(jNG A 5YSTEN
CONTROL UNIT FORA MULTI−P
ROCESSORSYSTEMWITHTHE SYS
TEM MAIN MEMORY) J ;そしてガ
グリアード氏等の[システムモジュール間のDRAM制
御信号のエラーチエツクのための方法及び手段(トラE
THOD AND MEANS FORERRO
RCHECKING OF DRA?慴−CONT
ROL 5IGNALS BETWEEN SYSTE
M MODLILES)J 。
本発明は、一般に、デジタルコンピュータに係り、より
詳細には、デジタルコンピュータにおいて多数の命令を
実行する前にこれらの命令を予め処理する間にデータの
依存性を分析するシステムに係る。特に、本発明は、可
変長さのコンプレックス命令セット(CIS)アーキテ
クチ→を用いてバイブライン式デジタルコンピュータシ
ステムで多数の命令を予め処理することに係る。
詳細には、デジタルコンピュータにおいて多数の命令を
実行する前にこれらの命令を予め処理する間にデータの
依存性を分析するシステムに係る。特に、本発明は、可
変長さのコンプレックス命令セット(CIS)アーキテ
クチ→を用いてバイブライン式デジタルコンピュータシ
ステムで多数の命令を予め処理することに係る。
従来の技術
命令の予めの処理は、非常に多数の命令の実行をスピー
ドアップするためにデジタルコンピュータにおいて一般
に予想されることである。予めの処理動作は、典型的に
、命令を記憶するメモリと命令を実行する実行ユニット
との間に挿入された命令ユニットによって行なわれる。
ドアップするためにデジタルコンピュータにおいて一般
に予想されることである。予めの処理動作は、典型的に
、命令を記憶するメモリと命令を実行する実行ユニット
との間に挿入された命令ユニットによって行なわれる。
予めの処理動作には、例えば、各々の命令が実行ユニッ
トにロードされるときにオペランドを容易に入手できる
ように次々の命令におけるオペランド指定子によって識
別されたオペランドを予めフェッチすることを含む。命
令ユニットは、現在命令が実行ユニットによって実行さ
れている間にその後の命令に対して予めの処理動作を実
行し、それにより、所与のシーケンスの命令に対する全
処理時間を短縮する。
トにロードされるときにオペランドを容易に入手できる
ように次々の命令におけるオペランド指定子によって識
別されたオペランドを予めフェッチすることを含む。命
令ユニットは、現在命令が実行ユニットによって実行さ
れている間にその後の命令に対して予めの処理動作を実
行し、それにより、所与のシーケンスの命令に対する全
処理時間を短縮する。
命令の予めの処理は、命令によって必要とされるが命令
ユニットによってまだ完全に実行されていない記憶位置
の内容を命令ユニットが変更するときに「データ依存性
Jの問題を招くことがある。命令の実行中にレジスタの
内容を潜在的に変えるのがデータ依存性の問題のみであ
るときには、その同じレジスタが次の命令の予めの処理
のために予めの処理ユニットによって読み取られる前に
、レジスタポインタを単に実行ユニットに通すだけで問
題を実行ユニットまでデファーすることができる。従っ
て、レジスタの内容は、命令の予めの処理中には読み取
られず、その命令の実行中に読み取られる。
ユニットによってまだ完全に実行されていない記憶位置
の内容を命令ユニットが変更するときに「データ依存性
Jの問題を招くことがある。命令の実行中にレジスタの
内容を潜在的に変えるのがデータ依存性の問題のみであ
るときには、その同じレジスタが次の命令の予めの処理
のために予めの処理ユニットによって読み取られる前に
、レジスタポインタを単に実行ユニットに通すだけで問
題を実行ユニットまでデファーすることができる。従っ
て、レジスタの内容は、命令の予めの処理中には読み取
られず、その命令の実行中に読み取られる。
然し乍ら1間接もしくはデフアートアドレシング中のよ
うに、レジスタを用いてメモリアドレスを発生するとき
には、命令を効果的に予め処理するのに、その予めの処
理中にレジスタをアクセスしそして時には変更すること
が必要である。従って、データ依存性の問題は、まだ完
全に実行されていない命令に続いて多数の命令によって
識別された多数の種々のレジスタの内容を変更する可能
性をもたらすように多数の命令が予め処理されるときに
特に顕著なものとなる。まだ完全に実行されていない手
前の命令によってレジスタの内容が変更される前にその
レジスタを読み取ってメモリアドレスを発生する命令を
予め処理することによりレジスタの内容を早期に変更す
ることが必要とされる。予め処理の読み取り動作がレジ
スタの内容を変更する自動増加又は自動減少機能を含む
ときには、若干具なるが同等に重大なデータ依存性の問
題が生じる。
うに、レジスタを用いてメモリアドレスを発生するとき
には、命令を効果的に予め処理するのに、その予めの処
理中にレジスタをアクセスしそして時には変更すること
が必要である。従って、データ依存性の問題は、まだ完
全に実行されていない命令に続いて多数の命令によって
識別された多数の種々のレジスタの内容を変更する可能
性をもたらすように多数の命令が予め処理されるときに
特に顕著なものとなる。まだ完全に実行されていない手
前の命令によってレジスタの内容が変更される前にその
レジスタを読み取ってメモリアドレスを発生する命令を
予め処理することによりレジスタの内容を早期に変更す
ることが必要とされる。予め処理の読み取り動作がレジ
スタの内容を変更する自動増加又は自動減少機能を含む
ときには、若干具なるが同等に重大なデータ依存性の問
題が生じる。
「自動増加」及び「自動減少」は、テーブル又はアレイ
の順次エレメントを介してレジスタを自動的にステップ
するための内蔵ハードウェアを含むデジタルコンピュー
タのアドレッシングモードである。従って、レジスタの
内容は、常にそれがテーブルの次の順次エレメントを指
すように一連のアドレスによってステップされる。レジ
スタは、データ形式に基づいて、ひいては、オペランド
の長さが1バイトであるか2バイトであるか4バイトで
あるか又は8バイトであるかに基づいてl、2.4又は
8だけ増加又は減少される。自動増加モードにおいては
、レジスタの内容がオペランドのアドレスとして使用さ
れた後に増加され、自動減少モードにおいては、レジス
タの内容がオペランドのアドレスとして使用される前に
減少される。
の順次エレメントを介してレジスタを自動的にステップ
するための内蔵ハードウェアを含むデジタルコンピュー
タのアドレッシングモードである。従って、レジスタの
内容は、常にそれがテーブルの次の順次エレメントを指
すように一連のアドレスによってステップされる。レジ
スタは、データ形式に基づいて、ひいては、オペランド
の長さが1バイトであるか2バイトであるか4バイトで
あるか又は8バイトであるかに基づいてl、2.4又は
8だけ増加又は減少される。自動増加モードにおいては
、レジスタの内容がオペランドのアドレスとして使用さ
れた後に増加され、自動減少モードにおいては、レジス
タの内容がオペランドのアドレスとして使用される前に
減少される。
発明の構成
命令デコーダ、命令実行ユニット及び多数の汎用レジス
タを有するデジタルコンピュータで多数の命令を実行す
る前にこれらの命令を予め処理する方法であって、上記
汎用レジスタは上記命令の予めの処理中にメモリアドレ
スを発生するために読み取られ、上記方法は、 l)現在命令の予めの処理を回避して汎用レジスタを読
み取り、手前の命令による上記レジスタの内容の変更前
にメモリアドレスを発生することを含み、これは、a)
上記現在命令の手前にある複数のデコードされているが
まだ実行されていない命令の少なくとも1つによって内
容を変更すべき各汎用レジスタごとにセットされたビッ
トを有する複合書き込みマスクを発生し、そしてb)上
記現在命令によって読み取られるべき汎用レジスタが上
記書き込みマスクにおいてセットされたビットを有する
レジスタであるときに上記現在命令の処理を停止するこ
とによって行なわれ、及び/又は 2)現在命令の予めの処理を回避して手前の命令により
読み取られた汎用レジスタの内容を変更することを含み
、これは、a)上記現在命令の手前にある複数のデコー
ドされているがまだ実行されていない命令の少なくとも
1つによって読み取られるべき各汎用レジスタごとにセ
ットされたビットを有する複合読み取りマスクを発生し
、そしてb)上記現在命令によって内容が変更されるべ
き汎用レジスタが上記読み取りマスクにおいてセットさ
れたビットを有するレジスタであるときに上記現在命令
の処理を停止することによって行なうことを特徴とする
方法が提供される。
タを有するデジタルコンピュータで多数の命令を実行す
る前にこれらの命令を予め処理する方法であって、上記
汎用レジスタは上記命令の予めの処理中にメモリアドレ
スを発生するために読み取られ、上記方法は、 l)現在命令の予めの処理を回避して汎用レジスタを読
み取り、手前の命令による上記レジスタの内容の変更前
にメモリアドレスを発生することを含み、これは、a)
上記現在命令の手前にある複数のデコードされているが
まだ実行されていない命令の少なくとも1つによって内
容を変更すべき各汎用レジスタごとにセットされたビッ
トを有する複合書き込みマスクを発生し、そしてb)上
記現在命令によって読み取られるべき汎用レジスタが上
記書き込みマスクにおいてセットされたビットを有する
レジスタであるときに上記現在命令の処理を停止するこ
とによって行なわれ、及び/又は 2)現在命令の予めの処理を回避して手前の命令により
読み取られた汎用レジスタの内容を変更することを含み
、これは、a)上記現在命令の手前にある複数のデコー
ドされているがまだ実行されていない命令の少なくとも
1つによって読み取られるべき各汎用レジスタごとにセ
ットされたビットを有する複合読み取りマスクを発生し
、そしてb)上記現在命令によって内容が変更されるべ
き汎用レジスタが上記読み取りマスクにおいてセットさ
れたビットを有するレジスタであるときに上記現在命令
の処理を停止することによって行なうことを特徴とする
方法が提供される。
2つの特定のデータ依存性の問題及び本発明によるそれ
らの解決策を次の例によって説明する。
らの解決策を次の例によって説明する。
ケースl:命令は汎用レジスタ(GPR)を用いてメモ
リをアドレスし、そのGPRの内容を、既にデコードさ
れているがまだ実行されていない命令を実行することに
よって変更する。この問題は、次の命令の対によって例
示する。
リをアドレスし、そのGPRの内容を、既にデコードさ
れているがまだ実行されていない命令を実行することに
よって変更する。この問題は、次の命令の対によって例
示する。
MOVAL X RO
ADDL3 (RO)、R1,R2
第1の命令の実行により、ラベルXにより指定されたロ
ングワードアドレスがレジスタROに移動される。第2
の命令の実行により、レジスタROのアドレスにおける
内容がレジスタR1の内容に加えられ、その和がレジス
タR2に記憶される。
ングワードアドレスがレジスタROに移動される。第2
の命令の実行により、レジスタROのアドレスにおける
内容がレジスタR1の内容に加えられ、その和がレジス
タR2に記憶される。
手前の゛MOVAL’命令の結果がレジスタROに記憶
される前に“ADDL3’命令のROオペランドがフェ
ッチされたときがレジスタ競合の瞬間となる。レジスタ
競合のこのケースを検出するために、各々のデコードさ
れた命令ごとに書き込みマスクを発生し、その命令の実
行によって内容が変更されたレジスタがもしあればそれ
を指示する。デコードされているがまだ実行されていな
い全ての命令に対する書き込みマスクが待ち行列に入れ
られ、これを用いて、このような全ての命令に対する複
合書き込みマスクが形成される。次いで、GPRのデー
タを用いてメモリアドレスを発生する命令の予めの処理
中に、既にデコードされているがまだ実行されていない
(即ち、リタイアされていない)命令に対する書き込み
マスクが検査されて、オペランドがフェッチされたとこ
ろのアドレスを含むGPRが、手前の命令によって内容
を変更すべきレジスタとして書き込みマスクによって識
別されたレジスタであるがどうかの判断がなされる。そ
の応答が肯定である場合には、レジスタの競合がもはや
存在しなくなるまでフェッチ動作が停止される。
される前に“ADDL3’命令のROオペランドがフェ
ッチされたときがレジスタ競合の瞬間となる。レジスタ
競合のこのケースを検出するために、各々のデコードさ
れた命令ごとに書き込みマスクを発生し、その命令の実
行によって内容が変更されたレジスタがもしあればそれ
を指示する。デコードされているがまだ実行されていな
い全ての命令に対する書き込みマスクが待ち行列に入れ
られ、これを用いて、このような全ての命令に対する複
合書き込みマスクが形成される。次いで、GPRのデー
タを用いてメモリアドレスを発生する命令の予めの処理
中に、既にデコードされているがまだ実行されていない
(即ち、リタイアされていない)命令に対する書き込み
マスクが検査されて、オペランドがフェッチされたとこ
ろのアドレスを含むGPRが、手前の命令によって内容
を変更すべきレジスタとして書き込みマスクによって識
別されたレジスタであるがどうかの判断がなされる。そ
の応答が肯定である場合には、レジスタの競合がもはや
存在しなくなるまでフェッチ動作が停止される。
この特定例において、 ’MOVAL’ 命令は、(0
000000000000012)の書き込みマスクを
有し、これは、15個のGPRの各々に対して各ビット
位置を含んでおり、最下位のビット位置は、 “MOV
AL”命令がレジスタROの内容を変更することを指示
するためにセットされる。 ’ADDL3’ 命令のオ
ペランドのフェッチ中には、レジスタROの内容が必要
とされ、それ故、その手前の゛MOVAL’命令の書き
込みマスクの最下位ビット位置が検査され、このビット
位置はセットされているから、″MOVAL’命令の実
行が完了するまでフェッチが停止される。
000000000000012)の書き込みマスクを
有し、これは、15個のGPRの各々に対して各ビット
位置を含んでおり、最下位のビット位置は、 “MOV
AL”命令がレジスタROの内容を変更することを指示
するためにセットされる。 ’ADDL3’ 命令のオ
ペランドのフェッチ中には、レジスタROの内容が必要
とされ、それ故、その手前の゛MOVAL’命令の書き
込みマスクの最下位ビット位置が検査され、このビット
位置はセットされているから、″MOVAL’命令の実
行が完了するまでフェッチが停止される。
この停止は、その命令の実行が完了した際にマスク待ち
行列からの゛MOVAL’命令に対して書き込みマスク
を除去することにより最下位ビットがクリアされたとき
に終了される。
行列からの゛MOVAL’命令に対して書き込みマスク
を除去することにより最下位ビットがクリアされたとき
に終了される。
ケース2:命令に対するオペランドのフェッチにより、
メモリアドレスの発生に用いるGPRの内容を変更し、
既にデコードされているがまだ実行されていない命令の
実行によりそのGPRの内容を読み取る。この問題は、
次の命令対によって説明する。
メモリアドレスの発生に用いるGPRの内容を変更し、
既にデコードされているがまだ実行されていない命令の
実行によりそのGPRの内容を読み取る。この問題は、
次の命令対によって説明する。
ADDL R3,RO,R4
MOVL (RO)+、R1
この例では、(RO)後の“+′符号によりレジスタR
Oの内容が自動増加される。この自動増加がレジスタR
Oの内容を変更するものでありそしてこれが手前のAD
DL’ 命令の実行中にこれら内容が読み取られる前に
行なわれる場合にはレジスタ競合の瞬間となる。このケ
ースのレジスタ競合を回避するために、デコードされた
各命令ごとに読み取りマスクが発生され、命令の実行中
に内容が読み取られるレジスタがもしあればこれを指示
する。デコードされているがまだ実行されていない全て
の命令に対する読み取りマスクを待ち行列に入れ、そし
てこれを用いて、このような全ての命令に対する複合読
み取りマスクを形成する。次いで、フェッチ中にGPR
の内容が変更される(例えば、GPRの自動増加又は自
動減少)命令に対してオペランドをフェッチする間に、
まだ完全に実行されていない(即ち、リタイアされてい
ない)手前のデコードされた命令に対する読み取りマス
クが検査されて、内容を変更すべきGPRが、その手前
の命令の実行中に読み取られるべきレジスタとして読み
取りマスクによって識別されたレジスタであるかどうか
の判断がなされる。
Oの内容が自動増加される。この自動増加がレジスタR
Oの内容を変更するものでありそしてこれが手前のAD
DL’ 命令の実行中にこれら内容が読み取られる前に
行なわれる場合にはレジスタ競合の瞬間となる。このケ
ースのレジスタ競合を回避するために、デコードされた
各命令ごとに読み取りマスクが発生され、命令の実行中
に内容が読み取られるレジスタがもしあればこれを指示
する。デコードされているがまだ実行されていない全て
の命令に対する読み取りマスクを待ち行列に入れ、そし
てこれを用いて、このような全ての命令に対する複合読
み取りマスクを形成する。次いで、フェッチ中にGPR
の内容が変更される(例えば、GPRの自動増加又は自
動減少)命令に対してオペランドをフェッチする間に、
まだ完全に実行されていない(即ち、リタイアされてい
ない)手前のデコードされた命令に対する読み取りマス
クが検査されて、内容を変更すべきGPRが、その手前
の命令の実行中に読み取られるべきレジスタとして読み
取りマスクによって識別されたレジスタであるかどうか
の判断がなされる。
その応答が肯定である場合には、レジスタ競合がもはや
存在しなくなるまでフェッチが停止される。
存在しなくなるまでフェッチが停止される。
上記の例において、 ’ADDL’ 命令は、実行ユニ
ットがレジスタR3及びROの内容を読み取ることを指
示する(0000000000010012)の読み取
りマスクを有している。 1M0VEL″命令に対する
オペランドのフェッチ中に、レジスタROの内容が自動
増加されるべきであり、それ故、手前の“ADDL’
命令に対する読み取りマスクの最下位ビット位置が検査
され、このビット位置はセットされているから、 ’A
DDL’ 命令の実行が完了されるまでフェッチが停止
される。この停止は、その命令の実行が完了した際にマ
スク待ち行列からの’A D D L’ 命令に対する
読み取りマスクを除去することにより最下位ビットがク
リアされたときに終了する。
ットがレジスタR3及びROの内容を読み取ることを指
示する(0000000000010012)の読み取
りマスクを有している。 1M0VEL″命令に対する
オペランドのフェッチ中に、レジスタROの内容が自動
増加されるべきであり、それ故、手前の“ADDL’
命令に対する読み取りマスクの最下位ビット位置が検査
され、このビット位置はセットされているから、 ’A
DDL’ 命令の実行が完了されるまでフェッチが停止
される。この停止は、その命令の実行が完了した際にマ
スク待ち行列からの’A D D L’ 命令に対する
読み取りマスクを除去することにより最下位ビットがク
リアされたときに終了する。
上記した2つの例示的なケースから明らかなように、読
み取り及び書き込みマスクを用いて、メモリアドレスを
発生するようにレジスタの読み取りが回避されるが、こ
れは、(1)手前の命令によりそのレジスタの内容を変
更する前か或いは(2)その後の命令によりそのレジス
タの内容を変更した後に行なわれる。第1のケースにつ
いては、その後の命令によるレジスタの、その手前の命
令がそのレジスタに書き込みを行なうまで停止される。
み取り及び書き込みマスクを用いて、メモリアドレスを
発生するようにレジスタの読み取りが回避されるが、こ
れは、(1)手前の命令によりそのレジスタの内容を変
更する前か或いは(2)その後の命令によりそのレジス
タの内容を変更した後に行なわれる。第1のケースにつ
いては、その後の命令によるレジスタの、その手前の命
令がそのレジスタに書き込みを行なうまで停止される。
この目的で書き込みマスクが用いられる。
第2のケースにおいては、その後の命令によるレジスタ
の内容の変更が、その手前の命令がそのレジスタを読み
取るまで停止される。この目的のために読み取りマスク
が用いられる。即ち、マスクを形容詞的に表現したもの
は、常に、手前の命令によって実行されるべきオペレー
ション(読み取り又は書き込み)を指す。
の内容の変更が、その手前の命令がそのレジスタを読み
取るまで停止される。この目的のために読み取りマスク
が用いられる。即ち、マスクを形容詞的に表現したもの
は、常に、手前の命令によって実行されるべきオペレー
ション(読み取り又は書き込み)を指す。
実施例
本発明の他の目的及び効果は、添付図面を参照した以下
の詳細な説明から明らかとなろう。
の詳細な説明から明らかとなろう。
本発明は、種々の変更や修正がなされるが、その特定の
実施例を一例として添付図面に図示して以下に詳細に説
明する。然し乍ら、本発明は、ここに開示する特定の形
態に限定されるものではなく、特許請求の範囲に述べる
本発明の精神及び範囲内に入る全ての変更や等動物や代
替物を全て網羅するものとすることを理解されたい。
実施例を一例として添付図面に図示して以下に詳細に説
明する。然し乍ら、本発明は、ここに開示する特定の形
態に限定されるものではなく、特許請求の範囲に述べる
本発明の精神及び範囲内に入る全ての変更や等動物や代
替物を全て網羅するものとすることを理解されたい。
添付図面の特に第1図を参照すれば、メインメモリ10
と、メモリーCPUインターフェイスユニット11と、
命令ユニット12及び実行ユニット13より成る少なく
とも1つのCPUとを備えたデジタルコンピュータシス
テムの一部分が図示されている。このようなシステムで
は、メインメモリlOを共有することにより更に別のC
PUを使用できることを理解されたい。データと、この
データを処理するための命令は、メインメモリ10内の
アドレス可能な記憶位置に記憶される。
と、メモリーCPUインターフェイスユニット11と、
命令ユニット12及び実行ユニット13より成る少なく
とも1つのCPUとを備えたデジタルコンピュータシス
テムの一部分が図示されている。このようなシステムで
は、メインメモリlOを共有することにより更に別のC
PUを使用できることを理解されたい。データと、この
データを処理するための命令は、メインメモリ10内の
アドレス可能な記憶位置に記憶される。
命令は、CPUによって実行されるべきオペレーション
をコード化形態で指定するオペレーションコード(OP
コード)と、オペランドを探索するのに必要な情報を与
える指定子によって識別されるオペランドとを含んでい
る。
をコード化形態で指定するオペレーションコード(OP
コード)と、オペランドを探索するのに必要な情報を与
える指定子によって識別されるオペランドとを含んでい
る。
個々の命令の実行は、多数の小さなタスクに分割される
。これらのタスクは、その目的のために最適化された専
用の個々の独立したファンクションユニットによって実
行される。
。これらのタスクは、その目的のために最適化された専
用の個々の独立したファンクションユニットによって実
行される。
各命令は、最終的に異なったオペレーションを実行する
が、各命令が分゛割されたところの多数の小さなタスク
は、全ての命令に対して共通である。一般に、命令の実
行中には、次のステップ、即ち命令のフェッチ、命令の
デコード、オペランドのフェッチ、実行及び結果の記憶
が実行される。
が、各命令が分゛割されたところの多数の小さなタスク
は、全ての命令に対して共通である。一般に、命令の実
行中には、次のステップ、即ち命令のフェッチ、命令の
デコード、オペランドのフェッチ、実行及び結果の記憶
が実行される。
従って、専用のハードウェア段を用いることにより、こ
れらのステップをパイプラインオペレーションにおいて
オーバーラツプさせて、命令の全スループットを増加す
ることができる。
れらのステップをパイプラインオペレーションにおいて
オーバーラツプさせて、命令の全スループットを増加す
ることができる。
パイプラインを通るデータ路は、各パイプライン段の結
果を次のパイプライン段へ転送するための各組のレジス
タを備えている。これらの転送レジスタは、共通のシス
テムクロックに応答してクロックされる。例えば、第1
のクロックサイクル中に、命令フェッチ専用のハードウ
ェアによって第1の命令がフェッチされる。第2のクロ
ックサイクル中に、そのフェッチされた命令が転送され
そして命令デコードハードウェアによってデコードされ
るが、同時に、次の命令が命令フェッチハードウェアに
よってフェッチされる。第3のクロックサイクル中に、
各命令がパイプラインの次の段にシフトされ、新たな命
令がフェッチされる。
果を次のパイプライン段へ転送するための各組のレジス
タを備えている。これらの転送レジスタは、共通のシス
テムクロックに応答してクロックされる。例えば、第1
のクロックサイクル中に、命令フェッチ専用のハードウ
ェアによって第1の命令がフェッチされる。第2のクロ
ックサイクル中に、そのフェッチされた命令が転送され
そして命令デコードハードウェアによってデコードされ
るが、同時に、次の命令が命令フェッチハードウェアに
よってフェッチされる。第3のクロックサイクル中に、
各命令がパイプラインの次の段にシフトされ、新たな命
令がフェッチされる。
従って、パイプラインがいっばいになった後に、各クロ
ックサイクルの終わりに命令が完全に実行される。
ックサイクルの終わりに命令が完全に実行される。
このプロセスは、製造環境における組み立てラインに類
似している。各作業者は、彼又は彼女の作業段を通過す
る各製品に対して1つの専用の作業を実行する。各作業
が実行されるにつれて、製品が段々完成へと近づいてい
く。最終段においては、作業者が彼に指定された作業を
実行するたびに、完成した製品が組み立てラインから取
り出される。
似している。各作業者は、彼又は彼女の作業段を通過す
る各製品に対して1つの専用の作業を実行する。各作業
が実行されるにつれて、製品が段々完成へと近づいてい
く。最終段においては、作業者が彼に指定された作業を
実行するたびに、完成した製品が組み立てラインから取
り出される。
第1図に示された特定のシステムでは、インターフェイ
スユニット11は、平均ベースで命令及び実行ユニット
12及び13をイネーブルしてメインメモリ10のアク
セス時間より速いレートでデータを処理できるようにす
るメインキャッシュ14を備えている。このキャッシュ
■4は、データエレメントの選択された所定のブロック
を記憶する手段と、命令ユニット12から変換バッファ
15を経て要求を受け取って指定のデータエレメントを
アクセスするための手段と、データエレメントがキャッ
シュに記憶されたブロックにあるかどうかをチエツクす
るための手段と、指定のデータエレメントを含むブロッ
クに対するデータがこのように記憶されないときに動作
してメインメモリlOから指定のデータブロックを読み
取ると共に、そのデータブロックをキャッシュ14に記
憶するための手段とを備えている。換言すれば、キャッ
シュは、メインメモリへの「ウンイドウ」を形成し、命
令及び実行ユニットによって必要とされるであろうデー
タを含む。
スユニット11は、平均ベースで命令及び実行ユニット
12及び13をイネーブルしてメインメモリ10のアク
セス時間より速いレートでデータを処理できるようにす
るメインキャッシュ14を備えている。このキャッシュ
■4は、データエレメントの選択された所定のブロック
を記憶する手段と、命令ユニット12から変換バッファ
15を経て要求を受け取って指定のデータエレメントを
アクセスするための手段と、データエレメントがキャッ
シュに記憶されたブロックにあるかどうかをチエツクす
るための手段と、指定のデータエレメントを含むブロッ
クに対するデータがこのように記憶されないときに動作
してメインメモリlOから指定のデータブロックを読み
取ると共に、そのデータブロックをキャッシュ14に記
憶するための手段とを備えている。換言すれば、キャッ
シュは、メインメモリへの「ウンイドウ」を形成し、命
令及び実行ユニットによって必要とされるであろうデー
タを含む。
命令ユニット12又は実行ユニット13によって必要と
されるデータエレメントがキャッシュ14にないことが
分かると、データエレメントがメインメモリlOから得
られるが、プロセス中に、更に別のデータを含む全ブロ
ックがメインメモリ10から得られてキャッシュ14に
書き込まれる。
されるデータエレメントがキャッシュ14にないことが
分かると、データエレメントがメインメモリlOから得
られるが、プロセス中に、更に別のデータを含む全ブロ
ックがメインメモリ10から得られてキャッシュ14に
書き込まれる。
時間及びメモリスペースのローカリティの原理により、
命令及び実行ユニットが次にデータエレメントを所望す
るときには、このデータエレメントが既にアドレスされ
たデータエレメントを含むブロックに見つかる可能性が
非常に高くなる。従って、キャッシュ14は、命令及び
実行ユニット12及び13により要求されるデータエレ
メントを既に含む可能性が非常に高くなる。一般に、キ
ャッシュ14はメインメモリ10よりも相当に高いレー
トでアクセスされるので、メインメモリは、データ処理
システムの平均性能を著しく低下することなくキャッシ
ュ14よりも比例的にゆっくりとしたアクセス時間をも
つことができる。それ故、メインメモリlOは、低速で
且つ安価なメモリエレメントで構成することができる。
命令及び実行ユニットが次にデータエレメントを所望す
るときには、このデータエレメントが既にアドレスされ
たデータエレメントを含むブロックに見つかる可能性が
非常に高くなる。従って、キャッシュ14は、命令及び
実行ユニット12及び13により要求されるデータエレ
メントを既に含む可能性が非常に高くなる。一般に、キ
ャッシュ14はメインメモリ10よりも相当に高いレー
トでアクセスされるので、メインメモリは、データ処理
システムの平均性能を著しく低下することなくキャッシ
ュ14よりも比例的にゆっくりとしたアクセス時間をも
つことができる。それ故、メインメモリlOは、低速で
且つ安価なメモリエレメントで構成することができる。
変換バッファ15は、最も最近使用された仮想/物理ア
ドレス変換を記憶する高速連想メモリである。仮想メモ
リシステムにおいては、単一仮想アドレスを参照するこ
とにより、所望の情報が得られるようになるまでに多数
のメモリ参照を行なうことができる。然し乍ら、変換バ
ッファ15を使用する場合には、変換は単に変換バッフ
ァ15に「ヒツト」を見出すことのみになる。
ドレス変換を記憶する高速連想メモリである。仮想メモ
リシステムにおいては、単一仮想アドレスを参照するこ
とにより、所望の情報が得られるようになるまでに多数
のメモリ参照を行なうことができる。然し乍ら、変換バ
ッファ15を使用する場合には、変換は単に変換バッフ
ァ15に「ヒツト」を見出すことのみになる。
コマンド及び入力データをシステムに送信すると共にシ
ステムから出力データを受け取るためにメインメモリl
O及びメインキャッシュ14にはI10バス16が接続
されている。
ステムから出力データを受け取るためにメインメモリl
O及びメインキャッシュ14にはI10バス16が接続
されている。
命令ユニット12は、プログラムカウンタ!7及び命令
キャッシュ】8と、メインキャッシュ14から命令をフ
ェッチするための命令バッファ19とを備えている。バ
ッファ19から新たな命令が命令デコーダ20へ供給さ
れ、該デコーダはOPコード及び指定子の両方をデコー
ドする。オペランド処理ユニット(OPU)21は、指
定のオペランドをフェッチし、それらを実行ユニット1
3に供給する。
キャッシュ】8と、メインキャッシュ14から命令をフ
ェッチするための命令バッファ19とを備えている。バ
ッファ19から新たな命令が命令デコーダ20へ供給さ
れ、該デコーダはOPコード及び指定子の両方をデコー
ドする。オペランド処理ユニット(OPU)21は、指
定のオペランドをフェッチし、それらを実行ユニット1
3に供給する。
プログラムカウンタ17は、適当な命令をキャッシュ1
4から検索できるように命令ユニット12に維持される
。プログラムカウンタI7は、メインメモリlO及びキ
ャッシュ14の物理メモリ位置ではなくて仮想メモリ位
置を使用するのが好ましい。従って、プログラムカウン
タ17の仮想アドレスをメインメモリ10の物理アドレ
スに変換しなければ、命令を検索できない。従って、プ
ログラムカウンタ17の内容はインターフェイスユニッ
ト11に転送され、変換バッファI5がアドレス変換を
行なう。命令は、変換されたアドレスを用いてキャッシ
ュ14内の物理メモリ位置から検索される。キャッシュ
14は、データ返送ラインを経て命令デコーダ20へ命
令を供給する。
4から検索できるように命令ユニット12に維持される
。プログラムカウンタI7は、メインメモリlO及びキ
ャッシュ14の物理メモリ位置ではなくて仮想メモリ位
置を使用するのが好ましい。従って、プログラムカウン
タ17の仮想アドレスをメインメモリ10の物理アドレ
スに変換しなければ、命令を検索できない。従って、プ
ログラムカウンタ17の内容はインターフェイスユニッ
ト11に転送され、変換バッファI5がアドレス変換を
行なう。命令は、変換されたアドレスを用いてキャッシ
ュ14内の物理メモリ位置から検索される。キャッシュ
14は、データ返送ラインを経て命令デコーダ20へ命
令を供給する。
キャッシュ14及び変換バッファ15の一般的な構成及
び動作は、デジタルイクイップメント社発行の[コンピ
ュータプログラミング及びアーキテクチャ、ザV A
X −11(Computer Programa+i
ngand Architecture、 The V
AX−11)Jの第351−368頁(1980年)に
掲載されたレビー及びエフハウス二組の第11章に更に
説明されている。
び動作は、デジタルイクイップメント社発行の[コンピ
ュータプログラミング及びアーキテクチャ、ザV A
X −11(Computer Programa+i
ngand Architecture、 The V
AX−11)Jの第351−368頁(1980年)に
掲載されたレビー及びエフハウス二組の第11章に更に
説明されている。
又、0PU21は仮想アドレスを発生する。
特に、0PU21は、メモリソース(読み取り)オペラ
ンド及び行き先(書き込み)オペランドに対する仮想ア
ドレスを発生する。少なくともメモリ読み取りオペラン
ドについては、0PU21はこれらの仮想アドレスをイ
ンターフェイスユニット11に供給し、そこで物理アド
レスに変換される。−次いで、キャッシュ14の物理メ
モリ位置がアクセスされて、メモリソースオペランドに
対するオペランドがフェッチされる。
ンド及び行き先(書き込み)オペランドに対する仮想ア
ドレスを発生する。少なくともメモリ読み取りオペラン
ドについては、0PU21はこれらの仮想アドレスをイ
ンターフェイスユニット11に供給し、そこで物理アド
レスに変換される。−次いで、キャッシュ14の物理メ
モリ位置がアクセスされて、メモリソースオペランドに
対するオペランドがフェッチされる。
各命令において、第1バイトはOPコードを含み、次に
続くバイトは、デコードされるべきオベランド指定子で
ある。各指定子の第1バイトは、その指定子に対するア
ドレッシングモードを指示する。このバイトは、通常、
手部分に分割され、一方の半分はアドレッシングモード
を指定しそして他方の半分はアドレッシングに使用すべ
きレジスタを指定する。
続くバイトは、デコードされるべきオベランド指定子で
ある。各指定子の第1バイトは、その指定子に対するア
ドレッシングモードを指示する。このバイトは、通常、
手部分に分割され、一方の半分はアドレッシングモード
を指定しそして他方の半分はアドレッシングに使用すべ
きレジスタを指定する。
命令の処理における第1ステツプは、命令の[OPコー
ド」部分をデコードすることである。
ド」部分をデコードすることである。
各命令の第1部分は、命令において実行すべきオペレー
ションを指定するそのOPコードより成る。
ションを指定するそのOPコードより成る。
デコードは、命令デコーダ20内のテーブルルックアッ
プ技術を用いて行なわれる。命令デコーダは、ルックア
ップテーブルにおいて命令を実行するためのマイクロコ
ードスタートアドレスを見出し、そのスタートアドレス
を実行ユニット13に通す。その後、実行ユニットは、
その指示されたスタートアドレスで始まる予め記憶され
たマイクロコードを実行することにより指定子のオペレ
ーションを実行する。又、デコーダは、ソースオペラン
ド及び行き先オペランド指定子が命令内のどこで生じる
かを判断し、これらの指定子を命令実行前に予め処理す
るために0PU21に通す。
プ技術を用いて行なわれる。命令デコーダは、ルックア
ップテーブルにおいて命令を実行するためのマイクロコ
ードスタートアドレスを見出し、そのスタートアドレス
を実行ユニット13に通す。その後、実行ユニットは、
その指示されたスタートアドレスで始まる予め記憶され
たマイクロコードを実行することにより指定子のオペレ
ーションを実行する。又、デコーダは、ソースオペラン
ド及び行き先オペランド指定子が命令内のどこで生じる
かを判断し、これらの指定子を命令実行前に予め処理す
るために0PU21に通す。
ルックアップテーブルは、各々多数の入力を有する多ブ
ロックのアレイとして編成される。各入力は、そのブロ
ック及び入力インデックスによってアドレスすることが
できる。oPコードバイトはブロックをアドレスし、実
行ポイントカウンタからのポインタ(命令における現在
指定子の位置を指示する)がブロックにおける特定の入
力を選択する。入力は、各指定子ごとに、データコンチ
クスト(バイト、ワード等)、データ形式(アドレス、
整数等)及びアクセスモード(読み取り、書き込み、変
更等)を指定する。
ロックのアレイとして編成される。各入力は、そのブロ
ック及び入力インデックスによってアドレスすることが
できる。oPコードバイトはブロックをアドレスし、実
行ポイントカウンタからのポインタ(命令における現在
指定子の位置を指示する)がブロックにおける特定の入
力を選択する。入力は、各指定子ごとに、データコンチ
クスト(バイト、ワード等)、データ形式(アドレス、
整数等)及びアクセスモード(読み取り、書き込み、変
更等)を指定する。
命令がデコードされた後に、0PU21は、オペランド
指定子を通し、それらの有効アドレスを計算し、このプ
ロセスは、GPRを読み取りそしておそらく自動増加又
は自動減少によってGPRの内容を変更することを含む
。OPUは、これらの有効アドレスをインターフェイス
ユニットllに通し、該インターフェイスユニットはオ
ペランドデータ(読み取りの場合)を実行ユニット13
のソースリスト24に返送するか、又は有効アドレスを
物理書き込みアドレスに変換して、実行ユニット(書き
込みの場合)からのデータをデータを待機するか或いは
その両方(変更の場合)を行なう。
指定子を通し、それらの有効アドレスを計算し、このプ
ロセスは、GPRを読み取りそしておそらく自動増加又
は自動減少によってGPRの内容を変更することを含む
。OPUは、これらの有効アドレスをインターフェイス
ユニットllに通し、該インターフェイスユニットはオ
ペランドデータ(読み取りの場合)を実行ユニット13
のソースリスト24に返送するか、又は有効アドレスを
物理書き込みアドレスに変換して、実行ユニット(書き
込みの場合)からのデータをデータを待機するか或いは
その両方(変更の場合)を行なう。
命令が実行ユニットに通されるたびに、命令ユニットは
、マイクロコードディスパッチアドレス及び1組のポイ
ンタを送信し、これは、(1)ソースオペランドを見出
すことのできる実行ユニットレジスタファイル内の位置
及び(2)結果を記憶すべき位置に対するものである。
、マイクロコードディスパッチアドレス及び1組のポイ
ンタを送信し、これは、(1)ソースオペランドを見出
すことのできる実行ユニットレジスタファイル内の位置
及び(2)結果を記憶すべき位置に対するものである。
実行ユニット内において、1組の待ち行列23は、マイ
クロコードディスパッチアドレスを記憶するためのフォ
ーク待ち行列と、ソース/オペランドの位置を記憶する
ためのソースポインタ待ち行列と、行き光位置を記憶す
るための行き先ポインタ待ち行列とを備えている。これ
ら待ち行列の各々は、多数の命令に対してデータを保持
することのできるFIFOバッファである。
クロコードディスパッチアドレスを記憶するためのフォ
ーク待ち行列と、ソース/オペランドの位置を記憶する
ためのソースポインタ待ち行列と、行き光位置を記憶す
るための行き先ポインタ待ち行列とを備えている。これ
ら待ち行列の各々は、多数の命令に対してデータを保持
することのできるFIFOバッファである。
又、実行ユニット13は、GPRのコピー及びソースオ
ペランドのリストを含むマルチボートレジスタファイル
であるソースリスト24を含んでいる。従って、ソース
ポインタ待ち行列の入力は、レジスタオペランドに対す
るGPR位置を指すか、又はメモリ及びリテラルオペラ
ンドに対するソース位置を指す。インターフェイスユニ
ット11及び命令ユニット12はソースリスト24に入
力を書き込み、そして実行ユニット13は、命令を実行
するために必要に応じてソースリストからオペランドを
読み取る。命令を実行するために、実行ユニット13は
、命令発生ユニット25と、マイクロコード実行ユニッ
ト26と、演算論理ユニット(ALU)27と、リタイ
アユニット28とを備えている。
ペランドのリストを含むマルチボートレジスタファイル
であるソースリスト24を含んでいる。従って、ソース
ポインタ待ち行列の入力は、レジスタオペランドに対す
るGPR位置を指すか、又はメモリ及びリテラルオペラ
ンドに対するソース位置を指す。インターフェイスユニ
ット11及び命令ユニット12はソースリスト24に入
力を書き込み、そして実行ユニット13は、命令を実行
するために必要に応じてソースリストからオペランドを
読み取る。命令を実行するために、実行ユニット13は
、命令発生ユニット25と、マイクロコード実行ユニッ
ト26と、演算論理ユニット(ALU)27と、リタイ
アユニット28とを備えている。
本発明は、パイプライン式プロセッサに特に有用である
。上記したように、パイプライン式プロセッサにおいて
は、プロセッサの命令フェッチハードウェアが1つの命
令をフェッチする間に、他のハードウェアが第2命令の
オペレーションコ−ドをデコードし、第3命令のオペラ
ンドをフェッチし、第4命令を実行しそして第5命令の
処理済みデータを記憶する。第2図は、次のような典型
的な命令に対するパイプラインを示している。
。上記したように、パイプライン式プロセッサにおいて
は、プロセッサの命令フェッチハードウェアが1つの命
令をフェッチする間に、他のハードウェアが第2命令の
オペレーションコ−ドをデコードし、第3命令のオペラ
ンドをフェッチし、第4命令を実行しそして第5命令の
処理済みデータを記憶する。第2図は、次のような典型
的な命令に対するパイプラインを示している。
ADDL3 RO,B’ l 2 (R1)、R2こ
れは、変位モードアドレッシングを用いたロングワード
加算である。
れは、変位モードアドレッシングを用いたロングワード
加算である。
この命令のパイプライン実行の第1段では、命令のプロ
グラムカウント(PC)が形成され、これは、通常、手
前の命令からプログラムカウンタを増加するか、又は分
岐命令のターゲットアドレスを用いることによって行な
われる。次いで、PCを用いることにより、パイプライ
ンの第2段において命令キャッシュ18がアクセスされ
る。
グラムカウント(PC)が形成され、これは、通常、手
前の命令からプログラムカウンタを増加するか、又は分
岐命令のターゲットアドレスを用いることによって行な
われる。次いで、PCを用いることにより、パイプライ
ンの第2段において命令キャッシュ18がアクセスされ
る。
パイプラインの第3段においては、命令データがキャッ
シュ18から得られ、これは命令デコーダ20によって
用いられるか又は命令バッファ19にロードされる。命
令デコーダ2oは、以下で詳細に述べるように、OPコ
ード及び3つの指定子を1つのサイクルにおいてデコー
ドする。R1の番号はバイト変位と共にデコードサイク
ルの終わりに0PIJ21へ送られる。
シュ18から得られ、これは命令デコーダ20によって
用いられるか又は命令バッファ19にロードされる。命
令デコーダ2oは、以下で詳細に述べるように、OPコ
ード及び3つの指定子を1つのサイクルにおいてデコー
ドする。R1の番号はバイト変位と共にデコードサイク
ルの終わりに0PIJ21へ送られる。
段4においては、RO及びR2の番号がポインタとして
待ち行列ユニット23へ送られる。又、オペランドユニ
ット21は、位置R1においてそのGPRレジスタファ
イルの内容を読み取り、その値を指定の変位(12)に
加えそしてそれにより得られたアドレスを、アドレス発
生段階の終わりに、OP読み取り要求と共にインターフ
ェイスユニット11の変換バッファ15へ送信する。又
、OPUは、第2オペランドに対して[ソースリスト」
待ち行列(第3図の24)の入力をリザーブするために
待ち行列ユニット23へ[ソースリストポインタ」を送
信する。
待ち行列ユニット23へ送られる。又、オペランドユニ
ット21は、位置R1においてそのGPRレジスタファ
イルの内容を読み取り、その値を指定の変位(12)に
加えそしてそれにより得られたアドレスを、アドレス発
生段階の終わりに、OP読み取り要求と共にインターフ
ェイスユニット11の変換バッファ15へ送信する。又
、OPUは、第2オペランドに対して[ソースリスト」
待ち行列(第3図の24)の入力をリザーブするために
待ち行列ユニット23へ[ソースリストポインタ」を送
信する。
段5において、インターフェイスユニット11は段4で
発生されたアドレスを実行のために選択する。変換バッ
ファ15を用いて、インターフェイスユニット11は、
アドレス変換段階1弓こ仮想アドレスを物理アドレスに
変換する。次いで、物理アドレスを用いて、パイプライ
ンの段6で読み取られたキャッシュ14をアドレスし、
データをソースリスト24へ返送する。
発生されたアドレスを実行のために選択する。変換バッ
ファ15を用いて、インターフェイスユニット11は、
アドレス変換段階1弓こ仮想アドレスを物理アドレスに
変換する。次いで、物理アドレスを用いて、パイプライ
ンの段6で読み取られたキャッシュ14をアドレスし、
データをソースリスト24へ返送する。
パイプラインの段7では、命令がALU27に発生され
、このALUは2つのオペランドを加算し、その結果を
リタイアユニット28に送信する。段4の間に、R1及
びR2に対するレジスタ番号と、メモリデータのソース
リスト位置に対するポインタとが実行ユニットに送られ
て、ポインタ待ち行列に記憶されている。次いで、キャ
ッシュ読み取り段の間に、実行ユニットはソースリスト
内の2つのソースオペランドの探索を開始している。こ
の特定例においては、ROのレジスタデータのみを見出
すが、この段階の終わりにはメモリデータが到達し、レ
ジスタファイルから読み出された無効データと取り換え
られる。従って、両方のオペランドが命令実行段におい
て得られる。
、このALUは2つのオペランドを加算し、その結果を
リタイアユニット28に送信する。段4の間に、R1及
びR2に対するレジスタ番号と、メモリデータのソース
リスト位置に対するポインタとが実行ユニットに送られ
て、ポインタ待ち行列に記憶されている。次いで、キャ
ッシュ読み取り段の間に、実行ユニットはソースリスト
内の2つのソースオペランドの探索を開始している。こ
の特定例においては、ROのレジスタデータのみを見出
すが、この段階の終わりにはメモリデータが到達し、レ
ジスタファイルから読み出された無効データと取り換え
られる。従って、両方のオペランドが命令実行段におい
て得られる。
パイプラインのレジスタ段8においては、結果として得
られたデータがリタイアユニット28においてリタイア
待ち行列の次の入力と対にされる。多数の機能実行ユニ
ットが同時にとジーとなることがあるが、1つのサイク
ルでリタイアできるのは1つの命令だけである。
られたデータがリタイアユニット28においてリタイア
待ち行列の次の入力と対にされる。多数の機能実行ユニ
ットが同時にとジーとなることがあるが、1つのサイク
ルでリタイアできるのは1つの命令だけである。
ここに示すパイプラインの最後の段9においては、実行
ユニット13及び命令ユニット12の両方においてレジ
スタファイルのGPR部分にデータが書き込まれる。命
令ユニット12の命令デコーダ20及び実行ユニット1
3の待ち行列23は、第3図に詳細に示されている。デ
コーダ20は、プログラムカウンタのためのデコーダ2
0aと、フォークテーブルRAM20bと、2つのソー
ス/オペランド指定しデコーダ20c及び20dと、行
き先オペランド指定しデコーダ20eと、レジスタオペ
ランドデコー゛ダ20fとを備えており、これらについ
ては以下で詳細に述べる。好ましい実施例においては、
これらのデコーダが密接に相互接続され、大きなコンプ
レックスデコードユニットに一体化される。これについ
ては、参考としてここに取り上げる「可変長さ命令アー
キテクチャにおける多数の指定子のデコード(Deco
d−ing Multiple 5pecifie
rs in a Variable Leng
thIn5truction Architectur
e)4に開示されている。
ユニット13及び命令ユニット12の両方においてレジ
スタファイルのGPR部分にデータが書き込まれる。命
令ユニット12の命令デコーダ20及び実行ユニット1
3の待ち行列23は、第3図に詳細に示されている。デ
コーダ20は、プログラムカウンタのためのデコーダ2
0aと、フォークテーブルRAM20bと、2つのソー
ス/オペランド指定しデコーダ20c及び20dと、行
き先オペランド指定しデコーダ20eと、レジスタオペ
ランドデコー゛ダ20fとを備えており、これらについ
ては以下で詳細に述べる。好ましい実施例においては、
これらのデコーダが密接に相互接続され、大きなコンプ
レックスデコードユニットに一体化される。これについ
ては、参考としてここに取り上げる「可変長さ命令アー
キテクチャにおける多数の指定子のデコード(Deco
d−ing Multiple 5pecifie
rs in a Variable Leng
thIn5truction Architectur
e)4に開示されている。
プログラムカウンタデコーダ20aの出力は、実行ユニ
ット13内のプログラムカウンタ待ち行列23aに記憶
される。RAM20bは、各命令のOPコードバイトの
みを受け取り、そのデータを用いて、テーブルからの「
フォーク」 (マイクロコード)ディスバッチアドレス
を選択する。このディスバッチアドレスは、命令の実行
に適したマイクロコードのスタートを識別し、実行ユニ
ット13内のフォーク待ち行列23bに記憶される。
ット13内のプログラムカウンタ待ち行列23aに記憶
される。RAM20bは、各命令のOPコードバイトの
みを受け取り、そのデータを用いて、テーブルからの「
フォーク」 (マイクロコード)ディスバッチアドレス
を選択する。このディスバッチアドレスは、命令の実行
に適したマイクロコードのスタートを識別し、実行ユニ
ット13内のフォーク待ち行列23bに記憶される。
4つのデコーダ20cm2Ofの各々は、命令バッファ
19からOPコードバイト及びオペランド指定子データ
を受け取る。デコーダ20c及び20dは2つのソース
オペランド指定子をデコードしてソースオペランドポイ
ンタを発生し、実行ユニットはこれを用いて2つのソー
スオペランドを探索することができる。これら2つのポ
インタは、実行ユニットにおいてソースポインタ待ち行
列23cに記憶される。行き先オペランド指定子はデコ
ーダ20eによってデコードされて行き先オペランドポ
インタを発生し、これは実行ユニット内の行き先ポイン
タ待ち行列23eに記憶される。
19からOPコードバイト及びオペランド指定子データ
を受け取る。デコーダ20c及び20dは2つのソース
オペランド指定子をデコードしてソースオペランドポイ
ンタを発生し、実行ユニットはこれを用いて2つのソー
スオペランドを探索することができる。これら2つのポ
インタは、実行ユニットにおいてソースポインタ待ち行
列23cに記憶される。行き先オペランド指定子はデコ
ーダ20eによってデコードされて行き先オペランドポ
インタを発生し、これは実行ユニット内の行き先ポイン
タ待ち行列23eに記憶される。
上記レジスタ競合をチエツクするために、新たな命令が
デコードされるたびに一対のマスクが発生され、その命
令の実行中に実行ユニットが読み取り又は書き込みを行
なう全てのGPRを識別する。これらのマスクはレジス
タオペレーションデコーダ20f(第4図について以下
に述べる)において発生され、命令ユニットのマスク待
ち行列23fに記憶される。各マスクは、GPRの数に
等しい数のビット位置より成る。読み取りマスクにおい
ては、新たな命令の実行中に読み取られるべき各GPR
ごとにビットがセットされ、そして書き込みマスクにお
いては、その命令の実行中に書き込まれるべき各GPR
ごとにビットがセットされる。
デコードされるたびに一対のマスクが発生され、その命
令の実行中に実行ユニットが読み取り又は書き込みを行
なう全てのGPRを識別する。これらのマスクはレジス
タオペレーションデコーダ20f(第4図について以下
に述べる)において発生され、命令ユニットのマスク待
ち行列23fに記憶される。各マスクは、GPRの数に
等しい数のビット位置より成る。読み取りマスクにおい
ては、新たな命令の実行中に読み取られるべき各GPR
ごとにビットがセットされ、そして書き込みマスクにお
いては、その命令の実行中に書き込まれるべき各GPR
ごとにビットがセットされる。
所与の命令に対する読み取り及び書き込みマスクの両方
は、マスク待ち行列23fに1つの入力として記憶され
る。15個のGPRがある場合には、マスク待ち行列の
各入力が30ビツトで構成される(各読み取りマスクの
15ビツトは読み取るべきGPRを識別しそして各書き
込みマスクの15ビツトは書き込むべきGPRを識別す
る)。
は、マスク待ち行列23fに1つの入力として記憶され
る。15個のGPRがある場合には、マスク待ち行列の
各入力が30ビツトで構成される(各読み取りマスクの
15ビツトは読み取るべきGPRを識別しそして各書き
込みマスクの15ビツトは書き込むべきGPRを識別す
る)。
マスク待ち行列23fにおいて全ての有効マスクを合成
したものを用いて、使用すべき各レジスタをチエツクし
、命令ユニット12の命令の予めの処理中にメモリアド
レスを発生し、以下で詳細に述べるように、その命令の
予めの処理を停止すべきかどうかを判断する。
したものを用いて、使用すべき各レジスタをチエツクし
、命令ユニット12の命令の予めの処理中にメモリアド
レスを発生し、以下で詳細に述べるように、その命令の
予めの処理を停止すべきかどうかを判断する。
レジスタオペレーションデコーダ2Ofにおいて各々の
新たにデコードされた命令に対する読み取り及び書き込
みマスクを発生するための回路が第4図に示されている
。この回路は、3つのデコーダ30.31及び32を備
えており、最初の2つのデコーダ30及び31はソース
オペランド指定子から2つの4ビツトレジスタ番号を受
け取り、そして第3のデコーダ32は行き先オペランド
指定子から4ビツトレジスタ番号を受け取る。
新たにデコードされた命令に対する読み取り及び書き込
みマスクを発生するための回路が第4図に示されている
。この回路は、3つのデコーダ30.31及び32を備
えており、最初の2つのデコーダ30及び31はソース
オペランド指定子から2つの4ビツトレジスタ番号を受
け取り、そして第3のデコーダ32は行き先オペランド
指定子から4ビツトレジスタ番号を受け取る。
(第4図に示す各データラインによって搬送されるビッ
トの数は、各ラインに交差するダブルスラッシュ記号゛
//′ に隣接する各数字によって示されている。)レ
ジスタ番号に加えて、デコーダ30.31及び32の各
々は、所与の時間に使用されている特定のフォーマット
に対して用いるべきレジスタの番号(1,2,3又は4
)を指示する2ビツトデータ形式番号を受け取る。ある
フォーマットは、8ビツト、16ビツト又は32ビツト
(1つのレジスタを必要とする)を使用し、他のものは
128ビツト(4つのレジスタを必要とする)を使用す
る。
トの数は、各ラインに交差するダブルスラッシュ記号゛
//′ に隣接する各数字によって示されている。)レ
ジスタ番号に加えて、デコーダ30.31及び32の各
々は、所与の時間に使用されている特定のフォーマット
に対して用いるべきレジスタの番号(1,2,3又は4
)を指示する2ビツトデータ形式番号を受け取る。ある
フォーマットは、8ビツト、16ビツト又は32ビツト
(1つのレジスタを必要とする)を使用し、他のものは
128ビツト(4つのレジスタを必要とする)を使用す
る。
2つのデコーダ30及び31は、15ビツト出力におけ
る対応するピッ・トなセットし、セットされたビットは
、1つの特定の指定子に対して実行ユニットによって読
み取られるべき特定のGPRを識別する。
る対応するピッ・トなセットし、セットされたビットは
、1つの特定の指定子に対して実行ユニットによって読
み取られるべき特定のGPRを識別する。
デコーダ30から15の出力が15個のアンドゲート3
3のアレイに送られ、その出力は15個のオアゲート3
4のアレイに接続される。各アンドゲート33への第2
の入力はアンドゲート35の出力であり、その入力は、
第1のソースオペランド指定子及びその指定子からのレ
ジスタ番号が有効であるときにアサートされる。
3のアレイに送られ、その出力は15個のオアゲート3
4のアレイに接続される。各アンドゲート33への第2
の入力はアンドゲート35の出力であり、その入力は、
第1のソースオペランド指定子及びその指定子からのレ
ジスタ番号が有効であるときにアサートされる。
デコーダ31からの15の出力も同様に15のアンドゲ
ート36のアレイに送られ、その出力はオアゲート34
のアレイに接続されている。アンドゲート36の各々へ
の第2の入力はアンドゲート37の出力であり、その入
力は、第2のソースオペランド指定子及びその指定子か
らのレジスタ番号が有効であるときにアサートされる。
ート36のアレイに送られ、その出力はオアゲート34
のアレイに接続されている。アンドゲート36の各々へ
の第2の入力はアンドゲート37の出力であり、その入
力は、第2のソースオペランド指定子及びその指定子か
らのレジスタ番号が有効であるときにアサートされる。
オアゲートアレイ34の15の出力は、マスク待ち行列
23fに記憶されるべきビットRMOないしRM14よ
り成る単一の15ビット読み取りマスクを発生する。再
循環レジスタ38は、オアゲート34とマスク待ち行列
23fとの間のバッファを構成する。上記した命令デコ
ーダの好ましい実施例においては、同じ命令に対するソ
ース指定子がシステムクロックの異なったサイクルにデ
コードされ、それ故、レジスタ38の出力は、新たな命
令がデコードされるまでオアゲート34にフィードバッ
クされるように1組のアンドゲート38bを経て再循環
される。それ故、アンドゲート38bは、インバータ3
8aによって与えられるホールド信号の反転によってイ
ネーブルされる。
23fに記憶されるべきビットRMOないしRM14よ
り成る単一の15ビット読み取りマスクを発生する。再
循環レジスタ38は、オアゲート34とマスク待ち行列
23fとの間のバッファを構成する。上記した命令デコ
ーダの好ましい実施例においては、同じ命令に対するソ
ース指定子がシステムクロックの異なったサイクルにデ
コードされ、それ故、レジスタ38の出力は、新たな命
令がデコードされるまでオアゲート34にフィードバッ
クされるように1組のアンドゲート38bを経て再循環
される。それ故、アンドゲート38bは、インバータ3
8aによって与えられるホールド信号の反転によってイ
ネーブルされる。
第3のデコーダ32は、新たにデコードされた命令を実
行することにより生じた結果の行き先として15個のG
PRのどれを使用すべきかを決定する。このデコーダ3
2は、15個のGPRに対応する15個のビットの1か
ら4までをセットし、これらのセットされたビットは行
き先として使用されるべき特定のGPRを識別する。デ
コーダ32から15個の出力が15個のアンドゲート3
9のアレイに供給される。レジスタの出力は15ビット
書き込みマスクであり、マスク待ち行列23fに記憶さ
れるビットWMOないしWM14より成る。アンドゲー
ト39の各々への第2人力はアンドゲート41の出力で
あり、その入力は、行き先オペランド指定子及びこの指
定子からのレジスタ番号が有効であるときにアサートさ
れる。
行することにより生じた結果の行き先として15個のG
PRのどれを使用すべきかを決定する。このデコーダ3
2は、15個のGPRに対応する15個のビットの1か
ら4までをセットし、これらのセットされたビットは行
き先として使用されるべき特定のGPRを識別する。デ
コーダ32から15個の出力が15個のアンドゲート3
9のアレイに供給される。レジスタの出力は15ビット
書き込みマスクであり、マスク待ち行列23fに記憶さ
れるビットWMOないしWM14より成る。アンドゲー
ト39の各々への第2人力はアンドゲート41の出力で
あり、その入力は、行き先オペランド指定子及びこの指
定子からのレジスタ番号が有効であるときにアサートさ
れる。
第5図及び第6図に示すように、マスク待ち行列23f
は、6個の異なった命令に対する読み取り及び書き込み
マスクの入力を受け入れるように6個のレジスタ40−
45を含む先入れ先出しくF I FO)円形バッファ
である。各レジスタの30ビツトは、各々、レジスタ4
0及び41に対しゲートAl−A30及びB1−B50
のような30個の並列のアンドゲートに接続される。各
グループの3051のアンドゲートは全て有効待ち行列
入力論理回路46から共通の信号を受け取る。
は、6個の異なった命令に対する読み取り及び書き込み
マスクの入力を受け入れるように6個のレジスタ40−
45を含む先入れ先出しくF I FO)円形バッファ
である。各レジスタの30ビツトは、各々、レジスタ4
0及び41に対しゲートAl−A30及びB1−B50
のような30個の並列のアンドゲートに接続される。各
グループの3051のアンドゲートは全て有効待ち行列
入力論理回路46から共通の信号を受け取る。
この論理回路は、マスク待ち行列23fにおける有効マ
スクの数を常時保持し、これらのマスクが配置されてい
る特定のレジスタを保持する。有効待ち行列入力論理回
路46への2つの入力は(1)挿入ポインタカウンタ4
7からの[挿入ポインタJ信号と、(2)サイズカウン
タ48からのrサイズ」信号とである。論理回路46は
これら2つの入力に応答して、テーブル】の論理により
6つの異なった出力に制御信号を発生する。
スクの数を常時保持し、これらのマスクが配置されてい
る特定のレジスタを保持する。有効待ち行列入力論理回
路46への2つの入力は(1)挿入ポインタカウンタ4
7からの[挿入ポインタJ信号と、(2)サイズカウン
タ48からのrサイズ」信号とである。論理回路46は
これら2つの入力に応答して、テーブル】の論理により
6つの異なった出力に制御信号を発生する。
テーブルI
サイズ
上記テーブルlに示されたように、[挿入ポインタ」信
号は、マスクをロードすべき次のレジスタは6つのマス
ク待ち行列レジスタのうちのどれであるかを指示し、−
力、「サイズ」信号は、所与の時間に6個のレジスタの
うちのどれほど多くがマスクを含んでいるかを指示する
。従って、挿入ポインタは、0から5までをアクントし
、そしてサイズカウンタは、0から6までをカウントす
る(空状態及びいっばいの状態を示す信号を発生できる
ようにするため)。例えば、「挿入ポインタ」信号が0
10 (マスクをロードすべき最後のレジスタがレジス
タ42であったことを指示する)でありそしてrサイズ
」信号が010 (マスク待ち行列が現在2つのマスク
しか含んでいないことを指示する)である場合には、論
理回路4Gは、2つのマスクがレジスタ42及び41に
なければならないことを決定する(テーブルl参照)。
号は、マスクをロードすべき次のレジスタは6つのマス
ク待ち行列レジスタのうちのどれであるかを指示し、−
力、「サイズ」信号は、所与の時間に6個のレジスタの
うちのどれほど多くがマスクを含んでいるかを指示する
。従って、挿入ポインタは、0から5までをアクントし
、そしてサイズカウンタは、0から6までをカウントす
る(空状態及びいっばいの状態を示す信号を発生できる
ようにするため)。例えば、「挿入ポインタ」信号が0
10 (マスクをロードすべき最後のレジスタがレジス
タ42であったことを指示する)でありそしてrサイズ
」信号が010 (マスク待ち行列が現在2つのマスク
しか含んでいないことを指示する)である場合には、論
理回路4Gは、2つのマスクがレジスタ42及び41に
なければならないことを決定する(テーブルl参照)。
従って、論理回路46は、出力QO及びQlをアサート
し、即ち論理回路46からの6つの出力は000011
となる。これにより、アンドゲートB1−B50及びC
l−C50(図示せず)がイネーブルされ、レジスタ4
1及び42からのマスクを通す。
し、即ち論理回路46からの6つの出力は000011
となる。これにより、アンドゲートB1−B50及びC
l−C50(図示せず)がイネーブルされ、レジスタ4
1及び42からのマスクを通す。
挿入ポインタカウンタ47及びサイズカウンタ48の両
方は、新たな命令がデコードされるたびに増加され、そ
してサイズカウンタ48は、命令の実行が完了するたび
に減少される。サイズカウンタ48のQl及びQ2出力
はアンドゲート49に供給され、これらの両方のビット
がセットされたときにマスク待ち行列がいっばいである
ことを指示する制御信号を発生する(ビットQl及びQ
2は、両方のビットがセットされたときに10進数の6
を表わし、これは、マスク待ち行列が6個の有効なマス
ク入力を含むことを指示する)。
方は、新たな命令がデコードされるたびに増加され、そ
してサイズカウンタ48は、命令の実行が完了するたび
に減少される。サイズカウンタ48のQl及びQ2出力
はアンドゲート49に供給され、これらの両方のビット
がセットされたときにマスク待ち行列がいっばいである
ことを指示する制御信号を発生する(ビットQl及びQ
2は、両方のビットがセットされたときに10進数の6
を表わし、これは、マスク待ち行列が6個の有効なマス
ク入力を含むことを指示する)。
この「待ち行列いっばい」信号は、マスク待ち行列23
fにおいてスペースが得られるまでそれ以上の命令のデ
コードを停止する(第8図について以下に述べる)。
fにおいてスペースが得られるまでそれ以上の命令のデ
コードを停止する(第8図について以下に述べる)。
挿入ポインタカウンタ47及びサイズカウンタ48は、
予めの処理システムをフラッシュ又はクリアする「フラ
ッシュ」信号を受け入れるプリセットコマンド人力PS
を有する。然し乍ら、本発明の重要な特徴は、指定数の
最も古い入力がフラッシュの場合にマスク待ち行列23
f保持されることである。この特徴は、分岐予想が間違
っていると分かったときにその予想分岐後に命令に対す
るマスクを記憶する待ち行列の最新の部分をフラッシュ
することに関して有用である。保持すべき入力の数は、
表■によって指定される。
予めの処理システムをフラッシュ又はクリアする「フラ
ッシュ」信号を受け入れるプリセットコマンド人力PS
を有する。然し乍ら、本発明の重要な特徴は、指定数の
最も古い入力がフラッシュの場合にマスク待ち行列23
f保持されることである。この特徴は、分岐予想が間違
っていると分かったときにその予想分岐後に命令に対す
るマスクを記憶する待ち行列の最新の部分をフラッシュ
することに関して有用である。保持すべき入力の数は、
表■によって指定される。
表■
レジスタ 挿入
サイズカウンタ48の現在人力PSがアクティベートさ
れる。挿入ポインタカウンタの現在値を決定するために
、保持されるべき入力の数が待ち行列内の有効入力の数
から差し引かれ、除去されるべき入力の数が決定される
。次いで、除去されるべき入力の数が挿入ポインタの現
在値から差し引かれる。この差引及び挿入ポインタのカ
ウントはモジュロ6演算に基づいて実行される。モジュ
ロ6減算器の真理値表がテーブル■に示されている。
れる。挿入ポインタカウンタの現在値を決定するために
、保持されるべき入力の数が待ち行列内の有効入力の数
から差し引かれ、除去されるべき入力の数が決定される
。次いで、除去されるべき入力の数が挿入ポインタの現
在値から差し引かれる。この差引及び挿入ポインタのカ
ウントはモジュロ6演算に基づいて実行される。モジュ
ロ6減算器の真理値表がテーブル■に示されている。
テーブル■
サイズカウンタ48の現在値は、フラッシュ中に命令が
リタイアされない場合にはリタイアすべき入力の数であ
り、又は命令がリタイアされる場合にはリタイアされる
べき入力の数より1だけ小さいものである。サイズカウ
ンタ48のこの選択的なプリセットが必要なのは、テー
ブル■で特定された保持すべき入力の数がリタイアされ
ている命令を含むからである。第6図に示すように、一
対のモジュロ6減算器50及び51は、リタイアされる
べき入力の数を表わす信号を受け取る。
リタイアされない場合にはリタイアすべき入力の数であ
り、又は命令がリタイアされる場合にはリタイアされる
べき入力の数より1だけ小さいものである。サイズカウ
ンタ48のこの選択的なプリセットが必要なのは、テー
ブル■で特定された保持すべき入力の数がリタイアされ
ている命令を含むからである。第6図に示すように、一
対のモジュロ6減算器50及び51は、リタイアされる
べき入力の数を表わす信号を受け取る。
減算器50は、この信号を負の入力で受け取り、その正
の入力はサイズカウンタ48の出力を受け取る。減算器
50の出力は第3のモジュロ6減算器52の負の入力へ
送られ、その正の入力は挿入ポインタカウンタ47の出
力を受け取る。従って、減算器52の出力は、待ち行列
における有効入力の数と、除去すべき入力の数との間の
差を表わす。
の入力はサイズカウンタ48の出力を受け取る。減算器
50の出力は第3のモジュロ6減算器52の負の入力へ
送られ、その正の入力は挿入ポインタカウンタ47の出
力を受け取る。従って、減算器52の出力は、待ち行列
における有効入力の数と、除去すべき入力の数との間の
差を表わす。
この信号は、カウンタ47へ入力されるプリセット値で
ある。
ある。
減算器51の正の入力は、保持されるべき入力の数を表
わす信号を受け取り、この値は、フラッシュ中に命令が
リタイアされない場合にはサイズカウンタに対するプリ
セット値となる。命令がリタイアされる場合には、サイ
ズカウンタに対するプリセット値が減算器51において
1だけ減少される。
わす信号を受け取り、この値は、フラッシュ中に命令が
リタイアされない場合にはサイズカウンタに対するプリ
セット値となる。命令がリタイアされる場合には、サイ
ズカウンタに対するプリセット値が減算器51において
1だけ減少される。
サイズカウンタ48の増加及び減少入力が両方ともアク
ティブであるときには、サイズカウントの値を変更して
はならないことに注意されたい。
ティブであるときには、サイズカウントの値を変更して
はならないことに注意されたい。
通常そうであるように、フラッシュが生じてサイズカウ
ンタをプリセットするときには、増加及び減少入力の信
号が無視されるものとされ、これは、もちろん、リタイ
アされる命令又は除去信号の状態に基づいてプリセット
出力が選択的に減算されるために仮定されることである
。それ故、サイズカウンタは、レジスタや、プリセット
、増加及び減少信号を選択信号として有するマルチプレ
クサや、レジスタの出力からマルチプレクサの種々の入
力への1加算及び1減算回路を含む種々のフィードバッ
ク路により通常の形態で構成される。
ンタをプリセットするときには、増加及び減少入力の信
号が無視されるものとされ、これは、もちろん、リタイ
アされる命令又は除去信号の状態に基づいてプリセット
出力が選択的に減算されるために仮定されることである
。それ故、サイズカウンタは、レジスタや、プリセット
、増加及び減少信号を選択信号として有するマルチプレ
クサや、レジスタの出力からマルチプレクサの種々の入
力への1加算及び1減算回路を含む種々のフィードバッ
ク路により通常の形態で構成される。
有効待ち行列入力論理回路46からの6つの出力信号Q
O−Q5の各々は、マスク待ち行列の6個のレジスタ4
0−45の1つに関連した30個のアンドゲートをイネ
ーブル又はディスエイプルする。これらの制御信号の1
つがアサートされたときには、マスク待ち行列23fの
対応するレジスタに有効マスクが存在することを指示し
、従って、そのレジスタに関連した30個のアンドゲー
トがイネーブルされ、そのレジスタ内のマスクは、レジ
スタ競合が生じるかどうかを判断するのに用いる複合マ
スクの一部分となることができる。
O−Q5の各々は、マスク待ち行列の6個のレジスタ4
0−45の1つに関連した30個のアンドゲートをイネ
ーブル又はディスエイプルする。これらの制御信号の1
つがアサートされたときには、マスク待ち行列23fの
対応するレジスタに有効マスクが存在することを指示し
、従って、そのレジスタに関連した30個のアンドゲー
トがイネーブルされ、そのレジスタ内のマスクは、レジ
スタ競合が生じるかどうかを判断するのに用いる複合マ
スクの一部分となることができる。
例えば、論理回路46からの出力信号QOをアサートす
ると、マスク待ち行列23f内の対応するレジスタ40
に関連した30個のアンドゲートA1−A30がイネー
ブルされる。マスク待ち行列における有効入力の数に基
づいて6つの出力信号QO−Q5のうちのいかなる数を
同時にアサートできることが明らかである。
ると、マスク待ち行列23f内の対応するレジスタ40
に関連した30個のアンドゲートA1−A30がイネー
ブルされる。マスク待ち行列における有効入力の数に基
づいて6つの出力信号QO−Q5のうちのいかなる数を
同時にアサートできることが明らかである。
アンドゲートAl−A30、B1−830等から、読み
取り及び書き込みマスクが30個の並列のオアゲート0
RI−OR30へ送られ、それらの出力は第7図に示す
(以下に述べる)マルチプレクサ60.61及び62へ
接続されている。
取り及び書き込みマスクが30個の並列のオアゲート0
RI−OR30へ送られ、それらの出力は第7図に示す
(以下に述べる)マルチプレクサ60.61及び62へ
接続されている。
各オアゲートは6個の入力を有していて、マスク待ち行
列の6個のレジスタ40−45のいずれかからのマスク
をマルチプレクサ60−62へ通すことができる。もち
ろん、所与のGPRに対応するビットがマスク待ち行列
の6個のレジスタのいずれか1つにおいてセットされた
場合、そのビットは、その特定のGPRに対応するオア
ゲートからの出力信号をアサートする。即ち、30個の
オアゲート0RI−OR30の各々は、各レジスタ40
−45内の30個のビット位置の1つに対応し、各オア
ゲートは、マスク待ち行列の6つのレジスタ40−45
の各々から入力を受け取る。従って、オアゲート0RI
−OR30の出力は、マスク待ち行列の入力によって表
わされた全ての命令に対する複合読み取り及び書き込み
マスクを表わす。特に、15個のオアゲートOR1−O
R15は複合書き込みマスクを発生し、そして15個の
オアゲート0R16−OR30は複合読み取りマスクを
発生する。
列の6個のレジスタ40−45のいずれかからのマスク
をマルチプレクサ60−62へ通すことができる。もち
ろん、所与のGPRに対応するビットがマスク待ち行列
の6個のレジスタのいずれか1つにおいてセットされた
場合、そのビットは、その特定のGPRに対応するオア
ゲートからの出力信号をアサートする。即ち、30個の
オアゲート0RI−OR30の各々は、各レジスタ40
−45内の30個のビット位置の1つに対応し、各オア
ゲートは、マスク待ち行列の6つのレジスタ40−45
の各々から入力を受け取る。従って、オアゲート0RI
−OR30の出力は、マスク待ち行列の入力によって表
わされた全ての命令に対する複合読み取り及び書き込み
マスクを表わす。特に、15個のオアゲートOR1−O
R15は複合書き込みマスクを発生し、そして15個の
オアゲート0R16−OR30は複合読み取りマスクを
発生する。
マスク待ち行列内の6個のレジスタ40−45は、第5
図に示すように、デコーダ53からのクロックイネーブ
ル(CE)信号によって制御される。デコーダ2Ofか
らの30ビット複合読み取り/書き込みマスクは、バス
54を経て6個のレジスタ40−45に供給される。デ
コーダ53は、カウンタ47から3ビツトの「挿入ポイ
ンタ」信号を受け取り、従って、デコーダ53はレジス
タ40−45の1つのみをイネーブルして、所与の時間
にバス54上に存在する複合読み取り/書き込みマスク
を受け取る。デコーダ53は、挿入ポインタカウンタ4
7及びサイズカウンタ48を増加した同じ新たな命令デ
コードされた信号をデコーダ53の出力イネーブル(O
E)ラインに加えることにより、新たな命令がデコード
されるたびにシーケンスされる。
図に示すように、デコーダ53からのクロックイネーブ
ル(CE)信号によって制御される。デコーダ2Ofか
らの30ビット複合読み取り/書き込みマスクは、バス
54を経て6個のレジスタ40−45に供給される。デ
コーダ53は、カウンタ47から3ビツトの「挿入ポイ
ンタ」信号を受け取り、従って、デコーダ53はレジス
タ40−45の1つのみをイネーブルして、所与の時間
にバス54上に存在する複合読み取り/書き込みマスク
を受け取る。デコーダ53は、挿入ポインタカウンタ4
7及びサイズカウンタ48を増加した同じ新たな命令デ
コードされた信号をデコーダ53の出力イネーブル(O
E)ラインに加えることにより、新たな命令がデコード
されるたびにシーケンスされる。
マスク待ち行列23fから、6個のレジスタ40−45
内の複合読み取り及び書き込みマスクが30個のオアゲ
ートOR1−OR30を経て3つのマルチプレクサ6O
−62(第7図)に送られ、これにより、3つの同時比
較に複合マスクを使用して、レジスタ競合が存在するが
どうかの判断をすることができる。第1のマルチプレク
サ60は、オアゲート0R16−OR30から複合読み
取りマスクを受け取り、このマスクを最も最近デコード
された指定子からのペースレジスタ番号と比較する。こ
の読み取りマスクは、既にデコードされているがまだ完
全に実行されていない全ての命令の実行中に実行ユニッ
ト13によって読み取られるべきGPRを識別し、これ
らGPHのいずれかが命令ユニット12における命令の
予めの処理によって早期に変更されるべきであった場合
には、実行ユニットにおける手前の命令のその後の実行
中に間違ったデータが読み取られることになる。このよ
うな早期の変更は、問題とするG PRの自動増加又は
自動減少によって影響を受ける。
内の複合読み取り及び書き込みマスクが30個のオアゲ
ートOR1−OR30を経て3つのマルチプレクサ6O
−62(第7図)に送られ、これにより、3つの同時比
較に複合マスクを使用して、レジスタ競合が存在するが
どうかの判断をすることができる。第1のマルチプレク
サ60は、オアゲート0R16−OR30から複合読み
取りマスクを受け取り、このマスクを最も最近デコード
された指定子からのペースレジスタ番号と比較する。こ
の読み取りマスクは、既にデコードされているがまだ完
全に実行されていない全ての命令の実行中に実行ユニッ
ト13によって読み取られるべきGPRを識別し、これ
らGPHのいずれかが命令ユニット12における命令の
予めの処理によって早期に変更されるべきであった場合
には、実行ユニットにおける手前の命令のその後の実行
中に間違ったデータが読み取られることになる。このよ
うな早期の変更は、問題とするG PRの自動増加又は
自動減少によって影響を受ける。
通常、自動増加又は自動減少されるオペランド当たりの
レジスタは1つだけであり、このレジスタは、rベース
レジスタ」番号、即ち複合読み取りマスクとの比較のた
めにマルチプレクサ60へ送られる数字によって識別さ
れる。
レジスタは1つだけであり、このレジスタは、rベース
レジスタ」番号、即ち複合読み取りマスクとの比較のた
めにマルチプレクサ60へ送られる数字によって識別さ
れる。
ペースレジスタ番号によって識別されたレジスタが複合
読み取りマスクにセットピットを有するレジスタである
ことがマルチプレクサ60によって検出されると、その
マルチプレクサのQ出力がアサートされる。この出力は
アンドゲート63への入力の1つであり、該ゲートは、
ペースレジスタ指定子が有効であるかどうかを指示する
「指定子」有効信号と、その指定子が自動増加又は自動
減少であるかどうかを指示する「指定子書き込み」信号
を入力として受け取る。3つの入力全部がアサートされ
ると、レジスタ読み取り競合が存在し、アンドゲート6
3の出力はそれを指示するようにアサートされる。
読み取りマスクにセットピットを有するレジスタである
ことがマルチプレクサ60によって検出されると、その
マルチプレクサのQ出力がアサートされる。この出力は
アンドゲート63への入力の1つであり、該ゲートは、
ペースレジスタ指定子が有効であるかどうかを指示する
「指定子」有効信号と、その指定子が自動増加又は自動
減少であるかどうかを指示する「指定子書き込み」信号
を入力として受け取る。3つの入力全部がアサートされ
ると、レジスタ読み取り競合が存在し、アンドゲート6
3の出力はそれを指示するようにアサートされる。
第2のマルチプレクサ61は、オアゲート0R1−OR
15から複合書き込みマスクを受け取り、該マスクを、
マルチプレクサ60へ送られる同じペースレジスタ番号
、即ち最も最近デコードされた指定子からのペースレジ
スタ番号と比較する。この書き込みマスクは、既にデコ
ードされているがまだ完全に実行されていない全ての命
令の実行中に実行ユニット13によって書き込まれるべ
きGPRを識別し、即ちこれらGPRのいずれかが命令
ユニット12における命令の予めの処理中に早期に読み
取られるべきであった場合に、間違ったレジスタデータ
が読み取られてその命令に対するオペランドアドレスと
して使用されることになり、従って、この間違ったデー
タが実行ユニットにおけるその命令の次の実行中にメモ
リからフェッチされて使用されることになる。
15から複合書き込みマスクを受け取り、該マスクを、
マルチプレクサ60へ送られる同じペースレジスタ番号
、即ち最も最近デコードされた指定子からのペースレジ
スタ番号と比較する。この書き込みマスクは、既にデコ
ードされているがまだ完全に実行されていない全ての命
令の実行中に実行ユニット13によって書き込まれるべ
きGPRを識別し、即ちこれらGPRのいずれかが命令
ユニット12における命令の予めの処理中に早期に読み
取られるべきであった場合に、間違ったレジスタデータ
が読み取られてその命令に対するオペランドアドレスと
して使用されることになり、従って、この間違ったデー
タが実行ユニットにおけるその命令の次の実行中にメモ
リからフェッチされて使用されることになる。
ペースレジスタ番号によって識別されたレジスタが複合
書き込みマスクにセットピットを有するレジスタである
ことがマルチプレクサ61によって検出されると、その
マルチプレクサのQ出力がアサートされる。この出力は
、アンドゲート64への入力の1つであり、該ゲートは
、アンドゲート63に送られる同じ[指定子有効J信号
と、その指定子がアドレス発生にペースレジスタを使用
するかどうかを指示する「指定子読み取り」信号とを入
力として受け取る。3つの入力全部がアサートされると
、レジスタ書き込み競合が存在し、アンドゲート64の
出力はこれを指示するようにアサートされる。
書き込みマスクにセットピットを有するレジスタである
ことがマルチプレクサ61によって検出されると、その
マルチプレクサのQ出力がアサートされる。この出力は
、アンドゲート64への入力の1つであり、該ゲートは
、アンドゲート63に送られる同じ[指定子有効J信号
と、その指定子がアドレス発生にペースレジスタを使用
するかどうかを指示する「指定子読み取り」信号とを入
力として受け取る。3つの入力全部がアサートされると
、レジスタ書き込み競合が存在し、アンドゲート64の
出力はこれを指示するようにアサートされる。
第3のマルチプレクサ62は、マルチプレクサ61へ送
られる同じ複合書き込みマスクを受け取り、このマスク
を、最も最近デコードされた指定子からのインデックス
レジスタと比較する。上記したように、この書き込みマ
スクは、既にデコードされているがまだ完全に実行され
ていない全ての命令の実行中に実行ユニット13によっ
て書き込まれるべきGPRを識別し、これらGPRのい
ずれかが実行ユニットによって書き込まれる前に命令ユ
ニット12によって早期に読み取られるべきであった場
合には、間違ったレジスタデータが読み取られることに
なる。
られる同じ複合書き込みマスクを受け取り、このマスク
を、最も最近デコードされた指定子からのインデックス
レジスタと比較する。上記したように、この書き込みマ
スクは、既にデコードされているがまだ完全に実行され
ていない全ての命令の実行中に実行ユニット13によっ
て書き込まれるべきGPRを識別し、これらGPRのい
ずれかが実行ユニットによって書き込まれる前に命令ユ
ニット12によって早期に読み取られるべきであった場
合には、間違ったレジスタデータが読み取られることに
なる。
インデックスレジスタ番号によって識別されたレジスタ
が複合書き込みマスクにセットピットを有するレジスタ
あることがマルチプレクサ62によって検出されると、
このマルチプレクサのQ出力がアサートされる。この出
力は、アンドゲート65への入力の1つであり、該ゲー
トは、インデックスレジスタ指定子が有効であるかどう
かを示す[インデックスレジスタ指定子有効」信号も入
力として受け取る。両方の入力がアサートされた場合に
は、アンドゲート65の出力がアサートされて、レジス
タ書き込み競合が存在することを指示する。この「レジ
スタ競合」信号は、レジスタ競合がクリアされるまで現
在進行中の予めの処理動作を停止するのに用いられる。
が複合書き込みマスクにセットピットを有するレジスタ
あることがマルチプレクサ62によって検出されると、
このマルチプレクサのQ出力がアサートされる。この出
力は、アンドゲート65への入力の1つであり、該ゲー
トは、インデックスレジスタ指定子が有効であるかどう
かを示す[インデックスレジスタ指定子有効」信号も入
力として受け取る。両方の入力がアサートされた場合に
は、アンドゲート65の出力がアサートされて、レジス
タ書き込み競合が存在することを指示する。この「レジ
スタ競合」信号は、レジスタ競合がクリアされるまで現
在進行中の予めの処理動作を停止するのに用いられる。
3つのアンドゲート63−65の出力は、1つのオアゲ
ート66に接続され、該ゲートは、3つのアンドゲート
63−65のいずれかから第4のアンドゲート67ヘア
サートされた出力を通し、該ゲート67は出力ラッチ6
8のセット動作を制御する。より詳細には、第4のアン
ドゲート67は、検出器が新たな指定子を最初に受け取
るときだけアサートされる制御信号を第2人力として受
け取る。これは、新たにデコードされた命令に対する指
定子がその同じ命令に対して発生されたマスクを含む複
合読み取り又は書き込みマスクと比較された場合に生じ
ることのある命令内競合の検出を妨げる。
ート66に接続され、該ゲートは、3つのアンドゲート
63−65のいずれかから第4のアンドゲート67ヘア
サートされた出力を通し、該ゲート67は出力ラッチ6
8のセット動作を制御する。より詳細には、第4のアン
ドゲート67は、検出器が新たな指定子を最初に受け取
るときだけアサートされる制御信号を第2人力として受
け取る。これは、新たにデコードされた命令に対する指
定子がその同じ命令に対して発生されたマスクを含む複
合読み取り又は書き込みマスクと比較された場合に生じ
ることのある命令内競合の検出を妨げる。
停止中に指定子情報を保持するために、パイプラインの
段間にダブルバッファが設けられる。
段間にダブルバッファが設けられる。
従って、第8図に示すように、パイプラインの股間に情
報を通す通常の転送レジスタ80に加えて、停止中に情
報を保持する保持レジスタ81が設けられている。転送
レジスタ80の出力は、「現在」レジスタ競合検出器8
2及び「新たな」レジスタ競合検出器83の両方に送ら
れる。レジスタ競合が検出されると、検出器82の出力
は、(1)−対のオアゲート84及び85を通して送ら
れて命令のデコードを停止すると共に、(2)オペラン
ドユニット21をして停止信号をライン86を経てマル
チプレクサ87の選択人力へ送り、該マルチプレクサは
、検出器82が転送レジスタ8oがらその入力を受け取
るか又は保持レジスタ81から受け取るかを判断する。
報を通す通常の転送レジスタ80に加えて、停止中に情
報を保持する保持レジスタ81が設けられている。転送
レジスタ80の出力は、「現在」レジスタ競合検出器8
2及び「新たな」レジスタ競合検出器83の両方に送ら
れる。レジスタ競合が検出されると、検出器82の出力
は、(1)−対のオアゲート84及び85を通して送ら
れて命令のデコードを停止すると共に、(2)オペラン
ドユニット21をして停止信号をライン86を経てマル
チプレクサ87の選択人力へ送り、該マルチプレクサは
、検出器82が転送レジスタ8oがらその入力を受け取
るか又は保持レジスタ81から受け取るかを判断する。
通常、マルチプレクサ87は転送レジスタ80から検出
器82へ指定子を通すが、オペランドユニットからライ
ン86への停止信号によりマルチプレクサが保持レジス
タ81を選択する。従って、競合を開始する指定子は検
出器82への入力として維持され、この検出器は、たと
え転送レジスタ80のデータが変化しても競合がいつ除
去されるかを決定することができる。
器82へ指定子を通すが、オペランドユニットからライ
ン86への停止信号によりマルチプレクサが保持レジス
タ81を選択する。従って、競合を開始する指定子は検
出器82への入力として維持され、この検出器は、たと
え転送レジスタ80のデータが変化しても競合がいつ除
去されるかを決定することができる。
「新たな」レジスタ競合の検出器83は、検出器82が
保持レジスタ81にまだ接続されている間に転送レジス
タによって指定子が受け取られることにより新たなレジ
スタ競合を検出することができる。このような新たな競
合の検出により、検出器83の出力をアサートし、オア
ゲート84及び85を経て命令デコーダに続く停止ライ
ンに供給する。第8図に示すように、オアゲート87は
、他のソースからの停止信号、例えば、待ち行列23及
びソースリスト24からの[いっばい」信号も受け取る
。
保持レジスタ81にまだ接続されている間に転送レジス
タによって指定子が受け取られることにより新たなレジ
スタ競合を検出することができる。このような新たな競
合の検出により、検出器83の出力をアサートし、オア
ゲート84及び85を経て命令デコーダに続く停止ライ
ンに供給する。第8図に示すように、オアゲート87は
、他のソースからの停止信号、例えば、待ち行列23及
びソースリスト24からの[いっばい」信号も受け取る
。
第1図は、実行ユニットが手前の命令を実行する前にそ
の次の命令に対するオペランドをフェッチするようにマ
スク待ち行列を含む1組の待ち行列を使用する中央処理
ユニットのブロック図。 第2図は、命令を処理するように実行されると共に、第
1図のパイプライン式命令プロセッサによって種々の命
令に対して並列に実行される種々のステップを示す図、 第3図は、第1図の命令プロセッサのプロッり図で、命
令デコーダ及び待ち行列を更に詳細に示す図、 第4図は、GPR使用マスクを挿入及び除去し、待ち行
列をフラッシュし、複合読み取り及び書き込みマスクを
発生するためのマスク待ち行列及びそれに関連した回路
を示すブロック図、第5図は、マスク待ち行列の詳細な
回路図、第6図は、第1図ないし第4図のシステムに用
いるマスク発生回路の回路図、 第7図は、レジスタ競合が存在するかどうかを判断する
ために読み取り及び書き込みマスクを検査するレジスタ
競合検出回路の回路図、そして第8図は、オペランドユ
ニットを含むダブルバッファのバイブライン段において
現在レジスタ競合信号及び新たなレジスタ競合信号を得
るために一対のレジスタ競合検出器をいかに使用するか
を示す図である。 10・・・メインメモリ 11・・・メモリ/CPUインターフェイス12・・・
命令ユニット ・実行ユニット ・メインキャッシュ ・変換バッファ ・I10バス ・プログラムカウンタ ・命令キャッシュ ・命令バッファ ・命令デコーダ ・オペランド処理ユニット(OPU) ・ソースリスト ・命令発生ユニット ・マイクロコード実行ユニット ・演算論理ユニッ゛ト(ALLI) ・リタイアユニット
の次の命令に対するオペランドをフェッチするようにマ
スク待ち行列を含む1組の待ち行列を使用する中央処理
ユニットのブロック図。 第2図は、命令を処理するように実行されると共に、第
1図のパイプライン式命令プロセッサによって種々の命
令に対して並列に実行される種々のステップを示す図、 第3図は、第1図の命令プロセッサのプロッり図で、命
令デコーダ及び待ち行列を更に詳細に示す図、 第4図は、GPR使用マスクを挿入及び除去し、待ち行
列をフラッシュし、複合読み取り及び書き込みマスクを
発生するためのマスク待ち行列及びそれに関連した回路
を示すブロック図、第5図は、マスク待ち行列の詳細な
回路図、第6図は、第1図ないし第4図のシステムに用
いるマスク発生回路の回路図、 第7図は、レジスタ競合が存在するかどうかを判断する
ために読み取り及び書き込みマスクを検査するレジスタ
競合検出回路の回路図、そして第8図は、オペランドユ
ニットを含むダブルバッファのバイブライン段において
現在レジスタ競合信号及び新たなレジスタ競合信号を得
るために一対のレジスタ競合検出器をいかに使用するか
を示す図である。 10・・・メインメモリ 11・・・メモリ/CPUインターフェイス12・・・
命令ユニット ・実行ユニット ・メインキャッシュ ・変換バッファ ・I10バス ・プログラムカウンタ ・命令キャッシュ ・命令バッファ ・命令デコーダ ・オペランド処理ユニット(OPU) ・ソースリスト ・命令発生ユニット ・マイクロコード実行ユニット ・演算論理ユニッ゛ト(ALLI) ・リタイアユニット
Claims (27)
- (1)命令デコーダ、命令実行ユニット及び多数の汎用
レジスタを有するデジタルコンピュータで多数の命令を
実行する前にこれらの命令を予め処理する方法であって
、上記汎用レジスタは上記命令の予めの処理中にメモリ
アドレスを発生するために読み取られ、上記方法は、 現在命令の予めの処理を回避して汎用レジスタを読み取
り、手前の命令による上記レジスタの内容の変更前にメ
モリアドレスを発生することを含み、これは、 上記現在命令の手前にある複数のデコードされているが
まだ実行されていない命令の少なくとも1つによって内
容を変更すべき各汎用レジスタごとにセットされたビッ
トを有する複合書き込みマスクを発生し、そして 上記現在命令によって読み取られるべき汎用レジスタが
上記複合書き込みマスクにおいてセットされたビットを
有するレジスタであるときに上記現在命令の処理を停止
することによって行なうことを特徴とする方法。 - (2)命令の実行を完了するたびにそして新たな命令を
デコードするたびに上記書き込みマスクを更新する段階
を含む請求項1に記載の方法。 - (3)上記現在命令によって読み取られるべき汎用レジ
スタに対してセットされたビットを上記書き込みマスク
がもはやもたないときに上記現在命令の予めの処理を再
開する段階を含む請求項2に記載の方法。 - (4)上記書き込みマスクは、デコードされる各命令ご
とに書き込みマスクを発生し、マスク待ち行列にある複
数のデコードされた命令の実行が完了するまでこれら命
令に対する書き込みマスクを待ち行列に入れ、そしてこ
れらの待ち行列に入れられた全てのマスクを合成して上
記複合書き込みマスクを発生することによって形成され
る請求項1に記載の方法。 - (5)各命令に対する書き込みマスクは、その命令の実
行が完了したときに上記マスク待ち行列から除去される
請求項4に記載の方法。 - (6)上記マスク待ち行列がいっぱいであるときに新た
な命令のデコードが停止される請求項1に記載の方法。 - (7)フラッシュ信号に応答して、選択された数の上記
書き込みマスクが上記マスク待ち行列に保持される請求
項1に記載の方法。 - (8)上記マスク待ち行列は多数のレジスタを含み、次
々の命令に対する上記書き込みマスクは上記マスク待ち
行列の次々のレジスタに記憶される請求項1に記載の方
法。 - (9)上記マスク待ち行列の各新たな書き込みマスクを
受け取るべきレジスタを識別する挿入ポインタを発生し
、そして新たな命令がデコードされるたびに上記挿入ポ
インタを増加する段階を含む請求項8に記載の方法。 - (10)上記マスク待ち行列に記憶された書き込みマス
クの数を識別するサイズ信号を発生し、新たな命令がデ
コードされるたびに該サイズ信号を増加し、命令の実行
が完了するたびに該サイズ信号を減少する段階を含む請
求項8に記載の方法。 - (11)各命令は、少なくとも1つのソースオペランド
指定子と、少なくとも1つの行き先オペランド指定子と
を含み、上記指定子の少なくとも幾つかは汎用レジスタ
指定子を含み、更に、上記現在命令の選択された汎用レ
ジスタ指定子を上記複合書き込みマスクと比較し、上記
現在命令によって読み取られるべき汎用レジスタが上記
複合書き込みマスクにおいてセットされたビットを有す
るレジスタであるときを判断することを含む請求項1に
記載の方法。 - (12)上記比較段階において肯定応答を発生する汎用
レジスタ指定子を保持し、上記比較を続けて、上記マス
ク待ち行列から書き込みマスクを除去することにより肯
定応答がクリアされるときを判断する段階を含む請求項
11に記載の方法。 - (13)上記コンピュータは、n個の汎用レジスタを有
し、各々の命令は、少なくとも1つのソースオペランド
指定子と、少なくとも1つの行き先オペランド指定子と
を含んでおり、上記指定子の少なくとも幾つかは、汎用
レジスタ指定子を含み、上記複合書き込みマスクは、命
令によって読み取られるべき各汎用レジスタに対する汎
用レジスタ指定子を、上記n個の汎用レジスタに各々対
応するn本のラインの1つの上のセットビットに変換す
ることによって発生される請求項1に記載の方法。 - (14)命令デコーダ、命令実行ユニット及び多数の汎
用レジスタを有するデジタルコンピュータで多数の命令
を実行する前にこれらの命令を予め処理する方法であっ
て、上記汎用レジスタは上記命令の予めの処理中にメモ
リアドレスを発生するために読み取られ、上記方法は、 現在命令の予めの処理を回避して汎用レジスタの内容を
変更し、手前の命令による上記レジスタの読み取りの前
にメモリアドレスを発生することを含み、これは、 上記現在命令の手前にある複数のデコードされているが
まだ実行されていない命令の少なくとも1つによって読
み取られるべき各汎用レジスタごとにセットされたビッ
トを有する複合読み取りマスクを発生し、そして 上記現在命令によって内容が変更されるべき汎用レジス
タが上記複合読み取りマスクにおいてセットされたビッ
トを有するレジスタであるときに上記現在命令の処理を
停止することによって行なうことを特徴とする方法。 - (15)命令の実行が完了するたびに且つ新たな命令が
デコードされるたびに上記読み取りマスクを更新する段
階を含む請求項14に記載の方法。 - (16)上記現在命令によって変更されるべき汎用レジ
スタに対してセットされたビットを上記読み取りマスク
がもはやもたないときに上記現在命令の予めの処理を再
開する段階を含む請求項15に記載の方法。 - (17)上記読み取りマスクは、デコードされる各命令
ごとに読み取りマスクを発生し、マスク待ち行列にある
複数のデコードされた命令の実行が完了するまでこれら
命令に対する読み取りマスクを待ち行列に入れ、そして
これらの待ち行列に入れられた全ての読み取りマスクを
合成して上記複合読み取りマスクを発生することによっ
て形成される請求項14に記載の方法。 - (18)各命令に対する読み取りマスクは、その命令の
実行が完了したときに上記マスク待ち行列から除去され
る請求項17に記載の方法。 - (19)上記マスク待ち行列がいっぱいであるときに新
たな命令のデコードが停止される請求項14に記載の方
法。 - (20)フラッシュ信号に応答して、選択された数の上
記読み取りマスクが上記マスク待ち行列に保持される請
求項14に記載の方法。 - (21)上記マスク待ち行列は多数のレジスタを含み、
次々の命令に対する上記読み取りマスクは上記マスク待
ち行列の次々のレジスタに記憶される請求項14に記載
の方法。 - (22)上記マスク待ち行列の各新たな読み取りマスク
を受け取るべきレジスタを識別する挿入ポインタを発生
し、そして新たな命令がデコードされるたびに上記挿入
ポインタを増加する段階を含む請求項21に記載の方法
。 - (23)上記マスク待ち行列に記憶された読み取りマス
クの数を識別するサイズ信号を発生し、新たな命令がデ
コードされるたびに上記サイズ信号を増加し、命令の実
行が完了するたびに上記サイズ信号を減少する段階を含
む請求項21に記載の方法。 - (24)各命令は、少なくとも1つのソースオペランド
指定子と、少なくとも1つの行き先オペランド指定子と
を含み、上記指定子の少なくとも幾つかは汎用レジスタ
指定子を含み、更に、上記現在命令の選択された汎用レ
ジスタ指定子を上記複合読み取りマスクと比較し、上記
現在命令によって変更されるべき汎用レジスタが上記複
合読み取りマスクにおいてセットされたビットを有する
レジスタであるときを判断することを含む請求項14に
記載の方法。 - (25)上記比較段階において肯定応答を発生する汎用
レジスタ指定子を保持し、そして上記比較を続けて、上
記マスク待ち行列から読み取りマスクを除去することに
より肯定応答がクリアされるときを判断する段階を含む
請求項24に記載の方法。 - (26)上記コンピュータは、n個の汎用レジスタを有
し、各々の命令は、少なくとも1つのソースオペランド
指定子と、少なくとも1つの行き先オペランド指定子と
を含んでおり、上記指定子の少なくとも幾つかは、汎用
レジスタ指定子を含み、上記複合読み取りマスクは、命
令によって読み取られるべき各汎用レジスタに対する汎
用レジスタ指定子を、上記n個の汎用レジスタに各々対
応するn本のラインの1つの上のセットビットに変換す
ることによって発生される請求項14に記載の方法。 - (27)命令デコーダ、命令実行ユニット及び多数の汎
用レジスタを有するデジタルコンピュータで多数の命令
を実行する前にこれらの命令を予め処理する方法であっ
て、上記汎用レジスタは上記命令の予めの処理中にメモ
リアドレスを発生するために読み取られ、上記方法は、 現在命令の予めの処理を回避して汎用レジスタを読み取
るか又は汎用レジスタの内容を変更し、手前の命令によ
る上記レジスタの読み取り又はその内容の変更前にメモ
リアドレスを発生することを含み、これは、 上記現在命令の手前にある複数のデコードされているが
まだ実行されていない命令の少なくとも1つによって内
容を読み取るか又は変更すべき各汎用レジスタごとにセ
ットされたビットを有する複合読み取り/書き込みマス
クを発生し、そして 上記現在命令によって内容を変更すべき汎用レジスタが
上記複合読み取りマスクにおいてセットされたビットを
有するレジスタであるときに上記現在命令の処理を停止
することによって行なうことを特徴とする方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/306,773 US5142631A (en) | 1989-02-03 | 1989-02-03 | System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register |
| US306773 | 1989-02-03 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02240735A true JPH02240735A (ja) | 1990-09-25 |
Family
ID=23186771
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2021909A Pending JPH02240735A (ja) | 1989-02-03 | 1990-01-31 | データ冗長度分解能をもつマルチプル命令処理システム |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US5142631A (ja) |
| EP (1) | EP0380850B1 (ja) |
| JP (1) | JPH02240735A (ja) |
| AT (1) | ATE166471T1 (ja) |
| AU (1) | AU632324B2 (ja) |
| CA (1) | CA2008238A1 (ja) |
| DE (1) | DE68928677T2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014041422A (ja) * | 2012-08-21 | 2014-03-06 | Fujitsu Ltd | プロセッサ |
Families Citing this family (47)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE69130138T2 (de) * | 1990-06-29 | 1999-05-06 | Digital Equipment Corp., Maynard, Mass. | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor |
| US5450555A (en) * | 1990-06-29 | 1995-09-12 | Digital Equipment Corporation | Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions |
| 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 |
| US5428811A (en) * | 1990-12-20 | 1995-06-27 | Intel Corporation | Interface between a register file which arbitrates between a number of single cycle and multiple cycle functional units |
| US5341500A (en) * | 1991-04-02 | 1994-08-23 | Motorola, Inc. | Data processor with combined static and dynamic masking of operand for breakpoint operation |
| US5740398A (en) * | 1993-10-18 | 1998-04-14 | Cyrix Corporation | Program order sequencing of data 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 |
| US5471598A (en) * | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling 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 |
| JP2750813B2 (ja) * | 1994-03-23 | 1998-05-13 | レオン自動機株式会社 | クロワッサン生地の巻き上げ装置 |
| US6128720A (en) * | 1994-12-29 | 2000-10-03 | International Business Machines Corporation | Distributed processing array with component processors performing customized interpretation of instructions |
| JP3400458B2 (ja) * | 1995-03-06 | 2003-04-28 | 株式会社 日立製作所 | 情報処理装置 |
| US6308261B1 (en) * | 1998-01-30 | 2001-10-23 | Hewlett-Packard Company | Computer system having an instruction for probing memory latency |
| JP3710325B2 (ja) * | 1999-06-07 | 2005-10-26 | レオン自動機株式会社 | 食品生地の搬送装置 |
| JP3766241B2 (ja) * | 1999-09-08 | 2006-04-12 | レオン自動機株式会社 | 食品生地供給装置 |
| US6553483B1 (en) * | 1999-11-29 | 2003-04-22 | Intel Corporation | Enhanced virtual renaming scheme and deadlock prevention therefor |
| US20030172253A1 (en) * | 2002-03-06 | 2003-09-11 | Sun Microsystems, Inc. | Fast instruction dependency multiplexer |
| US20060095732A1 (en) * | 2004-08-30 | 2006-05-04 | Tran Thang M | Processes, circuits, devices, and systems for scoreboard and other processor improvements |
| WO2007069000A1 (en) * | 2005-12-16 | 2007-06-21 | Freescale Semiconductor, Inc. | Device and method for processing instructions |
| US7565511B2 (en) * | 2006-03-13 | 2009-07-21 | Sun Microsystems, Inc. | Working register file entries with instruction based lifetime |
| US8667597B2 (en) * | 2008-06-25 | 2014-03-04 | Lockheed Martin Corporation | Systems, methods, and products for secure code execution |
| US9400650B2 (en) * | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
| US9792116B2 (en) * | 2015-04-24 | 2017-10-17 | Optimum Semiconductor Technologies, Inc. | Computer processor that implements pre-translation of virtual addresses with target registers |
| US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
| US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
| US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
| US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
| US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
| US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
| US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
| US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
| US10505704B1 (en) * | 2015-08-02 | 2019-12-10 | Wave Computing, Inc. | Data uploading to asynchronous circuitry using circular buffer control |
| US10564929B2 (en) | 2016-09-01 | 2020-02-18 | Wave Computing, Inc. | Communication between dataflow processing units and memories |
| US10659396B2 (en) | 2015-08-02 | 2020-05-19 | Wave Computing, Inc. | Joining data within a reconfigurable fabric |
| US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
| US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
| US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
| US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
| US11106976B2 (en) | 2017-08-19 | 2021-08-31 | Wave Computing, Inc. | Neural network output layer for machine learning |
| US10949328B2 (en) | 2017-08-19 | 2021-03-16 | Wave Computing, Inc. | Data flow graph computation using exceptions |
| US11645178B2 (en) | 2018-07-27 | 2023-05-09 | MIPS Tech, LLC | Fail-safe semi-autonomous or autonomous vehicle processor array redundancy which permits an agent to perform a function based on comparing valid output from sets of redundant processors |
| US11227030B2 (en) | 2019-04-01 | 2022-01-18 | Wave Computing, Inc. | Matrix multiplication engine using pipelining |
| US10997102B2 (en) | 2019-04-01 | 2021-05-04 | Wave Computing, Inc. | Multidimensional address generation for direct memory access |
| US11934308B2 (en) | 2019-04-01 | 2024-03-19 | Wave Computing, Inc. | Processor cluster address generation |
| US11481472B2 (en) | 2019-04-01 | 2022-10-25 | Wave Computing, Inc. | Integer matrix multiplication engine using pipelining |
| CN115994102B (zh) * | 2021-10-18 | 2026-03-27 | 长鑫存储技术有限公司 | 写入缓存电路、数据写入方法和存储器 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63307535A (ja) * | 1987-06-09 | 1988-12-15 | Mitsubishi Electric Corp | パイプライン制御回路 |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4155120A (en) * | 1977-12-01 | 1979-05-15 | Burroughs Corporation | Apparatus and method for controlling microinstruction sequencing by selectively inhibiting microinstruction execution |
| US4179737A (en) * | 1977-12-23 | 1979-12-18 | Burroughs Corporation | Means and methods for providing greater speed and flexibility of microinstruction sequencing |
| FR2420168B1 (fr) * | 1978-03-16 | 1986-09-26 | Ibm | Dispositif de pre-traitement d'instructions dans un systeme de traitement de donnees |
| US4367524A (en) * | 1980-02-07 | 1983-01-04 | Intel Corporation | Microinstruction execution unit for use in a microprocessor |
| US4493019A (en) * | 1980-05-06 | 1985-01-08 | Burroughs Corporation | Pipelined microprogrammed digital data processor employing microinstruction tasking |
| US4503535A (en) * | 1982-06-30 | 1985-03-05 | Intel Corporation | Apparatus for recovery from failures in a multiprocessing system |
| US4667287A (en) * | 1982-10-28 | 1987-05-19 | Tandem Computers Incorporated | Multiprocessor multisystem communications network |
| US4682284A (en) * | 1984-12-06 | 1987-07-21 | American Telephone & Telegraph Co., At&T Bell Lab. | Queue administration method and apparatus |
| US4789925A (en) * | 1985-07-31 | 1988-12-06 | Unisys Corporation | Vector data logical usage conflict detection |
| US4722049A (en) * | 1985-10-11 | 1988-01-26 | Unisys Corporation | Apparatus for out-of-order program execution |
| US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
| US4891753A (en) * | 1986-11-26 | 1990-01-02 | Intel Corporation | Register scorboarding on a microprocessor chip |
| JPH07120278B2 (ja) * | 1988-07-04 | 1995-12-20 | 三菱電機株式会社 | データ処理装置 |
-
1989
- 1989-02-03 US US07/306,773 patent/US5142631A/en not_active Expired - Lifetime
- 1989-09-07 EP EP89309087A patent/EP0380850B1/en not_active Expired - Lifetime
- 1989-09-07 DE DE68928677T patent/DE68928677T2/de not_active Expired - Fee Related
- 1989-09-07 AT AT89309087T patent/ATE166471T1/de not_active IP Right Cessation
-
1990
- 1990-01-22 CA CA002008238A patent/CA2008238A1/en not_active Abandoned
- 1990-01-31 JP JP2021909A patent/JPH02240735A/ja active Pending
- 1990-04-27 AU AU53936/90A patent/AU632324B2/en not_active Ceased
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63307535A (ja) * | 1987-06-09 | 1988-12-15 | Mitsubishi Electric Corp | パイプライン制御回路 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014041422A (ja) * | 2012-08-21 | 2014-03-06 | Fujitsu Ltd | プロセッサ |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0380850A2 (en) | 1990-08-08 |
| DE68928677T2 (de) | 1999-01-07 |
| DE68928677D1 (de) | 1998-06-25 |
| AU5393690A (en) | 1991-12-19 |
| AU632324B2 (en) | 1992-12-24 |
| EP0380850B1 (en) | 1998-05-20 |
| CA2008238A1 (en) | 1990-08-03 |
| EP0380850A3 (en) | 1991-10-23 |
| US5142631A (en) | 1992-08-25 |
| ATE166471T1 (de) | 1998-06-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH02240735A (ja) | データ冗長度分解能をもつマルチプル命令処理システム | |
| US5222223A (en) | Method and apparatus for ordering and queueing multiple memory requests | |
| US5125083A (en) | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system | |
| EP0365188B1 (en) | Central processor condition code method and apparatus | |
| EP0380859B1 (en) | Method of preprocessing multiple instructions | |
| EP0381447B1 (en) | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system | |
| US5446850A (en) | Cross-cache-line compounding algorithm for scism processors | |
| US5067069A (en) | Control of multiple functional units with parallel operation in a microcoded execution unit | |
| JP2701179B2 (ja) | データ処理システム | |
| US5826089A (en) | Instruction translation unit configured to translate from a first instruction set to a second instruction set | |
| US4875160A (en) | Method for implementing synchronous pipeline exception recovery | |
| JP3096451B2 (ja) | データを転送する方法およびプロセッサ | |
| US5826074A (en) | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register | |
| US5142633A (en) | Preprocessing implied specifiers in a pipelined processor | |
| JP2678527B2 (ja) | キャッシュメモリ装置 | |
| US5781790A (en) | Method and apparatus for performing floating point to integer transfers and vice versa | |
| JPH0526219B2 (ja) | ||
| US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
| EP0375883A2 (en) | Cache storage system | |
| JP2532560B2 (ja) | 高機能な例外処理を行うデ―タ処理装置 | |
| IE901519A1 (en) | Multiple instruction preprocessing system with data¹dependency resolution | |
| JPH03113535A (ja) | パイプライン制御機構 | |
| IE901527A1 (en) | Method and apparatus for ordering and queuing multiple¹memory requests | |
| JPH11272463A (ja) | 記憶装置及び情報処理装置 | |
| IE901528A1 (en) | Method and apparatus for controlling the conversion of¹virtual to physical memory addresses in a digital computer¹system |