CN101916180A - Risc处理器中执行寄存器类型指令的方法和其系统 - Google Patents

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

Info

Publication number
CN101916180A
CN101916180A CN 201010251490 CN201010251490A CN101916180A CN 101916180 A CN101916180 A CN 101916180A CN 201010251490 CN201010251490 CN 201010251490 CN 201010251490 A CN201010251490 A CN 201010251490A CN 101916180 A CN101916180 A CN 101916180A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
register
instruction
type
number
means
Prior art date
Application number
CN 201010251490
Other languages
English (en)
Other versions
CN101916180B (zh )
Inventor
余磊
安述倩
张�浩
范东睿
Original Assignee
中国科学院计算技术研究所
Priority date (The priority date 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 date listed.)
Filing date
Publication date

Links

Abstract

本发明涉及RISC处理器中执行寄存器类型指令的方法和系统,方法包括:步骤1,发现汇编代码中寄存器类型指令在执行时,所用类型寄存器的可用数目不足,则生成所述寄存器类型指令对应的宏指令,使用所述宏指令代替所述寄存器类型指令;步骤2,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以及写回;在译码时,识别出当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,在寄存器号中添加表明操作数类型的标志位,生成完整寄存器号;在读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号对应的寄存器。本发明能够提高程序运行的性能,而不受限于处理器中特定类型物理寄存器的数目。

Description

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

技术领域

[0001] 本发明涉及计算机领域,尤其涉及RISC处理器中执行寄存器类型指令的方法和 其系统。

背景技术

[0002] 目前通用的RISC处理器设计中,为了充分利用处理器资源,一般采用流水线, 流水线一般分为取指(Fetch)、译码(Decode)、读寄存器并发射(RegisterFile)JAR (Execute)、写回(WriteBack)五级,如图1所示。

[0003] 在大部分采用RISC的指令集中,操作数在指令中通过寄存器号指定,如果寄存器 堆中寄存器数目为2n,则指令中有η位用来寻址寄存器。而对于定点寄存器和浮点寄存器 的区分,则通过指令类型进行判断。以MIPS指令为例,如图2所示,其有三种格式,立即数 型、寄存器型和跳转类型。MIPS结构中寄存器堆分为定点寄存器堆和浮点寄存器堆,每个寄 存器堆都包含32个64位寄存器。图2中寄存器型指令中的寄存器号为5位,用来寻址32 个寄存器中的一个。

[0004] 在流水线实际执行过程中,指令和指令之间可能存在着数据依赖关系。比如,一条 指令的源操作数是前面一条指令的目的操作数,这样就产生了写后读相关。在产生数据依 赖时,可以通过调度指令的顺序解除依赖,使程序达到更高的效率和更好的性能,然而指令 调度并不能完全解决数据依赖带来的问题。如果在指令队列中,前一条指令从发射到完成 的延迟过长,则会导致需要在与其存在数据依赖的指令之间需插入过多的有效指令,而调 度这些指令需要的寄存器数目超出了已有的相应类型寄存器数目,从而产生寄存器不够用 的情况。例如,一段关于浮点矩阵乘法的程序,需占用大量的浮点寄存器和少量的定点寄存 器,这种情况下,就可能产生浮点寄存器数目不够而定点寄存器空闲的情况,产生这种问题 时,需要相关机制和装置来解决。

发明内容

[0005] 为解决上述问题,本发明提供了 RISC处理器中执行寄存器类型指令的方法和其 系统,通过复用寄存器扩充各个类型的寄存器的可用数目,提高程序运行的性能,而不受限 于处理器中特定类型物理寄存器的数目。

[0006] 本发明公开了一种RISC处理器中执行寄存器类型指令的方法,包括:

[0007] 步骤1,如果发现汇编代码中寄存器类型指令在执行时,将会出现所用类型寄存器 的可用数目不足,则生成所述寄存器类型指令对应的宏指令,所述宏指令对应的内部操作 码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄存器号包 括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令代替所述 寄存器类型指令;

[0008] 步骤2,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以及 写回;[0009] 在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令 或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并 在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在 读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号 对应的寄存器。

[0010] 所述步骤2进一步为,

[0011] 步骤21,在取指时,根据指令地址取指令,送入译码阶段;

[0012] 步骤22,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为 宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数 类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存 器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生成功能 部件可识别的内部操作码编码;

[0013] 步骤23,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类 型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部件;

[0014] 步骤24,在执行时,功能部件根据当前指令的内部操作码编码进行操作;

[0015] 步骤25,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。

[0016] 所述步骤2进一步为,

[0017] 步骤31,在取指时,根据指令地址取指令,送入译码阶段;

[0018] 步骤32,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为 宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数 类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存 器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码;

[0019] 步骤33,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类 型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应功能部 件;

[0020] 步骤34,在执行时,功能部件根据当前指令的内部操作码编码进行操作;

[0021] 步骤35,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。

[0022] 寄存器的类型包括浮点型和定点型。

[0023] 浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。

[0024] 功能部件根据执行的指令的类型的不同分为定点功能部件、浮点功能部件、访存 部件;

[0025] 在写回时,定点功能部件将操作结果写回定点寄存器堆,浮点功能部件将操作结 果写回浮点寄存器堆,访存部件根据返回数据类型写回到对应的寄存器堆。

[0026] 定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的 通路。

[0027] 本发明还公开了一种RISC处理器中执行寄存器类型指令的系统,包括:

[0028] 宏指令生成模块,用于在发现汇编代码中寄存器类型指令在执行中,将会出现所 用类型寄存器的可用数目不足时,生成所述寄存器类型指令对应的宏指令,所述宏指令对 应的内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏 指令代替所述寄存器类型指令;

[0029] 流水线运行装置,所述流水线运行装置包括用于暂存运行中数据的寄存器堆,

[0030] 所述流水线运行装置,用于按流水线方式对汇编代码进行取指令、译码、读寄存器 和发射、执行、以及写回;

[0031] 在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令 或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并 在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在 读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号 对应的寄存器。

[0032] 所述流水线运行装置还包括:取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;

[0033] 所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;

[0034] 所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出 当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型 确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生 成完整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码, 以生成功能部件可识别的内部操作码编码;

[0035] 所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志 位所指定类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功 能部件;

[0036] 所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回 时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。

[0037] 所述流水线运行装置还包括:取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;

[0038] 所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;

[0039] 所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出 当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型 确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生 成完整寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码;

[0040] 所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志 位所指定类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到 对应功能部件;

[0041] 所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回 时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。

[0042] 寄存器的类型包括浮点型和定点型。

[0043] 浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。

[0044] 功能部件包括定点功能部件、浮点功能部件、访存部件;

[0045] 定点功能部件,用于在写回时,将操作结果写回定点寄存器堆;[0046] 浮点功能部件,用于在写回时,将操作结果写回浮点寄存器堆;

[0047] 访存部件,用于在写回时,根据返回数据类型写回到对应的寄存器堆。

[0048] 定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的 通路。

[0049] 本发明的有益效果在于,通过复用寄存器扩充各个类型的寄存器的可用数目,提 高程序运行的性能,而不受限于处理器中特定类型物理寄存器的数目;实现简单,无需在功 能部件的硬件中附加逻辑便可实现本发明。

附图说明

[0050] 图1是现有技术的处理器内部流水线的示意图;

[0051] 图2是现有技术MIPS的三种指令格式的示意图;

[0052] 图3是本发明RISC处理器中执行寄存器类型指令的方法流程图;

[0053] 图4是本发明一具体实施方式中译码过程的流程图;

[0054] 图5是本发明的实施例的方法的流程图;

[0055] 图6是本发明流水线运行装置的一实施例的结构图。

具体实施方式

[0056] 下面结合附图对本发明的方法做进一步的说明。

[0057] 本发明RISC处理器中执行寄存器类型指令的方法流程如图1所示。

[0058] 步骤S100,如果发现汇编代码中寄存器类型指令在执行时,将会出现所用类型寄 存器的可用数目不足,则生成所述寄存器类型指令对应的宏指令,所述宏指令的内部操作 码编码和所述寄存器类型指令的内部操作码编码相同,所述宏指令的完整寄存器号包括表 明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令代替所述寄存 器类型指令。

[0059] 步骤S200,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以 及写回;

[0060] 在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令 或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并 在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在 读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号 对应的寄存器。

[0061] 对指令进行流水处理为现有技术,存在多种方式。本发明在现有技术基础上增加 宏指令,以扩充寄存器范围。操作码为RISC指令本身固有的操作码,内部操作码编码是在 译码阶段生成。

[0062] 步骤S200的具体实施方式一

[0063] 步骤S210,在取指时,根据指令地址取指令,送入译码阶段。

[0064] 步骤S220,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令 为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作 数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生成功 能部件可识别的内部操作码编码。

[0065] 步骤S220的具体实施方式如图4所示。

[0066] 步骤S401,译码部件根据操作码确定指令的类型。

[0067] 指令的类型例如对应操作数为浮点数或定点数。

[0068] 步骤S402,识别出当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依 据寄存器类型指令的类型确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操 作数类型的标志位,以生成完整寄存器号。

[0069] 根据操作数类型在已经取出的指令的寄存器号中添加一位标志位,例如0或1,0 为定点寄存器标志位,1为浮点寄存器标志位,形成完整的寄存器号。

[0070] 步骤S403,对于当前指令依据指令的操作码确定功能部件号。

[0071] 其中,当前指令为宏指令或寄存器类型指令。

[0072] 步骤S404,对当前指令进行编码,以生成功能部件可识别的内部操作码编码。

[0073] 步骤S230,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定 类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部件。

[0074] 例如,读寄存器时,根据寄存器标志位确定读浮点寄存器堆或者定点寄存器堆,根 据寄存器号寻址寄存器将数据读出,根据译码级确定的功能部件号将数据和指令送出。

[0075] 步骤S240,在执行时,功能部件根据当前指令的内部操作码编码进行操作。

[0076] 步骤S250,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器 堆。

[0077] 步骤S200的具体实施方式二

[0078] 在具体实施方式中,步骤S200的具体步骤如下所示。

[0079] 步骤S210’,在取指时,根据指令地址取指令,送入译码阶段。

[0080] 步骤S220’,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指 令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操 作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整 寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码。

[0081] 步骤S230’,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定 类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应功能 部件。

[0082] 步骤S240’,在执行时,功能部件根据当前指令的内部操作码编码进行操作。

[0083] 步骤S250’,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器 堆。

[0084] 在进一步的方案中,寄存器的类型包括浮点型和定点型。

[0085] 浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。

[0086] 进一步的,功能部件根据执行的指令的类型的不同分为定点功能部件、浮点功能 部件、访存部件;

[0087] 在写回时,定点功能部件将操作结果写回定点寄存器堆,浮点功能部件将操作结 果写回浮点寄存器堆,访存部件根据返回数据类型写回到对应的寄存器堆。[0088] 进一步的,定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访 存部件的通路。

[0089] 实施例

[0090] 本发明RISC处理器中执行寄存器类型指令的方法的具体实施例的流程如图5所示。

[0091] 本实施例中,以MIPS浮点乘加指令madd. f为例。

[0092] 步骤S501,发现汇编代码中一条浮点乘加指令madd. f在执行时,将会出现所用浮 点寄存器的可用数目不足,则生成乘加指令madd. f对应的宏指令PMAC_F,使宏指令PMAC_F 代替乘加指令madd.f。

[0093] 宏指令PMAC_F的内部操作码编码和浮点乘加指令madd. f的内部操作码编码相 同,宏指令PMAC_F&寄存器号为完整寄存器号,包括表明所用寄存器类型的标志位,本实 施例中为浮点类型。

[0094] 本例中,宏指令PMAC_F(d,r, s, t),其中的寄存器号为六位,第一位指定浮点或者 定点寄存器,其余五位和MIPS指令格式中的寄存器号意义相同,用于指定32个寄存器中的一个。

[0095] 步骤S502,处理器流水线中,在取指阶段,取指部件根据指令地址取指令,送入译 码阶段。

[0096] 步骤S503,在译码阶段,译码部件根据操作码识别出宏指令,寄存器标志位保持不 变,确定当前指令的类型为浮点型依据当前指令的操作码确定指令的功能部件号,并对内 部操作码编码进行再编码。

[0097] 宏指令PMAC_F的内部操作码编码和浮点乘加指令madd. f的内部操作码编码相 同,因而对应的功能部件号也同浮点乘加指令madd. f对应的功能部件号相同。

[0098] 在本例中译码部件通过操作码确定指令为PMAC_F,指令的寄存器号保持不变,分 别放在输出的源寄存器1、源寄存器2、源寄存器3、目的寄存器的位置上,功能部件号指定 为和madd. f相同,指令内部操作码编码和madd. f相同。

[0099] 步骤S504,在读寄存器及发射阶段,根据寄存器标志位及寄存器号去读寄存器堆, 根据功能部件号发射指令到功能部件。

[0100] 在本例中发射部件根据译码部件给出的寄存器标志位及寄存器号去读相应的寄 存器,取出操作数,同时根据内部指令操作码编码将PMAC_F判断为madd. f,其他对指令的 操作与madd. f相同,等发射条件准备好,将PMAC_F发往和madd. f相同的功能部件。

[0101] 步骤505,在执行阶段,功能部件根据内部操作码编码进行操作。

[0102] 在本例中功能部件根据内部操作码进行操作,PMAC_F内部操作码编码与madd. f 相同,进行的操作即为madd. f的操作,在功能部件上没有针对指令PMAC_F的硬件逻辑。

[0103] 步骤506,在写回阶段,根据指令类型写回到寄存器堆。

[0104] 在本例中,操作完成,写回浮点寄存器堆。

[0105] 一种RISC处理器中执行寄存器类型指令的系统包括宏指令生成模块和流水线运 行装置。

[0106] 宏指令生成模块,用于在发现汇编代码中寄存器类型指令在执行中,将会出现所 用类型寄存器的可用数目不足时,生成所述寄存器类型指令对应的宏指令,所述宏指令对应的内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完 整寄存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏 指令代替所述寄存器类型指令。

[0107] 流水线运行装置,所述流水线运行装置包括用于暂存运行中数据的寄存器堆,所 述流水线运行装置,用于按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执 行、以及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏 指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类 型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器 号;在读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄 存器号对应的寄存器。

[0108] 在一优选实施方式中,流水线运行装置还包括:取指部件、译码部件、发射部件、和 功能部件,发射部件包含寄存器堆。

[0109] 取指部件,用于在取指时,根据指令地址取指令,送入译码部件。

[0110] 译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生 成功能部件可识别的内部操作码编码。

[0111] 发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部 件。

[0112] 功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。

[0113] 在一优选实施方式中,流水线运行装置还包括:取指部件、译码部件、发射部件、和 功能部件,发射部件包含寄存器堆。

[0114] 取指部件,用于在取指时,根据指令地址取指令,送入译码部件。

[0115] 译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码。

[0116] 发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应 功能部件。

[0117] 功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。

[0118] 进一步的,寄存器的类型包括浮点型和定点型。

[0119] 浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。

[0120] 进一步的,功能部件包括定点功能部件、浮点功能部件、访存部件。

[0121] 定点功能部件,用于在写回时,将操作结果写回定点寄存器堆。[0122] 浮点功能部件,用于在写回时,将操作结果写回浮点寄存器堆。

[0123] 访存部件,用于在写回时,根据返回数据类型写回到对应的寄存器堆。

[0124] 进一步的,定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访 存部件的通路。

[0125] 本发明流水线运行装置的实施例如图6所示,装置包括:取指部件601、译码部件 602、发射部件603、功能部件604。

[0126] 取指部件601,用于在取指阶段取出指令,计算指令地址,根据指令地址去读指令 缓存取出指令。

[0127] 译码部件602,用于在译码阶段解析指令,根据指令操作码确定指令,根据指令类 型,确定需要的操作数的类型,根据操作数类型在寄存器号中添加一位标志位,形成完整的 寄存器号,根据指令类型确定指令需要的功能部件。根据指令进行再编码,形成易于识别的 内部操作码编码。

