流水线处理一系列处理指令的方法和设备技术

技术编号:2868962 阅读:246 留言:0更新日期:2012-04-11 18:40
处理器指令流水线是精简指令集计算机(RISC)体系结构的典型特征。从寄存器堆中读出处理需要的操作数。在流水线处理中的写后读存取问题,能够通过采用具有寄存器堆每个地址单独入口的记分板来避免。一旦指令进入流水线,在这个特定指令的目的地址的地址设置标记。这个标记表明流水线内的指令需要将其结果写入相应的寄存器地址。因此,只要设置了标记所述结果就不可用。显然,指令处理之后,成功地将结果写到寄存器堆。根据本发明专利技术,不仅将单个标记而且将流水线级的编号以及各指令的类型存储在特定指令的相应记分板地址中,所述流水线级的编号当前携带着需要将其结果写入特定寄存器堆地址的指令。

【技术实现步骤摘要】

本专利技术涉及一种流水线处理一系列处理指令的方法和设备,特别是转送精简指令集计算机(RISC)体系结构逻辑的指令时间表和结果。
技术介绍
处理器指令流水线,将单条指令的处理分成几个(次)级,并且减少每个级的复杂度,同时提高时钟速度,这是精简指令集计算机(RISC)体系结构的典型特征。这样的流水线具有每周期处理通过一条指令,但每条指令有几个或“n”个周期的延迟。这种情况导致与本专利技术相关的两个结论A)如果连续指令流中的特定指令产生其需要作为它直接后继的一个或多个指令的操作数的结果,该后继指令的处理必须等待(即,不能进入流水线并因此使流水线级空闲)直到前一指令的处理在相应流水线级中产生结果为止。这种处理情况用写后读(RAW)流水线故障(hazard)表示。B)操作数一般从所谓的寄存器堆中读取。然而,处理结果产生之后,通常花费一或两个另外的周期或级,直到确实将这些结果存储在寄存器堆里为止。因为所有的处理单元必须在同一级中写回以确保精确中断,所以如果处理单元具有不同的等待时间(例如,加载操作通常能够比浮点操作处理的更快),则结果的产生和寄存器堆存取之间的延迟增加。但是,一旦结果实际产生,通过旁路寄存器堆而从后继的流水线级直接读取结果也是有可能的。这种处理叫作“结果转送”。RAW故障可以通过采用“记分板”来避免,所述记分板典型的特征是,每个上述寄存器堆的地址有独立的入口。一旦指令进入流水线,就在这个特定指令的目的地址(即,所述结果地址)的地址上设置标记。该标记表明流水线内的指令需要将其结果写入相应的寄存器地址。因此,只要设置了标记,所述结果就不可用。显然指令处理之后,成功地将结果写到寄存器堆中。任何随后的需要进入流水线的指令必须检查,用于它的源(即操作数)寄存器地址中的至少一个是否设置了标记。只要这些标记未清除,所述指令就不允许进入流水线。因此,在每个周期都必须访问记分板。例如,John L.Hennessy,David A.Patterson“ComputerArchitectureA Quantitative Approach”,出版者MorganKaufmann,ISBN1558605967,2002年5月15日第3版,其中对记分板的体系结构作了详细描述。
技术实现思路
已知的记分板解决方案的缺点是,它们采用转送和指令表逻辑的较昂贵和通信密集的低速实现。为了实现针对想要进入流水线的每个指令的转送,必须检查每个操作数,看操作数地址是否作为目的寄存器出现在结果产生之后的流水线级之一中。尤其是,在以不同延迟为特征的处理单元的情况下,相当多的流水线级携带有适于转送的结果。公知的转送操作需要与所有的流水线级进行并行通信。根据本专利技术,不仅是流水线级的单个标记(single flag)而且编号,或相应的代码字,通常都携带有需要将其结果(或操作数)写入特定寄存器堆地址的指令,并且各自的指令(或操作数,借此这种类型可以是二进制编码代码字)类型存储在位于特定指令(或操作数)的目的地址(即结果地址)的地址的相应记分板或寄存器堆地址中。一方面,这个特征需要记分板中的稍多一些的存储空间,但是另一方面,它简化了RAW故障检测,尤其是指令转送。换句话说,虽然公知的记分板体系结构采用单个位,来标记特定目的寄存器地址被用于指令流水线中当前处理的指令,但本专利技术使用更为复杂的数据项,用来标明各指令的当前流水线级编号及类型。有利地,这个特定信息项能够用来计算所需的停止循环数,以防止从其可以转送结果的RAW故障和/或流水线级(或操作数)。否则,需要监控用于转送的所有流水线级的结果(或操作数),并且在每个周期,问题逻辑都需要访问记分板以检测各标记是否被设置。这些目的所需的逻辑和配线是昂贵的,且处理速度慢。本专利技术所解决的问题有利于在流水线处理中提高处理速度。这个问题可通过权利要求1所述的方法解决。权利要求2记载了运用上述方法的设备。有利地,省略了RISC体系结构中用于结果转送的昂贵且可能低速的总线探测逻辑。写后读(RAW)流水线故障检测的效率也就提高了。原则上,本专利技术的方法适用于流水线处理一系列处理指令,包括以下步骤—处理一系列连续的流水线级中的所述指令,其中,将部分或中间第一流水线处理操作数或结果,暂时地(intermediately)或永久地存储在操作数/结果存储器,如寄存器堆中,以进一步在适当的时刻通过一个或多个所述流水线级存取,以及,其中,在适当的时刻,通过一个或多个其它所述流水线级,存取在一个或多个所述流水线级中有效的部分或中间第二流水线处理操作数或结果,而不对所述操作数/结果存储器进行存取,以及其中,记分板用来存储信息,该信息关于后续的流水线处理所需的特定的所述部分或中间第一流水线处理操作数或结果中的特定操作数或结果存在或不存在,其中所述记分板数据被存储并更新,所述数据关于在一个或多个所述流水线级中,当前需要的操作数或结果处于有效,以用于一个或多个其它的所述流水线级,以及其中,关于指令类型,存储并更新所述记分板数据,所述指令涉及所述当前所需的操作数或结果,其中,所述的一个或多个其它的流水线级利用关于位置的所述数据和关于指令类型的所述数据,以直接存取所述当前所需的操作数或结果,而没有必要存取存储在所述操作数/结果存储器中的数据。原则上,本专利技术的设备适用于流水线处理一系列的处理指令,且包括—操作数/结果存储器;—一系列连续的流水线级,处理所述指令,从而将部分或中间第一流水线级处理操作数或结果暂时地或永久地存储在所述操作数/结果存储器,如寄存器堆中,以进一步在适当的时刻通过一个或多个所述流水线级存取,以及其中在适当的时刻,通过一个或多个其它流水线级,存取在一个或多个所述流水线级中有效的部分或中间第二流水线处理操作数或结果,而不对所述操作数/结果存储器进行存取;—记分板,其中,在所述记分板中存储并更新数据,所述数据关于在一个或多个所述流水线级中,当前需要的操作数或结果处于有效,以用于一个或多个其它的流水线级,以及存储并更新关于指令类型的数据,所述指令涉及所述当前所需的操作数或结果,以及所述的一个或多个其它的流水线级利用关于位置的所述数据和指令类型的所述数据,以直接存取所述所需的操作数或结果,而没有必要存取存储在所述操作数/结果存储器中的数据。本专利技术优选的附加实施例记载在相应的从属权利要求中。附图说明参考附图,对本专利技术的具体实施例进行说明,图示为图1寄存器堆/流水线/记分板设置;图2图1寄存器堆/流水线级/记分板设置中的尺寸为n的示例记分板。具体实施例方式在图1中,(顺序)指令流进入一系列的n个流水线处理级STG0至STGN-1的第一级STG0。这些级每个均包括如一系列寄存器和适当的处理装置,其执行在CPU或微处理器中执行的典型的计算或操作。例如,级STG3到STGn-2能够转送中间或部分结果给转送总线FWDB,或给多路转送总线。但是,根据本申请,级STG2和/或STG1可以,或另外的接下来的级STG4,STG5,…,也可以不转送中间或部分结果给FWDB总线。级STG0至STGn-2能够转送中间流水线处理结果给相应的后续级,以作进一步处理。第一级STG0能够从总线FWDB和/或从寄存器堆REGF中读取中间或部分结果。最后级STGn-1将最终本文档来自技高网
...

【技术保护点】
一种用于流水线处理一系列处理指令(SIS)的方法,包括以下步骤:-处理一系列连续的流水线级(STG0-STGn-1)中的所述指令(SIS),其中,将部分或中间的第一流水线级处理操作数或结果暂时地或永久地存储在操作数/结果存储器(RE GF),如寄存器堆中,以在适当的时刻通过一个或多个所述流水线级(STG0-STGn-1)进一步进行存取,以及,其中,在适当的时刻,通过一个或多个其它的流水线级,存取在一个或多个流水线级中有效的部分或中间的第二流水线处理操作数或结果, 而不对所述操作数/结果存储器(REGF)进行存取,以及其中,记分板(SCB)用来存储信息,该信息关于后续的流水线处理所需的特定部分或中间的第一流水线级操作数或结果存在或不存在,其特征在于:其中,在所述记分板(SCB) 中,存储并更新数据,所述数据关于在一个或多个所述流水线级中,当前所需的操作数或结果处于有效,以用于一个或多个其它的流水线级,以及其中,在所述记分板(SCB)中,存储并更新关于指令类型的数据,所述指令涉及所述当前所需的操作数或结果,   其中,所述的一个或多个其它的流水线级利用关于位置的所述数据和关于指令类型的所述数据,以直接存取所述当前所需的操作数或结果,而没有必要存取存储在所述操作数/结果存储器中的数据。...

【技术特征摘要】
...

【专利技术属性】
技术研发人员:延斯维滕贝格蒂姆尼格迈尔
申请(专利权)人:汤姆森许可贸易公司
类型:发明
国别省市:FR[法国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1