CN107179895B - 一种应用复合指令加快数据流结构中指令执行速度的方法 - Google Patents
一种应用复合指令加快数据流结构中指令执行速度的方法 Download PDFInfo
- Publication number
- CN107179895B CN107179895B CN201710356099.2A CN201710356099A CN107179895B CN 107179895 B CN107179895 B CN 107179895B CN 201710356099 A CN201710356099 A CN 201710356099A CN 107179895 B CN107179895 B CN 107179895B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- compound
- sent
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种应用复合指令加快数据流结构中指令执行速度的方法,该方法应用于一数据流处理的硬件架构中,以加快指令执行速度。本发明对数据流中的指令进行了优化,将两条相互依赖的指令用一条复合指令进行替换,这两条指令需要满足第二条指令只依赖于一条指令,即第二条指令需要的源操作数只有一个,即可称这两条指令是这条复合指令的微指令,这个条件是复合指令提出的基础。当第二条指令只需要一个源操作数时,在已经收到后一条指令的ack消息的情况下,可以在前一条指令计算出结果以后,立马就发射。本发明在运算部件中增加旁路电路,在复合指令中的第一条指令执行完后,立即将操作数通过旁路电路提供给运算部件,继续执行第二条指令。
Description
技术领域
本发明涉及指令优化领域,具体而言,涉及一种应用复合指令加快数据流结构中指令执行速度的方法。
背景技术
据统计,全球每天产生的数据以2.5EB的速度不断积累(张引,陈敏,廖小飞.大数据应用的现状与展望[J].计算机研究与发展,2013,50(s2):216-233.),IDC报告指出,全球数据总量正以每两年翻一番的速度持续增长,从2013年到2020年,全球数据总量将增长10倍,达到44ZB。毋容置疑,大数据时代已经到来,人类已经从IT时代悄然进入DT时代。许多科学计算领域的应用也转变成了大数据应用。许多领域的科研都在通过高通量传感器和仪器获取大量数据,从天体物理学和海洋学,到基因学和环境研究,无不如此。美国国家科学基金会(NSF)最近公布了BIGDATA方案征集,以利于信息共享和数据分析。一些学科已经开发了海量数据平台并取得了相应的收益。例如,在生物学中,iPlant正应用网络基础设施、物理计算资源、协作环境、虚拟机资源、可互操作的分析软件和数据服务来协助研究人员、教育工作者和学生建设所有的植物学科。iPlant数据集形式变化多端,其中包括规范或参考数据、实验数据、模拟和模型数据、观测数据以及其他派生数据。
现有的高性能处理器在面向高性能计算机性能评价标准测试程序时能获得很高的浮点效率,但在处理某些大规模实际科学计算时获得浮点效率却非常低(申小伟,叶笑春,王达,张浩,王飞,谭旭,张志敏,范东睿,唐志敏,孙凝晖.一种面向科学计算的数据流优化方法[J].计算机学报,2016,:1-18)。浮点效率的低下意味着浮点计算资源和计算能力的浪费,在面向未来E级科学计算时,计算系统将难以承受现有处理器低效带来的计算能力需求和功耗需求。大数据科学计算领域,相比控制流处理器,数据流处理器具有较好的指令并行性、数据复用性和能效比。大规模科学计算应用在数据流体系结构实现时,可以将大规模的数据划分成小块,将处理小块数据的逻辑转化为数据流图,将数据流图转化为一串数据流指令(即内核)映射到数据流处理器中,不同的小块作为独立的上下文流式地注入数据流处理器,这种动态数据流方式指令利用率高,不同层的数据流图犹如流水线般运行,上下文吞吐量大。
在数据流结构中,一条指令要发射需要满足两个条件,一个是要满足源操作数全部准备好,另一个是要确认依赖于这条指令的指令已经准备好接受源操作数了。如图1所示为指令的发射约束示意图,图1中,op1、op2和op3为3个指令发射单元,op1可以发射指令就要满足它的两个源操作数到达,且op3返回给它一个ack消息,说明op3的第一个源操作数的位置为空,是可以写入的,那么在这种情况下,op1就可以发射了。同样op3要等op1和op2产生的数据传输到op3的源操作数位置,且依赖于op3的指令返回给了op3的ack消息后才能发射。
因为数据流结构具有上述特点,产生了数据流执行过程中独特的现象和规律,图2为指令之间发射的依赖关系示意图,如图2所示:
图2中,Micc负责启动一次或多次数据流图的执行;每一个长方块代表一条指令,箭头指向下一条可以发射的指令;长方块左边的小块“空白”表示操作数没有就位,有灰度时表示操作数就位了;长方块右边的小块里面是圈时表示依赖于它的指令可以接受它产生的结果,是叉时代表依赖它的指令的操作数位已经被占用,不能接受新的数;不同灰度代表的是同一数据流图的多次执行。可以看到,与一条可以发射的指令有依赖和被依赖关系的指令都处于不能被发射的状态,可以同时发射的指令之间没有直接的依赖关系。而且每一条指令进入发射状态时,必须接受到多个其他指令从网络上发来的数据消息和ack消息。
可见,对于一个数据流图,如果能有效减少依赖链上的指令数量,就可以减少网络中的数据消息和ack消息的数量,同时还可以减少执行单元的存储指令和数据的需求,并且加快数据流程序的执行速度。
指令合并优化的思想在冯诺依曼结构的计算机中已经有一些具体设计,如指令合并优化(CN201380016936.7),但是它并不能在数据流结构中得以应用。数据流计算模式是一种与传统控制流完全不同的计算模式,下表对两种计算模式的差别进行了总结。
控制流与数据流的差别
驱动 | 控制方式 | 数据传递方式 | |
控制流 | 指令驱动 | 顺序的、集中的 | 共享存储 |
数据流 | 数据驱动 | 异步的、分散的 | 直接在指令间传递 |
从上表可以看到控制流的指令是顺序的,并且指令之间传递数据是通过共享寄存器的方式。这就意味着,在控制流的结构中判断指令是否可以合并的条件包含了以下两部分:(1)确定所述两个或更多机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器以及目标寄存器的第二指令;(2)该第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行第一功能,并且该第二指令指定要进行第二功能。而数据流结构中的数据传递是在指令间直接传递的,没有共享寄存器存在,那么就无法根据第一条指令的目的寄存器和第二指令的源寄存器相同作为合并依据。同样,数据流的指令不是顺序的,而是充分地发掘了指令级并行,所以不需要遵守指令间的顺序,这点也与控制流的条件不同。
因此,如何根据数据流的特点对其指令进行优化,以加快指令的执行速度,是本领域技术人员面对的一大问题。
发明内容
本发明提供一种应用复合指令加快数据流结构中指令执行速度的方法,该方法应用于一数据流处理的硬件架构中,以加快指令执行速度。
为了达到上述目的,本发明提供了一种应用复合指令加快数据流结构中指令执行速度的方法,其包括以下步骤:
S1:判断数据流结构中两条相互依赖的指令是否可以结合为一条复合指令,判断方式为:第二条指令是否只依赖于第一条指令,如果是,则进行步骤S2;
S2:将第一条指令和第二条指令结合为一条复合指令,其中,第一条指令和第二条指令的指令格式如下表:
其中,第一条指令的目的指令为目的指令0~N1,第二条指令的目的指令为目的指令0~N2,第一条指令中的“目的指令0”指向第二条指令,
结合后的复合指令的指令格式如下表:
其中,复合指令的源操作数个数与第一条指令的源操作数的个数相同,复合指令中的前N1条目的指令依次对应第一条指令中的目的指令1~N1,复合指令中的其余指令依次对应第二条指令中的各条目的指令;
S3:将向第一条指令提供源操作数的目的指令修改为结合后的复合指令;
S4:对数据流结构中所有两条相互依赖指令均执行上述步骤S1~S3;
S5:针对数据流中的指令集,于译码器中构建一复合指令列表,所述复合指令列表包含多个复合指令项目,每一指令项目包含复合指令名称以及该复合指令名称对应的第一条指令名称和第二条指令名称;
S6:在数据流处理的硬件架构中设置一数据选择器和多个缓冲单元,其中,缓冲单元的数量与运算部件的流水线拍数相同,所述译码器与所述数据选择器的第一输入端连接,所述数据选择器的输出端与运算部件连接,多个缓冲单元串接并与所述数据选择器和运算部件并行设置,所述运算部件的最后一拍与最后一个缓存单元连接后进一步与所述数据选择器的第二输入端连接以构成一旁路逻辑;
S7:译码器依次接收指令选择器发送来的指令,若该指令为复合指令,译码器则根据所述复合指令列表将其拆分为对应的第一指令和第二指令;
S8:所述数据选择器的第一输入端和第二输入端分别接收由所述译码器和所述旁路逻辑发送的指令,于接收到所述译码器发送的指令的同时判断旁路逻辑是否有发送来的指令,若为是,所述数据选择器则优先将旁路逻辑发送来的指令发送至运算部件,之后再将所述译码器发送来的指令发送至运算部件,若为否,所述数据选择器则直接将所述译码器发送来的指令发送至运算部件,其中,当指令为复合指令时,所述数据选择器是将第一指令发送至运算部件,第二指令则由译码器发送至第一个缓冲单元;
S9:运算部件按照运算流水依次执行其中的指令,多个缓冲单元以与所述运算部件中的流水同步的速度将其中的指令依次传递至下一个缓冲单元;
S10:对于非复合指令,所述运算部件执行完运算流水的最后一拍后直接输出运算结果,对于复合指令,当运算部件执行完第一指令的运算流水的最后一拍并输出运算结果后,该运算结果与最后一个缓存单元输出的第二指令合并后通过所述旁路逻辑发送至所述数据选择器的第二输入端;
S11:执行上述步骤直至S7~S10直至所有指令均输出运算结果。
在本发明的一实施例中,于步骤S2中,若指令为复合指令,则指令格式中的相应位置为“1”,若指令为非复合指令,则指令格式中相应位置为“0”。
在本发明的一实施例中,于步骤S5中,所述复合指令列表包含的多个复合指令项目如下表:
在本发明的一实施例中,于步骤S8中,所述旁路逻辑向所述数据选择器的第二端发送指令的同时发送一标志为1的有效位,所述数据选择器通过检查该有效位的标志是否为1来判断旁路逻辑是否发送来指令。
在本发明的一实施例中,于步骤S8中,当指令为复合指令时,第一指令的操作码、所有源操作数、立即数参数、寄存器参数和目的指令0~N1均发送至所述运算部件,第二指令的操作码、立即数参数、寄存器参数和目的指令0~N2均发送至所述缓存单元。
本发明提供的应用复合指令加快数据流结构中指令执行速度的方法可以有效地减少数据流图中的指令数量,并且具有以下有益技术效果:
(1)减少执行单元的存储指令及数据的负荷;
(2)减少网络中的数据消息和ack消息的数量;
(3)减少一次和多次数据流图运行的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为指令的发射约束示意图;
图2为指令之间发射的依赖关系示意图;
图3为本发明数据流处理的硬件架构示意图;
图4-1为本发明一实施例的指令执行第一拍的示意图;
图4-2为本发明一实施例的指令执行第二拍的示意图;
图4-3为本发明一实施例的指令执行第三拍的示意图;
图4-4为本发明一实施例的指令执行第四拍的示意图;
图4-5为本发明一实施例的指令执行第五拍的示意图;
图4-6为本发明一实施例的指令执行第六拍的示意图;
图4-7为本发明一实施例的指令执行第七拍的示意图;
图4-8为本发明一实施例的指令执行第八拍的示意图;
图4-9为本发明一实施例的指令执行第九拍的示意图;
图4-10为本发明一实施例的指令执行第十拍的示意图.
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明对数据流中的指令进行了优化,将两条相互依赖的指令用一条复合指令进行替换,这两条指令需要满足第二条指令只依赖于一条指令,即第二条指令需要的源操作数只有一个,即可称这两条指令是这条复合指令的微指令,这个条件是复合指令提出的基础。当第二条指令只需要一个源操作数时,在已经收到后一条指令的ack消息的情况下,可以在前一条指令计算出结果以后,立马就发射。本发明在运算部件中增加旁路电路,在复合指令中的第一条指令执行完后,立即将操作数通过旁路电路提供给运算部件,继续执行第二条指令。本发明的这种执行方式与数据流思想契合。
在数据流结构中,指令执行不是顺序的,所以无法像指令流中合并指令那样通过在指令前设置标志位来说明这条指令与上一条指令合并了,而是需要将这两条指令用一条指令替换,而这个替换过程应该在编译的过程中完成,不需要硬件支持。
本发明提供的应用复合指令加快数据流结构中指令执行速度的方法,其包括以下步骤:
S1:判断数据流结构中两条相互依赖的指令是否可以结合为一条复合指令,判断方式为:第二条指令是否只依赖于第一条指令,如果是,则进行步骤S2;
此处需要明确的是,由于第二条指令只有一个操作数,那么其只能是寄存器指令或者是立即数指令,而第一条指令的种类不受限制,另外,复合指令的源操作数全部是第一条指令的源操作数。
S2:将第一条指令和第二条指令结合为一条复合指令,其中,第一条指令和第二条指令的指令格式如下表:
对于上表中的第3列,每条指令都对应有存放源操作数的地址空间,源操作数是由指令所依赖的指令送来的,即一条指令将运算结果送给它的每一条目的指令,并指明这个运算结果中的数据是这条目的指令的第几个操作数,每条目的指令就会把这个数存放到对应源操作数空间中去,当它所需的源操作数全部准备好后,这条指令就会发射。
对于上表中的第4、5列,如果一条指令是立即数指令,则在第4列存放其立即数参数,如果一条指令是寄存器指令,则在第5列存放存储有相应参数的寄存器的编号。如果两者都不是,则该两列为空或填入预设的代表相应状态的字符。
对于上表中的第6列之后的各列,其存放的为对应的目的指令存放操作数的单元的地址。
其中,第一条指令的目的指令为目的指令0~N1,第二条指令的目的指令为目的指令0~N2,第一条指令中的“目的指令0”指向第二条指令,
结合后的复合指令的指令格式如下表:
其中,复合指令的源操作数个数与第一条指令的源操作数的个数相同,复合指令中的前N1条目的指令依次对应第一条指令中的目的指令1~N1,复合指令中的其余指令依次对应第二条指令中的各条目的指令;
其中,于步骤S2中可以进一步实施以下子步骤:若指令为复合指令,则指令格式中的相应位置为“1”,若指令为非复合指令,则指令格式中相应位置为“0”,于本实施例中,如上两个表所示,指令格式的起始字节即表示该指令是否为复合指令,因此,通过此字节可以表示和呈现一个指令是否为复合指令。
S3:将向第一条指令提供源操作数的目的指令修改为结合后的复合指令;
S4:对数据流结构中所有两条相互依赖指令均执行上述步骤S1~S3;
S5:针对数据流中的指令集,于译码器中构建一复合指令列表,复合指令列表包含多个复合指令项目,每一指令项目包含复合指令名称以及该复合指令名称对应的第一条指令名称和第二条指令名称;
例如,于步骤S5中,复合指令列表包含的多个复合指令项目如下表:
复合指令列表包含的多个复合指令项目不限于上表所示,实际实施时应根据实际需要而定。
本发明未对复合指令进行重新编码、译码,而是对构成复合指令的第一指令和第二指令分别进行编码、译码的原因为,对于一指令集,其可能的复合指令的条数可能是指令集中指令数目的级数倍,若对每一复合指令进行单独编码和译码会造成译码逻辑非常复合以及占用面积较大。
以下步骤S6请参考图3所示的数据流处理的硬件架构示意图。
S6:在数据流处理的硬件架构中设置一数据选择器和多个缓冲单元,其中,缓冲单元的数量与运算部件的流水线拍数相同,译码器与数据选择器的第一输入端连接,数据选择器的输出端与运算部件连接,多个缓冲单元串接并与数据选择器和运算部件并行设置,运算部件的最后一拍与最后一个缓存单元连接后进一步与数据选择器的第二输入端连接以构成一旁路逻辑;
S7:译码器依次接收指令选择器发送来的指令,若该指令为复合指令,译码器则根据复合指令列表将其拆分为对应的第一指令和第二指令;
S8:数据选择器的第一输入端和第二输入端分别接收由译码器和旁路逻辑发送的指令,于接收到译码器发送的指令的同时判断旁路逻辑是否有发送来的指令,若为是,数据选择器则优先将旁路逻辑发送来的指令发送至运算部件,之后再将译码器发送来的指令发送至运算部件,若为否,数据选择器则直接将译码器发送来的指令发送至运算部件,其中,当指令为复合指令时,数据选择器是将第一指令发送至运算部件,第二指令则由译码器发送至第一个缓冲单元;
于步骤S8中,旁路逻辑向数据选择器的第二端发送指令的同时可以进一步发送一标志为1的有效位,数据选择器通过检查该有效位的标志是否为1来判断旁路逻辑是否发送来指令。
另外,于步骤S8中,当指令为复合指令时,第一指令的操作码、所有源操作数、立即数参数、寄存器参数和目的指令0~N1均发送至运算部件,第二指令的操作码、立即数参数、寄存器参数和目的指令0~N2均发送至缓存单元。
S9:运算部件按照运算流水依次执行其中的指令,多个缓冲单元以与运算部件中的流水同步的速度将其中的指令依次传递至下一个缓冲单元;
S10:对于非复合指令,运算部件执行完运算流水的最后一拍后直接输出运算结果,对于复合指令,当运算部件执行完第一指令的运算流水的最后一拍并输出运算结果后,该运算结果与最后一个缓存单元输出的第二指令合并后通过旁路逻辑发送至数据选择器的第二输入端;
S11:执行上述步骤直至S7~S10直至所有指令均输出运算结果。
以下以一具体执行的实施例进一步说明本发明提供的应用复合指令加快数据流结构中指令执行速度的方法,其使用了上述步骤S5中的复合指令列表,假设运算部件具有三级流水,需要执行的指令为AAAI-SUB-MAAMUR-SIAMUR-MADD,如图4-1至图4-10所示,其中,“buf”为缓存单元,“MUX”为数据选择器,于执行时,第一拍至第十拍步骤分别如下:
第一拍:指令选择器将指令AAAI发送给译码模块。
第二拍:指令选择器将指令SUB发送给译码模块。AAAI进入译码模块,译码模块将其拆成两个指令ADD和ADDI。
第三拍:经过数据选择器的判断,旁路逻辑中没有送来指令,所以运算部件开始执行ADD指令。第一个缓存单元存储了ADDI指令。同时SUB进入了译码模块。
第四拍:经过数据选择器的判断,运算部件开始执行SUB指令。ADD进入了运算流水的第二拍。ADDI流到了第二个缓存单元。MAAMUR进入译码模块,译码模块将其拆成两个指令MADD和MULR。
第五拍:经过数据选择器的判断,运算部件开始执行MADD指令。MULR进入第一个缓存单元。运算部件中SUB、ADD向前流动。运算部件输出ADD的结果。ADDI流到了第三个缓存单元。ADD的结果和第三个缓存单元中存储的指令信息合并后送给数据选择器,同时向数据选址器发送一标志为1的有效位。SIAMUR进入了译码模块,译码模块将其拆成两个指令SUBI和MULR。
第六拍:数据选择器检测到标志为1的有效位,从而优先选通了上一拍第三个缓存单元的ADDI指令和运算部件输出的结果,运算部件开始执行ADDI指令。运算部件中MADD、SUB向前流动。运算部件输出SUB的结果。MULR流到了第二个缓存单元。译码模块中的微指令SUBI和MULR被堵塞。
第七拍:因为上一拍第三个缓存单元中没有指令,数据选择器选了译码器的输入,运算部件开始执行SUBI指令。MULR进入第一个缓存单元。运算部件中ADDI、MADD向前流动。运算部件输出MADD的结果。MULR流到了第三个缓存单元。MADD的结果和第三个缓存单元中存储的MULR指令信息合并后送给数据选择器。MADD进入了译码模块。
第八拍:数据选择器优先选通了上一拍第三个缓存单元内的MULR指令和运算部件输出的结果,运算部件开始执行MULR指令。运算部件中SUBI、ADDI向前流动。运算部件输出ADDI的结果。MULR流到了第二个缓存单元。译码模块中的指令MADD被堵塞。
第九拍:数据选择器选通了MADD,运算部件开始执行MADD指令。运算部件中MULR、SUBI向前流动。运算部件输出SUBI的结果。MULR流到了第三个缓存单元。SUBI的结果和第三个缓存单元中存储的MULR微指令信息合并之后送给数据选择器。
第十拍:数据选择器选通了上一拍第三个缓存单元内的MULR指令和运算部件输出的结果,运算部件开始执行MULR指令。运算部件中MADD、MULR向前流动。运算部件输出MULR的结果。
本发明提供的应用复合指令加快数据流结构中指令执行速度的方法可以有效地减少数据流图中的指令数量,并且具有以下有益技术效果:
(1)减少执行单元的存储指令及数据的负荷;
(2)减少网络中的数据消息和ack消息的数量;
(3)减少一次和多次数据流图运行的时间。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (5)
1.一种应用复合指令加快数据流结构中指令执行速度的方法,该方法应用于一数据流处理的硬件架构中,以加快指令执行速度,其特征在于,包括以下步骤:
S1:判断数据流结构中两条相互依赖的指令是否可以结合为一条复合指令,判断方式为:第二条指令是否只依赖于第一条指令,如果是,则进行步骤S2;
S2:将第一条指令和第二条指令结合为一条复合指令,其中,第一条指令和第二条指令的指令格式如下表:
其中,第一条指令的目的指令为目的指令0~N1,第二条指令的目的指令为目的指令0~N2,第一条指令中的“目的指令0”指向第二条指令,
结合后的复合指令的指令格式如下表:
其中,复合指令的源操作数个数与第一条指令的源操作数的个数相同,复合指令中的前N1条目的指令依次对应第一条指令中的目的指令1~N1,复合指令中的其余指令依次对应第二条指令中的各条目的指令;
S3:将向第一条指令提供源操作数的目的指令修改为结合后的复合指令;
S4:对数据流结构中所有两条相互依赖指令均执行上述步骤S1~S3;
S5:针对数据流中的指令集,于译码器中构建一复合指令列表,所述复合指令列表包含多个复合指令项目,每一指令项目包含复合指令名称以及该复合指令名称对应的第一条指令名称和第二条指令名称;
S6:在数据流处理的硬件架构中设置一数据选择器和多个缓冲单元,其中,缓冲单元的数量与运算部件的流水线拍数相同,所述译码器与所述数据选择器的第一输入端连接,所述数据选择器的输出端与运算部件连接,多个缓冲单元串接并与所述数据选择器和运算部件并行设置,所述运算部件的最后一拍与最后一个缓存单元连接后进一步与所述数据选择器的第二输入端连接以构成一旁路逻辑;
S7:译码器依次接收指令选择器发送来的指令,若译码器接收到的由指令选择器发送来的指令为复合指令,译码器则根据所述复合指令列表将其拆分为对应的第一指令和第二指令;
S8:所述数据选择器的第一输入端和第二输入端分别接收由所述译码器和所述旁路逻辑发送的指令,于接收到所述译码器发送的指令的同时判断旁路逻辑是否有发送来的指令,若为是,所述数据选择器则优先将旁路逻辑发送来的指令发送至运算部件,之后再将所述译码器发送来的指令发送至运算部件,若为否,所述数据选择器则直接将所述译码器发送来的指令发送至运算部件,其中,当指令为复合指令时,所述数据选择器是将第一指令发送至运算部件,第二指令则由译码器发送至第一个缓冲单元;
S9:运算部件按照运算流水依次执行其中的指令,多个缓冲单元以与所述运算部件中的流水同步的速度将其中的指令依次传递至下一个缓冲单元;
S10:对于非复合指令,所述运算部件执行完运算流水的最后一拍后直接输出运算结果,对于复合指令,当运算部件执行完第一指令的运算流水的最后一拍并输出运算结果后,该运算结果与最后一个缓存单元输出的第二指令合并后通过所述旁路逻辑发送至所述数据选择器的第二输入端;
S11:再次执行上述步骤S7~S10,直至译码器接收到的由指令选择器发送来的所有指令均输出运算结果。
2.根据权利要求1所述的应用复合指令加快数据流结构中指令执行速度的方法,其特征在于,于步骤S2中,若指令为复合指令,则指令格式中的相应位置为“1”,若指令为非复合指令,则指令格式中相应位置为“0”。
4.根据权利要求1所述的应用复合指令加快数据流结构中指令执行速度的方法,其特征在于,于步骤S8中,所述旁路逻辑向所述数据选择器的第二端发送指令的同时发送一标志为1的有效位,所述数据选择器通过检查该有效位的标志是否为1来判断旁路逻辑是否发送来指令。
5.根据权利要求1所述的应用复合指令加快数据流结构中指令执行速度的方法,其特征在于,于步骤S8中,当指令为复合指令时,第一指令的操作码、所有源操作数、立即数参数、寄存器参数和目的指令0~N1均发送至所述运算部件,第二指令的操作码、立即数参数、寄存器参数和目的指令0~N2均发送至所述缓存单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710356099.2A CN107179895B (zh) | 2017-05-17 | 2017-05-17 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710356099.2A CN107179895B (zh) | 2017-05-17 | 2017-05-17 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107179895A CN107179895A (zh) | 2017-09-19 |
CN107179895B true CN107179895B (zh) | 2020-08-28 |
Family
ID=59831562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710356099.2A Active CN107179895B (zh) | 2017-05-17 | 2017-05-17 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107179895B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845830B (zh) * | 2018-07-03 | 2021-12-03 | 中国人民解放军国防科技大学 | 一种一对数装载指令的执行方法 |
CN110858150A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种具有局部实时可重构流水级的运算装置 |
CN110377339B (zh) * | 2019-08-17 | 2024-03-01 | 中昊芯英(杭州)科技有限公司 | 长延时指令处理装置、方法以及设备、可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092183A (en) * | 1994-03-16 | 2000-07-18 | Hitachi, Ltd. | Data processor for processing a complex instruction by dividing it into executing units |
CN101021779A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 一种针对流处理器的指令控制方法 |
CN101095103A (zh) * | 2004-03-26 | 2007-12-26 | 爱特梅尔股份有限公司 | 双处理器复域浮点数字信号处理片上系统 |
CN101263467A (zh) * | 2005-09-14 | 2008-09-10 | 飞思卡尔半导体公司 | 浮点规格化和反规格化 |
CN101615113A (zh) * | 2009-07-31 | 2009-12-30 | 清华大学 | 一条指令完成一次蝶形运算的微处理器实现方法 |
CN103645887A (zh) * | 2013-12-13 | 2014-03-19 | 广西科技大学 | 双指令多浮点操作数加/减、乘、除运算控制器 |
CN104424129A (zh) * | 2013-08-19 | 2015-03-18 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
CN104884145A (zh) * | 2012-03-28 | 2015-09-02 | 国际商业机器公司 | 指令合并优化 |
CN104915180A (zh) * | 2014-03-10 | 2015-09-16 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核系统和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6880071B2 (en) * | 2001-04-09 | 2005-04-12 | Sun Microsystems, Inc. | Selective signalling of later reserve location memory fault in compound compare and swap |
US20050273559A1 (en) * | 2004-05-19 | 2005-12-08 | Aris Aristodemou | Microprocessor architecture including unified cache debug unit |
US20140181427A1 (en) * | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Compound Memory Operations in a Logic Layer of a Stacked Memory |
US9110657B2 (en) * | 2013-01-21 | 2015-08-18 | Tom Yap | Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture |
-
2017
- 2017-05-17 CN CN201710356099.2A patent/CN107179895B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092183A (en) * | 1994-03-16 | 2000-07-18 | Hitachi, Ltd. | Data processor for processing a complex instruction by dividing it into executing units |
CN101095103A (zh) * | 2004-03-26 | 2007-12-26 | 爱特梅尔股份有限公司 | 双处理器复域浮点数字信号处理片上系统 |
CN101263467A (zh) * | 2005-09-14 | 2008-09-10 | 飞思卡尔半导体公司 | 浮点规格化和反规格化 |
CN101021779A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 一种针对流处理器的指令控制方法 |
CN101615113A (zh) * | 2009-07-31 | 2009-12-30 | 清华大学 | 一条指令完成一次蝶形运算的微处理器实现方法 |
CN104884145A (zh) * | 2012-03-28 | 2015-09-02 | 国际商业机器公司 | 指令合并优化 |
CN104424129A (zh) * | 2013-08-19 | 2015-03-18 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
CN103645887A (zh) * | 2013-12-13 | 2014-03-19 | 广西科技大学 | 双指令多浮点操作数加/减、乘、除运算控制器 |
CN104915180A (zh) * | 2014-03-10 | 2015-09-16 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核系统和方法 |
Non-Patent Citations (3)
Title |
---|
Godson-T:An Efficient Many-Core Architecture for Parallel Program Executions;Dons-Rui Fan 等;《JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY 》;20091130;第24卷(第6期);第1061-1-71页 * |
保证Java精确异常的指令调度技术;张垚;《计算机工程》;20090430;第35卷(第8期);第122-124页 * |
基于数据流块的空间指令调度方法;刘炳涛 等;《计算机研究与发展》;20170430;第54卷(第4期);第750-762页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107179895A (zh) | 2017-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108268278B (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
US10915471B2 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
CN109215728B (zh) | 用于分布式存储器危险检测和错误恢复的存储器电路和方法 | |
US10387319B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
Patterson | 50 years of computer architecture: From the mainframe cpu to the domain-specific tpu and the open risc-v instruction set | |
US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
US20190205284A1 (en) | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator | |
US20190018815A1 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US20190004945A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
US20190004878A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features | |
US20190007332A1 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
US10275247B2 (en) | Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
US12086080B2 (en) | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits | |
CN117724763A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
CN101802779B (zh) | 具有可重新组构的浮点单元的处理器 | |
TW201802668A (zh) | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 | |
CN107179895B (zh) | 一种应用复合指令加快数据流结构中指令执行速度的方法 | |
WO2020005447A1 (en) | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator | |
KR20200002606A (ko) | 데이터 표현들 사이의 코히어런트 가속 변환을 위한 장치 및 방법 | |
US20210389948A1 (en) | Mixed-element-size instruction | |
CN110503179B (zh) | 计算方法以及相关产品 | |
CN101021832A (zh) | 支持局部寄存和条件执行的64位浮点整数融合运算群 | |
CN118605946A (zh) | 用于8位浮点矩阵点积指令的装置、方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100094 room 135, 1st floor, building 15, Chuangke Town, Wenquan Town, Haidian District, Beijing Patentee after: Beijing Zhongke Ruixin Technology Group Co.,Ltd. Address before: 1 wensong Road, Zhongguancun environmental protection park, Beiqing Road, Haidian District, Beijing 100094 Patentee before: SMARTCORE (BEIJING) Co.,Ltd. |