首页> 中国专利> 指令执行控制装置以及指令执行控制方法

指令执行控制装置以及指令执行控制方法

摘要

在用于使多个线程以同步多线程方式动作的指令执行控制装置中,对每个线程准备结构寄存器(22-0、22-1),并设置选择电路(32、24),用于在从寄存器文件(20)读出功能的执行所需要的操作数数据的情况下,预先选择从寄存器文件(20)进行读出的线程。就可以在较早的阶段进行结构寄存器的选择,虽然增加了选择结构寄存器的部分的电路,但是,能够通过选择进行读出的线程的结构寄存器减少电路的布线量。

著录项

  • 公开/公告号CN101689110A

    专利类型发明专利

  • 公开/公告日2010-03-31

    原文格式PDF

  • 申请/专利权人 富士通株式会社;

    申请/专利号CN200780053400.7

  • 申请日2007-06-20

  • 分类号G06F9/38;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人雒运朴

  • 地址 日本神奈川县

  • 入库时间 2023-12-17 23:52:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-10

    未缴年费专利权终止 IPC(主分类):G06F9/38 授权公告日:20130731 终止日期:20150620 申请日:20070620

    专利权的终止

  • 2013-07-31

    授权

    授权

  • 2010-05-12

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20070620

    实质审查的生效

  • 2010-03-31

    公开

    公开

说明书

技术领域

本发明涉及多个线程以同步多线程方式动作,通过乱序处理来进行指令控制的指令执行控制装置以及指令执行控制方法,特别是涉及进行以同步多线程方式动作的寄存器文件的读出控制的指令执行控制装置以及指令执行控制方法。

背景技术

人们不断要求CPU(Central Processor Unit)处理的高速化。为此,历来人们就使用各种各样的技术提高CPU的处理速度。作为其方法,有流水线处理、并列进行处理的超标量体系结构方式以及不是按照程序指令的顺序来执行而是从输入数据已备全的指令开始执行的乱序执行方式。

乱序执行方式是一种在尽管在先的指令处理所需要的数据尚未备全,但在后的指令处理所需要的数据已备全的情况下,从在后的指令起先行执行的用于提高CPU的性能的技术(例如,参照专利文献1)。

例如,在以程序所记述的顺序来处理指令的情况下,若假设在先的指令处理1是伴随存储器访问的指令,在后的指令处理2是不伴随存储器访问的指令,则与指令处理1的存储器访问并列执行指令处理2,在执行指令处理2后,执行存储器访问已结束的指令处理1。

进而,人们还提出一种通过运行多个程序而不是运行单一程序,来提高CPU的处理速度的多线程方式(例如,参照专利文献2)。

运行多个程序的多线程方式是如下的结构:通过将CPU的可编程资源预先准备多组,从软件来看,则在外表上似乎是多个CPU,因而可执行多个程序。

图16是现有CPU的构成图。CPU具备主存储111、指令高速缓存112、指令解码器113、保留站114、运算执行单元115、结构寄存器116。此保留站114从结构寄存器116读出功能的执行所需要的操作数数据,以进行运算单元115的运算处理及主存储操作数地址生成处理的控制。

结构寄存器116暂时存储操作数数据,因作为CPU的一部分要求与运算速度等同的读出、写入速度,故用巨大的寄存器而不是存储器所构成。例如,用可使晶体管的量减少并能够高密度地安装的寄存器文件所构成。

作为此多线程的方式之一有VMT(Vertical Multi Threading)方式。此方式是虽然同时只能一个程序运行,但在发生长时间的数据等待时,或者以一定的时间间隔等,切换程序来运行。虽然VMT方式的电路量必须按程序的数量相应地准备可编程资源,但因为同时1个程序运行故追加的电路量较少并且实现容易。

用图16来进行说明,则用每个线程的结构寄存器构成寄存器文件116,并与程序的切换相应,将一方的结构寄存器设定成活动,将另一方的结构寄存器设定成休眠,从与运行程序相对应的结构寄存器读出操作数数据。

另一方面,作为另外的多线程方式还有同时运行多个程序的同步多线程方式(SMT方式)。这一方式因多个程序同时运行,故与单一程序运行时相比,电路的控制变得复杂,而且资源的增加在预料之中,但是因多个程序同时运行,故可以高效率地使用电路。

在此同步多线程方式下,也是用寄存器文件构成多个线程的结构寄存器,需要从多个线程的结构寄存器读出相应线程的操作数数据。

专利文献1:日本特开2007-87108号公报

专利文献2:日本特表2006-502504号公报(WO2004/034209号)

这样,在同步多线程方式下,因用寄存器文件构成多个线程的结构寄存器、且同时运行多个程序,故为了读出功能的执行所需要的操作数数据,与单一线程下的运行相比,将会增加用于对结构寄存器进行选择的电路量。另外,在同时读出不同线程的操作数数据的情况下,有可能使电路的布线量增加。

因此,与单一线程的情况相比,难以提高寄存器文件的读出频率。据此,将会产生如下的问题:尽管为了使运算速度提高而采用乱序方式和同步多线程方式,但是难于实现CPU性能的提高。

发明内容

从而,本发明的目的在于,提供一种指令执行控制装置以及指令执行控制方法,其用于在同步多线程方式的处理中,从构成多个线程的结构寄存器的寄存器文件中高速地读出功能的执行所需要的操作数数据。

另外,本发明的其他目的在于,提供一种指令执行控制装置以及指令执行控制方法,其用于即使用寄存器文件构成多个线程的结构寄存器,也可进一步减少用于从寄存器文件进行读出的电路量及布线量的增加。

进而,本发明的另外的目的在于,提供一种指令执行控制装置以及指令执行控制方法,其用于即使用寄存器文件构成多个线程的结构寄存器,也可进一步减少用于从寄存器文件进行读出的电路量及布线量的增加,并提高同步多线程处理的频率。

为了实现此目的,本发明的指令执行控制装置,具有:保留站,对用于处理乱序执行的运算处理和主存储操作数地址生成进行控制;寄存器更新缓冲器,保存通过功能的执行所获得的数据,且是不能从程序观测的;寄存器文件,用于多个线程以同步多线程方式动作,其具有按每个线程设置的结构寄存器,和将能够同时进行读出的线程数限制于比结构寄存器的线程数少的线程数的读出线程选择电路;以及线程选择电路,在通过上述保留站的项的执行从上述寄存器文件读出操作数数据时,在上述项的执行之前选择上述项的读出线程,并控制上述读出线程选择电路,其中,在上述项的运算或者执行操作数生成时,从上述线程选择电路所选择的线程的结构寄存器读出操作数数据。

另外,本发明的指令执行控制方法,其具有如下步骤:利用保留站对运算器以及主存储操作数生成器控制乱序执行的处理;将通过上述执行所获得的数据保存在不能从程序观测的寄存器更新缓冲器中;当通过上述保留站的项的执行从上述寄存器文件读出操作数数据时,在上述项的执行前选择上述项的读出线程;利用上述读出线程选择寄存器文件,该寄存器文件具有同步多线程方式的每个线程的结构寄存器和将能够同时进行读出的线程数限制于比结构寄存器的线程数少的线程数的读出线程选择电路;以及在上述项的运算或者执行操作数生成时,从上述线程选择电路所选择的线程的结构寄存器读出操作数数据。

进而,本发明优选,在从上述寄存器更新缓冲器或立即数寄存器读出运算和操作数地址生成所需要的操作数数据的情况下,上述保留站不限制能够同时进行读出的线程数。

进而,本发明优选,上述保留站在将通过利用上述项执行指令所获得的数据保存在上述寄存器更新缓冲器中并完成了上述项的指令时,将上述寄存器更新缓冲器的操作数数据保存在上述结构寄存器中。

进而,本发明优选,上述保留站,判定上述保留站的项是否需要从上述寄存器文件读出操作数数据、且判定是否与上述线程选择电路所选择的项的线程一致,为了上述执行而选择上述项需要上述读出且与上述线程相一致的项。

进而,本发明优选,上述保留站通过上述判定,选择能够从上述寄存器更新缓冲器读出功能的执行所需要的操作数数据、或能够使用立即数的项作为与项的线程无关地执行的项。

进而,本发明优选,上述线程选择电路检测必须将能够从上述寄存器文件进行读出的线程限定于特定的线程的情况,并选择上述特定的线程。

进而,本发明优选,上述线程选择电路检测无需将能够从上述寄存器文件进行读出的线程限定于特定的线程的情况,并利用表示正在进行动作的线程的信号来禁止选择未进行动作的线程。

进而,本发明优选,上述线程选择电路检测无需将能够从上述寄存器文件进行读出的线程限定于特定的线程的情况,并判定正在进行动作的线程中是否存在处于在保留站的项中一个都无法执行的状态的线程,在判定为存在上述线程时,在存在处于能够从正在进行动作的其他线程的项发出的状态的线程的情况下,禁止对处于一个都无法发出的状态的线程的线程选择。

进而,本发明优选,上述线程选择电路,检测无需将能够从上述寄存器文件进行读出的线程限定于特定的线程的情况,并判定在保留站的项中是否存在无法在一定期间完成的指令,在判定为存在上述项的情况下,以一定间隔选择上述尚未完成的线程的项。

进而,本发明优选,上述线程选择电路,检测无需将能够从上述寄存器文件进行读出的线程限定于特定的线程的情况,并选择未被上述线程选择电路选择的时间最长的线程。

在使多个线程以同步多线程方式动作的情况下,为每个线程准备结构寄存器,并在从寄存器文件读出功能的执行所需要的操作数数据时,预先选择好从寄存器文件进行读出的线程,所以就能够在较早的阶段进行结构寄存器的选择。虽然增加了用于选择结构寄存器的部分的电路,但是,能够通过选择进行读出的线程的结构寄存器,来减少电路的布线量。

另外,在保留站的项从结构寄存器以外读出操作数数据的情况下,与从结构寄存器进行读出的情况不同,能够使所有线程同时进行读出,能够不被同时进行读出的线程所限制地读出。

附图说明

图1是本发明的信息处理装置的一实施方式之框图。

图2是本发明一实施方式的指令执行控制装置之构成图。

图3是图2的指令执行控制装置之详细构成图。

图4是图2的指令执行控制装置的寄存器文件之构成图。

图5是图4的寄存器文件之说明图。

图6是图3的保留站(reservation station)的项的执行选择处理流程图。

图7是图3的项生成电路的项登记时的执行选择处理流程图。

图8是基于图3的指令执行控制装置的结构寄存器(architectureregister)更新处理之说明图。

图9是图3的线程选择电路的线程选择处理流程图。

图10是基于图9的项状态的线程选择处理流程图。

图11是图9的完成指令等待时的线程选择处理之说明图。

图12是图11的线程选择处理流程图。

图13是图9的第1、第2选择方法用的线程选择电路之电路图。

图14是图9的第3选择方法用的线程选择电路之电路图。

图15是图9的第4选择方法用的线程选择电路之电路图。

图16是以往的指令执行控制装置之说明图。

附图标记说明

1指令读取地址生成器

2一级指令高速缓存

3指令缓冲器

4指令解码器

5、6、7、8保留站

10操作数地址生成器

12、15运算器

13、16更新缓冲器

14、17寄存器

20寄存器文件

22-0、22-1结构寄存器

24读出线程选择电路

26操作数数据选择电路

32线程选择电路

34执行项选择电路

36寄存器读出ID缓冲器

具体实施方式

下面,以信息处理装置、指令执行控制装置的整体构成、指令执行控制装置、线程选择电路、其他实施方式这一顺序按照附图来说明本发明的实施方式。但是,本发明并不限于下述实施方式,还可以是各种各样的变形。

(信息处理装置)

图1是本发明的信息处理装置的一实施方式的整体图。如图1所示那样,一级指令高速缓存2、一级数据高速缓存11连接到二次高速缓存,该二次高速缓存与未图示的主存储连接。

为了进行指令读取,指令读取地址生成器1选择指令地址,并将针对所选择的指令地址的指令读取请求给予一级指令高速缓存2。从一级指令高速缓存2读取的指令被保存在指令缓冲器3中。从指令缓冲器3按程序的顺序对指令解码器4供给指令。

指令解码器4按程序的顺序进行指令解码。指令解码器4按照进行解码的指令的种类,对用于控制指令的执行的主存储操作数地址生成用保留站单元(RSA:Reservation Station for Address generate)5,定点运算用保留站单元(RSE:Reservation Station for Execute)6,浮点运算用保留站单元(RSF:Reservation Station for Floating)7,分支指令用保留站单元(RSBR:Reservation Station for BRanch)8创建所需要的项。

即,指令解码器4以按序执行的方式对读取到的指令进行解码,经过解码的指令根据指令的种类被分别保存在用于控制功能的执行的保留站单元5、6、7、8、9中。而且,保留站单元包括运算用的保留站单元6、7和主存储操作数地址生成用的保留站单元5。

另外,针对所有经过解码的指令,在用于控制指令的完成的提交堆栈项(CSE:Commit Stack Entry)9中创建项。

在经过解码的指令是加载指令的情况下对RSA5创建项,RSA5指示操作数地址生成器10生成操作数地址,并根据加载指令的种类将对应的数据从一级数据高速缓存11读出到定点更新缓冲器(GUB:GeneralUpdate Buffer)13和浮点更新缓冲器(FUB:Floating Update Buffer)16。

另外,在经过解码的指令是对RSE6、RSF7创建项的情况下,分别使运算器12、15动作,并进行对应的运算处理。在经过解码的指令是对RSA5、RSE6、RSF7创建项的情况下,通过进行与GUB13和FUB16相对应的寄存器再命名就可以进行乱序执行,并将执行结果保存在GUB13、FUB16中。

借助于保留站5、6、7,以乱序方式执行的指令通过CSE9的控制按程序的顺序进行指令的完成。而且,仅仅对已完成的指令,进行定点寄存器14、浮点寄存器17及程序计时器(PC、NEXT_PC)18、19等可编程资源的更新。

分支预测装置21根据来自分支指令用保留站8的指令进行分支预测,并控制指令读取地址生成器1。

在这里,对于对每个线程准备的作为可编程资源的结构寄存器的定点寄存器14和浮点寄存器17来说,因有许多寄存器故用寄存器文件20来构成。但是,对于对每个线程准备的作为可编程资源的NEXT程序计时器18和程序计时器19来说,因是较小寄存器故被安装而不使用寄存器文件。

从而,如后述那样,借助于保留站单元5、6、7、8,对每个运算周期选择线程,并指示操作数地址生成器10、运算器12、15执行所选择的线程的项,且从寄存器文件20进行所选择线程的操作数数据的读出、写入,执行同步多线程处理。

(指令执行控制装置的整体构成)

图2是本发明的指令执行控制装置的一实施方式的框图,表示图1的RSE5、RSE6、RSF7以及寄存器文件20的详细图。

在此实施方式中,对两个线程(线程0和1)同时动作的情况进行说明,但即便线程数为3个以上也可以实现。

图2中,与图1所示相同的部分用相同的记号来表示,保留站单元5、6、7被连接到线程选择电路32、和执行项选择电路34。

线程0和1共享此保留站单元5、6、7的项而使用。即,项保存着表示项的线程的线程ID,表示从结构寄存器读出操作数数据的信号和读出地址,表示从寄存器更新缓冲器进行读出的信号和读出地址,表示在指令解码时对每个指令所分配的指令编号的指令标识符等。

两个线程的结构寄存器22-0、22-1,由可以同时进行读出的线程和可以同时进行写入的线程成为一个的寄存器文件20所构成。读出线程和写入线程不需要是同一线程。

如图2所示那样,寄存器文件20由线程0和1的结构寄存器22-0、22-1、读出线程选择电路24、读出操作数选择电路26所构成。

线程选择电路32选择读出线程,并将读出线程ID发送给读出线程选择电路24。读出线程选择电路24选择读出线程ID所指的线程的结构寄存器22-0、22-1。而且,将执行项中所含的读出地址从执行项选择电路34发给读出操作数数据选择电路26。

读出操作数数据选择电路26按照读出地址,读出功能的执行电路10、12、15所需要的部分的数据,并使用于功能的执行中。执行项选择电路34从保留站选择要执行的项,已被选择的项从寄存器文件20、寄存器更新缓冲器13、16、立即数寄存器(immediate value register)28读出功能的执行所需要的部分的数据,进行功能的执行。

对这一动作进行说明。在多个线程以同步多线程方式动作的情况下,在线程间共享保留站5、6、7的项构成。而且,为每个线程准备结构寄存器22-0、22-1,并由寄存器文件20所构成。

在从寄存器文件20读出功能的执行所需要的操作数数据的情况下,根据线程选择电路32的寄存器读出ID预先选择好从寄存器文件20进行读出的线程。进而,将进行读出的线程的数量限制于比结构寄存器22-0、22-1的线程数少的线程数。

通过预先决定进行读出的线程,寄存器文件20能够在执行项选择电路34选择执行项以前的较早的阶段进行结构寄存器22-0、22-1的选择。

虽然增加了选择结构寄存器22-0、22-1的部分电路24,但是通过进行对进行读出的线程的结构寄存器的选择能够减少电路的配线量。由此,在进行功能的执行时,在操作数选择42、48中选择执行所需要数据,但是,在设成不进行对进行读出的线程的结构寄存器的选择时,将线程量的操作数数据从结构寄存器发送给操作数选择42、48。通过选择进行读出的线程的结构寄存器,能够减少对操作数选择42、48进行发送的布线量。

这样,通过预先决定从寄存器文件20进行读出的线程,就可以高效率地从寄存器文件20读出所需要的操作数数据,在使用了比以往的半导体技术好的半导体的情况下就有可能超过以往的频率。

线程选择电路32预先选择用于从寄存器文件20进行读出的线程。在执行不同的功能的保留站、例如RSA5、RSE6从同一寄存器文件20读出操作数数据的情况下,通过寄存器文件20所具备的线程选择电路24来进行读出控制,所以保留站5、6执行的项从寄存器文件20读出操作数数据时的线程就成为同一线程。

另外,在保留站单元5、6、7的项,从结构寄存器22-0、22-1以外读出操作数数据的情况下,与从结构寄存器进行读出的情况不同,所有的线程能够在同时进行读出。

即,在结构寄存器22-0、22-1以外,对通过功能的执行所获得的数据,使用从程序不能观测的由工作寄存器所构成的寄存器更新缓冲器13、16和立即数寄存器28。在将这些寄存器数据作为操作数数据而使用的情况下,同时进行读出的线程就能够没有限制地读出。

(指令执行控制装置)

详细地说明图2的指令执行控制装置。图3是图2的保留站之框图,图4是图2的寄存器文件以及功能执行电路之框图,图5是图4的寄存器文件之说明图,图6是图3的保留站的项的执行选择动作之说明图,图7是图3的项生成电路的项登记时的动作说明图。

图3至图7表示除图1的浮点用保留站单元7外的RSA5、RSE6的功能块。此外,图1的浮点用保留站单元7也是同样的构成,另行持有同样的寄存器文件。但是,由于不具备CWR和CRB,所以从结构寄存器(浮点寄存器17)的寄存器文件读出功能的执行所需要的操作数数据以进行功能的执行。

如图3所示那样,运算用保留站单元6具有项生成电路60、运算用保留站62、执行项选择电路64。

同样,主存储操作数生成用保留站单元5具有项生成电路50、主存储操作数生成用保留站52、执行项选择电路54。

作为线程选择方法之一,线程选择电路32接受由指令解码器4解码的指令的线程ID,如后述那样选择线程,并将选择线程通知给项生成电路50、60、保留站52、62、寄存器读出ID缓冲器36。

保留站52、62如用图6所说明的那样,为了实现以乱序方式的执行,在各周期接受来自线程选择电路32的选择线程ID,并对项赋予优先级以便从已准备好所需要的操作数数据的项开始执行。

执行项选择电路54、64从保留站52、62所登记的项选择将要执行的项,并输出至运算器12等。在同时有若干的已做好执行准备的项的情况下,执行项选择电路54、64从较旧的项起按顺序来选择并执行。

同样,项生成电路60如图7所说明的那样,在向保留站52、62登记项的阶段,接受来自线程选择电路32的选择线程ID,并对项赋予优先级以便从已准备好所需要的操作数数据的项开始执行。

为了进行此优先级控制,线程选择电路32在执行项选择电路54、64对保留站52、62的项进行选择的一周期前,选择线程。此选择线程ID通过寄存器读出ID缓冲器36被发送给寄存器文件20,于是,寄存器文件20的进行读出的线程被预先决定。

因此,就能够在执行项选择电路54、64选择执行项以前的较早阶段,进行结构寄存器22-0、22-1的选择。

借助于图6来说明保留站52、62的项的执行选择动作。保留站52、62针对已经登记的有效项,检查该项是否为从结构寄存器读出执行所需要的操作数数据的项(S10)。

在判定为该项是从结构寄存器读出操作数数据的项的情况下,在执行项选择电路54、64的一周期前的周期,判定该项的ID是否是与线程选择电路32所选择的线程的ID相一致的项(S12),该线程选择电路32是选择从寄存器文件进行读出的线程的电路。

当在步骤S12判定为该项ID与所选择的线程的ID相一致的情况下,判定为是具有在下一周期被执行项选择电路54、64选择的可能性的项,并对该项附加标记“1”(S14)。

另一方面,在判定为该项的ID与所选择的线程的ID不一致的情况下,判定为该项是没有在下一周期被执行项选择电路54、64选择的可能性的项,并将该项的标记设为“0”(S16)。

当在步骤S10中判定为是从结构寄存器以外的寄存器更新缓冲器读出执行所需要的操作数数据的情况或是使用立即数的项的情况下,能够与保留站52、62的项的线程无关地进行执行。因此,保留站52、62判定是否是做好执行的准备的项(S18)。

在判定为是做好执行的准备的项的情况下,判定为是具有在下一周期被执行项选择电路54、64选择的可能性的项,对该项附加标记“1”(S14)。

在判定为是尚未做好执行的准备的项的情况下,判定为是没有在下一周期被执行项选择电路54、64选择的可能性的项,对该项附加标记“0”(S16)。

这样,检查保留站52、62所登记的项是否是从寄存器文件读出操作数数据的项,若判定为是进行读出的项则检查是否是选择线程的项,若是选择线程的项则作为具有在下一周期被选择执行的可能性的项来识别。

因此,就能够在下一周期由执行项选择电路54、64选择并执行。据此,即使利用线程ID在先选择了结构寄存器,由于与在下一周期被执行的项一致,而能够平滑地执行同步多线程方式。

若以多级进行这种优先级附加,则可以更快地进行寄存器文件的选择。例如,适合于图4、图8所说明的当前窗口方式。

借助于图7利用项生成电路50、60来说明优先级附加动作。图7是指令被解码且项生成电路50、60在保留站52、62登记新的项的周期的项选择动作。当项生成电路50、60从指令解码器4接受了在保留站52、62创建项的指令时,则检查将要登记的项是否为从结构寄存器读出执行所需要的操作数数据的项(S20)。

在判定为该项是从结构寄存器读出操作数数据的项的情况下,在此周期判定该项的ID是否是与线程选择电路32所选择的线程的ID相一致的项(S22),该线程选择电路32是选择从寄存器文件进行读出的线程的电路。

当在步骤S22中判定为该项ID与所选择的线程的ID相一致的情况下,判定为是具有在下一周期被执行项选择电路54、64选择的可能性的项,并对该项附加标记“1”(S24)。

另一方面,在判定为该项ID与所选择的线程的ID不一致的情况下,判定为该项是没有在下一周期被执行项选择电路54、64选择的可能性的项,并将该项的标记设为“0”(S26)。

当在步骤S20中判定为是从结构寄存器以外的寄存器更新缓冲器读出执行所需要的操作数数据的情况或者是使用立即数的项的情况下,能够与要登记的项的线程无关地进行执行。因此,项生成电路50、60判定是否是做好执行准备的项(S28)。

在判定为是做好执行准备的项的情况下,判定为是具有在下一周期被执行项选择电路54、64选择的可能性的项,并对该项附加标记“1”(S24)。

在判定为是尚未做好执行的准备的项的情况下,判定为是没有在下一周期被执行项选择电路54、64选择的可能性的项,并对该项附加标记“0”(S26)。

这样,项生成电路50、60在向保留站52、62对项进行登记的周期,检查进行登记的项是否是从寄存器文件读出操作数数据的项,若判定为是进行读出的项,则检查是否是选择线程的项,若是选择线程的项则作为具有在下一周期被选择执行的可能性的项来识别。

因此,能够在下一周期被执行项选择电路54、64选择并执行。据此,即使利用线程ID在先选择了结构寄存器,由于与在下一周期被执行的项一致,而能够平滑地执行同步多线程方式。

接着,借助于图5来说明乱序方式的寄存器文件20的结构寄存器的寄存器构成。为每个线程准备的结构寄存器22-0、22-1由巨大的寄存器所构成。

另一方面,此结构寄存器之内的、执行指令所需要的寄存器的地方被限定于为每个线程准备的当前窗口指针(CWP)所指的部分。因此,将从结构寄存器22A复制了当前窗口指针(CWP)所指的寄存器部分而得到的部分,保存在当前窗口寄存器(CWR)22C中。

为了从结构寄存器22A复制到CWR22C,在从结构寄存器22A暂时保存在CWR置换缓冲器(CRB)22B以后保存在CWR22C中。

在当前窗口指针(CWP)的寄存器部分被保存到CWR22C时,在CRB22B中保存当前窗口指针(CWP)的前后1个的寄存器的一个部分。例如,在当前窗口指针CWP=1的情况下,CWR22C保存结构寄存器22A的CWP=1的3个块,CRB22B保存结构寄存器22A的CWP=0之上的两个块或者CWP=2之下的两个块。

为每个线程准备CWR22C和CRB22B,与结构寄存器22A同样地由可以同时进行读出的线程为一个的寄存器文件所构成。

自保留站5、6、7从结构寄存器22读出所需要的操作数数据,包括从CWR22C读出操作数数据。但是,也有时在变更当前窗口指针的指令(例如SAVE、RESTORE指令等)正在执行的期间,从CRB22B读出操作数数据。

相对于巨大的结构寄存器,借助于这种寄存器构成,能够在乱序指令执行方式中提高数据读取的吞吐量,并且能够减少寄存器量(例如、参照日本特开2007-87108号公报)。

在图4中表示这种寄存器文件的构成例中的基于操作数数据的功能执行用的框图。在图4中,与图2、图3、图5所示部件相同的部分用同一记号来表示。

如图4所示,寄存器文件20如图5所说明的那样具有每个线程的结构寄存器22-0A、22-1A、每个线程的CRB22-0B、22-1B和每个线程的CWR22-0C、22-1C。CRB22-0B、22-1B分别具备读出线程选择电路24和读出操作数数据选择电路26。同样地CWR22-0C、22-1C分别具备读出线程选择电路24和读出操作数数据选择电路26。

而且,寄存器读出线程ID缓冲器36的寄存器读出线程ID被提供给CRB22-0B、22-1B、CWR22-0C、22-1C各自的读出线程选择电路24。另外,来自执行项选择电路54的选择项(包含操作数地址)被分别提供给CRB22-0B、22-1B、CWR22-0C、22-1C、寄存器更新缓冲器13、立即数寄存器28和闩锁电路46。

进而,来自执行项选择电路64的选择项(包含操作数地址)被分别提供给CRB22-0B、22-1B、CWR22-0C、22-1C、寄存器更新缓冲器13、立即数寄存器28和闩锁电路40。

因此,按照寄存器读出ID和由执行项选择电路54、64所选择的项,从CWR22-0C、22-1C、CRB22-0B、22-1B、寄存器更新缓冲器13、立即数28之中读出操作数数据。而且,操作数选择电路42、48从这些操作数数据中选择功能的执行所需要的操作数数据,并经由闩锁电路44、49,提供给运算器12或者操作数地址生成器10,并执行由项指定的功能。

在此情况下也是在项的选择周期前选择线程ID,并利用线程ID来选择CRB22-0B或者CRB22-1B的任意一个、CWR22-0C或者22-1C的任意一个,所以能够通过项的选择直接读出所指定的操作数数据。

另外,在从该寄存器更新缓冲器13读出执行所需要的操作数数据的情况下,能够使用寄存器更新缓冲器13的项地址来进行读出。因此,就能够同时读出不同线程的操作数数据。

从而,在保留站5、6的项执行包含将功能的执行所需要的操作数数据从寄存器更新缓冲器13进行读出的项的情况下,与从结构寄存器22-0A(22-1A)进行读出同样地,能够在每周期由执行项选择电路54、64选择已做好执行准备的项,而无需限制于从寄存器文件22进行读出的线程ID。

接着,借助于图8来说明从功能的执行开始到结构寄存器的更新处理。对于基于运算器12和操作数地址生成器10的功能的执行,可以从结构寄存器22-0A、22-1A以外的寄存器更新缓冲器13进行操作数数据读出,或者使用立即数28来执行。

如图8所示那样,寄存器更新缓冲器13是保存通过功能的执行所获得的结果的数据的不能从程序观测的寄存器,能够由线程0和1共享来使用项。

被写入寄存器更新缓冲器13的执行结果数据在寄存器更新缓冲器13上保持,直到所执行的指令完成为止。而且,在指令已完成时(从图1的CSE9已发出指令完成时),进行从寄存器更新缓冲器13读出数据并将数据写入结构寄存器22-0A(22-1A)和CWR22-0C(22-1C)的处理。

对于后续的指令,能够通过从寄存器更新缓冲器13读出操作数数据来进行功能的执行,直到功能的执行的结果被写入结构寄存器22-0A(22-1A)为止(从指令执行直到完成的期间)。

(线程选择电路)

接着,说明上述的用于选择线程的线程选择电路32。图9是线程选择电路32的线程选择方法之说明图,图10是图9的第3选择方法之说明图,图11、图12是图9的第4选择方法之说明图,图13至图15是线程选择电路32之电路图。

如图9所示那样,寄存器读出ID的线程选择电路32的选择方法有四种,若符合此选择条件则决定了下一周期寄存器读出ID。在不符合四种选择条件的情况下,对下一周期的寄存器读出ID选择寄存器读出ID的相反(opposite)的线程(S38)。

首先,第1选择方法判定是否需要限定线程(S30)。此第1选择方法是在线程选择电路32中最优先的选择,在需要限定线程的情况下,线程选择电路32务必选择进行限定的线程。所谓需要限定寄存器的读出线程的情况是指当前窗口指针已被变更时。

即,如图5所说明的那样,在当前窗口指针CWP已被重新变更时,从结构寄存器22A读出存在变更的线程的当前窗口指针和前后指针所指的寄存器部分。

而且,通过写入CRB22B、从CRB22B读出并写入CWR22C,能够准备新的窗口指针的CWR22C。

在从当前窗口指针CWP被变更起直到设成为新的窗口指针状态的寄存器的移动处理过程中,对于进行结构寄存器22A的读出、CRB22B的读出和写入、以及向CWR22C的写入的线程,变更了当前窗口指针的线程被优先。因此,能够进行寄存器文件22读写的线程被限制于变更当前窗口指针的线程。

从而,在寄存器的移动处理过程中,需要使寄存器移动处理过程中的线程和由线程选择电路32选择的线程相一致,该线程选择电路32是选择从寄存器文件22进行读出的线程的电路。此外,寄存器的移动处理被控制成,同时仅一个线程可以进行处理,两个线程无法同时进行处理。

这样,在寄存器移动处理过程中的寄存器文件22的读写线程被限制的期间,以线程选择电路32务必选择与寄存器移动处理过程中的线程相同的线程的方式进行控制。因此,作为保留站的要执行的项的、且为从结构寄存器22读出操作数数据的项,与寄存器移动处理过程中的线程一致。这样,寄存器移动处理过程中的线程选择电路32就以限定于寄存器移动处理过程中的线程进行选择的方式而动作。

另外,在正在执行用于变更当前窗口指针CWP的指令的中途的处理中,在从结构寄存器读出操作数数据的情况下,有时由保留站从CRB22B读出操作数数据,直到当前窗口指针CWP被变更为止。

此时,在相反的线程变更当前窗口指针,读写CRB22B、CWR22C的线程限制当前窗口指针CWP时,线程选择电路32选择正在变更当前窗口指针的线程以使得在从保留站执行变更当前窗口指针的指令的过程中,不会从CRB22B读出操作数数据。

接着,不将线程限定于特定的线程时的线程选择方法有3种。不将线程不限定于特定的线程时的第1选择方法(第2选择方法)是线程选择电路32在正在动作的线程为单一线程时,选择正在动作的线程(S32)。

不将线程限定于特定的线程时的第2选择方法(第3选择方法)是当存在无法发出的项的情况下,选择与无法发出的线程相反的线程的方法(S34)。即、在运算用和主存储操作数地址生成用的保留站52、62的项中至少存在一个可以执行的状态的项时,在相反的线程处于连一个都不能执行的状态时,选择至少存在一个可以执行的状态的线程。

借助于图10,详细地说明第3选择方法。

保留站52、62的项可以执行的状态是指,按线程不同而不同,处于项有效且未实施互锁的状态,或者是尽管项为无效状态但在下一周期项有可能变成有效的状态。

在保留站52、62的项中,具有即便在做好项执行准备的情况下也能够控制成无法执行(互锁)的信息,作为项的一个信号。

一旦设置了此信号,该项就成为无法执行的状态而不会被执行项选择电路54、64选择,若被复位,则可以执行,被执行项选择电路54、64选择。

若检测到线程0的项有效且未实施互锁的状态、或者是尽管项为无效状态但在下一周期项有可能变成有效的状态,则判定是线程1的项有效且未实施互锁的状态、还是尽管项为无效状态但在下一周期项有可能变成有效的状态(S40)。而且,在线程1的项有效且没有互锁,或者项有可能变成有效的情况下(是),不用此第3选择方法进行线程选择。

接着,在线程1的项并非有效、有互锁或者项没有可能变成有效的情况下(否),判定是否已对线程0发出了将线程的项全部清零的信号,对于已发出了进行清零的信号的线程0,不用此选择电路进行线程选择(S42)。在未对线程0发出清零信号的情况下,选择线程0。

反之,若检测到线程1的项有效且未实施互锁的状态、或者尽管项为无效状态但在下一周期项有可能变成有效的状态,则判定是线程0的项有效且未实施互锁的状态、还是尽管项为无效状态但在下一周期项有可能变成有效的状态(S42)。而且,在线程0的项有效且没有互锁或者项有可能变成有效的情况下(是),不用此第3选择方法进行线程选择。

接着,在线程0的项并非有效、有互锁或者项没有可能变成有效的情况下(否),判定是否对线程1发出了将线程的项全部清零的信号,对于已发出了进行清零的信号的线程1,不用此选择电路进行线程选择(S46)。在未对线程1发出清零信号的情况下,选择线程1。

返回到图9,不将线程限定于特定的线程时的第3选择方法(第4选择方法)是如图11所示那样,在检测出等待执行且处于无法在一定期间完成的状态的指令时,在该无法完成状态的指令存在于保留站的项的情况下,以一定间隔由线程选择电路32选择无法完成状态的指令的线程(S36)。该选择电路在两个线程进行动作时有效。

借助于图12详细地进行说明。检测与最后完成的指令的线程相反的线程是否处于在一定期间连一条指令都无法完成的状态(S50、S52)。在未检测出的情况下(否),不用此方法进行线程选择。

另一方面,在检测出时(是),判定是否是后述的线程ID的操作期间,如果不是操作期间则不用此方法进行线程选择(S54)。

反之,如果是操作期间,则判定运算用的保留站的有效的项的指令标识符、与无法完成状态的指令的指令标识符相一致的项是否存在于保留站的项中(S56)。

如果存在,则在未发出清零信号的条件下,由线程选择电路选择无法完成状态的指令的线程(S58、S60)。

进而,在这一状态下,对于由线程选择电路选择的线程,如图11所示那样,以一定间隔选择线程。在线程选择期间中,以由线程选择电路32进行选择的方式动作,在不是线程选择期间中时,不进行线程选择(S54)。

在发出了将按线程不同所区分的线程的项全部进行清零的信号的情况下,对于已发出进行清零的信号的线程,不用此选择电路进行线程选择(S58、S60)。

上述的线程选择电路32由逻辑电路构成。图15的电路是实现第4选择方法的电路,其输出为图14电路的输入。图14的电路是实现第3选择方法的电路,其输出为图13电路的输入。图13的电路是实现第1、第2选择方法的电路,并输出最终的线程选择ID(THREAD_ID)。

图13的最终级的电路具有输出AND(与)门320、单输入反相型AND门322、单输入反相型、输出反相型AND门324、和一对OR(或)门326、328。

在图13中,+FORCE_THREAD_0、+FORCE_THREAD_1是表示寄存器移动处理中的信号,表示需要限定线程的情况。若此信号为ON,则利用OR门326、328的输出和此信号,从AND门322、324,由线程选择电路32选择成为ON的线程。即,执行在图9的步骤S30中说明的第1选择方法。此外,这2个信号不会同时变成ON。

另外,在图13中,+THREAD_0_ONLY_ACTIVE、+THREAD_1_ONLY_ACTIVE是表示以单一线程方式动作时进行动作的线程的信号。此外,这2个信号不会同时变成ON。若此信号成为ON,则从OR门326或者328、和AND门322、324,由线程选择电路32选择已成为ON的线程。图9的步骤S32的第2选择方法得以执行。

此外,在图13的电路中,+RS_VALID_NOT_INTLCK_THREAD_0_ONLY信号和+RS_VALID_NOT_INTLCK_THREAD_1_ONLY信号是图14的第3选择方法的输出,+RSE_COMP_WAIT_THREAD_0和+RSE_COMP_WAIT_THREAD_1是图15的第4选择方法的输出。

接着,实现图14的第3选择方法的电路具有一对单输入反相型AND门330、332、一对单输入反相型AND门334、336和一对OR门338、340。

在图14中,+RSE_VALID_NOT_INTLCK_OR_THREAD_0是表示在运算用保留站的项中至少存在一个是线程0的有效项且没有互锁的项的信号。

另外,+RSA_VALID_NOT_INTLCK_OR_THREAD_0是表示在主存储操作数地址生成用保留站的项中至少存在一个是线程0的有效项且没有互锁的项的信号。

进而,+IWR_VALID_OR_THREAD_0是表示由指令解码器对线程0的指令进行解码的信号。若它们之中的某一个信号为ON,则由OR门338表示在保留站的线程0的项中存在能够执行的项。

而且,当来自OR门340的线程1的这一信号为OFF时,在表示将线程0的项清零的信号+CLEAR_PIPELINE_THREAD_0为OFF时,经由AND门334从AND门330输出+RS_VALID_NOT_INTLCK_THREAD_0_ONLY,并输入图13的OR门328。因此,图13的电路选择线程0。

在选择线程1的情况下也是同样的电路构成。即,+RSE_VALID_NOT_INTLCK_OR_THREAD_1是表示在运算用保留站的项中至少存在一个是线程1的有效项且没有互锁的项的信号。

另外,+RSA_VALID_NOT_INTLCK_OR_THREAD_1是表示在主存储操作数地址生成用保留站的项中至少存在一个是线程1的有效项且没有互锁的项的信号。

进而,+IWR_VALID_OR_THREAD_1是表示由指令解码器对线程1的指令进行解码的信号。若它们之中的某一个信号为ON,则由OR门340表示在保留站的线程1的项中存在能够执行的项。

而且,当来自OR门338的线程0的这一信号为OFF时,在表示将线程1的项清零的信号+CLEAR_PIPELINE_THREAD_1为OFF时,经由AND门336从AND门332输出+RS_VALID_NOT_INTLCK_THREAD_1_ONLY,并输入图13的OR门326。因此,图13的电路选择线程1。

接着,图15表示用于实现第4选择方法的选择线程0的电路。图15的电路由项存在检测电路348-1~348-n、OR门344、AND门346、单输入反相型AND门342构成。

项存在检测电路348-1包括:一致电路350-1,检测表示接下来完成的指令的指令标识符的信号+CSE_OUT_PTR_THREAD_0、和表示运算用的保留站的第0个项的指令标识符的信号+RSE_0_IID的一致性;AND门352-1,进行表示运算用保留站的第0个项对线程0有效的信号+RSE_0_VALID_THREAD_0和一致电路350-1的输出的与(AND)的运算。

从而,在项存在检测电路348-1的输出为ON时,表示线程0的先行指令存在于运算用的保留站。将此存在检测电路分开设置了运算用的保留站的项n个,在某个项已成立的情况下,通过OR门344输出表示线程0的先行指令存在于运算用的保留站的信号。

另一方面,在AND门346上输入表示最后完成的指令的线程为线程1的信号+LAST_COMMIT_THREAD_ID_1、表示先行指令为运算等待状态的信号+TOQ_EU_COMP_WAIT_THREAD_0、表示一定期间线程0的指令尚未完成的信号+WARNING_TO_COMMIT_THREAD_0、表示是由线程选择电路进行选择的期间的信号+RSE_COMP_WAIT_MODE。

在这些所有输入信号为ON、且表示进行清零的信号的+CLEAR_PIPELINE_THREAD_0为OFF时,如果从OR门344输出了表示线程0的先行指令存在于运算用的保留站的信号,则由AND门342确定了+RSE_COMP_WAIT_THREAD_0信号。

此信号输入图13的OR门328,并由图13的电路选择线程0。

此外,图15仅仅表示线程0的选择电路,但是在选择线程1的情况下也是同样的选择电路。

进而,在没有选择了上述所列举的4个种类中的某个模式的线程的情况下,如在图9的步骤S38所说明的那样,由于同时动作的线程为2个线程,所以将与寄存器读出ID表示的线程相反的线程设为下一周期寄存器读出ID。

在图13的电路中,通过对用于选择线程1侧的进行逻辑或的OR门326输入将表示寄存器读出ID的信号+GPR_READ_THREAD_ID的极性反转后的信号,在上述的所有条件都不成立的情况下,下一周期寄存器读出ID就能够选择寄存器读出ID的相反线程。

(他的实施方式)

在上述的实施方式中以两个线程(线程0和1)同时动作的同步多线程方式进行了说明,但是也能够应用于3个以上的线程同时动作的情况。同样地虽然以图5的基于当前窗口指针的分割寄存器构成说明了结构寄存器,但是也能够应用于其他构成。

以上,通过实施方式说明了本发明,在本发明精神的范围内,本发明可以进行各种各样变形,并非将它们从本发明的范围内排除。

工业上的可利用性

在使多个线程以同步多线程方式动作的情况下,对每个线程准备结构寄存器,并在从寄存器文件读出功能的执行所需要的操作数数据时,预先选择好从寄存器文件进行读出的线程,所以就可以在较早的阶段进行结构寄存器的选择。虽然增加了用于选择结构寄存器的部分的电路,但是对于电路的布线量来说,通过选择进行读出的线程的结构寄存器可以削减。

另外,在由保留站的项从结构寄存器以外读出操作数数据的情况下,与从结构寄存器进行读出的情况不同,可以使所有线程同时进行读出,并可以不被同时进行读出的线程所限制地读出。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号