指令管理方法及装置、指令管理系统、运算核心.pdf

上传人:1520****312 文档编号:5778830 上传时间:2019-03-18 格式:PDF 页数:28 大小:504.92KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210107228.1

申请日:

2012.04.12

公开号:

CN103377085A

公开日:

2013.10.30

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/50申请日:20120412|||公开

IPC分类号:

G06F9/50

主分类号:

G06F9/50

申请人:

无锡江南计算技术研究所

发明人:

高剑刚; 李宏亮; 郑方; 许勇; 卢宏生; 任秀江; 高红光

地址:

214083 江苏省无锡市滨湖区军东新村030号

优先权:

专利代理机构:

北京集佳知识产权代理有限公司 11227

代理人:

骆苏华

PDF下载: PDF下载
内容摘要

一种指令管理方法及装置、指令管理系统和一种运算核心,所述指令管理方法包括:按照程序的执行顺序将所述程序划分为指令块;按照执行顺序发送指令块至至少一个运算核心。本发明的技术方案有效的减少了运算核心的指令脱靶和等待延迟,提高了运算核心的计算效率。

权利要求书

权利要求书
1.  一种指令管理方法,其特征在于,包括:
按照程序的执行顺序将所述程序划分为指令块;
按照执行顺序发送指令块至至少一个运算核心。

2.  如权利要求1所述的指令管理方法,其特征在于,所述运算核心包括接收并储存所述指令块的指令存储单元和运行所述指令存储单元储存的指令块的运算单元,所述指令块所占的空间小于或等于所述指令存储单元的存储空间。

3.  如权利要求1所述的指令管理方法,其特征在于,所述发送指令块包括按照约定粒度发送该指令块的指令,所述约定粒度为每次预送的指令的数量。

4.  如权利要求1所述的指令管理方法,其特征在于,还包括:在发送指令块前,向各运算核心发送预送查询请求,基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令,所述预送查询请求包含预送的指令的信息。

5.  如权利要求4所述的指令管理方法,其特征在于,所述运算核心对所述预送查询请求做出的响应包括:指令接收响应、指令放弃响应和指令冲突响应;所述基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令包括:
若所有运算核心做出的响应不包括指令冲突响应,则向发出接收指令响应的运算核心发送所述预送的指令;
若所有运算核心做出的响应仅包括指令放弃响应,则放弃向各运算核心发送所述预送的指令;
若所有运算核心做出的响应包括指令冲突响应,则等待做出指令冲突响应的运算核心再次做出响应,直至所有运算核心做出的响应不包括指令冲突响应。

6.  如权利要求4所述的指令管理方法,其特征在于,所述运算核心对所述预送查询请求做出的响应包括:即时接收响应、延迟接收响应、指令放弃响应和指令冲突响应;所述基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令包括:
若所有运算核心做出的响应不包括指令冲突响应和延迟接收响应,则向发出即时接收响应的运算核心发送所述预送的指令;
若所有运算核心做出的响应仅包括指令放弃响应,则放弃向各运算核心发送所述预送的指令;
若所有运算核心做出的响应包括指令冲突响应和/或延迟接收响应,则等待做出指令冲突响应的运算核心再次做出响应,以及等待做出延迟接收响应的运算核心做出即时接收响应,直至所有运算核心做出的响应不包括指令冲突响应和延迟接收响应。

7.  如权利要求4所述的指令管理方法,其特征在于,所述指令块存储在指令存储器中,所述基于所述运算核心对所述预送查询请求做出的响应发送该指令块中的指令包括:基于所述运算核心对所述预送查询请求做出的响应控制指令存储器向运算核心发送该指令块中的指令。

8.  如权利要求1所述的指令管理方法,其特征在于,还包括:获取所述运算核心发出的停止响应后,停止向全部运算核心发送指令块。

9.  如权利要求8所述的指令管理方法,其特征在于,还包括:获取所述运算核心发出的停止响应后,再次获取该运算核心发出的重新接收响应,并重新向全部运算核心发送指令块。

10.  如权利要求1所述的指令管理方法,其特征在于,还包括将所述程序的执行顺序保存在所述运算核心中。

11.  如权利要求1所述的指令管理方法,其特征在于,通过广播或多播的方式向所述运算核心发送所述指令块。

12.  一种指令管理装置,其特征在于,包括:
反馈单元,用以发出指令块发送信号,所述指令块按照程序的执行顺序将所述程序划分得到。

13.  如权利要求12所述的指令管理装置,其特征在于,还包括:
预送查询单元,用以在发送指令块的指令前,向各运算核心发送预送查询请求,所述预送查询请求包含预送的指令的信息;
所述反馈单元还用以基于各运算核心对所述预送查询请求做出的响应,发出发送指令消息。

14.  如权利要求13所述的指令管理装置,其特征在于,还包括指令存储器,用以存储所述指令块,所述指令存储器从所述反馈单元获取所述发送指令消息后,按照执行顺序发送指令块至至少一个运算核心。

15.  如权利要求14所述的指令管理装置,其特征在于,所述指令存储器按照约定粒度向所述运算核心发送该指令块的指令,所述约定粒度为每次预送的指令的数量。

16.  如权利要求15所述的指令管理装置,其特征在于,所述指令存储器通过广播或多播的方式向所述运算核心发送所述指令块的指令。

17.  如权利要求13所述的指令管理装置,其特征在于,若所有运算核心做出的响应不包括指令冲突响应,则所述反馈单元做出向发出接收指令响应的运算核心发送所述预送的指令的反馈;若所有运算核心做出的响应包括指令冲突响应,则所述反馈单元做出等待指令冲突响应的运算核心再次做出响应,直至所有运算核心做出的响应不包括指令冲突响应的反馈。

18.  如权利要求13所述的指令管理装置,其特征在于,若所有运算核心做出的响应不包括指令冲突响应和延迟接收响应,则所述反馈单元做出向发出即时接收响应的运算核心发送所述预送的指令的反馈;若所有运算核心做出的响应包括指令冲突响应和/或延迟接收响应,则所述反馈单元做出等待做 出指令冲突响应的运算核心再次做出响应,以及等待做出延迟接收响应的运算核心做出即时接收响应,直至所有运算核心做出的响应不包括指令冲突响应和延迟接收响应的反馈。

19.  如权利要求12所述的指令管理装置,其特征在于,还包括划块单元,用以按照程序的执行顺序将所述程序划分为所述指令块。

20.  如权利要求12所述的指令管理装置,其特征在于,所述反馈单元还用以在获取所述运算核心发出的停止响应后,停止发出所述指令块发送信号。

21.  如权利要求20所述的指令管理装置,其特征在于,所述反馈单元还用以在获取所述运算核心发出的停止响应后,再次获取该运算核心发出的重新接收响应后,重新发出所述指令块发送信号。

22.  一种运算核心,其特征在于,包括:
指令存储单元,用以接收并储存指令块的指令,所述指令块为预送的;
运算单元,用以运行所述指令存储单元储存的指令。

23.  如权利要求22所述的运算核心,其特征在于,还包括:
指令传输处理单元,用以基于当前运行的指令块、所述指令存储单元中存储的指令块和权利要求13所述的指令管理装置发出的预送查询请求,做出对所述预送查询请求的响应。

24.  如权利要求23所述的运算核心,其特征在于,若预送的指令覆盖所述运算核心正在运行的指令和/或覆盖已经存储但还未执行的指令,则该运算核心的指令传输处理单元做出指令冲突响应;若预送的指令为所述运算核心需要的指令,则该运算核心的指令传输处理单元做出指令接收响应;若预送的指令在所述运算核心中已经存储,则该运算核心的指令传输处理单元做出指令放弃响应。

25.  如权利要求23所述的运算核心,其特征在于,若预送的指令为所述运算核心的运算单元需要的指令且该运算核心的指令存储单元具有足够的存储空 间存储所述预送的指令,则该运算核心的指令传输处理单元做出即时接收响应;若预送的指令为所述运算核心的运算单元需要的指令但该运算核心的指令存储单元没有足够的存储空间存储所述预送的指令,则该运算核心的指令传输处理单元做出延迟接收响应。

26.  如权利要求23所述的运算核心,其特征在于,所述指令传输处理单元发出所述延迟接收响应后,经过延迟时间,再发出即时接收响应。

27.  如权利要求24或25所述的运算核心,其特征在于,所述指令传输处理单元发出指令冲突响应后,在冲突解除后,再次做出响应。

28.  如权利要求27所述的运算核心,其特征在于,所述冲突包括所述预送的指令覆盖所述运算核心的运算单元正在运行的指令和/或覆盖已经存储但还未执行的指令。

29.  如权利要求22所述的运算核心,其特征在于,所述指令存储单元还用以发出停止响应,所述指令存储单元发出所述停止响应后,停止接收预送的指令块。

30.  如权利要求22所述的运算核心,其特征在于,所述指令存储单元还用以在发出停止响应后,再次发送重新接收响应,所述指令存储单元发出所述重新接收响应后,重新接收预送的指令块。

31.  如权利要求22所述的运算核心,其特征在于,所述指令存储单元还用以保存所述指令块的执行顺序。

32.  如权利要求22所述的运算核心,其特征在于,还包括权利要求12至21任一项所述的指令管理装置。

33.  一种指令管理系统,其特征在于,包括:
权利要求12至21任一项所述的指令管理装置;
权利要求22至31任一项所述的运算核心。

34.  一种指令管理系统,其特征在于,包括:
权利要求22至31任一项所述的运算核心;
权利要求32所述的运算核心。

说明书

说明书指令管理方法及装置、指令管理系统、运算核心
技术领域
本发明涉及指令管理技术领域,尤其是一种指令管理方法及装置、指令管理系统和一种运算核心。
背景技术
在通用处理器中,通常采用分级的指令存储结构,也就是,指令存储在不同级别的存储介质中。运算核心(处理器的组成器件,每个运算核心可以看成是一个小的处理器)在运行时从本地存储器中获得指令,由于运算核心本地的存储器容量有限,容易产生取指失败的情况,也就是说,若运算核心中未存储将要运行的指令,运算核心需要从上一级指令存储器获得指令后才能继续运行,取指失败也称为指令脱靶。在采用分级的指令存储结构情况下,从上一级指令存储器中获得指令会耗费大量的时间,若频繁的发生取指失败,会增加指令传输的耗时,降低运算核心的工作效率。
多核、众核处理器中,单硅片上集成多个运算核心。由于运算核心数量多,每个运算核心内的指令存储器容量小,对共享的上一级指令存储器的取指竞争冲突会增多,运算核心间的取指竞争问题逐渐凸显出来。尤其当单硅片上的运算核心数增加到几十、几百个时,传统的取指处理方式使运算核心取指延迟的情况明显增加。同时,取指竞争还会导致通信网络拥塞,这会成为制约运算核心的性能和适应面的瓶颈。
目前处理器中比较常用的指令处理技术包括SIMD(Single Instruction Multiple Data,单指令多数据流)技术和SPMD(Single Programe Multiple Data,单程序多数据流)技术。
多核处理器中采用的SIMD、SPMD等技术统一指令需求,这在一定程度上能够降低指令需求。
在多核处理器中采用SIMD技术,主要是指多个运算核心(或运算核心内的多条流水线)共享同一个指令发射站台,同步运行相同的指令,但运算核心处理的数据各不相同。
在多核处理器中采用SPMD技术,主要是指每个运算核心执行相同的程序代码,每个运算核心运行的程序相同,但处理的数据各不相同。
SIMD技术的优势是要求每个运算核心共享指令发射单元,每条指令都同步执行,这防止了取指竞争,能够减轻多核心聚集的取指操作对通信网络的拥塞。
SPMD技术的优势是放宽了对运算核心间的同步要求,将各运算核心间的同步粒度提高到独立的程序级,在程序范围内各运算核心能够自主运行。
以上这些技术从减少取指操作源头、减少程序代码种类的角度,都能在一定程度上降低取指冲突和减小取指延迟。
但是SIMD技术要求每个运算核心的每条指令都要同步执行,运算核心的资源通常难以得到充分利用,无法发挥所有运算核心的计算能力,限制了该技术的适用范围。
多核、众核处理器中,随着运算核心数量增长,运算核心内的存储器容量小,如果SPMD程序量大于运算核心内的存储器容量,取指脱靶还是会导致频繁的取指操作,引起取指操作冲突加剧,通信网络拥塞严重,运算核心的取指等待时间较长,对发挥运算核心的计算效率有较大影响。因此,在多核、众核处理器中,运算核心内的存储器容量限制了SPMD技术的适用范围。
公开号为CN 1466716A的中国专利中的方法只可以为一个处理器提供指令预取服务,不适于多核、众核处理器的处理器结构。另一方面,该专利中 用于预取指令的方法,对每个计算核心需要额外的辅助处理器,用于执行程序的简化版本,硬件开销较大。
如何有效减少运算核心的指令脱靶和等待延迟,提高运算核心的计算效率成为目前亟待解决的问题之一。
发明内容
本发明解决的问题是如何有效减少运算核心的指令脱靶和等待延迟,提高运算核心的计算效率。
为解决上述问题,本发明提供了一种指令管理方法,包括:
按照程序的执行顺序将所述程序划分为指令块;
按照执行顺序发送指令块至至少一个运算核心。
为解决上述问题,本发明还提供了一种指令管理装置,包括:
反馈单元,用以发出指令块发送信号,所述指令块按照程序的执行顺序将所述程序划分得到。
为解决上述问题,本发明还提供了一种运算核心,包括:
指令存储单元,用以接收并储存指令块的指令,所述指令块为预送的;
运算单元,用以运行所述指令存储单元储存的指令。
为解决上述问题,本发明还提供了一种指令管理系统,包括:
如上所述的指令管理装置;
如上所述的运算核心。
为解决上述问题,本发明还提供了一种指令管理系统,包括:
如上所述的运算核心。
与现有技术相比,本发明具有以下优点:
采用软硬件相结合的方法,软件根据程序的执行轨迹,将指令代码划分 为一系列指令块序列,软件保证每个运算核心指令的指令块轨迹一致。硬件按照软件划分出来的指令块序列信息,将运算核心所需指令送入运算核心的指令存储器中。由于程序指令轨迹提前可知,可以在运算核心真正执行指令之前,将指令主动提前载入运算核心的存储器中。
将程序切分为小的指令块,将指令块中的指令预送至运算核心,运算核心可在运行前获得指令。这使得指令的预送与计算核心运行相对独立,各运算核心可以在不影响正在执行的指令同时接受其他预送的指令,降低运算核心取指等待的时间,提高运算核心的运算效率。
预先向运算核心发送指令块的指令,各运算核心不再主动发出取指请求,能够消除运算核心取指竞争,还能够减少对通信网络的占用,有利于进一步提高运算核心的运算效率。
指令组织成容量可变的指令块,每个运算核心执行的指令超块轨迹相同,但允许每个运算核心在指令块内的执行轨迹各不相同。也就是说,各运算核心的执行速度不同,基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令,可以平衡各运算核心之间的运行速度的差异。这使得各运算核心运行速度差异在可控范围内,但是未强制各运算核心同步运行指令。这种以预送指令为手段的控制方式是一种松散的同步机制,即通过发送预送查询请求,基于运算核心的响应控制指令的预先发送的节奏,平衡运行速度快的运算核心与运行速度慢的运算核心之间的速度差异。也就是说,使运行最快的运算核心不会超过运行最慢的核心太多,若运行快的运算核心将要运行的指令会覆盖运行慢的运算核心的正在运行的指令块时,运行慢的运算核心发出指令冲突响应,暂停向所有运算核心发送指令的工作。本发明的技术方案允许各运算核心的速度存在一定差异,指令预送过程中对运算核心的干扰少,因此适用的范围更广。
以多播、广播的指令预送方式,对多核、众核结构尤其适用,能够减少 运算核心间的取指竞争,以及减少指令传输对通信网络的拥塞时间,提高片上通信网络利用效率。
本发明的技术方案是一种基于松散同步的指令预送机制,解决了单核、多核、众核处理器中计算核心取指延迟长的问题和多核、众核处理器中的取指竞争问题,提高了处理器的运算效率。
附图说明
图1是本发明实施例提供的指令管理方法的流程图;
图2是本发明实施例提供的指令管理装置;
图3是本发明实施例提供的运算核心;
图4是本发明实施例提供的指令存储器与运算核心存储指令块的存储地址映射关系的示意图;
图5是本发明实施例提供的程序和指令块的示意图;
图6是本发明实施例提供的指令块中的指令的示意图;
图7是本发明实施例提供的指令管理系统。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式的限制。
图1是本发明实施例提供的指令管理方法的流程图,下面结合图1详细说明。
所述指令管理方法包括:
步骤S1,按照程序的执行顺序将所述程序划分为指令块;
步骤S2,按照执行顺序发送指令块至至少一个运算核心。
所述指令管理方法还可以包括:
步骤S3(图1中未显示),在发送指令块的指令前,向各运算核心发送预送查询请求,基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令,所述预送查询请求包含预送的指令的信息。
具体实施中,所述步骤S1中,将程序按照执行顺序划分成指令块,划分完成之后,得到指令块的执行顺序,也称为指令块执行轨迹。
具体来讲,指令块是第三方软件按照程序的执行顺序,或者结合实际经验例如指令的执行时间、指令的调用次数等按照执行顺序划分得到的,划分之后的指令块的执行顺序与程序的执行顺序相同,也就是指令块的执行轨迹与程序的执行顺序是一致的。所述程序的执行顺序是指程序中指令的执行顺序。
若程序中具有循环、递归或者条件判断等程序时,指令块的执行轨迹与程序的执行顺序可以略有不同,但是指令块中指令的执行顺序与程序的执行顺序相同。如表1所示。例如,程序中包含指令1、指令2、指令3、指令4,若指令2和指令3形成循环程序,且循环的次数为2次,则程序的执行顺序为指令1→指令2→指令3→指令2→指令3→指令4;将程序划分为三个指令块,指令块1包含指令1,指令块2包含指令2和指令3,指令块3包含指令4,则指令块的执行轨迹为指令块1→指令块2→指令块3。
表1


