JP5068529B2 - 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング - Google Patents

時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング Download PDF

Info

Publication number
JP5068529B2
JP5068529B2 JP2006506909A JP2006506909A JP5068529B2 JP 5068529 B2 JP5068529 B2 JP 5068529B2 JP 2006506909 A JP2006506909 A JP 2006506909A JP 2006506909 A JP2006506909 A JP 2006506909A JP 5068529 B2 JP5068529 B2 JP 5068529B2
Authority
JP
Japan
Prior art keywords
instruction
vliw
register file
value
program
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
JP2006506909A
Other languages
English (en)
Other versions
JP2006525583A (ja
Inventor
アー イェー レイェテン イェロエン
Original Assignee
シリコン ハイブ ビー・ヴィー
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 シリコン ハイブ ビー・ヴィー filed Critical シリコン ハイブ ビー・ヴィー
Publication of JP2006525583A publication Critical patent/JP2006525583A/ja
Application granted granted Critical
Publication of JP5068529B2 publication Critical patent/JP5068529B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明は、一般的にはデジタル処理の改善、特に、並列プロセッサにおける条件付きのブランチング並びにルーピングをサポートする方法、装置及びコンパイラに関する。
プログラマブルプロセッサは、命令形態にコード化したプログラム情報に基づいて入力データを出力データに変換するのに用いられる。これにて得られる出力データの値は、如何なる瞬時でも入力データ、プログラム情報及びプロセッサの瞬時状態に依存する。従来のプロセッサにおけるこの瞬時状態は、例えば所謂フラグはもとより、レジスタに格納された一時的なデータ値で作られる。これらのフラグは通常、2〜3例を挙げると、計算中に特定の丸めモードを設定したり、或る演算のセマンティクスに影響を与えたり、プログラムの流れを変えたりするのに用いられる。フラグは通常、特殊なフラグレジスタに格納され、このレジスタにおけるフラグは、1つ以上のフラグを変えることのできる各命令の後に書き換えられる。通常、プロセッサ内で如何なる瞬時でも同じフラグに多数の値を持たせて活用することはできない。
高性能演算の需要が高まるにつれて、何らかの形態の同時処理、即ち並列処理をプロセッサのアーキテクチャに導入した幾つかの解決策が紹介されるようになった。2つの主だった概念、即ち、プログラムの幾つかのスレッドを並列に実行するマルチスレッディング概念と、超大型命令語(VLIW : Very Large Instruction Word)概念とが採用されている。VLIWプロセッサの場合には、複数の命令を1つの長い命令、所謂VLIW命令にパッケージする。VLIWプロセッサは、複数の独立した実行ユニットを用いて、これら複数の命令を並列に実行する。プロセッサは、プログラムの命令レベルでの並列処理を活用して、一度に1つ以上の命令を実行することができる。この同時処理形態により、プロセッサの性能が向上する。ソフトウェアプログラムをVLIWプロセッサで実行するためには、それをVLIW命令のセットの形に変えなければならない。コンパイラは並列処理を最適化することによってプログラムを実行させるのに必要とされる時間を最少にしようと努める。コンパイラは、単一VLIW命令に割り当てられた命令を並列に実行することができると云う制約の下で、しかもデータ依存の制約の下で、複数の命令をVLIW命令に合成する。並列命令をVLIW命令にコード化することは、コードサイズをかなり大きくすることになる。このような大きなコードサイズは、必要とされるメモリサイズと、必要とされるメモリ帯域幅との双方によってプログラムメモリのコストが増大することになる。最近のVLIWプロセッサでは、コードサイズを低減させるために種々の手段が採られている。1つの重要な例に、データ静止(data stationary)型のプロセッサでのno operation(NOP)演算をコンパクトに表現するもの、即ち、NOP演算をVLIW命令の前に付加した特別なヘッダーにおける単一ビットによってコード化するものがある。
プロセッサのデータパイプラインでの演算を制御するために、通常はコンピュータアーキテクチャにて2つの異なるメカニズムを用いるのが普通であり、それは、G. Goossens, J. van Praet, D. Lanneer, W. Geurts, A. Kifli, C. Liem 及びP. Paulinによる「Proceedings of the IEEE」(vol. 85.no. 3, 1997年3月)の“Embedded software in real-time signal processing systems: design technologies”に開示されているような、データ−静止型及び時間−静止型のコード化である。データ−静止型のコード化の場合には、プロセッサの命令セットの一部であるどの命令も、それがデータパイプラインを移動する際に、特定のデータアイテムを実行しなければならない演算の完全系列を制御する。命令が一旦プログラムメモリから取り出されて、デコードされたら、プロセッサコントローラのハードウェアは、合成演算が正しいマシーンサイクルで実行されるようにする。時間−静止型コード化の場合には、プロセッサの命令セットの一部であるどの命令も、単一のマシーンサイクルで実行しなければならない演算の完全セットを制御する。これらの演算はデータパイプラインを移動する幾つか異なるデータアイテムにについて云えることである。この場合に、データパイプラインを設定し、且つ維持することはプログラマ又はコンパイラの責任である。斯様にして得られるパイプラインのスケジュールはマシーンコードプログラムにて完全に見ることができる。時間−静止型のコード化は、アプリケーション特有のプロセッサによく用いられる。これは、斯様なコード化が、大きなコードサイズを犠牲にして、命令中に存在する制御情報を遅延させるのに必要なハードウェアのオーバヘッドをセーブするからである。データ−静止型のプロセッサの場合には、演算の条件付き実行を飛越し動作を用いることなく実施することができる。しかしながら、従来の時間−静止型プロセッサの場合には、演算の条件付き実行を飛越し動作を用いることなく実施することはできない。先の特許出願(欧州特許出願第03101038.2号〔代理人の整理番号PHNL030384EPP〕)には、飛越し動作を用いることなく演算を条件付きで実行可能にする時間−静止型プロセッサが開示されている。
フラグの原理及びこれらフラグの格納並びに更新の仕方の欠点は、これらフラグがプロセッサに所謂副作用、即ちプログラムでははっきり見ることができない作用を生じさせることにある。それよりも、副作用は、先に行った演算に応じて、プログラムの異なる部分における同じ演算が違ったセマンティックスを示すことになる一種の絶対的な作用を引き起こす。プログラムは、フラグの更新をプログラムによってより良好に制御し得るようにする場合に、より効率的に作られることになる。例えば、ブランチ(分岐)がゼロの減算結果を生じさせなければならい場合には、条件としてゼロ−フラグを用いるブランチを用いることができる。しかし、この場合には、減算演算とブランチ演算との間にて、ゼロ−フラグを変える演算をスケジュールすることができない。通常は多くの演算がフラグを更新するから、減算演算はブランチ演算の直前にスケジュールしなければならないことがよくある。こうした種類の制約は、プログラムのスケジュール自由度をかなり制限することになり、潜在的に有効なスケジュールを無視することになる。一般に、フラグはCプログラミング言語のような高レベル言語に対してパワフルなコンパイラを非常に生成し難くすると云える。特に、VLIWプロセッサのような並列プロセッサでは、フラグは追加の問題を負わすことになる。その理由は、多数の演算を並列に実行し得るようにする場合に、フラグレジスタを更新させるのにどんな演算をすべきかはっきりしないからである。理想的には、コンパイラ馴染みのVLIWプロセッサが最少の副作用しか呈さないようにする。従来のフラグの概念を取り除くことによって、斯様な多くの副作用を除外することができる。例えば、特殊な丸めモード又は他の特殊な演算セマンティックスを、特殊な演算コード、例えば正規の加算命令のデータ入力に続く第3のデータ入力としてとられるキャリーでの加法のための特殊なaddc命令を用いることにより実施することができる。しかしながら、通常はフラグを用いて、例えば、branch-on-equalを決定するのにゼロフラグをとることによって取り扱われるブランチングの実施に関わる問題が残っている。
本発明の目的は、フラグを用いることなく、プロセッサ、特に並列プロセッサにブランチング及びルーピングの使用を可能にすることにある。
上記本発明の目的は、プログラムカウンタの制御下で一式の命令を実行するために配置した処理システムであって:実行ユニットと、この実行ユニットによりアクセス可能で、データを格納するための第1のレジスタファイルと、前記一式の命令を格納するためのプログラムメモリと、前記実行ユニットによりアクセス可能で、前記プログラムカウンタの値を格納するための第2のレジスタファイルとを具え、且つ前記実行ユニットが前記プログラムカウンタの値を前記第2のレジスタファイルに書き込むための専用命令を条件付きで実行すべく構成配置されるようにした、命令実行用の処理システムで達成される。計算手段は、加算器、乗算器、論理演算、例えばAND,OR,XOR等や、ルックアップテーブル演算、メモリアクセス等を行うための手段で構成することができる。
命令の正規の逐次実行中に、プログラムカウンタの値はサイクル毎に増分される。しかしながら、命令実行中のブランチング及びルーピングには、次に実行すべき目標命令を指示するために、プログラムカウンタはその増分値とは異なる値に切り換えられるようにする必要がある。専用命令を条件付きで実行することにより、実行ユニットは、条件が真である場合に、プログラムカウンタの値を第2レジスタファイルに書き込むことができる。条件が真でない場合には、プログラムカウンタの値は第2レジスタファイルに書き込まれない。最初の場合には、プログラムカウンタが、次に実行すべきブランチ又はループ目標命令を指示する。第2の場合には、プログラムカウンタを通常通り増分させることができ、ブランチングや、ルーピングは行われない。従って、フラグを必要とすることなく、条件付きのブランチング及びルーピングを行うことができる。
米国特許第6,366,999号には、超大型命令語プロセッサにおける条件付き実行をサポートする方法及び装置が開示されている。実行命令によって発生される条件付きの状態は、所謂算術条件フラグ(ACFs)にてセーブされる。ACFsは、条件付きブランチングと条件付き実行との双方に用いられる。さらに、ACFsは、命令実行の結果として設定されるか、又は状態情報のブール結合の結果として設定される状態情報を包含する。これらのACFsは、条件付き命令によって特定し、且つ使用することができ、これにより条件付きブランチの使用を最少にすることができる。しかし、上記米国特許には、フラグを用いることなく、プロセッサにて条件付きのブランチングを如何にして行うかについては開示されておらず、斯様なプロセッサを如何にして実現し得るかについても開示されていない。
本発明の好適例では、実行ユニットをさらに、ブランチ条件を評価した後に、該評価の結果をガードとして用いて、プログラムカウンタの値を第2のレジスタファイルに書き込むための第1の専用命令を条件付きで実行すべく構成配置する。ブランチ条件は前もって計算することができ、その専用の命令を用いて、第2レジスタファイルへのプログラムカウンタの値の条件付き書き戻しが実施される。
本発明のさらに他の好適例では、実行ユニットをさらに、第2の専用命令を実行すべく構成配置し、該第2の専用命令は少なくとも第1アーギュメントと第2アーギュメントを有し、第2アーギュメントはプログラムカウンタの値とし、第2の専用命令は、第1アーギュメントの値に応じて、プログラムカウンタの値を第2のレジスタファイルに書き込むべく編成されるようにする。第1アーギュメントは、ブランチ条件の値、又は他のいずれかのデータ値とすることができる。原則として、どんな種類の演算及びどんな種類の実行ユニットでも、このようにしてプログラムカウンタの値を変え、従って条件付きのブランチング又はルーピングを行うことができる。
本発明の他の好適例は従属請求項に記載した通りである。本発明によれば、前記処理システムをプログラミングする方法並びに処理システムをプログラミングする前記方法の全てのステップをコンピュータシステムに実行させるために編成したコンパイラプログラムプロダクトも同じく請求される。
図1及び図2の概略図は、複数の実行ユニットEX1及びEX2と、レジスタファイルRF1及びRF2を含む分散レジスタファイルとを具えている時間−静止型のVLIWプロセッサを示す。レジスタファイルRF1及びRF2には、これらのレジスタファイルから入力データIDを取り出すために、実行ユニットEX1及びEX2がそれぞれアクセス可能である。実行ユニットEX1及びEX2はまた、通信ネットワークCN及びマルチプレクサMP1及びMP2を介してレジスタファイルRF1及びRF2に結合され、前記実行ユニットからの結果データRD1及びRD2を書き込みデータWD1及びWD2として分散レジスタファイルに送出する。プロセッサはさらに、プログラムカウンタPCの値を格納するためのレジスタファイルRF3も具えている。実行ユニットEX2は、結果データRD2を書き込みデータとしてレジスタファイルRF3に書き込むために、通信ネットワークCN及びマルチプレクサMP3,MP4を介してレジスタファイルRF3にも結合されている。実行ユニットEX2は、レジスタファイルRF3からのプログラムカウンタPCの値を実行ユニットEX2とレジスタファイルRF3との間の直接接続を介して読み取ることもできる。コントローラCTRはレジスタファイルRF3からのプログラムカウンタPCの値を読み取る。プログラムカウンタのこの値は、次に実行すべき命令が格納されているプログラムメモリPMにおけるアドレスを提示する。プログラムカウンタPCの値を用いることにより、コントローラCTRはプログラムメモリPMから命令INを取り出す。この命令INは命令レジスタIRに格納される。次に、命令INはコントローラCTRによって命令レジスタIRから検索され、コントローラCTRはこの命令INをデコードする。コントローラCTRはまた、レジスタファイルRF3から読み取ったプログラムカウンタPCの値を、ユニットINCRを用いて増分し、プログラムカウンタPCのこの増分値をマルチプレクサMP4に送出する。マルチプレクサMP4を介して、プログラムカウンタPCの増分値か、書き込みデータWD3に対応するプログラムカウンタの値のいずれかが、書き込み可能指標WE3に応じてレジスタファイルRF3に格納される。書き込み可能指標WE3が真に等しい場合には、書き込みデータWD3に対応するプログラムカウンタの値がレジスタファイルRF3に書き込まれ、そうでない場合には、プログラムカウンタPCの増分値がレジスタファイルRF3に書き込まれる。一般に、実行される命令は、2つのオペランドだけを必要として1つの結果のみを発生するRISCのような演算、並びに2つよりも多いオペランドを消費でき、及び/又は1つ以上の結果を生成し得る特注の演算を含んでいる。幾つかの命令は、オペランドデータとして小さいか、又は大きい即値(immediate value)を必要とすることがある。デコーディングステップの結果は、書き込み選択指標WS1,WS2及びWS3と、書き込みレジスタファイル指標WR1及びWR2と、読み取りレジスタ指標RR1及びRR2と、演算妥当性指標OPV1及びOPV2と、演算コードOC1及びOC2である。書き込み選択指標WS1,WS2及びWS3は、コントローラCTRと、マルチプレクサMP1,MP2及びMP3との間の結合を介してそれぞれマルチプレクサMP1,MP2及びMP3に供給される。書き込み選択指標WS1,WS2及びWS3は、レジスタファイルRF1,RF2及びRF3にそれぞれ書き込まなければならないデータWD1,WD2及びWD3に対する必要な入力チャネルを通信ネットワークCNから選択するために対応するマルチプレクサによって用いられる。書き込み選択指標WS1,WS2及びWS3はまた、対応するレジスタファイルRF1,RF2又はRF3へのデータWD1,WD2及びWD3の実際の書き込みを可能にしたり、不能にしたりするのに用いられる書き込み可能指標WE1,WE2及びWE3に対する入力チャネルを通信ネットワークCNから選択するために対応するマルチプレクサによって用いられる。コントローラCTRは、データを書き込まなければならないレジスタを対応するレジスタファイルから選択するために、書き込みレジスタ指標WR1及びWR2を与えるためにレジスタファイルRF1及びRF2に結合される。コントローラCTRはレジスタファイルRF1及びRF2に読み取りレジスタ指標RR1及びRR2もそれぞれ供給して、実行ユニットEX1及びEX2によってそれぞれ入力データIDを読み出さなければならないレジスタを対応するレジスタファイルから選択する。レジスタファイルRF3だけは1つのレジスタしか有しておらず、従ってこのレジスタは読み取りレジスタ指標も書き込みレジスタ指標も必要としない。コントローラCTRは実行ユニットEX1及びEX2にも結合されて、実行ユニットEX1又はEX2が対応する入力データIDに成すべき演算のタイプを規定する演算コードOC1及びOC2をそれぞれ供給する。演算妥当性指標OPV1及びOPV2も実行ユニットEX1及びEX2にそれぞれ供給され、これらの指標は、対応する演算コードOC1,OC2によって妥当な演算が規定されるかどうかを示す。演算妥当性指標OPV1及びOPV2の値はVLIW命令のデコーディング中に決定される。コントローラは、このデコーディング後にプログラムから書き込み選択指標を得て、これらの書き込み選択指標を対応するマルチプレクサMP1,MP2又はMP3に直接供給する。
図1を参照するに、コントローラCTRはレジスタ105に結合されている。コントローラCTRはデコーディングステップ中にプログラムから演算妥当性指標OPV1及びOPV2を取り出し、これらの演算妥当性指標をレジスタ105に供給する。コード化演算がNOP演算である場合には、演算妥当性指標は偽に設定され、そうでなければ、演算妥当性指標は真に設定される。演算妥当性指標OPV1及びOPV2は、レジスタ105,107及び109を用いる対応する実行ユニットEX1及びEX2のパイプラインにより遅延される。別の例では、対応する実行ユニットのパイプライン深度に応じてレジスタの個数を変えることができる。実行ユニットEX1及びEX2によるそれぞれ演算コードOC1及びOC2によりそれぞれ規定されるような演算の実行後には、対応する結果データRD1及びRD2並びに対応する出力妥当性指標OV1及びOV2が生成される。出力妥当性指標OV1又はOV2は、対応する結果データRD1又はRD2が妥当な場合には真であり、そうでなければ偽である。ユニット101は遅延した演算妥当性指標OPV1と出力妥当性指標OV1とで論理AND演算を行って、結果妥当性指標RV1を得る。ユニット103は、遅延した演算妥当性指標OPV2と出力妥当性指標OV2とで論理AND演算を行って、結果妥当性指標RV2を得る。ユニット101及び103は共に、部分的に接続されたネットワークCNを介してマルチプレクサMP1及びMP2に結合されて、結果妥当性指標RV1及びRV2をマルチプレクサMP1及びMP2に送出する。ユニット103だけは、部分的に接続されたネットワークCNを介してマルチプレクサMP3にも結合されて、結果妥当性指標RV2をマルチプレクサMP3にも送出する。書き込み選択指標WS1及びWS2は、対応するマルチプレクサMP1及びMP2によって用いられて、接続ネットワークCNから、結果データを対応するレジスタファイルに書き込みデータWD1又はWD2としてそれぞれ書き込まなければならないチャネルを選択する。結果データチャネルがマルチプレクサMP1又はMP2によって選択される場合には、結果妥当性指標RV1及びRV2が書き込み可能指標WE1及びWE2を設定するのに用いられて、レジスタファイルRF1及びRF2への結果データRD1及びRD2の書き込みをそれぞれ制御する。マルチプレクサMP1又はMP2が結果データRD1に対応する入力チャネルを選択した場合には、結果妥当性指標RV1がそのマルチプレクサに対応する書き込み可能指標を設定するために用いられ、また、結果データRD2対応する入力チャネルが選択される場合には、結果妥当性指標RV2が、対応する書き込み可能指標を設定するために用いられる。マルチプレクサMP3が結果データRD2に対応する入力チャネルを選択した場合には、結果妥当性指標RV2が書き込み可能指標WE3を設定するのに用いられ、レジスタファイルRF3への書き込みデータWD3の格納を制御する。結果妥当性指標RV1又はRV2が真である場合には、適切な書き込み可能指標WE1,WE2又はWE3が、対応するマルチプレクサMP1,MP2又はMP3によって真に設定される。書き込み可能指標WE1又はWE2が真に等しい場合には、レジスタファイルRF1又はRF2に対応する書き込みレジスタ指標WR1又はWR2により選択されたレジスタにおけるレジスタファイルRF1又はRF2に結果データRD1又はRD2が書き込まれる。書き込み可能指標WE1又はWE2が偽に設定される場合には、対応する書き込み選択指標WS1又はWS2により、対応するレジスタファイルRF1又はRF2へのデータ書き込み用の入力チャネルが選択されているも、データはそのレジスタファイルには書き込まれない。書き込み可能指標WE3が真に設定される場合には、マルチプレクサMP4が書き込みデータWD3に対応するチャネルを入力として選択し、結果データRD2がレジスタファイルRF3に書き込まれる。書き込み可能指標WE3が偽に設定される場合には、マルチプレクサMP4がプログラムカウンタPCに対応するチャネルを入力として選択し、プログラムカウンタPCの値がレジスタファイルRF3に書き込まれる。レジスタファイルRF1,RF2及びRF3の所定の書き込みポートを経てのいずれかの結果データRD1又はRD2の書き戻しをそれぞれ不能にするために、当該レジスタファイルに対応する書き込み選択指標WS1,WS2又はWS3を用いて、対応するマルチプレクサMP1,MP2又はMP3からデフォルト入力111を選択することができ、この場合に、対応する書き込み可能指標WE1,WE2又はWE3は偽に設定される。
図2を参照するに、コントローラCTRは論理ユニット201及び205に結合される。コントローラCTRは、デコーディングステップ中にプログラムから演算妥当性指標POV1及びPOV2を検索して、これらの演算妥当性指標を論理ユニット201及び205にそれぞれ供給する。コード化演算がNOP演算である場合には、演算妥当性指標は偽に設定され、そうでない場合には、真に設定される。レジスタファイルRF1及びRF2はそれぞれユニット201及び205に結合され、対応するガードGU1及びGU2の値を、レジスタファイルRF1及びRF2からユニット201及び205にそれぞれ書き込むことができる。ガードGU1及びGU2は、そのガードを表すデータの値を決定した演算の結果に応じて、真か、偽のいずれかとなり得る。ユニット201及び205は、対応する演算妥当性指標OP1又はOP2と、対応するGU1又はGU2とで論理AND演算を行う。その結果指標は、レジスタ209,211及び213を用いる対応する実行ユニットEX1及びEX2のパイプラインにより遅延される。演算コードOC1又はOC2により規定された演算が実行ユニットEX1及びEX2によってそれぞれ実行された後には、それに対応する結果データRD1及びRD2並びに対応する出力妥当性指標OV1及びOV2が生成される。出力妥当性指標OV1及びOV2は、対応する結果データRD1又はRD2が妥当な出力データである場合には真であり、そうでなければ偽である。ユニット203は、ガードGU1及び演算妥当性指標OPV1からの遅延した指標と、出力妥当性指標OV1との論理AND演算を行って、結果妥当性指標RV1を得る。ユニット207は、ガードGU2及び演算妥当性指標OPV2からの遅延した指標と、出力妥当性指標OV2との論理AND演算を行って、結果妥当性指標RV2を得る。ユニット203及び207は、部分的に接続されたネットワークCNを介してマルチプレクサMP1及びMP2にそれぞれ結合されて、結果妥当性指標RV1及びRV2をマルチプレクサMP1及びMP2に送出する。ユニット207だけは、部分的に接続されたネットワークCNを介してマルチプレクサMP3にも結合されて、結果妥当性指標RV2をマルチプレクサMP3にも送出する。書き込み選択指標WS1及びWS2は対応するマルチプレクサMP1及びMP2によって用いられて、接続ネットワークCNから、結果データを対応するレジスタファイルに書き込みデータWD1又はWD2としてそれぞれ書き込まなければならないチャネルを選択する。結果データチャネルがマルチプレクサによって選択される場合には、結果妥当性指標RV1及びRV2を用いて書き込み可能指標WE1及びWE2を設定して、結果データRD1及びRD2をレジスタファイルRF1及びRF2にそれぞれ書き込むのを制御する。マルチプレクサMP1又はMP2が結果データRD1に対応する入力チャネルを選択した場合には、結果妥当性指標RV1を用いてそのマルチプレクサに対応する書き込み可能指標を設定し、また、結果データRD2に対応する入力チャネルが選択される場合には、結果妥当性指標RV2を用いて、対応する書き込み可能指標を設定する。マルチプレクサMP3が結果データRD2に対応する入力チャネルを選択した場合には、結果妥当性指標RV2を用いて、書き込み可能指標WE3を設定して、レジスタファイルRF3への書き込みデータWD3の格納を制御する。結果妥当性指標RV1又はRV2が真である場合には,適切な書き込み可能指標WE1,WE2又はWE3が対応するマルチプレクサMP1,MP2又はMP3によって真に設定される。書き込み可能指標WE1又はWE2が真に等しい場合には、結果データRD1又はRD2が、レジスタファイルRF1又はRF2に対応する書き込みレジスタ指標WR1又はWR2を介して選択されたレジスタにおけるレジスタファイルRF1又はRF2に書き込まれる。書き込み可能指標WE1又はWE2が偽に設定される場合には、対応する書き込み選択指標WS1又はWS2を介して、対応するレジスタファイルRF1又はRF2へのデータ書き込み用の入力チャネルが選択されているも、当該レジスタファイルにはデータは書き込まれない。書き込み可能指標WE3が真に設定される場合には、マルチプレクサMP4が書き込みデータWD3に対応するチャネルを入力として選択し、結果データRD2をレジスタファイルRF3に書き込む。書き込み可能指標WE3が偽に設定される場合には、マルチプレクサMP4がプログラムカウンタPCに対応するチャネルを入力として選択し、このプログラムカウンタPCの値をレジスタファイルRF3に書き込まれる。レジスタファイルRF1,RF2又はRF3の所定の書き込みポートを経てのいずれかの結果データRD1又はRD2の書き戻しをそれぞれ不能にするために、当該レジスタファイルに対応する書き込み選択指標WS1,WS2又はWS3を用いて、対応するマルチプレクサMP1,MP2又はMP3からデフォルト入力215を選択することができ、この場合には、対応する書き込み可能指標WE1,WE2又はWE3が偽に設定される。
図1及び図2による時間−静止型VLIWプロセッサは、レジスタファイルRF1,RF2及びRF3への結果データの書き戻しをダイナミックに制御することができる。実行した演算の結果データをレジスタファイルRF1,RF2又はRF3に書き戻さなければならないかどうかは、ランタイム中に決定することができる。結果として、命令の時間−静止式コード化を用いたままで、これらのプロセッサによって演算の条件付き実行を実施することができる。
下記に本発明によるプロセッサによって実行すべきプログラムコードの一部の例を示す。各ラインは、並列に実行し得る命令文で構成し得る単一のVLIW命令、この命令は、例えば命令A0とA1から成るVLIW命令を示す。このプログラムコードにおける文字A0,A1,B0,B1,C0及びC1は命令を示し、Z及びPは変数を示し、Xは偽か真のいずれかとし得る条件を示す。L1はプログラムメモリPMのアドレスを示す。略語braはブランチ命令を示し、これは条件付きのブランチング用に用いられる専用の命令である。

A0,A1;
Z=bra(X,P);
B0,B1;

L1:C0,C1;
プログラムコードは次のようにして本発明によるプロセッサによって実行することができる。図1を参照するに、コントローラCTRはVLIW命令をデコードして、その結果得られた書き込み選択指標WS1,WS2及びWS3を対応するマルチプレクサMP1,MP2及びMP3に送り、書き込みレジスタ指標WR1及びWR2並びに読み取りレジスタ指標RR1及びRR2を対応するレジスタファイルRF1及びRF2に、演算コードOC1及びOC2を対応する実行ユニットEX1及びEX2に、演算妥当性指標OPV1及びOPV2を対応するレジスタ105にそれぞれ送出する。これらの演算妥当性指標OPV1及びOPV2は“真”に相当する。命令は、実行ユニットEX1か、EX2のいずれかによって実行されて、条件Xの値を決定する。この命令は、結果“真”を生成し、この結果はレジスタファイルRF2に格納される。パラメータPの値も同じくレジスタファイルRF2に格納される。パラメータPの値はプログラムカウンタの値に等しく、この値は、条件付きのブランチを行う際に実行させるべき命令をプログラムメモリの何処に格納させるかのアドレス、即ちプログラムメモリのアドレスL1を示す。プログラムのコンパイル中に、コンパイラはこのアドレス値をパラメータPに割り当てるようにする。ブランチ命令braは実行ユニットEX2によって実行される。条件X並びにパラメータPの値は実行ユニットEX2によって入力データIDとして受信される。命令braの実行中に、条件Xの値が実行ユニットEX2によって評価され、この値が真に相当する場合には、出力妥当性指標OV2が真として設定される。条件Xの値が偽に相当する場合には、出力妥当性指標OV2が偽として設定される。この例では、条件Xの値は真に相当し、従って、出力妥当性指標OV2も同じく真として設定される。さらに、実行ユニットEX2はパラメータPの値をパラメータZに割り当て、即ち、この際のパラメータZは、条件付きブランチを行う際に実行させるべき命令をプログラムメモリの何処に格納するかのアドレスを示すプログラムカウンタの値に相当する。ユニット103は、ブランチ命令braに対応する演算妥当性指標OPV2と出力妥当性指標OV2との論理AND演算を行う。演算妥当性指標OPV2は真に等しいから、AND演算により得られる結果妥当性指標RV2も同じく真に相当する。パラメータZの値形式の結果妥当性指標RV2及び結果データRD2は、部分的に接続されたネットワークCNを介してマルチプレクサMP1,MP2及びMP3に転送される。マルチプレクサMP3は、書き込み選択指標WS3を用いることにより、結果データRD2に対応するチャネルを入力チャネルとして選択する。マルチプレクサMP3は、結果妥当性指標RV2を用いて書き込み可能指標WE3を真に設定し、パラメータZの値を書き込みデータWD3としてマルチプレクサMP4に書き込む。マルチプレクサMP4は、書き込み可能指標WE3の値が真に相当するから、WD3に対応するチャネルを入力チャネルとして選択する。次に、パラメータZの値、即ち、プログラムカウンタPCの値がレジスタファイルRF3に書き込まれる。その結果、レジスタファイルRF3に格納されたプログラムカウンタはプログラムメモリのアドレスL1を指示し、そのアドレスに格納されている命令C0及びC1から成るVLIW命令が次のサイクルでプログラムメモリPMから取り出され、その後、デコードされ、且つ実行される。
条件Xが偽に相当する場合には、出力妥当性指標OV2も同じく偽に設定される。ユニット103は、ブランチ命令braに対応する演算妥当性指標OPV2と出力妥当性指標OV2との論理AND演算を行う。演算妥当性指標OPV2は真に相当するけれども、出力妥当性指標OV2は偽に相当するから、ユニット103によるAND演算の結果妥当性指標RV2は偽に相当する。パラメータZの値形式の結果妥当性指標RV2及び結果データRD2は、部分的に接続されたネットワークCNを介してマルチプレクサMP1,MP2及びMP3に転送される。マルチプレクサMP3は、書き込み選択指標WS3を用いて、結果データRD2に対応するチャネルを入力チャネルとして選択する。マルチプレクサMP3は、結果妥当性指標RV2を用いて書き込み可能指標WE3を真に設定し、パラメータZの値を書き込みデータWD3としてマルチプレクサMP4に書き込む。しかし、マルチプレクサMP4は、書き込み可能指標WE3の値が偽に相当するから、プログラムカウンタPCに対応するチャネルを入力チャネルとして選択する。次に、条件付きブランチ命令braのパラメータZに相当するプログラムカウンタPCの値の代わりに、プログラムカウンタPCの増分値がレジスタファイルRF3に書き込まれる。その結果、次のサイクルでは、ステートメントB0及びB1から成るVLIW命令がプログラムメモリPMから取り出され、その後、デコードされ、且つ実行される。
下記に本発明によるプロセッサによって実行すべき他の例のプログラムコードの一部を示す。このプログラムコードにおける文字A0,A1,B0,B1,C0及びC1は命令を示し、Z及びPは変数を示し、Xは偽か真のいずれかとし得る条件を示す。L1はプログラムメモリPMのアドレスを示す。各ラインは、並列に実行することができるステートメントで構成し得る単一のVLIW命令、例えば命令A0とA1とから成るVLIW命令を示す。

A0,A1;
If(X)Z=jmp L1;
B0,B1;

L1:C0,C1;
図2を参照するに、コントローラCTRはVLIW命令をデコードして、その結果の書き込み選択指標WS1,WS2及びWS3を対応するマルチプレクサMP1,MP2及びMP3に送り、書き込みレジスタ指標WR1及びWR2並びに読み取りレジスタ指標RR1及びRR2を対応するレジスタファイルRF1及びRF2に送り、演算コードOC1及びOC2を対応する実行ユニットEX1及びEX2に送り、演算妥当性指標OPV1及びOPV2を対応するユニット201及び205に送る。これらの演算妥当性指標OPV1及びOPV2は“真”に相当する。命令は実行ユニットEX1か、EX2のいずれかによって実行されて、条件Xの値を決定する。この命令が結果“真”を生成し、この結果はレジスタファイルRF2に格納される。ユニット205も条件Xの値を対応するガードGU2として受け取って、このガードGU2と演算妥当性指標POV2との論理AND演算を行う。ユニット205はその結果として、ガードGU1と演算妥当性指標POV2との双方が真に相当するから、“真”を生成する。ステートメントZ=jmp L1が実行ユニットEX2によって実行されている間、即ちプログラムカウンタの値L1がパラメータZに割り当てられている間は、論理AND演算の結果が実行ユニットEX2のレジスタ209,211及び213を経てクロックされる。出力妥当性指標OV2は真に等しい。ユニット207は、出力妥当性指標OV2とユニット205によって行われた論理AND演算の結果との論理AND演算を行うことになる。この論理AND演算の結果は真となり、従って、結果妥当性指標RV2は真に相当する。結果妥当性指標RV2並びに対応する結果データRD2の値、即ちパラメータZの値は、部分的に接続されたネットワークCNを経てマルチプレクサMP1,MP2及びMP3に転送される。マルチプレクサMP3は、書き込み選択指標WS3を用いて結果データRD2に対応する入力チャネルを選択する。その後、書き込み可能指標WE3が、結果妥当性指標RV2を用いて真に設定されて、結果データRD2が書き込みデータWD3としてマルチプレクサMP4に書き込まれる。マルチプレクサMP4は、書き込み可能指標WE3の値が真に相当するから、WD3に対応するチャネルを入力チャネルとして選択する。次に、パラメータZの値、即ちプログラムカウンタPCの値がレジスタファイルRF3に書き込まれる。次のサイクルでは、命令C0及びC1を含むVLIW命令がプログラムメモリPMから取り出され、その後、デコードされて、実行される。
条件Xが偽に等しい場合には、ガードGU2の値も同じく偽に等しく設定される。ユニット205は、ガードGU2と演算妥当性指標OPV2との論理AND演算を行う。ユニット205はこの際結果として“偽”を生成し、これは、ガードGU2が偽に等しいからである。ステートメントZ=jmp L1が実行ユニットEX2によって実行される間、即ちプログラムカウンタの値L1がパラメータZに割り当てられている間は、論理AND演算の結果が実行ユニットEX2のレジスタ209,211及び213を経てクロックされる。出力妥当性指標OV2は真に等しい。ユニット207は、出力妥当性指標OV2とユニット205によって行われた論理AND演算の結果との論理AND演算を行うことになる。この論理AND演算の結果は偽となり、従って、結果妥当性指標RV2は偽に相当する。結果妥当性指標RV2並びに対応する結果データRD2の値、即ちパラメータZの値は、部分的に接続されたネットワークCNを経てマルチプレクサMP1,MP2及びMP3に転送される。マルチプレクサMP3は、書き込み選択指標WS3を用いて結果データRD2に対応する入力チャネルを選択する。書き込み可能指標WE3は、その後結果妥当性指標RV2を用いて偽に設定され、結果データRD2が書き込みデータWD3としてマルチプレクサMP4に書き込まれる。しかし、マルチプレクサMP4は、プログラムカウンタPCに対応するチャネルを入力チャネルとして選択する。これは、書き込み可能指標WE3の値が偽に等しいからである。次に、プログラムカウンタPCの増分値が、パラメータZに等しいプログラムカウンタの値の代わりにレジスタファイルRF3に書き込まれる。次のサイクルでは、命令B0及びB1を含むVLIW命令がプログラムメモリPMから取り出され、その後、デコードされて、実行される。
これらの実施例から明らかなように、本発明によれば条件付きのブランチングを、フラグを必要とすることなく行うことができる。ブランチ条件は前もって計算することができ、この条件は、プログラムカウンタの新規の値をレジスタファイルRF3に書き込む操作を条件付きで実行させるガードとしてか、プログラムカウンタの新規の値をレジスタファイルRF3に書き込むための条件付き操作におけるアーギュメント(引き数)として用いることができる。ブランチ条件が真に相当する場合には、プログラムカウンタPCの新規の値がレジスタファイルRF3に書き込まれる。コントローラCTRは、レジスタファイルRF3に格納されているプログラムカウンタの値を読み取り、この値を用いて命令をプログラムメモリPMから取り出す。コントローラCTRはまたプログラムカウンタの値を増分する。プログラムカウンタPCの増分値はマルチプレクサMP4に送られる。プログラムカウンタの増分値か、又は書き込みデータWD3に対応するプログラムカウンタの値のいずれをレジスタファイルRF3に書き込まなければならいかは、書き込み可能指標WE3の値によって決定される。実行ユニットEX2によってレジスタファイルRF3に系統だった書き込みが成されている限り、プログラムはプログラムメモリにリストされた命令を順次実行することにより単に進められる。プログラムカウンタの新規の値が実行ユニットEX2によってレジスタファイルRF3に書き込まれる場合に、プログラムカウンタのこの書き込み値は、命令実行がこの書き込み値に対応するプログラムメモリにおけるアドレスから続行するようにプログラムの流れを変更する。
他の実施例では、処理システムをデータ−静止型のVLIWプロセッサとする。データ−静止型VLIWプロセッサは、レジスタファイルへの結果データの書き戻しをダイナミックに直接制御することができる。それは、命令セットの一部である各命令が、或る特定のデータアイテムで実行させなければならない操作順序を完全に制御するからである。従って、データ−静止型VLIWプロセッサは種々の演算を条件付きで実行することもできる。結果として、本発明によるこのようなプロセッサは、フラグを必要としなくても、条件付きのブランチング及びルーピングを行うことができる。
実施例によっては、実行ユニットEX2が、レジスタファイルRF3の読み取りポートコネクションを介して、プログラムカウンタPCの値をレジスタファイルRF3から直接読み取ることができる。このようにして、実行ユニットEX2は位置独立コードに対して“プログラムカウンタ関連ブランチング”を実施することができる。例えば、レジスタファイルRF3から読み取ったプログラムカウンタPCの値にオフセット値を加え、これによりプログラムカウンタ関連のジャンプターゲットアドレスを生成することができる。さらに他の実施例では、プログラムカウンタPCの値を読み取るための、レジスタファイルRF3と実行ユニットEX2との間の接続は、プログラムカウンタ関連ブランチングを適用しない場合には、未使用のままとするか、あるいはその接続をなくすことができる。
他の実施例では、コンパイラ又はアセンブルプログラマが、僅か1つのガードされるか、又は条件付きの演算によって任意所定のサイクルにて正しい出力を発生、即ちプログラムカウンタの1つの値だけがレジスタファイルRF3に書き込まれるようにする限り、多数のガードされるか、又は条件付きの演算が、レジスタファイルRF3に格納されているプログラムカウンタの値を更新すべく並列に実行されるようにする。これは、条件がばらばらになるかぎり、保証することができる。結果的に、ブランチターゲットと、ブランチ条件の妥当性検査との並列実行は、例えば所謂ケースステートメントを実行するのに用いることができる。
プロセッサの遂行を十分高いクロック周波数で運転し得るようにするために、プロセッサのコントローラはパイプライン式にすることができる。図1及び図2を参照するに、プログラムメモリPMの出力端には、このプログラムメモリからロードされる命令を格納するための1つの命令レジスタIRがある。結果的に、レジスタファイルRF3へのプログラムカウンタの新規値の書き込みと、その新規値に対応するプログラムメモリのアドレスから検索した命令の実行との間の遅延は少なくとも2サイクルである。この遅延はブランチ遅延と称され、これはプロセッサのパイプライン化の度合いに応じてゼロでない値になる。ブランチ遅延は、このブランチ遅延の一部のサイクル(ブランチシャドウと称される)を他の演算(操作)を実行するのに用いることができない限り、実行時間のオーバヘッドになり得る。これら他の演算は、この場合には、プログラムによって表される本来のアルゴリズムにて、プログラムの流れが変更される前に行うべき演算である。他の実施例では、プロセッサが遅延ブランチングとして既知の構想を遂行し、非ブランチ演算をまだブランチシャドウにて実行できるようにする。結果的に、プログラムのブランチ演算は、ブランチが実際に行われる箇所に先んじてブランチ待ち時間をスケジュールする。このこのプログラム構成を下記に示す。各ラインは単一のVLIW命令を示し、z,x,y,u,d及びeは変数、pcはプログラムカウンタの値を表す変数、Aはプログラムメモリのアドレス、addは2つの値を加算する演算、mulは2つの値を乗じる演算、jmpはブランチ演算をそれぞれ示す。

pc=jmp A; /*待ち時間2でのブランチ演算*/
z=add x y; /*加算演算がまだ実行されるブランチシャドウ*/
/*Aへのジャンプ行われる点*/
u= mul d e /*このステートメントは、ブランチが行われたためにスキップされる*/

A: … /*ブランチターゲット*/
遅延ブランチングは実際には、従来の殆どのデジタル信号プロセッサで通例のループスタック等のような追加の他のハードウェアなしでゼロオーバヘッドのブランチングを行うことができる。
他の実施例では、ブランチシャドウにおけるブランチ演算のスケジューリングを可能にする。本発明はこのような構想も同じくサポートし、これには、ゼロ−オーバヘッドのブランチング構想をさらに拡張して、ブランチ待ち時間よりも短い多数の命令又はサイクルから成るループ本体を作成可能にすることを含めることができる。これは、例えば下記のプログラム構成によって得られ、そのプログラム構成では、ブランチ待ち時間を2サイクルとし、且つ各ラインは単一のVLIW命令を、z,x,y,u,d及びeは変数を、iはループカウンタを、pcはプログラムカウンタの値を表す変数を、Aはプログラムメモリのアドレスを、addは2つの値を加算する演算を、decは或る値を減分する演算を、mulは2つの値を乗じる演算を、brnzは条件付きブランチを非ゼロで実施する演算をそれぞれ示す。

z=add x y, i=dec i, pc=brnz i A;
A : u= mul d e, i=dec i, pc= brnz i A
上述した例では、ループは、幾つかの他の演算に対して並列にループカウンタiが減少されるプリアンブルによって先行され、非ゼロ、即ちループカウンタiがゼロでない条件付きブランチを取ってアドレスAでループを開始する。アドレスAにおける次の命令はループ本体の開始であり、ここではループカウンタiをさらに減少させ、且つ条件付きブランチをアドレスAに向けるためにゼロに対してチェックする。このような構成による結果、プリアンブルからのサイクルの開始毎に、レジスタファイルRF3に書き込まれるプログラムカウンタpcの値がアドレスAに等しくなり、このアドレスに固定されたプログラムカウンタpcを、ループカウンタiがゼロに達するまで有効に維持する。結果として、この例におけるブランチ待ち時間が1よりも大きくなるも、単一の命令ループが生成される。上述した構成に似た他の構成のものは、ブランチ待ち時間を2に等しいか、又はそれ以上で機能させ、しかもその待ち時間よりも短い多数の命令をループ本体に包含させる。
他の実施例では、通信ネットワークCNを部分接続の通信ネットワークとすることができる。即ち、各実行ユニットEX1及びEX2が必ずしも全てのレジスタファイルRF1及びRF2に結合されるようにすることはない。実行ユニットが多数ある場合、完全に接続される通信ネットワークのオーバヘッドは、シリコン領域、遅延及び電力消費によってかなりのものとなる。VLIWプロセッサの設計中には、実行させなければならないアプリケーションの範囲に応じて、実行ユニットをどの程度レジスタファイルに結合させるのかを決定する。
別の例では、より多くの実行ユニットがプログラムカウンタの新規の値をレジスタファイルRF3に書き込めるようにする。より多くの実行ユニットがレジスタファイルRF3にプログラムカウンタの値を書き込むための演算を条件付きで実行可能にすることにより、これら演算のスケジューリングによって有効プログラムが潜在的に多くなる。これは、多数のガードされるか、又は条件付きの演算を並列に実行し得るからである。
他の実施例では、レジスタファイルRF1及びRF2を具えている分散レジスタファイルを単一のレジスタファイルとする。VLIWプロセッサの実行ユニットの個数が比較的少ない場合には、単一レジスタファイルのオーバヘッドも同じく比較的短くなる。
他の例では、VLIWプロセッサにおける実行ユニットの個数を変えることができる。実行ユニットの個数はVLIWプロセッサがとりわけ実行しなければならないアプリケーションのタイプに依存する。プロセッサは前記実行ユニットに接続される多くのレジスタファイルを持つこともできる。
さらに他の例では、実行ユニットEX1及びEX2が行わなければならない演算、即ち、2つ以上のオペランドを必要とし、及び/又は1つよりも多い結果を生成する演算のタイプに応じて、これらの実行ユニットEX1及びEX2は多数の入力端及び/又は多数の出力端を持つことができる。分散レジスタファイルにもレジスタファイル毎に多数の読み取り及び/又は書き込みポートを持たせることができる。
スーパースカラプロセッサも、VLIWプロセッサの場合のように、多数の演算を並列に実行し得る多数の送出スロットを具えている。しかし、そのプロセッサのハードウェア自体は、実行時間にどんな演算従属性が存在するのかを決めて、これらの従属性に基づいてどの演算を並列に実行させるのかを、リソースコンフリクトが生じないようにしながら決定する。この節にて述べたVLIWプロセッサに対する実施例の原理はスーパースカラプロセッサについても云えることである。一般に、VLIWプロセッサにはスーパースカラプロセッサに比べて多くの送出スロットを持たせることができる。VLIWプロセッサのハードウェア構成は、スーパースカラプロセッサに比べてそれほど複雑でないため、優れた拡大縮小可能構造となる。送出スロットの数及び特に各送出スロット複雑性が、本発明を用いて達成し得る特典の量を決めることになる。
なお、本発明は上述した例のみに限定されるものでなく、当業者が特許請求の範囲の記載を逸脱することなく幾多の変更を加え得ることは明らかである。特許請求の範囲における括弧内の参照記号は請求の範囲を限定するものとして解釈されるべきではない。「具える」と云う用語は請求の範囲に掲げたもの以外の要素又はステップの存在を除外するものではない。或る要素の単数表現は、そのような要素の複数の存在を除外するものではない。装置の請求項に列記している幾つかの手段は、ハードウェアの同一のアイテムで実現することができる。互いに異なる従属請求項にて所定の手段のみを引用していることは、こうした手段の組み合わせが有利に使用できないと云うことを示しているのではない。
本発明による第1のVLIWプロセッサの概略図である。 本発明による第2のVLIWプロセッサの概略図である。

Claims (10)

  1. 超大型命令語(Very Large Instruction Word:VLIW)プロセッサによって、一式の命令から成るVLIW命令を実行する方法であって、
    前記VLIWプロセッサは、
    複数の実行ユニット(EX1,EX2)と;
    前記実行ユニットによりアクセス可能で、データを格納するための第1のレジスタファイル(RF1,RF2)と;
    前記VLIW命令を格納するためのプログラムメモリ(PM)であって、出力を有する、プログラムメモリと;
    前記プログラムメモリ(PM)の前記出力において、前記プログラムメモリ(PM)からロードされた命令(IN)を格納するための命令レジスタ(IR)と;
    プログラムカウンタの値を格納するための第2のレジスタファイル(RF3)であって、前記複数の実行ユニットと前記第1のレジスタファイルとを結合する通信デバイスによって、前記複数の実行ユニットによりアクセス可能な第2のレジスタファイル(RF3)と;
    を具え、
    前記VLIW命令の実行は、ブランチ演算を伴う場合、前記複数の実行ユニットのうちの1つの実行ユニットの結果データを、前記VLIW命令から動的に得られる制御情報に基づいて、前記第2のレジスタファイルへ条件付きで転送し、該第2のレジスタファイルへ転送された前記結果データをプログラムカウンタの値により示される前記プログラムメモリにおけるアドレスとして用いて前記プログラムメモリから命令を取り出すものであって、前記条件付き転送は、n(n≧1)個のVLIW命令分の遅延を伴うものであり、
    当該方法が;
    第1のブランチ演算を伴う第1のVLIW命令を実行するステップであって、該第1のブランチ演算は、当該命令の直後から開始されるループ処理の先頭のVLIW命令への分岐を指示するものである、ステップと;
    前記ループ処理は、n個のVLIW命令の繰り返しで形成されるものであり、該ループ処理を開始するステップと;
    前記ループ処理の末尾のVLIW命令である第2のVLIW命令を実行するステップであって、該第2のVLIW命令は、該ループ処理の先頭のVLIW命令への分岐を指示する第2のブランチ演算を伴うものである、ステップと;
    を具えている方法。
  2. 前記プロセッサがさらにコントローラ(CTR)も具え;
    前記第2のレジスタファイルは前記コントローラによりアクセス可能であり;
    前記コントローラは、前記第2のレジスタファイルに格納されたプログラムカウンタの値を用いて、前記プログラムメモリから命令を取り込むべく構成配置されるようにしたことを特徴とする請求項1記載の方法。
  3. 前記コントローラはさらに、プログラムカウンタの値を増分させ、且つプログラムカウンタの増分値を第2のレジスタファイルに書き込むべく構成配置されるようにしたことを特徴とする請求項2記載の方法。
  4. 前記プロセッサはさらに、ブランチ条件が真として評価されるのか、または、偽として評価されるのかに応じて、コントローラによって増分されたプログラムカウンタの値を第2のレジスタに書き込むか、若しくは、実行ユニットによって生成されたプログラムカウンタの値を第2のレジスタファイルに書き込むべく構成配置されるようにしたことを特徴とする請求項3記載の方法。
  5. 前記複数の実行ユニットのうちの少なくとも1つ(EX2)はさらに、ブランチ条件が真であるか偽であるかを評価し、その後、該評価の結果をガード(GU2)として用いて、プログラムカウンタの値を第2のレジスタファイルに書き込むための第1の専用命令を条件付きで実行すべく構成配置されるようにしたことを特徴とする請求項1記載の方法。
  6. 前記少なくとも1つの実行ユニット(EX2)はさらに、第2の専用命令を実行すべく構成配置され;
    第2の専用命令は少なくとも第1アーギュメントと第2アーギュメントを有し、第2アーギュメントはプログラムカウンタの値とし;
    第2の専用命令は、第1アーギュメントの値に応じて、プログラムカウンタの値を第2のレジスタファイルに書き込むべく編成されるようにしたことを特徴とする請求項5記載の方法。
  7. 前記プロセッサはさらに、前記第1及び第2の専用命令の複数個を並列に実行すべく構成配置され、且つコンパイルのステップ中に、前記複数個の専用命令のうちの、1つの命令だけが条件付きで実行されるようにしたことを特徴とする請求項6記載の方法。
  8. 前記第1のレジスタファイルは分散レジスタファイル(RF1,RF2)である、ことを特徴とする請求項1記載の方法。
  9. 通信デバイスは、部分接続される通信ネットワークである、ことを特徴とする請求項1記載の方法。
  10. 超大型命令語(Very Large Instruction Word:VLIW)プロセッサが実行することになるプログラムを生成するコンパイラであって、
    該VLIWプロセッサは、
    一式の命令から成るVLIW命令を実行するものであり、
    複数の実行ユニット(EX1,EX2)と;
    前記実行ユニットによりアクセス可能で、データを格納するための第1のレジスタファイル(RF1,RF2)と;
    前記VLIW命令を格納するためのプログラムメモリ(PM)であって、出力を有する、プログラムメモリと;
    前記プログラムメモリ(PM)の前記出力において、前記プログラムメモリ(PM)からロードされた命令(IN)を格納するための命令レジスタ(IR)と;
    プログラムカウンタの値を格納するための第2のレジスタファイル(RF3)であって、前記複数の実行ユニットと前記第1のレジスタファイルとを結合する通信デバイスによって、前記複数の実行ユニットによりアクセス可能な第2のレジスタファイル(RF3)と;
    を具え、
    前記VLIW命令の実行は、ブランチ演算を伴う場合、前記複数の実行ユニットのうちの1つの実行ユニットの結果データを、前記VLIW命令から動的に得られる制御情報に基づいて、前記第2のレジスタファイルへ条件付きで転送し、該第2のレジスタファイルへ転送された前記結果データをプログラムカウンタの値として用いて前記プログラムメモリから命令を取り出すものであって、前記条件付き転送は、n(n≧1)個のVLIW命令分の遅延を伴うものであり、
    前記プログラムは:
    第1のブランチ演算を伴う第1のVLIW命令を実行するステップであって、該第1のブランチ演算は、当該命令の直後から開始されるループ処理の先頭のVLIW命令への分岐を指示するものである、ステップと;
    前記ループ処理は、n個のVLIW命令の繰り返しで形成されるものであり、該ループ処理を開始するステップと;
    前記ループ処理の末尾のVLIW命令である第2のVLIW命令を実行するステップであって、該第2のVLIW命令は、該ループ処理の先頭のVLIW命令への分岐を指示する第2のブランチ演算を伴うものである、ステップと;
    を具えるものであり、
    当該コンパイラがコンピュータシステム上で実行されたときに、前記プログラムを生成することを特徴とするコンパイラ。
JP2006506909A 2003-04-29 2004-04-27 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング Expired - Fee Related JP5068529B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP03101175 2003-04-29
EP03101175.2 2003-04-29
PCT/IB2004/050527 WO2004097625A2 (en) 2003-04-29 2004-04-27 Zero overhead branching and looping in time-stationary processors

Publications (2)

Publication Number Publication Date
JP2006525583A JP2006525583A (ja) 2006-11-09
JP5068529B2 true JP5068529B2 (ja) 2012-11-07

Family

ID=33395949

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006506909A Expired - Fee Related JP5068529B2 (ja) 2003-04-29 2004-04-27 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング

Country Status (6)

Country Link
US (1) US7302555B2 (ja)
EP (1) EP1620791A2 (ja)
JP (1) JP5068529B2 (ja)
KR (1) KR101099828B1 (ja)
CN (1) CN1826583A (ja)
WO (1) WO2004097625A2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991984B2 (en) * 2005-02-17 2011-08-02 Samsung Electronics Co., Ltd. System and method for executing loops in a processor
KR100810138B1 (ko) * 2007-05-21 2008-03-07 세종공업 주식회사 진공펌프용 소음기
JP2011090592A (ja) * 2009-10-26 2011-05-06 Sony Corp 情報処理装置とその命令デコーダ
US11132233B2 (en) * 2018-05-07 2021-09-28 Micron Technology, Inc. Thread priority management in a multi-threaded, self-scheduling processor
US10846098B2 (en) * 2018-05-29 2020-11-24 Arm Limited Execution pipeline adaptation

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6014338A (ja) * 1983-06-30 1985-01-24 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 計算機システムにおける分岐機構
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6055628A (en) * 1997-01-24 2000-04-25 Texas Instruments Incorporated Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
JP3487421B2 (ja) * 2000-02-16 2004-01-19 日本電気株式会社 Simd型並列計算装置
US7080234B2 (en) * 2000-03-08 2006-07-18 Sun Microsystems, Inc. VLIW computer processing architecture having the problem counter stored in a register file register
WO2001067234A2 (en) * 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files

Also Published As

Publication number Publication date
US20070055851A1 (en) 2007-03-08
WO2004097625A3 (en) 2006-03-16
CN1826583A (zh) 2006-08-30
US7302555B2 (en) 2007-11-27
JP2006525583A (ja) 2006-11-09
EP1620791A2 (en) 2006-02-01
WO2004097625A2 (en) 2004-11-11
KR20060009872A (ko) 2006-02-01
KR101099828B1 (ko) 2011-12-27

Similar Documents

Publication Publication Date Title
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
KR0178078B1 (ko) 2개의 명령이 동시 실행 가능한 데이타 프로세서
AU776972B2 (en) Program product and data processing system
US20010021970A1 (en) Data processor
JP2008530642A (ja) 低レイテンシーの大量並列データ処理装置
US7313671B2 (en) Processing apparatus, processing method and compiler
JP2004511043A (ja) リターゲッタブルコンパイルシステム及び方法
US20030200426A1 (en) System for expanded instruction encoding and method thereof
JP5068529B2 (ja) 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
JP5122277B2 (ja) データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム
KR101154077B1 (ko) 시간 고정형 프로세서 및 그의 제어 방법
KR101147190B1 (ko) 다중-명령어 워드 프로세서에서 피드백 접속의 런타임 선택
JP2001243070A (ja) プロセッサ及び分岐予測方法並びにコンパイル方法
Song Demystifying epic and ia-64
WO2005036384A2 (en) Instruction encoding for vliw processors
JP2006524859A (ja) 並列処理システム
JP2001236227A (ja) プロセッサ、コンパイラ、コイパイル方法及び記録媒体
US20100153688A1 (en) Apparatus and method for data process
JP2005149297A (ja) プロセッサおよびそのアセンブラ
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070424

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20070424

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20071024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100212

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100511

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100518

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100528

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100604

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100705

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110408

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20110419

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120620

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120627

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120720

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120815

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150824

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5068529

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees