CN1560733A - 超长指令字微处理器中的指令控制流水线方法 - Google Patents
超长指令字微处理器中的指令控制流水线方法 Download PDFInfo
- Publication number
- CN1560733A CN1560733A CNA2004100229642A CN200410022964A CN1560733A CN 1560733 A CN1560733 A CN 1560733A CN A2004100229642 A CNA2004100229642 A CN A2004100229642A CN 200410022964 A CN200410022964 A CN 200410022964A CN 1560733 A CN1560733 A CN 1560733A
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- execution
- station
- streamline
- 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.)
- Granted
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种超长指令字微处理器中的指令控制流水线方法,要解决的技术问题是克服执行流水线必须携带IP地址的问题,实现数据通路共享,提高硬件资源利用率,减少设计开销。技术方案是在通用VLIW处理器内部为指令控制系统设计一条指令控制流水线,专门携带表征执行流水线执行状态的共用信息,指令控制流水线比执行流水线少一站,共s站,与执行流水线中的前s-1站一一对应,并相互锁步,在指令控制流水线和执行流水线之间设计了数据通路将IP地址从指令控制流水线传递给执行流水线。采用本发明能够有效实现数据通路共享,还能够携带指令控制系统需要的关于执行流水线的信息,减少信号接口数量。
Description
技术领域:本发明涉及微处理器设计中指令控制系统的设计及实现方法,尤其是超长指令字VLIW(Very Long Instruction Word)微处理器设计中指令控制系统的设计及实现方法。
背景技术:在微处理器中,指令控制系统负责对指令的执行行为进行控制,因此,指令控制系统需要获取微处理器中所有执行流水线的状态,对执行流水线进行停顿(stall)或者刷新(flush)控制。当寄存器相关性存在时停顿执行流水线,当中断事件或者分支行为发生时刷新并控制指令流转向。
研究表明,通过超标量技术能够开发的指令级并行性(ILP)一般为3~5。目前,超标量微处理器的性能已经趋于极限,而VLIW技术能够有效支持更高ILP,超长指令字微处理器表现出良好的性能优势和发展前景,成为当今体系结构研究和微处理器设计的热点。VLIW微体系结构,即微处理器体系结构,采用软、硬件协作的方式,共同开发指令级并行性。通常,在VLIW微体系结构中,编译器负责从指令流中将多条没有写后读(RAW)以及写后写(WAW)相关性的指令打包,形成微处理器硬件可以并行执行的指令组;而微处理器硬件则负责提供大量的执行部件和寄存器,并采用相对简洁的硬件控制机制,实现高指令级并行性的高效执行。
一般地,在通用VLIW微处理器设计中,微处理器内部共有p条执行流水线,每条执行流水线分为s站,每个时钟周期最多能够同时发射执行i条指令(指令发射窗口宽度为i)。VLIW处理器的执行流水线通常采用相互锁步的方式执行,即:当任意一条执行流水线的任意一站停顿时,所有执行流水线的相应站都将同步停顿。p条执行流水线共用处理器前端逻辑。处理器前端负责从指令Cache取指令,同时进行分支预测,并根据软件编译时产生的指令组提示信息将指令组中的指令分派到不同的执行流水线中进行执行。
精确中断是现代微处理器的基本功能,当前的通用VLIW微处理器都支持精确中断机制。精确中断机制要求当中断事件发生时,处理器能够精确记录指令的IP地址,以便从中断处理程序返回时,能够从中断指令处继续执行。在通用VLIW处理器中,指令控制系统将在指令提交前检查各条流水线的执行结果,确定是否存在中断事件。如果中断事件存在,指令控制系统必须将中断指令的地址保存在中断IP地址寄存器中。除了精确中断机制的需求之外,执行流水线,如:分支流水线,也可能需要使用指令的IP地址。在传统的VLIW处理器实现中,由于p条流水线能够并行执行不同的最多i条指令,为了能够在任意一条流水线发生中断事件时准确地获取指令的IP地址,每条流水线都必须携带当前指令的IP地址。在传统实现中,设指令的IP地址为d位,为了实现精确中断机制,p条流水线总共需要携带p*d位地址信息,在具体实现时需要p*d*s位站间寄存器以及相应的站与站之间的数据通路,硬件开销较大。
对于通用的、能够支持多分支指令并行执行的VLIW处理器,第一条分支指令的转移地址为有效的转移地址。处理器前端的分支预测机制为连续的最多b条分支指令产生一个分支预测转移地址,b条分支流水线需要根据这同一个预测地址修改处理器前端的分支预测结构。在这种实现中,设分支预测地址为d位,为了实现多分支并行执行,b条分支流水线共需携带b*d位分支预测地址信息,硬件开销较大。
同时,在指令执行过程中,还存在其它可以共用的如TLB的属性位这样的信息。这些信息在通用VLIW处理器中由每条流水线独立携带,存在大量的重复信息,容易造成硬件数据通路的浪费。
因此,如何有效利用有限的硬件资源,实现精确中断机制和数据通路资源共享,是指令控制系统设计必须解决的问题。但现有的公开技术文档从未涉及指令控制系统设计方面的内容。
发明内容:本发明要解决的技术问题是克服每条执行流水线必须携带IP地址的问题,实现数据通路共享,提高硬件资源利用率,降低硬件复杂度,减少设计开销。
本发明的技术方案是在通用VLIW处理器内部为指令控制系统专门设计一条指令控制流水线,用于携带共用信息。
目前国内外尚无采用这种方法的报道。
对于通用VLIW微处理器,本发明采用了名词指令组、指令包、执行组以及执行组IP地址,它们的定义为:
(a)指令组:由编译器产生的、由多条不存在RAW和WAW相关性的指令构成的集合。指令组内的所有指令在硬件允许的条件下可以全部并行执行。
(b)指令包以及指令包IP地址:指令包由a条指令和一个指令模板构成。指令模板由软件编译器产生,用于说明当前指令包内的a条指令分别所需要的执行部件。一个指令包中能够包含多个指令组,指令包内属于不同指令组的指令由隐式的停顿位分割。停顿位的位置由指令模板的不同编码体现。停顿位通知处理器指令分派模块,被停顿位分割的指令属于不同发射组,不能够同时发射。指令包IP地址为e位(e=d-log2a,其中,d为指令的IP地址位数),记为ip。在通用VLIW处理器系统中,指令都是以指令包的形式进行存储和操作的,因此,在通用VLIW处理器中,IP地址指的就是指令包IP地址,指令的具体地址由二元组(ip,pos)确定,其中,pos为指令在指令包中的相对位置。在本发明中,指令的IP地址与指令的指令包IP地址含义相同。
(c)执行组:由处理器硬件的指令分派模块在同一个周期发射到不同流水线的指令的集合。VLIW处理器前端的指令分派模块保证同一个执行组中的指令一定属于同一个指令组,但可能包含多个指令包。设在通用VLIW处理器中,每个周期最多发射f(f=i/a)个指令包。
(d)执行组IP地址:指令控制流水线携带同时发射的最多f个连续指令包中包地址最小的指令包IP地址,称为执行组IP地址,记为IPe。VLIW处理器的指令分派机制保证同一个执行组中的指令一定是地址连续的指令,对于相邻两个IP地址不连续的指令包,如:分支指令前后的指令包,指令分派机制保证不在同一个周期发射。
在本发明中,指令控制流水线的结构为:
指令控制流水线分为s-1站,s为通用VLIW处理器执行流水线的站数。指令控制流水线没有提交写回站WRB,因此与执行流水线相比少一站。指令控制流水线的站与执行流水线的前s-1站一一对应,并相互锁步,即:当执行流水线的某一站停顿时,指令控制流水线的相应站也将同步停顿。同时,根据流水线特性的要求,当顺序上后面的站停顿时,前面的所有站都将停顿。
在本发明中,指令控制流水线携带的主要信息有:
(a)执行组IP地址ipe:在本发明中,执行流水线不再携带当前指令的IP地址,对于同一个执行组,由指令控制流水线统一携带执行组IP地址ipe。基于通用VLIW处理器的锁步执行特性,属于同一个执行组的所有指令同时位于不同流水线的相同站中,指令控制流水线的每一站都携带有位于当前站的执行组IP地址。
(b)指令发射序号seq:在本发明中,指令分派模块在将指令分派到执行流水线的同时,将每条流水线q位的执行组序号分派到指令控制流水线。指令发射序号的大小顺序与程序的执行语义顺序一致。
(c)分支预测地址:在本发明中,每条分支流水线都不再独立携带分支预测地址,而是由指令控制流水线统一携带,并在分支流水线对分支预测地址进行操作的站将这个预测地址传递给b条分支流水线,以供分支流水线进行分支预测验证。
(d)其它信息:在本发明中,由于执行流水线、指令控制流水线的对应站完全互锁,因此,指令控制流水线也可用于携带部分表征执行流水线执行状态的信息,以及其它共用信息。
在本发明中,指令控制流水线携带信息的具体实现方式为:
(a)执行组IP地址:在执行流水线的异常检测站(通常是提交写回的前一站,与指令控制流水线的最后一站相对应),当某一条执行流水线的指令发生中断事件时,指令控制系统定位中断指令,并报告中断指令的准确IP地址。在通用VLIW处理器中,处于同一个执行组的不同指令的IP地址(指令包地址)可能有f种情况:ip,ip+1,…,ip+(f-1),则执行组IP地址ipe=min(ip,ip+1,…,ip+(f-1)),f为每个时钟周期最多并行执行的指令包数目。从理论上说指令控制流水线中需要携带f*e位地址信息,但在实际实现中通常需要为每一条执行流水线都设计相应的地址信息数据通路,因此,需要p*e位地址信息,其中,e为指令包IP地址宽度,p为执行流水线的数目。为了进一步减少IP地址的宽度,本发明对同一个发射组中的f个IP地址的变化位数进行了限制。具体方法如下:在通用VLIW处理器前端的指令分派模块对发射的指令进行限制,只允许连续指令包IP地址最低k位(k<=e)存在变化的连续指令包的指令同时发射,成为同一个执行组,不允许在同一个执行组中的指令的IP地址存在k+1位的地址突变。当相邻指令包IP地址出现从k位到k+1位地址变化时,指令分派模块强行将地址突变的后一个指令包放在下一个时钟周期发射(分离发射)。采用这种方法,为了表示同一个执行组中的f个不同但是连续的IP地址,共需要e+(f-1)*k位地址信息。k值的选择需要由设计者根据微处理器的具体设计和实现进行折中考虑。研究发现,k的值越小指令控制流水线需要携带的地址信息越少,但同时会导致越多的能够并行执行的指令被分离发射(每2k*a条指令出现一次强制分离发射,a为每个指令包中的指令数目),从而会对处理器的性能有一定的负面影响。在实际实现中,由于f个连续指令包中的指令可能同时在p条执行流水线中的任意f条流水线执行,因此,为了在需要时精确定位任意一条指令的IP地址和在指令包中的相对位置,还需要每条指令的发射序号信息。
(b)指令发射序号:在本发明中,指令分派模块在将指令分派到执行流水线的同时,将每条流水线q位(q=log2i=log2(f*a),i为通用VLIW能够最多并行执行的指令数目,也就是指令发射窗口的大小,a为每个指令包中的指令数目)的执行组序号seq分派到指令控制流水线,共p*q位。指令发射序号seq由指令在指令发射窗口中的绝对位置标识,即0≤seq≤i-1。在同一个执行组中,指令发射序号的大小顺序与程序的执行语义顺序一致。指令发射序号的作用在于,一方面,在执行流水线的任意一站,指令发射序号seq与执行组IP地址ipe一起能够表明当前指令的IP地址:当r*a≤seq<(r+1)*a时,当前指令的IP地址为ipe+r。当执行流水线需要使用指令的IP地址时,指令控制系统可以通过指令发射序号和当前执行组IP地址计算出指令的IP地址。另一方面,在DET站,指令控制系统使用指令发射序号实现精确中断的定位:当同一个执行组的多条指令在DET都发生中断时,根据精确中断的要求,指令控制系统需要确定并记录发射序号最小的一条指令的指令包IP地址ipint,以及这条指令在指令包中的相对位置posint。通过执行组IP地址ipe和指令发射序号seqint,指令控制系统就能够计算出指令包IP地址ipint以及相对位置posint。具体计算方法为:ipint=ipe+r,posint=seqint-r*a,其中,r满足r*a≤seq<(r+1)*a。当中断处理程序程序返回时,根据通过指令包IP地址ipint以及相对位置posint,指令控制系统控制处理器继续从中断指令继续执行。通过这种方法,在本发明中,为了表示同一个执行组中的任意一条指令的指令包IP地址(f个不同但是连续的IP地址)以及指令在指令包中的相对位置,指令控制流水线共需要携带e+p*q位地址信息。
(c)分支预测地址:通用VLIW处理器具有b条分支流水线,能够并行执行b条分支指令。b条分支流水线在DET站将使用同一个分支预测地址验证分支预测的正确性,从而确定后续执行是否需要被刷新(flush)。在本发明中,分支预测地址统一由指令控制流水线从指令分派模块获取并携带,并传递给b条分支流水线的分支预测验证站。这样比b条分支流水线分别携带相同的分支预测地址极大地节省了数据通路的代价。
(d)其它信息:在VLIW处理器中,由于执行流水线、指令控制流水线的对应站完全互锁,对于其它部分多条执行流水线需要共同使用的信息由指令控制流水线单独携带,并在相应的站传递给执行流水线。同时,指令控制流水线也可以携带部分指令控制系统需要的关于执行流水线的信息,如:执行流水线中的指令有效位信息,从而能够减少与执行流水线的交互。
在本发明中,指令控制流水线与执行流水线之间数据通路的具体实现方式为:
指令控制流水线和执行流水线共用指令分派模块。当指令分派模块向执行流水线分派指令时,也同时向指令控制流水线分派执行组IP地址、所有流水线中的指令的发射序号、分支预测地址以及各条流水线中指令的有效位信息。指令控制流水线的站与执行流水线中的前s-1站相互锁步。当执行流水线的第m站需要使用指令的IP地址时,执行流水线从指令控制流水线的第m站获取IP地址。本发明中,在指令控制流水线的第m-1站(第m站的前一站),指令控制系统通过指令发射序号seq与执行组IP地址ipe预先计算出所有执行流水线中指令的指令包IP地址的可能变化的低k位。计算方法为:当r*a≤seq<(r+1)*a时,当前指令的IP地址低k位的值为r,r<2k,a为一个指令包包含的指令数目。在指令控制流水线的m站,指令控制系统将同一执行组中IP地址不变的高e-k位和不同执行流水线中的指令IP地址变化k位合成一个e位的IP地址,通过指令控制流水线与执行流水线之间的数据通路传递给执行流水线,其中,e为指令包IP地址宽度。
本发明中分支预测地址统一由指令控制流水线从IREN站携带到IDET站,并传递给各分支流水线的DET站。当中断事件发生时,执行流水线在DET站向指令控制系统报告中断事件。
采用本发明可以达到以下技术效果:指令控制流水线能够有效减少指令控制系统在进行精确中断和分支转移处理时所需的IP地址数据通路,共享其它共用信息数据通路,同时,还能够携带部分指令控制系统需要的关于执行流水线的信息,减少信号接口数量。具体表现在:
(1)减少数据通路和站间寄存器数量,降低硬件实现复杂度。对于流水线而言,数据通路宽度的降低能够减少流水线站间寄存器的数目。在传统的通用VLIW处理器实现中,执行流水线自己携带指令的指令包IP地址,共需携带p*e位地址信息(p为执行流水线的数目,e为指令包IP地址宽度)。在本发明中,为了表示同一个执行组中的任意一条指令的指令包IP地址(f个不同但是连续的IP地址)以及指令在指令包中的相对位置,指令控制流水线只需要携带e+p*q位地址信息,其中,q为指令发射序号数据宽度。实际上,在具体实现中,p*q通常相对较小(一般地,q≤3)。因此,采用本发明的VLIW处理器为了支持精确中断所需的地址信息数据通路宽度接近传统实现的1/p。同样,分支预测地址所需的数据通路宽度大约为传统实现的1/b。对于流水线而言,本发明在减少数据通路的同时,也极大减少了站间寄存器的使用。对于IP地址信息而言,采用本发明所需的站间寄存器数目大约为传统实现的1/p,对于分支预测信息,大约为1/b。
(2)增加信号局部性,减少指令控制系统与执行流水线的交互。指令控制系统的信号来源非常分散,与各条执行流水线的接口非常多。基于VLIW处理器流水线的锁步机制,通过本发明的指令控制流水线,指令控制系统能够自己携带部分相关的信息,如:执行流水线中的指令有效位信息,不需要再从执行流水线获取,这样能够增加信号的局部性,减少部件间接口。从芯片的布局布线方面看,指令控制流水线可以和执行流水线平行放置,这样控制信号到执行流水线的距离也相对较短,有利于布局布线。
指令控制流水线在VLIW处理器中的实际应用表明,本发明能够有效地减少数据通路和站间寄存器数量,降低硬件实现复杂度,同时,增加信号局部性,减少指令控制系统与执行流水线的交互。
附图说明:
图1是通用VLIW微处理器指令控制系统逻辑框图。
图2是采用本发明的一种通用VLIW微处理器指令控制系统逻辑框图。
图3是采用本发明的一种通用VLIW微处理器指令控制流水线逻辑框图。
具体实施方式:
图1是通用VLIW微处理器指令控制系统逻辑框图。指令控制系统主要包含以下几部分:停顿(stall)控制模块,刷新(flush)控制模块,中断控制模块、IP地址产生模块、指令分派模块以及分支预测模块,如图1中虚线框所示。停顿控制模块负责产生执行流水线各站的停顿信号,主要在指令执行过程中对寄存器相关性进行检测,并在相关性存在时通过stall信号控制寄存器的正确访问;刷新控制模块负责当分支行为存在或者中断事件存在时产生flush信号产生;前端IP地址产生模块主要实现当分支行为存在、中断事件存在或者分支预测有效时产生目标IP地址;指令分派模块负责根据执行分派规则向各执行流水线分派指令;分支预测模块负责根据流水线前端的IP地址进行分支预测,产生后续的预测IP地址,并通过IP地址产生模块通知指令Cache从预测地址取指令。
本发明应用于国防科技大学计算机学院设计并实现的高性能微处理器VLIWP中,图2为VLIWP处理器的指令控制系统逻辑框图。VLIWP微处理器包括执行流水线、指令控制系统、存储控制系统三个部分。执行流水线负责完成整型、浮点、多媒体以及分支指令的操作。VLIWP处理器内部共有11条执行流水线,其中3条为分支流水线,支持3条分支指令并行执行。VLIWP处理器的执行流水线分为五站:REN、REG、EXE、DET以及WRB。执行流水线的REN、REG、EXE和DET四站采用相互锁步的方式执行,所有执行流水线共用处理器前端的指令分派模块。存储控制系统负责访存控制以及存储层次的实现。VLIWP的指令分派模块由指令缓冲、指令分派窗口和指令分派网络组成,每个时钟周期能够同时发射执行8条指令(指令分派窗口大小为两个指令包)。VLIWP处理器的指令控制系统除了传统的控制逻辑之外,还具有一条指令控制流水线,指令控制流水线分为IREN、IREG、IEXE、IDET四站。指令控制流水线的各站与执行流水线的相应站相互锁步。图中的黑色实线表示数据通路,黑色虚线表示控制通路。
VLIWP处理的指令包IP地址即e为60位。在传统的实现中,每条执行流水线都必须携带当前指令的IP地址,11条流水线共需要携带11*60(即p*e)位IP地址信息。采用本发明,VLIWP处理器携带11条流水线的IP地址只需要60+11*3(e+p*q)位数据通路,其中,11*3位为11条流水线的指令发射序号seq,每条流水线的指令发射序号宽度q为3位(最多并行执行8条指令)。在应用本发明设计VLIWP处理器时将k的值取为2。指令分派机制允许二进制地址低3位为000,001,010,011的连续地址指令包同时发射,但不允许指令包地址位011的指令与包地址为100的指令同时发射。VLIWP处理器的指令分派机制能够同时发射的两个指令包,每个指令包包含4条指令。设IP地址较小的包为B0,IP地址较大的包为B1。本发明中建立如下映射:B0的4条指令按程序语义顺序,指令发射序号分别为:0(00),0(01),0(10),0(11);B1的4条指令按程序语义顺序,指令发射序号分别为:1(00),1(01),1(10),1(11)。这样,指令发射序号的最高位实际上标识了执行组中指令的IP地址是ip还是ip+1;指令发射序号的第二、第三位正好就是当前指令在指令包中的位置pos。
实际应用表明,当k=2时,仅当每4个连续指令包(16条指令)之后才会出现一次分离发射,对实际性能的影响非常有限,这说明k取值为2是合理有效的。
从实现代价上看,采用本发明VLIWP处理器为支持精确中断需要携带的IP地址信息所需的数据通路宽度接近传统实现的1/11,分支预测地址所需的数据通路宽度大约为传统实现的1/3。同样,对于IP地址信息而言,本发明所需要的站间寄存器数目大约为传统实现的1/11,对于分支预测信息,大约为1/3。在实际的实现中,为了计算每一条执行流水线的IP地址,仍然需要一定的计算逻辑,但这些计算逻辑可以在指令控制流水线的一站中完成,而且相对简单,对全系统实现代价以及时间延迟的影响不大。
图3是本发明应用于国防科技大学计算机学院设计并实现的高性能微处理器VLIWP的指令控制流水线逻辑框图。为了简洁,本图中仅示意出两条执行流水线。指令控制流水线和执行流水线共用处理器前端的指令分派模块,在指令分派模块向执行流水线分派指令的同时,向指令控制流水线分派执行组IP地址、分支预测地址以及各条流水线中指令的有效位信息。指令控制流水线分为IREN、IREG、IEXE、IDET四站。图中的黑色实线表示数据通路,黑色虚线表示控制通路。指令控制流水线的站与执行流水线中的相应站(REN、REG、EXE、DET)互锁,当执行流水线的某一站停顿时,指令控制流水线的相应站也将停顿。执行流水线的EXE站需要从指令控制流水线的中IEXE站获取共用信息,主要是指令的IP地址。
应用本发明,在VLIWP处理器指令控制流水线的IREG站,指令控制系统预先计算所有11条流水线中指令的低2位变化IP地址,并将这11*2位地址信息传递到IEXE站。在VLIWP处理器中,由于同一个执行组中的IP地址只可能有ip或者ip+1两种,这种预先计算只需要2位比较器和2位加法器,逻辑非常简单。在指令控制流水线的IEXE站,指令控制系统分别将同一个执行组中所有指令IP地址不变的高58位和不同流水线中指令IP地址变化的低2位,拼接成为一个60位的IP地址,并传递给需要IP地址的流水线的EXE站。
在本发明中,60位分支预测地址统一由指令控制流水线从IREN站携带到IDET站,并传递给3条分支流水线的DET站。当中断事件发生时,执行流水线在DET站向指令控制系统报告中断事件。指令控制系统通过指令控制流水线IDET站中的执行组IP地址和序号最小的中断指令的指令发射序号,就能够确定中断指令的IP地址。
Claims (3)
1.一种超长指令字微处理器中的指令控制流水线方法,采用与现有VLIW微处理器指令控制系统相同的停顿控制模块,刷新控制模块,中断控制模块、IP地址产生模块、指令分派模块、分支预测模块,其VLIW微处理器内部共有p条执行流水线,每条执行流水线分为s站,每个时钟周期最多能够同时发射执行i条指令,即指令发射窗口宽度为i,其特征在于在VLIW处理器内部为指令控制系统设计一条指令控制流水线,专门用于携带表征执行流水线执行状态的共用信息,即:执行组IP地址ipe、指令发射序号seq、分支预测地址;指令控制流水线比执行流水线少一站,共s-1站,与执行流水线中的前s-1站一一对应,并相互锁步,即当执行流水线的某一站停顿时,指令控制流水线的相应站也同步停顿,且当顺序上后面的站停顿时,前面的所有站都将停顿;在指令控制流水线和执行流水线之间设计了数据通路,将IP地址从指令控制流水线传递给执行流水线。
2.如权利要求1所述的超长指令字微处理器中的指令控制流水线方法,其特征在于所述指令控制流水线携带信息的具体实现方式为:
(a)执行组IP地址ipe:在执行流水线的异常检测站—通常是提交写回的前一站,与指令控制流水线的最后一站相对应,当某一条执行流水线的指令发生中断事件时,指令控制系统定位中断指令,并报告中断指令的准确IP地址;为了进一步减少IP地址的宽度,用f表示每个时钟周期最多并行执行的指令包数目,本发明对同一个发射组中的f个IP地址的变化位数进行了限制:在通用VLIW处理器前端的指令分派模块对发射的指令进行限制,只允许连续指令包IP地址最低k位存在变化的连续指令包的指令同时发射,成为同一个执行组,其中k<=e,e为指令包IP地址宽度,不允许在同一个执行组中的指令的IP地址存在k+1位的地址突变;当相邻指令包IP地址出现从k位到k+1位地址变化时,指令分派模块强行将地址突变的后一个指令包放在下一个时钟周期发射;采用这种方法,为了表示同一个执行组中的f个不同但是连续的IP地址,指令控制流水线共携带e+(f-1)*k位地址信息;k值的选择依据是:k的值越小指令控制流水线需要携带的地址信息越少,但同时会导致越多的能够并行执行的指令被分离发射,从而对处理器的性能有一定影响;
(b)指令发射序号:在本发明中,指令分派模块在将指令分派到执行流水线的同时,将每条流水线q位的执行组序号seq分派到指令控制流水线,共p*q位,q=log2i=log2(f*a),i为通用VLIW能够最多并行执行的指令数目,也就是指令发射窗口的大小,a为每个指令包中的指令数目;指令发射序号seq由指令在指令发射窗口中的绝对位置标识,即0≤seq≤i-1;在同一个执行组中,指令发射序号的大小顺序与程序的执行语义顺序一致;指令发射序号的作用在于,一方面,在执行流水线的任意一站,指令发射序号seq与执行组IP地址ipe一起能够表明当前指令的IP地址:当r*a≤seq<(r+1)*a时,当前指令的IP地址为ipe+r;当执行流水线需要使用指令的IP地址时,指令控制系统可以通过指令发射序号和当前执行组IP地址计算出指令的IP地址;另一方面,在DET站,指令控制系统使用指令发射序号实现精确中断的定位:当同一个执行组的多条指令在DET都发生中断时,根据精确中断的要求,指令控制系统需要确定并记录发射序号最小的一条指令的指令包IP地址ipint,以及这条指令在指令包中的相对位置posint;通过执行组IP地址ipe和指令发射序号seqint,指令控制系统就能够计算出指令包IP地址ipint以及相对位置posint;具体计算方法为:ipint=ipe+r,posint=seqint-r*a,其中,r满足r*a≤seq<(r+1)*a;当中断处理程序程序返回时,根据通过指令包IP地址ipint以及相对位置posint,指令控制系统控制处理器继续从中断指令继续执行;为了表示同一个执行组中的任意一条指令的指令包IP地址(f个不同但是连续的IP地址)以及指令在指令包中的相对位置,本发明指令控制流水线共需要携带e+p*q位地址信息;
(c)分支预测地址:分支预测地址统一由指令控制流水线从指令分派模块获取并携带,传递给b条分支流水线的分支预测验证站,其中b为通用VLIW处理器具有的分支流水线数。
3.根据权利要求1所述的超长指令字微处理器中的指令控制流水线方法,其特征在于指令控制流水线与执行流水线之间数据通路的具体实现方式为:指令控制流水线和执行流水线共用指令分派模块;当指令分派模块向执行流水线分派指令时,也同时向指令控制流水线分派执行组IP地址、所有流水线中的指令的发射序号、分支预测地址以及各条流水线中指令的有效位信息;当执行流水线的第m站需要使用指令的IP地址时,执行流水线从指令控制流水线的第m站获取IP地址:在指令控制流水线的第m-1站即第m站的前一站,指令控制系统通过指令发射序号seq与执行组IP地址ipe预先计算出所有执行流水线中指令的指令包IP地址的可能变化的低k位,计算方法为:当r*a≤seq<(r+1)*a时,当前指令的IP地址低k位的值为r,r<2k,a为一个指令包包含的指令数目,在指令控制流水线的m站,指令控制系统将同一执行组中IP地址不变的高e-k位和不同执行流水线中的指令IP地址变化k位合成一个e位的IP地址,通过指令控制流水线与执行流水线之间的数据通路传递给执行流水线,分支预测地址统一由指令控制流水线从IREN站携带到IDET站,并传递给各分支流水线的DET站,当中断事件发生时,执行流水线在DET站向指令控制系统报告中断事件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410022964 CN1280712C (zh) | 2004-03-09 | 2004-03-09 | 超长指令字微处理器中的指令控制流水线方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410022964 CN1280712C (zh) | 2004-03-09 | 2004-03-09 | 超长指令字微处理器中的指令控制流水线方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1560733A true CN1560733A (zh) | 2005-01-05 |
CN1280712C CN1280712C (zh) | 2006-10-18 |
Family
ID=34441038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410022964 Expired - Fee Related CN1280712C (zh) | 2004-03-09 | 2004-03-09 | 超长指令字微处理器中的指令控制流水线方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1280712C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339523B (zh) * | 2007-07-05 | 2011-09-21 | 国际商业机器公司 | 多处理器环境中的流水线处理方法和设备 |
CN105204821A (zh) * | 2014-05-21 | 2015-12-30 | 卡雷公司 | 处理器间同步系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702118B (zh) * | 2009-11-12 | 2012-08-29 | 中国人民解放军国防科学技术大学 | 非完全锁步的vliw处理器流水线控制方法 |
-
2004
- 2004-03-09 CN CN 200410022964 patent/CN1280712C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339523B (zh) * | 2007-07-05 | 2011-09-21 | 国际商业机器公司 | 多处理器环境中的流水线处理方法和设备 |
CN105204821A (zh) * | 2014-05-21 | 2015-12-30 | 卡雷公司 | 处理器间同步系统 |
CN105204821B (zh) * | 2014-05-21 | 2019-12-10 | 卡雷公司 | 处理器间同步系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1280712C (zh) | 2006-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9286072B2 (en) | Using register last use infomation to perform decode-time computer instruction optimization | |
CN1429361B (zh) | 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置 | |
US7987343B2 (en) | Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass | |
JP5356531B2 (ja) | シーケンス検出又は命令に関連付けられた情報に基づいた命令の最適化性能 | |
US7219185B2 (en) | Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache | |
CN104731719B (zh) | 一种缓存系统和方法 | |
TWI733760B (zh) | 記憶體複製指令、處理器、方法及系統 | |
US20130007415A1 (en) | Method and apparatus for scheduling of instructions in a multi-strand out-of-order processor | |
CN1760826A (zh) | 用于处理指令的方法、处理器以及系统 | |
CN1189816C (zh) | 具有分支控制的数据处理系统及其方法 | |
US20170093423A1 (en) | Systems, Methods, and Apparatuses for Compression using Hardware and Software | |
JPH11249897A (ja) | Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置 | |
EP4020189A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
EP3767462A1 (en) | Detecting a dynamic control flow re-convergence point for conditional branches in hardware | |
CN1650266A (zh) | 支持单线程应用程序的时分多路复用推理性多线程 | |
CN1266592C (zh) | 依据确定延迟的动态vliw指令调度方法 | |
CN1280712C (zh) | 超长指令字微处理器中的指令控制流水线方法 | |
CN114691597A (zh) | 自适应远程原子操作 | |
EP4020170A1 (en) | Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor | |
US10936320B1 (en) | Efficient performance of inner loops on a multi-lane processor | |
US11126438B2 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
CN1276345C (zh) | 静态实现数据旁路及寄存器文件数据写入控制的编译方法 | |
CN116821008B (zh) | 具有提高的高速缓存命中率的处理装置及其高速缓存设备 | |
EP4202664A1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
US20090106534A1 (en) | System and Method for Implementing a Software-Supported Thread Assist Mechanism for a Microprocessor |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061018 Termination date: 20100309 |