CN1936831A - 算术运算装置、信息处理装置以及寄存器堆控制方法 - Google Patents

算术运算装置、信息处理装置以及寄存器堆控制方法 Download PDF

Info

Publication number
CN1936831A
CN1936831A CNA2006100576399A CN200610057639A CN1936831A CN 1936831 A CN1936831 A CN 1936831A CN A2006100576399 A CNA2006100576399 A CN A2006100576399A CN 200610057639 A CN200610057639 A CN 200610057639A CN 1936831 A CN1936831 A CN 1936831A
Authority
CN
China
Prior art keywords
register
window
data
current
impact damper
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.)
Granted
Application number
CNA2006100576399A
Other languages
English (en)
Other versions
CN100394382C (zh
Inventor
菅竜二
山下英男
吉田利雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN1936831A publication Critical patent/CN1936831A/zh
Application granted granted Critical
Publication of CN100394382C publication Critical patent/CN100394382C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B63SHIPS OR OTHER WATERBORNE VESSELS; RELATED EQUIPMENT
    • B63CLAUNCHING, HAULING-OUT, OR DRY-DOCKING OF VESSELS; LIFE-SAVING IN WATER; EQUIPMENT FOR DWELLING OR WORKING UNDER WATER; MEANS FOR SALVAGING OR SEARCHING FOR UNDERWATER OBJECTS
    • B63C9/00Life-saving in water
    • B63C9/08Life-buoys, e.g. rings; Life-belts, jackets, suits, or the like
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2208/00Characteristics or parameters related to the user or player
    • A63B2208/03Characteristics or parameters related to the user or player the user being in water
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2225/00Miscellaneous features of sport apparatus, devices or equipment
    • A63B2225/60Apparatus used in water
    • A63B2225/605Floating
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B63SHIPS OR OTHER WATERBORNE VESSELS; RELATED EQUIPMENT
    • B63CLAUNCHING, HAULING-OUT, OR DRY-DOCKING OF VESSELS; LIFE-SAVING IN WATER; EQUIPMENT FOR DWELLING OR WORKING UNDER WATER; MEANS FOR SALVAGING OR SEARCHING FOR UNDERWATER OBJECTS
    • B63C9/00Life-saving in water
    • B63C2009/0023Particular features common to inflatable life-saving equipment

Abstract

算术运算装置、信息处理装置以及寄存器堆控制方法。本发明的装置减少了采用乱序指令执行方法的信息处理装置中的硬件资源并提高了数据读取吞吐量。该装置包括:算术运算单元(40),其执行窗口切换指令以及与存储在当前寄存器(20)中的数据相关或者与保存在替换缓冲器(30)中的数据相关的指令;以及控制单元(50),如果在由算术运算单元(40)执行窗口切换指令时译码出该窗口切换指令,则该控制单元(50)将在完成该窗口切换指令的执行时由所述当前窗口指针指定的寄存器窗口的数据传送给替换缓冲器(30)。

Description

算术运算装置、信息处理装置以及寄存器堆控制方法
技术领域
本发明涉及下述的技术,该技术使得可以改变在具有带有寄存器窗口的体系结构的信息处理装置中执行指令的顺序,该信息处理装置采用乱序指令执行方法。与寄存器窗口切换无关地进行指令执行顺序的改变。
背景技术
采用精简指令集类型的体系结构的一些以前的信息处理装置(RISC:精简指令集计算机)具有一个以上的寄存器组(以下称为“寄存器窗口”),从而使得不必在存储器堆栈上保存/返回寄存器(该保存/返回寄存器是在子程序的调用/返回时导致的)。
寄存器窗口以环状形式链接,并且使用寄存器窗口编号(以下称为“窗口编号”)对它们进行管理。例如,设置了具有窗口编号0至7的八个寄存器窗口,并且按照0,1,2,…,7的顺序使用这些寄存器窗口。正在使用的窗口的编号保存在用于保存窗口编号的寄存器(以下称为“CWP(当前窗口指针)”)中。
图5是表示环状寄存器堆A的结构的视图。在该寄存器堆A中,寄存器窗口W0至W7以环状形式链接,并且在它们之间具有重叠。寄存器窗口W0至W7中的每一个例如由32×64位寄存器构成。在这32个寄存器中,8个寄存器(全局寄存器;未示出)对于寄存器窗口W0至W7是共用的。剩余的24个寄存器被划分为三个区域(在图中为“输入(ins)”、“局部(locals)”和“输出(outs)”),每一个区域都包括八个寄存器。
即,以寄存器窗口W0为例,左端的八个寄存器W0输入与前一寄存器窗口W7的寄存器W7输出重叠,并且在它们之间是共用的(即,寄存器W0输入也用作寄存器W7输出)。另外,中间的八个寄存器W0局部不与任何寄存器重叠,并且保存它们自己的数据。右端的八个寄存器W0输出与后一寄存器窗口W1的寄存器W1输入彼此共用。在这种情况下,如在寄存器窗口W0的情况下一样,在寄存器窗口W1至W7中,输入寄存器窗口的八个寄存器与前一输出寄存器窗口的八个寄存器彼此共用;八个中间寄存器不与任何寄存器重叠,并且保存它们自己的数据;输出寄存器窗口的八个寄存器与后一输入寄存器窗口的八个寄存器彼此重叠并且彼此共用。
图5的这种寄存器堆A被称为重叠寄存器窗口。
在该寄存器堆A中,用于切换由CWP指定的当前寄存器窗口W0至W7的寄存器窗口切换指令(以下也简称为“切换指令”)包括用于递增CWP的SAVE指令和用于递减CWP的RESTORE指令(RETURN指令)。下文中,将寄存器窗口切换指令称为“SAVE指令”和“RESTORE指令”。这里,注意图5中的CWP指定了寄存器窗口W0。
寄存器堆A是其中窗口数量n=8(寄存器窗口W1至W7)的示例。寄存器堆A总共具有136个寄存器:用于局部区域的8(寄存器)×8(窗口)=64(寄存器);用于输入/输出重叠区域的8(寄存器)×8(窗口)=64(寄存器);用于全局寄存器(未示出)的8个寄存器。必须能够从所有136个寄存器进行读取/对所有136个寄存器进行写入。
从这种大寄存器堆A读取数据的电路的速度和大小是亟待解决的问题,因此,开发了图6的信息处理装置100。信息处理装置100包括:主寄存器堆(MRF)101;工作寄存器堆(WRF)102;以及算术运算单元103,其具有执行单元(在图中表示为“执行单元”)和存储单元(在图中表示为“存储单元”)。
总的来说,具有大量窗口的寄存器窗口需要相当大的寄存器堆(八个窗口需要136个寄存器),因此,其变得难以高速地向算术运算单元提供操作数。
因此,如图6所示,除了保存所有窗口的MRF101之外,还设置有WRF102作为用于保存MRF101中的由CWP指定的当前寄存器窗口的数据的备份的子集。该WRF102向算术运算单元103提供操作数。由于WRF102仅保存由CWP指定的窗口,所以其容量为32个条目,这比MRF101的要少。结果,可以提高算术运算单元103的读取速度。
然而,在这种信息处理装置100的结构中,WRF102保存用于单个寄存器窗口或者由CWP指定的当前寄存器窗口的寄存器。因此,当执行SAVE指令或RESTORE指令时,不能从WRF102提供后续指令中所需的操作数,这是新的问题。
结果,当执行SAVE指令或RESTORE指令时,必须使用新窗口的值来替换WRF102。因此,导致从MRF101到WRF102的窗口(数据)传送处理,使得其后的指令的执行被延迟。
另外,在其中指令执行的顺序是在乱序指令执行的情况下改变的信息处理装置中,从可执行的指令开始执行指令,而与它们在程序中的顺序无关。然而,在将进行了SAVE/RESTORE操作之后的窗口传送到WRF102之前,不能执行要紧接着SAVE指令或RESTORE指令之后执行的指令,即使该指令变为可执行。
该限制会大大降低采用乱序指令执行方法的信息处理装置的性能,在该装置中并行发出的指令数量很大。在采用乱序指令执行方法的这种信息处理装置中,获取大量的指令并随后将其收集在缓冲器中。以与程序中的顺序无关的顺序从该缓冲器执行可执行的指令,由此提高指令执行的吞吐量。
因此,当出现SAVE指令或RESTORE指令时不能改变指令的执行顺序的上述限制将导致下述的现象:每当SAVE指令或RESTORE指令出现时,乱序处理机制不起作用,从而导致性能大大降低。
鉴于该缺点,如图7所示,开发了信息处理装置110(例如,参见以下专利文献1),其中除了由CWP指定的当前寄存器窗口的数据(G,L1,Io1和Io2)之外,WRF112还存储在当前寄存器窗口之前和之后的寄存器窗口的数据(L2,Io3,L3和Io4)(即,预先传送由CWP+1和CWP-1表示的寄存器窗口的寄存器)。在该信息处理装置中,对于SAVE指令和RESTORE指令之前和之后的指令可以实现乱序执行。
在上述信息处理装置110中,当将数据从MRF111传送到WRF112时,将用于锁存数据的寄存器(这里,8个寄存器×8字节)113插入在MRF111和WRF112之间。
如图8所示,WRF112存储CWP的输入(与CWP-1的输出相同)、CWP的局部、CWP的输出(与CWP+1的输入相同)的内容,它们是由CWP指定的当前寄存器窗口[这里,将当前由CWP指定的寄存器窗口描述为“CWP”,将该CWP之后的寄存器窗口(当前CWP递增之后的寄存器窗口)描述为“CWP+1”,而将当前CWP之前的寄存器窗口(当前CWP递减之后的寄存器窗口)描述为“CWP-1”。在以下描述中,根据与上述CWP的关系,有时将寄存器窗口W0至W7描述为“CWP”、“CWP+1”和“CWP-1”]的寄存器,并且WRF112还存储CWP-1的输入和CWP-1的局部(它们是在执行RESTORE指令之后的指令所需的寄存器窗口的寄存器),以及CWP+1的输出和CWP+1的局部(它们是在执行SAVE指令之后的指令所需的寄存器窗口的寄存器)。
因此,如图9所示,根据信息处理装置110,当CWP表示寄存器窗口W3时,WRF112保存寄存器窗口W2至W4的数据,直到执行SAVE指令(参见图中的双头箭头线“E”)为止。这样,算术运算单元103能够执行寄存器窗口W2至W4的指令。这里,在图9中,双头箭头线“D”表示指令译码(获取、发出循环);双头箭头线“E”表示指令执行(调度、执行、更新缓冲器循环);双头箭头线“W”表示指令执行完成(回写、提交循环)。
在完成SAVE指令之后,CWP指定寄存器窗口W4,信息处理装置110通过寄存器113将寄存器窗口W5的数据从MRF111传送到WRF112。结果,WRF112存储寄存器窗口W3至W5的数据,结果,算术运算单元103执行寄存器窗口W3至W5的指令。
在这种情况下,在信息处理装置110中,算术运算单元103能够在SAVE指令之前执行寄存器窗口W4的指令,并且还能够在RESTROE指令之前执行寄存器窗口W2的指令。
然而,在前述信息处理装置110中,由于WRF112保存三个寄存器窗口的数据,所以总共需要72个寄存器:用于进行锁存的八个寄存器113和用于WRF112的64个寄存器。这样,与图6的信息处理装置100中的WRF102相比较,必须增加40个寄存器,从而增加了硬件资源。
因此,用于将数据读出到WRF112和算术运算单元103的选择电路的区域(电路区域)变大,此外,算术运算单元103从WRF112读取数据的吞吐量被延迟。
[专利文献1]日本专利申请特开No.HEI 2003-196086。
发明内容
鉴于上述问题,本发明的目的是减少采用寄存器窗口和乱序执行方法的信息处理装置中的硬件资源并提高数据读取吞吐量。
为了实现上述目的,根据本发明,提供了一种算术处理器,其包括:具有多个寄存器窗口的至少一个寄存器堆,每一个寄存器窗口都由按顺序包括输入寄存器、局部寄存器和输出寄存器的一组寄存器构成,该多个寄存器窗口被设置为环状形式;当前窗口指针,当对寄存器窗口进行访问时,该当前窗口指针通过使用指针值来指示当前寄存器窗口的位置;当前寄存器,其从所述寄存器堆读取存储在由当前窗口指针所指示的指针值指定的寄存器窗口中的数据;替换缓冲器,其插入在所述寄存器堆和当前寄存器之间,该替换缓冲器保存待从寄存器堆发送到当前寄存器的数据;算术运算单元,其执行(i)用于切换寄存器窗口的窗口切换指令,以及(ii)与存储在当前寄存器中的数据相关或者与保存在替换缓冲器中的数据相关的指令;以及控制单元,如果在由算术运算单元执行窗口切换指令时译码出了窗口切换指令,则该控制单元将在窗口切换指令的执行完成时由当前窗口指针指定的寄存器窗口的数据传送给替换缓冲器。
作为优选特征,在由所述算术运算单元完成窗口切换指令的执行之后,所述控制单元使用保存在替换缓冲器中的数据来替换存储在当前寄存器中的数据,从而将下一个寄存器窗口(在窗口切换指令的情况下,将当前寄存器窗口切换为该下一个寄存器窗口)中的数据存储在当前寄存器中。
作为另一优选特征,所述算术运算单元将在执行指令之后获得的结果数据写入到所述寄存器堆和当前寄存器中。
作为另一优选特征,所述算术运算单元将在执行指令之后获得的结果数据并行地写入到所述寄存器堆和当前寄存器中。
作为另一优选特征,在所述寄存器堆中,将两个相邻寄存器窗口之一的输入寄存器与这两个相邻寄存器窗口中的另一个的输出寄存器设置为一个共用寄存器。
作为另一优选特征,如果所述算术运算单元译码出窗口切换指令,则所述控制单元将存储在由指针值指定的寄存器窗口的局部寄存器中的数据、以及存储在由该指针值指定的寄存器窗口的输入寄存器和输出寄存器中的任意一个中的数据传送给替换缓冲器。
作为另一优选特征,如果所述算术运算单元完成窗口切换指令的执行,则所述控制单元将存储在由指针值指定的寄存器窗口的局部寄存器中的数据、以及存储在由该指针值指定的寄存器窗口的输入寄存器和输出寄存器中的任意一个中的数据从替换缓冲器传送到当前寄存器。
作为一般特征,提供了一种算术处理器,其包括:具有多个寄存器窗口的多个寄存器堆,每一个寄存器窗口都包括多个窗口,该多个窗口被设置为环状形式;当前窗口指针,当对寄存器窗口进行访问时,该当前窗口指针通过使用指针值来指示当前窗口的位置;当前寄存器,其从所述寄存器堆读取存储在由该当前窗口指针所指示的指针值指定的当前窗口中的数据;替换缓冲器,其插入在所述寄存器堆和当前寄存器之间,该替换缓冲器保存待从寄存器堆发送到当前寄存器的窗口的数据;算术运算单元,其执行(i)用于切换窗口的窗口切换指令,以及(ii)与存储在当前寄存器中的数据相关或者与保存在替换缓冲器中的数据相关的指令;以及控制单元,如果在由算术运算单元执行窗口切换指令时译码出了窗口切换指令,则该控制单元将在完成窗口切换指令的执行时由当前窗口指针指定的寄存器窗口中的数据传送给替换缓冲器,如果在由所述算术运算单元的单元执行用于更新由当前窗口指针保存的指针值的加载指针指令时,对指针值进行了更新,则该控制单元将由经更新的指针值指定的一个寄存器窗口的数据通过替换缓冲器从寄存器堆传送到当前寄存器。
作为优选特征,寄存器堆的窗口由下述部分构成:(i)一组寄存器:输入寄存器;局部寄存器;和输出寄存器,以及(ii)在寄存器窗口之中共享的一组全局寄存器,并且将一个寄存器窗口的数据(要将该数据从寄存器堆传送给替换缓冲器或者从替换缓冲器传送给当前寄存器)按照如下顺序进行传送:与全局寄存器相关的数据、与输出寄存器相关的数据、与输入寄存器相关的数据、以及与局部寄存器相关的数据。
作为另一个一般特征,提供了一种信息处理装置,其包括:具有多个寄存器窗口的至少一个寄存器堆,每一个寄存器窗口都由按顺序包括输入寄存器、局部寄存器和输出寄存器的一组寄存器构成,所述多个寄存器窗口被设置为环状形式;当前窗口指针,当对寄存器窗口进行访问时,该当前窗口指针通过使用指针值来指示当前寄存器窗口的位置;当前寄存器,其从所述寄存器堆读取存储在由当前窗口指针所指示的指针值指定的寄存器窗口中的数据;替换缓冲器,其插入在所述寄存器堆和当前寄存器之间,该替换缓冲器保存待从寄存器堆发送到当前寄存器的数据;算术运算单元,其执行(i)用于切换寄存器窗口的窗口切换指令,以及(ii)与存储在当前寄存器中的数据相关或者与保存在替换缓冲器中的数据相关的指令;以及控制单元,如果在由算术运算单元执行窗口切换指令时译码出了窗口切换指令,则该控制单元将在完成窗口切换指令的执行时由当前窗口指针指定的寄存器窗口中的数据传送给替换缓冲器。
作为优选特征,在由所述算术运算单元完成窗口切换指令的执行之后,所述控制单元使用保存在替换缓冲器中的数据来替换存储在当前寄存器中的数据,从而将下一个寄存器窗口(在窗口切换指令的情况下,将当前寄存器窗口切换为该下一个寄存器窗口)中的数据存储在当前寄存器中。
作为另一优选特征,所述算术运算单元将在执行指令之后获得的结果数据写入到所述寄存器堆和当前寄存器中。
作为另一优选特征,所述算术运算单元将在执行指令之后获得的结果数据并行地写入到所述寄存器堆和当前寄存器中。
作为另一优选特征,在所述寄存器堆中,将两个相邻寄存器窗口之一的输入寄存器和这两个相邻寄存器窗口中的另一个的输出寄存器设置为一个共用寄存器。
作为另一优选特征,如果所述算术运算单元译码出窗口切换指令,则所述控制单元将存储在由指针值指定的寄存器窗口的局部寄存器中的数据、以及存储在由该指针值指定的寄存器窗口的输入寄存器和输出寄存器中的任意一个中的数据传送给替换缓冲器。
作为另一优选特征,如果所述算术运算单元完成窗口切换指令的执行,则所述控制单元将存储在由指针值指定的寄存器窗口的局部寄存器中的数据、以及存储在由该指针值指定的寄存器窗口的输入寄存器和输出寄存器中的任意一个中的数据从替换缓冲器传送到当前寄存器。
作为一般特征,提供了一种信息处理装置,其包括:具有多个寄存器窗口的多个寄存器堆,每一个寄存器窗口都包括多个窗口,所述多个窗口被设置为环状形式;当前窗口指针,当对寄存器窗口进行访问时,该当前窗口指针通过使用指针值来指示当前窗口的位置;当前寄存器,其从所述寄存器堆读取存储在由当前窗口指针所指示的指针值指定的当前窗口中的数据;替换缓冲器,其插入在所述寄存器堆和当前寄存器之间,该替换缓冲器保存待从寄存器堆发送到当前寄存器的窗口的数据;算术运算单元,其执行(i)用于切换窗口的窗口切换指令,以及(ii)与存储在当前寄存器中的数据相关或者与保存在替换缓冲器中的数据相关的指令;以及控制单元,如果在由算术运算单元执行窗口切换指令时译码出了窗口切换指令,则该控制单元将在完成窗口切换指令的执行时由当前窗口指针指定的寄存器窗口中的数据传送给替换缓冲器,如果在由所述算术运算单元的单元执行用于更新由当前窗口指针保存的指针值的加载指针指令时,对指针值进行了更新,则该控制单元将由经更新的指针值指定的一个寄存器窗口的数据通过替换缓冲器从寄存器堆传送给当前寄存器。
作为优选特征,所述寄存器堆的窗口由以下部分构成:(i)一组寄存器:输入寄存器;局部寄存器;和输出寄存器,以及(ii)在寄存器窗口之间共享的一组全局寄存器,并且将一个寄存器窗口的数据(要将该数据从寄存器堆传送到替换缓冲器或者从替换缓冲器传送到当前寄存器)按照以下顺序进行传送:与全局寄存器相关的数据、与输出寄存器相关的数据、与输入寄存器相关的数据、以及与局部寄存器相关的数据。
作为另一个一般特征,提供了一种用于算术处理器的寄存器堆控制方法,该算术处理器包括:具有被设置为环状形式的多个寄存器窗口的寄存器堆,每一个寄存器窗口都由一组寄存器构成;当前窗口指针,其通过使用指针值来指示当前寄存器窗口的位置;当前寄存器,其从所述寄存器堆读取存储在由当前窗口指针所指示的指针值指定的寄存器窗口中的数据;替换缓冲器,其保存待从寄存器堆发送到当前寄存器的数据;以及算术运算单元,其执行(i)用于切换寄存器窗口的窗口切换指令,以及(ii)与存储在当前寄存器中的数据相关或者与保存在替换缓冲器中的数据相关的指令,所述方法包括:如果在由算术运算单元执行窗口切换指令时译码出了窗口切换指令,则将在完成窗口切换指令的执行时由当前窗口指针指定的寄存器窗口的数据传送给替换缓冲器。
作为优选特征,所述寄存器堆控制方法还包括:在由所述算术运算单元完成窗口切换指令的执行之后,使用保存在替换缓冲器中的数据替换存储在当前寄存器中的数据,从而将下一个寄存器窗口(在窗口切换指令的情况下,将当前寄存器窗口切换为该下一个寄存器窗口)中的数据存储在当前寄存器中。
如到目前为止所述,根据本发明,所述算术运算单元以下述的方式进行连接,该方式使其可以从当前寄存器和替换缓冲器读取数据。当所述算术运算单元译码出诸如SAVE指令和RESTORE指令的窗口切换指令时,所述控制单元执行控制,以从主寄存器读取在执行切换指令之后紧接着要保存在当前寄存器中的寄存器窗口的数据,并随后将其存储在替换缓冲器中。因此,对于算术运算单元,可以在实际执行窗口切换指令之前,从替换缓冲器读取在执行窗口切换指令之后紧接着要保存在当前寄存器中的数据,由此可靠地执行使用上述寄存器窗口的数据的指令。
因此,与前述装置不同的是,不再需要预先读取当前寄存器窗口之前和之后的寄存器窗口(总共三个寄存器窗口),并且可以通过乱序方法来执行指令。这样,减少了在实际执行窗口切换指令之前执行窗口切换指令之后的指令所需的寄存器的容量(硬件资源)。
因此,提高了从当前寄存器和替换缓冲器读取用于通过算术运算单元执行指令的数据的吞吐量。
另外,由于减少了硬件资源,所以减少了寄存器的实现区域,还降低了能耗。
当结合附图阅读下面的详细说明时,将明了本发明的其它目的和进一步特征。
附图说明
图1是表示根据本发明的一个优选实施例的信息处理装置的结构的框图;
图2是用于说明由根据本实施例的信息处理装置的算术运算单元采用的乱序指令执行方法的视图;
图3是用于说明根据本实施例的信息处理装置的算术运算单元的操作示例的视图;
图4(a)至图4(c)是用于说明保存在根据本实施例的信息处理装置的当前窗口寄存器和当前窗口替换缓冲器中的数据的视图;图4(a)是表示在由算术运算单元译码出窗口切换指令之前的状态的视图;图4(b)是表示在由算术运算单元译码出窗口切换指令之后的状态的视图;图4(c)是表示在由算术运算单元完成窗口切换指令的执行之后的状态的视图;
图5是表示在根据本实施例的信息处理装置的主寄存器堆中形成的以前的环状寄存器堆(寄存器窗口)的视图;
图6是表示以前的信息处理装置的结构的框图;
图7是表示以前的信息处理装置的结构的框图;
图8是用于说明保存在图7的以前的信息处理装置的寄存器堆中的数据的视图;以及
图9是表示图7的以前的信息处理装置的算术运算单元的操作示例的视图。
具体实施方式
下面将参照相关附图来描述本发明的一个优选实施例。
[1]一个优选实施例:
首先,将参照图1的框图来描述根据本发明的一个优选实施例的信息处理装置的结构。如图1所示,本发明的信息处理装置1包括:主寄存器堆(主寄存器;MRF)10;当前窗口寄存器(当前寄存器;CWR)20;当前窗口替换缓冲器(替换缓冲器;CRB)30;算术运算单元40;以及控制单元50。
主寄存器堆(以下称为“MRF”)10包括一个以上的寄存器窗口,每一个寄存器窗口中都存储有数据,并且该MRF10具有如图5所示的环状寄存器堆A。也就是说,作为MRF10的寄存器堆A是重叠寄存器窗口类型的寄存器堆,其中寄存器窗口W0至W7以环状形式链接,并且相邻寄存器窗口之间具有重叠。
如图5所示,该信息处理装置1还具有CWP(当前窗口指针;未示出),并且将寄存器窗口W0至W7中的由CWP指定的一个视为当前寄存器窗口。
当前窗口寄存器(以下称为“CWR”)20保存该多个寄存器窗口W0至W7中的由CWP指定的当前寄存器窗口Wi(i=0,1,…,7),并且这里,该CWR只保存包括全局寄存器的一个寄存器窗口Wi。
为了保存作为由CWP指定的单个寄存器窗口的当前寄存器窗口Wi,CWR20由总共32×8字节的寄存器构成:用于保存全局寄存器的8×8字节寄存器21;用于保存局部寄存器的8×8字节寄存器22;用于保存输入寄存器的8×8字节寄存器23;用于保存输出寄存器的8×8字节寄存器24。
当前窗口替换缓冲器(以下称为“CRB”)30插入在MRF10和CWR20之间,并且保存紧接着要保存在CWR20中的寄存器窗口Wi-1或Wi+1的数据(这里,当i=0时,为寄存器窗口W7或寄存器窗口W1;当i=7时,为寄存器窗口W6或寄存器窗口W0)。
即,在由算术运算单元40执行的窗口切换指令(SAVE指令或RESTROE指令)的指示下,CRB30预先读取并保存紧接着要保存在CWR20中的寄存器窗口Wi-1或Wi+1的寄存器(这里,为这些寄存器中的某些)。
CRB30由总共16×8字节的寄存器构成:用于保存局部寄存器的8×8字节寄存器31;用于保存输入或输出寄存器的8×8字节寄存器32。
在这种情况下,通过用于直接重写CWP值的指令(LOAD_CWP命令),可以强制执行窗口切换操作。当需要更新执行新指令串所需的寄存器组的内容时[例如,在信息处理装置1的初始操作时(即,当CWR20为空时)、处理切换时,以及线程切换时],CRB30的寄存器31用于从MRF10读取全局寄存器并使CWR20对其进行保存(将全局寄存器传送给CWR20)。
根据本发明,当完成LOAD_CWP命令的执行时,将保存在单个窗口寄存器中的数据从MRF传送到CRB,并随后传送到CWR。当从MRF到CRB以及从CRB到CWR进行传送的总线宽度较小时,例如,如果总线宽度为8字节×8,则可以按照以下顺序通过8个寄存器的流水线(pipeline)来传送数据:全局、输出、局部和输入。
因此,通过将LOAD_CWP指令的执行完成作为触发器,使乱序执行延迟(即,即使在完成LOAD_CWP命令的执行之前已经通过乱序执行而执行了LOAD_CWP命令的后续指令处理,也丢弃该指令执行的结果,并且随后在完成LOAD_CWP命令的执行之后再次执行该后续指令处理)。结果,可以通过将CRB用作中继缓冲器来将单个寄存器窗口的数据从MRF复制到CWR。
算术运算单元40以下述的方式进行连接,该方式使其能够读取存储在CWR20中的数据以及存储在CRB30中的数据,该算术运算单元40执行与存储在CWR20和CRB30中的数据相关的指令、用于递增CWP的SAVE指令和用于递减CWP的RESTORE指令(RETURN指令)。这里,以乱序方法执行这些指令(参见图2,如以下的详细说明)。
算术运算单元40还以下述的方式进行连接,该方式使其能够将数据写入到MRF10和CWR20中,并且该算术运算单元40并行地执行对MRF10和CWR20的写入操作。在这种情况下,在由算术运算单元40采用的乱序指令方法中,以顺序方法执行导致写入操作的提交阶段(参见图2,如以下的详细说明)。这样,算术运算单元40无需为了能够对CRB30进行写入而进行连接。
控制单元50对MRF10和CWR20之间以及CWR20和CRB30之间的数据传送进行控制。
现在参照图2来描述由信息处理装置1采用的乱序指令执行方法。这里,应该注意,在图2中,指令流水线中的指令从左向右流动。
如图2所示,在指令流水线中,信息处理装置1的算术运算单元40在指令获取阶段和指令发出(译码)阶段按顺序执行指令。相反地,在指令调度阶段、执行阶段和更新缓冲器阶段中,算术运算单元40乱序地执行指令,而与指令的执行顺序无关,并且从准备好的指令开始执行指令。最后,在提交阶段,算术运算单元40顺序执行指令。
这里,获取阶段是从存储器(未示出)读出指令的阶段;发出(译码)阶段是对指令进行译码并将其登记在保留站(未示出)中的阶段;调度阶段是从保留站向指令执行资源(例如,算术运算单元)发出指令的阶段;执行阶段是在指令执行资源(例如,算术运算单元)中执行指令的阶段;更新缓冲器阶段是等待执行结果的阶段;提交阶段是将指令的执行结果回写(反写)到存储器(未示出)中的阶段。
当算术运算单元40在乱序执行指令的同时译码出窗口切换指令(SAVE指令/RESTORE指令)时,控制单元50以下述的方式执行控制,该方式使得从MRF10读出要在窗口切换指令的情况下存储在CWR20中的寄存器窗口Wi-1的数据(寄存器)或寄存器窗口Wi+1的数据,并且随后将其存储在CRB30中。
另外,在算术运算单元完成该窗口切换指令的执行之后,控制单元50使用保存在CRB30中的数据(寄存器)替换当前保存在CWR20中的数据(寄存器),从而使CWR20保存紧接着要在窗口切换指令的情况下保存的寄存器窗口的数据。
这里,将参照图3和图4(a)至图4(c)描述在由CWP指定的寄存器窗口是寄存器窗口W3、并且算术运算单元40执行与寄存器窗口W3相关的指令(以下称为“CWP=3的指令”)、SAVE指令、与寄存器窗口W4相关的指令(以下称为“CWP=4的指令”)的情况下,控制单元50的操作以及保存在CWR20和CRB30中的数据。
这里,图3中的双头箭头“D”表示指令的译码(图2中的获取阶段+发出阶段);双头箭头“E”表示指令的执行(图2中的调度阶段+执行阶段+更新缓冲器阶段);双头箭头“W”表示指令的完成(回写;图2的提交阶段)。算术运算单元40在译码之前顺序执行指令。即,算术运算单元40按顺序执行CWP=3的指令、SAVE指令以及CWP=4的指令。
首先,在该信息处理装置1中,在算术运算单元40译码出CWP=3的指令之前,CWR20保存由CWP指定的当前寄存器窗口(这里,为寄存器窗口W3;CWP=3)的数据。
即,如图4(a)所示,在译码出SAVE指令(或RESTORE指令)之前,信息处理装置1的CWR20将作为由CWP指定的当前寄存器窗口W3中的数据的全局寄存器保存在寄存器21中;将寄存器W3局部(在图中描述为“局部CWP=3”)保存在寄存器22中;将寄存器W3输入(在图中描述为“输入CWP=3”)保存在寄存器23中;将寄存器W3输出(在图中描述为“输出CWP=3”)保存在寄存器24中。在这种情况下,CRB30不保存任何数据。
因此,算术运算单元40通过使用保存在CWR20中的寄存器窗口W3的数据,仅能够执行CWP=3的指令。
然后,如图3所示,当算术运算单元40译码出SAVE指令(执行发出阶段)时,控制单元50进行控制,以读出保存在寄存器窗口W4(CWP=4)(在SAVE指令的指示下,随后CWP指定该寄存器窗口W4)的某些寄存器中的数据,并随后将其存储在CRB30中。
即,如图4(b)所示,当算术运算单元40译码出SAVE指令时,控制单元50将随后在SAVE指令的情况下由CWP指定的寄存器窗口W4(CWP=4)的寄存器W4局部(在图中描述为“局部CWP=4”)的内容从MRF10复制到CRB30的寄存器31,并传送该内容。另外,控制单元50将寄存器W4输出(在图中描述为“输出CWP=4”)的内容复制到CRB30的寄存器32并传送该内容。
这里,控制单元50不将寄存器窗口W4的寄存器W4输入的内容传送给CRB30的原因在于,寄存器W4输入与保存在CWR20的寄存器24中的寄存器窗口W3的寄存器W3输出(重叠部分)重叠(参见图5)。
通过这种方式,控制单元50进行控制,以将紧接着要保存在CWR20中的寄存器窗口W4的数据中的不与当前保存在CWR20中的寄存器窗口W3重叠的部分的数据(这里,为寄存器W4局部和寄存器W4输出)保存在CRB30中。从MRF10读出该非重叠部分的数据并将其存储在CRB30中。
因此,在该信息处理装置1中,在由算术运算单元40译码出SAVE指令之后,但在提交阶段(参见图2)之前,将寄存器W4局部的内容保存在CRB30的寄存器31中,并将寄存器W4输出的内容保存在寄存器32中。
结果,算术运算单元40能够通过使用保存在CWR20中的寄存器窗口W3的数据来执行CWP=3的指令。另外,算术运算单元40还能够通过使用保存在CRB30中的寄存器窗口W4的数据的一部分(非重叠的局部和输出寄存器的数据)和保存在CWR20中的与寄存器W4输入重叠的寄存器W3输出,来执行CWP=4的指令。
另外,如图3所示,在由算术运算单元40完成(回写)SAVE指令的执行之后(在执行提交阶段之后),控制单元50从CRB30读数据并将所读出的数据传送给CWR20,以使得CWR20保存存储在CRB30中的数据(这里,为寄存器W4局部和寄存器W4输出)。
即,控制单元50进行控制,以使用存储在CRB30中的数据(这里,为寄存器W4局部和寄存器W4输出)来替换当前存储在CWR20中的数据中的不与下一个寄存器窗口W4重叠的部分的数据(这里,为寄存器W3局部和寄存器W3输入),从而将下一个寄存器窗口W4的数据存储在CWR20中。
更具体地,如图4(c)所示,在由算术运算单元40完成SAVE指令的执行之后,控制单元50替换数据(参见双点划箭头线P),以将保存在CRB30的寄存器31中的寄存器W4局部(在图中描述为“局部CWP=4”)保存在CWR20的寄存器22中。另外,控制单元50还替换数据(参见单点划箭头线Q),以将保存在CRB30的寄存器32中的寄存器W4输出保存在CWR20的寄存器23中。
对于在CWP=3时和在CWP=4时共用的寄存器W4输入,初始存储在寄存器24中的寄存器W3输出被控制单元50视为寄存器W4输入。
通过这种方式,对于当前存储在CWR20中的数据中的与下一个寄存器窗口W4重叠的部分的数据,控制单元50进行控制,以将该重叠部分的数据视为下一个寄存器窗口W4的数据(即,该数据保持不变,并且用作下一个寄存器窗口的数据),从而使CWR20保存下一个寄存器窗口W4。
因此,在CWR20中,在寄存器23和24中保存输入寄存器还是输出寄存器取决于CWP取偶数还是奇数。当CWP从偶数变为奇数时,将初始存储在寄存器23中的输入寄存器视为下一个寄存器窗口的输出寄存器。
结果,在由算术运算单元40完成(回写)SAVE指令的执行之后,CRB30没有存储数据,并且算术运算单元40通过使用保存在CWR20中的寄存器窗口W4的数据而仅能够执行CWP=4的指令。
通过这种方式,根据本发明的一个优选实施例的信息处理装置1,算术运算单元40以下述的方式进行连接,该方式使其可以从CWR20和CRB30读取数据。当算术运算单元40译码出窗口切换指令时,控制单元50进行控制,以从MRF10读取在执行该切换指令之后紧接着要保存在CWR20中的寄存器窗口的数据,并且随后将其存储在CRB30中。因此,对于算术运算单元40,可以在实际执行窗口切换指令之前,从CRB30读取在执行窗口切换指令之后紧接着要保存在CWR20中的数据,从而可靠地执行使用上述寄存器窗口的数据的指令。
在这种情况下,CRB30由16个寄存器实现,并且CWR20由32个寄存器实现。这样,在本发明的信息处理装置1中,通过总共48个寄存器,算术运算单元40对于采用寄存器窗口的MRF10能够以乱序指令执行方法来执行指令。因此,与由72个寄存器实现的以前的信息处理装置110相比,在本发明的信息处理装置1中,可以减少多达24个寄存器。
换言之,根据本发明的信息处理装置1,减少了硬件资源,从而提高了从CWR20和CRB30读取的用于由算术运算单元40执行指令的数据的吞吐量。
另外,由于减少了寄存器的数量,所以减小了电路的大小,从而还减小了实现区域和能耗。
另外,在该信息处理装置1中,当算术运算单元40完成窗口切换指令的执行时,控制单元50进行控制,以使用存储在CRB30中的数据来替换当前由CWR20保存的寄存器窗口的数据中的不与后续寄存器窗口重叠的部分的数据,从而将下一个寄存器窗口的数据存储在CWR20中。这样,可靠地进行与顺序进行的指令执行相关的对CWR20的写入处理。即,可靠地进行与指令的执行相关的写入处理,而无需以可以对CRB30进行写入处理的方式来连接算术运算单元40。
另外,在该信息处理装置1中,在由算术运算单元40完成切换指令的执行之后,控制单元50将当前存储在CWR20中的数据中的与下一个寄存器窗口重叠的部分的数据视为下一个寄存器窗口的数据,从而将下一个寄存器保存在CWR20中。这样,为了最终将包括三个区域(局部寄存器、输入寄存器和输出寄存器)的寄存器窗口存储在CWR20中,用作中继点的CRB30仅需要具有两个区域,从而减少了硬件资源量。更具体地,仅需要16个寄存器来实现CRB30,而不是保持整个寄存器窗口所需的24个寄存器。
[2]其它修改
本发明绝不应该限于上述实施例,而是可以在不脱离本发明的主旨的情况下提出各种变化或修改。
例如,存储在寄存器堆A中的寄存器窗口的数量和各个寄存器窗口的容量(寄存器的数量)绝不应该限于上述示例,它们可以变化。
另外,由本发明的信息处理装置执行处理的对象绝不应该限于重叠窗口类型的寄存器堆,并且本发明可应用于任何寄存器堆,只要其包括一个以上的寄存器窗口。
因此,在本发明中,CWR20和CRB30的容量可以根据由MRF10保存的寄存器窗口而改变。
如到目前为止所述,本发明的信息处理装置包括:
主寄存器,由其中存储数据的多个寄存器窗口构成;
当前寄存器,其保存所述主寄存器的所述多个寄存器窗口中的当前寄存器窗口;
替换缓冲器,其插入在所述主寄存器和当前寄存器之间,该替换缓冲器保存随后要保存在该当前寄存器中的寄存器窗口的数据;
算术运算单元,其被连接为使得能够读取保存在当前寄存器和替换缓冲器中的数据,该算术运算单元执行与保存在当前寄存器和替换缓冲器中的数据相关的指令;
控制单元,如果在由所述算术运算单元执行用于将保存在当前寄存器中的当前寄存器窗口切换为另一寄存器窗口的窗口切换指令时译码出该窗口切换指令,则该控制单元以下述的方式执行控制,该方式使得从主寄存器读取在该切换指令的情况下接着要存储在当前寄存器中的数据,并随后将其存储在替换缓冲器中。
在这种情况下,优选地,在由所述算术运算单元完成该窗口切换指令的执行之后,所述控制单元使用保存在替换缓冲器中的数据来替换当前保存在当前寄存器中的数据,从而在窗口切换指令的情况下将保存在下一个寄存器窗口中的数据存储在当前寄存器中。
另外,还优选地,所述算术运算单元对主寄存器和当前寄存器执行写入操作。此时,所述算术运算单元优选地并行执行上述写入操作。
此外,上述主寄存器优选地为重叠窗口类型的寄存器堆。在这种情况下,优选地,所述控制单元执行控制,以使得替换缓冲器保存紧接着要保存在当前寄存器中的寄存器窗口的数据中的不与当前保存在当前寄存器中的当前寄存器窗口重叠的数据。
还优选地,如果由所述算术运算单元译码出切换指令,则所述控制单元读取紧接着要保存的寄存器窗口中的不与保存在当前寄存器中的当前寄存器窗口重叠的数据,并最后使由此读取的数据保存在替换缓冲器中。在这种情况下,在完成切换指令的执行之后,所述控制单元优选地使用保存在替换缓冲器中的数据来替换当前保存在当前寄存器中的数据中的不与下一个寄存器窗口重叠的数据,从而将下一个寄存器窗口的数据保存在当前寄存器中。
另外,在由所述算术运算单元完成切换指令的执行之后,所述控制单元优选地读取当前保存在当前寄存器中的数据中的与下一个寄存器窗口重叠的数据,作为下一个寄存器窗口的数据,从而所述控制单元使得下一个寄存器窗口的数据保存在当前寄存器中。
此外,优选地,所述主寄存器具有当前指针,该当前指针表示保存在当前寄存器中的当前寄存器窗口。在这种情况下,还优选地,待由算术运算单元执行的上述切换指令是用于递增当前指针的SAVE指令,同时是用于递减当前指针的RESTORE指令。

Claims (20)

1、一种算术处理器,其包括:
具有多个寄存器窗口(W0至W7)的至少一个寄存器堆(A),每一个寄存器窗口都由包括输入寄存器、局部寄存器和输出寄存器的一组寄存器构成,所述多个寄存器窗口(W0至W7)被设置为环状形式;
当前窗口指针,当对所述寄存器窗口(W0至W7)进行访问时,该当前窗口指针通过使用指针值来指示当前寄存器窗口(W0至W7)的位置;
当前寄存器(20),其从所述寄存器堆(A)读取存储在由所述当前窗口指针所指示的指针值指定的寄存器窗口(W0至W7)中的数据;
替换缓冲器(30),其设置在所述寄存器堆(A)和所述当前寄存器(20)之间,所述替换缓冲器(30)保存待从所述寄存器堆(A)发送到所述当前寄存器(20)的数据;
算术运算单元(40),其执行(i)用于切换所述寄存器窗口(W0至W7)的窗口切换指令,以及(ii)与存储在所述当前寄存器(20)中的数据相关或者与保存在所述替换缓冲器(30)中的数据相关的指令;以及
控制单元(50),如果在由所述算术运算单元(40)执行窗口切换指令时译码出窗口切换指令,则该控制单元(50)将在完成所述窗口切换指令的执行时由所述当前窗口指针指定的寄存器窗口(W0至W7)的数据传送给所述替换缓冲器(30)。
2、根据权利要求1所述的算术处理器,其中,在由所述算术运算单元(40)完成所述窗口切换指令的执行之后,所述控制单元(50)使用保存在所述替换缓冲器(30)中的数据来替换存储在所述当前寄存器(20)中的数据,从而将在所述窗口切换指令的情况下所述当前寄存器窗口切换到的下一个寄存器窗口(W0至W7)中的数据存储在所述当前寄存器(20)中。
3、根据权利要求1或2所述的算术处理器,其中,所述算术运算单元(40)将在执行所述指令之后获得的结果数据写入到所述寄存器堆(A)和所述当前寄存器(20)中。
4、根据权利要求1或2所述的算术处理器,其中,所述算术运算单元(40)将在执行所述指令之后获得的结果数据并行地写入到所述寄存器堆(A)和所述当前寄存器(20)中。
5、根据权利要求1至4中的任意一项所述的算术处理器,其中,在所述寄存器堆(A)中,将两个相邻寄存器窗口(W0至W7)之一的输入寄存器与这两个相邻寄存器窗口(W0至W7)中的另一个的输出寄存器设置为一个共用寄存器。
6、根据权利要求5所述的算术处理器,其中,如果所述算术运算单元(40)译码出窗口切换指令,则所述控制单元(50)将存储在由所述指针值指定的寄存器窗口(W0至W7)的局部寄存器中的数据、以及存储在由该指针值指定的寄存器窗口(W0至W7)的输入寄存器或输出寄存器中的数据传送给所述替换缓冲器(30)。
7、根据权利要求5或6所述的算术处理器,其中,如果所述算术运算单元(40)完成窗口切换指令的执行,则所述控制单元(50)将存储在由所述指针值指定的寄存器窗口(W0至W7)的局部寄存器中的数据、以及存储在由该指针值指定的寄存器窗口(W0至W7)的输入寄存器或输出寄存器中的数据从所述替换缓冲器(30)传送给所述当前寄存器(20)。
8、一种算术处理器,其包括:
具有多个寄存器窗口(W0至W7)的多个寄存器堆(A),每一个寄存器窗口都包括多个窗口,所述多个窗口被设置为环状形式;
当前窗口指针,当对所述寄存器窗口(W0至W7)进行访问时,该当前窗口指针通过使用指针值来指示当前窗口的位置;
当前寄存器(20),其从所述寄存器堆(A)读取存储在由所述当前窗口指针所指示的指针值指定的当前窗口中的数据;
替换缓冲器(30),其设置在所述寄存器堆(A)和所述当前寄存器(20)之间,所述替换缓冲器(30)保存待从所述寄存器堆(A)发送到所述当前寄存器(20)的所述窗口的数据;
算术运算单元(40),其执行(i)用于切换所述多个窗口的窗口切换指令,以及(ii)与存储在所述当前寄存器(20)中的数据相关或者与保存在所述替换缓冲器(30)中的数据相关的指令;以及
控制单元(50),如果在由所述算术运算单元(40)执行窗口切换指令时译码出该窗口切换指令,则该控制单元(50)将在完成该窗口切换指令的执行时由所述当前窗口指针指定的寄存器窗口(W0至W7)中的数据传送给所述替换缓冲器(30),
如果在由所述算术运算单元(40)的单元执行用于更新由所述当前窗口指针保存的指针值的加载指针指令时,对该指针值进行了更新,则所述控制单元(50)将由经更新的指针值指定的一个寄存器窗口(W0至W7)的数据通过所述替换缓冲器(30)从所述寄存器堆(A)传送到所述当前寄存器(20)。
9、根据权利要求8所述的算术处理器,
其中,所述寄存器堆(A)的窗口由以下部分构成:(i)一组寄存器:输入寄存器;局部寄存器;和输出寄存器,以及(ii)在所述多个寄存器窗口(W0至W7)之间共享的一组全局寄存器,并且
其中,将所述一个寄存器窗口(W0至W7)的数据,即待从所述寄存器堆(A)传送到所述替换缓冲器(30)或者从所述替换缓冲器(30)传送到所述当前寄存器(20)的数据,按照以下顺序进行传送:与全局寄存器相关的数据、与输出寄存器相关的数据、与输入寄存器相关的数据、以及与局部寄存器相关的数据。
10、一种信息处理装置,其包括:
具有多个寄存器窗口(W0至W7)的至少一个寄存器堆(A),每一个寄存器窗口都由包括输入寄存器、局部寄存器和输出寄存器的一组寄存器构成,所述多个寄存器窗口(W0至W7)被设置为环状形式;
当前窗口指针,当对所述寄存器窗口(W0至W7)进行访问时,该当前窗口指针通过使用指针值来指示当前寄存器窗口(W0至W7)的位置;
当前寄存器(20),其从所述寄存器堆(A)读取存储在由所述当前窗口指针所指示的指针值指定的寄存器窗口(W0至W7)中的数据;
替换缓冲器(30),其设置在所述寄存器堆(A)和所述当前寄存器(20)之间,所述替换缓冲器(30)保存待从所述寄存器堆(A)发送到所述当前寄存器(20)的数据;
算术运算单元(40),其执行(i)用于切换所述多个寄存器窗口(W0至W7)的窗口切换指令,以及(ii)与存储在所述当前寄存器(20)中的数据相关或者与保存在所述替换缓冲器(30)中的数据相关的指令;以及
控制单元(50),如果在由所述算术运算单元(40)执行窗口切换指令时译码出该窗口切换指令,则该控制单元(50)将在完成该窗口切换指令的执行时由所述当前窗口指针指定的寄存器窗口(W0至W7)中的数据传送给所述替换缓冲器(30)。
11、根据权利要求10所述的信息处理装置,其中,在由所述算术运算单元(40)完成所述窗口切换指令的执行之后,所述控制单元(50)使用保存在所述替换缓冲器(30)中的数据来替换存储在所述当前寄存器(20)中的数据,从而将在所述窗口切换指令的情况下所述当前寄存器窗口切换到的下一个寄存器窗口(W0至W7)中的数据存储在所述当前寄存器(20)中。
12、根据权利要求10或11所述的信息处理装置,其中,所述算术运算单元(40)将在执行所述指令之后获得的结果数据写入到所述寄存器堆(A)和所述当前寄存器(20)中。
13、根据权利要求10或11所述的信息处理装置,其中,所述算术运算单元(40)将在执行所述指令之后获得的结果数据并行地写入到所述寄存器堆(A)和所述当前寄存器(20)中。
14、根据权利要求10至13中的任意一项所述的信息处理装置,其中,在所述寄存器堆(A)中,将两个相邻寄存器窗口(W0至W7)之一的输入寄存器与这两个相邻寄存器窗口(W0至W7)中的另一个的输出寄存器设置为一个共用寄存器。
15、根据权利要求14所述的信息处理装置,其中,如果所述算术运算单元(40)译码出窗口切换指令,则所述控制单元(50)将存储在由所述指针值指定的寄存器窗口(W0至W7)的局部寄存器中的数据,以及存储在由该指针值指定的寄存器窗口(W0至W7)的输入寄存器或输出寄存器中的数据传送给所述替换缓冲器(30)。
16、根据权利要求14或15所述的信息处理装置,其中,如果所述算术运算单元(40)完成所述窗口切换指令的执行,则所述控制单元(50)将存储在由所述指针值指定的寄存器窗口(W0至W7)的局部寄存器中的数据,以及存储在由该指针值指定的寄存器窗口(W0至W7)的输入寄存器或输出寄存器中的数据从所述替换缓冲器(30)传送到所述当前寄存器(20)。
17、一种信息处理装置,其包括:
具有多个寄存器窗口(W0至W7)的多个寄存器堆(A),每一个寄存器窗口都包括多个窗口,所述多个窗口被设置为环状形式;
当前窗口指针,当对所述寄存器窗口(W0至W7)进行访问时,该当前窗口指针通过使用指针值来指示当前窗口的位置;
当前寄存器(20),其从所述寄存器堆(A)读取存储在由所述当前窗口指针所指示的指针值指定的当前窗口中的数据;
替换缓冲器(30),其设置在所述寄存器堆(A)和所述当前寄存器(20)之间,所述替换缓冲器(30)保存待从所述寄存器堆(A)发送到所述当前寄存器(20)的所述窗口的数据;
算术运算单元(40),其执行(i)用于切换所述多个窗口的窗口切换指令,以及(ii)与存储在所述当前寄存器(20)中的数据相关或者与保存在所述替换缓冲器(30)中的数据相关的指令;以及
控制单元(50),如果在由所述算术运算单元(40)的单元执行用于更新由所述当前窗口指针保存的指针值的加载指针指令时,对所述指针值进行了更新,则该控制单元(50)将由经更新的指针值指定的一个寄存器窗口(W0至W7)的数据通过所述替换缓冲器(30)从所述寄存器堆(A)传送到所述当前寄存器(20)。
18、根据权利要求17所述的信息处理装置,
其中,所述寄存器堆(A)的窗口由以下部分构成:(i)一组寄存器:输入寄存器;局部寄存器;和输出寄存器,以及(ii)在所述多个寄存器窗口(W0至W7)之间共享的一组全局寄存器,并且
其中,将所述一个寄存器窗口(W0至W7)的数据,即待从所述寄存器堆(A)传送到所述替换缓冲器(30)或者从所述替换缓冲器(30)传送到所述当前寄存器(20)的数据按照以下顺序进行传送:与全局寄存器相关的数据、与输出寄存器相关的数据、与输入寄存器相关的数据、以及与局部寄存器相关的数据。
19、一种用于算术处理器的寄存器堆控制方法,该算术处理器包括:
具有被设置为环状形式的多个寄存器窗口(W0至W7)的寄存器堆(A),每一个所述寄存器窗口都由一组寄存器构成;当前窗口指针,其通过使用指针值来指示当前寄存器窗口(W0至W7)的位置;当前寄存器(20),其从所述寄存器堆(A)读取存储在由所述当前窗口指针所指示的指针值指定的寄存器窗口(W0至W7)中的数据;替换缓冲器(30),其保存待从所述寄存器堆(A)发送到所述当前寄存器(20)的数据,所述方法包括:
执行(i)用于切换所述多个寄存器窗口(W0至W7)的窗口切换指令,以及(ii)与存储在所述当前寄存器(20)中的数据相关或者与保存在所述替换缓冲器(30)中的数据相关的指令,以及
如果在由算术运算单元(40)执行窗口切换指令时译码出该窗口切换指令,则将在完成该窗口切换指令的执行时由所述当前窗口指针指定的寄存器窗口(W0至W7)中的数据传送给所述替换缓冲器(30)。
20、根据权利要求19所述的寄存器堆控制方法,还包括:
在由所述算术运算单元(40)完成所述窗口切换指令的执行之后,使用保存在所述替换缓冲器(30)中的数据来替换存储在所述当前寄存器(20)中的数据,从而将在所述窗口切换指令的情况下所述当前寄存器窗口切换到的下一个寄存器窗口(W0至W7)中的数据存储在所述当前寄存器(20)中。
CNB2006100576399A 2005-09-22 2006-02-22 算术运算装置、信息处理装置以及寄存器堆控制方法 Expired - Fee Related CN100394382C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005275024 2005-09-22
JP2005275024A JP5028774B2 (ja) 2005-09-22 2005-09-22 演算処理装置,情報処理装置,及びレジスタファイルの制御方法

Publications (2)

Publication Number Publication Date
CN1936831A true CN1936831A (zh) 2007-03-28
CN100394382C CN100394382C (zh) 2008-06-11

Family

ID=37547578

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100576399A Expired - Fee Related CN100394382C (zh) 2005-09-22 2006-02-22 算术运算装置、信息处理装置以及寄存器堆控制方法

Country Status (6)

Country Link
US (1) US7343478B2 (zh)
EP (1) EP1768020B1 (zh)
JP (1) JP5028774B2 (zh)
KR (1) KR100777772B1 (zh)
CN (1) CN100394382C (zh)
DE (1) DE602006013079D1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101809537B (zh) * 2007-09-12 2014-10-22 高通股份有限公司 用于管线式处理的寄存器堆系统和方法
CN116450216A (zh) * 2023-06-12 2023-07-18 上海灵动微电子股份有限公司 共享硬件运算单元的局部缓存方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5130757B2 (ja) * 2007-03-16 2013-01-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP5104863B2 (ja) 2007-06-20 2012-12-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN101689150B (zh) * 2007-06-20 2011-11-30 富士通株式会社 信息处理装置及控制方法
CN101689110B (zh) 2007-06-20 2013-07-31 富士通株式会社 指令执行控制装置以及指令执行控制方法
WO2008155838A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令処理装置
JP5229321B2 (ja) * 2008-08-08 2013-07-03 富士通株式会社 演算処理装置
JP6107485B2 (ja) 2013-07-04 2017-04-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10977034B2 (en) 2018-11-07 2021-04-13 International Business Machines Corporation Instruction completion table with ready-to-complete vector

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159680A (en) 1988-07-28 1992-10-27 Sun Microsystems, Inc. Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register
US5083263A (en) 1988-07-28 1992-01-21 Sun Microsystems, Inc. BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer
JPH02148223A (ja) * 1988-11-30 1990-06-07 Toshiba Corp レジスタ退避復活装置
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
JP2564054B2 (ja) * 1991-07-16 1996-12-18 松下電器産業株式会社 レジスタファイル
JP3595028B2 (ja) 1995-06-20 2004-12-02 富士通株式会社 リアルタイムosの処理方法
JPH0916409A (ja) * 1995-06-30 1997-01-17 Matsushita Electric Ind Co Ltd マイクロコンピュータ
US6263416B1 (en) * 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
KR19990026795A (ko) 1997-09-26 1999-04-15 윤종용 마이크로프로세서
US6842853B1 (en) * 1999-01-13 2005-01-11 Sun Microsystems, Inc. Thread suspension system and method
US6314510B1 (en) * 1999-04-14 2001-11-06 Sun Microsystems, Inc. Microprocessor with reduced context switching overhead and corresponding method
JP2000353092A (ja) * 1999-06-09 2000-12-19 Nec Corp 情報処理装置及びそのレジスタファイル切替方法
JP3737755B2 (ja) * 2001-12-28 2006-01-25 富士通株式会社 レジスタウィンドウ方式によるレジスタファイル及びその制御方法
US7080237B2 (en) * 2002-05-24 2006-07-18 Sun Microsystems, Inc. Register window flattening logic for dependency checking among instructions
US7216216B1 (en) * 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101809537B (zh) * 2007-09-12 2014-10-22 高通股份有限公司 用于管线式处理的寄存器堆系统和方法
CN116450216A (zh) * 2023-06-12 2023-07-18 上海灵动微电子股份有限公司 共享硬件运算单元的局部缓存方法
CN116450216B (zh) * 2023-06-12 2023-08-29 上海灵动微电子股份有限公司 共享硬件运算单元的局部缓存方法

Also Published As

Publication number Publication date
JP2007087108A (ja) 2007-04-05
EP1768020A3 (en) 2009-02-25
KR20070033862A (ko) 2007-03-27
KR100777772B1 (ko) 2007-11-20
CN100394382C (zh) 2008-06-11
EP1768020B1 (en) 2010-03-24
JP5028774B2 (ja) 2012-09-19
EP1768020A2 (en) 2007-03-28
US7343478B2 (en) 2008-03-11
DE602006013079D1 (de) 2010-05-06
US20070067612A1 (en) 2007-03-22

Similar Documents

Publication Publication Date Title
CN100394382C (zh) 算术运算装置、信息处理装置以及寄存器堆控制方法
RU2263949C2 (ru) Перезапускаемые транслированные команды
JP3818315B2 (ja) スーパースケーラマイクロプロセサ
CN1127687C (zh) 带外部协处理器可访问的上下文切换寄存器组的risc处理器
US7134119B2 (en) Intercalling between native and non-native instruction sets
EP0962856A2 (en) A dual-mode VLIW architecture with software-controlled parallelism
EP2083352B1 (en) Processing unit
US11693661B2 (en) Mechanism for interrupting and resuming execution on an unprotected pipeline processor
JPH1021074A (ja) 割り込み制御方式、プロセッサ及び計算機システム
JP3816845B2 (ja) プロセッサ及び命令制御方法
EP1039376B1 (en) Sub-instruction emulation in a VLIW processor
US11194577B2 (en) Instruction issue according to in-order or out-of-order execution modes
JPH09274567A (ja) プログラムの実行制御方法及びそのためのプロセッサ
KR100861073B1 (ko) 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조
JP2006139496A (ja) 演算処理装置
JPS6132143A (ja) フア−ムウエア支援システム
JPH0594304A (ja) 割込み制御装置

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080611

Termination date: 20150222

EXPY Termination of patent right or utility model