CN100451951C - Risc cpu中的5+3级流水线设计方法 - Google Patents
Risc cpu中的5+3级流水线设计方法 Download PDFInfo
- Publication number
- CN100451951C CN100451951C CNB2006100334690A CN200610033469A CN100451951C CN 100451951 C CN100451951 C CN 100451951C CN B2006100334690 A CNB2006100334690 A CN B2006100334690A CN 200610033469 A CN200610033469 A CN 200610033469A CN 100451951 C CN100451951 C CN 100451951C
- Authority
- CN
- China
- Prior art keywords
- instruction
- level
- streamline
- stage
- processing
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明公开了一种RISC CPU中的5+3级流水线设计结构及方法,改变了传统CPU采用的五级流水线结构,提出一种CPU中的5+3级流水线设计结构及方法,实现单指令周期内完成不同类型的多条指令运算,以及在实际设计中采用相应的控制机制,从而完成对一个具有较高性能的CPU核的流水线控制的设计。本发明根据指令的不同,经历不同的流水线级数,若指令为只需五级可完成的一般指令时,执行传统的五级流水线,若指令为特殊指令时,在执行了传统的5级流水线后自动进入后续三级流水线,即5+3级流水线。
Description
技术领域
本发明涉及一种CPU流水线的设计方法,特别是嵌入式微处理器中流水线的设计方法。
背景技术
随着集成电路设计和工艺技术的发展,嵌入式系统(SOC)已经在PDA、机顶盒、手机等信息终端中被广泛应用。他不仅减小了电路尺寸,而且具有成本低廉,可靠性高,功耗低等优点。可以说嵌入式系统是未来集成电路发展的方向。而作为嵌入式系统核心的微处理器,是SOC不可或缺的“心脏”,微处理器的性能直接影响整个SOC的性能。现有的CPU体系结构一般采用以下形式:超长指令字节结构VLIW(Very Long Instruction Word Architecture)、复杂指令集结构CISC(Complex Instruction Set Computer Architecture)和精简指令集结构RISC(Reduced Instruction Set Computer Architecture)。为了提高CPU的效率和指令执行的并行性,现代微处理器已经广泛采用流水线设计,所以CPU流水线的设计,将成为决定其性能的关键。
流水线技术一开始是在巨型机,大型机上应用,后来把这项技术运用于微处理器,这项技术的根本目的就是合理利用现有硬件,提高CPU处理能力.由于使用多种技术及其硬器件的发展提高了微处理器的运算速度,同时也拓展了微型机的应用范围。随着硬器件的发展,以后还会出现这种“自上向下”的发展,提高计算机的综合性能。
一个流水线式计算机处理器有多个级,在处理阶段每个指令必须穿过这些级。一个示例性五级流水线式处理器含有如下各级:取指、解码、存储器访问、执行和写回。在取指令级,一个指令从从寄存器或缓冲器取出,该指令在解码级被解码,以确定要进行的操作类型以及需要什么操作数来完成该操作,在存储器访问级提取所需要的操作数,并在执行阶段执行该指令。然后,执行指令的结果在WB级写回存储器。
值得注意的是,指令在流水线上的处理并不是简单地如附图1所示的一个流畅序列,而是会出现很多因素破坏指令流水性的平衡性,这些因素有:
(1)由于流水线上的2个执行单元同时使用同一硬件资源而产生冒险;
(2)部分指令在1个周期内不能完成相应流水阶段的操作,如乘法指令在EX级在运算单元需要多个周期;
(3)指令运算的结果在EX级得到,在WB级才写回寄存器堆,而后续指令在结果写回前需要使用结果;
(4)分支指令、跳转指令和异常返回等指令导致流水线上程序流的改变;
(5)在流水线的执行过程中随时都可能有异常发生。
如果出现上述的某种情况,则正常的CPU指令流水线将被中断,如果中断需用硬件来处理,则称为互锁(interlock),如果中断需用软件处理,则称为异常(exception)。在每一时钟周期,所有在流水线的指令的异常和互锁的产生条件被检测,当条件满足,就在流水线的相应级产生异常和互锁。
异常是指令运行过程中发生的不可预测的中断,需要预先定义的异常处理程序来解决。他可能发生在流水线的RF,EX和DC级,RF级的异常优先级最低,后面依次为EX级和DC级。异常发生后,流水线中导致异常的指令以及后续指令都要被中止,异常处理程序调入流水线中执行。异常处理单元收集各个异常信号并对其进行单周期监测,确保异常的及时响应,若多个异常同时发生,需要判断异常的优先级,并处理处于最高优先级的异常,此时异常处理单元通过互锁单元使流水线暂停2个周期,将异常信息存入协处理寄存器,保存异常指令的虚拟地址,并由流水线冲刷单元终止流水线上的无效指令。流水线调入异常处理向量,重新开始执行指令。如图3所示为异常处理的流程,硬件处理部分由异常处理单元控制完成,软件部分为异常服务程序的执行过程。
对于传统的CPU五级流水线结构,若出现特殊指令时,在流水线的最后一级,所有的流水线必须停止下来等待特殊指令的执行,其他指令的响应就会暂停,只有处理完特殊指令后才能接着进行流水线的操作,这样就影响了CPU的处理速度,降低了效率。针对这种现象,有些CPU将流水线的级数设计为八级,但是这样的处理改变了CPU的架构,增加了硬件,虽然在对特殊指令的处理时,其他的一般指令也能同时进行,但大部分的指令都属于一般指令,也就是五级就可以完成的指令,将CPU将流水线的级数设计为八级既浪费了CPU的处理时间,又增加了硬件,提高了成本。
发明内容
本发明针对上述问题,公开了一种RISC CPU中的5+3级流水线设计方法,该方法采用了超前滑行流水线技术,实现单指令周期内完成不同类型的多条指令运算。
RISC CPU中的5+3级流水线设计方法,该方法包含两种流水线级数,一种是传统的五级流水线,一种是在传统的五级流水线后增加三级,流水线级数的选择是根据指令的不同来进行,具体的方法如下:
(1)流水线的第一级是取指令级,即读取指令;
(2)流水线的第二级是指令译码级,在第一级取出指令后,在流水线的第二级进行译码处理,译码得到所取指令的类型,根据指令的类型选择所述五级流水线或所述五级加三级流水线;
(3)流水线的第三级是执行级,执行第二级译好的指令;
(4)流水线第四级是操作级,将第三级执行完的数据读取到高速缓存;
(5)流水线第五级是写回级,将第四级高速缓存中的数据写回存储器;
(6)流水线第六级是CP1,协处理寄存器及存储器管理指令操作;
(7)流水线第七级是CP2,协处理寄存器及存储器管理指令操作,同时也是异常处理级,异常发生后,在操作级判断异常优先级,停止两个时钟周期,到第七级处理,这些都是软件的工作,硬件只是在第七级提供处理接口;
(8)流水线第八级是CP3,协处理寄存器及存储器管理指令操作;同时也是异常返回级。
上述的RISC CPU中的5+3级流水线设计方法,该方法能够根据指令的类型选择不同的流水线级数,当第二级指令译码得出的指令类型为普通指令时,只需第一级至第五级流水线即可执行完毕,写回数据,当译码得出的指令类型为协处理寄存器及存储器管理指令或异常处理指令时,在经第一级至第五级流水线执行后自动进入第六级至第八级流水线执行,这样既不影响CPU的速度且不增加芯片面积。
流水线的第一级是取指令级,即指令的读取。在两个相位里执行相应的操作,在第一个相位,产生取指令的虚拟地址,并在下降沿锁入寄存器,第二个相位,也要完成两个操作,即读取指令,并由虚拟地址计算物理地址。
本发明的有益效果在于:在传统的流水线基础上,即在不改变传统的CPU架构的情况下,采用一种特殊的流水线结构,即5+3级流水线结构,既不改变传统的流水线架构,又节省了芯片面积,而且对于复杂指令的处理,不会影响到CPU的处理速度。利用这种体系结构的CPU,大大提高了处理速度和工作效率,具有很大的灵活性,可以适应不同应用背景的需要。
附图说明
现将结合参考附图更详细地描述本发明,这些附图仅是作为举例给出,其中:
图1是指令在五级流水线中的执行顺序示意图;
图2是利用本发明的5+3级流水线结构处理指令的执行顺序示意图;
图3是一般情况下的异常处理机制示意图;
具体实施方式
下面将参照本发明的一个具体实施例详细描述本发明。
附图1所示为常用指令的五级流水线的执行顺序示意图,如图所示把cpu的指令分成五级来完成,每一级执行相应的操作,流水线的每一级是一个时钟周期,即两个相位。
由于采用流水线的结构,流水线的每一级是一个时钟周期,则在每个时钟周期,都有五条指令同时执行,只是每条指令执行的是不同的部分,设在某一时钟周期,当第n条指令执行第五步操作时,第n+1条指令执行的是第四步操作,第n+2条指令执行的是第三步操作,第n+3条指令执行的是第二步操作,第n+4条指令执行的是第一步操作;相应,在下一个时钟周期,第n条指令已经执行完,第n+1条指令则进入第五步操作,而第n+2条指令进入第四步操作,第n+3条指令进入第三步操作,第n+4条指令进入第二步操作,第n+5条指令于是开始流水线的第一级,即执行第一步操作。当然,对于本发明所提出的方法,流水线的级数为5+3级,即若第n条指令是属于特殊指令中的一条,则在这个时钟周期里,若第n+1条指令是特殊指令时,也会依次在下一个时钟周期进入第六级,但若第n+1条指令是一般指令时,则在第五级流水线就执行完毕,写回数据了。依此类推,指令像流水一样经过一级一级的操作,在每个时刻,流水线上每个操作块都在运行,没有闲置。按照本发明提到的方法,特殊指令在执行其他的指令所没有的流水线时,其他的指令也不需要等待,从而提高了流水线的效率,提高了CPU的性能。
具体的每一级流水线所执行的操作,以及流水线级数的选择的方法,会在后面的描述中阐明。
流水线的第一级是取指令级IC(Instruction Cache Fetch,指令的读取)。在两个相位里执行相应的操作,在第一个相位,产生取指令的虚拟地址,并在下降沿锁入寄存器;第二个相位,也要完成两个操作,即读取指令,并由虚拟地址计算物理地址。
当取出指令后,第二个时钟周期到来,则进入流水线的第二级指令译码级RF(Register File Fetch,寄存器文件读取数据)。在此时钟周期的第一个相位,将第一个周期第二个相位计算出的物理地址的高位与指令缓存的标志位比较,如果比较的结果是相同,则将第一级取出的指令送到指令寄存器;如果比较的结果是不相同,则会产生异常。第一个相位结束后,在第二个相位,从寄存器文件中读取数据,读出的数据用于下一级即EX(Execution,执行)级执行,同时指令译码器输出相应的控制信号。
经过前两个周期,指令取出且译码产生控制信号,并且相应的数据也被取出,接着就进入流水线的第三级执行级EX。第三个时钟周期同样分两个相位,在第一个相位,判断是否是跳转指令,若是则按照跳转指令的地址计算方法计算地址,若不是,则按正常的地址计算方法计算地址;然后在第二个相位按照指令执行操作,执行要用到的数据的虚拟地址的计算也要同时完成。
在第四个时钟周期即流水线的第四级操作级DC(Data cache fetch,读取数据到高速缓存),将执行完的数据保存,同时还要将第三个时钟周期的第二个相位计算出的虚拟地址也要在联合地址转换器中转换为物理地址。
第四个时钟周期的操作完成后,执行的结果保留到高速缓存,接着进入第五个时钟周期写回级WB(Write Back,数据写回)。在第一个相位,将数据写到寄存器文件保留下来;在第二个相位,则会存储数据到数据高速缓存。
至此完成流水线基本的五级操作,在CPU的所有指令中,一部分的指令可以在前面五级流水线中描述的步骤完成,另一部分的指令则在此基础上需要另外的步骤,以存储器管理的指令为例,需要在五级流水线后加入另外的时钟周期才能完成从协处理器向存储器的写入,如果没有加入另外的三级,则流水线会停止等待写入的完成,降低了效率;而如果在一个时钟周期内完成,则接口的连线要增加几倍,使硬件增加,面积也增大。采用本发明的结构后,不仅节省了硬件,在特殊指令进入下面的三级时,其他一般指令也无需等待,提高了效率。如附图2所示,第六个时钟周期里,即第六级流水线是CP1(coprocessorprocess,协处理器处理),协处理寄存器及存储器管理指令操作,然后是第七个流水线级CP2,协处理寄存器及存储器管理指令操作,最后一级流水线是级CP3,协处理寄存器及存储器管理指令操作。
同时,在第七级还是异常处理级,发生异常时,在DC级判断优先级后,停止两个时钟周期再调入异常处理程序执行,即在第七级进行异常处理,如附图3所示,在第八级异常返回。
Claims (3)
1、RISC CPU中的5+3级流水线设计方法,其特征在于:该方法包含两种流水线级数,一种是传统的五级流水线,一种是在传统的五级流水线后增加三级,流水线级数的选择是根据指令的不同来进行,具体的方法如下:
(1)流水线的第一级是取指令级,即读取指令;
(2)流水线的第二级是指令译码级,在第一级取出指令后,在流水线的第二级进行译码处理,译码得到所取指令的类型,根据指令的类型选择所述五级流水线或所述五级加三级流水线;
(3)流水线的第三级是执行级,执行第二级译好的指令;
(4)流水线第四级是操作级,将第三级执行完的数据读取到高速缓存;
(5)流水线第五级是写回级,将第四级高速缓存中的数据写回存储器;
(6)流水线第六级是CP1,协处理寄存器及存储器管理指令操作;
(7)流水线第七级是CP2,协处理寄存器及存储器管理指令操作,同时也是异常处理级,异常发生后,在操作级判断异常优先级,停止两个时钟周期,到第七级处理,这些都是软件的工作,硬件只是在第七级提供处理接口;
(8)流水线第八级是CP3,协处理寄存器及存储器管理指令操作;同时也是异常返回级。
2、根据权利要求1所述的RISC CPU中的5+3级流水线设计方法,其特征在于:该方法能够根据指令的类型选择不同的流水线级数,当第二级指令译码得出的指令类型为普通指令时,只需第一级至第五级流水线即可执行完毕,写回数据,当译码得出的指令类型为协处理寄存器及存储器管理指令或异常处理指令时,在经第一级至第五级流水线执行后自动进入第六级至第八级流水线执行。
3、根据权利要求1所述的RISC CPU中的5+3级流水线设计方法,其特征在于:所述的流水线第一级是取指令级在两个相位里执行相应的操作,在第一个相位,产生取指令的虚拟地址,并在下降沿锁入寄存器,第二个相位也要完成两个操作,即读取指令,并由虚拟地址计算物理地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100334690A CN100451951C (zh) | 2006-01-26 | 2006-01-26 | Risc cpu中的5+3级流水线设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100334690A CN100451951C (zh) | 2006-01-26 | 2006-01-26 | Risc cpu中的5+3级流水线设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101008891A CN101008891A (zh) | 2007-08-01 |
CN100451951C true CN100451951C (zh) | 2009-01-14 |
Family
ID=38697335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100334690A Expired - Fee Related CN100451951C (zh) | 2006-01-26 | 2006-01-26 | Risc cpu中的5+3级流水线设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100451951C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140809A (zh) | 2007-09-07 | 2008-03-12 | 炬力集成电路设计有限公司 | 支持流水线纠错码和可配置操作的flash控制器及其控制方法 |
CN101968734B (zh) * | 2010-10-12 | 2012-07-18 | 中国电子科技集团公司第三十八研究所 | 应用于数字信号处理器的指令缓存器 |
CN104090740A (zh) * | 2014-05-27 | 2014-10-08 | 安徽师范大学 | 微控制器指令集的执行方法 |
CN105892988B (zh) * | 2016-04-26 | 2019-03-01 | 广州致远电子股份有限公司 | 一种基于fpga的运算电路、示波器和测量仪器 |
CN109683962B (zh) * | 2017-10-18 | 2023-08-29 | 深圳市中兴微电子技术有限公司 | 一种指令集模拟器流水线建模的方法及装置 |
CN110647358B (zh) * | 2018-06-27 | 2021-11-23 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
CN109918130A (zh) * | 2019-01-24 | 2019-06-21 | 中山大学 | 一种具有快速数据旁路结构的四级流水线risc-v处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6012138A (en) * | 1997-12-19 | 2000-01-04 | Lsi Logic Corporation | Dynamically variable length CPU pipeline for efficiently executing two instruction sets |
CN1355900A (zh) * | 1999-05-13 | 2002-06-26 | Arc国际美国控股公司 | 用于处理器流水线分段法及再装配的方法以及装置 |
US20030093651A1 (en) * | 2001-10-31 | 2003-05-15 | Shinichiro Kobayashi | Instruction sets and compilers |
CN1607499A (zh) * | 1996-03-29 | 2005-04-20 | 松下电器产业株式会社 | 可变流水线级数的数据处理装置 |
-
2006
- 2006-01-26 CN CNB2006100334690A patent/CN100451951C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1607499A (zh) * | 1996-03-29 | 2005-04-20 | 松下电器产业株式会社 | 可变流水线级数的数据处理装置 |
US6012138A (en) * | 1997-12-19 | 2000-01-04 | Lsi Logic Corporation | Dynamically variable length CPU pipeline for efficiently executing two instruction sets |
CN1355900A (zh) * | 1999-05-13 | 2002-06-26 | Arc国际美国控股公司 | 用于处理器流水线分段法及再装配的方法以及装置 |
US20030093651A1 (en) * | 2001-10-31 | 2003-05-15 | Shinichiro Kobayashi | Instruction sets and compilers |
Also Published As
Publication number | Publication date |
---|---|
CN101008891A (zh) | 2007-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150146B (zh) | 基于可扩展处理器架构的专用指令集处理器及其实现方法 | |
US20070022277A1 (en) | Method and system for an enhanced microprocessor | |
CN101373427B (zh) | 程序执行控制装置 | |
TWI620121B (zh) | 具有原生切換機制之非對稱多核心處理器 | |
CN100451951C (zh) | Risc cpu中的5+3级流水线设计方法 | |
CN109918130A (zh) | 一种具有快速数据旁路结构的四级流水线risc-v处理器 | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
US20140136822A1 (en) | Execution of instruction loops using an instruction buffer | |
CN103218203B (zh) | 具有条件指令的微处理器及其处理方法 | |
MX2007010048A (es) | Sistema y metodo para corregir un mal pronostico de ramificacion. | |
CN104881270A (zh) | 具有条件指令的微处理器及其处理方法 | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
US20160283247A1 (en) | Apparatuses and methods to selectively execute a commit instruction | |
JPH10105402A (ja) | パイプライン方式のプロセッサ | |
US20140129805A1 (en) | Execution pipeline power reduction | |
CN112241288A (zh) | 在硬件中检测条件分支的动态控制流重汇聚点 | |
JP3611304B2 (ja) | 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法 | |
CN112182999B (zh) | 一种基于mips32指令系统的三级流水线cpu设计方法 | |
US5778208A (en) | Flexible pipeline for interlock removal | |
US20020116599A1 (en) | Data processing apparatus | |
US6851044B1 (en) | System and method for eliminating write backs with buffer for exception processing | |
JP3182591B2 (ja) | マイクロプロセッサ | |
CN108845832B (zh) | 一种提高处理器主频的流水线细分装置 | |
CN102063290B (zh) | 一种系统化risc cpu流水线控制方法 | |
US8966230B2 (en) | Dynamic selection of execution stage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090114 Termination date: 20150126 |
|
EXPY | Termination of patent right or utility model |