JP5122277B2 - データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム - Google Patents

データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム Download PDF

Info

Publication number
JP5122277B2
JP5122277B2 JP2007512674A JP2007512674A JP5122277B2 JP 5122277 B2 JP5122277 B2 JP 5122277B2 JP 2007512674 A JP2007512674 A JP 2007512674A JP 2007512674 A JP2007512674 A JP 2007512674A JP 5122277 B2 JP5122277 B2 JP 5122277B2
Authority
JP
Japan
Prior art keywords
instruction
program
instruction word
register
field
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
JP2007512674A
Other languages
English (en)
Other versions
JP2007537528A (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 JP2007537528A publication Critical patent/JP2007537528A/ja
Application granted granted Critical
Publication of JP5122277B2 publication Critical patent/JP5122277B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/38Concurrent instruction execution, e.g. pipeline, 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, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Description

本発明は、時間定常多重命令ワードを処理する装置を用いたデータ処理方法、及び前記データ処理方法を実行する、時間定常多重命令ワード処理装置に関連する。本発明は更に、多重命令ワードセットを2進プログラムコードで生成する方法、及び前記多重命令ワードセット生成方法を用いるコンパイラプログラムに関する。
プログラム可能なプロセッサーは、汎用プロセッサー又は特定用途向け命令セットプロセッサーであり得る。それらは、音声、画像及びビデオを含む異なる種類の情報を操作するために利用され得る。特定用途向け命令セットプロセッサーの場合、プロセッサーアーキテクチャ及び命令セットは、カスタマイズされ、システムのコスト及び電力損失を有意に低減する。プロセッサーアーキテクチャは、通常、制御ワードのセットにより制御される固定データパスを有する。各制御ワードは、データパスの部分を制御する。そしてこれらの部分は、レジスタアドレス及び論理演算ユニット(ALU)又は他の機能ユニットのためのオペレーションコードを有する。命令の各セットは、通常、2進形式の命令を対応する制御ワードに翻訳する命令復号器を用い、又はマイクロストア、つまり制御ワードを直接収容するメモリーを用い、制御ワードの新しいセットを生成する。標準的に、制御ワードは、RISCのように動作し、オペレーションコード、2つのオペランドレジスタインデックス及び結果レジスタインデックスを有する。オペランドレジスタインデックス及び結果レジスタインデックスは、レジスタファイル内のレジスタを参照する。
超長命令語(VLIW)プロセッサーの場合、多重命令は、1つの長い命令、所謂VLIW命令にまとめられる。VLIWプロセッサーは、複数の独立した機能ユニットを用い、3個の多重命令を並列に実行する。プロセッサーは、プログラム内の命令レベルの並行処理を有効に使い、そして従って、同時に複数の命令を実行させる。この形式の同時処理により、プロセッサーの性能は増大する。ソフトウェアプログラムをVLIWプロセッサーで実行するために、ソフトウェアプログラムは、VLIW命令セットに翻訳されなければならない。コンパイラは、並列処理を最適化することにより、プログラムの実行に必要な時間を最小限に抑えようとする。コンパイラは、単一のVLIW命令に割り当てられた命令は並列に実行できるという制約の下で及びデータ依存制約の下で、命令をVLIW命令に結合する。如何なる重要な処理も1つ以上の機能ユニットの特定のクロック周期内で行われない場合、所謂ノーオペレーション(NOP)命令は、当該特定の機能ユニットのVLIW命令に符号化される。コードサイズを減少するため、及び従って、必要なメモリーサイズ観点から、必要なメモリー帯域の観点からコストを低減するため、データ定常VLIWプロセッサー内でノーオペレーション(NOP)命令の小型表現が、利用されて良い。例えば、NOPオペレーションは、VLIW命令の前に付加された特別なヘッダー内の単一ビットにより符号化され、結果として圧縮されたVLIW命令を生じる。
プロセッサーのデータパイプライン内のオペレーションを制御するため、2つの異なる機構が、コンピューターアーキテクチャで共通に用いられる。つまり、データ定常及び時間定常符号化であり、非特許文献1に記載されている。データ定常符号化の場合、プロセッサーの命令セットの一部である各命令は、データパイプラインをトラバースするので、特定のデータアイテムに対し実行されるべきオペレーションの完全なシーケンスを制御する。命令がプログラムメモリーからフェッチされ復号されると、プロセッサー制御ハードウェアは、確実に構成オペレーションを正しいマシンサイクルで実行させる。時間定常符号化の場合、プロセッサーの命令セットの一部である各命令は、単一のマシンサイクルで実行されるべきオペレーションの完全なセットを制御する。これらのオペレーションは、データパイプラインをトラバースする、複数の異なるデータアイテムに適用されて良い。この場合、データパイプラインを設定し維持することは、プログラマー又はコンパイラの役割である。結果として生じるパイプラインスケジュールは、機械コードプログラムで完全に明らかである。時間定常符号化は、大きいコードサイズを犠牲にして、命令内に存在する制御情報を遅延させるために必要なハードウェアのオーバーヘッドを節約するので、しばしば特定用途向けプロセッサーで利用される。
VLIWプロセッサーのようなプログラム可能なプロセッサーは、NOP命令の実行中に、依然として不必要に電力を消費し得る。NOP命令に関連するこの問題は、並列プロセッサーが少ない並列コード、例えば制御基本コードを実行する必要がある場合、特に並列プロセッサーにおいて現れる。特に、高度な並列VLIWプロセッサーの場合、これは結果としてコード内に多数のNOP命令を生じ、そして従ってNOP命令の実行中に不要な電力消費を生じる。従来、OP命令は、処理装置により認識される専用の値を用いて符号化され、処理装置の状態に変化を生じない。しかしながら、NOP命令の既定コードが、明らかに有用な命令の既定コードと異ならなければならないので、この方法でNOP命令を符号化することは、結果として、有用な命令の後又は前に、信号遷移及び従ってNOP命令の実行中の不要な電力消費を生じる。NOP命令の実行中に電力消費を低減するため、利用されないプロセッサーのデータパスの一部を止める、クロックゲーティングと称される技術が利用されて良い。クロックゲーティングの利用は、未利用のシーケンシャルロジックにより消費される電力の量を低減するだけでなく、クロックゲートにより無効にされた(パイプライン)レジスタが、未利用の組合せ論理を通じたリップルからの信号遷移を防ぎ、及び従って更に不要な電力消費を防ぐ。しかしながら、後者は、現在の(パイプライン)レジスタの量及びこれらレジスタの正確な位置により大いに決定される。低電力プロセッサーは、理想的には、深くないパイプラインを有し、更に電力を消費するハードウェアが必要とされるのを防ぎ、長いブランチ待ち時間のようなパイプラインの逆効果を解決する。後者は、特に、計算効率が極めて重大なプロセッサーがしばしば高度に並列なので、つまり多くの発行スロットを有するので、ホールドする。また、深いパイプラインの生成は、有意なハードウェアオーバーヘッドを各発行スロットに付加する。ハードウェアの量を最小限に抑えるという理由で、これら高度な並列プロセッサーは、しばしば、時間定常命令符号化を用い、ボトルネックをフェッチし復号する主要命令に直面することなく、多数のハードウェアリソースを単一の高度な並列命令から操作可能である。
特許文献1は、所謂プロキシーNOP命令の利用に基づく、VLIWプロセッサーの電力低減技術を記載している。NOP命令により生じた信号遷移の数は、NOP命令をVLIWプロセッサーの同一発行スロットの隣接する非NOP命令で置き換えることにより、及び同時に置換した命令の保護を偽にすることにより、低減される。従って、復号回路は、如何なる実行/イネーブル信号も個々の機能ユニットへ送信しない。偽の保護を有するこれら置換した命令は、プロキシーNOP命令と命名される。記載された技術は、データ定常命令符号化が利用されるという事実に基づく。この技術では、命令に関連する全ての情報は、単一のプロセッサー周期で発行された単一のVLIW命令の単一の極小部分に符号化される。更に、この技術は、VLIWプロセッサー内の各発行スロットが保護を支援すると想定している。更に、この技術は、VLIWプロセッサー内の如何なる発行スロットにより支援される各オペレーションも保護され得る、つまり条件付きであると想定する。しかしながら、この技術は、時間定常VLIWプロセッサーに適さない。
第一に、単一命令に関連する時間定常符号化情報は、標準的に、異なる周期で発行された複数のVLIW命令に亘り広がっている。これは、単一命令に対応するNOP命令に関する情報が、複数のVLIW命令に亘り広がっていることを意味する。第二に、時間定常プロセッサーの命令は、しばしば、オペレーションを極小単位として符号化しない。代わりに、制御情報は、符号化され、機能ユニット、レジスタファイル、バスマルチプレクサ等のような、プロセッサーリソースを直接操作する。実際のリソース操作からの「抜粋」命令情報のこの分離は、単一命令の結果が単一プロセッサー周期で任意的に複数のレジスタファイルに書き込まれ得るマルチキャストのような技術を可能にする。例えば、データ定常符号化では、書き戻し情報、つまり結果データをレジスタファイルへ書き戻す制御情報は、通常、別個の命令フィールドにオペレーションの結果毎に符号化される。各フィールドは、この場合、対応する結果が書き込まれるべきレジスタを指定する宛先レジスタアドレス(レジスタファイル、レジスタインデックス)を有する。同一の結果が複数のレジスタファイルに書き込まれる場合、オペレーション結果毎に複数のフィールドに符号化されるべき複数の宛先レジスタアドレスが必要とされる。これは、特に同一結果を受信すべき宛先の数が変化し得る場合、符号化が効率的でないので、通常、データ定常命令形式ではサポートされない。代案として、別個の命令がプログラムに追加され、結果を他のレジスタファイルに明示的に複製する必要がある。時間定常符号化は、別個のフィールドの利用を可能にし、オペレーション結果毎ではなく、レジスタファイルライトポート毎に書き戻し情報を符号化する。従って、オペレーション結果毎にどのレジスタファイルに結果が書き込まれるべきかを指定するのではなく、レジスタファイルライトポート毎にどのオペレーション結果が選択されレジスタファイルに書き込まれるべきかを指定し得る。この概念により、同一結果は、必要な命令フィールド数に影響を与えずに、任意の数のレジスタファイルに、単一周期で書き込まれ得る。この分離の結果として、時間定常命令内の同一フィールドは、異なるクロック周期で異なる発行スロットで実行されるオペレーションに対応する情報を伝達し得る。周期i+2(i=0,1,2...)で発行された命令内の所与のレジスタファイルライトポートフィールドは、第1の発行スロットにより生成された結果を、2つ前のサイクルiで発行された命令の結果として選択して良い。また、周期i+3で発行された次の命令では、前記レジスタファイルライトポートフィールドは、第2の発行スロットにより生成された結果を1周期前に周期i+2で発行された命令の結果として選択して良い。
従って、VLIWプロセッサーによる従来の電力消費低減方法の不利点は、この方法が時間定常プロセッサーに利用できないことである。
米国特許第6535984号明細書 欧州特許出願公開第03101038.2号明細書 ジー・グーセンス他(G. Goossens, J. van Praet, D. Lanneer, W. Geurts, A. Kifli, C. Liem and P. Paulin)、エンベディッド・ソフトウェア・イン・リアルタイム・シグナル・プロセッシング・システム:デザイン・テクノロジーズ(Embedded software in real−time signal processing systems: design technologies)、アイ・イー・イー・イー会報(Proceedings of the IEEE)、アイ・イー・イー・イー(IEEE)、1997年、vol.85、No.3
本発明の目的は、命令の効率的な符号化及び復号化を維持しつつNOP命令の実行中に電力消費を低減する、時間定常多重命令ワードプロセッサーを用いたデータ処理方法を提供することである。
この目的は、複数の命令を並列に実行するよう構成された時間定常多重命令ワード処理装置を用いる、データ処理方法により達成される。前記方法は、各多重命令ワードは複数の命令フィールドを有し、各命令フィールドは前記処理装置の対応するリソースの制御情報を符号化し、そしてノーオペレーション命令に関連する命令フィールド及び隣接する多重命令ワードの関連する命令フィールドの間のビット変化は最小限に抑えられ、前記多重命令ワードセットを生成する段階;入力データをレジスタファイルに格納する段階;多重命令ワードセットから引き出された制御情報に基づき、前記レジスタファイルから読み出したデータを処理する段階;第1の専用ノーオペレーションコードを用い、ノーオペレーション命令の実行中に、前記レジスタファイルへの結果データの書き戻しを無効にする段階、を有する。命令フィールドは、NOP命令に関連する制御情報が符号化される場合、これらNOP命令フィールドを符号化するために利用された値が、隣接する多重命令ワードの対応するフィールドから可能な限り多く繰り返される方法で、符号化される。結果として、処理装置内の対応する組み合わせ論理は、前の及び後の周期と同一の値を伝達する。従ってデータ遷移のリップル、及び従って、不要な電力消費は低減する。NOP命令の実行中にレジスタファイルに結果データが書き戻されるのを回避するため、専用のNOPコードが利用され、結果データの書き戻しを無効にする。従って、NOP命令の実行中に、プロセッサーの状態は変化せず、電力消費は低減される。NOP命令の符号化中に、いくつかの命令フィールドでは、別の符号化命令からの値が繰り返される。一方、他の命令フィールドでは、符号化効率を表示する専用の値が利用される。NOP命令の復号化は、他の命令に関する方法と同一の方法で実行される。
本発明によるデータ処理方法の実施例は、オペコードを符号化するために第2の専用ノーオペレーションコードを用い、ノーオペレーションコードの実行中に処理装置の状態の変化を防ぐ段階を更に有する、ことを特徴とする。いくつかの発行スロットでは、隣接する多重命令ワードの対応するフィールドのオペコードを繰り返すことにより、NOPオペコード命令フィールドを符号化する場合、NOP命令の実行中に、処理装置の状態に変化を生じる。このようなオペコードの符号化に専用NOPコードを用いることにより、この状態変化は防止される。
本発明によるデータ処理方法の実施例は、隣接する多重命令ワードが、多重命令ワードに隣接し、コンピュータープログラムのコンパイル後に引き出された多重命令ワードセット内で、ノーオペレーション命令に関連する命令フィールドを有することを特徴とする。隣接する多重命令ワードからの対応するフィールドの値を繰り返すことは、比較的容易であり、翻訳されている現在の命令の前及び後の命令を把握する必要があるだけである。直線的コード、つまりジャンプを有さないNOP命令の実行中の電力消費は、低減される。
本発明によるデータ処理方法の実施例は、隣接する多重命令ワードが、多重命令ワードに隣接する可能性が最も高く、多重命令ワードセットの実行中に、プロファイル情報から引き出されたノーオペレーション命令に関連する命令フィールドを有することを特徴とする。プログラムの実行から得たプロファイル情報を用いることにより、所与のプログラム内で最も高頻度で取られるパスは、解析され、そして実行中にどの命令が所与の命令の前又は後に最も続き易いかを決定し得る。符号化中に所与の多重命令ワードの前又は後の多重命令ワードの命令フィールドを符号化するための値を繰り返すことは、それらフィールドに関連する制御情報が結果として処理装置の状態変化を生じない場合、NOP命令の実行中の電力消費を更に低減する。
本発明によると、請求項1によるデータ処理方法を実行するよう構成された処理装置は、複数の命令を並列実行するために構成された複数の発行スロット、前記複数の発行スロットによりアクセス可能なレジスタファイル、前記複数の発行スロット及び前記レジスタファイルを結合する通信ネットワーク、前記多重命令ワードセットから引き出された制御情報に基づき、前記処理装置を制御するよう構成された制御部、を有する。結果として、処理装置内の対応する組み合わせ論理は、前及び後の周期と同一の値を伝達する。従ってデータ遷移のリップル、及び従って、不要な電力消費は低減する。従って、NOP命令の実行中に、プロセッサーの状態は変化せず、電力消費は低減される。
処理装置の実施例は、レジスタファイルが分散レジスタファイルであることを特徴とする。分散レジスタファイルの利点は、分散レジスタファイルがレジスタファイルセグメント毎に少ないリード及びライトポートしか必要せず、結果としてシリコン面積の観点から小さいレジスタファイルになることである。更に、分散レジスタファイル内のレジスタのアドレス指定は、集中レジスタファイルと比べた場合、少ないビットしか必要としない。
処理装置の実施例は、通信ネットワークが部分接続通信ネットワークであることを特徴とする。部分接続通信ネットワークは、しばしばスピードが重視されず、及びコードサイズ、面積及び電力消費の観点から、完全接続通信ネットワークと比べた場合、特に実行ユニットが多数の場合、高価でない。
処理装置の実施例は、処理装置が時間定常超長命令語プロセッサーであることを特徴とする。時間定常超長命令語プロセッサーは、多重命令を並列に実行可能にし、比較的単純なハードウェアを有しつつ、全体の動作速度を増大する。これらプロセッサーは、通常、深くないパイプラインを有するにも拘わらず、組み合わせ論理を通じた信号遷移のリップル、及び従って電力消費は、NOP命令の実行中に低減される。
本発明によると、多重命令ワードセットを2進プログラムコード形式で生成する方法は、請求項9で請求される。前記方法は、NOP命令を有する多重命令ワードセットの実行中に電力消費を低減可能にする命令セットを生成し、同時に所与の処理装置の命令復号器に如何なるハードウェアの変更も必要としない。
本発明による命令セットを生成する方法を用い、一連の命令を2進プログラムコード形式で生成するよう構成されたコンパイラプログラムは、請求項10で請求される。
図1及び図3は、2つの発行スロットIS及びIS、並びに2つのレジスタファイルRF及びRFを有するVLIWプロセッサーを説明するブロック図である。発行スロットIS及びISは、接続ネットワークCNを介してレジスタファイルRF及びRFと結合される。レジスタファイルRF及びRFは両方とも、それぞれ8個のレジスタを有する。発行スロットISは、2つの機能ユニット、論理演算ユニット(ALU)及び乗算ユニット(MPU)を有する。2つの機能ユニットALU及びMPUは、接続rp00及びrp01を介して、レジスタファイルRFと結合される。機能ユニットALUは、内部にパイプラインステージを有さず、7個の異なるオペレーション、つまり加算、減算、論理AND、論理OR、論理XOR、論理左シフト、及び論理右シフトを実行し得る。これらオペレーションは、それぞれオペレーションコード、つまりopcode0乃至6により制御される。機能ユニットMPUは、内部に1つのパイプラインステージを有し、4個の異なるオペレーション、つまり下位結果の符号付き乗算、上位結果の符号付き乗算、下位結果の符号なし乗算、上位結果の符号なし乗算を実行し得る。これらオペレーションは、それぞれopcode7乃至10により制御される。2つのレジスタファイルRF及びRFは、1周期の待ち時間を有する。そして結果として機能ユニットALUにより実行されるオペレーションの総待ち時間は1周期であり、及び機能ユニットMPUにより実行されるオペレーションの総待ち時間は2周期である。発行スロットISは、ロード/ストアユニットLSUである1つの機能ユニットを有する。ロードストアユニットLSUは、図3の場合に限って接続rp10、及びrp11及びrp12を介してレジスタファイルRFと結合され、またメモリーマップド装置MMIOと結合される。機能ユニットALU及びMPUは、それらの結果データを接続rd及びマルチプレクサMP及びMPを介してそれぞれレジスタファイルRF及びRFへ渡す。機能ユニットLSUは、その結果データを接続rd及びマルチプレクサMP及びMPを介してそれぞれレジスタファイルRF及びRFへ渡す。動作中、シーケンサーSEQは、VLIW命令ワードをプログラムメモリーPMから読み出し、そしてこれら命令ワードを復号する。一般に、これら命令は、RISC同様のオペレーションを有し、2つのオペランドを必要とし、及び1つの結果と共に、2つより多いオペランドを消費し複数の結果を生成し得るカスタムオペレーションを生成する。いくつかの命令は、オペランドデータと同じくらい即時値を必要とし得る。復号化段階の結果は、ライト選択インデックスws00及びws10、ライトレジスタインデックスwp00及びwp10、リードレジスタインデックスrp00、rp01、rp10(図3)、rp11及びrp12、並びにオペコードopcode及びopcodeである。場合によっては、即時値は、命令からも同様に読み出されるが、これらは提案された解決法に影響を与えず、所与の例に含まれない。シーケンサーSEQ及びマルチプレクサMP及びMPの間の結合を介して、ライト選択インデックスws00及びws10は、それぞれマルチプレクサMP及びMPへ提供される。ライト選択インデックスws00及びws10は、対応するマルチプレクサにより利用され、レジスタファイルRF及び/又はRFへ書き込まれるべき結果データrd及びrdの所望の入力チャネルを選択する。シーケンサーSEQは、レジスタファイルRF及びRFと結合され、データが書き込まれるべき対応するレジスタファイルからレジスタを選択するため、それぞれライトレジスタインデックスwp00及びwp10を提供する。シーケンサーSEQはまた、機能ユニットの入力データが読み出されるべき対応するレジスタファイルからレジスタを選択するため、リードレジスタインデックスrp00及びrp01をレジスタファイルRFへ接続rpを介して、並びにリードレジスタインデックスrp10、rp11及びrp12をレジスタファイルRFへ接続rpを介して提供する。シーケンサーSEQは、発行スロットISのオペレーション復号器OPDECと結合され、オペコードopcodeを提供する。またシーケンサーSEQは、発行スロットISからのオペレーション復号器OPDECと結合され、オペコードopcodeを提供する。オペレーション復号器OPDEC及びOPDECは、それらそれぞれのオペコードを復号する。オペレーション復号器OPDECは、ユニット選択信号sel00及びsel01をそれぞれ機能ユニットALU及び機能ユニットMPUへ提供する。オペレーション復号器OPDECはまた、オペレーション意味opsem00及びopsem01をそれぞれ機能ユニットALU及び機能ユニットMPUへ提供する。ユニット選択信号sel00及びsel01は、機能ユニットがオペレーションを実行しなければならない場合、それぞれ機能ユニットALU及び機能ユニットMPUをアクティブにするために用いられる。オペランドは、適切な場合、接続rpを介してレジスタファイルへ提供される、リードレジスタインデックスrp00及びrp01の制御下で、レジスタファイルRFから読み出される。ユニット選択信号sel00及びsel01は、オペレーションコードopcodeの値から引き出される。オペレーションコードopcodeが機能ユニットALUにより実行されるべきオペレーションを示す場合、ユニット選択信号sel00は真に設定され、それ以外の場合、偽に設定される。オペレーションコードopcodeが機能ユニットMPUにより実行されるべきオペレーションを示す場合、ユニット選択信号sel01は真に設定され、それ以外の場合、偽に設定される。オペレーション意味opsem00及びopsem01は、対応する機能ユニットALU及びMPUにより実行されるべきオペレーションの種類を示す。ユニット選択信号sel01は、ANDゲート101により出力有効インデックスov00と論理積をとられる。そして結果として得た信号はANDゲート103により結果データrd00、つまり機能ユニットALUにより生成された結果データと論理積をとられる。ユニット選択信号sel01は、機能ユニットMPUのパイプライン深さに従い遅延される。つまりレジスタ105により遅延される。遅延されたユニット選択信号sel01は、ANDゲート107により出力有効インデックスov01と論理積をとられる。そして結果として得た信号は、ANDゲート109により結果データrd01、つまり機能ユニットMPUにより生成された結果データと論理積をとられる。ANDゲート103及び109の出力信号は、ORゲート111により論理和をとられる。出力有効インデックスov00及びov01は、対応する結果データrd00及びrd01が有効出力データである場合、真であり、それ以外の場合、偽である。機能ユニットALUがオペレーションを実行するために選択された場合、ユニット選択信号sel00は、真に設定され、及びユニット選択信号sel01は偽に設定される。出力有効インデックスov00が、機能ユニットALUにより真に設定された場合、結果データrd00は、ORゲート111により結果データrdとして出力される。機能ユニットMPUがオペレーションを実行するために選択された場合、ユニット選択信号sel00は、真に設定され、及びユニット選択信号sel01は同じく真に設定される。出力有効インデックスov01が、機能ユニットMPUにより真に設定された場合、結果データrd01は、ORゲート111により結果データrdとして出力される。オペレーション復号器OPDECは、オペレーションコードopcodeを復号することにより、ユニット選択信号sel10と同様にオペレーション意味opsem10を提供する。ユニット選択信号sel10及びsel01は、オペレーションコードopcodeの値から引き出される。オペレーション意味opsem10は、対応する機能ユニットLSUにより実行されるべきオペレーションの種類を示す。オペランドデータは、もしあれば、リードレジスタインデックスrp10及びrp12の制御下で、レジスタファイルRFから読み出される。機能ユニットLSUは、それぞれオペレーションコードopcode0及び1の値により示される、2つのオペレーション、つまりロードオペレーション及びストアオペレーションを支援する。機能ユニットLSUは、コマンドmmio_cmdをMMIO装置へ送信することにより、メモリーマップドI/O装置MMIOを制御する。コマンドmmio_cmdの有効性は、有効信号mmio_vaildにより示される。コマンドmmio_cmdは、機能ユニットLSUのロードオペレーションの場合にはリード、機能ユニットLSUのストアオペレーションの場合にはライトが、MMIO装置で実行されるべきであると示すフラグを有する。コマンドmmio_cmdは、メモリーアドレス、及びライトコマンドの場合には書き込まれるべきデータを更に有する。MMIO装置は、リードコマンドが発行された場合、データmmio_rdataを機能ユニットLSUへ返す。MMIO装置は、データ通信及び/又はメモリーマップドI/Oに基づく格納を支援する如何なる装置であって良い。これらは、通常のメモリーFIFO、及びデータ格納位置又はメモリーマップされた制御/状態/IOレジスタを有する周辺装置を有する。機能ユニットLSUは、オペレーションを実行する最初の周期でコマンドをMMIO装置へ送信し、そしてロードオペレーションの場合、3番目の周期で戻りデータを期待する。機能ユニットLSUにより実行されるロードオペレーションの場合、有効結果データrdは、ロードオペレーションが実行された2周期後に出力される。これら結果データrdは、当該ロードオペレーションの結果として、MMIO装置から読み出されたデータである。機能ユニットLSUにより実行されるストアオペレーションの場合、如何なる有効結果データrdも出力されない。結果データrd及びrdは、例えば32ビット値であって良く、レジスタファイルRF及びRFへ、接続
ネットワークCN、マルチプレクサMP及びMPを介して、ライト選択インデックスws00及びws10、並びにライトレジスタインデックスwp00及びwp10の制御下で、書き込まれ得る。
図1を参照すると、機能ユニットLSUはまた、NOP命令を支援する。このNOP命令は、オペレーションコードopcodeの専用値、つまり3に等しい値を用いて選択され得る。オペレーション復号器OPDECは、オペレーションコードopcodeを復号する。また、ロード又はストアオペレーションの場合、ユニット選択信号sel10は、真に等しく設定される。反対に、専用NOPオペコードの場合、ユニット選択信号sel10は、偽に等しく設定される。ユニット選択信号sel10は、ANDゲート113によりmmio_valid信号と論理積をとられる。そして結果として得た信号は、MMIO装置へ提供される。結果として、NOP命令の場合、如何なるリード又はライトコマンドも、MMIO装置で実行されない。ライトレジスタインデックスwp00及びwp10は、如何なる結果データrd及びrdもレジスタファイルRF及びRFに書き戻される必要がない場合、仮想レジスタ、所謂ごみ箱レジスタを選択するために用いられ得る。この目的のため、レジスタファイルRF及びRFのインデックス7を有するレジスタは、ごみ箱レジスタとして予約される。
図3を参照すると、機能ユニットLSUはまた、保護されたストアオペレーションを支援する。ここで、第3の引数が、保護gu10として用いられる。条件付きオペレーションを支援する時間定常多重命令ワードプロセッサーはまた、同一出願人により出願された特許文献2(代理人管理番号PHNL030384EPP)に記載されている。保護されたストアオペレーションは、オペレーションコードopcodeの2つの値を介して選択される。保護は、保護イネーブル信号ge10により制御される。オペレーション復号器OPDECは、保護イネーブル信号ge10の値を、保護されたストアオペレーションの場合、真に等しく設定する。それ以外の場合、保護イネーブル信号ge10の値は、偽に設定される。保護イネーブル信号ge10が真に等しい場合、保護信号gu10の値は、レジスタファイルRFから、リードレジスタインデックスrp10により参照されるレジスタから読み出される。保護イネーブル信号ge10が偽に等しい場合、保護信号gu10は、デフォルトで真に設定される。機能ユニットLSUは、NOP命令を更に支援する。こNOP命令は、オペレーションコードopcodeの専用値、つまり3に等しい値を用いて選択され得る。動作中、オペレーション復号器OPDECは、オペレーションコードopcodeを復号する。また、ロード、ストア又は保護オペレーションの場合、ユニット選択信号sel10は、真に等しく設定される。反対に、専用NOPオペコードの場合、ユニット選択信号sel10は、偽に等しく設定される。ユニット選択信号sel10は、ANDゲート115により保護信号gu10と論理積をとられる。結果として得た信号は、ANDゲート113によりmmio_valid信号と論理積をとられる。そして結果として得た信号は、MMIO装置へ提供される。結果として、NOP命令の場合、如何なるリード又はライトコマンドも、MMIO装置で実行されない。ANDゲート115による信号出力はまた、機能ユニットLSUのパイプライン深さに従い、レジスタ119及び121により更に遅延され、そしてANDゲート117により機能ユニットLSUの出力有効信号ov10と論理積をとられる。結果として得た信号は、ANDゲート117により、結果有効信号rvとして出力される。ANDゲート101及び107の出力信号は、ORゲート123により論理和をとられる。ORゲート123は、結果として得た信号を結果有効信号rvとして出力する。結果有効信号rv及びrvは、例えば、1ビット値であって良い。ライト選択インデックスws00及びws10はまた、対応するマルチプレクサMP及びMPにより用いられ、結果有効信号rv又はrvを選択する。結果データチャネルrd又はrdがマルチプレクサMP又はMPにより選択された場合、選択された結果データチャネルに対応する結果有効信号rv又はrvが用いられ、ライトイネーブル信号we又はweを設定し、結果データのレジスタファイルへの書き込みを制御する。マルチプレクサMP又はMPが結果データrdに対応する入力チャネルを選択した場合、結果有効信号rvの値が用いられ、当該マルチプレクサに対応するライトイネーブル信号を設定する。また、結果データrdに対応する入力チャネルが選択された場合、結果有効信号rvの値が用いられ、対応するライトイネーブル信号を設定する。結果有効信号rv又はrvが真の場合、適切なライトイネーブル信号we又はweは、対応するマルチプレクサMP又はMPにより、真に設定される。ライトイネーブル信号we又はweが真に等しい場合、結果データrd又はrdは、それぞれライトデータwd及びwdを介して、レジスタファイルRF又はRFに、当該レジスタファイルに対応するライトレジスタインデックスwp00又はwp10を介して選択されたレジスタに書き込まれる。ライトイネーブル信号we又はweが偽に設定された場合、対応するライト選択インデックスws00又はws10を介して、結果データrd又はrdを対応するレジスタファイルRF又はRFに書き込む入力チャネルが選択され、如何なるデータも当該レジスタファイルに書き込まれない。ライト選択インデックスws00又はws10は、デフォルト入力チャネル125を選択するため、利用され得る。このデフォルト入力チャネル125が、ライト選択インデックスws00又はws10を介して選択された場合、対応するライトイネーブル信号we又はweは、デフォルトで偽に設定される。及び従って、如何なる結果データも、対応するレジスタファイルに書き戻されない。保護信号gu10を用い、結果データの条件付き書き戻しが、時間定常VLIWプロセッサーに対し、許される。保護信号を決定する値は、例えば機能ユニットALUで命令を実行することにより計算される。また、結果はレジスタファイルRFに格納される。機能ユニットLSUで保護されたストアオペレーションを実行し、且つ保護信号gu10が真に等しい場合、ANDゲート113は、真に等しいmmio_valid信号を、MMIO装置へ出力する。そしてストアコマンドは、MMIO装置により実行される。保護信号gu10が偽に等しい場合、ANDゲート113は偽に等しい信号を出力するので、如何なるストアコマンドも、MMIO装置により実行されない。保護信号gu10が偽に等しい場合、結果有効信号rvも偽に設定される。これは、結果データrdのレジスタファイルへの書き戻しが無効であることを意味する。
以下に、図1によるVLIWプロセッサーにより実行されるべき、アセンブリコード形式の小さいプログラムの一部を示す。このプログラムは、命令INS(i)、INS(i+1)及びINS(i+2)を有する。

INS(i){

alu.and(RFO[2],RFO[3]); /* RFのレジスタ2及び3に格納された値を引数として用い、機能ユニットALUで論理ANDを実行する。 */

RF1[1]=alu.op00; /* 機能ユニットALUによる論理ANDオペレーションの結果をRFのレジスタ1に書き込む。 */

lsu.load_0(RF1[5]); /* RFのレジスタ5に格納されたメモリーマップドアドレスに位置するデータを、機能ユニットLSUにより「ロード」する。 */
}

INS(i+l){

alu.sub(RF0[0],RF0[3]); /* 機能ユニットALUにより、RFのレジスタ3の値をRFのレジスタ0の値から減ずる。 */

RF0[6]=alu.op00; /* 機能ユニットALUによる減算結果をRFのレジスタ6に書き込む。 */

lsu.store_0(RF1[4],RFl[5]); /* 機能ユニットLSUにより、RFのレジスタ5に値を、RFのレジスタ4に格納されたメモリーマップドアドレスに格納する。 */

INS(i+2){

RF1[2]=lsu.load_2.op10; /* 機能ユニットLSUによりロードされたデータをRFのレジスタ2に格納する。 */
}
命令を有する時間定常情報は、丸括弧で囲まれ指定され、セミコロンで分離される個々のリソース、例えば個々の機能ユニットのオペコード又は機能ユニットの入力値の選択の情報が存在しないことは、NOPコードがこの個々のリソースのものであることを示す。コンパイラは、オペレーションの各パイプラインステージを明示的にスケジュールするとする。オペレーションのパイプライン番号nは、プログラムの一部では、「_n」、例えばload_0及びload_2により示される。所与の例では、ロード命令(load_1)の第2のパイプラインステージは、現れない。何故なら、如何なる制御情報もこのパイプラインステージに必要なく、如何なる引数も採取されず、結果が生成され、又はこのステージでオペコードが選択されるからである。このプログラムの部分の2進符号化の実施例は、図2に示される。図2では、3個の命令ワードINS(i)、INS(i+1)及びINS(i+2)が2進形式で示される。VLIW命令ワードの第1の命令フィールドは、機能ユニットALU及びMPUを有する発行スロットISのオペレーションコードopcodeを符号化する。第2の命令フィールドは、機能ユニットLSUを有する発行スロットISのオペレーションコードopcodeを符号化する。そして第3及び第4の命令フィールドは、ライト選択インデックスws00及びws10をそれぞれ符号化する。第5及び第6の命令フィールドは、ライトレジスタインデックスwp00及びwp10をそれぞれ符号化する。第7乃至第10の命令フィールドは、リードレジスタインデックスrp00、rp01、rp11及びrp12をそれぞれ符号化する。命令ワードの灰色のフィールドは、NOP情報が符号化されることを示す。NOP命令に関連する制御情報をフェッチ及び実行する時に、ビット変化を最小限に抑えるため、アセンブリコードのプログラムの部分を図2に示された2進符号に翻訳する間、NOP命令に関連した制御情報の場合、対応するフィールドのNOPコードは、前のVLIW命令ワードの対応するフィールドの繰り返しである。例えば、INS(i+2)のリードレジスタインデックスrp00をフィールドを符号化する時のNOPコードの2進符号化は、INS(i+1)の同一フィールドの場合の繰り返しである。そしてINS(i+2)のリードレジスタインデックスrp00、rp01、rp11及びrp12に関連するフィールドも同様に、INS(i+1)の関連するフィールドからの繰り返しである。しかしながら、ライトレジスタインデックスwp00及びwp10を符号化するフィールドでは、NOP命令の実行中に、結果データrd及びrdのレジスタファイルRF及びRFへの書き戻しを無効にするため、専用NOPコードが必要とされる。結果データの書き戻しが無効にされない場合、NOP命令の実行の結果として、VLIWプロセッサーの状態は、変化し得る。つまり、レジスタの内容は、非意図的に変化し得る。従って、NOP命令の場合、ライトレジスタインデックスwp00及びwp10を符号化するフィールドは、ごみ箱レジスタ、つまり例えばINS(i+2)のライトレジスタインデックスwp00に関連し及びINS(i+1)のライトレジスタインデックスwp10に関連するフィールドに示されるようにレジスタファイルの仮想レジスタを参照する値「111」を用いて符号化される。更に、機能ユニットLSUを有する発行スロットISのオペレーションコードopcodeを符号化するフィールドでは、NOP命令の場合、VLIWプロセッサーの状態変化を防ぐため、専用NOPコードも必要とされる。例えば、ロードオペレーションは、FIFOバッファからデータを抽出及び削除することによりプロセッサーのI/Oに用いられ得る、FIFOバッファの内容を変化する。ロードオペレーションはまた、非意図的なロードが結果としてキャッシュミスを生じる場合、データのブロックの非意図的なフェッチを生じることにより、存在し得るデータキャッシュの内容を変化し得る。従って、NOP命令の場合、機能ユニットLSUを有する発行スロットISのオペレーションコードopcodeを符号化するフィールドは、INS(i+2)のオペコードフィールドISに関連するフィールドに示された例では、専用NOPオペコード、つまり値3を用いて符号化される。機能ユニットALU及びMPUを有する発行スロットISは、NOPオペコードを符号化するために専用NOPコードを必要としない。何故なら、前の命令ワードの符号化を繰り返す場合、VLIWプロセッサーの状態変化の危険は存在しないからである。従って、INS(i+2)のオペコードフィールドISに関連するフィールドでは、NOPオペコードは、INS(i+1)の関連するフィールドのオペコードの繰り返しである。
以下に、図3によるVLIWプロセッサーにより実行されるべき、アセンブリコード形式の小さいプログラムの一部を示す。このプログラムは、命令INS(i)、INS(i+1)及びINS(i+2)を有する。

INS(i){

alu.and(RF0[2],RF0[3]); /* RFのレジスタ2及び3を引数として用い機能ユニットALUで論理ANDを実行する。 */

RF1[1]=alu.op00; /* 機能ユニットALUによる論理ANDオペレーションの結果をRFのレジスタ1に書き込む。 */

lsu.load_0(RF1[5]); /* 機能ユニットLSUにより、RFのレジスタ5に格納されたメモリーマップドアドレスに位置するデータを「ロード」する。 */
}

INS(i+1){

alu.sub(RF0[0],RF0[3]); /* RFのレジスタ0の値から、RFのレジスタ3の値を減ずる。 */

RF0[6]=alu.op00; /* 機能ユニットALUによる減算の結果を、RFのレジスタ6に書き込む。 */

if(RF1[7])
lsu.store_0(RF1[4],RF1[5]); /* RFのレジスタ7の値が、ゼロでない場合、機能ユニットLSUにより、RFのレジスタ5の値を、RFのレジスタ4に格納されたメモリーマップドアドレスに格納する。 */
}

INS(i+2){

RFl[2]=lsu.load_2.op10; /* 機能ユニットLSUによりロードされたデータを、RFのレジスタ2に格納する。 */
}
個々のリソース、例えば個々の機能ユニットのオペコード又は機能ユニットの入力値の選択の情報が存在しないことは、NOPコードがこの個々のリソースのものであることを示す。コンパイラは、明示的なオペレーションの各パイプラインステージをスケジュールし、異なるオペレーションの間に生じ得る如何なるリソースの衝突も防ぐとする。またオペレーションのパイプライン番号nは、プログラムの部分では、「_n」というポストフィックスにより示される。このプログラムの部分の2進符号化の例は、図4に示される。図4では、3個の命令ワードINS(i)、INS(i+1)及びINS(i+2)が2進形式で示される。命令ワードの第1の命令フィールドは、機能ユニットALU及びMPUを有する発行スロットISのオペレーションコードopcodeを符号化する。第2の命令フィールドは、機能ユニットLSUを有する発行スロットISのオペレーションコードopcodeを符号化する。そして第3及び第4の命令フィールドは、ライト選択インデックスws00及びws10をそれぞれ符号化する。第5及び第6の命令フィールドは、ライトレジスタインデックスwp00及びwp10をそれぞれ符号化する。第7乃至第10の命令フィールドは、リードレジスタインデックスrp00、rp01、rp10、rp11及びrp12をそれぞれ符号化する。命令ワードの灰色のフィールドは、NOP情報が符号化されることを示す。NOP命令に関連する制御情報を実行する時に、ビット変化を最小限に抑えるため、アセンブリコードのプログラムの部分を図3に示された2進符号に翻訳する間、NOP命令に関連した制御情報の場合、対応するフィールドのNOPコードは、前のVLIW命令ワードの対応するフィールドの繰り返しである。例えば、INS(i+1)のライトレジスタインデックスwp10を符号化するフィールド内のNOPコードの2進符号化は、INS(i)の同一フィールドの場合の繰り返しである。また、INS(i+2)のリードレジスタインデックスrp00、rp01、rp10、rp11及びrp12と関連するフィールドは、全て、INS(i+1)の対応するフィールドからの繰り返しである。しかしながら、ライト選択インデックスws00及びws10を符号化するフィールドでは、NOP命令の実行中に、結果データrd及びrdのレジスタファイルRF及びRFへの書き戻しを無効にするため、専用NOPコードが必要とされる。結果データの書き戻しが無効にされない場合、NOP命令の実行の結果として、VLIWプロセッサーの状態は、変化し得る。従って、NOP命令の場合、ライト選択インデックスws00及びws10を符号化するフィールドは、デフォルトでライトイネーブル信号we及びweを偽に設定する、入力チャネル125を参照する値「11」を用いて符号化される。例えば、INS(i+2)のライトレジスタインデックスws00に関連するフィールド及びINS(i+1)のライトレジスタインデックスws10に関連するフィールドを参照する。更に、機能ユニットLSUを有する発行スロットISのオペレーションコードopcodeを符号化するフィールドでは、NOP命令の場合、VLIWプロセッサーの状態変化を防ぐため、専用NOPコードも必要とされる。従って、INS(i+2)の発行スロットISのオペレーションコードopcodeを符号化するフィールドは、専用NOPオペコード、つまり値3を用い符号化される。機能ユニットALUは、専用NOPコードを必要としない。またINS(i+2)では、NOPオペコードは、INS(i+1)の対応するフィールドのオペコードの繰り返しである。
図2乃至図4を参照すると、制御情報に関連するNOP命令を実行する場合、ビット変化の数は最小限に抑えられる。結果として、対応するプロセッサー内のより多くの組み合わせ論理は、前の及び後の周期と同一の値を伝達する。従ってデータ遷移のリップル、及び従って、不要な電力消費は低減する。
代案の実施例では、NOP命令に関連する制御情報を符号化する場合、対応するフィールドのNOPコードは、次の命令ワードの対応フィールドの繰り返しである。例えば、図2を参照すると、この場合、INS(i+2)のリードレジスタインデックスrp12を符号化するフィールド内のNOPコードの2進符号化は、INS(i+1)の同一フィールドの場合の繰り返しである。つまり、図2に示されるように、値「000」の代わりに値「101」である。
コンパイルされた又は手動で書かれたアセンブリ言語プログラムを2進プログラムコードへ翻訳する間、アセンブラは、現在翻訳されている多重命令ワードの前及び/又は後に続く多重命令ワードを把握する。現在の命令を翻訳する間、NOPコードが現在の命令の所与のフィールドのために符号化されなければならない場合はいつでも、アセンブラは、前又は後に続く多重命令ワードのフィールドのために符号化された対応する値を繰り返し得る。代案として、より深いパイプラインを有する発行スロットでは、隣接する多重命令ワードの対応するフィールドのために符号化された値を繰り返す代わりに、専用NOPオペコード値が符号化され得る。特に、より深いパイプラインを有する発行スロットの場合、専用NOPオペコードは、パイプラインステージのクロックゲーティングを制御するために用いられ、シーケンシャルロジック内で電力を節約し、及び同時にデータゲーティングを得る。代案として、パイプラインを有さない又は深くないパイプラインを有する発行スロットでは、隣接する多重命令ワードの対応するフィールドのために符号化された値を繰り返すことにより、NOPコードが符号化され得る。更に別の代案の実施例では、NOPコードの符号化は、現在の多重命令ワードの翻訳を実際に実行する間、前又は後に続く可能性の最も高い多重命令ワードの対応するフィールドのために符号化された値を繰り返すことにより行われ得る。前又は後に続く可能性の最も高い命令は、例えば、プロファイル情報から引き出され得る。
別の実施例では、通信ネットワークCNは、部分接続通信ネットワークであって良い。つまり、各発行スロットIS及びISが全てのレジスタファイルRF及びRFに結合されていない。多数の発行スロットの場合、完全接続通信ネットワークのオーバーヘッドは、シリコン面積、遅延及び電力消費の観点からかなり大きい。VLIWプロセッサーの設計中に、一連の実行されるべきアプリケーションに応じて、どの程度、機能ユニットがレジスタファイルと結合されるかが決定される。
別の実施例では、プロセッサーは、レジスタファイルRF及びRFを有する分散レジスタファイルの代わりに、単一のレジスタファイルを有する。VLIWプロセッサーの発行スロットの数が比較的小さい場合、単一のレジスタファイルのオーバーヘッドも比較的小さい。
別の実施例では、VLIWプロセッサーは、異なる数の発行スロットを有して良い。及び/又は発行スロットは、異なる数の機能ユニットを有して良い。機能ユニットの数は、特に、VLIWプロセッサーが実行するアプリケーションの種類に依存する。プロセッサーはまた、前記発行スロットと接続された、異なる数のレジスタファイルを有して良い。
別の実施例では、発行スロットIS及びISは、発行スロットが実行すべきオペレーション、つまり2つより多いオペランドを必要とし及び/又は1つより多い結果を生成するオペレーションの種類に依存して、異なる数の入力及び/又は出力ポートを有して良い。レジスタファイルRF及びRFはまた、異なる数のリード及び/又はライトポートを有して良い。
留意すべき点は、以上に説明された実施例は、本発明を制限するものではないことである。当業者は、請求の範囲から逸脱することなく、多くの代替の実施例を考案できるだろう。請求項では、括弧内の如何なる参照符号も、請求項を制限すると見なされるべきではない。「有する」の表現は、請求項に記載された以外の構成要素又は段階の存在を排除するものではない。要素に付される単数表記の語は、当該要素の複数の存在を排除するものではない。複数の手段を列挙した装置の請求項では、これら複数の手段は、1つ及び同一のハードウェア要素により実施され得る。特定の手段が相互に異なる従属請求項で引用されることは、これら手段の組み合わせが効果的に利用できないことを示すものではない。
本発明による第1のVLIWプロセッサーのブロック図である。 第1のVLIWプロセッサーにより実行され得る多重命令ワードセットを示す。 本発明による第2のVLIWプロセッサーのブロック図である。 第2のVLIWプロセッサーにより実行され得る多重命令ワードセットを示す。

Claims (7)

  1. 複数の命令を並列に実行するよう構成さ時間定常多重命令ワードを処理する装置を用いたデータ処理方法であって、前記方法は:
    時間定常多重命令ワードプログラム(INS(i),INS(i+1),INS(i+2))を生成する段階であって、各多重命令ワードは複数の命令フィールドを含み、各命令フィールドは前記処理装置の対応するリソースの制御情報を符号化し、並びに、ノーオペレーション命令に関連する命令フィールド及び隣接する多重命令ワードの対応する命令フィールドの間のビット変化は、前記命令フィールドに関連する前記制御情報が前記処理装置の状態変化を生じさせない場合に、前記隣接する多重命令ワードの命令フィールドを符号化する値を繰り返すことによって最小限に抑えられ前記隣接する多重命令ワードは、プログラムの実行から得られ前記時間定常多重命令ワードプログラムの実行中にどの命令が前記ノーオペレーション命令に関連する命令フィールドを含む多重命令ワードに先行しまたは後に続く可能性が最も高いかを示すプロファイル情報から引き出される命令ワードである、段階;
    入力データをレジスタファイル(RF,RF)に格納する段階;
    前記生成された時間定常多重命令ワードプログラムから引き出された制御情報に基づき、前記レジスタファイルから読み出した前記格納された入力データを処理する段階;
    前記入力データの処理中において、デフォルト入力チャネル(125)が選択されることを示すライト選択インデックス(ws 00 、ws 10 )を有し、対応するライトイネーブル信号(we 、we を偽に設定する命令を実行することによって、あるいは、仮想レジスタを参照するライトレジスタインデックスフィールド(wp 00 、wp 10 )を有する命令を実行することによって前記レジスタファイルへの結果データの書き戻しを無効にする段階、
    を有する、データ処理方法。
  2. 前記複数の命令を並列に実行するよう構成された複数の発行スロット(IS,IS);
    前記レジスタファイル(RF、RF)は、前記複数の発行スロットによりアクセス可能であり、
    前記複数の発行スロット及び前記レジスタファイルを結合する通信ネットワーク(CN);
    前記生成された時間定常多重命令ワードプログラムから引き出された制御情報に基づき、前記処理装置を制御するよう構成された制御部(SEQ,OPDEC,OPDEC
    を備えた、請求項1記載のデータ処理方法を実行するよう構成された処理装置。
  3. 前記レジスタファイルは、分散レジスタファイルであることを特徴とする、請求項2記載の処理装置。
  4. 前記通信ネットワークは、部分接続通信ネットワークであることを特徴とする、請求項2記載の処理装置。
  5. 前記処理装置は、時間定常超長命令語プロセッサーであることを特徴とする、請求項2記載の処理装置。
  6. 2進プログラムコード形式の時間定常多重命令ワードプログラム(INS(i),INS(i+1),INS(i+2))を、対応するアセンブリ言語形式多重命令ワードセットから生成する方法であって、各多重命令ワードは、複数の命令フィールドを含み、並びに前記時間定常多重命令ワードプログラム、複数の発行スロット(IS,IS)、及び前記複数の発行スロットと結合されたレジスタファイル(RF,RF)を有する時間定常処理装置により実行され、前記方法は:
    前記時間定常多重命令ワードプログラムを実行し該プログラムの実行中にどの命令が所与の命令に先行しまたは後に続く可能性が最も高いかを示すプロファイル情報を得ることによって、前記時間定常多重命令ワードプログラムを通じて順序付ける段階、
    同一の命令フィールドに対し、命令からノーオペレーション命令への変化があるか否かを決定する段階、
    前記命令フィールドに関連する制御情報が前記処理装置の状態変化を生じさせない場合に、ノーオペレーション命令関連した命令フィールド及び隣接する多重命令ワードの対応する命令フィールドの間のビット変化を、前記隣接する多重命令ワードの命令フィールドを符号化する値を繰り返すことによって最小限に抑える段階であって、前記隣接する多重命令ワードは、前記プロファイル情報に従って、前記時間定常多重命令ワードプログラムの実行中に、前記ノーオペレーション命令に先行しまたは後に続く可能性が最も高い、段階、
    前記2進プログラムコード形式の命令を実行している間結果データの前記レジスタファイルへの書き戻しを無効にするために、仮想レジスタを示すライトレジスタインデックスフィールド(wp 00 、wp 10 )を前記命令に挿入し、あるいは、前記入力データの処理中にライトイネーブル信号(we 、we )を偽に設定する効果を有するデフォルト入力チャネル(125)が選択されることを示すライト選択インデックス(ws 00 、ws 10 )を前記命令に挿入する段階、を有する、方法。
  7. 2進プログラムコード形式の時間定常多重命令ワードプログラム(INS(i),INS(i+1),INS(i+2))を、対応するアセンブリ言語形式の多重命令ワードセットから生成するコンパイラプログラムであって、各多重命令ワードは、複数の命令フィールドを含み、並びに前記時間定常多重命令ワードプログラムは、複数の発行スロット(IS ,IS )、及び前記複数の発行スロットと結合されたレジスタファイル(RF ,RF )を有する時間定常処理装置により実行され、前記プログラムは:
    前記時間定常多重命令ワードプログラムを実行し該プログラムの実行中にどの命令が所与の命令に先行しまたは後に続く可能性が最も高いかを示すプロファイル情報を得ることによって、前記時間定常多重命令ワードプログラムを通じて順序付ける段階、
    同一の命令フィールドに対し、命令からノーオペレーション命令への変化があるか否かを決定する段階、
    前記命令フィールドに関連する制御情報が前記処理装置の状態変化を生じさせない場合に、ノーオペレーション命令に関連した命令フィールド及び隣接する多重命令ワードの対応する命令フィールドの間のビット変化を、前記隣接する多重命令ワードの命令フィールドを符号化する値を繰り返すことによって最小限に抑える段階であって、前記隣接する多重命令ワードは、前記プロファイル情報に従って、前記時間定常多重命令ワードプログラムの実行中に、前記ノーオペレーション命令に先行しまたは後に続く可能性が最も高い、段階、
    前記2進プログラムコード形式の命令を実行している間、結果データの前記レジスタファイルへの書き戻しを無効にするために、仮想レジスタを示すライトレジスタインデックスフィールド(wp 00 、wp 10 )を前記命令に挿入し、あるいは、前記入力データの処理中にライトイネーブル信号(we 、we )を偽に設定する効果を有するデフォルト入力チャネル(125)が選択されることを示すライト選択インデックス(ws 00 、ws 10 )を前記命令に挿入する段階、をコンピュータに実行させる、コンパイラプログラム。
JP2007512674A 2004-05-13 2005-05-09 データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム Expired - Fee Related JP5122277B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP04102104 2004-05-13
EP04102104.9 2004-05-13
PCT/IB2005/051491 WO2005111792A2 (en) 2004-05-13 2005-05-09 Lower power vltw

Publications (2)

Publication Number Publication Date
JP2007537528A JP2007537528A (ja) 2007-12-20
JP5122277B2 true JP5122277B2 (ja) 2013-01-16

Family

ID=34967368

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007512674A Expired - Fee Related JP5122277B2 (ja) 2004-05-13 2005-05-09 データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム

Country Status (5)

Country Link
US (1) US9201657B2 (ja)
EP (1) EP1754143A2 (ja)
JP (1) JP5122277B2 (ja)
CN (1) CN101124539A (ja)
WO (1) WO2005111792A2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681822B (zh) 2011-03-17 2016-06-15 中兴通讯股份有限公司 一种处理器地址缓冲管理的实现装置及方法
CN102681821B (zh) * 2011-12-31 2014-07-30 浙江大学 基于C-SKY v2指令集的二进制工具集设计方法
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2815236B2 (ja) * 1993-12-15 1998-10-27 シリコン・グラフィックス・インコーポレーテッド スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
DE69838374T2 (de) * 1997-12-23 2008-05-29 Texas Instruments Inc., Dallas Prozessor und Verfahren zum Verringern von dessen Energieverbrauch
JP2000020309A (ja) * 1998-06-30 2000-01-21 Toshiba Microelectronics Corp デジタルシグナルプロセッサ
US6535984B1 (en) * 1998-11-25 2003-03-18 Texas Instruments Incorporated Power reduction for multiple-instruction-word processors with proxy NOP instructions
JP3211791B2 (ja) * 1998-12-22 2001-09-25 日本電気株式会社 ループ処理方式
JP2001005675A (ja) * 1999-06-21 2001-01-12 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
GB2378538A (en) * 2001-08-10 2003-02-12 At & T Lab Cambridge Ltd Saving power in a pipelined processor/memory system by replacing discarded instructions following a branch by a duplicate of the branch instruction
WO2004092950A2 (en) * 2003-04-16 2004-10-28 Koninklijke Philips Electronics N.V. Support for conditional operations in time-stationary processors

Also Published As

Publication number Publication date
US9201657B2 (en) 2015-12-01
JP2007537528A (ja) 2007-12-20
WO2005111792A3 (en) 2007-08-16
WO2005111792A2 (en) 2005-11-24
EP1754143A2 (en) 2007-02-21
US20100153691A1 (en) 2010-06-17
CN101124539A (zh) 2008-02-13

Similar Documents

Publication Publication Date Title
US6826674B1 (en) Program product and data processor
US20140372994A1 (en) Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7313671B2 (en) Processing apparatus, processing method and compiler
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
EP3295299A1 (en) Decoding information about a group of instructions including a size of the group of instructions
JP5122277B2 (ja) データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム
JP5989293B2 (ja) 多重命令語処理装置におけるフィードバック接続の実行時間選択
JP4828409B2 (ja) タイムステーショナリプロセッサにおける条件動作のためのサポート
JP5068529B2 (ja) 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
Song Demystifying epic and ia-64
WO2005036384A2 (en) Instruction encoding for vliw processors

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20071024

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080502

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20110419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120518

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120820

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120827

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120906

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: 20120928

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: 20121024

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

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5122277

Country of ref document: JP

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