首页> 中国专利> 一种线程调度方法、线程调度装置及多核处理器系统

一种线程调度方法、线程调度装置及多核处理器系统

摘要

本发明实施例公开了一种线程调度方法、线程调度装置及多核处理器系统,用于处理器核进行线程调度。本发明实施例方法包括:当第一处理器核发生线程上下文切换时,确定与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到所需类型的线程时,将当前运行的线程切换成查找到的线程。

著录项

  • 公开/公告号CN103197977A

    专利类型发明专利

  • 公开/公告日2013-07-10

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;清华大学;

    申请/专利号CN201310134356.X

  • 发明设计人 刘仪阳;陈渝;谭玺;崔岩;

    申请日2011-11-16

  • 分类号G06F9/50;G06F15/16;

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2024-02-19 19:11:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-28

    授权

    授权

  • 2013-08-07

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20111116

    实质审查的生效

  • 2013-07-10

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,尤其涉及一种线程调度方法、线程调度装置及 多核处理器系统。

背景技术

线程是进程中的一个实体,不拥有系统资源,只有执行必须的一些数据 结构,线程可以创建和撤销,从而实现程序的并发执行。线程一般据具有就 绪、堵塞和执行三种基本状态。

目前在多核处理器系统中,所有的处理器核都可以共享地访问内存、I/O 和外部中断。系统中的硬件资源可以被多个处理器核共享,例如内存控制器、 最后一级高速缓存存储器(LLC,Last Level 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访问率与 第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第二参 数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值,则将 当前运行的线程切换成当前扫描的线程。

从以上技术方案可以看出,本发明实施例具有以下优点:

当第一处理器核发生线程上下文切换时,确定与该第一处理器核具有对 应关系的第二处理器核,若该第二处理器核当前运行的是缓存敏感型线程, 则在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存 非敏感型线程,或者若第二处理器核当前运行的是缓存非敏感型线程,则在 第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感 型线程,并将查找到的所需类型的线程切换成由该第一处理器核运行,从而 本发明实施例中的线程调度装置可使得不同缓存特征类型的线程能够协调运 行,进而避免第一处理器核及第二处理器核运行相同类型的线程而产生的资 源竞争或者资源浪费,有效的缓和了处理器核对共享资源的竞争,且可提高 共享资源的利用率,改善了多核处理器系统的性能。

附图说明

图1为本发明实施例中一种线程调度方法的一个示意图;

图2为本发明实施例中一种线程调度方法的另一示意图;

图3为本发明实施例中一种线程调度方法的另一示意图;

图4为本发明实施例中一种线程调度装置的一个示意图;

图5为本发明实施例中一种线程调度装置的另一示意图;

图6为本发明实施例中一种线程调度装置的另一示意图;

图7为本发明实施例中多核处理器系统的一个示意图;

图8-a为本发明实施例中多核处理器系统的一个物理架构示意图;

图8-b为本发明实施例中多核处理器系统的一个物理架构示意图;

图8-c为本发明实施例中多核处理器系统的一个物理架构示意图。

具体实施方式

本发明实施例提供了一种线程调度方法、线程调度装置及多核处理器系 统,用于对多核处理器系统中的共享硬件资源的处理器核上运行的线程进行 调度,能够有效的缓和共享硬件资源的多个处理器核对共享硬件资源的竞争, 从而提高共享资源的利用率,改善了多核处理器系统的性能。

在本发明实施例中,在处理器核对应的可执行连接格式(ELF,Executable  and Linkable Format)文件中创建线程之后,需要通过仿真实验确定该ELF文 件中的线程的类型,具体为:

1)若有n个线程,则将该n个线程依次编号为1~n,选择任意两个线程 同时运行,若线程i与线程j同时运行,那么将线程j在与线程i同时运行的 性能损耗,记为dij,在每一个线程均与其他的线程同时运行之后,可得到如 下的矩阵D:

其中,矩阵D中第i行表示线程1至n受线程i的影响程度,且第i行向 量的2范数可作为线程i的密集型指数;第i列表示线程i受线程1至n的影 响程度,且第i列向量的2范数可作为线程i的敏感性指数。

2)计算线程1~n的密集型指数及敏感性指数,具体的计算公式分别为:

其中,i∈(1,n)

利用上述的计算公式,可分别计算出线程1~n的密集型指数及敏感性指 数。

3)根据线程的密集性指数及敏感性指数分别计算出各线程的缓存敏感值 H,具体的计算公式为:

Hi=tan(线程i的敏感性指数/线程i的密集性指数),其中i∈(1,n);

若|Hi-1|≤预置的数值,则确定线程i为缓存比较敏感型线程;

若|Hi-1|>预置的数值,则确定线程i为缓存敏感型线程或者缓存非敏感 型线程,且需要进一步确定线程i的类型,进一步确定的方法为:若线程i 的密集性指数大于或等于该n个线程的密集性指数的平均值,则确定线程i 为缓存敏感型线程,若线程i的密集性指数小于该n个线程的密集性指数的 平均值时,则确定线程i为缓存非敏感型线程。

按上述的方法确定n个线程的类型之后,可设置线程的类型标识,将线 程的类型标识保存到线程对应的ELF文件中,使得当ELF中的线程在运行时, 正在运行的线程的类型标识可保存到对应处理器核的当前运行线程描述符 中,即当前运行线程描述符用于保存处理器核当前运行的线程的类型标识。

此外,在本发明实施例中,还需要将多核处理器系统的中的共享同一个 共享资源的处理器核进行分组,具体为:

若共享同一共享资源的处理器核的个数为偶数,则按处理器核的身份标 识码(ID,Identity)的顺序,以2个处理器核为一组进行分组,建立每一组 中两个处理器核之间的对应关系。

若共享同一cache的处理器核的个数为奇数,则按处理器核的ID的顺序 以2个为一组进行分组,剩余的一个处理器核不进行分组,对处理器核分组 之后,建立每一组中两个处理器核之间的对应关系,可利用处理器核的ID设 置具体的根据ID计算对应的处理器核的方法,或者通过建立处理器核分组表 的方式建立两个处理器核之间的对应关系。需要说明的是,在本发明实施例 中,当未分组的处理器核发生线程上下文切换时,按现有技术中的线程调度 的的方法进行处理。

本发明实施例针对计算机多核架构平台上的多核共享的资源。通常情况 下,在一个多核处理器系统中,有很多多核共享的系统资源,如LLC,当共 享同一LLC的一组处理器核,同时运行缓存敏感型线程时,将产生LLC竞争, 影响系统性能;当共享同一LLC的一组处理器核,同时运行cache缓存非敏 感型线程时,产生LLC资源浪费,在本发明实施例中将采用基于线程的类型 的调度方法,使得共享同一资源的一组处理器核分别运行缓存敏感型线程和 缓存非敏感型线程,达到避免共享资源竞争及浪费,提高共享资源利用率, 改善系统性能的目的。

需要说明的是,在本发明实施例中的多核处理系统中处理器核可以是中 央处理器(CPU,Central Processing Unit),或者微处理器(MPU,Micro Processor  Unit)、或者数字信号处理器(DSP,Digital Signal Processing)、或者图形处理 器(GPU,图形处理器)。

下面将具体的介绍本发明实施例中线程调度的方法,请参阅图1,为本 发明实施例中一种线程调度方法的实施例,应当理解的是,本发明实施例的 方法的执行主体可以是多核处理器系统中的处理器核,本发明实施例以第一 处理器核作为方法的执行主体举例来说明,本发明实施例的方法包括:

101、当第一处理器核发生线程上下文切换时,确定与第一处理器核具有 对应关系的第二处理器核当前运行的线程的类型;

在本发明实施例中,多核处理器核在运行线程的过程中,若共享同一共 享资源的处理器核中有某个CUP发生线程上下文切换,该CPU将对自身的线 程切换进行处理。

在本发明实施例中,为了更好的描述技术方案,将发生线程上下文切换 的处理器核称为第一处理器核,将与该第一处理器核具有对应关系的处理器 核称为第二处理器核,因此,当第一处理器核发生线程上下文切换时,第一 处理器核将确定与第一处理器核具有对应关系的第二处理器核。

102、若第二处理器核当前运行的是缓存敏感型线程,则从第一处理器核 对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或 者,若第二处理器核当前运行的是缓存非敏感型线程,则从第一处理器核对 应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;

在本发明实施例中,第二处理器核当前运行的线程可能是缓存较敏感型 线程、缓存敏感型线程、缓存非敏感型线程中的任意一种,当第二处理器核 当前运行的是缓存敏感型线程时,第一处理器核将从对应的处于就绪状态的 待运行线程的集合中查找一个缓存非敏感型线程,当第二处理器核当前运行 的线程是缓存非敏感型线程,第一处理器核则从对应的处于就绪状态的待运 行线程的集合中查找一个缓存敏感型线程。

需要说明的是,在本发明实施例中,处于就绪状态的待运行的线程的集 合是处理器核对应的待运行队列中预置数目的优先级队列的集合或者是预置 数目的线程或链表的集合,或者是红黑树组织结构的线程。

需要说明的是,在本发明实施例中,当第二处理器核当前运行的线程是 缓存较敏感型线程,第一处理器核将按现有技术中的方法完成线程的切换, 此处不再赘述。

103、当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找 到所需类型的线程时,将当前运行的线程切换成查找到的线程。

在本发明实施例中,第一处理器核在对应的处于就绪状态的待运行的线 程的集合中查找所需类型的线程,若查找到所需类型的线程,第一处理器核 将当前运行的线程切换成查找到的线程,完成线程的切换,使得当第二处理 器核上运行敏感型线程时,与其对应的第一处理器核上运行非敏感型线程, 当第二处理器核上运行非敏感型线程时,与其对应的第一处理器核上运行敏 感型线程。

在本发明实施例中,当第一处理器核发生线程上下文切换时,通过根据 与该第一处理器核对应的第二处理器核当前运行的线程的类型确定第一处理 器核将要运行的线程的类型,并在第一处理器核对应的处于就绪状态的待运 行线程中查找该类型的线程,能够有效的避免第一处理器核及第二处理器核 在同一个cache上产生的资源竞争或浪费,有效的缓解了资源竞争,提高了共 享资源的利用率,提高了系统的系统。

为了更好的理解本发明中的技术方案,请参阅图2,为本发明实施例中一 种线程调度的方法的实施例,应当理解的是,本发明实施例的方法的执行主 体可以是多核处理器系统中的处理器核,本发明实施例以第一处理器核作为 方法的执行主体来举例来说明,本发明实施例的方法包括:

201、当第一处理器核发生线程上下文切换时,确定与第一处理器核具有 对应关系的第二处理器核当前运行的线程的类型;

在本发明实施例中,第一处理器核可根据第一处理器核的ID及预置的计 算方法确定第二处理器核,其中,预置的计算方法与将处理器核分组的方法 有关,例如,若处理器核的ID为0,1,2,3,ID为0和1的处理器核为一 组,ID为2和3的处理器核为一组,则预置的计算方法可以为当第一处理器 核的ID为偶数时,将处理器核的ID与该第一处理器核的ID加1的值相同的 处理器核作为第二处理器核,若第一处理器核的ID为基数时,则将处理器核 的ID与该第一处理器核的ID减一的值相同的处理器核作为第二处理器核。 此外,系统还可在将处理器核分组时,建立处理器核分组表,使得在查找第 二处理器核时,可根据第一处理器核的ID查找该处理器核分组表确定第二处 理器核。在本发明实施例中,确定第二处理器核的方式有多种,此处不做限 定。

202、将第一处理器核当前运行的线程在当前时间片的cache访问率累加 到第一处理器核总的cache访问率中,将累加次数计数值加一;

在本发明实施例中,若第一处理器核将要切换当前运行的线程,第一处 理器核将当前运行的线程在当前时间片的cache访问率累加到第一处理器核 总的cache访问率中,将累加次数计数值加一,其中,第一处理器核当前运行 的线程在当前时间片的cache访问率为第一处理器核在当前时间片内运行当 前的线程时访问cache的次数与其运行当前线程时运行的指令次数的比值,第 一处理器核总的cache访问率为第一处理器核从系统启动开始运行线程的 cache访问率的累加值,且每累加一次,累加次数计数值加一。

203、若第二处理器核当前运行的是缓存敏感型线程,则从第一处理器核 对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或 者,若第二处理器核当前运行的是缓存非敏感型线程,则从第一处理器核对 应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程,若查找 到,则运行步骤204,若未查找到,则运行步骤205;

在本发明实施例中,处理器核当前运行的线程的类型标识保存在处理器 核的当前运行线程描述符中,因此,第一处理器核可从第二处理器核当前运 行线程描述符中获取第二处理器核当前运行的线程的类型标识,以确定第二 处理器核当前运行的线程类型,其中,线程的类型包括:缓存敏感型、缓存 较敏感型、缓存非敏感型。

在本发明实施例中,第一处理器核将根据第二处理器核当前运行的线程 的类型,在对应的处于就绪状态的待运行的线程的集合中查找所需类型的线 程,当第二处理器核当前运行的是缓存敏感型线程时,则从处于就绪状态的 待运行线程的集合中查找一个缓存非敏感型线程,或者,当第二处理器核当 前运行的是缓存非敏感型线程时,则从处于就绪状态的待运行线程的集合中 查找一个缓存非敏感型线程。

204、当在第一处理器核对应的处于就绪状态的待运行线程的集合中查找 到所需类型的线程时,第一处理器核将当前运行的线程切换成查找到的线程, 继续执行步骤209;

在本发明实施例中,第一处理器核若在对应的处于就绪状态的待运行线 程的集合中查找到所需类型的线程,则当前运行的线程切换成查找到的线程。

需要说明的是,第一处理器核查找所需类型的线程具体包括,扫描对应 的处于就绪状态的待运行线程的集合,从当前扫描到的线程所在的ELF文件 中获取该当前扫描的线程的类型标识,根据该类型标识确定当前扫描到的线 程的类型,若该当前扫描到线程为所需类型的线程,则停止扫描,运行步骤 204,将当前运行的线程切换成查找到的线程,若该当前扫描到的线程不是所 需类型的线程,则扫描下一个线程。

205、若在第一处理器核对应的处于就绪状态的待运行线程的集合中未查 找到所需类型的线程,则根据第一处理器核总的cache访问率及累加次数计数 值,计算第一处理器核的平均cache访问率;根据第二处理器核总的cache访 问率及累加次数计数值,计算第二处理器核的平均cache访问率;并将第一处 理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一 参数值;

在本发明实施例中,若在第一处理器核对应的处于就绪状态的待运行线 程的集合中未查找到所需类型的线程,第一处理器核将根据根据第一处理器 核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访问 率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理器 核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理器 核的平均cache访问率求和作为第一参数值,具体为:将第一处理器核总的 cache访问率除以第一处理器核的累加次数计数值,得到第一处理器核的平均 cache访问率,同时将第二处理器核总的cache访问率除以第二处理器核的累 加次数计数值,得到第二处理器核的平均cache访问率,最后将第一处理器核 的平均cache访问率与第二处理器核的平均cache访问率相加,得到第一参数 值。

206、扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算 当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线 程在上个时间片的cache访问率的和,作为第二参数值;

207、当第一参数值与第二参数值之间的差值大于或等于预置的数值时, 则将当前运行的线程切换成当前扫描的线程;

208、当第一参数值与第二参数值之间的差值小于预置的数值时,则扫描 下一条线程,返回执行步骤206;

在本发明实施例中,第一处理器核将扫描对应的处于就绪状态的待运行 线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器 核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值。

第一处理器核计算第一参数值与第二参数值之间的差值,若该差值大于 或等于预置的数值,则将当前运行的线程切换成当前扫描的线程;若该差值 小于预置的数值,则扫描下一个线程,返回执行步骤206,即计算当前扫描的 线程在上个时间片的cache访问率与第二处理器核当前运行的线程在上个时 间片的cache访问率的和,作为第二参数值。

需要说明的是,若已扫描的线程数达到预置的数目或者已扫描了预置数 目的优先级队列之后,仍未找到可切换的线程,第一处理器核将按现有技术 中的方法切换线程,此处不做限定。

209、第一处理器核发生线程上下文切换后,将当前运行的线程的类型标 识保存到第一处理器核的当前运行线程描述符中。

在本发明实施例中,第一处理器核发生上下文切换之后,需要更新当前 运行线程描述符中保存的线程的类型标识,即第一处理器核将当前运行的线 程的类型标识保存到第一处理器核的当前运行线程描述符中。

在本发明实施例中,根据与第一处理器核对应的第二处理器核当前运行 的线程的类型查找第一处理器核切换的线程的类型,且在未查找到所需类型 的线程时,再根据线程及处理器核的cache访问率确定第一处理器核切换的线 程,能够有效的避免具有对应关系的两个处理器核运行相同类型的线程,缓 解对共享资源的竞争,提高资源的利用率,改善多核处理器系统的性能。

在本发明实施例中,还可根据处理器核及线程的cache访问率直接确定第 一处理器核将要切换的线程,请参阅图3,为本发明实施例中一种线程调度方 法的实施例,包括:

301、当第一处理器核发生线程上下文切换时,将第一处理器核当前运行 的线程在当前时间片的cache访问率累加到第一处理器核总的cache访问率 中,将累加次数计数值加一;

在本发明实施例中,当第一处理器核发生线程上下文切换时,第一处理 器核将当前运行的线程在当前时间片的cache访问率累加到第一处理器核总 的cache访问率中,将累加次数计数值加一,其中,第一处理器核当前运行的 线程在当前时间片的cache访问率为第一处理器核在当前时间片运行当前的 线程时访问cache的次数与其运行当前线程时运行的指令次数的比值,第一处 理器核总的cache访问率为在当前时间片,第一处理器核运行线程的cache访 问率的累加值,且每累加一次,累加次数计数值加一。

302、获取与第一处理器核具有对应关系的第二处理器核总的cache访问 率及累加次数计数值;

在本发明实施例中,第一处理器核将根据第一处理器核的ID与预置的计 算方法确定第二处理器核,或者根据第一处理器核的ID查找处理器核分组表 确定第二处理器核,在确认第二处理器核之后,从第二处理器核中获得该第 二处理器核总的cache访问率及累加次数计数值。

303、根据第一处理器核总的cache访问率及累加次数计数值,计算第一 处理器核的平均cache访问率,根据第二处理器核总的cache访问率及累加次 数计数值,计算第二处理器核的平均cache访问率,并将第一处理器核的平均 cache访问率和第二处理器核的平均cache访问率求和作为第一参数值;

在本发明实施例中,第一处理器核将根据第一处理器核总的cache访问率 及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理器 核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问 率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问 率求和作为第一参数值,具体为:将第一处理器核总的cache访问率除以第一 处理器核的累加次数计数值,得到第一处理器核的平均cache访问率,同时将 第二处理器核总的cache访问率除以第二处理器核的累加次数计数值,得到第 二处理器核的平均cache访问率,最后将第一处理器核的平均cache访问率与 第二处理器核的平均cache访问率相加,得到第一参数值。

304、扫描第一处理器核对应的处于就绪状态的待运行线程的集合,计算 当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运行的线 程在上个时间片的cache访问率的和,作为第二参数值;

305、当第一参数值与第二参数值之间的差值大于或等于预置的数值,则 将当前运行的线程切换成当前扫描的线程;

在本发明实施例中,第一处理器核将扫描对应的处于就绪状态的待运行 线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器 核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值。第一 处理器核计算第一参数值与第二参数值之间的差值,若该差值大于或等于预 置的数值,则将第一处理器核上当前运行的线程切换成当前扫描的线程。

优选的,在本发明实施例中,还可执行以下步骤:

306、当第一参数值与第二参数值之间的差值小于预置的数值,则扫描下 一条线程,返回执行步骤304;

在本发明实施例中,当第一参数值与第二参数值之间的差值小于预置的 数值时,第一处理器核将扫描下一条线程,并返回执行步骤304中的内容, 即计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前运 行的线程在上个时间片的cache访问率的和,作为第二参数值。

307、第一处理器核的线程切换完成后,将当前运行的线程的类型标识保 存到第一处理器核的当前运行线程描述符中。

在本发明实施例中,第一处理器核发生上下文切换之后,需要更新当前 运行线程描述符中保存的线程的类型标识,即第一处理器核将当前运行的线 程的类型标识保存到第一处理器核的当前运行线程描述符中。

在本发明实施例中,当第一处理器核发生线程切换时,通过根据处理器 核总的cache访问率及线程在上个时间片的cache访问率确定将要切换的线 程,并完成切换,能够有效的避免同一组中的两个处理器核运行线程时产生 的共享资源竞争及浪费,有效的提高了共享资源的利用率,改善了多核处理 器系统的性能。

请参阅图4,为本发明实施例中一种线程调度装置的实施例,包括:

确定单元401,用于当第一处理器核发生线程上下文切换时,确定与第一 处理器核具有对应关系的第二处理器核当前运行的线程的类型;

查找单元402,用于若第二处理器核当前运行的是缓存敏感型线程,则在 第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存非敏 感型线程;或者,若第二处理器核当前运行的是缓存非敏感型线程,则在第 一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型 线程;

切换单元403,用于若在第一处理器核对应的处于就绪状态的待运行线程 的集合中查找到所需类型的线程,则将当前运行的线程切换成查找到的线程。

在本发明实施例中,当第一处理器核发生线程上下文切换时,第一处理 器核中的确定单元401与第一处理器核具有对应关系的第二处理器核当前运 行的线程的类型,若第二处理器核当前运行的是缓存敏感型线程,查找单元 402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找一个缓 存非敏感型线程;或者,若第二处理器核当前运行的是缓存非敏感型线程, 查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查 找一个缓存敏感型线程;若查找单元402在第一处理器核对应的处于就绪状 态的待运行线程的集合中查找到所需类型的线程,则切换单元403将前运行 的线程切换成查找到的线程。

本发明实施例的在线程调度装置,在一种实现方式下,其物理形态可以 是处理器核,处理器核可以是中央处理器(CPU,Central Processing Unit), 或者微处理器(MPU,Micro Processor Unit)、或者数字信号处理器(DSP, Digital Signal Processing)、或者图形处理器(GPU,图形处理器)。

可见,通过本发明实施例的线程调度装置,当第一处理器核发生线程上 下文切换时,通过根据与该第一处理器核对应的第二处理器核当前运行的线 程的类型确定第一处理器核将要运行的线程的类型,并查找该类型的线程完 成线程切换,能够有效的避免第一处理器核及第二处理器核在同一个共享资 源上产生的资源竞争或浪费,有效的缓解了资源竞争,提高了共享资源的利 用率,提高了系统的系统。

为了更好的理解本发明中的装置,请参阅图5,为本发明实施例中一种线 程调度装置的另一实施例,包括:

如图4所示的确定单元401,查找单元402,切换单元403,且与图4所 实施实例描述的内容相似,此处不再赘述。

其中,确定单元401包括:

处理器核确定单元501,用于根据第一处理器核的身份标识码ID及预置 的计算方法确定与第一处理器核具有对应关系的第二处理器核,或者用于根 据第一处理器核的ID查找处理器核分组表确定与第一处理器核具有对应关系 的第二处理器核;

线程确定单元502,用于从第二处理器核的当前运行线程描述符中获取第 二处理器核当前运行的线程的类型,线程的类型包括:缓存敏感型、缓存较 敏感型、缓存非敏感型。

在本发明实施例中,线程调度装置还包括:

累加单元503,将第一处理器核当前运行的线程在当前时间片的高速缓冲 存储器cache访问率累加到第一处理器核总的cache访问率中,将累加次数计 数值加一;

更新单元504,用于第一处理器核的线程切换完成后,将当前运行的线程 的类型标识保存到第一处理器核的当前运行线程描述符中;

计算单元505,用于若在第一处理器核对应的处于就绪状态的待运行线程 的集合中未查找到所需类型的线程,则根据第一处理器核总的cache访问率及 累加次数计数值,计算第一处理器核的平均cache访问率;根据第二处理器核 总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访问率; 并将第一处理器核的平均cache访问率和第二处理器核的平均cache访问率求 和作为第一参数值;

扫描计算单元506,用于扫描第一处理器核处于就绪状态的待运行线程的 集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理器核当前 运行的线程在上个时间片的cache访问率的和,作为第二参数值;

处理单元507,用于当第一参数值与第二参数值之间的差值大于或等于预 置的数值时,则将当前运行的线程切换成当前扫描的线程,及用于当第一参 数值与第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到 扫描计算单元506。

在本发明实施例中,当第一处理器核发生上下文线程切换时,确定单元 401中的处理器核确定单元501将根据第一处理器核的身份标识码ID及预置 的计算方法确定与第一处理器核具有对应关系的第二处理器核,或者用于根 据第一处理器核的ID查找处理器核分组表确定与第一处理器核具有对应关系 的第二处理器核,并由确定单元401中的线程确定单元502从第二处理器核 的当前运行线程描述符中获取第二处理器核当前运行的线程的类型;且累加 单元503将当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加 到第一处理器核总的cache访问率中,将累加次数计数值加一;若第二处理器 核当前运行的是缓存敏感型线程,查找单元402在第一处理器核对应的处于 就绪状态的待运行线程的集合中查找一个缓存非敏感型线程;或者,若第二 处理器核当前运行的是缓存非敏感型线程,查找单元402在第一处理器核对 应的处于就绪状态的待运行线程的集合中查找一个缓存敏感型线程;若查找 单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中查找到 所需类型的线程,则切换单元403将当前运行的线程切换成查找到的线程。 若查找单元402在第一处理器核对应的处于就绪状态的待运行线程的集合中 未查找一个缓存敏感型线程,计算单元505根据第一处理器核总的cache访问 率及累加次数计数值,计算第一处理器核的平均cache访问率,根据第二处理 器核总的cache访问率及累加次数计数值,计算第二处理器核的平均cache访 问率,并将第一处理器核的平均cache访问率和第二处理器核的平均cache访 问率求和作为第一参数值;再由扫描计算单元506扫描第一处理器核处于就 绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache访问 率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作为第 二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数值时, 处理单元507将当前运行的线程切换成当前扫描的线程,及当第一参数值与 第二参数值之间的差值小于预置的数值,则扫描下一条线程,返回到扫描计 算单元506。最后,第一处理器核的线程切换完成后,更新单元504将当前运 行的线程的类型标识保存到第一处理器核的当前运行线程描述符中。

本发明实施例的在线程调度装置,在一种实现方式下,其物理形态可以 是处理器核,处理器核可以是中央处理器(CPU,Central Processing Unit), 或者微处理器(MPU,Micro Processor Unit)、或者数字信号处理器(DSP, Digital Signal Processing)、或者图形处理器(GPU,图形处理器)。

可见,通过本发明实施例的线程调度装置,根据与第一处理器核对应的 第二处理器核当前运行的线程的类型查找第一处理器核切换的线程的类型, 且在未查找到所需类型的线程时,再根据线程及处理器核的cache访问率确定 第一处理器核切换的线程,能够有效的避免具有对应关系的两个处理器核运 行相同类型的线程,缓解对共享资源的竞争,提高资源的利用率,改善多核 处理器系统的性能。

请参阅图6,为本发明实施例中另一种线程调度装置的实施例,包括:

第一累加单元601,用于当第一处理器核发生线程上下文切换时,将第一 处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累加 到第一处理器核总的cache访问率中,将累加次数计数值加一;

第一获取单元602,用于获取与第一处理器核具有对应关系的第二处理器 核总的cache访问率及累加次数计数值;

第一计算单元603,用于根据第一处理器核总的cache访问率及累加次数 计数值,计算第一处理器核的平均cache访问率,根据第二处理器核总的cache 访问率及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一 处理器核的平均cache访问率和第二处理器核的平均cache访问率求和作为第 一参数值;

第一扫描计算单元604,用于扫描第一处理器核对应的处于就绪状态的待 运行线程的集合,计算当前扫描的线程在上个时间片内的cache访问率与第二 处理器核当前运行的线程在上个时间片内的cache访问率的和,作为第二参数 值;

第一处理单元605,用于当第一参数值与第二参数值之间的差值大于或等 于预置的数值,则将当前运行的线程切换成当前扫描的线程。

优选的,在本发明实施例中,线程调度装置还可以包括:

第二处理单元606,用于当第一参数值与第二参数值之间的差值小于预置 的数值,则扫描下一条线程,返回到第一扫描计算单元604;

第一更新单元607,用于第一处理器核的线程切换完成后,将当前运行的 线程的类型标识保存到第一处理器核的当前运行线程描述符中。

优选的,本发明实施例中,第一获取单元602具体包括:

核确定单元608,用于根据第一处理器核的身份标识码ID及预置的计算 方法确定与第一处理器核具有对应关系的第二处理器核,或者,根据第一处 理器核的ID查找处理器核分组表确定与第一处理器核具有对应关系的第二处 理器核;

数值获取单元609,用于从第二处理器核中获得第二处理器核总的cache 访问率及累加次数计数值。

在本发明实施例中,当第一处理器核发生线程上下文切换时,第一累加 单元601将第一处理器核当前运行的线程在当前时间片的高速缓冲存储器 cache访问率累加到第一处理器核总的cache访问率中,将累加次数计数值加 一;并由第一获取单元602获取与第一处理器核具有对应关系的第二处理器 核总的cache访问率及累加次数计数值,具体为:由核确定单元608根据第一 处理器核的身份标识码ID及预置的计算方法确定与第一处理器核具有对应关 系的第二处理器核,或者,根据第一处理器核的ID查找处理器核分组表确定 与第一处理器核具有对应关系的第二处理器核;再由数值获取单元609从第 二处理器核中获得第二处理器核总的cache访问率及累加次数计数值,接着, 第一计算单元603则根据第一处理器核总的cache访问率及累加次数计数值, 计算第一处理器核的平均cache访问率,根据第二处理器核总的cache访问率 及累加次数计数值,计算第二处理器核的平均cache访问率,并将第一处理器 核的平均cache访问率和第二处理器核的平均cache访问率求和作为第一参数 值,及第一扫描计算单元604扫描第一处理器核对应的处于就绪状态的待运 行线程的集合,计算当前扫描的线程在上个时间片的cache访问率与第二处理 器核当前运行的线程在上个时间片的cache访问率的和,作为第二参数值;当 第一参数值与第二参数值之间的差值大于或等于预置的数值,第一处理单元 605则将当前运行的线程切换成当前扫描的线程,当第一参数值与第二参数值 之间的差值小于预置的数值,第二处理单元606则扫描下一条线程,返回到 第一扫描计算单元604,最后,第一处理器核的线程切换完成后,第一更新单 元607将当前运行的线程的类型标识保存到第一处理器核的当前运行线程描 述符中。

本发明实施例的在线程调度装置,在一种实现方式下,其物理形态可以 是处理器核,处理器核可以是中央处理器(CPU,Central Processing Unit), 或者微处理器(MPU,Micro Processor Unit)、或者数字信号处理器(DSP, Digital Signal Processing)、或者图形处理器(GPU,图形处理器)。

可见,通过本发明实施例的线程调度装置,当第一处理器核发生线程切 换时,通过根据处理器核总的cache访问率及线程的cache访问率确定将要切 换的线程,并完成切换,能够有效的避免同一组中的两个处理器核运行线程 时产生的共享资源竞争及浪费,有效的提高了共享资源的利用率,改善了多 核处理器系统的性能。

请参阅图7,为本发明实施例的多核处理器系统的逻辑架构示意图,本发 明实施例的多核处理器系统可以包括:

第一处理器核701和第二处理器核702,以及共享的硬件资源703;

第一处理器核701和第二处理器核702访问共享的硬件资源703;

第一处理器核701用于:当第一处理器核发生线程上下文切换时,确定 与第一处理器核具有对应关系的第二处理器核当前运行的线程的类型;若第 二处理器核当前运行的是缓存敏感型线程,则在第一处理器核对应的处于就 绪状态的待运行线程的集合中查找一个缓存非敏感型线程,或者若第二处理 器核当前运行的是缓存非敏感型线程,则在第一处理器核对应的处于就绪状 态的待运行线程的集合中查找一个缓存敏感型线程;当在第一处理器核对应 的处于就绪状态的待运行线程的集合中查找到所需类型的线程,将当前运行 的线程切换成查找到的线程;

或者,

第一处理器核701用于:当第一处理器核发生线程上下文切换时,将第 一处理器核当前运行的线程在当前时间片的高速缓冲存储器cache访问率累 加到总的cache访问率中,将累加次数计数值加一;获取与第一处理器核具有 对应关系的第二处理器核总的cache访问率及累加次数计数值;根据第一处理 器核总的cache访问率及累加次数计数值,计算第一处理器核的平均cache访 问率,根据第二处理器核总的cache访问率及累加次数计数值,计算第二处理 器核的平均cache访问率,并将第一处理器核的平均cache访问率和第二处理 器核的平均cache访问率求和作为第一参数值;扫描第一处理器核对应的处于 就绪状态的待运行线程的集合,计算当前扫描的线程在上个时间片的cache 访问率与第二处理器核当前运行的线程在上个时间片的cache访问率的和,作 为第二参数值;当第一参数值与第二参数值之间的差值大于或等于预置的数 值,则将当前运行的线程切换成当前扫描的线程。

在本发明实施例中,共享的硬件资源703包括:共享的存储设备和/或共 享的硬件高速缓存;

需要说明的是,在本发明实施例中,以多核处理器系统包括第一处理器 核和第二处理器核来便于说明,以及,本发明实施例中,是以站在第一处理 器核的角度来阐述多核处理器系统中的处理器核的功能,应当理解的是,第 二处理器核的功能参照第一处理器核的功能,只是换个角度站在第二处理器 核的角度来说明,这里不再赘述。应当理解的是,本发明实施例的多核处理 器系统是以第一处理器核和第二处理器核作为代表来说明,本发明实施例的 多核处理器系统可以包括多个处理器核,这里的多个处理器核,可以是属于 同一个处理器,也可以是分别属于不同的处理器;

如图7所示的本发明实施例的多核处理器系统,在实际物理部署时,可 以理解为,以多核处理器系统包括一个处理器,且该处理器中包括第一处理 器核和第二处理器核,或者,以多核处理器系统包括两个处理器,其中一个 处理器包括第一处理器核,另一个处理器包括第二处理器核。

需要说明的是,在本发明实施例中,当第一处理器核和第二处理器核分 别属于不同的处理器时,该第一处理器核和第二处理器核可以访问共享的存 储设备;

当第一处理器核和第二处理器核属于同一个处理器时,该第一处理器核 和第二处理器可以访问共享的存储设备和/或共享的高速缓冲存储器。

在实际应用中,多核处理器系统可以包括:一个或多个处理器(下图8-a, 8-b和8-c中以两个处理器示意,但不限于此,也可以是包括一个处理器,该 处理器中包括多个处理器核),其中,每个处理器包括一个或多个处理器核(下 图8-a,8-b和8-c中以两个处理器核示意),可选的,所述每个处理器可以进 一步包括:共享的硬件高速缓存(如图8-a和8-c所示,例如LLC:last level  caches,最后一级缓存),所述处理器通过互联网络访问存储设备,这里的存 储设备可以是共享给多个处理器核的,这里的存储设备可以是一个或多个(下 图8-a,8-b和8-c中以一个存储设备示意,但不限于此)。

需要说明的是,在本发明实施例中,处理器之间通过互联网络访问共享 的存储设备,该互联网络可以是总线或者是互联芯片,且该共享的存储设备 可以是内存,如memory,或者是外存,如磁盘。

在本发明实施例中,多核处理器系统中包含的共享的硬件资源可以是共 享的存储设备,或者共享的硬件高速缓存,或者是共享的存储设备和共享的 硬件高速缓存,其中,共享的存储设备在处理器外部,通过总线与处理器核 连接,共享的硬件高速缓存在处理器内部。

请参阅图8-a,为本发明实施例中,多核处理器系统的一个物理架构示意 图,其中,多核处理器系统中包含共享的硬件高速缓存。

请参阅图8-b,为本发明实施例中,多核处理器系统的一个物理架构示意 图,其中多核处理器系统中包含共享的存储设备。

请参阅图8-c,为本发明实施例中,多核处理器系统的一个物理架构示意 图,其中多核处理器系统中包含共享的硬件高速缓存和共享的存储设备。

应当理解的是,在一种实现方式下,本发明实施例的处理器核可以包括 调度逻辑单元(如图8-a,图8-b,图8-c所示),这里的调度逻辑单元可以是 软件实现的,也可以是硬件实现的,也可以是软硬结合实现的。如果调度逻 辑单元是软件实现的话,可以理解成,当通用的处理器核通过互联网络访问 内存,在加载并执行该内存中存储的一段调度程序代码后,则具有本发明实 施例的处理器核的功能。应当理解的是,本发明实施例的处理器核上运行有 操作系统,该操作系统具体可以是Linux系统,或者Unix系统,也可以是 Windows等具有机器硬件和软件资源管理控制系统,所述操作系统之上运行 有前述的调度程序,所述调度程序表现为线程(thread)。

需要说明的是,在本发明实施例中,图4,图5及图6所示的在线程调度 装置,在一种实现方式下,其物理形态可以是处理器核,可以通过在处理器 核中包含调度逻辑单元(图8-a,8-b,8-c中用方框示意)实现,且该调度逻 辑单元可以是软件实现的,也可以是硬件实现的,也可以是软硬结合实现的。 或者,在另一种实现方式下,图4,图5及图6所示的在线程调度装置对应于 处理器核中包含调度逻辑单元(图8-a,8-b,8-c中用方框示意)。

综上所述,本发明实施例是基于线程类型的调度方法,在多核处理器系 统中,同一个处理器中的多个处理器核共享硬件高速缓存,如LLC,非同一 个处理器中的多核处理器共享存储设备,在现有技术中,当同一个处理器中 的多个处理器核共享同一LLC时,若同时运行缓存敏感性线程,将产生LLC 竞争,当同时运行缓存非敏感型线程时,将产生LLC浪费,在本发明实施例 提供的多核处理器系统中,线程调度装置能够根据与该处理器核共享同一资 源的的处理器核所运行的线程的类型,然后从该处理器核对应的处于就绪状 态的待运行线程中选择线程并运行,使得同一组处理器核上能够运行不同类 型的线程。该方法缓解了共享资源竞争,避免了共享资源浪费提高了共享资 源的利用率,使得系统性能得到良好的改善。

需要说明的是,本发明实施例不限于竞争资源中的LLC及内存控制器, 还适用于实现多核处理器系统中其他的竞争资源。

本发明实施例不限于计算机,适用于其他具有资源竞争协调调度的任何 装置。

本发明实施例不限于以提高性能为目的顺序调度,还适用于其他以顺序 调度为方法手段的场景。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤 是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机 可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上对本发明所提供的一种线程调度方法、线程调度装置及多核处理器 系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思 想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内 容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号