上述举例中,虽然指令块的执行顺序与程序的执行顺序略有不同,两者本质是相同的。指令块的执行顺序表示了指令块中包含的指令的执行顺序,指令块的执行轨迹为指令块1→指令块2→指令块3,指令块中的指令的执行顺序仍旧是指令1→指令2→指令3→指令2→指令3→指令4。因此指令块的执行轨迹与程序的执行顺序略有不同,但是指令块中指令的执行顺序与程序的执行顺序是相同的。
将程序划分的指令块的数量可以为一个也可以为多个,也就是说,可以将程序划分为多个指令块,也可以整个一个程序作为一个指令块。每个指令块中包含一定数量的指令,每个指令块中包含的指令的数量可以为一条也可以是多条。一般情况下,指令块中包含至少两条指令,但也可以仅包含一条指令。
运算核心包括接收并储存所述指令块的指令存储单元和运行所述指令存储单元储存的指令块的运算单元,所述指令块所占的空间小于或等于所述指令存储单元的存储空间。所述程序的执行顺序通常还会保存在所述运算核心中。
将程序划分为指令块时,要求划分之后的指令块所占的空间小于或等于所述指令存储单元的存储空间。这可以保证运算核心可以保存至少一个完整的指令块。
所述步骤S2中,按照执行顺序发送指令块至至少一个运算核心,直至将 所有的指令块发送完毕,或者若获取所述运算核心发出的停止响应,则停止向全部运算核心发送指令块。若获取所述运算核心发出的停止响应后,再次获取该运算核心发出的重新接收响应,则重新向全部运算核心发送指令块。
运算核心内部出现异常时,发出停止响应,停止接收预送的指令块,例如,运算核心的存储空间已满,不能存储新的指令块时;预送的指令块与运算核心当前正在执行的指令块冲突时等。运算核心内部出现异常时,发出停止响应,若异常排除,运算核心还可以再次发送重新接收响应,重新接收预送的指令块,例如,删除已执行过的指令块,运算核心的存储空间可以继续接收新的指令块时;当前存储的指令块可以被后续预送的指令块覆盖时。
运算核心中运行的指令块是预送的,因此按照执行顺序发送指令块,可以保证运算核心按照执行顺序执行指令块。
根据程序的执行轨迹,将指令代码划分为一系列指令块序列,保证每个运算核心指令的指令块轨迹一致。将运算核心所需指令送入运算核心的指令存储器中,由于程序指令轨迹提前可知,因此可以在运算核心真正执行指令之前,将指令主动提前载入运算核心的存储器中。
具体实施中,在发送指令块时,将指令块拆分成若干条指令,按照约定粒度发送该指令块的指令,所述约定粒度为每次预送的指令的数量。通过广播或多播的方式向所述运算核心发送所述指令块或指令,可以提高发送速度,从而提高工作效率。
所述步骤S3中,为保证运算核心可以正确收到指令块,在发送指令块前,向各运算核心发送预送查询请求。如步骤S2中所述,发送指令块时,将所述指令块拆分成若干条指令,根据约定粒度发送指令块中的指令。因此每次按照约定粒度发送指令块中的指令之前,都会向所述运算核心发送预送查询请求。
所述预送查询请求在每次按照约定粒度发送该指令块的指令前发送。这保证了运算核心可以提前正确地判断是否需要接收预送的指令,对不需要指令的运算核心,避免无用的传输。
将程序切分为小的指令块,将指令块中的指令预送至运算核心,运算核心可在运行前获得指令。这使得指令的预送与计算核心运行相对独立,各运算核心可以在不影响正在执行的指令同时接受其他预送的指令,降低运算核心取指等待的时间,提高运算核心的运算效率。
基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令,所述预送查询请求包含预送的指令的信息。所述预送查询请求主要是询问运算核心目前是否需要新的指令。
各运算核心不再主动发出取指请求,能够消除运算核心取指竞争,还能够减少对通信网络的占用,有利于进一步提高运算核心的运算效率。
所述运算核心对所述预送查询请求做出的响应包括:指令接收响应、指令放弃响应和指令冲突响应;其中指令接收响应分为:即时接收响应、延迟接收响应。
运算核心根据目前正在执行的指令、预送的指令和已经存储但尚未执行的指令的信息,判断是否需要接收预送的指令,并做出响应,具体来讲:
若预送的指令为所述运算核心需要的指令且该运算核心具有足够的存储空间存储所述预送的指令,则该运算核心做出即时接收响应;若预送的指令为所述运算核心需要的指令但该运算核心没有足够的存储空间存储所述预送的指令,则该运算核心做出延迟接收响应。
若预送的指令覆盖所述运算核心正在运行的指令或覆盖已经存储但还未执行的指令,或者两种情况均存在,则该运算核心做出指令冲突响应;若预送的指令在所述运算核心中已经存储,则该运算核心做出指令放弃响应。
所述基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令包括:
若所有运算核心做出的响应不包括指令冲突响应,则向发出接收指令响应的运算核心发送所述预送的指令;
若所有运算核心做出的响应仅包括指令放弃响应,则放弃向各运算核心发送所述预送的指令;
若所有运算核心做出的响应包括指令冲突响应,则等待做出指令冲突响应的运算核心再次做出响应,直至所有运算核心做出的响应不包括指令冲突响应。
所述运算核心对所述预送查询请求做出的响应包括:即时接收响应、延迟接收响应、指令放弃响应和指令冲突响应则:
若所有运算核心做出的响应不包括指令冲突响应和延迟接收响应,则向发出即时接收响应的运算核心发送所述预送的指令;
若所有运算核心做出的响应仅包括指令放弃响应,则放弃向各运算核心发送所述预送的指令;
若所有运算核心做出的响应包括指令冲突响应或延迟接收响应,或者两种情况均存在,则等待做出指令冲突响应的运算核心再次做出响应,以及等待做出延迟接收响应的运算核心做出即时接收响应,直至所有运算核心做出的响应不包括指令冲突响应和延迟接收响应。
也就是说,只有当运算核心做出的响应只包括即时接收响应和指令放弃响应时,才会向做出即时接收响应的运算核心发送预送的指令,且只会向做出即时接收响应的运算核心发送预送的指令,而不会向做出指令放弃响应的运算核心发送预送的指令。这是为了保证需要指令的运算核心可以获得需要的指令,不需要指令的运算核心避免重复接收,减小通信资源的浪费。
如果运算核心做出的响应中包含指令冲突响应或延迟接收响应,或者两者都有,则等待已经发送了指令冲突响应或延迟接收响应的运算核心再次发出响应,并判断新的响应是否是即时接收响应或者指令放弃响应,若两者皆不是,则继续等,直到接收的响应只包括即时接收响应和指令放弃响应时,向做出即时接收响应的运算核心发送预送的指令。
运算核心在执行指令块的过程中,由于各运算核心的启动时间可能不一致,各运算核心运行的数据也不尽相同,因此各运算核心的执行速度经常出现差异,通过所述指令管理方法可以使执行速度快的运算核心等待执行速度慢的运算核心。
由于各运算核心的执行速度不同,运行速度快的运算核心可能已经执行完所有其存储的指令,等待后续发送的指令,而运行速度慢的运算核心,可能还未执行完其存储的指令。由于运算核心的存储空间有限,因此其中存储的指令是不断被后续发送的指令所更新替代的。若运行速度慢的运算核心存储空间已满,且存储的指令为未执行的指令,则该运算核心无法接收后续发送的指令,该运算核心对预送查询请求的响应为指令冲突响应或延迟接收响应。运行速度快的运算核心,由于已经执行完所有其存储的指令,则该运算核心对预送查询请求的响应为即时接收响应。
由于只有当运算核心做出的响应只包括即时接收响应和指令放弃响应时,才会向做出即时接收响应的运算核心发送预送的指令,因此运行速度慢的运算核心发出指令冲突响应或延迟接收响应后,暂停向所有的运算核心发送指令的工作。此时执行速度快的运算核心也无法收到后续的指令,只能等待运算核心再次发出即时接收响应或指令放弃响应后,才能恢复后续指令的发送,运行速度快的运算核心才能接收后续的指令。另外,若运行速度慢的运算核心再次发送的响应为延迟接收响应,则依旧需要等待直至运行速度慢的运算核心发出即时接收响应或指令放弃响应,才能恢复后续指令的发送, 运行速度快的运算核心才能接收后续的指令。
基于上述内容,由于运行速度慢的运算核心做出指令冲突响应或延迟接收响应,这将导致后续发送指令的工作暂停,等待直至运行速度慢的运算核心发送即时接收响应或指令放弃响应才能恢复。这样的机制能够允许各运算核心间可以存在一定运行差异,当这种差异过大时该机制一方面可以平衡各运算核心之间的速度差异,同时也起到了控制程序执行节奏的作用。
图2是本发明实施例提供的指令管理装置,包括:
反馈单元12,用以发出指令块发送信号,所述指令块按照程序的执行顺序将所述程序划分得到。
反馈单元12还用以在获取所述运算核心发出的停止响应后,停止发出所述指令块发送信号。所述反馈单元12还用以在获取所述运算核心发出的停止响应后,再次获取该运算核心发出的重新接收响应后,重新发出所述指令块发送信号。
划分好的指令块可以存储在独立存储器中,反馈单元12发出指令块发送信号后,由独立存储器向运算核心发送指令块。
所述指令管理装置也可以设置内置的指令存储器13(图2所示),指令存储器13与反馈单元12相连,用以存储所述指令块,所述指令存储器13获取所述反馈单元12发出的所述指令块发送信号后,按照执行顺序发送指令块至至少一个运算核心。
所述指令管理装置还可以包括:
预送查询单元11,用以在发送指令块的指令前,向各运算核心发送预送查询请求,所述预送查询请求包含预送的指令的信息,所述指令块按照程序的执行顺序将所述程序划分得到;
所述反馈单元12还用以基于各运算核心对所述预送查询请求做出的响 应,做出发送指令消息;反馈单元12与预送查询单元11相连,从预送查询单元11获取预送查询请求,反馈单元12根据获取的预送查询请求,在获取的响应中查找对应的响应;
指令存储器13还可以从反馈单元12获取所述发送指令消息,按照执行顺序发送指令块至至少一个运算核心;指令存储器13与反馈单元12连接,从反馈单元12处获取向运算核心发送指令的消息,也称取指请求。
指令存储器13按照约定粒度向所述运算核心发送该指令块的指令,所述约定粒度为每次预送的指令的数量。指令存储器13通过广播或多播的方式向所述运算核心发送所述指令块的指令。
所述指令管理装置还包括划块单元(图中未显示),用以按照程序的执行顺序将所述程序划分为所述指令块。
在具体实施中,反馈单元12针对运算核心的响应做出不同的反馈,可以是:
若所有运算核心做出的响应不包括指令冲突响应,则所述反馈单元12做出向发出接收指令响应的运算核心发送所述预送的指令的反馈;若所有运算核心做出的响应包括指令冲突响应,则所述反馈单元12做出等待指令冲突响应的运算核心再次做出响应,直至所有运算核心做出的响应不包括指令冲突响应的反馈。
还可以是:若所有运算核心做出的响应不包括指令冲突响应和延迟接收响应,则所述反馈单元12做出向发出即时接收响应的运算核心发送所述预送的指令的反馈;若所有运算核心做出的响应包括指令冲突响应和/或延迟接收响应,则所述反馈单元12做出等待做出指令冲突响应的运算核心再次做出响应,以及等待做出延迟接收响应的运算核心做出即时接收响应,直至所有运算核心做出的响应不包括指令冲突响应和延迟接收响应的反馈。
指令管理装置可以作为独立的装置与运算核心配合工作,也可以集成在运算核心中。
图3是本发明实施例提供的运算核心,包括:
指令存储单元21,用以接收并储存指令块的指令;
运算单元22,用以运行指令存储单元21储存的指令块;运算单元22与指令存储单元21相连,从指令存储单元21处获取指令后运行;
所述运算核心还可以包括:
指令传输处理单元23,用以基于当前运行的指令块、指令存储单元21中存储的指令块和指令管理装置发出的预送查询请求,做出对所述预送查询请求的响应;指令传输处理单元23与指令存储单元21相连,指令传输处理单元23还与运算单元22相连,指令传输处理单元23从指令存储单元21获取已经储存的指令的信息,包括:哪些指令已经执行,哪些指令还未执行;指令传输处理单元23从运算单元22获取正在执行的指令块的信息,包括正在执行的指令块的存储位置。
具体来讲,所述预送查询请求包含预送的指令在指令存储器中的存储地址,以及预送的指令所属的指令块的第一条指令在指令存储单元21中的存储地址。
在具体实施的过程中,预送的指令块存储在指令存储器中,运算核心接收的指令块存放在指令存储单元21中,该指令块在指令存储单元21中的存储地址与预送的指令块存储在指令存储器中的存储地址具有映射关系。指令存储单元21还用以保存所述指令块的执行顺序。
所述指令存储单元21还用以发出停止响应,所述指令存储单元21发出所述停止响应后,停止接收预送的指令块。所述指令存储单元21还用以在发出停止响应后,再次发送重新接收响应,所述指令存储单元21发出所述重新 接收响应后,重新接收预送的指令块。
运算核心内部出现异常时,指令存储单元21还用以发出停止响应,停止接收预送的指令块,例如,指令存储单元21的存储空间已满,不能存储新的指令块时;预送的指令块与运算单元22当前正在执行的指令块冲突时等。运算核心内部出现异常时,指令存储单元21发出停止响应,若异常排除,指令存储单元21还可以再次发送重新接收响应,重新接收预送的指令块,例如,删除已执行过的指令块,指令存储单元21的存储空间可以继续接收新的指令块时;当前存储的指令块可以被后续预送的指令块覆盖时。
图4是本发明实施例提供的指令存储器与运算核心存储指令块的存储地址映射关系的示意图。
指令在指令存储器3(参看图7,或者图2中的指令存储器13)中的存储顺序为:指令0-4→指令5-24→指令25-34,对指令进行分块,分别为:指令块B0(包含原指令0-4),指令块B1(包含原指令5-24),指令块B2(包含原指令25-34)。为方便描述,对指令在指令块中的命名做了修改,图4中指令块中的指令的名称使用的是表2所示[指令块中指令名称],具体的对应关系如表2所示:
表2
  指令块名称  原指令名称  指令块中指令名称  指令块B0  指令0-4  指令0-4  指令块B1  指令5-24  指令0-19  指令块B2  指令25-34  指令0-9
