JPH0816870B2 - 命令パイプラインをドレーンさせるためのシステム - Google Patents

命令パイプラインをドレーンさせるためのシステム

Info

Publication number
JPH0816870B2
JPH0816870B2 JP4048290A JP4829092A JPH0816870B2 JP H0816870 B2 JPH0816870 B2 JP H0816870B2 JP 4048290 A JP4048290 A JP 4048290A JP 4829092 A JP4829092 A JP 4829092A JP H0816870 B2 JPH0816870 B2 JP H0816870B2
Authority
JP
Japan
Prior art keywords
register
instruction
allocation list
millicode
completion
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
JP4048290A
Other languages
English (en)
Other versions
JPH05173783A (ja
Inventor
ロバート、ジャクソン、バリオンズ、ザ、サード
ロナルド、フランクリン、ヒル
スティーブン、ジョゼフ、ナダス
レイモンド、ジェームズ、ペダーセン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05173783A publication Critical patent/JPH05173783A/ja
Publication of JPH0816870B2 publication Critical patent/JPH0816870B2/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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、命令パイプラインを選
択的にドレーンするためのシステムに関する。
【0002】
【従来の技術およびその課題】IBM システム390アー
キテクチャは、複雑命令セットコンピューティング(CI
SC)アーキテクチャとして分類されている。CISCアーキ
テクチャによる命令は、単純命令(ロード、加算など)
および複雑命令(プログラム呼び出し、アドレス空間パ
ラメータロードなど)の両方を含む。これらのコンピュ
ータシステムがますます強力になるにつれて、命令セッ
トのうちのより大きな割合が、システム性能を高めるた
めにハードウエア実行単位によって実施されるようにな
っている。従来、複雑な機能は、それらを実行するため
の構成ハードウエア実行単位が高価であり、かつ、エラ
ーを生じやすいことから、マイクロコードで実施されて
いる。
【0003】マイクロコードで複雑な機能を実施するこ
とは、追加機能が後から含められるという点で、問題を
決定するための柔軟性、および、拡張性を与える。プロ
セッサの大部分がハードウエア制御されているコンピュ
ータでは、複雑機能を実施するために、専用のマイクロ
プロセッサベースの実行単位がしばしば備えられてい
る。この単位は、割り込み条件の取扱いなどの複雑命令
および複雑機能を実行するためにマイクロプログラムす
ることができる。これらの機能のほとんどは、めったに
発生するものではないが、何十、何百サイクルも実行し
得る。
【0004】上述の機器構成は柔軟性を付与するが、多
数のハードウエア実行単位を備えたコンピュータシステ
ムにマイクロプロセッサ実行単位を含めることは、いく
つかの問題を生じる。通常、マイクロプロセッサの制御
記憶装置からマイクロプロセッサ自体への経路は、それ
がシステムサイクル時間に影響を与え得ることから、極
めて重要である。これは、ある程度、多方向分岐を支援
する必要性の理由もある。多数のハードウエア制御実行
単位を含むコンピュータでは、経路を決定する他の多く
のサイクル時間が存在する。プロセッサ機能の多くはハ
ードウエア実行単位で実施されるので、ハードウエア実
行単位が生成した結果に対してマイクロプロセッサがす
ばやくアクセスできるように、マイクロプロセッサを物
理的にハードウエア実行単位の付近に置くことが望まし
い。他のハードウエア実行単位の付近に、自己のクリテ
ィカルパスの集合を備えたマイクロプロセッサ実行単位
を追加することは、すでに他の多くのクリティカルパス
を有する領域にクリティカルパスを付加することを意味
する。
【0005】複雑機能は、その実行のために多数のサイ
クルを消費し得る。マイクロプロセッサが長時間走行機
能を実行する設計でこれが発生した場合、残りのハード
ウエア実行単位はその長時間走行機能からの結果を待っ
て、遊休状態になるであろう。これは使用可能である実
行単位の非効率的な使用である。それらの複雑機能を可
能な限り迅速に実行することが望ましい。さらに、複雑
機能のマイクロプロセッサによる実施は、ハードウエア
実行単位によって操作されている構成機能へのアクセス
を要する。これは、マイクロプロセッサとハードウエア
実行単位との間にさらに複雑なインタフェースが必要に
なることを意味する。問題は、いかにして設計にマイク
ロプロセッサを含めずに、マイクロプロセッサの柔軟性
を得るかである。
【0006】IBM Tchnical Disclosure Bulletinの“CO
MBINED MACRO/MICRO PROGRAMMACHINE ”(IBM TDB Vo
l. 14 ,No. 1, June 1971, pg.298)と題する論文に一
つの解決策が提起されている。ハードウエアをほとんど
増やさずにマイクロプログラム制御コンピュータの速度
を高めるために、マクロおよびマイクロ命令の両方につ
いて同一の命令形式が採用されている。これにより、
「LOAD REGISTER」、「ORE REGISTER INTO MAIN STRAG
E」などの単純機能の単純なマクロ命令が直接実施でき
るようにハードウエアを設計することが可能になる。例
えば、浮動小数点演算および十進演算を伴う、より複雑
なマクロ命令は、同一のハードウエアによって、やはり
直接に実施可能なマイクロ命令によって解釈される。複
雑なマクロ命令を解釈するために用いられるマイクロ命
令はさらに、ユーザプログラムで(単純なマクロ命令と
して)直接使用される。
【0007】従って、上述のシステムにおいて、ユーザ
プログラムは、一連の単純なマイクロ命令および複雑な
マクロ命令から成る。命令が実施される場合、演算コー
ドを検査することにより、現在の命令が直接実施できる
命令か、解釈されるべき命令かが決定される。この検査
は、マイクロモードまたはマクロモードのいずれかに設
定されているモードスイッチをもたらす。複雑なマクロ
命令の場合、制御記憶装置および命令シーケンサによる
通常のマイクロプログラム制御である解釈単位に分岐が
とられる。
【0008】マイクロ命令および単純なマクロ命令の両
者は同一の形式を有するので、すべてのマクロ命令は命
令実行ハードウエアによって実施される。従って、より
複雑なマクロ命令(解釈単位によってマイクロ命令に解
釈された通り)および、単純なマクロ命令(ユーザプロ
グラムに直接表現されている)は、命令実行単位に転送
される。
【0009】上述のシステムは、柔軟性および処理速度
を向上させるが、多くの未解決の問題を残している。そ
の一つは、構成命令セットに正常にアクセスできない機
能の操作に関連する。多くの場合、マイクロコードがそ
うした機能を操作するための排他的能力を有することが
必要または望ましいであろう。上述のシステムでは、解
釈単位から供給されたマイクロ命令に対する特別なアク
セスを付与するための備えがまったく存在しない。
【0010】上述のシステムで未解決のまま残されてい
る他の問題には、その技法の並行および/またはパイプ
ライン化環境への適用、命令パイプラインを通っている
際の解釈命令の追跡、マクロ命令およびマイクロ命令レ
ジスタの管理、および、解釈ルーチンと、そのルーチン
が実施しようとするマクロ命令との間のオペランドの転
送といった問題がある。
【0011】
【課題を解決するための手段】一実施例において、本発
明は、解釈記憶装置および多数の実行単位を有するパイ
プライン方式プロセッサの文脈で実施される。説明する
システムでは、解釈記憶装置に保持された命令は「ミリ
命令」と称し、解釈実行モードは「ミリモード」と称す
る。制御機能を与えるため、または、性能を改善するた
めに、付加的なハードウエア制御命令(私用ミリモード
専用命令)が追加される。これらの私用ミリモード専用
命令は、構成命令セットを増補する。ミリモードルーチ
ンは、複雑機能を実施するために、私用ミリモード専用
命令と構成命令とを混在させることができる。ここで、
ミリ命令は命令そのものであり、ミリコードはミリ命令
により生みだされたコードである。
【0012】発明人らは、より複雑な構成システム(マ
クロ)命令を解釈するために(上述のミリ命令などの)
低水準命令を使用するシステムにおいて、低水準命令の
処理と、すでにパイプライン内にあるマクロ命令の処理
のオーバラップを可能にすることにより、性能を増強す
ることができることを発見した。従って、上述のシステ
ムでは、ミリ命令およびマクロ命令の両者が、命令パイ
プラインの処理のいずれかの段に同時に存在できるよう
にする機構も備えられる。
【0013】上述のシステムでは、(一定の状況のもと
では)、直列化する、または、オーバラップを禁止して
走行することが有利または必要となることがある。従
来、直列化は、命令パイプライン内の命令が処理され排
出されるという命令パイプラインのドレーンを生じさせ
る命令の検出によって開始することができる。この従来
の直列化方法を上述のシステムに適用する際の問題は、
柔軟ではない点である。例えば、ある状況では、以前の
ミリ命令ではなく、すべての以前のマクロ命令の完了を
待つ必要がある場合があろう。他の状況では、すべての
以前の命令(ミリ命令およびマクロ命令の両方)の完了
を待つ必要があるかもしれない。さらには、格納命令の
実際の完了を待つのではなく、全部の格納要求が例外が
まったく発生しない地点に達するまで待つのが有利とな
る状況もあり得る。
【0014】柔軟性および効率の水準の向上を付与する
ために、上述の実施例はパイプラインをドレーンさせる
ミリ命令を含む。DRAIN INSTRUCTION
PIPELINE(DIP)と称するこの命令は、
(1)いつパイプラインをドレーンするか、および、
(2)どの形式のパイプラインドレーンを実行するかに
関するコーダによる選択性を高める。ここで、マイクロ
プログラムとミリコードとの関係であるが、マイクロプ
ログラムはプログラムであり、ミリコードはマクロ命令
を実行する1組のマイクロプログラムである。ミリコー
ドはシステムに特定の機能を持たせるのに用いられる。
好ましい実施例では、DIP命令は、コーダに対して、
選択事象が発生するまでシステムに解読を停止させるこ
とを可能にする。詳細には、この命令は、以下のいずれ
かの選択事象が発生するまで解読を停止させるオプショ
ンを含む。 ・すべての以前のマクロ命令が完了した ・すべての以前のミリコード命令が完了した ・すべての以前の命令が完了した ・実際の格納が完了していなくても、すべての格納要求
が、例外がまったく発生しない地点に達した ・すべての以前の動作単位からのすべての以前の格納が
完了した(直列化) ・命令バッファを無効とし、その次の順序のマクロ命令
を取り出す 上述の発明の原理は、従来のマイクロコードまたは解釈
形式の実行モードを有するコンピュータだけでなく、明
示的な直列化またはDIP命令を使用または必要とする
いずれのシステムにも適用可能である。
【0015】
【実施例】a.レジスタ管理およびパイプラインリセッ
ト用機能を有するミリコードシステム 図1について説明する。IBM 390システムアーキテク
チャに従ったコンピュータプロセッサに関する実施例が
図示されている。こうしたプロセッサの従来の構成要素
のさらに詳細な図は、例えば、John S. Liptayによって
取得され、本発明の同一の譲受人に譲渡された米国特許
第4,901,233号にも見られる。米国特許第4,
901,233号は、参照により、全体として、以下に
完全に記載されたものとして一体をなす。このシステム
390環境は、例として使用されるが、本発明はまた他
のIBM および非IBM アーキテクチャ(例えば、IBM シス
テム370)にも同様に容易に適用可能であることを理
解すべきである。
【0016】従来と同様、図1のシステムは、システム
記憶装置(メインメモリ)102およびキャッシュメモ
リサブシステム(キャッシュ)104を含む。システム
記憶装置102は、プロセッサが実行するシステム39
0用命令および、それらの命令が操作するデータを含ん
でいる。また、ミリコードによって使用される(かつ他
の用途も有する)システム領域(プログラムアドレス指
定可能記憶域外のメモリ)も有する。キャッシュメモリ
サブシステム104は、キャッシュ制御論理を含む従来
のデータ/命令結合型キャッシュである(分割キャッシ
ュも代替として使用できよう)。キャッシュ104は、
プロセッサが実行するシステム390用命令およびそれ
らの命令が操作するデータの複写を含む。
【0017】命令バッファ105は、キャッシュメモリ
サブシステム104およびミリコードアレイ108(以
下で詳述する)から命令を受け取るために接続されてい
る。命令バッファ105は、命令レジスタ106にロー
ドされる命令のソースである。命令レジスタ106は、
デコーダ110の入力レジスタである。命令は、構文解
析され、命令レジスタ(I-REGS)に入れられる。デコー
ダ110は、命令レジスタの内容を読み出し、命令を解
読し(または動作例外を生じさせ)、1以上のハードウ
エア実行構成要素112での実行について命令をスケジ
ュールする。デコーダ110とキャッシュサブシステム
104との間には信号線が備わっている。デコーダ11
0は、これらの信号線を使用してメモリの取り出しおよ
び格納動作の進行を追跡する。
【0018】ミリコードアレイ108は、ミリルーチン
の集合を有している。各ミリルーチンは、1以上の複雑
機能または複雑命令を実施する。これらのルーチンに含
まれたミリ命令は、通常のシステム390用命令と私用
ミリモード専用命令の混成から成る。この私用命令は、
ミリコードルーチンによって必要とされる制御機能を付
与する。ミリコードルーチンの集合は、プログラムアド
レス指定可能記憶装置の外部に常駐する。
【0019】命令取り出し制御論理(I-FETCH )107
は、キャッシュ104またはミリコードアレイ108の
いずれかから命令を取り出す制御論理である。命令取り
出し制御論理は、(キャッシュからシステム390用命
令を取り出すか、または、ミリコードアレイからミリ命
令を取り出すかのいずれであるかを知らせるために)ミ
リモード検出論理120から、また、(割り込みに応答
してどのミリコード入口アドレスを生成するかを知らせ
るために)割り込み優先順位論理からの制御入力を有す
る。命令取り出し制御論理はまた、本明細書の“Drain
InstructionPipeline”(「命令パイプラインのドレー
ン」)で説明する状況のもとで、取り出しを停止および
再開するために使用される解読論理110からの制御入
力も有する。
【0020】ハードウエア実行構成要素112は、命令
が実際に実行される部分である。本発明に従えば、実行
単位の少なくとも1以上は、私用ミリ命令を実行するた
めのハードウエア(MEX)114を含む。ミリ命令を実行
する単数または複数の実行単位は、ミリコードによって
用いられる局所作業記憶装置(LWS)116にアクセスで
きる。局所作業記憶装置116は、構成機能の外部で結
果を保持するための手段をミリコードに付与する。
【0021】各ハードウエア実行構成要素112は、レ
ジスタプール118にアクセスできる。レジスタプール
(RP)118は、各種構成の内部レジスタの内容を保持
するためにプロセッサで実施される物理レジスタの読み
出し/書き込みスタックである。本発明の目的から、こ
れらは汎用レジスタ(GRP)およびミリレジスタ(MR)を
含むが、バックアップを保証するのに十分な頻度で変化
するいずれのレジスタ(アクセスレジスタ、一定の制御
レジスタなど)も含めることができる。
【0022】レジスタプール118は、多数の形式によ
って実施できる。例えば、各実行単位は、レジスタプー
ルの各自の同一の複写を持つことができる。あるいはま
た、実行単位は、単一の共通レジスタプールを共有する
ことができる。いずれの場合も、システムは、汎用レジ
スタおよびミリレジスタが情報をどのように交換するか
を規定する制御(以下に詳述する)を含む。
【0023】本発明に従えば、図1のシステムはまた、
ミリモード検出論理120を含む。ミリモード検出論理
120は、命令レジスタ106の出力を受信するように
接続されており、デコーダ110、命令取り出し制御論
理107およびレジスタ管理システム130に接続され
た出力を有する。ミリモード検出論理120は、解読さ
れているシステム390用命令がミリモードで解釈され
るべき形式である場合を認識する。その場合、ミリモー
ド検出論理120は、ミリモードアレイ108の入口点
アドレスを生成し、そのアドレスを命令取り出し制御論
理107に渡す。検出論理120はまた、レジスタ管理
システム130にも知らせ、デコーダをミリモードにす
る(それによりデコーダはミリ命令を解読することが可
能になる)。
【0024】ミリモード検出論理120はまた、ミリモ
ードからシステム390モードへの遷移の必要性を認識
し、デコーダに、独自の(私用)ミリ命令の認識を停止
させる。システム390モードである場合、デコーダは
私用ミリモード専用命令を認識せず、それらの命令を認
めた場合、例外信号を生成する。
【0025】図1のシステムはまた、完了論理122を
含む。完了論理122は、命令の効果がアーキテクチャ
上可視となる部分である。以下に詳述するように、完了
論理122は、それにミリモードであることを知らせる
論理を含んでいる。完了論理122とデコーダ110と
の間には信号線が備わっている。デコーダ110は、こ
れらの信号線を使用して命令の完了を追跡する。
【0026】図1のシステムは、概念的順序(すなわ
ち、命令がプログラムによる実行に提示されるように論
理的に意図された順序)から外れて実行できる形式のも
のである。この形式のシステムでは、命令は、順序外れ
で実行されても、概念的順序で完了する。命令がうまく
解読された後、命令識別子(IID)が割り当てられる。命
令識別子は、実行中の命令および完了を追跡するために
タグとして使用される。命令識別子は、完了論理が正し
い概念的順序での完了を判定し保証できるように、順次
的に(例えば、番号32または64の循環で)割り当て
られる。さらに、ミリコードビット(以下で詳述する)
が、ミリコードで発行されるすべての命令識別子につい
て設定される。
【0027】プログラム状態語(PSW)124は、システ
ム390のプログラムの実行を制御する。同様に、シス
テムは、ミリルーチンの実行を制御するミリプログラム
状態語126を含む。これは、ミリ状態コードおよびミ
リプログラムカウンタを付与する。実行単位112およ
び完了論理122の両者は、プログラム状態語およびミ
リプログラム状態語との間での読み書きを行うために接
続されている。従って、いずれの所与の時点でも、実行
単位または完了論理は、プログラム状態語および/また
はミリプログラム状態語の適当な一方を読み出しまたは
更新することができる。
【0028】システムはまた、システム390モード割
り込みに優先順位を付け、ミリモードを認識する、割り
込み優先順位論理128を含む。
【0029】図1のシステムはまた、レジスタ管理シス
テム(RMS)130を含む。レジスタ管理システムは、レ
ジスタプール118のレジスタの割当てを管理し、ミリ
レジスタと汎用レジスタとの間のデータ転送を行う。レ
ジスタ管理システム130は、解読レジスタ割当てリス
ト(DRAL)132、完了レジスタ割当てリスト(CRAL)
134、ミリコード解読レジスタ割当てリスト(MDRAL)
136、ミリコード完了レジスタ割当てリスト(MCRAL)
138、FREE STACK 140、バックアップレジスタ割
当てリスト142、および、汎用レジスタ更新論理14
4および146を含む。レジスタ割当てリストのそれぞ
れは、接続されたレジスタ割当てリスト(および汎用レ
ジスタ更新論理を介して結合されたレジスタ割当てリス
ト)との間でのデータ転送を可能にする制御論理(図示
せず)に接続されていることが理解できよう。
【0030】解読レジスタ割当てリスト(DRAL)132
は、汎用レジスタ(GPR)の物理レジスタ識別子への現在
のマッピングを定義するリストである。解読レジスタ割
当てリスト132は各種方法で編成することができる。
好ましくは、解読レジスタ割当てリストは、各構成汎用
レジスタの一つの位置を有し、その位置は、その汎用レ
ジスタへのデータを受信するために最新時に割り当てら
れた、レジスタプール118内の物理レジスタの識別番
号(ID)を含む。
【0031】完了レジスタ割当てリスト(CRAL)1
34は、解読レジスタ割当てリスト132と同じ基本構
造を有する。完了レジスタ割当てリスト134は、接続
されたレジスタ割当てリスト間のデータの転送を可能に
する制御論理を制御するための割当てられたレジスタで
ある。完了レジスタ割当てリスト134は、解読レジス
タ割当てリスト132と同じ形式の情報を記録するが、
解読時間に対して完了時間を参照する。完了レジスタ割
当てリストの内容は、汎用レジスタの構成状態を表現
し、パイプラインリセット時に解読レジスタ割当てリス
トを初期化するために使用される。
【0032】ミリコード解読レジスタ割当てリスト(MD
RAL )136は、解読レジスタ割当てリスト132とデ
ータを交換するために接続されている。ミリコード解読
レジスタ割当てリストは、ミリレジスタ(ミリレジスタ
は、ミリモードにある間は汎用レジスタと同様である)
の物理レジスタ識別子への現在のマッピングを定義する
リストである。ミリコード解読レジスタ割当てリスト
は、好ましくは解読レジスタ割当てリストと同様に編成
されており、ミリコード解読レジスタ割当てリストの各
位置は、構成ミリレジスタの異なる一つに対応し、当該
ミリレジスタのデータを受信するために最新時に割り当
てられた、レジスタプール118内の物理レジスタの識
別番号(ID)を含む。
【0033】レジスタプール118は、解読レジスタ割
当てリスト132およびミリコード解読レジスタ割当て
リスト136からの読み出しにより得られた物理レジス
タ識別子によってアドレス指定される。各識別子は、レ
ジスタプール118の一意のレジスタをアドレス指定す
る。
【0034】ミリコード完了レジスタ割当てリスト(M
CRAL)138は、ミリコードビット(MCB)が付
加されているが、完了レジスタ割当てリスト132と同
じ基本構造を有する。ミリコード完了レジスタ割当てリ
スト138は、接続されたレジスタ割当てリスト間のデ
ータの転送を可能にする制御論理を制御するための割当
てられたレジスタである。ミリコード完了レジスタ割当
てリストの項目の形式は、図2に例示している。解読レ
ジスタ割当てリスト、完了レジスタ割当てリストおよび
ミリコード解読レジスタ割当てリストの場合と同様、ミ
リコード完了レジスタ割当てリストは、各構成(論理)
レジスタについて1項目を有する。各項目は、物理レジ
スタ識別子202を保持するための第1のフィールド、
および、ミリコードビット204を保持するための第2
のフィールドを含む。ミリコードビット204は、FR
EE STACK 140の維持に際して使用され、以
下で詳述する。
【0035】ミリコード完了レジスタ割当てリスト13
8は、完了レジスタ割当てリスト134が解読レジスタ
割当てリスト132に接続されている方法と同様の方法
で、ミリコード解読レジスタ割当てリスト136に接続
されている。ミリコード完了レジスタ割当てリストは、
ミリコード解読レジスタ割当てリストと同じ形式の情報
を記録するが、ミリ命令完了時間を参照する。ミリコー
ド完了レジスタ割当てリスト138の内容は、ミリレジ
スタの構成状態を表現し、パイプラインリセット時にミ
リコード解読レジスタ割当てリストを初期化するために
使用される。
【0036】バックアップレジスタ割当てリスト(BRA
L)142は、それぞれ、完了レジスタ割当てリスト1
32と同じ基本構造を有する。バックアップレジスタ割
当てリスト142は、動作の特定時点で解読レジスタ割
当てリスト128の全内容を受信するために接続されて
いる。レジスタ管理システムは、システムが分岐の解決
を待っていることが許されるならば、バックアップレジ
スタ割当てリストがまったくなくても作業できるであろ
う。1〜3のバックアップレジスタ割当てリストの使用
により、待機することなく、それぞれ1〜3の条件分岐
処理が可能になる。例えば、バックアップレジスタ割当
てリスト142は、分岐がとられるべきかどうかに関す
る推測が間違っているといけないので、解読レジスタ割
当てリストの内容を退避するために条件分岐が生じた場
合に使用される。ミリコード解読レジスタ割当てリスト
はまた、バックアップレジスタ割当てリスト142に接
続することもでき、バックアップレジスタ割当てリスト
142を解読レジスタ割当てリスト128と共有するこ
とができる。あるいはまた、システムは、バックアップ
レジスタ割当てリスト142と同様の方法で動作する1
以上のミリコードバックアップレジスタ割当てリスト
(MBRAL)を備えることができる。バックアップレジスタ
割当てリスト142の動作は、米国特許第4,901,
233号に詳述されている。
【0037】FREE STACK 140は、現在未使用であ
り、解読中の命令に割り当てられるために使用可能な物
理レジスタ識別子のリストである。これは、サイクル時
間の理由から「後入れ先出しスタック」として実施でき
るが、機能的に等価である他の実施例も代わりに使用で
きる。完了レジスタ割当てリストが完了した命令によっ
て更新されると、完了レジスタ割当てリストの置換され
る物理レジスタ識別子は、実行中の命令ストリームによ
ってもはや必要とされず、従って、FREE STACK140に
戻され再割当てされることができる。
【0038】図1のレジスタ管理システム130はま
た、2の個別の汎用レジスタ更新論理144および14
6を含む。第1の汎用レジスタ更新論理144は、ミリ
コード解読レジスタ割当てリスト136から解読レジス
タ割当てリスト132への被マスク複写を実行するため
に接続されている。この被マスク複写機能は、MEND命令
の認識に応答して、ミリモード検出論理によって開始さ
れる。第2の汎用レジスタ更新論理146は、ミリコー
ド完了レジスタ割当てリスト138から完了レジスタ割
当てリスト134への被マスク複写を実行するために接
続されている。第2の汎用レジスタ更新論理の被マスク
複写機能は、MEND命令の完了に応答して、完了論理12
2によって開始される。
【0039】更新論理144および146のそれぞれ
は、ミリレジスタの内容が対応する汎用レジスタに転送
されることを指示するために(実行単位によるミリコー
ド化マスク操作命令の実行によって)ミリコードモード
に選択的に設定される、(汎用レジスタ当たり1の)1
6ビットマスクを含む。両マスクは、同一のミリ命令に
よって設定されるので、その内容も同一である。第1の
汎用レジスタ更新論理144からのレジスタマスク14
7によるミリコード解読レジスタ割当てリストから解読
レジスタ割当てリストの被マスク更新の例は、図5に示
す。図5から明らかなように、マスク147で「1」に
よって指定された汎用レジスタの位置だけが、MEND
命令が検出論理120によって検出された場合に、対応
するミリコード解読レジスタ割当てリストから物理レジ
スタ識別子をロードされる。第2の更新論理マスクは、
MEND命令の完了に応答して、ミリコード解読レジス
タ割当てリストおよび解読レジスタ割当てリストで同様
に動作する。
【0040】デコーダ110は、命令をシステム390
モードで処理する場合、各命令によって読み出されるお
よび/または修正されるべき論理レジスタの集合を判定
するために、命令を順次検査する。各物理レジスタが修
正される場合、新しい物理レジスタがFREE STACK 14
0から選択され、解読レジスタ割当てリスト132は論
理レジスタの結果を受け取るために物理レジスタの割当
てを反映するように更新される。各レジスタが読み出さ
れる場合、解読レジスタ割当てリスト132は、命令に
よって指定されたレジスタ番号にいずれの物理レジスタ
が対応するかを判定するためにアクセスされる。このよ
うにして、汎用レジスタを使用する各命令は、その汎用
レジスタを修正するために最新命令によって割り当てら
れている物理レジスタを見つけるために解読レジスタ割
当てリストによって指示される。割り当てられた物理レ
ジスタの識別子は、命令とともに実行単位112に渡さ
れる。
【0041】システム390モードとミリコードモード
間の遷移は、以下に図3および図4によって説明する。
初めに、プロセッサがシステム390用命令を解読し完
了していることを前提とする。
【0042】ミリモードは、解読されているシステム3
90用命令がミリコードによって実施されるべきである
ことをミリモード検出論理120が認識した場合に使用
可能となる(ブロック302)。この認識に応答して、
検出論理120は、デコーダ110、命令取り出し制御
論理107およびレジスタ管理システム130に送信す
る。検出論理120からのミリモード認識信号に応答し
て、デコーダ110はシステム390モードの解読を停
止し、レジスタ管理システム130は解読レジスタ割当
てリストを凍結した後、解読レジスタ割当てリストの内
容をミリコード解読レジスタ割当てリストに複写し、ミ
リモード検出論理120はミリコードアレイ入口点アド
レス(命令取り出し制御論理107に渡される)を生成
し、命令取り出し制御論理107は取り出しをキャッシ
ュ104からミリコードアレイ108に切り換える。ま
た、複写後、レジスタ管理システムは、ミリコード解読
レジスタ割当てリストに切り換え、それを、以降のレジ
スタ割当てが記録されるリストとして起動させる(ブロ
ック304)。
【0043】(ミリモード検出論理120によって生成
された)入口点アドレスは、ミリコードアレイ108を
アドレス指定するために命令取り出し制御論理107に
よって使用され、初期ミリ命令がミリコードアレイ10
8から取り出される(ブロック306)。これらのミリ
命令は(命令バッファ105を介して)命令レジスタ1
06に送られ、そこでデコーダ110がそれらの命令を
解読し、適切なハードウエア実行単位112での実行の
ためにそれらの命令をスケジュールする(ブロック30
8)。
【0044】プロセッサがミリモードに入ると、プロセ
ッサは、ミリモードへ入らせた命令に先立って概念的に
すでにパイプラインにあるシステム390用命令を実行
し(ブロック310)、完了させる(ブロック31
2)。プロセッサがシステム390モード用命令を完了
させると同時に、プロセッサは、完了レジスタ割当てリ
ストの適切な論理レジスタ位置を、その完了した命令の
物理レジスタにより更新し、それまで割り当てられてい
た物理レジスタをFREE STACK 140に戻す。同時に、
プロセッサはミリモードへ入らせたシステム390用機
能を実施するミリ命令を解読し(ブロック308)、そ
れを実行する(ブロック314)。
【0045】いずれかの時点で、ミリモードへ入らせた
命令の直前のシステム390用命令は、完了ハードウエ
ア118によって完了される(この条件はブロック31
6で試験される)。その後にのみ、プロセッサはミリ命
令を完了させ始める(ブロック318)。そして、プロ
セッサは、ミリ命令の解読、実行および完了を継続す
る。
【0046】ミリモードの最初のミリ命令の完了が完了
論理122によって検出されると、完了論理は、最後の
システム390用命令の完了の状態を反映するために完
了レジスタ割当てリスト134を凍結させる。完了論理
はその後、(完了レジスタ割当てリストをミリコード完
了レジスタ割当てリストに複写することにより)ミリコ
ード完了レジスタ割当てリストを完了レジスタ割当てリ
ストの内容で初期化するために、レジスタ管理システム
130に送信し、ミリコード完了レジスタ割当てリスト
138をミリ命令の完了によって順次更新させる(ブロ
ック320)。
【0047】システム390モードからミリモードへの
遷移が完了すると(かつ、すでにパイプラインにある最
後のシステム390用命令が完了すると)、プロセッサ
は以下の動作を実行する。
【0048】・ミリ命令は解読および実行する (ミリコード解読レジスタ割当てリストを更新する) ・ミリ命令は実行および完了する (ミリコード完了レジスタ割当てリストを更新する) ミリ命令が完了すると、ミリコード完了レジスタ割当て
リストのミリコードビットがFREE STACK 140へのレ
ジスタ識別子の転送を制御するために使用される。
【0049】レジスタ識別子は、通常、命令が完了し、
物理−論理レジスタマッピングが変更されると、完了レ
ジスタ割当てリスト134によってFREE STACK 140
に戻される(ブロック318)。ミリコード完了レジス
タ割当てリスト138の初期状態は、最初のミリ命令が
完了すると、完了レジスタ割当てリスト134に等しく
設定される(ブロック320)。完了レジスタ割当てリ
ストマッピングは、MEND命令が完了するまで保存され
る。その後にのみ、完了レジスタ割当てリストは、汎用
レジスタ更新論理および、完了レジスタ割当てリストの
修正によって更新されたFREE STACK 140に従って変
更される。ミリ命令が完了すると、ミリコード完了レジ
スタ割当てリストは更新され、ミリモード物理−論理レ
ジスタマッピングは変更される(ブロック322)。
【0050】ミリコード完了レジスタ割当てリストがど
のように管理されるかを説明する。ミリコード完了レジ
スタ割当てリストがそれに対応する完了レジスタ割当て
リストと同様に動作するとすれば、完了ミリ命令は、ミ
リコード完了レジスタ割当てリストを更新し、古い内容
を FREE STACK 140に戻すであろう。しかしながら、
これは、完了レジスタ割当てリストマッピングを同様に
もたらすであろう。なぜなら、ミリコード完了レジスタ
割当てリストが完了レジスタ割当てリストの状態に初期
化され、完了レジスタ割当てリストの識別子をシステム
によって再使用されるために戻されるはずだからであ
る。従って、正しい完了レジスタ割当てリストマッピン
グは保存されないであろう。
【0051】ミリコード完了レジスタ割当てリストの更
新がMEND命令の完了まで識別子をFREE STACK にまった
く戻さないとすれば、一部のレジスタ識別子は永久に失
われるであろう。例えば、2のミリ命令がMENDの完了前
に同一レジスタを修正した場合、第1の修正を受信する
ために割り当てられたレジスタ識別子は、そのレジスタ
に対して第2の修正を行った命令の完了時に FREE STAC
K に戻されなければならない。
【0052】ミリコードビット(MCB)204は、ME
ND前に FREE STACK の更新を制御するために、ミリコー
ド完了レジスタ割当てリストに付加される。(各ミリコ
ード完了レジスタ割当てリストの)ミリコードビット
は、ミリルーチンの最初のミリ命令の完了時にゼロに初
期化される(ブロック320)。ミリコード完了レジス
タ割当てリストが完了ミリ命令によって更新されると、
ミリコードビットが検査される(ブロック322)。ミ
リコードビットがゼロであれば、 FREE STACK に対する
更新はいっさい行われず、ミリコードビットは1に設定
される。ミリコード完了レジスタ割当てリストの更新が
行われた際にミリコードビットが1であれば、 FREE ST
ACK はミリコード完了レジスタ割当てリストの古い内容
によって更新される。このようにして、完了レジスタ割
当てリストはMENDまで保存され、ミリコード用にだけ使
用されていたレジスタは FREE STACK に返される。
【0053】MEND時に、汎用レジスタ更新論理によって
完了レジスタ割当てリストに設定されておらず、かつ、
それらのミリコードビットが1である、ミリコード完了
レジスタ割当てリストの全項目は、それらが同じくミリ
ルーチンによって要求されていただけの識別子であるた
めに、 FREE STACK に送られる。
【0054】最後に、検出論理120がミリコードEN
D(MEND)ミリ命令を認識する(ブロック321お
よび402)。MEND命令はミリコード完了命令と同
一であり、この取扱いおよびミリモードからシステム3
90モードへの遷移は、図4に例示する。
【0055】検出論理120がMENDミリ命令を検出する
と、プロセッサはミリコードアレイからのミリ命令の取
り出しを中止させられる。さらに、MEND命令が検出され
ると、検出論理は、デコーダをシステム390モードに
させ、プロセッサにシステム390用命令の取り出しを
開始させる。汎用レジスタが(汎用レジスタマスクによ
って指示された)ミリコード化機能によって更新される
べき場合、汎用レジスタマスクに対応する解読レジスタ
割当てリストの内容は、汎用レジスタマスクに対応する
ミリコード解読レジスタ割当てリストの内容から設定さ
れる。次に、レジスタ管理システムは、レジスタ割当て
を記録するためにミリコード解読レジスタ割当てリスト
から解読レジスタ割当てリストに切り換える(ブロック
406)。その後、デコーダ110は、システム390
用命令を解読し始める(ブロック408)。
【0056】ミリコードからシステム390用命令への
遷移が行われると、プロセッサは以下の動作を並行して
実行する。
【0057】・システム390用命令は解読および実行
し、それにより解読レジスタ割当てリストを更新する
(ブロック408および410)。
【0058】・すでにパイプラインにあるミリ命令は実
行および完了し、それによりミリコード解読レジスタ割
当てリストを更新する(ブロック412および41
4)。
【0059】(ブロック416で検出された)MENDミリ
命令の完了により、プロセッサ完了論理はシステム39
0用命令の完了を開始する(ブロック418)。汎用レ
ジスタが(汎用レジスタマスクによって指示された)ミ
リコード化機能によって更新されるべき場合、汎用レジ
スタマスクに対応する完了レジスタ割当てリストの内容
は、汎用レジスタマスクに対応するミリコード完了レジ
スタ割当てリストの内容から設定される(ブロック41
8)。その後、完了論理はシステム390用命令を完了
し始め(ブロック420)、それにより完了レジスタ割
当てリストを更新させる。
【0060】プロセッサかミリモードに入ることができ
る別の方法は、割り込みに対する応答によるものであ
る。完了論理が割り込みを検出すると、割り込み優先順
位論理128は、割り込みがサービスされるべきかを判
定し、命令取り出し制御論理に送信する。この信号によ
りデコーダはミリモードを開始することになる。割り込
み条件の認識は、プロセッサに対して、次の割り込み可
能時点でシステム390モードの実行を停止させる。割
り込み優先順位論理128はまた、ミリコードアレイ1
08をアドレス指定する入口点アドレスを生成するため
にミリモード検出論理によって使用される制御入力を生
成する。入口点アドレスは、ミリコードアレイ108を
アドレス指定するために使用され、それらのミリ命令は
ミリコードアレイ108から取り出される。これらのミ
リ命令は、命令レジスタ106に送られ、そこでデコー
ダ110がそれらの命令を解読し、適切なハードウエア
実行単位112での実行のために命令をスケジュールす
る。
【0061】プロセッサは、割り込みのミリルーチンの
解読、実行および完了を進める。最終的に、デコーダ1
10がミリコードEND(MEND)ミリ命令を認識する。これ
により、デコーダ110はミリモードの解読を終了す
る。
【0062】それらがサービスを要求する付加的な割り
込みであるか否かに応じて、デコーダハードウエアは、
割り込み処理を再実行するか、または、キャッシュ10
4からのシステム390用命令の解読に戻る。
【0063】システム390用命令を解読している際、
解読レジスタ割当てリストが更新され、システム390
用命令が完了すると、完了レジスタ割当てリストが更新
される。同様にして、ミリ命令を解読している際には、
ミリコード解読レジスタ割当てリストが更新され、ミリ
命令が完了すると、ミリコード完了レジスタ割当てリス
トが更新される。例えば、ミリコード化命令によってミ
リコードモードに入ると、ミリコードモードのセットア
ップの一部には、解読レジスタ割当てリストの内容のミ
リコード解読レジスタ割当てリストへの複写を含む(別
の実施例では、解読レジスタ割当てリストのミリコード
解読レジスタ割当てリストへの複写が必要ない場合に
は、ミリコード解読レジスタ割当てリストに通常通りに
解読レジスタ割当てリストを追跡させることになる)。
デコーダ110は、論理レジスタと物理レジスタの関係
を記録するためにミリコード解読レジスタ割当てリスト
の使用に切り換える。デコーダ110がミリコード解読
レジスタ割当てリストに切り換えると、解読レジスタ割
当てリストは凍結され、それによってミリコードモード
に入る直前のレジスタ割当てを反映する。パイプライン
中の概念的に以前のシステム390用命令の全部が完了
すると、完了レジスタ割当てリストが同様にその状態を
反映する。MEND命令の解読時に、システム390用命令
ストリームによる以降の使用のために解読レジスタ割当
てリストを選択的に更新するために、汎用レジスタマス
クが使用される。
【0064】同様の動作は、完了論理においても生じ
る。ミリコード命令がミリモードで完了していると判定
されると、完了論理はミリコード完了レジスタ割当てリ
ストに切り換え、完了レジスタ割当てリストを停止する
(実際には完了レジスタ割当てリストの内容を凍結す
る)。MEND命令の完了時には、汎用レジスタマスクが以
降のシステム390用命令の使用のために完了レジスタ
割当てリストを選択的に更新するために使用される。
【0065】ミリコードによって使用可能な物理レジス
タの数は、レジスタアレイ(レジスタアレイは例えば、
合計128の物理レジスタを含むことができる)の合計
数よりも16少ない。これは、元の汎用レジスタを表現
する物理レジスタが、ミリルーチンの終了が生じ、か
つ、ミリコードモードが(ミリ命令MEND命令の実行によ
って)終了するまで保存されるからである。つまり、ミ
リルーチンは、値が破壊されないので、元の汎用レジス
タの値にアクセスできるということである。
【0066】この形式のコンピュータの重要な機能は、
パイプライン制御の高速リセット(パイプラインリセッ
ト)である。パイプラインリセットは、まだ完了してい
ない命令に関係するプロセッサの全アクティビティを取
り消すという行為である。パイプラインリセット中、構
成機能に対して永久的修正を行わなかったすべてのプロ
セスは取り消され、実行はいずれかの既知の時点で再開
される。これは、そうしなければシステムに損傷を与え
たかもしれないような、間欠的ハードウエア誤動作、共
用記憶装置のマルチプロセッサ動作のある種の徴候とい
った、各種状態からの回復にとって有益である。
【0067】コンピュータの状態は、命令完了時に観察
された機能の状態によって判定される。完了時にのみ、
構成機能は取消不可能に修正される。その後、パイプラ
インをリセットするプロセスは、完了制御の状態を反映
するために解読制御を設定する、および、最新時完了命
令直後の命令から解読を再開することを含む。現在の説
明に関係する機能は、レジスタ割当て、すなわち、解読
レジスタ割当てリスト、ミリコード解読レジスタ割当て
リスト、完了レジスタ割当てリストおよびミリコード完
了レジスタ割当てリストの制御に直接関与するものであ
る。
【0068】どのような理由であれ、パイプラインがリ
セットされるべきであると判定された場合、解読レジス
タ割当てリストおよびミリコード解読レジスタ割当てリ
ストは、完了レジスタ割当てリストおよびミリコード完
了レジスタ割当てリストの状態を反映するために修正さ
れる必要がある。完了レジスタ割当てリストおよびミリ
コード完了レジスタ割当てリストは、解読および完了が
コンピュータの同一状態を反映していることをリセット
条件が示しているために、未修正のままとされる場合も
ある。
【0069】これらの機能の修正は、表Iに要約されて
いる。考慮しなければならない条件は、以下に列挙して
ある。パイプラインがあり得る各段階を記述するために
用いられる記法は、xyzである。この場合、xはデコ
ーダの状態を、yは中間パイプラインの状態を、zは命
令完了論理の状態を表す。それぞれ、システム390状
態(3)、ミリモード状態(M)または「無関係」状態
(X)にあり得る。 1.デコーダがシステム390モード、システム390
モードで完了(3X3) 2.デコーダがミリモード、システム390モードで完
了(MX3) 3.デコーダがミリモード、ミリモードで完了(MXM) 4.デコーダがシステム390モード、ミリモードで完
了(3XM) 3M3(デコーダがシステム390モード、パイプライ
ンにミリモード命令があり、システム390モードで完
了)といった他の変更例は、修正される機能が解読また
は完了に存在するだけであるので、考慮する必要はな
い。唯一の配慮は、完了領域でのレジスタの状態であ
り、それは完了レジスタ割当てリストのミリコードビッ
トの維持によって補われる。
【0070】パイプラインリセット時に、解読レジスタ
割当てリストおよびミリコード解読レジスタ割当てリス
トは、システム390命令またはミリ命令のいずれが解
読または完了されるかに応じて異なって修正される。例
えば、表Iに例示したように、ミリコード解読レジスタ
割当てリストは、システム390動作が解読または完了
されていた場合(3X3)には完了レジスタ割当てリストに
リセットされ、ミリコード動作が解読または完了されて
いた場合(MXM)にはミリコード完了レジスタ割当てリス
トにリセットされる。実際、「無関係状態」(Xで指
示)を、解読レジスタ割当てリストリセット行について
はミリコード完了レジスタ割当てリストで、また、完了
レジスタ割当てリストリセット行については「=」で置
き換えた場合、以下のことが当てはまる。すなわち、解
読レジスタ割当てリストおよびミリコード解読レジスタ
割当てリストは、完了論理の「アクティブな」完了レジ
スタ割当てリスト(システム390モードについては完
了レジスタ割当てリスト、ミリモードについてはミリコ
ード完了レジスタ割当てリスト)によって修正され、完
了レジスタ割当てリストおよびミリコード完了レジスタ
割当てリストは未修正のままとされる。
【0071】使用中であるが、まだ完了レジスタ割当て
リストまたはミリコード完了レジスタ割当てリストに反
映されていないレジスタは、パイプラインリセット中に
FREE STACK に戻される。この機能は、その通常の非ミ
リコードモードパイプラインリセット機能の一部として
完了論理114によって実行される。
【0072】 表 1 パイプラインリセット により修正される機能 3X3 MX3 MXM 3XM DRAL CRAL CRAL X X MDRAL CRAL CRAL MCRAL MCRAL CRAL = = X X MCRAL = = = = 本発明は、ミリコードルーチンの開始および終了双方に
おいてミリコードの実行とシステム390用命令のオー
バラップを可能にする。このオーバラップは、より優れ
た全システム性能を付与する。本発明はまた、ミリコー
ドへの遷移時、ミリコード中、および、ミリコードから
の遷移時に、プロセッサの構成状態を保存するための機
構を付与する。さらに本発明は、ミリコード時、また
は、ミリコードとの間の遷移時における、パイプライン
再試行機構を付与する。さらに、システム390モード
用のパイプライン再試行機構も付与する。 b.レジスタオペランド用レジスタ ミリルーチンは、システム390用命令のオペランドに
アクセスし、ミリルーチンの実行結果をシステム390
の汎用レジスタ(GPR)に転送するために、汎用レジスタ
に読み書きできるアクセス権を持っていなければならな
い。割り込み可能命令の特定の例は、何らかの制御およ
び性能に関する問題を生じる。割り込み可能命令は、
(動作単位の終了時に)周期的に休止し、サービスを待
っている未完の割り込みが存在する場合にはその実行を
停止させる。
【0073】割り込み可能命令がミリコードによって実
施され得るコンピュータでは、動作単位はミリルーチン
内のループによって構成される。このループは、システ
ム390の機能に動作単位の終わりを反映するように正
しく更新させる。その後ループは、それが割り込み可能
な点であることを指示する修飾子を有するミリコードEN
D(MEND)命令を発行する。未完の割り込みが存在する場
合、その命令を実施するミリルーチンは終了し、割り込
みがサービスを受ける。割り込みが存在しなければ、ミ
リルーチンは別の動作単位を進めることができる。
【0074】図1の実施例によって説明したように、シ
ステム390のレジスタを更新するための機構は、ミリ
レジスタと汎用レジスタとの間に1対1対応を有する
(汎用レジスタ更新論理144および146の)マスク
である。マスクのビットが1であれば、それに対応する
汎用レジスタは、それに対応するミリレジスタによって
更新される。システム390用命令が必ず一定の汎用レ
ジスタ(例えば、汎用レジスタ2)を更新する場合、こ
れは良好に作用する。ミリモードに入らせたシステム3
90用命令がいずれかの汎用レジスタを更新するように
指定している場合に、どのようにされなければならない
かを説明する。初めに、命令テキストがマスクビットを
構成するために調べられなければならない。これは容易
であるが、時間を消費する。第2に、ループ内で、デー
タを対応するミリレジスタに入れさせるためにEXECUTE
命令がLOADレジスタの主体とともに使用されなければな
らない。LOADレジスタのこのEXECUTE 命令こそ、基本的
な制御問題を生じさせるものである。
【0075】LOADレジスタのEXECUTE 命令の作用は、命
令が指定した汎用レジスタに対応するミリレジスタにデ
ータを移すことである。これは、正しい汎用レジスタの
更新が配慮される限り、問題ない。しかし、条件付きME
ND命令が、割り込み可能命令が継続されるべきであると
認めた場合、ミリルーチンのループは当てもなく妥協し
得る。なぜなら、LOADレジスタのEXECUTE 命令はデータ
をミリレジスタに移動してしまっており、コーダはいず
れのレジスタが修正されたかを知ることができないから
である。不幸にしてターゲットレジスタがそのループを
制御するものであったとしたら、誤った実行が生じ得
る。これが制御問題である。
【0076】発明人らは、上述の制御および性能に関す
る問題の多くを最小限にする、または、排除し得ること
を発見した。その結果、図6の実施例では、ミリモード
へ入らせたシステム390用命令によって参照された全
レジスタを覚えておくためにデコーダハードウエアによ
って初期化されるレジスタセット(レジスタオペランド
用レジスタ)というレジスタ管理システムが付与されて
いる。レジスタオペランド用レジスタを参照する一意の
ミリモード命令が存在する。
【0077】レジスタオペランド用レジスタの備えによ
り、ミリルーチンは、高速なパイプラインリセットが常
に可能であるようにミリレジスタから汎用レジスタを絶
縁させつつ、汎用レジスタの内容および汎用レジスタの
値にアクセスすることができる。
【0078】図6は、レジスタオペランド用レジスタお
よび関連支援機能を含むレジスタ管理システム630の
機能図である。図6のレジスタ管理システム630は、
レジスタ管理システム130の代替として図1のシステ
ムと連係して使用される。図1および図6の双方に表れ
るレジスタ管理システム630の同一番号の構成要素は
同じものである。レジスタ割当てリスト132〜138
および142、 FREESTACK 140、ならびに、汎用レ
ジスタ論理144および146はすべて、図1の実施例
によって説明したのと同一の方法で、相互に、かつ、シ
ステムと接続されている。
【0079】図1の実施例の構成要素に加えて、図6の
レジスタ管理システム630は、以下を含んでいる。 ・レジスタオペランド用レジスタ(ROR)602 ・デコーダ110からソースレジスタオペランド用レジ
スタ識別子を受け取るために接続され、かつ、その識別
子をレジスタオペランド用レジスタ602に供給するた
めに接続されている EXTV 制御論理604 ・デコーダ110からシンクレジスタオペランド用レジ
スタ識別子を受け取るために接続され、かつ、その識別
子をレジスタオペランド用レジスタ602に供給するた
めに接続されている MSET 制御論理608 ・レジスタオペランド用レジスタ602からレジスタ識
別子を受け取るために接続されている解読レジスタオペ
ランド用レジスタ割当てリスト(DRRAL)610 ・完了論理172および解読レジスタオペランド用レジ
スタ割当てリスト610と接続されており、ミリ命令完
了時にレジスタオペランド用レジスタの値を追跡するた
めの完了レジスタオペランド用レジスタ割当てリスト
(CRRAL)612 ・それぞれ、解読レジスタオペランド用レジスタ割当て
リスト(DRRAL)610と解読レジスタ割当てリスト13
2との間で、および、完了レジスタオペランド用レジス
タ割当てリスト(CRRAL)612と完了レジスタ割当てリ
スト134との間で被マスク複写を実行するための明示
的汎用レジスタ更新論理614および616 ・MSET汎用レジスタマスク615 レジスタオペランド用レジスタ(ROR)602は、汎用レ
ジスタを識別するために十分な幅を有する各レジスタの
集合である。(レジスタオペランド用レジスタは、汎用
レジスタを識別する、汎用レジスタの内容の複写を保持
する、または、割り当てられた物理レジスタの物理レジ
スタ識別子を保持し、解読レジスタ割当てリストに類似
の物理/論理レジスタ変換テーブルを有する、といった
実施の選択も可能である。)現在説明している実施例で
は、レジスタオペランド用レジスタは汎用レジスタを識
別する。
【0080】ミリコードによって実施されるいずれかの
システム390用命令によって指定されたすべての汎用
レジスタを識別するために十分なレジスタオペランド用
レジスタが存在しなければならない。ミリコードで実施
されるシステム390用命令の場合、それぞれが4ビッ
ト幅を有する6のレジスタオペランド用レジスタで十分
である。システム390の場合、レジスタオペランド用
レジスタは、ミリモードに入らせるシステム390用命
令の形式に応じて異なって初期化される。
【0081】レジスタオペランド用レジスタ602は、
ミリコードで実施されたシステム390用命令が検出さ
れた場合、(デコーダ110によって)初期化される。
レジスタオペランド用レジスタは、システム390用命
令の明示的レジスタオペランドへのアクセス権を得るた
めにミリルーチンによって使用される。
【0082】表2(下記)は、レジスタオペランド用レ
ジスタがどのように初期化されるかを示している。
【0083】 表 2ROR # RR,RRE RX RS SI S SS,SSE SS3* 0 R1 R1 R1 B2 B1 B1 R1 1 R2 X2 R3 n/u n/u R1 R3 2 R2+1 B2 B2 n/u n/u B2 B2 3 R1+1 n/u R3+1 n/u n/u n/u R3+1 4 n/u n/u B2+1 n/u n/u n/u B1 5 n/u n/u R1+1 n/u n/u n/u R1+1 *SS3は、R1及びR3がビット8:15で指定されるSS形式命令を参照する 表2の最上段の行のRR,RRE,RX,SI,S,S
S,SSEおよびSS3は、当業で公知の形式の、IBM
システム370および390用命令の形式であり、“IB
M Enterprise Systems Architecture /390 Principles
of Operation”(Publication Number SA22-7201-0,A
vailable from IBM Corporation,Armonk, N.Y.)に詳述
されており、参照により、全体として、本明細書と一体
を成す。R1,R2,R3,B1,B2およびX2は、
適切な命令形式内のレジスタ識別フィールドである。文
字「n/u」は、指定されたレジスタオペランド用レジ
スタが指示された命令形式には用いられない(デコーダ
によってロードされない)ことを示す。
【0084】例えば、比較・スワップ命令は、RS形式
(詳しくは、CS R1,R3,D2(B2))であ
る。特定の比較・スワップ命令が以下の通りであると仮
定する。
【0085】BA578000(16進) この時、BAは演算コード、R1は汎用レジスタ5、R
3は汎用レジスタ7、B2は汎用レジスタ8である。デ
コーダがこの命令に出会った場合、デコーダはこれをR
S形式であると認識する。従って、表2に従えば、デコ
ーダはレジスタオペランド用レジスタを以下のようにロ
ードする。
【0086】ROR 0=5 ROR 1=7 ROR 2=8 ROR 3=8 ROR 4=9 ROR 5=6 システム390用命令の明示的レジスタオペランドへの
アクセス権を得るために使用される2の基本的なミリ命
令が存在する。これらのミリ命令は、EXTV(EXTRACT VI
A ROR )および MSET (SET VIA ROR )である。
【0087】EXTVは、ミリルーチンが明示的レジスタオ
ペランドを読み出したい場合に使用される。EXTVのオペ
ランドは、ミリレジスタ(シンク)およびレジスタオペ
ランド用レジスタ(ソース)である。コーダは、どのレ
ジスタオペランド用レジスタを使用するかを決定するた
めに(上記の)表2を使用する。
【0088】EXTV制御論理604は、デコーダ110か
らEXTVソース(レジスタオペランド用レジスタ識別子)
を受け取るために接続されている。デコーダ110から
の制御信号に応答して、EXTV制御論理604は、EXTV命
令によって指定されたレジスタオペランド用レジスタ位
置から論理レジスタ識別子を読み出す。レジスタオペラ
ンド用レジスタからの論理レジスタ識別子は、その後、
解読レジスタ割当てリスト132に供給され、そこで物
理レジスタ識別子から読み出すために使用される。その
物理レジスタ識別子は、(ハードウエア実行単位のいず
れかによって実行される)ロードレジスタ形式命令のソ
ースとして使用される。(指定されたソース物理レジス
タの内容を受け取るための)EXTV命令用の物理シンクレ
ジスタは、 FREE STACK 140によって供給される。
【0089】ミリルーチンがシステム390用命令の明
示的レジスタオペランドを更新する必要がある場合、MS
ETミリ命令が用いられる。そのソースオペランドはミリ
レジスタであり、そのシンクオペランドはレジスタオペ
ランド用レジスタ識別子によって指示される。
【0090】MSET制御論理606は、デコーダ110か
らMSET命令シンク(レジスタオペランド用レジスタ識別
子)を受け取るために接続されている。デコーダ110
からの制御信号に応答して、MSET制御論理606は、指
定されたレジスタオペランド用レジスタ位置から論理レ
ジスタ識別子を読み出す。この論理レジスタ識別子は、
その後、MSET汎用レジスタ更新論理マスク615の対応
するビットを設定するために使用され、これが解読レジ
スタオペランド用レジスタ割当てリスト608の位置を
指定する。ロードレジスタ形式命令はミリレジスタであ
るソースおよびFREE STACK からのレジスタであるシン
クによる実行のためにスケジュールされる。 FREE STAC
K からのレジスタの物理レジスタ識別子は、解読レジス
タオペランド用レジスタ割当てリスト608へ、レジス
タオペランド用レジスタからの読み出されたその位置に
書き込まれる。
【0091】解読レジスタオペランド用レジスタ割当て
リスト608は、ミリルーチンが明示的に名づけられた
汎用レジスタをレジスタオペランド用レジスタ602に
よって更新した場合に一時記憶として使用される。(明
示的レジスタの参照は、レジスタに名づけられたミリコ
ードを呼び出したシステム390用命令を意味し、暗示
的レジスタの参照は、命令がその命令によって名づけら
れていない一定の汎用レジスタを常に修飾することを意
味する。)解読レジスタオペランド用レジスタ割当てリ
ストは、解読レジスタ割当てリストと同一の構造を有す
る(各構成論理レジスタに対応して解読レジスタオペラ
ンド用レジスタ割当てリストに1スロット/位置が存在
する)。完了レジスタオペランド用レジスタ割当てリス
ト610は、(解読レジスタオペランド用レジスタ割当
てリストが解読時間を参照するのに対して)完了レジス
タオペランド用レジスタ割当てリストに格納されたレジ
スタ割当てが完了時間を参照すること以外、解読レジス
タオペランド用レジスタ割当てリストと同一の構造を有
する。完了レジスタオペランド用レジスタ割当てリスト
は、パイプラインリセットが発生した時に完了レジスタ
オペランド用レジスタ割当てリストの内容が解読レジス
タオペランド用レジスタ割当てリストに複写できるよう
に、解読レジスタオペランド用レジスタ割当てリストと
接続されている。
【0092】例えば、解読レジスタオペランド用レジス
タ割当てリストおよび完了レジスタオペランド用レジス
タ割当てリストは、MSET命令によって以下のように操作
できる。
【0093】MSET 1,10 これは、ミリレジスタ10がレジスタオペランド用レジ
スタ#1(レジスタオペランド用レジスタ#1は論理レ
ジスタ識別子を内容とする)が参照している汎用レジス
タに入れられるべき情報を持っていることを意味する。
【0094】レジスタオペランド用レジスタ#1は汎用
レジスタ7を指示していると仮定する。MSETが解読する
場合、使用可能な物理レジスタは FREE STACK から得ら
れ、その識別子は解読レジスタオペランド用レジスタ割
当てリストのスロット7に書き込まれる。同時に、汎用
レジスタ7に対応する明示的汎用レジスタマスクビット
は1に設定される。次に、ロードレジスタ動作が実行を
スケジュールされる。実行されると、ロードレジスタ動
作は、ミリコード解読レジスタ割当てリストのスロット
10(ソース)で識別された物理レジスタの内容を解読
レジスタオペランド用レジスタ割当てリストのスロット
7(シンク)で識別された物理レジスタに複写する。MS
ET命令が完了すると、解読レジスタオペランド用レジス
タ割当てリストのスロット7の物理レジスタ識別子は完
了レジスタオペランド用レジスタ割当てリストのスロッ
ト7にも書き込まれる。これにより、完了レジスタオペ
ランド用レジスタ割当てリスト610は、パイプライン
がリセットされなければならない場合も、(完了レジス
タ割当てリスト134が解読レジスタ割当てリスト13
2に複写され、ミリコード完了レジスタ割当てリスト1
38がミリコード解読レジスタ割当てリスト136に複
写されるのと同じ方法で)、解読レジスタオペランド用
レジスタ割当てリスト608を更新することができる。
【0095】ミリコード終了が解読されると、(MSETミ
リ命令の実行によって)解読レジスタオペランド用レジ
スタ割当てリスト608になされたいずれかの変更は、
汎用レジスタ更新論理612によって解読レジスタ割当
てリスト132に複写される。現在の例では、解読レジ
スタオペランド用レジスタ割当てリストのスロット7の
物理レジスタ識別子が解読レジスタ割当てリストのスロ
ット7に複写されよう。MENDが完了すると、同一の変更
が、完了レジスタオペランド用レジスタ割当てリストの
変更を汎用レジスタ更新論理614によって複写するこ
とにより完了レジスタ割当てリスト134に対して行わ
れる。
【0096】明示的汎用レジスタ更新論理612および
614は、これらの組が暗示的汎用レジスタ更新論理1
44および146によって使用された一方の論理からの
個別のレジスタマスクにアクセスする点を除いて、暗示
的汎用レジスタ更新論理144および146と同一であ
る。
【0097】暗示的レジスタの更新については、別の方
式が使用される。この場合、コーダはいずれの汎用レジ
スタが更新されるかを知っている。コーダは、対応する
ミリレジスタに正しい情報を残すように調整する。その
各ビットが汎用レジスタと1対1で対応するマスク(図
5の502を参照)を設定するために、ミリ命令(ORM
I)が発行される。従って、汎用レジスタ4が変更され
る場合、その情報はMEND時にミリレジスタ4に残され
る。そのORMI命令は汎用レジスタマスクのビット4を設
定する。
【0098】MEND解読時に、いずれの汎用レジスタが
(ORMIによって)設定された各自のマスクビットを持っ
ていても、対応するミリコード解読レジスタ割当てリス
ト136のスロットは、暗示的汎用レジスタ更新論理1
44によって解読レジスタ割当てリスト132に複写さ
れる。これにより解読レジスタ割当てリストは更新さ
れ、システム390用命令の解読が次のサイクルに進む
ことができる。MEND完了時に、いずれの汎用レジスタが
ORMIによって設定された各自のマスクビットを持ってい
ても、対応するミリコード完了レジスタ割当てリスト1
36のスロットは、汎用レジスタ更新論理146によっ
て完了レジスタ割当てリスト134に複写される。 c.命令パイプラインのドレーン 柔軟性および効率の水準を向上させるために、図1およ
び図6のシステムはパイプラインをドレーンさせるミリ
命令を含む。DRAIN INSTRUCTION PIPELINE(DIP)と称す
るこのミリ命令は、(1)いつパイプラインをドレーン
するか、および、(2)どの形式のパイプラインドレー
ンを実行するかに関するコーダによる選択性を高める。
DIP 命令は、コーダに対して、選択事象が発生するまで
システムに解読を停止させる。
【0099】システム370/システム390環境で
は、DIP 命令は、好ましくはPRE 形式をとる。図7に詳
細に例示したDIP 命令702は、コーダに多数のオプシ
ョンからの選択を可能にする4ビットのS1フィールド
を含む。これらのオプションは図8(表802)に示し
てあり、以下に詳述する。
【0100】S1フィールドが0010に設定された場
合、実際の格納は完了していないかもしれないが、例外
はまったく発生しない地点まですべての格納要求が到達
していることをキャッシュ104が指示するまで、解読
は停止される。デコーダ110はシステム記憶装置10
2からの信号を監視する。キャッシュ104が、すべて
の格納要求予備試験がうまく完了したことを指示するた
めにデコーダ110に信号を送信すると、解読は再開さ
れる。
【0101】S1フィールドが0100に設定された場
合、すべての概念的に以前のミリコード命令が完了する
まで、解読は停止される。デコーダ110は、完了論理
がすべての概念的に以前のミリ命令を完了させたことを
指示する、完了論理122からの信号を監視する。
【0102】S1フィールドが0110に設定された場
合、すべての概念的に以前の動作単位からのすべての概
念的に以前の格納が完了する(直列化)まで、解読は停
止される。動作単位は、いずれかの非割り込み可能命
令、または、割り込み可能命令の規定の部分である
(“IBM Enterprise Systems/370 PrinciplesofOper
ation ”に詳述)。デコーダ110はキャッシュ104
からの状態信号を監視する。キャッシュ104が、以前
の動作単位からのすべての格納が完了したことを指示す
る信号をデコーダ110に送信すると、解読は再開され
る。
【0103】S1フィールドが1000に設定された場
合、すべての概念的に以前のマクロ(システム390
用)命令が完了するまで、解読は停止される。デコーダ
110は、完了論理がすべての概念的に以前のシステム
390用命令を完了させたことを指示する、完了論理1
22からの信号を監視する。
【0104】S1フィールドが1010に設定された場
合、解読は停止され、その次のMEND命令の解読直後に再
開される。DIP 命令が完了すると(完了論理122から
デコーダ110への信号によって指示されると)、シス
テムは、システム390用命令を保持している命令バッ
ファ全部を無効にし、次の順序のシステム390用命令
を取り出す。このDIP 命令は、次のシステム390用命
令が取り出されるアドレス空間をミリ命令が変更したか
もしれない場合(例えば、ミリルーチンがIBMシステム
390用制御レジスタ1または制御レジスタ13、制御
レジスタ0のアドレス変換制御またはプログラム状態語
のアドレス空間制御を変更した場合)に使用され、変更
を生じた可能性のあるミリ命令の直後に挿入される。
【0105】S1フィールドが1100に設定された場
合、すべての概念的に以前の命令が完了するまで、解読
は停止される。デコーダ110は、完了論理がすべての
概念的に以前の命令を完了させたことを指示する、完了
論理122からの信号を監視する。
【0106】S1フィールドが1110に設定された場
合、解読は停止され、その次のMEND命令の解読直後に再
開される。DIP 命令が完了すると、取り出しは再開され
る。このDIP 命令は、次のシステム390用命令が取り
出されるアドレス空間をミリ命令が変更したかもしれな
い場合、または、DIP 命令が(例えば、取り出し保護の
使用可能または使用禁止によって)プロセッサの命令取
り出し能力またはプロセッサ事象レコーダ(PER)に影響
する可能性のある制御レジスタを変更した場合(例え
ば、ミリルーチンがIBM システム370/390用制御
レジスタ0,9,10または11を変更した場合)に使
用され、変更を生じた可能性のあるミリ命令の直後に挿
入される。
【0107】ミリルーチン内にDIP 1110またはDIP
1010のいずれも存在しない場合、システム390用
命令の取り出しはMENDが解読されると同時に再開され
る。
【0108】S1フィールドの値が上述のいずれでもな
い場合は、未使用のままとされるか、または、他のドレ
ーン事象に使用でき、それらはアーキテクチャまたは設
計の特定機能にもとづく。
【0109】上述の原理は、従来のマイクロコードまた
は解釈形式の実行モードを有するコンピュータだけでな
く、明示的な直列化またはパイプラインドレーン命令を
使用または必要とするいずれのシステムにも適用でき
る。 d.特徴および利益 上述のミリモードシステムは多くの点で有利である。
【0110】上述のシステムは、CISCコンピュータで二
重アーキテクチャを実施するための効率的な方法を提供
する。これは、デコーダ、少なくとも一部の実行単位お
よび完了ハードウエアが、ユーザに可視であるアーキテ
クチャ(例えば、システム390)および私用ミリコー
ドアーキテクチャの双方を認識するからである。好まし
い実施例では、システム390アーキテクチャは、ミリ
コードアーキテクチャを作るためにミリ命令によって増
補される。これは、ミリコードアーキテクチャが多くの
現行命令(LOADなど)を再構築する必要がないことを意
味する。まったく異なったアーキテクチャをミリコード
アーキテクチャとして実施することもできよう。
【0111】本発明のシステムはまた、ミリルーチンの
開始および終了の双方で、ミリコード命令およびシステ
ム390用命令のオーバラップ実行を可能にする。この
オーバラップにより、さらに優れた全システム性能が得
られる。このシステムは、システム390モードからミ
リモードへの遷移時、ミリモード中、および、ミリモー
ドからシステム390モードへの遷移時におけるプロセ
ッサの構成状態を保存するための機構も備える。さらに
このシステムは、ミリモード中、および、ミリモードと
システム390モードとの間での遷移時におけるパイプ
ライン再試行機構も備える。
【0112】本発明のシステムはまた、二重アーキテク
チャ間の効率的な通信を可能にする。システム390ア
ーキテクチャとミリコードアーキテクチャとの間の通信
は、ミリコードルーチンが情報を得るためにシステム3
90機能にアクセスでき、また、それらのシステム39
0機能(例えば、汎用レジスタ(GPR)、アクセスレジス
タ(AR)、浮動小数点レジスタ(FPR)、制御レジスタ
(CR)、プログラム状態語(PSW)および記憶装置)に値
を入れることができるために行える。
【0113】本発明のシステムは、個別のミリコード構
成機能を含むように増補することもできる。すなわち、
ミリコードアーキテクチャは、自己自身の機能(例え
ば、システム390の機能ではなく)を備えることがで
きる。
【0114】本発明のシステムは、システム390用命
令のミリコードへの動的切り換えができるように修正す
ることもできる。デコーダが使用する一部のテーブルを
変更することにより、本来ハードウエアで実施されるよ
うに定義された命令をミリコードで実行させることが可
能である。機能を実行するミリルーチンは、デコーダが
使用する入口点でミリコードアレイにロードされなけれ
ばならない。そのルーチンがミリコードアレイに存在す
れば、それは動的に行うことができよう。
【0115】レジスタオペランド用レジスタの備えも多
数の利益を付与する。
【0116】レジスタオペランド用レジスタは、システ
ム390用命令によって指定された汎用レジスタが、オ
ーバヘッドを招いたり、上述の手段の実行時間を増した
りせず、ミリコードルーチンによって直接的に観察およ
び修正されることを可能にする。
【0117】レジスタオペランド用レジスタ機構は、ミ
リルーチンによるアクセスレジスタおよび浮動小数点レ
ジスタへのアクセスと等しく良好に適用される。
【0118】コーダは、システム390用命令テキスト
を調べ、また、ロードレジスタ命令のターゲットによる
EXECUTE 命令を用いることなく、システム390汎用レ
ジスタ指定オペランドをミリレジスタにロードできる。
EXECUTE 命令は、本質的に性能がよくないことが知られ
ている。EXECUTE は命令を修正するので、これは、取り
出し、修正し、その結果を解読してから、プロセスを進
めなければならない。これはパイプラインを破壊する。
汎用レジスタ指定オペランドにアクセスすることは、通
常、ミリコードで行われる。従って、多くのミリコード
ルーチンは、より少ない命令で書くことができ、より効
率的に実行する。
【0119】上述の点に加え、各自が指定する汎用レジ
スタに書き込む割り込み可能命令の場合、満杯のミリレ
ジスタの退避および復元が、動作単位を実行するループ
では避けられる。レジスタの退避および復元のオーバヘ
ッドは相当量となる。
【0120】レジスタオペランド用レジスタにより、ミ
リコードプログラマは、より理解しやすいコードで書く
ことができる。「レジスタオペランド3をミリレジスタ
xに入れる」という意味の命令をミリコードで発行する
ことは、別のコードよりもずっと明白である。
【0121】レジスタオペランド用レジスタによって、
汎用レジスタの修正は可逆的となる。汎用レジスタの修
正はミリモードの終了まで遅延される。従って、MSETミ
リ命令の効果は、MEND命令の完了まで可逆的である。
【図面の簡単な説明】
【図1】ミリコードレジスタ管理機能を有するコンピュ
ータシステムのブロック図。
【図2】図1のミリコード完了レジスタ割当てリストの
各項目の形式の説明図。
【図3】図1のシステムでの390モードから「ミリモ
ード」への遷移を示す流れ図。
【図4】図1のシステムでの390モードから「ミリモ
ード」への遷移を示す流れ図。
【図5】図1の汎用レジスタ更新論理の汎用レジスタマ
スクがミリコード解読レジスタ割当てリストおよび解読
レジスタ割当てリストとどのように会話するかを例示す
る説明図。
【図6】レジスタオペランド用レジスタを有するレジス
タ管理システムのブロック図。
【図7】DIP 命令形式を例示するブロック図。
【図8】図7のS1フィールドの各種値に応答して図1
のシステムによって実行される機能を示す説明図。
【符号の説明】
102 システム記憶装置 104 キャッシュメモリサブシステム 105 命令バッファ 106 命令レジスタ 107 命令取り出し制御論理 108 ミリコードアレイ 110 デコーダ 112 ハードウエア実行構成要素 114 ミリ命令実行ハードウエア(MEX) 116 局所作業記憶装置(LWS) 118 レジスタプール(RP) 120 ミリモード検出論理 122 完了論理 124 プログラム状態語(PSW) 126 ミリプログラム状態語 128 割り込み優先順位論理 130 レジスタ管理システム 132 解読レジスタ割当てリスト(DRAL) 134 完了レジスタ割当てリスト(CRAL) 136 ミリコード解読レジスタ割当てリスト(MDRAL
) 138 ミリコード完了レジスタ割当てリスト(MCRAL
) 140 FREE STACK 142 バックアップレジスタ割当てリスト 144,146 汎用レジスタ更新論理 147 汎用レジスタマスク(ORMI)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロナルド、フランクリン、ヒル アメリカ合衆国ニューヨーク州、ワッピン ガーズ、フォールズ、ボードイン、レー ン、28 (72)発明者 スティーブン、ジョゼフ、ナダス アメリカ合衆国ニューヨーク州、ポーキプ シー、ティンバーライン、ドライブ、45 (72)発明者 レイモンド、ジェームズ、ペダーセン アメリカ合衆国フロリダ州、ボカ、ラト ン、エスダブリュ、フィフス、アベニュ、 1548

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】コンピュータシステムであって、 コンピュータシステムのユーザにより用いられ構成命令
    として実行されてシステムを正常に構成する命令と、前
    記構成命令の実行とコンピュータシステムの他の機能と
    の実行のための解釈命令とを格納するシステム記憶装置
    と、 取り出しバッファ部、デコーダ部、及び命令を実行する
    実行部とを有する命令パイプラインと、 前記命令パイプライン、前記システム記憶装置及び前記
    実行部とに結合され、システムが実行する前記構成命令
    のみならず前記構成命令が操作するデータを格納する第
    1のメモリ手段と、 前記デコーダ部によるデコーディングのためと、前記実
    行部による実行のために、前記取り出しバッファ部に通
    常取り出される前記構成命令と、 前記命令パイプラインに結合され、前記構成命令を解釈
    し実行するため、あるいはまた、ユーザに通常利用でき
    るミリコードモードにおいて、前記構成命令の通常の実
    行とは異なる機能を提供するべく解釈命令を実行するた
    めに用いられる解釈命令を格納する第2のメモリ手段
    と、 システムが命令を認識したとき、あるいは、前記解釈命
    令を利用するために予め決められている事象をシステム
    が認識したときに、前記デコード部に応答して、前記取
    り出しバッファ部に取り出される前記解釈命令とを備
    え、 前記デコーダ部は、 前記解釈命令のうちのドレインパイプライン命令を認識
    し、前記ドレインパイプライン命令の中のプログラム可
    能な事象フィールドをデコーディングするための認識手
    段と、 前記認識手段に結合され、前記解釈命令の中の前記事象
    フィールドにより指定された事象が発生するまで、以降
    の命令の解読を停止する停止手段と、 を含むことを特徴とするコンピュータシステム。
  2. 【請求項2】請求項1記載のコンピュータシステムであ
    って、さらに、 前記デコーダ部、前記実行部、及び前記停止手段に結合
    されており、デコーディングが再スタートできるように
    前記ドレインパイプライン命令に対して以前である前記
    構成命令及び/又は前記解釈命令のうちの命令の完了を
    検出するための検出手段を含むことを特徴とするコンピ
    ュータシステム。
  3. 【請求項3】請求項1記載のコンピュータシステムであ
    って、さらに、 前記第1のメモリ手段、前記第2のメモリ手段及び前記
    デコーダ部に結合され、前記構成命令及び前記解釈命令
    が前記パイプラインに入る前に、前記構成命令及び前記
    解釈命令をバッファリングするためのバッファ手段を備
    え、 前記デコーダ部はさらに、 前記第1のメモリ手段、前記第2のメモリ手段、前記認
    識手段乃び前記停止手段に結合され、前記構成命令のう
    ちの少なくとも1つの認識時に前記解釈命令のデコーデ
    ィングを開始し、所定の解釈命令の認識時に前記構成命
    令の解読を勧告するためのモード検出手段と、 前記バッファ手段及び前記停止手段に結合され、前記所
    定の解釈命令の認識時に前記デコーディングを停止し、
    前記ドレインパイプライン命令の完了に応答して前紀構
    成命令を保持している前記バッファ手段を無効にするた
    めの信号手段とを含むことを特徴とするコンピュータシ
    ステム。
JP4048290A 1991-04-24 1992-03-05 命令パイプラインをドレーンさせるためのシステム Expired - Lifetime JPH0816870B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US69020991A 1991-04-24 1991-04-24
US690209 1991-04-24

Publications (2)

Publication Number Publication Date
JPH05173783A JPH05173783A (ja) 1993-07-13
JPH0816870B2 true JPH0816870B2 (ja) 1996-02-21

Family

ID=24771562

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4048290A Expired - Lifetime JPH0816870B2 (ja) 1991-04-24 1992-03-05 命令パイプラインをドレーンさせるためのシステム

Country Status (3)

Country Link
US (1) US5280593A (ja)
JP (1) JPH0816870B2 (ja)
CA (1) CA2060555A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2943464B2 (ja) * 1991-12-09 1999-08-30 松下電器産業株式会社 プログラム制御方法及びプログラム制御装置
TW242673B (ja) * 1993-08-18 1995-03-11 Ibm
US5471633A (en) * 1993-09-30 1995-11-28 Intel Corporation Idiom recognizer within a register alias table
JP3299611B2 (ja) * 1993-10-20 2002-07-08 松下電器産業株式会社 資源割付装置
US5611062A (en) * 1995-03-31 1997-03-11 International Business Machines Corporation Specialized millicode instruction for string operations
US5713035A (en) * 1995-03-31 1998-01-27 International Business Machines Corporation Linking program access register number with millicode operand access
US5694587A (en) * 1995-03-31 1997-12-02 International Business Machines Corporation Specialized millicode instructions for test PSW validity, load with access test, and character translation assist
US5694617A (en) * 1995-03-31 1997-12-02 International Business Machines Corporation System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation
US5673391A (en) * 1995-03-31 1997-09-30 International Business Machines Corporation Hardware retry trap for millicoded processor
US5680598A (en) * 1995-03-31 1997-10-21 International Business Machines Corporation Millicode extended memory addressing using operand access control register to control extended address concatenation
US5802359A (en) * 1995-03-31 1998-09-01 International Business Machines Corporation Mapping processor state into a millicode addressable processor state register array
US5819063A (en) * 1995-09-11 1998-10-06 International Business Machines Corporation Method and data processing system for emulating a program
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5797019A (en) * 1995-10-02 1998-08-18 International Business Machines Corporation Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5621909A (en) * 1996-03-12 1997-04-15 International Business Machines Corporation Specialized millicode instruction for range checking
US5754810A (en) * 1996-03-12 1998-05-19 International Business Machines Corporation Specialized millicode instruction for certain decimal operations
US6044460A (en) * 1998-01-16 2000-03-28 Lsi Logic Corporation System and method for PC-relative address generation in a microprocessor with a pipeline architecture
US6058470A (en) * 1998-04-07 2000-05-02 International Business Machines Corporation Specialized millicode instruction for translate and test
US6067617A (en) * 1998-04-07 2000-05-23 International Business Machines Corporation Specialized millicode instructions for packed decimal division
US6055623A (en) * 1998-04-07 2000-04-25 International Business Machine Corporation Specialized millicode instruction for editing functions
US6055624A (en) * 1998-04-07 2000-04-25 International Business Machines Corporation Millicode flags with specialized update and branch instructions
ATE467171T1 (de) * 1998-08-24 2010-05-15 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
EP1050806A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Memory access address comparison
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US20040268326A1 (en) * 2003-06-26 2004-12-30 Hong Wang Multiple instruction set architecture code format
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US8078843B2 (en) * 2008-01-31 2011-12-13 International Business Machines Corporation Facilitating processing in a computing environment using an extended drain instruction
US8433855B2 (en) * 2008-02-15 2013-04-30 International Business Machines Corporation Serializing translation lookaside buffer access around address translation parameter modification
US7913068B2 (en) * 2008-02-21 2011-03-22 International Business Machines Corporation System and method for providing asynchronous dynamic millicode entry prediction
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
JP5507317B2 (ja) 2010-04-12 2014-05-28 ルネサスエレクトロニクス株式会社 マイクロコンピュータ及び割込み制御方法
US9626732B2 (en) * 2013-10-10 2017-04-18 Intel Corporation Supporting atomic operations as post-synchronization operations in graphics processing architectures
US9804846B2 (en) * 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63173130A (ja) * 1986-12-30 1988-07-16 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 計算機の命令セツトを拡張するための装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4179736A (en) * 1977-11-22 1979-12-18 Honeywell Information Systems Inc. Microprogrammed computer control unit capable of efficiently executing a large repertoire of instructions for a high performance data processing unit
US4748559A (en) * 1979-08-09 1988-05-31 Motorola, Inc. Apparatus for reducing power consumed by a static microprocessor
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
CA1304823C (en) * 1987-03-20 1992-07-07 David N. Cutler Apparatus and method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63173130A (ja) * 1986-12-30 1988-07-16 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 計算機の命令セツトを拡張するための装置

Also Published As

Publication number Publication date
CA2060555A1 (en) 1992-10-25
JPH05173783A (ja) 1993-07-13
US5280593A (en) 1994-01-18

Similar Documents

Publication Publication Date Title
US5280593A (en) Computer system permitting switching between architected and interpretation instructions in a pipeline by enabling pipeline drain
US5226164A (en) Millicode register management and pipeline reset
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
US5694617A (en) System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation
US5421020A (en) Counter register implementation for speculative execution of branch on count instructions
EP1570352B1 (en) Method and apparatus for switching between processes
US6076156A (en) Instruction redefinition using model specific registers
JP3531167B2 (ja) 命令実行を制御するため命令にタグを割り当てるシステム及び方法
US4729094A (en) Method and apparatus for coordinating execution of an instruction by a coprocessor
US20040205747A1 (en) Breakpoint for parallel hardware threads in multithreaded processor
CA2508551C (en) Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
JP2000029737A (ja) デバッグ機能のためのリアルタイム外部命令挿入を有するプロセッサ
US4731736A (en) Method and apparatus for coordinating execution of an instruction by a selected coprocessor
US5778220A (en) Method and apparatus for disabling interrupts in a highly pipelined processor
US5802359A (en) Mapping processor state into a millicode addressable processor state register array
US4750110A (en) Method and apparatus for executing an instruction contingent upon a condition present in another data processor
US6405234B2 (en) Full time operating system
CN111133418A (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
US5930491A (en) Identification of related instructions resulting from external to internal translation by use of common ID field for each group
US5021991A (en) Coprocessor instruction format
US4758950A (en) Method and apparatus for selectively delaying an interrupt of a coprocessor
US5713035A (en) Linking program access register number with millicode operand access
KR100310798B1 (ko) 머신문맥동기화동작실행방법및프로세서
US5680598A (en) Millicode extended memory addressing using operand access control register to control extended address concatenation