CN103336681A - 针对采用变长指令集的流水线结构处理器的取指方法 - Google Patents

针对采用变长指令集的流水线结构处理器的取指方法 Download PDF

Info

Publication number
CN103336681A
CN103336681A CN 201310277005 CN201310277005A CN103336681A CN 103336681 A CN103336681 A CN 103336681A CN 201310277005 CN201310277005 CN 201310277005 CN 201310277005 A CN201310277005 A CN 201310277005A CN 103336681 A CN103336681 A CN 103336681A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
instruction
fetch
data
decoding
length
Prior art date
Application number
CN 201310277005
Other languages
English (en)
Other versions
CN103336681B (zh )
Inventor
吴俊�
骆原
苏立峰
陈伟
沈嘉琦
李思昌
周文宗
Original Assignee
同济大学
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

Links

Abstract

本发明涉及一种针对采用变长指令集的流水线结构处理器的取指方法,采用不同宽度的指令在指令存储器中连续存储,分别设置取指指针和译码指针,用来保存下一条需要取指的地址和下一条需要译码的地址。取指部件中设置一定宽度的指令数据循环缓冲区,指令存储器中取出来的数据需覆盖缓冲区的特定部分,取指阶段从缓冲区中的特定位置取出数据进行译码。最后根据译码结果以及两个指针决定下一个周期是否需要进行取指。与现有技术相比,本发明可以解决变长指令集的取指问题,同时保证指令存储器深度不增加以及处理器流水线的吞吐量不降低。

Description

针对采用变长指令集的流水线结构处理器的取指方法

技术领域

[0001] 本发明涉及一种取指方法,尤其是涉及一种针对采用变长指令集的流水线结构处理器的取指方法。

背景技术

[0002] 所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。

[0003] 在技术飞快发展的现代,由于ASIP的设计越来越复杂,指令集的设计也不再局限于传统的RISC模式,VLIW和SMD等技术也已经广泛应用于指令集设计当中。VLIW: (VeryLong Instruction Word,超长指令字)一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。SIMD: (Single Instruction Multiple Data,单指令多数据流)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集,以同步方式,在同一时间内执行同一条指令。在通用处理器设计的过程中,指令集往往是定长的,而在针对特殊领域的处理器的设计中,指令集的设计也渐渐复杂,为了节省指令存储器的空间,降低其压力,最好的方法是设计变长指令集,对于复杂功能的指令,如VLIW、SIMD等类型的指令,可分配较长的指令长度,对于简单功能的指令可以分配较短的指令长度。这时除了处理器的处理单元,译码单元需要重新设计,处理器的取指策略也需要重新考量,在不增加指令存储器深度以及不降低处理器流水线的吞吐量的条件下,保证取指的正确。

发明内容

[0004] 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种针对采用变长指令集的流水线结构处理器的取指方法,该方法可以解决变长指令集的取指问题,同时保证指令存储器深度不增加以及处理器流水线的吞吐量不降低。

[0005] 本发明的目的可以通过以下技术方案来实现:

[0006] 一种针对采用变长指令集的流水线结构处理器的取指方法,包括:

[0007] 流水线的取指级,包含指令存储器、取指地址寄存器、取指判决单元;

[0008] 流水线的译码级,包含指令译码模块、译码地址寄存器位;

[0009] 指令数据循环缓冲区,该指令数据循环缓冲区为流水线的取指级和流水线的译码级之间的流水线寄存器;

[0010] 其中,所述的指令存储器的宽度为单条指令最大长度,且不同长度的指令在指令存储器中连续存储,所述的指令译码模块对指令数据进行译码,并通过对取指地址寄存器和译码地址寄存器进行逻辑判断,决定下一个周期是否取指,将结果反馈至流水线的取指级,所述的指令数据循环缓冲区用于缓存取入的指令数据,并通过取指地址寄存器和译码地址寄存器控制指令数据的更新。

[0011] 所述的指令存储器满足以下条件:[0012] a、指令的长度满足表达式:2X字,x>0,字长任意,其中最长的指令长度为M个字,M = 2m,最短的指令长度为N个字,N = 2n,每条指令的长度介于N,M之间,不同长度的单条指令所需要执行周期数相同;

[0013] b、不同长度的指令在指令存储器中连续存储;

[0014] C、取指地址寄存器保存下一次进行取指的地址,每次取指后其需自增M。

[0015] 所述的指令译码模块满足以下条件:

[0016] a、译码地址寄存器保存下一个需要进行译码的指令的起始地址,每次译码结束后其需自增该指令的真实长度,

[0017] b、指令译码模块从指令数据循环缓冲区中取出指令数据进行译码后送入执行模块,流水线的译码级根据自增后的译码地址寄存器以及流水线的取指级的取指地址寄存器的比较结果,决定下一个周期是否取指,并将决定结果反馈至取指级;

[0018] C、取指判决单元接收到译码级反馈的比较结果,决定是否向指令内存请求数据,以及是否向指令数据循环缓冲区中写入新的数据。

[0019] 所述的指令数据循环缓冲区满足以下条件:

[0020] a、指令数据循环缓冲区的宽度为设置为2M,取指地址寄存器决定每次取入的指令数据所覆盖的指令数据循环缓冲区中的位置,译码地址寄存器决定每次需要译码的指令数据在指令数据循环缓冲区中的位置,取指地址寄存器和译码地址寄存器之间的相对位置决定指令数据循环缓冲区中有效的数据量;

[0021] b、译码级取指判断·逻辑为:当memPC == PC时,指令缓冲区为空或者均为无效数据,则下个周期可以取指;当memPC ! = PC,且memPC-PC e [2*M,M+N)时,则指令缓冲区中没有足够的空间来缓存M个字,故无法取指;当memPC ! = PC,且memPC-PC e [M+N, O)时,下一个周期可以进行取指;其中memPC为取指地址寄存器,PC为详码地址寄存器,M为最长的指令长度,N为最短的指令长度。

[0022] 与现有技术相比,本发明。

附图说明

[0023] 图1为本发明整体的取指结构图;

[0024] 图2为从指令存储中取指并存入指令数据循环缓冲区的流程图;

[0025] 图3为从循环缓冲区中取数据进行译码,并判决下一个周期是否取指的流程图。

具体实施方式

[0026] 下面结合附图和具体实施例对本发明进行详细说明。

[0027] 实施例

[0028] 如图1〜3所示,一种针对采用变长指令集的流水线结构处理器的取指方法,包括流水线的取指级、译码级以及指令数据循环缓冲区(Instruction Buffer, IB)。其中,取指级包含:指令存储器(Instruction Memory, IM)、取指地址寄存器(memPC)、取指判决单元(Fetch Decision, FD);流水线译码级包含:指令译码模块(Instruction Decoder, ID)、译码地址寄存器位(PC);指令数据循环缓冲区为取指级和译码级之间的流水线寄存器的一部分。[0029] 其中,指令存储器的宽度为单条指令最大长度,且不同长度的指令在指令存储器中连续存储。以指令长度为4字节和8字节两种为例,指令存储器的字长为8字节。即每次取64位的指令数据。而由于,每次“消耗”的指令内容,可能为4字节或8字节两种情况。故需要一个指令缓冲IB来进行缓存指令数据,并需要逻辑控制本周期是否要取指,否则缓冲IB就会溢出。IB设置为16字节的缓冲区。故可知需要两个PC来联合控制。一个是memPC它准确地描述下一个需要取进IB的8字节为指令数据的地址。一个是PC,它用来准确地指定下一个需要执行的指令的地址。可见通过memPC和PC相对位置的比较,可以推算出当前IB中的可用的指令数据剩余数量,以决定当前IB中是否有足够空间存放下一条8字节的指令数据。这种比较判断明显是在译码阶段做出,因为需要用来参与判断的PC应该是译码后才能知道自增的步长为4还是8。

[0030] memPC和PC的判断要分成两种情况:

[0031] 1、若memPC = = PC,这时应该是刚开机,或者刚跳转,或刚被重置后的情况,这时需要进行取指。

[0032] 2、若memPC ! = PC且memPC-PC = = 16字节,这时IB中的数据都是取进来且未被使用过的数据。这时取指需要暂停,否则IB会溢出。

[0033] 3、其他的情况都是需要进行取指的。这里有一个特殊的情况,就是memPC和PC相差12字节,这时只有4字节的缓冲空可用,但是由于指令长度至少位4字节,接下来至少会有4字节的数据被消费,故还是可以取指的。

[0034] memPC和PC的比较结果从译码阶段反馈至取指阶段。

[0035] 本发明所主张的权利范围并不局限于此。本发明还有其他多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员可根据本发明作出各种相应的改变和变形,但这些改变和变形都应属于本`发明所附的权利要求的保护范围。

Claims (4)

1.一种针对采用变长指令集的流水线结构处理器的取指方法,其特征在于,包括: 流水线的取指级,包含指令存储器、取指地址寄存器、取指判决单元; 流水线的译码级,包含指令译码模块、译码地址寄存器位; 指令数据循环缓冲区,该指令数据循环缓冲区为流水线的取指级和流水线的译码级之间的流水线寄存器; 其中,所述的指令存储器的宽度为单条指令最大长度,且不同长度的指令在指令存储器中连续存储,所述的指令译码模块对指令数据进行译码,并通过对取指地址寄存器和译码地址寄存器进行逻辑判断,决定下一个周期是否取指,将结果反馈至流水线的取指级,所述的指令数据循环缓冲区用于缓存取入的指令数据,并通过取指地址寄存器和译码地址寄存器控制指令数据的更新。
2.根据权利要求1所述的一种针对采用变长指令集的流水线结构处理器的取指方法,其特征在于,所述的指令存储器满足以下条件: a、指令的长度满足表达式:2X字,X > O,字长任意,其中最长的指令长度为M个字,M =2m,最短的指令长度为N个字,N = 2n,每条指令的长度介于N,M之间,不同长度的单条指令所需要执行周期数相同; b、不同长度的指令在指令存储器中连续存储; C、取指地址寄存器保存下一次进行取指的地址,每次取指后其需自增M。
3.根据权利要求1所述 的一种针对采用变长指令集的流水线结构处理器的取指方法,其特征在于,所述的指令译码模块满足以下条件: a、译码地址寄存器保存下一个需要进行译码的指令的起始地址,每次译码结束后其需自增该指令的真实长度, b、指令译码模块从指令数据循环缓冲区中取出指令数据进行译码后送入执行模块,流水线的译码级根据自增后的译码地址寄存器以及流水线的取指级的取指地址寄存器的比较结果,决定下一个周期是否取指,并将决定结果反馈至取指级; C、取指判决单元接收到译码级反馈的比较结果,决定是否向指令内存请求数据,以及是否向指令数据循环缓冲区中写入新的数据。
4.根据权利要求1所述的一种针对采用变长指令集的流水线结构处理器的取指方法,其特征在于,所述的指令数据循环缓冲区满足以下条件: a、指令数据循环缓冲区的宽度为设置为2M,取指地址寄存器决定每次取入的指令数据所覆盖的指令数据循环缓冲区中的位置,译码地址寄存器决定每次需要译码的指令数据在指令数据循环缓冲区中的位置,取指地址寄存器和译码地址寄存器之间的相对位置决定指令数据循环缓冲区中有效的数据量; b、译码级取指判断逻辑为:当memPC = = PC时,指令缓冲区为空或者均为无效数据,则下个周期可以取指;当memPC ! = PC,且memPC-PC e [2*M,M+N)时,则指令缓冲区中没有足够的空间来缓存M个字,故无法取指;当memPC ! = PC,且memPC-PC e [M+N, O)时,下一个周期可以进行取指;其中memPC为取指地址寄存器,PC为译码地址寄存器,M为最长的指令长度,N为最短的指令长度。
CN 201310277005 2013-07-03 2013-07-03 针对采用变长指令集的流水线结构处理器的取指方法 CN103336681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201310277005 CN103336681B (zh) 2013-07-03 2013-07-03 针对采用变长指令集的流水线结构处理器的取指方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201310277005 CN103336681B (zh) 2013-07-03 2013-07-03 针对采用变长指令集的流水线结构处理器的取指方法

Publications (2)

Publication Number Publication Date
CN103336681A true true CN103336681A (zh) 2013-10-02
CN103336681B CN103336681B (zh) 2015-11-25

Family

ID=49244859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201310277005 CN103336681B (zh) 2013-07-03 2013-07-03 针对采用变长指令集的流水线结构处理器的取指方法

Country Status (1)

Country Link
CN (1) CN103336681B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593169A (zh) * 2013-11-29 2014-02-19 深圳中微电科技有限公司 一种多线程处理器中的指令输出装置、方法及其处理器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
JPH10207707A (ja) * 1997-01-14 1998-08-07 Ind Technol Res Inst スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
CN101114217A (zh) * 2006-07-27 2008-01-30 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
JPH10207707A (ja) * 1997-01-14 1998-08-07 Ind Technol Res Inst スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
CN101114217A (zh) * 2006-07-27 2008-01-30 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593169A (zh) * 2013-11-29 2014-02-19 深圳中微电科技有限公司 一种多线程处理器中的指令输出装置、方法及其处理器
CN103593169B (zh) * 2013-11-29 2017-09-05 深圳中微电科技有限公司 一种多线程处理器中的指令输出装置、方法及其处理器

Also Published As

Publication number Publication date Type
CN103336681B (zh) 2015-11-25 grant

Similar Documents

Publication Publication Date Title
US20130117541A1 (en) Speculative execution and rollback
US5826089A (en) Instruction translation unit configured to translate from a first instruction set to a second instruction set
US20060184738A1 (en) Unaligned memory access prediction
US20060242365A1 (en) Method and apparatus for suppressing duplicative prefetches for branch target cache lines
US20100332803A1 (en) Processor and control method for processor
US6237083B1 (en) Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
US20120060016A1 (en) Vector Loads from Scattered Memory Locations
US20080276072A1 (en) System and Method for using a Local Condition Code Register for Accelerating Conditional Instruction Execution in a Pipeline Processor
US20120060015A1 (en) Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
Maruyama et al. Sparc64 VIIIfx: A new-generation octocore processor for petascale computing
US20050172210A1 (en) Add-compare-select accelerator using pre-compare-select-add operation
US20130117543A1 (en) Low overhead operation latency aware scheduler
US20130262838A1 (en) Memory Disambiguation Hardware To Support Software Binary Translation
CN101344842A (zh) 多线程处理器及其多线程处理方法
US20140095847A1 (en) Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
US20090164758A1 (en) System and Method for Performing Locked Operations
JP2003085000A (ja) トレース情報生成装置およびその方法
US20100332805A1 (en) Remapping source Registers to aid instruction scheduling within a processor
US20140223144A1 (en) Load Latency Speculation In An Out-Of-Order Computer Processor
US20130339700A1 (en) Loop buffer learning
CN201716564U (zh) 高性能可编程控制器专用处理器体系结构
JP2006318051A (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
US20100037036A1 (en) Method to improve branch prediction latency

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
C53 Correction of patent for invention or patent application
COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: WU JUN LUO YUAN SU LIFENG CHEN WEI SHEN JIAQI LI SICHANG ZHOU WENZONG TO: WU JUN LUO YUAN ZHANG ZHIFENG SU LIFENG CHEN WEI SHEN JIAQI

C14 Grant of patent or utility model