本文所述的實施方案涉及處理器,并且更具體地涉及形成處理器的多個處理器內(nèi)核。
背景技術(shù):
被包括在電子系統(tǒng)中的各種處理器執(zhí)行用于提供一定數(shù)量的用戶功能的軟件。該處理器可包括系統(tǒng)中的中央處理單元(cpu)以及專用于特定任務(wù)諸如圖形、媒體處理等的專用處理器。一般來講,處理器被設(shè)計用于在多個操作點(供電電壓幅值和時鐘頻率的設(shè)置)處進行操作。相比于較高操作點,較低操作點消耗較少的電力但也提供有限的功能。對于某些工作負(fù)荷,有限性能足夠并且可使用較低操作點。對于其他工作負(fù)荷,需要較高操作點來提供足夠的性能。
在一些系統(tǒng)中,經(jīng)歷各種工作負(fù)荷。設(shè)計一種可提供需求最高的工作負(fù)荷所需的性能同時還支持可向許多頻繁執(zhí)行的工作負(fù)荷提供足夠性能的最低可能操作點的處理器成為挑戰(zhàn)。在高操作點下操作的處理器可僅支持供電電壓在電路停止正確運行之前降低至特定水平。必須進行折中并且通常將最低操作點提高直至設(shè)計可滿足期望的高端操作點。在高端操作點繼續(xù)提高時,越來越多的工作負(fù)荷能夠在最低操作點處執(zhí)行(并且許多工作負(fù)荷甚至可在更低的操作點處執(zhí)行)。在此類工作負(fù)荷上不必要地消耗了電力,這可能成為移動系統(tǒng)中在有限能量源諸如電池上頻繁操作的關(guān)鍵因素。
技術(shù)實現(xiàn)要素:
在一個實施方案中,集成電路可包括一個或多個處理器。每個處理器可包括多個處理器內(nèi)核,并且每個內(nèi)核具有不同的設(shè)計/實施和性能水平。例如,可實現(xiàn)針對高性能的內(nèi)核,但可具有該內(nèi)核在其下正確操作的較高最小電壓。另一內(nèi)核可以較低最大性能實現(xiàn),但可針對效率最優(yōu)化,并且可在較低最小電壓下正確操作。另外,在一些實施方案中,處理器所采用的指令集架構(gòu)的一些特征可在構(gòu)成處理器的內(nèi)核中的唯一一個內(nèi)核中實現(xiàn)(或者可由除至少一個內(nèi)核之外的內(nèi)核的子集來實現(xiàn))。如果在不同的內(nèi)核活動時此類特征由代碼序列調(diào)用,則處理器可使內(nèi)核交換至實現(xiàn)該特征的內(nèi)核中的一個內(nèi)核。另選地,可獲取異常并執(zhí)行異常處理程,以識別特征并激活對應(yīng)的內(nèi)核。
在一些實施方案中,使特定特征限制于一個內(nèi)核或至少限制于少于所有內(nèi)核可通過去除內(nèi)核中的重復(fù)電路以處理相同的指令類型來提供區(qū)域有效具體實施。僅可能用于高性能代碼的特征可僅在高性能內(nèi)核中實現(xiàn),這是因為該代碼最有可能執(zhí)行高性能代碼。不太可能使用的特征(例如,針對向后兼容提供但不為較新代碼所使用的特征)可在一個內(nèi)核中實現(xiàn),從而從區(qū)域角度來看可被有效支持。
該處理器可支持多個處理器狀態(tài)(p狀態(tài))。每個p狀態(tài)可規(guī)定操作點(例如,供電電壓幅值和時鐘頻率的組合),并且每個p狀態(tài)可被映射到處理器內(nèi)核中的一個處理器內(nèi)核。在操作期間,一個內(nèi)核是活動的:當(dāng)前p狀態(tài)映射到的內(nèi)核。如果選擇新的p狀態(tài)并且其被映射到不同的內(nèi)核,則該處理器可使處理器狀態(tài)自動地上下文切換到新選擇的內(nèi)核并且可在此內(nèi)核上開始執(zhí)行。在一個實施方案中,該處理器可檢測新選擇的內(nèi)核是否支持在當(dāng)前工作負(fù)荷所使用的特征,并且在不支持的情況下可采取糾正措施。
附圖說明
下面的具體實施方式將參照附圖進行描述,現(xiàn)在對附圖進行簡要說明。
圖1為處理器集群的一個實施方案的框圖。
圖2為示出如圖1所示的p內(nèi)核和e內(nèi)核的一個實施方案的效率與性能的圖示。
圖3為示出處理器電力管理單元改變處理器狀態(tài)的一個實施方案的操作的流程圖。
圖4為示出處理器電力管理單元交換內(nèi)核的一個實施方案的操作的流程圖。
圖5為示出在指令執(zhí)行期間在活動內(nèi)核的一個實施方案上操作的流程圖。
圖6為示出在指令執(zhí)行期間在活動內(nèi)核的另一個實施方案上操作的流程圖。
圖7為計算機可訪問存儲介質(zhì)的框圖。
圖8為用于內(nèi)核交換的上下文切換硬件的一個實施方案的框圖。
圖9為包括圖1所示的處理器集群的一個實施方案的片上系統(tǒng)(soc)的一個實施方案的框圖。
圖10是系統(tǒng)的一個實施方案的框圖。
盡管本公開所述的實施方案可受各種修改形式和替代形式的影響,但其具體實施方案在附圖中以舉例的方式示出并在本文詳細(xì)描述。然而,應(yīng)當(dāng)理解,附圖和對其的詳細(xì)描述并非旨在將實施方案限制于所公開的具體形式,相反,本發(fā)明旨在涵蓋落入到所附權(quán)利要求的實質(zhì)和范圍內(nèi)的所有修改形式、等價形式和替代形式。本文所使用的標(biāo)題僅用于組織目的,并不旨在用于限制說明書的范圍。如在整個專利申請中所使用的那樣,以允許的意義(即,意味著具有可能性)而不是強制的意義(即,意味著必須)來使用“可以”一詞。類似地,字詞“包括”是指包括但不限于。
各種單元、電路或其他部件可被描述為“被配置為”執(zhí)行一個或多個任務(wù)。在此類上下文中,“被配置為”是一般表示“具有”在操作期間執(zhí)行一個或多個任務(wù)的“電路”的結(jié)構(gòu)的寬泛表述。如此,即使在單元/電路/部件當(dāng)前未接通時,單元/電路/部件也可被配置為執(zhí)行任務(wù)。一般來講,形成與“被配置為”對應(yīng)的結(jié)構(gòu)的電路可包括硬件電路和/或存儲可執(zhí)行以實現(xiàn)該操作的程序指令的存儲器。該存儲器可包括易失性存儲器(諸如靜態(tài)隨機存取存儲器或動態(tài)隨機存取存儲器)和/或非易失性存儲器(諸如光盤或磁盤存儲裝置、閃存存儲器、可編程只讀存儲器等)。類似地,為了描述中的方便,可將各種單元/電路/部件描述為執(zhí)行一項或多項任務(wù)。此類描述應(yīng)當(dāng)被解釋成包括短語“被配置為”。表述被配置為執(zhí)行一個或多個任務(wù)的單元/電路/部件明確地旨在對該單元/電路/部件不調(diào)用35u.s.c.§112(f)的解釋。
本說明書包括對“一個實施方案”的引用。短語“在一個實施方案中”或“在實施方案中”的出現(xiàn)不一定指相同的實施方案,盡管通常設(shè)想包括特征的任何組合的實施方案,除非在此明確地否認(rèn)。特定特征、結(jié)構(gòu)或特性可以與本公開一致的任何適當(dāng)?shù)姆绞浇Y(jié)合。
具體實施方式
圖1為處理器集群30的一個實施方案的框圖。在例示的實施方案中,包括多個處理器32a-32n和二級(l2)高速緩存34。處理器32a-32n耦接至l2高速緩存34,該l2高速緩存進一步耦接以與包括集群30的系統(tǒng)的其他元件進行通信。在例示的實施方案中,l2高速緩存34包括處理器電源管理器36,該處理器電源管理器包括存儲處理器32a-32n的p狀態(tài)的p狀態(tài)寄存器38。在各種實施方案中,每個處理器32a-32n可具有其自身的獨立p狀態(tài),處理器32a-32n的群組可共享p狀態(tài),或者集群30可具有針對處理器32a-32n的共享的p狀態(tài)。圖1中更詳細(xì)示出處理器32a包括至少兩個處理器內(nèi)核,性能內(nèi)核(p內(nèi)核)40和效率內(nèi)核(e內(nèi)核)42。其他實施方案可包括附加內(nèi)核。每個內(nèi)核40和42通過相應(yīng)的電源開關(guān)44和46而被耦接至電源軌(vp)。因此,每個內(nèi)核40和42可獨立地上電或掉電。其他處理器諸如處理器32n可類似于處理器32a。
每個處理器32a-32n可以是實體,在系統(tǒng)中執(zhí)行的軟件可向該實體分配代碼來執(zhí)行。例如,軟件可為操作系統(tǒng)(os)的對系統(tǒng)中的硬件進行控制的一部分。軟件可為調(diào)度待執(zhí)行的代碼的線程或任務(wù)調(diào)度器。os還可基于所執(zhí)行的代碼的性能需求來向處理器32a-32n分配p狀態(tài)。os可追蹤代碼的行為以確定p狀態(tài),可靜態(tài)地記錄每個線程/任務(wù)的信息以選擇p狀態(tài)等,或它們的任何組合。除此之外或另選地,p狀態(tài)還可受系統(tǒng)中的其他條件(熱極限、可用電池電量等)的影響。
p內(nèi)核40和e內(nèi)核42可為由處理器32a-32n所采用的指令集架構(gòu)(isa)的不同設(shè)計、不同實施。以另一種方式來考慮,p內(nèi)核40和e內(nèi)核42可實現(xiàn)不同的微架構(gòu)。p內(nèi)核40可為試圖在電力節(jié)省作為不太受重視的設(shè)計目標(biāo)的情況下使性能最大化的激進設(shè)計。p內(nèi)核40中的電路可以是激進式的,其可避免p內(nèi)核40可在其下工作的最小供電電壓如在一些p狀態(tài)下所期望的一樣低。另一方面,e內(nèi)核42可實現(xiàn)較為保守的設(shè)計,從而能夠在低于p內(nèi)核40的最小電壓下正確地操作。e內(nèi)核42的性能在給定操作點下可低于p內(nèi)核40,并且對于e內(nèi)核42,電力節(jié)省可為更高度重視的目標(biāo)。e內(nèi)核42所占據(jù)的半導(dǎo)體區(qū)域可小于p內(nèi)核40所占據(jù)的半導(dǎo)體區(qū)域。
更具體地,在一個實施方案中,e內(nèi)核42和/或p內(nèi)核40可實現(xiàn)由處理器32a-32n所采用的isa的子集,其中isa的一個或多個特征不被包括在該子集中。在一個實施方案中,p內(nèi)核40可實現(xiàn)整個isa并且e內(nèi)核42可實現(xiàn)子集。在另一個實施方案中,p內(nèi)核40和e內(nèi)核42可各自實現(xiàn)不同的子集。子集可部分地重疊(例如,常用指令諸如整數(shù)指令可為每個子集的一部分)。
各種實施方案可以多種方式來選擇從特定子集排除的特征。對于e內(nèi)核42,可將不常使用并且實施起來開銷大的特征(例如,根據(jù)所占據(jù)的半導(dǎo)體基板區(qū)域、功率消耗等)排除。例如,在一個實施方案中,isa可限定給定操作數(shù)類型的多個操作數(shù)大小。在一個實施方案中,操作數(shù)類型可為整數(shù)并且大小可包括32位和64位?,F(xiàn)代代碼似乎趨向于64位整數(shù)代碼。另一方面,用于同時支持64位和32位整數(shù)操作數(shù)大小的硬件可能很占空間并可施壓于時間,這就可能導(dǎo)致較高的電力實施。因此,e內(nèi)核42可實現(xiàn)64位整數(shù)硬件并且可排除對32位整數(shù)代碼的支持??深愃频嘏懦渌鹖sa特征。例如,isa通常包括對操作數(shù)的矢量執(zhí)行單指令多數(shù)據(jù)(simd)處理的矢量指令集。該矢量具體實施可為高功率和/或消耗空間的。最新isa引入為促成循環(huán)矢量化的謂詞矢量指令集。還可從e內(nèi)核42中消除此類特征。一般來講,isa特征可包括一條指令、一組指令、操作數(shù)類型或大小、模式等。
每個可能的p狀態(tài)可指定用于處理器32a-32n的操作點。例如,操作點可包括供電電壓幅值vp和處理器32a-32n中的時鐘的時鐘頻率。其他實施方案可以其他方式限定操作點,但通常操作點可指示處理器的性能和電力消耗。在一個實施方案中,p狀態(tài)可為直接用作供電電壓量值和時鐘頻率的一對值。在其他實施方案中,p狀態(tài)可為用于獲取供電電壓量值和時鐘頻率的值(例如,至數(shù)值表的索引)。
如圖1所示,該處理器32a包括p內(nèi)核40和e內(nèi)核42。由處理器32a所支持的每個p狀態(tài)被映射到內(nèi)核40和內(nèi)核42中的一個內(nèi)核。每個內(nèi)核40和42可具有映射至其的多于一個p狀態(tài)。
在由處理器32a-32n執(zhí)行的代碼改變和/或其他系統(tǒng)考慮因素需要p狀態(tài)的變化時,p狀態(tài)寄存器38可被更新(例如,由os)。如果p狀態(tài)從映射到內(nèi)核40和內(nèi)核42中的一個內(nèi)核(“活動內(nèi)核”)的當(dāng)前p狀態(tài)變?yōu)橛成涞絻?nèi)核40和內(nèi)核42中的另一內(nèi)核(“目標(biāo)內(nèi)核”)的新的p狀態(tài),集群30可在硬件中將處理器32a的處理器上下文從活動內(nèi)核自動傳輸?shù)侥繕?biāo)內(nèi)核。在p狀態(tài)改變的時刻,目標(biāo)內(nèi)核可被斷電。傳輸上下文的過程可包括使目標(biāo)內(nèi)核通電、重置并初始化目標(biāo)內(nèi)核、傳輸處理器上下文、以及使活動內(nèi)核(使目標(biāo)內(nèi)核為活動內(nèi)核)掉電。執(zhí)行可在目標(biāo)內(nèi)核(當(dāng)前活動內(nèi)核)上繼續(xù)。因此,在內(nèi)核之間進行切換可對軟件不可見。事實上,軟件甚至可能并未“意識到”在處理器32a-32n中存在多個內(nèi)核。
盡管圖1中所示的示例在處理器32a中包括兩個內(nèi)核,但其他實施方案可包括多于兩個內(nèi)核。一個內(nèi)核可為在最低p狀態(tài)下操作的最高效內(nèi)核,并且另一內(nèi)核可針對沿性能/效率曲線的其他點進行最優(yōu)化直到處理器中沒有另一內(nèi)核為多個內(nèi)核中的最高性能內(nèi)核。在各種實施方案中,可使用任何數(shù)量的內(nèi)核。
一般來講,處理器可為被配置為實現(xiàn)所限定的指令集架構(gòu)(isa)的任何電路。在各種實施方案中,存在并可利用各種isa,諸如x86架構(gòu)(也稱為apx)、arm架構(gòu)、mips架構(gòu)、powerpc(現(xiàn)簡稱power)等。處理器可采用包括上述多內(nèi)核方法的多種微架構(gòu)技術(shù)。每個內(nèi)核也可實現(xiàn)各種微架構(gòu)技術(shù)。一般來講,微架構(gòu)是指執(zhí)行單元和用于實現(xiàn)isa的其他電路的機構(gòu)。示例可包括有序與無序執(zhí)行、推測執(zhí)行、分支預(yù)測、超標(biāo)量、超管線式等。除各種其他技術(shù)之外,實施方案可實現(xiàn)微碼技術(shù)。
該處理器32a-32n和/或處理器組合體30可用作系統(tǒng)中的任何處理器。例如,處理器可以是中央處理單元(cpu),該中央處理單元執(zhí)行os,以控制系統(tǒng)中的其他硬件并調(diào)度要執(zhí)行的應(yīng)用代碼。cpu也可執(zhí)行應(yīng)用代碼。該處理器可為專用處理器,諸如針對圖形操作優(yōu)化的圖形處理單元(gpu)、針對信號處理優(yōu)化的數(shù)字信號處理器(dsp)、在各種外圍部件中進行軟件執(zhí)行的嵌入式處理器等。
在一個實施方案中,內(nèi)核40和內(nèi)核42中的形成處理器32a-32n的最多一個內(nèi)核可在執(zhí)行期間通電,在正傳輸處理器上下文時除外。給定處理器32a-32n可完全斷電(所有內(nèi)核掉電)。該處理器電源管理器36可被配置為使用電源開關(guān)44和46來控制處理器內(nèi)核的通電/上電和處理器內(nèi)核的斷電/掉電。
在一些實施方案中,內(nèi)核40和/或42可實現(xiàn)可存儲經(jīng)修改的數(shù)據(jù)(即,例如響應(yīng)于存儲在執(zhí)行的處理器代碼中已被寫入高速緩存中、但尚未寫入到存儲器使得存儲器中的數(shù)據(jù)不再是正確數(shù)據(jù)的數(shù)據(jù))的數(shù)據(jù)高速緩存。除了傳輸處理器上下文之外,經(jīng)修改的數(shù)據(jù)可從數(shù)據(jù)高速緩存刷新。具體地講,數(shù)據(jù)可被刷新到l2高速緩存34,但仍可被存儲在l2高速緩存34中,除非l2高速緩存34的正常操作使數(shù)據(jù)被清除。一旦最新活動內(nèi)核執(zhí)行,則經(jīng)修改的數(shù)據(jù)可在l2高速緩存34中大受歡迎并且可以較低延時被移動到最新活動內(nèi)核的高速緩存中。
該處理器電源管理器36可被配置為管理處理器集群30內(nèi)的p狀態(tài)轉(zhuǎn)換。該處理器電源管理器36可被配置為將供電電壓幅值變換傳送到系統(tǒng)級電源管理器或直接傳輸?shù)较蛳到y(tǒng)供給電壓的電力管理單元(pmu)。該處理器電源管理器36可被配置為與時鐘產(chǎn)生硬件(圖1中未示出)諸如鎖相環(huán)(pll)等進行交互。
該處理器上下文通??砂ㄈ魏诬浖梢姷奶幚砥鳡顟B(tài)。該狀態(tài)通??勺鳛橄薅ㄓ趇sa中的各種指令的操作數(shù)而被存儲在能夠訪問的寄存器中。該狀態(tài)可包括架構(gòu)化寄存器,諸如各種類型(整數(shù)、浮點、向量等)的操作數(shù)寄存器。該寄存器還可包括處理器控制寄存器,諸如狀態(tài)寄存器、處理器模式寄存器等。該寄存器還可包括被限定為包括用于特定單元的特定內(nèi)容的專用寄存器。該寄存器還可包括特定于模型的寄存器,其存在可在架構(gòu)上被指定而其內(nèi)容可根據(jù)不同具體實施而不同。
l2高速緩存34可具有任何容量和構(gòu)型。l2高速緩存34可包括處理器32a-32n中的高速緩存,排除或不包括該高速存儲。
圖2為示出內(nèi)核40和42的一個實施方案的效率與性能的圖示。虛線對應(yīng)于e內(nèi)核42并且實線對應(yīng)于p內(nèi)核40。效率繪制在豎直軸線上,并且性能繪制在水平軸線上??梢远喾N方式(例如,性能/瓦特)來測量效率。該性能可使用各種基準(zhǔn)測試程序諸如specint,specflt,dhrystone等來測量。該處理器32a的各種p狀態(tài)沿圖2中的曲線示出。與較高性能對應(yīng)的p狀態(tài)位于p內(nèi)核曲線上,因為p內(nèi)核針對性能進行優(yōu)化,其中與較低性能/較高能量節(jié)省對應(yīng)的p狀態(tài)位于e內(nèi)核曲線上,其在較低性能水平下更為高效但在較高性能水平下性能欠佳。
因此,在圖2的示例中,p狀態(tài)1,2和3被映射到e內(nèi)核42并且p狀態(tài)4,5,6和7被映射到p內(nèi)核40??芍С秩魏螖?shù)量的p狀態(tài)并且可將任何數(shù)量映射到各種內(nèi)核。在另一個實施方案中,可支持連續(xù)p狀態(tài)設(shè)置。在此類實施方案中,可將圖2中的曲線相交處的轉(zhuǎn)折點限定在內(nèi)核切換可能發(fā)生的位置處。
圖3為示出處理器電源管理器36響應(yīng)于寫入到p狀態(tài)寄存器38的新的p狀態(tài)的操作的一個實施方案的流程圖。然而,為了便于理解,框圖以特定順序示出,也可使用其他順序??稍谔幚砥麟娫垂芾砥?6中的組合邏輯中并行地執(zhí)行框。框、框的組合和/或流程圖作為一個整體可在多個時鐘周期內(nèi)為管線式的。該處理器電源狀態(tài)管理器36可被配置為實現(xiàn)圖3中所示的操作。
該活動內(nèi)核可為當(dāng)前正執(zhí)行代碼的內(nèi)核40/42。在一些實施方案中,活動內(nèi)核可為在當(dāng)前p狀態(tài)下在穩(wěn)態(tài)操作期間通電的唯一內(nèi)核。如果新的p狀態(tài)未映射到活動內(nèi)核(決策框50,“否”分支),則處理器電源狀態(tài)管理器36可考慮有關(guān)工作負(fù)荷和目標(biāo)內(nèi)核的任何信息,以確定目標(biāo)內(nèi)核是否支持該工作負(fù)荷(決策框64)。例如,在被存儲在非易失性存儲器諸如閃存存儲器中時某一代碼可包括描述符,并且該描述符可指示該代碼使用了哪些isa特征。該處理器電源狀態(tài)管理器36可根據(jù)描述符來確定代碼所使用的特征。另選地,處理器32a-32n可跟蹤由少于所有內(nèi)核實現(xiàn)的isa特征。跟蹤狀態(tài)可用于確定目標(biāo)內(nèi)核是否支持當(dāng)前使用的特征。
如果正在執(zhí)行的代碼使用在目標(biāo)內(nèi)核上未實現(xiàn)的特征(決策框64,“否”分支),則處理器電源狀態(tài)管理器36可不執(zhí)行狀態(tài)變化。在一個實施方案中,該處理器電源狀態(tài)管理器36可在寄存器或其他軟件可讀位置記錄沒有狀態(tài)變化,使得軟件可確定狀態(tài)變化未發(fā)生。在未執(zhí)行狀態(tài)變化的情況下,也可使用其他指示(例如,中斷或其他信令機制)。在一些實施方案中,可不執(zhí)行阻止?fàn)顟B(tài)變化的嘗試并且可省略決策框64。相反,在于目標(biāo)內(nèi)核上執(zhí)行代碼時,可檢測到不被支持的特征。如果正在執(zhí)行的代碼僅使用在目標(biāo)內(nèi)核上實現(xiàn)的特征(決策框64,“是”分支),則處理器電源狀態(tài)管理器36可執(zhí)行到新p狀態(tài)映射到的內(nèi)核的“內(nèi)核交換”(框52)。
如果新的p狀態(tài)映射到活動內(nèi)核(決策框50,“是”分支),則在p狀態(tài)改變時活動內(nèi)核可保持活動并且執(zhí)行可繼續(xù)。如果新的p狀態(tài)與當(dāng)前p狀態(tài)相比有所增大(決策框54,“是”分支),則供電電壓幅值首先可增大以支持增大的頻率。因此,該處理器電源狀態(tài)管理器36可請求電壓增大(框56)并等待電壓增大完成(決策框58,“是”分支)。該處理器電源狀態(tài)管理器36可通過等待指定時間段來確定電壓增大完成,或者可接收指示電壓增大何時完成的通信。在一個實施方案中,該處理器電源狀態(tài)管理器36可向另一電源管理器(例如,在一個實施方案中,圖9所示的soc水平管理器)發(fā)送電壓增大請求或可直接向供給電壓的pmu發(fā)送電壓請求。一旦電壓增大完成,處理器電源管理器36便可增大時鐘的頻率(框60)。另一方面,如果新的p狀態(tài)與當(dāng)前p狀態(tài)相比減小,則當(dāng)前供電電壓可支持新的(較低)頻率。因此(決策框54,“否”分支),該處理器電源管理器36可更新時鐘頻率并請求新的供電電壓,而無需等待電壓變化完成(框62)。
圖4為示出處理器電源管理器36執(zhí)行內(nèi)核交換的操作的一個實施方案的流程圖。(來自圖3的框52)然而,為了便于理解,框圖以特定順序示出,也可使用其他順序。可在處理器電源管理器36中的組合邏輯中并行地執(zhí)行框???、框的組合和/或流程圖作為一個整體可在多個時鐘周期內(nèi)為管線式的。該處理器電源狀態(tài)管理器36可被配置為實現(xiàn)圖4中所示的操作。
處理器電源管理器36可使活動內(nèi)核轉(zhuǎn)變到“安全”p狀態(tài)(框70)。該安全p狀態(tài)可為活動內(nèi)核和目標(biāo)內(nèi)核兩者在其下正確操作的狀態(tài)。在該上下文中,目標(biāo)內(nèi)核可為新的p狀態(tài)映射到的內(nèi)核。在存在多于兩個內(nèi)核的實施方案中,安全p狀態(tài)可根據(jù)哪個內(nèi)核是活動內(nèi)核、哪個內(nèi)核是目標(biāo)內(nèi)核而不同。該安全p狀態(tài)不需要是能夠p狀態(tài)寄存器36中選擇的p狀態(tài)。即,供電電壓和頻率的組合可不是映射到內(nèi)核的所支持的組合中的一個組合。例如,在給出安全p狀態(tài)下的供電電壓幅值的情況下,p內(nèi)核能夠在較高頻率下運行。然而,e內(nèi)核無法以給定供電電壓幅值在較高頻率下運行。因此,安全p狀態(tài)可包括較低時鐘頻率下的當(dāng)前供電電壓幅值。另選地,目標(biāo)內(nèi)核可不支持當(dāng)前供電電壓,并且安全p狀態(tài)可包括不同供電電壓幅值和時鐘頻率。至安全p狀態(tài)的轉(zhuǎn)變可類似于圖3中的框54,56,58,60和62。
在一些實施方案中,圖3和圖4的操作可在硬件電路中實現(xiàn)。在其他實施方案中,操作可在硬件和軟件的組合中實現(xiàn)或完全在軟件中實現(xiàn),該軟件被存儲在計算機可訪問存儲介質(zhì)上并由處理器32a-32n執(zhí)行。
該處理器電源管理器36可使目標(biāo)內(nèi)核上電(框72)。例如,在圖1的實施方案中,處理器電源管理器36可關(guān)閉目標(biāo)內(nèi)核的電源開關(guān),從而允許電力流到目標(biāo)內(nèi)核。該目標(biāo)內(nèi)核可在電力穩(wěn)定之后重置。在一些實施方案中,該目標(biāo)內(nèi)核可完成重置之后初始化。一旦重置(以及初始化(如果適用))完成(決策框74,“是”分支),處理器電源管理器36便可開始將處理器上下文從活動內(nèi)核傳輸?shù)侥繕?biāo)內(nèi)核(框76)。在一個實施方案中,該內(nèi)核可包括被配置為發(fā)送/接收處理器上下文的電路。在另一個實施方案中,該電路可位于處理器電源管理器36中。如先前所提及的,內(nèi)核還可被配置為在上下文傳輸期間刷新高速緩存。一旦上下文傳輸完成(決策框78,“是”分支),處理器電源管理器便可使(先前)活動內(nèi)核掉電并且目標(biāo)內(nèi)核可成為活動內(nèi)核(框80)。可例如通過斷開先前活動內(nèi)核的電源開關(guān)來實現(xiàn)掉電。該處理器電源管理器36可使活動內(nèi)核轉(zhuǎn)變到新的p狀態(tài)(框82)。至新的p狀態(tài)的轉(zhuǎn)變可類似于圖3中的框54,56,58,60和62。
圖5為示出在代碼執(zhí)行期間給定處理器32a-32n(并且更具體地,活動內(nèi)核40/42)的操作的一個實施方案的流程圖。然而,為了便于理解,框圖以特定順序示出,也可使用其他順序??稍谔幚砥?2a-32n內(nèi)的組合邏輯中并行地執(zhí)行框。框、框的組合和/或流程圖作為一個整體可在多個時鐘周期內(nèi)為管線式的。
代碼中的每個指令可為isa特征和/或可利用一個或多個isa特征。如果活動內(nèi)核實現(xiàn)用于給定指令的isa特征(決策框100,“是”分支),則指令可被正常處理(框102)。另一方面,如果活動內(nèi)核未實現(xiàn)至少一個特征(決策框100,“否”分支)而是另一內(nèi)核實現(xiàn)了該特征(決策框104,“是”分支),則可執(zhí)行到實現(xiàn)該特征的內(nèi)核的內(nèi)核交換(框52)。如果沒有內(nèi)核實現(xiàn)該特征(決策框100和104,“否”分支),則獲取“未實現(xiàn)”異常使得軟件可處理錯誤(框106)。
一般來講,圖5(和下文論述的圖6)所示操作可在其通過處理器流水線處理時針對每個指令而執(zhí)行??稍诓煌瑺顟B(tài)下檢測各種特征。因此,圖5和圖6的流程圖可針對執(zhí)行的代碼序列中的每個指令由處理器32a-32n并行地實現(xiàn)。
圖6為在代碼執(zhí)行期間的給定處理器32a-32n(并且更具體地,活動內(nèi)核40/42)的操作的另一實施方案。類似于圖5的實施方案,圖6的實施方案可確定活動內(nèi)核是否實現(xiàn)代碼所使用的isa特性(決策框100),如果是則正常地處理代碼(框102),確定另一內(nèi)核是否實現(xiàn)特征(決策框104),并且如果在任何內(nèi)核上未實現(xiàn)則接受未實現(xiàn)的異常(框106)。然而,在該實施方案中,如果另一內(nèi)核實現(xiàn)了該特征(決策框104),則可接收內(nèi)核交換異常(框108)。該內(nèi)核交換異常不同于未實現(xiàn)的異常和由內(nèi)核40/42所實現(xiàn)的其他異常。該內(nèi)核交換異??墒沟锰幚砥鲌?zhí)行內(nèi)核交換異常處理程序,該內(nèi)核交換異常處理程序可執(zhí)行前述的內(nèi)核交換52。類似地,在一些實施方案中,內(nèi)核交換異常處理程序可在執(zhí)行內(nèi)核交換52的其他時間使用。
圖7是計算機可訪問存儲介質(zhì)200的一個實施方案的框圖。一般來講,計算機可訪問存儲介質(zhì)可包括在使用期間可被計算機訪問以向計算機提供指令和/或數(shù)據(jù)的任何存儲介質(zhì)。例如,計算機可訪問存儲介質(zhì)可包括諸如磁性或光學(xué)介質(zhì)的存儲介質(zhì),例如,盤(固定或可拆卸)、磁帶、cd-rom、dvd-rom、cd-r、cd-rw、dvd-r、dvd-rw、或藍(lán)光。存儲介質(zhì)還可包括易失性或非易失性存儲器介質(zhì)諸如ram(例如,同步動態(tài)ram(sdram)、rambusdram(rdram)、靜態(tài)ram(sram)等)、rom、或閃存存儲器。該存儲介質(zhì)可被物理地包括在存儲介質(zhì)將指令/數(shù)據(jù)提供到的計算機中。作為另外一種選擇,該存儲介質(zhì)可連接至計算機。例如,該存儲介質(zhì)可經(jīng)由網(wǎng)絡(luò)或無線鏈路諸如網(wǎng)絡(luò)附加的存儲裝置而與計算機連接。該存儲介質(zhì)可通過外圍設(shè)備接口諸如通用串行總線(usb)而被連接。一般來講,計算機可訪問存儲介質(zhì)200可以非暫態(tài)方式來存儲數(shù)據(jù),其中非暫態(tài)在該上下文中可指不通過信號來傳輸指令/數(shù)據(jù)。例如,非暫態(tài)存儲裝置可為易失性(并且可能響應(yīng)于掉電而丟失所存儲的指令/數(shù)據(jù))或非易失性的。
圖7中的計算機可訪問存儲介質(zhì)200可存儲用于形成內(nèi)核交換異常處理程序202的代碼。該內(nèi)核交換異常處理程序202可包括當(dāng)由處理器32a-32n執(zhí)行時實現(xiàn)針對內(nèi)核交換異常處理程序的上述操作(例如,圖6的框108和圖4的框)的指令。載體介質(zhì)可包括計算機可訪問存儲介質(zhì)以及傳輸介質(zhì)諸如有線或無線傳輸。
圖8為處理器32a的一個實施方案的更詳細(xì)框圖。在例示的實施方案中,將p內(nèi)核40和e內(nèi)核42示出為包括上下文狀態(tài)機90(即,圖8中的90a和90b)的示例。內(nèi)核40和42中狀態(tài)機90的具體實施可不同,但它們可以類似的方式在邏輯方面進行操作。一般來講,活動內(nèi)核中的狀態(tài)機90可使寄存器狀態(tài)由活動內(nèi)核輸出至與狀態(tài)機90耦接的上下文緩沖器92。寄存器的狀態(tài)次序可為固定的,使得接收狀態(tài)機可簡單地讀取數(shù)據(jù)并將其寫入到正確的寄存器。在另一具體實施中,次序可為任意的并且每個寄存器可被分配能夠通過寄存器內(nèi)容寫入到上下文緩沖器92的標(biāo)識符,并由接收狀態(tài)機使用以將正確的寄存器寫入到接收內(nèi)核內(nèi)。
狀態(tài)機可以多種方式實現(xiàn):固定功能電路(例如,有限狀態(tài)機)、處理器電源管理器36中的由處理器執(zhí)行的微碼(例如,向內(nèi)核傳輸各種寄存器的命令)等。另外,活動處理器中的狀態(tài)機90可刷新數(shù)據(jù)高速緩存到l2高速緩存34,如上文所提及的。
上下文緩沖器92可為先進先出緩沖器(fifo),以從一個內(nèi)核捕獲上下文狀態(tài)到另一內(nèi)核。上下文緩沖器92可提供靈活性、處理跨時鐘域問題等。在一個實施方案中,上下文緩沖器92可為處理器電源管理器36的一部分并以圖8中的虛線示出。在另一個實施方案中,狀態(tài)機90還可在處理器電源管理器36中實現(xiàn)。在此類實施方案中,處理器電源管理器36可具有對內(nèi)核40和42中的寄存器狀態(tài)的訪問權(quán)限,或者可使得指令被執(zhí)行以執(zhí)行寄存器讀取/寫入,從而執(zhí)行對寄存器狀態(tài)的傳輸。
圖9為耦接至存儲器12的soc10的一個實施方案的框圖。如名稱所暗指的,soc10的部件可作為集成電路“芯片”而被集成到單個半導(dǎo)體基板上。在一些實施方案中,該部件可在系統(tǒng)中的兩個或更多個芯片上實現(xiàn)。然而,soc10在本文將被用作示例。在例示的實施方案中,soc10的部件包括中央處理單元(cpu)復(fù)合體14(其可由圖1所示的處理器集群30來實現(xiàn))、外圍部件18a-18b(更簡單地說,“外圍設(shè)備”18)、存儲器控制器22、soc電源管理器(pmgr)16和通信結(jié)構(gòu)27。部件14,16,18a-18b和22可全部耦接到通信結(jié)構(gòu)27。該存儲器控制器22在使用期間可耦接到存儲器12。
該存儲器控制器22通??砂ㄓ糜趶膕oc10的其他部件接收存儲器操作并用于訪問存儲器12以完成存儲器操作的電路。該存儲器控制器22可被配置為訪問任何類型的存儲器12。例如,存儲器12可以是靜態(tài)隨機存取存儲器(sram)、動態(tài)ram(dram)諸如同步的dram(sdram),其包括雙倍數(shù)據(jù)率(ddr,ddr2,ddr3,ddr4等)dram。可支持低功率/移動型式的ddrdram(例如,lpddr、mddr等)。該存儲器控制器22可包括存儲器操作隊列,以用于對這些操作進行排序(并且可能重新排序)并將這些操作呈現(xiàn)至存儲器12。該存儲器控制器22還可包括用于存儲等待寫到存儲器的寫數(shù)據(jù)和等待返回至存儲器操作的源的讀數(shù)據(jù)的數(shù)據(jù)緩沖器。在一些示例中,該存儲器控制器22可包括用于存儲最近訪問的存儲器數(shù)據(jù)的存儲器高速緩存。例如,在soc具體實施中,該存儲器高速緩存可通過在預(yù)期很快要再次訪問的情況下避免從存儲器12重新訪問數(shù)據(jù)以降低soc中的功率消耗。在一些情況下,該存儲器高速緩存也可被稱為系統(tǒng)高速緩存,其與私有高速緩存諸如l2高速緩存或處理器中的高速緩存不同,該私有高速緩存僅服務(wù)于某些部件。此外,在一些實施方案中,系統(tǒng)高速緩存不需要位于存儲器控制器22內(nèi)。
該外圍設(shè)備18a-18b可為被包括在soc10中的附加硬件功能的任何集合。例如,該外圍設(shè)備18a-18b可包括視頻外圍設(shè)備,諸如被配置為處理來自相機或其他圖像傳感器的圖像捕獲數(shù)據(jù)的圖像信號處理器、被配置為在一個或多個顯示設(shè)備上顯示視頻數(shù)據(jù)的顯示控制器、圖形處理器單元(gpu)、視頻編碼器/解碼器、縮放器、旋轉(zhuǎn)器、混合器等。該外圍設(shè)備可包括音頻外圍設(shè)備,諸如麥克風(fēng)、揚聲器、到麥克風(fēng)和揚聲器的接口、音頻處理器、數(shù)字信號處理器、混音器等。該外圍設(shè)備可包括用于soc10外部(例如,外圍設(shè)備18b)的各種接口的接口控制器,包括諸如通用串行總線(usb)、外圍部件互連(pci)(包括pciexpress(pcie))、串行口和并行口等的接口。該外圍設(shè)備可包括網(wǎng)絡(luò)外圍設(shè)備,諸如媒體訪問控制器(mac)??砂ㄈ魏我唤M硬件。
該通信結(jié)構(gòu)27可以是用于在soc10的部件間進行通信的任何通信互連器和協(xié)議。該通信構(gòu)造27可為基于總線的,其包括共享總線配置、交叉桿配置、以及具有網(wǎng)橋的分級總線。該通信構(gòu)造27還可為基于封裝的,并且可利用網(wǎng)橋、交叉桿、點到點或其他互連件進行分級。
該socpmgr16可被配置為控制從系統(tǒng)中pmu請求的供電電壓幅值。可存在由pmu所產(chǎn)生的用于soc10的多個供電電壓。例如,可產(chǎn)生用于cpu復(fù)合體14中的處理器32a-32n的vp電壓,并且可產(chǎn)生用于soc10中的其他部件的vsoc電壓。在一個實施方案中,vsoc可用于存儲器控制器22、外圍設(shè)備18、socpmgr16和soc10的其他部件并且可采用基于電源域的電源門控。在一些實施方案中,可存在用于soc10的其余部分的多個供電電壓。在一些實施方案中,還可存在用于cpu復(fù)合體14和/或soc10中各種存儲器陣列的存儲器供電電壓。該存儲器供電電壓可用于供應(yīng)給邏輯電路的電壓(例如,vp或vsoc),其可具有比確保穩(wěn)健存儲操作所需的電壓幅值低的電壓幅值。socpmgr16可在軟件直接控制下(例如,軟件可直接請求部件的上電和/或掉電)和/或可被配置為監(jiān)控soc10并確定何時使各種部件上電和/或掉電。對于cpu復(fù)合體14,可將對vp的電壓請求提供至socpmgr16,該socpmgr可將該請求傳送至pmu,以實現(xiàn)供電電壓幅值的變化。
一般來講,該部件可被稱其為通電或斷電。該部件可在其接收供電電壓的情況下通電,這樣部件可按照設(shè)計工作。如果部件被關(guān)閉,則其不接收供電電壓并且不工作。該部件在其通電的情況下也可被稱為上電,并且在其斷電的情況下可被稱為掉電。使部件上電可涉及向關(guān)閉的部件供給供電電壓,并且使部件掉電可涉及終止向部件供給供電電壓。類似地,任何子部件和/或soc10作為整體可被稱為上電/掉電等。部件可為提供soc10內(nèi)的指定功能并且具有到soc10其余部分的專用接口的預(yù)定義的電路塊。因此,外圍設(shè)備18a-18b、cpu復(fù)合體14、存儲器控制器22和socpmgr16可各自為部件的示例。
需注意,soc10的部件數(shù)量(以及圖1所示部件,諸如cpu復(fù)合體14內(nèi)的子部件的數(shù)量)可根據(jù)不同的實施方案而不同。可存在比圖1中所示的數(shù)量更多或更少的每個部件/子部件。
接下來轉(zhuǎn)向圖10,其示出了系統(tǒng)150的一個實施方案的框圖。在例示的實施方案中,該系統(tǒng)150包括耦接到一個或多個外圍設(shè)備154和外部存儲器12的soc10的至少一個示例。提供了向soc10提供供電電壓并向存儲器12和/或外圍設(shè)備154提供一個或多個供電電壓的pmu156。在一些實施方案中,可包括soc10的多于一個示例(也可包括多于一個存儲器12)。
pmu156通??砂ㄓ糜谏晒╇婋妷翰⒂糜趯⑦@些供電電壓提供至系統(tǒng)的其他部件諸如soc10、存儲器12、各種片外外圍部件154諸如顯示設(shè)備、圖像傳感器、用戶接口設(shè)備等的電路。因此,pmu156可包括可編程調(diào)壓器、連接到soc10并且更具體地連接到socpmgr16以接收電壓請求的邏輯部件等。
根據(jù)系統(tǒng)150的類型,該外圍設(shè)備154可包括任何期望的電路。例如,在一個實施方案中,該系統(tǒng)150可以是移動設(shè)備(例如個人數(shù)字助理(pda)、智能電話等),并且外圍設(shè)備154可包括用于各種類型的無線通信的設(shè)備,諸如wifi、藍(lán)牙、蜂窩、全球定位系統(tǒng)等。該外圍設(shè)備154還可包括附加存儲裝置,該附加存儲裝置包括ram存儲裝置、固態(tài)存儲裝置或磁盤存儲裝置。該外圍設(shè)備154可包括用戶界面設(shè)備(諸如包括觸摸顯示屏或多點觸摸顯示屏的顯示屏)、鍵盤或其他輸入設(shè)備、麥克風(fēng)、揚聲器等。在其他示例中,系統(tǒng)150可以是任何類型的計算系統(tǒng)(例如臺式個人計算機、膝上型電腦、工作站、網(wǎng)絡(luò)機頂盒等)。
該外部儲存器12可包括任何類型的存儲器。例如,該外部存儲器12可以是sram、動態(tài)ram(dram)(諸如同步dram(sdram))、雙倍數(shù)據(jù)速率(ddr,ddr2,ddr3等)sdram、rambusdram、低功率版本的ddrdram(例如lpddr,mddr等)等等。該外部存儲器12可包括存儲器設(shè)備可被安裝到的一個或多個存儲器模塊,諸如單列存儲器模塊(simm)、雙列存儲器模塊(dimm)等。另選地,該外部存儲器12可包括以芯片上芯片或封裝上封裝具體實施而被安裝在soc10上的一個或多個存儲器設(shè)備。
一旦充分理解了以上公開,很多變型形式和修改形式對于本領(lǐng)域的技術(shù)人員而言將變得顯而易見。本發(fā)明旨在將以下權(quán)利要求書被解釋為涵蓋所有此類變型形式和修改形式。