專(zhuān)利名稱(chēng):基于指令的類(lèi)型和內(nèi)容的處理器功率管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通過(guò)對(duì)給定的指令類(lèi)型或者指令中的特定內(nèi)容不使用處理器的各部分進(jìn)行時(shí)鐘門(mén)控,來(lái)管理處理器的功耗。
背景技術(shù):
在中央處理單元(CPU)中存在著在指令管道的某些級(jí)中操作的多個(gè)不同功能單元。根據(jù)指令的類(lèi)型或者指令中的內(nèi)容,通常不是在同一時(shí)間使用所有這些功能單元。因此,不存在同時(shí)地開(kāi)啟CPU中的所有功能單元的內(nèi)在原因。相反,在任何給定時(shí)刻,一些單元可能不具有要進(jìn)行操作的數(shù)據(jù)。當(dāng)功能單元沒(méi)有數(shù)據(jù)要操作時(shí),其事實(shí)上空閑。但是,仍然饋送活動(dòng)時(shí)鐘的這種空閑單元將由于所接收的時(shí)鐘信號(hào),使得通過(guò)鎖存器的不斷切換(即,翻轉(zhuǎn))而貫穿該單元承受功耗。
x86指令包括一些字段。最基本字段中的三個(gè)字段是指令操作碼字段(例如,move、shift等等)、立即操作數(shù)字段和位移字節(jié)字段。雖然指令管道中的很多功能單元具有處理這些字段的電路,但在管道中移動(dòng)的一些指令并不包含任何位移字節(jié)信息或者立即操作數(shù)信息。在這些情況下,填補(bǔ)這些字段的數(shù)據(jù)并不被使用,其通常包括隨機(jī)數(shù)據(jù)比特。隨著該指令在管道中移動(dòng),雖然并不使用這些字段,但功能單元仍然觀測(cè)到輸入該信息時(shí)它們鎖存器的切換。這種切換進(jìn)一步增加了 CPU的這些功能單元中的功耗。
本發(fā)明通過(guò)示例來(lái)說(shuō)明并且不受附圖的限制,在附圖中,相同的附圖標(biāo)記指示類(lèi)似的元件,其中:
圖1描繪了一種計(jì)算機(jī)系統(tǒng)的實(shí)施例,其中該計(jì)算機(jī)系統(tǒng)能夠基于在該系統(tǒng)中的至少一個(gè)處理器中執(zhí)行的指令的類(lèi)型和內(nèi)容,對(duì)處理器功耗進(jìn)行管理。
圖2描繪了給定的核心中的具體有關(guān)單元和功能邏輯塊,其使該核心能夠通過(guò)指令類(lèi)型確定和指令內(nèi)容確定來(lái)對(duì)核心功耗進(jìn)行管理。
圖3描述了用于跟蹤流經(jīng)指令管道的浮點(diǎn)微操作的狀態(tài)機(jī)的實(shí)施例。
圖4是用于對(duì)譯碼器中的一個(gè)或多個(gè)可編程邏輯陣列進(jìn)行時(shí)鐘門(mén)控的處理的實(shí)施例的流程圖,其中該譯碼器配置為對(duì)進(jìn)入該譯碼器的當(dāng)前指令進(jìn)行譯碼。
圖5是用于當(dāng)在管道中不對(duì)分支指令進(jìn)行譯碼時(shí),對(duì)分支單元進(jìn)行時(shí)鐘門(mén)控的處理的實(shí)施例的流程圖。
圖6是用于當(dāng)在指令管道中不存在浮點(diǎn)指令時(shí),對(duì)浮點(diǎn)單元進(jìn)行時(shí)鐘門(mén)控的處理的實(shí)施例的流程圖。
圖7是用于當(dāng)指令不使用指令的立即和位移字節(jié)字段時(shí),將這些字段清零的處理的實(shí)施例的流程圖。
具體實(shí)施方式
公開(kāi)了基于指令管道中的指令的類(lèi)型和內(nèi)容,對(duì)處理器功率進(jìn)行管理的處理器和方法的實(shí)施例。
圖1描繪了一種計(jì)算機(jī)系統(tǒng)的實(shí)施例,其中該計(jì)算機(jī)系統(tǒng)能夠基于在該系統(tǒng)中的至少一個(gè)處理器中執(zhí)行的指令的類(lèi)型和內(nèi)容,對(duì)處理器功耗進(jìn)行管理。
示出了計(jì)算機(jī)系統(tǒng)100。該計(jì)算機(jī)系統(tǒng)可以是臺(tái)式計(jì)算機(jī)、服務(wù)器、工作站、膝上型計(jì)算機(jī)、手持裝置、電視機(jī)頂盒、媒體中心、游戲控制臺(tái)、集成系統(tǒng)(例如在汽車(chē)中)或者其它類(lèi)型的計(jì)算機(jī)系統(tǒng)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)100包括還稱(chēng)為“處理器”的一個(gè)或多個(gè)中央處理單元(CPU)。雖然在很多實(shí)施例中,可以存在多個(gè)CPU,但在圖1所示的實(shí)施例中,為了簡(jiǎn)單起見(jiàn),只示出了 CPU102。CPU102可以是Intel 公司cpu或者另一個(gè)品牌的cpu。在不同的實(shí)施例中,CPU102包括一個(gè)或多個(gè)核心。CPU102示出為包括四個(gè)核心(核心104、106,108 和 110)。
在很多實(shí)施例中,每一個(gè)核心包括一些內(nèi)部功能模塊/單元/邏輯組件,例如,在核心104的放大視圖中所示出的那些。例如,核心104至少包括指令/數(shù)據(jù)(S卩,層1、LI)高速緩存112、預(yù)取緩沖器114、預(yù)譯碼高速緩存116、指令譯碼器118、分支地址計(jì)算單元120、指令隊(duì)列122、浮點(diǎn)執(zhí)行單元124、分配/引退單元126和時(shí)鐘管理/生成邏輯128。下面參照?qǐng)D2來(lái)更詳細(xì)地討論這些單元和邏輯組件中的一些。通常,與核心104中所示的這些單元相比,在每一個(gè)核心中存在更多的單元、寄存器和其它電路,其包括所示出的每一個(gè)單元的潛在幾個(gè)復(fù)制(例如,一個(gè)或多個(gè)整數(shù)/地址執(zhí)行單元、3個(gè)浮點(diǎn)單元等等),但為了維持圖1的重要構(gòu)成元素的清楚性,沒(méi)有示出其它的單元。
在單線程核心中,每一個(gè)核心可以稱(chēng)為一個(gè)硬件線程。當(dāng)核心是多線程或者超線程時(shí),則在每一個(gè)核心內(nèi)運(yùn)行的每一個(gè)線程也可以稱(chēng)為一個(gè)硬件線程。因此,在計(jì)算機(jī)系統(tǒng)100中運(yùn)行的任何單個(gè)線程的執(zhí)行都可以稱(chēng)為一個(gè)硬件線程。例如,在圖1中,如果每一個(gè)核心是單線程的,則在該系統(tǒng)中存在四個(gè)硬件線程(四個(gè)核心)。另一方面,如果每一個(gè)核心是多線程的,具有同時(shí)維持兩個(gè)線程的狀態(tài)的能力,則在該系統(tǒng)中存在八個(gè)硬件線程(四個(gè)核心,每一個(gè)核心兩個(gè)線程)。
CPU102還可以包括一個(gè)或多個(gè)非LI高速緩存,例如非LI高速緩存112。在很多實(shí)施例中,在CPU102中在任何給定的核心之外存在至少一個(gè)非LI高速緩存(例如,高速緩存130)。另外,在很多實(shí)施例中,在所示出的四個(gè)核心之間共享高速緩存130。在沒(méi)有示出的其它實(shí)施例中,實(shí)現(xiàn)不同于高速緩存130的其它非LI高速緩存。在不同的實(shí)施例中,以不同的方式分配高速緩存130。另外,在不同的實(shí)施例中,高速緩存130可以具有多種不同大小中的一種。例如,高速緩存130可以是8兆字節(jié)(MB)高速緩存、16MB高速緩存等等。另外,在不同的實(shí)施例中,高速緩存130可以是直接映射高速緩存、全相聯(lián)高速緩存、多路組相聯(lián)高速緩存或者具有其它類(lèi)型的映射的高速緩存。在很多實(shí)施例中,高速緩存130可以包括在所有核心之間共享的一個(gè)很大部分,或者其可以劃分成一些單獨(dú)地功能切片(例如,每一個(gè)核心一個(gè)切片)。高速緩存130還可以包括在所有核心之間共享的一個(gè)部分,以及作為每一個(gè)核心的單獨(dú)功能切片的一些其它部分。
在很多實(shí)施例中,CPU102包括集成的系統(tǒng)存儲(chǔ)器控制器132,以提供用于與系統(tǒng)存儲(chǔ)器134進(jìn)行通信的接口。在沒(méi)有示出的其它實(shí)施例中,存儲(chǔ)器控制器132可以位于計(jì)算機(jī)系統(tǒng)100中分立的不同地方。
系統(tǒng)存儲(chǔ)器134可以包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)(如,雙倍數(shù)據(jù)速率(DDR)DRAM的類(lèi)型)、諸如閃存之類(lèi)的非易失性存儲(chǔ)器、相變存儲(chǔ)器(PCM)或者另一種類(lèi)型的存儲(chǔ)器技術(shù)。系統(tǒng)存儲(chǔ)器134可以是用于存儲(chǔ)數(shù)據(jù)和指令以便由CPU102進(jìn)行操作的通用存儲(chǔ)器。另外,在計(jì)算機(jī)系統(tǒng)100中還可以存在其它潛在設(shè)備,其中這些設(shè)備具有從/向系統(tǒng)存儲(chǔ)器進(jìn)行讀取/寫(xiě)入的能力,如具有直接存儲(chǔ)器存取(DMA)能力的I/O (輸入/輸出)設(shè)備。
耦合CPU102與系統(tǒng)存儲(chǔ)器134的鏈路(即,總線、互連等等)可以包括一個(gè)或多個(gè)光學(xué)、金屬或者能夠傳輸數(shù)據(jù)、地址、控制和時(shí)鐘信息的其它線(即,線路)。
平臺(tái)控制器中心(PCH) 136 (例如,I/O控制器和其它電路的復(fù)合體)包括I/O接口,所述I/O接口能實(shí)現(xiàn)CPU102和外部I/O設(shè)備之間的通信。該復(fù)合體可以包括一個(gè)或多個(gè)I/o適配器,例如,I/O適配器138。I/O適配器將CPU102中使用的主機(jī)通信協(xié)議轉(zhuǎn)換成與特定的I/O設(shè)備(例如,I/O設(shè)備140)相兼容的協(xié)議。給定的I/O適配器可以轉(zhuǎn)換的這些協(xié)議中的一些包括:快速外圍組件互連(PCI)、通用串行總線(USB)、串行高級(jí)技術(shù)附件(SATA)、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、廉價(jià)磁盤(pán)冗余陣列(RAID)和1394 “火線”等等。另夕卜,可以存在一個(gè)或多個(gè)無(wú)線協(xié)議I/O適配器。無(wú)線協(xié)議的示例是藍(lán)牙、基于IEEE802.11的無(wú)線協(xié)議和蜂窩協(xié)議等等。
除I/O設(shè)備之外,PCH136還可以耦合到該系統(tǒng)中的一個(gè)或多個(gè)嵌入式控制器(EC)(例如,EC142)中。EC142可以合并有多種功能。例如,可以在計(jì)算機(jī)系統(tǒng)100中存在RAID存儲(chǔ)控制器設(shè)備。RAID控制器可以對(duì)硬盤(pán)驅(qū)動(dòng)器或者固態(tài)盤(pán)(SSD)陣列進(jìn)行管理??刂破髟O(shè)備的其它示例可以是分立的帶外管理能力引擎、鍵盤(pán)控制器或者其它類(lèi)型的控制器。
在其它實(shí)施例中,PCH136是位于CPU102之外的分立設(shè)備。在這些實(shí)施例中,諸如直接存儲(chǔ)器接口(DMI)的接口將CPU耦合到PCH。但是,并沒(méi)有示出這些實(shí)施例。
CPU間接口 144可以提供針對(duì)耦合到一個(gè)或多個(gè)另外的CPU的鏈路的接口,其允許發(fā)生CPU間通信。例如,CPU間高速接口可以是快速通道互連(QPI)或者其它類(lèi)似的接口。雖然在圖1中沒(méi)有示出另外的CPU,但在很多實(shí)施例中,CPU102是計(jì)算機(jī)系統(tǒng)100中存在的多個(gè)CPU里的一個(gè)。在很多實(shí)施例中,CPU間接口 144在CPU102和該系統(tǒng)中存在的其它CPU里的每一個(gè)之間提供點(diǎn)到點(diǎn)高速通信接口。
圖形接口 146可以提供針對(duì)耦合到分立圖形控制器(沒(méi)有示出分立的圖形控制器)的鏈路的接口。該接口可以是高速平臺(tái)組件互連(PCI) -Express接口或者其它高速接口。在其它實(shí)施例中,CPU102包括集成的圖形控制器,圖形接口 146可以耦合到顯示設(shè)備(例如,監(jiān)視器)。在很多實(shí)施例中,該接口是高速的,以允許通過(guò)該鏈路傳輸大量的圖形數(shù)據(jù)業(yè)務(wù)(例如,3D圖形、視頻等等)。
此外,計(jì)算機(jī)系統(tǒng)100還包括系統(tǒng)管理固件148,以提供對(duì)計(jì)算機(jī)系統(tǒng)和組件進(jìn)行初始化的引導(dǎo)指令。在不同的實(shí)施例中,系統(tǒng)管理固件可以是基本輸入/輸出系統(tǒng)(BIOS)、可擴(kuò)展固件、或者計(jì)算機(jī)系統(tǒng)可以在該平臺(tái)的引導(dǎo)期間使用的其它形式的固件指令。
在很多實(shí)施例中,計(jì)算機(jī)系統(tǒng)100中的每一個(gè)核心包括:基于在每一個(gè)核心內(nèi)執(zhí)行的指令的類(lèi)型和內(nèi)容來(lái)管理核心功耗的內(nèi)部邏輯。一些單元中的多種邏輯用于通過(guò)時(shí)鐘管理/生成邏輯128,在一個(gè)時(shí)鐘接一個(gè)時(shí)鐘基礎(chǔ)上對(duì)某些單元進(jìn)行時(shí)鐘門(mén)控。
圖2描繪了給定的核心中的具體有關(guān)單元和功能邏輯塊,其使該核心能夠通過(guò)指令類(lèi)型確定和指令內(nèi)容確定來(lái)對(duì)核心功耗進(jìn)行管理。
在給定的核心中,宏指令從指令高速緩存112中獲取,并到達(dá)預(yù)取緩沖器200。在很多實(shí)施例中,存在兩個(gè)指令譯碼器(譯碼器O (202)和譯碼器I (204))。預(yù)取緩沖器200為用于每一個(gè)譯碼器的寄存器(指令I(lǐng)寄存器(206 )和指令2寄存器(208 ))饋送指令。在圖1所示的實(shí)施例中,在指令譯碼器單元中描繪了兩個(gè)譯碼器,這是由于該核心能夠同時(shí)對(duì)兩個(gè)指令進(jìn)行譯碼。為了簡(jiǎn)單起見(jiàn),僅在譯碼器O中示出了單個(gè)譯碼器中的細(xì)節(jié)電路。在譯碼器I中存在該相同電路,由于該電路鏡像了譯碼器O中所示的電路,因此對(duì)該電路的兩次解釋是多余的,故沒(méi)有對(duì)其進(jìn)行描繪。
除預(yù)取緩沖器200之外,還存在基于預(yù)譯碼的邏輯210,其從預(yù)取緩沖器讀取高速緩存行,將宏指令與指令高速緩存行分離,基于預(yù)譯碼比特來(lái)確定指令的長(zhǎng)度。對(duì)于宏指令中的每一個(gè),譯碼邏輯提供指令的字節(jié)大小類(lèi)型的第一通道近似(即,將宏指令譯碼成I字節(jié)微操作(操作碼)、2字節(jié)操作碼、3字節(jié)操作碼,或者譯碼成更復(fù)雜的可變長(zhǎng)度的一個(gè)或多個(gè)操作碼的集合)。由于存在字節(jié)大小可能變得不正確的一些指令,因此預(yù)譯碼處理的字節(jié)類(lèi)型大小是近似的。除了圖2中所示的邏輯之外,還存在執(zhí)行全長(zhǎng)度譯碼的另一個(gè)并行譯碼器(全長(zhǎng)度譯碼器242),其是完全準(zhǔn)確的。但是,該全長(zhǎng)度譯碼器沒(méi)有預(yù)譯碼長(zhǎng)度近似一樣的高效,因此其與圖2中所示的邏輯執(zhí)行的譯碼處理并行地執(zhí)行。
在很多實(shí)施例中,如果全長(zhǎng)度譯碼器復(fù)原的操作碼字節(jié)長(zhǎng)度與宏指令譯碼邏輯近似的長(zhǎng)度不相同,則使當(dāng)前指令之后的后續(xù)指令無(wú)效,這是由于錯(cuò)誤操作碼字節(jié)長(zhǎng)度可能使得隨機(jī)垃圾數(shù)據(jù)被使用,進(jìn)一步使指令管道下降。使用全長(zhǎng)度譯碼器所確定的正確操作碼字節(jié)長(zhǎng)度,再一次通過(guò)管道發(fā)送無(wú)效的指令。雖然偶爾的操作碼無(wú)效以及隨后第二次穿過(guò)指令管道,降低了管道性能效率,但宏指令譯碼邏輯字節(jié)長(zhǎng)度近似的高成功率提供甚至更高的效率益處,以保證使用該并行雙長(zhǎng)度譯碼處理。
現(xiàn)在返回到指令I(lǐng)寄存器206,在該寄存器中鎖存的宏指令進(jìn)入譯碼器0(202),并傳播到該譯碼器中的一些邏輯組件。不是用一個(gè)較大的編程邏輯陣列(PLA)來(lái)處理任意類(lèi)型的接收的宏指令的譯碼處理,而是將譯碼器O中存在的PLA劃分成執(zhí)行每一字節(jié)長(zhǎng)度的宏指令譯碼的PLA。生成I字節(jié)操作碼的所有宏指令在I字節(jié)操作碼PLA212中進(jìn)行譯碼,生成2字節(jié)操作碼的所有宏指令在2字節(jié)操作碼PLA214中進(jìn)行譯碼,生成3字節(jié)操作碼的所有宏指令在3字節(jié)操作碼PLA216中進(jìn)行譯碼。另外,復(fù)雜指令PLA218對(duì)PLA212-216中的譯碼沒(méi)有覆蓋的所有其它操作碼進(jìn)行譯碼。通常,大多宏指令落入到1-3字節(jié)操作碼轉(zhuǎn)換,因此復(fù)雜指令PLA218可能沒(méi)有像其它三個(gè)PLA那樣的頻繁使用。
在前一代譯碼器中,通常存在能夠?qū)λ兄噶钸M(jìn)行譯碼的一個(gè)PLA。圖2中的所有四個(gè)PLA里的電路合并到該單個(gè)PLA中。因此,無(wú)論該P(yáng)LA接收到什么字節(jié)大小類(lèi)型的宏指令,整個(gè)PLA都活動(dòng)地對(duì)將該宏指令譯碼成相應(yīng)的操作碼。在圖2所示的本實(shí)施例中,將該電路劃分成四個(gè)單獨(dú)的PLA。另外,所有PLA基于接收的振蕩時(shí)鐘信號(hào),一個(gè)周期一個(gè)周期地活動(dòng)執(zhí)行。從時(shí)鐘管理和生成邏輯(CMGL)220接收該振蕩時(shí)鐘信號(hào)。CMGL220包括用于按照至少一個(gè)頻率生成至少一個(gè)振蕩時(shí)鐘信號(hào)的時(shí)鐘電路。但是,可以使用處于多個(gè)頻率的多個(gè)信號(hào)來(lái)向處理器的設(shè)計(jì)提供靈活性。在使用一個(gè)以上的時(shí)鐘速度的一些實(shí)施例中,一些單元按照雙倍頻率、半頻率、或者與任何其它潛在操作的時(shí)鐘信號(hào)頻率一起來(lái)采用時(shí)鐘信號(hào)。但是,在一些實(shí)施例中,圖2中所示的功能單元和邏輯都按照同一頻率運(yùn)行。無(wú)論如何,CMGL220可以向圖2中所示的任何功能塊/單元傳播振蕩時(shí)鐘信號(hào),其中這些功能塊/單元需要振蕩時(shí)鐘信號(hào)來(lái)正確地運(yùn)行。但是,為了使圖2清晰,僅將某些塊/單元示出為具有通過(guò)來(lái)自CMGL220的發(fā)出線來(lái)提供的時(shí)鐘信號(hào),下面將描述這些具體的時(shí)鐘源和目的地對(duì)。
另外,CMGL220還包括時(shí)鐘管理電路,以便提供對(duì)時(shí)鐘信號(hào)向這些功能模塊/單元中的任何一個(gè)或多個(gè)的供給進(jìn)行主動(dòng)管理的能力。例如,時(shí)鐘管理電路可以包括時(shí)鐘門(mén)控邏輯,以便將時(shí)鐘信號(hào)拉升到穩(wěn)定狀態(tài)高電平狀態(tài)或者將時(shí)鐘信號(hào)壓到穩(wěn)定的低電平狀態(tài)。
當(dāng)需要時(shí)鐘來(lái)運(yùn)行的功能模塊/單元被拒絕輸入時(shí)鐘信號(hào)時(shí),該模塊/單元由于強(qiáng)制內(nèi)部電路進(jìn)入穩(wěn)定狀態(tài)而停止起作用,而不是具有電路的切換活動(dòng)(即,基于提供的時(shí)鐘信號(hào)進(jìn)行切換/翻轉(zhuǎn))。因此,如果CMGL220關(guān)閉了針對(duì)功能邏輯的模塊/單元的時(shí)鐘信號(hào),則該邏輯將停止操作。這節(jié)省了在該模塊/單元的電路中的動(dòng)態(tài)切換功耗。
因此,CMGL220可以關(guān)閉,也可以不關(guān)閉向圖2中的任何給定功能模塊/單元提供的時(shí)鐘信號(hào)。在很多實(shí)施例中,宏指令譯碼邏輯210向CMGL220發(fā)送其確定的與進(jìn)入指令I(lǐng)寄存器206的給定指令相對(duì)應(yīng)的字節(jié)大小類(lèi)型長(zhǎng)度近似信息。在很多實(shí)施例中,近似的字節(jié)大小類(lèi)型長(zhǎng)度通??梢允?、2或者3字節(jié)。對(duì)于下一個(gè)時(shí)鐘周期,CMGL220維持向與近似的長(zhǎng)度相對(duì)應(yīng)的PLA提供的時(shí)鐘信號(hào),將提供給其它兩個(gè)PLA(其中這兩個(gè)PLA對(duì)其它長(zhǎng)度進(jìn)行譯碼)的時(shí)鐘拉升到穩(wěn)定狀態(tài)。對(duì)于前述的下一個(gè)時(shí)鐘周期,這三個(gè)特定的字節(jié)長(zhǎng)度PLA中只有一個(gè)將是操作的。此外,其它兩個(gè)特定的字節(jié)長(zhǎng)度PLA將是不操作的,并由于在它們各自的電路之中將不存在動(dòng)態(tài)的切換功耗,因此將消耗更少的動(dòng)態(tài)功率。
在指令I(lǐng)寄存器206中的后續(xù)指令等待進(jìn)行譯碼的下一個(gè)時(shí)鐘周期,發(fā)生相同的處理。因此,在任何給定的時(shí)鐘周期,1、2和3字節(jié)操作碼PLA中最多僅一個(gè)將消耗顯著的動(dòng)態(tài)切換功率。在很多實(shí)施例中,復(fù)雜指令PLA218始終接收提供的時(shí)鐘,這是由于CMGL220不具有用于該特定PLA的時(shí)鐘門(mén)控能力。
在1、2或3字節(jié)譯碼的情況下,一旦宏指令已經(jīng)通過(guò)有關(guān)的字節(jié)長(zhǎng)度PLA,并已經(jīng)被譯碼成相應(yīng)的操作碼,則通過(guò)MUX222對(duì)其進(jìn)行復(fù)用。在需要PLA218的復(fù)雜指令的情況下,結(jié)果可以生成來(lái)自微碼只讀存儲(chǔ)器(ROM) 224的操作碼。隨后,通過(guò)MUX226將MUX222的輸出再次與PLA218和微碼R0M224的輸出進(jìn)行復(fù)用。隨后,在對(duì)任何位移字節(jié)和/或立即操作數(shù)進(jìn)行處理的邏輯228處,接收MUX226的操作碼輸出(其包括從譯碼器獲得的操作碼),其中位移字節(jié)和/或立即操作數(shù)可以具有添加到預(yù)取緩沖器200中的原始宏指令的字段。一旦對(duì)位移字節(jié)和/或立即操作數(shù)進(jìn)行了處理(如果存在添加到原始宏指令的任何字段),則將操作碼從譯碼器O發(fā)送出,并發(fā)送到指令隊(duì)列230,以等待執(zhí)行。
在很多實(shí)施例中,宏指令邏輯210可以對(duì)給定的接收的宏指令進(jìn)行部分譯碼。宏指令譯碼邏輯210還將提供一組預(yù)譯碼比特,該組預(yù)譯碼比特是在對(duì)給定的宏指令進(jìn)行預(yù)譯碼處理期間產(chǎn)生的。在一些實(shí)施例中,宏指令譯碼邏輯210能夠基于這些預(yù)譯碼比特,確定在譯碼器I中同時(shí)譯碼的第二指令是無(wú)效的。存在很多關(guān)于為何第二指令可能是無(wú)效的示例(例如,分支問(wèn)題),但不管是何原因,一旦宏指令譯碼邏輯210認(rèn)識(shí)到進(jìn)入譯碼器I的第二指令將是無(wú)效的,則宏指令譯碼邏輯210就可以使CMGL220對(duì)提供給整個(gè)譯碼器2的時(shí)鐘信號(hào)進(jìn)行門(mén)控。例如,CMGL220可以將時(shí)鐘拉升到針對(duì)指令2寄存器208的穩(wěn)定狀態(tài),以便不允許在該寄存器中進(jìn)行鎖存,從而釋放指令進(jìn)入譯碼器I。在其它實(shí)施例中,CMGL220可以基于在單個(gè)位置處進(jìn)入譯碼器2的時(shí)鐘樹(shù)(圖2中沒(méi)有示出),對(duì)該譯碼器中的所有主要功能單元/模塊進(jìn)行單獨(dú)地提供。在這些實(shí)施例中,CMGL220可以對(duì)進(jìn)入譯碼器的整個(gè)樹(shù)進(jìn)行時(shí)鐘門(mén)控。因此,如果預(yù)譯碼器邏輯210確定指令是無(wú)效的,則其可以通過(guò)對(duì)提供給被調(diào)度將該指令譯碼成操作碼的譯碼器邏輯的時(shí)鐘進(jìn)行門(mén)控,來(lái)本質(zhì)上關(guān)閉該譯碼器中的所有邏輯。
返回到譯碼器0,分支、浮點(diǎn)、字段檢測(cè)器邏輯(BFFDL) 232還從指令I(lǐng)寄存器206接收傳播到譯碼器O的宏指令。BFFDL232包括檢測(cè)邏輯的一些部分,以幫助該核心中的功率管理。
如該邏輯的名稱(chēng)所表明的,在BFFDL232中存在著單獨(dú)的分支檢測(cè)邏輯、浮點(diǎn)檢測(cè)邏輯和字段檢測(cè)邏輯。分支檢測(cè)邏輯確定該指令是否將需要分支地址計(jì)算。
分支地址計(jì)算單元234將計(jì)算什么分支地址將用于分支指令。如果宏指令不涉及任何形式的分支,則將不使用該分支地址計(jì)算單元234,而提供給該單元的時(shí)鐘通常仍是操作的,這再次造成不需要的動(dòng)態(tài)切換功耗。為了使分支地址計(jì)算單元234功耗最小化,BFFDL232將認(rèn)識(shí)到到達(dá)分支地址計(jì)算單元234的下一個(gè)指令不是分支指令。BFFDL232可以向CMGL220發(fā)送該信息,以使CMGL220對(duì)提供給分支地址計(jì)算單元234的時(shí)鐘進(jìn)行門(mén)控。
BFFDL232中的字段檢測(cè)邏輯具有確定實(shí)際接收的特定宏指令是否在位移字節(jié)字段中具有數(shù)據(jù)和/或在立即操作數(shù)字段中具有數(shù)據(jù)。很多宏指令不使用這些字段。但是,即使不使用這些字段,對(duì)操作碼進(jìn)行處理的整個(gè)管道之中的邏輯也具有用于這些字段的時(shí)隙,這些時(shí)隙將在連同操作碼一起傳送的數(shù)據(jù)中具有隨機(jī)垃圾數(shù)據(jù)。隨機(jī)垃圾數(shù)據(jù)造成在即使不使用該數(shù)據(jù)時(shí),也發(fā)生動(dòng)態(tài)切換功耗。因此,在很多實(shí)施例中,BFFDL232 (—旦其確定宏指令不使用這些字段中的一個(gè)或兩個(gè))指示邏輯228將未使用的字段清零。該字段的這種清零進(jìn)一步使核心之中的功能單元/模塊內(nèi)的管道功耗最小化。
BFFDL232中的浮點(diǎn)檢測(cè)邏輯檢測(cè)輸入的宏指令是否是浮點(diǎn)(FP)運(yùn)算。在很多實(shí)施例中,類(lèi)似于上面被時(shí)鐘門(mén)控的其它單元,可以對(duì)處理浮點(diǎn)計(jì)算的浮點(diǎn)單元236進(jìn)行時(shí)鐘門(mén)控,但浮點(diǎn)單元的時(shí)鐘門(mén)控更加復(fù)雜,這是由于該單元要正確地工作需要前置時(shí)間(lead time),其對(duì)于每一時(shí)鐘都對(duì)整個(gè)FP單元236進(jìn)行時(shí)鐘門(mén)控來(lái)說(shuō)是不實(shí)際的。因此,在很多實(shí)施例中,僅當(dāng)整個(gè)管道中不存在FP運(yùn)算時(shí),才對(duì)FP單元236進(jìn)行時(shí)鐘門(mén)控。關(guān)系到FP單元的管道通常包括在(用于對(duì)FP宏指令進(jìn)行譯碼的)譯碼器單元開(kāi)始和在(完成執(zhí)行之后,使該FP指令引退的)引退單元處結(jié)束。因此,可以實(shí)現(xiàn)狀態(tài)機(jī)來(lái)支持對(duì)于(譯碼和引退之間的)管道中存在的完整的一組FP運(yùn)算進(jìn)行跟蹤。
FP微操作跟蹤器單元238可以保持對(duì)于管道中存在的任何FP指令/操作碼的跟蹤,并當(dāng)不存在FP指令/操作碼時(shí),指示CMGL220對(duì)FP單元236進(jìn)行時(shí)鐘門(mén)控。當(dāng)FP指令進(jìn)入譯碼級(jí)時(shí),BFFDL232向FP微操作跟蹤器238發(fā)送信息。隨后,該FP指令穿過(guò)整個(gè)管道,并最終引退。在引退期間,分配/引退單元240向FP微操作跟蹤器238通知該FP指令已引退。一旦引退,如果沒(méi)有另外的FP指令進(jìn)入譯碼器,則FP微操作跟蹤器238可以指示CMGL220關(guān)閉進(jìn)入FP單元236的時(shí)鐘。
圖3描述了用于跟蹤流經(jīng)指令管道的浮點(diǎn)微操作的狀態(tài)機(jī)的實(shí)施例。
開(kāi)始狀態(tài)示出了管道處于關(guān)于浮點(diǎn)微操作的空閑狀態(tài)(狀態(tài)300)。如果沒(méi)有接收到FP微操作(uOP),則狀態(tài)機(jī)保持在空閑狀態(tài),這是由于管道不對(duì)FP uOP進(jìn)行譯碼(任務(wù)A)。如果FP uOP到達(dá),則管道對(duì)FP uOP進(jìn)行譯碼(任務(wù)B),狀態(tài)機(jī)轉(zhuǎn)換到下一狀態(tài),其中在該狀態(tài),uOP已完成譯碼級(jí),現(xiàn)處于指令隊(duì)列中(狀態(tài)302)。一旦FP uOP處于指令隊(duì)列中,返回到空閑狀態(tài)的唯一方式是該FP uOP引退,并且沒(méi)有任何另外的FP uOP保持在管道中。
一旦FP uOP處于指令隊(duì)列中(狀態(tài)302),則可以發(fā)生兩個(gè)事件。首先,如果指令隊(duì)列中的該FP uOP仍處于指令隊(duì)列時(shí),新的第二 FP uOP到達(dá)譯碼器,則狀態(tài)機(jī)停止對(duì)于第一FP uOP的跟蹤,替代地轉(zhuǎn)換到對(duì)剛剛到達(dá)的第二 FP uOP進(jìn)行跟蹤。這是由于第二 FP uOP將在第一 FP uOP之后引退。管道執(zhí)行對(duì)另一個(gè)FP uOP進(jìn)行譯碼的任務(wù)(任務(wù)C)。
另一個(gè)潛在事件是:可以向處于指令隊(duì)列中的uOP分配資源以進(jìn)行執(zhí)行(任務(wù)D)。在該情況下,狀態(tài)機(jī)轉(zhuǎn)換到uOP分配狀態(tài)(狀態(tài)304)。
一旦處于uOP分配狀態(tài),可以發(fā)生另外的三個(gè)事件。首先,如果處于分配級(jí)(狀態(tài)304)的第一 FP uOP還沒(méi)有引退,而新的第二 FP uOP到達(dá)到譯碼器,則狀態(tài)機(jī)停止跟蹤第一 FP uOP,替代地轉(zhuǎn)換到跟蹤剛剛到達(dá)的第二 FP uOP。這是由于第二 FP uOP將在第一 FPuOP之后引退。管道執(zhí)行對(duì)另一個(gè)FP uOP進(jìn)行譯碼的任務(wù)(任務(wù)E)。這造成了狀態(tài)機(jī)返回到UOP處于指令隊(duì)列中的狀態(tài)(狀態(tài)302),狀態(tài)機(jī)現(xiàn)在對(duì)第二 FP uOP進(jìn)行跟蹤。
可以在狀態(tài)304中發(fā)生的第二事件是:發(fā)生了 FP uOP分配,但還沒(méi)有發(fā)生FP uOP引退。在該情況下,沒(méi)有事件發(fā)生,這是由于管道并不使該FP uOP引退(任務(wù)F)。這可以在FP uOP的執(zhí)行期間發(fā)生。
可以在狀態(tài)304中發(fā)生的第三事件是,管道可以使FP uOP引退(任務(wù)G)。當(dāng)該事件發(fā)生時(shí),狀態(tài)機(jī)移回到空閑(狀態(tài)300 )。在狀態(tài)機(jī)處于空閑狀態(tài)的任何給定時(shí)間點(diǎn),F(xiàn)P微操作跟蹤器(圖2中的238)都可以指示CMGL220對(duì)FP單元236進(jìn)行時(shí)鐘門(mén)控。
圖4是用于對(duì)譯碼器中的一個(gè)或多個(gè)可編程邏輯陣列進(jìn)行時(shí)鐘門(mén)控的處理的實(shí)施例的流程圖,其中該譯碼器未被配置為對(duì)進(jìn)入該譯碼器的當(dāng)前指令進(jìn)行譯碼。
該處理由可以包括不同實(shí)施例中的硬件電路和/或微代碼的處理邏輯進(jìn)行執(zhí)行。通過(guò)處理邏輯從預(yù)取緩沖器獲取宏指令來(lái)開(kāi)始該處理(處理塊400)。該處理繼續(xù)下面操作:處理邏輯確定該宏指令的字節(jié)長(zhǎng)度類(lèi)型(處理塊402)?;谠摯_定,處理邏輯隨后對(duì)譯碼器中要對(duì)該宏指令進(jìn)行譯碼的一個(gè)或多個(gè)PLA進(jìn)行時(shí)鐘門(mén)控(處理塊404)。被進(jìn)行時(shí)鐘門(mén)控的具體PLA是沒(méi)有分配對(duì)所確定的字節(jié)長(zhǎng)度類(lèi)型的宏指令進(jìn)行譯碼的那些PLA。最后,處理邏輯接著使用沒(méi)有被時(shí)鐘門(mén)控的剩余PLA,在該譯碼器中對(duì)該宏指令進(jìn)行譯碼(處理塊406)。
圖5是用于當(dāng)不對(duì)分支指令進(jìn)行譯碼時(shí),對(duì)分支單元進(jìn)行時(shí)鐘門(mén)控的處理的實(shí)施例的流程圖。
該處理由可以包括不同實(shí)施例中的硬件電路和/或微代碼的處理邏輯進(jìn)行執(zhí)行。通過(guò)處理邏輯從預(yù)取緩沖器獲取宏指令來(lái)開(kāi)始該處理(處理塊500 )。隨后,處理邏輯確定該指令是否是分支指令(處理塊502)。如果該指令是分支指令,則該處理結(jié)束。否則,如果該指令不是分支指令,則處理邏輯在從該宏指令產(chǎn)生的操作碼處于管道中的分支計(jì)算位置的時(shí)鐘周期期間,對(duì)分支單元進(jìn)行時(shí)鐘門(mén)控(處理塊504),并且該處理結(jié)束。
圖6是用于當(dāng)在指令管道中不存在浮點(diǎn)指令時(shí),對(duì)浮點(diǎn)單元進(jìn)行時(shí)鐘門(mén)控的處理的實(shí)施例的流程圖。
該處理由可以包括不同實(shí)施例中的硬件電路和/或微代碼的處理邏輯進(jìn)行執(zhí)行。該處理開(kāi)始于:處理邏輯確定在譯碼單元和引退單元之間的管道中是否存在任何FP指令(處理塊600)。如果在管道中的某個(gè)地方存在FP指令,則該處理返回到塊600,再次進(jìn)行檢查。否則,如果在管道中不存在FP指令,則處理邏輯對(duì)FP單元進(jìn)行時(shí)鐘門(mén)控(處理塊602),該處理結(jié)束。在很多實(shí)施例中,該處理使用圖3中所述的狀態(tài)機(jī)來(lái)跟蹤管道中的FP指令的存在性。
圖7是用于當(dāng)指令不使用指令的立即和位移字節(jié)字段時(shí),將這些字段清零的處理的實(shí)施例的流程圖。
該處理由可以包括不同實(shí)施例中的硬件電路和/或微代碼的處理邏輯進(jìn)行執(zhí)行。通過(guò)處理邏輯從預(yù)取緩沖器獲取宏指令來(lái)開(kāi)始該處理(處理塊700 )。隨后,處理邏輯確定該指令是否使用立即字段(處理塊702)。如果該指令不使用立即字段,則處理邏輯將該指令的立即字段中的所有數(shù)據(jù)進(jìn)行清零(處理塊704)。無(wú)論該指令是否使用立即字段,處理塊接下來(lái)都確定該指令是否使用位移字節(jié)字段(處理塊706)。如果使用位移字節(jié)字段,則該處理結(jié)束。否則,如果該指令不使用位移字節(jié)字段,則處理邏輯將該指令的位移字節(jié)字段中的所有數(shù)據(jù)清零(處理塊708),該處理結(jié)束。
在很多實(shí)施例中,當(dāng)在給定的功能模塊/單元上執(zhí)行時(shí)鐘門(mén)控時(shí),對(duì)用于該單元的時(shí)鐘進(jìn)行門(mén)控至少一個(gè)時(shí)鐘周期,但根據(jù)用于對(duì)該單元進(jìn)行時(shí)鐘門(mén)控的具體原因,時(shí)鐘門(mén)控可以發(fā)生超過(guò)一個(gè)周期。例如,對(duì)I字節(jié)PLA進(jìn)行時(shí)鐘門(mén)控通常是在單個(gè)時(shí)鐘周期的基礎(chǔ)上完成的,這是由于在每一個(gè)時(shí)鐘周期都有指令進(jìn)行譯碼,因此對(duì)該P(yáng)LA進(jìn)行如一個(gè)時(shí)鐘周期一樣短的門(mén)控。在該方面,可能有數(shù)千條宏指令在管道中流轉(zhuǎn)而沒(méi)有單個(gè)浮點(diǎn)運(yùn)算,在該情況下,可以對(duì)FP單元連續(xù)地時(shí)鐘門(mén)控多個(gè)時(shí)鐘周期。
本發(fā)明的實(shí)施例的構(gòu)成要素還可以提供成用于存儲(chǔ)機(jī)器可執(zhí)行指令的機(jī)器可讀介質(zhì)。機(jī)器可讀介質(zhì)可以包括,但不限于:閃存、光學(xué)盤(pán)、光盤(pán)只讀存儲(chǔ)器(⑶-ROM)、數(shù)字多用途/視頻盤(pán)(DVD)R0M、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPR0M)、電可擦除可編程只讀存儲(chǔ)器(EEPR0M)、磁卡或者光卡、傳播介質(zhì)或者適合于存儲(chǔ)電子指令的其它類(lèi)型的機(jī)器可讀介質(zhì)。
在上面的描述和權(quán)利要求中,可以使用術(shù)語(yǔ)“包括”和“包含”以及它們的派生詞,旨在將它們視作為彼此的同義詞。此外,在下面的描述和權(quán)利要求中,可以使用術(shù)語(yǔ)“耦合”和“連接”以及它們的派生詞。應(yīng)當(dāng)理解的是,這些術(shù)語(yǔ)不應(yīng)視作為彼此同義。相反,在具體的實(shí)施例中,“連接”可以用于指示兩個(gè)或更多元件是彼此之間直接物理或者電接觸?!榜詈稀笨梢砸馕吨鴥蓚€(gè)或更多元件處于直接物理或者電接觸。但是,“耦合”還可以意味著兩個(gè)或更多元件不是彼此之間直接接觸,而是彼此之間協(xié)作、交互或者通信。
在上面的描述中,使用某些術(shù)語(yǔ)來(lái)描述本發(fā)明的實(shí)施例。例如,術(shù)語(yǔ)“邏輯”表示用于執(zhí)行一個(gè)或多個(gè)功能的硬件、固件、軟件(或者其任意組合)。例如,“硬件”的示例包括,但不限于:集成電路、有限狀態(tài)機(jī)或者甚至組合邏輯。集成電路可以采用諸如微處理器、專(zhuān)用集成電路、數(shù)字信號(hào)處理器、微控制器等等之類(lèi)的處理器的形式。
應(yīng)當(dāng)理解的是,貫穿本說(shuō)明書(shū)對(duì)于“一個(gè)實(shí)施例”或者“實(shí)施例”的引用意味著:結(jié)合該實(shí)施例描述的具體特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個(gè)實(shí)施例中。因此,應(yīng)當(dāng)強(qiáng)調(diào)和理解的是,在本說(shuō)明書(shū)的各個(gè)部分中對(duì)于“實(shí)施例”或“一個(gè)實(shí)施例”或“替代的實(shí)施例”的兩個(gè)或更多弓I用,并不一定全部指代同一實(shí)施例。此外,可以將這些具體特征、結(jié)構(gòu)或者特性組合成適合于本發(fā)明的一個(gè)或多個(gè)實(shí)施例。
類(lèi)似地,應(yīng)當(dāng)理解的是,為了使本公開(kāi)內(nèi)容流暢以幫助對(duì)本發(fā)明各個(gè)方面中的一個(gè)或多個(gè)方面的理解,在本發(fā)明的實(shí)施例的前述描述中,有時(shí)將各種特征一起組合在單個(gè)實(shí)施例、圖或者其描述中。但是,本公開(kāi)的該方法不應(yīng)被解釋為反映下面意圖:所要求保護(hù)的主題需要與各權(quán)利要求中明確記載的特征相比更多的特征。相反,如所附權(quán)利要求所反映的,發(fā)明性方面在于比單個(gè)的前述公開(kāi)實(shí)施例中的所有特征更少的特征。因此,特此將詳細(xì)說(shuō)明書(shū)所附的權(quán)利要求明確地并入到本詳細(xì)說(shuō)明書(shū)中。
權(quán)利要求
1.一種處理器,包括: 預(yù)取緩沖器,用于存儲(chǔ)多個(gè)宏指令; 時(shí)鐘電路,用于為所述處理器中的至少多個(gè)單元提供振蕩時(shí)鐘信號(hào); 宏指令譯碼邏輯,用于確定從所述預(yù)取緩沖器中獲取的每一個(gè)宏指令的類(lèi)型; 響應(yīng)于對(duì)所述多個(gè)宏指令中的第一宏指令的類(lèi)型的確定,時(shí)鐘管理單元用于使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述處理器中的沒(méi)有用于對(duì)所述第一宏指令進(jìn)行操作的多個(gè)單元中的至少一個(gè)單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài);以及 所述多個(gè)單元中的第一指令譯碼器單元,用于將所述第一宏指令譯碼成一個(gè)或多個(gè)操作碼。
2.根據(jù)權(quán)利要求1所述的處理器,還包括: 所述第一指令譯碼器單元,包括: 所述多個(gè)單元中的第一可編程邏輯陣列(PLA)單元,用于對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生一個(gè)字節(jié)的操作碼的宏指令進(jìn)行譯碼; 所述多個(gè)單元中的第二 PLA單元,用于對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生兩字節(jié)的操作碼的宏指令進(jìn)行譯碼;以及 所述多個(gè)單元中的第三PLA單元,用于對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生三字節(jié)的操作碼的宏指令進(jìn)行譯碼; 所述宏指令譯碼邏輯,用于確定從所述第一宏指令產(chǎn)生的操作碼的字節(jié)長(zhǎng)度; 所述時(shí)鐘管理電路,用于使所述振蕩時(shí)鐘信號(hào)在進(jìn)入不對(duì)所確定的字節(jié)長(zhǎng)度的宏指令進(jìn)行譯碼的所述第一PLA、所述第二PLA和所述第三PLA中的任何一個(gè)的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
3.根據(jù)權(quán)利要求1所述的處理器,還包括: 所述時(shí)鐘管理電路,用于響應(yīng)于確定所述第一宏指令的類(lèi)型不是分支指令,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述多個(gè)單元中的分支地址計(jì)算單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
4.根據(jù)權(quán)利要求1所述的處理器,還包括: 所述宏指令譯碼邏輯,用于: 確定所述第一宏指令是否包括一個(gè)或多個(gè)位移字節(jié);以及 響應(yīng)于所述第一 宏指令不具有任何位移字節(jié),將所述第一宏指令中的位移字節(jié)字段清零。
5.根據(jù)權(quán)利要求1所述的處理器,還包括: 所述宏指令譯碼邏輯,用于: 確定所述第一宏指令是否包括立即操作數(shù);以及 響應(yīng)于所述第一宏指令不具有立即操作數(shù),將所述第一宏指令中的立即操作數(shù)字段清零。
6.根據(jù)權(quán)利要求1所述的處理器,還包括: 所述多個(gè)單元中的第二指令譯碼器單元; 所述宏指令譯碼邏輯,用于: 確定所述多個(gè)宏指令中的第二宏指令是否無(wú)效,其中,所述第一宏指令在第一時(shí)鐘周期進(jìn)入所述第一指令譯碼器單元,所述第二宏指令在所述第一時(shí)鐘周期進(jìn)入所述第二指令譯碼器單元;以及 所述功率管理電路,用于響應(yīng)于確定所述第二宏指令無(wú)效,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述第二指令譯碼器單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
7.根據(jù)權(quán)利要求1所述的處理器,還包括: 浮點(diǎn)微操作跟蹤器,用于: 在從所述預(yù)取緩沖器獲取相對(duì)應(yīng)的浮點(diǎn)宏指令的時(shí)間到浮點(diǎn)微操作的引退時(shí)間,對(duì)所述浮點(diǎn)微操作進(jìn)行跟蹤,其中,所述浮點(diǎn)微操作與所述多個(gè)宏指令中的浮點(diǎn)宏指令相對(duì)應(yīng);以及 設(shè)置浮點(diǎn)管道清除標(biāo)志,其指示:當(dāng)設(shè)置時(shí),沒(méi)有浮點(diǎn)微操作當(dāng)前正被跟蹤;以及所述功率管理電路,用于響應(yīng)于所述浮點(diǎn)管道清除標(biāo)志被設(shè)置,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述多個(gè)單元中的浮點(diǎn)單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
8.一種方法,包括: 在預(yù)取緩沖器中存儲(chǔ)多個(gè)宏指令; 為處理器中的至少多個(gè)單元提供振蕩時(shí)鐘信號(hào); 確定從所述預(yù)取緩沖器中獲取的每一個(gè)宏指令的類(lèi)型; 響應(yīng)于對(duì)所述多個(gè)宏指令中的第一宏指令的類(lèi)型的確定,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述處理器中的沒(méi)有用于對(duì)所述第一宏指令進(jìn)行操作的多個(gè)單元中的至少一個(gè)單元時(shí),停留在穩(wěn)定狀態(tài);以及 將所述第一宏指令譯碼成一個(gè)或多個(gè)操作碼。
9.根據(jù)權(quán)利要求8所述的方法,還包括: 對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生一個(gè)字節(jié)的操作碼的宏指令進(jìn)行譯碼; 對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生兩字節(jié)的操作碼的宏指令進(jìn)行譯碼; 對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生三字節(jié)的操作碼的宏指令進(jìn)行譯碼; 確定從所述第一宏指令產(chǎn)生的操作碼的字節(jié)長(zhǎng)度;以及 使所述振蕩時(shí)鐘信號(hào)在進(jìn)入不對(duì)所確定的字節(jié)長(zhǎng)度的宏指令進(jìn)行譯碼的第一 PLA、第二 PLA和第三PLA中的任何一個(gè)的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
10.根據(jù)權(quán)利要求8所述的方法,還包括: 響應(yīng)于確定所述第一宏指令的 類(lèi)型不是分支指令,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述多個(gè)單元中的分支地址計(jì)算單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
11.根據(jù)權(quán)利要求8所述的方法,還包括: 確定所述第一宏指令是否包括一個(gè)或多個(gè)位移字節(jié);以及 響應(yīng)于所述第一宏指令不具有任何位移字節(jié),將所述第一宏指令中的位移字節(jié)字段清零。
12.根據(jù)權(quán)利要求8所述的方法,還包括: 確定所述第一宏指令是否包括立即操作數(shù);以及 響應(yīng)于所述第一宏指令不具有立即操作數(shù),將所述第一宏指令中的立即操作數(shù)字段清零。
13.根據(jù)權(quán)利要求8所述的方法,還包括:確定所述多個(gè)宏指令中的第二宏指令是否無(wú)效,其中,所述第一宏指令在第一時(shí)鐘周期進(jìn)入第一指令譯碼器單元,所述第二宏指令在所述第一時(shí)鐘周期進(jìn)入第二指令譯碼器單元;以及 響應(yīng)于確定所述第二宏指令無(wú)效,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述第二指令譯碼器單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
14.根據(jù)權(quán)利要求8所述的方法,還包括: 在從所述預(yù)取緩沖器獲取相對(duì)應(yīng)的浮點(diǎn)宏指令的時(shí)間到浮點(diǎn)微操作的引退時(shí)間,對(duì)所述浮點(diǎn)微操作進(jìn)行跟蹤,其中,所述浮點(diǎn)微操作與所述多個(gè)宏指令中的浮點(diǎn)宏指令相對(duì)應(yīng);以及 設(shè)置浮點(diǎn)管道清除標(biāo)志,其指示:當(dāng)設(shè)置時(shí),沒(méi)有浮點(diǎn)微操作當(dāng)前正被跟蹤;以及響應(yīng)于所述浮點(diǎn)管道清除標(biāo)志被設(shè)置,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述多個(gè)單元中的浮點(diǎn)單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
15.一種處理器,包括: 預(yù)取緩沖器,用于存儲(chǔ)多個(gè)宏指令; 時(shí)鐘電路,用于為所述處理器中的至少多個(gè)單元提供振蕩時(shí)鐘信號(hào); 宏指令譯碼邏輯,用于確定從所述預(yù)取緩沖器中獲取的每一個(gè)宏指令的近似字節(jié)長(zhǎng)度類(lèi)型; 響應(yīng)于對(duì)所述多個(gè)宏指令中的第一宏指令的近似字節(jié)長(zhǎng)度類(lèi)型的確定,時(shí)鐘管理單元用于使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述處理器中的沒(méi)有用于對(duì)所述第一宏指令進(jìn)行操作的多個(gè)單元中的至少一個(gè)單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài); 所述多個(gè)單元中的第一指令譯碼器單元,用于將所述第一宏指令譯碼成一個(gè)或多個(gè)操作碼; 全長(zhǎng)度譯碼器邏輯,用于: 確定所述第一宏指令的準(zhǔn)確字節(jié)長(zhǎng)度類(lèi)型,其中所述全長(zhǎng)度譯碼器與所述第一指令譯碼器并行地對(duì)所述第一宏指令進(jìn)行譯碼; 將所述第一宏指令的準(zhǔn)確字節(jié)長(zhǎng)度類(lèi)型與所述第一宏指令的近似字節(jié)長(zhǎng)度類(lèi)型進(jìn)行比較; 響應(yīng)于所述準(zhǔn)確字節(jié)長(zhǎng)度與所述近似字節(jié)長(zhǎng)度是不同的長(zhǎng)度,使所述第一指令譯碼器單元產(chǎn)生的所述一個(gè)或多個(gè)操作碼無(wú)效。
16.根據(jù)權(quán)利要求15所述的處理器,還包括: 所述第一指令譯碼器單元,包括: 所述多個(gè)單元中的第一可編程邏輯陣列(PLA)單元,用于對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生一個(gè)字節(jié)的操作碼的宏指令進(jìn)行譯碼; 所述多個(gè)單元中的第二 PLA單元,用于對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生兩字節(jié)的操作碼的宏指令進(jìn)行譯碼;以及 所述多個(gè)單元中的第三PLA單元,用于對(duì)從所述預(yù)取緩沖器獲取的產(chǎn)生三字節(jié)的操作碼的宏指令進(jìn)行譯碼; 所述宏指令譯碼邏輯,用于確定從所述第一宏指令產(chǎn)生的操作碼的字節(jié)長(zhǎng)度;以及 所述時(shí)鐘管理電路,用于使所述振蕩時(shí)鐘信號(hào)在進(jìn)入不對(duì)所確定的字節(jié)長(zhǎng)度的宏指令進(jìn)行譯碼的所述第一PLA、所述第二PLA和所述第三PLA中的任何一個(gè)的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
17.根據(jù)權(quán)利要求15所述的處理器,還包括: 所述時(shí)鐘管理電路,用于響應(yīng)于確定所述第一宏指令的類(lèi)型不是分支指令,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述多個(gè)單元中的分支地址計(jì)算單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
18.根據(jù)權(quán)利要求15所述的處理器,還包括: 所述宏指令譯碼邏輯,用于: 確定所述第一宏指令是否包括一個(gè)或多個(gè)位移字節(jié);以及 響應(yīng)于所述第一宏指令不具有任何位移字節(jié),將所述第一宏指令中的位移字節(jié)字段清零。
19.根據(jù)權(quán)利要求15所述的處理器,還包括: 所述宏指令譯碼邏輯,用于: 確定所述第一宏指令是否包括立即操作數(shù);以及 響應(yīng)于所述第一宏指令不具有立即操作數(shù),將所述第一宏指令中的立即操作數(shù)字段清零。
20.根據(jù)權(quán)利要求15所述的處理器,還包括: 所述多個(gè)單元中的第二指令譯碼器單元; 所述宏指令譯碼邏輯,用于: 確定所述多個(gè)宏指令中的第二宏指令是否無(wú)效,其中,所述第一宏指令在第一時(shí)鐘周期進(jìn)入所述第一指令譯碼器單元,所述第二宏指令在所述第一時(shí)鐘周期進(jìn)入所述第二指令譯碼器單元;以及 所述功率管理電路,用于響應(yīng)于確定所述第二宏指令無(wú)效,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述第二指令譯碼器單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
21.根據(jù)權(quán)利要求15所述的處理器,還包括: 浮點(diǎn)微操作跟蹤器,用于: 在從所述預(yù)取緩沖器獲取相對(duì)應(yīng)的浮點(diǎn)宏指令的時(shí)間到浮點(diǎn)微操作的引退時(shí)間,對(duì)所述浮點(diǎn)微操作進(jìn)行跟蹤,其中,所述浮點(diǎn)微操作與所述多個(gè)宏指令中的浮點(diǎn)宏指令相對(duì)應(yīng);以及 設(shè)置浮點(diǎn)管道清除標(biāo)志,其指示:當(dāng)設(shè)置時(shí),沒(méi)有浮點(diǎn)微操作當(dāng)前正被跟蹤;以及所述功率管理電路,用于響應(yīng)于所述浮點(diǎn)管道清除標(biāo)志被設(shè)置,使所述振蕩時(shí)鐘信號(hào)在進(jìn)入所述多個(gè)單元中的浮點(diǎn)單元的至少一個(gè)時(shí)鐘周期保持在穩(wěn)定狀態(tài)。
全文摘要
公開(kāi)了一種處理器和一種方法。在一個(gè)實(shí)施例中,處理器包括用于存儲(chǔ)宏指令的預(yù)取緩沖器。此外,處理器還包括時(shí)鐘電路,所述時(shí)鐘電路可以為該處理器中的功能單元中的至少一些提供時(shí)鐘信號(hào)。另外,處理器還包括宏指令譯碼邏輯,所述宏指令譯碼邏輯可以確定每一個(gè)宏指令的類(lèi)型。此外,處理器還包括時(shí)鐘管理單元,所述時(shí)鐘管理單元可以使時(shí)鐘信號(hào)在進(jìn)入處理器中的不對(duì)正在被譯碼的當(dāng)前宏指令進(jìn)行操作的至少一個(gè)單元時(shí),保持在穩(wěn)定狀態(tài)。最后,處理器還包括可以將第一宏指令譯碼成一個(gè)或多個(gè)操作碼的至少一個(gè)指令譯碼器單元。
文檔編號(hào)G06F1/04GK103154846SQ201180045688
公開(kāi)日2013年6月12日 申請(qǐng)日期2011年9月23日 優(yōu)先權(quán)日2010年9月24日
發(fā)明者V·R·馬杜里, J·Y·童, H·張 申請(qǐng)人:英特爾公司