发明名称 由多个指令集使用的寄存器间映射
摘要 本发明提供一种处理器(4),其支持指定32位架构寄存器的第一指令集及指定64位架构寄存器的第二指令集。对这种指令集中的每一者呈现其自身架构寄存器组以供其使用。呈现给所述第一指令集的所述第一组寄存器与呈现给此第二指令集的所述第二组寄存器之间具有一对一映射关系。提供于硬件中的所述寄存器为64位寄存器。在一些实施例中,当执行所述第一指令集的程序指令时,仅访问且操纵这种64位寄存器的最低有效部分,并且所述寄存器的剩余最高有效部分保持不变。将在所述第一指令集的指令内的寄存器指定字段与当前异常模式一起译码,以判定将使用哪一个架构寄存器,而所述第二指令集在不依赖异常模式的情况下使用寄存器指定字段来判定将使用哪一个架构寄存器。
申请公布号 CN103098020B 申请公布日期 2016.04.27
申请号 CN201180014383.2 申请日期 2011.02.16
申请人 ARM 有限公司 发明人 理查德·罗伊·格里森思怀特;戴维·詹姆斯·西尔
分类号 G06F9/30(2006.01)I;G06F9/318(2006.01)I;G06F9/38(2006.01)I 主分类号 G06F9/30(2006.01)I
代理机构 北京东方亿思知识产权代理有限责任公司 11258 代理人 宋鹤
主权项 一种用于处理数据的装置,所述装置包括:多个寄存器,该多个寄存器被配置为存储待处理的数据值;处理电路,该处理电路耦合至所述多个寄存器,并且,被配置为对存储于所述多个寄存器中的数据值执行数据处理操作;指令译码器,该指令译码器耦合至所述处理电路,并且,响应于程序指令流来控制所述处理电路,以执行所述数据处理操作;其中,所述指令译码器响应于第一指令集的程序指令来控制所述处理电路,以使用由所述多个寄存器所提供的N位架构寄存器来执行所述数据处理操作,其中,N为正整数值;所述指令译码器响应于第二指令集的程序指令来控制所述处理电路,以使用由所述多个寄存器所提供的M位架构寄存器来执行所述数据处理操作,其中,M为与N不同的正整数值,并且,所述多个寄存器中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共享;所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一寄存器,以作为呈现给所述第一指令集的程序指令使用的第一组N位架构寄存器的部分时,译码在所述第一指令集的程序指令内的寄存器指定字段;所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一寄存器,以作为呈现给所述第二指令集的程序指令使用的第二组M位架构寄存器的部分时,译码在所述第二指令集的程序指令内的寄存器指定字段;并且所述指令译码器被配置为提供在所述第一指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第一映射,以及在所述第二指令集的程序指令内的所述寄存器指定字段的值与所述多个寄存器之间的第二映射,所述第一映射不同于所述第二映射,使得所述多个寄存器包括由所述第一指令集的程序指令内的所述寄存器指定字段的第一值标识、并由所述第二指令集的程序指令内的所述寄存器指定字段的第二值标识的至少一个寄存器,所述第一值和所述第二值表示不同的数值,并且,所述第一映射及所述第二映射使得所述第一组的每个寄存器具有到所述第二组的寄存器的预定一对一映射,并且,与所述第二组的所述寄存器共享在所述多个寄存器内的共用寄存器的共享部分,所述共用寄存器的非共享部分是无法使用所述第一指令集的指令来访问的,并且,存储可使用所述第二组的寄存器访问的值,其中,当执行所述第一指令集的程序指令时,所述装置被配置为在多个异常状态中操作,并且,所述指令译码器被配置为当判定要访问所述多个寄存器中的哪一寄存器时,将在所述第一指令集的程序指令内的所述寄存器指定字段及所述多个异常状态的当前异常状态一起译码,并且,一群在所述第一组内的寄存器为成组寄存器群,该群寄存器对应于在所述第一指令集的所述程序指令内的所述寄存器指定字段的共用值和不同的异常状态,其中,在所述成组寄存器群内,所述第一指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值与所述第二指令集的所述程序指令内的所述寄存器指定字段的最低有效位的值共用,其中,所述指令译码器被配置为提供所述映射,使得对于所述第二组的所述寄存器中与在所述第二指令集的所述程序指令内的所述寄存器指定字段的递增值序列相对应的部分而言,在所述第一指令集的所述程序指令内的所述寄存器指定字段的对应值在两个值之间交替。
地址 英国剑桥