JP2006500658A - プログラムを動的に圧縮解除するための装置および方法 - Google Patents
プログラムを動的に圧縮解除するための装置および方法 Download PDFInfo
- Publication number
- JP2006500658A JP2006500658A JP2004538156A JP2004538156A JP2006500658A JP 2006500658 A JP2006500658 A JP 2006500658A JP 2004538156 A JP2004538156 A JP 2004538156A JP 2004538156 A JP2004538156 A JP 2004538156A JP 2006500658 A JP2006500658 A JP 2006500658A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- value
- bits
- dyprode
- input
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims description 29
- 238000012545 processing Methods 0.000 claims description 11
- 230000008014 freezing Effects 0.000 claims description 3
- 238000007710 freezing Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 11
- 230000007423 decrease Effects 0.000 abstract 1
- 230000006835 compression Effects 0.000 description 16
- 238000007906 compression Methods 0.000 description 16
- 230000006837 decompression Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
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)
- Microcomputers (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
実行のためにプロセッサに後に送出されるプログラム語を圧縮解除するためのシステム。プログラム語のフィールドは、演算とオペランドとの間の規則性に基づいて圧縮される。結果的に得られたマイクロコードは、プログラムメモリに格納され、動的プログラム圧縮解除装置、すなわちdyprode(20)に与えられる(28)。dyprode(20)は、レジスタ(32,34,36,38,44)およびマルチプレクサ(40,42)を用いて組立てられ、クロック(24)、リセット信号(22)、およびマイクロコード(26)によって駆動される。dyprode(20)は、各サイクルにおいて、プログラム語の圧縮されていないフィールド(30)を生じる。リアセンブルされたプログラム語は次に、プロセッサに渡される。dyprodeシステムは、必要とされるプログラムメモリを減らし、オフチップのプログラムメモリにマイクロプロセッサを接続するのに必要とされるバスのサイズを縮小し、CMOSプロセッサの設計における消費電力を減らす。なぜなら、未使用のサイクル中においてレジスタファイル内のトグル率が低下するためである。dyprodeは、最後の有用な演算中に割当てられた値に、制御および読出アドレスをフリーズする。
Description
発明の分野
この発明は、プログラム語、特に超長命令語(VLIW)プロセッサ用のプログラム語の圧縮および圧縮解除に関する。
この発明は、プログラム語、特に超長命令語(VLIW)プロセッサ用のプログラム語の圧縮および圧縮解除に関する。
発明の背景
或る一定のタスク、たとえばゲームエンジン、グラフィックレンダリングシステム、複合システムシミュレータ、マルチメディア、およびリアルタイムのデジタル信号処理には高性能の処理が必要とされているため、大量のデータを迅速に処理することのできる高速プロセッサが求められている。一度に2つ以上の命令を実行することのできるスーパースカラプロセッサは、高性能の装置に必要な構成要素となっている。従来のマイクロプロセッサの設計、たとえば複雑命令セットコンピューティング(CISC)および限定命令セットコンピューティング(RISC)を用いていくつかの命令を同時に実行することができるが、このことは、極めて高価であることが考えられる複雑な制御回路を必要とする。
或る一定のタスク、たとえばゲームエンジン、グラフィックレンダリングシステム、複合システムシミュレータ、マルチメディア、およびリアルタイムのデジタル信号処理には高性能の処理が必要とされているため、大量のデータを迅速に処理することのできる高速プロセッサが求められている。一度に2つ以上の命令を実行することのできるスーパースカラプロセッサは、高性能の装置に必要な構成要素となっている。従来のマイクロプロセッサの設計、たとえば複雑命令セットコンピューティング(CISC)および限定命令セットコンピューティング(RISC)を用いていくつかの命令を同時に実行することができるが、このことは、極めて高価であることが考えられる複雑な制御回路を必要とする。
VLIWプロセッサは、クロックサイクルごとに、複数の個々の機能ユニットに対する複数の個々の命令を処理することができる。VLIWプロセッサは、CISCチップおよびRISCチップよりも単純な設計を有する。VLIWチップは、CISCチップまたはRISCチップに比べて費用がかからず、消費電力が少なく、高い性能を達成することが可能である。しかしながら、VLIWチップの設計が先行のチップの設計よりも単純であるにもかかわらず、VLIWチップを効率よく作動させることのできるコードを作成およびコンパイルすることが困難であり得るのが欠点である。VLIWプロセッサ用の命令語が、いくつかの命令に対するコードであることから、VLIWプロセッサ用の命令語は、数百ビットの長さに至る極めて長いものとなり、格納用の大量のプログラムメモリに加え、オフチップメモリからプロセッサに命令語を転送することのできる大きなバスをも必要とする。装置の物理的な寸法が、その装置内で用いられ得るプロセッサ、バス、およびメモリのサイズを制限する一層小型の手持ち式装置において、このことは特に問題となる。
ミラー(Miller)他への米国特許第5,819,058号「プロセッサのための、命令の圧縮および圧縮解除のシステムおよび方法(Instruction Compression and Decompression System and Method for a Processor)」は、VLIWプロセッサに超長命令語を格納するのに必要とされるメモリの量を減らすためのシステムおよび方法を記載している。VLIWは多数の態様で圧縮される。これらの態様には、デフォルト命令を短縮すること、命令の実行に必要とされないビットを圧縮すること、および、実行時に展開される長い命令に短いコードを割当てることが含まれる。
ハムパプラム(Hampapuram)他への米国特許第5,878,267号「VLIWプロセッサで用いるための圧縮された命令フォーマットおよびこのような命令を処理するためのプロセッサ(Compressed Instruction Format for Use in a VLIW Processor and Processor for Processing Such Instructions)」は、メモリに格納され、その後、キャッシュから読出された後に「その場で」圧縮解除されるVLIW命令を圧縮するソフトウェアを記載している。各命令は、いくつかの演算を含む。各演算は、その特定の演算に対する圧縮方式に従って圧縮され、この圧縮方式は、圧縮された演算長を各演算に割当てる。圧縮は、演算の少なくとも1つの特徴に依存する。分岐ターゲットは圧縮されていない。
この発明の目的は、VLIWアーキテクチャに対するプログラムメモリのサイズを最小化するための装置および方法を提供することである。
この発明の別の目的は、VLIWアーキテクチャのプログラムのバスサイズを縮小することである。
この発明のさらに別の目的は、CMOSプロセッサの設計において消費電力を減らすことである。
発明の概要
これらの目的は、動的にプログラムを圧縮解除するための装置および方法によって達成される。プログラムは、各アセンブラ命令に対応する、時系列のシーケンスのマイクロコードから、水平型VLIWマイクロコードに変換される。(説明のために、VLIWアーキテクチャが主に論じられているが、このことは、開示される装置およびシステムの適用例がVLIWアーキテクチャに限定されることを意味するものではない。この装置および方法は、情報の一般的なフローを圧縮解除することもできる。)次に、水平型VLIWマイクロコードは、ビットシーケンスに圧縮され、このビットシーケンスはプログラムメモリに格納される。
これらの目的は、動的にプログラムを圧縮解除するための装置および方法によって達成される。プログラムは、各アセンブラ命令に対応する、時系列のシーケンスのマイクロコードから、水平型VLIWマイクロコードに変換される。(説明のために、VLIWアーキテクチャが主に論じられているが、このことは、開示される装置およびシステムの適用例がVLIWアーキテクチャに限定されることを意味するものではない。この装置および方法は、情報の一般的なフローを圧縮解除することもできる。)次に、水平型VLIWマイクロコードは、ビットシーケンスに圧縮され、このビットシーケンスはプログラムメモリに格納される。
ビットシーケンスを生じる圧縮アルゴリズムは、水平型VLIWマイクロコードの各フィールドに経時的に割当てられた値のシーケンスに生じる規則性を利用する。各サイクルにおいて実行されるべき演算およびオペランドの空間内の軌跡を示すことができる。この軌跡を経時的に考慮した場合、1つの命令を指定するのに必要とされる情報は、たとえば、命令自体を表現せずに起点および増分の観点で軌跡を記述することにより、所定のサイクルにおいてプロセッサに発行されるべき1組のオペランド(および/またはオペコード)と、以前のサイクルにおいて発行されたオペランド(および/またはオペコード)との関係を指定することによって減らすことができる。
次に、結果的に得られたビットシーケンスは、動的なプログラム圧縮解除装置、すなわちdyprodeに与えられる。これらの装置の各々には、1ビットまたは2ビットのマイクロコードの連続ストリーム、すなわち、プログラムの軌跡の主な特徴を記述するビットシーケンスが与えられる。dyprodeは、レジスタおよびマルチプレクサを用いて組立てられており、クロック、リセット信号、およびマイクロコードにより駆動され、内部メモリまたは外部メモリからのマイクロコードと、適切であれば内部メモリまたは外部メモリからの入力とを用いて、プログラム語の圧縮されていないフィールドを生じる。圧縮されていないプログラム語の全体は、一連のdyprodeを用いることによって再構築され得、実行のためにプロセッサに渡され得る。
dyprodeシステムを用いることにより、プログラムメモリのサイズを大いに減らすことができるだけでなく、オフチップのプログラムメモリに接続されるバスのサイズを縮小することもできる。CMOSプロセッサの設計における消費電力もまた減少する。なぜなら、プロセッサ装置が使用されないサイクル中において、dyprodeが、有用な最後の演算中に割当てられた値に制御および読出アドレスをフリーズする際に、プロセッサのレジスタファイルおよびプロセッサ装置内のトグル率が低下するためである。
dyprodeを変形して、プログラム語の様々な部分を圧縮解除することができる。或るdyprodeは、オペコードおよび即値の圧縮解除に最もよく適しており、また或る種のdyprodeは、レジスタファイルのアドレスを圧縮解除する。
発明を実施するための最良の態様
以下の議論は、VLIWプログラム語に焦点を絞っているが、この明細書に論じる方法およびシステムの適用例はVLIWアーキテクチャに限定されず、これらの適用例を用いて、情報の一般的なフローを圧縮および圧縮解除することができる。
以下の議論は、VLIWプログラム語に焦点を絞っているが、この明細書に論じる方法およびシステムの適用例はVLIWアーキテクチャに限定されず、これらの適用例を用いて、情報の一般的なフローを圧縮および圧縮解除することができる。
圧縮型のコンパイラが、各アセンブラ命令に対応する、時系列のシーケンスのマイクロコードを水平型VLIWマイクロコードに変換すると、VLIWプログラム語が作成される。図1Aにおいて、先行技術からのサンプルのVLIWプログラム語162および170は、命令レベル並列(Instruction Level Parallellism)を利用するのに必要とされるさまざまなオペコードおよびオペランドを伝達する多数のフィールド164、166、168、172、174、および176を含む。フィールド164、166、168、172、174、および176の数およびサイズは、実行サイクルの全体にわたって異なることが考えられるが、1つのVLIWプロセッサは、復号されるべき語の大きさにより、限られた数の復号方式を採用する。たとえば、語A162およびB170は、異なる方式を用いて復号され得る。
図1Bを参照すると、プログラム語178は、サンプル復号方式において、プロセッサに同時に発行され得る多数の独立したフィールドを含む。たとえば、これらのフィールドは、フロー制御180、8ポートレジスタファイルについてのアドレス182、2つのアドレス生成ユニットに対するオペコード184、および2つの演算子のブロックに対するオペコード186を含み得る。
この発明の好ましい実施例では、次に、水平型VLIWマイクロコードがビットシーケンスに圧縮され、このビットシーケンスがプログラムメモリに格納される。ビットシーケンスを生成する圧縮アルゴリズムは、水平型VLIWマイクロコードの各フィールドに経時的に割当てられた値のシーケンスに生じる規則性を利用する。各サイクルにおいて実行されるべき演算およびオペランドの空間内の軌跡を示すことができる。この軌跡を経時的に考慮した場合、1つの命令を指定するのに必要とされる情報は、たとえば、命令自体を表現するのではなく起点および増分の観点で軌跡を記述することにより、所定のサイクルにおいてプロセッサに発行されるオペランド(および/またはオペコード)と、以前のサイクルにおいて実行されたオペランド(および/またはオペコード)との関係を指定することによって減らすことができる。
コードをどのように圧縮することができるかについての例を以下に示す。以下のコードを考えられたい。
3つのベクトル、すなわち、Result、FirstOper、およびSecondOperを格納するのに十分な大きさのレジスタファイルを有するプロセッサに対してこのコードが実行されるものと仮定されたい。コンパイラは、レジスタR0〜R7上にFirstOperをマッピングし、R8〜R14上にSecondOperをマッピングし、R15〜R30上にResultをマッピングすることができる。コンパイラは、以下のようなアセンブラを生成することができる(imulは、レジスタを乗算するアセンブラ命令であり、結果レジスタを生成する)。
図2に示すように、Result、FirstOper、およびSecondOperについてのレジスタアドレスのダイナミックをプロットすることができる(ここで、時間は、プログラムの実行サイクルの単位で測定されており、y軸はレジスタアドレスを示す)。オペランドのアドレスの軌跡を調べることにより、オペランドのアドレス間の関係を求めることができる。このことが、この明細書で用いられる圧縮法の鍵となる。圧縮を用いない場合、各レジスタのアドレスを指定せよという1つの命令に対し、24ビットのプログラムメモリが必要とされる。しかしながら、図2に示すレジスタアドレスのダイナミックを調べることにより、個々のアドレスを格納するのではなくアドレスの軌跡に関連する値を格納することによってプログラムメモリが節約され得ることが示される。プログラムメモリは、以下に論じるように、限られた組の値において1組の記号の確率がピークに達する傾向を有するオペランドの軌跡に関連する値を格納することによっても節約され得る。
FirstOperの線を考えられたい。以下の値が格納されているものと仮定する。
1) 起点(ここでは0)
2) 最初の4つの点を連結する上向きの傾斜(ここで傾斜は2)
3) 点4および5ならびに点8および9を連結する下向きの傾斜(ここで傾斜は−4)
実際のレジスタアドレスではなく、各サイクルで用いられるべき傾斜が指定される場合、必要なプログラムメモリのビット数が減少する。また、FirstOperおよびSecondOperの傾斜が同じサイクルにおいて変化していることにも注目されたい。同じ演算子に関連付けられたオペランドの軌跡のこのような同時変化は、極めて一般的なものである。このパターンにより、より一層多くのプログラムメモリの節約が可能になる。なぜなら、圧縮されるべき1つのパケットが、1)FirstOperおよびSecondOperのアドレスを指定する16ビットか、2)3つのオペランド、すなわち、FirstOper、SecondOper、およびResultのすべてに関連付けられた24ビットか、または、3)演算中のマイクロコードおよび3つのオペランドに関連付けられた24ビット、を表現することができるためである。
2) 最初の4つの点を連結する上向きの傾斜(ここで傾斜は2)
3) 点4および5ならびに点8および9を連結する下向きの傾斜(ここで傾斜は−4)
実際のレジスタアドレスではなく、各サイクルで用いられるべき傾斜が指定される場合、必要なプログラムメモリのビット数が減少する。また、FirstOperおよびSecondOperの傾斜が同じサイクルにおいて変化していることにも注目されたい。同じ演算子に関連付けられたオペランドの軌跡のこのような同時変化は、極めて一般的なものである。このパターンにより、より一層多くのプログラムメモリの節約が可能になる。なぜなら、圧縮されるべき1つのパケットが、1)FirstOperおよびSecondOperのアドレスを指定する16ビットか、2)3つのオペランド、すなわち、FirstOper、SecondOper、およびResultのすべてに関連付けられた24ビットか、または、3)演算中のマイクロコードおよび3つのオペランドに関連付けられた24ビット、を表現することができるためである。
動的圧縮解除装置、すなわちdyprodeは、演算子とオペランドとの間のこの関係を用いて、上で論じたビットシーケンスからプログラム語のフィールドを生成する。dyprodeの構造は、圧縮されていないプログラム語を生成するために、すべてのオペランドに関連付けられた全24ビットを各サイクル中に格納することを要求しない。その代わりに、以下に示すように、24ビットは、dyprodeに格納された情報から各サイクルごとに再生成され得る。
図3において、dyprode14は、圧縮解除システムの一部を形成するオンチップデバイスである。dyprode14は、オンチップまたはオフチップのプログラムメモリ18から機構16を介して命令および値を受取る。機構16は、メモリ18から圧縮された語をフェッチして、圧縮解除のために、その語のフィールドを適切なdyprode14に送出する。一実施例におけるこの機構16は、圧縮解除を可能にするためのステートマシンと、格納された語をメモリからフェッチして、それらの語を適切な数のビットだけシフトして、圧縮のために、その語のフィールドを適切なdyprodeに分配するシフトユニットとを含み得る。4つのdyprode14がここに表示されているが、他の実施例では任意の数のdyprode14を用いることができる。
図4に関し、この発明の一実施例で用いられる、圧縮されたVLIW語154は、8ビットのスーパーヘッダ156と、16ビットのフィールドヘッダ158と、7つの16ビットのフィールドおよび1つの8ビットのフィールドを有するフィールド160とを有する。スーパーヘッダ156のビットは、圧縮された語の構造を圧縮解除機構に伝えるか、または、ジャンプ命令もしくはプロシージャ呼出が生じたときに再アライメントを実施する。フィールドヘッダ158は、8対のビットを含み、それらの各々は、対応するdyprode装置に対する演算コード(store、default、same、およびswap)である(圧縮解除システムにおいて8つのdyprodeが存在するものと仮定されたい)。残りのフィールド160は、それらの演算コードが値の「store」を取る際にdyprodeにより読出されるべき16ビット値および8ビット値である。圧縮された語154に存在するフィールド160の数は、値のstoreを取る演算コードの数により、サイクルごとに決定される。他の実施例において、フィールドヘッダ158は、各サイクルに存在しないことが考えられる(たとえば、圧縮された語のすべてのフィールドが存在する場合であり、この場合、スーパーヘッダは、dyprodeに対する演算コードとして用いられる(以下の表1を参照)。たとえば、「All Store」のコードは、圧縮解除器に対し、圧縮された語のすべてのフィールドが存在していることと、フィールドヘッダ158が必要ではないこととを伝える。しかしながら、
演算コードが「Mixed」である場合、フィールドヘッダ158は必要である。)。加えて、他の実施例では、個々のフィールドのすべてが必ずしも存在しないことが考えられる。この実施例において、圧縮解除されたVLIW語は、長さが120ビットである。
演算コードが「Mixed」である場合、フィールドヘッダ158は必要である。)。加えて、他の実施例では、個々のフィールドのすべてが必ずしも存在しないことが考えられる。この実施例において、圧縮解除されたVLIW語は、長さが120ビットである。
表1は、スーパーヘッダ156のビットの、考え得る配列をまとめたものである。
表2は、フィールドヘッダ158に含まれ得る、dyprode装置に対する演算コードの意味をまとめたものである。これらの演算コードの完全な記述内容を以下の表4に提示する。
傾斜dyprode20(「Dyprode1」)を図5に示す。Dyprode1 20は、リセット信号22、クロック24、および2ビットのマイクロコードの連続ストリームによって駆動される。この傾斜dyprode20は、3つのNビットレジスタ、すなわち、previous_value32、same_slope34、およびswap_slope36を特徴とする。2つのNビットの定数、すなわち、previous_reset44およびslope_reset38が存在する。Dyprode1 20はまた、Nビットの入力を有する4つのマルチプレクサ(「mux」)40と、4つのNビットの入力を有する1つのマルチプレクサ42とを含む。また、1つのNビット加算器46(モジュール2N、キャリーアウトが無視される)、または1組の接続していない加算器(たとえば、2つのN/2ビット加算器か、もしくは3つのN/3ビット加算器)も存在する。Dyprode1 20は、Nビットイン28(Nは特定の実現例により一定にされる)を有し、各サイクルにおいてNビットアウト30を生成する。この実施例において、Nビットイン28の更新は、このような更新が、2ビットのマイクロコードであるコマンドの「store」により要求されたときにのみ、(内部または外部の)メモリまたは環境から行なわれる。
上述のように、2ビットのマイクロコードは、水平型VLIWマイクロコードをビットシーケンスに圧縮することから生じる。以下の表3に、この種のdyprodeに関する、このマイクロコードのニーモニック値および2進値を示す。
この傾斜dyprode20がリセット信号22を受取る場合、CONSTANTprevious_resetの値がprevious_valueレジスタ32内にロードされ、CONSTANTreset_slope38の値がsame_slopeレジスタ34およびswap_slopeレジスタ36内にロードされる。リセット信号22が存在しない場合、Dyprode1 20は、マイクロコード26により制御される。リセット信号22およびマイクロコード信号26(default48、same50、store52、swap54、およびreset56)についてのデータ経路も図5に示す。以下の表4は、マイクロコード26の挙動をまとめたものである。
上の表4aから認識できるように、マイクロコードが「default」48であると、previous_value32がNビットアウトを決定する。「default」48のマイクロコードを用いることにより、乗算器または加算器等のプロセッサ装置がクロックサイクル中に用いられていないときに、CMOS設計のプロセッサにおけるトグル率の低下を可能にする。たとえば、4ポート読出および2ポート書込のレジスタファイルにより入力を受ける乗算器および加算器を有するシステムにおいて、1つのサイクルにおいて加算器が用いられない場合、加算器についてのファイルアドレスおよび演算上のオペコードを生成するdyprodeが「default」48のマイクロコードを実行すると、以下の段階が踏まれる。1)最後の有用なアドレスに、プロセッサのレジスタファイルをフリーズする(このことは、加算器に接続されたプロセッサのレジスタファイルの出力ポートに関連付けられた傾斜dyprodeにより行なわれ得る)。2)最後に実行されたマイクロコードに、加算器に対する制御をフリー
ズする(このことは、加算器に関連付けられた値dyprodeにより行なわれ得る)。3)加算の結果が書込まれることになっている、プロセッサのレジスタファイルの書込ポートに書込不能を生成する。最後の有用な演算中に割当てられた値に対し、制御および読出アドレスをフリーズするためのこれらのステップにより、プロセッサのレジスタファイル内および装置自体の内部におけるトグル率が低下する。
ズする(このことは、加算器に関連付けられた値dyprodeにより行なわれ得る)。3)加算の結果が書込まれることになっている、プロセッサのレジスタファイルの書込ポートに書込不能を生成する。最後の有用な演算中に割当てられた値に対し、制御および読出アドレスをフリーズするためのこれらのステップにより、プロセッサのレジスタファイル内および装置自体の内部におけるトグル率が低下する。
傾斜dyprode20の興味深い変形例は、デフォルト作動コードを実行する際に、previous_reset44の値を出力することができる。その利点は、プロセッサ全体の設計における圧縮解除システムの実施例が、より単純である(かつ、より侵入的ではない)ことであり、その欠点は、得られるトグル率の低下がより少ないことである。
傾斜dyprode20の別の興味深い変形例は、入力にsoftware_reset xxx信号を加えることによって得られる。この信号は、dyprode内のすべてのレジスタがリセット値を取らなければならない分岐を実行する際に、実行時における待ち時間を短縮することができる。実際には、コンパイル時において、条件付き分岐が実行されるか否かを確認することはほぼ不可能である。したがって、分岐ターゲット(LABELS)に対応するサイクルの実行に対し、リセットが発行されるべきである。このことは、dyprodeの内部レジスタの従来のリセットを実行するのに必要とされる待ち時間サイクルを生じる。software_reset信号を加えることにより、その待合せコードの挿入を回避することができる。表4bは、これらの変形例を示す。
以下の表5は、この発明の圧縮/圧縮解除の手法を用いてプログラムメモリがどのように節約されるかを示す。以下の例では、アセンブラコードの圧縮の結果を示す。ここでは、Resultのフィールドが、FirstOperおよびSecondOperのフィールドとは別に圧縮される。これらの圧縮されたフィールドの各々は、別個の傾斜dyprodeに与えられ、この場合、別個の傾斜dyprodeは、resultフィールドを圧縮解除するための8ビットの傾斜dyprodeと、FirstOperおよびSecondOperのフィールドを圧縮するための16ビットのdyprodeとである。16ビットのdyprodeにおいて、加算器は、2つの接続していない8ビット加算器に分割される。「その他」は、デフォルトマイクロコードに関連付けられた、乗算器を用いない任意のアセンブラ演算を示す。0×FAFE値は、stepbeyondに必要な負の傾斜、たとえばR6からR0およびR11からR9に対応する−6および−2のモジュロ8ビット減算を生じるのに必要である。
圧縮が用いられない場合、ここに列挙した21個のサイクルに対する命令についてのレジスタアドレスを格納するために、全部で504個のビットが必要となる(21サイクル*24ビット/サイクル=504ビット)。FirstOperおよびSecondOperのフィールドと、 Resultのフィールドとを圧縮することにより、3.4の圧縮率(504ビット/148ビット)を目指して16ビットのdyprodeが8ビットのdyprodeと組合せられると、148個のビットのみが必要となる。
3つの8ビット加算器を含む1つの24ビットdyprodeによって3つのすべてのレジスタフィールドが圧縮解除される場合、より高い圧縮率を達成することができる。以下の表6は、この手法を用いた結果を示す。
24ビットの傾斜dyprodeが用いられると、レジスタアドレスを格納するために114個のビットのみが必要となる。ここで、圧縮率は4.4である(504ビット/114ビット)。
別の種類のdyprodeである、値dyprodeは、各々が限られた数の値で構成されるサブセットにおいて、1組の記号の確率が経時的にピークに達する傾向を有するときに用いることができる。たとえば、プログラムセクションが、限定された組の演算マイクロコードの頻繁な使用をローカルに表示した場合、適切に設計された値dyprodeは、CMOS設計においてプログラムメモリの使用量と消費電力とを減らすことができる。なぜなら、値dyprodeが、最後の有用なマイクロコードに未使用の装置の制御をフリーズすることができるためである。値dyprodeは、デフォルトサイクル中に、書込不能信号を生成し、上述のようにプロセッサ内のトグル率を低下させる。
図6を参照すると、値dyprode64(「Dyprode2」)は、クロック60と、リセット信
号58と、2ビットマイクロコード62とによって駆動される。Dyprode2 64は、2つのNビットレジスタ、すなわちswap_value70およびsame_value72と、1つのNビットCONSTANT reset_value66とを特徴とする。この値dyprode64はまた、4つのNビット入力を有する3つのマルチプレクサ68も特徴とする。Dyprode2 64は、各サイクル中に、Nビットの出力76を生成する。
号58と、2ビットマイクロコード62とによって駆動される。Dyprode2 64は、2つのNビットレジスタ、すなわちswap_value70およびsame_value72と、1つのNビットCONSTANT reset_value66とを特徴とする。この値dyprode64はまた、4つのNビット入力を有する3つのマルチプレクサ68も特徴とする。Dyprode2 64は、各サイクル中に、Nビットの出力76を生成する。
以下の表7に、Dyprode2 64を制御するマイクロコードのコマンド62をまとめる。
上の図5で論じたDyprode1におけるように、図6に示すDyprode2 64に対するNビットインの値74は、マイクロコードのコマンドが「store」でない限り重要ではない。マイクロコードのコマンド(default78、same80、store82、およびswap84)ならびにリセット信号86に対するデータ経路も図6に示す。
Dyprode1におけるように、Dyprode2 64の興味深い変形例は、デフォルト作動コードを実行する際に、reset_value66の値を出力することができる。ここでもまた、その利点は、プロセッサ全体の設計における圧縮解除システムの実施例が、より単純である(かつ、より侵入的ではない)ことであり、その欠点は、得られるトグル率の低下が少ないことである。Dyprode1におけるように、値dyprode64の別の興味深い変形例は、分岐の実行における待ち時間を短縮するために、入力にsoftware_reset xxx信号を加えることによって得られる。
図5および図6において、傾斜dyprodeおよび値dyprodeが、上述の2ビットのマイクロコードにより駆動されることに加え、dyprodeは、1つのビットコードによって制御され得る。図7を参照すると、傾斜dyprode88(「Dyprode3」)は、リセット信号90と、クロック92と、1ビットマイクロコード94とによって駆動される。Dyprode3 88は、2つのNビット入力の3つのマルチプレクサと、3つのNビット入力の1つのマルチプレクサと、1つのNビット加算器116とを特徴とする(他の実施例において、加算器116は、接続していないNビットのサブグループ、たとえば2つのN/2ビット加算器に作用する1組の加算器であり得る)。CONSTANT reset106と、2つのNビットレジスタ、すなわちprevious_value112およびsame_slope114とが存在する。Dyprode3 88は、各サイクルにおいてNビットの出力104を生成する。
以下の表8に、Dyprode3を制御するマイクロコードのコマンド94をまとめる。
マイクロコードのコマンドが「store」でない限り、図7に示すDyprode3に対するNビットインの値102は重要ではない。マイクロコードのコマンド(same96およびstore98)ならびにリセット信号100に対するデータ経路も示される。
図7において、値dyprode118(「Dyprode4」)は、クロック120および1ビットマイクロコード122とによって駆動される。Dyprode4 118は、2つのNビットマルチプレクサ128と、1つのNビットレジスタsame_value130とを特徴とする。このdyprode118は、各サイクルにおいてNビットの出力134を生成する。
以下の表9に、マイクロコードのコマンド122をまとめる。
マイクロコードのコマンドが「store」でない限り、図8に示すDyprode4に対するNビットインの値132は重要ではない。マイクロコードのコマンド(same124およびstore126)に対するデータ経路も示される。
図9を参照すると、dyprodeを用いてプログラム語を圧縮および圧縮解除するためのこの発明の手法が要約される。まず、時系列のシーケンスのマイクロコードが、水平型マイクロコードまたはプログラム語に圧縮される(ブロック146)。次に、この水平型マイクロコードが1ビットまたは2ビットのシーケンスのマイクロコードに圧縮される(ブロック148)。マイクロコードのこの圧縮されたシーケンスは次に、プログラムメモリに格納される(ブロック150)。次に、このビットシーケンスおよび必要とされる任意の値が適切なdyprodeに与えられて、プログラム語のフィールドを圧縮解除し、圧縮されていないプログラム語をリアセンブルする(ブロック152)。次に、リアセンブルされたこのプログラム語をプロセッサに送出して実行する(ブロック154)。
Claims (34)
- 実行のためにプロセッサに送出されるべき圧縮されていないプログラム語の少なくとも1つのフィールドを生成するためにデータストリームを圧縮解除するための装置であって、
a) Nビットの第1の値を格納するための少なくとも1つのレジスタと、
b) 第1の入力を受取るための第1の手段とを含み、前記第1の入力は、Nビットの第2の値であり、前記装置はさらに、
c) 第2の入力を受取るための第2の手段を含み、前記第2の入力は、Nビットの第1の値および第2の値をどのように処理すべきかについての命令を表わすマイクロコードであり、前記装置はさらに、
d) Nビットの第1の値および第2の値を多重化するための複数のマルチプレクサを含み、複数のマルチプレクサの1つはNビットの出力を生成し、前記出力は、実行のためにプロセッサに送出されるべき圧縮解除されたプログラム語の少なくとも1つのフィールドであり、前記プロセッサは前記装置と電気的に通信する、装置。 - Nビットの複数の値を格納するための複数のレジスタをさらに含む、請求項1に記載の装置。
- 複数のマルチプレクサは、Nビットの値を多重化するための手段を有し、前記Nビットは、
a) 複数のレジスタに格納された複数のNビット、ならびに
b) 少なくとも1つのレジスタからの少なくとも1つのNビット値およびNビットの第1の入力からなる群から選択される、請求項1に記載の装置。 - 第3の入力を受取るための第3の手段をさらに含み、前記第3の入力はリセット信号である、請求項1に記載の装置。
- 第4の入力を受取るための第4の手段をさらに含み、前記第4の入力はクロック信号である、請求項1に記載の装置。
- a) 少なくとも1つのレジスタからの少なくとも1つのNビット値、ならびに
b) 少なくとも1つのレジスタからの少なくとも1つのNビット値および第1の入力からのNビット値からなる群からのNビットの値を処理するための少なくとも1つの処理手段をさらに含む、請求項1に記載の装置。 - 少なくとも1つの処理手段は加算器である、請求項6に記載の装置。
- Nビットの値を格納するための少なくとも1つのレジスタは、Nビットの傾斜値を格納する、請求項1に記載の装置。
- Nビットの値を格納するための少なくとも1つのレジスタは、Nビットの開始値を格納する、請求項1に記載の装置。
- 第1の入力は、Nビットの傾斜値である、請求項1に記載の装置。
- 第1の入力は、Nビットのオペコードのstoreである、請求項1に記載の装置。
- 第1の入力は、Nビットの数値である、請求項1に記載の装置。
- 出力は、オペコードのstoreである、請求項1に記載の装置。
- 出力は、数値である、請求項1に記載の装置。
- 出力は、レジスタファイルのアドレスである、請求項1に記載の装置。
- 装置は、マイクロプロセッサのチップ上に配置される、請求項1に記載の装置。
- 最後の有用な演算中に割当てられた値に読出アドレスをフリーズするための手段をさらに含む、請求項1に記載の装置。
- デフォルトサイクル中に書込不能信号を生成するための手段をさらに含む、請求項1に記載の装置。
- データストリームを圧縮解除して、実行のためにプロセッサに送出されるべき圧縮されていないプログラム語の少なくとも1つのフィールドを生成するための方法であって、
a) プロセッサと電気的に通信する装置内のレジスタにNビットの第1の値を格納するステップと、
b) 装置においてNビットの第2の値の入力を受取るステップと、
c) 装置において、Nビットの第1の値および第2の値をどのように処理すべきかについての命令を表わすマイクロコードを受取るステップと、
d) 装置において、Nビットの第1の値および第2の値を処理するステップと、
e) 装置においてNビットの出力を生成するステップとを含み、前記出力は、実行のためにプロセッサに送出されるべき圧縮解除されたプログラム語の少なくとも1つのフィールドである、方法。 - リセット信号を受取るステップをさらに含む、請求項19に記載の方法。
- クロック信号を受取るステップをさらに含む、請求項19に記載の方法。
- マイクロコードは1ビットである、請求項19に記載の方法。
- マイクロコードは2ビットである、請求項19に記載の方法。
- Nビットの第2の値は、傾斜値である、請求項19に記載の方法。
- Nビットの第2の値は、オペコードのstoreである、請求項19に記載の方法。
- Nビットの第2の値は数値である、請求項19に記載の方法。
- 前記処理するステップは、Nビットの値を加えるステップを含む、請求項19に記載の方法。
- 前記処理するステップは、Nビットの値を多重化するステップを含む、請求項19に記載の方法。
- 出力は、オペコードのstoreである、請求項19に記載の方法。
- 出力は、数値である、請求項19に記載の方法。
- 出力は、レジスタファイルのアドレスである、請求項19に記載の方法。
- 前記生成するステップは、出力を生成するためにNビットの少なくとも1つの値を多重化するステップを含む、請求項21に記載の方法。
- 最後の有用な演算中に割当てられた値に読出アドレスをフリーズするステップをさらに含む、請求項19に記載の方法。
- デフォルトサイクル中に書込不能信号を生成するステップをさらに含む、請求項19に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT002003A ITMI20022003A1 (it) | 2002-09-20 | 2002-09-20 | Apparecchio e metodo per la decompressione dinamica di programmi. |
PCT/US2003/009777 WO2004027596A1 (en) | 2002-09-20 | 2003-03-31 | Apparatus and method for dynamic program decompression |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006500658A true JP2006500658A (ja) | 2006-01-05 |
Family
ID=31986030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004538156A Withdrawn JP2006500658A (ja) | 2002-09-20 | 2003-03-31 | プログラムを動的に圧縮解除するための装置および方法 |
Country Status (11)
Country | Link |
---|---|
US (1) | US6766439B2 (ja) |
EP (1) | EP1546858A4 (ja) |
JP (1) | JP2006500658A (ja) |
KR (1) | KR20050037607A (ja) |
CN (1) | CN100432923C (ja) |
AU (1) | AU2003228406A1 (ja) |
CA (1) | CA2498036A1 (ja) |
IT (1) | ITMI20022003A1 (ja) |
NO (1) | NO20051940L (ja) |
TW (1) | TWI288349B (ja) |
WO (1) | WO2004027596A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012252475A (ja) * | 2011-06-01 | 2012-12-20 | Fujitsu Ltd | プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272700B1 (en) * | 2003-12-23 | 2007-09-18 | Altera Corporation | Methods and apparatus for indirect compound VLIW execution using operand address mapping techniques |
US20060206732A1 (en) * | 2005-03-14 | 2006-09-14 | Sony Computer Entertainment Inc. | Methods and apparatus for improving processing performance using instruction dependency check depth |
WO2007075134A2 (en) * | 2005-12-27 | 2007-07-05 | Imsys Technologies Ab | Method and system for cost-efficient, high-resolution graphics/image display system |
CN101866279B (zh) * | 2009-08-14 | 2012-05-30 | 威盛电子股份有限公司 | 微处理器及其相关方法 |
WO2011041269A2 (en) * | 2009-09-30 | 2011-04-07 | Samplify Systems, Inc. | Enhanced multi-processor waveform data exchange using compression and decompression |
KR101419710B1 (ko) * | 2012-12-12 | 2014-08-13 | 어보브반도체 주식회사 | 플래시 메모리의 소모 전력 감소 방법 및 그 장치 |
US10019260B2 (en) | 2013-09-20 | 2018-07-10 | Via Alliance Semiconductor Co., Ltd | Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match |
US9330011B2 (en) | 2013-09-20 | 2016-05-03 | Via Alliance Semiconductor Co., Ltd. | Microprocessor with integrated NOP slide detector |
US9372696B2 (en) * | 2013-10-18 | 2016-06-21 | Via Technologies, Inc. | Microprocessor with compressed and uncompressed microcode memories |
CN106953643B (zh) * | 2017-04-11 | 2020-06-26 | 安庆师范大学 | 二分区间法的集成电路数据解压电路及方法 |
CN109450592A (zh) * | 2018-09-29 | 2019-03-08 | 广东雅达电子股份有限公司 | 一种通信协议重组方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175543A (en) * | 1991-09-25 | 1992-12-29 | Hewlett-Packard Company | Dictionary reset performance enhancement for data compression applications |
GB9406666D0 (en) * | 1994-04-05 | 1994-05-25 | Communicate Ltd | Computer system |
GB9412434D0 (en) * | 1994-06-21 | 1994-08-10 | Inmos Ltd | Computer instruction compression |
WO1996029646A1 (fr) * | 1995-03-17 | 1996-09-26 | Hitachi, Ltd. | Processeur |
US5729228A (en) * | 1995-07-06 | 1998-03-17 | International Business Machines Corp. | Parallel compression and decompression using a cooperative dictionary |
US5787302A (en) * | 1996-05-15 | 1998-07-28 | Philips Electronic North America Corporation | Software for producing instructions in a compressed format for a VLIW processor |
JP3750821B2 (ja) * | 1996-05-15 | 2006-03-01 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴイ | 圧縮された命令フォーマットを処理するvliwプロセッサ |
US5867681A (en) * | 1996-05-23 | 1999-02-02 | Lsi Logic Corporation | Microprocessor having register dependent immediate decompression |
US5768445A (en) * | 1996-09-13 | 1998-06-16 | Silicon Graphics, Inc. | Compression and decompression scheme performed on shared workstation memory by media coprocessor |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
US6415376B1 (en) * | 2000-06-16 | 2002-07-02 | Conexant Sytems, Inc. | Apparatus and method for issue grouping of instructions in a VLIW processor |
-
2002
- 2002-09-20 IT IT002003A patent/ITMI20022003A1/it unknown
- 2002-12-24 US US10/328,525 patent/US6766439B2/en not_active Expired - Lifetime
-
2003
- 2003-03-31 KR KR1020057004859A patent/KR20050037607A/ko not_active Application Discontinuation
- 2003-03-31 CA CA002498036A patent/CA2498036A1/en not_active Abandoned
- 2003-03-31 AU AU2003228406A patent/AU2003228406A1/en not_active Abandoned
- 2003-03-31 WO PCT/US2003/009777 patent/WO2004027596A1/en active Application Filing
- 2003-03-31 JP JP2004538156A patent/JP2006500658A/ja not_active Withdrawn
- 2003-03-31 EP EP03726155A patent/EP1546858A4/en not_active Withdrawn
- 2003-03-31 CN CNB038212668A patent/CN100432923C/zh not_active Expired - Fee Related
- 2003-04-25 TW TW092109693A patent/TWI288349B/zh active
-
2005
- 2005-04-20 NO NO20051940A patent/NO20051940L/no unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012252475A (ja) * | 2011-06-01 | 2012-12-20 | Fujitsu Ltd | プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法 |
US9619235B2 (en) | 2011-06-01 | 2017-04-11 | Fujitsu Limited | Compressing detected current and preceding instructions with the same operation code and operand patterns |
Also Published As
Publication number | Publication date |
---|---|
CN1688963A (zh) | 2005-10-26 |
US6766439B2 (en) | 2004-07-20 |
US20040059892A1 (en) | 2004-03-25 |
EP1546858A4 (en) | 2006-12-06 |
TWI288349B (en) | 2007-10-11 |
AU2003228406A1 (en) | 2004-04-08 |
NO20051940L (no) | 2005-06-20 |
CN100432923C (zh) | 2008-11-12 |
ITMI20022003A1 (it) | 2004-03-21 |
TW200405203A (en) | 2004-04-01 |
EP1546858A1 (en) | 2005-06-29 |
CA2498036A1 (en) | 2004-04-01 |
WO2004027596A1 (en) | 2004-04-01 |
KR20050037607A (ko) | 2005-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719318B2 (en) | Processor | |
JP3559046B2 (ja) | データ処理マネージメントシステム | |
JP5869125B2 (ja) | エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置 | |
US7673187B2 (en) | Data processing apparatus and method for reducing trace bandwidth | |
US7302552B2 (en) | System for processing VLIW words containing variable length instructions having embedded instruction length identifiers | |
JP2005531848A (ja) | 再構成可能なストリーミングベクトルプロセッサ | |
KR20100029179A (ko) | 데이터 압축을 위한 회로 및 그 회로를 채택한 프로세서 | |
JP2006500658A (ja) | プログラムを動的に圧縮解除するための装置および方法 | |
JP2002522821A (ja) | データプロセッサとデータ処理方法 | |
US7814302B2 (en) | Address calculation instruction within data processing systems | |
US20080244238A1 (en) | Stream processing accelerator | |
US8843730B2 (en) | Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination | |
Benini et al. | A class of code compression schemes for reducing power consumption in embedded microprocessor systems | |
US20060095746A1 (en) | Branch predictor, processor and branch prediction method | |
KR101497346B1 (ko) | 명령으로서 데이터 값을 평가하기 위한 시스템 및 방법 | |
Tomari et al. | Compressing floating-point number stream for numerical applications | |
EP4278256B1 (en) | Parallel decode instruction set computer architecture with variable-length instructions | |
Lin et al. | An efficient VLIW DSP architecture for baseband processing | |
US20080059776A1 (en) | Compression method for instruction sets | |
CN113011577A (zh) | 处理单元、处理器核、神经网络训练机及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060606 |