本公开的实施例涉及一种线程调度方法、线程调度装置、电子设备和非瞬时性计算机可读存储介质。
背景技术:
1、并发多线程(simulate multi-threading,简称smt)技术是一个提高处理器整体性能的重要技术。它利用高性能处理核(例如中央处理单元核,cpu核)的多发射、乱序执行等机制,来同时执行多个线程的指令,这样一个物理核心呈现给软件、操作系统是多个虚拟的处理核。现代多发射的高性能处理核在执行单线程时,它内部的多个执行单元及硬件资源在绝大部分时间无法被充分利用;当该线程由于某些原因(比如l2级缓存未命中时)运行停顿时,硬件执行单元只能空转,这些都造成硬件资源的浪费、降低性能功耗比。在smt模式下,当一个线程运行停顿时,其他线程仍然能够运行,这提高了硬件资源的利用率,从而提高了处理器的多线程吞吐量、整体性能及性能功耗比。
技术实现思路
1、本公开至少一些实施例提供一种线程调度方法,包括:根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度,其中,所述编译指示信息根据所述处理器在预运行所述任务对应的编译程序的过程中收集的性能数据生成,所述性能数据包括所述多条线程中的关键指令,所述关键指令为导致流水线冲刷或流水线停滞的指令。
2、例如,在本公开至少一些实施例提供的线程调度方法中,根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度,包括:优先调度所述编译指示信息指示的所述关键指令。
3、例如,在本公开至少一些实施例提供的线程调度方法中,优先调度所述编译指示信息指示的所述关键指令,包括:相对于预设指令执行顺序中所述关键指令的调度时间点,提前调度执行所述关键指令,其中,所述预设指令执行顺序为预运行所述任务对应的编译程序时的指令调度顺序。
4、例如,在本公开至少一些实施例提供的线程调度方法中,所述关键指令包括导致流水线冲刷的第一关键指令,相对于预设指令执行顺序中所述关键指令的调度时间点,提前调度执行所述关键指令,包括:相对于预设指令执行顺序中所述关键指令的调度时间点,提前调度执行所述第一关键指令,并根据所述第一关键指令的执行结果进行所述流水线冲刷。
5、例如,在本公开至少一些实施例提供的线程调度方法中,所述第一关键指令包括分支预测错误的指令、执行异常的指令或访存异常的指令。
6、例如,在本公开至少一些实施例提供的线程调度方法中,响应于所述第一关键指令为分支预测错误的指令,相对于预设指令执行顺序中所述关键指令的调度时间点,提前调度执行所述关键指令,还包括:在执行所述流水线冲刷后,重新取指所述分支预测错误的分支成立后的待执行指令。
7、例如,在本公开至少一些实施例提供的线程调度方法中,所述关键指令包括导致流水线停滞的第二关键指令,所述第二关键指令处于依赖链中,其中,所述依赖链包括多个指令,所述依赖链中除所述第二关键指令以外的其他指令的执行依赖于所述第二关键指令的执行结果。
8、例如,在本公开至少一些实施例提供的线程调度方法中,所述第二关键指令包括由于缓存未命中导致流水线停滞的数据读取指令或由于等待计算结果导致流水线停滞的延时计算指令。
9、例如,在本公开至少一些实施例提供的线程调度方法中,所述性能数据还包括每个关键指令对线程运行时的影响程度,所述影响程度通过在预运行所述任务时收集的每个关键指令导致流水线停滞的停滞时长、每个关键指令导致流水线停滞的停滞次数或每个关键指令的停滞时长在运行总时长中的占比来确定,响应于所述停滞时长越长、所述停滞次数越多或所述停滞时长在所述运行总时长中的占比越高,所述关键指令对线程运行时的影响程度越大。
10、例如,在本公开至少一些实施例提供的线程调度方法中,根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度,包括:根据所述编译指示信息指示的每个关键指令对所述多条线程运行时的影响程度,确定目标关键指令;优先调度所述目标关键指令。
11、例如,在本公开至少一些实施例提供的线程调度方法中,根据所述编译指示信息指示的每个关键指令对所述多条线程运行时的影响程度,确定目标关键指令,包括:确定所述编译指示信息指示的多个所述关键指令中影响程度大于预设阈值的关键指令作为所述目标关键指令;或者,将多个所述关键指令按照影响程度从大到小的顺序排序,将排序位置在预设位置之前的关键指令作为所述目标关键指令。
12、本公开至少一些实施例还提供一种线程调度装置,包括:调度模块,配置为根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度,其中,所述编译指示信息根据所述处理器在预运行所述任务对应的编译程序的过程中收集的性能数据生成,所述性能数据包括所述多条线程中的关键指令,所述关键指令为导致流水线冲刷或线程流水线停滞的指令。
13、例如,在本公开至少一些实施例提供的线程调度装置中,所述调度模块执行根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度时,包括执行以下操作:优先调度所述编译指示信息指示的所述关键指令。
14、例如,在本公开至少一些实施例提供的线程调度装置中,所述调度模块执行优先调度所述编译指示信息指示的所述关键指令时,包括执行以下操作:相对于预设指令执行顺序中所述关键指令的调度时间点,提前调度执行所述关键指令,其中,所述预设指令执行顺序为预运行所述任务对应的编译程序时的指令调度顺序。
15、例如,在本公开至少一些实施例提供的线程调度装置中,所述关键指令包括导致流水线冲刷的第一关键指令,所述调度模块执行相对于预设指令执行顺序中所述关键指令的调度时间点,提前调度执行所述关键指令时,包括执行以下操作:相对于预设指令执行顺序中所述关键指令的调度时间点,提前调度执行所述第一关键指令,根据所述第一关键指令的执行结果进行所述流水线冲刷。
16、例如,在本公开至少一些实施例提供的线程调度装置中,所述关键指令包括导致流水线停滞的第二关键指令,所述第二关键指令处于依赖链中,其中,所述依赖链包括多个指令,所述依赖链中除所述第二关键指令以外的其他指令的执行依赖于所述第二关键指令的执行结果。
17、本公开至少一些实施例还提供一种电子设备,包括:存储器,非瞬时性地存储有计算机可执行指令;处理器,配置为运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理器运行时实现根据本公开任一实施例提供的线程调度方法。
18、本公开至少一些实施例还提供一种非暂时性存储介质,所述非暂时性存储介质非暂时性地存储计算机可读指令,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现根据本公开任一实施例提供的线程调度方法。
1.一种线程调度方法,包括:
2.根据权利要求1所述的线程调度方法,其中,根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度,包括:
3.根据权利要求2所述的线程调度方法,其中,优先调度所述编译指示信息指示的所述关键指令,包括:
4.根据权利要求3所述的线程调度方法,其中,所述关键指令包括导致流水线冲刷的第一关键指令,
5.根据权利要求4所述的线程调度方法,其中,所述第一关键指令包括分支预测错误的指令、执行异常的指令或访存异常的指令。
6.根据权利要求4所述的线程调度方法,其中,响应于所述第一关键指令为分支预测错误的指令,
7.根据权利要求3所述的线程调度方法,其中,所述关键指令包括导致流水线停滞的第二关键指令,所述第二关键指令处于依赖链中,其中,所述依赖链包括多个指令,所述依赖链中除所述第二关键指令以外的其他指令的执行依赖于所述第二关键指令的执行结果。
8.根据权利要求7所述的线程调度方法,其中,所述第二关键指令包括由于缓存未命中导致流水线停滞的数据读取指令,或由于等待计算结果导致流水线停滞的延时计算指令。
9.根据权利要求1-8任一项所述的线程调度方法,其中,所述性能数据还包括每个关键指令对线程运行时的影响程度,所述影响程度通过在预运行所述任务时收集的每个关键指令导致流水线停滞的停滞时长、每个关键指令导致流水线停滞的停滞次数或每个关键指令的停滞时长在运行总时长中的占比来确定,
10.根据权利要求9所述的线程调度方法,其中,根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度,包括:
11.根据权利要求10所述的线程调度方法,其中,根据所述编译指示信息指示的每个关键指令对所述多条线程运行时的影响程度,确定目标关键指令,包括:
12.一种线程调度装置,包括:
13.根据权利要求12所述的线程调度装置,其中,所述调度模块执行根据编译指示信息对处理器执行任务时使用的多条线程的指令进行调度时,包括执行以下操作:
14.根据权利要求13所述的线程调度装置,其中,所述调度模块执行优先调度所述编译指示信息指示的所述关键指令时,包括执行以下操作:
15.根据权利要求14所述的线程调度装置,其中,所述关键指令包括导致流水线冲刷的第一关键指令,
16.根据权利要求14所述的线程调度装置,其中,所述关键指令包括导致流水线停滞的第二关键指令,所述第二关键指令处于依赖链中,其中,所述依赖链包括多个指令,所述依赖链中除所述第二关键指令以外的其他指令的执行依赖于所述第二关键指令的执行结果。
17.一种电子设备,包括;
18.一种非瞬时性存储介质,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现根据权利要求1-11任一项所述的线程调度方法。