(57)【要約】  本発明は、第１の命令語から抽出される第１の個別の命令と、少なくとも後続する第２の命令語から抽出される少なくとも１つの第２の個別の命令とが、新たな単一の命令語として処理される、並列処理装置及び命令処理方式に関する。これにより、２つの元の命令が発行されたかのように、少なくとも２つの連続的な動作が、命令パイプラインによって処理される１つの命令語に定義される。このことは、除去された遅延命令を追加するように、圧縮された命令形式を拡張することにより達成される。
2007514245.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのそれぞれの機能ユニットを制御するために利用される、少なくとも２つの個別の命令を有する命令語に基づきデータを処理する並列処理装置であって、第１の命令語から抽出された第１の個別の命令と、少なくとも１つの後続する第２の命令語から抽出された少なくとも第２の個別の命令とを、新たな単一の命令語として処理するための命令処理手段を有する装置。
【請求項２】
前記命令処理手段は、前記第１の及び少なくとも前記第２の命令語がそれぞれ少なくとも１つの遅延命令を持つ所定の命令パターンの１つを有する場合、前記第１の及び少なくとも前記第２の個別の命令を抽出し、前記第１の及び少なくとも前記第２の命令語を前記単一の命令語に圧縮するように構成された、請求項１に記載の装置。
【請求項３】
前記遅延命令はヌル操作である、請求項２に記載の装置。
【請求項４】
前記単一の命令語は、プログラムメモリに保存される、請求項２に記載の装置。
【請求項５】
前記命令処理手段は、所定の制御情報を前記単一の命令語に追加するように構成され、前記制御情報は、前記抽出された第１の及び少なくとも第２の個別の命令の前記それぞれの機能ユニットへの割り当て、及び前記第１の及び少なくとも第２の個別の命令の前記それぞれの機能ユニットにおける連続的な順序の、少なくとも一方を示す、請求項１乃至４のいずれか一項に記載の装置。
【請求項６】
前記制御情報は、少なくとも１つのそれぞれの最上位ビットとして前記単一の命令語に追加された少なくとも１つのビットから成る、請求項５に記載の装置。
【請求項７】
前記命令処理手段は、プログラムメモリから読み取られた命令語における前記制御情報チェックし前記制御情報に基づいて前記第１の命令語及び少なくとも第２の命令語を再確立し、前記再確立された第１の命令語及び少なくとも第２の命令語を命令デコーダに供給するように構成された、請求項５に記載の装置。
【請求項８】
前記命令処理手段は、遅延スロット及び分岐目標に関連する全ての命令語をマーキングし、前記マーキングに基づいて前記第１の個別の命令及び少なくとも第２の個別の命令の抽出を決定するように構成された、請求項１に記載の装置。
【請求項９】
前記命令処理手段は、前記決定された抽出に基づいて、少なくとも１つのプログラムメモリアドレスを調節するように構成された、請求項８に記載の装置。
【請求項１０】
前記並列処理装置はＶＬＩＷプロセッサである、請求項１に記載の装置。
【請求項１１】
少なくとも２つのそれぞれの機能ユニットを制御するために利用される、少なくとも２つの個別の命令を有する命令語を復元する方法であって、前記方法は、
（ａ）前記命令語に追加された制御情報をチェックするステップと、
（ｂ）前記少なくとも２つの個別の命令を抽出し、それぞれが前記抽出された個別の命令の一方を含む少なくとも２つの新たな命令語を生成するステップと、
（ｃ）少なくとも１つの遅延命令を、前記少なくとも２つの新たな命令語のそれぞれに追加するステップと、
を有し、前記ステップ（ｂ）及び（ｃ）は、ステップ（ａ）の結果に応じて実行される方法。
【請求項１２】
少なくとも２つのそれぞれの機能ユニットを制御するために利用される、少なくとも２つの個別の命令をそれぞれが有する命令語を圧縮する方法であって、前記方法は、
第１の命令語から第１の個別の命令を抽出するステップと、
少なくとも１つの後続する第２の命令語から少なくとも第２の個別の命令語を抽出するステップと、
前記第１の及び第２の個別の命令語から新たな単一の命令語を生成するステップと、
を有する方法。
【請求項１３】
コンピュータシステムにロードされたときに、前記コンピュータシステムを、請求項１２又は１３に記載の圧縮方法のステップを実行するように制御するコード手段を有するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＶＬＩＷ（very long instruction word）プロセッサのような並列処理装置、斯かる並列処理装置の命令語を圧縮及び復元するメモリ効率に優れた方法、及びコンピュータにロードされたときにコンピュータが前記メモリ効率に優れた方法のステップを実行することを可能とするコンピュータプログラムに関する。
【背景技術】
【０００２】
例えばＶＬＩＷプロセッサのような並列プロセッサは、スーパーコンピュータからワークステーション及びパーソナルコンピュータに亘る、種々の用途において利用され得る。並列プロセッサは、ワークステーション、パーソナルコンピュータ又は消費者向けビデオ若しくはオーディオ製品において、専用の又はプログラム可能なプロセッサとして利用され得る。並列プロセッサは、アプリケーション特有のプロセッサであり得る。即ち、特定のアプリケーションの性能を向上させるため、これらのアプリケーションを処理するために設計され得る。この目的のため、特殊な機能ユニットがＶＬＩＷプロセッサに組み込まれる。各機能ユニットは、処理されるべきアプリケーションに依存して特定の動作を処理するように構成される。ＶＬＩＷによって実行されるべき命令のセットは、スケジューリングされた動作を含む。
【０００３】
機能ユニットがパイプライン方式にされていない場合、機能ユニットが或る動作を実行する間は、前記機能ユニットにおいて他の動作はスケジューリングされることができない。機能ユニットがパイプライン方式にされている場合、新たな動作が、該機能ユニットの起動間隔に対応する一定の数のサイクルの後に、コンパイラによってスケジューリングされ得る。機能ユニットが処理を完了した後、処理結果が更に処理され、ＶＬＩＷプロセッサから出力される必要がある。命令のセットを生成するコンパイラは、機能ユニットの動作をスケジューリングするため、コンパイル時に、該機能ユニットの起動間隔及び待ち時間を知っている必要がある。機能ユニットの起動間隔とは、その時間間隔の後に、新たな動作が該起動ユニットにおいて起動され得るようになる時間間隔である。機能ユニットの待ち時間とは、該機能ユニットが動作を実行するために要する時間である。ＶＬＩＷプロセッサにおける機能ユニットの動作をスケジューリングするための最悪のケースを想定した待ち時間に基づいて、前記コンパイラはスケジュールにおいてＮＯＰ（ヌル操作、no operation命令）を導入する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
残念なことに、殆どのアプリケーションに存在するＣＰＵ（Central Processing Unit）における命令レベル並列性（ＩＬＰ、Instruction level parallelism）の度合いは限られており、ＣＰＵの機能ユニットの多くについて、単にＮＯＰを記述するために多くの高価なプログラムメモリのリソースが利用されることに導く。
【０００５】
米国特許ＵＳ６１５４８２８及び欧州特許出願公開ＥＰ１１５８４０１Ａ２といった文献は、命令の圧縮及び復元（decompression）方式を開示しているが、これらは、パイプラインを命令デコーダに向かって発行される命令語を再配列及び／又は伸張するために、特殊なパイプライン、レジスタ又はメモリセクションを必要とする。
【０００６】
本発明の目的は、いずれの追加のメモリ要件又はパイプラインをも導入することなく、必要とされるプログラムメモリの量を削減することを目的とする。
【課題を解決するための手段】
【０００７】
本目的は、請求項１に記載の並列処理装置、請求項１１に記載の復元方法、請求項１２に記載の圧縮方法、及び請求項１３に記載のコンピュータプログラムによって達成される。
【０００８】
従って、後続する命令語から抽出される個々の命令は、同一の一般的な命令形式の新たな単一の命令語へと結合される。このことは、いずれの付加的なパイプライン段又はメモリセクションをも利用することなく、削減された量のプログラムメモリへと導く。遅延命令又は遅延スロットはかくして、プログラムメモリに保存される前に命令語から除去されることができる。命令形式はこのとき、失われた遅延命令を再組み込みすることにより、命令パイプラインによって直接に取り扱われる。削減された量のプログラムメモリに加えて、減少させられた保存される命令の量のため、必要とされるメモリアクセス帯域幅が削減される。提案される圧縮手法は、低いハードウェアの複雑さ及び高いサイクル効率で実現され得る。
【０００９】
命令処理は、前記第１の及び少なくとも前記第２の命令語がそれぞれ少なくとも１つの遅延命令を持つ所定の命令パターンの１つを有する場合、前記第１の及び少なくとも前記第２の個別の命令を抽出し、前記第１の及び少なくとも前記第２の命令語を前記単一の命令語に圧縮するように適応されても良い。とりわけ、前記遅延命令はヌル操作であっても良い。これにより、個々の命令の共通の単純なパターンが、所定の方法でグループ化され、物理的なプログラムメモリ語と正確に整合される。このことは、メモリ使用及び複雑さの点で非常に有益である。
【００１０】
更に、圧縮の間又は圧縮の後、前記命令処理は、所定の制御情報を前記単一の命令語に追加するように適応され、前記制御情報は、前記抽出された第１の及び少なくとも第２の個別の命令の前記それぞれの機能ユニットへの割り当て、及び前記第１の及び少なくとも第２の個別の命令の前記それぞれの機能ユニットにおける連続的な順序の、少なくとも一方を示しても良い。当該制御情報は、少なくとも１つのそれぞれの最上位ビットとして前記単一の命令語に追加された少なくとも１つのビットから成っても良い。かくして、圧縮された個々の命令の元のメモリアドレス又はシーケンスを保存するための付加的なメモリ空間を必要とすることなく、それぞれの新たな単一の命令語が個別に復元又は伸張されることができる。
【００１１】
復元の間又は復元の前に、前記命令処理は、プログラムメモリから読み取られた命令語における前記制御情報チェックし前記制御情報に基づいて前記第１の命令語及び少なくとも第２の命令語を再確立し、前記再確立された第１の命令語及び少なくとも第２の命令語を命令デコーダに供給するように適応されても良い。それ故、各プログラムメモリのフェッチ時に、個々の命令又は制御語が、命令デコーダに正常な態様で発行されることができる。
【００１２】
前記命令処理は、遅延スロット及び分岐目標に関連する全ての命令語をマーキングし、前記マーキングに基づいて前記第１の個別の命令及び少なくとも第２の個別の命令の抽出を決定するように適応されても良い。このとき、少なくとも１つのプログラムメモリアドレスが、決定された抽出に基づいて調節されても良い。かくして、提案される手法は、コード生成アプリケーションのユーザに対して透明であり、全ての段階が自動的に処理されることができる。
【００１３】
他の有利な変更は、従属請求項に定義される。
【発明を実施するための最良の形態】
【００１４】
本発明の実施例が、添付図面を参照しながらここで説明される。
【００１５】
図１は、本発明の実施例によるＶＬＩＷプロセッサを示す。前記ＶＬＩＷプロセッサは、幾つかの機能ユニット３０−１乃至３０−ｎに接続されたＶＬＩＷコントローラ４０を有する。ＶＬＩＷコントローラ４０は、とりわけ機能ユニット３０−１乃至３０−ｎの動作又は個々の命令を発行する。相互接続ネットワーク２０は、機能ユニット３０−１乃至３０−ｎを、これら機能ユニットの間でのデータ伝送を容易化するため、直接に接続する。個々のレジスタファイル１０−１乃至１０−ｎを持つグローバルレジスタファイルは、機能ユニット３０−１乃至３０−ｎによって生成される値を保存する。前記グローバルレジスタファイルの目的は、機能ユニット３０−１乃至３０−ｎの１つによって生成されたデータを、他の機能ユニット３０−１乃至３０−ｎへと通信する手段を提供することである。機能ユニット３０−１乃至３０−ｎは、少なくとも１つの標準的な算術ユニット及び論理ユニット、定数生成ユニット並びにデータ及び命令メモリのためのメモリユニット等を含んでも良い。これらのユニットは、多くのアプリケーションにおいて利用され得る。
【００１６】
通信ネットワーク２０は、コントローラ４０に備えられるシーケンサ機能の制御の下、機能ユニット３０−１乃至３０−ｎの出力ポートをレジスタファイル１０−１乃至１０−ｎの入力ポートに接続し、機能ユニット３０−１乃至３０−ｎの入力ポートをレジスタファイル１０−１乃至１０−ｎの出力ポートに接続する。とりわけ、コントローラ４０の命令デコーダ４４は、コントローラ４０の命令レジスタ４２から命令語を取得する。各サイクルにおいて、命令レジスタ４２は、新たな命令語をロードされる。当該命令語は、１サイクルにおいて正当な制御情報を全てのデータ経路成分について生成するために必要な情報を含む。利用される命令エンコードの概念に依存して、前記命令語は、同一のサイクル又は異なるサイクル中のデータ経路成分を同時に制御する。いずれの場合にも、本アーキテクチャにおけるように、１以上の機能ユニットを用いて、１つの命令語が幾つかの並列動作の実行を含むことができる。命令語のシーケンスを含むプログラムは、プログラムメモリ５０に保存される。
【００１７】
実施例によれば、追加のパイプライン段を利用することなく、例えばＮＯＰのような遅延命令を記述するために必要とされるプログラムメモリの量を提供するための命令処理方式が提案される。とりわけ、低いハードウェアの複雑性のみが含まれ、高いサイクル効率が達成されるという事実のため、低パワー処理ユニットに特に適した、より効率的な方法に導く圧縮又はコンパクト化方式が提案される。例えば、一般のコンパイルされたＣコードを用いて、約２５％のプログラムメモリ空間の節約が達成される。
【００１８】
例えばディジタル信号処理のためにスケジューリングされたプログラムコードにおいては、多くのプログラムセグメントが、例えば関数に入る時又は関数から出る時のスタックフレームの操作のような、算術的な演算を伴わずに定義された純粋なメモリロード又は記憶動作を持つ。これらの動作は、例えばロード記憶ユニットのような、単一の機能ユニットに関連する。以下、２つの別個の命令を有する命令パターンのシーケンスの例：
ＮＯＰ||ｍｅｍ１
ＮＯＰ||ｍｅｍ２
・・・
・・・
ＮＯＰ||ｍｅｍＮ
が示されるが、該例はロード記憶ユニットにのみ当てはまるものではなく、いずれの機能ユニットに当てはまり得る。
【００１９】
第１の好適な実施例によれば、２つの連続的なメモリ動作、例えば
ｍｅｍ１||ｍｅｍ２
を持つ新たな命令形式が定義される。ここで当該新たな命令形式を示す情報は、命令セットのグラフ内の、例えば最上位レベルのような、いずれの部分に挿入されても良い。例えば、単一の形式３２ビットＩＳＡ（Instruction Set Architecture）を持つ機械においては、前記新たな形式は、最上位ビット（ＭＳＢ）位置に配置された特別なビットにより示されることができる。
【００２０】
かくして、３２ビット命令語のＭＳＢ位置に追加され、元の及び連続的な形式を区別又はコーディングするために利用される斯かる形式ビットを用いて、ビットシーケンスは以下のように表現される：
“０”＜３２＞  元のＩＳＡ
“１”＜３２＞  連続的な拡張
【００２１】
当該新たな命令形式は次いで、失われた算術ＮＯＰを拡張又は追加することにより、命令パイプラインによって、ＮＯＰ命令を伴う元の命令シーケンスが発行されたかのように取り扱われる。提案される手法は単に整合されたプログラムメモリアクセスの拡大を含むという事実のため、追加のパイプライン段又はメモリセクションは必要とされず、サイクル効率は維持される。
【００２２】
図２は、好適な実施例による、制御情報ＣＢを持つ命令語のための一般的な方式を示す。各プログラム語又は命令語は、例えば個々の命令ＦＵｘ１−Ｉｙ１乃至ＦＵｘｎ−Ｉｙｎの割り当て及び連続的な順序を定義する命令形式を示す制御情報ＣＢに対応する、所定の数のビットだけ拡張される。新たに拡張された命令幅もまた、物理プログラムメモリ５０に割り当てられる。
【００２３】
従来の命令形式においては、命令語内の個々の命令の位置は、機能ユニット３０−１乃至３０−ｎ及び一般的な命令サイクルの対応する１つに固定的に割り当てられていた。新たな命令形式は、異なるサイクル及び／又は異なる機能ユニットの個々の命令を、単一の命令語に組み込むことを可能とする。それ故、第１の好適な実施例による、２つの別個の命令を持つ３２ビット命令語の場合には、従来のパターンシーケンス：
ＮＯＰ||ＦＵ１  （命令１）
ＮＯＰ||ＦＵ１  （命令２）
は、新たな単一の命令語：
“１”＜ＦＵ１命令１＞＜ＦＵ１命令２＞＝“１”＜ＦＵ１−Ｉ１＞＜ＦＵ１−Ｉ２＞
に圧縮又はコンパクト化されることができる。ここで「ＦＵ」は機能ユニットを示し、「Ｉ」は当該機能ユニットにおける命令の連続的な順序を示すために利用される命令インデクスを示す。例えば「ＦＵ１」は、メモリロード記憶ユニットであっても良いし、又は一般にＶＬＩＷプロセッサに備えられた機能ユニット３０−１乃至３０−ｎの１つであっても良い。
【００２４】
より一般的な意味では、当該命令処理手法は、幾つかのＮＯＰ又は他の非動作的遅延命令を含む、いずれの命令パターンのセットの圧縮にも適用され得る。コーディング効率は、命令パターンの出現の統計に純粋に起因し、ここで１つの物理プログラムメモリ語にフィットする機能ユニット及び命令のいずれの組み合わせもがコーディングされ得る。有効な例として、ＮＯＰ命令を除去するために、「ＮＯＰ||ｍｅｍ」のような単純な一般的なパターンが検出され組み合わせられ得る。
【００２５】
第２の好適な実施例によれば、前記命令語は、３つの個々の命令から成る組（triple）を有する。この場合、制御情報ＣＢは、命令の割り当て及び連続的な順序の４つの異なる組み合わせを区別するために、例えば以下に定義されるような、２ビット情報であっても良い。
“００”＜ＦＵ３−Ｉ１＞＜ＦＵ２−Ｉ１＞＜ＦＵ１−Ｉ１＞  （並列形式）
“０１”＜ＦＵ１−Ｉ１＞＜ＦＵ１−Ｉ２＞＜ＦＵ１−Ｉ３＞  （３つの圧縮されたＮＯＰ||ＮＯＰ||ＦＵ１の組）
“１０”＜ＦＵ２−Ｉ１＞＜ＦＵ２−Ｉ２＞＜ＦＵ２−Ｉ３＞  （３つの圧縮されたＮＯＰ||ＦＵ２||ＮＯＰの組）
“１１”＜ＦＵ３−Ｉ１＞＜ＦＵ２−Ｉ２＞＜ＦＵ１−Ｉ２＞  （ＦＵ３||ＮＯＰ||ＮＯＰ、ＮＯＰ||ＦＵ２||ＦＵ１の対を有する）
【００２６】
これにより、ＮＯＰ命令を有する所定のパターンが検出されるという事実のため、ＮＯＰ命令はプログラムメモリ５０に保存される必要がなく、所定のパターンを有する所定の数の連続的な命令語が、前記所定のパターンから抽出される非ＮＯＰ命令のパターンを有する単一の命令語に置き換えられる。これらの圧縮された命令語は次いで、プログラムメモリ５０に保存される。
【００２７】
図３は、図１のプロセッサ４０により実行され得る、第１の好適な実施例による、プログラムメモリのフェッチ動作の模式的なフロー図を示す。新たな命令語がプログラムメモリ５０からフェッチされる度に、プロセッサ４０は、命令デコーダ４４に制御語又は命令語を正しく発行するために、図３に記載された手順に従う。ステップＳ１００において、フェッチ動作の最初のサイクルを示すパラメータＣ１が、論理値「真」に対応する「１」に設定される。次いでステップＳ１１０において、制御情報又は制御ビットＣＢの内容がチェックされる。制御情報ＣＢの値「０」によって規定される従来の命令形式が決定された場合、ステップＳ１２０において、従来の圧縮されていない命令語が決定され、該命令語の３２ビット全てが命令デコーダ４４に直接発行される。一方、制御情報ＣＢが、圧縮された命令語を示す値「１」に設定されていると決定された場合、ステップＳ１３０においてサイクルパラメータＣ１の値がチェックされる。サイクルパラメータＣ１が「１」に設定されており最初のサイクルを示している場合には、ステップＳ１４０において、下位の個別の命令が選択され、ＮＯＰ命令が追加される。次いでステップＳ１５０において当該最初の復元された命令語が発行され、ステップ１６０においてサイクルパラメータＣ１が、論理値「偽」を示す「０」に設定される。
【００２８】
その後、本手順はステップＳ１１０に戻る。次いでステップＳ１３０においてサイクルパラメータが「０」に設定されており２番目のサイクルを示している場合には、ステップＳ１７０において、当該命令語の上位の個別の命令が選択され、ＮＯＰ命令が追加される。次いでステップＳ１８０において、復元された命令語が２番目の連続的な命令語として発行される。
【００２９】
「下位の個別の命令」なる語句は、より下位のビット位置における命令を示し、「上位の個別の命令」なる語句は、より上位のビット位置における命令を示すことに留意されたい。
【００３０】
図４は、図３のフロー図に基づく命令発行操作ロジックの適切な実装の例を示す模式的な図を示す。該操作ロジックは、命令語が２つの個別の命令、即ちビット番号０乃至１５をカバーする下位命令と、ビット番号１６乃至３１をカバーする上位命令とを有する、第１の所定の例に基づく。図４において、命令レジスタ４２から命令デコーダ４４への情報の論理フローが示されている。制御情報ＣＢの値に基づいて、上位及び下位の個別の命令の少なくとも一方を有する３つの組み合わせのうちの１つが、命令デコーダ４４に供給される。とりわけ、新たなＭＳＢとしてビット位置３２に追加された制御情報が「０」に設定されている場合は、圧縮されていない命令パターンが決定され、１サイクルに１命令として命令デコーダ４４に供給される。
【００３１】
一方、制御情報ＣＢが「１」に設定されている場合には、２つの復元された命令語が、命令デコーダ４４に２つのサイクルで連続的に供給される。最初のサイクルにおいて、下位の個別の命令が上位ビット位置でＮＯＰ動作と組み合わせられ、該組み合わせられた復元された命令語が命令デコーダ４４に供給される。２番目のサイクルにおいて、上位の個別の命令が、下位命令として、より高いビット位置において第２のＮＯＰ動作と再び組み合わせられ、連続的な第２の復元された命令語を形成する。該第２の復元された命令語もまた、命令デコーダ４４に供給される。
【００３２】
一般に、好適な実施例によれば、ｎ個の個別の命令を１つの物理メモリ語又は命令語に詰めることにより、ｎ個の命令が圧縮される。前記第１の及び第２の好適な実施例においては、それぞれｎ＝２及びｎ＝３である。それ故、追加のパイプライン段が必要とされない。これに対し、最初に説明した従来の圧縮手法は、命令語を当該命令語の配列を失うように処理するため、パイプラインを命令デコーダへと発行される抽出語を再配列及び伸張するために、追加のパイプライン段が利用される。
【００３３】
好適な実施例によれば、所定の抽出パターンを利用することにより、圧縮された個別の命令のグルーピングが、物理プログラムメモリ語と整合される。これにより、より少ないメモリ空間を持つことによって電力が節約され、２以上の命令の発行のために１つのみの命令フェッチが必要とされるという事実のため、プログラムメモリアクセス帯域幅が削減される。
【００３４】
図５は、前記第１の好適な実施例によるコンパクト化又は圧縮方式の模式的なフロー図を示す。本手順は、プロセッサ４０のコンパイラ、アセンブラ及び／又はリンカ機能により実行されても良く、幾つかの方法でプログラマのソフトウェアツールフローをサポートする。遅延スロットは対で処理される必要があり、該スロット内に分岐目標を持たない必要がある。分岐目標は常に、適切なコンパクト化又は圧縮候補の対を分解するものとしてみなされる必要があり、これにより圧縮は分岐目標によって提示される、とり得る制御フローのエントリを含む正当な対においてのみ実行されることとなる。
【００３５】
ステップＳ２００において、全体のプログラムが本手順によって処理されたか否かがチェックされる。否であれば、ステップＳ２１０において、次の遅延スロットブロック、即ちＮＯＰ命令を含むパターンがマークされる。次いでステップＳ２２０において、次の分岐目標がマークされ、本手順はステップＳ２００に戻る。本ループは、本手順が遅延命令及び分岐目標に関連する全ての命令をマークするまで繰り返される。ステップＳ２００において全てのプログラムが処理されたと決定された場合、ステップＳ２３０において、所定のパターンの命令対が、圧縮されたブロック又は命令語によって代替又は置換される。最後にステップＳ２４０において、全てのプログラムメモリのアドレスが、個別の命令語の圧縮された命令語への併合に基づいて調節される。ステップＳ２３０において、「ＮＯＰ||ｍｅｍ」パターンのような、隣接する命令パターンの連続した領域を考慮することにより、正当な対が指示され得る。
【００３６】
プログラム空間の「高さ」が圧縮によって減少させられているという事実のため、ステップ２４０におけるアドレス調節は、全てのフロー制御目標アドレスを再計算する後処理段によって実行されることができる。更に、例えば「ＮＯＰ||ｍｅｍ」パターンのような、選択された所定のパターンを優先するように、例えばコンパイラ機能のもののような、スケジューラ内のコード選択のための内部基準にバイアスを掛け、かくして正当な圧縮候補を識別するための範囲を拡大することにより、提案される圧縮方式が拡張され得る。
【００３７】
提案される圧縮方式は、例えばディジタル信号プロセッサのためのＣコンパイラのユーザに対して完全に透明であり、全ての段が自動的に処理される。アセンブリ言語のプログラマは、コンパクト化候補を手動で探しても良く、一方で正常なフロー目標アドレス解決のような他の段は自動的に実行される。コード生成のいずれの方法においても、ＩＳＳ（Instruction Set Simulator）は、当該命令クラスの正確なレベルの振る舞いを正しくシミュレートする。
【００３８】
要約すると、第１の命令語から抽出される第１の個別の命令と、少なくとも後続する第２の命令語から抽出される少なくとも１つの第２の個別の命令とが、新たな単一の命令語として処理される、並列処理装置及び命令処理方式が提案される。これにより、２つの元の命令が発行されたかのように、少なくとも２つの連続的な動作が、命令パイプラインによって処理される１つの命令語に定義される。このことは、除去された遅延命令を追加するように、圧縮された命令形式を拡張することにより達成される。
【００３９】
本発明は上述の好適な実施例に制限されるものではなく、幾つかの個別の命令を持つ命令語により制御されるいずれの並列処理装置にも適用され得ることに留意されたい。特に、本発明は非ＶＬＩＷ機械においても適用され得る。提案される圧縮方式は、コンピュータプログラムに従って動作するいずれの汎用コンピュータによっても実装され得る。該コンピュータプログラムは、フロッピー（登録商標）又はＣＤ−ＲＯＭのような記憶媒体のようないずれの適切な担持媒体によって担持されても良いし、又は担持信号によって担持されても良い。斯かる担持信号は、インターネットのような通信ネットワークを介してダウンロードされる信号であっても良い。添付されたコンピュータプログラムの請求項は、上述の形態のいずれかで提供されるコンピュータプログラムをカバーするものとして解釈されるべきものである。本発明において提案される並列処理装置は、マルチメディアアプリケーション、ネットワークルータ、ビデオモバイル電話、インテリジェント車両、ディジタルテレビジョン、音声認識、ゲーム、信号処理アプリケーション等における使用のための高度に集積された環境にプロセッサコアとして含められても良い。実施例はかくして、添付される請求項の範囲内で変化し得る。
【図面の簡単な説明】
【００４０】
【図１】本発明が実装され得るＶＬＩＷプロセッサの模式的なアーキテクチャを示す。
【図２】好適な実施例による圧縮された命令語の模式的な表現を示す。
【図３】第１の好適な実施例によるプログラムメモリフェッチ動作の模式的なフロー図を示す。
【図４】第１の好適な実施例による命令発行操作ロジックの実装の模式的な図を示す。
【図５】第１の好適な実施例による圧縮方式の模式的なフロー図を示す。
【図１】
2007514245.tif 000003
【図２】
2007514245.tif 000004
【図３】
2007514245.tif 000005
【図４】
2007514245.tif 000006
【図５】
2007514245.tif 000007
【国際調査報告】
2007514245.tif 000008
2007514245.tif 000009