CN101470599B - 处理单元 - Google Patents
处理单元 Download PDFInfo
- Publication number
- CN101470599B CN101470599B CN2008101850417A CN200810185041A CN101470599B CN 101470599 B CN101470599 B CN 101470599B CN 2008101850417 A CN2008101850417 A CN 2008101850417A CN 200810185041 A CN200810185041 A CN 200810185041A CN 101470599 B CN101470599 B CN 101470599B
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- extended
- xar
- extension information
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims abstract description 126
- 238000000034 method Methods 0.000 claims description 37
- 230000007704 transition Effects 0.000 claims description 4
- 230000033228 biological regulation Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 24
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
Images
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
-
- 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/30181—Instruction operation extension or modification
-
- 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/30101—Special purpose registers
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
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)
- Advance Control (AREA)
Abstract
本发明涉及处理单元。该处理单元具有扩展寄存器,能够向所述扩展寄存器设定指示指令的扩展的指令扩展信息。在向所述扩展寄存器设定所述指令扩展信息时,操作单元执行将所述指令扩展信息写入所述扩展寄存器的第一个指令之后的后续指令,并基于所述指令扩展信息来扩展所述后续指令。
Description
技术领域
本发明的一个方面涉及处理单元。
背景技术
在处理浮点运算的数值计算程序中,增加处理单元内部的寄存器的数量使得能够通过编译器实现诸如循环展开和软件流水等的优化,从而能够改善性能。
另一方面,在例如RISC指令集架构或者SPARC架构的处理单元中,例如设置了将指令长度固定为32位的限制,并且还以单个指令指示单个处理,使得一个指令所包含的信息受限。
鉴于这样的限制,已经提出了各种新指令和增加寄存器数量的建议。
根据专利文献1和专利文献2,指定寄存器的寄存器指定信息分为两部分。之后,将该两部分布置在分开的指令码的基础单元上,并且使一个指令码可被省略。如果省略了可省略的指令码,则通过隐含地假设预定寄存器指定信息来进行寄存器选择操作。
根据专利文献3和专利文献4,通过合并存储器与寄存器之间的传送指令和寄存器之间的操作指令的多个指令代码,使得在保持与现有CPU的兼容性的同时,能够指示存储器中的数据操作。
另外,根据专利文献5和专利文献6,用户能够增加命令,使得能够容易地重新设计处理器。
【专利文献1】日本特开2001-202243
【专利文献2】日本特开2006-313561
【专利文献3】日本特开2005-353105
【专利文献4】日本特开2006-284962
【专利文献5】日本特开2003-518280
【专利文献6】日本特开2007-250010
假设指令具有32位的操作码长度。对于示出正执行处理的指令的逻辑地址和将要执行的下一指令的逻辑地址NPC(下一程序计数器)的PC(程序计数器)来说,只要PC所指向的指令不是分支指令或陷阱(trap)指令,就指定了诸如NPC=PC+4的逻辑规范。因此,如果将一个指令的长度扩展到64位,则无法操作现有软件。
鉴于这种限制,在浮点乘积之和运算中,必须要指定总共四个寄存器,其中三个源寄存器和一个目标寄存器,当指定了8位寄存器地址时,将需要4×8位=32位。这意味着将32位指令中的32位用于指定寄存器,因而根本不能够保存乘积之和运算的指令类型的操作码的信息。因此,实践中不能定义具有8位寄存器地址的32位指令。
作为在32位长度的限制下的操作多个寄存器的常规方式,已知一种采用了寄存器窗口系统的指令集架构。
以SPARC架构为例,由单独的指令来设定被称为CWP(当前窗口指针)的指针,并且后续指令引用CWP所指向的窗口中的寄存器,例如,窗口中能够由一个操作码指示的32个5位寄存器。
之后,将一个寄存器窗口分配给包含了多个指令的一个子例程。当引用或更新其它窗口时,改变CWP并随后执行指令。
在该系统中,一个指令仅能够进行32个寄存器中的处理。因此,不能进行同时使用32个以上的寄存器的处理,并且不能实现通过编译器的诸如软件流水和循环展开等的优化,因而不能够用于性能的改善。
通过编译器的优化,在性能改善后能够实现同时利用例如100或200个寄存器的任选寄存器数据输入的一条处理。也就是说,由于在常规的RISC指令集架构中的操作码长度的限制,在一条处理中操作的寄存器的数量不能超过特定数量,因此不能期望浮点程序的性能改善,这已经成为了一个主要问题。
通过一个指令来执行多个处理的被称为SIMD(单指令多数据)类型的指令作为浮点指令是有效的。
然而,如果在处理单元中重新增添加法、乘法、乘积之和运算、除法、以及平方根运算,则必须分配与附加指令一样多的指令操作码。为此,会分配许多对于现有加法、乘法、以及乘积之和运算来说没有用处的空操作码。因此,在其中未初始地假设SIMD指令而是分配操作码的指令集中,可能没有空字段,并且即便有空字段,也会将SIMD指令分配给碰巧为空的操作码,因此,很难按照良序方式将SIMD指令逻辑地分配给操作码。
近年来的高性能处理器在处理器芯片中或靠近处理器的地方具有高速缓冲存储器。这是因为存储器的处理速度与处理器的处理速度之间的差异已变得非常大,并且存储器中的数据可被控制为寄存在高速缓冲存储器中,从而能够在高速缓冲存储器上进行针对读和写的高速存取。
高速缓冲存储器具有组相联结构并且高速缓存的寄存/释放通常按照LRU(最近最少使用)来控制,因此,可通过硬件来任意地从高速缓存中释放寄存的数据。在此情况下,当寄存了将不会重新使用的数据时,即使根据寄存器的情况存在将不会重新使用的数据时,也会释放可能重新使用的数据,因此造成了性能下降。
关于上面描述的由SIMD指令进行的通过一个指令来操作多条数据的处理,例如,通常通过使数据宽度加倍(即,使一个寄存器的位数加倍,成为128位)来实现通过SIMD指令对两条双倍精度浮点数据进行操作的处理。然而,并不是所有的程序都能够执行SIMD指令,而且在这种情况下,浪费了扩展的数据宽度的资源。此外,不能分开地操作128位中的前半部分数据和后半部分数据,由此给软件程序附加了限制。
发明内容
根据本发明的一个方面,提供了一种处理单元及其扩展指令的方法,该处理单元通过定义新的扩展专用指令,在即使操作代码具有固定长度的情况下,也能够扩展指令。
另外,根据本发明的一个方面,提供了一种处理单元及其指令的扩展方法,该处理单元能够通过将现有指令与一个扩展指令合并,并且从扩展寄存器选择一个操作的输入数据来进行处理。
另外,根据本发明的一个方面,提供了一种处理单元及其指令的扩展方法,该处理单元通过定义新增的扩展专用指令并且将该新指令与常规指令集中定义的加法、乘法、乘积之和运算等进行合并从而能够定义诸如加法、乘法、和/或乘积之和运算的SIMD指令处理的指令。
另外,根据本发明的一个方面,提供了一种处理单元,该处理单元在通过加载指令、存储指令以及预取指令等以高速缓存来寄存数据时,能够针对每个指令来指示将进行寄存的高速缓存路组(cache way)的属性,例如,来自软件的路组号码等。
另外,根据本发明的一个方面,提供了一种处理单元及其指令的扩展方法,该处理单元在不使用SIMD指令的程序中能够高效地将所有寄存器作为不同的地址来使用,并且即使在使用SIMD指令的程序中也能够在寄存器中独立地操作前半部分数据和后半部分数据,从而提高了程序设计的实用性。
根据本发明的一个方面,提供了一种处理单元,所述处理单元具有扩展寄存器,能够针对该扩展寄存器设定指示指令的扩展的指令扩展信息;和操作单元,当向该扩展寄存器设定了指令扩展信息时,所述操作单元通过基于指令扩展信息对用于将指令扩展信息写入扩展寄存器的第一个指令之后的后续指令进行扩展,来执行该后续指令。
本发明的附加方面和优点将在下面的描述中被部分地阐述,并且可部分地通过参考构成本说明的一部分的附图而从所述说明中显而易见,或可通过本发明的实践而习得,在所述附图中通篇采用相同的参考标记来指示相同的部分。本发明的各方面和优点将通过所附权利要求中具体指出的部件和组合来实现并获得。
应当理解,上述一般描述和下面的详细描述仅是示例性和说明性的,并且并非对所要求的本发明的限制。
附图说明
图1是示出了本发明的实施方式的处理单元的图;
图2是示出了所述处理单元的浮点寄存器的结构的图;
图3是示出了所述处理单元的定点寄存器的结构的图;
图4是示出了XAR寄存器的结构的图;
图5是例示了通过XAR寄存器进行的指令扩展的图;
图6是示出了其中在向该XAR寄存器设置了数据后,执行双倍精度浮点加载指令作为下一个指令的情况的图;
图7是示出了SXAR1指令字段的图;
图8是示出了SXAR2指令字段的图;
图9是例示了利用SXAR2指令的指令生成的图;
图10是例示了向使用扩展指令的模式切换的图;
图11是示出了其中通过本实施方式的处理单元执行与图10相同的处理的情况的图;
图12是例示了当执行SXAR2指令时的操作的图;
图13是执行非SIMD指令和SIMD指令的计算单元的框图;
图14是示出了TXAR的结构的图;
图15是示出当出现陷阱时堆栈TXAR与XAR寄存器之间的关系的图;
图16是例示了在执行由SXAR2指令所扩展的指令的过程中出现陷阱时XAR寄存器和堆栈TXAR的活动的图;
图17是示出了扩展异常陷阱处理的图;
图18是示出了XASR寄存器的结构的图;
图19是示出了当通过SXAR指令执行指令扩展时的指令扩展的定时的图;
图20是示出了当通过Write-XAR指令执行指令扩展时的指令扩展的定时的图;
图21是示出了在软件模拟中未定义的指令异常例程的操作的流程图;
图22是示出了一般调试程序的处理的图;以及
图23是示出了针对该处理单元所扩展的指令的调试程序处理的图。
具体实施方式
下面将参照附图对本发明的实施方式进行描述。
下面所描述的本实施方式的处理单元是基于JPS1(SPARC联合编程规范)的示例,JPS1是基于SPARC架构的逻辑规范。JPS1具有32个双倍精度64位浮点寄存器。JPS1还在寄存器窗口系统中一共具有32个定点寄存器,将由CWP切换的8个输入寄存器、8个输出寄存器、和8个局部寄存器、以及独立于CWP的8个全局寄存器。
顺便提及,本发明的处理单元不限于SPARC架构。例如,本发明还可应用于其中指令长度固定的RISC架构。
图1是示出了本实施方式的处理单元的图。处理单元100被配置有作为用于指令扩展的专用寄存器的扩展的运算寄存器1。此后将该扩展的运算寄存器称为“XAR寄存器”。指令扩展信息存储在XAR寄存器1中。
根据存储在XAR寄存器1中的内容,处理器100对在用于将数据存储在XAR寄存器1中的指令之后将要执行的现有指令进行扩展。当对现有指令进行扩展时,能够使用除了上述JPS1的寄存器以外的扩展寄存器,并且能够执行SIMD指令。
根据本实施方式的方法,指令的长度是固定的,在JPS1的情况下是32位,因此能够不做任何改变地使用现有软件。
此外,仅通过合并用于将信息写入XAR寄存器1的指令和现有指令就能够扩展所述现有指令。因此,几乎不存在对于指令操作代码的限制。
D_XAR寄存器2是在执行重写XAR寄存器1的内容的SXAR指令(SXAR:组XAR)时,用于临时存储要写入XAR寄存器1中的值的临时寄存器。当通过指令解码器4对SXAR指令之后的指令进行解码时,指令解码器4引用D_XAR寄存器2作为XAR寄存器的内容。因此,能够几乎同时对SXAR指令和SXAR指令之后的现有指令进行解码。当寄存处理失败或通过Write-XAR指令更新了XAR寄存器1的时候,将存储在XAR寄存器1中的数据写入D_XAR寄存器2。稍后将详细描述SXAR指令和Write-XAR指令。
XAR更新缓冲器3是临时存储要写入XAR寄存器1的数据的缓冲器。指令解码器4从指令高速缓存7读取指令代码以对该指令代码进行解码。执行操作部5基于指令解码器4的解码结果来执行指令。寄存器6是执行操作部5从中读取数据或向其写入数据的一组寄存器。稍后将详细描述寄存器6。指令高速缓存7是对来自二级高速缓存的指令代码进行高速缓存的一级高速缓存存储器。数据高速缓存8是对来自二级高速缓存的数据代码进行高速缓存的一级高速缓存存储器。二级高速缓存9是对来自存储器的数据进行高速缓存的二级高速缓存存储器。
接下来,将对寄存器6的结构进行描述。
图2示出了本实施方式的处理单元100的浮点寄存器的结构。当JPS1具有从%f0到%f62范围的32个浮点寄存器时,将处理单元100中存储64位长度的数据的浮点寄存器扩展为从%f0到%f510范围的256个寄存器。在图2中,斜向阴影部分是浮点寄存器的扩展部分。如果指令不是SIMD指令,则能够在图2中的所有256个寄存器中执行操作。
由于JPS1采用了如下规则,即,将仅利用偶数来指定双倍精度浮点寄存器的地址,扩展寄存器也遵守该规则,并且仅使用从0到510的偶数来指定寄存器地址。此外,由于仅使用偶数来指定双倍精度浮点寄存器的寄存器地址,因此寄存器地址的最低位通常是“0”。因此,能够以8位扩展地址来指定0至510。顺便提及,仅在XAR_VAL=1时才能够访问图2中的斜向阴影的扩展寄存器。
图3示出了本实施方式的处理单元100的定点寄存器的结构。处理单元100具有一共32个64位长度数据的定点寄存器,8个全局寄存器以及24个基于CWP的寄存器,其与JPS1的常规寄存器相对应。当切换窗口时,这些寄存器从CWP切换到CWP+1,或切换到CWP-1。此外,将独立于CWP的32个XG(扩展全局,extended Global)寄存器增加到处理单元100的定点寄存器中,从而将寄存器扩展到总共64个。在图3中,斜向阴影部分是定点寄存器的扩展部分。增加的寄存器不采用窗口系统。
为了使用图2和图3中的扩展部分的寄存器,当XAR寄存器的F_VAL标志位或S_VAL标志位被设定为数值“1”时,处理单元100执行由JPS1所定义的诸如双倍精度浮点乘积之和运算FMADD、定点加法ADD、或双倍精度浮点加载LDDF等的现有指令。稍后将对F_VAL标志位=1和S_VAL标志位=1进行详细描述。
接下来,将对XAR寄存器的结构进行描述。图4是示出了XAR寄存器的结构的图。在图4中,XAR寄存器大致分为从属指令F(第一)部和从属指令S(第二)部。F部具有F_VAL、F_SIMD、F_RD、F_RS1、F_RS2、以及F_RS3区域。类似的是,S部具有S_VAL、S_SIMD、S_RD、S_RS1、S_RS2、以及S_RS3区域。F_VAL和S_VAL分别是1位的区域,并且显示了指示出后续信息是否是有效的信息,即表示是否“有效”。
当F_VAL=1时,以F部的指令扩展信息(F_SIMD、F_RD、F_RS1、F_RS2、以及F_RS3)扩展紧随存储在XAR寄存器中的指令之后的一个指令。当F_VAL=0且S_VAL=1时,以S部的指令扩展信息(S_SIMD、S_RD、S_RS1、S_RS2、以及S_RS3)扩展紧随在XAR指令之后的一个指令。当F_VAL=1且S_VAL=1时,扩展紧随在XAR指令之后的两个连续指令。由在F部中指示的指令扩展信息扩展紧随在XAR指令之后的第一个指令,而由在S部中指示的指令扩展信息扩展紧随在第一个指令之后的第二个指令。
之后,当完成了将扩展指令写入处理单元100的寄存器6的操作时,即表示“提交”时,对与该扩展指令相对应的指令扩展信息及其有效标志位进行重置。当将F部的指令扩展信息写入寄存器时,F_VAL被设为“1”,而当利用F部的指令扩展信息扩展了指令时,F_VAL被重置为“0”。类似的是,当将S部的指令扩展信息写入寄存器时,S_VAL被设为“1”,而当利用S部的指令扩展信息扩展了指令时,S_VAL被重置为“0”。
在接下来的描述中,将其中存储了F部的指令扩展信息(F_SIMD、F_RD、F_RS1、F_RS2、以及F_RS3)的区域称为F区域,而将其中存储了S部的指令扩展信息(S_SIMD、S_RD、S_RS1、S_RS2、以及S_RS3))的区域称为S区域。
F_SIMD和S_SIMD是表示扩展信息是否是SIMD指令的1位区域。当将数值“1”设置给F_SIMD或S_SIMD时,以F部的指令扩展信息扩展的指令或以S部的指令扩展信息扩展的指令变为SIMD指令。稍后将描述根据本实施方式的处理单元的SIMD指令。
F_RD和S_RD是存储用于指定将被扩展的指令的目标寄存器的地址的扩展部分的3个位的区域。F_RS1至F_RS3和S_RS1至S_RS3是地址扩展区域,其中每个区域都存储有用于指定源寄存器的地址的扩展部分的3个位。
当浮点寄存器的数量被扩展到256个时,这3个位变为缺乏现有指令的地址的高位3位。在指定定点寄存器时,仅使用3个位中的最低1位。之后,如果高位的2位在指定了定点寄存器后变为“1”,则在执行扩展的指令时引起表示由XAR引起的扩展违规的新异常非法动作陷阱。这个新异常非法动作陷阱还出现在将第三源寄存器指定用于加法指令或乘法指令等时。
图5例示了使用XAR寄存器的指令扩展。图5是浮点运算的扩展的示例。在图5中,示出了其中在通过SXAR指令等为XAR寄存器设定了数据之后,将在JPS1中定义的双倍精度浮点乘积之和运算指令(FMADD)作为下一个指令来执行的示例。
如图5中所示,必须在FMADD指令中指定三个源寄存器和一个目标寄存器。在FMADD指令中用于目标寄存器指定的寄存器指定地址具有[4:0]的5位。利用通过将XAR寄存器中的地址扩展区域的[7:5]的3位添加到所述5位而获得的一共8位来指定源寄存器。由XAR寄存器扩展的FMADD指令能够指定256个寄存器分别作为源寄存器和目标寄存器。
虽然需要在FMADD指令中指定三个源寄存器和一个目标寄存器时,但依据指令的类型,可能不需要指定寄存器的数量。对于诸如加载指令、存储指令或预取指令等双倍精度浮点加载指令的存储器存取来说,不需要指定三个源寄存器。在该情况下,该字段用于对在高速缓存对数据进行寄存时的高速缓存路组的属性进行指示的扇区号。
图6示出了其中执行双倍精度浮点加载指令的示例。图6示出了其中在向XAR寄存器设定了数据之后,将在JPS1中定义的双倍精度浮点加载(LDDF)指令作为下一个指令来执行的情况作为示例。
如图6中所示,LDDF指令仅要求指定两个源寄存器和一个目标寄存器。因此,其中指定第三源寄存器的F_RS3的区域11为空。
在本实施方式中,XAR寄存器的空白区域11用于指示高速缓存扇区=1作为扇区号,所述扇区号指示在高速缓存对数据进行寄存时的高速缓存路组的属性。
接下来,将描述用于重写XAR寄存器的值的SXAR指令。在根据本实施方式的处理单元中,SXAR指令是用于更新XAR寄存器的指令之一,并且其被定义为如下指令,其以直接形式具有指令操作代码中的更新数据。因此,当指令被解码时,硬件能够推测性地确定将写入XAR中的内容,因此能够容易地执行对下一个要解码的指令的扩展。
在SXAR指令中,要写入图1中XAR寄存器1中的信息是经由D_XAR寄存器2和XAR更新缓冲3写入XAR寄存器1中的。通过参考D_XAR寄存器2,SXAR指令之后的指令能够知道XAR寄存器1的内容,因此,指令解码器4能够几乎同时地对SXAR指令和SXAR指令之后的指令进行解码。
除了SXAR指令之外,能够将信息直接写入XAR寄存器1中而无需经过D_XAR寄存器2或XAR更新缓冲3的Write-XAR指令可用作重写XAR寄存器的指令。对Write-XAR指令的解码直到数据被直接地写入XAR寄存器1才完成,并且对下一个将被扩展的指令的解码直到Write-XAR指令完成才完成。稍后将详细地描述Write-XAR指令。
将SXAR1和SXAR2这两个指令定义为SXAR指令。图7示出了SXAR1指令字段。SXAR1指令是扩展SXAR1指令之后的单个指令的指令。在图7中,在SXAR1指令的情况下,在表示指令类型的OPCODE[4:0]区域中设定指示SXAR指令的“OP[1:0]=0”和“OP2[3:0]=7”。同样在SXAR1指令的情况下,向存储着显示指令是SXAR1指令还是SXAR2指令的信息的COMB区域设定指示SXAR1指令的“0”。另外,把要写入XAR寄存器的F部的指令扩展信息中的信息设定到COMB区域之后的操作数区域。在SXAR1指令中操作数区域之后的区域的值是不确定的。在将被扩展的指令是存储器存取指令的情况下,表示第三源寄存器的区域F_RS3[7:5]变为表示诸如扇区号的用于高速缓存存储器存取的附加信息。
当执行图7中示出的SXAR1指令时,将SXAR1指令的操作数的值被设定到XAR寄存器的F区域并且以数值“1”被设定给F_VAL。之后,基于XAR寄存器的F区域的值来扩展在SXAR1指令之后立即执行的指令。当完成了在SXAR1指令之后立即执行的指令时,清空XAR寄存器的F区域而且将F_VAL重置为“0”。
接下来,将描述SXAR2指令。SXAR2指令通过设定XAR寄存器的值来扩展SXAR2指令之后的两个指令。图8示出了SXAR2指令的字段。在图8中,在SXAR2指令的情况下,与图7所示出的SXAR1指令一样,在表示指令类型的OPCODE[4:0]区域中设定显示SXAR指令的“OP[1:0]=0”和“OP2[3:0]=7”。同样,将指示SXAR2指令的值“1”设定到表示指令是SXAR1指令还是SXAR2指令的COMB区域。COMB区域之后的操作数区域包括从属指令F部和从属指令S部。在从属指令F部中设置将被写入XAR寄存器的F区域的信息,在从属指令S部中设置将被写入XAR寄存器的S区域的信息。在被扩展的指令是存储器存取指令的情况下,过去用于表示第三源寄存器的区域F_RS3[7:5]和S_RS3[7:5]变为表示用于高速缓存存储器存取的附加信息。
当执行图8中示出的SXAR2指令时,为XAR寄存器的F区域和S区域设置值并且将值“1”设定给F_VAL和S_VAL。接着,与SXAR1指令一样,基于XAR寄存器的F区域的值来扩展在SXAR2指令之后执行的第一个指令。当完成了第一个指令的执行时,清空XAR寄存器的F区域而且将F_VAL重置为“0”。接着,基于XAR寄存器的S区域的值来扩展在第一个指令之后执行的第二个指令。当完成了第二个指令的执行时,清空XAR寄存器的S区域而且将S_VAL重置为“0”。
如上所述,通过利用SXAR2指令,能够扩展紧随SXAR2指令之后的两个指令。因此,当扩展指令连续时,SXAR2指令能够实现比SXAR1指令更具有代码效率的编程。
图9是例示了利用SXAR2指令的指令生成的图。在图9中,程序21是未利用SXAR2指令而由代码生成的。相对的是,从软件角度讲等效于程序21的程序22是利用SXAR2指令而由代码生成的。
两个程序的比较显示了利用SXAR2指令生成的程序22因具有更少数量的指令,而具有比程序21更高的代码效率。因此,推荐编译器使用能够减少指令的数量的程序22的代码生成方式。
如上所述,在本实施方式的处理单元中,提供了一种XAR寄存器,并且通过在XAR寄存器中存储指令扩展信息能够对指令进行扩展。
执行这种指令扩展的方法的示例是模式切换方法。在模式切换方法中,定义将模式切换到扩展指令执行模式的寄存器,而且当将执行扩展指令时,重写模式切换寄存器以切换到扩展指令执行模式。
当使用了这种模式切换方法时,如果有规则地使用按照模式的指令的扩展操作,则该方法是高效的。然而,如果将扩展指令和不扩展指令混杂在一起,则必须要重复地进入扩展指令执行模式和从扩展指令执行模式返回正常模式。因此,每一次切换模式,都要执行重写模式切换寄存器的指令。
例如,当切换到特别限制了32位地址空间而不是64位空间的状态时,已经知道了诸如处理器状态寄存器的由模式标志位系统来指定地址空间的逻辑规范。模式标志位在执行设定该模式标志位的指令之后保留其状态,直到执行重置模式标志位的指令。
在设定了32位模式的情况下,以32位模式来描述整个程序。因此,不需要针对每个指令频繁地切换到64位空间,因而这种模式表指定是充分的。
然而,当在本实施方式的处理单元中使用扩展寄存器地址或SIMD指令时,经常将需要扩展的指令和不需要扩展的指令混在一起。因此,如果执行针对每个指令进行充分切换的程序,则除了设定例如模式设置的指令之外,还需要执行重置模式的指令,从而进一步增加了指令的数量。因此,本实施方式的处理单元中,定义了扩展信息,使得在将所述扩展信息设定到XAR寄存器后,可与执行扩展指令同步地重置所述扩展信息。这使得不需要插入用于重置指令扩展的指令。
图10是例示了向使用扩展指令的模式切换的图。图10示出了其中执行FAMDD指令作为扩展指令,之后执行LDDF指令作为不扩展指令的处理的情况。在图10中,在执行FMADD指令之前执行模式切换寄存器写指令,并且在执行LDDF指令之前执行模式切换寄存器重置指令以返回正常模式。
因此,在图10的示例中,一共需要四个指令来执行扩展的FMADD指令和不扩展的LDDF指令。相对照的是,在由本实施方式的处理单元执行的指令的扩展方法中,当执行了扩展指令时,自动地重置存储在XAR寄存器中的对应信息。因此,即便把需要扩展的指令和不需要被扩展的指令混在一起,也不需要重置XAR寄存器,由此相应地提高了代码效率。
图11是示出了其中由本实施方式的处理单元来执行图10中的相同处理的情况的图。在图11中,在作为扩展指令的FMADD之前执行SXAR1指令以将用于执行扩展的信息写入XAR寄存器。接着,当执行FMADD指令作为扩展指令时,重置XAR寄存器中的用于指令扩展的信息。因此,由于在XAR寄存器中没有用于指令扩展的信息,所以在不扩展指令的情况下执行要在FMADD指令之后执行的LDDF指令。
因此,如果在处理单元中执行需要扩展的FMADD指令和不需要扩展的LDDF指令,仅需要三个指令。因此,在该情况下,能够通过具有比需要切换其模式的处理单元的程序具有更高代码效率的程序来实现相同的处理。
接下来,将例示执行SXAR2指令时的操作详情。图12是例示了当执行SXAR2指令时的操作的图。图12示出了其中通过扩展FMADD指令和随后的LDDF指令来执行这些指令的情况。在图12示出的情况中,将要执行的指令是三个指令,即SXAR2指令、FMADD指令、以及LDDF指令。
在执行了SXAR2指令之后,将用于指令扩展的扩展信息写入了XAR寄存器的F区域和S区域。此外,以将值“1”设定给F_VAL和S_VAL。
接下来,通过引用XAR寄存器的F区域来执行作为第一扩展指令的FMADD指令,作为扩展的FMADD指令。之后,在执行了FMADD指令后,重置XAR寄存器的F_VAL和F区域。
接下来,通过引用XAR寄存器的S区域,来执行作为FMADD指令之后接着执行的第二个扩展指令的LDDF指令,作为扩展的LDDF指令。之后,在执行了LDDF指令后,重置XAR寄存器的S_VAL和S区域。
因此,当执行SXAR2指令时,在执行第一个扩展指令之后重置F区域和F_VAL,并且接着执行第二个扩展指令。每次执行了其中重置S区域和F_VAL的两个扩展指令中的一个时,重置XAR寄存器中的对应区域。
如上所述,由于每次完成各个指令时都重置XAR寄存器中的对应区域,所以通过SXAR2指令能够扩展两个后续的指令,而且即便混合了需要扩展的指令和不需要扩展的指令,也不会降低代码效率。
此外,由于每次完成各个指令时都重置XAR寄存器中的对应区域,所以即便在第一个指令和第二个指令之间发生了稍后描述的中断,也不会出现问题。
接下来,将描述SIMD指令。在根据本实施方式的处理单元中,把通过单个指令来进行多个处理的SIMD指令定义为扩展指令。在图4中示出的XAR寄存器的结构中,F_SIMD位是表示是否将XAR指令之后的第一个指令扩展为SIMD指令的标志位。如果设定F_SIMD=1,则将第一个指令扩展为SIMD指令。类似的是,S_SIMD位是表示是否将XAR指令之后的第二个指令扩展为SIMD指令的标志位。如果设定S_SIMD=1,则将XAR指令之后的第二个指令扩展为SIMD指令。在SIMD指令的情况下,如果指定一个浮点寄存器作为F区域或S区域中的源寄存器或目标寄存器,则指定了两个浮点寄存器。
如图12所示出的,扩展的SIMD指令操作其寄存器地址间隔256的一对两个寄存器。当指定以“0”来表示扩展寄存器地址的最高位时,执行SIMD处理的SIMD指令利用作为一组的最高位为“0”的浮点寄存器和最高位为“1”的浮点寄存器来并行地处理两条数据。
例如,如果执行作为SIMD指令的faddd%f0、%f100、%200,则与%f0+%f100=%f200的操作同步执行%f256+%f356=%f456的操作。
因此,在根据本实施方式的处理单元中,能够针对一个不是SIMD指令的扩展指令将所有的浮点寄存器指定为不同的地址。此外,如果能够执行SIMD处理,则通过将指令扩展为SIMD指令能够以双倍的速度来通过单个指令来实现数据处理。
由于通过保留表示XAR寄存器中的指令是否是SIMD指令的扩展位的F_SIMD标志位和S_SIMD标志位来扩展SIMD指令,所以仅合并写入XAR寄存器的指令和现有指令就能够扩展SIMD指令,因而能够将对指令操作代码的限制最小化。
图13是执行非SIMD指令和SIMD指令的计算单元的框图。图13A示出了非SIMD指令的结构,而图13B示出了SIMD指令的结构。当由图13A中示出的非SIMD指令来执行%f200+%f300时,使用单个加法单元仅能够执行%f200寄存器和%f300寄存器中数据的相加。相对照的是,当由图13B中示出的SIMD指令来执行%f100+%f200时,除了%f100寄存器和%f200寄存器中数据的相加之外,使用两个加法单元同时执行存储在%f356寄存器和%f456寄存器中的数据的相加,其中%f356寄存器和%f456寄存器具有通过将256分别与%f100和%f200相加而获得的地址,即,%f100和%f200的地址的最高位从“0”变为“1”。
当SIMD指令能够仅指定具有寄存器地址%f0至%f254的128个寄存器时,非SIMD指令能够将%f0至%f510的任意寄存器地址指定为源寄存器或目标寄存器。此外,即使在执行SIMD指令后也能够独立地操作各个寄存器。
接下来,将描述根据本实施方式的处理单元的中断处理。在本实施方式中,通过在分离的两个组中执行指令来扩展指令。第一组是写入XAR寄存器的指令组,即,SXAR1指令、SXAR2指令、以及Write-XAR指令等。第二组是扩展的指令组。
诸如SXAR1指令、SXAR2指令、以及Write-XAR指令等的将扩展信息写入XAR寄存器的指令和紧随在这些指令之后的扩展的指令是不同的指令。因此,由外部中断引起的陷阱可能出现在将扩展信息设定到XAR的时刻和执行扩展的指令的时刻之间。在这种情况下,当从陷阱返回时,需要通过恢复陷阱出现之前的状态来重启处理。
因此,根据本实施方式的处理单元被配置有专用堆栈TXAR,其在进入陷阱时用于临时保存XAR寄存器中的信息。堆栈TXAR能够被高速访问,从而能在进入陷阱或从陷阱返回时高速地对XAR寄存器中的内容进行读和写。
图14是示出了堆栈TXAR的结构的图。与在SPARC架构中定义的其它陷阱堆栈相同,为各陷阱级设置了堆栈TXAR。堆栈TXAR的信息旨在当进入陷阱时保留XAR寄存器的值,并且其如XAR寄存器那样对常规指令的扩展没有影响。
JPS1定义了多达五个陷阱级并且如图14示出的那样向各陷阱级设置了TXAR。在图14中,TXAR1被构成为用于在陷阱级=0的状态中出现陷阱时保存XAR寄存器的内容的TXAR。类似的是,TXAR2被构成为用于在陷阱级=1的状态中出现陷阱时保存XAR寄存器的内容的TXAR,……,并且TXAR5被构成为用于在陷阱级=4的状态中出现陷阱时保存XAR寄存器的内容的TXAR。
当出现陷阱时,处理单元将XAR寄存器的内容保存在与陷阱出现前的陷阱级相对应的堆栈TXAR中。同时,处理单元清空XAR寄存器中的数据,因而在进入陷阱前陷阱例程的指令将不会通过XAR寄存器中的扩展信息被扩展。在陷阱例程结束后,从陷阱返回到原始处理时,如果JPS1的示例中的完成指令或重试指令将陷阱级降低了一个级别,则将值从与陷阱级相对应的堆栈TXAR拷贝到XAR寄存器。
图15示出了当出现陷阱时堆栈TXAR与XAR寄存器之间的关系。图15A示出了当由陷阱指令引起陷阱时,堆栈TXAR和XAR寄存器的活动。如果在陷阱出现前XAR寄存器的内容是“X”并且在陷阱出现后陷阱级由n上升到n+1,则将XAR寄存器的内容“X”写入堆栈TXARn+1并且将XAR寄存器清空为“0”。
图15B示出了当通过完成指令或重试指令从陷阱返回时的堆栈TXAR和XAR寄存器的活动。如果在从陷阱返回前XAR寄存器的内容是“Y”并且堆栈TXARn+1的内容是“Z”,并且在从陷阱返回之后,陷阱级从n+1降到n,则将堆栈TXARn+1的内容“Z”拷贝到XAR寄存器并且堆栈TXARn+1的内容保持不变。
这样的结构确保了在出现陷阱和从陷阱返回时在处理单元中执行正确的处理。
定义了如下指令:诸如将堆栈TXAR中的数据读取到定点寄存器的RD-TXAR指令,或从定点寄存器读取源寄存器1和源寄存器2并且对源寄存器1和源寄存器2进行“异或”(xor:“异或”)计算并将其结果写入TXAR的Write-TXAR指令。这些定义的指令用于当前陷阱级的堆栈TXAR。
图16是例示了在执行由SXAR2指令扩展的指令的过程中出现陷阱时的XAR寄存器和堆栈TXAR的活动的图。在图16的示例中,示出了在执行扩展指令B的过程中在程序中出现陷阱时的XAR寄存器和堆栈TXAR的活动,其中陷阱级TL=n,且对SXAR2指令之后的指令“A”和指令“B”进行扩展。首先,当执行SXAR2(A,B)的时候,指令扩展信息A被写入XAR寄存器的F区域,并且指令扩展信息B被写入XAR寄存器的S区域。
接下来,当执行了扩展的指令“A”的时候,XAR寄存器的F_VAL和F区域被清空为“0”,并且存储在S区域的指令扩展信息“B”保持不变。
同时,堆栈TXAR存储在初始状态中写入该堆栈的数据或在过去出现陷阱时存储在该堆栈中的数据。接下来,如果在扩展的指令“B”的执行过程中出现了陷阱,则将存储在XAR寄存器中的值保存在堆栈TXARn中,并且清空XAR。因此,存储在XAR寄存器中的值“0”和“b”被写入堆栈TXAR,且XAR寄存器的所有的值都为“0”。
在上述的状态中进行了陷阱例程处理。陷阱例程处理不受陷阱出现前的指令扩展信息的影响。此外,能够将数据写入XAR寄存器而且能够将数据写入堆栈TXAR并从中读出。
当在陷阱例程处理完成后从陷阱返回时,保存在堆栈TXAR中数据被写入XAR寄存器并且再次执行扩展的指令B。之后,将“0”值写入XAR寄存器的F区域且将指令扩展信息“B”写入XAR寄存器的S区域,因此,可不受陷阱影响再次执行对扩展的指令“B”的扩展。
根据前面所述的内容,根据本实施方式的处理单元能够保证陷阱过程中的处理和从陷阱返回时进行的处理被正确地执行。
在根据本实施方式的处理单元中的陷阱还包括在解码了错误的不可定义的指令时出现的陷阱。
针对存储在XAR寄存器中的扩展信息,诸如寄存器扩展的地址和SIMD位,确定是否不能仅在将扩展信息与紧随该扩展信息之后的扩展的指令进行合并之后,定义与扩展信息相对应的处理。
例如,在本实施方式中,XAR寄存器中的各个寄存器扩展的地址字段都具有3位。然而,由于定点寄存器的数量小于浮点寄存器的数量,如果要扩展的指令是诸如定点加法指令ADD的指定定点寄存器的指令并且指定了扩展的地址字段中第256个寄存器,则是指定了扩展违规指令。
根据本实施方式的处理单元具有一个定义,即在这种情况下,会引起扩展异常(非法动作)陷阱。该陷阱的优先级(陷阱优先级)被定义得低于未定义的指令(非法指令)的陷阱的优先级,未定义的指令是指该指令是错误的不可定义的、单独的未与另一个指令合并的指令。
图17是示出了扩展异常陷阱处理的概念的图。如果扩展异常检测部31从指令解码器4的指令解码的结果中检测到错误的不可定义指令,则扩展异常检测部31通知陷阱过渡控制部32出现了扩展异常陷阱。在从扩展异常检测部31接收了通知后,陷阱过渡控制部32中止通过XAR更新缓冲3的内容来对XAR寄存器1的重写,并且中止执行操作部5对XAR寄存器1和寄存器6的存取,以此使程序处理返回扩展异常陷阱处理例程。
因此,能够防止执行错误的不可定义的指令。接下来,针对在对执行程序进行了上下文切换时的情况,对XASR寄存器进行描述。作为OS调度程序的功能,可通过上下文切换来切换用于处理的程序。例如,通过上下文切换能够改变用于处理的程序,从而切换该程序之前的处理器状态,即,需要保存在存储器中的寄存器的状态。如果处理器具有大量的寄存器,用于进行保存和恢复处理的寄存器的数量也相应的增加,因而增加了上下文切换的代价。
在根据本实施方式的处理单元中,将256个浮点寄存器划分为八个组,每个组包括32个浮点寄存器,以此来稍微减少处理。之后,为各个组设置了表示是否已经更新了组中的任意寄存器的位,即,修改标志位(dirty bit),提供了与组数量相同的8个标志位。
将这8个修改标志位称为XFD(扩展的Fpr Dirty)[7:0]。另外,在更新由定点侧添加的XG时,设置了表示该更新的修改标志位xg。将这一共9个标志位保存在新的寄存器XASR(扩展的运算寄存器状态寄存器,extended Arithmetic Register Status Register)中。
图18示出了XASR寄存器的结构。在图18中,标志位0至7是XFD,并且标志位0对应于%f0至%f62的块,标志位1对应于%f64至%f126的块,……,标志位7对应于%f448至%f510的块。以“0”值来缺省地设置XFD的各个标志位,并且当各个块的寄存器的内容改变时,以“1”值来设置与其内容已经改变的寄存器所属的块相对应的标志位。
XASR寄存器的标志位8是XGD,其是针对定点寄存器的修改标志位。以“0”值来设置位9至31中的每一个。根据本实施方式的处理单元在执行寄存器的恢复处理时,参考XASR寄存器,并且仅针对其修改标志位被设置为“1”的块的寄存器执行恢复处理。
因此,与其中在所有寄存器上执行恢复处理的情况相比,减小了恢复处理的负担。通过RD-XASR指令能够将XASR寄存器中的数据读到定点寄存器中,而通过WR-XAR指令能够将定点寄存器中的数据写入XASR寄存器。观察XASR寄存器中的修改标志位,使得能够检查出在使用上下文切换时需要在存储器中保存的寄存器。
接下来,将描述Write-XAR指令。除了上述的SXAR1和SXAR2指令外,在处理单元中还定义了Write-XAR指令作为将信息写入XAR寄存器的指令。SXAR1和SXAR2指令具有作为指令操作代码中的立即值的扩展信息。相对照的是,Write-XAR指令将定点寄存器中的数据写入XAR寄存器。
Write-XAR指令具有源寄存器1和源寄存器2的地址作为立即值并且指定两个定点寄存器。之后,Write-XAR指令从所指定的两个定点寄存器中读取数据,在将XOR的结果写入XAR寄存器之前计算所读取数据的“异或”(XOR)。之后,与SXAR指令一样,基于Write-XAR指令写入XAR寄存器中的指令扩展信息,对Write-XAR指令之后的一个或两个指令进行扩展。
Write-XAR指令将根据存储在定点寄存器中的数据而确定的值写入XAR寄存器。因此,通过使用Write-XAR指令,能够进行读取TXAR(陷阱XAR)寄存器的内容并且将基于所读取的内容的值写入XAR寄存器的处理。
另外,能够将定点计算单元处理的数据写入XAR寄存器。
接下来,将描述通过SXAR指令和Write-XAR指令来扩展指令的定时。图19是示出了当通过SXAR指令来执行指令扩展时的指令扩展的定时的图。图19以水平方向作为时间轴示出了指令执行以及指令执行过程中所执行的处理的概括阶段。
SXAR指令,即SXAR1指令和SXAR2指令,具有作为指令的立即值的指令扩展信息。因此,在SXAR指令中,在对指令操作代码进行解码的指令解码阶段中就已经知道了指令扩展信息。因此,在对SXAR指令进行解码后能够立即对SXAR指令之后的下一个指令进行解码。因此,几乎同时地解码SXAR指令和SXAR指令之后的第一个扩展指令。
在图19的示例中,几乎同时地解码SXAR1指令和其后的FMADD指令,并且几乎同时地完成了这两个指令。
图20是示出了当通过Write-XAR指令来执行指令扩展时的指令扩展的定时的图。与图19相同,图20以水平方向作为时间轴示出了指令执行以及在指令执行过程中所执行的处理的概括阶段。
Write-XAR指令是利用定点寄存器来执行XOR操作并且将操作结果写入XAR寄存器的指令。因此,不能在完成Write-XAR指令执行的XOR操作之前的执行阶段中确定所述指令扩展信息的值。
因此,当将Write-XAR指令用于指令扩展时,指令扩展信息是在完成Write-XAR指令的执行阶段之后确定的,因此在完成所述执行阶段后立即开始对第一个扩展指令的解码。
在图20中,推迟Write-XAR指令之后的FMADD指令的指令解码,直到完成Write-XAR指令的执行阶段。之后,当完成Write-XAR指令的执行阶段时,FMADD指令进入指令解码阶段。
接下来,作为使用Write-XAR指令的示例,示出了其中以软件来模拟根据本实施方式的处理单元的情况。图21是示出在软件模拟中未定义的指令异常例程的操作的流程图。在开始图21中的处理后,模拟软件在S1检测到未定义的指令(非法指令),处理进入未定义指令异常的陷阱例程。此时,程序计数器PC的值保存在TPC中,并且XAR寄存器的值保存在堆栈TXAR中。
接下来,模拟软件在S2读取TPC中的程序计数器值以从存储器取回引起未定义指令(非法指令)异常的指令。之后,模拟软件在S3从堆栈TXAR读取保存的来自XAR寄存器的值。之后,如果在读取的信息中发现了有效扩展信息(S3,Y),则在S4将堆栈TXAR的值读入寄存器,并且如果必要,通过Write-XAR指令将该值写回XAR寄存器。
接着,以此状态在S5通过将存储在XAR寄存器中的扩展指令信息与另一个指令合并来进行模拟。通过扩展指令信息来扩展此时合并的指令。
接着,模拟软件在处理转到S8之前,在S6清空存储在堆栈TXAR中的针对一个模拟的指令的扩展指令。
另一方面,如果在S3处未在读取的信息中发现有效扩展信息(S3,N),则在处理转到S8之前,在S7处通过合并存储在XAR寄存器中的扩展指令信息和另一个指令来进行模拟。由于在XAR寄存器中没有存储有效扩展指令信息,所以此时不对合并的指令进行扩展。
在S8,通过完成指令终止陷阱例程,以执行TNPC指向的主例程的下一个指令,所述完成指令是用于返回TNPC指向的指令的指令。此时,TNPC的值返回PC并且堆栈TXAR的值返回XAR寄存器。如上所述,由于Write-XAR指令能够将任意的期望值设定给XAR寄存器,所以Write-XAR指令能够用于陷阱例程或用于调试。
接下来,将描述在根据本实施方式的处理单元中执行的调试程序。该调试程序是用于开发在处理单元中执行的软件的程序。调试程序在要调试的程序中的任意位置处以软件陷阱指令(在JPS1示例中“TA:TrapAlways”)来替代指令,以在模拟陷阱例程中的替代指令的同时,对执行被替代的指令时的寄存器值等进行检查。
图22是示出通用调试程序的处理的图。在图22的示例中,如果在faddd指令41处执行调试陷阱,则由被表示为42的软件陷阱指令TA来替代faddd指令41。
因此,当执行TA指令时,处理跳转到调试程序指示的陷阱地址的调试例程,并且调试例程采集例如寄存器值等的调试程序需要的数据。之后,在进行了faddd指令的模拟后,调试例程用原始的faddd指令替代TA指令。以此方式来进行所述调试处理。
在由根据本实施方式的处理单元中的XAR寄存器所进行的指令扩展中,在XAR寄存器具有有效指令扩展信息的情况下总是对紧随其后的指令进行扩展。因此,如果调试程序功能以TA指令替代了要通过XAR寄存器的指令扩展信息来扩展的指令,则会尝试通过XAR寄存器的指令扩展信息来扩展TA指令。此外,软件陷阱指令使用定点寄存器作为源寄存器,因此如果寄存器扩展的地址字段指向第256个寄存器,则可能引起“非法动作”陷阱。
即,如果扩展了TA指令,则因改变了陷阱地址值或者引起了“非法动作”,可能不会实现原始的调试程序功能,。
因此,在根据本实施方式的处理单元中,软件陷阱指令TA被特别定义为以不需要扩展的指令来操作,就是说,即使在XAR寄存器中存在有效扩展信息,也以忽略XAR扩展信息的方式来执行TA指令。
在陷阱不是由软件陷阱指令引起的情况下,根据本实施方式的处理单元具有无条件地重置XAR寄存器的规范。在使用了调试程序的情况下,总是通过软件陷阱指令进入陷阱并且将XAR存储在TXAR中,因而能够在引起软件陷阱之后,通过RD-TXAR指令从TXAR读取进入陷阱时XAR的值。
图23示出针对本实施方式的处理单元所扩展的指令的调试程序处理。在图23中,假设在SXAR1指令后立即执行faddd指令51的时间点进行调试。另外在此情况下,调试程序以被表示为52的TA指令来替代faddd指令。
如果将通过SXAR1指令来扩展TA指令的操作数寄存器的地址,则处理在TA指令的执行过程中跳转到调试程序不注意的陷阱地址。因此,本实施方式被限定为以忽略XAR寄存器中的指令扩展信息的方式执行TA指令。因此,在TA指令的执行过程中处理跳转到正确的陷阱地址。
根据前述,根据本实施的处理单元在将指令保持为固定长度指令的同时能够对该指令进行扩展。
在以上的示例中,通过SXAR2指令扩展了多达两个指令,但是根据本实施方式的处理单元并不限于此。例如,通过例如减少需要扩展寄存器的数量和/或不扩展SIMD指令,可以扩展三个或更多个指令。
另外在以上示例中,当执行扩展的指令时,清空了XAR寄存器中的对应的扩展指令信息,但是取而代之,可以通过仅清空F_VAL或S_VAL来使对应的扩展指令信息无效。
根据本发明的实施方式的方面,能够提供所描述的特征、功能、操作、和/或优势的任意组合。能够以包括了计算硬件(例如,计算设备)的设备(机器)的形式来实现这些实施方式,所述计算硬件诸如(在不受限制的示例中)能够存储、检索、处理和/或输出数据和/或与其它计算机进行通信(联络)的任意计算机。根据实施方式的一方面,能够通过和/或使用计算硬件和/或软件来实现所描述的特征、功能、操作、和/或优势。计算设备包括计算机处理器或控制器(CPU)(例如,基于硬件逻辑电路的计算机处理器,其处理或执行指令,即软件)、计算机可读记录介质、传输通信媒体接口(网络接口)、和/或显示装置,上述全部通过数据通信总线来进行通信。产生的结果能够显示在计算硬件的显示器上。实现这些实施方式的程序/软件可记录在包括计算机可读记录介质的计算机可读介质上。实现这些实施方式的程序/软件还可以被包含/编码在传输通信媒体上,并经由传输通信媒体来传输。
根据实施方式的一方面,处理单元是计算机处理器并且寄存器指的是计算机处理器的任意计算机可读记录介质的任意区域,和/或可以由计算机处理器存取的用于存储信息/数据的区域。设备(机器)可以包括处理单元。另外,可通过对计算机进行编程来实现所描述的处理,以便按照来自程序软件的指令和/或在此描述的数据结构,将所述处理执行/处理成为用于实现特殊功能,从而创建新的专用机,即将通用机转换成专用机。具体来说,当通过计算机处理器来执行处理时,所述处理将作为物体的该计算机处理器转换成为不同状态和/或事物的高性能的指令扩展处理器。
所述实施方式的大量特征和优点可从详细的说明书中显见,因此所附权利要求旨在覆盖落入其真实精神和范围内的所有特征和优点。另外,由于本领域的技术人员很容易想到众多的变型和修改,所以不期望将创造性实施方式限于在此例证和描述的精确结构和操作,因此所有适当的变型和其等价物都落入本发明的范围之内。
本申请基于并要求2007年12月28日提交的日本专利申请第2007-341387号的优先权,在此通过引用并入其全部内容。
Claims (14)
1.一种处理单元,该处理单元包括:
扩展寄存器,通过扩展指令向所述扩展寄存器设定对指令的扩展进行表示的指令扩展信息;
操作单元,当在所述扩展寄存器中设定指令扩展信息时,所述操作单元扩展已经将所述指令扩展信息设定到所述扩展寄存器的扩展指令之后的后续指令,并且执行扩展后的指令,以及
陷阱寄存器,其在所述扩展指令的执行和要扩展的所述后续指令的执行之间出现陷阱时,存储设定到所述扩展寄存器的指令扩展信息,
其中,所述指令扩展信息包括用于扩展指定源寄存器的地址和指定目标寄存器的地址的附加位,并且
所述操作单元将所述附加位添加到所述后续指令中的地址。
2.根据权利要求1所述的处理单元,其中,所述扩展寄存器存储表示设定的所述指令扩展信息是否有效的信息,并且
在向所述扩展寄存器设定了表示所述指令扩展信息有效的信息时,所述操作单元基于设定在所述扩展寄存器中的所述指令扩展信息来扩展所述后续指令。
3.根据权利要求1所述的处理单元,其中,在提交了所述扩展的后续指令的情况下,使设定到所述扩展寄存器的所述指令扩展信息无效。
4.根据权利要求1所述的处理单元,其中,针对多条指令,将多个所述指令扩展信息设定到所述扩展寄存器。
5.根据权利要求4所述的处理单元,其中,每次扩展所述后续指令并在执行后提交该后续指令时,使所述多个指令扩展信息中的与被执行的指令相对应的指令扩展信息无效。
6.根据权利要求1所述的处理单元,其中,在出现所述陷阱和开始陷阱处理时,使所述扩展寄存器中的所述指令扩展信息无效。
7.根据权利要求1所述的处理单元,其中,所述指令扩展信息包括表示所述后续指令是否是SIMD指令的信息,并且所述指令扩展信息所扩展的所述后续指令执行SIMD处理。
8.根据权利要求1所述的处理单元,其中,在所述后续指令是仅指定了两个或更少的源寄存器的指令时,所述指令扩展信息指定在将数据寄存在高速缓存存储器中时对数据进行寄存的高速缓存路组的属性。
9.根据权利要求1所述的处理单元,其中,所述扩展指令具有作为在所述扩展指令的操作代码中定义的立即值的要写入所述扩展寄存器中的扩展信息。
10.根据权利要求1所述的处理单元,其中,所述扩展指令利用定点寄存器将所述扩展信息写入所述扩展寄存器中。
11.根据权利要求1所述的处理单元,该处理单元还包括陷阱过渡控制部,该陷阱过渡控制部在处理由于指令类型而不能通过所述指令扩展信息来扩展的所述后续指令时,引起扩展违规异常陷阱。
12.根据权利要求1所述的处理单元,其中,当在所述扩展寄存器中设定有效的指令扩展信息时,定义了不通过所述指令扩展信息扩展的指令。
13.一种在执行固定长度指令的计算机处理器中扩展指令的方法,该方法包括以下步骤:
当执行扩展指令时,在扩展寄存器中设定指令扩展信息,所述指令扩展信息表示对所述扩展指令之后的后续指令的扩展,所述指令扩展信息包括用于扩展指定源寄存器的地址和指定目标寄存器的地址的附加位;
通过将所述扩展寄存器中的所述附加位添加到所述后续指令中的地址来扩展所述后续指令,所述后续指令中的地址指定寄存器;以及
执行扩展后的指令,
在所述扩展指令的执行和要扩展的所述后续指令的执行之间出现陷阱时,陷阱寄存器存储设定到所述扩展寄存器的指令扩展信息。
14.一种计算机处理器,该计算机处理器包括:
扩展寄存器,通过扩展指令向所述扩展寄存器设定指令扩展信息,所述指令扩展信息表示对所述扩展指令之后的后续指令的扩展,并且包括用于扩展指定源寄存器的地址和指定目标寄存器的地址的附加位;
控制器,所述控制器通过将在所述扩展寄存器中设定的所述附加位添加到所述后续指令中的地址来扩展所述后续指令,并且执行扩展后的指令,所述后续指令中的地址指定寄存器;以及
陷阱寄存器,其在所述扩展指令的执行和要扩展的所述后续指令的执行之间出现陷阱时,存储设定到所述扩展寄存器的指令扩展信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007-341387 | 2007-12-28 | ||
JP2007341387 | 2007-12-28 | ||
JP2007341387A JP5217431B2 (ja) | 2007-12-28 | 2007-12-28 | 演算処理装置及び演算処理装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101470599A CN101470599A (zh) | 2009-07-01 |
CN101470599B true CN101470599B (zh) | 2013-01-02 |
Family
ID=40750878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101850417A Expired - Fee Related CN101470599B (zh) | 2007-12-28 | 2008-12-26 | 处理单元 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8281112B2 (zh) |
EP (1) | EP2083352B1 (zh) |
JP (1) | JP5217431B2 (zh) |
KR (1) | KR101059906B1 (zh) |
CN (1) | CN101470599B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5471082B2 (ja) * | 2009-06-30 | 2014-04-16 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US8635415B2 (en) * | 2009-09-30 | 2014-01-21 | Intel Corporation | Managing and implementing metadata in central processing unit using register extensions |
JP5367020B2 (ja) * | 2011-06-24 | 2013-12-11 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、情報処理方法、プログラム及び情報記憶媒体 |
US9632786B2 (en) * | 2011-12-20 | 2017-04-25 | International Business Machines Corporation | Instruction set architecture with extended register addressing using one or more primary opcode bits |
US9507599B2 (en) * | 2013-07-22 | 2016-11-29 | Globalfoundries Inc. | Instruction set architecture with extensible register addressing |
US9875107B2 (en) | 2015-01-19 | 2018-01-23 | International Business Machines Corporation | Accelerated execution of execute instruction target |
US10761849B2 (en) * | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
US10877548B2 (en) * | 2018-03-09 | 2020-12-29 | Hewlett Packard Enterprise Development Lp | Context switches with processor performance states |
CN112445855B (zh) * | 2020-11-17 | 2024-05-17 | 海光信息技术股份有限公司 | 用于图形处理器芯片的可视化分析方法和可视化分析装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4109311A (en) * | 1975-12-12 | 1978-08-22 | International Business Machines Corporation | Instruction execution modification mechanism for time slice controlled data processors |
WO1980001423A1 (en) * | 1978-12-29 | 1980-07-10 | Western Electric Co | Data processing apparatus having opcode extension register |
EP0489266A2 (en) * | 1990-11-07 | 1992-06-10 | Kabushiki Kaisha Toshiba | Computer and method for performing immediate calculation by utilizing the computer |
US6167505A (en) * | 1995-12-20 | 2000-12-26 | Seiko Epson Corporation | Data processing circuit with target instruction and prefix instruction |
US6499099B1 (en) * | 1998-11-20 | 2002-12-24 | Asia Design Co., Ltd. | Central processing unit method and apparatus for extending general instructions with extension data of an extension register |
US6651160B1 (en) * | 2000-09-01 | 2003-11-18 | Mips Technologies, Inc. | Register set extension for compressed instruction set |
CN1490726A (zh) * | 2002-06-24 | 2004-04-21 | 精工爱普生株式会社 | 信息处理装置以及电子设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014739A (en) * | 1997-10-27 | 2000-01-11 | Advanced Micro Devices, Inc. | Increasing general registers in X86 processors |
US6418527B1 (en) * | 1998-10-13 | 2002-07-09 | Motorola, Inc. | Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods |
JP2003518280A (ja) | 1999-02-05 | 2003-06-03 | テンシリカ インコーポレイテッド | 構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法 |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
JP4172533B2 (ja) | 1999-02-18 | 2008-10-29 | 株式会社リコー | 光走査装置及び画像出力装置 |
JP2006313561A (ja) * | 1999-04-30 | 2006-11-16 | Renesas Technology Corp | データ処理装置 |
JP3839835B2 (ja) | 1999-04-30 | 2006-11-01 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロコンピュータ |
JP2001202243A (ja) | 1999-04-30 | 2001-07-27 | Hitachi Ltd | データ処理装置 |
US7373483B2 (en) * | 2002-04-02 | 2008-05-13 | Ip-First, Llc | Mechanism for extending the number of registers in a microprocessor |
JP2004038521A (ja) * | 2002-07-03 | 2004-02-05 | Renesas Technology Corp | マイクロコンピュータ |
FR2867874A1 (fr) * | 2004-03-22 | 2005-09-23 | St Microelectronics Sa | Dispositif et procede de gestion d'un jeu d'instructions d'un microprocesseur |
US7231509B2 (en) * | 2005-01-13 | 2007-06-12 | International Business Machines Corporation | Extended register bank allocation based on status mask bits set by allocation instruction for respective code block |
JP2006284962A (ja) | 2005-03-31 | 2006-10-19 | Sumitomo Osaka Cement Co Ltd | 光学素子 |
-
2007
- 2007-12-28 JP JP2007341387A patent/JP5217431B2/ja active Active
-
2008
- 2008-12-15 EP EP08171647.4A patent/EP2083352B1/en active Active
- 2008-12-18 US US12/338,245 patent/US8281112B2/en active Active
- 2008-12-24 KR KR1020080133532A patent/KR101059906B1/ko active IP Right Grant
- 2008-12-26 CN CN2008101850417A patent/CN101470599B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4109311A (en) * | 1975-12-12 | 1978-08-22 | International Business Machines Corporation | Instruction execution modification mechanism for time slice controlled data processors |
WO1980001423A1 (en) * | 1978-12-29 | 1980-07-10 | Western Electric Co | Data processing apparatus having opcode extension register |
EP0489266A2 (en) * | 1990-11-07 | 1992-06-10 | Kabushiki Kaisha Toshiba | Computer and method for performing immediate calculation by utilizing the computer |
US6167505A (en) * | 1995-12-20 | 2000-12-26 | Seiko Epson Corporation | Data processing circuit with target instruction and prefix instruction |
US6499099B1 (en) * | 1998-11-20 | 2002-12-24 | Asia Design Co., Ltd. | Central processing unit method and apparatus for extending general instructions with extension data of an extension register |
US6651160B1 (en) * | 2000-09-01 | 2003-11-18 | Mips Technologies, Inc. | Register set extension for compressed instruction set |
CN1490726A (zh) * | 2002-06-24 | 2004-04-21 | 精工爱普生株式会社 | 信息处理装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
KR101059906B1 (ko) | 2011-08-29 |
EP2083352A2 (en) | 2009-07-29 |
EP2083352A3 (en) | 2009-08-12 |
CN101470599A (zh) | 2009-07-01 |
EP2083352B1 (en) | 2017-08-09 |
JP2009163442A (ja) | 2009-07-23 |
KR20090073008A (ko) | 2009-07-02 |
JP5217431B2 (ja) | 2013-06-19 |
US20090172367A1 (en) | 2009-07-02 |
US8281112B2 (en) | 2012-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101470599B (zh) | 处理单元 | |
JP3209205B2 (ja) | プロセッサにおけるレジスタ内容の継承装置 | |
CA3021447C (en) | Scheduling tasks in a multi-threaded processor | |
US5781758A (en) | Software emulation system with reduced memory requirements | |
US5949995A (en) | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code | |
EP0847004B1 (en) | Information processing apparatus with branch prediction | |
CN108780395B (zh) | 矢量预测指令 | |
CN103907089A (zh) | 一种乱序执行微处理器中的有条件加载指令 | |
CN101539850A (zh) | 单精度浮点数据存储方法和处理器 | |
CN103348323A (zh) | 动态二进制优化 | |
US7308571B2 (en) | Overriding processor configuration settings | |
CA1202425A (en) | Multiprocessor system including firmware | |
US20140281473A1 (en) | Minimizing Switchover Time In A Hot Swappable Program Memory | |
JP3142813B2 (ja) | レジスタの名前変更を管理するための情報処理システムおよび方法 | |
WO2006132758A2 (en) | Memory operations in microprocessors with multiple execution modes and register files | |
US5991874A (en) | Conditional move using a compare instruction generating a condition field | |
US8484446B2 (en) | Microprocessor saving data stored in register and register saving method | |
US8271766B2 (en) | Intentionally delaying execution of a copy instruction to achieve simultaneous execution with a subsequent, non-adjacent write instruction | |
US7681016B2 (en) | Microprocessor instruction execution method for exploiting parallelism by time ordering operations in a single thread at compile time | |
JPH02197924A (ja) | 中央演算処理装置 | |
CN103282876A (zh) | 数据元素的条件选择 | |
AU6330500A (en) | A processor architecture | |
CN100392618C (zh) | 保护计算机内存储器被写入的系统、方法和设备 | |
Petrov et al. | Speeding up control-dominated applications through microarchitectural customizations in embedded processors | |
JP2008047054A (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: 20130102 Termination date: 20201226 |
|
CF01 | Termination of patent right due to non-payment of annual fee |