JPH08507889A - スーパースカラマイクロプロセッサ用のプログラムから並行的に処理可能な命令グループを機械的に生成する方法 - Google Patents

スーパースカラマイクロプロセッサ用のプログラムから並行的に処理可能な命令グループを機械的に生成する方法

Info

Publication number
JPH08507889A
JPH08507889A JP6520497A JP52049794A JPH08507889A JP H08507889 A JPH08507889 A JP H08507889A JP 6520497 A JP6520497 A JP 6520497A JP 52049794 A JP52049794 A JP 52049794A JP H08507889 A JPH08507889 A JP H08507889A
Authority
JP
Japan
Prior art keywords
instruction
instructions
program
processed
group
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.)
Pending
Application number
JP6520497A
Other languages
English (en)
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Publication of JPH08507889A publication Critical patent/JPH08507889A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 スーパースカラプロセッサ上でプログラムの高速処理を実行できるようにするためには、当該プログラムの個々の命令を、プロセッサの各処理ユニットにより処理可能な命令グループへ、各命令を並列処理できるように分割する必要がある。この場合、データならびに制御流れの依存関係やパイプラインコンフリクトを考慮しなければならない。この目的でまずはじめに、すでに処理済みの先行命令を有する命令が選ばれ、当該命令は、その実行前に最小数の遅延サイクルしか必要ないか否かについて調べられ、最小数の命令がリストに記憶される。それらの命令のうち、ヒューリスティックな選択プロセスにしたがって1つの命令が選出され、その命令は、それをできるかぎり早い実行サイクルで実行できるような1つの命令グループへ分類される。

Description

【発明の詳細な説明】 スーパースカラマイクロプロセッサ用のプログラムから並行的に処理可能な命令 グループを機械的に生成する方法 プロセッサイクロプロセッサは少なくとも、機械語命令を並列に実行可能な複数 の機能ユニット−以下では処理ユニットと称する−により構成されている。この 特性はスーパースカラと呼ばれる。すべての処理ユニットを十分に活用するため には、スーパースカラプロセッサは1つのクロックサイクル内で複数の命令を実 行用グループとして供給しなければならない。しかし処理ユニットは一般に、た とえばロード/ストア命令または浮動小数点命令のような所定の形式の機械語命 令しか実行できないので、命令を与える際にすでに、1つのグループのすべての 命令が対応する処理ユニット上でも実行可能であるということを留意しなければ ならない。しかも命令をグループ化するにあたって、プログラムのヤマンティク スを満たせるよう、各命令間のデータおよび制御流れの依存関係を考慮しなけれ ばならない。さらに、個々の処理ユニットごとにできるかぎり高いスループット を達成するために、各処理ユニットにおけるパイプラインコンフリクトを最小化 することが重要である。 このように命令のグループ化は、スーパースカラマイクロプロセッサの効果的 な性能のために重要な役割を果たす。この場合、できるかぎり多くの命令を並列 に実行できるように各命令を1つの命令シーケンス内に配置することが重要であ る。この目的ですでに多くのアプローチが開発され公開されており、それらはス タティックなスケジューリングプロセスとダイナミックなスケジューリングプロ セスとに分類できる。 ダイナミックなスケジューリングプロセスの場合、各命令は実行中にグループ 化され直される。このことはたいてい、たとえば”スコアボード”または”リザ ベーションテーブル”のような専用のハードウェアを用いて行われる。対応する 技術は殊に、Tomasulo,R.M.An Efficlent Algorilthm for Exploring Multipl eArlthmetic Units,IBM Journal of Research and Development,1967年1 月刊、第25頁〜第33頁に記載されている。これによれば部分的に著しい付加 的なハードウェアコストが必要とされ、たいていの場合、あらかじめ固定的に規 定された個数の命令(命令窓)しか処理しない。 スタティックなスケジューリングプロセスによればすでにコンパイル時に、パ イプラインコンフリクトが最小化されておりできるだけ多くの命令を並列に実行 可能な命令シーケンスが生成されるようにしている。このための種々のアルゴリ ズムは、殊に命令パイプラ インを備えたプロセッサのために、およびマイクロプログラミングの分野で、な らびにVLIWアーキテクチャのために開発されてきた。たとえばKrishnamurth y,S.M.,A Brlef Survey of Papers on Scheduling for Pipelined Processors ;SIGPLAN Notlces,Vol.25,No.7,1990,p.97-106,には、スーパーパイプラ インアーキテクチャのためのアルゴリズムに関する概観が示されている。それら のアルゴリズムによって、できるかぎり僅かなパイプラインコンフリクトしかな い命令シーケンスがヒューリスティックに生成されるが、この場合にはたいてい 、データ依存性のない命令間のコンフリクトは考慮対象外となる。 スーパースカラプロセッサにおいて生じるような命令グループ化の問題点は、 VLIWアーキテクチャ用のコードを生成するアルゴリズムにおいて定式化の形 で取り扱われる。殊にこの場合、トレースまたはパーコレーションスケジューリ ングのように、基本ブロックの境界を超えて命令の位置をずらすことのできるグ ローバルなスケジューリングプロセスが使われる(たとえばFisher,J.A.,Trac e Scheduling:A Technique for Global Mlcrocode Compaction,IEEE Trans.o n Comp.,1981年7月刊、第478頁〜第490頁参照)。しかしながらス ーパースカラアーキテクチャとは異なり、VLIWアーキテクチャの場合にはす でにスタティックに長い命令語を生成しなければなら ない。つまり、個々の命令はすでにコンパイル時に種々異なる処理ユニットに割 り当てられ、1つの命令語の命令は同期して実行される。これに関してスーパー スカラアーキテクチャによれば、ランタイムになってはじめて最終的に命令のグ ループ化が行われ、1つのグループのすべての命令が同期しては実行されないた め、より多くのフリースペースが与えられる。 本発明の課題は、スーパースカラプロセッサに対しても1つのプログラムから 並列処理可能な命令グループを生成し、その際に付加的な遅延サイクルを伴うこ となく1つの命令グループのすべての命令を実行できるようにした新たな方法を 提供することにある。上記のような遅延サイクルは、グループ化の行われないプ ログラムにおいて、各命令間にデータ依存性が存在することにより引き起こされ る可能性があり、つまりデータに依存する後続の命令が実行可能になる前に1つ の命令が実行されなければならず、ないしはパイプライン構造においてパイプラ インコンフリクトが存在することにより引き起こされる可能性があり、これによ りいわゆるインタロックサイクルが生じる。 上記の課題は、請求項1の特徴部分に記載の方法により解決される。 請求項2には、とりわけ有利な命令グループ生成方法が示されている。 このように本発明による方法によればダイナミックなスケジューリングプロセ スを行う必要がなく、したがって付加的なハードウェアは不要である。命令グル ープへの命令の分類はむしろすでにコンパイル時に行われ、つまり命令処理が実 行される前に行われる。 次に、実施例に基づき本発明を詳細に説明する。 このプロセスは、Gibbons,P.B.,Muchnick,S.S.,Efficient Instruction S cheduling for a Pipelined Architecture,Proc.86,Sigplan Notices,Vol.2 1,No.7,第11頁〜16頁に記載されているスケジューリングプロセスをもと にしている。説明のため、以下に示すアセンブラコードで書かれたプログラムセ クションを用いる。 個々の命令については、各命令の横に示した説明により容易に理解できるもの である。たとえば命令1は、1つのワードをレジスタr3へロードし、しかもこ れをレジスタr4中にあるアドレスのメモリロケーションからロードせよ、とい うことを意味する。2番目の命令では、レジスタr3の内容に1が加算されその 結果がレジスタr3に記憶されることになる。命令3は、レジスタr4中のデー タを1つの位置だけ左へシフトせよ、ということを表す。命令4は減算命令であ り、レジスタr3の内容からレジスタr4の内容が減算され、その結果がレジス タr3に記憶されることになる。命令1〜4はいわゆる整数命令である。これに 対し、命令5〜9は浮動小数点命令である。命令5は、レジスタr5中にあるア ドレスを有する浮動小数点数を浮動小数点レジスタf2へロードせよ、というこ とを表す。命令6により、浮動小数点レジスタf1の内容が浮動小数点レジスタ f2の内容と加算され、その結果が浮動小数点レジスタf1に記憶される。命令 7において、浮動小数点数の絶対値が形成され、しかもこの場合にはレジスタf 2中にある数値の絶対値が形成され、その結果が浮動小数点レジスタf3に記憶 される。浮動小数点レジスタf3の内容はレジスタr5中にあるアドレスでメモ リに記憶され、最後に命令9において、レジスタr3の内容がゼロよりも大きけ れば、ア ドレスL1へのジャンプが行われる分岐命令が実行される。 第1図による図式化により個々の命令のデータ依存性が示されており、ここで は並列処理に際して生じる問題点がいっそう良好に示されている。この図はノー ドとエッジにより構成されており、その際、各エッジにはそれぞれ1つの遅延サ イクルテーブルV−Tabが配置されている。このテーブルは、順次連続する2 つの命令の間で1つの遅延サイクルが必要とされるか否かを表している。最初の 数値は、命令シーケンス内で明示的なノーオペレーション(noop)命令により確 保されなければならない遅延サイクルを表し、2番目の数値は、パイプラインコ ンフリクトにより引き起こされる遅延サイクルの個数を表し、これはプログラム 中ではs-noop命令を用いてシンボリックに表されるものである。たとえば整数命 令の場合、命令1の直後に命令2が実行されるときには1つの遅延サイクルが必 要とされる。これに対し命令3は命令2とは無関係であるので、それらの命令は 並列に実行可能である。しかし、これはデータ依存性ゆえに命令1の後でしか実 行できない。それというのは、そのようにしないとレジスタr4中のメモリアド レスは誤ったものになるからである。相応のことは、ダイアグラムの右側に示さ れている浮動小数点命令についてもあてはまる。この場合、V−Tabには最初 の位置にデータ依存性に 起因する遅延サイクルが示されており、2番目の位置にはパイプラインコンフリ クトに起因して生じる遅延サイクルが示されている。このことはたとえば、命令 7”abs s”の実行後、2つの別のクロックサイクルが経過してはじめて、付加 的な遅延サイクルを伴わずに命令8”s.s”を実行できることを意味する。 さらに第1図には、命令”add.s”と”abs.s”との間の依存性が示されている 。たとえば”add.s”は、同じ処理ユニットによっては、”abs.s”の実行後、3 つの遅延サイクルを経てはじめて実行することができる。これとは逆に”abs.s ”は”add.s”の実行後、2つの遅延サイクルを経てはじめて実行できる。それ ぞれ異なるユニットにおいて処理するならば、これらの依存性は存在しない。 本発明による方法を詳細に説明する前に、この方法で用いられるいくつかの用 語について定義しておく必要がある。 1.ブロッキングポジションL;これは、1つの命令により直後に続く命令のう ちの1つに対し少なくとも1つの遅延サイクルが引き起こされるときにセットさ れる。 2.後続命令数;この数値は、データに依存する後続命令が1つの命令にいくつ 続くかを表す。1つの命令のもつ後続命令の個数が増えれば増えるほど、当該命 令を命令グループに分類する際にその優先度が高くな る。 3.距離値;これは、ダイアグラム中、注目している命令と直前の命令との間の クロックサイクルにおける最大の隔たりを表す。この場合、遅延サイクルも考慮 しなければならない。ここで、d(n,n′)が1つの命令nとじかにデータに 依存する1つの後続命令n′との間の最大遅延サイクル数であり、h(n′)が n′の距離値であるとすれば、nの距離値は、後続命令数が0であればh(n) :=0であり、あるいはh(n)=h(n′)+d(n,n′)+1であり、こ の場合、直後の後続命令n′が複数であれば最大値をとる。 これらの値は値テーブルW−Tabに挿入されており、明瞭にするためそれら は第1図のダイアグラムの個々のノードのところに示されている。左側から出発 して最初の位置にブロッキングポジションLが示されており、次の位置には後続 命令数が、さらに3番目の位置には距離値が示されている。たとえば、命令1” lw”では、1つの遅延サイクルが続くのでブロッキングポジションLがセットさ れている。この場合、データに依存する2つの命令がじかに続くので後続命令数 は2である。そして、1番目の命令と命令9との距離値は4である。その他のノ ードに対応づけられた値テーブルについても相応に解釈できる。 次に、第1図によるダイアグラムを参照しテーブル 1とテーブル2を用いながら本発明による方法を詳細に説明する。テーブル1に は、プログラムセクションの個々の命令がどのように順次連続して扱われるかが 示されており、次にそれらはテーブル2によって、スーパースカラプロセッサの 各処理ユニットにより並列に実行可能な複数の命令グループにまとめられる。そ の際にここでは実例として、スーパースカラプロセッサは3つの命令の長さのデ ータワードをロードできるものとする。 プログラムセクションの調査は常に、第1図によるダイアグラム中の最初の命 令を用いて行われる。それらの命令は、データ依存性を有するような先行する命 令を有していない。次に、それらの命令に後続する命令の調査が行われ、この場 合、どの命令グループに1つの命令を分類すべきかが常に調べられる。つまり、 必要とされる遅延サイクル数が最小化されるよう、各命令を命令グループに分類 することを目標としている。この目標は以下のステップにより達成される: 第1ステップにおいて各命令ごとにブロッキングポジション、後続命令数、距 離値が算出され、値テーブルW−Tabに記憶される。遅延サイクルはV−Ta b中にある。 第2ステップにおいて、すべての命令がマークされていないようにする。 第3ステップにおいて第1リストCSが形成され、 このリスト中にはマークされていない先行命令を有していない命令が収容される 。 第4ステップにおいて第1リストCSが空であるか否かがチェックされ、第1 リストが空であればこのプロセスは終了する。 第5ステップにおいて、最小数の遅延サイクル後に実行可能であるマークされ ていない命令が第1リストから求められ、それらの命令から第2リストRSが形 成される。 第6ステップにおいて、第2リスト中に含まれている命令のうち1つの命令が ヒューリスティックな選択プロセスにしたがって選び出され、命令グループへ分 類するために用意される。 第7ステップにおいて、選び出された命令が1つのコンポーネントにおける複 数の命令グループのうちの1つに挿入される。この目的でまずはじめに、ステッ プ6において選択された命令を実行可能なできるかぎり早いサイクルが決定され る。その後、当該クロックサイクル中で、またはできるかぎり早くこのクロック サイクル後に実行される命令グループが選択される。この命令グループ中には、 場合によっては既存の、プロセッサのアーキテクチャに基づくグループ化制限を 考慮して、命令を配置させることができる。配置された最後の命令の前の命令グ ループ内の空の位置はs-noop命令で満たす必要がある。 ステップ8において、挿入された命令がマークされリストCSから除かれる。 そしてこのプロセスはステップ3から続けられる。 ヒューリスティックな選択プロセス(ステップ6)は、たとえば以下のように して行える: −まずはじめに、第2リストRS中でブロッキングポジションLのセットされて いる命令を選び出す。このような命令が1つしかなければ、その命令が選び出さ れる。このような命令が複数あれば、あるいはブロッキングポジションのセット された命令がなければ、以下の手順が続く: −最大距離値を有する命令が第2リストから選び出される。最大距離値を有する 命令が複数ある場合には、それらのうち最大の後続命令数を有する命令が選び出 される。 −複数の等価の命令が求められたときには常に、それらの命令のうちの1つを任 意に選んで、ステップ7に応じて命令グループに挿入できる。もちろん、ステッ プ6によるヒューリスティックな選択プロセスをこれとは異なるやり方で行うこ ともでき、たとえば上述の個々のステップを互いに取り替えることもできるが、 それにより解法が劣化する場合もある。 テーブル1のうち1列目には第1リストがCSとして示されており、次に第2 リストがRSとして、さらに3列目にはどの命令が選択されたかが示されている 。テーブル2には、プロセス後に生じた個々の命令グループBGが示されている 。1列目には命令グループの実行される処理サイクルが示されており、2列目に は命令グループBGの第1コンポーネントKPIが、3列目には命令グループB Gの第2コンポーネントが、さらに4列目には命令グループBGの第3コンポー ネントKP3が示されている。個々の命令グループ内には遅延サイクルがs-noop で示されている。 最初、両方のテーブル1,2は空である。この場合、ステップ1と2がすでに 実行されたものとする。したがってこのプロセスのステップ3から始められる。 まずはじめに、マークされていない先行命令を有していないノードないし命令が サーチされる。第1図によればこれは命令”lw”と命令”l.s”である。これら 両命令は、テーブル1における列CSの1行目にエントリされる。次にステップ 5において、これら両命令のうちいずれが最小数の遅延サイクルしか必要としな いかが調べられる。この場合、これら両方の命令は付加的な遅延サイクルを伴わ ずに実行でき、これに応じてこれらの命令は列RSに挿入される。ステップ6に より、これら両方の命令のうち一方が選ばれる。これらの命令は両方ともセット されたブロッキングポジショ ンを有しているので、最大距離値を有する命令が選択され、この場合、それは命 令”l.s”である。そしてこの命令はテーブル2において1つの命令グループ中 に挿入される。命令グループへの挿入はできるかぎり早い実行サイクルで行われ るという取り決めのもとに、たとえば最も左側にある許容し得る列(コンポーネ ント)において行われるという取り決めのもとに、当該命令はコンポーネントK PIのサイクル1における命令グループに配属される。命令”l.s”はマークさ れ、このプロセスのステップ3から再び始められる。 ステップ3により、マークされていない直前の先行命令を有していない命令が 選び出される。この場合にはそれは、”lw”のほかに命令”add.s”と”abs.s” もあてはまる。これらは列CSに挿入される。次にステップ5において、それら の命令のうちのいずれが最小数の遅延サイクル後に処理できるかが調べられ、そ れが列RS中へ挿入される。この場合、RSには命令”lw”しか含まれておらず 、したがってこの命令が選択され、同様にステップ7に応じて第1サイクル中、 2番目の位置KP2のところに挿入される。 さらにここで、3つのめのオペレーションについても説明しなければならない 。この場合もステップ3で始められ、どの付加的な命令がマークされていない先 行命令を有していないかが調べられる。この場合、それは命令”add”と”sl” である。CS中のすべての 命令に対しステップ5が実施され、いずれの命令が最小数の遅延サイクル後に処 理されるかが決定される。この場合、それは命令”sl”,”add.s”および”abs .s”であり、次にそれらは2列目RSに挿入される。そして、列RS中に含まれ ているこれら3つの命令に対しステップ6が実行される。これらの命令のうち命 令”abs.s”と”add.s”だけにセットされたブロッキングポジションが設けられ ているので、最大距離値を有する方の命令(”abs.s”)が選ばれる。次に、こ の命令をテーブル中の命令グループに挿入する必要がある。この場合、”abs.s ”が”I.s”の後、1つの遅延サイクルを経てはじめて実行可能であることを考 慮する必要がある。したがってこの命令はステップ7に応じてサイクル3中に挿 入される。 このプロセスの説明を締めくくるにあたって、4つめのオペレーションについ て述べる。ステップ8による命令”abs.s”のマーク後、ステップ3において命 令”s.s”が列CSに挿入される。この列中にはさらに、命令”add”,”sl”お よび”add.s”も存在している。”add.s”は”abs.s”の後、早くとも2つの遅 延サイクルを経てから実行できるので、命令”add”と”sl”だけが遅延サイク ルを伴わずに実行可能である。”add”と”sl”のうち、ステップ6にしたがっ て1つの命令が選ばれる。この場合、両方の命令はW−Tabにおいて同じエン トリを有するので、一 方を任意に選ぶことができ、たとえば”sl”を選択できる。次に、命令”sl”を 各命令グループのうちの1つに挿入する必要がある。ここでわかるのは、命令” sl”は命令”lw”の実行直後に実行できることであり、したがってこの命令を第 2サイクル中に配置できる。このためステップ7により、この命令は第2命令グ ループBG2の第1コンポーネントKPIに配属される。そして命令”sl”はマ ークされ、次にプロセスのステップ3からさらに再びこの手順が続けられる。 このことは、テーブル1の列1にもはやいかなる命令も含まれなくなるまで行 われる。そしてその結果として、テーブル2による命令シーケンスBG1〜BG 6が得られる。 なお、ステップ6により複数の等価の命令が生じた場合には常に、それらの命 令のうちの1つを任意に選ぶことができ、その結果として1つの命令グループ中 に含まれる命令はこの選択にしたがってそれぞれ異なり得ることを指摘しおく。 各命令グループBG中、これまで占有されなかった位置はsnoop命令で補うこと ができる。テーブル2のプログラムアレイに示されているように、2つの処理ユ ニットだけで浮動小数点命令を処理することができる。 テーブル2による図式化により、1つのプログラムから2次元表現が展開され ることが示されている。このことでスーパースカラプロセッサは、各サイクルご とに1つの命令をフェッチできるだけでなく、コンフリクトが発生することなく すべてを並列に実行可能な複数の命令から成る1つのグループをフェッチできる 。そして、最大数の命令を並列処理可能にするというスーパースカラプロセッサ 用のコード生成の目的が達成されるのである。したがってスーパースカラプロセ ッサにより要求されるのは命令シーケンスではなく、複数の命令グループから成 るシーケンスである。このことはテーブル2にきわめてよく示されている。プロ グラムアレイ中のコンポーネントの数は、プロセッサに同時にロード可能な命令 の個数に依存する。 さらに言及しておくと、snoop命令の挿入は説明のために必要であっただけで ある。コード生成のためには、アレイの各行が順次連続して配置され、たとえば 左から右へ配置され、snoop命令は削除される。
【手続補正書】特許法第184条の8 【提出日】1995年3月14日 【補正内容】 請求の範囲 1.スーパースカラプロセッサ用のプログラムから並行的に処理可能な命令グ ループを機械的に生成する方法において、 a)プログラムの各命令ごとに1つの値テーブル(W−Tab)には、 直接的なデータ依存性のある1つの命令の実行前に1つの遅延サイクルを挿 入すべき場合にはブロッキングポジションがセットされ、 直後に続くデータ依存性のある命令の個数を表す後続数が挿入され データ依存性のある複数の命令のうち最後の命令に至るまでの最大クロック サイクル数を表す距離値がエントリされ、 b)各命令ごとに1つの遅延サイクルテーブル(V−Tab)内で、各命令の間 にいくつの遅延サイクルが存在するかの情報が表されており、 c)複数の命令の各々は以下のステップで命令グループに分類され、すなわち、 aa)まずはじめにすべての命令がマークされずにセットされ、 ab)データ依存性のあるマークされていない先行の命令をもたないすべての命 令が第1リスト(CS)に記憶され、 ad)最小数の遅延サイクル後に実行可能な命令が前記第1リスト(CS)から 選出され、当該命令は第2リスト(RS)へ記憶され、 ae)ヒューリスティックな選択プロセスにより1つの命令が選出され、 af)選出された各命令は、できるかぎり早い実行サイクルをもつ命令グループ に当該命令が配属されるよう、複数のコンポーネントから成る1つの命令グルー プへ分類され、かつ当該命令は所定の順序にしたがって複数のコンポーネントの うちの1つに分類され、 ag)分類された命令はマークされ、 ah)プログラムのすべての命令が処理されてしまうまでステップab)〜ag)が 実行される、 ことを特徴とする、 スーパースカラプロセッサ用のプログラムから並行的に処理可能な命令グルー プを機械的に生成する方法。 2.前記のヒューリスティックなプロセスは、前記第2リスト(RS)から、 ブロッキングポジションのセットされている命令が選択され、 セットされたブロッキングポジションがなければ最大距離値と最大後続数を 有する命令が選択され、 求められた命令が複数であれば当該命令のうちの1つが選択されるようにし て行われる、 請求項1記載の方法。 3.各命令グループごとのコンポーネントの個数は、プロセッサが同時にロー ド可能な命令数に相応する、請求項1または2記載の方法。

Claims (1)

  1. 【特許請求の範囲】 1.スーパースカラプロセッサ用のプログラムから並行的に処理可能な命令グ ループを機械的に生成する方法において、 a)プログラムの各命令ごとに1つの値テーブル(W−Tab)には、 直接的なデータ依存性のある1つの命令の実行前に1つの遅延サイクルを挿 入すべき場合にはブロッキングポジションがセットされ、 直後に続くデータ依存性のある命令の個数を表す後続数が挿入され データ依存性のある複数の命令のうち最後の命令に至るまでの最大クロック サイクル数を表す距離値がエントリされ、 b)各命令ごとに1つの遅延サイクルテーブル(V−Tab)内で、各命令の間 にいくつの遅延サイクルが存在するかの情報が表されており、 c)複数の命令の各々はそのブロッキングボジション、後続数および遅延サイク ルテーブルの内容ならびにその距離値に依存して、命令グループに分類されるこ とを特徴とする、 スーパースカラプロセッサ用のプログラムから並行的に処理可能な命令グルー プを機械的に生成する方法。 2.a)はじめはすべての命令がマークされておら ず、 b)データ依存性のあるマークされていない先行の命令をもたないすべての命令 が第1リスト(CS)に記憶され、 c)最小数の遅延サイクル後に実行可能な命令が前記第1リスト(CS)から選 出され、当該命令は第2リスト(RS)へ記憶され、 d)ヒューリスティックな選択プロセスにより1つの命令が選出され、 e)選出された各命令は、できるかぎり早い実行サイクルをもつ命令グループに 当該命令が配属されるよう、複数のコンポーネントから成る1つの命令グループ へ分類され、かつ当該命令は所定の順序にしたがって複数のコンポーネントのう ちの1つに分類され、 f)分類された命令はマークされ、 g)プログラムのすべての命令が処理されてしまうまでステップa)〜f)が実 行される、 請求項1記載の方法。 3.前記のヒューリスティックなプロセスは、前記第2リスト(RS)から、 ブロッキングポジションのセットされている命令が選択され、 セットされたブロッキングポジションがなければ最大距離値と最大後続数を 有する命令が選択され、 求められた命令が複数であれば当該命令のうちの1つが選択されるようにし て行われる、 請求項2記載の方法。 4.各命令グループごとのコンポーネントの個数は、プロセッサが同時にロー ド可能な命令数に相応する、請求項2または3記載の方法。
JP6520497A 1993-03-15 1994-03-01 スーパースカラマイクロプロセッサ用のプログラムから並行的に処理可能な命令グループを機械的に生成する方法 Pending JPH08507889A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE4308173.8 1993-03-15
DE4308173 1993-03-15
PCT/DE1994/000221 WO1994022079A1 (de) 1993-03-15 1994-03-01 Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren

Publications (1)

Publication Number Publication Date
JPH08507889A true JPH08507889A (ja) 1996-08-20

Family

ID=6482829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6520497A Pending JPH08507889A (ja) 1993-03-15 1994-03-01 スーパースカラマイクロプロセッサ用のプログラムから並行的に処理可能な命令グループを機械的に生成する方法

Country Status (5)

Country Link
US (1) US5712996A (ja)
EP (1) EP0689694B1 (ja)
JP (1) JPH08507889A (ja)
DE (1) DE59401478D1 (ja)
WO (1) WO1994022079A1 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787439A (en) * 1996-12-13 1998-07-28 Novell, Inc. Method and system for maintaining a preferred sequence for accessing a plurality of objects
US5805849A (en) * 1997-03-31 1998-09-08 International Business Machines Corporation Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6314471B1 (en) 1998-11-13 2001-11-06 Cray Inc. Techniques for an interrupt free operating system
JP2002532775A (ja) * 1998-12-08 2002-10-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ インタープリタプログラム実行方法
US6415433B1 (en) 1998-12-23 2002-07-02 Cray Inc. Method and system for identifying locations to move portions of the computer program
US6353829B1 (en) 1998-12-23 2002-03-05 Cray Inc. Method and system for memory allocation in a multiprocessing environment
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6321379B1 (en) 1998-12-23 2001-11-20 Cray Inc. Method and system for target register allocation
US6311266B1 (en) * 1998-12-23 2001-10-30 Cray Inc. Instruction look-ahead system and hardware
US6430676B1 (en) * 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead
US6457173B1 (en) * 1999-08-20 2002-09-24 Hewlett-Packard Company Automatic design of VLIW instruction formats
US7249242B2 (en) 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US7400668B2 (en) * 2001-03-22 2008-07-15 Qst Holdings, Llc Method and system for implementing a system acquisition function for use with a communication device
US6836839B2 (en) * 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US20020184291A1 (en) * 2001-05-31 2002-12-05 Hogenauer Eugene B. Method and system for scheduling in an adaptable computing engine
US7046635B2 (en) * 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) * 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7602740B2 (en) * 2001-12-10 2009-10-13 Qst Holdings, Inc. System for adapting device standards after manufacture
US7088825B2 (en) * 2001-12-12 2006-08-08 Quicksilver Technology, Inc. Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7231508B2 (en) * 2001-12-13 2007-06-12 Quicksilver Technologies Configurable finite state machine for operation of microinstruction providing execution enable control value
US7114058B1 (en) * 2001-12-31 2006-09-26 Apple Computer, Inc. Method and apparatus for forming and dispatching instruction groups based on priority comparisons
US7034849B1 (en) * 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US7681013B1 (en) 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US7403981B2 (en) * 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US7028167B2 (en) * 2002-03-04 2006-04-11 Hewlett-Packard Development Company, L.P. Core parallel execution with different optimization characteristics to decrease dynamic execution path
US7200738B2 (en) 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7328414B1 (en) * 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7093255B1 (en) * 2002-05-31 2006-08-15 Quicksilver Technology, Inc. Method for estimating cost when placing operations within a modulo scheduler when scheduling for processors with a large number of function units or reconfigurable data paths
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US7609297B2 (en) * 2003-06-25 2009-10-27 Qst Holdings, Inc. Configurable hardware based digital imaging apparatus
US7827216B1 (en) 2003-07-23 2010-11-02 Novell, Inc. Method for coordinating relationships between multiple physical entities
US7200837B2 (en) * 2003-08-21 2007-04-03 Qst Holdings, Llc System, method and software for static and dynamic programming and configuration of an adaptive computing architecture
US20050050524A1 (en) * 2003-08-25 2005-03-03 Arm Limited Generating software test information
JP3901181B2 (ja) * 2004-06-30 2007-04-04 日本電気株式会社 プログラム並列化装置及びその方法並びにプログラム
US7617385B2 (en) * 2007-02-15 2009-11-10 International Business Machines Corporation Method and apparatus for measuring pipeline stalls in a microprocessor
US8046750B2 (en) * 2007-06-13 2011-10-25 Microsoft Corporation Disco: a simplified distributed computing library
US9383970B2 (en) * 2009-08-13 2016-07-05 Microsoft Technology Licensing, Llc Distributed analytics platform
JP5990466B2 (ja) 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
EP0535107B1 (en) * 1990-06-11 1999-12-08 Cray Research, Inc. Method for optimizing instruction scheduling
JPH0475139A (ja) * 1990-07-18 1992-03-10 Toshiba Corp ループ並列化装置
US5202993A (en) * 1991-02-27 1993-04-13 Sun Microsystems, Inc. Method and apparatus for cost-based heuristic instruction scheduling
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching

Also Published As

Publication number Publication date
WO1994022079A1 (de) 1994-09-29
DE59401478D1 (de) 1997-02-13
EP0689694B1 (de) 1997-01-02
EP0689694A1 (de) 1996-01-03
US5712996A (en) 1998-01-27

Similar Documents

Publication Publication Date Title
JPH08507889A (ja) スーパースカラマイクロプロセッサ用のプログラムから並行的に処理可能な命令グループを機械的に生成する方法
US11340908B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
US5974538A (en) Method and apparatus for annotating operands in a computer system with source instruction identifiers
US5923863A (en) Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
JP4957729B2 (ja) プログラム並列化方法、プログラム並列化装置及びプログラム
US10061582B2 (en) Method for increasing the speed of speculative execution
JP2698033B2 (ja) 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法
US6718541B2 (en) Register economy heuristic for a cycle driven multiple issue instruction scheduler
KR101702651B1 (ko) 하드웨어 포인터를 이용한 simd 코어 내 분기 해법
JP3280449B2 (ja) コンパイル装置
Hoogerbrugge et al. Transport-triggering vs. operation-triggering
US5408658A (en) Self-scheduling parallel computer system and method
US5634023A (en) Software mechanism for accurately handling exceptions generated by speculatively scheduled instructions
WO2000049499A2 (en) System and method for generating recovery code
Bharadwaj et al. The Intel IA-64 compiler code generator
US7747990B2 (en) Processors and compiling methods for processors
EP2951682B1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
US5450588A (en) Reducing pipeline delays in compilers by code hoisting
Sakdhnagool et al. RegDem: Increasing GPU performance via shared memory register spilling
KR100403676B1 (ko) 카운터플로우파이프라인프로세서와카운터플로우파이프라인프로세서에서유용한명령의레지스터값을라벨링하는방법
JP2002251282A (ja) プロセッサにおけるループの処理
Johansson et al. Native code compilation for Erlang
JP2806093B2 (ja) ロード・ストア処理装置
JP2629474B2 (ja) 並列パイプライン命令処理装置の命令実行処理方式
Shin et al. Identification of microprogrammable loops for problem oriented architecture synthesis