JP5869125B2 - エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置 - Google Patents

エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置 Download PDF

Info

Publication number
JP5869125B2
JP5869125B2 JP2014523111A JP2014523111A JP5869125B2 JP 5869125 B2 JP5869125 B2 JP 5869125B2 JP 2014523111 A JP2014523111 A JP 2014523111A JP 2014523111 A JP2014523111 A JP 2014523111A JP 5869125 B2 JP5869125 B2 JP 5869125B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
layout
compressed
nop
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
Application number
JP2014523111A
Other languages
English (en)
Other versions
JP2014524097A (ja
Inventor
セルゲイ・ラリン
ルシアン・コドレスク
アンシュマン・ダス・グプタ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2014524097A publication Critical patent/JP2014524097A/ja
Application granted granted Critical
Publication of JP5869125B2 publication Critical patent/JP5869125B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Description

関連出願の相互参照
「Methods and Apparatus for Storage and Translation of Entropy Encoded Software Embedded within a Memory Hierarchy」という名称の2011年3月3日出願の米国特許出願第13/099,463号は、譲受人が本出願と同じであり、関連出願であり、その全体が参照により本明細書に組み込まれている。
本発明は、一般に、埋込みアプリケーションにおいてコード密度を改善するために圧縮命令セットを有するプロセッサに関し、より詳細には、命令シーケンスの圧縮表現を生成し、この圧縮命令シーケンスを記憶し、その圧縮命令シーケンスを実行可能な機械コード化プログラム命令に変換するための技法に関する。
携帯電話、ラップトップコンピュータ、個人デジタルアシスタント(PDA)などの多くの携帯型の製品は、通信およびマルチメディアのアプリケーションをサポートするプログラムを実行するプロセッサを使用することを必要とする。そのような製品に対する処理システムは、1つまたは複数のプロセッサを含み、各プロセッサは、命令、入力されたオペランド、および実行結果に対する記憶装置を有する。たとえば、プロセッサに対する命令、入力されたオペランド、および実行結果は、汎用レジスタファイル、多重レベル命令キャッシュ、データキャッシュ、およびシステムメモリからなる階層的メモリサブシステム内に記憶することができる。
高いコード密度を提供するために、32ビット命令形式の部分集合である16ビット命令形式など、2つの命令形式を有するネイティブ命令セットアーキテクチャ(ISA)を使用することができる。多くの場合、取り出された16ビットの命令は、復号プロセス前または復号プロセス中にプロセッサによって32ビットの命令に変形され、それによって、実行ハードウェアは、32ビット命令形式のみに対応するように設計することが可能になる。32ビットの命令の部分集合である16ビットの命令を使用することで、16ビット形式に符号化できる情報の量を制限する制約が課される。たとえば、16ビット命令形式は、指定できるアドレス指定可能なソースオペランドレジスタおよび宛先レジスタの数を制限することができる。たとえば、16ビット命令形式は、3ビットまたは4ビットのレジスタファイルアドレスフィールドを使用することができ、一方32ビットの命令は、5ビットのフィールドを使用することができる。また、2つの形式がプログラム内で混在している場合、一部には、16ビットの命令と32ビットの命令に分岐するなど、命令が制約に対応するため、プロセッサパイプラインの複雑性が増大することがある。また、コード圧縮に対する要件はプログラムごとに変動するため、異なるプログラムによって使用される場合、1つのプログラムに対して固定の16ビット命令形式を選択することはより不利になる。この点において、既存のプロセッサに対するレガシーコードでは、2つの命令形式を有効に利用してコード密度を著しく改善し、リアルタイムの要件を満たすことができない可能性がある。上記および他の制約により、標準的な寸法の命令内で使用されるフィールドの部分集合であるフィールドを有する低減された寸法の命令の有効性が制限される。
本発明のいくつかの態様の中でも、本発明の実施形態は、プログラム命令シーケンスを圧縮し、この圧縮シーケンスを記憶し、その圧縮シーケンスを実行可能な命令シーケンスに変換することによって、コード密度を改善する必要に対処する。本明細書で対処する技法により、埋込みソフトウェアに対する記憶装置および伝送路の非常に効率的な利用が可能になる。
その目的のため、本発明の一実施形態は、プログラム命令シーケンスを圧縮する方法を利用する。パラメータを満たす2つ以上の命令のシーケンスが識別される。識別された2つ以上の命令のシーケンスは、選択されたタイプのレイアウト命令に置き換えられる。この選択されたタイプのレイアウト命令は、1対のX指標とY指標の圧縮値に圧縮される。
本発明の別の実施形態は、命令シーケンスを表す圧縮値を圧縮解除するための方法に対処する。X指標およびY指標に、圧縮値としてともにアクセスする。圧縮値は、選択されたタイプのレイアウト命令に圧縮解除される。この選択されたタイプのレイアウト命令は復号され、その選択されたタイプのレイアウト命令は2つ以上の命令のシーケンスに置き換えられる。
本発明の別の実施形態は、命令シーケンスを表す圧縮値を圧縮解除する装置に対処する。記憶サブシステムが、圧縮命令を記憶するように構成され、圧縮命令は、X指標およびY指標を備える。圧縮解除器が、記憶サブシステムからアクセスされたX指標およびY指標を、選択されたタイプのレイアウト命令に変換するように構成される。復号器が、選択されたタイプのレイアウト命令を2つ以上の命令のシーケンスに置き換えるように構成される。
本発明の実施形態、ならびに本発明のさらなる特徴および利点についてのより完全な理解は、以下の詳細な説明および添付の図面から明らかになるであろう。
本発明の一実施形態を有利に用いることができる例示的なワイヤレス通信システムのブロック図である。 本発明の実施形態による効率的かつ低コストの実行時の圧縮解除向けに設計されたコード圧縮システムの図である。 本発明の一実施形態による、混合マスクに基づいてバイト重複パッドビットを有するXパターンおよびYパターンに命令を分割する命令区画プロセスの例示的な要素を示す図である。 本発明の一実施形態による、レベル2キャッシュおよびレベル1キャッシュ内に圧縮形式で記憶されたプログラムが実行のために圧縮解除される、圧縮解除器および実行システムの図である。 本発明の一実施形態による第1のアンパックVLIWパケットおよび第1の圧縮VLIWパケットを備える例示的な超長命令語(VLIW)パケット形式を示す図である。 本発明の一実施形態による第2のアンパックVLIWパケット、第2のVLIW圧縮パケット、および第3のVLIW圧縮パケットを備える例示的なVLIWパケット形式を示す図である。 本発明の一実施形態によるVLIW圧縮パケットに対応するノーオペレーション(NOP)命令と機能命令の組合せの例示的なリスティングを示す図である。 本発明の一実施形態による、頻繁に使用される命令対を備える第3の未圧縮VLIWパケットと、第4のVLIW圧縮パケットとを備える例示的なVLIWパケット形式を示す図である。 本発明の一実施形態によるプログラム命令シーケンスを短縮するためのプロセスを示す図である。 本発明の一実施形態によるプログラム命令シーケンスを表す圧縮値を復号するためのプロセスを示す図である。 本発明の一実施形態による例示的な圧縮解除状態の図である。
本発明について、本発明のいくつかの実施形態を示す添付の図面を参照して、より詳細に次に説明する。しかしながら、本発明は、様々な形で実施することができ、本明細書に記載の実施形態に限定されると解釈されるべきではない。逆に、これらの実施形態は、この開示を徹底的かつ完全なものにし、本発明の範囲を当業者に十分に伝えるために提供されるものである。
本発明の教示による動作を実施する際または実施するために動作されるコンピュータプログラムコード、すなわち「プログラムコード」は、最初に、C、C++、JAVA(登録商標)、Smalltalk、JavaScript(登録商標)、Visual Basic(登録商標)、TSQL、Perlなどの高級プログラミング言語、または様々な他のプログラミング言語で書くことができる。これらの言語の1つで書かれたソースプログラムまたはソースコードは、この高級プログラムコードを、ネイティブ命令形式で符号化された命令を使用するネイティブアセンブラプログラムに変換することによって、標的プロセッサアーキテクチャにコンパイルされる。たとえば、命令セットアーキテクチャ(ISA)に対するネイティブ命令形式は、32ビット形式もしくは16ビット形式などの固定数のビットとすることができ、または32ビット形式と16ビット形式との組合せなどの可変数のビットとすることができる。標的プロセッサアーキテクチャに対するプログラムはまた、ネイティブアセンブラ言語で直接書くこともできる。ネイティブアセンブラプログラムは、機械レベルのバイナリ命令の命令簡略記憶表現を使用する。プロセッサによって形式を理解できるオブジェクトコードなど、コンパイラまたは人間のプログラマによって作成されたプログラムコードまたはコンピュータ可読媒体を、本明細書では機械言語コードと呼ぶ。
図1は、本発明の一実施形態を有利に用いることができる例示的なワイヤレス通信システム100を示す。例示の目的で、図1は、3つの遠隔ユニット120、130、および150、ならびに2つの基地局140を示す。一般的なワイヤレス通信システムは、より多くの遠隔ユニットおよび基地局を有することができることが理解されよう。それぞれ構成要素125A、125C、125B、および125Dによって表すハードウェア構成要素、ソフトウェア構成要素、または両方を含む遠隔ユニット120、130、150および基地局140は、以下でさらに論じる本発明を実施するように適合されている。図1は、基地局140から遠隔ユニット120、130、および150への順方向リンク信号180、ならびに遠隔ユニット120、130、および150から基地局140への逆方向リンク信号190を示す。
図1では、ワイヤレスローカルループシステム内で、遠隔ユニット120をモバイル電話として示し、遠隔ユニット130を携帯型のコンピュータとして示し、遠隔ユニット150を固定位置の遠隔ユニットとして示す。例として、遠隔ユニットは、別法として、携帯電話、ページャ、ウォーキートーキー、手持ち式の個人通信システム(PCS)ユニット、個人デジタルアシスタントなどの携帯型のデータユニット、または計測機器などの固定位置データユニットとすることもできる。図1は本開示の教示による遠隔ユニットを示すが、本開示は、これらの例示的な図示のユニットに限定されるものではない。本発明の実施形態は、任意のプロセッサシステム内で適切に用いることができる。
図2は、本発明の実施形態による効率的かつ低コストの実行時の圧縮解除向けに設計されたコード圧縮のための圧縮システム200である。圧縮システム200は、コンパイルされている現在のプログラムアプリケーションを備えるソースコードおよびライブラリファイル204内に、上記のソースコードと、未圧縮形式のバイナリライブラリファイルとを含む。圧縮システム200はまた、コンパイラおよびリンカ206と、任意選択のプロファイルフィードバック情報208とを含み、これらは、ネイティブ命令セットアーキテクチャ(ISA)形式に基づくリンクされた実行可能なコード210および支援データセクション212を生成するために使用される。ネイティブISAは、固定の未圧縮形式で表され、たとえば、固定の64または32または16ビットの符号化およびそのような符号化の混合を含む様々な手法を表すことができる。ネイティブISAは、汎用向けに開発されるものであり、特定用途向けに特別に調整されるものではない。32ビットの命令の語境界など、固定語長境界を維持することによって、コード内に16ビットの命令と32ビットの命令がともに混在している場合でも、分岐、呼出し、戻りなどに対する固定語長アドレスのみに対応するアドレス指定モデルを使用することができる。
そのようなISAから選択される命令は、コードのアドレス指定能力を維持し、高速で固定待ち時間の圧縮解除時間を確保しながら、現在のアプリケーション向けに圧縮および調整することができる。そのような圧縮は、圧縮コードを線形時間で作成するように自動化することができる。ネイティブISAは、低い情報エントロピを有し、これは、本発明の一実施形態によれば、所与のソースコードおよびライブラリファイル204に対してカスタムエントロピに束縛される符号化を作成することによって増大される。本明細書で、情報エントロピとは、プログラムの現在の表現における情報コンテントの測定値として定義される。情報エントロピは、ネイティブ命令シンボルを使用するプログラムの現在の表現と、プログラムの元の機能性を保持する圧縮シンボルを使用するプログラムの可能な限り短い表現との比と見なすことができる。圧縮プログラムを作るために使用されるアルファベットの粒度は、演算システム内にて最小単位で記憶可能かつアドレス指定可能な実体として、個々のバイトレベルである。両方のプログラム表現で保持される情報コンテントは、プログラムの元の機能性である。たとえば、「1」のエントロピは、可能な限り短い表現で1つの特有の正確なプログラムを表すことができる。「1」未満のエントロピを有するプログラムは、2つ以上のプログラムに対応することができ、場合によっては極めて多数のプログラムに対応することができ、それにはメモリ内の記憶容量の増大を必要とすることを示す。
図2では、リンクされた実行可能なコード210は、変換ツール216への入力として提供され、変換ツール216は、圧縮コード218および復号テーブル220を生成する。圧縮コード218および支援データセクション212は、埋込みデバイスのハードディスク、光ディスク、フラッシュメモリ、または他のそのような記憶媒体などの記憶デバイス214内に記憶され、記憶デバイス214から、選択されたコードを実行のためにプロセッサ複合体203に提供することができる。プロセッサ複合体203は、主メモリ222、レベル2キャッシュ(L2キャッシュ)224、レベル1命令キャッシュ(L1キャッシュ)226、およびプロセッサコア228を含む。プロセッサコア228は、一実施形態による変換メモリ(TM)232を有する復号器230と、実行パイプライン234とを含む。記憶デバイス214、主メモリ222、L2キャッシュ224、およびL1キャッシュ226内に、圧縮コードが記憶される。通常、L1キャッシュ226から圧縮解除されたコードが取り出され、実行パイプライン234によって実行される。圧縮コード218を生成し、また復号器230内で圧縮命令を復号するための変換ツール216の様々な実施形態について、以下でより詳細に説明する。
プロセッサ複合体203は、L1キャッシュ226、L2キャッシュ224、および主メモリ222内に圧縮形式で記憶されているプログラムコードを実行するために、図1の構成要素125A〜125D内で適切に用いることができる。議論をわかりやすくするために、プロセッサ複合体に接続できる周辺デバイスは図示しない。プロセッサコア228は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向けプロセッサ(ASP)などにすることができる。特定用途向け集積回路(ASIC)技術、フィールドプログラマブルゲートアレイ(FPGA)技術、または他のプログラマブル論理、個別のゲートもしくはトランジスタ論理、あるいは所期の適用分野に適した任意の他の利用可能な技術を使用して、プロセッサ複合体203の様々な構成要素を実施することができる。単一のプロセッサコア228を示すが、本発明の一実施形態の圧縮命令の処理は、多重スレッド、多重コア、および超長命令語(VLIW)設計など、並行パイプラインを実施するスーパスケーラ設計および他のアーキテクチャに適用することができる。
図3は、本発明の一実施形態によって、バイナリ混合マスク(MM)304に基づいて、ネイティブISAの固定寸法命令A302を、重複パッドビット310および312を有するAxパターン306およびAyパターン308に分割する命令区画プロセスの例示的な要素300を示す。命令およびデータを少なくともバイト粒度のセグメントで表すように現代のメモリシステムによって課される要件のため、パッドビットが作成される。バイト粒度のセグメントを有する形式の使用が、記憶システムのバイト粒度要件を満たしながらビット粒度で記憶の重複を可能にする短縮表現を提供するために利用される。
ネイティブISAコードセグメントを圧縮するために、このコードセグメントは複数の命令グループに区分され、各命令グループは、単一の共有Xパターンおよび1組の一意のYパターンを与える。Axパターン306は、命令Aが属する命令グループに共通のビットパターンを表す。Ayパターン308は、ネイティブ命令A302とAxパターン306との間の差を実施するビットパターンを表す。1つのコードセグメントを1〜Nの任意の数のグループに区分することができ、ここでNはコードセグメント内のネイティブ命令の数であることに留意されたい。コードセグメントに対するXパターンは、Xメモリから構成されるXディクショナリ内に記憶され、コードセグメントに対するAyパターンは、Yメモリから構成されるYディクショナリ内に記憶される。X指標は、Xメモリ内の場所のアドレスであり、Y指標は、Yメモリ内の場所のアドレスである。これら2つの指標、XおよびYディクショナリからのパターン、ならびにバイナリ混合マスクの組合せが、ネイティブ命令を決定論的に表す。
圧縮動作314は、コードセグメントに対する少なくとも1つの混合マスク304を使用して、ネイティブ命令302からAxパターン306およびAyパターン308を選択する。以下の例では、16進法による数、すなわち16進数を、接頭語「0x」で表す。たとえば、ネイティブ命令302[0x9F6D0121]と混合マスク304[0xFF80FF80]とを組み合わせて、Axパターン306[0x9F00(8,9,A,B)]およびAyパターン308[0xDA8(4,5,6,7)]を作成する。括弧内の数、たとえば(8,9,A,B)は、重複パッドビット310の2つの「ドントケア(don't care)」状態があるので特定の4ビットの位置に対して1つの数を選択できる1組の可能な数を表す。復号器228の圧縮解除動作316は、コードセグメントに対する少なくとも1つの混合マスク、X指標取出しXメモリパターン、およびY指標取出しYメモリパターンを使用して、圧縮命令を圧縮解除する。たとえば、混合マスク304[0xFF80FF80]と、Xメモリから取り出したAxパターン306[0x9F00(8,9,A,B)]およびYメモリから取り出したAyパターン308[0xDA8(4,5,6,7)]とを組み合わせて、ネイティブ命令302[0x9F6D0121]を作成する。
上記のように、XパターンおよびYパターンは、それぞれバイトでアドレス指定可能なXメモリおよびバイトでアドレス指定可能なYメモリ内に記憶される。Xパターン、Yパターン、または両方の指標圧縮では、バイトでアドレス指定可能な場所で、複製のXパターンおよび複製のYパターンならびに重複パッドビット310および312などの重複パッドビットを削除するプロセスを使用し、したがって物理的記憶装置の2重の利用を低減させる。単一の混合マスクを用いると、すべてのXパターンが同じ数のビットになり、すべてのYパターンが同じ数のビットになる。異なる混合マスクを用いると、各ネイティブ命令に対して様々な異なるXおよびYパターンを有することが可能である。しかしながら、通常、混合マスクの少数の組合せのみが、試験される混合マスクの組合せの数に対して最小の記憶装置を要するネイティブISAコードセグメントと圧縮コードセグメントとの間のマッピングを提供する。小さい記憶容量を必要とする圧縮コードを生成する単一の混合マスクが、ほぼ最適の混合マスクである。
図4は、本発明の一実施形態による、L2キャッシュ224およびL1キャッシュ226内に圧縮形式で記憶されたプログラムを圧縮解除して実行パイプライン234内で実行するための圧縮解除器および実行システム400である。L1キャッシュ226はXY指標メモリ402を含み、XY指標メモリ402は、0x54という7ビットのX指標値と、0x134という9ビットのY指標値とを有するXYエントリ404など、アドレス指定可能な場所に、1対のX指標とY指標を記憶する。マルチプレクサ405を使用して、L1キャッシュのヒット406の場合、1つのXYエントリを選択し、またはL1キャッシュ226内がミスの場合、L2キャッシュ224からのXY値407を選択する。L1キャッシュ226とL2キャッシュ224の両方がミスの場合、マルチプレクサを使用して、経路403を介して主メモリから1つのXYエントリを選択する。圧縮解除動作は、指標Xレジスタ408、指標Yレジスタ410、Xメモリ412、Yメモリ414、単一の混合マスク(MM)レジスタ416、およびコンバイナ418を有する復号器230内で完遂される。圧縮解除命令記憶装置419が複数の未圧縮命令420を含み、未圧縮命令420は、より詳細に以下に説明する選択されたタイプのレイアウト命令を含むことができる。
プログラムのロード時または埋込みシステムのブートプロセス中に、主メモリ222に圧縮コードをロードし、Xメモリ412およびYメモリ414に、関連するXおよびYディクショナリコンテキストをロードし、単一のバイナリ混合マスクをMMレジスタ416内で設定する。XおよびYメモリコンテキストならびに混合マスクは、必要に応じて実行中にリロードできることに留意されたい。たとえば、リロードによって、元のコードを、それぞれ独自のカスタム符号化を伴う複数のセグメントに圧縮することを可能にすることができる。たとえば、スマートフォンなどのいくつかの複雑な埋込みシステムは、主アプリケーションから、コード空間を共有しない自己完結型の複数の独立した子プロセスを呼び出すことができる。そのような各アプリケーションは、X/YディクショナリおよびMMから構成された独自のカスタム符号化を有することができ、この符号化は子プロセスの起動時にロードされる。残りの説明では、圧縮解除器システム400について、図2の単一の変換メモリ232を有する復号器230を使用して説明し、任意のアプリケーションコードを含むシステム全体に対して単一の符号化を使用する。
次に、実行パイプライン234は、L1キャッシュ226からの命令の取出しを開始する。最初に、L1キャッシュへの各アクセスは、ミスの指示422を生成してL2キャッシュ224へのアクセスを引き起こすことができる。最初に、L2キャッシュ224へのアクセスはまた、ミスを生成して図2の主メモリ222へのアクセスを引き起こすことができ、主メモリ222は、L2キャッシュ224内にロードされる圧縮命令に応答し、この圧縮命令は、経路403を介してマルチプレクサ405を通って復号器230へ送られる。復号器230は、図3の圧縮解除動作316に関連して説明したように、XY指標圧縮命令を未圧縮形式に圧縮解除して、圧縮解除命令記憶装置419内に記憶し、実行パイプライン234内で実行する。動作期間後、L1キャッシュ226およびL2キャッシュ224は、定常状態に到達することができる。
プロセッサから見ると、実行パイプライン234は、取出しアドレスおよび制御信号421を用いて取出し動作を試み、L1キャッシュ226内で命令を検索する。L1キャッシュ226は、命令が存在すると判定することができる。L1キャッシュ取出し動作は、たとえば、L1キャッシュ226内のヒットであるXYエントリ404に対して行われ、それにより、XYエントリ404はマルチプレクサ405を通って復号器230へ渡される。XYエントリ404は分割され、X指標値0x54が指標Xレジスタ408内に受け取られ、Y指標値0x134が指標Yレジスタ410内に受け取られる。アドレス0x54でXメモリ412から取り出されたXパターン306は、コンバイナ418へ提供される。また、アドレス0x134でYメモリ414から取り出されたYパターン308も、コンバイナ418へ提供される。さらに、MMレジスタ416内に記憶された単一の混合マスク(MM)304[0xFF80FF80]も、コンバイナ418へ提供される。コンバイナ418は、MM304に従ってXパターン306からの適当なビットとYパターン308からの適当なビットとを組み合わせてネイティブ命令302を作成し、ネイティブ命令302は、圧縮解除命令記憶装置419内に記憶され、実行パイプライン234へ渡される。
記載のシステムでは、プログラムコンテントが暗黙の暗号化形式で記憶される。命令ストリーム上で特有の暗号化タイプのデータスクランブルが実行されない場合でも、記憶デバイス214、主メモリ222、L2キャッシュ224、およびL1キャッシュ226内に、特定用途向けの圧縮形式でプログラムコードが記憶される。符号化状態のプログラムコードの一部が、最終製品内では外部から容易にアクセスできない変換メモリ232内のプロセッサコア228内部に常駐するため、記憶装置214ならびに上部のメモリ階層222、224、および226のコンテントは、元のプログラムを修復するには不十分であり、したがって分析または複製するのが困難である。
VLIWアーキテクチャでは、命令セットアーキテクチャ(ISA)の設計者にとって複数の難題が生じる。たとえば、各VLIWパケットは複数の命令から構成され、通常、各命令は、特有の実行ユニットに結び付けられ、並行して実行される。定義では、制御伝達粒度はVLIWパケット全体である。そのようなVLIWパケットの中間には、飛越しの標的が位置する可能性もある。1つの手法では、VLIWパケットは、パケット内の各命令を決定論的に識別するための各命令に対する一意の符号化を使用して、メモリ内に記憶することができる。しかし、VLIW内で符号化される命令は、並行して実行されることが想定されるため、たとえば、完全に符号化された32ビットの命令を有することは、記憶空間の無駄が多く、復号するのが遅くなり、したがって性能に影響を及ぼすことがある。実際には、VLIWコードの復号は、連続の動作を解析してVLIWパケットの境界を判定する順次タスクとすることができる。
他方の極端な状態は、ノーオペレーション(NOP)命令を含む命令が完全に埋め込まれたVLIWパケットを形成することであり、各命令は、パケット内の位置によって明示的に判定することができる。したがって、各パケットは、並行して動作できる各機能ユニットに対して命令スロット位置を有するはずである。たとえば、6つの命令の並行発行速度を有するプロセッサアーキテクチャは、6つの命令からなる対応するVLIWパケットを有するはずである。現在の枠組みにおけるそのような手法は、VLIWパケットの完全に未圧縮のステートフル表現として見なすことができる。この手法の1つの可能な利得は、VLIWパケットにおける各命令内のビットを拡大して各命令の能力を増大させることである。しかしながら、この方法は、並行実行に対する従属性なくすべての有用な命令を含むVLIWパケットの形成を実現するのが困難であるため、ノーオペレーション(no-op)を記憶するにはそれなりに無駄が多い。本発明の一実施形態は、圧縮インフラストラクチャを利用してVLIWパケットをより最適に符号化する異なる手法を導入する。
図5は、本発明の一実施形態による第1の未圧縮VLIWパケット502および第1の圧縮VLIWパケット504を備える例示的な超長命令語(VLIW)パケット形式500を示す。第1の未圧縮VLIWパケット502は、32ビットの加算(ADD)命令506、第1の32ビットのノーオペレーション(NOP)命令507、第2の32ビットのNOP命令508、および32ビットのbranch JUMP命令509など、4つの32ビットの命令セットアーキテクチャ(ISA)命令を備える。16ビットのISAを利用する代替実施形態では、たとえば、4つの16ビットの命令が64ビットの未圧縮VLIWパケット内に記憶されるはずである。図5では、2つの32ビットのNOP命令507および508は、2つのNOPのシーケンスであり、図2の変換ツール216によって識別され、図3に示すX[2nop]圧縮フィールド516およびY[2nop]圧縮フィールド517に圧縮される。ADD命令506およびJUMP命令509はそれぞれ、同じく図3に示すように、対応する1対のX指標とY指標の圧縮値に圧縮される。したがって、第1の未圧縮VLIWパケット502は圧縮され、第1の圧縮VLIWパケット504を形成する。
第1の圧縮VLIWパケット504は、4つの命令506〜509を表す3組のXおよびY圧縮フィールドを備える。32ビットのADD命令506は、8ビットのX[add]圧縮フィールド514および8ビットのY[add]圧縮フィールド515によって表される。第1のNOP命令507および第2のNOP命令508のシーケンスは、8ビットのX[2nop]圧縮フィールド516および8ビットのY[2nop]圧縮フィールド517によって表される。X[2nop]圧縮フィールド516およびY[2nop]圧縮フィールド517は、2つのNOP命令のエントロピ符号化シーケンスを表し、これらのNOP命令は、第1のNOP命令507および第2のNOP命令508に復号されるときには展開される。JUMP命令509は、8ビットのX[jmp]圧縮フィールド518および8ビットのY[jmp]圧縮フィールド519によって表される。
図6は、本発明の一実施形態による第2の未圧縮VLIWパケット602、第2のVLIW圧縮パケット603、および第3のVLIW圧縮パケット604を備える例示的なVLIWパケット形式600を示す。第1の未圧縮VLIWパケット602は、第1の32ビットのノーオペレーション(NOP)命令606、第2の32ビットのNOP命令607、32ビットのstore命令608、および第3の32ビットのNOP命令609など、4つの32ビットの命令を備える。
第2の圧縮VLIWパケット603は、4つの命令606〜609を表す3つのXおよびY圧縮フィールドを備える。第1のNOP命令606および第2のNOP命令607のシーケンスは、8ビットのX[2nop]圧縮フィールド614および8ビットのY[2nop]圧縮フィールド615によって表される。X[2nop]圧縮フィールド614およびY[2nop]圧縮フィールド615は、2つのISA NOP命令のエントロピ符号化シーケンスを表し、これらのISA NOP命令は、第1のNOP命令606および第2のNOP命令607に復号されるときには展開される。32ビットのstore命令608は、8ビットのX[store]圧縮フィールド616および8ビットのY[store]圧縮フィールド617によって表される。第3のNOP命令609は、8ビットのX[1nop]圧縮フィールド618および8ビットのY[1nop]圧縮フィールド619によって表される。
第2の未圧縮VLIWパケット602では、2グループのNOP606、607および609によって取り囲まれた1つのペイロード命令608のみを有する有用なビットの利用度が低い。第2の圧縮VLIWパケット603によって提供される表現よりも第2の未圧縮VLIWパケット602の表現を短縮するために、VLIWパケット内の命令のレイアウトを符号化する特殊なNOP命令がパケットごとに利用される。この特殊なNOP命令を、レイアウトNOPと呼ぶ。より多数の機能ユニットを収容するためにVLIWパケット内の命令の数を増大させたとき、含まれ得る個々の各NOP命令を別個に符号化するよりも、VLIWパケット内に単一のレイアウトNOPを設けるとますます有利である。NOP命令のないVLIWパケットの場合、レイアウトNOPが必要とされないため、記憶空間は無駄にならない。VLIWパケットの始端または終端にレイアウトNOP命令を配置することによって、レイアウトの修復は、「n」命令VLIWパケットに対するO(n)次の順次タスクの複雑性と比較すると、O(1)次のタスクの複雑性になる。
第3のVLIW圧縮パケット604は、4つの命令606〜609を表す1組の2つのXおよびY圧縮フィールドを備える。第1のNOP命令606、第2のNOP命令607、store命令608、および第3のNOP命令609のシーケンスは、2nop_LS_1NOP命令によって表される。2nop_LS_1NOP命令は、現在のISAに導入される新しいレイアウトNOP命令の一例である。2nop_LS_1NOP命令は、NOP命令およびstore命令の組合せにおいて、NOP命令の数およびNOP命令の配置を識別する。2つのNOP命令606および607、store命令608、ならびに第3のNOP命令609のシーケンスは、図2の変換ツール216によって識別され、図3に示すように、X[2nop_LS_1nop]圧縮フィールド622およびY[2nop_LS_1nop]圧縮フィールド623に圧縮される。store命令608は、同じく図3に示すように、1対のX指標とY指標に圧縮される。したがって、第2の未圧縮VLIWパケット602は圧縮され、第3のVLIW圧縮パケット604を形成する。たとえば、X[2nop_LS_1nop]圧縮フィールド622およびY[2nop_LS_1nop]圧縮フィールド623は、2つのISA NOP命令、store命令、および第3のNOP命令のエントロピ符号化シーケンスを表し、各命令は、第1のNOP命令606および第2のNOP命令607、store命令に対するプレースホルダ、ならびに第3のNOP命令609に復号されるときには展開される。32ビットのstore命令608は、store命令に対するプレースホルダを充填する8ビットのX[store]圧縮フィールド624および8ビットのY[store]圧縮フィールド625によって表される。
図7は、本発明によるVLIW圧縮パケットに対応するノーオペレーション(NOP)および機能命令の組合せの例示的なリスティング700を示す。レイアウトNOP列702は、4つの命令のシーケンスを表すように符号化されたレイアウトNOP命令エントリを含む。たとえば、4つの命令のシーケンスは、NOP命令(N)、算術論理ユニット命令(A)、loadまたはstore命令(LS)、およびcontrol命令(C)の組合せを備える。算術論理ユニット1(ALU1)VLIW位置列704は、ALU1命令またはNOP命令を表すように符号化されたエントリを含む。ALU2 VLIW位置列705は、ALU2命令またはNOP命令を表すように符号化されたエントリを含む。loadまたはstore VLIW位置列706は、loadもしくはstore(LD/ST)命令またはNOP命令を表すように符号化されたエントリを含む。control VLIW位置列707は、control命令またはNOP命令を表すように符号化されたエントリを含む。たとえば、行エントリ708はレイアウトNOP命令であり、レイアウトNOP命令は4つのNOP命令(4N)を表し、各スロット列704〜707内にNOP命令を有する。別の例では、行エントリ709はレイアウトNOP命令であり、レイアウトNOP命令は3つのNOP命令(3N)およびcontrol命令(C)を表し、各スロット列704〜706内にNOP命令を有し、スロット列707内にcontrol命令を有する。さらなる例では、行エントリ710はレイアウトNOP命令であり、レイアウトNOP命令は各スロット列704および705内に2つのNOP命令(2N)を表し、スロット列706内にloadまたはstore命令(LD/ST)を表し、スロット列707内に別のNOP命令(N)を表す。行エントリ710の2N_LS_NレイアウトNOP命令は、図6の第3のVLIW圧縮パケット604に対応することができる。また、図7の列702のレイアウトNOP命令はアプリケーションから独立しており、通常は下のVLIWアーキテクチャに依存することに留意されたい。
レイアウトNOP命令を使用する手法を拡張して、特定用途向けに調整されているが既存のISA空間に復号可能な新しいカスタム命令を導入することができる。たとえば、プログラム評価プロセス中、1つまたは複数の特有のVLIWパケットが命令ストリーム内に高い頻度で現れると判定した場合、異なる各VLIWパケットを単一の特殊なレイアウト命令として符号化することができる。VLIWパケット内で頻繁に使用される命令のそのようなシーケンスは、図2の変換ツール216によって識別され、図3に示すように、単一のX圧縮フィールドおよび単一のY圧縮フィールドに圧縮される。したがって、復号目的で、また以下でより詳細に説明するように、頻繁に使用される命令のシーケンスを圧縮するために、ISAの未使用の符号化を使用して、1つのISA内に複数の特殊なレイアウト命令を含むことができる。レイアウトNOP命令とは異なり、複数の特殊なレイアウト命令はアプリケーションに依存することに留意されたい。
図8は、本発明の一実施形態による、頻繁に使用される命令対を含む第3の未圧縮VLIWパケット802と、特殊な圧縮レイアウト命令804とを備える例示的なVLIWパケット形式800を示す。第3の未圧縮VLIWパケット802は、compare equal(P1=cmp.eq(r0,0))命令806、第1のノーオペレーション(NOP)命令807、第2のNOP命令808、およびbranch Return命令809など、4つの32ビットの命令を備える。compare equal命令806およびreturn命令809は、1対の頻繁に使用される命令を備える。図2のプロセッサ複合体203上で走行しているプログラムの分析から、使用頻度を判定することができる。そのような使用頻度分析は、たとえば、シミュレーション環境内で動的に判定することができ、または図2のコンパイラおよびリンカ206内で静的に判定することができる。
第3の未圧縮VLIWパケット802は、現在のISAに導入される特殊なレイアウト命令の一例であるcmp_2nop_return命令によって表すことができる。cmp_2nop_return命令は、図2の変換ツール216によって識別され、図3に示すように、X[cmp_2nop_return]圧縮フィールド822およびY[cmp_2nop_return]圧縮フィールド823に圧縮される。したがって、第3の未圧縮VLIWパケット802は圧縮され、特殊な圧縮レイアウト命令804を形成する。
特殊な圧縮レイアウト命令804は、4つの命令806〜809を表す2つのXおよびY圧縮フィールドを備える。compare equal命令806およびreturn命令809の頻繁に使用されるシーケンスは、8ビットのX[cmp_2nop_return]圧縮フィールド822および8ビットのY[cmp_2nop_return]圧縮フィールド823によって表される。X[cmp_2nop_return]圧縮フィールド822およびY[cmp_2nop_return]圧縮フィールド823は、2つの頻繁に使用されるISA命令のエントロピ符号化シーケンスを表し、これらの命令は、compare equal命令806、2つのNOP命令807および808、ならびにbranch Return命令809に復号されるときには展開される。
図9Aは、本発明の一実施形態によるプログラム命令シーケンスを短縮するためのプロセス900を示す。ブロック902で、プログラム命令ストリームからの命令を受け取る。ブロック904で、パラメータに従って2つ以上の命令のシーケンスに対するプログラム命令ストリームを調べる。2つの32ビットの命令のシーケンスに対する例示的なパラメータは、2つの命令のシーケンスを備える64ビットのパターンである。別の実施形態では、2つの命令のシーケンスに対するパラメータは、2つのアセンブラ命令簡略記憶のシーケンスとすることができ、各簡略記憶はISA内の1つの命令を表す。VLIWパケット内の頻繁に使用される命令のそのようなシーケンスは、図2のコンパイラ206などのコンパイラまたは図2の変換ツール216などの変換ツールによって識別することができる。プログラム命令ストリームから命令を受け取ったとき、一度に2つの命令とパラメータとを比較して、2つの命令のシーケンスが発見されたかどうかかを示すことができる。たとえば、第1のパラメータは、2つのNOP命令のシーケンスを示すことができる。第2のパラメータは、3つのNOP命令のシーケンスを示すことができる。パラメータはまた、NOPおよび機能命令の組合せの例示的なリスティング700など、特有の命令シーケンスのリスト内のエントリを示すことができる。図8に関して説明したように、頻繁に使用される命令シーケンスを示すように設定されたパラメータなど、パラメータのさらなる例は、アプリケーションごとに判定することができる。
決定ブロック906で、2つ以上の命令の現在のシーケンスがパラメータを満たすことが発見されたかどうかを判定する。2つ以上の命令の現在のシーケンスがパラメータを満たさない場合、プロセス900はブロック904へ戻る。2つ以上の命令の現在のシーケンスがパラメータを満たす場合、プロセス900はブロック908へ進む。ブロック908で、2つ以上の命令のシーケンスを、パラメータに関連する選択されたタイプのレイアウト命令に置き換える。ブロック910で、選択されたタイプのレイアウト命令を、X圧縮フィールドおよびY圧縮フィールドに圧縮する。次いで、プロセス900はブロック904へ戻る。
図9Bは、本発明の一実施形態によるプログラム命令シーケンスを表す圧縮値を復号するためのプロセス950を示す。ブロック952で、圧縮命令ストリームからの圧縮命令を受け取る。ブロック954で、受け取ったX圧縮フィールドおよびY圧縮フィールドを、たとえば選択されたタイプのレイアウト命令に圧縮解除する。プロセス950を繰り返し、受け取った各圧縮命令を圧縮解除する。ブロック956で、レイアウト命令の復号に従って、例示的な選択されたタイプのレイアウト命令を2つ以上の命令に置き換える。ブロック958で、2つ以上の命令を実行し、ブロック958で受け取った2つ以上の命令に対するプロセス950を完了する。
図10は、本発明の一実施形態による例示的な圧縮解除状態図1000を示す。圧縮解除状態図1000は、プロセッサパイプライン上で実行するための圧縮解除命令1005を判定するために、特殊な圧縮レイアウト命令804などの特殊な圧縮レイアウト命令1002が入る状態を示す。図10は、たとえば主メモリ222、L2キャッシュ224、およびL1キャッシュ226を備えるメモリ階層1006内の特殊な圧縮レイアウト命令1002を示す。プロセッサコア228は、圧縮命令復号器1008および実行パイプライン234を備える。取出し動作1007が、メモリ階層1006から圧縮命令復号器1008への特殊な圧縮レイアウト命令1002を検索する。圧縮命令復号器1008は、X[cmp_2nop_return]1003をX指標として使用してXビットパターンに対するXメモリ1010にアクセスし、Y[cmp_2nop_return]1004をY指標として使用してYビットパターンに対するYメモリ1011にアクセスするように構成される。適当な混合マスク(MM)1012がコンバイナ1014内で適用され、コンバイナ1014は、MM1012に従ってXビットパターンとYビットパターンとを組み合わせて、取出し動作1016中に変換値をプロセッサコア228に提供するように構成される。たとえば、変換値は、32ビットのcmp_2nop_return命令1018とすることができる。復号器230は、復号動作1020で32ビットのcmp_2nop_return命令1018を復号し、復号出力を未圧縮VLIWパケット1005として実行パイプライン234へ提供するように動作可能である。未圧縮VLIWパケット1005は、compare equal命令1022、第1のNOP命令1023、第2のNOP命令1024、およびreturn命令1025を備える。2つのNOP命令1023および1024は、復号動作1020の一部として挿入され、それによってメモリ階層1006内にこれらの2つの命令に対する記憶領域を必要としなくなる。ALU1実行ユニット1032、ALU2実行ユニット1033、ロード/記憶(LD/ST)実行ユニット1034、および制御実行ユニット1035はそれぞれ、対応する命令1022〜1025を実行するように構成可能である。
本明細書に開示する実施形態に関連して説明した方法は、ハードウェアとソフトウェアの組合せで実施することができ、ソフトウェアは、プログラムまたはコンピュータ可読命令シーケンスであり、非過渡的コンピュータ可読記憶媒体内に記憶され、プロセッサによって実行可能である。プログラムまたはコンピュータ可読命令シーケンスは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブル読取り専用メモリ(EPROM)、ハードディスク、取外し可能ディスク、テープ、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野では知られている、もしくは将来考察される任意の他の記憶媒体内に常駐することができる。記憶媒体はプロセッサに結合することができ、その結果、プロセッサは、記憶媒体から情報を読み取ることができ、場合によっては記憶媒体に情報を書き込むことができる。記憶媒体とプロセッサとの結合は、回路の実装に一体化された直接結合とすることができ、あるいは、直接アクセスに対応する1つもしくは複数のインターフェース、またはダウンロード技法を使用するデータストリーミングを利用することができる。
本発明について、プロセッサ内で使用するための例示的な実施形態に関して開示したが、当業者であれば、上記の議論および以下に続く特許請求の範囲に一貫して、多種多様な実装形態を用いることができることが理解されよう。たとえば、代替実施形態では、主メモリおよびL2キャッシュが圧縮命令を記憶し、レベル1(L1)キャッシュが未圧縮命令を記憶するシステム内で、図2の復号器230をレベル2(L2)キャッシュの後に配置することができる。そのようなシステムでは、主メモリおよびL2キャッシュもまた、2つ以上の命令の圧縮シーケンスを記憶するはずである。
100 ワイヤレス通信システム
120 遠隔ユニット
125A 構成要素
125B 構成要素
125C 構成要素
125D 構成要素
130 遠隔ユニット
140 基地局
150 遠隔ユニット
180 順方向リンク信号
190 逆方向リンク信号
200 圧縮システム
203 プロセッサ複合体
204 ソースコードおよびライブラリファイル
206 コンパイラおよびリンカ
208 プロファイルフィードバック情報
210 リンクされた実行可能なコード
212 支援データセクション
214 記憶デバイス
216 変換ツール
218 圧縮コード
220 復号テーブル
222 主メモリ
224 レベル2キャッシュ(L2キャッシュ)
226 レベル1命令キャッシュ(L1キャッシュ)
228 プロセッサコア
230 復号器
232 変換メモリ(TM)
234 実行パイプライン
300 要素
302 ネイティブISAの固定寸法命令A
304 バイナリ混合マスク(MM)
306 Axパターン
308 Ayパターン
310 重複パッドビット
312 重複パッドビット
314 圧縮動作
316 圧縮解除動作
400 圧縮解除器および実行システム
402 XY指標メモリ
403 経路
404 XYエントリ
405 マルチプレクサ
406 ヒット
407 XY値
408 指標Xレジスタ
410 指標Yレジスタ
412 Xメモリ
414 Yメモリ
416 単一の混合マスク(MM)レジスタ
418 コンバイナ
419 圧縮解除命令記憶装置
420 未圧縮命令
421 取出しアドレスおよび制御信号
422 ミスの指示
500 超長命令語(VLIW)パケット形式
502 第1の未圧縮VLIWパケット
504 第1の圧縮VLIWパケット
506 32ビットの加算(ADD)命令
507 第1の32ビットのノーオペレーション(NOP)命令
508 第2の32ビットのNOP命令
509 32ビットのbranch JUMP命令
514 8ビットのX[add]圧縮フィールド
515 8ビットのY[add]圧縮フィールド
516 8ビットのX[2nop]圧縮フィールド
517 8ビットのY[2nop]圧縮フィールド
518 8ビットのX[jmp]圧縮フィールド
519 8ビットのY[jmp]圧縮フィールド
600 VLIWパケット形式
602 第2の未圧縮VLIWパケット
603 第2のVLIW圧縮パケット
604 第3のVLIW圧縮パケット
606 第1の32ビットのノーオペレーション(NOP)命令
607 第2の32ビットのNOP命令
608 32ビットのstore命令
609 第3の32ビットのNOP命令
614 8ビットのX[2nop]圧縮フィールド
615 8ビットのY[2nop]圧縮フィールド
616 8ビットのX[store]圧縮フィールド
617 8ビットのY[store]圧縮フィールド
618 8ビットのX[1nop]圧縮フィールド
619 8ビットのY[1nop]圧縮フィールド
622 X[2nop_LS_1nop]圧縮フィールド
623 Y[2nop_LS_1nop]圧縮フィールド
624 8ビットのX[store]圧縮フィールド
625 8ビットのY[store]圧縮フィールド
700 リスティング
702 レイアウトNOP列
704 算術論理ユニット1(ALU1)VLIW位置列、スロット列
705 ALU2 VLIW位置列、スロット列
706 loadまたはstore VLIW位置列、スロット列
707 control VLIW位置列、スロット列
708 行エントリ
709 行エントリ
710 行エントリ
800 VLIWパケット形式
802 第3の未圧縮VLIWパケット
804 特殊な圧縮レイアウト命令
806 compare equal(P1=cmp.eq(r0,0))命令
807 第1のノーオペレーション(NOP)命令
808 第2のNOP命令
809 分岐Return命令
822 X[cmp_2nop_return]圧縮フィールド
823 Y[cmp_2nop_return]圧縮フィールド
1000 圧縮解除状態図
1002 特殊な圧縮レイアウト命令
1003 X[cmp_2nop_return]
1004 Y[cmp_2nop_return]
1005 未圧縮VLIWパケット
1006 メモリ階層
1007 取出し動作
1008 圧縮命令復号器
1010 Xメモリ
1011 Yメモリ
1012 混合マスク(MM)
1014 コンバイナ
1016 取出し動作
1018 32ビットのcmp_2nop_return命令
1020 復号動作
1022 compare equal命令
1023 第1のNOP命令
1024 第2のNOP命令
1025 return命令
1032 ALU1実行ユニット
1033 ALU2実行ユニット
1034 ロード/記憶(LD/ST)実行ユニット
1035 制御実行ユニット

Claims (22)

  1. プログラム命令シーケンスを圧縮する方法であって、
    パラメータ(904、906)を満たす超長命令語(VLIW)パケット(602)の1つの命令スロット(704)内の第1の命令(606)および異なる命令スロット(705)内の第2の命令(607)を識別するステップと、
    前記パラメータと関連付けられたレイアウト命令を選択するステップであって、前記選択されたレイアウト命令が、前記第1の命令と同じ数のビットを有しかつ、前記1つの命令スロット内の前記識別された第1の命令と前記異なる命令スロット内の前記第2の命令とを表す、ステップと、
    前記選択されたレイアウト命令を圧縮形式に圧縮するステップと、
    前記パラメータに従って、前記VLIWパケット内の前記識別された第1の命令および第2の命令を、圧縮形式(622、623、910)の前記選択されたレイアウト命令(710、908)に置き換えるステップであり、前記第1の命令および前記第2の命令が置き換えられた後に前記VLIWパケット内に残る命令(608)が、前記選択されたレイアウト命令の前記圧縮形式と同じ数のビットを有する圧縮形式(624、625)される、置き換えるステップとを含む、方法。
  2. 前記パラメータが2つのノーオペレーション(NOP)命令を示し、各NOP命令が別個の命令スロット内に位置する、請求項1に記載の方法。
  3. 前記置き換えるステップが、
    前記2つのNOP命令を、前記2つのNOP命令を表す単一のレイアウト命令に置き換えるステップを備える、請求項2に記載の方法。
  4. 前記パラメータが、1つまたは複数のノーオペレーション(NOP)命令と1つまたは複数の機能命令との組合せである2つ以上の命令を示す、請求項1に記載の方法。
  5. 前記置き換えるステップが、
    前記第1の命令および前記第2の命令を、前記第1および第2の命令をNOP命令として識別し前記VLIW内の前記NOP命令の配置を識別する単一のレイアウト命令に置き換えるステップを備える、請求項4に記載の方法。
  6. 前記パラメータが、頻繁に使用される命令対を示し、前記命令対が前記第1の命令および前記第2の命令の命令対である、請求項1に記載の方法。
  7. 前記置き換えるステップが、
    前記示された命令対を、前記示された命令対内の各命令および前記VLIW内の各命令の配置を識別する単一のレイアウト命令に置き換えるステップを備える、請求項6に記載の方法。
  8. 縮形式の前記選択されたレイアウト命令および圧縮形式の残る命令が、前記VLIWパケットの圧縮形式である、請求項1に記載の方法。
  9. 2つ以上の命令を表す圧縮値を圧縮解除する方法であって、
    X指標(1003)およびY指標(1004)に圧縮値(1002)としてともにアクセスするステップと、
    前記圧縮値を、2つ以上の命令を表す選択されたタイプのレイアウト命令(1018)に圧縮解除する(1010〜1012、1014)ステップと、
    前記選択されたタイプのレイアウト命令を復号し(230)、前記選択されたタイプのレイアウト命令によって並行実行(1032〜1035)のために指定された超長命令語(VLIW)内の場所で、前記選択されたタイプのレイアウト命令を前記2つ以上の命令(1022〜1025)に置き換えるステップとを含む方法。
  10. 前記圧縮解除するステップが、
    前記X指標に従って、XパターンメモリからXパターンを選択するステップと、
    前記Y指標に従って、YパターンメモリからYパターンを選択するステップと、
    混合マスクに従って前記Xパターンと前記Yパターンとを組み合わせて、前記選択されたタイプのレイアウト命令を作るステップとを備える、請求項9に記載の方法。
  11. 前記選択されたタイプのレイアウト命令が、2つのノーオペレーション(NOP)命令を示す、請求項9に記載の方法。
  12. 前記選択されたタイプのレイアウト命令が、1つまたは複数のノーオペレーション(NOP)命令と1つまたは複数の機能命令との組合せである2つ以上の命令を示す、請求項9に記載の方法。
  13. 前記選択されたタイプのレイアウト命令が、頻繁に使用される命令対を示し、実行のために前記命令対の各命令および各命令の配置を識別する、請求項9に記載の方法。
  14. 前記圧縮解除するステップが、プロセッサコアのメモリ階層から命令を取り出したときに完遂される、請求項9に記載の方法。
  15. 2つ以上の命令を表す圧縮値を圧縮解除するための装置であって、
    X指標(1003)およびY指標(1004)を備える圧縮命令(1002)を記憶するように構成された記憶サブシステム(1006)と、
    前記記憶サブシステムからアクセスされたX指標およびY指標を、選択されたタイプのレイアウト命令(1018)に変換するように構成された圧縮解除器(1010〜1012、1014)であり、前記選択されたタイプのレイアウト命令が、前記選択されたタイプのレイアウト命令によって指定された超長命令語(VLIW)パケット内で2つ以上の命令を表す、圧縮解除器と、
    前記選択されたタイプのレイアウト命令によって指定された前記VLIWパケット内の場所で、前記選択されたタイプのレイアウト命令を前記2つ以上の命令(1022〜1025)に置き換えるように構成された復号器(230)とを備える装置。
  16. 前記圧縮解除器が、
    前記X指標に従って選択されたXパターンを記憶するように動作可能なXパターンメモリと、
    前記Y指標に従って選択されたYパターンを記憶するように動作可能なYパターンメモリと、
    混合マスクに従って、選択されたXパターンと選択されたYパターンとを組み合わせて、前記選択されたタイプのレイアウト命令を作るように構成されたコンバイナとを備える、請求項15に記載の装置。
  17. 前記2つ以上の命令が、2つのノーオペレーション(NOP)命令である、請求項15に記載の装置。
  18. 前記2つ以上の命令が、1つまたは複数のノーオペレーション(NOP)命令と1つまたは複数の機能命令との組合せである、請求項15に記載の装置。
  19. 前記2つ以上の命令が、頻繁に使用される1対の命令である、請求項15に記載の装置。
  20. 前記記憶サブシステムが、
    前記圧縮命令を記憶するように構成されたレベル1命令キャッシュを備える、請求項15に記載の装置。
  21. 前記選択されたレイアウト命令を、1対の第1のX指標と第1のY指標の圧縮値に圧縮するステップであり、前記VLIWパケットが、前記第1の命令、前記第2の命令、および第3の命令を含む、圧縮するステップと、
    前記第3の命令を1対の第2のX指標と第2のY指標の圧縮値に圧縮するステップと、
    前記VLIWパケットの圧縮記憶のために、前記1対の第1のX指標と第1のY指標の圧縮値および前記1対の第2のX指標と第2のY指標の圧縮値をメモリ内に記憶するステップと
    をさらに備える、請求項1に記載の方法。
  22. 前記VLIWパケットが、前記第1の命令、前記第2の命令、および第3の命令を含み、命令の置換えを伴う前記VLIWパケットが、圧縮形式の前記選択されたレイアウト命令および圧縮形式の前記第3の命令を含む、請求項1に記載の方法。
JP2014523111A 2011-07-28 2012-07-30 エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置 Expired - Fee Related JP5869125B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/192,916 US10120692B2 (en) 2011-07-28 2011-07-28 Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
US13/192,916 2011-07-28
PCT/US2012/048904 WO2013016737A1 (en) 2011-07-28 2012-07-30 Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form

Publications (2)

Publication Number Publication Date
JP2014524097A JP2014524097A (ja) 2014-09-18
JP5869125B2 true JP5869125B2 (ja) 2016-02-24

Family

ID=46604609

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014523111A Expired - Fee Related JP5869125B2 (ja) 2011-07-28 2012-07-30 エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置

Country Status (7)

Country Link
US (1) US10120692B2 (ja)
EP (1) EP2737397A1 (ja)
JP (1) JP5869125B2 (ja)
KR (1) KR101584660B1 (ja)
CN (1) CN103748550B (ja)
IN (1) IN2014CN00678A (ja)
WO (1) WO2013016737A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US20140365884A1 (en) * 2012-03-30 2014-12-11 Google Inc. Voice command recording and playback
US9330001B2 (en) * 2012-05-21 2016-05-03 Zeropoint Technologies Ab Cache system and a method of operating a cache memory
US9389854B2 (en) 2013-03-15 2016-07-12 Qualcomm Incorporated Add-compare-select instruction
KR102210997B1 (ko) * 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
US10063665B2 (en) * 2015-02-18 2018-08-28 Actmobile Networks, Inc. System and method to eliminate duplicate byte patterns in network streams
US10558808B2 (en) 2016-03-03 2020-02-11 Qualcomm Incorporated Methods and apparatus for packet-based validation of control-flow transfers for hardware control-flow enforcement
US10565014B2 (en) 2017-12-05 2020-02-18 Western Digital Technologies, Inc. Data processing offload using in-storage code execution

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0440525A (ja) 1990-06-06 1992-02-10 Seiko Epson Corp 並列処理型マイクロプロセッサ
US5463750A (en) 1993-11-02 1995-10-31 Intergraph Corporation Method and apparatus for translating virtual addresses in a data processing system having multiple instruction pipelines and separate TLB's
JPH07168694A (ja) 1993-12-14 1995-07-04 Hitachi Ltd プロセッサおよびそれを用いたデータ処理システム
JPH08161169A (ja) 1994-12-09 1996-06-21 Toshiba Corp Vliw方式の計算機システム及びvliwの解釈・実行方法
JP3598589B2 (ja) 1995-06-28 2004-12-08 株式会社日立製作所 プロセッサ
US5924125A (en) 1995-08-01 1999-07-13 Arya; Siamak Method and apparatus for parallel access to consecutive TLB entries
JP3412462B2 (ja) 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
DE19735948C1 (de) 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
JPH1185512A (ja) 1997-09-03 1999-03-30 Fujitsu Ltd 命令圧縮格納および命令復元機能を有するデータ処理装置
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
US20020112029A1 (en) 1998-03-06 2002-08-15 Craig S. Gravina System and method for accepting and integrating entertainment information from entertainment information producers
ATE279827T1 (de) 1999-07-06 2004-10-15 Samsung Electronics Co Ltd Vorrichtung zur kodierung eines transportformatindikators für ein kommunikationssystem
JP3556556B2 (ja) 2000-02-08 2004-08-18 株式会社東芝 命令コード変換装置及び情報処理システム
US6779101B1 (en) * 2000-03-07 2004-08-17 University Of Washington Method and apparatus for processing compressed VLIW subinstruction opcodes
US6859870B1 (en) * 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
GB2362733B (en) 2000-05-25 2002-02-27 Siroyan Ltd Processors having compressed instructions.
EP1358551B1 (en) 2001-01-30 2011-08-17 Silicon Hive B.V. Computer instruction with instruction fetch control bits
US7028286B2 (en) 2001-04-13 2006-04-11 Pts Corporation Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture
JP3806341B2 (ja) 2001-11-22 2006-08-09 ユニバーシティ・オブ・ワシントン サブ命令の共用、命令のストアならびに圧縮のための方法、およびコンピュータシステム
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
JP4026753B2 (ja) * 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
EP1530755B1 (en) 2002-08-16 2019-11-06 Intel Corporation Apparatus, method, and compiler enabling processing of variable length isntructions in a very long instruction word processor
GB2393274B (en) 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
JP2006500673A (ja) 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
US7249248B2 (en) 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
US7290122B2 (en) 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
DE602004019346D1 (de) 2003-12-16 2009-03-19 Nxp Bv Speichereffizientes anweisungsverarbeitungsschema
EP1839264A2 (en) 2005-01-18 2007-10-03 Trestle Corporation System and method for creating variable quality images of a slide
US7404042B2 (en) 2005-05-18 2008-07-22 Qualcomm Incorporated Handling cache miss in an instruction crossing a cache line boundary
US7594098B2 (en) 2005-07-01 2009-09-22 Stmicroelectronics, Sa Processes and devices for compression and decompression of executable code by a microprocessor with RISC architecture and related system
US8099587B2 (en) 2005-07-20 2012-01-17 Intel Corporation Compressing and accessing a microcode ROM
CN101075903B (zh) 2006-05-17 2012-07-04 中兴通讯股份有限公司 网络资源配置方法和装置
CN100492279C (zh) 2006-07-27 2009-05-27 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
KR100875836B1 (ko) * 2007-03-23 2008-12-24 삼성전자주식회사 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
US20100223237A1 (en) 2007-11-05 2010-09-02 University Of Florida Research Foundation, Inc. Lossless data compression and real-time decompression
US8281151B2 (en) 2008-04-09 2012-10-02 Hewlett-Packard Development Company L. P. Auditor assisted extraction and verification of client data returned from a storage provided while hiding client data from the auditor
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy

Also Published As

Publication number Publication date
EP2737397A1 (en) 2014-06-04
US20130031337A1 (en) 2013-01-31
KR20140043834A (ko) 2014-04-10
WO2013016737A1 (en) 2013-01-31
US10120692B2 (en) 2018-11-06
KR101584660B1 (ko) 2016-01-12
CN103748550A (zh) 2014-04-23
CN103748550B (zh) 2016-07-06
JP2014524097A (ja) 2014-09-18
IN2014CN00678A (ja) 2015-04-03

Similar Documents

Publication Publication Date Title
JP5869125B2 (ja) エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置
JP6363739B2 (ja) メモリ階層内に組み込まれたエントロピーエンコーディングされたソフトウェアの記憶および変換のための方法および装置
KR100971626B1 (ko) 다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의명령어 부호화
TWI522910B (zh) 微處理器、選擇性解壓縮微程式碼方法、產生選擇性壓縮微程式碼方法、產生描述方法以及電腦程式產品
US8707013B2 (en) On-demand predicate registers
JP2015133129A (ja) 命令としてデータ値を評価するシステムおよび方法
JP2006500658A (ja) プログラムを動的に圧縮解除するための装置および方法
TW202215234A (zh) 遮罩向量比較指令
US9672042B2 (en) Processing system and method of instruction set encoding space utilization

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150622

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151021

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: 20151207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160106

R150 Certificate of patent or registration of utility model

Ref document number: 5869125

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees