处理单元的制作方法

文档序号:6468667阅读:203来源:国知局
专利名称:处理单元的制作方法
技术领域
本发明的一个方面涉及处理单元。
背景技术
在处理浮点运算的数值计算程序中,增加处理单元内部的寄存器的 数量使得能够通过编译器实现诸如循环展开和软件流水等的优化,从而 能够改善性能。
另一方面,在例如RISC指令集架构或者SPARC架构的处理单元中, 例如设置了将指令长度固定为32位的限制,并且还以单个指令指示单个 处理,使得一个指令所包含的信息受限。
鉴于这样的限制,已经提出了各种新指令和增加寄存器数量的建议。 根据专利文献1和专利文献2,指定寄存器的寄存器指定信息分为两 部分。之后,将该两部分布置在分开的指令码的基础单元上,并且使一 个指令码可被省略。如果省略了可省略的指令码,则通过隐含地假设预 定寄存器指定信息来进行寄存器选择操作。
根据专利文献3和专利文献4,通过合并存储器与寄存器之间的传送 指令和寄存器之间的操作指令的多个指令代码,使得在保持与现有CPU 的兼容性的同时,能够指示存储器中的数据操作。
另外,根据专利文献5和专利文献6,用户能够增加命令,使得能够 容易地重新设计处理器。
专利文献1日本特开2001-2022专利文献2日本特开2006-3135专利文献3日本特开2005-35310专利文献4日本特开2006-2849专利文献5日本特开2003-518280专利文献6日本特开2007-250010
假设指令具有32位的操作码长度。对于示出正执行处理的指令的逻 辑地址和将要执行的下一指令的逻辑地址NPC (下一程序计数器)的PC (程序计数器)来说,只要PC所指向的指令不是分支指令或陷阱(trap) 指令,就指定了诸如NPC-PC+4的逻辑规范。因此,如果将一个指令的 长度扩展到64位,则无法操作现有软件。
鉴于这种限制,在浮点乘积之和运算中,必须要指定总共四个寄存 器,其中三个源寄存器和一个目标寄存器,当指定了 8位寄存器地址时, 将需要4X8位=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指令的指令生成的图IO是例示了向使用扩展指令的模式切换的图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 具有从。/ofD到Q/。f62范围的32个浮点寄存器时,将处理单元100中存储 64位长度的数据的浮点寄存器扩展为从。/。fD到。/。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)指令作为下一个指令来执行的情况作为示例。
12如图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[l:0;h0"和"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[l:0;h0"和"OP2[3:0]=7"。同样,将指示SXAR2指令的值"l"设 定到表示指令是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°/。fD、 %fl00、 °/。200,则与 %fD+%f!00=%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指令来执行n/。f200+y。f300时,使用单个加法单 元仅能够执行%£200寄存器和。/。f300寄存器中数据的相加。相对照的是, 当由图13B中示出的SIMD指令来执行。/。fl00+。/。f200时,除了。/。f100寄 存器和。/。f200寄存器中数据的相加之外,使用两个加法单元同时执行存 储在%£356寄存器和。/。f456寄存器中的数据的相加,其中%£356寄存器和 %f456寄存器具有通过将256分别与。/。f100和。/。f200相加而获得的地址, 即,。/ofl00和。/。f200的地址的最高位从"0"变为"1"。
当SIMD指令能够仅指定具有寄存器地址% )至%054的128个寄存 器时,非SIMD指令能够将MfD至Q/。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+l ,则将XAR寄存器的内容"X"写入堆栈TXARn+l 并且将XAR寄存器清空为"0"。
图15B示出了当通过完成指令或重试指令从陷阱返回时的堆栈 TXAR和XAR寄存器的活动。如果在从陷阱返回前XAR寄存器的内容 是"Y"并且堆栈TXARn+l的内容是"Z",并且在从陷阱返回之后,陷 阱级从n+l降到n,则将堆栈TXARn+l的内容"Z"拷贝到XAR寄存
19器并且堆栈TXARn+l的内容保持不变。
这样的结构确保了在出现陷阱和从陷阱返回时在处理单元中执行正 确的处理。
定义了如下指令诸如将堆栈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个浮点寄存器,以此来稍微减少处理。之后,为各个
组设置了表示是否已经更新了组中的任意寄存器的位,即,修改标志位
(dirtybit),提供了与组数量相同的8个标志位。
将这8个修改标志位称为XFD (扩展的Fpr Dirty) [7:0]。另外,在 更新由定点侧添加的XG时,设置了表示该更新的修改标志位xg。将这 一共9个标志位保存在新的寄存器XASR(扩展的运算寄存器状态寄存器, extended Arithmetic Register Status Register)中。
图18示出了XASR寄存器的结构。在图18中,标志位0至7是XFD, 并且标志位0对应于Q/。fD至。/。f62的块,标志位1对应于。/。f64至。/。fl26的 块,……,标志位7对应于Q/of448至。/of510的块。以"0"值来缺省地设 置XFD的各个标志位,并且当各个块的寄存器的内容改变时,以"l" 值来设置与其内容己经改变的寄存器所属的块相对应的标志位。
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指令用于指令扩展时,指令扩展信息是在完
23成Write-XAR指令的执行阶段之后确定的,因此在完成所述执行阶段后
立即开始对第一个扩展指令的解码。
在图20中,推迟Write-XAR指令之后的FMADD指令的指令解码, 直到完成Write-XAR指令的执行阶段。之后,当完成Write-XAR指令的 执行阶段时,FMADD指令进入指令解码阶段。
接下来,作为使用Write-XAR指令的示例,示出了其中以软件来模 拟根据本实施方式的处理单元的情况。图21是示出在软件模拟中未定义 的指令异常例程的操作的流程图。在开始图21中的处理后,模拟软件在 Sl检测到未定义的指令(非法指令),处理进入未定义指令异常的陷阱例 程。此时,程序计数器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:Tmp Always")来替代指令,以在模拟陷阱例程中的替代指令的同时,对执行 被替代的指令时的寄存器值等进行检查。
图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)(例如,基于硬件逻辑 电路的计算机处理器,其处理或执行指令,即软件)、计算机可读记录介 质、传输通信媒体接口 (网络接口)、和/或显示装置,上述全部通过数据 通信总线来进行通信。产生的结果能够显示在计算硬件的显示器上。实 现这些实施方式的程序/软件可记录在包括计算机可读记录介质的计算机 可读介质上。实现这些实施方式的程序/软件还可以被包含/编码在传输通
26信媒体上,并经由传输通信媒体来传输。
根据实施方式的一方面,处理单元是计算机处理器并且寄存器指的 是计算机处理器的任意计算机可读记录介质的任意区域,和/或可以由计 算机处理器存取的用于存储信息/数据的区域。设备(机器)可以包括处 理单元。另外,可通过对计算机进行编程来实现所描述的处理,以便按 照来自程序软件的指令和/或在此描述的数据结构,将所述处理执行/处理 成为用于实现特殊功能,从而创建新的专用机,即将通用机转换成专用 机。具体来说,当通过计算机处理器来执行处理时,所述处理将作为物 体的该计算机处理器转换成为不同状态和/或事物的高性能的指令扩展处 理器。
所述实施方式的大量特征和优点可从详细的说明书中显见,因此所 附权利要求旨在覆盖落入其真实精神和范围内的所有特征和优点。另外, 由于本领域的技术人员很容易想到众多的变型和修改,所以不期望将创 造性实施方式限于在此例证和描述的精确结构和操作,因此所有适当的 变型和其等价物都落入本发明的范围之内。
本申请基于并要求2007年12月28日提交的日本专利申请第 2007-341387号的优先权,在此通过引用并入其全部内容。
权利要求
1、一种处理单元,该处理单元包括扩展寄存器,能够向所述扩展寄存器设定对指令的扩展进行表示的指令扩展信息;和操作单元,在通过扩展指令向所述扩展寄存器设定指令扩展信息时,所述操作单元执行在将所述指令扩展信息写入所述扩展寄存器中的扩展指令之后的后续指令,并且基于设定在所述扩展寄存器中的所述指令扩展信息来扩展所述后续指令。
2、 根据权利要求1所述的处理单元,其中,所述扩展寄存器存储表示设定的所述指令扩展信息是否有效的信息,并且在向所述扩展寄存器设定了表示所述指令扩展信息有效的信息时, 所述操作单元基于设定在所述扩展寄存器中的所述指令扩展信息来扩展 所述后续指令。
3、 根据权利要求1所述的处理单元,其中,在提交了所述扩展的后 续指令的情况下,使设定到所述扩展寄存器的所述指令扩展信息无效。
4、 根据权利要求1所述的处理单元,其中,针对多条指令,将所述 指令扩展信息设定到所述扩展寄存器。
5、 根据权利要求4所述的处理单元,其中,每次扩展所述后续指令 并在执行后提交该后续指令时,使所述多个指令扩展信息中的与被执行 的指令相对应的指令扩展信息无效。
6、 根据权利要求1所述的处理单元,该处理单元还包括 陷阱寄存器,其在第一个指令的执行和要扩展的所述后续指令的执行之间出现陷阱时,存储设定到所述扩展寄存器的指令扩展信息。
7、 根据权利要求6所述的处理单元,其中,在出现所述陷阱和开始 陷阱处理时,使所述扩展寄存器中的所述指令扩展信息无效。
8、 根据权利要求1所述的处理单元,其中,所述指令扩展信息包括 寄存器地址和通过所述指令扩展信息扩展的指令。
9、 根据权利要求1所述的处理单元,其中,所述指令扩展信息包括表示所述后续指令是否是SIMD指令的信息,并且所述指令扩展信息所扩展的所述后续指令执行SIMD处理。
10、 根据权利要求1所述的处理单元,其中,在所述后续指令是仅指定了两个或更少的源寄存器的指令时,所述指令扩展信息指定在将数据寄存在高速缓存存储器中时对数据进行寄存的高速缓存路组的属性。
11、 根据权利要求1所述的处理单元,其中,所述扩展指令具有作为在所述扩展指令的操作代码中定义的立即值的要写入所述扩展寄存器中的扩展信息。
12、 根据权利要求1所述的处理单元,其中,所述扩展指令利用定点寄存器将所述扩展信息写入所述扩展寄存器中。
13、 根据权利要求1所述的处理单元,该处理单元还包括陷阱过渡控制部,该陷阱过渡控制部在处理由于指令类型而不能通过所述指令扩展信息来扩展的所述后续指令时,引起扩展违规异常陷阱。
14、 根据权利要求1所述的处理单元,其中,当在所述扩展寄存器中设定有效的指令扩展信息时,定义了不通过所述指令扩展信息扩展的指令。
15、 一种在执行固定长度指令的计算机处理器中扩展指令的方法,该方法包括以下步骤通过所述计算机处理器,在扩展寄存器中设定指令扩展信息,其中所述指令扩展信息指示指令的扩展;通过所述计算机处理器,执行在将所述指令扩展信息写入所述扩展寄存器的指令之后的后续指令;以及通过所述计算机处理器,基于所述指令扩展信息扩展所述后续指令。
16、 一种计算机处理器,该计算机处理器包括-扩展寄存器,其存储指示指令的扩展的指令扩展信息;和控制器,其在所述扩展寄存器中设定指令扩展信息,在将所述指令扩展信息设定在所述扩展寄存器中之后执行一个或更多个后续指令,并且基于在所述扩展寄存器中设定的所述指令扩展信息来扩展所述一个或更多个后续指令。
全文摘要
本发明涉及处理单元。该处理单元具有扩展寄存器,能够向所述扩展寄存器设定指示指令的扩展的指令扩展信息。在向所述扩展寄存器设定所述指令扩展信息时,操作单元执行将所述指令扩展信息写入所述扩展寄存器的第一个指令之后的后续指令,并基于所述指令扩展信息来扩展所述后续指令。
文档编号G06F9/318GK101470599SQ20081018504
公开日2009年7月1日 申请日期2008年12月26日 优先权日2007年12月28日
发明者吉田利雄, 本藤干雄 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1