專(zhuān)利名稱:控制無(wú)線通信系統(tǒng)中正向信道上數(shù)據(jù)速率的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及執(zhí)行數(shù)據(jù)處理的集成電路,如微處理器、微控制器、邏輯電路等,更具體地說(shuō),涉及降低此類(lèi)集成電路的功耗的方法和裝置。
背景技術(shù):
如今的微處理器、微控制器、邏輯電路等(即,處理集成電路)在AC工作期間(例如,當(dāng)電路工作并正在處理指令和/或數(shù)據(jù)時(shí))消耗其大部分功率預(yù)算。盡管存在很多試圖降低處理集成電路未使用部分(例如,處理集成電路的不工作部分)功耗的功率管理技術(shù),但維持此類(lèi)電路工作部分的功率預(yù)算還是很困難。
大多數(shù)預(yù)算處理集成電路工作部分的功耗的傳統(tǒng)技術(shù)依賴于通過(guò)使用復(fù)用器來(lái)減少邏輯觸發(fā)或減少由控制邏輯執(zhí)行的邏輯觸發(fā)。例如,美國(guó)專(zhuān)利6,054,877(其作為整體在此引入作為參考)公開(kāi)了一種可以防止對(duì)無(wú)效數(shù)據(jù)的復(fù)用器(MUX)輸出轉(zhuǎn)換并降低由于此類(lèi)“無(wú)效”MUX輸出轉(zhuǎn)換所造成的AC功耗的“一次轉(zhuǎn)換MUX”。同樣,美國(guó)專(zhuān)利6,237,101(其作為整體在此引入作為參考)也公開(kāi)了一種通過(guò)如果沒(méi)有必要為執(zhí)行當(dāng)前指令而改變控制信號(hào)的值/電平則將控制信號(hào)保持在解碼前一指令期間所確定的值/電平來(lái)降低當(dāng)前指令解碼期間微處理器功耗的技術(shù)。
另一種控制便攜式個(gè)人計(jì)算機(jī)功耗的傳統(tǒng)技術(shù)在美國(guó)專(zhuān)利6,167,524(其作為整體在此引入作為參考)中被公開(kāi)。該美國(guó)專(zhuān)利6,167,524公開(kāi)了,例如,將工作執(zhí)行單元的期望功耗值求和以便確定期望的總功耗是否超出了最佳電池功效值。如果超出,則對(duì)執(zhí)行單元的活動(dòng)量限量(例如,從而功耗保持在最佳電池/變換器效率范圍之內(nèi))(第6欄第47-61行)。每個(gè)執(zhí)行單元的期望功耗值可以基于通過(guò)模擬計(jì)算出的與該執(zhí)行單元關(guān)聯(lián)的平均觸發(fā)功率(第5欄第60行-第6欄第3行)。
這些和其它功率管理技術(shù)都沒(méi)有考慮當(dāng)前時(shí)鐘周期內(nèi)要操作的實(shí)際數(shù)據(jù),和/或沒(méi)有考慮到尤其是一旦指令被分配到執(zhí)行單元中后實(shí)時(shí)的功率平衡。因此,維持處理集成電路工作部分的功率預(yù)算還是很困難。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種節(jié)省處理集成電路功率的方法,該方法包括下列步驟計(jì)算執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的實(shí)際功耗,所述計(jì)算步驟包括根據(jù)所述指令先前執(zhí)行時(shí)所消耗的功率量來(lái)確定預(yù)測(cè)功率;確定對(duì)應(yīng)于先前執(zhí)行的指令的數(shù)據(jù);以及根據(jù)預(yù)測(cè)功率和對(duì)應(yīng)于先前執(zhí)行的指令的數(shù)據(jù)來(lái)計(jì)算要執(zhí)行的指令的實(shí)際功耗;以及如果該執(zhí)行不會(huì)超過(guò)預(yù)定功率水平,則執(zhí)行該指令。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種節(jié)省處理集成電路功率的方法,該方法包括下列步驟計(jì)算執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的實(shí)際功耗,所述計(jì)算步驟包括根據(jù)從對(duì)指令執(zhí)行的模擬中獲得的功率量來(lái)確定預(yù)測(cè)功率;確定在模擬過(guò)程中所使用的數(shù)據(jù);以及使用預(yù)測(cè)功率和在模擬過(guò)程中所使用的數(shù)據(jù)來(lái)計(jì)算要執(zhí)行的指令的實(shí)際功耗;以及如果該執(zhí)行不會(huì)超過(guò)預(yù)定功率水平,則執(zhí)行該指令。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種節(jié)省處理集成電路功率的方法,該方法包括下列步驟計(jì)算執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的功耗;確定執(zhí)行單元的功率預(yù)算;確定完成執(zhí)行由該執(zhí)行單元部分執(zhí)行的指令和數(shù)據(jù)所需的功率量;
根據(jù)完成執(zhí)行該部分執(zhí)行的指令和數(shù)據(jù)所需的功率量和執(zhí)行單元的功率預(yù)算來(lái)計(jì)算執(zhí)行單元的可用功率;將執(zhí)行單元的可用功率與計(jì)算出的執(zhí)行該指令和數(shù)據(jù)的功耗進(jìn)行比較;及如果執(zhí)行單元的可用功率大于計(jì)算出的執(zhí)行該指令和數(shù)據(jù)的功耗,則利用該執(zhí)行單元執(zhí)行所述指令和數(shù)據(jù)。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種節(jié)省處理集成電路功率的方法,該處理集成電路使用了多個(gè)執(zhí)行單元,該方法包括下列步驟將處理集成電路所要消耗的總功率與處理集成電路的功率預(yù)算進(jìn)行比較;及如果所述總功率超出功率預(yù)算,則凍結(jié)多個(gè)執(zhí)行單元中的一個(gè)單元的指令執(zhí)行,從而允許所述指令的執(zhí)行在稍后某個(gè)時(shí)間從執(zhí)行凍結(jié)的地方繼續(xù)。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于數(shù)據(jù)處理系統(tǒng)的執(zhí)行單元,包括局部功率控制器,適于計(jì)算執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的實(shí)際功耗,包括根據(jù)所述指令先前執(zhí)行時(shí)所消耗的功率量來(lái)確定預(yù)測(cè)功率;確定對(duì)應(yīng)于先前執(zhí)行的指令的數(shù)據(jù);以及根據(jù)預(yù)測(cè)功率和對(duì)應(yīng)于先前執(zhí)行的指令的數(shù)據(jù)來(lái)計(jì)算要執(zhí)行的指令的實(shí)際功耗;以及如果該執(zhí)行不會(huì)超過(guò)預(yù)定功率水平,則允許執(zhí)行單元執(zhí)行該指令。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于數(shù)據(jù)處理系統(tǒng)的執(zhí)行單元,包括局部功率控制器,適于計(jì)算執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的實(shí)際功耗,包括根據(jù)從對(duì)指令執(zhí)行的模擬中獲得的功率量來(lái)確定預(yù)測(cè)功率;確定在模擬過(guò)程中所使用的數(shù)據(jù);以及使用預(yù)測(cè)功率和在模擬過(guò)程中所使用的數(shù)據(jù)來(lái)計(jì)算要執(zhí)行的指令的實(shí)際功耗;以及如果該執(zhí)行不會(huì)超過(guò)預(yù)定功率水平,則允許執(zhí)行單元執(zhí)行該指令。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種節(jié)省處理集成電路功率的全局功率控制器,該處理集成電路具有多個(gè)執(zhí)行單元,該全局功率控制器包括適于將處理集成電路要消耗的總功率與處理集成電路的功率預(yù)算進(jìn)行比較的比較器電路;及適于在該總功率超出功率預(yù)算的情況下,選擇要凍結(jié)其指令執(zhí)行的執(zhí)行單元,從而允許該指令執(zhí)行在稍后某個(gè)時(shí)間從執(zhí)行凍結(jié)的地方繼續(xù)進(jìn)行的選擇電路。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種數(shù)據(jù)處理系統(tǒng),包括全局功率控制器,包括適于將處理集成電路所消耗的總功率與處理集成電路的功率預(yù)算進(jìn)行比較的比較電路;及適于在所述總功率超出功率預(yù)算的情況下,選擇要凍結(jié)其指令執(zhí)行的執(zhí)行單元,從而允許該指令的執(zhí)行在稍后某個(gè)時(shí)間從執(zhí)行凍結(jié)的地方繼續(xù)進(jìn)行的選擇電路;多個(gè)執(zhí)行單元,每個(gè)執(zhí)行單元都包括與全局功率控制器通信的局部功率控制器,適于計(jì)算執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的實(shí)際功耗,包括根據(jù)從對(duì)指令執(zhí)行的模擬中獲得的功率量來(lái)確定預(yù)測(cè)功率;確定在模擬過(guò)程中所使用的數(shù)據(jù);及使用預(yù)測(cè)功率和在模擬過(guò)程中所使用的數(shù)據(jù)來(lái)計(jì)算要執(zhí)行的指令的實(shí)際功耗;將功率信息傳送到全局功率控制器;及如果該執(zhí)行不會(huì)超過(guò)預(yù)定功率水平而且執(zhí)行單元的執(zhí)行沒(méi)有被全局功率控制器凍結(jié),則允許執(zhí)行單元執(zhí)行該指令。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種數(shù)據(jù)處理系統(tǒng),包括
全局功率控制器,包括適于將處理集成電路所消耗的總功率與處理集成電路的功率預(yù)算進(jìn)行比較的比較電路;及適于在所述總功率超出功率預(yù)算的情況下,選擇要凍結(jié)其指令執(zhí)行的執(zhí)行單元,從而允許該指令的執(zhí)行在稍后某個(gè)時(shí)間從執(zhí)行凍結(jié)的地方繼續(xù)進(jìn)行的選擇電路;多個(gè)執(zhí)行單元,每個(gè)執(zhí)行單元都包括與全局功率控制器通信的局部功率控制器,適于計(jì)算執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的實(shí)際功耗,包括根據(jù)從對(duì)指令執(zhí)行的模擬中獲得的功率量來(lái)確定預(yù)測(cè)功率;確定在模擬過(guò)程中所使用的數(shù)據(jù);及使用預(yù)測(cè)功率和在模擬過(guò)程中所使用的數(shù)據(jù)來(lái)計(jì)算要執(zhí)行的指令的實(shí)際功耗;將功率信息傳送到全局功率控制器;及如果該執(zhí)行不會(huì)超過(guò)預(yù)定功率水平而且執(zhí)行單元的執(zhí)行沒(méi)有被全局功率控制器凍結(jié),則允許執(zhí)行單元執(zhí)行該指令。
根據(jù)本發(fā)明的第一方面,提供了一種節(jié)省處理集成電路功率的方法。該方法包括步驟(1)計(jì)算執(zhí)行指令及與該指令對(duì)應(yīng)的數(shù)據(jù)的功耗;和(2)如果該執(zhí)行不會(huì)超出預(yù)定功率水平則執(zhí)行該指令。
根據(jù)本發(fā)明的第二方面,提供了一種節(jié)省處理集成電路功率的方法,該處理集成電路使用了多個(gè)執(zhí)行單元。該方法包括下列步驟(1)將處理集成電路所消耗的總功率與該處理集成電路的功率預(yù)算進(jìn)行比較;和(2)如果總功率超出了功率預(yù)算,則凍結(jié)多個(gè)執(zhí)行單元中一個(gè)單元對(duì)指令的執(zhí)行,以便允許該指令在稍后某個(gè)時(shí)間從執(zhí)行被凍結(jié)的地方繼續(xù)執(zhí)行。本發(fā)明的許多其它方面是作為系統(tǒng)和裝置來(lái)提供的。
根據(jù)以下詳細(xì)描述、所附的權(quán)利要求書(shū)和附圖,本發(fā)明的其它目的、特征和優(yōu)點(diǎn)將變得更加顯而易見(jiàn)。
圖1是根據(jù)本發(fā)明配置的新穎的數(shù)據(jù)處理系統(tǒng)的示意圖;圖2是與圖1的局部功率控制器代表性實(shí)施方案通信的圖1的全局功率控制器代表性實(shí)施方案的示意圖;圖3是可以由圖1和2中有創(chuàng)造性的數(shù)據(jù)處理系統(tǒng)的全局功率控制器執(zhí)行的節(jié)省功率的代表性方法的流程圖;圖4A和4B是可以由圖1和2中有創(chuàng)造性的數(shù)據(jù)處理系統(tǒng)執(zhí)行單元的局部功率控制器執(zhí)行的節(jié)省功率的代表性方法的流程圖;圖5是圖1和2中一個(gè)局部功率控制器更詳細(xì)的、有代表性的實(shí)施方案;圖6是可以與圖5的局部功率控制器一起使用的圖1和2中的全局功率控制器更詳細(xì)的、有代表性的實(shí)施方案;圖7是圖1中一個(gè)執(zhí)行單元邏輯電路的代表性實(shí)施方案,它對(duì)說(shuō)明圖1數(shù)據(jù)處理系統(tǒng)的工作很有幫助;及圖8是對(duì)說(shuō)明圖7執(zhí)行單元的工作很有幫助的時(shí)序圖。
具體實(shí)施例方式
圖1是根據(jù)本發(fā)明配置的新穎的數(shù)據(jù)處理系統(tǒng)100的示意圖。數(shù)據(jù)處理系統(tǒng)100包括耦合到指令分配單元104的存儲(chǔ)器102及多個(gè)執(zhí)行單元106a-n。指令分配單元104包括全局功率控制器108,而每個(gè)執(zhí)行單元106a-n都包括局部功率控制器110a-n。存儲(chǔ)器102、指令分配單元104、執(zhí)行單元106a-n及全局和/或局部功率控制器108、110a-n都配置成如下面進(jìn)一步所描述的那樣交換各種數(shù)據(jù)(例如,操作數(shù))、指令和/或其它控制信號(hào)。
存儲(chǔ)器102和指令分配單元104可以是本領(lǐng)域中已知的傳統(tǒng)數(shù)據(jù)處理系統(tǒng)部件。全局和局部功率控制器108、110a-n的代表性實(shí)施方案在下面參考圖2-6進(jìn)行描述。一個(gè)執(zhí)行單元106a-n的代表性實(shí)施方案在下面參考圖7和8進(jìn)行描述。
圖2是與圖1中局部功率控制器110a的代表性實(shí)施方案通信的全局功率控制器108的代表性實(shí)施方案的示意圖。局部功率控制器110b-n可以類(lèi)似地進(jìn)行配置。
參考圖2,全局功率控制器108包括適于存儲(chǔ)數(shù)據(jù)處理系統(tǒng)100的總功率預(yù)算的寄存器204。在本發(fā)明的一種實(shí)施方案中,寄存器204包括可編程寄存器,如隨機(jī)存取存儲(chǔ)器(RAM),雖然其它的傳統(tǒng)寄存器也可以使用。數(shù)據(jù)處理系統(tǒng)100的總功率預(yù)算可以表示,例如,前面引入的美國(guó)專(zhuān)利6,167,254中所述靠電池工作的系統(tǒng)中最大功效所要求的功率,或任何其它本領(lǐng)域中已知的預(yù)定功率水平。
局部功率控制器110a包括ROM 206、RAM 208、第一寄存器210、第二寄存器212和加法器電路214。ROM 206代表一個(gè)或多個(gè)ROM,適于為每條可執(zhí)行指令存儲(chǔ)(1)執(zhí)行單元106a(圖1)執(zhí)行該指令所需功率的平均值或其它代表性值;和/或(2)該指令類(lèi)型的“典型”或其它代表性操作數(shù)(如下面進(jìn)一步描述的)。這種平均功率和典型操作數(shù)可以基于模擬(例如,基于利用基于物理容量的模擬工具或者利用任何其它已知的技術(shù)運(yùn)行應(yīng)用程序代碼,該模擬工具如前面引入的美國(guó)專(zhuān)利6,167,524所述確定每個(gè)執(zhí)行單元每個(gè)周期所消耗的功率,)。
RAM 208代表一個(gè)或多個(gè)RAM,適于為執(zhí)行單元106a所執(zhí)行的每條指令存儲(chǔ)(1)執(zhí)行單元106a執(zhí)行該指令所需的實(shí)際功率;和/或(2)該指令操作的操作數(shù)。第一寄存器210適于存儲(chǔ)執(zhí)行單元106a的功率預(yù)算,可以包括如RAM的任何傳統(tǒng)寄存器。功率預(yù)算可以利用任何傳統(tǒng)技術(shù)來(lái)確定。如下面參考圖3-8所進(jìn)一步描述的,第二寄存器212適于存儲(chǔ)完成先前暫?;颉皟鼋Y(jié)”指令的執(zhí)行所需的功率。類(lèi)似地,第二寄存器212也可以包括如RAM的任何傳統(tǒng)寄存器。
圖3是可以由圖1和2中有創(chuàng)造性的數(shù)據(jù)處理系統(tǒng)100的全局功率控制器108執(zhí)行的節(jié)省功率的代表性方法300的流程圖。參考圖3,方法300從步驟301開(kāi)始。在步驟302中,全局功率控制器108計(jì)算當(dāng)前時(shí)鐘周期數(shù)據(jù)處理系統(tǒng)100要消耗的總功率(“Total_Chip_Power”)。Total_Chip_Power是根據(jù)當(dāng)前時(shí)鐘周期內(nèi)各執(zhí)行單元106a-n所消耗的實(shí)際功率計(jì)算的(例如,通過(guò)對(duì)當(dāng)前時(shí)鐘周期內(nèi)各執(zhí)行單元106a-n所消耗的實(shí)際功率求和)。例如,如下面參考圖4所描述的,當(dāng)前時(shí)鐘周期內(nèi)各執(zhí)行單元106a-n所消耗的實(shí)際功率可以確定并提供給全局功率控制器108。
在步驟303中,全局功率控制器108確定Total_Chip_Power是否超出了數(shù)據(jù)處理系統(tǒng)100的功率預(yù)算(“Chip_Power_Budget”)。例如,Chip_Power_Budget可以存儲(chǔ)在前述圖2的寄存器204中。如果在步驟304中Total_Chip_Power超出Chip_Power_Budget,則全局功率控制器108暫?;颉皟鼋Y(jié)”執(zhí)行單元106a-n中的一個(gè)或多個(gè)單元(例如,以便防止在當(dāng)前周期內(nèi)Total_Chip_Power實(shí)際超過(guò)Chip_Power_Budget)。如下面參考圖4所描述的,每個(gè)執(zhí)行單元106a-n都配置成可以在指令執(zhí)行過(guò)程中被暫?;颉皟鼋Y(jié)”,而且稍后在執(zhí)行被暫停的同一位置重新啟動(dòng)。以這種方式,完成由該凍結(jié)的執(zhí)行單元執(zhí)行指令所需的功率可以在數(shù)據(jù)處理系統(tǒng)100不超預(yù)算的稍后某個(gè)時(shí)間消耗。例如,如果在步驟303中確定Total_Chip_Power沒(méi)有超出Chip_Power_Budget,則在步驟305中全局功率控制器108可以重新啟動(dòng)一個(gè)或多個(gè)先前凍結(jié)的執(zhí)行單元106a-n。從而,數(shù)據(jù)處理系統(tǒng)100可以使用動(dòng)態(tài)、實(shí)時(shí)的功率管理。
圖4A和4B是可以由圖1和2中有創(chuàng)造性的數(shù)據(jù)處理系統(tǒng)100執(zhí)行單元106a-n的局部功率控制器110a-n執(zhí)行的節(jié)省功率的代表性方法400的流程圖。為了方便,方法400參考圖1和2的局部功率控制器110a進(jìn)行描述。應(yīng)當(dāng)理解,局部功率控制器110b-n中的一個(gè)或多個(gè)可以執(zhí)行相似的方法。
參考圖4A和4B,方法400從步驟401開(kāi)始。在步驟402中,局部功率控制器110a確定執(zhí)行單元106a是否從指令分配單元104收到了新指令并正在解碼(或已經(jīng)解碼)該新指令。如果是這樣,則方法400前進(jìn)到步驟403;否則,局部功率控制器110a重新檢查執(zhí)行單元106a是否收到了新指令(步驟402)。
在步驟403中,局部功率控制器110a確定執(zhí)行單元106a收到的新指令是否先前已經(jīng)收到(例如,根據(jù)該指令的操作碼或“opcode”)。如果先前已經(jīng)收到,則方法400前進(jìn)到步驟404;否則,方法400前進(jìn)到步驟405。
在步驟404中,局部功率控制器110a根據(jù)執(zhí)行單元106a上次執(zhí)行該指令來(lái)確定執(zhí)行該新指令所需的預(yù)測(cè)功率(“Predicted_Power”)。例如,RAM 208(圖2)可以存儲(chǔ)先前執(zhí)行該指令所需的功率。局部功率控制器110a還確定上次該指令執(zhí)行時(shí)所使用的操作數(shù)(“Last_Operands”)。Last_Operands也可以存儲(chǔ)在RAM 208中。然后方法400前進(jìn)到步驟406。
如果在步驟403中執(zhí)行單元106a收到的新指令先前沒(méi)有被執(zhí)行單元106a收到過(guò),則在步驟405中局部功率控制器110a根據(jù)模擬數(shù)據(jù)(例如,存儲(chǔ)在圖2的ROM 206中)確定Predicted_Power和Last_Operands。例如,Predicted_Power可以是根據(jù)模擬的平均功率,而Last_Operands可以是模擬過(guò)程中所使用的典型操作數(shù)。如在先前引入的美國(guó)專(zhuān)利No.6,167,524中所描述的任何合適的模擬技術(shù)都可以使用。然后方法400前進(jìn)到步驟406。
在步驟406中,局部功率控制器110a根據(jù)Predicted_Power計(jì)算執(zhí)行該新指令所需的實(shí)際功率(“True_Power”)。在本發(fā)明的至少一種實(shí)施方案中,True_Power是通過(guò)用轉(zhuǎn)換系數(shù)(“Transition_Factor”)乘Predicted_Power來(lái)計(jì)算的,其中轉(zhuǎn)換系數(shù)表示如下面進(jìn)一步所描述的對(duì)與新指令關(guān)聯(lián)的實(shí)際操作數(shù)(“New_Operands”)和Last_Operands執(zhí)行XNOR或其它XOR類(lèi)運(yùn)算的結(jié)果。在步驟407中,局部功率控制器110a將True_Power和New_Operands存儲(chǔ)在RAM 208中,供執(zhí)行單元106a下次執(zhí)行該指令時(shí)使用。
在步驟408中,局部功率控制器110a計(jì)算在當(dāng)前時(shí)鐘周期內(nèi)執(zhí)行單元106a可以使用的可用功率(“Avail_Power”)。在本發(fā)明的至少一種實(shí)施方案中,Avail_Power等于執(zhí)行單元106a的功率預(yù)算(例如,存儲(chǔ)在局部功率控制器110a的寄存器210中的“EX _Power_Budget”)減去完成由全局功率控制器108或由局部功率控制器110a凍結(jié)的以前時(shí)鐘周期內(nèi)的指令所需的任何功率(如下面進(jìn)一步描述的)。
在步驟409中,局部功率控制器110a確定True_Power(執(zhí)行單元106a執(zhí)行指令所需的功率)是否大于Avail_Power(執(zhí)行單元106a可用的功率)。即,局部功率控制器110a確定如果執(zhí)行新指令則執(zhí)行單元106a是否會(huì)超出其功率預(yù)算。如果不會(huì)超出,則在步驟410中局部功率控制器110a允許執(zhí)行單元106a繼續(xù)執(zhí)行該指令;否則,在步驟411中局部功率控制器110a阻止執(zhí)行單元106a執(zhí)行該指令(如下所述)。指令的執(zhí)行可以在執(zhí)行前或執(zhí)行中暫停(凍結(jié))。在至少一種實(shí)施方案中,局部功率控制器110a存儲(chǔ)完成該指令執(zhí)行所需的功率值(例如,在圖2的寄存器212中)。該存儲(chǔ)的功率值可以在計(jì)算以后的執(zhí)行單元106a的Avail_Power時(shí)使用(步驟408)。
圖5是圖1和2中局部功率控制器110a更詳細(xì)的、代表性的實(shí)施方案。參考圖5,局部功率控制器110a包括(1)耦合到RAM 503的第一寄存器501;(2)耦合到RAM 503、第一ROM 507和乘法器509的第一復(fù)用器505;(3)耦合到乘法器509、第二復(fù)用器513和第二寄存器515的XOR類(lèi)邏輯電路511;及(4)耦合到第二復(fù)用器513的第二ROM 517和第三寄存器519。局部功率控制器110a還包括(1)耦合到乘法器509、比較器523和第四寄存器525的第一加法器521;及(2)耦合到比較器523和第五寄存器529的第二加法器527。寄存器501、515、519、525和529可以包括一個(gè)或多個(gè)傳統(tǒng)寄存器,如一個(gè)或多個(gè)RAM。XOR類(lèi)邏輯電路511可以包括任何傳統(tǒng)的比較電路,如XNOR邏輯電路,如比較器523可能是的那樣。復(fù)用器505和513、乘法器509及加法器521和527可以包括任何已知的合適邏輯電路。
在工作中,當(dāng)執(zhí)行單元106a接收到指令時(shí),該指令存儲(chǔ)到第一寄存器501中,局部功率控制器110a如前所述確定用于由執(zhí)行單元106a執(zhí)行該指令的Predicted_Power。在圖5的實(shí)施方案中,Predicted_Power是以下述兩種方式之一確定的(1)通過(guò)利用上次執(zhí)行該指令時(shí)執(zhí)行單元106a所消耗的功率;或(2)通過(guò)利用根據(jù)模擬確定的功率(如前所述)。具體地說(shuō),局部功率控制器110a確定執(zhí)行單元106a收到的指令先前是否已被執(zhí)行單元106a收到過(guò)。如果收到過(guò),則局部功率控制器110a通過(guò)利用該指令的操作碼作為第一RAM 503地址來(lái)確定用于該指令的Predicted_Power(上次執(zhí)行該指令時(shí)執(zhí)行單元所消耗的功率存儲(chǔ)在由該操作碼標(biāo)識(shí)的地址的RAM503中);否則,Predicted_Power是根據(jù)存儲(chǔ)在第一ROM 507中的模擬功率數(shù)據(jù)提供的。第一復(fù)用器505用來(lái)選擇適當(dāng)?shù)腜redicted_Power并將其傳送到乘法器509。
在局部功率控制器110a確定Predicted_Power之前、期間或之后,局部功率控制器110a還確定用于伴隨執(zhí)行單元106a所接收指令的操作數(shù)的Transition_Factor。Transition_Factor是通過(guò)在伴隨指令的操作數(shù)和上次該指令執(zhí)行時(shí)所使用的操作數(shù)(例如,存儲(chǔ)在寄存器519中的Last_Operands)或模擬過(guò)程中所使用的典型操作數(shù)(例如,存儲(chǔ)在ROM517中的Last_Operands)之間執(zhí)行XOR類(lèi)函數(shù),如XNOR或其它比較運(yùn)算,來(lái)計(jì)算的。第二復(fù)用器513用來(lái)選擇適當(dāng)?shù)腖ast_Operands并將其傳送到XOR類(lèi)電路511。然后,XOR類(lèi)電路511將其XOR類(lèi)運(yùn)算結(jié)果(Transition_Factor)輸出到乘法器509。
乘法器509基于Predicted_Power通過(guò)用Transition_Factor乘Predicted_Power來(lái)計(jì)算執(zhí)行該指令所需的實(shí)際功率(“True_Power”)。局部功率控制器110a將True_Power存儲(chǔ)在RAM 503中并將用于當(dāng)前指令的操作數(shù)存儲(chǔ)在寄存器519中,以便執(zhí)行單元106a下次執(zhí)行該指令時(shí)使用。乘法器509將True_Power輸出到第一加法器521、全局功率控制器108、比較器523及RAM 503。
局部功率控制器110a還通過(guò)從執(zhí)行單元106a的功率預(yù)算(存儲(chǔ)在寄存器529中)中減去完成由全局功率控制器108或由局部功率控制器110a暫停或凍結(jié)的以前時(shí)鐘周期內(nèi)的指令所需的任何功率(存儲(chǔ)在寄存器525中)來(lái)計(jì)算當(dāng)前時(shí)鐘周期內(nèi)執(zhí)行單元106a可以使用的可用功率(Avail_Power)。減法運(yùn)算是通過(guò)加法器527執(zhí)行的,其結(jié)果Avail_Power由加法器527提供給比較器523。如果比較器523確定True_Power(執(zhí)行當(dāng)前指令所需的功率)超出Avail_Power(執(zhí)行單元的功率預(yù)算,利用完成任何凍結(jié)的指令執(zhí)行所需的功率來(lái)校正),則局部功率控制器110a凍結(jié)執(zhí)行單元106a的工作。局部功率控制器110a可以通知全局功率控制器108,而全局功率控制器108可以將該指令重新分配給另一執(zhí)行單元。或者,局部功率控制器110a可以將完成該指令執(zhí)行所需的功率值存儲(chǔ)在寄存器525中。如果True_Power沒(méi)有超出Avail_Power,則局部功率控制器110a允許執(zhí)行單元106a執(zhí)行該指令(并通知全局功率控制器108這一情況)。凍結(jié)執(zhí)行單元指令的執(zhí)行的一種實(shí)施方案在下面參考圖7進(jìn)行描述。
加法器521通過(guò)將True_Power加上完成任何凍結(jié)指令所需的功率(存儲(chǔ)在寄存器525中)來(lái)確定執(zhí)行單元106a執(zhí)行指令所消耗的實(shí)際功率(“Actual Power Dissipated”)。如下面參考圖6所描述的,Actual PowerDissipated提供給全局功率控制器108。局部功率控制器110b-n可以類(lèi)似于圖5的局部功率控制器110a配置。實(shí)現(xiàn)上述功能所需的控制邏輯可以由相關(guān)領(lǐng)域普通技術(shù)人員來(lái)開(kāi)發(fā),在此不進(jìn)行詳細(xì)描述。
圖6是可以與圖5的局部功率控制器110a一起使用的圖1和2中的全局功率控制器108的更詳細(xì)的、代表性的實(shí)施方案。參考圖6,全局功率控制器108包括耦合到第一加法器603和比較器605的第一寄存器601。比較器605還耦合到第二加法器607和選擇電路609。寄存器601、加法器603和607、比較器605及選擇電路609可以包括任何已知的合適邏輯電路。
在工作中,全局功率控制器108通過(guò)利用第二加法器607將從各局部功率控制器110a-n收到的“Actual Power Dissipated”信息(例如,如前所述由各執(zhí)行單元106a-n所消耗的功率)加在一起來(lái)計(jì)算當(dāng)前時(shí)鐘周期內(nèi)數(shù)據(jù)處理系統(tǒng)100要消耗的總功率。該總功率表示數(shù)據(jù)處理系統(tǒng)100的Total_Chip_Power。然后比較器605將數(shù)據(jù)處理系統(tǒng)100的功率預(yù)算(存儲(chǔ)在寄存器601中的Chip_Power_Budget)與Total_Chip_Power進(jìn)行比較。如果Total_Chip_Power小于Chip_Power_Budget,則全局功率控制器108允許各執(zhí)行單元106a-n執(zhí)行指令,而不會(huì)受全局功率控制器108的干擾。任何“剩余”功率(例如,Chip_Power_Budget超出Total_Chip_Power的量)都通過(guò)加法器603加到Chip_Power_Budget上(例如,增加下一時(shí)鐘周期內(nèi)數(shù)據(jù)處理系統(tǒng)100的功率預(yù)算)。全局功率控制器108也可以不將剩余功率加到Chip_Power_Budget,而是重新啟動(dòng)先前凍結(jié)的一個(gè)或多個(gè)執(zhí)行單元106a-n。如果Total_Chip_Power大于Chip_Power_Budget(如由比較器605確定的),則全局功率控制器108(通過(guò)選擇電路609)選擇一個(gè)或多個(gè)執(zhí)行單元106a-n并凍結(jié)所選執(zhí)行單元的指令執(zhí)行。要凍結(jié)的特定執(zhí)行單元的選擇可以根據(jù)任何相關(guān)因素。在至少一種實(shí)施方案中,選擇電路609根據(jù)當(dāng)前時(shí)鐘周期內(nèi)各執(zhí)行單元106a-n要消耗的功率(例如,根據(jù)各執(zhí)行單元106a-n的True_Power)來(lái)選擇凍結(jié)的執(zhí)行單元的適當(dāng)組合。其它因素包括要凍結(jié)的執(zhí)行單元個(gè)數(shù)、執(zhí)行單元所執(zhí)行指令的類(lèi)型等。例如,全局功率控制器108可以選擇只凍結(jié)推理性執(zhí)行單元(如在先前引入的美國(guó)專(zhuān)利No.6,167,524中所描述的)。實(shí)現(xiàn)上述功能所需的控制邏輯可以由相關(guān)領(lǐng)域普通技術(shù)人員來(lái)開(kāi)發(fā),在此不進(jìn)行詳細(xì)描述。
圖7是圖1中的執(zhí)行單元106a邏輯電路的代表性實(shí)施方案,它對(duì)說(shuō)明圖1的數(shù)據(jù)處理系統(tǒng)100的工作很有幫助。應(yīng)當(dāng)理解,其它邏輯電路也可以由任何執(zhí)行單元106a-n使用,圖7的邏輯電路僅僅是代表性的。
參考圖7,執(zhí)行單元106a包括四個(gè)邏輯單元702、704、706和708。每個(gè)邏輯單元都可以包括適于處理數(shù)據(jù)處理系統(tǒng)100所使用的指令和操作數(shù)的任何傳統(tǒng)邏輯電路。在圖7的實(shí)施方案中,第一邏輯單元702消耗執(zhí)行單元106a總功率的大約10%,第二邏輯單元704消耗執(zhí)行單元106a總功率的大約40%,第三邏輯單元706消耗執(zhí)行單元106a總功率的大約30%,而第四邏輯單元708消耗執(zhí)行單元106a總功率的大約20%。這些百分比僅僅是代表性的。局部功率控制器110a可以利用對(duì)這些百分比的了解進(jìn)行預(yù)編程。這些信息可以存儲(chǔ)在例如ROM中。
在各邏輯單元702-708前面分別加上“一次轉(zhuǎn)換”緩沖器或復(fù)用器(“一次轉(zhuǎn)換邏輯”)710、712、714和716。一次轉(zhuǎn)換復(fù)用器在先前引入的美國(guó)專(zhuān)利No.6,054,877中進(jìn)行了詳細(xì)描述。一次轉(zhuǎn)換緩沖器可以類(lèi)似地進(jìn)行配置(例如,沒(méi)有在多個(gè)輸入之間進(jìn)行選擇所需的附加邏輯)。假定一次轉(zhuǎn)換邏輯710、712、714和716中每個(gè)都包括一次轉(zhuǎn)換緩沖器,且每個(gè)一次轉(zhuǎn)換緩沖器710-714都提供有低速選擇輸入和當(dāng)沒(méi)有被低速選擇輸入選中時(shí)(例如,當(dāng)?shù)退龠x擇輸入是“無(wú)效的”時(shí))保持其值的選通門(mén)/鎖存器(未示出)。
在工作中,響應(yīng)由局部功率控制器110a(例如,在圖4方法400的步驟411中)或由全局功率控制器108(例如,在圖3方法300的步驟304中)產(chǎn)生的“凍結(jié)”信號(hào),局部功率控制器110a禁止一次轉(zhuǎn)換邏輯710、712、714和716的低速選擇輸入的一個(gè)或多個(gè)。例如,如果局部功率控制器110a打算阻止執(zhí)行單元106a消耗任何功率,則所有一次轉(zhuǎn)換邏輯710-716的低速選擇輸入都應(yīng)該禁止。以這種方式,提供給執(zhí)行單元106a的任何指令和操作數(shù)都由一次轉(zhuǎn)換邏輯710“保持”。通過(guò)啟用一次轉(zhuǎn)換邏輯710-716的低速選擇輸入,可以允許這些指令和操作數(shù)在隨后的任何時(shí)間通過(guò)執(zhí)行單元106a。全局功率控制器108可以提供有對(duì)一次轉(zhuǎn)換邏輯710-716的低速選擇輸入的直接控制。
作為另一種實(shí)例,假定已經(jīng)通過(guò)適當(dāng)選擇一次轉(zhuǎn)換邏輯710和712的低速選擇輸入,允許指令和操作數(shù)通過(guò)邏輯單元702和邏輯單元704。如果局部功率控制器110a隨后凍結(jié)了執(zhí)行單元106a的工作(例如,響應(yīng)來(lái)自局部或全局功率控制器110a、108的凍結(jié)信號(hào)),則沒(méi)有“有效的”低速選擇輸入提供給一次轉(zhuǎn)換邏輯714和716。例如,這在圖8的時(shí)序圖中進(jìn)行了說(shuō)明,該圖示出了參考時(shí)鐘信號(hào)(CLK)、加到一次轉(zhuǎn)換邏輯710的低速選擇輸入(slow_select A)、加到一次轉(zhuǎn)換邏輯712的低速選擇輸入(slow_select B)、加到一次轉(zhuǎn)換邏輯714的低速選擇輸入(slow_selectC)及加到一次轉(zhuǎn)換邏輯716的低速選擇輸入(slow_select D)。通過(guò)保持一次轉(zhuǎn)換邏輯714和716的低速選擇輸入無(wú)效,加到執(zhí)行單元106a的指令和操作數(shù)只通過(guò)邏輯單元702和704。邏輯單元704的結(jié)果輸出由一次轉(zhuǎn)換邏輯714保持。通過(guò)適當(dāng)?shù)丶せ钜淮无D(zhuǎn)換邏輯714和716的低速選擇輸入,指令和操作數(shù)的處理可以在隨后某個(gè)時(shí)間繼續(xù)進(jìn)行。注意,指令和操作數(shù)的執(zhí)行可以從執(zhí)行凍結(jié)的地方開(kāi)始,而不需要通過(guò)邏輯單元702和704重新處理。從而可以實(shí)現(xiàn)顯著的功率節(jié)省。
在上述實(shí)例中,消耗了執(zhí)行單元106a處理指令和操作數(shù)所需功率的大約50%。在本發(fā)明的至少一種實(shí)施方案中,這個(gè)信息存儲(chǔ)在圖5的寄存器525中。例如,假定執(zhí)行單元106a執(zhí)行一條指令所消耗的總功率是0.2W。如果只有一次轉(zhuǎn)換邏輯710和712的低速選擇輸入是有效的,則局部功率控制器110a可以確定執(zhí)行單元106a消耗了大約0.1W功率,而另外的0.1W功率將是執(zhí)行單元106a完成其指令處理所需要的。
應(yīng)當(dāng)理解,通過(guò)使用本發(fā)明,由于指令和操作數(shù)的功耗都可以在每個(gè)時(shí)鐘周期內(nèi)監(jiān)視并根據(jù)期望進(jìn)行調(diào)節(jié)(例如,為了維持電源的穩(wěn)定耗用電流),因此數(shù)據(jù)處理系統(tǒng)100的功耗可以非??焖俨⒕_地調(diào)節(jié)。例如,在本發(fā)明的至少一種實(shí)施方案中,全局功率控制器108計(jì)算所有執(zhí)行單元106a-n消耗的(例如,由局部功率控制器110a-n所提供的)總功率并試圖維持該總功率恒定。例如,這可以通過(guò)以下方式實(shí)現(xiàn)(1)臨時(shí)暫停向一個(gè)或多個(gè)執(zhí)行單元106a-n分配新指令;和/或(2)臨時(shí)凍結(jié)一個(gè)或多個(gè)執(zhí)行單元106a-n的指令執(zhí)行(例如,在圖3方法300的步驟304)。當(dāng)暫停/凍結(jié)指令的執(zhí)行恢復(fù)時(shí),該執(zhí)行從執(zhí)行暫停的地方恢復(fù)(例如,先前參考圖7和8所描述的)。因此,指令執(zhí)行幾乎可以在執(zhí)行過(guò)程中的任何時(shí)刻“暫?!焙椭匦麻_(kāi)始。
如上所述,每個(gè)局部功率控制器110a-n都可以“預(yù)測(cè)”各指令和操作數(shù)要消耗的每周期功率,并可將該每周期功率與相關(guān)執(zhí)行單元106a-n的功率預(yù)算進(jìn)行比較。在本發(fā)明的至少一種實(shí)施方案中,如果特定指令的執(zhí)行將超過(guò)執(zhí)行單元的功率預(yù)算,則相關(guān)的局部功率控制器110a-n從執(zhí)行單元流水線中除去該指令。該執(zhí)行單元的指令執(zhí)行可暫停(例如,通過(guò)禁止該執(zhí)行單元的低速選擇輸入),而全局功率控制器108將得到該執(zhí)行單元在這個(gè)周期內(nèi)不能執(zhí)行指令的通知。全局功率控制器108可以將該指令重新分配給另一執(zhí)行單元,而且可以重新啟動(dòng)該暫停的執(zhí)行單元處理后續(xù)指令。在本發(fā)明的一種實(shí)施方案中,所有計(jì)算和/或數(shù)據(jù)處理(例如,Predicted_Power、Last Operands、True Power、Avail Power的計(jì)算/確定,它們之間的各種比較等)都發(fā)生在一個(gè)時(shí)鐘周期內(nèi),從而可以很快作出是否允許指令執(zhí)行的決定。在另一種實(shí)施方案中,每個(gè)局部功率控制器110a-n只可以在時(shí)鐘周期開(kāi)始時(shí)凍結(jié)執(zhí)行單元的指令執(zhí)行,而全局功率控制器108則可以在時(shí)鐘周期中部?jī)鼋Y(jié)指令的執(zhí)行(例如,如果全局功率控制器108確定如果允許指令的執(zhí)行繼續(xù)進(jìn)行,則數(shù)據(jù)處理系統(tǒng)100的功率預(yù)算將被超出)。從而向數(shù)據(jù)處理系統(tǒng)100提供了動(dòng)態(tài)、實(shí)時(shí)的功率控制。
以上所述僅公開(kāi)了本發(fā)明的代表性實(shí)施方案;對(duì)本領(lǐng)域的技術(shù)人員而言,在本發(fā)明范圍內(nèi)對(duì)以上所公開(kāi)的裝置和方法的修改是顯而易見(jiàn)的。例如,如果需要,執(zhí)行單元中多級(jí)模擬或?qū)嶋H功耗數(shù)據(jù)可以由局部功率控制器110a-n來(lái)存儲(chǔ)。
因此,盡管已經(jīng)結(jié)合其代表性實(shí)施方案公開(kāi)了本發(fā)明,但應(yīng)當(dāng)理解,其它實(shí)施方案也可落在由所附權(quán)利要求所定義的本發(fā)明精神和范圍之內(nèi)。
權(quán)利要求
1.一種節(jié)省處理集成電路功率的方法,該處理集成電路使用了多個(gè)執(zhí)行單元,該方法包括下列步驟將處理集成電路所要消耗的總功率與處理集成電路的功率預(yù)算進(jìn)行比較;及如果所述總功率超出功率預(yù)算,則凍結(jié)多個(gè)執(zhí)行單元中的一個(gè)單元的指令執(zhí)行,從而允許所述指令的執(zhí)行在稍后某個(gè)時(shí)間從執(zhí)行凍結(jié)的地方繼續(xù)。
2.根據(jù)權(quán)利要求1的方法,其中將處理集成電路所消耗的總功率與該集成電路的功率預(yù)算進(jìn)行比較包括確定一個(gè)時(shí)鐘周期內(nèi)所述處理集成電路所要消耗的總功率;及確定所述處理集成電路的功率預(yù)算。
3.根據(jù)權(quán)利要求2的方法,其中確定總功率包括從每個(gè)執(zhí)行單元接收關(guān)于所述執(zhí)行單元在此時(shí)鐘周期內(nèi)所消耗功率的信息;及根據(jù)從執(zhí)行單元收到的信息確定總功率。
4.根據(jù)權(quán)利要求1的方法,其中凍結(jié)多個(gè)執(zhí)行單元中的一個(gè)單元的指令執(zhí)行包括保持至少一個(gè)該執(zhí)行單元的一次轉(zhuǎn)換邏輯電路的低速選擇輸入無(wú)效。
5.一種節(jié)省處理集成電路功率的全局功率控制器,該處理集成電路具有多個(gè)執(zhí)行單元,該全局功率控制器包括適于將處理集成電路要消耗的總功率與處理集成電路的功率預(yù)算進(jìn)行比較的比較器電路;及適于在該總功率超出功率預(yù)算的情況下,選擇要凍結(jié)其指令執(zhí)行的執(zhí)行單元,從而允許該指令執(zhí)行在稍后某個(gè)時(shí)間從執(zhí)行凍結(jié)的地方繼續(xù)進(jìn)行的選擇電路。
6.根據(jù)權(quán)利要求5的全局功率控制器,還包括適于接收有關(guān)一個(gè)時(shí)鐘周期內(nèi)來(lái)自多個(gè)執(zhí)行單元中的每個(gè)單元的所消耗的實(shí)際功率的信息,及根據(jù)所收到的信息計(jì)算該處理集成電路所消耗的總功率的加法器電路。
7.根據(jù)權(quán)利要求5的全局功率控制器,還包括適于將功率預(yù)算超出總功率的任何功率量都加到功率預(yù)算的加法器電路。
8.根據(jù)權(quán)利要求5的全局功率控制器,其中選擇電路還適于在所述總功率小于功率預(yù)算的情況下選擇先前凍結(jié)的執(zhí)行單元繼續(xù)執(zhí)行。
全文摘要
在第一方面,本發(fā)明提供了一種節(jié)省處理集成電路功率的方法。該方法包括步驟計(jì)算(401-408)執(zhí)行指令及對(duì)應(yīng)于該指令的數(shù)據(jù)的功耗;及如果該執(zhí)行不會(huì)超過(guò)預(yù)定功率水平則執(zhí)行(409、410)該指令。在第二方面,本發(fā)明提供了一種節(jié)省處理集成電路功率的方法,該處理集成電路使用了多個(gè)執(zhí)行單元。該方法包括下列步驟將處理集成電路所消耗的總功率與處理集成電路的功率預(yù)算進(jìn)行比較(301、302);及如果該總功率超出功率預(yù)算則凍結(jié)(304)多個(gè)執(zhí)行單元中一個(gè)單元的指令執(zhí)行,從而允許該指令執(zhí)行在稍后某個(gè)時(shí)間從執(zhí)行凍結(jié)的地方繼續(xù)進(jìn)行。本發(fā)明的許多其它方面是作為系統(tǒng)和裝置來(lái)提供的。
文檔編號(hào)G06F1/32GK1892536SQ20061010770
公開(kāi)日2007年1月10日 申請(qǐng)日期2002年10月22日 優(yōu)先權(quán)日2001年10月22日
發(fā)明者J·R·史密斯, S·T·文特羅內(nèi) 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司