平码五不中公式规律
  • / 43
  • 下载费用:30 金币  

用于多处理器系统的定向事件信号告知.pdf

关 键 ?#21097;?/dt>
用于 处理器 系统 定向 事件 信号 告知
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580041819.5

申请日:

2015.07.24

公开号:

CN106663029A

公开日:

2017.05.10

当前法律状态:

实审

有效性:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 9/48申请日:20150724|||公开
IPC分类号: G06F9/48; G06F9/52 主分类号: G06F9/48
申请人: 高通股份有限公司
发明人: D·苏亚雷斯格拉西亚; H·赵; P·蒙特西诺斯奥尔特戈; G·C·卡斯卡瓦尔; J·克塞尼蒂斯
地址: 美国加利福尼亚
优先权: 2014.08.05 US 14/451,628
专利代理机构: 永新专利商标代理有限公司 72002 代理人: 张扬;王英
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580041819.5

授权公告号:

|||

法律状态公告日:

2017.06.06|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

多处理器计算设备方法通过以下方式来管理资源访问:?#22791;?#36164;源可用时,信号告知事件管理器以信号告知请求访问资源的处理器元件苏醒以访问该资源,或者?#22791;?#36164;源繁忙时,该处理器元件等待某个事件。处理器元件可以在等待访问所请求的资源时,进入休眠状态。当多个元件等待该资源时,在该资源可用时(608),以信号告知具有最高分配优先级的处理器元件苏醒,而不唤醒其它元件。可以基于启发式或者取决于计算设备或处理器元件的状态的?#38382;?#21521;等待该资源的处理器元件分配优先级。可以对等待资源的处理器元件的休眠持续时间进行估计,以及可以在休眠持续时间期间从调度队列中移除该处理器元件,或者为其分配另一个线程。

权利要求书

1.一种用于对具有多个处理器元件的计算设备?#31995;?#19968;个或多个公共资源进行竞争的
处理器元件进行管理的方法,包括:
响应于确定资源是不可用的,以信号告知请求访问所述资源的处理器元件等待一个事
件;以及
响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源。
2.根据权利要求1所述的方法,还包括:
响应于所述资源的可用性,向所述处理器元件分配用于访问所述资源的优先级;
接收用于指示所述资源的可用性的信号;以及
响应于用于指示所述资源的可用性的所述信号,识别所述多个处理器元件中被分配最
高优先级来访问所述资源的一个处理器元件,
其中,响应于所述资源变得可用以信号告知所述处理器元件访问所述资源包括:响应
于所述资源变得可用,以信号告知被分配最高优先级来访问所述资源的所述处理器元件访
问所述资源。
3.根据权利要求1所述的方法,其中:
响应于确定所述资源是不可用的以信号告知请求访问资源的处理器元件等待一个事
件包括:触发所述处理器元件进入休眠状态;以及
响应于所述资源变得可用以信号告知所述处理器元件访问所述资源包括:以信号告知
所述处理器元件苏醒。
4.根据权利要求1所述的方法,其中,向所述处理器元件分配用于访问所述资源的优先
级包括:
接收用于在计算所述处理器元件的所述优先级时使用的?#38382;?br />将所述处理器元件的所述?#38382;?#19982;等待访问所述资源的所述多个处理器元件中的任何
一个处理器元件的?#38382;?#36827;行比较;
基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级;以及
将所确定的所述处理器元件的所述优先级存储在存储器中。
5.根据权利要求4所述的方法,其中,接收用于在计算所述处理器元件的所述优先级时
使用的?#38382;?#21253;括:
以信号告知所述处理器元件返回用于在计算所述处理器元件的所述优先级时使用的
所述?#38382;?br />
从所述处理器元件接收所述?#38382;?#20197;及
将所述?#38382;?#23384;储在存储器中。
6.根据权利要求5所述的方法,还包括:
基于所述计算设备的状态,确定用于在计算所述处理器元件的所述优先级时使用的所
述?#38382;?#20854;中,以信号告知所述处理器元件返回用于在计算所述处理器元件的所述优先级
时使用的所述?#38382;?#21253;括:以信号告知所述处理器元件返回所确定的?#38382;?br />
7.根据权利要求4所述的方法,其中,接收用于在计算所述处理器元件的所述优先级时
使用的?#38382;?#21253;括:接收与所述处理器元件有关的温?#21462;?br />
8.根据权利要求4所述的方法,其中,接收用于在计算所述处理器元件的所述优先级时
使用的所述?#38382;?#21253;括:接收与所述处理器元件有关的频率。
9.根据权利要求4所述的方法,其中,接收用于在计算所述处理器元件的所述优先级时
使用的所述?#38382;?#21253;括:接收对所述处理器元件与另一个处理器元件共享的高速缓存的指
示。
10.根据权利要求4所述的方法,其中,接收用于在计算所述处理器元件的所述优先级
时使用的所述?#38382;?#21253;括:接收对所述处理器元件与另一个处理器元件的邻近度的指示。
11.根据权利要求2所述的方法,其中,响应于资源的可用性,向所述处理器元件分配用
于访问所述资源的优先级包括:
跟踪所述处理器元件的苏醒统计;
判断所述处理器元件的所述苏醒统计是否超过苏醒门限;以及
响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分
配用于访问所述资源的高优先级。
12.根据权利要求2所述的方法,还包括:
向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先
级;以及
其中,响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源包括:当前
访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件。
13.根据权利要求1所述的方法,还包括:
检测请求访问所述资源的多个线程;以及
请求操作系统将所述多个线程迁移到所述多个处理器元件中的选择的一组。
14.根据权利要求1所述的方法,还包括:
估计所述处理器元件在等待所述资源时的休眠时间;
基于所估计的休眠时间,确定所述处理器元件的休眠状态;以及
向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现。
15.根据权利要求1所述的方法,还包括:
估计所述处理器元件在等待所述资源时的休眠时间;以及
向所述计算设备的操作系统通知所估计的所述处理器元件的休眠时间。
16.根据权利要求15所述的方法,还包括:
在与所估计的所述处理器元件的休眠时间相关联的一?#38382;?#38388;,从调度队列中移除所述
处理器元件。
17.根据权利要求15所述的方法,还包括:
在所估计的休眠时间期间,为所述处理器元件分配线程。
18.根据权利要求1所述的方法,还包括:
在信号告知事件管理器之间进行通信,以管理所述多个处理器元件的信号告知。
19.一种计算设备,包括:
多个处理器元件;以及
通信地连接到所述多个处理器元件的信号告知事件管理器,其配置有信号告知事件管
理器可执行指令以执行包括以下各项的操作:
响应于确定资源是不可用的,以信号告知请求访问所述资源的处理器元件等待一个事
件;以及
响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源。
20.根据权利要求19所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
响应于所述资源的可用性,向所述处理器元件分配用于访问所述资源的优先级;
接收用于指示所述资源的可用性的信号;以及
响应于用于指示所述资源的可用性的所述信号,识别所述多个处理器元件中被分配最
高优先级来访问所述资源的一个处理器元件,
其中,响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源包括:响应
于所述资源变得可用,以信号告知被分配最高优先级来访问所述资源的所述处理器元件访
问所述资源。
21.根据权利要求19所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得:
响应于确定资源是不可用的,以信号告知请求访问资源的处理器元件等待一个事件包
括:触发所述处理器元件进入休眠状态;以及
响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源包括:以信号告
知所述处理器元件苏醒。
22.根据权利要求19所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得向所述处理器元件分配用于访问所述资源的优
先级包括:
接收用于在计算所述处理器元件的所述优先级时使用的?#38382;?br />将所述处理器元件的所述?#38382;?#19982;等待访问所述资源的所述多个处理器元件中的任何
一个处理器元件的?#38382;?#36827;行比较;
基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级;以及
将所确定的所述处理器元件的所述优先级存储在存储器中。
23.根据权利要求22所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得接收用于在计算所述处理器元件的所述优先级
时使用的?#38382;?#21253;括:
以信号告知所述处理器元件返回用于在计算所述处理器元件的所述优先级时使用的
所述?#38382;?br />
从所述处理器元件接收所述?#38382;?#20197;及
将所述?#38382;?#23384;储在存储器中。
24.根据权利要求23所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
基于所述计算设备的状态,确定用于在计算所述处理器元件的所述优先级时使用的所
述?#38382;?#20854;中,以信号告知所述处理器元件返回用于在计算所述处理器元件的所述优先级
时使用的所述?#38382;?#21253;括:以信号告知所述处理器元件返回所确定的?#38382;?br />
25.根据权利要求22所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得接收用于在计算所述处理器元件的所述优先级
时使用的?#38382;?#21253;括:接收与所述处理器元件有关的温?#21462;?br />
26.根据权利要求22所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得接收用于在计算所述处理器元件的所述优先级
时使用的所述?#38382;?#21253;括:接收与所述处理器元件有关的频率。
27.根据权利要求22所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得接收用于在计算所述处理器元件的所述优先级
时使用的所述?#38382;?#21253;括:接收对所述处理器元件与另一个处理器元件共享的高速缓存的指
示。
28.根据权利要求22所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得接收用于在计算所述处理器元件的所述优先级
时使用的所述?#38382;?#21253;括:接收对所述处理器元件与另一个处理器元件的邻近度的指示。
29.根据权利要求20所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行操作,使得响应于资源的可用性,向所述处理器元件分配
用于访问所述资源的优先级包括:
跟踪所述处理器元件的苏醒统计;
判断所述处理器元件的所述苏醒统计是否超过苏醒门限;以及
响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分
配用于访问所述资源的高优先级。
30.根据权利要求20所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先
级;以及
其中,响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源包括:当前
访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件。
31.根据权利要求19所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
检测请求访问所述资源的多个线程;以及
请求操作系统将所述多个线程迁移到所述多个处理器元件中的选择的一组。
32.根据权利要求19所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;
基于所估计的休眠时间,确定所述处理器元件的休眠状态;以及
向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现。
33.根据权利要求19所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;以及
向所述计算设备的操作系统通知所估计的所述处理器元件的休眠时间。
34.根据权利要求33所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
在与所估计的所述处理器元件的休眠时间相关联的一?#38382;?#38388;,从调度队列中移除所述
处理器元件。
35.根据权利要求33所述的计算设备,其中,所述信号告知事件管理器还配置有信号告
知事件管理器可执行指令以执行还包括以下各项的操作:
在所估计的休眠时间期间,为所述处理器元件分配线程。
36.根据权利要求19所述的计算设备,还包括:多个信号告知事件管理器,其中所述多
个信号告知事件管理器被配置为彼此之间进行通信,以实现所述信号告知事件管理器可执
行指令。
37.一种其上存储有处理器可执行软件指令,以使得处理器执行包括以下各项的操作
的非临时性处理器可读介?#21097;?br />
响应于确定资源是不可用的,以信号告知请求访问所述资源的处理器元件等待一个事
件;以及
响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源。
38.根据权利要求37所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
响应于所述资源的可用性,向所述处理器元件分配用于访问所述资源的优先级;
接收用于指示所述资源的可用性的信号;以及
响应于用于指示所述资源的可用性的所述信号,识别多个处理器元件中被分配最高优
先级来访问所述资源的一个处理器元件,
其中,响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源包括:响应
于所述资源变得可用,以信号告知被分配最高优先级来访问所述资源的所述处理器元件访
问所述资源。
39.根据权利要求37所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得:
响应于确定资源是不可用的,以信号告知请求访问所述资源的处理器元件等待一个事
件包括:触发所述处理器元件进入休眠状态;以及
响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源包括:以信号告
知所述处理器元件苏醒。
40.根据权利要求37所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得向所述处理器元件分配用于访问所述资源
的优先级包括:
接收用于在计算所述处理器元件的所述优先级时使用的?#38382;?br />将所述处理器元件的所述?#38382;?#19982;等待访问所述资源的所述多个处理器元件中的任何
一个处理器元件的?#38382;?#36827;行比较;
基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级;以及
将所确定的所述处理器元件的所述优先级存储在存储器中。
41.根据权利要求40所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得接收用于在计算所述处理器元件的所述优
先级时使用的?#38382;?#21253;括:
以信号告知所述处理器元件返回用于在计算所述处理器元件的所述优先级时使用的
所述?#38382;?br />
从所述处理器元件接收所述?#38382;?#20197;及
将所述?#38382;?#23384;储在存储器中。
42.根据权利要求41所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
基于计算设备的状态,确定用于在计算所述处理器元件的所述优先级时使用的所述参
数,其中,以信号告知所述处理器元件返回用于在计算所述处理器元件的所述优先级时使
用的所述?#38382;?#21253;括:以信号告知所述处理器元件返回所确定的?#38382;?br />
43.根据权利要求40所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得接收用于在计算所述处理器元件的所述优
先级时使用的?#38382;?#21253;括:接收与所述处理器元件有关的温?#21462;?br />
44.根据权利要求40所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得接收用于在计算所述处理器元件的所述优
先级时使用的所述?#38382;?#21253;括:接收与所述处理器元件有关的频率。
45.根据权利要求40所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得接收用于在计算所述处理器元件的所述优
先级时使用的所述?#38382;?#21253;括:接收对所述处理器元件与另一个处理器元件共享的高速缓存
的指示。
46.根据权利要求40所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得接收用于在计算所述处理器元件的所述优
先级时使用的所述?#38382;?#21253;括:接收对所述处理器元件与另一个处理器元件的邻近度的指
示。
47.根据权利要求38所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行操作,使得响应于资源的可用性,向所述处理器元件
分配用于访问所述资源的优先级包括:
跟踪所述处理器元件的苏醒统计;
判断所述处理器元件的所述苏醒统计是否超过苏醒门限;以及
响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分
配用于访问所述资源的高优先级。
48.根据权利要求38所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先
级;以及
其中,响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源包括:当前
访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件。
49.根据权利要求37所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
检测请求访问所述资源的多个线程;以及
请求操作系统将所述多个线程迁移到多个处理器元件中的选择的一组。
50.根据权利要求37所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;
基于所估计的休眠时间,确定所述处理器元件的休眠状态;以及
向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现。
51.根据权利要求37所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;以及
向计算设备的操作系统通知所估计的所述处理器元件的休眠时间。
52.根据权利要求51所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
在与所估计的所述处理器元件的休眠时间相关联的一?#38382;?#38388;,从调度队列中移除所述
处理器元件。
53.根据权利要求51所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
在所估计的休眠时间期间,为所述处理器元件分配线程。
54.根据权利要求37所述的非临时性处理器可读介?#21097;?#20854;中,所存储的处理器可执行软
件指令被配置为使得所述处理器执行还包括以下各项的操作:
在多个信号告知事件管理器之间进行通信,以管理多个处理器元件的信号告知。
55.一种计算设备,包括:
用于响应于确定资源是不可用的,以信号告知请求访问所述资源的处理器元件等待一
个事件的单元;以及
用于响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源的单元。
56.根据权利要求55所述的计算设备,还包括:
用于响应于所述资源的可用性,向所述处理器元件分配用于访问所述资源的优先级的
单元;
用于接收用于指示所述资源的可用性的信号的单元;以及
用于响应于用于指示所述资源的可用性的所述信号,识别多个处理器元件中被分配最
高优先级来访问所述资源的一个处理器元件的单元,
其中,用于响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源的单
元包括:用于响应于所述资源变得可用,以信号告知被分配最高优先级来访问所述资源的
所述处理器元件访问所述资源的单元。
57.根据权利要求55所述的计算设备,其中:
用于响应于确定所述资源是不可用的,以信号告知请求访问所述资源的处理器元件等
待一个事件的单元包括:用于触发所述处理器元件进入休眠状态的单元;以及
用于响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源的单元包
括:用于以信号告知所述处理器元件苏醒的单元。
58.根据权利要求55所述的计算设备,其中,用于向所述处理器元件分配用于访问所述
资源的优先级的单元包括:
用于接收用于在计算所述处理器元件的所述优先级时使用的?#38382;?#30340;单元;
用于将所述处理器元件的所述?#38382;?#19982;等待访问所述资源的多个处理器元件中的任何
一个处理器元件的?#38382;?#36827;行比?#31995;?#21333;元;
用于基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级的单元;以

用于将所确定的所述处理器元件的所述优先级存储在存储器中的单元。
59.根据权利要求58所述的计算设备,其中,用于接收用于在计算所述处理器元件的所
述优先级时使用的?#38382;?#30340;单元包括:
用于以信号告知所述处理器元件返回用于在计算所述处理器元件的所述优先级时使
用的所述?#38382;?#30340;单元;
用于从所述处理器元件接收所述?#38382;?#30340;单元;以及
将所述?#38382;?#23384;储在存储器中。
60.根据权利要求59所述的计算设备,还包括:
用于基于所述计算设备的状态,确定用于在计算所述处理器元件的所述优先级时使用
的所述?#38382;?#30340;单元,其中,用于以信号告知所述处理器元件返回用于在计算所述处理器元
件的所述优先级时使用的所述?#38382;?#30340;单元包括:用于以信号告知所述处理器元件返回所确
定的?#38382;?#30340;单元。
61.根据权利要求58所述的计算设备,其中,用于接收用于在计算所述处理器元件的所
述优先级时使用的所述?#38382;?#30340;单元包括:用于接收与所述处理器元件有关的温度的单元。
62.根据权利要求58所述的计算设备,其中,用于接收用于在计算所述处理器元件的所
述优先级时使用的所述?#38382;?#30340;单元包括:用于接收与所述处理器元件有关的频率的单元。
63.根据权利要求58所述的计算设备,其中,用于接收用于在计算所述处理器元件的所
述优先级时使用的所述?#38382;?#30340;单元包括:用于接收对所述处理器元件与另一个处理器元件
共享的高速缓存的指示的单元。
64.根据权利要求58所述的计算设备,其中,用于接收用于在计算所述处理器元件的所
述优先级时使用的所述?#38382;?#30340;单元包括:用于接收对所述处理器元件与另一个处理器元件
的邻近度的指示的单元。
65.根据权利要求56所述的计算设备,其中,用于响应于资源的可用性,向所述处理器
元件分配用于访问所述资源的优先级的单元包括:
用于跟踪所述处理器元件的苏醒统计的单元;
用于判断所述处理器元件的所述苏醒统计是否超过苏醒门限的单元;以及
用于响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元
件分配用于访问所述资源的高优先级的单元。
66.根据权利要求56所述的计算设备,还包括:
用于向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述
优先级的单元;以及
其中,用于响应于所述资源变得可用,以信号告知所述处理器元件访问所述资源的单
元包括:用于当前访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知
所述处理器元件的单元。
67.根据权利要求55所述的计算设备,还包括:
用于检测请求访问所述资源的多个线程的单元;以及
用于请求操作系统将所述多个线程迁移到多个处理器元件中的选择的一组的单元。
68.根据权利要求55所述的计算设备,还包括:
用于估计所述处理器元件在等待所述资源时的休眠时间的单元;
用于基于所估计的休眠时间,确定所述处理器元件的休眠状态的单元;以及
用于向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现的单元。
69.根据权利要求55所述的计算设备,还包括:
用于估计所述处理器元件在等待所述资源时的休眠时间的单元;
用于向所述计算设备的操作系统通知所估计的所述处理器元件的休眠时间的单元。
70.根据权利要求69所述的计算设备,还包括:
用于在与所估计的所述处理器元件的休眠时间相关联的一?#38382;?#38388;,从调度队列中移除
所述处理器元件的单元。
71.根据权利要求69所述的计算设备,还包括:
用于在所估计的休眠时间期间,为所述处理器元件分配线程的单元。
72.根据权利要求55所述的计算设备,还包括:
用于在多个信号告知事件管理器之间进行通信,以管理多个处理器元件的信号告知的
单元。

说明书

用于多处理器系统的定向事件信号告知

背景技术

多核处理器?#35272;?#20110;原?#26377;?#20197;保证并行应用的正确性。为了防止其它进程中断原子
操作的执行,一种实现的解决方案是进程获取在互斥中执行临界区时所需要资源的锁,使
得直到从这些锁中释放这些资源为止,防止其它进程使用相同的资源。一种这种锁的例子
是自旋锁。自旋锁是活动地进行等待,直到获得该锁为止的原子操作,该操作重复地检查该
锁是否可用。因为自旋锁进程保?#21482;?#21160;但却不执行有用的任务,因此由于处理器不?#31995;?#20174;
存储器中加载该锁,所以这?#21482;?#21160;等待操作消耗能量。其它锁或其它资源获取方案也类似
地与实现设备的效率和性能的某种成本相关联。为?#31169;?#30465;能量,一些处理器架构具有用于
等待事件和信号告知事件的指令(例如,ARM等待事件(“WFE”)/设置事件(“SEV”))。这些架
构以不加区分的方式来使用这些指令,在该情况下,将指令广播给所有等待的处理器内核,
并在声明用于执行临界区的可用锁的处理器内核之间产生竞争状况。

当使用唤醒指令来以信号告知处理器内核执行原子进程时,诸如Linux之类的一
些操作系统以软件方式对该唤醒进行重新?#21028;潁?#20197;避免高速缓存乒乓现象。在这些情况下,
操作系统层级处理可能需要内核活动和上下文切换。当仅仅只有一个内核能够使用该资源
时,在使用上面所描述的不加区分指令信号告知的架构中,这可能导致性能下降和资源使
用增加,其中在该情况下,会以信号告知多个处理器内核苏醒以获得可用的锁。

发明内容

