基于单/双发射指令集的微处理器指令处理方法及系统的制作方法

文档序号:6363483阅读:182来源:国知局
专利名称:基于单/双发射指令集的微处理器指令处理方法及系统的制作方法
技术领域
本发明涉及微处理器的指令处理方法及系统,特别涉及基于混合单发射/双发射指令集的微处理器指令处理方法及系统。
背景技术
在微处理器的基本架构中,在一个指令周期内执行的指令处理过程主要包括指令寻址、指令读取、指令译码、读操作数、运算、结果写回等步骤。传统的基于单发射指令的微处理器在处理一条指令的过程中仅执行一次运算。虽然实际上很多运算可以并行处理,但是由于运算单元ALU在一个周期内仅执行一次运算的限制而无法实现,因此ALU成为了传统微处理器效率的瓶颈,使得这种传统的基于单发射指令的微处理器的工作效率较低。为了提高微处理器的工作效率,目前已经提出了双发射指令技术。双发射的概念是,每一条指令能够读取四个操作数,进行两个不同(也可能是相同)的运算,目前的高端处理器一般都支持双发射指令,甚至多发射指,使得微处理器工作效率大大提高。现有的基于双发射指令的微处理器的指令处理方式主要有以下几种:第一种方式是每条指令仍只包含一个运算,在指令处理的过程中,指令处理系统同时读取两条指令,通过硬件根据两条指令之间的依赖关系临时计算这两条指令是否可以同时进行,如果计算的结果为可以同时进行,则将两条指令分别写入两条流水线。由于两条指令在两个流水线中分别执行的过程中可能出现先后次序颠倒,因此在两条流水线分别完成运算之后,要对两个运算结果进行重新排序,再进行结果的写回。这种处理方式的问题在于实现起来比较复杂,在指令依赖关系的计算以及结果重新排序等环节,都会引入相当庞大的逻辑复杂度和硬件开销。第二种方式是在一条指令中实现单发射或双发射,也就是说,在指令集中包含单发射指令和双发射指令两种指令,通过额外的状态变量来区分这两种指令,也就是说,在微处理器的应用中通过程序来修改这个状态变量来指示微处理器当前的指令是单发射指令还是双发射指令。在现有技术中,ARM系列微处理器是基于这种方式工作的典型微处理器,其双发射指令也支持微处理器的全部功能,目的是为了节省指令空间。这种方式使得微处理器的硬件结构相对简单,但软件编程十分复杂。由于单发射/双发射指令之间并非动态切换,而是需要通过修改微处理器的状态从而用两套不同的逻辑来处理单发射和双发射指令,因此需要显式的告诉微处理器下一条指令是单发射指令还是双发射指令,这使得微处理器的编程复杂度大大增加。而且因为单发射指令和双发射指令都是全集,即分别实现微处理器的全部功能,导致两条流水线都要实现全部指令,也就是说所有的操作都要重复两遍。并且,由于指令数量巨大,导致指令编码(操作码)字段很长,压缩了地址字段、立即数字段等其他字段的空间,这就限制了微处理器在其他方面的性能。例如典型的ARM微处理器由于指令字段占用较大空间,导致寄存器字段减小,使得寄存器深度只能支持16位。由此可见,在性能和成本/功耗之间难以兼得,是传统微处理器的关键局限性。尤其是在图形处理或多媒体处理等特定应用场合,需要一种高性能、低成本、低功耗、低应用 复杂度的新型的微处理器的指令处理系统和方法。

发明内容
本发明提出了一种基于混合单发射/双发射指令集的微处理器指令处理系统,解决了现有技术中存在的问题,通过非对称式单发射/双发射指令集设置减小了指令字段空间,通过静态切换简化了单发射/双发射指令切换机制,大大降低了硬件成本以及编程复杂度。利用本发明的微处理器指令处理方法和装置设计的微处理器,具有低成本,低功耗,高处理效率的优点,在40nm工艺下,以小于0.03mm2的芯片面积,可实现超过IGhz的工作频率以及约1.5Mips/Mhz的指令执行速度。根据本发明的一方面,提出了一种微处理器指令处理方法,包括:指令读取步骤,根据指令的地址,从存储器中读取一条指令,其中所述指令中包含指示所述指令为单发射指令或双发射指令的标识位;指令译码步骤,对所读取的指令进行译码,获得包括所述标识位、操作码、操作数的译码结果,根据所述标识位,确定所述指令为单发射指令或双发射指令;运算步骤:如果确定该指令为单发射指令,则在第一流水线中完成该单发射指令的操作,如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线和第二流水线以相同的方式并行运行;写回步骤:将所述第一流水线的运算结果和所述第二流水线的运算结果写回到寄存器。优选地,由所述单发射指令构成的单发射指令集和由所述双发射指令构成的双发射指令集分别实现微处理器的部分功能。优选地,将频繁使用的常规指令设置为既由单发射指令集实现,又由双发射指令集实现;将非频繁使用的非常规指令设置为仅由单发射指令集实现,或仅由双发射指令集实现。优选地,所述第一流水线和第二流水线可分别包括读取第一操作数的第一级、读取第二操作数的第二级、以及对第一操作数和第二操作数进行运算的第三级。优选地,如果第一流水线的运算结果的地址和第二流水线的运算结果的地址发生冲突,则将两个运算结果进行“或”运算。根据本发明的另一方面,提出了一种微处理器指令处理系统,包括:寄存器,存储包括指令,操作数,运算结果的数据;指令读取装置,根据指令的地址,从存储器中读取一条指令,其中所述指令中包含指示所述指令为单发射指令或双发射指令的标识位;指令译码装置,对所读取的指令进行译码,获得包括所述标识位、操作码、操作数的译码结果,根据所述标识位,确定所述指令为单发射指令或双发射指令;指令流水线装置,包括第一流水线装置和第二流水线装置,其中如果确定该指令为单发射指令,则在该第一流水线装置中完成该单发射指令的操作,如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线装置和第二流水线装置以完全相同的方式并行运行;写回装置,将所述第一流水线的运算结果和所述第二流水线的运算结果写回到寄存器。优选地,所述指令读取装置由程序计数器、地址寄存器和指令寄存器来实现。优选地,所述第一流水线装置包括由第一暂存器构成的第一级,由第二暂存器构成的第二级和由第一运算器构成的第三级;所述第二流水线包括由第三暂存器构成的第一级,由第四暂存器构成的第二级和由第二运算器构成的第三级。优选地,如果确定所述指令为单发射指令,则在所述第一暂存器中读取指令的第一操作数,在所述第二暂存器中读取指令的第二操作数,在所述第一运算器中对第一操作数和第二操作数进行运算;如果确定所述指令为双发射指令,则在所述第一暂存器中读取指令的第一操作的第一操作数,在所述第二暂存器中读取指令的第一操作的第二操作数,在第一运算器中对第一操作的第一操作数和第一操作的第二操作数进行运算;在所述第三暂存器中读取指令的第二操作的第一操作数,在所述第四暂存器中读取指令的第二操作的第二操作数,在第二运算器中对第二操作的第一操作数和第二操作的第二操作数进行运笪优选地,所述写回装置包括连接于第一运算器的第一结果暂存器和连接于第二运算器的第二结果暂存器,分别存储两个运算器的运算结果,并通过总线写回到寄存器中的相应地址。


