JP3736866B2 - スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット - Google Patents

スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット Download PDF

Info

Publication number
JP3736866B2
JP3736866B2 JP25198894A JP25198894A JP3736866B2 JP 3736866 B2 JP3736866 B2 JP 3736866B2 JP 25198894 A JP25198894 A JP 25198894A JP 25198894 A JP25198894 A JP 25198894A JP 3736866 B2 JP3736866 B2 JP 3736866B2
Authority
JP
Japan
Prior art keywords
instruction
circuit
address
instructions
memory
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
JP25198894A
Other languages
English (en)
Other versions
JPH07152560A (ja
Inventor
ブルーム マーク
ダブリュー ハーヴィン マーク
シー マクマハン スチーブン
エイ ガリベイ ジュニア ロール
ケイ アイトリーム ジョン
エス マクマホン ロナルド
Original Assignee
ヴァイア サイリックス インコーポレイテッド
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
Priority claimed from US08/138,660 external-priority patent/US5794026A/en
Priority claimed from US08/138,855 external-priority patent/US5644741A/en
Application filed by ヴァイア サイリックス インコーポレイテッド filed Critical ヴァイア サイリックス インコーポレイテッド
Publication of JPH07152560A publication Critical patent/JPH07152560A/ja
Application granted granted Critical
Publication of JP3736866B2 publication Critical patent/JP3736866B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/261Microinstruction address formation
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • G06F9/265Microinstruction selection based on results of processing by address selection on input of storage
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、一般に、マイクロプロセッサに係り、より詳細には、条件依存命令を促進実行し、単一クロック命令デコードアーキテクチャを有し、そしてデュアルパイプラインアーキテクチャをサポートするための単一マイクロROM動作を行うマイクロプロセッサに係る。
【0002】
【従来の技術】
マイクロプロセッサの設計においては、命令スループット、即ち1秒当たりに実行される命令の数が第1に重要なものである。1秒当たりに実行される命令の数は、種々の手段によって増加することができる。命令スループットを増加するための最も簡単な技術は、マイクロプロセッサが動作する周波数を増加することである。しかしながら、作動周波数の増加は、製造技術によって制限されると共に、過剰な発熱を招く。
【0003】
従って、近代のマイクロプロセッサ設計は、クロックサイクル周期当たりに実行される命令の平均数を増加する設計技術を用いることにより命令スループットを増加することに集中している。命令スループットを増加するこのような1つの技術が「パイプライン」である。パイプライン技術は、マイクロプロセッサを通して流れる各命令を多数の部分にセグメント化し、その各々をパイプラインの個別の段により取り扱うことができる。パイプライン動作は、実行中に多数の命令をオーバーラップすることによってマイクロプロセッサの速度を増加する。例えば、各命令を6つの段階で実行することができそして各段階がその機能を実行するのに1つのクロックサイクルを必要とする場合には、6つの個別の命令を同時に実行し(各々がパイプラインの個別の段階で実行される)、各クロックサイクルに1つの命令を完了することができる。この考え方によれば、パイプライン式アーキテクチャは、6個のクロックサイクルごとに1つの命令を完了する非パイプライン式アーキテクチャよりも6倍も大きな命令スループットをもつことになる。
【0004】
マイクロプロセッサの速度を高めるための第2の技術は、マイクロプロセッサを「スーパースカラー」として構成することである。スーパースカラーアーキテクチャにおいては、クロックサイクル当たりに2つ以上の命令が発行される。流れの中の他の命令に依存する命令がなければ、命令スループットの増加は、スカラー性の程度に比例する。従って、アーキテクチャがレベル2までスーパースカラーである(各クロックサイクルに2つの命令が発行されることを意味する)場合には、マシンの命令スループットが2倍となる。
【0005】
マイクロプロセッサは、高い命令スループットを得るためには、スーパーパイプライン式(多数の段をもつ命令パイプラインを「スーパーパイプライン」と称する)であると共にスーパースカラーとすることができる。しかしながら、このようなシステムの動作は、実際には、各々の命令を所与の数のパイプ段で手際よく実行でき且つ命令の実行が相互依存しないような理想的な状態からかけ離れている。実際の動作においては、命令は変化するリソース要求を有し、従って、パイプラインを通る命令の流れに割り込みを生じる。更に、命令は典型的に相互依存的であり、例えば、レジスタの値を読み取る命令は、その同じレジスタに値を書き込む手前の命令に依存し、第1の命令がレジスタへの書き込みを完了するまで第2の命令を実行できない。
【0006】
【発明が解決しようとする課題】
従って、スーパーパイプライン及びスーパースカラー技術は、マイクロプロセッサのスループットを高めることはできるが、命令のスループットは、スーパーパイプライン式スーパースカラーアーキテクチャの実施によって大きく左右される。1つの特定の問題は、実行段を行うのに1つのクロックサイクルしか必要としない命令の後に浪費されるクロックサイクルの数を減少することである。このような命令は、その対応するマイクロ命令を単一のクロックサイクルで実行し、以下「単一クロック命令」と称する。特に、現在のパイプラインアーキテクチャのもとでは、単一クロック命令の後に、次の命令のマイクロアドレスが得られるまで、付加的なクロックサイクルが費やされる。従って、そのマイクロアドレスに対応する次の続く命令は、パイプラインを経て進むことが留められる。
【0007】
それ故、単一クロック命令の後に次のマイクロアドレスを得るまでのクロックサイクルの数が公知技術よりも減少されたマイクロプロセッサアーキテクチャの必要性が生じている。
【0008】
更に、多数のパイプラインを受け入れるに必要なアレースペースの全サイズ又は数が公知技術よりも減少されたマイクロプロセッサアーキテクチャの必要性も生じている。
【0009】
更に、条件依存命令の実行を完了又は進ませるまでのクロックサイクルの数が公知技術よりも減少されたマイクロプロセッサアーキテクチャの必要性も生じている。
【0010】
【課題を解決するための手段】
本発明は、制御信号及びベースアドレスを有する第1のマイクロ命令をメモリから発行し、そして複数の所定のデータを評価することにより二次アドレスを決定することによって、流れ変更命令を促進するような改良されたマイクロコントロールユニット及び方法を開示する。ベースアドレスと二次アドレスを結合して行き先アドレスを形成し、この行き先アドレスは、流れ変更命令に対して第2の段を実行するためのメモリ内の第2のマイクロ命令を識別する。二次アドレスとは別に、流れ変更命令の実行段の完了を指示する完了信号が、複数の所定のデータを評価することにより発行される。
【0011】
本発明の別の特徴は、命令が単一クロック命令であるかどうか検出し、そしてそれに応答して、次のマイクロ命令を促進するようにシーケンシング回路に知らせるようなデコード回路にある。
【0012】
本発明の別の特徴は、単一のマイクロメモリからマイクロメモリ命令を出力する多パイプラインマイクロプロセッサにある。
【0013】
本発明のプロセッサ及び方法は、多数の技術的効果をもたらす。一般にこれらの技術的効果はプロセッサスループットの向上と等価であるが、本発明の種々の特徴の特定の実施例は、次の効果の1つ以上をもたらす。(i)条件依存命令を実行する間にそして条件依存命令の完了を決定することによりマイクロ命令メモリへのアクセス回数を減少し、(ii)プロセッサのマイクロメモリへのアクセス及びそこからの出力をパイプライン処理し、従って、ハードウェア、消費電力、表面積及びコストをあまり必要とせず、そして(iii)単一クロック命令の後の遅延を減少する。更に別の技術的効果は、以下の説明、特許請求の範囲及び添付図面を参照することにより当業者に容易に明らかとなろう。
【0014】
【実施例】
本発明及びその効果を完全に理解するために、添付図面を参照して以下に詳細に説明する。本発明のマイクロプロセッサの模範的実施例の詳細な説明は、次のように構成される。
1.模範的プロセッサシステム
1.1 マイクロプロセッサ
1.2 システム
2.一般化されたパイプラインアーキテクチャ
3.単一クロック命令デコードアーキテクチャ
4.デュアルパイプラインアーキテクチャをサポートする単一マイクロROM動作
5.条件依存性命令の実行促進
6.結論
【0015】
この構成テーブル及びこの詳細な説明で使用する対応する見出しは、参照の便宜上設けられているものに過ぎない。マイクロプロセッサの従来又は既知の観点の説明は、これを不必要に詳細にすることにより本発明の説明を不明瞭にしない程度に省略する。
【0016】
1.模範的プロセッサシステム
模範的プロセッサシステムが図1、2及び3に示されている。図1及び2は、各々、模範的なスーパースカラー、スーパーパイプライン型マイクロプロセッサと、2つの実行パイプラインのパイプ段階との基本的な機能ブロックを示している。図3は、マイクロプロセッサを使用する模範的プロセッサシステム(マザーボード)設計を示している。
【0017】
1.1 マイクロプロセッサ
図1を参照すれば、マイクロプロセッサ10の主たるサブブロックは、次のものを含む。(a)中央処理ユニット(CPU)コア20;(b)プリフェッチバッファ30;(c)プリフェッチャ35;(d)分岐処理ユニット(BPU)40;(e)アドレス変換ユニット(ATU)50;及び(f)TAG RAM62を含む単一化した16Kバイトのコード/データキャッシュ60。256バイトの命令ラインキャッシュ65は、単一化キャッシュへの命令フェッチを減少するための一次命令キャッシュを構成し、単一化キャッシュは、二次命令キャッシュとして働く。オンボード浮動小数点ユニット(FPU)70は、CPUコア20によってこれに発せられた浮動小数点命令を実行する。
【0018】
マイクロプロセッサは、内部32ビットアドレス及び64ビットデータバスADS及びDATAを各々使用している。単一化キャッシュ60及び命令ラインキャッシュ65の32バイトラインサイズに対応する256ビット(32バイト)プリフェッチバス(PFB)は、32命令バイトの全ラインを単一のクロックにおいて命令ラインキャッシュへ転送できるようにする。外部32ビットアドレス及び64ビットデータバスへのインターフェイスは、バスインターフェイスユニット(BIU)を経て行われる。
【0019】
CPUコア20は、2つの実行パイプX及びYを有するスーパースカラー設計のものである。これは、命令デコーダ21と、アドレス計算ユニット22X及び22Yと、実行ユニット23X及び23Yと、32個の32ビットレジスタをもつレジスタファイル24とを備えている。ACコントロールユニット25は、レジスタスコアボード及びレジスタ再ネーミングハードウェアをもつレジスタ変換ユニット25aを備えている。マイクロシーケンサ及びマイクロROMを含むマイクロコントロールユニット26は、実行制御を与える。
【0020】
CPUコア20からの書き込みは、12個の32ビット書き込みバッファ29へ待ち行列され、書き込みバッファの割り当ては、ACコントロールユニット25によって実行される。これらの書き込みバッファは、単一化キャッシュ60へ書き込むためのインターフェイスを形成し、非キャッシュ処理書き込みは、書き込みバッファから外部メモリへ直接送られる。書き込みバッファロジックは、オプションの読み取りソース作用及び書き込み集合作用をサポートする。
【0021】
パイプコントロールユニット28は、実行パイプを通る命令の流れを制御し、これは、命令が例外を生じないことが決定されるまで命令の順序を保持し、命令流におけるバブルを押しつぶし、そして誤って予想された分岐及び例外を生じる命令の後に実行パイプをフラッシュすることを含む。各段階に対し、パイプコントロールユニットは、どの実行パイプが最も初期の命令を含むかを追跡し、「ストール」出力を与え、そして「遅延」入力を受け取る。
【0022】
BPU40は、分岐(行われる又は行われない)の方向を予想し、そしてその予想された行われる分岐及び流れ命令の無条件変更(ジャンプ、コール、リターン)に対するターゲットアドレスを与える。更に、このBPUは、分岐及び浮動小数点命令の場合には推論的実行を監視し、即ち予想を誤ることのある分岐後に推論的に発生される命令の実行、及びFPU70へ発生される浮動小数点命令であって推論的に発生された命令が実行を完了した後に失敗となることのある浮動小数点命令の実行を監視する。浮動小数点命令が失敗に終わった場合、又は分岐が誤って予想された(これは、分岐に対するEX又はWB段階まで分からない)場合には、実行パイプラインは、その失敗となった又は予想を誤った命令の点まで修理され(即ち、その命令の後に実行パイプラインがフラッシュされ)、そして命令のフェッチが再開されねばならない。
【0023】
パイプラインの修理は、各パイプ段において浮動小数点又は予想分岐命令がその段に入るときにプロセッサ状態のチェックポイントを形成することにより行われる。これらのチェックポイント検査される命令に対し、その後の推論的に発生される命令によって変更され得る全てのリソース(プログラマが見ることのできるレジスタ、命令ポインタ、条件コードレジスタ)がチェックポイント検査される。チェックポイント検査される浮動小数点命令が失敗に終わるか又はチェックポイント検査される分岐が誤って予想された場合は、そのチェックポイント検査された命令の後に実行パイプラインがフラッシュされ、浮動小数点命令の場合には、これは、典型的に、実行パイプライン全体をフラッシュすることを意味し、一方、誤って予想された分岐の場合には、完了することが許されたEXの対命令及びWBの2つの命令があることを意味する。
【0024】
模範的なマイクロプロセッサ10の場合に、推論の程度についての主たる制約は、次の通りである。(a)一度に4つまでの浮動小数点又は分岐命令に対してのみ推論的実行が許される(即ち、推論レベルは最大4である)。(b)書き込み又は浮動小数点の記憶は、それに関連した分岐又は浮動小数点命令が解決する(即ち、予想が正しいか又は浮動小数点命令が失敗に終わらない)までキャッシュ又は外部メモリに対して完了しない。
【0025】
単一化キャッシュ60は、4方セット連想(4kセットサイズをもつ)のもので、擬似LRU置換アルゴリズムを使用し、ライトスルー及びライトバックモードを有している。これは、クロック当たり2つのメモリアクセス(データ読み取り、命令フェッチ又はデータ書き込み)を許すためにデュアルポート式(バンク構成による)にされている。命令ラインキャッシュは、完全連想、ルックアサイド実施(単一化キャッシュに対して)のもので、LRU置換アルゴリズムを使用する。
【0026】
FPU70は、4深さロード及び記憶待ち行列をもつロード/記憶段と、変換段(32ビットないし80ビットの拡張フォーマット)と、実行段とを備えている。ロードは、CPUコア20により制御され、そしてキャッシュ処理記憶は、書き込みバッファ29により指示される(即ち、各浮動小数点記憶動作に対して書き込みバッファが割り当てられる)。
【0027】
図2を参照すれば、マイクロプロセッサは、7段のX及びY実行パイプラインを有し、即ち、命令フェッチ段(IF)、2つの命令デコード段(ID1、ID2)、2つのアドレス計算段(AC1、AC2)、実行段(EX)、及びライトバック段(WB)を有している。複合ID及びACパイプ段は、スーパーパイプライン式であることに注意されたい。
【0028】
IF段は、CPUコア20に連続的なコード流を与える。プリフェッチャ35は、(一次)命令ラインキャッシュ65或いは(二次)単一化キャッシュ60のいずれかからプリフェッチバッファ30へ16バイトの命令データをフェッチする。BPU40は、プリフェットアドレスでアクセスされ、そして予想される流れの変更に対してプリフェッチャへターゲットアドレスを供給し、プリフェッチャが1つのクロック内に新たなコード流へシフトできるようにする。
【0029】
デコード段ID1及びID2は、可変長さのX86命令セットをデコードする。命令デコーダ21は、各クロックごとにプリフェッチバッファ30から16バイトの命令データを検索する。ID1において、2つの命令の長さがデコードされて(X及びYの実行パイプに対して各々1つづつ)、X及びY命令ポインタを得、それに対応するX及びYバイト使用信号がプリフェッチバッファへ返送される(これは、次いで、次の16バイト転送のために増加する)。又、ID2においても、流れの変更のような幾つかの命令形式が決定され、即座及び/又は変位オペランドが分離される。ID2段は、X及びY命令のデコード、マイクロROMに対するエントリポイントの発生、及びアドレスモード及びレジスタフィールドのデコードを完了する。
【0030】
ID段の間に、命令を実行するための最適なパイプが決定され、命令がそのパイプへ発生される。パイプの切り換えにより、ID2XからAC1YへそしてID2YからAC1Xへ命令を切り換えることができる。模範的な実施例については、流れ変更命令、浮動小数点命令及び排他的命令のような幾つかの命令がXパイプラインのみへ発生される。排他的命令は、EXパイプ段において失敗となることのある命令、及びある形式の命令、例えば、保護モードセグメントロード、ストリング命令、特殊なレジスタアクセス(制御、デバッグ、テスト)、乗算/除算、入力/出力、プッシュオール/ポップオール(PUSH/POPA)、及びタスクスイッチを含む。排他的命令は、両パイプのリソースを使用することができる。というのは、これらは、ID段のみから発生される(即ちこれらは他の命令と対にされない)からである。これらの発生制約を除くと、いかなる命令も対にして、X又はYのいずれのパイプへ発生することもできる。
【0031】
アドレス計算段AC1及びAC2は、メモリ参照のためのアドレスを計算し、そしてメモリオペランドを供給する。AC1段は、クロックごとに2つの32ビットリニア(3オペランド)アドレスを計算する(比較的稀である4つのオペランドアドレスは、2つのクロックを必要とする)。データ依存性もチェックされそしてレジスタ変換ユニット25a(レジスタスコアボード及びレジスタ再ネーミングハードウェア)を用いて分析され、32個の物理レジスタ24は、X86アーキテクチャで定められた8個の汎用のプログラマから見える論理レジスタをマップするのに使用される(EAX、EBX、ECX、EDX、EDI、ESI、EBP、ESP)。
【0032】
ACユニットは、8個のアーキテクチャ(論理)レジスタ(X86で定められたレジスタセットを表す)を備えており、これらは、アドレス変換のためのレジスタオペランドをアクセスする前にレジスタ変換ユニットAC1のアクセスに必要な遅延を回避するようにACユニットによって使用される。アドレス変換を必要とする命令については、AC1は、アーキテクチャレジスタをアクセスする前にこれらアーキテクチャレジスタの所要データが有効になる(リード・アフタ・ライトの依存性がない)まで待機する。AC2段の間に、レジスタファイル24及び単一化キャッシュ60は、物理アドレスでアクセスされ(キャッシュヒットの場合には、デュアルポート式の単一化キャッシュのためのキャッシュアクセス時間は、レジスタのアクセス時間と同じであり、レジスタセットを効果的に拡張する)、物理アドレスは、リニアアドレスであるか、或いはアドレス変換がイネーブルされた場合には、ATU50によって発生された変換されたアドレスである。
【0033】
変換されたアドレスは、メモリのページテーブル及びチップ上のワークスペース制御レジスタからの情報を用いてリニアアドレスからATU50によって発生される。単一化キャッシュは、仮想インデックスされると共に物理的にタグが付けられていて、アドレス変換がイネーブルされたときには、変換されていないアドレス(AC1の終わりに得られる)でセットの選択を行うことができ、そして各セットに対し、ATU50からの変換されたアドレス(AC2において初期に得られる)でタグの比較を行うことができる。セグメント化及び/又はアドレス変換違反のチェックも、AC2で行われる。
【0034】
命令は、それらが例外を生じないと決定されるまではプログラム順序に保たれる。ほとんどの命令に対し、この決定は、AC2の間又はその前に行われ、浮動小数点命令及びある排他的命令は、実行中に例外を生じることがある。命令は、AC2からEXへ順次に通され(又は浮動小数点命令の場合はFPU70へ)、EXにおいて依然として例外を生じることのある整数命令は、排他的と示され、それ故、単独で両方の実行パイプへ発生されるので、しかるべき順序での例外の取り扱いが確保される。
【0035】
実行段EXX及びEXYは、命令により定められた動作を実行する。命令は、EXにおいて可変数のクロックを消費し、即ち順序がずれて実行することが許される(順序ずれ完了)。両方のEX段は、加算、論理及びシフト機能ユニットを備え、そして更に、EXX段は、乗算/除算ハードウェアを含む。
【0036】
WB段は、レジスタファイル24、条件コード、及びマシン状態の他の部分を既に実行された命令の結果で更新する。レジスタファイルは、WBのフェーズ1(PH1)に書き込まれ、そしてAC2のフェーズ2(PH2)に読み取られる。
【0037】
1.2 システム
図3を参照すれば、模範的な実施例として、マイクロプロセッサ10は、単一チップのメモリ及びバスコントローラ82を含むプロセッサシステムに使用される。メモリ/バスコントローラ82は、マイクロプロセッサと外部メモリサブシステム−−レベル2キャッシュ84及びメインメモリ86−−との間のインターフェイスを形成し、64ビットプロセッサデータバス(PD)上でのデータの移動を制御する(データ路はコントローラの外部であり、ピンの本数及びコストを低減する)。
【0038】
コントローラ82は、32ビットアドレスバスPADDRに直接インターフェイスし、コントローラ内のレジスタを読み取ったり書き込んだりするための1ビット巾のデータポート(図示せず)を備えている。両方向性の分離バッファ88は、マイクロプロセッサ10と、VL及びISAバスとの間のアドレスインターフェイスを形成する。
【0039】
コントローラ82は、VL及びISAバスインターフェイスの制御を行う。VL/ISAインターフェイスチップ91(HT321のような)は、32ビットVLバス及び16ビットISAバスへの標準インターフェイスを形成する。ISAバスは、BIOS92、キーボードコントローラ93、I/Oチップ94及び標準ISAスロット95へインターフェイスする。インターフェイスチップ91は、二重の高/低ワード〔31:16〕/〔15:0〕分離バッファにより形成された両方向性32/16マルチプレクサ96を経て32ビットVLバスへインターフェイスする。VLバスは、標準VLスロット97へインターフェイスし、そして両方向性分離バッファ98を経て64ビットプロセッサデータバスの下位ダブルワード〔31:0〕へインターフェイスする。
【0040】
2.一般化されたパイプラインアーキテクチャ
図4は、パイプライン当たり4命令の流れを示すもので、2パイプラインアーキテクチャに対するオーバーラップした命令実行を示している。付加的なパイプラインと、各パイプラインに対する付加的な段とを設けることができる。好ましい実施例において、マイクロプロセッサ10は、システムクロック信号124の倍数である内部クロック122を使用している。図4において、内部クロックはシステムクロックの周波数の2倍で動作するものとして示されている。第1内部クロックサイクル126の間に、ID1は、各命令X0及びY0に基づいて動作する。内部クロックサイクル128の間に、命令X0及びY0はID2段にあり(X0はID2xそしてY0はID2yにあり)、ID1段には命令X1及びY1がある。内部クロックサイクル130の間には、ID1に命令X2及びY2があり、ID2に命令X1及びY1があり(X1はID2xにそしてY1はID2yにあり)、そしてAC1段に命令X0及びY0がある(X0はAC1xにそしてY0はAC1yにある)。内部クロックサイクル132の間には、ID1段に命令X3及びY3があり、ID2段に命令X2及びY2があり、AC1段に命令X1及びY1があり、そしてAC2段に命令X0及びY0がある。これらの命令は、X及びYパイプラインの段を経て順次流れ続ける。クロック134ないし140に示されたように、各命令の実行部分は、順次クロックサイクルにおいて実行される。これは、パイプライン式アーキテクチャの主たる利点であり、個々の命令の実行時間を減少せずに、クロック当たりに完了される命令の数が増加される。従って、ハードウェアの速度に対する大きな需要と共に大きな命令スループットが達成される。
【0041】
図4に示す命令の流れは、最適な場合である。図示されたように、各パイプ段は時間通りに完了し、1クロックサイクル以上の段は必要とされない。しかしながら、実際のマシンでは、1つ以上の段が完了のために付加的なクロックサイクルを必要とし、他のパイプ段を通る命令の流れを変更する。更に、一方のパイプラインを通る命令の流れは、他方のパイプラインを通る命令の流れによって左右される。
【0042】
多数のファクタにより1つ又は全てのパイプラインの種々の段に遅延が生じることがある。例えば、メモリへのアクセスがメモリキャッシュにおいて失敗し、1クロックで命令を処理するに必要な時間にデータをアクセスするのを妨げることがある。これは、データがメインメモリから検索されるまで、AC1段の片側又は両側が遅れることを必要とする。特定の段については、パイプラインの他の段が、ここに示す実施例では実行段の1つにしかない乗算器のような必要なリソースを用いることがある。この場合には、リソースが使用できるまでその段が遅れることになる。データ依存性も遅延を生じることがある。ある命令が加算のような手前の命令の結果を必要とする場合には、その命令が実行ユニットによって処理されるまで待機しなければならない。
【0043】
「マルチボックス」命令、即ち多数のマイクロ命令を用いて実行され、従って完了するのに2つ以上のクロックサイクルを必要とする命令、によって他の遅延が生じる。これらの命令は、ID2段の出力においてパイプラインを通るその後の命令の流れを停止する。
【0044】
パイプラインを通る命令の流れは、パイプコントロールユニット28によって制御される。好ましい実施例では、両方(又は全て)のパイプを通る命令の流れを制御するのに単一のパイプコントロールユニット28が使用される。パイプを通る命令の流れを制御するために、パイプコントロールユニット28は、パイプライン102及び104を含む種々のユニットからの「遅延」信号を受け取り、そして種々のユニットへ「ストール」信号を発行する。
【0045】
X及びYの両パイプラインに対して単一のパイプコントロールユニット28が使用されるので、パイプライン自体は互いに独立して制御される。換言すれば、Xパイプラインのストールが必ずしもYパイプラインのストールを生じることはない。
【0046】
3.単一クロック命令デコードアーキテクチャ
図5は、マイクロアドレス及びそれにより得られるマイクロ命令の発生に伴う幾つかの要素を有するブロック図である。図4のブロックは、図1から導出されるが、本発明の方法は、必ずしも、特定の要素の特定の位置によって制限されるものではなく、当業者であれば、本発明の範囲から逸脱せずに種々の機能を配置し直すことができよう。図5を参照すれば、X及びYの両パイプラインに対する命令は命令デコーダ21に接続される。このデコーダ21は、x及びy命令を受け取り、そしてマイクロアドレス及び制御の両方をマイクロコントロールユニット26に与える。より詳細には、マイクロアドレス及び制御は、マイクロコントロールユニット26内のマイクロシーケンサ146に接続される。好ましい実施例では、マイクロシーケンサ回路146は、X及びYパイプラインに対して同様の機能を実行するための独立したマイクロシーケンサ146x及び146yを備えている。又、マイクロシーケンサ回路146は、他のソース(図示せず)からマイクロプロセッサを通して制御及びマイクロアドレスの両方を受け取る。マイクロシーケンサ回路146は、マイクロROM回路148のメモリ(以下で説明する)をアドレスするために、以下マイクロアドレスと称するアドレスを発生するように接続される。
【0047】
図6は、図5のブロックによるマイクロアドレス発生、マイクロ命令発生及びマイクロ命令実行のタイミングを示している。図6のタイミングは、図4から導出されるが、図5のブロックの動作に対応する段について強く強調されていることに注意されたい。又、図6の段は、150ないし156と均一に番号が付けられた4つの内部クロックサイクルを経てのx及びy命令のシーケンスを示していることにも注意されたい。クロックサイクル150ないし156は、ID2、AC1、AC2及びEX段を含んでいる。又、各クロックサイクルは、2つの位相φ1及びφ2を含むことに注意されたい。
【0048】
単一クロック命令に関連した図5のブロックの一般的動作及び図6のタイミングは、次の通りである。図4について上記したように、段ID1の間には、命令デコーダ21は、単一クロック命令におけるバイトの数と、命令に含まれたフィールドの形式を決定する。又、デコーダ21は、マイクロROM回路148をアドレスするために命令から導出されたエントリ点のマイクロアドレスも与える。段ID2の間には、マイクロシーケンサ回路146は、x及びyの両方の命令に対するマイクロROM回路148のための次のマイクロアドレスを出力する。説明上、次のマイクロアドレスは、各々、μsx1 及びμsy1 と示され、μsはマイクロシーケンサからの出力を指示する。μsx1 は、段ID2の第1の位相φ1中にマイクロシーケンサ回路146によって出力される。同様に、μsy1 は、段ID2の第2の位相φ2中にマイクロシーケンサ回路146によって出力される。
【0049】
マイクロシーケンサ回路146は、精巧なマルチプレクサとして動作し、従って、その制御信号に応答して、マイクロシーケンサ回路146は、そのマイクロアドレス入力から選択を行って次のマイクロアドレスを出力する。好ましい実施例では、マイクロシーケンサ回路146によって選択されて出力された次のマイクロアドレスは、8つの異なるマイクロアドレスの1つである。ここでは、幾つかのマイクロアドレスを与えることについて特に説明するが、マルチプレクサ回路146へマイクロアドレスを与える入力の他のものも図5の一般的な指示に含まれることを理解されたい。簡単に述べると、7つの異なるマイクロアドレスは次の通りである。
(1)命令エントリ点:このマイクロアドレスは、デコーダ21によって与えられ、新たな命令がEX段に入るべきときに選択される。
(2)例外PLA:このマイクロアドレスは、割り込み又は例外に応対するように選択される。
(3)NOP:このマイクロアドレスは、実行されるべき命令が対応パイプラインにないときに選択される。
【0050】
(4)マイクロリターン:このマイクロアドレスは、リターンスタックの上部から選択される。
(5)マイクロROMの次のマイクロアドレス:このマイクロアドレスは、マイクロROM回路148による現在出力から選択され、マイクロ命令の次の逐次対、或いはあるコール又は条件マイクロ分岐のターゲットマイクロアドレスを選択するのに使用される。
(6)ntaken:このアドレスは、ある条件マイクロ分岐が行われないときに選択される。
(7)流れ変更マイクロアドレス:このマイクロアドレスは、一部はマイクロROMの次のマイクロアドレスからそして一部は命令デコード回路から形成された連鎖アドレスである。このマイクロアドレスを発生する好ましい方法は、セクション5で詳細に説明する。
【0051】
マイクロアドレスは、マイクロシーケンサ回路146によってマイクロROM回路148へ送られ、該回路は、その対応するマイクロアドレスによって呼び出された機能を実行するためにマイクロ命令を出力する。従って、図6に戻ると、マイクロアドレスμsx1 の直後に、即ち段ID2のφ1に続いて、μsx1 がマイクロROM回路148へ送られる。セクション4で詳細に説明するように、段ID2のφ2と、段AC1のφ1の終りまでの間に、マイクロROM回路148内のアレーがそれに対応するマイクロ命令μrx1 を発生して出力する。明瞭化のために、μrは、マイクロROM回路148からの出力を示唆することに注意されたい。更に、マイクロアドレスμsy1 の出力の直後に(段ID2のφ2の後に)、μsy1 はマイクロROM回路148に送られる。又、以下のセクション4に述べるように、φ1と、段AC1のφ2の終りまでの間に、マイクロROM回路148のアレーがそれに対応するマイクロ命令μry1 を発生して出力する。段AC2は、クロックサイクル154において生じ、命令X1及びY1、μrx1 及びμry1 に対応するマイクロ命令がマイクロプロセッサの適用要素に与えられる。好ましい実施例では、各パイプラインは、それ自身の各々のアドレス計算段を有しており、従って、x及びyマイクロ命令がそれに応じて与えられる。従って、クロックサイクル154は、AC2段の全時間巾中に「x1 及びy1 」の両方に与えられるものとして示されている。更に、AC2段では、各々のマイクロ命令が実行の準備としてデコードされる。最終的に、EX段は、クロックサイクル156において生じ、デコードされた命令が各X及びYパイプラインのALUに送られ、それにより、与えられたマイクロ命令により指定された機能が実行される。AC2段と同様に、x及びy動作は互いに独立して生じ、従って、EX段の全時間巾中に「x1 及びy1 」の両方に与えられるものとして示されている。図6は、単一クロック命令の流れに対応するので、命令の実行段に対して単一のクロックサイクル156しか必要とされない。多クロック命令は、付加的な実行段を必要とする。
【0052】
図6の一般的な流れを説明したが、本発明の1つの特徴は、単一クロック命令の直後にマイクロROM回路148による出力のタイミングを向上することに関する。特に、本発明は、所与の命令が単一クロック命令であると決定されたときに、次に続く命令をパイプラインを経てできるだけ早く進ませることが望ましいことを認識する。より詳細には、パイプラインに現在通過している命令が単一クロック命令であり、従って、そのEX段に対し単一のクロックサイクルしか必要としないときに、次に続く命令を直ちに進ませて、現在の単一クロック命令の1段だけ後に続くようにするのが好ましい。図7は、この好ましい状態を示している。
【0053】
特に、図7は、図6に示された同じクロックサイクル150ないし156にわたりX及びYパイプラインを通る2つの次々の命令に対する命令の流れを含むタイミング図である。図7の添字は、2つの命令の連続を示している。添字1で示された第1のx及びy命令は、単一クロック命令であって、図6に示した命令と同様に流れる。添字2で示された第2のx及びy命令は、第1のx及びy命令の1段だけ直後に続く付加的な命令である。命令の流れが直ちに続くと、段の浪費はなく、即ち、ID1、ID2、AC1、AC2又はEX段のいずれによっても命令が処理されないようなクロックサイクルは、図示された命令流の間には生じない。
【0054】
公知技術では、単一クロック命令に対し図7の好ましい流れを得ることができない。図8は、図7の2対の命令に対する公知技術の流れを示すタイミング図である。第2の命令に対するマイクロシーケンサの出力μsx2 及びμsy2 は、図7の本発明の好ましい流れで示されたようにクロックサイクル152中ではなくて、クロックサイクル154中に出力される。従って、公知技術では、クロックサイクル152が浪費される。このような結果は、マイクロシーケンサ回路の出力を制御する公知方法によって生じる。特に、公知技術では、単一クロック命令μrに対しマイクロROMにより出力されるマイクロ命令は、その後に(浪費されるクロックサイクルの後に)マイクロシーケンサ回路が次のマイクロROMマイクロアドレスμsを出力するようにさせる制御信号を含んでいる。より詳細には、各々の異なるマイクロ命令に対し、μrの所与のビット(1つ又は複数)が、命令が単一クロック命令であることを指示する。この指示の後にのみ、マイクロシーケンサは、次のマイクロアドレスμsを出力するようにさせられる。この指示及び遅れが図8に矢印で示されている。図示されたように、クロックサイクル152のφ1の終わりに、マイクロ命令μrx1 は、その対応命令が単一クロック命令であることを指示する。上記したように、次のマイクロアドレスμsx2 は、この指示の後にのみ出力され、従って、クロックサイクル154の始めまで生じることはない。従って、実際には、マイクロシーケンサは、マイクロROM出力を「待機」しなければならず、ひいては、この待機時間中に少なくとも1つのクロックサイクルが浪費される。図8に遅れの矢印で示されたように、Yパイプラインについても、マイクロROM出力μry1 と、マイクロシーケンサによる次の応答出力μsy2 との間に同じ遅れが生じることに注意されたい。しかしながら、図8とは対照的に、本発明は、図7の好ましい改良された流れを得るための新規な装置及び方法を備え、これについて以下に述べる。
【0055】
図9は、図5のブロック図に、図7の好ましいタイミングを得るのに使用される細部を加えたものを示している。特に、命令デコーダ21は、x及びy命令に対し各々個別のレジスタ21x及び21yを備えている。更に、各個別のレジスタ21x及び21yは、各プログラマブル論理アレー(PLA)に接続される。より詳細には、PLA158x及び158yは、各命令のOPコードを記憶するレジスタ21x及び21yの部分に接続される。OPコードは各レジスタ21x及び21y内で左に整列されて図示されているが、このような図示は、OPコードがバッファ内のどこにでも記憶することができ、必ずしも相接ビットで表されなくてもよいという点で任意である。各PLA158x及び158yは、更に、各マイクロシーケンサ146x及び146yの制御入力に接続されている。最後に、図示されていないが、各PLA158x及び158yは、以下に述べる機能を達成するように付加的な入力に接続されることに注意されたい。
【0056】
図9の要素の動作は、図7のタイミング図について最も良く説明される。まず始めに、各命令レジスタ21x及び21yは、2つの逐次パイプライン処理される命令x1 及びx2 と、y1 及びy2 とを各々記憶すると仮定する。従って、図7に示すように、クロックサイクル150のID2段のφ1中に、マイクロシーケンサ146xは制御信号を受け取り、そして次のマイクロアドレスμsx1 を出力する。更に、クロックサイクル150のID2段のφ2中に、マイクロシーケンサ146yは制御信号を受け取り、そして次のマイクロアドレスμsy1 を出力する。μsx1 及びμsy1 が出力されると、これらはマイクロROM回路148へ送られ、上記のようにμrx1 及びμry1 を発生する。
【0057】
しかしながら、クロックサイクル150に生じるID2段に戻ると、各PLA158x及び158yは、各命令のOPコードをデコードして、現在命令が単一クロック命令であるかどうか判断する。好ましい実施例では、PLAは、単一クロック命令を構成するOPコードビットのいかなる考えられるパターンも検出するようにプログラムされる。この検出は、OPコードビットの一部又は全部に基づいている。PLAが単一クロック命令を検出した場合には、PLAは、その各々のマイクロシーケンサを制御して、その直後に続くクロックサイクル中に次のマイクロアドレスμsを出力する。例えば、PLA158xは、命令x1 が単一クロック命令であると決定すると、マイクロシーケンサ146xを制御し、図7に示すように、次のクロックサイクル152の間に、次のマイクロアドレスμsx2 を出力させる。別の例として、PLA158yは、命令y1 が単一クロック命令であると決定すると、マイクロシーケンサ146yを制御し、図7に示すように、次のクロックサイクル152の間に、次のマイクロアドレスμsy2 を出力させる。
【0058】
各PLA158x及び158yは、選択されたOPコードビットに加えて情報を分析して、命令が単一クロック命令であるかどうかを決定する。例えば、X86アーキテクチャにおいては、mod r/mバイトの選択されたビットのような命令内の他のビットが分析される。更に、OPコードビットに加えて、命令以外のビットも分析できる。例えば、保護モードがセットされたかどうかを指示するビットを分析して、命令が単一クロック命令であるかどうかを決定できる。当業者であれば、他の例も明らかであり、これらは本発明の範囲内に包含されるものとする。
【0059】
以上のことから、図9の構成は、公知技術で考えられた次々のマイクロ命令間に浪費されるクロックサイクルを排除することが明らかである。このような進歩は、これら命令の各々に対する遅延が減少されるので、多数の単一クロック命令を用いるマイクロプロセッサに対して非常に有益である。最初に述べたように、命令スループットが主として重要であり、ここに示すように、本発明は、このようなスループットを向上させる。当業者であれば、本発明の範囲から必ずしも逸脱せずに、代替え物を選択できることが理解されよう。例えば、図7について述べた例は、X及びYの両パイプラインにおける単一クロック命令を示すものであったが、本発明は、2つのパイプラインの片方だけが単一クロック命令を実行するときにも(即ち、他方のパイプラインの命令によって要求される実行段の数に係わりなく)デュアルパイプラインアーキテクチャに適用できる。従って、本発明は、他の単一又は多パイプラインのアーキテクチャにも適用できる。更に別の例として、PLAはOPコードビットを監視するように示されたが、PLA以外の構造を用いて、単一クロック命令の存在を検出することもできる。更に別の例として、特定のアーキテクチャが与えられると、OPコードビット以外のビットでも、単一クロック命令を表す場合には、分析することができる。
【0060】
4.デュアルパイプラインアーキテクチャをサポートするための単一マイクロROM動作
図5ないし8に関連して上記したように、本発明のプロセッサアーキテクチャは、マイクロアドレスを受け取って図7のタイミング図に基づいてマイクロ命令を発生するマイクロROM回路148を備えている。本発明は、単一のマイクロROMアレーを使用しながらも、このようなタイミングを達成するために付加的な新規な装置及び方法を使用する。特に、図10は、このような装置を示しており、そして図11は、図10の装置に対する詳細なタイミングを示している。
【0061】
図10を参照すれば、マイクロROM回路148が、種々の機能を表すブロックを用いて詳細に示されている。これらブロックは、X及びYの両方のパイプラインに応対する単一のマイクロROMアレー167を備えている。このマイクロROMアレー167は、図10の種々のブロックによってアドレス及び出力されるマイクロ命令を記憶するための複数の行及び列を含む。以下に述べる2つの要素を除くと、他の要素は、マイクロROMアレー167に対して一般的に対称的であり、従って、以下の説明は、「x」という表示を用いた対応参照番号をもつx関連ブロックに集中して行う。y関連ブロックに関する要素は、「y」という表示を用いて同様に示されている。
【0062】
マイクロアドレスμsxは、φ1によりクロック(刻時)されるラッチ152xの入力に接続される。好ましい実施例では、μsxは、14ビットアドレスであり、これは、マイクロROMアレー167の行及び列を各々アドレスするための個別の成分に分割される。特に、マイクロ命令は、1行に16個の命令が記憶されるようにアレー167に記憶される。従って、行が選択されると、その行からの16個の列の1つが更に選択されて、その行に沿って記憶されている多数の中から特定のマイクロ命令が選択される。特に、μsxの10ビットがラッチ152から行デコードブロック154xの入力に接続される。同様に、μsxの4ビットがラッチ152から列デコードブロック156xの入力に接続される。これらの10ビットのグループは、μsxの最初の10ビット(即ち〔0:9〕)及びμsxの最後の4ビット(即ち〔10:13〕)として示されているが、行又は列のデコードに、μsxの非隣接ビットが選択されてもよいことを理解されたい。又、マイクロアドレスμsx及びμsyは、14ビットより多い又はそれより少ないもので構成してもよいことを理解されたい。
【0063】
行デコードブロック154xの出力は、φ2によってクロックされるラッチ158xの入力に接続される。更に、ラッチ158xの出力は、φ1によりクロックされる3状態ドライバ160xの入力に接続される。同様に、列デコードブロック156xの出力は、φ2によりクロックされるラッチ162xの入力に接続される。
【0064】
3状態ドライバ160xの出力は、164xyと示されたアドレスバスに接続され、これは、以下に述べるように、x又はyアドレスのいずれかがバスに通信されることを示唆する。実際に、3状態ドライバ160yの出力は、アドレスバス164xyにも接続されることに注意されたい。アドレスバス164xyは、行ドライバ166xyの入力に接続され、これは更にマイクロROMアレー167に接続される。図10における回路の対象性は、y行関連回路についても、x行関連回路に関して説明したものと同様の要素を形成する。従って、μsyのビット〔0:9〕は、行デコードブロック154yに接続され、その出力はラッチ158yの入力に接続される。ラッチ158yの出力は、3状態ドライバ160yの入力に接続され、その出力はアドレスバス164xyに接続される。しかしながら、y行回路のデータ路は、x行回路と同様であるが、ラッチ158y及びドライバ160yのクロック信号は、以下に述べるタイミング機能を果たすように切り換えられることに注意されたい。
【0065】
x列関連回路に戻ると、ラッチ162xの出力は、感知増幅器、ラッチ及びマルチプレクサブロック168xの制御入力に接続される。ブロック168xは、その名称の各機能を実行できることに注意されたい。特に、ブロック168xのデータ入力は、マイクロROMアレー167の出力に接続される。更に、ブロック168xは、ラッチ機能を果たすようにφ1によりクロックされる。最後に、ラッチ162xの出力は、ブロック168xの制御入力に接続されるので、ブロック168xは、以下に詳細に述べるように、マイクロROMアレー167により出力された1行のデータの選択的部分(即ち、特定の列)しかラッチしない。ブロック168xの出力は、φ1によりクロックされるフリップ−フロップ170xの入力に接続される。このフリップ−フロップ170xの出力は、マイクロROMアレー167により発生されたxマイクロ命令へのアクセスを要求するライン、バス又はアーキテクチャへ接続される。
【0066】
図10の回路対象性は、y列関連回路として同様の要素を形成する。従って、μsyのビット〔10:13〕は、列デコードブロック156yに接続され、該ブロックは更にラッチ162yの入力に接続される。このラッチ162yの出力は、感知増幅器、ラッチ及びマルチプレクサブロック168yの制御入力に接続される。それ故、この場合も、y列データ路は、一般に、x行データ路と同じであるが、以下に述べるタイミングを得るためにクロック信号は反転される。しかしながら、y行データ路は、1つの点で若干異なり、即ちマルチプレクサブロック168yの出力がラッチ172yの入力に接続されることに注意されたい。これは、ラッチではなくてフリップ−フロップに接続されたマルチプレクサブロック168xの出力とは対照的である。この相違も、以下に述べるタイミング機能を受け入れる。更に、ラッチ172yの出力は、マイクロROMアレー167により発生されたyマイクロ命令へのアクセスを要求するライン、バス又はアーキテクチャへ接続される。
【0067】
図7に示すように、本発明の好ましいアーキテクチャの1つの特徴は、マイクロROM回路148の2つのアクセスを同じクロックサイクル150内であるが個別の位相φ1及びφ2に含むことである。更に、単一クロックサイクルにおいてマイクロROM回路148へμrx及びμryを与えることにより、μrxがμsx後の1つのクロックサイクルの終わりまでに完全に使用でき、そして同様に、μryがμsy後の1つのクロックサイクルの終わりまでに完全に使用できるようになる。図10のブロックは、このような動作を許し、図11の詳細なタイミング図によって最も良く理解されよう。
【0068】
図11は、図6に示したものと同様に、クロックサイクル150ないし154の間のマイクロROMアレー167のx及びyの両方のアクセスのタイミングを詳細に示す図である。明瞭化のために、Xパイプラインに関連した動作(即ち、xマイクロアドレス及びxマイクロ命令)を、図の対角線流の最も左の部分に沿って示して最初に説明する。同様に、Yパイプラインに関連した動作(即ち、yマイクロアドレス及びyマイクロ命令)を、図の最も右の部分に沿って示して第2に説明する。
【0069】
図11の最も左の部分を参照すれば、μsx1 は、クロックサイクル150のφ1の終わりまでにラッチ152xによってラッチされる。従って、μsx1 の適当なビットが行及び列デコードブロック154x及び156xに各々与えられる。これらデコードブロックの各々は、この技術で良く知られた技術に基づいてビットをデコードし、μsx1 によりアドレスされるマイクロROMアレー167内の対応する行及び列を識別する。従って、マイクロアドレスのデコードがクロックサイクル150のφ2の間に生じ、それにより生じる行及び列のデコードされた信号が各々ラッチ158x及び162xによりクロックサイクル150のφ2の終わりにラッチされる。ラッチ162xにより出力されるデコードされた列信号は、マルチプレクサブロック168xの制御入力に直ちに接続される。
【0070】
次いで、その直後にクロックサイクル152のφ1の立上り遷移が続いて、3状態ドライバ160xは、ラッチ158xにラッチされたデコードされた行の値でアドレスバス164xyを駆動する。この値は、ドライバ166xyによって受け取られ、該ドライバは、この技術で良く知られた原理により、マイクロROMアレー167の選択された行へ充分な駆動信号を与える。従って、クロックサイクル152のφ1中に、マイクロROMアレー167による駆動及び応答が、アドレスされた行の適当な信号を発生し作用させる。クロックサイクル152のφ1の立下り縁で、マルチプレクサ168xは、マイクロROMアレー167により出力された信号の行の選択されたビットをラッチする。特に、幾つかのビット(即ち、所望のマイクロ命令を記憶する列)が、ラッチ162xから受け取ったデコードされた列アドレスに応答して選択されて、マルチプレクサ168xの出力にラッチされる。この事象も、図6に示したクロックサイクル152中のφ1の終わりに対応することに注意されたい。
【0071】
クロックサイクル152のφ2の間に、フリップ−フロップ170xは、その入力をサンプリングし、そしてφ2の立下り縁において、フリップ−フロップ170xは、そのサンプリングされた入力を出力する。従って、サイクル152のφ2の終わりに、Xパイプラインのマイクロ命令μrxが、上記AC2段の動作のためにプロセッサの他部分に使用できるようになる。又、フリップ−フロップ170xは、マイクロROMアレー167又はマルチプレクサ168xの出力に生じる潜在的な変化から現在マイクロ命令を分離するために含まれていることに注意されたい。換言すれば、クロックサイクル152のφ2の立下り縁の後に、マイクロROMアレー167又はマルチプレクサ168xのいずれの出力の変化も、次のサイクル154の位相φ1の間にフリップ−フロップ170xの出力に影響することはない。従って、このような変化が、現在μrxマイクロ命令を検査しているプロセッサの要素に影響することはない。
【0072】
xマイクロアドレス及びxマイクロ命令発生方法の動作について以上に説明したが、図11の最も右の部分を参照し、yマイクロアドレス及びyマイクロ命令を発生する動作に対する同時動作を説明する。まず、μsy1 がクロックサイクル150のφ2の終わりまでにラッチ152yによってラッチされる。従って、μsy1 の適当なビットが各々行及び列デコードブロック154y及び156yに与えられる。xビットと同様ではあるが1位相の後に、yビットがクロックサイクル150のφ2の間にデコードされて、μsy1 によりアドレスされたマイクロROMアレー167内の対応する行及び列を識別する。更に、それにより得られる行及び列のデコードされた信号は、各々ラッチ158y及び162yによりクロックサイクル152のφ1の終わりまでにラッチされる。
【0073】
次いで、その直後にクロックサイクル152のφ2の立上り遷移が続いて、3状態ドライバ160yは、ラッチ158yにラッチされたデコードされた行の値でアドレスバス164xyを駆動する。3状態ドライバ160xは、この時間中には高インピーダンスモードにあり、従って、yアドレスのみがアドレスバス164xyに通信されることに注意されたい。この場合も、この値は、ドライバ166xyによって受け取られ、該ドライバは、マイクロROMアレー167の選択された行を駆動する。従って、クロックサイクル152のφ2中に、マイクロROMアレー167による駆動及び応答が、アドレスされた行の適当な信号を発生し出力する。クロックサイクル152のφ2の立下り縁で、マルチプレクサ168yは、マイクロROMアレー167により出力された信号の行の選択されたビット(即ち、列)をラッチする。この場合に、所望のマイクロ命令を表すビットは、ラッチ162yから受け取ったデコードされた列アドレスに応答して選択され、マルチプレクサ168yの出力にラッチされる。この事象も、図6に示したクロックサイクル152中のφ2の終わりに対応することに注意されたい。
【0074】
クロックサイクル154のφ1の間に、ラッチ172yは透過的となってその入力の信号がその出力に得られるようになる。従って、クロックサイクル154のφ1の立上り縁に、プロセッサの他部分は、Yパイプラインのマイクロ命令μryにアクセスする。ラッチ172yは、フリップ−フロップ170xと同様に、マイクロROMアレー167又はマルチプレクサ168yの出力に生じる潜在的変化から現在マイクロ命令を分離するために設けられている。従って、サイクル154のφ1の終わりに、マイクロROMアレー167又はマルチプレクサ168yのいずれの出力の変化も、サイクル154の次の位相φ2の間にラッチ172yの出力に影響することはない。従って、このような変化が、現在のμryマイクロ命令を検査しているプロセッサの要素に影響を及ぼすことはない。
【0075】
以上のことから、図10に示された機能的ブロックは、図11に示す好ましいタイミングを許すことが明らかであろう。従って、個別の位相を用いると、単一のマイクロROMアレー167が単一クロックサイクル中に2回アクセスされる一方、そのアクセスの1つの全クロックサイクル内の各アクセスに対応するマイクロ命令を発生する。従って、独立したX及びYパイプラインがスループットを犠牲にすることなく同じ信号アレーを共有することができる。当業者であれば、ここに述べる本発明の機能及び構造から必ずしも逸脱せずに代替え物を選択できることが理解されよう。例えば、「クロックサイクル」と考えられるものにおいて3つ以上の位相が生じるようにクロックの巾を調整できる一方、多数のパイプラインが同じマイクロROMアレーを共有する能力を維持できる。この例は、特許請求の範囲によって限定された本発明の範囲から逸脱するものでないことが当業者に明らかであろう。
【0076】
5.条件依存命令の実行促進
図5に関連して上記したように、好ましい実施例は、マイクロシーケンサ回路146を備え、これは、精巧なマルチプレクサとして動作して、その入力の種々のマイクロアドレス間で選択を行い、そしてマイクロROM回路148をアドレスするための選択されたマイクロアドレスを出力する。マイクロシーケンサ回路146に関連して、本発明は、更に、条件依存命令の実行を促進するための装置及び方法を備えている。好ましい実施例において、このような条件依存命令の一例は、流れ変更(COF)命令である。このようなCOF命令は、この技術で知られており、例えば、X86アーキテクチャにおいては、FAR JUMP、FAR CALL及びIRETのような命令を含む。COF命令や、他の条件依存命令を促進する好ましい装置及び方法を、図12に関連して以下に説明する。
【0077】
図12は、図5の要素の一部分を示すもので、条件依存命令を促進するための装置が付加されている。この説明の残り部分については、好ましい実施例を、例えば、COF命令に適用するものとして説明する。しかしながら、COF命令は一例に過ぎず、特許請求の範囲に定められた本発明の範囲をこれに限定するものではない。それ故、図12の説明を続けると、この場合も、図示されたマイクロシーケンサ回路146は、マイクロアドレスを受け取り、そして種々の制御信号により、マイクロアドレスμsx及びμsyをマイクロROM回路148へ与える。しかしながら、特に、図5に加えて、COF命令に関連してマイクロアドレス及び制御を与えるための装置が示されている。より詳細には、図12は、COF命令デコード回路174を更に示している。このCOF命令デコード回路174は、好ましくは、記述子を受け取るための入力176a、モードビットを受け取るための入力176b、及び「ヒストリビット」を受け取るための入力176cを含む種々のデータ入力を備えている。ヒストリビットは、既に発行された命令から記憶された選択されたビット、及び/又は実行されている現在命令に対応する既に実行されたマイクロ命令からのビットを含む。COF命令デコード回路は、更に、各x及びy命令に対応する制御信号を受け取るための制御入力178x及び178yも備えている。以下で容易に明らかとなる目的のために、これらの制御信号は、各々、xマルチウェイ及びyマルチウェイ制御信号と称する。
【0078】
COF命令デコード回路は、更に、出力180xyを含み、これは、各x及びy出力180x及び180yに分割されて示されている。出力180xは、アドレスレジスタ182xの下位部分への二次アドレス(SECONDARY ADDRESS)又はマイクロシーケンサ146xを制御する終了(DONE)信号を与えるように接続される。同様に、出力180yは、アドレスレジスタ182yの下位部分への二次アドレス(SECONDARY ADDRESS)又はマイクロシーケンサ146yを制御する終了(DONE)信号を与えるように接続される。アドレスレジスタ182xの上位部分は、マイクロROM回路148のx出力に接続され、従って、xマイクロ命令μrxの一部分を受け取ることができる。以下に詳細に述べるように、この接続は、μrxがアドレスレジスタ182xの上位部分にベースアドレス(BASE ADDRESS)を与えることができるようにする。同様に、アドレスレジスタ182yの上位部分は、マイクロROM回路148のy出力に接続され、従って、yマイクロ命令μryの一部分を受け取ることができる。従って、以下に詳細に述べるように、この接続は、μryがアドレスレジスタ182yの上位部分にベースアドレス(BASE ADDRESS)を与えることができるようにする。
【0079】
図12の装置の動作へと進む前に、COF命令又は他の形式の条件依存命令を取り扱うための少なくとも1つの公知技術を説明するのが有益であろう。この説明は、テーブル1のマイクロ命令を用いて行うが、これらのマイクロ命令は、公知技術の理解を容易にするために一例として与えられたものであることを理解されたい。公知技術においては、COF命令は、マイクロROM内の第1マイクロ命令をアドレスすることによりその実行段を開始する。COF命令については、その第1の又はその後のマイクロ命令の後に、一連の逐次の条件マイクロ命令JUMP(CJUMP)に典型的に遭遇し、これらCJUMPの各々は種々の条件をテストする。従って、テーブル1を参照し、マイクロROMのアドレス1に位置した4つの次々のマイクロ命令をアドレスすることによりCOF命令が開始される場合を考える。
Figure 0003736866
公知技術では、条件#1を満たす場合、マイクロROMは、アドレス10を出力し、これは、COF命令の実行を続けるためのそれ自体の中の次の(又は「行き先」)マイクロ命令アドレスである。プロセスの流れは、次いで、位置10のマイクロ命令へジャンプすることによってシーケンスし、COF命令の機能が完了するまで続く。しかしながら、条件#1を満足しない場合には、カウンタを使用して、そのとき実行しているマイクロ命令を識別したマイクロアドレスの一部分が増加される。従って、増加された値がアドレス2を識別し、シーケンスはそのアドレスにおけるマイクロ命令をアドレスする。この場合も、次々のマイクロ命令が別の条件、即ち条件#2をテストする。このプロセスは、条件を満たすか、又は次々の全ての条件をテストしたが全く満足しないかのいずれかまで繰り返される。条件が満たされない場合は、マイクロROMは、終了(DONE)信号を発生して、COF命令がその実行サイクルを完了したことを指示し、そして次の命令に対するマイクロROMへの命令エントリ点をアクセスすることができる。上記の例は、その概念を容易に理解するためにのみ逐次番号を使用したが、条件マイクロ命令は必ずしも整数増加形態でアドレスされるものではないことが意図される。
【0080】
テーブル1及びそれに対応する説明から、当業者であれば、実行されているCOF命令(又は他の条件依存命令)に対応する条件が満たされるまでに多数のCJUMPが必要であることが容易に明らかであろう。典型的に、条件の各テスト及びテストされるべき次の条件の発生には少なくとも1つのクロックサイクルを費やす。従って、所与のCOF命令に対し多数の条件が満たされない場合には、そのCOF命令を実行するのに多数のクロックサイクルが費やされる。しかしながら、本発明の好ましい実施例では、以下に述べるように、このような条件テストは単一のクロックサイクルに減少され、潜在的なクロックサイクルの数を減少し、ひいては、全処理速度を向上するという明確な利点がもたらされる。
【0081】
公知例について上記したが、図12の装置の動作を説明する。COF(又は他の条件依存)命令が命令デコーダ(例えば、図5参照)により受け取られると、マイクロROM回路148から制御信号を発生することによりその実行段が開始される。説明上、この信号は、「マルチウェイ」と識別され、これは、次に続くクロックサイクルに多数の異なる行き先(即ち、ウェイ(経路))へ流れを向けられることを指示するものである。従って、XパイプラインにおいてCOF命令が実行される場合には、マイクロROM回路148により、xマルチウェイ制御信号がxマイクロ命令の一部分として出力される。このxマルチウェイ制御信号は、以下に述べるように、COF命令デコード回路174を制御する。又、xマイクロ命令は、アドレスレジスタ182xの上位部分へロードされるBASE
ADDRESS(ベースアドレス)も同時に含んでいる。
【0082】
COF命令デコード回路174は、好ましくは、その入力176a、176b及び176cにおける好ましい情報を分析して、これら入力に応答してSECONDARY ADDRESS(二次アドレス)を決定する組み合わせロジックを備えている。好ましい実施例では、この二次アドレスは、4ビット信号であり、従って、16(即ち、24 =16)までの特定のアドレスを識別することができる。更に、二次アドレスは、マルチウェイ制御信号を発生する前に入力情報に基づいて計算されるのが好ましい。その後、上記のxマルチウェイ制御信号の例の場合と同様に、マルチウェイ制御信号の発生により、既に決定された二次アドレスがCOF命令デコード回路174からアドレスレジスタ182xの下位部分へロードされる。
【0083】
この点において、アドレスレジスタ182xの下位及び上位の両部分には、アドレス部分がロードされる。これらの部分は、次いで、好ましくは連鎖によって組み合わされて、単一のDESTINATION ADDRESS(行き先アドレス)を形成する。この行き先アドレスは、COF命令の実行を進めるためのマイクロROM回路148内の位置である。従って、行き先アドレスはマイクロシーケンサ146xへ接続され、該マイクロシーケンサは、これを選択してマイクロROM回路148へ接続し、これにより、COF命令に対する実行段の次のマイクロ命令をアドレスして実行する。
【0084】
Xパイプラインに関連して説明した動作は、Yパイプラインにも等しく適用されることに注意されたい。従って、デコード回路174が二次アドレスをアドレスレジスタ182xの下位部分に出力するのと同時に、その同じ二次アドレスがアドレスレジスタ182yの下位部分に出力される。Yパイプラインの場合は、異なるベースアドレスがマイクロROM回路148から与えられ、この異なるベースアドレスは、Xパイプラインについて説明したのと同様にそして同じ目的で二次アドレスと組み合わされる。又、同様に、以下で詳細に述べる終了信号も、デコード回路174から両マイクロシーケンサ146x及び146yへ同時に結合される。
【0085】
それ故、以上のことから、図12の実施例は、COF又は他の条件依存命令を実行する前に、多数のCJUMP、ひいては、クロックサイクルを使い果たす必要をなくすものであることが理解されよう。特に、好ましい実施例は、単一のクロックサイクルしか必要とせず、これに対し、公知技術は、COF命令を実行するための行き先アドレスを決定するのに多数のクロックサイクルを必要とした。それ故、当然ながら、特に多数のCOF命令を伴うアプリケーションについてはスループットが向上される。
【0086】
上記で簡単に述べたように、COF命令デコード回路174は、上記のようにアドレスレジスタ182xに二次アドレスを与えるのではなくて、マイクロシーケンサ146xを制御する終了信号を発生する。この同じ機能がy要素にも適用され、従って、COF命令デコード回路174は、アドレスレジスタ182yに二次アドレスを与えるのではなく、マイクロシーケンサ146yを制御する終了信号を発生する。この特徴も、公知技術に勝る効果を奏する。
【0087】
ここでも、本発明の終了信号の特徴を説明する前に、COF又は他の条件依存命令の実行の完了を指示する公知技術を説明するのが有益であろう。上記説明から、公知の方法では、マイクロROMから終了信号が発生されたことを想起されたい。典型的に、これは、シーケンスにおける他の全ての条件がテストされた後か、又は別のルーチンがそのステップを実行しそしてマイクロROMをアドレスした後にのみ生じ、マイクロROMが終了信号を発生する。又、公知技術では、COF命令が完了したという1クロック前の通知を必要とし、従って、COF命令の実行が終了したという指示を与えるのに2つのクロックサイクルが費やされる。これに対して、本発明は、COF命令の完了を指示するためのクロックサイクルの数を減少する。従って、次々の命令がパイプラインを経て進められ、これにより、スループットが向上される。
【0088】
終了信号の発生についての本発明による特定の実施は、次の通りである。この場合も、COF命令デコード回路174は、マイクロROM回路148をアクセスするように独立して動作する。更に、本発明の実施例では、COF命令デコード回路174に種々の入力データが得られるので、COF命令がその実行段を完了したときが決定される。従って、COF命令デコード回路174によって二次アドレスではなくてマルチウェイ制御信号が受け取られたときには、その入力の組み合わせがCOF命令の実行完了を指示する場合に、終了信号が出力される。好ましい実施例では、終了信号は、二次アドレスについて上記したデコード回路174からの同じ4ビット出力においてデコードされる。この構成では、独立した出力をもつことなく、同じ導線を二重に使うことができる。しかしながら、当業者であれば、終了信号を通信するためにそれより多いビット又は少ないビットの個別の出力を設けられることが容易に明らかであろう。
【0089】
COF命令デコード回路174からの終了信号は、マイクロシーケンサ回路146に接続され、そして該回路が選択する次のマイクロアドレスがCOF命令に続く命令へのエントリ点マイクロアドレスとなるようにこのマイクロシーケンサ回路146を制御する。従って、本発明は、マイクロROMがこのような状態を指示することを必要とせずにCOF命令の完了を直ちに指示することが当業者に明らかであろう。従って、上記した公知技術の実施例よりも1つ以上のクロックサイクルが節約される。
【0090】
以上、本発明を詳細に説明したが、多数の変更や、修正や、代替えがなされ得ることに注意されたい。例えば、特定のマイクロプロセッサアーキテクチャ、命令セット、及び種々の条件を満足することに基づきマイクロROM回路148内の種々の異なる位置へジャンプする必要性が理解されると、二次アドレス及び終了信号を計算するための種々の技術及びアーキテクチャが当業者に容易に明らかであろう。実際に、デコード回路174への入力データは、COF命令セットの変更及び/又はそれにより生じる所望のアドレスを、これら命令及びこれら命令によりテストされる条件に基づいて受け入れるように変更できる。終了信号の形成についても、同じことが当てはまる。更に、上記の種々の例で述べたように、本発明は、COF命令ではなく、条件依存命令へと拡張することができる。これら入力又は命令の導出方法、及び本発明に対する他の変更や置き換えは、本発明の範囲に何ら影響を及ぼすものではない。
【0091】
6.結論
以上、好ましい実施例を開示したが、本発明の範囲から逸脱せずに種々の変更がなされ得ることが当業者に明らかであろう。このような変更の多数の例については既に述べた。別の例としては、ここではブロック図で示したが、このようなブロック図は、本発明の方法を表すもので、必ずしもその範囲を限定するものではなく、従って、本発明の範囲から逸脱せずに、種々の機能をマイクロプロセッサの他の定められた領域へ移動することができる。更に別の例として、アーキテクチャ及びタイミングは、デュアルパイプライン構成に関するものであったが、本発明の種々の特徴は、単一パイプライン又は他の多パイプラインプロセッサアーキテクチャにも適用できる。本発明は、特許請求の範囲内に包含されるいかなる変更又は別の実施例も網羅するものとする。
【図面の簡単な説明】
【図1】マイクロプロセッサ全体のブロック図である。
【図2】命令パイプライン段の一般化されたブロック図である。
【図3】マイクロプロセッサを用いたプロセッサシステムのブロック図である。
【図4】パイプライン段を通る命令の流れを示すタイミング図である。
【図5】マイクロプロセッサのマイクロシーケンサ及びマイクロROMを含む簡単なブロック図である。
【図6】マイクロアドレスの発生、及びそれによりマイクロROMによって出力されるマイクロ命令を示すタイミング図である。
【図7】マイクロ命令を発生しそして次に続くマイクロアドレスを得るための本発明の1つの特徴の好ましいタイミングを示すタイミング図である。
【図8】マイクロ命令を発生してから次に続くマイクロアドレスを得るまでに公知技術で浪費されるクロックサイクルを示したタイミング図である。
【図9】図5のブロック図に、各命令レジスタ及びその各々のプログラマブル論理アレーを含ませた詳細なブロック図である。
【図10】マイクロROM回路に対する好ましい装置を示す図である。
【図11】マイクロROM回路のマイクロROMアレーのx及びyアクセスを示すタイミング図である。
【図12】図5の要素の一部分を示す図で、流れ変更(COF)又は他の条件依存命令を促進するための装置を付加した図である。
【図13】マイクロプロセッサのマイクロシーケンサ及びデコード回路を含む簡単なブロック図である。
【符号の説明】
10 マイクロプロセッサ
20 中央処理ユニット(CPU)コア
25 ACコントロールユニット
26 マイクロコントロールユニット
28 パイプコントロールユニット
29 書き込みバッファ
30 プリフェッチバッファ
35 プリフェッチャ
40 分岐処理ユニット(BPU)
50 アドレス変換ユニット(ATU)
60 単一化キャッシュ
62 タグRAM
65 命令ラインキャッシュ
146 マイクロシーケンサ回路
148 マイクロROM回路
158 プログラマブル論理アレー

Claims (5)

  1. プロセッサであって、
    第1の命令を記憶するための第1の記憶回路、
    第1のマイクロアドレスによってアドレス可能な、前記第1のマイクロアドレスに応答して第1のマイクロ命令を出力する単一のマイクロROM、
    前記第1のマイクロアドレスを前記単一のマイクロROMへ与えるために接続された第1のシーケンス回路、
    前記単一のマイクロROMが前記第1のマイクロ命令を出力する前に、前記第1の記憶回路に記憶された前記第1の命令が単一のクロック命令を有しているかを検出するための、及び、前記第1の記憶回路に記憶された前記第1の命令が単一のクロック命令を有するか否かを前記第1のシーケンス回路へ示すための、前記第1の記憶回路に接続された第1のデコード回路、
    第2の命令を記憶するための第2の記憶回路、
    第2のマイクロアドレスを前記単一のマイクロROMへ与えるために接続された第2のシーケンス回路、及び
    前記単一のマイクロROMが第2のマイクロ命令を出力する前に、前記第2の記憶回路に記憶された前記第2の命令が単一のクロック命令を有しているかを検出するための、及び、もし前記第2の命令が単一のクロック命令ならば、次のクロックサイクル中に、次のマイクロアドレスを出力するためにコマンド信号を発することによって、前記第2の記憶回路に記憶された前記第2の命令が単一のクロック命令を有するか否かの検出に応答して前記第2のシーケンス回路を制御するための、前記第2記憶回路に接続された第2のデコード回路、
    を有することを特徴とするプロセッサ。
  2. プロセッサであって、
    デコードされるべき命令を記憶するためのデコーダ、
    マイクロアドレスに応答して、前記デコーダに記憶された命令に関連したマイクロ命令を出力するメモリ、
    マイクロアドレスを前記メモリに与えるために接続されたシーケンス回路、および
    前記メモリが第1の命令に関連するマイクロ命令を出力する前に、前記第1の命令が単一のクロック命令を有するか否かを検出するために動作可能な、前記デコーダに接続された検出器、
    を有し、
    前記検出器は、単一のクロック命令の検出に応答して、制御信号を前記シーケンス回路に与え、前記シーケンス回路が前記メモリと無関係に、第2の命令と関連する他のマイクロアドレスを発するようにすることを特徴とするプロセッサ。
  3. 複数の実行ステージにわたって命令を実行するために動作可能なプロセッサであって、
    マイクロ命令を記憶するためのメモリ、
    命令を受け取るための回路、
    制御信号とベースアドレスを有する第1のマイクロ命令を前記メモリから発するための回路、
    前記第1のマイクロ命令の制御信号を発する前に、前記メモリの外部にあり、前記メモリと無関係な複数の所定のデータを評価することによって、二次のアドレスを定めるための回路、および
    前記制御信号のみに応答して行き先アドレスを形成するために、前記ベースアドレスと既に定められた二次のアドレスを結合するための回路、
    を有し、
    前記行き先アドレスは、受け取った命令に対して続くステージを実行するために、前記メモリにある第2のマイクロ命令を識別することを特徴とするプロセッサ。
  4. 前記行き先アドレスは上部分と下部分を有し、前記結合するための回路は前記ベースアドレスと前記二次のアドレスを連結するための回路を有し、前記ベースアドレスは行き先アドレスの前記上部分を有し、且つ、前記二次のアドレスは前記行き先アドレスの前記下部分を有することを特徴とする請求項3に記載のプロセッサ。
  5. 複数の実行ステージにわたって命令を実行するために動作可能なプロセッサであって、
    マイクロ命令を記憶するためのメモリ、
    命令を受け取るための回路、
    制御信号を有する第1のマイクロ命令を前記メモリから発するための回路、及び
    行き先アドレスを形成するための回路、
    を有し、
    前記行き先アドレスは、前記制御信号に応答してのみ発せられ、且つ前記第1のマイクロ命令の制御信号を発する前に、前記メモリの外部にあり、前記メモリと無関係な複数の所定のデータを評価することによって形成されるアドレス要素を有し、
    前記行き先アドレスは、受け取った命令に対して続くステージを実行するために、前記メモリにある第2のマイクロ命令を識別し、
    前記アドレス要素は、第1のアドレス要素を有し、且つ
    前記形成するための回路は、更に、前記第1のマイクロ命令の一部から前記行き先アドレスの第2のアドレス部分を形成するための回路と、前記行き先アドレスを形成するために、前記第1のアドアレス部分及び前記第2のアドレス部分を結合するための回路、
    を有することを特徴とするプロセッサ。
JP25198894A 1993-10-18 1994-10-18 スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット Expired - Lifetime JP3736866B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US13832093A 1993-10-18 1993-10-18
US08/138,660 US5794026A (en) 1993-10-18 1993-10-18 Microprocessor having expedited execution of condition dependent instructions
US08/138,855 US5644741A (en) 1993-10-18 1993-10-18 Processor with single clock decode architecture employing single microROM
US08/138660 1993-10-18
US08/138855 1993-10-18
US08/138320 1993-10-18

Publications (2)

Publication Number Publication Date
JPH07152560A JPH07152560A (ja) 1995-06-16
JP3736866B2 true JP3736866B2 (ja) 2006-01-18

Family

ID=27385166

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25198894A Expired - Lifetime JP3736866B2 (ja) 1993-10-18 1994-10-18 スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット

Country Status (4)

Country Link
US (1) US5771365A (ja)
EP (1) EP0649083B1 (ja)
JP (1) JP3736866B2 (ja)
DE (1) DE69425310T2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0649085B1 (en) 1993-10-18 1998-03-04 Cyrix Corporation Microprocessor pipe control and register translation
KR100384875B1 (ko) * 1995-12-16 2003-08-21 주식회사 하이닉스반도체 파이프라인구조를갖는마이크로프로세서에서의언세이프처리마이크로시퀀서
WO2000004484A2 (en) * 1998-07-17 2000-01-27 Intergraph Corporation Wide instruction word graphics processor
US6957322B1 (en) * 2002-07-25 2005-10-18 Advanced Micro Devices, Inc. Efficient microcode entry access from sequentially addressed portion via non-sequentially addressed portion
US6851033B2 (en) * 2002-10-01 2005-02-01 Arm Limited Memory access prediction in a data processing apparatus
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
CA2545252A1 (en) * 2003-11-06 2005-05-26 University Of Nevada, Reno Improved methods for detecting and measuring specific nucleic acid sequences
US7743233B2 (en) * 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
CN115080116B (zh) * 2022-07-25 2022-11-29 广州智慧城市发展研究院 兼容多种存储器接口的微控制器、方法、芯片和显示器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2112973B (en) * 1978-11-08 1983-12-21 Data General Corp High-speed digital computer system
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
US4984151A (en) * 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
US4685088A (en) * 1985-04-15 1987-08-04 International Business Machines Corporation High performance memory system utilizing pipelining techniques
DE3650473T2 (de) * 1985-11-08 1996-08-14 Nippon Electric Co Mikroprogrammsteuereinheit
JPH0743648B2 (ja) * 1985-11-15 1995-05-15 株式会社日立製作所 情報処理装置
EP0279953B1 (en) * 1987-02-24 1994-11-02 Texas Instruments Incorporated Computer system having mixed macrocode and microcode instruction execution
US5032983A (en) * 1987-04-10 1991-07-16 Tandem Computers Incorporated Entry point mapping and skipping method and apparatus
JPH01271838A (ja) * 1988-04-22 1989-10-30 Fujitsu Ltd マイクロプログラム分岐方法
US5088035A (en) * 1988-12-09 1992-02-11 Commodore Business Machines, Inc. System for accelerating execution of program instructions by a microprocessor
JP3063006B2 (ja) * 1989-02-08 2000-07-12 インテル・コーポレーション マイクロプログラムされるコンピュータ装置及びマイクロコードシーケンスメモリをアドレツシングする方法
GB2230116B (en) * 1989-04-07 1993-02-17 Intel Corp An improvement for pipelined decoding of instructions in a pipelined processor

Also Published As

Publication number Publication date
EP0649083B1 (en) 2000-07-19
US5771365A (en) 1998-06-23
DE69425310D1 (de) 2000-08-24
EP0649083A3 (ja) 1995-05-10
EP0649083A2 (en) 1995-04-19
JPH07152560A (ja) 1995-06-16
DE69425310T2 (de) 2001-06-13

Similar Documents

Publication Publication Date Title
US5630149A (en) Pipelined processor with register renaming hardware to accommodate multiple size registers
US6138230A (en) Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
JP3678444B2 (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US5606676A (en) Branch prediction and resolution apparatus for a superscalar computer processor
US5584009A (en) System and method of retiring store data from a write buffer
US8938605B2 (en) Instruction cracking based on machine state
US6279105B1 (en) Pipelined two-cycle branch target address cache
US6247122B1 (en) Method and apparatus for performing branch prediction combining static and dynamic branch predictors
US5596740A (en) Interleaved memory conflict resolution with accesses of variable bank widths and partial return of non-conflicting banks
US5838940A (en) Method and apparatus for rotating active instructions in a parallel data processor
US20110035569A1 (en) Microprocessor with alu integrated into load unit
JPH03116233A (ja) データプロセッサの命令処理システム
WO1985000453A1 (en) Data processing system
WO1996012228A1 (en) Redundant mapping tables
US5596735A (en) Circuit and method for addressing segment descriptor tables
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
US5740398A (en) Program order sequencing of data in a microprocessor with write buffer
US5784589A (en) Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline
EP0649084A1 (en) Microprocessor branch processing
JP3736866B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット
EP0649086B1 (en) Microprocessor with speculative execution
US5961575A (en) Microprocessor having combined shift and rotate circuit
KR20010077997A (ko) 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법
US6115730A (en) Reloadable floating point unit

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040921

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20041221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050310

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050711

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050905

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050926

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051025

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20091104

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091104

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101104

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111104

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121104

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121104

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131104

Year of fee payment: 8

EXPY Cancellation because of completion of term