用于执行确定性和机会性多线程的系统和方法技术方案

技术编号:13989079 阅读:128 留言:0更新日期:2016-11-13 13:39
一种处理装置识别具有等待发出的指令的软件线程的集合。对于软件线程的集合中的每个软件线程,处理装置将软件线程绑定到硬件上下文的集合中的可用硬件上下文,并且将绑定到软件线程的可用硬件上下文的标识符存储到有序列表中的下一个可用条目。处理装置读取存储在有序列表的条目中的标识符。响应于与和等待发出的指令之中的任何其他指令没有依赖关系的标识符相关联的指令,处理装置向与标识符相关联的硬件上下文发出等待发出的指令。

【技术实现步骤摘要】
【国外来华专利技术】相关申请的交叉引用本申请要求2014年11月12日提交的美国专利申请号14/539342和2014年2月6日提交的美国临时专利申请号61/936428(下文中,“428申请”)的权益,美国专利申请号14/539342要求2014年6月17日提交的美国临时专利申请62/013241的权益,这些专利申请的公开内容通过引用整体并入于此。
本公开的示例涉及计算机架构。更具体地,所述示例涉及能够执行基于RISC的控制代码和数字信号处理器(DSP)代码的多线程指令集架构和组织。
技术介绍
在高性能处理器中已经采用了多线程并行处理技术来减少由长流水线引起的高速处理器指令执行延迟的影响。多线程并行处理技术具有比其他处理器设计改进的每周期指令性能和效率。多线程是用于硬件和软件加速两者的公知的技术。Bruton Smith circa 1979设计了Delencor HEP处理器(至于更多细节,参见“www-ee.eng.hawaii.edu/~nava/HEP/introduction.html”)。在该设计中,可从单个线程执行多个指令。Delencor HEP处理器的设计的一个要求是每个软件线程必须在发出后续指令之前完成当前指令。当每个硬件线程单元(下文中,“上下文”或“硬件上下文”,以将其与软件线程区分开)发出指令并且按顺序进行时,其可称为桶型多线程或轮转调度。在多线程处理器中,所有执行线程同时操作。在桶型多线程中,可允许每个硬件线程单元或上下文同时执行指令,但是只有一个上下文可在周期边界上发出指令。因此,如果存在C个上下文,则需要C个周期从所有上下文发出指令。所有上下文同时执行,但是只有一个上下文可在特定时钟周期上发出指令。暗指允许每个时钟周期、上下文发出指令和执行的线程通过递增上下文编号来执行。图1示出桶型多线程执行序列的示例。在该示例中,处理器按T0→T1→T2→T3→T4→T5→T6→T7→T0…的特定次序,每个时钟周期一个指令地将线程分发到上下文,一直绕该链进行,直到完成该循环并且再次到达T0为止。在具有8个上下文的处理器中,需要8个时钟周期来将线程分发到所有8个上下文。此外,单个上下文(例如,T0)可以每8个时钟周期只发出一次指令。图2示出非流水线式处理器中的两个指令的执行的示例。为了执行addi和muli这两个指令,每个指令进行四级操作。“addi”代表寄存器r2与直接值8相加的相加直接值(add immediate),并且结果被存储在寄存器r0中。“multi”代表其中寄存器r3与直接值4相乘的相乘直接值,并且结果被存储在寄存器r8中。在第一级(指令取出(IF))中,从存储器取出指令addi并且进行解码。在第二级(寄存器读(RD))中,从寄存器文件读取操作数r2。在第三级(执行(Ex))中,将来自寄存器r2的操作数与直接值8相加。在第四级(写回(WB))中,将结果写入寄存器r0内。在写入结果之后,取出下一个指令(muli)。因此,为了执行N个指令,需要4个时钟节拍。流水线是通过注意以下内容来重叠多个指令的执行的技术:当指令离开执行的特定级时,该级是休眠的,并且如果另一个指令可用来执行,则后一指令可在完成前一指令之前开始执行。图3示出流水线式重叠执行的示例。在没有冒险的完美的流水线式机器中,完美的流水线将时钟周期减少为N+3,而不需要4N个时钟周期来执行N个指令。然而,流水可以没有冒险。图4示出muli指令需要addi的结果的示例。如果允许如图4中所示地执行指令,则将返回不正确的结果,因为在muli指令读取r0之前结果不被放到r0内。这被称为写后读(RAW)冒险。为了避免该冒险,流水线必须互锁从而暂停,形成所谓的流水线气泡。流水线互锁可将非确定性引入到系统中。如果N个指令没有冒险,则执行时间是N+3个时钟周期。如果每一个指令具有冒险,则执行时间是3N+1个周期。典型程序P将被限制在N+3<=P<=3N+1。图5示出桶型线程的流水线式处理器中的指令集合的执行序列的示例。在该示例中,三个独立线程正在共享执行单元的流水线式处理器上执行。第一线程执行原始的addi/muli指令序列502、504。在没有中断或长延迟负载的情况下,决没有任何流水线互锁,因为分别来自第二线程和第三线程的指令506、508被插入流水线中。因此,第一线程没有遇到任何冒险。在该示例中,N个指令将总是在N+3个周期中完成,而没有任何冒险。然而,这N个指令必须跨足够数量的线程分布,以保证无冒险执行。缺点是如果在系统中只存在单个线程,则单个线程本身将总是需要3N+1个周期来执行程序,即使指令是无冒险的。为了改进在多线程处理器上执行的单线程程序的性能,已经开发了多种技术。一种这样的技术是在处理器中采用的同时多线程(SMT)(至于更多细节,参见“www.cs.washington.edu/research/smt/index.html”)。在如在“Intel Hyper-Threading Technology,Technical User’s Guide”中描述的Intel的Hyper-Threading、如在Clabes、Joachim等人的2004IEEE International Solid-State Circuits Conference的论文集的“Design and Implementation of POWER5Microprocessor”中描述的IBM的POWER5、如在2008年1月9日检索的“Using the Cryptographic Accelerators in the UltraSPARC T1and T2Processors”(Sun BluePrints Online,Sun Microsystems)中描述的Sun Microsystem的Ultra SPARC T2以及如在2014年1月4日检索的“MIPS32Architecture”中描述的MIPS MT(Imagination Technologies)中,已经采用了SMT。典型的基于SMT的处理器需要每个线程在基于SMT的处理器内的流水线的每一级处具有它自己的寄存器集合和额外的跟踪逻辑。这增加了硬件资源的尺寸,具体地,增加了实现基于SMT的处理器的设计所需的线程跟踪逻辑。由基于SMT的处理器采用的线程跟踪逻辑不仅需要追踪线程的执行,而且需要确定线程是否已经完成了执行。因为基于SMT的处理器可采用大量活跃地执行的硬件上下文,所以CPU高速缓存和相关联的转换后援缓冲器(TLB)的尺寸需要足够大以避免硬件上下文抖动。尽管SMT技术可改进单线程性能,但以上识别的控制电路复杂度致使其难以将SMT技术应用于需要低功耗的嵌入式处理器。利用同时多线程,多个硬件线程单元(硬件上下文)可以每个周期发出多个指令。当与诸如无序处理的超标量技术结合时,SMT所需的额外硬件并不重要。然而,在线程分发中必须谨慎,以确保所有线程都可发出指令。为了促进这点,已经开发了各种技术,包括优先级反转和抢先调度。同时多线程的优点是单个线程可以在每一个时钟周期向流水线发出指令。因此,只具有单个线程的程序P可没有冒险地在4级流水线上在N+3本文档来自技高网...

【技术保护点】
一种方法,所述方法包括:通过处理装置识别具有等待发出的指令的软件线程的集合;对于所述软件线程的集合中的每个软件线程,通过所述处理装置将所述软件线程绑定到硬件上下文的集合中的可用硬件上下文;以及通过所述处理装置将绑定到所述软件线程的可用硬件上下文的标识符存储到有序列表中的下一个可用条目;通过所述处理装置读取存储在所述有序列表的条目中的标识符;响应于与和所述等待发出的指令之中的任何其他指令没有依赖关系的标识符相关联的指令,通过所述处理装置向与所述标识符相关联的所述硬件上下文发出所述等待发出的指令。

【技术特征摘要】
【国外来华专利技术】2014.02.06 US 61/936,428;2014.06.17 US 62/013,241;1.一种方法,所述方法包括:通过处理装置识别具有等待发出的指令的软件线程的集合;对于所述软件线程的集合中的每个软件线程,通过所述处理装置将所述软件线程绑定到硬件上下文的集合中的可用硬件上下文;以及通过所述处理装置将绑定到所述软件线程的可用硬件上下文的标识符存储到有序列表中的下一个可用条目;通过所述处理装置读取存储在所述有序列表的条目中的标识符;响应于与和所述等待发出的指令之中的任何其他指令没有依赖关系的标识符相关联的指令,通过所述处理装置向与所述标识符相关联的所述硬件上下文发出所述等待发出的指令。2.根据权利要求1所述的方法,所述方法还包括在下一个时钟周期针对所述有序列表中的下一个条目反复进行读取标识符和发出指令,直到已经访问了所述列表中的所有条目为止。3.根据权利要求2所述的方法,还包括重复进行所述反复,直到具有所述等待发出的指令的所述软件线程中的一个或多个终止为止。4.根据权利要求1所述的方法,其中,响应于来自具有所述等待发出的指令的所述软件线程的软件线程的终止,通过所述处理装置从所述有序列表去除对应的标识符;以及通过所述处理装置,从硬件上下文的集合中的对应的可用硬件上下文解绑终止的软件线程。5.根据权利要求1所述的方法,其中,响应于向具有等待发出的指令的软件线程添加新软件线程,通过所述处理装置,将所述新软件线程绑定到硬件上下文的集合中的可用硬件上下文;以及通过所述处理装置,将绑定到所述新软件线程的所述可用硬件上下文的标识符存储到有序列表中的下一个可用条目。6.根据权利要求1所述的方法,其中,响应于与和具有等待发出的指令之中的任何其他指令具有一个或多个依赖关系的标识符相关联的指令,通过所述处理装置,针对相关联的软件线程发出不操作或者将结果直接寄存旁路到下一个指令。7.根据权利要求1所述的方法,其中,所述有序列表是位的阵列,并且存储在所述有序列表中的标识符是与硬件上下文的集合中的上下文编号对应的位集合。8.根据权利要求1所述的方法,其中,所述有序列表是标签的阵列,并且存储在所述有序列表中的标识符是与所述硬件上下文的集合中的上下文编号对应的标签。9.根据权利要求8所述的方法,其中,所述有序列表中的标签中的每个是不重复的。10.根据权利要求1所述的方法,其中,所述有序列表是标签的链接列表,并且存储在所述有序列表中的所述标识符是与所述硬件上下文的集合中的上下文编号对应的标签。11.根据权利要求1所述的方法,其中,基于从等待发出的指令中的每个提取的链接位的值来识别依赖关系。12.根据权利要求1所述的方法,其中,确定与所述标识符相关联的指令与所述等待发出的指令之中的任何其他指令没有依赖关系包括:通过所述处理装置,将与所述标识符相关联的指令和所述等待发出的指令之中的其他指令分组到一组指令中;通过所述处理装置,从所述一组指令中的每个指令提取指定位,以产生链接位序列;通过所述处理装置,解码所述链接位序列;通过所述处理装置,基于解码后的所述链接位序列来识别所述一组指令之间的零或更多的指令...

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

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

1