專利名稱:根據(jù)可用并行數(shù)目改變每條指令能量的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及可以執(zhí)行具有變化數(shù)量的標(biāo)量和并行資源需求的程序的微處理器,更具體地涉及采用多個核的微處理器。
背景技術(shù):
在一些實施例中,計算機工作負荷連續(xù)地從具有少量內(nèi)在并行(parallelism)(主要為標(biāo)量)的工作負荷轉(zhuǎn)到具有顯著數(shù)量的并行(主要為并行)的工作負荷,且這種本性在軟件的不同程序段之間可能不同。典型的標(biāo)量工作負荷包括軟件開發(fā)工具、辦公室生產(chǎn)力套裝軟件、和操作系統(tǒng)內(nèi)核例程。典型的并行工作負荷包括3D圖形、媒體處理、和科學(xué)應(yīng)用。標(biāo)量工作負荷可退回范圍0.2至2.0的IPC(每個時鐘執(zhí)行的指令),而并行工作負荷可以獲得范圍為4至幾千IPC的吞吐量。后一種的高IPC通過使用指令級的并行和線程級的并行可以得到。
現(xiàn)有技術(shù)微處理器通常設(shè)計成以標(biāo)量或并行計算機性能為主要目標(biāo)。為了實現(xiàn)高的標(biāo)量性能,經(jīng)常期望盡可能地減小執(zhí)行潛伏期。減小有效潛伏期的微架構(gòu)技術(shù)包括預(yù)測執(zhí)行、分支預(yù)測、和高速緩存。對高標(biāo)量性能的追求已經(jīng)實現(xiàn)了大的亂序、高度預(yù)測、深管線微處理器。為了獲得高的并行計算機性能,則期望提供盡可能大的執(zhí)行吞吐量(帶寬)。提高吞吐量的微架構(gòu)技術(shù)包括寬超標(biāo)量處理、單指令多數(shù)據(jù)的指令、芯片級多處理、以及多線程。
當(dāng)嘗試構(gòu)建可同時在標(biāo)量和并行任務(wù)上執(zhí)行良好的微處理器時會產(chǎn)生問題。一個問題可能起因于如下理解,即,實現(xiàn)短潛伏期所需的設(shè)計技術(shù)在某些情形中可能與實現(xiàn)高吞吐量所需的設(shè)計技術(shù)大相迥異。
在附圖中示范性地而非限制性地闡述本發(fā)明,其中在附圖中使用相似的參考數(shù)字表示相似的元件。附圖中圖1為根據(jù)一個實施例的包括可由電壓和頻率配置的核的處理器的示意性圖示。
圖2為根據(jù)一個實施例的包括通過處理功率和功耗可選擇的核的處理器示意性圖示。
圖3為根據(jù)一個實施例的包括由可選的性能電路配置的核的處理器的示意性圖示。
圖4為根據(jù)本發(fā)明一個實施例的包括可由可選的預(yù)測電路配置的核的處理器的示意性圖示。
圖5為根據(jù)本發(fā)明一個實施例的包括核的處理器以及節(jié)流細節(jié)的示意性圖示。
圖6為示出了根據(jù)本發(fā)明一個實施例的轉(zhuǎn)變到不同核配置的流程圖。
圖7為示出了根據(jù)本發(fā)明另一個實施例的轉(zhuǎn)變到不同核配置的流程圖。
圖8為示出了根據(jù)本發(fā)明另一個實施例的轉(zhuǎn)變到不同核配置的流程圖。
圖9為示出了根據(jù)本發(fā)明另一個實施例的轉(zhuǎn)變到不同核配置的流程圖。
圖10A為根據(jù)本發(fā)明一個實施例的包括具有節(jié)流和多個核的處理器的系統(tǒng)的示意性圖示。
圖10B為根據(jù)本發(fā)明另一實施例的包括具有節(jié)流和多個核的處理器的系統(tǒng)的示意性圖示。
發(fā)明詳述下述描述了根據(jù)軟件程序中可用的并行數(shù)量而改變耗費以處理各個指令的能量數(shù)量的技術(shù)。在下述描述中,陳述了許多具體細節(jié)以提供對本發(fā)明的更徹底的理解,例如邏輯實施、軟件模塊分配、總線以及其他界面信號技術(shù)。然而,本領(lǐng)域技術(shù)人員將會了解,無需這些具體細節(jié)亦可實踐本發(fā)明。在其他情形中,沒有詳細地示出控制結(jié)構(gòu)、門級電路以及完整軟件指令序列以免本發(fā)明變得不明確。本領(lǐng)域普通技術(shù)人員借助于此處的描述將能夠?qū)嵤┣‘?dāng)?shù)墓δ芏鵁o需過多的實驗。在某些實施例中,本發(fā)明披露成例如由Intel公司制造的Pentium兼容處理器的多核實施的形式。然而,本發(fā)明可以實踐于其他類型的處理器,例如Itanium處理器系列兼容處理器、X-Scale系列兼容處理器、或者來自其他廠商或設(shè)計者的任何處理器架構(gòu)的任何各種不同的通用處理器。另外,一些實施例可包括或者可以是專用處理器,例如圖形、網(wǎng)絡(luò)、圖像、通信、或者任何其他已知或以其他方式可得到類型的處理器。
可以基于每瓦特的每秒指令數(shù)(IPS)測量功率效率。IPS/瓦特度量等效于每條指令能量,或者更精確而言,IPS/瓦特正比于每條指令能量的倒數(shù),即(IPS)/(瓦特)=(指令)/(焦耳)方程1每條指令能量這個度量的重要性質(zhì)為該度量與處理指令所需的時間數(shù)量無關(guān)。這使得每條指令能量是用于吞吐量性能的有用的度量。
通過將微處理器模擬成每條指令被執(zhí)行時充電或者放電的電容器,由此可以執(zhí)行對微處理器功耗的近似分析(為了簡化,可以忽略漏電流和短路開關(guān)電流)。在該假設(shè)下,每條指令能量僅取決于兩個方面被觸發(fā)以處理各個指令的電容數(shù)量(從拾取到退回)和電源電壓。通常用于電容器的如下公知公式E=CV2/2方程2也可以用于微處理器。E為處理指令所需的能量;C為在處理該指令時觸發(fā)的電容數(shù)量;V為電源電壓。
微處理器可以在例如100瓦特的固定功率預(yù)算范圍內(nèi)工作。在某些時間段內(nèi)進行平均,無論微處理器或軟件工作內(nèi)容如何,微處理器的功耗不應(yīng)超過該功率預(yù)算。為了實現(xiàn)該目標(biāo),微處理器可結(jié)合某些形式的動態(tài)熱管理。類似地芯片級的多處理器可以調(diào)節(jié)(節(jié)流)其活動以保持在固定功率預(yù)算范圍內(nèi),無論其是否正退回例如0.2個每個時鐘執(zhí)行的指令(IPC)或者20 IPC。為了提供良好性能,在本示例中芯片級多處理器應(yīng)該能夠?qū)⑵銶IPS/瓦特或者等效地其能量/指令改變到100∶1的范圍以上。
設(shè)計可同時實現(xiàn)高的標(biāo)量性能和高吞吐量性能的微處理器的一種方法是根據(jù)軟件中可用的或者估算可用的并行數(shù)量而動態(tài)地變化耗費用于處理各個指令的能量數(shù)量。換而言之,如果存在少量的并行,則微處理器可將所有可用的能量耗費用于處理少數(shù)指令;但是如果存在大量的并行,則微處理器將非常少的能量耗費用于處理各個指令。這可以表達成P=(EPI)×(IPS)方程3其中P為固定功率預(yù)算,EPI為每個退回指令的平均能量,IPS為所有處理器核上每秒退回的指令總數(shù)。本實施例嘗試將總的多處理器芯片功率維持在幾乎恒定的水平。
互補型金屬氧化物半導(dǎo)體(CMOS)電壓和頻率縮放可用于獲得不同的每條指令能量比率。在一個實施例中,根據(jù)所期望的性能和功率水平,邏輯相關(guān)地變化微處理器的源電壓和時鐘頻率。為了將芯片級微處理器的總功耗維持在固定功率預(yù)算范圍內(nèi),可以如下所述動態(tài)地進行電壓和頻率縮放。對于低的線程并行,可以使用高的源電壓和高頻運行少數(shù)核以得到最佳標(biāo)量性能。對于高的線程并行,可以使用低的源電壓和低頻運行許多核以得到最佳的吞吐量性能。由于非活動核可能期望低的功耗,因此例如動態(tài)睡眠晶體管和體偏壓的漏電控制技術(shù)可以被采用。
現(xiàn)在參照圖1,示出了根據(jù)一個實施例的包括可由電壓和頻率配置的核的處理器的示意性圖示。示出了核1120、核2130、核3140和核4150,但是在其他實施例中,處理器中可能存在多于四個或者少于四個核。一個或多個這些核可具有電壓控制電路和時鐘頻率控制電路。圖1清楚地示出了核1120具有電壓控制電路122和頻率控制電路124,但是其他核也可以具有等效電路,或者該電壓控制和頻率控制邏輯可以是并不直接與具體核相關(guān)聯(lián)的分離的邏輯。
節(jié)流模塊110可用于收集信息并確定或者評估執(zhí)行軟件程序中存在的并行數(shù)量。在一個實施例中,并行數(shù)量可以為得到支持的同時發(fā)生的線程數(shù)目。在其他實施例中,其他度量可用于表達并行數(shù)量,例如每秒退回的指令總數(shù),或者可支持預(yù)測多線程執(zhí)行的分支指令的數(shù)目。節(jié)流模塊110可利用由操作系統(tǒng)提供的信息以輔助確定該并行數(shù)量。在其他實施例中,節(jié)流模塊110可以使用處理器內(nèi)的硬件邏輯及其核進行該確定。可以連續(xù)地或者周期性地進行該確定。
每次節(jié)流模塊110確定程序中并行的數(shù)量時,該節(jié)流模塊可通過信號線112、114、116和118指示核120、130、140、150改變其電壓和時鐘頻率。在一個實施例中,信號線112、114、116和118也可以用于接通或關(guān)閉核,或者從包含核的功率井除去功率。在其他實施例中,可以通過時鐘門控或者指令饑餓(instruction starvation)技術(shù)關(guān)閉核。在一個實施例中,如果線程級當(dāng)前的并行數(shù)量超過先前數(shù)量的值大于閾值,則節(jié)流模塊通過降低各個核中的電壓和時鐘頻率可啟動轉(zhuǎn)變到運行更多數(shù)目的線程,但是在更多數(shù)目的核上運行這些線程。先前關(guān)閉的核可以被接通以支持更大數(shù)目的線程。類似地,如果線程級當(dāng)前的并行數(shù)量低于預(yù)先數(shù)量的值大于閾值,則節(jié)流模塊通過提高某些核中的電壓和時鐘頻率可啟動轉(zhuǎn)變到運行更少數(shù)目的線程,但是在更少數(shù)目的這些核上運行這些線程。由于不再需要這些核以支持更少數(shù)目的線程,先前接通的某些核被關(guān)閉。
在一個實施例中,可以設(shè)計單指令集架構(gòu)(ISA)異類多核微處理器,其中可以使用不同的微架構(gòu)跨過性能和功率范圍。在一個實施例中,芯片級多處理器可以由兩種處理器核構(gòu)成,該處理器核稱為大核和小核。該兩種類型的核可以實施相同的指令集架構(gòu),使用超高速緩存相關(guān)性以實施共用存儲器,且僅僅在微架構(gòu)方面不同。在其他實施例中,該兩種類型的核可以實施相似的指令集架構(gòu),或者小核可以實施大核的指令集的子集。大核可能是亂序、超級標(biāo)量、深管線機器,而小核可能是有序、標(biāo)量、短管線機器。Intel Pentium 4處理器和Intel i486處理器是這兩類核的代表。在其他實施例中,可以使用運行基本上相似或相同的指令集架構(gòu)的兩種以上類型或性能水平的核。
在一個實施例中,芯片級多處理器包括一個大核和25個小核,這兩種核的功耗比率為25∶1,標(biāo)量性能比率為5∶1,每條指令能量為5∶1的范圍。本實施例的芯片級多處理器按照下述工作。對于低的線程級并行,可以運行該大核以得到最佳標(biāo)量性能。對于高的線程級并行,可以運行多個小核以得到最佳的吞吐量性能。
在任意時刻,微處理器可以運行一個大核或者25個小核。由于可用的軟件線程的數(shù)目隨時間變化,非對稱的多處理器能夠在大核和小核之間遷移線程??梢詫嵤┚€程遷移邏輯以支持該功能。
實際上,期望少量的小核與該大核同時運行,從而在關(guān)閉大核時減小吞吐量性能不連續(xù)。在先前示例中,3個單位的吞吐量不連續(xù)可能是由于關(guān)閉大核和接通兩個小核。為了減小總吞吐量損失的百分比,通過允許例如多達5個小核與大核同時運行,如果電源能短時間支持該動作,則可以將該不連續(xù)轉(zhuǎn)移到發(fā)生于更大數(shù)目的正在運行的線程的情況下。
使用代表當(dāng)前微處理器的兩種類型的核,可以獲得范圍為4∶1的每條指令能量。隨著未來的微處理器繼續(xù)達到更高水平的標(biāo)量性能,可能的每條指令能量的范圍預(yù)期可能增大到6∶1,或者將遠遠超出這個范圍。
現(xiàn)在參考圖2,示出了根據(jù)一個實施例,包含通過處理功率和功耗可選擇的核的處理器的示意性圖示。該處理器可包括少數(shù)大核,即A核,還包括大量的小核,即B核。示出了A核1220、A核2222、和B核1至60230-262,但是在其他實施例中處理器中可能存在比兩個A核與六十個B核更多或者更少的核。
節(jié)流模塊210可再次用于收集信息并確定執(zhí)行軟件程序中存在的并行數(shù)量。在一個實施例中,并行數(shù)量可以為得到支持的同時發(fā)生的線程數(shù)目。在其他實施例中,如前所述,其他度量可用于表達并行數(shù)量。節(jié)流模塊210可利用由操作系統(tǒng)提供的信息以輔助確定該并行數(shù)量。在其他實施例中,節(jié)流模塊210可以使用處理器內(nèi)的硬件邏輯及其核進行該確定。可以連續(xù)地或者周期性地進行該確定。
由于可用的軟件線程的數(shù)目可能隨時間變化,圖1的處理器可包括能夠在大的A核和小的B核之間遷移線程的線程遷移邏輯212。期望允許少量的小B核與大的A核同時運行,從而在關(guān)閉大的A核時減小吞吐量性能不連續(xù)。為了減小總吞吐量損失的百分比,通過允許例如多達5個小核與大核同時運行,則可以將該不連續(xù)轉(zhuǎn)移到發(fā)生于更大數(shù)目的正在運行的線程的情況下。
每次節(jié)流模塊210確定程序中并行的數(shù)量時,該節(jié)流模塊可使用信號線224至266啟動A核和B核的上電或下電。在一個實施例中,如果當(dāng)前的并行數(shù)量超過先前數(shù)量的值大于閾值,則節(jié)流模塊210可使用線程遷移邏輯212啟動轉(zhuǎn)變到運行更多數(shù)目的線程,這些線程可以在更多數(shù)目的B核上運行。先前關(guān)閉的B核可以被接通以支持更大數(shù)目的線程,且已經(jīng)被接通的任何A核可以被關(guān)閉。類似地,如果當(dāng)前的并行數(shù)量低于預(yù)先數(shù)量的值大于閾值,則節(jié)流模塊可通過在更少數(shù)目的A核上運行這些線程而啟動轉(zhuǎn)變到運行更少數(shù)目的線程。先前接通的B核可以被關(guān)閉,因為不再需要這些核以支持更少數(shù)目的線程,且A核被接通以支持該更少數(shù)目的線程。如前所述,期望少量的B核與A核同時運行,從而在關(guān)閉大核時減小吞吐量性能不連續(xù)。
在一個實施例中,節(jié)流模塊可以實施為不需要反饋回路的方式。這里,節(jié)流的控制動作(例如決定運行線程的核的類型和數(shù)目)并不返回以影響輸入值(例如用于線程的核的分配和配置)。在該實施例中,可以假設(shè)各個A核220、222可能消耗與B核230至262中的25個相同的功率數(shù)量。在其他實施例中,可以使用不同的功耗比率。處理器可以將其總功率預(yù)算劃分成兩個部分。對于各個部分,該功率預(yù)算可允許一個A核與多達5個B核同時工作,或者零個A核與多達30個B核同時工作。在其他實施例中,該功率預(yù)算可以按照其他方式劃分成多個部分。
在一個實施例中,可以根據(jù)表I將運行線程的數(shù)目(RT)分配給一些A核(QAC)和一些B核(QBC)。
表I
當(dāng)運行線程的數(shù)目增大且新線程啟動(在一個實施例中通過處理器間中斷)時,該節(jié)流模塊可確定當(dāng)前運行線程的數(shù)目。取決于當(dāng)前運行線程的數(shù)目,該新線程可以根據(jù)上述表I被指派至A核或B核。在本實施例中,對于某些情形,例如當(dāng)從12個線程增大到13個線程,或者從36個線程增大到37個線程時,在A核上運行的現(xiàn)有線程將遷移到在B核上運行。當(dāng)該遷移完成時,現(xiàn)有遷移線程和新線程都可以啟動。因此,在本實施例中,新線程可能呈現(xiàn)啟動延遲。
當(dāng)運行線程數(shù)目減小時,類似的過程可能發(fā)生。當(dāng)特定線程終止且其核停止時,各種方法可以用于潛在地將剩余線程之一從在B核上運行遷移到在A核上運行。這個過程可能發(fā)生于例如當(dāng)運行線程的數(shù)目從13個線程減小到12個線程,或者從37個線程減小到36個線程時。在一個實施例中,可以使用周期定時器以允許在特定時間間隔內(nèi)僅發(fā)生一次遷移。在線程快速產(chǎn)生和終止的情形中,這可以有利地防止太頻繁的線程遷移。受影響的線程仍運行于B核上,直到該特定時間間隔。
在一個實施例中,節(jié)流模塊可按照對軟件是透明的方式執(zhí)行從A核到B核的遷移。節(jié)流模塊的線程遷移機制可包括將邏輯核映射到物理核的表,可能需要的向核發(fā)出遷移信號的中斷、復(fù)制核的處理器狀態(tài)的微代碼或硬布線邏輯、以及處理器核之間的互連網(wǎng)絡(luò)。邏輯核的數(shù)目可以等于B核的數(shù)目。
在另一個實施例中,節(jié)流模塊可按照對軟件非透明的方式執(zhí)行從A核到B核的遷移。線程遷移可以由操作系統(tǒng)調(diào)度程序執(zhí)行。操作系統(tǒng)可以使用當(dāng)前運行線程追蹤核數(shù)目,將新的線程指派到核,并將線程從A核遷移到B核(或者從B核到A核)。軟件線程遷移可以使用與硬件實施中所述功能等效的功能。在一個實施例中,節(jié)流模塊操作對于應(yīng)用程序可能是透明的,盡管對于操作系統(tǒng)是不透明的。
調(diào)制功耗的一個備選方式是調(diào)整邏輯塊的尺寸或功能。當(dāng)不需要大的陣列尺寸時,例如尺寸可變的調(diào)度程序、超高速緩沖存儲器、轉(zhuǎn)換后備緩沖器(TLB)、分支預(yù)測器、和其他可選的性能電路可以用于減小開關(guān)電容(并因此減小能量)。除了動態(tài)調(diào)整陣列大小之外,還可以設(shè)計大核,其通過動態(tài)地禁止執(zhí)行單元、管線級、和其他可選的性能電路而使其性能退化到較小核的性能。這些技術(shù)共同地稱為適應(yīng)性處理。
芯片級多處理器的一個實施例可按下述工作。對于低的線程并行,可以運行少量的核,在各個核上使用可用的可選性能電路的第一集合(例如所有或許多該性能電路)以得到良好的標(biāo)量性能。對于高的線程并行,可以運行許多核,在各個核上使用更少的可選性能電路以得到良好的吞吐量性能。
減小陣列尺寸和禁止執(zhí)行單元的最終結(jié)果為減小每條指令觸發(fā)的電容。然而,如果設(shè)計本來就更小的核,則無法如此大程度地減小開關(guān)電容。盡管不用的執(zhí)行硬件可以被門控掉,但是核的物理尺寸沒有變化,因此與該仍然活動的硬件塊相關(guān)聯(lián)的布線長度仍長于小核。
通過檢查大的亂序微處理器的平面布置圖并確定可以將多少個可選的性能電路關(guān)閉以將處理器轉(zhuǎn)換為小的有序機器(記住,這些塊不能被物理去除),由此可以評估每條指令能量的可能減少。隨后可以量化被關(guān)閉的處理器核面積的百分比,該百分比可能接近開關(guān)電容的減少。從方程(2),每條指令能量大約與開關(guān)電容的數(shù)量成正比。
大約估算的結(jié)果為,在某些情形中,多達50%的開關(guān)電容可以被關(guān)閉,導(dǎo)致每條指令能量的減少為1×至2×。在一些實施例中,除了時鐘門控之外,使用例如動態(tài)睡眠晶體管和體偏壓的漏電控制技術(shù)有助于減少每條指令消耗的能量。
現(xiàn)在參考圖3,示出了根據(jù)一個實施例包括由可選性能電路配置的核的處理器的示意性圖示。圖3處理器可包括四個核,即核1 320、核2 370、核3 380和核4 390。在其他實施例中,可以使用比四個核更多或更少的核。核1 320顯示各種可選的性能電路。調(diào)度程序A 334可耦合到可選調(diào)度程序B 336,該可選調(diào)度程序B 336在接通時可以提高性能。執(zhí)行單元1 340可以耦合到可選執(zhí)行單元2至4 342、344、346,這些可選執(zhí)行單元在接通時可以提高性能。零級(L0)高速緩存A322可以耦合到L0高速緩存B 324,該L 0高速緩存B 324接通時可以提高性能。TLB A 326可以耦合到TLB B 328,該TLB B 328接通時可以提高性能。重排序緩沖器(ROB)338可具有可變數(shù)目的線路,或者可以全部關(guān)閉以抑制亂序執(zhí)行。最后,與其他管線級330分離的預(yù)拾取級332在被上電時可以執(zhí)行預(yù)測拾取。在其他實施例中,可以使用其他可選性能電路。
節(jié)流模塊310可再次用于收集信息并確定執(zhí)行軟件程序中存在的并行數(shù)量。節(jié)流模塊310可以與結(jié)合圖1和2所述節(jié)流模塊相似。每次節(jié)流模塊310確定程序中并行的數(shù)量時,該節(jié)流模塊可通過信號線312、314、316、和318指示核320、370、380、和390改變上電或下電的可選性能電路數(shù)目。在一個實施例中,信號線312、314、316、和318還可以用于接通或關(guān)閉核320、370、380、和390。在一個實施例中,如果當(dāng)前的并行數(shù)量超過先前數(shù)量的值大于閾值,則該節(jié)流模塊可通過減小每個核內(nèi)被接通的可選性能電路而在更大數(shù)目的這些核上運行這些線程,由此轉(zhuǎn)變到運行更大數(shù)目的線程。先前關(guān)閉的核可以被接通以支持更大數(shù)目的線程。類似地,如果當(dāng)前的并行數(shù)量低于預(yù)先數(shù)量的值大于閾值,則節(jié)流模塊可通過增加某些核內(nèi)被接通的可選性能電路而在更少數(shù)目的這些核上運行這些線程,由此轉(zhuǎn)變到運行更少數(shù)目的線程。先前接通的核可以被關(guān)閉,因為不再需要這些核以支持更少數(shù)目的線程。
已經(jīng)提出各種形式的預(yù)測控制以減小由于錯誤預(yù)測指令例如錯誤預(yù)測分支之后的指令而浪費的能量。附加的能量源于被觸發(fā)以處理錯誤預(yù)測指令的電容。盡管錯誤預(yù)測指令的結(jié)果可以被拋棄,但是能量已經(jīng)耗費。通過將其充電到下一個正確預(yù)測(退回)指令,由此可以解釋該能量。
管線門控是一種避免管線填滿由于一個或多個低置信度分支預(yù)測而可能被拋棄的指令的技術(shù)。在使用預(yù)測控制的一個實施例中,芯片級多處理器可按下述工作。對于低的線程并行,使用增大數(shù)量的預(yù)測運行少數(shù)核,以得到良好的標(biāo)量性能。對于高的線程并行,在各個核上使用減小數(shù)量的預(yù)測運行許多核,以得到良好的吞吐量性能。
尺寸可變的核技術(shù)和預(yù)測控制之間可能存在某些交疊,因為減小調(diào)度程序和重排序緩沖器入口的數(shù)目還減小了可以預(yù)測的指令的數(shù)目。例如高速緩存、TLB和分支預(yù)測器的其他處理器資源的尺寸對可能的預(yù)測數(shù)量的影響不會這么大。
現(xiàn)在參考圖4,示出了根據(jù)本發(fā)明一個實施例的包括由可選的預(yù)測電路配置的核的處理器的示意性圖示。圖4處理器可包括四個核,即核1 420、核2 470、核3 480和核4 490。在其他實施例中,可以使用比四個核更多或更少的核。核1 420顯示各種可選的預(yù)測電路。預(yù)拾取級430可用于預(yù)測拾取指令。分支預(yù)測器434可用于支持程序分支的預(yù)測執(zhí)行。在某些實施例中,其他預(yù)測器436可以是回路預(yù)測器或其他形式的預(yù)測器以支持其他形式的預(yù)測執(zhí)行。在其他實施例中,可以使用另外的可選的預(yù)測電路。
節(jié)流模塊410可再次用于收集信息并確定執(zhí)行軟件程序中存在的并行數(shù)量。節(jié)流模塊410通常與結(jié)合圖1、2和3所述節(jié)流模塊相似地工作。每次節(jié)流模塊410確定程序中并行的數(shù)量時,該節(jié)流模塊可通過信號線412、414、416、和418指示核420、470、480、和490改變上電或下電的可選預(yù)測電路的數(shù)目。在一個實施例中,信號線412、414、416、和418還可以用于接通或關(guān)閉核420、470、480、和490。在一個實施例中,如果當(dāng)前的并行數(shù)量超過先前數(shù)量的值大于閾值,則該節(jié)流模塊可通過減小每個核內(nèi)被接通的可選預(yù)測電路而在更大數(shù)目的這些核上運行這些線程,由此轉(zhuǎn)變到運行更大數(shù)目的線程。先前關(guān)閉的核可以被接通以支持更大數(shù)目的線程。類似地,如果當(dāng)前的并行數(shù)量低于預(yù)先數(shù)量的值大于閾值,則節(jié)流模塊可通過增加某些核內(nèi)被接通的可選預(yù)測電路而在更少數(shù)目的這些核上運行這些線程,由此轉(zhuǎn)變到運行更少數(shù)目的線程。先前接通的某些核可以被關(guān)閉,因為不再需要這些核以支持更少數(shù)目的線程。
對于結(jié)合圖1、2、3和4上述的各種技術(shù),節(jié)流模塊可以調(diào)節(jié)多處理器的工作以將總芯片功率維持在固定功率預(yù)算內(nèi)。通過與每秒退回的指令的總數(shù)成反比地改變每條指令能量數(shù)量,節(jié)流模塊硬件可滿足方程(3)。響應(yīng)于過功率的情形,在諸多實施例中節(jié)流模塊可以采取下述動作中的一個或多個降低電壓和頻率(對于圖1的電壓和頻率縮放的情形),將線程從大核遷移到小核(對于圖2的非對稱核的情形),減小可選性能電路的電容(對于圖3的尺寸可變的核的情形),或者減小預(yù)測數(shù)量(對于圖4的預(yù)測控制的情形)。
在各種情形中,軟件程序可將處理器視為大的對稱的芯片級多處理器,盡管出現(xiàn)不正常的性能,即由于軟件請求硬件同時運行更多線程而使得現(xiàn)有線程變得更慢,即使最終的吞吐量增大。采用這種方法,為目前的共用存儲器多處理器編程模型編寫的軟件可以繼續(xù)運行而無需調(diào)整。
現(xiàn)在參考圖5,示出了根據(jù)本發(fā)明一個實施例的包括核的處理器以及節(jié)流模塊的細節(jié)的示意性圖示。M個處理器核1至M 502至508在多個實施例中可以是可由電壓和頻率配置的圖1的核、處理功率和功耗變化的圖2的大核和小核、可由可選性能電路配置的圖3的核、可由可選預(yù)測電路配置的圖4的核、或者部分或所有這些類型的核的混合。在其他實施例中還可以使用其他類型的核。
監(jiān)視器1至M 512至518可以監(jiān)視相關(guān)核和輔助處理器電路的一個或多個屬性。在一些實施例中,這些屬性可包括該核是否在運行或者停止、每個時鐘周期退回的指令的瞬時數(shù)目、核的特定功能塊是活動的還是空閑的、除了核內(nèi)的功能決之外的處理器的特定功能塊是活動的還是空閑的、以及核的源電流和溫度(或者管芯溫度)。除了核內(nèi)的功能塊之外的處理器的功能塊可包括例如共用高速緩存或者存儲控制器的電路。可以通過電流傳感器電阻和模數(shù)(A/D)轉(zhuǎn)換器測量該源電流??梢酝ㄟ^熱敏二極管和A/D轉(zhuǎn)換器測量該溫度。各個監(jiān)視器1至M512至518的輸出可以是所有或者某些部分這些屬性的監(jiān)測值。
轉(zhuǎn)換至功率的邏輯530可從監(jiān)視器1至M 512至518接收一個或幾個監(jiān)測值。在各種實施例中,監(jiān)測值可以轉(zhuǎn)換成功耗的測量。在監(jiān)測值反映核是否在運行或者停止的實施例中,通過將核運行(或者停止)狀態(tài)乘以當(dāng)核處于運行(或者停止)狀態(tài)時每個時鐘耗費的能量的平均數(shù)量,該監(jiān)測值可以轉(zhuǎn)換成功耗。隨后可以對處理器內(nèi)的所有核的這些乘積求和。在監(jiān)測值反映每個時鐘周期退回的指令的瞬時數(shù)目的實施例中,通過將指令數(shù)目乘以每個時鐘每條指令耗費的能量的平均數(shù)量,該監(jiān)測值可以轉(zhuǎn)換成功耗。隨后可以對處理器內(nèi)的所有核的這些乘積求和。在監(jiān)測值反映核的特定功能塊是否是活動的或者空閑的實施例中(或者在某些實施例中,反映除了核內(nèi)的功能塊之外的處理器的特定功能塊是否是活動或者空閑的),通過將該活動(或者空閑)狀態(tài)乘以決處于活動(或者空閑)狀態(tài)時每個時鐘耗費的能量的平均數(shù)量,該監(jiān)測值可以轉(zhuǎn)換成功耗。隨后可以對各個核中的所有塊以及處理器內(nèi)的所有核的這些乘積求和。當(dāng)考慮不在該核內(nèi)的塊時,該乘積可包括在該求和內(nèi)。在各個這些實施例中,通過乘以正比于時鐘頻率與源電壓平方的乘積的值而針對電壓和頻率調(diào)整所得到的總和。
在監(jiān)測值反映各個核的源電流的實施例中,通過將源電流乘以源電壓,該監(jiān)測值可以轉(zhuǎn)換成功耗。
在監(jiān)測值反映核或管芯溫度的實施例中,圖5的電路可以用于維持幾乎恒定的核或者管芯溫度,而不是維持幾乎恒定的功耗。
計算差值的邏輯534可用于計算轉(zhuǎn)換至功率的邏輯530的轉(zhuǎn)換功耗(或者管芯溫度)輸出與期望的功耗值(或者期望的管芯溫度值)之間的差值。該差值可以用作“誤差”數(shù)值。
積分邏輯538可在一個實施例中提供與由計算差值的邏輯534供給的誤差數(shù)值隨時間的積分成正比的積分數(shù)值。在一個實施例中,可以使用累加器計算該積分,其中可以使用加法器和寄存器實施該累加器。該累加器在上界和下界可以飽和以避免溢出。在一個實施例中,該累加器輸出可以是固定點的二進制數(shù),例如2至6個整數(shù)位和2至16個小數(shù)位??梢詸z查累加器的最高有效位,這可以有利地實現(xiàn)使輸出變化緩慢的性能。使用積分邏輯538可以幫助慢反饋回路550從而隨著時間將該誤差數(shù)值減小到零。當(dāng)誤差數(shù)值為功率時,使用該積分邏輯538是最為有利的,這是因為不同時鐘周期之間的瞬時功耗可能發(fā)生顯著變化。
在其他實施例中,積分邏輯538可以被邏輯替代以得到與該誤差數(shù)值成比例的數(shù)值,當(dāng)誤差數(shù)值是溫度時這是有利的。在另外實施例中,該邏輯可以得到與該誤差數(shù)值的時間微分成比例的數(shù)值,或者所有上述數(shù)值的某些線性組合。
采樣邏輯544可以用于某些實施例。來自積分邏輯538的積分數(shù)值可以隨著各個時鐘周期而改變,即使該積分數(shù)值的提取可能相對于圖5邏輯的速度發(fā)生緩慢的變化。某些控制技術(shù)可以在每個時鐘周期改變其動作而僅需很少的系統(tǒng)成本。這種情況下可能無需采樣。在其他控制技術(shù)中,當(dāng)積分邏輯538的輸出接近轉(zhuǎn)變點時,有利地使用采樣以幫助減小隨各個時鐘振蕩的數(shù)值。
在一個實施例中,固定采樣技術(shù)可以用于采樣邏輯544。每固定數(shù)目N個時鐘周期采樣一次該數(shù)值。這可以防止該數(shù)值變化得比每N個時鐘周期一次快。然而,這種技術(shù)無法實現(xiàn)在短于N個時鐘周期的時間段內(nèi)進行控制,且當(dāng)與N個時鐘周期的時間段相比積分緩慢時該技術(shù)可以最佳地工作。
在另外實施例中,滯后技術(shù)可以用于采樣邏輯544。只有當(dāng)輸入和輸出數(shù)值超過閾值T時,采樣邏輯544的輸出才改變。當(dāng)差值超過T時,輸出數(shù)值被輸入數(shù)值替代,否則輸出數(shù)值可保持不變。
對于使用慢反饋回路550的實施例,可以使用控制邏輯548。在一個實施例中,例如核通過改變源電壓和頻率可以改變功耗的圖1的實施例,控制邏輯548可以指示源電壓和頻率的變化。在這些實施例中,應(yīng)該注意,電源電壓的變化可能花費相對長的時間,例如100毫秒。在一個實施例中,表或邏輯決可以用于設(shè)定電源電壓和頻率。表II給出了用于各種控制值(CV)的數(shù)值的這種表或邏輯塊的一個示例。
表II
在一個實施例中,例如線程可以分配到大核和小核的圖2的實施例,控制邏輯948可以將線程分配到核并根據(jù)對于軟件是透明的控制值而遷移線程。線程遷移機制可包括用于將“邏輯”處理器核映射到“物理”處理器核的表或邏輯塊。該線程遷移機制還可包括需要的發(fā)出遷移信號的中斷、復(fù)制處理器狀態(tài)的微代碼或等效邏輯、以及各種處理器核之間的互連網(wǎng)絡(luò)。軟件看到的邏輯處理器的數(shù)目可以等于正在運行的小核的數(shù)目。當(dāng)功率預(yù)算允許時,大核可以替代小核。在一個實施例中,用于預(yù)算作為控制值函數(shù)的大核使用的表或邏輯決示于表III。
表III
這里進行了一個簡化的假設(shè),即,當(dāng)大核無法使用時,線程可以在小核上運行。
在一個實施例中,例如線程可以分配到其資源可以動態(tài)變化的核的圖3的實施例,控制邏輯548可以給出改變核的功能單元的數(shù)量或者容量的控制值。在改變核容量要求陣列被填充或往回寫或者管線需要被重新填充的一些實施例中,用于這些改變的時間范圍可以為10微妙。可以使用表或邏輯決預(yù)算作為控制值函數(shù)的核功能單元的使用。在一個實施例中,用于預(yù)算作為控制值函數(shù)的功能單元使用的表或邏輯決示于表IV,其中該功能單元可以是核內(nèi)的執(zhí)行單元。
表IV
在一個實施例中,例如線程可以分配到其預(yù)測數(shù)量可動態(tài)變化的核的圖4實施例,控制邏輯548可以給出改變核內(nèi)容許的預(yù)測數(shù)量的控制值??梢允褂帽砘蜻壿媺K預(yù)算作為控制值函數(shù)的核內(nèi)預(yù)測數(shù)量的使用。在一個實施例中,用于調(diào)整作為控制值函數(shù)的預(yù)測數(shù)量的表或邏輯塊示于表V,其中預(yù)測的數(shù)量可以由核中在非預(yù)測指令之前預(yù)測執(zhí)行指令的數(shù)目給出。
表V
在許多實施例中,處理器核可以包括多個上述屬性。例如,處理器可以具有能夠進行電壓和頻率縮放的核,且還具有可調(diào)整數(shù)量的預(yù)測執(zhí)行。在一個實施例中,圖2的大的A核和小的B核還可以具有如圖1所示的電壓和頻率縮放。對于一個實施例,電壓和頻率可以固定,將大的A核配置成運行于高電壓而小的B核配置成運行于低電壓。在另外實施例中,大的A核和小的B核之間的電壓和頻率調(diào)整范圍可以不同。為了輔助大的A核和小的B核之間的遷移,線程可以從大的A核遷移到小的B核,而小的B核最初運行于高的電壓和頻率。一旦大的A核不運行,則B核的電壓和頻率可以隨后降低。
此外,可以使用表或邏輯塊將線程分配到大的A核或小的B核,并進一步分配核的電壓和頻率。在一個實施例中,用于作為控制值函數(shù)進行這些調(diào)整的表或邏輯塊示于表VI。
表VI
有利地在慢反饋回路550附近維持略微恒定的增益,其中在該表或邏輯塊內(nèi)通過使各級的功率效應(yīng)的大小相似可以實現(xiàn)這一點。
在某些實施例中,快反饋回路560可以與先前討論的慢反饋回路550結(jié)合使用。在一個實施例中,可以使用時鐘節(jié)流540,即使時鐘節(jié)流不會影響每條指令能量數(shù)量。當(dāng)與前述的一個或多個慢反饋回路550結(jié)合使用時,使用時鐘節(jié)流540是有利的。
在某些情況下,快反饋回路560可以施加了短潛伏期以防止過功率情形,且該施加只有當(dāng)慢反饋回路550有時間作出響應(yīng)時才保持有效。在未實施快反饋回路960的實施例中,處理器及其功率發(fā)送系統(tǒng)應(yīng)該設(shè)計成能夠處理持續(xù)時間與慢反饋回路550的響應(yīng)時間一樣長的過功率情形。當(dāng)添加快反饋回路560時,過功率情形持續(xù)時間不會長于快反饋回路560的響應(yīng)時間,該響應(yīng)時間的范圍為10納秒。
時鐘節(jié)流540可以門控核時鐘接通和關(guān)閉特定的負載周期,使用在計算差值的邏輯534中計算得到的誤差數(shù)值作為其輸入。在一個簡單的實施例中,當(dāng)誤差數(shù)值超過固定閾值時,時鐘可以停止特定數(shù)目的周期。該計算在各個時鐘周期被執(zhí)行并完全管線化。可以選擇特定數(shù)目的周期以將功率限制為略高于期望功率(其允許慢反饋回路550作出響應(yīng)),但是不大于最大功率。
在另外實施例中,時鐘節(jié)流550可以響應(yīng)于由計算差值的邏輯535供給的誤差數(shù)值的大小(例如處理器目前的運行功率比功率閾值高多少)而調(diào)制該負載周期。在一個實施例中,負載周期和誤差數(shù)值之間關(guān)系如表VII所示。
表VII
現(xiàn)在參考圖6,示出了根據(jù)本發(fā)明一個實施例的轉(zhuǎn)變到不同核配置的流程圖。處理開始于塊610,其包括將各種軟件線程分配到可用的核。在一個實施例中,線程的數(shù)目被確定,且各個線程分配到一個核。在某些實施例中,這種確定可以由軟件例如操作系統(tǒng)完成。在其他實施例中,這種確定可以由硬件邏輯,或者由硬件與軟件的組合完成。在塊614,監(jiān)測各個核消耗的功率數(shù)量,并計算觀測的功耗和期望的功耗之間的誤差數(shù)值。在各種實施例中,可以使用結(jié)合圖5上述討論的任意監(jiān)測技術(shù)。接著在塊618中,塊614的誤差數(shù)值可經(jīng)歷積分或采樣技術(shù)之一或二者兼有,如結(jié)合圖5如上所述。在某些實施例中,塊618是可選的。塊618的輸出可以是控制值,該控制值抑制核配置直到該誤差數(shù)值在一時間段內(nèi)被確定為基本上足以保證改變核配置的性能懲罰時才改變。
在決定塊622,確定該時間內(nèi)的誤差數(shù)值是否足以保證改變核的配置。如果差值不夠大,則該處理在決定塊622之后沿“否”(NO)路徑且該處理重復(fù)。然而,如果該差值足夠大,則該處理在決定塊622之后沿“是”(YES)路徑。
在塊626,可以根據(jù)該控制值改變電壓和頻率。在一個實施例中,可以如表II所示針對控制值改變電壓和頻率。在一個實施例中,各種核的電壓和頻率可以全部相似地改變。在其他實施例中,可以不同地改變各種核上的電壓和頻率。在任何情形下,該處理在塊610重復(fù)。
現(xiàn)在參考圖7,示出了根據(jù)本發(fā)明一個實施例的轉(zhuǎn)變到不同核配置的流程圖。處理開始于塊710,其包括將各種軟件線程分配到可用的核。在一個實施例中,線程的數(shù)目被確定,且各個線程分配到一個核。在某些實施例中,這種確定可以由軟件例如操作系統(tǒng)完成。在其他實施例中,這種確定可以由硬件邏輯,或者由硬件與軟件的組合完成。在塊714,監(jiān)測各個核消耗的功率數(shù)量,并計算觀測的功耗和期望的功耗之間的誤差數(shù)值。在各種實施例中,可以使用結(jié)合圖5上述的任意監(jiān)測技術(shù)。接著在塊718中,塊714的誤差數(shù)值可經(jīng)歷積分或采樣技術(shù)之一或二者兼有,如結(jié)合圖5如上所述。在某些實施例中,塊718是可選的。塊718的輸出可以是控制值,該控制值抑制核配置直到該誤差數(shù)值在一時間段內(nèi)被確定為基本上足以保證改變核配置的性能懲罰時才改變。
在決定塊722,確定該時間內(nèi)的誤差數(shù)值是否足以保證改變核的配置。如果差值不夠大,則該處理在決定塊722之后沿“否”(NO)路徑且該處理重復(fù)。然而,如果該差值足夠大,則該處理在決定塊722之后沿“是”(YES)路徑。
在塊726,可以根據(jù)控制值而將線程重新分配到核。在一個實施例中,可以如上表III所示針對控制值將線程重新分配到特定數(shù)目的大核。在一個實施例中,大核的數(shù)目示出于表III,且不在大核上運行的線程可以重新分配到小核。在其他實施例中,可以使用其他方案將線程重新分配到核。在任何情形下,該處理在塊710重復(fù)。
現(xiàn)在參考圖8,示出了根據(jù)本發(fā)明一個實施例的轉(zhuǎn)變到不同核配置的流程圖。處理開始于塊810,其包括將各種軟件線程分配到可用的核。在一個實施例中,線程的數(shù)目被確定,且各個線程分配到一個核。在某些實施例中,這種確定可以由軟件例如操作系統(tǒng)完成。在其他實施例中,這種確定可以由硬件邏輯,或者由硬件與軟件的組合完成。在塊814,監(jiān)測各個核消耗的功率數(shù)量,并計算觀測的功耗和期望的功耗之間的誤差數(shù)值。在各種實施例中,可以使用結(jié)合圖5上述討論的任意監(jiān)測技術(shù)。接著在塊818中,塊814的誤差數(shù)值可經(jīng)歷積分和采樣技術(shù)之一或二者兼有,如結(jié)合圖5如上所述。在某些實施例中,塊818是可選的。塊818的輸出可以是控制值,該控制值抑制核配置直到該誤差數(shù)值在一時間段內(nèi)被確定為基本上足以保證改變核配置的性能懲罰時才改變。
在決定塊822,確定該時間內(nèi)的誤差數(shù)值是否足以保證改變核的配置。如果差值不夠大,則該處理在決定塊822之后沿“否”(NO)路徑且該處理重復(fù)。然而,如果該差值足夠大,則該處理在決定塊822之后沿“是”(YES)路徑。
在塊826,可以根據(jù)控制值如表IV所示接通或關(guān)閉核內(nèi)可選電路的數(shù)量。在一個實施例中,可以如上表IV所示針對控制值改變上電或下電的執(zhí)行單元的數(shù)量。在其他實施例中,可以根據(jù)控制值接通和關(guān)閉其他可選的性能電路。這些其他可選的性能電路可包括調(diào)度程序、高速緩存、轉(zhuǎn)換后備緩沖器、調(diào)度程序、和重排序緩沖器。在任何情形下,該處理在決810重復(fù)。
現(xiàn)在參考圖9,示出了根據(jù)本發(fā)明一個實施例的轉(zhuǎn)變到不同核配置的流程圖。處理開始于塊910,其包括將各種軟件線程分配到可用的核。在一個實施例中,線程的數(shù)目被確定,且各個線程分配到一個核。在某些實施例中,這種確定可以由軟件例如操作系統(tǒng)完成。在其他實施例中,這種確定可以由硬件邏輯,或者由硬件與軟件的組合完成。在塊914,監(jiān)測各個核消耗的功率數(shù)量,并計算觀測的功耗和期望的功耗之間的誤差數(shù)值。在各種實施例中,可以使用結(jié)合圖5上述討論的任意監(jiān)測技術(shù)。接著在塊918中,塊914的誤差數(shù)值可經(jīng)歷積分和采樣技術(shù)之一或二者兼有,如結(jié)合圖5如上所述。在某些實施例中,決918是可選的。塊918的輸出可以是控制值,該控制值抑制核配置直到該誤差數(shù)值在一時間段內(nèi)被確定為基本上足以保證改變核配置的性能懲罰時才改變。
在決定塊922,確定該時間內(nèi)的誤差數(shù)值是否足以保證改變核的配置。如果差值不夠大,則該處理在決定塊922之后沿“否”(NO)路徑且該處理重復(fù)。然而,如果該差值足夠大,則該處理在決定塊922之后沿“是”(YES)路徑。
在塊926,可以根據(jù)控制值如表V所示改變核內(nèi)預(yù)測數(shù)量。在一個實施例中,可以如上表V所示針對控制值改變預(yù)測執(zhí)行的指令的數(shù)目。在其他實施例中,可以使用其他方法根據(jù)控制值改變預(yù)測數(shù)量。改變預(yù)測數(shù)量的這些其他方法可包括上電或下電預(yù)拾取單元、分支預(yù)測器、或者其他形式的預(yù)測器。在任何情形下,該處理在決910重復(fù)。
現(xiàn)在參考圖10A和10B,示出了根據(jù)本發(fā)明兩個實施例的包括具有節(jié)流和多個核的處理器的系統(tǒng)的示意性圖示。圖10A系統(tǒng)一般示出了處理器、存儲器、和輸入/輸出裝置通過系統(tǒng)總線互連的系統(tǒng),而圖10B系統(tǒng)一般示出了處理器、存儲器、和輸入/輸出裝置通過多個點對點接口互連的系統(tǒng)。
圖10A系統(tǒng)可包括一個或者多個處理器,此處為了清楚僅示出了兩個處理器40、60。處理器40、60可包括一級高速緩存42、62。圖10A系統(tǒng)可具有通過總線接口44、64、12、8與系統(tǒng)總線6連接的多個功能。在一個實施例中,系統(tǒng)總線6可以是用于由IntelCorporation制造的Pentium系列微處理器的前端總線(FSB)。在其他實施例中,可以使用其他總線。在某些實施例中,存儲控制器34和總線橋32可統(tǒng)稱為芯片組。在某些實施例中,芯片組的功能在物理芯片之間的劃分可能不同于圖10A實施例所示。
存儲控制器34允許處理器40、60從系統(tǒng)存儲器10以及從基本輸入/輸出系統(tǒng)(BIOS)可擦除編程只讀存儲器(EPROM)36進行讀寫。在某些實施例中BIOS EPROM 36可使用閃爍存儲器。存儲控制器34可包括總線接口8以允許存儲器讀寫數(shù)據(jù)在系統(tǒng)總線6上向總線代理(bus agent)傳送和從總線代理傳送。存儲控制器34還通過高性能圖形接口39與高性能圖形電路38連接。在某些實施例中,高性能圖形接口39可以是先進圖形端口AGP接口。存儲控制器34可以將來自系統(tǒng)存儲器10的數(shù)據(jù)通過高性能圖形接口39引導(dǎo)至高性能圖形電路38。
圖10B系統(tǒng)可包括一個或者多個處理器,此處為了清楚僅示出了兩個處理器70、80。處理器70、80可包括局部存儲控制中心(MCH)72、82以連接存儲器2、4。處理器70、80可以使用點對點接口電路78、88通過點對點接口50交換數(shù)據(jù)。每個處理器70、80可以使用點對點接口電路76、94、86、98通過各個點對點接口52、54與芯片組90交換數(shù)據(jù)。芯片組90也可以通過高性能圖形接口92與高性能圖形電路38交換數(shù)據(jù)。
在圖10A系統(tǒng)中,總線橋32可以允許系統(tǒng)總線6和總線16之間的數(shù)據(jù)交換,該總線在某些實施例中是工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線或者外圍元件互連(PCI)總線。在圖10B系統(tǒng)中,芯片組90可以通過總線接口96與總線16交換數(shù)據(jù)。在任一系統(tǒng)中,在總線16上可能存在各種輸入/輸出(I/O)裝置14,在一些實施例中該裝置包括低性能圖形控制器、視頻控制器、以及網(wǎng)絡(luò)控制器。在某些實施例中,另一總線橋18可以用于允許總線16和總線20之間的數(shù)據(jù)交換。在一些實施例中,總線20可以是小型計算機系統(tǒng)接口(SCSI)總線、集成驅(qū)動電子(IDE)總線、或者通用串行總線(USB)總線。附加的I/O裝置可以與總線20連接。這些附加的I/O裝置包括鍵盤和光標(biāo)控制裝置22(包括鼠標(biāo))、音頻I/O 24、通信裝置26(包括調(diào)制解調(diào)器和網(wǎng)絡(luò)接口)以及數(shù)據(jù)存儲裝置28。軟件代碼30可以存儲于數(shù)據(jù)存儲裝置28。在某些實施例中,數(shù)據(jù)存儲裝置28可以是固定磁盤、軟盤驅(qū)動器、光盤驅(qū)動器、磁光盤驅(qū)動器、磁帶、或者包括閃爍存儲器的非易失性存儲器。
在前述說明書中,已經(jīng)參照具體實施例描述了本發(fā)明。然而,在不背離由所附權(quán)利要求界定的本發(fā)明更寬范圍的情況下可以進行各種改進和變化。因此說明書和附圖被視為是用于說明而非限制本發(fā)明。
權(quán)利要求
1.一種處理器,包括監(jiān)測邏輯,監(jiān)測所述處理器核屬性的數(shù)值;轉(zhuǎn)換邏輯,響應(yīng)于所述核的所述屬性確定所述處理器功耗的測量;以及控制邏輯,響應(yīng)于所述功耗的測量調(diào)整所述處理器的每條指令能量的度量。
2.權(quán)利要求1的處理器,其中所述核的所述屬性為核運行狀態(tài)。
3.權(quán)利要求2的處理器,其中通過將所述核運行狀態(tài)乘以當(dāng)所述核處于所述核運行狀態(tài)時每個時鐘耗費的能量數(shù)量,確定所述功耗的測量。
4.權(quán)利要求1的處理器,其中所述核的所述屬性為每個時鐘退回的指令的數(shù)目。
5.權(quán)利要求4的處理器,其中通過將所述每個時鐘退回的指令的數(shù)目乘以每個時鐘每條指令耗費的能量數(shù)量,確定所述功耗的測量。
6.權(quán)利要求1的處理器,其中所述核的所述屬性為所述核的功能塊的活動狀態(tài)。
7.權(quán)利要求6的處理器,其中通過將所述功能塊的所述活動狀態(tài)乘以當(dāng)所述功能塊處于所述活動狀態(tài)時每個時鐘耗費的能量數(shù)量,確定所述功耗的測量。
8.權(quán)利要求1的處理器,其中所述屬性為核源電流。
9.權(quán)利要求8的處理器,其中所述功耗的測量包括所述核源電流。
10.權(quán)利要求1的處理器,其中所述控制邏輯響應(yīng)于所述功耗的測量而調(diào)整所述處理器的工作電壓和工作頻率。
11.權(quán)利要求1的處理器,其中所述控制邏輯響應(yīng)于所述功耗的測量而在所述處理器的大核和小核之間遷移程序的線程。
12.權(quán)利要求1的處理器,其中所述控制邏輯響應(yīng)于所述功耗的測量而接通所述處理器的所述核內(nèi)的可選性能電路。
13.權(quán)利要求1的處理器,其中所述控制邏輯響應(yīng)于所述功耗的測量而接通所述處理器的所述核內(nèi)的可選預(yù)測電路。
14.權(quán)利要求1的處理器,還包括差值邏輯以計算所述功耗的測量和期望功耗之間的差值。
15.權(quán)利要求14的處理器,還包括積分電路以確定所述功耗的測量和期望功耗之間的所述差值的時間積分。
16.權(quán)利要求14的處理器,還包括采樣電路以根據(jù)采樣方法將所述功耗的測量供給到所述控制邏輯。
17.權(quán)利要求1的處理器,還包括時鐘節(jié)流電路以允許快反饋控制。
18.一種處理器,包括第一多個第一類型的核;第二多個第二類型的核;以及模塊,將線程分配到所述第一多個的所述第一類型核或者所述第二多個的所述第二類型核之一。
19.權(quán)利要求18的處理器,其中所述模塊根據(jù)功率預(yù)算分配所述線程。
20.權(quán)利要求18的處理器,其中所述模塊根據(jù)分配表分配所述線程。
21.權(quán)利要求18的處理器,其中所述模塊包括線程遷移邏輯,將新線程分配到所述第二多個核之一并將已有線程從所述第一多個核之一遷移到所述第二多個核之一。
22.權(quán)利要求21的處理器,其中所述線程遷移邏輯包括用于將邏輯核映射到物理核的表。
23.權(quán)利要求21的處理器,其中所述線程遷移邏輯響應(yīng)于操作系統(tǒng)調(diào)度程序。
24.權(quán)利要求18的處理器,其中所述第一類型的核的性能故意高于所述第二類型的核的性能。
25.權(quán)利要求18的處理器,其中所述第一類型的核的性能通過配置高于所述第二類型的核的性能。
26.一種方法,包括將線程集分配到處理器核集;監(jiān)測所述處理器核的消耗功率;計算所述消耗功率和期望功率之間的誤差數(shù)值;以及基于所述誤差數(shù)值從所述分配進行轉(zhuǎn)變。
27.權(quán)利要求26的方法,其中所述轉(zhuǎn)變包括在所述處理器核集內(nèi)功率大的核和功率小的核之間改變所述線程集的所述分配。
28.權(quán)利要求26的方法,其中所述轉(zhuǎn)變包括通過配置所述處理器核集內(nèi)所述功率大的核和所述功率小的核而改變所述功率大的核和所述功率小的核之間所述線程集的分配。
29.權(quán)利要求26的方法,還包括對所述誤差數(shù)值隨時間積分。
30.權(quán)利要求26的方法,還包括隨時間采樣所述誤差數(shù)值。
31.一種方法,包括確定運行線程集;以及將各個所述線程分配到處理器核集之一,其中所述分配響應(yīng)于功率預(yù)算。
32.權(quán)利要求31的方法,其中所述處理器核集包括能夠作為第一類型和第二類型核的可配置核。
33.權(quán)利要求31的方法,其中所述處理器核集包括設(shè)計成第一類型和第二類型核的核。
34.權(quán)利要求31的方法,還包括將新線程分配到來自所述處理器核集的第二類型核,并將所述運行線程集之一從所述處理器核集內(nèi)的第一類型核遷移到所述第二類型核。
35.權(quán)利要求34的方法,其中所述遷移由線程遷移邏輯執(zhí)行。
36.權(quán)利要求34的方法,其中所述遷移響應(yīng)于操作系統(tǒng)調(diào)度程序。
37.一種系統(tǒng),包括處理器,包括監(jiān)測邏輯以監(jiān)測所述處理器核的屬性的數(shù)值,轉(zhuǎn)換邏輯以響應(yīng)于所述核的所述屬性確定所述處理器的功耗測量,以及控制邏輯以響應(yīng)于所述功耗測量調(diào)整所述處理器的每條指令能量的度量;音頻輸入/輸出邏輯;以及接口,將所述處理器耦合到所述音頻輸入/輸出邏輯。
38.權(quán)利要求37的系統(tǒng),其中所述核的所述屬性為核運行狀態(tài),且其中通過將所述核運行狀態(tài)乘以當(dāng)所述核處于所述核運行狀態(tài)時每個時鐘耗費的能量數(shù)量,確定所述功耗的測量。
39.權(quán)利要求37的系統(tǒng),其中所述核的所述屬性為每個時鐘退回的指令數(shù)目,且其中通過將所述每個時鐘退回的指令數(shù)目乘以每個時鐘每條指令耗費的能量數(shù)量,確定所述功耗的測量。
40.權(quán)利要求37的系統(tǒng),其中所述核的所述屬性為所述核的功能塊的活動狀態(tài),且其中通過將所述功能塊的所述活動狀態(tài)乘以當(dāng)所述功能塊處于所述活動狀態(tài)時每個時鐘耗費的能量數(shù)量,確定所述功耗的測量。
41.權(quán)利要求37的系統(tǒng),其中所述屬性為核源電流,且其中所述功耗的測量包括所述核源電流。
42.權(quán)利要求37的系統(tǒng),其中所述控制邏輯響應(yīng)于所述功耗的測量而調(diào)整所述處理器的工作電壓和工作頻率。
43.權(quán)利要求37的系統(tǒng),其中所述控制邏輯響應(yīng)于所述功耗的測量而在所述處理器的大核和小核之間遷移程序的線程。
44.權(quán)利要求37的系統(tǒng),其中所述控制邏輯響應(yīng)于所述功耗的測量而接通所述處理器的所述核內(nèi)的可選性能電路。
45.權(quán)利要求37的系統(tǒng),其中所述控制邏輯響應(yīng)于所述功耗的測量而接通所述處理器的所述核內(nèi)的可選預(yù)測電路。
45.權(quán)利要求37的系統(tǒng),其中所述處理器還包括差值邏輯以計算所述功耗的測量和期望功耗之間的差值。
45.權(quán)利要求45的系統(tǒng),其中所述處理器還包括積分電路以確定所述功耗的測量和期望功耗之間的所述差值的時間積分。
46.權(quán)利要求45的處理器,還包括采樣電路以根據(jù)采樣方法將所述功耗的測量供給到所述控制邏輯。
47.一種系統(tǒng),包括處理器,包括第一多個第一類型的核;第二多個第二類型的核;以及模塊,將線程分配到所述第一多個的所述第一類型核或者所述第二多個的所述第二類型核之一;音頻輸入/輸出邏輯;以及接口,將所述處理器耦合到所述音頻輸入/輸出邏輯。
48.權(quán)利要求47的系統(tǒng),其中所述模塊根據(jù)功率預(yù)算分配所述線程。
49.權(quán)利要求47的系統(tǒng),其中所述模塊根據(jù)分配表分配所述線程。
50.權(quán)利要求47的系統(tǒng),其中所述模塊包括線程遷移邏輯,將新線程分配到所述第二多個核之一并將已有線程從所述第一多個核之一遷移到所述第二多個核之一。
51.權(quán)利要求50的系統(tǒng),其中所述線程遷移邏輯包括用于將邏輯核映射到物理核的表。
52.一種處理器,包括用于將線程集分配到處理器核集的裝置;用于監(jiān)測所述處理器核的消耗功率的裝置;用于計算所述消耗功率和期望功率之間的誤差數(shù)值的裝置;以及用于基于所述誤差數(shù)值從所述分配進行轉(zhuǎn)變的裝置。
52.權(quán)利要求52的處理器,其中所述用于轉(zhuǎn)變的裝置包括用于在所述處理器核集內(nèi)功率大的核和功率小的核之間改變所述線程集的分配的裝置。
53.權(quán)利要求52的處理器,其中所述用于轉(zhuǎn)變的裝置包括用于通過配置所述處理器核集內(nèi)所述功率大的核和所述功率小的核而改變所述功率大的核和所述功率小的核之間所述線程集的所述分配的裝置。
54.權(quán)利要求52的處理器,還包括用于對所述誤差數(shù)值隨時間積分的裝置。
55.權(quán)利要求52的處理器,還包括用于隨時間采樣所述誤差數(shù)值的裝置。
56.一種處理器,包括用于確定運行線程集的裝置;以及用于將各個所述線程分配到處理器核集之一的裝置,其中所述分配響應(yīng)于功率預(yù)算。
57.權(quán)利要求56的處理器,其中所述處理器核集包括能夠作為第一類型和第二類型核的可配置核。
58.權(quán)利要求56的處理器,其中所述處理器核集包括設(shè)計成第一類型和第二類型核的核。
59.權(quán)利要求56的處理器,還包括用于將新線程分配到來自所述處理器核集的第二類型核的裝置,以及用于將所述運行線程集之一從所述處理器核集內(nèi)的第一類型核遷移到所述第二類型核的裝置。
全文摘要
本發(fā)明揭示了用于改變多核處理器配置的方法和設(shè)備。在一個實施例中,節(jié)流模塊(或者節(jié)流邏輯)可確定當(dāng)前執(zhí)行程序中存在的并行數(shù)量,并改變各種核上該程序的線程的執(zhí)行。如果并行數(shù)量大,則處理器可以配置成在配置成消耗更低功率的核上運行更大數(shù)量的線程。如果并行數(shù)量小,則處理器可以配置成在配置成用于更高標(biāo)量性能的核上運行更小數(shù)量的線程。
文檔編號G06F1/20GK101076770SQ200580032835
公開日2007年11月21日 申請日期2005年9月28日 優(yōu)先權(quán)日2004年9月28日
發(fā)明者E·格羅喬夫斯基, J·沈, H·王, D·奧倫斯坦, G·希菲爾, R·羅寧, M·安納瓦拉姆 申請人:英特爾公司