JP3806341B2 - サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム - Google Patents
サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム Download PDFInfo
- Publication number
- JP3806341B2 JP3806341B2 JP2001357626A JP2001357626A JP3806341B2 JP 3806341 B2 JP3806341 B2 JP 3806341B2 JP 2001357626 A JP2001357626 A JP 2001357626A JP 2001357626 A JP2001357626 A JP 2001357626A JP 3806341 B2 JP3806341 B2 JP 3806341B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- sub
- functional processing
- cluster
- instructions
- 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
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の背景】
この発明は、プロセッサ命令を圧縮するための超長命令語(VLIW)計算アーキテクチャ、方法および装置に関し、より特定的にはVLIW命令の記憶要件を減じるための方法および装置、ならびに命令のオプコード部分を圧縮するための方法および装置に関する。
【0002】
処理効率を最適化するための従来の努力において、命令帯域幅よりもデータ帯域幅に多く対処がなされてきた。この偏重は、たとえば典型的にはデータキャッシュミス率よりも少ない命令キャッシュ率を示すベンチマークプログラムに基づくと、正しいように思われる。そのような結果は、オフチップ命令帯域幅要件はデータ帯域幅要件よりも小さいことを示す。しかしながら、画像処理のようないくつかの商業的作業負荷に対しては、典型的にはデータキャッシュミス率は命令キャッシュミス率よりも低い。したがって、命令帯域幅を最適化する必要性が増大している。
【0003】
最近の2つの傾向が命令帯域幅を増大させ、したがって、大きなサイズの命令キャッシュに対する必要性を増大させている。第1の傾向は、超長命令語(VLIW)アーキテクチャが多くの高性能プロセッサアーキテクチャにおいて一般的になってきていることである。VLIWアーキテクチャは、その広い命令ビットを活用してサイクルごとに多数の動作を実行する。これが直接反映して、スーパースカラアーキテクチャと比較して顕著に増大した命令帯域幅をもたらす。たとえば、256ビットのVLIW命令幅(典型的な縮小命令セットコンピュータ(RISC)命令よりも4倍から8倍広い)は珍しくはない。
【0004】
画像処理などのマルチメディア計算アプリケーションは、多数のデータストリームを扱うための並列構造を用いてより効率的に実現される。テキサス州ダラスのテキサス・インスツルメント(Texas Instruments)によって製造されるTMS320C6xおよび、日本国東京の株式会社日立製作所とカリフォルニア州キャンベルのイクエータ・テクノロジー(Equator Technologies)とによって製造されるMAP1000などのVLIWプロセッサは、データストリームと命令ストリームとの両方の大量の並列性をサポートし、プログラム命令の並列またはパイプライン化された実行を実現する。
【0005】
VLIWプロセッサは、クラスタと呼ばれる1つ以上の多数の均一な処理ブロックを有する。クラスタの各々は、共通の数の機能処理単位を含む。VLIW命令は多数のサブ命令フィールドを含む。VLIW命令のサイズは線形に増大し、並列命令の数はサブ命令フィールドにおいて並行に規定される。命令に現われるサブ命令は並列実行のために機能処理単位の間で分散される。
【0006】
従来のVLIWプロセッサは、典型的には命令ごとに10未満の動作を実行する。同時実行の数は将来のメディアプロセッサにおいて実質的に増大する見込みであり、命令は256または512ビット幅になる見込みである。しかしながら、命令のサイズが増大するにつれ、対応してデータフローおよびメモリ構造に対する負荷が増大する。十分な命令フェッチ帯域幅を提供するために、VLIW命令は典型的には最初に外部メモリからフェッチされ、実行される前にオンチップ命令キャッシュにストアされる。たとえばタイト処理ループの間の、キャッシュのスラッシング(すなわち、サイクルミス)は、非常に望ましくなく、性能の劣化につながる。したがって、命令キャッシュを効率的に管理して所望の高い処理スループットを維持することが強く望まれてきている。
【0007】
同時に、プロセッサのクロック周波数が増大し、より広いVLIWアーキテクチャが適用され、かつより複雑なアルゴリズムが開発されるにつれ、より大きな命令キャッシュに対する必要性は増大する。したがって、VLIW命令を効率的に扱いかつキャッシュするための方法に対する必要性がある。
【0008】
第2の傾向は、プロセッサクロック周波数を増大するにあたって深い実行パイプラインの使用がクリティカルになってきていることである。深い実行パイプラインはリードアフターライト依存においてコンフリクトの可能性を増大させる。コンフリクトはNOP命令の挿入か、または実行パイプラインをストールさせるハードウェア検出技術によって解決される。いずれの場合においても、貴重な実行サイクルが失われ、これはプロセッサの最大限の活用を阻む。ソフトウェアパイプライン化はこれらの深い実行パイプラインにおけるリードアフターライトコンフリクトをなくすことにおいて重要なツールとなった。ソフトウェアパイプライン化は、タイトループを何度かアンロールし、かつタイトループの多数の反復をオーバーラップさせて、付加的なNOPまたはプロセッサストールサイクルなしにリードアフターライト依存を解決させるための余地を作ることを可能にする。これはタイトループサイズを増大させ、よって命令キャッシュミス率をも増大させるという弊害がある。したがって、命令帯域幅を減じるか、より効率的に扱う技術に対する必要性が存在する。
【0009】
複合命令セットコンピュータ(CISC)アーキテクチャおよび縮小命令セットコンピュータ(RISC)アーキテクチャにおいては、命令キャッシュの効率性により命令圧縮をほとんど必要としなかった。しかしながら、ビルコウスキ(Bealkowski)他による1997年7月3日発行の米国特許第5,636,352号の「圧縮命令を用いるための方法および装置」においては、命令圧縮技術が導入されている。命令はオプコード(すなわち命令オペランド)および1つ以上のデータオペランド(たとえばソースオペランドフィールドおよびデスティネーションオペランドフィールド)からなる。1つ以上の制御ビットもまた命令内に含まれる。ビルコウスキ他は、頻繁に用いられる命令に対するエントリを含む、シノニムテーブルと呼ばれるテーブルを実現する。命令のシーケンスは以前に定義されていない特別オプコードおよびそれぞれのシノニムテーブルへのインデックスを有する単一の命令に圧縮される(たとえば、命令内で許可されるビットの数に基づく限度まで、シーケンスの命令ごとに1つが圧縮される)。
【0010】
ビルコウスキ他の圧縮技術の制限とは、典型的なプログラムにおける唯一の(unique)命令の数が非常に大きいことである。したがって、ビルコウスキ他は12ビットの最大インデックス幅と、エントリの各々が32ビットの命令を保持する4096エントリのシノニムテーブルとを提案する。そのようなテーブルは16キロバイトのオンチップメモリを必要とする。そのようなテーブルのサイズは高性能プロセッサなどにおいて用いられるレベル1命令キャッシュに匹敵するので、これは費用のかかる解決策である。ビルコウスキ他は、シノニムテーブルが読出専用メモリ内にストアされ、かつマイクロプロセッサ設計の時点で予め規定される1つの実施例を提案する。別の実施例においてはビルコウスキ他は、シノニムテーブルがプロセッサ初期化の間にロード可能であることを提案する。しかしながら企図される場合、テーブルは静的で変化しない構成である。したがって、命令帯域幅を減じるためのより効率的な解決策に対する必要性がある。
【0011】
【発明の要約】
この発明に従うと、VLIW命令のサブ命令は機能処理単位の間で共用されて、命令キャッシュに、ある実施例においてはメインメモリにストアされるVLIW命令のサイズを減じる。特定的には、VLIW命令はサブ命令共用の場合に圧縮される。ある実施例においては命令はコンパイル時に圧縮され、圧縮された形式でメインメモリにストアされる。他の実施例においては命令は圧縮されない形式でメインメモリにストアされ、キャッシュメモリにストアされる前に圧縮される。
【0012】
この発明の一局面によると、命令圧縮制御ビットの組がVLIW命令の各々に関連付けられる。一実施例においてはVLIW命令は命令内の制御ビット組を含むよう形式化される。VLIW命令は、複数のサブ命令フィールド、命令圧縮制御ビット組、およびNOP命令の位置を示す(すなわち、空である)ものなどのような他の雑制御ビットを含む。
【0013】
完全に拡張された形式においては、VLIW命令は予め規定された数のサブ命令フィールドを含み、フィールドの数はVLIW命令を実行するプロセッサのアーキテクチャによって決定される。サブ命令フィールドのいくつかはNOP命令であり得る。さらにサブ命令フィールドのいくつかは他のサブ命令フィールドにあるものと同じサブ命令を含み得る。NOP命令のために割当てられるスペースを除去するために命令を圧縮することが公知である。この発明に従うと、選択された場合のサブ命令の冗長性を減じるための方策が提供される。
【0014】
1つの命令が4つのサブ命令フィールドを含むアーキテクチャを考察する。そのような命令に対して関連する15の状況が存在する。1つの状況においては、冗長なサブ命令は存在しない(たとえば、ABCD)。残りの状況においては、サブ命令の間にある程度の冗長性が存在する(たとえば、AAAA、AAAB、AABA、ABAA、BAAA、AABB、ABAB、ABBA、AABC、ABAC、ABCA、BAAC、BACA、BCAA)。A、B、CおよびDはサブ命令が別のフィールド内のサブ命令と同一であるか異なっているかを識別するために用いられていることに留意されたい。当業者においては、多数の異なったサブ命令Aが存在することが認識されるであろう。同様に、多くの異なったサブ命令B、CおよびDが存在する。
【0015】
より多くのサブ命令フィールドが存在するアーキテクチャに対しては、さらなる冗長なサブ命令の状況が存在する。いかなる所与のアーキテクチャに対しても、2zより多い起こり得る状況は存在せず、ここで「z」はサブ命令フィールドの数である。すべての冗長状況をカバーするために、「z」までの制御ビットが存在するであろうが、ここでzはプロセッサアーキテクチャにおいて許容されるサブ命令フィールドの最大数である。
【0016】
ある実施例においては、すべてのそのような状況は命令の各々に「z」の制御ビットを含むことによりカバーされる。しかしながら、命令幅が増大するにつれ、サブ命令共用のためにそのように多数の付加的な制御ビットを加えることは望ましくないおそれがある。特定的には、実務上何度も出現し繰返すサブ命令冗長性の間にあるパターンが見られる傾向がある場合には、そのような多くのビットのコストは過剰に思われる。結果として、好ましい実施例においては制御ビットの数を「z」未満に減じて、約2zの予め規定された数のサブ命令共用状況を扱うことを可能にする。
【0017】
サブ命令冗長性のパターンが変化する異なったアプリケーションに対して異なったプロセッサを設計し得る。さらに、どの場合にサブ命令共用のためにサブ命令冗長性をカバーするかは、プロセッサが対象とするアプリケーション(たとえば、画像処理アプリケーション)に対して最も大きな影響を与えるよう、所与のプロセッサに対して戦略的に選択される。
【0018】
いかなるサブ命令冗長性状況も潜在的にカバーされてプロセッサアーキテクチャ内に設計されるが、1つの方策においてはすべてまたはそれ以下のサブ命令共用可能性がカバーされる。一実施例においてはサブ命令共用は対応の機能処理単位に対して向けられる冗長なサブ命令に対して提供される。機能処理単位はプロセッサの一部である。プロセッサは「z」の機能処理単位を含むが、ここで「z」は1つの命令内のサブ命令の最大数である。しかしながら、より特定的には、プロセッサは複数のクラスタを含み、クラスタの各々は共通の数の機能処理単位(FPU)を含む。1つのクラスタ内のFPUの各々に対して、互いのクラスタ内に対応のFPUが存在する。対応のFPUの各々は同じ機能を有する。たとえば、4つのFPUの3つのクラスタがあると、4組の対応するFPUが存在する。1つの方策においては、いずれか2つ以上の対応のFPUの間のサブ命令冗長性の並べ替えの各々がカバーされる。そのような例においてはz=7であり、命令ごとに7つの命令圧縮制御ビットが存在する。これは12の機能処理単位間の、すべての可能性のあるサブ命令共用状況をカバーするための制御ビットの最大数(たとえば、12)よりも少ない。
【0019】
この発明の別の局面に従うと、クラスタの各々における対応の機能処理単位に向けられる冗長なサブ命令が圧縮される。特定的には、少なくとも2つのクラスタにおける対応の機能処理単位に対する1つの命令内に同じサブ命令が存在すると、この発明にしたがって、サブ命令の1つのコピーのみがストアされればよい。対応の機能処理単位に対する冗長なサブ命令は省かれ、圧縮された命令をもたらす。そのような圧縮に対しては、特定のサブ命令を共用する冗長なサブ命令フィールドを識別する命令圧縮制御ビットの対応する条件が存在する。
【0020】
この発明の別の局面によると、VLIWプロセッサに対するコンピュータプログラムのコンパイルの間に(たとえば、より高レベルの言語ソースコードまたはアセンブラソースコードのアセンブリ)、命令圧縮制御ビットは所与の命令に対して圧縮の各々を規定する条件を特定するよう設定される。命令圧縮制御ビットを含む命令は、圧縮されたまたは圧縮されない形式でメモリ内にストアされる。圧縮されない形式でストアされる場合、命令はプロセッサのオンチップ命令キャッシュにストアされる前に圧縮される。したがって、命令は命令のメインメモリへの記憶と命令のオンチップ命令キャッシュへの記憶との間のいずれかのステップで圧縮される(たとえば、これは圧縮されてメインメモリで復元される;これは圧縮されて一次のキャッシュまたは二次のキャッシュにストアされる;これはオンチップ命令キャッシュに移動するときに圧縮される)。
【0021】
この発明の別の局面によると、命令圧縮制御ビットの条件は、どのように圧縮命令が実行のために圧縮解除されるべきかを規定する。特に制御ビットは、圧縮命令内の1つ以上のサブ命令が、VLIWプロセッサの機能処理単位の間で同時実行のためにどのように共用されるべきかを判断する。命令圧縮制御ビットの組は、冗長的にではなくすぐに冗長な対応のサブ命令がストアされる1つ以上の圧縮条件を識別する。識別される条件の各々は、少なくとも2つの対応の機能処理単位によって共用されるべきサブ命令に対応する。
【0022】
異なったクラスタの機能処理単位を、対応する機能処理単位であると関連付け、かつそのような対応の機能処理単位に向けられる冗長なサブ命令を圧縮することの利点は、画像計算アルゴリズムの通常のプログラム構造によるものである。出願人らは、同じサブ命令が多数のクラスタにおいて用いられる画像計算ライブラリ関数のためのプログラムコードにおいて多くのタイトループを認識した。たとえば2つのクラスタを有するVLIWプロセッサで実現される2D畳み込み関数に対しては、最も頻繁に用いられるサブ命令は、内積および、内積の解の区分短縮(partitioned compaction)である。これらのサブ命令のいずれかを実行するほとんどの命令に対して、多くのクラスタが同じサブ命令を割当てられていることが認識された。特定的にはそのような関数のためのMAP1000プロセッサに対するアセンブリコードにおいては、出願人らはタイトループプログラムが133の命令のうち、両方のクラスタに対して全く同じサブ命令(オペランドを含む)からなる67の命令を有することを認識した。したがって、対応の機能処理単位に向けられるサブ命令の冗長性は重要な画像処理アルゴリズムにおいて顕著に発生する。VLIW命令における冗長性をなくして、多数のクラスタにおいて同じサブ命令が実行されるべきである場合に必要となる命令ビットを少なくすることにより、プログラムサイズが減じられる。さらに、命令キャッシュ利用の効率性が向上し、効率的な命令フェッチ帯域幅が増大する。
【0023】
オプコード圧縮実施例においては、命令帯域幅は、命令の全体を圧縮する命令圧縮技術とは異なる技術で減じられる。共通して用いられるオプコードの1つ以上のテーブルをストアするために、オンチップランダムアクセスメモリのある領域が割当てられる。命令内の通常のオプコードは、テーブルとテーブルへのインデックスとを識別するコードに置き換えられる。コードは圧縮されないオプコードよりも少ないビットを含む。その結果、命令が圧縮される。
【0024】
この技術はさまざまなプロセッサアーキテクチャに対して実現されるが、この技術は多数のオプコード(すなわち、サブ命令の各々に対するもの)を含むVLIW命令に対して特に有利である。一実施例においては、命令の特別なコードビットの間の1つのビットが、VLIW命令が圧縮されているかまたは圧縮されていないかを明示するために割当てられる。たとえば、ある実施例においてはVLIW命令に対するオプコード圧縮は全か無かである。すなわち、すべてのサブ命令オプコードが圧縮されるかいずれもされないかである。NOP命令オプコードを圧縮するための十分な方法が存在するので、代替的な従来の方法を用いてこの発明の実施例の圧縮命令形式の中のNOPサブ命令を識別してもよい。
【0025】
この発明の1つの局面によると、共通して用いられるオプコードのテーブルはリアルタイム処理の間に動的に更新され、上書きされ、かつ置き換えられる。テーブルはアプリケーションプログラムの実行の間にストアすることができる。動的更新の利点は、より小さなテーブルサイズが効率的に命令帯域幅を減じることである。ある実施例においては、テーブルは動的である必要はなく、固定されていてもよい。広い範囲のアプリケーションプログラムに対して最も頻繁に用いられるすべてのオプコードをストアするために、そのようなテーブルは動的に更新されるテーブルよりも大きくなる。好ましい動的な実施例に対しては、テーブルはアプリケーションにカスタマイズされ、プログラム設計の一部となる。たとえば、オプコードテーブルにストアされるべきオプコードのそれぞれのテーブルを備えて異なったタスクがプログラムされる。それぞれのテーブルは次いでタスクが切替わるときにロードされる。より小さな動的オプコードテーブルは、オプコードのより効率的な選択、およびタスク切替えの間のテーブルローディングに対する低いオーバーヘッドの利点をもたらす。さらに、多数のテーブルをストアするためにプロセッサチップにスペースが割当てられる場合、1つのテーブルがアクティブにされ別のものはインアクティブにされるために、テーブルローディングオーバーヘッドはさらに減じられる。
【0026】
ある実施例においては、所与のオプコードテーブルにおける1つ以上の特定のエントリが更新される。テーブルインデックスを用いてオプコードテーブル内のどこで更新された値を書込むべきかを識別する特定の命令が含まれる。さらにある実施例にCISC様の命令が含まれ、データをメモリからより早くオプコードテーブルに転送し、テーブルをよりコンパクトにストアする。
【0027】
ある実施例においては、オプコードテーブルは不揮発性メモリから関数コール内の初期にプレローディングされる。さらに、以前のテーブルに対するポイントが維持されて、それにより関数が完了し処理がコーリングルーチンに戻った後で、コーリングルーチンに対するオプコードテーブルが復元される。
【0028】
この発明のこれらおよび他の局面ならびに利点は、添付の図面と併せて以下の詳細な説明を参照することにより、よりよく理解されるであろう。
【0029】
【特定の実施例の説明】
概要
図1は、超長命令語(VLIW)プロセッサのためのプログラムコンパイルおよび記憶のブロック図を示す。「超長命令語」VLIWという用語は、コンピュータシステムおよびプログラムアーキテクチャ、並列処理および画像処理の分野における用語であり、これは一般的にプロセッサが典型的には、64ビット以上であり多数のサブ命令からなる命令を扱うことができるアーキテクチャを指す。
【0030】
プログラムエンジニアはソースコード12を準備し、テストし、かつデバッグする。ソースコード12はアセンブラ言語または高階プログラミング言語で書かれる。ソースコードは次いでコンパイラ/アセンブラ14によってコンパイル/アセンブルされ、マシンコード16をもたらす。マシンコード16は、マシンコード16を実行すべきプロセッサを有するコンピュータのメモリ18にストアされる。
【0031】
図2を参照すると、ホストコンピュータ10は、超長命令語(VLIW)プロセッサ20、命令キャッシュ22、およびメインメモリ24を含む。好ましい実施例においては命令キャッシュ22はプロセッサ20の一部である(オンチップに位置する)。メインメモリは、メモリ18であるか、またはメモリ18からコンピュータプログラムマシンコード16を受取る。図3を参照すると、典型的なVLIWプロセッサ20アーキテクチャは、機能処理単位(FPU)28の複数のクラスタ26を含む。クラスタ26の各々は、共通の数の機能処理単位28を含む。その結果、異なったクラスタ26の機能処理単位28に1対1対応が存在する。図3は、クラスタごとに「m」個の機能処理単位の「n」個のクラスタを有する汎用アーキテクチャを示す。第1のクラスタは、(1,1)から(1,m)までの機能処理単位を有する。第2のクラスタは、(2,1)から(2,m)までの機能処理単位を有する。n番目のクラスタは、(n,1)から(n,m)までの機能処理単位を有する。したがって、n*m個の機能処理単位が存在する。クラスタ26ごとに、専用レジスタファイル27が存在する。n、m、およびn*mの値は、プロセッサ20アーキテクチャによって決定された予め規定された数である。そのような値は異なった実施例に対して変化し得る。n*mの値は、n*m機能処理単位を有するプロセッサに対するVLIW命令内に含まれ得るサブ命令の最大数に相当する予め規定された数である。
【0032】
図4を参照すると、プロセッサ20に対する命令形式30は最大n*m個のサブ命令フィールド32を含む。サブ命令フィールド32の各々の内容は処理のために対応の機能処理単位28に経路制御される。すべてのn*m個のサブ命令フィールドが埋められた命令に対しては、サブ命令はn*m個の機能処理単位28の各々に経路制御される。典型的には、すべてのn個のクラスタ26に対して1つのみのプログラムカウンタが存在する。その結果、機能処理単位は典型的にはシンクロナスに動作して所与の命令のサブ命令を同時実行する。
【0033】
サブ命令フィールド32iが空である場合、命令30は従来の技術を用いて圧縮される。その結果、命令によって占有されていたメモリスペースが減じられる。この発明は、多数のクラスタ26の対応の機能処理単位28に対して冗長なサブ命令が存在する場合命令サイズを圧縮するさらなる技術に関する。特に、画像計算アルゴリズムのタイトループにおいては、同じサブ命令が多数のクラスタにおいて実行されるのが認識されている。従来的には、サブ命令はサブ命令フィールド32の各々で繰返され、命令キャッシュ20のメモリスペースの非効率的な使用およびメモリ転送帯域幅の非効率的な適用をもたらした。この発明の局面による圧縮された命令形式においては、サブ命令が多数の機能処理単位28の間で共用される。
【0034】
VLIW圧縮命令形式
図5を参照すると、それぞれのサブ命令36をストアする「n×m」個のサブ命令フィールド32を含む、圧縮されない命令34の例が示される。あるサブ命令フィールド32は空白であり得る(たとえば、フィールド32(2,1))。あるサブ命令フィールドは別のサブ命令フィールドど同じサブ命令を含み得る。サブ命令フィールド32の各々は、特定のクラスタ26の特定の機能処理単位28に関連付けられる。示される例においては、サブ命令フィールド(1,1)から(1,m)までは、クラスタ1のそれぞれの機能処理単位(1,1)から(1,m)までにに関連付けられる。サブ命令フィールド(2,1)から(2,m)まではクラスタ2のそれぞれの機能処理単位(2,1)から(2,m)までに関連付けられる。サブ命令フィールドの各々は同様に、サブ命令フィールド(n,1)から(n,m)までがクラスタnのそれぞれの機能処理単位(n,1)から(n,m)までに関連付けられる。
【0035】
クラスタ1からnの各々に対する機能処理単位(_,1)はここで対応の機能処理単位と呼ばれることに留意されたい。特に、それらは多数のクラスタの各々の、対応の第1の機能処理単位と呼ばれる。対応の機能処理単位(_,i)によって処理するための所与の命令内に同じサブ命令が含まれている場合、命令形式は圧縮されて冗長性をなくす。同じサブ命令が含まれているが、対応しない機能処理単位(_,i)および(_,j)へのものである場合、冗長性は対処されないことに留意されたい(すなわち、命令形式は必ずしも圧縮されなくてもよい)。ある実施例においてはこれらの冗長性もまた対処されるが、好ましい実施例においてはこれらは無視される。そのような冗長性が無視されるのは、これらが対応の機能処理単位に向けられるサブ命令の間の冗長性の対処における利得に匹敵するほどの、効率性における利得をもたらさないためである。
【0036】
図6を参照すると、空白フィールドが省かれた従来の圧縮された形式34′で例示的な命令34が示される。圧縮されない形式において空白フィールドが生じるであろう位置はアスタリスク(「*」)で示す。
【0037】
図7を参照すると、この発明の局面に従った圧縮された形式34″における例示的な命令34が示される。圧縮された形式において、命令圧縮制御ビットの組37のための領域と、1つ以上の、好ましくは空ではないサブ命令フィールドとが存在する。同じサブ命令をストアする対応のFPU(_,i)に対するサブ命令フィールドは、対応の機能処理単位のうちの1つのみに対するサブ命令を含むよう減じられる。そのような対応の機能処理単位はサブ命令を共用する。
【0038】
示される例示的な命令に関しては、第1のクラスタおよびn番目のクラスタの両方の第2の機能処理単位に向けられるサブ命令は、共通のサブ命令を有することに留意されたい。これらのFPU(1,2)および(n,2)は対応の機能処理単位である。したがって、冗長なサブ命令は省かれる。さまざまな実施例において冗長なサブ命令は第1の発生、第2の発生または他の発生において省かれる。示される実施例においては第1の発生以外のすべてが省かれる。圧縮されない形式において、省かれた冗長フィールドが発生するであろう位置はダブルアスタリスク(「**」)で示す。また、空のサブ命令フィールドもまた圧縮されていることに留意されたい。さまざまな実施例において、従来の圧縮技術もまた実現されるか否かに応じて空のフィールドは圧縮されても圧縮されなくてもよい。
【0039】
また、サブ命令フィールド32(1,m)および32(2,2)の各々は共通のサブ命令「C」を有することに留意されたい。ある実施例においては圧縮動作が行なわれてこの冗長を避ける。しかしながら、このような冗長は頻繁には発生しないことが見出されたので、好ましい実施例においてはこの冗長は「そのまま」残される。同様に、サブ命令フィールド32(n,1)および32(n,3)もまた共通のサブ命令「E」を有する。これらは共通のクラスタ内でFPUに対して向けられる。ある実施例においては、圧縮動作が行なわれてこの冗長性を避ける。しかしながら、このような冗長は頻繁には発生しないことが見出されたので、好ましい実施例においてはこの冗長は「そのまま」残される。
【0040】
命令圧縮制御ビットの組37は、対応の機能処理単位がサブ命令を共用するべき起こり得る条件の各々を識別するために十分なビットを含む。たとえば、クラスタごとに「m」個のFPUの2つのクラスタがある場合、組37は「m」個の制御ビットを含む。クラスタごとに2つのFPUの「n」個のクラスタがある場合、組37は「n」個の制御ビットを含む。クラスタごとに「m」個のFPUの「n」個のクラスタを有するアーキテクチャにおいては、ベストモードの実施例における組37はn+m個のの制御ビットを含むが、ここでn>2であり、m>2である。他の実施例においては制御ビットの数は変化し得る。以下のテーブル1は、クラスタごとに2つの機能処理単位の2つのクラスタが存在するアーキテクチャに対するビット符号化を示す。そのようなアーキテクチャに関しては、組37内に2つの制御ビットが存在する。
【0041】
テーブル1:制御ビット符号化
00 サブ命令共用なし
01 圧縮された形式における第1のサブ命令がFPU(_,1)によって共用される
10 圧縮された形式における第2のサブ命令がFPU(_,2)によって共用される
11 圧縮された形式における第1のサブ命令がFPU(_,1)によって共用され、かつ圧縮された形式における第2のサブ命令がFPU(_,2)によって共用される
【0042】
以下のテーブル2は、クラスタごとに3つの機能処理単位の2つのクラスタが存在するアーキテクチャのためのビット符号化を示す。そのようなアーキテクチャに対しては、組37内に3つの制御ビットが存在する。
【0043】
テーブル2:制御ビット符号化
000 サブ命令共用なし
001 圧縮された形式における第1のサブ命令はFPU(_,1)によって共用される
010 圧縮された形式における第2のサブ命令はFPU(_,2)によって共用される
011 圧縮された形式における第1のサブ命令はFPU(_,1)によって共用され、圧縮された形式における第2のサブ命令はFPU(_,2)によって共用される
100 圧縮された形式における第3のサブ命令はFPU(_,3)によって共用される
101 圧縮された形式における第1のサブ命令はFPU(_,1)によって共用され、圧縮された形式における第3のサブ命令はFPU(_,3)によって共用される
110 圧縮された形式における第2のサブ命令はFPU(_,2)によって共用され、圧縮された形式における第3のサブ命令はFPU(_,3)によって共用される
111 圧縮された形式における第1のサブ命令はFPU(_,1)によって共用され、圧縮された形式における第2のサブ命令はFPU(_,2)によって共用され、圧縮された形式における第3のサブ命令はFPU(_,3)によって共用される
【0044】
さまざまな実施例において、2つ以上の対応のFPU(_,i)の間で共用されるべきサブ命令が存在する潜在的な圧縮条件の各々を識別するために実現し得るさまざまな符号化方策が存在する。
【0045】
命令ごとに大量の制御ビットを加えることは望ましくないおそれがあるので、圧縮条件のサブセットは減じられた数の制御ビットによって識別され得る。たとえば、クラスタごとに2つのFPUを備えた4つのクラスタアーキテクチャにおいては、4つの制御ビットを上に明記されるものと同じ方法で用いるか、または3つの制御ビットを以下のテーブル3に説明されるように用いることができる。
【0046】
テーブル3:制御ビット符号化
000 サブ命令共用なし
001 圧縮された形式における第1のサブ命令がすべてのFPU(i,1)によって共用される、i=1,4
010 圧縮された形式における第2のサブ命令がFPU(i,2)によって共用される、i=1,4
011 圧縮された形式における第1のサブ命令がFPU(i,1)によって共用され、圧縮された形式における第2のサブ命令がFPU(i,2)によって共用される、i=1,4
100 圧縮された形式における第1のサブ命令がFPU(1,1)、(3,1)によって共用され、圧縮された形式における第2のサブ命令がFPU(1,2)、(3,2)によって共用され、圧縮された形式における第3のサブ命令がFPU(2,1)、(4,1)によって共用され、圧縮された形式における第4のサブ命令がFPU(2,2)、(4,2)によって共用される
101 圧縮された形式における第1のサブ命令はFPU(1,1)、(2,1)によって共用され、圧縮された形式における第2のサブ命令がFPU(1,2)、(2,2)によって共用され、圧縮された形式における第3のサブ命令がFPU(3,1)、(4,1)によって共用され、圧縮された形式における第4のサブ命令がFPU(3,2)、(4,2)によって共用される
110 圧縮された形式における第1のサブ命令がFPU(1,1)、(2,1)によって共用され、圧縮された形式における第2のサブ命令がFPU(1,2)、(2,2)によって共用され、第3から第6までのものは共用されない
111 第1から第4のものは共用されず、圧縮された形式における第5のサブ命令がFPU(3,1)、(4,1)によって共用され、圧縮された形式における第6のサブ命令はFPU(3,2)、(4,2)によって共用される
【0047】
当業者においては、異なった符号化方策を実現して、さまざまなサブ命令共用条件を識別し得ることを理解するであろう。異なった復号化アーキテクチャが異なった符号化方策に付随し、所望のサブ命令共用方策を実現するであろう。
【0048】
サブ命令共用
図9を参照すると、制御ビットの組を復号化し、かつもしサブ命令が存在すればそれらのうちいずれがVLIWプロセッサの対応のFPUの間で共用されるべきかを判断するための例示的な多重化方策が示される。一実施例においては、プロセッサ20はそのような符号化およびサブ命令共用を行なうための論理を含む。示される実施例においては、クラスタごとに2つの機能単位28の2つのクラスタ26が存在する。VLIW命令42は、命令キャッシュ22から検索され、制御ビットの組37の条件に基づいてパーズされる。そのような実施例に対するVLIW42命令は、2つ、3つまたは4つのサブ命令フィールド32を含む。
【0049】
マルチプレクサ44は、第2のクラスタの第1の機能単位を命令42の第1のサブ命令フィールドおよび第3のサブ命令フィールドに結合する。マルチプレクサ46は、第2のクラスタの第2の機能単位を命令42の第2のサブ命令フィールドおよび第4のサブ命令フィールドに結合する。上述のテーブル1における復号化方策に従うと、命令42は組37が00の符号化条件を有している場合に4つのサブ命令を含む。サブ命令の各々は別々のFPUに経路制御される。命令42は、組37が01または10の符号化条件を有する場合に3つのサブ命令を含む。01に符号化された場合、マルチプレクサ44は第1のサブ命令を選択する。こうして、クラスタ1および2の第1の機能単位は第1のサブ命令を共用する。第2のサブ命令は第1のクラスタの第2のFPUに向かう。第3のサブ命令はシフトされてマルチプレクサ46に入り、これはそのような第3のサブ命令を第2のクラスタの第2のFPUによって処理するために選択する。
【0050】
組46が10に符号化される場合、第1のサブ命令は第1のクラスタの第1のFPUに向かい、第2のサブ命令は第1のクラスタの第2のFPUに向かう。マルチプレクサ44は第3のサブ命令を選択し、それにより第3のサブ命令は第2のクラスタ内の第1のFPUに向かう。マルチプレクサ46は第2のサブ命令を選択し、それにより第2のサブ命令は第1のクラスタの第2のFPUと第2のクラスタの第2のFPUとによって共用される。
【0051】
命令42は、組37が11の符号化条件を有する場合に2つのサブ命令を含む。そのような場合においてはマルチプレクサは第1のサブ命令をパスし、それにより第1のサブ命令は第1のクラスタの第1のFPUと第2のクラスタの第1のFPUとによって共用される。同様に、マルチプレクサ46は第2のサブ命令をパスし、それにより第2のサブ命令は第1のクラスタの第2のFPUと第2のクラスタの第2のFPUとによって共用される。
【0052】
図10(A)から(E)を参照すると、サブ命令共用は、クラスタごとにn=2クラスタおよびm=2FPUを有するプロセッサ上でさまざまな命令42Aから42Eに対して比較される。命令の各々は4つまでのサブ命令36を含む。4つのサブ命令はサブ命令が視覚的にそのデスティネーションFPUと相関するように、2つの行に構成される。特定的には、一番上の行のサブ命令は第1のクラスタの第1および第2のFPU(1,1)、(1,2)のそれぞれに向けられるのに対し、一番下の行のサブ命令は第2のクラスタの第1および第2のFPU(2,1)、(2,2)のそれぞれに向けられる。さらに、命令ビットサイズはサブ命令サイズに対して等しい32ビットであると示される。命令42ごとに示されるのは、意図された動作48(左側)、NOP圧縮のみを備えた命令50(中央)およびサブ命令共用のために圧縮された命令42(右側)である。
【0053】
以下のテーブル4は、サブ命令共用を備えるかまたはサブ命令共用を備えない、異なった命令の場合を指定するために用いられるいくつかの命令ビットを要約する。Nは命令内での空ではないサブ命令の数であり、もとの圧縮された命令は命令圧縮の後で32×Nビット長さになるであろう。しかしながら、サブ命令共用があると、命令内に冗長度に応じて異なった長さが生じ得る。たとえば、制御ビット37が00(すなわち、サブ命令共用なし)であれば、その命令に対しては32×N+2ビットであり、もとの命令と比較すると2ビットのオーバーヘッドを含む。しかしながら、制御ビット37が01または10であれば、サブ命令共用によって1つのサブ命令フィールドが省かれる。結果は32×(N−1)+2ビットであり、これはこの命令に対して30ビットを節約する。この場合に関しては、制御ビットは11であり、2つのサブ命令フィールドが省かれ、ビットの数は32×(N−2)+2であり、この命令に対して62ビットを節約する。
【0054】
【表1】
【0055】
いくつかのタイトループルーチン(2D畳み込み、2D復号FFTおよびアフィンワーピング(affine warping))がMAP1000プロセッサのためにアセンブリ言語で書かれた、画像計算プログラムにおけるサブ命令共用の実際の効果が研究された。MAP1000はクラスタごとに2つのFPUの2つのクラスタを有する。サブ命令の各々が32ビット幅であると想定して、タイトループ内の命令の数およびそれらの冗長特性は以下のテーブル5にリストされる。2D畳み込みに関しては、サブ命令共用によって節約することのできる命令ビットの数は−2×48+30×40+62×45=3894ビットであると計算された。133の命令内で、畳み込みタイトループにおける空ではないサブ命令の総数は337であった。よって、もとのプログラムサイズは337×32=10784ビットである。こうして、サブ命令共用結果はテーブル6に示すようにタイトループプログラムサイズにおいて36.1%の減少をもたらした。同様に、2D復号FFTおよびアフィンワーピングタイトループは、それぞれプログラムサイズにおいて23.9%および41.9%の減少を示した。
【0056】
【表2】
【0057】
上述のプログラムサイズ減少はタイトループに対してのみであることに留意されたい。コール機能を併せて考察する場合、サブ命令共用の結果はより長いものになるであろう。しかしながら、結果はそれでも非常に顕著である。たとえば、512×512の8ビット画像を読込み、2D畳み込みタイトループをコールし、メモリに出力画像を書込むアプリケーションプログラムを考察すると、約100キロバイトを占有する。サブ命令共用によって達成されるプログラムサイズ減少の合計は0.5%未満である。しかしながら、タイトループ外のプログラムのほとんどが一度のみ実行されるのに対し、タイトループは何度も反復されるので、ほとんどのプログラム実行時間は実際、タイトループ内で使用される。マップ1000での15×15核を備える2D畳み込みの場合においては、タイトループ実行時間は実行時間の合計の89%以上を占める。したがって、タイトループを利用可能な命令キャッシュに適合させることは、全体のプログラムサイズを減少させることよりも重要である。さらに、より洗練されたタイトループ(こうして命令のためにより多くのビットを必要とする)が開発され、および/または多数のタイトループが組合されて新しい高レベルタイトループを生成する場合、個々のタイトループのサイズができるだけ小さくされ、それにより新しいタイトループが命令キャッシュスラッシングを引起さない、すなわちタイトループを反復する間に過剰な命令キャッシュミスを起こさないことが望ましい。
【0058】
冗長なサブ命令を識別し共用するための方法
図11を参照すると、サブ命令共用機会を識別するためのフローチャート60は、所与の命令のサブ命令が、サブ命令共用条件が存在するか否かを判断するために比較されるステップ62を含む。一実施例においては、多数のクラスタの1つ以上の対応の機能処理単位(_,i)に対して現われるいずれのサブ命令も共用されるべきである。別の実施例においてはより限定された条件の組が特定の設計に従って指定される。たとえば上述のテーブル3は、限定された条件の組の例を挙げる。ステップ64において、命令圧縮制御ビットの組37はサブ命令共用条件の各々を識別するために設定される。その後に命令はステップ68においてメモリにストアされる。ある実施例においては命令は圧縮されない形式でストアされる(または、サブ命令共用圧縮なしにNOP圧縮などの従来の圧縮技術のみを用いた形式でストアされる)。別の実施例においては、命令はステップ66でサブ命令が共用されるべき冗長なサブ命令を省く。
【0059】
サブ命令共用のために冗長性を除去することなく命令がメモリ内にストアされる実施例の場合は、命令を圧縮する、またはさらに圧縮するための命令が別の時点で実行される。図12を参照すると、フローチャート69のステップ70において、命令圧縮制御ビットの組37がサブ命令共用条件を識別するためにテストされる。組37の符号化条件に従って、ステップ72において1つ以上のサブ命令が命令形式から削除される。削除されたサブ命令は冗長なサブ命令である。FPUによって共用されるべきである同一のサブ命令が残留する。その結果、圧縮された命令または、さらに圧縮された命令がもたらされる。そのような結果として生じる圧縮された命令は命令キャッシュ22、一次キャッシュまたはメインメモリ24に経路制御される。命令のサイズを減じることにより、命令キャッシュにおいて要求されるスペースおよびデータをキャッシュに移動させるために必要となる時間が減じられる。フローチャート69の方法はさまざまな実施例において、命令がメインメモリ24から命令キャッシュ22(図2を参照)に移動される場合に、または別の時点で行われる。
【0060】
図13を参照すると、命令圧縮制御ビットの組37を復号化するための方法のフローチャート74は、さまざまなサブ命令共用条件に対して制御ビットをテストするためのステップ76を含む。ステップ78において、圧縮命令42はパーズされてサブ命令をデスティネーションであるFPU28に経路制御する。サブ命令共用条件が存在する場合、サブ命令は複数の対応の機能処理単位に経路制御される。
【0061】
代替的な実施例
対応のFPUの間での冗長なサブ命令について、サブ命令を共用するケースを説明してきたが、ある実施例においては同様に包含され得る冗長なサブ命令のさらなる状況が存在する。命令が「p」個のサブ命令フィールドを含む汎用アーキテクチャに関しては、冗長なサブ命令がない状況と、ある程度の冗長がサブ命令の間に存在する、2p-1よりも少ない状況とが存在する。p=8のサブ命令フィールドが存在するアーキテクチャに関しては、28=256より少ない状況が存在する。いくつかの状況は同じ結果を表わすので、状況の数はやや256よりも少なくなる。しかしながらすべてのそのような状況をカバーするために、命令圧縮制御ビットの組37内には「p」個の制御ビットが存在する。こうして、一実施例においては命令ごとに「p」個の制御ビットが含まれる。
【0062】
しかしながら、命令幅が増大する場合、サブ命令共用のために非常に多くの付加的な制御ビットを加えることは望ましくないおそれがある。特に、実務上何度も繰返し出現する、サブ命令の間の冗長性のパターンが存在する傾向がある場合、非常に多くのビットのコストは過剰であると思われるであろう。結果として、好ましい実施例においては、予め定められた数の起こり得る2pのサブ命令共用状況を処理するための制御ビットの数がp以下に減じられる。異なったアプリケーションに対しては異なったプロセッサが設計され、サブ命令冗長のパターンも変化する。さらに、サブ命令共用の対象となるサブ命令冗長のケースもまた、所与のプロセッサに対して戦略的に選択され、プロセッサが標的とするこれらのアプリケーション(たとえば、画像処理アプリケーション)に対して最大の効果をもたらすようにされる。上のセクションで説明された好ましい実施例は、一般的な画像処理関数の戦略的に重要なタイトループにおいて発生することが見出されたサブ命令共用シナリオ状況に関連する。
【0063】
オプコード圧縮−概要
図14を参照すると、この発明の実施例に従った1つ以上のオプコード圧縮テーブルを組入れたアプリケーションプログラムを処理するためのホストシステム111は、プロセッサ202、キャッシュメモリ22、不揮発性メインメモリ24、およびユーザインターフェイス120を含み、これらは1つ以上のバス構造122によって相互接続される。ユーザインターフェイス120はディスプレイ装置124、キーボード126およびポイント/クリック装置128を含む。
【0064】
この発明のオプコード圧縮技術は、超長命令語(「VLIW」)プロセッサおよびスーパースカラプロセッサを含むさまざまなホストプロセッサ20上で実現され得る。例示的なVLIWプロセッサは、テキサス州ダラスのテキサス・インスツルメント(Texas Instruments)によって製造されるTMS320C6xおよび、日本国東京の株式会社日立製作所とカリフォルニア州キャンベルのイクエータ・テクノロジー(Equator Technologies)とによって製造されるMAP1000を含む。各々はデータストリームと命令ストリームとの両方の大量の並列性をサポートし、並列またはパイプライン化されたプログラム命令の実行を実現する。例示的なスーパースカラプロセッサは、ニューヨーク州のインターナショナル・ビジネス・マシーンズ(International Business Machines)およびイリノイ州シカゴのモトローラ・コーポレーション(Motorola Corporation)によって製造されるPowerPC604、カリフォルニア州パロアルトのインテル・コーポレーション(Intel Corporation)によるペンティアム(R)IIプロセッサ、MIPS R100000、マサチューセッツ州メイナードのデジタル・イクイップメント・コーポレーション(Digital Equipment Corporation)によるDEC Alpha21264、カリフォルニア州パロアルトのヒューレット・パッカード(Hewlett-Packard)によって製造されるPA−RISC 8000ファミリーのプロセッサ、およびカリフォルニア州サニーベイルのサン・マイクロシステムズ(Sun Microsystems)によって製造されるUltraSPARC−IIを含む。
【0065】
図15は、単一チップ上に実現された例示的なプロセッサ20を示す。示されるのはメディア加速プロセッサ(media accelerated processor)1000(MAP1000)のプロセッサアーキテクチャである。MAP1000プロセッサは、直接メモリアクセス(DMA)コントローラ129、データキャッシュ130、命令キャッシュ132およびクラスタ26と呼ばれる並列実行単位を含む。そのような構成要素の各々は共通のチップ上に存在する。クラスタ26の各々は1つ以上の機能単位28、たとえば整数演算ならびに論理単位および整数浮動小数点グラフィック演算ならびに論理単位を有する。また、クラスタ26の各々はいくつかの汎用レジスタ、いくつかの汎用レジスタ、いくつかの1ビットプレディケートレジスタおよび多数の専用レジスタを含む。
【0066】
命令形式
図16を参照すると、従来のkビットの、圧縮されないVLIW命令形式は、オプコード142、1つ以上のソースオペランドフィールド144およびデスティネーションオペランドフィールド146を含む。オプコード142の各々は、いくつかのサブ命令148に区分けされる。クラスタ26の各々の機能単位28ごとに1つのサブ命令が存在する。たとえばクラスタごとに2つの機能ユニットの2つのクラスタを有するVLIWプロセッサ20に関しては、命令は4つのサブ命令148を含む。ソースオペランドフィールド144およびデスティネーションオペランドフィールド146は同様にサブワード150に区分けされる。
【0067】
図17を参照すると、VLIW命令のオプコードが、圧縮されない形式152およびNOPサブ命令オペランドが圧縮される形式154で示される。NOPサブ命令を圧縮するための1つの従来の方法によると、残りのサブ命令の配置を識別する(よって、NOPサブ命令の位置をも識別する)マスクワード156が生成される。
【0068】
図18Aおよび図18Bを参照すると、VLIW命令のオプコードが2つのオプコード158、160に対して圧縮されない形式および圧縮された形式で示される。オプコード158においては、NOPサブ命令は存在しない。圧縮されたオプコード形式162においては、サブ命令オペランドは減じられたビット長さに圧縮される。特定的には、サブ命令148の各々はオプコードがコード163と置換えられるが、これはオプコードルックアップテーブル166(図19を参照)へ索引付けするか、そうでなければオプコードルックアップテーブル166に対して、および/またはこの中でポイントする。オプコード160においてはNOPサブ命令が存在する。好ましい実施例においてはNOPサブ命令は、従来の圧縮方法のいずれかを用いて圧縮される。次いで残りのサブ命令148オペランドが圧縮されて圧縮されたオペランド形式164を達成する。再び、残りの特定のサブ命令オペランドはコード163と置換えられ、これはオプコードルックアップテーブル166(図19を参照)へ索引付けするか、そうでなければオプコードルックアップテーブル166に対して、および/またはこの中でポイントする。
【0069】
通常の動作の間に、VLIW命令のすべてがオプコード圧縮された形式162/164を示すわけではない。いくつかのオプコードは圧縮されず、またはNOPサブ命令だけが圧縮される。しかしながら、VLIW命令のために好ましい実施例においては、オプコード圧縮方策を示すべきであるいかなるオプコード142も、すべてのサブ命令オプコードを圧縮される。しかしながら、NOPオプコードは好ましくは異なった態様で圧縮されることに留意されたい。また、ある実施例においては、サブ命令の共用はさらに、圧縮されるべきサブ命令オプコードの数を減らすことに留意されたい。
【0070】
上のセクションにおいて、サブ命令共用と呼ばれる圧縮技術について説明した。その技術によると、オプコードが冗長なサブ命令を含む特定の場合が、サブ命令共用の対象となる。特定的には、圧縮されたサブ命令共用形式において冗長なサブ命令オペランドがより少ない回数で発生する(たとえば、1回発生する)よう、冗長性が除去される。そのような技術に対する命令形式は、サブ命令オペランドに加えて1組の制御ビットを含む。制御ビットは、サブ命令共用の特別な場合を識別する(たとえば、クラスタごとの機能単位1が、圧縮サブ命令共用オプコードの特定のサブワードにストアされるものと同じサブ命令のコピーを受取る)。サブ命令共用のいくつかの場合をここで説明する。
【0071】
オプコード142が圧縮された形式であるか圧縮されない形式であるかを識別するために、制御ビット65がすべてのオプコード形式に対して用いられる。制御ビットは、サブ命令オペランドの圧縮が実行されていることを示す1つの値を有し、実行されていない(しかしながらNOP圧縮およびサブ命令共用はやはり実行されているかも知れない)ことを示す別の値を有する。
【0072】
図20を参照すると、オプコード形式は圧縮されない形式142およびさまざまな圧縮タイプの形式において示される。形式154はNOP圧縮された形式154におけるオプコードに対応する。形式170は、NOP圧縮およびサブ命令共用を示すオプコードに対応する。形式172は、NOP圧縮、サブ命令共用およびオプコード圧縮の各々を示すオプコードに対応する。動作の間に、プロセッサ20はこれらの形式のいずれかまたはすべてを、別々にまたは累積して実行し得る。
【0073】
図21(A)を参照すると、たとえばRISCおよび/またはスーパースカラアーキテクチャを有するプロセッサ20に対して実現される単一命令形式80が示される。命令は、オプコード82、1つ以上のソースオペランドフィールド84およびデスティネーションオペランドフィールド86を含む。この発明は、データオペランドに対して圧縮方策が実施されているか否かに拘らずオプコード圧縮に関連するので、オプコードの圧縮についてのみここで説明する。図21(B)の圧縮オプコード形式92においては、オプコードは減じられたビット長さ形式に圧縮される。特定的には、オプコード82はコード94と置換えられ、これはオプコードルックアップテーブル166(図19を参照)へ索引付けするか、そうでなければオプコードルックアップテーブル166に対して、および/またはこの中でポイントする。オプコード82が圧縮された形式であるか、または圧縮されない形式であるかを識別するために、制御ビット65がオプコード形式82、92に対して用いられる。制御ビットは、サブ命令オペランドの圧縮が実行されていることを示す1つの値と、実行されていない(しかしながら、NOP圧縮およびサブ命令共用はやはり実行されているかも知れない)ことを示す別の値とを有する。
【0074】
オプコードテーブル
図19は、複数のエントリ168を有するオプコードルックアップテーブル166を示す。ホストプロセッサ20に対する一部のオプコードは、オプコードテーブル168にエントリを有する。好ましい実施例においては、小さな、選択されたオプコードのサブセットがテーブル168にストアされる。ベストモードの実施例においては、オプコードテーブル166の内容はコンパイルの間に規定され、それにより所与のアプリケーションに対してカスタマイズされる。いくつかの実施例においては、オンチップメモリ上で代替的にアクティブになり現在のオプコードテーブルとしての役割を果たし得る複数のオプコードが存在する。オプコードテーブルは、タスク切替の間にタスクに対してロードされる。したがって、テーブルサイズを小さく保つと、ローディングオーバーヘッドが最小化される。さらにテーブルへのエントリを戦略的に選択することにより、テーブルはタスクに対して効率的になる。
【0075】
特定的な実施例においては、オプコードテーブルが関数コールまたはタスクコールごとのコンパイルの間に生成される。関数がアクティブになると、対応のオプコードテーブルがシステムメモリから(たとえば、不揮発性メモリ24またはキャッシュメモリ22から)オンチップメモリ132(たとえば、オンチップ命令キャッシュメモリまたはオンチップデータメモリ)にロードされる。そのような場合に、以前のバージョンのオプコードテーブルは退避されるかまたは上書きされる。退避される場合の実施例においては、アドレスも退避される。関数が完了すると、以前のオプコードテーブルのアドレスは検索されて、それにより以前のオプコードテーブルがプロセッサ20によって用いられる現在のオプコードテーブルとなる。そのような技術を用いると、コード163/94はテーブルアドレスを含む必要がなく、テーブルへのインデックスのみを含んでいればよい。他の実施例、たとえば多数のオプコードテーブルが同時にアクティブになることを許すものにおいては、コードは特定のテーブルをもポイントする。
【0076】
いくつかの実施例においては、さまざまなオプコードテーブルがプロセッサチップ上にキャッシュされる。所与の時間に1つのテーブルが現在のオプコードテーブルとしてアクティブである。そのような現在のステータスはプログラムのさまざまな部分の実行、またはプログラムの変更の間に動的に変化する。
【0077】
最も頻繁に発生する特定のオプコードは、実行される関数、タスクおよびアプリケーションプログラムに依存するが、殆どの画像処理アプリケーションに対して、オプコードテーブルにストアするためのオプコードの有効数は、10−20のオーダであることが経験的に見出された。これは、典型的なスーパースカラまたはVLIWプロセッサのオペランド命令セットの全体よりも実質的に少ない。特定的には、この発明者らによる1つの研究においては、殆どの画像処理関数によって用いられるオプコードの約90%またはそれ以上を保持するのに16エントリのルックアップテーブルが十分に大きいことが見出された。特に、発明者らはすべての命令圧縮および命令ルックアップテーブルを実現するのではなく、オプコード圧縮およびオプコードテーブルを生成すると、有効な性能に対するエントリの数は実質的により少ないことを見出した。
【0078】
16エントリテーブルに対しては、4ビットのみがテーブル166へのインデックスを規定すればよい。しかしながら別の実施例においては、テーブルサイズは変化することがあり、したがってコード163/94を規定するビットの数も変動するであろう。エントリの各々(すなわち圧縮されないオプコード)が12ビットを占有する16エントリテーブルにおいては、合計192ビットが単一のオプコードテーブルに対して用いられる。したがって、テーブルサイズは小さく、オプコードテーブルローディングおよびタスク切替の間に殆どオーバーヘッドを伴わない。これは特に、テーブルが頻繁に更新されるマルチスレッド処理のために有利である。
【0079】
オプコード圧縮動作
いくつかの実施例においては、オプコードテーブルは所与のプロセッサに対して専用である。しかしながら好ましい実施例に従うと、オプコードテーブルは所与のアプリケーションプログラムのためにソフトウェア内で規定される。図22を参照して、コンパイラ100はステップ102を実行してソースコードのリストをマシン言語にコンパイルし、コンピュータシステムにインストールする。そのようなコンパイルの間に、コンパイルはオプコードケーブル内にストアするための1組のオプコードを選択するステップ104を実行する。そのような選択および記憶は、プログラム全体またはプログラムの一部のいずれかに対して行なわれる。たとえば、オプコードの組は関数、タスクまたはプログラムの他のモジュラー編成単位ごとに選択される。実施例の変形においては、生成されるテーブルの数は編成の方法(たとえば、プログラム全体、関数、他の単位)によって変化し得る。好ましくは、すべてのオプコードテーブルは同じサイズである。
【0080】
実施例の変形においては、どのオプコードをオプコードテーブルにストアするかを選択するために用いられる方策は変化し得る。好ましい実施例においては、最も頻繁に発生するオプコードが選択される。他の選択方策も実現し得る。
【0081】
図23を参照すると、ステップ108においてアプリケーションプログラムがコンピュータシステム111のシステムメモリ19(図25を参照)に実行のためにインストールされる。他の実施例においてはアプリケーションは計算システム上の組込コンピュータプログラムとしてストアされる。ステップ110においてアプリケーションプログラムが実行される。
【0082】
図24を参照すると、アプリケーションプログラム114のフローチャート112の動作は、1つ以上のオプコードテーブル240、242(図25を参照)の使用に関するいくつかのステップを含む。ステップ116においては、アプリケーションプログラムが実行のためにロードされる。そのようなステップは典型的には、アプリケーションプログラムの全部または一部を、不揮発性メモリ24からキャッシュメモリ22などのランダムアクセスメモリにロードするステップを含む。プログラム命令のいくつかの部分は、プロセッサのオンチップメモリ132にロードされる。
【0083】
プログラムの実行の間に、コンパイルの間に規定された1つ以上のオプコードテーブル240、242がオンチップメモリ132にロードされる。ある実施例においては、多数のオプコードテーブルが同時にオンチップメモリに存在する。他の実施例においては、所与の時間に1つのオプコードテーブルだけがオンチップメモリに存在する。いずれの場合においても、ポインタ246によって示される、所与の時間現在にアクティブであるオプコードテーブルが存在する。プロセッサが命令をパーズし、コード65/94がオプコード圧縮がその命令に対してアクティブであることを示すと、プロセッサはアクティブなオプコードテーブルを参照して圧縮命令形式162/164/172/92において示されるオプコードを検索する。
【0084】
たとえば、ステップ118において、関数Aの実行のための準備が開始する。そのような準備に含まれるのは、ステップ120において関数Aによって用いられるオプコードテーブルのアクティブ化である。そのようなアクティブ化は、現在のオプコードテーブルポインタ246における対応のオプコードテーブルのオンチップアドレスをストアするステップを含む。もしテーブルが既にオンチップにロードされていなければ、ステップはまたテーブルをオンチップメモリにロードするステップをも含む。ステップ122において、関数Aがさらに実行される。オプコード圧縮が用いられていることを示すコード65を有する如何なる命令も、プロセッサによってパーズされ、オプコードテーブルへのインデックスを識別する。VLIW命令に対しては、多数のインデックスが存在し得る。RISCまたはスーパースカラ命令に対しては、1つのオプコードのみが存在し得る。存在するインデックスの各々は、オプコードを検索するために用いられる。次いでオプコードが実行される。関連する命令内のソースオペランドおよびデスティネーションオペランドフィールドは、実行されるオプコードに対応するマイクロコードに基づいて処理される。
【0085】
アプリケーションプログラムに対して1つ以上のオプコードテーブルが規定される実施例においては、別のオプコードテーブルが先行のオプコードテーブルに現在アクティブなオプコードテーブルとして置換わる状況がある。たとえば、ステップ124において、関数Bが実行のためにコールされる。関数Bの実行に備えて、関数Bの処理のために用いられるべきオプコードテーブルはステップ126において現在のオプコードテーブルとなるようアクティブ化される。そのようなアクティブ化は、対応のオプコードテーブルを現在のオプコードテーブルポインタ246のオンチップアドレスにストアすることを含む。もしテーブルが既にオンチップにロードされていなければ、ステップはまたテーブルをオンチップメモリにロードすることをも含む。ステップ128において、関数Bが実行される。関数Bの完了の際に、先行のオプコードテーブルが現在のオプコードテーブルとして復元される。そのような復元は、制御が戻されるプログラムの一部に対するオプコードテーブルのアクティブ化と同様である。したがって、関数Aに対するオプコードテーブルは、アクティブなオプコードテーブルとして復元される。
【0086】
一実施例においては、関数Aに対するオプコードテーブルのアドレスが、関数Bがコールされたときにスタック248にプッシュされる。関数Bが完了すると、アドレスはスタック248から検索されて、関数Aに対するオプコードテーブルアドレスを識別する。ステップ132において関数Aの処理が再開する。
【0087】
共通して用いられるオプコードのテーブルはリアルタイムの処理の間に動的に更新され、上書きされかつ置換えられる。たとえば、テーブルは、アプリケーションプログラムまたはタスクの実行の間にストアされ、アプリケーションプログラムまたはタスクごとに変更される。動的な更新の利点とは、より小さなテーブルサイズが効率的に命令帯域幅を減じることである。
【0088】
いくつかの実施例においては、テーブルは動的である必要はなく、固定されていてもよい。たとえば、広い範囲のアプリケーションプログラムに対して最も頻繁に用いられるすべてのオプコードをストアするためには、そのようなテーブルは動的に更新されるテーブルよりも大きくなるであろう。好ましい動的実現化のためにテーブルはアプリケーションに対してカスタマイズされ、プログラム設計の一部となる。たとえば、オプコードテーブルにストアされるべきオプコードのそれぞれのテーブルを備えて、異なったタスクがプログラムされる。次いでそれぞれのテーブルはタスク切替の際にロードされる。より小さな動的なオプコードテーブルは、オプコードの効率的な選択の利点と、タスク切替の間のテーブルローディングに対する低いオーバーヘッドとをもたらす。さらに、多数のテーブルをストアするためにプロセッサチップ上にスペースが割当てられている場合、1つのテーブルがアクティブにされ別のものがインアクティブにされるので、テーブルローディングオーバーヘッドはさらに減じられる。
【0089】
ある実施例においては、所与のオプコードテーブル内の1つ以上の特定のエントリが更新される。オプコードテーブル内のどこで更新された値を上書きするべきかを識別するためにテーブルインデックスを用いる特別な命令が含まれる。さらに、ある実施例においては、データをメモリからオプコードテーブルにより早く転送し、かつテーブルによりコンパクトにストアするためのCISC様の命令が含まれる。
【0090】
ある実施例においては、、オプコードテーブルは関数コールの早期に不揮発性メモリからプレロードされる。さらに、先行のテーブルに対するポインタは維持され、それにより、関数が完了し処理がコーリングルーチンに戻った後で、オプコードテーブルはコーリングルーチンに対して復元される。
【0091】
価値のある有利な効果
この発明の利点は、命令キャッシュにおいて必要となる命令スペースが、VLIW命令に対して効率的に減じられることである。特に、画像処理アルゴリズムの間に実行され、占有タイトループを有するいくつかの関数に対しては、スラッシングが発生するであろう場合にも、スラッシングなしにタイトループを維持することが可能である。
【0092】
別の利点とは、VLIWサブ命令においていくらかの冗長性をなくすことにより、より少ないビットのみが必要となり、よってプログラムサイズが減じられることである。さらに、命令キャッシュ利用の効率性が向上し、かつ命令フェッチ帯域幅が増大する。
【0093】
この発明の好ましい実施例を例示し説明してきたが、さまざまな代替例、変形および等価物を用い得る。したがって、上述の説明は前掲の特許請求の範囲によって規定されるこの発明の範囲を限定するものと解してはならない。
【図面の簡単な説明】
【図1】 VLIW命令を有するコンピュータプログラムの開発および記憶のブロック図である。
【図2】 VLIWプロセッサを有するコンピュータシステムの部分的なブロック図である。
【図3】 VLIWプロセッサアーキテクチャのブロック図である。
【図4】 図3のプロセッサに対するさまざまなサブ命令フィールド内容のデスティネーションを識別する、VLIW命令形式の図である。
【図5】 例示的な圧縮されないVLIW命令の図である。
【図6】 NOPサブ命令を除去するためのVLIW命令の図である。
【図7】 サブ命令共用を実現するためのこの発明の実施例に従って圧縮されたVLIW命令の図である。
【図8】 図7の命令に含まれる制御ビットの組の図である。
【図9】 さまざまなサブ命令共用条件を判断するための命令の制御ビットを復号化するための多重化アーキテクチャの図である。
【図10】 (A)から(E)は、命令の意図された分散、NOP圧縮を備えた命令、およびサブ命令共用のための形式における命令を示す例示的な命令の図である。
【図11】 命令圧縮制御ビットを設定するための方法のフローチャートである。
【図12】 サブ命令共用のための命令を圧縮するための方法のフローチャートである。
【図13】 さまざまなサブ命令共用条件を識別するための命令圧縮制御ビットを復号化するための方法のフローチャートである。
【図14】 例示的なホスト処理システムのブロック図である。
【図15】 この発明の実施例に従ってオプコード圧縮が実施される例示的なプロセッサのブロック図である。
【図16】 従来の圧縮されないVLIW命令形式の図である。
【図17】 従来のNOP圧縮を有するVLIW命令の図である。
【図18】 (A)および(B)は、この発明の実施例に従った、オプコード圧縮と、オプコード圧縮およびNOP圧縮の両方とを示すVLIW命令の図である。
【図19】 この発明の実施例に従ったオプコードテーブルの図である。
【図20】 圧縮されない形式、NOP圧縮された形式、サブ命令共用形式およびオプコード圧縮された形式を含む、進行形式(progressive format)におけるVLIW命令の図である。
【図21】 (A)および(B)は、RISCまたはスーパースカラプロセッサアーキテクチャに対する圧縮されない形式およびオプコード圧縮された形式における命令の図である。
【図22】 この発明の実施例に従った1つ以上のオプコードテーブルを規定するコンパイル動作のフローチャートである。
【図23】 アプリケーションプログラムをインストールし実行するためのフローチャートである。
【図24】 この発明の実施例に従った、オプコード圧縮実現化を例示する図23のアプリケーションプログラムの関連部分の実行のフローチャートである。
【図25】 この発明の実施例に従った、オプコードテーブルをロードするためのメモリ編成の図である。
【符号の説明】
26 クラスタ、27 クラスタのためのレジスタファイル、28 機能処理単位。
Claims (17)
- 超長命令語アーキテクチャを有するプロセッサ上の複数のクラスタの機能処理単位の間の所与の命令におけるサブ命令の共用方法であって、前記所与の命令は制御ビットの組および少なくとも第1および第2のサブ命令を含み、前記プロセッサは複数のクラスタを含み、前記複数のクラスタの各々は複数の機能処理単位を含み、前記方法は、
制御ビットの組をテストして第1の所定の条件を識別するステップと、
前記第1の所定の条件が識別された場合、前記所与の命令の前記第1のサブ命令を、前記複数のクラスタの前記第1のクラスタの第1の機能処理単位および前記第2のクラスタの第1の機能処理単位に経路制御するステップと、
前記制御ビットの組をテストして第2の所定の条件を識別するステップと、
前記第2の所定の条件が識別された場合、前記所与の命令の前記第2のサブ命令を、前記複数のクラスタの前記第1のクラスタの第2の機能処理単位および前記第2のクラスタの第2の機能処理単位に経路制御するステップと、
前記第1のサブ命令を前記第1のクラスタの前記第1の機能処理単位で、前記第1のサブ命令を前記第2のクラスタの前記第1の機能処理単位で、前記第2のサブ命令を前記第1のクラスタの前記第2の機能処理単位で、および前記第2のサブ命令を前記第2のクラスタの前記第2の機能処理単位で同時実行するステップとを備えることを特徴とするサブ命令の共用方法。 - 超長命令語アーキテクチャを有するプロセッサで実行するべきコンピュータプログラムの命令のストア方法であって、
命令の各々は、少なくとも1つのサブ命令から第1の所定数のサブ命令までの間のサブ命令を含み、前記第1の所定数は少なくとも2であり、
前記プロセッサは、第2の所定数に等しい複数のクラスタに編成され、前記複数のクラスタの各々は、共通の個数の機能処理単位からなり、前記共通の個数と前記第2の所定数との積は前記第1の所定数と等しく、
前記第1の所定数のサブ命令を有する所与の命令に対しては、前記複数のクラスタの機能処理単位の各々が、前記所与の命令のそれぞれのサブ命令を実行するためのものであり、前記方法は、
前記所与の命令内で冗長なサブ命令が1度以上発生するパターンを識別するステップと
、
前記パターンは所定のパターンの組の中のものか否かを判断するステップと、
前記パターンが前記所定のパターンの組の中のものである場合、前記命令に対する制御ビットの組を設定して前記パターンが存在することを示すステップとを備えることを特徴とする命令のストア方法。 - 前記パターンが前記所定のパターンの組の中のものである場合、圧縮された命令を得るために所与の命令内の冗長なサブ命令の1つの発生を削除することにより、所与の命令を圧縮するステップをさらに含むことを特徴とする請求項2に記載の命令のストア方法。
- 圧縮された命令を命令キャッシュ内に移動するステップと、
圧縮された命令の制御ビットの組をテストして、圧縮された命令に対してサブ命令共用が発生することを識別する条件を判断するステップと、
サブ命令共用が発生すると判断された場合、圧縮された命令をパーズして、冗長なサブ命令を識別された条件によって判断された複数の機能処理単位に経路制御するステップと、
サブ命令を、前記複数の機能処理単位で同時実行するステップとをさらに備えることを特徴とする請求項3に記載の命令のストア方法。 - 超長命令語アーキテクチャを有するプロセッサ上で実行するためのコンピュータプログラムの命令のストア方法であって、
命令の各々は、少なくとも1つのサブ命令から第1の所定数までのサブ命令を含み、前記第1の所定数は少なくとも4であり、
プロセッサは第2の所定数に等しい複数のクラスタに編成され、前記複数のクラスタの各々は共通の個数の機能処理単位を含み、前記共通の個数と前記第2の所定数との積は前記第1の所定数と等しく、前記方法は、
所与の命令に対して、前記複数のクラスタの第1のクラスタの第1の機能単位によって処理されるべき第1のサブ命令と、前記複数のクラスタの第2のクラスタの第1の機能単位によって処理されるべき第2のサブ命令とを比較するステップと、
前記第1のサブ命令が前記第2のサブ命令と同じである場合、前記所与の命令に関連の制御ビットの組の第1の制御ビットを、前記第2のサブ命令が前記第1のサブ命令と等しいことを示す第1の論理状態に設定するステップと、
前記所与の命令に対して、前記複数のクラスタの前記第1のクラスタの第2の機能単位によって処理されるべき第3のサブ命令と、前記複数のクラスタの前記第2のクラスタの第2の機能単位によって処理されるべき第4のサブ命令とを比較するステップと、
第3のサブ命令が第4のサブ命令と同じである場合、前記所与の命令に関連の制御ビットの組の第2の制御ビットを第4のサブ命令が第3のサブ命令と等しいことを示す第2の論理状態に設定するステップと、
第1の制御ビットおよび第2の制御ビットを備えた前記所与の命令をストアするステップとを備えることを特徴とする命令のストア方法。 - 前記ストアするステップは、所与の命令を圧縮されない形式にストアするステップを含み、所与の命令を圧縮された形式に圧縮するステップと、所与の命令を圧縮された形式でキャッシュにストアするステップとをさらに含み、前記圧縮するステップは、
所与の命令に関連する第1の制御ビットをテストするステップと、
前記第1の制御ビットが前記第1の論理状態と等しい場合に、所与の命令を圧縮してサイズを減じて、等しい前記第1のサブ命令と前記第2のサブ命令とのうちの1つのコピーを省いて、前記第1のサブ命令および前記第2のサブ命令の冗長な記憶を避けるステップと、
所与の命令に関連する前記第2の制御ビットをテストするステップと、
前記第2の制御ビットが前記第2の論理状態と等しい場合に、所与の命令を圧縮してサイズを減じて、等しい前記第3のサブ命令と前記第4のサブ命令とのうちの1つのコピー
を省いて、前記第3のサブ命令および前記第4のサブ命令の冗長な記憶を省くステップ72とを備えることを特徴とする請求項5に記載の命令のストア方法。 - 前記ストアするステップは、所与の命令を圧縮された形式でストアするステップを含み、前記ストアするステップの前に、所与の命令を圧縮された形式に圧縮するステップをさらに含み、前記圧縮するステップは、
前記第1の制御ビットが前記第1の論理状態と等しい場合に、所与の命令を圧縮してサイズを減じて、等しい前記第1のサブ命令と前記第2のサブ命令とのうちの1つのコピーを省いて、前記第1のサブ命令および前記第2のサブ命令の冗長な記憶を避けるステップと、
前記第2の制御ビットが前記第2の論理状態に等しい場合に、所与の命令を圧縮してサイズを減じて、等しい前記第3のサブ命令と前記第4のサブ命令とのうちの1つのコピーを省いて、前記第3のサブ命令および前記第4のサブ命令の冗長な記憶を省くステップとを備えることを特徴とする請求項5に記載の命令のストア方法。 - 所与の命令を圧縮された形式でキャッシュにストアするステップをさらに含むことを特徴とする請求項7に記載の命令のストア方法。
- 所与の命令を前記第1の制御ビットおよび前記第2の制御ビットを備えて圧縮された形式でキャッシュにストアするステップを含み、前記圧縮された形式は、前記第1の制御ビットが前記第1の論理状態に設定されている場合に、前記第1のサブ命令の記憶と前記第2のサブ命令の記憶とを組合せて第1の組合された記憶にし、前記圧縮された形式は、前記第2の制御ビットが前記第2の論理状態に設定されている場合に、前記第3のサブ命令の記憶と前記第4のサブ命令の記憶とを組合せて第2の組合された記憶にし、
さらに前記第1の制御ビットをテストするステップと、
前記第1の制御ビットが前記第1の論理状態に設定されている場合、前記第1の組合された記憶の内容を、前記第1のクラスタの前記第1の機能処理単位および前記第2のクラスタの前記第1の機能処理単位に経路制御して、前記第1のクラスタの前記第1の機能処理単位および前記第2のクラスタの前記第1の機能処理単位による同時実行を行なわせるステップと、
前記第2の制御ビットをテストするステップと、
前記第2の制御ビットが前記第2の論理状態に設定されている場合、前記第2の組合された記憶の内容を、前記第1のクラスタの前記第2の機能処理単位および前記第2のクラスタの前記第2の機能処理単位に経路制御して、前記第1のクラスタの前記第2の機能処理単位および前記第2のクラスタの前記第2の機能処理単位による同時実行を行なわせるステップとを備えることを特徴とする請求項5に記載の命令のストア方法。 - 超長命令語アーキテクチャを有するプロセッサ上で実行するためのコンピュータプログラムの命令を圧縮された形式に圧縮する命令圧縮方法であって、
前記命令の各々は、少なくとも1つの第1の所定数までのサブ命令を含み、前記第1の所定数は少なくとも4であり、
前記プロセッサは、第2の所定数に等しい複数のクラスタに編成され、前記複数のクラスタの各々は、共通の個数の機能処理単位28を含み、前記共通の個数と前記第2の所定数との積は前記第1の所定数に等しく、
前記方法は、
所与の命令に対して、前記複数のクラスタの第1のクラスタの第1の機能単位によって処理されるべき第1のサブ命令と、前記複数のクラスタの第2のクラスタの第1の機能単位によって処理されるべき第2のサブ命令とを比較するステップと、前記第1のサブ命令が前記第2のサブ命令と同じである場合、所与の命令を前記第1のサブ命令を備えるが前記第2のサブ命令を備えずにストアされるよう圧縮し、かつ所与の命令に関連の第1の制御ビットを、前記第2のサブ命令が前記第1のサブ命令に等しいことを示す論理状態に設定するステップと、
所与の命令に対して、前記複数のクラスタの前記第1のクラスタの第2の機能単位によ
って処理されるべき第3のサブ命令と、前記複数のクラスタの前記第2のクラスタの第2の機能単位によって処理されるべき第4のサブ命令とを比較するステップと、
前記第3のサブ命令が前記第4のサブ命令と同じであった場合、所与の命令を前記第3のサブ命令を備えるが前記第4のサブ命令を備えずにストアされるよう圧縮し、かつ所与の命令に関連の第2の制御ビットを、前記第4のサブ命令が前記第3のサブ命令に等しいことを示す論理状態に設定するステップとを備えることを特徴とする命令圧縮方法。 - 超長命令語アーキテクチャを有しかつ機能処理単位の複数のクラスタを含むプロセッサを備えたコンピュータシステムであって、
前記複数のクラスタのクラスタの各々は、共通の数mの機能処理単位を含み、前記プロセッサは、第1の所定数のクラスタを含み、前記超長命令語アーキテクチャは、命令が第2の所定数までのサブ命令を有することを可能にし、前記第2の所定数は、前記第1の所定数と前記共通の数との積に等しく、前記プロセッサによって実行されるべき命令の各々は、制御ビットの組を備えて、1つのサブ命令から前記第2の所定数のサブ命令までを含み、
前記コンピュータシステムはさらに制御ビットの組の条件によって決定される圧縮された形式に第1のサブ命令をストアする命令キャッシュメモリを備え、
前記圧縮された形式は、複数の機能処理単位によって共用されるべき第1の命令の所与のフィールド内にストアされる共用サブ命令を含み、前記複数の機能処理単位は、前記制御ビットの組の条件によって判断され、
前記共用サブ命令は、前記制御ビットの組が第1の所定の条件を識別した場合、第1の クラスタの第1の機能処理単位および第2のクラスタの第1の機能処理単位に対するものであり、
前記共用サブ命令は、第1の共用サブ命令であり、圧縮された形式は、制御ビットの組が同時に第2の所定の条件を識別した場合、前記第1のクラスタの第2の機能処理単位および前記第2のクラスタの第2の機能処理単位に対する第2の共用サブ命令をさらに含むことを特徴とするコンピュータシステム。 - 所与の命令に対して制御ビットの組をテストする手段と、
前記テストする手段が第1の所定の条件を識別した場合、前記第1の共通のサブ命令を、前記複数のクラスタの前記第1のクラスタの前記第1の機能処理単位と前記第2のクラスタの前記第1の機能処理単位とに経路制御する手段とをさらに備えることを特徴とする請求項11に記載のコンピュータシステム。 - 前記第1の共通のサブ命令は、前記第1のクラスタの前記第1の機能処理単位および前記第2のクラスタの前記第1の機能処理単位で同時実行されることを特徴とする請求項11に記載のコンピュータシステム。
- 超長命令語アーキテクチャを有しかつ機能処理単位の複数のクラスタを含むプロセッサを備えたコンピュータシステムであって、
前記複数のクラスタのクラスタの各々は、共通の数mの機能処理単位を含み、前記プロセッサは、第1の所定数のクラスタを含み、前記超長命令語アーキテクチャは、命令が第2の所定数までのサブ命令を有することを可能にし、前記第2の所定数は、前記第1の所定数と前記共通の数との積に等しく、前記プロセッサによって実行されるべき命令の各々は、制御ビットの組を備えて、1つのサブ命令から前記第2の所定数のサブ命令までを含み、
前記コンピュータシステムはさらに制御ビットの組の条件によって決定される圧縮された形式に第1のサブ命令をストアする命令キャッシュメモリを備え、
前記圧縮された形式は、複数の機能処理単位によって共用されるべき第1の命令の所与のフィールド内にストアされる共用サブ命令を含み、前記複数の機能処理単位は、前記制御ビットの組の条件によって判断され、
前記共用サブ命令は、前記制御ビットの組が第1の所定の条件を識別した場合、第1のクラスタの第1の機能処理単位および第2のクラスタの第1の機能処理単位に対するものであり、
前記圧縮されない形式の第1の命令は、前記第2の所定数のサブ命令を含み、前記第1の命令は、第1のクラスタの第1の機能処理単位)によって実行される第1のサブ命令と、第2のクラスタの第1の機能処理単位によって実行される第2のサブ命令とを含み、前記システムはさらに、前記第1の命令をコンパイルする手段を含み、該コンパイルする手段は、
前記第1のサブ命令と前記第2のサブ命令とを比較する手段と、
前記第1のサブ命令が前記第2のサブ命令に等しい場合に、第1の所定の条件を識別するために制御ビットの組の状態を設定する手段とを含むことを特徴とするコンピュータシステム。 - 超長命令語アーキテクチャを有しかつ機能処理単位の複数のクラスタを含むプロセッサを備えたコンピュータシステムであって、
前記複数のクラスタのクラスタの各々は、共通の数mの機能処理単位を含み、前記プロセッサは、第1の所定数のクラスタを含み、前記超長命令語アーキテクチャは、命令が第2の所定数までのサブ命令を有することを可能にし、前記第2の所定数は、前記第1の所定数と前記共通の数との積に等しく、前記プロセッサによって実行されるべき命令の各々は、制御ビットの組を備えて、1つのサブ命令から前記第2の所定数のサブ命令までを含み、
前記コンピュータシステムはさらに制御ビットの組の条件によって決定される圧縮された形式に第1のサブ命令をストアする命令キャッシュメモリを備え、
前記圧縮された形式は、複数の機能処理単位によって共用されるべき第1の命令の所与のフィールド内にストアされる共用サブ命令を含み、前記複数の機能処理単位は、前記制御ビットの組の条件によって判断され、
前記共用サブ命令は、前記制御ビットの組が第1の所定の条件を識別した場合、第1のクラスタの第1の機能処理単位および第2のクラスタの第1の機能処理単位に対するものであり、
前記圧縮されない形式の前記第1の命令は、前記第2の所定数のサブ命令を含み、前記第1の命令は、第1のクラスタの第1の機能処理単位によって実行される第1のサブ命令と、第2のクラスタの第1の機能処理単位によって実行される第2のサブ命令とを含み、前記システムはさらに、前記第1の命令を圧縮された形式に圧縮する手段を含み、該圧縮する手段は、
前記第1の命令に関連の制御ビットの組をテストする手段と、
前記制御ビットの組が、前記第1のサブ命令と前記第2のサブ命令とが等しいことを識別した場合、前記第2のサブ命令を省くことにより第1の命令のサイズを減じる手段とを含むことを特徴とするコンピュータシステム。 - 超長命令語アーキテクチャを有しかつ機能処理単位の複数のクラスタを含むプロセッサを備えたコンピュータシステムであって、
前記複数のクラスタのクラスタの各々は、共通の数mの機能処理単位を含み、前記プロセッサは、第1の所定数のクラスタを含み、前記超長命令語アーキテクチャは、命令が第2の所定数までのサブ命令を有することを可能にし、前記第2の所定数は、前記第1の所定数と前記共通の数との積に等しく、前記プロセッサによって実行されるべき命令の各々は、制御ビットの組を備えて、1つのサブ命令から前記第2の所定数のサブ命令までを含み、
前記コンピュータシステムはさらに制御ビットの組の条件によって決定される圧縮された形式に第1のサブ命令をストアする命令キャッシュメモリを備え、
前記圧縮された形式は、複数の機能処理単位によって共用されるべき第1の命令の所与のフィールド内にストアされる共用サブ命令を含み、前記複数の機能処理単位は、前記制御ビットの組の条件によって判断され、
前記共用サブ命令は、前記制御ビットの組が第1の所定の条件を識別した場合、第1のクラスタの第1の機能処理単位および第2のクラスタの第1の機能処理単位に対するものであり、
圧縮されない形式の第1の命令は、前記第2の所定数のサブ命令を含み、前記第1の命令は、第1のクラスタの第1の機能処理単位によって実行される第1のサブ命令と、第2のクラスタの第1の機能処理単位によって実行される第2のサブ命令とを含み、前記システムはさらに、前記第1の命令をキャッシュする手段を含み、該キャッシュする手段は、
第1の命令に関連の制御ビットの組をテストする手段と、
制御ビットの組が、前記第1のサブ命令と前記第2のサブ命令とが等しいことを識別した場合、前記第2のサブ命令を省くことによりサイズを減じて第1の命令を圧縮された形式にする手段と、
第1の命令を圧縮された形式で命令キャッシュにロードする手段とを含むことを特徴とするコンピュータシステム。 - 超長命令語アーキテクチャを有しかつ機能処理単位の複数のクラスタを含むプロセッサを備えたコンピュータシステムであって、
前記複数のクラスタのクラスタの各々は、共通の数mの機能処理単位を含み、前記プロセッサは、第1の所定数のクラスタを含み、前記超長命令語アーキテクチャは、命令が第2の所定数までのサブ命令を有することを可能にし、前記第2の所定数は、前記第1の所定数と前記共通の数との積に等しく、前記プロセッサによって実行されるべき命令の各々は、制御ビットの組を備えて、1つのサブ命令から前記第2の所定数のサブ命令までを含み、
前記コンピュータシステムはさらに制御ビットの組の条件によって決定される圧縮された形式に第1のサブ命令をストアする命令キャッシュメモリを備え、
前記圧縮された形式は、複数の機能処理単位によって共用されるべき第1の命令の所与のフィールド内にストアされる共用サブ命令を含み、前記複数の機能処理単位は、前記制御ビットの組の条件によって判断され、
前記共用サブ命令は、前記制御ビットの組が第1の所定の条件を識別した場合、第1のクラスタの第1の機能処理単位および第2のクラスタの第1の機能処理単位に対するものであり、
圧縮されない形式の第1の命令は、前記第2の所定数のサブ命令を含み、前記第1の命令は、第1のクラスタの第1の機能処理単位によって実行される第1のサブ命令と、第2のクラスタの第1の機能処理単位によって実行される第2のサブ命令とを含み、前記システムはさらに、前記第1の命令をキャッシュする手段を含み、該キャッシュする手段は、
前記第1のサブ命令と前記第2のサブ命令とを比較する手段と、
前記第1のサブ命令が前記第2のサブ命令に等しい場合に、第1の所定の条件を識別するよう前記第1の命令に関連の制御ビットの組の状態を設定する手段と、
前記制御ビットの組が、前記第1のサブ命令と前記第2のサブ命令とが等しいことを識別した場合、前記第2のサブ命令を省くことにより第1の命令のサイズを減じて圧縮された形式を得る手段と、
圧縮された形式で前記第1の命令を命令キャッシュにロードする手段とを含むことを特徴とするコンピュータシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001357626A JP3806341B2 (ja) | 2001-11-22 | 2001-11-22 | サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001357626A JP3806341B2 (ja) | 2001-11-22 | 2001-11-22 | サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003167732A JP2003167732A (ja) | 2003-06-13 |
JP2003167732A5 JP2003167732A5 (ja) | 2005-07-14 |
JP3806341B2 true JP3806341B2 (ja) | 2006-08-09 |
Family
ID=19168935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001357626A Expired - Fee Related JP3806341B2 (ja) | 2001-11-22 | 2001-11-22 | サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3806341B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4864840B2 (ja) | 2007-08-31 | 2012-02-01 | 株式会社東芝 | マイクロプロセッサ |
US9201652B2 (en) | 2011-05-03 | 2015-12-01 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
JP5770534B2 (ja) * | 2011-06-01 | 2015-08-26 | 富士通株式会社 | プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法 |
US10120692B2 (en) | 2011-07-28 | 2018-11-06 | Qualcomm Incorporated | Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form |
-
2001
- 2001-11-22 JP JP2001357626A patent/JP3806341B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003167732A (ja) | 2003-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6859870B1 (en) | Method and apparatus for compressing VLIW instruction and sharing subinstructions | |
US6779101B1 (en) | Method and apparatus for processing compressed VLIW subinstruction opcodes | |
US5958048A (en) | Architectural support for software pipelining of nested loops | |
US7953955B2 (en) | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture | |
JP3795757B2 (ja) | 高データ密度のriscプロセッサ | |
US6665776B2 (en) | Apparatus and method for speculative prefetching after data cache misses | |
JP5638108B2 (ja) | 処理スケジューリング方法、コンピュータおよびコンピュータプログラム | |
Hoogerbrugge et al. | A code compression system based on pipelined interpreters | |
US8578351B2 (en) | Hybrid mechanism for more efficient emulation and method therefor | |
EP1267256A2 (en) | Conditional execution of instructions with multiple destinations | |
KR20010033147A (ko) | 다중 데이터 경로 인스턴스를 갖는 프로세서 | |
KR20000076285A (ko) | 기계 판독가능 매체 및 초대형 인스트럭션 워드 프로세서와, 컴퓨터 프로그램의 실행 방법 및 컴파일 방법 | |
TWI764966B (zh) | 用於控制矢量記憶體存取之資料處理裝置及方法 | |
US6550000B1 (en) | Processor to execute in parallel plurality of instructions using plurality of functional units, and instruction allocation controller | |
US6256725B1 (en) | Shared datapath processor utilizing stack-based and register-based storage spaces | |
JP3806341B2 (ja) | サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム | |
JPH1097423A (ja) | ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ | |
CN110073332B (zh) | 数据处理装置和方法 | |
US5964870A (en) | Method and apparatus for using function context to improve branch | |
Hoogerbrugge et al. | Pipelined Java virtual machine interpreters | |
Wei et al. | A near-memory processor for vector, streaming and bit manipulation workloads | |
US20010037444A1 (en) | Instruction buffering mechanism | |
US20040015682A1 (en) | Application registers | |
US6886091B1 (en) | Replacing VLIW operation with equivalent operation requiring fewer issue slots | |
KR101099828B1 (ko) | 프로세싱 시스템, 이 프로세싱 시스템에 의해서 인스트럭션의 집합을 실행하는 vliw 프로세서, 방법 및 컴퓨터 판독가능한 저장 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041110 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041110 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051220 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060317 |
|
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: 20060411 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060510 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060515 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060512 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3806341 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130519 Year of fee payment: 7 |
|
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 |
|
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 |