[0128] 发射部件603,用于在发射阶段,根据寄存器标志位确定读浮点寄存器堆或者定点 寄存器堆,根据寄存器号寻址寄存器将数据读出,根据译码级确定的功能部件号将数据和 指令送出。

[0129] 发射部件603包括寄存器堆。寄存器堆,用于暂存计算过程中所需数据,包括浮点 数据和定点数据,保存浮点数据的寄存器堆定义为浮点寄存器堆,保存定点数据的寄存器 堆定义为定点寄存器堆,浮点寄存器堆和定点寄存器堆在物理实现时可以是分离的或者一 体的,定点寄存器堆与浮点寄存器堆都有通向定点部件和浮点部件的通路。

[0130] 功能部件604,用于在执行阶段和写回阶段,根据指令内部操作码编码,进行相应 操作,功能部件根据执行的指令类型不同分为定点功能部件、浮点功能部件、访存部件,写 回时,定点功能部件写回定点寄存器堆,浮点功能部件写回浮点寄存器堆,访存部件根据返 回数据类型写回对应寄存器堆。

[0131] 本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还 可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由 权利要求书的范围来确定的。

Claims (12)

  1. 一种RISC处理器中执行寄存器类型指令的方法,其特征在于,包括:步骤1,如果发现汇编代码中寄存器类型指令在执行时,将会出现所用类型寄存器的可用数目不足,则生成所述寄存器类型指令对应的宏指令,所述宏指令对应的内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令代替所述寄存器类型指令;步骤2,按流水线方式对汇编代码进行取指令、译码、读寄存器和发射、执行、以及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在读寄存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号对应的寄存器。
  2. 2.如权利要求1所述的RISC处理器中执行寄存器类型指令的方法,其特征在于, 所述步骤2进一步为,步骤21,在取指时,根据指令地址取指令,送入译码阶段;步骤22,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为宏指 令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型, 并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号; 根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生成功能部件 可识别的内部操作码编码;步骤23,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类型的 寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部件; 步骤24,在执行时,功能部件根据当前指令的内部操作码编码进行操作; 步骤25,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
  3. 3.如权利要求1所述RISC处理器中执行寄存器类型指令的方法,其特征在于, 所述步骤2进一步为,步骤31,在取指时,根据指令地址取指令,送入译码阶段;步骤32,在译码时,根据当前指令的操作码确定指令的类型,并识别出当前指令为宏指 令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型, 并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号; 对当前指令进行编码,以生成功能部件可识别的内部操作码编码;步骤33,在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所指定类型的 寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应功能部件; 步骤34,在执行时,功能部件根据当前指令的内部操作码编码进行操作; 步骤35,在写回时,根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
  4. 4.如权利要求1所述RISC处理器中执行寄存器类型指令的方法,其特征在于, 寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。
  5. 5.如权利要求4所述RISC处理器中执行寄存器类型指令的方法,其特征在于,功能部件根据执行的指令的类型的不同分为定点功能部件、浮点功能部件、访存部件;在写回时,定点功能部件将操作结果写回定点寄存器堆,浮点功能部件将操作结果写 回浮点寄存器堆,访存部件根据返回数据类型写回到对应的寄存器堆。
  6. 6.如权利要求5所述RISC处理器中执行寄存器类型指令的方法,其特征在于,定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的通路。
  7. 7. —种RISC处理器中执行寄存器类型指令的系统,其特征在于,包括:宏指令生成模块,用于在发现汇编代码中寄存器类型指令在执行中,将会出现所用类 型寄存器的可用数目不足时,生成所述寄存器类型指令对应的宏指令,所述宏指令对应的 内部操作码编码和所述寄存器类型指令对应的内部操作码编码相同,所述宏指令的完整寄 存器号包括表明所用寄存器类型的标志位和表明寄存器地址的寄存器号,使用所述宏指令 代替所述寄存器类型指令;流水线运行装置,所述流水线运行装置包括用于暂存运行中数据的寄存器堆,所述流水线运行装置,用于按流水线方式对汇编代码进行取指令、译码、读寄存器和发 射、执行、以及写回;在译码时,依据当前指令的操作码确定指令的类型,并识别出当前指令为宏指令或寄 存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定操作数类型,并在寄 存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完整寄存器号;在读寄 存器时,读取当前指令的完整寄存器号的标志位所指定类型的寄存器堆中同寄存器号对应 的寄存器。
  8. 8.如权利要求7所述的RISC处理器中执行寄存器类型指令的系统,其特征在于,所述流水线运行装置进一步包括:取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;根据当前指令的操作码确定指令的功能部件号,并对当前指令进行编码,以生 成功能部件可识别的内部操作码编码;所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据功能部件号发射指令到对应功能部 件;所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
  9. 9.如权利要求7所述RISC处理器中执行寄存器类型指令的系统,其特征在于,所述流水线运行装置进一步包括:取指部件、译码部件、发射部件、和功能部件,所述发 射部件包含寄存器堆;所述取指部件,用于在取指时,根据指令地址取指令,送入译码部件;所述译码部件,用于在译码时,根据当前指令的操作码确定指令的类型,并识别出当前 指令为宏指令或寄存器类型指令,对于寄存器类型指令,依据寄存器类型指令的类型确定 操作数类型,并在寄存器类型指令的寄存器号中添加表明操作数类型的标志位,以生成完 整寄存器号;对当前指令进行编码,以生成功能部件可识别的内部操作码编码;所述发射部件,用于在读寄存器及发射时,读取当前指令的完整寄存器号的标志位所 指定类型的寄存器堆中同寄存器号对应的寄存器,根据当前指令的操作码发射指令到对应 功能部件;所述功能部件,用于在执行时,根据当前指令的内部操作码编码进行操作;在写回时, 根据当前指令的类型将操作结果写回到对应类型的寄存器堆。
  10. 10.如权利要求7所述RISC处理器中执行寄存器类型指令的系统,其特征在于, 寄存器的类型包括浮点型和定点型。浮点型寄存器保存浮点数据,定点型寄存器保存定点数据。
  11. 11.如权利要求10所述RISC处理器中执行寄存器类型指令的系统,其特征在于, 功能部件包括定点功能部件、浮点功能部件、访存部件;定点功能部件,用于在写回时,将操作结果写回定点寄存器堆; 浮点功能部件,用于在写回时,将操作结果写回浮点寄存器堆; 访存部件,用于在写回时,根据返回数据类型写回到对应的寄存器堆。
  12. 12.如权利要求11所述RISC处理器中执行寄存器类型指令的系统,其特征在于, 定点寄存器堆与浮点寄存器堆分别具有通向定点部件、浮点部件、和访存部件的通路。
CN 201010251490 2010-08-11 2010-08-11 Risc处理器中执行寄存器类型指令的方法和其系统 CN101916180B (zh)

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 true true CN101916180A (zh) 2010-12-15
CN101916180B CN101916180B (zh) 2013-05-29

Family

ID=43323699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010251490 CN101916180B (zh) 2010-08-11 2010-08-11 Risc处理器中执行寄存器类型指令的方法和其系统

Country Status (1)

Country Link
CN (1) CN101916180B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090740A (zh) * 2014-05-27 2014-10-08 安徽师范大学 微控制器指令集的执行方法
CN104536914A (zh) * 2014-10-15 2015-04-22 中国航天科技集团公司第九研究院第七七一研究所 基于寄存器访问标记的相关处理装置和方法
CN105190541A (zh) * 2013-03-15 2015-12-23 索夫特机械公司 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法
CN105426161A (zh) * 2015-11-12 2016-03-23 天津大学 一种power指令集向量协处理器的译码电路
CN106293627A (zh) * 2016-07-27 2017-01-04 珠海市杰理科技有限公司 寄存器调用及调用指令编码的方法、装置
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9811377B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for executing multithreaded instructions grouped into blocks
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9823930B2 (en) 2013-03-15 2017-11-21 Intel Corporation Method for emulating a guest centralized flag architecture by using a native distributed flag architecture
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
US9858080B2 (en) 2013-03-15 2018-01-02 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886416B2 (en) 2006-04-12 2018-02-06 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9898412B2 (en) 2013-03-15 2018-02-20 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9921845B2 (en) 2011-03-25 2018-03-20 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9934042B2 (en) 2013-03-15 2018-04-03 Intel Corporation Method for dependency broadcasting through a block organized source view data structure
US9940134B2 (en) 2011-05-20 2018-04-10 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US9965281B2 (en) 2006-11-14 2018-05-08 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
US10031784B2 (en) 2011-05-20 2018-07-24 Intel Corporation Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines

Citations (3)

* Cited by examiner, † Cited by third party
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 北京市大兴县多思软件有限公司 一种宏指令集的指令体系

Patent Citations (3)

* Cited by examiner, † Cited by third party
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 北京市大兴县多思软件有限公司 一种宏指令集的指令体系

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9886416B2 (en) 2006-04-12 2018-02-06 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US9965281B2 (en) 2006-11-14 2018-05-08 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
US9921845B2 (en) 2011-03-25 2018-03-20 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9990200B2 (en) 2011-03-25 2018-06-05 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9934072B2 (en) 2011-03-25 2018-04-03 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
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
US9940134B2 (en) 2011-05-20 2018-04-10 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US10031784B2 (en) 2011-05-20 2018-07-24 Intel Corporation Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9823930B2 (en) 2013-03-15 2017-11-21 Intel Corporation Method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9934042B2 (en) 2013-03-15 2018-04-03 Intel Corporation Method for dependency broadcasting through a block organized source view data structure
US9811377B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for executing multithreaded instructions grouped into blocks
CN105190541A (zh) * 2013-03-15 2015-12-23 索夫特机械公司 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9898412B2 (en) 2013-03-15 2018-02-20 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9858080B2 (en) 2013-03-15 2018-01-02 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
CN104090740A (zh) * 2014-05-27 2014-10-08 安徽师范大学 微控制器指令集的执行方法
CN104536914B (zh) * 2014-10-15 2017-08-11 中国航天科技集团公司第九研究院第七七研究所 基于寄存器访问标记的相关处理装置和方法
CN104536914A (zh) * 2014-10-15 2015-04-22 中国航天科技集团公司第九研究院第七七一研究所 基于寄存器访问标记的相关处理装置和方法
CN105426161B (zh) * 2015-11-12 2017-11-07 天津大学 一种power指令集向量协处理器的译码电路
CN105426161A (zh) * 2015-11-12 2016-03-23 天津大学 一种power指令集向量协处理器的译码电路
CN106293627A (zh) * 2016-07-27 2017-01-04 珠海市杰理科技有限公司 寄存器调用及调用指令编码的方法、装置

Also Published As

Publication number Publication date Type
CN101916180B (zh) 2013-05-29 grant

Similar Documents

Publication Publication Date Title
Vajapeyam et al. Improving superscalar instruction dispatch and issue by exploiting dynamic code sequences
US6212629B1 (en) Method and apparatus for executing string instructions
US5799180A (en) Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken
US6604188B1 (en) Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction
US6260189B1 (en) Compiler-controlled dynamic instruction dispatch in pipelined processors
US6862677B1 (en) System and method for eliminating write back to register using dead field indicator
US20040010679A1 (en) Reducing processor energy consumption by controlling processor resources
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US5768575A (en) Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5881280A (en) Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US20080195844A1 (en) Redirect Recovery Cache
US20050125632A1 (en) Transitioning from instruction cache to trace cache on label boundaries
US5218711A (en) Microprocessor having program counter registers for its coprocessors
US20110225397A1 (en) Mapping between registers used by multiple instruction sets
US20090024838A1 (en) Mechanism for suppressing instruction replay in a processor
US5778219A (en) Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US20020087900A1 (en) System and method for reducing power consumption in a data processor having a clustered architecture
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
US6301705B1 (en) System and method for deferring exceptions generated during speculative execution
US20120060016A1 (en) Vector Loads from Scattered Memory Locations
US20150095627A1 (en) Two level re-order buffer
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
US20080028193A1 (en) Transitive suppression of instruction replay
US20120060015A1 (en) Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
US7418580B1 (en) Dynamic object-level code transaction for improved performance of a computer

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
C14 Grant of patent or utility model