JP2003167732A - サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム - Google Patents
サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステムInfo
- Publication number
- JP2003167732A JP2003167732A JP2001357626A JP2001357626A JP2003167732A JP 2003167732 A JP2003167732 A JP 2003167732A JP 2001357626 A JP2001357626 A JP 2001357626A JP 2001357626 A JP2001357626 A JP 2001357626A JP 2003167732 A JP2003167732 A JP 2003167732A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- sub
- cluster
- functional processing
- 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.)
- Granted
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
トの組を有するVLIW命令形式を導入する。 【解決手段】 VLIWのコンパイル時に、命令が分析
されてサブ命令を共用する機会を識別する。そのような
機会は、命令の制御ビット内に符号化される。命令が命
令キャッシュ内に移動される前に、命令は新しい形式に
圧縮されて、選択されたサブ命令の冗長な発生を削除す
る。特定的には、サブ命令がそれぞれのクラスタ(2
6)の対応の機能処理単位(28)によって共用される
べきである場合、サブ命令は命令内に1度だけ現れれば
よい。冗長な発生は削除される。制御ビットは命令のパ
ーズ時に復号化されて、共用サブ命令を関連の機能処理
単位に経路制御する。
Description
ための超長命令語(VLIW)計算アーキテクチャ、方
法および装置に関し、より特定的にはVLIW命令の記
憶要件を減じるための方法および装置、ならびに命令の
オプコード部分を圧縮するための方法および装置に関す
る。
おいて、命令帯域幅よりもデータ帯域幅に多く対処がな
されてきた。この偏重は、たとえば典型的にはデータキ
ャッシュミス率よりも少ない命令キャッシュ率を示すベ
ンチマークプログラムに基づくと、正しいように思われ
る。そのような結果は、オフチップ命令帯域幅要件はデ
ータ帯域幅要件よりも小さいことを示す。しかしなが
ら、画像処理のようないくつかの商業的作業負荷に対し
ては、典型的にはデータキャッシュミス率は命令キャッ
シュミス率よりも低い。したがって、命令帯域幅を最適
化する必要性が増大している。
せ、したがって、大きなサイズの命令キャッシュに対す
る必要性を増大させている。第1の傾向は、超長命令語
(VLIW)アーキテクチャが多くの高性能プロセッサ
アーキテクチャにおいて一般的になってきていることで
ある。VLIWアーキテクチャは、その広い命令ビット
を活用してサイクルごとに多数の動作を実行する。これ
が直接反映して、スーパースカラアーキテクチャと比較
して顕著に増大した命令帯域幅をもたらす。たとえば、
256ビットのVLIW命令幅(典型的な縮小命令セッ
トコンピュータ(RISC)命令よりも4倍から8倍広
い)は珍しくはない。
ケーションは、多数のデータストリームを扱うための並
列構造を用いてより効率的に実現される。テキサス州ダ
ラスのテキサス・インスツルメント(Texas Instrument
s)によって製造されるTMS320C6xおよび、日
本国東京の株式会社日立製作所とカリフォルニア州キャ
ンベルのイクエータ・テクノロジー(Equator Technolo
gies)とによって製造されるMAP1000などのVL
IWプロセッサは、データストリームと命令ストリーム
との両方の大量の並列性をサポートし、プログラム命令
の並列またはパイプライン化された実行を実現する。
る1つ以上の多数の均一な処理ブロックを有する。クラ
スタの各々は、共通の数の機能処理単位を含む。VLI
W命令は多数のサブ命令フィールドを含む。VLIW命
令のサイズは線形に増大し、並列命令の数はサブ命令フ
ィールドにおいて並行に規定される。命令に現われるサ
ブ命令は並列実行のために機能処理単位の間で分散され
る。
命令ごとに10未満の動作を実行する。同時実行の数は
将来のメディアプロセッサにおいて実質的に増大する見
込みであり、命令は256または512ビット幅になる
見込みである。しかしながら、命令のサイズが増大する
につれ、対応してデータフローおよびメモリ構造に対す
る負荷が増大する。十分な命令フェッチ帯域幅を提供す
るために、VLIW命令は典型的には最初に外部メモリ
からフェッチされ、実行される前にオンチップ命令キャ
ッシュにストアされる。たとえばタイト処理ループの間
の、キャッシュのスラッシング(すなわち、サイクルミ
ス)は、非常に望ましくなく、性能の劣化につながる。
したがって、命令キャッシュを効率的に管理して所望の
高い処理スループットを維持することが強く望まれてき
ている。
大し、より広いVLIWアーキテクチャが適用され、か
つより複雑なアルゴリズムが開発されるにつれ、より大
きな命令キャッシュに対する必要性は増大する。したが
って、VLIW命令を効率的に扱いかつキャッシュする
ための方法に対する必要性がある。
を増大するにあたって深い実行パイプラインの使用がク
リティカルになってきていることである。深い実行パイ
プラインはリードアフターライト依存においてコンフリ
クトの可能性を増大させる。コンフリクトはNOP命令
の挿入か、または実行パイプラインをストールさせるハ
ードウェア検出技術によって解決される。いずれの場合
においても、貴重な実行サイクルが失われ、これはプロ
セッサの最大限の活用を阻む。ソフトウェアパイプライ
ン化はこれらの深い実行パイプラインにおけるリードア
フターライトコンフリクトをなくすことにおいて重要な
ツールとなった。ソフトウェアパイプライン化は、タイ
トループを何度かアンロールし、かつタイトループの多
数の反復をオーバーラップさせて、付加的なNOPまた
はプロセッサストールサイクルなしにリードアフターラ
イト依存を解決させるための余地を作ることを可能にす
る。これはタイトループサイズを増大させ、よって命令
キャッシュミス率をも増大させるという弊害がある。し
たがって、命令帯域幅を減じるか、より効率的に扱う技
術に対する必要性が存在する。
アーキテクチャおよび縮小命令セットコンピュータ(R
ISC)アーキテクチャにおいては、命令キャッシュの
効率性により命令圧縮をほとんど必要としなかった。し
かしながら、ビルコウスキ(Bealkowski)他による19
97年7月3日発行の米国特許第5,636,352号
の「圧縮命令を用いるための方法および装置」において
は、命令圧縮技術が導入されている。命令はオプコード
(すなわち命令オペランド)および1つ以上のデータオ
ペランド(たとえばソースオペランドフィールドおよび
デスティネーションオペランドフィールド)からなる。
1つ以上の制御ビットもまた命令内に含まれる。ビルコ
ウスキ他は、頻繁に用いられる命令に対するエントリを
含む、シノニムテーブルと呼ばれるテーブルを実現す
る。命令のシーケンスは以前に定義されていない特別オ
プコードおよびそれぞれのシノニムテーブルへのインデ
ックスを有する単一の命令に圧縮される(たとえば、命
令内で許可されるビットの数に基づく限度まで、シーケ
ンスの命令ごとに1つが圧縮される)。
型的なプログラムにおける唯一の(unique)命令の数が
非常に大きいことである。したがって、ビルコウスキ他
は12ビットの最大インデックス幅と、エントリの各々
が32ビットの命令を保持する4096エントリのシノ
ニムテーブルとを提案する。そのようなテーブルは16
キロバイトのオンチップメモリを必要とする。そのよう
なテーブルのサイズは高性能プロセッサなどにおいて用
いられるレベル1命令キャッシュに匹敵するので、これ
は費用のかかる解決策である。ビルコウスキ他は、シノ
ニムテーブルが読出専用メモリ内にストアされ、かつマ
イクロプロセッサ設計の時点で予め規定される1つの実
施例を提案する。別の実施例においてはビルコウスキ他
は、シノニムテーブルがプロセッサ初期化の間にロード
可能であることを提案する。しかしながら企図される場
合、テーブルは静的で変化しない構成である。したがっ
て、命令帯域幅を減じるためのより効率的な解決策に対
する必要性がある。
命令は機能処理単位の間で共用されて、命令キャッシュ
に、ある実施例においてはメインメモリにストアされる
VLIW命令のサイズを減じる。特定的には、VLIW
命令はサブ命令共用の場合に圧縮される。ある実施例に
おいては命令はコンパイル時に圧縮され、圧縮された形
式でメインメモリにストアされる。他の実施例において
は命令は圧縮されない形式でメインメモリにストアさ
れ、キャッシュメモリにストアされる前に圧縮される。
ビットの組がVLIW命令の各々に関連付けられる。一
実施例においてはVLIW命令は命令内の制御ビット組
を含むよう形式化される。VLIW命令は、複数のサブ
命令フィールド、命令圧縮制御ビット組、およびNOP
命令の位置を示す(すなわち、空である)ものなどのよ
うな他の雑制御ビットを含む。
W命令は予め規定された数のサブ命令フィールドを含
み、フィールドの数はVLIW命令を実行するプロセッ
サのアーキテクチャによって決定される。サブ命令フィ
ールドのいくつかはNOP命令であり得る。さらにサブ
命令フィールドのいくつかは他のサブ命令フィールドに
あるものと同じサブ命令を含み得る。NOP命令のため
に割当てられるスペースを除去するために命令を圧縮す
ることが公知である。この発明に従うと、選択された場
合のサブ命令の冗長性を減じるための方策が提供され
る。
含むアーキテクチャを考察する。そのような命令に対し
て関連する15の状況が存在する。1つの状況において
は、冗長なサブ命令は存在しない(たとえば、ABC
D)。残りの状況においては、サブ命令の間にある程度
の冗長性が存在する(たとえば、AAAA、AAAB、
AABA、ABAA、BAAA、AABB、ABAB、
ABBA、AABC、ABAC、ABCA、BAAC、
BACA、BCAA)。A、B、CおよびDはサブ命令
が別のフィールド内のサブ命令と同一であるか異なって
いるかを識別するために用いられていることに留意され
たい。当業者においては、多数の異なったサブ命令Aが
存在することが認識されるであろう。同様に、多くの異
なったサブ命令B、CおよびDが存在する。
アーキテクチャに対しては、さらなる冗長なサブ命令の
状況が存在する。いかなる所与のアーキテクチャに対し
ても、2zより多い起こり得る状況は存在せず、ここで
「z」はサブ命令フィールドの数である。すべての冗長
状況をカバーするために、「z」までの制御ビットが存
在するであろうが、ここでzはプロセッサアーキテクチ
ャにおいて許容されるサブ命令フィールドの最大数であ
る。
な状況は命令の各々に「z」の制御ビットを含むことに
よりカバーされる。しかしながら、命令幅が増大するに
つれ、サブ命令共用のためにそのように多数の付加的な
制御ビットを加えることは望ましくないおそれがある。
特定的には、実務上何度も出現し繰返すサブ命令冗長性
の間にあるパターンが見られる傾向がある場合には、そ
のような多くのビットのコストは過剰に思われる。結果
として、好ましい実施例においては制御ビットの数を
「z」未満に減じて、約2zの予め規定された数のサブ
命令共用状況を扱うことを可能にする。
ったアプリケーションに対して異なったプロセッサを設
計し得る。さらに、どの場合にサブ命令共用のためにサ
ブ命令冗長性をカバーするかは、プロセッサが対象とす
るアプリケーション(たとえば、画像処理アプリケーシ
ョン)に対して最も大きな影響を与えるよう、所与のプ
ロセッサに対して戦略的に選択される。
バーされてプロセッサアーキテクチャ内に設計される
が、1つの方策においてはすべてまたはそれ以下のサブ
命令共用可能性がカバーされる。一実施例においてはサ
ブ命令共用は対応の機能処理単位に対して向けられる冗
長なサブ命令に対して提供される。機能処理単位はプロ
セッサの一部である。プロセッサは「z」の機能処理単
位を含むが、ここで「z」は1つの命令内のサブ命令の
最大数である。しかしながら、より特定的には、プロセ
ッサは複数のクラスタを含み、クラスタの各々は共通の
数の機能処理単位(FPU)を含む。1つのクラスタ内
のFPUの各々に対して、互いのクラスタ内に対応のF
PUが存在する。対応のFPUの各々は同じ機能を有す
る。たとえば、4つのFPUの3つのクラスタがある
と、4組の対応するFPUが存在する。1つの方策にお
いては、いずれか2つ以上の対応のFPUの間のサブ命
令冗長性の並べ替えの各々がカバーされる。そのような
例においてはz=7であり、命令ごとに7つの命令圧縮
制御ビットが存在する。これは12の機能処理単位間
の、すべての可能性のあるサブ命令共用状況をカバーす
るための制御ビットの最大数(たとえば、12)よりも
少ない。
各々における対応の機能処理単位に向けられる冗長なサ
ブ命令が圧縮される。特定的には、少なくとも2つのク
ラスタにおける対応の機能処理単位に対する1つの命令
内に同じサブ命令が存在すると、この発明にしたがっ
て、サブ命令の1つのコピーのみがストアされればよ
い。対応の機能処理単位に対する冗長なサブ命令は省か
れ、圧縮された命令をもたらす。そのような圧縮に対し
ては、特定のサブ命令を共用する冗長なサブ命令フィー
ルドを識別する命令圧縮制御ビットの対応する条件が存
在する。
ロセッサに対するコンピュータプログラムのコンパイル
の間に(たとえば、より高レベルの言語ソースコードま
たはアセンブラソースコードのアセンブリ)、命令圧縮
制御ビットは所与の命令に対して圧縮の各々を規定する
条件を特定するよう設定される。命令圧縮制御ビットを
含む命令は、圧縮されたまたは圧縮されない形式でメモ
リ内にストアされる。圧縮されない形式でストアされる
場合、命令はプロセッサのオンチップ命令キャッシュに
ストアされる前に圧縮される。したがって、命令は命令
のメインメモリへの記憶と命令のオンチップ命令キャッ
シュへの記憶との間のいずれかのステップで圧縮される
(たとえば、これは圧縮されてメインメモリで復元され
る;これは圧縮されて一次のキャッシュまたは二次のキ
ャッシュにストアされる;これはオンチップ命令キャッ
シュに移動するときに圧縮される)。
御ビットの条件は、どのように圧縮命令が実行のために
圧縮解除されるべきかを規定する。特に制御ビットは、
圧縮命令内の1つ以上のサブ命令が、VLIWプロセッ
サの機能処理単位の間で同時実行のためにどのように共
用されるべきかを判断する。命令圧縮制御ビットの組
は、冗長的にではなくすぐに冗長な対応のサブ命令がス
トアされる1つ以上の圧縮条件を識別する。識別される
条件の各々は、少なくとも2つの対応の機能処理単位に
よって共用されるべきサブ命令に対応する。
する機能処理単位であると関連付け、かつそのような対
応の機能処理単位に向けられる冗長なサブ命令を圧縮す
ることの利点は、画像計算アルゴリズムの通常のプログ
ラム構造によるものである。出願人らは、同じサブ命令
が多数のクラスタにおいて用いられる画像計算ライブラ
リ関数のためのプログラムコードにおいて多くのタイト
ループを認識した。たとえば2つのクラスタを有するV
LIWプロセッサで実現される2D畳み込み関数に対し
ては、最も頻繁に用いられるサブ命令は、内積および、
内積の解の区分短縮(partitioned compaction)であ
る。これらのサブ命令のいずれかを実行するほとんどの
命令に対して、多くのクラスタが同じサブ命令を割当て
られていることが認識された。特定的にはそのような関
数のためのMAP1000プロセッサに対するアセンブ
リコードにおいては、出願人らはタイトループプログラ
ムが133の命令のうち、両方のクラスタに対して全く
同じサブ命令(オペランドを含む)からなる67の命令
を有することを認識した。したがって、対応の機能処理
単位に向けられるサブ命令の冗長性は重要な画像処理ア
ルゴリズムにおいて顕著に発生する。VLIW命令にお
ける冗長性をなくして、多数のクラスタにおいて同じサ
ブ命令が実行されるべきである場合に必要となる命令ビ
ットを少なくすることにより、プログラムサイズが減じ
られる。さらに、命令キャッシュ利用の効率性が向上
し、効率的な命令フェッチ帯域幅が増大する。
域幅は、命令の全体を圧縮する命令圧縮技術とは異なる
技術で減じられる。共通して用いられるオプコードの1
つ以上のテーブルをストアするために、オンチップラン
ダムアクセスメモリのある領域が割当てられる。命令内
の通常のオプコードは、テーブルとテーブルへのインデ
ックスとを識別するコードに置き換えられる。コードは
圧縮されないオプコードよりも少ないビットを含む。そ
の結果、命令が圧縮される。
クチャに対して実現されるが、この技術は多数のオプコ
ード(すなわち、サブ命令の各々に対するもの)を含む
VLIW命令に対して特に有利である。一実施例におい
ては、命令の特別なコードビットの間の1つのビット
が、VLIW命令が圧縮されているかまたは圧縮されて
いないかを明示するために割当てられる。たとえば、あ
る実施例においてはVLIW命令に対するオプコード圧
縮は全か無かである。すなわち、すべてのサブ命令オプ
コードが圧縮されるかいずれもされないかである。NO
P命令オプコードを圧縮するための十分な方法が存在す
るので、代替的な従来の方法を用いてこの発明の実施例
の圧縮命令形式の中のNOPサブ命令を識別してもよ
い。
用いられるオプコードのテーブルはリアルタイム処理の
間に動的に更新され、上書きされ、かつ置き換えられ
る。テーブルはアプリケーションプログラムの実行の間
にストアすることができる。動的更新の利点は、より小
さなテーブルサイズが効率的に命令帯域幅を減じること
である。ある実施例においては、テーブルは動的である
必要はなく、固定されていてもよい。広い範囲のアプリ
ケーションプログラムに対して最も頻繁に用いられるす
べてのオプコードをストアするために、そのようなテー
ブルは動的に更新されるテーブルよりも大きくなる。好
ましい動的な実施例に対しては、テーブルはアプリケー
ションにカスタマイズされ、プログラム設計の一部とな
る。たとえば、オプコードテーブルにストアされるべき
オプコードのそれぞれのテーブルを備えて異なったタス
クがプログラムされる。それぞれのテーブルは次いでタ
スクが切替わるときにロードされる。より小さな動的オ
プコードテーブルは、オプコードのより効率的な選択、
およびタスク切替えの間のテーブルローディングに対す
る低いオーバーヘッドの利点をもたらす。さらに、多数
のテーブルをストアするためにプロセッサチップにスペ
ースが割当てられる場合、1つのテーブルがアクティブ
にされ別のものはインアクティブにされるために、テー
ブルローディングオーバーヘッドはさらに減じられる。
テーブルにおける1つ以上の特定のエントリが更新され
る。テーブルインデックスを用いてオプコードテーブル
内のどこで更新された値を書込むべきかを識別する特定
の命令が含まれる。さらにある実施例にCISC様の命
令が含まれ、データをメモリからより早くオプコードテ
ーブルに転送し、テーブルをよりコンパクトにストアす
る。
ルは不揮発性メモリから関数コール内の初期にプレロー
ディングされる。さらに、以前のテーブルに対するポイ
ントが維持されて、それにより関数が完了し処理がコー
リングルーチンに戻った後で、コーリングルーチンに対
するオプコードテーブルが復元される。
利点は、添付の図面と併せて以下の詳細な説明を参照す
ることにより、よりよく理解されるであろう。
ログラムコンパイルおよび記憶のブロック図を示す。
「超長命令語」VLIWという用語は、コンピュータシ
ステムおよびプログラムアーキテクチャ、並列処理およ
び画像処理の分野における用語であり、これは一般的に
プロセッサが典型的には、64ビット以上であり多数の
サブ命令からなる命令を扱うことができるアーキテクチ
ャを指す。
を準備し、テストし、かつデバッグする。ソースコード
12はアセンブラ言語または高階プログラミング言語で
書かれる。ソースコードは次いでコンパイラ/アセンブ
ラ14によってコンパイル/アセンブルされ、マシンコ
ード16をもたらす。マシンコード16は、マシンコー
ド16を実行すべきプロセッサを有するコンピュータの
メモリ18にストアされる。
0は、超長命令語(VLIW)プロセッサ20、命令キ
ャッシュ22、およびメインメモリ24を含む。好まし
い実施例においては命令キャッシュ22はプロセッサ2
0の一部である(オンチップに位置する)。メインメモ
リは、メモリ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の値は、プロセッサ2
0アーキテクチャによって決定された予め規定された数
である。そのような値は異なった実施例に対して変化し
得る。n*mの値は、n*m機能処理単位を有するプロ
セッサに対するVLIW命令内に含まれ得るサブ命令の
最大数に相当する予め規定された数である。
る命令形式30は最大n*m個のサブ命令フィールド3
2を含む。サブ命令フィールド32の各々の内容は処理
のために対応の機能処理単位28に経路制御される。す
べてのn*m個のサブ命令フィールドが埋められた命令
に対しては、サブ命令はn*m個の機能処理単位28の
各々に経路制御される。典型的には、すべてのn個のク
ラスタ26に対して1つのみのプログラムカウンタが存
在する。その結果、機能処理単位は典型的にはシンクロ
ナスに動作して所与の命令のサブ命令を同時実行する。
合、命令30は従来の技術を用いて圧縮される。その結
果、命令によって占有されていたメモリスペースが減じ
られる。この発明は、多数のクラスタ26の対応の機能
処理単位28に対して冗長なサブ命令が存在する場合命
令サイズを圧縮するさらなる技術に関する。特に、画像
計算アルゴリズムのタイトループにおいては、同じサブ
命令が多数のクラスタにおいて実行されるのが認識され
ている。従来的には、サブ命令はサブ命令フィールド3
2の各々で繰返され、命令キャッシュ20のメモリスペ
ースの非効率的な使用およびメモリ転送帯域幅の非効率
的な適用をもたらした。この発明の局面による圧縮され
た命令形式においては、サブ命令が多数の機能処理単位
28の間で共用される。
る「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)までに関連付けられる。
単位(_,1)はここで対応の機能処理単位と呼ばれる
ことに留意されたい。特に、それらは多数のクラスタの
各々の、対応の第1の機能処理単位と呼ばれる。対応の
機能処理単位(_,i)によって処理するための所与の
命令内に同じサブ命令が含まれている場合、命令形式は
圧縮されて冗長性をなくす。同じサブ命令が含まれてい
るが、対応しない機能処理単位(_,i)および(_,
j)へのものである場合、冗長性は対処されないことに
留意されたい(すなわち、命令形式は必ずしも圧縮され
なくてもよい)。ある実施例においてはこれらの冗長性
もまた対処されるが、好ましい実施例においてはこれら
は無視される。そのような冗長性が無視されるのは、こ
れらが対応の機能処理単位に向けられるサブ命令の間の
冗長性の対処における利得に匹敵するほどの、効率性に
おける利得をもたらさないためである。
れた従来の圧縮された形式34′で例示的な命令34が
示される。圧縮されない形式において空白フィールドが
生じるであろう位置はアスタリスク(「*」)で示す。
た圧縮された形式34″における例示的な命令34が示
される。圧縮された形式において、命令圧縮制御ビット
の組37のための領域と、1つ以上の、好ましくは空で
はないサブ命令フィールドとが存在する。同じサブ命令
をストアする対応のFPU(_,i)に対するサブ命令
フィールドは、対応の機能処理単位のうちの1つのみに
対するサブ命令を含むよう減じられる。そのような対応
の機能処理単位はサブ命令を共用する。
クラスタおよびn番目のクラスタの両方の第2の機能処
理単位に向けられるサブ命令は、共通のサブ命令を有す
ることに留意されたい。これらのFPU(1,2)およ
び(n,2)は対応の機能処理単位である。したがっ
て、冗長なサブ命令は省かれる。さまざまな実施例にお
いて冗長なサブ命令は第1の発生、第2の発生または他
の発生において省かれる。示される実施例においては第
1の発生以外のすべてが省かれる。圧縮されない形式に
おいて、省かれた冗長フィールドが発生するであろう位
置はダブルアスタリスク(「**」)で示す。また、空
のサブ命令フィールドもまた圧縮されていることに留意
されたい。さまざまな実施例において、従来の圧縮技術
もまた実現されるか否かに応じて空のフィールドは圧縮
されても圧縮されなくてもよい。
および32(2,2)の各々は共通のサブ命令「C」を
有することに留意されたい。ある実施例においては圧縮
動作が行なわれてこの冗長を避ける。しかしながら、こ
のような冗長は頻繁には発生しないことが見出されたの
で、好ましい実施例においてはこの冗長は「そのまま」
残される。同様に、サブ命令フィールド32(n,1)
および32(n,3)もまた共通のサブ命令「E」を有
する。これらは共通のクラスタ内でFPUに対して向け
られる。ある実施例においては、圧縮動作が行なわれて
この冗長性を避ける。しかしながら、このような冗長は
頻繁には発生しないことが見出されたので、好ましい実
施例においてはこの冗長は「そのまま」残される。
能処理単位がサブ命令を共用するべき起こり得る条件の
各々を識別するために十分なビットを含む。たとえば、
クラスタごとに「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つの制御
ビットが存在する。
(_,1)によって共用される 10 圧縮された形式における第2のサブ命令がFPU
(_,2)によって共用される 11 圧縮された形式における第1のサブ命令がFPU
(_,1)によって共用され、かつ圧縮された形式にお
ける第2のサブ命令がFPU(_,2)によって共用さ
れる
の機能処理単位の2つのクラスタが存在するアーキテク
チャのためのビット符号化を示す。そのようなアーキテ
クチャに対しては、組37内に3つの制御ビットが存在
する。
U(_,1)によって共用される 010 圧縮された形式における第2のサブ命令はFP
U(_,2)によって共用される 011 圧縮された形式における第1のサブ命令はFP
U(_,1)によって共用され、圧縮された形式におけ
る第2のサブ命令はFPU(_,2)によって共用され
る 100 圧縮された形式における第3のサブ命令はFP
U(_,3)によって共用される 101 圧縮された形式における第1のサブ命令はFP
U(_,1)によって共用され、圧縮された形式におけ
る第3のサブ命令はFPU(_,3)によって共用され
る 110 圧縮された形式における第2のサブ命令はFP
U(_,2)によって共用され、圧縮された形式におけ
る第3のサブ命令はFPU(_,3)によって共用され
る 111 圧縮された形式における第1のサブ命令はFP
U(_,1)によって共用され、圧縮された形式におけ
る第2のサブ命令はFPU(_,2)によって共用さ
れ、圧縮された形式における第3のサブ命令はFPU
(_,3)によって共用される
応のFPU(_,i)の間で共用されるべきサブ命令が
存在する潜在的な圧縮条件の各々を識別するために実現
し得るさまざまな符号化方策が存在する。
は望ましくないおそれがあるので、圧縮条件のサブセッ
トは減じられた数の制御ビットによって識別され得る。
たとえば、クラスタごとに2つのFPUを備えた4つの
クラスタアーキテクチャにおいては、4つの制御ビット
を上に明記されるものと同じ方法で用いるか、または3
つの制御ビットを以下のテーブル3に説明されるように
用いることができる。
てのFPU(i,1)によって共用される、i=1,4 010 圧縮された形式における第2のサブ命令がFP
U(i,2)によって共用される、i=1,4 011 圧縮された形式における第1のサブ命令がFP
U(i,1)によって共用され、圧縮された形式におけ
る第2のサブ命令がFPU(i,2)によって共用され
る、i=1,4 100 圧縮された形式における第1のサブ命令がFP
U(1,1)、(3,1)によって共用され、圧縮され
た形式における第2のサブ命令がFPU(1,2)、
(3,2)によって共用され、圧縮された形式における
第3のサブ命令がFPU(2,1)、(4,1)によっ
て共用され、圧縮された形式における第4のサブ命令が
FPU(2,2)、(4,2)によって共用される 101 圧縮された形式における第1のサブ命令はFP
U(1,1)、(2,1)によって共用され、圧縮され
た形式における第2のサブ命令がFPU(1,2)、
(2,2)によって共用され、圧縮された形式における
第3のサブ命令がFPU(3,1)、(4,1)によっ
て共用され、圧縮された形式における第4のサブ命令が
FPU(3,2)、(4,2)によって共用される 110 圧縮された形式における第1のサブ命令がFP
U(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)によっ
て共用される
実現して、さまざまなサブ命令共用条件を識別し得るこ
とを理解するであろう。異なった復号化アーキテクチャ
が異なった符号化方策に付随し、所望のサブ命令共用方
策を実現するであろう。
しサブ命令が存在すればそれらのうちいずれがVLIW
プロセッサの対応のFPUの間で共用されるべきかを判
断するための例示的な多重化方策が示される。一実施例
においては、プロセッサ20はそのような符号化および
サブ命令共用を行なうための論理を含む。示される実施
例においては、クラスタごとに2つの機能単位28の2
つのクラスタ26が存在する。VLIW命令42は、命
令キャッシュ22から検索され、制御ビットの組37の
条件に基づいてパーズされる。そのような実施例に対す
るVLIW42命令は、2つ、3つまたは4つのサブ命
令フィールド32を含む。
第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のF
PUに向かう。第3のサブ命令はシフトされてマルチプ
レクサ46に入り、これはそのような第3のサブ命令を
第2のクラスタの第2のFPUによって処理するために
選択する。
サブ命令は第1のクラスタの第1のFPUに向かい、第
2のサブ命令は第1のクラスタの第2のFPUに向か
う。マルチプレクサ44は第3のサブ命令を選択し、そ
れにより第3のサブ命令は第2のクラスタ内の第1のF
PUに向かう。マルチプレクサ46は第2のサブ命令を
選択し、それにより第2のサブ命令は第1のクラスタの
第2のFPUと第2のクラスタの第2のFPUとによっ
て共用される。
有する場合に2つのサブ命令を含む。そのような場合に
おいてはマルチプレクサは第1のサブ命令をパスし、そ
れにより第1のサブ命令は第1のクラスタの第1のFP
Uと第2のクラスタの第1のFPUとによって共用され
る。同様に、マルチプレクサ46は第2のサブ命令をパ
スし、それにより第2のサブ命令は第1のクラスタの第
2のFPUと第2のクラスタの第2のFPUとによって
共用される。
ブ命令共用は、クラスタごとにn=2クラスタおよびm
=2FPUを有するプロセッサ上でさまざまな命令42
Aから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(左側)、N
OP圧縮のみを備えた命令50(中央)およびサブ命令
共用のために圧縮された命令42(右側)である。
るかまたはサブ命令共用を備えない、異なった命令の場
合を指定するために用いられるいくつかの命令ビットを
要約する。Nは命令内での空ではないサブ命令の数であ
り、もとの圧縮された命令は命令圧縮の後で32×Nビ
ット長さになるであろう。しかしながら、サブ命令共用
があると、命令内に冗長度に応じて異なった長さが生じ
得る。たとえば、制御ビット37が00(すなわち、サ
ブ命令共用なし)であれば、その命令に対しては32×
N+2ビットであり、もとの命令と比較すると2ビット
のオーバーヘッドを含む。しかしながら、制御ビット3
7が01または10であれば、サブ命令共用によって1
つのサブ命令フィールドが省かれる。結果は32×(N
−1)+2ビットであり、これはこの命令に対して30
ビットを節約する。この場合に関しては、制御ビットは
11であり、2つのサブ命令フィールドが省かれ、ビッ
トの数は32×(N−2)+2であり、この命令に対し
て62ビットを節約する。
み込み、2D復号FFTおよびアフィンワーピング(af
fine warping))がMAP1000プロセッサのために
アセンブリ言語で書かれた、画像計算プログラムにおけ
るサブ命令共用の実際の効果が研究された。MAP10
00はクラスタごとに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%の減少を示した。
プに対してのみであることに留意されたい。コール機能
を併せて考察する場合、サブ命令共用の結果はより長い
ものになるであろう。しかしながら、結果はそれでも非
常に顕著である。たとえば、512×512の8ビット
画像を読込み、2D畳み込みタイトループをコールし、
メモリに出力画像を書込むアプリケーションプログラム
を考察すると、約100キロバイトを占有する。サブ命
令共用によって達成されるプログラムサイズ減少の合計
は0.5%未満である。しかしながら、タイトループ外
のプログラムのほとんどが一度のみ実行されるのに対
し、タイトループは何度も反復されるので、ほとんどの
プログラム実行時間は実際、タイトループ内で使用され
る。マップ1000での15×15核を備える2D畳み
込みの場合においては、タイトループ実行時間は実行時
間の合計の89%以上を占める。したがって、タイトル
ープを利用可能な命令キャッシュに適合させることは、
全体のプログラムサイズを減少させることよりも重要で
ある。さらに、より洗練されたタイトループ(こうして
命令のためにより多くのビットを必要とする)が開発さ
れ、および/または多数のタイトループが組合されて新
しい高レベルタイトループを生成する場合、個々のタイ
トループのサイズができるだけ小さくされ、それにより
新しいタイトループが命令キャッシュスラッシングを引
起さない、すなわちタイトループを反復する間に過剰な
命令キャッシュミスを起こさないことが望ましい。
法 図11を参照すると、サブ命令共用機会を識別するため
のフローチャート60は、所与の命令のサブ命令が、サ
ブ命令共用条件が存在するか否かを判断するために比較
されるステップ62を含む。一実施例においては、多数
のクラスタの1つ以上の対応の機能処理単位(_,i)
に対して現われるいずれのサブ命令も共用されるべきで
ある。別の実施例においてはより限定された条件の組が
特定の設計に従って指定される。たとえば上述のテーブ
ル3は、限定された条件の組の例を挙げる。ステップ6
4において、命令圧縮制御ビットの組37はサブ命令共
用条件の各々を識別するために設定される。その後に命
令はステップ68においてメモリにストアされる。ある
実施例においては命令は圧縮されない形式でストアされ
る(または、サブ命令共用圧縮なしにNOP圧縮などの
従来の圧縮技術のみを用いた形式でストアされる)。別
の実施例においては、命令はステップ66でサブ命令が
共用されるべき冗長なサブ命令を省く。
となく命令がメモリ内にストアされる実施例の場合は、
命令を圧縮する、またはさらに圧縮するための命令が別
の時点で実行される。図12を参照すると、フローチャ
ート69のステップ70において、命令圧縮制御ビット
の組37がサブ命令共用条件を識別するためにテストさ
れる。組37の符号化条件に従って、ステップ72にお
いて1つ以上のサブ命令が命令形式から削除される。削
除されたサブ命令は冗長なサブ命令である。FPUによ
って共用されるべきである同一のサブ命令が残留する。
その結果、圧縮された命令または、さらに圧縮された命
令がもたらされる。そのような結果として生じる圧縮さ
れた命令は命令キャッシュ22、一次キャッシュまたは
メインメモリ24に経路制御される。命令のサイズを減
じることにより、命令キャッシュにおいて要求されるス
ペースおよびデータをキャッシュに移動させるために必
要となる時間が減じられる。フローチャート69の方法
はさまざまな実施例において、命令がメインメモリ24
から命令キャッシュ22(図2を参照)に移動される場
合に、または別の時点で行われる。
の組37を復号化するための方法のフローチャート74
は、さまざまなサブ命令共用条件に対して制御ビットを
テストするためのステップ76を含む。ステップ78に
おいて、圧縮命令42はパーズされてサブ命令をデステ
ィネーションであるFPU28に経路制御する。サブ命
令共用条件が存在する場合、サブ命令は複数の対応の機
能処理単位に経路制御される。
令を共用するケースを説明してきたが、ある実施例にお
いては同様に包含され得る冗長なサブ命令のさらなる状
況が存在する。命令が「p」個のサブ命令フィールドを
含む汎用アーキテクチャに関しては、冗長なサブ命令が
ない状況と、ある程度の冗長がサブ命令の間に存在す
る、2p-1よりも少ない状況とが存在する。p=8のサ
ブ命令フィールドが存在するアーキテクチャに関して
は、28=256より少ない状況が存在する。いくつか
の状況は同じ結果を表わすので、状況の数はやや256
よりも少なくなる。しかしながらすべてのそのような状
況をカバーするために、命令圧縮制御ビットの組37内
には「p」個の制御ビットが存在する。こうして、一実
施例においては命令ごとに「p」個の制御ビットが含ま
れる。
ブ命令共用のために非常に多くの付加的な制御ビットを
加えることは望ましくないおそれがある。特に、実務上
何度も繰返し出現する、サブ命令の間の冗長性のパター
ンが存在する傾向がある場合、非常に多くのビットのコ
ストは過剰であると思われるであろう。結果として、好
ましい実施例においては、予め定められた数の起こり得
る2pのサブ命令共用状況を処理するための制御ビット
の数がp以下に減じられる。異なったアプリケーション
に対しては異なったプロセッサが設計され、サブ命令冗
長のパターンも変化する。さらに、サブ命令共用の対象
となるサブ命令冗長のケースもまた、所与のプロセッサ
に対して戦略的に選択され、プロセッサが標的とするこ
れらのアプリケーション(たとえば、画像処理アプリケ
ーション)に対して最大の効果をもたらすようにされ
る。上のセクションで説明された好ましい実施例は、一
般的な画像処理関数の戦略的に重要なタイトループにお
いて発生することが見出されたサブ命令共用シナリオ状
況に関連する。
上のオプコード圧縮テーブルを組入れたアプリケーショ
ンプログラムを処理するためのホストシステム111
は、プロセッサ202、キャッシュメモリ22、不揮発
性メインメモリ24、およびユーザインターフェイス1
20を含み、これらは1つ以上のバス構造122によっ
て相互接続される。ユーザインターフェイス120はデ
ィスプレイ装置124、キーボード126およびポイン
ト/クリック装置128を含む。
令語(「VLIW」)プロセッサおよびスーパースカラ
プロセッサを含むさまざまなホストプロセッサ20上で
実現され得る。例示的なVLIWプロセッサは、テキサ
ス州ダラスのテキサス・インスツルメント(Texas Inst
ruments)によって製造されるTMS320C6xおよ
び、日本国東京の株式会社日立製作所とカリフォルニア
州キャンベルのイクエータ・テクノロジー(Equator Te
chnologies)とによって製造されるMAP1000を含
む。各々はデータストリームと命令ストリームとの両方
の大量の並列性をサポートし、並列またはパイプライン
化されたプログラム命令の実行を実現する。例示的なス
ーパースカラプロセッサは、ニューヨーク州のインター
ナショナル・ビジネス・マシーンズ(International Bu
siness Machines)およびイリノイ州シカゴのモトロー
ラ・コーポレーション(Motorola Corporation)によっ
て製造されるPowerPC604、カリフォルニア州パロア
ルトのインテル・コーポレーション(Intel Corporatio
n)によるペンティアム(R)IIプロセッサ、MIP
S R100000、マサチューセッツ州メイナードの
デジタル・イクイップメント・コーポレーション(Digi
tal Equipment Corporation)によるDEC Alpha2126
4、カリフォルニア州パロアルトのヒューレット・パッ
カード(Hewlett-Packard)によって製造されるPA−
RISC 8000ファミリーのプロセッサ、およびカ
リフォルニア州サニーベイルのサン・マイクロシステム
ズ(Sun Microsystems)によって製造されるUltraSP
ARC−IIを含む。
的なプロセッサ20を示す。示されるのはメディア加速
プロセッサ(media accelerated processor)1000
(MAP1000)のプロセッサアーキテクチャであ
る。MAP1000プロセッサは、直接メモリアクセス
(DMA)コントローラ129、データキャッシュ13
0、命令キャッシュ132およびクラスタ26と呼ばれ
る並列実行単位を含む。そのような構成要素の各々は共
通のチップ上に存在する。クラスタ26の各々は1つ以
上の機能単位28、たとえば整数演算ならびに論理単位
および整数浮動小数点グラフィック演算ならびに論理単
位を有する。また、クラスタ26の各々はいくつかの汎
用レジスタ、いくつかの汎用レジスタ、いくつかの1ビ
ットプレディケートレジスタおよび多数の専用レジスタ
を含む。
VLIW命令形式は、オプコード142、1つ以上のソ
ースオペランドフィールド144およびデスティネーシ
ョンオペランドフィールド146を含む。オプコード1
42の各々は、いくつかのサブ命令148に区分けされ
る。クラスタ26の各々の機能単位28ごとに1つのサ
ブ命令が存在する。たとえばクラスタごとに2つの機能
ユニットの2つのクラスタを有するVLIWプロセッサ
20に関しては、命令は4つのサブ命令148を含む。
ソースオペランドフィールド144およびデスティネー
ションオペランドフィールド146は同様にサブワード
150に区分けされる。
コードが、圧縮されない形式152およびNOPサブ命
令オペランドが圧縮される形式154で示される。NO
Pサブ命令を圧縮するための1つの従来の方法による
と、残りのサブ命令の配置を識別する(よって、NOP
サブ命令の位置をも識別する)マスクワード156が生
成される。
LIW命令のオプコードが2つのオプコード158、1
60に対して圧縮されない形式および圧縮された形式で
示される。オプコード158においては、NOPサブ命
令は存在しない。圧縮されたオプコード形式162にお
いては、サブ命令オペランドは減じられたビット長さに
圧縮される。特定的には、サブ命令148の各々はオプ
コードがコード163と置換えられるが、これはオプコ
ードルックアップテーブル166(図19を参照)へ索
引付けするか、そうでなければオプコードルックアップ
テーブル166に対して、および/またはこの中でポイ
ントする。オプコード160においてはNOPサブ命令
が存在する。好ましい実施例においてはNOPサブ命令
は、従来の圧縮方法のいずれかを用いて圧縮される。次
いで残りのサブ命令148オペランドが圧縮されて圧縮
されたオペランド形式164を達成する。再び、残りの
特定のサブ命令オペランドはコード163と置換えら
れ、これはオプコードルックアップテーブル166(図
19を参照)へ索引付けするか、そうでなければオプコ
ードルックアップテーブル166に対して、および/ま
たはこの中でポイントする。
がオプコード圧縮された形式162/164を示すわけ
ではない。いくつかのオプコードは圧縮されず、または
NOPサブ命令だけが圧縮される。しかしながら、VL
IW命令のために好ましい実施例においては、オプコー
ド圧縮方策を示すべきであるいかなるオプコード142
も、すべてのサブ命令オプコードを圧縮される。しかし
ながら、NOPオプコードは好ましくは異なった態様で
圧縮されることに留意されたい。また、ある実施例にお
いては、サブ命令の共用はさらに、圧縮されるべきサブ
命令オプコードの数を減らすことに留意されたい。
呼ばれる圧縮技術について説明した。その技術による
と、オプコードが冗長なサブ命令を含む特定の場合が、
サブ命令共用の対象となる。特定的には、圧縮されたサ
ブ命令共用形式において冗長なサブ命令オペランドがよ
り少ない回数で発生する(たとえば、1回発生する)よ
う、冗長性が除去される。そのような技術に対する命令
形式は、サブ命令オペランドに加えて1組の制御ビット
を含む。制御ビットは、サブ命令共用の特別な場合を識
別する(たとえば、クラスタごとの機能単位1が、圧縮
サブ命令共用オプコードの特定のサブワードにストアさ
れるものと同じサブ命令のコピーを受取る)。サブ命令
共用のいくつかの場合をここで説明する。
か圧縮されない形式であるかを識別するために、制御ビ
ット65がすべてのオプコード形式に対して用いられ
る。制御ビットは、サブ命令オペランドの圧縮が実行さ
れていることを示す1つの値を有し、実行されていない
(しかしながらNOP圧縮およびサブ命令共用はやはり
実行されているかも知れない)ことを示す別の値を有す
る。
縮されない形式142およびさまざまな圧縮タイプの形
式において示される。形式154はNOP圧縮された形
式154におけるオプコードに対応する。形式170
は、NOP圧縮およびサブ命令共用を示すオプコードに
対応する。形式172は、NOP圧縮、サブ命令共用お
よびオプコード圧縮の各々を示すオプコードに対応す
る。動作の間に、プロセッサ20はこれらの形式のいず
れかまたはすべてを、別々にまたは累積して実行し得
る。
SCおよび/またはスーパースカラアーキテクチャを有
するプロセッサ20に対して実現される単一命令形式8
0が示される。命令は、オプコード82、1つ以上のソ
ースオペランドフィールド84およびデスティネーショ
ンオペランドフィールド86を含む。この発明は、デー
タオペランドに対して圧縮方策が実施されているか否か
に拘らずオプコード圧縮に関連するので、オプコードの
圧縮についてのみここで説明する。図21(B)の圧縮
オプコード形式92においては、オプコードは減じられ
たビット長さ形式に圧縮される。特定的には、オプコー
ド82はコード94と置換えられ、これはオプコードル
ックアップテーブル166(図19を参照)へ索引付け
するか、そうでなければオプコードルックアップテーブ
ル166に対して、および/またはこの中でポイントす
る。オプコード82が圧縮された形式であるか、または
圧縮されない形式であるかを識別するために、制御ビッ
ト65がオプコード形式82、92に対して用いられ
る。制御ビットは、サブ命令オペランドの圧縮が実行さ
れていることを示す1つの値と、実行されていない(し
かしながら、NOP圧縮およびサブ命令共用はやはり実
行されているかも知れない)ことを示す別の値とを有す
る。
ックアップテーブル166を示す。ホストプロセッサ2
0に対する一部のオプコードは、オプコードテーブル1
68にエントリを有する。好ましい実施例においては、
小さな、選択されたオプコードのサブセットがテーブル
168にストアされる。ベストモードの実施例において
は、オプコードテーブル166の内容はコンパイルの間
に規定され、それにより所与のアプリケーションに対し
てカスタマイズされる。いくつかの実施例においては、
オンチップメモリ上で代替的にアクティブになり現在の
オプコードテーブルとしての役割を果たし得る複数のオ
プコードが存在する。オプコードテーブルは、タスク切
替の間にタスクに対してロードされる。したがって、テ
ーブルサイズを小さく保つと、ローディングオーバーヘ
ッドが最小化される。さらにテーブルへのエントリを戦
略的に選択することにより、テーブルはタスクに対して
効率的になる。
ーブルが関数コールまたはタスクコールごとのコンパイ
ルの間に生成される。関数がアクティブになると、対応
のオプコードテーブルがシステムメモリから(たとえ
ば、不揮発性メモリ24またはキャッシュメモリ22か
ら)オンチップメモリ132(たとえば、オンチップ命
令キャッシュメモリまたはオンチップデータメモリ)に
ロードされる。そのような場合に、以前のバージョンの
オプコードテーブルは退避されるかまたは上書きされ
る。退避される場合の実施例においては、アドレスも退
避される。関数が完了すると、以前のオプコードテーブ
ルのアドレスは検索されて、それにより以前のオプコー
ドテーブルがプロセッサ20によって用いられる現在の
オプコードテーブルとなる。そのような技術を用いる
と、コード163/94はテーブルアドレスを含む必要
がなく、テーブルへのインデックスのみを含んでいれば
よい。他の実施例、たとえば多数のオプコードテーブル
が同時にアクティブになることを許すものにおいては、
コードは特定のテーブルをもポイントする。
オプコードテーブルがプロセッサチップ上にキャッシュ
される。所与の時間に1つのテーブルが現在のオプコー
ドテーブルとしてアクティブである。そのような現在の
ステータスはプログラムのさまざまな部分の実行、また
はプログラムの変更の間に動的に変化する。
実行される関数、タスクおよびアプリケーションプログ
ラムに依存するが、殆どの画像処理アプリケーションに
対して、オプコードテーブルにストアするためのオプコ
ードの有効数は、10−20のオーダであることが経験
的に見出された。これは、典型的なスーパースカラまた
はVLIWプロセッサのオペランド命令セットの全体よ
りも実質的に少ない。特定的には、この発明者らによる
1つの研究においては、殆どの画像処理関数によって用
いられるオプコードの約90%またはそれ以上を保持す
るのに16エントリのルックアップテーブルが十分に大
きいことが見出された。特に、発明者らはすべての命令
圧縮および命令ルックアップテーブルを実現するのでは
なく、オプコード圧縮およびオプコードテーブルを生成
すると、有効な性能に対するエントリの数は実質的によ
り少ないことを見出した。
トのみがテーブル166へのインデックスを規定すれば
よい。しかしながら別の実施例においては、テーブルサ
イズは変化することがあり、したがってコード163/
94を規定するビットの数も変動するであろう。エント
リの各々(すなわち圧縮されないオプコード)が12ビ
ットを占有する16エントリテーブルにおいては、合計
192ビットが単一のオプコードテーブルに対して用い
られる。したがって、テーブルサイズは小さく、オプコ
ードテーブルローディングおよびタスク切替の間に殆ど
オーバーヘッドを伴わない。これは特に、テーブルが頻
繁に更新されるマルチスレッド処理のために有利であ
る。
与のプロセッサに対して専用である。しかしながら好ま
しい実施例に従うと、オプコードテーブルは所与のアプ
リケーションプログラムのためにソフトウェア内で規定
される。図22を参照して、コンパイラ100はステッ
プ102を実行してソースコードのリストをマシン言語
にコンパイルし、コンピュータシステムにインストール
する。そのようなコンパイルの間に、コンパイルはオプ
コードケーブル内にストアするための1組のオプコード
を選択するステップ104を実行する。そのような選択
および記憶は、プログラム全体またはプログラムの一部
のいずれかに対して行なわれる。たとえば、オプコード
の組は関数、タスクまたはプログラムの他のモジュラー
編成単位ごとに選択される。実施例の変形においては、
生成されるテーブルの数は編成の方法(たとえば、プロ
グラム全体、関数、他の単位)によって変化し得る。好
ましくは、すべてのオプコードテーブルは同じサイズで
ある。
をオプコードテーブルにストアするかを選択するために
用いられる方策は変化し得る。好ましい実施例において
は、最も頻繁に発生するオプコードが選択される。他の
選択方策も実現し得る。
いてアプリケーションプログラムがコンピュータシステ
ム111のシステムメモリ19(図25を参照)に実行
のためにインストールされる。他の実施例においてはア
プリケーションは計算システム上の組込コンピュータプ
ログラムとしてストアされる。ステップ110において
アプリケーションプログラムが実行される。
ログラム114のフローチャート112の動作は、1つ
以上のオプコードテーブル240、242(図25を参
照)の使用に関するいくつかのステップを含む。ステッ
プ116においては、アプリケーションプログラムが実
行のためにロードされる。そのようなステップは典型的
には、アプリケーションプログラムの全部または一部
を、不揮発性メモリ24からキャッシュメモリ22など
のランダムアクセスメモリにロードするステップを含
む。プログラム命令のいくつかの部分は、プロセッサの
オンチップメモリ132にロードされる。
に規定された1つ以上のオプコードテーブル240、2
42がオンチップメモリ132にロードされる。ある実
施例においては、多数のオプコードテーブルが同時にオ
ンチップメモリに存在する。他の実施例においては、所
与の時間に1つのオプコードテーブルだけがオンチップ
メモリに存在する。いずれの場合においても、ポインタ
246によって示される、所与の時間現在にアクティブ
であるオプコードテーブルが存在する。プロセッサが命
令をパーズし、コード65/94がオプコード圧縮がそ
の命令に対してアクティブであることを示すと、プロセ
ッサはアクティブなオプコードテーブルを参照して圧縮
命令形式162/164/172/92において示され
るオプコードを検索する。
Aの実行のための準備が開始する。そのような準備に含
まれるのは、ステップ120において関数Aによって用
いられるオプコードテーブルのアクティブ化である。そ
のようなアクティブ化は、現在のオプコードテーブルポ
インタ246における対応のオプコードテーブルのオン
チップアドレスをストアするステップを含む。もしテー
ブルが既にオンチップにロードされていなければ、ステ
ップはまたテーブルをオンチップメモリにロードするス
テップをも含む。ステップ122において、関数Aがさ
らに実行される。オプコード圧縮が用いられていること
を示すコード65を有する如何なる命令も、プロセッサ
によってパーズされ、オプコードテーブルへのインデッ
クスを識別する。VLIW命令に対しては、多数のイン
デックスが存在し得る。RISCまたはスーパースカラ
命令に対しては、1つのオプコードのみが存在し得る。
存在するインデックスの各々は、オプコードを検索する
ために用いられる。次いでオプコードが実行される。関
連する命令内のソースオペランドおよびデスティネーシ
ョンオペランドフィールドは、実行されるオプコードに
対応するマイクロコードに基づいて処理される。
以上のオプコードテーブルが規定される実施例において
は、別のオプコードテーブルが先行のオプコードテーブ
ルに現在アクティブなオプコードテーブルとして置換わ
る状況がある。たとえば、ステップ124において、関
数Bが実行のためにコールされる。関数Bの実行に備え
て、関数Bの処理のために用いられるべきオプコードテ
ーブルはステップ126において現在のオプコードテー
ブルとなるようアクティブ化される。そのようなアクテ
ィブ化は、対応のオプコードテーブルを現在のオプコー
ドテーブルポインタ246のオンチップアドレスにスト
アすることを含む。もしテーブルが既にオンチップにロ
ードされていなければ、ステップはまたテーブルをオン
チップメモリにロードすることをも含む。ステップ12
8において、関数Bが実行される。関数Bの完了の際
に、先行のオプコードテーブルが現在のオプコードテー
ブルとして復元される。そのような復元は、制御が戻さ
れるプログラムの一部に対するオプコードテーブルのア
クティブ化と同様である。したがって、関数Aに対する
オプコードテーブルは、アクティブなオプコードテーブ
ルとして復元される。
コードテーブルのアドレスが、関数Bがコールされたと
きにスタック248にプッシュされる。関数Bが完了す
ると、アドレスはスタック248から検索されて、関数
Aに対するオプコードテーブルアドレスを識別する。ス
テップ132において関数Aの処理が再開する。
はリアルタイムの処理の間に動的に更新され、上書きさ
れかつ置換えられる。たとえば、テーブルは、アプリケ
ーションプログラムまたはタスクの実行の間にストアさ
れ、アプリケーションプログラムまたはタスクごとに変
更される。動的な更新の利点とは、より小さなテーブル
サイズが効率的に命令帯域幅を減じることである。
動的である必要はなく、固定されていてもよい。たとえ
ば、広い範囲のアプリケーションプログラムに対して最
も頻繁に用いられるすべてのオプコードをストアするた
めには、そのようなテーブルは動的に更新されるテーブ
ルよりも大きくなるであろう。好ましい動的実現化のた
めにテーブルはアプリケーションに対してカスタマイズ
され、プログラム設計の一部となる。たとえば、オプコ
ードテーブルにストアされるべきオプコードのそれぞれ
のテーブルを備えて、異なったタスクがプログラムされ
る。次いでそれぞれのテーブルはタスク切替の際にロー
ドされる。より小さな動的なオプコードテーブルは、オ
プコードの効率的な選択の利点と、タスク切替の間のテ
ーブルローディングに対する低いオーバーヘッドとをも
たらす。さらに、多数のテーブルをストアするためにプ
ロセッサチップ上にスペースが割当てられている場合、
1つのテーブルがアクティブにされ別のものがインアク
ティブにされるので、テーブルローディングオーバーヘ
ッドはさらに減じられる。
テーブル内の1つ以上の特定のエントリが更新される。
オプコードテーブル内のどこで更新された値を上書きす
るべきかを識別するためにテーブルインデックスを用い
る特別な命令が含まれる。さらに、ある実施例において
は、データをメモリからオプコードテーブルにより早く
転送し、かつテーブルによりコンパクトにストアするた
めのCISC様の命令が含まれる。
ブルは関数コールの早期に不揮発性メモリからプレロー
ドされる。さらに、先行のテーブルに対するポインタは
維持され、それにより、関数が完了し処理がコーリング
ルーチンに戻った後で、オプコードテーブルはコーリン
グルーチンに対して復元される。
命令スペースが、VLIW命令に対して効率的に減じら
れることである。特に、画像処理アルゴリズムの間に実
行され、占有タイトループを有するいくつかの関数に対
しては、スラッシングが発生するであろう場合にも、ス
ラッシングなしにタイトループを維持することが可能で
ある。
いくらかの冗長性をなくすことにより、より少ないビッ
トのみが必要となり、よってプログラムサイズが減じら
れることである。さらに、命令キャッシュ利用の効率性
が向上し、かつ命令フェッチ帯域幅が増大する。
てきたが、さまざまな代替例、変形および等価物を用い
得る。したがって、上述の説明は前掲の特許請求の範囲
によって規定されるこの発明の範囲を限定するものと解
してはならない。
ムの開発および記憶のブロック図である。
ステムの部分的なブロック図である。
ク図である。
令フィールド内容のデスティネーションを識別する、V
LIW命令形式の図である。
る。
令の図である。
施例に従って圧縮されたVLIW命令の図である。
ある。
の命令の制御ビットを復号化するための多重化アーキテ
クチャの図である。
散、NOP圧縮を備えた命令、およびサブ命令共用のた
めの形式における命令を示す例示的な命令の図である。
のフローチャートである。
の方法のフローチャートである。
めの命令圧縮制御ビットを復号化するための方法のフロ
ーチャートである。
である。
が実施される例示的なプロセッサのブロック図である。
である。
図である。
に従った、オプコード圧縮と、オプコード圧縮およびN
OP圧縮の両方とを示すVLIW命令の図である。
ブルの図である。
式、サブ命令共用形式およびオプコード圧縮された形式
を含む、進行形式(progressive format)におけるVL
IW命令の図である。
ーパースカラプロセッサアーキテクチャに対する圧縮さ
れない形式およびオプコード圧縮された形式における命
令の図である。
コードテーブルを規定するコンパイル動作のフローチャ
ートである。
ルし実行するためのフローチャートである。
縮実現化を例示する図23のアプリケーションプログラ
ムの関連部分の実行のフローチャートである。
ーブルをロードするためのメモリ編成の図である。
イル、28 機能処理単位。
Claims (21)
- 【請求項1】 超長命令語アーキテクチャを有するプロ
セッサ20上の複数のクラスタ26の機能処理単位28
の間の所与の命令30/34/42のサブ命令32を共
用するための方法であって、前記所与の命令は制御ビッ
トの組37および少なくとも1つのサブ命令を含み、前
記プロセッサは複数のクラスタ26を含み、前記複数の
クラスタのクラスタの各々は複数の機能処理単位28を
含み、前記方法は、 予め規定された条件を識別するための制御ビットの組3
7をテストするステップと、 予め規定された条件が識別された場合、所与の命令30
/34/42の前記サブ命令32を、予め規定された条
件によって定められる複数の機能処理単位28に経路制
御するステップと、 前記多数の機能処理単位においてサブ命令を同時実行す
るステップとを含む、方法。 - 【請求項2】 前記経路制御するステップは、所与の命
令30/34/42の前記サブ命令32を、前記複数の
クラスタの第1のクラスタの第1の機能処理単位28
(1,1)および、前記複数のクラスタの第2のクラス
タの第1の機能処理単位28(2,1)に経路制御する
ステップを含み、前記実行するステップは、前記複数の
クラスタの前記第1のクラスタの前記第1の機能処理単
位および、前記複数のクラスタの前記第2のクラスタの
前記第1の機能処理単位で、サブ命令を同時実行するス
テップを含む、請求項1に記載の方法。 - 【請求項3】 前記所与の命令は第1のサブ命令および
第2のサブ命令を含み、前記テストするステップは、制
御ビットの組をテストして第1の予め規定された条件を
識別するステップを含み、前記経路制御するステップ
は、第1のサブ命令を経路制御するステップを含み、前
記方法はさらに、 前記制御ビットの組をテストして第2の予め規定された
条件を識別するステップと、 第2の予め規定された条件が識別された場合、前記所与
の命令の前記第2のサブ命令を、前記複数のクラスタの
前記第1のクラスタの第2の機能処理単位28(1,
2)および前記複数のクラスタの前記第2のクラスタの
第2の機能処理単位28(2,2)に経路制御するステ
ップと、 サブ命令を、前記第1の機能処理単位および前記第2の
機能処理単位で同時実行するステップとを含み、 前記実行するステップは、前記第1のサブ命令を前記第
1のクラスタの前記第1の機能処理単位で、前記第1の
サブ命令を前記第2のクラスタの前記第1の機能処理単
位で、前記第2のサブ命令を前記第1のクラスタの前記
第2の機能処理単位で、および前記第2のサブ命令を前
記第2のクラスタの前記第2の機能処理単位で同時実行
するステップを含む、請求項2に記載の方法。 - 【請求項4】 超長命令語アーキテクチャを有するプロ
セッサ20で実行するべきコンピュータプログラムの命
令30/34/42をストアするための方法であって、 命令の各々は、少なくとも1つのサブ命令32から第1
の規定された数のサブ命令32までの間のサブ命令を含
み、前記第1の予め規定された数は少なくとも2であ
り、 プロセッサ20は、第2の予め規定された数nに等しい
複数のクラスタ26に編成され、前記複数のクラスタの
クラスタの各々は、共通の数mの機能処理単位28から
なり、前記機能処理単位の共通の数は、前記第2の予め
規定された数と積算すると前記第1の予め規定された数
と等しく(n*m)、 前記第1の予め規定された数のサブ命令を有する所与の
命令に対しては、前記複数のクラスタの機能処理単位の
各々が、前記所与の命令のそれぞれのサブ命令を実行す
るためのものであり、前記方法は、 前記所与の命令内でサブ命令が1度以上発生するパター
ンを識別するステップ62を含み、前記サブ命令は冗長
なサブ命令であり、前記方法はさらにパターンは予め規
定されたパターンの組の中のものであるか否かを判断す
るステップと、 パターンが予め規定されたパターンの組の中のものであ
る場合、前記命令に対する制御ビットの組を設定して前
記パターンが存在することを示すステップ64とを含
む、方法。 - 【請求項5】 パターンが予め規定されたパターンの組
の中のものである場合、圧縮された命令を得るために所
与の命令内の冗長なサブ命令の1つの発生を削除するこ
とにより、所与の命令を圧縮するステップ66をさらに
含む、請求項3に記載の方法。 - 【請求項6】 圧縮された命令を命令キャッシュ内に移
動するステップ68と、 圧縮された命令の制御ビットの組をテストして、圧縮さ
れた命令に対してサブ命令共用が発生することを識別す
る条件を判断するステップ76と、 サブ命令共用が発生すると判断された場合、圧縮された
命令をパーズして、冗長なサブ命令を識別された条件に
よって判断された複数の機能処理単位に経路制御するス
テップ78と、 サブ命令を、前記複数の機能処理単位で同時実行するス
テップとをさらに含む、請求項5に記載の方法。 - 【請求項7】 超長命令語アーキテクチャを有するプロ
セッサ20上で実行するためのコンピュータプログラム
の命令30/34/42/48をストアするための方法
であって、 命令の各々は、少なくとも1つのサブ命令32から第1
の予め規定された数までのサブ命令を含み、前記第1の
予め規定された数は少なくとも4であり、 プロセッサは第2の予め規定された数nに等しい複数の
クラスタ26に編成され、前記複数のクラスタのクラス
タの各々は共通の数mの機能処理単位28を含み、前記
機能処理単位の共通の数と前記第2の予め定められた数
とを積算すると、前記第1の予め規定された数と等しく
(n*m)、前記方法は、 所与の命令48に対して、前記複数のクラスタの第1の
クラスタの第1の機能単位28(1,1)によって処理
されるべき第1のサブ命令と、前記複数のクラスタの第
2のクラスタの第1の機能単位28(2,1)によって
処理されるべき第2のサブ命令とを比較するステップ
と、 前記第1のサブ命令が前記第2のサブ命令と同じである
場合、前記所与の命令に関連の制御ビットの組の第1の
制御ビットを、前記第2のサブ命令が前記第1のサブ命
令と等しいことを示す第1の論理状態に設定するステッ
プと、 前記所与の命令に対して、前記複数のクラスタの前記第
1のクラスタの第2の機能単位によって処理されるべき
第3のサブ命令と、前記複数のクラスタの前記第2のク
ラスタの第2の機能単位によって処理されるべき第4の
サブ命令とを比較するステップと、 第3のサブ命令が第4のサブ命令と同じである場合、前
記所与の命令に関連の制御ビットの組の第2の制御ビッ
トを第4のサブ命令が第3のサブ命令と等しいことを示
す第2の論理状態に設定するステップと、 第1の制御ビットおよび第2の制御ビットを備えた前記
所与の命令をストアするステップとを含む、方法。 - 【請求項8】 前記ストアするステップは、所与の命令
を圧縮されない形式にストアするステップを含み、所与
の命令を圧縮された形式に圧縮するステップと、所与の
命令を圧縮された形式でキャッシュにストアするステッ
プとをさらに含み、前記圧縮するステップは、 所与の命令に関連する第1の制御ビットをテストするス
テップ70と、 前記第1の制御ビットが前記第1の論理状態と等しい場
合に、所与の命令を圧縮してサイズを減じて、等しい前
記第1のサブ命令と前記第2のサブ命令とのうちの1つ
のコピーを省いて、前記第1のサブ命令および前記第2
のサブ命令の冗長な記憶を避けるステップ72と、 所与の命令に関連する前記第2の制御ビットをテストす
るステップ70と、 前記第2の制御ビットが前記第2の論理状態と等しい場
合に、所与の命令を圧縮してサイズを減じて、等しい前
記第3のサブ命令と前記第4のサブ命令とのうちの1つ
のコピーを省いて、前記第3のサブ命令および前記第4
のサブ命令の冗長な記憶を省くステップ72とを含む、
請求項7に記載の方法。 - 【請求項9】 前記ストアするステップは、所与の命令
を圧縮された形式でストアするステップを含み、前記ス
トアするステップの前に、所与の命令を圧縮された形式
に圧縮するステップをさらに含み、前記圧縮するステッ
プは、 前記第1の制御ビットが前記第1の論理状態と等しい場
合に、所与の命令を圧縮してサイズを減じて、等しい前
記第1のサブ命令と前記第2のサブ命令とのうちの1つ
のコピーを省いて、前記第1のサブ命令および前記第2
のサブ命令の冗長な記憶を避けるステップと、 前記第2の制御ビットが前記第2の論理状態に等しい場
合に、所与の命令を圧縮してサイズを減じて、等しい前
記第3のサブ命令と前記第4のサブ命令とのうちの1つ
のコピーを省いて、前記第3のサブ命令および前記第4
のサブ命令の冗長な記憶を省くステップとを含む、請求
項7に記載の方法。 - 【請求項10】 所与の命令を圧縮された形式でキャッ
シュ22にストアするステップをさらに含む、請求項9
に記載の方法。 - 【請求項11】 所与の命令を前記第1の制御ビットお
よび前記第2の制御ビットを備えて圧縮された形式42
A−Dでキャッシュにストアするステップを含み、前記
圧縮された形式42Aは、前記第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の機能処理単位による
同時実行を行なわせるステップとを含む、請求項7に記
載の方法。 - 【請求項12】 超長命令語アーキテクチャを有するプ
ロセッサ20上で実行するためのコンピュータプログラ
ムの命令30/34を圧縮された形式42に圧縮するた
めの方法であって、 前記命令の各々は、少なくとも1つのサブ命令32と、
第1の予め規定された数までのサブ命令を含み、前記第
1の予め規定された数は少なくとも4であり、 前記プロセッサは、第2の予め規定された数nに等しい
複数のクラスタ26に編成され、前記複数のクラスタの
クラスタの各々は、共通の数mの機能処理単位28を含
み、機能処理単位の共通の数と前記第2の予め規定され
た数とを積算すると、前記第1の予め規定された数に等
しく(n*m)、 前記方法は、 所与の命令に対して、前記複数のクラスタの第1のクラ
スタの第1の機能単位28(1,1)によって処理され
るべき第1のサブ命令32(1,1)と、前記複数のク
ラスタの第2のクラスタの第1の機能単位28(2,
1)によって処理されるべき第2のサブ命令32(2,
1)とを比較するステップと、前記第1のサブ命令が前
記第2のサブ命令と同じである場合48A、所与の命令
を前記第1のサブ命令を備えるが前記第2のサブ命令を
備えずにストアされるよう圧縮し、かつ所与の命令42
に関連の第1の制御ビット37を、前記第2のサブ命令
が前記第1のサブ命令に等しいことを示す論理状態に設
定するステップと、 所与の命令に対して、前記複数のクラスタの前記第1の
クラスタの第2の機能単位28(1,2)によって処理
されるべき第3のサブ命令32(1,2)と、前記複数
のクラスタの前記第2のクラスタの第2の機能単位28
(2,2)によって処理されるべき第4のサブ命令32
(2,2)とを比較するステップと、 前記第3のサブ命令が前記第4のサブ命令と同じであっ
た場合48B、C、D、所与の命令を前記第3のサブ命
令を備えるが前記第4のサブ命令を備えずにストアされ
るよう圧縮し、かつ所与の命令に関連の第2の制御ビッ
ト37を、前記第4のサブ命令が前記第3のサブ命令に
等しいことを示す論理状態に設定するステップとを含
む、方法。 - 【請求項13】 コンピュータシステム10であって、 超長命令語アーキテクチャを有しかつ機能処理単位28
の複数のクラスタ26を含むプロセッサ20を含み、前
記複数のクラスタのクラスタの各々は、共通の数mの機
能処理単位を含み、前記プロセッサは、第1の予め規定
された数nのクラスタを含み、前記超長命令語アーキテ
クチャは、命令が第2の予め規定された数までのサブ命
令を有することを可能にし、前記第2の予め規定された
数は、前記第1の予め規定された数と前記共通の数とを
積算したものに等しく、前記プロセッサによって実行さ
れるべき命令30/34の各々は、制御ビットの組37
を備えて、1つのサブ命令から前記第2の予め規定され
た数のサブ命令までを含み、前記コンピュータシステム
10はさらに制御ビットの組の条件によって決定される
圧縮された形式42に第1のサブ命令をストアする命令
キャッシュメモリ22を含み、前記圧縮された形式は、
複数の機能処理単位によって共用されるべき第1の命令
の所与のフィールド内にストアされる共用サブ命令36
を含み、前記複数の機能処理単位は、前記制御ビットの
組の条件によって判断される、コンピュータシステム。 - 【請求項14】 前記共用サブ命令は、前記制御ビット
の組が第1の予め規定された条件を識別した場合、第1
のクラスタの第1の機能処理単位28(1,1)および
第2のクラスタの第1の機能処理単位28(2,1)に
対するものである、請求項13に記載のシステム。 - 【請求項15】 前記共用サブ命令は第1の共用サブ命
令であり、圧縮された形式42Dは、制御ビット37の
組が同時に(either concurrently)第2の予め規定さ
れた条件を識別した場合、前記第1のクラスタの第2の
機能処理単位28(1,2)および前記第2のクラスタ
の第2の機能処理単位28(2,2)に対する第2の共
用サブ命令をさらに含む、請求項14に記載のシステ
ム。 - 【請求項16】 所与の命令に対して制御ビットの組を
テストするための手段76と、 前記テストする手段が第1の予め規定された条件を識別
した場合、前記第1の共通のサブ命令を、前記複数のク
ラスタの前記第1のクラスタの前記第1の機能処理単位
と前記第2のクラスタの前記第1の機能処理単位とに経
路制御するための手段78とをさらに含む、請求項14
に記載のシステム。 - 【請求項17】 前記第1の共通のサブ命令は、前記第
1のクラスタの前記第1の機能処理単位および前記第2
のクラスタの前記第1の機能処理単位で同時実行され
る、請求項16に記載のシステム。 - 【請求項18】 前記圧縮されない形式の第1の命令3
0は、前記第2の予め規定された数のサブ命令を含み、
前記第1の命令は、第1のクラスタの第1の機能処理単
位28(1,1)によって実行される第1のサブ命令3
2(1,1)と、第2のクラスタの第1の機能処理単位
28(2,1)によって実行される第2のサブ命令32
(2,1)とを含み、前記システムはさらに、前記第1
の命令をコンパイルするための手段14を含み、前記コ
ンパイルする手段は、 前記第1のサブ命令と前記第2のサブ命令とを比較する
ための手段62と、 前記第1のサブ命令が前記第2のサブ命令に等しい場合
に、第1の予め規定された条件を識別するするために制
御ビットの組の状態を設定するための手段64とを含
む、請求項14に記載のシステム。 - 【請求項19】 前記圧縮されない形式の前記第1の命
令は、前記第2の予め規定された数のサブ命令を含み、
前記第1の命令は、第1のクラスタの第1の機能処理単
位によって実行される第1のサブ命令と、第2のクラス
タの第1の機能処理単位によって実行される第2のサブ
命令とを含み、前記システムはさらに、前記第1の命令
を圧縮された形式に圧縮するための手段を含み、前記圧
縮手段は、 前記第1の命令に関連の制御ビットの組をテストするた
めの手段70と、 前記制御ビットの組が、前記第1のサブ命令と前記第2
のサブ命令とが等しいことを識別した場合、前記第2の
サブ命令を省くことにより第1の命令のサイズを減じる
ための手段72とを含む、請求項14に記載のシステ
ム。 - 【請求項20】 圧縮されない形式の第1の命令は、前
記第2の予め規定された数のサブ命令を含み、前記第1
の命令は、第1のクラスタの第1の機能処理単位によっ
て実行される第1のサブ命令と、第2のクラスタの第1
の機能処理単位によって実行される第2のサブ命令とを
含み、前記システムはさらに、前記第1の命令をキャッ
シュするための手段を含み、前記キャッシュ手段は、 第1の命令に関連の制御ビットの組をテストするための
手段70と、 制御ビットの組が、前記第1のサブ命令と前記第2のサ
ブ命令とが等しいことを識別した場合、前記第2のサブ
命令を省くことによりサイズを減じて第1の命令を圧縮
された形式にするための手段と、 第1の命令を圧縮された形式で命令キャッシュ22にロ
ードするための手段とを含む、請求項14に記載のシス
テム。 - 【請求項21】 圧縮されない形式の第1の命令は、前
記第2の予め規定された数のサブ命令を含み、前記第1
の命令は、第1のクラスタの第1の機能処理単位によっ
て実行される第1のサブ命令と、第2のクラスタの第1
の機能処理単位によって実行される第2のサブ命令とを
含み、前記システムはさらに、前記第1の命令をキャッ
シュするための手段を含み、前記キャッシュ手段は、 前記第1のサブ命令と前記第2のサブ命令とを比較する
ための手段62と、 前記第1のサブ命令が前記第2のサブ命令に等しい場合
に、第1の予め定められた条件を識別するよう前記第1
の命令に関連の制御ビットの組の状態を設定するための
手段64と、 前記制御ビットの組が、前記第1のサブ命令と前記第2
のサブ命令とが等しいことを識別した場合、前記第2の
サブ命令を省くことにより第1の命令のサイズを減じて
圧縮された形式を得るための手段66と、 圧縮された形式で前記第1の命令を命令キャッシュにロ
ードするための手段68とを含む、請求項14に記載の
システム。
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 true JP2003167732A (ja) | 2003-06-13 |
| JP2003167732A5 JP2003167732A5 (ja) | 2005-07-14 |
| JP3806341B2 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) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009059246A (ja) * | 2007-08-31 | 2009-03-19 | Toshiba Corp | マイクロプロセッサ |
| JP2012252475A (ja) * | 2011-06-01 | 2012-12-20 | Fujitsu Ltd | プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法 |
| JP2014524097A (ja) * | 2011-07-28 | 2014-09-18 | クアルコム,インコーポレイテッド | エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置 |
| 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 |
-
2001
- 2001-11-22 JP JP2001357626A patent/JP3806341B2/ja not_active Expired - Fee Related
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009059246A (ja) * | 2007-08-31 | 2009-03-19 | Toshiba Corp | マイクロプロセッサ |
| US8131977B2 (en) | 2007-08-31 | 2012-03-06 | Kabushiki Kaisha Toshiba | Microprocessor inhibiting instruction storage in cache and not decoding based on pre-analysis information to reduce power consumption |
| 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 |
| US10754653B2 (en) | 2011-05-03 | 2020-08-25 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
| JP2012252475A (ja) * | 2011-06-01 | 2012-12-20 | Fujitsu Ltd | プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法 |
| JP2014524097A (ja) * | 2011-07-28 | 2014-09-18 | クアルコム,インコーポレイテッド | エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置 |
| 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 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3806341B2 (ja) | 2006-08-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6859870B1 (en) | Method and apparatus for compressing VLIW instruction and sharing subinstructions | |
| US5958048A (en) | Architectural support for software pipelining of nested loops | |
| US6665776B2 (en) | Apparatus and method for speculative prefetching after data cache misses | |
| US5699536A (en) | Computer processing system employing dynamic instruction formatting | |
| JP3547139B2 (ja) | プロセッサ | |
| US6779101B1 (en) | Method and apparatus for processing compressed VLIW subinstruction opcodes | |
| US8495341B2 (en) | Instruction length based cracking for instruction of variable length storage operands | |
| US7076638B2 (en) | Processor, compiler and compilation method | |
| KR20010033147A (ko) | 다중 데이터 경로 인스턴스를 갖는 프로세서 | |
| JP2006185462A (ja) | 高データ密度のriscプロセッサ | |
| TWI764966B (zh) | 用於控制矢量記憶體存取之資料處理裝置及方法 | |
| KR102458467B1 (ko) | 벡터 생성 명령 | |
| US6292845B1 (en) | Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively | |
| US6256725B1 (en) | Shared datapath processor utilizing stack-based and register-based storage spaces | |
| US20050060711A1 (en) | Hidden job start preparation in an instruction-parallel processor system | |
| JPH1097423A (ja) | ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ | |
| US7143268B2 (en) | Circuit and method for instruction compression and dispersal in wide-issue processors | |
| JP3806341B2 (ja) | サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム | |
| US8285975B2 (en) | Register file with separate registers for compiler code and low level code | |
| US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
| US11347506B1 (en) | Memory copy size determining instruction and data transfer instruction | |
| JPH11242599A (ja) | コンピュータプログラム製品 | |
| US6807628B2 (en) | System and method for supporting precise exceptions in a data processor having a clustered architecture | |
| US20090119492A1 (en) | Data Processing Apparatus and Method for Handling Procedure Call Instructions | |
| Li et al. | ALP: efficient support for all levels of parallelism for complex Media applications |
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 |