JP2015038728A - 命令を圧縮する方法及び圧縮された命令を実行するプロセッサ - Google Patents
命令を圧縮する方法及び圧縮された命令を実行するプロセッサ Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4436—Exlining; Procedural abstraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special 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
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つ以上の命令グループのうちの最初のXの命令グループを命令テーブルに挿入するステップであって、ここにXは、前記コスト関数に従って決定される値とするステップと、
プログラムコード内の、前記命令テーブルに挿入される前記1つ以上の命令グループのそれぞれを、対応する命令テーブル実行(EIT)命令と置き換えるステップと、を含み、
前記EIT命令は、前記命令テーブル内の前記対応する命令グループを参照するパラメータを有する、命令圧縮方法。 - 前記プリセット条件は、前記プログラムコード内の前記各命令グループの発生回数が第1の閾値より大きいか等しく、かつ、前記各命令グループのサイズが第2の閾値より小さいか等しいということである、請求項1に記載の命令圧縮方法。
- 前記1つ以上の命令グループそれぞれの前記コスト関数は、前記命令グループの前記発生回数、前記命令グループの長さ、前記EIT命令の長さ、及び前記第2の閾値に従って定義される、請求項2に記載の命令圧縮方法。
- 前記プロセッサは、異なる長さの複数の命令セットを含み、前記第2の閾値は前記命令セットのうち最も長いものの長さに等しく、前記EIT命令は前記命令セットのうち最も短いものに属する、請求項2又は3に記載の命令圧縮方法。
- 前記パラメータは、前記命令テーブルの前記EIT命令に対応する前記命令グループのインデックスである、請求項1乃至4の何れか一項に記載の命令圧縮方法。
- 前記1つ以上の命令グループをソートする前記ステップは、1つ以上の命令グループを、前記1つ以上の命令グループそれぞれの前記コスト関数の降順にソートするステップを含む、請求項1乃至5の何れか一項に記載の命令圧縮方法。
- 前記Xは、Y及びZの最小値であり、Yは前記命令テーブルのエントリの最大数であり、Zはコスト関数が第3の閾値より大きい前記命令グループの数である、請求項1乃至6の何れか一項に記載の命令圧縮方法。
- 前記ソートされた1つ以上の命令グループのうちの最初のXの命令グループを前記命令テーブルに挿入する前記ステップは、
前記ソートされた1つ以上の命令グループの前記最初のXのプログラムカウンタ相対(PC相対)命令を、連結命令に置き換えるステップと、
前記PC相対命令ではなく前記連結命令を前記命令テーブルに挿入するステップとを含み、
前記連結命令のターゲットアドレスは前記PC相対命令のターゲットアドレスと同一である、請求項1乃至7の何れか一項に記載の命令圧縮方法。 - 前記ソートされた1つ以上の命令グループのうちの前記最初のXの命令グループを命令テーブルに挿入する前記ステップは、
前記ソートされた1つ以上の命令グループのうちの前記最初のXの命令グループのPC相対命令に対して、PC相対命令のオペコード及びPC相対命令のターゲットアドレスの最下位ビットのプリセット数を前記命令テーブルに挿入するステップを含む、請求項1乃至7の何れか一項に記載の命令圧縮方法。 - 圧縮された命令を実行するためのプロセッサであって、
1つ以上の命令を含む1つ以上の命令グループを格納する命令テーブルを含む命令テーブル回路と、
前記プロセッサによって実行されるプログラムコードの命令をフェッチする命令フェッチ回路と、
前記命令フェッチ回路によってフェッチされた命令が命令テーブル実行(EIT)命令であるか典型的な命令であるかを識別する命令デコーダと、
前記典型的な命令を実行する実行回路と、
前記命令テーブル内の対応する命令グループを参照するパラメータを有する前記EIT命令に対応する前記命令グループの前記1つ以上の命令を実行するEIT実行回路と、
を備える圧縮された命令を実行するプロセッサ。 - 前記命令テーブル回路は前記命令テーブルを格納するメモリを備える、請求項10に記載のプロセッサ。
- 前記命令テーブルは前記命令テーブル回路にハードワイヤードされる、請求項10又は11に記載のプロセッサ。
- 前記パラメータは前記命令テーブル内の前記EIT命令に対応する前記命令グループのインデックスである、請求項10,11又は12に記載のプロセッサ。
- 前記EIT実行回路は、前記パラメータに従って前記命令テーブルから前記対応する命令グループを取得し、そして前記対応する命令グループの前記1つ以上の命令を実行する、請求項13に記載のプロセッサ。
- 前記EIT実行回路がプログラムカウンタ相対(PC相対)命令を実行すると、前記EIT命令回路は、前記プロセッサのプログラムカウンタの最上位ビットのプリセット数を前記PC相対命令に関連しているオペランドと連結することによって前記PC相対命令のターゲットアドレスを算出する、請求項14に記載のプロセッサ。
- 前記プロセッサは異なる長さの複数の命令セットを含み、前記1つ以上の命令グループのそれぞれの長さは、前記命令セットのうちの最も長いものの長さより短いか等しく、前記EIT命令は前記命令セットの最も短いものに属している、請求項10乃至15のいずれか一項に記載のプロセッサ。
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)
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)
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)
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 |
-
2013
- 2013-08-01 US US13/956,382 patent/US9672041B2/en active Active
- 2013-11-25 TW TW102142850A patent/TWI476687B/zh active
-
2014
- 2014-03-12 CN CN201410088993.2A patent/CN104346133B/zh active Active
- 2014-07-30 JP JP2014155086A patent/JP5973507B2/ja active Active
Patent Citations (3)
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)
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 |