JP2015038728A - 命令を圧縮する方法及び圧縮された命令を実行するプロセッサ - Google Patents

命令を圧縮する方法及び圧縮された命令を実行するプロセッサ Download PDF

Info

Publication number
JP2015038728A
JP2015038728A JP2014155086A JP2014155086A JP2015038728A JP 2015038728 A JP2015038728 A JP 2015038728A JP 2014155086 A JP2014155086 A JP 2014155086A JP 2014155086 A JP2014155086 A JP 2014155086A JP 2015038728 A JP2015038728 A JP 2015038728A
Authority
JP
Japan
Prior art keywords
instruction
groups
eit
processor
instructions
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.)
Granted
Application number
JP2014155086A
Other languages
English (en)
Other versions
JP5973507B2 (ja
Inventor
偉豪 喬
Wei-Hao Chiao
偉豪 喬
泓萌 蘇
Hong-Men Su
泓萌 蘇
浩倫 蔡
Haw-Luen Tsai
浩倫 蔡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Andes Technology Corp
Original Assignee
Andes Technology Corp
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 Andes Technology Corp filed Critical Andes Technology Corp
Publication of JP2015038728A publication Critical patent/JP2015038728A/ja
Application granted granted Critical
Publication of JP5973507B2 publication Critical patent/JP5973507B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】コードサイズを削減する命令圧縮方法及び圧縮された命令を実行するプロセッサを提供する。
【解決手段】プリセット条件に従って、プログラムコード内の1つ以上の命令グループを検索するために、プロセッサによって実行すべきプログラムコードを分析する。各命令グループは、1つ以上の命令を順番に含む。1つ以上の命令グループを、その1つ以上の命令グループのそれぞれのコスト関数に従ってソートする110。ソートされた1つ以上の命令グループのうちの最初のXの命令グループを命令テーブルに挿入する140。Xは、コスト関数に従って決定される値である。命令テーブルに挿入されたプログラムコード内の1つ以上の命令グループのそれぞれを対応する命令テーブル実行(EIT)命令と置き換える150。EIT命令は、命令テーブル内の対応する命令グループを参照するパラメータを有する。
【選択図】図1

Description

本発明は命令圧縮に関する。特に、本発明は、命令を圧縮するための方法及び圧縮された命令を実行するプロセッサに関する。
命令セットの長さは、命令セット内の各命令のビットでの長さである。長い命令は、より多くのオペレーションをエンコードすることができる。例えば、レジスタへの大きい定数の移動は、長い命令としてエンコードすることができる。しかし、長い命令セットはプログラムのコードサイズを大きくする。コードサイズを縮小するために、頻繁に用いられる長い命令は、エンコーディング長が十分であれば、それらを短い命令としてエンコードすることによって圧縮することができる。
従来の命令圧縮では、長い命令と短い命令との間のマッピングは全てのプログラムに固定されている。プログラム内で、頻繁に用いられる長い命令が短い命令へのマッピングを有していない場合、このプログラムのコードサイズを削減することができない。
従って、本発明は、命令を圧縮するための方法及び圧縮された命令を実行するプロセッサを対象とする。
本発明の実施形態によれば、以下のステップを含む命令圧縮方法が提供される。プリセット条件に従って、プログラムコード内の1つ以上の命令グループを検索するために、プログラムコードを分析するステップ。各命令グループは、1つ以上の命令を順番に含む。1つ以上の命令グループを、その1つ以上の命令グループのそれぞれのコスト関数に従ってソートするステップ。ソートされた1つ以上の命令グループの最初のXの命令グループを命令テーブルに挿入するステップ。Xは、コスト関数に従って決定される値である。命令テーブルに挿入されるプログラムコード内の1つ以上の命令グループのそれぞれを、対応する命令テーブル実行(execution-on-instruction-table:EIT)命令と置き換えるステップ。EIT命令は、命令テーブル内の対応する命令グループを参照するパラメータを有する。
本発明の他の実施形態によれば、圧縮された命令を実行するためのプロセッサであって、命令テーブル回路、命令フェッチ回路、命令デコーダ、実行回路及びEIT実行回路を含むプロセッサが提供される。命令テーブル回路は、1つ以上の命令グループを格納する命令テーブルを含む。1つ以上の命令グループのそれぞれは、1つ以上の命令を含む。命令フェッチ回路は、プロセッサによって実行されるプログラムコードの命令をフェッチする。命令デコーダは、フェッチされた命令がEIT命令であるか、典型的な命令であるかを識別するために命令フェッチ回路に結合される。EIT命令は、命令テーブル内の対応する命令グループを参照するパラメータを有する。実行回路は、典型的な命令を実行するために命令デコーダに結合される。EIT実行回路は、命令グループのEIT命令に対応する1つ以上の命令を実行するために命令テーブル回路及び命令デコーダに結合される。
本発明によって提供される方法及びプロセッサは、コードサイズを縮小し、長い命令セットの汎用性を保つために長いコンピュータ命令を短いコンピュータ命令に圧縮することができる。本発明によって提供されるEIT命令は、最大コードサイズを削減するために最も短い長さの命令としてエンコードすることができる。本発明によって提供される命令テーブルの柔軟性のために、異なるプログラムコードは、頻繁に用いられる長い命令と、それらの対応する短い命令との間に異なる最適なマッピングを有することができる。
添付の図面は、発明のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成する。図面は、本発明の実施形態を例示し、その説明と併せて本発明の原理を説明する。
本発明の実施形態に従う命令を圧縮するための方法のフローを示す概略図である。 本発明の実施形態に従う命令の圧縮を示す概略図である。 本発明の他の実施形態に従う命令の圧縮を示す概略図である。 本発明の実施形態に従う圧縮命令を実行するためのプロセッサを示す概略図である。
ここで、本発明の本実施形態について、添付の図面に例示された例につき詳細に説明する。可能な限り、図面及び明細書において、同一又は類似の部分を参照するために同一の参照番号が用いられる。
本発明は、命令を圧縮する方法及び圧縮された命令を実行するプロセッサを提供する。プロセッサは、異なる長さの複数の命令セットを含む多長の命令セットアーキテクチャ(ISA)を含む。例えば、本発明の下記の実施形態におけるプロセッサは、48ビットの命令セット、32ビットの命令セット及び16ビットの命令セットを含む。
前述の方法は、頻繁に用いられる長い命令グループを命令テーブルに挿入する。各命令グループは、前述したプロセッサによって実行すべきプログラムコード内に1つ以上の命令を順番に含むことができる。本方法は、頻繁に用いられる長い命令グループをより短いEIT命令に置き換える。各EIT命令は、命令テーブル内の対応する命令グループを参照するインデックスであるパラメータを有する。EIT命令は、値が比較的小さい1つのパラメータのみを有する。そのため、EIT命令は、最も短い命令セットに含めることができる。このように、本発明によって提供される本方法は、プログラムコードのサイズを効率的に縮小しつつ、長い命令セットの汎用性を保つことができる。
図1は、本発明の実施形態に従って命令を圧縮するための方法のフローを示す概略図である。本方法は、前述のプロセッサ又は他の類似の装置によって実行することができる。ステップ105では、プリセット条件に従ってプログラムコード内の1つ以上の命令グループを検索するためにプログラムコードを分析する。本実施形態では、プリセット条件は、プログラムコード内の各命令グループの発生回数が、第1の閾値より大きいか等しく、かつ各命令グループの(ビットの)サイズが第2の閾値より小さいか等しい、ということである。第1の閾値は、頻繁に用いられる命令グループを検索するために用いられる。第2の閾値は、命令グループが命令テーブルに確実に適合し得るようにするために用いられる。この実施形態において、第2の閾値は、プロセッサの最も長い命令セットの長さに等しく、これは、命令テーブルが収容できる最も長い命令グループの長さでもある。
図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を含む。
次に、ステップ110では、ステップ105で検索された命令グループを、各命令グループのコスト関数の降順にソートする。本実施形態において、各命令グループKのコスト関数は、「CC*(L‐N)‐M」と定義される。CCは、プログラムコード内の命令グループKの発生回数である。Lは、命令グループKの(ビットの)長さである。Nは、EIT命令の(ビットの)長さであり、これはプロセッサの最も短い命令セットの長さでもある。Mは、上述の第2の閾値である。コスト関数は、命令グループを対応するEIT関数と置き換えることによって節約されたビット数を意味する。
次に、ステップ115では、前述のソートの結果に基づいて命令リストを構築する。命令リストは、全ての命令グループを含み、命令リスト内の命令グループは、格納された順序を保持する。そのため、命令リストの第1の命令グループは、コスト関数値が最大の命令グループである。
ステップ120では、インデックス変数Iをゼロとするよう設定する。ステップ125では、命令テーブルが既にフルであるか否かをチェックし、かつ命令リストが空であるか否かをチェックする。フローは、命令テーブルがフルであるか、又は命令リストが空であるときに終了する。フローは、命令テーブルにまだ空きがあり、命令リストが空でないとき、ステップ130に進む。
ステップ130では、命令リストから第1の命令グループGを得る。ステップ135では、命令グループGのコスト関数の値が、第3の閾値より大きいか否かをチェックする。本実施形態において、第3の閾値はゼロである。第3の閾値は、本発明の他の実施形態において、他の任意の整数値とすることができる。フローは、命令グループGのコスト関数の値が第3の閾値より小さいか等しいときに終了する。フローは、命令グループGのコスト関数の値が第3の閾値より大きいときステップ140に進む。
ステップ140では、命令グループGを命令テーブルのエントリIに入れる。ステップ145では、命令リストから命令グループGを削除する。ステップ150では、プログラムコード内の命令グループGを対応するEIT命令「EIT I」に置き換える。ステップ155では、インデックス変数Iを1だけ増加させ、それからフローはステップ125へ戻る。
例えば、図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のサイズより、はるかに小さい。
図1の方法は、ステップ110でソートされた命令グループのうちの最初のXの命令グループを命令テーブルに挿入することが、図1及び図2から理解される。Xは、Y及びZの2つの値の最小値である。Yは、命令テーブルのエントリの最大数である一方、Zは、コスト関数が前述の第3の閾値より大きい命令グループの数である。
図3は、本発明の実施形態に従ってプログラムコード310に基づいて生成された命令テーブル330を示す。図1に示される方法は、命令テーブル330の助けを借りてプログラムコード310をプログラムコード320に圧縮することができる。
プログラムコード310は、2つのプログラムカウンタ相対(PC相対)ジャンプ命令及び1つの追加命令を含む。用語「PC相対」は、プロセッサのプログラムカウンタ(PC)の現在値と命令のオフセットパラメータとを加算することによって計算されるジャンプのターゲットアドレスを意味する。例えば、アドレス0x5000100のPC相対ジャンプ命令は、オフセットパラメータ0xfcを有する。ここで、接頭語「0x」は16進数の定数を意味する。アドレス0x5000100のPC相対ジャンプ命令のターゲットアドレスは、0x50001fcである。プロセッサの実行フローは、アドレス0x5000100のPC相対ジャンプ命令を実行した後に、アドレス0x50001fcの追加命令にジャンプする。同様に、アドレス0x50001f0のPC相対ジャンプ命令のターゲットアドレスもまた、0x50001fcである。プロセッサの実行フローは、アドレス0x50001f0のPC相対ジャンプ命令を実行した後にアドレス0x50001fcの追加命令にジャンプする。
ジャンプ命令は、大きいオフセットパラメータを許容するために長い命令である。そのため、ジャンプ命令は圧縮に適している。しかし、図1の方法は、ステップ105で命令グループを検索するために単に命令コードを比較する場合、プログラムコード310内の2つのPC相対ジャンプ命令は、それらのオフセットパラメータが異なるため、異なる命令であるとみなされる。この場合、図1の方法は、プログラムコード310内の2つのPC相対ジャンプ命令を見落としてしまうことになる。
本実施形態において、図1の方法のステップ105は、2つのPC相対ジャンプ命令のターゲットアドレスを比較することができる。2つのPC相対ジャンプ命令のターゲットアドレスが同一である場合、プログラムコード310内の2つのPC相対ジャンプ命令は1つの命令グループに結合することができる。この場合、図1のステップ140が、PC相対ジャンプ命令を命令テーブルに挿入すると、ステップ140は、PC相対ジャンプ命令を、PC相対ジャンプ命令のターゲットアドレスと同一のターゲットアドレスの連結命令に置き換えることができる。
例えば、図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は、他のプリセットされる整数に置き換えることができる。
上記の例は、プロセッサによってサポートされる命令セットが上述の連結命令を含むことを想定している。命令セットに前述の連結命令が含まれていないと、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)」を実行する。
上記のPC相対ジャンプ命令の圧縮は、(PC相対条件分岐命令としても知られている)PC相対条件ジャンプ命令、PC相対サブルーチン呼出命令、PC相対ロード命令、及びPC相対格納命令を含むあらゆるタイプのPC相対命令を圧縮するために拡張することができる。PC相対ロード命令及びPC相対格納命令のようないくつかのPC相対命令については、これらの命令によってPCの内容が変化しないため連結の結果はPCに格納されない。
図4は、本発明の実施形態に従って圧縮された命令を実行するプロセッサ400を示す概略図である。プロセッサ400は、命令テーブル回路410、命令フェッチ回路420、命令フェッチ回路420に結合された命令デコーダ430、命令デコーダ430に結合された実行回路440、及び命令テーブル回路410と命令デコーダ430とに結合されたEIT実行回路450を含む。
命令テーブル回路410は、前述の命令テーブルを含む。命令テーブル回路410は、各プログラムコードが、コードサイズを最大に節約する、カスタマイズされた命令テーブルを含むように、命令テーブルを格納するメモリを含むことができる。あるいは、さらに性能を向上させるために、命令テーブルは、命令テーブル回路410内にハードワイヤードすることができる。
命令フェッチ回路420はプロセッサ400によって実行されるプログラムコードの命令をフェッチする。命令デコーダ430は、フェッチされた命令がEIT命令であるのか典型的な命令であるかを決定するために、命令フェッチ回路420によってフェッチされた各命令を識別する。ここで、用語「典型的な命令」とはEIT命令でない任意の命令を意味する。フェッチされた命令が典型的な命令である場合には、実行回路440は典型的な命令を実行する。フェッチされた命令がEIT命令である場合には、EIT実行回路450が、EIT命令のパラメータに従って命令テーブルから対応する命令グループを取得して、対応する命令グループの1つ以上の命令を実行する。
例えば、プロセッサ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」を実行する。以下、同様に続く。
要するに、本発明によって提供される方法及びプロセッサは、コードサイズを縮小し、長い命令セットの汎用性を保つために、長いコンピュータ命令を短いコンピュータ命令に圧縮することができる。本発明によって提供されるEIT命令は、最大コードサイズの節約のために最短の長さの命令としてエンコードすることができる。本発明によって提供される命令テーブルの柔軟性のために、異なるプログラムコードは、頻繁に用いられる長い命令と、それらの対応する短い命令との間に異なる最適マッピングを有することができる。
本発明の範囲又は趣旨から逸脱することなく、本発明の構成に様々な修正及び変更をなし得ることは、当業者にとって明らかである。前述の点において、本発明は、以下の請求の範囲及びその均等物の範囲内に属するものであれば、本発明の修正又及び変更もカバーすることを企画している。
本発明は、命令を圧縮する方法及び圧縮された命令を実行するプロセッサに向けられる。本発明は、コンピュータシステム及びコンピュータアーキテクチャの分野に十分に適用可能である。
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命令