各个实施例的方法和装置提供了用于多处理器系统的定向事件信号告知的电路
和方法。实施例方法可以包括:响应于确定资源是不可用的,以信号告知请求访问所述资源
的处理器元件以等待一个事件;响应于所述资源变得可用,以信号告知所述处理器元件以
访问所述资源。实施例可以包括:响应于所述资源的可用性,向所述处理器元件分配用于访
问所述资源的优先级?#21796;?#25910;用于指示所述资源的可用性的信号;响应于指示该资源的可用
性的信号,识别所述多个处理器元件中被分配最高优先级来访问所述资源的处理器元件,
其中,响应于所述资源变得可用,以信号告知所述处理器元件以访问所述资源可以包括:响
应于所述资源变得可用,以信号告知被分配最高优先级来访问所述资源的处理器元件以访
问所述资源。在一个实施例中,响应于确定资源是不可用的,以信号告知请求访问资源的处
理器元件以等待事件可以包括:触发所述处理器元件进入休眠状态;响应于所述资源变得
可用,以信号告知所述处理器元件以访问所述资源可以包括:以信号告知所述处理器元件
以进行苏醒。

在一个实施例中,向所述处理器元件分配用于访问所述资源的优先级可以包括:
接收用于在计算所述处理器元件的所述优先级时使用的?#38382;唤?#25152;述处理器元件的所述参
数与等待访问所述资源的所述多个处理器元件中的任?#25105;?#20010;处理器元件的?#38382;?#36827;行比较;
基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级?#21796;?#25152;确定的所述处
理器元件的所述优先级存储在存储器中。在一个实施例中,接收用于在计算所述处理器元
件的所述优先级时使用的?#38382;?#21487;以包括:以信号告知所述处理器元件以返回用于在计算所
述处理器元件的所述优先级时使用的?#38382;?#20174;所述处理器元件接收所述?#38382;唤?#25152;述?#38382;?br />存储在存储器中。一种实施例方法可以包括:基于所述计算设备的状态,确定用于在计算所
述处理器元件的所述优先级时使用的?#38382;?#20854;中,以信号告知所述处理器元件以返回用于
在计算所述处理器元件的所述优先级时使用的?#38382;?#21487;以包括:以信号告知所述处理器元件
以返回所确定的?#38382;?br />

在一个实施例中,接收用于在计算所述处理器元件的所述优先级时使用的?#38382;?#21487;
以包括:接收与所述处理器元件有关的温?#21462;?#22312;一个实施例中,接收用于在计算所述处理器
元件的所述优先级时使用的?#38382;?#21487;以包括:接收与所述处理器元件有关的频率。在一个实
施例中,接收用于在计算所述处理器元件的所述优先级时使用的?#38382;?#21487;以包括:接收所述
处理器元件与另一个处理器元件共享的高速缓存的指示。在一个实施例中,接收用于在计
算所述处理器元件的所述优先级时使用的?#38382;?#21487;以包括:接收所述处理器元件与另一个处
理器元件的邻近度的指示。

在一个实施例中,响应于资源的可用性,向所述处理器元件分配用于访问所述资
源的优先级可以包括:跟踪针对所述处理器元件的苏醒统计;判断针对所述处理器元件的
所述苏醒统计是否超过苏醒门限;响应于确定针对所述处理器元件的所述苏醒统计超过所
述苏醒门限,向所述处理器元件分配用于访问所述资源的高优先级。

一种实施例方法可以包括:向当前访问所述资源的另一个处理器元件发送被分配
给所述处理器元件的所述优先级,其中,响应于所述资源变得可用,以信号告知所述处理器
元件以访问所述资源可以包括:当前访问所述资源的所述另一个处理器元件在释放所述资
源时,以信号告知所述处理器元件。一种实施例方法可以包括:检测请求访问所述资源的多
个线程;请求操作系统将所述多个线程迁移到所述多个处理器元件?#37266;?#25321;的一组。

一种实施例方法可以包括:估计所述处理器元件在等待所述资源时的休眠时间;
基于所估计的休眠时间,确定所述处理器元件的休眠状态;向所述处理器元件通知所述休
眠状态,以便在等待所述资源时进行实现。一种实施例方法可以包括:估计所述处理器元件
在等待所述资源时的休眠时间;向所述计算设备的操作系统通知所估计的所述处理器元件
的休眠时间。一种实施例方法可以包括:在与所估计的所述处理器元件的休眠时间相关联
的一?#38382;?#38388;,从调度队列中移除所述处理器元件。一种实施例方法可以包括:在所估计的休
眠时间期间,为所述处理器元件分配线程。一种实施例方法可以包括:在信号告知事件管理
器之间进行通信,以管理所述多个处理器元件的信号告知。

一种实施例包括一种计算设备,该计算设备具有彼此之间通信连接的多个处理器
元件和信号告知事件管理器,其中,所述信号告知事件管理器被配置有信号告知事件管理
器可执行指令,以执行上面所描述的实施例方法中的一个或多个的操作。

一种实施例包括一种其上存储有处理器可执行软件指令的非临时性处理器可读
介?#21097;?#25152;述处理器可执行软件指令使处理器执行上面所描述的实施例方法中的一个或多个
的操作

一种实施例包括一种计算设备,该计算设备具有用于执行上面所描述的实施例方
法中的一个或多个的功能的单元。

附图说明

被并入本文并且构成本说明书一部分的附图描绘了本发明的示例性实施例,并且
连同上面给出的概括描述以及下面给出的详?#35813;?#36848;一起来解释本发明的特征。

图1是描绘适合于实现实施例的计算设备的组件框图。

图2A-2D是描绘适合于实现实施例的示例性多核处理器和SoC的组件框图,其中该
多核处理器和SoC包括至少一个信号告知事件管理器。

图3是描绘适合于实现实施例、具有簇架构和包括信号告知事件管理器的示例性
多核处理器的组件框图。

图4是根据一个实施例,描绘处理器元件和它们分配的优先级之间的关系的示例
性表。

图5是根据一个实施例,描绘多处理器系统中的信号告知定向事件的处理流程和
信号传送流。

图6是描绘用于在多处理器系统中实现说明的以信号告知定向事件的实施例方法
的处理流程图。

图7是描绘用于在多处理器系统中实现用于以信号告知定向事件的锁资源访问请
求等待列表的实施例方法的处理流程图。

图8是描绘用于在多处理器系统中实现用于以信号告知定向事件的处理器元件的
优先级划分的实施例方法的处理流程图。

图9是描绘用于在多处理器系统中实现用于以信号告知定向事件的饥饿避免的实
施例方法的处理流程图。

图10是描绘用于在多处理器系统中利用以信号告知定向事件实现锁感知调度的
实施例方法的处理流程图。

图11是描绘用于在多处理器系统中利用以信号告知定向事件实现锁停转(stall)
动作的实施例方法的处理流程图。

图12是描绘用于在多处理器系统中利用以信号告知定向事件实现锁停转动作的
实施例方法的处理流程图。

图13是描绘适合于结合各个实施例使用的示例性移动计算设备的组件框图。

图14是描绘适合于结合各个实施例使用的示例性移动计算设备的组件框图。

图15是描绘适合于结合各个实施例使用的示例性服务器的组件框图。

具体实施方式

现在参照附图来详细地描述各个实施例。在可以的地方,贯穿附图使用相同的附
图标记来指代相同或者类似的部件。对于特定示例和实现的引用只是用于说明目的,而不
是旨在限制本发明或者权利要求的保护?#27573;А?br />

本文可互换地使用术语“计算设备”和“移动计算设备”来指代下面中的任?#25105;?#39033;
或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计
算机、平板计算机、智能本、超级本、掌上计算机、无线电子邮件接收机、具备多媒体互联网
功能的蜂窝电话、无线游戏控制器、以及包括存储器和可编程多处理器(例如,多核、多套接
字或多CPU)的类似个人电子设备。虽然各个实施例对于诸如智能电话之类的移动计算设备
(其中移动计算设备具有有限的存储器和电池资源)特别有用,但这些实施例通常也可用于
实现多个存储器设备和有限的功?#35797;?#31639;的任何电子设备,其中在该情况下,减少处理器的
功耗可以延长移动计算设备的电池工作时间。

本文使用术语“片上系统”(SoC)指代一组相互连接的电子电路,其通常包括但不
限于:硬件内核、存储器和通信接口。硬件内核可以包括各种不同类型的处理器元件,例如,
通用处理器、?#37266;?#22788;理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单
元(APU)、辅助处理器、单核处理器、多核处理器和单独的处理器内核。硬件内核还可以体现
其它硬件和硬件组合,例如,现场可编程门阵列(FPGA)、专用集成电路(ASCI)、其它可编程
逻辑器件、分离门逻辑器件、晶体管逻辑器件、性能监测硬件、看门狗硬件和时间基准。可以
对集成电?#26041;信?#32622;,使得集成电路的部件位于单片的半导体材料(例如,硅)上。

