專利名稱:互斥地激活微處理器資源以控制最大功率的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及微處理器,具體地說,涉及用于控制微處理器中的 功率消耗和損耗的方法。
背景技術(shù):
目前,越來越多的電子組件隨微處理器一起安裝在相對(duì)較小的芯片空 間內(nèi)。隨著微處理器中電子組件數(shù)量的增加,功率損耗和消耗的問題開始 突顯。功率消耗和損耗影響微處理器的設(shè)計(jì)選擇和運(yùn)行狀況。因此,需要 最小化微處理器內(nèi)的功率消耗和損耗。在下文中,除非特別適用,否則術(shù) 語"功率"用于同時(shí)包含功率參數(shù)的"消耗"和"損耗"兩個(gè)方面。平均功耗和最大功耗之間具有區(qū)別。平均功率指通常由客戶運(yùn)行的一 組應(yīng)用或程序所平均消耗的功率。節(jié)省平均功率可降低有線應(yīng)用中的能耗, 并延長便攜應(yīng)用中的電池壽命。最大功率是由使用微處理器中的最大數(shù)量 資源的代碼段所消耗的功率。最大功率對(duì)封裝的功耗能力以及配電系統(tǒng)的電流傳輸能力設(shè)置了要求。因此,最大功率對(duì)于^L處理器的成本具有重大影響。存在多種降低微處理器組件或資源中的功率的技術(shù)。時(shí)鐘選通是一種 此類技術(shù)。時(shí)鐘選通只能節(jié)省功率的動(dòng)態(tài)或切換部分。另一種節(jié)省功率的 技術(shù)稱為數(shù)據(jù)選通。數(shù)據(jù)選通包括在微處理器組件的輸入處插入轉(zhuǎn)變屏障。 這些轉(zhuǎn)變屏障通常實(shí)現(xiàn)為'與,或者'或,邏輯門。在不使用微處理器組 件的周期,轉(zhuǎn)變屏障防止到組件的輸入切換,這可以節(jié)省數(shù)據(jù)選通組件內(nèi) 的動(dòng)態(tài)功率或切換功率。與時(shí)鐘選通相同,數(shù)據(jù)選通只能節(jié)省動(dòng)態(tài)功率或 切換功率,而不能節(jié)省泄漏功率。功率選通(也稱為Vdd選通)是另一種公知的可降低動(dòng)態(tài)功率和泄漏功率部分的功率節(jié)省技術(shù)。與時(shí)鐘選通不同,Vdd選通需要多個(gè)時(shí)鐘周期 來激活Vdd選通的資源,這要求更復(fù)雜的控制^4'J。 Vdd選通的資源必須 保持選通最少數(shù)量的周期(通常十個(gè)周期),以便抵償與資源的激活和取 消激活過程關(guān)聯(lián)的能量開銷??刂啤刮⑻幚砥髻Y源的選通的方法包括反應(yīng)選通(RG)技術(shù)。這些RG 技術(shù)用于控制芯片的最高溫度和/或微處理器核心或芯片吸取的最大電流。 RG技術(shù)使用 一組溫度或電流傳感器,如果傳感器之一讀出的溫度(或電 流消耗)超過閾值,則傳感器生成用于選通微處理器資源的信號(hào)。將該閾 值設(shè)置為低于封裝的功耗能力限制或低于供電系統(tǒng)的電流傳輸能力。由于基于閾值進(jìn)行控制,所以RG技術(shù)不允許放松對(duì)電力或電流傳輸 系統(tǒng)的要求,必須以相對(duì)悲觀或保守的級(jí)別設(shè)置所述閾值,以使反應(yīng)機(jī)制 能夠及時(shí)觸發(fā)并避免芯片故障。RG技術(shù)使得難以預(yù)測(cè)處理器核心的性能, 因?yàn)榉磻?yīng)機(jī)制可能在程序執(zhí)行期間觸發(fā)。進(jìn)而,用于節(jié)約功率的RG技術(shù) 的觸發(fā)機(jī)制可能依賴于諸如溫度之類的運(yùn)行環(huán)境因素。此觸發(fā)機(jī)制使微處 理器的性能依賴于運(yùn)行環(huán)境因素。接下來討論了 RG技術(shù)的一些實(shí)例。Georgiou等人的美國專利No. 6,047,248和美國專利No. 5,189,314提出了根據(jù)從熱傳感器接收的信息來改 變處理器性能的技術(shù)。這些RG技術(shù)使用反應(yīng)節(jié)流技術(shù),后者在接收到對(duì) 一組性能度量的片上監(jiān)視所獲得的反饋時(shí)被激活。另一種控制選通的方法包括完全預(yù)測(cè)性的選通技術(shù),所述選通技術(shù)可 以降低微處理器核心或芯片的平均功率,但是當(dāng)完全使用所有微處理器資 源時(shí),不能保證在最大功率使用率下的任何功率降低或不能提供最大功率 的任何上限。作為完全預(yù)測(cè)性的選通技術(shù)的一個(gè)實(shí)例,Ikeda的美國專利 No, 5,504,908披露了使用地址訪問信息判定處理器何時(shí)處于空閑循環(huán)。這 些用于控制選通的技術(shù)不允許對(duì)影響微處理器成本的封裝功耗能力或供電 系統(tǒng)的電流傳輸能力的要求有任何放松。因此,需要一種或多種技術(shù)來控 制微處理器中的功率消耗并最小化最大功率。發(fā)明內(nèi)容本發(fā)明的示例性實(shí)施例通常包括用于控制微處理器中的功率消耗和損 耗的系統(tǒng)和方法。具體地說,在本發(fā)明的一個(gè)示例性實(shí)施例中,用于控制 微處理器中的功率參數(shù)的系統(tǒng)包括用于控制所述微處理器的最大功率的資 源激活控制單元以及兩個(gè)或更多個(gè)資源。所述資源激活控制單元控制所述 資源的激活,以使所述微處理器消耗和損耗的功率不超過可配置為低于所 述最大功率的預(yù)定值的功率邊界。在本發(fā)明的另 一個(gè)示例性實(shí)施例中,用于控制樣史處理器中的功率參數(shù)的方法包括控制所述微處理器的兩個(gè)或更多個(gè)資源的激活;以及將激活的 資源所消耗和耗散的總功率保持為低于功率邊界,所述功率邊界可以被配 置為低于所述微處理器的最大功率的預(yù)定值。從以下將結(jié)合附圖閱讀的對(duì)示例性實(shí)施例的詳細(xì)描述,說明了本發(fā)明 的這些以及其他實(shí)施例、方面、特性和優(yōu)點(diǎn),或者從以下將結(jié)合附圖閱讀 的對(duì)示例性實(shí)施例的詳細(xì)描述,本發(fā)明的這些以及其他實(shí)施例、方面、特 性和優(yōu)點(diǎn)將變得顯而易見。
圖1示出了本發(fā)明的示例性實(shí)施例中的互斥資源激活(MERA)控制 單元以及其他處理器核心資源;圖2示出了本發(fā)明的示例性實(shí)施例中的微處理器組件與MERA控制單 元之間的示例性接口;圖3是示出本發(fā)明的示例性實(shí)施例中控制微處理器資源的取消激活和 激活的流程圖;圖4是示出本發(fā)明的示例性實(shí)施例中控制微處理器資源的取消激活和 激活的流程圖;圖5是示出本發(fā)明的示例性實(shí)施例中的用于資源對(duì)的存儲(chǔ)在表中的按 需激活和取消激活策略的流程圖;圖6是示出本發(fā)明的示例性實(shí)施例中控制微處理器資源的取消激活和激活的流程圖;圖7是示出本發(fā)明的示例性實(shí)施例中使用迫切的資源取消激活和按需 資源激活策略來控制資源的互斥激活的流程圖;圖8示出了本發(fā)明的示例性實(shí)施例中檢查是否需要以及指定互斥資源 (或資源組)的基于表的石更件結(jié)構(gòu);圖9示出了本發(fā)明的示例性實(shí)施例中控制功率選通的示例性硬件結(jié)構(gòu);圖10是示出本發(fā)明的示例性實(shí)施例中檢查預(yù)測(cè)指令的狀態(tài)的流程圖; 圖11是示出本發(fā)明的示例性實(shí)施例中檢查由MERA控制單元執(zhí)行的程序指令的不規(guī)則行為的流程圖;以及圖12是示出將指令發(fā)出到備選資源來執(zhí)行以避免激活所請(qǐng)求的選通的資源的流程圖。
具體實(shí)施方式
圖1示出了本發(fā)明的示例性實(shí)施例中的互斥資源激活(MERA)控制 單元以及其他處理器核心資源。示出了處理器核心10。 MERA控制單元 12以互斥的方式控制處理器核心10的資源。與MERA控制單元12相連 的讀取地址預(yù)測(cè)資源14包括地址讀取資源,例如分支預(yù)測(cè)器(多個(gè))、鏈 接堆棧等。分支預(yù)測(cè)器(未示出)可以包括多組分支歷史陣列,其可以可 選地單獨(dú)接通和斷開電源。指令高速緩存資源16包括多組指令高速緩存,并具有可選地實(shí)施的功 能,所述功能允許選通和激活單個(gè)指令高速緩存存儲(chǔ)器組??梢酝ㄟ^在關(guān) 聯(lián)的高速緩存集的粒度級(jí)別處對(duì)指令高速緩存組實(shí)施選通控制來單獨(dú)控制 一個(gè)或多個(gè)關(guān)聯(lián)的高速緩存集。前端18是指令流水線的前端。前端18包括指令讀#*制并可以可選地包括使指令讀取引擎(未示出)與指令解碼以;^出流水線(未示出)分離的去耦合緩沖區(qū)。前端18與MERA控制單元12以及解碼邏輯20相 連。解碼邏輯20與前端18、 MERA控制單元12,以及發(fā)出和停止邏輯22相連。解碼邏輯20對(duì)處理器指令進(jìn)行解碼并可以生成流水線停止。發(fā)出和 停止邏輯22將指令發(fā)送到執(zhí)行資源(未示出)以便執(zhí)行。發(fā)出邏輯22可 以實(shí)現(xiàn)保存沒有可用操作數(shù)的指令的緩沖區(qū)。發(fā)出邏輯22與MERA控制 單元12、資源26廣263,以及微代碼引擎24相連。微代碼引擎24將一組指定指令實(shí)現(xiàn)為微代碼。微代碼引擎24與 MERA控制單元12和發(fā)出邏輯22相連。如果在微代碼中實(shí)現(xiàn)的指令之一 ii^流水線,則樣i代碼引擎24停止從主解碼發(fā)出流水線發(fā)出指令,然后從 微代碼引擎24發(fā)出一系列孩l代碼指令以便執(zhí)行。與發(fā)出邏輯22相連的處理器資源26r263包括功能單元,例如,固點(diǎn) 計(jì)算、浮點(diǎn)計(jì)算;用于加載和存儲(chǔ)的地址計(jì)算;分支執(zhí)行;SIMD (單指 令多數(shù)據(jù))以及媒體引擎等。處理器資源26r263中的一個(gè)或多個(gè)資源可以 維持處理器的體系結(jié)構(gòu)狀態(tài)。雖然僅示出了三個(gè)資源26r263作為實(shí)例,但 是本領(lǐng)域的技術(shù)人員將理解,可以使用任意數(shù)量的資源并且每個(gè)資源可以 獨(dú)自或作為子集纟皮單獨(dú)取消激活。處理器資源(例如,此處示出的26r263)的功擬艮大程度上決定了微 處理器所消耗和損耗的總功率。因此,降低和控制處理器資源(例如資源 26r263 )消耗的功率可以實(shí)現(xiàn)對(duì)微處理器總體功率的控制。數(shù)據(jù)預(yù)取資源28將數(shù)據(jù)預(yù)先讀取到數(shù)據(jù)高速緩存30中,以便降低數(shù) 據(jù)高速緩存未命中的次數(shù)。數(shù)據(jù)高速緩存30包括數(shù)據(jù)高速緩存資源32r322 以包括具有可選機(jī)制(其控制數(shù)據(jù)高速緩存組的取消激活和激活)的多組 數(shù)據(jù)高速緩存??梢栽陉P(guān)聯(lián)的數(shù)據(jù)高速緩存集(未示出)的粒度級(jí)別處實(shí) 現(xiàn)數(shù)據(jù)高速緩存組的選通機(jī)制。所述選通機(jī)制可以單獨(dú)取消激活一個(gè)或多 個(gè)關(guān)聯(lián)的數(shù)據(jù)高速緩存30的集合。將數(shù)據(jù)高速緩存資源32r322示為兩個(gè) 示例性組,但是可以使用任意數(shù)量的數(shù)據(jù)高速緩存組。中斷控制邏輯34和資源激活控制寄存器36與MERA控制單元12相 連。資源控制激活總線38將MERA控制單元12與處理器核心10上的其 他資源(如讀取地址預(yù)測(cè)單元14、指令高速緩存資源16、處理器資源 26r263、數(shù)據(jù)預(yù)取資源28,以及數(shù)據(jù)高速緩存30)相連。MERA控制單元12與前端18、解碼邏輯20、發(fā)出邏輯22和孩吏代碼引擎24相連。諸如讀取地址預(yù)測(cè)單元14、指令高速緩存資源16、資源26r263、數(shù) 據(jù)預(yù)取資源28,以及數(shù)據(jù)高速緩存30之類的資源的部分或全部實(shí)現(xiàn)特殊 的輸入端口 40r408,所述端口允許這些資源接受控制資源在活動(dòng)模式與選 通模式之間轉(zhuǎn)變的控制信號(hào)。輸入端口 4(h-40s示為到處理器資源的連接。 輸入端口 4(h-40s通過控制激活總線38將相應(yīng)的資源與MERA控制單元 12相連。MERA控制單元12通過在資源控制激活總線38上驅(qū)動(dòng)相應(yīng)的控制信 號(hào)來控制多個(gè)微處理器資源??偩€38可以實(shí)現(xiàn)為一組直接控制資源激活的 專用點(diǎn)對(duì)點(diǎn)信號(hào),也可以作為實(shí)現(xiàn)通信協(xié)議的共享總線來實(shí)現(xiàn)。所述通信 協(xié)議可以包括各種功能,例如,斷言在激活控制總線38的單個(gè)或多個(gè)周期 內(nèi)^L激活的一個(gè)或多個(gè)資源的ID (標(biāo)識(shí))以及凈皮取消激活的資源的ID。MERA控制單元12 ^f吏用前端總線42和解碼邏輯總線44與核心10的 解碼邏輯12或前端18相連,或者同時(shí)與解碼邏輯12以及前端18相連。 MERA控制單元12使用總線42和44上的這些連接監(jiān)視處理器流水線的 相應(yīng)部分的活動(dòng)并使用此信息控制與激活控制總線38相連的所有處理器 資源在選通才莫式與活動(dòng);f莫式之間的轉(zhuǎn)變。除了 MERA控制單元12以夕卜,資源激活控制寄存器36可以可選地控 制處理器資源在活動(dòng)^^莫式與選通模式之間的轉(zhuǎn)變。控制寄存器總線46將控 制寄存器36與MERA控制單元12相連。控制寄存器36通過諸如系統(tǒng)軟件(例如,操作系統(tǒng)、基本輸入輸出系 統(tǒng)-BIOS等)的讀取和寫入之類的特權(quán)指令來控制。處理器體系結(jié)構(gòu)可以 允許通過一組指令沒置資源激活寄存器36中的相應(yīng)位。ISA (指令集體系 結(jié)構(gòu))可以提供用于寄存器傳輸或存儲(chǔ)器傳輸?shù)闹噶钜栽试S設(shè)置資源激活 寄存器36中的相應(yīng)位;允許在資源激活寄存器36與處理器的其他組件之 間進(jìn)行傳輸;以及可選地允許在寄存器36與存儲(chǔ)器之間進(jìn)行傳輸。指令集 可以被指定為允許相應(yīng)的位設(shè)置,或者可以修改現(xiàn)有的指令集以提供此類 功能。MERA控制單元12通過發(fā)出邏輯連接48與發(fā)出和停止邏輯22相連。 為了控制處理器的功率參數(shù),MERA控制單元12可以強(qiáng)制停止將指令發(fā) 出到執(zhí)行資源。由MERA控制單元12強(qiáng)制執(zhí)行的停止可能影響流水線的 發(fā)出級(jí)中的所有指令,或者影響由MERA控制單元12指定的一個(gè)或多個(gè) 特定指令。發(fā)出和停止邏輯22可以械 沒計(jì)或^f奮改為完全響應(yīng)由MERA控 制單元12斷言的停止請(qǐng)求。MERA控制單元12還可以使用中斷連接50與中斷控制邏輯34相連, 以請(qǐng)求中斷以便程序執(zhí)行以及將中斷捕獲到中斷服務(wù)例程。中斷控制邏輯 34可以被設(shè)計(jì)或修改為完全響應(yīng)由MERA控制單元12斷言的中斷或捕獲 請(qǐng)求。MERA控制單元12還可以可選地使用微代碼總線52與微代碼引擎24 相連,以激活微代碼引擎24以便將微代碼指令發(fā)出到流水線。中斷微代碼發(fā)出請(qǐng)求。MERA控制單元12生成控制信號(hào),所述控制信號(hào)使用核心組件之間 的連接來控制微處理器核心資源在活動(dòng)模式與選通模式之間的轉(zhuǎn)變、請(qǐng)求 流水線停止、請(qǐng)求從微代碼引擎發(fā)出指令以及請(qǐng)求中斷。MERA控制單元 12使用這些控制信號(hào)來確保微處理器核心的總功率不超過預(yù)定的 "P一bound",其稱為有界的功率限制。平均功耗和最大功耗之間具有區(qū)別。平均功率指通常由客戶運(yùn)行的一 組應(yīng)用或程序所平均消耗的功率。節(jié)省平均功率可降低有線應(yīng)用中的能耗, 并延長便攜應(yīng)用中的電池壽命。最大功率(稱為P—max)是由使用微處理器中最大數(shù)量資源的代碼段所消耗的功率。此類代碼段可以是某些計(jì)算密集的應(yīng)用(如科學(xué)計(jì)算,其中處理器必須能夠提供這些代碼段的全部性能)的重要部分。最大功率對(duì)封裝的功率消耗能力以及供電系統(tǒng)的電流傳輸能力設(shè)置了要求。因此,最 大功率對(duì)于;f^處理器的成本具有重大影響。P bound的值小于最大功率P max, P max最大可以等于處理器核心內(nèi)的所有資源消耗的功率的和。在實(shí)現(xiàn)本發(fā)明的微處理器中,芯片供電系統(tǒng)可以被設(shè)計(jì)為傳送有界功率P—bound而非最大功率P—max。類似地,在 本發(fā)明的至少 一個(gè)實(shí)施例中,微處理器芯片封裝可以被設(shè)計(jì)為消耗有界功 率P bound,而非最大功率PMERA控制單元12可以以數(shù)據(jù)選通、功率選通和時(shí)鐘選通的形式執(zhí) 行選通。時(shí)鐘選通是這樣的技術(shù)當(dāng)因?yàn)橛涉i存器的輸出驅(qū)動(dòng)的組件不在 特定的時(shí)鐘周期內(nèi)使用,或因?yàn)殒i存器的輸入處沒有有效數(shù)據(jù),或者是因 為需要保留在先前某個(gè)時(shí)鐘周期內(nèi)保存在鎖存器中的舊數(shù)據(jù),而不需要特 定鎖存器接受和保存新數(shù)據(jù)時(shí),阻止去往該鎖存器的時(shí)鐘信號(hào)進(jìn)行切換。 時(shí)鐘選通只能節(jié)省功率的動(dòng)態(tài)部分或切換部分。時(shí)鐘選通可以以一個(gè)鎖存 器、 一組鎖存器的粒度實(shí)現(xiàn),也可以以諸如預(yù)取單元或浮點(diǎn)單元之類的微 處理器資源的粒度實(shí)現(xiàn)。功率選通(也稱為Vdd選通)是另一種公知的功率節(jié)省技術(shù)。此技術(shù) 包括在配電網(wǎng)絡(luò)與微處理器組件的功率輸出之間插入高端設(shè)備(header device)。備選地,可以在接地分布網(wǎng)絡(luò)與微處理器組件的接地輸入之間 插入低端設(shè)備(footer device )??蛇x地,可以同時(shí)實(shí)現(xiàn)低端設(shè)備和高端設(shè) 備。所述高端設(shè)備通常實(shí)現(xiàn)為PFET,而所述低端設(shè)備通常實(shí)現(xiàn)為NFET。 通過關(guān)閉高端設(shè)備和/或低端設(shè)備,可以斷開組件與電源和/或地的連接,導(dǎo) 致降^f氏切換功率和泄漏功率。上述功率節(jié)省技術(shù)(例如,功率選通、數(shù)據(jù)選通和時(shí)鐘選通)在此處總稱為"選通"。因此,選通指三種所述的功率節(jié)省技術(shù)中的任意一種, 或這三種技術(shù)的任意組合。術(shù)語"活動(dòng)"指組件不受選通時(shí)的模式。MERA 控制單元12用于激活#:處理器組件或資源的選通,即,MERA控制單元 12將孩吏處理器組件在活動(dòng)與選通模式之間切換。將資源切換到選通模式稱 為取消激活資源,將資源從選通模式切換到活動(dòng)模式或正常操作模式稱為 激活資源。圖2示出了本發(fā)明的示例性實(shí)施例中的微處理器組件與MERA控制單 元之間的示例性接口。在示例性接口中,功率選通用作功率節(jié)省選通^t支術(shù)。資源54位于處理器核心上并包括可選通組件56和不可選通組件58。不可 選通組件58可以包括一些保存資源54的狀態(tài)所需的寄存器和存儲(chǔ)器陣列。 例如,如果資源54是浮點(diǎn)單元,則浮點(diǎn)寄存器堆(registerfile)可以實(shí)現(xiàn) 為不可選通組件58,而諸如加法器、乘法器和旁路之類的所有功能單元可 以實(shí)現(xiàn)為可選通組件56。不可選通組件58內(nèi)的所有電路均與地60和電源 62直接相連??蛇x通組件56內(nèi)的所有電路均與虛擬地64和虛擬電源66 相連。虛擬電源66通過高端i殳備68與電源62去耦合,虛擬地64通過低端 設(shè)備70與地60去耦合。高端設(shè)備68和低端設(shè)備70通過當(dāng)資源54被導(dǎo)向 ii^v選通模式時(shí)斷言的控制信號(hào)72進(jìn)行控制。低端設(shè)備70或高端設(shè)備68 都可以不存在。如果沒有高端i殳備68 ,則虛擬電源66直接與配電網(wǎng)絡(luò)62 相連。如果沒有低端設(shè)備70,則虛擬地64直接與接地分布網(wǎng)絡(luò)60相連。資源54通過輸入端口 409 (有關(guān)其他類似端口的信息,請(qǐng)參見圖1, 40r403 )與資源控制激活總線58相連??刂聘叨薸殳備68和低端i殳備70 的控制信號(hào)72可以直接與輸入端口 409相連。在至少一個(gè)實(shí)施例中,將輸 入控制信號(hào)鎖存在寄存器74中并在再緩沖塊76中另外進(jìn)行再緩沖。再緩 沖塊76中可以具有多個(gè)由流水線鎖存器分隔的流水線級(jí)。在至少一個(gè)實(shí)施例中,根據(jù)資源激活總線38 (參見圖1)上的協(xié)議的 實(shí)施方式,可以包括總線接口邏輯78??偩€接口邏輯78可以通過將在資 源激活控制總線38上斷言的資源ID與分配給此資源54的ID相匹配來識(shí) 別導(dǎo)向資源54的控制信號(hào)。在至少一個(gè)實(shí)施例中,總線接口邏輯78可以 支持總線協(xié)議。本領(lǐng)域的技術(shù)人員將理解可以使用各種協(xié)議。圖3是示出本發(fā)明的示例性實(shí)施例中控制微處理器資源的取消激活和 激活的流程圖。在此流程圖中,應(yīng)用了按需(或遲緩)資源激活策略和按 需(或遲緩)取消激活策略。在每個(gè)周期內(nèi),MERA控制單元12監(jiān)視指 令流水線的前端18和(可選地)解碼邏輯20 (參見圖1)中的活動(dòng),如步 驟80所示。此監(jiān)視包括從指令緩沖器(未示出)中存儲(chǔ)的指令,或針對(duì)經(jīng) 過解碼級(jí)20的指令來收集資源使用率信息。在每個(gè)周期內(nèi),對(duì)于要從指令緩沖器發(fā)出的每個(gè)指令或一組指令,或經(jīng)過解碼邏輯20 (未示出)的每個(gè)指令或一組指令,將在步驟82執(zhí)行檢 查以查看是否有任何指令要求訪問不可用的資源,即當(dāng)前關(guān)斷(gated off) 的資源。如果沒有指令需要選通的資源,則允許指令或指令組繼續(xù)步驟84 的解碼和發(fā)出過程。如果請(qǐng)求的資源之一被標(biāo)記為關(guān)斷(即不可用),則 MERA控制單元12檢查資源是否符合被關(guān)斷的條件(轉(zhuǎn)至步驟86)。在 步驟84,允許指令或指令組正常繼續(xù)解碼和發(fā)出過程,因?yàn)楫?dāng)前發(fā)出和解 碼周期內(nèi)沒有任何指令需要選通(并且因此不可用)的資源。步驟84完成"正常的"執(zhí)行循環(huán),即沿步驟80、 82、 84和80執(zhí)行。 此循環(huán)應(yīng)在表現(xiàn)出規(guī)則行為的程序的多數(shù)執(zhí)行周期內(nèi)循環(huán)。當(dāng)程序按照此 正常循環(huán)來循環(huán)執(zhí)行時(shí),不執(zhí)行任何與通過MERA控制單元12(參見圖1) 實(shí)現(xiàn)的MERA控制機(jī)制關(guān)聯(lián)的操作,并且不會(huì)帶來任何性能損失。步驟80、 82、 86、 88、 92、 96、 84和80的第二循環(huán)稱為"程序階段 改變循環(huán)"。如果在步驟82有任何指令需要選通的資源,則控制移至步驟 86。在步驟86, MERA控制單元12檢查是否有足夠數(shù)量的資源適合被選 通,以便允許激活請(qǐng)求的資源而不超過功率邊界P—boimd。對(duì)于步驟86 中的計(jì)算,硬件(圖9中示出了將在下文中描述的此類硬件的實(shí)例)計(jì)算 未標(biāo)記為適合關(guān)斷的資源(即保持活動(dòng)的資源)與請(qǐng)求激活的資源的功率 權(quán)重的總和。如果所述總和等于或小于預(yù)定的功率邊界P—bound,則控制 流向步驟88,否則將在步驟卯指定要選通的資源。在步驟88,從在步驟86被標(biāo)記為適合關(guān)斷的資源的列表中選擇一組 資源以便關(guān)斷。如果被標(biāo)記為適合關(guān)斷的資源數(shù)量多于使處理器功率保持 低于邊界P一bound所需的資源數(shù)量,則可以使用最近最少使用算法或使用 軟件提示,或任何其他算法(包括隨機(jī)技術(shù))指定要選通的資源。在執(zhí)行 步驟88之后執(zhí)行步驟92,在步驟92,將取消激活所有指定的資源。在步驟92, MERA控制單元12通過在資源激活總線38上斷言相應(yīng)的 信號(hào)來引導(dǎo)指定要選通的資源切換到選通模式。在步驟96, MERA控制單元12通過在資源激活總線38上斷言相應(yīng)的控制信號(hào)來激活要請(qǐng)求激活的資源。在步驟96, MERA控制單元12可以 強(qiáng)制實(shí)施若干停止周期以便在向通知激活的資源發(fā)出指令之前,允許這些 資源完成激活過程。在步驟96可能需要額外的停止周期,以避免激活過程 在被激活的資源中導(dǎo)致的臨時(shí)功率增加,并降低電流消耗中的可能峰值。步驟96完成稱為"程序階段改變循環(huán)"的步驟80、 82、 86、 88、 92、 96、 84和80的第二循環(huán)。此循環(huán)應(yīng)偶爾由"行為規(guī)范的"程序在ii^新 程序階段(其使用一組新的資源)時(shí)執(zhí)行。所述程序階段改變循環(huán)導(dǎo)致零 性能損耗或最小性能損耗。所述性能損耗(如果有)可能是由在允許發(fā)出 請(qǐng)求在步驟96激活的資源的指令之前,允許這些資源準(zhǔn)備好處理新指令所 需的停止周期導(dǎo)致的。MERA控制單元12可以在步驟96強(qiáng)制實(shí)施額外的 停止周期,以避免激活過程在被激活的資源中導(dǎo)致臨時(shí)功率增加,并降低 電流消耗中的峰值。如果在步驟86, MERA控制單元12找不到足夠數(shù)量的適合選通的資 源,則MERA控制單元12啟動(dòng)步驟卯。在步驟90,選擇要選通的資源。 與步驟88不同,在步驟卯,將所有資源均視為取消激活的候選對(duì)象,包 括那些當(dāng)前正在使用的資源。以這樣的方式指定要取消激活的資源未指 定為取消激活(即資源保持活動(dòng)狀態(tài))的所有資源的總功率和被請(qǐng)求激活 的資源的功率不超過預(yù)定的功率限制P—bound??梢允褂萌魏斡糜谶x擇要 關(guān)斷的資源的技術(shù),包括諸如隨機(jī)選擇之類的技術(shù)。作為可選的性能優(yōu)化 特性,可以選擇要取消激活的資源,以使MERA控制單元12在以后轉(zhuǎn)至 步驟90的可能性變?yōu)樽钚?。在步驟94,在MERA控制單元12啟動(dòng)取消激活序列之前,允許排空 被指定為取消激活的資源中的流水線。排空流水線允許正在由指定的資源 處理的所有指令(包括那些在發(fā)出級(jí)排隊(duì)的指令)完成其執(zhí)行。在步驟94, MERA控制單元12可以通過強(qiáng)制實(shí)施停止周期、啟動(dòng)微代碼發(fā)出,以及 將線程的執(zhí)行優(yōu)先級(jí)切換為較低級(jí)別,來可選地懲罰被確定為表現(xiàn)出不規(guī) 則行為的程序線程。MERA控制單元12還可以可選地通過中斷將不規(guī)則 活動(dòng)報(bào)告給系統(tǒng)軟件。步驟92完成稱為"不規(guī)則行為循環(huán)"的步驟80、 82、 86、卯、94、 92、 96、 84和80的第三循環(huán)。此不規(guī)則行為循環(huán)應(yīng)僅由"行為規(guī)范的" 程序極少地執(zhí)行。循環(huán)通過不規(guī)則行為循環(huán)的過程所導(dǎo)致的性能損失要大 于通過階段改變循環(huán)所導(dǎo)致的性能損失。在指定為取消激活的資源完成取消激活過程之前,不會(huì)激活所請(qǐng)求的 資源,即使這可能帶來性能損失。這確保了即使在表現(xiàn)出不規(guī)則行為的程 序(即,未遵循針對(duì)給定微處理器核心規(guī)定的資源使用準(zhǔn)則的程序)出現(xiàn) 性能損失時(shí),也能保持核心功率低于最大功率邊界Pj)ound。圖4是示出本發(fā)明的示例性實(shí)施例中控制微處理器資源的取消激活和 激活的流程圖。將如以上在圖3的上下文中所述的那樣執(zhí)行正常的執(zhí)行循 環(huán)。將根據(jù)下文所述修改階段改變。選擇所有在步驟86標(biāo)記為適合關(guān)斷的 資源以便關(guān)斷,這無需具有圖3中示出的步驟88,其中僅從一組符合條件 的資源選擇一些資源以便關(guān)斷。在步驟86之后緊接著執(zhí)行步驟92,將在 步驟92中取消激活所有符合條件的資源。將關(guān)斷所有符合條件的資源。因此,關(guān)斷的資源數(shù)量多于使功率保持 低于P一bound所需的數(shù)量。這可以額外降低平均功率,但是,結(jié)果會(huì)導(dǎo)致 在步驟80,遇到需要選通的資源的指令的幾率更大。因此使經(jīng)過階段改變 循環(huán)的頻率增大。不規(guī)則行為循環(huán)如以上在圖3的上下文中所述。圖5是示出用于資源對(duì)的存儲(chǔ)在表中的按需激活和取消激活策略的流 程圖。步驟的正常執(zhí)行流循環(huán)(80->82->84->80 )如以上在圖3和圖4的 上下文中所述。對(duì)于階段改變循環(huán),控制流遵循圖3中從步驟80到步驟 82的流程。在步驟110, MERA控制單元12檢查請(qǐng)求激活的資源(或一組資源)。 MERA控制單元12檢查已被指定為與請(qǐng)求激活的資源互斥的資源(或一 組資源)是否正在使用中。如果MERA控制單元12或在本發(fā)明的實(shí)施例 中實(shí)施互斥技術(shù)的另一處理器元件判定沒有任何被指定為與請(qǐng)求激活的資 源互斥的資源正在使用中,則MERA控制單元12將引導(dǎo)控制轉(zhuǎn)至步驟92, 然后如圖3所述執(zhí)行一系列步驟92->96->84->80。如果至少一個(gè)被指定為與請(qǐng)求激活的資源(或一組資源)互斥的資源 正在使用中或計(jì)劃由流水線中的一個(gè)或多個(gè)指令使用,過程將移至步驟94。接下來的一系列步驟(94->92->96->84->80 )對(duì)于不規(guī)則行為是相同 的并如以上在圖3的上下文中所述。對(duì)于步驟86中的計(jì)算,硬件(圖8 中示出了將在下文描述的此類硬件的實(shí)例)在表中進(jìn)行查找,所W針對(duì) 每個(gè)資源存儲(chǔ)了指定為互斥的資源的列表以及指示所述資源當(dāng)前是否正在 使用中的位。圖6是示出本發(fā)明的示例性實(shí)施例中控制微處理器資源的取消激活和 激活的流程圖。實(shí)現(xiàn)了按需(或"遲緩")資源激活策略和"迫切的"取 消激活策略以降低平均功率以及微處理器的最大功率P—max。迫切的(或 "渴望的,,)和"遲緩的,,策略通常是用于限定特定試探過程的術(shù)語。迫 切的或渴望的策略通常表示在預(yù)期發(fā)生事件時(shí)以預(yù)測(cè)的方式或主動(dòng)地利用 最早可用或可行的機(jī)會(huì)做出特定的決策;遲緩的策略表示將決策延遲到可 能的最晚時(shí)間。使用了三種步驟循環(huán)正常的執(zhí)行循環(huán)、程序階段改變循環(huán)以及不規(guī) 則行為循環(huán)。用于選通資源的決策和選通指定資源的步驟實(shí)現(xiàn)為正常的執(zhí) 行循環(huán)的一部分。正常的執(zhí)行循環(huán)的路徑為依次執(zhí)行步驟80、 82、 106、 104和84,或80、 82、 106和84。如果沒有任何被請(qǐng)求激活的資源,則執(zhí)行步驟106。在步驟106, MERA 控制單元12檢查是否有任何處理器資源符合取消激活的條件。對(duì)于符合取 消激活條件的資源,流水線中的任何指令都不能使用該資源。進(jìn)而,在步 驟106處指定要取消激活的資源中使用資源使用歷史和可選的軟件提示。 可以使用任何公知的資源靜默預(yù)測(cè)器。如果在步驟106處將一個(gè)或多個(gè)資 源標(biāo)識(shí)為符合取消激活的條件,則在步驟104取消激活這些資源并且允許 指令在步驟84繼續(xù)解碼和發(fā)出過程。否則,控制路徑直接轉(zhuǎn)至步驟84。 步驟84完成正常的執(zhí)行循環(huán)。如果在步驟82請(qǐng)求激活一個(gè)或多個(gè)資源,則控制轉(zhuǎn)至步驟IIO。在步 驟110, MERA控制單元12 (參見圖1)檢查是否可以在不超過預(yù)定功率邊界P—bound的情況下激活被請(qǐng)求激活的資源。檢查此條件的機(jī)制類似于 在步驟86中使用的如在圖3中所示以及在上文中所述的機(jī)制。硬件(圖9 中示出了將在下文描述的此類硬件的實(shí)例)計(jì)算活動(dòng)的資源以及被請(qǐng)求激 活的資源的功率權(quán)重的總和。如果所述總和等于或小于預(yù)定功率邊界 P一bound,則過程繼續(xù)到步驟96。否則在步驟90指定要選通的資源。在步驟96, MERA控制單元12激活被請(qǐng)求激活的資源。步驟96完成 程序階段改變循環(huán)。如果在步驟110, MERA控制單元12找不到足夠數(shù)量 的符合選通條件的資源,則MERA控制單元轉(zhuǎn)至步驟卯,在步驟90選擇 要選通的資源。與上文在圖3中所述的步驟94和92類似的系列步驟94 和步驟108完成不規(guī)則行為循環(huán)。圖7是示出了本發(fā)明的示例性實(shí)施例中使用迫切的資源取消激活和按 需資源激活策略控制資源的互斥激活的流程圖。正常的執(zhí)行流循環(huán)遵循步驟80->82->106->104->84或步驟 80->82->106->84->80。對(duì)于階段改變循環(huán),控制流遵循從步驟80到步驟 112的順序,如以上在圖6的上下文中所述。在步驟112, MERA控制單 元12檢查被請(qǐng)求激活的資源(或一組資源),查看已被指定為與被請(qǐng)求激 活的資源互斥的資源(或一組資源)是否已關(guān)斷。如果針對(duì)此檢查的答案 為"是",則控制轉(zhuǎn)至步驟96。如果在步驟112,針對(duì)將資源指定為互斥, 答案為"否",也就是說至少一個(gè)被指定為與被請(qǐng)求激活的資源(或一組 資源)互斥的資源尚未被取消激活,則過程移至步驟94。系列步驟 94->108->96->84的其余部分與以上在圖5的上下文中所述的(連同指定互 斥資源(或一組資源)集合的方式)類似。圖8示出了本發(fā)明的示例性實(shí)施例中檢查是否需要以及指定互斥資源 (或資源組)的基于表的硬件結(jié)構(gòu)。可以使用多種技術(shù)為MERA控制單元 12 (參見圖1)指定互斥資源(或一組資源)的集合。在至少一個(gè)實(shí)施例 中,互斥資源集是在硬件中實(shí)現(xiàn)并稱為互斥資源標(biāo)識(shí)符表的示例表114。 此外,將一組指令添加到處理器ISA (指令集體系結(jié)構(gòu))以允許特權(quán)(或 系統(tǒng))軟件讀取互斥資源標(biāo)識(shí)符表中的表項(xiàng)或?qū)⒈眄?xiàng)寫入其中。表114包括列115-126和行130-146。對(duì)于每個(gè)由MERA控制單元12通過資源激活總線38 (參見圖1)控 制的資源,表114都包含一個(gè)表項(xiàng)(示為行)。表114使用列115中的資 源標(biāo)識(shí)符進(jìn)行索引,并且可以實(shí)現(xiàn)多個(gè)讀取端口??赡苄枰鄠€(gè)端口來讀 出表中的多行內(nèi)容。雖然將到解碼邏輯20 (參見圖3)的連接示為一個(gè)連 線,但是每個(gè)周期的帶寬可以是從1到N個(gè)指令(例如,N==8)。對(duì)于進(jìn)入流水線的每組指令,解碼邏輯20標(biāo)識(shí)執(zhí)行每組指令所需的資 源。所請(qǐng)求資源的標(biāo)識(shí)符也可以通過預(yù)解碼邏輯確定,并與指令一起存儲(chǔ) 在指令高速緩存中。使用計(jì)算的索引(或一組索引)(未示出)來訪問表 114。對(duì)于每個(gè)資源,資源表114存儲(chǔ)互斥資源的標(biāo)識(shí)符(在列116中示出)。 列116存儲(chǔ)被指定為與對(duì)應(yīng)于該行的資源互斥的資源的標(biāo)識(shí)符。表114的 列116可以由系統(tǒng)軟件來維護(hù)。處理器的ISA (指令集體系結(jié)構(gòu))實(shí)現(xiàn)加 載表中的列116的表項(xiàng)的指令,同時(shí)還實(shí)現(xiàn)將表中的列116的內(nèi)^儲(chǔ)到 存儲(chǔ)器或在表114與一個(gè)或多個(gè)處理器架構(gòu)的寄存器之間移動(dòng)數(shù)據(jù)的指 令。僅當(dāng)處理器在特權(quán)模式下運(yùn)行時(shí)才能執(zhí)行這些額外指令。列116在系 統(tǒng)引導(dǎo)期間初始化。軟件對(duì)表中的列116的讀寫操作通過端口 150完成。 更新列116的數(shù)據(jù)來自圖1中所示的資源激活控制寄存器36。備選地,列 116的表項(xiàng)可以由硬件在系統(tǒng)加電期間預(yù)加載,例如通過掃描鏈預(yù)加載。如圖所示,可以在表的列116內(nèi)輸入多個(gè)資源。允許使用"與"或者 "或"規(guī)則指定表中的列116內(nèi)的互斥資源。對(duì)于所示實(shí)例,為了激活資 源R4(行136),必須關(guān)斷資源R5和R6 (行136;列116)。當(dāng)表中列 115內(nèi)的資源的功率等于或接近若干資源的功率之和時(shí),列116中的資源 標(biāo)識(shí)符用作"相與"對(duì)(或字符串)。在當(dāng)前實(shí)例中,資源R4的功率接 近資源R5和R6消耗的功率的和。作為"相或"對(duì)(或字符串)輸入列116的資源標(biāo)識(shí)符允許靈活選擇 要取消激活的資源。作為實(shí)例,為了激活資源R7 (行142),必須取消激 活資源R8或R9 (行142;列116 )。類似地,為了激活資源R8 (行144;列115),必須取消激活資源R7或R9 (行144;列116),以及為了激活 資源R9 (行146),必須取消激活資源R7或R8 (行146;列116 )。然 后,如果請(qǐng)求激活資源R8 (行144),而資源R9 (行146)當(dāng)前正在使用 中,但是R7 (行142 )未在使用,則硬件將指定取消激活資源R7 (行144 ), 并允許MERA技術(shù)繼續(xù)執(zhí)行階段改變循環(huán)(參見圖5和圖7),而非不規(guī) 則4亍為循環(huán)。表中的列118指示相應(yīng)行中的資源當(dāng)前是否可用(即處于活動(dòng)狀態(tài))。 每當(dāng)相應(yīng)的資源被激活時(shí),就將列118中的表項(xiàng)設(shè)置為"資源可用,,,并 且每當(dāng)相應(yīng)的資源關(guān)斷時(shí),就將該表項(xiàng)設(shè)置為"資源不可用,,。列118中 的表項(xiàng)將由硬件通過端口 128自動(dòng)更新。從列118讀出的位如圖5和圖7 所示在步驟82中使用,以選擇是繼續(xù)正常的執(zhí)行循環(huán),還是繼續(xù)圖5中的 步驟86 (圖7中的步驟112)。表中的列120的表項(xiàng)指示流水線中是否有任何正在使用(或計(jì)劃使用) 相應(yīng)行的列116中列出的資源的指令。列120中的表項(xiàng)也通過硬件端口 128 自動(dòng)更新。對(duì)于作為"相或"或"相與"字符串輸入列116的每個(gè)資源, 硬件在列120中維護(hù)單獨(dú)的位。每當(dāng)使用資源索引來訪問表114時(shí),將連同列116和列118中的相應(yīng) 位一起,M中讀出列120中的索引表項(xiàng)。從列120讀出的位用于兩個(gè)目 的。首先,這些位用于決定MERA控制單元12 (參見圖1)應(yīng)從步驟86 (或112 )(參見圖5和圖7 )轉(zhuǎn)至程序階段改變循環(huán)還是不規(guī)則行為循環(huán)。 例如,如果請(qǐng)求激活資源R1 (行130),則行130列120中的位將指示被 指定為與R1互斥的資源R2當(dāng)前不在使用中,MERA控制單元12將從圖 5和圖7的步驟86 (112)繼續(xù)到階段改變循環(huán)。但是如果請(qǐng)求激活資源 R2 (行132),則從列120讀出的與資源R2對(duì)應(yīng)的行中的位將指示被指 定為與R2互斥的資源R1當(dāng)前正在使用中,MERA控制單元12將從圖5 和圖7的步驟86 (112)繼續(xù)到不規(guī)則行為循環(huán)。當(dāng)存在多個(gè)用于選擇要取消激活的資源的選項(xiàng)時(shí)(當(dāng)使用"或"規(guī)則 將若干資源輸入兩列時(shí),將發(fā)生這種情況),從列120讀出的位將由選擇邏輯148用來指定要取消激活的資源。例如,如果請(qǐng)求激活資源R7,從列 116讀出的信息將指定必須取消激活資源R8或R9。從列120讀出的位將 指示資源R8不在使用中,而資源R9當(dāng)前正在使用中。在此情況下,選擇 邏輯148將選擇資源R8來取消激活。然后。MERA控制單元12將在圖5 和圖7示出的步驟86 (112)之后繼續(xù)到階段改變循環(huán),而不會(huì)帶來不規(guī) 則行為循環(huán)的性能損失。根據(jù)列122中存儲(chǔ)的值或資源使用率計(jì)數(shù)器逐周期地更新表114中的 列120內(nèi)的位,其方式為每當(dāng)特定資源的資源使用率計(jì)數(shù)器設(shè)置為零時(shí), 列120中與該資源對(duì)應(yīng)的所有"互斥資源正在使用中"表項(xiàng)都設(shè)置為"否"。 每當(dāng)特定資源的資源使用率計(jì)數(shù)器設(shè)置為非零值時(shí),列120中與該資源對(duì) 應(yīng)的所有表項(xiàng)都i殳置為"是"。例如,由于與資源R4 (行136)對(duì)應(yīng)的資 源使用率計(jì)數(shù)器在本實(shí)例中為零,因此列120行138和140中的表項(xiàng)均設(shè) 置為"否"。根據(jù)列122中的表項(xiàng)來更新列120中的表項(xiàng)所需的硬件包括檢測(cè)零值 的電路,以及首先發(fā)現(xiàn)列120中要求更新的相應(yīng)表項(xiàng)及使用寫入端口 128 執(zhí)行所需更新的邏輯。當(dāng)特定資源的資源使用率計(jì)數(shù)器更改為零或從零進(jìn) 行更改時(shí),搜索列120中需要更新的表項(xiàng)包括掃描列116中的表項(xiàng)以檢測(cè) 哪些行將該資源列為互斥。備選地,硬件可以使用列116的反向映射來維 護(hù)表。例如,反向映射表將在行130中列出資源R2,在行132中列出資源 Rl,以及在行136中列出資源R5和R6。表114中的列122維護(hù)每個(gè)資源的資源使用率計(jì)數(shù)器。列122中的計(jì) 數(shù)器由硬件通過端口 128逐周期地更新。每當(dāng)使用特定資源的指令進(jìn)入流 水線時(shí),將遞增列122中的相應(yīng)表項(xiàng)內(nèi)的計(jì)數(shù)器。每當(dāng)使用特定資源的指 令完成執(zhí)行(也就是說,該指令從處理器流水線中退出)或從流水線清倉 時(shí),就遞減列122中的相應(yīng)表項(xiàng)內(nèi)的計(jì)數(shù)器。例如,如果使用資源R1指 令進(jìn)入流水線,則與行130列122中的資源Rl對(duì)應(yīng)的計(jì)數(shù)器將從5遞增 到6。列120中的計(jì)數(shù)器內(nèi)的非零值指示對(duì)應(yīng)的資源正在使用中。計(jì)數(shù)器 的零值指示對(duì)應(yīng)的資源不在^f吏用中。表114中的列124存儲(chǔ)軟件提示,所述提示旨在將有關(guān)已知的對(duì)應(yīng)資 源的使用率信息與軟件進(jìn)行關(guān)聯(lián)。列124與列116相同,由軟件通過端口 150進(jìn)行更新。寫入軟件提示列的指令可供系統(tǒng)和用戶代碼使用。軟件提 示的實(shí)例包括表示未預(yù)期由程序使用對(duì)應(yīng)的資源的"未使用",或者表示 預(yù)期由該程序經(jīng)常使用對(duì)應(yīng)的資源的"經(jīng)常使用"。只要存在多個(gè)用于指 定要取消激活的資源的選項(xiàng),就從表讀出軟件提示,并且所述提示由指定 要取消激活的資源的邏輯148使用。例如,如果請(qǐng)求激活資源R9,則必須 取消激活資源R7或R8。由于這些資源當(dāng)前都不在使用中,因此選擇邏輯 148將使用從列124讀出的用于資源R7和R8的信息。資源R7的軟件提 示指示該資源可能再次由程序使用。然后,資源R8將被指定為取消激活, 并且資源R7將保持活動(dòng)模式。獨(dú)占資源標(biāo)識(shí)符表中的軟件提示列124是 可選的。軟件提示列124的更新來自圖1中的資源激活控制寄存器36。表114可以可選地實(shí)現(xiàn)存儲(chǔ)資源的使用率歷史的列126。此使用率歷 史信息可以由指定要取消激活的資源的選擇邏輯148使用。每當(dāng)存在多個(gè) 用于指定要取消激活的資源的選項(xiàng),并且不能根據(jù)從列120和124讀出的 位來做出決策時(shí),選擇邏輯148將通過使用率歷史信息來做出決策。將選 擇不經(jīng)常使用(或最近不常使用)的資源來取消激活。列126中的使用率歷史信息還用于在圖6和圖7中所示的步驟106中 選捧要取消激活的資源,其中資源使用率歷史列126記錄每個(gè)資源在最近 時(shí)間內(nèi)被使用的計(jì)數(shù),或者上次使用資源是在多少個(gè)周期之前。將從列126 讀出的數(shù)據(jù)與可以由特權(quán)軟件為每個(gè)資源或每個(gè)資源組分別設(shè)置的闞值進(jìn) 行比較。如果資源使用率計(jì)數(shù)器值下降到為該資源設(shè)置的閾值以下,則比 較邏輯152將在步驟106 (參見圖6和圖7)發(fā)信號(hào)通知圖1中的MERA 控制單元12所述資源符合取消激活的條件。類似地,在維護(hù)指示上次使用 資源的周期的計(jì)數(shù)器的實(shí)施例中,如果計(jì)數(shù)器超過為該資源設(shè)置的閾值, 則比較邏輯152將在步驟106發(fā)信號(hào)通知圖1中的MERA控制單元12(參 見圖6和圖7)所述資源符合取消激活的條件。此信息由MERA控制單元 12用于在步驟106做出決策。這僅適用于圖6和圖7中所示的為取消激活資源實(shí)現(xiàn)迫切策略的實(shí)施例。上述的表114是一個(gè)示例,本領(lǐng)域的技術(shù)人員將理解在實(shí)現(xiàn)資源標(biāo)識(shí) 符表時(shí)可以存在各種變型,例如,不同的列順序、表的轉(zhuǎn)置、不同的索引 編制機(jī)制,以及不同的更新表中的各個(gè)字段的策略(例如僅在偶數(shù)周期更 新列126)。此外,對(duì)于不同的列,軟件和硬件更新機(jī)制的各種組合是可 能的。進(jìn)而,只有表中的某些列可以根據(jù)特定應(yīng)用的需求來實(shí)現(xiàn)。圖9示出了本發(fā)明的示例性實(shí)施例中控制功率選通的示例性硬件結(jié) 構(gòu)。將在下文描述在本發(fā)明的至少一個(gè)實(shí)施例中使用的MERA控制單元。 資源使用率表154提供在若干步驟處控制MERA單元流所需的信息。列 156包括資源標(biāo)識(shí)符;列158包括軟件提示/指示;列160包括資源使用率 歷史;列162包括資源使用率計(jì)數(shù)器;列164包括指示資源是否符合取消 激活條件的資源位;列166包括資源可用性指示器;并且列168包括資源 功率指示器。將行170-178分配給資源標(biāo)識(shí)符Rl-R7。這些列156-162的 更新方式類似于以上在圖8上下文中針對(duì)表114描述的方式。資源使用率表154的列164示出了對(duì)應(yīng)行中的資源是否符合取消激活 的條件。列164的表項(xiàng)'T,指示符合條件而表項(xiàng)"0"指示資源不符合取 消激活的條件。這些位由硬件根據(jù)對(duì)應(yīng)行的列158、 160和162中的值進(jìn)行 更新。如果列162中的資源使用率計(jì)數(shù)器為非零,則對(duì)應(yīng)的資源不符合取 消激活的條件。如果列158中的軟件提示指示該資源經(jīng)常由程序使用,則 對(duì)應(yīng)的資源不符合取消激活的條件。否則,如果列160中的資源^_用率歷 史低于預(yù)定(可由軟件更新)閾值,以^/或者可選的軟件提示指示該資源 不太可能由程序使用,則列164中的對(duì)應(yīng)位被設(shè)置為"1",指示資源符合 取消激活的條件。資源^使用率表的列168存儲(chǔ)每個(gè)資源的功率。這些值可以在系統(tǒng)加電 時(shí)加載,也可以在制造時(shí)被硬編碼。在每個(gè)周期>^ 154讀出列166和168的值并將其轉(zhuǎn)發(fā)到電路182。 如果列166中的值為'T,,則對(duì)應(yīng)的數(shù)據(jù)選通電路182將從列168讀出的 值轉(zhuǎn)發(fā)到多輸入加法器196,否則,如果列166中的值為"0",則執(zhí)行選通的數(shù)據(jù)選通電路182將零轉(zhuǎn)發(fā)到多輸入加法器196。多輸入加法器196 將所有行中的值相加,然后將結(jié)果(它是當(dāng)前活動(dòng)的所有資源的總功率) 轉(zhuǎn)發(fā)到多輸入加法器186。在每個(gè)周期從表中讀出列164和168的值并將其轉(zhuǎn)發(fā)到數(shù)據(jù)選通電路 182。如果列164中的值為"1",則對(duì)應(yīng)的數(shù)據(jù)選通電路182將從列168 讀出的值轉(zhuǎn)發(fā)到多輸入加法器184,否則,如果列164中的值為"0",則 執(zhí)行選通的數(shù)據(jù)選通電路182將零轉(zhuǎn)發(fā)到多輸入加法器184。多輸入加法 器184將所有行170-178中的值相加,然后將結(jié)果(它是可以取消激活的 所有資源的總功率)轉(zhuǎn)發(fā)到多輸入加法器186。從加法器186中的結(jié)果中 減去從加法器184接收的值(也就是說,在將值添加到其余的操作數(shù)之前 更改值的符號(hào))。被請(qǐng)求激活的資源的列168中的值也被轉(zhuǎn)發(fā)到多位加法器186。加法 器186的其余輸入連接到保存此文檔中先前定義的P—bound值的寄存器 188。寄存器188在系統(tǒng)加電期間寫入,并且可以可選地實(shí)現(xiàn)為可由系統(tǒng)軟 件寫入。從加法器186的其他輸入處的值中減去寄存器188的值(也就是 說,在將值添加到其余的操作數(shù)之前更改值的符號(hào))。將加法器186的輸 出的符號(hào)轉(zhuǎn)發(fā)到符號(hào)檢測(cè)器l卯。符號(hào)檢測(cè)器的輸出192指示是否有足夠 數(shù)量的資源符合關(guān)斷的條件。例如,可以使用輸出192在圖3、圖4和圖6 中示出的步驟86 (110)處判定是否有足夠數(shù)量的資源符合關(guān)斷的條件。為了簡潔,以簡化的方式示出了加法器186、 194、 196和184以及符 號(hào)檢測(cè)器190的邏輯視圖。這些加法器186、 194、 196和184以及符號(hào)檢 測(cè)器l卯可以實(shí)現(xiàn)為統(tǒng)一的多輸入進(jìn)位保留加法器。通過與圖8中示出的硬件結(jié)構(gòu)類似的硬件結(jié)構(gòu),使用以上在圖8的獨(dú) 占資源標(biāo)識(shí)符表114的上下文中說明的額外步驟,可以支持要取消激活的 資源的選擇。圖10是本發(fā)明的示例性實(shí)施例中檢查推測(cè)性指令的狀態(tài)的流程圖。流 程圖198中示出了 MERA控制單元12所使用的控制流中的一系列步驟。 流程圖198中的系列步驟借助推測(cè)性發(fā)出提高了微處理器中的指令執(zhí)行效率。在檢測(cè)到請(qǐng)求訪問關(guān)斷的資源的指令之后ii^示出的系列控制步驟。例如,到所示的系列步驟的控制流可以來自步驟82,如圖3-7中所示。步驟200是控制序列的第一步,將在此步驟檢查請(qǐng)求訪問關(guān)斷的資源 的指令的狀態(tài)。如果指令為非推測(cè)性指令(也就是說,已解決該指令之前 的所有分支),則控制在退出點(diǎn)206退出,然后繼續(xù)檢查控制是需要轉(zhuǎn)至 程序階段改變循環(huán)還是不規(guī)則行為循環(huán)(例如,參見圖3-7)。如果在步驟200判定指令為推測(cè)性指令(也就是說,該指令之前存在 至少一個(gè)分支尚未解決),則控制轉(zhuǎn)至步驟202。在此步驟,停止發(fā)出指 令的過程,直至已解決所有之前的分支。在從步驟202退出時(shí),指令狀態(tài) 變?yōu)榉峭茰y(cè)性的或指令4皮從流水線清倉。在步驟204,將檢查指令的狀態(tài)。如果此指令已變?yōu)榉峭茰y(cè)性指令, 則控制退出此可選的步驟序列,然后繼續(xù)檢查控制是需要轉(zhuǎn)至程序階段改 變循環(huán)還是不規(guī)則行為循環(huán)(例如,參見圖3-7)。如果指令被清倉,則控 制在退出點(diǎn)208退出此可選的步驟序列,然后繼續(xù)執(zhí)行圖3-7中所示的步 驟80或84,或者通過退出點(diǎn)206繼續(xù)執(zhí)行圖6-7中所示的步驟82。圖11是示出本發(fā)明的示例性實(shí)施例中檢查由處理器執(zhí)行的程序線程 的不規(guī)則行為的流程圖??刂屏髦写嬖谌舾煽梢栽谠撎幉迦肓鞒虉D210中 所示的步驟序列的點(diǎn)。當(dāng)在圖3-7中的實(shí)施例的控制流內(nèi)檢測(cè)到下列條件 之一后,可以^所示的控制步驟序列a) 檢測(cè)到請(qǐng)求訪問關(guān)斷的資源的指令(例如,圖3-7中所示的步驟 82的"是"分支),或者b) 沒有足夠的可供取消激活的資源(例如,圖3和圖4的實(shí)施例的 步驟86的"否"分支),或者c) 指定為互斥的資源正在使用中(例如,圖5中所示的步驟86的"是,, 分支)或未關(guān)斷(例如,圖7中所示的步驟112的"否"分支)或者d) 無法在不超過設(shè)定的功率限制的情況下激活所請(qǐng)求的資源(例如, 圖6中的實(shí)施例的步驟110的"否"分支)為了實(shí)現(xiàn)步驟214,硬件可以針對(duì)每個(gè)單獨(dú)的資源,或針對(duì)資源組實(shí)現(xiàn)資源激活歷史計(jì)數(shù)器222。這些計(jì)數(shù)器是在激活相應(yīng)的資源時(shí)遞增的老 化計(jì)數(shù)器。此外,對(duì)于每個(gè)資源或一組資源,硬件存儲(chǔ)可由軟件更新的閾 值。 一組比較器224將行230中的計(jì)數(shù)器與行232中的相應(yīng)閾值進(jìn)行比較。 如果任何計(jì)數(shù)器超過相應(yīng)的閾值,則斷言計(jì)數(shù)器輸出處的觸發(fā)信號(hào)226。在步驟214,如果設(shè)置了觸發(fā)器(即,資源激活歷史指示在活動(dòng)模式 與選通模式之間的資源切換頻率高于預(yù)定的資源激活頻率閾值),則控制 轉(zhuǎn)至步驟216。否則,控制在退出點(diǎn)218退出步驟序列,然后返回相應(yīng)的 控制點(diǎn),例如,返回圖3-7中的實(shí)施例的步驟86,或返回圖3-4中所示的 步驟90,以及返回圖5和圖7中所示的步驟94。在步驟216,啟動(dòng)到系統(tǒng)軟件的捕獲(例如,通過對(duì)圖l中ii^中斷/ 捕獲控制塊34的輸入的信號(hào)50斷言相應(yīng)的控制)。所述捕獲向系統(tǒng)軟件 (例如,線程調(diào)度器)指出當(dāng)前正在運(yùn)行的線程組合導(dǎo)致執(zhí)行效率不高, 或者指出當(dāng)前線程表現(xiàn)出不規(guī)則的行為并且應(yīng)被切換到較低優(yōu)先級(jí)的模 式,或者應(yīng)被移至在另一核心上執(zhí)行或應(yīng)被終止。在捕獲期間,可以在軟 件中仿真請(qǐng)求訪問選通的資源的指令。在步驟216之后,從退出點(diǎn)220重 新開始執(zhí)行應(yīng)用代碼。圖12是示出將指令發(fā)出到備選資源來執(zhí)行以避免激活選通的資源的 流程圖??刂屏髦写嬖谌舾煽梢栽谠撎幉迦肓鞒虉D236中所示的步驟序列 的點(diǎn)。當(dāng)在圖3-7中的實(shí)施例的控制流內(nèi)檢測(cè)到下列條件之一后,可以進(jìn) 入流程圖236中控制步驟序列a) 沒有足夠的可供取消激活的資源(例如,圖3和圖4中所示的步驟 86的"否"分支),或者b) 指定為互斥的資源正在使用中(例如,圖5中所示的步驟86的"是,, 分支)或未關(guān)斷(例如,圖7中所示的步驟112的"否,,分支)或者c) 無法在不超過設(shè)定的功率限制的情況下激活所請(qǐng)求的資源(例如, 圖6中所示的步驟110的"否"分支)在步驟240, MERA控制單元12檢查是否可以發(fā)出請(qǐng)求選通的資源的 指令以便在備選資源上執(zhí)行。在備選資源中執(zhí)行可能需要多次發(fā)出指令(即,在多個(gè)周期內(nèi)將指令發(fā)送到同一單元,或者將指令替換為一系列其 他指令以便不需要激活任何選通的資源)。將指令替換為一系列其他指令可以由微代碼引擎(例如,圖1中的微代碼引擎24)來執(zhí)行。此類指令替 換的實(shí)例包括使用一系列加法指令來執(zhí)行乘法指令;使用一系列32位乘法 執(zhí)行64位乘法指令;移位指令和加法指令;以及使用 一 系列標(biāo)量指令執(zhí)行 SIMD (單指令多數(shù)據(jù))指令。另一實(shí)例是在單個(gè)浮點(diǎn)單元上執(zhí)行需要兩 個(gè)浮點(diǎn)單元(如果并行發(fā)出)的一組兩個(gè)浮點(diǎn)指令,所述指令通過相繼發(fā) 出兩個(gè)浮點(diǎn)標(biāo)量指令來執(zhí)行。如果無法將指令發(fā)出到備選資源,則控制在退出點(diǎn)246退出流程圖236 中的步驟序列,然后返回各個(gè)實(shí)施例的相應(yīng)的控制點(diǎn),例如,返回圖3-4 和圖6中的實(shí)施例的步驟90,或返回到圖5和圖7中所示的步驟94。作為步驟240的檢查結(jié)果,如果判定指令可以被發(fā)出到備選資源,則 控制轉(zhuǎn)至步驟242。在步驟242,指令被替換為一系列發(fā)出到備選資源的指 令(可能是順序的),并且控制返回圖3-7中所示的步驟80或步驟84,或 者轉(zhuǎn)至圖6-7中所示的步驟106。接下來將描述插入停止周期。MERA控制單元12 (參見圖1)可以在 以上圖3-7中所述的控制流的不同步驟處強(qiáng)制實(shí)施若干停止周期。例如, 可以在圖3-7中所示的步驟96之后強(qiáng)制實(shí)施若干停止周期,以便允許在步 驟96中被通知激活的資源完成激活過程。此步驟確保了在將任何指令發(fā)出 到所請(qǐng)求的資源之前,所請(qǐng)求的資源已被完全激活。此外,可以在圖3-5 中所示的步驟92與96之間強(qiáng)制實(shí)施其他停止周期,以避免被激活的資源 中的激活過程導(dǎo)致增加臨時(shí)功率。雖然此處參考附圖描述了示例性實(shí)施例,但是應(yīng)當(dāng)理解,本發(fā)明并不 限于此處所述的示例性實(shí)施例,并且在不偏離本發(fā)明的范圍或精神的情況 下,本領(lǐng)域的技術(shù)人員可以在其中實(shí)現(xiàn)各種其他更改和修改。所有此類更 改和修改都旨在被包括在如所附權(quán)利要求定義的本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種用于控制微處理器中的功率參數(shù)的設(shè)備,所述設(shè)備包括資源激活控制單元,其用于控制所述微處理器的最大功率;以及兩個(gè)或更多個(gè)資源,其中所述資源激活控制單元控制所述資源的激活,以使所述微處理器消耗和耗散的功率不超過可配置為低于所述最大功率的預(yù)定值的功率邊界。
2. 根據(jù)權(quán)利要求l的設(shè)備,其中可以通過可編程地控制的機(jī)制來配置 所述功率邊界。
3. 根據(jù)權(quán)利要求1的設(shè)備,還包括第一選擇,其包括微處理器指令請(qǐng)求激活的一個(gè)或多個(gè)資源;以及 第二選擇,其包括除所述第 一選擇中的所述資源以外的一個(gè)或多個(gè)資源,其中所述資源激活控制單元在其選通所述第二選擇中的至少一個(gè)資源之后激活所述第一選擇。
4. 根據(jù)權(quán)利要求3的設(shè)備,其中所述資源控制單元使用功率選通、時(shí)鐘選通、數(shù)據(jù)選通、組合的功率與時(shí)鐘選通、組合的功率與數(shù)據(jù)選通,或 時(shí)鐘與數(shù)據(jù)選通技術(shù)的組合來選通所述第二選擇中的資源。
5. 根據(jù)權(quán)利要求3的設(shè)備,其中所述資源激活控制單元控制所述資源 以確保一個(gè)或多個(gè)激活的資源選擇中的所有資源消耗的總功率不超過所述功率邊界。
6. 根據(jù)權(quán)利要求3的設(shè)備,其中所述資源激活控制單元停止發(fā)出微處 理器指令,直至完全激活所述第一選擇中的所述指令所請(qǐng)求的資源。
7. 根據(jù)權(quán)利要求6的設(shè)備,其中所述資源激活控制單元延遲激活所述 第一選擇中的資源,直至所述第二選擇中的資源完成取消激活過程。
8. 根據(jù)權(quán)利要求3的設(shè)備,其中所述資源激活控制單元通過從由所述 第 一選擇的元素索引的資源表讀取所述第二選擇的 一個(gè)或多個(gè)表項(xiàng)來確定 形成所述第二選擇的要取消激活的資源。
9. 根據(jù)權(quán)利要求8的設(shè)備,其中以硬件、軟件或硬件與軟件的組合來實(shí)現(xiàn)所述資源表。
10. 根據(jù)權(quán)利要求8的設(shè)備,其中可以通過軟件命令、硬件設(shè)備或軟 件與硬件的組合來更新所述資源表。
11. 根據(jù)權(quán)利要求10的設(shè)備,其中所^存儲(chǔ)了由軟件維護(hù)的資源 使用率提示和由硬件維護(hù)的資源使用率計(jì)數(shù)器,在選擇要取消激活的資源 中使用所述提示和計(jì)數(shù)器。
12. 根據(jù)權(quán)利要求11的設(shè)備,其中由硬件通過從硬件維護(hù)的表讀出 微處理器資源的功率值和使用率位并將乘以相應(yīng)資源使用率位的所述功率 值相加來確定所述孩先處理器消耗的最大功率。
13. 根據(jù)權(quán)利要求3的設(shè)備,其中所述資源控制單元選擇所述第二選 擇以使所述微處理器消耗的最大功率不超過所述功率邊界。
14. 根據(jù)權(quán)利要求13的設(shè)備,其中所述資源控制單元選擇所述第二 選擇以取消激活所述第二選擇中的所有資源。
15. 根據(jù)權(quán)利要求14的設(shè)備,其中所述資源控制單元選擇所述第二 選擇,以便在所述第二選擇中選擇保持所述最大功率低于所述功率邊界所 需的最少數(shù)量的資源。
16. 根據(jù)權(quán)利要求3的設(shè)備,其中一檢測(cè)到適合執(zhí)行此類取消激活, 就以迫切的方式實(shí)現(xiàn)所述第二選擇的取消激活,并且其中執(zhí)行所述取消激 活而不考慮所述孩t處理器的最大功率。
17. 根據(jù)權(quán)利要求3的設(shè)備,其中根據(jù)使用率需求在可能的最晚時(shí)間 以遲緩的方式實(shí)現(xiàn)所述第 一選擇中的資源的激活。
18. 根據(jù)權(quán)利要求3的設(shè)備,其中需要使用所述第一選擇中的功率選 通資源的條件將觸發(fā)階段改變循環(huán),以在激活選通的資源之一以前選擇所 述第二選擇中的一個(gè)或多個(gè)未被使用的資源以便關(guān)斷。
19. 根據(jù)權(quán)利要求3的設(shè)備,其中需要在激活所述第一選擇中的資源 之一以前取消激活當(dāng)前活動(dòng)的資源的條件將觸發(fā)不規(guī)則行為循環(huán),所述循 環(huán)將啟動(dòng)取消激活所述第二選擇中的資源之 一 的過程。
20. 根據(jù)權(quán)利要求1的設(shè)備,其中所述資源控制單元導(dǎo)致請(qǐng)求訪問被取消激活的資源之一的推測(cè)性指令停止,直至所述推測(cè)性指令變?yōu)榉峭茰y(cè) 性的或通過指令無效機(jī)制被無效。
21. 根據(jù)權(quán)利要求l的設(shè)備,其中所述資源控制單元確定由所述微處 理器執(zhí)行的程序的不規(guī)則行為并且在做出此類確定時(shí),生成捕獲信號(hào)以降 低所述程序的執(zhí)行優(yōu)先級(jí)或更改線程執(zhí)行計(jì)劃。
22. —種用于控制微處理器中的功率參數(shù)的方法,所述方法包括 控制所述孩i處理器的兩個(gè)或更多個(gè)資源的激活;以及將激活的資源所消耗和耗散的總功率保持為低于功率邊界,所述功率 邊界可以被配置為低于所述微處理器的最大功率的預(yù)定值。
23. 根據(jù)權(quán)利要求22的方法,還包括激活包括微處理器指令請(qǐng)求激活的一個(gè)或多個(gè)資源的第一選擇;以及 選通包括除所述第一選擇中的所述資源以外的一個(gè)或多個(gè)資源的第二 選擇。
24. 根據(jù)權(quán)利要求23的方法,其中所述選通步驟包括在激活所述第一 選擇中的資源之前,對(duì)所述第二選擇中的資源執(zhí)行功率選通、時(shí)鐘選通、 數(shù)據(jù)選通、組合的功率與時(shí)鐘選通、組合的功率與數(shù)據(jù)選通,或組合的時(shí) 鐘與數(shù)據(jù)選通,其中由微處理器指令請(qǐng)求所述第一選擇中的要激活的資源。
25. 根據(jù)權(quán)利要求23的方法,其中所述功率選通步驟包括 停止發(fā)出微處理器指令,直至所述第二選擇中的資源已準(zhǔn)備好被取消激活;以及在激活所述第一選擇中的由所述微處理器指令請(qǐng)求的資源之前取消激 活所述笫二選擇中的資源。
26. 根據(jù)權(quán)利要求23的方法,其中所述選通步驟包括選擇所述第二選 擇中的要被取消激活的資源,以使所述微處理器在指令周期內(nèi)消耗的功率 不超過所述功率邊界。
27. 根據(jù)權(quán)利要求23的方法,其中所述選通步驟包括在出現(xiàn)需要使用 所述第一選擇中的功率選通資源的條件時(shí)觸發(fā)階段改變循環(huán),以在激活至 少一個(gè)選通的資源之前選擇所述第二選擇中的一個(gè)或多個(gè)未被使用的資源以便關(guān)斷。
28. 根據(jù)權(quán)利要求23的方法,其中所述選通步驟包括在出現(xiàn)需要在激 活所述第 一選擇中的至少 一個(gè)資源之前取消激活當(dāng)前活動(dòng)的資源的條件時(shí) 觸發(fā)不規(guī)則行為循環(huán),所述不規(guī)則行為循環(huán)將啟動(dòng)取消激活所述第二選擇 中的資源之一的過程。
29. 根據(jù)權(quán)利要求23的方法,其中所述選通步驟包括停止請(qǐng)求訪問被 取消激活的資源之一的推測(cè)性指令,直至所述推測(cè)性指令變?yōu)榉峭茰y(cè)性的 或通過指令無效機(jī)制被無效。
30. 根據(jù)權(quán)利要求23的方法,還包括通過從由所述第一選擇的元素索 引的資源表讀取所述第二選擇的一個(gè)或多個(gè)表項(xiàng)來確定形成所述第二選擇 的要取消激活的資源。
全文摘要
一種用于控制微處理器(10)中的功率參數(shù)的設(shè)備,所述設(shè)備包括用于控制所述微處理器(10)的最大功率的資源激活控制單元(12)以及兩個(gè)或更多個(gè)資源(261、262、263)。所述資源激活控制單元(12)控制所述資源(261、262、263)的激活,以使所述微處理器(10)消耗和耗散的功率不超過可配置為低于所述最大功率的預(yù)定值的功率邊界。
文檔編號(hào)G06F1/26GK101243372SQ200680030136
公開日2008年8月13日 申請(qǐng)日期2006年7月19日 優(yōu)先權(quán)日2005年8月19日
發(fā)明者A·布于克托蘇諾格盧, H·M·雅各布森, P·博塞, V·久班, V·斯里尼瓦桑, 胡志剛 申請(qǐng)人:國際商業(yè)機(jī)器公司