Claims (16)

  1. 命令を圧縮するための方法であって、
    各命令グループが順番に1つ以上の命令を含んでいる、プログラムコード内の1つ以上の命令グループをプリセット条件に従って検索するためにプロセッサにより実行すべきプログラムコードを分析するステップと、
    前記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つ以上の命令グループのうちの最初のXの命令グループを前記命令テーブルに挿入する前記ステップは、
    前記ソートされた1つ以上の命令グループの前記最初のXのプログラムカウンタ相対(PC相対)命令を、連結命令に置き換えるステップと、
    前記PC相対命令ではなく前記連結命令を前記命令テーブルに挿入するステップとを含み、
    前記連結命令のターゲットアドレスは前記PC相対命令のターゲットアドレスと同一である、請求項1乃至7の何れか一項に記載の命令圧縮方法。
  9. 前記ソートされた1つ以上の命令グループのうちの前記最初のXの命令グループを命令テーブルに挿入する前記ステップは、
    前記ソートされた1つ以上の命令グループのうちの前記最初のXの命令グループのPC相対命令に対して、PC相対命令のオペコード及びPC相対命令のターゲットアドレスの最下位ビットのプリセット数を前記命令テーブルに挿入するステップを含む、請求項1乃至7の何れか一項に記載の命令圧縮方法。
  10. 圧縮された命令を実行するためのプロセッサであって、
    1つ以上の命令を含む1つ以上の命令グループを格納する命令テーブルを含む命令テーブル回路と、
    前記プロセッサによって実行されるプログラムコードの命令をフェッチする命令フェッチ回路と、
    前記命令フェッチ回路によってフェッチされた命令が命令テーブル実行(EIT)命令であるか典型的な命令であるかを識別する命令デコーダと、
    前記典型的な命令を実行する実行回路と、
    前記命令テーブル内の対応する命令グループを参照するパラメータを有する前記EIT命令に対応する前記命令グループの前記1つ以上の命令を実行するEIT実行回路と、
    を備える圧縮された命令を実行するプロセッサ。
  11. 前記命令テーブル回路は前記命令テーブルを格納するメモリを備える、請求項10に記載のプロセッサ。
  12. 前記命令テーブルは前記命令テーブル回路にハードワイヤードされる、請求項10又は11に記載のプロセッサ。
  13. 前記パラメータは前記命令テーブル内の前記EIT命令に対応する前記命令グループのインデックスである、請求項10,11又は12に記載のプロセッサ。
  14. 前記EIT実行回路は、前記パラメータに従って前記命令テーブルから前記対応する命令グループを取得し、そして前記対応する命令グループの前記1つ以上の命令を実行する、請求項13に記載のプロセッサ。
  15. 前記EIT実行回路がプログラムカウンタ相対(PC相対)命令を実行すると、前記EIT命令回路は、前記プロセッサのプログラムカウンタの最上位ビットのプリセット数を前記PC相対命令に関連しているオペランドと連結することによって前記PC相対命令のターゲットアドレスを算出する、請求項14に記載のプロセッサ。
  16. 前記プロセッサは異なる長さの複数の命令セットを含み、前記1つ以上の命令グループのそれぞれの長さは、前記命令セットのうちの最も長いものの長さより短いか等しく、前記EIT命令は前記命令セットの最も短いものに属している、請求項10乃至15のいずれか一項に記載のプロセッサ。
