(57)【特許請求の範囲】
【請求項１】
プログラム命令シーケンスを圧縮する方法であって、
パラメータ(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つのノーオペレーション(NOP)命令を示し、各NOP命令が別個の命令スロット内に位置する、請求項1に記載の方法。
【請求項３】
前記置き換えるステップが、
前記2つのNOP命令を、前記2つのNOP命令を表す単一のレイアウト命令に置き換えるステップを備える、請求項2に記載の方法。
【請求項４】
前記パラメータが、1つまたは複数のノーオペレーション(NOP)命令と1つまたは複数の機能命令との組合せである2つ以上の命令を示す、請求項1に記載の方法。
【請求項５】
前記置き換えるステップが、
前記第1の命令および前記第2の命令を、前記第1および第2の命令をNOP命令として識別し前記VLIW内の前記NOP命令の配置を識別する単一のレイアウト命令に置き換えるステップを備える、請求項4に記載の方法。
【請求項６】
前記パラメータが、頻繁に使用される命令対を示し、前記命令対が前記第1の命令および前記第2の命令の命令対である、請求項1に記載の方法。
【請求項７】
前記置き換えるステップが、
前記示された命令対を、前記示された命令対内の各命令および前記VLIW内の各命令の配置を識別する単一のレイアウト命令に置き換えるステップを備える、請求項6に記載の方法。
【請求項８】
圧縮形式の前記選択されたレイアウト命令および圧縮形式の残る命令が、前記VLIWパケットの圧縮形式である、請求項1に記載の方法。
【請求項９】
2つ以上の命令を表す圧縮値を圧縮解除する方法であって、
X指標(1003)およびY指標(1004)に圧縮値(1002)としてともにアクセスするステップと、
前記圧縮値を、2つ以上の命令を表す選択されたタイプのレイアウト命令(1018)に圧縮解除する(1010〜1012、1014)ステップと、
前記選択されたタイプのレイアウト命令を復号し(230)、前記選択されたタイプのレイアウト命令によって並行実行(1032〜1035)のために指定された超長命令語(VLIW)内の場所で、前記選択されたタイプのレイアウト命令を前記2つ以上の命令(1022〜1025)に置き換えるステップとを含む方法。
【請求項１０】
前記圧縮解除するステップが、
前記X指標に従って、XパターンメモリからXパターンを選択するステップと、
前記Y指標に従って、YパターンメモリからYパターンを選択するステップと、
混合マスクに従って前記Xパターンと前記Yパターンとを組み合わせて、前記選択されたタイプのレイアウト命令を作るステップとを備える、請求項9に記載の方法。
【請求項１１】
前記選択されたタイプのレイアウト命令が、2つのノーオペレーション(NOP)命令を示す、請求項9に記載の方法。
【請求項１２】
前記選択されたタイプのレイアウト命令が、1つまたは複数のノーオペレーション(NOP)命令と1つまたは複数の機能命令との組合せである2つ以上の命令を示す、請求項9に記載の方法。
【請求項１３】
前記選択されたタイプのレイアウト命令が、頻繁に使用される命令対を示し、実行のために前記命令対の各命令および各命令の配置を識別する、請求項9に記載の方法。
【請求項１４】
前記圧縮解除するステップが、プロセッサコアのメモリ階層から命令を取り出したときに完遂される、請求項9に記載の方法。
【請求項１５】
2つ以上の命令を表す圧縮値を圧縮解除するための装置であって、
X指標(1003)およびY指標(1004)を備える圧縮命令(1002)を記憶するように構成された記憶サブシステム(1006)と、
前記記憶サブシステムからアクセスされたX指標およびY指標を、選択されたタイプのレイアウト命令(1018)に変換するように構成された圧縮解除器(1010〜1012、1014)であり、前記選択されたタイプのレイアウト命令が、前記選択されたタイプのレイアウト命令によって指定された超長命令語(VLIW)パケット内で2つ以上の命令を表す、圧縮解除器と、
前記選択されたタイプのレイアウト命令によって指定された前記VLIWパケット内の場所で、前記選択されたタイプのレイアウト命令を前記2つ以上の命令(1022〜1025)に置き換えるように構成された復号器(230)とを備える装置。
【請求項１６】
前記圧縮解除器が、
前記X指標に従って選択されたXパターンを記憶するように動作可能なXパターンメモリと、
前記Y指標に従って選択されたYパターンを記憶するように動作可能なYパターンメモリと、
混合マスクに従って、選択されたXパターンと選択されたYパターンとを組み合わせて、前記選択されたタイプのレイアウト命令を作るように構成されたコンバイナとを備える、請求項15に記載の装置。
【請求項１７】
前記2つ以上の命令が、2つのノーオペレーション(NOP)命令である、請求項15に記載の装置。
【請求項１８】
前記2つ以上の命令が、1つまたは複数のノーオペレーション(NOP)命令と1つまたは複数の機能命令との組合せである、請求項15に記載の装置。
【請求項１９】
前記2つ以上の命令が、頻繁に使用される1対の命令である、請求項15に記載の装置。
【請求項２０】
前記記憶サブシステムが、
前記圧縮命令を記憶するように構成されたレベル1命令キャッシュを備える、請求項15に記載の装置。
【請求項２１】
前記選択されたレイアウト命令を、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に記載の方法。
【請求項２２】
前記VLIWパケットが、前記第1の命令、前記第2の命令、および第3の命令を含み、命令の置換えを伴う前記VLIWパケットが、圧縮形式の前記選択されたレイアウト命令および圧縮形式の前記第3の命令を含む、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
「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  制御実行ユニット
【図１】
0005869125.tif 000002
【図２】
0005869125.tif 000003
【図３】
0005869125.tif 000004
【図４】
0005869125.tif 000005
【図５】
0005869125.tif 000006
【図６】
0005869125.tif 000007
【図７】
0005869125.tif 000008
【図８】
0005869125.tif 000009
【図９Ａ】
0005869125.tif 000010
【図９Ｂ】
0005869125.tif 000011
【図１０】
0005869125.tif 000012