(57)【特許請求の範囲】
【請求項１】
プロセッサであって、
第１の命令を記憶するための第１の記憶回路、
第１のマイクロアドレスによってアドレス可能な、前記第１のマイクロアドレスに応答して第１のマイクロ命令を出力する単一のマイクロＲＯＭ、
前記第１のマイクロアドレスを前記単一のマイクロＲＯＭへ与えるために接続された第１のシーケンス回路、
前記単一のマイクロＲＯＭが前記第１のマイクロ命令を出力する前に、前記第１の記憶回路に記憶された前記第１の命令が単一のクロック命令を有しているかを検出するための、及び、前記第１の記憶回路に記憶された前記第１の命令が単一のクロック命令を有するか否かを前記第１のシーケンス回路へ示すための、前記第１の記憶回路に接続された第１のデコード回路、
第２の命令を記憶するための第２の記憶回路、
第２のマイクロアドレスを前記単一のマイクロＲＯＭへ与えるために接続された第２のシーケンス回路、及び
前記単一のマイクロＲＯＭが第２のマイクロ命令を出力する前に、前記第２の記憶回路に記憶された前記第２の命令が単一のクロック命令を有しているかを検出するための、及び、もし前記第２の命令が単一のクロック命令ならば、次のクロックサイクル中に、次のマイクロアドレスを出力するためにコマンド信号を発することによって、前記第２の記憶回路に記憶された前記第２の命令が単一のクロック命令を有するか否かの検出に応答して前記第２のシーケンス回路を制御するための、前記第２記憶回路に接続された第２のデコード回路、
を有することを特徴とするプロセッサ。
【請求項２】
プロセッサであって、
デコードされるべき命令を記憶するためのデコーダ、
マイクロアドレスに応答して、前記デコーダに記憶された命令に関連したマイクロ命令を出力するメモリ、
マイクロアドレスを前記メモリに与えるために接続されたシーケンス回路、および
前記メモリが第１の命令に関連するマイクロ命令を出力する前に、前記第１の命令が単一のクロック命令を有するか否かを検出するために動作可能な、前記デコーダに接続された検出器、
を有し、
前記検出器は、単一のクロック命令の検出に応答して、制御信号を前記シーケンス回路に与え、前記シーケンス回路が前記メモリと無関係に、第２の命令と関連する他のマイクロアドレスを発するようにすることを特徴とするプロセッサ。
【請求項３】
複数の実行ステージにわたって命令を実行するために動作可能なプロセッサであって、
マイクロ命令を記憶するためのメモリ、
命令を受け取るための回路、
制御信号とベースアドレスを有する第１のマイクロ命令を前記メモリから発するための回路、
前記第１のマイクロ命令の制御信号を発する前に、前記メモリの外部にあり、前記メモリと無関係な複数の所定のデータを評価することによって、二次のアドレスを定めるための回路、および
前記制御信号のみに応答して行き先アドレスを形成するために、前記ベースアドレスと既に定められた二次のアドレスを結合するための回路、
を有し、
前記行き先アドレスは、受け取った命令に対して続くステージを実行するために、前記メモリにある第２のマイクロ命令を識別することを特徴とするプロセッサ。
【請求項４】
前記行き先アドレスは上部分と下部分を有し、前記結合するための回路は前記ベースアドレスと前記二次のアドレスを連結するための回路を有し、前記ベースアドレスは行き先アドレスの前記上部分を有し、且つ、前記二次のアドレスは前記行き先アドレスの前記下部分を有することを特徴とする請求項３に記載のプロセッサ。
【請求項５】
複数の実行ステージにわたって命令を実行するために動作可能なプロセッサであって、
マイクロ命令を記憶するためのメモリ、
命令を受け取るための回路、
制御信号を有する第１のマイクロ命令を前記メモリから発するための回路、及び
行き先アドレスを形成するための回路、
を有し、
前記行き先アドレスは、前記制御信号に応答してのみ発せられ、且つ前記第１のマイクロ命令の制御信号を発する前に、前記メモリの外部にあり、前記メモリと無関係な複数の所定のデータを評価することによって形成されるアドレス要素を有し、
前記行き先アドレスは、受け取った命令に対して続くステージを実行するために、前記メモリにある第２のマイクロ命令を識別し、
前記アドレス要素は、第１のアドレス要素を有し、且つ
前記形成するための回路は、更に、前記第１のマイクロ命令の一部から前記行き先アドレスの第２のアドレス部分を形成するための回路と、前記行き先アドレスを形成するために、前記第１のアドアレス部分及び前記第２のアドレス部分を結合するための回路、
を有することを特徴とするプロセッサ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般に、マイクロプロセッサに係り、より詳細には、条件依存命令を促進実行し、単一クロック命令デコードアーキテクチャを有し、そしてデュアルパイプラインアーキテクチャをサポートするための単一マイクロＲＯＭ動作を行うマイクロプロセッサに係る。
【０００２】
【従来の技術】
マイクロプロセッサの設計においては、命令スループット、即ち１秒当たりに実行される命令の数が第１に重要なものである。１秒当たりに実行される命令の数は、種々の手段によって増加することができる。命令スループットを増加するための最も簡単な技術は、マイクロプロセッサが動作する周波数を増加することである。しかしながら、作動周波数の増加は、製造技術によって制限されると共に、過剰な発熱を招く。
【０００３】
従って、近代のマイクロプロセッサ設計は、クロックサイクル周期当たりに実行される命令の平均数を増加する設計技術を用いることにより命令スループットを増加することに集中している。命令スループットを増加するこのような１つの技術が「パイプライン」である。パイプライン技術は、マイクロプロセッサを通して流れる各命令を多数の部分にセグメント化し、その各々をパイプラインの個別の段により取り扱うことができる。パイプライン動作は、実行中に多数の命令をオーバーラップすることによってマイクロプロセッサの速度を増加する。例えば、各命令を６つの段階で実行することができそして各段階がその機能を実行するのに１つのクロックサイクルを必要とする場合には、６つの個別の命令を同時に実行し（各々がパイプラインの個別の段階で実行される）、各クロックサイクルに１つの命令を完了することができる。この考え方によれば、パイプライン式アーキテクチャは、６個のクロックサイクルごとに１つの命令を完了する非パイプライン式アーキテクチャよりも６倍も大きな命令スループットをもつことになる。
【０００４】
マイクロプロセッサの速度を高めるための第２の技術は、マイクロプロセッサを「スーパースカラー」として構成することである。スーパースカラーアーキテクチャにおいては、クロックサイクル当たりに２つ以上の命令が発行される。流れの中の他の命令に依存する命令がなければ、命令スループットの増加は、スカラー性の程度に比例する。従って、アーキテクチャがレベル２までスーパースカラーである（各クロックサイクルに２つの命令が発行されることを意味する）場合には、マシンの命令スループットが２倍となる。
【０００５】
マイクロプロセッサは、高い命令スループットを得るためには、スーパーパイプライン式（多数の段をもつ命令パイプラインを「スーパーパイプライン」と称する）であると共にスーパースカラーとすることができる。しかしながら、このようなシステムの動作は、実際には、各々の命令を所与の数のパイプ段で手際よく実行でき且つ命令の実行が相互依存しないような理想的な状態からかけ離れている。実際の動作においては、命令は変化するリソース要求を有し、従って、パイプラインを通る命令の流れに割り込みを生じる。更に、命令は典型的に相互依存的であり、例えば、レジスタの値を読み取る命令は、その同じレジスタに値を書き込む手前の命令に依存し、第１の命令がレジスタへの書き込みを完了するまで第２の命令を実行できない。
【０００６】
【発明が解決しようとする課題】
従って、スーパーパイプライン及びスーパースカラー技術は、マイクロプロセッサのスループットを高めることはできるが、命令のスループットは、スーパーパイプライン式スーパースカラーアーキテクチャの実施によって大きく左右される。１つの特定の問題は、実行段を行うのに１つのクロックサイクルしか必要としない命令の後に浪費されるクロックサイクルの数を減少することである。このような命令は、その対応するマイクロ命令を単一のクロックサイクルで実行し、以下「単一クロック命令」と称する。特に、現在のパイプラインアーキテクチャのもとでは、単一クロック命令の後に、次の命令のマイクロアドレスが得られるまで、付加的なクロックサイクルが費やされる。従って、そのマイクロアドレスに対応する次の続く命令は、パイプラインを経て進むことが留められる。
【０００７】
それ故、単一クロック命令の後に次のマイクロアドレスを得るまでのクロックサイクルの数が公知技術よりも減少されたマイクロプロセッサアーキテクチャの必要性が生じている。
【０００８】
更に、多数のパイプラインを受け入れるに必要なアレースペースの全サイズ又は数が公知技術よりも減少されたマイクロプロセッサアーキテクチャの必要性も生じている。
【０００９】
更に、条件依存命令の実行を完了又は進ませるまでのクロックサイクルの数が公知技術よりも減少されたマイクロプロセッサアーキテクチャの必要性も生じている。
【００１０】
【課題を解決するための手段】
本発明は、制御信号及びベースアドレスを有する第１のマイクロ命令をメモリから発行し、そして複数の所定のデータを評価することにより二次アドレスを決定することによって、流れ変更命令を促進するような改良されたマイクロコントロールユニット及び方法を開示する。ベースアドレスと二次アドレスを結合して行き先アドレスを形成し、この行き先アドレスは、流れ変更命令に対して第２の段を実行するためのメモリ内の第２のマイクロ命令を識別する。二次アドレスとは別に、流れ変更命令の実行段の完了を指示する完了信号が、複数の所定のデータを評価することにより発行される。
【００１１】
本発明の別の特徴は、命令が単一クロック命令であるかどうか検出し、そしてそれに応答して、次のマイクロ命令を促進するようにシーケンシング回路に知らせるようなデコード回路にある。
【００１２】
本発明の別の特徴は、単一のマイクロメモリからマイクロメモリ命令を出力する多パイプラインマイクロプロセッサにある。
【００１３】
本発明のプロセッサ及び方法は、多数の技術的効果をもたらす。一般にこれらの技術的効果はプロセッサスループットの向上と等価であるが、本発明の種々の特徴の特定の実施例は、次の効果の１つ以上をもたらす。（ｉ）条件依存命令を実行する間にそして条件依存命令の完了を決定することによりマイクロ命令メモリへのアクセス回数を減少し、（ii）プロセッサのマイクロメモリへのアクセス及びそこからの出力をパイプライン処理し、従って、ハードウェア、消費電力、表面積及びコストをあまり必要とせず、そして（iii)単一クロック命令の後の遅延を減少する。更に別の技術的効果は、以下の説明、特許請求の範囲及び添付図面を参照することにより当業者に容易に明らかとなろう。
【００１４】
【実施例】
本発明及びその効果を完全に理解するために、添付図面を参照して以下に詳細に説明する。本発明のマイクロプロセッサの模範的実施例の詳細な説明は、次のように構成される。
１．模範的プロセッサシステム
１．１  マイクロプロセッサ
１．２  システム
２．一般化されたパイプラインアーキテクチャ
３．単一クロック命令デコードアーキテクチャ
４．デュアルパイプラインアーキテクチャをサポートする単一マイクロＲＯＭ動作
５．条件依存性命令の実行促進
６．結論
【００１５】
この構成テーブル及びこの詳細な説明で使用する対応する見出しは、参照の便宜上設けられているものに過ぎない。マイクロプロセッサの従来又は既知の観点の説明は、これを不必要に詳細にすることにより本発明の説明を不明瞭にしない程度に省略する。
【００１６】
１．模範的プロセッサシステム
模範的プロセッサシステムが図１、２及び３に示されている。図１及び２は、各々、模範的なスーパースカラー、スーパーパイプライン型マイクロプロセッサと、２つの実行パイプラインのパイプ段階との基本的な機能ブロックを示している。図３は、マイクロプロセッサを使用する模範的プロセッサシステム（マザーボード）設計を示している。
【００１７】
１．１  マイクロプロセッサ
図１を参照すれば、マイクロプロセッサ１０の主たるサブブロックは、次のものを含む。（ａ）中央処理ユニット（ＣＰＵ）コア２０；（ｂ）プリフェッチバッファ３０；（ｃ）プリフェッチャ３５；（ｄ）分岐処理ユニット（ＢＰＵ）４０；（ｅ）アドレス変換ユニット（ＡＴＵ）５０；及び（ｆ）ＴＡＧ  ＲＡＭ６２を含む単一化した１６Ｋバイトのコード／データキャッシュ６０。２５６バイトの命令ラインキャッシュ６５は、単一化キャッシュへの命令フェッチを減少するための一次命令キャッシュを構成し、単一化キャッシュは、二次命令キャッシュとして働く。オンボード浮動小数点ユニット（ＦＰＵ）７０は、ＣＰＵコア２０によってこれに発せられた浮動小数点命令を実行する。
【００１８】
マイクロプロセッサは、内部３２ビットアドレス及び６４ビットデータバスＡＤＳ及びＤＡＴＡを各々使用している。単一化キャッシュ６０及び命令ラインキャッシュ６５の３２バイトラインサイズに対応する２５６ビット（３２バイト）プリフェッチバス（ＰＦＢ）は、３２命令バイトの全ラインを単一のクロックにおいて命令ラインキャッシュへ転送できるようにする。外部３２ビットアドレス及び６４ビットデータバスへのインターフェイスは、バスインターフェイスユニット（ＢＩＵ）を経て行われる。
【００１９】
ＣＰＵコア２０は、２つの実行パイプＸ及びＹを有するスーパースカラー設計のものである。これは、命令デコーダ２１と、アドレス計算ユニット２２Ｘ及び２２Ｙと、実行ユニット２３Ｘ及び２３Ｙと、３２個の３２ビットレジスタをもつレジスタファイル２４とを備えている。ＡＣコントロールユニット２５は、レジスタスコアボード及びレジスタ再ネーミングハードウェアをもつレジスタ変換ユニット２５ａを備えている。マイクロシーケンサ及びマイクロＲＯＭを含むマイクロコントロールユニット２６は、実行制御を与える。
【００２０】
ＣＰＵコア２０からの書き込みは、１２個の３２ビット書き込みバッファ２９へ待ち行列され、書き込みバッファの割り当ては、ＡＣコントロールユニット２５によって実行される。これらの書き込みバッファは、単一化キャッシュ６０へ書き込むためのインターフェイスを形成し、非キャッシュ処理書き込みは、書き込みバッファから外部メモリへ直接送られる。書き込みバッファロジックは、オプションの読み取りソース作用及び書き込み集合作用をサポートする。
【００２１】
パイプコントロールユニット２８は、実行パイプを通る命令の流れを制御し、これは、命令が例外を生じないことが決定されるまで命令の順序を保持し、命令流におけるバブルを押しつぶし、そして誤って予想された分岐及び例外を生じる命令の後に実行パイプをフラッシュすることを含む。各段階に対し、パイプコントロールユニットは、どの実行パイプが最も初期の命令を含むかを追跡し、「ストール」出力を与え、そして「遅延」入力を受け取る。
【００２２】
ＢＰＵ４０は、分岐（行われる又は行われない）の方向を予想し、そしてその予想された行われる分岐及び流れ命令の無条件変更（ジャンプ、コール、リターン）に対するターゲットアドレスを与える。更に、このＢＰＵは、分岐及び浮動小数点命令の場合には推論的実行を監視し、即ち予想を誤ることのある分岐後に推論的に発生される命令の実行、及びＦＰＵ７０へ発生される浮動小数点命令であって推論的に発生された命令が実行を完了した後に失敗となることのある浮動小数点命令の実行を監視する。浮動小数点命令が失敗に終わった場合、又は分岐が誤って予想された（これは、分岐に対するＥＸ又はＷＢ段階まで分からない）場合には、実行パイプラインは、その失敗となった又は予想を誤った命令の点まで修理され（即ち、その命令の後に実行パイプラインがフラッシュされ）、そして命令のフェッチが再開されねばならない。
【００２３】
パイプラインの修理は、各パイプ段において浮動小数点又は予想分岐命令がその段に入るときにプロセッサ状態のチェックポイントを形成することにより行われる。これらのチェックポイント検査される命令に対し、その後の推論的に発生される命令によって変更され得る全てのリソース（プログラマが見ることのできるレジスタ、命令ポインタ、条件コードレジスタ）がチェックポイント検査される。チェックポイント検査される浮動小数点命令が失敗に終わるか又はチェックポイント検査される分岐が誤って予想された場合は、そのチェックポイント検査された命令の後に実行パイプラインがフラッシュされ、浮動小数点命令の場合には、これは、典型的に、実行パイプライン全体をフラッシュすることを意味し、一方、誤って予想された分岐の場合には、完了することが許されたＥＸの対命令及びＷＢの２つの命令があることを意味する。
【００２４】
模範的なマイクロプロセッサ１０の場合に、推論の程度についての主たる制約は、次の通りである。（ａ）一度に４つまでの浮動小数点又は分岐命令に対してのみ推論的実行が許される（即ち、推論レベルは最大４である）。（ｂ）書き込み又は浮動小数点の記憶は、それに関連した分岐又は浮動小数点命令が解決する（即ち、予想が正しいか又は浮動小数点命令が失敗に終わらない）までキャッシュ又は外部メモリに対して完了しない。
【００２５】
単一化キャッシュ６０は、４方セット連想（４ｋセットサイズをもつ）のもので、擬似ＬＲＵ置換アルゴリズムを使用し、ライトスルー及びライトバックモードを有している。これは、クロック当たり２つのメモリアクセス（データ読み取り、命令フェッチ又はデータ書き込み）を許すためにデュアルポート式（バンク構成による）にされている。命令ラインキャッシュは、完全連想、ルックアサイド実施（単一化キャッシュに対して）のもので、ＬＲＵ置換アルゴリズムを使用する。
【００２６】
ＦＰＵ７０は、４深さロード及び記憶待ち行列をもつロード／記憶段と、変換段（３２ビットないし８０ビットの拡張フォーマット）と、実行段とを備えている。ロードは、ＣＰＵコア２０により制御され、そしてキャッシュ処理記憶は、書き込みバッファ２９により指示される（即ち、各浮動小数点記憶動作に対して書き込みバッファが割り当てられる）。
【００２７】
図２を参照すれば、マイクロプロセッサは、７段のＸ及びＹ実行パイプラインを有し、即ち、命令フェッチ段（ＩＦ）、２つの命令デコード段（ＩＤ１、ＩＤ２）、２つのアドレス計算段（ＡＣ１、ＡＣ２）、実行段（ＥＸ）、及びライトバック段（ＷＢ）を有している。複合ＩＤ及びＡＣパイプ段は、スーパーパイプライン式であることに注意されたい。
【００２８】
ＩＦ段は、ＣＰＵコア２０に連続的なコード流を与える。プリフェッチャ３５は、（一次）命令ラインキャッシュ６５或いは（二次）単一化キャッシュ６０のいずれかからプリフェッチバッファ３０へ１６バイトの命令データをフェッチする。ＢＰＵ４０は、プリフェットアドレスでアクセスされ、そして予想される流れの変更に対してプリフェッチャへターゲットアドレスを供給し、プリフェッチャが１つのクロック内に新たなコード流へシフトできるようにする。
【００２９】
デコード段ＩＤ１及びＩＤ２は、可変長さのＸ８６命令セットをデコードする。命令デコーダ２１は、各クロックごとにプリフェッチバッファ３０から１６バイトの命令データを検索する。ＩＤ１において、２つの命令の長さがデコードされて（Ｘ及びＹの実行パイプに対して各々１つづつ）、Ｘ及びＹ命令ポインタを得、それに対応するＸ及びＹバイト使用信号がプリフェッチバッファへ返送される（これは、次いで、次の１６バイト転送のために増加する）。又、ＩＤ２においても、流れの変更のような幾つかの命令形式が決定され、即座及び／又は変位オペランドが分離される。ＩＤ２段は、Ｘ及びＹ命令のデコード、マイクロＲＯＭに対するエントリポイントの発生、及びアドレスモード及びレジスタフィールドのデコードを完了する。
【００３０】
ＩＤ段の間に、命令を実行するための最適なパイプが決定され、命令がそのパイプへ発生される。パイプの切り換えにより、ＩＤ２ＸからＡＣ１ＹへそしてＩＤ２ＹからＡＣ１Ｘへ命令を切り換えることができる。模範的な実施例については、流れ変更命令、浮動小数点命令及び排他的命令のような幾つかの命令がＸパイプラインのみへ発生される。排他的命令は、ＥＸパイプ段において失敗となることのある命令、及びある形式の命令、例えば、保護モードセグメントロード、ストリング命令、特殊なレジスタアクセス（制御、デバッグ、テスト）、乗算／除算、入力／出力、プッシュオール／ポップオール（ＰＵＳＨ／ＰＯＰＡ）、及びタスクスイッチを含む。排他的命令は、両パイプのリソースを使用することができる。というのは、これらは、ＩＤ段のみから発生される（即ちこれらは他の命令と対にされない）からである。これらの発生制約を除くと、いかなる命令も対にして、Ｘ又はＹのいずれのパイプへ発生することもできる。
【００３１】
アドレス計算段ＡＣ１及びＡＣ２は、メモリ参照のためのアドレスを計算し、そしてメモリオペランドを供給する。ＡＣ１段は、クロックごとに２つの３２ビットリニア（３オペランド）アドレスを計算する（比較的稀である４つのオペランドアドレスは、２つのクロックを必要とする）。データ依存性もチェックされそしてレジスタ変換ユニット２５ａ（レジスタスコアボード及びレジスタ再ネーミングハードウェア）を用いて分析され、３２個の物理レジスタ２４は、Ｘ８６アーキテクチャで定められた８個の汎用のプログラマから見える論理レジスタをマップするのに使用される（ＥＡＸ、ＥＢＸ、ＥＣＸ、ＥＤＸ、ＥＤＩ、ＥＳＩ、ＥＢＰ、ＥＳＰ）。
【００３２】
ＡＣユニットは、８個のアーキテクチャ（論理）レジスタ（Ｘ８６で定められたレジスタセットを表す）を備えており、これらは、アドレス変換のためのレジスタオペランドをアクセスする前にレジスタ変換ユニットＡＣ１のアクセスに必要な遅延を回避するようにＡＣユニットによって使用される。アドレス変換を必要とする命令については、ＡＣ１は、アーキテクチャレジスタをアクセスする前にこれらアーキテクチャレジスタの所要データが有効になる（リード・アフタ・ライトの依存性がない）まで待機する。ＡＣ２段の間に、レジスタファイル２４及び単一化キャッシュ６０は、物理アドレスでアクセスされ（キャッシュヒットの場合には、デュアルポート式の単一化キャッシュのためのキャッシュアクセス時間は、レジスタのアクセス時間と同じであり、レジスタセットを効果的に拡張する）、物理アドレスは、リニアアドレスであるか、或いはアドレス変換がイネーブルされた場合には、ＡＴＵ５０によって発生された変換されたアドレスである。
【００３３】
変換されたアドレスは、メモリのページテーブル及びチップ上のワークスペース制御レジスタからの情報を用いてリニアアドレスからＡＴＵ５０によって発生される。単一化キャッシュは、仮想インデックスされると共に物理的にタグが付けられていて、アドレス変換がイネーブルされたときには、変換されていないアドレス（ＡＣ１の終わりに得られる）でセットの選択を行うことができ、そして各セットに対し、ＡＴＵ５０からの変換されたアドレス（ＡＣ２において初期に得られる）でタグの比較を行うことができる。セグメント化及び／又はアドレス変換違反のチェックも、ＡＣ２で行われる。
【００３４】
命令は、それらが例外を生じないと決定されるまではプログラム順序に保たれる。ほとんどの命令に対し、この決定は、ＡＣ２の間又はその前に行われ、浮動小数点命令及びある排他的命令は、実行中に例外を生じることがある。命令は、ＡＣ２からＥＸへ順次に通され（又は浮動小数点命令の場合はＦＰＵ７０へ）、ＥＸにおいて依然として例外を生じることのある整数命令は、排他的と示され、それ故、単独で両方の実行パイプへ発生されるので、しかるべき順序での例外の取り扱いが確保される。
【００３５】
実行段ＥＸＸ及びＥＸＹは、命令により定められた動作を実行する。命令は、ＥＸにおいて可変数のクロックを消費し、即ち順序がずれて実行することが許される（順序ずれ完了）。両方のＥＸ段は、加算、論理及びシフト機能ユニットを備え、そして更に、ＥＸＸ段は、乗算／除算ハードウェアを含む。
【００３６】
ＷＢ段は、レジスタファイル２４、条件コード、及びマシン状態の他の部分を既に実行された命令の結果で更新する。レジスタファイルは、ＷＢのフェーズ１（ＰＨ１）に書き込まれ、そしてＡＣ２のフェーズ２（ＰＨ２）に読み取られる。
【００３７】
１．２  システム
図３を参照すれば、模範的な実施例として、マイクロプロセッサ１０は、単一チップのメモリ及びバスコントローラ８２を含むプロセッサシステムに使用される。メモリ／バスコントローラ８２は、マイクロプロセッサと外部メモリサブシステム−−レベル２キャッシュ８４及びメインメモリ８６−−との間のインターフェイスを形成し、６４ビットプロセッサデータバス（ＰＤ）上でのデータの移動を制御する（データ路はコントローラの外部であり、ピンの本数及びコストを低減する）。
【００３８】
コントローラ８２は、３２ビットアドレスバスＰＡＤＤＲに直接インターフェイスし、コントローラ内のレジスタを読み取ったり書き込んだりするための１ビット巾のデータポート（図示せず）を備えている。両方向性の分離バッファ８８は、マイクロプロセッサ１０と、ＶＬ及びＩＳＡバスとの間のアドレスインターフェイスを形成する。
【００３９】
コントローラ８２は、ＶＬ及びＩＳＡバスインターフェイスの制御を行う。ＶＬ／ＩＳＡインターフェイスチップ９１（ＨＴ３２１のような）は、３２ビットＶＬバス及び１６ビットＩＳＡバスへの標準インターフェイスを形成する。ＩＳＡバスは、ＢＩＯＳ９２、キーボードコントローラ９３、Ｉ／Ｏチップ９４及び標準ＩＳＡスロット９５へインターフェイスする。インターフェイスチップ９１は、二重の高／低ワード〔３１：１６〕／〔１５：０〕分離バッファにより形成された両方向性３２／１６マルチプレクサ９６を経て３２ビットＶＬバスへインターフェイスする。ＶＬバスは、標準ＶＬスロット９７へインターフェイスし、そして両方向性分離バッファ９８を経て６４ビットプロセッサデータバスの下位ダブルワード〔３１：０〕へインターフェイスする。
【００４０】
２．一般化されたパイプラインアーキテクチャ
図４は、パイプライン当たり４命令の流れを示すもので、２パイプラインアーキテクチャに対するオーバーラップした命令実行を示している。付加的なパイプラインと、各パイプラインに対する付加的な段とを設けることができる。好ましい実施例において、マイクロプロセッサ１０は、システムクロック信号１２４の倍数である内部クロック１２２を使用している。図４において、内部クロックはシステムクロックの周波数の２倍で動作するものとして示されている。第１内部クロックサイクル１２６の間に、ＩＤ１は、各命令Ｘ０及びＹ０に基づいて動作する。内部クロックサイクル１２８の間に、命令Ｘ０及びＹ０はＩＤ２段にあり（Ｘ０はＩＤ２ｘそしてＹ０はＩＤ２ｙにあり）、ＩＤ１段には命令Ｘ１及びＹ１がある。内部クロックサイクル１３０の間には、ＩＤ１に命令Ｘ２及びＹ２があり、ＩＤ２に命令Ｘ１及びＹ１があり（Ｘ１はＩＤ２ｘにそしてＹ１はＩＤ２ｙにあり）、そしてＡＣ１段に命令Ｘ０及びＹ０がある（Ｘ０はＡＣ１ｘにそしてＹ０はＡＣ１ｙにある）。内部クロックサイクル１３２の間には、ＩＤ１段に命令Ｘ３及びＹ３があり、ＩＤ２段に命令Ｘ２及びＹ２があり、ＡＣ１段に命令Ｘ１及びＹ１があり、そしてＡＣ２段に命令Ｘ０及びＹ０がある。これらの命令は、Ｘ及びＹパイプラインの段を経て順次流れ続ける。クロック１３４ないし１４０に示されたように、各命令の実行部分は、順次クロックサイクルにおいて実行される。これは、パイプライン式アーキテクチャの主たる利点であり、個々の命令の実行時間を減少せずに、クロック当たりに完了される命令の数が増加される。従って、ハードウェアの速度に対する大きな需要と共に大きな命令スループットが達成される。
【００４１】
図４に示す命令の流れは、最適な場合である。図示されたように、各パイプ段は時間通りに完了し、１クロックサイクル以上の段は必要とされない。しかしながら、実際のマシンでは、１つ以上の段が完了のために付加的なクロックサイクルを必要とし、他のパイプ段を通る命令の流れを変更する。更に、一方のパイプラインを通る命令の流れは、他方のパイプラインを通る命令の流れによって左右される。
【００４２】
多数のファクタにより１つ又は全てのパイプラインの種々の段に遅延が生じることがある。例えば、メモリへのアクセスがメモリキャッシュにおいて失敗し、１クロックで命令を処理するに必要な時間にデータをアクセスするのを妨げることがある。これは、データがメインメモリから検索されるまで、ＡＣ１段の片側又は両側が遅れることを必要とする。特定の段については、パイプラインの他の段が、ここに示す実施例では実行段の１つにしかない乗算器のような必要なリソースを用いることがある。この場合には、リソースが使用できるまでその段が遅れることになる。データ依存性も遅延を生じることがある。ある命令が加算のような手前の命令の結果を必要とする場合には、その命令が実行ユニットによって処理されるまで待機しなければならない。
【００４３】
「マルチボックス」命令、即ち多数のマイクロ命令を用いて実行され、従って完了するのに２つ以上のクロックサイクルを必要とする命令、によって他の遅延が生じる。これらの命令は、ＩＤ２段の出力においてパイプラインを通るその後の命令の流れを停止する。
【００４４】
パイプラインを通る命令の流れは、パイプコントロールユニット２８によって制御される。好ましい実施例では、両方（又は全て）のパイプを通る命令の流れを制御するのに単一のパイプコントロールユニット２８が使用される。パイプを通る命令の流れを制御するために、パイプコントロールユニット２８は、パイプライン１０２及び１０４を含む種々のユニットからの「遅延」信号を受け取り、そして種々のユニットへ「ストール」信号を発行する。
【００４５】
Ｘ及びＹの両パイプラインに対して単一のパイプコントロールユニット２８が使用されるので、パイプライン自体は互いに独立して制御される。換言すれば、Ｘパイプラインのストールが必ずしもＹパイプラインのストールを生じることはない。
【００４６】
３．単一クロック命令デコードアーキテクチャ
図５は、マイクロアドレス及びそれにより得られるマイクロ命令の発生に伴う幾つかの要素を有するブロック図である。図４のブロックは、図１から導出されるが、本発明の方法は、必ずしも、特定の要素の特定の位置によって制限されるものではなく、当業者であれば、本発明の範囲から逸脱せずに種々の機能を配置し直すことができよう。図５を参照すれば、Ｘ及びＹの両パイプラインに対する命令は命令デコーダ２１に接続される。このデコーダ２１は、ｘ及びｙ命令を受け取り、そしてマイクロアドレス及び制御の両方をマイクロコントロールユニット２６に与える。より詳細には、マイクロアドレス及び制御は、マイクロコントロールユニット２６内のマイクロシーケンサ１４６に接続される。好ましい実施例では、マイクロシーケンサ回路１４６は、Ｘ及びＹパイプラインに対して同様の機能を実行するための独立したマイクロシーケンサ１４６ｘ及び１４６ｙを備えている。又、マイクロシーケンサ回路１４６は、他のソース（図示せず）からマイクロプロセッサを通して制御及びマイクロアドレスの両方を受け取る。マイクロシーケンサ回路１４６は、マイクロＲＯＭ回路１４８のメモリ（以下で説明する）をアドレスするために、以下マイクロアドレスと称するアドレスを発生するように接続される。
【００４７】
図６は、図５のブロックによるマイクロアドレス発生、マイクロ命令発生及びマイクロ命令実行のタイミングを示している。図６のタイミングは、図４から導出されるが、図５のブロックの動作に対応する段について強く強調されていることに注意されたい。又、図６の段は、１５０ないし１５６と均一に番号が付けられた４つの内部クロックサイクルを経てのｘ及びｙ命令のシーケンスを示していることにも注意されたい。クロックサイクル１５０ないし１５６は、ＩＤ２、ＡＣ１、ＡＣ２及びＥＸ段を含んでいる。又、各クロックサイクルは、２つの位相φ１及びφ２を含むことに注意されたい。
【００４８】
単一クロック命令に関連した図５のブロックの一般的動作及び図６のタイミングは、次の通りである。図４について上記したように、段ＩＤ１の間には、命令デコーダ２１は、単一クロック命令におけるバイトの数と、命令に含まれたフィールドの形式を決定する。又、デコーダ２１は、マイクロＲＯＭ回路１４８をアドレスするために命令から導出されたエントリ点のマイクロアドレスも与える。段ＩＤ２の間には、マイクロシーケンサ回路１４６は、ｘ及びｙの両方の命令に対するマイクロＲＯＭ回路１４８のための次のマイクロアドレスを出力する。説明上、次のマイクロアドレスは、各々、μｓｘ1 及びμｓｙ1 と示され、μｓはマイクロシーケンサからの出力を指示する。μｓｘ1 は、段ＩＤ２の第１の位相φ１中にマイクロシーケンサ回路１４６によって出力される。同様に、μｓｙ1 は、段ＩＤ２の第２の位相φ２中にマイクロシーケンサ回路１４６によって出力される。
【００４９】
マイクロシーケンサ回路１４６は、精巧なマルチプレクサとして動作し、従って、その制御信号に応答して、マイクロシーケンサ回路１４６は、そのマイクロアドレス入力から選択を行って次のマイクロアドレスを出力する。好ましい実施例では、マイクロシーケンサ回路１４６によって選択されて出力された次のマイクロアドレスは、８つの異なるマイクロアドレスの１つである。ここでは、幾つかのマイクロアドレスを与えることについて特に説明するが、マルチプレクサ回路１４６へマイクロアドレスを与える入力の他のものも図５の一般的な指示に含まれることを理解されたい。簡単に述べると、７つの異なるマイクロアドレスは次の通りである。
（１）命令エントリ点：このマイクロアドレスは、デコーダ２１によって与えられ、新たな命令がＥＸ段に入るべきときに選択される。
（２）例外ＰＬＡ：このマイクロアドレスは、割り込み又は例外に応対するように選択される。
（３）ＮＯＰ：このマイクロアドレスは、実行されるべき命令が対応パイプラインにないときに選択される。
【００５０】
（４）マイクロリターン：このマイクロアドレスは、リターンスタックの上部から選択される。
（５）マイクロＲＯＭの次のマイクロアドレス：このマイクロアドレスは、マイクロＲＯＭ回路１４８による現在出力から選択され、マイクロ命令の次の逐次対、或いはあるコール又は条件マイクロ分岐のターゲットマイクロアドレスを選択するのに使用される。
（６）ｎｔａｋｅｎ：このアドレスは、ある条件マイクロ分岐が行われないときに選択される。
（７）流れ変更マイクロアドレス：このマイクロアドレスは、一部はマイクロＲＯＭの次のマイクロアドレスからそして一部は命令デコード回路から形成された連鎖アドレスである。このマイクロアドレスを発生する好ましい方法は、セクション５で詳細に説明する。
【００５１】
マイクロアドレスは、マイクロシーケンサ回路１４６によってマイクロＲＯＭ回路１４８へ送られ、該回路は、その対応するマイクロアドレスによって呼び出された機能を実行するためにマイクロ命令を出力する。従って、図６に戻ると、マイクロアドレスμｓｘ1 の直後に、即ち段ＩＤ２のφ１に続いて、μｓｘ1 がマイクロＲＯＭ回路１４８へ送られる。セクション４で詳細に説明するように、段ＩＤ２のφ２と、段ＡＣ１のφ１の終りまでの間に、マイクロＲＯＭ回路１４８内のアレーがそれに対応するマイクロ命令μｒｘ1 を発生して出力する。明瞭化のために、μｒは、マイクロＲＯＭ回路１４８からの出力を示唆することに注意されたい。更に、マイクロアドレスμｓｙ1 の出力の直後に（段ＩＤ２のφ２の後に）、μｓｙ1 はマイクロＲＯＭ回路１４８に送られる。又、以下のセクション４に述べるように、φ１と、段ＡＣ１のφ２の終りまでの間に、マイクロＲＯＭ回路１４８のアレーがそれに対応するマイクロ命令μｒｙ1 を発生して出力する。段ＡＣ２は、クロックサイクル１５４において生じ、命令Ｘ１及びＹ１、μｒｘ1 及びμｒｙ1 に対応するマイクロ命令がマイクロプロセッサの適用要素に与えられる。好ましい実施例では、各パイプラインは、それ自身の各々のアドレス計算段を有しており、従って、ｘ及びｙマイクロ命令がそれに応じて与えられる。従って、クロックサイクル１５４は、ＡＣ２段の全時間巾中に「ｘ1 及びｙ1 」の両方に与えられるものとして示されている。更に、ＡＣ２段では、各々のマイクロ命令が実行の準備としてデコードされる。最終的に、ＥＸ段は、クロックサイクル１５６において生じ、デコードされた命令が各Ｘ及びＹパイプラインのＡＬＵに送られ、それにより、与えられたマイクロ命令により指定された機能が実行される。ＡＣ２段と同様に、ｘ及びｙ動作は互いに独立して生じ、従って、ＥＸ段の全時間巾中に「ｘ1 及びｙ1 」の両方に与えられるものとして示されている。図６は、単一クロック命令の流れに対応するので、命令の実行段に対して単一のクロックサイクル１５６しか必要とされない。多クロック命令は、付加的な実行段を必要とする。
【００５２】
図６の一般的な流れを説明したが、本発明の１つの特徴は、単一クロック命令の直後にマイクロＲＯＭ回路１４８による出力のタイミングを向上することに関する。特に、本発明は、所与の命令が単一クロック命令であると決定されたときに、次に続く命令をパイプラインを経てできるだけ早く進ませることが望ましいことを認識する。より詳細には、パイプラインに現在通過している命令が単一クロック命令であり、従って、そのＥＸ段に対し単一のクロックサイクルしか必要としないときに、次に続く命令を直ちに進ませて、現在の単一クロック命令の１段だけ後に続くようにするのが好ましい。図７は、この好ましい状態を示している。
【００５３】
特に、図７は、図６に示された同じクロックサイクル１５０ないし１５６にわたりＸ及びＹパイプラインを通る２つの次々の命令に対する命令の流れを含むタイミング図である。図７の添字は、２つの命令の連続を示している。添字１で示された第１のｘ及びｙ命令は、単一クロック命令であって、図６に示した命令と同様に流れる。添字２で示された第２のｘ及びｙ命令は、第１のｘ及びｙ命令の１段だけ直後に続く付加的な命令である。命令の流れが直ちに続くと、段の浪費はなく、即ち、ＩＤ１、ＩＤ２、ＡＣ１、ＡＣ２又はＥＸ段のいずれによっても命令が処理されないようなクロックサイクルは、図示された命令流の間には生じない。
【００５４】
公知技術では、単一クロック命令に対し図７の好ましい流れを得ることができない。図８は、図７の２対の命令に対する公知技術の流れを示すタイミング図である。第２の命令に対するマイクロシーケンサの出力μｓｘ2 及びμｓｙ2 は、図７の本発明の好ましい流れで示されたようにクロックサイクル１５２中ではなくて、クロックサイクル１５４中に出力される。従って、公知技術では、クロックサイクル１５２が浪費される。このような結果は、マイクロシーケンサ回路の出力を制御する公知方法によって生じる。特に、公知技術では、単一クロック命令μｒに対しマイクロＲＯＭにより出力されるマイクロ命令は、その後に（浪費されるクロックサイクルの後に）マイクロシーケンサ回路が次のマイクロＲＯＭマイクロアドレスμｓを出力するようにさせる制御信号を含んでいる。より詳細には、各々の異なるマイクロ命令に対し、μｒの所与のビット（１つ又は複数）が、命令が単一クロック命令であることを指示する。この指示の後にのみ、マイクロシーケンサは、次のマイクロアドレスμｓを出力するようにさせられる。この指示及び遅れが図８に矢印で示されている。図示されたように、クロックサイクル１５２のφ１の終わりに、マイクロ命令μｒｘ1 は、その対応命令が単一クロック命令であることを指示する。上記したように、次のマイクロアドレスμｓｘ2 は、この指示の後にのみ出力され、従って、クロックサイクル１５４の始めまで生じることはない。従って、実際には、マイクロシーケンサは、マイクロＲＯＭ出力を「待機」しなければならず、ひいては、この待機時間中に少なくとも１つのクロックサイクルが浪費される。図８に遅れの矢印で示されたように、Ｙパイプラインについても、マイクロＲＯＭ出力μｒｙ1 と、マイクロシーケンサによる次の応答出力μｓｙ2 との間に同じ遅れが生じることに注意されたい。しかしながら、図８とは対照的に、本発明は、図７の好ましい改良された流れを得るための新規な装置及び方法を備え、これについて以下に述べる。
【００５５】
図９は、図５のブロック図に、図７の好ましいタイミングを得るのに使用される細部を加えたものを示している。特に、命令デコーダ２１は、ｘ及びｙ命令に対し各々個別のレジスタ２１ｘ及び２１ｙを備えている。更に、各個別のレジスタ２１ｘ及び２１ｙは、各プログラマブル論理アレー（ＰＬＡ）に接続される。より詳細には、ＰＬＡ１５８ｘ及び１５８ｙは、各命令のＯＰコードを記憶するレジスタ２１ｘ及び２１ｙの部分に接続される。ＯＰコードは各レジスタ２１ｘ及び２１ｙ内で左に整列されて図示されているが、このような図示は、ＯＰコードがバッファ内のどこにでも記憶することができ、必ずしも相接ビットで表されなくてもよいという点で任意である。各ＰＬＡ１５８ｘ及び１５８ｙは、更に、各マイクロシーケンサ１４６ｘ及び１４６ｙの制御入力に接続されている。最後に、図示されていないが、各ＰＬＡ１５８ｘ及び１５８ｙは、以下に述べる機能を達成するように付加的な入力に接続されることに注意されたい。
【００５６】
図９の要素の動作は、図７のタイミング図について最も良く説明される。まず始めに、各命令レジスタ２１ｘ及び２１ｙは、２つの逐次パイプライン処理される命令ｘ1 及びｘ2 と、ｙ1 及びｙ2 とを各々記憶すると仮定する。従って、図７に示すように、クロックサイクル１５０のＩＤ２段のφ１中に、マイクロシーケンサ１４６ｘは制御信号を受け取り、そして次のマイクロアドレスμｓｘ1 を出力する。更に、クロックサイクル１５０のＩＤ２段のφ２中に、マイクロシーケンサ１４６ｙは制御信号を受け取り、そして次のマイクロアドレスμｓｙ1 を出力する。μｓｘ1 及びμｓｙ1 が出力されると、これらはマイクロＲＯＭ回路１４８へ送られ、上記のようにμｒｘ1 及びμｒｙ1 を発生する。
【００５７】
しかしながら、クロックサイクル１５０に生じるＩＤ２段に戻ると、各ＰＬＡ１５８ｘ及び１５８ｙは、各命令のＯＰコードをデコードして、現在命令が単一クロック命令であるかどうか判断する。好ましい実施例では、ＰＬＡは、単一クロック命令を構成するＯＰコードビットのいかなる考えられるパターンも検出するようにプログラムされる。この検出は、ＯＰコードビットの一部又は全部に基づいている。ＰＬＡが単一クロック命令を検出した場合には、ＰＬＡは、その各々のマイクロシーケンサを制御して、その直後に続くクロックサイクル中に次のマイクロアドレスμｓを出力する。例えば、ＰＬＡ１５８ｘは、命令ｘ1 が単一クロック命令であると決定すると、マイクロシーケンサ１４６ｘを制御し、図７に示すように、次のクロックサイクル１５２の間に、次のマイクロアドレスμｓｘ2 を出力させる。別の例として、ＰＬＡ１５８ｙは、命令ｙ1 が単一クロック命令であると決定すると、マイクロシーケンサ１４６ｙを制御し、図７に示すように、次のクロックサイクル１５２の間に、次のマイクロアドレスμｓｙ2 を出力させる。
【００５８】
各ＰＬＡ１５８ｘ及び１５８ｙは、選択されたＯＰコードビットに加えて情報を分析して、命令が単一クロック命令であるかどうかを決定する。例えば、Ｘ８６アーキテクチャにおいては、ｍｏｄ  ｒ／ｍバイトの選択されたビットのような命令内の他のビットが分析される。更に、ＯＰコードビットに加えて、命令以外のビットも分析できる。例えば、保護モードがセットされたかどうかを指示するビットを分析して、命令が単一クロック命令であるかどうかを決定できる。当業者であれば、他の例も明らかであり、これらは本発明の範囲内に包含されるものとする。
【００５９】
以上のことから、図９の構成は、公知技術で考えられた次々のマイクロ命令間に浪費されるクロックサイクルを排除することが明らかである。このような進歩は、これら命令の各々に対する遅延が減少されるので、多数の単一クロック命令を用いるマイクロプロセッサに対して非常に有益である。最初に述べたように、命令スループットが主として重要であり、ここに示すように、本発明は、このようなスループットを向上させる。当業者であれば、本発明の範囲から必ずしも逸脱せずに、代替え物を選択できることが理解されよう。例えば、図７について述べた例は、Ｘ及びＹの両パイプラインにおける単一クロック命令を示すものであったが、本発明は、２つのパイプラインの片方だけが単一クロック命令を実行するときにも（即ち、他方のパイプラインの命令によって要求される実行段の数に係わりなく）デュアルパイプラインアーキテクチャに適用できる。従って、本発明は、他の単一又は多パイプラインのアーキテクチャにも適用できる。更に別の例として、ＰＬＡはＯＰコードビットを監視するように示されたが、ＰＬＡ以外の構造を用いて、単一クロック命令の存在を検出することもできる。更に別の例として、特定のアーキテクチャが与えられると、ＯＰコードビット以外のビットでも、単一クロック命令を表す場合には、分析することができる。
【００６０】
４．デュアルパイプラインアーキテクチャをサポートするための単一マイクロＲＯＭ動作
図５ないし８に関連して上記したように、本発明のプロセッサアーキテクチャは、マイクロアドレスを受け取って図７のタイミング図に基づいてマイクロ命令を発生するマイクロＲＯＭ回路１４８を備えている。本発明は、単一のマイクロＲＯＭアレーを使用しながらも、このようなタイミングを達成するために付加的な新規な装置及び方法を使用する。特に、図１０は、このような装置を示しており、そして図１１は、図１０の装置に対する詳細なタイミングを示している。
【００６１】
図１０を参照すれば、マイクロＲＯＭ回路１４８が、種々の機能を表すブロックを用いて詳細に示されている。これらブロックは、Ｘ及びＹの両方のパイプラインに応対する単一のマイクロＲＯＭアレー１６７を備えている。このマイクロＲＯＭアレー１６７は、図１０の種々のブロックによってアドレス及び出力されるマイクロ命令を記憶するための複数の行及び列を含む。以下に述べる２つの要素を除くと、他の要素は、マイクロＲＯＭアレー１６７に対して一般的に対称的であり、従って、以下の説明は、「ｘ」という表示を用いた対応参照番号をもつｘ関連ブロックに集中して行う。ｙ関連ブロックに関する要素は、「ｙ」という表示を用いて同様に示されている。
【００６２】
マイクロアドレスμｓｘは、φ１によりクロック（刻時）されるラッチ１５２ｘの入力に接続される。好ましい実施例では、μｓｘは、１４ビットアドレスであり、これは、マイクロＲＯＭアレー１６７の行及び列を各々アドレスするための個別の成分に分割される。特に、マイクロ命令は、１行に１６個の命令が記憶されるようにアレー１６７に記憶される。従って、行が選択されると、その行からの１６個の列の１つが更に選択されて、その行に沿って記憶されている多数の中から特定のマイクロ命令が選択される。特に、μｓｘの１０ビットがラッチ１５２から行デコードブロック１５４ｘの入力に接続される。同様に、μｓｘの４ビットがラッチ１５２から列デコードブロック１５６ｘの入力に接続される。これらの１０ビットのグループは、μｓｘの最初の１０ビット（即ち〔０：９〕）及びμｓｘの最後の４ビット（即ち〔１０：１３〕）として示されているが、行又は列のデコードに、μｓｘの非隣接ビットが選択されてもよいことを理解されたい。又、マイクロアドレスμｓｘ及びμｓｙは、１４ビットより多い又はそれより少ないもので構成してもよいことを理解されたい。
【００６３】
行デコードブロック１５４ｘの出力は、φ２によってクロックされるラッチ１５８ｘの入力に接続される。更に、ラッチ１５８ｘの出力は、φ１によりクロックされる３状態ドライバ１６０ｘの入力に接続される。同様に、列デコードブロック１５６ｘの出力は、φ２によりクロックされるラッチ１６２ｘの入力に接続される。
【００６４】
３状態ドライバ１６０ｘの出力は、１６４ｘｙと示されたアドレスバスに接続され、これは、以下に述べるように、ｘ又はｙアドレスのいずれかがバスに通信されることを示唆する。実際に、３状態ドライバ１６０ｙの出力は、アドレスバス１６４ｘｙにも接続されることに注意されたい。アドレスバス１６４ｘｙは、行ドライバ１６６ｘｙの入力に接続され、これは更にマイクロＲＯＭアレー１６７に接続される。図１０における回路の対象性は、ｙ行関連回路についても、ｘ行関連回路に関して説明したものと同様の要素を形成する。従って、μｓｙのビット〔０：９〕は、行デコードブロック１５４ｙに接続され、その出力はラッチ１５８ｙの入力に接続される。ラッチ１５８ｙの出力は、３状態ドライバ１６０ｙの入力に接続され、その出力はアドレスバス１６４ｘｙに接続される。しかしながら、ｙ行回路のデータ路は、ｘ行回路と同様であるが、ラッチ１５８ｙ及びドライバ１６０ｙのクロック信号は、以下に述べるタイミング機能を果たすように切り換えられることに注意されたい。
【００６５】
ｘ列関連回路に戻ると、ラッチ１６２ｘの出力は、感知増幅器、ラッチ及びマルチプレクサブロック１６８ｘの制御入力に接続される。ブロック１６８ｘは、その名称の各機能を実行できることに注意されたい。特に、ブロック１６８ｘのデータ入力は、マイクロＲＯＭアレー１６７の出力に接続される。更に、ブロック１６８ｘは、ラッチ機能を果たすようにφ１によりクロックされる。最後に、ラッチ１６２ｘの出力は、ブロック１６８ｘの制御入力に接続されるので、ブロック１６８ｘは、以下に詳細に述べるように、マイクロＲＯＭアレー１６７により出力された１行のデータの選択的部分（即ち、特定の列）しかラッチしない。ブロック１６８ｘの出力は、φ１によりクロックされるフリップ−フロップ１７０ｘの入力に接続される。このフリップ−フロップ１７０ｘの出力は、マイクロＲＯＭアレー１６７により発生されたｘマイクロ命令へのアクセスを要求するライン、バス又はアーキテクチャへ接続される。
【００６６】
図１０の回路対象性は、ｙ列関連回路として同様の要素を形成する。従って、μｓｙのビット〔１０：１３〕は、列デコードブロック１５６ｙに接続され、該ブロックは更にラッチ１６２ｙの入力に接続される。このラッチ１６２ｙの出力は、感知増幅器、ラッチ及びマルチプレクサブロック１６８ｙの制御入力に接続される。それ故、この場合も、ｙ列データ路は、一般に、ｘ行データ路と同じであるが、以下に述べるタイミングを得るためにクロック信号は反転される。しかしながら、ｙ行データ路は、１つの点で若干異なり、即ちマルチプレクサブロック１６８ｙの出力がラッチ１７２ｙの入力に接続されることに注意されたい。これは、ラッチではなくてフリップ−フロップに接続されたマルチプレクサブロック１６８ｘの出力とは対照的である。この相違も、以下に述べるタイミング機能を受け入れる。更に、ラッチ１７２ｙの出力は、マイクロＲＯＭアレー１６７により発生されたｙマイクロ命令へのアクセスを要求するライン、バス又はアーキテクチャへ接続される。
【００６７】
図７に示すように、本発明の好ましいアーキテクチャの１つの特徴は、マイクロＲＯＭ回路１４８の２つのアクセスを同じクロックサイクル１５０内であるが個別の位相φ１及びφ２に含むことである。更に、単一クロックサイクルにおいてマイクロＲＯＭ回路１４８へμｒｘ及びμｒｙを与えることにより、μｒｘがμｓｘ後の１つのクロックサイクルの終わりまでに完全に使用でき、そして同様に、μｒｙがμｓｙ後の１つのクロックサイクルの終わりまでに完全に使用できるようになる。図１０のブロックは、このような動作を許し、図１１の詳細なタイミング図によって最も良く理解されよう。
【００６８】
図１１は、図６に示したものと同様に、クロックサイクル１５０ないし１５４の間のマイクロＲＯＭアレー１６７のｘ及びｙの両方のアクセスのタイミングを詳細に示す図である。明瞭化のために、Ｘパイプラインに関連した動作（即ち、ｘマイクロアドレス及びｘマイクロ命令）を、図の対角線流の最も左の部分に沿って示して最初に説明する。同様に、Ｙパイプラインに関連した動作（即ち、ｙマイクロアドレス及びｙマイクロ命令）を、図の最も右の部分に沿って示して第２に説明する。
【００６９】
図１１の最も左の部分を参照すれば、μｓｘ1 は、クロックサイクル１５０のφ１の終わりまでにラッチ１５２ｘによってラッチされる。従って、μｓｘ1 の適当なビットが行及び列デコードブロック１５４ｘ及び１５６ｘに各々与えられる。これらデコードブロックの各々は、この技術で良く知られた技術に基づいてビットをデコードし、μｓｘ1 によりアドレスされるマイクロＲＯＭアレー１６７内の対応する行及び列を識別する。従って、マイクロアドレスのデコードがクロックサイクル１５０のφ２の間に生じ、それにより生じる行及び列のデコードされた信号が各々ラッチ１５８ｘ及び１６２ｘによりクロックサイクル１５０のφ２の終わりにラッチされる。ラッチ１６２ｘにより出力されるデコードされた列信号は、マルチプレクサブロック１６８ｘの制御入力に直ちに接続される。
【００７０】
次いで、その直後にクロックサイクル１５２のφ１の立上り遷移が続いて、３状態ドライバ１６０ｘは、ラッチ１５８ｘにラッチされたデコードされた行の値でアドレスバス１６４ｘｙを駆動する。この値は、ドライバ１６６ｘｙによって受け取られ、該ドライバは、この技術で良く知られた原理により、マイクロＲＯＭアレー１６７の選択された行へ充分な駆動信号を与える。従って、クロックサイクル１５２のφ１中に、マイクロＲＯＭアレー１６７による駆動及び応答が、アドレスされた行の適当な信号を発生し作用させる。クロックサイクル１５２のφ１の立下り縁で、マルチプレクサ１６８ｘは、マイクロＲＯＭアレー１６７により出力された信号の行の選択されたビットをラッチする。特に、幾つかのビット（即ち、所望のマイクロ命令を記憶する列）が、ラッチ１６２ｘから受け取ったデコードされた列アドレスに応答して選択されて、マルチプレクサ１６８ｘの出力にラッチされる。この事象も、図６に示したクロックサイクル１５２中のφ１の終わりに対応することに注意されたい。
【００７１】
クロックサイクル１５２のφ２の間に、フリップ−フロップ１７０ｘは、その入力をサンプリングし、そしてφ２の立下り縁において、フリップ−フロップ１７０ｘは、そのサンプリングされた入力を出力する。従って、サイクル１５２のφ２の終わりに、Ｘパイプラインのマイクロ命令μｒｘが、上記ＡＣ２段の動作のためにプロセッサの他部分に使用できるようになる。又、フリップ−フロップ１７０ｘは、マイクロＲＯＭアレー１６７又はマルチプレクサ１６８ｘの出力に生じる潜在的な変化から現在マイクロ命令を分離するために含まれていることに注意されたい。換言すれば、クロックサイクル１５２のφ２の立下り縁の後に、マイクロＲＯＭアレー１６７又はマルチプレクサ１６８ｘのいずれの出力の変化も、次のサイクル１５４の位相φ１の間にフリップ−フロップ１７０ｘの出力に影響することはない。従って、このような変化が、現在μｒｘマイクロ命令を検査しているプロセッサの要素に影響することはない。
【００７２】
ｘマイクロアドレス及びｘマイクロ命令発生方法の動作について以上に説明したが、図１１の最も右の部分を参照し、ｙマイクロアドレス及びｙマイクロ命令を発生する動作に対する同時動作を説明する。まず、μｓｙ1 がクロックサイクル１５０のφ２の終わりまでにラッチ１５２ｙによってラッチされる。従って、μｓｙ1 の適当なビットが各々行及び列デコードブロック１５４ｙ及び１５６ｙに与えられる。ｘビットと同様ではあるが１位相の後に、ｙビットがクロックサイクル１５０のφ２の間にデコードされて、μｓｙ1 によりアドレスされたマイクロＲＯＭアレー１６７内の対応する行及び列を識別する。更に、それにより得られる行及び列のデコードされた信号は、各々ラッチ１５８ｙ及び１６２ｙによりクロックサイクル１５２のφ１の終わりまでにラッチされる。
【００７３】
次いで、その直後にクロックサイクル１５２のφ２の立上り遷移が続いて、３状態ドライバ１６０ｙは、ラッチ１５８ｙにラッチされたデコードされた行の値でアドレスバス１６４ｘｙを駆動する。３状態ドライバ１６０ｘは、この時間中には高インピーダンスモードにあり、従って、ｙアドレスのみがアドレスバス１６４ｘｙに通信されることに注意されたい。この場合も、この値は、ドライバ１６６ｘｙによって受け取られ、該ドライバは、マイクロＲＯＭアレー１６７の選択された行を駆動する。従って、クロックサイクル１５２のφ２中に、マイクロＲＯＭアレー１６７による駆動及び応答が、アドレスされた行の適当な信号を発生し出力する。クロックサイクル１５２のφ２の立下り縁で、マルチプレクサ１６８ｙは、マイクロＲＯＭアレー１６７により出力された信号の行の選択されたビット（即ち、列）をラッチする。この場合に、所望のマイクロ命令を表すビットは、ラッチ１６２ｙから受け取ったデコードされた列アドレスに応答して選択され、マルチプレクサ１６８ｙの出力にラッチされる。この事象も、図６に示したクロックサイクル１５２中のφ２の終わりに対応することに注意されたい。
【００７４】
クロックサイクル１５４のφ１の間に、ラッチ１７２ｙは透過的となってその入力の信号がその出力に得られるようになる。従って、クロックサイクル１５４のφ１の立上り縁に、プロセッサの他部分は、Ｙパイプラインのマイクロ命令μｒｙにアクセスする。ラッチ１７２ｙは、フリップ−フロップ１７０ｘと同様に、マイクロＲＯＭアレー１６７又はマルチプレクサ１６８ｙの出力に生じる潜在的変化から現在マイクロ命令を分離するために設けられている。従って、サイクル１５４のφ１の終わりに、マイクロＲＯＭアレー１６７又はマルチプレクサ１６８ｙのいずれの出力の変化も、サイクル１５４の次の位相φ２の間にラッチ１７２ｙの出力に影響することはない。従って、このような変化が、現在のμｒｙマイクロ命令を検査しているプロセッサの要素に影響を及ぼすことはない。
【００７５】
以上のことから、図１０に示された機能的ブロックは、図１１に示す好ましいタイミングを許すことが明らかであろう。従って、個別の位相を用いると、単一のマイクロＲＯＭアレー１６７が単一クロックサイクル中に２回アクセスされる一方、そのアクセスの１つの全クロックサイクル内の各アクセスに対応するマイクロ命令を発生する。従って、独立したＸ及びＹパイプラインがスループットを犠牲にすることなく同じ信号アレーを共有することができる。当業者であれば、ここに述べる本発明の機能及び構造から必ずしも逸脱せずに代替え物を選択できることが理解されよう。例えば、「クロックサイクル」と考えられるものにおいて３つ以上の位相が生じるようにクロックの巾を調整できる一方、多数のパイプラインが同じマイクロＲＯＭアレーを共有する能力を維持できる。この例は、特許請求の範囲によって限定された本発明の範囲から逸脱するものでないことが当業者に明らかであろう。
【００７６】
５．条件依存命令の実行促進
図５に関連して上記したように、好ましい実施例は、マイクロシーケンサ回路１４６を備え、これは、精巧なマルチプレクサとして動作して、その入力の種々のマイクロアドレス間で選択を行い、そしてマイクロＲＯＭ回路１４８をアドレスするための選択されたマイクロアドレスを出力する。マイクロシーケンサ回路１４６に関連して、本発明は、更に、条件依存命令の実行を促進するための装置及び方法を備えている。好ましい実施例において、このような条件依存命令の一例は、流れ変更（ＣＯＦ）命令である。このようなＣＯＦ命令は、この技術で知られており、例えば、Ｘ８６アーキテクチャにおいては、ＦＡＲ  ＪＵＭＰ、ＦＡＲ  ＣＡＬＬ及びＩＲＥＴのような命令を含む。ＣＯＦ命令や、他の条件依存命令を促進する好ましい装置及び方法を、図１２に関連して以下に説明する。
【００７７】
図１２は、図５の要素の一部分を示すもので、条件依存命令を促進するための装置が付加されている。この説明の残り部分については、好ましい実施例を、例えば、ＣＯＦ命令に適用するものとして説明する。しかしながら、ＣＯＦ命令は一例に過ぎず、特許請求の範囲に定められた本発明の範囲をこれに限定するものではない。それ故、図１２の説明を続けると、この場合も、図示されたマイクロシーケンサ回路１４６は、マイクロアドレスを受け取り、そして種々の制御信号により、マイクロアドレスμｓｘ及びμｓｙをマイクロＲＯＭ回路１４８へ与える。しかしながら、特に、図５に加えて、ＣＯＦ命令に関連してマイクロアドレス及び制御を与えるための装置が示されている。より詳細には、図１２は、ＣＯＦ命令デコード回路１７４を更に示している。このＣＯＦ命令デコード回路１７４は、好ましくは、記述子を受け取るための入力１７６ａ、モードビットを受け取るための入力１７６ｂ、及び「ヒストリビット」を受け取るための入力１７６ｃを含む種々のデータ入力を備えている。ヒストリビットは、既に発行された命令から記憶された選択されたビット、及び／又は実行されている現在命令に対応する既に実行されたマイクロ命令からのビットを含む。ＣＯＦ命令デコード回路は、更に、各ｘ及びｙ命令に対応する制御信号を受け取るための制御入力１７８ｘ及び１７８ｙも備えている。以下で容易に明らかとなる目的のために、これらの制御信号は、各々、ｘマルチウェイ及びｙマルチウェイ制御信号と称する。
【００７８】
ＣＯＦ命令デコード回路は、更に、出力１８０ｘｙを含み、これは、各ｘ及びｙ出力１８０ｘ及び１８０ｙに分割されて示されている。出力１８０ｘは、アドレスレジスタ１８２ｘの下位部分への二次アドレス（ＳＥＣＯＮＤＡＲＹ  ＡＤＤＲＥＳＳ）又はマイクロシーケンサ１４６ｘを制御する終了（ＤＯＮＥ）信号を与えるように接続される。同様に、出力１８０ｙは、アドレスレジスタ１８２ｙの下位部分への二次アドレス（ＳＥＣＯＮＤＡＲＹ  ＡＤＤＲＥＳＳ）又はマイクロシーケンサ１４６ｙを制御する終了（ＤＯＮＥ）信号を与えるように接続される。アドレスレジスタ１８２ｘの上位部分は、マイクロＲＯＭ回路１４８のｘ出力に接続され、従って、ｘマイクロ命令μｒｘの一部分を受け取ることができる。以下に詳細に述べるように、この接続は、μｒｘがアドレスレジスタ１８２ｘの上位部分にベースアドレス（ＢＡＳＥ  ＡＤＤＲＥＳＳ）を与えることができるようにする。同様に、アドレスレジスタ１８２ｙの上位部分は、マイクロＲＯＭ回路１４８のｙ出力に接続され、従って、ｙマイクロ命令μｒｙの一部分を受け取ることができる。従って、以下に詳細に述べるように、この接続は、μｒｙがアドレスレジスタ１８２ｙの上位部分にベースアドレス（ＢＡＳＥ  ＡＤＤＲＥＳＳ）を与えることができるようにする。
【００７９】
図１２の装置の動作へと進む前に、ＣＯＦ命令又は他の形式の条件依存命令を取り扱うための少なくとも１つの公知技術を説明するのが有益であろう。この説明は、テーブル１のマイクロ命令を用いて行うが、これらのマイクロ命令は、公知技術の理解を容易にするために一例として与えられたものであることを理解されたい。公知技術においては、ＣＯＦ命令は、マイクロＲＯＭ内の第１マイクロ命令をアドレスすることによりその実行段を開始する。ＣＯＦ命令については、その第１の又はその後のマイクロ命令の後に、一連の逐次の条件マイクロ命令ＪＵＭＰ（ＣＪＵＭＰ）に典型的に遭遇し、これらＣＪＵＭＰの各々は種々の条件をテストする。従って、テーブル１を参照し、マイクロＲＯＭのアドレス１に位置した４つの次々のマイクロ命令をアドレスすることによりＣＯＦ命令が開始される場合を考える。
0003736866.tif 000002
公知技術では、条件＃１を満たす場合、マイクロＲＯＭは、アドレス１０を出力し、これは、ＣＯＦ命令の実行を続けるためのそれ自体の中の次の（又は「行き先」）マイクロ命令アドレスである。プロセスの流れは、次いで、位置１０のマイクロ命令へジャンプすることによってシーケンスし、ＣＯＦ命令の機能が完了するまで続く。しかしながら、条件＃１を満足しない場合には、カウンタを使用して、そのとき実行しているマイクロ命令を識別したマイクロアドレスの一部分が増加される。従って、増加された値がアドレス２を識別し、シーケンスはそのアドレスにおけるマイクロ命令をアドレスする。この場合も、次々のマイクロ命令が別の条件、即ち条件＃２をテストする。このプロセスは、条件を満たすか、又は次々の全ての条件をテストしたが全く満足しないかのいずれかまで繰り返される。条件が満たされない場合は、マイクロＲＯＭは、終了（ＤＯＮＥ）信号を発生して、ＣＯＦ命令がその実行サイクルを完了したことを指示し、そして次の命令に対するマイクロＲＯＭへの命令エントリ点をアクセスすることができる。上記の例は、その概念を容易に理解するためにのみ逐次番号を使用したが、条件マイクロ命令は必ずしも整数増加形態でアドレスされるものではないことが意図される。
【００８０】
テーブル１及びそれに対応する説明から、当業者であれば、実行されているＣＯＦ命令（又は他の条件依存命令）に対応する条件が満たされるまでに多数のＣＪＵＭＰが必要であることが容易に明らかであろう。典型的に、条件の各テスト及びテストされるべき次の条件の発生には少なくとも１つのクロックサイクルを費やす。従って、所与のＣＯＦ命令に対し多数の条件が満たされない場合には、そのＣＯＦ命令を実行するのに多数のクロックサイクルが費やされる。しかしながら、本発明の好ましい実施例では、以下に述べるように、このような条件テストは単一のクロックサイクルに減少され、潜在的なクロックサイクルの数を減少し、ひいては、全処理速度を向上するという明確な利点がもたらされる。
【００８１】
公知例について上記したが、図１２の装置の動作を説明する。ＣＯＦ（又は他の条件依存）命令が命令デコーダ（例えば、図５参照）により受け取られると、マイクロＲＯＭ回路１４８から制御信号を発生することによりその実行段が開始される。説明上、この信号は、「マルチウェイ」と識別され、これは、次に続くクロックサイクルに多数の異なる行き先（即ち、ウェイ（経路））へ流れを向けられることを指示するものである。従って、ＸパイプラインにおいてＣＯＦ命令が実行される場合には、マイクロＲＯＭ回路１４８により、ｘマルチウェイ制御信号がｘマイクロ命令の一部分として出力される。このｘマルチウェイ制御信号は、以下に述べるように、ＣＯＦ命令デコード回路１７４を制御する。又、ｘマイクロ命令は、アドレスレジスタ１８２ｘの上位部分へロードされるＢＡＳＥ
ＡＤＤＲＥＳＳ（ベースアドレス）も同時に含んでいる。
【００８２】
ＣＯＦ命令デコード回路１７４は、好ましくは、その入力１７６ａ、１７６ｂ及び１７６ｃにおける好ましい情報を分析して、これら入力に応答してＳＥＣＯＮＤＡＲＹ  ＡＤＤＲＥＳＳ（二次アドレス）を決定する組み合わせロジックを備えている。好ましい実施例では、この二次アドレスは、４ビット信号であり、従って、１６（即ち、２4 ＝１６）までの特定のアドレスを識別することができる。更に、二次アドレスは、マルチウェイ制御信号を発生する前に入力情報に基づいて計算されるのが好ましい。その後、上記のｘマルチウェイ制御信号の例の場合と同様に、マルチウェイ制御信号の発生により、既に決定された二次アドレスがＣＯＦ命令デコード回路１７４からアドレスレジスタ１８２ｘの下位部分へロードされる。
【００８３】
この点において、アドレスレジスタ１８２ｘの下位及び上位の両部分には、アドレス部分がロードされる。これらの部分は、次いで、好ましくは連鎖によって組み合わされて、単一のＤＥＳＴＩＮＡＴＩＯＮ  ＡＤＤＲＥＳＳ（行き先アドレス）を形成する。この行き先アドレスは、ＣＯＦ命令の実行を進めるためのマイクロＲＯＭ回路１４８内の位置である。従って、行き先アドレスはマイクロシーケンサ１４６ｘへ接続され、該マイクロシーケンサは、これを選択してマイクロＲＯＭ回路１４８へ接続し、これにより、ＣＯＦ命令に対する実行段の次のマイクロ命令をアドレスして実行する。
【００８４】
Ｘパイプラインに関連して説明した動作は、Ｙパイプラインにも等しく適用されることに注意されたい。従って、デコード回路１７４が二次アドレスをアドレスレジスタ１８２ｘの下位部分に出力するのと同時に、その同じ二次アドレスがアドレスレジスタ１８２ｙの下位部分に出力される。Ｙパイプラインの場合は、異なるベースアドレスがマイクロＲＯＭ回路１４８から与えられ、この異なるベースアドレスは、Ｘパイプラインについて説明したのと同様にそして同じ目的で二次アドレスと組み合わされる。又、同様に、以下で詳細に述べる終了信号も、デコード回路１７４から両マイクロシーケンサ１４６ｘ及び１４６ｙへ同時に結合される。
【００８５】
それ故、以上のことから、図１２の実施例は、ＣＯＦ又は他の条件依存命令を実行する前に、多数のＣＪＵＭＰ、ひいては、クロックサイクルを使い果たす必要をなくすものであることが理解されよう。特に、好ましい実施例は、単一のクロックサイクルしか必要とせず、これに対し、公知技術は、ＣＯＦ命令を実行するための行き先アドレスを決定するのに多数のクロックサイクルを必要とした。それ故、当然ながら、特に多数のＣＯＦ命令を伴うアプリケーションについてはスループットが向上される。
【００８６】
上記で簡単に述べたように、ＣＯＦ命令デコード回路１７４は、上記のようにアドレスレジスタ１８２ｘに二次アドレスを与えるのではなくて、マイクロシーケンサ１４６ｘを制御する終了信号を発生する。この同じ機能がｙ要素にも適用され、従って、ＣＯＦ命令デコード回路１７４は、アドレスレジスタ１８２ｙに二次アドレスを与えるのではなく、マイクロシーケンサ１４６ｙを制御する終了信号を発生する。この特徴も、公知技術に勝る効果を奏する。
【００８７】
ここでも、本発明の終了信号の特徴を説明する前に、ＣＯＦ又は他の条件依存命令の実行の完了を指示する公知技術を説明するのが有益であろう。上記説明から、公知の方法では、マイクロＲＯＭから終了信号が発生されたことを想起されたい。典型的に、これは、シーケンスにおける他の全ての条件がテストされた後か、又は別のルーチンがそのステップを実行しそしてマイクロＲＯＭをアドレスした後にのみ生じ、マイクロＲＯＭが終了信号を発生する。又、公知技術では、ＣＯＦ命令が完了したという１クロック前の通知を必要とし、従って、ＣＯＦ命令の実行が終了したという指示を与えるのに２つのクロックサイクルが費やされる。これに対して、本発明は、ＣＯＦ命令の完了を指示するためのクロックサイクルの数を減少する。従って、次々の命令がパイプラインを経て進められ、これにより、スループットが向上される。
【００８８】
終了信号の発生についての本発明による特定の実施は、次の通りである。この場合も、ＣＯＦ命令デコード回路１７４は、マイクロＲＯＭ回路１４８をアクセスするように独立して動作する。更に、本発明の実施例では、ＣＯＦ命令デコード回路１７４に種々の入力データが得られるので、ＣＯＦ命令がその実行段を完了したときが決定される。従って、ＣＯＦ命令デコード回路１７４によって二次アドレスではなくてマルチウェイ制御信号が受け取られたときには、その入力の組み合わせがＣＯＦ命令の実行完了を指示する場合に、終了信号が出力される。好ましい実施例では、終了信号は、二次アドレスについて上記したデコード回路１７４からの同じ４ビット出力においてデコードされる。この構成では、独立した出力をもつことなく、同じ導線を二重に使うことができる。しかしながら、当業者であれば、終了信号を通信するためにそれより多いビット又は少ないビットの個別の出力を設けられることが容易に明らかであろう。
【００８９】
ＣＯＦ命令デコード回路１７４からの終了信号は、マイクロシーケンサ回路１４６に接続され、そして該回路が選択する次のマイクロアドレスがＣＯＦ命令に続く命令へのエントリ点マイクロアドレスとなるようにこのマイクロシーケンサ回路１４６を制御する。従って、本発明は、マイクロＲＯＭがこのような状態を指示することを必要とせずにＣＯＦ命令の完了を直ちに指示することが当業者に明らかであろう。従って、上記した公知技術の実施例よりも１つ以上のクロックサイクルが節約される。
【００９０】
以上、本発明を詳細に説明したが、多数の変更や、修正や、代替えがなされ得ることに注意されたい。例えば、特定のマイクロプロセッサアーキテクチャ、命令セット、及び種々の条件を満足することに基づきマイクロＲＯＭ回路１４８内の種々の異なる位置へジャンプする必要性が理解されると、二次アドレス及び終了信号を計算するための種々の技術及びアーキテクチャが当業者に容易に明らかであろう。実際に、デコード回路１７４への入力データは、ＣＯＦ命令セットの変更及び／又はそれにより生じる所望のアドレスを、これら命令及びこれら命令によりテストされる条件に基づいて受け入れるように変更できる。終了信号の形成についても、同じことが当てはまる。更に、上記の種々の例で述べたように、本発明は、ＣＯＦ命令ではなく、条件依存命令へと拡張することができる。これら入力又は命令の導出方法、及び本発明に対する他の変更や置き換えは、本発明の範囲に何ら影響を及ぼすものではない。
【００９１】
６．結論
以上、好ましい実施例を開示したが、本発明の範囲から逸脱せずに種々の変更がなされ得ることが当業者に明らかであろう。このような変更の多数の例については既に述べた。別の例としては、ここではブロック図で示したが、このようなブロック図は、本発明の方法を表すもので、必ずしもその範囲を限定するものではなく、従って、本発明の範囲から逸脱せずに、種々の機能をマイクロプロセッサの他の定められた領域へ移動することができる。更に別の例として、アーキテクチャ及びタイミングは、デュアルパイプライン構成に関するものであったが、本発明の種々の特徴は、単一パイプライン又は他の多パイプラインプロセッサアーキテクチャにも適用できる。本発明は、特許請求の範囲内に包含されるいかなる変更又は別の実施例も網羅するものとする。
【図面の簡単な説明】
【図１】マイクロプロセッサ全体のブロック図である。
【図２】命令パイプライン段の一般化されたブロック図である。
【図３】マイクロプロセッサを用いたプロセッサシステムのブロック図である。
【図４】パイプライン段を通る命令の流れを示すタイミング図である。
【図５】マイクロプロセッサのマイクロシーケンサ及びマイクロＲＯＭを含む簡単なブロック図である。
【図６】マイクロアドレスの発生、及びそれによりマイクロＲＯＭによって出力されるマイクロ命令を示すタイミング図である。
【図７】マイクロ命令を発生しそして次に続くマイクロアドレスを得るための本発明の１つの特徴の好ましいタイミングを示すタイミング図である。
【図８】マイクロ命令を発生してから次に続くマイクロアドレスを得るまでに公知技術で浪費されるクロックサイクルを示したタイミング図である。
【図９】図５のブロック図に、各命令レジスタ及びその各々のプログラマブル論理アレーを含ませた詳細なブロック図である。
【図１０】マイクロＲＯＭ回路に対する好ましい装置を示す図である。
【図１１】マイクロＲＯＭ回路のマイクロＲＯＭアレーのｘ及びｙアクセスを示すタイミング図である。
【図１２】図５の要素の一部分を示す図で、流れ変更（ＣＯＦ）又は他の条件依存命令を促進するための装置を付加した図である。
【図１３】マイクロプロセッサのマイクロシーケンサ及びデコード回路を含む簡単なブロック図である。
【符号の説明】
１０  マイクロプロセッサ
２０  中央処理ユニット（ＣＰＵ）コア
２５  ＡＣコントロールユニット
２６  マイクロコントロールユニット
２８  パイプコントロールユニット
２９  書き込みバッファ
３０  プリフェッチバッファ
３５  プリフェッチャ
４０  分岐処理ユニット（ＢＰＵ）
５０  アドレス変換ユニット（ＡＴＵ）
６０  単一化キャッシュ
６２  タグＲＡＭ
６５  命令ラインキャッシュ
１４６  マイクロシーケンサ回路
１４８  マイクロＲＯＭ回路
１５８  プログラマブル論理アレー
【図１】
0003736866.tif 000003
【図２】
0003736866.tif 000004
【図３】
0003736866.tif 000005
【図４】
0003736866.tif 000006
【図５】
0003736866.tif 000007
【図６】
0003736866.tif 000008
【図７】
0003736866.tif 000009
【図８】
0003736866.tif 000010
【図９】
0003736866.tif 000011
【図１０】
0003736866.tif 000012
【図１１】
0003736866.tif 000013
【図１２】
0003736866.tif 000014
【図１３】
0003736866.tif 000015