实施例包括用于通过使用系统状态信息,动态地改变多处理器元件系统中的每一
个处理器元件接收信号的时间的方法以及实现这些方法的计算设备。可以利用硬件和/或
软件来实现信号告知事件管理器,以基于系统和环境状态对事件进?#20449;判潁?#26469;管理事件和
针对各个处理器元件的信号告知唤醒。一个或多个信号告知事件管理器可以计算基于启发
式的通知优先级,以及按照根据启发性所确定的优先级来确定的顺序,向各个处理器元件
发送事件(例如,唤醒和等待信号)的通知。可以基于信号告知事件,来选择响应于特定的信
号告知事件来应用的用于确定处理器元件优先级的启发性,可以通过将该启发性直接编码
在接收的信号告知事件指令中,来将其提供给信号告知事件管理器,可以从与信号告知事
件相关联的寄存器或者存储器位置读取该启发性,或者在信号告知事件管理器中预先规定
和存储用于不同的信号告知模式或事件的启发性。在一个实施例中,可以使用启发式方法,
基于处理器元件的温度(从低到高)来确定用于处理器元件的信号告知优先级的顺序,以减
少热节流的机率。在一个实施例中,该启发式方法可以是基于元件的操作频率(从高到低),
以使执行时间最小。在一个实施例中,该启发式方法可以基于某些处理器元件和邻近的处
理器元件之间的共享高速缓存或者其它资源(例如,加速器或功能单元)(与远程处理器元
件相比,优选?#38236;?#22788;理器元件)。

使用用于确定处理器元件的优先级的实施例启发式方法的一个或多个,信号告知
事件管理器可以生成和管理处理器元件的列表以及它们的优先级。可以使用该列表来向处
理器元件发送事件通知,该事件通知以信号告知这些处理器元件中的一个(相比现有技术
中的所有处理器内核)资源的可用性,并使用该列表对来自所有处理器元件的针对资源的
请求进行接受/验证。可以对该列表进行管理,使得可以基于上面所描述的启发式因素,对
处理器元件的优先级进行重新安排。

在一个实施例中,当处理器元件接收到事件时,该处理器元件可以苏醒并尝试获
取锁。信号告知事件管理器可以从该处理器元件接?#29031;?#23545;获取资源的锁的请求,并识别该
处理器元件的优先级。如果锁是可用的,并且该处理器元件具有最高优先级,则信号告知事
件管理器可以允许该处理器元件获得该可用的锁。但是,如果该资源?#31995;?#38145;是不可用的,或
者该处理器元件不具有最高优先级,则信号告知事件管理器可以指示该处理器元件进行等
待。在锁变得可用,并且信号告知事件管理器识别最高优先级处理器元件时,信号告知事件
管理器可以以信号告知最高优先级处理器元件,以进行苏醒和请求获得该锁。当处理器元
件释放锁,并且该锁变得可用时,信号告知事件管理器可以根据处理器元件的先前优先级
?#21028;潁?#21521;下一个等待处理器元件发送信号,或者信号告知事件管理器可以更新等待处理器
元件的列表,以及向新的最高优先级的等待处理器元件发送信号。

信号告知事件管理器确定处理器元件的优先级所使用的启发式方法可以由处理
器元件来提供。在一个实施例中,处理器元件可以包括:当请求资源锁时,可以执行的等待
事件(“WFE”)指令。该等待事件指令可以列出为了确定处理器元件的优先级而所期望的启
发信息。执行该等待事件指令可以使得处理器元件将该启发信息连同针对资源块的请求一
起进行转发。例如,处理器元件可以执行以下操作:响应于基于热的启发的指示来返回热信
息,响应于基于位置的启发的指示来返回高速缓存位置信息,响应于基于频率的启发的指
示来返回功率状态信息。处理器元件可以在针对获取该锁的请求中向信号告知事件管理器
提供这些信息类型的一个或多个。实现信号告知事件管理器的一种类型的系统可以预先确
定所发送的启发式信息类型。在一个实施例中,信号告知事件管理器可以使用WFE信号,对
针对该资源锁的请求和启发式信息进行响应,其中该WFE信号可以触发接收方处理器元件
进入休眠/低功率状态。

在处理器元件不包括WFE指令,并且所选的信号告知事件管理器指示启发式信息
类型的实施例中,或者在信号告知事件管理器改变其确定优先级所需要的启发式信息的实
施例中,可以将所请求的启发式信息的类型包括在被发?#36879;?#22788;理器元件的WFE信号中。WFE
信号中的比特可以提示处理器元件使用与启发有关的状态信息,对信号告知事件管理器进
行响应,使得信号告知事件管理器可以将该信息应用到启发式方法中,以便确定该处理器
元件的优先级。如上所述,示例可以包括:响应于所选的信号告知事件管理器的启发的指
示,处理器元件返回下面中的一个或多个:响应于基于热的启发的指示来返回热信息,响应
于基于位置的启发的指示来返回高速缓存位置信息,响应于基于频率的启发的指示来返回
功率状态信息。该等待事件信号还可以触发请求方处理器元件的休眠状态。

在一个实施例中,用于请求方处理器元件的启发式信息可以是信号告知事件管理
器响应于资源锁请求来确定的,而不是其所获取的。信号告知事件管理器可以仍然向请求
方处理器元件发送等待事件信号,以触发请求方处理器元件的休眠状态。

信号告知事件管理器可以保持跟踪苏醒的?#38382;?#21644;/或跟踪每一个处理器元件上
一次发生苏醒的时间。信号告知事件管理器可以将该数据与饥饿门限进行比较,以对处理
器元件划分优先级,使得所有处理器元件最终都接收到该锁。例如,当处理器元件超过用于
指示该处理器元件正在接收偏移数量的锁(高或者低)的门限时,信号告知事件管理器可以
调整处理器元件的优先级,以平衡各个处理器元件获得的锁的数量,从而提示等待进程的
前进过程。

各个实施例对于多个参与者尝试访问计算设备的资源,但潜在地存在访问这些资
源的竞争时的任何同步原语是有用的。为了便于说明起见,参照资源块来描述各个实施例,
但是这样的描述并不意味着是限制。

图1示出了适合于结合各个实施例使用的一种系统,其包括与远程计算设备50进
行通信的计算设备10。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储接
口20的SoC 12。该计算设备还可以包括诸如有线或无线调制解调器之类的通信组件22、存
储组件24、用于建立到无线网络30的无线连接32的天线26、和/或用于将有线连接44连接到
互联网40的网络接口28。处理器14可以包括具有多个处理器内核的各种处理器元件中的任
?#25105;?#31181;。SoC 12可以包括一个或多个处理器14。计算设备10可以包括一个以?#31995;腟oC 12,从
而增加处理器14、处理器元件和处理器内核的数量。计算设备10还可以包括与SoC 12不相
关联的处理器14。各个处理器14可以是如下面参照图2A和图2B所描述的多核处理器。处理
器14中的每一个可以被配置为用于特定目的,其可以与计算设备10的其它处理器14相同或
者不同。因此,各个处理器14可以包括相同或不同类型的各种处理器元件。可以将相同或不
同配置的处理器14和处理器内核中的一个或多个组合在一起。

SoC 12的存储器16可以是被配置为存储由处理器14进行访问的数据和处理器可
执行代码的?#36164;?#24615;或者非?#36164;源?#20648;器。在一个实施例中,存储器16可以被配置为至少临
时地存储数据结构,例如,处理器14中的一个或多个输出的中间处理数据。在一个实施例
中,存储器16可以是高速缓存存储器或者随机存取存储器(RAM),其被配置为存储用于对进
行锁资源访问请求的处理器元件划分优先级的信息。存储器16可以包括非?#36164;?#24615;只读存储
器(ROM)以便保留上述信息,从而对尝试获得计算设备?#31995;?#36164;源?#31995;?#38145;的处理器元件划分
优先级。

计算设备10和/或SoC 12可以包括被配置为用于各种目的的一个或多个存储器
16。在一个实施例中,一个或多个存储器16可以被配置为专用于存储上述信息,以便对用于
指定的一组处理器元件的处理器元件划分优先级。存储器16可以以下面的方式来存储该信
息:使信号告知事件管理器能够针对用于多处理器元件系统的定向事件信号告知,对该信
息进行解释。

通信接口18、通信组件22、天线26和/或网络接口28可以一致地工作,使计算设备
10能够经由无线连接32通过无线网络30和/或有线网络44,与远程计算设备50进行通信。可
以使用各种无线通信技术(例如,其包括用于无线通信的无线电频谱)来实现无线网络30,
以向计算设备10提供到互联网40的连接,其中通过互联网40,其可以与远程计算设备50交
换数据。

存储接口20和存储组件24可以一致地工作,以允许计算设备10将数据存储在非易
失?#28304;?#20648;介质上。可以非常类似于存储器16的实施例,?#28304;?#20648;组件24进?#20449;?#32622;,其中,存储
组件24可以存储用于对进行锁资源访问请求的处理器元件划分优先级的信息,使得一个或
多个处理器14可以访问该信息。即使在计算设备10的电源?#36824;?#38381;之后,存储组件24(其是非
?#36164;?#24615;的)也可以保留该信息。当电源被再?#26410;?#24320;,计算设备10重新启动时,计算设备10可
获得存储组件24上存储的该信息。存储接口20可以控制针?#28304;?#20648;设备24的访问,允许处理
器14从存储设备24读取数据和向存储设备24写入数据。

可以对计算设备10的组件中的一些或全部进行不同地排列和/或组合,同时仍然
服务必要的功能。此外,计算设备10并不限于这些组件中的每一个,在计算设备10的各个配
置中可以包括每一个组件的多个实例。

图2A描绘了适合于实现实施例的处理器元件(例如,多核处理器14)。多核处理器
14可以具有多个同构或者异构的处理器元件,例如,处理器内核200、201、202、203。处理器
内核200、201、202、203可以是同构的,其在于:单个处理器14的处理器内核200、201、202、
203可以被配置为用于相同目的,具有相同或类似的性能特性。例如,处理器14可以是通用
处理器,处理器内核200、201、202、203可以是同构的通用处理器内核。替代地,处理器14可
以是图形处理单元或者数字信号处理器,处理器内核200、201、202、203可以分别是同构的
图形处理器内核或者数字信号处理器内核。

通过制造过程和材?#31995;?#21464;化,同构处理器内核200、201、202、203的性能特性可以
在同一多核处理器14中或者使用相同设计的处理器内核的另一个多核处理器14中,在处理
器内核之间彼此不同。

处理器内核200、201、202、203可以是异构的,其在于:单个处理器14的处理器内核
200、201、202、203可以被配置为用于不同的目的,和/或具有不同的性能特性。这些异构处
理器内核的例子可以包括称为“big.LITTLE”架构的架构,在该架构中,可以将慢速、低功率
处理器内核与更?#30475;?#21644;功耗更大的处理器内核相耦合。

多核处理器14还可以包括与每个处理器内核200、201、202、203进行通信的信号告
知事件管理器206。该信号告知事件管理器(或者信号告知管理器)206可以接收资源访问请
求(其包括用于对计算设备的资源进行锁定或者解锁的请求),对各个处理器内核划分优先
级,以及以信号告知这些处理器内核等待事件,并?#22791;?#20107;件发生时,以信号告知具有优先级
的处理器内核。在一个实施例中,该事件包括:该处理器内核尝试获得其锁的资源?#31995;?#38145;被
释放。

图2B描绘了适合于实现很像图2A的实施例的处理器元件。在一个实施例中,处理
器元件(在该实例中,多核处理器14)可以包括多个信号告知事件管理器208、210、212。在各
个实施例中,信号告知事件管理器208、210、212可以与各种各样的组合或者处理器内核
200、201、202、203进行通信。在一个实施例中,多个处理器内核(如,处理器内核0 200、处理
器内核1 201和处理器内核2 202)可以与共享的信号告知事件管理器(如,信号告知事件管
理器0 208)进行通信。在一个实施例中,一个或多个处理器内核(如,处理器内核2 202)可
以与多个信号告知事件管理器(如,信号告知事件管理器0 208和信号告知事件管理器1
210)进行通信。在一个实施例中,处理器内核(如,处理器内核3 203)可以与专用信号告知
事件管理器(如,信号告知事件管理器2 212)进行通信。信号告知事件管理器208、210、212
可以经由处理器元件的公共通信总线,或者经由专用的信号告知事件管理器通信总线230,
来彼此之间进行通信。

图2C描绘了对于处理器元件(如,单核或多核处理器221、214、216、218)来说,信号
告知事件管理器206、208、210是?#38236;?#30340;实施例。图2D描绘了对于处理器元件(如,SoC 220、
222、224、226)来说,信号告知事件管理器206、208、210是?#38236;?#30340;实施例。类似于图2B中的例
子,信号告知事件管理器206、208、210可以经由图2C中的SoC 12或者图2D中的计算设备10
的公共通信总线,或者经由专用的信号告知事件管理器通信总线230,来彼此之间进行通
信。在一个实施例中,可以存在信号告知事件管理器206、208、210的分层,使得信号告知事
件管理器206、208、210对于处理器内核200、201、202、203来说是?#38236;?#30340;(如同图2B中),并与
对于更高层组件(如,多核处理器221、214、216、218或SoC 220、222、224、226)来说是?#38236;?#30340;
信号告知事件管理器206、208、210进行通信。类似地,对于多核处理器221、214、216、218来
说是?#38236;?#30340;信号告知事件管理器206、208、210可以与对于SoC 220、222、224、226来说是本
地的信号告知事件管理器206、208、210进行通信。

