New! View global litigation for patent families

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

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

Info

Publication number
CN103336681B
CN103336681B CN 201310277005 CN201310277005A CN103336681B CN 103336681 B CN103336681 B CN 103336681B CN 201310277005 CN201310277005 CN 201310277005 CN 201310277005 A CN201310277005 A CN 201310277005A CN 103336681 B CN103336681 B CN 103336681B
Authority
CN
Grant status
Grant
Patent type
Application number
CN 201310277005
Other languages
English (en)
Other versions
CN103336681A (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
Grant date

Links

Abstract

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

Description

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

技术领域

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

背景技术

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

[0003] 在技术飞快发展的现代,由于ASIP的设计越来越复杂,指令集的设计也不再局限于传统的RISC模式,VLIW和Sn®等技术也已经广泛应用于指令集设计当中。VLIW: (VeryLong Instruct1n Word,超长指令字)一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。SIMD: (Single Instruct1n 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] 图1为本发明整体的取指结构图;

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

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

具体实施方式

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

[0026] 实施例

[0027] 如图1〜3所示,一种针对采用变长指令集的流水线结构处理器的取指方法,包括流水线的取指级、译码级以及指令数据循环缓冲区(Instruct1n Buffer,IB)。其中,取指级包含:指令存储器(Instruct1n Memory, IM)、取指地址寄存器(memPC)、取指判决单元(Fetch Decis1n, FD);流水线译码级包含:指令译码模块(Instruct1n Decoder,ID)、译码地址寄存器(PC);指令数据循环缓冲区为取指级和译码级之间的流水线寄存器的一部分。

[0028] 其中,指令存储器的宽度为单条指令最大长度,且不同长度的指令在指令存储器中连续存储。以指令长度为4字节和8字节两种为例,指令存储器的字长为8字节。即每次取64位的指令数据。而由于,每次“消耗”的指令内容,可能为4字节或8字节两种情况。故需要一个指令缓冲IB来进行缓存指令数据,并需要逻辑控制本周期是否要取指,否则缓冲IB就会溢出。IB设置为16字节的缓冲区。故可知需要两个PC来联合控制。一个是memPC它准确地描述下一个需要取进IB的8字节为指令数据的地址。一个是PC,它用来准确地指定下一个需要执行的指令的地址。可见通过memPC和PC相对位置的比较,可以推算出当前IB中的可用的指令数据剩余数量,以决定当前IB中是否有足够空间存放下一条8字节的指令数据。这种比较判断明显是在译码阶段做出,因为需要用来参与判断的PC应该是译码后才能知道自增的步长为4还是8。

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

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

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

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

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

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

Claims (3)

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

Families Citing this family (1)

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

Citations (3)

* 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
CN101114217A (zh) * 2006-07-27 2008-01-30 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2886838B2 (ja) * 1997-01-14 1999-04-26 財団法人工業技術研究院 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法

Patent Citations (3)

* 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
CN101114217A (zh) * 2006-07-27 2008-01-30 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法

Also Published As

Publication number Publication date Type
CN103336681A (zh) 2013-10-02 application

Similar Documents

Publication Publication Date Title
US5826089A (en) Instruction translation unit configured to translate from a first instruction set to a second instruction set
US20140181830A1 (en) Thread migration support for architectually different cores
US20100332803A1 (en) Processor and control method for processor
US20060184738A1 (en) Unaligned memory access prediction
US20120060015A1 (en) Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
US20120060016A1 (en) Vector Loads from Scattered Memory Locations
US20060242365A1 (en) Method and apparatus for suppressing duplicative prefetches for branch target cache lines
US20090019257A1 (en) Method and Apparatus for Length Decoding and Identifying Boundaries of Variable Length Instructions
US6832305B2 (en) Method and apparatus for executing coprocessor instructions
CN101916180A (zh) Risc处理器中执行寄存器类型指令的方法和其系统
US20110265068A1 (en) Single Thread Performance in an In-Order Multi-Threaded Processor
US9235414B2 (en) SIMD integer multiply-accumulate instruction for multi-precision arithmetic
US20140095847A1 (en) Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US20090019263A1 (en) Method and Apparatus for Length Decoding Variable Length Instructions
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
US20090164758A1 (en) System and Method for Performing Locked Operations
US20080091921A1 (en) Data prefetching in a microprocessing environment
US20100332805A1 (en) Remapping source Registers to aid instruction scheduling within a processor
CN201716564U (zh) 高性能可编程控制器专用处理器体系结构
US20020069351A1 (en) Memory data access structure and method suitable for use in a processor
US7831979B2 (en) Processor with instruction-based interrupt handling
US20130007415A1 (en) Method and apparatus for scheduling of instructions in a multi-strand out-of-order processor
US20100037036A1 (en) Method to improve branch prediction latency
CN101593096A (zh) 一种共享寄存器相关性消除的实现方法
US7234043B2 (en) Decoding predication instructions within a superscaler data processing system

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