(57)【特許請求の範囲】
【請求項１】
プログラムの実行のために構成されるタイムステーショナリプロセッサであって、
−  複数の実行ユニットと、
−  前記実行ユニットによってアクセス可能なレジスタファイルと、
−  前記実行ユニット及び前記レジスタファイルを結合させるための通信ネットワークと、
−  前記プログラムからもたらされる制御情報に基づいて前記プロセッサを制御するように構成されるコントローラと
を備えるタイムステーショナリプロセッサにおいて、
前記複数の実行ユニットが、直前までの命令実行により決定した命令実行条件を受信し、当該命令の実行時において前記命令実行条件を評価して、第二の識別子として、結果データとともに出力するように構成されており、
更に、当該命令から復号時に検索された命令の有効性に関する第一の識別子を前記対応する実行ユニットのパイプラインにより遅延させ、該遅延させた第一の識別子が偽又は前記第二の識別子が偽のいずれかの場合は、前記結果データを前記レジスタファイルに書き込まないように前記プログラム実行時に制御するように構成されていることを特徴とするタイムステーショナリプロセッサ。
【請求項２】
前記第一の識別子、前記第二の識別子、及び前記レジスタファイルに書き込まれた入力データに基づいて、前記レジスタファイルへの前記命令に対応する結果データの書き込みを実行時に制御するように更に構成される請求項１に記載のプロセッサ。
【請求項３】
前記レジスタファイルが分散型レジスタファイルである請求項１に記載のプロセッサ。
【請求項４】
プログラムの実行のために構成されるタイムステーショナリプロセッサを制御するための方法であって、前記プロセッサは、
−  複数の実行ユニットと、
−  前記実行ユニットによってアクセス可能なレジスタファイルと、
−  前記実行ユニット及び前記レジスタファイルを結合させるための通信ネットワークと、
−  前記プログラムからもたらされる制御情報に基づいて前記プロセッサを制御するように構成されるコントローラと
を備える方法において、
前記複数の実行ユニットで、直前までの命令実行により決定した命令実行条件を受信し、当該命令の実行時において前記命令実行条件を評価して、第二の識別子として、結果データとともに出力するステップと、
当該命令から復号時に検索された命令の有効性に関する第一の識別子を前記対応する実行ユニットのパイプラインにより遅延させ、該遅延させた第一の識別子が偽又は前記第二の識別子が偽のいずれかの場合は、前記結果データを前記レジスタファイルに書き込まないように前記プログラム実行時に制御するステップと、
を備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行のために構成されるタイムステーショナリプロセッサ（時間固定（定常）プロセッサ（time-stationary processor））であって、複数の実行ユニットと、前記実行ユニットによってアクセス可能なレジスタファイルと、前記実行ユニット及び前記レジスタファイルを結合させるための通信ネットワークと、前記プログラムからもたらされる制御情報に基づいて前記プロセッサを制御するように構成されるコントローラとを有するタイムステーショナリプロセッサに関する。
【０００２】
本発明は更に、プログラムの実行のために構成されるタイムステーショナリプロセッサを制御するための方法であって、前記プロセッサは、複数の実行ユニットと、前記実行ユニットによってアクセス可能なレジスタファイルと、前記実行ユニット及び前記レジスタファイルを結合させるための通信ネットワークと、前記プログラムからもたらされる制御情報に基づいて前記プロセッサを制御するように構成されるコントローラとを有する方法に関する。
【背景技術】
【０００３】
ディジタル信号処理は、電気通信、マルチメディア、及び民生電子業界において重要な役割を果たしている。ディジタル信号処理に含まれる命令を実行するために、ディジタル信号プロセッサと称される特別な種類のプロセッサが設計されてもよい。ディジタル信号プロセッサは、プログラマブル（プログラム可能な）プロセッサ（programmable processor）又は特定用途向け命令セットプロセッサ（application-specific instruction-set processor）になり得る。プログラマブルプロセッサは汎用プロセッサであり、音声（sound）、画像（image）、及びビデオを含む異なる種類の情報を処理するために使用され得る。特定用途向け命令セットプロセッサの場合、プロセッサアーキテクチャ及び命令セットはカスタマイズ（個別調整）される。これにより、システム費用及び消費電力がかなり低減される。後者（消費電力）は、ポータブル且つネットワーク動力型装置（portable and network powered equipment）にとっては重要となる。
【０００４】
ディジタル信号プロセッサアーキテクチャは、制御語（ワード）（control word）のセットによって制御される固定データパス（経路）から構成される。各々の制御語はデータパスの部分を制御し、これらの部分が、算術論理ユニット（ALU(arithmetic logic unit)）又は他の関数ユニット（functional unit）のためのレジスタアドレス及び命令（オペレーション）コード（符号）（operation code）を有していてもよい。命令の各々のセットは通常、命令のバイナリフォーマット（２進形式（binary format））を、対応する制御語に変換する命令デコーダ（instruction decoder）によって、又は超小型記憶装置（マイクロストア（micro store））、すなわち制御語を直接含むメモリによって制御語の新たなセットを生成する。通常、制御語は、一つの命令コード、二つのオペラントレジスタ（operand register）インデックス、及び結果レジスタインデックス（result register index）を有するRISCに似た命令を表す。オペラントレジスタインデックス及び結果レジスタインデックスは、レジスタファイルにおいてレジスタを参照する。  
【０００５】
超長命令語（VLIW（Very Large Instruction Word））プロセッサはしばしばディジタル信号処理のために使用される。VLIWプロセッサの場合、複数の命令が一つの長命令、いわゆるVLIW命令にひとまとめにされる。VLIWプロセッサは、これらの複数の命令を並列に実行するために複数の独立命令ユニットを使用する。本プロセッサにより、プログラムにおいて命令レベルの並列処理を利用することが可能になり、従って一つよりも多くの命令を一度に実行することが可能になる。この並行（コンカレント）処理（concurrent processing）の形態のために、プロセッサの動作性能は向上させられる。ソフトウエアプログラムがVLIWプロセッサ上で実行させられるようにするために、当該プログラムはVLIW命令のセットに変換されなければならない。コンパイラは、並列処理を最適化することによってプログラムを実行するのに必要とされる時間を最小限化しようとする。コンパイラは、単一のVLIW命令に割り当てられる命令が並列に実行され得るという制約下で、且つデータ依存性の制約下で命令をVLIW命令に結合させる。VLIW命令における並列命令の符号化は、コード（符号）サイズ（code size）の激増をもたらす。大きなコードサイズは、必要とされるメモリサイズに関する点と、必要とされるメモリバンド（帯域）幅（bandwidth）に関する点との両方からプログラムメモリコストにおける増大をもたらす。最新のVLIWプロセッサにおいて、コードサイズを低減するために異なる手段がとられる。一つの重要な例は、データステーショナリ（データ固定（data-stationary））VLIWプロセッサにおける無命令の小規模（コンパクト）な表示命令（compact representation of no operation (NOP) operations）にある。すなわちNOP命令は、VLIW命令の先頭部に付けられる（添付される）特別のヘッダにおける単一のビットによって符号化され、結果として圧縮されたVLIW命令がもたらされる。
【０００６】
G. Goossens, J. van Praet, D. Lanneer, W. Geurts, A. Kifli, C. Liem, 及び P. Paulin氏他による“リアルタイム信号処理システムにおけるエンベデッドソフトウエア：設計技術（Embedded software in real-time signal processing systems: design technologies）”（IEEE会報、第85巻、no.3、1997年3月（Proceedings of the IEEE, vol. 85, no. 3, March 1997））に開示されているように、プロセッサのデータパイプラインにおける命令を制御するために、二つの異なる機構（メカニズム）がコンピュータアーキテクチャ、すなわちデータステーショナリ及びタイムステーショナリ符号化において通常使用されている。データステーショナリ符号化の場合、プロセッサの命令セットの部分になる全ての命令は、特定のデータ項目（アイテム（item））上で、当該データ項目がデータパイプラインをトラバース（traverse）する（横切る）ときに実行されなければならない命令の完全なシーケンスを制御する。一旦命令がプログラムメモリからフェッチされ、復号化（デコード）されると、プロセッサコントローラハードウエアは、構成（コンポージング）命令（composing operation）が正しいマシンサイクルで実行されていることを確認するであろう。タイムステーショナリ符号化の場合、プロセッサの命令セットの部分になる全ての命令は、単一のマシンサイクルで実行されなければならない命令の完全なセットを制御する。これらの命令は、データパイプラインをトラバースするいくつかの異なるデータ項目にもたらされてもよい。この場合、データパイプラインをセットアップすると共に保持することはプログラマ又はコンパイラの責務になる。結果としてもたらされるパイプラインスケジュールはマシンコードプログラムで完全に明らかになっている。タイムステーショナリ符号化は、より大きなコードサイズの犠牲として、命令においてもたらされる制御情報を遅延させるために必要とされるハードウエアのオーバヘッドを節減するため、特定用途向けプロセッサにおいてしばしば使用される。
【０００７】
タイムステーショナリプロセッサの不利点は、条件命令、すなわち実行時間（ランタイム（run-time））において計算される条件に基づいて結果を返す命令がサポートされ得ないことにある。タイムステーショナリ符号化は、レジスタファイルへの結果のライトバック（書き換え（write back））を含む全ての制御情報が、コンパイル時に静的（スタティック）に決定され、プログラムに符号化されることを要求する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、タイムステーショナリ符号化の利点が保持される一方、ジャンプ命令（jump operation）の使用なしでタイムステーショナリプロセッサにおける命令の条件的な実行の使用を可能にすることにある。
【課題を解決するための手段】
【０００９】
本目的は、制御情報に基づいて複数の実行ユニットの実行ユニットからレジスタファイルへの結果データの転送（伝送（transfer））を動的（ダイナミック）に制御するように更に構成されることを特徴とする本願に記載の種類のプロセッサで達成される。レジスタファイルへの結果データのライトバックを動的に制御することによって、実行時間の間、命令の結果データはレジスタファイルにライトバックされなければならないかが決定され得る。結果として、命令の条件実行が、ジャンプ命令の使用なしでタイムステーショナリプロセッサ上で実現され得る。
【００１０】
本発明の実施例は、制御情報が命令の有効性（validity）に関する第一の識別子を有し、プロセッサが、第一の識別子に基づいてレジスタファイルへの命令に対応する結果データの書き込みを動的に制御するように構成されることを特徴とする。無効命令（invalid
operation）、すなわちいわゆるNOP命令の場合、結果データがレジスタファイルにライトバックされる必要はない。識別子を使用することによって、無効化命令の場合、結果データのライトバックは直接ディスエーブル（無効化（disable））される。
【００１１】
本発明の実施例は、第一の識別子が、命令を実行するために構成される対応する実行ユニットのパイプラインにより遅延させられることを特徴とする。実行ユニットのパイプラインによって識別子を遅延させることによって、結果データのライトバックを決定するために必要とされる情報は、結果データ自体と同時に実行ユニットの出力部において利用可能になる。
【００１２】
本発明の実施例は、実行ユニットが、実行ユニットの対応する出力ポートの出力結果の有効性に関する第二の識別子を生成するように構成され、プロセッサが、第一の識別子と第二の識別子との両方に基づいて、レジスタファイルへの命令に対応する結果データの書き込みを動的に制御するように更に構成されることを特徴とする。その結果、一つよりも多くの有効出力を潜在的に（potentially）に生成する実行ユニットによって実行されるべき命令が可能になる。
【００１３】
本発明の実施例は、プロセッサが第一の識別子、第二の識別子、及び入力データに基づいてレジスタファイルへの命令に対応する結果データの書き込みを動的に制御するように更に構成されることを特徴とする。入力データは、ガード（保護）命令（guarded operation）を効率的に実現するために、別個の実行ユニットにおいて決定され、その後他の関数ユニット（functional unit）において使用される真又は偽の条件（a true or a false condition）を表す。
【００１４】
本発明の実施例は、レジスタファイルが分散型レジスタファイル（distributed register file）であることを特徴とする。分散型レジスタファイルの利点は、それがレジスタファイルセグメント毎に少ない読み出し及び書き込みポートしか必要としないことにあり、それによって、シリコン領域についてより小さなレジスタファイルがもたらされることにある。更に、分散型レジスタファイルにおけるレジスタのアドレッシングは、中央レジスタファイル（central register file）と比較されると、少ないビットしか必要としない。
【００１５】
本発明の実施例は、通信ネットワークが、部分的に接続された通信ネットワークであることを特徴とする。完全に接続された通信ネットワークと比較される場合、特に多数の実行ユニットの場合、部分的に接続された通信ネットワークは、多くの場合、あまりタイミングクリティカル（timing critical）にならず、コードサイズ、面積、及び消費電力に関してあまり高価にならない。
【００１６】
本発明によれば、プロセッサを制御するための方法は、当該制御するための方法が、制御情報を使用して、複数の実行ユニットのうちの一つの実行ユニットからレジスタファイルへの結果データの転送を動的に制御するステップを有することを特徴とする。実行ユニットへの結果データの転送を動的に制御することによって、実行時間において、結果データはレジスタファイルにライトバックされなければならないかが決定されることは可能であり、タイムステーショナリ符号化によるガード命令を実行することが可能になる。
【発明を実施するための最良の形態】
【００１７】
図１及び図２を参照すると、概略ブロック図は、複数の実行ユニットEX1及びEX2とレジスタファイルセグメントRF1及びRF2を含む分散型レジスタファイルとを有するVLIWプロセッサを示す。レジスタファイルから入力データIDを検索（抽出）するためにレジスタファイルセグメントRF1及びRF2は実行ユニットEX1及びEX2によってそれぞれアクセス可能である。前記実行ユニットから分散型レジスタファイルに結果データRD1及びRD2を渡すために実行ユニットEX1及びEX2は通信ネットワークCNとマルチプレクサ（multiplexer）MP1及びMP2とを介してレジスタファイルセグメントRF1及びRF2にも結合される。コントローラCTRはプログラムメモリPMから命令を検索し、当該命令を復号化する。通常、当該命令は、二つよりも多いオペラントを消費することが可能であり、及び／又は一つよりも多くの結果を生成することが可能であるカスタム命令だけでなく、二つのオペラントしか必要としないと共に一つの結果しか生成しないRISC同様の命令を有する。いくつかの命令は、オペラントデータとして小さな中間値又は大きな中間値を必要としてもよい。復号化ステップの結果は、書き込み選択インデックスWS1及びWS2と、書き込みレジスタインデックスWR1及びWR2と、読み出しレジスタインデックスRR1及びRR2と、命令有効インデックスOPV1及びOPV2と、命令コード（opcode）OC1及びOC2とになる。コントローラCTRとマルチプレクサMP1及びMP2との間の結合部を介して、書き込み選択インデックスWS1及びWS2がマルチプレクサMP1及びMP2にそれぞれ設けられる。レジスタファイルセグメントRF1及びRF2にそれぞれ書き込まれなければならないデータWD1及びWD2のための通信ネットワークCNから、必要とされる入力チャネルを選択するために、書き込み選択インデックスWS1及びWS2は、対応するマルチプレクサによって使用される。対応するレジスタファイルセグメントRF1及びRF2への、データWD1及びWD2の実際の書き込みをイネーブル（有効化（enable））又はディスエーブル（無効化（disable））するために使用される書き込みイネーブルインデックスWE1及びWE2のために通信ネットワークCNから入力チャネルを選択するために、書き込み選択インデックスWS1及びWS2は、対応するマルチプレクサによっても使用される。データが書き込まれている、対応するレジスタファイルセグメントからレジスタを選択するために、コントローラCTRは、書き込みレジスタインデックスWR1及びWR2をそれぞれもたらすためにレジスタファイルセグメントRF1及びRF2に結合される。入力データIDが実行ユニットEX1及びEX2によってそれぞれ読み出されなければならない、対応するレジスタファイルセグメントからレジスタを選択するために、コントローラCTRは、読み出しレジスタインデックスRR1及びRR2もレジスタファイルセグメントRF1及びRF2にそれぞれもたらす。実行ユニットEX1及びEX2が、対応する入力データID 上で実行しなければならない命令の種類を規定する命令コードOC1及びOC2をそれぞれもたらすために、コントローラCTRは実行ユニットEX1及びEX2にもそれぞれ結合される。命令有効インデックスOPV1及びOPV2は、実行ユニットEX1及びEX2にもそれぞれもたらされ、当該インデックスは、対応する命令コードOC1又はOC2によって有効な命令が規定されるかを示す。命令有効インデックスOPV1及びOPV2の値は、VLIW命令の復号化の間に決定される。従来のタイムステーショナリプロセッサにおいて、実行ユニットからレジスタファイルへのデータの書き込みをイネーブル又はディスエーブルするために使用される書き込みイネーブルインデックスは、当該インデックスがコンパイル時にプログラムに符号化されるため、静的に決定される。コントローラは、復号化後にプログラムから書き込みイネーブルインデックスを取得すると共に、書き込みイネーブルインデックスをレジスタファイルに直接もたらす。
【００１８】
図１を参照すると、コントローラCTRはレジスタ１０５に結合されている。コントローラCTRは、復号化ステップの間にプログラムから命令有効インデックスOPV1及びOPV2を取り出し、当該命令有効インデックスは、レジスタ１０５にもたらされる。符号化された命令がＮＯＰ命令になる場合、命令有効インデックスは偽にセットされるか、さもなければ、命令有効インデックスは真にセットされる。レジスタ105、107、及び109を使用して対応する実行ユニットEX1及びEX2のパイプラインにより、命令有効インデックスOPV1及びOPV2は遅延させられる。実行ユニットEX1及びEX2による命令の実行後、命令コードOC1及びOC2を介してそれぞれ規定されるように、対応する出力有効インデックスOV1及びOV2ばかりでなく、対応する結果データRD1及びRD2も生成される。対応する結果データRD1又はRD2が有効である場合、出力有効インデックスOV1又はOV2は真になり、さもなければ偽になる。ユニット１０１は、遅延命令有効インデックスOPV1及び出力有効インデックスOV1について論理積（AND）を実行し、その結果、結果有効インデックスRV1がもたらされる。遅延命令有効インデックスOPV２及び出力有効インデックスOV2についてユニット１０３は論理積を実行し、その結果、結果有効インデックスRV2がもたらされる。マルチプレクサMP1及びMP2に結果有効インデックスRV1及びRV2を渡すため、部分的に接続されたネットワークＣＮを介してユニット１０１と１０３とは両方ともマルチプレクサMP1及びMP2に結合される。対応するレジスタファイルセグメントに結果データが書き込まれなければならない接続ネットワークＣＮからチャネルを選択するために、書き込み選択インデックスWS1及びWS2は、対応するマルチプレクサMP1及びMP2によって使用される。結果データチャネルがマルチプレクサによって選択される場合、レジスタファイルセグメントRF1及びRF2への結果データRD1及びRD2の書き込みの制御のためにそれぞれ、結果有効インデックスRV1及びRV2は、書き込みイネーブルインデックスWE1及びWE2をセットするために使用される。マルチプレクサMP1又はMP2が、結果データRD1に対応する入力チャネルを選択している場合、結果有効インデックスRV1は、当該マルチプレクサに対応する書き込みイネーブルインデックスをセットするために使用され、結果データRD2に対応する入力チャネルが選択されている場合、結果有効インデックスRV2は、対応する書き込みイネーブルインデックスをセットするために使用される。結果有効インデックスRV1又はRV2が真になる場合、適切な書き込みイネーブルインデックスWE1又はWE2は、対応するマルチプレクサMP1及びMP2によって真にセットされる。書き込みイネーブルインデックスWE1又はWE2が真に等しくなる場合、当該レジスタファイルセグメントに対応する書き込みレジスタインデックスWR1又はWR2を介して選択されるレジスタにおいて結果データRD1又はRD2はレジスタファイルセグメントRF1又はRF2に書き込まれる。書き込みイネーブルインデックスWE1又はWE2が偽にセットされる場合、対応する書き込み選択インデックスWS1又はWS2を介して、対応するレジスタファイルセグメントRF1又はRF2にデータを書き込むための入力チャネルが選択されているが、データは当該レジスタファイルセグメントに書き込まれないであろう。レジスタファイルセグメントRF1及���RF2の所与の書き込みポートを介して何れかの結果データRD1又はRD2のライトバックをそれぞれディスエーブルするために、当該レジスタファイルセグメントに対応する書き込み選択インデックスWS1又はWS2は、対応するマルチプレクサMP1又はMP2からデフォールト（初期設定）入力部（default input）１１１を選択するために使用され得る。この場合、結果データは当該レジスタファイルセグメントに書き込まれない。
【００１９】
図２を参照すると、コントローラＣＴＲは論理ユニット２０１及び２０５に結合される。コントローラＣＴＲは復号化ステップの間にプログラムから命令有効インデックスOPV1及びOPV2を検索し、これらの命令有効インデックスは論理ユニット２０１及び２０５にそれぞれもたらされる。符号化された命令がＮＯＰ命令である場合、命令有効インデックスは偽にセットされ、さもなければ、命令有効インデックスは真にセットされる。レジスタファイルセグメントRF1及びRF2はユニット２０１及び２０５にそれぞれ結合され、対応するガードGU1及びGU2はレジスタファイルセグメントRF1及びRF2からユニット２０１及び２０５にそれぞれ書き込まれる。ガードGU1及びGU2は、当該ガードの値が決定されている間の命令の結果に依存して、真又は偽の何れかになり得る。ユニット２０１及び２０５は、対応する命令有効インデックスOPV1又はOPV2と対応するガードGU1又はGU2とについて論理積を実行する。結果としてもたらされるインデックスはレジスタ209、211、及び213を使用して対応する実行ユニットEX1及びEX2のパイプラインにより遅延させられる。実行ユニットEX1及びEX2によって命令コードOC1又はOC2を介して規定される命令がそれぞれ実行された後、対応する出力有効インデックスOV1及びOV2ばかりでなく、対応する結果データRD1及びRD2が生成される。対応する結果データRD1又はRD2が有効出力データである場合、出力有効インデックスOV1及びOV2は真になり、さもなければそれらは偽になる。ユニット２０３は、ガードGU1及び命令有効インデックスOPV1と出力有効インデックスOV1とからもたらされる遅延インデックスについて論理積を実行し、結果有効インデックスRV1をもたらす。ユニット２０７は、ガードGU2及び命令有効インデックスOPV2と出力有効インデックスOV2とからもたらされる遅延インデックスについて論理積を実行し、結果有効インデックスRV2をもたらす。ユニット２０３と２０７とは、マルチプレクサMP1及びMP2に結果有効インデックスRV1及びRV2を渡すため、部分的に接続されたネットワークＣＮを介してマルチプレクサMP1及びMP2にそれぞれ結合される。レジスタファイルセグメントRF1及びRF2への結果データRD1及びRD2の書き込みの制御のために、結果有効インデックスRV1及びRV2は、書き込みイネーブルインデックスWE1及びWE2をセットするためにそれぞれ使用される。結果データが、対応するレジスタファイルセグメントに書き込まれなければならない接続ネットワークCNからチャネルを選択するために、書き込み選択インデックスWS1及びWS2は、対応するマルチプレクサMP1及びMP2によって使用される。結果データチャネルがマルチプレクサによって選択される場合、結果有効インデックスRV1及びRV2は、レジスタファイルセグメントRF1及びRF2への結果データRD1又はRD2の書き込みの制御のために、書き込みイネーブルインデックスWE1又はWE2をセットするためにそれぞれ使用される。マルチプレクサMP1又はMP2が、結果データRD1に対応する入力チャネルを選択している場合、結果有効インデックスRV1は、当該マルチプレクサに対応する書き込みイネーブルインデックスをセットするために使用され、結果データRD2に対応する入力チャネルが選択されている場合、結果有効インデックスRV2は、対応する書き込みイネーブルインデックスをセットするために使���される。結果有効インデックスRV1又はRV2が真になる場合、適切な書き込みイネーブルインデックスWE1又はWE2が、対応するマルチプレクサMP1及びMP2によって真にセットされる。書き込みイネーブルインデックスWE1又はWE2が真に等しくなる場合、当該レジスタファイルセグメントに対応する書き込みレジスタインデックスWR1又はWR2を介して選択されるレジスタにおいて結果データRD1又はRD2はレジスタファイルセグメントRF1又はRF2に書き込まれる。書き込みイネーブルインデックスWE1又はWE2が偽にセットされる場合、対応する書き込み選択インデックスWS1又はWS2を介して、対応するレジスタファイルセグメントRF1又はRF2にデータを書き込むための入力チャネルが選択されているが、データは当該レジスタファイルセグメントに書き込まれないであろう。レジスタファイルセグメントRF1及びRF2の所与の書き込みポートを介して何れかの結果データRD1又はRD2のライトバックをそれぞれディスエーブルするために、当該レジスタファイルセグメントに対応する書き込み選択インデックスWS1又はWS2は、対応するマルチプレクサMP1又はMP2からデフォールト入力部１１１を選択するために使用され得る。この場合、結果データは当該レジスタファイルセグメントに書き込まれない。
【００２０】
図１及び図２によるタイムステーショナリレジスタVLIWプロセッサにより、レジスタファイルへの結果データのライトバックを動的に制御することが可能になる。実行時間の間、実行されている命令の結果データはレジスタファイルにライトバックされなければならないかが決定され得る。結果として、条件命令が、命令のタイムステーショナリ符号化を使用してプロセッサによって実現され得る。
【００２１】
以下、本発明によるタイムステーショナリプロセッサによって実行されるべきプログラムコードの一部の例が示される。当該プログラムコードにおいて、文字A, B0, B1, B2, C0, C1,  及びDは記述（文）（ステートメント（statement））を参照し、Xは偽又は真の何れかになり得る条件を参照する。
.
.
A;
if (X) then
{
B0; B1; B2;
}
else
{
C0; C1;
}
D;
.
.
【００２２】
以下のように、本プログラムコードは図２によるプロセッサによって実行され得る。本プログラムコードは、長文化しがちな分岐に対する必要性なしにif-then-else体の実行を可能にする“場合変換（イフコンバージョン（if conversion））”と称されるよく知られている技術を使用してコンパイラによって変換される。このため、“then”又は“else”体の何れかが、“then”及び“else”体で一つ又は複数の命令に対するガードとして使用される“if”条件、又はその片方（補完体）（complement）に基づいて当該技術は結果を返すことを保証することによって“if-then-else”体の並列実行さえも可能にする。“if変換”を使用して、上記のプログラムコードの一部は
.
.
A;
if (X): B0;
if (X): B1;
if (X): B2;
if (!X): C0;
if (!X): C1;
D;
.
.
に変換される。
【００２３】
図２を参照すると、条件Ｘの値を決定するために命令は実行ユニットEX1又はEX2の何れかによって実行される。当該命令は結果“真”をもたらし、当該結果はレジスタファイルセグメントＲＦ１及びその片方に記憶される。すなわち、結果“偽”はレジスタファイルセグメントＲＦ２に記憶される。次に、実行ユニットEX1は、記述B0, B1,  及びB2を有する命令を実行し、実行ユニットEX2は、記述C0及びC1を有する命令を実行する。ジャンプ命令を使用して通常実現され、それ故に特性がシーケンシャルになるif変換プログラムにおける制御フローの除去のために、リソースの利用可能性及びデータ依存性により許される場合、元のプログラム（オリジナルプログラム）の“then”及び“else”体における命令はこの場合、並列にスケジューリングされ得る。コントローラＣＴＲは、ＶＬＩＷ命令を復号化し、結果としてもたらされる書き込み選択インデックスＷＳ１及びＷＳ２を、対応するマルチプレクサＭＰ１及びＭＰ２に送信し、読み出しレジスタインデックスＲＲ１及びＲＲ２ばかりでなく書き込みレジスタインデックスＷＲ１及びＷＲ２も、対応するレジスタファイルセグメントＲＦ１及びＲＦ２に送信し、命令コードＯＣ１及びＯＣ２を、対応する実行ユニットEX1及びEX2に送信し、命令有効インデックスOPV1及びOPV2を、対応するユニット２０１及び２０５に送信する。当該命令有効インデックスOPV1及びOPV2は“真”に等しくなる。ユニット２０１及び２０５は記述Ｘ又はその片方の評価の結果も、対応するガードGU1及びGU2としてそれぞれ受信し、ガードと命令有効インデックスとの論理積を実行する。ガードGU1及びGU2はそれぞれ、真及び偽に等しくなるため、ユニット２０５の場合、論理積は結果として“偽”をもたらす一方、ユニット２０１の場合、論理積は結果として“真”をもたらすであろう。記述B0, B1, B2,  C1,  又はC2は実行ユニットEX1及びEX2によってそれぞれ実行される一方、論理積の結果はレジスタ209, 211, 及び213を通じてクロックされる。実行ユニットEX1及びEX2の両方に対して、対応する出力有効インデックスOV1及びOV2は、真に等しくなる。ユニット２０３は、命令有効インデックスOV1と、ユニット２０１によって実行される論理積の結果との論理積を実行するであろう。当該論理積の結果は真になり、それ故に結果有効インデックスＲＶ１は真に等しくなる。部分的に接続されたネットワークＣＮを介して、対応する結果データＲＤ１ばかりでなく結果有効インデックスＲＶ１の値はマルチプレクサＭＰ１及びＭＰ２に転送される。書き込み選択インデックスＷＳ１を使用して、マルチプレクサＭＰ１は、結果データＲＤ１に対応する入力チャネルを選択する。その後、書き込みイネーブルインデックスＷＥ１は、結果有効インデックスＲＶ１を使用して真にセットされ、結果データＲＤ１はデータＷＤ１としてレジスタファイルセグメントＲＦ１に書き込まれる。ユニット２０７は、命令有効インデックスＯＶ２と、ユニット２０５によって実行される論理積の結果との論理積を実行するであろう。当該論理積の結果は偽になり、それ故に結果有効インデックスＲＶ２は偽に等しくなる。部分的に接続されたネットワークＣＮを介して、結果データＲＤ２ばかりでなく結果有効インデックスＲＶ２の値はマルチプレクサ���Ｐ１及びＭＰ２に転送される。書き込み選択インデックスＷＳ２を使用して、マルチプレクサＭＰ２は、結果データＲＤ２に対応するチャネルを選択する。その後、書き込みイネーブルインデックスＷＥ２は、結果有効インデックスＲＶ２を使用して偽にセットされ、従って結果データＲＤ２はレジスタファイルセグメントＲＦ２に書き込まれない。代わりに、ガードＸ及びその片方の値は、レジスタファイルセグメントＲＦ１とレジスタファイルセグメントＲＦ２との両方に記憶され得る。この場合、記述B0, B1, B2,  C0,  及びC1は実行ユニットEX1と実行ユニットEX2との両方によって実行され得る。実行ユニットEX1又はEX2が記述B0, B1, 又はB2を実行している場合、Ｘの値はガードGU1又はGU2に対してそれぞれ使用される。実行ユニットEX1又はEX2が記述C0 又はC1を実行している場合、Ｘの片方はガードGU1又はGU2に対してそれぞれ使用される。結果として、記述B0, B1, 又はB2が実行される場合、結果データＲＤ１又はＲＤ２はレジスタファイルセグメントＲＦ１及び／又はＲＦ２に書き込まれる。記述C0 又はC1が実行される場合、結果データＲＤ１又はＲＤ２はレジスタファイルセグメントＲＦ１及び／又はＲＦ２に書き込まれない。
【００２４】
以下、本発明によるタイムステーショナリプロセッサによって実行されるべきプログラムコードの一部の他の例が示される。当該プログラムコードにおいて、文字Ｚ、Ｐ、及びＱは変数を参照し、Xは偽又は真の何れかになり得る条件を参照する。当該プログラムの部分（フラグメント（fragment））が実行されるとき、ＰとＱとの値は加算され、条件Ｘが真に等しくなる場合、その結果はＺに割り当てられる。
.
.
if (X) then
{
Z = add (P, Q);
}
.
.
【００２５】
以下のように、本プログラムコードは図１によるプロセッサによって実行され得る。本プログラムコードはコンパイラによって変換され、加算命令は、追加の引数（argument）として条件Ｘの値をとる条件加算命令ｃａｄｄによって置換される。
.
.
Z = cadd (X, P, Q);
.
.
【００２６】
図１を参照すると、条件Ｘの値を決定するために命令は実行ユニットEX1又はEX2の何れかによって実行される。当該命令は結果“真”をもたらし、当該結果はレジスタファイルセグメントＲＦ１にも記憶される。パラメータＰ及びＱの値はレジスタファイルセグメントＲＦ１にも記憶される。ｃａｄｄ命令は実行ユニットEX1によって実行される。パラメータＰ及びＱばかりでなく条件Ｘの値も入力データＩＤとして実行ユニットEX1によって受信される。命令ｃａｄｄの実行の間、条件Ｘの値は実行ユニットEX1によって評価され、当該値が真に等しくなる場合、出力有効インデックスOV1は真に等しくなるようにセットされる。条件Ｘの値が偽に等しくなる場合、出力有効インデックスOV1は偽に等しくなるようにセットされる。当該例において、条件Ｘの値が真に等しくなり、それ故に出力有効インデックスOV1の値も真に等しくなるようにセットされる。更に、実行ユニットEX1はパラメータＺの値を計算する。ユニット１０１は、命令ｃａｄｄに対応する命令有効インデックスOPV1及び出力有効インデックスOV1について論理積を実行する。命令有効インデックスOPV1は真に等しくなるため、結果としてもたらされる結果有効インデックスRV1も真に等しくなる。結果有効インデックスRV1及び結果データＲＤ１は、パラメータＺの値の形態で、部分的に接続されたネットワークＣＮを介してマルチプレクサMP1及びMP2に転送される。書き込み選択インデックスWS1を使用して、マルチプレクサＭＰ１は、入力チャネルとして結果データＲＤ１に対応するチャネルを選択する。マルチプレクサＭＰ１は、結果有効インデックスRV1を使用して書き込みイネーブルインデックスWE1を真に等しくなるようにセットし、パラメータＺの値は、書き込みデータＷＤ１としてレジスタファイルセグメントＲＦ１に書き込まれる。条件Ｘが偽に等しくなる場合、出力有効インデックスOV1は実行ユニットEX1によって偽にセットされる。ユニット１０１によって実行される論理積は、偽に等しい結果有効インデックスRV1をもたらす。結果として、書き込みイネーブルインデックスWE1は偽にセットされる。この場合、パラメータＺの値はレジスタファイルセグメントＲＦ１に書き込まれない。
【００２７】
上記の例は、ジャンプ命令の使用なしのタイムステーショナリプロセッサにおける命令の条件実行が、実行ユニットからレジスタファイルへの結果データの転送を動的に制御することによって実現され得ることを示している。
【００２８】
他の実施例において、通信ネットワークＣＮは、部分的に接続された通信ネットワークであってもよく、すなわち、必ずしも全ての実行ユニットＥＸ１及びＥＸ２が全てのレジスタファイルセグメントＲＦ１及びＲＦ２に結合されるわけではない。多数の実行ユニットの場合、完全に接続された通信ネットワークのオーバヘッドは、シリコン面積、遅延、及び消費電力に関して重要になるであろう。ＶＬＩＷプロセッサの設計の間、実行されなければならないアプリケーションの範囲に依存してどれくらいまで実行ユニットはレジスタファイルセグメントに結合されるかが決定される。
【００２９】
他の実施例において、レジスタファイルセグメントＲＦ１及びＲＦ２を有する分散型レジスタファイルは単一のレジスタファイルになる。ＶＬＩＷプロセッサの実行ユニットの数が比較的少なくなる場合、単一のレジスタファイルのオーバヘッドも比較的小さくなる。
【００３０】
他の実施例において、ＶＬＩＷプロセッサはより多くの実行ユニットを有していてもよい。実行ユニットの数は、ＶＬＩＷプロセッサが他のプロセッサの間で実行しなければならないアプリケーションの種類に依存する。当該プロセッサは、前記実行ユニットに結合されるより多くのレジスタファイルセグメントを有していてもよい。
【００３１】
他の実施例において、実行ユニットＥＸ１及びＥＸ２は、実行ユニットが実行しなければならない命令、すなわち二つよりも多くのオペラントを必要とする命令及び／又は一つよりも多くの結果をもたらす命令の種類に依存して複数の入力部及び／又は複数の出力部を有していてもよい。レジスタファイルは、レジスタファイルセグメント毎に複数の読み出し及び／又は書き込みポートを有していてもよい。
【００３２】
本発明の保護範囲は上述の実施例に限定されるものではなく、当業者が特許請求の範囲からはずれることなく多くの代わりの実施例を設計することができることは注目されるべきである。請求項において、括弧の間に置かれる請求項の参照符号は、いずれも当該請求項の保護範囲を限定するものではない。単語“有する”は、請求項に記述される構成要素以外に構成要素又はステップの存在を排除するものではない。構成要素に先行する冠詞“a”又は“aｎ”は、複数の構成要素を排除するものではない。いくつかの手段を列挙する装置の請求項において、いくつかのこれらの手段は、ハードウエアの一つ及び同じ構成要素によって具現化されることが可能である。ある手段が相互に異なる従属した請求項において再び引用されるという事実は、これらの手段の組み合わせが効果的に使われ得ないことを示すものではないということに過ぎない。
【図面の簡単な説明】
【００３３】
【図１】本発明による第一のVLIWプロセッサの概略的はブロック図を示す。
【図２】本発明による第二のVLIWプロセッサの概略的はブロック図を示す。
【図１】
0004828409.tif 000002
【図２】
0004828409.tif 000003