JP2003521753A - 高データ密度のriscプロセッサ - Google Patents
高データ密度のriscプロセッサInfo
- Publication number
- JP2003521753A JP2003521753A JP2000582881A JP2000582881A JP2003521753A JP 2003521753 A JP2003521753 A JP 2003521753A JP 2000582881 A JP2000582881 A JP 2000582881A JP 2000582881 A JP2000582881 A JP 2000582881A JP 2003521753 A JP2003521753 A JP 2003521753A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- field
- registers
- contents
- 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
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
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Description
とのできる高性能で命令セットの数を減少させたコンピュータ(RISC)アー
キテクチャプロセッサに関する。
ット特徴はそれ自体は新しいものではない。しかしながら個々の特徴は技術の進
歩のために新しいユニークな方法で組合わせられることができる。特に、命令セ
ット設計が従来の命令セットとは異なった使用に対して最適となるように設計さ
れるとき、命令セットがターゲットアプリケーションにおいて使用されるように
プロセッサが構成されている場合に顕著な改善が得られる。
コードの大きさを含む多くの競合する目標をバランスさせるために必要であり、
それらには、新しいアルゴリズムおよびアプリケーションに対する命令セットの
拡大性および適用性、そのようなアルゴリズムにおいて命令セットを実行するプ
ロセッサの性能および消費電力、命令セットを実行するプロセッサのコスト、多
くのプロセッサを長い時間使用することに対する命令セットの安定性、命令セッ
トを実行するプロセッサの設計の複雑性、高レベルプログラム言語から編集する
ためのターゲットとしての命令セットの安定性等が含まれている。
接的な影響を有している。命令セットは直接IE,すなわち、所定のアルゴリズ
ムを実行するために必要な命令の数を決定する。なお、ここでは、編集のために
ターゲットとしての命令セットの安定性は良好であるとしている。プロセッサの
性能の他のコンポーネントはクロック期間CPと命令当たりの平均クロックCP
Iである。これらは命令セットの実行の主要な影響であるが、命令セット特徴は
クロック当たりの時間および命令目標当たりのクロックに同時に適合するために
実行者の能力に影響する。例えば、符号化の選択は残りの命令の実行により直列
に付加的な論理装置に命令してもよく、それはクロック当たりの時間を増加させ
ることにより実行者がアドレスし、或いは命令当たりのクロックを通常増加させ
る付加的なパイプライン段を追加することによって実行者がアドレスする。
ーキテクチャが開発された。それは上記の妥協の実現により得られたものであり
、すなわち、 T=IE*CPI*CP であり、ここで、Tは秒で表されるプログラム実行時間であり、他の変数は上述
したものである。RISC命令セットは実行者が著しくIEを増加させずにCP
IおよびCPを顕著に改善することを可能にする。RISC命令セットはプロセ
ッサの性能を改善し、設計の複雑性を低下させ、所定の性能レベルにおけるプロ
セッサ構成のコストを低下させ、高レベルプログラム言語からの編集に適してい
る。
について同意していないが、それは一般に次のような属性の多くのものを含んで
いる。すなわち、固定サイズの命令ワード;算術演算およびその他の計算動作は
16以上のレジスタを有する汎用レジスタファイルから読取られたオペランドに
ついて行われ、その結果は同じレジスタファイルに書込まれる;レジスタファイ
ルのアクセスが並列に行われるように、ソースレジスタに対して命令ワード中の
固定された位置にある;メモリアクセスは主としてメモリからレジスタへのロー
ドにより行われ、レジスタからメモリへ記憶される(計算命令におけるメモリオ
ペランドを有するのと反対);メモリアドレスを計算する小さい数の方法(通常
4以下であり、しばしば1である);命令のパイプライン実行を困難にする特徴
の回避(例えば所定の命令による2回以上のハードウエアリソースの使用);お
よびマイクロコードまたはその等価物を要求する特徴の回避等が含まれる。全て
のプロセッサが上記の要素の全てを含んでいるRISCであるとは考えられない
が、全てのプロセッサが上記の要素の多くのものを含んでいる。
成において特に効率的ではない。特に、RISC命令セットはアプリケーション
を符号化するために通常はプレRISC命令セットよりも多くのビットを必要と
する。アプリケーションに対するマシンコードの大きさは、全体のソリューショ
ンコストにおいてプロセッサそれ自身のコストよりもしばしば重要である。それ
はアプリケーションを保持するためにより大きいメモリが必要であるからである
。RISCは性能が最も重要である多くのアプリケーションにおいて依然として
許容されているが、RISCの利点を有しているが、減少されたコードサイズの
命令セットは多くの他のプロセッサアプリケーションにおいて有効である。
GE635 )のいくつかはRISCの特徴のいくつかのものを有している。それは
それらがRISCのようなマイクロコードなしでハードウエアにより直接実行さ
れるように設計されていたからである。これらの命令セットの大部分は最新の高
レベル言語およびアプリケーションにあまり適したものではない。その理由は、
ワード(バイトではなく)アドレス、限定されたアドレススペース、および演算
の特別の組合わせのような特徴のためである。実際に多くのものは言語プログラ
ムを組立てるために意図されたものである。いくつかのものは36ビットのデー
タワードおよび命令幅に基づいており、36ビット命令はコード密度に対しては
非常に良好であるとは言えない。いくつかのものは計算のための累算器およびメ
モリ例に基づいており、それは性能を制限する。本発明の個々の特徴のいくつか
はこれらのマシンの世代に続くものであるが、所望の特性のものは従来存在して
いない。
セットの適合を可能にする(IBM360 ,DEC PDP11,DEC VAX,
インテルx86,LLNL S-1,モトローラ68000 )。それ故、次の世代のプロセ
ッサは、複雑な可変命令長コード化による等のために良好なコード密度を有する
複雑な命令セットを有している。しかしながら、マイクロコードのプロセッサお
よび複雑な命令セットは高性能には良好に適合しないことが多い。複雑な命令は
、ハードウエアパイプラインにおける直接の実行の代りにマイクロエンジンの相
互作用により実行されるが、それはCPIを増加させる。種々の異なるスタイル
のこの世代に出現した命令セットは1個または2個の累算器から汎用レジスタア
ーキテクチャまたはスタックアーキテクチャのいずれかに変更される傾向がある
。レジスタまたはスタックの構成コストは十分に低く、命令セットはこれらの有
効なスタイルを使用することができる。
むしろ後退している。多くのRISC命令セットは固定長の32ビット命令に基
づいており、32ビットは必要以上のものである。またいくつかの種類の可変長
符号化が最良のコード密度を得るために必要である。スタックアーキテクチャは
コードサイズの点では有利であるが、性能が低いためにこの時点で除外される。
それは命令が性能とコードサイズの目標を共に達成することがいかに重要である
かを示している。
セットのコンパクトな符号化を導入した。ARMのTnumbおよびMIOS16はそ
の例である。両者は少数の32ビット命令を含むが、主として16ビットを使用
する。16ビット符号化(それは命令当たりのビット数を半分にすることによっ
て小さいコードを与える)は貧弱な性能を与える。その理由は8個のレジスタし
か有していないからであり(IEを増加)、編集されたソースレジスタオペラン
ドの使用(CPまたはCPIを増加)は命令ワード(IEを増加)の制限範囲を
限定し、行先レジスタオペランドの数(多くの場合2以下…IEを増加)を制限
する。
ーゲットにしている。それは16ビットの命令セットでスタートするが、後で必
要が認められたとき32ビット命令が追加される。16のレジスタを有するが命
令当たり大抵は2個のレジスタであり(IEを増加)、ブランチオフセットを厳
しく制限する。
ンコードを与える命令セット構成が必要とされている。過度に複雑化されること
なく、高性能の構成を実現するために、命令セットは簡単な短いパイプラインに
よってマイクロコードを使用しないで直接実行可能でなければならない。良好な
性能を得て編集を最適にするための適切なターゲットである十分な数の汎用レジ
スタがなければならない。さらにコードサイズを減少させるためにその他の技術
が使用されてもよい。
C命令セットの24ビット符号化を行うプロセッサを提供することである。 本発明の別の目的は、命令当たりのバスの平均数が限定された命令符号化を使
用したときプログラムを表すために必要な命令の静的な数を低い値に維持するた
めに相乗的に動作する命令を有する命令セットを実行するプロセッサを提供する
ことである。本発明は狭い命令ワードにおける命令定数の効率的な符号化を行う
ために技術的に有効である。
もっと長いターゲット特定素子を有する最も有用な比較および形態を使用するブ
ランチ命令を使用するRISC命令セットの符号化を行うプロセッサを提供する
ことである。 本発明のさらに別の目的は、プログラムを表すために必要な命令およびサイク
ルの静的な数およびプログラムを実行するために必要な命令の数を少くすること
のできる減少されたオーバーヘッドループ能力を有する汎用(DSPのような特
別の目的のものと対照的な)命令セットを実行するプロセッサを提供することで
ある。
SCプロセッサを提供することによって達成される。それ命令セットは、上記の
ような式T=IE*CPI*CPに対して調整されるために付加される次のよう
なコードサイズ式により構成される。 S=IS*BI ここで、Sはビットによるプログラムの大きさであり、 ISはプログラムを表すために必要な命令の静的な数(前のもののような実行
に必要な数ではない)であり、 BIは命令当たりのビットの平均数である。 RISCに比較して本発明はCPおよびCPIの増加を最小にしてBIおよび
ISを低下させる。それは同時にIEを増加および減少させることが特徴である
。
タを含むRISCの原理に基づいた固定長の高性能符号化において良好なコード
密度を提供しなければならないことの認識により構成されたものである。典型的
なコード密度を得るために、実施例では性能と妥協しない簡単な可変長符号化が
付加される。この実施形態はプロセッサ構成のコストを最適なものにする。
易に明らかになるであろう。 図1乃至4には、本発明の好ましい実施形態による命令セットを実施するのに
適したプロセッサが示されている。一般に、プロセッサは命令およびデータ用の
232バイト、すなわち4GBのバーチャルメモリと、32ビットのプログラムカ
ウンタIPCと、16個以上の32ビットの汎用レジスタと、シフトアドレスレ
ジスタSARと、32ビットのループ開始アドレスレジスタLBEGと、32ビ
ットのループ終了アドレスレジスタLENDと、および32ビットのループカウ
ントレジスタLCOUNTとを有しており、これら3つのレジスタは全て、以下
詳細に説明するようにオーバーヘッド減少ループ命令によって使用される。ルー
プ命令および好ましい実施形態によって実施される命令セットの残りのもののさ
らに詳細な説明は、以降“ISAマニュアル”と呼ばれるTensilica社
による“Xtensa(商標名)命令セットアーキテクチャ(ISA)参照マニ
ュアルRev.1.10”1999に記載されている。
わちIステージ100 と、命令デコードおよびレジスタアクセス、すなわちRステ
ージ200 と、実行およびアドレス計算、すなわちEステージ300 と、メモリアク
セス、すなわちMステージ400 と、およびライトバック、すなわちWステージ50
0 とを有している。Iステージ100 において、実行されるべき命令を検索するた
めにプログラムメモリがアクセスされる。Rステージ200 では、このようにフェ
ッチされた命令が復号され、それが使用するレジスタがあるならば、これがアク
セスされる。その後、Eステージ300 において、Rステージ200 で復号されたレ
ジスタの内容および定数が命令オペランドにしたがってプロセッサのALU332
によって処理される。Mステージ400 では、ロード(負荷)、記憶等の任意の必
要なメモリアクセスが行われる。最後にWステージ500 において、命令を実行し
た結果が命令オペランドによって命じられたとおりに汎用レジスタにライトバッ
クされる。
04 中に保持されているアドレスに基づいて命令キャッシュ102 から抽出される
。その後そのワードは、命令キャッシュRAM IC102 (以下に示す別のコン
ポーネントと一緒に、命令キャッシュ116 を形成する)から読出され、整列ユニ
ットALIGN108 により最後のフェッチレジスタ106 中に保持され、Rステー
ジ命令レジスタRINST202 に記憶された最後のワードと結合される。キャッ
シュミスは、主プログラムメモリからステージングレジスタIREFILL110
を通ってキャッシュRAM IC102 までメモリフェッチによって処理され、タ
グがそれにしたがって、レジスタIMISSA112 およびタグキャッシュRAM ITAG114 を使用して調節される。マルチプレクサ118 は、キャッシュRA
M IC102 の出力か、または主メモリから直接フェッチされた命令かのいずれ
かを選択し、選択されたデータを整列ユニット108 に出力し、この整列ユニット
108 がそれを、最後のフェッチレジスタ106 に記憶されている最後にフェッチさ
れたワードと連結し、必要ならばそのサブセットを選択して、命令長バリエーシ
ョンに対して調節する。タグ比較装置122 はキャッシュミスを検出し、その表示
をIステージコントローラ124 に与え、このIステージコントローラ124 はその
ステージの全動作を制御する。
いるが、Iステージプログラムカウンタ104 は実際はフェッチされるべき命令を
カウントするのではなく、ワードをカウントするために使用されることを認識し
なければならない。しかしながら、Rステージプログラムカウンタ204 のような
後続するプログラムカウンタは、好ましい実施形態では、実際の命令をカウント
する。また、当業者は、Iステージコントローラ124 に加えて、対応したRステ
ージコントローラ224 、Eステージコントローラ324 およびMステージコントロ
ーラ424 のそれぞれがその各ステージの全動作を制御することを容易に理解する
であろう。また、Rステージ状態レジスタ203 、Eステージ状態レジスタ303 、
Mステージ状態レジスタ403 およびWステージ状態レジスタ503 のそれぞれが、
その各パイプラインステージにおける命令に関する関連状態情報、たとえばデー
タが有効か否か等の情報を各コントローラに供給する。さらに、ステージコント
ローラからそれらの各マルチプレクサまで延びているマルチプレクサ選択ライン
、クロック信号、例外ベクトルアドレス等のある特徴は、説明を容易にするため
に省略されているが、しかしながら当業者は、それらの配置を容易に認識するで
あろう。
セクション126 内の加算器128 は、フェッチされるべき次のワードを指すように
現在のワードアドレスをインクレメントし、それをマルチプレクサ130 に供給し
、このマルチプレクサ130 がそれを命令プログラムカウンタ104 にフィードバッ
クする。ループ命令(以下さらに詳細に説明する)が実行されたとき、それは開
始ループアドレスをループ開始レジスタLBEG132 にロードし、その後マルチ
プレクサ130 が開始アドレスをプログラムカウンタ104 に供給する。ループ命令
で使用されたように、ループ終了レジスタ134 は、ループ状態の終了を検出して
ループ指標レジスタLOUNT138 をデクレメントするために比較装置136 によ
って現在のアドレスと比較される値を供給する。ループ外での実行を続けるため
に、比較装置140 は、カウントがゼロの場合に命令コントローラ124 に表示を与
える。そうでない場合には、ループ指標レジスタLOUNT138 はデクレメンタ
142 によってデクレメントされ、マルチプレクサ144 (レジスタをロードするた
めにも使用される)を通過させられる。最後に、RステージPC選択マルチプレ
クサ146 は、以下さらに詳細に説明するようにEステージ300 に供給されるべき
アドレス値を選択する。
され、予め定められたパラメータフィールドを抽出し、命令オプコードにしたが
って即値または定数フィールドを復号する。復号された命令は、実行のためにE
ステージ命令復号レジスタ302 にパイプラインされる。命令復号動作と並列に、
命令からのフィールドは、以下詳細に説明するように、ウインドウされるレジス
タ動作のために、それにウインドウベース値を加算するために加算器208 −212
を介してレジスタファイル206 に送られる。ある命令中に存在する可能性のある
2つのソースレジスタフィールドおよび1つの行先レジスタフィールドのそれぞ
れに対して1個の加算器が使用される。
に供給され、その後EステージSおよびTレジスタ304 および306 に供給される
。マルチプレクサ214 および216 はレジスタファイル206 から値を供給すること
ができる。すなわち、必要とされるデータがまだファイル206 中に書込まれてい
ない場合、以下に説明するように、それらはEステージから供給された値を使用
してもよい。マルチプレクサ214 はまた定数値を命令デコーダ204 から受取って
もよい。
Eステージブランチレジスタ308 に記憶する。加算器220 は、命令長に応じて2
または3をマルチプレクサ222 を介してRステージプログラムカウンタ201 内の
値に加算することにより次の命令アドレスを計算し、ブランチがとられない場合
に使用するためにその結果を次のPCレジスタ310 に送る。
の機能ユニット(ブランチユニット326 、シフト/マスクユニット330 、ALU
332 、AGEN334 および記憶整列ユニット336 )に対するオペランドを選択す
る。マルチプレクサ選択は、Eステージ300 、Mステージ400 およびWステージ
500 中の現在の命令に基づいて各レジスタ228 、230 および232 によってバイパ
スブロックEBYP314 によりRステージ200 において計算され、バイパスブロ
ックEBYP226 を通ってパイプラインされた。結果がRステージ200 から得ら
れたとき、各マルチプレクサ318 ,320 はETレジスタ312 またはESレジスタ
316 を選択する。マルチプレクサ318 および320 に対する別の入力は、Mステー
ジ400 およびWステージ500 からのものである。
ンドを使用して、条件付きブランチ採用/不採用決定を生成し、それはIステー
ジ100 およびRステージ200 中のコントローラ124 および224 にそれぞれ供給さ
れ、そこでマルチプレクサが選択をする。シフト/マスクユニット330 は、マル
チプレクサ328 の出力に基づいてシフトおよび抽出命令を実行する。それはマル
チプレクサ318 および320 から2つのオペランドをとるだけでなく、復号された
命令レジスタEINSTD302 からのマスク入力をとり、このEINSTD302
はまたMステージ命令レジスタMINSTD402 に供給する。シフト量はシフト
×定数に関してはEINSTD302 から選択され、あるいはシフト×可変量につ
いてはESAR322 から選択される。ESAR322 はEステージ300 に対するI
SA状態SARを含んでいる。
ORを含む演算および論理機能を実行する。シフト/マスクユニット330 および
ALU332 の出力は、マルチプレクサ338 中の命令タイプに基づいて多重化され
、MALUレジスタ406 に供給される。アドレス発生ユニットAGEN334 は、
レジスタオペランドとEINSTD302 中の復号された命令からのオフセットと
の和を計算する。その出力は、MステージバーチャルアドレスレジスタMVA40
8 に送られる。記憶整列ユニット336 は、ETマルチプレクサ318 の出力を0,
8,16または24の位置だけシフトして、記憶されたデータをメモリに適した
バイト位置に整列する。出力はMステージ記憶データレジスタMSD410 に送ら
れる。
と、そこで実行される命令の状態の更新とを処理する。Eステージ命令アドレス
プログラムカウンタEPC304 は、例外処理のためにMステージ命令アドレスプ
ログラムカウンタMPC404 にパイプラインされる。
てのステージに対する例外決定とを処理する。MPC404 の出力は、WPCレジ
スタ504 に送られる。Mステージ400 における命令が例外または割込みによって
無効にされた場合、WPC504 の出力はISA特定例外命令アドレスレジスタE
PC[i] (示されていない)(EステージプログラムカウンタEPC304 とは異
なる)の1つにロードされる。Mステージ400 中の命令が再試行されなければな
らない(たとえば、キャッシュミスために)場合、WPCレジスタ504 の内容は
命令フェッチを再スタートするためにIステージ100 に送り返される。
U506 に単に転送されるに過ぎない。MALU406 の出力はまた、このステージ
においてバイパスマルチプレクサ318 および320 に供給され、それによってシフ
トまたはALU命令の出力は、後続する命令がレジスタファイルに書込まれる前
にこれによって使用されることができるようになる。Wステージ500 におけるロ
ード命令は、データキャッシュRAMおよびデータタグRAMの両者を読出す。
Wステージ500 における記憶命令は、データタグRAMだけを読出す。データキ
ャッシュRAMの書込みは、タグ比較が完了するまで遅延される。非ロード命令
は、任意の未決定の記憶データをデータキャッシュRAMに書込む。同じアドレ
スへのロードが後続する記憶は、記憶データがデータキャッシュRAMに書込ま
れていないので、特殊バイパスを必要とする。
データタグRAMのアドレス入力に送り、およびマルチプレクサ422 を通って直
接マップされたデータキャッシュRAM DC434 のアドレス入力にも送る。D
C434 の読出しと並列に、アドレスが、STVI416 中の未決定の記憶バーチャ
ル指標および有効ビットと比較される。比較装置428 の出力に基づいて、読出し
が未決定の記憶のキャッシュ指標に対するものである場合、マルチプレクサ432
は未決定の記憶データバッファ418 の結果を選択する。そうしないと、DA読出
しデータが選択される。マルチプレクサ432 はロード整列回路436 に供給し、こ
の回路436 はバーチャルアドレスの下位の2つのビットに基づいてロードデータ
を0,8,18または24だけシフトし、その後L8UIおよびL16UI命令
に対してビット7または15からそれぞれゼロ拡張され、L16SI命令に対し
てビット位置15から符号拡張される。この結果はWLOAD508 によってラッ
チされる。データタグRAMの出力は、比較装置430 によってMVA408 からの
Mステージバーチャルアドレスの上位ビットと比較され、このヒット/ミス結果
は、キャッシュミスおよび例外を処理するMステージ制御論理MCTL424 に送
られる。最後に、ロードバーチャルアドレスがキャッシュミスを処理するために
WMA510 において捕獲される。
を無効にする。WMA510 からのロードアドレスは、外部メモリに送られる。そ
のメモリから読出されたデータは、WMA510 の下位ビットをアドレスとして使
用して、マルチプレクサ412 およびSTDATA418 を通ってデータキャッシュ
RAM424 中に書込まれる。データタグRAM426 はマルチプレクサ414 および
STADDR420 を通ってWMA510 において捕獲された上位桁のミスアドレス
から書込まれ、DTAG420 はMVA408 からの小さい桁のビットによってアド
レスされる。
DR418 およびSTDATA420 に入れる。さらに、データタグRAM426 がア
クセスされ、その結果がMVA408 の上位桁ビットと比較されて、記憶アドレス
がヒットかミスかが決定される。キャッシュにおいて記憶がヒットしたならば、
SDTDATA418 の内容が第1の非ロードサイクルにおいて、SDTDATA
418 に記憶されているアドレスにおいてデータキャッシュRAM424 中に書込ま
れる。キャッシュミスの補充が完了したとき、命令フェッチユニットは、ミスさ
れたロード命令から再びスタートするフェッチ命令を開始する。この実施形態の
データキャッシュはライトスルーされ、したがって記憶アドレスおよびデータも
またSTADDR420 およびSTDATA418 から書込みバッファ438 に送られ
、外部メモリに書込まれるまで、この書込みバッファ438 に保持される。
サ512 によって選択され、この時点で命令が依然として有効ならばRステージ20
0 におけるレジスタファイル206 中に書込まれ、それはAレジスタの結果を有す
る命令である。
フト量レジスタは、論理の左、論理の右および演算の右のような通常の即値シフ
トを行うために使用されるが、直接変数シフトはクリティカルタイミングパスで
ある可能性が高いため、シフト量がレジスタオペランドである場合には単一の命
令シフトを行わず、簡単なシフトは効率的に広い幅に広がらない。ファンネルシ
フトは広げられることができるが、それらには過大な数のオペランドが必要であ
る。本発明の好ましい実施形態によるプロセッサは、そのシフト量がSARレジ
スタからとられるファンネルシフトを与えることによってこれらの問題を解決す
る。変数シフトは、汎用レジスタ中のシフト量からSARを計算するための命令
を使用してコンパイラによって合成され、それに続いてファンネルシフトされる
。SARに対する値のリーガル範囲は0乃至31ではなく0乃至32であり、し
たがって6つのビットがそのレジスタに対して使用される。
らに詳細に示されている命令セットの説明が与えられたならば、本発明による他
の種々のプロセッサアーキテクチャは、当業者に容易に明らかになるであろう。
これらの構造もまた請求の範囲に記載された技術的範囲内に含まれるべきもので
ある。
ながら、命令セットのある特徴がある実施クラスに関していちばんよく実行する
。図5には、1つのこのようなタイプが一般的に示されている。このタイプのア
ーキテクチャは、浮動小数点ユニットおよびDSPのような主な計算ユニットに
より有効に使用されることができ、このパイプラインアーキテクチャの1つの顕
著な点は、このようなユニットがDキャッシュの後に(図5においてDReg/
DALUとラベル付けされた位置に)配置されることにより、このようなユニッ
トに対する命令がメモリ参照を1つのソースオペランドとして含むことが可能に
なることである。これによって、多数の命令セットをサイクルごとにフェッチお
よび実行する必要なしに、データキャッシュ参照および動作をサイクルごとに行
うことができるようになる。
を改善し(IEを低くすることにより)、符号サイズを改善する(ISを低くす
ることにより)。たとえば、“自動インクレメント”アドレスモード(ベースア
ドレスレジスタが読出し、その後インクレメントされたアドレスで再度書込まれ
る)には、ロード用の第2のレジスタファイル書込みポートが必要である。“指
標付き”アドレスモード(2つのレジスタの和がバーチャルアドレスを形成する
ために使用される)には、記憶用の3つのレジスタファイル読出しポートが必要
である。好ましい実施形態は、妥当な性能のために最小限必要な2個の読出しポ
ートと1個の書込みポートのレジスタファイルに合わせられている。
が、レジスタファイルポートの追加と同程度の増額が必要とされる特徴は回避さ
れる。これはとくに、構成されたものが多数の命令をサイクルごとに実行する場
合に重要である。それは、ポートの数がプロセッサの最大実行機能(たとえば、
2乃至8)により増倍されるためである。
ールドと1つの異なる行先レジスタフィールドとをサポートしなければならない
。さもないと、IEおよびISの両者が増加する。符号密度だけを最適化する汎
用レジスタ命令セットが、しばしば、1つがソースとしてのみ使用され、1つが
ソースおよび行先の両方として使用される2つのレジスタフィールドを中心に設
計される(たとえば、日立SH)。これによって符号サイズは、ISの増加がB
Iの減少だけオフセットされたときに減少するが、IE命令セットの増加を補償
する方法は存在しない。少数のレジスタを指定する命令セットは狭いレジスタフ
ィールドを使用し、したがって低いBIを使用するが、多くの可変的で一時的な
値をメモリ中において強制的に生かしておき、それ故付加的ロードおよび記憶命
令を要求することによってIEおよびISを増加させる。符号密度だけが優先度
である場合、ISの増加は正味の節約としてBIの減少分だけオフセットされる
が、良好な性能もまた要求された場合にはIEの増加を補償する方法はない。
は平らになる。命令セットは、少なくとも収穫逓減点に達するように、すなわち
レジスタカウントをさらに増加した結果としてIEおいて対応した著しい減少が
生じないように、十分なレジスタを提供しなければならない。とくにRISC性
能レベルに対して、少なくとも16個の汎用レジスタが必要である。また、3個
の4ビットレジスドタフィールドは、符号化するために少なくとも12ビットを
必要とする。操作コード(オプコード)および定数フィールドに対するビットも
また要求され、したがっていくつかのプロセッサによって使用されるような16
ビット符号化では不十分である。
とができていない1つの理由は、命令セットの設計者が16ビットまたは32ビ
ットのようなある命令サイズを強制されていると感じているためである。実際、
プロセッサのデータワード幅に対して簡単な比率の命令サイズを使用することに
は利点がある。しかしながら、制限を若干緩和することには大きな利点がある。
用する。24ビットは高性能に対して十分なだけでなく、命令に対して拡張性と
空間とを提供し、それがIEを減少させる。別の実施形態は、18−28ビット
の範囲の符号化を使用することができるが、24ビットより小さいものは拡張性
とブランチ範囲が制限されることになる。24ビット符号化は、ほとんどの32
ビットRISC命令セットからのBIおよびしたがって符号サイズにおける25
%の減少を代表的に示す。最後に、24ビットは32のデータパス幅を有するプ
ロセッサにおいて非常に簡単に適応する。
な性能のために要求される最小のものであり、また24ビット命令ワード内に満
足できるように適合する最大のものである。多くのRISC命令セットは、32
個のレジスタ(5ビットレジスタフィールド)を使用している。3つの5ビット
レジスタフィールドの後、24ビット命令は操作コードおよび定数フィールドの
ために9ビットだけを残す。短い定数フィールドの結果、ブランチ、呼出しおよ
び他のPC関連参照の範囲が不十分となる可能性が高い。操作コードに対するビ
ットが少な過ぎると、拡張性が不十分なものになる。これら2つの理由から、5
ビットレジスタフィールドを有する24ビット命令ワードは望ましくない。16
個と32個の汎用レジスタ間の性能差(IEの差による)(約6%)は、8個と
16個の汎用レジスタ間の差ほど大きくなく、失われた性能(たとえば、以下に
認められるように複合命令およびレジスタウインドウ)を生成するために別の特
徴が導入されることができるほど十分に小さい。ISの増加(これもまた6%)
は、24ビットと32ビットの符号化間の差によるオフセット以上のものである
。
32個の汎用レジスタを提供しないことも認識すべきである。ゼロを保持するた
めに多くのレジスタが専有されるが、ゼロレジスタは、少数の特別命令操作コー
ドを与えることによって容易に必要のないものにすることができる。別のレジス
タが特定の用途に使用されることも多いが、これも命令セットの中に別の特徴を
含むことによって回避できる。たとえば、MIPSはその31個の汎用レジスタ
のうち2個を例外処理コードに対して、1個をグローバル区域ポインタに対して
使用する。したがって、それは実際には可変的および一時的なものに対して28
個のレジスタしか有しておらず、これは4ビットレジスタフィールドと適切な命
令セット特徴とを備えた命令セットより12個多いだけである。ソフトウェア規
定によって汎用レジスタを呼出す側および呼出される側のセーブされたレジスタ
に分割することは一般的であり、また、大きいレジスタファイルのユーティリテ
ィをさらに減少する。好ましい実施形態は、以下さらに詳細に説明するようにこ
れを回避する特徴を含んでいる。
て一般に見出される多数の命令の機能とその他の命令セットを組合せる単一の命
令を使用する。簡単な複合命令の一例は、左シフトおよび加算/減算である。H
P PA−RISCおよびDECアルファは、これらの動作を実行させる命令セ
ットの例である。小さい定数によるアドレス演算および乗算はしばしばこれらの
組合せを使用し、これらの動作を実行することによりCPの潜在的なコストの増
加(計算パイプラインステージにおいて一連の論理装置が追加されるので)を犠
牲にしてIEおよびISを減少させる。しかしながら、シフトが0乃至3に制限
されたとき、追加の論理手段はCPに関して最もクリティカルな制約ではないこ
とが種々の構成において立証されている。逆にいえば、ARM命令セットは任意
のシフトおよび加算を実行し、その実施においてCPは非常に低いものである。
れる。符号なしのフィールドを抽出するために、一般に2つの命令(右シフトに
よって後続される左シフト、または定数とのANDによって後続される右シフト
のいずれか)が使用される。好ましい実施形態では、この機能を行うために単一
の複合命令extuiが実行される。それは、命令ワードにおいて丁度4ビット
の符号化を指定されたマスクを有するANDによって後続されるシフトとして実
行される。複合命令extuiのAND部分は非常に論理的であるため、命令セ
ットにそれが含まれることによってその構成のCPは増加する可能性は少ない。
これは、符号付きのフィールドを抽出する命令に対して該当せず、したがってこ
れは含まれない。
PDP11,DEC VAX,インテルx86,モトローラ68000,サンS
PARC,モトローラ88000)は条件コードを設定する比較命令を使用し、
この条件コードは、制御の流れを決定するために条件コードを試験する条件付き
ブランチ命令によって後続される。条件付きブランチは大部分のRISC命令セ
ットの10−20%の命令を構成し、また各条件付きブランチは通常比較命令と
対にされており、したがってこのスタイルの命令セットは無駄である。さらに古
い命令セットはしばしば比較およびスキップスタイルの条件に基づいていたが、
これには分離した比較およびブランチと同じ欠点があった。
ァ,HP PA−RISCおよびSunSPARCの後におけるV9バージョン
)は、フレキシビリティを変化させる複合比較およびブランチ機能を提供してい
る。CrayおよびDECアルファは、レジスタとゼロの比較とブランチだけを
行う。MIPSはレジスタ・ゼロ比較とレジスタ・レジスタ同等および非同等な
らびにブランチを行う。HP PA−RISCは、非常に完全なセットのレジス
タ・レジスタ比較およびブランチ命令を提供する。
的確なセットの選択には、とくに24ビット(32ビットとは対照的に)符号化
が目標である場合、それが消費する操作コード空間により各比較およびブランチ
のユーティリティのバランスをとることが要求される。その他の命令セットはこ
のテストに失敗する。たとえば、HP PA−RISCは、ほとんど効用のない
いくつかの複合比較およびブランチ命令コード(たとえば、加算の後のネバーお
よびオーバーフロー)を提供し、有効ないくつかを削除する。
は、 A==0,A!= 0,A<S0,A>= S0, A==B,A!= B,A<SB,A<UB,A>= SB,A>= UB, (A&B)==0,(A&B)!= 0,(〜A&B)==0,(〜A&B)!= 0,
A==I,A!= I,A<SI,A<UI,A>= SI,A>= UI, AのビットB==0,A!のビットB= 0, AのビットI==0,A!のビットI= 0 ここで、AおよびBはレジスタの内容を示し、レジスタの関連演算子上の接尾
部“U”および“S”は、符号なしの、または符号付きのレジスタ内容との“符
号なし”または“符号付き”の各比較を示す。ゼロとの関連演算子上の接尾部(
たとえば、A<S0)はゼロに対する符号なしの、または符号付きの比較を示し
、Iは指標定数を示す。
して、また、MIPSおよびDECアルファのような部分的比較およびブランチ
命令セットと比較した場合でも、IEおよびISを減少させる。好ましい実施形
態は、複合比較およびブランチを実施するためにCPIの増加を要求する可能性
があるが、全体的な性能効果は依然として改善されたものである。
ペランドおよびブランチ目標を指定するのに2つの命令ワードが利用可能であり
、このためにそれぞれに対する豊富なフィールド幅割当てが可能になることであ
る。これと対照的に、複合比較およびブランチ命令セットは、これら全てを単一
の命令ワードにパックしなければならず、その結果フィールドが少なくなり、適
合しない値を処理するメカニズム(たとえば、広い範囲を有するブランチ)に対
する必要性も小さくなる。好ましい実施形態は、比較操作コード、2つのソース
レジスタフィールドおよび24ビット命令ワードへの8ビットPC相対オフセッ
トをパックする。8ビットターゲット特定子は場合によって不十分であり、広い
範囲を有する無条件ブランチに基づいて逆の性質の条件付きブランチを使用する
ためにコンパイラまたはアセンブラが必要になり、これを好ましい実施形態が提
供する。この状態は当然IEおよびISを増加させ、これは望ましくない。この
ために、好ましい実施形態はまた、最も一般的な場合であるゼロに対する試験を
行う一連の複合比較およびブランチを提供する。これらの複合比較およびブラン
チ命令は、それらの同僚(colleagues)よりはるかに広い範囲を提供する12ビッ
トのPC相対オフセットを有している。両形式を提供した余分な複雑さはIEお
よびISの改善によって釣り合わせられる。好ましい実施形態は、MIPSおよ
びDECアルファとは異なり、ゼロに対する全ての比較を提供するわけではなく
(ゼロ以下およびゼロより大きいレジスタを省略する)、再び、好ましい実施形
態はプログラムニーズを操作コード空間と釣り合わせる命令のセットを提供する
。
、命令ワードにおける定数フィールドのサイズが限定される。これは、ISおよ
びIEを潜在的に増加させる可能性が高い(もっとも、IEの増加はその定数を
ループの外側のレジスタにロードすることによって減少させることができるが)
。好ましい実施形態はこの問題をいくつかの方法で解決する。第1に、それは最
も共通する定数を捕獲するために小さい定数フィールドを提供する。狭い(たと
えば、4ビット)定数フィールドを最大限に使用するために、命令セットは定数
値を直接指定するのではなく、それを符号化するためにフィールドを使用する。
符号化された値は、広範囲のプログラム統計群からN(たとえば、16)の最大
頻度定数として選択される。好ましい実施形態は、16の値が0乃至15ではな
く−1および1乃至15であるように選択されるaddi.n命令でこの技術を
使用する。0の加算は全く効用がなく(分離したmov.n命令が存在する)、
−1加算は共通である。beqi、bnei、blti、bgei命令はまた、
種々の共通定数を符号化する4ビットフィールドを使用する。bltuiおよび
bgeui命令は、符号のない比較が異なったセットの使用値を有しているため
、異なった符号化を使用する。
んどを捕獲する。しかしながら、ビット様式の論理動作(たとえば、AND、O
R、XOR等)で使用される定数は種々の種類のビットマスクを表し、小さい定
数ティールドでは適合しないことが多い。たとえば、単一ビットが任意の位置に
おいて1に設定されているか、あるいは単一ビットが任意の位置においてゼロに
設定されている定数は普通である。1のシーケンスが後続する0のシーケンス、
および0のシーケンスが後続する1のシーケンスからなるビットパターンもまた
は普通である。この理由から、好ましい実施形態はマスクを命令ワード中に直接
入れる必要を避けるための命令を有している。好ましい実施形態における例はb
beiおよびbbsi命令であり、それらはそれぞれ、レジスタの指定されたビ
ットが0か1かに応じてブランチする。そのビットはマスクではなくビット番号
として与えられる。extui命令(上述された)はシフトを行い、このシフト
は、一連の1により後続される一連の0から成るマスクによって後続され、ここ
で1の数はこの命令における定数フィールドである。
ード中にパックするために、上記にリストされた命令は利用可能な命令ワードの
かなりの部分を消費する。これは、これらのブランチの頻度とその結果達成され
る節約のために、これらのブランチのためになる妥協である。
しいデータタイプの追加を可能にし)なければならず、緊密に結合されたコプロ
セッサ(共同するプロセッサ)において特徴が活用されなければならない。しか
しながら、短い命令には、浮動小数点、DSPのような他のデータタイプに対す
る複合比較およびブランチ命令を追加するための空間はない。さらに、各コプロ
セッサがそれ自身の複合比較およびブランチを実施することはできない可能性が
ある。個々の複合比較およびブランチ命令の実施が可能な場合でも、それは無駄
かもしれない。それは、このようなデータタイプに関する比較およびブランチは
また多くのアプリケーションにおいて整数データより頻度が少ないからである。
チに対して異なった方法を使用する。好ましい実施形態において、命令セットは
、任意のコプロセッサパッケージに予め必要なものであるオプショナルパッケー
ジを含んでいる。このパッケージは、16個の単一ビットブールレジスタと、こ
れらのブールレジスタおよびそれに応じたブランチを試験するBF(偽ならばブ
ランチ)およびBT(真ならばブランチ)命令とを追加する。その後、コプロセ
ッサは、たとえばそれらのサポートされているデータタイプの比較に基づいてブ
ールレジスタを設定する命令を出す。ブールレジスタならびにBFおよびBT命
令は、全てのコプロセッサによって共有され、それによって短い命令ワードが効
率的に利用される。
ース比較およびブランチの新しい変形である。初期の命令セットは、プロセッサ
と、そのコプロセッサ(たとえば、PowerPC)と、使用される多数のコプ
ロセッサごとの単一ビット条件コード(たとえば、MIPS)との間における多
数の共有多ビット条件コードを有している。本発明の好ましい実施形態では、多
数の共有単一ビット条件コードが使用される。
PS、PowerPC)を設けることにより、コンパイラがコードをさらに自由
にスケジュールすることが可能になり、単一の命令中の多数のデータ値を比較し
て多数の結果(たとえば、MIPS MDMX)を生成する命令が可能になる。
はこれをプロセッサとそのコプロセッサとの間で共有する(PowerPCのよ
うに)ことによって、比較結果を試験するために必要とされる操作コードの数が
節約される。またこれによって、比較結果レジスタ上の論理動作を実行する命令
を提供する可能性もまた増加する(本発明の好ましい実施形態およびPower
PCのように)。
ビット(他のほとんどのISA)の代わりに使用することにより、要求される比
較操作コードの数は増加するが、必要とされるブランチ操作コードの数は減少す
る。ブランチ命令はまたPC相対ターゲットアドレスを提供しなければならない
ため、好ましい実施形態では単一ビット比較結果(ブール)レジスタが使用され
、したがって非常に多数のコプロセッサが存在していなければ、ブランチ命令コ
ードの追加はさらに高価なものとなる。
な技術であるが、BIを小さい状態に維持しておくことが必要なことから、異な
る頻度および要求されるコプロセッサ操作コードの異なる数のために分割方法が
コプロセッサ比較およびブランチに適切であることが分かっている。比較および
ブランチ選択肢の範囲内において、コプロセッサ間で共有される多数の単一ビッ
ト比較結果レジスタを使用することにより、命令コード空間は最も効率的に利用
される。
に加算される8ビット定数オフセットを有する命令フォーマットを使用する。最
初に、好ましい実施形態はこれら8ビットの大部分を形成し、次にこれが不十分
な場合に簡単な拡張方法を適用する。また、好ましい実施形態の4つのロード/
記憶オフセットは符号付き拡張(他の多くの命令セットにおいて共通の)ではな
くゼロ拡張される。これは、値128乃至255のほうが値−128乃至−1よ
り普通であるためである。また、ほとんどの参照は整列されたベースレジスタか
らの整列されたアドレスに対するものであるため、オフセットは参照サイズに対
して適切に左シフトされる。32ビットのロードおよび記憶に対するオフセット
は2だけシフトされ、16ビットのロードおよび記憶に対するオフセットは1だ
けシフトされ、8ビットのロードおよび記憶に対するオフセットはシフトされな
い。大部分のロードおよび記憶は32ビットなので、この技術では2の付加的な
ビット範囲が与えられる。
オフセットが不十分である場合、好ましい実施形態では、8だけ左シフトされた
その8ビット定数を加算するaddmi命令が与えられる。したがって、2命令
シーケンスは、addmiからの8およびロード/記憶/addiからの8から
なる16のビット範囲を有する。さらに、上述の方法の1つによって符号化され
ない定数は、分離した命令によりレジスタ中にロードされなければならない(こ
の技術は、2つではなく単一のレジスタオペランドしかとらないために上記のa
ddmiソリューションを必要とするロード/記憶命令には適用できない)。好
ましい実施形態は、定数をレジスタにロードするための2つの方法を提供する。
第1の方法は、このためのmovi(および以下に説明される短い命令フォーマ
ットにおけるmovi.n)命令である。moviは命令ワード中の12ビット
符号付き拡張された対のフィールド中の定数を指定する。また、定数値をレジス
タ変数に割当てることはそれ自体は普通のことである。
化できる命令は1つもなく、したがって他のいくつかの方法がレジスタを任意の
定数値に設定するために必要とされる。少なくとも2つの方法が別の命令セット
において使用されており、これらの方法のどちらもソリューションを提供するた
めに上記の技術と共に使用されてよい。第1のソリューションは、各命令の中の
多数の定数を使用して32ビットの定数を一緒に合成する命令の対を提供するこ
とである(たとえば、MIPS LUI/ADDI,DECアルファ,IBM
PowerPCは2つの個別の命令における上位の16ビットと下位の16ビッ
トとを指定する命令を有している)。第2のソリューション(たとえば、MIP
S浮動小数点定数、MIPS16およびARM Thumb)は、ロード命令に
よりメモリから定数を読出す簡単な方法を提供することである。
ド命令を使用することによって、命令のシーケンスを使用した場合より低いIS
およびIEが提供されることができる。たとえば、MIPSコンパイラは、(と
くに)4バイトおよび8バイト浮動小数点定数が保存されている定数プールにポ
インタを保持するために31の汎用レジスタの1つを専有する。このレジスタに
よってアドレスされた区域が64KBより小さい場合、その定数は単一ロード命
令によって参照されることができる。これは、MIPSがロードにおいて64K
Bのオフセット範囲を有しているためである。一度参照された定数に対して、3
2ビットのロード命令プラス32ビット定数の合計サイズは、命令ワードを使用
した2者と同じである。定数が2回以上参照された場合、定数プールはもっと小
さい合計サイズを提供する。24ビットの命令対に対する48ビットに対して定
数プールプラスロードが56ビットである好ましい実施形態の24ビットサイズ
のような他の命令長に対して、妥協は異なる。しかしながら、定数が多数回使用
された場合、定数プールはほとんど常にさらに有効な合計サイズソリューション
である。
技術は、上述したようにより狭い命令ワードが一般に32個より少ないレジスタ
を提供し、したがって各レジスタはより高い価値を有するために、本発明の好ま
しい実施形態およびその他の実施形態にとって望ましくない。また、狭い命令セ
ット中のレジスタから利用可能なオフセットは制限され、したがって単一のレジ
スタは小さい定数プール(小さ過ぎて実用的でない)へのアクセスしか行わない
。好ましい実施形態(ISAマニュアル中のL32R参照)は、定数プールにア
クセスするために使用されることのできるPC相対ロードを提供する際に、多数
の命令セット(たとえば、PDP11,モトローラ68000,MIPS16,
ARM Thumb)のソリューションを採用する。
実施形態は、第2の技術を使用しているが、一方、別の実施形態は、完全な定数
の一部分をそれぞれ含んでいる複数の命令を使用する。24ビット命令ワードに
対する別の実施形態の具体的な例は、16ビット命令定数をレジスタの上位部分
に入力する1つの命令(16ビットの定数+4ビットのレジスタ行先+4ビット
の命令コード=24ビット)と、16ビットの符号付き定数をレジスタに加算す
る別の命令(16ビットの定数+4ビットのレジスタソースおよび行先+4ビッ
トの命令コード=24ビット)とを有するものである。
て見出されるが、RISCプロセッサ中では見出されないループ特徴を提供する
。ほとんどのRISCプロセッサはそれらの既存の条件付きブランチ命令を使用
して、新しい特徴を提供することによりループを実施するのではなくループを生
成する。この効率的使用によって、プロセッサは簡単なままに維持されるが、I
EおよびISが増加する。たとえば、Cループ for(i=0;i<n;i+=1){ body } は、好ましい実施形態において、 movi.n a3,0 //initialize i blti a2,1,done //no iteration if n<=0 loop: body addi.n a3,a3,1 //i+=1 blt a3,a2,loop //continue if i<n としてコンパイルされる。あらゆる反復には2つの“ループオーバーヘッド”の
命令である、加算および条件付きブランチが存在する。(好ましい実施形態の比
較およびブランチ特徴がない場合には、3つのオーバーヘッドの命令が必要にな
る。)これは明らかにIEを増加させる。さらに、いくつかのプロセッサ構成に
おける選ばれた条件付きブランチは、パイプライン化および、またはブランチ予
測のために、実行すべきサイクルを別の命令より多く要求する可能性がある。し
たがって、CPIが増加する可能性がある。いくつかの命令セットは、レジスタ
をインクレメントまたはデクレメントし、比較し、ブランチするための単一の命
令(たとえば、DEC PDP6,DEC PDP11,IBM PowerP
C)を追加し、この場合はIEを低下させる。(IBM PowerPC命令の
実施はまたCPIの低下を目標とする。) ループ本体が小さいとき、ループオーバーヘッドの性能インパクトはさらに高
い。多数のコンパイラは、1以上の反復にわたってループオーバーヘッドを拡散
するためにこの場合ではループアンローリングと呼ばれる最適化を使用する。C
では前述のループは例えば以下のように変換される。 i=0; if(n>0){ if((i&1)!=0){ body i+=1; if(n==1)goto done; } do { body i+=1: body i+=1; }while (i<n); done:; { 幾つかのケースでは、 body i+=1; body i+=1; これは以下に置換されてもよい。 body(i) body(i+1) i+=2; i+定数が本体の命令中に(例えばロードと記憶命令のオフセットに)折畳まれ
ることができ、それによってただ1つのインクエメントだけが反復毎に必要とさ
れる。
、4および8が普通である(幾つかの利点を有する2の累乗)。係数2のアンロ
ールについて留意することは、結果として生じるコードサイズの増加である(本
体は前述の例では3回生じる)。性能を実現するためのRISCプロセッサにお
けるこの技術の使用はコードサイズにわたる性能および単純化の強調と一貫して
いる。
方法を与える。第1の方法は固定回数だけ第2の命令を反復する命令を与えるこ
とである(例えばTI TMS320C2X. Intel x86 )。これは実行が非常に簡単である
利点を有する。これが適用可能な場合、ループオーバーヘッドを除去し、反復し
て同じ命令をフェッチする要件を除くことによりパワー消費を節約する。反復命
令を有する幾つかの命令セットはプロセッサがループ中に中断を行わないことを
必要とし、これは重要な制限である。また、1つの命令ループは限定された状態
でのみ便利であり、反復された命令が多数の効果を有するのに十分複雑であると
きだけ有効であり、それによって各反復において異なるデータで動作する。
ドで多数回命令のブロックを反復する能力である(例えばTI TMS320C5X)。好ま
しい実施形態はそのループ、即ちloopgtz およびloopnez 命令によりこの能力を
与える。前述の第1のCループは以下の命令へ編集される。 movi.n a3,0 //i=0 loopgtz a2,done //goto done if a2 <=0, otherwise //set LCOUNT to a2-1, LBEG to loop, //and LEND to DONE, and the fall //into body loop: body addi.n a3,a3,1 //i+=1 //the processor returns automatically //to loop when it reaches here (LEND) done: 好ましい実施形態のループ命令の詳細はISAマニュアルで見られることがで
きる。LCOUNT、LBEGおよびLENDレジスタは命令セットで利用され
、それによってループは中断可能である。これはまたこれらのレジスタが他の命
令時実行と並列に読取られ、書込まれることを可能にする(汎用レジスタが使用
されるならば、レジスタファイルの読取り/書込みポートは増加される必要があ
る)。好ましい実施形態はLCOUNTレジスタが命令のフェッチを行うために
最大時間を与えるようにテストされた後、直ちにデクリメントされることを特定
する。ループ命令は、好ましい実施形態によってループの条件的ブランチコンパ
イルに関連するブランチペナルティを取ることを防止できることを期待されてい
る。
述したように特に強度減少の最適化後に、多数のループは異なる量だけ帰納変数
のインクレメントまたはデクレメントを必要とするので、これは別々の命令のま
まにされる。さらに、幾つかのケースではこれらのインクレメントは自動インク
レメントのようなコプロセッサアドレスモードへ折り畳まれることができる。最
終的に、汎用レジスタをインクレメントするために、汎用レジスタファイルに特
別のポートが必要とされる。
を減少し、CPIを減少する構成を容易にする。ループ命令がループアンローリ
ングを行う必要性をなくしたとき、ISにおけるインパクトは最大であるが、ア
ンロールのケースでさえも存在する。しかしながら、当業者により容易に明白で
あるように、好ましい実施形態ではこれらの命令が存在することにより付加的な
プロセッサ構成コスト(例えば特別なレジスタ、特別な命令フェッチ論理装置)
が必要とされる。
ラインの使用はしばしばハードウェアまたはソフトウェアで避けなければならな
い命令実行中のハザードを発生する。例えば多数のパイプラインはパイプライン
の端部において(または少なくとも後期に)レジスタファイルを書込む。正確な
動作においては、ソースオペランドとして書込まれるレジスタを使用する次の命
令は、値が書込まれるまでまたは書込まれる値がバイパスされなければならない
か或いは依存命令へ転送されなければならなくなるまでレジスタファイルの読取
りを待機しなければならず、レジスタファイル内容は無視される。
遅延依存命令に対してハードウェアの依存検出を行い、その後、これがレジスタ
ファイルに書込まれる前に依存動作をバイパスする。(通常はNOPの挿入によ
る)ソフトウェアの命令の遅延は(ISの増加により)コードサイズを著しく増
加し、バイパスしないことは非常に性能を減少する。したがって検出、機能停止
、バイパスハードウェアはその価格に値する。
なレジスタはしばしばそれ程参照されないので、妥協点は異なる。幾つかの命令
セット(例えばMIPS)はそれ故、(例えば書込みを使用とは別にするために
NOPを挿入することによって)特別なレジスタハザードのソフトウェア管理に
切換える。これは残念ながら、命令ストリーム中に組立てられるパイプラインの
知識を必要とする。
なレジスタ書込みを有することである。これは簡単で問題を解決するが、(例え
ば内容スイッチ後の状態を回復するか妨害するため)特別なレジスタの書込みが
しばしばグループで行われ、多くは他の特別なレジスタの書込みとそれらに基づ
く命令を遅延する理由はないので非効率的である。本発明の好ましい実施形態は
ハイブリッド方法を採用する。これは検出されずハードウェアにより防止された
ハザードを防止するためにソフトウェアが挿入しなければならないISYNC、
RSYNC、ESYNC、DSYNC命令(詳細はISAマニュアル参照)を与
える。NOPとは異なって、これらの命令は全ての特別なレジスタの書込みが完
了するまで機能停止する。これは1つの構成依存型命令が実現されることを可能
にし、そうでなければ、潜在的に多数の特定構造向けNOPを必要とする。また
、プログラマーが性能を最大にするために機能停止せずに、特別なレジスタ書込
みを共にグループ化することを可能にする。
好ましい命令のコアセットと、所定の構成に存在しても存在しなくてもよいオプ
ショナル命令パッケージのセットとからなる。1つのこのようなパッケージはB
I、すなわち命令当りの平均ビットを減少することにより顕著なコードサイズの
減少を行う短い命令フォーマットである。これらの短いフォーマット命令が存在
するとき、好ましい実施形態は固定長(24ビット)命令セットから2つの命令
サイズ(24ビットおよび16ビット)を有する長さへ変化する。代わりの実施
形態は命令サイズの異なるセットを取出す。例えば24/16符号化への類似の
コード密度による1つの別の方法は24/12であり、ここでは短い形態におい
て3つの代わりに2つのレジスタフィールドが存在する。
だけに使用され、これらの命令には新しい機能は存在しない。16ビットで符号
化されることができる命令セットは適合する(または例えば一定のフィールド幅
の減少によって適合するように変更されることができる)最も統計的に頻度の高
い命令として選択される。ほとんどの命令セットにおける最も頻度の高い命令は
ロード、記憶、ブランチ、付加、移動であり、これらは丁度好ましい実施形態の
16ビット符号化に存在する命令である。BIを減少するための全体的に短いフ
ォーマットの使用はMotorola 68000、Intel x86 、DEC VAX のような可変長命令
セットと対称的であり、それらでは各命令は主にオペランドの数、オペランドの
種類に依存し、使用の静的頻度に依存しない符号化を有する。
s Tricoreであり、これは32ビットの主要なフォーマットと、BIを減少する
ための16ビットの短いフォーマットを有する。本発明と異なって、主要なフォ
ーマットは長過ぎるため例示的なBIを実現することができず、短い形態は、ソ
ースおよび行先レジスタのうちの一方を同一にさせ、またはソースまたは行先レ
ジスタの一方を操作コードにより示唆させる2つのレジスタフィールドだけを与
えるので、それ程機能的ではない。前述したように、示唆されたソースレジスタ
の使用は構造のCPまたはCPIの一方を増加させる傾向がある。
した。最も頻度の高い命令の16ビットの符号化はこの落とし穴(pitfall )を
避ける。最も頻度の高い命令だけが短い符号化を必要とするので、3つのレジス
タフィールドが有効であり、狭い一定のフィールドは大きな使用部分を捕捉でき
る。アプリケーションを表すために必要なほぼ半分の命令は、3つの4ビットフ
ィールドがレジスタ特定子または定数のために保留された後、16ビット符号化
に有効な16個の操作コードの丁度6で符号化されることができる。
ニュアルの表26で見られることができ、そこで示されているように、オプショナ
ル命令セットは132i.n命令(ロード32ビット、4セットオフセット)と、s32i
.n(32ビット保存、4ビットオフセット)と、mov.n (一方のレジスタの内容
を別のレジスタへ移動)と、add.n (2つのレジスタの内容を付加)と、addi.n
(レジスタと即値を付加、ここでは即値は−1または1…15の範囲である)と
、movi.n(レジスタを即値でロード、ここでは即値は−32…95の範囲である
)と、nop.n (動作ではない)と、break.n (中断)と、ret.n 、retw.n(ret
およびretw)と、beqz.n(レジスタがゼロならば、6ビットのコードなしのオフ
セットを有するブランチを転送)と、bnez.n(レジスタがゼロでないならば、6
ビットのコードなしのオフセットを有するブランチを転送)を含んでいる。
は2つの4ビットフィールドと、4ビットの主要操作コードだけをサポートする
。これはロードだけをサポートし、オフセットなしで記憶し(時折、フィールド
におけるレジスタ間接アドレスと呼ばれる)、行先と1つのソースレジスタが同
一である場合命令を付加する。コンパイラは適切であるとき3つのオペランドを
自由に使用するので、他の状況のようにこれらの制限は性能における限定ではな
い。制限は12ビット形態がしばしば使用されることを防止するが、その減少さ
れたサイズは部分的に補償する。30%の12ビットおよび70%の24ビット
においては、BIは20.4ビットであり、ほぼ50%の16ビットと50%の
24ビットにより実現される20.0ビットと同一である。1つのフォーマット
が他のフォーマットのサイズの半分であるときに生じる幾つかの構造の単純化が
存在するが、命令のサイズとデータ幅の最大の共通の除数(ged)が小さい(
これは24、12、32では4、24、16、32では8)とき幾つかの構造問
題が存在する。全体的に2は構造価格にほぼ等しく、好ましい実施形態は良好な
コードサイズを与える1であり、これは24/16である。
する。ブランチオフセット(異なる命令アドレスを経てターゲット命令を特定す
る命令定数)は全ての命令サイズのgedの倍数でなければならない。これは2
4/12に対しては12であり、24/16で8である。この数が大きい程、ブ
ランチはさらに(ビットにおいて)到達できる。この到達点を超えるブランチは
ISを増加する多数の命令シーケンスを必要とする。
ッサ構造がサイクル当たり多数の命令を実行するときに得られる。この状態では
、命令は通常並列で復号される。可変長命令では、十分な復号は第2の命令の開
始を発見するために第1の命令で行われなければならず、それによって復号はそ
こで開始することができ、十分な復号は第3の命令の開始を発見するために第2
の命令で行われなければならない。これはCPを増加する。CPの増加を防止す
るためにパイプライン段を付加することはCPIを増加する可能性が高い。幾つ
かの構造は潜在的な命令の開始の都度の復号と、その情報が先の命令の復号から
利用できるようになったときに実際の命令の選択によって早期の開始を獲得する
。これは明白に構造価格を増加する。命令を分類するパイプライン段を付加する
ことは同様に価格を増加する。命令キャッシュへ予め復号する等のさらに他の可
能性も可能であるが、全て構造価格を増加する。
令長を使用し、第2に2つの長さを弁別するため1つの命令ビットを使用するこ
とにより、できる限り簡単にする。これは構造価格と、CPに対する任意の影響
を最少にする。最後に、短い形態をオプショナルにすることにより、好ましい実
施形態は価格と、コードサイズが1番の優先順位ではないときのCP効果を減少
することを可能にする。
ーダリングで動作する。これを実現する技術は例えばWeber の米国特許第4,959,
779 号明細書に記載されている。しかしながら、可変サイズの命令を有する命令
セットは付加的な注意を必要とする。MIPS命令セットはビッグおよびリトル
エンディアンバイト順序で同じ命令フォーマットを使用し、これは命令が全て1
サイズであるので動作するだけである。好ましい実施形態は、命令サイズを決定
するために必要なビットが最下位の番号のアドレスバイト(好ましい実施形態で
は最小のアドレス可能な単位)に存在する特性を維持するために、ビッグおよび
リトルエンディアンバイト順序に対して異なる命令ワードを特定する。
ある。これはさらに低いIEおよびISに与えられる。低くされたIEからの性
能の増加はまた、32の代わりに16レジスタを有するので、IEの増加を補償
する。レジスタウィンドウはSun SPARC のような幾つかの他のプロセッサで見ら
れる。サブジェクトに対する完全な概論はSun SPARC の文書を参照する。名称“
レジスタウィンドウ”とは命令中のレジスタフィールドが現在のウィンドウ中の
レジスタをさらに大きいレジスタファイルに特定する典型的な構造を示している
。ウィンドウの位置はウィンドウベースのレジスタにより示される。
ートでレジスタを保存し回復する必要性をなくす。これはこれらの点におけるポ
インタを変更することにより行われ、これは幾つかのレジスタを視界から隠し、
新しいレジスタを露出する。露出されたレジスタは通常有効なデータを含まず、
直接使用されることができる。しかしながら、露出されたレジスタが有効なデー
タを含むとき(ウィンドウはさらに移動しているので先の呼フレームのレジスタ
へラップアラウンドされるため)、実行の継続(これは通常ソフトウェアハンド
ラへのトラップにより実現される)の前に、ハードウェアがこれを検出し、有効
なレジスタをメモリに記憶する。これはレジスタウィンドウオーバーフローと呼
ばれる。レジスタがメモリに記憶されているフレームに呼が戻るとき、レジスタ
ウィンドウのアンダーフローが生じ、プロセッサはメモリからの値をロードしな
ければならない(これもまた通常ソフトウェアハンドラへのトラップにより実現
される)。
するレジスタウィンドウはまた、処理手順へのアーギュメントがレジスタで通過
されるときに生じるアーギュメントシャッフリングを防止する(アーギュメント
シャッフリングはISとIEを増加する)。最後に、レジスタウィンドウは可変
および一時的な値をレジスタに割当てるブレークイーブン点を変更し、したがっ
てレジスタの使用を助長し、これはメモリ位置を使用するよりも高速度で小型で
ある(またISとIEを減少する)。
ドウポインタに対して固定したインクレメント16を有し、(2)SPARC はウィ
ンドウを付けられたレジスタに加えてグローバルレジスタを有し、本発明の好ま
しい実施形態ではそれを具備しておらず、(3)SPARC は現在のウィンドウが先
のウィンドウとオーバーラップする状況のときウィンドウのオーバーフローを検
出し、一方、好ましい実施形態は先のウィンドウの一部であるレジスタを参照す
るときウィンドウのオーバーフローを検出することである。
くするのに重要である。これは非常に小さい物理的レジスタファイルの使用を可
能にする。例えば多数のSun SPARC 構造は136エントリの物理的レジスタを使
用し、好ましい実施形態は類似のウィンドウ性能を実現するために64のみのエ
ントリのレジスタファイルを必要とするに過ぎない。可変インクレメントの複雑
性の増加が存在するが、プロセッサ構造価格の差は30%以上である(これはさ
らに簡単な固定したインクレメントSPARC 方法により必要とされるさらに大きい
レジスタの価格である)。好ましい実施形態はオーバーフローとアンダーフロー
を検出し、ISA マニュアルで非常に詳細に説明されているようにスタックフレー
ムを組織するための新しい方法を特定する。
列して付加(短いにもかかわらず)を必要とすることによりCP(またはCPI
)を増加するように見える(パイプラインに付加を行うための1サイクルが存在
するので、レジスタの書込みは問題ではない)。しかしながら、レジスタファイ
ルへのウィンドウを付けられていないレジスタのアクセスに対して類似したタイ
ミングとウィンドウサイズを有する方法でレジスタウィンドウアクセスを実行す
ることが可能である。例えば、64レジスタの物理的レジスタファイルと、任意
の所定の命令に可視である16のウィンドウを考慮する。この場合、16の64
:1多重化はウィンドウポインタにのみ基づいて16の可視レジスタを選択する
ために使用され、その後これらの16の結果は16エントリレジスタファイルの
ようにアクセスされる。16の64:1多重化の使用は、高い構造価格を要する
。この理由で、好ましい実施形態は4の倍数に制限されるウィンドウポインタを
特定し、この価格を係数4だけ減少する。連続した加算の使用を選択する構成に
おいてさえも、これはレジスタ数の2ビットが即座にレジスタファイルアクセス
の開始に使用されることができ、さらに低速度の合計ビット(4ビットと2ビッ
ト入力の合計)がアクセスにおける後の点で使用される。最後に、これらの2つ
の構成間のハイブリッドが可能であり、構造価格は中間になる。
うな変形は特許請求の範囲に記載されている本発明の技術的範囲内にある。
図。
図。
図。
図。
ク図。
易に明らかになるであろう。 図1乃至4には、本発明の好ましい実施形態による命令セットを実施するのに
適したプロセッサが示されている。一般に、プロセッサは命令およびデータ用の
232バイト、すなわち4GBのバーチャルメモリと、32ビットのプログラムカ
ウンタIPCと、16個以上の32ビットの汎用レジスタと、シフトアドレスレ
ジスタSARと、32ビットのループ開始アドレスレジスタLBEGと、32ビ
ットのループ終了アドレスレジスタLENDと、および32ビットのループカウ
ントレジスタLCOUNTとを有しており、これら3つのレジスタは全て、以下
詳細に説明するようにオーバーヘッド減少ループ命令によって使用される。
らば、本発明による他の種々のプロセッサアーキテクチャは、当業者に容易に明
らかになるであろう。これらの構造もまた請求の範囲に記載された技術的範囲内
に含まれるべきものである。
技術は、上述したようにより狭い命令ワードが一般に32個より少ないレジスタ
を提供し、したがって各レジスタはより高い価値を有するために、本発明の好ま
しい実施形態およびその他の実施形態にとって望ましくない。また、狭い命令セ
ット中のレジスタから利用可能なオフセットは制限され、したがって単一のレジ
スタは小さい定数プール(小さ過ぎて実用的でない)へのアクセスしか行わない
。好ましい実施形態は、定数プールにアクセスするために使用されることのでき
るPC相対ロードを提供する際に、多数の命令セット(たとえば、PDP11,
モトローラ68000,MIPS16,ARM Thumb)のソリューション
を採用する。
ドで多数回命令のブロックを反復する能力である(例えばTI TMS320C5X)。好ま
しい実施形態はそのループ、即ちloopgtz およびloopnez 命令によりこの能力を
与える。前述の第1のCループは以下の命令へ編集される。 movi.n a3,0 //i=0 loopgtz a2,done //goto done if a2 <=0, otherwise //set LCOUNT to a2-1, LBEG to loop, //and LEND to DONE, and the fall //into body loop: body addi.n a3,a3,1 //i+=1 //the processor returns automatically //to loop when it reaches here (LEND) done: LCOUNT、LBEGおよびLENDレジスタは命令セットで利用され、そ
れによってループは中断可能である。これはまたこれらのレジスタが他の命令時
実行と並列に読取られ、書込まれることを可能にする(汎用レジスタが使用され
るならば、レジスタファイルの読取り/書込みポートは増加される必要がある)
。好ましい実施形態はLCOUNTレジスタが命令のフェッチを行うために最大
時間を与えるようにテストされた後、直ちにデクリメントされることを特定する
。ループ命令は、好ましい実施形態によってループの条件的ブランチコンパイル
に関連するブランチペナルティを取ることを防止できることを期待されている。
なレジスタ書込みを有することである。これは簡単で問題を解決するが、(例え
ば内容スイッチ後の状態を回復するか妨害するため)特別なレジスタの書込みが
しばしばグループで行われ、多くは他の特別なレジスタの書込みとそれらに基づ
く命令を遅延する理由はないので非効率的である。本発明の好ましい実施形態は
ハイブリッド方法を採用する。これは検出されずハードウェアにより防止された
ハザードを防止するためにソフトウェアが挿入しなければならないISYNC、
RSYNC、ESYNC、DSYNC命令を与える。NOPとは異なって、これ
らの命令は全ての特別なレジスタの書込みが完了するまで機能停止する。これは
1つの構成依存型命令が実現されることを可能にし、そうでなければ、潜在的に
多数の特定構造向けNOPを必要とする。また、プログラマーが性能を最大にす
るために機能停止せずに、特別なレジスタ書込みを共にグループ化することを可
能にする。
2ビット、4セットオフセット)と、s32i.n(32ビット保存、4ビットオフセ
ット)と、mov.n (一方のレジスタの内容を別のレジスタへ移動)と、add.n (
2つのレジスタの内容を付加)と、addi.n(レジスタと即値を付加、ここでは即
値は−1または1…15の範囲である)と、movi.n(レジスタを即値でロード、
ここでは即値は−32…95の範囲である)と、nop.n (動作ではない)と、br
eak.n (中断)と、ret.n 、retw.n(ret およびretw)と、beqz.n(レジスタが
ゼロならば、6ビットのコードなしのオフセットを有するブランチを転送)と、
bnez.n(レジスタがゼロでないならば、6ビットのコードなしのオフセットを有
するブランチを転送)を含んでいる。
くするのに重要である。これは非常に小さい物理的レジスタファイルの使用を可
能にする。例えば多数のSun SPARC 構造は136エントリの物理的レジスタを使
用し、好ましい実施形態は類似のウィンドウ性能を実現するために64のみのエ
ントリのレジスタファイルを必要とするに過ぎない。可変インクレメントの複雑
性の増加が存在するが、プロセッサ構造価格の差は30%以上である(これはさ
らに簡単な固定したインクレメントSPARC 方法により必要とされるさらに大きい
レジスタの価格である)。好ましい実施形態はオーバーフローとアンダーフロー
を検出し、スタックフレームを組織するための新しい方法を特定する。
Claims (21)
- 【請求項1】 16以上の汎用レジスタと、 それらのレジスタとデータを交換するメモリにアクセスする手段と、 28ビットを越えない長さを有する命令の実質上全てであるメモリからの命令
を処理するための演算装置とを具備し、 少なくとも1つの命令は、オプコードフィールドと、命令に対する定数オペラ
ンドを特定するフィールドと、ソースレジスタとして前記汎用レジスタの任意の
ものを指定することのできる1つのソースレジスタフィールドと、行先レジスタ
として前記汎用レジスタの任意のものを指定することのできる1つの行先レジス
タフィールドとを有しており、 少なくとも1つの命令は、オプコードフィールドと、ソースレジスタとして前
記汎用レジスタの任意のものを指定することのできる複数のソースレジスタフィ
ールドと、行先レジスタとして前記汎用レジスタの任意のものを指定することの
できる1つの行先レジスタフィールドとを有しており、 少なくとも1つの命令は、前記演算装置に複数の複合演算を実行させ、それら
の演算の第1のものは第1の計算および論理演算の1つであり、第2のものは第
2の計算動作の1つおよび条件ブランチ演算であることを特徴とするプロセッサ
。 - 【請求項2】 命令は、同じ第1の固定長の命令を有する第1のグループの
命令と、第1の固定長とは異なる同じ第2の固定長の命令を有する第2のグルー
プの命令とを含んでおり、 両方のグループに共通のオプコードフィールド中の所定のビットフィールドは
そのビットフィールドを有する命令が属している1つのグループを示している請
求項1記載のプロセッサ。 - 【請求項3】 第1の演算は、命令内のソースレジスタフィールドによって
示されたレジスタ値の比較であり、第2の演算は、比較の結果に応答するブラン
チ演算である請求項1記載のプロセッサ。 - 【請求項4】 第1の演算は、ソースレジスタフィールドによって示された
レジスタの内容の論理的な左シフトであり、第2の演算は、シフトされたレジス
タ内容および別のソースレジスタ値についての計算動作である請求項1記載のプ
ロセッサ。 - 【請求項5】 第1の演算は、ソースレジスタフィールドによって示された
レジスタの内容の論理的な右シフトであり、第2の演算は、命令の定数フィール
ドによって特定された値を有するシフトの結果についての論理的なアンド動作で
ある請求項1記載のプロセッサ。 - 【請求項6】 少なくとも1つの命令は、第2の命令アドレスに到達するま
で第1の命令アドレスにおいて開始した命令をプロセッサに実行させ、その後再
び第1のアドレスにおいて実行を継続し、命令のソースレジスタフィールドによ
って示されたソースレジスタの内容によって決定された回数だけ反復する請求項
1記載のプロセッサ。 - 【請求項7】 プロセッサは検索表中の定数値を指定する定数フィールドを
有する少なくとも1つの命令を有している請求項1記載のプロセッサ。 - 【請求項8】 さらに、複数の特定目的のレジスタと、 コプロセッサとデータを交換するために特定目的のレジスタをアクセスする手
段とを具備し、 少なくとも1つの命令は、予め定められた値である特定目的のレジスタ中のデ
ータに応答する条件ブランチである請求項1記載のプロセッサ。 - 【請求項9】 特定目的のレジスタは単一ビットレジスタであり、 前記アクセスする手段はさらに単一ビットレジスタと複数のコプロセッサとの
間でデータを交換する請求項8記載のプロセッサ。 - 【請求項10】 さらに、1つの特定目的のレジスタと、 特定目的のレジスタへの書込みの実行がまだ完了していないこと、および全て
のペンディングの特定目的のレジスタの書込みの実行が完了したことを選択的に
示す状態指示手段とを具備し、 命令のセットは、全てのペンディングの書込みの実行が完了したことを状態指
示手段が示すまで演算装置に次の命令の実行を遅延させる命令を含んでいる請求
項1記載のプロセッサ。 - 【請求項11】 データを記憶する複数のレジスタと、 メモリとレジスタとの間でデータを交換するためにメモリにアクセスする手段
と、 レジスタ中に記憶されたデータを処理するためにメモリからの命令を実行する
演算手段とを具備し、 複数の命令は複数のレジスタフィールドを有し、各レジスタフィールドは4ビ
ット幅以上のビット幅であり、 命令は、ロードと、セーブと、均一性についての条件ブランチと、非均一性に
ついての条件ブランチと、計算動作のそれぞれの少なくとも1つを含み、それら
はそれぞれ28ビットを越えない長さで符号化されており、 演算手段は、ロード命令の実行に応答して命令のソースレジスタフィールドお
よびロード命令の定数フィールドによって特定されたレジスタの内容の合計に対
応しているメモリ位置からのロード命令の行先レジスタフィールドの内容によっ
て指定されたレジスタ中にデータをロードし、 演算手段は、記憶命令の実行に応答して記憶命令の第2のソースレジスタフィ
ールドおよび記憶命令の定数フィールドによって特定されたレジスタの内容の合
計に対応しているメモリ位置の記憶命令の第1のソースレジスタフィールドの内
容によって指定されたレジスタからのデータを記憶し、 演算手段は、均一性についての条件ブランチの実行に応答して非均一性につい
ての条件ブランチ命令により示された2つのレジスタの内容が等しいとき均一性
についての条件ブランチ命令により示された相対的オフセット値に対応する位置
で開始するメモリからの命令を順次実行し、 演算手段は、非均一性についての条件ブランチ命令の実行に応答して非均一性
についての条件ブランチ命令により示された2つのレジスタの内容が等しくない
とき非均一性についての条件ブランチ命令により示された相対的オフセット値に
対応する位置で開始するメモリからの命令を順次実行し、 演算手段は、計算命令の実行に応答して計算命令の各ソースレジスタフィール
ドにより示される複数のレジスタの内容について計算動作を実行し、計算命令の
行先レジスタフィールドによって示される複数のレジスタ中にその結果を記憶さ
せることを特徴とするプロセッサ。 - 【請求項12】 ロード、記憶、均等性についての条件ブランチ、非均等性
について条件ブランチ、および計算命令のそれぞれのソースレジスタフィールド
は各命令の境界に関して同じ位置にあり、 記憶、均等性についての条件ブランチ、非均等性について条件ブランチ、およ
び計算命令の付加的なソースレジスタフィールドは各命令の境界に関して同じ位
置にある請求項11記載のプロセッサ。 - 【請求項13】 演算手段はさらに、ループ命令を一度実行するのに応答し
て他の命令を複数回実行する請求項12記載のプロセッサ。 - 【請求項14】 ロード、記憶、均等性についての条件ブランチ、非均等性
について条件ブランチ、および計算命令はそれぞれ同じ第1の固定長で符号化さ
れ、 演算手段は、短いロード、短い記憶、短い均等性についての条件ブランチ、短
い非均等性について条件ブランチ、および短い計算命令はそれぞれ第1の固定長
よりも短い同じ第2の固定長で符号化され、それぞれロード、記憶、均等性につ
いての条件ブランチ、非均等性について条件ブランチ、および計算命令の対応す
る動作を実行する請求項13記載のプロセッサ。 - 【請求項15】 演算手段は、レジスタファイル内のレジスタのグループを
示すウインドウベースレジスタを含み、 演算手段はさらに、レジスタフィールドがレジスタのグループ中のウインドウ
に関係するレジスタを示すようにレジスタファイル内のレジスタのグループをウ
インドウに示す請求項13記載のプロセッサ。 - 【請求項16】 ウインドウベースレジスタの相対的インクリメントはサブ
ルーチン呼出し命令中の定数によって特定される請求項15記載のプロセッサ。 - 【請求項17】 データを記憶する複数のレジスタと、 メモリと前記レジスタとの間でデータを交換するためにメモリをアクセスする
手段と、 レジスタ中に記憶されたデータを処理するためにメモリからの命令を実行する
演算手段とを具備し、 各命令は32ビット幅より狭く、複数の命令は複数のソースレジスタフィール
ドおよび行先レジスタフィールドを有し、各レジスタフィールドは4ビット幅以
上のビット幅であり、 演算手段は、ロード命令の実行に応答して命令のソースレジスタフィールドお
よびこの命令の定数フィールドによって特定されたレジスタの1つの内容の合計
に対応しているメモリ位置からのロード命令の行先レジスタフィールドによって
特定されたレジスタ中にデータをロードし、 演算手段は、記憶命令の実行に応答して記憶命令の第2のソースレジスタフィ
ールドおよび命令の定数フィールドによって特定されたレジスタの内容の合計に
対応しているメモリ位置において命令の第1のソースレジスタフィールドによっ
て特定されたレジスタからのデータを記憶し、 演算手段は、条件ブランチ命令の実行に応答してテストを行い、テストの結果
が真実であった場合には、条件ブランチ命令により示された相対的オフセット値
に対応する位置で開始するメモリからの命令を順次実行し、 前記テストは、 2つのソースレジスタの内容の均等性、 2つのソースレジスタの内容の非均等性、 ゼロに等しい2つのソースレジスタのビット的論理アンド、 ゼロに等しくない2つのソースレジスタのビット的論理アンド、 ゼロである第2のソースレジスタの内容によって指定された第1のソースレ
ジスタの1ビットの内容、 1である第2のソースレジスタの内容によって指定された第1のソースレジ
スタの1ビットの内容、 ゼロである命令のフィールドによって指定されたソースレジスタの1ビット
の内容、 1である命令のフィールドによって指定されたソースレジスタの1ビットの
内容、 第2のソースレジスタの内容より小さい2の補数である命令のフィールドに
よって指定された第1のソースレジスタの内容、 第2のソースレジスタの内容以上の大きさの2の補数である命令のフィール
ドによって指定された第1のソースレジスタの内容、 第2のソースレジスタの内容より小さい符号のない命令のフィールドによっ
て指定された第1のソースレジスタの内容、 第2のソースレジスタの内容以上の大きさの符号のない命令のフィールドに
よって指定された第1のソースレジスタの内容、 ソースレジスタの内容と命令の定数フィールドとの均等性、 ソースレジスタの内容と命令の定数フィールドとの非均等性、 命令の定数フィールドより小さい2の補数のソースレジスタの内容、 命令の定数フィールド以上の大きさの2の補数のソースレジスタの内容、 命令の定数フィールドよりも小さい符号のないソースレジスタの内容、 命令の定数フィールドよりも大きい符号のないソースレジスタの内容、 からなる第1のグループから選択されることを特徴とするプロセッサ。 - 【請求項18】 ゼロである1つのソースレジスタの内容、 ゼロではない1つのソースレジスタの内容、 ゼロより小さい2の補数である1つのソースレジスタの内容、 ゼロより大きい2の補数である1つのソースレジスタの内容、 からなる第2のグループおよび前記の第1のグループの中の1つからテストが選
択され、 ゼロに対する各比較が、ソースレジスタをゼロでないオーギュメントと比較す
る対応する命令のオフセットよりも大きいブランチターゲットを指定するための
オフセットを特定する請求項17記載のプロセッサ。 - 【請求項19】 テストは、フィールド値によって特定された検索表中の位
置を参照にすることによって定数を形成する命令の定数フィールドとソースレジ
スタとの比較を含んでいる請求項18記載のプロセッサ。 - 【請求項20】 全ての命令が32ビット長よりも短い請求項19記載のプ
ロセッサ。 - 【請求項21】 命令は、より少ないビットで符号化されて、対応する条件
ブランチ命令よりも短い相対的オフセットフィールドを使用する条件ブランチ命
令およびソースレジスタの内容の1つがゼロであることおよび1つのソースレジ
スタの内容の1つがゼロでないことのテストを含んでいる請求項20記載のプロ
セッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/192,395 | 1998-11-13 | ||
US09/192,395 US6282633B1 (en) | 1998-11-13 | 1998-11-13 | High data density RISC processor |
PCT/US1999/026531 WO2000029938A1 (en) | 1998-11-13 | 1999-11-10 | High data density risc processor |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006039754A Division JP2006185462A (ja) | 1998-11-13 | 2006-02-16 | 高データ密度のriscプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003521753A true JP2003521753A (ja) | 2003-07-15 |
JP3795757B2 JP3795757B2 (ja) | 2006-07-12 |
Family
ID=22709471
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000582881A Expired - Fee Related JP3795757B2 (ja) | 1998-11-13 | 1999-11-10 | 高データ密度のriscプロセッサ |
JP2006039754A Pending JP2006185462A (ja) | 1998-11-13 | 2006-02-16 | 高データ密度のriscプロセッサ |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006039754A Pending JP2006185462A (ja) | 1998-11-13 | 2006-02-16 | 高データ密度のriscプロセッサ |
Country Status (8)
Country | Link |
---|---|
US (1) | US6282633B1 (ja) |
EP (1) | EP1129402A1 (ja) |
JP (2) | JP3795757B2 (ja) |
KR (1) | KR100412920B1 (ja) |
CN (1) | CN1204490C (ja) |
AU (1) | AU1346500A (ja) |
TW (1) | TW452693B (ja) |
WO (1) | WO2000029938A1 (ja) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2984463B2 (ja) * | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
US6990570B2 (en) * | 1998-10-06 | 2006-01-24 | Texas Instruments Incorporated | Processor with a computer repeat instruction |
US7779236B1 (en) * | 1998-12-31 | 2010-08-17 | Stmicroelectronics, Inc. | Symbolic store-load bypass |
US6842853B1 (en) * | 1999-01-13 | 2005-01-11 | Sun Microsystems, Inc. | Thread suspension system and method |
JP2000353092A (ja) * | 1999-06-09 | 2000-12-19 | Nec Corp | 情報処理装置及びそのレジスタファイル切替方法 |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US6446195B1 (en) * | 2000-01-31 | 2002-09-03 | Intel Corporation | Dyadic operations instruction processor with configurable functional blocks |
US7418580B1 (en) * | 1999-12-02 | 2008-08-26 | International Business Machines Corporation | Dynamic object-level code transaction for improved performance of a computer |
US6754892B1 (en) * | 1999-12-15 | 2004-06-22 | Transmeta Corporation | Instruction packing for an advanced microprocessor |
US6633181B1 (en) * | 1999-12-30 | 2003-10-14 | Stretch, Inc. | Multi-scale programmable array |
US6763327B1 (en) * | 2000-02-17 | 2004-07-13 | Tensilica, Inc. | Abstraction of configurable processor functionality for operating systems portability |
US7036106B1 (en) * | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
AU2001245720A1 (en) | 2000-03-15 | 2001-09-24 | Arc International Plc | Method and apparatus for processor code optimization using code compression |
KR100379837B1 (ko) * | 2000-06-30 | 2003-04-11 | 주식회사 에이디칩스 | 확장명령어 축약장치 |
US6922773B2 (en) * | 2000-12-29 | 2005-07-26 | Stmicroelectronics, Inc. | System and method for encoding constant operands in a wide issue processor |
US6857110B1 (en) | 2001-01-30 | 2005-02-15 | Stretch, Inc. | Design methodology for merging programmable logic into a custom IC |
JP3776732B2 (ja) * | 2001-02-02 | 2006-05-17 | 株式会社東芝 | プロセッサ装置 |
US7010558B2 (en) * | 2001-04-19 | 2006-03-07 | Arc International | Data processor with enhanced instruction execution and method |
US6842849B2 (en) * | 2001-05-21 | 2005-01-11 | Arm Limited | Locking source registers in a data processing apparatus |
US7493470B1 (en) | 2001-12-07 | 2009-02-17 | Arc International, Plc | Processor apparatus and methods optimized for control applications |
US7278137B1 (en) * | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
WO2003065165A2 (en) * | 2002-01-31 | 2003-08-07 | Arc International | Configurable data processor with multi-length instruction set architecture |
US20030167460A1 (en) * | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
US7475000B2 (en) * | 2002-04-25 | 2009-01-06 | Arc International, Plc | Apparatus and method for managing integrated circuit designs |
AU2003256870A1 (en) * | 2002-08-09 | 2004-02-25 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
FR2845784B1 (fr) * | 2002-10-11 | 2005-01-14 | St Microelectronics Sa | Dispositif de memorisation de donnees de type lifo incorporant deux memoires a acces aleatoire |
US7600096B2 (en) * | 2002-11-19 | 2009-10-06 | Stmicroelectronics, Inc. | Coprocessor extension architecture built using a novel split-instruction transaction model |
GB2402763B (en) * | 2003-06-13 | 2006-03-01 | Advanced Risc Mach Ltd | Data access program instruction encoding |
GB2402764B (en) * | 2003-06-13 | 2006-02-22 | Advanced Risc Mach Ltd | Instruction encoding within a data processing apparatus having multiple instruction sets |
US7698539B1 (en) * | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US7606997B1 (en) | 2003-07-18 | 2009-10-20 | Guillermo Rozas | Method and system for using one or more address bits and an instruction to increase an instruction set |
US7373642B2 (en) * | 2003-07-29 | 2008-05-13 | Stretch, Inc. | Defining instruction extensions in a standard programming language |
US7526757B2 (en) * | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7216216B1 (en) * | 2004-06-30 | 2007-05-08 | Sun Microsystems, Inc. | Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window |
US7620042B2 (en) * | 2004-12-17 | 2009-11-17 | Samsung Electronics Co., Ltd. | Apparatus and method for inter-processor communications in a multiprocessor routing node |
US7664928B1 (en) | 2005-01-19 | 2010-02-16 | Tensilica, Inc. | Method and apparatus for providing user-defined interfaces for a configurable processor |
US7415599B1 (en) * | 2005-11-01 | 2008-08-19 | Zilog, Inc. | Instruction operation and operand memory location determined based on preceding instruction operation and operand memory location |
US7971132B2 (en) * | 2007-01-05 | 2011-06-28 | Dialogic Corporation | Universal multimedia engine and method for producing the same |
CN101382884B (zh) * | 2007-09-07 | 2010-05-19 | 上海奇码数字信息有限公司 | 指令编码方法、指令编码系统及数字信号处理器 |
JP4526560B2 (ja) * | 2007-12-05 | 2010-08-18 | 日本テキサス・インスツルメンツ株式会社 | プロセッサおよび信号処理方法 |
US20100115239A1 (en) * | 2008-10-29 | 2010-05-06 | Adapteva Incorporated | Variable instruction width digital signal processor |
JP5437878B2 (ja) * | 2010-03-29 | 2014-03-12 | ルネサスエレクトロニクス株式会社 | 情報処理装置 |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
CN108681465B (zh) * | 2011-12-22 | 2022-08-02 | 英特尔公司 | 用于产生整数序列的处理器、处理器核及系统 |
US9292291B2 (en) * | 2012-03-28 | 2016-03-22 | International Business Machines Corporation | Instruction merging optimization |
WO2014006605A2 (en) * | 2012-07-06 | 2014-01-09 | Koninklijke Philips N.V. | Computer processor and system without an arithmetic and logic unit |
US9411589B2 (en) | 2012-12-11 | 2016-08-09 | International Business Machines Corporation | Branch-free condition evaluation |
US20150178078A1 (en) * | 2013-12-21 | 2015-06-25 | H. Peter Anvin | Instructions and logic to provide base register swap status verification functionality |
US9250900B1 (en) | 2014-10-01 | 2016-02-02 | Cadence Design Systems, Inc. | Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network |
KR102270790B1 (ko) | 2014-10-20 | 2021-06-29 | 삼성전자주식회사 | 데이터 처리 방법 및 장치 |
US10620957B2 (en) * | 2015-10-22 | 2020-04-14 | Texas Instruments Incorporated | Method for forming constant extensions in the same execute packet in a VLIW processor |
US10331449B2 (en) * | 2016-01-22 | 2019-06-25 | Arm Limited | Encoding instructions identifying first and second architectural register numbers |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
US11983535B2 (en) | 2019-03-22 | 2024-05-14 | Cambricon Technologies Corporation Limited | Artificial intelligence computing device and related product |
CN111723920B (zh) * | 2019-03-22 | 2024-05-17 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5051885A (en) | 1988-10-07 | 1991-09-24 | Hewlett-Packard Company | Data processing system for concurrent dispatch of instructions to multiple functional units |
EP0374419A3 (en) | 1988-12-21 | 1991-04-10 | International Business Machines Corporation | Method and apparatus for efficient loop constructs in hardware and microcode |
US5155820A (en) | 1989-02-21 | 1992-10-13 | Gibson Glenn A | Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
JP2683488B2 (ja) | 1992-06-30 | 1997-11-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 3−1論理演算装置 |
JP3532975B2 (ja) * | 1993-09-27 | 2004-05-31 | 株式会社ルネサステクノロジ | マイクロコンピュータおよびそれを用いて命令を実行する方法 |
DE69424626T2 (de) | 1993-11-23 | 2001-01-25 | Hewlett-Packard Co., Palo Alto | Parallele Datenverarbeitung in einem Einzelprozessor |
DE69428504T2 (de) | 1993-11-30 | 2002-05-16 | Texas Instruments Inc., Dallas | Drei-Eingänge-Arithmetik-Logik-Einheit mit Trommel-Rotationsschaltung |
US5581717A (en) | 1994-03-01 | 1996-12-03 | Intel Corporation | Decoding circuit and method providing immediate data for a micro-operation issued from a decoder |
US5655132A (en) | 1994-08-08 | 1997-08-05 | Rockwell International Corporation | Register file with multi-tasking support |
JP3630804B2 (ja) * | 1995-11-30 | 2005-03-23 | 三洋電機株式会社 | データ処理装置 |
-
1998
- 1998-11-13 US US09/192,395 patent/US6282633B1/en not_active Expired - Lifetime
-
1999
- 1999-11-10 KR KR10-2001-7006015A patent/KR100412920B1/ko not_active IP Right Cessation
- 1999-11-10 WO PCT/US1999/026531 patent/WO2000029938A1/en active IP Right Grant
- 1999-11-10 EP EP99956977A patent/EP1129402A1/en not_active Withdrawn
- 1999-11-10 AU AU13465/00A patent/AU1346500A/en not_active Abandoned
- 1999-11-10 CN CNB998154288A patent/CN1204490C/zh not_active Expired - Fee Related
- 1999-11-10 JP JP2000582881A patent/JP3795757B2/ja not_active Expired - Fee Related
- 1999-12-10 TW TW088119754A patent/TW452693B/zh active
-
2006
- 2006-02-16 JP JP2006039754A patent/JP2006185462A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CN1204490C (zh) | 2005-06-01 |
KR100412920B1 (ko) | 2003-12-31 |
WO2000029938A1 (en) | 2000-05-25 |
JP3795757B2 (ja) | 2006-07-12 |
KR20010092736A (ko) | 2001-10-26 |
EP1129402A1 (en) | 2001-09-05 |
AU1346500A (en) | 2000-06-05 |
JP2006185462A (ja) | 2006-07-13 |
TW452693B (en) | 2001-09-01 |
US6282633B1 (en) | 2001-08-28 |
CN1348560A (zh) | 2002-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003521753A (ja) | 高データ密度のriscプロセッサ | |
US5269007A (en) | RISC system capable of simultaneously executing data interlocked shift and arithmetic/logic instructions in one clock cycle by bypassing register | |
EP0853780B1 (en) | Superscalar microprocessor with risc86 instruction set | |
US7475222B2 (en) | Multi-threaded processor having compound instruction and operation formats | |
US7401205B1 (en) | High performance RISC instruction set digital signal processor having circular buffer and looping controls | |
EP0789297A2 (en) | Data processor and method of processing data | |
US20070174596A1 (en) | Data processor | |
US20010010072A1 (en) | Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them | |
US5969975A (en) | Data processing apparatus registers | |
JP3670668B2 (ja) | データ処理装置 | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
US8671266B2 (en) | Staging register file for use with multi-stage execution units | |
JP2847974B2 (ja) | データ処理装置 | |
JP3789583B2 (ja) | データ処理装置 | |
Berenbaum et al. | Introduction to the CRISP Instruction Set Architecture. | |
JP3345787B2 (ja) | データ処理装置 | |
US7941651B1 (en) | Method and apparatus for combining micro-operations to process immediate data | |
Gwennap | MAJC gives VLIW a new twist | |
JP4502532B2 (ja) | データ処理装置 | |
JP2668456B2 (ja) | ビット検索回路及びそれを備えたデータ処理装置 | |
KR101171403B1 (ko) | 합성 명령 및 연산 포맷들을 갖는 프로세서 | |
JP2646855B2 (ja) | データ処理装置 | |
US7272700B1 (en) | Methods and apparatus for indirect compound VLIW execution using operand address mapping techniques | |
JPH11510288A (ja) | 間接指定子を用いるエミュレーションを含む命令デコーダ | |
Agrawal et al. | SPARC: An ASIC Solution for High-Performance Microprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040520 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040608 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040831 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040921 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050418 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050425 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050719 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050816 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20051116 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20051201 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060216 |
|
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: 20060314 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060413 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090421 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100421 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100421 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110421 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120421 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120421 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130421 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130421 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140421 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |