CN111209044B - 指令压缩方法及装置 - Google Patents
指令压缩方法及装置 Download PDFInfo
- Publication number
- CN111209044B CN111209044B CN201811391262.XA CN201811391262A CN111209044B CN 111209044 B CN111209044 B CN 111209044B CN 201811391262 A CN201811391262 A CN 201811391262A CN 111209044 B CN111209044 B CN 111209044B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- compression
- compressed
- register
- 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
- 238000007906 compression Methods 0.000 title claims abstract description 118
- 230000006835 compression Effects 0.000 title claims abstract description 116
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 27
- 238000005056 compaction Methods 0.000 description 16
- 230000004927 fusion Effects 0.000 description 6
- 239000013598 vector Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种指令压缩方法及装置。所述方法包括:在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲;在指令缓冲中读指令的时候检查两条指令之间是否可以压缩;如果两条指令之间可以压缩,则对两条指令进行压缩;对压缩后的指令进行译码操作。本发明能够在不增加额外的硬件资源条件下,根据不同指令有效域和指令类型进行压缩。
Description
技术领域
本发明涉及计算机架构技术领域,尤其涉及一种指令压缩方法及装置。
背景技术
随着终端设备、桌面办公及服务器的迅速发展,对处理器的性能与功耗要求变得越来越高;芯片实现的工艺制程越来越小;Moore定律也逼近于极限;处理器的指令级并行、线程级并行及多核技术实现提升性能的幅度也趋于平缓。处理器的指令集并行度越高,实现的复杂度也就越高,时序难以收敛。多线程技术大大提高了处理器内部的资源利用率,目前也不能实现太大的IPC(Instructions Per Clock,每时钟周期执行的指令数目)提升。多核技术带来了功耗和面积过快的增长。处理器的性能、面积及功耗之间的关系决定了架构的发展。因此,对能够提升处理器的IPC,并且对面积和功耗影响较小的方法有迫切的需求。
ARM指令集的指令长度是16bit或者32bit,但是每条指令的有效源操作数和目的操作数数目不固定。例如有些指令存在3个源操作数,有些指令不存在源操作数。ARM的指令在翻译为UOP(微指令)的过程中,有些指令对应的UOP的域是无效的,导致这些指令的一些域没有得到充分利用,白白被浪费。另外,每条指令的UOP都被单独分配了重命名、保留站、执行单元和重排序队列资源。
现有技术利用额外增加一个buffer存储CISC指令
需要单独的一个buffer存储一条CISC指令,消耗额外的硬件资源。
发明内容
本发明提供的指令压缩方法及装置,能够在不增加额外的硬件资源条件下,根据不同指令有效域和指令类型进行压缩。
第一方面,本发明提供一种指令压缩方法,包括:
在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲;
在指令缓冲中读指令的时候检查两条指令之间是否可以压缩;
如果两条指令之间可以压缩,则对两条指令进行压缩;
对压缩后的指令进行译码操作。
可选地,在所述在预译码阶段检测可以指令压缩的指示信号之前,所述方法还包括:
在取指阶段根据取指令地址从指令缓存中取出指令;
在取指阶段和分支指令预测阶段进行信息汇集及处理。
可选地,所述对两条指令进行压缩包括:将跳转指令填充到另外一条指令的空闲域中,然后为压缩的指令分配一个新的指令操作码。
可选地,所述指示信号包括会影响N、C、Z、V位的指令以及条件跳转指令的指示。
可选地,所述对两条指令进行压缩包括:将一条影响N、C、Z、V位的指令与一条相邻条件跳转指令压缩成一条指令。
第二方面,本发明提供一种指令压缩装置,包括:
预译码单元,用于在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲;
检查单元,用于在指令缓冲中读指令的时候检查两条指令之间是否可以压缩;
指令压缩单元,用于当两条指令之间可以压缩时,对两条指令进行压缩;
译码单元,用于对压缩后的指令进行译码操作。
可选地,所述装置还包括:
取指单元,用于在所述预译码单元在预译码阶段检测可以指令压缩的指示信号之前,在取指阶段根据取指令地址从指令缓存中取出指令,并进行信息汇集及处理;
分支指令预测单元,用于在分支指令预测阶段进行信息汇集及处理。
可选地,所述指令压缩单元,用于将跳转指令填充到另外一条指令的空闲域中,然后为压缩的指令分配一个新的指令操作码。
可选地,所述指示信号包括会影响N、C、Z、V位的指令以及条件跳转指令的指示。
可选地,所述指令压缩单元,用于将一条影响N、C、Z、V位的指令与一条相邻条件跳转指令压缩成一条指令。
本发明实施例提供的指令压缩方法及装置,在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲,在指令缓冲中读指令的时候检查两条指令之间是否可以压缩,如果两条指令之间可以压缩,则对两条指令进行压缩,并对压缩后的指令进行译码操作,从而能够在不增加额外的硬件资源条件下,根据不同指令有效域和指令类型进行压缩。由于多条指令可以压缩成1条指令,那么微指令的空闲域可以得到利用,同时多条指令压缩后共享一份重命名、保留站、执行单元和重排序队列资源,从而提高了重命名、保留站、执行单元和重排序队列资源的使用率,特别是针对那些存在依赖关系的指令。
附图说明
图1为本发明一实施例指令压缩方法的流程图;
图2为本发明另一实施例指令压缩方法的流程图;
图3为本发明实施例提供的指令格式及压缩示意图;
图4为本发明实施例提供的B与CMP(register)指令压缩示意图;
图5为本发明实施例提供的B与CMP(register-shifted register)指令压缩示意图;
图6为本发明实施例提供的B与CMP(immediate)指令压缩示意图;
图7为本发明实施例提供的BLX(register)与CMP(register)指令压缩示意图;
图8为本发明实施例提供的BLX(register)与CMP(immediate)指令压缩示意图;
图9为本发明实施例提供的B与ADCS(register)指令压缩示意图;
图10为本发明实施例提供的B与ADCS(register-shifted register)指令压缩示意图;
图11为本发明实施例提供的B与ADCS(immediate)指令压缩示意图;
图12为本发明实施例提供的BLX(register)与ADCS(register)指令压缩示意图;
图13为本发明实施例提供的BLX(register)与ADCS(immediate)指令压缩示意图;
图14为本发明实施例提供T32条件跳转指令格式示意图;
图15为本发明实施例提供的B-T1与CMP(register)-T1指令压缩示意图;
图16为本发明实施例提供的B-T1与CMP(register)-T2指令压缩示意图;
图17为本发明实施例提供的B-T1与CMP(immediate)指令压缩示意图;
图18为本发明实施例提供的B-T1与ADCS(register)-T1指令压缩示意图;
图19为本发明实施例提供的B-T1与ADDS(register)-T1指令压缩示意图;
图20为本发明实施例提供的B-T1与ADDS(immediate)-T1指令压缩示意图;
图21为本发明实施例提供的B-T1与ADDS(immediate)-T2指令压缩示意图;
图22为本发明实施例提供的B-T1与CMP(register)指令压缩示意图;
图23为本发明实施例提供的B-T1与CMP(immediate)指令压缩示意图;
图24为本发明实施例提供的B-T3与CMP(register)指令压缩示意图;
图25为本发明实施例提供的B-T3与CMP(immediate)指令压缩示意图;
图26为本发明实施例提供的B-T1与ADCS(register)-T2指令压缩示意图;
图27为本发明实施例提供的B-T1与ADCS(immediate)-T3指令压缩示意图;
图28为本发明实施例提供的B-T3与ADCS(register)-T2指令压缩示意图;
图29为本发明实施例提供的B-T3与ADCS(immediate)-T3指令压缩示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
ARM指令集包括了64位和32位架构,32位架构包括了A32和T32指令集。T32指令包括了指令长度为16和32位2种指令。指令的格式主要是包括了寄存器,寄存器移位和立即数3种。本发明主要是针对与条件跳转指令相关的指令进行压缩。条件跳转指令是根据pstate的N、C、Z、V位进行判断是否发生跳转。基于ARM指令集的特点,本发明提出了一种指令压缩方法。本实施例以32位架构指令集为实例进行说明,64位架构指令集也同样适用,在本实施例中不再赘述。
本发明实施例提供的指令压缩方法理是把一条影响N、C、Z、V位的指令与一条相邻条件跳转指令压缩成一条指令。在预译码单元(pre_decoder)101阶段检测可以指令压缩的指示信号,该信号和指令同时写入指令缓冲(inst_buffer)102,在读指令缓冲的时候检查指令之间是否可以压缩,如果2条指令之间满足压缩的规则,那么把跳转指令填充到另外一条指令的空闲域中,然后为压缩的指令分配一个新的指令操作码,并且进入后续流水线,该过程在指令压缩单元(inst_fusion)103处实现。该压缩后的指令只需要分配一份重命名、保留站、执行单元和重排序缓冲资源。在下文的实例中是以预译码单元的带宽是2条指令每个时钟周期;在指令缓冲阶段压缩时只考虑第1对指令压缩;指令集只给出了32位和16指令集。本发明实施例适应于任何带宽,和大于1对指令压缩及任意指令集范畴。
取指(Fetch)单元105给出取指令地址,指令从指令缓存(Icache)106取出,然后到达取指(Fetch)单元105和分支指令预测单元(BPU)107进行信息汇集及处理,然后进入预译码单元(pre_decoder)101进行预译码,预译码完成后进入指令缓冲(inst_buffer)102,在指令缓冲(inst_buffer)102中读指令的时候进行指令压缩规则检查,然后进入指令压缩单元(inst_fusion)103进行指令压缩,压缩完成后进入译码单元(decoder)104。图1中给出了指令压缩的检测及实现位置。在预编码阶段产生指令压缩指示信号inst_fusion_info。该指令压缩指示信号inst_fusion_info主要包括会影响N、C、Z、V位的指令及条件跳转指令的指示。
表1条件跳转指令类型
表2影响条件跳转的指令
inst_fusion_info是根据表1和表2的指令产生的指示信号,指示信号的每一个bit表示一条或者类指令的属性,每个bit的属性如表3所示。本发明适应的指令类别不限于表1和表2中的指令。
表3 inst_fusion_info
101Pre_decoder根据表1和2产生表3的指示信号,该信号和指令同时写入201inst_buffer,剩下的指令压缩过程在201inst_buffer中完成。
如图2所示,假设201inst_buffer可以存放N条指令,那么201inst_buffer是每次可以最多写入2条指令每个时钟周期及读出3条指令每个时钟周期。Head_ptr是inst_buffer的读指针,该位置是指令压缩条件检查的开始位置,由于每次只融合第1对指令,那么在inspection area区域的3条指令之间检查,即inst_buffer[head_ptr]与inst_buffer[head_ptr+1]及inst_buffer[head_ptr+1]与inst_buffer[head_ptr+2]之间。如果200inst_buffer只有1条指令或者为空,不需要做检查;如果是2条指令只做inst_buffer[head_ptr]与inst_buffer[head_ptr+1]之间的检查;如果大于3条指令,只做如上描述的第1和第2对指令检查。
Tail_ptr是201inst_buffer的写入指令的位置,101pre_decoder提取的指令写入到Tail_ptr指示的位置,写完后再更新Tail_ptr的值,指向下一次写入指令的位置。在从指令缓冲中读指令的时候进行指令压缩规则检查。202完成第1条与第2条指令压缩,203完成第2条与第3条指令压缩。
如果inst_buffer[head_ptr]与inst_buffer[head_ptr+1]之间满足压缩规则,那么208Fused_inst_0_out输出压缩的指令,否则输出inst_buffer[head_ptr],同时207Fused_inst_1_out输出的是inst_buffer[head_ptr+2];如果inst_buffer[head_ptr]与inst_buffer[head_ptr+1]之间不满足压缩规则,那么208Fused_inst_0_out输出的是inst_buffer[head_ptr],同时207Fused_inst_1_out输出是inst_buffer[head_ptr+1]与inst_buffer[head_ptr+2]判断是否可以压缩之后的结果205 206。
压缩之后的指令重新分配一个新的操作码,执行单元会根据新的压缩指令执行。新压缩指令的操作码如表4所示。
表4压缩指令操作码
表中每1项内容表示,每一行的指令与每一列的指令压缩成一条指令后的新操作码。“/”表示不支持(源操作数超过了UOP的最大值)。
下面介绍A32指令压缩规则及实现。
本实施例中的指令是54bit的向量,在图3中描述了向量的每个域的含义。压缩的方法是把条件跳转指令填充到300向量中的空闲域,不需要增加额外的资源完成2条指令压缩。条件向量是指CMP、CMN、ADDS、ADCS、ANDS、ORRS、SUBS、TEQ和TST的指令。本发明的实现不局限于本实施例的实现的指令集和指令的向量格式,在本实施例中仅仅用于说明指令压缩原理。
2.1、B与CMP(register)指令压缩
如图4所示,寄存器类型指令空闲的域为:bit47:44,bit21:20,bit14,bit9,bit4:0。B指令的立即数为24位。
由于寄存器类型的空闲域有限,因此我们可以压缩B指令,并且要求高11bit为0才进行压缩,否则不进行压缩。如果立即数是有符号数,那么可以保留最高位,下文也同样适应该规则。
2.2、B与CMP(register-shifted register)指令压缩
如图5所示,移位寄存器类型指令的空闲域为:bit47:44,bit21:19,bit14,bit9,bit4:0。B指令的立即数为24位。
由于移位寄存器类型的空闲域有限,因此我们可以压缩B指令,并且要求高10bit为0才进行压缩,否则不进行压缩。
2.3、B与CMP(immediate)指令压缩
如图6所示,立即数类型指令的空闲域为:bit47:44,bit22,bit9:0。B指令的立即数为24位。
由于立即数类型的空闲域有限,因此我们可以压缩的B指令要求高9bit为0才进行压缩,否则不进行压缩。
2.4、BLX(register)与CMP(register)指令压缩
如图7所示,寄存器类型指令空闲的域为:bit47:44,bit21:20,bit14,bit9,bit4:0。BLX(register)的寄存器寻址rm是4bits。
BLX(register)指令是寄存器方式寻址,寄存器的地址只有4bit,因此2条指令可以完全压缩成一条指令。
2.5、BLX(register)与CMP(immediate)指令压缩
如图8所示,立即数类型指令的空闲域为:bit47:44,bit22,bit9:0。BLX(register)的寄存器寻址rm是4bits。
BLX(register)指令是寄存器方式寻址,寄存器的地址只有4bit,因此2条指令可以完全压缩成一条指令。BX,BXJ和BLX(register)有相同的指令格式,它们的指令压缩规则相同,在此不再给出。
2.6、B与ADCS(register)指令压缩
如图9所示,寄存器类型指令空闲的域为:bit47:44,bit21:20,bit14,bit9,bit4。B指令的立即数为24位。
寄存器类型的空闲域有限,因此我们可以压缩的B指令要求高16bit为0才进行压缩,否则不进行压缩。
2.7、B与ADCS(register-shifted register)指令压缩
如图10所示,移位寄存器类型指令的空闲域为:bit47:44,bit21:19,bit14,bit9,bit4。B指令的立即数为24位。
移位寄存器类型的空闲域有限,因此我们可以压缩的B指令要求高14bit为0才进行压缩,否则不进行压缩。
2.8、B与ADCS(immediate)指令压缩
如图11所示,立即数类型指令的空闲域为:bit47:44,bit9,bit4。B指令的立即数为24位。
立即数类型的空闲域有限,因此我们可以压缩的B指令要求高18bit为0才进行压缩,否则不进行压缩。
2.9、BLX(register)与ADCS(register)指令压缩
如图12所示,寄存器类型指令空闲的域为:bit47:44,bit21:20,bit14,bit9,bit4。BLX(register)的寄存器寻址rm是4bits。
BLX(register)指令是寄存器方式寻址,寄存器的地址只有4bit,因此2条指令可以完全压缩成一条指令。
2.10、BLX(register)与ADCS(immediate)指令压缩
如图13所示,立即数类型指令的空闲域为:bit47:44,bit22,bit9:0。BLX(register)的寄存器寻址rm是4bits。
BLX(register)指令是寄存器方式寻址,寄存器的地址只有4bit,因此2条指令可以完全压缩成一条指令。
BL与B指令格式相同,因此指令压缩规则也相同。BX,BXJ和BLX(register)指令格式相同,因此指令压缩规则也相同。ADCS,ADDS,ADNS,SUBS和ORRS指令格式相同,因此指令压缩规则也相同。这些压缩规则相同的指令压缩过程不再给出。
下面介绍16bit的T32指令压缩规则及实现。
如图14所示,T32指令的包括16bit和32bit指令的压缩,2种长度的指令可以混合压缩。
3.1、B-T1与CMP(register)-T1指令压缩
如图15所示,CMP(register)-T1类型指令的空闲域为:bit47:44,bit21,bit19:13,bit9:8,bit4:0。B-T1指令有8位立即数。
B-T1的立即数是8bit,CMP(register)-T1指令的空闲域大于8,因此2条指令可以完全压缩成一条指令。Fused CMP(register)-T1的操作码和A32(register)相同(通过CPU的工作模式来区分指令,适应于下文中的压缩规则)。
3.2、B-T1与CMP(register)-T2指令压缩
如图16所示,CMP(register)-T2类型指令的空闲域为:bit47:44,bit21,bit19:13,bit9:8,bit4:0。B-T1指令有8位立即数。
Fused CMP(register)-T2的操作码和A32(Register-shifted register)相同。B-T1与CMP(register)-T2完全压缩成1条指令。
3.3、B-T1与CMP(immediate)指令压缩
如图17所示,CMP(immediate)类型指令的空闲域为:bit47:44,bit19,bit18,bit9:8,bit4:0。B-T1指令有8位立即数。
Fused CMP(immediate)的操作码和A32(immediate)相同。B-T1与CMP(immediate)完全压缩成1条指令。
3.4、B-T1与ADCS(register)-T1指令压缩
如图18所示,CMP(register)-T1类型指令的空闲域为:bit47:44,bit23:13,bit9:8,bit4:3。B-T1指令有8位立即数。
Fused ADCS(register)-T1的操作码和A32(register)相同。B-T1与CMP(register)-T1完全压缩成1条指令。
3.5、B-T1与ADDS(register)-T1指令压缩
如图19所示,CMP(register)-T1类型指令的空闲域为:bit47:44,bit23:13,bit9:8,bit4:3。B-T1指令有8位立即数。
Fused ADDS(register)-T1的操作码和A32(register)相同。B-T1与ADDS(register)-T1完全压缩成1条指令。
3.6、B-T1与ADDS(immediate)-T1指令压缩
如图20所示,ADDS(immediate)-T1类型指令的空闲域为:bit47:44,bit23:13,bit9:8,bit4:3。B-T1指令有8位立即数。
Fused ADDS(immediate)-T1的操作码和A32(immediate)相同。B-T1与ADDS(immediate)-T1完全压缩成1条指令。
3.7、B-T1与ADDS(immediate)-T2指令压缩
如图21所示,ADDS(immediate)-T2类型指令的空闲域为:bit47:44,bit23:13,bit9:8,bit4:3。B-T1指令有8位立即数。
Fused ADDS(immediate)-T2的操作码和A32(Register-shifted register)相同。B-T1与ADDS(immediate)-T2完全压缩成1条指令。
CMN(register)-T1,TST(register)-T1和CMP(register)-T1有相同指令格式及指令压缩规则;ADCS(register)-T1,ANDS(register)-T1和ORRS(register)-T1有相同指令格式及指令压缩规则;ADDS(register)-T1和SUBS(register)-T1有相同指令格式及指令压缩规则;ADDS(immediate)-T1/T2和SUBS(immediate)-T1/T2有相同指令格式及指令压缩规则。B-T3指令也可以和能够与B-1压缩的指令进行压缩,压缩的规则类似,本文不再给出。
下面介绍32bit的T32指令压缩规则及实现。
4.1、B-T1与CMP(register)指令压缩
如图22所示,CMP(register)类型指令的空闲域为:bit47:44,bit21:20,bit14,bit9,bit4:0。B-T1指令有8位立即数。
Fused CMP(register)的操作码和A32(register)相同。B-T1与CMP(register)完全压缩成1条指令。
4.2、B-T1与CMP(immediate)指令压缩
如图23所示,CMP(immediate)类型指令的空闲域为:bit47:44,bit22,bit9,bit4:0。B-T1指令有8位立即数。
Fused CMP(immediate)的操作码和A32(immediate)相同。B-T1与CMP(immediate)完全压缩成1条指令。CMN,TEQ,TST,CMP有相同的指令格式和指令压缩规则。
4.3、B-T3与CMP(register)指令压缩
如图24所示,CMP(register)类型指令的空闲域为:bit47:44,bit21:20,bit14,bit9,bit4:0。B-T3有17位立即数。
Fused CMP(register)的操作码和A32(register)相同。CMP(register)的{47:44,21:20,14,9,4,3,2,1,0}压缩了B-T3的{s,imm6[0],imm11},剩下的立即数和j1及j2全部为0,否则不进行指令压缩。
4.4、B-T3与CMP(immediate)指令压缩
如图25所示,CMP(immediate)类型指令的空闲域为:bit47:44,bit22,bit9,bit4:0。B-T3有17位立即数。
Fused CMP(immediate)的操作码和A32(immediate)相同。CMP(immediate)的{47:44,22,9,4,3,2,1,0}压缩了B-T3的{s,imm11[9:0]},剩下的立即数和j1及j2全部为0,否则不进行指令压缩。
4.5、B-T1与ADCS(register)-T2指令压缩
如图26所示,ADCS(register)-T2类型指令的空闲域为:bit47:44,bit21:20,bit14,bit9,bit4。B-T1有8位的立即数。
Fused ADCS(register)-T2的操作码和A32(register)相同。B-T1与ADCS(register)-T2完全压缩成1条指令。
4.6、B-T1与ADCS(immediate)-T3指令压缩
如图27所示,ADCS(immediate)-T3类型指令的空闲域为:bit47:44,bit22,bit14,bit9,bit4。B-T1有8位的立即数。
Fused ADCS(immediate)-T3的操作码和A32(register)相同。ADCS(immediate)-T3的{47,46,45,44,22,9,4}压缩了B-T1的imm[6:0]。imm[7]为0,否则不进行指令压缩。
4.7、B-T3与ADCS(register)-T2指令压缩
如图28所示,ADCS(register)-T2类型指令的空闲域为:bit47:44,bit21:20,bit14,bit9,bit4。B-T3有17的立即数。
Fused ADCS(register)-T2的操作码和A32(register-BL)相同。ADCS(register)-T2的{46,45,44,21,20,14,9,4}压缩了B-T3的Imm11[7:0]。剩下的立即数为0,否则不进行指令压缩。
4.8、B-T3与ADCS(immediate)-T3指令压缩
如图29所示,ADCS(immediate)-T3类型指令的空闲域为:bit47:44,bit22,bit9,bit4.B-T3 instruction’s immediate has 17bits.
Fused ADCS(immediate)-T3的操作码和A32(register-BL)相同。ADCS(immediate)-T3的{47,46,45,44,22,9,4}压缩了B-T1的imm[6:0]。剩下的立即数,j1,j2为0,否则不进行指令压缩。
CMN,TEQ,TST,ADCS,ADDS,ANDS,ORRS,SUBS和CMP有相同的指令格式和指令压缩规则。
本发明实施例提供的指令压缩方法,在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲,在指令缓冲中读指令的时候检查两条指令之间是否可以压缩,如果两条指令之间可以压缩,则对两条指令进行压缩,并对压缩后的指令进行译码操作,从而能够在不增加额外的硬件资源条件下,根据不同指令有效域和指令类型进行压缩。由于多条指令可以压缩成1条指令,那么微指令的空闲域可以得到利用,同时多条指令压缩后共享一份重命名、保留站、执行单元和重排序队列资源,从而提高了重命名、保留站、执行单元和重排序队列资源的使用率,特别是针对那些存在依赖关系的指令。
本发明实施例还提供一种指令压缩装置,所述装置包括:
预译码单元,用于在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲;
检查单元,用于在指令缓冲中读指令的时候检查两条指令之间是否可以压缩;
指令压缩单元,用于当两条指令之间可以压缩时,对两条指令进行压缩;
译码单元,用于对压缩后的指令进行译码操作。
本发明实施例提供的指令压缩装置,在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲,在指令缓冲中读指令的时候检查两条指令之间是否可以压缩,如果两条指令之间可以压缩,则对两条指令进行压缩,并对压缩后的指令进行译码操作,从而能够在不增加额外的硬件资源条件下,根据不同指令有效域和指令类型进行压缩。由于多条指令可以压缩成1条指令,那么微指令的空闲域可以得到利用,同时多条指令压缩后共享一份重命名、保留站、执行单元和重排序队列资源,从而提高了重命名、保留站、执行单元和重排序队列资源的使用率,特别是针对那些存在依赖关系的指令。
可选地,所述装置还包括:
取指单元,用于在所述预译码单元在预译码阶段检测可以指令压缩的指示信号之前,在取指阶段根据取指令地址从指令缓存中取出指令,并进行信息汇集及处理;
分支指令预测单元,用于在分支指令预测阶段进行信息汇集及处理。
可选地,所述指令压缩单元,用于将跳转指令填充到另外一条指令的空闲域中,然后为压缩的指令分配一个新的指令操作码。
可选地,所述指示信号包括会影响N、C、Z、V位的指令以及条件跳转指令的指示。
可选地,所述指令压缩单元,用于将一条影响N、C、Z、V位的指令与一条相邻条件跳转指令压缩成一条指令。
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (4)
1.一种指令压缩方法,其特征在于,包括:
在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲,所述指示信号包括会影响N、C、Z、V位的指令以及条件跳转指令的指示;
在指令缓冲中读指令的时候检查两条指令之间是否可以压缩;
如果两条指令之间可以压缩,则对两条指令进行压缩,具体为:将一条影响N、C、Z、V位的指令与一条相邻条件跳转指令压缩成一条指令;
对压缩后的指令进行译码操作;
所述对两条指令进行压缩包括:将跳转指令填充到另外一条指令的空闲域中,然后为压缩的指令分配一个新的指令操作码,压缩后的指令只需要分配一份重命名、保留站、执行单元和重排序缓冲资源。
2.根据权利要求1所述的方法,其特征在于,在所述在预译码阶段检测可以指令压缩的指示信号之前,所述方法还包括:
在取指阶段根据取指令地址从指令缓存中取出指令;
在取指阶段和分支指令预测阶段进行信息汇集及处理。
3.一种指令压缩装置,其特征在于,包括:
预译码单元,用于在预译码阶段检测可以指令压缩的指示信号,并将该指示信号和指令同时写入指令缓冲,所述指示信号包括会影响N、C、Z、V位的指令以及条件跳转指令的指示;
检查单元,用于在指令缓冲中读指令的时候检查两条指令之间是否可以压缩;
指令压缩单元,用于当两条指令之间可以压缩时,对两条指令进行压缩,具体为:将一条影响N、C、Z、V位的指令与一条相邻条件跳转指令压缩成一条指令;
译码单元,用于对压缩后的指令进行译码操作;
所述指令压缩单元,还用于将跳转指令填充到另外一条指令的空闲域中,然后为压缩的指令分配一个新的指令操作码,压缩后的指令只需要分配一份重命名、保留站、执行单元和重排序缓冲资源。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括:
取指单元,用于在所述预译码单元在预译码阶段检测可以指令压缩的指示信号之前,在取指阶段根据取指令地址从指令缓存中取出指令,并进行信息汇集及处理;
分支指令预测单元,用于在分支指令预测阶段进行信息汇集及处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811391262.XA CN111209044B (zh) | 2018-11-21 | 2018-11-21 | 指令压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811391262.XA CN111209044B (zh) | 2018-11-21 | 2018-11-21 | 指令压缩方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209044A CN111209044A (zh) | 2020-05-29 |
CN111209044B true CN111209044B (zh) | 2022-11-25 |
Family
ID=70789244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811391262.XA Active CN111209044B (zh) | 2018-11-21 | 2018-11-21 | 指令压缩方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209044B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225538A (zh) * | 2023-05-06 | 2023-06-06 | 苏州萨沙迈半导体有限公司 | 处理器及其流水线结构、指令执行方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1326132A (zh) * | 2000-05-25 | 2001-12-12 | 斯罗扬有限公司 | 具有压缩指令的处理器及处理器指令的压缩方法 |
CN1328664A (zh) * | 1998-09-08 | 2001-12-26 | 英特尔公司 | 利用第二级分支预测表的分支预测的方法和设备 |
CN103838550A (zh) * | 2012-11-26 | 2014-06-04 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
CN104094239A (zh) * | 2012-01-29 | 2014-10-08 | 汤姆逊许可公司 | 有限随机存取存储器/闪存设备架构的闪存压缩指令缓存方法 |
CN104423929A (zh) * | 2013-08-21 | 2015-03-18 | 华为技术有限公司 | 一种分支预测方法及相关装置 |
EP2863301A1 (en) * | 2013-10-18 | 2015-04-22 | VIA Technologies, Inc. | Microprocessor with compressed and uncompressed microcode memories |
CN107077321A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275927B2 (en) * | 1998-09-21 | 2001-08-14 | Advanced Micro Devices. | Compressing variable-length instruction prefix bytes |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
JP2007226615A (ja) * | 2006-02-24 | 2007-09-06 | Matsushita Electric Ind Co Ltd | 情報処理装置、圧縮プログラム生成方法及び情報処理システム |
CN101076031B (zh) * | 2006-12-06 | 2012-05-23 | 腾讯科技(深圳)有限公司 | 一种应用网络硬盘的方法 |
CN101276629B (zh) * | 2007-03-30 | 2011-07-27 | 扬智科技股份有限公司 | 播放音频信号的方法与相关系统 |
CN104679481B (zh) * | 2013-11-27 | 2020-04-28 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
-
2018
- 2018-11-21 CN CN201811391262.XA patent/CN111209044B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1328664A (zh) * | 1998-09-08 | 2001-12-26 | 英特尔公司 | 利用第二级分支预测表的分支预测的方法和设备 |
CN1326132A (zh) * | 2000-05-25 | 2001-12-12 | 斯罗扬有限公司 | 具有压缩指令的处理器及处理器指令的压缩方法 |
CN104094239A (zh) * | 2012-01-29 | 2014-10-08 | 汤姆逊许可公司 | 有限随机存取存储器/闪存设备架构的闪存压缩指令缓存方法 |
CN103838550A (zh) * | 2012-11-26 | 2014-06-04 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
CN104423929A (zh) * | 2013-08-21 | 2015-03-18 | 华为技术有限公司 | 一种分支预测方法及相关装置 |
EP2863301A1 (en) * | 2013-10-18 | 2015-04-22 | VIA Technologies, Inc. | Microprocessor with compressed and uncompressed microcode memories |
CN107077321A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑 |
Non-Patent Citations (2)
Title |
---|
An efficient instruction compression/decompression system based on field partitioning;Yuan-Long Jeang等;《IEEE》;20060221;1895-1898 * |
基于JTAG仿真的ARM Linux设备Bootkit检测技术研究;蒋和国 等;《计算机应用研究》;20150906;526-530 * |
Also Published As
Publication number | Publication date |
---|---|
CN111209044A (zh) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5313228B2 (ja) | 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア | |
US7473293B2 (en) | Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator | |
US8943300B2 (en) | Method and apparatus for generating return address predictions for implicit and explicit subroutine calls using predecode information | |
JP4585005B2 (ja) | 分岐訂正によるプリデコードのエラー処理 | |
US7568070B2 (en) | Instruction cache having fixed number of variable length instructions | |
US20010002483A1 (en) | System for configuring to reduce variance in the length of variable length instructions by compressing multiple prefix bytes into single compressed prefix byte | |
JP2003510682A5 (zh) | ||
KR102126909B1 (ko) | 하위 호환성을 위한 애플리케이션-특정 연산 파라미터 도출 | |
US20120284489A1 (en) | Methods and Apparatus for Constant Extension in a Processor | |
US20230062645A1 (en) | Parallel instruction extraction method and readable storage medium | |
JP5745638B2 (ja) | 分岐命令の中に符号化されたバイモーダル分岐予測子 | |
TW201346732A (zh) | 指示可變長度指令集的指令長度之技術 | |
KR101019393B1 (ko) | 정확한 프리디코드를 보장하기 위한 방법 및 장치 | |
US6460116B1 (en) | Using separate caches for variable and generated fixed-length instructions | |
US8635434B2 (en) | Mathematical operation processing apparatus for performing high speed mathematical operations | |
US8549266B2 (en) | System and method of instruction modification | |
CN111209044B (zh) | 指令压缩方法及装置 | |
US7519799B2 (en) | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof | |
US6253309B1 (en) | Forcing regularity into a CISC instruction set by padding instructions | |
CN117008975A (zh) | 一种指令融合分割方法、处理器核和处理器 | |
CN112540795A (zh) | 指令处理装置和指令处理方法 | |
CN118057308A (zh) | 指令处理优化方法及相关装置 | |
CN117348936A (zh) | 处理器、取指方法和计算机系统 | |
US20210096867A1 (en) | Instruction Length Decoder System and Method | |
KR20000003447A (ko) | 무조건 분기 명령어의 수행 시간을 줄이기 위한 분기 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |