CN102112965B - 运算处理装置 - Google Patents
运算处理装置 Download PDFInfo
- Publication number
- CN102112965B CN102112965B CN200880130631.8A CN200880130631A CN102112965B CN 102112965 B CN102112965 B CN 102112965B CN 200880130631 A CN200880130631 A CN 200880130631A CN 102112965 B CN102112965 B CN 102112965B
- Authority
- CN
- China
- Prior art keywords
- register
- window
- group
- local
- register group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在采用寄存器窗口方式的运算处理装置中,构成为通过当前窗口选择和寄存器选择两个阶段来控制寄存器文件的读取部分,且将在多个读取端口选择的寄存器针对各端口预先设定为能够进行乱序执行。由此,不必设置临时存储器就能够向运算部进行数据读取,且能够进行窗口切换命令的后续命令的乱序执行。
Description
技术领域
本发明涉及具有寄存器窗口方式的寄存器文件的运算处理装置。本发明包含不使用用于从寄存器文件高速读取的临时存储元件而实现从寄存器进行高速读取的运算处理装置及其方法。
背景技术
RISC(Reduced Instruction Set Computer)架构的处理器(以下,称为RISC处理器),以寄存器-寄存器运算为中心,通过减少存储器访问来实现处理的高速化。其被称为加载存储架构。RISC处理器为了有效地进行上述寄存器-寄存器运算而具有大容量的寄存器文件。作为该寄存器文件,已知有以减少子程序调用时的变量的传递(变量的保存/复原)的溢出的方式构成的寄存器窗口方式的寄存器文件。
图1是表示寄存器窗口方式的寄存器文件的构成的图。
图1所示的寄存器文件1000具有一个寄存器窗口W global和8个寄存器窗口W0~W7,在这些窗口中,寄存器窗口W0~W7在逻辑上呈环状连结。各寄存器窗口Wk(k=0~7)分别具有Wk out,Wk in,以及Wk local这三种段。这三种段都由8个寄存器构成。Wk local具有各寄存器窗口固有的8个本地寄存器。Wk in具有8个in寄存器(输入寄存器),Wk out具有8个out寄存器(输出寄存器)。此外,W global具有在全部子程序中共享的8个全局寄存器。
Wk out用于向子程序调用的子程序传递变量,Wk in用于从调用了子程序的母程序取得变量。在寄存器文件1000中,Wk in和Wk+1 out、以及Wk out和Wk-1 in重叠构成,因此在调用子程序时,能够确保变量的传递和为此使用的寄存器的高速化。Wk local作为各子程序、即被母程序调用的子程序进行操作用的寄存器组使用。
各子程序在执行时使用8个寄存器窗口W0~W7中的任意一个。在此,执行中的子程序使用的寄存器窗口Wk(被称为当前窗口),在每次发生子程序调用时向右(用“SAVE(保存)”表示的虚线的箭头方向)旋转两个上述段,在子程序复原时向左(用“RESTORE(复原)”表示的虚线的箭头方向)旋转两个上述段。
在寄存器文件1000中,各寄存器窗口Wk通过分配给各自的寄存器窗口编号(以下,称为窗口编号)进行管理。给寄存器窗口Wk分配窗口编号k。执行中的子程序所使用的寄存器窗口Wk的窗口编号k被CWP(Current Window Pointer:当前窗口指针)保持。CWP的值通过SAVE(保存)命令的执行或陷井(trap)发生而加1,通过RESTORE(复原)命令的执行或利用RETT命令从陷井返回而减1。在图1中CWP的值是“0”,CWP指定寄存器窗口W0。这样,在本说明书中,将使CWP的值增减来切换当前窗口的命令称为“窗口切换命令”。
图1所示的寄存器文件1000具有1个窗口W global。W global是储存在全部程序中共享的数据的寄存器组。
各寄存器窗口Wk具有24个(=8×3)寄存器,寄存器窗口W global具有8个寄存器。在这些寄存器中,Wk in和Wk out寄存器重叠64个(=8×8),因此寄存器文件1000具有的寄存器的总数为136个(=24×8+8-64)。为了使处理器的运算器执行子程序,必须使寄存器文件1000的全部寄存器能够读写数据。
在这种情况下,从这样大的寄存器文件1000读取数据的电路的规模和速度都成为问题。为了解决该问题,提案了如图2所示那样构成的运算处理装置。
图2所示的运算处理装置2000具有主寄存器文件2001(以下记载为MRF)工作寄存器文件2002(以下记载为WRF)以及运算部2003,控制部2004。
一般来说,对于寄存器窗口方式的寄存器文件,若寄存器窗口数增加,则具备的寄存器的数量也变多,从而很难向运算器高速地提供操作数。因此,除了保持全部窗口的寄存器文件即MRF2001以外,将WRF2002保持为用于保持由指针CWP表示的MRF2001中的一个窗口的拷贝的MRF2001的子组,并利用该WRF2002来进行数据的读取。WRF2002仅 保持由指针表示的窗口的拷贝。由于WRF2002与MRF2001相比较小,因此在从控制部2004供给读取的地址即READ ADDRESS来进行读取的情况下,能够使数据读取高速化。
运算部2003具备针对MRF2001的重命名寄存器ROB2005,进行运算结果的重命名。并且,在提交时从ROB2005向MRF2001、WRF2002写回运算结果。
如以上所述,提案了如图2所示那样构成的运算处理装置,但是这样构成时,设置保持MRF中的一个窗口的复制的MRF的子组这一点需要耗费硬件成本。并且,在MRF和WRF之间进行转送需要消耗功率。
此外,在具备有乱序(out-of-order)执行功能的处理器的情况下,命令的执行顺序不限于程序的顺序,可以从能够处理的命令开始执行。因此,还要求越过寄存器窗口切换命令来实现命令的执行顺序更换。
专利文献1:日本特开平5-282147号公报“寄存器文件”
发明内容
因此,本发明的课题在于,在采用寄存器窗口方式的运算处理装置中降低与寄存器读取相关的硬件成本,以及消除工作缓存与缓存之间的转送所消耗的功率。此外,在具有乱序执行功能的运算处理装置的情况下,需要越过寄存器窗口切换命令来实现命令的执行顺序更换。
在本发明中,构成为通过当前窗口选择和寄存器选择两个阶段来控制MRF的读取部分。并且构成为,将在寄存器的读取端口所选择的寄存器针对各端口预先设定为能够进行乱序执行。由此,不用具有临时存储器、即WRF也能够高速地向运算部进行数据读取,并且也能够进行窗口切换命令的后续命令的乱序执行。
根据本发明,能够在基本保持以往的性能的同时降低WRF的硬件部分的成本。并且,能够实现通过不使用WRF导致的消耗功率的减少、以及通过消除MRF-WRF间的数据转送导致的消耗功率的减少。
附图说明
图1是表示寄存器窗口方式的寄存器文件的构成例的图。
图2是表示采用寄存器窗口方式的运算处理装置的以往的构成例的图。
图3是表示本实施方式中的采用寄存器窗口方式的运算处理装置的构成的图。
图4是说明寄存器窗口系统的一般构成的图。
图5是表示寄存器窗口系统的改进构成例的图。
图6是说明在流水线中进行乱序处理的位置的图。
图7是表示SAVE(保存)命令前后的命令执行流水线的一个例子的图。
图8是表示读取时各端口的分配的图。
图9是表示以往的寄存器窗口系统的具体构成例的图。
图10是表示本实施方式的寄存器窗口系统的具体构成例的图。
图11是表示本实施方式的信息处理装置的构成的图。
具体实施方式
下面参照附图说明在具有寄存器窗口方式的寄存器文件的运算处理装置中,实现从寄存器进行高速读取的实施方式的一个例子。
图3表示采用寄存器窗口方式的本实施方式的运算处理装置的构成。
运算处理装置0具有主寄存器文件(MRF)1、运算部3和控制部 4。与图2的运算处理装置2000相比,图3所示的运算处理装置0被构成为不具备作为临时存储器的WRF2002。此外,运算部3具有的ROB(重命名寄存器)5在进行运算结果的重命名的部分中,在提交时向MRF1写回运算结果(write)。
在图3中,将MRF1的读取部分分为当前窗口选择和寄存器选择两个阶段进行控制。当前窗口选择通过从控制部4输出的WINDOW_ADDRESS(窗口地址)信号进行控制。WINDOW_ADDRESS信号是基于CWP(Current Window Pointer)的值的信号。此外,寄存器选择通过从控制部4输出的READ_ADDRESS(读取地址)信号进行控制。
并且,如后述那样,将寄存器读取端口选择的寄存器预先设定为能够进行乱序执行。由此,在本实施方式中不设置临时存储器也能够向运算部3进行高速的数据读取,并且,能够进行SAVE命令,RESTORE命令的后续命令的乱序执行。
这样在本实施方式中,由于不需要WRF,因此能够减少其相应的硬件成本。此外,能够实现基于WRF的消耗功率的减少,以及因在MRF-WRF间不需要进行转送而导致的消耗功率的减少。
下面更详细地说明运算处理装置0的构成。
如图1所示那样,MRF1的寄存器具有8个窗口,该8个窗口分别具有各具备8个寄存器的Wk local、Wk in、Wk out(k=0~7),此外MRF1的寄存器还具有与它们不同的、具有8个寄存器的W global。W global寄存器在全部的窗口是共用的,对窗口切换没有影响,故在以下的说明中省略。
图4表示寄存器窗口的构成。作为寄存器窗口的特征,例如k=1的W1 in是与k=0的W0 out相同的。因此,在本实施方式中,如图5所示那样不安装Wk in寄存器,而是安装Wk local寄存器和Wk out寄存器。
图6表示在对命令进行流水线处理时进行乱序处理的位置。如图6所示那样,在执行命令时执行Fetch(F)(取得),Decode(D)(解码), Dispatch(P)(分派),Buffer read(B)(缓存读取),Execute(x)(执行),Update buffer(U)(更新缓存),Commit(W)(提交)的各处理。如图6所示那样,在Dispatch(P),Buffer Read(B),Execute(X),Update Buffer(U)处进行乱序处理(OOO)。
图7表示在CWP=1的命令,SAVE命令,以及CWP=1的命令后续的CWP=2的命令被乱序执行时各命令的关系。如图7所示那样,为了进行乱序执行,在SAVE命令实际执行中的期间,即,在SAVE命令的执行处理中从Dispatch(图示“P”)到Update buffer(图示“U”)的处理正在被执行的期间,必须读取与当前的CWP对应的寄存器群(图7中CWP=1)以及与当前的CWP的下一个CWP对应的寄存器群(图7中CWP=2)的数据。
更具体地说,在CWP=1的命令中读取的寄存器群是W global、W1 local、W1 out、W1 in(W0 out),在CWP=2的命令中读取的寄存器群是W global、W2 local、W2 out、W2 in(W1 out),因此为了进行SAVE命令的后续命令的乱序执行,需要寄存器群W global、W2 local、W2 out、W1 local、W1 out、W0 out是能够读取的。
此外,在将SAVE命令变成RESTORE命令来执行时,与图7同样,CWP=1的命令和RESTORE命令、后续的CWP=0的命令为了进行乱序执行,必须能够读取在CWP=1时读取的寄存器群即W global、W1 local、W1 out、W1 in(W0 out)和、在CWP=0时读取的寄存器群即W global、W0 local、W0 out、W0 in(W7 out)。也就是说,在该状况下,需要W global、W1 local、W1 out、W0 local、W0 out、W7 out是能够读取的。
根据以上的说明可知,为了能够进行乱序执行,作为从MRF1读取寄存器的第1阶段的端口必须是6个端口。下面,将这些端口设为G_PORT(global)、L_PORT0、L_PORT1、OUT_PORT0、OUT_PORT1、OUT_PORT2。分别向G_PORT分配全局寄存器群,向L_PORT分配本地寄存器群,向OUT_PORT分配输出寄存器群。
并且,例如在执行CWP=1的命令的后续的SAVE命令时,向G_PORT分配W global寄存器群,向L_PORT0分配W2 local寄存器 群,向L_PORT1分配W1 local寄存器群,向OUT_PORT0分配W0 out寄存器群,向OUT_PORT1分配W1 out寄存器群,向OUT_PORT2分配W2 out寄存器群。
归纳可知,根据CWP的值将向各端口的读取寄存器群如图8所示那样地对应即可。
在图8中,例如“W7/W1”那样的用斜线隔开的表述表示,在执行RESTORE命令时的乱序执行中分配“W7”寄存器群,在执行SAVE命令时的乱序执行中分配“W1”寄存器群。
在图8中举例说明了当前的CWP是CWP=0且接着执行RESTORE命令时的乱序执行,由于向L_PORT0以及L_PORT1分配本地寄存器群,因此W0 local以及W7 local的各本地寄存器群被分别分配,由于向OUT_PORT0、OUT_PORT1、以及OUT_PORT2分配输出寄存器群,因此W0 out、W7 out、W6 out的各输出寄存器群被分别分配。
另一方面,举例说明了当前的CWP是CWP=0且接着执行SAVE命令时的乱序执行,向L_PORT0以及L_PORT1分别分配W0 local以及W1 local的各本地寄存器群,向OUT_PORT0、OUT_PORT1、以及OUT_PORT2分别分配W0 out、W7 out、W1 out的各输出寄存器群。根据以上的说明,在作为从MRF1读取寄存器的第1阶段的当前窗口选择中,能够根据被表示为下面的规则1~规则6的动作算法来分配根据WINDOW_ADDRESS信号由各寄存器的读取端口选择的寄存器。另外,设定窗口具有0、1、2、…、2n、2n+1个寄存器窗口(“n”是任意的自然数)。此外,CWP=2n+1的下一个(CWP=2n+2)回归CWP=0。
规则1 CWP=2n时(SAVE·RESTORE命令执行中以外):
L_PORT0=W2n local
L_PORT1=*(没有关系的意思)
OUT_PORT0=W2n out_
OUT_PORT1=W(2n-1)out
OUT_PORT2=*(没有关系的意思)
规则2CWP=2n+1时(SAVE·RESTORE命令执行中以外):
L_PORT0=*(没有关系的意思)
L_PORT1=W(2n+1)local
OUT_PORT0=W2n out
OUT_PORT1=WP(2n+1)out
OUT_PORT2=*(没有关系的意思)
规则3CWP=2n时(SAVE命令执行中):
L_PORT0=W2n local
L_PORT1=W(2n+1)local
OUT_PORT0=W2n out
OUT_PORT1=W(2n-1)out
OUT_PORT2=W(2n+1)out
规则4CWP=2n+1时(SAVE命令执行中):
L_PORT0=W(2n+2)local
L_PORT1=W(2n+1)local
OUT_PORT0=W2n out
OUT_PORT1=W(2n+1)out
OUT_PORT2=W(2n+2)out
规则5CWP=2n时(RESTORE命令执行中):
L_PORT0=W2n local
L_PORT1=W(2n-1)local
OUT_PORT0=W2n out
OUT_PORT1=W(2n-1)out
OUT_PORT2=W(2n-2)out
规则6CWP=2n+1时(RESTORE命令执行中):
L_PORT0=W2n local
L_PORT1=W(2n+1)local
OUT_PORT0=W2n out
OUT_PORT1=W(2n+1)out
OUT_PORT2=W(2n-2)out
根据以上规则1~6可知,在各端口的读取处理中,从W(2n)local的寄存器群中任选一个分配给L_PORT0,从W(2n+1)local的寄存器群中任选一个分配给L_PORT1。此外,从W(2n)out的寄存器群中任选一个分配给O_PORT0,从W(2n+1)out的寄存器群中任选一个分配给O_PORT1,从W(2n)out或者W(2n+1)out的寄存器群中任选一个分配给O_PORT2即可。并且,在各寄存器读取端口,根据基于CWP的值的WINDOW_ADDRESS信号,以及SAVE命令、RESTORE命令分别是否在执行中来选择读取的寄存器即可。
下面对比基于上述的寄存器分配的原理的本实施方式的具体构成与以往构成来进行说明。图10表示图3所示的本实施方式的运算处理装置0中的寄存器窗口系统的构成例,图9表示以往的寄存器窗口系统的构成例。
在图10所示的本实施方式的寄存器窗口系统的构成例中,在从由W0 local、W2 local、W4 local、W6 local表示的四个本地寄存器群输出的8个寄存器值构成的各组中,通过选择器904选择其中一组,并输出给L_PORT0端口。
在从由W1 local、W3 local、W5 local、W7 local表示的四个本地寄存器群输出的8个寄存器值构成的各组中,通过选择器905选择其中一组,并输出给L_PORT1端口。
在从由W0 out、W2 out、W4 out、W6 out表示的四个本地寄存器群输出的8个寄存器值构成的各组中,通过选择器905选择其中一组,并输出给OUT_PORT0端口,此外,通过选择器905以及907选择其中一组,并输出给OUT_PORT2端口。
在从由W1 out、W3 out、W5 out、W7 out表示的四个本地寄存器群输出的8个寄存器值构成的各组中,通过选择器906选择其中一组,并输出给OUT_PORT1端口。此外,通过选择器906以及907选择其中一组,并输出给OUT_PORT2端口。
从由GL表示的全局寄存器群输出的8个寄存器值构成的组被输出给G_PORT端口。
在输出给L_PORT0、L_PORT1、OUT_PORT0、OUT_PORT1、OUT_PORT2、以及G_PORT这6个端口的、分别由8个寄存器值构成的合计8×6=48个寄存器值中,通过选择器908选择一个寄存器值,作为READ_DATA(读取数据)输出。此外,选择器908中的“48:1”的意思是从48个寄存器值中选择输出1个寄存器值。
在图10所示的本实施方式的寄存器窗口系统的构成中,根据基于CWP的值的WINDOW_ADDRESS信号、以及SAVE命令或者RESTORE命令的执行状态,按照上述的规则1~6的动作算法,选择器903~907以选择各寄存器群输出的方式进行动作。该动作算法能够通过简单的逻辑电路构成。并且,提供给选择器908的READ_ADDRESS信号可以是使从48个寄存器值中选择1个寄存器值的信号。此外,WRITE_ADDRESS(写入地址)信号控制选择器902来将WRITE_DATA(写入数据)写入各寄存器群。
这样,在本实施方式中,在WINDOW_ADDRESS信号或被MRF901保持的数据不变的情况下,通过基于WINDOW_ADDRESS信号和READ_ADDRESS信号的简单的地址指定,能够进行高速的数据读取。 与下面说明的图9的以往构成比较,能够减少与不需要的工作寄存器文件(WRF)相应的硬件量。但是,在WINDOW_ADDRESS信号或MRF901所保持的数据变化了的情况下,可以构成为,通过从图3所示的ROB5进行读取来对应。
接着,在图9所示的以往的寄存器窗口系统的构成例中,主寄存器文件(MRF)1001具有由W0 local~W7 local表示的8个本地寄存器群、由W0 out~W7 out表示的8个输出寄存器群、和由GL表示的全局寄存器群。此外,8个输入寄存器群W0 in~W7 in被分别与8个输出寄存器群W7 out、W0 out~W6 out共享。
另一方面,工作寄存器文件(WRF)1002具有:在MRF1001中的某个CWP值上分别保持从MRF1001输出的所选择的1组全局寄存器群的8个寄存器值、所选择的1组本地寄存器群的8个寄存器值、所选择的1组输入寄存器群(=输出寄存器群)的8个寄存器值、以及所选择的1组输出寄存器群的8个寄存器值的G寄存器群1005、L寄存器群1006、IN寄存器群1007、以及OUT寄存器群1008;临时保持来自MRF1001的本地寄存器群W0 local~W7 local或者全局寄存器群GL的其中一个的当前的8个寄存器输出值的G/L寄存器群1003;同样地临时保持来自MRF1001的输出寄存器群W0 out~W7 out的其中一个的当前的8个寄存器输出值的IO寄存器群1004;选择G/L寄存器群1003、IO寄存器群1004、或者WRITE_DATA(写入数据)并将其保持在1005~1008的寄存器群中的选择器1009;选择寄存器群1003~1008的6个寄存器群,即,6×8=48个寄存器群中的1个寄存器值作为READ_DATA(读取数据)输出的选择器1010。此外,选择器1010中的“48:1”的意思是从48个寄存器群中选择1个寄存器。
在具有上述构成的图9的以往的寄存器窗口系统中,在进行读取动作时,与MRF1001中的当前的CWP值对应的读取数据,在从MRF1001中的各寄存器群输出后,经由G/L寄存器群1003、IO寄存器群1004以及选择器1009一直保持在WRF1002内的寄存器群1005~1008中。此外,在进行写入动作时,MRF1001中的当前的写入数据,经由MRF1001中的选择器1009被保持在WRF1002内的寄存器群1005~1008中。因此,作为READ_ADDRESS,仅将选择上述寄存器 群1005~1008、或1003、1004的其中一个的地址信号提供给选择器1010,就能够将当前的CWP指示的数据作为READ_DATA高速地读取。此外,考虑乱序执行等,将选择器1010构成为,也能够选择当前的MRF1001的输出、即寄存器群1003以及1004的输出。
在图9所示的以往的寄存器窗口系统的构成例中,除了MRF1001之外还具备WRF1002,由此实现了高速的数据读取,但是如上述那样存在增加了用于WRF1002的硬件构成的问题点。
以上,如果比较图10所示的本实施方式的构成和图9所示的以往例的构成,则本实施方式的优越性很明显。
到此,详细地说明了本实施方式的运算处理装置0的构成。如上述那样,在本实施方式的运算处理装置0中,用两个阶段控制图3的MRF1的读取部分。该两个阶段包括根据CWP的值、即当前窗口的编号进行选择的当前窗口选择(WINDOW_ADDRESS)的阶段、和通过相当于读取地址的READ_ADDRESS来选择读取寄存器的阶段。在当前窗口选择中,利用以下端口进行寄存器的选择:根据当前窗口编号从窗口编号是偶数的本地寄存器群选择寄存器的第一本地寄存器读取端口(L_PORT0)、根据当前窗口编号从窗口编号是奇数的本地寄存器群选择寄存器的第二本地寄存器读取端口(L_PORT1)、根据当前窗口编号从窗口编号是偶数的输出寄存器群选择寄存器的第一输出寄存器读取端口(OUT_PORT0)、根据当前窗口编号从窗口编号是奇数的输出寄存器群选择寄存器的第二输出寄存器读取端口(OUT_PORT1)、根据当前窗口编号从输出寄存器群选择寄存器的第三输出寄存器读取端口(OUT_PORT2)。
根据这样的构成,本实施方式的运算处理装置不使用作为临时存储器的WRF也能够实现从寄存器的高速读取,并且能够进行窗口切换命令的后续命令的乱序执行。
由此,能够减少WRF的硬件部分的成本。此外,能够通过不使用WRF来减少消耗功率,以及,能够通过消除MRF-WRF间的数据转送来减少消耗功率。
以上参照附图说明了本实施方式的一个例子,但是本发明也可以构成为包含上述的运算处理装置的信息处理装置。
图11表示信息处理装置的构成的一个例子。信息处理装置110具有包含运算单元112,存储器111,命令控制单元113,高速缓存115的高速缓存控制单元114。上述的运算处理装置0与运算单元112对应。图3所示的控制部4与运算控制部116对应,运算部3与运算部118对应,MRF1与寄存器部117对应。
信息处理装置110通过采用上述的运算处理装置0来构成,从而能够降低硬件成本,并且能够减少消耗功率。
如以上所述,针对本发明的实施方式的一个例子进行了详细说明,但是本发明不限定于此,在不脱离本实施方式的要旨的范围内可以进行各种变形。
Claims (3)
1.一种运算处理装置,其特征在于,具备:
运算部,其进行运算处理;
寄存器文件,其具备:K个寄存器窗口,该K个寄存器窗口分别具备N个寄存器,各窗口分别和两相邻的窗口共享一部分寄存器,并且将该共享的寄存器用于子程序调用时的变量的传递;当前窗口选择单元,其在从所述寄存器文件读取寄存器值时,根据从控制部输出的、且基于当前窗口指针的窗口地址信号,选择所述K个窗口中的一个作为当前窗口;和寄存器选择单元,其根据读取地址从选择的所述当前窗口的N个寄存器中选择读取寄存器;
控制部,其输出用于在所述寄存器文件中的当前窗口选择单元中选择窗口的窗口地址信号,
所述当前窗口选择单元具备:
第一本地寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从作为所述子程序的操作用寄存器的本地寄存器中的窗口编号是偶数的本地寄存器群中选择第一本地寄存器群;
第二本地寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从作为所述子程序的操作用寄存器的本地寄存器中的窗口编号是奇数的本地寄存器群中选择第二本地寄存器群;
第一输出寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从调用所述子程序时用于传递变量的输出寄存器中的窗口编号是偶数的输出寄存器群中选择第一输出寄存器群;
第二输出寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从调用所述子程序时用于传递变量的输出寄存器中的窗口编号是奇数的输出寄存器群中选择第二输出寄存器群;和
第三输出寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从所述偶数的输出寄存器群和所述奇数的输出寄存器群中选择第三输出寄存器群,
所述寄存器选择单元根据所述读取地址,从所选择的所述第一本地寄存器群、所选择的所述第二本地寄存器群、所选择的所述第一输出寄存器群、所选择的所述第二输出寄存器群、以及所选择的所述第三输出寄存器群中选择一个所述读取寄存器。
2.一种信息处理装置,其特征在于,具有运算处理装置,该运算处理装置具有:
运算部,其进行运算处理;
寄存器文件,其具备:寄存器窗口,其在由多个寄存器构成的寄存器文件中将该寄存器文件分割成分别具有N个寄存器的K个窗口,各窗口分别和两相邻的窗口共享一部分寄存器,并且将该共享的寄存器用于子程序调用时的变量的传递;当前窗口选择单元,其在从所述寄存器文件读取寄存器值时,根据从控制部输出的、且基于当前窗口指针的窗口地址信号,选择所述K个窗口中的一个作为当前窗口;寄存器选择单元,其根据读取地址从选择的所述当前窗口的N个寄存器中选择读取寄存器;
控制部,其输出用于在所述寄存器文件中的当前窗口选择单元中选择窗口的窗口地址信号,
所述当前窗口选择单元具备:
第一本地寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从作为所述子程序的操作用寄存器的本地寄存器中的窗口编号是偶数的本地寄存器群中选择第一本地寄存器群;
第二本地寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从作为所述子程序的操作用寄存器的本地寄存器中的窗口编号是奇数的本地寄存器群中选择第二本地寄存器群;
第一输出寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从调用所述子程序时用于传递变量的输出寄存器中的窗口编号是偶数的输出寄存器群中选择第一输出寄存器群;
第二输出寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从调用所述子程序时用于传递变量的输出寄存器中的窗口编号是奇数的输出寄存器群中选择第二输出寄存器群;和
第三输出寄存器读取端口,其根据SAVE命令或者RESTORE命令是否在执行中以及所述窗口地址信号,从所述偶数的输出寄存器群和所述奇数的输出寄存器群中选择第三输出寄存器群,
所述寄存器选择单元根据所述读取地址,从所选择的所述第一本地寄存器群、所选择的所述第二本地寄存器群、所选择的所述第一输出寄存器群、所选择的所述第二输出寄存器群、以及所选择的所述第三输出寄存器群中选择一个所述读取寄存器。
3.一种寄存器文件的读取方法,其特征在于,该寄存器文件具备寄存器窗口,其在由多个寄存器构成的寄存器文件中将该寄存器文件分割成分别具有N个寄存器的K个窗口,各窗口分别和两相邻的窗口共享一部分寄存器,并且将该共享的寄存器用于子程序调用时的变量的传递,
该读取方法通过以下步骤读取寄存器:
第一步骤,在从所述寄存器文件读取寄存器值时,根据从控制部输出的、且基于当前窗口指针的窗口地址信号,选择所述K个窗口中的一个作为当前窗口;
第二步骤,从选择的所述当前窗口的N个寄存器中,根据读取地址选择读取寄存器,
在所述第一步骤中,将用于分别识别所述K个窗口的窗口编号中的一个选择为当前窗口编号;
根据SAVE命令或者RESTORE命令是否在执行中以及所述当前窗口编号,在第一本地寄存器读取端口,从作为所述子程序的操作用寄存器的本地寄存器中的窗口编号是偶数的本地寄存器群中选择第一本地寄存器群;
根据SAVE命令或者RESTORE命令是否在执行中以及所述当前窗口编号,在第二本地寄存器读取端口,从作为所述子程序的操作用寄存器的本地寄存器中的窗口编号是奇数的本地寄存器群中选择第二本地寄存器群;
根据SAVE命令或者RESTORE命令是否在执行中以及所述当前窗口编号,在第一输出寄存器读取端口,从调用所述子程序时用于传递变量的输出寄存器中的窗口编号是偶数的输出寄存器群中选择第一输出寄存器群;
根据SAVE命令或者RESTORE命令是否在执行中以及所述当前窗口编号,在第二输出寄存器读取端口,从调用所述子程序时用于传递变量的输出寄存器中的窗口编号是奇数的输出寄存器群中选择第二输出寄存器群;
根据SAVE命令或者RESTORE命令是否在执行中以及所述当前窗口编号,从所述偶数的输出寄存器群和所述奇数的输出寄存器群中选择第三输出寄存器群,
在所述第二步骤中,根据所述读取地址,从所选择的所述第一本地寄存器群、所选择的所述第二本地寄存器群、所选择的所述第一输出寄存器群、所选择的所述第二输出寄存器群、以及所选择的所述第三输出寄存器群中选择一个所述读取寄存器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/002172 WO2010016097A1 (ja) | 2008-08-08 | 2008-08-08 | 演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102112965A CN102112965A (zh) | 2011-06-29 |
CN102112965B true CN102112965B (zh) | 2015-06-17 |
Family
ID=41663327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880130631.8A Active CN102112965B (zh) | 2008-08-08 | 2008-08-08 | 运算处理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8539208B2 (zh) |
EP (1) | EP2325744B1 (zh) |
JP (1) | JP5229321B2 (zh) |
KR (1) | KR101244074B1 (zh) |
CN (1) | CN102112965B (zh) |
WO (1) | WO2010016097A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6107485B2 (ja) | 2013-07-04 | 2017-04-05 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US11144364B2 (en) * | 2019-01-25 | 2021-10-12 | International Business Machines Corporation | Supporting speculative microprocessor instruction execution |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2564054B2 (ja) * | 1991-07-16 | 1996-12-18 | 松下電器産業株式会社 | レジスタファイル |
GB2383652A (en) * | 2001-12-28 | 2003-07-02 | Fujitsu Ltd | Register file structure in a register window system and controlling method thereof |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179682A (en) * | 1990-05-15 | 1993-01-12 | Sun Microsystems, Inc. | Method and apparatus for improved current window cache with switchable address in, out, and local cache registers |
JP2823767B2 (ja) * | 1992-02-03 | 1998-11-11 | 松下電器産業株式会社 | レジスタファイル |
JP5028774B2 (ja) * | 2005-09-22 | 2012-09-19 | 富士通株式会社 | 演算処理装置,情報処理装置,及びレジスタファイルの制御方法 |
JP5130757B2 (ja) * | 2007-03-16 | 2013-01-30 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP5282147B2 (ja) | 2010-02-15 | 2013-09-04 | 株式会社日立製作所 | 暗号通信システム及びそれに用いる送信機及び受信機 |
-
2008
- 2008-08-08 EP EP08790429.8A patent/EP2325744B1/en active Active
- 2008-08-08 WO PCT/JP2008/002172 patent/WO2010016097A1/ja active Application Filing
- 2008-08-08 CN CN200880130631.8A patent/CN102112965B/zh active Active
- 2008-08-08 KR KR1020117002117A patent/KR101244074B1/ko active IP Right Grant
- 2008-08-08 JP JP2010523656A patent/JP5229321B2/ja active Active
-
2011
- 2011-01-31 US US13/017,665 patent/US8539208B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2564054B2 (ja) * | 1991-07-16 | 1996-12-18 | 松下電器産業株式会社 | レジスタファイル |
GB2383652A (en) * | 2001-12-28 | 2003-07-02 | Fujitsu Ltd | Register file structure in a register window system and controlling method thereof |
Also Published As
Publication number | Publication date |
---|---|
US8539208B2 (en) | 2013-09-17 |
EP2325744B1 (en) | 2022-08-03 |
JPWO2010016097A1 (ja) | 2012-01-12 |
KR20110034654A (ko) | 2011-04-05 |
EP2325744A4 (en) | 2011-08-10 |
EP2325744A1 (en) | 2011-05-25 |
JP5229321B2 (ja) | 2013-07-03 |
WO2010016097A1 (ja) | 2010-02-11 |
CN102112965A (zh) | 2011-06-29 |
KR101244074B1 (ko) | 2013-03-18 |
US20110125988A1 (en) | 2011-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2372530A1 (en) | Data processing method and device | |
CN107590085B (zh) | 一种具有多级缓存的动态可重构阵列数据通路及其控制方法 | |
KR20030064239A (ko) | 화상을 처리하는 장치 및 방법과 이 장치에 이용되는컴파일러 | |
CN112579159A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
US20050081021A1 (en) | Automatic register backup/restore system and method | |
CN109614145B (zh) | 一种处理器核心结构及数据访存方法 | |
CN108874730B (zh) | 一种数据处理器及数据处理方法 | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
US20180212894A1 (en) | Fork transfer of data between multiple agents within a reconfigurable fabric | |
US20180324112A1 (en) | Joining data within a reconfigurable fabric | |
CN111459543B (zh) | 一种管理寄存器文件单元的方法 | |
CN109582364B (zh) | 基于忆阻器的精简指令集处理器 | |
CN102112965B (zh) | 运算处理装置 | |
CN101320335B (zh) | 信息处理系统中的协同式多任务处理方法及信息处理系统 | |
CN102298568B (zh) | 一种动态可重构阵列的配置信息切换方法及装置 | |
US5642523A (en) | Microprocessor with variable size register windowing | |
US20230409238A1 (en) | Approach for processing near-memory processing commands using near-memory register definition data | |
US7783861B2 (en) | Data reallocation among PEs connected in both directions to respective PEs in adjacent blocks by selecting from inter-block and intra block transfers | |
JP5145659B2 (ja) | ベクトルリネーミング方式およびベクトル型計算機 | |
CN1714338A (zh) | 带有复制寄存器文件的vliw处理器 | |
JPH09305401A (ja) | コンピュータ及びコンパイラ | |
JP3771682B2 (ja) | ベクトル処理装置 | |
US20060206695A1 (en) | Data movement within a processor | |
JPH03108040A (ja) | 改良された同一データ反復書込機構を有するデータ記憶装置 | |
WO2019006119A1 (en) | COMBINING DATA IN A RECONFIGURABLE MATRIX |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |