CN105159651B - 一种risc处理器的单/双/四精度浮点数据相关电路及操作数获取方法 - Google Patents
一种risc处理器的单/双/四精度浮点数据相关电路及操作数获取方法 Download PDFInfo
- Publication number
- CN105159651B CN105159651B CN201510548663.1A CN201510548663A CN105159651B CN 105159651 B CN105159651 B CN 105159651B CN 201510548663 A CN201510548663 A CN 201510548663A CN 105159651 B CN105159651 B CN 105159651B
- Authority
- CN
- China
- Prior art keywords
- floating
- point
- frs
- precision
- reg
- 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
Abstract
本发明提供一种RISC处理器的单/双/四精度浮点数据相关电路及操作数获取方法,能够有效解决逻辑复杂度和延时长的问题,能够快速判定浮点单/双/四精度的相关性,获得正确的浮点数据来源,提高浮点流水线频率。通过采用4套硬件逻辑并行进行相关性判定和各部分数据选择的处理,消除了不同精度浮点数据相关判定逻辑,以及相关时数据选择逻辑的复杂性和长延时。与根据浮点指令中的浮点操作数寄存器号以及浮点操作精度确定各执行级的相关性,并根据相关情况选取浮点结果的逻辑相比,复杂性降低,逻辑延时减少。电路结构清晰,相关性判定预处理、相关性判定逻辑、结果选择逻辑均可进行流水级划分,适合于不同流水线划分的各处理器。
Description
技术领域
本发明涉及浮点流水线数据的相关设计领域,具体为一种RISC处理器的单/双/四精度浮点数据相关电路及操作数获取方法。
背景技术
目前已经有很多关于处理器的浮点运算设计研究,但关于浮点流水线的研究相对较少。由于浮点数据包括单/双/四精度,这就意味着单精度浮点32位数据可能与单、双、四精度浮点数据发生相关;双精度浮点64位数据可能与单、双、四精度浮点数据发生相关,且64位数据中高32位和低32位数据的相关性情况可能不同;四精度浮点128位数据可能与单、双、四精度浮点数据发生相关,且128位数据中最高32位、次高32位、次低32位,最低32位数据的相关性情况可能不同。
关于单/双/四精度浮点数据根据不同精度的不同相关情况众多,都存在根据各种可能相关情况进行数据相关判定,以及操作数的选取,逻辑复杂度高,延时长的问题,限制了浮点流水线的频率。单一的根据各种可能相关情况进行各精度浮点数据相关的判定逻辑,以及判定相关性后,正确数据的选取逻辑较复杂,复杂的逻辑延时已经成为限制浮点流水线频率提高的瓶颈。同时,一些处理器采用停顿流水线技术,判定如果发生数据相关,则等待相关的浮点指令执行完毕,然后从浮点寄存器文件中读取相应的浮点数据,该方法并未真正减少浮点数据的相关性判定逻辑,同时由于停顿了流水线,减少了流水线的吞吐率,直接降低了浮点流水线的性能。
发明内容
针对现有技术中存在的问题,本发明提供一种逻辑延时短,能够有效快速判定各精度浮点数据的相关性,并获取正确的浮点数据来源RISC处理器的单/双/四精度浮点数据相关电路及操作数获取方法。
本发明是通过以下技术方案来实现:
一种RISC处理器的单/双/四精度浮点数据相关电路,包括一个浮点操作数读取使能模块、一个浮点目的寄存器写使能模块,一个浮点寄存器文件读取模块,以及四套相关性判定结果选择模块;
浮点操作数读取使能模块的输入端接入指令译码的浮点操作数寄存器号frs_reg、浮点操作数读取使能frs_en和浮点操作数精度frs_precision,输出各组浮点操作数的读取使能frs_en_xx;其中,xx分别为00,01,10,11且以下含义相同;
浮点目的寄存器写使能模块输入为指令译码的浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,输出各组浮点目的寄存器号的写使能frd_en_xx;其中,frd_en_xx在各流水级中进行传递,即各流水级都有对应的frd_en_xx;
浮点寄存器文件读取模块输入为指令译码的浮点操作数寄存器号frs_reg和浮点操作数读取使能frs_en,输出各组浮点寄存器号的相应数据Rxx;
四套相关性判定结果选择模块的输入为各组浮点寄存器号的相应数据Rxx、各流水级的各组浮点目的寄存器号的写使能frd_en_xx、各组浮点操作数的读取使能frs_en_xx和对应各流水级的浮点结果fresult_xx,输出为各组浮点操作数frs_op_xx。
优选的,在浮点操作数读取使能模块中,产生四组浮点操作数读取使能frs_en_xx的逻辑电路不同;
frs_en_00为四选一选择器0的输出,frs_prection连接四选一选择器0的选择端;四选一选择器0中的01端连接frs_reg[0]的反、frs_reg[1]的反和frs_en三者的与逻辑,10端连接frs_reg[1]的反和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’;
frs_en_01为四选一选择器1的输出,frs_prection连接四选一选择器1的选择端;四选一选择器1的01端连接frs_reg[0]、frs_reg[1]的反和frs_en三者的与逻辑,10端连接frs_reg[1]的反和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’;
frs_en_10为四选一选择器2的输出,frs_prection连接四选一选择器2的选择端;四选一选择器2的01端连接frs_reg[0]的反、frs_reg[1]和frs_en三者的与逻辑,10端连接frs_reg[1]和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’;
frs_en_11为四选一选择器3的输出,frs_prection连接四选一选择器3的选择端;四选一选择器3的01端连接frs_reg[0]、frs_reg[1]和frs_en三者的与逻辑,10端连接frs_reg[1]和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’。
进一步,浮点目的寄存器写使能模块也根据浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,采用产生四组浮点操作数读取使能frs_en_xx的逻辑电路,获得相应四组浮点目的寄存器号写使能frd_en_xx。
优选的,浮点寄存器文件读取模块用于根据操作数读取使能frs_en进行寄存器文件的读取;当frs_en有效时,根据浮点操作数寄存器号frs_reg[N:2]对浮点寄存器文件进行读取,产生各组浮点寄存器号的相应数据Rxx,否则输出数据为能够为0的default值。
优选的,四套相关性判定结果选择模块用于分别进行浮点数据相关性判定和结果选择处理;
当RISC处理器为五级流水结构时,浮点操作数frs_op_xx获取的相关性判定结果选择模块电路包括依次级联的与门和选择器;
浮点操作数frs_op_xx作为二选一选择器0的输出;
浮点操作数寄存器号使能frs_en_xx,E级浮点目的寄存器号使能frd_en_xx,以及浮点操作数寄存器号frs_reg[N:2]与E级浮点目的寄存器号frd_reg[N:2]的比较结果,三者的与逻辑作为二选一选择器0的选择端;二选一选择器0的1端连接E级浮点结果fresult_xx,0端连接二选一选择器1的输出;其中N为寄存器号的最高位且以下含义相同;
浮点操作数寄存器号使能frs_en_xx,M级浮点目的寄存器号使能frd_en_xx,以及浮点操作数寄存器号frs_reg[N:2]与M级浮点目的寄存器号frd_reg[N:2]的比较结果,三者的与逻辑作为二选一选择器1的选择端;二选一选择器1的1端连接M级浮点结果fresult_xx,0端连接二选一选择器2的输出;
浮点操作数寄存器号使能frs_en_xx、W级浮点目的寄存器号使能frd_en_xx,以及浮点操作数寄存器号frs_reg[N:2]与W级浮点目的寄存器号frd_reg[N:2]的比较结果,三者的与逻辑作为二选一选择器2的选择端;二选一选择器2的1端连接W级浮点结果fresult_xx,0端连接二选一选择器3的输出;
浮点操作数寄存器号使能frs_en_xx作为二选一选择器3的选择端;二选一选择器3的1端连接浮点寄存器号的相应数据Rxx,0端连接能够为0的default值。
一种RISC处理器的单/双/四精度浮点操作数获取方法,包括如下步骤,
步骤1,将浮点操作数和浮点结果,根据每个浮点寄存器号存储32位数据分别分为四组;
步骤2,浮点操作数相关性判定控制及结果选择;对四组浮点操作数通过四套相关判定结果选择逻辑,分别进行相关性判定,获得四组浮点操作数结果,并拼接成最终的浮点操作数;其中,每套控制逻辑相同,控制信号不同。
优选的,步骤1中,根据每个浮点寄存器号存储32位数据,将四精度128位浮点操作数划分为四组,分别为frs_op_00、frs_op_01、frs_op_10和frs_op_11,每组都为32位数据,分别对应于浮点操作数寄存器号最低两位为00、01、10和11的数据;
四精度128位浮点结果也分为四组,分别为fresult_00、fresult_01、fresult_10和fresult_11,每组都为32位数据,分别对应于浮点目的寄存器号最低两位为00、01、10和11的数据;
根据以上分组,双精度64位浮点操作数能够由frs_op_00和frs_op_01或frs_op_10和frs_op_11两组拼接组成,双精度64位浮点结果可由fresult_00和fresult_01或fresult_10和fresult_11两组拼接组成;单精度32位浮点操作数为frs_op_00、frs_op_01、frs_op_10或frs_op_11,单精度32位浮点结果为fresult_00、fresult_01、fresult_10或fresult_11。
优选的,步骤2中,控制信号的生成和处理步骤为;
2.1根据指令译码,产生浮点操作数寄存器号frs_reg、浮点操作数读取使能frs_en和浮点操作数精度frs_precision,其中定义frs_en高有效,frs_precision为01表示浮点操作数为单精度数,10表示浮点操作数为双精度数,11表示浮点操作数为四精度数,00表示无此操作数;
根据指令译码,产生各流水级的浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,其中,定义frd_en高有效,frd_precision为01表示浮点结果为单精度数,10表示浮点结果为双精度数,11表示浮点结果为四精度数,00表示该指令不产生浮点结果;
2.2当浮点操作数读取使能frs_en有效时,根据浮点操作数寄存器号frs_reg和浮点操作数精度frs_precision产生各组浮点操作数寄存器号读取使能frs_en_xx作为对应的第一控制信号,xx分别为00,01,10,11且以下含义相同;
否则各组浮点操作数的读取使能均无效;
2.3执行阶段某流水级浮点结果写使能frd_en有效时,根据该流水级的浮点目的寄存器号frd_reg和浮点结果精度frd_precision产生该流水级中各组浮点目的寄存器号写使能frd_en_xx作为对应的第二控制信号;
否则该流水级中各组浮点目的寄存器号写使能均无效;
2.4当浮点操作数读取使能frs_en有效时,根据浮点操作数寄存器号frs_reg[N:2]对浮点寄存器文件进行读取,产生各组浮点寄存器号的相应数据Rxx作为对应的第三控制信号;
否则该流水级中各组浮点寄存器号的数据为能够为0的default值,其中N为寄存器号的最高位且以下含义相同;
2.5将浮点操作数与其对应的第一、二和三控制信号,一同进行相关性判定结果选择逻辑,四组浮点操作数对应采用四套控制逻辑相同的相关性判定结果选择逻辑,分别进行相关性判定和结果选择处理。
进一步,分别进行相关性判定和结果选择处理时,
当浮点操作数寄存器号frs_reg[N:2]与执行阶段浮点目的寄存器号frd_reg[N:2]相同,操作数寄存器号读取使能frs_en_xx有效,并且执行阶段的浮点目的寄存器号写使能frd_en_xx有效时,表示浮点操作数寄存器号与执行阶段浮点目的寄存器号发生相关;
获取的浮点操作数frs_op_xx的结果从最近执行阶段流水级开始进行判定,发生相关时,取相应流水级的运算结果fresult_xx作为frs_op_xx,如没有发生相关,判定次近执行阶段流水级的相关性,以此类推,当无数据相关时,如果浮点操作数寄存器号读使能frs_en_xx有效,frs_op_xx选择相应寄存器的值,否则选择一个能够为0的default值。
再进一步,当RISC处理器采用包括指令提取IF级、指令译码ID级、指令执行E级、存储访问M级和写回W级的五级流水时,frs_op_xx相关性的判定顺序为先E级,后M级,最后W级。
与现有技术相比,本发明具有以下有益的技术效果:
本发明能够有效解决逻辑复杂度和延时长的问题,能够快速判定浮点单/双/四精度的相关性,获得正确的浮点数据来源,提高浮点流水线频率。通过采用4套硬件逻辑并行进行相关性判定和各部分数据选择的处理,消除了不同精度浮点数据相关判定逻辑,以及相关时数据选择逻辑的复杂性和长延时。与根据浮点指令中的浮点操作数寄存器号以及浮点操作精度确定各执行级的相关性,并根据相关情况选取浮点结果的逻辑相比,复杂性降低,逻辑延时减少。电路结构清晰,相关性判定预处理、相关性判定逻辑、结果选择逻辑均可进行流水级划分,适合于不同流水线划分的各处理器。
进一步的,结合浮点寄存器文件中的寄存器位宽为32位,能够实现单/双/四精度浮点寄存器的单周期访问,有效判定单/双/四精度浮点数据相关性。四精度浮点操作数的128位操作数的来源可能不同,最高32位、次高32位、次低32位、最低32位可能来自不同执行级的四精度浮点结果、双精度浮点结果、单精度浮点结果,或者浮点寄存器文件;双精度浮点操作数的64位操作数的来源可能不同,高32位、低32位可能来自不同执行级的四精度浮点结果、双精度浮点结果、单精度浮点结果,或者浮点寄存器文件;单精度浮点操作数的32位操作数的来源可能来自不同执行级的四精度浮点结果、双精度浮点结果、单精度浮点结果,或者浮点寄存器文件;本发明能够有效判定上述各精度浮点数据的各种来源情况。
附图说明
图1为本发明实例中所述电路的结构示意图。
图2为本发明实例中所述的浮点操作数读取使能模块电路。
图3为本发明实例中所述的浮点目的寄存器写使能模块电路。
图4本发明实例中所述的相关性判定结果选择模块电路。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明一种RISC处理器的单/双/四精度浮点操作数获取方法,其中,浮点寄存器文件中的寄存器位宽为32位,可实现单/双/四精度浮点寄存器的单周期访问,包括下述两大步骤。
(1)浮点操作数和浮点结果分组。
根据每个浮点寄存器号存储32位数据,将四精度128位浮点操作数划分为四组,frs_op_00、frs_op_01、frs_op_10和frs_op_11,每组都为32位数据,分别对应于浮点操作数寄存器号最低两位为00、01、10和11的数据。四精度128位浮点结果也分为四组,fresult_00、fresult_01、fresult_10和fresult_11,每组都为32位数据,分别对应于浮点目的寄存器号最低两位为00、01、10和11的数据。并根据此,双精度64位浮点操作数可由frs_op_00、frs_op_01或frs_op_10、frs_op_11两组拼接组成,双精度64位浮点结果可由fresult_00、fresult_01或fresult_10、fresult_11两组拼接组成;单精度32位浮点操作数可为frs_op_00、frs_op_01、frs_op_10或frs_op_11,单精度32位浮点结果可为fresult_00、fresult_01、fresult_10或fresult_11。
(2)浮点操作数相关性判定控制及结果选择
在步骤(1)的情况下,对四组浮点操作数分别进行相关性判定,获得四组浮点操作数结果,并拼接成最终的浮点操作数,为此共有四套相关判定结果选择逻辑,每套控制逻辑相同,控制信号不同。控制信号按照如下的步骤生成:
1)根据指令译码,产生浮点操作数寄存器号frs_reg、浮点操作数读取使能frs_en和浮点操作数精度frs_precision,其中定义frs_en高有效,frs_precision为01表示浮点操作数为单精度数,10表示浮点操作数为双精度数,11表示浮点操作数为四精度数,00表示无此操作数;根据指令译码,产生各流水级的浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,其中,定义frd_en高有效,frd_precision为01表示浮点结果为单精度数,10表示浮点结果为双精度数,11表示浮点结果为四精度数,00表示该指令不产生浮点结果;
2)当浮点操作数读取使能frs_en有效时,根据浮点操作数寄存器号frs_reg和浮点操作数精度frs_precision产生各组浮点操作数寄存器号读取使能frs_en_xx(xx分别为00,01,10,11,以下相同),否则各组浮点操作数的读取使能均无效;
3)执行阶段某流水级浮点结果写使能frd_en有效时,根据该流水级的浮点目的寄存器号frd_reg和浮点结果精度frd_precision产生该流水级中各组浮点目的寄存器号写使能frd_en_xx,否则该流水级中各组浮点目的寄存器号写使能均无效;
4)当浮点操作数读取使能frs_en有效时,根据浮点操作数寄存器号frs_reg[N:2]对浮点寄存器文件进行读取,产生各组浮点寄存器号的相应数据Rxx,否则该流水级中各组浮点寄存器号的数据为default值(可为0),其中N为寄存器号的最高位,以下相同;
5)对浮点操作数的四组采用四套相关性判定结果选择逻辑,分别进行相关性判定和结果选择处理。本级浮点操作数寄存器号frs_reg[N:2]与执行阶段浮点目的寄存器号frd_reg[N:2]相同,操作数寄存器号读取使能frs_en_xx有效,并且执行阶段的浮点目的寄存器号写使能frd_en_xx有效时,表示浮点操作数寄存器号与执行阶段浮点目的寄存器号发生相关。浮点操作数frs_op_xx的结果从最近执行阶段流水级开始进行判定,发生相关时,取相应流水级的运算结果fresult_xx作为frs_op_xx,无没有发生相关,判定次近执行阶段流水级的相关性,以此类推,当无数据相关时,如果浮点操作数寄存器号读使能frs_en_xx有效,frs_op_xx选择相应寄存器的值,否则选择一个default值,可为0。对于经典五级流水,指令提取IF(Instruction Fetch)级、指令译码ID(Instruction Decode)级、指令执行E(Execution)级、存储访问M(Memory Access)级、写回W(Write Back)级,frs_op_xx相关性的判定顺序为先E级,后M级,最后W级。
本发明一种RISC处理器的单/双/四精度浮点数据相关电路,如图1所示,包括一个浮点操作数读取使能模块、一个浮点目的寄存器写使能模块,一个浮点寄存器文件读取模块、以及四套相关性判定结果选择模块。
其中,浮点操作数读取使能模块输入为指令译码的浮点操作数寄存器号frs_reg、浮点操作数读取使能frs_en和浮点操作数精度frs_precision,输出各组浮点操作数的读取使能frs_en_xx;浮点目的寄存器写使能模块输入为指令译码的浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,输出各组浮点目的寄存器号的写使能frd_en_xx,其中,frd_en_xx在各流水级中进行传递,即各流水级都有对应的frd_en_xx;浮点寄存器文件读取模块输入为指令译码的浮点操作数寄存器号frs_reg和浮点操作数读取使能frs_en,输出各组浮点寄存器号的相应数据Rxx;4套相关性判定结果选择模块的输入为各组浮点寄存器号的相应数据Rxx、各流水级的各组浮点目的寄存器号的写使能frd_en_xx、各组浮点操作数的读取使能frs_en_xx和对应各流水级的浮点结果fresult_xx,输出为各组浮点操作数frs_op_xx。
如图2所示,在浮点操作数读取使能模块,四组浮点操作数读取使能frs_en_xx的电路逻辑不同。frs_en_00为四选一选择器0的输出,frs_prection连接四选一选择器0的选择端,”01”端连接frs_reg[0]的反、frs_reg[1]的反和frs_en三者的与逻辑,”10”端连接frs_reg[1]的反和frs_en的与逻辑,”11”端连接frs_en,”00”端连接’0’;frs_en_01为四选一选择器1的输出,frs_prection连接四选一选择器1的选择端,”01”端连接frs_reg[0]、frs_reg[1]的反和frs_en三者的与逻辑,”10”端连接frs_reg[1]的反和frs_en的与逻辑,”11”端连接frs_en,”00”端连接’0’;frs_en_10为四选一选择器2的输出,frs_prection连接四选一选择器2的选择端,”01”端连接frs_reg[0]的反、frs_reg[1]和frs_en三者的与逻辑,”10”端连接frs_reg[1]和frs_en的与逻辑,”11”端连接frs_en,”00”端连接’0’;frs_en_11为四选一选择器3的输出,frs_prection连接四选一选择器3的选择端,”01”端连接frs_reg[0]、frs_reg[1]和frs_en三者的与逻辑,”10”端连接frs_reg[1]和frs_en的与逻辑,”11”端连接frs_en,”00”端连接’0’。
同理,如图3所示,浮点目的寄存器写使能模块也可以根据浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision按照上述逻辑电路获得相应四组浮点目的寄存器号的写使能frd_en_xx。
浮点寄存器文件读取模块,根据操作数读取使能frs_en进行寄存器文件的读取。当frs_en有效时,根据浮点操作数寄存器号frs_reg[N:2]对浮点寄存器文件进行读取,产生各组浮点寄存器号的相应数据Rxx,否则输出数据为default值(可为0)。
如图4所示,四套相关性判定结果选择模块,进行浮点数据相关性判定和结果选择处理,以经典五级流水为例,浮点操作数frs_op_xx获取的具体电路为:浮点操作数frs_op_xx作为二选一选择器0的输出,浮点操作数寄存器号使能frs_en_xx、E级浮点目的寄存器号使能frd_en_xx和浮点操作数寄存器号frs_reg[N:2]与E级浮点目的寄存器号frd_reg[N:2]的比较结果三者的与逻辑作为二选一选择器0的选择端,’1’端连接E级浮点结果fresult_xx,’0’端连接二选一选择器1的输出;浮点操作数寄存器号使能frs_en_xx、M级浮点目的寄存器号使能frd_en_xx和浮点操作数寄存器号frs_reg[N:2]与M级浮点目的寄存器号frd_reg[N:2]的比较结果三者的与逻辑作为二选一选择器1的选择端,’1’端连接M级浮点结果fresult_xx,’0’端连接二选一选择器2的输出;浮点操作数寄存器号使能frs_en_xx、W级浮点目的寄存器号使能frd_en_xx和浮点操作数寄存器号frs_reg[N:2]与W级浮点目的寄存器号frd_reg[N:2]的比较结果三者的与逻辑作为二选一选择器2的选择端,’1’端连接W级浮点结果fresult_xx,’0’端连接二选一选择器3的输出;浮点操作数寄存器号使能frs_en_xx作为二选一选择器3的选择端,’1’端连接浮点寄存器号的相应数据Rxx,’0’端连接default值,可为0。
本发明针对仅有浮点单/双精度运算的处理器,可将浮点双精度64位操作数划分为两组frs_op_0、frs_op_1,分别对应浮点源寄存器号最低一位为0和1的数据,浮点双精度64位结果划分为两组fresult_0、fresult_1,分别对应浮点目的寄存器号最低一位为0和1的数据,并利用上述所述方法及相应电路实现。
本发明已经应用于一款兼容SPARC V8结构处理器的SoC中,该SoC使用了本发明中的浮点数据相关判定、数据选择电路,避免了由于数据相关性判定带来的逻辑延时过长,在不影响SoC运行频率的情况下,加速了浮点流水线的高效性和正确性。
Claims (9)
1.一种RISC处理器的单/双/四精度浮点数据相关电路,其特征在于,包括一个浮点操作数读取使能模块、一个浮点目的寄存器写使能模块,一个浮点寄存器文件读取模块,以及四套相关性判定结果选择模块;
浮点操作数读取使能模块的输入端接入指令译码的浮点操作数寄存器号frs_reg、浮点操作数读取使能frs_en和浮点操作数精度frs_precision,输出各组浮点操作数的读取使能frs_en_xx;其中,xx分别为00,01,10,11且以下含义相同;
浮点目的寄存器写使能模块输入为指令译码的浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,输出各组浮点目的寄存器号的写使能frd_en_xx;其中,frd_en_xx在各流水级中进行传递,即各流水级都有对应的frd_en_xx;
浮点寄存器文件读取模块输入为指令译码的浮点操作数寄存器号frs_reg和浮点操作数读取使能frs_en,输出各组浮点寄存器号的相应数据Rxx;
四套相关性判定结果选择模块的输入为各组浮点寄存器号的相应数据Rxx、各流水级的各组浮点目的寄存器号的写使能frd_en_xx、各组浮点操作数的读取使能frs_en_xx和对应各流水级的浮点结果fresult_xx,输出为各组浮点操作数frs_op_xx。
2.根据权利要求1所述的一种RISC处理器的单/双/四精度浮点数据相关电路,其特征在于,在浮点操作数读取使能模块中,产生四组浮点操作数读取使能frs_en_xx的逻辑电路不同;
frs_en_00为四选一选择器0的输出,frs_prection连接四选一选择器0的选择端;四选一选择器0中的01端连接frs_reg[0]的反、frs_reg[1]的反和frs_en三者的与逻辑,10端连接frs_reg[1]的反和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’;
frs_en_01为四选一选择器1的输出,frs_prection连接四选一选择器1的选择端;四选一选择器1的01端连接frs_reg[0]、frs_reg[1]的反和frs_en三者的与逻辑,10端连接frs_reg[1]的反和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’;
frs_en_10为四选一选择器2的输出,frs_prection连接四选一选择器2的选择端;四选一选择器2的01端连接frs_reg[0]的反、frs_reg[1]和frs_en三者的与逻辑,10端连接frs_reg[1]和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’;
frs_en_11为四选一选择器3的输出,frs_prection连接四选一选择器3的选择端;四选一选择器3的01端连接frs_reg[0]、frs_reg[1]和frs_en三者的与逻辑,10端连接frs_reg[1]和frs_en的与逻辑,11端连接frs_en,00端连接信号‘0’。
3.根据权利要求2所述的一种RISC处理器的单/双/四精度浮点数据相关电路,其特征在于,浮点目的寄存器写使能模块也根据浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,采用产生四组浮点操作数读取使能frs_en_xx的逻辑电路,获得相应四组浮点目的寄存器号写使能frd_en_xx。
4.根据权利要求1所述的一种RISC处理器的单/双/四精度浮点数据相关电路,其特征在于,浮点寄存器文件读取模块用于根据操作数读取使能frs_en进行寄存器文件的读取;当frs_en有效时,根据浮点操作数寄存器号frs_reg[N:2]对浮点寄存器文件进行读取,产生各组浮点寄存器号的相应数据Rxx,否则输出数据为能够为0的default值。
5.根据权利要求1所述的一种RISC处理器的单/双/四精度浮点数据相关电路,其特征在于,四套相关性判定结果选择模块用于分别进行浮点数据相关性判定和结果选择处理;
当RISC处理器为五级流水结构时,浮点操作数frs_op_xx获取的相关性判定结果选择模块电路包括依次级联的与门和选择器;
浮点操作数frs_op_xx作为二选一选择器0的输出;
浮点操作数寄存器号使能frs_en_xx,E级浮点目的寄存器号使能frd_en_xx,以及浮点操作数寄存器号frs_reg[N:2]与E级浮点目的寄存器号frd_reg[N:2]的比较结果,三者的与逻辑作为二选一选择器0的选择端;二选一选择器0的1端连接E级浮点结果fresult_xx,0端连接二选一选择器1的输出;其中N为寄存器号的最高位且以下含义相同;
浮点操作数寄存器号使能frs_en_xx,M级浮点目的寄存器号使能frd_en_xx,以及浮点操作数寄存器号frs_reg[N:2]与M级浮点目的寄存器号frd_reg[N:2]的比较结果,三者的与逻辑作为二选一选择器1的选择端;二选一选择器1的1端连接M级浮点结果fresult_xx,0端连接二选一选择器2的输出;
浮点操作数寄存器号使能frs_en_xx、W级浮点目的寄存器号使能frd_en_xx,以及浮点操作数寄存器号frs_reg[N:2]与W级浮点目的寄存器号frd_reg[N:2]的比较结果,三者的与逻辑作为二选一选择器2的选择端;二选一选择器2的1端连接W级浮点结果fresult_xx,0端连接二选一选择器3的输出;
浮点操作数寄存器号使能frs_en_xx作为二选一选择器3的选择端;二选一选择器3的1端连接浮点寄存器号的相应数据Rxx,0端连接能够为0的default值。
6.一种RISC处理器的单/双/四精度浮点操作数获取方法,其特征在于,包括如下步骤,
步骤1,将浮点操作数和浮点结果,根据每个浮点寄存器号存储32位数据分别分为四组;
步骤2,浮点操作数相关性判定控制及结果选择;对四组浮点操作数通过四套相关判定结果选择逻辑,分别进行相关性判定,获得四组浮点操作数结果,并拼接成最终的浮点操作数;其中,每套控制逻辑相同,控制信号不同;控制信号的生成和处理步骤为;
2.1根据指令译码,产生浮点操作数寄存器号frs_reg、浮点操作数读取使能frs_en和浮点操作数精度frs_precision,其中定义frs_en高有效,frs_precision为01表示浮点操作数为单精度数,10表示浮点操作数为双精度数,11表示浮点操作数为四精度数,00表示无此操作数;
根据指令译码,产生各流水级的浮点目的寄存器号frd_reg、浮点结果写使能frd_en,以及浮点结果精度frd_precision,其中,定义frd_en高有效,frd_precision为01表示浮点结果为单精度数,10表示浮点结果为双精度数,11表示浮点结果为四精度数,00表示该指令不产生浮点结果;
2.2当浮点操作数读取使能frs_en有效时,根据浮点操作数寄存器号frs_reg和浮点操作数精度frs_precision产生各组浮点操作数寄存器号读取使能frs_en_xx作为对应的第一控制信号,xx分别为00,01,10,11且以下含义相同;
否则各组浮点操作数的读取使能均无效;
2.3执行阶段某流水级浮点结果写使能frd_en有效时,根据该流水级的浮点目的寄存器号frd_reg和浮点结果精度frd_precision产生该流水级中各组浮点目的寄存器号写使能frd_en_xx作为对应的第二控制信号;
否则该流水级中各组浮点目的寄存器号写使能均无效;
2.4当浮点操作数读取使能frs_en有效时,根据浮点操作数寄存器号frs_reg[N:2]对浮点寄存器文件进行读取,产生各组浮点寄存器号的相应数据Rxx作为对应的第三控制信号;
否则该流水级中各组浮点寄存器号的数据为能够为0的default值,其中N为寄存器号的最高位且以下含义相同;
2.5将浮点操作数与其对应的第一、二和三控制信号,一同进行相关性判定结果选择逻辑,四组浮点操作数对应采用四套控制逻辑相同的相关性判定结果选择逻辑,分别进行相关性判定和结果选择处理。
7.根据权利要求6所述的一种RISC处理器的单/双/四精度浮点操作数获取方法,其特征在于,步骤1中,根据每个浮点寄存器号存储32位数据,将四精度128位浮点操作数划分为四组,分别为frs_op_00、frs_op_01、frs_op_10和frs_op_11,每组都为32位数据,分别对应于浮点操作数寄存器号最低两位为00、01、10和11的数据;
四精度128位浮点结果也分为四组,分别为fresult_00、fresult_01、fresult_10和fresult_11,每组都为32位数据,分别对应于浮点目的寄存器号最低两位为00、01、10和11的数据;
根据以上分组,双精度64位浮点操作数能够由frs_op_00和frs_op_01或frs_op_10和frs_op_11两组拼接组成,双精度64位浮点结果可由fresult_00和fresult_01或fresult_10和fresult_11两组拼接组成;单精度32位浮点操作数为frs_op_00、frs_op_01、frs_op_10或frs_op_11,单精度32位浮点结果为fresult_00、fresult_01、fresult_10或fresult_11。
8.根据权利要求6所述的一种RISC处理器的单/双/四精度浮点操作数获取方法,其特征在于,分别进行相关性判定和结果选择处理时,
当浮点操作数寄存器号frs_reg[N:2]与执行阶段浮点目的寄存器号frd_reg[N:2]相同,操作数寄存器号读取使能frs_en_xx有效,并且执行阶段的浮点目的寄存器号写使能frd_en_xx有效时,表示浮点操作数寄存器号与执行阶段浮点目的寄存器号发生相关;
获取的浮点操作数frs_op_xx的结果从最近执行阶段流水级开始进行判定,发生相关时,取相应流水级的运算结果fresult_xx作为frs_op_xx,如没有发生相关,判定次近执行阶段流水级的相关性,以此类推,当无数据相关时,如果浮点操作数寄存器号读使能frs_en_xx有效,frs_op_xx选择相应寄存器的值,否则选择一个能够为0的default值。
9.根据权利要求8所述的一种RISC处理器的单/双/四精度浮点操作数获取方法,其特征在于,当RISC处理器采用包括指令提取IF级、指令译码ID级、指令执行E级、存储访问M级和写回W级的五级流水时,frs_op_xx相关性的判定顺序为先E级,后M级,最后W级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510548663.1A CN105159651B (zh) | 2015-08-31 | 2015-08-31 | 一种risc处理器的单/双/四精度浮点数据相关电路及操作数获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510548663.1A CN105159651B (zh) | 2015-08-31 | 2015-08-31 | 一种risc处理器的单/双/四精度浮点数据相关电路及操作数获取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159651A CN105159651A (zh) | 2015-12-16 |
CN105159651B true CN105159651B (zh) | 2017-11-07 |
Family
ID=54800519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510548663.1A Active CN105159651B (zh) | 2015-08-31 | 2015-08-31 | 一种risc处理器的单/双/四精度浮点数据相关电路及操作数获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159651B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275838B1 (en) * | 1997-12-03 | 2001-08-14 | Intrinsity, Inc. | Method and apparatus for an enhanced floating point unit with graphics and integer capabilities |
CN101256504A (zh) * | 2008-03-17 | 2008-09-03 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN101620589A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 处理器中的有效并行浮点异常处理 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080112B2 (en) * | 2002-11-13 | 2006-07-18 | International Business Machines Corporation | Method and apparatus for computing an approximation to the reciprocal of a floating point number in IEEE format |
US20060271615A1 (en) * | 2005-05-27 | 2006-11-30 | Shearer James B | Method to compute an approximation to the reciprocal of the square root of a floating point number in IEEE format |
-
2015
- 2015-08-31 CN CN201510548663.1A patent/CN105159651B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275838B1 (en) * | 1997-12-03 | 2001-08-14 | Intrinsity, Inc. | Method and apparatus for an enhanced floating point unit with graphics and integer capabilities |
CN101256504A (zh) * | 2008-03-17 | 2008-09-03 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN101620589A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 处理器中的有效并行浮点异常处理 |
Also Published As
Publication number | Publication date |
---|---|
CN105159651A (zh) | 2015-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | An efficient hardware accelerator for sparse convolutional neural networks on FPGAs | |
US11816446B2 (en) | Systolic array component combining multiple integer and floating-point data types | |
US8595280B2 (en) | Apparatus and method for performing multiply-accumulate operations | |
WO2018125623A1 (en) | Neural network processor | |
US20230385233A1 (en) | Multiple accumulate busses in a systolic array | |
CN102495719A (zh) | 一种向量浮点运算装置及方法 | |
CN109426484A (zh) | 一种数据排序装置、方法及芯片 | |
CN104375807B (zh) | 基于众核协处理器的三级流水序列比对方法 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
US5404558A (en) | Data driven type information processor having a plurality of memory banks | |
CN110321159A (zh) | 用于实现链式区块操作的系统和方法 | |
CN109271138A (zh) | 一种适用于大维度矩阵乘的链式乘法结构 | |
CN107851007B (zh) | 宽数据类型的比较的方法和装置 | |
CN107003849A (zh) | 用于执行冲突检测的方法和装置 | |
US5164990A (en) | Method and apparatus for recognizing unknown spoken words and by feature extraction and comparison with reference words | |
CN104778026A (zh) | 一种带simd的高速数据格式转换部件及转换方法 | |
CN105159651B (zh) | 一种risc处理器的单/双/四精度浮点数据相关电路及操作数获取方法 | |
Song et al. | Design and implementation of convolutional neural networks accelerator based on multidie | |
CN111178492B (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
US20080016134A1 (en) | Methods and apparatuses to find a median of a set of values | |
CN109101275B (zh) | 一种基于移位的指令提取与缓冲方法及超标量微处理器 | |
CN101216755B (zh) | Risc处理器及其浮点寄存器的非对齐访存方法 | |
Liu et al. | Tcp-net: Minimizing operation counts of binarized neural network inference | |
Hu et al. | Vis-top: Visual transformer overlay processor | |
US11204738B1 (en) | Apparatus and method for performing bit permutation operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |