(57)【要約】本発明は、それぞれが１つの演算を実行する複数の機能ユニット（１１０，１３０，１３５）と、上記機能ユニット（１１０，１３０，１３５）のそれぞれに対して接続され且つ上記機能ユニット（１１０，１３０，１３５）を制御するようになっているＶＬＩＷコントローラ（１００）とを備えている超長命令語（ＶＬＩＷ）プロセッサに関する。ＶＬＩＷプロセッサは、上記機能ユニットのうちの１つ（１３５）に関連付けられ且つ上記１つの機能ユニット（１３５）がアイドル状態か或いは動作状態かを登録してＶＬＩＷコントローラ（１００）に対して指示するようになっている少なくとも１つの指示手段（１４０）を備えている。
2006512656.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが１つの演算を実行する複数の機能ユニットと、前記機能ユニットのそれぞれに対して接続され且つ前記機能ユニットを制御するようになっているＶＬＩＷコントローラとを備えているＶＬＩＷプロセッサにおいて、
前記機能ユニットのうちの１つに関連付けられ且つ前記１つの機能ユニットがアイドル状態か或いは動作状態かを登録して前記ＶＬＩＷコントローラに対して指示するようになっている少なくとも１つの指示手段を備えている、ＶＬＩＷプロセッサ。
【請求項２】
前記指示手段は、前記１つの機能ユニットがその演算を実行するためのデータを受信したかどうか及び前記１つの機能ユニットがその演算の実行後にデータを出力したかどうかを登録するようになっている、請求項１に記載のＶＬＩＷプロセッサ。
【請求項３】
前記指示手段は、データを前記１つの機能ユニットに対して入力するための入力レジスタと、前記１つの機能ユニットから出力されるデータを受信するための出力レジスタとを備え、前記入力レジスタおよび前記出力レジスタはそれぞれ、各レジスタ内におけるデータの存在または不存在を示す存在ビットを含んでいる、請求項２に記載のＶＬＩＷプロセッサ。
【請求項４】
前記入力レジスタは、データが前記入力レジスタ内に存在する場合に、前記１つの機能ユニットによる演算の実行を引き起こすようになっている、請求項３に記載のＶＬＩＷプロセッサ。
【請求項５】
前記指示手段は、複数の前記入力レジスタを有する入力レジスタファイルと、複数の前記出力レジスタを有する出力レジスタファイルとを備えている、請求項３に記載のＶＬＩＷプロセッサ。
【請求項６】
前記入力レジスタファイルは、所定数の入力レジスタがデータを含んでいる場合に、前記１つの機能ユニットによる演算の実行を引き起こすようになっている、請求項５に記載のＶＬＩＷプロセッサ。
【請求項７】
前記１つの機能ユニットによって繰り返し使用されるデータを記憶するための一時レジスタを備え、前記一時レジスタが前記１つの機能ユニットに対して接続されている、請求項２または３に記載のＶＬＩＷプロセッサ。
【請求項８】
前記出力レジスタファイルは、所定数の出力レジスタがデータを含んでいる場合に、第２の機能ユニットによる演算の実行を引き起こすようになっている、請求項５に記載のＶＬＩＷプロセッサ。
【請求項９】
前記１つの機能ユニットが可変長待ち時間を有している、請求項１から８のいずれか一項に記載のＶＬＩＷプロセッサ。
【請求項１０】
１つの機能ユニットの待ち時間は、この機能ユニットによって処理されるデータによって決まる、請求項１から９のいずれか一項に記載のＶＬＩＷプロセッサ。
【請求項１１】
ＶＬＩＷプロセッサ内でデータを処理する方法であって、
１つの機能ユニットがアイドル状態か或いは動作状態かどうかを登録する登録ステップと、
前記機能ユニットがアイドル状態か或いは動作状態かどうかを前記ＶＬＩＷコントローラに指示するステップと、
を含む方法。
【請求項１２】
前記登録ステップは、前記１つの機能ユニットがその演算を実行するためのデータを受信したかどうかを登録するステップと、前記１つの機能ユニットがその演算の実行後にデータを出力したかどうかを登録するステップとを含んでいる、請求項１１に記載の方法。
【請求項１３】
前記機能ユニットがデータを受信することを前記ＶＬＩＷコントローラに対して指示するステップと、
前記機能ユニットがデータを出力することを前記ＶＬＩＷコントローラに対して指示するステップと、
を含んでいる、請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、添付の請求項１の前置き部分に係る超長命令語プロセッサ（ＶＬＩＷ）プロセッサに関する。
【背景技術】
【０００２】
ＶＬＩＷプロセッサは、スーパーコンピュータからワークステーションおよびパーソナルコンピュータにわたる様々な用途で使用される場合がある。これらのＶＬＩＷプロセッサは、ワークステーション、パーソナルコンピュータ、ビデオまたはオーディオ消費者製品においては、専用プロセッサとして或いはプログラマブルプロセッサとして使用される場合がある。ＶＬＩＷプロセッサは特定用途向けプロセッサであっても良い。すなわち、ＶＬＩＷプロセッサは、これらの用途の性能を高めるために特定の用途を処理するように形成されていても良い。この目的のため、ＶＬＩＷプロセッサ内には特定の機能ユニットが組み込まれる。各機能ユニットは、処理される用途に応じて特定の演算（操作）を処理するように形成されている。ＶＬＩＷコントローラは、機能ユニットの操作（演算）シーケンスを制御するために、これらの機能ユニットのそれぞれに対して接続されている。ＶＬＩＷコントローラは、機能ユニットによって行なわれる演算（操作）を発行しなければならない。ＶＬＩＷプロセッサによって実行される命令の組は、スケジューリングされた演算を含んでいる。
【０００３】
機能ユニットが演算を実行している間、機能ユニットがパイプラインされていない場合には、上記機能ユニット上で更なる演算をスケジューリングすることができない。新たな演算は、機能ユニットがパイプラインされる場合の機能ユニットの開始インターバルに対応する所定数のサイクル後に、コンパイラによりスケジューリングすることができる。機能ユニットが処理を終了した後、処理結果を更に処理してＶＬＩＷプロセッサから出力しなければならない。命令の組を生成するコンパイラは、機能ユニットの演算をスケジューリングするために、コンパイル時間において機能ユニットの開始インターバルおよび待ち時間を知っている必要がある。機能ユニットの開始インターバルは時間間隔であり、この時間間隔後にそれに基づいて新たな演算を開始できる。機能ユニットの待ち時間は、機能ユニットがその演算を実行するために要する時間である。機能ユニット上にマッピングされる演算は、時として、１０〜１０００クロックサイクル程度の待ち時間を有している。また、機能ユニットの待ち時間が変動する場合もある。従来においては、コンパイル時間で演算の待ち時間を決定するための技術が使用されている。しかしながら、入力データに依存する待ち時間をコンパイル時間で計算することはできない。既に、これらの演算は、最悪の場合の開始インターバルおよび待ち時間を想定してスケジューリングされてしまっている。最悪の場合の開始インターバルは、出力の到達順序を変更することなくその後にその機能ユニットにおいて新たな演算を開始できる最小時間間隔である。最悪の場合の待ち時間は、機能ユニットがその演算を実行するための最大時間である。
【０００４】
ＶＬＩＷプロセッサ内で機能ユニットの演算をスケジューリングするために最悪の場合の待ち時間を使用すると、幾つかの欠点が生じる。他の発行スロットを満たすと同時に大きな決定ツリーをスケジューリングする必要があり、あるいは、コンパイラがスケジュール中に操作不能（無演算命令）を導入しなければならない。スケジュールが粗悪であると、アプリケーション処理の性能が悪化するとともに、電力消費量が大きくなってしまう。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、ＶＬＩＷプロセッサの性能を向上させ且つ電力消費量を改善することである。
【課題を解決するための手段】
【０００６】
この目的は、請求項１および請求項１１にそれぞれ記載されたＶＬＩＷプロセッサおよび処理方法によって達成される。
【０００７】
したがって、１つの機能ユニットに関連付けられる指示手段が設けられる。指示手段は、データに依存する可変待ち時間を有する機能ユニットに関連付けられることが好ましい。指示手段は、機能ユニットがアイドル状態か或いは動作状態かどうかを登録するようになっている。これは、ＶＬＩＷコントローラに対して指示される。したがって、操作を発するためにコンパイル時間に待ち時間を予測する必要がない。動作（演算）中、機能ユニットの状態がＶＬＩＷコントローラに対して報告される。機能ユニットがその演算を終了した場合には、ＶＬＩＷコントローラは、直ちに、機能ユニットに対して更なる操作を発することができる。そのため、操作不能を避けることができる。アプリケーションの速度が高められる。
【０００８】
本発明に係るＶＬＩＷプロセッサは、可変長待ち時間（ｖａｒｉａｂｌｅ  ｌｏｎｇ  ｌａｔｅｎｃｙ）を有する幾つかの機能ユニットを備えていても良い。可変長待ち時間を有する各機能ユニットは、前の段落で説明したように、機能ユニットの状態をＶＬＩＷコントローラに対して報告する指示手段に関連付けられても良い。
【０００９】
ＶＬＩＷプロセッサが機能ユニットに関する操作中に更なる操作を行なう必要がない場合には、プロセッサの残りの機能ユニットが休止しても良い。したがって、電力消費量を更に減少させることができる。長い待ち時間演算においてＶＬＩＷをプロセッサストール状態にしても良く、あるいは、他の発行スロットで有用な操作を発することができるかどうかに応じてプロセッサの一部だけがストールされても良い。
【００１０】
指示手段は、上記１つの機能ユニットがその演算を実行するためのデータを受信したかどうか及び上記１つの機能ユニットがその演算の実行後にデータを出力したかどうかを登録するようになっていることが好ましい。これは、機能ユニットが動作しているか否かを決定する非常に簡単で且つ効果的な方法である。機能ユニットが処理されるデータを受信するといつでも、機能ユニットは、アイドル状態からビジー状態へと変化する。演算の終了は、宛先レジスタへの演算結果の書き込みにより明らかにされる。したがって、機能ユニットの状態は、データの入力及び／又は出力を監視することにより決定されても良い。
【００１１】
上記指示手段は、データを上記１つの機能ユニットに対して入力するための入力レジスタと、上記１つの機能ユニットから出力されるデータを受信するための出力レジスタとを備えていても良い。上記入力レジスタおよび上記出力レジスタはそれぞれ、各レジスタ内におけるデータの存在または不存在を示す存在ビットを含んでいる。最初に、入力レジスタおよび出力レジスタが空の状態に設定される。データがレジスタのうちの１つに書き込まれるたびに、存在ビットはデータの存在を示す。レジスタのうちの１つからデータが出力されると常に、存在ビットはデータの不存在を示す。一組の入力レジスタの存在ビットは、機能ユニットが演算を始めることができることを示す。出力レジスタにおけるデータのその後の表示は、演算の終了を示す。１つの記憶操作は、データおよび同期情報の両方を読み取ることができる。同期情報を決定するために別個のハードウェア装置を設ける必要はない。存在ビットは、たった１ビット／ワードのハードウェアオーバーヘッドに相当する。
【００１２】
入力レジスタは、入力レジスタ内におけるデータの存在に応じて、上記１つの機能ユニットによる演算の実行を引き起こす（トリガする）ようになっていることが好ましい。入力レジスタは、データが利用可能になると演算を開始する。ＶＬＩＷコントローラは、機能ユニットの演算を個別に引き起こす（トリガする）ことから解放される。レジスタへのデータの入力と同時に、機能ユニットは、処理されるデータを受けるとともに、利用可能な時に直ちにデータの処理を開始する。また、機能ユニットが複数の機能／命令を実行できる場合、ＶＬＩＷプロセッサは、入力データが利用可能となる前であっても、上記機能／命令を設定するための特別なコマンドを発することができる。このことは、入力／出力時間形状がコマンドによって決まることを意味している。
【００１３】
指示手段は、複数の上記入力レジスタを有する入力レジスタファイルと、複数の上記出力レジスタを有する出力レジスタファイルとを備えていても良い。各入力レジスタおよび各出力レジスタは存在ビットを含んでいる。全組のワードを入力レジスタファイルに対して供給することができる。そのため、ＶＬＩＷコントローラは、機能ユニットが１つの入力レジスタ内に含まれるデータワードを処理した際に、新たなデ−タを与える必要はない。機能ユニットは、全てのデータが入力レジスタファイル内に到達する時に演算を実行しても良く、あるいは、計算の一部を始めるための十分な数の入力が存在する時に実行を開始することができる。機能ユニットのトリガは、データの存在を示す入力レジスタの存在ビットの数に適切に依存していても良い。レジスタファイルは、−  Ｂ．  Ｍｅｓｍａｎ：ＤＳＰコード生成のための強制解析、博士号論文、アイントホーフェン工科大学、オランダ、２００１年５月  −  によって開示されるように、ＦＩＦＯ（先入れ先出し）またはスタックまたはそれらの組み合わせであっても良い。データが入力および出力レジスタファイルに対して供給され且つ入力および出力レジスタファイルから供給される順番は、−  Ｃ．  Ａｌｂａ  Ｐｉｎｔｏ：埋め込みプロセッサコンパイラのための記憶強制満足度、博士号論文、アイントホーフェン工科大学、オランダ、２００２年６月  −  によって開示されるようなアクセス順序付け方法によって規定されても良い。結果として、ＶＬＩＷコントローラは、機能ユニットを制御するための制御ビットを殆ど必要としない。
【００１４】
機能ユニットによって同じ入力データを数回使用しなければならない場合には、ＶＬＩＷプロセッサに一時レジスタが設けられても良い。一時レジスタは、上記１つの機能ユニットによって繰り返し使用されるデータを記憶するために、機能ユニットに接続されている。また、通常のレジスタファイルが一時レジスタとして使用されても良い。
【００１５】
上記１つの機能ユニットから出力されるデータに対して演算を実行するようになっている第２の機能ユニットをＶＬＩＷプロセッサが備えている場合、指示手段は、上記１つの機能ユニットがデータを出力しているかどうかを示すために、第２の機能ユニットに対して接続されていても良い。これにより、指示手段に関連付けられた機能ユニットから必要なデータが出力される場合には、第２の機能ユニットの演算（動作）が指示手段によって引き起こされる（トリガされる）。第２の機能ユニットの制御が指示手段によって行なわれても良い。結果として、ＶＬＩＷコントローラは、第２の機能ユニットをトリガする仕事（タスク）から解放される。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照しながら、本発明の一実施形態について説明する。
【００１７】
図１は、本発明の実施形態に係るＶＬＩＷプロセッサを示している。ＶＬＩＷプロセッサは、多数の機能ユニット１１０，１３０，１３５に接続されたＶＬＩＷコントローラ１００を備えている。ＶＬＩＷコントローラ１００は、特に、機能ユニット１１０，１３０，１３５の操作を行なう。機能ユニット間のデータ転送を容易にするため、相互接続ネットワーク１２０は、機能ユニット１１０，１３０，１３５同士を直接に接続する。グローバルレジスタファイル１６０は、機能ユニット１１０，１３０，１３５によって生成される値を記憶する。グローバルレジスタファイルの目的は、機能ユニット１１０，１３０，１３５のうちの１つによって生成されるデータの通信方法を他の機能ユニット１１０，１３０，１３５に対して与えることである。参照符号１１０は、標準的なＶＬＩＷ機能ユニットを示している。ユニット１１０は、標準的な算術論理演算ユニット（ＡＬＵ）、コンスタントジェネレーティングユニット（ＣＯＮＳＴ）、データ用のメモリユニット（ＭＥＭ）、命令メモリ（ＩＮＳＴＲ  ＭＥＭ）を含んでいても良い。これらのユニットは、多数の用途で使用されても良い。
【００１８】
機能ユニット１３０，１３５は特定用途向けユニット（ＡＳＵ）である。これらの機能ユニットは、特定の用途に適合する特有の演算を行なうようになっている。そのような用途の一例は、−  Ｋｌｅｉｈｏｒｓｔ  Ｒ．  Ｐ．およびＲ．  Ｊ．  ｖａｎ  ｄｅｒ  Ｖｌｅｕｔｅｎ、ハイブリッドビデオコーダのためのＤＣＴ−領域埋め込みメモリ圧縮、ＶＬＳＩ信号処理システムの機関紙、第２４巻、３１〜４１頁、２０００年−  に記載されるような、埋め込み圧縮を伴うハイブリッドエンコーダである。そのような用途は、データ変換のための離散コサイン変換（ＤＣＴ）、データ逆変換のための離散逆コサイン変換（ＩＤＣＴ）、ＤＣＴ係数のビットプレーンエンコーディングおよびデコーディングによってビットプレーンを行なうためのエンコーダユニットおよびデコーダユニット（ＥＮＣおよびＤＥＣ）等の多数のＡＳＵを必要とする。ＥＮＣユニットおよびＤＥＣユニットは、入力データに応じて６４〜１２８クロックサイクルの処理時間を有することが可能である。参照符号１３５は、可変長待ち時間動作を有するＡＳＵを示している。
【００１９】
ＡＳＵ１３５の演算スケジュールを行なうため、インジケータ手段１４０が設けられている。インジケータ手段１４０はＡＳＵ１３５の状態を検出する。ＡＳＵが演算を実行している場合、インジケータ手段１４０は、ホールド制御ユニット１５０に対して信号を送信する。この直後に、ユニット１５０は、ＶＬＩＷコントローラ１００に対して送られるホールド信号（保留信号）を生成する。ＶＬＩＷコントローラ１００は、ホールド信号が受信されている限り、ＶＬＩＷプロセッサの残りを停止させる。すなわち、ＡＳＵ１３５がその演算を実行する間、ＶＬＩＷプロセッサの残りは、ＡＳＵ１３５によって生成される出力を読み取ろうとしても、変わらないままである。このホールド操作により、ＡＳＵ１３５の待ち時間中におけるＶＬＩＷプロセッサの電力消費量が減少する。可変待ち時間ＡＳＵ１３５がいつでも必要とされる出力を使える状態になると、インジケータ手段１４０によってホールド信号がリセットされる。この直後に、プロセッサの残りが再び作動されてＡＳＵ１３５の出力を消費する。ＶＬＩＷプロセッサが適時にアプリケーションを処理続けるため、処理速度が最適化される。
【００２０】
図２は、可変待ち時間を有するＡＳＵ１３５に関連付けられた指示手段１４０の構造を更に詳細に示している。インジケータ手段は、２つのレジスタファイル１６０，１７０を備えている。処理されるデータは、入力レジスタファイル１６０を介してＡＳＵ１３５内に入力される。データの処理結果は出力レジスタファイル１７０に対して出力される。指示手段は、レジスタファイル１６０，１７０に接続された検出ユニット１８０を更に備えている。検出ユニット１８０は、データがレジスタファイルからＡＳＵ１３５に対して出力されたか否かを検出するとともに、データがＡＳＵ１３５からレジスタファイル１７０内に受けられたか否かを検出する。検出ユニット１８０がＡＳＵ１３５内のデータの入力を検出すると、検出ユニット１８０は、ホールドユニットに対する信号を生成する。検出ユニット１８０は、ＡＳＵ１３５からのデータの出力を検出すると、ホールドユニットに対する信号の送信を停止する。
【００２１】
図３は、両方のレジスタファイル１６０，１７０が同一である構造を概略的に示している。レジスタファイルは多くのレジスタ２００を含んでいる。各レジスタは存在ビット２１０を含んでいる。全てのレジスタは、空状態へと初期化される。データが１つのレジスタへと読み取られる際には常に、データワードの存在を示すために、対応する存在ビット２１０がその状態を変える。１つのレジスタからのデータ出力は、レジスタが空になり且つ存在ビットがその状態を変えるという効果を有する。入力レジスタからＡＳＵへのデータの出力は、入力データの利用可能性によって引き起こされる（トリガされる）。すなわち、１つの信号または所定数の存在ビットが入力データの存在を示すと、入力レジスタファイルは、ＡＳＵに対して計算を開始するように命令する。同時に、演算の初期化が検出ユニット１８０に対して報告される。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態に係るＶＬＩＷプロセッサを示している。
【図２】特定用途向けユニット１３５に関連付けられた指示手段１４０を更に詳細に示している。
【図３】両方のレジスタファイル１６０，１７０の構造を示している。
【図１】
2006512656.tif 000003
【図２】
2006512656.tif 000004
【図３】
2006512656.tif 000005
【国際調査報告】
2006512656.tif 000006
2006512656.tif 000007
2006512656.tif 000008