JP2014155086A 2013-08-01 2014-07-30 命令を圧縮する方法及び圧縮された命令を実行するプロセッサ Active JP5973507B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/956,382 US9672041B2 (en) 2013-08-01 2013-08-01 Method for compressing variable-length instructions including PC-relative instructions and processor for executing compressed instructions using an instruction table
US13/956,382 2013-08-01

Publications (2)

Publication Number Publication Date
JP2015038728A true JP2015038728A (ja) 2015-02-26
JP5973507B2 JP5973507B2 (ja) 2016-08-23

Family

ID=52428771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014155086A Active JP5973507B2 (ja) 2013-08-01 2014-07-30 命令を圧縮する方法及び圧縮された命令を実行するプロセッサ

Country Status (4)

Country Link
US (1) US9672041B2 (ja)
JP (1) JP5973507B2 (ja)
CN (1) CN104346133B (ja)
TW (1) TWI476687B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10135461B2 (en) * 2015-09-25 2018-11-20 Intel Corporation Systems, methods, and apparatuses for decompression using hardware and software
JP7342544B2 (ja) * 2019-09-09 2023-09-12 富士通株式会社 学習プログラムおよび学習方法
CN111124495B (zh) * 2019-12-16 2021-02-12 海光信息技术股份有限公司 一种数据处理方法、解码电路及处理器
US20210405980A1 (en) * 2020-06-24 2021-12-30 Devfactory Innovations Fz-Llc Long method autofix engine
CN113279154B (zh) * 2021-05-11 2023-06-30 深圳市星火数控技术有限公司 缝纫设备的指令执行方法、装置、终端设备及介质
TWI820994B (zh) * 2022-11-01 2023-11-01 大陸商星宸科技股份有限公司 指令壓縮方法、指令解壓縮方法及流程壓縮方法
CN116466995A (zh) * 2023-06-16 2023-07-21 紫光同芯微电子有限公司 基于复合指令的指令及其操作数的优化方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0475138A (ja) * 1990-07-18 1992-03-10 Nec Corp プログラムサイズ圧縮装置
JP2002318686A (ja) * 2001-04-19 2002-10-31 Sony Corp プロセッサ
JP2007094813A (ja) * 2005-09-29 2007-04-12 Renesas Technology Corp プロセッサ

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822578A (en) * 1987-12-22 1998-10-13 Sun Microsystems, Inc. System for inserting instructions into processor instruction stream in order to perform interrupt processing
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US6189137B1 (en) * 1997-11-21 2001-02-13 International Business Machines Corporation Data processing system and method for simulating “include” files in javascript
US6865664B2 (en) * 2000-12-13 2005-03-08 Conexant Systems, Inc. Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
US20030086620A1 (en) * 2001-06-27 2003-05-08 Lucco Steven E. System and method for split-stream dictionary program compression and just-in-time translation
JP3729759B2 (ja) * 2001-08-07 2005-12-21 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
EP1438673B1 (en) * 2001-09-26 2012-11-21 Interact Devices Inc. System and method for communicating media signals
EP1308838A3 (en) * 2001-10-31 2007-12-19 Aplix Corporation Intermediate code preprocessing apparatus, intermediate code execution apparatus, intermediate code execution system, and computer program product for preprocessing or executing intermediate code
US6892292B2 (en) * 2002-01-09 2005-05-10 Nec Corporation Apparatus for one-cycle decompression of compressed data and methods of operation thereof
US6907598B2 (en) 2002-06-05 2005-06-14 Microsoft Corporation Method and system for compressing program code and interpreting compressed program code
US7203935B2 (en) * 2002-12-05 2007-04-10 Nec Corporation Hardware/software platform for rapid prototyping of code compression technologies
US20040139298A1 (en) * 2003-01-09 2004-07-15 International Business Machines Corporation Method and apparatus for instruction compression and decompression in a cache memory
GB2400198B (en) 2003-04-04 2006-04-05 Advanced Risc Mach Ltd Controlling execution of a block of program instructions within a computer processing system
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
JP2009026106A (ja) * 2007-07-20 2009-02-05 Oki Electric Ind Co Ltd 命令コード圧縮方法と命令フェッチ回路
EP2473918B1 (en) * 2009-09-04 2019-05-08 Intel Corporation Method for generating a set of instruction compaction schemes, method for compacting a program according to the generated set, and programmable processor capable of executing a program thus compacted
CN102200905A (zh) * 2010-03-26 2011-09-28 Mips技术公司 具有紧凑指令集架构的微处理器
US20140115304A1 (en) 2012-10-18 2014-04-24 Synopsys, Inc. Compressed instruction code storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0475138A (ja) * 1990-07-18 1992-03-10 Nec Corp プログラムサイズ圧縮装置
JP2002318686A (ja) * 2001-04-19 2002-10-31 Sony Corp プロセッサ
JP2007094813A (ja) * 2005-09-29 2007-04-12 Renesas Technology Corp プロセッサ

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6015026919; 中野猛,中西恒夫,福田晃: 'コードサイズを縮小する組込み向けプロセッサと目的コードの協調生成' 情報処理学会研究報告 第2000巻,第74号,(2000-ARC-139), 20000805, Pages:139〜144, 社団法人情報処理学会 *
JPN6016025967; 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 , 19971201, Pages:194-203, IEEE *
JPN6016025970; 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 Conf , 20050103, Pages:545-550, IEEE *

Also Published As

Publication number Publication date
US9672041B2 (en) 2017-06-06
CN104346133A (zh) 2015-02-11
CN104346133B (zh) 2017-09-08
TW201506781A (zh) 2015-02-16
JP5973507B2 (ja) 2016-08-23
TWI476687B (zh) 2015-03-11
US20150039863A1 (en) 2015-02-05

Similar Documents

Publication Publication Date Title
JP5973507B2 (ja) 命令を圧縮する方法及び圧縮された命令を実行するプロセッサ
US6651160B1 (en) Register set extension for compressed instruction set
US7823142B2 (en) Processor for executing instructions in units that are unrelated to the units in which instructions are read, and a compiler, an optimization apparatus, an assembler, a linker, a debugger and a disassembler for such processor
US9201652B2 (en) Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US6865664B2 (en) Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
US6865667B2 (en) Data processing system having redirecting circuitry and method therefor
US20030023960A1 (en) Microprocessor instruction format using combination opcodes and destination prefixes
KR101573306B1 (ko) 자주 호출되는 함수들에 대한 테이블 호출 명령
US7725692B2 (en) Compact representation of instruction execution path history
US20200310807A1 (en) Method for Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
US7840786B2 (en) Techniques for storing instructions and related information in a memory hierarchy
US20220308763A1 (en) Method and apparatus for a dictionary compression accelerator
US7830281B2 (en) Variable-length code decoding apparatus, variable-length code decoding method, and program
KR100468742B1 (ko) 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법
US10303476B2 (en) Arithmetic processor with load unit for improved register use
CN107656756B (zh) 查找第一个目标数的方法和装置、查找单元和处理器
US20070022271A1 (en) Processor with changeable correspondences between opcodes and instructions
US10394523B2 (en) Method and system for extracting rule specific data from a computer word
US7827355B1 (en) Data processor having a cache with efficient storage of predecode information, cache, and method
US20220200623A1 (en) Method and apparatus for efficient deflate decompression using content-addressable data structures
US20230221959A1 (en) Instruction packing scheme for vliw cpu architecture
US20230305992A1 (en) Processor using target instructions
US20150317159A1 (en) Pop stack absolute instruction
US7606997B1 (en) Method and system for using one or more address bits and an instruction to increase an instruction set
Jin et al. Instruction cache compression for embedded systems

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160623

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160714

R150 Certificate of patent or registration of utility model

Ref document number: 5973507

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250