在图2A和图2B所示出的例子中,多核处理器14包括四个处理器内核200、201、202、
203(即,处理器内核0、处理器内核1、处理器内核2和处理器内核3)。在图2C中所示出的例子
中,SoC 12包括四个处理器212、214、216、218(即,处理器0、处理器1、处理器2和处理器3)。
在图2D中所示出的例子中,计算设备10包括四个SoC 220、222、224、226(即,SoC 0、SoC 1、
SoC 2和SoC 3)。为了便于解?#25512;?#35265;,参照这些处理器元件中的任?#25105;?#20010;(其包括图2A-2D中
所示出的四个处理器内核200、201、202、203、处理器212、214、216、218或者SoC 220、222、
224、226)来描述本文的各个实施例。但是,图2A-2D中所示出以及在本文中所引用的处理器
元件仅仅只是提供成例子,而决不意味着将各个实施例限制于四核处理器系统、四处理器
系统或者四SoC系统。与四个处理器内核、处理器或者SoC相比,计算设备10、SoC 12或者多
核处理器14可以单独地或者组?#31995;?#21253;括更少或者更多的处理器内核。

多个信号告知事件管理器206、208、210可以彼此之间进行通信,以管理处理单元
所请求的资源的可用性、处理器元件的优先级、以及以信号告知处理器元件苏醒和获得所
请求的资源?#31995;?#38145;,如本文所进一步?#33268;?#30340;。可以围?#39057;?#20010;信号告知事件管理器,来解释本
文所?#33268;?#30340;例子;但是,这仅仅只是提供成例子,而决不意味着将各个实施例限制于单个信
号告知事件管理器系统。计算设备10、SoC 12或者多核处理器14可以单独地或者组?#31995;?#21253;
括一个以?#31995;?#20449;号告知事件管理器。

图3描绘了使用适合于实现实施例的簇架构的示例性处理器元件(例如,多核处理
器14)。非常类似于图2A和图2B中的示例性多核处理器14,图3中所示出的多核处理器14可
以包括四个处理器内核200、201、202、203,但这种配置的处理器内核并不是限制性的,各个
实施例可以在具有更少或更多处理器内核的情况下,以类似的方式进行工作。还类似于图
2A和图2B中的多核处理器14,处理器内核200、201、202、203可以均与信号告知事件管理器
206、208、210、212进行通信。图3中所示出的多核处理器还可以包括:将处理器内核200、
201、202、203组合成簇300、302。多核处理器14可以使用簇300、302来高效地执行程序指令
和数据的处理。

簇300、302可以是静态的,在簇300、302中维持相同的处理器内核200、201、202、
203。簇300、302还可以是动态的,基于各种因素,改变一个或多个簇300、302中的处理器内
核的?#31245;?#36164;格。图3中所描绘的例子示出了每一个簇300、302中的两个处理器内核200、201、
202、203。簇300、302中的处理器内核200、201、202、203的数量和组合并不意味着是限制性
的。此外,簇300、302的数量和每一个簇300、302的配置也不意味着是限制性的。簇300、302
可以包括处理器内核200、201、202、203的?#25105;?#32452;合,其包括簇300、302二者中均包括的处理
器内核200、201、202、203。

除了处理器内核200、201、202、203之外,簇300、302均可以包括簇高速缓存304、
306,在一个实施例中,可以非常类似于上面所描述的图1中的存储器设备16来配置簇高速
缓存304、306。簇高速缓存304、306可以存储数据?#32479;?#24207;指令,以便它们相应的簇300、302中
的处理器内核200、201、202、203进行快速访问。簇高速缓存304、306可以存储与针对资源访
问请求,对处理器内核200、201、202、203划分优先级有关的数据。在一个实施例中,簇高速
缓存304、306中存储的项可以仅仅与簇高速缓存304、306的相应簇300、302有关。簇高速缓
存304、306还可以存储相应的簇300、302的处理器内核200、201、202、203针对其发出资源访
问请求的资源。多核处理器14还可以包括处理器高速缓存308,其可以包含与簇高速缓存
304、306中的数据?#32479;?#24207;指令相类似的数据?#32479;?#24207;指令。处理器高速缓存308可以维持分配
给簇300、302中的一个或多个的处理器内核200、201、202、203里的一个或多个处理器内核
的该信息。

簇300、302可以包括能够进行类似的或者不同的处理的处理器内核200、201、202、
203。与多核处理器14的其它部件(它们可以是包含在簇300、302中的选项)相比,簇300、302
还可以包括具有相对较近位置的部件(例如,处理器内核200、201、202、203和簇高速缓存
304、306)。与不对处理器内核200、201、202、203进行分簇相比,簇300、302可以被配置为更
高效地执行进程和线程。

图4根据一个实施例,描绘了用于演示处理器元件和它们分配的优先级之间的关
系的示例性表400。表400是用于对表400中所示出的数据里的一些或者全部进行相关的示
例性而非限制性格式。表400描绘了如何将(列402中列出的)处理器元件与同该处理器元件
相关联的信息(列404-410)进行相关(按行)的例子,但该数据也可以使用任?#38382;?#37327;的已知
数据结构来进行存储和相关。关于每一个处理器元件的信息的例子可以包括:列404中的优
先级、列406中的用于确定该优先级的一个或多个?#38382;?例如,处理器元件温?#21462;?#25805;作频率、
和/或这些元件的邻近度/资源共享)、列408中的以信号告知该处理器元件苏醒来获得资源
锁的?#38382;?#20197;及列410中的?#28304;?#19978;一次发生以信号告知该处理器元件苏醒以来的时间量、或
者上一次发生以信号告知该处理器元件苏醒的时间。在一个实施例中,用于确定所述优先
级的?#38382;?#21487;以预编程在运行于计算设备?#31995;?#36719;件中、硬编码到信号告知事件管理器中、或
者由信号告知事件管理器基于各种考量来进?#37266;?#25321;。

表400可以包括进行锁资源访问请求的所有处理器元件。在一个实施例中,在计算
设备?#31995;?#29305;定会话期间,直到第一处理器元件进行锁资源访问请求为止,表400可以是空表
或者不存在。在第一处理器元件进?#26800;?#19968;锁资源访问请求时,可以启动表400。随着其它处
理器元件进行其它锁资源访问请求,还可以进一步填充表400。

在一个实施例中,表400可以包括用于对进行锁资源访问请求的每一个处理器元
件的信息进行相关的行414、416、418、420、422、424。可以将行414-424包括在针对N个数量
的处理器元件(即,处理器元件0到处理器元件N-1)中的每一个的表中。在相应的处理器元
件进行解锁资源访问请求之后,可以将每一行414-424保留在表400中。在相应的处理器元
件进行另一个锁资源请求时,在处理器元件进行解锁资源访问请求时,和/或按照定期的间
隔,对行414-424中的每一个进行更新。在一个实施例中,可以从表400中移除进行?#31169;?#38145;资
源访问请求的处理器元件所对应的行414-424。表400可以是用于所有锁资源访问请求的通
用表。

表400可以维持每一行414-424的用于标识资源的信息,其中,相关联的处理器元
件(列402中所列出的)尝试获得锁。在该表400中,只要每一个优先级涉及不同的资源,则不
同的处理器元件可以具有相同的优先级(列404中所列出的)。

在一个实施例中,可以在存储器中实现多个表400,其中在该情况下,这些表400中
的每一个表专用于一个特定的资源。

举一个具有其相应的优先级的各个处理器元件和涉及该处理器元件的其它信息
(其可以是存储的表)的关系的例子,表400描绘了用于根据启发来确定优先级的标准是处
理器元件温度406。该例子示出了:可以基于与处理器元件温度(列406中所列出的)的逆关
系,来确定每一个处理器元件的优先级(列404中所列出的)。在该例子中,最低处理器元件
温度可以与最高优先级相关。因此,可以向行418中的处理器元件2(其具有最低处理器元件
温度28.1℃)分配最高优先级1。相反,可以向行420中的处理器元件3(其具有最高处理器元
件温度38.2℃)分配最高优先级8。如上所述,可以将不同于处理器元件温度406的?#38382;?#20351;用
成用于确定处理器元件的优先级404的标准。在一个实施例中,可以将?#38382;?#30340;?#25105;?#32452;合使用
成用于确定处理器元件的优先级的标准。

在一个实施例中,已经以信号告知该处理器元件苏醒来获得资源锁的?#38382;?列408
中所列出的)和/或?#28304;?#19978;一次发生以信号告知该处理器元件苏醒以来的时间量(列410中
所列出的)可以在用于设置处理器元件的优先级的启发中使用,以便避免这些处理器元件
中的任?#25105;?#20010;出现饥饿状况。只要饥饿的处理器元件尝试获得资源锁的进程没有以及时的
方式进展,就可以强制该饥饿的处理器元件进行等待。当与其它处理器元件相比,以信号告
知处理器元件苏醒明显更少时,或者与其它处理器元件相比,要等待明显更长的时间才以
信号告知苏醒,可能发生饥饿情况。已经以信号告知处理器元件苏醒以获得资源锁的?#38382;?br />可以与苏醒数量门限进行比较。另外地或替代,?#28304;?#19978;一次出现以信号告知该处理器元件
苏醒以来的时间量可以与苏醒以来时间门限进行比较。可以定期地进行该比较,和/或在处
理器元件发出解锁资源访问请求时进行该比较。响应于确定超过饥饿门限中的一个或多
个,可以对该饥饿的处理器元件的优先级进行增加,以使该饥饿的处理器元件在先前具有
更高优先级的其它处理器元件之前获得该资源锁。

可以将表400存储在上面所提及的存储器和存储设备中的任?#25105;?#20010;里。例如,可以
将表400存储在图1中所示出的存储器设备16中、存储在图3中所示出的处理器高速缓存308
中、或者存储在图2和图3中所示出的信号告知事件管理器206中。在另一个例子中,可以将
表400存储在上面所提及的图3中所示出的存储器设备16、处理器高速缓存308、信号告知事
件管理器206、簇高速缓存304或者簇高速缓存306中。信号告知事件管理器可以从这些存储
位置中的任?#25105;?#20010;访问表400。

图5根据一个实施例,描绘了多处理器系统中的定向事件信号告知的处理流程和
信号流。为了便于说明起见,图5中的例子包括信号告知事件管理器206、处理器元件0 524、
处理器元件1 526和处理器元件2 528之间的信号传输。该例子并不意味着对关于可以与信
号告知事件管理器通信的处理器元件的数量或者可以与处理器元件通信的信号告知事件
管理器的数量进行限制。在该例子中,处理器元件0 524可以向信号告知事件管理器206发
送锁资源访问请求500。响应于没有其它处理器元件526、528具有关于处理器元件0 524正
在请求其资源锁的相同资源的资源锁,处理器元件0 524可以获得资源锁518。信号告知事
件管理器206可以?#36816;?#36164;源访问请求500进行响应,但在一些实施例中,当在锁资源访问请
求500的时间,该资源锁可用时,其可能并不进行响应。

信号告知事件管理器206可以对于用于将处理器元件524、526、528与相应的优先
级进行关联的表进行更新或者启动。在一个实施例中,可以使用各种方案来指示获得资源
锁的处理器元件的优先级。例如,可以给予具有该资源锁的处理器元件最高的优先级,直到
其放弃该锁为止,在该时间点,可以基于用于优先级的标准、该处理器元件是否发出另一个
锁资源访问请求、和/或基于饥饿信息的相反使用,对其优先级进行更新。在其它例子中,可
以向具有该资源锁的处理器元件分配最低优先级或者不分配优先级,直到其进行另一个锁
资源访问请求为止。

当处理器元件1 526针对被资源锁518锁定的相同资源,向信号告知事件管理器
206发送锁资源访问请求502时,信号告知事件管理器206可以对所述表进行更新,向处理器
元件1 526分配用于获得所请求的资源锁的优先级。响应于资源锁518对该请求资源的锁
定,信号告知事件管理器206可以向处理器元件1 526返回等待事件信号504。等待事件信号
504可以触发处理器元件1 526进入休眠状态,直到其接收到针对资源锁该资源可用的信号
(例如,设置事件信号)为止。但是,如果处理器元件1 526不具有最高优先级,则在针对资源
锁该资源可用的第一时刻,处理器元件1 526可能没有接收到该设置事件信号。

对于上面的锁资源访问请求500、502而言,信号告知事件管理器206可能需要用于
分配优先级的标准的信息,也可能不需要该信息。对于锁资源访问请求500而言,可以不需
要该信息,这是由于其是第一锁资源访问请求,没有其它处理器元件526、528正在争夺该资
源锁。锁资源访问请求502可能需要该信息,但如果处理器元件1 526是针对该资源锁的线
中的下一个处理器元件,则可以不需要为处理器元件1 526分配优先级。但是,可以将该信
息存储在表中,以便与后续的锁资源访问请求进行比较,这是由于它们可能致使信号告知
事件管理器206在未来改变处理器元件1 526的优先级。

当处理器元件2 528针对与处理器元件0 524和处理器元件1 526相同的资源,向
信号告知事件管理器206发送锁资源访问请求506时,信号告知事件管理器可以通过将针对
该处理器元件2 528的优先级标准的信息与所述表中针对其它正等待的处理器元件(在该
情况下,处理器元件1 526)的信息进行比较,对该表进行更新。在该例子中,处理器元件2
528具有的优先级标准的?#38382;?#20540;使得比处理器元件1的优先级更高。如果处理器元件0524仍
然具有资源锁518,则信号告知事件管理器可以向处理器元件2 528返回等待事件信号508。
该等待事件信号508可以触发处理器元件2 528进入休眠状态,直到其接收到针对资源锁该
资源可用的信号(例如,设置事件信号)为止。

处理器元件0 524可以向信号告知事件管理器206发送解锁资源访问请求510,其
指示处理器元件0 524放弃资源锁518,使得对于要获得该资源?#31995;?#36164;源锁的处理器元件
526、528中的另一个来说,该资源是可用的。作为响应,信号告知事件管理器206可以对所述
表进行检查,以确定具有最高优先级的处理器元件524、526、528。响应于确定处理器元件2
528具有最高优先级,信号告知事件管理器206可以向该处理器元件2 528发送设置事件信
号或者唤醒信号512。该唤醒信号512可以触发处理器元件2 528从其休眠状态中苏醒,以获
得资源锁520。当完成该资源的使用时,处理器元件2 528可以向信号告知事件管理器206发
送解锁资源访问请求514,放弃该资源锁520。作为响应,信号告知事件管理器206可以再次
对所述表进行检查,以确定具有最高优先级的处理器元件524、526、528。在图5所示出的例
子中,在该点,处理器元件1 526是唯一等待资源锁的处理器元件,因此也就是处理器元件1
526具有最高优先级。因此,信号告知事件管理器206可以发送唤醒信号516,触发处理器元
件1 526从其休眠状态中苏醒,以获得资源锁522。

锁资源访问请求500、502、506可以包括针对优先级和/或饥饿的标准的信息,也可
以不包括该信息。在一个实施例中,处理器元件524、526、528可能并不知道优先级和/或饥
饿的标准。在该实施例中,信号告知事件管理器206可以通过向另一个源(例如,运行在该计
算设备?#31995;?#20869;核或操作系统)请求信息、从存储器中获取信息、或者从处理器元件524、526、
528附近的传感器(例如,温度传感器)获得测量值,来获取请求方处理器元件524、526、528
的信息。在其它实施例中,处理器元件524、526、528可能知道该信息,但可能不知道信号告
知事件管理器206需要该信息,这取决于信号告知事件管理器所选择的具体启发方式。因
此,响应于接收到锁资源访问请求500、502、506,信号告知事件管理器206可以发送针对所
需要的信息的请求,继而,从锁请求方处理器元件接收该信息。在一个实施例中,信号告知
事件管理器206对该信息的请求可以是等待事件信号504、508的一部分,信号告知事件管理
器206可以在处理器元件524、526、528进入休眠状态之前接收所请求的信息。在一个实施例
中,可以在特殊寄存器、存储器位置中指示所需要的信息,或者在等待事件信号504、508之
前或之后,增加具有特殊含义的NOP指令来指示所需要的信息。

在一个实施例中,不是信号告知事件管理器206接收解锁资源访问请求510、514,
并发送唤醒信号512、516,而是信号告知事件管理器206可以向具有资源锁的处理器元件发
?#36879;?#26032;的优先级信息,并且响应于放弃该资源锁,放弃方处理器元件可以向具有最高优先
级的处理器元件发送唤醒信号。用此方式,最高优先级处理器元件可以从放弃方处理器元
件接收该唤醒信号,致使其从休眠状态中苏醒,以及获得现在可用的资源锁。

图6描绘了用于在多处理器系统中实现定向事件信号告知的实施例方法600。可以
在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬
件的组合中执行方法600。在方框602中,信号告知事件管理器可以从处理器元件接收资源
访问请求。在一个实施例中,该资源访问请求可以包括:用于帮助信号告知事件管理器确定
请求方处理器元件获得所请求的资源?#31995;?#38145;的优先级的信息,如上面所?#33268;?#30340;。

在判断框604中,信号告知事件管理器可以判断该资源访问请求是用于对获得的
资源锁进行解锁,还是用于获得资源锁。例如,该资源访问请求可以指示该请求是解锁资源
访问请求,还是锁资源访问请求。响应于确定该资源访问请求是解锁资源访问请求(即,判
断框604=“解锁”),在判断框606中,信号告知事件管理器可以判断是否存在针对相同资源
的任何未决的锁资源访问请求。在一个实施例中,信号告知事件管理器可以对先前发送了
锁资源访问请求但被拒绝(由于所请求的资源已经被另一个处理器元件锁定)的处理器元
件的优先级进行检查。响应于确定不存在针对相同资源的任何未决的锁资源访问请求(即,
判断框604=“否”),信号告知事件管理器可以返回到方框602以接收其它资源访问请求。响
应于确定存在未决的锁资源访问请求(即,判断框606=“是”),在方框608中,信号告知事件
管理器可以向最高优先级处理器元件发送唤醒信号,从而触发该处理器元件从休眠状态苏
醒,以及获得可用资源?#31995;?#38145;。信号告知事件管理器可以在方框602中,接收其它资源访问
请求。

响应于确定该资源访问请求是锁资源访问请求(即,判断框604=“锁”),在判断框
610中,信号告知事件管理器可以判断另一个处理器元件是否拥有或者已经获得所请求的
资源?#31995;?#38145;。如上面所?#33268;?#30340;,信号告知事件管理器可以存储和维持关于该锁和针对该操
作进行访问(例如,在表中)的处理器元件的数据。该表可以是专用于特定的资源,信号告知
事件管理器可以通过分析该表中的数据,确定获得的资源锁的状态。在一个实施例中,表中
针对特定资源的数据可以通过优先级值来指示资源锁的状态。例如,特定优先级值可以指
示相关联的处理器元件当前拥有该资源锁。在另一个实施例中,数据(例如,二进制标志)可
以指示资源锁的所有权。其它实施例可以包括通用表(而不是特定于资源的表),其中该表
可以包括:用于说明处理器元件正在请求或者拥有资源锁的资源的指示。响应于确定所请
求的资源没有被锁,所请求的资源是可用的,或者该资源锁没有被拥有(即,判断框610=
“否”),在方框612中,信号告知事件管理器可以向请求方处理器元件确认该资源锁的捕获。
在方框614中,信号告知事件管理器可以对所述表或者锁请求等待列表进行更新,以?#20174;?#35813;
资源锁的所有权。在上面所描述的实施例中,信号告知事件管理器可以通过更新资源锁所
有权的指示符中的一个或多个,来完成对该表的更新。信号告知事件管理器可以在方框602
中,接收其它资源访问请求。

响应于确定所请求的资源被锁/所请求的资源不可用/该资源锁已被拥有(即,判
断框610=“是”),在方框616中,信号告知事件管理器可以以信号告知请求方处理器元件等
待一个事件。在一个实施例中,该等待事件信号可以触发处理器元件进入休眠模式,直到被
通知该事件为止,如上所述。在方框618中,信号告知事件管理器可以对所述表或者锁请求
等待列表进行更新,以?#20174;?#25298;绝的针对该资源锁的请求。在一个实施例中,信号告知事件管
理器可以至少更新该表中的请求方处理器元件的优先级,其指示该请求方处理器元件已针
对资源锁进行了请求,并在资源锁的其它请求之中,说明当前请求的排名。信号告知事件管
理器可以在方框602中,接收其它资源访问请求。

在一个实施例中,在计算设备?#31995;?#20250;话期间,在第一锁资源访问请求之前,可能还
没有启动所述表,或者没有完全地或者部分地填充该表。完全或部分填充的表可以包括数
据,但在接收到与锁资源访问请求相关联的更新数据之前,该数据可能是无关的或者不完
整的。为?#31169;?#20915;该实施例,信号告知事件管理器或者另一个处理器可以实现实施例方法
700,以判断是否存在该表,当不存在该表时,实现锁资源访问请求表或者等待列表,如图7
中所示。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理
器)或者软硬件的组合中执行方法700。

当信号告知事件管理器需要访问锁资源访问请求或等待列表表格时(例如,在方
框602中接收到资源请求时,或者在方法600中的判断框604中,判断所请求的资源是否被锁
定时),在判断框702中,信号告知事件管理器可以判断锁资源访问请求表或者等待列表是
否存在或者被填充。响应于确定不存在该表或者没有启动该表(即,判断框702=“否”),在
方框704中,信号告知事件管理器可以启动该表或者等待列表。在一个实施例中,启动该表
可以涉及:生成该表,并使用与进行锁资源访问请求的至少一个处理器元件相关联的数据
对该表进行填充。在方框706中,信号告知事件管理器可以向请求方处理器元件分配优先
级。如上所述,该表的第一处理器元件可以具有任何优先级,这是由于不存在用于比?#31995;?#20854;
它处理器元件。在一个实施例中,可以向该表中的第一处理器元件分配缺省优先级或者随
机优先级。

响应于确定存在该表或者启动了该表(即,判断框702=“是”),在方框708中,信号
告知事件管理器可以确定请求方处理器元件的优先级。如上所述,信号告知事件管理器可
以接收相关的数据,以便通过各种方式来确定处理器元件的优先级,其包括信号告知事件
管理器和计算设备的其它硬件和软件组件之间的多个信号。与确定处理器元件的优先级有
关的数据可以是通过软件或固件来预先确定的,或者可以是信号告知事件管理器选择的。
在方框710中,信号告知事件管理器可以对所述表进行更新。根据该表的配置,信号告知事
件管理器可以基于与请求方处理器元件相关联的数据同与其它处理器元件相关联的数据
的比较,对请求方处理器元件和该表中列出的其它处理器元件的优先级进行更新。响应于
请求方处理器元件的优先级较高,对所述表进行更新以包括或者更新请求方处理器元件的
优先级可能造成其它处理器元件的优先级发生改变。在可选框712中,在拥有该资源锁的处
理器元件向下一个等待的处理器元件通知该资源?#38382;北唤?#38145;的实施例中,信号告知事件管
理器可以向拥有该资源锁的处理器元件发送该表。可选框712中的操作使拥有该资源锁的
处理器元件能够基于所述表中的优先级,确定将接收该锁的正在等待的下一个处理器元
件。

图8描绘了用于在多处理器系统中实现用于定向事件信号告知的处理器元件的优
先级划分的实施例方法800。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或
信号告知事件管理器)或者软硬件的组合中执行方法800。在方框802中,信号告知事件管理
器可以确定用于向请求方处理器元件分配优先级的标准或者准则。该标准或准则可以包括
下面中的一个或多个:处理器元件温?#21462;?#25805;作频率和位置。在一个实施例中,信号告知事件
管理器可以选择用于分配优先级的标准或准则,其可以取决于计算设备在该时间的状态。
例如,高温的状态、低功率可用性、省电模式和低优先级进程可以使得信号告知事件管理器
将低处理器元件温度和/或低操作频率选择作为更高优先级的标准。另一方面,充满电或者
正在充电电池和高性能软件可以使得信号告知事件管理器选择高操作频率和/或高度地域
性作为更高优先级的标准。在其它实施例中,信号告知事件管理器可以通过从存贮设备(例
如,集成在信号告知事件管理器之中或者之外的寄存器)获取该标准/准则,来确定用于分
配优先级的标准或准则,或者如运行在计算设备?#31995;?#36719;件程序所提供的。

在方框804中,信号告知事件管理器可以将与所选择的标准有关的请求方处理器
元件的一个或多个?#38382;?#21644;所述表中存储的其它处理器元件的一个或多个类似?#38382;?#36827;行比
较,以确定最满足所选择的用于分配优先级的标准或准则的处理元件。根据所选择的用于
确定处理器元件的优先级的标准或准则,针对请求方处理器元件的有利比较可以源自于:
与其它处理器元件的可比较数据相比,请求方处理器元件的数据较高或者?#31995;汀?#19982;等待获
得和请求方处理器元件的相同资源?#31995;?#36164;源锁的其它处理器元件中的至少一个相比,针对
请求方处理器元件的有利比较可以得到较高的优先级。在一些实施例中,方框804中的比较
可以是这些?#38382;?#30340;值的直接比较。在一些实施例中,方框804中的比较可以是间接比较,其
中,向这些?#38382;?#30340;值应用一个或多个算法/计算,并对这些算法/计算的结果进行比较。

在方框806中,信号告知事件管理器可以基于?#38382;?#27604;较,向请求方处理器元件分配
优先级。向请求方处理器元件分配优先级还可以导致:等待获得相同资源?#31995;?#36164;源锁的其
它处理器元件中的一个或多个的优先级的改变。例如,响应于向请求方处理器元件分配比
三个其它处理器元件高的优先级,可以将这三个其它处理器元件中的每一个处理器元件的
优先级相应地递减。同时,与分配给请求方处理器元件的优先级相比,具有较高优先级的其
它处理器元件可以保持优先级分配的不改变。

图9描绘了用于在多处理器系统中实现用于定向事件信号告知的饥饿避免的实施
例方法900。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管
理器)或者软硬件的组合中执行方法900。在方框902中,信号告知事件管理器可以跟踪已进
行了锁资源访问请求的一个或多个处理器元件的苏醒统计。在一个实施例中,该苏醒统计
可以包括:信号告知事件管理器向处理器元件发送唤醒信号的?#38382;?#19978;一次向该处理器元
件发送唤醒信号的时间、?#28304;?#19978;一次向该处理器元件发送唤醒信号以来流逝的时间、该处
理器元件进行未决的锁资源访问请求的时间、和/或?#28304;?#35813;处理器元件进行未决的锁资源
访问请求以来流逝的时间。

在方框904中,信号告知事件管理器可以将针对具有未决锁资源访问请求的处理
器元件的苏醒统计与苏醒门限进行比较。在一个实施例中,该苏醒门限可以是预定的值、基
于用于相同统计的历史信息的值、或者针对具有未决锁资源访问请求的其它处理器元件的
相同统计的值中的一个或多个的函数。

在判断框906中,信号告知事件管理器可以判断具有未决锁资源访问请求的处理
器元件的苏醒统计是否超过苏醒门限。响应于确定具有未决锁资源访问请求的处理器元件
的苏醒统计没有超过苏醒门限(即,判断框906=“否”),则在方框908中,信号告知事件管理
器可以在不进行改变的情况下,维持所述表。

响应于确定具有未决锁资源访问请求的处理器元件的苏醒统计超过苏醒门限
(即,判断框906=“是”),则在方框910中,信号告知事件管理器可以向处理器元件分配较高
的优先级,在方框912中,对所述表进行更新,如上面针对方框710所描述的。可以以众多方
式来确定分配给该处理器元件的较高优先级。在一个实施例中,可以根据预定的规则,来分
配较高优先级,例如,对优先级递减某个值,向该处理器元件分配恒定的优先级(例如,最高
优先级),或者对该处理器元件在优先级队列中的位置进行翻转。在一个实施例中,可以根
据该处理器元件的饥饿?#29616;?#24615;,来分配较高优先级。可以根据该处理器元件的苏醒统计与
其它处理器元件的苏醒统计的比较,来确定该?#29616;?#24615;。饥饿的?#29616;?#24615;越大,则分配给该处理
器元件的优先级越高。

图10描绘了用于在多处理器系统中利用定向事件信号告知实现锁感知调度的实
施例方法1000。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事
件管理器)或者软硬件的组合中执行方法1000。在方框1002中,信号告知事件管理器可以检
测到多个线程正在请求相同的资源锁,例如,当多个线程使用共同的资源在不同的处理器
元件上执行时。

在方框1004中,信号告知事件管理器可以请求操作系统/调度器将竞争相同资源
的线程中的一些或者全部迁移到某些处理器元件。信号告知事件管理器可以请求将这些线
程迁移到某些元件,以利用不同系统架构的某些效率。在一个实施例中,处理器元件可以被
布置在簇架构中。选择一个簇的某些处理器元件来执行竞争相同资源的线程可以使得?#22791;?br />簇的处理器元件操作在相同的频率时,性能最大化。在一个实施例中,一个簇的处理器元件
趋向于处于邻近的位置。当以几乎零功耗来使该簇的进行等待的处理器元件停转时,可以
提高散热,以及可以使用停转的处理器元件的区域来消散其它运行中的处理器元件所产生
的热量。在一个实施例中,当停转的处理器元件的额外区域用于散热时,运行中的处理器元
件的最大频率可能超过最大推荐温度和/或操作频率。在一个实施例中,处理器架构可以使
用多个处理器元件?#28304;?#20648;器层级的一部分共享,在该情况下,可以如优先级标准,减少或者
最小化针?#28304;?#20648;器的访问时延,并如各种启发中的优先级标准,增加或者最大化局部性。在
包括多个电源的计算系统中,可以对优先级标准进?#26800;?#25972;,使得将线程移动到使用相同电
源的处理器元件,同时减少其它电源?#31995;?#22788;理器元件的优先级,以便它们不接收线程并因
此关闭。在方框1006中,信号告知事件管理器可以接收对于竞争相同资源的线程的再分配
的确认,将这些线程再分配到请求的处理器元件上。在方框1008中,信号告知事件管理器可
以更新所述表,如上面针对方框710所描述的。

图11描绘了用于在多处理器系统中利用定向事件信号告知实现锁停转(stall)动
作的实施例方法1100。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号
告知事件管理器)或者软硬件的组合中执行方法1100。在方框1102中,信号告知事件管理器
可以估计:当前处于等待事件状态的处理器元件在等待所请求的资源锁变得可用时的休眠
时间(即,该处理器保持在低功率状态的持续时间)。在一个实施例中,信号告知事件管理器
可以基于下面中的一项或多项来进行该估计:历史信息、具有较高优先级的等待相同资源
的处理器元件?#31995;?#32447;程的预期执行时间、以及等待该资源的较高优先级处理器元件的数
量。例如,如果该处理器元件具有低优先级,但有多个较高优先级的处理器元件在等待相同
的资源,则信号告知事件管理器可以估计该处理器元件将具有相对较长的休眠时间,尤其
是与该处理器元件具有最高优先级时,或者其是等待列表中的唯一元件并因此是使用该资
源的下一个元件时相?#21462;?br />

在方框1104中,信号告知事件管理器可以基于所估计的休眠时间,确定该请求方
处理器元件的休眠状态。各个实施例可以针对该处理器元件,实?#31181;?#22810;不同的休眠状态。不
同的休眠状态可以通过功耗的水平来描绘特性。较高功耗的休眠状态可以提供较少的省
电,但能?#21796;?#24555;速地苏醒,例如,通过保持状态和?#36164;源?#20648;器中的工作数据。相比而言,通
过关闭更多的资源和?#26723;?#23384;储器的功?#21097;系?#21151;耗的休眠状态可以节省更多的功?#21097;?#20854;导
致需要对更多的资源重新供能(其需要功率),将状态数据重新加载到?#36164;源?#20648;器(其花
费更多的时间),以便快速执行指令。在一个实施例中,由于较短的时间段?#31995;?#21151;?#24335;?#30465;相
对效率损失可能是不?#26723;?#30340;(因为需要在系统中重新建立该处理器元件),因此信号告知事
件管理器可以针对较短的估计的休眠时间,选择较高功耗休眠状态。类似地,对于较长的休
眠时间而言,信号告知事件管理器可以选择?#31995;?#21151;耗的休眠状态,由于较大的功?#24335;?#30465;的
净利益。在方框1106中,信号告知事件管理器可以向请求方处理器元件通知对应于所估计
的休眠时间的指定休眠状态。在一个实施例中,请求方处理器元件可以实现所指定的休眠
状态。

图12描绘了用于在多处理器系统中利用定向事件信号告知实现锁停转动作的实
施例方法1200。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事
件管理器)或者软硬件的组合中执行方法1200。在方框1202中,信号告知事件管理器可以估
计:当前处于等待事件状态的处理器元件在等待所请求的资源锁变得可用时的休眠时间
(即,该处理器保持在低功率状态的持续时间),如同方框1102中。在方框1204中,信号告知
事件管理器可以向操作系统/调度器通知所估计的休眠时间。在一个实施例中,在可选框
1206中,操作系统/调度器可以在与所估计的休眠时间相关联的一?#38382;?#38388;,从调度队列中移
除该请求方处理器元件。在一个替代的实施例中,在可选框1208中,操作系统/调度器可以
在所估计的休眠时间期间,向该处理器元件分配不同的线程,例如,该线程不需要使用该处
理器元件接收到针对其的等待事件信号的资源。

图13描绘了适合于结合各个实施例(例如,在图1-12中所示出和/或参照图1-12来
描述的实施例)来使用的示例性移动计算设备。移动计算设备1300可以包括耦?#31995;?#35302;摸屏
控制器1304和内部存储器1306的处理器1302。处理器1302可以是被设计为实现通用或特定
处理任务的一个或多个多核集成电路。内部存储器1306可以是?#36164;源?#20648;器或非?#36164;源?br />储器,还可以是安全和/或?#29992;?#23384;储器,或者?#21069;?#20840;和/或非?#29992;?#23384;储器、或者其?#25105;?#32452;合。
可以利用的存储器类型的例子包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-
RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸?#37327;?#21046;器1304和处理器1302还可以耦?#31995;?br />触摸屏面板1312,例如,电阻式感应触摸屏、电容感应触摸屏、红外线感应触摸屏等等。另
外,计算设备1300的显示器并不需要具有触摸屏能力。

移动计算设备1300可以具有用于发送和接收通信的一个或多个无线信号收发机
1308(例如,Peanut、Bluetooth、Zigbee、Wi-Fi、RF无线电装置)和天线1310,它们彼此之间
相耦合和/或耦?#31995;?#22788;理器1302。收发机1308和天线1310可以结合上面所提及的电路来使
用,以实?#25351;?#31181;无线传输协议栈和接口。移动计算设备1300可以包括蜂窝网络无线调制解
调器芯片1316,其经由蜂窝网络来实现通信并耦?#31995;?#22788;理器。

移动计算设备1300可以包括耦?#31995;?#22788;理器1302的外围设备连接接口1318。外围设
备连接接口1318可以被单独地配置为接受一种类型的连接,或者被配置为接受多种类型的
物理和通信连接、共同或专有连接(例如,USB、火线、Thunderbolt或PCIe)。外围设备连接接
口1318还可以耦?#31995;?#31867;似配置的外围设备连接端口(没有示出)。

移动计算设备1300还可以包括用于提供音频输出的扬声器1314。移动计算设备
1300还可以包括使用塑料、金属、或材?#31995;?#32452;合所构成的壳体1320,以包含本文所?#33268;?#30340;所
有部件或者一些部件。移动计算设备1300可以包括耦?#31995;?#22788;理器1302的电源1322,例如一
次性或可充电电池。该可充电电池还可以耦?#31995;?#22806;围设备连接端口,以便从移动计算设备
1300外部的源接收充电电流。移动计算设备1300还可以包括用于接收用户输入的物理按键
1324。移动计算设备1300还可以包括用于打开和关?#25214;?#21160;计算设备1300的电源按键1326。

本文的各个实施例(例如,在图1-12中所示出和/或参照图1-12来描述的实施例)
还可以实现在各种各样的移动计算设备中,例如,如图14中所示的膝上型计算机1400。很多
膝上型计算机包括触摸板触摸表面1417,其用作该计算机的指向设备,故可以接收拖动、滚
动和滑动?#36136;?其类似于上面所描述的在装备有触摸?#26009;?#31034;器的计算设备上所实现的那些
?#36136;?。通常,膝上型计算机1400包括耦?#31995;揭资源?#20648;器1412和大容量非?#36164;源?#20648;器
(例如,闪存的硬盘驱动器1413)的处理器1411。另外,计算机1400可以具有用于发送和接收
电磁辐射的一个或多个天线1408,这些天线1408可以连接到无线数据链路和/或耦?#31995;?#22788;
理器1411的蜂窝电话收发机1416。计算机1400还可以包括耦?#31995;?#22788;理器1411的软盘驱动器
1414和压缩光盘(CD)驱动器1415。在笔记本配置中,计算机壳体包括全部都耦?#31995;?#22788;理器
1411的触摸板1417、键盘1418和显示器1419。该计算设备的其它配置可以包括(例如,经由
USB输入)耦?#31995;?#22788;理器的计算机鼠标或者跟踪球,如所公知的,这些部件也可以结合各个
实施例来使用。

本文的各个实施例(例如,在图1-12中所示出和/或参照图1-12来描述的实施例)
还可以实现在用于将数据压缩在服务器高速缓存中的各种各样的商业可用的服务器中的
任?#25105;?#31181;中。图15描绘了一?#36136;?#20363;性服务器1500。通常,这?#22336;?#21153;器1500包括耦?#31995;揭资?#24615;
存储器1502和大容量非?#36164;源?#20648;器(例如,?#25490;?#39537;动器1504)的一个或多个多核处理器组
件1501。如图15中所示,可以通过将多核处理器组件1501插入到组装的架中,来增加到服务
器1500中。服务器1500还可以包括耦?#31995;?#22788;理器1501的软盘驱动器、压缩光盘(CD)或DVD光
盘驱动器1506。服务器1500还可以包括耦?#31995;?#22810;核处理器组件1501的网络接入端口1503,
以便与网络1505(例如,耦?#31995;?#20854;它广播系统计算机和服务器的局域网、互联网、公众交换
电话网、和/或蜂窝数据网络(如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其它类型的蜂窝
数据网络))建立网络接口连接。

用于在可编程处理器上运行以执行本文的各个实施例的操作的计算机程序代码
或“程序代码”可以利用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构
化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言来编写,或者利用各种其它编
程语言来编写。如本申请中所使用的计算机可读存储介质上所存储的程序代码或程序可以
指代其格式是处理器可理解的机器语?#28304;?#30721;(例如,目标代码)。

将很多计算设备操作系统内核组织到用户空间(非特权代码运行的空间)和内核
空间(特权代码运行的空间)。这种分隔在Android和其它通用公共许可证(GPL)环?#25345;?#20855;有
特别的重要性,其中在这些环?#25345;校?#20316;为内核空间的一部分的代码必须是GPL许可的,而在
用户空间中运行的代码可以不是GPL许可的。应当理解的是,这里所?#33268;?#30340;各种软件组件/
模块中的至少一些可以实现在内核空间中,也可以实现在用户空间中,除非另外明?#20998;?#20986;。

上述的方法描述和处理流程图仅仅是用作为说明性例子,而不是旨在要求或者隐
含着必须以所给出的顺序来执行各个实施例的步骤。如本领域普通技术人员所应当理解
的,可以以任何顺序来执行上述的实施例中的操作顺序。此外,任何对权利要求元素的单数
引用(例如,使用冠词“一个(a)”、“某个(an)”或者“该(the)”),不应?#21796;?#37322;为将该元素限制
为单数形式。

结合本文的各个实施例描述的各?#36136;?#20363;性的逻辑框、模块、电路和算法操作均可
以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可
交换性,上面对各?#36136;?#20363;性的部件、框、模块、电路和操作均围绕其功能进行了总体描述。至
于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计
约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但
是,这种实现决策不应解释为背离本发明的保护?#27573;А?br />

用于执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路
(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分
立硬件部件或者其?#25105;?#32452;合,可以用来实现或执行结合本文所公开的实施例描述的用于实
?#25351;髦质?#20363;性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者,该处
理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算
设备的组合,例如,DSP和微处理器的组合、若干微处理器、一个或多个微处理器与DSP内核
的结合,或者任何其它此?#32440;?#26500;。替代地,一些操作或方法可以由特定于给定的功能的电路
来执行。

在一个或多个实施例中,本文所述功能可以用硬件、软件、固件或它们?#25105;?#32452;?#31995;?br />方式来实现。当在软件中实现时,可以将这些功能存储成非临时性计算机可读介质或者非
临时性处理器可读介质?#31995;?#19968;个或多个指令或代码。本文所公开的方法或算法的操作可以
体现在处理器可执行软件模块中,后者可以位于非临时性计算机可读存储介质或处理器可
读存储介质上。非临时性计算机可读或处理器可读存储介质可以是计算机或处理器能够存
取的任?#26410;?#20648;介质。举例而言,但非做出限制,这?#22336;?#20020;时性计算机可读介质或者处理器可
读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、?#25490;?#23384;储器或其它磁存
储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进
行存取的任何其它介质。如本文所使用的,?#25490;?#21644;光盘包括压缩光盘(CD)、激光光盘、光盘、
数字通用光盘(DVD)、软盘和蓝光光盘,其中?#25490;?#36890;常磁性地复制数据,而光盘则用激光来
光学地复制数据。上述的组合也应当包括在非临时性计算机可读介质和处理器可读介质的
保护?#27573;?#20043;内。另外,一种方法或算法的操作可以作为一个代码和/或指令集或者其?#25105;?#32452;
合,位于非临时性处理器可读介质和/或计算机可读介质上,其中该非临时性处理器可读介
质和/或计算机可读介质可以并入到计算机程序产?#20998;小?br />

为使本领域任何普通技术人员能够实现或者使用本发明,上面围绕所公开的实施
例进行了描述。对于本领域普通技术人员来说,对这些实施例的各?#20013;?#25913;是显而?#20934;?#30340;,并
且,本申请定义的总体原理也可以在不脱离本发明的精神或保护?#27573;?#30340;基础上应用于其它
实施例。因此,本发明并不限于本文所示出的实施例,而是被给予与所附权利要求书和本文
公开的原理和新颖性特征相一致的最广?#27573;А?br />

关于本文
本文标题:用于多处理器系统的定向事件信号告知.pdf
链接地址:http://www.pqiex.tw/p-6091708.html
关于我们 - 网站声明 - 网?#38236;?#22270; - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 2010年股票融资额 股票融资的特点 上证指数历史走势 贵州茅台股票 000026股票行情 股票融资还款时间 股票分析师这个行业怎样 中国重工股票分析牛叉 黑马股票推荐11月 2010年10月上证指数