专利名称:指令控制装置以及指令控制方法
技术领域:
本发明涉及具有同时执行多个包括一系列表示处理的指令的线程的同 步多线程功能的指令控制装置以及指令控制方法。
背景技术:
在由CPU代表的指令控制装置的内部,表示处理的指令经过指令 的取入(读取(Fetch ))、指令的解读(解码(decode ))、指令的执行、 执行结果的确定(提交(commit))等一系列阶段而被处理。以前,为 了使指令控制装置中的上述各阶段的处理高速化,有称作流水线的处理 系统。在流水线中,读取和解码等各阶段的处理分别由独立的小系统进 行。据此,例如能够在某个指令执行的同时并行执行其他指令,等等, 指令控制装置中的处理实现高速化。
近年来,包括多个这种流水线、进一步实现处理的高速化的称作超 标量体系结构(superscalar)的处理系统正在普及。并且,作为该超标 量体系结构中的实现处理的进一步高速化的功能,有称作乱序执行的功能。
图1是表示超标量体系结构中的乱序执行的概念图。
该图1中表示超标量体系结构中的乱序执行的一个例子。
在图1的例子中处理4个指令。各个指令经过读取(步骤S501 )、 解码(步骤S502 )、执行(步骤S503 )以及提交(步骤S504 )这4个 阶段而被处理。在此,对于4个指令,读取(步骤S501)、解码(步骤 S502 )以及提交(步骤S504)通过按照程序上的处理顺序来执行处理 的按序执行来进行。并且,指令的执行(步骤S503 )通过不按照程序 上的处理顺序执行的乱序执行来进行。
4个指令按照程序上的处理顺序被读取(步骤S501)并被解码(步 骤S502)以后,与该处理顺序无关地、在获得执行(步骤S501)所需的计算数据等(操作数(叩erand))后转向执行(步骤S5(K3 )。在图1 的例子中,对于4个指令同时获得操作数,各个指令相互同时地开始。
以上述方式,通过乱序执行,能够与程序上的处理顺序无关地同时 并行处理多个指令,因此指令控制装置中的处理实现高速化。
在执行(步骤S503 )以后,以按序执行的方式按照程序上的处理顺 序进行对4个指令的提交(步骤S504 )。在比该处理顺序中的先行指令 先结束了执行(步骤S503 )的后续指令,在先行指令的执行(步骤S503 ) 结束之前成为等待提交的状态。在图l的例子中,针对4个指令的执行 (步骤S503)分为4层图示,图中越上层的,在程序上的处理顺序越 早。在该图l的例子中,最上层图示的处理顺序是最早的,该指令的执 行(步骤S503)最花时间,因此其他3个指令成为等待提交。
另外,近年来,由指令控制装置处理的程序大多组合多个处理单位(线 程)而构成,这些处理单位包括一系列的多个指令,能够相互同时地并行 执行。
为了执行指令,指令控制装置大多包括多个运算器。并且,在指令 执行时,很多情况下,在各个周期中仅使用上述多个运算器中的一部分, 因此运算器的利用率有较大的余量。
因此,作为提高运算器的利用率的技术,提出了在各周期中,将某 个线程不使用的运算器分配给其他线程以同时并行处理多个线程的指 令的同步多线程(SMT: Simultaneous Multi Threading )功能这一4支术。
图2是概念性地表示SMT功能的一个例子的图。
在该图2中,表示属于线程A以及线程B这两种线程的指令通过 SMT功能执行的情形。在图2中的纵轴方向上排列的4个方块分别表 示在指令控制装置中进行指令的执行的运算器,各个方块中记载的字母 "A"以及"B"分别表示由对应于该方块的运算器执行的指令所属的 线程种类。
此外,横轴表示指令控制装置中的时钟周期。在图2的例子中,在 第1周期(步骤S511)中,上面的2个运算器执行线程A的指令,下 面的2个运算器执行线程B的指令。在第2周期(步骤S512)中,最上面和最下面的2个运算器执行线程A的指令,中间的2个运算器执行 线程B的指令。此外,在第3周期(步骤S513)中,上面的3个运算 器执行线程A的指令,最下面的1个运算器执行线程B的指令。
这样,通过SMT功能,在各个周期中同时并行执行多个线程的指令。
图3是表示SMT功能的一个例子的与图2不同的概念图。
在该图3的例子中,属于线程A以及线程B这两种线程的指令被交 替地读取和解码后,在执行中,在取得了各个指令的执行所需的操作数 和运算器的情况下,如图2所示那样在两种线程之间同时并行进行指令 的执行。在图3的例子中,在图中用斜线表示的时间Tl中,在两种线 程之间同时并行进行指令的执行。
此外,关于提交,在相同种类的线程之间,先行指令的提交全部结 束之前无法进行后续指令的提交,但在不同种类的线程之间,无须等待 先行指令的提交的结束便可进行后续指令的提交。在图3的例子中,无 须等待对线程A读取的指令的提交结束,便可进行对线程B读取的指 令的提交。
如上面参照图2以及图3说明的那样,根据SMT功能,在多种线 程间,指令的执行能够相互同时地并行执行,在不同种类的线程间,无
须等待先行指令的提交结束便可进行后续指令的提交,因此实现了指令 控制装置的处理效率的提高。
在包括这种SMT功能的指令控制装置中,为了能够实现多种线程 间的指令的同时并行执行,具备数量为线程数的在程序上指示访问的所 谓程序可见的构成要素。另一方面,关于运算器和解码部,往往在多种 线程之间共同使用。对于如上所述的运算器,由于将多个运算器在多种 线程间分配来使用,所以无须具备数量为线程数的运算器便可实现多种 线程间的指令的同时并行执行。但是,对于解码部,由于电路结构复杂 并且电路规模大,所以与上述运算器不同,往往只具备一个解码部。在 此情况下,解码部在多种线程间共同使用, 一次只能解码一个线程的指 令。在此,在指令中,存在在同一线程中禁止与先行指令同时执行的指
6令。像这样由于某种原因而无法执行指令的处理的状态称作停顿
(stall )。此外,将引起该停顿的原因称作停顿原因。
以前,对于被确认发生停顿的指令,在所需的条件具备、停顿原因 消除之前,原样停留在解码部中。
图4是表示在单线程类型的指令控制装置中,发生了指令的解码部 中的停顿的情形的概念图。
在该图4的例子中,通过指令读取部501中的一次读取,8个指令 被取入指令緩冲器502中。指令緩沖器502具有多个项(IBR: Instruction BuffeR,指令緩沖器)502a,按照与线程中的处理顺序相同的顺序保持 8个解码前的指令。
指令緩沖器502将IBR502a中保存的指令向解码部503中依次注入 4个。解码部503包括4个寄存器(IWR: Instruction Word Register, 指令字寄存器)503a,每个寄存器保存一个上述注入的指令,4个指令 被依次保存在各IWR503a中。并且,在解码部503中,依次进行这些 被保存的4个指令的解码。并且,解码部503将解码完毕的4个指令移 交给后面的执行部。此时,当在指令中如上所述存在被确认为无法立即 执行而停顿的指令时,向执行部的移交在该指令之前停止。在图4的例 子中,已被解码的4个指令中的第3个指令被确认停顿,向执行部的移 交到第2个指令为止停止。
在具有SMT功能的指令控制装置中,若某个线程的指令在解码部 中停顿了,则解码部被一个线程的指令占用,无法进行其他线程的指令 的解码。
在此,关于处理单线程的程序的单线程类型的指令控制装置提出了 如下技术(例如参照专利文献1):将被确认停顿的指令转移到指定的存 储器中,以为后续指令腾空解码部,在获得先行指令的执行结果后执行 该被确认停顿的指令。根据该技术,上述的乱序执行无延迟地进行。但 是,即便将该技术应用于具有SMT功能的指令控制装置,与该被确认 停顿的指令相同线程的后续指令,在该被确认停顿的指令的停顿原因消 除并提交结束之前成为等待提交,因此即使暂时避免了解码部的占用,不久也会产生由该线程的指令造成的解码部的占用。
此外,提出了如下技术(例如参照专利文献2):在一个线程的指令 被确认停顿的情况下,使该指令无效以为其他线程腾空解码部,在停顿 消除后再次从读取开始重新执行该指令。
图5是表示在一个线程的指令被确认停顿的情况下,使该指令无效 以为其他线程腾空解码部的技术的概念图。
在该图5的例子中,通过指令读取部511,将两种线程的指令每次8 个交替地取入指令緩冲器512中,通过指令緩冲器512,每次4个交替 地注入解码部513中。并且,当在解码部513的解码时,确认了某个线 程的4个指令中的一个停顿的情况下,在解码部513中使该指令和该线 程中的后续指令无效。其结果是,消除解码部513中的占用,能够进行 其他线程的指令的解码。此外,从指令读取部511的取入开始重新执行 被无效的线程的指令。
专利文献l:日本特开平7 - 271582号公报
专利文献2:日本特开2001 - 356903号7>净艮
但是,在上述专利文献2记载的技术中,被确认停顿的指令从读取 开始重新执行,因此存在关于该指令曾经进行的读取变得无用,指令控 制装置中的处理效率降低的问题。
鉴于上述情况,本发明的目的是提供一种能够效率较好地处理指令 的指令控制装置以及指令控制方法。
发明内容
实现上述目的的本发明的指令控制装置的特征在于具有 指令读取部,从具有多个指令的线程取得指令;
指令緩沖器,保持上述取得的指令;
指令解码部,保持并解码从上述指令緩冲器输出的指令;
8指令执行部,执行上述被解码的指令;以及
指令注入控制部,在将上述指令緩冲器中保持的指令注入上述指令 解码部的情况下,在先行于上述指令緩冲器中保持的指令的指令正在使 用上述指令执行部时,使上述指令解码部保持的指令和上述指令解码部 保持的指令的后续指令无效,并且使上述指令緩冲器再次保持上述指令 解码部保持的指令和上述指令解码部保持的指令的后续指令。
根据本发明的指令控制装置,在先行指令正在使用上述指令执行部 时,上述指令解码部保持的指令以后的指令被无效。因此,能够将上述 指令解码部腾空给其他可执行的指令。此外,对于曾经被无效的指令,
由上述指令緩冲器再次保持,因此从上述线程取得指令的工作不会白 费,因而效率较高。即,根据本发明的指令控制装置,能够效率较高地 处理指令。
此外,在本发明的指令控制装置中,如下方式是优选方式其特征 在于
上述指令读取部从多个上述线程中取得指令;
上述指令緩沖器保持上述取得的多个线程中包含的指令; 上述指令解码部保持属于上述多个线程中的任一个线程的指令;
在上述指令注入控制部将使上述指令緩冲器再次保持的属于上述线 程的上述指令解码部保持的指令和上述指令解码部保持的指令的后续 指令再次注入上述指令解码器部的情况下,在上述指令解码部中保持属 于与上述线程不同的线程的指令。
根据该优选方式的指令控制装置,在处理多个线程的指令时,在对 一个线程在上述指令緩沖器中再次保持指令的情况下,将上述指令解码 部腾空给其他线程的指令,因此能够高效地处理多个线程的指令。
在该处理多个线程的指令的优选方式的指令控制装置中,以下方式 是更为优选的方式
在上述指令注入控制部未保持属于与上述线程不同的线程的指令的情况下,上述指令解码部不对上述指令注入控制部请求上述再次注入,保持成为上述再次注入的对象的指令。
根据该更为优选方式的指令控制装置,在不存在为其腾空上述指令解码部的其他线程的情况和其他线程中不存在应该处理的指令的情况
等、也可以将指令留在上述指令解码部中的情况下,在上述指令解码部中有效地保持成为再注入的对象的指令,因此避免不必要的再注入,能够更高效地处理指令。
此外,在本发明的指令控制装置中,以下方式是优选的方式
上述指令注入控制部,在具有表示成为上述再次注入的对象的指令能够执行的信息,由上述指令解码部请求了上述再次注入的情况下,基于上述信息信息进行上述再次注入。
根据该优选方式的指令控制装置,借助于上述信息向上述指令注入控制部传达能够执行成为上述再次投入的对象的指令的情况,因此该指令注入控制部能够在适当的时机进行再次注入。
此外,在本发明的指令控制装置中,以下方式是优选的方式
上述指令注入控制部,具有用于保持向上述指令解码部进行注入的上述指令的指令注入緩冲器,在上述指令注入緩冲器中保持的指令全部已由上述指令解码部解码的情况下,放开上述指令注入緩沖器。
根据该优选方式的指令控制装置,适当地放开上述指令注入緩冲器,因此能够平滑地反复利用该指令注入緩冲器,能够更加高效地处理指令。
此外,在本发明的指令控制装置中,以下方式是优选的方式
上述指令解码部,在判断为上述已解码的指令不具备能够执行的条件的情况下,对上述指令注入控制部请求上述指令的后续指令的再次注入。
根据该优选方式的指令控制装置,对于上述指令的能够执行的条件是否具备,在准确把握指令的处理的上述指令解码部中进行判断,因此
10能够无误地进行对上述指令注入控制部的再次注入的请求。
此外,实现上述目的的本发明的指令控制方法是一种具有保持指令的指令緩冲器部、保持并解码从上述指令緩冲器部输出的指令的指令解码部、和执行被解码的指令的指令执行部的指令控制装置的指令控制方
法,其特征在于
在将上述指令緩冲器中保持的指令注入上述指令解码部的情况下,判断先行于上述指令緩冲器中保持的指令的指令是否正在使用上述指令执行部;
在先行于上述指令緩冲器中保持的指令的指令正在使用上述指令执行部时,使上述指令解码部保持的上述指令和上述指令解码部保持的指令的后续指令无效;以及
使上述指令緩冲器再次保持上述指令解码部保持的指令和上述指令解码部保持的指令的后续指令。
根据本发明的指令控制方法,能够与上述指令控制装置相同地高效地处理指令。
根据本发明,能够得到可高效地处理指令的指令控制装置以及指令控制方法。
图l是表示超标量体系结构中的乱序执行的概念图。
图2是概念性地表示SMT功能的一个例子的图。
图3是概念性地表示SMT功能的一个例子的与图2不同的其他概念图。
图4是表示在单线程类型的指令控制装置中,发生指令解码部中的停顿的情形的概念图。
图5是表示在一个线程的指令被确认停顿的情况下,使该指令无效以将解码部腾空给其他线程的技术的概念图。图6是表示作为指令控制装置的一个实施例的CPU10的硬件结构图。
图7是表示图6的CPU10中的与停顿指令有关的处理的概念图。
图8是为了说明与停顿指令有关的处理,简化图6的CPU10的一部分,用功能模块表示一部分的图。
图9是表示从指令的读取到向解码部109的指令注入为止的处理流程的概念图。
图10是表示与各IBR104a对应的緩冲器信息的图。
图11是用于说明单线程类型的CPU执行的递交(presentation )的说明图。
图12是用于说明本实施例的CPU10执行的递交的说明图。
图13是表示在解码部109中被确认停顿的情况下的处理流程的概念图。
图14是用IWR109a内保存的指令的转变表示在解码部109中被确认停顿的情况下的处理流程的图。
图15是表示D倒退(reverse)指示电路的图。
图16是表示D倒退执行时CPU10中的各指针的控制的流程的概念图。
图17是使用具体的数值例以表的形式表示保存用指针253的内容的生成的图。
图18是表示从停顿的发生到进行再次递交和解码为止的处理流程的流程图。
图19是表示不存在检测电路的图。
图20是表示从停顿发生,经过对停顿原因的监视,直到再次递交的执行的处理的流程图。图21是用于说明在一次解码时被进行D释放的4个指令横跨两个IBR109a的情况下IBR109a的放开的说明图。
图22是表示在CSE127中通过按序执行进行寄存器更新的结构的概念图。
图23是说明取得与指令处理的高效化不同的其他效果的状况的图。图24是说明吞吐量提高这一其他效果图的图。
具体实施例方式
以下,参照
指令控制装置的一个实施方式。
图6是表示作为指令控制装置的一个实施方式的CPU10的硬件结构图。
该图6所示的CPU10是具有同时处理两种线程的指令的SMT功能的指令控制装置,在该CPU10中,依次进行下面的7个阶段的处理。即,顺序进行以按序执行的方式交替地读取两种线程的指令的读取阶段(步骤SIOI)、以按序执行的方式解码所读取的指令表示的处理的解码阶段(步骤S102)、以按序执行的方式将已被解码的指令保存在与该指令的处理执行所需的运算器连接的后述的保留站(reservationstation)中,以乱序执行的方式将该保存的指令移交给运算器的发送阶段(步骤S103)、以乱序执行的方式将保留站中保存的指令的执行所需的操作数从寄存器中读出的寄存器读出阶段(步骤S104)、使用从寄存器读出的操作数以乱序执行的方式来执行保留站中保存的指令的执行阶段(步骤S105)、以乱序执行的方式进行向CPU10以外的存储器记录执行结果等的存储器阶段(步骤S106 )、以及以按序执行的方式进行按照执行结果更新操作数保存用的寄存器等并使该执行结果成为从程序可见的状态的提交阶段(步骤S107)这7个阶段的处理。
以下,详细地说明各个阶段。
在读取阶段(步骤S101)中,分别为两种线程(线程O、线程l)准备的两个程序计数器101按照各线程的记载顺序指示取入第几个指令。并且,在各程序计数器101指示指令的取入(读取)的时机,指令读取部102从指令一级高速緩存103中将该被指示的指令取入指令緩冲器104。两个程序计数器IOI交替动作,在一次读取中,任意一个程序计数器101指示对应线程的指令的取入。此外,在本实施例中,在一次读取中,通过按序执行按照线程中的处理顺序进行8个指令的取入。在此,有时基于按序执行的处理顺序从线程中的指令的记载顺序中分支。该CPU10具有预测这种分支的有无以及线程中的分支目的位置的分支预测部105。并且,指令读取部102参照该分支预测部105的预测结果进行读取。
在此,本实施例的CPU10执行的程序被保存在未图示的外部存储器中。并且,CPUIO经由与该CPUIO中内置的二级高速緩存106连接的系统总线接口 107与该外部存储器等连接。程序计数器IOI指示了指令的读取后,指令读取部102参照分支预测部105的预测结果向指令一级高速緩存103请求8个指令。接着,被请求的8个指令从外部存储器经由系统总线接口 107和二级高速緩存106被输入到指令一级高速緩存103,指令一级高速緩存103将这些指令移交到指令緩冲器104。
在解码阶段(步骤S102 )中,指令緩冲器104以按序执行的方式将通过指令读取部102取入并保持的8个指令中的4个指令注入解码部109。解码部109以按序执行的方式分别解码被注入的4个指令。此夕卜,在解码时,对于各个指令,作为指令标识符(IID: InstructionIDentification )对各个线程按照解码顺序分配从"0"到"63"的编号。在此,在本实施例中,线程0的指令被解码时,分配从"0"到"31"的IID,线程l的指令,皮解码时,分配从"32"到"63"的IID。此时,解码部109在具有线程0用的32个项和线程1用的32个项、共计64个项的后述的提交堆栈项(CSE) 127的解码对象指令属于的项组中的空项中,设置为解码对象指令分配的IID。
解码部109对于已经分配各个IID的解码完毕的4个指令的每个,确定各指令的处理的执行所需的运算器。并且,以按序执行的方式将解码完毕的各指令保存到与该指令的处理的执行所需的运算器连接的保留站中。
保留站保持多个解码完毕的指令,在发送阶段(步骤S103 )中,以乱序执行的方式将各个指令向运算器移交。即,保留站与线程中的处理顺序无关地、从已确保处理的执行所需的操作数和运算器的指令开始向 运算器移交。此时,在能够移交的指令存在多个的情况下,从上述多个
指令中先解码的指令开始向运算器移交。在本实施方式的CPU10中, 包括以下4种保留站。即,包括地址生成用保留站(RSA: Reservation Station for Address generation) 110、整数运算用保留站(RSE: Reservation Station for fix point Execution ) 111、浮动小数点运算用保 留站(RSF: Reservation Station for Floating point) 112、以及分支用保 留站(RSBR: Reservation Station for BRanch ) 113这4种保留站。在 此,RSAllO、 RSE111和RSF112经由操作数保存用的寄存器与各自对 应的运算器连接。与之相对,RSBR113与上述分支预测部105连接, 起到进行分支预测部105中的预测结果的确定等待、预测失败时指令的 再次读取指示等的作用。
在寄存器读出阶段(步骤S104)中,以乱序执行的方式读出寄存器 内的操作数。即,与线程中的处理顺序无关地、读出与已经向运算器移 交指令的保留站连接的寄存器内的操作数,并交给对应的运算器。 CPU10中包括整数制寄存器(GPR: General Purpose Register,通用寄 存器)114和浮动小数点制寄存器(FPR: Floating Point Register ) 116 这两种寄存器。在此,GPR114以及FPR116都是程序可见的寄存器, 对线程0和线程1的每个准备它们。此外,用于各寄存器的更新之前保 持指令的执行结果的緩冲器分别与GPR114以及FPR116连接。GPR114 上连接整数制寄存器更新緩冲器(GUB: GPR Update Buffer) 115, FPR116上连接浮动小数点制寄存器更新緩冲器(FPR: FPR Update Buffer) 116。
地址生成以及整数运算使用整数的操作数进行,因此GPR114与上 述的RSAllO和RSE111连接。此外,在本实施方式中,使用GPR114 更新前的阶段的GUB115中保持的操作数的整数运算也被允许,因此该 GUB115也与RSAllO和RSE111连接。此外,浮动小数点运算使用浮 动小数点形式的操作数进行,因此FPR116与上述的RSF112连接。此 外,在本实施方式中,使用FUB117中保持的操作数的浮动小数点运算 也被允许,因此FUB117也与RSF112连接。
此外,在本实施方式的CPU10中,包括两个地址生成运算器(EAGA
15和EAGB: Effective Address Generation units A and B,有效地i止生成单 元A和B)118、 119;两个整数运算器(EXA和EXB) 120、 121;以 及两个浮动小数点运算器(FLA和FLB) 122、 123。并且,GPR114 和GUB115与使用整数操作数的EAGA118、 EAGB119、 EXA120、和 EXB121连接,FPR116和FUB117与使用浮动小数点形式的操作数的 FLA122和FLB123连接。
在执行阶段(步骤S105 )中,由运算器以乱序执行的方式进行指令 的执行。即,与线程中的处理顺序无关地、上述多种运算器中的已从保 留站传递了指令且已从寄存器传递了运算所需的操作数的运算器使用 该已传递的操作数执行该已传递的指令的处理。此外,在执行阶段(步 骤S105),在某个运算器的执行过程中,在其他运算器中进行了指令和 操作数的传递时,这些运算器同时并行地执行处理。
在该执行阶段(步骤S105 )中,从RSA110向EAGA118传递了地 址生成处理的指令,从GPR114向EAGA118传递了整数的操作数后, EAGA118使用该整数的操作数执行地址生成处理。此外,从RSE111 向EXA120传递了整数运算处理的指令,从GPR114向EXA120传递了 整数的操作数后,EXA120使用该整数的操作数执行整数运算处理;从 RSF112向FLA122传递了浮动小数点运算处理的指令,从FPR116向 FLA122传递了浮动小数点形式的操作数后,FLA122使用该浮动小数 点形式的操作数执行浮动小数点运算处理。
在经由系统总线接口 107向外部存储器的访问中使用EAGA118以 及EAGB119的执行结果,因此这些运算器与作为从外部存储器读出数 据的读出口的读取端口 124和作为写入口的存储端口 125连接。EXA120 和EXB121的执行结果与用于更新GPR114的中继緩冲器GUB115连 接,还与起到用于更新存储器的中间緩冲器的作用的上述存储端口 125 连接。此外,FLA122和FLB123的执行结果与用于更新FPR116的中 继緩沖器FUB117连接,还与起到用于更新存储器的中间緩冲器的作用 的上述存储端口 125连接。
在存储器阶段(步骤S106 )中,以乱序执行的方式进行将执行结果 向外部存储器记录等向外部存储器的访问。即,在需要这种访问的处理 的指令有多个的情况下,与线程中的处理顺序无关地、按照获得执行结果的顺序进行访问。在该存储器阶段(步骤S106)中,经由数据一级 高速緩存126、 二级高速緩存106、以及系统总线接口 107,通过读取端 口 124和存储端口 125进行访问。此外,向外部存储器的访问结束后, 从读取端口 124和存储端口 125经由未图示的连接线向CSE127发送执 行结束通知。
此外,EXA120、 EXB121、 FLA122以及FLB123通过为了避免复 杂而省略图示的连接线与CSE127连接。并且,在各运算器执行的处理 是无须对外部存储器的访问、各运算器中的执行结束后便完成的处理的 情况下,执行结束时从各运算器向CSE127发送执行结束通知。
在提交阶段(步骤S107)中,CSE127以按序执行的方式按照如下 方式更新保持在GPR114、 FPR116、程序计数器101以及CPU10中的 上述处理以外的其他处理中使用的操作数的控制器寄存器128。在从上 述运算器等向CSE127发送来的执行结束通知中,记载与该执行结束通 知对应的指令的IID、和该指令结束后的更新对象的寄存器等执行结果 的确定(提交)所需的信息(提交信息)。CSE127在执行结束通知发送 来后,在CSE127具有的64个项中的设置有与执行结束通知中记载的 IID相同的IID的项中,保存该执行结束通知中记载的提交信息。并且, 通过按序执行,按照线程中的处理顺序依据已经保存的与各指令对应的 提交信息进行寄存器的更新。此外,在该提交结束后,上述保留站中保 持的与该提交对应的指令被删除。
CPU10大概以上述方式构成,按照以上说明的7个阶段工作。
然而,在解码的指令中,有禁止与同一线程中先行的其他指令同时 执行的指令和执行中所需的执行资源不空闲、无法立即执行从而停顿的 指令(停顿指令)。CPU10中的作为本实施方式的特征是与这种停顿指 令有关的处理。以下,关注这一点继续进^f亍说明。
图7是表示图6的CPU10中的与停顿指令有关的处理的概念图。
在该图7的例子中,从步骤S201到步骤S204之间,对属于线程O 的指令和属于线程!的指令交替地每次解码4个。在此,在该图7的例 子中,步骤S203处理的线程0的4个指令中的任一个成为停顿指令。在本实施方式的CPU10中,如图7所示,该停顿指令以后的指令在解 码后,在上述的指令緩冲器104中保持到步骤S201处理的先行指令的 提交结束,并获得所需的操作数,能够执行的条件具备为止。并且,在 条件具备后,再次从解码开始重新执行停顿指令以后的指令。
在此,在本实施方式的CPU10中,如图6所示仅具备一个电路结 构复杂、电路规模大的解码部109, CPU10成为在两种线程间共同使用 该解码部109的结构。
在本实施方式中,即使一个线程的指令为停顿指令,该停顿指令以 后的指令在指令緩冲器104中也保持到能够执行的条件具备为止,因此 解码部109从该停顿指令所属的线程中放开,腾空给另一个线程。据此, 如图7所示,虽然线程0中的处理停滞,但是无停滞地处理线程l中的 指令。
以下,对该与停顿指令有关的处理进行详细说明,该说明与图6的 说明有部分重复的地方。
图8是为了说明与停顿指令有关的处理对图6的CPU10的一部分 进行了简化,用功能模块表示一部分的图。
此外,在该图8中,对于与图6的模块——对应的结构要素,附加 与图6相同的编号来表示。
CPU10包括线程0用程序计数器101_0和线程1用程序计数器 101_1这两个程序计数器,从这两个程序计i:器中,交替发出旨在执行 指令的读取的指示。
指令读取部102根据来自两个程序计数器的指示,经由图6的指令 一级高速緩存103将指令取入到指令緩沖器109中。
指令緩冲器104保持该取入的指令,并且将该保持的指令注入解码 部109。解码部109对所注入的指令进行解码,并且确认解码完毕的指 令是否具备能够执行的条件,即该指令是否停顿。
解码部109将条件具备的指令传递给后面的保留站210,使条件不 具备的停顿指令以后的指令无效。据此,解码部109被释放,能进行新
18的解码。此外,在本实施方式中,关于被无效的指令,在停顿原因消除
后从解码部109向指令緩冲器109请求再注入。在此,在该图8中,图 6所示的4种保留站被筒化,用一个方框表示。
图9是表示从指令的读取开始到向解码部109的指令注入为止的处 理流程的概念图。
在本实施方式中,通过指令读取部102,对两种线程,交替地向指 令緩冲器104中每次取入8个指令,通过指令緩冲器104向解码部109 每次注入4个指令。在解码部109中,作为该解码部109具有的4个寄 存器的从第0级到笫3级的IWR109a中分别保存指令。此外,从第0 级的IWR109a开始按顺序进行向IWR109a的保存。在此,将从指令緩 沖器104向解码部,09的4个IWR109a的指令注入称作递交 (presentation )。
以下,进一步详细地说明从由指令读取部102进行的读取开始到由 指令緩冲器104进行的递交为止的处理。
在本实施方式中,指令緩冲器104包括从第0级到第7级的共计8 级的各自能够保存8个指令的IBR104a,在每次读取时,8个指令按照 各线程中的处理顺序被保存到各个IBR104a中。在此,在读取时,指令 按照由下面的緩冲器信息定义的顺序被保存到从第0级到第7级的 IBR104a中。
图10是表示与各IBR104a对应的緩冲器信息的图。
如该图10所示,各IBR104a中,对应附加VALID信息Il,表示 该IBR104a是否作为指令的当前的保存目的位置4皮分配; NEXT_SEQ—IBR信息12,表示下一次读取中作为指令的保存目的位置 被分配的IBR104a的级数;NEXT SEQ—VALID信息13,表示是否从 指令读取部102对指令一级高速緩^ 103请求了下一个读取对象的指 令;STATUS一VALID信息14,表示当前保存的指令是否是对该IBR104a 进行的最新^取的结果。
所读取的8个指令被保存在由VALID信息II表示作为指令的保存 目的位置分配的IBR104a中。此外,在保存之后,该IBR104a的STATUS_VALID信息14被更新为表示当前保存的指令是对该IBR104a 进行的^^f读取的结果的内容。此外,在下一个指令读取发出后,其IBR 编号被保存在IBR104a的NEXT_SEQ_IBR信息12表示的级数中, IBR104a中的VALID信息II被更新。
特别是通过上述4个信息中的VALID信息II 、 NEXT_SEQ_IBR信 息12和NEXT_SEQ_VALID信息13,定义向8个级的IBR104a的指令 的保存顺序。此外,通过STATUSJVALID信息14,确认当前保存的指 令是对于该IBR104a的最新信息。
接着,对递交进行说明。
在此,本实施方式的CPU10是具有同时处理两种线程的指令的 SMT功能的指令控制装置,以下,首先为了筒化说明,首先说明处理 一种线程的指令的单线程类型的CPU中的递交。
图11是用于说明单线程类型的CPU执行的递交的说明图。
按照程序的处理顺序,即通过指令读取部601读取的顺序,从指令 緩冲器602对解码部603的4个IWR603a进行递交。为了能够按照这 种顺序进行递交,使用该图11所示的指针604。
指针604中记载如下的3个信息。
即,记载如下3个信息E—CURRENTJBR信息15,表示最初取 出成为本次递交的对象的指令的IBR104a的级数;E_NEXT_SEQ_IBR 信息16,表示在该IBR104a之后接着取出指令的IBR104a的级数;和 E—NSIj:TR信息17,表示成为本次递交的对象的4个指令中的起始指 令是IBR中以读取顺序排列的8个指令中的第几个指令。
指令緩沖器602在递交时参照指针604,将E_CURRENT_IBR信 息15表示的级数的IBR104a中的8个指令中的、从E—NSI_CTR信息 17表示的指令开始的4个指令从第O级到第3级的4;IWR603a中的 第0级IWR603a开始依次保存。
此外,在E—CURRENT IBR信息15表示的级数的IBR104a中的8 个指令到最后一个指令另止被保存到IWR603a中的时间点,E—CURRENTJBR信息15的内容被更新为E_NEXT—SEQ—IBR信息16 的内容,E_NSI—CTR信息17表示的编号上加上"4"。此外, E—NEXT_SEQ_IBR信息16的内容被更新为在上述更新后的 ECURRENT—IBR信息15表示的级数的IBR104a之后接着取出指令的 IBR104a的级数。
通过这种参照指针604的递交,指令緩冲器602能够以读取顺序取 出4个指令并依次保存到4个IWR603a中。
接着,说明具有同时处理两种线程的指令的SMT功能的本实施方 式的CPU10中的递交。
图12是用于说明本实施方式的CPU10执行的递交的说明图。
如该图12所示,对于两种线程的每个,准备与图11所示的指针604 相同的指针。即,具备线程0用指针251和线程1用指针252。此外, 在本实施方式中,还具备后述的再次递交时使用的、保存本次指令取出 所参照的指针的保存用指针253。
线程0用指针251中记载3个信息THO—CURRENT—IBR信息 18,表示本次最初取出线程0的指令的IBR104a的级数; THO—NEXT_SEQ—IBR信息19,表示在该IBR104a之后接着取出线程 0的指令的IBR104a的级数;和THO_NSI_CTR信息110,表示本次取 出的线程O的起始指令是第几个指令。
此外,线程1用指针252中记载3个信息TH1_CURRENT_IBR 信息111,表示本次最初取出线程1的指令的IBR104a的级i; TH1 NEXT SEQ IBR信息112,表示在该IBR104a之后接着取出线程 1的指令的IBR104a的级数;和TH1—NSI_CTR信息113,表示本次取 出的线程1的起始指令是第几个指令。
此外,保存用指针253中记载如下3个信息 D—TH CURRENT—IBR信息114,表示取出起始指令的IBR104a的级 数;D—TH NEXT—SEQ IBR信息115,形式地表示在该IBR104a之后 接着取出指令的IBR的级数;和D—TH_NSI—CTR信息116,表示取出 的起始指令是第几个指令。
21此外,在本实施方式中,具备对象线程指示部254,保存线程0 和线程l这两种线程中成为本次递交的对象的线程的编号。此外,还具 备再次递交对象线程指示部255,保存成为后述的再次递交的对象的线 程的编号。
在递交时,首先在两个指针中选择对象线程指示部254中保存的 编号的线程的指针。此外,此时的对象线程指示部254中保存的编号被 复制到再次递交对象线程指示部255,上述选择的指针内的3个信息被 复制为保存用指针253内的3个信息。
接着,指令緩冲器104参照所选择的指针,将该指针中的信息表 示的级数的IBR中的8个指令中的包含该指针中的信息表示的指令的4 个指令从第0级到第3级的4个IWR603a中的第0级IWR603a开始依 次保存。并且,在递交之后,适当地更新该指针中的3个信息。
再次递交时再次递交对象线程指示部255以及保存用指针253的 工作在后面描述。
通过这种参照了与各线程对应的指针的递交,指令緩冲器104能 够按照读取顺序取出4个指令并依次保存到4个IWR109a中。
这样,在解码部109的4个IWR109a中保存指令后,在解码部 109中进行各个指令的解码,并对解码完毕的各个指令确认是否因为能 够执行的条件不具备而停顿。并且,解码部109将具备能够执行的条件 的不停顿的有效指令传递给后面的保留站210,使条件不具备的停顿指 令以后的指令无效。
图13是表示在解码部109中确认了停顿的情况下的处理流程的概念图。
在该图13的例子中,从指令緩冲器104针对线程0进行递交,该 线程0中的4个指令被保存到解码部109的4个IWR109a中。并且, 在解码之后,确认了第2级IWR109a内的指令停顿,使该指令和后续 的第3级IWR109a内的指令无效。
对于被无效的指令,在被确认了停顿的时间点,从解码部109对
22指令緩冲器104发出请求,以在停顿原因消除后进行再次递交。以下, 将请求停顿原因消除后的再次递交称作D倒退(reverse )。
另一方面,将未被确认停顿的有效的第O级的IWR109a内的指令 和第1级的IWR109a内的指令向保留站210移交。以下,将指令有效 并向保留站210移交称作D释放(release).
在本实施方式中,当在解码部109中已确认了停顿的情况下,通 过该被确认了停顿的指令(停顿指令)以后的指令的无效化和上述D释 放,将解码部109放开。并且,该被放开的解码部109在停顿原因消除 之前,继续用于与停顿指令所属的线程(在图13的例子中是线程0)不 同的线程(在图13的例子中是线程1)的指令的解码。
图14是用IWR109a内保存的指令的转变表示在解码部109中已 确认了停顿的情况下的处理流程的图。
在该图14的例子中,在某个周期中,对线程O进行递交,此时, 第2级的IWR109a内的指令C停顿,对指令緩沖器104进行D倒退。 其结果是,在该周期中,第2级的IWR109a内的指令C和后续的第3 级的IWR109a内的指令D被无效。同时,第0级的IWR109a内的指 令A以及第l级的IWR109a内的指令B是有效的指令,因此进行D释 放,并被传递给保留站210。通过该无效和D释放,在该周期中解码部 109,皮放开。
在下一个周期中,对上述被放开的解码部109进行关于线程1的 递交。并且,在该周期中递交到解码部109中的线程l的4个指令a、 b、 c、 d均有效,全部被D释放,并被传递给保留站210。
这样,在本实施方式中,在解码部109中,对一个线程的指令确 认了停顿的情况下,通过上述无效化和D释放使解码部109放开,将解 码部109为另一个线程腾空。据此,在该CPU10中,两种线程的指令 无停滞地高效地得到处理。
另外,有时同一线程的多个指令发生解码部109中的停顿。在此, 在本实施方式中,停顿指令以后的指令全部被无效,因此,即便在多个 指令发生了停顿的情况下,仅对上述多个指令中级数最小的IWR109a
23内的指令进行D倒退便可。因此,在本实施方式中,解码部109中具备 D倒退指示电路,在多个指令发生了停顿的情况下指示关于级数最小的 IWR109a内的指令的D倒退的执行。
图15是表示D倒退指示电路的图。
该图15中所示的D倒退指示电路109_1具备用于检测所递交的 指令发生停顿的、分别与IWR109a连接的4 j停顿检测电路109_la。 各停顿检测电路109—la,关于对应的IWR109a内的指令,确认^:行资
源不足,或者该指令i禁止与同一线程中先行的其他指令同时执行的同
步(sync)属性的指令等停顿原因的存在,在已确认了停顿原因存在的 情况下输出'T。
另外,在不同线程共享的执行资源不足的情况下,虽然出现停顿 原因,但不进行基于此的D倒退指示。这是因为会出现如下情况假设 共享的执行资源不足而进行了 D倒退后,则D倒退以后其他线程进行 指令解码时,正好该共享资源被放开而使用,在下一个周期中共享资源 不足,相同线程再次反复进行D倒退。
此外,该图15所示的D倒退指示电路109_1具备第一算子 109—lb,在与第1级的IWR109a连接的停顿检测电路109—la是确认了 停顿原因存在的检测电路中与级数最小的IWR109a连接"电路的情况 下输出"1"。此外,D倒退指示电路109j包括第二算子109—lc,在 与第2级的FWR109a连接的停顿检测电路109—la是确认了停顿原因存 在的检测电路中与级数最小的IWR109a连接"电路的情况下输出"1"; 和第三算子109_ld,在与第3级的IWR109a连接的停顿检测电路 109一la是确认了停顿原因存在的检测电路中与级数最小的IWR109a连 接"电路的情况下输出'T,。
利用该D倒退指示电路109_1,在具有停顿原因的指令中级数最 小的IWR109a内的指令是第0级的IWR109a内的指令的情况下,仅从 与第0级的IWR109a连接的停顿检测电路109—la输出"1",该"1" 作为指示执行针对第0级的IWR109a内的指令的D倒退的 DO_REVERSE信号SO,净皮输出到该DO_REVERSE信号SO用的信号 线。此外,在级数最小的IWR109a内的指令是第1级的IWR109a内的指令的情况下,仅从第一算子109」b输出的"1"作为指示执行针对第 1级的IWR109a内的指令的D倒退的D1_REVERSE信号Sl,被输出 到该Dl—REVERSE信号Sl用的信号线。此夕卜,在级数最小的IWR109a 内的指^是第2级的IWR109a内的指令的情况下,仅从第二算子109一lc 输出的'T,作为指示执行针对第2级的IWR109a内的指令的D倒退 的D2_REVERSE信号S2,被输出到该D2—REVERSE信号S2用的信 号线。此外,在级数最小的IWR109a内的指令是第3级的IWR109a内 的指令的情况下,仅从第三算子109一lc输出的"1"作为指示执行针对 第3级的IWR109a内的指令的D倒退的D3—REVERSE信号S3,被输 出到该D3—REVERSE信号S3用的信号线。
在本实施例中,利用该D倒退指示电路109—1,在确认了多个指 令停顿的情况下,指示执行针对级数最小的IWR109a内的指令的D倒 退。
接着,说明D倒退执行时CPU10中的各指针的控制。
图16是表示D倒退执行时CPU10中的各指针的控制的流程的概念图。
该图16中表示上述图12所示的线程0用指针251、线程1用指 针252、保存用指针253以及对象线程指示部254包括在还起到控制对 解码部109的指令注入的功能的指令緩冲器104中的情形。此外,在本 实施方式中,指令緩冲器104中包括D倒退执行时再次递交时参照的D 倒退用指针256。
此外,上述图12所示的再次递交对象线程指示部255如该图16 所示包括在解码部109中。
在参照上述图12说明的通常的递交时,每次递交时更新线程0 用指针251或线程1用指针252。此外,对象线程指示部254指示的线 程用的指针更新前的内容被复制到保存用指针253中,此时的对象线程 指示部254的指示内容被复制到再次递交对象线程指示部255中。
在此,在执行了D倒退时,使用保存用指针253的内容以如下方 式生成D倒退用指针256的内容。
25图17是使用具体的数值例子以表的形式表示保存用指针253的内 容的生成的图。
在该图17的例子中,在所递交的线程0的4个指令中,对第2 级的IWR109a内的指令执行D倒退。
首先,线程0的4个指令递交时,对象线程指示部254中保存的 线程的编号为"0 "。此时参照的线程0用指针251中的 THO—CURRENT—IBR信息18 、 THO—NSI—CTR信息110以及 THO—NEXT—SEQJBR信息19在该图17的例子中分别为'T,、"5"、"3"。 通过^照这3个信息,指令緩冲器104中的第O级到第7级的IBR104a 中的第1级的IBR104a中的第5个指令到第8个指令的4个被递交。并 且,在递交后,线程0用指针251的内容为了下次递交使用而被更新为 "3"、 "1"、 "5"。此外,更新前的内容被保存在保存用指针253中,对 象线程指示部254中保存的线程的编号"0"被复制到再次递交对象线 程指示部255中。
在此,在上述D2_REVERSE信号S2用的信号线上,作为 D2一REVERSE信号S2输出"1",其结果是,对所递交的4个指令中的 第2级的IWR109a内的指令执行D倒退后,根据保存用指针253中保 存的该递交时的线程0用指针251的内容,生成D倒退用指针256的内 容。在该图17的例子中,虽然执行了 D倒退,但是由于是第2级的 IWR109a内的指令,所以对上述第1级的IBR104a中的相当于第5个 起数第3个的第7个指令执行D倒退。在本实施方式中,在解码部109 中,被执行该D倒退的指令以后的指令被无效,因此在再次递交中,被 执行该D倒退的指令成为起始指令。即,D倒退用指针256中的 CURRENTIBR信息、NSI—CTR信息以及NEXT_SEQ_IBR信息如该 图17所示分别成为'T,、 "7"、 "3"。
以此方式生成D倒退用指针256的内容后,如图16所示,再次 递交对象线程指示部255指示的、D倒退执行时被复制的线程用指针的 内容被更新为该生成的D倒退用指针256的内容。该被更新的指针的内 容维持到再次递交被执行并重新开始对该线程的处理为止。并且,在D 倒退之后,若停顿原因消除了,则基于在此之前维持的上述指针的内容 进行递交。
26将以上说明的从停顿的发生到再次递交的执行为止的处理流程汇 总在流程图中。
图18是表示从停顿的发生到进行再次递交和解码为止的处理流 程的流程图。
首先,解码部109检测出停顿后(步骤S301),被确认停顿的指 令以后的指令由解码部109无效,执行对该指令的D倒退(步骤S302 )。 接着,执行上述D倒退用指针256的内容的生成和被确认停顿的指令所 属的线程用的指针的更新(步骤S303)。在本实施方式中,到此为止的 处理在一个周期中执行。
在此,假设在与执行D倒退的周期相同的周期中,例如像先行指 令的提交结束从而得到所需的操作数等这样,停顿原因消除。在本实施 方式中,在此情况下,在执行上述从步骤S301到步骤S303的处理的周 期的下一个周期中,优先于对与被确认停顿的指令所属的线程不同的其 他线程的处理,执行针对被确认停顿的指令所属的线程的再次递交(步 骤S304)。并且,在该再次递交(步骤S304)的下一个周期中,被确认 停顿的指令以后的指令被解码(步骤S305)。
该图18的流程图所示的处理是假"^殳停顿原因最快消除时的处理, 在这种假设以外的情况下,在执行D倒退以后的周期中,在停顿原因消 除之前,将解码部109腾空给与被确认停顿的指令所属的线程不同的其 他线程,优先执行针对该线程的处理。
在此,根据CPU10执行的程序不同,即使如上所述在发生停顿时 优先执行与被确认停顿的指令所属的线程不同的其他线程的处理,但该 其他线程有时处于在CPU10中未被执行的空闲状态,或者处于未读取 该其他线程的指令而处于没有可处理的指令的状态,而不存在应该优先 的对象。在本实施方式中,在这种情况下,停止上述的停顿指令以后的 指令的无效化以及D倒退的执行,停顿指令以后的指令被原样保留在解 码部109的IWR109a中。在本实施方式中,为了能够进行这种处理, 具备用于检测应该优先的对象的不存在的不存在检测电路。
图19是表示不存在检测电路的图。如该图19所示,在本实施方式中,在与当前处理中的线程不同的 其他线程处于空闲状态的情况下,由OS通知这一情况。此外,在与当 前处理中的线程不同的其他线程处于指令未读取、没有可处理的指令的 状态的情况下,从指令緩冲器104通知这一情况。
图19所示的不存在检测电路257包括OR算子257a,在存在上 述两种通知中的任一方的通知时输出'T,;和通知电路257b,在该OR 算子257a输出'T,时,向解码部109通知存在对停顿指令以后的指令 的无效化以及D倒退的执行的抑制要求的情况。该不存在检测电路257 通知上述抑制要求存在的情况后,停顿指令以后的指令被原样保留在解 码部109中。
在不存在这种抑制要求,执行停顿指令以后的指令的无效化以及 D倒退,并将解码部109腾空给与这些指令所属的线程不同的其他线程 时,该其他线程的指令的处理被优先执行,并且在指令緩冲器104中进 行针对停顿原因的监视。并且,在取得表示停顿原因已消除的信息后, 指令緩冲器104对停顿指令所属的线程进行上述的再次递交。
图20是表示从停顿发生,经过针对停顿原因的监视,直到再次递 交的执行的处理的流程图。
由于无法确保执行资源,或者同步属性的指令未得到操作数这样 的停顿原因,指令被确认停顿,并对该指令执行D倒退后(步骤S401 ), 在指令緩冲器109中进行针对停顿原因的监视(步骤S402 )。通过在每 个周期中确认作为执行资源使用的寄存器的空闲状况和保存操作数的 寄存器的内容来进行该监视。并且,在该监视中,在取得表示停顿原因 持续存在的信息的情况下(步骤S402中的"是"判定),指令緩冲器 109进行未停顿的其他线程的指令的递交(步骤S403)。另一方面,在 取得表示停顿原因已消除的信息的情况下(步骤S402中的"否"判定), 指令緩冲器109进行已停顿的线程的指令的再次递交(步骤S404 )。
接着,说明指令緩冲器109的IBR109a的放开。
在本实施方式中,在IBR109a中的8个指令全部在解码部109中 被D释放的时间点,上述8个指令被删除并放开指令緩冲器109的IBR109a。如果没有停顿的发生,则IBR109a中的8个指令在解码部109 中的一次解码时D释放4个,所以在两次解码结束的时间点IBR109a 被放开。
在此,如果存在伴随着停顿的发生的从中途的位置开始的再次递 交,则有时一次解码时被D释放的4个指令会横跨两个IBR109a。在本 实施方式中,在这种情况下,为了高效地放开IBR109a,采取如下措施。
图21是用于说明在一次解码时被D释放的4个指令横跨两个 IBR109a的情况下IBR109a的放开的说明图。
在该图21的例子中,第1级的IBR109a中的从第5个指令数起 的4个指令被递交到解码部109。在此,第1级的IBR109a中的指令在 相当于第3个的第7个指令处结束,因此按照上述指针表示的接着取出 指令的IBR109a的级数,该级数的IBR109a中的第0个指令作为第4 个指令而被递交。在图21的例子中,如保存用指针253的 D_TH_NEXT—SEQIBR信息115所示的那样,接着取出指令的IBR109a 的级数为"3",第3^的IBR109a中的第0个指令作为第4个指令被递 交。
被递交的4个指令依次被保存到从第0级到第3级的4个 IWR109a中,以该被保存的顺序被解码并被D释放。此时,在图21的 例子中,在第2级的IWR109a内的指令被D释放的时间点,指令緩冲 器104的第1级IBR104a中的全部指令被D释放。在本实施方式中, 如上所述,在IBR104a放开的条件具备的情况下,不等待全部IWR的 指令解码结束便进行该iBR104a的放开。在图21的例子中,在第2级 的IWR109a内的指令被D释放的时间点,进行第1级IBR104a的放开。 在本实施方式中,利用这种放开方法实现处理的高效化。
如以上说明的那样,在本实施方式的CPU10中,当在解码部109 中被确认指令停顿的情况下,通过无效化相同线程中停顿指令以后的指 令,解码部109被腾空给其他线程。并且,在停顿原因消除后,停顿指 令所属的线程从递交开始重新执行。利用这种处理,能够对两种线程平 滑地进行图8的CPU10中的到向保留站210的指令注入为止的处理。
29以下,参照图8说明CPU10中的向保留站210的指令注入之后的处理。
如上所述,解码部109对解码完毕的指令按照各个线程中的解码 顺序分配从"0"到"63"的IID。并且,将解码完毕的指令和IID —起 传递给保留站210。此外,在本实施方式中,如上所述,CSE12具有线 程0用的32个项组127—0和线程1用的32个项组127—1。并且,解码 部109在将解码完毕的指令传递给保留站210时,在CSE127中的解码 对象的指令所属的线程用的项组中的空项中,设置为解码对象的指令分 配的IID。
保留站210从执行所需的输入数据已齐备的指令中的被保存的较 早的指令开始,依次注入执行流水线220中。
执行流水线220分别相当于图6所示的6种运算器。并且,在执 行流水线220中的执行结束后,执行结果被保存到寄存器更新緩冲器 230中。该寄存器更新緩沖器230相当于图6所示的GUB115以及 FUB117。此外,在执行流7JC线220中的执行结束时,向CSE127发送 执行结束通知。该执行结束通知中记载有与该执行结束通知对应的指令 的IID和该指令的提交所需的提交信息。CSE127在发送来执行结束通 知后,在CSE127具有的64个项中的被设置有与执行结束通知中记载 的IID相同的IID的项中,保存该执行结束通知中记载的提交信息。
此外,CSE127具有指令提交部127_3,该指令提交部127—3通过 按序执行的方式,按照线程中的处理顺序,i行按照各项组127_0、127_1 中保存的与各指令对应的提交信息的寄存器更新。
图22是表示在CSE127中通过按序执行的方式进行寄存器更新的 结构的概念图。
CSE127具有的上述指令提交部127—3具有线程0用出指针 127_3a,记载线程0中接着应提交的指令的IID;线程1用出指针 127_3b,记载线程1中接着应提交的指令的IID;和CSE-窗口 127_3c, 决£实际要提交的指令。
CSE-窗口 127 3c选择设置有线程0用出指针127—3a的IID的项
30和设置有线程1用出指针127一3b的IID的项中的任意一个,并将与保 存有上述提交信息的项对应的;旨令决定为提交对象。在两个项中保存有 提交信息的情况下,基本上交替地切换作为提交对象的线程。
以上述方式决定作为提交对象的指令后,如图8所示,指令提交 部127—3更新与该指令所属的线程对应的程序计数器以及控制寄存器。 此外,;旨令提交部127—3向寄存器更新緩冲器230发出指示,以更新相 当于图6的GPR114和FPR116的、为每个线程设置的寄存器240_0、 240—1中的与提交对象指令所属的线程对应的寄存器。并且,i述 CSE127中保持的该提交对象的指令被删除。
如上述所说明的那样,在本实施方式的CPU10中,当在解码部 109中确认了指令停顿的情况下,通过将解码部109腾空给其他线程, 实现处理的平滑化和高效化。
在此之前,说明了通过上述D倒退和再次递交的执行等措施高效 地进行具有SMT功能的CPU10中的多线程指令的处理。
在此,根据这种措施,除了多线程指令处理的高效化以外,还能 取得后述的其他效果。此外,该其他效果不仅在本实施方式这种具有 SMT功能的CPU10中,在单线程类型的CPU中也能取得。以下,针 对该其他效果,为了简化说明,以单线程类型的CPU中的处理为例进 行说明。
首先,说明在什么样的状况下取得该其他效果。
图23是说明取得与指令处理的高效化不同的其他效果的状况的图。
在CPU处理的指令中,有在解码时被分解为多个指令部分、花费 多个周期被解码的称作多流指令的指令。在图23的例子中,在图中第1 个周期(步骤S451)中,解码部301的4个IWR301a中保存的4个指 令A、 B、 C、 D中的第2级的IWR301a中保存的指令C是2流类型的 多流指令。在此,该指令后续的指令D在先行指令的D释放结束之前 无法解码。第2级的IWR301a中保存的指令C在解码时需要2个周期, 因此如图23所示,后续的指令D停顿。在接下来的第2个周期(步骤S452)中,进行指令C的第2个周期的解码,后续的指令D的停顿继 续,在第3个周期(步骤S453)中,后续的指令D终于在被D释放后 开始执行。
在此,观察该图23所示的3个周期的每个中的解码数,第1个周 期(步骤S452)中为3个,第2个周期(步骤S452)中为1个,第3 个周期(步骤S452)中为1个。这样,在该图23所示的例子中,仅解 码1个指令的周期连续持续2个周期,解码的吞吐量较低。
因此,在这种状况中,通过以如下方式利用上述的D倒退和再次 递交的执行等措施,能够取得提高解码吞吐量这一与SMT功能的指令 处理的高效化不同的其他效果。
图24是说明吞吐量提高这一其他效果图的图。
在该图24的例子中,与上述图23相同,在指令緩冲器401的4 个IWR401a中保存的4个指令A、 B、 C、 D中的第2级的IWR401a 中保存的指令C是2流类型的多流指令。
在此,在该图24的例子中,第1个周期(步骤S461)中,确认 了因为先行指令是多流指令因此同步属性的指令D发生停顿后,该指令 D立即被无效,对未图示的指令緩冲器,从解码部401对该指令执行 D倒退。在接下来的第2个周期(步骤S462)中,进行指令C的第2 个周期的解码。并且,在该第2个周期(步骤S462 )中,指令D的停 顿原因消除,因此在接下来的第3个周期(步骤S463)中,指令D以 后的4个指令D、 E、 F、 G被保存到4个IWR401a中并进行解码。观 察该图24所示的3个周期的每个中的解码数,第l个周期(步骤S452) 中为3个,第2个周期(步骤S452)中为l个,第3个周期(步骤S452) 中为4个。
如上述图23的例子那样,在不进行D倒退和再次递交的执行等 时,停顿指令被解码时,仅解码该指令,与此相对,若如上述图24的 例子那样,进行了D倒退和再次递交的执行等,则在对停顿指令解码时, 还对该指令以后的指令进行解码,因此能够取得吞吐量提高的效果。
此外,在此之前以单线程类型的CPU的处理为例,说明了处理多流指令时的吞吐量提高的效果,但该效果在具有SMT功能的CPU处理 多流指令时同样也能取得。
此外,上面作为具有SMT功能的CPU,例示了同时处理两种线 程的指令的CPU10,但具有SMT功能的CPU也可以是例如同时处理 三种线程的指令的CPU等。
权利要求
1、一种指令控制装置,其特征在于,具有指令读取部,从具有多个指令的线程取得指令;指令缓冲器,保持所述取得的指令;指令解码部,保持并解码从所述指令缓冲器输出的指令;指令执行部,执行所述被解码的指令;以及指令注入控制部,在将所述指令缓冲器中保持的指令注入所述指令解码部的情况下,在先行于所述指令缓冲器中保持的指令的指令正在使用所述指令执行部时,使所述指令解码部保持的指令和所述指令解码部保持的指令的后续指令无效,并且使所述指令缓冲器再次保持所述指令解码部保持的指令和所述指令解码部保持的指令的后续指令。
2、 根据权利要求l所述的指令控制装置,其特征在于 所述指令读取部从多个所述线程中取得指令; 所述指令緩冲器保持所述取得的多个线程中包含的指令; 所述指令解码部保持属于所述多个线程中任一个线程的指令; 在所述指令注入控制部将使所述指令緩冲器再次保持的属于所述线程的所述指令解码部保持的指令和所述指令解码部保持的指令的后 续指令再次注入所述指令解码器部的情况下,在所述指令解码部中保持 属于与所述线程不同的线程的指令。
3、 根据权利要求2所述的指令控制装置,其特征在于 在所述指令注入控制部未保持属于与所述线程不同的线程的指令的情况下,所述指令解码部不对所述指令注入控制部请求所述再次注 入,保持成为所述再次注入的对象的指令。
4、 根据权利要求1至4中任一项所述的指令控制装置,其特征在于所述指令注入控制部,在具有表示成为所述再次注入的对象的指令 能够执行的信息,由所述指令解码部请求了所述再次注入的情况下,基 于所述信息信息进行所述再次注入。
5、 根据权利要求1至4中任一项所述的指令控制装置,其特征在于所述指令注入控制部,具有用于保持向所述指令解码部注入的所述 指令的指令注入緩冲器,在所述指令注入緩冲器中保持的指令全部已由 所述指令解码部解码的情况下,放开所述指令注入緩冲器。
6、 根据权利要求1至5中任一项所述的指令控制装置,其特征在于所述指令解码部,在判断为所述已解码的指令不具备能够执行的条 件的情况下,对所述指令注入控制部请求所述指令的后续指令的再次注 入。
7、 一种指令控制方法,是具有保持指令的指令緩冲器部、保持并 解码从所述指令緩冲器部输出的指令的指令解码部、和执行被解码的指 令的指令执行部的指令控制装置的指令控制方法,其特征在于在将所述指令緩冲器中保持的指令注入所述指令解码部的情况下, 判断先行于所述指令緩冲器中保持的指令的指令是否正在使用所述指 令执行部;在先行于所述指令緩冲器中保持的指令的指令正在使用所述指令 执行部时,使所述指令解码部保持的所述指令和所述指令解码部保持的 指令的后续指令无效;以及使所述指令緩冲器再次保持所述指令解码部保持的指令和所述指 令解码部保持的指令的后续指令。
全文摘要
本发明在具有执行多个由一系列表示处理的指令组成的线程的SMT功能的CPU(10)中,包括解码部(109),对多个线程的指令表示的处理进行解码;指令缓冲器(104),从线程获取指令并保持,按照线程中的顺序将保持的指令注入解码部(109);和执行流水线(220),执行由解码部(109)解码的指令的处理;解码部(109)在上述指令解码时,确认该指令可执行的条件是否具备,对于条件不具备的指令以后的由指令缓冲器(104)保持的指令,对该解码部(109)请求再次注入。
文档编号G06F9/38GK101689109SQ20078005338
公开日2010年3月31日 申请日期2007年6月20日 优先权日2007年6月20日
发明者吉田利雄 申请人:富士通株式会社