指令调度方法、装置、设备及存储介质与流程

未命名 09-07 阅读:92 评论:0


1.本技术涉及但不限于计算机通信技术领域,尤其涉及一种指令调度方法、装置、设备及存储介质。


背景技术:

2.当前,在多处理器系统中,片上网络带宽成了限制计算机系统运算能力提升的重要因素。芯片内各功能部件之间通过总线进行数据传输,受成本与工艺的制约,总线存在最大负载限制,不能无限扩大,那么如何高效利用总线以充分发挥多处理器系统的性能,成为一个研究的热点问题,具有重要的工程与研究价值。


技术实现要素:

3.有鉴于此,本技术实施例至少提供一种指令调度方法、装置、设备、存储介质。
4.本技术实施例的技术方案是这样实现的:一方面,本技术实施例提供一种指令调度方法,所述方法包括:获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信;基于所述负载信息与预设的负载阈值的比对结果,生成所述比对结果对应的指令调度事件;响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令;其中,所述指令调度事件用于调整所述多个指令中非内存访问指令和内存访问指令之间的相对执行顺序;所述内存访问指令用于通过所述片上网络访问所述片外内存。
5.在一些实施例中,所述比对结果包括所述负载信息大于所述负载阈值的第一结果,所述指令调度事件包括所述第一结果对应的第一调度事件;所述响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令,包括:响应于所述第一调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的非内存访问指令。
6.在一些实施例中,所述比对结果包括所述负载信息小于所述负载阈值的第二结果,所述指令调度事件包括所述第二结果对应的第二调度事件;所述响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令,包括:响应于所述第二调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的内存访问指令。
7.在一些实施例中,所述处理器中设置有指令队列,所述指令队列包括以下至少之一:非内存访问指令队列和内存访问指令队列;其中,所述非内存访问指令队列用于存储所述多个指令中的非内存访问指令,所述内存访问指令队列用于存储所述多个指令中的内存访问指令;所述多个指令对应的预设执行顺序与所述多个指令在所述指令队列中的排列顺序相关。
8.在一些实施例中,所述执行所述至少一个待执行指令中的非内存访问指令,包括:从所述处理器中非内存访问指令队列中每一非内存访问指令中,确定可执行的非内存访问指令 ;执行所述可执行的非内存访问指令。
9.在一些实施例中,所述方法还包括:在所述处理器中非内存访问指令队列中不存在可执行的非内存访问指令的情况下,基于所述预设执行顺序执行所述至少一个待执行指令。
10.在一些实施例中,所述对所述处理器未执行的多个指令对应的预设执行顺序进行调整,包括:按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令;响应于所述至少一个待执行指令满足调度条件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整;其中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。
11.在一些实施例中,所述获取片上网络的负载信息,包括:按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令;响应于所述至少一个待执行指令满足调度条件,获取所述片上网络的负载信息;其中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。
12.在一些实施例中,所述方法还包括:响应于所述至少一个待执行指令不满足调度条件,基于所述预设执行顺序执行所述至少一个待执行指令。
13.在一些实施例中,所述方法还包括:在所述负载信息未超过预设的负载阈值的情况下,按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令并执行。
14.在一些实施例中,所述负载信息为所述处理器通过所述片上网络从负载获取装置中获取。
15.在一些实施例中,所述获取片上网络的负载信息,包括以下任意之一:接收负载获取装置通过所述片上网络发送的负载信息;通过所述片上网络向负载获取装置发送负载获取请求,接收所述负载获取装置响应于所述负载获取请求通过所述片上网络发送的负载信息。
16.在一些实施例中,所述负载信息包括以下至少之一:片上网络带宽、片上网络带宽使用率、对片外内存的访问请求数量。
17.在一些实施例中,所述负载信息包括片上网络带宽使用率;所述负载信息通过采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述采样时间段内支持的最大数据量确定。
18.在一些实施例中,所述方法还包括:通过所述片上网络向所述负载获取装置发送采样调整指令;所述采样调整指令用于更新所述采样时间段;响应于所述采样调整指令,所述负载获取装置用于基于更新后的采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述更新后的采样时间段内支持的最大数据量确定所述负载信息。
19.在一些实施例中,所述负载获取装置包括计数器和除法器;其中,所述计数器用于统计采样时间段内所述片上网络传输的实时数据量,所述除法器用于从所述计数器中读取所述采样时间段内所述片上网络传输的实时数据量,并基于所述采样时间段对所述实时数据量进行除法运算,得到所述片上网络带宽使用率。
20.在一些实施例中,所述负载获取装置设置于所述片上网络或所述片外内存。
21.另一方面,本技术实施例提供一种指令调度装置,其特征在于,设置于处理器中,所述装置包括:获取模块,用于获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信;调度模块,用于在所述负载信息超过预设的负载阈值的情况下,生成优先级调整事件;响应于所述优先级调整事件,对所述处理器未执行的多个指令进行调度;其中,所述优先级调整事件用于指示所述处理器执行以下至少之一:提升所述多个指令中非内存访问指令的执行优先级、降低所述多个指令中内存访问指令的执行优先级;所述内存访问指令用于通过所述片上网络访问所述片外内存。
22.再一方面,本技术实施例提供一种计算机设备,包括存储器、片外内存和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述片外内存、所述存储器和所述处理器通过片上网络通信;所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
23.又一方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
24.本技术实施例中,通过noc的负载感知,对处理器未执行的多个指令进行调令,可以有效调整noc负载,以减少短周期的负载峰值/高负载持续时间;另外,通过在处理器与片外内存之间的带宽压力较大的情况下,优先执行不需要占用带宽的非内存访问指令,在处理器与片外内存之间的带宽压力较小的情况下,优先执行需要占用带宽的非内存访问指令,这样,得到的更平滑的负载曲线将使访问片外内存的访问路径保持在一个更稳定的状态,即,可以使访问路径在大多数时间处于更低的电压和频率,减少系统功耗。
25.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本技术的技术方案。
附图说明
26.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本技术的实施例,并与说明书一起用于说明本技术的技术方案。
27.图1为本技术实施例提供的一种指令调度方法的实现流程示意图一;图2a为本技术实施例提供的一种指令调度方法的实现流程示意图二;图2b为本技术实施例提供的一种指令调度方法的实现流程示意图三;图3为本技术实施例提供的一种指令调度方法的实现流程示意图四;图4为本技术实施例提供的一种指令调度方法的实现流程示意图五;图5为本技术实施例提供的一种指令调度方法的实现流程示意图六;图6为本技术实施例提供的一种指令调度方法的实现流程示意图七;图7为本技术实施例提供的一种指令调度方法的实现流程示意图八;图8a为本技术实施例提供的一种计算机设备的架构示意图一;图8b为本技术实施例提供的另一种计算机设备的架构示意图二;图9为本技术实施例提供的一种指令调度方法的实现流程示意图九;图10为本技术实施例提供的一种指令调度装置的组成结构示意图;图11为本技术实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
28.为了使本技术的目的、技术方案和优点更加清楚,下面结合附图和实施例对本技术的技术方案进一步详细阐述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
29.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
30.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术的目的,不是旨在限制本技术。
31.(1)片上网络(network-on-chip,noc),noc是相对于片上系统通讯架构(system on chip,soc)的新一代片上互连技术,用于实现芯片上各个部件之间的通信,比如cpu和存储器之间。noc相比soc自身的特性包括易扩展、较高的通信效率、功耗较低、数据传输可靠性较高。
32.(2)末级缓存(last level cache,llc),cache是存储器子系统的组成部分,存放指令经常使用的指令和数据,是快设备为了访问慢设备的预留缓冲区(buffer),从而在掩盖访问延时的同时尽可能提高数据传输效率。llc,有又称l3,是cache的一种,主要特点是可以多核共享。
33.(3)双倍速率同步动态随机存储器(double data rate sdram,ddr sdram),在同一个时钟周期内传输两次数据,能够在上升期还下降期各传输一次数据,有较高的数据传输效率,以下简称为ddr。
34.(4)超大规模集成电路(very large scale integrated circuits,lsi),一块芯片上集成的元件数超过10万个,或门电路数超过万门的集成电路。
35.本技术实施例提供一种指令调度方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。
36.其中,该处理器作为通用的处理器,执行包括但不限于数据搬运、非线性计算等基本控制。根据实现方式的不同,处理器可以是中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specificintegrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。
37.图1为本技术实施例提供的一种指令调度方法的实现流程示意图一,如图1所示,该方法包括如下步骤s101至步骤s103:步骤s101、获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信。
38.在一些实施例中,该片外内存可以包括末级缓存(last level cache,llc)和ddr(double data rate sdram,双倍速率的sdram),该llc的访问速率高于ddr的访问速率。
39.在一些实施例中,上述片上网络的负载信息主要受以下因素影响:处理器通过该片上网络向片外内存存储数据、处理器通过该片上网络从片外内存读取数据、处理器通过该片上网络向片外内存或片上网络的其他模块发送控制命令、处理器通过该片上网络接收片外内存或片上网络的其他模块发送的反馈消息、基于片上网络中其他组件通过片上网络的数据交互。
40.在一些实施例中,所述负载信息包括以下至少之一:片上网络带宽、片上网络带宽使用率、对片外内存的访问请求数量。其中,片上网络带宽为片上网络在单位时间(一般指的是1秒钟)内实际传输的数据量;片上网络带宽使用率为片上网络带宽与最大网络带宽之间的比值,最大网络带宽可以为单位时间内可以传输的最大数据量;对片外内存的访问请求数量为处理器在单位时间内对片外内存访问的请求数量。
41.步骤s102、基于所述负载信息与预设的负载阈值的比对结果,生成所述比对结果对应的指令调度事件。
42.在一些实施例中,在该负载信息为片上网络带宽的情况下,该负载阈值为带宽阈值,该带宽阈值的大小与片上网络的硬件结构相关;在该负载信息为片上网络带宽使用率的情况下,该负载阈值为使用率阈值,一般设置为90%;在该负载信息为对片外内存的访问请求数量的情况下,可以设置为20。
43.在本技术实施例中,通过比对所述负载信息与预设的负载阈值,得到对应的比对
结果,基于比对结果生成对应的指令调度事件。其中,在负载信息大于所述负载阈值的情况下,可以生成第一结果及对应的第一调度事件;在负载信息小于所述负载阈值的情况下,可以生成第二结果对应的第二调度事件。其中,针对第一调度事件和第二调度事件,该第一调度事件用于表征所述处理器与片外内存之间的带宽压力较大,第二调度事件用于表征所述处理器与片外内存之间的带宽压力较小。
44.步骤s103、响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令。
45.在一些实施例中,所述指令调度事件用于调整所述多个指令中非内存访问指令和内存访问指令之间的相对执行顺序;所述内存访问指令用于通过所述片上网络访问所述片外内存。
46.在一些实施例中,该预设执行顺序可以基于各所述指令创建的时间确定,也可以基于各所述指令中的预计执行时间确定,还可以基于各所述指令对应的任务顺序确定,还可以基于同一任务下各指令的执行顺序确定。本技术实施例对此不作限定。
47.在本技术实施例中,该多个指令中包括非内存访问指令和内存访问指令,其中,该内存访问指令为需要通过片上网络访问片外内存的指令;相应地,该非内存访问指令为不需要通过片上网络访问片外内存的指令。基于上述实施例可知,针对负载信息和负载阈值之间的大小关系,可以生成不同的指令调度事件,进而可以基于不同的指令调度事件,变更上述多个指令中非内存访问指令和内存访问指令之间的相对执行顺序。
48.在一些实施例中,在生成第一结果及对应的第一调度事件的情况下,相对于该多个指令对应的预设执行顺序,该第一调度事件用于优先执行多个指令中的非内存访问指令。这样,可以在处理器与片外内存之间的带宽压力较大的情况下,优先执行不需要占用带宽的非内存访问指令,进而可以降低系统带宽压力的同时,从整体上保证指令的处理效率。
49.示例性的,若存在4个指令,且对应的预设执行顺序依次为:指令1、指令2、指令3、指令4。在指令1、指令2和指令4为内存访问指令,指令3为非内存访问指令的情况下,该第一调度事件用于优先执行多个指令中的非内存访问指令,即,相对于预设执行顺序,优先执行指令3。基于不同场景,调整后的执行顺序可以为:指令1、指令3、指令2、指令4;还可以为:指令3、指令1、指令2、指令4,可以看出,这两种方式相对于预设执行顺序,均优先执行了该指令3。
50.在一些实施例中,在生成第二结果及对应的第二调度事件的情况下,相对于该多个指令对应的预设执行顺序,该第二调度事件用于优先执行多个指令中的内存访问指令。这样,可以在处理器与片外内存之间的带宽压力较小的情况下,优先执行需要占用带宽的内存访问指令,减少了后续因内存访问指令堆积而造成的高负载现象。
51.示例性的,若存在4个指令,且对应的预设执行顺序依次为:指令1、指令2、指令3、指令4。在指令1、指令2和指令3为非内存访问指令,指令4为内存访问指令的情况下,该第二调度事件用于优先执行多个指令中的内存访问指令,即,相对于预设执行顺序,优先执行指令4。基于不同场景,调整后的执行顺序可以为:指令1、指令2、指令4、指令3;还可以为:指令1、指令4、指令2、指令3;还可以为:指令4、指令1、指令2、指令3。可以看出,这三种方式相对于预设执行顺序,均优先执行了该指令4。
52.本技术实施例中,通过noc的负载感知,对处理器未执行的多个指令进行调令,可
以有效调整noc负载,以减少短周期的负载峰值/高负载持续时间;另外,通过在处理器与片外内存之间的带宽压力较大的情况下,优先执行不需要占用带宽的非内存访问指令,在处理器与片外内存之间的带宽压力较小的情况下,优先执行需要占用带宽的非内存访问指令,这样,得到的更平滑的负载曲线将使访问片外内存的访问路径保持在一个更稳定的状态,即,可以使访问路径在大多数时间处于更低的电压和频率,减少系统功耗。
53.在一些实施例中,所述比对结果包括所述负载信息大于所述负载阈值的第一结果,所述指令调度事件包括所述第一结果对应的第一调度事件。请参阅图2a,其示出了本技术实施例提供的指令调度方法的一个可选的流程示意图二,该方法可以由计算机设备的处理器执行。基于图1,图1中的s102可以更新为s201,s103可以更新为s202,将结合图2a示出的步骤进行说明。
54.步骤s201、在所述负载信息大于所述负载阈值的情况下,生成第一调度事件;步骤s202、响应于所述第一调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的非内存访问指令。
55.其中,上述至少一个待执行指令为多个指令中的部分指令,即,在不考虑负载信息的情况下,处理器基于预设执行顺序,在当前时刻应该执行的指令。示例性的,在处理器存在2个空闲线程的情况下,可以从所有未执行的指令中确定2个待执行指令。
56.在一些实施例中,处理器可以获取每一待执行指令对应的指令类型,该指令类型用于确定当前待执行指令是否为内存访问指令。响应于该第一调度事件,先执行至少一个待执行指令中的非内存访问指令,在各非内存访问指令开始执行之后,再执行至少一个待执行指令中的内存访问指令。
57.基于上述实施例,通过在处理器与片外内存之间的带宽压力较大的情况下,先执行不需要占用带宽的非内存访问指令再执行内存访问指令,进而可以在带宽压力较大的时段降低系统带宽压力,同时也减少了对指令处理效率的影响。
58.在一些实施例中,所述比对结果包括所述负载信息小于所述负载阈值的第二结果,所述指令调度事件包括所述第二结果对应的第二调度事件。请参阅图2b,其示出了本技术实施例提供的指令调度方法的一个可选的流程示意图三,该方法可以由计算机设备的处理器执行。基于图1,图1中的s102可以更新为s203,s103可以更新为s204,将结合图2b示出的步骤进行说明。
59.步骤s203、在所述负载信息小于所述负载阈值的情况下,生成第二调度事件;步骤s204、响应于所述第二调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的内存访问指令。
60.在一些实施例中,处理器可以获取每一待执行指令对应的指令类型,该指令类型用于确定当前待执行指令是否为非内存访问指令。响应于该第二调度事件,先执行至少一个待执行指令中的内存访问指令,在各内存访问指令开始执行之后,再执行至少一个待执行指令中的非内存访问指令。
61.基于上述实施例,通过在处理器与片外内存之间的带宽压力较小的情况下,先执行需要占用带宽的内存访问指令再执行非内存访问指令,进而可以在带宽压力较小的时段
适当增加系统带宽,使得系统带宽曲线更加平滑,进而可以使访问片外内存的访问路径在大多数时间处于更低的电压和频率,减少系统功耗。
62.在一些实施例中,所述处理器设置有指令队列,该指令队列用于按照所述预设执行顺序存储所述多个指令,并通过标志位确定多个指令中各个指令的指令类型。在生成上述第一调度事件的情况下,可以基于非内存访问指令对应的标志位在该指令队列中依次取出非内存访问指令并执行,直至该指令队列中不存在非内存访问指令,从该指令队列中依次取出内存访问指令并执行。在生成上述第二调度事件的情况下,可以基于内存访问指令对应的标志位在该指令队列中依次取出内存访问指令并执行,直至该指令队列中不存在内存访问指令,从该指令队列中依次取出非内存访问指令并执行。
63.在一些实施例中,所述处理器中设置有指令队列,所述指令队列包括以下至少之一:非内存访问指令队列和内存访问指令队列。
64.在本技术实施例中,处理器中可以维护指令队列,该指令队列可以包括非内存访问指令队列;该指令队列可以包括非内存访问指令队列;该指令队列还可以同时包括非内存访问指令队列和内存访问指令队列。
65.其中,所述非内存访问指令队列用于存储所述多个指令中的非内存访问指令,所述内存访问指令队列用于存储所述多个指令中的内存访问指令;所述多个指令对应的预设执行顺序与所述多个指令在所述指令队列中的排列顺序相关。
66.示例性的,若存在8个指令,且对应的预设执行顺序依次为:指令1、指令2、指令3、指令4、指令5、指令6、指令7和指令8。在指令1、指令5和指令6为内存访问指令的情况下,上述内存访问指令队列中各个内存访问指令的顺序依次为:指令1、指令5和指令6;上述非内存访问指令队列中各个内存访问指令的顺序依次为:指令2、指令3、指令4、指令7和指令8。可以看出,内存访问指令在内存访问指令队列中的相对顺序与所述多个指令对应的预设执行顺序相同;非内存访问指令在非内存访问指令队列中的相对顺序与所述多个指令对应的预设执行顺序相同。
67.基于上述实施例,通过在处理器中维护非内存访问指令队列,进而可以通过该非内存访问指令队列依次存储所述多个指令中的非内存访问指令,在执行非内存访问指令的过程中,可以按照各个非内存访问指令在预设执行顺序中的顺序,进行各个非内存访问指令,在一定程度上保持了各非内存访问指令之间的相对顺序,降低了因调度指令顺序而造成的故障风险;相应地,通过在处理器中维护内存访问指令队列,进而可以通过该内存访问指令队列依次存储所述多个指令中的内存访问指令,在执行内存访问指令的过程中,可以按照各个内存访问指令在预设执行顺序中的顺序,进行各个内存访问指令,在一定程度上保持了各内存访问指令之间的相对顺序,降低了因调度指令顺序而造成的故障风险。
68.图3是本技术实施例提供的指令调度方法的一个可选的流程示意图四,该方法可以由计算机设备的处理器执行。基于图2a,图2a中的s202可以更新为s301至s302,将结合图3示出的步骤进行说明。
69.步骤s301、响应于所述第一调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,从所述处理器中非内存访问指令队列中每一非内存访问指令中,确定可执行的非内存访问指令。
70.在一些实施例中,该预设执行顺序可以基于各所述指令创建的时间确定,也可以
基于各所述指令中的预计执行时间确定,还可以基于各所述指令对应的任务顺序确定,还可以基于同一任务下各指令的执行顺序确定。本技术实施例对此不作限定。
71.在本技术实施例中,可以通过以下方式确定在每一非内存访问指令中是否存在可执行的非内存访问指令:针对每一所述非内存访问指令,在所述至少一个待执行指令中确定位于所述非内存访问指令之前的内存访问指令;判断所述非内存访问指令与所述非内存访问指令之前的内存访问指令之间的相关性,在非内存访问指令与所述非内存访问指令之前的内存访问指令不相关的情况下,将该非内存访问指令确定为可执行的非内存访问指令。
72.步骤s302、执行所述可执行的非内存访问指令。
73.可以理解的是,由于该可执行的非内存访问指令与至少一个待执行指令中位于其之前的内存访问指令均不相关,也就是说,该可执行的非内存访问指令的执行需要的数据已经存储与处理器内部,无需通过片上网络取片外内存中获取,因此,可以直接执行可执行的非内存访问指令。
74.在一些实施例中,所述s202还可以更新为步骤s303。
75.步骤s303、响应于所述优先级调整事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,在所述处理器中非内存访问指令队列中不存在可执行的非内存访问指令的情况下,基于所述预设执行顺序执行所述至少一个待执行指令。
76.在本技术实施例中,可以通过以下方式确定非内存访问指令队列中是否不存在可执行的非内存访问指令:针对每一所述非内存访问指令,在所述至少一个待执行指令中确定位于所述非内存访问指令之前的内存访问指令;判断所述非内存访问指令与所述非内存访问指令之前的内存访问指令之间的相关性,在非内存访问指令与所述非内存访问指令之前的任意一个内存访问指令相关的情况下,将该非内存访问指令确定为不可执行的非内存访问指令。相应地,在非内存访问指令队列中不存在可执行的非内存访问指令的情况下,基于所述预设执行顺序执行所述至少一个待执行指令。
77.基于上述实施例,通过判断非内存访问指令队列中各个非内存访问指令的可执行性,进而确定是否优先执行该非内存访问指令,这样,可以优先对无需通过片上网络取片外内存中获取待处理数据的非内存访问指令进行处理;同时,还可以避免由于非内存访问指令需要的待处理数据还未存储于处理器中,优先处理该不可执行的非内存访问指令导致的进程卡死的情况。
78.图4是本技术实施例提供的指令调度方法的一个可选的流程示意图五,该方法可以由计算机设备的处理器执行。基于图1,图1中的s103可以更新为s401至s402,将结合图4示出的步骤进行说明。
79.步骤s401、响应于所述指令调度事件,按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令。
80.在一些实施例中,由于该预设执行顺序为编译器完成指令编译后,对该多个指令的下发顺序。通常情况下,处理器需要对按照该下发顺序(预设执行顺序)执行该多个指令。上述至少一个待执行指令为按照该预设执行顺序从该多个指令中确定的至少一个指令。
81.示例性的,若存在8个指令,且对应的预设执行顺序依次为:指令1、指令2、指令3、
指令4、指令5、指令6、指令7和指令8。上述确定的至少一个待执行指令为按照该预设执行顺序从这8个指令中确定的。例如,可以选择指令1为上述至少一个待执行指令,也可以选择指令1至指令4为上述至少一个待执行指令。
82.步骤s402、响应于所述至少一个待执行指令满足调度条件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令。
83.在一些实施例中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。
84.其中,满足所述预设条件的情况包括但不限于是以下至少之一:各所述待执行指令的输入输出数据不存在关联关系、各所述待执行指令对应的任务不存在关联关系等。可以理解的是,在满足上述调度条件的情况下,表示上述至少一个待执行指令可以并行执行。
85.在本技术实施例中,在该至少一个待执行指令满足该调度条件的情况下,至少一个待执行指令可以并行执行,相互之间没有指令依赖关系,因此,可以响应于该指令调度事件,对该至少一个待执行指令中的内存访问指令和非内存访问指令之间的相对执行顺序进行调整。
86.在上述实施例中,只有在上述至少一个待执行指令满足上述调度条件的情况下,才会对所述处理器未执行的多个指令对应的预设执行顺序进行调整,这样,可以避免因待执行指令之间存在相互依赖关系,贸然调整之后导致指令卡死的情况。
87.图5是本技术实施例提供的指令调度方法的一个可选的流程示意图六,该方法可以由计算机设备的处理器执行。基于图1,图1中的s101可以更新为s501至s502,将结合图5示出的步骤进行说明。
88.步骤s501、按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令。
89.这里,上述步骤s501对应于前述步骤s401,在实施时可以参照前述步骤s401的具体实施方式。
90.步骤s502、响应于所述至少一个待执行指令满足调度条件,获取所述片上网络的负载信息。
91.在一些实施例中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。
92.其中,满足所述预设条件的情况包括但不限于是以下至少之一:各所述待执行指令的输入输出数据不存在关联关系、各所述待执行指令对应的任务不存在关联关系等。可以理解的是,在满足上述调度条件的情况下,表示上述至少一个待执行指令可以并行执行。
93.在上述实施例中,只有在上述至少一个待执行指令满足上述调度条件的情况下,才会获取片上网络的负载信息,这样,可以避免在无法对待执行指令进行调度的情况下,对负载信息的无效获取,减少了对片上网络的带宽消耗和处理器的资源消耗。
94.在一些实施例中,s101还可以包括步骤s503。
95.步骤s503、响应于所述至少一个待执行指令不满足调度条件,基于所述预设执行顺序执行所述至少一个待执行指令。
96.在本技术实施例中,在上述至少一个待执行指令不满足该调度条件的情况下,说明该至少一个待执行指令必须按照上述预设执行顺序执行,无法对各个待执行指令之间的
执行顺序进行调度,因此,需要基于所述预设执行顺序执行所述至少一个待执行指令。
97.在上述实施例中,在至少一个待执行指令不满足上述调度条件的情况下,不获取片上网络的负载信息,并按照预设执行顺序执行所述至少一个待执行指令,这样,在无法对待执行指令进行调度的情况下,可以避免对负载信息的无效获取,减少了对片上网络的带宽消耗和处理器的资源消耗。
98.图6是本技术实施例提供的指令调度方法的一个可选的流程示意图七,该方法可以由计算机设备的处理器执行。基于图1,图1中的s101可以更新为s601,将结合图6示出的步骤进行说明。
99.步骤s601、获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信,所述负载信息为所述处理器通过所述片上网络从负载获取装置中获取。
100.在一些实施例中,该负载获取装置部署于片上网络中。在另一些实施例中,该负载获取装置部署于片外内存中。
101.在一些实施例中,可以通过步骤s6011或步骤s6012实现上述获取片上网络的负载信息。
102.步骤s6011、接收负载获取装置通过所述片上网络发送的负载信息。
103.在本实施例中,该负载获取装置可以通过所述片上网络主动发送负载信息至处理器。
104.步骤s6012、通过所述片上网络向负载获取装置发送负载获取请求,接收所述负载获取装置响应于所述负载获取请求通过所述片上网络发送的负载信息。
105.在本技术实施例中,该处理器需要通过所述片上网络向负载获取装置发送负载获取请求,负载获取装置响应于该负载获取请求,通过所述片上网络被动发送负载信息至处理器。
106.在一些实施例中,所述负载信息包括片上网络带宽使用率;所述负载信息通过采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述采样时间段内支持的最大数据量确定。
107.在本技术实施例中,上述实时数据量为该采样时间段内,片上网络传输的字节数;可以理解的是,该实时数据量不仅包括传输的各种数据的字节数量,也包括用于控制片上网络各个模块的指令的字节数量。上述最大数据量可以通过预设的单位时间的最大带宽与该采样时间段之间的乘积确定。
108.在一些实施例中,该片上网络带宽使用率为采样时间段内所述片上网络传输的实时数据量与片上网络在所述采样时间段内支持的最大数据量之间的比值。
109.在一些实施例中,该负载获取模块可以仅保留当前时间点至历史时间点之间的负载信息,该历史时间点与该当前时间点之间的时间间隔为该采样时间段;在另一些实施例中,该负载获取模块可以在每一个采样时间段的结尾输出当前采样时间段对应的负载信息,并对当前采样时间段对应的负载信息进行清零,从而采集下一个采样时间段对应的负载信息。
110.基于上述实施例,由于负载信息包括的片上网络带宽使用率是基于采样时间段内片上网络传输的实时数据量和片上网络在所述采样时间段内支持的最大数据量确定的;由
此,该负载信息可以准确的反映上述采样时间段内片上网络的使用情况,进而基于该片上网络带宽使用率确定是否进行指令调度,可以从时间维度上平衡各个时间段的片上网络的负载,进而从整体上提升处理器对多个指令的执行效率。
111.图7是本技术实施例提供的指令调度方法的一个可选的流程示意图八,该方法可以由计算机设备的处理器执行。基于图1,图1中还可以包括步骤s701,步骤s101可以更新为步骤s702,将结合图7示出的步骤进行说明。
112.步骤s701、通过所述片上网络向所述负载获取装置发送采样调整指令;所述采样调整指令用于更新所述采样时间段。
113.在一些实施例中,该采样时间段的大小与指令调整的频率和精度相关。其中,采样时间段越大,指令调整的频率越低,调整精度也越低;采样时间段越小,指令调整的频率越高,调整精度也越高。
114.在一些实施例中,响应于所述采样调整指令,所述负载获取装置用于基于更新后的采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述更新后的采样时间段内支持的最大数据量确定所述负载信息。
115.其中,处理器可以响应于处理器工作状态的切换事件,生成该采样调整指令;例如,处理器响应于高性能状态切换至低性能状态的切换事件,生成用于减小采样时间段的采样调整指令;处理器响应于低性能状态切换至高性能状态的切换事件,生成用于增大采样时间段的采样调整指令。在另一些实施例中,该采样调整指令还可以是处理器对应的计算机设备响应于用户的操作指令生成的。本技术对该采样调整指令的生成方式不做限定。
116.在一些实施例中,该采样调整指令可以直接携带更新后的采样时间段,也可以携带时间段变化量,负载获取装置在获取到时间段变化量之后,可以基于历史采样时间段和该时间段变化量,确定更新后的采样时间段。
117.步骤s702、通过所述片上网络从负载获取装置中获取片上网络的负载信息。
118.其中,该负载信息是基于更新后的采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述更新后的采样时间段内支持的最大数据量确定的。
119.在一些实施例中,在调整该采样时间段之后,负载获取装置需要基于更新后的采样时间段获取上述实时数据量和负载信息。与之前确定负载信息的方式相同,采样时间段更新之后,该负载信息(片上网络带宽使用率)为更新后的采样时间段内所述片上网络传输的实时数据量与片上网络在更新后的采样时间段内支持的最大数据量之间的比值。
120.在一些实施例中,负载获取装置包括计数器和除法器。
121.其中,所述计数器用于统计采样时间段内所述片上网络传输的实时数据量,所述除法器用于从所述计数器中读取所述采样时间段内所述片上网络传输的实时数据量,并基于所述采样时间段对所述实时数据量进行除法运算,得到所述片上网络带宽使用率。
122.在本技术实施例中,该计数器和除法器以硬件方式实现。在片上网络传输数据的过程中,该计数器可以在该采样时间段内获取每一次数据传输的字节数,并进行累加,响应于到达该采样时间段,该除法器从计数器中读取当前累加之后的字节数,作为该采样时间段内所述片上网络传输的实时数据量。除法器基于该采样时间段对该片上网络传输的字节数进行除法运算,得到该片上网络带宽使用率。
123.在一些实施例中,响应于除法器从该计数器中读取该片上网络传输的字节数,对
该计数器进行重置。
124.在一些实施例中,所述负载获取装置设置于所述片上网络或所述片外内存。
125.下面说明本技术实施例提供的指令调度方法在实际场景中的应用,主要涉及gpu的指令调度方法。
126.在gpu的调度方案中,gpu的指令调度主要取决于以下至少之一:编译器、指令相关性、内部资源限制等。可以看出,上述指令管理方案均是基于gpu内部信号,这不仅有可能导致noc存在阻塞风险,也有可能导致系统带宽存在高峰值的情况;其中,短周期的高峰值带宽(bandwidth,bw)会导致ddr路径切换至更高的电压和频率,从而消耗更多的功率,同时,调整电压和频率也需要时间和计算资源,降低了gpu的工作效率。
127.基于以上技术问题,本技术实施例提供了一种基于noc的状态反馈来增强gpu指令/任务调度的方案。由此,可以减少高峰值bw情况;同时,平滑的bw可以使ddr路径保持在稳定的较低电压和频率下。
128.本技术实施例提出了一个实施方案,即,gpu通过接收noc的反馈消息,基于该反馈消息重新安排任务/指令,这样,可以使得整个系统带宽更加平滑,以避免峰值bw引起的问题。在一些实施例中,在系统带宽较高的情况下,gpu可以将内存访问指令标记为较低优先级。需要说明的是,执行将内存访问指令标记为较低优先级的步骤的前提是,较低优先级的内存访问指令不会导致任何性能下降。
129.请参阅图8a,其示出了一种指令调度场景的计算机设备架构图,如图所示,计算机设备包括gpu810、noc820和片外内存830,gpu810与片外内存830通过noc820通信连接。其中,gpu810包括指令调度器811、非内存访问指令队列812、内存访问指令队列813和片内缓存814。noc820,其中,noc820可以包括负载获取装置821。
130.在本技术实施例中,该内存访问指令队列813用于存储至少一个内存访问指令,该内存访问指令用于访问片外内存830。其中,该内存访问指令至少可以包括数据读取指令和数据存储指令;其中,该数据读取指令用于从该片外内存830中获取待读取数据,该数据存储指令用于将处理后数据存储于片外内存830中。
131.在一些实施例中,该片外内存可以包括末级缓存(last level cache,llc)和ddr(double data rate sdram,双倍速率的sdram),该llc的访问速率高于ddr的访问速率。在另一些实施例中,该片外内存830还包括至一级缓存至n级缓存,其中,该一级缓存的访问速率最高,随着缓存级别的增加,访问速率降低,n级缓存的访问速率在这n个级别的缓存中最低,但高于该llc;相应地,一级缓存的存储空间最小,随着缓存级别的增加,存储空间逐渐增大,n级缓存的存储空间在这n个级别的缓存中最大,但小于llc,ddr的存储空间大于该llc。为了便于说明,以下将以片外内存包括llc和ddr的场景进行说明,并未对本技术实施方式的限定。
132.在上述针对待读取数据的读取场景中,响应于接收到该数据请求,noc可以依次从末级缓存(last level cache,llc)和ddr中抓取该待读取数据。示例性的,响应于接收到该数据请求,noc820优先访问该llc,在llc中不存在该待读取数据的情况下,noc820通过ddr控制器(ddr controller)访问ddr,进而获取该待读取数据,并向gpu810发送携带该数据的数据反馈。
133.gpu810可以基于渲染任务对位于片内缓存814中的数据进行处理,得到该处理后
数据。
134.在上述针对该处理后数据的反馈场景中,可以向noc820发送携带处理后数据的数据存储指令,响应于该数据存储指令,noc820可以基于该数据存储指令中携带的地址信息,按照预设的路由算法计算最佳路由路径;并按照该路由路径将该处理后的数据存储于片外内存830中。
135.在另一些实施例中,该内存访问指令还可以包括以下至少之一:数据修改指令和数据删除指令等。其中,数据修改指令用于对片外内存中存储的数据进行修改;该数据删除指令用于对片外内存中存储的数据进行删除。
136.在本技术实施例中,该非内存访问指令队列812用于存储至少一个非内存访问指令,该非内存访问指令为不需要访问片外内存的指令。其中,该非内存访问指令可以包括针对片内缓存814中数据的数据处理指令,也可以包括针对gpu内部参数配置指令等。
137.在本技术实施例中,该指令调度器811用于从noc820获取noc负载信息,并于基于该noc负载信息对非内存访问指令队列812中存储的至少一个非内存访问指令和内存访问指令队列813中存储的至少一个内存访问指令进行调度。
138.为了便于说明本技术实施例提供的指令调度方法,本技术将以noc负载信息为noc带宽使用率为例进行说明,并未对本技术实施方式的限定。
139.在本技术实施例中,该负载获取装置821用于获取该片上网络带宽使用率,并向gpu发送该片上网络带宽使用率。其中,该片上网络带宽使用率可以表示为bw%,通过公式(1)确定。
140.bw%=(d/t)/maxbw
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(1);其中,该bw%为片上网络带宽使用率,范围为0%至100%,t为预设的采样时间段,d为在该采样时间段内片上网络传输的字节数,maxbw为该片上网络支持的最大片上网络带宽。
141.在一些实施例中,该t为可以调整的,t的数值越小,得到的片上网络带宽使用率的实时性越高,相应地,负载获取装置821向gpu发送该片上网络带宽使用率的频率越高;t的数值越大,得到的片上网络带宽使用率的实时性越低,相应地,负载获取装置821向gpu发送该片上网络带宽使用率的频率越低。
142.在一些实施例中,上述片上网络带宽使用率可以通过延迟较高的软件(software,sw)算法计算,也可以通过延迟较低(实时)的(hardware,hw)硬件电路计算。
143.其中,该负载获取装置821可以包括计数器,该计数器用于统计上述采样时间段内片上网络传输的字节数。
144.在通过软件算法计算该网络带宽使用率的情况下,可以通过处理器设备(如cpu)从该计数器中读取该片上网络传输的字节数,并获取预设的采样时间段,进而通过上述公式(1)确定该片上网络带宽使用率;之后,处理器设备通过noc向gpu发送该片上网络带宽使用率。在一些实施例中,响应于处理器从该计数器中读取该片上网络传输的字节数,对该计数器进行重置。
145.在通过硬件电路计算该网络带宽使用率的情况下,该负载获取装置821还包括除法器,该除法器用于从该计数器中读取该片上网络传输的字节数,并基于采样时间段对该片上网络传输的字节数进行除法运算,得到该片上网络带宽使用率;之后,负载获取装置821通过noc向gpu发送该片上网络带宽使用率。在一些实施例中,响应于除法器从该计数器
中读取该片上网络传输的字节数,对该计数器进行重置。
146.在另一些实施例中,上述负载获取装置还可以设置于片外内存中,请参阅图8b,其示出了另一种指令调度场景的计算机设备架构图,与图8a不同的是,图8b中的noc820未设置该负载获取装置,负载获取装置831设置于片外内存830中。
147.在本技术实施例中,该指令调度器811用于基于noc负载信息确定是否发出内存访问指令。为了便于理解当前方案,请参阅图9,其示出了一种指令调度方法的流程示意图九。
148.步骤s901、获取gpu中未执行的多个指令和所述多个指令对应的预设执行顺序。
149.在一些实施例中,该多个指令可以包括至少一个内存访问指令和至少一个非内存访问指令;在另一些实施例中,该多个指令也可以包括多个内存访问指令;在另一些实施例中,该多个指令还可以包括多个非内存访问指令。
150.其中,上述内存访问指令均存储于上述内存访问指令队列中,上述非内存访问指令均存储于上述非内存访问指令队列中。
151.其中,该预设执行顺序可以基于各所述指令创建的时间确定,也可以基于各所述指令中的预计执行时间确定,还可以基于各所述指令对应的任务顺序确定,还可以基于同一任务下各指令的执行顺序确定。本技术实施例对此不作限定。
152.步骤s902、在按照所述预设执行顺序从所述多个指令中确定待执行指令的过程中,确定所述待执行指令是否需要按照所述预设顺序执行。
153.在一些实施例中,在所述待执行指令需要按照所述预设顺序执行的情况下,执行步骤s905;在所述待执行指令不需要按照所述预设顺序执行的情况下,执行步骤s903;步骤s903、判断所述片上网络带宽使用率是否大于预设使用率阈值。
154.在一些实施例中,在所述片上网络带宽使用率小于或等于预设使用率阈值的情况下,执行步骤s905;在所述片上网络带宽使用率大于预设使用率阈值的情况下,执行步骤s904。
155.示例性的,该预设使用率阈值可以设置为90%,在该片上网络带宽使用率小于或等于90%的情况下,执行步骤s905;在所述片上网络带宽使用率大于90%的情况下,执行步骤s904。
156.步骤s904、在多个指令中,优先执行非内存访问指令。
157.在一些实施例中,该多个指令中的至少一个非内存访问指令存储于该上述非内存访问指令队列中,其中,各非内存访问指令在该非内存访问指令队列中的相对顺序与各非内存访问指令在该预设执行顺序的相对顺序相同。上述步骤s904中,指令调度器需要按队列顺序,依次判断各非内存访问指令是否可以执行,并将可执行的非内存访问指令作为目标指令,执行该目标指令。
158.步骤s905、执行该待执行指令。
159.基于上述实施例提供的指令调度方法,可以达到以下技术效果:(1)通过noc带宽感知,调度gpu或其他ip的任务/指令,可以有效调整noc带宽,以减少短周期峰值/高带宽持续时间;(2)更平滑的noc带宽将使ddr组件路径(path to ddr)保持在一个更稳定的状态,进而可以使ddr组件路径在大多数时间处于更低的电压和频率,减少功耗;(3)通过调整负载获取装置的片上网络带宽使用率的计算间隔,以即时片上网络带宽使用率或平均片上网络带宽使用率;本技术提供的指令调度方案可以应用于包括不同ip核和系统带宽监控机制
的vlsi系统。
160.基于前述的实施例,本技术实施例提供一种指令调度装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(central processing unit,cpu)、微处理器(microprocessor unit,mpu)、数字信号处理器(digital signal processor,dsp)或现场可编程门阵列(field programmable gate array,fpga)等。
161.图10为本技术实施例提供的一种指令调度装置的组成结构示意图,如图10所示,指令调度装置1000包括:获取模块1010、调度模块1020,其中:获取模块1010,用于获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信;调度模块1020,用于基于所述负载信息与预设的负载阈值的比对结果,生成所述比对结果对应的指令调度事件;响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令;其中,所述指令调度事件用于调整所述多个指令中非内存访问指令和内存访问指令之间的相对执行顺序;所述内存访问指令用于通过所述片上网络访问所述片外内存。
162.在一些实施例中,所述比对结果包括所述负载信息大于所述负载阈值的第一结果,所述指令调度事件包括所述第一结果对应的第一调度事件;所述调度模块1020,还用于:响应于所述第一调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的非内存访问指令。
163.在一些实施例中,所述比对结果包括所述负载信息小于所述负载阈值的第二结果,所述指令调度事件包括所述第二结果对应的第二调度事件;所述调度模块1020,还用于:响应于所述第二调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的内存访问指令。
164.在一些实施例中,所述处理器中设置有指令队列,所述指令队列包括以下至少之一:非内存访问指令队列和内存访问指令队列;其中,所述非内存访问指令队列用于存储所述多个指令中的非内存访问指令,所述内存访问指令队列用于存储所述多个指令中的内存访问指令;所述多个指令对应的预设执行顺序与所述多个指令在所述指令队列中的排列顺序相关。
165.在一些实施例中,所述调度模块1020,还用于:从所述处理器中非内存访问指令队列中每一非内存访问指令中,确定可执行的非内存访问指令;执行所述可执行的非内存访问指令。
166.在一些实施例中,所述调度模块1020,还用于:在所述处理器中非内存访问指令队列中不存在可执行的非内存访问指令的情况下,基于所述预设执行顺序执行所述至少一个待执行指令。
167.在一些实施例中,所述调度模块1020,还用于:按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令;响应于所述至少一个待执行指令满足调度条件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整;其中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。
168.在一些实施例中,所述获取模块1010,还用于:按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令;响应于所述至少一个待执行指令满足调度条件,获取所述片上网络的负载信息;其中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。
169.在一些实施例中,所述调度模块1020,还用于:响应于所述至少一个待执行指令不满足调度条件,基于所述预设执行顺序执行所述至少一个待执行指令。
170.在一些实施例中,所述调度模块1020,还用于:在所述负载信息未超过预设的负载阈值的情况下,按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令并执行。
171.在一些实施例中,所述负载信息为所述处理器通过所述片上网络从负载获取装置中获取。
172.在一些实施例中,所述获取模块1010,还用于:接收负载获取装置通过所述片上网络发送的负载信息;通过所述片上网络向负载获取装置发送负载获取请求,接收所述负载获取装置响应于所述负载获取请求通过所述片上网络发送的负载信息。
173.在一些实施例中,所述负载信息包括以下至少之一:片上网络带宽、片上网络带宽使用率、对片外内存的访问请求数量。
174.在一些实施例中,所述负载信息包括片上网络带宽使用率;所述负载信息通过采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述采样时间段内支持的最大数据量确定。
175.在一些实施例中,所述获取模块1010,还用于:通过所述片上网络向所述负载获取装置发送采样调整指令;所述采样调整指令用于更新所述采样时间段;响应于所述采样调整指令,所述负载获取装置用于基于更新后的采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述更新后的采样时间段内支持的最大数据量确定所述负载信息。
176.在一些实施例中,所述负载获取装置包括计数器和除法器;其中,所述计数器用于统计采样时间段内所述片上网络传输的实时数据量,所述除法器用于从所述计数器中读取所述采样时间段内所述片上网络传输的实时数据量,并基于所述采样时间段对所述实时数据量进行除法运算,得到所述片上网络带宽使用率。
177.在一些实施例中,所述负载获取装置设置于所述片上网络或所述片外内存。
178.以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本技术实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
179.需要说明的是,本技术实施例中,如果以软件功能模块的形式实现上述的指令调度方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制
于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
180.本技术实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
181.本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
182.本技术实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
183.本技术实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
184.这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
185.图11为本技术实施例提供的一种计算机设备的硬件实体示意图,如图11所示,该计算机设备1100的硬件实体包括:处理器1101和存储器1102,其中,存储器1102存储有可在处理器1101上运行的计算机程序,处理器1101执行程序时实现上述任一实施例的方法中的步骤。
186.存储器1102存储有可在处理器上运行的计算机程序,存储器1102配置为存储由处理器1101可执行的指令和应用,还可以缓存待处理器1101以及计算机设备1100中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
187.处理器1101执行程序时实现上述任一项的指令调度方法的步骤。处理器1101通常控制计算机设备1100的总体操作。
188.本技术实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的指令调度方法的步骤。
189.这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术存储介质和设备实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
190.上述处理器可以为目标用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置
only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。
197.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
198.以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。

技术特征:
1.一种指令调度方法,其特征在于,应用于处理器,所述方法包括:获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信;基于所述负载信息与预设的负载阈值的比对结果,生成所述比对结果对应的指令调度事件;响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令;其中,所述指令调度事件用于调整所述多个指令中非内存访问指令和内存访问指令之间的相对执行顺序;所述内存访问指令用于通过所述片上网络访问所述片外内存。2.根据权利要求1所述的方法,其特征在于,所述比对结果包括所述负载信息大于所述负载阈值的第一结果,所述指令调度事件包括所述第一结果对应的第一调度事件;所述响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令,包括:响应于所述第一调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的非内存访问指令。3.根据权利要求1所述的方法,其特征在于,所述比对结果包括所述负载信息小于所述负载阈值的第二结果,所述指令调度事件包括所述第二结果对应的第二调度事件;所述响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令,包括:响应于所述第二调度事件,在按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令的过程中,执行所述至少一个待执行指令中的内存访问指令。4.根据权利要求2所述的方法,其特征在于,所述处理器中设置有指令队列,所述指令队列包括以下至少之一:非内存访问指令队列和内存访问指令队列;其中,所述非内存访问指令队列用于存储所述多个指令中的非内存访问指令,所述内存访问指令队列用于存储所述多个指令中的内存访问指令;所述多个指令对应的预设执行顺序与所述多个指令在所述指令队列中的排列顺序相关。5.根据权利要求4所述的方法,其特征在于,所述执行所述至少一个待执行指令中的非内存访问指令,包括:从所述处理器中非内存访问指令队列中每一非内存访问指令中,确定可执行的非内存访问指令;执行所述可执行的非内存访问指令。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述处理器中非内存访问指令队列中存在不可执行的非内存访问指令的情况下,基于所述预设执行顺序执行所述至少一个待执行指令。7.根据权利要求1至3任一项所述的方法,其特征在于,所述对所述处理器未执行的多个指令对应的预设执行顺序进行调整,包括:按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令;
响应于所述至少一个待执行指令满足调度条件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整;其中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。8.根据权利要求1至3任一项所述的方法,其特征在于,所述获取片上网络的负载信息,包括:按照所述多个指令对应的预设执行顺序从所述多个指令中确定至少一个待执行指令;响应于所述至少一个待执行指令满足调度条件,获取所述片上网络的负载信息;其中,所述调度条件表征所述至少一个待执行指令不需要按照所述预设执行顺序执行。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:响应于所述至少一个待执行指令不满足所述调度条件,基于所述预设执行顺序执行所述至少一个待执行指令。10.根据权利要求1至3任一项所述的方法,其特征在于,所述负载信息为所述处理器通过所述片上网络从负载获取装置中获取。11.根据权利要求1至3任一项所述的方法,其特征在于,所述获取片上网络的负载信息,包括以下任意之一:接收负载获取装置通过所述片上网络发送的负载信息;通过所述片上网络向负载获取装置发送负载获取请求,接收所述负载获取装置响应于所述负载获取请求通过所述片上网络发送的负载信息。12.根据权利要求1至3任一项所述的方法,其特征在于,所述负载信息包括以下至少之一:片上网络带宽、片上网络带宽使用率、对片外内存的访问请求数量。13.根据权利要求12所述的方法,其特征在于,所述负载信息包括片上网络带宽使用率;所述负载信息通过采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述采样时间段内支持的最大数据量确定。14.根据权利要求13所述的方法,其特征在于,所述方法还包括:通过所述片上网络向负载获取装置发送采样调整指令;所述采样调整指令用于更新所述采样时间段;响应于所述采样调整指令,所述负载获取装置用于基于更新后的采样时间段内所述片上网络传输的实时数据量和所述片上网络在所述更新后的采样时间段内支持的最大数据量确定所述负载信息。15.根据权利要求13所述的方法,其特征在于,所述负载获取装置包括计数器和除法器;其中,所述计数器用于统计采样时间段内所述片上网络传输的实时数据量,所述除法器用于从所述计数器中读取所述采样时间段内所述片上网络传输的实时数据量,并基于所述采样时间段对所述实时数据量进行除法运算,得到所述片上网络带宽使用率。16.根据权利要求13所述的方法,其特征在于,所述负载获取装置设置于所述片上网络或所述片外内存。17.一种指令调度装置,其特征在于,设置于处理器中,所述装置包括:获取模块,用于获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信;
调度模块,用于基于所述负载信息与预设的负载阈值的比对结果,生成所述比对结果对应的指令调度事件;响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令;其中,所述指令调度事件用于调整所述多个指令中非内存访问指令和内存访问指令之间的相对执行顺序;所述内存访问指令用于通过所述片上网络访问所述片外内存。18.一种计算机设备,包括存储器、片外内存和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述片外内存、所述存储器和所述处理器通过片上网络通信;所述处理器执行所述程序时实现权利要求1至16任一项所述方法中的步骤。19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至16任一项所述方法中的步骤。

技术总结
本申请实施例公开了一种指令调度方法、装置、设备及存储介质,其中,所述方法包括:获取片上网络的负载信息;所述片上网络至少用于实现所述处理器与片外内存之间的通信;基于所述负载信息与预设的负载阈值的比对结果,生成所述比对结果对应的指令调度事件;响应于所述指令调度事件,对所述处理器未执行的多个指令对应的预设执行顺序进行调整,并基于调整后的执行顺序执行对应的指令;其中,所述指令调度事件用于调整所述多个指令中非内存访问指令和内存访问指令之间的相对执行顺序;所述内存访问指令用于通过所述片上网络访问所述片外内存。存。存。


技术研发人员:请求不公布姓名
受保护的技术使用者:摩尔线程智能科技(北京)有限责任公司
技术研发日:2023.08.02
技术公布日:2023/9/6
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