图1是本发明的微处理器指令处理方法的流程图;图2a和图2b是根据本发明的一个实施例的一条单发射指令和一条双发射指令的指令码结构示例;图3是本发明的一种微处理器指令处理系统的结构图;图4是本发明的指令处理系统的一个优选实施例的结构图;图5是根据本发明的一个优选实施例的流水线装置的结构图。
具体实施例方式本发明提出了一种基于混合单发射/双发射指令集的新的微处理器指令处理方法和系统。图1是本发明的微处理器指令处理方法的流程图,主要包括:指令读取步骤,根据指令的地址,从存储器中读取一条指令,其中所述指令中包含指示所述指令为单发射指令或双发射指令的标识位;指令译码步骤,对所读取的指令进行译码,获得包括所述标识位、操作码、操作数的译码结果,根据所述标识位,确定所述指令为单发射指令或双发射指令;运算步骤:如果确定该指令为单发射指令,则在第一流水线中完成该单发射指令的操作,如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线和第二流水线以完全相同的方式并行运行;
写回步骤:将所述第一流水线的运算结果和所述第二流水线的运算结果写回到寄存器。不同于传统的混合单发射/双发射指令集方式,本发明的指令处理方法中所涉及的单发射指令集和双发射指令集采取了非对称的设计,也就是说,单发射指令集和双发射指令集并非分别完成微处理器的所有功能,而是分别实现微处理器的部分功能,由单发射指令集和双发射指令集的功能总和来完成微处理器的所有功能。在本发明的一个优选实施例中,可将微处理器的指令按照这样的原则进行划分:-频繁使用的常规指令,例如常用算数运算指令、逻辑运算指令、读写内存指令、位操作指令等,既由单发射指令集支持,又由双发射指令集支持;-使用频率低但必要的非常规指令,例如跳转指令等,仅在单发射指令集中支持,或仅在双发射指令集中支持。这样的分配原则,使得双发射指令的数量相对较少,因此在支持双发射的前提下,减小了操作码字段的长度,使得根据本发明的指令处理系统在提高了处理效率的同时,仍能支持很大的寄存器阵列,提高了综合性能。在本发明中,并非如现有技术那样通过计算来组合相邻的单发射指令来形成双发射指令,也不是在编程过程中通过额外的状态变量来区分这两种指令,相反地,在本发明的指令处理方法中,使得每条指令都是独立事件,在每条指令中设置一个标识位(例如次高位),根据每条指令的独立译码结果识别该标识位,从而决定其为单发射指令还是双发射指令。图2a和图2b是根据本发明的一个实施例的一条单发射指令和一条双发射指令的指令码结构示例,在图2a中,给出了单发射指令的指令码结构,其从左至右由标识位、操作码、操作数1、操作数2、其他可选字段等部分构成,其中标识位为“O”指示该指令为单发射指令,图2b中,给出了双发射指令的指令码结构,其从左至右标识位、第一操作码、操作数
1、操作数2、第二操作码、操作数3,操作数4,其他可选字段等部分构成,其中标识位为“I”指示该指令为双发射指令。该双发射指令可同时完成所包含的第一操作和第二操作。从硬件的角度来讲,由于本发明没有引入动态分配到两个或多个流水线中的机制,而是根据译码结果静态地分配单发射指令和双发射指令,这种方法避免了额外的硬件负担,使得硬件成本大大下降,从上层应用的角度来讲,本发明的方法使得程序空间完全一致,上层编程中不需特别定义何时为单发射指令或双发射指令,单发射指令和双发射指令之间的切换对于上层软件来说是完全透明的,这就大大降低了应用中的编程复杂度。下面以跳转指令为例,说明本发明的非对称机制在降低硬件成本方面的贡献。在执行跳转程序时,需要根据标志FLAG来决定是否跳转,例如实现“当a > b时则跳转”的程序时,按照传统处理方式,在两条对称的流水线中都引入FLAG,为了区分两条流水线上同时产生的FLAG,就必须记录历史条件来决定后续的状态转移,逻辑十分复杂,这种情况在微处理器的运行过程中十分罕见,但为了解决这一罕见的问题,必须引入很大的硬件开销。相比之下,本发明仅在其中一条流水线中对FLAG进行更新,不再需要进行两条流水线上的FLAG的区分,这使得流水线设计独立简单,降低了硬件成本。如果经过指令译码之后,得到的标识位指示该指令为单发射指令,则在第一流水线中完成该单发射指令的操作,例如在典型的微处理器体系结构中,第一流水线可包括第一级:读取第一操作数;第二级:读取第二操作数;和第三级:运算,得到运算结果。如果经过指令译码之后,得到的标识位指示该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线和第二流水线以完全相同的方式并行运行。在微处理器工作的绝大多数情况中,两条流水线中的两个运算器ALU产生的结果的写回地址是不同的,因此可以简单地将两个运算结果同时写回各自的寄存器地址中。在本发明的一个优选实施例中,考虑到在极特殊情况下,两个运算结果的地址如果发生冲突,则把两个结果进行“或” OR运算,通过这种简单的逻辑处理,使得两条流水线中的操作都部分生效。图3是本发明的一种微处理器指令处理系统的结构图,主要包括:寄存器301,存储包括指令,操作数,运算结果的数据;指令读取装置302,根据指令的地址,从存储器中读取一条指令,其中所述指令中包含指示所述指令为单发射指令或双发射指令的标识位;指令译码装置303,对所读取的指令进行译码,获得包括所述标识位、操作码、操作数的译码结果,根据所述标识位,确定所述指令为单发射指令或双发射指令;指令流水线装置304,包括第一流水线装置3041和第二流水线装置3042,其中如果确定该指令为单发射指令,则在该第一流水线装置中完成该单发射指令的操作,如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线装置和第二流水线装置以完全相同的方式并行运行;写回装置305:将所述第一流水线的运算结果和所述第二流水线的运算结果写回到寄存器。图4是本发明的指令处理系统的一个优选实施例的结构图,该优选实施例基于典型的微处理器架构,其中指令读取装置可由程序计数器PC、地址寄存器ITCM和指令寄存器INS来实现,程序计数器PC用于存放和指示要执行的指令的地址,地址寄存器用于保存PC中的地址,指令寄存器用于暂时存放根据地址取出的指令,等待译码。指令译码装置可由指令译码器IND实现,其将指令码转变成执行此指令所需要的电信号,在本发明中,译码结果中包含指示该指令为单发射指令还是双发射指令的标识位。图5是根据本发明的一个优选实施例的流水线装置的结构图,第一流水线装置V-PIPE和第二流水线装置U-PIPE可分别包括由暂存器VR1/UR1构成的第一级SI,用于读取第一操作数;由暂存器VR2/UR2构成的第二级S2,用于读取第二操作数,以及由运算器ALU1/AUL2构成的第三级S3,用于完成运算。可根据需要设计流水线的级数而不局限于本实施例给出的方式。在本发明中,如果确定该指令为单发射指令,则在该第一流水线装置中完成该单发射指令的操作,即读取指令的第一操作数至第一暂存器VR1,读取指令的第二操作数至第二暂存器VR2,并在第一运算器中对第一和第二操作数进行计算,得到运算结果。如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,即读取第一操作的第一操作数至暂存器VR1,读取第一操作的第二操作数至暂存器VR2,并在第一运算器ALUl中对这两个操作数进行运算;在第二流水线中完成该双发射指令的第二操作,即读取第二操作的第一操作数至暂存器UR1,读取第二操作的第二操作数至暂存器UR2,并在第二运算器ALU2中对这两个操作数进行运算;第一流水线装置和第二流水线装置以完全相同的方式并行运行。写回装置可包括分别连接于第一运算器和第二运算器的两个暂存器,其分别存储两个运算器的结果,并通过总线写回到寄存器中的相应地址。上述实施例是用于例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修改。因此本发明的保护范围,应如本发明的权利要求书所列。
权利要求
1.一种微处理器指令处理方法,包括: 指令读取步骤,根据指令的地址,从存储器中读取一条指令,其中所述指令中包含指示所述指令为单发射指令或双发射指令的标识位; 指令译码步骤,对所读取的指令进行译码,获得包括所述标识位、操作码、操作数的译码结果,根据所述标识位,确定所述指令为单发射指令或双发射指令; 运算步骤:如果确定该指令为单发射指令,则在第一流水线中完成该单发射指令的操作,如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线和第二流水线以相同的方式并行运行; 写回步骤:将所述第一流水线的运算结果和所述第二流水线的运算结果写回到寄存器。
2.根据权利要求1所述的微处理器指令处理方法,其中由所述单发射指令构成的单发射指令集和由所述双发射指令构成的双发射指令集分别实现微处理器的部分功能。
3.根据权利要求2所述的微处理器指令处理方法,其中, 将频繁使用的常规指令设置为既由单发射指令集实现,又由双发射指令集实现; 将非频繁使用的非常规指令设置为仅由单发射指令集实现,或仅由双发射指令集实现。
4.根据权利要求1所述的微处理器指令处理方法,所述第一流水线和第二流水线可分别包括读取第一操作数的第一级、读取第二操作数的第二级、以及对第一操作数和第二操作数进行运算的第三级。
5.根据权利要求1所述的微处理器指令处理方法,如果第一流水线的运算结果的地址和第二流水线的运算结果的地址发生冲突,则将两个运算结果进行“或”运算。
6.一种微处理器指令处理系统,包括: 寄存器,存储包括指令,操作数,运算结果的数据; 指令读取装置,根据指令的地址,从存储器中读取一条指令,其中所述指令中包含指示所述指令为单发射指令或双发射指令的标识位; 指令译码装置,对所读取的指令进行译码,获得包括所述标识位、操作码、操作数的译码结果,根据所述标识位,确定所述指令为单发射指令或双发射指令; 指令流水线装置,包括第一流水线装置和第二流水线装置,其中如果确定该指令为单发射指令,则在该第一流水线装置中完成该单发射指令的操作,如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线装置和第二流水线装置以完全相同的方式并行运行; 写回装置,将所述第一流水线的运算结果和所述第二流水线的运算结果写回到寄存器。
7.根据权利要求6所述的微处理器指令处理装置,所述指令读取装置由程序计数器、地址寄存器和指令寄存器来实现。
8.根据权利要求6所述的微处理器指令处理装置,所述第一流水线装置包括由第一暂存器构成的第一级,由第二暂存器构成的第二级和由第一运算器构成的第三级;所述第二流水线包括由第三暂存器构成的第一级,由第四暂存器构成的第二级和由第二运算器构成的第三级。
9.根据权利要求8所述的微处理器指令处理装置,其中, 如果确定所述指令为单发射指令,则在所述第一暂存器中读取指令的第一操作数,在所述第二暂存器中读取指令的第二操作数,在所述第一运算器中对第一操作数和第二操作数进行运算; 如果确定所述指令为双发射指令,则在所述第一暂存器中读取指令的第一操作的第一操作数,在所述第二暂存器中读取指令的第一操作的第二操作数,在第一运算器中对第一操作的第一操作数和第一操作的第二操作数进行运算;在所述第三暂存器中读取指令的第二操作的第一操作数,在所述第四暂存器中读取指令的第二操作的第二操作数,在第二运算器中对第二操作的第一操作数和第二操作的第二操作数进行运算。
10.根据权利要求6所述的微处理器指令处理装置,所述写回装置包括连接于第一运算器的第一结果暂存器和连接于第二运算器的第二结果暂存器,分别存储两个运算器的运算结果,并通过总线写回到寄 存器中的相应地址。
全文摘要
本发明涉及基于单/双发射指令集的微处理器指令处理方法及系统,包括根据指令的地址,从存储器中读取一条指令,其中所述指令中包含指示所述指令为单发射指令或双发射指令的标识位;对所读取的指令进行译码,获得包括所述标识位、操作码、操作数的译码结果,根据所述标识位,确定所述指令为单发射指令或双发射指令;如果确定该指令为单发射指令,则在第一流水线中完成该单发射指令的操作,如果确定该指令为双发射指令,则在第一流水线中完成该双发射指令中的第一操作,在第二流水线中完成该双发射指令的第二操作,第一流水线和第二流水线以相同的方式并行运行;以及将所述第一流水线的运算结果和所述第二流水线的运算结果写回到寄存器。
文档编号G06F9/38GK103218207SQ20121001616
公开日2013年7月24日 申请日期2012年1月18日 优先权日2012年1月18日
发明者沙力, 兰军强, 朱磊 申请人:上海算芯微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1