CN106663029B - 用于多处理器系统的定向事件信号告知 - Google Patents
用于多处理器系统的定向事件信号告知 Download PDFInfo
- Publication number
- CN106663029B CN106663029B CN201580041819.5A CN201580041819A CN106663029B CN 106663029 B CN106663029 B CN 106663029B CN 201580041819 A CN201580041819 A CN 201580041819A CN 106663029 B CN106663029 B CN 106663029B
- Authority
- CN
- China
- Prior art keywords
- processor element
- processor
- resource
- priority
- signaling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Multi Processors (AREA)
- Multimedia (AREA)
Abstract
多处理器计算设备方法通过以下方式来管理资源访问:当该资源可用时,信号告知事件管理器以信号告知请求访问资源的处理器元件苏醒以访问该资源,或者当该资源繁忙时,该处理器元件等待某个事件。处理器元件可以在等待访问所请求的资源时,进入休眠状态。当多个元件等待该资源时,在该资源可用时(608),以信号告知具有最高分配优先级的处理器元件苏醒,而不唤醒其它元件。可以基于启发式或者取决于计算设备或处理器元件的状态的参数,向等待该资源的处理器元件分配优先级。可以对等待资源的处理器元件的休眠持续时间进行估计,以及可以在休眠持续时间期间从调度队列中移除该处理器元件,或者为其分配另一个线程。
Description
背景技术
多核处理器依赖于原子性以保证并行应用的正确性。为了防止其它进程中断原子操作的执行,一种实现的解决方案是进程获取在互斥中执行临界区时所需要资源的锁,使得直到从这些锁中释放这些资源为止,防止其它进程使用相同的资源。一种这种锁的例子是自旋锁。自旋锁是活动地进行等待,直到获得该锁为止的原子操作,该操作重复地检查该锁是否可用。因为自旋锁进程保持活动但却不执行有用的任务,因此由于处理器不断地从存储器中加载该锁,所以这种活动等待操作消耗能量。其它锁或其它资源获取方案也类似地与实现设备的效率和性能的某种成本相关联。为了节省能量,一些处理器架构具有用于等待事件和信号告知事件的指令(例如,ARM等待事件(“WFE”)/设置事件(“SEV”))。这些架构以不加区分的方式来使用这些指令,在该情况下,将指令广播给所有等待的处理器内核,并在声明用于执行临界区的可用锁的处理器内核之间产生竞争状况。
当使用唤醒指令来以信号告知处理器内核执行原子进程时,诸如Linux之类的一些操作系统以软件方式对该唤醒进行重新排序,以避免高速缓存乒乓现象。在这些情况下,操作系统层级处理可能需要内核活动和上下文切换。当仅仅只有一个内核能够使用该资源时,在使用上面所描述的不加区分指令信号告知的架构中,这可能导致性能下降和资源使用增加,其中在该情况下,会以信号告知多个处理器内核苏醒以获得可用的锁。
发明内容
各个实施例的方法和装置提供了用于多处理器系统的定向事件信号告知的电路和方法。实施例方法可以包括:响应于确定资源是不可用的,以信号告知请求访问所述资源的处理器元件以等待一个事件;响应于所述资源变得可用,以信号告知所述处理器元件以访问所述资源。实施例可以包括:响应于所述资源的可用性,向所述处理器元件分配用于访问所述资源的优先级;接收用于指示所述资源的可用性的信号;响应于指示该资源的可用性的信号,识别所述多个处理器元件中被分配最高优先级来访问所述资源的处理器元件,其中,响应于所述资源变得可用,以信号告知所述处理器元件以访问所述资源可以包括:响应于所述资源变得可用,以信号告知被分配最高优先级来访问所述资源的处理器元件以访问所述资源。在一个实施例中,响应于确定资源是不可用的,以信号告知请求访问资源的处理器元件以等待事件可以包括:触发所述处理器元件进入休眠状态;响应于所述资源变得可用,以信号告知所述处理器元件以访问所述资源可以包括:以信号告知所述处理器元件以进行苏醒。
在一个实施例中,向所述处理器元件分配用于访问所述资源的优先级可以包括:接收用于在计算所述处理器元件的所述优先级时使用的参数;将所述处理器元件的所述参数与等待访问所述资源的所述多个处理器元件中的任何一个处理器元件的参数进行比较;基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级;将所确定的所述处理器元件的所述优先级存储在存储器中。在一个实施例中,接收用于在计算所述处理器元件的所述优先级时使用的参数可以包括:以信号告知所述处理器元件以返回用于在计算所述处理器元件的所述优先级时使用的参数;从所述处理器元件接收所述参数;将所述参数存储在存储器中。一种实施例方法可以包括:基于所述计算设备的状态,确定用于在计算所述处理器元件的所述优先级时使用的参数,其中,以信号告知所述处理器元件以返回用于在计算所述处理器元件的所述优先级时使用的参数可以包括:以信号告知所述处理器元件以返回所确定的参数。
在一个实施例中,接收用于在计算所述处理器元件的所述优先级时使用的参数可以包括:接收与所述处理器元件有关的温度。在一个实施例中,接收用于在计算所述处理器元件的所述优先级时使用的参数可以包括:接收与所述处理器元件有关的频率。在一个实施例中,接收用于在计算所述处理器元件的所述优先级时使用的参数可以包括:接收所述处理器元件与另一个处理器元件共享的高速缓存的指示。在一个实施例中,接收用于在计算所述处理器元件的所述优先级时使用的参数可以包括:接收所述处理器元件与另一个处理器元件的邻近度的指示。
在一个实施例中,响应于资源的可用性,向所述处理器元件分配用于访问所述资源的优先级可以包括:跟踪针对所述处理器元件的苏醒统计;判断针对所述处理器元件的所述苏醒统计是否超过苏醒门限;响应于确定针对所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分配用于访问所述资源的高优先级。
一种实施例方法可以包括:向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先级,其中,响应于所述资源变得可用,以信号告知所述处理器元件以访问所述资源可以包括:当前访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件。一种实施例方法可以包括:检测请求访问所述资源的多个线程;请求操作系统将所述多个线程迁移到所述多个处理器元件中选择的一组。
一种实施例方法可以包括:估计所述处理器元件在等待所述资源时的休眠时间;基于所估计的休眠时间,确定所述处理器元件的休眠状态;向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现。一种实施例方法可以包括:估计所述处理器元件在等待所述资源时的休眠时间;向所述计算设备的操作系统通知所估计的所述处理器元件的休眠时间。一种实施例方法可以包括:在与所估计的所述处理器元件的休眠时间相关联的一段时间,从调度队列中移除所述处理器元件。一种实施例方法可以包括:在所估计的休眠时间期间,为所述处理器元件分配线程。一种实施例方法可以包括:在信号告知事件管理器之间进行通信,以管理所述多个处理器元件的信号告知。
一种实施例包括一种计算设备,该计算设备具有彼此之间通信连接的多个处理器元件和信号告知事件管理器,其中,所述信号告知事件管理器被配置有信号告知事件管理器可执行指令,以执行上面所描述的实施例方法中的一个或多个的操作。
一种实施例包括一种其上存储有处理器可执行软件指令的非临时性处理器可读介质,所述处理器可执行软件指令使处理器执行上面所描述的实施例方法中的一个或多个的操作
一种实施例包括一种计算设备,该计算设备具有用于执行上面所描述的实施例方法中的一个或多个的功能的单元。
附图说明
被并入本文并且构成本说明书一部分的附图描绘了本发明的示例性实施例,并且连同上面给出的概括描述以及下面给出的详细描述一起来解释本发明的特征。
图1是描绘适合于实现实施例的计算设备的组件框图。
图2A-2D是描绘适合于实现实施例的示例性多核处理器和SoC的组件框图,其中该多核处理器和SoC包括至少一个信号告知事件管理器。
图3是描绘适合于实现实施例、具有簇架构和包括信号告知事件管理器的示例性多核处理器的组件框图。
图4是根据一个实施例,描绘处理器元件和它们分配的优先级之间的关系的示例性表。
图5是根据一个实施例,描绘多处理器系统中的信号告知定向事件的处理流程和信号传送流。
图6是描绘用于在多处理器系统中实现说明的以信号告知定向事件的实施例方法的处理流程图。
图7是描绘用于在多处理器系统中实现用于以信号告知定向事件的锁资源访问请求等待列表的实施例方法的处理流程图。
图8是描绘用于在多处理器系统中实现用于以信号告知定向事件的处理器元件的优先级划分的实施例方法的处理流程图。
图9是描绘用于在多处理器系统中实现用于以信号告知定向事件的饥饿避免的实施例方法的处理流程图。
图10是描绘用于在多处理器系统中利用以信号告知定向事件实现锁感知调度的实施例方法的处理流程图。
图11是描绘用于在多处理器系统中利用以信号告知定向事件实现锁停转(stall)动作的实施例方法的处理流程图。
图12是描绘用于在多处理器系统中利用以信号告知定向事件实现锁停转动作的实施例方法的处理流程图。
图13是描绘适合于结合各个实施例使用的示例性移动计算设备的组件框图。
图14是描绘适合于结合各个实施例使用的示例性移动计算设备的组件框图。
图15是描绘适合于结合各个实施例使用的示例性服务器的组件框图。
具体实施方式
现在参照附图来详细地描述各个实施例。在可以的地方,贯穿附图使用相同的附图标记来指代相同或者类似的部件。对于特定示例和实现的引用只是用于说明目的,而不是旨在限制本发明或者权利要求的保护范围。
本文可互换地使用术语“计算设备”和“移动计算设备”来指代下面中的任何一项或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、智能本、超级本、掌上计算机、无线电子邮件接收机、具备多媒体互联网功能的蜂窝电话、无线游戏控制器、以及包括存储器和可编程多处理器(例如,多核、多套接字或多CPU)的类似个人电子设备。虽然各个实施例对于诸如智能电话之类的移动计算设备(其中移动计算设备具有有限的存储器和电池资源)特别有用,但这些实施例通常也可用于实现多个存储器设备和有限的功率预算的任何电子设备,其中在该情况下,减少处理器的功耗可以延长移动计算设备的电池工作时间。
本文使用术语“片上系统”(SoC)指代一组相互连接的电子电路,其通常包括但不限于:硬件内核、存储器和通信接口。硬件内核可以包括各种不同类型的处理器元件,例如,通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器、多核处理器和单独的处理器内核。硬件内核还可以体现其它硬件和硬件组合,例如,现场可编程门阵列(FPGA)、专用集成电路(ASCI)、其它可编程逻辑器件、分离门逻辑器件、晶体管逻辑器件、性能监测硬件、看门狗硬件和时间基准。可以对集成电路进行配置,使得集成电路的部件位于单片的半导体材料(例如,硅)上。
实施例包括用于通过使用系统状态信息,动态地改变多处理器元件系统中的每一个处理器元件接收信号的时间的方法以及实现这些方法的计算设备。可以利用硬件和/或软件来实现信号告知事件管理器,以基于系统和环境状态对事件进行排序,来管理事件和针对各个处理器元件的信号告知唤醒。一个或多个信号告知事件管理器可以计算基于启发式的通知优先级,以及按照根据启发性所确定的优先级来确定的顺序,向各个处理器元件发送事件(例如,唤醒和等待信号)的通知。可以基于信号告知事件,来选择响应于特定的信号告知事件来应用的用于确定处理器元件优先级的启发性,可以通过将该启发性直接编码在接收的信号告知事件指令中,来将其提供给信号告知事件管理器,可以从与信号告知事件相关联的寄存器或者存储器位置读取该启发性,或者在信号告知事件管理器中预先规定和存储用于不同的信号告知模式或事件的启发性。在一个实施例中,可以使用启发式方法,基于处理器元件的温度(从低到高)来确定用于处理器元件的信号告知优先级的顺序,以减少热节流的机率。在一个实施例中,该启发式方法可以是基于元件的操作频率(从高到低),以使执行时间最小。在一个实施例中,该启发式方法可以基于某些处理器元件和邻近的处理器元件之间的共享高速缓存或者其它资源(例如,加速器或功能单元)(与远程处理器元件相比,优选本地处理器元件)。
使用用于确定处理器元件的优先级的实施例启发式方法的一个或多个,信号告知事件管理器可以生成和管理处理器元件的列表以及它们的优先级。可以使用该列表来向处理器元件发送事件通知,该事件通知以信号告知这些处理器元件中的一个(相比现有技术中的所有处理器内核)资源的可用性,并使用该列表对来自所有处理器元件的针对资源的请求进行接受/验证。可以对该列表进行管理,使得可以基于上面所描述的启发式因素,对处理器元件的优先级进行重新安排。
在一个实施例中,当处理器元件接收到事件时,该处理器元件可以苏醒并尝试获取锁。信号告知事件管理器可以从该处理器元件接收针对获取资源的锁的请求,并识别该处理器元件的优先级。如果锁是可用的,并且该处理器元件具有最高优先级,则信号告知事件管理器可以允许该处理器元件获得该可用的锁。但是,如果该资源上的锁是不可用的,或者该处理器元件不具有最高优先级,则信号告知事件管理器可以指示该处理器元件进行等待。在锁变得可用,并且信号告知事件管理器识别最高优先级处理器元件时,信号告知事件管理器可以以信号告知最高优先级处理器元件,以进行苏醒和请求获得该锁。当处理器元件释放锁,并且该锁变得可用时,信号告知事件管理器可以根据处理器元件的先前优先级排序,向下一个等待处理器元件发送信号,或者信号告知事件管理器可以更新等待处理器元件的列表,以及向新的最高优先级的等待处理器元件发送信号。
信号告知事件管理器确定处理器元件的优先级所使用的启发式方法可以由处理器元件来提供。在一个实施例中,处理器元件可以包括:当请求资源锁时,可以执行的等待事件(“WFE”)指令。该等待事件指令可以列出为了确定处理器元件的优先级而所期望的启发信息。执行该等待事件指令可以使得处理器元件将该启发信息连同针对资源块的请求一起进行转发。例如,处理器元件可以执行以下操作:响应于基于热的启发的指示来返回热信息,响应于基于位置的启发的指示来返回高速缓存位置信息,响应于基于频率的启发的指示来返回功率状态信息。处理器元件可以在针对获取该锁的请求中向信号告知事件管理器提供这些信息类型的一个或多个。实现信号告知事件管理器的一种类型的系统可以预先确定所发送的启发式信息类型。在一个实施例中,信号告知事件管理器可以使用WFE信号,对针对该资源锁的请求和启发式信息进行响应,其中该WFE信号可以触发接收方处理器元件进入休眠/低功率状态。
在处理器元件不包括WFE指令,并且所选的信号告知事件管理器指示启发式信息类型的实施例中,或者在信号告知事件管理器改变其确定优先级所需要的启发式信息的实施例中,可以将所请求的启发式信息的类型包括在被发送给处理器元件的WFE信号中。WFE信号中的比特可以提示处理器元件使用与启发有关的状态信息,对信号告知事件管理器进行响应,使得信号告知事件管理器可以将该信息应用到启发式方法中,以便确定该处理器元件的优先级。如上所述,示例可以包括:响应于所选的信号告知事件管理器的启发的指示,处理器元件返回下面中的一个或多个:响应于基于热的启发的指示来返回热信息,响应于基于位置的启发的指示来返回高速缓存位置信息,响应于基于频率的启发的指示来返回功率状态信息。该等待事件信号还可以触发请求方处理器元件的休眠状态。
在一个实施例中,用于请求方处理器元件的启发式信息可以是信号告知事件管理器响应于资源锁请求来确定的,而不是其所获取的。信号告知事件管理器可以仍然向请求方处理器元件发送等待事件信号,以触发请求方处理器元件的休眠状态。
信号告知事件管理器可以保持跟踪苏醒的次数,和/或跟踪每一个处理器元件上一次发生苏醒的时间。信号告知事件管理器可以将该数据与饥饿门限进行比较,以对处理器元件划分优先级,使得所有处理器元件最终都接收到该锁。例如,当处理器元件超过用于指示该处理器元件正在接收偏移数量的锁(高或者低)的门限时,信号告知事件管理器可以调整处理器元件的优先级,以平衡各个处理器元件获得的锁的数量,从而提示等待进程的前进过程。
各个实施例对于多个参与者尝试访问计算设备的资源,但潜在地存在访问这些资源的竞争时的任何同步原语是有用的。为了便于说明起见,参照资源块来描述各个实施例,但是这样的描述并不意味着是限制。
图1示出了适合于结合各个实施例使用的一种系统,其包括与远程计算设备50进行通信的计算设备10。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储接口20的SoC 12。该计算设备还可以包括诸如有线或无线调制解调器之类的通信组件22、存储组件24、用于建立到无线网络30的无线连接32的天线26、和/或用于将有线连接44连接到互联网40的网络接口28。处理器14可以包括具有多个处理器内核的各种处理器元件中的任何一种。SoC 12可以包括一个或多个处理器14。计算设备10可以包括一个以上的SoC 12,从而增加处理器14、处理器元件和处理器内核的数量。计算设备10还可以包括与SoC 12不相关联的处理器14。各个处理器14可以是如下面参照图2A和图2B所描述的多核处理器。处理器14中的每一个可以被配置为用于特定目的,其可以与计算设备10的其它处理器14相同或者不同。因此,各个处理器14可以包括相同或不同类型的各种处理器元件。可以将相同或不同配置的处理器14和处理器内核中的一个或多个组合在一起。
SoC 12的存储器16可以是被配置为存储由处理器14进行访问的数据和处理器可执行代码的易失性或者非易失性存储器。在一个实施例中,存储器16可以被配置为至少临时地存储数据结构,例如,处理器14中的一个或多个输出的中间处理数据。在一个实施例中,存储器16可以是高速缓存存储器或者随机存取存储器(RAM),其被配置为存储用于对进行锁资源访问请求的处理器元件划分优先级的信息。存储器16可以包括非易失性只读存储器(ROM)以便保留上述信息,从而对尝试获得计算设备上的资源上的锁的处理器元件划分优先级。
计算设备10和/或SoC 12可以包括被配置为用于各种目的的一个或多个存储器16。在一个实施例中,一个或多个存储器16可以被配置为专用于存储上述信息,以便对用于指定的一组处理器元件的处理器元件划分优先级。存储器16可以以下面的方式来存储该信息:使信号告知事件管理器能够针对用于多处理器元件系统的定向事件信号告知,对该信息进行解释。
通信接口18、通信组件22、天线26和/或网络接口28可以一致地工作,使计算设备10能够经由无线连接32通过无线网络30和/或有线网络44,与远程计算设备50进行通信。可以使用各种无线通信技术(例如,其包括用于无线通信的无线电频谱)来实现无线网络30,以向计算设备10提供到互联网40的连接,其中通过互联网40,其可以与远程计算设备50交换数据。
存储接口20和存储组件24可以一致地工作,以允许计算设备10将数据存储在非易失性存储介质上。可以非常类似于存储器16的实施例,对存储组件24进行配置,其中,存储组件24可以存储用于对进行锁资源访问请求的处理器元件划分优先级的信息,使得一个或多个处理器14可以访问该信息。即使在计算设备10的电源被关闭之后,存储组件24(其是非易失性的)也可以保留该信息。当电源被再次打开,计算设备10重新启动时,计算设备10可获得存储组件24上存储的该信息。存储接口20可以控制针对存储设备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可以分别是同构的图形处理器内核或者数字信号处理器内核。
通过制造过程和材料的变化,同构处理器内核200、201、202、203的性能特性可以在同一多核处理器14中或者使用相同设计的处理器内核的另一个多核处理器14中,在处理器内核之间彼此不同。
处理器内核200、201、202、203可以是异构的,其在于:单个处理器14的处理器内核200、201、202、203可以被配置为用于不同的目的,和/或具有不同的性能特性。这些异构处理器内核的例子可以包括称为“big.LITTLE”架构的架构,在该架构中,可以将慢速、低功率处理器内核与更强大和功耗更大的处理器内核相耦合。
多核处理器14还可以包括与每个处理器内核200、201、202、203进行通信的信号告知事件管理器206。该信号告知事件管理器(或者信号告知管理器)206可以接收资源访问请求(其包括用于对计算设备的资源进行锁定或者解锁的请求),对各个处理器内核划分优先级,以及以信号告知这些处理器内核等待事件,并当该事件发生时,以信号告知具有优先级的处理器内核。在一个实施例中,该事件包括:该处理器内核尝试获得其锁的资源上的锁被释放。
图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和信号告知事件管理器1210)进行通信。在一个实施例中,处理器内核(如,处理器内核3 203)可以与专用信号告知事件管理器(如,信号告知事件管理器2 212)进行通信。信号告知事件管理器208、210、212可以经由处理器元件的公共通信总线,或者经由专用的信号告知事件管理器通信总线230,来彼此之间进行通信。
图2C描绘了对于处理器元件(如,单核或多核处理器221、214、216、218)来说,信号告知事件管理器206、208、210是本地的实施例。图2D描绘了对于处理器元件(如,SoC 220、222、224、226)来说,信号告知事件管理器206、208、210是本地的实施例。类似于图2B中的例子,信号告知事件管理器206、208、210可以经由图2C中的SoC 12或者图2D中的计算设备10的公共通信总线,或者经由专用的信号告知事件管理器通信总线230,来彼此之间进行通信。在一个实施例中,可以存在信号告知事件管理器206、208、210的分层,使得信号告知事件管理器206、208、210对于处理器内核200、201、202、203来说是本地的(如同图2B中),并与对于更高层组件(如,多核处理器221、214、216、218或SoC 220、222、224、226)来说是本地的信号告知事件管理器206、208、210进行通信。类似地,对于多核处理器221、214、216、218来说是本地的信号告知事件管理器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)。为了便于解释起见,参照这些处理器元件中的任何一个(其包括图2A-2D中所示出的四个处理器内核200、201、202、203、处理器212、214、216、218或者SoC 220、222、224、226)来描述本文的各个实施例。但是,图2A-2D中所示出以及在本文中所引用的处理器元件仅仅只是提供成例子,而决不意味着将各个实施例限制于四核处理器系统、四处理器系统或者四SoC系统。与四个处理器内核、处理器或者SoC相比,计算设备10、SoC 12或者多核处理器14可以单独地或者组合地包括更少或者更多的处理器内核。
多个信号告知事件管理器206、208、210可以彼此之间进行通信,以管理处理单元所请求的资源的可用性、处理器元件的优先级、以及以信号告知处理器元件苏醒和获得所请求的资源上的锁,如本文所进一步讨论的。可以围绕单个信号告知事件管理器,来解释本文所讨论的例子;但是,这仅仅只是提供成例子,而决不意味着将各个实施例限制于单个信号告知事件管理器系统。计算设备10、SoC 12或者多核处理器14可以单独地或者组合地包括一个以上的信号告知事件管理器。
图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中的处理器内核的成员资格。图3中所描绘的例子示出了每一个簇300、302中的两个处理器内核200、201、202、203。簇300、302中的处理器内核200、201、202、203的数量和组合并不意味着是限制性的。此外,簇300、302的数量和每一个簇300、302的配置也不意味着是限制性的。簇300、302可以包括处理器内核200、201、202、203的任意组合,其包括簇300、302二者中均包括的处理器内核200、201、202、203。
除了处理器内核200、201、202、203之外,簇300、302均可以包括簇高速缓存304、306,在一个实施例中,可以非常类似于上面所描述的图1中的存储器设备16来配置簇高速缓存304、306。簇高速缓存304、306可以存储数据和程序指令,以便它们相应的簇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中的数据和程序指令相类似的数据和程序指令。处理器高速缓存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)进行相关(按行)的例子,但该数据也可以使用任何数量的已知数据结构来进行存储和相关。关于每一个处理器元件的信息的例子可以包括:列404中的优先级、列406中的用于确定该优先级的一个或多个参数(例如,处理器元件温度、操作频率、和/或这些元件的邻近度/资源共享)、列408中的以信号告知该处理器元件苏醒来获得资源锁的次数、以及列410中的自从上一次发生以信号告知该处理器元件苏醒以来的时间量、或者上一次发生以信号告知该处理器元件苏醒的时间。在一个实施例中,用于确定所述优先级的参数可以预编程在运行于计算设备上的软件中、硬编码到信号告知事件管理器中、或者由信号告知事件管理器基于各种考量来进行选择。
表400可以包括进行锁资源访问请求的所有处理器元件。在一个实施例中,在计算设备上的特定会话期间,直到第一处理器元件进行锁资源访问请求为止,表400可以是空表或者不存在。在第一处理器元件进行第一锁资源访问请求时,可以启动表400。随着其它处理器元件进行其它锁资源访问请求,还可以进一步填充表400。
在一个实施例中,表400可以包括用于对进行锁资源访问请求的每一个处理器元件的信息进行相关的行414、416、418、420、422、424。可以将行414-424包括在针对N个数量的处理器元件(即,处理器元件0到处理器元件N-1)中的每一个的表中。在相应的处理器元件进行解锁资源访问请求之后,可以将每一行414-424保留在表400中。在相应的处理器元件进行另一个锁资源请求时,在处理器元件进行解锁资源访问请求时,和/或按照定期的间隔,对行414-424中的每一个进行更新。在一个实施例中,可以从表400中移除进行了解锁资源访问请求的处理器元件所对应的行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的参数使用成用于确定处理器元件的优先级404的标准。在一个实施例中,可以将参数的任意组合使用成用于确定处理器元件的优先级的标准。
在一个实施例中,已经以信号告知该处理器元件苏醒来获得资源锁的次数(列408中所列出的)和/或自从上一次发生以信号告知该处理器元件苏醒以来的时间量(列410中所列出的)可以在用于设置处理器元件的优先级的启发中使用,以便避免这些处理器元件中的任何一个出现饥饿状况。只要饥饿的处理器元件尝试获得资源锁的进程没有以及时的方式进展,就可以强制该饥饿的处理器元件进行等待。当与其它处理器元件相比,以信号告知处理器元件苏醒明显更少时,或者与其它处理器元件相比,要等待明显更长的时间才以信号告知苏醒,可能发生饥饿情况。已经以信号告知处理器元件苏醒以获得资源锁的次数可以与苏醒数量门限进行比较。另外地或替代,自从上一次出现以信号告知该处理器元件苏醒以来的时间量可以与苏醒以来时间门限进行比较。可以定期地进行该比较,和/或在处理器元件发出解锁资源访问请求时进行该比较。响应于确定超过饥饿门限中的一个或多个,可以对该饥饿的处理器元件的优先级进行增加,以使该饥饿的处理器元件在先前具有更高优先级的其它处理器元件之前获得该资源锁。
可以将表400存储在上面所提及的存储器和存储设备中的任何一个里。例如,可以将表400存储在图1中所示出的存储器设备16中、存储在图3中所示出的处理器高速缓存308中、或者存储在图2和图3中所示出的信号告知事件管理器206中。在另一个例子中,可以将表400存储在上面所提及的图3中所示出的存储器设备16、处理器高速缓存308、信号告知事件管理器206、簇高速缓存304或者簇高速缓存306中。信号告知事件管理器可以从这些存储位置中的任何一个访问表400。
图5根据一个实施例,描绘了多处理器系统中的定向事件信号告知的处理流程和信号流。为了便于说明起见,图5中的例子包括信号告知事件管理器206、处理器元件0 524、处理器元件1 526和处理器元件2 528之间的信号传输。该例子并不意味着对关于可以与信号告知事件管理器通信的处理器元件的数量或者可以与处理器元件通信的信号告知事件管理器的数量进行限制。在该例子中,处理器元件0 524可以向信号告知事件管理器206发送锁资源访问请求500。响应于没有其它处理器元件526、528具有关于处理器元件0 524正在请求其资源锁的相同资源的资源锁,处理器元件0 524可以获得资源锁518。信号告知事件管理器206可以对锁资源访问请求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)的信息进行比较,对该表进行更新。在该例子中,处理器元件2528具有的优先级标准的参数值使得比处理器元件1的优先级更高。如果处理器元件0524仍然具有资源锁518,则信号告知事件管理器可以向处理器元件2 528返回等待事件信号508。该等待事件信号508可以触发处理器元件2 528进入休眠状态,直到其接收到针对资源锁该资源可用的信号(例如,设置事件信号)为止。
处理器元件0 524可以向信号告知事件管理器206发送解锁资源访问请求510,其指示处理器元件0 524放弃资源锁518,使得对于要获得该资源上的资源锁的处理器元件526、528中的另一个来说,该资源是可用的。作为响应,信号告知事件管理器206可以对所述表进行检查,以确定具有最高优先级的处理器元件524、526、528。响应于确定处理器元件2528具有最高优先级,信号告知事件管理器206可以向该处理器元件2 528发送设置事件信号或者唤醒信号512。该唤醒信号512可以触发处理器元件2 528从其休眠状态中苏醒,以获得资源锁520。当完成该资源的使用时,处理器元件2 528可以向信号告知事件管理器206发送解锁资源访问请求514,放弃该资源锁520。作为响应,信号告知事件管理器206可以再次对所述表进行检查,以确定具有最高优先级的处理器元件524、526、528。在图5所示出的例子中,在该点,处理器元件1 526是唯一等待资源锁的处理器元件,因此也就是处理器元件1526具有最高优先级。因此,信号告知事件管理器206可以发送唤醒信号516,触发处理器元件1 526从其休眠状态中苏醒,以获得资源锁522。
锁资源访问请求500、502、506可以包括针对优先级和/或饥饿的标准的信息,也可以不包括该信息。在一个实施例中,处理器元件524、526、528可能并不知道优先级和/或饥饿的标准。在该实施例中,信号告知事件管理器206可以通过向另一个源(例如,运行在该计算设备上的内核或操作系统)请求信息、从存储器中获取信息、或者从处理器元件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可以向具有资源锁的处理器元件发送更新的优先级信息,并且响应于放弃该资源锁,放弃方处理器元件可以向具有最高优先级的处理器元件发送唤醒信号。用此方式,最高优先级处理器元件可以从放弃方处理器元件接收该唤醒信号,致使其从休眠状态中苏醒,以及获得现在可用的资源锁。
图6描绘了用于在多处理器系统中实现定向事件信号告知的实施例方法600。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬件的组合中执行方法600。在方框602中,信号告知事件管理器可以从处理器元件接收资源访问请求。在一个实施例中,该资源访问请求可以包括:用于帮助信号告知事件管理器确定请求方处理器元件获得所请求的资源上的锁的优先级的信息,如上面所讨论的。
在判断框604中,信号告知事件管理器可以判断该资源访问请求是用于对获得的资源锁进行解锁,还是用于获得资源锁。例如,该资源访问请求可以指示该请求是解锁资源访问请求,还是锁资源访问请求。响应于确定该资源访问请求是解锁资源访问请求(即,判断框604=“解锁”),在判断框606中,信号告知事件管理器可以判断是否存在针对相同资源的任何未决的锁资源访问请求。在一个实施例中,信号告知事件管理器可以对先前发送了锁资源访问请求但被拒绝(由于所请求的资源已经被另一个处理器元件锁定)的处理器元件的优先级进行检查。响应于确定不存在针对相同资源的任何未决的锁资源访问请求(即,判断框604=“否”),信号告知事件管理器可以返回到方框602以接收其它资源访问请求。响应于确定存在未决的锁资源访问请求(即,判断框606=“是”),在方框608中,信号告知事件管理器可以向最高优先级处理器元件发送唤醒信号,从而触发该处理器元件从休眠状态苏醒,以及获得可用资源上的锁。信号告知事件管理器可以在方框602中,接收其它资源访问请求。
响应于确定该资源访问请求是锁资源访问请求(即,判断框604=“锁”),在判断框610中,信号告知事件管理器可以判断另一个处理器元件是否拥有或者已经获得所请求的资源上的锁。如上面所讨论的,信号告知事件管理器可以存储和维持关于该锁和针对该操作进行访问(例如,在表中)的处理器元件的数据。该表可以是专用于特定的资源,信号告知事件管理器可以通过分析该表中的数据,确定获得的资源锁的状态。在一个实施例中,表中针对特定资源的数据可以通过优先级值来指示资源锁的状态。例如,特定优先级值可以指示相关联的处理器元件当前拥有该资源锁。在另一个实施例中,数据(例如,二进制标志)可以指示资源锁的所有权。其它实施例可以包括通用表(而不是特定于资源的表),其中该表可以包括:用于说明处理器元件正在请求或者拥有资源锁的资源的指示。响应于确定所请求的资源没有被锁,所请求的资源是可用的,或者该资源锁没有被拥有(即,判断框610=“否”),在方框612中,信号告知事件管理器可以向请求方处理器元件确认该资源锁的捕获。在方框614中,信号告知事件管理器可以对所述表或者锁请求等待列表进行更新,以反映该资源锁的所有权。在上面所描述的实施例中,信号告知事件管理器可以通过更新资源锁所有权的指示符中的一个或多个,来完成对该表的更新。信号告知事件管理器可以在方框602中,接收其它资源访问请求。
响应于确定所请求的资源被锁/所请求的资源不可用/该资源锁已被拥有(即,判断框610=“是”),在方框616中,信号告知事件管理器可以以信号告知请求方处理器元件等待一个事件。在一个实施例中,该等待事件信号可以触发处理器元件进入休眠模式,直到被通知该事件为止,如上所述。在方框618中,信号告知事件管理器可以对所述表或者锁请求等待列表进行更新,以反映拒绝的针对该资源锁的请求。在一个实施例中,信号告知事件管理器可以至少更新该表中的请求方处理器元件的优先级,其指示该请求方处理器元件已针对资源锁进行了请求,并在资源锁的其它请求之中,说明当前请求的排名。信号告知事件管理器可以在方框602中,接收其它资源访问请求。
在一个实施例中,在计算设备上的会话期间,在第一锁资源访问请求之前,可能还没有启动所述表,或者没有完全地或者部分地填充该表。完全或部分填充的表可以包括数据,但在接收到与锁资源访问请求相关联的更新数据之前,该数据可能是无关的或者不完整的。为了解决该实施例,信号告知事件管理器或者另一个处理器可以实现实施例方法700,以判断是否存在该表,当不存在该表时,实现锁资源访问请求表或者等待列表,如图7中所示。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬件的组合中执行方法700。
当信号告知事件管理器需要访问锁资源访问请求或等待列表表格时(例如,在方框602中接收到资源请求时,或者在方法600中的判断框604中,判断所请求的资源是否被锁定时),在判断框702中,信号告知事件管理器可以判断锁资源访问请求表或者等待列表是否存在或者被填充。响应于确定不存在该表或者没有启动该表(即,判断框702=“否”),在方框704中,信号告知事件管理器可以启动该表或者等待列表。在一个实施例中,启动该表可以涉及:生成该表,并使用与进行锁资源访问请求的至少一个处理器元件相关联的数据对该表进行填充。在方框706中,信号告知事件管理器可以向请求方处理器元件分配优先级。如上所述,该表的第一处理器元件可以具有任何优先级,这是由于不存在用于比较的其它处理器元件。在一个实施例中,可以向该表中的第一处理器元件分配缺省优先级或者随机优先级。
响应于确定存在该表或者启动了该表(即,判断框702=“是”),在方框708中,信号告知事件管理器可以确定请求方处理器元件的优先级。如上所述,信号告知事件管理器可以接收相关的数据,以便通过各种方式来确定处理器元件的优先级,其包括信号告知事件管理器和计算设备的其它硬件和软件组件之间的多个信号。与确定处理器元件的优先级有关的数据可以是通过软件或固件来预先确定的,或者可以是信号告知事件管理器选择的。在方框710中,信号告知事件管理器可以对所述表进行更新。根据该表的配置,信号告知事件管理器可以基于与请求方处理器元件相关联的数据同与其它处理器元件相关联的数据的比较,对请求方处理器元件和该表中列出的其它处理器元件的优先级进行更新。响应于请求方处理器元件的优先级较高,对所述表进行更新以包括或者更新请求方处理器元件的优先级可能造成其它处理器元件的优先级发生改变。在可选框712中,在拥有该资源锁的处理器元件向下一个等待的处理器元件通知该资源何时被解锁的实施例中,信号告知事件管理器可以向拥有该资源锁的处理器元件发送该表。可选框712中的操作使拥有该资源锁的处理器元件能够基于所述表中的优先级,确定将接收该锁的正在等待的下一个处理器元件。
图8描绘了用于在多处理器系统中实现用于定向事件信号告知的处理器元件的优先级划分的实施例方法800。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬件的组合中执行方法800。在方框802中,信号告知事件管理器可以确定用于向请求方处理器元件分配优先级的标准或者准则。该标准或准则可以包括下面中的一个或多个:处理器元件温度、操作频率和位置。在一个实施例中,信号告知事件管理器可以选择用于分配优先级的标准或准则,其可以取决于计算设备在该时间的状态。例如,高温的状态、低功率可用性、省电模式和低优先级进程可以使得信号告知事件管理器将低处理器元件温度和/或低操作频率选择作为更高优先级的标准。另一方面,充满电或者正在充电电池和高性能软件可以使得信号告知事件管理器选择高操作频率和/或高度地域性作为更高优先级的标准。在其它实施例中,信号告知事件管理器可以通过从存贮设备(例如,集成在信号告知事件管理器之中或者之外的寄存器)获取该标准/准则,来确定用于分配优先级的标准或准则,或者如运行在计算设备上的软件程序所提供的。
在方框804中,信号告知事件管理器可以将与所选择的标准有关的请求方处理器元件的一个或多个参数,和所述表中存储的其它处理器元件的一个或多个类似参数进行比较,以确定最满足所选择的用于分配优先级的标准或准则的处理元件。根据所选择的用于确定处理器元件的优先级的标准或准则,针对请求方处理器元件的有利比较可以源自于:与其它处理器元件的可比较数据相比,请求方处理器元件的数据较高或者较低。与等待获得和请求方处理器元件的相同资源上的资源锁的其它处理器元件中的至少一个相比,针对请求方处理器元件的有利比较可以得到较高的优先级。在一些实施例中,方框804中的比较可以是这些参数的值的直接比较。在一些实施例中,方框804中的比较可以是间接比较,其中,向这些参数的值应用一个或多个算法/计算,并对这些算法/计算的结果进行比较。
在方框806中,信号告知事件管理器可以基于参数比较,向请求方处理器元件分配优先级。向请求方处理器元件分配优先级还可以导致:等待获得相同资源上的资源锁的其它处理器元件中的一个或多个的优先级的改变。例如,响应于向请求方处理器元件分配比三个其它处理器元件高的优先级,可以将这三个其它处理器元件中的每一个处理器元件的优先级相应地递减。同时,与分配给请求方处理器元件的优先级相比,具有较高优先级的其它处理器元件可以保持优先级分配的不改变。
图9描绘了用于在多处理器系统中实现用于定向事件信号告知的饥饿避免的实施例方法900。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬件的组合中执行方法900。在方框902中,信号告知事件管理器可以跟踪已进行了锁资源访问请求的一个或多个处理器元件的苏醒统计。在一个实施例中,该苏醒统计可以包括:信号告知事件管理器向处理器元件发送唤醒信号的次数、上一次向该处理器元件发送唤醒信号的时间、自从上一次向该处理器元件发送唤醒信号以来流逝的时间、该处理器元件进行未决的锁资源访问请求的时间、和/或自从该处理器元件进行未决的锁资源访问请求以来流逝的时间。
在方框904中,信号告知事件管理器可以将针对具有未决锁资源访问请求的处理器元件的苏醒统计与苏醒门限进行比较。在一个实施例中,该苏醒门限可以是预定的值、基于用于相同统计的历史信息的值、或者针对具有未决锁资源访问请求的其它处理器元件的相同统计的值中的一个或多个的函数。
在判断框906中,信号告知事件管理器可以判断具有未决锁资源访问请求的处理器元件的苏醒统计是否超过苏醒门限。响应于确定具有未决锁资源访问请求的处理器元件的苏醒统计没有超过苏醒门限(即,判断框906=“否”),则在方框908中,信号告知事件管理器可以在不进行改变的情况下,维持所述表。
响应于确定具有未决锁资源访问请求的处理器元件的苏醒统计超过苏醒门限(即,判断框906=“是”),则在方框910中,信号告知事件管理器可以向处理器元件分配较高的优先级,在方框912中,对所述表进行更新,如上面针对方框710所描述的。可以以众多方式来确定分配给该处理器元件的较高优先级。在一个实施例中,可以根据预定的规则,来分配较高优先级,例如,对优先级递减某个值,向该处理器元件分配恒定的优先级(例如,最高优先级),或者对该处理器元件在优先级队列中的位置进行翻转。在一个实施例中,可以根据该处理器元件的饥饿严重性,来分配较高优先级。可以根据该处理器元件的苏醒统计与其它处理器元件的苏醒统计的比较,来确定该严重性。饥饿的严重性越大,则分配给该处理器元件的优先级越高。
图10描绘了用于在多处理器系统中利用定向事件信号告知实现锁感知调度的实施例方法1000。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬件的组合中执行方法1000。在方框1002中,信号告知事件管理器可以检测到多个线程正在请求相同的资源锁,例如,当多个线程使用共同的资源在不同的处理器元件上执行时。
在方框1004中,信号告知事件管理器可以请求操作系统/调度器将竞争相同资源的线程中的一些或者全部迁移到某些处理器元件。信号告知事件管理器可以请求将这些线程迁移到某些元件,以利用不同系统架构的某些效率。在一个实施例中,处理器元件可以被布置在簇架构中。选择一个簇的某些处理器元件来执行竞争相同资源的线程可以使得当该簇的处理器元件操作在相同的频率时,性能最大化。在一个实施例中,一个簇的处理器元件趋向于处于邻近的位置。当以几乎零功耗来使该簇的进行等待的处理器元件停转时,可以提高散热,以及可以使用停转的处理器元件的区域来消散其它运行中的处理器元件所产生的热量。在一个实施例中,当停转的处理器元件的额外区域用于散热时,运行中的处理器元件的最大频率可能超过最大推荐温度和/或操作频率。在一个实施例中,处理器架构可以使用多个处理器元件对存储器层级的一部分共享,在该情况下,可以如优先级标准,减少或者最小化针对存储器的访问时延,并如各种启发中的优先级标准,增加或者最大化局部性。在包括多个电源的计算系统中,可以对优先级标准进行调整,使得将线程移动到使用相同电源的处理器元件,同时减少其它电源上的处理器元件的优先级,以便它们不接收线程并因此关闭。在方框1006中,信号告知事件管理器可以接收对于竞争相同资源的线程的再分配的确认,将这些线程再分配到请求的处理器元件上。在方框1008中,信号告知事件管理器可以更新所述表,如上面针对方框710所描述的。
图11描绘了用于在多处理器系统中利用定向事件信号告知实现锁停转(stall)动作的实施例方法1100。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬件的组合中执行方法1100。在方框1102中,信号告知事件管理器可以估计:当前处于等待事件状态的处理器元件在等待所请求的资源锁变得可用时的休眠时间(即,该处理器保持在低功率状态的持续时间)。在一个实施例中,信号告知事件管理器可以基于下面中的一项或多项来进行该估计:历史信息、具有较高优先级的等待相同资源的处理器元件上的线程的预期执行时间、以及等待该资源的较高优先级处理器元件的数量。例如,如果该处理器元件具有低优先级,但有多个较高优先级的处理器元件在等待相同的资源,则信号告知事件管理器可以估计该处理器元件将具有相对较长的休眠时间,尤其是与该处理器元件具有最高优先级时,或者其是等待列表中的唯一元件并因此是使用该资源的下一个元件时相比。
在方框1104中,信号告知事件管理器可以基于所估计的休眠时间,确定该请求方处理器元件的休眠状态。各个实施例可以针对该处理器元件,实现众多不同的休眠状态。不同的休眠状态可以通过功耗的水平来描绘特性。较高功耗的休眠状态可以提供较少的省电,但能够较快速地苏醒,例如,通过保持状态和易失性存储器中的工作数据。相比而言,通过关闭更多的资源和降低存储器的功率,较低功耗的休眠状态可以节省更多的功率,其导致需要对更多的资源重新供能(其需要功率),将状态数据重新加载到易失性存储器(其花费更多的时间),以便快速执行指令。在一个实施例中,由于较短的时间段上的功率节省相对效率损失可能是不值得的(因为需要在系统中重新建立该处理器元件),因此信号告知事件管理器可以针对较短的估计的休眠时间,选择较高功耗休眠状态。类似地,对于较长的休眠时间而言,信号告知事件管理器可以选择较低功耗的休眠状态,由于较大的功率节省的净利益。在方框1106中,信号告知事件管理器可以向请求方处理器元件通知对应于所估计的休眠时间的指定休眠状态。在一个实施例中,请求方处理器元件可以实现所指定的休眠状态。
图12描绘了用于在多处理器系统中利用定向事件信号告知实现锁停转动作的实施例方法1200。可以在使用软件的计算设备、通用或专用硬件(例如,处理器或信号告知事件管理器)或者软硬件的组合中执行方法1200。在方框1202中,信号告知事件管理器可以估计:当前处于等待事件状态的处理器元件在等待所请求的资源锁变得可用时的休眠时间(即,该处理器保持在低功率状态的持续时间),如同方框1102中。在方框1204中,信号告知事件管理器可以向操作系统/调度器通知所估计的休眠时间。在一个实施例中,在可选框1206中,操作系统/调度器可以在与所估计的休眠时间相关联的一段时间,从调度队列中移除该请求方处理器元件。在一个替代的实施例中,在可选框1208中,操作系统/调度器可以在所估计的休眠时间期间,向该处理器元件分配不同的线程,例如,该线程不需要使用该处理器元件接收到针对其的等待事件信号的资源。
图13描绘了适合于结合各个实施例(例如,在图1-12中所示出和/或参照图1-12来描述的实施例)来使用的示例性移动计算设备。移动计算设备1300可以包括耦合到触摸屏控制器1304和内部存储器1306的处理器1302。处理器1302可以是被设计为实现通用或特定处理任务的一个或多个多核集成电路。内部存储器1306可以是易失性存储器或非易失性存储器,还可以是安全和/或加密存储器,或者非安全和/或非加密存储器、或者其任意组合。可以利用的存储器类型的例子包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1304和处理器1302还可以耦合到触摸屏面板1312,例如,电阻式感应触摸屏、电容感应触摸屏、红外线感应触摸屏等等。另外,计算设备1300的显示器并不需要具有触摸屏能力。
移动计算设备1300可以具有用于发送和接收通信的一个或多个无线信号收发机1308(例如,Peanut、Bluetooth、Zigbee、Wi-Fi、RF无线电装置)和天线1310,它们彼此之间相耦合和/或耦合到处理器1302。收发机1308和天线1310可以结合上面所提及的电路来使用,以实现各种无线传输协议栈和接口。移动计算设备1300可以包括蜂窝网络无线调制解调器芯片1316,其经由蜂窝网络来实现通信并耦合到处理器。
移动计算设备1300可以包括耦合到处理器1302的外围设备连接接口1318。外围设备连接接口1318可以被单独地配置为接受一种类型的连接,或者被配置为接受多种类型的物理和通信连接、共同或专有连接(例如,USB、火线、Thunderbolt或PCIe)。外围设备连接接口1318还可以耦合到类似配置的外围设备连接端口(没有示出)。
移动计算设备1300还可以包括用于提供音频输出的扬声器1314。移动计算设备1300还可以包括使用塑料、金属、或材料的组合所构成的壳体1320,以包含本文所讨论的所有部件或者一些部件。移动计算设备1300可以包括耦合到处理器1302的电源1322,例如一次性或可充电电池。该可充电电池还可以耦合到外围设备连接端口,以便从移动计算设备1300外部的源接收充电电流。移动计算设备1300还可以包括用于接收用户输入的物理按键1324。移动计算设备1300还可以包括用于打开和关闭移动计算设备1300的电源按键1326。
本文的各个实施例(例如,在图1-12中所示出和/或参照图1-12来描述的实施例)还可以实现在各种各样的移动计算设备中,例如,如图14中所示的膝上型计算机1400。很多膝上型计算机包括触摸板触摸表面1417,其用作该计算机的指向设备,故可以接收拖动、滚动和滑动手势(其类似于上面所描述的在装备有触摸屏显示器的计算设备上所实现的那些手势)。通常,膝上型计算机1400包括耦合到易失性存储器1412和大容量非易失性存储器(例如,闪存的硬盘驱动器1413)的处理器1411。另外,计算机1400可以具有用于发送和接收电磁辐射的一个或多个天线1408,这些天线1408可以连接到无线数据链路和/或耦合到处理器1411的蜂窝电话收发机1416。计算机1400还可以包括耦合到处理器1411的软盘驱动器1414和压缩光盘(CD)驱动器1415。在笔记本配置中,计算机壳体包括全部都耦合到处理器1411的触摸板1417、键盘1418和显示器1419。该计算设备的其它配置可以包括(例如,经由USB输入)耦合到处理器的计算机鼠标或者跟踪球,如所公知的,这些部件也可以结合各个实施例来使用。
本文的各个实施例(例如,在图1-12中所示出和/或参照图1-12来描述的实施例)还可以实现在用于将数据压缩在服务器高速缓存中的各种各样的商业可用的服务器中的任何一种中。图15描绘了一种示例性服务器1500。通常,这种服务器1500包括耦合到易失性存储器1502和大容量非易失性存储器(例如,磁盘驱动器1504)的一个或多个多核处理器组件1501。如图15中所示,可以通过将多核处理器组件1501插入到组装的架中,来增加到服务器1500中。服务器1500还可以包括耦合到处理器1501的软盘驱动器、压缩光盘(CD)或DVD光盘驱动器1506。服务器1500还可以包括耦合到多核处理器组件1501的网络接入端口1503,以便与网络1505(例如,耦合到其它广播系统计算机和服务器的局域网、互联网、公众交换电话网、和/或蜂窝数据网络(如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其它类型的蜂窝数据网络))建立网络接口连接。
用于在可编程处理器上运行以执行本文的各个实施例的操作的计算机程序代码或“程序代码”可以利用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言来编写,或者利用各种其它编程语言来编写。如本申请中所使用的计算机可读存储介质上所存储的程序代码或程序可以指代其格式是处理器可理解的机器语言代码(例如,目标代码)。
将很多计算设备操作系统内核组织到用户空间(非特权代码运行的空间)和内核空间(特权代码运行的空间)。这种分隔在Android和其它通用公共许可证(GPL)环境中具有特别的重要性,其中在这些环境中,作为内核空间的一部分的代码必须是GPL许可的,而在用户空间中运行的代码可以不是GPL许可的。应当理解的是,这里所讨论的各种软件组件/模块中的至少一些可以实现在内核空间中,也可以实现在用户空间中,除非另外明确指出。
上述的方法描述和处理流程图仅仅是用作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个实施例的步骤。如本领域普通技术人员所应当理解的,可以以任何顺序来执行上述的实施例中的操作顺序。此外,任何对权利要求元素的单数引用(例如,使用冠词“一个(a)”、“某个(an)”或者“该(the)”),不应被解释为将该元素限制为单数形式。
结合本文的各个实施例描述的各种示例性的逻辑框、模块、电路和算法操作均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上面对各种示例性的部件、框、模块、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本发明的保护范围。
用于执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合,可以用来实现或执行结合本文所公开的实施例描述的用于实现各种示例性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、若干微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。替代地,一些操作或方法可以由特定于给定的功能的电路来执行。
在一个或多个实施例中,本文所述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储成非临时性计算机可读介质或者非临时性处理器可读介质上的一个或多个指令或代码。本文所公开的方法或算法的操作可以体现在处理器可执行软件模块中,后者可以位于非临时性计算机可读存储介质或处理器可读存储介质上。非临时性计算机可读或处理器可读存储介质可以是计算机或处理器能够存取的任何存储介质。举例而言,但非做出限制,这种非临时性计算机可读介质或者处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非临时性计算机可读介质和处理器可读介质的保护范围之内。另外,一种方法或算法的操作可以作为一个代码和/或指令集或者其任意组合,位于非临时性处理器可读介质和/或计算机可读介质上,其中该非临时性处理器可读介质和/或计算机可读介质可以并入到计算机程序产品中。
为使本领域任何普通技术人员能够实现或者使用本发明,上面围绕所公开的实施例进行了描述。对于本领域普通技术人员来说,对这些实施例的各种修改是显而易见的,并且,本申请定义的总体原理也可以在不脱离本发明的精神或保护范围的基础上应用于其它实施例。因此,本发明并不限于本文所示出的实施例,而是被给予与所附权利要求书和本文公开的原理和新颖性特征相一致的最广范围。
Claims (64)
1.一种用于对具有多个处理器元件的计算设备上的一个或多个公共资源进行竞争的处理器元件进行管理的方法,包括:
基于所述计算设备的操作状态,确定用于在向请求访问资源的所述多个处理器元件分配优先级时使用的一个或多个参数;
向处理器元件分配用于请求访问所述资源的优先级,其中,所述优先级是基于针对所述处理器元件的所述一个或多个参数来分配的,并且其中,向所述处理器元件分配用于访问所述资源的所述优先级包括:
跟踪所述处理器元件的苏醒统计;
确定所述处理器元件的所述苏醒统计是否超过苏醒门限;以及
响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分配用于访问所述资源的高优先级;
响应于确定所述资源是不可用的,以信号告知请求访问所述资源的所述处理器元件等待所述资源变得可用;以及
响应于确定所述资源是可用的,并且所述处理器元件被分配最高优先级来请求访问所述资源,以信号告知所述处理器元件访问所述资源。
2.根据权利要求1所述的方法,还包括:
接收用于指示所述资源的可用性的信号;以及
响应于用于指示所述资源的可用性的所述信号,识别所述多个处理器元件中被分配所述最高优先级来访问所述资源的一个处理器元件。
3.根据权利要求1所述的方法,其中:
响应于确定所述资源是不可用的以信号告知请求访问资源的所述处理器元件等待所述资源变得可用包括:触发所述处理器元件进入休眠状态;以及
以信号告知所述处理器元件访问所述资源包括:以信号告知所述处理器元件苏醒。
4.根据权利要求1所述的方法,其中,向所述处理器元件分配用于访问所述资源的所述优先级包括:
接收用于在计算所述处理器元件的所述优先级时使用的所述参数;
将所述处理器元件的所述参数与等待访问所述资源的所述多个处理器元件中的每一个处理器元件的所述参数进行比较;
基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级;以及
将所确定的所述处理器元件的所述优先级存储在存储器中。
5.根据权利要求4所述的方法,其中,接收用于在计算所述处理器元件的所述优先级时使用的所述参数包括:
以信号告知所述处理器元件返回用于在分配所述处理器元件的所述优先级时使用的所述参数;
从所述处理器元件接收所述参数;以及
将所述参数存储在存储器中。
6.根据权利要求4所述的方法,其中,接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收与所述处理器元件有关的温度。
7.根据权利要求4所述的方法,其中,接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收与所述处理器元件有关的频率。
8.根据权利要求4所述的方法,其中,接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收对所述处理器元件与另一个处理器元件共享的高速缓存的指示。
9.根据权利要求4所述的方法,其中,接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收对所述处理器元件与另一个处理器元件的邻近度的指示。
10.根据权利要求1所述的方法,还包括:
向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先级;以及
其中,以信号告知所述处理器元件访问所述资源包括:当前访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件。
11.根据权利要求1所述的方法,还包括:
检测请求访问所述资源的多个线程;以及
请求操作系统将所述多个线程迁移到所述多个处理器元件中的选择的一组。
12.根据权利要求1所述的方法,还包括:
估计所述处理器元件在等待所述资源时的休眠时间;
基于所估计的休眠时间,确定所述处理器元件的休眠状态;以及
向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现。
13.根据权利要求1所述的方法,还包括:
估计所述处理器元件在等待所述资源时的休眠时间;以及
向所述计算设备的操作系统通知所估计的所述处理器元件的休眠时间。
14.根据权利要求13所述的方法,还包括:
在与所估计的所述处理器元件的休眠时间相关联的一段时间,从调度队列中移除所述处理器元件。
15.根据权利要求13所述的方法,还包括:
在所估计的休眠时间期间,为所述处理器元件分配线程。
16.根据权利要求1所述的方法,还包括:
在信号告知事件管理器之间进行通信,以管理所述多个处理器元件的信号告知。
17.一种计算设备,包括:
多个处理器元件;以及
通信地连接到所述多个处理器元件的信号告知事件管理器,其配置有信号告知事件管理器可执行指令以执行包括以下各项的操作:
基于所述计算设备的操作状态,确定用于在向请求访问资源的所述多个处理器元件分配优先级时使用的一个或多个参数;
向处理器元件分配用于请求访问所述资源的优先级,其中,所述优先级是基于针对所述处理器元件的所述一个或多个参数来分配的,并且其中,向所述处理器元件分配用于访问所述资源的所述优先级包括:
跟踪所述处理器元件的苏醒统计;
确定所述处理器元件的所述苏醒统计是否超过苏醒门限;以及
响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分配用于访问所述资源的高优先级;
响应于确定所述资源是不可用的,以信号告知请求访问所述资源的所述处理器元件等待所述资源变得可用;以及
响应于确定所述资源是可用的,并且所述处理器元件被分配最高优先级来请求访问所述资源,以信号告知所述处理器元件访问所述资源。
18.根据权利要求17所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行还包括以下各项的操作:
接收用于指示所述资源的可用性的信号;以及
响应于用于指示所述资源的可用性的所述信号,识别所述多个处理器元件中被分配所述最高优先级来访问所述资源的一个处理器元件。
19.根据权利要求17所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行操作,使得:
响应于确定所述资源是不可用的,以信号告知请求访问所述资源的所述处理器元件等待所述资源变得可用包括:触发所述处理器元件进入休眠状态;以及
以信号告知所述处理器元件访问所述资源包括:以信号告知所述处理器元件苏醒。
20.根据权利要求17所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行操作,使得向所述处理器元件分配用于访问所述资源的所述优先级包括:
接收用于在分配所述处理器元件的所述优先级时使用的所述参数;
将所述处理器元件的所述参数与等待访问所述资源的所述多个处理器元件中的每一个处理器元件的所述参数进行比较;
基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级;以及
将所确定的所述处理器元件的所述优先级存储在存储器中。
21.根据权利要求20所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:
以信号告知所述处理器元件返回用于在分配所述处理器元件的所述优先级时使用的所述参数;
从所述处理器元件接收所述参数;以及
将所述参数存储在存储器中。
22.根据权利要求20所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收与所述处理器元件有关的温度。
23.根据权利要求20所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收与所述处理器元件有关的频率。
24.根据权利要求20所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收对所述处理器元件与另一个处理器元件共享的高速缓存的指示。
25.根据权利要求20所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收对所述处理器元件与另一个处理器元件的邻近度的指示。
26.根据权利要求17所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行还包括以下各项的操作:
向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先级;以及
其中,以信号告知所述处理器元件访问所述资源包括:当前访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件。
27.根据权利要求17所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行还包括以下各项的操作:
检测请求访问所述资源的多个线程;以及
请求操作系统将所述多个线程迁移到所述多个处理器元件中的选择的一组。
28.根据权利要求17所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;
基于所估计的休眠时间,确定所述处理器元件的休眠状态;以及
向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现。
29.根据权利要求17所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;以及
向所述计算设备的操作系统通知所估计的所述处理器元件的休眠时间。
30.根据权利要求29所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行还包括以下各项的操作:
在与所估计的所述处理器元件的休眠时间相关联的一段时间,从调度队列中移除所述处理器元件。
31.根据权利要求29所述的计算设备,其中,所述信号告知事件管理器还配置有信号告知事件管理器可执行指令以执行还包括以下各项的操作:
在所估计的休眠时间期间,为所述处理器元件分配线程。
32.根据权利要求17所述的计算设备,还包括:多个信号告知事件管理器,其中所述多个信号告知事件管理器被配置为彼此之间进行通信,以实现所述信号告知事件管理器可执行指令。
33.一种其上存储有处理器可执行软件指令,以使得具有多个处理元件的计算设备的处理器执行包括以下各项的操作的非临时性处理器可读介质:
基于所述计算设备的操作状态,确定用于在向请求访问资源的所述多个处理器元件分配优先级时使用的一个或多个参数;
向处理器元件分配用于请求访问所述资源的优先级,其中,所述优先级是基于针对所述处理器元件的所述一个或多个参数来分配的,并且其中,向所述处理器元件分配用于访问所述资源的所述优先级包括:
跟踪所述处理器元件的苏醒统计;
确定所述处理器元件的所述苏醒统计是否超过苏醒门限;以及
响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分配用于访问所述资源的高优先级;
响应于确定所述资源是不可用的,以信号告知请求访问所述资源的所述处理器元件等待所述资源变得可用;以及
响应于确定所述资源是可用的,并且所述处理器元件被分配最高优先级来请求访问所述资源,以信号告知所述处理器元件访问所述资源。
34.根据权利要求33所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
接收用于指示所述资源的可用性的信号;以及
响应于用于指示所述资源的可用性的所述信号,识别所述多个处理器元件中被分配所述最高优先级来访问所述资源的一个处理器元件。
35.根据权利要求33所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得:
响应于确定所述资源是不可用的,以信号告知请求访问所述资源的所述处理器元件等待所述资源变得可用包括:触发所述处理器元件进入休眠状态;以及
以信号告知所述处理器元件访问所述资源包括:以信号告知所述处理器元件苏醒。
36.根据权利要求33所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得向所述处理器元件分配用于访问所述资源的所述优先级包括:
接收用于在分配所述处理器元件的所述优先级时使用的所述参数;
将所述处理器元件的所述参数与等待访问所述资源的所述多个处理器元件中的每一个处理器元件的所述参数进行比较;
基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级;以及
将所确定的所述处理器元件的所述优先级存储在存储器中。
37.根据权利要求36所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数,包括:
以信号告知所述处理器元件返回用于在分配所述处理器元件的所述优先级时使用的所述参数;
从所述处理器元件接收所述参数;以及
将所述参数存储在存储器中。
38.根据权利要求36所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收与所述处理器元件有关的温度。
39.根据权利要求36所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收与所述处理器元件有关的频率。
40.根据权利要求36所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收对所述处理器元件与另一个处理器元件共享的高速缓存的指示。
41.根据权利要求36所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得接收用于在分配所述处理器元件的所述优先级时使用的所述参数包括:接收对所述处理器元件与另一个处理器元件的邻近度的指示。
42.根据权利要求34所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先级;以及
其中,以信号告知所述处理器元件访问所述资源包括:当前访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件。
43.根据权利要求33所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
检测请求访问所述资源的多个线程;以及
请求操作系统将所述多个线程迁移到所述多个处理器元件中的选择的一组。
44.根据权利要求33所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;
基于所估计的休眠时间,确定所述处理器元件的休眠状态;以及
向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现。
45.根据权利要求33所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
估计所述处理器元件在等待所述资源时的休眠时间;以及
向计算设备的操作系统通知所估计的所述处理器元件的休眠时间。
46.根据权利要求45所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
在与所估计的所述处理器元件的休眠时间相关联的一段时间,从调度队列中移除所述处理器元件。
47.根据权利要求45所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
在所估计的休眠时间期间,为所述处理器元件分配线程。
48.根据权利要求33所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下各项的操作:
在多个信号告知事件管理器之间进行通信,以管理所述多个处理器元件的信号告知。
49.一种具有多个处理器元件的计算设备,包括:
用于基于所述计算设备的操作状态,确定用于在向请求访问资源的所述多个处理器元件分配优先级时使用的一个或多个参数的单元;
用于向处理器元件分配用于请求访问所述资源的优先级的单元,其中,所述优先级是基于针对所述处理器元件的所述一个或多个参数来分配的,并且其中,用于向所述处理器元件分配用于访问所述资源的所述优先级的单元包括:
用于跟踪所述处理器元件的苏醒统计的单元;
用于确定所述处理器元件的所述苏醒统计是否超过苏醒门限的单元;以及
用于响应于确定所述处理器元件的所述苏醒统计超过所述苏醒门限,向所述处理器元件分配用于访问所述资源的高优先级的单元;
用于响应于确定所述资源是不可用的,以信号告知请求访问所述资源的所述处理器元件等待所述资源变得可用的单元;以及
用于响应于确定所述资源是可用的,并且所述处理器元件被分配最高优先级来请求访问所述资源,以信号告知所述处理器元件访问所述资源的单元。
50.根据权利要求49所述的计算设备,还包括:
用于接收用于指示所述资源的可用性的信号的单元;以及
用于响应于用于指示所述资源的可用性的所述信号,识别所述多个处理器元件中被分配所述最高优先级来访问所述资源的一个处理器元件的单元。
51.根据权利要求49所述的计算设备,其中:
用于响应于确定所述资源是不可用的,以信号告知请求访问所述资源的所述处理器元件等待所述资源变得可用的单元包括:用于触发所述处理器元件进入休眠状态的单元;以及
用于以信号告知所述处理器元件访问所述资源的单元包括:用于以信号告知所述处理器元件苏醒的单元。
52.根据权利要求49所述的计算设备,其中,用于向所述处理器元件分配用于访问所述资源的所述优先级的单元包括:
用于接收用于在分配所述处理器元件的所述优先级时使用的所述参数的单元;
用于将所述处理器元件的所述参数与等待访问所述资源的所述多个处理器元件中的每一个处理器元件的所述参数进行比较的单元;
用于基于所述比较,确定所述处理器元件用于访问所述资源的所述优先级的单元;以及
用于将所确定的所述处理器元件的所述优先级存储在存储器中的单元。
53.根据权利要求52所述的计算设备,其中,用于接收用于在分配所述处理器元件的所述优先级时使用的所述参数的单元包括:
用于以信号告知所述处理器元件返回用于在分配所述处理器元件的所述优先级时使用的所述参数的单元;
用于从所述处理器元件接收所述参数的单元;以及
将所述参数存储在存储器中。
54.根据权利要求52所述的计算设备,其中,用于接收用于在分配所述处理器元件的所述优先级时使用的所述参数的单元包括:用于接收与所述处理器元件有关的温度的单元。
55.根据权利要求52所述的计算设备,其中,用于接收用于在分配所述处理器元件的所述优先级时使用的所述参数的单元包括:用于接收与所述处理器元件有关的频率的单元。
56.根据权利要求52所述的计算设备,其中,用于接收用于在分配所述处理器元件的所述优先级时使用的所述参数的单元包括:用于接收所述处理器元件与另一个处理器元件共享的高速缓存的指示的单元。
57.根据权利要求52所述的计算设备,其中,用于接收用于在分配所述处理器元件的所述优先级时使用的所述参数的单元包括:用于接收对所述处理器元件与另一个处理器元件的邻近度的指示的单元。
58.根据权利要求49所述的计算设备,还包括:
用于向当前访问所述资源的另一个处理器元件发送被分配给所述处理器元件的所述优先级的单元;以及
其中,用于以信号告知所述处理器元件访问所述资源的单元包括:用于当前访问所述资源的所述另一个处理器元件在释放所述资源时,以信号告知所述处理器元件的单元。
59.根据权利要求49所述的计算设备,还包括:
用于检测请求访问所述资源的多个线程的单元;以及
用于请求操作系统将所述多个线程迁移到所述多个处理器元件中的选择的一组的单元。
60.根据权利要求49所述的计算设备,还包括:
用于估计所述处理器元件在等待所述资源时的休眠时间的单元;
用于基于所估计的休眠时间,确定所述处理器元件的休眠状态的单元;以及
用于向所述处理器元件通知所述休眠状态,以便在等待所述资源时进行实现的单元。
61.根据权利要求49所述的计算设备,还包括:
用于估计所述处理器元件在等待所述资源时的休眠时间的单元;
用于向所述计算设备的操作系统通知所估计的所述处理器元件的休眠时间的单元。
62.根据权利要求61所述的计算设备,还包括:
用于在与所估计的所述处理器元件的休眠时间相关联的一段时间,从调度队列中移除所述处理器元件的单元。
63.根据权利要求61所述的计算设备,还包括:
用于在所估计的休眠时间期间,为所述处理器元件分配线程的单元。
64.根据权利要求49所述的计算设备,还包括:
用于在多个信号告知事件管理器之间进行通信,以管理所述多个处理器元件的信号告知的单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/451,628 US9632569B2 (en) | 2014-08-05 | 2014-08-05 | Directed event signaling for multiprocessor systems |
US14/451,628 | 2014-08-05 | ||
PCT/US2015/042026 WO2016022308A2 (en) | 2014-08-05 | 2015-07-24 | Directed event signaling for multiprocessor systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106663029A CN106663029A (zh) | 2017-05-10 |
CN106663029B true CN106663029B (zh) | 2020-11-10 |
Family
ID=53765625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580041819.5A Active CN106663029B (zh) | 2014-08-05 | 2015-07-24 | 用于多处理器系统的定向事件信号告知 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9632569B2 (zh) |
EP (1) | EP3177999A2 (zh) |
JP (1) | JP6423518B2 (zh) |
CN (1) | CN106663029B (zh) |
WO (1) | WO2016022308A2 (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830289B2 (en) | 2014-09-16 | 2017-11-28 | Apple Inc. | Methods and apparatus for aggregating packet transfer over a virtual bus interface |
US9971397B2 (en) | 2014-10-08 | 2018-05-15 | Apple Inc. | Methods and apparatus for managing power with an inter-processor communication link between independently operable processors |
US10042794B2 (en) | 2015-06-12 | 2018-08-07 | Apple Inc. | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link |
US9811396B2 (en) * | 2015-10-07 | 2017-11-07 | International Business Machines Corporation | Direct application-level control of multiple asynchronous events |
US10085214B2 (en) | 2016-01-27 | 2018-09-25 | Apple Inc. | Apparatus and methods for wake-limiting with an inter-device communication link |
US9760376B1 (en) * | 2016-02-01 | 2017-09-12 | Sas Institute Inc. | Compilation for node device GPU-based parallel processing |
US10191852B2 (en) | 2016-02-29 | 2019-01-29 | Apple Inc. | Methods and apparatus for locking at least a portion of a shared memory resource |
CN105657778A (zh) * | 2016-03-14 | 2016-06-08 | 南京理工大学 | 一种基于功率异构无线传感器网络的分簇路由方法 |
US10191859B2 (en) | 2016-03-31 | 2019-01-29 | Apple Inc. | Memory access protection apparatus and methods for memory mapped access between independently operable processors |
US20180039518A1 (en) * | 2016-08-02 | 2018-02-08 | Knuedge Incorporated | Arbitrating access to a resource that is shared by multiple processors |
US9842010B1 (en) * | 2016-10-24 | 2017-12-12 | International Business Machines Corporation | Adjustment of a sleep duration for a process based on an expected time for securing a spinlock |
US10775871B2 (en) | 2016-11-10 | 2020-09-15 | Apple Inc. | Methods and apparatus for providing individualized power control for peripheral sub-systems |
US10591976B2 (en) | 2016-11-10 | 2020-03-17 | Apple Inc. | Methods and apparatus for providing peripheral sub-system stability |
US10574585B2 (en) | 2017-01-07 | 2020-02-25 | International Business Machines Corporation | Resource usage management in a stream computing environment |
US10627888B2 (en) * | 2017-01-30 | 2020-04-21 | International Business Machines Corporation | Processor power-saving during wait events |
US10733010B2 (en) | 2017-05-11 | 2020-08-04 | Vmware, Inc. | Methods and systems that verify endpoints and external tasks in release-pipeline prior to execution |
US10346226B2 (en) | 2017-08-07 | 2019-07-09 | Time Warner Cable Enterprises Llc | Methods and apparatus for transmitting time sensitive data over a tunneled bus interface |
CN109388645B (zh) * | 2017-08-11 | 2023-02-24 | 腾讯科技(深圳)有限公司 | 指令执行方法、指令执行装置及存储介质 |
CN107885605A (zh) * | 2017-11-09 | 2018-04-06 | 郑州云海信息技术有限公司 | 一种控制api单位时间内调用频次的系统及方法 |
US10331612B1 (en) | 2018-01-09 | 2019-06-25 | Apple Inc. | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors |
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
US11381514B2 (en) | 2018-05-07 | 2022-07-05 | Apple Inc. | Methods and apparatus for early delivery of data link layer packets |
US10430352B1 (en) | 2018-05-18 | 2019-10-01 | Apple Inc. | Methods and apparatus for reduced overhead data transfer with a shared ring buffer |
US10929199B2 (en) * | 2018-07-02 | 2021-02-23 | International Business Machines Corporation | Memory lock serialization |
US10585699B2 (en) | 2018-07-30 | 2020-03-10 | Apple Inc. | Methods and apparatus for verifying completion of groups of data transactions between processors |
US10846224B2 (en) | 2018-08-24 | 2020-11-24 | Apple Inc. | Methods and apparatus for control of a jointly shared memory-mapped region |
US10719376B2 (en) | 2018-08-24 | 2020-07-21 | Apple Inc. | Methods and apparatus for multiplexing data flows via a single data structure |
US10838450B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Methods and apparatus for synchronization of time between independently operable processors |
US10789110B2 (en) | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
CN111132282B (zh) * | 2018-11-01 | 2021-06-01 | 华为终端有限公司 | 一种应用于移动终端的应用处理器唤醒方法及装置 |
CN109597585B (zh) * | 2018-12-07 | 2020-06-30 | 珠海格力电器股份有限公司 | 数据存储方法及系统 |
WO2020220225A1 (zh) * | 2019-04-29 | 2020-11-05 | 华为技术有限公司 | 资源获取方法、相关装置及计算机存储介质 |
US11150945B2 (en) | 2019-09-04 | 2021-10-19 | Red Hat, Inc. | Reverse restartable sequences for lock polling scalability |
US11829303B2 (en) | 2019-09-26 | 2023-11-28 | Apple Inc. | Methods and apparatus for device driver operation in non-kernel space |
US11558348B2 (en) | 2019-09-26 | 2023-01-17 | Apple Inc. | Methods and apparatus for emerging use case support in user space networking |
US11606302B2 (en) | 2020-06-12 | 2023-03-14 | Apple Inc. | Methods and apparatus for flow-based batching and processing |
US11775359B2 (en) | 2020-09-11 | 2023-10-03 | Apple Inc. | Methods and apparatuses for cross-layer processing |
US11954540B2 (en) | 2020-09-14 | 2024-04-09 | Apple Inc. | Methods and apparatus for thread-level execution in non-kernel space |
US11799986B2 (en) | 2020-09-22 | 2023-10-24 | Apple Inc. | Methods and apparatus for thread level execution in non-kernel space |
US11882051B2 (en) | 2021-07-26 | 2024-01-23 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US11876719B2 (en) | 2021-07-26 | 2024-01-16 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US20230305957A1 (en) * | 2022-03-23 | 2023-09-28 | Nvidia Corporation | Cache memory with per-sector cache residency controls |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
CN101051281A (zh) * | 2007-05-16 | 2007-10-10 | 杭州华三通信技术有限公司 | 多cpu对临界资源进行互斥访问的方法和装置 |
CN101443734A (zh) * | 2006-05-17 | 2009-05-27 | Nxp股份有限公司 | 多处理系统以及执行多个数据处理任务的方法 |
CN101546275A (zh) * | 2008-03-26 | 2009-09-30 | 中国科学院微电子研究所 | 具有硬件信号量模块的多处理器系统及其实现方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058414A (en) | 1998-01-07 | 2000-05-02 | International Business Machines Corporation | System and method for dynamic resource access in an asymmetric resource multiple processor computer system |
US6799208B1 (en) * | 2000-05-02 | 2004-09-28 | Microsoft Corporation | Resource manager architecture |
US20020073129A1 (en) * | 2000-12-04 | 2002-06-13 | Yu-Chung Wang | Integrated multi-component scheduler for operating systems |
US6990560B2 (en) * | 2003-01-16 | 2006-01-24 | International Business Machines Corporation | Task synchronization mechanism and method |
US20060112208A1 (en) * | 2004-11-22 | 2006-05-25 | International Business Machines Corporation | Interrupt thresholding for SMT and multi processor systems |
US20090150696A1 (en) | 2007-12-10 | 2009-06-11 | Justin Song | Transitioning a processor package to a low power state |
JP2010140290A (ja) * | 2008-12-12 | 2010-06-24 | Panasonic Corp | マルチプロセッサシステム及びその排他制御の調停方法 |
US8156275B2 (en) | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
CN102103523A (zh) | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
US8607239B2 (en) * | 2009-12-31 | 2013-12-10 | International Business Machines Corporation | Lock mechanism to reduce waiting of threads to access a shared resource by selectively granting access to a thread before an enqueued highest priority thread |
JP2011175378A (ja) * | 2010-02-23 | 2011-09-08 | Renesas Electronics Corp | マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法 |
US8713262B2 (en) | 2011-09-02 | 2014-04-29 | Nvidia Corporation | Managing a spinlock indicative of exclusive access to a system resource |
JP5863021B2 (ja) * | 2011-10-31 | 2016-02-16 | Necプラットフォームズ株式会社 | マルチプロセッサシステム、及びマルチプロセッサシステムの制御方法 |
US9063796B2 (en) | 2012-08-02 | 2015-06-23 | GM Global Technology Operations LLC | Method and apparatus for improving processing performance of a multi-core processor |
-
2014
- 2014-08-05 US US14/451,628 patent/US9632569B2/en active Active
-
2015
- 2015-07-24 CN CN201580041819.5A patent/CN106663029B/zh active Active
- 2015-07-24 WO PCT/US2015/042026 patent/WO2016022308A2/en active Application Filing
- 2015-07-24 EP EP15745112.1A patent/EP3177999A2/en active Pending
- 2015-07-24 JP JP2017505630A patent/JP6423518B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
CN101443734A (zh) * | 2006-05-17 | 2009-05-27 | Nxp股份有限公司 | 多处理系统以及执行多个数据处理任务的方法 |
CN101051281A (zh) * | 2007-05-16 | 2007-10-10 | 杭州华三通信技术有限公司 | 多cpu对临界资源进行互斥访问的方法和装置 |
CN101546275A (zh) * | 2008-03-26 | 2009-09-30 | 中国科学院微电子研究所 | 具有硬件信号量模块的多处理器系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US9632569B2 (en) | 2017-04-25 |
WO2016022308A2 (en) | 2016-02-11 |
WO2016022308A3 (en) | 2016-04-14 |
US20160041852A1 (en) | 2016-02-11 |
CN106663029A (zh) | 2017-05-10 |
JP2017527025A (ja) | 2017-09-14 |
EP3177999A2 (en) | 2017-06-14 |
JP6423518B2 (ja) | 2018-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106663029B (zh) | 用于多处理器系统的定向事件信号告知 | |
JP6947723B2 (ja) | 競合の存在下での効率的なタスクスケジューリングのための方法 | |
JP2018533122A (ja) | マルチバージョンタスクの効率的なスケジューリング | |
JP2018534676A5 (zh) | ||
US10628321B2 (en) | Progressive flush of cache memory | |
EP3472684B1 (en) | Wake lock aware system wide job scheduling for energy efficiency on mobile devices | |
US9665489B2 (en) | Methods of selecting available cache in multiple cluster system | |
US10768684B2 (en) | Reducing power by vacating subsets of CPUs and memory | |
US9582329B2 (en) | Process scheduling to improve victim cache mode | |
WO2017222746A1 (en) | Iteration synchronization construct for parallel pipelines | |
US10261831B2 (en) | Speculative loop iteration partitioning for heterogeneous execution | |
BR112018007623B1 (pt) | Método e dispositivo de computação configurado para programação de tarefa na presença de bordas de conflito de tarefa e memória legível por computador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |