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

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

Info

Publication number
JPH07152560A
JPH07152560A JP6251988A JP25198894A JPH07152560A JP H07152560 A JPH07152560 A JP H07152560A JP 6251988 A JP6251988 A JP 6251988A JP 25198894 A JP25198894 A JP 25198894A JP H07152560 A JPH07152560 A JP H07152560A
Authority
JP
Japan
Prior art keywords
instruction
address
micro
memory
clock cycle
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.)
Granted
Application number
JP6251988A
Other languages
English (en)
Other versions
JP3736866B2 (ja
Inventor
Mark Bluhm
ブルーム マーク
Mark Warden Hervin
ダブリュー ハーヴィン マーク
Steven C Mcmahan
シー マクマハン スチーブン
Raul A Garibay Jr
エイ ガリベイ ジュニア ロール
K Eitrheim John
ケイ アイトリーム ジョン
S Mcmahon Ronald
エス マクマホン ロナルド
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.)
SAIRITSUKUSU CORP
Cyrix Corp
Original Assignee
SAIRITSUKUSU CORP
Cyrix 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
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 SAIRITSUKUSU CORP, Cyrix Corp filed Critical SAIRITSUKUSU CORP
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

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)

Abstract

(57)【要約】 【目的】 単一クロック命令に続く次のマイクロアドレ
スを得るまでのクロックサイクルの数を減少した改良さ
れたマイクロプロセッサを提供する。 【構成】 スーパースカラー、スーパーパイプライン式
マイクロプロセッサは、命令を記憶する記憶回路と、マ
イクロアドレスに応答してマイクロ命令を出力するよう
にマイクロアドレスによりアドレス可能なメモリ回路
と、このメモリ回路へマイクロアドレスを与えるように
接続されたシーケンシング回路と、上記記憶回路に接続
されたデコード回路であって、上記記憶回路に記憶され
た命令が単一クロック命令であるかどうかを、メモリ回
路がマイクロ命令を出力する前に検出し、そしてこの検
出を上記シーケンシング回路に指示するようなデコード
回路とを備えている。更に、マイクロプロセッサは、デ
ュアルパイプラインアーキテクチャに対して単一のマイ
クロROMがサポートされそして複数の実行段に対して
条件依存命令が実行されるという特徴を含む。

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)プリフェッチバッファ3
0;(c)プリフェッチャ35;(d)分岐処理ユニッ
ト(BPU)40;(e)アドレス変換ユニット(AT
U)50;及び(f)TAG RAM62を含む単一化
した16Kバイトのコード/データキャッシュ60。2
56バイトの命令ラインキャッシュ65は、単一化キャ
ッシュへの命令フェッチを減少するための一次命令キャ
ッシュを構成し、単一化キャッシュは、二次命令キャッ
シュとして働く。オンボード浮動小数点ユニット(FP
U)70は、CPUコア20によってこれに発せられた
浮動小数点命令を実行する。
【0018】マイクロプロセッサは、内部32ビットア
ドレス及び64ビットデータバスADS及びDATAを
各々使用している。単一化キャッシュ60及び命令ライ
ンキャッシュ65の32バイトラインサイズに対応する
256ビット(32バイト)プリフェッチバス(PF
B)は、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つの命令デコード段(ID
1、ID2)、2つのアドレス計算段(AC1、AC
2)、実行段(EX)、及びライトバック段(WB)を
有している。複合ID及びACパイプ段は、スーパーパ
イプライン式であることに注意されたい。
【0028】IF段は、CPUコア20に連続的なコー
ド流を与える。プリフェッチャ35は、(一次)命令ラ
インキャッシュ65或いは(二次)単一化キャッシュ6
0のいずれかからプリフェッチバッファ30へ16バイ
トの命令データをフェッチする。BPU40は、プリフ
ェットアドレスでアクセスされ、そして予想される流れ
の変更に対してプリフェッチャへターゲットアドレスを
供給し、プリフェッチャが1つのクロック内に新たなコ
ード流へシフトできるようにする。
【0029】デコード段ID1及びID2は、可変長さ
のX86命令セットをデコードする。命令デコーダ21
は、各クロックごとにプリフェッチバッファ30から1
6バイトの命令データを検索する。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つの3
2ビットリニア(3オペランド)アドレスを計算する
(比較的稀である4つのオペランドアドレスは、2つの
クロックを必要とする)。データ依存性もチェックされ
そしてレジスタ変換ユニット25a(レジスタスコアボ
ード及びレジスタ再ネーミングハードウェア)を用いて
分析され、32個の物理レジスタ24は、X86アーキ
テクチャで定められた8個の汎用のプログラマから見え
る論理レジスタをマップするのに使用される(EAX、
EBX、ECX、EDX、EDI、ESI、EBP、E
SP)。
【0032】ACユニットは、8個のアーキテクチャ
(論理)レジスタ(X86で定められたレジスタセット
を表す)を備えており、これらは、アドレス変換のため
のレジスタオペランドをアクセスする前にレジスタ変換
ユニットAC1のアクセスに必要な遅延を回避するよう
にACユニットによって使用される。アドレス変換を必
要とする命令については、AC1は、アーキテクチャレ
ジスタをアクセスする前にこれらアーキテクチャレジス
タの所要データが有効になる(リード・アフタ・ライト
の依存性がない)まで待機する。AC2段の間に、レジ
スタファイル24及び単一化キャッシュ60は、物理ア
ドレスでアクセスされ(キャッシュヒットの場合には、
デュアルポート式の単一化キャッシュのためのキャッシ
ュアクセス時間は、レジスタのアクセス時間と同じであ
り、レジスタセットを効果的に拡張する)、物理アドレ
スは、リニアアドレスであるか、或いはアドレス変換が
イネーブルされた場合には、ATU50によって発生さ
れた変換されたアドレスである。
【0033】変換されたアドレスは、メモリのページテ
ーブル及びチップ上のワークスペース制御レジスタから
の情報を用いてリニアアドレスからATU50によって
発生される。単一化キャッシュは、仮想インデックスさ
れると共に物理的にタグが付けられていて、アドレス変
換がイネーブルされたときには、変換されていないアド
レス(AC1の終わりに得られる)でセットの選択を行
うことができ、そして各セットに対し、ATU50から
の変換されたアドレス(AC2において初期に得られ
る)でタグの比較を行うことができる。セグメント化及
び/又はアドレス変換違反のチェックも、AC2で行わ
れる。
【0034】命令は、それらが例外を生じないと決定さ
れるまではプログラム順序に保たれる。ほとんどの命令
に対し、この決定は、AC2の間又はその前に行われ、
浮動小数点命令及びある排他的命令は、実行中に例外を
生じることがある。命令は、AC2からEXへ順次に通
され(又は浮動小数点命令の場合はFPU70へ)、E
Xにおいて依然として例外を生じることのある整数命令
は、排他的と示され、それ故、単独で両方の実行パイプ
へ発生されるので、しかるべき順序での例外の取り扱い
が確保される。
【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は、マイクロプロセッサ1
0と、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バスは、標準V
Lスロット97へインターフェイスし、そして両方向性
分離バッファ98を経て64ビットプロセッサデータバ
スの下位ダブルワード〔31:0〕へインターフェイス
する。
【0040】2.一般化されたパイプラインアーキテク
チャ 図4は、パイプライン当たり4命令の流れを示すもの
で、2パイプラインアーキテクチャに対するオーバーラ
ップした命令実行を示している。付加的なパイプライン
と、各パイプラインに対する付加的な段とを設けること
ができる。好ましい実施例において、マイクロプロセッ
サ10は、システムクロック信号124の倍数である内
部クロック122を使用している。図4において、内部
クロックはシステムクロックの周波数の2倍で動作する
ものとして示されている。第1内部クロックサイクル1
26の間に、ID1は、各命令X0及びY0に基づいて
動作する。内部クロックサイクル128の間に、命令X
0及びY0はID2段にあり(X0はID2xそしてY
0は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があり、AC
1段に命令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、A
C2及び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に戻ると、マイクロアドレスμsx
1 の直後に、即ち段ID2のφ1に続いて、μsx1
マイクロROM回路148へ送られる。セクション4で
詳細に説明するように、段ID2のφ2と、段AC1の
φ1の終りまでの間に、マイクロROM回路148内の
アレーがそれに対応するマイクロ命令μrx1 を発生し
て出力する。明瞭化のために、μrは、マイクロROM
回路148からの出力を示唆することに注意されたい。
更に、マイクロアドレスμsy1 の出力の直後に(段I
D2のφ2の後に)、μsy1 はマイクロROM回路1
48に送られる。又、以下のセクション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つの特徴は、単一クロック命令の直後にマイクロR
OM回路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及び21
y内で左に整列されて図示されているが、このような図
示は、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中に、マイクロシーケンサ1
46yは制御信号を受け取り、そして次のマイクロアド
レスμsy1 を出力する。μsx1 及びμsy1 が出力
されると、これらはマイクロROM回路148へ送ら
れ、上記のようにμrx1 及びμry1 を発生する。
【0057】しかしながら、クロックサイクル150に
生じるID2段に戻ると、各PLA158x及び158
yは、各命令のOPコードをデコードして、現在命令が
単一クロック命令であるかどうか判断する。好ましい実
施例では、PLAは、単一クロック命令を構成するOP
コードビットのいかなる考えられるパターンも検出する
ようにプログラムされる。この検出は、OPコードビッ
トの一部又は全部に基づいている。PLAが単一クロッ
ク命令を検出した場合には、PLAは、その各々のマイ
クロシーケンサを制御して、その直後に続くクロックサ
イクル中に次のマイクロアドレスμsを出力する。例え
ば、PLA158xは、命令x1 が単一クロック命令で
あると決定すると、マイクロシーケンサ146xを制御
し、図7に示すように、次のクロックサイクル152の
間に、次のマイクロアドレスμsx2 を出力させる。別
の例として、PLA158yは、命令y1 が単一クロッ
ク命令であると決定すると、マイクロシーケンサ146
yを制御し、図7に示すように、次のクロックサイクル
152の間に、次のマイクロアドレスμsy2 を出力さ
せる。
【0058】各PLA158x及び158yは、選択さ
れたOPコードビットに加えて情報を分析して、命令が
単一クロック命令であるかどうかを決定する。例えば、
X86アーキテクチャにおいては、mod r/mバイ
トの選択されたビットのような命令内の他のビットが分
析される。更に、OPコードビットに加えて、命令以外
のビットも分析できる。例えば、保護モードがセットさ
れたかどうかを指示するビットを分析して、命令が単一
クロック命令であるかどうかを決定できる。当業者であ
れば、他の例も明らかであり、これらは本発明の範囲内
に包含されるものとする。
【0059】以上のことから、図9の構成は、公知技術
で考えられた次々のマイクロ命令間に浪費されるクロッ
クサイクルを排除することが明らかである。このような
進歩は、これら命令の各々に対する遅延が減少されるの
で、多数の単一クロック命令を用いるマイクロプロセッ
サに対して非常に有益である。最初に述べたように、命
令スループットが主として重要であり、ここに示すよう
に、本発明は、このようなスループットを向上させる。
当業者であれば、本発明の範囲から必ずしも逸脱せず
に、代替え物を選択できることが理解されよう。例え
ば、図7について述べた例は、X及びYの両パイプライ
ンにおける単一クロック命令を示すものであったが、本
発明は、2つのパイプラインの片方だけが単一クロック
命令を実行するときにも(即ち、他方のパイプラインの
命令によって要求される実行段の数に係わりなく)デュ
アルパイプラインアーキテクチャに適用できる。従っ
て、本発明は、他の単一又は多パイプラインのアーキテ
クチャにも適用できる。更に別の例として、PLAはO
Pコードビットを監視するように示されたが、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の出力は、164
xyと示されたアドレスバスに接続され、これは、以下
に述べるように、x又はyアドレスのいずれかがバスに
通信されることを示唆する。実際に、3状態ドライバ1
60yの出力は、アドレスバス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の制御入力に接続されるので、ブロック1
68xは、以下に詳細に述べるように、マイクロROM
アレー167により出力された1行のデータの選択的部
分(即ち、特定の列)しかラッチしない。ブロック16
8xの出力は、φ1によりクロックされるフリップ−フ
ロップ170xの入力に接続される。このフリップ−フ
ロップ170xの出力は、マイクロROMアレー167
により発生されたxマイクロ命令へのアクセスを要求す
るライン、バス又はアーキテクチャへ接続される。
【0066】図10の回路対象性は、y列関連回路とし
て同様の要素を形成する。従って、μsyのビット〔1
0:13〕は、列デコードブロック156yに接続さ
れ、該ブロックは更にラッチ162yの入力に接続され
る。このラッチ162yの出力は、感知増幅器、ラッチ
及びマルチプレクサブロック168yの制御入力に接続
される。それ故、この場合も、y列データ路は、一般
に、x行データ路と同じであるが、以下に述べるタイミ
ングを得るためにクロック信号は反転される。しかしな
がら、y行データ路は、1つの点で若干異なり、即ちマ
ルチプレクサブロック168yの出力がラッチ172y
の入力に接続されることに注意されたい。これは、ラッ
チではなくてフリップ−フロップに接続されたマルチプ
レクサブロック168xの出力とは対照的である。この
相違も、以下に述べるタイミング機能を受け入れる。更
に、ラッチ172yの出力は、マイクロROMアレー1
67により発生されたyマイクロ命令へのアクセスを要
求するライン、バス又はアーキテクチャへ接続される。
【0067】図7に示すように、本発明の好ましいアー
キテクチャの1つの特徴は、マイクロROM回路148
の2つのアクセスを同じクロックサイクル150内であ
るが個別の位相φ1及びφ2に含むことである。更に、
単一クロックサイクルにおいてマイクロROM回路14
8へμrx及びμryを与えることにより、μrxがμ
sx後の1つのクロックサイクルの終わりまでに完全に
使用でき、そして同様に、μryがμsy後の1つのク
ロックサイクルの終わりまでに完全に使用できるように
なる。図10のブロックは、このような動作を許し、図
11の詳細なタイミング図によって最も良く理解されよ
う。
【0068】図11は、図6に示したものと同様に、ク
ロックサイクル150ないし154の間のマイクロRO
Mアレー167のx及びyの両方のアクセスのタイミン
グを詳細に示す図である。明瞭化のために、Xパイプラ
インに関連した動作(即ち、xマイクロアドレス及びx
マイクロ命令)を、図の対角線流の最も左の部分に沿っ
て示して最初に説明する。同様に、Yパイプラインに関
連した動作(即ち、yマイクロアドレス及びyマイクロ
命令)を、図の最も右の部分に沿って示して第2に説明
する。
【0069】図11の最も左の部分を参照すれば、μs
1 は、クロックサイクル150のφ1の終わりまでに
ラッチ152xによってラッチされる。従って、μsx
1 の適当なビットが行及び列デコードブロック154x
及び156xに各々与えられる。これらデコードブロッ
クの各々は、この技術で良く知られた技術に基づいてビ
ットをデコードし、μsx1 によりアドレスされるマイ
クロROMアレー167内の対応する行及び列を識別す
る。従って、マイクロアドレスのデコードがクロックサ
イクル150のφ2の間に生じ、それにより生じる行及
び列のデコードされた信号が各々ラッチ158x及び1
62xによりクロックサイクル150のφ2の終わりに
ラッチされる。ラッチ162xにより出力されるデコー
ドされた列信号は、マルチプレクサブロック168xの
制御入力に直ちに接続される。
【0070】次いで、その直後にクロックサイクル15
2のφ1の立上り遷移が続いて、3状態ドライバ160
xは、ラッチ158xにラッチされたデコードされた行
の値でアドレスバス164xyを駆動する。この値は、
ドライバ166xyによって受け取られ、該ドライバ
は、この技術で良く知られた原理により、マイクロRO
Mアレー167の選択された行へ充分な駆動信号を与え
る。従って、クロックサイクル152のφ1中に、マイ
クロROMアレー167による駆動及び応答が、アドレ
スされた行の適当な信号を発生し作用させる。クロック
サイクル152のφ1の立下り縁で、マルチプレクサ1
68xは、マイクロROMアレー167により出力され
た信号の行の選択されたビットをラッチする。特に、幾
つかのビット(即ち、所望のマイクロ命令を記憶する
列)が、ラッチ162xから受け取ったデコードされた
列アドレスに応答して選択されて、マルチプレクサ16
8xの出力にラッチされる。この事象も、図6に示した
クロックサイクル152中のφ1の終わりに対応するこ
とに注意されたい。
【0071】クロックサイクル152のφ2の間に、フ
リップ−フロップ170xは、その入力をサンプリング
し、そしてφ2の立下り縁において、フリップ−フロッ
プ170xは、そのサンプリングされた入力を出力す
る。従って、サイクル152のφ2の終わりに、Xパイ
プラインのマイクロ命令μrxが、上記AC2段の動作
のためにプロセッサの他部分に使用できるようになる。
又、フリップ−フロップ170xは、マイクロROMア
レー167又はマルチプレクサ168xの出力に生じる
潜在的な変化から現在マイクロ命令を分離するために含
まれていることに注意されたい。換言すれば、クロック
サイクル152のφ2の立下り縁の後に、マイクロRO
Mアレー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及び1
62yによりクロックサイクル152のφ1の終わりま
でにラッチされる。
【0073】次いで、その直後にクロックサイクル15
2のφ2の立上り遷移が続いて、3状態ドライバ160
yは、ラッチ158yにラッチされたデコードされた行
の値でアドレスバス164xyを駆動する。3状態ドラ
イバ160xは、この時間中には高インピーダンスモー
ドにあり、従って、yアドレスのみがアドレスバス16
4xyに通信されることに注意されたい。この場合も、
この値は、ドライバ166xyによって受け取られ、該
ドライバは、マイクロROMアレー167の選択された
行を駆動する。従って、クロックサイクル152のφ2
中に、マイクロROMアレー167による駆動及び応答
が、アドレスされた行の適当な信号を発生し出力する。
クロックサイクル152のφ2の立下り縁で、マルチプ
レクサ168yは、マイクロROMアレー167により
出力された信号の行の選択されたビット(即ち、列)を
ラッチする。この場合に、所望のマイクロ命令を表すビ
ットは、ラッチ162yから受け取ったデコードされた
列アドレスに応答して選択され、マルチプレクサ168
yの出力にラッチされる。この事象も、図6に示したク
ロックサイクル152中のφ2の終わりに対応すること
に注意されたい。
【0074】クロックサイクル154のφ1の間に、ラ
ッチ172yは透過的となってその入力の信号がその出
力に得られるようになる。従って、クロックサイクル1
54のφ1の立上り縁に、プロセッサの他部分は、Yパ
イプラインのマイクロ命令μryにアクセスする。ラッ
チ172yは、フリップ−フロップ170xと同様に、
マイクロROMアレー167又はマルチプレクサ168
yの出力に生じる潜在的変化から現在マイクロ命令を分
離するために設けられている。従って、サイクル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に関連し
て、本発明は、更に、条件依存命令の実行を促進するた
めの装置及び方法を備えている。好ましい実施例におい
て、このような条件依存命令の一例は、流れ変更(CO
F)命令である。このようなCOF命令は、この技術で
知られており、例えば、X86アーキテクチャにおいて
は、FAR JUMP、FAR CALL及びIRET
のような命令を含む。COF命令や、他の条件依存命令
を促進する好ましい装置及び方法を、図12に関連して
以下に説明する。
【0077】図12は、図5の要素の一部分を示すもの
で、条件依存命令を促進するための装置が付加されてい
る。この説明の残り部分については、好ましい実施例
を、例えば、COF命令に適用するものとして説明す
る。しかしながら、COF命令は一例に過ぎず、特許請
求の範囲に定められた本発明の範囲をこれに限定するも
のではない。それ故、図12の説明を続けると、この場
合も、図示されたマイクロシーケンサ回路146は、マ
イクロアドレスを受け取り、そして種々の制御信号によ
り、マイクロアドレスμsx及びμsyをマイクロRO
M回路148へ与える。しかしながら、特に、図5に加
えて、COF命令に関連してマイクロアドレス及び制御
を与えるための装置が示されている。より詳細には、図
12は、COF命令デコード回路174を更に示してい
る。このCOF命令デコード回路174は、好ましく
は、記述子を受け取るための入力176a、モードビッ
トを受け取るための入力176b、及び「ヒストリビッ
ト」を受け取るための入力176cを含む種々のデータ
入力を備えている。ヒストリビットは、既に発行された
命令から記憶された選択されたビット、及び/又は実行
されている現在命令に対応する既に実行されたマイクロ
命令からのビットを含む。COF命令デコード回路は、
更に、各x及びy命令に対応する制御信号を受け取るた
めの制御入力178x及び178yも備えている。以下
で容易に明らかとなる目的のために、これらの制御信号
は、各々、xマルチウェイ及びyマルチウェイ制御信号
と称する。
【0078】COF命令デコード回路は、更に、出力1
80xyを含み、これは、各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)を与えるこ
とができるようにする。同様に、アドレスレジスタ18
2yの上位部分は、マイクロROM回路148のy出力
に接続され、従って、yマイクロ命令μryの一部分を
受け取ることができる。従って、以下に詳細に述べるよ
うに、この接続は、μryがアドレスレジスタ182y
の上位部分にベースアドレス(BASE ADDRES
S)を与えることができるようにする。
【0079】図12の装置の動作へと進む前に、COF
命令又は他の形式の条件依存命令を取り扱うための少な
くとも1つの公知技術を説明するのが有益であろう。こ
の説明は、テーブル1のマイクロ命令を用いて行うが、
これらのマイクロ命令は、公知技術の理解を容易にする
ために一例として与えられたものであることを理解され
たい。公知技術においては、COF命令は、マイクロR
OM内の第1マイクロ命令をアドレスすることによりそ
の実行段を開始する。COF命令については、その第1
の又はその後のマイクロ命令の後に、一連の逐次の条件
マイクロ命令JUMP(CJUMP)に典型的に遭遇
し、これらCJUMPの各々は種々の条件をテストす
る。従って、テーブル1を参照し、マイクロROMのア
ドレス1に位置した4つの次々のマイクロ命令をアドレ
スすることによりCOF命令が開始される場合を考え
る。 テーブル1 マイクロ命令 マイクロ命令 条件を満たした アドレス 場合の行き先 1 CJUMP条件#1 10 2 CJUMP条件#2 11 3 CJUMP条件#3 12 4 CJUMP条件#4 13 5 DONE 公知技術では、条件#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
の上位部分へロードされるBASEADDRESS(ベ
ースアドレス)も同時に含んでいる。
【0082】COF命令デコード回路174は、好まし
くは、その入力176a、176b及び176cにおけ
る好ましい情報を分析して、これら入力に応答してSE
CONDARY ADDRESS(二次アドレス)を決
定する組み合わせロジックを備えている。好ましい実施
例では、この二次アドレスは、4ビット信号であり、従
って、16(即ち、24 =16)までの特定のアドレス
を識別することができる。更に、二次アドレスは、マル
チウェイ制御信号を発生する前に入力情報に基づいて計
算されるのが好ましい。その後、上記のxマルチウェイ
制御信号の例の場合と同様に、マルチウェイ制御信号の
発生により、既に決定された二次アドレスがCOF命令
デコード回路174からアドレスレジスタ182xの下
位部分へロードされる。
【0083】この点において、アドレスレジスタ182
xの下位及び上位の両部分には、アドレス部分がロード
される。これらの部分は、次いで、好ましくは連鎖によ
って組み合わされて、単一のDESTINATION
ADDRESS(行き先アドレス)を形成する。この行
き先アドレスは、COF命令の実行を進めるためのマイ
クロROM回路148内の位置である。従って、行き先
アドレスはマイクロシーケンサ146xへ接続され、該
マイクロシーケンサは、これを選択してマイクロROM
回路148へ接続し、これにより、COF命令に対する
実行段の次のマイクロ命令をアドレスして実行する。
【0084】Xパイプラインに関連して説明した動作
は、Yパイプラインにも等しく適用されることに注意さ
れたい。従って、デコード回路174が二次アドレスを
アドレスレジスタ182xの下位部分に出力するのと同
時に、その同じ二次アドレスがアドレスレジスタ182
yの下位部分に出力される。Yパイプラインの場合は、
異なるベースアドレスがマイクロROM回路148から
与えられ、この異なるベースアドレスは、Xパイプライ
ンについて説明したのと同様にそして同じ目的で二次ア
ドレスと組み合わされる。又、同様に、以下で詳細に述
べる終了信号も、デコード回路174から両マイクロシ
ーケンサ146x及び146yへ同時に結合される。
【0085】それ故、以上のことから、図12の実施例
は、COF又は他の条件依存命令を実行する前に、多数
のCJUMP、ひいては、クロックサイクルを使い果た
す必要をなくすものであることが理解されよう。特に、
好ましい実施例は、単一のクロックサイクルしか必要と
せず、これに対し、公知技術は、COF命令を実行する
ための行き先アドレスを決定するのに多数のクロックサ
イクルを必要とした。それ故、当然ながら、特に多数の
COF命令を伴うアプリケーションについてはスループ
ットが向上される。
【0086】上記で簡単に述べたように、COF命令デ
コード回路174は、上記のようにアドレスレジスタ1
82xに二次アドレスを与えるのではなくて、マイクロ
シーケンサ146xを制御する終了信号を発生する。こ
の同じ機能がy要素にも適用され、従って、COF命令
デコード回路174は、アドレスレジスタ182yに二
次アドレスを与えるのではなく、マイクロシーケンサ1
46yを制御する終了信号を発生する。この特徴も、公
知技術に勝る効果を奏する。
【0087】ここでも、本発明の終了信号の特徴を説明
する前に、COF又は他の条件依存命令の実行の完了を
指示する公知技術を説明するのが有益であろう。上記説
明から、公知の方法では、マイクロROMから終了信号
が発生されたことを想起されたい。典型的に、これは、
シーケンスにおける他の全ての条件がテストされた後
か、又は別のルーチンがそのステップを実行しそしてマ
イクロROMをアドレスした後にのみ生じ、マイクロR
OMが終了信号を発生する。又、公知技術では、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 プログラマブル論理アレー
フロントページの続き (72)発明者 スチーブン シー マクマハン アメリカ合衆国 テキサス州 75082 リ チャードソン ウインドメア ドライヴ 3311 (72)発明者 ロール エイ ガリベイ ジュニア アメリカ合衆国 テキサス州 75080 リ チャードソン 3ビー メルローズ 333 (72)発明者 ジョン ケイ アイトリーム アメリカ合衆国 テキサス州 75093 ダ ラス1127 プレストン ロード 3700 (72)発明者 ロナルド エス マクマホン アメリカ合衆国 テキサス州 75093 ダ ラス1614 プレストン ロード 3700

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 (a)少なくとも1つのマイクロ命令に
    より各々定められた実行可能な命令を記憶するための記
    憶手段と、 (b)上記記憶手段(a)に接続され、実行されるべき
    命令をデコードしそして命令が単一クロック命令である
    かどうかを検出するデコード手段と、 (c)第1のクロックサイクル中に上記デコード手段
    (b)に応答して第1のマイクロアドレスを与え、そし
    て単一クロック命令として検出される(b)における命
    令に応答して、第2のクロックサイクルに、上記(b)
    における命令の後に実行するための(a)における後続
    命令を定めるマイクロ命令に対するマイクロアドレスの
    シーケンス動作を促進するシーケンシング手段と、 (d)上記のシーケンシング手段(c)からのマイクロ
    アドレスに応答して、(b)における命令を定めるマイ
    クロ命令を出力するためのメモリ手段とを備えたことを
    特徴とするパイプライン式プロセッサ。
  2. 【請求項2】 上記命令はオペレーションコードビット
    を含み、上記デコード手段は、このオペレーションコー
    ドビットに応答して、命令が単一クロック命令であるか
    どうかを検出する請求項1に記載のパイプライン式プロ
    セッサ。
  3. 【請求項3】 上記デコード手段は、更に、上記命令か
    ら外部の保護モードビットに応答して、命令が単一クロ
    ック命令であるかどうかを検出する請求項2に記載のパ
    イプライン式プロセッサ。
  4. 【請求項4】 第2のパイプラインを備え、これは、 (e)上記第1の記憶手段と並列に接続され、上記
    (b)における命令と実質的に並列に実行可能な第2の
    命令を記憶するための第2の記憶手段と、 (f)上記第1のデコード手段と並列に接続され且つ上
    記第2記憶手段(e)に接続され、第2の命令をデコー
    ドすると共に、第2の命令が単一クロック命令であるか
    どうかを検出するための第2のデコード手段と、 (g)第1のクロックサイクル中に上記第2のデコード
    手段(f)に応答して第2のマイクロアドレスを上記メ
    モリ手段(d)に与え、そして単一クロック命令として
    検出される(f)における命令に応答して、第2クロッ
    クサイクルに、上記(f)における命令の後に実行する
    ための(e)における命令を定める後続マイクロ命令に
    対するマイクロアドレスのシーケンス動作を促進する第
    2のシーケンシング手段とを備えた請求項1に記載のパ
    イプライン式プロセッサ。
  5. 【請求項5】 少なくとも1つのマイクロ命令により定
    められた命令を記憶するための記憶回路と、マイクロ命
    令を記憶するためにマイクロアドレスでアドレス可能な
    メモリとを有するパイプライン式マイクロプロセッサに
    おいて、 (a)上記記憶回路に命令を記憶し、 (b)上記段階(a)で記憶された命令が単一クロック
    命令であるかどうかを検出し、 (c)上記段階(a)で記憶された命令を定める少なく
    とも1つのマイクロ命令に対応するマイクロアドレスを
    発行し、 (d)上記段階(b)に応答して、後続命令に対応する
    後続マイクロアドレスを促進し、そして (e)上記段階(c)からのマイクロアドレスに応答し
    てメモリからマイクロ命令を出力する、という段階を備
    えたことを特徴とする方法。
  6. 【請求項6】 一連の命令に対し上記段階(a)ないし
    (e)を繰り返すための段階(f)を更に備えた請求項
    5に記載の方法。
  7. 【請求項7】 上記段階(b)は、 (i)命令の一部を論理回路に入力し、そして (ii)命令が単一クロック命令であるかどうかを表す制
    御コードを上記論理回路から出力する、ことを含む請求
    項5に記載の方法。
  8. 【請求項8】 上記パイプライン式マイクロプロセッサ
    は、上記段階(a)ないし(e)と実質的に並列に動作
    する第2のパイプラインを有し、更に、 (f)第2命令を第2の記憶回路に記憶し、 (g)上記段階(f)で記憶された第2命令が単一クロ
    ック命令であるかどうかを検出し、 (h)上記段階(f)で記憶された第2命令の少なくと
    も一部分を定めるマイクロ命令に対応するマイクロアド
    レスを発行し、 (i)上記段階(g)に応答して、後続マイクロアドレ
    スを促進し、そして (j)上記段階(h)からのマイクロアドレスに応答し
    てメモリから第2のマイクロ命令を出力する、という段
    階を備えた請求項5に記載の方法。
  9. 【請求項9】 単一のマイクロメモリと、第1及び第2
    の命令パイプラインとを有するプロセッサにおいて、マ
    イクロメモリ命令を出力する方法が、 (a)第1の命令パイプラインに関連して発行された第
    1のマイクロアドレスを、第1クロックサイクルの第1
    段階中に単一のマイクロメモリに結合し、 (b)第2の命令パイプラインに関連して発行された第
    2のマイクロアドレスを、第1クロックサイクルの第2
    段階中に単一のマイクロメモリに結合し、 (c)上記単一のマイクロメモリから、第1クロックサ
    イクルの直後に続く第2クロックサイクルの終わりまで
    に上記段階(a)の第1マイクロアドレスに対応する第
    1マイクロメモリ命令を出力し、 (d)上記単一のマイクロメモリから、上記第2クロッ
    クサイクルの終わりまでに上記段階(b)の第2マイク
    ロアドレスに対応する第2マイクロメモリ命令を出力
    し、 (e)上記段階(c)からの第1マイクロメモリ命令
    を、上記第2クロックサイクル直後に続く第3クロック
    サイクルの第1段階の終わりまでに第1回路にラッチ
    し、そして (f)上記段階(d)からの第2マイクロメモリ命令
    を、上記第3クロックサイクルの第1段階の終わりまで
    に第2回路にラッチする、という段階を備えたことを特
    徴とする方法。
  10. 【請求項10】 (a)第1及び第2の命令パイプライ
    ンを備え、各パイプラインは、対抗するクロックサイク
    ル中に動作する関連段を有し、 (b)マイクロ命令を出力するようにマイクロアドレス
    によってアドレス可能なマイクロメモリを更に備え、 (c)第1マイクロアドレスを第1クロックサイクルの
    第1段階中にマイクロメモリ(b)に結合する手段を更
    に備え、第1マイクロアドレスは、第1命令パイプライ
    ンに関連して発行され、 (d)第2マイクロアドレスを第1クロックサイクルの
    第2段階中にマイクロメモリ(b)に結合する手段を更
    に備え、第2マイクロアドレスは、第2命令パイプライ
    ンに関連して発行され、 (e)第1クロックサイクルの直後に続く第2クロック
    サイクルの終わりまでに上記第1マイクロアドレス
    (c)に対応する第1マイクロメモリ命令を出力する手
    段を更に備え、そして (f)第2クロックサイクルの終わりまでに上記第2マ
    イクロアドレス(d)に対応する第2マイクロメモリ命
    令を出力する手段を更に備えたことを特徴とするプロセ
    ッサ。
  11. 【請求項11】 マイクロ命令を記憶するマイクロ命令
    メモリを有したマイクロプロセッサにおいて、流れ変更
    命令を促進する方法が、 (a)流れ変更命令を受け取り、 (b)上記段階(a)の流れ変更命令に対応する制御信
    号及びベースアドレス成分を有する第1のマイクロ命令
    を発行し、 (c)複数の所定のデータを評価することにより二次ア
    ドレスを決定し、そして (d)上記段階(b)の第1マイクロ命令からの制御信
    号成分に応答して、上記ベースアドレスと二次アドレス
    とを結合することにより行き先アドレスを形成し、この
    行き先アドレスは、上記段階(a)の流れ変更命令を完
    了するための第2マイクロ命令を識別するものである、
    という段階を備えたことを特徴とする方法。という段階
    を備えたことを特徴とする方法。
  12. 【請求項12】 上記段階(b)の後に、上記段階
    (a)における流れ変更命令の完了を指示する完了信号
    を上記第1マイクロ命令の制御信号成分から発行する段
    階(e)が続く請求項11に記載の方法。
  13. 【請求項13】 流れ変更命令を促進するように動作で
    きるプロセッサにおいて、 (a)マイクロ命令を記憶するメモリと、 (b)命令を受け取るための受信手段と、 (c)制御信号及びベースアドレスを与える第1マイク
    ロ命令をメモリ(a)から発行する手段と、 (d)上記メモリ(a)から外部にあり、複数の所定の
    データを評価することにより二次アドレスを決定するた
    めの手段と、 (e)上記制御信号に応答して、上記ベースアドレスと
    二次アドレスとを結合して行き先アドレスを形成する手
    段とを備え、この行き先アドレスは、受け取った命令に
    対して後続段階を実行するために上記メモリ(a)にお
    いて第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/138660 1993-10-18
US08/138,855 US5644741A (en) 1993-10-18 1993-10-18 Processor with single clock decode architecture employing single microROM
US08/138855 1993-10-18
US08/138320 1993-10-18

Publications (2)

Publication Number Publication Date
JPH07152560A true JPH07152560A (ja) 1995-06-16
JP3736866B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100384875B1 (ko) * 1995-12-16 2003-08-21 주식회사 하이닉스반도체 파이프라인구조를갖는마이크로프로세서에서의언세이프처리마이크로시퀀서

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0779577B1 (en) 1993-10-18 2002-05-22 VIA-Cyrix, Inc. Micoprocessor pipe control and register translation
US6577316B2 (en) * 1998-07-17 2003-06-10 3Dlabs, Inc., Ltd 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
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
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
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 株式会社日立製作所 情報処理装置
DE3750721T2 (de) * 1987-02-24 1995-03-16 Texas Instruments Inc Computersystem mit Durchführung von vermischten Makro- und Mikrocodebefehlen.
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100384875B1 (ko) * 1995-12-16 2003-08-21 주식회사 하이닉스반도체 파이프라인구조를갖는마이크로프로세서에서의언세이프처리마이크로시퀀서

Also Published As

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

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
US6279105B1 (en) Pipelined two-cycle branch target address cache
US7237094B2 (en) Instruction group formation and mechanism for SMT dispatch
JP3678444B2 (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US8938605B2 (en) Instruction cracking based on machine state
US5596740A (en) Interleaved memory conflict resolution with accesses of variable bank widths and partial return of non-conflicting banks
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
US6728872B1 (en) Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
JPH03116233A (ja) データプロセッサの命令処理システム
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
US5784589A (en) Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
JP3736866B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット
US20220050684A1 (en) Program counter (pc)-relative load and store addressing
US8683261B2 (en) Out of order millicode control operation
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US6081656A (en) Method for deriving a double frequency microprocessor from an existing microprocessor
US6115730A (en) Reloadable floating point unit
US5644741A (en) Processor with single clock decode architecture employing single microROM
US5742755A (en) Error-handling circuit and method for memory address alignment double fault
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
US6965906B1 (en) Converting negative floating point numbers to integer notation without two's complement hardware
US5794026A (en) Microprocessor having expedited execution of condition dependent instructions
US20230393852A1 (en) Vector coprocessor with time counter for statically dispatching instructions

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