JP3441070B2 - 高性能riscマイクロプロセッサ及びデータ処理装置 - Google Patents

高性能riscマイクロプロセッサ及びデータ処理装置

Info

Publication number
JP3441070B2
JP3441070B2 JP50215093A JP50215093A JP3441070B2 JP 3441070 B2 JP3441070 B2 JP 3441070B2 JP 50215093 A JP50215093 A JP 50215093A JP 50215093 A JP50215093 A JP 50215093A JP 3441070 B2 JP3441070 B2 JP 3441070B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
unit
register
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP50215093A
Other languages
English (en)
Other versions
JPH06501122A (ja
Inventor
トロン グエン,レ
ジェイ. レンツ,デレク
ミヤヤマ,ヨシユキ
ガルグ,サンジブ
ハギワラ,ヤスアキ
ワン,ジョハネス
ラウ,テーリ
エイチ. トラン,クワン
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of JPH06501122A publication Critical patent/JPH06501122A/ja
Application granted granted Critical
Publication of JP3441070B2 publication Critical patent/JP3441070B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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
    • 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/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Microcomputers (AREA)

Description

【発明の詳細な説明】 発明の背景 1.発明の分野 一般的には、本発明はRISC型マイクロプロセッサ・ア
ーキテクチャの設計に関し、具体的には、複数の命令を
同時並行に実行することのできるRISCマイクロプロセッ
サ・アーキテクチャに関する。
以下に列挙した米国特許出願は本件特許出願と同時に
米国特許出願され、係属中のものであるが、これらの米
国特許出願に開示されており、かつそれぞれ対応して出
願された日本での特許出願に開示されている事項は、そ
の出願番号を本明細書で引用することにより本明細書の
一部を構成するものとする。
1.発明の名称「拡張可能RISCマイクロプロセッサ・アー
キテクチャ(Extensible RISC Microprocessor Archite
cture)SMOS 7985 MCF/GBR,米国特許出願第07/727,058
号、1991年7月8日出願、発明者Le T.Nguyen他、およ
びこれに対応する特願平5−502153号(特表平6−5011
24号公報)。
2.「アーキテクチャ上の依存関係を隔離したRISCマイク
ロプロセッサ・アーキテクチャ(RISC Microprocessor
Architecture with Isolated architectural Dependenc
ies)SMOS 7987 MCF/GBR,米国特許出願第07/726,744
号、1991年7月8日出願、発明者Le T.Nguyen他、およ
びこれに対応する特願平5−502152号(特表平6−5020
34号公報)。
3.発明の名称「複数型レジスタ・セットを採用したRISC
マイクロプロセッサ・アーキテクチャ)(RISC Micropr
ocessor Architecture Implementing Multiple Typed R
egister Sets)SMOS 7988 MCF/GBR/RCC,米国特許出願第
07/726,773号、1991年7月8日出願、発明者Sanjiv Gar
g他、およびこれに対応する特願平5−502403号(特表
平6−501805号公報)。
4.発明の名称「高速トラップと例外状態をインプリメン
トしたRISCマイクロプロセッサ・アーキテクチャ)(RI
SC Microprocessor Architecture Implementing Fast T
rap and Exception State)SMOS 7989 MCF/GBR/WSW,米
国特許出願第07/726,942号、1991年7月8日出願、発明
者Le T.Nguyen他、およびこれに対応する特願平5−502
154号(特表平6−502035号公報)。
5.発明の名称「シングル・チップ・ページ・プリンタ・
コントローラ」(Single Chip Page Printer Controlle
r)SMOS 7991 MCF/GBR,米国特許出願第07/726,929号、1
991年7月8日出願、発明者Derek J.Lentz他、およびこ
れに対応する特願平5−502149号(特表平6−501586号
公報)。
6.発明の名称「複数の異種プロセッサをサポートするこ
とのできるマイクロプロセッサ・アーキテクチャ」(Mi
croprocessor Architecture Capable of Supporting Mu
ltiple Heterogeneous Processors)SMOS 7992 MCF/WM
B,米国特許出願第07/726,893号、1991年7月8日出願、
発明者Derek J.Lentz他、およびこれに対応する特願平
5−502151号(特表平6−501123号公報)。
なお、本明細書の記述は本件出願の優先権の基礎たる
米国特許出願07/727,006号の明細書の記載に基づくもの
であって、当該米国特許出願の番号を参照することによ
って当該米国特許出願の明細書の記載内容が本明細書の
一部分を構成するものとする。
2.関連技術の説明 近年、マイクロプロセッサ・アーキテクチャの設計は
複合命令セット・コンピュータ(CISC−Complex Instru
ction Set Computer)アーキテクチャを採用したものか
ら、より単純化された縮小命令セット・コンピュータ
(RISC−Reduced Instruction Set Computer)アーキテ
クチャを採用したものまでに発達している。CISCアーキ
テクチャは、大部分がハードウェアで命令実行パイプラ
インを実現し、サポートしていることを特徴としてい
る。従来のパイプライン構造の代表的なものは、命令フ
ェッチ、命令デコード、データ・ロード、命令実行、デ
ータ・ストアのステージからなり、これらの順序は固定
している。命令セットの異なる部分をパイプラインのそ
れぞれのステージを通して同時並行に実行すると、パフ
ォーマンス上の利点が得られる。パイプラインを長くす
ると、利用できる実行ステージの数が増加し、同時並行
に実行できる命令数が増加する。
CISCパイプライン・アーキテクチャの効率を制約する
一般的問題として、2つある。最初の問題は、先に実行
される条件コード設定命令がパイプラインを通して実質
的に実行を完了するまで、条件付きブランチ命令が正し
く評価できないことである。
従って、そのあとに続く条件付き命令の実行が遅延ま
たは停止(stall)されるので、いくつかのパイプライ
ン・ステージが数プロセッサ・サイクルの間インアクテ
ィブ(inactive)、すなわち不動作のままになってい
る。代表例として、条件コードは、実行ステージを通し
てある命令の処理が完了したときだけ、プロセッサ状況
レジスタ(PSR)とも呼ばれる条件コード・レジスタに
書かれている。そのために、ブランチ条件コードが判断
されるまでの数プロセッサ・サイクルの間、条件付きブ
ランチ命令をデコード・ステージに置いたままパイプラ
インを停止させなければならない。パイプラインが停止
すると、スループットの損失が大になる。さらに、コン
ピュータの平均スループットはプログラム命令ストリー
ムの中で条件付きブランチ命令が条件コード設定命令の
あとに近接して現れる頻度によって左右される。
第2の問題は、プログラム命令ストリームの中で近接
して置かれている命令がプロセッサ・レジスタ・ファイ
ルの同じレジスタを参照する傾向があることから起こる
問題である。データ・レジスタは、連続する命令のスト
ア・ステージとロード・ステージにおいてデータの宛先
またはソースとして頻繁に使用されている。一般的に、
データをレジスタ・ファイルにストアする命令が少なく
とも1つの実行ステージを通して処理を完了してからで
なければ、後続命令のロード・ステージ処理でレジスタ
・ファイルをアクセスすることができないようになって
いる。多数の命令を実行するには、ストア・データを得
るために、1実行ステージで複数のプロセッサ・サイク
ルを必要とするので、実行ステージのオペレーションが
続いている間、パイプライン全体が停止しているのが代
表例である。その結果、コンピュータの実行スループッ
トは、命令ストリームが実行される順序に左右されるこ
とになる。
第3の問題は、命令自体の実行から起こる問題ではな
く、マイクロプロセッサ自体のハードウェア・サポート
による命令実行環境の維持、すなわち、マシンの状態
(state−of−machine)から起こる問題である。現在の
CISCマイクロプロセッサのハードウェア・サブシステム
は、命令の実行中にトラップ条件が現れると、それを検
出できるようになっている。各トラップを処理するに
は、対応するトラップ処理ルーチンをプロセッサに実行
させる必要がある。トラップが検出されたとき、実行パ
イプラインをクリアして、トラップ処理ルーチンが即時
に実行できるようにする必要がある。同時に、トラップ
が現れた正確な個所で、そのときのマシンの状態を設定
しなければならない。この正確な個所は、そのとき実行
中の最初の命令が割込みとトラップのために完了したと
きと、例外のために実行されなかった命令の直前に現れ
る。そのあと、マシンの状態と、この場合も、トラップ
の内容に応じて、実行中の命令自体を処理ルーチンの完
了時に復元しなければならない。その結果、各トラップ
または関連事象(イベント)が起こると、処理ルーチン
の開始時と終了時にパイプラインをクリアし、正確なマ
シンの状態をセーブし、復元するために待ち時間が生
じ、プロセッサのスループットがその分だけ減少するこ
とになる。
CISCアーキテクチャが潜在的にもつスループットを向
上するために、これらの問題に対する解決方法がいろい
ろと試みられている。条件付きブランチ命令が正しく実
行されると想定すれば、ブランチ条件コードの最終的判
断に先立って、パイプライン実行を試行的に進めること
が可能である。また、レジスタが修正されると想定すれ
ば、後続の命令を試行的に実行することが可能である。
処理ルーチンの実行を必要とするような例外の発生を最
小にすることによって、プログラム命令ストリームの処
理に割込みをかける例外の発生頻度を少なくすること
を、別のハードウェアで行うことが可能である。
これらの解決方法は、明らかに、追加ハードウェアを
複雑化するものではあるが、その方法自身にも別の問題
がある。つまり、ブランチ条件コードの最終的判断また
はレジスタ・ファイルのストア・アクセスに先立って命
令の実行を続けるためには、条件付きブランチのロケー
ションを含むプログラム命令ストリーム内の複数の個所
のいずれかに、レジスタ・ファイルの各々の修正内容
に、および例外が発生した場合には、最後の複数の命令
の実行が完了した以前の個所にマシンの状態が復元可能
であることが必要である。その結果、さらに別のサポー
ト・ハードウェアが必要になり、しかも、いずれかのパ
イプライン・ステージのサイクル・タイムが大幅に増加
しないように、ハードウェアを設計しなければならな
い。
RISCアーキテクチャでは、マイクロプロセッサ・アー
キテクチャのハードウェアによる実現を大幅に単純化す
ることによって、上記問題の多くを解決することを試み
ている。極端な場合には、各RISC命令はロード・サイク
ル、実行サイクル、およびストア・サイクルからなる3
つのパイプライン化プログラム・サイクルだけで実行さ
れる。ロードおよびストア・データをバイパスすること
によって、従来のRISCアーキテクチャは、3ステージ・
パイプラインにおいてサイクル当たり1命令の実行を可
能にすることを基本にしている。
可能な限り、RISCアーキテクチャにおけるハードウェ
ア・サポートは最小化され、必要とする機能はソフトウ
ェア・ルーチンで実行するようにしている。その結果、
RISCアーキテクチャは、最適に適合したパイプラインで
実行される単純なロード/ストア命令セットの使用によ
り大幅な柔軟性と高速化が期待できる。また、実際に
は、RISCアーキテクチャは、短い高性能パイプライン
と、増加した命令数を実行する必要性との調和を図る
と、必要とするすべての機能を実現できることが判明し
ている。
RISCアーキテクチャの設計は、一般的に、ブランチ、
レジスタ参照および例外に関してCISCアーキテクチャに
起こっている問題を回避し、あるいは最小化するように
なっている。RISCアーキテクチャにおけるパイプライン
は短く、スピードが最適化されている。パイプラインを
短くすると、パイプライン停止(stall)またはクリア
によって生じる結果を最小化すると共に、マシンの状態
を以前の実行個所に復元する際に起こる問題を最小化す
ることができる。
しかし、一般に認識されている現水準を大幅に超えた
スループット・パフォーマンス向上は、従来のRISCアー
キテクチャによっては容易に達成することができない。
その結果、これに代わるスーパースカラー(super−sca
ler)と呼ばれるアーキテクチャが種々提案されてい
る。これらのアーキテクチャは、一般的には、複数の命
令を同時並行に実行することによって、プロセッサのス
ループットを比例的に向上させることを試みている。残
念ながら、この種のアーキテクチャの場合も、CISCアー
キテクチャの問題と同じでないとしても、条件付きブラ
ンチ、レジスタ参照、および例外処理に同じような問題
が起こっている。
発明の要約 従って、本発明の一般的目的は、従来のCISCアーキテ
クチャとRISCアーキテクチャに対して大幅なパフォーマ
ンス向上が得られ、さらに、マイクロプロセッサで実現
するのに適した高性能の、RISCベースのスーパースカラ
ー型プロセッサ・アーキテクチャを提供することであ
る。
この目的を達成するために、本発明によるマイクロプ
ロセッサ・アーキテクチャは、命令ストアからフェッチ
した命令を同時並行に実行することを可能にしている。
このマイクロプロセッサ・アーキテクチャは命令ストア
から命令セットをフェッチするための命令プリフェッチ
・ユニットを備えている。各命令セットは複数の固定長
命令から構成されている。命令FIFOは、第1バッファと
第2バッファを含む複数の命令セット・バッファに命令
セットを置いておくバッファリングのために用意された
ものである。命令実行ユニットは、レジスタ・ファイル
と複数の機能ユニット(functional unit)から構成さ
れ、第1バッファと第2バッファに置かれている命令セ
ットを調べて、使用可能な機能ユニットに実行させるた
めにこれらの命令の1つを出す機能をもつ命令制御ユニ
ットを備えている。機能ユニットとレジスタ・ファイル
間は複数のデータ経路(data path)で結ばれているの
で、それぞれの命令を並行実行するために必要とされる
レジスタ・ファイルへの複数の独立アクセスが可能にな
っている。
レジスタ・ファイルは、レジスタ・データを一時的に
ストアしておくために使用される別セットのデータ・レ
ジスタを含んでいる。これらの一時データ・レジスタ
は、命令が順序外(out−of−order)で実行される際に
機能ユニットによって処理されたデータを受け入れるた
めに命令実行ユニットによって利用される。一時データ
・レジスタにストアされたデータは選択的に保持され、
そのあと、先行するすべての順序内(in−order)命令
の実行が完了して退避された、命令ストリーム内の命令
のロケーションまで正確なマシン状態が進んだときクリ
アされるか、レジスタ・ファイルに退避される。
最後に、命令ストアからの命令セットのプリフェッチ
は、メイン・プログラム命令ストリーム、ターゲット条
件付きブランチ命令ストリームおよびプロシージャ命令
ストリームのプリフェッチを可能にする複数のプリフェ
ッチ経路によって容易化されている。ターゲット条件付
きブランチ・プリフェッチ経路を利用すると、条件付き
ブランチ命令となり得る両方の命令ストリーム、つま
り、メインとターゲットを同時にプリフェッチすること
が可能である。プロシージャ命令プリフェッチ経路を利
用すると、メインまたはターゲット命令ストリームにあ
る1つの命令を実行する拡張プロシージャの実行を可能
にする上で効果的な補足的命令ストリームを可能にす
る。また、プロシージャ・プリフェッチ経路によると、
少なくともメイン・プリフェッチ・バッファをクリアす
ることなく、これらの拡張プロシージャをフェッチして
実行することができる。
以上のとおり、本発明の利点は、基本的にRISC型のコ
ア・アーキテクチャを利用して非常に高性能なスループ
ットを実現するアーキテクチャを提供することにある。
本発明の別の利点は、サイクルごとに複数の命令の実
行を可能にしたことにある。
さらに、本発明の利点は、複数の命令を同時並行に実
行することを最適化するために必要な機能ユニットを動
的に(ダイナミックに)選択して、利用することを可能
にしたことである。
さらに、本発明の別の利点は、正確なマシン状態復帰
機能をサポートするメカニズムと一体化したレジスタ・
ファイル・ユニットを設けたことにある。
さらに、本発明の別の利点は、レジスタ・ファイル・
ユニット内に複数のレジスタ・ファイルを内蔵し、これ
らのレジスタ・ファイルは汎用化され、タイプ化され、
複数の独立並列整数レジスタ・ファイルとしてのオペレ
ーション、浮動小数点ファイルと整数ファイルとしての
レジスタ・ファイルのオペレーションおよび専用ブール
・レジスタ・ファイルのオペレーションを含む、複数の
レジスタ・ファイル機能を備えていることにある。
さらに、本発明の別の利点とは、ロードとストア・オ
ペレーションおよび例外と割込みの処理を、効率的な命
令キャンセル・メカニズムやロード/ストア順序シンク
ロナイザを含む、正確なマシン状態復帰機能の使用によ
り正確に実行できるようにしたことである。
さらに、本発明の別の利点は、専用レジスタ・ファイ
ル・ユニットによってトラップ状態をサポートして待ち
時間を最小化し、処理スループットを向上したことにあ
る。
さらに、本発明の別の利点は、メインおよびターゲッ
ト・ブランチ・プリフェッチ待ち行列を設け、それによ
って、正確でないターゲット・ブランチ・ストリームが
先に実行されても、本発明によって得られる全体的な処
理スループットに与える影響を最小化したことにある。
さらに、プロシージャ命令プリフェッチ待ち行列が設け
られているので、メインまたはターゲット・ブランチ命
令ストリームの実行に効率的に割り込んで、プロシージ
ャ・ルーチンの実行を通して新規命令を実現することを
可能にし、特に、プロシージャ・ルーチンを外部から修
正することによって、組込みプロシージャ命令を実現す
ることを可能にしたことである。
図面の簡単な説明 本発明の上記およびその他の利点と特徴を一層理解し
やすくするために、以下では、添付図面を参照して本発
明を詳しく説明する。なお、添付図面において、同一部
品には同一参照符号を付して示してある。
第1図は本発明を実現する好適実施例のマイクロプロ
セッサ・アーキテクチャを示す簡略ブロック図である。
第2図は、本発明に従って構成された命令フェッチ・
ユニットを示す詳細ブロック図である。
第3図は、本発明に従って構成されたプログラム・カ
ウンタ・ロジック・ユニットを示すブロック図である。
第4図は、プログラム・カウンタ・データと制御経路
ロジックを示す別の詳細ブロック図である。
第5図は、本発明の命令実行ユニットを示す簡略ブロ
ック図である。
第6a図は、本発明の好適実施例において使用されてい
るレジスタ・ファイル・アーキテクチャを示す簡略ブロ
ック図である。
第6b図は、本発明の好適実施例において使用されてい
る一時バッファ・レジスタ・ファイルの記憶レジスタ形
式を図形で示す図である。
第6c図は、本発明の命令FIFOユニットの最後の2ステ
ージに存在しているときの1次および2次命令セットを
図形で示す図である。
第7a図ないし第7c図は、本発明の好適実施例に従って
設けられた1次整数レジスタの再構成ステージを図形で
示す図である。
第8図は、本発明の好適実施例に従って設けられた再
構成可能浮動小数点および2次整数レジスタ・セットを
図形で示す図である。
第9図は本発明の好適実施例において設けられた3次
ブール・レジスタ・セットを図形で示す図である。
第10図は、本発明の好適実施例に従って構成された命
令実行ユニットの1次整列処理データ経路部分を示す詳
細ブロック図である。
第11図は、本発明の好適実施例に従って構成された命
令実行ユニットの1次浮動小数点データ経路部分を示す
詳細ブロック図である。
第12図は、本発明の好適実施例に従って構成された命
令実行ユニットのブール演算データ経路部分を示す詳細
ブロック図である。
第13図は、本発明の好適実施例に従って構成されたロ
ード/ストア・ユニットを示す詳細ブロック図である。
第14図は、本発明に従って複数の命令を実行する際に
本発明の好適実施例の好ましいオペレーション順序を示
すタイミング図である。
第15図は、本発明の好適実施例に従って構成された仮
想メモリ制御ユニットを示す簡略ブロック図である。
第16図は、本発明の好適実施例で使用される仮想メモ
リ制御アルゴリズムを示すブロック図である。
第17図は、本発明の好適実施例で使用されるキャッシ
ュ制御ユニットを示す簡略ブロック図である。
発明の詳細な説明 I.マイクロプロセッサ・アーキテクチャの概要 ……17 II.命令フェッチ・ユニット ……22 A) IFUデータ経路 ……23 B) IFU制御経路 ……29 C) IFU/IEU制御インタフェース ……43 D) PCロジック・ユニットの詳細 ……46 1)PFおよびExPC制御/データ・ユニットの詳細 ……51 2)PC制御アルゴリズムの詳細 ……61 E) 割込みおよび例外の処理 ……77 1) 概要 ……77 2) 非同期割込み ……79 3) 同期例外 ……81 4) ハンドラ・ディスパッチとリターン ……86 5) ネスト ……91 6) トラップ一覧表 ……93 III.命令実行ユニット ……95 A) IEUデータ経路の詳細 ……103 1) レジスタ・ファイルの詳細 ……103 2) 整数データ経路の詳細 ……115 3) 浮動小数点データ経路の詳細 ……121 4) ブール・レジスタ・データ経路の詳細 ……124 B) ロード/ストア制御ユニット ……131 C) IEU制御経路の詳細 ……135 1) Eデコード・ユニットの詳細 ……136 2) キャリー・チェッカ・ユニットの詳細 ……140 3) データ依存関係チェッカ・ユニットの詳細 ……142 4) レジスタ改名ユニットの詳細 ……143 5) 命令発行ユニットの詳細 ……145 6) 完了制御ユニットの詳細 ……149 7) 退避制御ユニットの詳細 ……150 8) 制御フロー制御ユニットの詳細 ……150 9) バイパス制御ユニットの詳細 ……152 IV.仮想メモリ制御ユニット ……153 V.キャッシュ制御ユニット ……156 VI.要約および結論 ……159 I.マイクロプロセッサ・アーキテクチャの概要 第1図は、本発明のアーキテクチャ100の概要を示す
ものである。命令フェッチ・ユニット(IFU)102と命令
実行ユニット(IEU)104は、アーキテクチャ100の中心
となる機能要素である。仮想メモリ・ユニット(VMU)1
08、キャッシュ制御ユニット(CUU)106、およびメモリ
制御ユニット(MCU)110は、IFU 102とIEU 104の機能を
直接にサポートするためのものである。また、メモリ・
アレイ・ユニット(MAU)112は基本的要素として、アー
キテクチャ100を動作させるためのものである。もっと
も、MAU 112はアーキテクチャ100の1つの一体的なコン
ポーネントとして直接的に存在しない。つまり、本発明
の好適実施例では、IFU 102、IEU 104、VMU 108、CCU 1
06、およびMCU 110は従来の0.8ミクロン設計ルールの低
電力CMOSプロセスを利用してシングル・シリコン・チッ
プ上に実装され、約1,200,000個のトランジスタから構
成されている。アーキテクチャ100の標準プロセッサま
たはシステムのクロック速度は40MHzである。しかし、
本発明の好適実施例によれば、プロセッサの内部クロッ
ク速度は160MHzである。
IFU 102の基本的役割は命令をフェッチし、IEU104に
よる実行が保留されている間命令をバッファに置いてお
き、一般的には、次の命令をフェッチするとき使用され
る次の仮想アドレスを計算することである。
本発明の好適実施例では、各命令は長さが32ビットに
固定されている。命令セット、つまり、4個の命令から
なる「バケット」(bucket)は、CCU 106内の命令用キ
ャッシュ132から128ビット幅の命令バス114を経由してI
FU 102によって同時にフェッチされる。命令セットの転
送は、制御ライン116経由で送られてきた制御信号によ
って調整されて、IFU 102とCCU 106間で行われる。フェ
ッチされる命令セットの仮想アドレスは、IFU仲裁、制
御およびアドレスを兼ねたバス118経由でIFU 102から出
力され、さらにIEU 104とVMU 108間を結合する仲裁、制
御およびアドレス共用バス120上に送出される。VMU 108
へのアクセスの仲裁(arbitration)は、IFU 102とIEU
104の両方がVMU 108を共通の共用資源として利用するこ
とから行われる。本発明の好適実施例では、仮想アドレ
スの物理ページ内のアドレスを定義する下位ビットは、
IFU 102から制御ライン116を経由して直接にキャッシュ
制御ユニット106へ転送される。IFU 102から与えられる
仮想アドレスの仮想上位ビットはバス118、120のアドレ
ス部分によってVMU 108へ送られ、そこで対応する物理
ページ・アドレスに変換される。IFU 102では、この物
理ページ・アドレスは、変換要求がVMU 108に出された
あと内部プロセッサ・クロック・サイクルの1/2の間
に、VMU 108からアドレス制御ライン122経由で直接にキ
ャッシュ制御ユニット106へ転送される。
IFU 102によってフェッチされた命令ストリームの方
は命令ストリーム・バス124経由でIEU 104に渡される。
制御信号は、制御ライン126を介してIFU 102とIEU 104
間でやりとりされる。さらに、ある種の命令フェッチ・
アドレス、例えば、IEU 104内に存在するレジスタ・フ
ァイルへのアクセスを必要とするアドレスは、制御ライ
ン126内のターゲット・アドレス・リターン・バスを経
由してIFU102へ送り返される。
IEU 104は、CCU 106内に設けられたデータ用キャッシ
ュ134との間で80ビット幅双方向データ・バス130を通し
てデータをストアし、データを取り出す。IEU104がデー
タ・アクセスするときの物理アドレス全体は制御バス12
8のアドレス部分によってCCU 106へ渡される。また、制
御バス128を通して、データ転送を管理するための制御
信号をIEU 104とCCU 106との間でやりとりすることもで
きる。IEU 104は、仮想データ・アドレスをCCU 106へ渡
すのに適した物理データ・アドレスに変更するための資
源としてVMU 108を使用する。データ・アドレスの仮想
化部分は、仲裁、制御およびアドレス・バス120を経由
してVMU 108へ渡される。IFU 102に対するオペレーショ
ンと異なり、VMU 108は対応する物理アドレスをバス120
経由でIEU 104へ返却する。アーキテクチャ100の好適実
施例では、IEU 104は物理アドレスを使用して、ロード
/ストア・オペレーションが正しいプログラム・ストリ
ーム順序で行れていることを確かめている。
CCU 106は、物理アドレスで定義したデータ要求を命
令用キャッシュ132とデータ用キャッシュ134のどちらか
該当する方から満足できるかどうかを判断する従来のハ
イレベル機能を備えている。アクセス要求が命令用キャ
ッシュ132またはデータ用キャッシュ134へアクセスする
ことで正しく満足できる場合は、CCU 106はデータ・バ
ス114、128を経由するデータ転送を調整して、その転送
を行う。
データ・アクセス要求が命令用キャッシュ132または
データ用キャッシュ134から満足できない場合は、CCU 1
06は対応する物理アドレスをMCU 110へ渡し、MAU 112が
要求しているのは読取りアクセスであるか書込みアクセ
スであるかを判別し、各要求ごとにCCU 106のソースま
たは宛先キャッシュ132、134を識別するのに十分な制御
情報および要求オペレーションをIFU 102またはIEU 104
から出された最終的データ要求と関係づけるための追加
識別情報も、一緒にMCU110に渡される。
MCU 110は、好ましくは、ポート・スイッチ・ユニッ
ト142を備えており、このユニットは単方向データ・バ
ス136によってCCU 106の命令用キャッシュ132に接続さ
れ、双方向データ・バス138によってデータ用キャッシ
ュ134に接続されている。ポート・スイッチ142は基本的
には、大きなマルチプレクサであり、制御バス140から
得た物理アドレスを複数のポートP0Pn 1400-nのいずれ
かへ送ることを可能にし、また、ポートからデータ・バ
ス136、138へのデータの双方向転送を可能にする。MCU
110によって処理される各メモリ・アクセス要求は、MAU
112をアクセスするとき要求されるメイン・システム・
メモリ・バス162へのアクセスを仲裁する目的でポート1
460-nの1つと関連づけられる。データ転送の接続が確
立されると、MCUは制御情報を制御バス140経由でCCU 10
6に渡して、ポート141およびポート1460-nのうち対応す
る1つを経由して命令用キャッシュ132またはデータ用
キャッシュ134とMAU 112との間でデータを転送すること
を開始する。アーキテクチャ100の好適実施例では、MCU
110は、実際には、CCU 106とMAU 112間を転送する途中
にあるデータをストアまたはラッチしない。このように
したのは、転送の待ち時間を最小にし、MCU 110に1つ
だけ存在するデータを追跡または管理しないですむよう
にするためである。
II.命令フェッチ・ユニット 命令フェッチ・ユニット102の主要エレメントを第2
図に示す。これらのエレメントのオペレーションおよび
相互関係を理解しやすくするために、以下では、これら
のエレメントがIFUデータ経路と制御経路に関与する場
合を考慮して説明する。
A) IFUデータ経路 IFUデータ経路は、命令セットを受け取ってプリフェ
ッチ・バッファ260に一時的にストアしておく命令バス1
14から始まる。プリフェッチ・バッファ260からの命令
セットはIデコード・ユニット262を通ってIFIFOユニッ
ト264へ渡される。命令FIFO 264の最後の2ステージに
ストアされた命令セットは、データ・バス278、280を通
してIEU 104に連続的に取り出して利用することができ
る。
プリフェッチ・バッファ・ユニット260は、一度に1
つの命令セットを命令バス114から受け取る。完全な128
ビット幅命令セットは、一般に、プリフェッチ・バッフ
ァ260のメイン・バッファ(MBUF)188部分の4つの128
ビット幅プリフェッチ・バッファ・ロケーションの1つ
に並列に書き込まれる。追加の命令セットは最高4つま
で同じように、2つの128ビット幅ターゲット・バッフ
ァ(TBUF)190のプリフェッチ・バッファ・ロケーショ
ンにまたは2つの128ビット幅プロシージャ・バッファ
(EBUF)192のプリフェッチ・バッファ・ロケーション
に書き込むことが可能である。好適アーキテクチャ100
では、MBUF 188、TBUF 190またはEBUF192内のプリフェ
ッチ・バッファ・ロケーションのいずれかに置かれてい
る命令セットは、プリフェッチ・バッファ出力バス196
へ転送することが可能である。さらに、直接フォールス
ルー(fall throught)命令セット・バス194は、命令バ
ス114をプリフェッチ・バッファ出力バス196と直接に接
続することによって、MBUF 188、TBUF 190およびEBUF 1
92をバイパスするためのものである。
好適アーキテクチャ100では、MBUF 188は名目的また
はメイン命令ストリーム中の命令セットをバッファする
ために利用される。TBUF 190は、試行的なターゲット・
ブランチ命令ストリームからプリフェッチした命令セッ
トをバッファするために利用される。その結果、プリフ
ェッチ・バッファ・ユニット260を通して、条件付きブ
ランチ命令のあとに置かれている可能性のある両方の命
令ストリームをプリフェッチすることができる。この機
能により、MAU 112の待ち時間は長くなるとしても、少
なくともCCU 112への以後のアクセス待ち時間がなくな
るので、条件付きブランチ命令の解決時にどの命令スト
リームが最終的に選択されるかに関係なく、条件付きブ
ランチ命令のあとに置かれた正しい次の命令セットを得
て、実行することができる。本発明の好適アーキテクチ
ャ100では、MBUF 188とTBUF 190があるために、命令フ
ェッチ・ユニット102は、現れる可能性のある両方の命
令ストリームをプリフェッチすることができ、命令実行
ユニット104に関連して以下に説明するように、正しい
と想定された命令ストリームを引き続き実行することが
できる。条件付きブランチ命令が解決されたとき、正し
い命令ストリームがプリフェッチされて、MBUF 188に入
れられた場合は、TBUF 190に残っている命令セットは無
効にされるだけである。他方、正しい命令ストリームの
命令セットがTBUF 190に存在する場合は、命令プリフェ
ッチ・バッファ・ユニット260を通して、これらの命令
セットがTBUF 190から直接に、並行にMBUF 188内にそれ
ぞれのバッファ・ロケーションへ転送される。それ以前
にMBUF 188にストアされた命令セットは、TBUF190から
転送された命令セットを重ね書きすることによって、事
実上無効にされる。MBUFロケーションへ転送するTBUF命
令セットがなければ、そのロケーションには無効の印が
付けられるだけである。
同様に、EBUF 192は、プリフェッチ・バッファ260を
経由する別の代替プリフェッチ経路となるものである。
EBUF 192は、好ましくは、MBUF 188命令ストリームに現
れた単一の命令、つまり、「プロシージャ」命令で指定
されたオペレーションを実現するために使用される代替
命令ストリームをプリフェッチする際に利用される。こ
のようにすると、複雑な命令や拡張された命令はソフト
ウェア・ルーチンまたはプロシージャを通して実現する
ことができ、すでにプリフェッチされてMBUF 188に入れ
られた命令ストリームを乱すことなくプリフェッチ・バ
ッファ・ユニット260を通して処理することができる。
一般的には、本発明によれば、最初にTBUF190に現れた
プロシージャ命令を処理することができるが、プロシー
ジャ命令ストリームのプリフェッチは保留され、以前に
現れた保留中の条件付きブランチ命令ストリームがすべ
て解決される。これにより、プロシージャ命令ストリー
ムに現れた条件付きブランチ命令は、TBUF 190の使用を
通して矛盾なく処理されることになる。従って、プロシ
ージャ・ストリームでブランチが行われる場合は、ター
ゲット命令セットはすでにプリフェッチされてTBUF 190
に入れられているので、EBUF 192へ並列に転送すること
ができる。
最後に、MBUF 188、TBUF 190およびEBUF 192の各々は
プリフェッチ・バッファ出力バス196に接続され、プリ
フェッチ・ユニットによってストアされた命令セットを
出力バス196上に送出するようになっている。さらに、
バス194を通過するフローは、命令セットを命令バス114
から直接に出力バス196へ転送するためのものである。
好適アーキテクチャ100では、MBUF 188、TBUF 190、E
BUF 192内のプリフェッチ・バッファは直接的にはFIFO
構造を構成していない。その代わりに、どのバッファ・
ロケーションも出力バス196に接続されているので、命
令用キャッシュ132から取り出された命令セットのプリ
フェッチ順序に大幅な自由度をもたせることができる。
つまり、命令フェッチ・ユニット102は命令ストリーム
に一定順序で並んだ命令順に命令セットを判断して、要
求するのが一般的になっている。しかし、命令セットが
IFU 102へ返されるときの順序は、要求したある命令セ
ットが使用可能で、CCU 106だけからアクセス可能であ
り、他の命令セットはMAU 102のアクセスを必要とする
ような場合に合わせて、順序外に現れることも可能であ
る。
命令セットは一定順序でプリフェッチ・バッファ・ユ
ニット260へ返されない場合があっても、出力バス196上
に出力される命令セットの列は、一般的に、IFU 102か
ら出された命令セット要求の順序に従っていなければな
らない。順序内(in−order)の命令ストリーム列は、
例えば、ターゲット・ブランチ・ストリームの試行的実
行に影響されるためである。
Iデコード・ユニット262は、IFIFOユニット264のス
ペースが許すかぎり、プリフェッチ・バッファ出力バス
196から命令セットを、普通は1サイクルに1つの割合
で受け取る。1つの命令セットを構成する4個の命令か
らなる各セットはIデコード・ユニット262によって並
列にデコードされる。関係の制御フロー情報がIFU 102
の制御経路部分のためにライン318から抜き出されてい
る間は、命令セットの内容はIデコード・ユニット262
によって変更されない。
Iデコード・ユニット262からの命令セットはIFIFOユ
ニット264の128ビット幅入力バス198上に送出される。
内部的には、IFIFOユニット264はマスタ/スレーブ・レ
ジスタ200、204、208、212、216、220、224の列から構
成されている。各レジスタはその後続レジスタに接続さ
れ、マスタ・レジスタ200、208、216の内容がFIFOオペ
レーションの内部プロセッサ・サイクルの前半時にスレ
ーブ・レジスタ204、212、220へ転送され、そのあとオ
ペレーションの後半サイクル時に次の後続マスタ・レジ
スタ208、216、224へ転送されるようになっている。入
力バス198はマスタ・レジスタ200、208、216、224の各
々の入力に接続され、FIFOオペレーションの後半サイク
ル時に命令セットがIデコード・ユニット262からマス
タ・レジスタに直接にロードされるようになっている。
しかし、マスタ・レジスタを入力バス198からロードす
ることは、IFIFOユニット264内でデータをFIFOシフトす
ることと同時に行う必要はない。その結果、命令FIFOユ
ニット264内にストアされた命令セットの現在の深さに
関係なく、さらに、IFIFOユニット264内でデータをFIFO
シフトすることから独立して、入力バス198から連続的
にIFIFOユニット264に入れていくことができる。
マスタ/スレーブ・レジスタ200、204、208、212、21
6、220、224の各々は、128ビット幅命令セットの全ビッ
トを並列にストアできるほかに、制御情報のいくつかの
ビットをそれぞれの制御レジスタ202、206、210、214、
218、222、226にストアすることもできる。好ましく
は、制御ビットのセットは、例外不一致(exception mi
ss)と例外修正(exception modify)(VMU)、メモリ
なし(MCU)、ブランチ・バイアス、ストリーム、およ
びオフセット(IFU)からなっている。この制御情報
は、IFIFOマスタ・レジスタに入力バス198から新しい命
令セットをロードするのと同時に、IFU 102の制御経路
部分から発生する。そのあと、制御レジスタ情報は命令
セットと並行してIFIFOユニット264内で並列にシフトさ
れる。
最後に、好適アーキテクチャ100では、IFIFOユニット
264からの命令セットの出力は最後の2マスタ・レジス
タ216、224から同時に得られて、I_Bucket_0とI_Bucket
_1命令セット出力バス278、280上に送出される。さら
に、対応する制御レジスタ情報がIBASV0とIBASV1制御フ
ィールド・バス282、284上に送出される。これらの出力
バス278、282、280、284はすべてIEU 104へ通じる命令
ストリーム・バス124となるものである。
B) IFU制御経路 IFU 102制御経路は、プリフェッチ・バッファ・ユニ
ット260、Iデコード・ユニット262およびIFIFOユニッ
ト264のオペレーションを直接にサポートする。プリフ
ェッチ制御ロジック・ユニット266は主にプリフェッチ
・バッファ・ユニット260のオペレーションを管理す
る。プリフェッチ制御ロジック・ユニット266とIFU 102
は一般的には、クロック・ライン290からシステム・ク
ロック信号を受信して、IFUのオペレーションとIEU 10
4、CCU 106およびVMU 108のオペレーションとの同期を
とるようにしている。命令セットを選択して、MBUF 18
8、TBUF 190およびEBUF 192に書き込むための制御信号
は制御ライン304上に送出される。
多数の制御信号は、制御ライン316上に送出されて、
プリフェッチ制御ロジック・ユニット266へ送られる。
具体的には、フェッチ要求制御信号はプリフェッチ・オ
ペレーションを開始するために送出される。制御ライン
316上に送出される他の制御信号は要求したプリフェッ
チ・オペレーションが目標とする宛先がMBUF 188である
か、TBUF 190であるか、EBUF 192であるかを指定してい
る。プリフェッチ要求を受けて、プリフェッチ制御ロジ
ック・ユニット266はID値を生成し、プリフェッチ要求
をCCU 106に通知できるかどうかを判断する。ID値の生
成は、循環4ビット・カウンタを使用して行われる。
4ビット・カウンタの使用は、次の3つの点で重要で
ある。第1は、最大9個までの命令セットをプリフェッ
チ・バッファ・ユニット260で一度にアクティブにでき
ることである。すなわち、MBUF 188での4命令セット、
TBUF 190での2命令セット、EBUF 192での命令セット、
およびフロー・スルー・バス194経由で直接にIデコー
ド・ユニット262に渡される1命令セットである。第2
は、命令セットが各々4バイトの4個の命令からなるこ
とである。その結果、フェッチする命令を選択するどの
アドレスも、その最下位4ビットは余分になっている。
最後は、プリフェッチ要求アドレスの最下位4ビットと
して挿入することで、プリフェッチ要求IDをプリフェッ
チ要求と容易に関連づけることができることである。こ
れにより、CCU 106とのインタフェースとなるために必
要な総アドレス数が減少することになる。
IFU 102から出されたプリフェッチ要求の順序に対し
て順序外で命令セットがCCU 106から返却されるように
するために、アーキテクチャ100では、CCU 106からの命
令セットの返却と一緒にID要求値が返されるようになっ
ている。しかし、順序外の命令セット返却機能による
と、16個の固有IDが使いつくされるおそれがある。条件
付き命令の組合せが順序外で実行されると、要求された
が、まだ返却されていない追加のプリフェッチと命令セ
ットがあるので、ID値を再使用することが可能になる。
従って、4ビット・カウンタは保持しておくのが好まし
く、それ以降の命令セットのプリフェッチ要求が出され
ないことになり、その場合には、次のID値は、未処理の
まま残っているフェッチ要求やそのときプリフェッチ・
バッファ260に保留されている別の命令セットに関連づ
けられたものとなる。
プリフェッチ制御ロジック・ユニット266はプリフェ
ッチ状況配列(アレイ)268を直接に管理し、この配列
はMBUF188、TBUF 190およびEBUF 192内の各命令セット
・プリフェッチ・バッファ・ロケーションに論理的に対
応する状況記憶ロケーションからなっている。プリフェ
ッチ制御ロジック・ユニット266は、選択およびデータ
・ライン306を通して、データをスキャンし、読み取っ
て、状況レジスタ配列268に書き込むことができる。配
列268内では、メイン・バッファ・レジスタ308は、4個
の4ビットID値(MB ID)、4個の1ビット予約フラグ
(MB RES)および4個の1ビット有効フラグ(MB VAL)
をストアしておくためのものであり、これらの各々は論
理ビット位置別にMBUF 180内のそれぞれの命令セット記
憶ロケーションに対応づけられている。同様に、ターゲ
ット・バッファ・レジスタ310と拡張バッファ・レジス
タ312は、それぞれ2個の4ビットID値(TB ID、EB I
D)、2個の1ビット予約フラグ(TB RES、EB RES)お
よび2個の1ビット有効フラグ(TB VAL、EB VAL)をス
トアしておくためのものである。最後に、フロー・スル
ー状況レジスタ314は1個の4ビットID値(FT ID)、1
個の予約フラグ・ビット(FT RES)および1個の有効フ
ラグ・ビット(FT VAL)をストアしておくためのもので
ある。
状況レジスタ配列268が最初にスキャンされ、該当す
るときは、プリフェッチ要求がCCU 106に出されるたび
にプリフェッチ制御ロジック・ユニット266によって更
新され、そのあとは、命令セットが返されるたびにスキ
ャンされ、更新される。具体的に説明すると、制御ライ
ン316からプリフェッチ要求信号を受け取ると、プリフ
ェッチ制御ロジック・ユニット266は現在の循環カウン
タ生成ID値をインクリメントし、状況レジスタ配列268
をスキャンして、使用可能なID値があるかどうか、プリ
フェッチ要求信号で指定されたタイプのプリフェッチ・
バッファ・ロケーションが使用可能であるかどうかを判
断し、CCU IBUSY制御ライン300の状態を調べてCCU 106
がプリフェッチ要求を受け付けることができるかどうか
を判断し、受付け可能ならば、制御ライン298上のCCU I
READ制御信号を肯定し、インクリメントされたID値をCC
U 106と結ばれたCCU ID出力バス294上に送出する。プリ
フェッチ記憶ロケーションは、対応する予約状況フラグ
と有効状況フラグが共に偽である場合に使用が可能であ
る。プリフェッチIDは、要求がCCU 106に出されるのと
並行して、MBUF 188、TBUF 190、またはEBUF 192内の目
標とする記憶ロケーションに対応する、状況レジスタ配
列268内のID記憶ロケーションに書き込まれる。さら
に、対応する予約状況フラグが真にセットされる。
CCU 106が以前に要求された命令セットをIFU 102へ返
却できるときは、CCU IREADY信号が制御ライン302上で
肯定され、対応する命令セットIDがCCU ID制御ライン29
6上に送出される。プリフェッチ制御ロジック・ユニッ
ト266は状況レジスタ配列268内のID値と予約フラグをス
キャンして、プリフェッチ・バッファ・ユニット260内
の命令セットの目標とする宛先を判別する。一致するも
のは1つだけが可能である。判別されると、命令セット
はバス114を経由してプリフェッチ・バッファ・ユニッ
ト260内の該当ロケーションに書き込まれ、フロー・ス
ルー要求と判別されたときは、直接にIデコード・ユニ
ット262に渡される。どちらの場合も、対応する状況レ
ジスタ配列に入っている有効状況フラグは真にセットさ
れる。
PCロジック・ユニット270は、以下で詳しく説明する
ように、IFU 102全体を調べて、MBUF 188、TBUF 190お
よびEBUF 192命令ストリームの仮想アドレスを探し出
す。この機能を実行する際、PCロジック・ブロック270
はIデコード・ユニット262を制御すると同時に、そこ
から動作する。具体的には、Iデコード・ユニット262
によってデコードされ、プログラムの命令ストリームの
フローの変化と係わりがある可能性のある命令部分はバ
ス318を経由して制御フロー検出ユニット274へ送られる
と共に、直接にPCロジック・ブロック270へ送られる。
制御フロー検出ユニット274は、条件付きブランチ命令
と無条件ブランチ命令、コール型命令、ソフトウェア・
トラップ・プローシージャ命令および種々のリターン命
令を含む制御フロー命令を構成する各命令を、デコード
された命令セットの中から判別する。制御フロー検出ユ
ニット274は制御信号をライン322を経由してPCロジック
・ユニット270へ送る。この制御信号は、Iデコード・
ユニット262に存在する命令セット内の制御フロー命令
のロケーションと種類を示している。これを受けて、PC
ロジック・ユニット270は、一般的には、命令に入れら
れて、ライン318経由でPCロジック・ユニットへ転送さ
れたデータから制御フロー命令のターゲット・アドレス
を判断する。例えば、条件付きブランチ命令に対して先
に実行するためにブランチ・ロジック・バッファが選択
された場合は、PCロジック・ユニット270は条件付きブ
ランチ命令ターゲット・アドレスから命令セットをプリ
フェッチすることを指示し、別々に追跡することを開始
する。従って、制御ライン316上のプリフェッチ要求を
次に肯定すると、PCロジック・ユニット270はさらにラ
イン316を経由する制御信号を肯定し、先行するプリフ
ェッチ命令セットがMBUF188またはEBUF 192へ送られた
ものと想定すると、プリフェッチの宛先をTBUF 190とし
て選択する。プリフェッチ要求をCCU 106へ渡すことが
できるとプリフェッチ制御ロジック・ユニット266が判
断すると、プリフェッチ制御ロジック・ユニット266
は、この場合もライン316を経由してイネーブル(許
可)信号をPCロジック・ユニット270へ送って、ターゲ
ット・アドレスのページ・オフセット部分(CCU PADDR
[13:4])をアドレス・ライン324を経由して直接にCCU
106へ渡すことを可能にする。これと同時に、PCロジッ
ク・ユニット270は、新しい仮想ページから物理ページ
への変換が必要な場合には、さらに、VMU要求信号を制
御ライン328を経由して、ターゲット・アドレスの仮想
化部分(VMU VADDR[13:14])をアドレス・ライン326
を経由してVMU 108へ渡して、物理アドレスに変換す
る。ページ変換が必要でない場合は、VMU 108によるオ
ペレーションは必要でない。その代わりに、以前の変換
結果がバス122に接続された出力ラッチに保存されてい
るので、CCU 106によって即時に使用される。
PCロジック・ユニット270が要求した仮想から物理へ
の変換時にVMU 108にオペレーション・エラーが起こる
と、VMU例外およびVMU不一致制御(miss control)ライ
ン332、334を通して報告される。VMU不一致制御ライン3
34は変換索引緩衝機構(translation lookaside buffe
r:TLB)の不一致を報告する。VMU例外ライン332上のVMU
例外制御信号は、他の例外が起こると発生する。いずれ
の場合も、PCロジック・ユニットは、命令ストリーム中
の現在の実行個所をストアしておき、そのあと無条件ブ
ランチが行われたのと同じように、それを受けて、エラ
ー条件を診断し処理するための専用例外処理ルーチン命
令ストリームをプリフェッチすることによって、エラー
条件を処理する。VMU例外および不一致制御信号は、発
生した例外の種類を示しているので、PCロジック・ユニ
ット270は対応する例外処理ルーチンのプリフェッチ・
アドレスを判別することができる。
IFIFO制御ロジック・ユニット272はIFIFOユニット264
を直接にサポートするためのものである。具体的には、
PCロジック・ユニット270は制御ライン336を経由して制
御信号を出力し、命令セットがIデコード・ユニット26
2から入力バス198経由で使用可能であることをIFIFO制
御ロジック・ユニット272に通知する。IFIFO制御ユニッ
ト272は命令セットを受け取るために、最も奥の使用可
能なマスタ・レジスタ200、208、216、224を選択する役
割をもっている。マスタ・レジスタ202、210、218、226
の各々の出力は制御バス338を経由してIFIFO制御ユニッ
ト272へ渡される。各マスタ制御レジスタによってスト
アされる制御ビットは2ビット・バッファ・アドレス
(IF_Bx_ADR)、単一ストリーム・インジケータ・ビッ
ト(IF_Bx_STRM)、および単一有効ビット(IF_Bx_VL
D)からなっている。2ビット・バッファ・アドレスは
対応する命令セット内の最初の有効命令を指定してい
る。つまり、CCU 106から返された命令セットは、例え
ば、ブランチ・オペレーションのターゲット命令が命令
セット内の最初の命令ロケーションに置かれるように境
界合わせされていないことがある。従って、バッファ・
アドレス値は、実行の対象として考慮される、命令セッ
ト内の最初の命令を一意的に示すために与えられる。
ストリーム・ビットは、条件付き制御フロー命令を含
んでいる命令セットのロケーションを示し、IFIFOユニ
ット264を通る命令のストリームに潜在的制御フローの
変更を引き起こすマーカとして使用されることを基本と
している。メイン命令ストリームは一般にストリーム・
ビット値が0のときMBUF 188を通して処理される。例え
ば、相対条件付きブランチ命令が現れると、対応する命
令セットはマークがつけられ、ストリーム・ビット値が
1となる。条件付命令セットはIデコード・ユニット26
2によって検出される。条件付制御フロー命令は最高4
つまで命令セットに存在することができる。そのあと、
命令セットはIFIFOユニット264の最も奥の使用可能なマ
スタ・レジスタにストアされる。
条件付ブランチ命令のターゲット・アドレスを判断す
るために、現在のIEU 104の実行点アドレス(DPC)、ス
トリーム・ビットで指定された条件付命令が入っている
命令セットの相対ロケーション、制御フロー検出ユニッ
ト274から得られた命令セット内の条件付命令ロケーシ
ョン・オフセットは、制御ライン318を通して対応する
ブランチ命令フィールドから得た相対ブランチ・オフセ
ット値と結合される。その結果はブランチ・ターゲット
の仮想アドレスとなり、PCロジック・ユニット270によ
ってストアされる。ターゲット命令ストリームの最初の
命令セットは、このアドレスを使用してプリフェッチし
てTBUF 190に入れることができる。PCロジック・ユニッ
ト270のために事前に選択されたブランチ・バイアスに
応じて、IFIFOユニット264はMBUF 188またはTBUF 190か
らロードが続けられる。1つまたは2つ以上の条件付フ
ロー命令を含んでいる2番目の命令セットが現れると、
その命令セットはストリーム・ビット値に0のマークが
付けられる。2番目のターゲット・ストリームはフェッ
チできないので、ターゲット・アドレスはPCロジック・
ユニット270によって計算されてストアされるが、プリ
フェッチは行われない。さらに、それ以降の命令セット
はIデコード・ユニット262を通して処理することがで
きない。少なくとも、条件付きフロー制御命令を含んで
いることが分かった命令セットは1つも処理されない。
本発明の好適実施例では、PCロジック・ユニット270
は、最高2個までの命令セットに現れた条件付きフロー
命令を最高8個まで管理することができる。ストリーム
・ビットの変化でマークが付けられた2命令セットの各
々のターゲット・アドレスは4つのアドレス・レジスタ
の配列にストアされ、ターゲット・アドレスは命令セッ
ト内の対応する条件付きフロー命令のロケーションに対
して論理的位置に置かれる。
最初の順序内条件付きフロー命令のブランチ結果が解
決されると、PCロジック・ユニット270はブランチが行
われる場合は、TBUF 190の内容をMBUF 188に転送し、TB
UF 190の内容に無効のマークを付けるように、ライン31
6上の制御信号によってプリフェッチ制御ユニット260に
指示する。正しくない命令ストリーム、つまり、ブラン
チが行われない場合はターゲット・ストリームからの、
ブランチが行われる場合はメイン・ストリームからの命
令セットがIFIFOユニット264にあると、IFIFOユニット2
64からクリアされる。2番目またはそれ以降の条件付き
フロー制御命令が第1ストリーム・ビットのマークが付
けられた命令セットに存在すると、その命令は統一され
た方法で処理される。すなわち、ターゲット・ストリー
ムからの命令セットはプリフェッチされ、MBUF 188また
はTBUF 190からの命令セットはブランチ・バイアスに応
じてIデコード・ユニット262を通して処理され、条件
付きフロー命令が最終的に解決されると、正しくないス
トリーム命令セットがIFIFOユニット264からクリアされ
る。
IFIFOユニット264から正しくないストリーム命令がク
リアされたとき、2番目の条件付きフロー命令がIFIFO
ユニット264に残っていて、最初の条件付きフロー命令
セットにそれ以降の条件付きフロー命令が含まれていな
いと、第2ストリーム・ビットのマークが付いた命令セ
ットのターゲット・アドレスはアドレス・レジスタの最
初の配列にプロモートされる。いずれの場合も、条件付
きフロー命令を含んでいる次の命令セットはIデコード
・ユニット262を通して評価することが可能になる。従
って、ストリーム・ビットをトグルとして使用すると、
ブランチ・ターゲット・アドレスを計算する目的のため
に、また、ブランチ・バイアスが特定の条件付きフロー
制御命令では正しくなかったとあとで判断された場合
に、それより上をクリアすべき命令セット・ロケーショ
ンにマークを付ける目的のために、潜在的制御フローの
変化にマークを付けておき、IFIFOユニット264を通して
追跡することができる。
命令セットをマスタ・レジスタから実際にクリアする
のではなく、IFIFO制御ロジック・ユニット272はIFIFO
ユニット264の対応するマスタ・レジスタの制御レジス
タに入っている有効ビット・フラグをリセットするだけ
である。このクリア・オペレーションはライン336に送
出される制御信号でPCロジック・ユニット270によって
開始される。マスタ制御レジスタ202、210、218、226の
各々の入力は状況バス230を通してIFIFO制御ロジック・
ユニット272が直接にアクセスすることができる。好適
実施例のアーキテクチャ100では、これらのマスタ制御
レジスタ202、210、218、226内のビットは、IFIFOユニ
ット264によるデータ・シフト・オペレーションと並行
してまたは独立してIFIFO制御ユニット272によってセッ
トすることが可能である。この機能により、IEU 104の
オペレーションと非同期に、命令セットをマスタ・レジ
スタ200、208、216、224のいずれかに書き込み、対応す
る状況情報をマスタ制御レジスタ202、210、218、226に
書き込むことができる。
最後に、制御および状況バス230上の追加の制御ライ
ンはIFIFOユニット264のIFIFOオペレーションを可能に
し、指示する。IFIFOシフトは、制御ライン336を通して
PCロジック・ユニット270から出力されたシフト要求制
御信号を受けてIFIFOユニット264によって行われる。IF
IFO制御ユニット272は、命令セットを受け入れるマスタ
・レジスタ200、208、216、224が使用可能であると、制
御信号をライン316を経由してプリフェッチ制御ユニッ
ト266に送って、プリフェッチ・バッファ260から次の該
当命令セットを転送することを要求する。命令セットが
転送されると、配列268内の対応する有効ビットがリセ
ットされる。
C) IFU/IEU制御インタフェース IFU 102とIEU 104とを結ぶ制御インタフェースは制御
バス126によって提供される。この制御バス126はPCロジ
ック・ユニット270に接続され、複数の制御、アドレス
および特殊データ・ラインから構成されている。割込み
要求と受信確認制御信号を制御ライン340を経由して渡
すことにより、IFU 102は割込みオペレーションを通知
し、IEU 104との同期をとることができる。外部で発生
した割込み信号はライン292経由でロジック・ユニット2
70へ送られる。これを受けて、割込み要求制御信号がラ
イン340上に送出されると、IEU 104は試行的に実行され
た命令をキャンセルする。割込みの内容に関する情報
は、割込み情報ライン341を通してやりとりされる。IEU
104がPCロジック・ユニット270によって判断された割
込みサービス・ルーチンのアドレスからプリフェッチさ
れた命令の受信を開始する準備状態になると、IEU 104
はライン340上の割込み受信確認制御信号を肯定する。I
FU 102によってプリフェッチされた割込みサービス・ル
ーチンがそのあと開始される。
IFIFO読取り(IFIFO RD)制御信号はIEU 104から出力
され、最も奥のマスタ・レジスタ224に存在する命令セ
ットが実行を完了したことおよび次の命令セットが必要
であることを通知する。この制御信号を受けると、PCロ
ジック・ユニット270はIFIFOユニット264でIFIFOシフト
・オペレーションを実行するようにIFIFO制御ロジック
・ユニット272に指示する。
PCインクリメント要求とサイズ値(PC INC/SIZE)は
制御ライン344上に送出されて、現在のプログラム・カ
ウンタ値を命令の対応するサイズ数だけ更新するように
PCロジック・ユニット270に指示する。これにより、PC
ロジック・ユニット270は、現在のプログラム命令スト
リーム中の最初の順序内実行命令のロケーションを正確
に指した個所に実行プログラム・カウンタ(DPC)を維
持することができる。
ターゲット・アドレス(TARGET ADDR)はアドレス・
ライン346を経由してPCロジック・ユニット270に返され
る。このターゲット・アドレスは、IEU 104のレジスタ
・ファイルにストアされているデータによって決まるブ
ランチ命令の仮想ターゲット・アドレスである。従っ
て、ターゲット・アドレスを計算するためにIEU 104の
オペレーションが必要である。
制御フロー結果(CF RESULT)制御信号は制御ライン3
48を経由してPCロジック・ユニット270へ送られて、現
在保留されている条件付きブランチ命令が解決されたか
どうか、その結果がブランチによるものなのか、ブラン
チによらないものなのかを示している。これらの制御信
号に基づいて、PCロジック・ユニット270は、条件付き
フロー命令の実行の結果として、プリフェッチ・バッフ
ァ260とIFIFOユニット264に置かれている命令セットの
どれをキャンセルする必要があるかを判断することがで
きる。
いくつかのIEU命令リターン型制御信号(IEU リター
ン)が制御ライン350上を送出されて、IEU 104によって
ある命令が実行されたことをIFU 102に通知する。これ
らの命令には、プロシージャ命令からのリターン、トラ
ップからのリターンおよびサブルーチン・コールからの
リターンがある。トラップからのリターン命令はハード
ウェア割込み処理ルーチンとソフトウェア・トラップ処
理ルーチンで同じように使用される。サブルーチン・コ
ールからのリターンもジャンプとリンク型コールと併用
される。どの場合も、リターン制御信号は、以前に割込
みがかけられた命令ストリームに対して命令フェッチ・
オペレーションを再開するようにIFU 102に通知するた
めに送られる。これらの信号をIEU 104から出すことに
より、システム100の正確なオペレーションを維持する
ことができる、「割込みがかけられた」命令ストリーム
の再開はリターン命令の実行個所から行われる。
現命令実行PCアドレス(現IF_PC)はアドレス・バス3
52を経由してIEU 104へ送られる。このアドレス値(DP
C)はIEU 104によって実行される正確な命令を指定して
いる。つまり、IEU 104が現在のIF_PCアドレスを通過し
た命令を先に試行的に実行している間は、このアドレス
は、割込み、例外、その他に正確なマシンの状態が分か
っていることが必要な事象の発生に対してアーキテクチ
ャ100を正確に制御するために保持されていなければな
らない。現在実行中の命令ストリームの中の正確なマシ
ンの状態を進めることが可能であるとIEU 104が判断す
ると、PC Inc/Size信号がIFU 102に送られ、即時に現在
のIF_PCアドレス値に反映される。
最後に、アドレスおよび双方向データ・バス354は特
殊レジスタのデータを転送するためのものである。この
データはIEU 104によってIFU 102内の特殊レジスタに入
れられ、あるいはそこから読み取られるようにプログラ
ムすることが可能である。特殊レジスタのデータは一般
にIFU 102が使用できるように、IEU 104によってロード
され、あるいは計算される。
D) PCロジック・ユニットの詳細 PC制御ユニット362、割込み制御ユニット363、プリフ
ェッチPC制御ユニット364および実行PC制御ユニット366
を含むPCロジック・ユニット270の詳細図は第3図に示
されている。PC制御ユニット362はインタフェース・バ
ス126を通してプリフェッチ制御ユニット266、IFIFO制
御ロジック・ユニット272、およびIEU 104から制御信号
を受けて、プリフェッチおよび実行PC制御ユニット36
4、366に対してタイミング制御を行う。割込み制御ユニ
ット363は、プリフェッチ・トラップ・アドレス・オフ
セットを判断してそれぞれのトラップ・タイプを処理す
る該当処理ルーチンを選択することを含めて、割込みと
例外の正確な管理を担当する。プリフェッチPC制御ユニ
ット364は、特に、トラップ処理とプロシージャ・ルー
チン命令のフローのためのリターン・アドレスをストア
することを含めて、プリフェッチ・バッファ188、190、
192をサポートするために必要なプログラム・カウンタ
の管理を担当する。このオペレーションをサポートする
ために、プリフェッチPC制御ユニット364は、物理アド
レス・バス・ライン324上のCCU PADDERアドレスとアド
レス・ライン326上のVMU VMADDRアドレスを含むプリフ
ェッチ仮想アドレスを生成することを担当する。その結
果、プリフェッチPC制御ユニット364は、現在のプリフ
ェッチPC仮想アドレス値を保持することを担当する。
プリフェッチ・オペレーションは一般に制御ライン31
6上を送出された制御信号を通してIFIFO制御ロジック・
ユニット272によって開始される。これを受けて、PC制
御ユニット362はいくつかの制御信号を生成して制御ラ
イン372上に出力し、プリフェッチPC制御ユニットを動
作させて、アドレス・ライン324、326上にPADDRアドレ
スと、必要に応じてVMADDRアドレスを生成する。値が0
から4までのインクリメント信号も制御ライン374上に
送出される場合もあるが、これは、PC制御ユニット362
が現在のプリフェッチ・アドレスから命令セットのフェ
ッチを再実行しているか、一連のプリフェッチ要求の中
の2番目の要求に対して位置合わせを行っているか、プ
リフェッチのために次の全順次命令セットを選択してい
るか、によって決まる。最後に、現在のプリフェッチ・
アドレスPF_PCがバス370上に送出され、実行PC制御ユニ
ット366へ渡される。
新しいプリフェッチ・アドレスは、いつくかのソース
から発生する。アドレスの主要なソースは、バス352経
由で実行PC制御ユニット366から送出された現在のIF_PC
アドレスである。原理的には、IF_PCアドレスからはリ
ターン・アドレスが得られ、これは、初期コール、トラ
ップまたはプロシージャ命令が現れたとき、プリフェッ
チPC制御ユニットによってあとで使用されるものであ
る。IF_PCアドレスは、これらの命令が現れるたびに、
プリフェッチPC制御ユニット364内のレジスタにストア
される。このようにして、PC制御ユニット362は制御ラ
イン350を通してIEUリターン信号を受けたとき、プリフ
ェッチPC制御ユニット364内のリターン・アドレス・レ
ジスタを選択して新しいプリフェッチ仮想アドレスを取
り出すだけでよく、これによって元のプログラム命令ス
トリームを再開する。
プリフェッチ・アドレスのもう1つのソースは、実行
PC制御ユニット366から相対ターゲット・アドレス・バ
ス382を経由して、あるいはIEU 104から絶対ターゲット
・アドレス・バス346を経由して送出されたターゲット
・アドレス値である。相対ターゲット・アドレスとは、
実行PC制御ユニット366によって直接に計算できるアド
レスである。絶対ターゲット・アドレスは、これらのタ
ーゲット・アドレスがIEUレジスタ・ファイルに入って
いるデータに依存するので、IEU 104に生成させる必要
がある。ターゲット・アドレスはターゲット・アドレス
・バス384を通ってプリフェッチPC制御ユニット364へ送
られ、プリフェッチ仮想アドレスとして使用される。相
対ターゲット・アドレスを計算する際、対応するブラン
チ命令のオペランド部分もIデコード・ユニット262か
らバス318のオペランド変位部分を経由して送られる。
プリフェッチ仮想アドレスのもう1つのソースは、実
行PC制御ユニット366である。リターン・アドレス・バ
ス352'は、現在のIF_PC値(DPC)をプリフェッチPC制御
ユニット364へ転送するためのものである。このアドレ
スは、割込み、トラップ、その他コールなどの制御フロ
ー命令が命令ストリーム内に現れた個所でリターン・ア
ドレスとして使用される。プリフェッチPC制御ユニット
364は、新しい命令ストリームをプリフェッチするため
に解放される。PC制御ユニット362は、対応する割込み
またはトラップ処理ルーチンまたはサブルーチンが実行
されると、IEU 104からライン350を経由してIEUリター
ン信号を受け取る。他方、PC制御ユニット362はライン3
72上のPFPC信号の1つを通して、およびライン350経由
で送られてきて実行されたリターン命令のIDに基づい
て、現在のリターン仮想アドレスを収めているレジスタ
を選択する。そのあと、このアドレスが使用されて、PC
ロジック・ユニット270によるプリフェッチ・オペレー
ションを続行する。
最後に、プリフェッチ仮想アドレスが取り出されるも
う1つのソースは、特殊レジスタ・アドレスおよびデー
タ・バス354である。IEU 104によって計算またはロード
されたアドレス値、または少なくともベース・アドレス
値は、データとしてバス354を経由してプリフェッチPC
制御ユニット364へ転送される。ベース・アドレスは、
トラップ・アドレス・テーブル、高速トラップ・テーブ
ル、およびベース・プロシージャ命令ディスパッチ・テ
ーブルのアドレスを含んでいる。バス354を通して、プ
リフェッチおよびPC制御ユニット364、366内のレジスタ
の多くを読み取ることもできるので、マシンの状態の対
応する側面をIEU 104を通して処理することが可能であ
る。
実行PC制御ユニット366は、PC制御ユニット362の制御
を受けて、現在のIF_PCアドレス値を計算することを主
な役割としている。この役割において、実行PC制御ユニ
ット366はPC制御ユニット362からExPC制御ライン378を
経由して送られてきた制御信号と、制御ライン380を経
由して送られてきたインクリメント/サイズ制御信号を
受けて、IF_PCアドレスを調整する。これらの制御信号
は、主に、ライン342経由で送られてきたIFIFO読取り制
御信号とIEU 104から制御ライン344経由で送られてきた
PCインクリメント/サイズ値を受けると生成される。
1)PFおよびExPC制御/データ・ユニットの詳細 第4図は、プリフェッチおよび実行PC制御ユニット36
4、366の詳細ブロック図である。これらのユニットは主
に、レジスタ、インクリメンタ(増分器)その他の類似
部品、セレクタおよび加算器ブロックから構成されてい
る。これらのブロック間のデータ転送を管理する制御
は、PFPC制御ライン372、ExPC制御ライン378およびイン
クリメント制御ライン374、380を通してPC制御ユニット
362によって行われる。説明を分かりやすくするため
に、第4図のブロック図には、これらの個々の制御ライ
ンは示されていない。しかし、これらの制御信号が以下
に説明するように、これらのブロックへ送られることは
勿論である。
プリフェッチPC制御ユニット364の中心となるものは
プリフェッチ・セレクタ(PF_PC SEL)であり、これは
現プリフェッチ仮想アドレスの中央セレクタとして動作
する。この現プリフェッチ・アドレスはプリフェッチ・
セレクタから出力バス392を通ってインクリメンタ・ユ
ニット394へ送られて、次のプリフェッチ・アドレスを
生成する。この次のプリフェッチ・アドレスはインクリ
メンタ出力バス396を通ってレジスタMBUF PFnPC 398、T
BUF PFnPC 400、およびEBUF PFnPC402の並列配列へ送ら
れる。これらのレジスタ398、400、402は実効的には次
の命令プリフェッチ・アドレスをストアしているが、本
発明の好適実施例によれば、別々のプリフェッチ・アド
レスがMBUF 188、TBUF190、およびEBUF 192に保持され
ている。MBUF、TBUFおよびEBUF PFnPCレジスタ398、40
0、402にストアされたプリフェッチ・アドレスは、アド
レス・バス404、408、410からプリフェッチ・セレクタ3
90へ渡される。従って、PC制御ユニット362はプリフェ
ッチ・レジスタ398、400、402の別の1つをプリフェッ
チ・セレクタが選択することを指示することだけでプリ
フェッチ命令ストリームの即時切替えを指示することが
できる。ストリームの中の次の命令セットをプリフェッ
チするために、そのアドレス値がインクリメンタ394に
よってインクリメントされると、その値がプリフェッチ
・アドレス398、400、402のうち該当するレジスタへ返
却される。もう1つの並列レジスタ配列は簡略化のため
単一の特殊レジスタ・ブロック412として示されている
が、この配列はいくつかの特殊アドレスをストアするた
めのものである。レジスタ・ブロック412はトラップ・
リターン・アドレス・レジスタ、プロシージャ命令リタ
ーン・アドレス・レジスタ、プロシージャ命令ディスパ
ッチ・テーブル・ベース・アドレス・レジスタ、トラッ
プ・ルーチン・ディスパッチ・テーブル・ベース・アド
レス・レジスタ、および高速トラップ・ルーチン・ベー
ス・アドレス・レジスタから構成されている。PC制御ユ
ニット362の制御を受けて、これらのリターン・アドレ
ス・レジスタはバス352'を通して現IF_PC実行アドレス
を受け入れることができる。レジスタ・ブロック412内
のリターンおよびベース・アドレス・レジスタにストア
されたアドレス値はIEU 104から独立して読み書きする
ことができる。レジスタが選択され、値が特殊レジスタ
・アドレスおよびデータ・バス354を経由して転送され
る。
特殊レジスタ・ブロック412内のセレクタはPC制御ユ
ニット362によって制御され、レジスタ・ブロック412の
レジスタにストアされたアドレスを特殊レジスタ出力バ
ス416上に送出して、プリフェッチ・セレクタ390へ渡す
ことができる。リターン・アドレスは直接にプリフェッ
チ・セレクタ390へ渡される。ベース・アドレス値は割
込み制御ユニット363から割込みオフセット・バス373経
由で送られてきたオフセット値と結合される。ソースか
らバス373'経由でプリフェッチ・セレクタ390へ渡され
た特殊アドレスは、新しいプリフェッチ命令ストリーム
の初期アドレスとして使用され、そのあとインクリメン
タ394とプリフェッチ・レジスタ398、400、402の1つを
通るアドレスのインクリメント・ループを続行すること
ができる。
プリフェッチ・セレクタ390へ送られるアドレスのも
う1つのソースは、ターゲット・アドレス・レジスタ・
ブロック414内のレジスタ配列である。ブロック414内の
ダーゲット・レジスタには、好適実施例によれば、8つ
の潜在的ブランチ・ターゲット・アドレスがストアされ
る。これらの8つの記憶ロケーションはIFIFOユニット2
64の最下位の2マスタ・レジスタ216、224に保持されて
いる8つの潜在的に実行可能な命令に論理的に対応して
いる。これらの命令のどれでもが、および潜在的にはす
べてが条件付きブランチ命令となり得るので、ターゲッ
ト・レジスタ・ブロック414は、あらかじめ計算された
ターゲット・アドレスをストアしておくので、TBUF 190
を通してターゲット命令ストリームをプリフェッチする
ために使用するのを待たせることができる。特に、PC制
御ユニット362がターゲット命令ストリームのプリフェ
ッチを即時に開始するように条件付きブランチ・バイア
スがセットされると、ターゲット・アドレスはターゲッ
ト・レジスタ・ブロック414からアドレス・バス418を経
由してプリフェッチ・セレクタ390へ送られる。インク
リメンタ394によってインクリメントされたあと、アド
レスはTBUF PFnPC 400へ戻されてストアされ、ターゲッ
ト命令ストリームをあとでプリフェッチするオペレーシ
ョンで使用される。別のブランチ命令がターゲット命令
ストリームに現れると、その2番目のブランチのターゲ
ット・アドレスが計算され、最初の条件付きブランチ命
令が解決されて使用されるまでの間、ターゲット・レジ
スタ配列414にストアされている。
ターゲット・レジスタ・ブロック414にストアされ
た、計算で求めたターゲット・アドレスは、実行PC制御
ユニット366内のターゲット・アドレス計算ユニットか
らアドレス・ライン382を経由して、あるいはIEU 104か
ら絶対ターゲット・アドレス・バス346を経由して転送
される。
プリフェッチPF_PCセレクタ390を通って転送されるア
ドレス値は、完全な32ビット仮想アドレス値である。ペ
ージ・サイズは本発明の好適実施例では、16Kバイトに
固定されており、最大ページ・オフセット・アドレス値
[13:0]に対応している。従って、現プリフェッチ仮想
ページ・アドレス[27:14]に変化がなければ、VMUペー
ジの変換は不要である。プリフェッチ・セレクタ390内
のコンパレータはそのことを検出する。VMU変換要求信
号(VMXLAT)は、インクリメントがページ境界をこえて
行われたか、制御のフローが別のページ・アドレスへブ
ランチしたために、仮想ページ・アドレスが変化したと
き、ライン372'を経由してPC制御ユニット362へ送られ
る。他方、PC制御ユニット362はライン324上のCCU PADD
Rのほかに、VM VADDRアドレスをバッファ・ユニット420
からライン326上に送出し、該当の制御信号をVMU制御ラ
イン326、328、330上に送出して、VMU仮想ページから物
理ページへの変換を得るように指示する。ページ変換が
必要でない場合は、現物理ページ・アドレス[31:14]
はバス122上のVMUユニット108の出力側のラッチによっ
て保持される。
バス370上に送出された仮想アドレスはインクリメン
ト制御ライン374から送られてきた信号を受けて、イン
クリメンタ394によってインクリメントされる。インク
リメンタ394は、次の命令セットを選択するために、命
令セットを表す値(4命令または16バイト)だけインク
リメントする。CCUユニット106へ渡されるプリフェッチ
・アドレスの下位4ビットはゼロになっている。従っ
て、最初のブランチ・ターゲット命令セット内の実際の
ターゲット・アドレス命令は最初の命令ロケーションに
置かれていない場合がある。しかし、アドレスの下位4
ビットはPC制御ユニット362へ送られるので、最初のブ
ランチ命令のロケーションをIFU 102が判別することが
できる。ターゲット・アドレスの下位ビット[3:2]を
2ビット・バッファ・アドレスとして返して、位置合わ
せされていないターゲット命令セットから実行すべき正
しい最初の命令を選択するための検出と処理は、新しい
命令ストリーム、つまり、命令ストリームの中の最初の
非順次命令セット・アドレスの最初のプリフェッチのと
きだけ行われる。命令セットの最初の命令のアドレスと
命令セットをプリフェッチする際に使用されるプリフェ
ッチ・アドレスとの間の非位置合わせの関係は、現順次
命令ストリームが存続している間無視することができ、
そのあとも無視される。
第4図に示した機能ブロックの残り部分は実行PC制御
ユニット366を構成している。本発明の好適実施例によ
れば、実行PC制御ユニット366は独立に機能するプログ
ラム・カウンタ・インクリメンタを独自に備えている。
この機能の中心となるのは実行セレクタ(DPC SEL)430
である。実行セレクタ430からアドレス・バス352'上に
出力されるアドレスはアーキテクチャ100の現在の実行
アドレス(DPC)である。この実行アドレスは加算ユニ
ット434へ送られる。ライン380上に送出されたインクリ
メント/サイズ制御信号は1から4までの命令インクリ
メント値を指定しており、この値は加算ユニット434に
よってセレクタ430から得たアドレスに加えられる。加
算器432が出力ラッチ機能を実行するたびに、インクリ
メントされた次の実行アドレスがアドレス・ライン436
を経て直接に実行セレクタ430に返され、次の命令イン
クリメント・サイクルで使用される。
初期実行アドレスとその後のすべての新しいストリー
ム・アドレスは、アドレス・ライン440を経由して新ス
トリーム・レジスタ・ユニット438から得られる。新ス
トリーム・レジスタ・ユニット438は、プリフェッチ・
セレクタ390からPFPCアドレス・バス370を経由して送ら
れきた新しい現プリフェッチ・アドレスを直接にアドレ
ス・バス440に渡すことも、あとで使用するためにスト
アしておくこともできる。つまり、プリフェッチPC制御
ユニット364が新しい仮想アドレスからプリフェッチを
開始することを判断した場合は、新しいストリーム・ア
ドレスは新ストリーム・レジスタ・ユニット438によっ
て一時的にストアされる。PC制御ユニット362は、プリ
フェッチと実行インクリメントの両サイクルに関与する
ことによって、実行アドレスが新命令ストリームを開始
した制御フロー命令に対応するプログラム実行個所まで
に達するまで新ストリーム・アドレスを新ストリーム・
レジスタ438に置いておく。新ストリーム・アドレスは
そのあと新ストリーム・レジスタ・ユニット438から出
力されて実行セレクタ430へ送られ、新命令ストリーム
内の実行アドレスを独立して生成することを開始する。
本発明の好適実施例によれば、新ストリーム・レジス
タ・ユニット438は2つの制御フロー命令ターゲット・
アドレスをバッファリングする機能を備えている。新ス
トリーム・アドレスを即時に取り出すことにより、殆ど
待ち時間がなく実行PC制御ユニット366を現実行アドレ
ス列の生成から新実行アドレス・ストリーム列の生成に
切り替えることができる。
最後に、IF_PCセレクタ(IF_PC SEL)442は最終的に
現IF_PCアドレスをアドレス・バス352上に送出してIEU
104へ送るためのものである。IF_PCセレクタ442への入
力は実行セレクタ430または新ストリーム・レジスタ・
ユニット438から得た出力アドレスである。殆どの場
合、IF_PCセレクタ442はPC制御ユニット362の指示を受
けて、実行セレクタ430から出力された実行アドレスを
選択する。しかし、新命令ストリームの実行開始のため
に使用される新仮想アドレスへ切り替える際の待ち時間
をさらに短縮するために、新ストリーム・レジスタ・ユ
ニット438からの選択したアドレスをバイパスして、バ
ス440経由で直接にIF_PCセレクタ442へ送り、現IF_PC実
行アドレスとして得ることができる。
実行PC制御ユニット366は、すべての相対ブランチ・
ターゲット・アドレスを計算する機能を備えている。現
実行点アドレスと新ストリーム・レジスタ・ユニット43
8から得たアドレスは、アドレス・バス352'、440を経由
して制御フロー・セレクタ(CF_PC)446に渡される。そ
の結果、PC制御ユニット362は大幅な柔軟性をもって、
ターゲット・アドレス計算の基となる正確な初期アドレ
スを選択することができる。この初期アドレス、つま
り、ベース・アドレスはアドレス・バス454を経由して
ターゲット・アドレスALU 450へ送られる。ターゲットA
LU 450への入力となるもう1つの値は、制御フロー変位
計算ユニット452からバス458経由で送られてくる。相対
ブランチ命令は、アーキテクチャ100の好適実施例によ
れば、新相対ターゲット・アドレスを指定した即値モー
ド定数の形態をした変位値を含んでいる。制御フロー変
位計算ユニット452はIデコード・ユニットのオペラン
ド出力バス318から初めて得たオペランド変位値を受け
取る。最後に、オフセット・レジスタ値はライン456を
経由してターゲット・アドレスALU 450へ送られる。オ
フセット・レジスタ448はPC制御ユニット362から制御ラ
イン378'を経由してオフセット値を受け取る。オフセッ
ト値の大きさはアドレス・ライン454上を送られるベー
ス・アドレスから相対ターゲット・アドレスを計算する
ときの現ブランチ命令のアドレスまでのアドレス・オフ
セットに基づいてPC制御ユニット362によって判断され
る。つまり、PC制御ユニット362は、IFIFO制御ロジック
・ユニット272を制御することによって、現実行点アド
レスの命令(CP_PCによって要求された)とIデコード
・ユニット262によって現在処理中の、従ってPCロジッ
ク・ユニット270によって処理中の命令を分離している
命令の個数を追跡して、その命令のターゲット・アドレ
スを判断する。
相対ターゲット・アドレスがターゲット・アドレスAL
U 450によって計算されると、そのターゲット・アドレ
スはアドレス・バス382を通して対応するターゲット・
レジスタ414に置き込まれる。
2) PC制御アルゴリズムの詳細 1.メイン命令ストリームの処理:MBUF PFnPC 1.1 次のメイン・フロー・プリフェッチ命令のアド
レスはMBUF PFnPCにストアされる。
1.2 制御フロー命令がないときは、32ビット・イン
クリメンタはMBUF PFnPCに入っているアドレス値を、各
プリフェッチ・サイクルごとに16バイト(x16)だけ調
整する。
1.3 無条件制御フロー命令がIデコードされると、
命令セットに続いてフェッチされたすべてのプリフェッ
チ・データはフラッシュされ、MBUF PFnPCには、ターゲ
ット・レジスタ・ユニット、PF_PCセレクタおよびイン
クリメンタを通して、新しいメイン命令ストリーム・ア
ドレスがロードされる。新しいアドレスは新ストリーム
・レジスタにもストアされる。
1.3.1 相対無条件制御フローのターゲット・アド
レスはIFUが保持しているレジスタ・データからと制御
フロー命令の後に置かれたオペランド・データからIFU
によって計算される。
1.3.2 絶対無条件制御フローのターゲット・アド
レスはレジスタ基準値、ベース・レジスタ値、およびイ
ンデックス・レジスタ値からIEUによって最終的に計算
される。
1.3.2.1 命令プリフェッチ・サイクルは絶対ア
ドレス制御フロー命令に対してターゲット・アドレスが
IEUから返されるまで停止する。命令実行サイクルは続
行される。
1.4 無条件制御フロー命令から得た次のメイン・フ
ロー・プリフェッチ命令のアドレスはバイパスされて、
ターゲット・アドレス・レジスタ・ユニット、PF_PCセ
レクタおよびインクリメンタを経由して送られ、最終的
にMBUF PFnPCにストアされ、プリフェッチは1.2から続
けられる。
2.プロシージャ命令ストリームの処理:EBUF PFnPC 2.1 プロシージャ命令はメインまたはブランチ・タ
ーゲット命令ストリームの中でプリフェッチされる。タ
ーゲット・ストリームの中でフェッチされた場合は、条
件付き制御フロー命令が解決され、プロシージャ命令が
MBUFへ転送されるまでプロシージャ・ストリームのプリ
フェッチを停止する。これにより、プロシージャ命令ス
トリームに現れた条件付き制御フローを処理する際にTB
UFを使用できる。
2.1.1 プロシージャ命令はプロシージャ命令スト
リームの中に置いてはならない。つまり、プロシージャ
命令はネストしてはならない。プロシージャ命令からリ
ターンすると、実行は主命令ストリームに戻る。ネスト
を可能にするためには、ネストしたプロシージャ命令か
ら別の専用リターンが必要である。アーキテクチャはこ
の種の命令を容易にサポートできるが、プロシージャ命
令をネストする機能があっても、アーキテクチャの性能
が向上する見込みはない。
2.1.2 メイン命令ストリームにおいては、第1お
よび第2条件付き制御フロー命令を含む命令セットを含
んでいるプロシージャ命令ストリームは、第1命令セッ
トの中の条件付き制御フロー命令が解決し、第2条件付
き制御フロー命令セットがMBUFへ転送されるまで第2条
件付き制御フロー命令セットに対してプリフェッチを停
止する。
2.2 プロシージャ命令は、命令の即値モード・オペ
ランド・フィールドとして含まれている相対オフセット
によって、プロシージャ・ルーチンの開始アドレスを示
している。
2.2.1 プロシージャ命令から得られたオフセット
値はIFUに維持されているプロシージャ・ベース・アド
レス(PBR)レジスタに入っている値と結合される。こ
のPBRレジスタは、特殊レジスタの移動命令が実行され
ると、特殊アドレスおよびデータ・バスを通して読み書
き可能である。
2.3 プロシージャ命令が現れると、次のメイン命令
ストリームIF_PCアドレスはDPCリターン・アドレス・レ
ジスタにストアされ、プロセッサ・ステータス・レジス
タ(PSR)内のプロシージャ進行中ビット(procedure−
in−progress bit)がセットされる。
2.4 プロシージャ・ストリームの開始アドレスはPBR
レジスタ(プロシージャ命令オペランド・オフセット値
を加えて)からPF_PCセレクタへ送られる。
2.5 プロシージャ・ストリームの開始アドレスは新
ストリーム・レジスタ・ユニットとインクリメンタへ同
時に送られ、(x16)だけインクリメントする。インク
リメントされたアドレスはそのあとEBUF PFnPCにストア
される。
2.6 制御フロー命令がないと、32ビット・インクリ
メンタは各プロシージャ命令プリフェッチ・サイクルご
とにEBUF PFnPCに入っているアドレス値を(x16)だけ
調整する。
2.7 無条件制御フロー命令がIデコードされると、
ブランチ命令のあとにフェッチされたすべてのプリフェ
ッチ・データはフラッシュされ、EBUF PFnPCには新しい
プロシージャ命令ストリーム・アドレスがロードされ
る。
2.7.1 相対無条件制御フロー命令のターゲット・
アドレスはIFUに保持されているレジスタ・データから
と制御フロー命令の即値モード・オペランド・フィール
ド内に入っているオペランド・データからIFUによって
計算される。
2.7.2 絶対無条件ブランチのターゲット・アドレ
スはレジスタ基準値、ベース・レジスタ値およびインデ
ックス・レジスタ値からIEUによって計算される。
2.7.2.1 命令プリフェッチ・サイクルは絶対ア
ドレス・ブランチに対してターゲット・アドレスがIEU
から返されるまで停止する。実行サイクルは続行され
る。
2.8 次のプロシージャ・プリフェッチ命令セットの
アドレスはEBUF PFnPCにストアされ、プリフェッチは1.
2から続けられる。
2.9 プロシージャ命令からのリターンがIデコード
されると、プリフェッチがuPCレジスタにストアされて
いるアドレスから続けられ、そのあと(x16)だけイン
クリメントされ、あとでプリフェッチするためにMBUF P
FnPCレジスタに返される。
3 ブランチ命令ストリームの処理:TBUF PFnPC 3.1 MBUF命令ストリームの中の最初の命令セットに
現れた条件付き制御フロー命令がIデコードされると、
ターゲット・アドレスはそのターゲット・アドレスが現
アドレスに対する相対アドレスならばIFUによって、絶
対アドレスならばIEUによって判断される。
3.2 「ブランチを行うバイアス」の場合: 3.2.1 ブランチが絶対アドレスに行われる場合
は、ターゲット・アドレスがIEUから返されるまで命令
プリフェッチ・サイクルを停止する。実行サイクルは続
行される。
3.2.2 PF_PCセレクタとインクリメンタを経由して
転送することによってブランチ・ターゲット・アドレス
をTBUF PFnPCにロードする。
3.2.3 ターゲット命令ストリームがプリフェッチ
されてTBUFに入れられたあとあとで実行するためにIFIF
Oに送られる。IFIFOとTBUFが一杯になると、プリフェッ
チを停止する。
3.2.4 32ビット・インクリメンタは各プリフェッ
チ・サイクルごとにTBUF PFnPCに入っているアドレス値
を(x16)だけ調整する。
3.2.5 ターゲット命令ストリーム内の2番目の命
令セットに現れた条件付き制御フロー命令がIデコード
されるとプリフェッチ・オペレーションを、第1の
(主)セット内のすべての条件付きブランチ命令が解決
されるまで停止する(しかし、先に進んで、相対ターゲ
ット・アドレスを計算しターゲット・レジスタにストア
する)。
3.2.6 最初の命令セット内の条件付きブランチを
「行う」と解釈された場合: 3.2.6.1 ブランチのソースがプロシージャ進行
中ビットから判断されたEBUF命令セットであったときは
MBUFまたはEBUFに入っている最初の条件付きフロー命令
セットのあとに置かれた命令セットをフラッシュする。
3.2.6.2 プロシージャ進行中ビットの状態に基
づいて、TBUF PFnPC値をMBUF PFnPCまたはEBUFへ転送す
る。
3.2.6.3 プロシージャ進行中ビットの状態に基
づいて、プリフェッチしたTBUF命令をMBUFまたはEBUFへ
転送する。
3.2.6.4 2番目の条件付きブランチ命令セット
がIデコードされていなければ、プロシージャ進行中ビ
ットの状態に基づいて、MBUFまたはEBUFプリフェッチ・
オペレーションを続行する。
3.2.6.5 2番目の条件付きブランチ命令がIデ
コードされていれば、その命令の処理を開始する(ステ
ップ3.3.1へ進む)。
3.2.7 最初の条件付き命令セットの中の命令に対
する条件付き制御を「行わない」と解釈された場合: 3.2.7.1 ターゲット命令ストリームからの命令
セットと命令のIFIFOとIEUをフラッシュする。
3.2.7.2 MBUFまたはEBUFプリフェッチ・オペレ
ーションを続行する。
3.3 「ブランチが行われないバイアス」の場合: 3.3.1 命令をプリフェッチしてMBUFに入れること
を停止する。実行サイクルを続ける。
3.3.1.1 最初の条件付き命令セットの中の条件
付き制御フロー命令が相対ならば、ターゲット・アドレ
スを計算し、ターゲット・レジスタにストアする。
3.3.1.2 最初の条件付き命令セットの中の条件
付き制御フロー命令が絶対ならば、IEUがターゲット・
アドレスを計算して、そのアドレスをターゲット・レジ
スタに返すまで待つ。
3.3.1.3 2番目の命令セットの中の条件付き制
御フロー命令のIデコードが行われると、最初の条件付
き命令セットの中の条件付き制御フロー命令が解決され
るまでプリフェッチ・オペレーションを停止する。
3.3.2 最初の条件付きブランチのターゲット・ア
ドレスが計算されると、TBUF PFnPCにロードし、メイン
命令ストリームの実行と並行して命令をプリフェッチし
てTBUFに入れることを開始する。ターゲット命令セット
はロードされない(従って、ブランチ・ターゲット命令
は最初の命令セットの中の各条件付き制御フロー命令が
解決されたとき用意されている)。
3.3.3 最初のセットの中の条件付き制御フロー命
令が「行われる」と解釈された場合: 3.3.3.1 ブランチのソースがEBUF命令ストリー
ムであるとプロシージャ進行中ビットの状態から判断さ
れると、MBUFまたはEBUFをフラッシュし、最初の条件付
きブランチ命令セットのあとに置かれたメイン・ストリ
ームからの命令のIFIFOとIEUをフラッシュする。
3.3.3.2 プロシージャ進行中ビットの状態から
判断した通りに、TBUF PFnPC値をMBUF PFnPCまたはEBUF
へ転送する。
3.3.3.3 プロシージャ進行中ビットの状態から
判断した通りに、プリフェッチしたTBUF命令をMBUFまた
はEBUFへ転送する。
3.3.3.4 プロシージャ進行中ビットの状態から
判断した通りに、MBUFまたはEBUFプリフェッチ・オペレ
ーションを続行する。
3.3.4 最初のセット内の条件付き制御フロー命令
が「行われない」と解析された場合: 3.3.4.1 ターゲット命令ストリームからの命令
セットのTBUFをフラッシュする。
3.3.4.2 2番目の条件付きブランチ命令がIデ
コードされなかった場合は、プロシージャ進行中ビット
の状態から判断した通りに、MBUFまたはEBUFプリフェッ
チ・オペレーションを続ける。
3.3.4.3 2番目の条件付きブランチ命令がIデ
コードされた場合は、その命令の処理を開始する(ステ
ップ3.4.1へ進む)。
4.割込み、例外およびトラップ命令 4.1 トラップは広義には次のものからなる。
4.1.1 ハードウェア割込み 4.1.1.1 非同期(外部)発生事象、内部または
外部。
4.1.1.2 いつでも発生し、持続する。
4.1.1.3 アトミック(通常)命令間で優先順に
サービスを受け、プロシージャ命令を一時中止する。
4.1.1.4 割込みハンドラの開始アドレスはトラ
ップ・ハンドラ入口点の事前定義テーブルまでのベクト
ル番号オフセットとして判断される。
4.1.2 ソフトウェア・トラップ命令 4.1.2.1 非同期(外部)発生命令。
4.1.2.2 例外として実行されるソフトウェア命
令。
4.1.2.3 トラップ・ハンドラの開始アドレス
は、TBRまたはFTBレジスタにストアされたベース・アド
レス値と結合されたトラップ番号オフセットから判断さ
れる。
4.1.3 例外 4.1.3.1 命令と同期して発生する事象。
4.1.3.2 命令の実行時に処理される。
4.1.3.3 例外の結果により、期待された命令と
すべての後続実行命令はキャンセルされる。
4.1.3.4 例外ハンドラの開始アドレスは、トラ
ップ・ハンドラ入口点の事前定義テーブルまでのトラッ
プ番号オフセットから判断される。
4.2 トラップ命令ストリーム・オペレーションはそ
のとき実行中の命令ストリームとインラインで実行され
る。
4.3 トラップ処理ルーチンが次の割込み可能トラッ
プの前にxPCアドレスをセーブすることを条件に、トラ
ップはネストが可能である。そうしないと、現トラップ
・オペレーションの完了前にトラップが現れると、マシ
ンの状態が壊れることになる。
5.トラップ命令ストリームの処理:xPC 5.1 トラップが現れたとき: 5.1.1 非同期割込みが起こると、そのとき実行中
の命令の実行は一時中止される。
5.1.2 同期例外が起こると、例外を起こした命令
が実行されるとトラップが処理される。
5.2 トラップが処理されたとき: 5.2.1 割込みは禁止される。
5.2.2 現在のIF_PCアドレスはxPCトラップ状態リ
ターン・アドレス・レジスタにストアされる。
5.2.3 IF_PCアドレスとそのあとのアドレスにある
IFIFOとMBUFプリフェッチ・バッファはフラッシュされ
る。
5.2.4 アドレスIF_PCとそのあとのアドレスの実行
された命令とその命令の結果はIEUからフラッシュされ
る。
5.2.5 MBUF PFnPCに、トラップ・ハンドラ・ルー
チンのアドレスがロードされる。
5.2.5.1 トラップのソースは、特殊レジスタ群
に入っているトラップ番号によって判断されたトラップ
・タイプに応じて、TBRまたはFTBレジスタをアドレス指
定している。
5.2.6 命令がプリフェッチされ、通常通りに実行
するためにIFIFOに入れられる。
5.2.7 トラップ・ルーチンの命令がそのあと実行
される。
5.2.7.1 トラップ処理ルーチンはxPCアドレスを
所定のロケーションにセーブする機能を備え、割込みを
再び可能にする。xPCレジスタは特殊レジスタ移動命令
で、および特殊レジスタ・アドレスとデータ・バスを通
して読み書きされる。
5.2.8 トラップ命令からのリターンを実行するこ
とによってトラップ状態から抜け出る必要がある。
5.2.8.1 以前にセーブしていたときは、xPCアド
レスをその事前定義ロケーションから復元してから、ト
ラップ命令からのリターンを実行する必要がある。
5.3 トラップ命令からのリターンが実行されたと
き: 5.3.1 割込みが可能にされる。
5.3.2 プロシージャ進行中ビットの状態から判断
したとおりに、xPCアドレスが現在の命令ストリーム・
レジスタMBUFまたはEBUF PFnPCに戻され、プリフェッチ
がそのアドレスから続行される。
5.3.3 xPCアドレスが新ストリーム・レジスタを通
してIF_PCレジスタに復元される。
E) 割込みおよび例外の処理 1) 概要 割込みと例外は、それらが可能にされている限り、プ
ロセッサがメイン命令ストリームから実行されている
か、プロシージャ命令ストリームから実行されているか
に関係なく処理される。割込みと例外は優先順にサービ
スが受けられ、クリアされるまで持続している。トラッ
プ・ハンドラの開始アドレスは、下述するように、トラ
ップ・ハンドラの事前定義テーブルまでのベクトル番号
オフセットとして判断される。
割込みと例外は、本実施例では、基本的に2つのタイ
プがある。すなわち、命令ストリームの中の特定の命令
と同期して引き起こされるものと、命令ストリームの中
の特定の命令と非同期に引き起こされるものである。割
込み、例外、トラップおよびフォールト(fault)の用
語は、本明細書では相互に使い分けて用いられている。
非同期割込みは、命令ストリームと同期して動作してい
ない、オン・チップまたはオフ・チップのハードウェア
によって引き起こされる。例えば、オン・チップ・タイ
マ/カウンタによって引き起こされる割込みは、オフ・
チップから引き起こされるハードウェア割込みやマスク
不能割込み(non−maskable interrupt)(NMI)と同じ
ように、非同期である。非同期割込みが引き起こされる
と、プロセッサ・コンテキストが凍結され(frozen)、
すべてのトラップが割込み禁止され、ある種のプロセッ
サ状況情報がストアされ、プロセッサは受け取った特定
の割込みに対応する割込みハンドラにベクトルを向け
る。割込みハンドラがその処理を完了すると、プログラ
ム実行は割込み発生時に実行中であったストリームの中
の最後に完了した命令のあとに置かれた命令から続けら
れる。
同期例外とは、命令ストリームの中の命令と同期して
引き起こされる例外である。これらの例外は特定の命令
に関連して引き起こされ、問題の命令が実行されるまで
保留される。好適実施例では、同期以外はプリフェッチ
時、命令デコード時、または命令実行時に引き起こされ
る。プリフェッチ例外には、例えば、TLB不一致、その
他のVMU例外がある。デコード例外は、例えば、デコー
ド中の命令が違法命令であるか、プロセッサの現特権レ
ベル(privilege level)に一致していないと、引き起
こされる。実行例外は、例えば、ゼロによる除算といっ
た算術演算エラーが原因で引き起こされる。これらの例
外が起こると、好適実施例では、例外を引き起こした特
定命令と例外とを対応づけ、その命令が退避(retire)
されるときまでその状態が維持される。その時点で、以
前に完了した命令がすべて退避され、例外を引き起こし
た命令からの試行的結果があれば、試行的に実行された
後続の命令の試行的結果と同じように、フラッシュされ
る。そのあと、その命令で引き起こされた最高優先度例
外に対応する例外ハンドラに制御が渡される。
ソフトウェア・トラップ命令はCF_DET 274(第2図)
によってIデコード・ステージで検出され、無条件コー
ル命令その他の同期トラップと同じように処理される。
つまり、ターゲット・アドレスが計算され、プリフェッ
チはそのときのプリフェッチ待ち行列(EBUFまたはMBU
F)まで続けられる。これと同時に、その例外は命令と
対応づけられて記録され、命令が退避されるとき処理さ
れる。他のタイプの同期例外はすべて、例外を引き起こ
した特定命令と対応づけられて記録され、累積されるだ
けで、実行時に処理される。
2) 非同期割込み: 非同期割込みは、割込みライン292を通してPCロジッ
ク・ユニット270に通知される。第3図に示すように、
これらのラインはPCロジック・ユニット270内の割込み
ロジック・ユニット363に通知するためのもので、NMIラ
イン、IRQラインおよび1組の割込みレベル・ライン(L
VL)からなっている。NMIラインはマスク不能割込みを
通知し、外部ソースを起点としている。これは、ハード
ウェア・リセットを除き最高優先度割込みである。IRQ
ラインも外部ソースを起点としており、外部デバイスが
ハードウェア割込みをいつ要求したかを通知する。好適
実施例では、外部から起こされるハードウェア割込みは
最高32個までユーザが定義することができ、割込みを要
求した特定外部デバイスは割込みレベル・ライン(LV
L)上に割込み番号(0−31)を送出する。メモリ・エ
ラー・ラインはMCU 110によってアクティベート(活性
化)され、様々な種類のメモリ・エラーを通知する。そ
の他の非同期割込みライン(図示せず)も割込みロジッ
ク・ユニット363に通知するために設けられている。こ
れらには、タイマ/カウンタ割込み、メモリ入出力(I/
O)エラー割込み、マシン・チェック割込み、およびパ
フォーマンス・モニタ割込みを要求するためのラインが
ある。非同期割込みの各々は、下述する同期例外と同様
に、対応する事前定義トラップ番号が関連づけられてい
る。これらのトラップ番号は32個が32個のハードウェア
割込みレベルと関連づけられている。これらのトラップ
番号のテーブルは割込みロジック・ユニット363に維持
されている。一般に、トラップ番号が大きくなると、ト
ラップの優先度が高くなる。
非同期割込みの1つが割込みロジック・ユニット363
に通知されると、割込み制御ユニット363は割込み要求
をINT REQ/ACKライン340を経由してIEU 104へ送出す
る。また、割込み制御ユニット363はプリフェッチ一時
中止信号をライン343を経由してPC制御ユニット362へ送
信し、PC制御ユニット362に命令をプリフェッチするこ
とを中止させる。IEU 104はそのとき実行中の命令をす
べてキャンセルし、すべての試行的結果を中止するか、
一部またはすべての命令を完了させる。好適実施例で
は、そのとき実行中の命令をすべてキャンセルすること
によって、非同期割込みに対する応答を高速化してい
る。いずれの場合も、実行PC制御ユニット366内のDPC
は、IEU 104が割込みの受信を確認する前に、最後に完
了し、退避された命令に対応するように更新される。プ
リフェッチされてMBUF、EBUF、TBUFおよびIFIFO 264に
置かれている他の命令もすべてキャンセルされる。
IEU 104は、割込みハンドラから割込みを受け取る準
備状態にあるときだけ、割込み受信確認信号をINT REQ/
ACKライン340を経由して割込み制御ユニット363へ送り
返す。この信号を受け取ると、割込み制御ユニット363
は、以下で説明するように、該当するトラップ・ハンド
ラにディスパッチする。
3) 同期例外 同期例外の場合は、割込み制御ユニット363は各命令
セットごとに4個が1組の内部例外ビット(図示せず)
をもっており、各ビットはセット内の各命令に対応づけ
られている。割込み制御ユニット363は各命令で見つか
ったとき、通知するトラップ番号も維持している。
特定の命令セットがプリフェッチされている途中で、
VMUがTLB不一致または別のVMU例外を通知すると、この
情報はPCロジック・ユニット270へ、特に割込み制御ユ
ニット363へVMU制御ライン332、334を経由して送られ
る。割込み制御ユニット363は、この信号を受信する
と、以後のプリフェッチを一時中止するようにライン34
3を経由してPC制御ユニット362に通知する。これと同時
に、割込み制御ユニット363は、命令セットが送られる
先のプリフェッチ・バッファに関連するVM_MissまたはV
M_Excpビットのどちらか該当する方をセットする。その
あと、割込み制御ユニット363は、命令セットの中の命
令のどれも有効でないので、その命令セットに対応する
4個の内部例外標識ビット全部をセットし、問題を起こ
した命令セットの中の4命令の各々に対応して受信した
特定例外のトラップ番号をストアする。問題のある命令
より前の命令のシフトと実行は、問題の命令セットがIF
IFO 264内で最低レベルに達するまで通常通りに続行さ
れる。
同様に、プリフェッチ・バッファ260、Iデコード・
ユニット262またはIFIFO 264を通して命令をシフトして
いる途中で他の同期例外が検出されると、この情報も割
込み制御ユニット363へ送られ、ユニット363は、例外を
引き起こした命令に対応する内部例外標識ビットをセッ
トし、その例外に対応するトラップ番号をストアする。
プリフェッチ同期例外の場合と同じように、問題を起こ
した命令より前の命令のシフトと実行は、問題の命令セ
ットがIFIFO 264内で最低レベルに達するまで、通常通
りに続行される。
好適実施例では、プリフェッチ・バッファ260、Iデ
コード・ユニット262またはIFIFO 264を通して命令をシ
フトしている途中で検出される例外は、ソフトウェア・
トラップ命令の1タイプだけである。ソフトウェア・ト
ラップ命令は、CF_DETユニット274によってIデコード
・ステージで検出される。一部の実施例では、他の形態
の同期例外がIデコード・ステージで検出されるが、他
の同期例外の検出は、命令が実行ユニット104に到着す
るまで待つようにするのが好ましい。このようにすれ
ば、特権命令を処理すると起こるようなある種の例外
が、命令が実効的に順序内で実行される前に変化するお
それのあるプロセッサ状態に基づいて通知されるのが防
止される。違法命令のように、プロセッサ状態に左右さ
れない例外はIデコード・ステージで検出可能である
が、すべての実行前同期例外(VMU例外は別として)を
同じロジックで検出するようにすれば、最低限のハード
ウェアですむことになる。また、そのような例外の処理
は時間を重視することがめったにないので、命令が実行
ユニット104に届くまでの待ちによる時間浪費もない。
上述したように、ソフトウェア・トラップ命令はCF_D
ETユニット274によってIデコード・ステージで検出さ
れる。割込みロジック・ユニット363内のその命令に対
応する内部例外標識ビットはセットされ、0から127ま
での番号で、ソフトウェア・トラップ命令の即値モード
・フィールドに指定できるソフトウェア・トラップ番号
はトラップ命令に対応づけられてストアされる。しか
し、プリフェッチ同期例外と異なり、ソフトウェア・ト
ラップは制御フロー命令だけでなく、同期例外としても
扱われるので、割込み制御ユニット363は、ソフトウェ
ア・トラップ命令が検出されたときプリフェッチを一時
中止するようにPC制御ユニット362に通知しない。その
代わりに、命令がIFIFO 264を通してシフトされるのと
同時に、IFU 102はトラップ・ハンドラをプリフェッチ
してMBUF命令ストリーム・バッファに入れる。
命令セットがIFIFO 264の最低レベルまで達すると、
割込みロジック・ユニット363はその命令セットの例外
標識ビットを4ビット・ベクトルとしてSYNCH_INT_INFO
ライン341経由でIEU 104へ送り、命令セットの中で同期
例外の発生源とすでに判断されていた命令があれば、ど
の命令であるかを通知する。IEU 104は即時に応答しな
いで、命令セットの中のすべての命令が通常の方法でス
ケジュールされるようにする。整数算術演算例外といっ
た別の例外は、実行時に引き起こされる場合がある。特
権命令が実行されたために起こる例外のように、マシン
の現在状態に左右される例外もこの時点で検出され、マ
シンの状態が命令ストリーム内の以前のすべての命令に
対して最新となるようにするために、PSRに影響を与え
る可能性のあるすべての命令(特殊な移動やトラップ命
令からのリターンなど)は強制的に順序内で実行され
る。なんらかの同期命令の発生源となった命令が退避さ
れる直前にあるときだけ、例外が起こったことが割込み
ロジック・ユニット363に通知される。
IEU 104は試行的に実行され、同期例外を引き起こし
た最初の命令に先行する命令ストリームに現れたすべて
の命令を退避し、試行的に実行され、命令ストリームに
そのあとに現れた命令からの試行的結果をフラッシュす
る。例外を引き起こした特定の命令は、トラップから戻
ると再実行されるのが普通であるので、この命令もフラ
ッシュされる。そのあと、実行PC制御ユニット366内のI
F_PCは実際に退避された最後の命令に対応するように更
新され、例外が割込み制御ユニット363に通知される。
例外の発生源である命令が退避されると、IEU 104
は、退避される命令セット(レジスタ224)の中に同期
例外を起こした命令があれば、どの命令であるかを示し
た新しい4ビット・ベクトルを、命令セット内の最初の
例外の発生源を示した情報と一緒に、SYNCH_INT_INFOラ
イン341を経由して割込みロジック・ユニット363に返却
する。IEU 104から返却される4ビット例外ベクトルに
入っている情報は、割込みロジック・ユニット363からI
EU 104に渡された4ビット例外ベクトルとIEU 104で引
き起こされた例外を累積したものである。プリフェッチ
またはIデコード時に検出された例外が原因で割込み制
御ユニット363にすでにストアされている情報があれ
ば、その情報と一緒にIEU 104から割込み制御ユニット3
63に返却される情報の残余部分は、割込み制御ユニット
363が最高優先度同期例外の内容とそのトラップ番号を
判断するのに十分である。
4) ハンドラ・ディスパッチとリターン: 割込み受信確認信号がライン340経由でIEUから受信さ
れるか、あるいはゼロ以外の例外ベクトルがライン341
経由で受信された後、現DPCがリターン・アドレスとし
て特殊レジスタ412(第4図)の1つであるxPCレジスタ
に一時的にストアされる。現プロセッサ状態レジスタ
(PSR)は先のPSR(PPSR)レジスタにもストアされ、そ
して現状態比較レジスタ(CSR)が特殊レジスタ412の中
の旧状態比較レジスタ(PCSR)にセーブされる。
トラップ・ハンドラのアドレスはトラップ・ベース・
レジスタ・アドレスにオフセットを加えたものとして計
算される。PCロジック・ユニット270はトラップ用に2
つのベース・レジスタをもち、これらは共に特殊レジス
タ412(第4図)の一部であり、以前に実行された特殊
移動命令によって初期化される。大部分のトラップで
は、ハンドラのアドレスを計算するために使用されるベ
ース・レジスタはトラップ・ベース・レジスタTBRであ
る。
割込み制御ユニット363は現在保留中の最高優先度割
込みまたは例外を判断し、索引(look−up)テーブルを
通して、それに関連づけられたトラップ番号を判断す
る。これは、選択したベース・レジスタまでのオフセッ
トとして、1組のINT_OFFSETライン373を経由してプリ
フェッチPC制御ユニット364へ渡される。ベクトル・ア
ドレスは、オフセット・ビットを下位ビットとしてTBR
レジスタから得た上位ビットに連結するだけで求められ
るという利点がある。このため、加算器の遅延が防止さ
れる。(本明細書では、2'ビットとはi'番目のビットの
ことである。)例えば、トラップの番号が0から255ま
でで、これを8ビット値で表すと、ハンドラ・アドレス
は8ビット・トラップ番号を22ビットのTBRストア値の
最後に連結すると求められる。トラップ番号に2桁の下
位ビットを付加すると、トラップ・ハンドラ・アドレス
は常にワード境界上に置かれることになる。このように
して作られた連結ハンドラ・アドレスは入力373の1つ
としてプリフェッチ・セレクタPF_PC Sel 390(第4
図)へ送られ、次のアドレスとして選択されて、そこか
ら命令がプリフェッチされる。TBRレジスタを使用した
トラップのベクトル・ハンドラ・アドレスはすべて1ワ
ードだけ離れている。従って、トラップ・ハンドラ・ア
ドレスにある命令は、長くなったトラップ処理ルーチン
への予備的ブランチ命令でなければならない。しかし、
トラップには、システム・パフォーマンスの低下を防止
するために、その扱いに注意が必要なものがいくつかあ
る。例えば、TLBトラップは高速に実行させる必要があ
る。そのような理由から、好適実施例では、予備的ブラ
ンチの費用を払わないで、小型のトラップ・ハンドラを
呼び出せるようにした高速トラップ・メカニズムが組み
込まれている。さらに、高速トラップ・ハンドラはメモ
リにも、例えば、オン・チップROMにも独立に配置させ
ることができるので、RAMの位置(ロケーション)に関
連するメモリ・システム問題がなくなる。
好適実施例では、高速トラップとなるトラップは上述
したVMU例外だけである。高速トラップの番号は他のト
ラップと区別され、0〜7の範囲になっている。しか
し、優先度はMMU例外と同じである。割込み制御ユニッ
ト363は、高速トラップがそのとき保留中の最高優先度
であると認めると、特殊レジスタ(FTB)から高速トラ
ップ・ベース・レジスタ(FTB)を選択し、トラップ・
オフセットと結合するためにライン416上に送出する。
ライン373'経由でプリフェッチ・セレクタPF_PC Sel 39
0へ送られた結果のベクトル・アドレスは、FTBレジスタ
からの上位22ビットを連結したもので、そのあとに高速
トラップ番号を表した3ビットが続き、そのあとに7個
のゼロ・ビットが続いている。従って、各高速トラップ
・アドレスは128バイト、つまり、32ワードだけ離れて
いる。呼び出されると、プロセッサは開始ワードへブラ
ンチし、ブロックまたはそこから出たブランチ内でプロ
グラムを実行させる。32個またはそれ以下の命令で実現
できる標準的なTLB処理ルーチンのような、小さなプロ
グラムの実行は、実際の実行処理ルーチンへの予備的ブ
ランチが回避されるので、通常のトラップよりも高速化
される。
好適実施例では、すべての命令は同じ4バイト長にな
っているが(つまり、4つのアドレス・ロケーションを
占有する)、注目すべきことは、命令が可変長になった
マイクロプロセッサでも高速トラップ・メカニズムが利
用できることである。この場合、高速トラップ・ベクト
ル・アドレス間には、マイクロプロセッサで使用できる
最短長の命令を少なくとも2つ、好ましくは32個の平均
サイズ命令を受け入れるだけの十分なスペースが設けら
れることは勿論である。勿論、マイクロプロセッサがト
ラップからのリターン命令を備えている場合には、ベク
トル・アドレス間には、ハンドラ内の少なくとも1つの
他の命令をその命令に置けるだけの十分なスペースを設
けておく必要がある。
また、トラップ・ハンドラへディスパッチすると、プ
ロセッサはカーネル・モードと割込み状態に入る。これ
と並行して、状態比較レジスタ(CSR)のコピーが以前
のキャリー状態レジスタ(PCSR)に置かれ、PSRのコピ
ーが以前のPSR(PPSR)にストアされる。カーネルと割
込み状態モードはプロセッサ状況レジスタ(PSR)内の
ビットで表される。現PSRの割込み状態ビットがセット
されると、シャドウ・レジスタまたはトラップ・レジス
タRT[24]〜RT[31]が上述および第7b図に示すよう
に、見えるようになる。割込みハンドラは新しいモード
をPSRに書き込むだけでカーネル・モードから出ること
ができるが、割込み状態から出るためには、トラップか
らのリターン(RTT)命令を実行する方法だけが唯一の
方法である。
IEU 104がRTT命令を実行すると、PCSRはCSRレジスタ
に復元され、PPSRレジスタはPSRレジスタに復元される
ので、PSR内の割込み状態ビットは自動的にクリアされ
る。PF_PC SELセレクタ390は特殊レジスタ・セット412
の中の特殊レジスタxPCを次にそこからプリフェッチす
るアドレスとして選択する。xPCはインクリメンタ394と
バス396を通して、MBUF PFnPCまたはEBUF PFnPCのどち
らか該当する方に復元される。xPCをEBUF PFnPCに復元
すべきか、またはMBUF PFnPCに復元すべきかの判断は、
復元されたあとのPSRの「プロシージャ進行中」ビット
に従って行われる。
注目すべきことは、プロセッサはトラップとプロシー
ジャ命令の両方のリターン・アドレスをストアするのに
同じ特殊レジスタxPCを使用しないことである。トラッ
プのリターン・アドレスは上述したように特殊レジスタ
xPCにストアされるが、プロシージャ命令のあとリター
ンする先のアドレスは別の特殊レジスタuPCにストアさ
れる。従って、割込み状態は、プロセッサがプロシージ
ャ命令で呼び出されたエミュレーション・ストリームを
実行している間でも、使用可能のままになっている。他
方、例外処理ルーチンは、エミュレーション・ストリー
ムが完了したあと例外ハンドラへ戻るためのアドレスを
ストアする特殊レジスタがないので、いずれのプロシー
ジャ命令をも含んでいてはならない。
5) ネスト: ある種のプロセッサ状況情報は、トラップ・ハンド
ラ、特に、CSR、PSR、リターンPC、およびある意味では
“A"レジスタ・セットra[24]〜ra[31]へディスパッ
チするとき自動的にバックアップがとられるが、他のコ
ンテキスト情報は保護されていない。例えば、浮動小数
点状況レジスタ(FSR)の内容は自動的にバックアップ
がとられない。トラップ・ハンドラがこれらのレジスタ
を変更するためには、独自のバックアップを実行しなけ
ればならない。
トラップ・ハンドラへディスパッチするとき自動的に
行われるバックアップが制限されているために、トラッ
プのネストは自動的に行われない。トラップ・ハンドラ
は必要とするレジスタのバックアップをとり、割込み条
件をクリアし、トラップ処理のために必要な情報をシス
テム・レジスタから読み取り、その情報を適当に処理す
る必要がある。割込みは、トラップ・ハンドラへディス
パッチすると自動的に禁止される。処理を終えると、ハ
ンドラはバックアップをとったレジスタを復元し、再び
割込みを可能にし、RTT命令を実行して割込みから戻る
ことができる。
ネストされたトラップを可能にするには、トラップ・
ハンドラを第1部分と第2部分に分割する必要がある。
第1部分では、割込みが禁止されている間に、特殊レジ
スタ移動命令を使用してxPCをコピーし、トラップ・ハ
ンドラが維持しているスタック上にプッシュしておく必
要がある。次に、特殊レジスタ移動命令を使用して、ト
ラップ・ハンドラの第2部分の先頭のアドレスをxPCに
移し、トラップからのリターン命令(RTT)を実行する
必要がある。RTTは割込み状態を取り除き(PPSRをPSRに
復元することによって)、制御をxPC内のアドレスを移
す。xPCには、ハンドラの第2部分のアドレスが入って
いる。第2部分はこの時点で割込みを可能にして、割込
み可能モードで例外の処理を続けることができる。注目
すべきことは、シャドウ・レジスタRT[24]〜RT[31]
はこのハンドラの第1部分でのみ見ることができ、第2
部分では見えないことである。従って、第2部分では、
ハンドラは、“A"レジスタ値がハンドラによって変更さ
れる可能性がある場合には、その値を予約しておく必要
がある。トラップ処理ルーチンは終わったときは、バッ
クアップにとったレジスタをすべて復元し、元のxPCを
トラップ・ハンドラ・スタップからポップし、それを特
殊レジスタ移動命令を使用してxPC特殊レジスタに戻し
て、別のRTTを実行する必要がある。これにより、制御
はメインまたはエミュレーション命令ストリームの中の
該当命令に返される。
6) トラップ一覧表: 次の表Iは、好適実施例で認識されるトラップのトラ
ップ番号、優先度および処理モードを示すものである。
III.命令実行ユニット 第5図は、IEU 104の制御経路部分とデータ経路部分
を示したものである。主要データ経路は、IFU 102から
の命令/オペランド・データ・バスを始端としている。
データ・バスとして、即値オペランドはオペランド位置
合わせユニット470へ送られ、レジスタ・ファイル(REG
ARRAY)472に渡される。レジスタ・データはレジスタ
・ファイル472からバイパス・ユニット474を通って、レ
ジスタ・ファイル出力バス476を経由し、分配バス480を
経由して機能計算エレメント(FU0-n)の並列配列へ送
られる。機能ユニット4780-nによって生成されたデータ
は、出力バス482を経由してバイパス・ユニット474また
はレジスタ配列472または両方へ送り返される。
ロード/ストア・ユニット484によってIEU 104のデー
タ経路部分が完成される。ロード/ストア・ユニット48
4はIEU 104とCCU 106間のデータ転送の管理を担当す
る。具体的には、CCU 106のデータ用キャッシュ134から
取り出したロード・データはロード/ストア・ユニット
484によってロード・データ・バス486を経由してレジス
タ配列472へ転送される。CCU 106のデータ用キャッシュ
にストアされるデータは機能ユニットの分配バス480か
ら受信される。
IEU 104の制御経路部分はIEUデータ経路を通る情報の
送出、管理、およびその処理を行うことを担当する。本
発明の好適実施例では、IEU制御経路は複数の命令の並
行実行を管理する機能を備え、IEUデータ経路は、IEU 1
04のほぼすべてのデータ経路エレメント間の複数のデー
タ転送を独立して行う機能を備えている。IEU制御経路
は命令/オペランド・バス124を経由して命令を受信す
ると、それを応じて動作する。具体的には、命令セット
はEデコード・ユニット490によって受信される。本発
明の好適実施例では、Eデコード・ユニット490はIFIFO
マスタ・レジスタ216、224に保持されている両方の命令
セットを受信して、デコードする。8命令すべてのデコ
ードの結果は、キャリー・チェッカ(CRY CHKR)ユニッ
ト492、依存性チェッカ(DEP CHKR)ユニット494、レジ
スタ改名ユニット(REG RENAME)496、命令発行(ISSUE
R)ユニット498および退避制御ユニット(RETIRE CLT)
500へ送られる。
キャリー・チェッカ・ユニット492はEデコード・ユ
ニット490から制御ライン502を経由して、係属中の保留
されている8命令に関するデコード化情報を受信する。
キャリー・ユニット492の機能は、保留されている命令
のうち、プロセッサ状況ワードのキャリー・ビットに影
響を与える、あるいはキャリー・ビットの状態に左右さ
れる命令を識別することである。この制御情報は制御ラ
イン504を経由して命令発行ユニット498へ送られる。
保留状態の8命令によって使用されているレジスタ・
ファイル472のレジスタを示しているデコード化情報
は、制御ライン506を経由して直接にレジスタ改名ユニ
ット496へ送られる。この情報は、依存関係チェッカ・
ユニット494へも送られる。依存関係チェッカ・ユニッ
ト494の機能は、保留状態の命令のどれがレジスタをデ
ータの宛先として参照しているか、もしあれば、どの命
令がこれらの宛先レジスタのいずれかに依存しているか
を判断することである。レジスタに依存する命令は、制
御ライン508を経由してレジスタ改名ユニット496へ送ら
れる制御信号によって識別される。
最後に、Eデコード・ユニット490は保留状態の8命
令の各々の特定の内容と機能を識別した制御情報を制御
ライン510を経由して命令発行ユニット498へ送る。命令
発行ユニット498はデータ経路資源、特に、保留状態の
命令の実行のためにどの機能ユニットが使用できるかを
判断することを担当する。アーキテクチャ100の好適実
施例によれば、命令発行ユニット498はデータ経路資源
が使用可能であること、キャリーとレジスタ依存関係の
制約を条件として、8個の保留状態命令のいずれかを順
序外で実行できるようにする。レジスタ改名ユニット49
6は、実行できるように適当に制約が解除された命令の
ビット・マップを制御ライン512を経由して命令発行ユ
ニット498へ送る。すでに実行された(完了した)命令
およびレジスタまたはキャリーに依存する命令は論理的
にビット・マップから除かれる。
必要とする機能ユニット4780-nが使用可能であるかど
うかに応じて、命令発行ユニット498は各システム・ク
ロック・サイクルに複数の命令の実行を開始することが
できる。機能ユニット4780-nの状況は状況バス514を経
由して命令発行ユニット498へ送られる。命令の実行を
開始し、開始後の実行管理を行うための制御信号は命令
発行ユニット498から制御ライン516を経由してレジスタ
改名ユニット496へ送られ、また選択的に機能ユニット4
780-nへ送られる。制御信号を受けると、レジスタ改名
ユニット496はレジスタ選択信号をレジスタ・ファイル
・アクセス制御バス518上に送出する。バス518上に送出
された制御信号でどのレジスタが割込み可能にされたか
は、実行中の命令を選択することによって、およびレジ
スタ改名ユニット496がその特定命令によって参照され
たレジスタを判断することによって判断される。
バイパス制御ユニット(BYPASS CTL)520は、一般的
には、制御ライン524上の制御信号を通してバイパス・
データ・ルーチング・ユニット474の動作を制御する。
バイパス制御ユニット520は機能ユニット4780-nの各々
の状況をモニタし、制御ライン522を経由してレジスタ
改名ユニット496から送られてきたレジスタ参照に関連
して、データをレジスタ・ファイル472から機能ユニッ
ト4780-nへ送るべきかどうか、あるいは機能ユニット47
80-nから出力されるデータをバイパス・ユニット474経
由で機能ユニット宛先バス480へ即時に送って、命令発
行ユニット498によって選択された新発行の命令の実行
のために使用できるかどうかを判断する。どちらの場合
も、命令発行ユニット498は機能ユニット4780-nの各々
への特定レジスタ・データを選択的に使用可能にするこ
とによって、宛先バス480から機能ユニット4780-nへデ
ータを送ることを直接に制御する。
IEU制御経路の残りのユニットには、退避制御ユニッ
ト500、制御フロー制御(CF CTL)ユニット528、および
完了制御(DONE CTL)ユニット536がある。退避制御ユ
ニット500は順序外で実行された命令の実行を無効また
は確認するように動作する。ある命令が順序外で実行さ
れると、先行命令もすべて退避されたならば、その命令
は、確認または退避されることができる。現セット中の
保留状態の8命令のどれが実行されたかの識別情報が制
御ライン532上に送出されると、その識別情報に基づい
て、退避制御ユニット500はバス518に接続された制御ラ
イン534上に制御信号を送出して、レジスタ配列472にス
トアされた結果データを順序外で実行された命令の先行
実行の結果として実効的に確認する。
退避制御ユニット500は、各命令を退避するとき、PC
インクリメント/サイズ制御信号を制御ライン344を経
由してIFU 102へ送る。複数の命令を順序外で実行で
き、従って、同時に退避する準備状態に置くことができ
るので、退避制御ユニット500は同時に退避された命令
数に基づいてサイズ値を判断する。最後に、IFIFOマス
タ・レジスタ224のすべての命令が実行され、退避され
た場合は、退避制御ユニット500はIFIFO読取り制御信号
を制御ライン342を経由してIFU 102へ送って、IFIFOユ
ニット264のシフト・オペレーションを開始することに
より、Eデコード・ユニット490に追加の4命令を実行
保留命令として与える。
制御フロー制御ユニット528は各条件付きブランチ命
令の論理的ブランチ結果を検出するという、特定化され
た機能を備えている。制御フロー制御ユニット528は現
在保留中の条件付きブランチ命令の8ビット・ベクトル
IDをEデコード・ユニット490から制御ライン510を経由
して受信する。8ビット・ベクトル命令完了制御信号
は、同じように完了制御ユニット540から制御ライン532
を経由して受信される。この完了制御信号によって、制
御フロー制御ユニット528は、条件付きブランチ命令
が、条件付き制御フロー状況を判断するのに十分な個所
まで完了すると、それを判別することができる。保留中
の条件付きブランチ命令の制御フロー状況結果は、その
実行時に制御フロー制御ユニット528によってストアさ
れる。条件付き制御フロー命令の結果を判断するために
必要なデータは、レジスタ配列472内の一時状況レジス
タから制御ライン530を経由して得られる。各条件付き
制御フロー命令が実行されると、制御フロー制御ユニッ
トは新しい制御フロー結果信号を制御ライン348を経由
してIFU 102へ送る。好適実施例では、この制御フロー
結果信号は2個の8ビット・ベクトルを含んでおり、こ
のベクトルは、保留されている可能性のある8個の制御
フロー命令のそれぞれのビット位置別の状況結果が判っ
ているかどうか、また、ビット位置の対応づけによって
得られる対応する状況結果状態を定義している。
最後に、完了制御ユニット540は機能ユニット4780-n
の各々のオペレーションに関する実行状況をモニタする
ためのものである。機能ユニット4780-nのいずれかが命
令実行オペレーションの完了を通知すると、完了制御ユ
ニット540は対応する完了制御信号を制御ライン542上に
送出して、レジスタ改名ユニット496、命令発行ユニッ
ト498、退避制御ユニット500及びバイパス制御ユニット
520にアラート(警告)する。
機能ユニット4780-nを並列配列構成にすることによ
り、IEU 104の制御の一貫性を向上している。命令を正
しく認識して、実行のためのスケジュールするために
は、個々の機能ユニット4780-nの特性を命令発行ユニッ
ト498に知らせる必要がある。機能ユニット4780-nは、
必要とする機能を実行するために必要な特定制御フロー
・オペレーションを判別し、実行することを担当する。
従って、命令発行ユニット498以外は、IEU制御ユニット
には、命令の制御フロー処理を独立して知らせる必要は
ない。命令発行ユニット498と機能ユニット4780-nは共
同して、残りの制御フロー管理ユニット496、500、52
0、528、540に実行させる機能を必要な制御信号のプロ
ンプトで知らせる。従って、機能ユニット4780-nの特定
の制御フロー・オペレーションの変更は、IEU 104の制
御オペレーションに影響しない。さらに、既存の機能ユ
ニット4780-nの機能を強化する場合や、拡張精度浮動小
数点乗算ユニットや拡張精度浮動小数点ALU、高速フー
リェ計算機能ユニット、三角関数計算ユニットなどの、
別の機能ユニット4780-nを1つまたは2つ以上を追加す
る場合でも、命令発行ユニット498を若干変更するだけ
ですむ。必要なる変更を行うには、Eデコード・ユニッ
ト490によって隔離された対応する命令フィールドに基
づいて、特定の命令を認識し、その命令と必要とする機
能ユニット4780-nとを関係づける必要がある。レジスタ
・データの選択の制御、データのルーチング、命令完了
と退避は、機能ユニット4780-nの他の機能ユニットすべ
てに対して実行される他のすべての命令の処理と矛盾が
ないようになっている。
A) IEUデータ経路の詳細 IEUデータ経路の中心となるエレメントはレジスタ・
ファイル472である。しかし、本発明によれば、IEUデー
タ経路内には、個々の機能用に最適化された並列データ
経路がいくつか用意されている。主要データ経路は整数
と浮動小数点の2つである。各並列データ経路内では、
レジスタ・ファイル472の一部がそのデータ経路内で行
われるデータ操作をサポートするようになっている。
1) レジスタ・ファイルの詳細 第6a図は、データ経路レジスタ・ファイル550の好適
アーキテクチャの概要図である。データ経路レジスタ・
ファイル550は一時バッファ552、レジスタ・ファイル配
列554、入力セレクタ559、および出力セレクタ556を含
んでいる。最終的にレジスタ配列554へ送られるデータ
は、結合データ入力バス558'を経由して一時バッファ55
2によって最初に受信されるのが代表例である。つま
り、データ経路レジスタ・ファイル550へ送られるデー
タはすべて入力セレクタ559によって多重化されて、複
数の入力バス558(好ましくは2つの)から入力バス55
8'上に送出される。制御バス518上に送出されたレジス
タ選択およびイネーブル制御信号は一時バッファ552内
の受信データのレジスタ・ロケーションを選択する。一
時バッファにストアされるデータを生成した命令が退避
されると、再び制御バス518上に送出された制御信号は
一時バッファ552からレジスタ・ファイル配列554内の論
理的に対応づけられたレジスタへデータ・バス560を経
由してデータを転送することを許可する。しかし、命令
が退避される前は、一時バッファ552にストアされたデ
ータは一時バッファにストアされたデータをデータ・バ
ス560のバイパス部分を経由して出力データ・セレクタ5
56へ送ることにより、後続の命令の実行時に使用するこ
とが可能である。制御バス518経由で送られる制御信号
によって制御されるセレクタ556は、一時バッファ552の
レジスタからのデータとレジスタ・ファイル配列554の
レジスタからのデータのどちらかを選択する。結果のデ
ータはレジスタ・ファイル出力バス564上に送出され
る。また、実行中の命令が完了と同時に退避される場合
は、つまり、その命令が順序内で実行された場合は、結
果データをバイパス延長部分558"を経由して直接にレジ
スタ配列554へ送るように指示することができる。
本発明の好適実施例によれば、各データ経路レジスタ
・ファイル550は2つのレジスタ操作を同時に行えるよ
うになっている。従って、入力バス558を通して2つの
全レジスタ幅データ値を一時バッファ552に書き込むこ
とができる。内部的には、一時バッファ552はマルチプ
レクサ配列になっているので、入力データを一時バッフ
ァ552内の任意の2レジスタへ同時に送ることができ
る。同様に、内部マルチプレクサにより一時バッファ55
2の任意の5レジスタを選択して、データをバス560上に
出力することができる。レジスタ・ファイル配列554は
同じように入出力マルチプレクサを備えているので、2
つのレジスタを選択して、それぞれのデータを同時にバ
ス560から受信することも、5つのレジスタを選択して
バス562経由で送ることもできる。最後に、レジスタ・
ファイル出力セレクタ556は、バス560、562から受信し
た10レジスタ・データ値のうち任意の5つがレジスタ・
ファイル出力バス564上に同時に出力されるように実現
するのが好ましい。
一時バッファ内のレジスタ・セットは第6b図にその概
要が示されている。レジスタ・セット552'は8個のシン
グル・ワード(32ビット)レジスタI0RD、I1RD...I7RD
から構成されている。レジスタ・セット552'は4個のダ
ブル・ワード・レジスタI0RD、I0RD+1(I4RD)、I1R
D、I1RD+1(I5RD)...I3RD、I3RD+1(I7RD)のセッ
トとして使用することも可能である。
本発明の好適実施例によれば、レジスタ・ファイル配
列554内の各レジスタを重複して設ける代わりに、一時
バッファ・レジスタ・セット552内のレジスタは2個のI
FIFOマスタ・レジスタ216、224内のそれぞれの命令の相
対ロケーションに基づいて、レジスタ改名ユニット496
によって参照される。本アーキテクチャ100で実現され
る各命令は、最高2つまでのレジスタまたは1つのダブ
ル・ワード・レジスタを出力として参照して、命令の実
行によって生成されたデータの宛先とすることができ
る。代表例として、命令は1つの出力レジスタだけを参
照する。従って、その位置を第6c図に示しているよう
に、8個の保留中命令のうち1つの出力レジスタを参照
する命令2(I2)の場合は、データ宛先レジスタI2RDが
選択されて、命令の実行によって生成されたデータを受
け入れる。命令I2によって生成されたデータが後続の場
合、例えば、I5によって使用される場合は、I2RDレジス
タにストアされたデータはバス560を経由して転送さ
れ、結果のデータは一時バッファ552に送り返されて、I
5RDで示したレジスタにストアされる。特に、命令I5
命令I2によって決まるので、命令I5は、I2からの結果デ
ータが得られるまでは実行することができない。しか
し、理解されるように、命令I5は必要とする入力データ
を一時バッファ552'の命令I2のデータ・ロケーションか
ら得れば、命令I2の退避前に実行することが可能であ
る。
最後に、命令I2が退避されると、レジスタI2RDからの
データは、退避個所の命令の論理位置から判断されて、
レジスタ・ファイル配列554ないのレジスタ・ロケーシ
ョンに書かれる。すなわち、退避制御ユニット500は、
制御ライン510経由でEデコード・ユニット490から与え
れたレジスタ参照フィールド・データからレジスタ・フ
ァイル配列内の宛先レジスタのアドレスを判断する。命
令I0-3が退避されると、I4RD−I7RDに入っている値は、
IFIFOユニット264のシフトと同時にシフトされて、I0RD
−I3RDに移される。
命令I2からダブル・ワード結果値が得られる場合は、
さらに複雑になる。本発明の好適実施例によれば、ロケ
ーションI2RDとI6RDの組合わせが、命令I2が退避される
か、さもなければキャンセルまで、その命令から得た結
果データをストアしておくために使用される。好適実施
例では、命令I4-7の実行は、命令0-3のいずれかによる
ダブル・ワード出力の参照がレジスタ改名ユニット496
によって検出された場合には、保留される。これによ
り、一時バッファ552'全体をダブル・ワード・レジスタ
のシングル・ランクとして使用することが可能になる。
命令I0-3が退避されると、一時バッファ552'はシングル
・ワード・レジスタの2ランクとして再び使用すること
ができる。さらに、いずれかの命令I4-7の実行は、ダブ
ル・ワード出力レジスタが必要な場合には、命令が対応
するI0-3にシフトされるまで保留される。
レジスタ・ファイル配列554の論理的編成は第7a図〜
第7b図に示されている。本発明の好適実施例によれば、
整数データ経路用のレジスタ・ファイル配列554は40個
の32ビット幅レジスタから構成されている。このレジス
タ・セットはレジスタ・セット“A"を構成し、ベース・
レジスタ・セットra[0..23]565、汎用レジスタra[2
4..31]566からなるトップ・セット、および8個の汎用
トラップ・レジスタra[24..31]からなるシャドウ・レ
ジスタ・セットとして編成されている。通常のオペレー
ションでは、汎用レジスタra[0..31]565、566は整数
データ経路用のレジスタ・ファイル配列のアクティブ
“A"レジスタ・セットを構成している。
第7b図に示すように、トラップ・レジスタra[24..3
1]567をスワップしてアクティブ・レジスタ・セット
“A"に移しておけば、レジスタra[0..23]565のアクテ
ィブ・ベース・セットと一緒にアクセスすることが可能
である。“A"レジスタ・セットのこの構成は、割込みの
受信が確認されるか、例外トラップ処理ルーチンが実行
されると、選択される。レジスタ・セット“A"のこの状
態は、割込み許可命令の実行またはトラップからのリタ
ーン命令の実行によって第7a図に示す状態に明示によっ
て戻るまで維持される。
アーキテクチャ100によって実現された本発明の好適
実施例では、浮動小数点データ経路は第8図にその概要
を示すように拡張精度レジスタ・ファイル配列572を使
用する。レジスタ・ファイル配列572は、各々が64ビッ
ト幅の32個のレジスタrf[0..31]から構成されてい
る。浮動小数点レジスタ・ファイル572は整数レジスタr
b[0..31]の“B"セットとして論理的に参照することも
可能である。アーキテクチャ100では、この“B"セット
のレジスタは浮動小数点レジスタrf[0..31]の各々の
下位32ビットに相当している。
第3のデータ経路を表すものとして、ブール演算子レ
ジスタ・セット574が第9図に示すように設けれてい
る。これは、ブール演算の論理結果をストアする。この
“C"レジスタ・セット574は32個の1ビット・レジスタr
c[0..31]から構成されている。ブール・レジスタ・セ
ット574のオペレーションは、ブール演算の結果をブー
ル・レジスタ・セット574の任意の命令選択レジスタへ
送ることができる点でユニークである。これは、等し
い、等しくない、より大、その他単純なブール状況値な
どの条件を表す1ビット・フラグをストアするシングル
・プロセッサ状況ワード・レジスタを使用するのと対照
的である。
浮動小数点レジスタ・セット572とブール・レジスタ
・セット574は、双方共、第6b図に示す整数一時バッフ
ァ552と同じアーキテクチャの一時バッファによって補
数がとられる。基本的違いは、一時バッファ・レジスタ
の幅が補数をとるレジスタ・ファイル配列572、574の幅
と同じなるように定義されていることである。好適実施
例では、幅はそれぞれ64ビットと1ビットになってい
る。
多数の追加の特殊レジスタが、レジスタ配列472に少
なくとも論理的に存在している。第7c図に示すように、
レジスタ配列472に物理的に存在するレジスタはカーネ
ル・スタック・ポインタ(kernel stack pointer)56
8、プロセッサ状態レジスタ(PSR)569、旧プロセッサ
状態レジスタ(PPSR)570および8個の一時プロセッサ
状態レジスタの配列(tPSR[0..7]571)からなってい
る。残りの特殊レジスタはアーキテクチャ100の各所に
分散している。特殊アドレスおよびデータ・バス354は
データを選択して、特殊レジスタおよび“A"と“B"レジ
スタ・セット間で転送するためのものである。特殊レジ
スタ移動命令は“A"または“B"レジスタ・セットからレ
ジスタを選択し、転送の方向を選択し、特殊レジスタの
アドレスIDを指定するためのものである。
カーネル・スタック・ポインタ・レジスタとプロセッ
サ状態レジスタは、他の特殊レジスタとは異なってい
る。カーネル・スタック・ポインタは、カーネル状態に
あるとき、標準のレジスタ間移動命令を実行することに
よってアクセス可能である。一時プロセッサ状態レジス
タは直接にアクセスすることはできない。その代わり
に、このレジスタ配列はプロセッサ状態レジスタの値を
伝播して、順序外で実行される命令で使用できるように
する継承メカニズム(inheritance mechanism)を実現
するために使用される。初期伝播値はプロセッサ状態レ
ジスタの値である。つまり、最後に退避された命令から
得た値である。この初期値は一時プロセッサ状態レジス
タから前方向に伝播され、順序外で実行される命令が対
応する位置にある一時プロセッサ状態レジスタ内の値を
アクセスできるようにする。命令が依存し、変更できる
条件コード・ビットは、その命令がもつ特性によって定
義される。命令が依存関係、レジスタまたは条件コード
によって制約されないことが、レジスタ依存関係チェッ
カ・ユニット494とキャリー依存関係チェッカ492によっ
て判断された場合は、命令は順序外で実行することがで
きる。プロセッサ状態レジスタの条件コード・ビットの
変更は論理的に対応する一時プロセッサ状態レジスタに
指示される。具体的には、変更の可能性があるビットだ
けが一時プロセッサ状態レジスタに入っている値に適用
され、上位のすべての一時プロセッサ状態レジスタに伝
播される。その結果、順序外で実行されるすべての命令
は介在するPSR変更命令によって適切に変更されたプロ
セッサ状態レジスタ値から実行される。命令が退避され
たときは、対応する一時プロセッサ状態レジスタ値だけ
がPSRレジスタ569に転送される。
その他の特殊レジスタは表IIに説明されている。
2) 整数データ経路の詳細 本発明の好適実施例に従って構築されるIEU 104の整
数データ経路は第10図に示されている。説明の便宜上、
整数データ経路580と結ばれる多数の制御経路は図には
示していない。これらの接続関係は第5図を参照して説
明したとおりである。
データ経路580の入力データは位置合わせユニット58
2、584および整数ロード/ストア・ユニット586から得
られる。整数即値(integer immediate)データ値は、
最初は命令埋込み(embedded)データ・フィールドとし
て与えられ、バス588経由でオペランド・ユニット470か
ら得られる。位置合わせユニット582は整数データ値を
隔離し、その結果値を出力バス590を経由してマルチプ
レクサ592へ送られる。マルチプレクサ592への別の入力
は特殊レジスタ・アドレスとデータ・バス354である。
命令ストリームから得られる即値(immediate)オペ
ランドも、データ・バス594経由でオペランド・ユニッ
ト470から得られる。これらの値は、出力バス596上に送
出される前に、位置合わせユニット584によって再度右
寄せされる。
整数ロード/ストア・ユニット586は外部データ・バ
ス598を通してCCU 106と双方向でやりとりする。IEU 10
4へのインバウンド・データは整数ロード/ストア・ユ
ニット586から入力データ・バス600を経由して入力ラッ
チ602へ転送される。マルチプレクサ592とラッチ602か
らの出力データは、マルチプレクサ608のマルチプレク
サ入力バス604、606上に送出される。機能ユニット出力
バス482'からのデータもマルチプレクサ608に送られ
る。このマルチプレクサ608はアーキテクチャ100の好適
実施例では、データを同時に出力マルチプレクサ・バス
610へ送る2つの通路を備えている。さらに、マルチプ
レクサ608を通るデータ転送は、システム・クロックの
各半サイクル以内に完了することができる。本アーキテ
クチャ100で実現される大部分の命令は、1つの宛先レ
ジスタを利用するので、最大4つまでの命令によって各
システム・クロック・サイクルの間データを一時バッフ
ァ612へ送ることができる。
一時バッファ612からのデータは一時レジスタ出力バ
ス616を経由して整数レジスタ・ファイル配列614へ、あ
るいは代替一時バッファ・レジスタ・バス618を経由し
て出力マルチプレクサ620へ転送することができる。整
数レジスタ配列出力バス622は整数レジスタ・データを
マルチプレクサ620へ転送することができる。一時バッ
ファ612と整数レジスタ・ファイル配列614に接続された
出力バスは、それぞれ5個のレジスタ値を同時に出力す
ることを可能にする。つまり、合計5個までのソース・
レジスタを参照する2つの命令を同時に出すことができ
る。一時バッファ612、レジスタ・ファイル配列614およ
びマルチプレクサ620は、アウトバウンド・レジスタ・
データの転送を半システム・クロック・サイクルごとに
行うことを可能にする。従って、最高4個までの整数お
よび浮動小数点命令を各クロック・サイクルの間に出す
ことができる。
マルチプレクサ620はアウトバウンド・レジスタデー
タ値をレジスタ・ファイル配列614から、あるいは一時
バッファ612から直接に選択する働きをする。これによ
り、以前に順序外で実行された命令に依存する順序外実
行命令をIEU 104によって実行させることができる。こ
れにより、保留状態の命令を順序外で実行することによ
ってIEU整数データ経路の実行スループット能力を最大
化すると共に、順序外のデータ結果を、実行され退避さ
れた命令から得たデータ結果から正確に分離するという
2目標を容易に達成することができる。マシンの正確な
状態を復元する必要のあるような割込みや他の例外条件
が起こると、本発明によれば、一時バッファ612に存在
するデータ値を簡単にクリアすることができる。従っ
て、レジスタ・ファイル配列614は、割込みまたは他の
例外条件が発生する以前に完了し、退避された命令の実
行によってのみ得られたデータ値を正確に収めたままに
なっている。
マルチプレクサ620の各半システム・サイクル・オペ
レーション時に選択されたレジスタ・データ値は最高5
つまでがマルチプレクサ出力バス624を経由して整数バ
イパス・ユニット626へ送られる。このバイパス・ユニ
ット626は、基本的に、マルチプレクサが並列の配列か
らなり、その入力のいずれかに現れたデータをその出力
のいずれかへ送ることができる。バイパス・ユニット62
6の入力は、マルチプレクサ592から出力バス604を経由
する特殊レジスタ・アドレス指定データ値または即値の
整数値、バス624上に送出される最高5つまでのレジス
タ・データ値、整数ロード/ストア・ユニット586から
ダブル整数バス600を経由するロード・オペランド・デ
ータ、その出力バス596を経由して位置合わせユニット5
84から得た即値オペランド値、最後に、機能ユニット出
力バス482からのバイパス・データ経路からなってい
る。このバイパス経路とデータ・バス482はシステム・
クロック・サイクルごとに4個のレジスタ値を同時に転
送することができる。
データはバイパス・ユニット626から浮動小数点デー
タ・バスに接続された整数バイパス・バス628上に出力
されて、最高5つまでのレジスタ・データ値を同時に転
送する機能をもつ2つのオペランド・データ・バスと、
整数ロード/ストア・ユニット586へデータを送るため
に使用されるストア・データ・バス632へ送られる。
機能ユニット分配バス480はルータ・ユニット634のオ
ペレーションを通して実現されている。また、ルータ・
ユニット634はその入力から受信された5個のレジスタ
値を整数データ通路に設けられた機能ユニットへ送るこ
とを可能にする並列のマルチプレクサ配列によって実現
される。具体的には、ルータ・ユニット634はバイパス
・ユニット626からバス630を経由して送られてきた5個
のレジスタ・データ値、アドレス・バス352を経由して
送られてきた現IF_PCアドレス値、PC制御ユニット362に
よって判断され、ライン378'上に送出された制御フロー
・オフセット値を受信する。ルータ・ユニット634は、
浮動小数点データ経路内に設けられたバイパス・ユニッ
トから取り出されたオペランド・データ値をデータ・バ
ス636を経由して受信することもできる(オプショ
ン)。
ルータ・ユニット634によって受信されたレジスタ・
データ値は、特殊レジスタ・アドレスおよびデータ・バ
ス354上を転送されて、機能ユニット640、642、644へ送
られる。具体的には、ルータ・ユニット634は最高3つ
までのレジスタ・オペランド値をルータ出力バス646、6
48、650を経由して機能ユニット640、642、644の各々へ
送る機能を備えている。本アーキテクチャ100の一般的
アーキテクチャによれば、最高2つまでの命令を同時に
機能ユニット640、642、644に対して出すことが可能で
ある。本発明の好適実施例によれば、3つの専用整数機
能ユニットに、それぞれプログラマブル・シフト機能と
2つの算術演算ロジック・ユニット機能をもたせること
ができる。
ALU0機能ユニット644、ALU1機能ユニット642およびシ
フタ機能ユニット640はそれぞれの出力レジスタ・デー
タを機能ユニット・バス482'上に送出する。ALU0とシフ
タ機能ユニット644、640から得た出力データも浮動小数
点データ経路に接続された共用整数機能ユニット・バス
650上に送出される。類似の浮動小数点機能ユニット出
力値データ・バス652が浮動小数点データ経路から機能
ユニット出力バス482'へ設けられている。
ALU0機能ユニット644はIFU 102のプリフェッチ操作と
整数ロード/ストア・ユニット586のデータ操作の両方
をサポートするために仮想アドレス値を生成する場合に
も使用される。ALU0機能ユニット644によって計算され
た仮想アドレス値はIFU 102のターゲット・アドレス・
バス346とCCU 106の両方に接続された出力バス654上に
送出され、実行ユニットの物理アドレス(EX PADDR)が
得られる。ラッチ656は、ALU0機能ユニット644によって
生成されたアドレスの仮想化部分をストアするためのも
のである。アドレスのこの仮想化部分は出力バス658上
に送出されて、VMU 108へ送られる。
3) 浮動小数点データ経路の詳細 次に、第11図は浮動小数点データ経路を示したもので
ある。初期データは、この場合も、即値整数オペランド
・バス588、即値オペランド・バス594および特殊レジス
タ・アドレス・データ・バス354を含む、複数のソース
から受信される。外部データの最終的ソースは外部デー
タ・バス598を通してCCU 106に接続された浮動小数点ロ
ード/ストア・ユニット622である。
即値整数オペランドは、位置合わせ出力データ・バス
668を経由してマルチプレクサ666に渡す前に整数データ
・フィールドを右寄せする働きをする位置合わせユニッ
ト664によって受信される。マルチプレクサ666は特殊レ
ジスタ・アドレス・データ・バス354も受信する。即値
オペランドは第2の位置合わせユニット670へ送られ、
右寄せされてから出力バス672上に送出される。浮動小
数点ロード/ストア・ユニット662からのインバウンド
・データ(inbound data)は、ロード・データ・バス67
6からラッチ674によって受信される。マルチプレクサ66
6、ラッチ674および機能ユニット・データ・リターン・
バス482"からのデータはマルチプレクサ678の入力から
受信される。マルチプレクサ678は選択可能なデータ経
路を備え、2つのレジスタ・データ値がシステム・クロ
ックの半サイクルごとに、マルチプレクサ出力バス682
を経由して一時バッファ680に書き込まれることを可能
にする。一時バッファ680は第6b図に示す一時バッファ5
52'と論理的に同じレジスタ・セットを備えている。一
時バッファ680はさらに、最高5個までのレジスタ・デ
ータ値を一時バッファ680から読み取って、データ・バ
ス686を経由して浮動小数点レジスタ・ファイル配列684
と、出力データ・バス690を経由して出力マルチプレク
サ688へ送ることができる。マルチプレクサ688は、デー
タ・バス692を経由して、浮動小数点ファイル配列684か
ら最高5個までのレジスタ・データ値も同時に受信す
る。マルチプレクサ688は最高5個までのレジスタ・デ
ータ値を選択して、データ・バス696を経由してバイパ
ス・ユニット694へ同時に転送する働きをする。バイパ
ス・ユニット694は、データ・バス672、マルチプレクサ
666からの出力データ・バス698、ロード・データ・バス
676および機能ユニット・データ・リターン・バス482"
のバイパス延長部分を経由して、位置合わせユニット67
0から与えられた即値オペランド値も受信する。バイパ
ス・ユニット694は最高5個までのレジスタ・オペラン
ド・データ値を同時に選択して、バイパス・ユニット出
力バス700、浮動小数点ロード/ストア・ユニット662に
接続されたストア・データ・バス702、および整数デー
タ経路580のルータ・ユニット634に接続された浮動小数
点バイパス・バス636上に出力するように働く。
浮動小数点ルータ・ユニット704は、バイパス・ユニ
ット出力バス700と整数データ経路バイパス・バス628と
それぞれの機能ユニット712、714、716に接続された機
能ユニット入力バス706、708、710との間で同時にデー
タ経路を選択できる機能を備えている。アーキテクチャ
100の好適実施例による入力バス706、708、710の各々
は、最高3個までのレジスタ・オペランド・データ値を
機能ユニット712、714、716の各々へ同時に転送するこ
とが可能である。これらの機能ユニット712、714、716
の出力バスは機能ユニット・データ・リターン・バス48
2"に結合され、データをレジスタ・ファイル入力マルチ
プレクサ678へ戻すようになっている。整数データ経路
機能ユニット出力バス650を、機能ユニット・データ・
リターン・バス482"に接続するために設けることも可能
である。本発明のアーキテクチャ100によれば、マルチ
プレクサ機能ユニット712と浮動小数点ALU 714の機能ユ
ニット出力バスを浮動小数点データ経路機能ユニット・
バス652を経由して整数データ経路500の機能ユニット・
データ・リターン・バス482'に接続することが可能であ
る。
4) ブール・レジスタ・データ経路の詳細 ブール演算データ経路720は第12図に示されている。
このデータ経路720は基本的に2種類の命令の実行をサ
ポートするために利用される。最初のタイプは、オペラ
ンド比較命令であり、この命令では、整数レジスタ・セ
ットと浮動小数点レジスタ・セットから選択された、あ
るいは即値オペランドとして与えられた2つのオペラン
ドが、ALU機能ユニットの1つで整数と浮動小数点デー
タ経路を減算することによって比較される。この比較
は、ALU機能ユニット642、644、714、716のいずれかに
よる減算によって行われ、その結果の符号とゼロ状況ビ
ットは入力セレクタと比較演算子結合ユニット722へ送
られる。このユニット722は、制御信号を指定した命令
をEデコード・ユニット490から受け取ると、ALU機能ユ
ニット642、644、714、716の出力を選択し、符号および
ゼロ・ビットを結合し、ブール比較結果値を抽出する。
出力バス723を通して比較演算の結果を入力マルチプレ
クサ726とバイパス・ユニット742へ同時に転送すること
ができる。整数および浮動小数点データ経路と同じよう
に、バイパス・ユニット742は並列のマルチプレクサ配
列として実現され、バイパス・ユニット742の入力間で
複数のデータ経路を選択して、複数の出力と結ぶことが
できる。バイパス・ユニット742の他の入力はブール演
算結果リターン・データ・バス724とデータ・バス744上
の2つのブール・オペランドからなっている。バイパス
・ユニット742は、最高2つまでの同時に実行中のブー
ル命令を表したブール・オペランドを、オペランド・バ
ス748を経由してブール演算機能ユニット746へ転送する
ことができる。また、バイパス・ユニット746は最高2
個までのシングル・ビット・ブール・オペランド・ビッ
ト(CF0、CF1)を制御フロー結果制御ライン750、752を
経由して同時に転送することができる。
ブール演算データ経路の残り部分は、比較結果バス72
3とブール結果バス724上に送出された比較およびブール
演算結果値を、その入力として受信する入力マルチプレ
クサ726を含んでいる。このバス724は最高2個までのブ
ール結果ビットを同時にマルチプレクサ726へ転送する
ことができる。さらに、最高2個までの比較結果ビット
をバス723を経由してマルチプレクサ726へ転送すること
ができる。マルチプレクサ726はマルチプレクサの入力
端に現れた任意の2個の信号ビットをマルチプレクサの
出力端を経由して、システム・クロックの各半サイクル
時にブール演算一時バッファ728へ転送することができ
る。一時バッファ728は、2つの重要な点が異なること
を除けば、第6b図に示した一時バッファ752'と論理的に
同じである。第1の相違点は、一時バッファ728内の各
レジスタ・エントリがシングル・ビットからなることで
ある。第2の相違点は、8個の保留中命令スロットの各
々に1つのレジスタだけが設けられていることである。
これは、ブール演算の結果全部が定義によって1つの結
果ビットによって定義されるためである。
一時バッファ728は最高4個までの出力オペランド値
を同時に出力する。これにより、各々2つのソース・レ
ジスタへのアクセスを必要とする2個のブール命令を同
時に実行させることができる。4個のブール・レジスタ
値はシステム・クロックの各半サイクルごとにオペラン
ド・バス736上に送出し、マルチプレクサ738へあるいは
ブール・オペランド・データ・バス734を経由してブー
ル・レジスタ・ファイル配列732へ転送することができ
る。ブール・レジスタ・ファイル配列732は、第9図に
論理的に示すように、1個の32ビット幅データ・レジス
タであり、任意に組み合わせた最高4個までのシングル
・ビット・ロケーションを、一時バッファ728からのデ
ータで修正し、システム・クロックの各半サイクルごと
にブール・レジスタ・ファイル配列732から読み取って
出力バス740上に送出することができる。マルチプレク
サ738はバス736、740経由でその出力端から受信したブ
ール・オペランドの任意のペアを、オペランド出力バス
744上に送出してバイパス・ユニット742へ転送する。
ブール演算機能ユニット746は2個のソース値につい
てブール演算を幅広く実行する機能を備えている。比較
命令の場合には、ソース値は整数および浮動小数点レジ
スタ・セットのいずれかから得たペアのオペランドとIE
U 104へ送られる任意の即値オペランドであり、ブール
命令の場合は、ブール・レジスタ・オペランドの任意の
2つである。表IIIと表IVは、本発明のアーキテクチャ1
00の好適実施例における論理比較演算を示すものであ
る。表Vは本発明のアーキテクチャ100の好適実施例に
おける直接ブール演算を示すものである。表III−Vに
示されている命令条件コードと機能コードは対応する命
令のセグメントを表している。また、命令はペアのソー
ス・オペランド・レジスタと、対応するブール演算結果
をストアするための宛先ブール・レジスタを指定する。
B) ロード/ストア制御ユニット 第13図はロード/ストア・ユニット760の例を示した
ものである。データ経路580、660に別々に示されている
が、ロード/ストア・ユニット586、662は1つの共用ロ
ード/ストア・ユニット760として実現するのが好まし
い。それぞれのデータ経路580、660からのインタフェー
スはアドレス・バス762およびロードとストア・データ
・バス764(600、676)、766(632、702)を経由してい
る。
ロード/ストア・ユニット760によって使用されるア
ドレスは、IFU 102およびIEU 104の残り部分で使用され
る仮想アドレスとは対称的に、物理アドレスである。IF
U 102は仮想アドレスで動作し、CCU 106とVMU 108間の
調整に依存して物理アドレスを生成するのに対し、IEU
104ではロード/ストア・ユニット760を物理アドレス・
モードで直接に動作させる必要がある。この要件が必要
になるのは、順序外で実行されるために、物理アドレス
・データとストア・オペレーションがオーバラップする
ような命令が存在する場合、およびCCU 106からロード
/ストア・ユニット760への順序外のデータ・リターン
が存在する場合に、データ保全性を保つためである。デ
ータ保全性を保つために、ロード/ストア・ユニット76
0はストア命令がIEU 104によって退避されるまで、スト
ア命令から得たデータをバッファに置いておく。その結
果、ロード/ストア・ユニット760によってバッファに
置かれたストア・データはロード/ストア・ユニット76
0に1つだけ存在することができる。実行されたが退避
されていないストア命令と同じ物理アドレスを参照する
ロード命令は、ストア命令が実際に退避されるまで実行
が遅延される。その時点で、ストア・データをロード/
ストア・ユニット760からCCU 106へ転送し、CCUデータ
・ロード・オペレーションの実行によって即時にロード
・バックすることができる。
具体的には、物理アドレス全体がVMU 108からロード
/ストア・アドレス・バス762上に送出される。ロード
・アドレスは、一般的には、ロード・アドレス・レジス
タ7680-3にストアされる。ストア・アドレスはストア・
アドレス・レジスタ7703-0にラッチされる。ロード/ス
トア制御ユニット774は命令発行ユニット498から受信し
た制御信号を受けて動作し、ロード・アドレスとストア
・アドレスをレジスタ7683-0、7703-0にラッチすること
を調整する。ロード/ストア制御ユニット774はロード
・アドレスをラッチするための制御信号を制御ライン77
8上に送出し、ストア・アドレスをラッチするための制
御信号を制御ライン780上に送出する。ストア・データ
はストア・データ・レジスタ・セット7823-0の論理的に
対応するスロットにストア・アドレスをラッチするのと
同時にラッチされる。4x4x32ビット幅アドレス比較ユニ
ット772には、ロードおよびストア・アドレス・レジス
タ7683-0、7703-0に入っているアドレスの各々が同時に
入力される。システム・クロックの各半サイクル時の完
全マトリックス・アドレス比較の実行は、制御ライン77
6を介してロード/ストア制御ユニット774によって制御
される。ストア・アドレスに一致するロード・アドレス
の存在と論理ロケーションは、制御ライン776を経由し
てロード/ストア制御ユニット774へ送られる。
ロード・アドレスがVMU 108から与えられ、保留中の
ストアがない場合は、ロード・アドレスは、CCUロード
・オペレーションの開始と同時に、バス762から直接に
アドレス・セレクタ786へバイパスされる。しかし、ス
トア・データが保留されている場合は、ロード・アドレ
スは使用可能なロード・アドレス・ラッチ7680-3にラッ
チされる。対応するストア・データ命令が退避されると
の制御信号を退避制御ユニット500から受信すると、ロ
ード/ストア制御ユニット774はCCUデータ転送操作を開
始し、制御ライン784を通してCCU 106へのアクセスの仲
裁を行う。CCU 106がレディ(ready)を通知すると、ロ
ード/ストア制御ユニット774はCCU物理アドレスをCCU
PADDRアドレス・バス788上に送出するようにセレクタ78
6に指示する。このアドレスはアドレス・バス790を経由
して対応するストア・レジスタ7703-0から得られる。対
応するストア・データ・レジスタ7823-0からのデータは
CCUデータ・バス792上に送出される。
ロード命令が命令発行ユニット498から出されると、
ロード/ストア制御ユニット774はロード・アドレス・
ラッチ7683-0の1つが要求されたロード・アドレスをラ
ッチすることを許可する。選択された特定のラッチ768
0-3は関係命令セット内のロード命令の位置に論理的に
対応している。命令発行ユニット498は保留中の可能性
のある2命令セットのどちらかの中のロード命令を示し
ている5ビット・ベクトルをロード/ストア制御ユニッ
ト774へ渡す。コンパレータ772が一致するストア・アド
レスを示していない場合は、ロード・アドレスはアドレ
ス・バス794を経由してセレクタ786へ送られ、CCU PADD
Rアドレス・バス788上に出力される。アドレスの提供
は、ロード/ストア制御ユニット774とCCU 106間でやり
とりされるCCU要求とレディ制御信号に従って行われ
る。実行ID値(ExID値)もロード/ストア制御ユニット
774によって準備されてCCU 106に対して出され、CCU 10
6がExID値を含む要求データをそのあとで返却するとき
ロード要求を識別する。このID値は4ビット・ベクトル
からなり、現ロード要求を出したそれぞれのロード・ア
ドレス・ラッチ7680-3を固有ビットで指定している。5
番目のビットはロード命令を収めている命令セットを識
別するために使用される。このID値は、従って、命令発
行ユニット498からロード要求と一緒に送られるビット
・ベクトルと同じである。
先行する要求ロード・データが使用可能であることが
CCU 106からロード/ストア制御ユニット774へ通知され
ると、ロード/ストア制御ユニット774は、位置合わせ
ユニットがデータを受信し、それをロード・データ・バ
ス764上に送出することを許可する。位置合わせユニッ
ト798はロード・データを右寄せする働きをする。
CCU 106からデータが返却されると同時に、ロード/
ストア制御ユニット774はCCU 106からExID値を受信す
る。他方、ロード/ストア制御ユニット774はロード・
データがロード・データ・バス764上に送出されること
を知らせる制御信号を命令発行ユニット498へ送り、さ
らに、どのロード命令に対してロード・データが返却さ
れるのかを示したビット・ベクトルを返却する。
C) IEU制御経路の詳細 再び第5図を参照して、IEU制御回路のオペレーショ
ンを、第14図に示したタイミング図と関連づけて説明す
る。第14図に示した命令の実行タイミングは本発明のオ
ペレーションを例示したもので、種々態様に変更可能で
あることは勿論である。
第14図のタイミング図はプロセッサ・システム・クロ
ック・サイクルP0-6のシーケンスを示している。各プロ
セッサ・サイクルは内部TサイクルT0から始まる。本発
明の好適実施例によるアーキテクチャ100では、各プロ
セッサ・サイクルは2つのTサイクルからなっている。
プロセッサ・サイクル0のときは、IFU 102とVMU 108
は物理アドレスを生成するように動作する。この物理ア
ドレスはCCU 106へ送られ、命令用キャッシュ・アクセ
ス・オペレーションが開始される。要求された命令セッ
トが命令用キャッシュ132にあると、命令セットはプロ
セッサ・サイクル1のほぼ中間でIFU 102へ戻される。
そのあと、IFU 102はプリフェッチ・ユニット260とIFIF
O 264を経由する命令セットの転送を管理し、転送され
た命令セットはまずIEU 104へ実行のために渡される。
1) Eデコード・ユニットの詳細 Eデコード・ユニット490は全命令セットを並列に受
け取って、プロセッサ・サイクル1が完了する前にデコ
ードする。Eデコード・ユニット490は、好適アーキテ
クチャ100では、バス124を経由して受け取ったすべての
有効命令を並列に直接デコードする機能を備えた順列組
合せ理論に基づくロジック・ブロックとして実現されて
いる。アーキテクチャ100によって認識される命令は、
各タイプ別に、命令、レジスタ要件および必要な資源の
仕様と共に表VIに示されてる。
Eデコード・ユニット490は命令セットの各命令を並
列にデコードする。その結果の命令の識別、命令機能、
レジスタ参照および機能要件はEデコード・ユニット49
0の出力から得られる。この情報は再生成され、命令セ
ット内のすべての命令が退避されるまで、プロセッサ・
サイクルの各半サイクル期間、Eデコード・ユニット49
0によってラッチされる。従って、保留状態の8命令す
べてに関する情報が、Eデコード・ユニット490の出力
から絶えず得られるようになっている。この情報は、8
エレメント・ビット・ベクトルの形式で表示され、各ベ
クトルのビットまたはサブフィールドは2つの保留中命
令セット内の対応する命令の物理ロケーションに論理的
に対応している。従って、8個のベクトルが制御ライン
502を経由してキャリー・チェッカ492へ送られる。この
場合、各ベクトルは、対応する命令がプロセッサ状況ワ
ードのキャリー・ビットに作用を及ぼしているか、ある
いはそれに依存しているかを指定している。8個のベク
トルが各命令の特定の内容と機能ユニット要件を示すた
めに制御ライン510を経由して送られる。8個のベクト
ルが制御ライン506を経由して送られ、8個の保留中命
令の各々によって使用されたレジスタ参照を指定してい
る。これらのベクトルはプロセッサ・サイクル1が終了
する前に送られる。
2) キャリー・チェッカ・ユニットの詳細 キャリー・チェッカ・ユニット492は第14図に示すオ
ペレーションのデータ依存関係フェーズ期間の間に依存
関係検査ユニット494と並列に動作する。キャリー・チ
ェッカ・ユニット492は好適アーキテクチャ100では順列
組合せ理論に基づくロジックとして実現されている。従
って、キャリー・チェッカ・ユニット492によるオペレ
ーションの各繰返し時に、命令がプロセッサ状態レジス
タのキャリー・フラグを変更したかどうかについて8個
の命令すべてが考慮される。これが必要とされるのは、
その前の命令によって設定されたキャリー・ビットの状
況に依存する命令を順序外で実行することを可能にする
ためである。制御ライン504上に送出された制御信号に
より、キャリー・チェッカ・ユニット492は、キャリー
・フラグに対する先行命令の実行に依存する特定の命令
を識別することができる。
さらに、キャリー・チェッカ・ユニット492は8個の
保留中命令の各々についてキャリー・ビットの一時的コ
ピーをもっている。キャリー・ビットを変更していない
命令については、キャリー・チェッカ・ユニット492は
プログラム命令ストリームの順序でキャリー・ビットを
次の命令に伝える。従って、順序外で実行され、キャリ
ー・ビットを変更する命令を実行させることが可能であ
り、さらに、その順序外で実行される命令に依存する後
続の命令も、キャリー・ビットを変更する命令のあとに
置かれていても、実行することが可能である。さらに、
キャリー・ビットがキャリー・チェッカ・ユニット492
によって維持されているので、これらの命令の退避以前
に例外が起こったとき、キャリー・チェッカ・ユニット
は内部一時キャリー・ビット・レジスタをクリアするだ
けでよいことから、順序外で実行することが容易にな
る。その結果、プロセッサ状況レジスタは、順序外で実
行される命令の実行による影響を受けない。キャリー・
チェッカ・ユニット492が維持している一時キャリー・
ビット・レジスタは、順序外で実行される各命令が完了
すると更新される。順序外で実行される命令が退避され
ると、プログラム命令ストリームの中で最後に退避され
た命令に対応するキャリー・ビットはプロセッサ状況レ
ジスタのキャリー・ビット・ロケーションへ転送され
る。
3) データ依存関係チェッカ・ユニットの詳細 データ依存関係チェッカ・ユニット494はEデコード
・ユニット490から制御ライン506を経由して8個のレジ
スタ参照識別ベクトルを受け取る。各レジスタの参照は
32個のレジスタを一度に1つを認識するのに適した5ビ
ット値と、“A"、“B"またはブール・レジスタ・セット
内に置かれているレジスタ・バンクを識別する2ビット
値によって示されている。浮動小数点レジスタ・セット
は“B"レジスタ・セットとも呼ばれる。各命令は最高3
つまでのレジスタ参照フィールドをもつことができる。
2つのソース・レジスタ・フィールドと1つの宛先レジ
スタ・フィールドである。ある種の命令、特にレジスタ
間移動命令は、宛先レジスタを指定している場合があっ
ても、Eデコード・ユニット490によって認識される命
令ビット・フィールドは、実際に作成される出力データ
がないことを意味している場合がある。むしろ、命令の
実行は、プロセッサ状況レジスタの値の変更を判断する
ことだけを目的としている。
データ依存関係チェッカ494も好適アーキテクチャ100
において純然たる組合せロジック(pure combinatorial
logic)で実現されているが、これはプログラム命令ス
トリーム内に後に現れる命令のソース・レジスタ参照と
相対的に前に置かれた命令の宛先レジスタ参照との間の
依存関係を同時に判断するように動作する。ビット配列
は、どの命令が他の命令に依存するかを識別するだけで
なく、各依存関係がどのレジスタに基づいて生じたかを
識別するデータ依存関係チェッカ494によって作られ
る。
キャリーとレジスタ・データの依存関係は、第2プロ
セッサ・サイクルの開始直後に判別される。
4) レジスタ改名ユニットの詳細 レジスタ改名ユニット496は8個の保留中の命令すべ
てのレジスタ参照のIDを制御ライン506を経由して、レ
ジスタ依存関係を制御ライン508を経由して受け取る。
8個のエレメントからのマトリックスも制御ライン542
を経由して受け取る。これらのエレメントは、保留中命
令の現セットの中でどの命令が実行されたか(完了した
か)を示している。この情報から、レジスタ改名ユニッ
ト496は制御信号の8エレメント配列を制御ライン512を
経由して命令発行ユニット498へ送る。このようにして
送られた制御情報は、現セットのデータ依存関係が判別
された場合に、まだ実行されていない現在保留中の命令
のうちどの命令の実行が可能になったかについてレジス
タ改名ユニット496が行った判断を反映している。レジ
スタ改名ユニット496は実行のために同時に出される最
高6個までの命令を識別した選択制御信号をライン516
を経由して受信する。つまり、2個の整数命令、2個の
浮動小数点命令および2個のブール命令である。
レジスタ改名ユニット496はバス518を経由してレジス
タ・ファイル配列472へ送られた制御信号を通して、識
別された命令を実行する際にアクセスするソース・レジ
スタを選択するという、もう1つの機能を備えている。
順序外で実行される命令の宛先レジスタは対応するデー
タ経路の一時バッファ612、680、728に置かれているも
のとして選択される。順序内で実行される命令は完了す
ると退避され、その結果データはレジスタ・ファイル61
4、684、732にストアされていく。ソース・レジスタの
選択は、レジスタが以前に宛先として選択され、対応す
る以前の命令がまだ退避されていないかどうかによって
決まる。そのような場合には、ソース・レジスタは対応
する一時バッファ612、680、728から選択される。以前
の命令が退避されていた場合は、対応するレジスタ・フ
ァイル614、682、732のレジスタが選択される。その結
果、レジスタ改名ユニット496は、順序外で実行される
命令の場合には、レジスタ・ファイル・レジスタの参照
を一時バッファ・レジスタの参照に実効的に置き換える
ように動作する。
アーキテクチャ100によれば、一時バッファ612、68
0、728は対応するレジスタ・ファイル配列のレジスタ構
造と重複していない。むしろ、8個の保留命令の各々に
対して1つの宛先レジスタ・スロットが用意されてい
る。その結果、一時バッファ宛先レジスタ参照の置換
は、保留レジスタ・セット内の対応する命令のロケーシ
ョンによって判断される。そのあとのソース・レジスタ
参照はソース依存関係が発生した命令に対してデータ依
存関係チェッカ494によって識別される。従って、一時
バッファ・レジスタ内の宛先スロットはレジスタ改名ユ
ニット496によって容易に判断することが可能である。
5) 命令発行ユニットの詳細 命令発行ユニット498は発行できる命令のセットをレ
ジスタ改名ユニット496の出力とEデコード・ユニット4
90によって識別された命令の機能要件に基づいて判断す
る。命令発行ユニット498は制御ライン514を経由して報
告された機能ユニット4780-nの各々の状況に基づいてこ
の判断を行う。従って、命令発行ユニット498は発行す
べき使用可能な命令セットをレジスタ改名ユニット496
から受信すると、オペレーションを開始する。各命令を
実行するためにレジスタ・ファイルへのアクセスが必要
であるとすると、命令発行ユニット498は現在命令を実
行中の機能ユニット4980-nが使用可能であることを予想
する。レジスタ改名ユニット496へ発行すべき命令を判
別する際の遅延を最小にするために、命令発行ユニット
498は専用の組合せロジックで実現されている。
発行すべき命令を判別すると、レジスタ改名ユニット
496はレジスタ・ファイルへのアクセスを開始し、この
アクセスは第3プロセッサ・サイクルP2が終了するまで
続けられる。プロセッサ・サイクルP3が開始すると、命
令発行ユニット498は、「Execute 0」で示すように1つ
または2つ以上の機能ユニット4780-nによるオペレーシ
ョンを開始し、レジスタ・ファイル配列472から送られ
てきたソース・データを受信して処理する。
代表例として、アーキテクチャ100で処理される大部
分の命令は1プロセッサ・サイクルで機能ユニットを通
して実行される。しかし、一部の命令は、「Execute
1」で示すように、同時に出された命令を完了するのに
複数のプロセッサ・サイクルを必要とする。Execute 0
命令とExecute 1命令は、例えば、それぞれALUと浮動小
数点乗算機能ユニットに実行させることができる。ALU
機能ユニットは、第14図に示すように、1プロセッサ・
サイクル内で出力データを発生し、この出力データはラ
ッチしておくだけで、第5プロセッサ・サイクルP4時に
別の命令を実行する際に使用することができる。浮動小
数点乗算機能ユニットは内部パイプライン化機能ユニッ
トにすることが好ましい。従って、次のプロセッサ・サ
イクルで別の浮動小数点命令を出すことができる。しか
し、最初の命令の結果はデータに依存するプロセッサ・
サイクル数の間使用することができない。第14図に示す
命令は、機能ユニットでの処理を完了するためには、3
プロセッサ・サイクルを必要とする。
各プロセッサ・サイクルの間に、命令発行ユニット49
8の機能は繰り返される。その結果、現在の保留中の命
令セットの状況と機能ユニット4780-nの全セットの使用
可能状況は各プロセッサ・サイクルの間に再評価され
る。従って、最適条件のとき、好適アーキテクチャ100
はプロセッサ・サイクルごとに最高6個までの命令を実
行することができる。しかし、代表的な命令ミックスか
ら得られる総平均実行命令数は、1プロセッサ・サイク
ル当たり1.5個ないし2.0個である。
命令発行ユニット498の機能で最後に考慮すべきこと
は、このユニットがトラップ条件の処理と特定命令の実
行に関与することである。トラップ条件を発生するため
には、まだ退避されていないすべての命令をIEU 104か
らクリアする必要がある。このような事態は、算術演算
エラーに応答して機能ユニット4780-nのいずれからか、
あるいは例えば、違法命令をデコードしたときにEデコ
ード・ユニット490から、外部割込みを受信し、それが
割込み要求/受信確認制御ライン340を経由してIEU 104
へ中継されたのに応答して、起こることがある。トラッ
プ条件が発生したとき、命令発行ユニット498は現在IEU
104で保留されているすべての非退避命令を中止または
無効にすることを受け持つ。同時に退避できない命令は
すべて無効にされる。この結果は、プログラム命令スト
リームを順序内で実行する従来の方式に対して割込みを
正確に発生させるために不可欠である。IEU 104がトラ
ップ処理プログラム・ルーチンの実行を開始する準備状
態になると、命令発行ユニット498は制御ライン340を経
由するリターン制御信号によって割込みの受信を確認す
る。また、従来の純然たる順序内ルーチンにおいてある
命令が実行される前に変更されたプロセッサ状態ビット
に基づいて、その命令に対する例外条件が認識される可
能性を防止するために、命令発行ユニット498はPSRを変
更する可能性のあるすべての命令(特殊移動やトラップ
からのリターンなど)が厳格に順序内で実行されるよう
にすることを受け持つ。
プログラム制御の流れを変更するある種の命令は、I
デコード・ユニット262によって判別されない。この種
の命令には、サブルーチン・リターン、プロシージャ命
令からのリターン、トラップからのリターンがある。命
令発行ユニット498は判別制御信号をIEUリターン制御ラ
イン350を経由してIFU 102へ送る。特殊レジスタ412の
うち対応するものが選択されて、コール命令の実行時、
トラップの発生時またはプロシージャ命令の出現時に存
在していたIF_PC実行アドレスを出力する。
6) 完了制御ユニットの詳細 完了制御ユニット540は機能ユニット4780-nをモニタ
して、現在のオペレーションの完了状況を調べる。好適
アーキテクチャ100では、完了制御ユニット540は各機能
ユニットによるオペレーションの完了を予想して、現在
保留中の命令セットの中の各命令の実行状況を示した完
了ベクトルを、機能ユニット4780-nによる命令の実行完
了よりも約半プロセッサ・サイクル前にレジスタ改名ユ
ニット496、バイパス制御ユニット520および退避制御ユ
ニット500へ送る。これにより、命令発行ユニット498は
レジスタ改名ユニット496を通して、実行を完了する機
能ユニットを次の命令発行サイクルに対して使用可能な
資源として考慮することができる。バイパス制御ユニッ
ト520は、機能ユニットから出力されたデータをバイパ
ス・ユニット474を通るようにバイパスする準備を行う
ことができる。最後に、退避制御ユニット500は、機能
ユニット4780-nからレジスタ・ファイル配列472へデー
タを転送するのと同時に対応する命令を退避するように
動作する。
7) 退避制御ユニットの詳細 完了制御ユニット540から送られた命令完了ベクトル
のほかに、退避制御ユニット500はEデコード・ユニッ
ト490から出力された最も古い命令セットをモニタす
る。命令ストリーム順序の中の各命令に完了制御ユニッ
ト540によって完了の印(マーク)がつけられると、退
避制御ユニット500は、制御ライン534上に送出された制
御信号を通して、一時バッファ・スロットからレジスタ
・ファイル配列472内の対応する命令が指定したファイ
ル・レジスタ・ロケーションへデータを転送することを
指示する。1つまたは複数の命令が同時に退避される
と、PC Inc/Size制御信号が制御ライン344上に送出され
る。各プロセッサ・サイクルごとに最高4個までの命令
を退避することが可能である。命令セット全体が退避さ
れると、IFIFO読取り制御信号が制御ライン342上に送出
されてIFIFO 264を前進させる。
8) 制御フロー制御ユニットの詳細 制御フロー制御ユニット528は、現在の保留中命令セ
ット内の制御フロー命令が解決されたかどうか、さら
に、その結果ブランチが行われたかどうかを指定した情
報をIFU 102に絶えず与えるように動作する。制御フロ
ー制御ユニット528は、Eデコード・ユニット490による
制御フロー・ブランチ命令の識別情報を制御ライン510
を経由して取得する。現在のレジスタ依存関係のセット
は、制御ライン536を経由してデータ依存関係チェッカ
・ユニット494から制御フロー制御ユニット528へ送られ
るので、制御フロー制御ユニット528はブランチ命令の
結果が依存関係に拘束されているかどうか、あるいは判
明しているかどうかを判断することができる。レジスタ
改名ユニット496からバス518を経由して送られたレジス
タの参照は制御フロー制御ユニット528によってモニタ
され、ブランチ決定を定義するブール・レジスタが判別
される。従って、ブランチ決定は、制御フロー命令の順
序外の実行以前でも判断することが可能である。
制御フロー命令の実行と同時に、バイパス・ユニット
474は、制御フロー1と制御フロー2の制御ライン750、
752からなる制御ライン530を経由して制御フローの結果
を制御フロー制御ユニット528へ送るように指示され
る。最後に、制御フロー制御ユニット528は各々が8ビ
ットの2個のベクトルを制御ライン348を経由してIFU 1
02へ連続して送る。これらのベクトルは、ベクトル内の
ビットに対応する論理ロケーションに置かれた命令が解
決されたか否か、およびその結果ブランチが行われたか
否かを定義している。
好適アーキテクチャ100では、制御フロー制御ユニッ
ト528は制御ユニット528への入力制御信号を受けて連続
的に動作する組合せロジックとして実現されている。
9) バイパス制御ユニットの詳細 命令発行ユニット498はバイパス制御ユニット520と緊
密に協働して、レジスタ・ファイル配列472と機能ユニ
ット4780-n間のデータのルーチング(経路指定)を制御
する。バイパス制御ユニット520は、第14図に示すオペ
レーションのレジスタ・ファイル・アクセス、出力およ
びストア・フェーズと関連して動作する。レジスタ・フ
ァイル・アクセスの間には、バイパス制御ユニット520
は命令の実行の出力フェーズの間に書き込まれている途
中にあるレジスタ・ファイル配列472内の宛先レジスタ
のアクセスを、制御ライン522を通して認識することが
できる。この場合、バイパス制御ユニット520は、バイ
パスして機能ユニット配布バス480に返すように、機能
ユニット出力バス482上に送出されたデータを選択する
ことを指示する。バイパス・ユニット520に対する制御
は、制御ライン542を通して命令発行ユニット498によっ
て行われる。
IV.仮想メモリ制御ユニット VMU 108のインタフェース定義は第15図に示されてい
る。VMU 108は主にVMU制御ロジック・ユニット800と内
容アドレス(content addressable)メモリ(CAM)802
から構成されている。VMU 108の一般的機能は第16図に
ブロック図で示してある。同図において、仮想アドレス
の表現は、スペースID(sID[31:28])、仮想ページ番
号(VADDR[27:14])、ページ・オフセット(PADDR[1
3:4])、および要求ID(rID[3:0])に分割されてい
る。物理アドレスを生成するためのアルゴリズムでは、
スペースIDを使用して、スペース・テーブル842内の16
個のレジスタから1つを選択するようになっている。選
択したスペース・レジスタの内容と仮想ページ番号とを
組み合わせて、テーブル索引バッファ(TLB)844をアク
セスするときのアドレスとして使用される。34ビット・
アドレスは内容アドレス・タグの働きをし、バッファ84
4ないの対応するバッファ・レジスタを指定するために
使用される。タグに一致するものが見つかると、18ビッ
ト幅レジスタ値が物理アドレス846の上位18ビットとし
て得られる。ページ・オフセットと要求IDは物理アドレ
ス846の下位14ビットとして得られる。
タグに一致するものがテーブル索引バッファ844に見
つからないと、VMU不一致が通知される。この場合は、M
AU 112に維持されている完全ページ・テーブル・データ
構造をアクセスする従来のハッシュ・アルゴリズム848
を採用したVMU高速トラップ処理ルーチンを実行させる
必要がある。このページ・テーブル850はアーキテクチ
ャ100によって現在使用中のすべてのメモリ・ページの
エントリを含んでいる。ハッシュ・アルゴリズム848
は、現在の仮想ページ変換操作を満たすために必要なペ
ージ・テーブル・エントリを判別する。これらのページ
・テーブル・エントリはMAU 112からレジスタ・セット
“A"のトラップ・レジスタへロードされ、そのあと特殊
レジスタ移動命令によってテーブル索引バッファ844へ
転送される。例外処理ルーチンから戻ると、VMU不一致
例外を引き起こした命令はIEU 104によって再実行され
る。仮想アドレスから物理アドレスへの変換操作は例外
を引き起こさないで完了するはずである。
VMU制御ロジック800はIFU 102およびIEU 104とのデュ
アル・インタフェースとなる。準備信号は制御ライン82
2を経由してIEU 104へ送られ、VMU 108がアドレス変換
のために使用可能であることを通知する。好適実施例で
は、VMU 108は常にIFU 102の変換要求を受け付ける準備
状態にある。IFU 102およびIEU 104は共に、制御ライン
329および804を経由して要求を提示することができる。
好適アーキテクチャ100では、IFUは優先してVMU 108を
アクセスすることができる。その結果、ビジー(使用
中)制御ライン820は1つだけがIEU 104に出力される。
IFU 102およびIEU 104は共に、スペースIDと仮想ペー
ジ番号フィールドを、それぞれ、制御ライン326および8
08を経由してVMU制御ロジック800へ送る。さらに、IEU
104は読み書き制御信号を制御信号806で出力する。この
制御信号は、参照された仮想メモリのメモリ・アクセス
保護属性を変更するために、そのアドレスをロード・オ
ペレーションに使用すべきか、ストア・オペレーション
に使用すべきを必要に応じて定義している。仮想アドレ
スのスペースIDと仮想ページ・フィールドはCAMユニッ
ト802に渡されて、実際の変換操作が行われる。ページ
・オフセットとExIDフィールドは最終的にIEU 104から
直接にCCU 106へ送られる。物理ページと要求IDフィー
ルドはアドレス・ライン836を経由してCAMユニット802
へ送られる。テーブル索引バッファに一致するものが見
つかると、ヒット・ラインと制御出力ライン830を経由
してVMU制御ロジック・ユニット800に通知される。その
結果の18ビット長の物理アドレスはアドレス出力ライン
824上に出力される。
VMU制御ロジック・ユニット800は、ライン830からヒ
ットおよび制御出力制御信号を受けると、仮想メモリ不
一致と仮想メモリ例外制御信号をライン334、332上に出
力する。仮想メモリ変換不一致とは、テーブル索引バッ
ファ844内のページ・テーブルIDと一致しなかったこと
を意味する。その他の変換エラーはすべて仮想メモリ例
外として報告される。
最後に、CAMユニット802内のデータ・テーブルは特殊
レジスタ間移動命令をIEU 104が実行することによって
変更することができる。読み書き、レジスタ選択、リセ
ット、ロードおよびクリア制御信号はIEU 104から制御
ライン810、812、814、816、818を経由して出力され
る。CAMユニット・レジスタに書くべきデータは特殊ア
ドレス・データ・バス354に接続されたアドレス・バス8
08を経由してIEU 104からVMU制御ロジック・ユニット80
0によって受信される。このデータは初期設定、レジス
タ選択、および読み書き制御信号を制御する制御信号と
同時にバス836を経由してCAMユニット802へ転送され
る。その結果、CAMユニット802内のデータ・レジスタ
は、より高レベルのオペレーティング・システムで定義
されているコンテキスト・スイッチを処理するとき必要
になるストアのための読出しを含めて、アーキテクチャ
100の動的オペレーションの間に必要に応じて即座に書
き出すことができる。
V.キャッシュ制御ユニット CCU 106のデータ・インタフェースに対する制御は第1
7図に示されている。この場合も、IFU 102とIEU 104用
に別々のインタフェースが設けられている。さらに、論
理的に別個のインタフェースがCCU 106に用意され、命
令とデータ転送のためにMCU 110と結ばれている。
IFUインタフェースはアドレス・ライン324上に送出さ
れる物理ページ・アドレス、アドレス・ライン824上に
送出されるVMU変換ページ・アドレス、および制御ライ
ン294、296上を別々に転送される要求IDからなってい
る。単方向データ転送バス114は命令セット全体をIFU 1
02と並列に転送するためのものである。最後に、読取り
/使用中および準備制御信号は制御ライン298、300、30
2を経由してCCU 106へ送られる。
同様に、物理アドレス全体は物理アドレス・バス788
を経由してIEU 104へ送られる。要求ExIDは制御ライン7
96を経由してIEU 104のロード/ストア・ユニットとの
間で別々に受渡される。80ビット幅単方向データ・バス
はCCU 106からIEU 104に出力される。しかし、アーキテ
クチャ100の好適実施例では、下位の64ビットだけがIEU
104によって使用される。全80ビット・データ転送バス
をCCU 106内で使用できるようにし、かつサポートして
いるのは、本アーキテクチャ100の引き続いての実行を
サポートするためであり、浮動小数点データ経路660を
変更することによって、IEEE標準754に準拠する浮動小
数点のオペレーションをサポートする。
IEU制御インタフェースは要求、使用中、準備、読み
書きを通して、および制御信号784を通して確立され、
実質的には、IFU 102によって使用される対応する制御
信号と同じである。例外は、ロード・オペレーションと
ストア・オペレーションを区別するための読み書き制御
信号が設けられていることである。幅制御信号はIEU 10
4による各CCU 106へのアクセス時に転送されるバイト数
を指定している。これに対して、命令用キャッシュ132
のすべてのアクセスは固定した128ビット幅データ・フ
ェッチ・オペレーションになっている。
CCU 106は命令用キャッシュ132とデータ用キャッシュ
134に対して従来とほぼ同じキャッシュ制御機能を備え
ている。好適アーキテクチャ100では、命令用キャッシ
ュ132は256個の128ビット幅命令セットをストアする機
能を備えた高速メモリになっている。データ用キャッシ
ュ134は1024個の32ビット幅ワードのデータをストアす
る機能を備えている。命令用キャッシュ132とデータ用
キャッシュ134の内容から即時に満足できない命令要求
とデータ要求はMCU 110に渡される。命令用キャッシュ
がミスした場合は、28ビット幅物理アドレスがアドレス
・バス860を経由してMCU 110に渡される。要求IDおよび
CCU 106とMCU 110のオペレーションを調整するための追
加制御信号は制御ライン862上に送出される。MCU 110が
MAU 112の必要な読取りアクセスを調整すると、2つの
連続する64ビット幅データ転送が直接にMAU 112から命
令用キャッシュ132へ行われる。2つの転送が必要にな
るのは、データ・バス136が好適アーキテクチャ100で
は、64ビット幅バスになっているためである。要求した
データがMCU 110を通して返却されると、要求オペレー
ションの保留中に維持されていた要求IDも制御ライン86
2を経由してCCU 106へ返却される。
データ用キャッシュ134とMCU 110との間のデータ転送
オペレーションは、命令用キャッシュの転送オペレーシ
ョンとほぼ同じである。データ・ロードとストア・オペ
レーションは単一バイトを参照できるので、全32ビット
幅の物理アドレスがアドレス・バス864を経由してMCU 1
10へ送られる。インタフェース制御信号と要求ExIDは制
御ライン866を経由して転送される。双方向の64ビット
幅データ転送はデータ用キャッシュ・バス138を経由し
て行われる。
VI.要約および結論 高性能RISCをベースとしたマイクロプロセッサ・アー
キテクチャは以上に説明したとおりである。本発明のア
ーキテクチャによれば、命令を順序外に実行することが
でき、メインとターゲット命令ストリームのプリフェッ
チ命令転送経路を別々に設け、およびプロシージャ命令
認識と専用プリフェッチ経路を設けることができる。命
令実行ユニットは最適化されているので、最適化された
複数のデータ処理経路で整数、浮動小数点およびブール
演算をサポートすることができ、またそれぞれの一時レ
ジスタ・ファイルが設けられているので、容易に設定さ
れるマシン状態の状況を正確に維持しながら、順序外の
実行と命令取消しを容易に行うことができる。
従って、上述した説明では、本発明の好適実施例を開
示しているが、当業者にとって本発明の範囲内で種々変
更および改良することが可能であることは勿論である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ミヤヤマ,ヨシユキ アメリカ合衆国 95050 カリフォルニ ア州 サンタ クララ ランチョ マコ ーミック ブールバード 2171 (72)発明者 ガルグ,サンジブ アメリカ合衆国 94539 カリフォルニ ア州 フリーモント センティネル ド ライブ 46820 (72)発明者 ハギワラ,ヤスアキ アメリカ合衆国 95050 カリフォルニ ア州 サンタ クララ モンロー スト リート 2250 アパート 274 (72)発明者 ワン,ジョハネス アメリカ合衆国 94062 カリフォルニ ア州 レッドウッド シティ キング ストリート 25 (72)発明者 ラウ,テーリ アメリカ合衆国 94306 カリフォルニ ア州 パロ アルト カレッジ アヴェ ニュー 411 アパート イー (72)発明者 トラン,クワン エイチ. アメリカ合衆国 95130 カリフォルニ ア州 サン ノゼ メイフィールド ア ヴェニュー 2045 (56)参考文献 特開 平4−148236(JP,A) 特開 平4−124730(JP,A) 特開 平3−257527(JP,A) 特開 昭61−95447(JP,A) 特開 平3−137729(JP,A) 特開 平3−147134(JP,A) 特開 平2−278337(JP,A) 特開 平1−313328(JP,A) 久我守弘ほか4名,SIMP(単一命 令流/多重パイプライン)方式に基づく 「新風」プロセッサの低レベル並列アル ゴリズム,情報処理学会論文誌,社団法 人情報処理学会,1989年12月15日,第30 巻第12号,p.1603−1611 (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/42

Claims (27)

    (57)【特許請求の範囲】
  1. 【請求項1】命令ストアから取得した命令を実行するマ
    イクロプロセッサにおいて、 命令ストアから命令をフェッチする手段と、 前記フェッチする手段の後段に設けられ、複数命令をバ
    ッファリングする手段と、 前記バッファの後段に設けられ、複数命令を同時にデコ
    ードするデコード手段と、 前記デコード手段の後段に設けられ、順序外で命令を実
    行することが可能な実行手段と、 を備え、 前記実行手段が 複数のレジスタにデータをストアするレジスタファイル
    手段と、 予め定めた態様でデータを処理する複数の機能ユニット
    手段と、 を備えたことを特徴とする高性能RISCマイクロプロセッ
    サ。
  2. 【請求項2】命令ストアから取得した命令を実行するス
    ーパースカラーマイクロプロセッサにおいて、 プログラム順序にある複数の命令を命令ストアからフェ
    ッチするフェッチ回路と、; 前記フェッチ回路の後段に設けられ、前記複数の命令を
    バッファリングするFIFO機能を有するバッファと、; 前記複数の命令を同時にデコードしディスパッチするデ
    ィスパッチ回路と、; 実行ユニットと、; を備え、 前記実行ユニットが、 前記ディスパッチ回路によってプログラム順序外でディ
    スパッチされた前記命令をそれぞれ実行する複数の機能
    ユニットと、 前記複数の機能ユニットの実行結果をストアするレジス
    タファイルと、 を備えたことを特徴とする高性能RISCマイクロプロセッ
    サ。
  3. 【請求項3】さらに、複数の前記順序外で実行された命
    令をプログラム順序にそろえるための退避回路を備えた
    請求項1または2記載の高性能RISCマイクロプロセッ
    サ。
  4. 【請求項4】前記退避回路が、プロセッササイクルで所
    定命令まで退避させることが可能である請求項3記載の
    高性能RISCマイクロプロセッサ。
  5. 【請求項5】前記FIFO機能を有するバッファが、プロセ
    ッササイクルで4以上の命令を前記ディスパッチ回路へ
    供給することができる請求項1または2記載の高性能RI
    SCマイクロプロセッサ。
  6. 【請求項6】前記ディスパッチ回路が、プロセッササイ
    クルで所定命令まで前記実行ユニットへディスパッチす
    ることができる請求項1または2記載の高性能RISCマイ
    クロプロセッサ。
  7. 【請求項7】前記ディスパッチ回路は、さらに、前記複
    数の機能ユニットの利用可能性を条件に、プログラム順
    序外の命令を実行ユニットに発行する手段を備えている
    請求項1または2記載の高性能RISCマイクロプロセッ
    サ。
  8. 【請求項8】前記命令ストアは外部キャッシュに結合さ
    れている請求項1または2記載の高性能RISCマイクロプ
    ロセッサ。
  9. 【請求項9】前記ディスパッチ回路は、複数の前記バッ
    ファリングされた命令をプロセッササイクルで前記実行
    ユニットへ供給することにより、前記命令をディスパッ
    チする請求項1または2記載の高性能RISCマイクロプロ
    セッサ。
  10. 【請求項10】命令ストアから取得した命令を実行する
    スーパースカラーマイクロプロセッサにおいて、 命令ストアからプログラム順序にある複数の命令をフェ
    ッチするフェッチ回路と、; 前記複数の命令をバッファリングする第1命令バッファ
    と、; 前記第1命令バッファの後段に設けられた分岐デコーダ
    と; 前記分岐デコーダの後段に設けられ、前記複数の命令を
    バッファリングするFIFO機能を有する第2バッファと; 前記FIFO機能を有する第2バッファでバッファリングさ
    れた前記複数の命令を同時にデコードしディスパッチす
    るディスパッチ回路と; 実行ユニットと、; を備え、 前記実行ユニットが、 前記ディスパッチ回路によってプログラム順序外でディ
    スパッチされた前記複数の命令をそれぞれ実行する複数
    の機能ユニットと、 前記機能ユニットの実行結果をストアするレジスタファ
    イルと、 を備えたことを特徴とする高性能RISCマイクロプロセッ
    サ。
  11. 【請求項11】さらに、複数の前記順序外で実行された
    命令をプログラム順序にそろえるための回避回路を備え
    た請求項10記載の高性能RISCマイクロプロセッサ。
  12. 【請求項12】前記退避回路が、プロセッササイクルで
    所定命令まで退避させることが可能である請求項11記載
    の高性能RISCマイクロプロセッサ。
  13. 【請求項13】前記FIFO機能を有するバッファが、プロ
    セッササイクルで4以上の命令を前記ディスパッチ回路
    へ供給することができる請求項10記載の高性能RISCマイ
    クロプロセッサ。
  14. 【請求項14】前記ディスパッチ回路が、プロセッササ
    イクルで所定命令で前記実行ユニットへディスパッチす
    ることができる請求項10記載の高性能RISCマイクロプロ
    セッサ。
  15. 【請求項15】前記ディスパッチ回路が、さらに、前記
    複数の機能ユニットの利用可能性を条件に、プログラム
    順序外の命令を実行ユニットに発行する手段を備えてい
    る請求項10記載の高性能RISCマイクロプロセッサ。
  16. 【請求項16】前記命令ストアはマイクロプロセッサに
    より実行される命令をストアする外部キャッシュに結合
    されている請求項10記載の高性能RISCマイクロプロセッ
    サ。
  17. 【請求項17】前記ディスパッチ回路は、複数の前記バ
    ッファリングされた命令をプロセッササイクルで前記実
    行ユニットへ供給する請求項10記載の高性能RISCマイク
    ロプロセッサ。
  18. 【請求項18】命令ストアから取得した命令を実行する
    スーパースカラーマイクロプロセッサにおいて、 プログラム順序にある複数の命令を命令ストアからフェ
    ッチするフェッチ回路と、; 前記複数の命令をバッファリングする第1命令バッファ
    と、; 前記第1命令バッファの後段に設けられた分岐デコーダ
    と; 前記複数の命令をバッファリングするFIFO機能を有する
    第2バッファと; 前記FIFO機能を有する第2バッファでバッファリングさ
    れた前記複数の命令を同時にデコードしディスパッチす
    るディスパッチ回路と; 実行ユニットと、; を備え、 前記実行ユニットが、 前記ディスパッチ回路によってプログラム順序外でディ
    スパッチされた前記命令をそれぞれ実行する複数の機能
    ユニットと、 前記複数の機能ユニットの実行結果をストアするレジス
    タファイルと、 を備えたことを特徴とする高性能RISCマイクロプロセッ
    サ。
  19. 【請求項19】さらに、複数の前記順序外で実行された
    命令をプログラム順序にそろえるための退避回路を備え
    た請求項18記載の高性能RISCマイクロプロセッサ。
  20. 【請求項20】前記退避回路が、プロセッササイクルで
    所定命令まで退避させることが可能である請求項19記載
    の高性能RISCマイクロプロセッサ。
  21. 【請求項21】前記FIFO機能を有するバッファが、プロ
    セッササイクルで4以上の命令を前記ディスパッチ回路
    へ供給することができる請求項18記載の高性能RISCマイ
    クロプロセッサ。
  22. 【請求項22】前記ディスパッチ回路が、プロセッササ
    イクルで4命令まで前記実行ユニットへディスパッチす
    ることができる請求項18記載の高性能RISCマイクロプロ
    セッサ。
  23. 【請求項23】前記ディスパッチ回路が、さらに、前記
    複数の機能ユニットの利用可能性を条件に、プログラム
    順序外の命令を実行ユニットに発行する手段を備えてい
    る請求項18記載の高性能RISCマイクロプロセッサ。
  24. 【請求項24】前記命令ストアはマイクロプロセッサに
    より実行される命令をストアする外部キャッシュに結合
    されている請求項18記載の高性能RISCマイクロプロセッ
    サ。
  25. 【請求項25】前記ディスパッチ回路は、複数の前記バ
    ッファリングされた命令をプロセッササイクルで前記実
    行ユニットへ供給する請求項18記載の高性能RISCマイク
    ロプロセッサ。
  26. 【請求項26】前記FIFO機能を有する第2バッファが、
    前記第1命令バッファから前記複数の命令をバッファリ
    ングする請求項18記載の高性能RISCマイクロプロセッ
    サ。
  27. 【請求項27】請求項1乃至26のいずれかのマイクロプ
    ロセッサと外部メモリとを備えたデータ処理装置。
JP50215093A 1991-07-08 1992-07-07 高性能riscマイクロプロセッサ及びデータ処理装置 Expired - Lifetime JP3441070B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US72700691A 1991-07-08 1991-07-08
US727,006 1991-07-08
PCT/JP1992/000868 WO1993001545A1 (en) 1991-07-08 1992-07-07 High-performance risc microprocessor architecture

Related Child Applications (8)

Application Number Title Priority Date Filing Date
JP2000145125A Division JP3654138B2 (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ及びデータ処理装置
JP2000145123A Division JP3654137B2 (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ及びデータ処理装置
JP2000145126A Division JP2000357091A (ja) 1991-07-08 2000-05-17 コンピュータシステム
JP2000145124A Division JP2000339159A (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ
JP2000146443A Division JP2000339163A (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ、該プロセッサシステム、該プロセッサシステムにおけるデータ処理方法、及び該プロセッサを備えたコンピュータシステム
JP2000146442A Division JP2000339162A (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ
JP2000146441A Division JP3654139B2 (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ及びデータ処理装置
JP2002267998A Division JP3702873B2 (ja) 1991-07-08 2002-09-13 マイクロプロセッサを用いた命令実行方法

Publications (2)

Publication Number Publication Date
JPH06501122A JPH06501122A (ja) 1994-01-27
JP3441070B2 true JP3441070B2 (ja) 2003-08-25

Family

ID=24920949

Family Applications (23)

Application Number Title Priority Date Filing Date
JP50215093A Expired - Lifetime JP3441070B2 (ja) 1991-07-08 1992-07-07 高性能riscマイクロプロセッサ及びデータ処理装置
JP2000145125A Expired - Lifetime JP3654138B2 (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ及びデータ処理装置
JP2000145126A Withdrawn JP2000357091A (ja) 1991-07-08 2000-05-17 コンピュータシステム
JP2000145123A Expired - Lifetime JP3654137B2 (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ及びデータ処理装置
JP2000145124A Withdrawn JP2000339159A (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ
JP2000146441A Expired - Lifetime JP3654139B2 (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ及びデータ処理装置
JP2000146442A Withdrawn JP2000339162A (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ
JP2000146443A Withdrawn JP2000339163A (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ、該プロセッサシステム、該プロセッサシステムにおけるデータ処理方法、及び該プロセッサを備えたコンピュータシステム
JP2002267998A Expired - Lifetime JP3702873B2 (ja) 1991-07-08 2002-09-13 マイクロプロセッサを用いた命令実行方法
JP2004266867A Expired - Lifetime JP3729202B2 (ja) 1991-07-08 2004-09-14 スーパースカラーマイクロプロセッサ
JP2004299657A Expired - Lifetime JP3838252B2 (ja) 1991-07-08 2004-10-14 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2004329902A Expired - Lifetime JP3760947B2 (ja) 1991-07-08 2004-11-15 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2004367718A Expired - Lifetime JP3760948B2 (ja) 1991-07-08 2004-12-20 スーパースカラーマイクロプロセッサ
JP2005011006A Expired - Lifetime JP3731604B2 (ja) 1991-07-08 2005-01-19 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005041740A Expired - Lifetime JP3731605B2 (ja) 1991-07-08 2005-02-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005119940A Expired - Lifetime JP3791542B2 (ja) 1991-07-08 2005-04-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005145542A Expired - Lifetime JP3791544B2 (ja) 1991-07-08 2005-05-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005178170A Expired - Lifetime JP3791545B2 (ja) 1991-07-08 2005-06-17 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005208079A Expired - Lifetime JP3791547B2 (ja) 1991-07-08 2005-07-19 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005237341A Expired - Lifetime JP3791548B2 (ja) 1991-07-08 2005-08-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005271886A Expired - Lifetime JP3791550B2 (ja) 1991-07-08 2005-09-20 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2006162315A Expired - Lifetime JP3915842B2 (ja) 1991-07-08 2006-06-12 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2006191594A Withdrawn JP2006313564A (ja) 1991-07-08 2006-07-12 スーパースカラーマイクロプロセッサおよびデータ処理装置

Family Applications After (22)

Application Number Title Priority Date Filing Date
JP2000145125A Expired - Lifetime JP3654138B2 (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ及びデータ処理装置
JP2000145126A Withdrawn JP2000357091A (ja) 1991-07-08 2000-05-17 コンピュータシステム
JP2000145123A Expired - Lifetime JP3654137B2 (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ及びデータ処理装置
JP2000145124A Withdrawn JP2000339159A (ja) 1991-07-08 2000-05-17 スーパースカラー型マイクロプロセッサ
JP2000146441A Expired - Lifetime JP3654139B2 (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ及びデータ処理装置
JP2000146442A Withdrawn JP2000339162A (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ
JP2000146443A Withdrawn JP2000339163A (ja) 1991-07-08 2000-05-18 スーパースカラーマイクロプロセッサ、該プロセッサシステム、該プロセッサシステムにおけるデータ処理方法、及び該プロセッサを備えたコンピュータシステム
JP2002267998A Expired - Lifetime JP3702873B2 (ja) 1991-07-08 2002-09-13 マイクロプロセッサを用いた命令実行方法
JP2004266867A Expired - Lifetime JP3729202B2 (ja) 1991-07-08 2004-09-14 スーパースカラーマイクロプロセッサ
JP2004299657A Expired - Lifetime JP3838252B2 (ja) 1991-07-08 2004-10-14 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2004329902A Expired - Lifetime JP3760947B2 (ja) 1991-07-08 2004-11-15 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2004367718A Expired - Lifetime JP3760948B2 (ja) 1991-07-08 2004-12-20 スーパースカラーマイクロプロセッサ
JP2005011006A Expired - Lifetime JP3731604B2 (ja) 1991-07-08 2005-01-19 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005041740A Expired - Lifetime JP3731605B2 (ja) 1991-07-08 2005-02-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005119940A Expired - Lifetime JP3791542B2 (ja) 1991-07-08 2005-04-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005145542A Expired - Lifetime JP3791544B2 (ja) 1991-07-08 2005-05-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005178170A Expired - Lifetime JP3791545B2 (ja) 1991-07-08 2005-06-17 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005208079A Expired - Lifetime JP3791547B2 (ja) 1991-07-08 2005-07-19 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005237341A Expired - Lifetime JP3791548B2 (ja) 1991-07-08 2005-08-18 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2005271886A Expired - Lifetime JP3791550B2 (ja) 1991-07-08 2005-09-20 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2006162315A Expired - Lifetime JP3915842B2 (ja) 1991-07-08 2006-06-12 スーパースカラーマイクロプロセッサおよびデータ処理装置
JP2006191594A Withdrawn JP2006313564A (ja) 1991-07-08 2006-07-12 スーパースカラーマイクロプロセッサおよびデータ処理装置

Country Status (8)

Country Link
US (19) US5539911A (ja)
EP (3) EP0547241B1 (ja)
JP (23) JP3441070B2 (ja)
KR (42) KR100559475B1 (ja)
AT (3) ATE206829T1 (ja)
DE (4) DE03024585T1 (ja)
HK (2) HK1014782A1 (ja)
WO (1) WO1993001545A1 (ja)

Families Citing this family (231)

* 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
US5768575A (en) * 1989-02-24 1998-06-16 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 sepculative and out-of-order execution of complex instructions
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
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
EP0547247B1 (en) 1991-07-08 2001-04-04 Seiko Epson Corporation Extensible risc microprocessor architecture
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
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5371684A (en) * 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
DE69308548T2 (de) * 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69316955T2 (de) * 1992-09-18 1998-07-30 Hitachi Ltd Rechenanlage mit synchronem, dynamischem Speicher
JP3644959B2 (ja) 1992-09-29 2005-05-11 セイコーエプソン株式会社 マイクロプロセッサシステム
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
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
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
US6393550B1 (en) * 1993-12-30 2002-05-21 Intel Corporation Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
US5956753A (en) * 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
US5724536A (en) * 1994-01-04 1998-03-03 Intel Corporation Method and apparatus for blocking execution of and storing load operations during their execution
US5546597A (en) * 1994-02-28 1996-08-13 Intel Corporation Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
JP3212213B2 (ja) * 1994-03-16 2001-09-25 株式会社日立製作所 データ処理装置
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5778434A (en) * 1995-06-07 1998-07-07 Seiko Epson Corporation System and method for processing multiple requests and out of order returns
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5897665A (en) * 1995-12-15 1999-04-27 Intel Corporation Register addressing for register-register architectures used for microprocessors and microcontrollers
US5930490A (en) * 1996-01-02 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US5715425A (en) * 1996-02-22 1998-02-03 Sun Microsystems, Inc. Apparatus and method for prefetching data into an external cache
US5652774A (en) * 1996-07-08 1997-07-29 International Business Machines Corporation Method and apparatus for decreasing the cycle times of a data processing system
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US5815688A (en) * 1996-10-09 1998-09-29 Hewlett-Packard Company Verification of accesses in a functional model of a speculative out-of-order computer system
US5838941A (en) * 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US6195746B1 (en) 1997-01-31 2001-02-27 International Business Machines Corporation Dynamically typed register architecture
US5864701A (en) * 1997-02-14 1999-01-26 Integrated Device Technology, Inc. Apparatus and method for managing interrupt delay associated with mask flag transition
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US5944810A (en) * 1997-06-27 1999-08-31 Sun Microsystems, Inc. Superscalar processor for retiring multiple instructions in working register file by changing the status bits associated with each execution result to identify valid data
US6035388A (en) 1997-06-27 2000-03-07 Sandcraft, Inc. Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units
US6263416B1 (en) * 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US5966142A (en) * 1997-09-19 1999-10-12 Cirrus Logic, Inc. Optimized FIFO memory
US6249857B1 (en) * 1997-10-20 2001-06-19 Motorola, Inc. Apparatus using a multiple instruction register logarithm based processor
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6493790B1 (en) * 1998-01-30 2002-12-10 Sun Microsystems, Inc. Translation-lookaside buffer with current tracking reference circuit
US6345355B1 (en) 1998-05-29 2002-02-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing commands to a plurality of circuit blocks
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6266761B1 (en) * 1998-06-12 2001-07-24 International Business Machines Corporation Method and system in an information processing system for efficient maintenance of copies of values stored within registers
EP1105793A4 (en) * 1998-08-21 2007-07-25 California Inst Of Techn TREATMENT ELEMENT APPLYING PARTICULARLY TO BRANCHING FUNCTIONS
US6308262B1 (en) * 1998-09-30 2001-10-23 Intel Corporation System and method for efficient processing of instructions using control unit to select operations
US6163155A (en) * 1999-01-28 2000-12-19 Dresser Industries, Inc. Electromagnetic wave resistivity tool having a tilted antenna for determining the horizontal and vertical resistivities and relative dip angle in anisotropic earth formations
US6882642B1 (en) * 1999-10-14 2005-04-19 Nokia, Inc. Method and apparatus for input rate regulation associated with a packet processing pipeline
US6470427B1 (en) 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
EP1109096A3 (en) * 1999-12-17 2004-02-11 Fujitsu Limited Processor and method of controlling the same
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US6467027B1 (en) * 1999-12-30 2002-10-15 Intel Corporation Method and system for an INUSE field resource management scheme
US6601162B1 (en) * 2000-01-19 2003-07-29 Kabushiki Kaisha Toshiba Processor which executes pipeline processing having a plurality of stages and which has an operand bypass predicting function
US7149883B1 (en) * 2000-03-30 2006-12-12 Intel Corporation Method and apparatus selectively to advance a write pointer for a queue based on the indicated validity or invalidity of an instruction stored within the queue
US6446181B1 (en) * 2000-03-31 2002-09-03 Intel Corporation System having a configurable cache/SRAM memory
US6606684B1 (en) 2000-03-31 2003-08-12 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select
US6785802B1 (en) 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
US7080183B1 (en) * 2000-08-16 2006-07-18 Koninklijke Philips Electronics N.V. Reprogrammable apparatus supporting the processing of a digital signal stream and method
SE0003398D0 (sv) * 2000-09-22 2000-09-22 Ericsson Telefon Ab L M Optimization of a pipelined processor system
US6754808B1 (en) * 2000-09-29 2004-06-22 Intel Corporation Valid bit generation and tracking in a pipelined processor
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7079133B2 (en) * 2000-11-16 2006-07-18 S3 Graphics Co., Ltd. Superscalar 3D graphics engine
US7162718B1 (en) * 2000-12-12 2007-01-09 International Business Machines Corporation Language extension for light weight threading in a JVM
US7069422B2 (en) * 2000-12-22 2006-06-27 Modelski Richard P Load-shift carry instruction
US7007156B2 (en) * 2000-12-28 2006-02-28 Intel Corporation Multiple coprocessor architecture to process a plurality of subtasks in parallel
US6643755B2 (en) * 2001-02-20 2003-11-04 Koninklijke Philips Electronics N.V. Cyclically sequential memory prefetch
US6493814B2 (en) 2001-03-08 2002-12-10 International Business Machines Corporation Reducing resource collisions associated with memory units in a multi-level hierarchy memory system
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US7191430B2 (en) * 2001-09-24 2007-03-13 Hewlett-Packard Development Company, L.P. Providing instruction execution hints to a processor using break instructions
JP2003140886A (ja) * 2001-10-31 2003-05-16 Seiko Epson Corp インストラクションセット及びコンパイラ
JP4272371B2 (ja) * 2001-11-05 2009-06-03 パナソニック株式会社 デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US7376811B2 (en) * 2001-11-06 2008-05-20 Netxen, Inc. Method and apparatus for performing computations and operations on data using data steering
JP3878508B2 (ja) * 2001-11-08 2007-02-07 松下電器産業株式会社 回路群制御システム
US6895460B2 (en) * 2002-07-19 2005-05-17 Hewlett-Packard Development Company, L.P. Synchronization of asynchronous emulated interrupts
US7120068B2 (en) * 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US7502910B2 (en) * 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US20040148489A1 (en) * 2003-01-28 2004-07-29 Sun Microsystems, Inc. Sideband VLIW processor
US20040199749A1 (en) * 2003-04-03 2004-10-07 Robert Golla Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
US7873110B2 (en) * 2003-06-17 2011-01-18 Broadcom Corporation MPEG smart video transport processor with different transport packet handling
US7428631B2 (en) * 2003-07-31 2008-09-23 Intel Corporation Apparatus and method using different size rename registers for partial-bit and bulk-bit writes
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US20050138297A1 (en) * 2003-12-23 2005-06-23 Intel Corporation Register file cache
US7171545B2 (en) * 2003-12-30 2007-01-30 Intel Corporation Predictive filtering of register cache entry
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US7437536B2 (en) 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration
US7724263B2 (en) * 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US7868902B1 (en) * 2004-05-14 2011-01-11 Nvidia Corporation System and method for pixel data row forwarding in a 3-D graphics pipeline
US8719837B2 (en) 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
US8225034B1 (en) * 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7200693B2 (en) * 2004-08-27 2007-04-03 Micron Technology, Inc. Memory system and method having unidirectional data buses
US20080162877A1 (en) * 2005-02-24 2008-07-03 Erik Richter Altman Non-Homogeneous Multi-Processor System With Shared Memory
JP2007041837A (ja) * 2005-08-03 2007-02-15 Nec Electronics Corp 命令プリフェッチ装置及び命令プリフェッチ方法
JP4841861B2 (ja) * 2005-05-06 2011-12-21 ルネサスエレクトロニクス株式会社 演算処理装置及びデータ転送処理の実行方法
US20070028027A1 (en) * 2005-07-26 2007-02-01 Micron Technology, Inc. Memory device and method having separate write data and read data buses
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7539852B2 (en) * 2005-08-29 2009-05-26 Searete, Llc Processor resource management
US7725693B2 (en) 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US7647487B2 (en) 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US8375247B2 (en) 2005-08-29 2013-02-12 The Invention Science Fund I, Llc Handling processor computational errors
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US8209524B2 (en) 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US8181004B2 (en) * 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US20070050606A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Runtime-based optimization profile
US7512842B2 (en) 2005-08-29 2009-03-31 Searete Llc Multi-voltage synchronous systems
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US8214191B2 (en) * 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US8516300B2 (en) * 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US8981996B2 (en) * 2005-09-27 2015-03-17 Qualcomm Incorporated Position location using transmitters with timing offset and phase adjustment
US20070073925A1 (en) 2005-09-28 2007-03-29 Arc International (Uk) Limited Systems and methods for synchronizing multiple processing engines of a microprocessor
US8078845B2 (en) 2005-12-16 2011-12-13 Freescale Semiconductor, Inc. Device and method for processing instructions based on masked register group size information
US8266413B2 (en) * 2006-03-14 2012-09-11 The Board Of Trustees Of The University Of Illinois Processor architecture for multipass processing of instructions downstream of a stalled instruction
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
US7685467B2 (en) * 2006-04-27 2010-03-23 Texas Instruments Incorporated Data system simulated event and matrix debug of pipelined processor
US7647486B2 (en) 2006-05-02 2010-01-12 Atmel Corporation Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
US7664932B2 (en) 2007-04-13 2010-02-16 Microsoft Corporation Scalable and configurable execution pipeline of handlers having policy information for selectively acting on payload
US8082540B2 (en) * 2007-04-19 2011-12-20 International Business Machines Corporation Method for visually indicating preceding and succeeding source code lines that are executed in a graphical debugging environment
JP2008305185A (ja) * 2007-06-07 2008-12-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
JP4896837B2 (ja) * 2007-08-20 2012-03-14 株式会社東芝 携帯可能電子装置および携帯可能電子装置の制御方法
US7823117B1 (en) * 2007-12-21 2010-10-26 Xilinx, Inc. Separating a high-level programming language program into hardware and software components
US8176406B2 (en) * 2008-03-19 2012-05-08 International Business Machines Corporation Hard error detection
US20090249035A1 (en) * 2008-03-28 2009-10-01 International Business Machines Corporation Multi-cycle register file bypass
US20090289943A1 (en) * 2008-05-22 2009-11-26 Howard Teece Anti-aliasing system and method
KR101012121B1 (ko) * 2008-06-05 2011-02-07 경상북도 (관련부서:경상북도축산기술연구소장) 송아지 사육 케이지
KR100892857B1 (ko) * 2008-07-30 2009-04-15 주식회사 유비콘테크놀로지 시스템온칩의 내부 메모리 장치 및 그 운영방법
GB2463278B (en) * 2008-09-05 2012-05-16 Advanced Risc Mach Ltd Scheduling control within a data processing system
US8312442B2 (en) * 2008-12-10 2012-11-13 Oracle America, Inc. Method and system for interprocedural prefetching
US9690625B2 (en) * 2009-06-16 2017-06-27 Oracle America, Inc. System and method for out-of-order resource allocation and deallocation in a threaded machine
KR101032771B1 (ko) * 2009-05-29 2011-05-06 광운대학교 산학협력단 구성형 프로세서에서 risc 명령어와 확장 명령어를 병렬 처리하기 위한 방법 및 그에 따른 구성형 프로세서
KR200448337Y1 (ko) * 2009-12-31 2010-04-05 임준기 통풍기능을 구비한 농산물 받침대
CN102193775B (zh) * 2010-04-27 2015-07-29 威盛电子股份有限公司 微处理器融合搬运/算术逻辑运算/条件跳跃指令
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
EP2628072B1 (en) * 2010-10-12 2016-10-12 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
US9733944B2 (en) 2010-10-12 2017-08-15 Intel Corporation Instruction sequence buffer to store branches having reliably predictable instruction sequences
US9710270B2 (en) * 2010-12-20 2017-07-18 International Business Machines Corporation Exception control method, system, and program
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
CN102789377B (zh) 2011-05-18 2015-09-30 国际商业机器公司 处理指令分组信息的方法和装置
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
US8683261B2 (en) 2011-07-20 2014-03-25 International Business Machines Corporation Out of order millicode control operation
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US8612959B2 (en) 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
KR101912427B1 (ko) 2011-12-12 2018-10-29 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
US20140082333A1 (en) * 2011-12-22 2014-03-20 Elmoustapha Ould-Ahmed-Vall Systems, apparatuses, and methods for performing an absolute difference calculation between corresponding packed data elements of two vector registers
WO2013095666A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing vector packed unary decoding using masks
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9152566B2 (en) * 2012-06-15 2015-10-06 International Business Machines Corporation Prefetch address translation using prefetch buffer based on availability of address translation logic
US10255944B2 (en) * 2012-06-27 2019-04-09 Marvell World Trade Ltd. Systems and methods for reading and decoding encoded data from a storage device
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US10299934B2 (en) * 2012-12-11 2019-05-28 Globus Medical, Inc Expandable vertebral implant
US20140281413A1 (en) * 2013-03-14 2014-09-18 Mips Technologies, Inc. Superforwarding Processor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers
JP2017516228A (ja) 2014-05-12 2017-06-15 インテル・コーポレーション 自己書き換えコードのハードウェアサポートを提供する方法及び装置
CN104156196B (zh) * 2014-06-12 2017-10-27 龚伟峰 重命名预处理方法
US9678758B2 (en) 2014-09-26 2017-06-13 Qualcomm Incorporated Coprocessor for out-of-order loads
US9483409B2 (en) 2015-02-05 2016-11-01 International Business Machines Corporation Store forwarding cache
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US10705841B2 (en) 2015-06-24 2020-07-07 International Business Machines Corporation Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions
US9794660B2 (en) 2015-09-25 2017-10-17 Intel Corporation Integrated sound bar hinge assembly for mobile electronic device
US10445091B1 (en) * 2016-03-30 2019-10-15 Apple Inc. Ordering instructions in a processing core instruction buffer
US20170315812A1 (en) 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Parallel instruction scheduler for block isa processor
US10496409B2 (en) 2016-11-22 2019-12-03 The Arizona Board Of Regents Method and system for managing control of instruction and process execution in a programmable computing system
US10162680B2 (en) * 2016-12-13 2018-12-25 GM Global Technology Operations LLC Control of data exchange between a primary core and a secondary core using a freeze process flag and a data frozen flag in real-time
US10983799B1 (en) 2017-12-19 2021-04-20 Apple Inc. Selection of instructions to issue in a processor
US11422821B1 (en) 2018-09-04 2022-08-23 Apple Inc. Age tracking for independent pipelines
CN109614145B (zh) * 2018-10-18 2021-03-09 中国科学院计算技术研究所 一种处理器核心结构及数据访存方法
CN111488176B (zh) * 2019-01-25 2023-04-18 阿里巴巴集团控股有限公司 一种指令调度方法、装置、设备及存储介质
US11176055B1 (en) 2019-08-06 2021-11-16 Marvell Asia Pte, Ltd. Managing potential faults for speculative page table access
US11461106B2 (en) 2019-10-23 2022-10-04 Texas Instruments Incorporated Programmable event testing
US11579884B2 (en) * 2020-06-26 2023-02-14 Advanced Micro Devices, Inc. Instruction address translation and caching for primary and alternate branch prediction paths
US11656876B2 (en) 2020-10-29 2023-05-23 Cadence Design Systems, Inc. Removal of dependent instructions from an execution pipeline
US11243778B1 (en) * 2020-12-31 2022-02-08 Microsoft Technology Licensing, Llc Instruction dispatch for superscalar processors
US11886883B2 (en) 2021-08-26 2024-01-30 International Business Machines Corporation Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction
US11809874B2 (en) 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions
WO2023150114A1 (en) * 2022-02-01 2023-08-10 Apple Inc. Conditional instructions prediction

Family Cites Families (279)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3346851A (en) * 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3718912A (en) * 1970-12-22 1973-02-27 Ibm Instruction execution unit
US3789365A (en) * 1971-06-03 1974-01-29 Bunker Ramo Processor interrupt system
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3913074A (en) 1973-12-18 1975-10-14 Honeywell Inf Systems Search processing apparatus
JPS5110746A (ja) 1974-07-17 1976-01-28 Hitachi Ltd
US4041461A (en) * 1975-07-25 1977-08-09 International Business Machines Corporation Signal analyzer system
US4034349A (en) * 1976-01-29 1977-07-05 Sperry Rand Corporation Apparatus for processing interrupts in microprocessing systems
US4128880A (en) 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
US4212076A (en) 1976-09-24 1980-07-08 Giddings & Lewis, Inc. Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former
US4101086A (en) 1977-07-20 1978-07-18 Eastman Kodak Company Yarn tie-up and transfer tail method, and yarn package tube and apparatus for the method
US4237532A (en) * 1977-09-02 1980-12-02 Sperry Corporation Table driven decision and control logic for digital computers
US4199811A (en) * 1977-09-02 1980-04-22 Sperry Corporation Microprogrammable computer utilizing concurrently operating processors
US4210960A (en) * 1977-09-02 1980-07-01 Sperry Corporation Digital computer with overlapped operation utilizing conditional control to minimize time losses
US4296465A (en) * 1977-11-03 1981-10-20 Honeywell Information Systems Inc. Data mover
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
US4315314A (en) * 1977-12-30 1982-02-09 Rca Corporation Priority vectored interrupt having means to supply branch address directly
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4228495A (en) * 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system
US4315308A (en) 1978-12-21 1982-02-09 Intel Corporation Interface between a microprocessor chip and peripheral subsystems
US4296470A (en) * 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
JPS5616248A (en) * 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
US4336024A (en) * 1980-02-22 1982-06-22 Airwick Industries, Inc. Process for cleaning clothes at home
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
US4434461A (en) * 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
JPS5757345A (en) * 1980-09-24 1982-04-06 Toshiba Corp Data controller
JPS57150040A (en) 1981-03-11 1982-09-16 Mitsubishi Electric Corp Pipeline computer
JPS57155666A (en) * 1981-03-20 1982-09-25 Fujitsu Ltd Instruction controlling system of vector processor
US4574349A (en) 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
US4814979A (en) 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
JPS57204125A (en) 1981-06-10 1982-12-14 Hitachi Ltd Electron-ray drawing device
US4482950A (en) 1981-09-24 1984-11-13 Dshkhunian Valery Single-chip microcomputer
US4498134A (en) 1982-01-26 1985-02-05 Hughes Aircraft Company Segregator functional plane for use in a modular array processor
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
US4434641A (en) * 1982-03-11 1984-03-06 Ball Corporation Buckle resistance for metal container closures
US4484272A (en) * 1982-07-14 1984-11-20 Burroughs Corporation Digital computer for executing multiple instruction sets in a simultaneous-interleaved fashion
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4500963A (en) 1982-11-29 1985-02-19 The United States Of America As Represented By The Secretary Of The Army Automatic layout program for hybrid microcircuits (HYPAR)
US4597054A (en) 1982-12-02 1986-06-24 Ncr Corporation Arbiter circuit and method
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4800486A (en) * 1983-09-29 1989-01-24 Tandem Computers Incorporated Multiple data patch CPU architecture
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
GB8329509D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer
JPS60120439A (ja) * 1983-12-05 1985-06-27 Nec Corp 演算処理装置
US4561051A (en) 1984-02-10 1985-12-24 Prime Computer, Inc. Memory access method and apparatus in multiple processor systems
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
JPS60225943A (ja) * 1984-04-25 1985-11-11 Hitachi Ltd 例外割込み処理方式
US4648045A (en) 1984-05-23 1987-03-03 The Board Of Trustees Of The Leland Standford Jr. University High speed memory and processor system for raster display
JPS6140650A (ja) 1984-08-02 1986-02-26 Nec Corp マイクロコンピユ−タ
US4766564A (en) * 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
US4677545A (en) 1984-10-12 1987-06-30 American Telephone And Telegraph Company Microprocessor having macro-rom and main program queues
US4991081A (en) 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4775927A (en) 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag
JPH0731603B2 (ja) * 1984-11-21 1995-04-10 ノビツクス Forth特定言語マイクロプロセサ
JPS61133439A (ja) 1984-12-04 1986-06-20 Nec Corp 命令先取り制御方式
JPH0652784B2 (ja) 1984-12-07 1994-07-06 富士通株式会社 ゲートアレイ集積回路装置及びその製造方法
US4829467A (en) 1984-12-21 1989-05-09 Canon Kabushiki Kaisha Memory controller including a priority order determination circuit
NL193475C (nl) * 1984-12-27 1999-11-02 Sony Corp Microprocessorinrichting.
US5255384A (en) 1985-02-22 1993-10-19 Intergraph Corporation Memory address translation system having modifiable and non-modifiable translation mechanisms
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
JPH0762823B2 (ja) * 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
CA1254661A (en) * 1985-06-28 1989-05-23 Allen J. Baum Method and means for instruction combination for code compression
US4613941A (en) 1985-07-02 1986-09-23 The United States Of America As Represented By The Secretary Of The Army Routing method in computer aided customization of a two level automated universal array
US4945479A (en) 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
US4777588A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US4719569A (en) 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
JPH0622035B2 (ja) * 1985-11-13 1994-03-23 株式会社日立製作所 ベクトル処理装置
JPS62152043A (ja) * 1985-12-26 1987-07-07 Nec Corp 命令コ−ドアクセス制御方式
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
IL81762A0 (en) * 1986-04-11 1987-10-20 Symbolics Inc Instruction prefetch unit
JP2545789B2 (ja) 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
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
US4811208A (en) 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JP2684362B2 (ja) 1986-06-18 1997-12-03 株式会社日立製作所 可変長データの記憶方式
US4814978A (en) 1986-07-15 1989-03-21 Dataflow Computer Corporation Dataflow processing element, multiprocessor, and processes
JPS6324428A (ja) * 1986-07-17 1988-02-01 Mitsubishi Electric Corp キヤツシユメモリ
US4942323A (en) * 1986-07-28 1990-07-17 Decesare Dominic Two pole electric motor with stator winding encircling the rotor
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4841453A (en) 1986-11-10 1989-06-20 Ibm Corporation Multidirectional scan and print capability
JPH0793358B2 (ja) 1986-11-10 1995-10-09 日本電気株式会社 ブロック配置処理方式
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JPH0810430B2 (ja) 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
US5283903A (en) 1986-12-25 1994-02-01 Nec Corporation Priority selector
US5226170A (en) * 1987-02-24 1993-07-06 Digital Equipment Corporation Interface between processor and special instruction processor in digital data processing system
US5179689A (en) 1987-03-13 1993-01-12 Texas Instruments Incorporated Dataprocessing device with instruction cache
US4833599A (en) 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US4858116A (en) 1987-05-01 1989-08-15 Digital Equipment Corporation Method and apparatus for managing multiple lock indicators in a multiprocessor computer system
JP2510591B2 (ja) * 1987-06-12 1996-06-26 株式会社日立製作所 命令処理装置
JPH07113903B2 (ja) 1987-06-26 1995-12-06 株式会社日立製作所 キャッシュ記憶制御方式
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
US5134561A (en) 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4901233A (en) 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
JP2624484B2 (ja) 1987-07-31 1997-06-25 三井東圧化学株式会社 中国語の入力処理方法
US5150309A (en) 1987-08-04 1992-09-22 Texas Instruments Incorporated Comprehensive logic circuit layout system
US4980817A (en) 1987-08-31 1990-12-25 Digital Equipment Vector register system for executing plural read/write commands concurrently and independently routing data to plural read/write ports
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
EP0312764A3 (en) 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5089951A (en) 1987-11-05 1992-02-18 Kabushiki Kaisha Toshiba Microcomputer incorporating memory
US5197136A (en) * 1987-11-12 1993-03-23 Matsushita Electric Industrial Co., Ltd. Processing system for branch instruction
US4823201A (en) 1987-11-16 1989-04-18 Technology, Inc. 64 Processor for expanding a compressed video signal
US5185878A (en) 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
JPH0769821B2 (ja) * 1988-03-04 1995-07-31 日本電気株式会社 情報処理装置におけるバイパスライン制御方式
JPH01228865A (ja) 1988-03-09 1989-09-12 Minolta Camera Co Ltd プリンタ制御装置
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
US5155817A (en) 1988-04-01 1992-10-13 Kabushiki Kaisha Toshiba Microprocessor
US5301278A (en) 1988-04-29 1994-04-05 International Business Machines Corporation Flexible dynamic memory controller
US5003462A (en) * 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
US4897810A (en) * 1988-06-13 1990-01-30 Advanced Micro Devices, Inc. Asynchronous interrupt status bit circuit
US5097409A (en) 1988-06-30 1992-03-17 Wang Laboratories, Inc. Multi-processor system with cache memories
US5261057A (en) 1988-06-30 1993-11-09 Wang Laboratories, Inc. I/O bus to system interface
JP2761506B2 (ja) 1988-07-08 1998-06-04 株式会社日立製作所 主記憶制御装置
JPH0222736A (ja) 1988-07-12 1990-01-25 Nec Corp 中央処理装置
US5032985A (en) 1988-07-21 1991-07-16 International Business Machines Corporation Multiprocessor system with memory fetch buffer invoked during cross-interrogation
US5148536A (en) 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
JPH0673105B2 (ja) * 1988-08-11 1994-09-14 株式会社東芝 命令パイプライン方式のマイクロプロセッサ
US5291615A (en) 1988-08-11 1994-03-01 Kabushiki Kaisha Toshiba Instruction pipeline microprocessor
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
US5167035A (en) 1988-09-08 1992-11-24 Digital Equipment Corporation Transferring messages between nodes in a network
JPH0287229A (ja) 1988-09-24 1990-03-28 Nec Corp 実行命令の先取り制御方式
US4879787A (en) 1988-10-03 1989-11-14 Walls Thomas J Shoe lace knot securing device
JP2672599B2 (ja) * 1988-10-18 1997-11-05 ヤマハ 株式会社 コンピュータシステム
EP0365188B1 (en) 1988-10-18 1996-09-18 Hewlett-Packard Company Central processor condition code method and apparatus
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5058451A (en) * 1988-11-11 1991-10-22 Kabushiki Kaisha Kobe Seiko Sho Control lever apparatus and actuator operation apparatus
JPH0769824B2 (ja) 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式
KR920006613B1 (ko) * 1988-12-01 1992-08-10 재단법인한국전자통신연구소 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트
GB8828817D0 (en) * 1988-12-09 1989-01-18 Int Computers Ltd Data processing apparatus
IL92605A0 (en) * 1988-12-19 1990-08-31 Bull Hn Information Syst Production line method and apparatus for high performance instruction execution
JPH0769811B2 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
US5148533A (en) 1989-01-05 1992-09-15 Bull Hn Information Systems Inc. Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units
US5125092A (en) 1989-01-09 1992-06-23 International Business Machines Corporation Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes
JP2736092B2 (ja) 1989-01-10 1998-04-02 株式会社東芝 バッファ装置
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5142633A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Preprocessing implied specifiers in a pipelined processor
US5125083A (en) 1989-02-03 1992-06-23 Digital Equipment Corporation Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
US4985825A (en) * 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5222223A (en) 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
US5142634A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5167026A (en) 1989-02-03 1992-11-24 Digital Equipment Corporation Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5109495A (en) 1989-02-03 1992-04-28 Digital Equipment Corp. Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
US5133074A (en) 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5293500A (en) 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5226166A (en) 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
JPH0630063B2 (ja) * 1989-02-17 1994-04-20 株式会社東芝 マイクロプロセッサ
US5768575A (en) * 1989-02-24 1998-06-16 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 sepculative and out-of-order execution of complex instructions
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
US5239633A (en) * 1989-03-24 1993-08-24 Mitsubishi Denki Kabushiki Kaisha Data processor executing memory indirect addressing and register indirect addressing
JPH02278337A (ja) 1989-04-19 1990-11-14 Nec Corp 命令キュー装置
US5119485A (en) 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
CN1168004C (zh) * 1989-05-17 2004-09-22 国际商业机器公司 在数据处理系统中提供容错环境和体系结构的装置
US5155809A (en) 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5072364A (en) 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
JPH0314025A (ja) * 1989-06-13 1991-01-22 Nec Corp 命令実行制御方式
DE69032812T2 (de) 1989-07-07 1999-04-29 Hitachi Ltd Vorrichtung und Verfahren zur parallelen Verarbeitung
JP2505887B2 (ja) * 1989-07-14 1996-06-12 富士通株式会社 命令処理システム
JP2682217B2 (ja) * 1989-08-28 1997-11-26 日本電気株式会社 マイクロプロセッサ
US5317734A (en) * 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
JPH07120284B2 (ja) * 1989-09-04 1995-12-20 三菱電機株式会社 データ処理装置
EP0419105B1 (en) * 1989-09-21 1997-08-13 Texas Instruments Incorporated Integrated circuit formed on a surface of a semiconductor substrate and method for constructing such an integrated circuit
US5303382A (en) 1989-09-21 1994-04-12 Digital Equipment Corporation Arbiter with programmable dynamic request prioritization
JPH03137729A (ja) 1989-10-23 1991-06-12 Hokuriku Nippon Denki Software Kk 先行制御方式
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
JPH03147134A (ja) 1989-11-02 1991-06-24 Oki Electric Ind Co Ltd 命令シーケンス制御装置
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
EP0429733B1 (en) 1989-11-17 1999-04-28 Texas Instruments Incorporated Multiprocessor with crossbar between processors and memories
US5226125A (en) 1989-11-17 1993-07-06 Keith Balmer Switch matrix having integrated crosspoint logic and method of operation
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
JPH03186928A (ja) * 1989-12-16 1991-08-14 Mitsubishi Electric Corp データ処理装置
US5179673A (en) 1989-12-18 1993-01-12 Digital Equipment Corporation Subroutine return prediction mechanism using ring buffer and comparing predicated address with actual address to validate or flush the pipeline
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
JPH061463B2 (ja) 1990-01-16 1994-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法
US5222240A (en) 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
US5241636A (en) 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5185872A (en) 1990-02-28 1993-02-09 Intel Corporation System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5120083A (en) 1990-03-19 1992-06-09 Henkels & Mccoy, Inc. Expansion joint for conduit for cables
JP2818249B2 (ja) 1990-03-30 1998-10-30 株式会社東芝 電子計算機
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
IT1247640B (it) 1990-04-26 1994-12-28 St Microelectronics Srl Operazioni booleane tra due qualsiasi bit di due qualsiasi registri
US5201056A (en) 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
US5214763A (en) 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
DE69128741T2 (de) 1990-05-18 1998-07-16 Koninkl Philips Electronics Nv Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
US5249286A (en) 1990-05-29 1993-09-28 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5197132A (en) 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
CA2045773A1 (en) 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
DE69127936T2 (de) 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
US5155843A (en) * 1990-06-29 1992-10-13 Digital Equipment Corporation Error transition mode for multi-processor system
JPH0475139A (ja) * 1990-07-18 1992-03-10 Toshiba Corp ループ並列化装置
JPH0814492B2 (ja) * 1990-09-21 1996-02-14 日本航空電子工業株式会社 光ファイバジャイロ
DE69130723T2 (de) * 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
US5222244A (en) 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
USH1291H (en) 1990-12-20 1994-02-01 Hinton Glenn J Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
US5303362A (en) 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5261071A (en) 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5287467A (en) 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5355457A (en) 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5630157A (en) 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5278963A (en) 1991-06-21 1994-01-11 International Business Machines Corporation Pretranslation of virtual addresses prior to page crossing
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5826055A (en) 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
EP0547247B1 (en) 1991-07-08 2001-04-04 Seiko Epson Corporation Extensible risc microprocessor architecture
DE69224887T2 (de) 1991-07-08 1998-07-23 Seiko Epson Corp Single-chip seitendrucker-steuerschaltung
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
DE69230554T2 (de) 1991-07-08 2000-07-06 Seiko Epson Corp Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
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
GB2260628A (en) 1991-10-11 1993-04-21 Intel Corp Line buffer for cache memory
JPH0820949B2 (ja) 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
US5285527A (en) 1991-12-11 1994-02-08 Northern Telecom Limited Predictive historical cache memory
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5398330A (en) 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
JPH07504773A (ja) 1992-03-18 1995-05-25 セイコーエプソン株式会社 マルチ幅のメモリ・サブシステムをサポートするためのシステム並びに方法
US5371684A (en) 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
JP3137729B2 (ja) 1992-04-09 2001-02-26 本田技研工業株式会社 ガバリ部品の製造方法
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5442756A (en) 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5619668A (en) 1992-08-10 1997-04-08 Intel Corporation Apparatus for register bypassing in a microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5524225A (en) 1992-12-18 1996-06-04 Advanced Micro Devices Inc. Cache system and method for providing software controlled writeback
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5604912A (en) 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
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
US5627984A (en) 1993-03-31 1997-05-06 Intel Corporation Apparatus and method for entry allocation for a buffer resource utilizing an internal two cycle pipeline
US5577217A (en) 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
JPH09500989A (ja) 1993-05-14 1997-01-28 インテル・コーポレーション 分岐ターゲット・バッファにおける推論履歴
JPH0728695A (ja) 1993-07-08 1995-01-31 Nec Corp メモリコントローラ
US5446912A (en) * 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table
US5613132A (en) 1993-09-30 1997-03-18 Intel Corporation Integer and floating point register alias table within processor device
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
EP0651321B1 (en) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5689672A (en) 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
JP3218524B2 (ja) 1993-12-22 2001-10-15 村田機械株式会社 ワークホルダーのはみ出し検出装置
US5574935A (en) 1993-12-29 1996-11-12 Intel Corporation Superscalar processor with a multi-port reorder buffer
US5630075A (en) 1993-12-30 1997-05-13 Intel Corporation Write combining buffer for sequentially addressed partial line operations originating from a single instruction
US5619664A (en) 1994-01-04 1997-04-08 Intel Corporation Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
US5627985A (en) 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5452426A (en) 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5604877A (en) 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
US5577200A (en) 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US5625788A (en) 1994-03-01 1997-04-29 Intel Corporation Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto
US5586278A (en) 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
US5630083A (en) 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
US5564056A (en) 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
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
US5623628A (en) 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5394351A (en) 1994-03-11 1995-02-28 Nexgen, Inc. Optimized binary adder and comparator having an implicit constant for an input
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5490280A (en) 1994-03-31 1996-02-06 Intel Corporation Apparatus and method for entry allocation for a resource buffer
US5615126A (en) 1994-08-24 1997-03-25 Lsi Logic Corporation High-speed internal interconnection technique for integrated circuits that reduces the number of signal lines through multiplexing
US5819101A (en) 1994-12-02 1998-10-06 Intel Corporation Method for packing a plurality of packed data elements in response to a pack instruction
EP0795153A4 (en) 1994-12-02 2001-11-14 Intel Corp MICROPROCESSOR WITH COMPASS OPERATION OF COMPOSITE OPERANDS
US5666494A (en) 1995-03-31 1997-09-09 Samsung Electronics Co., Ltd. Queue management mechanism which allows entries to be processed in any order
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5745375A (en) 1995-09-29 1998-04-28 Intel Corporation Apparatus and method for controlling power usage
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5961129A (en) * 1997-02-07 1999-10-05 Post; Peter G. Quick-Release interlocking frame assembly for interchangeably mounting operative sports devices to a boot sole
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
JP3147134U (ja) 2008-09-17 2008-12-18 洋 吉迫 プランター

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
久我守弘ほか4名,SIMP(単一命令流/多重パイプライン)方式に基づく「新風」プロセッサの低レベル並列アルゴリズム,情報処理学会論文誌,社団法人情報処理学会,1989年12月15日,第30巻第12号,p.1603−1611

Also Published As

Publication number Publication date
JP2005267664A (ja) 2005-09-29
JP2004348772A (ja) 2004-12-09
KR100764894B1 (ko) 2007-10-09
KR20040000386A (ja) 2004-01-03
KR100325175B1 (ko) 2002-02-25
US6948052B2 (en) 2005-09-20
KR20040004501A (ja) 2004-01-13
KR100559455B1 (ko) 2006-03-10
EP0547241A1 (en) 1993-06-23
EP1385085B1 (en) 2009-12-02
JP2000339160A (ja) 2000-12-08
US6941447B2 (en) 2005-09-06
KR100393494B1 (ja) 2003-08-02
KR100469959B1 (ja) 2005-02-11
KR100875262B1 (ko) 2008-12-22
US5539911A (en) 1996-07-23
US6934829B2 (en) 2005-08-23
ATE260485T1 (de) 2004-03-15
JP2005149534A (ja) 2005-06-09
JP2006313564A (ja) 2006-11-16
KR20040000383A (ja) 2004-01-03
KR20070055586A (ko) 2007-05-30
KR100764898B1 (ko) 2007-10-09
KR930702718A (ko) 1993-09-09
JP3791547B2 (ja) 2006-06-28
US20030070060A1 (en) 2003-04-10
KR20040004499A (ja) 2004-01-13
KR20040000384A (ja) 2004-01-03
KR20040004503A (ja) 2004-01-13
ATE206829T1 (de) 2001-10-15
JP2006236396A (ja) 2006-09-07
KR100393495B1 (ja) 2003-08-02
US6128723A (en) 2000-10-03
JP2005149524A (ja) 2005-06-09
JP2005108264A (ja) 2005-04-21
JP3760947B2 (ja) 2006-03-29
US6038654A (en) 2000-03-14
JP3654137B2 (ja) 2005-06-02
KR100875257B1 (ko) 2008-12-19
KR100469964B1 (ja) 2005-02-11
US6272619B1 (en) 2001-08-07
US7162610B2 (en) 2007-01-09
JP2005310187A (ja) 2005-11-04
JP3654139B2 (ja) 2005-06-02
KR100469952B1 (ja) 2005-02-04
KR20040004500A (ja) 2004-01-13
JP3915842B2 (ja) 2007-05-16
DE69233777D1 (de) 2010-01-14
KR20070056140A (ko) 2007-05-31
KR20040004506A (ja) 2004-01-13
EP1024426A3 (en) 2001-08-08
EP0547241B1 (en) 2001-10-10
KR20080109099A (ko) 2008-12-16
KR100449238B1 (ja) 2004-09-20
US20070106878A1 (en) 2007-05-10
JP3760948B2 (ja) 2006-03-29
ATE450826T1 (de) 2009-12-15
KR20060015781A (ko) 2006-02-20
KR20060015782A (ko) 2006-02-20
KR100325177B1 (ko) 2002-02-21
US20090019261A1 (en) 2009-01-15
KR100559463B1 (ko) 2006-03-10
KR100875252B1 (ko) 2008-12-19
JP3702873B2 (ja) 2005-10-05
US20030079113A1 (en) 2003-04-24
KR20040000410A (ja) 2004-01-03
JPH06501122A (ja) 1994-01-27
KR100393496B1 (ja) 2003-08-02
KR20040004508A (ja) 2004-01-13
US6256720B1 (en) 2001-07-03
KR20070056141A (ko) 2007-05-31
US20020029328A1 (en) 2002-03-07
DE69233313T2 (de) 2004-07-15
JP3731605B2 (ja) 2006-01-05
US6986024B2 (en) 2006-01-10
KR100449244B1 (ja) 2004-09-20
US7739482B2 (en) 2010-06-15
KR100403165B1 (ja) 2003-10-30
KR100393497B1 (ja) 2003-08-02
US6915412B2 (en) 2005-07-05
JP2006012195A (ja) 2006-01-12
US20030056086A1 (en) 2003-03-20
JP3654138B2 (ja) 2005-06-02
KR100559468B1 (ko) 2006-03-10
KR100559482B1 (ko) 2006-03-10
DE69232113D1 (de) 2001-11-15
JP3791542B2 (ja) 2006-06-28
KR100886000B1 (ko) 2009-03-03
KR100403166B1 (ja) 2003-10-30
DE69232113T2 (de) 2002-03-14
KR100633574B1 (ko) 2006-10-16
US6647485B2 (en) 2003-11-11
KR100469968B1 (ja) 2005-02-04
DE69233313D1 (de) 2004-04-01
DE03024585T1 (de) 2004-07-08
US5689720A (en) 1997-11-18
JP3791548B2 (ja) 2006-06-28
HK1014782A1 (en) 1999-09-30
JP2005122740A (ja) 2005-05-12
KR100403164B1 (ja) 2003-10-30
US6101594A (en) 2000-08-08
KR100294475B1 (ko) 2001-09-17
KR20040000382A (ja) 2004-01-03
US7721070B2 (en) 2010-05-18
KR100449242B1 (ja) 2004-09-20
KR100875266B1 (ko) 2008-12-22
KR20070055585A (ko) 2007-05-30
US20040093483A1 (en) 2004-05-13
US7487333B2 (en) 2009-02-03
KR20040004502A (ja) 2004-01-13
JP2006031729A (ja) 2006-02-02
KR100403167B1 (ja) 2003-10-30
JP2005293612A (ja) 2005-10-20
KR20040004507A (ja) 2004-01-13
KR100764895B1 (ko) 2007-10-09
KR20040004505A (ja) 2004-01-13
JP2000357091A (ja) 2000-12-26
HK1060417A1 (en) 2004-08-06
JP3791544B2 (ja) 2006-06-28
JP2005044383A (ja) 2005-02-17
KR100449236B1 (ja) 2004-09-20
KR20070058594A (ko) 2007-06-08
KR20070058595A (ko) 2007-06-08
US6092181A (en) 2000-07-18
KR100469954B1 (ja) 2005-02-04
KR20070058597A (ko) 2007-06-08
US6959375B2 (en) 2005-10-25
KR20040000381A (ja) 2004-01-03
KR100325176B1 (ko) 2002-02-25
KR100559465B1 (ko) 2006-03-10
JP2005251227A (ja) 2005-09-15
JP2000339161A (ja) 2000-12-08
KR20070058596A (ko) 2007-06-08
KR20060015783A (ko) 2006-02-20
EP1024426B1 (en) 2004-02-25
KR20040000385A (ja) 2004-01-03
JP2000339159A (ja) 2000-12-08
JP3731604B2 (ja) 2006-01-05
KR100559475B1 (ko) 2006-03-10
JP2000353090A (ja) 2000-12-19
WO1993001545A1 (en) 1993-01-21
EP1385085A1 (en) 2004-01-28
JP3791545B2 (ja) 2006-06-28
US20030056087A1 (en) 2003-03-20
US20040054872A1 (en) 2004-03-18
JP2000339163A (ja) 2000-12-08
KR100633578B1 (ko) 2006-10-16
EP1024426A2 (en) 2000-08-02
US20040093485A1 (en) 2004-05-13
KR100464272B1 (ja) 2005-01-03
KR20040000411A (ja) 2004-01-03
JP3791550B2 (ja) 2006-06-28
KR100875259B1 (ko) 2008-12-22
JP2003131869A (ja) 2003-05-09
JP3729202B2 (ja) 2005-12-21
KR100469971B1 (ja) 2005-02-04
JP2000339162A (ja) 2000-12-08
KR20040004504A (ja) 2004-01-13
JP3838252B2 (ja) 2006-10-25
US20040093482A1 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
JP3441070B2 (ja) 高性能riscマイクロプロセッサ及びデータ処理装置
JP3441071B2 (ja) マイクロプロセッサ及びデータ処理装置
JP3552995B2 (ja) データ処理装置
JP2000039996A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法
JP2000122865A (ja) 命令実行処理方法
JP2000122866A (ja) デ―タ処理装置
JP2000122867A (ja) トラップ処理方法
JP2000029697A (ja) ス―パ―スカラ処理装置、デ―タ処理方法及びコンピュ―タシステム
JP2000029698A (ja) ス―パ―スカラ処理システム及びデ―タ処理方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090620

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100620

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130620

Year of fee payment: 10

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130620

Year of fee payment: 10