Risc处理器中执行寄存器类型指令的方法和其系统的制作方法

文档序号:6607575阅读:166来源:国知局
专利名称:Risc处理器中执行寄存器类型指令的方法和其系统的制作方法
技术领域
本发明涉及计算机领域,尤其涉及RISC处理器中执行寄存器类型指令的方法和 其系统。
背景技术
目前通用的RISC处理器设计中,为了充分利用处理器资源,一般采用流水线, 流水线一般分为取指(Fetch)、译码(Decode)、读寄存器并发射(RegisterFile)JAR (Execute)、写回(WriteBack)五级,如图1所示。在大部分采用RISC的指令集中,操作数在指令中通过寄存器号指定,如果寄存器 堆中寄存器数目为2n,则指令中有η位用来寻址寄存器。而对于定点寄存器和浮点寄存器 的区分,则通过指令类型进行判断。以MIPS指令为例,如图2所示,其有三种格式,立即数 型、寄存器型和跳转类型。MIPS结构中寄存器堆分为定点寄存器堆和浮点寄存器堆,每个寄 存器堆都包含32个64位寄存器。图2中寄存器型指令中的寄存器号为5位,用来寻址32 个寄存器中的一个。在流水线实际执行过程中,指令和指令之间可能存在着数据依赖关系。比如,一条 指令的源操作数是前面一条指令的目的操作数,这样就产生了写后读相关。在产生数据依 赖时,可以通过调度指令的顺序解除依赖,使程序达到更高的效率和更好的性能,然而指令 调度并不能完全解决数据依赖带来的问题。如果在指令队列中,前一条指令从发射到完成 的延迟过长,则会导致需要在与其存在数据依赖的指令之间需插入过多的有效指令,而调 度这些指令需要的寄存器数目超出了已有的相应类型寄存器数目,从而产生寄存器不够用 的情况。例如,一段关于浮点矩阵乘法的程序,需占用大量的浮点寄存器和少量的定点寄存 器,这种情况下,就可能产生浮点寄存器数目不够而定点寄存器空闲的情况,产生这种问题 时,需要相关机制和装置来解决。

发明内容
为解决上述问题,本发明提供了 RISC处理器中执行寄存器类型指令的方法和其 系统,通过复用寄存器扩充各个类型的寄存器的可用数目,提高程序运行的性能,而不受限 于处理器中特定类型物理寄存器的数目。本发明公开了一种RISC处理器中执行寄存器类型指令的方法,包括步骤1,如果发现汇编代码中寄存器类型指令在执行时,将会出现所用类型寄存器 的可用数目不足,则生成所述寄存器类型指令对应的宏指令,所述宏指令对应的内部操作 码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄存器号包 括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令代替所述 寄存器类型指令;步骤2,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以及 写回;
在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令 或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并 在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在 读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号 对应的寄存器。所述步骤2进一步为,步骤21,在取指时,根据指令地址取指令,送入译码阶段;步骤22,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为 宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数 类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存 器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生成功能 部件可识别的内部操作码编码;步骤23,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类 型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部件;步骤24,在执行时,功能部件根据当前指令的内部操作码编码进行操作;步骤25,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。所述步骤2进一步为,步骤31,在取指时,根据指令地址取指令,送入译码阶段;步骤32,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为 宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数 类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存 器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码;步骤33,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类 型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应功能部 件;步骤34,在执行时,功能部件根据当前指令的内部操作码编码进行操作;步骤35,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。功能部件根据执行的指令的类型的不同分为定点功能部件、浮点功能部件、访存 部件;在写回时,定点功能部件将操作结果写回定点寄存器堆,浮点功能部件将操作结 果写回浮点寄存器堆,访存部件根据返回数据类型写回到对应的寄存器堆。定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的 通路。本发明还公开了一种RISC处理器中执行寄存器类型指令的系统,包括宏指令生成模块,用于在发现汇编代码中寄存器类型指令在执行中,将会出现所 用类型寄存器的可用数目不足时,生成所述寄存器类型指令对应的宏指令,所述宏指令对 应的内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏 指令代替所述寄存器类型指令;流水线运行装置,所述流水线运行装置包括用于暂存运行中数据的寄存器堆,所述流水线运行装置,用于按流水线方式对汇编代码进行取指令、译码、读寄存器 和发射、执行、以及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令 或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并 在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在 读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号 对应的寄存器。所述流水线运行装置还包括取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出 当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型 确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生 成完整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码, 以生成功能部件可识别的内部操作码编码;所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志 位所指定类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功 能部件;所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回 时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。所述流水线运行装置还包括取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出 当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型 确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生 成完整寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码;所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志 位所指定类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到 对应功能部件;所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回 时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。功能部件包括定点功能部件、浮点功能部件、访存部件;定点功能部件,用于在写回时,将操作结果写回定点寄存器堆;
浮点功能部件,用于在写回时,将操作结果写回浮点寄存器堆;访存部件,用于在写回时,根据返回数据类型写回到对应的寄存器堆。定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的 通路。本发明的有益效果在于,通过复用寄存器扩充各个类型的寄存器的可用数目,提 高程序运行的性能,而不受限于处理器中特定类型物理寄存器的数目;实现简单,无需在功 能部件的硬件中附加逻辑便可实现本发明。


图1是现有技术的处理器内部流水线的示意图;图2是现有技术MIPS的三种指令格式的示意图;图3是本发明RISC处理器中执行寄存器类型指令的方法流程图;图4是本发明一具体实施方式
中译码过程的流程图;图5是本发明的实施例的方法的流程图;图6是本发明流水线运行装置的一实施例的结构图。
具体实施例方式下面结合附图对本发明的方法做进一步的说明。本发明RISC处理器中执行寄存器类型指令的方法流程如图1所示。步骤S100,如果发现汇编代码中寄存器类型指令在执行时,将会出现所用类型寄 存器的可用数目不足,则生成所述寄存器类型指令对应的宏指令,所述宏指令的内部操作 码编码和所述寄存器类型指令的内部操作码编码相同,所述宏指令的完整寄存器号包括表 明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令代替所述寄存 器类型指令。步骤S200,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以 及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令 或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并 在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在 读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号 对应的寄存器。对指令进行流水处理为现有技术,存在多种方式。本发明在现有技术基础上增加 宏指令,以扩充寄存器范围。操作码为RISC指令本身固有的操作码,内部操作码编码是在 译码阶段生成。步骤S200的具体实施方式
一步骤S210,在取指时,根据指令地址取指令,送入译码阶段。步骤S220,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令 为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作 数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生成功 能部件可识别的内部操作码编码。步骤S220的具体实施方式
如图4所示。步骤S401,译码部件根据操作码确定指令的类型。指令的类型例如对应操作数为浮点数或定点数。步骤S402,识别出当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依 据寄存器类型指令的类型确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操 作数类型的标志位,以生成完整寄存器号。根据操作数类型在已经取出的指令的寄存器号中添加一位标志位,例如0或1,0 为定点寄存器标志位,1为浮点寄存器标志位,形成完整的寄存器号。步骤S403,对于当前指令依据指令的操作码确定功能部件号。其中,当前指令为宏指令或寄存器类型指令。步骤S404,对当前指令进行编码,以生成功能部件可识别的内部操作码编码。步骤S230,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定 类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部件。例如,读寄存器时,根据寄存器标志位确定读浮点寄存器堆或者定点寄存器堆,根 据寄存器号寻址寄存器将数据读出,根据译码级确定的功能部件号将数据和指令送出。步骤S240,在执行时,功能部件根据当前指令的内部操作码编码进行操作。步骤S250,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器 堆。步骤S200的具体实施方式
二在具体实施方式
中,步骤S200的具体步骤如下所示。步骤S210’,在取指时,根据指令地址取指令,送入译码阶段。步骤S220’,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指 令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操 作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整 寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码。步骤S230’,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定 类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应功能 部件。步骤S240’,在执行时,功能部件根据当前指令的内部操作码编码进行操作。步骤S250’,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器 堆。在进一步的方案中,寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。进一步的,功能部件根据执行的指令的类型的不同分为定点功能部件、浮点功能 部件、访存部件;在写回时,定点功能部件将操作结果写回定点寄存器堆,浮点功能部件将操作结 果写回浮点寄存器堆,访存部件根据返回数据类型写回到对应的寄存器堆。
进一步的,定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访 存部件的通路。实施例本发明RISC处理器中执行寄存器类型指令的方法的具体实施例的流程如图5所示。本实施例中,以MIPS浮点乘加指令madd. f为例。步骤S501,发现汇编代码中一条浮点乘加指令madd. f在执行时,将会出现所用浮 点寄存器的可用数目不足,则生成乘加指令madd. f对应的宏指令PMAC_F,使宏指令PMAC_F 代替乘加指令madd.f。宏指令PMAC_F的内部操作码编码和浮点乘加指令madd. f的内部操作码编码相 同,宏指令PMAC_F&寄存器号为完整寄存器号,包括表明所用寄存器类型的标志位,本实 施例中为浮点类型。本例中,宏指令PMAC_F(d,r, s, t),其中的寄存器号为六位,第一位指定浮点或者 定点寄存器,其余五位和MIPS指令格式中的寄存器号意义相同,用于指定32个寄存器中的一个。步骤S502,处理器流水线中,在取指阶段,取指部件根据指令地址取指令,送入译 码阶段。步骤S503,在译码阶段,译码部件根据操作码识别出宏指令,寄存器标志位保持不 变,确定当前指令的类型为浮点型依据当前指令的操作码确定指令的功能部件号,并对内 部操作码编码进行再编码。宏指令PMAC_F的内部操作码编码和浮点乘加指令madd. f的内部操作码编码相 同,因而对应的功能部件号也同浮点乘加指令madd. f对应的功能部件号相同。在本例中译码部件通过操作码确定指令为PMAC_F,指令的寄存器号保持不变,分 别放在输出的源寄存器1、源寄存器2、源寄存器3、目的寄存器的位置上,功能部件号指定 为和madd. f相同,指令内部操作码编码和madd. f相同。步骤S504,在读寄存器及发射阶段,根据寄存器标志位及寄存器号去读寄存器堆, 根据功能部件号发射指令到功能部件。在本例中发射部件根据译码部件给出的寄存器标志位及寄存器号去读相应的寄 存器,取出操作数,同时根据内部指令操作码编码将PMAC_F判断为madd. f,其他对指令的 操作与madd. f相同,等发射条件准备好,将PMAC_F发往和madd. f相同的功能部件。步骤505,在执行阶段,功能部件根据内部操作码编码进行操作。在本例中功能部件根据内部操作码进行操作,PMAC_F内部操作码编码与madd. f 相同,进行的操作即为madd. f的操作,在功能部件上没有针对指令PMAC_F的硬件逻辑。步骤506,在写回阶段,根据指令类型写回到寄存器堆。在本例中,操作完成,写回浮点寄存器堆。一种RISC处理器中执行寄存器类型指令的系统包括宏指令生成模块和流水线运 行装置。宏指令生成模块,用于在发现汇编代码中寄存器类型指令在执行中,将会出现所 用类型寄存器的可用数目不足时,生成所述寄存器类型指令对应的宏指令,所述宏指令对应的内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完 整寄存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏 指令代替所述寄存器类型指令。流水线运行装置,所述流水线运行装置包括用于暂存运行中数据的寄存器堆,所 述流水线运行装置,用于按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执 行、以及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏 指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类 型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器 号;在读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄 存器号对应的寄存器。在一优选实施方式中,流水线运行装置还包括取指部件、译码部件、发射部件、和 功能部件,发射部件包含寄存器堆。取指部件,用于在取指时,根据指令地址取指令,送入译码部件。译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生 成功能部件可识别的内部操作码编码。发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部 件。功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。在一优选实施方式中,流水线运行装置还包括取指部件、译码部件、发射部件、和 功能部件,发射部件包含寄存器堆。取指部件,用于在取指时,根据指令地址取指令,送入译码部件。译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码。发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应 功能部件。功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。进一步的,寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。进一步的,功能部件包括定点功能部件、浮点功能部件、访存部件。定点功能部件,用于在写回时,将操作结果写回定点寄存器堆。
浮点功能部件,用于在写回时,将操作结果写回浮点寄存器堆。访存部件,用于在写回时,根据返回数据类型写回到对应的寄存器堆。进一步的,定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访 存部件的通路。本发明流水线运行装置的实施例如图6所示,装置包括取指部件601、译码部件 602、发射部件603、功能部件604。取指部件601,用于在取指阶段取出指令,计算指令地址,根据指令地址去读指令 缓存取出指令。译码部件602,用于在译码阶段解析指令,根据指令操作码确定指令,根据指令类 型,确定需要的操作数的类型,根据操作数类型在寄存器号中添加一位标志位,形成完整的 寄存器号,根据指令类型确定指令需要的功能部件。根据指令进行再编码,形成易于识别的 内部操作码编码。发射部件603,用于在发射阶段,根据寄存器标志位确定读浮点寄存器堆或者定点 寄存器堆,根据寄存器号寻址寄存器将数据读出,根据译码级确定的功能部件号将数据和 指令送出。发射部件603包括寄存器堆。寄存器堆,用于暂存计算过程中所需数据,包括浮点 数据和定点数据,保存浮点数据的寄存器堆定义为浮点寄存器堆,保存定点数据的寄存器 堆定义为定点寄存器堆,浮点寄存器堆和定点寄存器堆在物理实现时可以是分离的或者一 体的,定点寄存器堆与浮点寄存器堆都有通向定点部件和浮点部件的通路。功能部件604,用于在执行阶段和写回阶段,根据指令内部操作码编码,进行相应 操作,功能部件根据执行的指令类型不同分为定点功能部件、浮点功能部件、访存部件,写 回时,定点功能部件写回定点寄存器堆,浮点功能部件写回浮点寄存器堆,访存部件根据返 回数据类型写回对应寄存器堆。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还 可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由 权利要求书的范围来确定的。
权利要求
一种RISC处理器中执行寄存器类型指令的方法,其特征在于,包括步骤1,如果发现汇编代码中寄存器类型指令在执行时,将会出现所用类型寄存器的可用数目不足,则生成所述寄存器类型指令对应的宏指令,所述宏指令对应的内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令代替所述寄存器类型指令;步骤2,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号对应的寄存器。
2.如权利要求1所述的RISC处理器中执行寄存器类型指令的方法,其特征在于, 所述步骤2进一步为,步骤21,在取指时,根据指令地址取指令,送入译码阶段;步骤22,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为宏指 令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型, 并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号; 根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生成功能部件 可识别的内部操作码编码;步骤23,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类型的 寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部件; 步骤24,在执行时,功能部件根据当前指令的内部操作码编码进行操作; 步骤25,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
3.如权利要求1所述RISC处理器中执行寄存器类型指令的方法,其特征在于, 所述步骤2进一步为,步骤31,在取指时,根据指令地址取指令,送入译码阶段;步骤32,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为宏指 令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型, 并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号; 对当前指令进行编码,以生成功能部件可识别的内部操作码编码;步骤33,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类型的 寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应功能部件; 步骤34,在执行时,功能部件根据当前指令的内部操作码编码进行操作; 步骤35,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
4.如权利要求1所述RISC处理器中执行寄存器类型指令的方法,其特征在于, 寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。
5.如权利要求4所述RISC处理器中执行寄存器类型指令的方法,其特征在于,功能部件根据执行的指令的类型的不同分为定点功能部件、浮点功能部件、访存部件;在写回时,定点功能部件将操作结果写回定点寄存器堆,浮点功能部件将操作结果写 回浮点寄存器堆,访存部件根据返回数据类型写回到对应的寄存器堆。
6.如权利要求5所述RISC处理器中执行寄存器类型指令的方法,其特征在于,定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的通路。
7.—种RISC处理器中执行寄存器类型指令的系统,其特征在于,包括宏指令生成模块,用于在发现汇编代码中寄存器类型指令在执行中,将会出现所用类 型寄存器的可用数目不足时,生成所述寄存器类型指令对应的宏指令,所述宏指令对应的 内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄 存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令 代替所述寄存器类型指令;流水线运行装置,所述流水线运行装置包括用于暂存运行中数据的寄存器堆,所述流水线运行装置,用于按流水线方式对汇编代码进行取指令、译码、读寄存器和发 射、执行、以及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令或寄 存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并在寄 存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在读寄 存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号对应 的寄存器。
8.如权利要求7所述的RISC处理器中执行寄存器类型指令的系统,其特征在于,所述流水线运行装置进一步包括取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生 成功能部件可识别的内部操作码编码;所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部 件;所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
9.如权利要求7所述RISC处理器中执行寄存器类型指令的系统,其特征在于,所述流水线运行装置进一步包括取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码;所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应 功能部件;所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
10.如权利要求7所述RISC处理器中执行寄存器类型指令的系统,其特征在于, 寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。
11.如权利要求10所述RISC处理器中执行寄存器类型指令的系统,其特征在于, 功能部件包括定点功能部件、浮点功能部件、访存部件;定点功能部件,用于在写回时,将操作结果写回定点寄存器堆; 浮点功能部件,用于在写回时,将操作结果写回浮点寄存器堆; 访存部件,用于在写回时,根据返回数据类型写回到对应的寄存器堆。
12.如权利要求11所述RISC处理器中执行寄存器类型指令的系统,其特征在于, 定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的通路。
全文摘要
本发明涉及RISC处理器中执行寄存器类型指令的方法和系统,方法包括步骤1,发现汇编代码中寄存器类型指令在执行时,所用类型寄存器的可用数目不足,则生成所述寄存器类型指令对应的宏指令,使用所述宏指令代替所述寄存器类型指令;步骤2,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以及写回;在译码时,识别出当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,在寄存器号中添加表明操作数类型的标志位,生成完整寄存器号;在读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号对应的寄存器。本发明能够提高程序运行的性能,而不受限于处理器中特定类型物理寄存器的数目。
文档编号G06F9/38GK101916180SQ201010251490
公开日2010年12月15日 申请日期2010年8月11日 优先权日2010年8月11日
发明者余磊, 安述倩, 张 浩, 范东睿 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1