新四季網

用於多處理器系統的定向事件信號告知的製作方法

2023-09-21 21:40:00 1


多核處理器依賴於原子性以保證並行應用的正確性。為了防止其它進程中斷原子操作的執行,一種實現的解決方案是進程獲取在互斥中執行臨界區時所需要資源的鎖,使得直到從這些鎖中釋放這些資源為止,防止其它進程使用相同的資源。一種這種鎖的例子是自旋鎖。自旋鎖是活動地進行等待,直到獲得該鎖為止的原子操作,該操作重複地檢查該鎖是否可用。因為自旋鎖進程保持活動但卻不執行有用的任務,因此由於處理器不斷地從存儲器中加載該鎖,所以這種活動等待操作消耗能量。其它鎖或其它資源獲取方案也類似地與實現設備的效率和性能的某種成本相關聯。為了節省能量,一些處理器架構具有用於等待事件和信號告知事件的指令(例如,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和信號告知事件管理器1 210)進行通信。在一個實施例中,處理器內核(如,處理器內核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)的信息進行比較,對該表進行更新。在該例子中,處理器元件2 528具有的優先級標準的參數值使得比處理器元件1的優先級更高。如果處理器元件0524仍然具有資源鎖518,則信號告知事件管理器可以向處理器元件2 528返回等待事件信號508。該等待事件信號508可以觸發處理器元件2 528進入休眠狀態,直到其接收到針對資源鎖該資源可用的信號(例如,設置事件信號)為止。

處理器元件0 524可以向信號告知事件管理器206發送解鎖資源訪問請求510,其指示處理器元件0 524放棄資源鎖518,使得對於要獲得該資源上的資源鎖的處理器元件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可以通過向另一個源(例如,運行在該計算設備上的內核或作業系統)請求信息、從存儲器中獲取信息、或者從處理器元件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)、軟盤和藍光光碟,其中磁碟通常磁性地複製數據,而光碟則用雷射來光學地複製數據。上述的組合也應當包括在非臨時性計算機可讀介質和處理器可讀介質的保護範圍之內。另外,一種方法或算法的操作可以作為一個代碼和/或指令集或者其任意組合,位於非臨時性處理器可讀介質和/或計算機可讀介質上,其中該非臨時性處理器可讀介質和/或計算機可讀介質可以併入到電腦程式產品中。

為使本領域任何普通技術人員能夠實現或者使用本發明,上面圍繞所公開的實施例進行了描述。對於本領域普通技術人員來說,對這些實施例的各種修改是顯而易見的,並且,本申請定義的總體原理也可以在不脫離本發明的精神或保護範圍的基礎上應用於其它實施例。因此,本發明並不限於本文所示出的實施例,而是被給予與所附權利要求書和本文公開的原理和新穎性特徵相一致的最廣範圍。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