指令存储器3中储存了三个指令块分别为:指令块B0,指令块B1,指令块B2,其中指令块B0包括指令0-4,五条指令,指令块B1包括0-19,二十 条指令,指令块B2包括0-9,十条指令。指令块在指令存储器3中顺序存储。指令存储单元21最多可以存储20条指令,指令存储单元21分为20个存储地址,每个存储地址对应顺序标号依次是:地址0-地址19。指令存储单元21与指令存储器3的指令块的存储地址的对应关系为:指令块B0包括指令0-4,指令块B0在指令存储单元21中的存储位置位于地址0-地址4,指令块B1包括指令0-19,指令块B1的指令0-14在指令存储单元21中的存储位置位于地址5-地址19,指令块B1的指令15-19在指令存储单元21中的存储位置还位于地址0-地址4(同一个地址是可以复用的),指令块B2包括指令0-9,指令块B2在指令存储单元21中的存储位置位于地址5-地址14。
上述指令块的存储地址的映射关系预置的,其他实施例中,该映射关系也可以按照其他规则制定。但是一旦映射关系制定,在整个指令的预送过程中,该映射关系不得修改,指令存储单元21在存储指令块的指令时,必须按照制定好的映射关系存储。
指令块中的指令在指令存储器3和指令存储单元21中的存储方式有多种,比较常用的是以Cache管理的形式保存,一个Cache行可以包括几十甚至上百条指令,也可以只包括一条指令。本实施例中,指令以直接Cache映射的形式保存在指令存储器3和指令存储单元21中。在直接Cache映射的管理形式中,指令存储单元21中不存在没有空间保存预送指令的问题,因此不会有延迟接收响应产生。
基于上述映射关系以及预送查询请求,运算核心可以对预送查询请求作出响应。
若预送的指令覆盖所述运算核心正在运行的指令或覆盖已经存储但还未执行的指令,或者两种情况都有,则该运算核心的指令传输处理单元23做出指令冲突响应;若预送的指令为所述运算核心需要的指令,则该运算核心的 指令传输处理单元23做出指令接收响应;若预送的指令已经存储在所述运算核心中,则该运算核心的指令传输处理单元23做出指令放弃响应。
具体来讲,指令块B0是第一个存入指令存储单元21的指令块,占据了地址0-地址4的位置。后续发送指令块B1,若约定粒度为每次发送5条指令,则先发送指令块B1的指令0-4。在发送预送查询请求时,所述预送查询请求中包含了指令块B1在指令存储器中的存储地址,以及指令块B1的第一条指令在指令存储单元21中的存储地址:地址5。
指令块B0是第一个存入指令存储单元21的指令块,占据了地址0-地址4的位置,但是地址5-地址19为空闲,因此可以继续存储指令块B1的指令0-4。继续按约定粒度发送指令块B1的指令5-9、指令块B1的指令10-14,指令存储单元21按映射关系顺序存储指令块B1的指令0-14至地址5-地址19。
继续发送指令块B1的指令15-19时,指令存储单元21已无空闲的地址可以继续存储指令块B1的指令15-19,且指令块B1的指令15-19在指令存储单元21中对应的存储地址为地址0-地址4。若运算核心正在执行指令块B0,由于指令块B1的指令15-19在指令存储单元21中的存储地址为地址0-地址4,若正在执行指令块B0,则表示预送的指令覆盖所述运算核心正在运行的指令或者覆盖已经存储但还未执行的指令,不能接收当前预送的指令,则该运算核心做出指令冲突响应。
若指令块B0已经执行完成,指令存储单元21中地址0-地址4的指令,可以被覆盖掉,则该运算核心做出指令接收响应。
完成指令块B1的指令预送后,继续预送指令块B2的指令,接收到预送指令块B2的预送查询请求,该预送查询请求包括:指令块B2在指令存储器中的存储地址,以及指令块B2的第一条指令在指令存储单元21中的存储地址:地址5。
原理同上,若指令块B1的指令0-4正在执行或已经存储但尚未执行,则指令块B2的指令0-4不能存储,运算核心做出指令冲突响应。若指令块B1的指令0-4已经全部执行完成,则指令块B2的指令0-4可以存储,运算核心做出指令接收响应。
若指令块B1的指令5-9正在执行或已经存储但尚未执行,则指令块B2的指令5-9不能存储,运算核心做出指令冲突响应。若指令块B1的指令5-9已经全部执行完成,则指令块B2的指令5-9可以存储,运算核心做出指令接收响应。具体实施时,按照约定粒度发送指令块的指令,每次按照约定粒度发送指令之前都要发送预送查询请求,并等待运算核心的响应进行后续的操作。
指令块B1中包含的指令与指令块B2中包含的指令不能相同。指令存储单元21中是以指令的存储地址区分指令是否相同的,在指令存储器中的存储地址不同,即便内容相同也认为是不同的指令。
若指令块序列为B0-B1-B2执行一遍之后,再循环执行一遍,例如B0-B1-B2-B0-B1-B2。指令块B0存在地址0-地址4的位置,指令块B1的20条指令存在地址5-地址19、地址0-地址4的位置,指令块B2的10条指令存在地址5-地址14的位置。第一轮执行(B0-B1-B2),指令块B0、指令块B1、指令块B2全部预送,当指令块B2预送结束的时候,指令存储单元21中地址0-地址4的位置保存的是指令块B1的指令15-19,地址5-地址14的位置,保存的是指令块B2的指令0-9,地址15-地址19的位置,保存的是指令块B1的指令10-14。第二轮执行(B0-B1-B2),预送指令块B0时,会把指令存储单元21中地址0-地址4的位置覆盖B0的指令0-4;预送指令块B1时,预送指令0-9时,由于指令存储单元中地址5-14的位置是指令块B2的指令,需要重新接收指令块B1的指令0-9,指令块B1指令10-14已经在指令存储单元21中,因此不需要预送,对预送查询请求会返回指令放弃响应。
具体地讲,所述指令接收响应分为:即时接收响应和延迟接收响应。若预送的指令为所述运算核心的运算单元22需要的指令且该运算核心的指令存储单元21具有足够的存储空间存储所述预送的指令,则该运算核心的指令传输处理单元23做出即时接收响应;若预送的指令为所述运算核心的运算单元22需要的指令但该运算核心的指令存储单元21没有足够的存储空间存储所述预送的指令,则该运算核心的指令传输处理单元23做出延迟接收响应。在直接Cache映射形式的指令管理方式中,只会在指令冲突的时候产生延迟接收响应。在其他的指令管理方式中,根据不同的情况,运算核心做出指令冲突响应或延迟接收响应。
指令传输处理单元23发出所述延迟接收响应后,经过一段时间(称为延迟时间)在冲突解除后,再次做出响应。指令传输处理单元23发出指令冲突响应后,在冲突解除后,再次做出响应。冲突包括所述预送的指令覆盖所述运算核心正在运行的指令和/或覆盖已经存储但还未执行的指令,运算核心中存储指令块的指令的存储空间不足等。新的响应可以是即时接收响应、延迟接收响应或指令冲突响应、指令放弃响应中的一种。
在众多运算核心中可以指定一个运算核心为指令管理装置,则该运算核心还包括如图2所示的指令管理装置。
运算核心多为处理器,用以执行指令块并对预送查询请求作出响应,但运算核心也可以与指令管理装置集成在一起。也就是说,指令管理装置和运算核心可以分别作为独立的部件,相互通信完成指令的处理,指令管理装置也可以和运算核心集成在一起形成集成部件,该集成部件既可以实现指令管理装置的工作,又可以实现运算核心的工作。
图5是本发明实施例提供的程序和指令块的示意图,图6是本发明实施例提供的指令块中的指令的示意图,图7是本发明实施例提供的指令管理系 统,下面结合图5至图7详细说明。
详细实施例:
程序在进入运算核心中运行之前,需要将所述程序分成指令块。程序由若干条指令组成,划分之后的指令块中包含着程序的指令。所述程序可以是一个大型的系统级程序,也可以是小型的应用软件程序,还可以是从完整的程序中节选的部分功能模块的程序。本实施例中以小型的应用软件程序为例说明,在其他实施例中可以是大型的系统级程序,或者是从完整的程序中节选的部分功能模块的程序,还可以是其他的程序,例如软件的安装程序等,不受本实施例的限制。
将程序分成指令块主要遵循以下几个原则:
1.按照程序的执行顺序分成指令块;
2.划分之后,单个指令块所占的空间小于或等于运算核心的指令存储单元的存储空间;
3.指令块中要包括完整的指令;
4.指令块间不允许有重叠。
程序可以通过分块算法划分为指令块,也可以结合实际经验,例如,指令的执行时间、指令的调用次数等划分为指令块。
具体来讲,原则1中,程序通常都是连续的,并且具有一定的执行顺序,将程序分成指令块时,按照程序的执行顺序划分。由于程序是连续的,按照执行顺序划分的指令块,通常也是连续的。
划分之后的指令块的执行顺序与程序的执行顺序相同,也就是指令块的执行轨迹与程序的执行顺序是一致的。所述程序的执行顺序是指程序中指令的执行顺序。
若程序中具有循环、递归或者条件判断等程序时,指令块的执行轨迹与程序的执行顺序可以略有不同,但是指令块中指令的执行顺序与程序的执行顺序相同。
举例来讲,例如,循环程序。循环程序通常是循环执行若干条指令。若将这些指令分开在不同的指令块中,在发送预送查询请求时,也会循环发送相同的指令,这会影响运算核心的执行效率。因此上述类型的指令通常放在同一个指令块中。将上述类型的指令放在同一个指令块中,在该指令块中执行完整的循环程序,从指令块的整体执行序列来看,是顺序的。但程序的实际运行中,在该指令块中指令是循环执行的,其执行顺序和程序中指令的执行顺序是完全一致的。
但在特殊的情况下,上述类型的指令也可以分散在不同的指令块中。例如,循环嵌套循环的程序,此时外层循环指令和内层循环指令可以放在不同的指令块中。
此处将程序划分为指令块指的是逻辑上的划分,也就是说,将程序划分为指令块最终获得的是指令块序列或指令块列表。也就是说,划分之后的指令块仅是以指令块序列的形式表示程序具有哪些指令块,每个指令块包含哪些指令,而非将程序进行物理上的分割。
举例来讲,待划分的程序包含15条指令,结合指令的运行时间和调用次数,将程序划分为三个指令块,每个指令块包含5条指令,划分之后的指令块以指令块序列的形式表示,而不是以三个独立的指令块存在,划分之后的指令块序列如表3所示:
表3
  指令块名称  原指令名称  指令块中指令名称
  指令块1  指令0-4  指令0-4  指令块2  指令5-9  指令0-4  指令块3  指令10-14  指令0-4
如表3所示,指令块序列中显示了指令块名称、每个指令块包含的指令。在发送指令块时,按照指令块的顺序,根据约定粒度(本实施例中,约定粒度为每次发送5条指令)先发送指令块1的指令,发送预送查询请求时,发送原指令的前五条指令(指令0-4)在指令存储器中的存储地址以及原指令的指令0在指令存储单元中的存储地址,然后发送指令块2,此时发送预送查询请求时,发送原指令的指令5-9在指令存储器中的存储地址以及原指令的指令5在指令存储单元中的存储地址,其次发送指令块3,此时发送预送查询请求时,发送原指令的指令10-14在指令存储器中的存储地址以及原指令的指令10在指令存储单元中的存储地址。
原则2中,划分之后的指令块所占的空间小于或等于运算核心的指令存储单元的存储空间,指令块需要预送到运算核心的指令存储单元中,若划分之后的指令块所占的空间大于运算核心的指令存储单元的存储空间,则无法存储所述指令块。
对于多核和众核来讲,划分之后的指令块所包含的指令容量要小于或等于每个运算核心的指令存储单元的存储空间。也就是说,要小于或等于最小的指令存储单元的存储空间。指令的存储方式有多种,常用的是以Cache行的形式存储,一般来讲,以Cache行的形式存储,一个Cache行可以为128字节、256字节或512字节,每个Cache行包括一定数量的指令,且每个Cache行包括的指令数目相同。指令块通常包括若干Cache行,大小可以为128字节、256字节或512字节。
具体来讲,划分后的单个指令块内包含的指令容量要小于或等于运算核 心的指令存储单元的存储空间大小。指令在传输过程中,以预定的约定粒度传输,以Cache行的形式存储指令时,所述约定粒度一般为一个Cache行。例如,一个128字节的Cache行,指令为4字节时,一个Cache行包含32条指令。
通常要求,指令块包含的指令数目最好是指令传输的约定粒度的整数倍,例如,指令以Cache行的形式存储,指令传输的约定粒度为一个Cache行(也可以是几个Cache行),大小为128字节(Byte),则可以将指令块以一个Cache行(128字节)、两个Cache行(256字节)、或四个Cache行(512字节)的格式划分;或者以其他形式存储指令时,指令传输的约定粒度为5条指令,则单个指令块可以包含10条、15条或20条指令。
原则3中,指令块中要包括完整的指令,指令以Cache行的形式保存,一个Cache行包括一条指令或几条指令。
如前述举例,Cache行就是片内高速缓存与主存间约定的替换、传输粒度的单位,例如,可以是指令存储器与运算核心间传输粒度的单位。上文中约定粒度表示每次传输的指令的数量,若一个Cache行为256字节,指令为4字节时,一个Cache行表示64条指令,则约定粒度为一个Cache行(256字节),每次发送64条指令。通常情况下,运算核心中的存储地址是按字节编址的,如果规定一个Cache行256字节,每次数据传输就是256字节,并且给出的地址是0x100,低位都是0,这称为地址256字节对界。这样访存的效率最高。
划分指令块的时候,是把很多指令划分为几组(每组称为指令块),这样一个指令块可能占用几个Cache行,或者不到1个Cache行。所谓指令块中要包括完整的指令,是指最好能够保证1个指令块中包含完整的Cache行(即划块按Cache对界),例如,256字节对界的Cache行不会出现前一半在前一 个指令块中,后一半出现在下一个指令块中的情况。
运算核心或指令存储器中的一条指令,通常是4字节或8字节,在主存或片上高速缓存(指令存储器)中存放的时候,是连续存放的。这样如果约定Cache行大小为256字节,256是4或8的整数倍,按照地址对界的方式,传输一个Cache行不会出现1条指令的4个字节会存放在不同Cache行中的情况。
采用对界的方式可以提高访存的效率。但这个约束不是必须的,可以不对界。
原则4中,指令块间不允许有重叠,例如:程序中包含连续的指令依次为:指令0~指令10,划分为顺序的两个指令块依次为:指令块1、指令块2,指令块1包含指令0~指令5,指令块2包含指令6~指令10。这种划分形式是允许的。
但是如果出现这样的划分形式:指令块1包含指令0~指令8,指令块2包含指令5~指令10,这样是不允许的。
另外,指令块是对一段已经存在于主存(指令存储器)中的程序指令的逻辑上的划分,程序指令存放的物理地址(存储地址)在指令存储器中是固定的,指令块划分的时候是指定从存储地址addr_x~addr_y之间的部分为指令块B_z。如前述表3所示,指令块序列可以具体表示为表4:
表4
  指令块名称  原指令地址  指令块中指令名称  存储地址  指令块1  指令0-4  指令0-4  addr_0~addr_4  指令块2  指令5-9  指令0-4  addr_5~addr_9  指令块3  指令10-14  指令0-4  addr_10~addr_14
