JPH087681B2 - スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法 - Google Patents

スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法

Info

Publication number
JPH087681B2
JPH087681B2 JP3096091A JP9609191A JPH087681B2 JP H087681 B2 JPH087681 B2 JP H087681B2 JP 3096091 A JP3096091 A JP 3096091A JP 9609191 A JP9609191 A JP 9609191A JP H087681 B2 JPH087681 B2 JP H087681B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
sequence
parallel
scalar
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP3096091A
Other languages
English (en)
Other versions
JPH0773036A (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 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)

Description

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

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】データ処理システム内の命令ストリーム内
    のスカラー命令の並列実行可能性を、前記データ処理シ
    ステムの処理ユニットによる実行のためにフェッチする
    のに先立って判定し指示する方法であって、 所定長のウインドウ内のバイト・ストリームを前記ウイ
    ンドウ内の命令を構成する第1バイト・シーケンスにグ
    ループ化するステップと、 前記ウインドウ内の各命令及びそれに隣接する命令が命
    令複合化規則に従って複合できるか否かを示す第1の複
    合化ビット・ベクトルを生成するステップと、 前記所定長のウインドウ内のバイトを前記ウインドウ内
    の他の命令シーケンスを構成する第2バイト・シーケン
    スにグループ化するステップと、 第2の複合化ビット・ベクトルを生成するステップと、 前記ウインドウ内の実際に実行されるべき命令シーケン
    スが複合されるのを保証するに十分な回数だけ前記ウイ
    ンドウ内で新しい想定命令シーケンスを構成する新しい
    バイト・シーケンスのグループ化及び複合化ビット・ベ
    クトルの生成のステップを反復するステップと、 前記各ステップで生成された各複合化ベクトルを単一の
    ベクトルに合成することにより合成複合化ベクトルを形
    成するステップと、 前記ウインドウ内の命令が前記合成複合化ベクトルに従
    って前記処理ユニットで実行されるようにフェッチされ
    る際に前記ウインドウ内の命令の複合化を制御するステ
    ップと、 を含むことを特徴とするスカラ命令並列実行可能性を判
    定し指示する方法。
  2. 【請求項2】前記第1バイト・シーケンス内の第1命令を
    調べて該第1の命令に対する第1命令長フィールド値を判
    定するステップと、 前記第1命令長フィールド値を用いて少なくとも第2命令
    を探すステップと、 前記第1命令及び前記少なくとも第2命令を識別ビット・
    タグと共に符号化して特定のコンピュータ・システム構
    成で並列実行可能な複合命令の潜在的命令成分としてタ
    グ付けされるか否かを示すステップと、 を含む請求項1記載のスカラ命令並列実行可能性を判定
    し指示する方法。
  3. 【請求項3】前記バイト・ストリームから前記第1命令
    とは異なる他の命令を選択することにより第2命令シー
    ケンスを形成するステップと、 前記他の命令を調べて前記第2命令シーケンス内の前記
    他の命令に対する他の命令長フィールド値を判定するス
    テップと、 前記他のフィールド値を用いて更に他の命令を探すステ
    ップと、 前記他の及び更に他の命令を識別ビット・タグと共に符
    号化して前記他の及び更に他の命令が特定のコンピュー
    タ・システム構成のハードウエア利用要件に従って前記
    特定のコンピュータ・システム構成内で並列実行可能な
    複合命令の潜在的命令要素としてタグ付けされるか否か
    を示すステップと、 を含むことを特徴とする、請求項2記載のスカラ命令並
    列実行可能性を判定し指示する方法。
  4. 【請求項4】前記第1命令シーケンス内の前記第1及び第
    2命令を前記第2命令シーケンス内の前記他の及び更に他
    の命令と比較して命令境界間の有効な収斂を検出し、有
    効な収斂があれば命令シーケンスを崩壊し、有効な収斂
    がなければ命令のウインドウの終わりまで命令シーケン
    スを続け、これにより収斂に先立って命令シーケンス毎
    に仮の境界が決定され、バイト・ストリーム内の潜在的
    複合命令の位置を識別する各命令に対して識別ビットが
    割り当てられるようにするステップと、 を含むことを特徴とする、請求項3記載のスカラ命令並
    列実行可能性を判定し指示する方法。
  5. 【請求項5】データ処理システム内で命令境界基準点が
    不明の命令ストリーム内の命令を処理して特定のコンピ
    ュータ構成で並列実行可能な隣接するスカラ命令を識別
    する方法であって、 異なる命令境界で開始する異なる命令シーケンスを生成
    するステップと、 各命令をその隣接する命令との並列実行可能性を示す識
    別タグと共に符号化するステップと、 を含むことを特徴とする並列実行可能な隣接するスカラ
    命令を識別する方法。
  6. 【請求項6】前記符号化するステップにおける並列実行
    可能性は互いに隣接する2つ以上の命令のグループを比
    較することにより符号化することを特徴とする、請求項
    5記載の並列実行可能な隣接するスカラ命令を識別する
    方法。
  7. 【請求項7】前記識別タグを、前記命令ストリーム内の
    どのスカラ命令が並列実行可能かを示す合成識別タグ・
    シーケンスに合成するステップを含むことを特徴とす
    る、請求項5記載の並列実行可能な隣接するスカラ命令
    を識別する方法。
  8. 【請求項8】前記識別タグは2進ビットであり、対応す
    る命令とともに符号化された識別ビットの2進ビットをO
    Rすることにより前記合成識別タグ・シーケンスに合成
    されることを特徴とする、請求項7記載の並列実行可能
    な隣接するスカラ命令を識別する方法。
  9. 【請求項9】前記識別タグは並列実行可能なシーケンス
    内の後続命令の数を識別するディジタル値を有し、前記
    合成識別タグ・シーケンス内の前記識別タグの各々は前
    記符号化ステップで符号化された対応する命令に対して
    最高のディジタル値を有することを特徴とする、請求項
    7記載の並列実行可能な隣接するスカラ命令を識別する
    方法。
  10. 【請求項10】並列実行可能な隣接命令シーケンスの第
    1命令に対応する識別タグに応答し前記合成識別タグ・
    シーケンス内の他のすべての識別タグを無視することに
    より前記合成識別タグ・シーケンスに従って前記命令ス
    トリーム内の命令の並列実行を制御するステップを含む
    ことを特徴とする、請求項8記載の並列実行可能な隣接
    するスカラ命令を識別する方法。
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 JPH0773036A (ja) 1995-03-17
JPH087681B2 true 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 (79)

* 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
DE59301610D1 (de) * 1992-09-22 1996-03-21 Siemens Ag Verfahren zur bearbeitung eines anwenderprogramms auf einem parallelrechnersystem
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
EP0651324B1 (en) * 1993-10-29 2006-03-22 Advanced Micro Devices, Inc. Speculative instruction queue for variable byte length instructions
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
EP1369775A1 (en) * 1993-11-05 2003-12-10 Intergraph Hardware Technologies Company 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
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
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
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
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
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded 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
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
US7908403B2 (en) * 2008-02-14 2011-03-15 International Business Machines Corporation Reserved device access contention reduction
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
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
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
US8478915B2 (en) 2008-02-14 2013-07-02 International Business Machines Corporation Determining extended capability of a channel path
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
US8108570B2 (en) * 2008-02-14 2012-01-31 International Business Machines Corporation Determining the state of an I/O operation
US7941570B2 (en) 2008-02-14 2011-05-10 International Business Machines Corporation Bi-directional data transfer within a single I/O operation
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
US8196149B2 (en) * 2008-02-14 2012-06-05 International Business Machines Corporation Processing of data to determine compatability in an input/output processing system
US9052837B2 (en) * 2008-02-14 2015-06-09 International Business Machines Corporation Processing communication data in a ships passing condition
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
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
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
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
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
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
US8001298B2 (en) * 2008-02-14 2011-08-16 International Business Machines Corporation Providing extended measurement data in an I/O processing system
US8364751B2 (en) * 2008-06-25 2013-01-29 Microsoft Corporation Automated client/server operation partitioning
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
US7937504B2 (en) * 2008-07-31 2011-05-03 International Business Machines Corporation Transport control channel program message pairing
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
US8364853B2 (en) 2011-06-01 2013-01-29 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
US8583988B2 (en) 2011-06-01 2013-11-12 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
US8364854B2 (en) 2011-06-01 2013-01-29 International Business Machines Corporation Fibre channel input/output data routing system and method
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
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
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
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
US11294678B2 (en) * 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment

Family Cites Families (14)

* 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
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
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
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH087681B2 (ja) スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法
JP2500082B2 (ja) スカラ命令の並列実行を得る方法およびシステム
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US7458069B2 (en) System and method for fusing instructions
US5710902A (en) Instruction dependency chain indentifier
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
CN100392596C (zh) 编译装置及编译方法
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
US5337415A (en) Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
KR100230552B1 (ko) 동적 명령어 포맷팅을 이용한 컴퓨터 처리 시스템
KR100715055B1 (ko) Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법
US5448746A (en) System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US20060174089A1 (en) Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
KR19990064091A (ko) Risc형 명령 세트 및 슈퍼스칼라 마이크로프로세서
US20140075157A1 (en) Methods and Apparatus for Adapting Pipeline Stage Latency Based on Instruction Type
US6324639B1 (en) Instruction converting apparatus using parallel execution code
US7979637B2 (en) Processor and method for executing data transfer process
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) スーパースカラマイクロプロセッサ内で可変バイト長命令をプリデコードするための方法および装置
EP0825529A2 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP2006012185A (ja) プロセッサ

Legal Events

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