JP3833269B2 - プロセッサのための命令圧縮、解凍のシステム及び方法 - Google Patents
プロセッサのための命令圧縮、解凍のシステム及び方法 Download PDFInfo
- Publication number
- JP3833269B2 JP3833269B2 JP53792098A JP53792098A JP3833269B2 JP 3833269 B2 JP3833269 B2 JP 3833269B2 JP 53792098 A JP53792098 A JP 53792098A JP 53792098 A JP53792098 A JP 53792098A JP 3833269 B2 JP3833269 B2 JP 3833269B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- packet
- compressed
- memory
- processing unit
- 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
- 238000000034 method Methods 0.000 title claims description 34
- 230000006837 decompression Effects 0.000 title claims description 28
- 230000006835 compression Effects 0.000 title claims description 17
- 238000007906 compression Methods 0.000 title claims description 17
- 230000015654 memory Effects 0.000 claims description 167
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 2
- 101001075561 Homo sapiens Rho GTPase-activating protein 32 Proteins 0.000 description 1
- 201000006054 Mulibrey nanism Diseases 0.000 description 1
- 102100020900 Rho GTPase-activating protein 32 Human genes 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000000090 raster image correlation spectroscopy Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000010257 thawing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- 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 or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
本発明は、一般的にはプロセッサ内の命令用記憶スペースを削減するためのシステム及び方法に関し、特に、プロセッサ内のメモリーに記憶される非常に長い命令ワードを圧縮、解凍するためのシステム及び方法に関する。
リアルタイムディジタル信号処理、リアルタイムビデオ処理、リアルタイム画像解凍等、ある種のタスクでは、画素表示データのような大量のデータをリアルタイムで迅速に処理する高速処理システムが必要とされる。このような高速処理システムでは、例えば、クロックサイクル毎に5つの個別の機能ユニットのために5つの個別の命令を処理する超長命令ワード(VLIW)プロセッサのような複雑なプロセッサが採用される。このようなプロセッサでは、150ビット長にも達する超長命令ワードが用いられ、この超長命令ワードを記憶するために大量のメモリーが必要となる。これら超長命令ワードを記憶するための超大容量メモリーは高価である。通常のVLIWプロセッサでは、これら超長命令ワードの長さは150ビットにも達する。これら超長命令ワードを使用すれば、例えば、5つの処理ユニットが同時に5つの個別のデータを処理できるようになるが、超長命令ワードを記憶するのは困難である。加えて、各クロックサイクルの間、全ての多重機能ユニットを常時フルに使用することはできない。しかし、通常のVLIWプロセッサでは、各クロックサイクル毎に決められた数のビットが各機能ユニットに割り当てられているので、使用されていない機能ユニットが有れば、超長命令ワード内のビットの幾つかが無駄なことになる。超長命令ワード内の無駄なビットのせいで、メモリー記憶スペースも又無駄になる。無駄なメモリースペースのせいで簡単なプログラムでも命令メモリーを一杯にすることになるが、これは命令ワードが大変長いからである。更に、ビデオ解凍プログラムや画像生成プログラムのようなより複雑なプログラムは、命令メモリー内に完全に記憶することはできないので、メモリー内に継続的に再ロードしなければならなくなる。プログラムをメモリー内に継続的に再ロードすると、プログラムの速度は許容不可能なレベルにまで低下する。
このように、超長命令ワードを記憶するのに必要なメモリーの量を低減するためのシステム及び方法が必要とされている。メモリーユニットと演算ユニットのように処理ユニットを2つだけ有するある従来型の処理システムは、メモリー内に記憶される処理ユニット各々に対して別々の命令を持っている。このため、プロセッサが他のもう一つの命令を受け取る準備を整える際には、2つの隣接する命令は、ある規準に則ってプロセッサに入る前に互いに連結されるか否かが決められる。隣接する命令を連結するためには、命令はメモリー命令(即ち、ロード又は記憶)と演算ロジックユニット命令でなければならない。連結されたメモリーは、プロセッサがより高速に処理できる。このシステムはプロセッサの処理速度を上げるが、全長命令がメモリー内に記憶されるので、オーバーヘッドの処理を必要とし命令に必要なメモリーの量を低減することはない。
例えば40ビットの短い命令と、例えば80ビットの長い命令の両方がある従来型VLIWプロセッサシステムもある。短い命令はループを起動するのに使用され、長い命令ワードは実際の内部ループに使用される。この長短の命令を選択すれば、処理速度を上げ、ある命令のサイズを低減することはできるかもしれないが、命令メモリースペースを低減する問題に適切に取り組むわけではない。もう一つのVLIWプロセッサシステムでは命令キャッシュを使っており、命令キャッシュの一部がシステム内の各処理ユニット専用になっている。このシステムも命令の処理を高速化できる。このシステムは命令メモリースペースも低減するが、超長命令ワード内にはなお無駄なビットがある。又他のVLIWシステムでは種々のタイプの命令を互いにグループ化して並列性を高め、処理の高速化を図っているが、命令メモリースペースの課題に取り組んではいない。又更に他のVLIWシステムは、固定長命令パケット内に含まれる可変長命令を有している。これらのシステムはどれも、超長命令ワードを記憶するのに必要なメモリーサイズを効率よく低減する方法を提供していない。このように、これら従来型システムは高価で、超長命令ワードのサイズが大きいために、複雑なプログラムをシステムの命令メモリー内に完全に記憶することはできない。
従って、超長命令ワードを記憶するのに必要なメモリーの量を低減し、既知の装置の種々の問題を回避できるシステム及び方法が求められており、それこそが本発明の目指すところである。
発明の概要
本発明は、VLIWプロセッサ内の超長命令ワードを記憶するのに必要なメモリーの量を低減するためのシステムと方法を提供することにより、上記及びその他の問題に取り組むものである。本発明は、これら超長命令ワードを圧縮してそのサイズを低減して、メモリー内に記憶しなければならない超長命令ワードのサイズを低減することにより、これを達成する。本発明は、命令パケットとして知られているフォーマットで、複数の処理ユニットそれぞれに対する多数の圧縮された命令を生成、記憶し、処理ユニットが実行する直前に解凍する。命令は種々の方法で圧縮する(即ち、革命レイのサイズを低減する)ことができる。例えば命令パケット内には通常幾つかの使用されないビットがある。例えば、処理ユニットが使用されておらずノーオペレーション命令又はデフォルト命令を実行している場合でも32ビット長の処理ユニット命令が使われるので、使用されないビットが存在する。ノーオペレーション命令は命令がないことかもしれないが、デフォルト命令は、例えば複数の機能ユニットにその2つのインプットを互いに掛けさせるのかもしれない。しかし、デフォルト又はノーオペレーオン命令は全32ビットを必要とはしない。代表的VLIWプロセッサシステムでは、処理システムの約1/2だけが、いかなる所与の時間においても有効な命令を実際に処理している。処理ユニットの残りの半分はデフォルト命令を処理している。先に述べたように、これらデフォルト命令はそれぞれ短縮できる。このように、処理ユニットの幾つかはデフォルト命令を実行しているので、超長命令ワードは本発明に従って圧縮することができる。更に、処理ユニットによって実行さえる命令の大部分は超長命令ワード内で利用できるビット全てを使用する必要は無く、従ってこれらのビットは圧縮できる。更に、デフォルト命令を始めとして長い命令それぞれに短いコードを割り当て、実行時にこれらのコードを拡張することによって、命令を圧縮することができる。
本発明は、複数の命令を含む命令パケットが生成され、予め定められた長さを有する圧縮された命令が命令パケット内の1つの命令に割り当てられる、命令圧縮、解凍のシステム及び方法を提供する。より高い頻度で発生する命令に対し、より短い圧縮された命令が使用される。圧縮された複数の命令を含む1つの命令パケットが生成され、解凍されると、前記処理ユニットそれぞれの演算を制御することになる。複数の前記命令パケットを複数の記憶位置に記憶し、記憶システム内の選択された可変長命令パケットを指すアドレスを生成し、前記選択された命令パケット内の前記圧縮された命令を解凍して前記処理ユニットそれぞれに対する可変長命令を生成することによって解凍がおこなわれる。本発明は、前記解凍された可変長命令を前記処理ユニットそれぞれに経路指定することもできる。
【図面の簡単な説明】
図1は、複数の処理ユニットを含むパイプラインプロセッサのブロック線図である。
図2は、図1に示す処理ユニットの制御に使用される超長命令ワードの線図である。
図3A及び図3Bは、本発明による、圧縮された命令の2種類の異なるフォーマットを示す線図である。
図4は圧縮前の超長命令ワードがどのように圧縮されるかを示す線図である。
図5は、本発明による、超長命令ワード(VLIW)解凍システムのブロック線図である。
図6は、図5に示すVLIW解凍システムのより詳細なブロック線図である。
図7は、複数の命令パケットを含む命令メモリーを示す線図である。
図8は、本発明による、これらメモリーブロックのアドレス指定を示す命令メモリーブロックの線図である。
図9は、本発明による、圧縮されたVLIW命令パケットの圧縮されていない超長命令ワードへの解凍を示す線図である。
好適な実施例の詳細な説明
本発明は、プロセッサ内の命令メモリーのサイズを低減するためのシステム、特に、VLIWプロセッサ内の超長命令ワードを圧縮、解凍するためのシステムに適している。本発明をこのような背景の下に説明する。しかし本発明は広範な用途に対応できることも理解いただきたい。
図1は、本発明による命令圧縮、解凍システムを含む超長命令ワード(VLIW)プロセッサ20の線図である。VLIWプロセッサ20は、実行制御ユニット(ECU)26、レジスタのセット28、マルチプライヤユニット(MUL)30、演算ロジックユニット(ALU)32、レジスタ制御ユニット(RCU)34、メモリーユニット(MEM)36のような複数のシステムユニットを電気的に相互連結するオペレーションコードソースバス22とリザルトバス24とを含んでいる。本発明は、図示するアーキテクチャに限定されるわけではなく、例えば、2つ以上のMULを含んでいてもよく、ALUを含んでいなくてもよい。ECU、MUL、ALU、RCU、MEMの各ユニットは処理ユニットとして知られている。VLIWプロセッサ内では処理ユニットが互いに並行に接続され、各処理ユニットが、超長命令ワードに含まれる命令を同時に処理できるようになっている。ECU26はVLIWプロセッサ内の命令の検索と実行を制御する。レジスタ28は、プロセッサ内の種々の処理ユニットに利用されるデータを記憶し、MULユニット30は2つのレジスタからの2個のデータを乗算して積の値を又他のレジスタに記憶し、ALU32は各データにつき種々の算術関数と論理演算を実行する。RCU34はある特定のレジスタを制御し、MEMユニット36は他の処理ユニットのプロセッサ内の種々の記憶システムへのアクセスを制御する。一般的に、図示のVLIWプロセッサは、上記処理ユニットそれぞれが個別の命令を同時に実行できるので、各クロックサイクル当たり命令を5個まで実行できる。
ECU26も、命令メモリーバス42によって複数の命令メモリー38、40に接続されている。命令メモリーはランダムアクセスメモリー(RAM)38、及び読み取り専用メモリー(ROM)40である。これらのメモリーは、フラッシュメモリー、電気的消去可能プログラム可能読み取り専用メモリー(EEPROM)のような他のタイプの記憶装置でもよい。これらの命令メモリーは、ECUユニットにより種々の処理ユニットへと経路指定される命令を超長命令ワードとして記憶する。命令ROM40は度々使用される命令を記憶し、これがRAMに記憶される必要の無いようにする。
MEMユニット36は、データメモリー44、46にデータメモリーバス48で接続される。データメモリー44、46はRAMとROMになっているが、消去可能なプログラム可能読み取り専用メモリー(EPROM)、フラッシュメモリー、EEPROM等の他のタイプのメモリーでもよい。これらのデータメモリーはVLIWプロセッサで演算されているデータを記憶する。データROM46はVLIWが度々使用するデータ又はデータ構造を記憶する。これら処理ユニット全てを同時に制御するため、図2に示すような超長命令ワードが使用される。
図2は、図1に示す処理ユニットの全てを制御するために使われる超長命令ワードの1例の線図である。本発明は、超長命令ワード内の命令の特定の順序、又は超長命令ワード内の命令の特定の数に限定されるものではない。例えば、VLIWプロセッサは2つのMULユニットを有していて、従って各超長命令ワードが2つのMUL命令を有するようになっていてもよい。超長命令ワードは、例えば160ビットのような多数のビットで形成され、個々の処理ユニットを個別に制御する複数の命令ワードを含む各部分から成っている。例えばECU_CTRLはECUユニットを制御する32ビット命令ワード62である。MUL_CTRL命令ワード64はMULユニットを制御し、これも32ビット長である。ALU_CTRL命令ワード66はALUユニットを制御し、これも又32ビット長である。RCU_CTRL命令ワード68はRCUを制御し、16ビット長である。最後に、MEM_CTRL命令ワード70はMEMユニットを制御し、64ビット長迄ある。各処理ユニットの対するこれら命令ワード各々のフォーマットは当該技術分野ではよく知られており、命令ワードと処理ユニットに対する制御信号との間に殆ど又は全く処理のないRICS型プロセッサアーキテクチャに従っている。図示するように、これら命令ワードは全て互いに連結され超長命令ワードを形成する。この超長命令ワードは160ビット長にも達する。もっと多くの処理ユニットを有するVLIWプロセッサはもっと長い命令ワードを有するであろうから、本発明は超長命令ワードの特定の長さに限定されるわけではない。図示するように、これら種々の命令ワード62−70は連結されてVLIW60を形成する。理解いただけるように、複雑なプログラムの場合など、命令メモリー38及び40がこのようなVLIWを多数記憶しなければならない場合にはメモリーのサイズが非常に大きくなる。本発明は、以下述べるように、この超長命令ワードを圧縮、解凍するためのシステムと方法を提供することによって、このような事態を回避する。
図3Aは、本発明による、個々の処理ユニットに対する圧縮された命令ワード110のフォーマットの線図である。図示されている圧縮された命令ワードは16ビット型式である。圧縮された命令ワードは、同様なフォーマットを有しており以下図3Bに関して説明する32ビット型式或いは48ビット型式でもよく、0ビットフォーマット(デフォルト命令)でもよい。0ビットの圧縮された命令を以下に説明する。より長さの短い圧縮された命令ワードは、よりしばしば生じる圧縮されていない命令ワードに割り当てるのが好ましく、こうすれば最も高い頻度で使用される命令を大量に圧縮することになるからである。例えば、16ビット型式は命令の大部分に使用され、次に、より長い型式(32ビット長、48ビット長、64ビット長等)が他の全ての命令に対して用いられる。即値データ等ある種のデータは16ビットの圧縮された命令に適合させることができないので、ある種の命令はより長いフォーマットを使用する。16ビットの圧縮された命令ワード110には、ストップビット113を含むトークンフィールド112と、ソースレジスタフィールド114と、宛先レジスタフィールド115が含まれる。トークン、ソースレジスタ、宛先レジスタの各フィールドに割り当てられるビットの数は変わり、図示している圧縮された命令はほんの1例に過ぎない。この特定の命令が、圧縮された命令パケット内の最後の命令である場合、ストップビットは「1」にセットされる。命令が命令パケット内の最後の命令ではない場合、ストップビットはセットされない(即ち「0」である)。このように、16ビットの圧縮された命令に関して、ストップビットはECUユニット及びプロセッサに対し、何処で1つの圧縮された命令パケットが終わり、次の圧縮された命令パケットが始まるかを示す。
5ビット幅のトークンフィールド112は、圧縮されていない命令のオペレーション(「op」)コード、制御ワード、フォームワードに対応するトークンを記憶する。トークンは、各トークンが命令セット中の唯1つの圧縮されていない命令に対応するように選ばれる。このように、トークンフィールドは、以下に説明するように、解凍システムが命令の影響を受ける処理ユニット並びにその処理ユニットに対する実際の命令の両方を決められるようにする。トークンフィールドは事実上、処理ユニットを特定し、且つ実際の圧縮されていない命令を特定する。トークンユニットは圧縮されていない命令にどんな方法で割り当ててもよいが、先に説明したように、最大の圧縮は、最も短い命令ワードが最も高頻度で使用される命令に割り当てられる際に生じる。
ソースレジスタフィールド114は5ビットであり、プロセッサ内のどのレジスタが命令に関するソースデータを記憶するのに使用されているかを定める。圧縮されていない命令からのソースレジスタアドレスは、圧縮されこのソースレジスタフィールド内におかれる。この実施例では、ソースフィールドは5ビット有しているので、レジスタを32(25=32)個まで特定することができる。同様に、宛先レジスタフィールド118は5ビット有しているので、レジスタを32個まで規定することができる。圧縮されていない命令からの宛先レジスタアドレスは、圧縮されこのフィールド内におかれる。しかし本発明は、圧縮された命令内の特定のサイズのフィールドに限定されるわけではない。
opコード、ソースレジスタアドレス、宛先レジスタアドレスに加えて、制御ワード或いはopコードのフォームなど他のビットが、以下に述べるように、トークンフィールドにエンコードされその後解凍システムにより再生される圧縮されていない命令の中にある。更に圧縮を進めるため、デフォルト命令が超長命令ワードから取り除かれ、ゼロビット命令ワードに圧縮されているものとして取り扱われる。解凍システムは、各処理ユニットに対し、命令パケット内に圧縮された命令ワードを持っていないデフォルト命令を自動的に生成する。これらのデフォルト命令はノーオペレーション(No_Op)命令であってもよく、特定のアプリケーションに対するカスタマイズされたデフォルト命令であってもよい。例えば、グラフィクス処理システムでは、デフォルト命令は処理されるべき命令のループを引き起こしてもよい。デフォルト命令は、容易に変更又はカスタマイズできるように、プロセッサ内にダウンロードすることができる。圧縮システムは以下に説明するように、パッド命令を追加することもできる。
図3Bは、本発明による32ビットの圧縮された命令116の例である。図示のように、この32ビットの圧縮された命令は、トークンフィールド112、ソースレジスタフィールド114、宛先レジスタフィールド115を有しており、先に述べたように、同様の型式のデータを含んでいる。しかし、16ビットより長い圧縮された命令の何れに関しても、その圧縮された命令がパケット内の最後の圧縮された命令であるかを示すパケット終端インジケータの位置は動かされている。図示のように、パケット終端(EP)/パケット非終端(NEP)フィールド117及び第2トークンフィールド118が長い圧縮された命令の中にある。EP/NEPフィールドによって、システムは、特定の圧縮された命令が圧縮された命令パケットの終端にあるか否かを確認でき、これは16ビット長の圧縮された命令でのストップビット113と同じ機能を果たす。
これらの長い圧縮された命令のために、トークンフィールド112は、圧縮された命令が16ビットより長いこと、及び圧縮された命令が適切な機能ユニットに経路指定されるべきことをシステムに指示するop_コードを含んでいる。この解凍ハードウェアは16ビット境界上の圧縮された命令を処理し、次に命令がパケットの終端であるか否かを表示するEP/NEPフィールドを見る。64ビット長の圧縮された命令に関しては、EP/NEPフィールドは圧縮された命令の2番目又は4番目の16ビット部分の始めにある。第2のトークンフィールド118は、機能ユニットが実行すべき実際のオペレーションを示す実際のトークンをを含んでいる。EP/NEPフィールドを使えば、解凍器は、圧縮された命令の長さに関係なく、パケットインジケータの終端を容易に位置づけることができる。以下、本発明による圧縮の例を説明する。
図4は、圧縮されていない超長命令ワード(VLIW)及び本発明による、これに対応する圧縮された命令パケット121の線図である。超長命令ワード120は、本発明に従い、コンパイラ又はアッセンブラによって圧縮される。本例に示すように、圧縮されていない命令ワードは、レジスタ1の内容がレジスタ2の内容に加算されるADDオペレーションをプロセッサ内で引き起こすかもしれない。ADD命令を補うため、メモリー命令からのLOADレジスタがMEMユニットによって完成され、ADD命令はALUユニットにより完成される。こうして、図示のように、MEM_CTRLワード122は48ビット長のLOAD命令を含み、ALU_CTRLワード125は32ビット長のADD命令を含み、他の処理ユニットに対する制御ワードはノーオペレーション(No_Op)又はデフォルト命令である。これらノーオペレーション(No_Op)又はデフォルト命令ワード123、124、126は、ECUに対しては32ビット長、RCUユニットに対しては16ビット長、MULユニットに対しては32ビット長である。このようにこの圧縮されていない超長命令ワードに必要なビットの総数は、例え処理ユニットが2個だけしか使用されていなくても、160ビットである。
この超長命令ワードを圧縮するには、幾つかの異なるアクションが生じる。先ず、デフォルト又はノーオペレーション命令がゼロビット長命令にまで圧縮される。本当は、デフォルト及びノーオペレーション命令は、後に説明するように解凍システムにより再挿入できるので、超長命令ワードから取り除かれる。このように、デフォルト命令を含まない超長命令ワードは、本例では、MEM命令122とALU命令126だけを含み、80ビット長になる。ここでMEM命令及びALU命令が圧縮され、命令パケットの長さが更に短くなる。
48ビットの圧縮されていないMEM命令122は圧縮され、図示のように、16ビットの圧縮された命令127になる。圧縮されていない命令のストップビット128と制御ビット130とは6ビットのストップビットとトークンフィールド132、134とに圧縮される。トークンフィールド134は、MEM命令が命令パケット内の最後の命令ではないので、この例ではストップビット132を必要としない。圧縮されていない命令の中の32ビットの即値番号136は、5ビットのソースレジスタフィールド138に適合するまで圧縮され、5ビットのレジスタアドレス140は宛先レジスタフィールド142内におかれる。このようにして、圧縮されたMEM命令127は16ビット長になる。
32ビットのALU命令126も圧縮されて、ストップビット154及びトークンフィールド156と、ソースレジスタフィールド160と、宛先レジスタフィールド166とを有する16ビットの圧縮された命令144になる。上記のように、ストップビット146、制御ビット148、opコード150、フォームビット152の合計12ビットは圧縮されてストップビット154とトークンフィールド156の中におかれる。同様に、ソースレジスタフィールド160と宛先レジスタフィールド166も又生成される。トークン、ソースレジスタ、宛先レジスタの各フィールドは連結され、圧縮された命令144を形成する。次に、2つの圧縮された命令127、144は互いに連結され32ビット長の命令パケット121を形成する。超長命令ワードがより多くの圧縮されていない命令と、より少数のNo_Opとを含んでいる場合、命令パケットはもっと長くなり、より多くの圧縮された命令を含むことになる。例えば、この32ビットの圧縮された命令パケット121は、160ビットの圧縮されていない超長命令ワードに替わって命令メモリー内に記憶される。圧縮できる量は圧縮される命令により異なる。しかし、圧縮量を最大にする際には、最も高い頻度で使用される命令を最も小さな圧縮された命令に割り当てるのが好ましい。こうして、上記のように、普通大抵のプログラムにあるADD命令が32ビットから16ビットに圧縮される。本発明はいかなる特定の割当スキームにも限定さえるものではない。
作動時、プログラムは、予め定められた量のメモリースペースを占有する一連の多くの超長命令ワード(VLIW)を含んでいる。先に説明したように、各個別のVLIWは、命令パケット内の圧縮された命令の数によって異なる16ビット長ないし128ビット長の圧縮された命令パケットに圧縮される。次に、これらの圧縮された命令パケットはそれぞれシーケンシャルメモリーロケーションに置かれ、これらの圧縮された命令パケットがプログラムのメモリー内に占めるスペースは元のプログラムが占めていたメモリースペースより遙かに少なくなる。このように、プログラムは圧縮された命令パケットに圧縮されるので、利用できるメモリースペースの扱いか最大化される。次に、以下に述べるように、解凍システムは、処理ユニットが実行する直前に、圧縮された命令パケットのシーケンスを解凍してVLIWに戻す。
図5は、VLIWプロセッサ20の実行の前に圧縮された命令パケットを解凍する、本発明による解凍システム170のブロック線図である。この解凍システムは、例えば、ECU内に配置される。解凍システム170は128ビット幅の命令メモリー172にアクセスする。命令メモリーは複数の圧縮された命令パケットを含んでいる。命令メモリーの幅は、本発明の範囲から逸脱することなく、いかなる所望のサイズにでも選定できる。これら圧縮された命令パケットは、デフォルト命令が存在しなければ、図1に示す処理ユニット各々への圧縮された命令を含んでいる。命令メモリーは第1の64ビットのメモリー174と、第2の64ビットのメモリー176とで構成されている。命令メモリー172はECU26によって制御される。各クロックサイクル毎に、例えば128ビットが命令メモリーから、どのビットが現下の命令パケットを構成するかを決め、命令パケット内の圧縮された命令を解凍し、処理ユニットそれぞれへの圧縮されていない命令を有する160ビット幅の超長命令ワードを出力する解凍器178内へと読み出される。簡潔にいえば、解凍器178は命令パケット内の圧縮されている命令を分離し、次に圧縮されている命令各々を解凍し、それを対応するプロセッサーに適用する。圧縮された命令それぞれを解凍するには、トークンフィールド、ソースレジスタフィールド、宛先レジスタフィールドを拡張し、拡張されたデータを互いに連結して圧縮されていない命令ワードを形成する。これらの圧縮されていない命令ワード各々とデフォルト命令を互いに連結して160ビットの超長命令ワードを形成する。解凍器の作動を以下詳細に説明する。
解凍器からの160ビットの超長命令ワードは160ビット幅の超長命令レジスタ180に読み込まれる。超長命令レジスタは圧縮されていない160ビットの超長命令ワードを記憶し、その命令を個々の処理ユニットへ経路指定する。処理ユニットへの命令の経路指定は、解凍器によっても行われる。図示のように、超長命令レジスタは、32ビット命令ワードをECU26へ、48ビット命令ワードをMEMユニット36へ、16ビット命令をRCUユニット34へ、32ビット命令をALU32へ、32ビット命令ワードをMULユニット30へとそれぞれ経路指定する。超長命令レジスタの作動を以下により詳しく説明する。このように、作動時、16ビットないし128ビット長の圧縮された命令パケットは160ビットの超長命令ワードに解凍され、処理ユニット各々に向け経路指定される。この解凍ユニットは圧縮システムとの組み合わせで、超長命令ワードを記憶するに必要なメモリーの量を低減し、より大きいプログラムが命令メモリー内に記憶できるようにする。以下に解凍システムについてより詳しく説明する。
図6は、本発明による解凍システム170のより詳細な線図である。先に説明したように、解凍システムは、命令メモリー172、解凍器178、超長命令レジスタ180を含んでいる。解凍システム170は又、アドレスジェネレータ190を含んでいてもよい。アドレスジェネレータはECUユニットから提供される開始アドレスから次のパケットの開始アドレスを生成する。先に説明したように、命令メモリーが実際に2つのメモリー部分からなっている場合には、アドレスジェネレータは、第1のメモリーにアドレスするために第1アドレス(ALEFT)を、第2のメモリーにアドレスするために第2アドレス(ARIGHT)を生成する。ALEFTを生成するために、オフセット回路192は開始アドレスに4を加え、開始アドレスのビットを右に3桁シフトする。次に、シフトされたALEFTアドレスはALEFTレジスタ196に記憶される。同様に、第2オフセット回路194を使い開始アドレスのビットを右に3桁シフトしてARIGHTアドレスが生成される。次に、ARIGHTアドレスはARIGHTレジスタ198に記憶される。
命令メモリー172は、この実施例では計128ビット幅である。しかし128ビット幅メモリーを製作するのは現実的ではないので、もっと小さなメモリーを論理的に互いに接続して128ビット幅メモリーを形成している。図示のように、命令メモリーにはランダムアクセスメモリー(RAM)204と読み取り専用メモリー(ROM)206の両方がある。命令メモリーはRAMだけ又はROMだけで構成することもできる。RAM204では、128ビット幅のメモリーは第1の64ビットメモリー208と第2の64ビットメモリー210として実行される。第1及び第2のメモリーは16ビットづつに分割され通し番号のラベルが付けられている。図示のように、後に詳しく説明するアドレススキームは、両メモリーに単一の128ビットメモリーとしてアドレスするので、両メモリーからの2つの64ビットアウトプットは連結され単一の128ビットデータストリーム形成する。ROM206命令メモリーが使用される際には、128ビット命令メモリーは4つの32ビット幅ROM212、214、216、218として実行される。RAMの場合と同じく、ROMは128ビット幅メモリーとしてアドレスされ、各ROMからの別々の32ビットアウトプットは互いに連結され128ビットアウトプットを形成する。
RAM208、210からのアウトプット、及びROM212、214、216、218からのアウトプットは共に解凍器178内のセレクタ220に入り、そこでRAMデータがアクセスされているか、ROMデータがアクセスされているかが選択される。セレクタのアウトプットは、圧縮された命令を有する可変長命令パケットを少なくとも1つ含む単一の128ビット幅データストリームである。取り出された可変長命令パケットは、次に、命令パケット内の圧縮された命令を解凍する経路選定ロジックユニットに入る。RAM及びROMからのデータの64ビット部分もスワップできるので、後に説明するように128ビット長データストリームは何れかの64ビットメモリーブロックで始まる。このスワッピングによって、第1及び第2メモリーブロック何れかで始まるデータストリーム用に別々のデコーダーが必要ではなくなるので、解凍に必要なハードウェアが少なくなる。経路選定ロジックは又、以下に述べるように、圧縮されていない命令を適切な処理ユニットに経路指定する。
圧縮された命令を解凍するために、経路選定ロジック222は入ってくる命令パケットストリームを受け取り、先に説明したように、経路選定ロジックはパケット終端インジケータ(ストップビット又はep/nepビット)を命令パケットの最後の圧縮された命令の中に配置するので、命令パケットが終了したことを確認する。経路指定及び選択ロジック222は命令パケットの終端を確認した後、命令パケット内の圧縮された命令を分離し、デフォルト命令を同じく挿入する。このように、経路指定及び選択ロジックが命令パケット内の第1の圧縮された命令がパケットの終端であることを検知すると、その命令は解凍され、デフォルト命令が他の全ての処理ユニットに対して生成される。この実施例では、命令パケットの最小サイズは16ビットなので、全処理ユニットに対するデフォルト命令を含む命令パケットでも16ビット長である。
デフォルト命令ではない圧縮された命令はそれぞれ、先ず圧縮された命令内のトークンをVLIWプロセッサ内の全トークンと比較し、対応する圧縮されていない命令opコードを生成することによりデコードされる。所定の圧縮されていない命令へのトークンの割当は、先に述べたように、圧縮システムにより行われる。適当な圧縮されていない命令opコードが一旦決められると、一時的に記憶される。次に、経路指定及び選択ロジックは、先に述べたようにソースレジスタフィールドを読み、システム内の32のレジスタの1つにアドレスするソースレジスタアドレスを生成する。次に、経路指定及び選択ロジックは宛先レジスタフィールドを読み、利用可能なレジスタの1つに対応する宛先レジスタアドレスを生成する。次に、経路指定及び選択ロジックは、opコード、ソースレジスタアドレス、宛先レジスタアドレス、全ての付加的ビットを互いに連結して圧縮されていない命令を形成する。圧縮された各命令が解凍され、デフォルト命令が全て生成された後、経路指定及び選択ロジック222は圧縮されていない命令を、複数のマルチプレクサ224、226、228、230、232を制御して各処理ユニットに向け経路指定する。命令は超長命令レジスタ180内に一時的に記憶される。例えば、ECUユニット用の超長命令ワード内の命令ワードはECUマルチプレクサ224に向け経路指定されるが、これは経路指定及び選択ロジックがそのマルチプレクサだけを選択的に使用可能とするからである。同様に、圧縮されていない命令はそれぞれ適切な処理ユニットに向け経路指定される。
図7は、複数の圧縮された命令パケットを含む命令メモリー172の線図である。先に述べたように、命令メモリーは64ビット幅の第1メモリー174と、これも64ビット幅の第2メモリー176とで構成されている。複数の圧縮された命令を含む複数の命令パケットが命令メモリー内に記憶さる。先に述べたように、各クロックサイクル毎に命令メモリーから128ビットづつ読み出される。多くの場合、命令パケットの長さは一様ではないので、128ビット中には1つより多い命令パケットが含まれている。このシステムに対するアドレススキームを、以下図8を参照しながら説明する。IP0ラベル付きの第1命令パケット250は32ビット長で、命令メモリー中の何れかの16ビット境界に任意に整列されている。このように、IP0パケットは命令メモリー中の何れの16ビット境界(即ち0ビット、16ビット、32ビット、48ビット、64ビット、80ビット長、96ビット、又は112ビット)で始まってもよい。80ビット長以下(即ち、図示の例では、80、64、48、32又は16ビット)の命令パケットでありさえすれば、命令メモリー内の16ビット境界に任意に整列できる。80ビットを越える(即ち図示の例では、96、112又は128ビット)命令パケットは全て、以下に説明するように、命令メモリー内のある特定のアドレスで始めるか、或いはそこに整列しなければならない。
IP0内の命令が実行される第1クロックサイクルの後、IP1のラベルが付いた16ビット幅の次の命令パケット252が、IP0命令と同時にECUにより読み込まれるが、第2クロックサイクルまで解凍されず実行されない。IP2のラベルが付いた第3命令パケット254は48ビット長で、第1メモリーと第2メモリーの間の境界を横切っている。しかしこのシステムでは、第1及び第2メモリーは128ビットを検索するために並行してアドレスされるので、命令パケットはメモリー間の境界を横切っていてもかまわない。IP3のラベルが付いた第4の命令パケット256は64ビット幅で、メモリーの128ビット境界を横切り、次のメモリー位置に続けられていなければならない。128ビット境界を横切る命令メモリーから全ての命令パケットを正しく読み出すためには、第1のメモリーが第2のメモリー上のアドレスより1つ大きなアドレスでアドレスされて、第2メモリー内のデータが先ず読み出され、次に第1のメモリー内のデータが読み出されるようにしなければならなず、これは先に述べたようにメモリーブロックをスワップすることである。第2のメモリー及び第1のメモリーをアドレスするためのシステムを以下に説明する。
IP4のラベルが付いた第5の命令パケット258は128ビット長で、任意に整列させることはできない。128ビット長の命令パケット全てに関し、命令パケットは命令メモリーの始め(ビット0)又はメモリーの中間(ビット64)の何れかでのみ始めることができる。この整列は、例えば、128ビット命令パケットが16ビット境界に整列すれば、命令パケットが第1の命令アドレス16−64、第2の命令アドレス65−128そして第1の命令アドレス0−16を占めることになるので必要になるのである。ハードウェアアドレスシステムは、命令パケットの2つの異なる部分が第1のメモリー内に含まれるので、命令パケットに容易にアドレスすることはできない。
図示の実施例に関して、種々の長さの命令パケットに対し許される割当の例を以下に説明する。128ビット長パケットはメモリーアドレス0又は64の何れかで開始できる。112ビット長パケットは、メモリーアドレス0、16、64又は80で開始できる。96ビット長パケットは、メモリーアドレス0、16、32、64、80又は96で開始できる。80ビット長以下(即ち80、64、48、32又は16ビット)の命令パケットは、メモリーアドレス0、16、32、48、64、80、96、112又は128で開始できる。
80ビットより大きな命令パケットが命令メモリー内に確実に適切に整列されるようにするため、長い命令パケットが適切な境界で確実に開始されるようにするために使用されるパッド命令260が設けられる。パッド命令は圧縮システムにより命令パケットストリーム内に挿入され、その後、解凍システムにより廃棄される。パッド命令は処理ユニットに何らかのオペレーションを行わせることはない。ここで、命令パケットの読み出しを完遂するために第1及び第2メモリーにアドレスするシステムにつき説明する。
図8は、命令パケットを第1及び第2メモリーから読み出すためのアドレスシステムを示す線図である。第1メモリーのメモリーマップ280と第2メモリーのメモリーマップ282が示されている。これらのメモリーマップは、命令パケットの最小サイズが16ビットなので、16ビットセグメントに分割してある。図示のように、第1メモリー位置は4つの16ビットセグメントに対応するアドレス0、1、2、3を有し、第2メモリーはアドレス4、5、6、7を有し、第1メモリーはアドレス8、9、10、11を有し、以下これに準じている。このように、第1及び第2メモリーは1つの大きな128ビットメモリーとしてアドレスされる。
命令メモリーの128ビット部分がメモリーからクロックサイクル0で読まれる最初の時、Aright及びAleftアドレスは共にゼロで、これはアドレス0、1、2、3、4、5、6、7が読み出されうることを意味している。IP0に関しては、先に述べたように、32ビット命令パケットに対応するアドレス0及び1が読み出され解凍される。次に、アドレスシステムは次の命令パケットIP1が唯の16ビットでありメモリーを増加させる必要のないことを確認する。このように、Aright及びAleftアドレスはゼロに止まる。そして、命令パケットIP1が命令メモリーから読み出され、解凍され、実行される。IP2は唯の48ビット長なので、アドレスシステムはAright及びAleftアドレス共に増加させず、IP2が読み出される。しかし、アドレスシステムはIP3が128ビット境界を横切っていることを確認し、Aleftアドレスは1だけ増加され、アドレス8、9、10、11がアクセスされる。このようにして、IP3は位置6、7、8、9から読み出される。IP3を読み出す際には、先ず第2メモリー内のデータが読み出され、次に第1メモリー内のデータが読み出される。
次にアドレスシステムは、次の命令パケットIP4が128ビット長であり、その前にパッド命令を持っていることを確認する。アドレスシステムはパッド命令に出会うと、パッド命令を読み出しこれを廃棄する。次に、次の命令パケットは128ビット長なので、Aright及びAleftアドレスを共に増加させ、プロセッサがアドレス16、17、18、19、12、13、14、15にアクセスできるようにする。この場合、命令パケットは先ず第2メモリー(即ち、アドレス12、13、14、15)から読み出し次に第1メモリー(即ち、アドレス16、17、18、19)から読み出さなければならない。命令パケットが第2メモリーから始まる、即ち、命令パケットが128ビット境界を横切っている場合は常に、第2メモリーからのデータは第1メモリーのアドレスよりも1つ少ないアドレスと共に読み出されるので、第1メモリー内のデータが先に処理される。
図9は、圧縮された命令290が超長命令ワード292に解凍されるところを示す線図である。図示のように、圧縮された命令パケットは唯の80ビット長であり、各処理ユニットに対する圧縮された命令を含んでおり、超長命令パケットは160ビット長である。先に説明したように、16ビットのECUの圧縮された命令294は、32ビットのECUの命令296に解凍される。16ビットのMEMの圧縮された命令298は48ビットのMEM命令300に解凍される。16ビットのALUの圧縮された命令302は32ビットのALU命令304に解凍される。同様に、16ビットのMULの圧縮された命令306は32ビットのMUL命令308に解凍され、16ビットの圧縮されたRCUの命令310は16ビットのRCU命令312に解凍される。このように、本発明による圧縮、解凍システムは超長命令パケットを記憶するために必要なメモリーの量を大幅に低減する。
上記説明は本発明の特定の実施例に関して行ってきたが、当業者には、本実施例における変更が、本発明の原理と精神、並びに添付の請求の範囲に規定する範囲から逸脱することなく行えることを理解頂けるであろう。
Claims (34)
- 複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するためのシステムであって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記複数の可変長命令パケット群を複数の記憶場所に記憶する手段と、各可変長命令パケットは前記処理ユニット群の中の1つに関係する圧縮命令を含んでいて、
前記記憶手段にアクセスして選択された可変長命令パケットを検索する手段と、
前記可変長命令パケットを前記圧縮命令に構文解析する手段と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令の各々を解凍する手段と、
前記解凍手段で解凍された可変長命令を前記関係処理ユニットに向けて経路指定する手段とを備えたことを特徴とするシステム。 - 前記圧縮命令が、トークンフィールドと、ソースレジスタフィールドと、宛先レジスタフィールドとを含み、
前記圧縮されていない命令を形成するために、前記トークンフィールドからオペレーションコードを生成する手段と、前記ソースレジスタフィールドからソースレジスタアドレスを生成する手段と、前記宛先レジスタフィールドから宛先レジスタアドレスを生成する手段と、前記オペレーションコードと前記ソースレジスタアドレスと前記宛先レジスタアドレスとを連結する手段とを含む非圧縮命令生成手段を備えたことを特徴とする上記請求項1に記載のシステム。 - トークンは異なる長さを有し、より長さの短いトークンが頻繁に発生する非圧縮命令に割り当てられることを特徴とする上記請求項2に記載のシステム。
- 前記解凍手段は、前記可変長命令パケット内に圧縮命令がない関係処理ユニット用の解凍されたデフォルト命令を生成する手段を含むことを特徴とする上記請求項1に記載のシステム。
- 前記デフォルト命令生成手段が、前記各処理ユニット用のデフォルト命令を選択的に変化させる手段を含むことを特徴とする上記請求項4に記載のシステム。
- 前記可変長命令パケットがパケット終端インジケータを含み、前記アクセス/検索手段が当該パケット終端インジケータを検知する手段を含むことを特徴とする上記請求項1に記載のシステム。
- 前記可変長命令パケットが命令パケットの長さを調整するためのパッド命令を有し、前記構文解析手段が前記可変長命令パケットから当該パッド命令を取り除く手段を含むことを特徴とする上記請求項1に記載のシステム。
- 前記アクセス/検索手段が、命令パケットアドレスを生成するために前記可変長命令パケットの長さに基づいて開始アドレスをオフセットする手段と、前記命令パケットアドレスを記憶する手段とを含むことを特徴とする上記請求項1に記載のシステム。
- 前記記憶手段が第1メモリー及び第2メモリーを含み、且つ、前記命令パケットアドレスが、前記第1メモリーにアクセスするための第1アドレスと、前記第2メモリーにアクセスするための第2アドレスとを含み、その結果、前記選択された命令パケットが前記第1メモリーからそして次に前記第2メモリーから読出されることを特徴とする上記請求項8に記載のシステム。
- 前記命令パケットの第1の部分が前記第2メモリーに記憶され、且つ前記命令パケットの第2の部分が前記第1メモリーに記憶され、その結果、前記命令パケットが前記第2メモリーの境界にオーバラップし、且つ、前記命令パケットを前記第2メモリーからそして次に前記第1メモリーから読出すアドレスジェネレータ手段を含むことを特徴とする上記請求項9に記載のシステム。
- 前記経路指定手段が、前記処理ユニットに取り付けられた複数のマルチプレクサと、前記マルチプレクサを選択的に使用可能にするための手段とを含み、その結果、前記命令が関係処理ユニットに経路指定されることを特徴とする上記請求項1に記載のシステム。
- 複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するための方法であって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記複数の可変長命令パケット群を複数の記憶場所に記憶する手段と、各可変長命令パケットは前記処理ユニット群の中の1つに関係する圧縮命令を含んでいて、
前記処理ユニット群の1つに関係する圧縮命令を含んだ前記複数の可変長命令パケットを、複数の記憶場所に記憶する段階と、
前記記憶段階にアクセスして選択された可変長命令パケットを検索する段階と、
前記可変長命令パケットを前記圧縮命令に構文解析する段階と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令の各々を解凍する段階と、
前記解凍段階で解凍された可変長命令を前記関係処理ユニットに向けて経路指定する段階とを含むことを特徴とする方法。 - 前記圧縮命令が、トークンフィールドと、ソースレジスタフィールドと、宛先レジスタフィールドとを含み、
前記圧縮されていない命令を形成するために、前記トークンフィールドからオペレーションコードを生成する段階と、前記ソースレジスタフィールドからソースレジスタアドレスを生成する段階と、前記宛先レジスタフィールドから宛先レジスタアドレスを生成する段階と、前記オペレーションコードと前記ソースレジスタアドレスと前記宛先レジスタアドレスとを連結する段階とを含む非圧縮命令生成段階を含むことを特徴とする上記請求項12に記載の方法。 - トークンは異なる長さを有し、より長さの短いトークンが頻繁に発生する非圧縮命令に割り当てられることを特徴とする上記請求項13に記載の方法。
- 前記解凍段階は、前記可変長命令パケット内に圧縮命令がない関係処理ユニット用の解凍されたデフォルト命令を生成する段階を含むことを特徴とする上記請求項12に記載の方法。
- 前記デフォルト命令生成段階が、前記各処理ユニット用のデフォルト命令を選択的に変化させる段階を含むことを特徴とする上記請求項15に記載の方法。
- 前記可変長命令パケットがパケット終端インジケータを含み、前記アクセス/検索段階が当該パケット終端インジケータを検知する段階を含むことを特徴とする上記請求項12に記載の方法。
- 前記可変長命令パケットが命令パケットの長さを調整するためのパッド命令を有し、前記構文解析段階が前記可変長命令パケットから当該パッド命令を取り除く段階を含むことを特徴とする上記請求項12に記載の方法。
- 前記アクセス/検索段階が、命令パケットアドレスを生成するために前記可変長命令パケットの長さに基づいて開始アドレスをオフセットする段階と、前記命令パケットアドレスを記憶する段階とを含むことを特徴とする上記請求項12に記載の方法。
- 前記記憶段階が第1メモリー及び第2メモリーを含み、且つ、前記命令パケットアドレスが、前記第1メモリーにアクセスするための第1アドレスと、前記第2メモリーにアクセスするための第2アドレスとを含み、その結果、前記選択された命令パケットが前記第1メモリーからそして次に前記第2メモリーから読出されることを特徴とする上記請求項19に記載の方法。
- 前記命令パケットの第1の部分が前記第2メモリーに記憶され、且つ前記命令パケットの第2の部分が前記第1メモリーに記憶され、その結果、前記命令パケットが前記第2メモリーの境界にオーバラップし、且つ、前記命令パケットを前記第2メモリーからそして次に前記第1メモリーから読出すアドレス生成段階を含むことを特徴とする上記請求項20に記載の方法。
- 前記経路指定段階が、前記処理ユニットに取り付けられた複数のマルチプレクサと、前記マルチプレクサを選択的に使用可能にするための段階とを含み、その結果、前記命令が関係処理ユニットに経路指定されることを特徴とする上記請求項12に記載の方法。
- 複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するためのシステムであって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する手段と、
前記可変長命令パケット内の各命令に圧縮された命令コードを割り当てる手段と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する命令パケットを生成するために、各命令用の圧縮命令コードを連結する手段とを含むことを特徴とするシステム。 - 前記命令が、オペレーションコードと、ソースレジスタアドレスと、宛先レジスタアドレスとを含み、前記割り当て手段が、前記オペレーションコードからトークンフィールドを生成する手段と、前記ソースレジスタアドレスからソースレジスタフィールドを生成する手段と、前記宛先レジスタアドレスから宛先レジスタフィールドを生成する手段と、前記トークンフィールドと前記ソースレジスタフィールドと前記宛先レジスタフィールドとを前記圧縮命令に連結する手段とを更に含むことを特徴とする上記請求項23に記載のシステム。
- 前記連結手段が、パケット終端インジケータを前記命令パケット内の最後の圧縮命令に付加する手段を含むことを特徴とする上記請求項24に記載のシステム。
- 前記割当手段は、長さゼロの圧縮命令をデフォルトのオペレーションに割り当てることによって前記超長命令ワードパケットからデフォルトの命令を取り除く手段を含むことを特徴とする上記請求項23に記載のシステム。
- 複数のパッドビットを前記圧縮命令パケット内に挿入する圧縮命令生成手段をさらに含み、その結果、前記圧縮命令パケットが命令メモリー内で正しく整列されることを特徴とする上記請求項23に記載のシステム。
- 複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するための方法であって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する段階と、
前記可変長命令パケット内の各命令に圧縮された命令コードを割り当てる段階と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する命令パケットを生成するために、各命令用の圧縮命令コードを連結する段階とを含むことを特徴とする方法。 - 前記命令が、オペレーションコードと、ソースレジスタアドレスと、宛先レジスタアドレスとを含み、前記割り当て段階が、前記オペレーションコードからトークンフィールドを生成する段階と、前記ソースレジスタアドレスからソースレジスタフィールドを生成する段階と、前記宛先レジスタアドレスから宛先レジスタフィールドを生成する段階と、前記トークンフィールドと前記ソースレジスタフィールドと前記宛先レジスタフィールドとを前記圧縮命令に連結する段階とを更に含むことを特徴とする上記請求項28に記載の方法。
- 前記連結段階が、パケット終端インジケータを前記命令パケット内の最後の圧縮命令に付加する段階を含むことを特徴とする上記請求項29に記載の方法。
- 前記割当段階は、長さゼロの圧縮命令をデフォルトのオペレーションに割り当てることによって前記超長命令ワードパケットからデフォルトの命令を取り除く段階を含むことを特徴とする上記請求項28に記載の方法。
- 複数のパッドビットを前記圧縮命令パケット内に挿入する圧縮命令生成段階をさらに含み、その結果、前記圧縮命令パケットが命令メモリー内で正しく整列されることを特徴とする上記請求項28に記載の方法。
- 複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するためのシステムであって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する手段と、
前記超長命令ワード命令パケット内の各命令に圧縮された命令コードを割り当てる手段と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する圧縮命令パケットを生成するために、各命令用の圧縮命令コードを連結する手段と、
前記複数の圧縮命令パケット群を複数の記憶場所に記憶する手段と、各圧縮命令パケットは前記処理ユニット群の中の1つに関係する圧縮命令を含んでいて、
前記記憶手段にアクセスして選択された圧縮命令パケットを検索する手段と、
前記検索された圧縮命令パケットを前記圧縮命令コードに分離する手段と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令コードの各々を解凍する手段と、
前記解凍手段で解凍された可変長命令を前記関係処理ユニットに向けて経路指定する手段とを備えたことを特徴とするシステム。 - 複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するための方法であって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する段階と、
前記超長命令ワードパケット内の各命令に圧縮された命令コードを割り当てる段階と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する圧縮命令パケットを生成するために、各命令用の圧縮命令コードを連結する段階と、
前記複数の圧縮命令パケット群を複数の記憶場所に記憶する段階と、
前記記憶段階にアクセスして選択された圧縮命令パケットを検索する段階と、
前記検索された圧縮命令パケットを前記圧縮命令コードに分離する段階と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令コードの各々を解凍する段階と、
前記解凍された可変長命令を前記関係処理ユニットに向けて経路指定する段階とを含むことを特徴とする方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/808,735 | 1997-02-28 | ||
US08/808,735 US5819058A (en) | 1997-02-28 | 1997-02-28 | Instruction compression and decompression system and method for a processor |
PCT/US1998/003954 WO1998038791A2 (en) | 1997-02-28 | 1998-02-27 | Instruction compression and decompression system and method for a processor |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2001515619A JP2001515619A (ja) | 2001-09-18 |
JP2001515619A5 JP2001515619A5 (ja) | 2005-10-06 |
JP3833269B2 true JP3833269B2 (ja) | 2006-10-11 |
Family
ID=25199582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP53792098A Expired - Fee Related JP3833269B2 (ja) | 1997-02-28 | 1998-02-27 | プロセッサのための命令圧縮、解凍のシステム及び方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US5819058A (ja) |
EP (1) | EP1008037A4 (ja) |
JP (1) | JP3833269B2 (ja) |
KR (1) | KR100567937B1 (ja) |
AU (1) | AU6674898A (ja) |
CA (1) | CA2282409C (ja) |
WO (1) | WO1998038791A2 (ja) |
Families Citing this family (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69424370T2 (de) * | 1993-11-05 | 2001-02-15 | Intergraph Corp | Befehlscachespeicher mit Kreuzschienenschalter |
US6360313B1 (en) | 1993-11-05 | 2002-03-19 | Intergraph Corporation | Instruction cache associative crossbar switch |
US5870576A (en) * | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
GB2325535A (en) * | 1997-05-23 | 1998-11-25 | Aspex Microsystems Ltd | Data processor controller with accelerated instruction generation |
US5922065A (en) * | 1997-10-13 | 1999-07-13 | Institute For The Development Of Emerging Architectures, L.L.C. | Processor utilizing a template field for encoding instruction sequences in a wide-word format |
US6173389B1 (en) * | 1997-12-04 | 2001-01-09 | Billions Of Operations Per Second, Inc. | Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor |
US6101592A (en) * | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
US6425070B1 (en) * | 1998-03-18 | 2002-07-23 | Qualcomm, Inc. | Variable length instruction decoder |
US6460116B1 (en) * | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
US6839728B2 (en) * | 1998-10-09 | 2005-01-04 | Pts Corporation | Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture |
DE19859389C1 (de) * | 1998-12-22 | 2000-07-06 | Systemonic Ag | Verfahren zur Ansteuerung von Funktionseinheiten in einem Prozessor und Prozessoranordnung zur Durchführung des Verfahrens |
US6338132B1 (en) | 1998-12-30 | 2002-01-08 | Intel Corporation | System and method for storing immediate data |
JP2000305781A (ja) | 1999-04-21 | 2000-11-02 | Mitsubishi Electric Corp | Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体 |
US6408382B1 (en) * | 1999-10-21 | 2002-06-18 | Bops, Inc. | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture |
US6859870B1 (en) * | 2000-03-07 | 2005-02-22 | University Of Washington | Method and apparatus for compressing VLIW instruction and sharing subinstructions |
US7051189B2 (en) * | 2000-03-15 | 2006-05-23 | Arc International | Method and apparatus for processor code optimization using code compression |
US6633969B1 (en) * | 2000-08-11 | 2003-10-14 | Lsi Logic Corporation | Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions |
US6799262B1 (en) | 2000-09-28 | 2004-09-28 | International Business Machines Corporation | Apparatus and method for creating instruction groups for explicity parallel architectures |
US6912647B1 (en) * | 2000-09-28 | 2005-06-28 | International Business Machines Corportion | Apparatus and method for creating instruction bundles in an explicitly parallel architecture |
US6886094B1 (en) | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US6883165B1 (en) | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US6779106B1 (en) | 2000-09-28 | 2004-08-17 | International Business Machines Corporation | Apparatus and method for an enhanced integer divide in an IA64 architecture |
US7143268B2 (en) * | 2000-12-29 | 2006-11-28 | Stmicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in wide-issue processors |
JP2004518194A (ja) * | 2001-01-11 | 2004-06-17 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | デジタル処理装置の電力管理 |
WO2002061574A1 (en) * | 2001-01-30 | 2002-08-08 | Koninklijke Philips Electronics N.V. | Computer instruction with instruction fetch control bits |
US6985633B2 (en) | 2001-03-26 | 2006-01-10 | Ramot At Tel Aviv University Ltd. | Device and method for decoding class-based codewords |
DE10136577A1 (de) * | 2001-07-27 | 2003-02-13 | Systemonic Ag | Verfahren zur Abarbeitung eines Programmcodes sowie eine Prozessoranordnung zur Ausführung des Verfahrens |
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 |
US20030177258A1 (en) * | 2002-01-15 | 2003-09-18 | Chip Engines | Reconfigurable control processor for multi-protocol resilient packet ring processor |
US7062634B1 (en) * | 2002-01-29 | 2006-06-13 | Stmicroelectronics Limited | Processor and a method for handling and encoding no-operation instructions |
US6907516B2 (en) * | 2002-05-30 | 2005-06-14 | Microsoft Corporation | Compression of program instructions using advanced sequential correlation |
US7567537B1 (en) | 2002-07-29 | 2009-07-28 | Cisco Technology, Inc. | Point-to-point MAC protocol for high speed wireless bridging |
WO2004017197A2 (en) * | 2002-08-16 | 2004-02-26 | Koninklijke Philips Electronics N.V. | Apparatus, method, and compiler enabling processing of variable length instructions in a very long instruction word processor |
ITMI20022003A1 (it) * | 2002-09-20 | 2004-03-21 | Atmel Corp | Apparecchio e metodo per la decompressione dinamica di programmi. |
US7203935B2 (en) * | 2002-12-05 | 2007-04-10 | Nec Corporation | Hardware/software platform for rapid prototyping of code compression technologies |
JP4283131B2 (ja) * | 2004-02-12 | 2009-06-24 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
US7526633B2 (en) * | 2005-03-23 | 2009-04-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
US7616137B2 (en) * | 2005-07-01 | 2009-11-10 | Stmicroelectronics, Sa | Method and apparatus for compression and decompression of an executable code with a RISC processor |
US7765342B2 (en) * | 2005-09-07 | 2010-07-27 | Florida State University Research Foundation | Systems, methods, and computer program products for packing instructions into register files |
US20070186210A1 (en) * | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US20070266229A1 (en) * | 2006-05-10 | 2007-11-15 | Erich Plondke | Encoding hardware end loop information onto an instruction |
US20080059776A1 (en) * | 2006-09-06 | 2008-03-06 | Chih-Ta Star Sung | Compression method for instruction sets |
US20080162522A1 (en) | 2006-12-29 | 2008-07-03 | Guei-Yuan Lueh | Methods and apparatuses for compaction and/or decompaction |
KR100875836B1 (ko) * | 2007-03-23 | 2008-12-24 | 삼성전자주식회사 | 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법 |
CN101398752B (zh) * | 2007-09-29 | 2011-08-31 | 国际商业机器公司 | 重叠指令存取单元和重叠指令存取方法 |
CN102077195A (zh) * | 2008-05-08 | 2011-05-25 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
US20100312991A1 (en) * | 2008-05-08 | 2010-12-09 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
US8082381B2 (en) * | 2008-09-02 | 2011-12-20 | Nvidia Corporation | Connecting a plurality of peripherals |
KR101545701B1 (ko) * | 2008-10-07 | 2015-08-19 | 삼성전자 주식회사 | 프로세서 및 그 명령어 번들 복원 방법 |
WO2010096119A1 (en) * | 2008-10-29 | 2010-08-26 | Adapteva Incorporated | Variable instruction width digital signal processor |
US8103803B2 (en) * | 2008-11-21 | 2012-01-24 | Nvidia Corporation | Communication between a processor and a controller |
US8610732B2 (en) * | 2008-12-11 | 2013-12-17 | Nvidia Corporation | System and method for video memory usage for general system application |
US8677074B2 (en) * | 2008-12-15 | 2014-03-18 | Nvidia Corporation | Shared memory access techniques |
US8127115B2 (en) * | 2009-04-03 | 2012-02-28 | International Business Machines Corporation | Group formation with multiple taken branches per group |
US20110029761A1 (en) * | 2009-08-03 | 2011-02-03 | Chih-Ta Star Sung | Method and apparatus of reducing CPU chip size |
US9678754B2 (en) * | 2010-03-03 | 2017-06-13 | Qualcomm Incorporated | System and method of processing hierarchical very long instruction packets |
US8453127B2 (en) | 2010-09-20 | 2013-05-28 | Sap Ag | Systems and methods providing a token synchronization gateway for a graph-based business process model |
US9137336B1 (en) * | 2011-06-30 | 2015-09-15 | Emc Corporation | Data compression techniques |
US20140115304A1 (en) * | 2012-10-18 | 2014-04-24 | Synopsys, Inc. | Compressed instruction code storage |
US9361097B2 (en) * | 2013-10-18 | 2016-06-07 | Via Technologies, Inc. | Selectively compressed microcode |
KR102179385B1 (ko) * | 2013-11-29 | 2020-11-16 | 삼성전자주식회사 | 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체 |
US9792098B2 (en) * | 2015-03-25 | 2017-10-17 | International Business Machines Corporation | Unaligned instruction relocation |
GB2556886B (en) | 2016-11-23 | 2019-05-15 | Imagination Tech Ltd | Encoding and decoding variable length instructions |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5057837A (en) * | 1987-04-20 | 1991-10-15 | Digital Equipment Corporation | Instruction storage method with a compressed format using a mask word |
US5197135A (en) * | 1990-06-26 | 1993-03-23 | International Business Machines Corporation | Memory management for scalable compound instruction set machines with in-memory compounding |
DE69424370T2 (de) * | 1993-11-05 | 2001-02-15 | Intergraph Corp | Befehlscachespeicher mit Kreuzschienenschalter |
WO1997043710A2 (en) * | 1996-05-15 | 1997-11-20 | Philips Electronics N.V. | Vliw processor which processes compressed instruction format |
JPH1011289A (ja) * | 1996-06-19 | 1998-01-16 | Mitsubishi Electric Corp | 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ |
-
1997
- 1997-02-28 US US08/808,735 patent/US5819058A/en not_active Expired - Lifetime
-
1998
- 1998-02-27 KR KR1019997007883A patent/KR100567937B1/ko not_active IP Right Cessation
- 1998-02-27 AU AU66748/98A patent/AU6674898A/en not_active Abandoned
- 1998-02-27 EP EP98908805A patent/EP1008037A4/en not_active Withdrawn
- 1998-02-27 JP JP53792098A patent/JP3833269B2/ja not_active Expired - Fee Related
- 1998-02-27 WO PCT/US1998/003954 patent/WO1998038791A2/en active IP Right Grant
- 1998-02-27 CA CA002282409A patent/CA2282409C/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1008037A2 (en) | 2000-06-14 |
EP1008037A4 (en) | 2003-04-16 |
US5819058A (en) | 1998-10-06 |
KR100567937B1 (ko) | 2006-04-07 |
WO1998038791A2 (en) | 1998-09-03 |
AU6674898A (en) | 1998-09-18 |
CA2282409C (en) | 2009-02-10 |
JP2001515619A (ja) | 2001-09-18 |
CA2282409A1 (en) | 1998-09-03 |
KR20000075810A (ko) | 2000-12-26 |
WO1998038791A3 (en) | 1998-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3833269B2 (ja) | プロセッサのための命令圧縮、解凍のシステム及び方法 | |
JP4689621B2 (ja) | レジスタとメモリとの間でデータを移動するためのデータ処理装置および方法 | |
JP4689622B2 (ja) | レジスタとメモリとの間でデータを移動するためのデータ処理装置および方法 | |
JP2571336B2 (ja) | データ処理装置 | |
US5826054A (en) | Compressed Instruction format for use in a VLIW processor | |
US7694109B2 (en) | Data processing apparatus of high speed process using memory of low speed and low power consumption | |
JP4708761B2 (ja) | Simd処理における定数の生成 | |
EP1073950B1 (en) | Method and apparatus for performing shift operations on packed data | |
US7028286B2 (en) | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture | |
JP4584673B2 (ja) | データ処理システム内部のテーブル検索操作 | |
JP2005174297A (ja) | Simd処理における多重化操作 | |
JPH0816391A (ja) | コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 | |
JPH09106342A (ja) | 並べ換え装置 | |
JP2005174298A (ja) | “ベクトル×スカラ”演算 | |
US20200394038A1 (en) | Look up table with data element promotion | |
US5852741A (en) | VLIW processor which processes compressed instruction format | |
WO2000033180A2 (en) | An instruction fetch unit aligner | |
JPH1153187A (ja) | プロセッサ | |
JP2005174301A (ja) | レジスタとメモリとの間でデータを移動するためのデータ処理装置及び方法 | |
JP2005174292A (ja) | データシフト操作 | |
EP1003094A2 (en) | Central processing unit having a data extension instruction | |
JP3750821B2 (ja) | 圧縮された命令フォーマットを処理するvliwプロセッサ | |
CN106610817B (zh) | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 | |
JP2002529847A (ja) | ビットfifoを有するディジタル信号プロセッサ | |
US4337510A (en) | Read control system for a control storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050228 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060131 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060427 |
|
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: 20060620 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060719 |
|
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: 20100728 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110728 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110728 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: 20110728 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120728 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130728 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |