特許第5973507号(P5973507)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 晶心科技股▲ふん▼有限公司の特許一覧

特許5973507命令を圧縮する方法及び圧縮された命令を実行するプロセッサ
<>
  • 特許5973507-命令を圧縮する方法及び圧縮された命令を実行するプロセッサ 図000002
  • 特許5973507-命令を圧縮する方法及び圧縮された命令を実行するプロセッサ 図000003
  • 特許5973507-命令を圧縮する方法及び圧縮された命令を実行するプロセッサ 図000004
  • 特許5973507-命令を圧縮する方法及び圧縮された命令を実行するプロセッサ 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5973507
(24)【登録日】2016年7月22日
(45)【発行日】2016年8月23日
(54)【発明の名称】命令を圧縮する方法及び圧縮された命令を実行するプロセッサ
(51)【国際特許分類】
   G06F 9/318 20060101AFI20160809BHJP
   G06F 9/30 20060101ALI20160809BHJP
   G06F 9/32 20060101ALI20160809BHJP
   G06F 9/45 20060101ALI20160809BHJP
【FI】
   G06F9/30 320C
   G06F9/30 310B
   G06F9/32 320B
   G06F9/44 322F
【請求項の数】16
【外国語出願】
【全頁数】11
(21)【出願番号】特願2014-155086(P2014-155086)
(22)【出願日】2014年7月30日
(65)【公開番号】特開2015-38728(P2015-38728A)
(43)【公開日】2015年2月26日
【審査請求日】2014年9月30日
(31)【優先権主張番号】13/956,382
(32)【優先日】2013年8月1日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】514143840
【氏名又は名称】晶心科技股▲ふん▼有限公司
【氏名又は名称原語表記】ANDES TECHNOLOGY CORPORATION
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100161148
【弁理士】
【氏名又は名称】福尾 誠
(74)【代理人】
【識別番号】100198568
【弁理士】
【氏名又は名称】君塚 絵美
(72)【発明者】
【氏名】喬 偉豪
(72)【発明者】
【氏名】蘇 泓萌
(72)【発明者】
【氏名】蔡 浩倫
【審査官】 清木 泰
(56)【参考文献】
【文献】 特開平04−075138(JP,A)
【文献】 特開2002−318686(JP,A)
【文献】 特開2007−094813(JP,A)
【文献】 中野猛,中西恒夫,福田晃,コードサイズを縮小する組込み向けプロセッサと目的コードの協調生成,情報処理学会研究報告,日本,社団法人情報処理学会,2000年 8月 5日,第2000巻,第74号,(2000-ARC-139),Pages:139〜144
【文献】 Charles Lefurgy, Peter Bird, I-Cheng Chen, Trevor Mudge,Improving Code Density Using Compression Techniques,Proceedings of Thirtieth Annual IEEE/ACM International Symposium on Microarchitecture,IEEE,1997年12月 1日,Pages:194-203
【文献】 Dipankar Das, Rajeev Kumar, P.P. Chakrabarti,Dictionary Based Code Compression for Variable Length Instruction Encodings,Proceedings of 18th International Conference on VLSI Design held jointly with 4th International Conference on Embedded System Design,IEEE,2005年 1月 3日,Pages:545-550
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30− 9/42
G06F 9/45
(57)【特許請求の範囲】
【請求項1】
命令を圧縮するための方法であって、
各命令グループが順番に1つ以上の命令を含んでいる、プログラムコード内の1つ以上の命令グループをプリセット条件に従って検索するためにプロセッサにより実行すべきプログラムコードを分析し、同じターゲットアドレスを示す1つ又は複数のプログラムカウンタ相対(PC相対)命令を同一の命令とみなし、命令グループを検索するステップと、
前記1つ以上の命令グループそれぞれのコスト関数に従って前記1つ以上の命令グループをソートするステップと、
前記ソートされた1つ以上の命令グループのうちの最初のXの命令グループを命令テーブルに挿入するステップであって、ここにXは、前記コスト関数に従って決定される値とするステップと、
プログラムコード内の、前記命令テーブルに挿入される前記1つ以上の命令グループのそれぞれを、対応する命令テーブル実行(EIT)命令と置き換えるステップと、を含み、
前記EIT命令は、前記命令テーブル内の前記対応する命令グループを参照するパラメータを有する、命令圧縮方法。
【請求項2】
前記プリセット条件は、前記プログラムコード内の前記各命令グループの発生回数が第1の閾値より大きいか等しく、かつ、前記各命令グループの長さが第2の閾値より小さいか等しいということである、請求項1に記載の命令圧縮方法。
【請求項3】
前記1つ以上の命令グループそれぞれの前記コスト関数は、前記命令グループの前記発生回数、前記命令グループの長さ、前記EIT命令の長さ、及び前記第2の閾値に従って定義される、請求項2に記載の命令圧縮方法。
【請求項4】
前記プロセッサは、異なる長さの複数の命令セットを含み、前記第2の閾値は前記命令セットのうち最も長いものの長さに等しく、前記EIT命令は前記命令セットのうち最も短いものに属する、請求項2又は3に記載の命令圧縮方法。
【請求項5】
前記パラメータは、前記EIT命令に対応する前記命令グループが存在する場所を示す、前記命令テーブル内のインデックスである、請求項1乃至4の何れか一項に記載の命令圧縮方法。
【請求項6】
前記1つ以上の命令グループをソートする前記ステップは、1つ以上の命令グループを、前記1つ以上の命令グループそれぞれの前記コスト関数の降順にソートするステップを含む、請求項1乃至5の何れか一項に記載の命令圧縮方法。
【請求項7】
前記Xは、Y及びZの最小値であり、Yは前記命令テーブルのエントリの最大数であり、Zはコスト関数が第3の閾値より大きい前記命令グループの数である、請求項1乃至6の何れか一項に記載の命令圧縮方法。
【請求項8】
前記プログラムコードを分析するステップは、同じターゲットアドレスを示す1つまたは複数のプログラムカウンタ相対命令を同一の命令とみなして、命令グループを検索するステップを含み、
前記ソートされた1つ以上の命令グループのうちの最初のXの命令グループを前記命令テーブルに挿入する前記ステップは、前記ソートされた1つ以上の命令グループのうちの前記最初のXの命令グループに含まれるプログラムカウンタ相対(PC相対)命令を、連結命令に置き換えたものを、前記命令テーブルに挿入するステップを含み、
前記連結命令のターゲットアドレスは前記PC相対命令のターゲットアドレスと同一であり、前記連結命令は、プログラムカウンタの所定の上位ビット部分と、当該連結命令のオペランドを連結して得たターゲットアドレスを用いた処理を行わせるためのものである、請求項1乃至7の何れか一項に記載の命令圧縮方法。
【請求項9】
前記プログラムコードを分析するステップは、同じターゲットアドレスを示す1つまたは複数のプログラムカウンタ相対(PC相対)命令を同一の命令とみなして、命令グループを検索するステップを含み、
前記ソートされた1つ以上の命令グループのうちの最初のXの命令グループを前記命令テーブルに挿入する前記ステップは、前記ソートされた1つ以上の命令グループのうちの前記最初のXの命令グループに含まれるプログラムカウンタ相対(PC相対)命令を、プログラムカウンタ相対命令のままで、前記命令テーブルに挿入するステップを含み、
前記命令テーブルから読み出される前記プログラムカウンタ相対(PC相対)命令は、プログラムカウンタの所定の上位ビット部分と、当該プログラムカウンタ相対(PC相対)命令のオペランドを連結して得たターゲットアドレスを用いた処理を行わせるためのものであり、前記命令テーブルから読み出される前記プログラムカウンタ相対(PC相対)命令のオペランドは、当該プログラムカウンタ相対(PC相対)命令のターゲットアドレスの所定の下位ビット部分を示すものである、請求項1乃至7の何れか一項に記載の命令圧縮方法。
【請求項10】
圧縮された命令を実行するためのプロセッサであって、
1つ以上の命令を含む1つ以上の命令グループを格納する命令テーブルを含む命令テーブル回路であって、前記命令グループは、同じターゲットアドレスを示す1つまたは複数のプログラムカウンタ相対(PC相対)命令を同一の命令とみなしつつ、プログラムコードから検索されたものであり、前記命令グループはソートされたものである、命令テーブル回路と、
前記プロセッサによって実行されるプログラムコードの命令をフェッチする命令フェッチ回路と、
前記命令フェッチ回路によってフェッチされた命令が命令テーブル実行(EIT)命令であるか典型的な命令であるかを識別する命令デコーダと、
前記典型的な命令を実行する実行回路と、
前記命令テーブル内の対応する命令グループを参照するパラメータを有する前記EIT命令に対応する前記命令グループの前記1つ以上の命令を実行するEIT実行回路と、を備える圧縮された命令を実行するプロセッサ。
【請求項11】
記命令テーブルはメモリにより実現される、請求項10に記載のプロセッサ。
【請求項12】
記命令テーブルはランダムロジックにより実施される、請求項10に記載のプロセッサ。
【請求項13】
前記パラメータは前記EIT命令に対応する前記命令グループが存在する場所を示す、前記命令テーブル内のインデックスである、請求項10,11又は12に記載のプロセッサ。
【請求項14】
前記EIT実行回路は、前記パラメータに従って前記命令テーブルから前記対応する命令グループを取得し、そして前記対応する命令グループの前記1つ以上の命令を実行する、請求項13に記載のプロセッサ。
【請求項15】
前記EIT実行回路がプログラムカウンタ相対(PC相対)命令を実行すると、前記EIT命令回路は、前記プロセッサのプログラムカウンタの最上位側の所定数のビットを前記PC相対命令に関連しているオペランドと連結することによって前記PC相対命令のターゲットアドレスを算出する、請求項14に記載のプロセッサ。
【請求項16】
前記プロセッサは異なる長さの複数の命令セットを含み、前記1つ以上の命令グループのそれぞれの長さは、前記命令セットのうちの最も長いものの長さより短いか等しく、前記EIT命令は前記命令セットの最も短いものに属している、請求項10乃至15のいずれか一項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は命令圧縮に関する。特に、本発明は、命令を圧縮するための方法及び圧縮された命令を実行するプロセッサに関する。
【背景技術】
【0002】
命令セットの長さは、命令セット内の各命令のビットでの長さである。長い命令は、より多くのオペレーションをエンコードすることができる。例えば、レジスタへの大きい定数の移動は、長い命令としてエンコードすることができる。しかし、長い命令セットはプログラムのコードサイズを大きくする。コードサイズを縮小するために、頻繁に用いられる長い命令は、エンコーディング長が十分であれば、それらを短い命令としてエンコードすることによって圧縮することができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従来の命令圧縮では、長い命令と短い命令との間のマッピングは全てのプログラムに固定されている。プログラム内で、頻繁に用いられる長い命令が短い命令へのマッピングを有していない場合、このプログラムのコードサイズを削減することができない。
【課題を解決するための手段】
【0004】
従って、本発明は、命令を圧縮するための方法及び圧縮された命令を実行するプロセッサを対象とする。
【0005】
本発明の実施形態によれば、以下のステップを含む命令圧縮方法が提供される。プリセット条件に従って、プログラムコード内の1つ以上の命令グループを検索するために、プログラムコードを分析するステップ。各命令グループは、1つ以上の命令を順番に含む。1つ以上の命令グループを、その1つ以上の命令グループのそれぞれのコスト関数に従ってソートするステップ。ソートされた1つ以上の命令グループの最初のXの命令グループを命令テーブルに挿入するステップ。Xは、コスト関数に従って決定される値である。命令テーブルに挿入されるプログラムコード内の1つ以上の命令グループのそれぞれを、対応する命令テーブル実行(execution-on-instruction-table:EIT)命令と置き換えるステップ。EIT命令は、命令テーブル内の対応する命令グループを参照するパラメータを有する。
【0006】
本発明の他の実施形態によれば、圧縮された命令を実行するためのプロセッサであって、命令テーブル回路、命令フェッチ回路、命令デコーダ、実行回路及びEIT実行回路を含むプロセッサが提供される。命令テーブル回路は、1つ以上の命令グループを格納する命令テーブルを含む。1つ以上の命令グループのそれぞれは、1つ以上の命令を含む。命令フェッチ回路は、プロセッサによって実行されるプログラムコードの命令をフェッチする。命令デコーダは、フェッチされた命令がEIT命令であるか、典型的な命令であるかを識別するために命令フェッチ回路に結合される。EIT命令は、命令テーブル内の対応する命令グループを参照するパラメータを有する。実行回路は、典型的な命令を実行するために命令デコーダに結合される。EIT実行回路は、命令グループのEIT命令に対応する1つ以上の命令を実行するために命令テーブル回路及び命令デコーダに結合される。
【発明の効果】
【0007】
本発明によって提供される方法及びプロセッサは、コードサイズを縮小し、長い命令セットの汎用性を保つために長いコンピュータ命令を短いコンピュータ命令に圧縮することができる。本発明によって提供されるEIT命令は、最大コードサイズを削減するために最も短い長さの命令としてエンコードすることができる。本発明によって提供される命令テーブルの柔軟性のために、異なるプログラムコードは、頻繁に用いられる長い命令と、それらの対応する短い命令との間に異なる最適なマッピングを有することができる。
【図面の簡単な説明】
【0008】
添付の図面は、発明のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成する。図面は、本発明の実施形態を例示し、その説明と併せて本発明の原理を説明する。
【0009】
図1】本発明の実施形態に従う命令を圧縮するための方法のフローを示す概略図である。
図2】本発明の実施形態に従う命令の圧縮を示す概略図である。
図3】本発明の他の実施形態に従う命令の圧縮を示す概略図である。
図4】本発明の実施形態に従う圧縮命令を実行するためのプロセッサを示す概略図である。
【発明を実施するための形態】
【0010】
ここで、本発明の本実施形態について、添付の図面に例示された例につき詳細に説明する。可能な限り、図面及び明細書において、同一又は類似の部分を参照するために同一の参照番号が用いられる。
【0011】
本発明は、命令を圧縮する方法及び圧縮された命令を実行するプロセッサを提供する。プロセッサは、異なる長さの複数の命令セットを含む多長の命令セットアーキテクチャ(ISA)を含む。例えば、本発明の下記の実施形態におけるプロセッサは、48ビットの命令セット、32ビットの命令セット及び16ビットの命令セットを含む。
【0012】
前述の方法は、頻繁に用いられる長い命令グループを命令テーブルに挿入する。各命令グループは、前述したプロセッサによって実行すべきプログラムコード内に1つ以上の命令を順番に含むことができる。本方法は、頻繁に用いられる長い命令グループをより短いEIT命令に置き換える。各EIT命令は、命令テーブル内の対応する命令グループを参照するインデックスであるパラメータを有する。EIT命令は、値が比較的小さい1つのパラメータのみを有する。そのため、EIT命令は、最も短い命令セットに含めることができる。このように、本発明によって提供される本方法は、プログラムコードのサイズを効率的に縮小しつつ、長い命令セットの汎用性を保つことができる。
【0013】
図1は、本発明の実施形態に従って命令を圧縮するための方法のフローを示す概略図である。本方法は、前述のプロセッサ又は他の類似の装置によって実行することができる。ステップ105では、プリセット条件に従ってプログラムコード内の1つ以上の命令グループを検索するためにプログラムコードを分析する。本実施形態では、プリセット条件は、プログラムコード内の各命令グループの発生回数が、第1の閾値より大きいか等しく、かつ各命令グループの(ビットの)サイズが第2の閾値より小さいか等しい、ということである。第1の閾値は、頻繁に用いられる命令グループを検索するために用いられる。第2の閾値は、命令グループが命令テーブルに確実に適合し得るようにするために用いられる。この実施形態において、第2の閾値は、プロセッサの最も長い命令セットの長さに等しく、これは、命令テーブルが収容できる最も長い命令グループの長さでもある。
【0014】
図2は、本発明の実施形態に従うプログラムコード内のいくつかの命令グループの例を示す。図1に示される方法は、命令テーブル230の助けを借りてプログラムコード210をプログラムコード220に圧縮することができる。プログラムコード210は、命令A〜Jを含む。命令A,H及びIは、48ビットの命令セットに属する。命令B,F及びJは、32ビットの命令セットに属する。命令C,D,E及びGは、16ビットの命令セットに属する。第1の閾値が2であり、第2の閾値が48であるとき、図1のステップ105は、プログラムコード210内で4つの命令グループを検索することができる。第1の命令グループは命令Aを含む。第2の命令グループは命令Bを含む。第3の命令グループはC,D及びEを含む。第4の命令グループは命令F及びGを含む。
【0015】
次に、ステップ110では、ステップ105で検索された命令グループを、各命令グループのコスト関数の降順にソートする。本実施形態において、各命令グループKのコスト関数は、「CC*(L‐N)‐M」と定義される。CCは、プログラムコード内の命令グループKの発生回数である。Lは、命令グループKの(ビットの)長さである。Nは、EIT命令の(ビットの)長さであり、これはプロセッサの最も短い命令セットの長さでもある。Mは、上述の第2の閾値である。コスト関数は、命令グループを対応するEIT関数と置き換えることによって節約されたビット数を意味する。
【0016】
次に、ステップ115では、前述のソートの結果に基づいて命令リストを構築する。命令リストは、全ての命令グループを含み、命令リスト内の命令グループは、格納された順序を保持する。そのため、命令リストの第1の命令グループは、コスト関数値が最大の命令グループである。
【0017】
ステップ120では、インデックス変数Iをゼロとするよう設定する。ステップ125では、命令テーブルが既にフルであるか否かをチェックし、かつ命令リストが空であるか否かをチェックする。フローは、命令テーブルがフルであるか、又は命令リストが空であるときに終了する。フローは、命令テーブルにまだ空きがあり、命令リストが空でないとき、ステップ130に進む。
【0018】
ステップ130では、命令リストから第1の命令グループGを得る。ステップ135では、命令グループGのコスト関数の値が、第3の閾値より大きいか否かをチェックする。本実施形態において、第3の閾値はゼロである。第3の閾値は、本発明の他の実施形態において、他の任意の整数値とすることができる。フローは、命令グループGのコスト関数の値が第3の閾値より小さいか等しいときに終了する。フローは、命令グループGのコスト関数の値が第3の閾値より大きいときステップ140に進む。
【0019】
ステップ140では、命令グループGを命令テーブルのエントリIに入れる。ステップ145では、命令リストから命令グループGを削除する。ステップ150では、プログラムコード内の命令グループGを対応するEIT命令「EIT I」に置き換える。ステップ155では、インデックス変数Iを1だけ増加させ、それからフローはステップ125へ戻る。
【0020】
例えば、図2は、プログラムコード210に基づいて生成された命令テーブル230を示す。命令テーブル230の左側の数字は、命令テーブル230のエントリのインデックスである。プログラムコード210は、前述の4つの命令グループを、それらの対応するEIT命令に置き換えた後、プログラムコード220になる。各EIT命令は、命令テーブル230内の対応する命令グループのインデックスであるパラメータを有する。例えば、命令テーブル230内の命令C,D及びEを含む第3の命令グループのインデックスは2である。そのため、プログラムコード210内の第3の命令グループは、EIT命令「EIT2」に置き換えられ、定数2はEIT命令のパラメータである。本実施形態において、各EIT命令の長さは、対応する命令グループの長さより短い16ビットである。そのため、プログラムコード220のサイズは、プログラムコード210のサイズより、はるかに小さい。
【0021】
図1の方法は、ステップ110でソートされた命令グループのうちの最初のXの命令グループを命令テーブルに挿入することが、図1及び図2から理解される。Xは、Y及びZの2つの値の最小値である。Yは、命令テーブルのエントリの最大数である一方、Zは、コスト関数が前述の第3の閾値より大きい命令グループの数である。
【0022】
図3は、本発明の実施形態に従ってプログラムコード310に基づいて生成された命令テーブル330を示す。図1に示される方法は、命令テーブル330の助けを借りてプログラムコード310をプログラムコード320に圧縮することができる。
【0023】
プログラムコード310は、2つのプログラムカウンタ相対(PC相対)ジャンプ命令及び1つの追加命令を含む。用語「PC相対」は、プロセッサのプログラムカウンタ(PC)の現在値と命令のオフセットパラメータとを加算することによって計算されるジャンプのターゲットアドレスを意味する。例えば、アドレス0x5000100のPC相対ジャンプ命令は、オフセットパラメータ0xfcを有する。ここで、接頭語「0x」は16進数の定数を意味する。アドレス0x5000100のPC相対ジャンプ命令のターゲットアドレスは、0x50001fcである。プロセッサの実行フローは、アドレス0x5000100のPC相対ジャンプ命令を実行した後に、アドレス0x50001fcの追加命令にジャンプする。同様に、アドレス0x50001f0のPC相対ジャンプ命令のターゲットアドレスもまた、0x50001fcである。プロセッサの実行フローは、アドレス0x50001f0のPC相対ジャンプ命令を実行した後にアドレス0x50001fcの追加命令にジャンプする。
【0024】
ジャンプ命令は、大きいオフセットパラメータを許容するために長い命令である。そのため、ジャンプ命令は圧縮に適している。しかし、図1の方法は、ステップ105で命令グループを検索するために単に命令コードを比較する場合、プログラムコード310内の2つのPC相対ジャンプ命令は、それらのオフセットパラメータが異なるため、異なる命令であるとみなされる。この場合、図1の方法は、プログラムコード310内の2つのPC相対ジャンプ命令を見落としてしまうことになる。
【0025】
本実施形態において、図1の方法のステップ105は、2つのPC相対ジャンプ命令のターゲットアドレスを比較することができる。2つのPC相対ジャンプ命令のターゲットアドレスが同一である場合、プログラムコード310内の2つのPC相対ジャンプ命令は1つの命令グループに結合することができる。この場合、図1のステップ140が、PC相対ジャンプ命令を命令テーブルに挿入すると、ステップ140は、PC相対ジャンプ命令を、PC相対ジャンプ命令のターゲットアドレスと同一のターゲットアドレスの連結命令に置き換えることができる。
【0026】
例えば、図3に示されるように、プログラムコード310内のPC相対ジャンプ命令は、命令テーブル330内のインデックスが5である命令グループとして認識される。従って、プログラムコード310内のPC相対ジャンプ命令は、EIT命令「EIT5」に置き換えられ、命令テーブル330の第5のエントリにおいて、PC相対ジャンプ命令は、連結命令「PC=concat(PC[31,24], 0x0001fc)」に置き換えられる。本実施形態のPCは32ビットを有する。連結命令は、PCの8個の最上位ビット(MSBs)を、PC相対ジャンプ命令のターゲットアドレスの24個の最下位ビット(LSBs)と連結し、その連結の結果をPCに格納する。EIT命令「EIT 5」は効率的に置き換え、PC相対ジャンプ命令を圧縮する。本発明の他の実施形態において、上記の数字8,24及び32は、他のプリセットされる整数に置き換えることができる。
【0027】
上記の例は、プロセッサによってサポートされる命令セットが上述の連結命令を含むことを想定している。命令セットに前述の連結命令が含まれていないと、PC相対ジャンプ命令は、依然として圧縮することができる。この場合、プログラムコード310内のPC相対ジャンプ命令は、依然として対応するEIT命令に置き換えられる。しかし、PC相対ジャンプ命令に対応する命令テーブル330のエントリは、PC相対ジャンプ命令のオペコード及びオペランドを記録する。この場合、オペランドは、PC相対ジャンプ命令のターゲットアドレスの24個のLSBsである。プロセッサがEIT命令をフェッチし、命令テーブル330の対応するエントリのPC相対ジャンプ命令のオペコードを参照すると、プロセッサは、PC相対ジャンプ命令を実行する代わりに、前述の連結命令の連結を実行する。PC相対ジャンプ命令のオペランドは、連結命令のオペランドとしての役目を果たす。図3のPC相対ジャンプ命令を例にとると、PC相対ジャンプ命令に対応する命令テーブル330のエントリは、「jump 0x1fc」を記録し、プロセッサはそのエントリに応じて「concat(PC[31,24], 0x1fc)」を実行する。
【0028】
上記のPC相対ジャンプ命令の圧縮は、(PC相対条件分岐命令としても知られている)PC相対条件ジャンプ命令、PC相対サブルーチン呼出命令、PC相対ロード命令、及びPC相対格納命令を含むあらゆるタイプのPC相対命令を圧縮するために拡張することができる。PC相対ロード命令及びPC相対格納命令のようないくつかのPC相対命令については、これらの命令によってPCの内容が変化しないため連結の結果はPCに格納されない。
【0029】
図4は、本発明の実施形態に従って圧縮された命令を実行するプロセッサ400を示す概略図である。プロセッサ400は、命令テーブル回路410、命令フェッチ回路420、命令フェッチ回路420に結合された命令デコーダ430、命令デコーダ430に結合された実行回路440、及び命令テーブル回路410と命令デコーダ430とに結合されたEIT実行回路450を含む。
【0030】
命令テーブル回路410は、前述の命令テーブルを含む。命令テーブル回路410は、各プログラムコードが、コードサイズを最大に節約する、カスタマイズされた命令テーブルを含むように、命令テーブルを格納するメモリを含むことができる。あるいは、さらに性能を向上させるために、命令テーブルは、命令テーブル回路410内にハードワイヤードすることができる。
【0031】
命令フェッチ回路420はプロセッサ400によって実行されるプログラムコードの命令をフェッチする。命令デコーダ430は、フェッチされた命令がEIT命令であるのか典型的な命令であるかを決定するために、命令フェッチ回路420によってフェッチされた各命令を識別する。ここで、用語「典型的な命令」とはEIT命令でない任意の命令を意味する。フェッチされた命令が典型的な命令である場合には、実行回路440は典型的な命令を実行する。フェッチされた命令がEIT命令である場合には、EIT実行回路450が、EIT命令のパラメータに従って命令テーブルから対応する命令グループを取得して、対応する命令グループの1つ以上の命令を実行する。
【0032】
例えば、プロセッサ400の実行フローが図2のプログラムコード220内の命令Hに進むと、実行回路440は命令Hを実行する。次に、EIT実行回路450は、命令テーブル230の第1番目のエントリにおける命令Bを実行することによって命令「EIT1」を実行する。次に、EIT実行回路450は、命令テーブル230の第0番目のエントリにおける命令Aを実行することによって命令「EIT0」を実行する。次に、EIT実行回路450は、命令テーブル230の第2番目のエントリにおける命令C,D及びEを順次、実行することによって命令「EIT2」を実行する。次に、実行回路440は命令Iを実行する。次に、EIT実行回路450は、命令テーブル230の第1番目のエントリにおける命令Bを実行することによって命令「EIT1」を実行する。以下、同様に続く。
【0033】
要するに、本発明によって提供される方法及びプロセッサは、コードサイズを縮小し、長い命令セットの汎用性を保つために、長いコンピュータ命令を短いコンピュータ命令に圧縮することができる。本発明によって提供されるEIT命令は、最大コードサイズの節約のために最短の長さの命令としてエンコードすることができる。本発明によって提供される命令テーブルの柔軟性のために、異なるプログラムコードは、頻繁に用いられる長い命令と、それらの対応する短い命令との間に異なる最適マッピングを有することができる。
【0034】
本発明の範囲又は趣旨から逸脱することなく、本発明の構成に様々な修正及び変更をなし得ることは、当業者にとって明らかである。前述の点において、本発明は、以下の請求の範囲及びその均等物の範囲内に属するものであれば、本発明の修正又及び変更もカバーすることを企画している。
【産業上の利用可能性】
【0035】
本発明は、命令を圧縮する方法及び圧縮された命令を実行するプロセッサに向けられる。本発明は、コンピュータシステム及びコンピュータアーキテクチャの分野に十分に適用可能である。
【符号の説明】
【0036】
105,110,115,120,125,130,140,145,150,155 方法のステップ
210,220,310,320 プログラムコード
230,330 命令テーブル
400 プロセッサ
410 命令テーブル回路
420 命令フェッチ回路
430 命令デコーダ
440 実行回路
450 EIT実行回路
A,B,C,D,E,F,G,H,I,J 命令
EIT0,EIT1,EIT2,EIT3 EIT命令
図1
図4
図2
図3