由多个指令集使用的寄存器间映射的制作方法

文档序号:6359915阅读:244来源:国知局
专利名称:由多个指令集使用的寄存器间映射的制作方法
技术领域
本发明涉及数据处理系统领域。具体地,本发明涉及支持多个指令集的数据处理系统以及可提供由该多个指令集使用的寄存器的方式。
背景技术
提供支持多个指令集的数据处理系统是已知的。这种数据处理系统的一些实例为设立于英国Cambridge的ARM有限公司所制造的处理器设计,所述处理器设计支持ARM指令集(ARM instruction set)及 Thumb 指令集(Thumb instruction set)。ARM 指令系以32位编码,并且,指定对保存于32位寄存器内的数据值所执行的32位数据处理操作(例如,ADD、SUB、LDR、STR等)。Thumb指令以16位编码,并且,指定对存储于32位寄存器内的32位数据值所执行的32位数据处理操作。由ARM有限公司所设计的Neon及VFP延伸架构,分别提供对存储于具有在程控下所指定的大小的寄存器内的数据值操作的单一指令多重数据(single instructionmultiple data; SIMD)及浮点指令。希望在提供处理器时减少所需要的电路资源量。对形成寄存器的电路组件的提供表不一种这样的电路资源。

发明内容
从本发明的一个方面来看,其提供一种用于处理数据的装置,其包括:多个寄存器,其被配置为存储待处理的数据值;处理电路,其耦合至所述多个寄存器,并且,被配置为对存储于所述多个寄存器中的数据值执行数据处理操作;指令译码器,其耦合至所述处理电路,并且,响应于程序指令流来控制所述处理电路,以执行所述数据处理操作;其中,所述指令译码器响应于第一指令集的程序指令来控制所述处理电路,以使用由所述多个寄存器所提供的N位架构寄存器来执行所述数据处理操作,其中,N为正整数值;所述指令译码器响应于第二指令集的程序指令来控制所述处理电路,以使用由所述多个寄存器所提供的M位架构寄存器来执行所述数据处理操作,其中,M为正整数值,并且,所述多个寄存器中的至少一些寄存器被所述第一指令集的程序指令及所述第二指令集的程序指令共享;所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一个寄存器,以作为呈现给所述第一指令集的程序指令以使用的第一组N位架构寄存器的部分时,译码在所述第一指令集的程序指令内的寄存器指定字段;所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一个寄存器,以作为呈现给所述第二指令集的程序指令使用的第二组M位架构寄存器的部分时,译码在所述第二指令集的程序指令内的寄存器指定字段;并且,所述指令译码器被配置为提供在所述第一指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第一映射,以及在所述第二指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一组的每个寄存器具有到所述第二组的寄存器的预定一对一映射,并且,与所述第二组的所述寄存器共享在所述多个寄存器内的共用寄存器的共享部分,所述共用寄存器的非共享部分系无法使用所述第一指令集的指令访问;以及存储可使用所述第二组的寄存器访问的值。本发明技术认知到,即使不同指令集对不同宽度的架构寄存器操作,对于不同指令集而言,共享多个寄存器的资源也是可能的。此外,通过在由两个指令集所使用的寄存器指定符之间安排预定一对一映射,对于所述指令集中的至少一者而言,访问由另一指令集存储于寄存器内的所有值为可能的。此举有益于以两个指令集撰写的程序的可互操作性,例如,在使用两个指令集中的不同者所撰写的程序之间共享数据值。将理解,指令通常可含有一个以上的寄存器指定字段。一些指令亦可由隐含方式来指定特定寄存器的使用,例如,PUSH指令及POP指令以隐含方式指定了堆栈指针寄存器的使用。虽然如呈现给第一指令集的第一组寄存器与如呈现给第二指令集的第二组寄存器在数量上可能不同,但是至少在优选实施例中,第一组及第二组包括相同数量的寄存器。此有助于达成所提供的寄存器资源的高水平的再利用性,并且促进两个指令集之间有效率的互操作。M位架构寄存器可为2N位架构寄存器。多个寄存器可为2N位寄存器,以促进通过第二指令集来操纵2N位数据值。在此状况下,第一指令集可经安排以访问2N位寄存器的最低有效N位。寄存器大小及数据宽度可变化,但是在至少一些优选实施例中,N=32。可通过在程序指令内的寄存器指定字段来完全指定待访问的寄存器。或者,附加状态(诸如,当前异常状态)可与寄存器指定字段的值相结合,以判定要访问哪一个架构寄存器。在本发明的至少一些优选实施例中,第一指令集以此方式操作。当异常状态在指定对于寄存器指定字段的给定值将使用哪一个架构寄存器中提供额外自由度时,将具有寄存器指定字段的共同值及不同异常状态的所访问的架构寄存器的群称为寄存器的成组群。此安排可有助于辅助快速异常处理。将理解,在使用寄存器重新命名(例如)来促进乱序(out-of-order)处理的实施例中,映射到架构寄存器的物理寄存器将改变,并且,在处理中任何给定点处,可能存在对应于相同架构寄存器的多个物理寄存器,但在程序顺序的不同点处。为简化指令译码及识别待使用的正确架构寄存器,由指令译码器使用的映射可使得在寄存器的成组群内,第一指令集的程序指令内的寄存器指定字段的最低有效位的值,其指定这些成组寄存器中的一者,被安排为与第二指令集的程序指令的寄存器指定字段的最低有效位共用的值,其映射到相同的架构寄存器。此举简化了译码。利用上述关于成组寄存器的安排的一些实施例的特征在于,指令译码器系被配置为提供映射,使得对于第二组寄存器中与在第二组的程序指令内的寄存器指定字段的递增值序列相对应的部分而言,在第一指令集的程序指令内的寄存器指定字段的对应值在两个值之间交替。当用所述第二指令集的程序指令来访问时,本发明所提供的所述多个寄存器包括空值寄存器,所述空值寄存器存储预定空值,并且所述第一指令集并不具有映射至所述空值寄存器的寄存器。当读此空值寄存器时,其可传回空值,并且,将空值寄存器指定为待写入的寄存器的指令被解释为丢弃结果。在一些实施例中,所述空值为零。在一些实施例中,当执行所述第一指令集的程序指令时,程序计数器寄存器存储值,所述值指示正执行的程序指令的存储器地址,并且,所述程序计数器寄存器在映射到所述第二组寄存器的所述第一组之外。因此,由如以上所论述的指令译码器所提供的一对一映射并未包括所述程序计数器寄存器。从本发明的另一方面来看,其提供一种用于处理数据的装置,其包括:多个寄存器部件,用于存储待处理的数据值;处理部件,用于对存储于所述多个寄存器部件中的数据值执行数据处理操作;指令译码部件,用于响应于程序指令流而控制所述处理电路,以执行所述数据处理操作;其中,所述指令译码部件响应于第一指令集的程序指令来控制所述处理部件,以使用由所述多个寄存器部件所提供的N位架构寄存器部件来执行所述数据处理操作,其中,N为正整数值;所述指令译码部件响应于第二指令集的程序指令来控制所述处理部件,以使用由所述多个寄存器部件所提供的M位架构寄存器部件来执行所述数据处理操作,其中,M为正整数值,并且,所述多个寄存器部件中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共享;所述指令译码器部件被配置为当判定要访问所述多个寄存器部件中的哪一个寄存器,以作为呈现给所述第一指令集的程序指令使用的第一组N位架构寄存器部件的部分时,译码在所述第一指令集的程序指令内的寄存器指定字段;所述指令译码器部件被配置为当判定要访问所述多个寄存器部件中的哪一个寄存器,以作为呈现给所述第二指令集的程序指令使用的第二组M位架构寄存器部件的部分时,译码在所述第二指令集的程序指令内的寄存器指定字段;并且,所述指令译码部件系被配置为提供在所述第一指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器部件之间的第一映射,以及在所述第二指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器部件之间的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一组的每个寄存器部件具有到所述第二组的寄存器部件的预定一对一映射,并且,与所述第二组的所述寄存器部件共享在所述多个寄存器部件内的共用寄存器部件的共享部分,以及无法使用所述第一指令集的指令访问的所述共用寄存器部件的非共享部分,并存储可使用所述第二组的寄存器部件访问的值。从本发明的另一方面来看,提供一种处理数据的方法,其包括以下步骤:在多个寄存器中存储待处理的数据值;对存储于所述多个寄存器中的数据值执行数据处理操作;译码程序指令流来控制所述执行;其中,所述译码响应于第一指令集的程序指令来控制所述数据处理操作的所述执行,所述数据处理操作的所述执行使用由所述多个寄存器所提供的N位架构寄存器,其中,N为一正整数值;所述译码响应于第二指令集的程序指令来控制所述数据处理的所述执行,所述数据处理的所述执行使用由所述多个寄存器所提供的M位架构寄存器,其中,M为正整数值,并且,所述多个寄存器中的至少一些寄存器被所述第一指令集的程序指令及所述第二指令集的程序指令共享;当判定要访问所述多个寄存器中的哪一个寄存器,以作为呈现给所述第一指令集的程序指令使用的第一组N位架构寄存器的部分时,所述译码对在所述第一指令集的程序指令内的寄存器指定字段进行译码;当判定要访问所述多个寄存器中的哪一个寄存器以作为呈现给所述第二指令集的程序指令使用的第二组M位架构寄存器的部分时,所述译码步骤译码在所述第二指令集的程序指令内的寄存器指定字段;并且所述译码提供在所述第一指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第一映射,以及在所述第二指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一组的每个寄存器具有至所述第二组的寄存器的预定一对一映射,并且,与所述第二组的所述寄存器共享在所述多个寄存器内的共用寄存器的共享部分,所述共用寄存器的非共享部分无法使用所述第一指令集的指令访问,并且,存储可使用所述第二组的寄存器访问的值。从本发明的另一方面来看,其提供一种用于处理数据的装置,其包括:多个寄存器,其被配置为存储待处理的数据值;处理电路,其耦合至所述多个寄存器,且被配置为对存储于所述多个寄存器中的数据值执行数据处理操作;指令译码器,其耦合至所述处理电路,并且,响应于程序指令流以控制所述处理电路,以执行所述数据处理操作;其中,所述指令译码器响应于第一指令集的程序指令来控制所述处理电路,以使用由所述多个寄存器所提供的第一组架构寄存器来执行所述数据处理操作;当执行所述第一指令集的程序指令时,所述装置被配置为在多个异常状态中操作,并且,所述指令译码器被配置为当判定要使用哪一个架构寄存器时,将在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态一起译码;所述指令译码器响应于第二指令集的程序指令来控制所述处理电路,以使用第二组架构寄存器来执行所述数据处理操作,所述第二组架构寄存器被所述多个寄存器提供且与所述第一指令集的程序指令共享;并且所述指令译码器被配置为当判定要使用哪一个架构寄存器时,在不依赖异常状态的情况下译码在所述第二指令集的程序指令内的寄存器指定字段。从本发明的另一方面来看,其提供一种用于处理数据的装置,其包括:多个寄存器部件,用于存储待处理的数据值;处理部件,用于对存储于所述多个寄存器部件中的数据值执行数据处理操作;指令译码部件,用于响应于程序指令流而控制所述处理电路,以执行所述数据处理操作;其中,所述指令译码器部件响应于第一指令集的程序指令来控制所述处理部件,以使用由所述多个寄存器部件所提供的第一组架构寄存器来执行所述数据处理操作;当执行所述第一指令集的程序指令时,所述装置被配置为在多个异常状态中操作,并且,所述指令译码器被配置为当判定要使用哪一个架构寄存器时,将在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态一起译码;所述指令译码器部件响应于第二指令集的程序指令来控制所述处理部件,以使用第二组架构寄存器来执行所述数据处理操作,所述第二组架构寄存器由所述多个寄存器部件提供且与所述第一指令集的程序指令共享;并且所述指令译码器部件被配置为当判定要使用哪一个架构寄存器时,在不依赖异常状态的情况下译码在所述第二指令集的程序指令内的寄存器指定字段。从本发明的另一方面来看,其提供一种处理数据的方法,其包括以下步骤:在多个寄存器中存储待处理的数据值;对存储于所述多个寄存器中的数据值执行数据处理操作;译码程序指令流,以控制所述数据处理操作的所述执行;其中,所述译码响应于第一指令集的程序指令来控制所述数据处理操作的所述执行,所述数据处理操作的所述执行使用由所述多个寄存器所提供的第一组架构寄存器;当执行所述第一指令集的程序指令时,在多个异常状态中的一者中操作,并且,将在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态一起译码,以判定要使用哪一个架构寄存器;所述译码响应于第二指令集的程序指令来控制所述数据处理操作的所述执行,所述数据处理操作的所述执行使用第二组架构寄存器,所述第二组架构寄存器由所述多个寄存器提供且与所述第一指令集的程序指令共享;并且当判定要使用哪一个架构寄存器时,所述译码在不依赖异常状态的情况下译码在所述第二指令集的程序指令内的寄存器指定字段。现将参照附图仅以示例的方式来描述发明的实施例。


图1示意地图示支持对32位数据值操作的第一指令集及对64位数据值操作的第二指令集的数据处理系统;图2示意地图示图1的数据处理系统的64位通用寄存器;图3示意地图示使用图2的通用寄存器对32位数据处理值操作的数据处理指令的动作;图4示意地图示使用图2的通用寄存器对64位数据处理值操作的数据处理指令的动作;图5示意地图示对32位数据处理值操作且包括寄存器指定字段的指令的实例;图6示意地图示对64位数据处理值操作且包括寄存器指定字段的指令的实例;图7示意地图示呈现至对32位数据处理值操作的第一指令集程序指令的寄存器;
图8示意地图示呈现至对64位数据处理值操作的第二指令集的寄存器;图9示意地图示图7与图8之间的映射;图10为示意地图示指令的译码的流程图;图11示意地图示来自不同指令集的程序指令的寄存器指定字段的译码;以及图12示意地图示虚拟机实现。
具体实施例方式图1示意地图示包括耦合至存储器6的处理器4的数据处理系统2。处理器4包括多个寄存器8,其被形成为31*64位通用寄存器,加上总是传回零值的空寄存器。这种由并未使用寄存器重新命名的实施例中的处理器4的硬件所提供的寄存器。在使用寄存器重新命名的实施例中,架构寄存器(例如,如由指令指定的及如在程序设计师的模型中考虑的寄存器)可映射至不同物理寄存器,且多个物理寄存器可同时保存在程序命令不同时间处对应于相同架构寄存器的值。寄存器8的使用系经由呈现给第一指令集的第一组寄存器(一组32位架构寄存器),且系经由呈现给第二指令集的第二组寄存器(一组64位架构寄存器),所述第一指令集包括以32位编码且对32位数据值(32位指令)操作的指令,所述第二指令集包括以32位编码且对64位数据值(64位指令)操作的指令。这种指令集内的指令系依照使用32位来编码,但是由这种指令集所作用的数据值的宽度却不同。处理电路10系耦合至多个寄存器8,且为包括乘法器12、移位器14及加法器16的数据路径的形式。指令译码器18 (其包括寄存器映射电路)响应由指令译码器18所译码的程序指令而产生控制信号20。这种控制信号20控制且配置处理电路10,且控制对多个通用寄存器8内的寄存器的访问。将理解到,处理电路10系以简化形式来展示以提高明确性,且实际上将可具有更多电路组件。数据处理系统2使用状态数据(其可能为或可能不为使用者可读式),来控制是将程序指令译码为第一指令集的程序指令还是第二指令集的程序指令,例如,可将模式位或模式状态设定为指示哪一个指令集为在使用中。在不同指令集内的指令的编码可为非正交(non-orthogonal),因为相同指令位型样可发生于两个指令集中且对应于这些指令集内的不同指令。待译码的程序指令从存储第一指令集的程序24及第二指令集的程序26的存储器6,被提取至指令管线22中。当程序指令在指令管线22内到达译码阶段时,则将其传递至指令译码器18以译码,而产生控制信号20。指令译码器18亦响应来自指令集选择电路28的信号,以指示哪一个指令集当前为在使用中,且相应地由指令管线22所呈现以译码的程序指令是应译码为第一指令集的32位指令还是第二指令集的64位指令。当指令译码器18正译码来自第一指令集的指令(32位指令)时,则指令译码器亦响应来自32位异常模式电路30的指示处理器4当前为在哪一模式中操作的信号。如以下将描述的,当执行第一指令集的程序指令时需要当前异常模式,以指定呈现至第一指令集的第一组寄存器中的哪一个寄存器将被使用。图2图示来自图1的多个通用寄存器8中的一者。此通用寄存器为64位寄存器。当执行第一指令集的程序指令(32位指令)时,访问并操纵图2的寄存器的最低有效位部分。在优选实施例中,尽管最高有效位部分可调至零或设为一些未定义的值,但是在这种操纵期间其仍保持不变。当图2的寄存器由第二指令集的程序指令来访问时,利用寄存器的全部64个位。因此,即使两个指令集对不同数据宽度操作,其仍可共享提供于图1的多个寄存器8中的物理寄存器。寄存器的最闻有效32位为两个指令集之间非共孚的寄存器的一部分。图3示意地图示使用寄存器以执行来自第一指令集的加法运算中。如将可见的,利用每个寄存器的较低部分来为所执行的处理操作提供输入操作数或目的地。忽略寄存器的较高部分,并且,在优选实施例中所述较高部分保持不变。在图4中,以类似方式来图示第二指令集的加法运算(64位指令)。自图4将可见,在此状况下,所有输入操作数及目的地利用图2的寄存器的全部宽度。图5示意地图示包括三个寄存器指定字段的第一指令集的指令(32位指令)。这种寄存器指定字段为4位字段,所述4位字段允许由每个寄存器指定字段指定16个不同值。图示两个源寄存器指定字段,即,Rm及! 。图示一个目的地寄存器指定字段,即,Rd。图5中示意地图示的指令的剩余者,为用以指示将执行哪一个数据处理操纵的操作码(opcode)。寄存器指定字段也可与自寄存器指定符的其他位分离的寄存器指定符的一些位不相连。图6类似于图5,只是在此情况下图示来自第二指令集的指令(64位指令)。在此情况下,寄存器指定字段为5位字段,所述5位字段允许指示每个寄存器指定字段的达32个不同值。源寄存器指定字段为Xm及Xn,并且目的地寄存器指定字段为Xd。图7图示呈现至第一指令集的第一组架构寄存器。此为呈现至由英国Cambridge的ARM有限公司所设计的处理器中的ARM指令集的架构寄存器的组。寄存器指定字段为4位字段,所述4位字段允许指定介于O与15之间的值。寄存器R15系保留以用作程序计数器。如以下所讨论的,将R15用作程序计数器为专用使用,且程序计数器并不形成呈现至ARM指令集(第一指令集)的第一组架构寄存器中的一者,所述ARM指令集系映射至呈现至64位指令集的第二组架构寄存 器。如图7中所图示,用户及系统模式具备十五个通用寄存器RO至R14。在如图5中所图示的指令内的寄存器指定字段,系用以指定这种寄存器中的哪一个将被访问为正执行的数据处理操作的部分。将理解到,许多数据处理操作指定待访问的多个寄存器。实际上,寄存器R13被保留以用作堆栈指针,而寄存器R14被用作返回地址寄存器,例如,用于存储关于函数调用的返回地址。图7图示当处理器4正在异常模式(如由32位异常模式电路30对指令译码器18指示者)中的一者中操作时,不同架构寄存器在使用特定寄存器指定值时提供至第一指令集。因此,如一个实例,当寄存器指定值为「13」时,存在可使用(在任何寄存器重新命名前)的七个不同架构寄存器。这种架构寄存器中的第一个系用于用户或系统模式中。视当前异常模式或处理器是否正在超管理器模式中执行而定,选择这种架构寄存器中的剩余六个,所述架构寄存器是有效替代用于用户或系统模式中的架构寄存器。如图1中所图示,若处理器4正在超管理器模式中执行,则此状况由输入至指令译码器18的信号来指示。可替代用户或系统模式的R13寄存器的六个架构寄存器,其作为称为成组异常寄存器的群。将可见,不同架构寄存器具有不同数目的成组等同物,且并非所有架构寄存器具有成组等同物。在一些情况下,提供这种成组寄存器可促进更快的异常处理。
图8示意地图示当呈现至第二指令集时的第二组架构寄存器。与图示于图7中的第一组架构寄存器相比,此第二组架构寄存器具有简化结构。第二组架构寄存器包括每一个皆为64位寄存器的三十一个通用寄存器。这种被表示为XO至X30。使用图示于图6中的五位寄存器指定字段来指定将访问这种架构寄存器中的哪一个。图示于图8中的架构寄存器被作为64位寄存器访问,并且所有64个位均由指定的数据处理操作来操纵。与此相反,即使基本物理寄存器为如图示于图2中的64位寄存器,图7的架构寄存器仍访问为32位寄存器。亦图示于图8中的为存储空值(例如,O )的空寄存器X31。每当读此空寄存器时,则传回空值。每当写入此寄存器时,则空值仍然存储于空寄存器内,而不顾尝试的写入。如在图7中所图示,在呈现至第一指令集的架构寄存器中不存在图8的空寄存器的等同物。因此,空寄存器并未包括在从属于第一组与第二组的寄存器之间的一对一映射的第二组架构寄存器内。图9图示第一组的寄存器与第二组的寄存器之间的映射。如图所示,寄存器XO至X7与寄存器RO至R7分别访问相同64位寄存器。对于更多的寄存器,延续如图示的映射。应注意的特征在于,对于寄存器R13及R14而言,使用于第一指令集中的寄存器指定符的最低有效位对应于用于第二指令集中的对应寄存器的寄存器指定符的最低有效位。此简化了用以选择物理寄存器的寄存器指定符及异常模式的译码。此映射的另一特征在于,用于寄存器X16至X23的寄存器指定符的递增序列,对应于R14及R13的第一指令集中的值,两寄存器的值交替。自图9可见,在呈现至第一指令集的第一组寄存器与呈现至第二指令集的第二组寄存器之间存在一对一映射。第一组的所有寄存器可被第二指令集的程序指令访问。此促进指令集之间的互操作。因此,当执行第一指令集的指令时,保存在成组寄存器内的一些值可能并不为程序指令可用,因为当前异常模式并未将这些成组寄存器映射至使用中。然而,切换至执行第二指令集的指令将第一组的所有寄存器均映射至第二组的寄存器,使得其全部可在任何当前模式中访问。图10为示意地图示指令译码器18的操作的流程图。在步骤32处,处理程序等待,直至收到指令为止。在步骤34处,执行关于指令是否来自第二指令集(亦即,指令为64位指令)的判定。若指令为64位指令,则步骤36译码所述64位指令。步骤38将待使用的寄存器映射至5位字段的寄存器指定字段。接着,步骤40访问由5位寄存器指定字段指定的寄存器。步骤42执行指令。若在步骤34处判定指令并非为64位指令,则步骤44将所述指令译码为32位指令。如先前所论述的,步骤46使用4位寄存器指定字段及当前异常模式(及超管理器状态)来映射待使用的寄存器。接着,步骤40及步骤42访问已识别的寄存器,且执行指令。图11示意地图示当由部分指令译码器18来执行时,来自不同指令集的程序指令的译码。这种指令集为编码为操纵32位数据值的32位指令的ARM指令集、编码为操纵32位数据值的16位指令的Thumb指令集及编码为操纵64位数据值的32位指令的64位指令集。ARM指令包括长度为y位(例如,允许指定16个不同架构寄存器的4个位)的寄存器字段。Thumb指令使用X个位的寄存器指定字段,其由一 H位扩充以用于一些指令,例如,3个位允许正常寻址8个架构寄存器,且由H位扩充以对一些指令允许寻址16个架构寄存器。64位指令使用z位寄存器指定字段,例如,允许寻址32个架构寄存器的5位寄存器指定字段。在处理器4内的状态控制哪一个指令集当前为在使用中。在一些实施例中,此状态可为程序设计师可见。可通过使用指令集选择指令来选择当前在使用中的指令集,所述指令集选择指令有时可与分支操作(例如,用指令集的切换来分支)相关联。不同指令集的指令编码为非正交的,结果,指定ARM指令的相同32位型样可对应于在64位指令集内的不同指令。此32位型样的正确译码可结合识别哪一个指令集当前为在使用中的状态来执行。通过使用转换电路50首先将X个位及H位转换为y位字段,来执行Thumb指令的寄存器指定字段的译码。此y位字段对应于ARM指令中的7位字段。接着,视ARM指令集或Thumb指令集中的哪一个当前为在使用中而定,多任务器52选择将来自转换电路50的Y位寄存器指定字段或将读自ARM指令的y位指定字段传递至成组寄存器映射电路54。如先前结合图7所描述的,ARM指令集(及Thumb指令集)提供成组寄存器。为访问特定架构寄存器,需要通过成组寄存器映射电路54来译码y位寄存器指定字段及当前异常模式,以产生z位架构平坦寄存器编号(architecturally flat register number;AFRN)。举例而言,自ARM指令或Thumb指令产生的给定y位寄存器指定字段可指定寄存器R13。然而,如图7中所示,存在每个皆对应于此y位字段的七个架构寄存器,并且,使用当前异常模式在此七个不同架构寄存器之间选择,以产生相应架构平坦寄存器编号。64位指令集并不使用成组寄存器。因此,可将z位寄存器指定字段直接用作架构平坦寄存器编号,以指定待访问的架构寄存器。多任务器56在读自64位指令的架构平坦寄存器编号或由成组寄存器映射电路54所产生的架构平坦寄存器编号之间选择,以提供向前传递至寄存器重新命名电路58的架构平坦寄存器编号。寄存器重新命名电路可根据已知乱序处理技术执行寄存器重新命名操作,以产生寄存器指定符z’,所述寄存器指定符z’被用以在多个寄存器60内寻址物理寄存器。图11的安排允许在不同指令集之间共享寄存器重新命名电路58,以及多个寄存器60的共享。架构平坦寄存器编号的共同产生简化了译码及多个寄存器60的共享。不必在所有实施例中均提供寄存器重新命名电路58。图12图示可使用的虚拟机实现。虽然先前所描述的实施例自用于操作支持有关技术的特定处理硬件的装置及方法的角度来实施本发明,但是提供所谓的硬设备的虚拟机实现也是可能的。这种虚拟机实现在主机处理器530上执行,主机处理器530执行支持虚拟机程序510的主机操作系统520。通常,需要大型强大处理器来提供以合理速度执行的虚拟机实现,但是在一些情况下(诸如,当出于兼容性或再利用性的原因而希望将本机编码执行至另一处理器时)可调整此方法。虚拟机程序510向应用程序500提供应用程序编程接口,该应用程序编程接口与将由真实硬件来提供的应用程序编程接口相同,该真实硬件为正由虚拟机程序510模型化的装置。因此,可使用虚拟机程序510在应用程序500内执行程序指令(包括以上所描述的存储器访问的控制),以模型化其与虚拟机硬件的交互。
权利要求
1.一种用于处理数据的装置,所述装置包括: 多个寄存器,该多个寄存器被配置为存储待处理的数据值; 处理电路,该处理电路耦合至所述多个寄存器,并且,被配置为对存储于所述多个寄存器中的数据值执行数据处理操作; 指令译码器,该指令译码器耦合至所述处理电路,并且,响应于程序指令流来控制所述处理电路,以执行所述数据处理操作;其中, 所述指令译码器响应于第一指令集的程序指令来控制所述处理电路,以使用由所述多个寄存器所提供的N位架构寄存器来执行所述数据处理操作,其中,N为正整数值; 所述指令译码器响应于第二指令集的程序指令来控制所述处理电路,以使用由所述多个寄存器所提供的M位架构寄存器来执行所述数据处理操作,其中,M为正整数值,并且,所述多个寄存器中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共孚; 所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一寄存器,以作为呈现给所述第一指令集的程序指令使用的第一组N位架构寄存器的部分时,译码在所述第一指令集的程序指令内的寄存器指定字段; 所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一寄存器,以作为呈现给所述第二指令集的程序指令使用的第二组M位架构寄存器的部分时,译码在所述第二指令集的程序指令内的寄存器指定字段;并且 所述指令译码器被配置为提供在所述第一指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第一映射,以及在所述第二指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及 所述第二映射使得所述第一组的每个寄存器具有到所述第二组的寄存器的预定一对一映射,并且,与所述第二组的所述寄存器共享在所述多个寄存器内的共用寄存器的共享部分,所述共用寄存器的非共享部分是无法使用所述第一指令集的指令来访问的,并且,存储可使用所述第二组的寄存器访问的值。
2.按权利要求1所述的装置,其中,M=2N。
3.按权利要求1和2中的任一项所述的装置,其中,所述第一组及所述第二组包括相同数量的寄存器。
4.按权利要求1、2和3中的任一项所述的装置,其中,所述多个寄存器包括多个M位寄存器,并且,所述第一指令集的程序指令访问所述M位寄存器的最低有效N位。
5.根据前述权利要求中的任一项所述的装置,其中,N=32。
6.根据前述权利要求中的任一项所述的装置,其中,当执行所述第一指令集的程序指令时,所述装置被配置为在多个异常状态中操作,并且,所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一寄存器时,将在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态一起译码,并且,一群在所述第一组内的寄存器为成组寄存器群,该群寄存器对应于在所述第一指令集的所述程序指令内的所述寄存器指定字段的共用值和不同的异常状态。
7.按权利要求6所述的装置,其中,在所述成组寄存器群内,所述第一指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值与所述第二指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值共用。
8.按权利要求7所述的装置,其中,所述指令译码器被配置为提供所述映射,使得对于所述第二组的所述寄存器中与在所述第二指令集的所述程序指令内的所述寄存器指定字段的递增值序列相对应的部分而言,在所述第一指令集的所述程序指令内的所述寄存器指定字段的对应值在两个值之间交替。
9.根据前述权利要求中的任一项所述的装置,其中,当用所述第二指令集的程序指令来访问时,所述多个寄存器包括空值寄存器,所述空值寄存器存储预定空值。
10.按权利要求9所述的装置,其中,所述第一组寄存器不具有映射到所述空值寄存器的架构寄存器。
11.根据前述权利要求中的任一项所述的装置,其中,当执行所述第一指令集的程序指令时,程序计数器寄存器存储值,所述值指示正执行的程序指令的存储器地址,并且,所述程序计数器寄存器在映射到所述第二组寄存器的所述第一组之外。
12.根据前述权利要求中的任一项所述的装置,其中,当所述共用寄存器被所述第一指令集的程序指令访问时,所述非共享部分为调至零、不变及设定为未定义值中的一者。
13.一种用于处理数据的装置,所述装置包括: 多个寄存器部件,用于存储待处理的数据值; 处理部件,用于对存储于所述多个寄存器部件中的数据值执行数据处理操作; 指令译码部件,用于响应于程序指令流而控制所述处理电路,以执行所述数据处理操作;其中, 所述指令译码部件响应于第一指令集的程序指令来控制所述处理部件,以使用由所述多个寄存器部件所提供的N位架构寄存器部件来执行所述数据处理操作,其中,N为正整数值; 所述指令译码部件响应于第二指令集的程序指令来控制所述处理部件,以使用由所述多个寄存器部件所提供的M位架构寄存器部件来执行所述数据处理操作,其中,M为正整数值,并且,所述多个寄存器部件中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共享; 所述指令译码器部件被配置为当判定要访问所述多个寄存器部件中的哪一寄存器,以作为呈现给所述第一指令集的程序指令使用的第一组N位架构寄存器部件的部分时,译码在所述第一指令集的程序指令内的寄存器指定字段; 所述指令译码器部件被配置为当判定要访问所述多个寄存器部件中的哪一寄存器,以作为呈现给所述第二指令集的程序指令使用的第二组M位架构寄存器部件的部分时,译码在所述第二指令集的程序指令内的寄存器指定字段;并且 所述指令译码部件被配置为提供在所述第一指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器部件之间的第一映射,以及在所述第二指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器部件之间的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一组的每个寄存器部件具有至所述第二组的寄存器部件的预定一对一映射,并且,与所述第二组的所述寄存器部件共享在所述多个寄存器部件内的共用寄存器部件的共享部分,无法使用所述第一指令集的指令访问的所述共用寄存器部件的非共享部分,以及存储可使用所述第二组的寄存器部件可访问的值。
14.一种处理数据的方法,所述方法包括以下步骤: 在多个寄存器中存储待处理的数据值; 对存储于所述多个寄存器中的数据值执行数据处理操作; 译码程序指令流,以控制所述数据处理操作的所述执行;其中, 所述译码响应于第一指令集的程序指令来控制所述数据处理操作的所述执行,该执行使用由所述多个寄存器所提供的N位架构寄存器,其中,N为正整数值; 所述译码响应于第二指令集的程序指令来控制所述数据处理操作的所述执行,所述执行使用由所述多个寄存器所提供的M位架构寄存器,其中,M为正整数值,并且,所述多个寄存器中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共 当判定要访问所述多个寄存器中的哪一寄存器,以作为呈现给所述第一指令集的程序指令使用的第一组N位架构寄存器的部分时,所述译码对在所述第一指令集的程序指令内的寄存器指定字段进行译码; 当判定要访问所述多个寄存器中的哪一寄存器,以作为呈现给所述第二指令集的程序指令使用的第二组M位架构寄存器的部分时,所述译码对在所述第二指令集的程序指令内的寄存器指定字段进行译码;并且 所述译码提供在所述第一指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第一映射,以及在所述第二指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一组的每个寄存器具有到所述第二组的寄存器的预定一对一映射,并且,与 所述第二组的所述寄存器共享在所述多个寄存器内的共用寄存器的共享部分,所述共用寄存器的非共享部分无法使用所述第一指令集的指令访问,以及存储可使用所述第二组的寄存器访问的值。
15.按权利要求14所述的方法,其中,M=2N。
16.按权利要求14和15中的任一项所述的方法,其中,所述第一组及所述第二组包括相同数量的寄存器。
17.按权利要求14、15和16中的任一项所述的方法,其中,所述多个寄存器包括多个M位寄存器,并且,所述第一指令集的程序指令访问所述M位寄存器的最低有效N位。
18.按权利要求14至17中的任一项所述的方法,其中,N=32。
19.按权利要求14至18中的任一项所述的方法,其中,当执行所述第一指令集的程序指令时,在多个异常状态中的一者中操作,并且,当判定要访问所述多个寄存器中的哪一寄存器时,所述译码步骤将在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态一起译码,并且,一群在所述第一组内的寄存器为成组寄存器群,该群寄存器对应于在所述第一指令集的所述程序指令内的所述寄存器指定字段的共用值和不同的异常状态。
20.按权利要求19所述的方法,其中,在所述成组寄存器群内,所述第一指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值与所述第二指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值共用。
21.按权利要求20所述的方法,其中,所述译码提供所述映射,使得对于所述第二组的所述寄存器与在所述第二指令集的所述程序指令内的所述寄存器指定字段的递增值序列相对应的部分而言,在所述第一指令集的所述程序指令内的所述寄存器指定字段的对应值在两个值之间交替。
22.按权利要求14至21中的任一项所述的方法,其中,当用所述第二指令集的程序指令访问时,所述多个寄存器包括空值寄存器,所述空值寄存器存储预定空值。
23.按权利要求22所述的方法,其中,所述第一组寄存器不具有映射到所述空值寄存器的架构寄存器。
24.按权利要求14至23中的任一项所述的方法,其中,当执行所述第一指令集的程序指令时,程序计数器寄存器存储值,所述值指示正执行的程序指令的存储器地址,并且,所述程序计数器寄存器在映射至所述第二组寄存器的所述第一组寄存器之外。
25.按权利要求14至24中的任一项所述的方法,其中,当所述共享寄存器被所述第一指令集的程序指令访问时,所述非共享部分为调至零、不变及设定为未定义值中的一者。
26.一种虚拟机,该虚拟机由在数据处理装置上执行的计算机程序提供,所述虚拟机提供对应于如权利要求1至12中的任一项所述的装置的指令执行环境。
27.一种用于处理数据的装置,所述装置包括: 多个寄存器,该多个寄存器被配置为存储待处理的数据值; 处理电路,该处理电路耦合至 所述多个寄存器,并且,被配置为对存储于所述多个寄存器中的数据值执行数据处理操作; 指令译码器,该指令译码器耦合至所述处理电路,并且,响应于程序指令流来控制所述处理电路,以执行所述数据处理操作;其中, 所述指令译码器响应于第一指令集的程序指令,以控制所述处理电路,以使用由所述多个寄存器所提供的一第一组架构寄存器来执行所述数据处理操作; 当执行所述第一指令集的程序指令时,所述装置被配置为在多个异常状态中操作,并且,所述指令译码器被配置为当判定要使用哪一架构寄存器时,将在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态一起译码; 所述指令译码器响应于第二指令集的程序指令来控制所述处理电路,以使用第二组架构寄存器来执行所述数据处理操作,所述第二组架构寄存器由所述多个寄存器提供且与所述第一指令集的程序指令共享;并且 所述指令译码器被配置为当判定要使用哪一架构寄存器时,在不依赖异常状态的情况下译码在所述第二指令集的程序指令内的寄存器指定字段。
28.按权利要求27所述的装置,其中,所述第一组及所述第二组包括相同数量的寄存器。
29.按权利要求27和28中的任一项所述的装置,其中,所述多个寄存器包括多个2N位寄存器,并且,所述第一指令集的程序指令访问所述2N位寄存器的最低有效N位。
30.按权利要求29所述的装置,其中,N=32。
31.按权利要求27至30中的任一项所述的装置,其中,一群在所述第一组内的寄存器为成组寄存器群,该群寄存器对应于在所述第一指令集的所述程序指令内的所述寄存器指定字段的共用值和不同的异常状态。
32.按权利要求31所述的装置,其中,在所述成组寄存器群内,所述第一指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值与所述第二指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值共用。
33.按权利要求32所述的装置,其中,所述指令译码器被配置,以使得对于所述第二组的所述寄存器中与在所述第二指令集的所述程序指令内的所述寄存器指定字段的递增值序列相对应的部分而言,在所述第一指令集的所述程序指令内的所述寄存器指定字段的对应值在两个值之间交替。
34.按权利要求27至33中的任一项所述的装置,其中,当用所述第二指令集的程序指令来访问时,所述多个寄存器包括空值寄存器,所述空值寄存器存储预定空值,所述第一组不具有对应于所述空值寄存器的寄存器。
35.按权利要求34所述的装置,其中,所述第一组不具有对应于所述空值寄存器的架构寄存器。
36.按权利要求27至35中的任一项所述的装置,其中,当执行所述第一指令集的程序指令时,程序计数器寄存器存储值,所述值指示正执行的程序指令的存储器地址,并且,所述程序计数器寄存器在对应于所述第二组寄存器的所述第一组之外。
37.一种用于处理数据的装置,所述装置包括: 多个寄存器部件,用于存储待处理的数据值; 处理部件,用于对存储于所述多个寄存器部件中的数据值执行数据处理操作; 指令译码部件,用于响应于程序 指令流而控制所述处理电路,以执行所述数据处理操作;其中。
所述指令译码器部件响应于第一指令集的程序指令来控制所述处理部件,以使用由所述多个寄存器部件所提供的第一组架构寄存器来执行所述数据处理操作; 当执行所述第一指令集的程序指令时,所述装置被配置为在多个异常状态中操作,并且,所述指令译码器被配置为当判定要使用哪一架构寄存器时,译码在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态; 所述指令译码器部件响应于第二指令集的程序指令来控制所述处理部件,以使用第二组架构寄存器来执行所述数据处理操作,所述第二组架构寄存器由所述多个寄存器部件提供且与所述第一指令集的程序指令共享;并且 所述指令译码器部件被配置为当判定要使用哪一架构寄存器时,在不依赖异常状态的情况下译码在所述第二指令集的程序指令内的寄存器指定字段。
38.一种处理数据的方法,所述方法包括以下步骤: 在多个寄存器中存储待处理的数据值; 对存储于所述多个寄存器中的数据值执行数据处理操作; 译码程序指令流,以控制所述数据处理操作的所述执行;其中, 所述译码响应于第一指令集的程序指令来控制所述数据处理操作的所述执行,所述执行使用由所述多个寄存器所提供的第一组架构寄存器; 当执行所述第一指令集的程序指令时,在多个异常状态中的一者中操作,并且,当判定要使用哪一架构寄存器时,将在所述第一指令集的程序指令内的寄存器指定字段及所述多个异常状态的当前异常状态一起译码;所述译码响应于第二指令集的程序指令来控制所述数据处理操作的所述执行,所述执行使用第二组架构寄存器,所述第二组架构寄存器由所述多个寄存器提供并与所述第一指令集的程序指令共享;并且 当判定要使用哪一架构寄存器时,所述译码在不依赖异常状态的情况下译码在所述第二指令集的程序指令内的寄存器指定字段。
39.按权利要求38所述的方法,其中,所述第一组及所述第二组包括相同数量的寄存器。
40.按权利要求38和39中的任一项所述的方法,其中,所述多个寄存器包括多个2N位寄存器,并且,所述第一指令集的程序指令访问所述2N位寄存器的最低有效N位。
41.按权利要求40所述的方法,其中,N=32。
42.按权利要求38至41中的任一项所述的方法,其中,一群在所述第一组内的寄存器为成组寄存器群,该群寄存器对应于在所述第一指令集的所述程序指令内的所述寄存器指定字段的共用值和不同的异常状态。
43.按权利要求42所述的方法,其中,在所述成组寄存器群内,所述第一指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值与所述第二指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值共用。
44.按权利要求43所述的方法,其中,所述译码步骤使得对于所述第二组的所述寄存器中与在所述第二指令集的所述程序指令内的所述寄存器指定字段的递增值序列相对应的部分而言,在所述第一指令 集的所述程序指令内的所述寄存器指定字段的对应值在两个值之间交替。
45.按权利要求38至44中的任一项所述的方法,其中,当用所述第二指令集的程序指令来访问时,所述多个寄存器包括空值寄存器,所述空值寄存器存储预定空值,所述第一组不具有对应于所述空值寄存器的寄存器。
46.按权利要求45所述的方法,其中,所述第一组不具有对应于所述空值寄存器的架构寄存器。
47.按权利要求38至46中的任一项所述的方法,其中,当执行所述第一指令集的程序指令时,程序计数器寄存器存储值,所述值指示正执行的程序指令的存储器地址,并且,所述程序计数器寄存器在对应于所述第二组寄存器的所述第一组之外。
48.一种由在数据处理装置上执行的计算机程序提供的虚拟机,所述虚拟机提供对应于如权利要求27至36中的任一项的装置的指令执行环境。
全文摘要
本发明提供一种处理器(4),其支持指定32位架构寄存器的第一指令集及指定64位架构寄存器的第二指令集。对这种指令集中的每一者呈现其自身架构寄存器组以供其使用。呈现给所述第一指令集的所述第一组寄存器与呈现给此第二指令集的所述第二组寄存器之间具有一对一映射关系。提供于硬件中的所述寄存器为64位寄存器。在一些实施例中,当执行所述第一指令集的程序指令时,仅访问且操纵这种64位寄存器的最低有效部分,并且所述寄存器的剩余最高有效部分保持不变。将在所述第一指令集的指令内的寄存器指定字段与当前异常模式一起译码,以判定将使用哪一个架构寄存器,而所述第二指令集在不依赖异常模式的情况下使用寄存器指定字段来判定将使用哪一个架构寄存器。
文档编号G06F9/318GK103098020SQ201180014383
公开日2013年5月8日 申请日期2011年2月16日 优先权日2010年3月15日
发明者理查德·罗伊·格里森思怀特, 戴维·詹姆斯·西尔 申请人:Arm 有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1