儲器所提取。在一x86-兼容性微處理器內(nèi)核201中,這些程序指令和x86指令集架構(gòu)一致。程序指令依序在總線241上提供給轉(zhuǎn)譯層212。轉(zhuǎn)譯層212轉(zhuǎn)譯這些程序指令成一或多個微指令,這些微指令用以在對應的執(zhí)行單元EU1-EUN、EUL中來指示次操作(sub-operat1n),以執(zhí)行程序指令所指示的操作。接著微指令會在總線242上提供給更名層213,其中在一些微指令所指示的結(jié)構(gòu)寄存器(architectural register)(即操作數(shù)寄存位置)會重新映像至在處理器內(nèi)核201中的硬件寄存器(未顯示),以加速對于獨立微指令串(micro instruct1n stream)的執(zhí)行并行化(execut1n parallelism)。更名層213也會根據(jù)串行的程序順序(serial program order)來標記(tag)每一微指令,且在微指令中的資源和目標字段也會被標記為和這些微指令的一或多操作數(shù)所相依的新微指令的卷標。接著,更名的微指令會在總線243上提供給重新執(zhí)行多工層214。
[0042]重新執(zhí)行多工層214執(zhí)行在亂序處理器內(nèi)核201中的多個指令。首先,重新執(zhí)行多工層214會讀取在每一更名的微指令中的操作數(shù),以決定適當?shù)膱?zhí)行單元EU1-EUN、EUL來進行執(zhí)行。舉例來說,更名的整數(shù)微指令會通過執(zhí)行單元EUl來執(zhí)行。浮點微指令會通過執(zhí)行單元EU2來執(zhí)行等等。此外,在目前應用特別關注地是,更名的加載微指令會通過執(zhí)行單元EUL來執(zhí)行。因此,重新執(zhí)行多工層214會提供一或多個更名的微指令至一或多保留站RSl-RSN、RSL,以讓這些指令在保留站RS1-RSN、RSL等候被派送至對應的執(zhí)行單元EU1-EUN、EUL。
[0043]每一保留站RS1_RSN、RSL存取緩存數(shù)據(jù)226以讀取隊列排序用以進行操作的更名的微指令所需的操作數(shù)。未標示為舊的更名的微指令的卷標的更名的微指令(即此更名的微指令并未和舊的更名的微指令相依(dependent))會立即被派送至對應的執(zhí)行單元EUl-EUN、EUL進行執(zhí)行。相依的更名的微指令(即包含有尚未完成執(zhí)行的舊的更名的微指令的卷標的更名的微指令)會逐一的儲存到保留站RS1_RSN、RSL中,直到可獲得其被標示的相依的操作數(shù)時為止。當可獲得被標示的相依的操作數(shù)時,這些操作數(shù)會提供給其所相依的更名的微指令,且這些更名的微指令會被派送至對應的執(zhí)行單元EU1-EUN、EUL進行執(zhí)行。當執(zhí)行單元EU1-EUN、EUL不執(zhí)行微指令時,其會執(zhí)行節(jié)能功能。一般來說,當執(zhí)行單元EU1_EUN、EUL不執(zhí)行微指令時,在執(zhí)行單元EU1-EUN、EUL內(nèi)的時鐘(clock)會停止以節(jié)省大量的電源。
[0044]更名的微指令以及其對應的相關結(jié)果會經(jīng)由總線252提供給重排緩沖器224。重排緩沖器224會安置來自更名的微指令的亂序執(zhí)行所產(chǎn)生的所有結(jié)果,恢復到原來的程序順序。也就是說,來自更名程序寄存器的結(jié)果會重新映像至其所對應的結(jié)構(gòu)寄存器(architectural register),且會根據(jù)執(zhí)行的特定程序順序,將這些結(jié)果排序進入結(jié)構(gòu)寄存器中。已經(jīng)成功完成執(zhí)行具有適當結(jié)果的微指令會在總線257上提供給收回單元225。收回的微指令的結(jié)果會在對應寫回信號WB的總線255上被寫回至緩存數(shù)據(jù)226中。
[0045]如同本領域技術人員所了解的,有許多情況會造成更名的微指令無法成功地執(zhí)行,舉例來說(但不以此為限),像是程序異常(program except1n),一般中斷(generalinterrupt)、輸入/輸出中斷(I/O interrupt)、分支異常(branch except 1n)等等。當重排緩沖器224判斷更名的微指令無法成功地執(zhí)行時,其必須和已發(fā)送用以執(zhí)行的所有新的更名的微指令一起被重新發(fā)送(重新執(zhí)行)。因此,重排緩沖器224會在對應重新執(zhí)行信號REPLAY的總線258上,通過提供無法成功被執(zhí)行的更名的微指令的卷標,啟始重新執(zhí)行事件。
[0046]當無法成功被執(zhí)行的更名的微指令的卷標被提供給重新執(zhí)行多工層214時,重新執(zhí)行多工層214會響應一機器狀態(tài),以和更名的微指令的執(zhí)行相一致,其中此更名的微指令的執(zhí)行起始于其卷標在總線258上被提供的更名的微指令。
[0047]如同本領域技術人員所了解,為了改善性能,微處理器的設計者經(jīng)常對關于程序?qū)⑷绾螆?zhí)行作出假設。舉例來說,在此領域中所熟知的作法,不會采用具有龐大比例的分支。因此,提取單元(提取層)211會根據(jù)這樣的假設用以讓指令排隊等候執(zhí)行。若一分支未被采用,整體的執(zhí)行速度就會被改善。若此分支被采用,所有比此分支還舊的指令必須被來自所采用的程序路徑的指令所取代。
[0048]微處理器的設計所做的另一假設為加載微指令將會在特定數(shù)目的時鐘周期中,在層級I高速緩存223命中(hit),且此假設是基于根據(jù)存取層級I高速緩存223的設計,在所需時鐘周期數(shù)目內(nèi),在層級I高速緩存223命中的統(tǒng)計量,例如:百分之90的命中率。本發(fā)明中會采用4時鐘周期來存取層級I高速緩存223,然而,這僅是用以作為說明的目的,本發(fā)明并不以此為限。其它時鐘周期的數(shù)目也可被考慮。
[0049]此外,保留站RSl-RSN可包括邏輯組件。在派送舊的加載指令之后,邏輯組件用以緩存(stall)其標簽是對應舊的加載微指令的更名的微指令,直到過了四個時鐘周期。然后,假設在四個時鐘周期期間,舊的微止令將會在層級I高速緩存223命中,且將可取得標示的操作數(shù)的情況下,派送新的更名的微指令至其所對應的執(zhí)行單元EU1-EUN。雖然在圖2未顯示,但必須注意地是,執(zhí)行單元EU1-EUN、EUL也可存取在加載操作可獲得的操作數(shù),且提供這些操作數(shù)給目前執(zhí)行的微指令。對于層級I高速緩存223命中的加載而言,操作數(shù)會被提供給所派送的相依的新的微指令,其中此新的微指令執(zhí)行完成的速度會快于提供原先的操作數(shù)的情況。但是對于無法在層級I高速緩存223中命中的加載(根據(jù)百分之90的命中率的假設下,未命中的機率大概為百分之10)而言,在加載成功完成后,在要命中的假設下,被派送的所有相依的新的微指令,都必須被重新執(zhí)行。因此,當無法在層級I高速緩存223命中時,執(zhí)行單元EUL將會通過在對應未命中信號MISS的總線253上指示未命中的加載指令的卷標,來通知重排緩沖器224,以啟動新的相依的指令的重新執(zhí)行。
[0050]以性能的觀點來看這樣的方案是極有效的,對大多數(shù)目前的高速緩存是非常有效率的,在一般施行的方式會在加載指令派送后,根據(jù)假定的高速緩存存取數(shù)目的時鐘周期(例如:四個時鐘周期),在此數(shù)目的時鐘周期,緩存與加載微指令相依的所有微指令。相依的微指令會停留在各自的保留站RSl-RSN中,且當假設規(guī)定在加載微指令的操作數(shù)可從層級I高速緩存223獲得時,相依的微指令就會被派送。一般來說,此加速方法會使用在所有加載指令,這些加載指令包括了用以存取除了層級I高速緩存223之外的資源的加載指令。因為這樣類型的加載指令比起存儲器加載指令是相對地不常見,所以關于重新執(zhí)行存取除了存儲器之外的資源的加載指令對性能所產(chǎn)生的影響一般而言是可被忍受的。舉例來說,當取得加載微指令超過特定數(shù)量的時鐘周期(例如:四個時鐘周期)才成功執(zhí)行(即解決(resolve)),執(zhí)行單元EUL將會表示有不命中在對應未命中信號的總線,因此造成了在完成加載后,相依的新的微指令會被重新執(zhí)行。
[0051 ]上述技術在過去幾年良好地運用在改善超標量處理器201的性能,然而當這樣的方法被應用在如圖1所示的多內(nèi)核處理器的配置時,現(xiàn)今的發(fā)明人員發(fā)現(xiàn)到了會有額外的挑戰(zhàn)因此產(chǎn)生出來。更具體地來說,像這樣的方法雖然通過存取到層級I高速緩存223所控制的配置中相當有效,但在電源的使用上并沒有效率,當此方法應用在越來越頻繁用以存取非內(nèi)核資源230的多內(nèi)核處理器配置時,和使用在目前層級I高速緩存223相比,對于非內(nèi)核資源230的存取時間是非常慢的。
[0052]也就是說,任何用以特別指示非內(nèi)核資源(規(guī)定資源)230(例如:熔絲陣列108、總線單元105(針對不能高速緩存的加載)、高階可編程中斷控制器107、輸入/輸出單元106、層級2高速緩存103、以及隨機存取存儲器104)的加載微指令,將導致具有來自非內(nèi)核資源230的加載的標簽的相依的新的微指令重新執(zhí)行。此外,目前發(fā)明人員觀察到,當沒有太多的性能命中(performance hit),這些相依的新微指令所浪費的起始執(zhí)行(initial execut1n)會導致龐大的電源花費,由于保證被重新執(zhí)行的加載微指令會被派送至執(zhí)行單元EU1-EUN,因此將會使用到原本會通過內(nèi)部電源管理機制節(jié)省下來的電源。
[0053]本發(fā)明根據(jù)一新的方法,提供了通過降低加載重新執(zhí)行的次數(shù),以節(jié)省亂序多內(nèi)核處理器中的電源的一設備和方法,來克服了上述所關注的目前的加載機制的限制。此新的方法將會在底下參考圖3-圖7來進行談論。
[0054]現(xiàn)在來參考圖3。圖3為顯示根據(jù)本發(fā)明的實施例所述的對于來自非內(nèi)核資源的加載具有節(jié)能機制的多內(nèi)核處理器的區(qū)塊圖300。區(qū)塊圖300顯示了裝置芯片310,在裝置芯片310配置了四個處理器內(nèi)核301。特別說明的是,在此所述的四內(nèi)核301僅是用以說明,但并非用以限制本發(fā)明。本發(fā)明所提出的原理和技術特征也可應用在具有不同數(shù)目的內(nèi)核301,其中來自非內(nèi)核資源的加載操作所花費的存取時間,會長于在內(nèi)核上高速緩存的存取。
[0055]如同圖1所示的多內(nèi)核處理器,根據(jù)本發(fā)明的實施例所述的多內(nèi)核處理器會包括非內(nèi)核資源302,非內(nèi)核資源302傳統(tǒng)上會如同內(nèi)核301—樣配置在相同的芯片310上,且每一內(nèi)核301會經(jīng)由高速總線311-314來存取非內(nèi)核資源302。區(qū)塊圖300顯示了例示性的共享資源,例如:層級2高速緩存303、隨機存取存儲器304、總線單元305、輸入/輸出單元306、高階可編程中斷控制器307,以及熔絲陣列308,但本發(fā)明并不以此為限。因此,總線BI 311使得內(nèi)核I 301能夠存取非內(nèi)核資源302??偩€B2 312使得內(nèi)核2 301能夠存取非內(nèi)核資源302。總線B3 313使得內(nèi)核3 301能夠存取非內(nèi)核資源302??偩€B4 314使得內(nèi)核4 301能夠存取非內(nèi)核資源302。在傳統(tǒng)上的配置,多內(nèi)核處理器會耦接至在芯片310外部的其它組件,例如:系統(tǒng)存儲器(經(jīng)由存儲器總線MEM進行存取)、輸入/輸出組件(經(jīng)由總線I/O進行存取),以及系統(tǒng)控制組件(經(jīng)由控制總線CTRL進行存取),但本發(fā)明并不以此為限。上述系統(tǒng)存儲器包括一或多頁表,用以儲存虛擬地址以及物理地址間的一或多映像,并且可進行上述一或多頁表的頁表查找以提取操作數(shù)。在其它實施例中,非內(nèi)核資源、系統(tǒng)存儲器、輸入/輸出組件或系統(tǒng)控制組件可能未和多內(nèi)核處理器被安置在相同的芯片上,而通過總線彼此親接。