JP3750821B2 - 圧縮された命令フォーマットを処理するvliwプロセッサ - Google Patents
圧縮された命令フォーマットを処理するvliwプロセッサ Download PDFInfo
- Publication number
- JP3750821B2 JP3750821B2 JP54069897A JP54069897A JP3750821B2 JP 3750821 B2 JP3750821 B2 JP 3750821B2 JP 54069897 A JP54069897 A JP 54069897A JP 54069897 A JP54069897 A JP 54069897A JP 3750821 B2 JP3750821 B2 JP 3750821B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- compressed
- instructions
- format
- bit
- 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
- 238000012545 processing Methods 0.000 title description 7
- 238000000034 method Methods 0.000 claims description 50
- 230000006837 decompression Effects 0.000 claims description 31
- 230000006835 compression Effects 0.000 claims description 24
- 238000007906 compression Methods 0.000 claims description 22
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 210000001072 colon Anatomy 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Description
本発明は、VLIW(超長命令語)プロセッサに係り、特に、そのようなプロセッサ用の命令フォーマット並びにそのような命令フォーマットを処理する装置及び方法に関する。
特に、本発明は請求項1の「において」なる語に先行する部分に規定したようなVLIWプロセッサに関する。
背景技術
VLIW命令を圧縮する方策は、米国特許第5,179,680号及び第5,057,837号で提案されている。この圧縮方策は、使用されない命令部(operations)が除去された命令語と、どの命令部が除去されたかを示すマスク語とを設けている。
VLIWプロセッサは複数のイシュースロット(issue slots)を含む命令ワードを有している。これらプロセッサは複数の機能ユニットも含んでいる。各機能ユニットは、或る型式の一組の命令部を実行するためのものである。各機能ユニットは、一つの命令を各マシンサイクル中でパイプライン態様で開始することができる点でRISCのようなものである。各イシュースロットは各命令部を保持するためのものである。同一命令ワード内の全ての命令部は、当該プロセッサの単一サイクル内において上記機能ユニット上で並列に開始されねばならない。このように、上記VLIWは、きめの細かい並列処理をなす。
上記のように、VLIWマシン上の一つの命令は典型的には複数の命令部を含んでいる。従来のマシン上では、各命令部は別個の命令として参照されていた。しかしながら、VLIWマシンにおいては、各命令は複数の命令部又はノー・オペレーション(no-ops;ダミー命令部)からなっている。
従来のプロセッサと同様に、VLIWプロセッサは、当該プロセッサ上で実行する命令の流れを記憶するためのディスクドライブのようなメモリ装置を使用する。又、VLIWプロセッサは、従来のプロセッサのように、当該プロセッサに対する広帯域アクセス可能性を以て上記命令流の断片を記憶するためにキャッシュを使用することもできる。
VLIWマシン内の命令は、これらの命令部からプログラマ又はコンパイラにより構築される。このように、VLIWプロセッサ内のスケジューリングはソフトウェアにより制御されるものである。
VLIWプロセッサは、ベクトル・プロセッサ又はスーパースケーラ・プロセッサのような他の型式の並列プロセッサと比肩し得るものである。ベクトル・プロセッサは、複数データ項目に対して同時に実行される単一の各命令部を有している。スーパースケーラ・プロセッサはVLIWプロセッサのようにきめの細かい並列処理をなすが、VLIWとは違って、ハードウェアで命令部をスケジュールする。
長い命令ワードのため、VLIWプロセッサはキャッシュの使用に関して大きな問題を有している。特に、大きなコード寸法はキャッシュ・ミス、即ち必要な命令がキャッシュ内にないような状況、を引き起こす。大きなコード寸法は、又、主メモリからキャッシュへコードを転送するために主メモリの広帯域さが必要となる。
大きなコード寸法は下記のような要因により問題となり得る。
− 最適な実行のためにプログラムを細かく整合させるには、グラフティング、ループの展開、又はプロシージャの組み入れ(インライン)等の技術が使用される。これらの手順はコード寸法を増大させる。
− 各命令において、全てのイシュースロットは使用されていない。優良な最適化コンパイラは使用されていないイシュースロットの数を減少させることはできるが、或る数のノーオペレーション(ダミー命令)は殆どの命令流中に存在し続ける。
− 機能ユニットの使用を最適化するために、条件分岐に関する命令部は典型的には当該分岐遅延の経過前に、即ち何の分岐がとられようとしているか判る前に、開始される。何の結果が実際に使用されるべきかを決定するために、命令には保護ビットが含まれる。
− より新しいプロセッサ型式で好適に使用される大きなレジスタファイルは、一層長いアドレスを必要とし、これらアドレスは命令部と共に含まれねばならない。
VLIW命令の圧縮方策は米国特許第5,179,680号及び第5,057,837号で提案されている。この圧縮方策はマスクワードを用いて命令ワード中の使用されない命令部を削除するが、当該命令を圧縮する余地がもっとある。
本出願の技術背景についての更なる情報は、本明細書で参照する下記先行出願中に見られる:
− 1992年12月29日に出願された米国特許出願第998,090号(出願人整理番号:PHA21777)。該出願はきめ細かい並列処理をなすためのVLIWプロセッサ・アーキテクチャを示している;
− 1993年10月25日に出願された米国特許出願第142,648号(出願人整理番号:PHA1205)。該出願は保護ビットの使用を示している;
− 1994年12月30日に出願された米国特許出願第366,958号(出願人整理番号:PHA21932)。該出願はVLIWアーキテクチャと共に使用されるレジスタファイルを示している。
プログラム圧縮技術の図書目録:
− 電子計算機及び通信システムのモデル解析及びシミュレーションに関する第2回国際ワークショップにおける、ジェー・ワン他による論文「メモリシステム性能を向上させる圧縮の使用の可能性」の第107〜113頁(ダーハム、NC,米国1994年);
− 並列計算、第17巻、n2〜3、1991年6月の第207〜219頁に記載のエッチ・シュローダ他による「命令収縮アレイ上のプログラム圧縮」;
− ジェー・電子計算機及びソフトウェア技術、第2巻、第3番、第315〜27頁(1994年)に記載のエー・ウォルフ他による「埋め込みRISCアーキテクチャ上での圧縮されたプログラムの実行」;
− 電子計算機の設計:電子計算機及びプロセッサにおけるVLIWについての1994年IEEE国際会議の原稿集における第270〜7頁のエム・コズク他による「埋め込みシステムプログラムの圧縮」、(1994年10月、10〜12、米国マサチューセッツ州ケンブリッジ)。
典型的には、これらの文献で採用されている取り組み方は、プログラムを全体として又はプログラムコードのブロックとして圧縮しようとするものである。更に、典型的には、これらの取り組み方では、命令位置又は命令のブロックの位置の何等かのテーブルが必要とされる。
発明の開示
本発明の目的は、VLIWプロセッサにおけるコードの寸法を減少させることにある。
又、本発明の他の目的は、一層高度に圧縮された命令を処理するVLIWプロセッサを提供することにある。
本発明によるプロセッサは、前記伸張ユニットが複数の有限長さから選択された各圧縮命令部長さで各々の命令部を伸張するように構成され、上記有限長さが少なくとも2個の非零長さを含んでいることを特徴とする。利用できる命令部長さの上記組み合わせは、例えば0、26、34及び42ビット長の圧縮された命令部である。どの命令部が特定の長さに圧縮されるかは、先ずこれら命令部の発生頻度の学習に依存する。これは、書かれたソフトウェアの形式に依存して変化し得る。更に、上記長さは当該命令部が保護されているか又は保護されていないかに、当該命令部が結果を生成するか否か、当該命令部が即値パラメータを使用するか否か、及び当該命令部が使用するオペランドの数に依存させることができる。
本発明によるプロセッサは、前記伸張ユニットが前記圧縮命令記憶媒体からフォーマットフィールドを取り出すように構成され、該フォーマットフィールドが前記圧縮された命令の各命令部に対する各々の圧縮命令部長さを特定し、前記伸張ユニットが前記圧縮された命令の各命令部を上記フォーマットフィールドに従って伸張するような実施例を有する。好ましくは、上記フォーマットフィールドは当該プロセッサのどのイシュースロットが当該命令により使用されるべきかも特定する。
本発明によるプロセッサの他の実施例であって、前記フォーマットフィールドがN個の副フィールドを有し、Nがイシュースロットの数であり、各副フィールドが各イシュースロットに対する圧縮された命令部の長さを特定するようなプロセッサにおいては、前記副フィールドの各々が少なくとも2ビットを含むことを特徴とする。4つの異なる命令部長さが使用される場合は、上記副フィールドは例えば2ビット長であり得る。
本発明の他の実施例においては、前記伸張ユニットが、
− 前記圧縮命令記憶媒体から、先行する圧縮された命令を前記フォーマットフィールドと共に取り出し、
− 前記先行する圧縮された命令の伸張を開始し、次いで、
− 前記圧縮命令記憶媒体から前記圧縮された命令を取り出すと共に、該圧縮された命令の伸張を、前記圧縮命令記憶媒体から前記先行する圧縮された命令と一緒に取り出された前記フォーマットフィールドに従って開始する、
ように構成されている。このように、上記フォーマットフィールドは前記圧縮された命令がロードされる前に利用することができ、該フォーマットフィールドに従う伸張の準備を前記圧縮された命令がロードされる前に開始することができる。
本発明の一実施例においては、前記伸張ユニットがメモリアクセスユニット内へ前記圧縮命令記憶媒体から前記フォーマットフィールドを取り出し、該メモリアクセスユニットは少なくとも1個の命令部副フィールドも有し、前記伸張ユニットは前記命令部副フィールドを前記伸張された命令の前記命令部の少なくとも1つに合成する。この構成は取り出し効率を上昇させ、命令取り出しのパイプライン化を可能にする。この構成は、どのような数の利用可能な命令部長さ(例えば0及び32なる2つの長さも)を伸張することができるプロセッサで使用することができる。このように、上記伸張ユニットは後続の命令にどのくらい多数のイシュースロットがあるかを当該命令を取り出すに先立ち報知される。分岐目標以外の各命令について、フォーマットを特定するフィールドが先行する命令と共に記憶される。
本発明は、請求項7によるVLIWプロセッサ上で実行するための圧縮されたコードを生成する方法にも関する。この方法は上記プロセッサにとって有用な命令を発生する。
本発明による上記方法であって、当該方法が前記命令を含む命令の流れに適用されるような方法は、各命令に関して当該命令が前記命令の流れにおける他の命令からの分岐の分岐目標であるか否かを判定し、分岐目標でない命令のみを圧縮するような過程を有するような実施例を有する。このように、分岐目標は当該プロセッサによるプログラムの実行の間には伸張される必要はなく、分岐命令の実行の後に伸張するための遅延も必要とされない。
【図面の簡単な説明】
以下、本発明を例示により(本発明を限定するものではない)以下の図面を参照して説明する。
第1A図は、本発明の圧縮命令フォーマットを使用するプロセッサを示す。
第1B図は、第1A図のプロセッサにおけるCPUの詳細を示す。
第2A〜2E図は、キャッシュ内の命令の可能性のある位置を示す。
第3図は、本発明による圧縮方策の一部を示す。
第4A〜4F図は、本発明による圧縮された命令の例を図示する。
第5A及び5B図は、本発明による圧縮された命令フォーマットのテーブルを示す。
第6A図は、命令キャッシュの入力側の機能を示す概念図。
第6B図は、命令キャッシュの出力側の一部の機能を示す概念図。
第7図は、命令キャッシュ104の出力側の機能を示す概念図。
第8図は、本発明によるコードのコンパイル及びリンクを図示する。
第9図は、圧縮及びシャッフルモジュールのフローチャート。
第10図は、第9図のボックス902の詳細。
第11図は、第10図のボックス1005の詳細。
第12図は、伸張処理を図示する。
発明を実施するための最良の形態
第1A図は、本発明によるプロセッサの概略構成を示している。本発明によるマイクロプロセッサは、CPU102と、命令キャッシュ103と、データキャッシュ105とを含んでいる。上記CPUは広帯域バスにより上記各キャッシュに接続されている。当該マイクロプロセッサは、命令の流れが記憶されるメモリ104も含んでいる。
キャッシュ103は512ビットの倍長ワードを有するように構成されている。ワード中の個々のバイトはアドレス指定可能であるが、ビットはアドレス指定することはできない。バイトは8ビット長である。好ましくは、上記倍長ワードは単一クロックサイクル内で単一ワードとしてアクセス可能なものとする。
前記命令流は、本発明に従い圧縮されたフォーマットの命令として記憶される。圧縮されたフォーマットは、メモリ104とキャッシュ103の両方で使用される。
第1B図は、本発明によるVLIWプロセッサを更に詳細に示している。当該プロセッサはマルチポート・レジスタファイル150と、多数の機能ユニット151、152、153、…と、命令イシューレジスタ154とを含んでいる。上記マルチポート・レジスタファイルは、機能ユニットからの結果及び機能ユニット用のオペランドを記憶する。前記命令イシューレジスタは、機能ユニット151、152、153、…上で単一クロックサイクル内で並列に開始されるべき各命令部を含むための多数のイシュースロットを有している。以下により詳細に説明する伸張ユニット155は、命令キャッシュ103からの圧縮された命令をIIR154により使用可能なフォームに変換する。
圧縮された命令のフォーマット
1.一般的特性
特許請求の範囲に記載された命令フォーマットの好ましい実施例は、5つのイシュースロットを含む命令ワードを持つVLIWマシンで使用されるように最適化されている。このフォーマットは以下のような特徴を有している。
− 位置合わせされていない可変長命令;
− 命令当たり可変個数の命令部;
− 3つの取り得る大きさの命令部:26、34又は42ビット(26/34/42フォーマットとも呼ぶ);
− 最も頻繁に使用される32個の命令部は、他の命令部よりも小型に符号化される;
− 命令部は保護され又は非保護とされ得る;
− 命令部は零項、単項又は2項のうちの一つである。即ち、命令部は0、1又は2個のオペランドを持つ;
− 命令部は結果無しのものであり得る;
− 命令部は、7又は32ビットを持つ即値パラメータを含み得る;
− 分岐目標は圧縮されない;
− 命令用のフォーマットビットは先行命令内に位置する。
2.命令の位置合わせ
分岐目標を除いて、各命令はキャッシュ及び主メモリ内ではバイト境界に位置合わせされた形で記憶される。命令は、キャッシュ又は主メモリの何れにおいてもワード又はブロック境界に関しては位置合わせされない。従って、位置合わせされない命令キャッシュアクセスが必要である。
位置合わせされていない命令を取り出すために、プロセッサはキャッシュからクロックサイクル毎に1ワードを取り出す。
以下に述べる圧縮フォーマットから分かるであろうように、分岐目標は単一クロックサイクル内で取り出され得るように、これら分岐目標は圧縮されていない必要があり、且つ、キャッシュの単一ワード内になければならない。分岐目標は、以下の規則に従ってコンパイラ又はプログラマにより位置合わせされる:
ワードの境界が分岐目標内か又は当該分岐目標の終端に正確に位置する場合は、当該分岐目標には次のワードの境界から開始するように詰め込み(padding)が付加される。
好ましいキャッシュは、単一クロックサイクル内で倍長ワードを取り出すので、上記規則はワードの境界を倍長ワードの境界に置き換えるように変更することができる。
通常の位置合わせされていない命令は、順次の命令が現ワードの末尾部と次のワードの開始部とから合成されるようにして取り出される。同様に、全ての後続の命令は2つのキャッシュワードから合成され、各クロックサイクル内では付加ワードが取り出される。
このことは、コードセグメントが再配置される(例えば、リンカ又はローダにおいて)場合は常に、位置合わせが維持されねばならないことを意味する。このことは、コードセグメントのベースアドレスをキャッシュブロック寸法の倍数に再配置することにより達成される。
第2A〜2E図は、本発明によるキャッシュ内の位置決めされない命令の記憶を示している。
第2A図は、本発明による3つの命令i1、i2及びi3を伴う2つのキャッシュワードを示している。これらの命令はワードの境界に関しては位置決めされていない。命令i1及びi2は完全に一つのキャッシュワード内にあるので、これら命令は分岐目標であり得る。命令i3はワードの境界と交差しているので、分岐目標であってはならない。しかしながら、これらの例示の目的のために、ここではi1が(i1のみが)分岐目標であると仮定する。
第2B図は許容されない状況を示している。分岐目標i1はワードの境界と交差している。従って、コンパイラ又はプログラマは、第2C図に示すように、命令i1をワードの境界にシフトし、空きの領域を詰め込みバイトで満たさねばならない。
第2D図は他の許容されない状況を示している。分岐目標命令i1は正確にワードの境界で終了している。この状況でも、第2E図に示すように、上記命令はワードの境界まで移動され、空き領域は詰め込みで満たされねばならない。
分岐目標は、命令内の命令部というよりも命令でなければならない。以下に述べる命令圧縮技術は通常ノーオペレーション(ダミー命令)を除去する。しかしながら、分岐目標命令は圧縮されていないので、それら命令はプロセッサによって使用されるべきでないイシュースロットを満たすためのノーオペレーションを含んでいなければならない。
3.ビット及びバイト順序
この応用例全体を通して、ビット及びバイト順序はリトル・エンディアン(little endian)である。ビット及びバイトは、最小桁ビットを最初にして以下のように示される。
ビット番号 0…8…16…
バイト番号 0 1 2
アドレス 0 1 2
4.命令フォーマット
圧縮された命令は7個までの形式のフィールドを有することができる。これらを以下に掲げる。フォーマットビットのみが必須のフィールドである。
命令はバイト整列された区画からなる。最初の2つのバイトはフォーマットビットと最初の群の2ビット命令部とを含む。全ての他のフィールドは、詰め込みビットを含む第2の2ビット命令部を除いて、バイトの整数倍である。
上述したように、各命令部は26、34又は42ビットを持ち得る。26ビット命令部はフォーマットビットと共に記憶されるべき2ビット部と、24ビット部とに分解される。34ビット命令部は2ビット部と、24ビット部と、1バイト拡張部とに分解される。42ビット命令部は2ビット部と、24ビット部と、2バイト拡張部とに分解される。
A.フォーマットビット
これらは第5節で述べる。5イシュースロットマシンの場合は、10個のフォーマットビットが必要である。このように、1バイトと2ビットが使用される。
B.2ビット命令部、第1群
各命令部の殆どは以下に説明する24ビット部、即ち3バイト、に記憶されるが、好ましい命令セットのにとっては、24ビットでは充分ではない。最も短い命令部でも26ビットを必要とする。従って、フォーマットビットフィールド用のバイト中に残された前記6ビットが、命令部からの余分なビット、3つの命令部の各々に関し2ビット、を記憶するのに有利に使用することができることが判った。上記2ビット部のために指定された前記6ビットが必要でない場合は、それらビットは詰め込みビットにより満たすことができる。
C.24ビット命令部、第1群
上記2ビット命令部、第1群に2ビット命令部があったのと同様の24ビット命令部がある。言い換えると、ここには3個までの3バイト命令部を記憶することができる。
D.2ビット命令部、第2群
3を超えるイシュースロットを持つマシンにおいては、第2群の2ヒット及び24ビット命令部が必要である。第2群の2ビット部は4組の2ビット部を持つバイトからなる。何れかのイシュースロットが使用されない場合は、そのビット部は詰め込みビットで満たされる。詰め込みビットは当該バイトの左側に位置する。5イシュースロットマシンで、全スロットが使用されている場合は、この区画は2群の2ビット部が後続する4個の詰め込みビットを含むであろう。上記5つのイシュースロットは上記2群にわたって分散される:即ち、3個のイシュースロットは第1群に、2個のイシュースロットは第2群となる。
E.24ビット命令部、第2群
当該群の2ビット部には対応する群の24ビット命令部が続く。全スロットが使用される5イシュースロットマシンにおいては、当該群には2つの24ビット部が在るであろう。
F.2ビット及び24ビット部の他の群
非常に幅の広いマシン、即ち6を超えるイシュースロットのマシンにおいては、他の群の2ビット及び24ビット命令部が必要である。
G.命令部の拡張
命令の終わりには選択的な8又は16ビット命令部拡張部のバイト整列された群があり、各命令部拡張部はバイト整列されている。該拡張部は命令部の寸法を、必要なら、基本の26ビットから34又は42ビットに拡張するために用いられる。
ここで、上記において使用される変数は以下のように定義される:
N=当該マシンのイシュースロットの数、N>1
S=当該命令で使用されるイシュースロットの数(0≦S≦N)
C1=4−(Nmod4)
(S≦C1)の場合は、V1=S及びV2=2*(C1−V1)
(S>C1)の場合は、V1=C1及びV2=0
V3=(S−V1)div4
V4=(S−V1)mod4
(V4>0)の場合は、V5=2*(4−V4)、それ以外の場合は、V5=0
表記の説明
::=は「と定義される」を意味する。
<フィールド名:数>は、コロンの前に示されたフィールドが該コロンの後に示された数のビットを持つことを意味する。
{<フィールド名>}数は、<括弧及び{括弧内に示されたフィールドが}括弧の後に示された数の回数だけ繰り返されることを意味する。
“0”は、ビット“0”を意味する。
“div”は、整数除算を意味する。
“mod”は、モジュロを意味する。
:0/8/16は、当該フィールドが0、8又は16ビット長であることを意味する。
圧縮された命令の例が第4A〜4F図に示されている。
第4A図は命令部無しの命令を示している。この命令は、フォーマットフィールド用の10ビットと詰め込みビットのみを持つ6ビットとを含む2バイトを有している。前者は全命令に存在する。後者は通常は2ビット命令部に相当する。ビットフィールドの上部のXは、当該フィールドが詰め込みを含むことを示している。後の図では、当該フィールドが使用されていることを示すためにOが使用される。
第4B図は1個の26ビット命令部を伴う命令を示している。当該命令部はバイト3〜5に1個の24ビット部と、バイト2に1個の2ビット部とを含んでいる。使用されている上記2ビットは上部にOの標識が付されている。
第4C図は2つの26ビット命令部を持つ命令を示している。第1の26ビット命令部はバイト3〜5に該命令部の24ビット部を有し、2ビット部フィールドの最後のものに該命令部の超過2ビットを有している。第2の26ビット命令部はバイト6〜8に該命令部の24ビット部を有し、2ビット部フィールドの最後から2番目のものに該命令部の超過2ビットを有している。
第4D図は3個の26ビット命令部を有する命令を示している。24ビット部はバイト3〜11に位置し、2ビット部はバイト2に上記24ビット部から逆の順序で位置している。
第4E図は、4個の命令部を伴う命令を示している。この場合、第2の命令部は2バイトの拡張部を有している。又、第4の命令部は1バイトの拡張部を有している。これら命令部の24ビット部はバイト3〜11及びバイト13〜15に記憶されている。最初の3つの命令部の2ビット部はバイト2に位置している。第4の命令部の2ビット部はバイト12に位置している。第2の命令部の拡張部はバイト16〜17に位置している。又、第4の命令部の拡張部はバイト18に位置している。
第4F図は5つの命令部を伴う命令を示し、これら命令部の各々は1バイトの拡張部を有している。これら拡張部の全ては当該命令の最終部に現れる。
上記例では各拡張部は第2の群の2ビット部の後のみに現れるようになっているが、これら拡張部は同様に3以下の命令部を伴う命令の最終部に現れるようにすることもできる。そのような場合は、第2の群の2ビット部は必要ではないであろう。
命令中の命令部の位置と、これら命令部が送出されるイシュースロットとの間には固定した関係は存在しない。このことは、全てのイシュースロットが使用されてはいないような場合に、命令を短くすることを可能にする。命令部の位置は左から右へと充填される。当該命令のフォーマット部分は、特定の命令部が何のイシュースロットに属するかを示す。例えば、何れかの命令が1個のみの命令部を含む場合は、該命令部は最初の命令部位置に位置し、該命令部はスロット番号1のみに限らず何れのイシュースロットにも送出することができる。伸張ハードウェアは、それらの適したイシュースロットへの経路操作を司る。
コードの1個の系列ブロックを形成する命令の間には、詰め込みバイトは許容されない。詰め込みバイトは、コードの別個のブロックの間で許容される。
5.フォーマットビット
本発明による命令圧縮技術は、当該圧縮された命令により何のイシュースロットが使用されるべきであるかを特定するようなフォーマットフィールドを使用することに特徴がある。取り出し効率を達成するために、フォーマットビットは当該フォーマットビットが関係する命令に先行する命令内に記憶される。このことは、命令取り出しのパイプライン化を可能とする。前記伸張ユニットは、後続の命令に幾つのイシュースロットが在るかにつき、該命令の取り出しに先立って警告される。関連する命令部に先行するフォーマットビットの記憶が、第3図に示されている。圧縮されていない分岐目標である命令1は、命令2において特定される命令部により使用されるイシュースロットを示すフォーマットフィールドを含んでいる。命令2〜4は圧縮されている。これら各命令は、後続の命令の命令部により使用されるべきイシュースロットを特定するフォーマットフィールドを含んでいる。
フォーマットビットは以下のように符号化される。Nイシュースロット・マシンの場合は2*N個のフォーマットビットがある。好ましい実施例の場合は、5個のイシュースロットがある。従って、10個のフォーマットビットがある。ここでは、フォーマットビットはFormat[j]のようにマトリクス表現で表し、ここでjはビット番号である。フォーマットビットはN群の2ビットに組織化される。ビットFormat[2i]及びFormat[2i+1]はイシュースロットiに関するフォーマット情報を与え、ここで0≦i≦Nである。フォーマットビットの意味は以下の表に示される通りである。
命令部は左から右への順序でイシュースロットに対応している。例えば、2個のイシュースロットが用いられ、且つ、Format={1,0,1,1,1,1,1,0,1,1,}の場合は、命令は2個の34ビット命令部を含む。最左端のものはイシュースロット0に経路決めされ、最右端のものはイシュースロット3に経路決めされる。Format={1,1,1,1,1,0,1,0,1,0}の場合は、命令は3個の34ビット命令部を含み、最左端の命令部はイシュースロット2に経路決めされ、2番目の命令部はイシュースロット3を意図し、最右端の命令部はイシュースロット4に属する。
分岐目標命令を伸張するのに用いられるフォーマットは、固定数である。好ましい5イシュースロットマシンの場合、固定フォーマット={0,1,0,1,0,1,0,1,0,1}である。
6.命令部のフォーマット
命令部のフォーマットは以下の特性に依存する。
− 零項、単項又は2項のものである;
− パラメータ的か非パラメータ的か。パラメータ的命令はコード中に即値オペランドを含む。パラメータは異なる大きさのものであり得る。ここでは、param7、即ち7ビットパラメータ及びparam32、即ち32ビットパラメータがある;
− 結果生成型か、結果無しのものか;
− 長い又は短いオーピーコードである。短いオーピーコードは32個の最も頻繁なオーピーコードで5ビット長である。長いオーピーコードは8ビット長であり、短いフォーマットで表すことができるのもを含む全オーピーコードを含む。オーピーコード0〜31は、32個の短いオーピーコード用に確保されている。
− 保護されているか又は保護されていないか。保護されていない命令は真なる保護の一定値を有する。
− レーテンシィ。フォーマットビットが、命令部が1に等しいレーテンシィか、又は1を越えるレーテンシィを持つかを示す。
− 符号付き/符号無し。フォーマットビットが、パラメータ的命令に関し、当該パラメータが符号付きであるか、符号無しであるかを示す。
圧縮されていない命令フォーマットにおいては、保護されているか又は保護されていないかの特性は定数1の特別レジスタファイルアドレスを用いることにより決定される。保護アドレスフィールドが定数1のアドレスを含む場合は、当該命令部は保護されておらず、それ以外の場合は保護されている。殆どの命令部は保護されたフォーマット又は保護されていないフォーマットの両方で発生し得る。即値命令部、即ち定数をレジスタに転送する命令部は保護フィールドは有さず、常に非保護である。
32個の短いオーピーコードのリストに何のオーピーコードが含まれるかは、発生頻度の学習に依存し、書かれたソフトウェアの型式に依存して変化し得る。
次の表IIは本発明により使用される命令部フォーマットを掲示している。特に言及しない限り、全てのフォーマットはパラメータ的でなく、結果を有し、保護されており且つ長いオーピーコードである。表及び図を可能な限り単純化するために、次の表はレーテンシィ及び符号付き/符号無し特性に関する特別なフォームは掲示していない。これらは、フォーマット説明内でL及びSで示されている。非パラメータ的な零項命令部の場合は、単項フォーマットが使用される。その場合は、引数(argument)用のフィールドは定義されていない。
全命令部に関し、分岐目標で使用するために42ビットフォーマットが準備されている。単項及び2項−結果無し命令部に対しては、前記<2項>フォーマットを使用することができる。その場合、2項フォーマット中の使用されていないフィールドは未定義の値を有する。短い5ビットのオーピーコードは最上位ビットに0を詰め込むことにより長い8ビットのオーピーコードに変換される。非保護命令部は、保護アドレス値として真なる定数のレジスタファイルアドレスを得る。記憶命令部には、前記42ビットの<2項−param7−結果無し>フォーマットが、通常の34ビットの<2項−param7−結果無し−短い>フォーマットの代わりに使用される(記憶命令部は短い命令部の組に属すると仮定する)。
表IIに現れない命令部型式は、次の別名表に従って、表IIに現れる命令部型式上に分配される。
次表は命令部に現れるフィールドの表である。
第5図は命令部の符号化の全仕様を含んでいる。
7.命令フォーマットの拡張
命令フォーマット内には、42ビットの最大寸法内での符号化が可能な限りにおいて、新たな命令部及び命令部フォームを追加するための幾らかの柔軟性がある。
フォーマットは7ビットのレジスタファイルアドレスに基づく。異なる大きさのレジスタファイルアドレスに関しては、フォーマット及び伸張ハードウェアの再設計が必要である。
当該フォーマットは可変数のイシュースロットを持つマシン上で使用することができる。しかしながら、命令の最大寸法は命令キャッシュ内のワード寸法により規制される。4イシュースロットマシンにおいては、最大命令寸法は4個の42ビット命令部+8個のフォーマットビットを用いて22バイト(176ビット)となる。5イシュースロットマシンにおいては、最大命令寸法は5個の42ビット命令部+10個のフォーマットビットを用いて28バイト(224ビット)となる。
6イシュースロットマシンにおいては、最大命令寸法は6個の42ビット命令部+12個のフォーマットビットを用いて264ビットとなる。ワードの大きさが256ビットに制限され、且つ、6個のイシュースロットが所望の場合は、スケジューラは1命令中で42ビットフォーマットの最大で5個の命令部しか使用しないよう制限される。分岐目標用の固定のフォーマットは、42ビットの5個のイシュースロットと34ビットの1個のイシュースロットを使用しなければならない。
命令の圧縮
第8図は、どのようにしてソースコードがロード可能な圧縮されたオブジェクトモジュールになるかを示す図である。先ず、ソースコード801はコンパイラ802によりコンパイルされ、オブジェクトモジュールの最初の組803が生成される。これらモジュールはリンカ804により結合されて、第2の形式のオブジェクトモジュール805が生成される。このモジュールは、次いで、806で圧縮及びシャッフルされ、これによりロード可能なモジュール807が生成される。
どのような標準コンパイラ及びリンカでも使用することができる。オブジェクトモジュールIIは多数の標準データ構造を含んでいる。これらは、ヘッダ;グローバル及びローカルシンボルテーブル;再配置情報用のリファレンステーブル;セクションテーブル;及びデバッグ情報を含み、これらの内の幾つかは圧縮及びシャッフルモジュール807により使用される。オブジェクトモジュールIIは、処理すべき命令が居るテキスト区画と、当該テキストが何のソースファイルから来たかを追跡するソース区画とを含む区画も有している。
上記圧縮及びシャッフルモジュールの高レベルフローチャートが第9図に示されている。この場合、901においてモジュールIIが読み込まれる。902においては前記テキスト区画が処理される。903においては他の区画が処理される。904においてはヘッダが更新される。905においては、オブジェクトモジュールが出力される。
第10図は、上記ボックス902を展開したものである。この場合、1001では参照テーブル、即ち再配置情報が収集される。1002では分岐目標が収集される。何故なら、これらは圧縮されないからである。1003では、当該ソフトウェアは、ソース区画中にもっとファイルがあるかチェックする。もしあるなら、1004で次のファイルに対応する部分が取り出される。次いで、1005で当該部分が圧縮される。1006では、上記ソース区画のファイル情報が更新される。1007では、ローカルシンボルテーブルが更新される。
上記ソース区画に一旦ファイルが無くなると、上記グローバルシンボルテーブルが1008において更新される。次いで、1009では、テキスト区画のアドレスリファレンスが更新される。次に、1010では、256ビットのシャッフルが実行される。このようなシャッフルの動機付けを以下に説明する。
第11図は、上記ボックス1005を展開したものである。最初に、1101において圧縮されるべき命令がもっとあるか否かが判断される。もしあるなら、次の命令が1102で取り出される。次いで、当該命令の各命令部が1103において第5A及び5B図のテーブルに従って圧縮され、分散テーブルが1108において更新される。この分散テーブルは圧縮及びシャッフルの結果として必要となる新たなデータ構造であり、以下に更に説明する。次いで、1104において、一つの命令における全命令部及び次の命令のフォーマットビットが第4A〜4E図のように合成される。現命令がアドレスを含む場合は、次いで、1105において前記参照テーブルの再配置情報が更新されなければならない。1106では、次のテキスト区画のアドレスリファレンスを更新するに要する情報が収集される。1007では、圧縮された命令が出力ビット系列の最後に付加され、制御がボックス1101に戻される。最早命令がない場合は、制御はボックス1006に戻される。
圧縮を扱う機能は以下に掲示するように種々のモジュールにおいて実施することができる。
本発明の圧縮及びシャッフルの結果として必要になる分散テーブルは、以下のように説明することができる。
前記参照テーブルは、当該命令流により使用されるアドレスの位置のリストと、これらの位置に掲示された実際のアドレスの対応するリストとを含んでいる。コードが圧縮され、且つ、ロードされる場合は、これらのアドレスは更新されねばならない。従って、上記参照テーブルは、これらの時点で上記更新を可能にするために使用される。
しかしながら、コードが圧縮され且つシャッフルされる場合は、各アドレスの実際のビットは互いに分離され且つ再配列される。従って、前記分散テーブルは、参照テーブルにおける各アドレスに対して、各ビットが何処に位置されるかを掲示する。好ましい実施例では、当該テーブルはビットフィールドの幅、ソーステキスト中の当該アドレスの対応するインデクスからのオフセット、デスティネーションテキスト内のアドレスの対応するインデクスからの対応するオフセットを掲示する。
プロセッサで実行するためにオブジェクトモジュールIIIがロードされると、前記分散テーブルは、ビットがシャッフル解除される前でも参照テーブルに掲示されたアドレスが更新されることを可能にする。
上記分散テーブルは、例えば、一組の分散記述子を含む。各分散記述子は一群の三つ組み(デスティネーションオフセット、幅、ソースオフセット)と、当該記述子内の三つ組みの数を示す符号無し整数とを含んでいる。
例えば、分散記述子が3個の三つ組み(0、7、3)、(7、4、15)、(11、5、23)を有していると仮定する。又、ソースフィールドがテキスト区画のビットフィールドの位置320にあると仮定する。実際のアドレスフィールドのビットを得るために、以下のようにする。アドレスフィールドのビット0〜6(7ビット)はビット系列からの位置323(320+3)〜329からとする。アドレスフィールドのビット7〜10はビット系列のビット335〜338からとする。又、アドレスフィールドのビット11〜15はビット系列のビット343〜347からとする。このように、アドレスフィールドは長さ16を有する。
オブジェクトモジュールにおいては、参照記述子のリストがビット系列と関連付けられる。各参照記述子はビット系列中の一つのビットフィールドを参照する。各参照記述子は、分散テーブルへの、当該ビットフィールドのビットが前記ビット系列内で分散された態様についての情報を持つ分散記述子を見つけることができるインデクスを含んでいる。例えば、ビットフィールドがビット系列内の位置11を有し、当該ビットフィールドに対応する分散記述子が単一のエントリ(0、18、0)を有する場合は、実際のソースオフセットは、上記位置とソースオフセットとを一緒に加算する(11+0)ことにより得られる。
命令の伸張
VLIWプロセッサが上述したようにして圧縮された命令を処理するには、これら命令は伸張されねばならない。伸張の後、これら命令はN個のイシュースロットを持つ命令レジスタを満たし、ここでNは好ましい実施例の場合は5である。第12図は上記伸張の過程を示す図である。命令はメモリ1201、即ち主メモリ104か又は命令キャッシュ105の何れか、から到来する。次いで、伸張1203される前に、以下に述べるように、シャッフル解除1201されねばならない。伸張1203の後、これら命令はCPU1204に進むことができる。
伸張された各命令部は2個のフォーマットビットと42ビットの命令部とを有している。上記2個のフォーマットビットは、4つの可能性のある命令部の長さ(イシュースロット不使用、26ビット、34ビット又は42ビット)の一つを指す。これらのフォーマットビットは、上記第5節における「Format」と同一の値を有する。命令部が26ビット又は34ビットの大きさを有する場合は、上位の8又は16ビットは未定義である。イシュースロットが不使用の場合は、フォーマットビットにより示されるように、全命令部ビットは未定義であり、CPUは当該オーピーコードをノーオペレーションコードに置換しなければならない(さもなくば、機能ユニットにノーオペレーションを指示しなければならない)。
正式には、伸張された命令のフォーマットは、
<伸張された命令>::={<伸張された命令部>}N
<伸張された命令部>::=<命令部:42><フォーマット:2>
命令部は(前記)表IIIのようなフォーマットを有している。
付録Aは、伸張ユニットの機能を規定するVERILOGコードである。VERILOGコードは、カリフォルニア州サンジョゼのカデンス・デザイン・システムズ・インクにより製造されるVERILOGシミュレータへの入力として使用される標準フォーマットである。上記コードはカリフォルニア州マウンテンビューのシノプシスにより製造されるデザインコンパイラに直接入力することもでき、これにより当該コードを伸張する伸張ユニットの回路図を作成することができる。VERILOGコードは当該伸張ユニットのピンのリストを規定し、これらは:
Data512は倍長ワードであり、現在関心のある命令を含んでいる。上記において、プログラムカウンタPCは下記のアルゴリズムに従いData512を決定するために使用される:
A:={PC[31:8],8’b0}
もしPC[5]=0なら、
Data512':={M(A),M(A+32)}-
その他の場合は、Data512':={M(A+32),M(A)}
ここで、Aはメモリ中の関心のある命令を含む単長ワードのアドレスである;
又、8’b0は零化された8ビットを意味し;
M(A)はAによりアドレス指定されたメモリのワード;
M(A+32)はA+32によりアドレス指定されたメモリのワード;
Data512'はdata512のシャッフルされたものである。
このことは、奇数ワードがアドレス指定された場合はワードがスワップされることを意味する。
命令部は上記伸張ユニットにより部分的に伸張された形態で送出される。何故なら、当該命令部フィールドは常に同一ビット位置にあるとは限らないからである。それらビット位置から上記命令部フィールドを抽出するために何らかの他の処理がなされねばならず、それらの殆どはCPUパイプラインの命令デコード段中で好適になされる。これを、各命令部フィールドに関して以下に説明する。
src1
src1フィールドは固定位置にあり、アドレスとしてレジスタファイルに直接渡すことができる。32ビット即値命令部のみがsrc1フィールドを使用しない。この場合は、CPU制御は上記レジスタファイルからのsrc1オペランドは使用しない。
src2
src2フィールドは使用される場合は固定の位置にあり、アドレスとしてレジスタファイルに直接渡すことができる。使用されない場合は、src2フィールドは不定値を持つ。CPU制御は、レジスタファイルから読み取られた「ダミー」src2値は使用されないようにする。
guard
保護フィールドは使用される場合は固定の位置にあり、アドレスとしてレジスタファイルに直接渡すことができる。レジスタファイルへのアクセスと同時に、CPU制御は当該命令部のオーピーコードとフォーマットビットを検査する。当該命令部が保護されていない場合は、RF(レジスタファイル)から読みとられた保護値は定数TRUEにより置換される。
オーピーコード
短及び長オーピーコードは当該命令部中の固定の位置に得られる。それらは、ビット位置21〜30+2フォーマットビットにある。これらは、デコード用の最大時間内でオーピーコードデコードに直接供給することができる。
dst
dstフィールドはレイテンシ0の32ビット即値命令部の場合は非常に即座に必要となる。この特別な場合は、ビット33及びフォーマットビットを検査することによりCPUにより即座に検出される。他の全ての場合では、当該命令部中の何処にdstフィールドがあるか(多数の位置にあり得る)デコードし、それを取り出すために、命令デコードパイプライン状態中では全クロックサイクルを利用することができる。
32ビット即値
もし32ビットの即値がある場合は、それは当該命令部の固定位置にある。7個の最下位ビットは、7ビットパラメータのように、同一位置のsrc2フィールドにある。
7ビットパラメータ
7ビットパラメータがある場合は、それは当該命令部のsrc2フィールドにある。一つ例外がある:オフセット命令部を伴うストアである。この命令部の場合、7ビットパラメータは種々の位置にあり得、データキャッシュへの特別な7ビット即値バス上に多重化される。
ビットスウィズリング
命令が長い場合、例えば512ビット倍長ワードの場合、キャッシュ構造は複雑になる。命令のビットをスウィズルして、チップの配置を単純化するのが有利である。ここでは、スウィズル及びシャッフルなる語は、同じ事を意味するように使用されている。以下は、ビットをスウィズルするためのアルゴリズムである。
ここで、i、j及びkは整数インデクスであり;word_shuffledはシャッフルされたワードのビットを記憶するマトリクスであり;word_unshuffledはシャッフル解除されたワードのビットを記憶するマトリクスである。
キャッシュ構造
第6A図は、VLIW命令の効率的な処理に有効なキャッシュ構造の入力に対する動作を示している。このキャッシュは、各々が2kバイトの16個のバンク601〜616を含んでいる。これらのバンクは入力バス617を分け合っている。これらキャッシュは2つのスタックに分割されている。左側のスタックは「ロー」と呼び、右のスタックを「ハイ」と呼ぶ。
当該キャッシュは一度には一方のバンクに、従って一度には4バイトのみを、入力することができる。アドレス指定が、どのバンクのどの4バイトが満たされるかを決定する。キャッシュに記憶されるべき512ビットワードの各々に対して、各バンクには4バイトが記憶される。各バンクの陰影を付けた部分は、各バンクの対応する部分が所与のワードをロードするためのものであることを示している。これらの陰影を付けた部分は図示のためのみのものである。如何なるワードも、これらバンクの如何なる組の対応する部分にロードすることもできる。
前述したアルゴリズムによるスウィズリングの後、スウィズルされたワードの連続した4つのバイト部分が、608、616、606、614、604、612、602、610、607、615、605、613、603、611、601、609の順で各バンクにロードされる。スウィズルされたワードの上記4バイト部分をロードする順序は、これらバンクを表すボックス内にローマ数字で示されている。
第6B図は、スウィズルされたワードが当該キャッシュからどの様に読み出されるかを示している。第6B図はロー側スタックのバンクの陰影部分のみを示している。ハイ側部分も同様である。陰影部分601a〜608aは各々32ビットを有している。各ビットは図示の接続を用いてbus256lowと呼ばれる出力バス上にロードされる。即ち、608a-bit0,607a-bit0,…,601a-bit0; 608a-bit1,607a-bit1,…,601a-bit1; …; 608a-bit31,607a-bit31,…,601a-bit31の順である。これらの接続を用いて、ワードは自動的に適切なビット順にスウィズル解除される。
配線620、621、…、622の各束は、一緒になって出力端bus256lowを形成する。これら配線は当該キャッシュを上記出力端に向かって交差することなく通過する。
出力に関しては当該キャッシュは第7図のようである。各ビットは制御ユニット704の制御の下で、シフト回路網703を介してスタック・ロー701とスタック・ハイ702から読み出され、上記回路網は上記各ビットが前述した出力順序になることを保証する。このようにして、512ビットワードの全出力が束線620、621、…、622及び同様の配線が交差することなく達成される。
上記においては、圧縮された命令を使用するVLIWプロセッサを説明した。このVLIWプロセッサは複数のイシュースロットを持つ命令イシューレジスタを有し、各イシュースロットは各命令部を記憶するものであり、全ての命令部は同一クロックサイクル内で実行を開始する。当該VLIWプロセッサは命令レジスタに記憶された各命令部を実行するための複数の機能ユニットを有している。又、当該VLIWプロセッサは伸張された命令を上記命令イシューレジスタへ供給する伸張ユニットを有し、該伸張ユニットは圧縮命令記憶媒体から圧縮された命令を受け取り、これら圧縮された命令を伸張する。前記圧縮された命令のうちの少なくとも1個は少なくとも1個の命令部を有し、各命令部は当該命令部に圧縮命令部長を割り当てる圧縮方策に従って圧縮される。圧縮された命令部の長さは複数の有限の長さから選択され、これら有限の長さは少なくとも2個の零でない長を含み、これら有限の長さの何れが選択されるかは当該命令部の少なくとも一つの特徴に依存する。
好ましくは、上記の命令部長さの組み合わせは{0、26、34、42}である。又、好ましくは上記少なくとも一つの特徴は下記のものの少なくとも一つである:
− 短縮されたオーピーコード;
− 保護されているか又は保護されていないか;
− 結果無し;
− 固定ビット数の即値パラメータ;及び
− 零項、単項又は2項の。
上記固定数は、好ましくは7又は32の何れかである。好ましくは、当該プロセッサは複数の上記のような命令を有し、これらのうち1つの命令は分岐目標であり、この一つの命令は圧縮されない。好ましくは、各命令内の各命令部フィールドは次のものの少なくとも一つを特定する副フィールドを含む:第1オペランドのレジスタファイルアドレス;第2オペランドのレジスタファイルアドレス;保護情報のレジスタファイルアドレス;結果のレジスタファイルアドレス;即値パラメータ;及びオーピーコード。好ましくは、各命令は複数の各フォーマットを特定するフォーマットフィールドを有し、ここで各フォーマットは後続の命令の各命令部のためのものである。好ましくは、上記の圧縮されたフォーマットは、何れかの命令により使用されるべきVLIWプロセッサのイシュースロットを特定するフォーマットフィールドを有する。
好ましくは、少なくとも一つのフィールドが当該命令部を特定する。当該命令部を特定するフィールドは、少なくとも1個のバイト位置合わせされた副フィールドを有する。好ましくは、少なくとも一つの命令部副フィールドは、前記フォーマットフィールドと同一のバイト内に位置する。このように、各命令はワード境界ではなく、バイト境界に位置合わせされ得る。好ましくは、フォーマットフィールドは、或る閾量を超えるイシュースロットが使用されるべきであることを特定し、且つ、更に上記フォーマットフィールドと同一のバイト内に位置する少なくとも一つの第1命令部副フィールド、命令部を特定する複数の副フィールド及び他の副フィールドとは別のバイト中に位置する少なくとも一つの第2命令部副フィールドを有する。
Claims (17)
- 圧縮された命令を使用するVLIWプロセッサであって、当該プロセッサが、
− 複雑のイシュースロットを有する命令イシューレジスタであって、各イシュースロットが各々の命令部を記憶するためのものであり、これら命令部の全てが同一のクロックサイクル内で実行を開始するような命令イシューレジスタと、
− 前記命令イシューレジスタに記憶された前記各命令部を実行するための複数の機能ユニットと、
− 伸張された命令を前記命令イシューレジスタに供給する伸張ユニットであって、当該伸張ユニットが圧縮命令記憶媒体から圧縮された命令を取り出すと共に該圧縮された命令を伸張し、前記圧縮された命令は各々が各圧縮命令部長さに圧縮されている少なくとも2個の命令部を含むような伸張ユニットと、
を有するようなVLIWプロセッサにおいて、
前記伸張ユニットは複数の有限長さから選択された各圧縮命令部長さで各々の命令部を伸張するように構成され、上記有限長さが少なくとも2個の非零長さを含んでいることを特徴とするVLIWプロセッサ。 - 請求項1に記載のプロセッサにおいて、前記伸張ユニットは前記圧縮命令記憶媒体からフォーマットフィールドを取り出すように構成され、該フォーマットフィールドは前記圧縮された命令の各命令部に対する各々の圧縮命令部長さを特定し、前記伸張ユニットが前記圧縮された命令の各命令部を上記フォーマットフィールドに従って伸張することを特徴とするVLIWプロセッサ。
- 請求項2に記載のプロセッサであって、前記フォーマットフィールドがN個の副フィールドを有し、Nがイシュースロットの数であり、各副フィールドが各イシュースロットに対する圧縮された命令部の長さを特定するようなプロセッサにおいて、
前記副フィールドの各々が少なくとも2ビットを含むことを特徴とするVLIWプロセッサ。 - 請求項2又は3に記載のプロセッサにおいて、前記伸張ユニットが、
− 前記圧縮命令記憶媒体から、先行する圧縮された命令を前記フォーマットフィールドと共に取り出し、
− 前記先行する圧縮された命令の伸張を開始し、次いで、
− 前記圧縮命令記憶媒体から前記圧縮された命令を取り出すと共に、該圧縮された命令の伸張を、前記圧縮命令記憶媒体から前記先行する圧縮された命令と一緒に取り出された前記フォーマットフィールドに従って開始する、
ように構成されていることを特徴とするVLIWプロセッサ。 - 請求項2、3又は4に記載のプロセッサにおいて、前記伸張ユニットはメモリアクセスユニット内へ前記圧縮命令記憶媒体から前記フォーマットフィールドを取り出し、該メモリアクセスユニットは少なくとも1個の命令部副フィールドも有し、前記伸張ユニットは前記伸張された命令の前記命令部の少なくとも1つにおける前記命令部副フィールドを合成することを特徴とするVLIWプロセッサ。
- 圧縮された命令を使用するVLIWプロセッサであって、当該プロセッサが、
− 複数のイシュースロットを有する命令イシューレジスタであって、各イシュースロットが各々の命令部を記憶するためのものであり、これら命令部の全てが同一のクロックサイクル内で実行を開始するような命令イシューレジスタと、
− 前記命令イシューレジスタに記憶された前記各命令部を実行するための複数の機能ユニットと、
− 伸張された命令を前記命令イシューレジスタに供給する伸張ユニットであって、当該伸張ユニットが圧縮命令記憶媒体から圧縮された命令の流れを取り出すと共にこれら圧縮された命令を伸張し、前記命令の流れが命令圧縮フォーマットを特定するフォーマットフィールドを含む第1の命令を有しているような伸張ユニットと、
を有するようなVLIWプロセッサにおいて、
前記命令の流れは前記第1の命令に続いて前記圧縮命令記憶媒体から取り出される第2の命令を有し、前記伸張ユニットは前記第1の命令の前記フォーマットフィールドに従って前記第2の命令を伸張するように構成されていることを特徴とするVLIWプロセッサ。 - VLIWプロセッサ上で実行するための圧縮されたコードを生成する方法であって、当該方法が、
− 複数の命令部を有する命令を入力し、
− 前記命令の各命令部を、対応する圧縮命令部長さを当該命令部に割当てるような各圧縮方策に従って圧縮する、
ような各過程を有する方法において、
前記圧縮命令部長さが複数の有限の長さから選択され、これら有限の長さは少なくとも2つの非零長さを含み、これら有限長さの何れが選択されるかが当該命令部の少なくとも1つの特徴に依存することを特徴とする圧縮されたコードを生成する方法。 - 前記命令を含む命令の流れに適用される請求項7に記載の方法において、当該方法が、各命令に関して当該命令が前記命令の流れにおける他の命令からの分岐の分岐目標であるか否かを判定し、分岐目標でない命令のみを圧縮するような過程を有することを特徴とする圧縮されたコードを生成する方法。
- 請求項7又は8に記載の方法において、当該方法が、フォーマットフィールドを生成し、当該フォーマットフィールドが前記命令の各命令部に対する各フォーマットを当該命令部のために選択された前記圧縮命令部長さに従って特定するような過程を有していることを特徴とする圧縮されたコードを生成する方法。
- 請求項9に記載の方法であって、前記フォーマットフィールドがN個の副フィールドを有し、Nはイシュースロットの数であり、各副フィールドが各イシュースロット用の圧縮命令部長さを特定するような方法において、前記副フィールドの各々が少なくとも2ビットを含むことを特徴とする圧縮されたコードを生成する方法。
- 請求項7、8、9又は10に記載の方法において、前記圧縮された命令部を含む圧縮された命令を、電子計算機により読み取ることのできる圧縮命令記憶媒体に記憶する過程を有していることを特徴とする圧縮コードを生成する方法。
- 請求項11に記載の方法において、当該命令の実行に先立って実行するための他の命令を圧縮し、当該命令用の前記フォーマットが前記他の命令と共に取り出すために記憶されることを特徴とする圧縮されたコードを生成する方法。
- 請求項11又は12に記載の方法において、前記圧縮命令記憶媒体はメモリアクセスユニットを有し、前記フォーマットフィールドは前記命令の少なくとも1個の命令部の少なくとも1個の命令部副フィールドと共に同一のメモリに記憶されることを特徴とする圧縮されたコードを生成する方法。
- VLIWプロセッサ上で実行するための圧縮されたコードを生成する方法であって、当該方法が、
− 各々が複数の命令部を有する命令の流れを入力し、
− 前記命令の各命令部を、対応する圧縮命令部長さを当該命令部に割当てるような各圧縮方策に従って圧縮し、
− 各命令に対してフォーマットフィールドを生成し、該フォーマットフィールドは当該命令の各命令部用の各フォーマットを当該命令部用に選択された前記圧縮命令部長さに従って特定し、
− 各々が対応する命令からの前記圧縮された命令部を含むような前記命令及び前記フォーマットフィールドを、電子計算機により読み取ることのできる圧縮命令記憶媒体に圧縮された形で記憶する、
ような各過程を有するような圧縮されたコードを生成する方法において、
前記命令の流れは当該流れからの第2の命令に先立って実行する第1の命令を有し、前記第2の命令に対応する前記フォーマットフィールドと前記第1の命令に対応する前記圧縮された命令は、前記第2の命令に対応する前記圧縮された命令の取り出しに先立ち、前記命令の流れの実行中に組み合わせて取り出されるように前記圧縮命令記憶媒体に記憶されることを特徴とする圧縮されたコードを生成する方法。 - 請求項14に記載の方法において、各命令に関して当該命令が前記命令の流れにおける他の命令からの分岐の分岐目標であるか否かを判定し、分岐目標でない命令のみを圧縮するような過程を有することを特徴とする圧縮されたコードを生成する方法。
- VLIWプロセッサ上で実行するための圧縮されたコードを生成する方法であって、当該方法が、
− 各々が複数の命令部を有する命令の流れを入力し、
− 前記命令の各命令部を、対応する圧縮命令部長さを当該命令部に割当てるような各圧縮方策に従って圧縮し、
− 各々が対応する命令からの前記圧縮された命令部を含むような前記命令を、電子計算機により読み取ることのできる圧縮命令記憶媒体に圧縮された形で記憶する、
ような各過程を有するような圧縮されたコードを生成する方法において、
当該方法は、各命令に関して当該命令が前記命令の流れにおける他の命令からの分岐の分岐目標であるか否かを判定し、分岐目標である各命令は圧縮されていない形で記憶し、分岐目標でない命令は圧縮された形で記憶するような過程を有することを特徴とする圧縮されたコードを生成する方法。 - 請求項7ないし16の何れか一項に記載の方法を実施するようにプログラムされた電子計算機。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/649,731 US5787302A (en) | 1996-05-15 | 1996-05-15 | Software for producing instructions in a compressed format for a VLIW processor |
US08/649,733 US5826054A (en) | 1996-05-15 | 1996-05-15 | Compressed Instruction format for use in a VLIW processor |
US08/649,731 | 1996-05-15 | ||
US08/648,359 US5852741A (en) | 1996-05-15 | 1996-05-15 | VLIW processor which processes compressed instruction format |
US08/648,359 | 1996-05-15 | ||
US08/649,733 | 1996-05-15 | ||
PCT/IB1997/000558 WO1997043710A2 (en) | 1996-05-15 | 1997-05-15 | Vliw processor which processes compressed instruction format |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11509664A JPH11509664A (ja) | 1999-08-24 |
JP3750821B2 true JP3750821B2 (ja) | 2006-03-01 |
Family
ID=27417811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP54069897A Expired - Fee Related JP3750821B2 (ja) | 1996-05-15 | 1997-05-15 | 圧縮された命令フォーマットを処理するvliwプロセッサ |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0843848B1 (ja) |
JP (1) | JP3750821B2 (ja) |
DE (1) | DE69728495T2 (ja) |
WO (1) | WO1997043710A2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8583895B2 (en) | 1996-05-15 | 2013-11-12 | Nytell Software LLC | Compressed instruction format for use in a VLIW processor |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
WO2002061574A1 (en) | 2001-01-30 | 2002-08-08 | Koninklijke Philips Electronics N.V. | Computer instruction with instruction fetch control bits |
ITMI20022003A1 (it) * | 2002-09-20 | 2004-03-21 | Atmel Corp | Apparecchio e metodo per la decompressione dinamica di programmi. |
WO2004097626A2 (en) * | 2003-04-28 | 2004-11-11 | Koninklijke Philips Electronics N.V. | Parallel processing system |
US7568070B2 (en) * | 2005-07-29 | 2009-07-28 | Qualcomm Incorporated | Instruction cache having fixed number of variable length instructions |
JP5206240B2 (ja) | 2008-08-29 | 2013-06-12 | 日本電気株式会社 | 情報処理装置および情報処理方法 |
KR101545701B1 (ko) | 2008-10-07 | 2015-08-19 | 삼성전자 주식회사 | 프로세서 및 그 명령어 번들 복원 방법 |
CN102741817B (zh) * | 2009-09-04 | 2015-12-16 | 英特尔公司 | 方法和装置和记录载体 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179680A (en) * | 1987-04-20 | 1993-01-12 | Digital Equipment Corporation | Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus |
DE69518403T2 (de) * | 1994-01-10 | 2001-03-29 | Dow Chemical Co | Ein massiv multiplexierter, superskalarer prozessor mit harvard-architektur |
-
1997
- 1997-05-15 WO PCT/IB1997/000558 patent/WO1997043710A2/en active IP Right Grant
- 1997-05-15 DE DE69728495T patent/DE69728495T2/de not_active Expired - Lifetime
- 1997-05-15 JP JP54069897A patent/JP3750821B2/ja not_active Expired - Fee Related
- 1997-05-15 EP EP97918307A patent/EP0843848B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69728495D1 (de) | 2004-05-13 |
EP0843848B1 (en) | 2004-04-07 |
DE69728495T2 (de) | 2005-02-24 |
JPH11509664A (ja) | 1999-08-24 |
WO1997043710A3 (en) | 1998-01-08 |
EP0843848A2 (en) | 1998-05-27 |
WO1997043710A2 (en) | 1997-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5787302A (en) | Software for producing instructions in a compressed format for a VLIW processor | |
US5826054A (en) | Compressed Instruction format for use in a VLIW processor | |
US8583895B2 (en) | Compressed instruction format for use in a VLIW processor | |
US6131152A (en) | Planar cache layout and instruction stream therefor | |
US5852741A (en) | VLIW processor which processes compressed instruction format | |
US10229089B2 (en) | Efficient hardware instructions for single instruction multiple data processors | |
JP3833269B2 (ja) | プロセッサのための命令圧縮、解凍のシステム及び方法 | |
US9792117B2 (en) | Loading values from a value vector into subregisters of a single instruction multiple data register | |
US9342314B2 (en) | Efficient hardware instructions for single instruction multiple data processors | |
EP3093758B1 (en) | Run length instruction for single instruction multiple data processors | |
JP2992223B2 (ja) | コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 | |
JP3750821B2 (ja) | 圧縮された命令フォーマットを処理するvliwプロセッサ | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
US11803382B2 (en) | Look-up table read | |
WO2017021675A1 (en) | Element size increasing instruction | |
US20030221089A1 (en) | Microprocessor data manipulation matrix module | |
US20230022537A1 (en) | Streaming engine with compressed encoding for loop circular buffer sizes | |
US5862398A (en) | Compiler generating swizzled instructions usable in a simplified cache layout | |
CN106610817B (zh) | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 | |
US20120260062A1 (en) | System and method for providing dynamic addressability of data elements in a register file with subword parallelism | |
JP3706633B2 (ja) | 命令キャッシュを備えたプロセッサ | |
GB2617829A (en) | Technique for handling data elements stored in an array storage | |
WO2023199014A1 (en) | Technique for handling data elements stored in an array storage | |
JPH11212804A (ja) | 仮想マシン及びプログラム変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050614 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050913 |
|
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: 20051101 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051201 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101216 Year of fee payment: 5 |
|
S303 | Written request for registration of pledge or change of pledge |
Free format text: JAPANESE INTERMEDIATE CODE: R316304 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101216 Year of fee payment: 5 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S303 | Written request for registration of pledge or change of pledge |
Free format text: JAPANESE INTERMEDIATE CODE: R316304 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101216 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131216 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131216 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131216 Year of fee payment: 8 |
|
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 |