CN104025042B - 指令处理方法和装置 - Google Patents
指令处理方法和装置 Download PDFInfo
- Publication number
- CN104025042B CN104025042B CN201180076180.6A CN201180076180A CN104025042B CN 104025042 B CN104025042 B CN 104025042B CN 201180076180 A CN201180076180 A CN 201180076180A CN 104025042 B CN104025042 B CN 104025042B
- Authority
- CN
- China
- Prior art keywords
- instruction
- user
- encoder
- compression
- input
- 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.)
- Active
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/30181—Instruction operation extension or modification
-
- 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
-
- 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
- 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
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
传统的指令集架构,例如x86指令集架构,可以被重新编码以减少指令所使用的存储器量。这在存储器大小受限的应用中尤为有用,例如在微控制器的情形下。通过更加密集的经重新编码的指令集,可以实现更多的功能或可以使用更小的存储器大小。随后,经编码指令在核流水线的预解码器和解码器中在运行时被自然解码。
Description
背景技术
本发明一般涉及计算机处理,尤其涉及指令集架构。
指令集是处理器识别和执行的机器指令的集合。存在各种已知的指令集架构,包括由英特尔公司开发的x86指令集架构。指令集包括由处理器支持的指令集合,包括算术、布尔、移位、比较、存储、控制流、外围访问、转换和系统操作。指令集架构包括指令集、寄存器组、存储器和操作模式。寄存器组包括程序员可访问的存储。存储器是存储器的逻辑组织。操作模式包括基于正处于特定模式被特许的指令的子集。
术语x86意指在原始8086处理器之后所发布的处理器。这包括286、386、486和奔腾处理器。如果计算机技术规范提及是基于x86架构,则这意味着它使用Intel处理器。由于Intel的x86处理器是后向兼容的,因此,较新的x86处理器可以运行较旧的处理器可以运行的所有程序。然而,较旧的处理器可能不能运行针对较新的x86处理器优化的软件。
编译器是在执行程序之前将以高级语言编写的该程序的源代码转换成目标代码的程序。这样,编译器可以取得源代码程序并使用指令集架构将其转换成一系列指令。随后,处理器可以解码这些指令并执行所解码的指令。
附图简述
参照以下附图描述一些实施例。
图1是本发明一个实施例的示意图;
图2是根据本发明一个实施例的用于重新编码的流程图;以及
图3是根据一个实施例的处理器流水线的描绘。
具体实施方式
传统的指令集架构,例如x86指令集架构,可以被重新编码以减少指令所使用的存储器量。这在存储器大小受限的应用中尤为有用,例如在微控制器的情形下。通过更加密集的经重新编码的指令集,可以实现更多的功能或可以使用更小的存储器大小。随后,经编码指令在核流水线的预解码器和解码器中在运行时被自然解码。
根据一些实施例,指令的大小可以减小,并且随后核在运行时读取指令。核将指令逐级移动,在流水线中扩展指令(这并不使用任何外部存储器)。最后,核识别并处理指令。
在一些实施例中,还可以使用精简指令集架构。在精简指令集架构中(该架构不同于更密集的指令集架构),一般不使用的指令和仅是后向兼容性所需的指令可以被简单地移除。这种精简指令集减少了各种指令,而不是它们的密度。
通过重新编码以形成更密集的指令集,其思想是不移除指令,而是使用试探法控制压缩量来压缩指令。
这样,参考图1,编译器12编译输入代码并生成经编译的代码和数据给重编码器14。数据可以包括关于经编码的代码的信息,例如在源中使用的符号名和描述一个经编译的函数如何引用另一个经编译的函数的信息。
重编码器还可以接收指定特定情况下可允许的新指令数目的用户输入。用户还可以指定二进制大小目标。例如,用户可以在给定产品中具有某个量的存储器,并且用户可能想要限制指令集的二进制大小以适合放在可用存储器内。用户还可以指示最大百分比的减少或压缩。
指定这些输入的一个原因在于通常指令越是被压缩,则对其解码就可能变得越困难,并且这些指令越是集中用于一个特定用途,这可能使得该密集指令在其它应用中越是无用。这样,重编码器从编译器接收关于编译过程的数据以及用户输入,并使用该信息利用霍夫曼编码来重新编码指令集。霍夫曼编码的量可以由用户输入来控制。
从输入二进制和用户输入中,重编码器还可以确定新的指令。这些新的指令可以通过比x86指令更加高效地对操作数进行编码来减少二进制大小。这些相对于x86编码更高效的编码可以包括,但不限于:减小大小的编码、隐含的操作数值、操作数与隐含的缩放因子的乘法、将隐含的操作数偏移值加到操作数、操作数向更大有效宽度的无符号或有符号扩展等等。
众所周知,至少部分地基于源符号的出现概率来生成符号集的霍夫曼代码。生成通常被称为“霍夫曼树”的分类树来提取二进制代码和代码长度。参见例如D.A.Huffmann的“A Method for the Construction of Minimum–RedundancyCodes(一种用于最小-冗余代码的构建的方法)”,IRE会议纪要、第40卷第9篇,第1098-1101页,1952。在上述文章中,D.A.Huffman以这种方式描述了该过程:
列出所有可能的符号和它们的概率;
找到具有最小概率的两个符号;
用包含这两个符号的单个集合来取代它们,其概率是单独概率的总和;以及
重复直到该列表仅包含一个成员。
这个过程产生了集合的递归构造集,每个集合包含正好两个成员。因此,它可以被表示为二进制树(“霍夫曼树”),其中符号作为“叶子”。随后,为了对任意特定符号形成代码(“霍夫曼代码”):从根到该符号遍历该二进制树,对于左分支记录“0”,而对于右分支记录“1”。
重编码器可以修改霍夫曼编码过程以允许按字节的编码,而不是二进制编码。按字节的霍夫曼编码导致在长度上总是为8位的倍数的经编码值。按字节的编码通过使用N叉树,而不是二进制树来修改霍夫曼编码过程,其中“N”是256且因此树中的每个节点可以具有0-255个子节点。
重编码器可进一步修改所得到的霍夫曼编码值以在硬件逻辑或软件算法中提供更高效的表示。这些修改可以包括将具有类似属性的指令编组成使用在数字上类似的经编码值。这些修改可以或可以不改变原始霍夫曼编码的长度。
重编码器可以保留经编码值范围以供特殊情况使用或用于随后的指令集扩展。重编码器可以将新的更紧凑的操作码应用于一个或多个特定指令,而不使用霍夫曼编码。
随后,在一些实施例中,如在框16所指示的,重编码器14对重新设计的预解码器和解码器输出执行更密集指令所需的寄存器传输逻辑(RTL)16。在一些实施例中,编码器还可以为编译器和反汇编器提供新的软件代码,如在18所指示的。
重编码器的操作在图2中示出的序列中说明。该序列可用软件、固件和/或硬件来实现。在软件和固件实施例中,它可通过处理器执行的指令来实现,该处理器执行的指令被存储在例如光学存储、磁存储或半导体存储之类的非瞬态计算机可读介质中。
该序列始于获得每个指令在编译器12中被使用的次数,如在框20所指示的。该信息可以由重编码器14从编译器12获得或由重编码器通过检查来自编译器12的输出来计算。重编码器14还可以确定每个指令使用多少存储器,如在框22中所指示的。该信息在确定期望的重新编码量时是有用的。被多次使用的指令或使用许多存储器的指令是最需要被编码的指令。因为它们更经常被使用,所以它们对于所需存储器大小具有更大的影响。这样,这些经常使用的指令相比于不经常使用的指令而言可被更加紧凑地重新编码。
接着,流程从用户获得新指令数目限制,如在框24所指示的。用户可以指定可允许的新指令的数目。可以提供新指令以取代架构指令的传统指令集。这些新指令可以具有其它效用,包括使得架构化的经编码指令较不适用于其它用途。
重编码器还获取用户的二进制大小目标,如在框26所指示的。二进制大小指定设计已经分配给指令存储的存储器量。
重编码器还从用户输入获得用于分配的保留指令槽(instruction slot)的数目。这些保留的槽可以由用户用于今后对指令集的扩展。
最终,该序列获得百分比减少目标,如在框28所指示的。在某个百分比减少后,回报趋向于减少,并且因此用户可以指定期望代码减少多少。
随后,在一些实施例中使用所有这种信息来在框30中控制霍夫曼重新编码。更加经常被使用的那些指令被更多地编码,而较少被使用的那些指令被更少地编码。可允许的新指令数目限制了可以进行的重新编码量。二进制大小设定重新编码的停止点。霍夫曼重新编码必须继续重新编码指令直到达到二进制大小目标。最终,一旦达到二进制大小,霍夫曼重新编码继续进行直到其达到设定的减少百分比限制。
随后,在一些实施例中,霍夫曼重新编码级30可输出寄存器传输逻辑16以实现经编码指令。通常这意味着代码被提供给预解码器和解码器的单元以及核流水线。霍夫曼重新编码级30还可以为编译器和反汇编器输出软件代码18以实现经重新编码的指令集。
随后,用户可以在新设计的核上测试并部署新的经重新编码的二进制。新的代码开发继续使用经重新编码的指令集架构。
参考图3,在一个实施例中,处理器流水线32包括指令获取和预解码级34,其耦合到指令队列36及之后的解码级38。与指令解码级38相连的是重命名/分配级40。引退单元42被耦合到调度器44。该调度器馈送加载46和存储48。一级(L1)高速缓存50被耦合到共享的二级(L2)高速缓存52。微代码只读存储器(ROM)54被耦合到解码级。
获取/预解码级34从L2指令高速缓存存储器中读取指令流。这些指令可以被解码成一系列微操作。微操作是由处理器并行执行单元所执行的基元指令。仍如原始指令流中那样排序的微操作流随后被发送给指令池。
指令获取在每个时钟周期中从指令高速缓存存储器中获取一个高速缓存行。指令获取单元基于来自分支目标缓冲器的输入、异常/中断状态以及来自整数执行单元的分支预测指示来计算指令指针。
指令解码器包含三个并行的指令解码器。每个解码器将一个指令转换成一个或多个三元微操作,其具有两个逻辑源和一个逻辑目的地。指令解码器还处理对指令前缀的解码和循环操作。
指令解码级38、指令获取34和执行级都负责求解和修复分支。在指令解码单元中求解和/或固定使用立即数操作数的无条件分支。在操作数获取单元中求解或固定使用立即数操作数的条件分支,并且剩余的分支在执行级被处理。
在一些实施例中,该解码器可以比具有较不密度的指令集架构的处理器所使用的解码器更大。解码器已经如上所述地被专门重新设计以容适压缩指令集架构。这意味着,可以重新设计解码器本身和预解码器两者以使用占据处理器自身之外的更少存储器区域的指令集架构。解码器还可以具有被定制为处理不同指令集架构的不同软件。
在一些实施例中,可以在用户指导的约束内实现优化密集的新指令集架构。用户可以选择更加激进的霍夫曼重新编码以获得最大密度、使用固定数目的新指令编码进行重新编码、假设小物理地址空间的重新编码或其任意组合
用户可以选择放弃霍夫曼编码并仅利用具有如重编码器所标识的更高效操作数处理的新指令。
在一些实施例中,可以解决现有指令集架构中的问题点,从而允许将新的、经大小优化的指令添加到指令集架构子集的选项的平滑连续性。这些新的指令可以保存所建立的处理器集架构的原理,同时提供更加紧凑的二进制表示。
在一些实施例中,一种工作负荷优化编码允许更多指令适合放在相同量的高速缓存中、增加系统性能并通过改进的高速缓存命中率来降低功耗。
减小二进制大小可以在特定应用中提供改善的功耗并提高性能。
在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
虽然已经针对有限个实施例描述了本发明,但本领域技术人员将会理解从中得出的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。
Claims (12)
1.一种指令处理方法,包括:
压缩处理器的指令集;以及
基于关于新指令数目的用户输入来控制压缩,所述用户输入包括来自编译器的关于指令被使用多少次来控制压缩的信息。
2.如权利要求1所述的指令处理方法,其特征在于,包括基于关于最大压缩的用户输入来控制压缩。
3.如权利要求1所述的指令处理方法,其特征在于,包括基于关于二进制大小目标的用户输入来控制压缩。
4.如权利要求1所述的指令处理方法,其特征在于,包括基于用户输入来允许指定长度的一些保留指令。
5.一种指令处理装置,包括:
编译器,用于编译输入代码并生成经编译的代码和数据;以及
重编码器,与所述编译器耦合并用于压缩指令集,其中所述重编码器用于基于关于新指令数目的用户输入来控制压缩,所述用户输入包括来自所述编译器的关于指令被使用多少次来控制压缩的信息。
6.如权利要求5所述的指令处理装置,其特征在于,所述重编码器用于使用霍夫曼编码来压缩指令。
7.如权利要求5所述的指令处理装置,其特征在于,所述重编码器用于基于关于最大压缩的用户输入来控制压缩。
8.如权利要求5所述的指令处理装置,其特征在于,所述重编码器用于使用关于指令所使用的存储器量的信息。
9.一种指令处理设备,包括:
处理器;以及
编码器,与处理器耦合并用于压缩所述处理器的指令集,其中所述编码器用于基于关于新指令数目的用户输入来控制压缩,所述用户输入包括来自编译器的关于指令被使用多少次来控制压缩的信息。
10.如权利要求9所述的指令处理设备,其特征在于,所述编码器用于使用霍夫曼编码来压缩指令。
11.如权利要求9所述的指令处理设备,其特征在于,所述编码器用于基于关于最大压缩的用户输入来控制压缩。
12.如权利要求9所述的指令处理设备,其特征在于,所述编码器用于基于关于二进制大小目标的用户输入来控制压缩。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/068020 WO2013101149A1 (en) | 2011-12-30 | 2011-12-30 | Encoding to increase instruction set density |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104025042A CN104025042A (zh) | 2014-09-03 |
CN104025042B true CN104025042B (zh) | 2016-09-07 |
Family
ID=48698383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180076180.6A Active CN104025042B (zh) | 2011-12-30 | 2011-12-30 | 指令处理方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140082334A1 (zh) |
EP (1) | EP2798479A4 (zh) |
CN (1) | CN104025042B (zh) |
TW (1) | TWI515651B (zh) |
WO (1) | WO2013101149A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811335B1 (en) * | 2013-10-14 | 2017-11-07 | Quicklogic Corporation | Assigning operational codes to lists of values of control signals selected from a processor design based on end-user software |
US20180095760A1 (en) * | 2016-09-30 | 2018-04-05 | James D. Guilford | Instruction set for variable length integer coding |
CN108121565B (zh) * | 2016-11-28 | 2022-02-18 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
CN110045960B (zh) * | 2018-01-16 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 基于芯片的指令集处理方法、装置及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2308470B (en) * | 1995-12-22 | 2000-02-16 | Nokia Mobile Phones Ltd | Program memory scheme for processors |
US6502185B1 (en) * | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
US7051189B2 (en) * | 2000-03-15 | 2006-05-23 | Arc International | Method and apparatus for processor code optimization using code compression |
US20030225998A1 (en) * | 2002-01-31 | 2003-12-04 | Khan Mohammed Noshad | Configurable data processor with multi-length instruction set architecture |
US7665078B2 (en) * | 2003-08-21 | 2010-02-16 | Gateway, Inc. | Huffman-L compiler optimized for cell-based computers or other computers having reconfigurable instruction sets |
US7552316B2 (en) * | 2004-07-26 | 2009-06-23 | Via Technologies, Inc. | Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system |
US7864840B2 (en) * | 2005-04-15 | 2011-01-04 | Inlet Technologies, Inc. | Scene-by-scene digital video processing |
CN100538820C (zh) * | 2005-07-06 | 2009-09-09 | 凌阳科技股份有限公司 | 一种对音频数据进行处理的方法及装置 |
US20080059776A1 (en) * | 2006-09-06 | 2008-03-06 | Chih-Ta Star Sung | Compression method for instruction sets |
CN101344840B (zh) * | 2007-07-10 | 2011-08-31 | 苏州简约纳电子有限公司 | 一种微处理器及在微处理器中执行指令的方法 |
CN101382884B (zh) * | 2007-09-07 | 2010-05-19 | 上海奇码数字信息有限公司 | 指令编码方法、指令编码系统及数字信号处理器 |
US20100312991A1 (en) * | 2008-05-08 | 2010-12-09 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
-
2011
- 2011-12-30 WO PCT/US2011/068020 patent/WO2013101149A1/en active Application Filing
- 2011-12-30 US US13/992,722 patent/US20140082334A1/en not_active Abandoned
- 2011-12-30 CN CN201180076180.6A patent/CN104025042B/zh active Active
- 2011-12-30 EP EP11878973.4A patent/EP2798479A4/en not_active Withdrawn
-
2012
- 2012-12-27 TW TW101150586A patent/TWI515651B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20140082334A1 (en) | 2014-03-20 |
WO2013101149A1 (en) | 2013-07-04 |
EP2798479A4 (en) | 2016-08-10 |
EP2798479A1 (en) | 2014-11-05 |
TW201342227A (zh) | 2013-10-16 |
TWI515651B (zh) | 2016-01-01 |
CN104025042A (zh) | 2014-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bergstrom et al. | Nested data-parallelism on the GPU | |
McDonell et al. | Optimising purely functional GPU programs | |
US8893079B2 (en) | Methods for generating code for an architecture encoding an extended register specification | |
JP5102758B2 (ja) | 複数の発行ポートを有するプロセッサにおける命令グループを形成する方法、並びに、その装置及びコンピュータ・プログラム | |
US20080034357A1 (en) | Method and Apparatus for Generating Data Parallel Select Operations in a Pervasively Data Parallel System | |
JP5182814B2 (ja) | プログラムコード変換中の実行制御 | |
CN104025042B (zh) | 指令处理方法和装置 | |
JPH06507990A (ja) | コンピュータのための最適化コンパイラ | |
CN104838357A (zh) | 瓦解的多嵌套循环的向量化 | |
Srinath et al. | Architectural specialization for inter-iteration loop dependence patterns | |
Kristien et al. | High-level synthesis of functional patterns with lift | |
CN111428327A (zh) | 一种指令硬件架构的构建方法、装置及存储介质 | |
Chen et al. | An instruction set architecture for machine learning | |
Katel et al. | High performance GPU code generation for matrix-matrix multiplication using MLIR: some early results | |
Yoshida et al. | Parallel java code generation for layer-unified coarse grain task parallel processing | |
Ghodrati et al. | Tandem processor: Grappling with emerging operators in neural networks | |
Bik et al. | A case study on compiler optimizations for the Intel® Core TM 2 Duo Processor | |
Menon | An efficient tool-chain for analyzing tradeoffs of code compression schemes in embedded processors | |
CN101907999A (zh) | 超长指令字程序的二进制翻译方法 | |
Dietz et al. | Much ado about almost nothing: Compilation for nanocontrollers | |
CN109725904B (zh) | 一种低功耗程序指令编译方法及系统 | |
Gulla | A look into a GraphBLAS Entry Point into an LLVM Lowering Pass, with A Precision Formatting Example | |
Zvorygin | Expanding domain of algorithms for GPGPU with code parallelism | |
KR101694291B1 (ko) | 자바 스크립트 엔진 가속 장치 및 방법 | |
Frolov et al. | Declarative, SAT-solver-based Scheduling for an Embedded Architecture with a Flexible Datapath |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |