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

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

Info

Publication number
CN103336681B
CN103336681B CN201310277005.4A CN201310277005A CN103336681B CN 103336681 B CN103336681 B CN 103336681B CN 201310277005 A CN201310277005 A CN 201310277005A CN 103336681 B CN103336681 B CN 103336681B
Authority
CN
China
Prior art keywords
fetching
instruction
address register
decoding
director data
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
CN201310277005.4A
Other languages
English (en)
Other versions
CN103336681A (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.)
Tongji University
Original Assignee
Tongji University
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 Tongji University filed Critical Tongji University
Priority to CN201310277005.4A priority Critical patent/CN103336681B/zh
Publication of CN103336681A publication Critical patent/CN103336681A/zh
Application granted granted Critical
Publication of CN103336681B publication Critical patent/CN103336681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

针对采用变长指令集的流水线结构处理器的取指方法
技术领域
本发明涉及一种取指方法,尤其是涉及一种针对采用变长指令集的流水线结构处理器的取指方法。
背景技术
所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。
在技术飞快发展的现代,由于ASIP的设计越来越复杂,指令集的设计也不再局限于传统的RISC模式,VLIW和SIMD等技术也已经广泛应用于指令集设计当中。VLIW:(VeryLongInstructionWord,超长指令字)一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。SIMD:(SingleInstructionMultipleData,单指令多数据流)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集,以同步方式,在同一时间内执行同一条指令。在通用处理器设计的过程中,指令集往往是定长的,而在针对特殊领域的处理器的设计中,指令集的设计也渐渐复杂,为了节省指令存储器的空间,降低其压力,最好的方法是设计变长指令集,对于复杂功能的指令,如VLIW、SIMD等类型的指令,可分配较长的指令长度,对于简单功能的指令可以分配较短的指令长度。这时除了处理器的处理单元,译码单元需要重新设计,处理器的取指策略也需要重新考量,在不增加指令存储器深度以及不降低处理器流水线的吞吐量的条件下,保证取指的正确。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种针对采用变长指令集的流水线结构处理器的取指方法,该方法可以解决变长指令集的取指问题,同时保证指令存储器深度不增加以及处理器流水线的吞吐量不降低。
本发明的目的可以通过以下技术方案来实现:
一种针对采用变长指令集的流水线结构处理器的取指方法,包括:
流水线的取指级,包含指令存储器、取指地址寄存器、取指判决单元;
流水线的译码级,包含指令译码模块、译码地址寄存器;
指令数据循环缓冲区,该指令数据循环缓冲区为流水线的取指级和流水线的译码级之间的流水线寄存器;
其中,所述的指令存储器的宽度为单条指令最大长度,且不同长度的指令在指令存储器中连续存储,所述的指令译码模块对指令数据进行译码,并通过对取指地址寄存器和译码地址寄存器进行逻辑判断,决定下一个周期是否取指,将结果反馈至流水线的取指级,所述的指令数据循环缓冲区用于缓存取入的指令数据,并通过取指地址寄存器和译码地址寄存器控制指令数据的更新。
所述的指令存储器满足以下条件:
a、指令的长度满足表达式:2x字,x>0,字长任意,其中最长的指令长度为M个字,M=2m,最短的指令长度为N个字,N=2n,每条指令的长度介于N,M之间,不同长度的单条指令所需要执行周期数相同;
b、不同长度的指令在指令存储器中连续存储;
c、取指地址寄存器保存下一次进行取指的地址,每次取指后其需自增M。
所述的指令译码模块满足以下条件:
a、译码地址寄存器保存下一个需要进行译码的指令的起始地址,每次译码结束后其需自增该指令的真实长度,
b、指令译码模块从指令数据循环缓冲区中取出指令数据进行译码后送入执行模块,流水线的译码级根据自增后的译码地址寄存器以及流水线的取指级的取指地址寄存器的比较结果,决定下一个周期是否取指,并将决定结果反馈至取指级;
c、取指判决单元接收到译码级反馈的比较结果,决定是否向指令内存请求数据,以及是否向指令数据循环缓冲区中写入新的数据。
所述的指令数据循环缓冲区满足以下条件:
a、指令数据循环缓冲区的宽度为设置为2M,取指地址寄存器决定每次取入的指令数据所覆盖的指令数据循环缓冲区中的位置,译码地址寄存器决定每次需要译码的指令数据在指令数据循环缓冲区中的位置,取指地址寄存器和译码地址寄存器之间的相对位置决定指令数据循环缓冲区中有效的数据量;
b、译码级取指判断逻辑为:当memPC==PC时,指令缓冲区为空或者均为无效数据,则下个周期可以取指;当memPC!=PC,且memPC–PC∈[2*M,M+N)时,则指令缓冲区中没有足够的空间来缓存M个字,故无法取指;当memPC!=PC,且memPC–PC∈[M+N,0)时,下一个周期可以进行取指;其中memPC为取指地址寄存器,PC为译码地址寄存器,M为最长的指令长度,N为最短的指令长度。
附图说明
图1为本发明整体的取指结构图;
图2为从指令存储中取指并存入指令数据循环缓冲区的流程图;
图3为从循环缓冲区中取数据进行译码,并判决下一个周期是否取指的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1~3所示,一种针对采用变长指令集的流水线结构处理器的取指方法,包括流水线的取指级、译码级以及指令数据循环缓冲区(InstructionBuffer,IB)。其中,取指级包含:指令存储器(InstructionMemory,IM)、取指地址寄存器(memPC)、取指判决单元(FetchDecision,FD);流水线译码级包含:指令译码模块(InstructionDecoder,ID)、译码地址寄存器(PC);指令数据循环缓冲区为取指级和译码级之间的流水线寄存器的一部分。
其中,指令存储器的宽度为单条指令最大长度,且不同长度的指令在指令存储器中连续存储。以指令长度为4字节和8字节两种为例,指令存储器的字长为8字节。即每次取64位的指令数据。而由于,每次“消耗”的指令内容,可能为4字节或8字节两种情况。故需要一个指令缓冲IB来进行缓存指令数据,并需要逻辑控制本周期是否要取指,否则缓冲IB就会溢出。IB设置为16字节的缓冲区。故可知需要两个PC来联合控制。一个是memPC它准确地描述下一个需要取进IB的8字节为指令数据的地址。一个是PC,它用来准确地指定下一个需要执行的指令的地址。可见通过memPC和PC相对位置的比较,可以推算出当前IB中的可用的指令数据剩余数量,以决定当前IB中是否有足够空间存放下一条8字节的指令数据。这种比较判断明显是在译码阶段做出,因为需要用来参与判断的PC应该是译码后才能知道自增的步长为4还是8。
memPC和PC的判断要分成两种情况:
1、若memPC==PC,这时应该是刚开机,或者刚跳转,或刚被重置后的情况,这时需要进行取指。
2、若memPC!=PC且memPC–PC==16字节,这时IB中的数据都是取进来且未被使用过的数据。这时取指需要暂停,否则IB会溢出。
3、其他的情况都是需要进行取指的。这里有一个特殊的情况,就是memPC和PC相差12字节,这时只有4字节的缓冲空可用,但是由于指令长度至少位4字节,接下来至少会有4字节的数据被消费,故还是可以取指的。
memPC和PC的比较结果从译码阶段反馈至取指阶段。
本发明所主张的权利范围并不局限于此。本发明还有其他多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员可根据本发明作出各种相应的改变和变形,但这些改变和变形都应属于本发明所附的权利要求的保护范围。

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∈[2*M,M+N)时,则指令缓冲区中没有足够的空间来缓存M个字,故无法取指;当memPC!=PC,且memPC–PC∈[M+N,0)时,下一个周期可以进行取指;其中memPC为取指地址寄存器中所存储的指令地址,PC为译码地址寄存器中所存储的指令地址,M为最长的指令长度,N为最短的指令长度。
CN201310277005.4A 2013-07-03 2013-07-03 针对采用变长指令集的流水线结构处理器的取指方法 Active CN103336681B (zh)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN103336681A 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
CN201310277005.4A Active CN103336681B (zh) 2013-07-03 2013-07-03 针对采用变长指令集的流水线结构处理器的取指方法

Country Status (1)

Country Link
CN (1) CN103336681B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593169B (zh) * 2013-11-29 2017-09-05 深圳中微电科技有限公司 一种多线程处理器中的指令输出装置、方法及其处理器
CN108595210B (zh) 2018-04-09 2021-12-10 杭州中天微系统有限公司 实现零开销循环的处理器
CN113138800B (zh) * 2021-03-25 2023-05-09 沐曦集成电路(上海)有限公司 定长指令集的编解码方法及计算系统
CN113254083B (zh) * 2021-06-28 2021-11-02 北京智芯微电子科技有限公司 指令处理方法、指令处理系统及处理器、芯片
CN114625419B (zh) * 2022-05-16 2022-08-26 西安芯瞳半导体技术有限公司 一种可变长指令的缓存结构、方法及介质

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
CN103336681A (zh) 2013-10-02

Similar Documents

Publication Publication Date Title
CN112445753B (zh) 从多维阵列预取多维元素块的硬件装置和方法
US10430188B2 (en) Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction
US9639369B2 (en) Split register file for operands of different sizes
CN103336681B (zh) 针对采用变长指令集的流水线结构处理器的取指方法
KR100956970B1 (ko) 프로세서에서의 마스킹된 저장 동작들을 위한 시스템 및방법
KR101597774B1 (ko) 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들
JP6718454B2 (ja) 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと
US20130117543A1 (en) Low overhead operation latency aware scheduler
US10628155B2 (en) Complex multiply instruction
CN109997109B (zh) 具有提取提前滞后的流引擎
JP2012119009A5 (ja) 選択演算を実行するプロセッサ
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
CN108205447B (zh) 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎
US10303399B2 (en) Data processing apparatus and method for controlling vector memory accesses
US11451241B2 (en) Setting values of portions of registers based on bit values
KR102458467B1 (ko) 벡터 생성 명령
US20110004743A1 (en) Pipe scheduling for pipelines based on destination register number
US8645791B2 (en) Data cache controller, devices having the same, and method of operating the same
US20140365751A1 (en) Operand generation in at least one processing pipeline
CN101615114B (zh) 完成两次乘法两次加法两次位移的微处理器实现方法
KR101084728B1 (ko) 동적 암시 어드레싱 모드를 지원하는 파이프라인 방식의 프로세서
JP4002288B2 (ja) 情報処理装置
JP2009176177A (ja) プログラマブルコントローラ
JP2008181179A (ja) プロセッサおよび演算装置
JP2009181422A (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
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Wu Jun

Inventor after: Luo Yuan

Inventor after: Zhang Zhifeng

Inventor after: Su Lifeng

Inventor after: Chen Wei

Inventor after: Shen Jiaqi

Inventor before: Wu Jun

Inventor before: Luo Yuan

Inventor before: Su Lifeng

Inventor before: Chen Wei

Inventor before: Shen Jiaqi

Inventor before: Li Sichang

Inventor before: Zhou Wenzong

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
GR01 Patent grant