专利名称::一种线程调度方法、线程调度装置及多核处理器系统的制作方法
技术领域:
:本发明涉及计算机领域,尤其涉及一种线程调度方法、线程调度装置及多核处理器系统。
背景技术:
:线程是进程中的一个实体,不拥有系统资源,只有执行必须的一些数据结构,线程可以创建和撤销,从而实现程序的并发执行。线程一般据具有就绪、堵塞和执行三种基本状态。目前在多核处理器系统中,所有的处理器核都可以共享地访问内存、I/O和外部中断。系统中的硬件资源可以被多个处理器核共享,例如内存控制器、最后一级高速缓存存储(LLC,LastLevelcache)等0现有技术中的多核处理器系统运行应用程序时,大多以线程为调度单位运行,然而,发明人在研究中发现,目前的线程调度过程中,是按照线程的优先级确定将要切换的线程,而忽略了多核处理器系统共享资源产生的资源竞争或浪费而导致多核处理器系统性能下降的问题。
发明内容本发明实施例提供了一种线程调度方法、线程调度装置及多核处理器系统,用于对多核处理器系统中的线程进行调度,能够有效的提高共享资源的利用率,缓和处理器核对共享资源的竞争,从而提高多核处理器系统的性能。本发明实施例中的线程调度方法包括当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。本发明实施例中的线程调度方法包括当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。本发明实施例中的线程调度装置包括确定单元,用于当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;查找单元,用于若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;切换单元,用于当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,则将当前运行的线程切换成查找到的线程。本发明实施例中的线程调度装置包括第一累加单元,用于当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程的高速缓冲存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加一;第一获取单元,用于获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;第一计算单元,用于根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;第一扫描计算单元,用于扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;第一处理单元,用于当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。本发明实施例中的多核处理器系统包括第一处理器核和第二处理器核,以及共享的硬件资源;第一处理器核和第二处理器核访问共享的硬件资源;第一处理器核用于当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,将当前运行的线程切换成查找到的的线程;或者,第一处理器核用于当第一处理器核发生线程上下文切换时,将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到总的cache访问率中,将累加次数计数值加一;获取与第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;根据第一处理器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。从以上技术方案可以看出,本发明实施例具有以下优点当第一处理器核发生线程上下文切换时,确定与该第一处理器核具有对应关系的第二处理器核,若该第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程,并将查找到的所需类型的线程切换成由该第一处理器核运行,从而本发明实施例中的线程调度装置可使得不同缓存特征类型的线程能够协调运行,进而避免第一处理器核及第二处理器核运行相同类型的线程而产生的资源竞争或者资源浪费,有效的缓和了处理器核对共享资源的竞争,且可提高共享资源的利用率,改善了多核处理器系统的性能。图1为本发明实施例中一种线程调度方法的一个示意图;图2为本发明实施例中一种线程调度方法的另一示意图;图3为本发明实施例中一种线程调度方法的另一示意图;图4为本发明实施例中一种线程调度装置的一个示意图;图5为本发明实施例中一种线程调度装置的另一示意图;图6为本发明实施例中一种线程调度装置的另一示意图;图7为本发明实施例中多核处理器系统的一个示意图;图8_a为本发明实施例中多核处理器系统的一个物理架构示意图;图8_b为本发明实施例中多核处理器系统的一个物理架构示意图;图8-c为本发明实施例中多核处理器系统的一个物理架构示意图。具体实施方式本发明实施例提供了一种线程调度方法、线程调度装置及多核处理器系统,用于对多核处理器系统中的共享硬件资源的处理器核上运行的线程进行调度,能够有效的缓和共享硬件资源的多个处理器核对共享硬件资源的竞争,从而提高共享资源的利用率,改善了多核处理器系统的性能。在本发明实施例中,在处理器核对应的可执行连接格式(ELF,ExecutableandLinkableFormat)文件中创建线程之后,需要通过仿真实验确定该ELF文件中的线程的类型,具体为1)若有η个线程,则将该η个线程依次编号为1n,选择任意两个线程同时运行,若线程i与线程j同时运行,那么将线程j在与线程i同时运行的性能损耗,记为du,在每一个线程均与其他的线程同时运行之后,可得到如下的矩阵D权利要求1.一种线程调度方法,其特征在于,包括当第一处理器核发生线程上下文切换时,确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若所述第二处理器核当前运行的是缓存敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若所述第二处理器核当前运行的是缓存非敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。2.根据权利要求1中所述的方法,其特征在于,所述确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型,包括根据所述第一处理器核的身份标识码ID及预置的计算方法确定与所述第一处理器核具有对应关系的第二处理器核;从所述第二处理器核的当前运行线程描述符中获取所述第二处理器核当前运行的线程的类型,所述线程的类型包括缓存敏感型、缓存较敏感型、缓存非敏感型。3.根据权利要求1中所述的方法,其特征在于,所述确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型,包括根据所述第一处理器核的ID查找处理器核分组表,确定与所述第一处理器核具有对应关系的第二处理器核;从所述第二处理器核的当前运行线程描述符中获取所述第二处理器核当前运行的线程的类型,所述线程的类型包括缓存敏感型、缓存较敏感型、缓存非敏感型。4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括将所述第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到所述第一处理器核总的cache访问率中,并将累加次数计数值加一。5.根据权利要求4所述的方法,其特征在于,所述方法还包括当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中未查找到所需类型的线程时,根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值;扫描所述第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的的cache访问率与所述第二处理器核当前运行的线程在上个时间片的的cache访问率的和,作为第二参数值;当所述第一参数值与第二参数值之间的差值大于或等于预置的数值时,则将当前运行的线程切换成当前扫描的线程。6.根据权利要求5所述的方法,其特征在于,根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值包括将所述第一处理器核总的cache访问率除以所述第一处理器核的所述累加次数计数值,得到所述第一处理器核的平均cache访问率;将所述第二处理器核总的cache访问率除以所述第二处理器核的累加次数计数值,得到所述第二处理器核的平均cache访问率;将所述第一的处理器核平均cache访问率与所述第二处理器核的平均cache访问率相加,得到所述第一参数值。7.根据权利要求5所述的方法,其特征在于,所述方法还包括当所述第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,并返回执行所述计算当前扫描的线程在上个时间片的cache访问率与所述第二处理器核当前运行的线程在上个时间片的的cache访问率的和,作为第二参数值的步骤。8.根据权利要求1至7任一项所述的方法,其特征在于,所述第一处理器核完成线程切换后,将当前运行的线程的类型标识保存到所述第一处理器核的当前运行线程描述符中。9.一种线程调度方法,其特征在于,包括当第一处理器核发生线程上下文切换时,将所述第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到所述第一处理器核总的cache访问率中,将累加次数计数值加一;获取与所述第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值;扫描所述第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与所述第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当所述第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。10.根据权利要求9所述的方法,其特征在于,所述获取与所述第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值包括根据所述第一处理器核的身份标识码ID及预置的计算方法确定与所述第一处理器核具有对应关系的第二处理器核,或者,根据所述第一处理器核的ID查找处理器核分组表确定与所述第一处理器核具有对应关系的第二处理器核;从所述第二处理器核中获得所述第二处理器核总的cache访问率及累加次数计数值。11.根据权利要求9所述的方法,其特征在于,所述根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值,包括将所述第一处理器核总的cache访问率除以所述第一处理器核的所述累加次数计数值,得到所述第一处理器核的平均cache访问率;将所述第二处理器核总的cache访问率除以所述第二处理器核的累加次数计数值,得到所述第二处理器核的平均cache访问率;将所述第一处理器核平均cache访问率与所述第二处理器核平均cache访问率相加,得到所述第一参数值。12.根据权利要求9至11任一项所述的方法,其特征在于,所述方法还包括当所述第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,并返回执行所述计算当前扫描的线程的在上个时间片的cache访问率与所述第二处理器核当前运行的线程在上个时间片的的cache访问率的和,作为第二参数值的步骤。13.根据权利要求12所述的方法,其特征在于,所述第一处理器核完成线程切换后,将当前运行的线程的类型标识保存到所述第一处理器核的当前运行线程描述符中。14.一种线程调度装置,其特征在于,包括确定单元,用于当第一处理器核发生线程上下文切换时,确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;查找单元,用于若所述第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若所述第二处理器核当前运行的是缓存非敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;切换单元,用于当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。15.根据权利要求14所述的装置,其特征在于,所述确定单元包括处理器核确定单元,用于根据所述第一处理器核的身份标识码ID及预置的计算方法确定与所述第一处理器核具有对应关系的第二处理器核,或者用于根据所述第一处理器核的ID查找处理器核分组表确定与所述第一处理器核具有对应关系的第二处理器核;线程确定单元,用于从所述第二处理器核的当前运行线程描述符中获取所述第二处理器核当前运行的线程的类型,所述线程的类型包括缓存敏感型、缓存较敏感型、缓存非敏感型。16.根据权利要求14或15所述的装置,其特征在于,所述装置还包括累加单元,将所述第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到所述第一处理器核总的cache访问率中,并将累加次数计数值加一;更新单元,用于所述第一处理器核完成线程切换后,将当前运行的线程的类型标识保存到所述第一处理器核的当前运行线程描述符中。17.根据权利要求16所述的装置,其特征在于,所述装置还包括计算单元,用于当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中未查找到所需类型的线程时,根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值;扫描计算单元,用于扫描所述第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片中的cache访问率与所述第二处理器核当前运行的线程在上个时间片中的cache访问率的和,作为第二参数值;处理单元,用于当所述第一参数值与第二参数值之间的差值大于或等于预置的数值时,则将所述当前运行的线程切换成当前扫描的线程,及用于当所述第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到所述扫描计算单元。18.—种线程调度装置,其特征在于,包括第一累加单元,用于当第一处理器核发生线程上下文切换时,将所述第一处理器核当前运行的线程的高速缓冲存储器cache访问率累加到所述第一处理器核总的cache访问率中,将累加次数计数值加一;第一获取单元,用于获取与所述第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;第一计算单元,用于根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值;第一扫描计算单元,用于扫描所述第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与所述第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;第一处理单元,用于当所述第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。19.根据权利要求18所述的装置,其特征在于,所述第一获取单元包括核确定单元,用于根据所述第一处理器核的身份标识码ID及预置的计算方法确定与所述第一处理器核具有对应关系的第二处理器核,或者,根据所述第一处理器核的ID查找处理器核分组表确定与所述第一处理器核具有对应关系的第二处理器核;数值获取单元,用于从所述第二处理器核中获得所述第二处理器核总的cache访问率及累加次数计数值。20.根据权利要求18或19所述的装置,其特征在于,所述装置还包括第二处理单元,用于当所述第一参数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到所述第一扫描计算单元;第一更新单元,用于所述第一处理器核完成线程切换后,将当前运行的线程的类型标识保存到所述第一处理器核的当前运行线程描述符中。21.一种多核处理器系统,其特征在于,包括第一处理器核和第二处理器核,以及共享的硬件资源;所述第一处理器核和第二处理器核访问所述共享的硬件资源;所述第一处理器核用于当所述第一处理器核发生线程上下文切换时,确定与所述第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若所述第二处理器核当前运行的是缓存敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若所述第二处理器核当前运行的是缓存非敏感型线程,则在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在所述第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程,将当前运行的线程切换成查找到的的线程;或者,所述第一处理器核用于当所述第一处理器核发生线程上下文切换时,将所述第一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加到总的cache访问率中,将累加次数计数值加一;获取与所述第一处理器核具有对应关系的第二处理器核总的cache访问率及累加次数计数值;根据所述第一处理器核总的cache访问率及累加次数计数值,计算所述第一处理器核的平均cache访问率,根据所述第二处理器核总的cache访问率及累加次数计数值,计算所述第二处理器核的平均cache访问率,并将所述第一处理器核的平均cache访问率和所述第二处理器核的平均cache访问率求和作为第一参数值;扫描所述第一处理器核对应的处于就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与所述第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当所述第一参数值与第二参数值之间的差值大于或等于预置的数值,则将当前运行的线程切换成当前扫描的线程。22.根据权利要求21所述的系统,其特征在于,所述共享的硬件资源包括共享的存储设备和/或共享的硬件高速缓存;当所述第一处理器核和所述第二处理器核分别属于不同的处理器时,所述第一处理器核和第二处理器核访问所述共享的硬件高速缓存;或者,当所述第一处理器核和所述第二处理器核属于同一个处理器时,所述第一处理器核和第二处理器访问所述共享的存储设备和/或共享的硬件高速缓存。全文摘要本发明实施例公开了一种线程调度方法、线程调度装置及多核处理器系统,用于处理器核进行线程调度。本发明实施例方法包括当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。文档编号G06F15/16GK102495762SQ20111036277公开日2012年6月13日申请日期2011年11月16日优先权日2011年11月16日发明者刘仪阳,崔岩,谭玺,陈渝申请人:华为技术有限公司,清华大学