CN104346133B - 压缩指令的方法及执行压缩指令的处理器 - Google Patents

压缩指令的方法及执行压缩指令的处理器 Download PDF

Info

Publication number
CN104346133B
CN104346133B CN201410088993.2A CN201410088993A CN104346133B CN 104346133 B CN104346133 B CN 104346133B CN 201410088993 A CN201410088993 A CN 201410088993A CN 104346133 B CN104346133 B CN 104346133B
Authority
CN
China
Prior art keywords
instruction
group
instructions
tabling look
catalogue
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
Application number
CN201410088993.2A
Other languages
English (en)
Other versions
CN104346133A (zh
Inventor
乔伟豪
苏泓萌
蔡浩伦
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 CN104346133A publication Critical patent/CN104346133A/zh
Application granted granted Critical
Publication of CN104346133B publication Critical patent/CN104346133B/zh
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

本发明提出一种压缩指令的方法及执行压缩指令的处理器,此方法包括下列步骤:分析将通过处理器执行的程序码以依据预设条件搜寻程序码中的一个或多个指令群组,每一上述指令群组包括连续执行的一个或多个指令;依据每一上述指令群组的成本函数来排序指令群组;将已排序的指令群组其中的最前面X个指令群组放入指令表,X为依据成本函数决定的数值;将程序码中被放入指令表的每一上述指令群组替换为对应的查表执行指令,查表执行指令具有参数指向指令表中对应的指令群组。

Description

压缩指令的方法及执行压缩指令的处理器
技术领域
本发明是有关于一种指令压缩,且特别是有关于一种压缩指令的方法及执行压缩指令的处理器。
背景技术
指令集的长度为在此指令集中的各指令以比特(bit)为单位的长度。长指令可将更多运算纳入其编码。举例而言,将一个大常数存入寄存器可以编码成为长指令。然而,长指令集会增加程序码的长度。为了降低程序码的长度,若编码长度足够,可将经常使用的长指令编码成为短指令以达到压缩的目的。
在传统的指令压缩方法中,长指令与短指令之间的映射(mapping)对于所有程序都是固定的。在一个程序中,若经常使用的长指令不具有对应的短指令,就不能缩减这个程序码的长度。
发明内容
因此,本发明提供一种压缩指令的方法及执行压缩指令的处理器。
本发明的压缩指令的方法包括下列步骤。分析程序码以依据预设条件搜寻程序码中的一个或多个指令群组。每一上述指令群组包括连续执行的一个或多个指令。依据每一上述指令群组的成本函数来排序上述指令群组。将已排序的指令群组其中的最前面X个指令群组放入指令表。X为依据成本函数决定的数值。将程序码中的被放入指令表的每一上述指令群组替换为对应的查表执行(execution-on-instruction table;简称EIT)指令。查表执行指令具有参数指向指令表中对应的指令群组。
本发明的执行压缩指令的处理器包括指令表电路、指令获取电路、指令解码器、执行电路及查表执行电路。指令表电路包括储存一个或多个指令群组的指令表。每一上述指令群组包括一个或多个指令。指令获取电路获取(fetch)通过处理器执行的程序码的指令。指令解码器用于识别获取的指令是否为查表执行指令或普通指令。查表执行指令具有参数以指向指令表中的对应指令群组。执行电路用于执行普通指令。查表执行电路用于执行对应于查表执行指令的指令群组的上述一个或多个指令。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是依据本发明一实施例的一种压缩指令的方法的流程图;
图2是依据本发明一实施例的压缩指令的示意图;
图3是依据本发明另一实施例的压缩指令的示意图;
图4为依据本发明一实施例的一种执行压缩指令的处理器的示意图。
附图标记说明:
105、110、115、120、125、130、135、140、145、150及155:步骤;
210、220、310及320:程序码;
230、330:指令表;
400:处理器;
410:指令表电路;
420:指令获取电路;
430:指令解码器;
440:执行电路;
450:查表执行电路;
A、B、C、D、E、F、G、H、I及J:指令;
EIT0、EIT1、EIT2及EIT3:查表执行指令。
具体实施方式
本发明提供一种压缩指令的方法和执行压缩指令的处理器。上述处理器包括多种长度的指令集架构(instruction set architecture;简称ISA),上述指令集架构包括多个不同长度的指令集。举例而言,在本发明的下列实施例中的处理器包括48比特(48-bit)指令集、32比特指令集及16比特指令集。
上述的方法将长长度(long-length)的经常使用的指令群组放入指令表。各指令群组可包括在程序码中的连续执行的一个或多个指令,其中程序码由上述处理器执行。此方法将长长度的经常使用的指令群组替换成为较短的查表执行指令。各查表执行指令具有一个参数,此参数为指令表中对应的指令群组的索引。查表执行指令仅具有一个小数值的参数。因此,查表执行指令可包含于最短的指令集中。如此,本发明所提供的方法可有效地降低程序码的大小且依然维持较长指令集的多样化的特性。
图1是依据本发明一实施例的一种压缩指令的方法的流程图。此方法可通过上述处理器或其他相似的装置执行。在步骤105中,分析程序码以依据预设条件搜寻程序码中的一个或多个指令群组。在本实施例中,上述预设条件为各指令群组在程序码中的出现次数必须大于或等于第一门槛值且各指令群组的长度(以比特为单位)必须小于或等于第二门槛值。第一门槛值是用以搜寻经常使用的指令群组。第二门槛值是用以确保指令群组的长度不会超出指令表可容纳的长度。在本实施例中,第二门槛值等于处理器的最长指令集的长度,其也为指令表可容纳的最长指令群组的长度。
图2是依据本发明一实施例的压缩指令的示意图。图1所呈现的方法可通过指令表230的帮助将程序码210压缩成为程序码220。程序码210包括指令A-J。指令A、H及I属于48比特指令集。指令B、F及J属于32比特指令集。指令C、D、E及G属于16比特指令集。当上述的第一门槛值为2且第二门槛值为48时,图1的步骤105可在程序码210中搜寻到四个指令群组。第一指令群组包括指令A。第二指令群组包括指令B。第三指令群组包括指令C、D及E。第四指令群组包括指令F及G。
接着,在步骤110中,以各指令群组的成本函数的递减次序来排序在步骤105中搜寻的指令群组。在本实施例中,各指令群组K的成本函数定义为“CCK*(LK-N)-M”。CCK为指令群组K在程序码210之中的出现次数。LK为指令群组K的长度(以比特为单位)。N为查表执行指令的长度(以比特为单位),其也为处理器的最短指令集的长度。M为上述的第二门槛值。成本函数意指将指令群组替换为其对应的查表执行指令所节省的比特的数量。
接着,在步骤115中,基于上述排序的结果建构一个指令清单。指令清单包括所有指令群组且指令清单中的指令群组维持其排序的次序。因此,指令清单的第一个指令群组为其成本函数值为最大的指令群组。
在步骤120中,设定索引变数I成为0。在步骤125中,检查指令表是否已满,且检查指令清单是否为空的。当指令表为全满或指令清单为空之时,流程终止。当指令表仍然具有空间且指令清单尚未清空时,流程进入步骤130。
在步骤130中,自指令清单取得第一个指令群组G。在步骤135中,检查指令群组G的成本函数的值是否大于第三门槛值。在本实施例中,第三门槛值为0。在本发明的其他实施例中,第三门槛值可为任意整数值。当指令群组G的成本函数的值小于或等于第三门槛值时,流程终止。当指令群组G的成本函数的值大于第三门槛值时,流程进入步骤140。
在步骤140中,将指令群组G放入指令表的条目(entry)I,也就是第I个条目。在步骤145中,自指令清单移除指令群组G。在步骤150中,将程序码210中的每一个指令群组G替换成为对应的查表执行指令“EIT I”。在步骤155中,将索引变数I增加1,然后流程回到步骤125。
举例而言,图2示出基于程序码210产生的指令表230。位于指令表230左侧的数字为指令表230的条目的索引。在替换上述四个指令群组成为其对应的查表执行指令之后,程序码210成为程序码220。每一查表执行指令具有一个参数,此参数为指令表230中对应的指令群组的索引。举例而言,包括指令表230中的指令C、D及E的第三指令群组的索引为2。因此,程序码210中的第三指令群组全被替换成为查表执行指令“EIT2”,其中常数2为查表执行指令的参数。在本实施例中,各查表执行指令的长度为16比特,其短于对应的指令群组的长度。因此,程序码220的长度小于程序码210的长度。
可自图1及图2观察到的是,图1的方法将经过步骤110排序的指令群组其中的最前面X个指令群组放入指令表。X为Y与Z两值的最小值。Y为指令表的条目的最大数量,Z为其成本函数大于上述的第三门槛值的指令群组的数量。
图3是依据本发明另一实施例的压缩指令的示意图。图1呈现的方法可通过指令表330的帮助将程序码310压缩成为程序码320。
程序码310包括两个程序计数器相对(program-counter-relative;简称PC-relative)跳跃指令(Jump)以及一个加法指令(Add)。“程序计数器相对”意指通过将处理器的程序计数器(program counter;简称PC)的当前的值与指令的偏移量参数(offsetparameter)相加来计算的跳跃指令的目标地址。举例而言,位于地址0×5000100的程序计数器相对跳跃指令具有偏移量参数0×fc。在此的字首“0×”意指16进制的常数。位于地址0×5000100的程序计数器相对跳跃指令的目标地址为0×50001fc。
在执行位于地址0×5000100的程序计数器相对跳跃指令之后,处理器的执行流程跳跃至位于地址0×50001fc的加法指令Add。相似地,位于地址0×50001f0的程序计数器相对跳跃指令的目标地址也为0×50001fc。在执行位于地址0×50001f0的程序计数器相对跳跃指令之后,处理器的执行流程同样跳跃至位于地址0×50001fc的加法指令Add。
跳跃指令Jump为长长度的指令,以容许数值较大的偏移值参数。因此,跳跃指令适合压缩。然而,若图1的方法简单地在步骤105中比较指令码以搜寻指令群组,则由于其偏移值参数不同,在程序码310中的两个程序计数器相对跳跃指令将被视为两个不同的指令。在此情况下,图1的方法会忽略程序码310中的两个程序计数器相对跳跃指令。
在本实施例中,图1方法的步骤105可比较两个程序计数器相对指令的目标地址。若两个程序计数器相对指令的目标地址相同,则在程序码310中的两个程序计数器相对跳跃指令可归入同一指令群组。在此情况下,当在图1中的步骤140将程序计数器相对跳跃指令放入指令表时,步骤140可将该程序计数器相对跳跃指令替换为目标地址与该程序计数器相对跳跃指令的目标地址相同的串联(concatenate)指令。
举例而言,如图3所呈现,程序码310中的两个程序计数器相对跳跃指令被视为一个指令群组,也就是在指令表330的索引为5的指令群组。因此,将程序码310中的程序计数器相对跳跃指令替换成为查表执行指令“EIT5”,如程序码320所示,且将指令表330的第五个条目的程序计数器相对跳跃指令替换成为concatenate指令“PC=concat(PC[31,24],0×0001fc)”。在本实施例中的程序计数器(PC)具有32比特。串联指令(concatenate)将PC的8个最高有效比特(most significant bits;简称MSBs)与程序计数器相对跳跃指令的目标地址的24个最低有效比特(least significant bits;简称LSBs)串联,且储存串联结果至PC。查表执行指令“EIT5”有效地替换且压缩程序计数器相对跳跃指令。在本发明的其他实施例中,可将以上常数8、24及32替换成为其他预设整数。
以上范例假设处理器支持的指令集包括上述的串联指令。当指令集不包括上述的串联指令时,程序计数器相对跳跃指令仍然可被压缩。在此情况下,在程序码310中的程序计数器相对跳跃指令仍然被替换成为对应的查表执行指令。不过,对应于程序计数器相对跳跃指令的指令表330的条目记录的是程序计数器相对跳跃指令的操作码(opcode)与操作数(operand)。在此情况下,操作数为程序计数器相对跳跃指令的目标地址的24个最低有效比特。当处理器获取查表执行指令且在指令表330的对应条目中看见程序计数器相对跳跃指令的操作码时,处理器执行串联指令的上述串联运算而不执行程序计数器相对跳跃指令,其中程序计数器相对跳跃指令的操作数作为串联指令的操作数。以图3中的程序计数器相对跳跃指令为例,对应于程序计数器相对跳跃指令的指令表330的条目记录“jump0×1fc”,因此处理器执行串联指令“concat(PC[31,24],0×1fc)”。
以上程序计数器相对跳跃指令的压缩可延伸至压缩各种类型的程序计数器相对指令,包括程序计数器相对条件跳跃指令(PC-relative conditional jump instruction,也称为程序计数器相对条件分枝指令(PC-relative conditional branchinstruction))、程序计数器相对子程序呼叫指令(PC-relative subroutine callinstruction)、程序计数器相对载入指令(PC-relative load instruction)、以及程序计数器相对储存指令(PC-relative store instruction)。对于像是程序计数器相对载入指令与程序计数器相对储存指令的一些程序计数器相对指令,因为这些指令未改变程序计数器的内容,所以串联运算的结果不储存至程序计数器。
图4为依据本发明一实施例的一种执行压缩指令的处理器的示意图。处理器400包括指令表电路410、指令获取电路420、耦接至指令获取电路420的指令解码器430、耦接至指令解码器430的执行电路440及耦接至指令表电路410与指令解码器430的查表执行电路450。
指令表电路410包括上述的指令表。指令表电路410可包括一个存储器,此存储器可为每一程序储存一个专门为此程序制作的指令表,以使得每一程序码都能有最大的压缩效果。或者,为了较佳的效能,指令表可用固线方式(hardwired)配置在指令表电路410中。
指令获取电路420获取通过处理器400执行的程序码的指令。指令解码器430识别指令获取电路420获取的各指令以决定获取的指令是否为查表执行指令或普通指令(typical instruction)。在此普通指令意指除了查表执行指令以外的任何指令。当获取的指令为普通指令时,由执行电路440执行普通指令。当获取的指令为查表执行指令时,查表执行电路450依据查表执行指令的参数自指令表取得对应的指令群组,然后执行对应的指令群组其中的一个或多个指令。
举例而言,当处理器400的执行流程进行至图2的程序码220中的指令H时,执行电路440执行指令H。接着,查表执行电路450通过执行指令表230的第一个条目中的指令B来执行指令“EIT1”。接者,查表执行电路450通过执行指令表230的第零个条目中的指令A来执行指令“EIT0”。接者,查表执行电路450通过连续执行指令表230的第二个条目中的指令C、D及E来执行指令“EIT2”。接着,执行电路440执行指令I。接着,查表执行电路450通过执行指令表230的第一个条目中的指令B来执行指令“EIT1”,依此类推。
总结而言,本发明提供的方法和处理器可将长长度(long-length)的电脑指令压缩成短长度(short-length)的电脑指令,以缩减程序码长度,同时可维持较长指令集的多样化特性。为了缩减程序码长度,本发明提供的查表执行指令属于最短长度的指令集。由于本发明提供的指令表的灵活性,每个程序码可具有专属的经常使用的长长度指令与其对应的短长度指令之间的最佳映射。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (13)

1.一种压缩指令的方法,其特征在于,包括:
分析将通过处理器执行的程序码以依据预设条件搜寻该程序码中的一个或多个指令群组,其中包括比较两个相同类型的程序计数器相对指令的目标地址,若该两个相同类型的程序计数器相对指令的该目标地址相同,则将在该程序码中的该两个相同类型的程序计数器相对指令归入同一指令群组,其中每一上述指令群组包括连续执行的一个或多个指令;
依据每一上述指令群组的成本函数来排序上述一个或多个指令群组;
将已排序的上述一个或多个指令群组中的最前面X个指令群组放入指令表,其中X为依据该成本函数决定的数值,其中将已排序的上述一个或多个指令群组中的最前面X个指令群组放入该指令表的步骤包括:
将上述最前面X个指令群组中的程序计数器相对指令替换为串联指令,其中该串联指令与该程序计数器相对指令属于相同类型,且该串联指令的目标地址与该程序计数器相对指令相同;以及
将代替该程序计数器相对指令的该串联指令放入该指令表,
其中该串联指令将该程序计数器的最高有效比特与该串联指令的一个操作数串联,以取得目标地址,
其中该串联指令的该一个操作数即为该程序计数器相对指令的目标地址的最低有效比特;以及
将该程序码中的被放入该指令表的每一上述指令群组替换为对应的查表执行指令,其中该查表执行指令具有参数,该参数指向该指令表中对应的该指令群组。
2.根据权利要求1所述的方法,其特征在于,该预设条件为每一上述指令群组在该程序码中的出现次数大于或等于第一门槛值且每一上述指令群组的长度小于或等于第二门槛值。
3.根据权利要求2所述的方法,其特征在于,每一上述指令群组的该成本函数为依据该指令群组的该出现次数、该指令群组的长度、对应的查表执行指令的长度及该第二门槛值而定义。
4.根据权利要求2所述的方法,其特征在于,该处理器包括多个不同长度的指令集,该第二门槛值等于上述指令集中最长的指令集的长度,且该查表执行指令属于上述指令集中最短的指令集。
5.根据权利要求1所述的方法,其特征在于,该查表执行指令具有的该参数为对应于该查表执行指令的该指令群组在该指令表中的索引。
6.根据权利要求1所述的方法,其特征在于,排序上述一个或多个指令群组的步骤包括:
以每一上述指令群组的该成本函数的递减次序来排序上述一个或多个指令群组。
7.根据权利要求1所述的方法,其特征在于,X为Y与Z的最小值,Y为该指令表的条目的最大数量,Z为其成本函数大于第三门槛值的上述指令群组的数量。
8.一种执行压缩指令的处理器,其特征在于,包括:
指令表电路,包括指令表,该指令表储存一个或多个指令群组,其中每一上述指令群组包括一个或多个指令;
指令获取电路,用以获取通过该处理器执行的程序码的指令,其中在该程序码中相同类型的两个程序计数器相对指令如有相同目标地址,该相同类型的两个程序计数器相对指令被替换成一个具有相同目标地址的串联指令,并被归入同一指令群组;
指令解码器,用以识别通过该指令获取电路获取的该指令是否为查表执行指令或普通指令,其中该查表执行指令具有参数,该参数指向该指令表中的对应指令群组;
执行电路,用以执行该普通指令;以及,查表执行电路,用以执行对应于该查表执行指令的该指令群组的上述一个或多个指令,
其中当该查表执行电路执行该串联指令时,该查表执行电路通过将该处理器的程序计数器的预设数量的最高有效比特与关联于该串联指令的操作数串联来计算该串联指令的目标地址。
9.根据权利要求8所述的处理器,其特征在于,该指令表电路包括储存该指令表的存储器。
10.根据权利要求8所述的处理器,其特征在于,该指令表以固线方式配置在该指令表电路中。
11.根据权利要求8所述的处理器,其特征在于,该查表执行指令具有的该参数为对应于该查表执行指令的该指令群组在该指令表中的索引。
12.根据权利要求11所述的处理器,其特征在于,该查表执行电路依据该查表执行指令具有的该参数自该指令表取得该查表执行指令具有的该参数所对应的该指令群组然后执行该所对应的该指令群组的上述一个或多个指令。
13.根据权利要求8所述的处理器,其特征在于,该处理器包括多个不同长度的指令集,每一上述指令群组的长度小于或等于上述指令集中最长的指令集的长度,且该查表执行指令属于上述指令集中最短的指令集。
CN201410088993.2A 2013-08-01 2014-03-12 压缩指令的方法及执行压缩指令的处理器 Active CN104346133B (zh)

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
CN104346133A CN104346133A (zh) 2015-02-11
CN104346133B true CN104346133B (zh) 2017-09-08

Family

ID=52428771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410088993.2A Active CN104346133B (zh) 2013-08-01 2014-03-12 压缩指令的方法及执行压缩指令的处理器

Country Status (4)

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

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 大陸商星宸科技股份有限公司 指令壓縮方法、指令解壓縮方法及流程壓縮方法
CN116466995B (zh) * 2023-06-16 2024-06-11 紫光同芯微电子有限公司 基于复合指令的指令及其操作数的优化方法及装置

Family Cites Families (21)

* 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
JPH0475138A (ja) 1990-07-18 1992-03-10 Nec Corp プログラムサイズ圧縮装置
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
JP2002318686A (ja) 2001-04-19 2002-10-31 Sony Corp プロセッサ
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 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
WO2003027876A1 (en) * 2001-09-26 2003-04-03 Jodie Lynn Reynolds 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
JP4986431B2 (ja) 2005-09-29 2012-07-25 ルネサスエレクトロニクス株式会社 プロセッサ
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

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Dictionary Based Code Compression for Variable Length Instruction Encodings;Das;《IEEE》;20051230;第2节最后1段,第4节第1段 *
Handbook of Data Compression;David Salomon;《Handbook of Data Compression》;20101230;第318页 *
Improving Code Density Using Compression Techniques;Charles Lefurgy;《IEEE》;19971203;摘要,第1.2节第1段,第3.1至3.1.2节,第3.3节,第4.1节,图2-3 *

Also Published As

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

Similar Documents

Publication Publication Date Title
CN104346133B (zh) 压缩指令的方法及执行压缩指令的处理器
US10437781B2 (en) OZIP compression and decompression
US9223809B2 (en) Code processing technique
US20090319549A1 (en) Index compression
JP2005525625A (ja) データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法
CN104331269A (zh) 一种嵌入式系统可执行代码压缩方法及代码解压缩系统
US10055454B2 (en) System and a method for executing SQL basic operators on compressed data without decompression process
CN106201641B (zh) 函数的访存优化编译方法和装置
CN108141225B (zh) 使用simd引擎的通用数据压缩
CN109214149B (zh) 一种mips固件基地址自动化检测方法
US7725692B2 (en) Compact representation of instruction execution path history
US20130024663A1 (en) Table Call Instruction for Frequently Called Functions
US9047069B2 (en) Computer implemented method of electing K extreme entries from a list using separate section comparisons
US7830281B2 (en) Variable-length code decoding apparatus, variable-length code decoding method, and program
US7624326B2 (en) Encoding device and method, decoding device and method, program, and recording medium
CA2446952A1 (en) Character table implemented data compression method and apparatus
CN109756231B (zh) 循环移位处理装置及方法
CN108021678B (zh) 一种结构紧凑的键值对存储结构及快速键值对查找方法
US7773003B1 (en) Huffman search algorithm for AAC decoder
US7827355B1 (en) Data processor having a cache with efficient storage of predecode information, cache, and method
CN112100170B (zh) 数据库交互数据解码方法和装置
WO2011099104A1 (ja) ファイル名管理方法及びファイル名管理装置
TW200907797A (en) High efficient pipelined decompression method with no-wait time
CN117762662A (zh) png文件修复方法、装置、设备及存储介质
JP2020004132A (ja) 検索装置、検索方法、プログラム、及び記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant