JP5808348B2 - マシン状態に基づいた命令の分割 - Google Patents

マシン状態に基づいた命令の分割 Download PDF

Info

Publication number
JP5808348B2
JP5808348B2 JP2012555308A JP2012555308A JP5808348B2 JP 5808348 B2 JP5808348 B2 JP 5808348B2 JP 2012555308 A JP2012555308 A JP 2012555308A JP 2012555308 A JP2012555308 A JP 2012555308A JP 5808348 B2 JP5808348 B2 JP 5808348B2
Authority
JP
Japan
Prior art keywords
instruction
unit
mode
address
machine state
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.)
Active
Application number
JP2012555308A
Other languages
English (en)
Other versions
JP2013521551A (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 JP2013521551A publication Critical patent/JP2013521551A/ja
Application granted granted Critical
Publication of JP5808348B2 publication Critical patent/JP5808348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

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

Description

本発明は、一般に、マイクロプロセッサに関し、より具体的には、命令をより簡単な操作に編成することに関する。
IPC(Instruction per cycle:サイクルあたりの命令実行数)を増加させるための種々の従来の手法が、命令を、より簡単な組の操作単位(unit of operations、Uop)に分割(crack)する。しかしながら、これらの手法は、命令をUopに分割するが、この分割は、一般に、命令オペコード(opcode)に基づいた静的なものであり、ハードウェアの効率的使用、特に、発行キューに向けられたものではない。従って、発行キューは、性能及び発行帯域幅に苦しむことがある。
1989年10月10日に出願された「Instruction processing unit for computer」と題する特許文献1は、コンピュータが、命令の処理速度及びデータのスループットを最適化するように構成されることを教示する。コンピュータは、メインメモリと、メモリ制御ユニットと、物理的キャッシュ・ユニットと、中央処理装置とを含む。命令処理ユニットは、中央処理装置内に含められる。命令処理ユニットの機能は、命令をデコードし、命令実行コマンドを生成すること、又は、中央処理装置内で命令の実行を指示することである。命令は、メインメモリからレジスタに転送され、そこで、命令のアドレス・フィールドがデコードされて、分割された命令を生成し、これらの命令は、論理命令キャッシュ内に格納される。分割された命令が選択されると、これらは出力バッファ及びデコーダに転送され、そこで、命令の残りのフィールドがデコードされて、命令の実行コマンドを生成する。キャッシュ内の命令は、物理アドレスではなく、論理アドレスに格納される。キャッシュはさらに、分岐命令を1クロック・サイクルで選択することができるように、コンピュータの基本クロック周期の速度の二倍で動作することができる。
1998年10月20日に出願された「Instruction translation unit configured to translate from a first instruction set to a second instruction set」と題する特許文献2は、ソース命令セットから1組の中間のアトミック操作(atomic operation)に命令を減少させる命令変換ユニットを教示する。次に、アトミック操作が再結合されてターゲット命令セット内の命令になる。命令変換ユニットに結合された実行コアは、ターゲット命令セットからの命令を実行するように構成することができる。しかしながら、ソース命令セットとの両立性は維持される。複数のソース命令を減少させてアトミック操作にすることにより、複数のソース命令の一部を結合してターゲット命令にすることができる。
2007年1月9日に出願された「Virtual instruction expansion based on template and parameter selector information specifying sign−extension or concentration」と題する特許文献3は、拡張可能な命令セットのアーキテクチャを教示する。1つの実施形態において、マイクロプロセッサは、メモリと、仮想命令拡張ストアと、置換論理とを含む。メモリは、指標及び少なくとも1つのパラメータを含む少なくとも1つの仮想命令を格納する。仮想命令拡張ストアは、少なくとも1つの命令テンプレートと、少なくとも1つのパラメータ・セレクタとを含む。置換論理は、少なくとも1つの拡張命令のシーケンスを形成する。一例において、置換論理は、少なくとも1つのパラメータを符号拡張(sign-extend)し、少なくとも1つのパラメータ・セレクタが指定する方法で、少なくとも1つの拡張命令の即値(immediate value)を形成する。別の例においては、置換論理は、仮想命令の第1のパラメータと第2のパラメータを連結させ、少なくとも1つのパラメータ・セレクタが指定する方法で、少なくとも1つの拡張命令の即値を形成する。
米国特許第4,873,629号明細書 米国特許第5,836,089号明細書 米国特許第7,162,621号明細書
従って、当技術分野において、上記の問題に対処する必要性がある。
1つの好ましい実施形態において、マシン状態に基づいて命令の実行を管理するための方法が開示される。この方法は、少なくとも1つの命令を受信することを含む。少なくとも1つの命令をデコードする。デコードに応答して、現在のマシン状態を判断する。判断された現在のマシン状態に基づいて、少なくとも1つの命令を1組の操作単位に編成する。操作単位の組を実行する。
別の好ましい実施形態において、マシン状態に基づいて命令の実行を管理するための情報処理システムが開示される。この情報処理システムは、メモリと、メモリに通信可能に結合されたプロセッサとを含む。命令デコード・ユニットは、少なくとも1つの命令を受信するように構成される。命令デコード・ユニットはまた、少なくとも1つの命令をデコードするようにも構成される。マシン状態判断ユニットは、デコードに応答して、現在のマシン状態を判断するように構成される。プロセッサ内の命令分割ユニットは、判断された現在のマシン状態に基づいて、少なくとも1つの命令を1組の操作単位に編成するように構成される。プロセッサは、操作単位の組を実行するように構成される。
さらに別の好ましい実施形態において、マシン状態に基づいて命令の実行を管理するためのコンピュータ・プログラム製品が開示される。このコンピュータ・プログラム製品は、処理回路により読み出し可能であり、かつ、方法を実行するために、処理回路によって実行するための命令を格納するコンピュータ可読ストレージ媒体を含む。この方法は、少なくとも1つの命令を受信することを含む。少なくとも1つの命令をデコードする。デコードに応答して、現在のマシン状態を判断する。判断された現在のマシン状態に基づいて、少なくとも1つの命令を1組の操作単位に編成する。操作単位の組を実行する。
更に別の態様の観点から見ると、本発明は、コンピュータ可読媒体上に格納され、かつ、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、プログラムがコンピュータ上で実行されたとき、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
ここで本発明が、以下の図面に示されるような好ましい実施形態を参照して、単なる例として説明される。
本発明の1つの好ましい実施形態による動作環境の一例を示す。 本発明の1つの好ましい実施形態によるプロセッサ・コアの詳細図を示す。 本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。 本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。 本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。 本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。 本発明の1つ又は複数の好ましい実施形態による、マシン状態に基づいて命令を分割する一例を示す動作フロー図である。
必要に応じて、本発明の詳細な実施形態が本明細書に開示されるが、開示される実施形態は、本発明の単なる例示であり、本発明は様々な形態で具体化できることを理解すべきである。従って、本明細書に開示される特定の構造上及び機能上の詳細は、限定的なものとして解釈されるべきではなく、単に特許請求の範囲のための基準として、及び、事実上いずれかの適切で詳細な構造において本発明を様々に用いるように当業者に教示するための代表的な基準として解釈されるべきである。さらに、本明細書で用いられる用語及び句は、限定的であることを意図するものではなく、本発明を理解することができる説明を提供することを意図するものである。
動作環境
図1は、本発明の種々の好ましい実施形態に適用可能な例示的な動作環境を示す。特に、図1は、本発明の1つの好ましい実施形態が実装される並列分散処理システムを示す。この好ましい実施形態において、並列分散処理システム100は、SMPコンピューティング環境で動作する。SMPコンピューティング環境において、並列アプリケーションは、同じ処理ノード上の種々のプロセッサ上で実行される幾つかのタスク(プロセス)を有することができる。並列分散処理システム100は、複数のネットワーク・アダプタ106及び108を介して互いのノードに結合された、複数の処理ノード102及び104上で実行される。各々の処理ノード102及び104は、それ自体のオペレーティング・システム・イメージ110及び112、チャネル・コントローラ114及び116、メモリ118及び120、並びにプロセッサ122及び124をシステム・メモリ・バス126及び128上に有する独立したコンピュータである。システム入力/出力バス130及び132は、I/Oアダプタ134及び136と通信アダプタ106及び108を結合する。簡単にするために、各々の処理ノード102及び104内に、1つだけのプロセッサ122及び124が示されているが、各々の処理ノード102及び104は、1つより多いプロセッサを有してもよい。通信アダプタは、ネットワーク・スイッチ138を介して互いにリンクされている。
また、ノード102、104の一方又は両方が、大容量記憶インターフェース140を含む。大容量記憶インターフェース140は、大容量記憶装置142をノード102に接続するために用いられる。1つの特定のタイプのデータ・ストレージ装置は、コンパクト・ディスク(「CD」)ドライブのようなコンピュータ可読媒体であり、これを用いて、CD144又はDVDにデータを格納し、そこからデータを読み出すことができる。別のタイプのデータ・ストレージ装置は、例えば、JFSタイプのファイル・システム動作をサポートするように構成されたハードディスクである。幾つかの好ましい実施形態において、種々の処理ノード102及び104は、処理クラスタの一部とすることができる。本発明は、SMP環境に限定されるものではない。他のアーキテクチャも適用可能であり、本発明のさらに好ましい実施形態は、単一のシステム内で動作することもできる。
プロセッサ・コア
1つの好ましい実施形態によると、図2は、マシン状態に基づいて命令を分割するための、プロセッサ122、124内のプロセッサ・コア200の一例を示す。図2に示される構成は、特許請求される本発明に適用可能な一例にしかすぎないことに留意すべきである。特に、図2は、プロセッサ・コア200を示す。1つの好ましい実施形態において、このプロセッサ・コア200は、プロセッサ・コア200を他のプロセッサ及び周辺機器に結合するバス・インターフェース・ユニット202を含む。バス・インターフェース・ユニット202はまた、データ値を読み出し、格納するL1データ・キャッシュ(Dキャッシュ)204、プログラム命令を読み出すL1命令キャッシュ(Iキャッシュ)206、及びキャッシュ・インターフェース・ユニット208を、外部メモリ、プロセッサ及び他のデバイスにも接続する。
L1 Iキャッシュ206は、命令をプリフェッチし、投機的ローディング(speculative loading)及び分岐予測機能(branch prediction capability)を含むことができる、命令フェッチ・ユニット(IFU)210と共に、命令ストリームのローディングを提供する。これらのフェッチされた命令コードは、命令デコード・ユニット(IDU)212により、命令処理データにデコードされる。ひとたびデコードされると、命令は、命令シーケンサ・ユニット(ISU)214にディスパッチされる。ISU214は、一般的な演算を実行するための1つ又は複数の固定小数点ユニット(FXU)216及び浮動小数点演算を実行するための1つ又は複数の浮動小数点ユニット(FPU)218などの、様々な実行ユニットに発行される命令の順序付け(sequencing)を制御する。浮動小数点ユニット218は、2進浮動小数点ユニット220、10進浮動小数点ユニット221及び/又はその種の他のものとすることができる。1つの好ましい実施形態において、FXU216は、互いのコピーである複数のFXUパイプラインを含むことに留意すべきである。ISU214は、1つ又は複数のLSUパイプラインを介して、1つ又は複数のロード/ストア・ユニット(LSU)230にも結合される。これらの1つ又は複数のLSUパイプラインは、ロード及びストアを実行するための実行ユニットとして扱われ、分岐の生成に取り組む。
ISU214内に常駐する、1組のグローバル完了テーブル(GCT)222は、命令のターゲットである特定の実行ユニットが命令の実行完了を示すまで、タグを介してISU214によって発行された命令を追跡する。FXU216及びFPU218は、汎用レジスタ(GPR)224及び浮動小数点レジスタ(FPR)226などの種々のリソースに結合される。GPR224及びFPR226は、ロード・ストア・ユニット(LSU)230によって、L1 Dキャッシュ204からロードされ、格納されたデータ値のためのデータ値ストレージを提供する。
さらに、上述したプロセッサ・コア200の構成に対して、1つの好ましい実施形態において、LSU230は、ロード・キュー(LDQ)232、ストア・キュー(STQ)234、及びストア・バッファ(STB)236を含む。LDQ232及びSTQ234の各々は、それぞれ、未処理のロード及びストア命令と関連した付加的な情報を追跡する、エントリ238、240を含む。例えば、LDQ232のエントリ238は、対応するロード命令の開始アドレスと終了アドレスとを含む。STQ234のエントリ240は、対応するストア・データの開始アドレスと終了アドレスとを含む。STB236は、エントリ242を含み、ここで、対応するストア命令が、データをキャッシュ204に書き戻す前にそのデータを保存する。
1つの好ましい実施形態において、IDU212は、分割ユニット(cracking unit)244を含む。分割ユニット244は、複雑な命令をより簡単なユニットに編成する/分ける。別の言い方をすれば、分割ユニット244は、命令を、実行ユニットにおいて処理できる1組の操作単位(Uop)に編成する。分割ユニット244は、以下でより詳細に説明される。1つの好ましい実施形態において、IDU212はまた、これらに限定されるものではないが、プログラム状況ワード(Program Status Word、PSW)ビット、ミリモード状態、スローモード状態、エミュレーション・アクティブ状態などといった、マシン状態制御ビットの現在の状態を判断する、マシン状態判断ユニット246も含む。1つの好ましい実施形態において、マシン状態は、命令自体の命令テキストから判断することもできる。例えば、R2フィールドがゼロである場合、I2フィールドが特定の定数値である場合、マスク・フィールドが連続的である又はゼロである場合などには、命令を異なる組のUopに分割することができる。
マシン状態判断ユニット246は、以下により詳細に説明される。この好ましい実施形態においては、IDU212は、例えば、実行ステップ及び/又は実行パイプを減少させることによって命令の実行を変更する命令短縮化ユニット248も含む。短縮された命令は、より少ない発行キュー・リソースを占め、発行キューの帯域幅を改善し、場合によっては、より少ないGCTリソースを占め、完了を早め、電力消費を低減させ、より少ないLDQ/STQのリソース割り当てをもたらす。命令短縮化ユニット248は、以下により詳細に説明される。
マシン状態に基づいた命令の管理
上述のように、コンピュータ・システムは、典型的には、命令フェッチ部/ユニット、命令デコード・ユニット、命令グループ化及びディスパッチ・ユニット、命令順序付け及び発行ユニット、実行ユニット(固定小数点、ロード・ストア、BFU、DFU等)、並びに命令完了ユニットを含む。命令のデコードとは、命令が最初にデコードされ、理解されることを指す。命令のグループ化、分割、ロード、ストアなどの命令特性についての情報がデコードされる。命令のディスパッチ時に(イン・オーダーの最後の時点(last in order point))、論理レジスタの番号及びタイプ(GPR、FPR、AR等)、条件コードの読み出し/書き込み、FPCの読み出し/書き込み、PSWの読み出し/書き込み等のような情報が、ISU214に与えられる。
ISU214は、論理レジスタを物理レジスタにマッピングし、コピーし、依存ベクトルを設定し、ディスパッチされた命令を命令キューに格納する。発行準備ができた命令が、命令キューから読み出され、実行ユニット及び古さごとにランク付けされ、次に実行ユニットに発行される。例えば、2つの命令が、FXUパイプ0に発行する準備ができた場合、各々の実行ユニットは単一の命令しか受信できないので、最も古い命令だけが発行される。
従って、図1に関して上述した一般的な処理機構に加えて、本発明の種々の好ましい実施形態は、命令処理の速度を最適化し、データ・スループットを増大させることにより、IPCを増大させる。例えば、発行キューは、性能に影響されやすい。従って、本発明の種々の好ましい実施形態は、サイクル時間の要件を満たす一定サイズのキューに対するデコードされた命令の処理を変更することにより、発行キュー・エントリを節約する。このことにより、発行キューの性能全体が改善される。
1つの好ましい実施形態において、命令のデコード時間中、プログラム状況ワード(PSW)ビットを含むマシン状態制御ビットが、命令処理/デコード時間中に用いられ、命令の分割を変化させること及び/又は命令の短縮化を適用することによって、命令の実行を変更する。命令の変更により、性能が改善され、正確な命令の実行が保証される。
IFU210がI−キャッシュ206から命令をフェッチすると、IFU210は、IDU212によりデコードするために、命令をパイプラインに送る。IDU212は、命令をデコードし、これらに限定されるものではないが、RR−タイプ分岐命令(例えば、BCTR、BCTGR、BCR及びBASR、並びにBALR);LA、LAY、LAE、及びLAEYタイプ命令、シフト/ローテート・タイプ命令(例えば、RLL及びRLLG)、並びにLCTL及びSPKA命令のような命令のタイプを識別する。次に、マシン状態判断ユニット246は、プログラム状況ワード(PSW)ビットを含むマシン状態制御ビットに基づいて、マシン状態を判断する。
プログラム状況ワード(PSW)ビットの一部は、アドレス・モード・ビット(PSW(31:32))、アドレス空間ビット(PSW(16:17))、問題状態ビット(PSW(15))である。問題状態ビットに関して、このビットがゼロである場合、全ての命令が許容されるとき、プロセッサは「スーパーバイザ(supervisor)状態」にある。このビットが1であるとき、実行が許容されるかどうかを、すなわち、例外が検出されないことを判断するために、何らかの追加の実行処理が要求される。アドレス空間ビットに関して、これらのビットは、変換モードを制御する。モードの1つ(AR−モード)において、ベース・レジスタ番号により指定されるアクセス・レジスタのコンテンツが、変換のために必要とされる。アドレス・モード・ビットに関して、これらのビットは、実効アドレス実効アドレス生成のサイズに影響を与える。「00」の値は、24−ビットのアドレス・サイズを示し、「01」の値は31−ビットのアドレス・サイズを示し、「11」の値は64−ビットのアドレス・サイズを示す。アドレス生成のサイズ及び使用は、多くの場合、「アドレッシング・モード(addressing mode)」と呼ばれる。
命令処理を変更する他のプロセッサ状態は、ミリモード状態、スローモード状態、エミュレーション・アクティブ状態等を含む。設定時のミリモード状態は、プロセッサが、プログラム・モード以外のプログラマには見えないコードを実行していることを示す。ミリモード・コードは、複雑な命令を実行し、プログラム例外、非同期例外等を処理するために用いられる。スローモード・ビットは、プロセッサが、主として、正確な例外を報告し、かつ、マルチ処理システムにおけるフォワード・プログレス(forward progress)を呈するために用いられる単一の命令(命令のフェッチから完了まで)を実行しているときに設定される。
これらの識別された値に基づいて、IDU214は、デコードされた命令の処理を変更する。1つの好ましい実施形態において、以下により詳細に説明されるように、デコードされた命令の処理は、識別されたマシン状態に基づいて命令を分割することによって変更することができ、識別されたマシン状態に基づいて命令を短縮化することができ、及び/又は、識別されたマシン状態に基づいて、命令をミリコード化する(millicode)ように強制することができる。
以下の例は、識別されたマシン状態に基づいて、命令を分割すること、短縮化すること、及び/又はミリコードで実行されるように強制することによって、デコードされた命令の処理がどのように変更されるかを示す。本発明の種々の好ましい実施形態は、他の命令セットにも適用可能であるので、以下の例で用いられる命令セットは限定されるものではないことに留意すべきである。
上述のように、種々の命令は、1つの好ましい実施形態においては、アドレス・モード・ビットにより与えられるマシン状態に影響を受けやすい。メモリ・アドレスを可変サイズとして指定できるとき、z−マイクロプロセッサを含む現在のマイクロプロセッサは、異なるアドレス・モードでアプリケーションを実行する。z−プロセッサにおいて、アドレスのサイズは、アドレッシング・モードに応じて、24ビット、31ビット、及び64ビットとすることができる。アドレッシング・モード・ビットは、PSWのビット31:32である。アドレス生成(AGEN)は、ベース・レジスタ及び指標(index)レジスタを命令の変位(displacement)フィールドに付加することによって形成される。汎用レジスタ(GPR)は、64ビット・レジスタ番号として指定され、ここで上位ワード(high word)(ビット0:31)及び下位ワード(low bit)の32ビット(ビット32:63)が別々に制御される。例えば、GPRの上位ワード及び下位ワードは、マッピングされ、異なるようにリネームされ、2つの異なる物理レジスタを指し示すことができる。換言すれば、16のアーキテクチャ化されたGPRは、一方の組がGPRの上位部分を含み、他方の組がGPRの下位部分を含む、2つのGPRの組と考えることができる。
64ビットのアドレッシング・モードにおいて、ベース・レジスタ及び指標レジスタの上位ワード及び下位ワードは、AGEN計算のためのソースである。アドレス・モード・ビットが、z−プロセッサのようなマイクロプロセッサの命令フェッチ・ユニットにおいて予測される。命令デコード・ユニットに送られた命令が、予測されたアドレッシング・モード・ビット(命令キャッシュから命令をフェッチするために用いられるアドレッシング)、及び、命令がミリコード命令空間からフェッチされたかどうかを識別するミリコード・ビットと共に提示される。AGEN計算に用いられるベース・レジスタ及び指標レジスタに加えて、オペランド・アクセスがアクセス・レジスタ・モード(AR−モード)で行われたとき、キャッシュ・オペランドのアドレス変換のために、ベース・レジスタ番号(AR−ベース)により指定されるアクセス・レジスタが必要である。AR−モードは、PSWビット16:17(アドレス空間)、ビット5(DATビット)及び他のミリコード制御レジスタ・ビットによって指定される。
アドレス・モード・ビットに影響を受けやすい1つの命令セットは、BASR、BAS、BAL及びBALR命令のような分岐の保存及びリンクである。これらの命令は、第2のオペランド(BALR/BASRにおいてはGPR−R2、及びBAL/BASにおいてはGPR−B2+D2)によって指定される新しい命令のアドレスに分岐する。さらに、更新された命令アドレスを含むプログラム状況ワード(PSW)からの情報は、第1のオペランド位置におけるリンク情報として保存される。保存されるPSW情報は、PSWビット31及び32によって指定されるアドレッシング・モード・ビットを含む。
1つの好ましい実施形態において、マシン状態判断ユニット246は、現在のマシン状態が、PSWにおけるアドレス・モード・ビットにより示されるような24ビット・アドレス・モードであるか又は31ビット・アドレス・モードであるかを判断する。この好ましい実施形態において、分割ユニットは、命令を、図3に示される3つのUopのような所与の数のUopに分割する。第1のUop1 302は、分岐ターゲット・アドレスを計算する。第2のUop2 304は、実行される次の命令のアドレス(命令アドレスIA+命令長コード)を定め、計算し、結果をスクラッチGPRに格納する。第3のUop3 306は、分割前のマシン状態を示すリンク情報をGPRに格納する。この好ましい実施形態においては、リンク情報は、PSWのビット32内に見出される。
マシン状態判断ユニット246が、現在のマシン状態が64ビット・アドレス・モードであると判断された場合、図3及び図4に示されるように、短縮化ユニット248は、命令の分割を、3Uopではなく2Uopに短縮化する。この好ましい実施形態において、分割ユニットは、命令を、図4に示される2つのUopのような所与の数のUopに分割する。第1のUop1は、分岐ターゲット・アドレスを計算する。第2のUop2は、実行される次の命令のアドレス(命令アドレスIA+ILC(命令長コード))を計算し、結果をスクラッチGPRに格納する。図に示すように、命令は、プロセッサのアドレッシング・モードに応じて、異なるように分割される。
別の好ましい実施形態においては、それぞれ、24ビット・モード及び31ビット・モードにおけるBAL/BALRについての図5及び図6に示されるように、マシン状態判断ユニット246は、現在のマシン状態が、PSWにおけるアドレス・モード・ビットにより示される24ビット・アドレス・モードであるか、又は31ビット・アドレス・モードであるかを判断する。この好ましい実施形態において、分割ユニットは、命令を、図5及び図6に示される3つのUopのような所与の数のUopに分割する。第1のUop1は、分岐ターゲット・アドレスを計算する。第2のUop2は、実行される次の命令のアドレス(命令アドレスIA+ILC(命令長コード))を計算し、結果をスクラッチGPRに格納する。第3のUopは、24ビット・モードにおけるBAL/BALRについての図5における、条件コード、命令長コード、及びプログラム・マスク(PSW(20:23))のようなリンク情報と、分割前のマシン状態を示す、GPRの31ビット・モードにおけるBAL/BALRについての図6における、PSWのビット31内に見出されるリンク情報とを格納する。
次の例は、命令をミリコードで実行されるように強制することに関するものである。ミリコードは、外部アプリケーション又はコンパイラには見えないが、ライセンスを受けた内部コードによって用いられる。命令がハードウェアによって実行するのに複雑すぎる場合、命令をミリコードで実行されるように強制される。ミリコードは、垂直型マイクロコードと考えることができ、そこでは、ミリコードで実行されるあらゆる命令について、プロセッサがミリコード空間(ストレージ・システム領域)から固有の組の命令(発行済みの1つのミリコード特別支援命令)をフェッチし、それらを実行する。命令をミリコード化するように強制するには、多くの場合、ミリ入力シーケンス(milli-entry sequence)として知られるUopのシーケンスが必要である。命令のデコード時に、命令は、それが「複雑」であるかが評価され、「複雑」である場合、通常の命令のディスパッチ・シーケンスの代わりに、ミリ入力Uopのシーケンスがディスパッチされる。以下は、ハードウェアをトリガして、所与の命令をミリコード化するように強制するマシン状態判断ユニット246により調べられる条件の一部である。
マシン状態判断ユニット246が検出する1つの条件は、命令がエミュレーション・モード下にあるかどうか(ホストとしてではなく、ゲスト1及びゲスト2において実行されているコード)、及び、SIE(Start Interpretive Execution、解釈実行開始)インターセプトが可能であるかどうか、又は、ロード及び制御(LCTL/LCTLG)命令などにおいて、命令がエミュレーション・モードでCR−Eをロードしているかどうかである。LCTL/LCTLGにおいて、命令は、CR−R1からCR−R3までのレジスタ範囲を制御し、第2のオペランド位置によって指定されるメモリからロードされる。第2のオペランド・アドレスは、命令テキストにおいて指定された変位フィールド(D2フィールド)に付加されたGPR−B2のコンテンツと等しくなる。
SIEインターセプトは、エミュレーション・モードでは実行できない命令によりトリガすることができ、インターセプトは、制御をホストに戻す。この好ましい実施形態において、マシン状態判断ユニット246は、制御レジスタを分析して、命令がエミュレーション・モード下にあるかどうかを示す1つ又は複数の制御ビットを識別する。命令がエミュレーション・モード下にある場合、命令は、ミリコードで実行されるように強制される。
マシン状態判断ユニット246が検出する別の条件は、SPKA(Set Program PSW Key)命令のような命令が、問題状態にあるかどうかである。この好ましい実施形態において、マシン状態判断ユニット246は、PSWを分析して、ビット15が1に設定されるかどうかを判断し、ここで、1は問題状態を示す。この条件が真である場合、命令はミリコードで実行されるように強制される。
別の例において、マシンの状態は、内部ラッチ、又は、動的にプログラムされたラッチ又はレジスタの組を設定することによって表わされる設計状態によって指し示される。この例において、マシン状態判断ユニット246は、ディスエーブル・ラッチ(スキャン・オンリー・ラッチ(scan only latch))又は動的にプログラムされたラッチが特定の値に設定されているか又は特定の値と等しいかどうかを判断する。特定の値に設定されている又は特定の値と等しい場合、命令は、ミリコードで実行されるように強制される。スキャン・オンリー・ラッチは、技術データを設計にスキャンすることにより、システムの起動時に初期化される。換言すれば、これらのラッチは、電源投入時に、常に所与の値に初期化される。対照的に、システムが実行されている間、動的にプログラムされたラッチ又はレジスタを所定の値に設定することが可能である。
別の条件は、命令の重複に関するものであり、これは、命令の命令テキストに基づいて判断することができる。この例においては、シリアル化オペコード機構が、マシン状態判断ユニット246により与えられ、デコード時に、デコードされた命令のオペコードが保存されたオペコードと合致するかどうかを判断する。例えば、これに限定されるものではないが、MVC命令のような命令が、最初に及びAGEN(オペランド・アドレス生成)時に、正常にディスパッチされた場合、マシン状態判断ユニット246は、命令オペランドが破壊的に重複していると判断する。次に、MVC命令がフラッシュされ、命令をミリコード化するように強制するためのアクションが取られる。次に、命令は、Iキャッシュからフェッチされ、デコード論理に与えられる。次に、デコード論理は、今回は、命令がミリコード化するように強制されると判断するので、動作は一度に1バイトだけより低速で実行される。
更に別の条件は、BALR、BSM、BASSM及びBASR命令のような分岐命令に向けられる。この例においては、マシン状態判断ユニット246は、分岐のトレース(tracing)が可能であるかどうかを判断する。分岐トレース・モードにおいては、分岐ターゲット・アドレスのような分岐命令についての情報は、ソフトウェアのデバッグ(debugging)目的などの理由のために、メモリ領域内に格納される。例えば、マシン状態判断ユニット246は、制御レジスタ12のような制御レジスタを調べ、分岐トレースが可能であるかどうかを判断する。分岐トレースが可能である場合、命令は、ミリコードで実行されるように強制される。
別の条件は、SAM24、SAM31及びSAM64命令のようなアドレス・モード命令の設定に向けられる。この例においては、マシン状態判断ユニット246は、モード・トレースが可能であるかどうかを判断する。モード・トレース・モードにおいて、アドレッシング・モードを更新する命令についての情報は、ソフトウェアのデバッグ目的などの理由のために、メモリ内に格納される。例えば、マシン状態判断ユニット246は、制御レジスタ12のような制御レジスタを調べ、モード・トレースが可能であるかどうかを判断する。モード・トレースが可能である場合、命令は、ミリコードで実行されるように強制される。
別の例では、マシン状態判断ユニット246は、選択されたモニタ・クラスが、これに限定されるものではないが、Monitor Call(MC)命令のような命令に対して可能であるかどうかも判断する。この例では、マシン状態判断ユニット246は、命令テキスト12:15を、制御レジスタの8ビット48:62と比較する。マシン状態判断ユニット246が、選択されたモニタ・クラスのいずれかが可能であると判断した場合、命令は、ミリコードで実行されるように強制されるので、ファシリティ及びプログラムの監視が行われる。
上述した条件に基づいて、命令がミリコード化するように強制された場合、分割ユニット244は、命令を1組のUopに分割する。一例において、ミリ入力シーケンスは、最大9個のUopを含む。第1のUop、すなわちUop1:MGR9←1st operand address(第1のオペランド・アドレス)は、第1のオペランドのアドレスを計算し、このアドレスを、MGR9のようなミリコードGRに格納する。第1のオペランド・アドレスは、命令フォーマットに基づいて計算される。例えば、RX−フォーマットについては、第1のオペランド・アドレスは、ベースGPR値+指標GPR+変位値と等しくなる。
第2のUop、すなわちUop2:MAR9←AR−Base(AR−ベース)は、変換に必要とされるアクセス・レジスタ番号を保存する。ミリコードAR−レジスタ9は、アクセス・レジスタ(AR)モードにおける変換のために用いられるプログラム・アクセス・レジスタ(AR−reg)から設定される。RX/RS/SSフォーマットにおいて、AR−ベース・レジスタは、変換のために用いられるARである。第3のUop、すなわちUop3は、アクセス・キー、アドレス・モード、アドレス空間等のようなビットをPSWからコピーし、これらのビットを、オペランド・アクセス制御レジスタ(Operand Access Control Register)と名付けられた内部ミリコード制御レジスタ内に格納する。オペランド・アクセス制御レジスタは、オペランド・アクセス及びAGEN計算のために、プログラムPSWの代わりに用いられる。
第4のUop、すなわちUop4:MGR11←2nd operand address(第2のオペランド・アドレス)は、第2のオペランド・アドレスが計算されることを除いて、第1のUopと類似している。Uop1と同様に、第2のオペランド・アドレスは、命令構成に基づいて計算される。例えば、SSフォーマットの命令については、第2のオペランド・アドレスは、Base2 GPR値+変位2値と等しい。このUopは、2つのメモリ・オペランドを含む命令のためのものである。第5のUop、すなわちUop5:MAR11←AR−Base2(AR−ベース2)は、Uop2と類似しているが、第1のオペランドではなく第2のオペランドに向けられる。第6のUop、すなわちUop6では、別のミリコード制御レジスタが、命令フォーマット及びその命令試験ビットに基づいて更新される。このUopは、ミリコードでの命令の実行を容易にする。
第7のUop、すなわちUop7:MGR5←1st operand length for some instruction types(何らかの命令のタイプについての第1のオペランド長)は、第1の演算のオペランド長を格納する。第8のUop、すなわちUop8:MGR7←2nd operand length for some instruction types(何らかの命令のタイプについての第2のオペランド長)は、第2の演算のオペランド長を格納する。第9のUop:Uop9は、ミリコードの入力は、サブルーチンへの分岐と類似しているため、分岐Uopであり、これは分岐予測論理により予測することができる。
別の例では、マシン状態判断ユニット246は、アドレッシング・モード・ビットの関数として、GPR(下位ワード対全ダブルワード(double word))ターゲットのサイズを分析する。ロード・アドレス・タイプの命令(例えば、LA、LAY、LAE、LAEY及びLARL)についてのGPRターゲット・サイズ(下位ワード対全ダブルワード)もまた、アドレッシング・モード・ビットの関数である。ロード・アドレス・タイプの命令に関して、B2、X2及びD2によって指定される実効アドレスは、汎用レジスタR1に入れられる。実効アドレス(GPR−B2+GPR−X2+D2)のサイズは、24ビット・アドレッシング・モードにおいては24ビットであり、31ビット・アドレッシング・モードにおいては31ビットであり、64−ビット・アドレッシング・モードにおいては64ビットである。アドレッシング・モードは、PSWにおいて識別される。24ビット・アドレッシング・モード及び31ビット・アドレッシング・モードにおいては、GPR−R1の下位ワード(下位32ビット)だけが更新され、上位ワードは変更されないままである。64ビットにおいては、アドレスは、64ビットGPR−R1全体を更新する。
上述のように、24ビット・アドレス・モード及び31ビット・アドレス・モードにおいて、GPR−R1の下位32ビット(ビット32:63)だけが新しい値で更新される一方、GPRのビット0:31は変更されないままである。64ビット・アドレス・モードにおいては、GPR−R1のビット0:63が更新される。異なるアドレッシング・モードを有するプロセッサにおいては、GPRの下位ワード(ビット32:63)は、GPRの上位ワード(ビット0:31)とは別個に物理レジスタにマッピングされる。その結果、命令のデコード・サイクル中、アドレッシング・モードが調べられ、24ビット・アドレス・モード又は31ビット・アドレス・モードのいずれかの場合、GPR−R1の下位ワードだけが命令のターゲットとして識別され、結果的に、GPR−R1の下位ワードだけが物理レジスタにマッピングされる。GPRの下位ワードだけがターゲットとして指定された場合、マッパー(mapper)の半分がクロック制御されないので、GPRソース/ターゲットの正しいサイズを定めることは、電力の利点も有する。
更に別の例において、マシン状態判断ユニット246は、アドレス・モードの関数として、GPR読み出しのサイズ(32ビットの読み出し対64ビットの読み出し)を分析する。キャッシュ・アクセス(ロード、ストア)、分岐ターゲット、及びロード・アドレス命令のために用いられるアドレス生成(AGEN)計算は、アドレス・モードに依存する。オペランド・アドレス及び分岐ターゲットは、24ビット・アドレス・モードにおいては24ビットとして、31ビット・アドレス・モードにおいては31ビットとして、及び64ビット・アドレス・モードにおいては64ビットとして定められる。従って、命令のデコード時に、アドレス・モードが調べられ、24ビット・モードにあるか又は31ビット・モードにあるかが判断され、次に、ベース・レジスタ及び指標レジスタの上位ワード(ビット0:31)が、AGEN計算についてのソースとして識別されない。このことは、マッパーがベース/指標レジスタの上位ワードを参照することに関する電力の節約をもたらし、より古い命令がベース・レジスタ又は指標レジスタのビット0:31を更新している場合、検出に対するいずれのGPRインターロックも除去する。
別の例では、マシン状態判断ユニット246は、アドレス空間(PSW(16:17))及びPSW(5)の関数として、アクセス・レジスタ(AR−reg)ソースを分析する。データ・キャッシュ・アクセス・アドレスは、論理アドレスから絶対アドレスに変換される。オペランド・アクセスのために用いられる1つの変換モードは、アクセス・レジスタ・モード(AR−モード)変換である。このモードにおいて、AR−regコンテンツは、変換のために用いられる。ベース・レジスタ及び指標レジスタを有するRX−ロード/ストアについては、フェッチ/ストアがAR−モードで行われた場合、変換のためにAR−ベースのコンテンツが必要とされる。AR−モードは、PSW(16:17)=“01”として定められ、DATビット(PSW(5))又は他の制御状態のいずれかがアクティブである。従って、命令のデコード時に、マシン状態判断ユニット246は、キャッシュ・アクセスがAR−モードにあるかどうかをチェックし、それに応じて、AR−ベースをソースとして設定する。従って、キャッシュ・アクセスがAR−モードにない場合、AR−ベースは、AGENについてのソースとして識別されず、そのマッピングされた物理レジスタ番号を参照しないことにより、電力が節約され、より古い命令が、AR−ベースを更新している場合には、検出に対する命令の依存も除去される。
上の議論から分かるように、本発明の種々の好ましい実施形態は、デコードされた命令の処理を変更する。1つの好ましい実施形態において、デコードされた命令の処理は、識別されたマシン状態に基づいて命令を分割することによって変更することができ、命令は、識別されたマシン状態に基づいて短縮化することができ、及び/又は、命令は、識別されたマシン状態に基づいて、ミリコード化するように強制することができる。マシン状態は、アドレス・モード・ビット(PSW(31:32))、アドレス空間ビット(PSW(16:17))、問題状態ビット(PSW(15))のようなPSWビットから判断することができる。命令の処理を変更する他のプロセッサ状態ビットは、ミリモード・ビット、スローモード・ビット、エミュレーション・アクティブ・ビット等を含む。また、実際の命令テキスト自体が「マシン状態」と考えられ、デコードされた命令の処理を変更するために用いられる。
動作フロー図
図7は、マシン状態に基づいて命令を分割する一例を示す動作フロー図である。図7の動作フロー図は、ステップ702で開始し、直接ステップ704に流れる。ステップ704において、IDU214は、命令を受信する。ステップ706において、IDU214は、命令をデコードする。ステップ708において、IDU214は、マシン状態判断ユニット24を介して、図2乃至図6に関して上述されたように現在のマシン状態を判断する。ステップ708の結果に応じて、図示されるようなn個の分割シーケンスから、1つの分割シーケンスを選択する。分割シーケンス1について、ステップ710において、IDU214は、分割ユニット244を介して、少なくとも1つの命令を1組の操作単位に編成する。次にステップ712において、操作単位の組を実行する。次にステップ714において、制御の流れが終了する。分割シーケンス2についても同様に、ステップ720において、IDU214は、分割ユニット244を介して、少なくとも1つの命令を1組の操作単位に編成する。次にステップ722において、操作単位の組を実行する。次にステップ724において、制御の流れが終了する。また、分割シーケンスNについては、ステップ730において、IDU214は、分割ユニット244を介して、少なくとも1つの命令を操作単位の組に編成する。次にステップ732において、操作単位の組を実行する。次にステップ734において、制御の流れが終了する。
限定されない例
本発明の特定の好ましい実施形態が開示されたが、当業者であれば、本発明の精神及び範囲から逸脱することなく、特定の好ましい実施形態に変更を行い得ることを理解するであろう。従って、本発明の範囲は、特定の好ましい実施形態に制限されるものではなく、添付の特許請求の範囲は、本発明の範囲内のありとあらゆるこうした用途、修正及び好ましい実施形態をカバーすることが意図される。
本発明の種々の例示的な好ましい実施形態が、完全に機能的なコンピュータ・システムの文脈において説明されたが、当業者であれば、種々の好ましい実施形態は、例えばCD、CD ROM、又は他の形態の記録可能媒体などのCD又はDVDを介して、或いは、いずれかのタイプの電子伝送機構を介して、プログラム製品として分散させることが可能であることを理解するであろう。
100:並列分散処理システム
102、104:処理ノード
106、108:ネットワーク・アダプタ
110、112:オペレーティング・システム・イメージ
114、116:チャネル・コントローラ
118、120:メモリ
122、124:プロセッサ
126、128:システム・メモリ・バス
130、132:システム入力/出力バス
134、136:I/Oアダプタ
138:ネットワーク・スイッチ
140:大容量記憶インターフェース
142:大容量記憶装置
144:CD
200:プロセッサ・コア
202:バス・インターフェース・ユニット
204:L1データ・キャッシュ(Dキャッシュ)
206:L1命令キャッシュ(Iキャッシュ)
208:キャッシュ・インターフェース・ユニット
210:命令取り出しユニット(IFU)
212:命令解読ユニット(IDU)
214:命令シーケンサ・ユニット(ISU)
216:固定小数点ユニット(FXU)
218:浮動小数点ユニット(FPU)
220:2進浮動小数点ユニット
221:10進浮動小数点ユニット
222:グローバル完了テーブル(GCT)
224:汎用レジスタ(GPR)
226:浮動小数点レジスタ(FPR)
230:ロード・ストア・ユニット(LSU)
232:ロード・キュー(LDQ)
234:ストア・キュー(STQ)
236:ストア・バッファ(STB)
238、240、242:エントリ
244:分割ユニット
246:マシン状態判断ユニット
248:命令短縮化ユニット

Claims (14)

  1. マシン状態に基づいて、命令の実行を管理するための方法であって、前記方法は、
    少なくとも1つの命令を受信するステップと、
    プロセッサ・コアの命令デコード・ユニットにより、前記少なくとも1つの命令をデコードするステップと、
    前記命令デコード・ユニットにより、前記デコードするステップに応答して、現在のマシン状態を判断するステップと、
    前記判断されたマシン状態が、エミュレーション・モードである場合、前記少なくとも1つの命令をミリコードで実行するステップと、
    前記命令デコード・ユニットにより、前記判断された現在のマシン状態に基づいて、前記少なくとも1つの命令を、一定サイズの発行キューに対する1組の操作単位に分割するステップであって、実行ステップおよび実行パイプの一方または両方を減少させることによって命令の実行が変更される、ステップと、
    前記少なくとも1つの命令を実行するステップであって、1または複数の実行ユニットにより前記操作単位の組を実行することを含む、ステップと、を含み、
    前記分割するステップは、少なくとも第1のアドレス・モード及び第2のアドレス・モードのうちの1つと関連付けられたマシン状態の判断に基づいて実行され、前記分割するステップがさらに、
    前記マシン状態が前記第1のアドレス・モードと関連付けられている場合、前記少なくとも1つの命令を第1の複数の操作単位に分割するステップと、
    前記マシン状態が前記第2のアドレス・モードと関連付けられている場合、前記少なくとも1つの命令を、前記第1の複数の操作単位より少なくとも1つ少ない操作単位を含む、第2の複数の操作単位に分割するステップと、
    を含む、方法。
  2. 前記判断するステップは、
    1組のマシン状態制御ビット及び前記少なくとも1つの命令と関連した命令テキストのうちの少なくとも1つを分析するステップをさらに含む、請求項1に記載の方法。
  3. 前記マシン状態制御ビットの組は、
    1組のプログラム状況ワード・ビットと、
    ミリコード状態と、
    スローモード状態と、
    エミュレーション・アクティブ状態と、
    のうちの少なくとも1つを含む、請求項2に記載の方法。
  4. 前記プログラム状況ワード・ビットの組は、
    1組のアドレス・モード・ビットと、
    アドレス空間ビットと、
    問題状態ビットと、
    のうちの少なくとも1つを含む、請求項3に記載の方法。
  5. 前記マシン状態は、
    エミュレーション・モードと、
    問題状態と、
    シリアル化されたオペコード・モードと、
    分岐トレース・モードと、
    モード・トレース・モードと、
    監視クラス選択モードと、
    のうちの少なくとも1つであると判断される、請求項1に記載の方法。
  6. 前記分割するステップは、前記少なくとも1つの命令がミリコードで実行されるとの判断に基づいており、前記操作単位の組は、
    第1のオペランドのアドレスを定める第1の操作単位と、
    前記第1のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第2の操作単位と、
    現在のプログラム状況ワード値に基づいて、少なくとも1つのミリコード制御レジスタを設定する第3の操作単位と、
    第2のオペランドのアドレスを定める第4の操作単位と、
    前記第2のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第5の操作単位と、
    前記少なくとも1つの命令の命令テキストの少なくとも一部分を、ミリコード制御レジスタにコピーする第6の操作単位と、
    前記第1のオペランドの長さをミリコード汎用レジスタに格納する第7の操作単位と、
    前記第2のオペランドの長さをミリコード汎用レジスタに格納する第8の操作単位と、
    分岐操作単位である第9の操作単位と、
    のうちの少なくとも1つを含む、請求項1に記載の方法。
  7. 前記現在のマシン状態を判断するステップは、
    前記少なくとも1つの命令と関連した汎用レジスタのサイズを、1組のアドレス・モード・ビットの関数として定めるステップをさらに含む、請求項1〜6のいずれか1項に記載の方法。
  8. 前記現在のマシン状態を判断するステップは、
    前記少なくとも1つの命令と関連した汎用レジスタの読み出しタイプを、1組のアドレス・モード・ビットの関数として定めるステップをさらに含む、請求項1〜7のいずれか1項に記載の方法。
  9. 前記現在のマシン状態を判断するステップは、
    アドレス空間ビットが所定の値であり、かつ、DATビットまたは他の制御状態がアクティブである場合に、アクセス・レジスタ・モードであるとし、アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタを、アドレス生成のためのソースとするステップをさらに含む、請求項1〜8のいずれか1項に記載の方法。
  10. マシン状態に基づいて命令の実行を管理するための情報処理システムであって、前記情報処理システムは、
    プロセッサと、
    前記プロセッサに通信可能に結合されたメモリと、
    少なくとも1つの命令を受信し、
    前記少なくとも1つの命令をデコードする、
    ように動作可能な命令デコード・ユニットと、
    前記少なくとも1つの命令がデコードされることに応答して、現在のマシン状態を判断するための前記命令デコード・ユニット内のマシン状態判断ユニットと、
    判断された前記現在のマシン状態に基づいて、前記少なくとも1つの命令を、一定サイズの発行キューに対する1組の操作単位に分割するための前記命令デコード・ユニット内の命令分割ユニットと、
    実行ステップおよび実行パイプの一方または両方を減少させることによって命令の実行を変更する前記命令デコード・ユニット内の命令短縮化ユニットと
    を含み、
    前記マシン状態判断ユニットが、マシンの状態を、エミュレーション・モードであると判断したことに対応して、前記少なくとも1つの命令をミリコードで実行し、
    前記命令分割ユニットは、少なくとも第1のアドレス・モード及び第2のアドレス・モードのうちの1つと関連付けられたマシン状態に基づき、
    前記マシン状態が前記第1のアドレス・モードと関連付けられている場合、前記少なくとも1つの命令を第1の複数の操作単位に分割すること、
    前記マシン状態が前記第2のアドレス・モードと関連付けられている場合、前記少なくとも1つの命令を、前記第1の複数の操作単位より少なくとも1つ少ない操作単位を含む、第2の複数の操作単位に分割することを実行し、
    前記プロセッサは、前記少なくとも1つの命令の実行において、1または複数の実行ユニットにより前記操作単位の組を実行するように動作可能である、
    情報処理システム。
  11. 前記命令デコード・ユニットは、
    1組のマシン状態制御ビット、及び、前記少なくとも1つの命令と関連した命令テキストのうちの少なくとも1つを分析する、
    ようにさらに動作可能である、請求項10に記載の情報処理システム。
  12. 前記命令分割ユニットは、前記少なくとも1つの命令がミリコードで実行されるとの判断に基づいて、前記少なくとも1つの命令を分割するようにさらに動作可能であり、前記操作単位の組は、
    第1のオペランドのアドレスを定める第1の操作単位と、
    前記第1のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第2の操作単位と、
    現在のプログラム状況ワード値に基づいて、少なくとも1つのミリコード制御レジスタを設定する第3の操作単位と、
    第2のオペランドのアドレスを定める第4の操作単位と、
    前記第2のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第5の操作単位と、
    前記少なくとも1つの命令の命令テキストの少なくとも一部分を、ミリコード制御レジスタにコピーする第6の操作単位と、
    前記第1のオペランドの長さをミリコード汎用レジスタに格納する第7の操作単位と、
    前記第2のオペランドの長さをミリコード汎用レジスタに格納する第8の操作単位と、
    分岐操作単位である第9の操作単位と、
    のうちの少なくとも1つを含む、請求項10または請求項11記載の情報処理システム。
  13. マシン状態に基づいて命令の実行を管理するためのコンピュータ可読ストレージ媒体であって、
    処理回路により読取可能であり、かつ、前記処理回路に請求項1から請求項9までのいずれかに記載の方法を実行させるための、前記処理回路により実行するための命令を格納した、コンピュータ可読ストレージ媒体。
  14. コンピュータ可読媒体上に格納され、かつ、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたとき、請求項1から請求項9までのいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
JP2012555308A 2010-03-05 2010-11-08 マシン状態に基づいた命令の分割 Active JP5808348B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/718,685 2010-03-05
US12/718,685 US8938605B2 (en) 2010-03-05 2010-03-05 Instruction cracking based on machine state
PCT/EP2010/067055 WO2011107170A1 (en) 2010-03-05 2010-11-08 Instruction cracking based on machine state

Publications (2)

Publication Number Publication Date
JP2013521551A JP2013521551A (ja) 2013-06-10
JP5808348B2 true JP5808348B2 (ja) 2015-11-10

Family

ID=43126986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012555308A Active JP5808348B2 (ja) 2010-03-05 2010-11-08 マシン状態に基づいた命令の分割

Country Status (5)

Country Link
US (1) US8938605B2 (ja)
EP (1) EP2430526B1 (ja)
JP (1) JP5808348B2 (ja)
CN (1) CN102792265B (ja)
WO (1) WO2011107170A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2862062B1 (en) 2012-06-15 2024-03-06 Intel Corporation A virtual load store queue having a dynamic dispatch window with a distributed structure
KR101825585B1 (ko) 2012-06-15 2018-02-05 인텔 코포레이션 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들
KR101996462B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐
CN107748673B (zh) 2012-06-15 2022-03-25 英特尔公司 包括虚拟加载存储队列的处理器和系统
EP2862084A4 (en) 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
KR101826399B1 (ko) 2012-06-15 2018-02-06 인텔 코포레이션 Load store 재정렬 및 최적화를 구현하는 명령어 정의
JP6122749B2 (ja) * 2013-09-30 2017-04-26 ルネサスエレクトロニクス株式会社 コンピュータシステム
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
US10613862B2 (en) 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
US10789069B2 (en) * 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10620956B2 (en) 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10360036B2 (en) 2017-07-12 2019-07-23 International Business Machines Corporation Cracked execution of move-to-FPSCR instructions
US10592246B2 (en) 2017-07-12 2020-03-17 International Business Machines Corporation Low latency execution of floating-point record form instructions
US11249760B2 (en) * 2019-04-10 2022-02-15 International Business Machines Corporation Parameter management between programs
US11294695B2 (en) 2020-05-28 2022-04-05 International Business Machines Corporation Termination of programs associated with different addressing modes
US11327766B2 (en) 2020-07-31 2022-05-10 International Business Machines Corporation Instruction dispatch routing
CN115691088B (zh) * 2023-01-04 2023-05-02 上海海栎创科技股份有限公司 一种控制信号传输单元、系统及方法

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5530727A (en) * 1978-08-22 1980-03-04 Nec Corp Information processor
JPS6057438A (ja) * 1983-09-08 1985-04-03 Hitachi Ltd 仮想計算機システム制御装置
US4604684A (en) * 1983-11-15 1986-08-05 Data General Corp. Digital computer having unique instruction decoding logic
US4873629A (en) * 1984-06-20 1989-10-10 Convex Computer Corporation Instruction processing unit for computer
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
US5097407A (en) * 1986-08-08 1992-03-17 Integrated Inference Machines Artificial intelligence processor
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
DE68927313T2 (de) * 1988-06-27 1997-05-07 Digital Equipment Corp Operandenspezifiererverarbeitung
IL92605A0 (en) 1988-12-19 1990-08-31 Bull Hn Information Syst Production line method and apparatus for high performance instruction execution
EP0374830A3 (en) 1988-12-19 1992-03-18 Bull HN Information Systems Inc. Control store address generator for developing unique instruction execution starting address
JPH02183830A (ja) 1988-12-21 1990-07-18 Internatl Business Mach Corp <Ibm> マイクロプログラム変換機構を有するコンピュータ
JP2504156B2 (ja) * 1989-01-25 1996-06-05 日本電気株式会社 情報処理装置
US5150468A (en) * 1989-06-30 1992-09-22 Bull Hn Information Systems Inc. State controlled instruction logic management apparatus included in a pipelined processing unit
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
JP2731618B2 (ja) * 1990-02-28 1998-03-25 日本電気アイシーマイコンシステム株式会社 エミュレータ
JPH04302329A (ja) * 1990-12-26 1992-10-26 Xerox Corp マイクロ処理システム
JP2677719B2 (ja) 1991-05-08 1997-11-17 富士通株式会社 情報処理装置
US5488707A (en) * 1992-07-28 1996-01-30 International Business Machines Corporation Apparatus for predicting overlapped storage operands for move character
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
JPH0713758A (ja) 1993-06-29 1995-01-17 Hitachi Ltd 命令デコード方法
JPH07129399A (ja) 1993-10-28 1995-05-19 Motohiro Kurisu 命令属性レジスターを使用して多機能命令を実行する マイクロコンピュータ
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
DE69506623T2 (de) * 1994-06-03 1999-07-22 Motorola Inc Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
US5666506A (en) * 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5802359A (en) * 1995-03-31 1998-09-01 International Business Machines Corporation Mapping processor state into a millicode addressable processor state register array
DE69616718D1 (de) * 1995-05-26 2001-12-13 Nat Semiconductor Corp Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5826089A (en) * 1996-01-04 1998-10-20 Advanced Micro Devices, Inc. Instruction translation unit configured to translate from a first instruction set to a second instruction set
US5742805A (en) * 1996-02-15 1998-04-21 Fujitsu Ltd. Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
US5621909A (en) * 1996-03-12 1997-04-15 International Business Machines Corporation Specialized millicode instruction for range checking
US5717910A (en) * 1996-03-29 1998-02-10 Integrated Device Technology, Inc. Operand compare/release apparatus and method for microinstrution sequences in a pipeline processor
US5918031A (en) * 1996-12-18 1999-06-29 Intel Corporation Computer utilizing special micro-operations for encoding of multiple variant code flows
US5781752A (en) * 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US5909567A (en) * 1997-02-28 1999-06-01 Advanced Micro Devices, Inc. Apparatus and method for native mode processing in a RISC-based CISC processor
US6058470A (en) * 1998-04-07 2000-05-02 International Business Machines Corporation Specialized millicode instruction for translate and test
US6219742B1 (en) * 1998-04-29 2001-04-17 Compaq Computer Corporation Method and apparatus for artificially generating general purpose events in an ACPI environment
US6092185A (en) * 1998-04-30 2000-07-18 International Business Machines Corporation Opcode compare logic in E-unit for breaking infinite loops, detecting invalid opcodes and other exception checking
JP3110404B2 (ja) * 1998-11-18 2000-11-20 甲府日本電気株式会社 マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
JP2000259408A (ja) 1999-03-08 2000-09-22 Texas Instr Inc <Ti> 遅延スロットにおけるソフトウェアブレークポイント
US6134646A (en) * 1999-07-29 2000-10-17 International Business Machines Corp. System and method for executing and completing store instructions
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6654869B1 (en) * 1999-10-28 2003-11-25 International Business Machines Corporation Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
JP3629551B2 (ja) 2000-01-06 2005-03-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 基本キャッシュ・ブロックを利用したマイクロプロセッサ
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
US20020152259A1 (en) * 2001-04-14 2002-10-17 International Business Machines Corporation Pre-committing instruction sequences
US6999952B1 (en) * 2001-04-18 2006-02-14 Cisco Technology, Inc. Linear associative memory-based hardware architecture for fault tolerant ASIC/FPGA work-around
US7082517B2 (en) * 2003-05-12 2006-07-25 International Business Machines Corporation Superscalar microprocessor having multi-pipe dispatch and execution unit
US7085917B2 (en) 2003-05-12 2006-08-01 International Business Machines Corporation Multi-pipe dispatch and execution of complex instructions in a superscalar processor
US20050223292A1 (en) * 2004-02-17 2005-10-06 Lee Chee S Single instruction type based hardware patch controller
US7716528B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for configurable trigger logic for hardware bug workaround in integrated circuits
US7269715B2 (en) * 2005-02-03 2007-09-11 International Business Machines Corporation Instruction grouping history on fetch-side dispatch group formation
US7577825B2 (en) * 2006-02-28 2009-08-18 Intel Corporation Method for data validity tracking to determine fast or slow mode processing at a reservation station
US20070288725A1 (en) * 2006-06-07 2007-12-13 Luick David A A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism
US8443227B2 (en) * 2008-02-15 2013-05-14 International Business Machines Corporation Processor and method for workaround trigger activated exceptions
US7962726B2 (en) * 2008-03-19 2011-06-14 International Business Machines Corporation Recycling long multi-operand instructions
US7987343B2 (en) * 2008-03-19 2011-07-26 International Business Machines Corporation Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass
US7941584B2 (en) * 2009-03-26 2011-05-10 Arm Limited Data processing apparatus and method for performing hazard detection

Also Published As

Publication number Publication date
US20110219213A1 (en) 2011-09-08
EP2430526B1 (en) 2019-12-25
CN102792265B (zh) 2016-01-20
JP2013521551A (ja) 2013-06-10
US8938605B2 (en) 2015-01-20
EP2430526A1 (en) 2012-03-21
WO2011107170A1 (en) 2011-09-09
CN102792265A (zh) 2012-11-21

Similar Documents

Publication Publication Date Title
JP5808348B2 (ja) マシン状態に基づいた命令の分割
US5781750A (en) Dual-instruction-set architecture CPU with hidden software emulation mode
US10768930B2 (en) Processor supporting arithmetic instructions with branch on overflow and methods
US9286072B2 (en) Using register last use infomation to perform decode-time computer instruction optimization
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
JP6807383B2 (ja) 転送プレフィックス命令
US9678756B2 (en) Forming instruction groups based on decode time instruction optimization
US20150242212A1 (en) Modeless instruction execution with 64/32-bit addressing
CN107832083B (zh) 具有条件指令的微处理器及其处理方法
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
US9372695B2 (en) Optimization of instruction groups across group boundaries
KR20180066146A (ko) 벡터 데이터 전송 명령어
WO2014090091A1 (en) Tracking multiple conditions in a general purpose register and instruction therefor
KR20180067582A (ko) 벡터 로드 명령어
US7814299B2 (en) Designating operands with fewer bits in instruction code by indexing into destination register history table for each thread
US8255674B2 (en) Implied storage operation decode using redundant target address detection
US8464030B2 (en) Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US20130198491A1 (en) Major branch instructions with transactional memory
US11106466B2 (en) Decoupling of conditional branches
US11347506B1 (en) Memory copy size determining instruction and data transfer instruction
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统
WO2013113595A1 (en) Major branch instructions with transactional memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130802

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140930

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20141015

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141016

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150414

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150709

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150714

TRDD Decision of grant or rejection written
RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150818

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150908

R150 Certificate of patent or registration of utility model

Ref document number: 5808348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150