预送指令块的时候,查询请求包含的内容是:询问运算核心是否需要位于地址addr_x~addr_x+m范围内的指令(m表示存储地址的偏移量)。运算核心根据当前执行的指令块、已经存储但未执行的指令块,以及预送查询请求,对预送查询请求作出合适的响应。
运算核心运行指令的时候,是按照指令的地址去指令存储器中取的,运算核心将取到的指令按照前文所述的映射关系保存在指令存储单元中。
划分指令块的方式有多种,并且划分的程序不同,采用的方式也不同,在具体实施时,必须依据上述4个原则进行划分,指令块序列根据实际需要划分,不受上述举例内容限制。
图5是本发明实施例中一个应用程序的指令块的示意图,下面结合图5详细说明。
本应用举例中,程序B为小型的应用软件程序,将程序B划分成指令块时,遵循上述4个原则。
划分指令块时,首先考虑根据程序B的执行顺序划分,程序B一旦设计完成,其执行顺序也就固定了。程序B的指令块序列可以按照规则进行划分,无论划分出来的指令块序列如何,都要保证最终指令的轨迹与原程序B一致。
图5中程序B包含程序段0,程序段1,程序段2,其执行顺序为程序段0→程序段1→程序段2,因此划分为指令块时,可以将每一个程序段划分为一个指令块。将程序B按照执行顺序划分为三个指令块,分别为指令块B0,指令块B1,指令块B2。
图5中箭头所示的流向表示指令块B0,指令块B1,指令块B2的执行顺序,即B0→B1→B2。
在其他实施例中,若程序A中包含程序段0,程序段1,程序段2,其执行顺序是跳转执行的,例如,程序段1→程序段0→程序段2,出现这种跳转 的执行顺序或者类似这种跳转的执行顺序时,可以将程序段0,程序段1,程序段2放在同一个指令块中(即整个程序只包含一个指令块),也可以采用本实施例中的划分方式;若程序C中包含程序段0,程序段1,程序段2,其执行顺序是循环执行的,例如,程序段0→程序段1→程序段2→程序段1→程序段2→程序段1→程序段2→程序段0,出现这种循环的执行顺序或者类似这种循环的执行顺序时,可以将程序段1和程序段2划分在一个指令块B1中,程序段0单独划分为一个指令块B0,指令块序列为B0和B1间的循环:B0→B1→B0。在划分指令块时,可以根据实际情况进行划分,不限于上述举例的内容。
划分指令块时还需要考虑:划分之后的指令块所占的空间小于或等于各运算核心的指令存储单元的存储空间;指令块中要包括完整的指令;指令块间的指令不允许重叠。
本实施例中,每条指令4B,运算核心的指令存储单元的最小存储空间为80B,因此指令块B0,指令块B1和指令块B2中所包含的指令容量要小于或等于80B。本实施例中,将指令块B0,指令块B1和指令块B2分别划分为20B、80B和40B。本实施例中,指令块B0,指令块B1和指令块B2中包含的指令容量不相同,在其他实施例中,指令块B0,指令块B1和指令块B2中包含的指令容量可以相同。
程序段0,程序段1,程序段2分别为顺序执行的完整的程序,每段程序包含若干条指令。因此将程序段0,程序段1,程序段2分别划分为指令块B0,指令块B1和指令块B2时,能够保证指令块中要包括指令块的执行顺序与指令的执行顺序一致。
相应的,指令块B0,指令块B1和指令块B2也保证了,顺序执行的指令不能在顺序执行的指令块中重复出现。也就是说,指令块B0包含程序段1, 指令块B1中不能再包含程序段1。
本实施例中,程序段0,程序段1,程序段2为顺序执行的程序,因此指令块B0,指令块B1和指令块B2的执行顺序与程序段0,程序段1,程序段2的执行顺序相同。
划分好的指令块序列信息以列表的形式保存,本实施例中,划分好的指令块是指在逻辑上对指令进行划分。
图6是图5中指令块包含的指令的示意图,如图6所示指令块B0包括指令0-4,五条指令,指令块B1包括指令0-19,二十条指令,指令块B2包括指令0-9,十条指令。图6所示的指令块中指令的命名可参照表3所示的内容。
图7是本发明实施例提供的指令管理系统。本实施例中,指令管理装置1、运算核心2和指令存储器3是独立设置的,相互之间通过消息的通信配合工作。
所述指令管理系统包括:
指令管理装置1,用以在发送指令块时,向各运算核心2发送预送查询请求,基于各运算核心2对所述预送查询请求做出的响应发送该指令块中的指令,所述预送查询请求包含预送的指令在指令存储器3中的存储地址,以及预送的指令所属的指令块的第一条指令在运算核心2中的存储地址;
指令管理装置1向各运算核心发送预送查询请求,主要是为了了解各运算核心2(运算核心2是对各运算核心的泛指)的执行情况,并根据各运算核心2的应答响应内容,判断是否向各运算核心2发送后续的指令块;
由于各运算核心2的执行速度存在差异,有的运算核心执行速度快,有的运算核心执行速度慢,通过各运算核心2对所述预送查询请求做出的响应,可以判断各运算核心2的执行情况,在各运算核心2的执行速度差异较大时,通过控制向各运算核心2发送指令,平衡各运算核心2的差异。
运算核心2,用以接收并运行指令块,且对指令管理装置1发出的预送查询请求做出响应;在所述指令管理系统中,运算核心2为多个,分别为运算核心0至运算核心n;
运算核心2对指令管理装置1发出的预送查询请求做出响应通常包括四种,分别是:指令即时接收响应、指令延迟接收响应、指令放弃响应和指令冲突响应。如果运算核心2中的指令存储单元采用直接Cache映射的管理方式时,指令延迟接收响应与指令冲突响应相同,因此运算核心2对指令管理装置1发出的预送查询请求做出响应,也可以看成是三种:即时接收响应、指令放弃响应和指令冲突响应;运算核心2一次只能做出一种响应。
具体来讲,若预送的指令为运算核心2需要的指令且该运算核心2具有足够的存储空间存储所述预送的指令,则该运算核心2做出即时接收响应;若预送的指令将覆盖运算核心2正在运行的指令或者覆盖已经存储但还未执行的指令,或者两种指令都将被覆盖,导致该运算核心2没有足够的存储空间存储所述预送的指令,则运算核心2做出指令冲突响应;若预送的指令在运算核心2中已经存储在,则运算核心2做出指令放弃响应;
所述即时接收响应表示运算核心2随时可以接收指令块所述指令冲突响应表示运算核心2暂时不能接收指令块,只有冲突解除之后才能判断时候需要指令块;所述冲突包括所述预送的指令覆盖所述运算核心正在运行的指令或覆盖已经存储但还未执行的指令,或者两者都覆盖;
若运算核心2发出指令冲突响应,运算核心2还需要在发出指令冲突响应后,在冲突解除后能够接收指令时,再次向指令管理装置1做出响应。
指令存储器3,用以存储指令块(本实施例中,指令存储器3中存储的是程序,具体的可以是以指令序列或者列表形式保存的划分好的指令块);指令存储器2受指令管理装置1的控制,指令管理装置1基于各运算核心2对所 述预送查询请求做出的响应,判断各运算核心2的状态,从而决定是否继续发送后续的指令块,若继续发送后续的指令块,则向指令存储器3发送取指请求,也就是控制指令存储器3向各运算核心2发送指令块的命令;指令存储器3接收指令管理装置1发出的发送指令块的命令(例如,取指请求)时,向运算核心2发送指令。
由于运算核心2为多个,指令存储器3一般通过广播或多播的方式发送指令,即一次可以同时为多个运算核心传输指令,这样一方面能够减少串行传输时运算核心2的等待时间,另一方面可以减少指令传输对通信网络的占用,能够提高芯片数据传输使用率,进而提高运算核心2的运算效率。
在具体实施过程中,划分好的指令块B0,指令块B1和指令块B2是预先存放在指令存储器3中的。指令存储器3的容量可以比较大,用以存放较多的指令块。
所述指令管理系统还可以包括分块单元(图中未显示),用以将程序划分为顺序执行的指令块。程序在送入指令存储器3中时,可以是已经分好的指令块,也可以在指令存储器3中设置分块单元,将程序送入指令存储器3后,由分块单元分成指令块。
将划分好指令块的信息写入指令管理装置1,所述指令块的信息包括指令块的数量,指令块的大小,指令块的执行顺序信息,各指令块包含的指令的数目、指令的存储地址等。指令块的信息可以以列表的形式,通过软件指令写入或导入指令管理装置1中。
在指令存储器中指令块B0、指令块B1、指令块B2是顺序储存的,指令块B0、指令块B1、指令块B2的指令按照预定的直接映射关系存储在运算核心2中。
如参考图4,指令块B0的5条指令存在地址0-地址4的位置,指令块 B1的20条指令存在地址5-地址19、地址0-地址4的位置,指令块B2的10条指令存在地址5-地址14的位置。
将指令存储在单独的指令存储器3中,可以提高指令管理装置1的工作效率,降低指令管理装置1的开销。指令管理装置1仅需要担负管理的工作,与运算核心2进行预送查询请求的通讯,向指令存储器3发出取指请求,而不需要担负发送指令块的指令的工作。与运算核心2进行预送查询请求的通讯,向指令存储器3发出取指请求。
本实施例中,指令管理装置1和指令存储器3是独立设置的,在其他实施例中,两者可以集成在一起,不受上述内容的限制。
运算核心2的数目一般为多个,称为多核或众核,多个运算核心2并行处理数据,以增强数据处理的效率。运算核心2中包含接收并储存所述指令块的指令的指令存储单元和运行所述指令存储单元储存的指令块的指令的运算单元。所述指令存储单元也称为指令局存,容量一般在KB量级。
本实施例中,运算核心0至运算核心k的指令存储单元的容量为80B,运算核心k+1至运算核心n的指令存储单元的容量为160B。指令块B0为20B,指令块B1为80B,指令块B2为40B。在其他实施例中,运算核心0至运算核心n的指令存储单元的容量可以相同,例如,都为80B,或者都为160B。指令块的大小也可以相同,例如,都为80B。
所述指令管理系统启动运行的初始状态时,运算核心2的指令存储单元中通常是空的,也就是说,没有存储指令块。此时,指令管理装置1向每个运算核心2发送预送查询请求,运算核心2都会反馈即时接收响应。后续发送指令块B1、指令块B2的指令时,运算核心2根据自身的运行情况及预送的指令的信息,向指令管理装置1反馈适合的响应。
由于指令块在划分的时候遵循了原则1,所有的指令块都小于或等于运算 核心2的指令存储单元的容量,且指令在指令存储器3的存储地址与在运算核心2中的存储地址具有对应关系,因此指令的预送查询请求中一般不携带指令块的大小的信息,但在指令的预送查询请求中,携带预送的指令在指令存储器3的存储地址。
所述预送查询请求包含预送的指令的信息。所述预送查询请求包含预送的指令在指令存储器中的存储地址,以及预送的指令所属的指令块的第一条指令在指令存储单元(也就是运算核心2)中的存储地址。
指令管理装置1通常是按照指令块的执行顺序,依次向运算核心2发送指令块,并且一个指令块发送完成之后,再发送下一个指令块。具体的,在发送指令块时,将指令块拆分成指令,并按照约定粒度发送。所述约定粒度是指每次发送的指令的数目。因此指令管理装置1向运算核心2发送预送查询请求时,也是一个指令块的指令的预送查询请求发送并处理完成之后,发送下一个指令块的指令的预送查询请求并处理。
本实施例中运算核心不会发出延迟接收响应,因此每次向运算核心2发送指令时,指令管理装置1只有在接收到的响应中不包含指令冲突响应时,才会向指令存储器3发送取指请求;若指令管理装置1接受到的响应中包含指令冲突响应,则指令管理装置1会控制指令存储器3暂停向运算核心2发送指令。另外,指令管理装置1向指令存储器3发送取指请求时,会告知指令存储器3仅向发出即时接收响应的运算核心2发送指令。也就是说,若运算核心2做出指令放弃响应,那么该运算核心2就不会收到本次预送的指令。这可以防止指令接收重复,避免通信资源浪费。
本实施例中,运算核心0至运算核心k的指令存储单元的容量为80B,运算核心k+1至运算核心n的指令存储单元的容量为160B。指令块B0的大小为20B,运算核心2在接收了指令块B0的指令后,运算核心0至运算核心 n中都存储了20B的指令,对于运算核心0至运算核心k来讲,其容量为80B,目前可用的容量为60B,对于运算核心k+1至运算核心n来讲,其容量为160B,目前可用的容量为140B。
在其他实施例中,若运算核心0至运算核心n的指令存储单元的容量相同,由于每个运算核心执行指令的速度不同,也有可能造成各运算核心的指令存储单元的可用容量不同。
本发明的技术方案至少具有以下优势:
采用软硬件相结合的方法,软件根据程序的执行轨迹,将指令代码划分为一系列指令块序列,软件保证每个运算核心指令的指令块轨迹一致。硬件按照软件划分出来的指令块序列信息,将运算核心所需指令送入运算核心的指令存储器中。由于程序指令轨迹提前可知,可以在运算核心真正执行指令之前,将指令主动提前载入运算核心的存储器中。
将程序切分为小的指令块,将指令块中的指令预送至运算核心,运算核心可在运行前获得指令。这使得指令的预送与计算核心运行相对独立,各运算核心可以在不影响正在执行的指令同时接受其他预送的指令,降低运算核心取指等待的时间,提高运算核心的运算效率。
各运算核心不再主动发出取指请求,能够消除运算核心取指竞争,还能够减少对通信网络的占用,有利于进一步提高运算核心的运算效率。
指令组织成容量可变的指令块,每个运算核心执行的指令超块轨迹相同,但允许每个运算核心在指令块内的执行轨迹各不相同。也就是说,各运算核心的执行速度不同,基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令,可以平衡各运算核心之间的运行速度的差异。这使得各运算核心运行速度差异在可控范围内,但是未强制各运算核心同步运行指令。这种以预送指令为手段的控制方式是一种松散的同步机制,即通过发送预送 查询请求,基于运算核心的响应控制指令的预先发送的节奏,平衡运行速度快的运算核心与运行速度慢的运算核心之间的速度差异。也就是说,使运行最快的运算核心不会超过运行最慢的核心太多,若运行快的运算核心将要运行的指令会覆盖运行慢的运算核心的正在运行的指令块时,运行慢的运算核心发出指令冲突响应,暂停向所有运算核心发送指令的工作。本发明的技术方案允许各运算核心的速度存在一定差异,指令预送过程中对运算核心的干扰少,因此适用的范围更广。
以多播、广播的指令预送方式,对多核、众核结构尤其适用,能够减少运算核心间的取指竞争,以及减少指令传输对通信网络的拥塞时间,提高片上通信网络利用效率。
本发明的技术方案是一种基于松散同步的指令预送机制,解决了单核、多核、众核处理器中计算核心取指延迟长的问题和多核、众核处理器中的取指竞争问题,提高了处理器的运算效率。
本发明的技术方案采用软硬件协同的办法,解决单核、多核、众核处理器中计算核心取指延迟长的问题。采用指令预送的方式,将有效解决多核、众核处理器中的取指竞争问题。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

指令管理方法及装置、指令管理系统、运算核心.pdf_第1页
第1页 / 共28页
指令管理方法及装置、指令管理系统、运算核心.pdf_第2页
第2页 / 共28页
指令管理方法及装置、指令管理系统、运算核心.pdf_第3页
第3页 / 共28页
点击查看更多>>
资源描述

《指令管理方法及装置、指令管理系统、运算核心.pdf》由会员分享,可在线阅读,更多相关《指令管理方法及装置、指令管理系统、运算核心.pdf(28页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103377085 A (43)申请公布日 2013.10.30 CN 103377085 A *CN103377085A* (21)申请号 201210107228.1 (22)申请日 2012.04.12 G06F 9/50(2006.01) (71)申请人 无锡江南计算技术研究所 地址 214083 江苏省无锡市滨湖区军东新村 030 号 (72)发明人 高剑刚 李宏亮 郑方 许勇 卢宏生 任秀江 高红光 (74)专利代理机构 北京集佳知识产权代理有限 公司 11227 代理人 骆苏华 (54) 发明名称 指令管理方法及装置、 指令管理系统、 运算核 心 (57。

2、) 摘要 一种指令管理方法及装置、 指令管理系统和 一种运算核心, 所述指令管理方法包括 : 按照程 序的执行顺序将所述程序划分为指令块 ; 按照执 行顺序发送指令块至至少一个运算核心。本发明 的技术方案有效的减少了运算核心的指令脱靶和 等待延迟, 提高了运算核心的计算效率。 (51)Int.Cl. 权利要求书 3 页 说明书 19 页 附图 5 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书19页 附图5页 (10)申请公布号 CN 103377085 A CN 103377085 A *CN103377085A* 1/3 页 2 1. 一种指令管理方。

3、法, 其特征在于, 包括 : 按照程序的执行顺序将所述程序划分为指令块 ; 按照执行顺序发送指令块至至少一个运算核心。 2. 如权利要求 1 所述的指令管理方法, 其特征在于, 所述运算核心包括接收并储存所 述指令块的指令存储单元和运行所述指令存储单元储存的指令块的运算单元, 所述指令块 所占的空间小于或等于所述指令存储单元的存储空间。 3. 如权利要求 1 所述的指令管理方法, 其特征在于, 所述发送指令块包括按照约定粒 度发送该指令块的指令, 所述约定粒度为每次预送的指令的数量。 4. 如权利要求 1 所述的指令管理方法, 其特征在于, 还包括 : 在发送指令块前, 向各运 算核心发送预送。

4、查询请求, 基于各运算核心对所述预送查询请求做出的响应发送该指令块 中的指令, 所述预送查询请求包含预送的指令的信息。 5. 如权利要求 4 所述的指令管理方法, 其特征在于, 所述运算核心对所述预送查询请 求做出的响应包括 : 指令接收响应、 指令放弃响应和指令冲突响应 ; 所述基于各运算核心 对所述预送查询请求做出的响应发送该指令块中的指令包括 : 若所有运算核心做出的响应不包括指令冲突响应, 则向发出接收指令响应的运算核心 发送所述预送的指令 ; 若所有运算核心做出的响应仅包括指令放弃响应, 则放弃向各运算核心发送所述预送 的指令 ; 若所有运算核心做出的响应包括指令冲突响应, 则等待做。

5、出指令冲突响应的运算核心 再次做出响应, 直至所有运算核心做出的响应不包括指令冲突响应。 6. 如权利要求 4 所述的指令管理方法, 其特征在于, 所述运算核心对所述预送查询请 求做出的响应包括 : 即时接收响应、 延迟接收响应、 指令放弃响应和指令冲突响应 ; 所述基 于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令包括 : 若所有运算核心做出的响应不包括指令冲突响应和延迟接收响应, 则向发出即时接收 响应的运算核心发送所述预送的指令 ; 若所有运算核心做出的响应仅包括指令放弃响应, 则放弃向各运算核心发送所述预送 的指令 ; 若所有运算核心做出的响应包括指令冲突响应和 / 或延。

6、迟接收响应, 则等待做出指令 冲突响应的运算核心再次做出响应, 以及等待做出延迟接收响应的运算核心做出即时接收 响应, 直至所有运算核心做出的响应不包括指令冲突响应和延迟接收响应。 7. 如权利要求 4 所述的指令管理方法, 其特征在于, 所述指令块存储在指令存储器中, 所述基于所述运算核心对所述预送查询请求做出的响应发送该指令块中的指令包括 : 基于 所述运算核心对所述预送查询请求做出的响应控制指令存储器向运算核心发送该指令块 中的指令。 8. 如权利要求 1 所述的指令管理方法, 其特征在于, 还包括 : 获取所述运算核心发出的 停止响应后, 停止向全部运算核心发送指令块。 9. 如权利要。

7、求 8 所述的指令管理方法, 其特征在于, 还包括 : 获取所述运算核心发出的 停止响应后, 再次获取该运算核心发出的重新接收响应, 并重新向全部运算核心发送指令 块。 权 利 要 求 书 CN 103377085 A 2 2/3 页 3 10. 如权利要求 1 所述的指令管理方法, 其特征在于, 还包括将所述程序的执行顺序保 存在所述运算核心中。 11. 如权利要求 1 所述的指令管理方法, 其特征在于, 通过广播或多播的方式向所述运 算核心发送所述指令块。 12. 一种指令管理装置, 其特征在于, 包括 : 反馈单元, 用以发出指令块发送信号, 所述指令块按照程序的执行顺序将所述程序划 分。

8、得到。 13. 如权利要求 12 所述的指令管理装置, 其特征在于, 还包括 : 预送查询单元, 用以在发送指令块的指令前, 向各运算核心发送预送查询请求, 所述预 送查询请求包含预送的指令的信息 ; 所述反馈单元还用以基于各运算核心对所述预送查询请求做出的响应, 发出发送指令 消息。 14. 如权利要求 13 所述的指令管理装置, 其特征在于, 还包括指令存储器, 用以存储所 述指令块, 所述指令存储器从所述反馈单元获取所述发送指令消息后, 按照执行顺序发送 指令块至至少一个运算核心。 15. 如权利要求 14 所述的指令管理装置, 其特征在于, 所述指令存储器按照约定粒度 向所述运算核心发。

9、送该指令块的指令, 所述约定粒度为每次预送的指令的数量。 16. 如权利要求 15 所述的指令管理装置, 其特征在于, 所述指令存储器通过广播或多 播的方式向所述运算核心发送所述指令块的指令。 17. 如权利要求 13 所述的指令管理装置, 其特征在于, 若所有运算核心做出的响应不 包括指令冲突响应, 则所述反馈单元做出向发出接收指令响应的运算核心发送所述预送的 指令的反馈 ; 若所有运算核心做出的响应包括指令冲突响应, 则所述反馈单元做出等待指 令冲突响应的运算核心再次做出响应, 直至所有运算核心做出的响应不包括指令冲突响应 的反馈。 18. 如权利要求 13 所述的指令管理装置, 其特征在。

10、于, 若所有运算核心做出的响应不 包括指令冲突响应和延迟接收响应, 则所述反馈单元做出向发出即时接收响应的运算核心 发送所述预送的指令的反馈 ; 若所有运算核心做出的响应包括指令冲突响应和 / 或延迟接 收响应, 则所述反馈单元做出等待做出指令冲突响应的运算核心再次做出响应, 以及等待 做出延迟接收响应的运算核心做出即时接收响应, 直至所有运算核心做出的响应不包括指 令冲突响应和延迟接收响应的反馈。 19. 如权利要求 12 所述的指令管理装置, 其特征在于, 还包括划块单元, 用以按照程序 的执行顺序将所述程序划分为所述指令块。 20. 如权利要求 12 所述的指令管理装置, 其特征在于, 。

11、所述反馈单元还用以在获取所 述运算核心发出的停止响应后, 停止发出所述指令块发送信号。 21. 如权利要求 20 所述的指令管理装置, 其特征在于, 所述反馈单元还用以在获取所 述运算核心发出的停止响应后, 再次获取该运算核心发出的重新接收响应后, 重新发出所 述指令块发送信号。 22. 一种运算核心, 其特征在于, 包括 : 指令存储单元, 用以接收并储存指令块的指令, 所述指令块为预送的 ; 权 利 要 求 书 CN 103377085 A 3 3/3 页 4 运算单元, 用以运行所述指令存储单元储存的指令。 23. 如权利要求 22 所述的运算核心, 其特征在于, 还包括 : 指令传输处。

12、理单元, 用以基于当前运行的指令块、 所述指令存储单元中存储的指令块 和权利要求 13 所述的指令管理装置发出的预送查询请求, 做出对所述预送查询请求的响 应。 24. 如权利要求 23 所述的运算核心, 其特征在于, 若预送的指令覆盖所述运算核心正 在运行的指令和 / 或覆盖已经存储但还未执行的指令, 则该运算核心的指令传输处理单元 做出指令冲突响应 ; 若预送的指令为所述运算核心需要的指令, 则该运算核心的指令传输 处理单元做出指令接收响应 ; 若预送的指令在所述运算核心中已经存储, 则该运算核心的 指令传输处理单元做出指令放弃响应。 25. 如权利要求 23 所述的运算核心, 其特征在于。

13、, 若预送的指令为所述运算核心的运 算单元需要的指令且该运算核心的指令存储单元具有足够的存储空间存储所述预送的指 令, 则该运算核心的指令传输处理单元做出即时接收响应 ; 若预送的指令为所述运算核心 的运算单元需要的指令但该运算核心的指令存储单元没有足够的存储空间存储所述预送 的指令, 则该运算核心的指令传输处理单元做出延迟接收响应。 26. 如权利要求 23 所述的运算核心, 其特征在于, 所述指令传输处理单元发出所述延 迟接收响应后, 经过延迟时间, 再发出即时接收响应。 27. 如权利要求 24 或 25 所述的运算核心, 其特征在于, 所述指令传输处理单元发出指 令冲突响应后, 在冲突。

14、解除后, 再次做出响应。 28. 如权利要求 27 所述的运算核心, 其特征在于, 所述冲突包括所述预送的指令覆盖 所述运算核心的运算单元正在运行的指令和 / 或覆盖已经存储但还未执行的指令。 29. 如权利要求 22 所述的运算核心, 其特征在于, 所述指令存储单元还用以发出停止 响应, 所述指令存储单元发出所述停止响应后, 停止接收预送的指令块。 30. 如权利要求 22 所述的运算核心, 其特征在于, 所述指令存储单元还用以在发出停 止响应后, 再次发送重新接收响应, 所述指令存储单元发出所述重新接收响应后, 重新接收 预送的指令块。 31. 如权利要求 22 所述的运算核心, 其特征在。

15、于, 所述指令存储单元还用以保存所述 指令块的执行顺序。 32.如权利要求22所述的运算核心, 其特征在于, 还包括权利要求12至21任一项所述 的指令管理装置。 33. 一种指令管理系统, 其特征在于, 包括 : 权利要求 12 至 21 任一项所述的指令管理装置 ; 权利要求 22 至 31 任一项所述的运算核心。 34. 一种指令管理系统, 其特征在于, 包括 : 权利要求 22 至 31 任一项所述的运算核心 ; 权利要求 32 所述的运算核心。 权 利 要 求 书 CN 103377085 A 4 1/19 页 5 指令管理方法及装置、 指令管理系统、 运算核心 技术领域 0001 。

16、本发明涉及指令管理技术领域, 尤其是一种指令管理方法及装置、 指令管理系统 和一种运算核心。 背景技术 0002 在通用处理器中, 通常采用分级的指令存储结构, 也就是, 指令存储在不同级别的 存储介质中。运算核心 ( 处理器的组成器件, 每个运算核心可以看成是一个小的处理器 ) 在运行时从本地存储器中获得指令, 由于运算核心本地的存储器容量有限, 容易产生取指 失败的情况, 也就是说, 若运算核心中未存储将要运行的指令, 运算核心需要从上一级指令 存储器获得指令后才能继续运行, 取指失败也称为指令脱靶。在采用分级的指令存储结构 情况下, 从上一级指令存储器中获得指令会耗费大量的时间, 若频繁。

17、的发生取指失败, 会增 加指令传输的耗时, 降低运算核心的工作效率。 0003 多核、 众核处理器中, 单硅片上集成多个运算核心。由于运算核心数量多, 每个运 算核心内的指令存储器容量小, 对共享的上一级指令存储器的取指竞争冲突会增多, 运算 核心间的取指竞争问题逐渐凸显出来。尤其当单硅片上的运算核心数增加到几十、 几百个 时, 传统的取指处理方式使运算核心取指延迟的情况明显增加。 同时, 取指竞争还会导致通 信网络拥塞, 这会成为制约运算核心的性能和适应面的瓶颈。 0004 目 前 处 理 器 中 比 较 常 用 的 指 令 处 理 技 术 包 括 SIMD(Single Instructi。

18、on Multiple Data, 单指令多数据流 ) 技术和 SPMD(Single Programe Multiple Data, 单程序 多数据流 ) 技术。 0005 多核处理器中采用的 SIMD、 SPMD 等技术统一指令需求, 这在一定程度上能够降低 指令需求。 0006 在多核处理器中采用SIMD技术, 主要是指多个运算核心(或运算核心内的多条流 水线 ) 共享同一个指令发射站台, 同步运行相同的指令, 但运算核心处理的数据各不相同。 0007 在多核处理器中采用 SPMD 技术, 主要是指每个运算核心执行相同的程序代码, 每 个运算核心运行的程序相同, 但处理的数据各不相同。 。

19、0008 SIMD 技术的优势是要求每个运算核心共享指令发射单元, 每条指令都同步执行, 这防止了取指竞争, 能够减轻多核心聚集的取指操作对通信网络的拥塞。 0009 SPMD 技术的优势是放宽了对运算核心间的同步要求, 将各运算核心间的同步粒度 提高到独立的程序级, 在程序范围内各运算核心能够自主运行。 0010 以上这些技术从减少取指操作源头、 减少程序代码种类的角度, 都能在一定程度 上降低取指冲突和减小取指延迟。 0011 但是 SIMD 技术要求每个运算核心的每条指令都要同步执行, 运算核心的资源通 常难以得到充分利用, 无法发挥所有运算核心的计算能力, 限制了该技术的适用范围。 0。

20、012 多核、 众核处理器中, 随着运算核心数量增长, 运算核心内的存储器容量小, 如果 SPMD 程序量大于运算核心内的存储器容量, 取指脱靶还是会导致频繁的取指操作, 引起取 说 明 书 CN 103377085 A 5 2/19 页 6 指操作冲突加剧, 通信网络拥塞严重, 运算核心的取指等待时间较长, 对发挥运算核心的计 算效率有较大影响。因此, 在多核、 众核处理器中, 运算核心内的存储器容量限制了 SPMD 技 术的适用范围。 0013 公开号为 CN 1466716A 的中国专利中的方法只可以为一个处理器提供指令预取 服务, 不适于多核、 众核处理器的处理器结构。 另一方面, 该。

21、专利中用于预取指令的方法, 对 每个计算核心需要额外的辅助处理器, 用于执行程序的简化版本, 硬件开销较大。 0014 如何有效减少运算核心的指令脱靶和等待延迟, 提高运算核心的计算效率成为目 前亟待解决的问题之一。 发明内容 0015 本发明解决的问题是如何有效减少运算核心的指令脱靶和等待延迟, 提高运算核 心的计算效率。 0016 为解决上述问题, 本发明提供了一种指令管理方法, 包括 : 0017 按照程序的执行顺序将所述程序划分为指令块 ; 0018 按照执行顺序发送指令块至至少一个运算核心。 0019 为解决上述问题, 本发明还提供了一种指令管理装置, 包括 : 0020 反馈单元,。

22、 用以发出指令块发送信号, 所述指令块按照程序的执行顺序将所述程 序划分得到。 0021 为解决上述问题, 本发明还提供了一种运算核心, 包括 : 0022 指令存储单元, 用以接收并储存指令块的指令, 所述指令块为预送的 ; 0023 运算单元, 用以运行所述指令存储单元储存的指令。 0024 为解决上述问题, 本发明还提供了一种指令管理系统, 包括 : 0025 如上所述的指令管理装置 ; 0026 如上所述的运算核心。 0027 为解决上述问题, 本发明还提供了一种指令管理系统, 包括 : 0028 如上所述的运算核心。 0029 与现有技术相比, 本发明具有以下优点 : 0030 采用。

23、软硬件相结合的方法, 软件根据程序的执行轨迹, 将指令代码划分为一系列 指令块序列, 软件保证每个运算核心指令的指令块轨迹一致。硬件按照软件划分出来的指 令块序列信息, 将运算核心所需指令送入运算核心的指令存储器中。由于程序指令轨迹提 前可知, 可以在运算核心真正执行指令之前, 将指令主动提前载入运算核心的存储器中。 0031 将程序切分为小的指令块, 将指令块中的指令预送至运算核心, 运算核心可在运 行前获得指令。这使得指令的预送与计算核心运行相对独立, 各运算核心可以在不影响正 在执行的指令同时接受其他预送的指令, 降低运算核心取指等待的时间, 提高运算核心的 运算效率。 0032 预先向。

24、运算核心发送指令块的指令, 各运算核心不再主动发出取指请求, 能够消 除运算核心取指竞争, 还能够减少对通信网络的占用, 有利于进一步提高运算核心的运算 效率。 0033 指令组织成容量可变的指令块, 每个运算核心执行的指令超块轨迹相同, 但允许 说 明 书 CN 103377085 A 6 3/19 页 7 每个运算核心在指令块内的执行轨迹各不相同。 也就是说, 各运算核心的执行速度不同, 基 于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令, 可以平衡各运算核 心之间的运行速度的差异。这使得各运算核心运行速度差异在可控范围内, 但是未强制各 运算核心同步运行指令。这种以预送指令。

25、为手段的控制方式是一种松散的同步机制, 即通 过发送预送查询请求, 基于运算核心的响应控制指令的预先发送的节奏, 平衡运行速度快 的运算核心与运行速度慢的运算核心之间的速度差异。也就是说, 使运行最快的运算核心 不会超过运行最慢的核心太多, 若运行快的运算核心将要运行的指令会覆盖运行慢的运算 核心的正在运行的指令块时, 运行慢的运算核心发出指令冲突响应, 暂停向所有运算核心 发送指令的工作。本发明的技术方案允许各运算核心的速度存在一定差异, 指令预送过程 中对运算核心的干扰少, 因此适用的范围更广。 0034 以多播、 广播的指令预送方式, 对多核、 众核结构尤其适用, 能够减少运算核心间 的。

26、取指竞争, 以及减少指令传输对通信网络的拥塞时间, 提高片上通信网络利用效率。 0035 本发明的技术方案是一种基于松散同步的指令预送机制, 解决了单核、 多核、 众核 处理器中计算核心取指延迟长的问题和多核、 众核处理器中的取指竞争问题, 提高了处理 器的运算效率。 附图说明 0036 图 1 是本发明实施例提供的指令管理方法的流程图 ; 0037 图 2 是本发明实施例提供的指令管理装置 ; 0038 图 3 是本发明实施例提供的运算核心 ; 0039 图 4 是本发明实施例提供的指令存储器与运算核心存储指令块的存储地址映射 关系的示意图 ; 0040 图 5 是本发明实施例提供的程序和指。

27、令块的示意图 ; 0041 图 6 是本发明实施例提供的指令块中的指令的示意图 ; 0042 图 7 是本发明实施例提供的指令管理系统。 具体实施方式 0043 为使本发明的上述目的、 特征和优点能够更为明显易懂, 下面结合附图对本发明 的具体实施方式做详细的说明。 0044 在以下描述中阐述了具体细节以便于充分理解本发明。 但是本发明能够以多种不 同于在此描述的其它方式来实施, 本领域技术人员可以在不违背本发明内涵的情况下做类 似推广。因此本发明不受下面公开的具体实施方式的限制。 0045 图 1 是本发明实施例提供的指令管理方法的流程图, 下面结合图 1 详细说明。 0046 所述指令管理。

28、方法包括 : 0047 步骤 S1, 按照程序的执行顺序将所述程序划分为指令块 ; 0048 步骤 S2, 按照执行顺序发送指令块至至少一个运算核心。 0049 所述指令管理方法还可以包括 : 0050 步骤 S3( 图 1 中未显示 ), 在发送指令块的指令前, 向各运算核心发送预送查询请 求, 基于各运算核心对所述预送查询请求做出的响应发送该指令块中的指令, 所述预送查 说 明 书 CN 103377085 A 7 4/19 页 8 询请求包含预送的指令的信息。 0051 具体实施中, 所述步骤 S1 中, 将程序按照执行顺序划分成指令块, 划分完成之后, 得到指令块的执行顺序, 也称为指。

29、令块执行轨迹。 0052 具体来讲, 指令块是第三方软件按照程序的执行顺序, 或者结合实际经验例如指 令的执行时间、 指令的调用次数等按照执行顺序划分得到的, 划分之后的指令块的执行顺 序与程序的执行顺序相同, 也就是指令块的执行轨迹与程序的执行顺序是一致的。所述程 序的执行顺序是指程序中指令的执行顺序。 0053 若程序中具有循环、 递归或者条件判断等程序时, 指令块的执行轨迹与程序的执 行顺序可以略有不同, 但是指令块中指令的执行顺序与程序的执行顺序相同。如表 1 所示。 例如, 程序中包含指令 1、 指令 2、 指令 3、 指令 4, 若指令 2 和指令 3 形成循环程序, 且循环的 次。

30、数为 2 次, 则程序的执行顺序为指令 1 指令 2 指令 3 指令 2 指令 3 指令 4 ; 将 程序划分为三个指令块, 指令块 1 包含指令 1, 指令块 2 包含指令 2 和指令 3, 指令块 3 包含 指令 4, 则指令块的执行轨迹为指令块 1 指令块 2 指令块 3。 0054 表 1 0055 0056 0057 上述举例中, 虽然指令块的执行顺序与程序的执行顺序略有不同, 两者本质是相 同的。指令块的执行顺序表示了指令块中包含的指令的执行顺序, 指令块的执行轨迹为指 令块 1 指令块 2 指令块 3, 指令块中的指令的执行顺序仍旧是指令 1 指令 2 指令 3 指令 2 指令 。

31、3 指令 4。因此指令块的执行轨迹与程序的执行顺序略有不同, 但是指 令块中指令的执行顺序与程序的执行顺序是相同的。 0058 将程序划分的指令块的数量可以为一个也可以为多个, 也就是说, 可以将程序划 分为多个指令块, 也可以整个一个程序作为一个指令块。每个指令块中包含一定数量的指 令, 每个指令块中包含的指令的数量可以为一条也可以是多条。 一般情况下, 指令块中包含 至少两条指令, 但也可以仅包含一条指令。 0059 运算核心包括接收并储存所述指令块的指令存储单元和运行所述指令存储单元 储存的指令块的运算单元, 所述指令块所占的空间小于或等于所述指令存储单元的存储空 间。所述程序的执行顺序。

32、通常还会保存在所述运算核心中。 0060 将程序划分为指令块时, 要求划分之后的指令块所占的空间小于或等于所述指令 说 明 书 CN 103377085 A 8 5/19 页 9 存储单元的存储空间。这可以保证运算核心可以保存至少一个完整的指令块。 0061 所述步骤 S2 中, 按照执行顺序发送指令块至至少一个运算核心, 直至将所有的指 令块发送完毕, 或者若获取所述运算核心发出的停止响应, 则停止向全部运算核心发送指 令块。 若获取所述运算核心发出的停止响应后, 再次获取该运算核心发出的重新接收响应, 则重新向全部运算核心发送指令块。 0062 运算核心内部出现异常时, 发出停止响应, 停。

33、止接收预送的指令块, 例如, 运算核 心的存储空间已满, 不能存储新的指令块时 ; 预送的指令块与运算核心当前正在执行的指 令块冲突时等。运算核心内部出现异常时, 发出停止响应, 若异常排除, 运算核心还可以再 次发送重新接收响应, 重新接收预送的指令块, 例如, 删除已执行过的指令块, 运算核心的 存储空间可以继续接收新的指令块时 ; 当前存储的指令块可以被后续预送的指令块覆盖 时。 0063 运算核心中运行的指令块是预送的, 因此按照执行顺序发送指令块, 可以保证运 算核心按照执行顺序执行指令块。 0064 根据程序的执行轨迹, 将指令代码划分为一系列指令块序列, 保证每个运算核心 指令的。

34、指令块轨迹一致。将运算核心所需指令送入运算核心的指令存储器中, 由于程序指 令轨迹提前可知, 因此可以在运算核心真正执行指令之前, 将指令主动提前载入运算核心 的存储器中。 0065 具体实施中, 在发送指令块时, 将指令块拆分成若干条指令, 按照约定粒度发送该 指令块的指令, 所述约定粒度为每次预送的指令的数量。通过广播或多播的方式向所述运 算核心发送所述指令块或指令, 可以提高发送速度, 从而提高工作效率。 0066 所述步骤 S3 中, 为保证运算核心可以正确收到指令块, 在发送指令块前, 向各运 算核心发送预送查询请求。如步骤 S2 中所述, 发送指令块时, 将所述指令块拆分成若干条 。

35、指令, 根据约定粒度发送指令块中的指令。因此每次按照约定粒度发送指令块中的指令之 前, 都会向所述运算核心发送预送查询请求。 0067 所述预送查询请求在每次按照约定粒度发送该指令块的指令前发送。 这保证了运 算核心可以提前正确地判断是否需要接收预送的指令, 对不需要指令的运算核心, 避免无 用的传输。 0068 将程序切分为小的指令块, 将指令块中的指令预送至运算核心, 运算核心可在运 行前获得指令。这使得指令的预送与计算核心运行相对独立, 各运算核心可以在不影响正 在执行的指令同时接受其他预送的指令, 降低运算核心取指等待的时间, 提高运算核心的 运算效率。 0069 基于各运算核心对所述。

36、预送查询请求做出的响应发送该指令块中的指令, 所述预 送查询请求包含预送的指令的信息。 所述预送查询请求主要是询问运算核心目前是否需要 新的指令。 0070 各运算核心不再主动发出取指请求, 能够消除运算核心取指竞争, 还能够减少对 通信网络的占用, 有利于进一步提高运算核心的运算效率。 0071 所述运算核心对所述预送查询请求做出的响应包括 : 指令接收响应、 指令放弃响 应和指令冲突响应 ; 其中指令接收响应分为 : 即时接收响应、 延迟接收响应。 0072 运算核心根据目前正在执行的指令、 预送的指令和已经存储但尚未执行的指令的 说 明 书 CN 103377085 A 9 6/19 页。

37、 10 信息, 判断是否需要接收预送的指令, 并做出响应, 具体来讲 : 0073 若预送的指令为所述运算核心需要的指令且该运算核心具有足够的存储空间存 储所述预送的指令, 则该运算核心做出即时接收响应 ; 若预送的指令为所述运算核心需要 的指令但该运算核心没有足够的存储空间存储所述预送的指令, 则该运算核心做出延迟接 收响应。 0074 若预送的指令覆盖所述运算核心正在运行的指令或覆盖已经存储但还未执行的 指令, 或者两种情况均存在, 则该运算核心做出指令冲突响应 ; 若预送的指令在所述运算核 心中已经存储, 则该运算核心做出指令放弃响应。 0075 所述基于各运算核心对所述预送查询请求做出。

38、的响应发送该指令块中的指令包 括 : 0076 若所有运算核心做出的响应不包括指令冲突响应, 则向发出接收指令响应的运算 核心发送所述预送的指令 ; 0077 若所有运算核心做出的响应仅包括指令放弃响应, 则放弃向各运算核心发送所述 预送的指令 ; 0078 若所有运算核心做出的响应包括指令冲突响应, 则等待做出指令冲突响应的运算 核心再次做出响应, 直至所有运算核心做出的响应不包括指令冲突响应。 0079 所述运算核心对所述预送查询请求做出的响应包括 : 即时接收响应、 延迟接收响 应、 指令放弃响应和指令冲突响应则 : 0080 若所有运算核心做出的响应不包括指令冲突响应和延迟接收响应, 。

39、则向发出即时 接收响应的运算核心发送所述预送的指令 ; 0081 若所有运算核心做出的响应仅包括指令放弃响应, 则放弃向各运算核心发送所述 预送的指令 ; 0082 若所有运算核心做出的响应包括指令冲突响应或延迟接收响应, 或者两种情况均 存在, 则等待做出指令冲突响应的运算核心再次做出响应, 以及等待做出延迟接收响应的 运算核心做出即时接收响应, 直至所有运算核心做出的响应不包括指令冲突响应和延迟接 收响应。 0083 也就是说, 只有当运算核心做出的响应只包括即时接收响应和指令放弃响应时, 才会向做出即时接收响应的运算核心发送预送的指令, 且只会向做出即时接收响应的运算 核心发送预送的指令。

40、, 而不会向做出指令放弃响应的运算核心发送预送的指令。这是为了 保证需要指令的运算核心可以获得需要的指令, 不需要指令的运算核心避免重复接收, 减 小通信资源的浪费。 0084 如果运算核心做出的响应中包含指令冲突响应或延迟接收响应, 或者两者都有, 则等待已经发送了指令冲突响应或延迟接收响应的运算核心再次发出响应, 并判断新的响 应是否是即时接收响应或者指令放弃响应, 若两者皆不是, 则继续等, 直到接收的响应只包 括即时接收响应和指令放弃响应时, 向做出即时接收响应的运算核心发送预送的指令。 0085 运算核心在执行指令块的过程中, 由于各运算核心的启动时间可能不一致, 各运 算核心运行的。

41、数据也不尽相同, 因此各运算核心的执行速度经常出现差异, 通过所述指令 管理方法可以使执行速度快的运算核心等待执行速度慢的运算核心。 0086 由于各运算核心的执行速度不同, 运行速度快的运算核心可能已经执行完所有其 说 明 书 CN 103377085 A 10 7/19 页 11 存储的指令, 等待后续发送的指令, 而运行速度慢的运算核心, 可能还未执行完其存储的指 令。由于运算核心的存储空间有限, 因此其中存储的指令是不断被后续发送的指令所更新 替代的。 若运行速度慢的运算核心存储空间已满, 且存储的指令为未执行的指令, 则该运算 核心无法接收后续发送的指令, 该运算核心对预送查询请求的。

42、响应为指令冲突响应或延迟 接收响应。 运行速度快的运算核心, 由于已经执行完所有其存储的指令, 则该运算核心对预 送查询请求的响应为即时接收响应。 0087 由于只有当运算核心做出的响应只包括即时接收响应和指令放弃响应时, 才会向 做出即时接收响应的运算核心发送预送的指令, 因此运行速度慢的运算核心发出指令冲突 响应或延迟接收响应后, 暂停向所有的运算核心发送指令的工作。此时执行速度快的运算 核心也无法收到后续的指令, 只能等待运算核心再次发出即时接收响应或指令放弃响应 后, 才能恢复后续指令的发送, 运行速度快的运算核心才能接收后续的指令。另外, 若运行 速度慢的运算核心再次发送的响应为延迟。

43、接收响应, 则依旧需要等待直至运行速度慢的运 算核心发出即时接收响应或指令放弃响应, 才能恢复后续指令的发送, 运行速度快的运算 核心才能接收后续的指令。 0088 基于上述内容, 由于运行速度慢的运算核心做出指令冲突响应或延迟接收响应, 这将导致后续发送指令的工作暂停, 等待直至运行速度慢的运算核心发送即时接收响应或 指令放弃响应才能恢复。这样的机制能够允许各运算核心间可以存在一定运行差异, 当这 种差异过大时该机制一方面可以平衡各运算核心之间的速度差异, 同时也起到了控制程序 执行节奏的作用。 0089 图 2 是本发明实施例提供的指令管理装置, 包括 : 0090 反馈单元 12, 用以。

44、发出指令块发送信号, 所述指令块按照程序的执行顺序将所述 程序划分得到。 0091 反馈单元 12 还用以在获取所述运算核心发出的停止响应后, 停止发出所述指令 块发送信号。所述反馈单元 12 还用以在获取所述运算核心发出的停止响应后, 再次获取该 运算核心发出的重新接收响应后, 重新发出所述指令块发送信号。 0092 划分好的指令块可以存储在独立存储器中, 反馈单元 12 发出指令块发送信号后, 由独立存储器向运算核心发送指令块。 0093 所述指令管理装置也可以设置内置的指令存储器 13( 图 2 所示 ), 指令存储器 13 与反馈单元 12 相连, 用以存储所述指令块, 所述指令存储器。

45、 13 获取所述反馈单元 12 发出 的所述指令块发送信号后, 按照执行顺序发送指令块至至少一个运算核心。 0094 所述指令管理装置还可以包括 : 0095 预送查询单元 11, 用以在发送指令块的指令前, 向各运算核心发送预送查询请求, 所述预送查询请求包含预送的指令的信息, 所述指令块按照程序的执行顺序将所述程序划 分得到 ; 0096 所述反馈单元 12 还用以基于各运算核心对所述预送查询请求做出的响应, 做出 发送指令消息 ; 反馈单元 12 与预送查询单元 11 相连, 从预送查询单元 11 获取预送查询请 求, 反馈单元 12 根据获取的预送查询请求, 在获取的响应中查找对应的响。

46、应 ; 0097 指令存储器 13 还可以从反馈单元 12 获取所述发送指令消息, 按照执行顺序发送 指令块至至少一个运算核心 ; 指令存储器 13 与反馈单元 12 连接, 从反馈单元 12 处获取向 说 明 书 CN 103377085 A 11 8/19 页 12 运算核心发送指令的消息, 也称取指请求。 0098 指令存储器 13 按照约定粒度向所述运算核心发送该指令块的指令, 所述约定粒 度为每次预送的指令的数量。指令存储器 13 通过广播或多播的方式向所述运算核心发送 所述指令块的指令。 0099 所述指令管理装置还包括划块单元 ( 图中未显示 ), 用以按照程序的执行顺序将 所述。

47、程序划分为所述指令块。 0100 在具体实施中, 反馈单元 12 针对运算核心的响应做出不同的反馈, 可以是 : 0101 若所有运算核心做出的响应不包括指令冲突响应, 则所述反馈单元 12 做出向发 出接收指令响应的运算核心发送所述预送的指令的反馈 ; 若所有运算核心做出的响应包括 指令冲突响应, 则所述反馈单元 12 做出等待指令冲突响应的运算核心再次做出响应, 直至 所有运算核心做出的响应不包括指令冲突响应的反馈。 0102 还可以是 : 若所有运算核心做出的响应不包括指令冲突响应和延迟接收响应, 则 所述反馈单元 12 做出向发出即时接收响应的运算核心发送所述预送的指令的反馈 ; 若所。

48、 有运算核心做出的响应包括指令冲突响应和/或延迟接收响应, 则所述反馈单元12做出等 待做出指令冲突响应的运算核心再次做出响应, 以及等待做出延迟接收响应的运算核心做 出即时接收响应, 直至所有运算核心做出的响应不包括指令冲突响应和延迟接收响应的反 馈。 0103 指令管理装置可以作为独立的装置与运算核心配合工作, 也可以集成在运算核心 中。 0104 图 3 是本发明实施例提供的运算核心, 包括 : 0105 指令存储单元 21, 用以接收并储存指令块的指令 ; 0106 运算单元 22, 用以运行指令存储单元 21 储存的指令块 ; 运算单元 22 与指令存储 单元 21 相连, 从指令存。

49、储单元 21 处获取指令后运行 ; 0107 所述运算核心还可以包括 : 0108 指令传输处理单元 23, 用以基于当前运行的指令块、 指令存储单元 21 中存储的指 令块和指令管理装置发出的预送查询请求, 做出对所述预送查询请求的响应 ; 指令传输处 理单元 23 与指令存储单元 21 相连, 指令传输处理单元 23 还与运算单元 22 相连, 指令传输 处理单元 23 从指令存储单元 21 获取已经储存的指令的信息, 包括 : 哪些指令已经执行, 哪 些指令还未执行 ; 指令传输处理单元23从运算单元22获取正在执行的指令块的信息, 包括 正在执行的指令块的存储位置。 0109 具体来讲, 所述预送查询请求包含预送的指令在指令存储器中的存储地址, 以及 预送的指令所属的指令块的第一条指令在指令存储单元 21 中的存储地址。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1