CN101916180B - Risc处理器中执行寄存器类型指令的方法和其*** - Google Patents
Risc处理器中执行寄存器类型指令的方法和其*** Download PDFInfo
- Publication number
- CN101916180B CN101916180B CN 201010251490 CN201010251490A CN101916180B CN 101916180 B CN101916180 B CN 101916180B CN 201010251490 CN201010251490 CN 201010251490 CN 201010251490 A CN201010251490 A CN 201010251490A CN 101916180 B CN101916180 B CN 101916180B
- Authority
- CN
- China
- Prior art keywords
- register
- instruction
- type
- point
- present
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000006870 function Effects 0.000 claims description 93
- 238000007667 floating Methods 0.000 claims description 35
- 238000010304 firing Methods 0.000 claims description 13
- 230000009897 systematic effect Effects 0.000 claims description 13
- 230000007812 deficiency Effects 0.000 claims description 3
- 238000000605 extraction Methods 0.000 abstract 1
- 238000004519 manufacturing process Methods 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 48
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及RISC处理器中执行寄存器类型指令的方法和***,方法包括:步骤1,发现汇编代码中寄存器类型指令在执行时,所用类型寄存器的可用数目不足,则生成所述寄存器类型指令对应的宏指令,使用所述宏指令代替所述寄存器类型指令;步骤2,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以及写回;在译码时,识别出当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,在寄存器号中添加表明操作数类型的标志位,生成完整寄存器号;在读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号对应的寄存器。本发明能够提高程序运行的性能,而不受限于处理器中特定类型物理寄存器的数目。
Description
技术领域
本发明涉及计算机领域,尤其涉及RISC处理器中执行寄存器类型指令的方法和其***。
背景技术
目前通用的RISC处理器设计中,为了充分利用处理器资源,一般采用流水线,流水线一般分为取指(Fetch)、译码(Decode)、读寄存器并发射(RegisterFile)、执行(Execute)、写回(WriteBack)五级,如图1所示。
在大部分采用RISC的指令集中,操作数在指令中通过寄存器号指定,如果寄存器堆中寄存器数目为2n,则指令中有n位用来寻址寄存器。而对于定点寄存器和浮点寄存器的区分,则通过指令类型进行判断。以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,用于在执行阶段和写回阶段,根据指令内部操作码编码,进行相应操作,功能部件根据执行的指令类型不同分为定点功能部件、浮点功能部件、访存部件,写回时,定点功能部件写回定点寄存器堆,浮点功能部件写回浮点寄存器堆,访存部件根据返回数据类型写回对应寄存器堆。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (12)
1.一种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处理器中执行寄存器类型指令的***,其特征在于,
定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的通路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010251490 CN101916180B (zh) | 2010-08-11 | 2010-08-11 | Risc处理器中执行寄存器类型指令的方法和其*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010251490 CN101916180B (zh) | 2010-08-11 | 2010-08-11 | Risc处理器中执行寄存器类型指令的方法和其*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916180A CN101916180A (zh) | 2010-12-15 |
CN101916180B true CN101916180B (zh) | 2013-05-29 |
Family
ID=43323699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010251490 Active CN101916180B (zh) | 2010-08-11 | 2010-08-11 | Risc处理器中执行寄存器类型指令的方法和其*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916180B (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
CN107368285B (zh) | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
CN107729267B (zh) | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014150941A1 (en) * | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing blocks of instructions using a microprocessor architecture having a register view, source view, instruction view, and a plurality of register templates |
CN105210040B (zh) | 2013-03-15 | 2019-04-02 | 英特尔公司 | 用于执行分组成块的多线程指令的方法 |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
EP2972836B1 (en) | 2013-03-15 | 2022-11-09 | Intel Corporation | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
CN104090740A (zh) * | 2014-05-27 | 2014-10-08 | 安徽师范大学 | 微控制器指令集的执行方法 |
CN104536914B (zh) * | 2014-10-15 | 2017-08-11 | 中国航天科技集团公司第九研究院第七七一研究所 | 基于寄存器访问标记的相关处理装置和方法 |
CN105426161B (zh) * | 2015-11-12 | 2017-11-07 | 天津大学 | 一种power指令集向量协处理器的译码电路 |
CN106293627B (zh) * | 2016-07-27 | 2019-01-11 | 珠海市杰理科技股份有限公司 | 寄存器调用及调用指令编码的方法、装置 |
CN107729990B (zh) * | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN111078285B (zh) * | 2018-10-19 | 2021-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、***及相关产品 |
CN111079915B (zh) * | 2018-10-19 | 2021-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN110688156B (zh) * | 2019-09-12 | 2021-02-02 | 无锡江南计算技术研究所 | 一种采用risc架构的cpu*** |
CN112783555A (zh) * | 2019-11-11 | 2021-05-11 | 深圳市中兴微电子技术有限公司 | 基于risc-v向量扩展指令的编码处理方法及装置、存储介质 |
CN112506468B (zh) * | 2020-12-09 | 2023-04-28 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4310880A (en) * | 1979-09-10 | 1982-01-12 | Nixdorf Computer Corporation | High-speed synchronous computer using pipelined registers and a two-level fixed priority circuit |
US4631672A (en) * | 1982-01-27 | 1986-12-23 | Tokyo Shibaura Denki Kabushiki Kaisha | Arithmetic control apparatus for a pipeline processing system |
CN1078318A (zh) * | 1992-04-27 | 1993-11-10 | 北京市大兴县多思软件有限公司 | 一种宏指令集的指令体系 |
-
2010
- 2010-08-11 CN CN 201010251490 patent/CN101916180B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4310880A (en) * | 1979-09-10 | 1982-01-12 | Nixdorf Computer Corporation | High-speed synchronous computer using pipelined registers and a two-level fixed priority circuit |
US4631672A (en) * | 1982-01-27 | 1986-12-23 | Tokyo Shibaura Denki Kabushiki Kaisha | Arithmetic control apparatus for a pipeline processing system |
CN1078318A (zh) * | 1992-04-27 | 1993-11-10 | 北京市大兴县多思软件有限公司 | 一种宏指令集的指令体系 |
Also Published As
Publication number | Publication date |
---|---|
CN101916180A (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101916180B (zh) | Risc处理器中执行寄存器类型指令的方法和其*** | |
CN101627366B (zh) | 预加载指令的方法及装置 | |
US10007605B2 (en) | Hardware-based array compression | |
CN110427337B (zh) | 基于现场可编程门阵列的处理器内核及其运行方法 | |
JP2015534188A (ja) | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ | |
CN101763251B (zh) | 含有译码缓冲装置的多线程的微处理器 | |
CN101147125A (zh) | 用于直接累积未调准数据的可写入分段字的架构型寄存器 | |
JP5941488B2 (ja) | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 | |
EP3343360A1 (en) | Apparatus and methods of decomposing loops to improve performance and power efficiency | |
EP2997462B1 (en) | Dynamic optimization of pipelined software | |
KR20160031503A (ko) | 마이크로프로세서에서의 선택적 리네이밍을 위한 방법 및 장치 | |
TW201346732A (zh) | 指示可變長度指令集的指令長度之技術 | |
WO2013101187A1 (en) | Method for determining instruction order using triggers | |
CN101211256A (zh) | 一种专用双流水线risc指令***及其操作方法 | |
US8151096B2 (en) | Method to improve branch prediction latency | |
CN108733412B (zh) | 一种运算装置和方法 | |
WO2016210023A1 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
US20080244224A1 (en) | Scheduling a direct dependent instruction | |
US10235167B2 (en) | Microprocessor with supplementary commands for binary search and associated search method | |
CN101216755B (zh) | Risc处理器及其浮点寄存器的非对齐访存方法 | |
CN110515659B (zh) | 一种原子指令的执行方法和装置 | |
CN101866281A (zh) | 一种多周期指令执行方法和装置 | |
CN117008975A (zh) | 一种指令融合分割方法、处理器核和处理器 | |
CN100583030C (zh) | 一种risc处理器及其数据访存方法 | |
CN109683959B (zh) | 处理器的指令执行方法及其处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231221 Address after: 100095 room 135, 1st floor, building 15, Chuangke Town, Wenquan Town, Haidian District, Beijing Patentee after: Beijing Zhongke Ruixin Technology Group Co.,Ltd. Address before: 100080 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |