JPH0773036A - 命令シーケンスを識別してタグを付加する方法 - Google Patents

命令シーケンスを識別してタグを付加する方法

Info

Publication number
JPH0773036A
JPH0773036A JP3096091A JP9609191A JPH0773036A JP H0773036 A JPH0773036 A JP H0773036A JP 3096091 A JP3096091 A JP 3096091A JP 9609191 A JP9609191 A JP 9609191A JP H0773036 A JPH0773036 A JP H0773036A
Authority
JP
Japan
Prior art keywords
instruction
instructions
sequence
identifying
byte
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP3096091A
Other languages
English (en)
Other versions
JPH087681B2 (ja
Inventor
Richard J Eickemeyer
リチャード・ジェームス・エイケメヤ
Stamatis Vassiliadis
スタマティス・バシリアディス
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 JPH0773036A publication Critical patent/JPH0773036A/ja
Publication of JPH087681B2 publication Critical patent/JPH087681B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3842Speculative instruction execution
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 各々の個々の命令の開始点または長さを知る
ことなしに命令ストリームから2つ以上の命令を複合化
する。 【構成】 全ての命令(33)は、所定のフィールド位
置に命令とその長さを識別する1つのオペレーションコ
ードを含む。これらの命令は、それらが複合化の候補で
あることを示す適切なタグTを有する必要がある。命令
の長さが2,4,6バイトのいずれかであるシステム3
70においては、オペレーションコードに対するフィー
ルド位置が評価された命令長コードに基づいて想定され
る。想定されたオペレーションコードに基づく各々のタ
グTの値が記録され、またこの想定されたオペレーショ
ンコードにおける命令長コードを用いて可能な命令の完
全なシーケンスを配置する。実際の命令境界が見出され
ると、対応する正しいタグ値を用いて複合命令の開始を
識別し、またその他の不正確に生成されたタグを無視す
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータにおける
命令の並列処理に係り、特に特定のコンピュータ構成に
おいて並列に実行できる命令を識別するために命令を含
む2進情報流を処理する方法に関する。
【0002】
【従来の技術】命令の並列実行の概念は、コンピュータ
システムの性能の改善に用いられている。並列実行は、
2つ以上の同一のまたは異なる命令を同時に実行できる
個別の機能ユニットを使用することに基づいてなされ
る。コンピュータシステムの性能を改善するために使用
される他の方法は、パイプライン方式である。このパイ
プライン方式は、これが多重命令を同時に実行すること
ができることから並列処理の形態を与える。
【0003】しかしながら、並列実行および/またはパ
イプライン方式の利点は、データ依存性インタロックお
よびハードウェア依存性インタロックによりもたらされ
るもののような遅延のために実現されない場合が多い。
データ依存性インタロックの例はいわゆる書込み/読出
しインタロックであり、このインタロックでは第1命令
がその結果を、第2命令がそれを読み出し使用できる前
に、書き込まなければならないようになっている。ハー
ドウェア依存性インタロックの例は、第1命令が特定の
ハードウェア要素を使用し、第2命令も同一の特定のハ
ードウェアを使用しなければならない場合である。
【0004】インタロック(パイプラインハザードと呼
ばれることが多い)を回避するために従来使用されてい
る方法の1つは、ダイナミック・スケジューリングであ
る。このダイナミック・スケジューリングは、実行直前
に命令ストリームのオペレーションコードが復号されて
命令が並列に実行され得るか否かを決定することを意味
している。このようなダイナミック・スケジューリング
の1つの形態を実施するコンピュータは、スーパスカラ
マシンと呼ばれることが多い。ダイナミック・スケジュ
ーリングに対する基準は、所定の命令処理ユニットにお
ける各々の命令セットアーキテクチュアの実現に対する
場合と同様に、そのアーキテクチュアに対して独自のも
のである。従って、ダイナミック・スケジューリングの
有効性は、命令のどの組合わせが並列に実行され得る
か、従って命令処理ユニットのサイクルタイムを増加さ
せるかを決定する拡張理論に通じるアーキテクチュアの
複雑性により制限される。このようなダイナミック・ス
ケジューリングに対するハードウェアやサイクルタイム
の増加は、多くの異なる命令を持つアーキテクチュアで
は一層大きな問題になる。
【0005】命令ストリームが記憶装置から実行のため
に取り出される前になされるいわゆるスタティック・ス
ケジューリングにより、性能を改善するいくつかの試み
がなされている。スタティック・スケジューリングは、
コードを移動し、それにより実行以前に命令シーケンス
を再配置することにより実現される。このような再配置
は、並列処理によりハードウェアをより十分利用する等
価な命令ストリームを生成する。このようなスタティッ
ク・スケジューリングは、コンパイル時間においてなさ
れるのが普通である。しかしながら、再配置された命令
はそれらの元の形態のままであり、また従来の並列処理
はなお、次の2つの命令を直列または並列に実行すべき
か否かを判定するために命令の実行直前に、ある形態の
ダイナミックな決定を必要としている。
【0006】上記ダイナミック・スケジューリングやス
タティック・スケジューリングまたはそれらの組合わせ
には、その他の問題点がある。例えば、各々のスカラ命
令が実行のために取り出されて並列実行に対するその能
力が決定されるごとに、各々のスカラ命令を再度レビュ
ーする必要がある。並列実行能力を有するスカラ命令を
予定より早く識別しフラグを立てる如何なる方法も与え
られていない。
【0007】スーパスカラマシンで実現される場合のダ
イナミック・スケジューリングには、スカラ命令が可能
な並列処理に対してチェックされる方法における他の問
題点がある。スーパスカラマシンはそれらのオペレーシ
ョンコードの記述に基づいてスカラ命令をチェックする
が、ハードウェアの利用を考慮する如何なる方法も与え
られていない。さらに、命令はFIFO(先入れ先出
し)の形で発生され、これによりインタロックの発生を
回避または最小にする選択的グループ分けの可能性が排
除される。
【0008】また、並列命令処理に対するハードウェア
要件を考慮しようとする幾つかの既存の方法が知られて
いる。このようなシステムのあるものは、非常に長い命
令ワード(Very Long Instructio
n word)マシンと呼ばれ、このマシンにおいて
は、ハードウェアの命令スケジューリングが簡単になる
ように非常に複雑なコンパイラが命令を再配置するよう
になっている。この方法においては、コンパイラは、命
令ストリームにおいて一層の並列性を見出すためにより
大きなウインドを使用できるように、標準コンパイラよ
り一層複雑になる。しかし、得られた命令は必ずしも予
め存在するアーキテクチュアとコンパティブルなオブジ
ェクトコードではなく、従って1つの問題は解決するが
新たな問題を生起することになる。さらに、並列性を制
限する頻繁な分岐に起因する他の問題も発生する。
【0009】命令の並列実行を更に十分に開発しようと
する最近の技術革新は、スカラブル複合命令セットマシ
ン(Scalable Compound Instr
uction Set Machines:SCIS
M)と呼ばれるものにより実現されている。。並列に実
行できる2つ以上の隣接スカラ命令のセットを求めるた
めに、命令ストリームを予め処理することにより複合命
令が生成される。ある場合には、ある種のインタロック
ド命令を並列実行のために複合化すると、特定のハード
ウェア構成においてインタロックを解消させることがで
きる。インタロックを解消させることができない他の構
成においては、データ依存性またはハードウェア依存性
インタロックを有する命令は、複合命令を形成するグル
ープから排除される。各々の複合命令は複合命令に関わ
るタグなどの制御情報により識別され、また複合命令の
長さは、2つのスカラ命令のセットから始まって、最大
数の個々のスカラ命令が特定のハードウェア実現により
処理可能なものに到るまでの範囲にわたってスカラブル
である。
【0010】命令が実行のために取り出されると、適切
な実行を可能にするために命令の境界を知ることが必要
になる。しかしながら、複合命令を生成するために命令
ストリームが予め処理される場合は、命令境界は単にバ
イト・ストリングを検討するだけでは明らかにならない
ことがある。これは、可変長命令を許容するアーキテク
チュアの場合は特に問題になることである。その他の複
雑な問題も、アーキテクチュアがデータと命令の混合を
許容するときに発生する。
【0011】例えば、IBMシステム370アーキテク
チュアにおいては、上記両方の問題点は適切なスカラ命
令のグループ分けを行う命令ストリームの予備処理を非
常に複雑な問題にする。第1に、命令は3つの可能な長
さ、すなわち2バイトまたは4バイトまたは6バイトを
有するが、特定命令の実際の長さが命令のオペレーショ
ンコードの最初の2ビットに示されても、バイトのスト
リングにおける命令の開始は単純な検査により容易には
識別することはできない。第2に、命令とデータは混合
可能であり、従って、命令バイト・ストリームにおける
基準点の有無は本発明にとっては非常に重要になる。基
準点は、どこで命令が始まるかまたはどこに命令境界が
存するかについての知識として定義される。もし、付加
的な情報が命令ストリームに付加されていないときは、
命令境界は単に、命令がCPUにより取り出されるコン
パイル時間または実行時間においてのみ知られるのが普
通である。
【0012】
【発明が解決しようとする課題】上記従来の方法の欠点
に鑑み、本発明の目的は、どこで命令が始まるかを知る
ことなしに、また命令の代りにどのバイトがデータを含
むかを知ることなしに2進命令ストリームから複合命令
を発生する方法を提供することにある。
【0013】本発明の他の目的は、命令ストリームに対
して、どこで複合命令が始まるかを示すと共に複合命令
に取り込まれるスカラ命令の数を示すグループ分け情報
を含む制御情報を付加することにある。
【0014】本発明の更に他の目的は、可変長命令およ
びこれらの命令に混合されたデータを有する複雑な命令
アーキテクチュアに適用でき、さらに命令が通常は一定
長であり、データが命令と混合されないRISCアーキ
テクチュアに適用できる方法を提供することにある。
【0015】本発明の更に他の目的は、命令ストリーム
を予備処理して、複合命令であってそれらの元の内容を
なお保持しているスカラ命令からなる複合命令を生成す
る方法を提供することにある。これに関連する目的は、
複合命令を形成するスカラ命令のオブジェクトコードを
変えることなしに複合命令を生成し、これにより既存プ
ログラムが、既に実現されたスカラ命令マシンとのコン
パティビリティを維持しながら複合命令マシンに対する
性能改善を実現することを可能にすることにある。
【0016】更に他の目的は、命令ストリームを予備処
理して複合命令を生成する方法であって、命令実行前に
コンピュータシステム内の種々の点でソフトウェアおよ
び/またはハードウェアにより実現できる方法を提供す
ることにある。これに関連する目的は、命令を予備処理
する方法であって、ポストコンパイラの一部として、ま
たはイン・メモリ複合化器の一部として、またはキャッ
シュ命令複合化ユニットの一部として2進命令ストリー
ムに対して動作すると共に、命令の境界を知ることなし
にバイト・ストリームの始めにおいて命令の複合化を開
始させることができる方法を提供することにある。
【0017】
【課題を解決するための手段】従って、本発明は、1組
の命令(またはプログラム)を予備処理してどの命令が
複合命令に結合されてよいかをスタティックに決定する
ことにより上記目的を実現しようとするものである。こ
のような処理は、特定のコンピュータシステム構成で並
列に実行できる命令クラスを求めるソフトウェアおよび
/またはハードウェア手段により代表的な実施例におい
てなされる。これらの命令クラスおよび複合化規則は実
現に対して特異的であり、また機能実行ユニットの数と
種類に従って変化する。個々の命令は、それらの元のシ
ーケンスおよびオブジェクトコードをそのまま維持しな
がら、選択的にグループ分けされると共に1つ以上の他
の隣接スカラ命令と結合されて、並列実行のための複合
スカラ命令と単一実行のための非複合スカラ命令の両者
を有する複合命令バイト・ストリームを形成する。制御
情報が付加されて複合命令の実行に関わる情報を識別す
る。
【0018】特に、本発明は、各々の個別命令の開始点
または長さを知ることなしに命令ストリームから2つ以
上のスカラ命令を複合化する方法を提供する。全ての可
能な命令シーケンスが、所定のフィールド位置において
想定された命令長を求めることにより考慮される。IB
Mシステム/370システムにおいては、命令長はオペ
レーションコードの一部をなしている。他のシステムで
は命令長はオペランドの一部である。本発明の方法を実
施する幾つかの場合において、2つの可能な命令シーケ
ンスの間には有効な収束が生じ、これにより命令境界に
対する可能な選択範囲を狭くしている。有効な収束が得
られない他の場合には、バイト・ストリームの最後まで
多くの可能な命令シーケンスが続く。実際の命令境界
は、命令が実行のために取り出されるまでは未知であ
る。従って、全てのオーセンティック(authent
ic)な命令および全てのスプリアス(spuriou
s)な命令が、ハードウェア構成に適用される特定の複
合化規則に基づいて識別タグビットと共に符号化され
る。IBMシステム/370アーキテクチュアにおいて
は、命令は命令長コードに基づいて、長さが2,4,6
バイトのいずれかである。各々の識別タグビットの値
(想定されたオペレーションコード位置に基づく)は、
可能な2,4または6バイト命令ごとに記録される。実
際の命令境界が実行時に見出されると、対応する正しい
タグ位置を用いて複合命令の開始および/または非複合
命令の開始を識別し、他の不正確に発生したタグは無視
される。
【0019】
【実施例】以下に詳細に説明する添付図面に示したよう
に、スカラブル複合命令セットマシン(Scalabl
e Compound Instruction Se
tMachine:SCISM)と呼ばれる最近の手法
では、スカラ命令ストリームは、それらが適切な命令実
行ユニットによる同時並列実行のために既にフラグを立
てられると共に識別されるように、命令デコードタイム
前に複合され、またはグループ分けされる。このような
複合化はオブジェクトコードを変化させないので、既存
のプログラムで、既に実現されたシステムとのコンパテ
ィビリティを維持しながら性能改善を達成することがで
きる。
【0020】図1に一般的に示すように、命令複合ユニ
ット20は、2進スカラ命令ストリーム21(データを
内部に含むかあるいは含まない)を取り、隣接スカラ命
令のいくつかを選択的にグループ分けして符号化複合命
令を形成する。従って、得られた複合命令ストリーム2
2は、並列実行のできないスカラ命令と、並列実行が可
能なスカラ命令のグループにより形成される複合命令と
を結合している。スカラ命令が命令処理ユニット24に
与えられると、それは逐次実行のために適切な機能ユニ
ットにルーティングされる。複合命令が命令処理ユニッ
ト24に与えられると、そのスカラ成分はそれぞれそれ
らの適切な機能ユニットまたはインタロック解消ユニッ
トにルーティングされ、同時並列実行に供される。通常
の機能ユニットは、限定されるものではないが、算術論
理ユニット(ALU)26,28、浮動小数点算術ユニ
ット(FP)30、および記憶アドレス発生ユニット
(AU)32を備えている。データ依存性解消ユニット
は、例えば、米国特許出願第07/504910号に示
されている。
【0021】本発明の方法は、サイクルあたり多重命令
を(ある命令は1以上のサイクルが実行されることを要
求するが)処理する全てのコンピュータ・アーキテクチ
ュアにおける命令の並列送出と並列実行を容易にするこ
とを意図したものである。
【0022】図2に示すように、本発明は、各々の機能
実行ユニットがスカラ命令(S)を、あるいは複合スカ
ラ命令(CS)を実行するユニプロセッサ環境内で実現
可能である。図に示したように、スカラ命令および複合
スカラ命令のシーケンスを含む命令ストリーム33は、
各々の複合命令に関わる制御タグ(T)を有している。
このようにして、第1スカラ命令34はサイクル1にお
いて機能ユニットAにより単独で実行可能であり、タグ
T3により識別される三重複合命令36はサイクル2に
おいて機能ユニットA,CおよびDにより並列に実行さ
れる3つの複合スカラ命令を有することができ、タグT
2により識別される他の複合命令38はサイクル3にお
いて機能ユニットAおよびBにより並列に実行される複
合スカラ命令対を有することができ、第2スカラ命令4
0はサイクル4において機能ユニットCにより単独で実
行することができ、大きなグループの複合命令42はサ
イクル5において機能ユニットA−Dにより並列に実行
される4つの複合スカラ命令を有することができ、さら
に第3スカラ命令44はサイクル6において機能ユニッ
トAにより単独で実行することができる。
【0023】多重複合命令は、あるコンピュータシステ
ムの構成において並列実行できることを実現することが
重要である。例えば、本発明は、複合命令がCPU(中
央処理ユニット)の1つにより並列処理の1単位として
処理される図3に示したマルチプロセッサ環境において
潜在的に実現することができる。図示のように、同じ命
令ストリーム33が次のように単に2サイクルのみで処
理できる。第1サイクルにおいては、CPU#1は第1
スカラ命令34を実行し、CPU#2の機能ユニットは
三重複合命令36を実行し、さらにCPU#3の機能ユ
ニットは複合命令38における2つの複合スカラ命令を
実行する。第2サイクルにおいては、CPU#1は第2
スカラ命令40を実行し、CPU#2の機能ユニットは
複合命令42の4つの複合スカラ命令を実行し、さらに
CPU#3の機能ユニットは第3スカラ命令44を実行
する。
【0024】複合命令の処理に適合できるコンピュータ
・アーキテクチュアの一例として、多重スカラ命令を送
出してマシンサイクル毎の実行に供することができるI
BMシステム/370命令レベルアーキテクチュアがあ
る。その場合、マシンサイクルは、スカラ命令を実行す
るのに必要な全てのパイプライン・ステップまたはステ
ージを参照する。スカラ命令は、単一値パラメータを表
わすオペランドに作用する。命令ストリームが複合化さ
れると、隣接スカラ命令は同時または並列実行のために
選択的にグループ分けされる。
【0025】各種のIBMシステム/370アーキテク
チュア、例えばシステム/370、システム/370拡
張アーキテクチュア(370−XA)、およびシステム
/370エンタプライズ・システム・アーキテクチュア
(370−ESA)などに供する命令セットはよく知ら
れている。これについては、IBMシステム/370の
動作原理(発行番号#GA22−7000−10 19
87)およびIBMエンタプライズ・システムズ・アー
キテクチュア/370、動作原理(発行番号#SA22
−7200−0 1988)に説明が与えられている。
【0026】一般に、命令複合化ファシリティは、並列
実行が許される命令のクラスを求め、複合命令のメンバ
の間にはハードウェアでは処理できないインタロックは
存在しないことを保証する。コンパティブルな命令シー
ケンスが見出されたときは、複合命令が生成される。
【0027】特に、システム/370命令セットは、特
定のコンピュータシステム構成で並列実行可能な命令の
カテゴリに分割することができる。これらのカテゴリの
あるものに属する命令は、同じカテゴリの命令またはあ
る他のカテゴリの命令と結合または複合化されて複合命
令を形成する。例えば、システム/370命令セットは
図4および5に示したカテゴリに区分することができ
る。この分類の根拠は、システム/370の命令の機能
要件および通常のコンピュータシステム構成におけるそ
れらのハードウェアの利用度に基づいて与えられる。シ
ステム/370命令の残りのものは、この実施例におけ
る複合処理に対しては特別には考慮されない。これは、
それらの命令がここで示す本発明の方法により複合化さ
れることを排除するものではない。
【0028】例えば、命令シーケンス AR R1,R2 SR R3,R4 のカテゴリ1からの命令と複合化される同じカテゴリに
含まれる命令を考えてみる。このシーケンスはデータハ
ザードインタロックを含まず、2つの独立したシステム
/370命令からなる結果 R1=R1+R2 R3=R3−R4 を発生する。このようなシーケンスの実行には、命令レ
ベルアーキテクチュアに対して設計された2つの独立で
並行する2対1ALUが必要とされる。従って、これら
の2つの命令がグループ分けされて、このような2つの
ALUを有するコンピュータシステム構成において複合
命令を形成することが理解される。このスカラ命令を複
合化する例は、データ依存性インタロック、さらにハー
ドウェア依存性インタロックとは無関係な全ての命令シ
ーケンス対に一般化することができる。
【0029】実際の命令プロセッサにおいては、複合命
令を構成できる個々の命令の個数に上限が存在する。こ
の上限は特に、複合命令を生成しているハードウェアお
よび/またはソフトウェアユニットに取り込まれなけれ
ばならず、従って複合命令は基礎になる実行ハードウェ
アの最大能力以上の個別命令(例えば、対グループ、三
重グループ、四重グループ)を含むことはない。この上
限は、厳密には特定のコンピュータシステム構成におけ
るハードウェア実現の結果であり、この上限は、複合化
処理に対する候補と考えられる命令の全数または複合化
処理のために解析される所定のコードシーケンスのグル
ープ・ウインドの長さのいずれにも制限を与えるもので
はない。一般に、複合化処理のために解析されるグルー
プ・ウインドの長さが長い程、より都合のよい複合化処
理の組合わせにより実現できる並列性は大きくなる。
【0030】図6は、ソフトウェアおよびハードウェア
の両者で複合化が生じるコンピュータシステムの多くの
可能な配置を示す図である。それぞれは、独自の利点と
欠点を有している。図6に示したように、プログラムが
ソースコードから実際の実行までに通常とる種々のステ
ージが存在する。コンパイル・フェーズではソースプロ
グラムはマシンコードに変換され、ディスク46に記憶
される。実行フェーズでは、プログラムはディスク46
から読み出され、適切な命令処理ユニット52,54,
56により命令が実行される特定のコンピュータシステ
ム構成50の主メモリ48にロードされる。複合化は、
この径路に沿いどこでも実施することができる。一般
に、複合化器は命令処理ユニットまたはCPUに近接し
て配置されるときは、時間的な拘束が一層厳しいものに
なる。複合化器がCPUから離れて配置されるときは、
より多くの命令が大規模の命令ストリーム・ウインドで
検討され複合化のための最良のグループ分けを決定し、
実行性能の増加に供することができる。しかしながら、
このような初期の複合化は、付加的な開発とコスト要件
という点でシステム設計の残部に、より多くのインパク
トを与える可能性がある。
【0031】図7の流れ図は、システムおよびハードウ
ェア・アーキテクチュアの両者に反映する1組のカスタ
マイズ複合化規則58に従った、アセンブリ・ランゲー
ジ・プログラムからの複合命令セットプログラムの発生
を示す図である。アセンブリ・ランゲージ・プログラム
は、複合命令プログラムを発生するソフトウェア複合フ
ァシリティ59に対する入力として与えられる。所定長
の連続する命令ブロックが、ソフトウェア複合化ファシ
リティ59により解析される。複合化のために一緒に考
慮される命令グループを含むバイト・ストリームにおけ
る各々のブロック60,62,64の長さは、複合化フ
ァシリティの複雑度に依存する。
【0032】図7に示したように、この特定の複合化フ
ァシリティは、各々のブロックにおける“m”個の固定
長命令に対する双方向複合化を与えるように設計されて
いる。主要な第1ステップは、第1および第2命令が複
合可能対を構成するか否か、次に第2および第3命令が
複合可能対を構成するか否か、次に第3および第4命令
が複合可能対を構成するか否かを、ブロックの最後まで
検討することにある。各種の可能な複合可能対C1〜C
5が識別されると、複合化ファシリティは複合命令の好
適なシーケンスを選択し、フラグまたは識別ビットを用
いて複合命令の最適シーケンスを選択することができ
る。
【0033】最適シーケンスがないときは、複合可能隣
接スカラ命令の全ては、各種の複合命令の間に配置され
た目標への分岐が、図15に示すように、そう遇する複
合対のいずれかを使用できるように、識別することがで
きる。多重複合化ユニットが得られる場合は、命令スト
リーム中の連続する多重ブロックが同時に複合可能にな
る。
【0034】勿論、命令がどこで始まるかを示す既知の
基準点が既に存在するときは、複合命令を生成するため
に命令ストリームを予備処理することは容易である。こ
こで使用されるように、基準点とは、テキストのどのバ
イトが命令中の第1バイトであるという知識を意味す
る。この知識は、命令境界の位置について情報を与える
あるマークフィールドまたはその他のインジケータによ
り得ることができる。多くのコンピュータシステムにお
いては、このような基準点は、単にコンパイル時間にお
けるコンパイラにより、また命令が取り出されるときの
CPUにより明白に知られる。もし特定の基準タグ付き
スキームが提供されていないときは、このような基準点
はコンパイル時間と命令送出の間では未知である。
【0035】図8の流れ図は、ハードウェア・プリプロ
セッサ66またはソフトウェア・プリプロセッサ67に
より発生される複合命令セットプログラムの実行を示す
図である。複合命令を有するバイト・ストリームは、複
合命令に対して迅速なアクセスを与える記憶バッファと
して用いられる複合命令(CI)キャッシュ68に流入
する。CI送出論理69はCIキャッシュから複合命令
を取り出し、それらの個々の複合命令を適切な機能ユニ
ットに送出し並列実行に供する。
【0036】複合命令コンピュータシステムにおけるA
LUなどの命令実行ユニット(CIEU)71は、それ
ら自身で一度に1つスカラ命令か、または他の複合スカ
ラ命令と並列に複合スカラ命令を実行できることが強調
されるべきである。さらに、このような並列実行は、A
LUや浮動小数点(FP)ユニット73、記憶アドレス
発生ユニット(AU)75などの異なる種類の実行ユニ
ットで、またはコンピュータ・アーキテクチュアおよび
特定のコンピュータシステム構成に従った複数の同じ種
類のユニット(FP1,FP2)で実施することができ
る。
【0037】コンパイルタイムの後複合化がなされる
と、コンパイラは、どのバイトが命令の第1バイトを含
むか、またどのバイトがデータを含むかをタグにより示
すことができる。この他の情報は、正確な命令位置が知
られることからより効率のよい複合化器を与える。勿
論、コンパイラは、命令境界を示す特定情報を複合化器
に与えるために、他の方法で命令とデータの間を識別す
ることができる。
【0038】例示としての2方向複合化の実施例におい
ては、複合情報はテキスト(命令とデータ)の2バイト
毎に1ビットとして命令ストリームに付加される。一般
に、制御情報を含むタグは、複合バイト・ストリームの
各々の命令に付加することができる。即ち、それぞれの
非複合スカラ命令に、および対,三重をなして、または
更に大きな複合グループをなして含まれるそれぞれの複
合スカラ命令に付加することができる。ここで使用され
るように、識別ビットは複合グループを形成する複合ス
カラ命令を非複合スカラ命令から識別し弁別するために
使用するタグの部分をさしている。非複合スカラ命令
は、複合命令プログラム内にあり、取り出されるときは
単独で実行される。
【0039】4バイト境界上に配列された全ての4バイ
ト命令を有するシステムにおいては、1つのタグはテキ
ストの各4バイトに関係している。同様に、命令を任意
に配列できるときは、タグはテキストの全てのバイトに
対して必要になる。多くて2つの命令を複合化する場合
は、スカラ命令の最小のグループ分けを与えて複合命令
を形成し、また識別ビットに対して次のような好適な符
号化手順を使用する。全てのシステム/370命令は、
長さが2または4または6バイトのいずれかのハーフワ
ード(2バイト)の境界上に配列されるので、ハーフワ
ード毎に識別ビットを持つ1つのタグが必要になる。こ
の小さなグループ分けの例においては、識別ビット
“1”は、問題のバイトで始まる命令が次の命令と複合
化されることを示し、“0”は、問題のバイトで始まる
命令が複合化されないことを示している。命令の第1バ
イトを含まないハーフワードに関わる識別ビットは無視
される。複合対の第2命令の第1バイトに対する識別ビ
ットもまた無視される。従って、識別ビットに対するこ
の符号化手順は、最も簡単な場合に情報の1ビットのみ
がCPUにより実行中に必要とされ、複合命令を識別す
ることを意味する。
【0040】2以上のスカラ命令がグループ分けされて
複合命令を形成する場合は、余分の識別ビットが要求さ
れる。実際に複合化される特定数のスカラ命令を示すの
に必要な最小数の識別ビットは、グループ分けされて複
合命令を形成できる最大数のスカラ命令の底2に対する
対数(最も近い全数に丸められる)である。例えば、最
大数が2のときは、複合命令毎に1つの識別ビットが必
要とされる。最大数が3または4のときは、複合命令毎
に2つの識別ビットが必要とされる。最大数が5,6,
7または8のときは、複合命令毎に3つの識別ビットが
必要とされる。この符号化方式を表1に示す
【表1】従って、各々のハーフワードはタグを必要とす
るが、CPUは実行される命令ストリームの第1命令に
対するタグを除く全てを無視することがわかる。換言す
れば、バイトを調べ、その識別ビットをチェックするこ
とにより、それが複合命令であるか否かを決定する。も
しそれが複合命令の始めでないときは、その識別ビット
は0になる。このバイトが2つのスカラ命令を含む複合
命令の始めのときは、識別ビットは第1命令に対して
“1”であり、第2命令に対して“0”である。また、
このバイトが3つのスカラ命令を含む複合命令の始めの
ときは、識別ビットは第1命令に対しては“2”であ
り、第2命令に対しては“1”であり、第3命令に対し
ては“0”である。換言すれば、各々のハーフワードに
対する識別ビットは、この特定のバイトが複合命令の始
めであるか否かを識別し、同時に複合グループを構成す
る命令数を示している。
【0041】複合命令を符号化する上記方法では、3つ
の命令が複合化されて三重グループを形成するとき、第
2および第3命令も複合化されて対グループを形成する
と仮定される。換言すれば、三重グループの第2命令へ
の分岐が生じるとき、第2命令に対する識別ビット
“1”は、三重グループの第1命令が実行されていなく
ても、第2および第3命令が複合対として並列に実行さ
れることを示している。
【0042】当業者には明らかなように、本発明は特定
のコンピュータシステム構成に対して命令ストリームが
一度だけ複合化されることを要求し、その後複合命令の
任意の取出しがそれに係る識別ビットの取出しをもたら
すものである。これにより、いわゆるスーパスカラマシ
ンにおける実行に対して同じまたは異なる命令が取り出
される毎に反復して生じる並列実行に対するあるスカラ
命令の不十分な最後の瞬時の決定と選択の必要性が回避
されることになる。
【0043】2進命令ストリームを複合化する全ての利
点とは別に、バイト・ストリングで命令境界を決定する
方法が発展しない限りは、あるコンピュータ・アーキテ
クチュアの下で2進命令ストリームを複合化することは
困難である。このような決定は可変長命令が許容される
ときは複雑であり、またデータおよび命令が混合される
ときは更に複雑である。勿論、実行時間では適切な実行
を可能にするには命令境界がわかっていなければならな
い。しかし、複合化は好適には命令実行以前に十分な時
間をかけてなされることから、どこで命令が始まるかに
ついての知識なしに、またどのバイトがデータであるか
についての知識なしに命令を複合化する方法が必要とさ
れる。この方法は、命令が通常は一定長でありまたデー
タと混合されないRISC(Reduced Inst
ruction Set Computers)を含
む、容認される種類のアーキテクチュアの全てに適用可
能である必要がある。
【0044】本発明の方法には、複合化される特定の命
令ストリームについて既に得られた情報に依存して多く
の変形が可能である。通常の適切な情報の種々の組合わ
せを表2に示す。
【0045】
【表2】いくつかの場合には、固定長命令および可変長
命令は異なるケースであると識別されることに留意すべ
きである。これは、可変長命令の存在により、基準点が
未知である多くの不確実性が生成され、そのため多くの
より潜在的な複合化ビットが生成されるということから
なされる。換言すると、本発明の方法により与えられる
ものとして潜在的な命令シーケンスを発生するとき、任
意の固定長命令の中間におけるバイトに対しては複合化
識別タグは存在しない。また、好適な符号化方式の下で
要求される識別タグの全数はわずかである(即ち、4バ
イトの固定長を持つ命令に対して4バイト毎に1つの識
別タグ)。とは言え、本発明の独特の方法は、命令の開
始が一旦知られる(または想定される)と、長さは一方
向で命令中のいたる所で常に見出すことができるので、
固定長命令に対しても可変長命令に対しても同様に適用
することができる。システム/370命令においては、
長さはオペレーションコードで符号化され、他のシステ
ムではオペランドで符号化される。
【0046】固定長命令が混合されたデータを持たず、
またオペレーションコードに対する基準点位置がわかっ
ているケースAの場合、複合化は特定のコンピュータ構
成に対して適用可能な規則に従って行うことができる。
長さは固定されているので、スカラ命令のシーケンスは
容易に決定され、またシーケンス中の各々の命令は次の
命令との並列実行に対する可能な候補として考えれるこ
とができる。制御タグの第1の符号化値は、命令が次の
命令と複合可能ではないことを示し、制御タグの第2の
符号化値は、次の命令との並列実行に対して複合可能で
あることを示している。
【0047】同様に、可変長命令が混合されたデータを
持たず、また命令に対して(従ってまた、命令長コード
に対して)基準点がわかっているケースBの場合には、
複合化はルーチン的に行われる。図9に示すように、オ
ペレーションコードは次のような命令シーケンスを示
す。即ち、第1命令は6バイト長であり、第2および第
3命令はそれぞれ2バイト長であり、第4命令は4バイ
ト長であり、第5命令は2バイト長であり、第6命令は
6バイト長であり、さらに第7および第8命令はそれぞ
れ2バイト長である。
【0048】ここで説明のため、隣接対のスカラ命令か
ら形成された複合命令を生成する複合化法(図9〜図1
1)並びにより大きなグループのスカラ命令から形成さ
れる複合命令を生成する複合化法(図13)について示
す。図に示した実施例に対する規則例が更に定義され、
2バイト長または4バイト長の全ての命令が互いに複合
可能である(即ち、2バイト命令は、他の2バイト命令
または他の4バイト命令と共にこの特定のコンピュータ
構成において並列実行が可能である)ことを与える。こ
れらの規則は更に、6バイト長である全ての命令は全く
複合可能ではない(即ち、6バイト命令はこの特定のコ
ンピュータ構成においてそれ自身単独で実行できるに過
ぎない。)ことを与える。勿論、本発明はこれらの複合
規則例に限定されるものではなく、与えられたコンピュ
ータ・アーキテクチュアに対する特定の構成における既
存命令の並列実行に対する基準を定める任意の組の複合
化規則に適用可能である。
【0049】本発明のこれらの例示として複合化法で使
用する命令セットは、システム/370アーキテクチュ
アからとられる。以下で更に詳細に説明するように、各
々の命令に対するオペレーションコードを検討すること
により、各々の命令の種類と長さを決定することがで
き、また次に識別ビットを含む制御タグが特定の命令に
対して生成される。勿論、本発明は特定のアーキテクチ
ュアまたは命令セットに限定されるものではなく、また
上記複合化規則は単に例示として与えられるに過ぎな
い。
【0050】ここで、これらの実施例における複合命令
に対する好適な符号化について説明しておく。2つの隣
接命令が複合化され得るときは、記憶装置に対して生成
されるそれらの識別ビットは、第1の複合命令に対して
は“1”であり、第2の複合命令に対しては“0”であ
る。しかし、第1および第2の命令が複合化できないと
きは、第1の命令に対する識別ビットは“0”であり、
次に第2および第3の命令が複合化のために検討され
る。この方法によりまた種々のスカラ命令に対して符号
化された識別ビットに従って命令バイト・ストリームが
予備処理されると、より大きなグループを見るより大き
なウインドを用い、次に複合化のための隣接対の最良の
組合わせを取り出すことにより並列実行を実現するより
最適な結果が得られる。
【0051】図9のCベクトル72は、第1命令の始め
を示す基準点がわかっている上記の特定の命令シーケン
ス70に対する識別ビット(図では複合化ビットと呼ば
れる)に対する値を示している。このような識別ビット
の値に基づいて、第2および第3命令は第2命令に対す
る識別ビットの“1”により示されるように複合対を形
成する。第4および第5命令は、第4命令に対する識別
ビットの“1”により示されるように他の複合対を形成
する。第7および第8命令も、第7命令に対する識別ビ
ットの“1”により示されるように複合対を形成する。
【0052】図9のCベクトル72も、命令バイトと混
合されたデータバイトが存在しないとき、また命令の全
てが同じ長さで既知の境界を持つ場合は、ケースBで生
成するのは比較的容易である。
【0053】わずかに複雑な状況がケースCで与えら
れ、この場合には、命令は非命令と混合され、命令の開
始を示す基準点が与えられている。図14の概略図は命
令基準点を示す1つの方法を示す図であり、全てのハー
フワードは、これが命令の第1バイトを含むか否かを示
すタグによりフラグを立てられている。これは固定長お
よび可変長命令の両方に対して生じ得るものである。基
準点を与えることにより、可能な複合化のためにバイト
・ストリームのデータ部分を評価することは不要にな
る。従って、複合化ユニットはスキップし、非命令バイ
トの全てを無視することができる。
【0054】ケースDは、命令およびデータが通常は所
定のバイト境界上に配列されるので、データが混合され
ない固定長命令に対し困難な問題は与えない。従って、
表では基準点が未知であることを示しているが、実際に
はそれは配列要件に基づいて容易に決定される。
【0055】ケースEはより複雑な場合であり、そこで
はバイト・ストリームは可変長命令(データ無し)を含
むが、どこで第1命令が始まるかはわかっていない。最
大長命令は6バイトであり、また命令は2バイト境界上
に配列されているので、命令ストリームの第1命令に対
しては3つの可能な開始点が存在する。従って、本発明
は、図10に示すように、バイト・ストリーム79のテ
キスト中の第1命令に対する全ての可能な開始点の検討
を保証する。
【0056】シーケンス1は、第1命令が第1バイトで
始まり、そのプレミスにおける複合化と共に進行するも
のと仮定している。第1バイトに対する長さフィールド
の値は6で次の命令が第8バイトで始まることを示し、
第7バイトに対する長さフィールドの値は2で次の命令
が第9バイトで始まることを示し、第9バイトに対する
長さフィールドの値は2で次の命令が第11バイトで始
まることを示し、第11バイトに対する長さフィールド
の値は4で次の命令が第15バイトで始まることを示
し、第15バイトに対する長さフィールドの値は2で次
の命令の第17バイトで始まることを示し、第17バイ
トに対する長さフィールドの値は6で次の命令が第23
バイトで始まることを示し、第23バイトに対する長さ
フィールドの値は2で次の命令が第25バイトで始まる
ことを示し、さらに第25バイトに対する長さフィール
ドの値は2で次の命令(図示せず)が第27バイトで始
まることを示す。
【0057】この例示としての実施例においては、長さ
フィールドはまた各々の可能な命令に対するCベクトル
値の決定要因でもある。従って、シーケンス1に対する
Cベクトル74は、2バイトおよび4バイト命令の組み
合わせにより形成された可能な複合対の第1命令に対し
て値“1”を単に有している。
【0058】シーケンス2は、第1命令が第3バイト
(第2ハーフワードの始め)で始まり、そのプレミスの
複合化と共に進行するものと仮定している。第3バイト
に対する長さフィールドの値は2で次の命令が第5バイ
トで始まることを示す。先行する命令の長さフィールド
値に基づいて各々の可能な命令を通して進行することに
より、Cベクトル76に示すように、シーケンス2の全
体の潜在的命令が可能な識別ビットと共に生成される。
【0059】シーケンス3は、第1命令が第5バイト
(第3ハーフワードの始め)で始まり、そのプレミス上
を進行すると仮定される。第5バイトに対する長さフィ
ールドの値は4で、次の命令が第9バイトで始まること
を示す。Cベクトル78に示すように、先行する命令の
長さフィールド値に基づいて各々の可能な命令を通して
進行することにより、シーケンス23の全体の潜在的命
令が可能な識別ビットと共に生成される。
【0060】幾つかの場合には、潜在的命令の3つの異
なるシーケンスが1つの独特のシーケンスに収束する。
その収束速度は、命令長に対して留保された潜在的オペ
レーションコード・フィールドにある特定ビットに依存
する。幾つかの命令バイト・ストリームにおいては、特
定のウインド(例えば、全ての長さが偶然4バイトであ
る命令シーケンス)の複合化時に収束は見出されない。
その他の場合には、同じ命令境界に対する収束が、アウ
トオブフェーズで2つの異なるシーケンスの複合化シー
ケンスと共に発生する。しかしながら、アウトオブフェ
ーズな収束は、初期でなければ、次の非複合可能命令に
より常に補正される。
【0061】図10において、第8バイトの端部80の
命令境界で3つのシーケンスが収束することがわかる。
また、付加的なシーケンスが第6,第8,および第10
バイトの端部で始まるときは、これらのシーケンスも迅
速に収束することがわかる。シーケンス2および3は、
第4バイトの端部82の命令境界上で収束するが、第1
6バイトの端部までは複合化に際してアウトオブフェー
ズである。換言すれば、これらの2つのシーケンスは同
じシーケンスの命令に基づいて異なる対の命令を考慮す
ることになる。第17バイトは84の非複合可能命令を
開始するので、アウトオブフェーズ収束が終了する。レ
ビューされる命令の各々のウインドが2つ以上の命令を
含む場合は、2つの命令複合化器が同じ最適対を選択す
るので種々のシーケンスはより早く収束することにな
る。
【0062】有効な収束が何ら生じないときは、全ての
3つの可能な命令シーケンスをウインドの端部まで継続
することが必要になる。しかしながら、有効な収束が発
生し、検出された場合は、シーケンスの数は3から2に
減少し(同等シーケンスの1つがインオペレーティブに
なる)、また幾つかの場合には2から1に減少する。命
令の多重シーケンスを未知の命令境界のため考慮しなけ
ればならない場合は、複合化の速度は図9の複合化の場
合よりも活性シーケンスの数に等しい因子だけ遅くなる
(単一ユニットの複合化ファシリティを仮定して)。収
束が速いときは、図9および図10に例示した複合化速
度は仮想的に等しくなる。
【0063】このようにして、収束の前に、一時的な命
令境界が、各々の可能な命令シーケンスおよび各々のこ
のような命令に対して割り当てられ、潜在的な複合命令
の位置を示す識別ビットに対して決定される。図10か
ら明らかなように、この方法は2テキストバイト毎に3
つの個別識別ビットを生成する。ケースA−Dでなされ
た予備処理と一致させるために、3つの可能なシーケン
スを、1ビットだけが各々のハーフワードに関わる識別
ビットの単一シーケンスに減らすことが望ましい。必要
な唯一の情報は、現在の命令が次の命令と複合化される
か否かであるので、3ビットが論理ORされてCCベク
トル86における単一シーケンスを生成する。
【0064】上記のように図10で示した複合化法にお
ける各種のステップを図17,図18のフローチャート
に示す。(フローチャートの上半分を図17、下半分を
図18に示す)。
【0065】並列実行のためには、コンポジットCCベ
クトルのコンポジット識別ビットは、個々の3つのシー
ケンス1〜3の個別Cベクトルに等価である。このこと
は図10のCCベクトル86を参照することにより示す
ことができる。シーケンス1に対しては、従来の逐次処
理のためかまたは分岐により第1バイトを実行のために
考慮すると、命令はその関連する識別ビットと共に取り
出される。識別ビットは“0”なので、第1命令は単一
命令として逐次実行される。第3および第4バイトに関
わる識別ビットは、無視される。シーケンス1の次の命
令が第7バイトで始まり、従ってこのような命令はCP
Uにより“1”であるその識別ビットと共に取り出され
る。これは複合命令の開始を示すので、次の命令も、第
7バイトで始まる命令との並列実行のために取り出され
る(CCベクトル86におけるその識別ビット“1”は
無視されるので、Cベクトル74のその識別ビットが異
なるという事実は重要ではない。)。従って、CCベク
トル86は、もしそれが実際の命令シーケンスであるこ
とがわかればシーケンス1に対して満足に作用する。
【0066】シーケンス2の場合は、従来の逐次処理の
ためかまたは分岐により第3バイトを実行のために考慮
するときは、命令はその関係する識別ビットと共に取り
出される。識別ビットは“1”であり、複合命令の開始
を示すので、次の命令も第3バイトで始まる命令との並
列実行のために取り出される(CCベクトル86のその
識別ビット“1”は無視され、従ってCベクトル76の
その識別ビットが異なるという事実は重要ではな
い。)。従って、CCベクトル86も、もしそれが実際
の命令シーケンスであることがわかったときはシーケン
ス2に対して満足に作用する。
【0067】シーケンス3の場合は、従来の逐次処理の
ためまたは分岐によるのいずれかにより第5バイトを実
行のために考慮するときは、命令はその関連する識別ビ
ットと共に取り出される。識別ビットは“1”であり、
複合命令の開始を示すので、次の命令も第5バイトで始
まる命令との並列実行のために取り出される(CCベク
トル86のその識別ビット“1”は無視され、従ってC
ベクトル78のその識別ビットが異なるという事実は重
要ではない。)。従って、CCベクトルも、もしそれが
実際の命令シーケンスであることがわかったときはシー
ケンス3に対して満足に作用する。
【0068】このようにして、CCベクトルのコンポジ
ット識別ビットは、3つの可能なシーケンスのいずれか
が、複合命令に対して並列に適切に実行され、または非
複合命令に対して単独に実行することを許容する。コン
ポジット識別ビットも分岐に対して適切に作用する。例
えば、第9バイトの開始部88への分岐が生じると、第
9バイトは命令を開始しなければならない。さもなけれ
ば、プログラム中にエラーが存在することになる。第9
バイトに関わる識別ビット“1”が使用され、またこの
ような命令と、その次の命令との正しい並列実行が進行
する。
【0069】CCベクトルにおけるコンポジット識別ビ
ットにより与えられる1つの利点は、多重有効複合化ビ
ットシーケンスの生成にあり、このビットシーケンスに
基づいて分岐ターゲットにより命令がアドレスされる。
図15および16に最良に示したように、異なって形成
された複合命令が同じバイト・ストリームから可能であ
る。
【0070】図15は、コンピュータ構成が単に2つの
命令の並列送出と実行を与えるときの複合命令の可能な
組合わせを示す図である。複合命令を含む命令ストリー
ム90が通常のシーケンスで処理される場合は、CCベ
クトル92の第1バイトに対する識別ビットの復号化に
基づいて複合命令Iが並列実行のために送出される。し
かし、第5バイトへの分岐が生じると、第5バイトに対
する識別ビットの復号化に基づいて複合命令IIが並列実
行のために送出される。
【0071】同様にして、他の複合化されたバイト・ス
トリーム94の通常の逐次処理により、複合命令IV,VI
およびVIIIが逐次実行される(各々の複合命令の成分命
令は並列に実行される。)。一方、複合化されたバイト
・ストリームの第3バイトへの分岐により複合命令Vお
よびVII が逐次実行され、また第15バイトで始まる命
令(これは複合命令VIIIの第2部分を形成する。)が送
出されて、単独で実行され、これらの全てはCCベクト
ル96の識別ビットに基づいてなされる。
【0072】第7バイトへの分岐により複合命令VIおよ
びVIIIが逐次実行され、また第11バイトへの分岐によ
り複合命令VIIIが実行される。一方、複合化されたバイ
ト・ストリームの第9バイトへの分岐により複合命令VI
I が実行される(これは複合命令VIの第2部分および複
合命令VIIIの第1部分により形成される。)。一方、複
合バイト・ストリームの第9バイトへの分岐により複合
命令VII が実行される(これは複合命令VIの第2部分お
よび複合命令VIIIの第1部分により形成される。)。
【0073】このようにして、複合命令IV,VIおよびVI
IIに対するCCベクトル96の識別ビット“1”は、複
合命令VまたはVII のいずれかが実行されているときは
無視される。一方、複合命令VおよびVII に対してはC
Cベクトル96の識別ビット“1”は、複合命令IV, VI
またはVIIIのいずれかが実行されるときは無視される。
【0074】図16は、コンピュータ構成が最高3つの
命令の並列送出と実行を与えるときの複合命令の可能な
組合わせを示す図である。複合命令を含む命令ストリー
ム98が通常のシーケンスで処理される場合、複合命令
X(三重グループ)およびXIII(対グループ)が実行さ
れる。一方、第11バイトへの分岐により複合命令XI
(三重グループ)が実行され、また第13バイトへの分
岐により複合命令XII (異なる三重グループ)が実行さ
れる。
【0075】このようにして、複合命令XIおよびXII に
対するCCベクトル99の識別ビット“2”は、複合命
令XおよびXIIIが実行されるときは無視される。一方、
複合命令XIが実行されるときは、その他の3つの複合命
令X,XII ,XII に対する識別ビットは無視される。同
様に、複合命令XII が実行されるときは、その他の3つ
の複合命令X,XI,XIIIに対する識別ビットが無視され
る。
【0076】ケースGは、任意の命令の開始に対する何
らかの基準点を知ることなしに可変長命令と混合された
データを持つ命令ストリームを処理する最も複雑なケー
スである。これは、基準点が未知のときにメモリまたは
命令キャッシュ中のページを複合化するときに生じる。
ケースGを処理する第1実施例(図示せず)は、ケース
Eに対して用いられたものと同等であるが、データが命
令と混合されるという点で異なっている。収束が生じる
と、収束により排除された各々のシーケンスの代りに新
しいシーケンスを常に開始させなければならない。これ
は、データを含むバイト内に収束が生じ、従って全ての
3つの複合化シーケンスが実際には命令ではない「命
令」のスプリアスなシーケンスに収束するということに
よる。これは、実際の命令のシーケンスが上記シーケン
スにそう遇したとき、最終的には補正されることにな
る。しかし一方、幾つかの複合可能命令は検出されない
ことがある。得られた複合命令ストリームは正しく実行
されるが、わずかな複合命令対は並列実行のためにタグ
を付され、従ってCPUの性能が劣化することになる。
【0077】ケースGを処理する好適な方法を、図10
に示した場合と同じバイト・ストリーム79に対して図
11に示す。可能な命令の新しいシーケンスが、潜在的
なオペレーションコードの命令長部分の値とは無関係
に、ハーフワード毎に開始される。他のケースと同様
に、2つの隣接する潜在的な命令が検討され、種々のC
ベクトル100に対する適切な識別ビットが決定され
る。これは2バイト(1ハーフワード)から始まって後
に反復される。ケースEの場合と同様に、同じハーフワ
ードに対する種々のCベクトル値がORされ(図12参
照)、関連する複合CCベクトル102のコンポジット
識別ビットを形成する。第1バイトのみに対して“1”
を生成することにより複合化器が複合命令を識別し、ま
た図11において各々の潜在的シーケンスの長さが単に
2命令であるこの特定の実施例においては、2方向複合
化に対する好適な符号化方式を用いて各々のシーケンス
を検討して得られる出力は、単一ビットであることがわ
かる。従って、この場合にCCベクトル102を形成す
るために、各々のシーケンスにおける第1識別ビットの
全てが連結され、これにより種々のCベクトル値をOR
する一般の場合と同じCCベクトルを生成する。
【0078】バイトが実行のために選択されると、それ
は実際にはプログラムが正しいときの命令でなければな
らず、またそのバイトが複合命令の始めか否かを知るた
めにそのバイトに関わる適切なCCベクトル識別ビット
がチェックされる。データに関わるタグは実際の命令の
実行中は常に無視され、両スカラ命令は単独で実行さ
れ、また複合命令は並列に実行される。
【0079】分岐命令がデータと複合化されると、この
分岐が(正しいプログラムを仮定して)取られなければ
ならず、また並列に実行されている対をなす第2命令
は、もし分岐が取られなかったときは、無効にされる。
この機能は、もし分岐がパイプライン式に次の命令と同
時に実行可能のときは実行ユニット中に常に存在しなけ
ればならない。
【0080】図10および図11のCCベクトル88,
102のコンポジット複合化シーケンスは、テキストが
同じであっても、同一ではないことに注目することが重
要である。図10において、テキストは命令と混合され
たデータを含まないことがわかるので、収束の結果、知
られた基準点が与えられる。図11に対するCCベクト
ル102の余分の“1”値が、図10において基準点が
知られた後に発生し、またこのような余分の“1”は、
データがテキスト中に存在する可能性を命令が示さない
ので、命令を開始するハーフワードに対応するものでは
ない。しかしながら、図10に示したケースEに対する
方法で仮定されたように、テキストが命令のみを含むと
きは、2つのCCベクトル88,102の異なるコンポ
ジット・シーケンスは、それにも拘らず本発明の利点に
従って同等のプログラム実行をもたらす。
【0081】データと混合された固定長命令を含み、ど
んな命令基準点も持たないケースFは、ケースGを簡単
にしたものである。命令がハーフワード境界上に配列さ
れた2バイト長のときは、潜在的な命令シーケンスはハ
ーフワード毎に開始され、また命令長を用いて潜在的シ
ーケンスを生成する必要がなくなる。
【0082】図11のケースGを処理する最悪のケース
の方法は、ケースA〜Fに対する方法よりも多くの可能
な命令シーケンスを検討する。これはより多くの時間お
よび/またはより多くの複合化ユニットを要求して、実
現要件に依存してタグ中に必要な識別ビットを生成す
る。
【0083】命令複合化ユニットに対しては、その位置
とテキスト内容の知識に依存して、多くの可能な設計方
法がある。最も簡単な場合には、コンパイラが、そのバ
イトが命令の第1バイトを含むかまたどれがデータを含
むかをタグにより示すことが望ましい。この臨時の情報
は、正確な命令位置がわかっているので(図14参照)
より効率的な複合化器をもたらす。これは、複合命令毎
にCベクトル識別ビットを発生するために、複合化がケ
ースCの場合として常に処理され得ることを意味してい
る(図9参照)。コンパイラはさらにスタティック分岐
予測などの他の情報を付加することができ、あるいは複
合化器に方向性を挿入することもできる。
【0084】また、複合化されるべき命令ストリームが
メモリに記憶された場合に、命令からデータを区別する
他の方法を用いることができる。例えば、データ部分の
頻度が少ないときは、データを含むアドレスの簡単なリ
ストはタグよりも少ないスペースを要求することにな
る。ハードウェアおよびソフトウェアのこのような組合
わせは、複合命令を有効に発生するための多くのオプシ
ョンを提供する。
【0085】図12は、ケースE,FかケースGのカテ
ゴリのいずれかの命令ストリームを処理する複合化器の
可能な実現方法を示す流れ図である。多数の複合化器ユ
ニット104,106,108を示してあり、この数は
効率を上げるためにテキストバッファで保持できるハー
フワードの数と同じにできる。この場合は、ケースGに
対してなされたと同様に、3つの複合化ユニットはそれ
らの処理シーケンスを第1,第3および第5バイト目に
それぞれ開始することになる。各々の複合化器は、可能
な命令シーケンスで終了すると、その前回のシーケンス
から6バイトオフセットされた次の可能なシーケンスの
検討を開始する。各々の複合化器はテキストのハーフワ
ード毎に複合識別ビット(Cベクトル値)を生成する。
3つの複合化器からの3つのシーケンスがOR処理11
0され、得られたコンポジット複合識別ビット(CCベ
クトル値)がそれらの対応するテキストバイトに関連し
て記憶される。
【0086】図13は、ケースGに対する最悪ケースの
複合化方法が、各々の複合命令における最高4命令など
の大きなグループに適用される方法を示す図である。こ
こで同じバイト・ストリーム79をもう一度見ると、ハ
ーフワードの開始時における各々のバイトが、これが命
令の開始であるか否かに関して検討され、またそのオペ
レーションコードが評価されて3つの付加的な命令の潜
在的シーケンスが配置されている。もしこのバイトが複
合化できないときは、その識別ビット値は“0”にな
る。もしこのバイトが次の潜在的命令と複合化できると
きは、識別ビットは命令対の第1命令に対して“1”で
あり、対の第2命令に対して“0”である。このバイト
が次の2つの潜在的命令と複合化できることがわかって
いるときは、第1命令と共に始まる複合化ビットはそれ
ぞれ“2”,“1”,および“0”である。この方法で
は、大きなグループの複合命令の中間への分岐は、大き
なグループのテイルエンドサブセットである三重または
対のグループを実行できると仮定する。
【0087】図14に示したように、各々のハーフワー
ドで始まるバイトを検討し、潜在的な命令境界を配置し
なければならない。検討された各々のシーケンスは、C
ベクトル112と呼ばれる識別ビットのシーケンスを発
生する。CCベクトル値114と呼ばれる識別ビットの
コンポジット・シーケンスは、そのハーフワードに係る
全ての個別識別ビットの最大値を取ることにより形成さ
れる。大きなグループの複合命令が発生され実行される
と、CPUはこのグループの第1バイト以外のバイトに
係る全ての複合ビットを無視する。この符号化方法にお
いては、CCベクトル114の複合識別ビットは、複合
命令の開始を示すと共に複合命令を構成する命令の数を
示すものである。
【0088】使用する実際の複合化規則に依存して、こ
の特定の大きなグループの複合化方法には幾つかの最適
化方法がある。例えば、第9バイト116で始まる第5
シーケンスは長さ2,4,2および6バイト長の命令を
仮定している。6バイト命令がこの例においては複合可
能ではないので、その他の3つの潜在的命令(第11,
第15,および第17バイト)から始めて複合化する場
合に、これらの命令は既に可能な限り複合化されている
ので如何なる利点も存在しない。この点で、第11およ
び第15バイトで始まる潜在的命令に対する識別ビット
は、それぞれ118,120でCベクトル112中に示
されている。第9バイトは116で命令シーケンスを開
始すると仮定すると、第13バイトは命令を開始しな
い。しかしながら、以上に説明した最適化は、可能な命
令の開始と同様に第13バイトが、これが予め考慮され
ていないことから、検討されることをなお必要としてい
る。
【0089】勿論、大きなグループの複合化方法は、図
13に示したが例が第15バイトで停止したとしても、
テキスト中のハーフワードの全てと共に継続されること
になる。
【0090】転送すべきビット数を減らすために、複合
化情報の他の表示方法がある。例えば、複合化識別ビッ
トは、真の命令境界が決定されると、異なるフォーマッ
トに変換することができる。例えば、次のような符号化
により、命令あたり1ビットを実現することができる。
即ち、値“1”は次の命令との複合化を意味し、値
“0”は次の命令との複合化を意味しない。4つの個別
命令のグループと共に形成された複合命令は、複合化識
別ビット(1,1,1,0)のシーケンスを有すること
になる。既に示した他の複合命令の実行の場合と同様
に、命令ではなく、従ってオペレーションコードを有さ
ないハーフワードに係る複合化識別ビットは実行時には
無視される。
【0091】
【発明の効果】以上説明したように、本発明の方法によ
れば、命令がどこで開始されるかまたどのバイトが命令
の代りにデータを含むかを知ることなしに、2進命令ス
トリームから複合命令を発生できる効果がある。
【図面の簡単な説明】
【図1】本発明の上位概略図である。
【図2】ユニプロセッサ実現のためのタイミング図で、
複合命令ストリームに選択的にグループ分けされた非イ
ンタロックド命令の並列実行を示す図である。
【図3】多重プロセッサを実現するためのタイミング図
で、インタロックされないスカラおよび複合命令の並列
実行を示す図である。
【図4】既存スカラマシンにより実行される命令の選択
的カテゴリ化を示す図である。
【図5】既存スカラマシンにより実行される命令の選択
的カテゴリ化を示す図である。
【図6】プログラムによりとられる、ソースコードから
実際の実行までの通常の径路を示す図である。
【図7】アセンブリ・ランゲージ・プログラムからの複
合命令セットプログラムの動作を示す流れ図である。
【図8】複合命令セットプログラムの実行を示す流れ図
である。
【図9】識別可能な命令基準点による命令ストリーム・
テキストの解析チャートである。
【図10】基準点なしの可変長命令による命令ストリー
ムテキストに対する解析チャートである。
【図11】基準点なしに可変長命令と混合されたデータ
を有する最悪のケースの命令ストリーム・テキストに対
する解析チャートであり、それらの関係する可能な複合
識別ビットの組を示す図である。
【図12】図10および図12に命令ストリーム・テキ
ストを処理する命令複合ファシリティの論理的実現を示
す図である。
【図13】図11の最悪ケースの命令テキストに対する
解析チャートで最高4つのスカラ命令をグループ分けし
て各々の複合命令を形成する可能な複合識別ビットの組
を示す図である。
【図14】命令境界基準点を識別するタグを有する命令
ストリームを複合化するための流れ図である。
【図15】命令の有効な非インタロックド対の異なるグ
ループ分けが逐次または分岐ターゲット実行のために多
重複合命令を形成する方法を示す図である。
【図16】図15と共に、命令の有効な非インタロック
ド三重対の異なるグループ分けが逐次または分岐ターゲ
ット実行のために多重複合命令を形成する方法を示す図
である。
【図17】図10に示したような命令ストリームを複合
化する流れ図である。
【図18】図10に示したような命令ストリームを複合
化する流れ図である。
【符号の説明】
20 命令複合化ユニット 21 2進スカラ命令ストリーム 22 符号化複合命令と混合されたスカラ命令ストリー
ム 24 命令処理ユニット 26,28 算術論理用機能ユニット(ALU#1,A
LU#2) 30 浮動小数点演算用機能ユニット(FP) 32 記憶アドレス発生用機能ユニット(AU) 48 主メモリ 50 コンピュータシステム構成 52,54,56 命令処理ユニット#1,#2,#3 58 複合化規則 60,62,64 アセンブリ・ランゲージ・プログラ
ム 66 ハードウェア命令複合化ユニット 67 ソフトウェア複合化ファシリティ 104,106,108 複合化器
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スタマティス・バシリアディス アメリカ合衆国 ニューヨーク州 ベスタ ル ベスタル ロード 717

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】バイト・ストリームによる命令シーケンス
    を識別すると共に、並列実行させる少なくとも2つの命
    令にタグを付加する方法であって、 想定された第1命令を選択することにより第1の可能な
    命令シーケンスを開始するステップと、 前記第1の可能な命令シーケンスの前記想定された第1
    命令に対する第1命令長を配置するステップと、 前記第1命令長を用いて少なくとも想定された第2命令
    を配置するステップと、 前記想定された第1命令と前記少なくとも想定された第
    2命令とを符号化して、これらの命令が特定のコンピュ
    ータシステム構成による並列実行のためにタグを付され
    たか否かを示すステップ、とを含む、命令シーケンスを
    識別してタグを付加する方法。
  2. 【請求項2】前記第1の可能な命令シーケンスの前記少
    なくとも想定された第2命令に対する第2命令長を配置
    するステップと、 前記第2命令長を用いて少なくとも想定された第3命令
    を配置するステップと、 前記想定された第2命令および前記少なくとも想定され
    た第3命令とを符号化して、これらの命令が特定のコン
    ピュータシステム構成による並列実行のためにタグを付
    されたか否かを示すステップ、とをさらに含む請求項1
    記載の、命令シーケンスを識別してタグを付加する方
    法。
  3. 【請求項3】前記想定された第1命令とは異なる他の想
    定された命令を選択することにより第2の可能な命令シ
    ーケンスを開始させるステップと、 前記第2の可能な命令シーケンスの前記他の想定された
    命令に対する他の命令長を配置するステップと、 前記他の命令長を用いて他の想定された命令を配置する
    ステップと、 前記他の命令および前記他の想定された命令を符号化し
    て、これらの命令が特定のコンピュータ構成による並列
    実行のためにタグを付されているかを否か示すステッ
    プ、とをさらに含む請求項1記載の、命令シーケンスを
    識別してタグを付加する方法。
  4. 【請求項4】前記第1の可能な命令シーケンスの前記想
    定された第1および第2命令を、前記第2の可能な命令
    シーケンスの前記他の命令および前記他の想定された命
    令と比較して、命令境界間に何らかの収束があるか否か
    を決定するステップ、をさらに含む請求項3記載の、命
    令シーケンスを識別してタグを付加する方法。
  5. 【請求項5】前記バイト・ストリームは固定長の命令を
    含む請求項1記載の、命令シーケンスを識別してタグを
    付加する方法。
  6. 【請求項6】前記バイト・ストリームは可変長の命令を
    含む請求項1記載の、命令シーケンスを識別してタグを
    付加する方法。
  7. 【請求項7】前記バイト・ストリームは命令と混合され
    た非命令を含む請求項1記載の、命令シーケンスを識別
    してタグを付加する方法。
  8. 【請求項8】前記バイト・ストリームに命令境界基準点
    は存在しない請求項1記載の、命令シーケンスを識別し
    てタグを付加する方法。
  9. 【請求項9】前記バイト・ストリームは命令と混合され
    た非命令を含む請求項8記載の、命令シーケンスを識別
    してタグを付加する方法。
  10. 【請求項10】前記バイト・ストリームは可変長の命令
    を含む請求項9記載の、命令シーケンスを識別してタグ
    を付加する方法。
  11. 【請求項11】前記符号化ステップは、前記想定された
    第1および第2命令、および前記少なくとも第3命令を
    符号化して、これらの命令が特定のコンピュータシステ
    ム構成による並列実行のためにタグを付加されたか否か
    を示すステップ、を含む請求項2記載の、命令シーケン
    スを識別してタグを付加する方法。
  12. 【請求項12】前記第1の可能な命令シーケンスの前記
    想定された命令に関わるバイト位置を追跡するステップ
    と、 前記第2の可能な命令シーケンスの前記想定された命令
    に関わるバイト位置を追跡するステップと、 前記想定された命令に関わるバイト位置の各々に対する
    個々の識別タグを維持するステップ、とをさらに含む請
    求項2記載の、命令シーケンスを識別してタグを付加す
    る方法。
  13. 【請求項13】前記第1または第2の可能な命令シーケ
    ンスのいずれかの命令が並列実行のために符号化される
    ときは常に、命令に並列実行のためにタグを付する、請
    求項12記載の、命令シーケンスを識別してタグを付加
    する方法。
  14. 【請求項14】2進命令ストリームの未だ取り出されて
    ない命令を予め処理して、特定のコンピュータシステム
    構成における並列実行可能な命令を識別する方法であっ
    て、想定された命令の第1の可能なシーケンスをそれら
    の命令長に基づいて発生するステップと、 前記第1の可能なシーケンスの各対の想定された命令を
    比較して、それらの並列実行の能力を決定するステップ
    と、 各々の想定された命令に関わる制御タグを符号化して、
    特定のコンピュータシステム構成における並列実行のた
    めにタグを付された想定された命令の対を識別するステ
    ップ、とを含む、命令シーケンスを識別してタグを付加
    する方法。
  15. 【請求項15】前記比較ステップは、第1命令をその次
    の命令と比較するステップと、前記次の命令をそれに続
    く命令と比較するステップ、とを含む請求項14記載
    の、命令シーケンスを識別してタグを付加する方法。
  16. 【請求項16】前記想定された命令の第1の可能なシー
    ケンスとは異なる想定された命令の付加的可能なシーケ
    ンスを発生するステップ、をさらに含む請求項14記載
    の、命令シーケンスを識別してタグを付加する方法。
  17. 【請求項17】前記付加的可能なシーケンスを発生する
    ステップは、命令ストリームにおけるある固定インタバ
    ルにおいて新しい可能なシーケンスを開始させるステッ
    プ、を含む請求項16記載の、命令シーケンスを識別し
    てタグを付加する方法。
  18. 【請求項18】前記固定されたインタバルは全てのバイ
    トである請求項17記載の、命令シーケンスを識別して
    タグを付加する方法。
  19. 【請求項19】前記固定されたインタバルは1つおきの
    バイトである請求項17記載の、命令シーケンスを識別
    してタグを付加する方法。
  20. 【請求項20】前記比較ステップは、2つ以上の想定さ
    れた命令のグループを比較するステップ、を含む請求項
    14記載の、命令シーケンスを識別してタグを付加する
    方法。
  21. 【請求項21】既知命令境界基準点を有さない命令スト
    リームの命令を処理して特定のコンピュータ構成におい
    て並列実行が可能な隣接スカラ命令を識別する方法であ
    って、 異なる可能な命令境界で始まる想定された命令の異なる
    シーケンスを発生するステップと、 各々の想定された命令を、その隣接する命令と並列に実
    行される能力を示す識別タグで符号化するステップ、と
    を含む、命令シーケンスを識別してタグを付加する方
    法。
  22. 【請求項22】前記命令は所定数の異なる可能な長さを
    有し、前記発生ステップは前記所定数の異なる可能な長
    さの各々に対する想定された命令の異なるシーケンスを
    発生するステップ、を含む請求項21記載の、命令シー
    ケンスを識別してタグを付加する方法。
  23. 【請求項23】前記所定数の可能な長さは2以上である
    請求項22記載の、命令シーケンスを識別してタグを付
    加する方法。
  24. 【請求項24】前記所定数の可能な長さをバイト境界上
    に配列する請求項22記載の、命令シーケンスを識別し
    てタグを付加する方法。
  25. 【請求項25】前記第1の可能なシーケンスおよび前記
    付加的な可能シーケンスにおける各々の想定された命令
    に関わる制御タグを符号化する多重複合化ユニットを使
    用するステップ、をさらに含む請求項16記載の、命令
    シーケンスを識別してタグを付加する方法。
  26. 【請求項26】並列実行が可能な前記少なくとも3つの
    想定された命令の最大数を識別する符号化タグを、命令
    実行時間における使用のために維持する、請求項2記載
    の、命令シーケンスを識別してタグを付加する方法。
  27. 【請求項27】前記比較ステップは、互いに隣接関係に
    ある2つ以上の隣接する想定された命令のグループを比
    較するステップ、を含む請求項20記載の、命令シーケ
    ンスを識別してタグを付加する方法。
JP3096091A 1990-05-04 1991-04-03 スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法 Expired - Fee Related JPH087681B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51938290A 1990-05-04 1990-05-04
US519382 1990-05-04

Publications (2)

Publication Number Publication Date
JPH0773036A true JPH0773036A (ja) 1995-03-17
JPH087681B2 JPH087681B2 (ja) 1996-01-29

Family

ID=24068072

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3096091A Expired - Fee Related JPH087681B2 (ja) 1990-05-04 1991-04-03 スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法

Country Status (8)

Country Link
US (1) US5500942A (ja)
EP (1) EP0454984B1 (ja)
JP (1) JPH087681B2 (ja)
CA (1) CA2037708C (ja)
CS (1) CS93591A2 (ja)
DE (1) DE69122294T2 (ja)
HU (1) HUT57456A (ja)
PL (1) PL289723A1 (ja)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
US5671431A (en) * 1992-09-22 1997-09-23 Siemens Aktiengesellschaft Method for processing user program on a parallel computer system by inserting a tag during compiling
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
EP0651320B1 (en) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
EP0974894B1 (en) * 1993-11-05 2002-02-27 Intergraph Corporation Instruction cache associative cross-bar switch
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5794063A (en) * 1996-01-26 1998-08-11 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US8583895B2 (en) * 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6170050B1 (en) 1998-04-22 2001-01-02 Sun Microsystems, Inc. Length decoder for variable length data
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
US6490673B1 (en) * 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
US7376814B1 (en) 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
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
US7401328B2 (en) * 2003-12-18 2008-07-15 Lsi Corporation Software-implemented grouping techniques for use in a superscalar data processing system
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US7500023B2 (en) * 2006-10-10 2009-03-03 International Business Machines Corporation Facilitating input/output processing by using transport control words to reduce input/output communications
US7502873B2 (en) * 2006-10-10 2009-03-10 International Business Machines Corporation Facilitating access to status and measurement data associated with input/output processing
US20090055636A1 (en) * 2007-08-22 2009-02-26 Heisig Stephen J Method for generating and applying a model to predict hardware performance hazards in a machine instruction sequence
US7840717B2 (en) * 2008-02-14 2010-11-23 International Business Machines Corporation Processing a variable length device command word at a control unit in an I/O processing system
US8176222B2 (en) * 2008-02-14 2012-05-08 International Business Machines Corporation Early termination of an I/O operation in an I/O processing system
US8478915B2 (en) 2008-02-14 2013-07-02 International Business Machines Corporation Determining extended capability of a channel path
US7890668B2 (en) 2008-02-14 2011-02-15 International Business Machines Corporation Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous
US8082481B2 (en) * 2008-02-14 2011-12-20 International Business Machines Corporation Multiple CRC insertion in an output data stream
US7904605B2 (en) * 2008-02-14 2011-03-08 International Business Machines Corporation Computer command and response for determining the state of an I/O operation
US8214562B2 (en) * 2008-02-14 2012-07-03 International Business Machines Corporation Processing of data to perform system changes in an input/output processing system
US8166206B2 (en) * 2008-02-14 2012-04-24 International Business Machines Corporation Cancel instruction and command for determining the state of an I/O operation
US7899944B2 (en) * 2008-02-14 2011-03-01 International Business Machines Corporation Open exchange limiting in an I/O processing system
US8312189B2 (en) * 2008-02-14 2012-11-13 International Business Machines Corporation Processing of data to monitor input/output operations
US7937507B2 (en) * 2008-02-14 2011-05-03 International Business Machines Corporation Extended measurement word determination at a channel subsystem of an I/O processing system
US9052837B2 (en) * 2008-02-14 2015-06-09 International Business Machines Corporation Processing communication data in a ships passing condition
US8108570B2 (en) * 2008-02-14 2012-01-31 International Business Machines Corporation Determining the state of an I/O operation
US7917813B2 (en) * 2008-02-14 2011-03-29 International Business Machines Corporation Exception condition determination at a control unit in an I/O processing system
US7941570B2 (en) * 2008-02-14 2011-05-10 International Business Machines Corporation Bi-directional data transfer within a single I/O operation
US8117347B2 (en) 2008-02-14 2012-02-14 International Business Machines Corporation Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system
US8001298B2 (en) * 2008-02-14 2011-08-16 International Business Machines Corporation Providing extended measurement data in an I/O processing system
US7908403B2 (en) * 2008-02-14 2011-03-15 International Business Machines Corporation Reserved device access contention reduction
US8095847B2 (en) * 2008-02-14 2012-01-10 International Business Machines Corporation Exception condition handling at a channel subsystem in an I/O processing system
US7840718B2 (en) * 2008-02-14 2010-11-23 International Business Machines Corporation Processing of data to suspend operations in an input/output processing log-out system
US8196149B2 (en) * 2008-02-14 2012-06-05 International Business Machines Corporation Processing of data to determine compatability in an input/output processing system
US8364751B2 (en) * 2008-06-25 2013-01-29 Microsoft Corporation Automated client/server operation partitioning
US7937504B2 (en) * 2008-07-31 2011-05-03 International Business Machines Corporation Transport control channel program message pairing
US8055807B2 (en) 2008-07-31 2011-11-08 International Business Machines Corporation Transport control channel program chain linking including determining sequence order
US7904606B2 (en) * 2008-07-31 2011-03-08 International Business Machines Corporation Transport control channel program chain linked branching
JP2010257199A (ja) * 2009-04-24 2010-11-11 Renesas Electronics Corp プロセッサ及びプロセッサにおける命令発行の制御方法
US8332542B2 (en) * 2009-11-12 2012-12-11 International Business Machines Corporation Communication with input/output system devices
US8583988B2 (en) 2011-06-01 2013-11-12 International Business Machines Corporation Fibre channel input/output data routing system and method
US8677027B2 (en) 2011-06-01 2014-03-18 International Business Machines Corporation Fibre channel input/output data routing system and method
US8738811B2 (en) 2011-06-01 2014-05-27 International Business Machines Corporation Fibre channel input/output data routing system and method
US8364853B2 (en) 2011-06-01 2013-01-29 International Business Machines Corporation Fibre channel input/output data routing system and method
US8364854B2 (en) 2011-06-01 2013-01-29 International Business Machines Corporation Fibre channel input/output data routing system and method
US9021155B2 (en) 2011-06-01 2015-04-28 International Business Machines Corporation Fibre channel input/output data routing including discarding of data transfer requests in response to error detection
US8549185B2 (en) 2011-06-30 2013-10-01 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8346978B1 (en) 2011-06-30 2013-01-01 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8312176B1 (en) 2011-06-30 2012-11-13 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8473641B2 (en) 2011-06-30 2013-06-25 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
CN102495726B (zh) 2011-11-15 2015-05-20 无锡德思普科技有限公司 机会多线程方法及处理器
US8918542B2 (en) 2013-03-15 2014-12-23 International Business Machines Corporation Facilitating transport mode data transfer between a channel subsystem and input/output devices
US8990439B2 (en) 2013-05-29 2015-03-24 International Business Machines Corporation Transport mode data transfer between a channel subsystem and input/output devices
US9558000B2 (en) * 2014-02-06 2017-01-31 Optimum Semiconductor Technologies, Inc. Multithreading using an ordered list of hardware contexts

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
JPS6312029A (ja) * 1986-03-26 1988-01-19 Hitachi Ltd 情報処理装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4506325A (en) * 1980-03-24 1985-03-19 Sperry Corporation Reflexive utilization of descriptors to reconstitute computer instructions which are Huffman-like encoded
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
DE68926701T2 (de) * 1988-08-09 1997-02-20 Matsushita Electric Ind Co Ltd Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
JPS6312029A (ja) * 1986-03-26 1988-01-19 Hitachi Ltd 情報処理装置

Also Published As

Publication number Publication date
HU911102D0 (en) 1991-10-28
DE69122294T2 (de) 1997-04-10
EP0454984A2 (en) 1991-11-06
CS93591A2 (en) 1991-12-17
EP0454984B1 (en) 1996-09-25
DE69122294D1 (de) 1996-10-31
JPH087681B2 (ja) 1996-01-29
US5500942A (en) 1996-03-19
PL289723A1 (en) 1992-05-04
EP0454984A3 (en) 1994-04-27
HUT57456A (en) 1991-11-28
CA2037708A1 (en) 1991-11-05
CA2037708C (en) 1998-01-20

Similar Documents

Publication Publication Date Title
JPH0773036A (ja) 命令シーケンスを識別してタグを付加する方法
US5502826A (en) System and method for obtaining parallel existing instructions in a particular data processing configuration by compounding instructions
US7458069B2 (en) System and method for fusing instructions
KR100230552B1 (ko) 동적 명령어 포맷팅을 이용한 컴퓨터 처리 시스템
US5448746A (en) System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US5951674A (en) Object-code compatible representation of very long instruction word programs
US5710902A (en) Instruction dependency chain indentifier
US8200987B2 (en) Dynamic object-level code translation for improved performance of a computer processor
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
KR100616722B1 (ko) 수퍼스칼라프로세서내의파이프라인명령디스패치유닛
US7979637B2 (en) Processor and method for executing data transfer process
JPH0429093B2 (ja)
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
US7343479B2 (en) Method and apparatus for implementing two architectures in a chip
US6230258B1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
JP2828219B2 (ja) オブジェクト・コード互換性を与える方法、オブジェクト・コード互換性並びにスカラ・プロセッサ及びスーパスカラ・プロセッサとの互換性を与える方法、ツリー命令を実行するための方法、データ処理システム
EP0545927B1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JP3732233B2 (ja) スーパースカラマイクロプロセッサ内で可変バイト長命令をプリデコードするための方法および装置
JPH11510288A (ja) 間接指定子を用いるエミュレーションを含む命令デコーダ
JPH06314196A (ja) 情報処理方法および装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees