背景
通常,當(dāng)可能時(shí),處理器使用電能節(jié)省睡眠模式,諸如根據(jù)高級(jí)配置和電源接口(ACPI)標(biāo)準(zhǔn)(例如,2006年10月10日發(fā)布的Rev.3.0b)。當(dāng)核空閑或不完全被使用時(shí),除電壓和頻率調(diào)整(DVFS或ACPI性能狀態(tài)(P狀態(tài)))之外,這些所謂的C狀態(tài)核低功率狀態(tài)(ACPI C狀態(tài))可以節(jié)省電能。然而,甚至在多核處理器上下文中,核常常從生效的睡眠狀態(tài)醒來,以執(zhí)行相對簡單的操作,然后,返回到睡眠狀態(tài)。此操作會(huì)對功率效率產(chǎn)生不利的影響,因?yàn)橥顺龊头祷氐凸β薁顟B(tài)存在延遲和功率消耗的成本。在狀態(tài)轉(zhuǎn)換過程中,在一些類型的處理器中可能消耗電能但并不完成有用的工作,這對功率效率不利。
在退出低功率狀態(tài)時(shí)要處理的操作的示例包括:鍵盤輸入、計(jì)時(shí)器中斷、網(wǎng)絡(luò)中斷、等等。為以功率敏感的方式來處理這些操作,當(dāng)前操作系統(tǒng)(OS)通過一次處理較大的數(shù)據(jù)量或移動(dòng)到無空循環(huán)OS(其中沒有周期性的計(jì)時(shí)器中斷,只有零星的編程中斷),來改變程序行為。另一策略是使用計(jì)時(shí)器聚合,其中,將多個(gè)中斷組合起來并同時(shí)處理。但是,除了改變程序的行為之外,這些選項(xiàng)中全部都產(chǎn)生復(fù)雜性,并仍會(huì)導(dǎo)致功率效率低的操作。進(jìn)一步地,某些類型的軟件(例如,媒體播放)會(huì)通過請求頻繁的周期性喚醒(不管多少工作需要完成),而嘗試擊敗硬件功率效率機(jī)制。如此,無空循環(huán)/計(jì)時(shí)器聚合策略可以通過減少不需要的從深C狀態(tài)中醒來的次數(shù),來節(jié)省一定功率,但是,它們需要對OS進(jìn)行侵害性的改變,并可能花費(fèi)大量的時(shí)間穿過計(jì)算生態(tài)系統(tǒng),因?yàn)檫@樣的改變直到操作系統(tǒng)的新版本被分發(fā)之前不會(huì)被實(shí)現(xiàn)。
附圖簡述
圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。
圖2是根據(jù)本發(fā)明的另一實(shí)施例的處理器的框圖。
圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的在核之間的恢復(fù)流選項(xiàng)的流程圖。
圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法的流程圖。
圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于傳輸執(zhí)行狀態(tài)的方法的流程圖。
圖6是根據(jù)本發(fā)明的再一個(gè)實(shí)施例的處理器的框圖。
圖7是示出了根據(jù)本發(fā)明的更進(jìn)一步的實(shí)施例的處理器的框圖。
圖8是根據(jù)本發(fā)明的再一個(gè)實(shí)施例的處理器的框圖。
圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的時(shí)序圖。
圖10是根據(jù)本發(fā)明的一個(gè)實(shí)施例的節(jié)電量的圖解說明。
圖11是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。
具體實(shí)施方式
在各種實(shí)施例中,在異構(gòu)型處理器環(huán)境中,平均功率消耗會(huì)縮小。此異構(gòu)型環(huán)境由于系統(tǒng)和功率效率原因,可以包括大型的快速核和較小的更有功率效率的核。進(jìn)一步地,各實(shí)施例可以對在處理器上執(zhí)行的操作系統(tǒng)(OS)透明的方式來提供此功率控制。然而,本發(fā)明的范圍不僅限于異構(gòu)型環(huán)境,也可以用于同質(zhì)的環(huán)境(以對OS透明的,但不一定硬件異構(gòu)的角度而言),以降低平均功率(例如,在多處理器環(huán)境中,使盡可能多的核睡眠)。各實(shí)施例可以在硬件加速的環(huán)境(諸如其中核常常睡眠的基于平板計(jì)算機(jī)和芯片上系統(tǒng)(SoC)體系結(jié)構(gòu))中特別合適。
一般而言,各實(shí)施例通過將所有喚醒信號(hào)定向到較小的核而并非較大的核,來進(jìn)行功率控制。如此,當(dāng)系統(tǒng)95%空閑時(shí),平均功率可以降低超過兩倍。如下文所描述的,在許多實(shí)施例中,可以將此較小的核與OS分離。即,此較小的核的存在對OS來說是未知的,如此,此核對OS不可見。如此,各實(shí)施例可以對OS以及在處理器上執(zhí)行的應(yīng)用程序所透明的方式,通過處理器硬件提供有功率效率的處理器操作。
現(xiàn)在參考圖1,所示是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。如圖1所示,處理器100可以是具有若干個(gè)大核、小核和加速器的異構(gòu)型處理器。雖然此處是在多核處理器的上下文中描述的,但是,可以理解,實(shí)施例不受限制,在各實(shí)現(xiàn)中,可以在SoC或其他基于半導(dǎo)體的處理設(shè)備內(nèi)。請注意,加速器可以基于輸入工作的隊(duì)列來執(zhí)行工作,無論處理器核是否已經(jīng)通電。在圖1的實(shí)施例中,處理器100包括多個(gè)大核。在所示出的特定實(shí)施例中,示出了兩個(gè)這樣的核110a和110b(一般性地,大核110),雖然可以理解,可以提供兩個(gè)以上的這樣的大核。在各實(shí)現(xiàn)中,這些大核可以是具有相對復(fù)雜的流水線體系結(jié)構(gòu)并根據(jù)復(fù)雜指令集計(jì)算(CISC)體系結(jié)構(gòu)來操作的無序(out-of-order)處理器。
另外,處理器100還包括多個(gè)小核120a-120n(一般性地,小核120)。雖然在圖1的實(shí)施例中示出了8個(gè)這樣的核,但是,可以理解,本發(fā)明的范圍在此方面不受限制。在各種實(shí)施例中,小核120可以是有功率效率的有序(in-order)處理器,例如,以根據(jù)CISC或精簡指令集計(jì)算(RISC)體系結(jié)構(gòu)來執(zhí)行指令。在某些實(shí)現(xiàn)中,這些核中的兩個(gè)或更多的核可以串聯(lián)耦合在一起,以執(zhí)行相關(guān)處理,例如,如果多個(gè)大核處于節(jié)能狀態(tài),那么,一個(gè)或多個(gè)較小的核可以處于活動(dòng)以執(zhí)行工作,否則這些工作將喚醒大核。在許多實(shí)施例中,小核120可以對OS是透明的,雖然在其他實(shí)施例中,小核和大核可以暴露于OS,有配置選項(xiàng)可用。一般而言,可以在不同的實(shí)施例中使用大核的和小核之間的任何核的混合。例如,可以對每個(gè)大核提供單個(gè)小核,或者在其他實(shí)施例中,單個(gè)小核可以與多個(gè)大核相關(guān)聯(lián)。
如此處所使用的,術(shù)語“大核”可以是具有相對復(fù)雜的設(shè)計(jì)并與“小核”相比可能消耗相對大的芯片面積的處理器核,而小核可以具有復(fù)雜性較小的設(shè)計(jì)并消耗相應(yīng)地小一些的的芯片面積。另外,小一些的核相比于較大的核而言功率效率更高,因?yàn)樗鼈兛赡鼙容^大的核具有更小的熱設(shè)計(jì)功耗(TDP)。然而,可以理解,與大核相比,較小的核在其處理能力方面是受限制的。例如,這些較小的核可能不能處理在大核中可行的所有操作。另外,較小的核在指令處理時(shí)可能是效率相對較低的。即,在大核中比在小核中更快速地執(zhí)行指令。
進(jìn)一步可以看出,大核110和小核120都可以耦合到互連130。在不同的實(shí)施例中,可以實(shí)現(xiàn)此互連結(jié)構(gòu)的不同的實(shí)現(xiàn)。例如,在某些實(shí)施例中,互連結(jié)構(gòu)可以根據(jù)前端總線(FSB)體系結(jié)構(gòu)或快速路徑互連(QPI)協(xié)議。在其他實(shí)施例中,互連結(jié)構(gòu)可以根據(jù)一給定的系統(tǒng)互連結(jié)構(gòu)。
仍參考圖1,多個(gè)加速器140a-140c還可以耦合到互連130。雖然本發(fā)明的范圍在這方面不受限制,但是,加速器還可以包括媒體處理器,諸如音頻和/或視頻處理器、密碼處理器,固定功能單元、等等。這些加速器可以由設(shè)計(jì)核的相同設(shè)計(jì)人員來設(shè)計(jì),或者可以是包括到處理器中的獨(dú)立第三方智能屬性(IP)塊。一般而言,專用處理任務(wù)可以在這些加速器中比它們在大核或小核中更有效率地執(zhí)行,無論是就性能而言還是就功率消耗而言。雖然在圖1的實(shí)施例中利用此特定實(shí)現(xiàn)示出的,但是可以理解,本發(fā)明的范圍在這方面不受限制。例如,代替只有兩種類型的核(即,大核和小核),其他實(shí)施例可以具有多個(gè)核的層次結(jié)構(gòu),包括至少大核、中等核和小核,中等核具有比小核更大的芯片面積,但是比大核更小的芯片面積,并具有在大核和小核的功率消耗之間的對應(yīng)的功率消耗。在其他實(shí)施例中,小核可以嵌入在較大的核內(nèi),例如,作為較大的核的邏輯和結(jié)構(gòu)的子集。
此外,盡管在圖1的實(shí)施例中被示為包括多個(gè)大核和多個(gè)小核,但是,對于諸如移動(dòng)處理器或SoC之類的某些實(shí)現(xiàn),可以只提供單個(gè)大核和單個(gè)小核。具體而言,現(xiàn)在參考圖2,所示是根據(jù)本發(fā)明的另一實(shí)施例的處理器的框圖,其中,處理器100"包括單個(gè)大核110和單個(gè)小核120,以及互連130和加速器140a-c。如上文所提及的,此實(shí)現(xiàn)可以適于移動(dòng)應(yīng)用。
作為典型的大核的示例功率圖形,功率消耗可以是大約大致6000毫瓦(mW),而對于中等核,功率消耗可以是大約大致500mW,而對于非常小核,功率消耗可以是大約大致15mW。在避免喚醒大核的一種實(shí)現(xiàn)中,可以實(shí)現(xiàn)顯著的功率效益。
各實(shí)施例使較大的,功率效率稍低的核保持在低功率睡眠狀態(tài)的時(shí)間比它們在其他情況下所能保持的更長。通過將中斷及其他核喚醒事件定向到較小的核而不是較大的核,較小的核可以運(yùn)行更長的時(shí)間,并喚醒得更頻繁,但是,這比喚醒大核來執(zhí)行諸如數(shù)據(jù)移動(dòng)之類的無足輕重的任務(wù)而言更有功率效率。請注意,如下面對于某些操作所描述的,例如當(dāng)較小的核可能無法支持矢量運(yùn)算(例如,AVX運(yùn)算)、復(fù)雜尋址模式或浮點(diǎn)(FP)運(yùn)算時(shí),大核被通電以執(zhí)行。在這樣的情況下,可以將喚醒信號(hào)從小核重新路由到大核。
例如,當(dāng)在處理器上執(zhí)行硬件加速的1080p視頻播放時(shí),每秒發(fā)生進(jìn)出核C6狀態(tài)的超過1000次的過渡以及幾乎1200次的中斷。如果使用本發(fā)明的實(shí)施例,甚至這些喚醒事件的一部分被重新定向到較小的核,則可以實(shí)現(xiàn)顯著的的節(jié)電量。
圖3概述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的核之間的恢復(fù)流選項(xiàng)。如圖3所示,存在軟件域210和硬件域220。一般而言,軟件域210對應(yīng)于相對于電源管理的OS操作,例如,根據(jù)ACPI實(shí)現(xiàn)。一般而言,OS,根據(jù)其調(diào)度機(jī)制,基于它的對即將來臨的任務(wù)的了解,可以選擇多個(gè)C狀態(tài)中的一個(gè),以請求處理器進(jìn)入到低功率模式。例如,OS可以發(fā)出MWAIT調(diào)用,該調(diào)用包括正在被請求的特定低功率狀態(tài)。
一般而言,CO對應(yīng)于執(zhí)行指令的正常操作狀態(tài),而狀態(tài)C1-C3是OS較低功率狀態(tài),每一狀態(tài)都具有不同級(jí)別的節(jié)電量,以及返回到CO狀態(tài)的對應(yīng)不同級(jí)別的延遲??梢钥闯?,取決于處理器的預(yù)期的工作負(fù)荷,OS可以選擇非空閑狀態(tài),例如,OS CO或多個(gè)空閑狀態(tài)中的一個(gè),例如,OS C狀態(tài)C1-C3。這些空閑狀態(tài)中的每一個(gè)都可以被映射到在處理器硬件的控制之下的對應(yīng)的硬件低功率狀態(tài)。如此,處理器硬件可以將給定OS C狀態(tài)映射到對應(yīng)的硬件C狀態(tài),該C狀態(tài)可以比由OS所指定的節(jié)電量提供更大的節(jié)電量。一般而言,較淺的C狀態(tài)(例如,Cl)比起較深的C狀態(tài)(例如,C3)節(jié)省更少功率,但是具有較低的恢復(fù)時(shí)間。在各種實(shí)施例中,硬件域220和OS C狀態(tài)到處理器C狀態(tài)的映射可以由處理器的功率控制單元(PCU)來執(zhí)行,雖然本發(fā)明的范圍在這方面不受限制。此映射可以基于以前的基于OS的電源管理請求的歷史。此外,判斷可以基于整個(gè)系統(tǒng)的狀態(tài)、配置信息等等。
另外,PCU或其他處理器邏輯還可以被配置成將所有喚醒事件定向到最小的可用核(在各種實(shí)施例中,可以是OS不可見的核)。如圖3所示,在從給定基于硬件的空閑狀態(tài)退出時(shí),控制直接恢復(fù)到最小的可用核,由此狀態(tài)被傳輸?shù)酱俗钚〉暮?。相比之下,在常?guī)硬件/軟件恢復(fù)中,控制只返回到大核。一般而言,OS基于預(yù)期的空閑時(shí)間和恢復(fù)延遲要求,來選擇C狀態(tài),體系結(jié)構(gòu)將該C狀態(tài)映射到硬件C狀態(tài)。如此,如圖3的實(shí)施例所示,所有恢復(fù)信號(hào)(諸如中斷)被路由到最小的可用核,該核判斷它是否可以處理恢復(fù)操作,或相反,將喚醒信號(hào)發(fā)送到較大的核以繼續(xù)。請注意,各實(shí)施例不干擾現(xiàn)有的P狀態(tài)或C狀態(tài)自動(dòng)降級(jí),其中,在現(xiàn)有的P狀態(tài)或C狀態(tài)自動(dòng)降級(jí)中,硬件基于測量到的試驗(yàn)性的效率而自動(dòng)地選擇帶有較低的恢復(fù)延遲的硬件C狀態(tài)。請注意,PCU或另一可編程的實(shí)體可以檢查傳入的喚醒事件來判斷將它們路由到哪一個(gè)核(大核還是小核)。
如上文所描述的,在某些實(shí)現(xiàn)中,小核本身可以不讓OS和應(yīng)用程序軟件看見。例如,小-大核配對可以是被分離的,并不讓應(yīng)用程序軟件看見。在低功率狀態(tài),所有核都可以是睡眠的,而加速器(諸如視頻解碼加速器)執(zhí)行諸如解碼任務(wù)之類的給定任務(wù)。當(dāng)加速器用完數(shù)據(jù)時(shí),它定向喚醒信號(hào),以請求可以來自于小核的另外的數(shù)據(jù),該小核喚醒并判定可以實(shí)現(xiàn)此簡單數(shù)據(jù)移動(dòng)操作而不會(huì)喚醒大核,如此,節(jié)省了電能。如果計(jì)時(shí)器中斷到達(dá)并且小核喚醒并檢測到在指令流中存在復(fù)雜矢量操作(諸如256比特AVX指令),則可能喚醒大核以處理復(fù)雜指令(及此流中的其他指令),以縮短延遲。在替換實(shí)現(xiàn)中,全局硬件觀察機(jī)制可以位于PCU中,或位于PCU附近的另一非核位置,或作為全局互連上的硬件邏輯的單獨(dú)部分,或作為對小核的內(nèi)部控制邏輯的補(bǔ)充,全局硬件觀察機(jī)制可以檢測到小核遇到AVX指令,并可以生成未定義指令故障,該故障可能會(huì)導(dǎo)致小核關(guān)閉,并在喚醒較大的核之后將指令流重新定向到該較大的核。請注意,此行為可以不限于指令,并擴(kuò)展到配置或特征。例如,如果小核遇到向只存在大核上的配置空間的寫入,它可以請求大核的喚醒。
現(xiàn)在參考圖4,所示是根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。請注意,取決于給定實(shí)現(xiàn),圖4的方法可以通過各種代理來執(zhí)行。例如,在某些實(shí)施例中,方法300可以部分地通過處理器內(nèi)的諸如功率控制單元之類的系統(tǒng)代理電路(可以處于系統(tǒng)代理中或處理器的非核部分)來實(shí)現(xiàn)。在其他實(shí)施例中,方法300可以部分地通過互連結(jié)構(gòu)內(nèi)的諸如功率控制邏輯之類的互連邏輯來實(shí)現(xiàn),互連邏輯可以例如從耦合到互連結(jié)構(gòu)的加速器接收中斷,并將中斷轉(zhuǎn)發(fā)到選擇的位置。
如圖4所示,方法300可以通過將大核和小核置于睡眠狀態(tài)來開始(框310)。即,假定在核中沒有活動(dòng)的操作正在被執(zhí)行。如此,可以它們將置于所選的低功率狀態(tài),以降低功率消耗。雖然核可能不是活動(dòng)的,但是,處理器或諸如一個(gè)或多個(gè)加速器之類的SoC內(nèi)的其他代理可以執(zhí)行任務(wù)。在框320,可以從這樣的加速器接收到中斷。當(dāng)加速器完成了任務(wù)、遇到錯(cuò)誤、或當(dāng)加速器需要另外的數(shù)據(jù)、或其他處理將由另一組件(諸如,給定核)執(zhí)行時(shí),可以發(fā)送此中斷??刂七M(jìn)入框330,在那里,邏輯可以將恢復(fù)信號(hào)直接發(fā)送到小核。即,邏輯可以被編程為當(dāng)大核和小核兩者都處于低功率狀態(tài)時(shí),始終將恢復(fù)信號(hào)發(fā)送到小核(或發(fā)送到多個(gè)這樣的小核中的所選的一個(gè)小核,取決于系統(tǒng)實(shí)現(xiàn))。通過將中斷直接并始終發(fā)送到小核,對于那些小核可以處理所請求操作的中斷的許多情況,可以避免大核中的更大的功率消耗。請注意,可以向框330添加某些類型的過濾或高速緩存機(jī)制,以便根據(jù)需要而始終將某些中斷源路由到一個(gè)核或另一核,以平衡性能和功率。
仍參考圖4,控制接下來轉(zhuǎn)到菱形340,在那里,可以判斷小核是否可以處理與中斷相關(guān)聯(lián)的請求。雖然本發(fā)明的范圍在這方面不受限制,但是,在某些實(shí)施例中,可以在小核被喚醒之后在小核其本身中進(jìn)行此判斷?;蛘?,執(zhí)行圖4的方法的邏輯可以執(zhí)行判斷(在這樣的情況下,在向小核發(fā)送恢復(fù)信號(hào)之前,可以執(zhí)行此分析)。
作為示例,小核可以基于小核的性能要求和/或和/或指令集體系結(jié)構(gòu)(ISA)能力來判斷它是否可以處理所請求的操作。如果小核由于它沒有ISA支持而不能處理所請求的操作,則小核的前端邏輯可以解析接收到的指令流,并判定流中的至少一個(gè)指令不被小核支持。相應(yīng)地,小核可以發(fā)出未定義指令故障。可以將此未定義故障發(fā)送到PCU(或另一實(shí)體),該P(yáng)CU(或另一實(shí)體)可以分析故障和小核的狀態(tài)以判斷未定義故障是否是由于小核沒有用于處理指令的硬件支持,或者如果它是真正的未定義故障。在后一種情況下,未定義故障可以被轉(zhuǎn)發(fā)到OS,用于進(jìn)一步處理。如果故障是由于小核沒有合適的用于處理指令的硬件支持,則PCU可以將傳輸?shù)酱诵『说膱?zhí)行狀態(tài)傳輸?shù)綄?yīng)的大核,以處理請求的指令。
在其他實(shí)施例中,當(dāng)判斷小核已經(jīng)執(zhí)行了太長時(shí)間或性能級(jí)別太低時(shí),可以發(fā)生執(zhí)行狀態(tài)在小核和大核之間的傳輸。即,假設(shè)小核已經(jīng)執(zhí)行了數(shù)千或數(shù)百萬處理器周期,以執(zhí)行請求的任務(wù)。由于在大核中有更多有利的執(zhí)行可用,通過將狀態(tài)傳輸?shù)酱蠛艘允勾蠛四軌蚋焖俚亟Y(jié)束任務(wù),可以發(fā)生更大的功率減小。
仍參考圖4,如果判斷可以在小核中處理所請求的操作,則控制進(jìn)入框350,在那里,如此,在小核中執(zhí)行操作。例如,假設(shè)搜請求的操作是數(shù)據(jù)移動(dòng)操作,則小核可以執(zhí)行所請求的處理,如果對于小核沒有其他任務(wù)是待辦的,則可以再次將它置于低功率狀態(tài)。
如果相反在菱形340中判斷小核不能處理所請求的操作,例如,如果操作是小核沒有配置處理的相對復(fù)雜操作,則控制轉(zhuǎn)到框360。在那里,可以發(fā)送喚醒信號(hào),例如,直接從小核發(fā)送到大核,以使大核被通電。相應(yīng)地,控制進(jìn)入框370,在那里,請求的操作如此可以在大核中執(zhí)行。請注意,雖然在圖4的實(shí)施例中利用此特定操作組來描述的,但是,可以理解,本發(fā)明的范圍在這方面不受限制。
如此,在各種實(shí)施例中,可以提供允許硬件中斷及其他喚醒信號(hào)被直接路由到小核而不會(huì)喚醒大核的機(jī)制。請注意,在不同的實(shí)現(xiàn)中,小核其本身或監(jiān)督代理可以判斷是否可以在不喚醒大核的情況下完成喚醒信號(hào)和處理。在代表性的情況下,較小的核的功率效率可以比較大的核要高得多,并且結(jié)果可只支持大核所支持指令的子集。在從低功率狀態(tài)中醒來時(shí)要執(zhí)行的許多操作可以被推卸給更簡單的,功率效率更高的核,以避免在異構(gòu)環(huán)境中喚醒更大的更強(qiáng)力的核(在異構(gòu)環(huán)境中由于性能或功率效率原因,許多各種大小的核被包括在系統(tǒng)中)。
現(xiàn)在參考圖55,所示是根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于傳輸執(zhí)行狀態(tài)的方法的流程圖。如圖5所示,在一個(gè)實(shí)施例中,方法380可以由PCU的邏輯來執(zhí)行。此邏輯可以響應(yīng)于將大核置于低功率狀態(tài)的請求而觸發(fā)。響應(yīng)于這樣的請求,方法380可以從框382開始,在那里,大核的執(zhí)行狀態(tài)可以被存儲(chǔ)在臨時(shí)存儲(chǔ)區(qū)中。請注意,此臨時(shí)存儲(chǔ)區(qū)可以是與核相關(guān)聯(lián)的專用狀態(tài)保存區(qū),或者,它可以在諸如末級(jí)高速緩存(LLC)之類的共享高速緩存器內(nèi)。雖然本發(fā)明的范圍在這方面不受限制,但是,執(zhí)行狀態(tài)可包括通用寄存器、狀態(tài)和配置寄存器,執(zhí)行標(biāo)記等等。另外,此時(shí),可以執(zhí)行使大核被置于低功率狀態(tài)的額外的操作。這樣的操作包括清空內(nèi)部緩存,及其他狀態(tài)以及用于關(guān)閉給定核的信令。
仍參考圖5,可以判斷小核是否恢復(fù)(菱形384)。此恢復(fù)可以作為響應(yīng)于中斷而接收到的恢復(fù)信號(hào)的結(jié)果而發(fā)生,該中斷來自例如處理器的加速器。作為小核恢復(fù)的一部分,控制進(jìn)入框386,在那里,可以從臨時(shí)存儲(chǔ)區(qū)中提取大核狀態(tài)的至少一部分。更具體而言,此提取的部分可以是大核的執(zhí)行狀態(tài)中將被小核所使用的那部分。作為示例,此狀態(tài)部分可以包括主寄存器內(nèi)容,諸如某些執(zhí)行標(biāo)記之類的各種標(biāo)記、機(jī)器狀態(tài)寄存器等等。然而,某些狀態(tài)可能不能被提取,諸如與大核中存在的但在小核中沒有對應(yīng)執(zhí)行單元的一個(gè)或多個(gè)執(zhí)行單元相關(guān)聯(lián)的狀態(tài)??梢詫顟B(tài)的此提取的部分發(fā)送到小核(框388),如此,使小核能響應(yīng)于給定中斷而執(zhí)行任何合適的操作。雖然在圖5的實(shí)施例中利用此特定實(shí)現(xiàn)示出的,但是,可以理解,本發(fā)明的范圍在這方面不受限制。
現(xiàn)在參考圖6,所示是根據(jù)本發(fā)明的實(shí)施例的處理器的框圖。如圖6所示,處理器400可以是多核處理器,包括可以向OS公開的第一多個(gè)核410i-410n,對OS透明的第二多個(gè)核410a-x。
可以看出,各種核可以通過互連415而耦合到包括各種組件的系統(tǒng)代理或非核420。可以看出,非核420可以包括作為末級(jí)高速緩存的共享高速緩存器430。另外,非核可以包括集成的存儲(chǔ)器控制器440、各種接口450a-n、功率控制單元455,以及高級(jí)可編程中斷控制器(APIC)465。
PCU 450可以包括根據(jù)本發(fā)明的一個(gè)實(shí)施例的實(shí)現(xiàn)有功率效率的操作的各種邏輯??梢钥闯觯琍CU 450可包括可以執(zhí)行如上文所述喚醒的喚醒邏輯452。如此,邏輯452可以被配置成始終首先喚醒小核。然而,此邏輯可以被動(dòng)態(tài)地配置,以在某些情況下,不執(zhí)行這樣的小核直接喚醒。例如,系統(tǒng)可以被動(dòng)態(tài)地配置成用于電能節(jié)省操作,例如,當(dāng)系統(tǒng)是利用電池運(yùn)行的移動(dòng)系統(tǒng)時(shí)。在這樣的情況下,邏輯可以被配置成始終喚醒小核。相反,如果系統(tǒng)是連接到墻上電源的服務(wù)器系統(tǒng)、臺(tái)式機(jī)或膝上型計(jì)算機(jī)系統(tǒng),則實(shí)施例可以提供基于用戶的選擇,以選擇延遲和性能而不是節(jié)電量。如此,在這樣的情況下,喚醒邏輯452可以被配置為響應(yīng)于中斷,喚醒大核,而并非小核。當(dāng)判斷大量的小核喚醒會(huì)導(dǎo)致重定向到大核時(shí),可以執(zhí)行大核的類似的喚醒。
為進(jìn)一步實(shí)現(xiàn)有功率效率的操作,PCU 450還可以包括可以在大核和小核之間進(jìn)行執(zhí)行狀態(tài)傳輸?shù)臓顟B(tài)傳輸邏輯454。如上文所討論的,在低功率狀態(tài),可以使用此邏輯來獲取存儲(chǔ)到臨時(shí)存儲(chǔ)器中的大核的執(zhí)行狀態(tài),并提取該狀態(tài)的至少一部分,以在小核喚醒時(shí)提供給小核。
進(jìn)一步地,PCU 450可以包括中斷歷史存儲(chǔ)器456。這樣的存儲(chǔ)器可以包括多個(gè)條目,每一條目都標(biāo)識(shí)在系統(tǒng)操作過程中發(fā)生的中斷以及中斷是否成功地被小核處理。然后,基于此歷史,當(dāng)接收到給定中斷時(shí),可以訪問此存儲(chǔ)器的對應(yīng)的條目,以判斷相同類型的前一中斷是否成功地被小核處理。如果是,則PCU可以將新傳入的中斷定向到相同小核。相反,如果基于此歷史判斷,這種類型的中斷沒有被小核成功地處理(或帶有不能令人滿意的低性能),相反,中斷可以被發(fā)送到大核。
仍參考圖6,PCU 450還可以包括未定義處理邏輯458。這樣的邏輯可以接收由小核所發(fā)出的未定義故障?;诖诉壿?,可以訪問小核中的信息。然后,可以判斷未定義故障是否是由于缺乏對于小核中的指令的支持或另一種原因。響應(yīng)于此判斷,邏輯可以導(dǎo)致小核的狀態(tài)與大核執(zhí)行狀態(tài)(存儲(chǔ)在臨時(shí)存儲(chǔ)區(qū)中)的剩余部分的合并并在那之后被發(fā)送到大核用于對中斷的處理,或者將未定義故障發(fā)送到OS以用于進(jìn)一步的處理。當(dāng)判斷小核不能處理中斷時(shí),隨即從小核獲取提供給小核的執(zhí)行狀態(tài)的一部分,并保存回到臨時(shí)存儲(chǔ)位置,相應(yīng)地,可以將小核斷電。然后,可以將此合并的狀態(tài)以及大核的剩余執(zhí)行狀態(tài)提供回到大核,以使大核能夠處理小核不能處理的中斷。還應(yīng)注意,可以響應(yīng)于小核的這樣的處理不當(dāng),可以寫入中斷歷史存儲(chǔ)器456中的條目。雖然在圖6的實(shí)施例中利用此特定邏輯示出的,但是,可以理解,本發(fā)明的范圍在這方面不受限制。例如,在其他實(shí)施例中,PCU 450的各種邏輯可以以單一邏輯塊來實(shí)現(xiàn)。
APIC 465可以接收各種中斷(例如,從加速器發(fā)出的),并相應(yīng)地將中斷定向到給定的一個(gè)或多個(gè)核。在某些實(shí)施例中,為將小核維持為對OS隱藏,APIC 465可以動(dòng)態(tài)地將傳入的中斷(每一個(gè)中斷都可以包括與它相關(guān)聯(lián)的APIC標(biāo)識(shí)符)從與大核相關(guān)聯(lián)的APIC ID重新映射到與小核相關(guān)聯(lián)的APIC ID。
進(jìn)一步參考圖6,處理器400可以,例如,通過存儲(chǔ)器總線,與系統(tǒng)存儲(chǔ)器460進(jìn)行通信。另外,通過接口450,可以連接到諸如外圍設(shè)備、大容量存儲(chǔ)器等等之類的各種芯片外組件。盡管在圖6的實(shí)施例中利用此特定實(shí)現(xiàn)示出的,但是,本發(fā)明的范圍在這方面不受限制。
請注意,各種體系結(jié)構(gòu)實(shí)現(xiàn)大核和小核的不同的耦合或集成也是可以的。作為示例,這些完全不同的核之間的耦合度可以依賴于與管芯區(qū)域、功率、性能和響應(yīng)性相關(guān)的各種設(shè)計(jì)優(yōu)化參數(shù)。
現(xiàn)在參考圖7,所示是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的處理器的框圖。如圖7所示,處理器500可以是包括大核510和小核520的真正的異構(gòu)型處理器??梢钥闯?,每一處理器都可以與其自己的專用高速緩存存儲(chǔ)器層次結(jié)構(gòu)(即,可以包括1級(jí)和2級(jí)高速緩存存儲(chǔ)器的高速緩存存儲(chǔ)器515和525)相關(guān)聯(lián)。核又可以通過環(huán)形互連530耦合在一起。多個(gè)加速器540a和540b和LLC(即,L3高速緩存550,可以是共享高速緩存器)也耦合到環(huán)形互連。在此實(shí)現(xiàn)中,兩個(gè)核之間的執(zhí)行狀態(tài)可以通過環(huán)形互連530來傳輸。如上文所描述的,大核500的執(zhí)行狀態(tài)可以在進(jìn)入到給定低功率狀態(tài)之前被存儲(chǔ)在高速緩存550中。然后,在小核520的喚醒時(shí),至少此執(zhí)行狀態(tài)的子集可以被提供到小核,以讀取核,以便執(zhí)行觸發(fā)其喚醒的操作。如此,在圖7的實(shí)施例中,核通過此環(huán)形互連松散耦合。雖然為便于圖示利用單個(gè)大核和單個(gè)小核示出的,但是,應(yīng)理解,本發(fā)明的范圍在這方面不受限制。通過使用諸如圖7的實(shí)現(xiàn),可以通過環(huán)形體系結(jié)構(gòu)(還可以是總線或者互連結(jié)構(gòu)體系結(jié)構(gòu))來處理要被交換的任何狀態(tài)或通信。或者,在其他實(shí)施例中,此通信可以通過兩個(gè)核之間的專用總線(在圖7中未示出)。
現(xiàn)在參考圖8,所示是根據(jù)本發(fā)明的再一個(gè)實(shí)施例的處理器的框圖。如圖8所示,處理器500"可以是混合型異構(gòu)型處理器,其中,在大核和小核之間有緊密耦合或集成。具體而言,如圖8所示,大核510和小核520可以共享一共享高速緩存器存儲(chǔ)器518,該存儲(chǔ)器518在各種實(shí)施例中可以包括1級(jí)和2級(jí)高速緩存。如此,執(zhí)行狀態(tài)可以通過此高速緩存存儲(chǔ)器從一個(gè)核被轉(zhuǎn)移到其他核,如此,避免了通過環(huán)形互連530的通信的延遲。請注意,此布局由于減少的數(shù)據(jù)移動(dòng)開銷并且核之間的通信更快而獲得更低的功率,但是,可能不夠靈活。
應(yīng)該注意,圖7和8只示出了兩種可能的實(shí)現(xiàn)(只示出了數(shù)量有限的核)。還可以有更多實(shí)現(xiàn),包括核的不同的布局,兩種方案的組合,兩種以上的類型的核等等。在圖8的變體中,兩個(gè)核可以共享某些組件,諸如執(zhí)行單元、指令指針或寄存器文件。
如討論的,各實(shí)施例可以是完全透明的,對操作系統(tǒng)不可見,如此,沒有軟件修改,只有最少的從C狀態(tài)的恢復(fù)時(shí)間的延長。在其他實(shí)施例中,小核的存在和可用性可以向OS公開,如此,使得OS能作出是將中斷提供到小核還是大核的決定。此外,各實(shí)施例還可以在諸如基本輸入輸出系統(tǒng)(BIOS)之類的系統(tǒng)軟件中提供向OS公開大核和小核,或配置是否公開小核的機(jī)制。各實(shí)施例會(huì)增加明顯的從C狀態(tài)的恢復(fù)時(shí)間,但是,這是可以接受的,因?yàn)楫?dāng)前平臺(tái)在恢復(fù)延遲方面有差異,當(dāng)前,在核的狀態(tài)正在被恢復(fù)的時(shí)間,不執(zhí)行有用的工作。小核和大核如何不同的比率可以從微不足道的差異到較大的微體系結(jié)構(gòu)差異之間變化。根據(jù)各實(shí)施例,異構(gòu)核之間的大多數(shù)主要區(qū)別可以是管芯區(qū)域以及由核消耗的功率。
在某些實(shí)現(xiàn)中,可以提供控制機(jī)制,以便如果檢測到在恢復(fù)時(shí)大核大部分時(shí)間都是醒著的,則可以回避對小核的喚醒,并可以直接喚醒大核至少達(dá)預(yù)定的時(shí)間長度以保持性能。請注意,在某些實(shí)施例中,一般地將所有中斷及其他喚醒信號(hào)重新定向到小核或者大核的機(jī)制可以向軟件(系統(tǒng)和用戶級(jí)別的軟件)公開,這取決于應(yīng)用和系統(tǒng)的功率和性能要求。作為一個(gè)這樣的示例,可以提供用戶級(jí)別的指令,以將喚醒操作定向到指定的核。這樣的指令可以是類似于MWAIT的指令的變體。
在某些實(shí)施例中,加速器可以將帶有中斷的暗示發(fā)送到PCU或其他管理代理,以指出所請求的操作是相對簡單的操作,由此可以在小核中有效地處理它。此加速器提供的暗示可以被PCU用來自動(dòng)地將傳入的中斷定向到小核,用于進(jìn)行處理。
現(xiàn)在參考圖9,所示是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的在大核710和小核720中發(fā)生的操作的時(shí)序圖??梢钥闯觯梢酝ㄟ^允許設(shè)備中斷被直接提供到小核720,并在小核中判斷它是否可以處理中斷,來實(shí)現(xiàn)大核710的比較長的睡眠持續(xù)時(shí)間。如果可以,大核710可以保持在睡眠狀態(tài),并在小核720中處理中斷。
現(xiàn)在參考圖10,所示是根據(jù)本發(fā)明的一個(gè)實(shí)施例的節(jié)電量的圖解說明。如圖10所示,在具有從活動(dòng)CO狀態(tài)到深的低功率狀態(tài)(例如,C6狀態(tài))的過渡的常規(guī)系統(tǒng)中,大核的核功率消耗從相對較高的級(jí)別(例如,在每次進(jìn)入到CO狀態(tài)過程中的500mW)到C6中的零功率消耗級(jí)別(中間視圖)之間變化。相反,在本發(fā)明的一個(gè)實(shí)施例中(底視圖),到CO狀態(tài)的喚醒可以被從大核離開并被定向到小核,由此,并非是500mW功率消耗級(jí)別,小核可以在低得多的功率級(jí)別處理CO狀態(tài),例如,在圖10的實(shí)施例中是10mW。
各實(shí)施例可以以許多不同的系統(tǒng)類型來實(shí)現(xiàn)?,F(xiàn)在參考圖11,所示是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。如圖11所示,多處理器系統(tǒng)600是點(diǎn)對點(diǎn)互連系統(tǒng),并包括通過點(diǎn)對點(diǎn)互連650而耦合的第一處理器670和第二處理器680。如圖11所示,處理器670和680中的每一個(gè)都可以是多核處理器,包括第一和第二處理器核(即,處理器核674a和674b以及處理器核684a和684b),雖然潛在地更多核可以存在于處理器中。更具體而言,處理器中的每一個(gè)都可包括大核,小核(以及可能還有中等核),加速器等等的混合,還有當(dāng)至少大核處于低功率狀態(tài)時(shí),將喚醒定向到最小的可用核的邏輯,如此處所描述的。
仍參考圖11,第一處理器670還包括存儲(chǔ)器控制器中樞(MCH)672和點(diǎn)對點(diǎn)(P-P)接口676和678。類似地,第二處理器680包括MCH 682和P-P接口686和688。如圖11所示,MCH 672和682將處理器耦合到相應(yīng)的存儲(chǔ)器,即,存儲(chǔ)器632和存儲(chǔ)器634,它們可以是本地連接到相應(yīng)的處理器的系統(tǒng)存儲(chǔ)器(例如,DRAM)的一部分。第一處理器670和第二處理器680可以分別通過P-P互連652和654來耦合到芯片集690。如圖11所示,芯片集690包括P-P接口694和698。
此外,芯片集690還包括接口692,接口692通過P-P互連639而將芯片集690與高性能圖形引擎638耦合。芯片集690又可以通過接口696耦合到第一總線616。如圖11所示,各種輸入/輸出(I/O)設(shè)備614以及總線橋接器618可以耦合到第一總線616,總線橋接器618將第一總線616耦合到第二總線620。各種設(shè)備可以耦合到第二總線620,包括,例如,鍵盤/鼠標(biāo)622、通信設(shè)備626和數(shù)據(jù)存儲(chǔ)單元628,數(shù)據(jù)存儲(chǔ)單元628諸如磁盤驅(qū)動(dòng)器或可以包括代碼630的其他大容量存儲(chǔ)設(shè)備。進(jìn)一步地,音頻I/O624可以耦合到第二總線620。各實(shí)施例可以被包括到其他類型的系統(tǒng)中,包括諸如智能蜂窩電話、平板電腦、上網(wǎng)本等等之類的移動(dòng)設(shè)備。
各實(shí)施例可以以代碼來實(shí)現(xiàn),并可以存儲(chǔ)在在其上存儲(chǔ)了指令的非瞬時(shí)的存儲(chǔ)介質(zhì)上,指令可以被用來對系統(tǒng)進(jìn)行編程以執(zhí)行指令。存儲(chǔ)介質(zhì)可以包括,但不僅限于,任何類型的磁盤,包括軟盤、光盤、固態(tài)驅(qū)動(dòng)器(SSD)、光盤只讀存儲(chǔ)器(固態(tài)驅(qū)動(dòng)器)、光盤可重寫(CD-RW),以及磁光盤、諸如只讀存儲(chǔ)器(ROM)之類的半導(dǎo)體器件、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)之類的隨機(jī)訪問存儲(chǔ)器(RAM)、可擦除編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦除編程只讀存儲(chǔ)器(EEPROM)、磁卡或光卡,或適于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。
盡管是參考數(shù)量有限的實(shí)施例來描述本發(fā)明的,但是,那些精通本技術(shù)的人將從其中理解很多修改和變體。所附權(quán)利要求書涵蓋所有這樣的修改和變體都將在本發(fā)明的真正的精神和范圍內(nèi)。