(57)【特許請求の範囲】
【請求項１】
命令を圧縮するための方法であって、
各命令グループが順番に１つ以上の命令を含んでいる、プログラムコード内の１つ以上の命令グループをプリセット条件に従って検索するためにプロセッサにより実行すべきプログラムコードを分析し、同じターゲットアドレスを示す１つ又は複数のプログラムカウンタ相対（ＰＣ相対）命令を同一の命令とみなし、命令グループを検索するステップと、
前記１つ以上の命令グループそれぞれのコスト関数に従って前記１つ以上の命令グループをソートするステップと、
前記ソートされた１つ以上の命令グループのうちの最初のＸの命令グループを命令テーブルに挿入するステップであって、ここにＸは、前記コスト関数に従って決定される値とするステップと、
プログラムコード内の、前記命令テーブルに挿入される前記１つ以上の命令グループのそれぞれを、対応する命令テーブル実行（ＥＩＴ）命令と置き換えるステップと、を含み、
前記ＥＩＴ命令は、前記命令テーブル内の前記対応する命令グループを参照するパラメータを有する、命令圧縮方法。
【請求項２】
前記プリセット条件は、前記プログラムコード内の前記各命令グループの発生回数が第１の閾値より大きいか等しく、かつ、前記各命令グループの長さが第２の閾値より小さいか等しいということである、請求項１に記載の命令圧縮方法。
【請求項３】
前記１つ以上の命令グループそれぞれの前記コスト関数は、前記命令グループの前記発生回数、前記命令グループの長さ、前記ＥＩＴ命令の長さ、及び前記第２の閾値に従って定義される、請求項２に記載の命令圧縮方法。
【請求項４】
前記プロセッサは、異なる長さの複数の命令セットを含み、前記第２の閾値は前記命令セットのうち最も長いものの長さに等しく、前記ＥＩＴ命令は前記命令セットのうち最も短いものに属する、請求項２又は３に記載の命令圧縮方法。
【請求項５】
前記パラメータは、前記ＥＩＴ命令に対応する前記命令グループが存在する場所を示す、前記命令テーブル内のインデックスである、請求項１乃至４の何れか一項に記載の命令圧縮方法。
【請求項６】
前記１つ以上の命令グループをソートする前記ステップは、１つ以上の命令グループを、前記１つ以上の命令グループそれぞれの前記コスト関数の降順にソートするステップを含む、請求項１乃至５の何れか一項に記載の命令圧縮方法。
【請求項７】
前記Ｘは、Ｙ及びＺの最小値であり、Ｙは前記命令テーブルのエントリの最大数であり、Ｚはコスト関数が第３の閾値より大きい前記命令グループの数である、請求項１乃至６の何れか一項に記載の命令圧縮方法。
【請求項８】
前記プログラムコードを分析するステップは、同じターゲットアドレスを示す１つまたは複数のプログラムカウンタ相対命令を同一の命令とみなして、命令グループを検索するステップを含み、
前記ソートされた１つ以上の命令グループのうちの最初のＸの命令グループを前記命令テーブルに挿入する前記ステップは、前記ソートされた１つ以上の命令グループのうちの前記最初のＸの命令グループに含まれるプログラムカウンタ相対（ＰＣ相対）命令を、連結命令に置き換えたものを、前記命令テーブルに挿入するステップを含み、
前記連結命令のターゲットアドレスは前記ＰＣ相対命令のターゲットアドレスと同一であり、前記連結命令は、プログラムカウンタの所定の上位ビット部分と、当該連結命令のオペランドを連結して得たターゲットアドレスを用いた処理を行わせるためのものである、請求項１乃至７の何れか一項に記載の命令圧縮方法。
【請求項９】
前記プログラムコードを分析するステップは、同じターゲットアドレスを示す１つまたは複数のプログラムカウンタ相対（ＰＣ相対）命令を同一の命令とみなして、命令グループを検索するステップを含み、
前記ソートされた１つ以上の命令グループのうちの最初のＸの命令グループを前記命令テーブルに挿入する前記ステップは、前記ソートされた１つ以上の命令グループのうちの前記最初のＸの命令グループに含まれるプログラムカウンタ相対（ＰＣ相対）命令を、プログラムカウンタ相対命令のままで、前記命令テーブルに挿入するステップを含み、
前記命令テーブルから読み出される前記プログラムカウンタ相対（ＰＣ相対）命令は、プログラムカウンタの所定の上位ビット部分と、当該プログラムカウンタ相対（ＰＣ相対）命令のオペランドを連結して得たターゲットアドレスを用いた処理を行わせるためのものであり、前記命令テーブルから読み出される前記プログラムカウンタ相対（ＰＣ相対）命令のオペランドは、当該プログラムカウンタ相対（ＰＣ相対）命令のターゲットアドレスの所定の下位ビット部分を示すものである、請求項１乃至７の何れか一項に記載の命令圧縮方法。
【請求項１０】
圧縮された命令を実行するためのプロセッサであって、
１つ以上の命令を含む１つ以上の命令グループを格納する命令テーブルを含む命令テーブル回路であって、前記命令グループは、同じターゲットアドレスを示す１つまたは複数のプログラムカウンタ相対（ＰＣ相対）命令を同一の命令とみなしつつ、プログラムコードから検索されたものであり、前記命令グループはソートされたものである、命令テーブル回路と、
前記プロセッサによって実行されるプログラムコードの命令をフェッチする命令フェッチ回路と、
前記命令フェッチ回路によってフェッチされた命令が命令テーブル実行（ＥＩＴ）命令であるか典型的な命令であるかを識別する命令デコーダと、
前記典型的な命令を実行する実行回路と、
前記命令テーブル内の対応する命令グループを参照するパラメータを有する前記ＥＩＴ命令に対応する前記命令グループの前記１つ以上の命令を実行するＥＩＴ実行回路と、を備える圧縮された命令を実行するプロセッサ。
【請求項１１】
前記命令テーブルはメモリにより実現される、請求項１０に記載のプロセッサ。
【請求項１２】
前記命令テーブルはランダムロジックにより実施される、請求項１０に記載のプロセッサ。
【請求項１３】
前記パラメータは前記ＥＩＴ命令に対応する前記命令グループが存在する場所を示す、前記命令テーブル内のインデックスである、請求項１０，１１又は１２に記載のプロセッサ。
【請求項１４】
前記ＥＩＴ実行回路は、前記パラメータに従って前記命令テーブルから前記対応する命令グループを取得し、そして前記対応する命令グループの前記１つ以上の命令を実行する、請求項１３に記載のプロセッサ。
【請求項１５】
前記ＥＩＴ実行回路がプログラムカウンタ相対（ＰＣ相対）命令を実行すると、前記ＥＩＴ命令回路は、前記プロセッサのプログラムカウンタの最上位側の所定数のビットを前記ＰＣ相対命令に関連しているオペランドと連結することによって前記ＰＣ相対命令のターゲットアドレスを算出する、請求項１４に記載のプロセッサ。
【請求項１６】
前記プロセッサは異なる長さの複数の命令セットを含み、前記１つ以上の命令グループのそれぞれの長さは、前記命令セットのうちの最も長いものの長さより短いか等しく、前記ＥＩＴ命令は前記命令セットの最も短いものに属している、請求項１０乃至１５のいずれか一項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は命令圧縮に関する。特に、本発明は、命令を圧縮するための方法及び圧縮された命令を実行するプロセッサに関する。
【背景技術】
【０００２】
命令セットの長さは、命令セット内の各命令のビットでの長さである。長い命令は、より多くのオペレーションをエンコードすることができる。例えば、レジスタへの大きい定数の移動は、長い命令としてエンコードすることができる。しかし、長い命令セットはプログラムのコードサイズを大きくする。コードサイズを縮小するために、頻繁に用いられる長い命令は、エンコーディング長が十分であれば、それらを短い命令としてエンコードすることによって圧縮することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従来の命令圧縮では、長い命令と短い命令との間のマッピングは全てのプログラムに固定されている。プログラム内で、頻繁に用いられる長い命令が短い命令へのマッピングを有していない場合、このプログラムのコードサイズを削減することができない。
【課題を解決するための手段】
【０００４】
従って、本発明は、命令を圧縮するための方法及び圧縮された命令を実行するプロセッサを対象とする。
【０００５】
本発明の実施形態によれば、以下のステップを含む命令圧縮方法が提供される。プリセット条件に従って、プログラムコード内の１つ以上の命令グループを検索するために、プログラムコードを分析するステップ。各命令グループは、１つ以上の命令を順番に含む。１つ以上の命令グループを、その１つ以上の命令グループのそれぞれのコスト関数に従ってソートするステップ。ソートされた１つ以上の命令グループの最初のＸの命令グループを命令テーブルに挿入するステップ。Ｘは、コスト関数に従って決定される値である。命令テーブルに挿入されるプログラムコード内の１つ以上の命令グループのそれぞれを、対応する命令テーブル実行（execution-on-instruction-table:ＥＩＴ）命令と置き換えるステップ。ＥＩＴ命令は、命令テーブル内の対応する命令グループを参照するパラメータを有する。
【０００６】
本発明の他の実施形態によれば、圧縮された命令を実行するためのプロセッサであって、命令テーブル回路、命令フェッチ回路、命令デコーダ、実行回路及びＥＩＴ実行回路を含むプロセッサが提供される。命令テーブル回路は、１つ以上の命令グループを格納する命令テーブルを含む。１つ以上の命令グループのそれぞれは、１つ以上の命令を含む。命令フェッチ回路は、プロセッサによって実行されるプログラムコードの命令をフェッチする。命令デコーダは、フェッチされた命令がＥＩＴ命令であるか、典型的な命令であるかを識別するために命令フェッチ回路に結合される。ＥＩＴ命令は、命令テーブル内の対応する命令グループを参照するパラメータを有する。実行回路は、典型的な命令を実行するために命令デコーダに結合される。ＥＩＴ実行回路は、命令グループのＥＩＴ命令に対応する１つ以上の命令を実行するために命令テーブル回路及び命令デコーダに結合される。
【発明の効果】
【０００７】
本発明によって提供される方法及びプロセッサは、コードサイズを縮小し、長い命令セットの汎用性を保つために長いコンピュータ命令を短いコンピュータ命令に圧縮することができる。本発明によって提供されるＥＩＴ命令は、最大コードサイズを削減するために最も短い長さの命令としてエンコードすることができる。本発明によって提供される命令テーブルの柔軟性のために、異なるプログラムコードは、頻繁に用いられる長い命令と、それらの対応する短い命令との間に異なる最適なマッピングを有することができる。
【図面の簡単な説明】
【０００８】
添付の図面は、発明のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成する。図面は、本発明の実施形態を例示し、その説明と併せて本発明の原理を説明する。
【０００９】
【図１】本発明の実施形態に従う命令を圧縮するための方法のフローを示す概略図である。
【図２】本発明の実施形態に従う命令の圧縮を示す概略図である。
【図３】本発明の他の実施形態に従う命令の圧縮を示す概略図である。
【図４】本発明の実施形態に従う圧縮命令を実行するためのプロセッサを示す概略図である。
【発明を実施するための形態】
【００１０】
ここで、本発明の本実施形態について、添付の図面に例示された例につき詳細に説明する。可能な限り、図面及び明細書において、同一又は類似の部分を参照するために同一の参照番号が用いられる。
【００１１】
本発明は、命令を圧縮する方法及び圧縮された命令を実行するプロセッサを提供する。プロセッサは、異なる長さの複数の命令セットを含む多長の命令セットアーキテクチャ（ＩＳＡ）を含む。例えば、本発明の下記の実施形態におけるプロセッサは、４８ビットの命令セット、３２ビットの命令セット及び１６ビットの命令セットを含む。
【００１２】
前述の方法は、頻繁に用いられる長い命令グループを命令テーブルに挿入する。各命令グループは、前述したプロセッサによって実行すべきプログラムコード内に１つ以上の命令を順番に含むことができる。本方法は、頻繁に用いられる長い命令グループをより短いＥＩＴ命令に置き換える。各ＥＩＴ命令は、命令テーブル内の対応する命令グループを参照するインデックスであるパラメータを有する。ＥＩＴ命令は、値が比較的小さい１つのパラメータのみを有する。そのため、ＥＩＴ命令は、最も短い命令セットに含めることができる。このように、本発明によって提供される本方法は、プログラムコードのサイズを効率的に縮小しつつ、長い命令セットの汎用性を保つことができる。
【００１３】
図１は、本発明の実施形態に従って命令を圧縮するための方法のフローを示す概略図である。本方法は、前述のプロセッサ又は他の類似の装置によって実行することができる。ステップ１０５では、プリセット条件に従ってプログラムコード内の１つ以上の命令グループを検索するためにプログラムコードを分析する。本実施形態では、プリセット条件は、プログラムコード内の各命令グループの発生回数が、第１の閾値より大きいか等しく、かつ各命令グループの（ビットの）サイズが第２の閾値より小さいか等しい、ということである。第１の閾値は、頻繁に用いられる命令グループを検索するために用いられる。第２の閾値は、命令グループが命令テーブルに確実に適合し得るようにするために用いられる。この実施形態において、第２の閾値は、プロセッサの最も長い命令セットの長さに等しく、これは、命令テーブルが収容できる最も長い命令グループの長さでもある。
【００１４】
図２は、本発明の実施形態に従うプログラムコード内のいくつかの命令グループの例を示す。図１に示される方法は、命令テーブル２３０の助けを借りてプログラムコード２１０をプログラムコード２２０に圧縮することができる。プログラムコード２１０は、命令Ａ〜Ｊを含む。命令Ａ，Ｈ及びＩは、４８ビットの命令セットに属する。命令Ｂ，Ｆ及びＪは、３２ビットの命令セットに属する。命令Ｃ，Ｄ,Ｅ及びＧは、１６ビットの命令セットに属する。第１の閾値が２であり、第２の閾値が４８であるとき、図１のステップ１０５は、プログラムコード２１０内で４つの命令グループを検索することができる。第１の命令グループは命令Ａを含む。第２の命令グループは命令Ｂを含む。第３の命令グループはＣ，Ｄ及びＥを含む。第４の命令グループは命令Ｆ及びＧを含む。
【００１５】
次に、ステップ１１０では、ステップ１０５で検索された命令グループを、各命令グループのコスト関数の降順にソートする。本実施形態において、各命令グループＫのコスト関数は、「ＣＣＫ＊（ＬＫ‐Ｎ）‐Ｍ」と定義される。ＣＣＫは、プログラムコード内の命令グループＫの発生回数である。ＬＫは、命令グループＫの（ビットの）長さである。Ｎは、ＥＩＴ命令の（ビットの）長さであり、これはプロセッサの最も短い命令セットの長さでもある。Ｍは、上述の第２の閾値である。コスト関数は、命令グループを対応するＥＩＴ関数と置き換えることによって節約されたビット数を意味する。
【００１６】
次に、ステップ１１５では、前述のソートの結果に基づいて命令リストを構築する。命令リストは、全ての命令グループを含み、命令リスト内の命令グループは、格納された順序を保持する。そのため、命令リストの第１の命令グループは、コスト関数値が最大の命令グループである。
【００１７】
ステップ１２０では、インデックス変数Iをゼロとするよう設定する。ステップ１２５では、命令テーブルが既にフルであるか否かをチェックし、かつ命令リストが空であるか否かをチェックする。フローは、命令テーブルがフルであるか、又は命令リストが空であるときに終了する。フローは、命令テーブルにまだ空きがあり、命令リストが空でないとき、ステップ１３０に進む。
【００１８】
ステップ１３０では、命令リストから第１の命令グループＧを得る。ステップ１３５では、命令グループＧのコスト関数の値が、第３の閾値より大きいか否かをチェックする。本実施形態において、第３の閾値はゼロである。第３の閾値は、本発明の他の実施形態において、他の任意の整数値とすることができる。フローは、命令グループＧのコスト関数の値が第３の閾値より小さいか等しいときに終了する。フローは、命令グループＧのコスト関数の値が第３の閾値より大きいときステップ１４０に進む。
【００１９】
ステップ１４０では、命令グループＧを命令テーブルのエントリIに入れる。ステップ１４５では、命令リストから命令グループＧを削除する。ステップ１５０では、プログラムコード内の命令グループＧを対応するＥＩＴ命令「ＥＩＴ  I」に置き換える。ステップ１５５では、インデックス変数Iを１だけ増加させ、それからフローはステップ１２５へ戻る。
【００２０】
例えば、図２は、プログラムコード２１０に基づいて生成された命令テーブル２３０を示す。命令テーブル２３０の左側の数字は、命令テーブル２３０のエントリのインデックスである。プログラムコード２１０は、前述の４つの命令グループを、それらの対応するＥＩＴ命令に置き換えた後、プログラムコード２２０になる。各ＥＩＴ命令は、命令テーブル２３０内の対応する命令グループのインデックスであるパラメータを有する。例えば、命令テーブル２３０内の命令Ｃ，Ｄ及びＥを含む第３の命令グループのインデックスは２である。そのため、プログラムコード２１０内の第３の命令グループは、ＥＩＴ命令「ＥＩＴ２」に置き換えられ、定数２はＥＩＴ命令のパラメータである。本実施形態において、各ＥＩＴ命令の長さは、対応する命令グループの長さより短い１６ビットである。そのため、プログラムコード２２０のサイズは、プログラムコード２１０のサイズより、はるかに小さい。
【００２１】
図１の方法は、ステップ１１０でソートされた命令グループのうちの最初のＸの命令グループを命令テーブルに挿入することが、図１及び図２から理解される。Ｘは、Ｙ及びＺの２つの値の最小値である。Ｙは、命令テーブルのエントリの最大数である一方、Ｚは、コスト関数が前述の第３の閾値より大きい命令グループの数である。
【００２２】
図３は、本発明の実施形態に従ってプログラムコード３１０に基づいて生成された命令テーブル３３０を示す。図１に示される方法は、命令テーブル３３０の助けを借りてプログラムコード３１０をプログラムコード３２０に圧縮することができる。
【００２３】
プログラムコード３１０は、２つのプログラムカウンタ相対（ＰＣ相対）ジャンプ命令及び１つの追加命令を含む。用語「ＰＣ相対」は、プロセッサのプログラムカウンタ（ＰＣ）の現在値と命令のオフセットパラメータとを加算することによって計算されるジャンプのターゲットアドレスを意味する。例えば、アドレス0x5000100のＰＣ相対ジャンプ命令は、オフセットパラメータ0xfcを有する。ここで、接頭語「0x」は１６進数の定数を意味する。アドレス0x5000100のＰＣ相対ジャンプ命令のターゲットアドレスは、0x50001fcである。プロセッサの実行フローは、アドレス0x5000100のＰＣ相対ジャンプ命令を実行した後に、アドレス0x50001fcの追加命令にジャンプする。同様に、アドレス0x50001f0のＰＣ相対ジャンプ命令のターゲットアドレスもまた、0x50001fcである。プロセッサの実行フローは、アドレス0x50001f0のＰＣ相対ジャンプ命令を実行した後にアドレス0x50001fcの追加命令にジャンプする。
【００２４】
ジャンプ命令は、大きいオフセットパラメータを許容するために長い命令である。そのため、ジャンプ命令は圧縮に適している。しかし、図１の方法は、ステップ１０５で命令グループを検索するために単に命令コードを比較する場合、プログラムコード３１０内の２つのＰＣ相対ジャンプ命令は、それらのオフセットパラメータが異なるため、異なる命令であるとみなされる。この場合、図１の方法は、プログラムコード３１０内の２つのＰＣ相対ジャンプ命令を見落としてしまうことになる。
【００２５】
本実施形態において、図１の方法のステップ１０５は、２つのＰＣ相対ジャンプ命令のターゲットアドレスを比較することができる。２つのＰＣ相対ジャンプ命令のターゲットアドレスが同一である場合、プログラムコード３１０内の２つのＰＣ相対ジャンプ命令は１つの命令グループに結合することができる。この場合、図１のステップ１４０が、ＰＣ相対ジャンプ命令を命令テーブルに挿入すると、ステップ１４０は、ＰＣ相対ジャンプ命令を、ＰＣ相対ジャンプ命令のターゲットアドレスと同一のターゲットアドレスの連結命令に置き換えることができる。
【００２６】
例えば、図３に示されるように、プログラムコード３１０内のＰＣ相対ジャンプ命令は、命令テーブル３３０内のインデックスが５である命令グループとして認識される。従って、プログラムコード３１０内のＰＣ相対ジャンプ命令は、ＥＩＴ命令「ＥＩＴ５」に置き換えられ、命令テーブル３３０の第５のエントリにおいて、ＰＣ相対ジャンプ命令は、連結命令「PC=concat(PC[31,24], 0x0001fc)」に置き換えられる。本実施形態のＰＣは３２ビットを有する。連結命令は、ＰＣの８個の最上位ビット（ＭＳＢｓ）を、ＰＣ相対ジャンプ命令のターゲットアドレスの２４個の最下位ビット（ＬＳＢｓ）と連結し、その連結の結果をＰＣに格納する。ＥＩＴ命令「ＥＩＴ  ５」は効率的に置き換え、ＰＣ相対ジャンプ命令を圧縮する。本発明の他の実施形態において、上記の数字８，２４及び３２は、他のプリセットされる整数に置き換えることができる。
【００２７】
上記の例は、プロセッサによってサポートされる命令セットが上述の連結命令を含むことを想定している。命令セットに前述の連結命令が含まれていないと、ＰＣ相対ジャンプ命令は、依然として圧縮することができる。この場合、プログラムコード３１０内のＰＣ相対ジャンプ命令は、依然として対応するＥＩＴ命令に置き換えられる。しかし、ＰＣ相対ジャンプ命令に対応する命令テーブル３３０のエントリは、ＰＣ相対ジャンプ命令のオペコード及びオペランドを記録する。この場合、オペランドは、ＰＣ相対ジャンプ命令のターゲットアドレスの２４個のＬＳＢｓである。プロセッサがＥＩＴ命令をフェッチし、命令テーブル３３０の対応するエントリのＰＣ相対ジャンプ命令のオペコードを参照すると、プロセッサは、ＰＣ相対ジャンプ命令を実行する代わりに、前述の連結命令の連結を実行する。ＰＣ相対ジャンプ命令のオペランドは、連結命令のオペランドとしての役目を果たす。図３のＰＣ相対ジャンプ命令を例にとると、ＰＣ相対ジャンプ命令に対応する命令テーブル３３０のエントリは、「jump 0x1fc」を記録し、プロセッサはそのエントリに応じて「concat(PC[31,24], 0x1fc)」を実行する。
【００２８】
上記のＰＣ相対ジャンプ命令の圧縮は、（ＰＣ相対条件分岐命令としても知られている）ＰＣ相対条件ジャンプ命令、ＰＣ相対サブルーチン呼出命令、ＰＣ相対ロード命令、及びＰＣ相対格納命令を含むあらゆるタイプのＰＣ相対命令を圧縮するために拡張することができる。ＰＣ相対ロード命令及びＰＣ相対格納命令のようないくつかのＰＣ相対命令については、これらの命令によってＰＣの内容が変化しないため連結の結果はＰＣに格納されない。
【００２９】
図４は、本発明の実施形態に従って圧縮された命令を実行するプロセッサ４００を示す概略図である。プロセッサ４００は、命令テーブル回路４１０、命令フェッチ回路４２０、命令フェッチ回路４２０に結合された命令デコーダ４３０、命令デコーダ４３０に結合された実行回路４４０、及び命令テーブル回路４１０と命令デコーダ４３０とに結合されたＥＩＴ実行回路４５０を含む。
【００３０】
命令テーブル回路４１０は、前述の命令テーブルを含む。命令テーブル回路４１０は、各プログラムコードが、コードサイズを最大に節約する、カスタマイズされた命令テーブルを含むように、命令テーブルを格納するメモリを含むことができる。あるいは、さらに性能を向上させるために、命令テーブルは、命令テーブル回路４１０内にハードワイヤードすることができる。
【００３１】
命令フェッチ回路４２０はプロセッサ４００によって実行されるプログラムコードの命令をフェッチする。命令デコーダ４３０は、フェッチされた命令がＥＩＴ命令であるのか典型的な命令であるかを決定するために、命令フェッチ回路４２０によってフェッチされた各命令を識別する。ここで、用語「典型的な命令」とはＥＩＴ命令でない任意の命令を意味する。フェッチされた命令が典型的な命令である場合には、実行回路４４０は典型的な命令を実行する。フェッチされた命令がＥＩＴ命令である場合には、ＥＩＴ実行回路４５０が、ＥＩＴ命令のパラメータに従って命令テーブルから対応する命令グループを取得して、対応する命令グループの１つ以上の命令を実行する。
【００３２】
例えば、プロセッサ４００の実行フローが図２のプログラムコード２２０内の命令Ｈに進むと、実行回路４４０は命令Ｈを実行する。次に、ＥＩＴ実行回路４５０は、命令テーブル２３０の第１番目のエントリにおける命令Ｂを実行することによって命令「ＥＩＴ１」を実行する。次に、ＥＩＴ実行回路４５０は、命令テーブル２３０の第０番目のエントリにおける命令Ａを実行することによって命令「ＥＩＴ０」を実行する。次に、ＥＩＴ実行回路４５０は、命令テーブル２３０の第２番目のエントリにおける命令Ｃ，Ｄ及びＥを順次、実行することによって命令「ＥＩＴ２」を実行する。次に、実行回路４４０は命令Ｉを実行する。次に、ＥＩＴ実行回路４５０は、命令テーブル２３０の第１番目のエントリにおける命令Ｂを実行することによって命令「ＥＩＴ１」を実行する。以下、同様に続く。
【００３３】
要するに、本発明によって提供される方法及びプロセッサは、コードサイズを縮小し、長い命令セットの汎用性を保つために、長いコンピュータ命令を短いコンピュータ命令に圧縮することができる。本発明によって提供されるＥＩＴ命令は、最大コードサイズの節約のために最短の長さの命令としてエンコードすることができる。本発明によって提供される命令テーブルの柔軟性のために、異なるプログラムコードは、頻繁に用いられる長い命令と、それらの対応する短い命令との間に異なる最適マッピングを有することができる。
【００３４】
本発明の範囲又は趣旨から逸脱することなく、本発明の構成に様々な修正及び変更をなし得ることは、当業者にとって明らかである。前述の点において、本発明は、以下の請求の範囲及びその均等物の範囲内に属するものであれば、本発明の修正又及び変更もカバーすることを企画している。
【産業上の利用可能性】
【００３５】
本発明は、命令を圧縮する方法及び圧縮された命令を実行するプロセッサに向けられる。本発明は、コンピュータシステム及びコンピュータアーキテクチャの分野に十分に適用可能である。
【符号の説明】
【００３６】
１０５，１１０，１１５，１２０，１２５，１３０，１４０，１４５，１５０，１５５  方法のステップ
２１０，２２０，３１０，３２０  プログラムコード
２３０，３３０  命令テーブル
４００          プロセッサ
４１０          命令テーブル回路
４２０          命令フェッチ回路
４３０          命令デコーダ
４４０          実行回路
４５０          ＥＩＴ実行回路
Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈ，Ｉ，Ｊ  命令
ＥＩＴ０，ＥＩＴ１，ＥＩＴ２，ＥＩＴ３    ＥＩＴ命令
【図１】
0005973507.tif 000002
【図４】
0005973507.tif 000003
【図２】
0005973507.tif 000004
【図３】
0005973507.tif 000005