用于使得处理器能够生成流水线控制信号的方法和装置制造方法及图纸

技术编号:14706678 阅读:81 留言:0更新日期:2017-02-25 13:48
计算机处理器的链接位解码器接收指令流。链接位解码器从指令流选择一组指令。链接位解码器从指令流的每个指令提取指定位以产生链接位序列。链接位解码器对链接位序列进行解码。链接位解码器基于解码后的链接位序列来识别选中的一组指令之中的零或更多指令流依赖关系。链接位解码器基于指令的组序列之中的识别出的零或更多指令流依赖关系来输出控制信号以使处理器的一个或多个流水线级执行选中的一组指令。

【技术实现步骤摘要】
【国外来华专利技术】相关申请的交叉引用本申请要求2014年11月12日提交的美国技术专利申请号14/539,104的权益,该技术专利申请要求2014年2月6日提交的美国临时专利申请号61/936,428的权益,其公开内容通过引用而被整体包含于此。
本公开的实施例涉及用于在微处理器环境中处理指令的方法和装置。更具体地,所述实施例涉及用于使得依赖关系信息、并行性信息和性能优化能够被编码在指令序列中的方法和装置。处理器可以对该信息进行解码并采用其来生成流水线控制信号,而无需复杂的指令间依赖关系检查硬件。
技术介绍
顺序指令流中的一组处理器指令内的指令据说当处理器指令的输入值不是由该组内的其他处理器指令生成时是相互独立的。换言之,无论该组处理器指令内的指令是按次序顺序地评估还是并行地评估还是以乱序方式评估,指令流的执行的结果输出保持不变。由于独立的指令可以按照任何次序评估,因此这些独立指令的执行中的潜在重叠被称为指令级并行性(ILP)。ILP可被定义为处理器指令可被同时评估的程度的度量。限制指令流中的ILP的因素是指令之间的数据依赖关系和控制依赖关系。当前处理器架构试图通过采用诸如动态指令调度、静态指令调度和多指令发布之类的微架构技术来减轻这些依赖关系的影响。动态指令调度技术在通用处理器的领域中已被广泛使用。然而,由于实时和功率约束,嵌入式系统领域中的处理器具有通常使用的静态指令调度技术。评估流水线微架构中的指令的处理器通常进行相同的处理阶段。图1示出了可由典型的流水线处理器采用的指令级的集合。第一指令addi执行寄存器r2的内容与立即值8的加法。在第一级(IF)中,指令可被从存储器取回并被解码。在第二级(RD)中,操作数可被从寄存器文件读取。在第三级(EX)中,加法可被执行。最终,在第四级(WB)中,结果可被写回到位置r0处的寄存器文件中。流水线阶段(IF、RD、EX和WB)中的每个通常在时钟边界上执行。第二指令muli可被在第二时钟周期上开始而不需要附加硬件。第二指令的处理可以与第一指令重叠,因为在RD级中不需要IF级所需的资源。IF、RD、EX和WB级可以是共享的,但是在时间上变换。图2示出了图1的流水线实施方式的复杂化。在该示例中,muli指令需要通过addi指令计算的结果作为操作数。由于写回(WB)阶段尚未发生,因此该处理必须暂停并且等待执行完成。muli为了其操作数变得可用而必须等待的空周期通常称为流水线中的“气泡”。典型的通用处理器使用复杂的依赖关系检查硬件来动态地判定解码后的指令是否与当前在流水线中执行的指令有指令间依赖关系。该硬件有时被称为互锁硬件。如果依赖关系被检测到(也称为危险),则指令发布被暂停直到依赖的指令完成执行并且依赖关系被分解为止。应当注意到,如果处理器能够将来自当前指令的EX级的结果直接转发到下一个指令的EX级,则流水线中将没有气泡形成。这被称为旁路或者有时称为结果转发。典型的嵌入式处理器可以采用裸露的流水线,其中编程者或者编译器负责通过在执行之前调度指令以使得所有指令间依赖关系被满足来保证代码正确地执行。这种在编译时调度指令的方式被称为静态调度。在静态调度并且没有互锁硬件的情况下,NOP(无操作)指令可能需要被插入到指令流中以使得在寄存器文件被读取之前适当数目个周期过去。无论指的是具有动态硬件互锁的通用处理器还是具有可视流水线的嵌入式处理器,流水线的重叠指令执行可被称作垂直并行性。另一类型的并行性可被称作水平并行性。利用水平并行性,如果不存在依赖关系则多个独立操作可被同时执行。这经常是数字信号处理代码和高性能计算程序的情况。如果这些多个独立操作对不同的数据元素进行相同操作,则该类并行性有时被称作数据级并行性。利用数据级并行性的处理器可以执行进行相同操作的单个指令。当对多个元素同时进行相同操作时,这经常被称作向量/SIMD操作。向量操作是单指令多数据(SIMD)操作的子集,但是对于许多种类的算法,它们是等价的。相比之下,标量处理器上的指令对单个数据元素进行操作。图3是向量/SIMD处理器的简化的电路图。处理器可以通过在单个时钟周期中同时发布多个独立指令来利用水平并行性。多发布处理器基本有两种:超标量处理器和VLIW处理器。这两类之间的基本差异是指令间依赖关系被分解以及指令被发布以供执行的方式。在超标量架构中,指令间危险在运行时被以硬件动态地检测。一旦依赖关系被分解,则一个或多个指令被动态地发布。当前的通用处理器通常是推测性超标量处理器,其每个时钟周期发布变化数目的指令、以硬件进行指令间危险检测、一旦依赖关系被分解则动态地发布指令、进行乱序指令执行接着是按次序提交、并且进行指令流的推测性执行以减轻控制依赖关系的影响。相比之下,VLIW和裸露的流水线架构通常发布被格式化为一个大指令的固定数目的操作。指令调度被在编译时静态地进行或者通过编程者进行。该途径依赖编译器或编程者来识别危险和调度操作,因为该实施方式不包含用来明确地检查危险的硬件。嵌入式处理器和数字信号处理器通常使用超长指令字(VLIW)技术。VLIW途径同时执行指令内的所有操作。作为细化,架构已经采用VLIW指令字段内的一个或多个位来明确指示并行性。这允许指令内的操作的执行被串行地发布而非并行地发布。如在M.Moudgill、J.Glossner、S.Agrawal和G.Nacer的2008年10月的华盛顿哥伦比亚特区的软件定义无线电技术论坛(SDR论坛'08)的会议论文集中的“TheSandblaster2.0ArchitectureandSB3500Implementation”中描述的,SandbridgeSandblasterSB3500微处理器使用其3操作复合指令束内的称为“串行位”的单个位来指示指令束内的操作是否需要被顺序地执行。如果设置了串行位,则束内的操作被串行地执行。如果未设置串行位,则操作必须并行地执行。如果操作之一是设置了串行位的采取分支,则剩余操作不被执行。如在2010年7月的德州仪器的文献号:SPRU732J的“TMS320C64x/C64x+DSPCPUandInstructionSet–ReferenceGuide”(在下文中称为“德州仪器”)中描述的原始德州仪器TIC6201微处理器需要为每个VLIW指令取回256位。德州仪器将这些256位指令称为取回分组。德州仪器将操作字段再分为德州仪器称为指令的单独的32位字段。该取回分组内的这些操作的执行部分地由每个“指令”中的称为“p位”的位控制。p位判定指令是否将被与另一个指令并行地执行。如果指令i的p位是1,则指令i+1将被与指令i(在相同周期中)并行地执行。如果指令i的p位是0,则指令i+1被在指令i之后的周期中执行。VLIW取回分组内的p位模式允许以完全并行、完全串行或者部分串行方式执行指令。如在IBM650计算机中最初引入的指令链接意味着当前指令包含下一指令地址,如在GerritA.Blaaw和FrederickP.Brooks,Jr.的1997年2月的第一版的AddisonWesley出版社的“ComputerArchitecture:ConceptsandEvolution”(在下文中称为“Blaaw”)中描述的。在原始本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/62/201580012420.html" title="用于使得处理器能够生成流水线控制信号的方法和装置原文来自X技术">用于使得处理器能够生成流水线控制信号的方法和装置</a>

【技术保护点】
一种方法,包括:通过处理器接收指令流;通过所述处理器从所述指令流选择一组指令;通过所述处理器从所述指令流的每个指令提取指定位以产生链接位序列;通过所述处理器对所述链接位序列进行解码;通过所述处理器基于解码后的链接位序列来识别选中的一组指令之中的零或更多指令流依赖关系;以及通过所述处理器基于选中的一组指令之中的识别出的零或更多指令流依赖关系来输出控制信号以使所述处理器的一个或多个流水线级执行选中的一组指令。

【技术特征摘要】
【国外来华专利技术】2014.02.06 US 61/936,428;2014.11.12 US 14/539,1041.一种方法,包括:通过处理器接收指令流;通过所述处理器从所述指令流选择一组指令;通过所述处理器从所述指令流的每个指令提取指定位以产生链接位序列;通过所述处理器对所述链接位序列进行解码;通过所述处理器基于解码后的链接位序列来识别选中的一组指令之中的零或更多指令流依赖关系;以及通过所述处理器基于选中的一组指令之中的识别出的零或更多指令流依赖关系来输出控制信号以使所述处理器的一个或多个流水线级执行选中的一组指令。2.如权利要求1所述的方法,其中,在不对选中的一组指令中的任何指令进行解码的情况下对所述链接位序列进行解码。3.如权利要求1所述的方法,进一步包括:将选中的一组指令划分成第一组指令和第二组指令;通过所述处理器基于解码后的链接位序列来识别第一组指令与第二组指令之间的零或更多指令流依赖关系;以及通过所述处理器基于第一组指令与第二组指令之间的识别出的零或更多指令流依赖关系来输出控制信号以使所述一个或多个流水线级执行第二组指令。4.如权利要求3所述的方法,其中,解码后的链接位序列中的一位指示第一组指令能被与第二组指令并行地执行。5.如权利要求1所述的方法,其中,解码后的链接位序列指示选中的一组指令中的两个或更多个指令能被并行地执行。6.如权利要求1所述的方法,其中,解码后的链接位序列指示选中的一组指令中的两个或更多个指令必须被串行地执行。7.如权利要求1所述的方法,其中,解码后的链接位序列指示选中的一组指令中的两个或更多个指令必须被并行地执行。8.如权利要求1所述的方法,其中,解码后的链接位序列指示选中的一组指令必须被部分并行以及部分串行地执行。9.如权利要求1所述的方法,其中,要放置在选中的一组指令中的指令的数目基于所述处理器的发布宽度。10.如权利要求1所述的方法,其中,选中的一组指令内的两个或更多个指令之间的识别出的依赖关系是控制依赖关系或者数据依赖关系。11.如权利要求3所述的方法,其中,第一组指令中的一个或多个指令与第二组指令中的一个或多个指令之间的识别出的依赖关系是控制依赖关系或者数据依赖关系。12.如权利要求1所述的方法,其中,解码后的链接位序列中的一个或多个位能操作来优化所述处理器的性能。13.如权利要求1所述的方法,其中,解码后的链接位序列能操作来起流水线控制信号的作用。14.一种方法,包括:通过在处理器上执行的编译器接收指令流;通过所述编译器从所述指令流选择一组指令;通过所述编译器识别选中的一组指令之中的零或更多指令流依赖关系;以及通过所述编译器利用选中的一组指令之中的零或更多依赖关系对每个指令中的一位进行编码以产生编码后的链接位序列。15.如权利要求14所述的方法,进一步包括:通过所述编译器将选中的一组指令划分成第一组指令和第二组指令;通过所述编译器识别第一组指令与第二组指令之间的零或更多指令流依赖关系;以及通过所述编译器利用第...

【专利技术属性】
技术研发人员:C·J·格罗斯尼尔G·J·纳赛尔M·森迪尔威兰V·卡拉什尼科夫A·J·霍安P·达西S·D·兰库王生洪
申请(专利权)人:优创半导体科技有限公司
类型:发明
国别省市:美国;US

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

1