TWI569207B - 微處理器、微處理器的運作方法、及改善微處理器效能的方法 - Google Patents
微處理器、微處理器的運作方法、及改善微處理器效能的方法 Download PDFInfo
- Publication number
- TWI569207B TWI569207B TW104135375A TW104135375A TWI569207B TW I569207 B TWI569207 B TW I569207B TW 104135375 A TW104135375 A TW 104135375A TW 104135375 A TW104135375 A TW 104135375A TW I569207 B TWI569207 B TW I569207B
- Authority
- TW
- Taiwan
- Prior art keywords
- prediction
- microprocessor
- storage
- history
- operating system
- Prior art date
Links
Landscapes
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Description
本發明係關於一種微處理器,特別是一種微處理器、微處理器的運作方法、及改善微處理器效能的方法。
現今的微處理器採用不同的預測技術來試圖改善其效能。舉例來說,分支預測器被用來預測分支指令是否將被使用,以及當預測到分支指令將會被使用時,進一步預測此分支指令的目標位址。動態分支預測器會累計用以記載執行不同的分支指令之結果的歷程並且會根據這些歷程產生針對每一分支指令的預測。動態分支預測器的預測準確性主要在於歷程可累積的量的函數。只要一程式在給定的時間內所執行的分支指令組的長度小到足以被涵蓋在預測歷程中,則獲得的預測準確性可能會相當高。
然而,預測準確性可能會因某些事件(例如發生在另一程式執行的同時暫緩目前正在執行的程式的事件等)的發生而大幅縮減。舉例來說,當一網路介面控制器(network interface controller)接收到一封包(packet)時,網路介面控制器會發出訊號通知處理器進行中斷。此時處理器會轉而控制作業系統去執行此中斷事件,而作業系統則會暫緩目前正在執行的程式A直到返回執行此程式 A為止。在處理器執行作業系統的分支指令的期間,會改變分支預測器針對程式A所產生的預測歷程。這樣可能會降低分支預測器在預測程式 A的跳轉(branch)時的準確性。
本發明在於提供一種微處理器、微處理器的運作方法、及改善微處理器效能的方法,藉以僅使用儲存器中的一部分儲存部來累計預測歷程,進而提升分支預測的準確性。
一方面,本發明提供一微處理器。微處理器包含一預測單元和一控制單元。預測單元包含用以保存一預測歷程的一儲存器,此預測歷程記載微處理器先前執行之指令的特徵。預測單元累計預測歷程,並根據此預測歷程產生關於後續指令執行的預測。儲存器包含用以累計此預測歷程且分別受控的多個儲存部。控制單元用以偵測微處理器執行一作業系統程序,並用以在微處理器執行所述之作業系統程序期間控制預測單元僅使用儲存器中部分的儲存部,以累計此預測歷程。
另一方面,本發明提供一微處理器的運作方法。此微處理器包含一預測單元,並且此預測單元包含用以保存一預測歷程的一儲存器。所述之預測歷程記載微處理器先前執行過之指令的特徵。預測單元用以累計此預測歷程並根據此預測歷程產生關於後續指令執行的多個預測。儲存器包含用以累計此預測歷程並可分別控制的多個儲存部。此運作方法包含下列步驟。偵測微處理器執行一作業系統程序。在微處理器執行所述之作業系統程序期間,控制預測單元僅使用所述儲存器中部分的儲存部,以累計此預測歷程。
又另一方面,本發明提供一改善微處理器效能的方法,此方法適用於一微處理器。所述微處理器包含一預測單元,預測單元包含用以累計先前被執行過之指令的預測歷程的一儲存器。預測單元利用預測歷程來預測後續指令的執行,並且係可動態控制地僅使用部分的儲存器來累計預測歷程。此方法包含下列步驟。識別被多個軟體應用程式呼叫的多個作業系統程序。分別計數被每一個作業系統程序執行之指令的一數量。此方法也包含根據每一被執行之指令的數量,從作業系統程序中選擇一子集合;以及針對此子集合調整儲存器的分數值,以決定使這些軟體應用程式達到最佳化效能所需之分數值,藉此實現效能分析。
以上之關於本揭露內容之說明及以下之實施方式之說明係用以示範與解釋本發明之精神與原理,並且提供本發明之專利申請範圍更進一步之解釋。
以下在實施方式中詳細敘述本發明之詳細特徵以及優點,其內容足以使任何熟習相關技藝者了解本發明之技術內容並據以實施,且根據本說明書所揭露之內容、申請專利範圍及圖式,任何熟習相關技藝者可輕易地理解本發明相關之目的及優點。以下之實施例係進一步詳細說明本發明之觀點,但非以任何觀點限制本發明之範疇。
本發明所提供之用以改善微處理器效能之相關實施例係藉由預測單元(例如分支預測器、資料預取器和儲存衝突(store collision)偵測預測器)利用預測歷程選擇性地暫緩(suspend)預測歷程與預測的累計,並在動態預測中斷時使用靜態預測。進一步來說,當微處理器正執行某些執行緒(thread)而非其他運作時,預測歷程的累計與使用可能會被暫緩。舉例來說,所述的暫緩與否係取決於執行緒的特權等級。進一步來說,執行緒是否為位於一監督者特權等級(supervisor privilege level),例如在x86 處理器架構中之目前特權等級(current privilege level,CPL)0,也可稱為第0級。在另一示例中,所述的暫緩與否係取決於執行緒的型態(Type),例如取決於執行緒是否為一中斷處理器(interrupt handler)。在另一示例中,所述的暫緩與否係取決於是否因應一系統呼叫指令(system call instruction)而跳到新的執行緒。在另一示例中,微處理器會收集關於先前執行緒的執行情況的資訊 ,而所述的暫緩與否可取決於微處理器所收集到的資訊,例如指令長度(length)和效能資訊。在另一示例中,所述的暫緩與否係取決於執行緒的身分。執行緒的身分可根據例如由導致躍遷(transition)之事件的型態、此事件發生當時之處理器的結構狀態以及其組合來決定。事件的型態例如可包含執行一系統呼叫、執行一軟體中斷指令、執行一內部特權(inter-privilege)或工作切換(task switch)程序呼叫以及偵測異常情況(exception condition)。再者,在中斷預測歷程之累計與使用的期間,微處理器可儲存和恢復這些預測歷程至一局部儲存器(local storage)。
詞彙說明
預測單元可為微處理器之硬體、軟體或其組合,並可產生關於在微處理器上進行的一指令流所對應之動作的預測。所述的預測可例如但不限於包含預測一分支指令是否將指示微處理器跳轉(branch)、預測一分支指令的一目標位址、預測指令流的其中一個指令將要存取的資料、以及預測一儲存衝突是否發生。預測單元可根據記載有被微處理器執行之指令的特徵的一歷程(或稱預測歷程),產生相對應的預測,而此時的預測稱為動態預測。當微處理器執行指令流中的每個指令的同時,預測單元也會累計此歷程。此歷程可例如包含但不限於分支指令是否指示微處理器跳轉的結果、一已執行之分支指令的目標位址、指令流中的每個指令所載入或儲存之資料的位址、關於指明可快取記憶體位置之儲存指令的資訊(例如儲存指令的位址、用以計算儲存位址的來源(source)的識別符、用以決定儲存資料之指令的一重排序緩衝器索引(reorder buffer index)、之前與儲存指令發生衝突的一載入指令的位址和重排序緩衝器索引、衝突的載入和儲存指令之間的一重排序緩衝器索引差值以及一衝突的載入指令之重新執行次數的一指示器(indicator))。預測單元也可以不用根據此歷程來產生預測,而此時的預測稱作靜態預測。
微處理器的特權等級係由微處理器的指令集架構(instruction set architecture)所定義,並且特權等級係用以控制當前正在執行之程式對例如儲存區域(memory region)、輸入輸出埠(I/O port)以及指令集中的特定指令等之系統資源的存取動作。
執行緒係為由微處理器執行之包含多個指令的一指令序列。
處理程序(process)是指一執行緒和其相關狀態,此狀態連同其他處理程序是由一作業系統管理。此作業系統會分配一處理程序識別符(process identifier)給此處理程序。
請參考圖1所示,圖1係為根據本發明之一實施例所繪示之微處理器100的方塊圖。微處理器100包含多個預測單元109。這些預測單元109耦接於一控制單元124和一預測歷程儲存器108(或稱儲存器)。控制單元124分別耦接於一引退指令計數器113、多個效能計數器114、一目前特權等級暫存器111和用以保存優化資訊(optimization information)112的一儲存器。在一實施例中,微處理器100包含一或多個功能單元的通道(pipeline)(未繪示),這裡的功能單元可包含一指令快取儲存區(cache)、一指令轉換單元(instruction translation unit)或指令解碼器、一暫存器更名單元(register renaming unit)、多個保留站(reservation station)、多個資料快取儲存區、多個執行單元、一記憶體子系統(subsystem)以及包含一重排序緩衝器的一引退單元(retire unit)。較佳的是,微處理器100可包含一超純量型(superscalar)亂序執行微架構(out-of-order micro-architecture)。這些預測單元109可合併於微處理器100的不同的功能單元中,或者也可為功能單元本身。
上述的預測單元109包含硬體、軟體或硬體和軟體的組合。預測單元109可包含一分支預測單元102、一資料預先擷取單元(data prefetch unit)104與一儲存衝突預測單元106。分支預測單元102包含用以儲存一預測歷程132A的一儲存陣列(storage array)。資料預先擷取單元104 包含用以儲存一預測歷程132B的一儲存陣列。儲存衝突預測單元106 包含用以儲存一預測歷程132C的一儲存陣列。上述多個預測歷程可分別單獨或集體地稱為一預測歷程132或是多個預測歷程132。每一預測單元109分別透過其各別的預測歷程132產生關於指令處理/資料處理方面的預測,藉以透過推測的運作(speculative operation)試圖改善微處理器100的效能及/或降低微處理器100的電力損耗。進一步來說,分支預測單元102用以累計記錄有被微處理器100執行的分支指令的指令位址、方向(已執行或未被執行)和目標位址的歷程,而微處理器100藉由執行這些分支指令來致能分支預測單元102,使分支預測單元102動態預測後續執行這些分支指令的方向與目標位址的可能情況。動態分支預測技術可藉由此領域之技藝者可獲得之任何方式來實行。資料預先擷取單元104用以累計程式指令存取可快取記憶體區域的歷程,藉此偵測記憶體存取樣態(memory access pattern)。這裡所述之記憶體存取樣態係用來預測未來所述之可快取記憶體區域中哪一筆資料將被程式使用,藉此預測在此程式需要此筆資料之前,從系統記憶體(system memory)中預先擷取預測的資料並儲存至微處理器100的一快取記憶體中。如此一來,便可節省記憶體存取的時間(因為系統記憶體的等待時間(latency)遠大於快取記憶體的等待時間)。動態資料預先擷取技術可藉由此領域之技藝者可獲得之任何方式來實行。儲存衝突預測單元106可累計記載有指示可快取記憶體的位置之儲存指令的歷程,藉此預測何時將會發生儲存衝突。所述的儲存衝突是發生在當一個新的載入指令(load instruction)指示的資料與一個舊的儲存指令(store instruction)所指示的資料重疊的時候。預測儲存衝突的發生可驅使微處理器100推測性地把原本要給儲存指令使用之資料轉遞給載入指令使用,及/或也可避免執行相對於舊的儲存指令而言是亂序的一衝突的載入指令。可以被理解的是,本發明的實施例並不限於上述之預測單元的實施態樣。換句話說,本發明也涵蓋其他實施態樣的預測單元,其他態樣的預測單元也可累計記載有被微處理器100執行的指令之特徵的歷程,所述之指令的特徵將有助於使預測單元產生關於後續將被執行的指令之各方面的預測,或驅使預測單元執行其他試圖提升微處理器100的效能及/或降低微處理器100的電力損耗之推測運作。
除了可以動態預測(亦即根據預測歷程132而產生的預測)以外,每一個預測單元109也可以產生靜態預測(亦即無需根據預測歷程132而產生的預測)。舉例來說,在一實施例中,分支預測單元102會靜態地預測出所有將被執行且目標位址為向後(例如偏移量為負值的跳轉動作)的分支指令,以及靜態地預測出所有不會被執行且目標位址為向前的分支指令,這些預測動作不需要任何記載有先前已被執行之指令的歷程。另舉一示例來說,在一實施例中,資料預先擷取單元104靜態地預測到當偵測到一程式在存取可快閃記憶體時,將會需要下一相鄰之快取線的資料,因此便可預先擷取此下一個快取線的資料。靜態預測方法可藉由中央處理器相關領域之技藝者可獲得之任何方式來實行。
在一實施例中,為因應促使微處理器100由執行一個執行緒轉而執行另一個不同的執行緒的事件(例如由使用者特權等級跳轉至監督者特權等級),預測單元109會透過預測歷程儲存器108儲存預測歷程132;以及為因應促使微處理器100由監督者特權等級跳轉回使用者特權等級的事件,預測單元109會透過預測歷程儲存器108恢復這些預測歷程132。相較於正在執行的,較佳的作法是在轉換至監督者特權等級時返回不同的使用者處理程序,此相關詳細敘述記載如下。
目前特權等級暫存器111用以儲存微處理器100的目前特權等級。在一或多個實施例中,微處理器100大致上係符合x86架構,此x86架構也可被稱為Intel IA-32架構及/或Intel 64架構(詳情請參見由加州聖塔克拉拉之英特爾公司於西元2012年5月所提出之序號為325464-043US的「Intel® 64與IA-32架構軟體開發人員手冊」第1、2A、2B、2C、3B和3C冊)。在實務上,以x86架構的實施例來說,目前特權等級暫存器111 表示微處理器100是否運作在目前特權等級 0、1、2或3,亦即第0級、第1級、第2級或第3級。第0級係為最高特權等級,而第3級係為最低特權等級,即使用者特權等級(user privilege level)。第0級、第1級和第2級皆為監督者特權等級。
每逢一指令引退時,引退指令計數器113會增量一次。藉由從當微處理器100開始執行一執行諸(例如離開第0級)時指令計數器113的值中減去當微處理器100開始執行另一執行諸(例如進入第0級)時指令計數器113的值,控制單元124可判斷出被另一執行緒撤出之指令的數量。此相關詳細敘述記載如下。在一實施例中,指令計數器113計算已撤出之巨集指令(macro-instruction)(亦即例如為x86指令等的架構指令)的數量。而在另一實施例中,指令計數器113計算已撤出之微指令(micro-instruction)的數量,這裡的已撤出之微指令係為由微處理器100的微架構指令集(microarchitecture instruction set)所定義的非架構指令,而微架構指令集則是由微處理器100的指令翻譯器翻譯巨集指令而獲得,並且由微處理器100的多個執行單元執行。
效能計數器114的實施態樣包含用以計算關於微處理器100的效能及/或電力損耗的許多方面的計數器。在一實施例中,效能計數器114用以計數已預測的分支指令的數量、已正確預測的分支指令的數量、未正確預測的分支指令的數量、由一資料預先擷取所分配的快取線的數量、由一非預先擷取手段(例如一需要載入/儲存或直接記憶體存取(direct memory access,DMA)的請求)所分配的快取線的數量、使用藉由資料預先擷取所分配的一快取線之程式的量、使用前已被排除之資料預先擷取所分配的快取線的數量、儲存衝突預測或實際偵測到之儲存衝突。
優化資訊112用以例如在監督者特權等級之運作期間,選擇性地暫緩累計與使用預測歷程132。關於優化資訊112的內容及使用將於圖3中詳細說明。
控制單元124包含硬體、軟體或其組合。根據其輸入–主要為目前特權等級111、優化資訊112、引退指令計數器113、效能計數器114、執行緒轉換事件型態以及架構狀態–控制單元124控制預測單元109,使預測單元109繼續進行或暫緩累計其各別的預測歷程132以及繼續進行或暫緩根據預測歷程132產生預測,及/或使控制預測單元109儲存這些預測歷程132至預測器歷程儲存108或從預測器歷程儲存108恢復這些預測歷程132。在一實施例中,控制單元124 包含硬體狀態機(hardware state machines)、微指令(microcode) 或其組合。在一實施例中,所述的微指令包含由微處理器100之多個執行單元所執行的指令。
在一實施例中,用以控制取得微指令的一微指令單元(未繪示)擁有自己的取得單元(fetch unit)或序列器(sequencer),因此微指令單元不會使用到只能用以預測使用者程式的分支指令的分支預測單元102。
請參考圖2所示,圖 2係為根據本發明之一實施例所繪示之圖1中微處理器100的運作流程圖。流程開始於方塊202。
如方塊202所示,當每一個預測單元109 執行使用者特權等級(例如第3級)的一執行緒時,每一個預測單元109會在微處理器100正在處理此執行緒中之指令期間累計其各別的預測歷程132並根據此預測歷程132產生動態預測。流程進行到方塊212。
如方塊212所示,控制單元124偵測到用以指示微處理器100運作在監督者特權等級(例如第0級)下的事件。相較於目前正在執行之執行緒,此事件也使微處理器100轉而進行另一個不同的執行緒。此事件例如包含但不限於執行例如為一系統呼叫指令 (例如x86 SYSENTER/SYSCALL 指令)、軟體中斷 (例如x86 INT 指令)或內部特權等級或工作切換程序呼叫指令 (例如x86 CALL 指令)等的指令,以及偵測例如硬體中斷(例如計時器計時或I/O裝置)或尋頁錯失(page fault)等的例外狀況。在一實施例中,此事件會使微處理器100將控制轉移至微指令,而在轉移至作業系統之掌控所述的事件的第0級執行緒或例行程序(routine)之前,此微指令會執行例如為權限檢查(permission check)等之不同的運作。流程進行到方塊222。
如方塊222所示,因應方塊212偵測到的事件,控制單元124會控制這些預測單元109在微處理器100正執行上述監督者特權等級的新執行緒期間,暫緩累計其各別的預測歷程132以及暫緩根據預測歷程產生預測。然而,這些預測單元109仍會繼續產生無須使用到預測歷程132的靜態預測。在一實施例中,控制單元124可能僅控制部分的預測單元109暫緩累計預測歷程132以及產生預測,而不控制其他的預測單元109暫緩累計預測歷程132以及產生預測。並且,哪些預測單元109應暫緩運作以及哪些預測單元109應繼續運作係可隨微處理器100的運作來決定。舉例來說,由暫緩的預測單元109組成的子集合與由未暫緩的預測單元109組成的子集合係可藉由例如作業系統或基本輸入/輸出系統(Basic Input/Output System,BIOS)來程式化。另舉一示例來說,這些子集合可由一使用者自己或服務人員(service personnel)在微處理器100的製造期間或當場藉由燒斷保險絲來設定裝配 。另舉一示例來說,這些子集合可根據將執行的特殊的第0級執行緒來決定。關於如何決定子集合的相關實施例將於圖3的實施例中詳細說明。流程進行到方塊232。
如方塊232所示,控制單元124偵測到指示微處理器100運作在使用者特權等級(例如第3級)的事件。這裡所述的事件也會使微處理器100轉至執行另一個不同的執行緒而非目前正在執行的執行緒。所述的事件可包含但不限於執行例如為系統呼叫返回(system call return) 指令 (例如x86 SYSEXIT/SYSRET 指令)、從中斷或例外返回(例如x86 IRET 指令)的指令或從程序返回內部特權等級的指令(例如x86 RETF 指令)等的指令。在一實施例中,所述的事件會使微處理器100轉至執行微指令,且此微指令會在微處理器100轉至執行第3級處理程序之前,執行不同的運作。流程進行到方塊242。
如方塊242所示,當微處理器100正處理指令時,每一個預測單元109重新開始累計其各別的預測歷程132以及根據此預測歷程13產生動態預測。流程結束於方塊242。
由此可見,若在方塊242中返回執行第3級處理程序與在方塊212中被其中的事件中斷的第3級處理程序相同時,則因為這些預測歷程132不會被第0級執行緒影響而改變,所以此時的每一個預測歷程132的內容應該會相同於其在第0級轉換(transition)之前的內容,亦即相同於當第3級處理程序被中斷時之預測歷程132。如此一來,很可能有利於這些預測單元109在所述事件之後如同之前一樣繼續針對第3級處理程序的執行緒產生準確的動態預測。此外,也有可能因為只有靜態預測會被用來作為針對第0級執行緒所產生的預測,所以在執行第0級執行緒時的預測效能將會小於在執行第3級處理程序時的預測效能。然而,可能有利的是依據第0級執行緒及/或第3級處理程序的特徵,犧牲在執行第0級執行緒時的效能,以求第3級效能的改善因較少或不改變第3級處理程序的預測歷程而能支配第0級效能的損失,尤其是若第0級執行緒的長度很短及/或很少執行第0級執行緒時。
請參考圖3所示,圖 3係為根據本發明之另一實施例繪示之圖1中微處理器的運作流程圖。圖3和圖2中有一部份的方塊彼此相同且有相同的編號。較佳的是,在重置時(reset)時,控制單元124會初始化優化資訊112 的資料結構,此相關內容將詳述於下。流程開始於方塊202。
如方塊202所示,當一執行緒運作在使用者特權等級(例如第3級)時,每一個預測單元109會在微處理器100正處理指令的期間累計其各別的預測歷程132以及根據此預測歷程132產生動態預測。流程進行到方塊212。
如方塊212所示,控制單元124偵測到指示微處理器100運作在一監督者特權等級(例如第0級)並使微處理器100由目前正在執行的執行緒轉至執行另一個不同的執行緒的事件。流程進行到方塊311。
如方塊311所示,控制單元124會試圖識別將運作在第0級的執行緒,並針對此第0級執行緒產生一相對應的識別符。在一實施例中,優化資訊112的資料結構包含一表單(或稱為控制資訊表單),且控制單元124在微處理器100的一專用記憶體(private memory)中儲存並維護此表單,此相關內容將詳述於下。表單中的每一個項目係關聯於一不同的第0級執行緒的識別符。用來產生第0級執行緒的識別符的函數(function)可接收不同的輸入,例如當偵測到執行緒轉換時之微處理器100的事件型態與狀態值。這裡的事件型態可例如為但不限於上述圖2中之方塊212所提及多種的事件型態的其中之一。這裡的狀態值可例如為但不限於一般目的暫存器值、特殊目的暫存器(model specific register,MSR)值、會引起系統呼叫、軟體中斷或內部特權或任務切換程序呼叫之第3級處理程序的指令指標(instruction pointer,IP)或程式計數器(program counter,PC)的值以及關聯於中斷或例外事件的中斷向量編號(interrupt vector number)。狀態值的輸入可隨事件型態的不同而有不同。在一示例中,當第3級處理程序例如透過x86 SYSENTER 指令產生一系統呼叫給Microsoft® Windows®作業系統時,Windows作業系統會根據x86 EAX 暫存器中的值而運行不同的執行緒。在另一示例中,Windows作業系統則會根據其他的暫存器中的值而運行不同的執行緒。因此,在一實施例中,當事件型態為一系統呼叫指令時,控制單元124會判斷EAX 暫存器的值(簡稱EAX值),並針對不同的EAX值產生不同的第0級識別符。在其他的實施例中,本發明也可應用於其他作業系統。另舉一示例來說,控制單元124可產生不同的第0級識別符的值給不同的中斷向量值。流程進行到方塊313。
如方塊313所示,控制單元124會在優化資訊112 的資料結構中查找在方塊311中產生的第0級識別符,以獲得關聯於被第0級識別符識別出的第0級執行緒的優化資訊112。在一實施例中,若第0級識別符未出現在優化資訊112的資料結構中,這時控制單元124會執行預設第0級項目動作(亦即進入第0級時關於是否要累計預測歷程132以及根據此預測歷程132產生動態預測的預設動作)並分配在優化資訊112的資料結構中的一項目給此第0級識別符。在一實施例中,這裡的預設第0級項目動作是指暫緩累計這些預測歷程132並根據預測歷程132產生預測。若第0級識別符已出現在優化資訊112的資料結構中,此時控制單元124會根據對應的優化資訊112決定是否要略過上述的預設第0級項目動作。在一實施例中,優化資訊112包含第0級執行緒的指令長度。若第0級執行緒的指令長度小於一預定長度時,控制單元124會決定暫緩累計並使用這些預測歷程132;相反的,則會繼續累計並使用這些預測歷程132。在一實施例中,指令長度代表引退指令計數器113計數在前次第0級執行緒被執行期間引退之指令的數量。在一實施例中,優化資訊112包含根據預測歷程132產生之預測的有效性資訊,而這裡的預測歷程132係在先前執行第0級執行緒的期間所獲得,及/或在先前接續先前第0級執行緒之後執行第3級處理程序的期間所獲得。在一實施例中,所述的有效性是由效能計數器114獲得。流程進行到決定方塊315。
如決定方塊315所示,控制單元124決定是否要暫緩累計預測歷程132以及暫緩根據累計預測歷程132產生預測。若是,則流程進行到方塊222;若否,則流程進行到方塊321。雖然本發明實施例論述是否要累計預測歷程132並根據預測歷程132產生動態預測是根據關聯於一執行緒的識別符的優化資訊112來決定,但此決定也可根據準則而定。舉例來說,控制單元124可根據新執行緒的身分或多個特徵(或上述已提及之不同輸入的任一組合)來作決定,並且執行跳轉至新執行緒無須參考優化資訊112。換句話說,新執行緒的特徵可能足以用來決定是否要累計預測歷程132並根據預測歷程132產生動態預測,亦即是否選擇性地暫緩累計此預測歷程132並根據預測歷程132產生動態預測。一般來說,以執行具有預測準確性較差的特徵的執行緒來換取不損及其他長度明顯較長及/或較頻繁被執行的執行緒的預測歷程132很可能會為其餘剩下的執行緒和全部的執行緒帶來較高的預測準確性,並且也可能會使微處理器100擁有較高的效能。因此,可以針對長度夠短及/或很少被執行的執行緒進行暫緩累計此預測歷程132並根據預測歷程132產生動態預測。所述之新執行緒的特徵可例如為關聯於跳轉至新執行緒的事件型態及/或架構狀態、如圖2中所述之特權等級或新執行緒是否為一中斷處理器。
如方塊222所示,當微處理器100正運作在監督者特權等級時,為因應在方塊212所偵測到的事件,控制單元124會控制預測單元109暫緩累計其各別的預測歷程132以及暫緩根據預測歷程132產生預測。然而,這些預測單元109仍會持續產生無須使用到預測歷程132的靜態預測。流程進行到方塊321。
如方塊321所示,當第0級執行緒被執行的同時,控制單元124會持續收集關於第0級執行緒的優化資訊,例如由效能計數器114獲得的預測有效性以及由引退指令計數器113獲得的執行緒的指令長度。在一實施例中,除了預測單元109產生的動態預測以外,控制單元124也會關於收集靜態預測的預測有效性的相關資訊。在一實施例中,控制單元124也收集關於第3級執行緒的預測有效性資訊。較佳的是,若執行緒之靜態預測的效能是可接受的時,尤其是若其他執行緒的效能已被顯著地改善時,則控制單元124可能會在執行此執行緒的期間持續暫緩累積和使用預測歷程;否則,控制單元124可能會在執行此執行緒的期間累計和使用預測歷程。流程進行到方塊232。
如方塊232所示,控制單元124偵測到指示微處理器100運作在一使用者特權等級(例如第3級)以及導致由目前正在執行的執行緒轉至另一個不同的執行緒的事件。流程進行到方塊333。
如方塊333所示,控制單元124會利用在方塊321收集到的優化資訊更新優化資訊112的資料結構中關聯於第0級執行緒的項目。在一實施例中,這裡所述的更新包含簡單地用新收集的優化資訊置換此項目裡的優化資訊112。在其他實施例中,所述的更新意味著根據收集到的優化資訊產生計算結果,並且根據獲得的計算結果更新優化資訊112。舉例來說,控制單元124可根據最後N次第0級執行緒的執行,計算引退的指令的一平均數量及/或預測有效性。而此平均數量可為一加權平均值或一滾動(rolling)平均值。此外,控制單元124可從優化資訊112中過濾掉要排除的極限值(extreme value)。再者,本發明也提供維護優化資訊112的資料結構的不同方式。舉例來說,在一實施例中,控制單元124會針對第0級執行緒而僅維護在優化資訊112的資料結構中的項目,並且控制單元124會因應第0級執行緒而欲忽視預設第0級項目動作。換句話說,若是控制單元124在優化資訊112的資料結構中查找到在方塊313中的第0級執行緒的識別符,則控制單元124會在決定方塊315中決定忽視此預設動作。流程進行到決定方塊335。
如決定方塊335所示,控制單元124判斷在方塊222中是否已暫緩累計和使用這些預測歷程132。如果是,流程進行到方塊242;相反地,則表示預測單元109已一直累計並會繼續累計預測歷程132並根據預測歷程132產生預測,以及流程結束於此。
如方塊242所示,預測單元109會在微處理器100處理指令期間重新累計各別的預測歷程132以及根據預測歷程132產生動態預測。流程結束於方塊242。
請參考圖4所示,圖 4係為根據本發明之另一實施例繪示之圖1中微處理器100的運作流程圖。圖4和圖2之間有部分的方塊相同且以相同標號標示。流程開始於方塊202。
如方塊202所示,當一執行緒是在一使用者特權等級(例如第3級)時,每一個預測單元109會在微處理器100處理指令的期間累計其各別的預測歷程132,並且根據此預測歷程132產生動態預測。流程進行到方塊212。
如方塊212所示,控制單元124偵測到指示微處理器100運作在一監督者特權等級(例如第0級)並使微處理器100由目前正在執行的執行緒轉至執行另一個不同的執行緒的事件。流程進行到方塊222。
如方塊222所示,在微處理器100處理此監督者特權等級的新執行緒的期間,為因應上述在方塊212中偵測到的事件,控制單元124會控制預測單元109暫緩累計其各別的預測歷程132以及暫緩根據預測歷程132產生預測。然而,這些預測單元109仍會繼續產生無須使用到預測歷程132的靜態預測。流程進行到方塊413。
如方塊413所示,控制單元124將這些預測歷程132的當前實例儲存至預測歷程儲存器108。在一實施例中,控制單元124僅儲存一給定的預測歷程132的一部分,藉此降低儲存所需要的時間。舉例來說,若分支預測單元102產生的預測歷程132A的檔案大小是相對大(例如8KB),控制單元124可僅儲存最近存取的項目(其檔案大小例如為512 bytes)而非儲存整個預測歷程132A。在一實施例中,控制單元124會廢棄預測歷程132中未被儲存的部份。並且,在一實施例中,控制單元124僅儲存所有預測單元109中部分的預測單元109所產生的預測歷程132而非儲存所有預測單元109產生的預測歷程132。舉例來說,如果判斷出相較於一第二子集合的預測單元109,在第一子集合的預測單元109被一第0級執行緒中斷時對預測效力的負面影響是更嚴重的,此時控制單元124可儲存第一子集合之預測單元109產生的預測歷程132而不會儲存第二子集合之預測單元109產生的預測歷程132。較佳的是,控制單元124會維護預測歷程儲存器108中的多個項目,並且每一個項目係關聯於由單一個第3級識別符所識別的一不同的第3級處理程序。在一實施例中,第3級處理程序係由其x86 處理內容識別符(process-context identifier,PCID)所辨識,如前述之Intel 64與IA-32架構軟體開發者手冊,第3A冊 ,第4-46至4-62頁,段落4.10中所述。在另一實施例中,第3級處理程序係由被載入x86 CR3控制暫存器中的第3級處理程序所使用之頁面目錄(page directory)的位址所識別。在一實施例中,控制單元124是以先進先出緩存(first-in-first-out buffer)的方式維護預測歷程儲存器108。在另一實施例中,控制單元124利用一更複雜的替換手段,例如最近使用的或最少使用的。較佳的是,當微處理器100的功能單元持續處理第0級執行緒的指令時會將預測歷程132儲存在預測歷程儲存器108中,並且第0級執行緒所需執行時間可能會比預測歷程所需的儲存時間還要長。然而,有利的是,因為預測歷程132的陣列不會一直被用(亦即被寫入)來累計預測歷程或產生預測(亦即被讀取)進而處理第0級指令,而只會一直被讀取以儲存預測歷程,因此從儲存預測歷程到處理第0級指令期間用以儲存預測歷程132之儲存陣列的讀取埠和寫入埠在使用上不會發生爭奪的情形。這會有助於因為不需要為此目的而在儲存陣列上增加讀取埠,使得累計儲存預測歷程所需要外加之硬體的數量可以降到最低。流程進行到方塊232。
如方塊232所示,控制單元124偵測到用以指示微處理器100運作在一使用者特權等級(例如第3級)以及由目前正在執行的執行緒轉至執行另一個不同的執行緒的事件。流程進行到方塊433。
如決定方塊433所示,控制單元124判斷在方塊212中轉進之新第3級執行緒與轉離之舊的第3級執行緒是否屬於相同處理程序的一部分。如方塊413所述,控制單元124可根據比較前述兩個執行緒的處理程序識別符(例如x86 PCID)的結果,來進行這裏所述的判斷。若新第3級執行緒的處理程序不同於舊的第3級執行緒的處理程序,則流程進行到方塊435;反之,則流程進行到方塊242。
如方塊435所示,控制單元124會從預測歷程儲存器108中恢復新第3級處理程序的預測歷程132。換句話說,控制單元124利用新第3級處理程序識別符在預測歷程儲存器108中尋找對應新第3級處理程序識別符的預測歷程,並根據第3級處理程序識別符,從預測歷程儲存器108載入預測單元109所產生的預測歷程132。較佳的是,當微處理器100的功能單元繼續處理用以執行從第0級轉換至第3級的微指令的指令時,執行從預測歷程儲存器108中恢復預測歷程132的步驟。此微指令所需的執行時間可為一有效數量的時脈週期,並且也可比恢復所述之預測歷程132所需的時間還長。此作法將帶來一好處,那就是許多的預測歷程132的陣列不會一直被用(亦即被寫入)來累計預測歷程或產生預測(亦即被讀取)以處理第0級指令而只是用來恢復預測歷程,使得從等級轉換微指令至恢復預測歷程的期間可能極少有或不會有爭奪使用預測歷程132之儲存陣列的讀、寫埠的情況。舉例來說,在一實施例中,微指令單元不會使用分支預測單元102,亦即分支預測單元102不會針對微指令中的指令產生預測。另舉一示例來說,在一實施例中,等級轉換微指令不會存取系統記憶體,因此資料預先擷取單元104不需要為等級轉換微指令進行資料預先擷取,並且儲存衝突預測單元106也不需要為等級轉換微指令產生預測。此作法將帶來一好處,那就是因為不需要為這個目的而在儲存陣列上增加額外的寫入埠(write port),所以提供給恢復預測歷程所需的外加之硬體的總數量可降到最低。流程進行到方塊242。
如方塊242所示,這些預測單元109在微處理器100正處理指令的期間會重新累計其各別的預測歷程132並根據預測歷程132產生動態預測。流程結束於方塊242。
有利的是,處理新第3級執行緒的指令不會損及舊的第3級執行緒的預測歷程132,藉此使新和舊的第3級執行緒皆能有較高的預測準確性。
圖3和圖4的諸多實施例可有效地組合成其他實施例,因此控制單元124可儲存和恢復關聯於第0級執行緒的預測歷程132 ,並且針對第0級執行緒,控制單元124可決定不暫緩累計和使用這些第0級執行緒的預測歷程132。這裡的第0級執行緒可例如為指令長度相對長的第0級執行緒及/或基於在先前執行第0級執行緒及/或第3級處理程序期間所產生之預測的有效性而具有累計並使用預測歷程132價值的第0級執行緒。如上所述,微處理器100由第3級轉換至第0級所需要的時間以及由第0級轉換至第3級所需要的時間可為一有效數量的時脈週期,並且在這段期間,不需要累計預測歷程132也不需要根據預測歷程132產生預測。 因此,控制單元124在這段期間可有效地而非象徵性地儲存相對應之預測歷程132至預測歷程儲存器108或從預測歷程儲存器108中恢復相對應之預測歷程132,有果有的話,則對效能不利。在這些實施例中有利的是,可達到將被儲存和被恢復之預測歷程132的總數限制在由第0級轉換至第3級的轉換期間以及由第3級轉換至第0級的轉換期間可能被儲存和被恢復的總數的目的,以避免微處理器100停止執行指令直到完成儲存及恢復的動作為止。
此外,雖然上述實施例中微處理器100會因應執行緒由一個特權等級轉換至另一個不同的特權等級,而選擇性地暫緩累積預測歷程以及根據預測歷程產生預測,然而在其他實施例中,微處理器100也可因應在相同的特權等級下之執行緒轉換,而選擇性地暫緩或重新累計預測歷程以及根據預測歷程產生預測。舉例來說,微處理器100可藉由偵測不涉及改變特權等級的事件來偵測執行緒轉換,並回應以暫緩或重新累計預測歷程以及根據預測歷程產生預測。舉例來說,微處理器100可簡單地偵測具有一特定的IP值之一指令(例如一子程式呼叫或返回指令(subroutine call or return instruction)的執行,此特定的IP值可例如為其他架構狀態的一特定值,此其他架構狀態的一特定值可例如為一般目的暫存器的值。另舉一示例來說,微處理器100可偵測一串指令及/或IP值。
作業系統例行程序之預測歷程儲存器的分數(
fractional
)使用
請參考圖5所示,圖 5係為根據本發明之一實施例所繪示之一控制資訊表單500的示意圖。控制資訊表單500係為保持圖1中優化資訊112的一儲存實施例。控制資訊表單500包含多個項目,每一個項目用以保存一作業系統例行程序的識別符 502和其關聯的控制資訊504。這裡的OS例行程序的識別符 502可包含如前述關於優化資訊112的不同的資訊,例如狀態值(例如當執行一x86 SYSCALL指令時此OS例行程序的IP值和一般目的暫存器的值),並且識別符 502可使控制單元124識別出正要開始執行的一OS例行程序。這裡的控制資訊504指明其他事物中的一分數(fraction)。預測歷程132之儲存器包含多個儲存部,這些儲存部係可獨立控制,以累計預測歷程。換句話說,控制單元124可控制這些預測單元109,使這些預測單元109在此OS例行程序執行期間僅使用預測歷程132之儲存器中的一部分的儲存部來累計預測歷程,並且此部分的儲存部可隨正在執行之OS例行程序的不同而不同。舉例來說,預測歷程132的儲存可利用路徑(way)來排列,如圖6所示;或者,預測歷程132的儲存可用群組(set)來排列,如圖7所示;或者,預測歷程132的儲存可排列成一項目的佇列,如圖8所示。前述的每個排列例子中,預測歷程132的儲存器內的路徑/群組/項目可分別控制,以累計預測歷程,並且關聯於一OS例行程序的控制資訊504的分數指明預測歷程132的儲存器中部分儲存部,以在執行相關之OS例行程序期間累計預測歷程132,此相關詳細敘述記載如下。較佳的是,控制資訊504指明微處理器100的每個預測單元109的儲存器中的一部分儲存部給預測歷程132使用。
在一實施例中,控制資訊表單500記載的資訊係在製造微處理器100之前已決定並且建構在例如為微處理器100的微指令中。此微指令係可由例如包含微處理器100的系統的BIOS利用一微指令補丁(patch)來進行現場升級。此外,在所述之系統運作期間,微處理器100的一裝置驅動器可下載所述的控制資訊表單500至微處理器100中。在一實施例中,所述的裝置驅動器偵測到一預設軟體應用程式的執行以及根據偵測結果下載控制資訊表單500至微處理器100。這將有助於利用較細的顆粒度(granularity)合適地修改控制資訊表單500所載的分數,進而使特定感興趣的軟體應用程式的效能達到理想化。
請參考圖6所示,圖 6係為根據本發明之一實施例所繪示之一預測歷程快取儲存區600的方塊圖。預測歷程快取儲存區600包含一快取記憶體,此快取記憶體配置擁有多個路徑602的一關聯型的快取儲存區(associative cache)。如圖6所示,預測歷程快取儲存區600包含八個路徑602。然而,在不同的其他實施例中,路徑的數量可以不同。路徑602係為用以保存預測歷程132的儲存區。在一示例中,預測歷程快取儲存區 600之眾多路徑602中的每一個項目可保存用以進行前述之分支預測 (例如分支目標快取資料)或資料預先擷取的預測歷程。有利的是,這些路徑602可獨立地控制,以累計預測歷程132。舉例來說,當偵測到正在執行由圖5的控制資訊表單500中其中一個OS 識別符502所辨識的一OS例行程序時,預測歷程快取儲存區 600會接收控制資訊504之關聯於正在執行之OS之例行程序的分數並只允許N個路徑 602可以被用來累計預測歷程132,其中N係為此分數的分子(numerator), 並且此分數的分母(denominator)係為在預測歷程快取儲存區 600中路徑602的總數量。舉例來說,在執行相關的OS例行程序期間,控制單元124可能只允許預測歷程快取儲存區600之總共八個路徑602中的其中兩個路徑602被用來累計預測歷程132。在一實施例中,這些獲准的路徑602(例如只有路徑4和5)會在此控制資訊504中被指明。雖然未繪示,但應可理解的是,除了上述之路徑602的排列方式以外,圖6的預測歷程快取儲存區 600也可被排列成可被一索引輸入索引的多個群組,如圖7之類似的排列方式將而詳述於下。
請參考圖7所示,圖 7係為根據本發明之另一實施例繪示一預測歷程快取儲存區700的方塊圖。預測歷程快取儲存區700包含一快取記憶體排列有一已編列的快取儲存區,此已編列的快取緩衝儲存區包含多個群組702,這些群組702係由一索引輸入704 (例如一指令的一記憶體位址或一載入/儲存位址)所指示,索引輸入704用以選擇其中一個群組702。在圖7中,預測歷程快取儲存區700包含8個群組702;然而,在其他不同的實施例中,預測歷程快取儲存區700可包含其他數量的群組。群組702係為用以保存預測歷程132的儲存區。在一示例中,預測歷程快取儲存區700之眾多群組702中的每一個項目可保存用以執行如前述之分支預測或資料預先擷取之預測歷程。有利的是,這些群組702係可獨立地控制,以累計預測歷程132。舉例來說,當偵測到正在執行圖5的控制資訊表單500中其中一個OS 識別符502所識別的一OS例行程序時,預測歷程快取儲存區700會接收控制資訊504之關聯於此正在執行之OS例行程序的分數並且只允許N個群組702被用來累計預測歷程132,其中N係為此分數的分子,而預測歷程快取儲存區 700中群組702的總數係為此分數的分母。舉例來說,在執行相關之OS例行程序的期間,控制單元124可只允許預測歷程快取儲存區700的總共8個群組702中的其中兩個群組702累計預測歷程132。在一實施例中,被允許的群組702(例如只有群組0和群組1)會在控制資訊504中被指明。舉例來說,控制單元124可控制預測歷程快取儲存區700將索引704的上面位元改為一預定值,以在執行此OS例行程序的期間限制實際用來累計預測歷程132的群組702。舉例來說,假設有64個群組702(一6位元的索引704),控制單元124可控制預測歷程快取儲存區700將索引704的上面7個位元改為0,使得預測歷程快取儲存區700只使用群組0和群組1去累計相關之OS例行程序的預測歷程。雖然未繪示,但應可理解的是,本發明除了上述群組702的排列方式以外,圖7的預測歷程快取儲存區700也可排列有如圖6所示之多個路徑。
請參考圖8所示,圖 8係為根據本發明之一實施例所繪示之一預測歷程佇列(queue)800的方塊圖。預測歷程佇列800(或簡稱為佇列)包含保存預測歷程132的儲存區。儲存區被排列成一佇列。佇列800的儲存區包含預測歷程佇列的多個項目 802,每一個項目 802有一相關之OS旗標804。這裡的OS旗標804表示此項目802是否關聯於一OS例行程序或關聯於一使用者例行程序。在一示例中,每一個預測歷程佇列的項目802可保存用來執行例如為前述之儲存衝突偵測等的記憶體歧異消除(memory disambiguation)的預測歷程。舉例來說,此項目802可保存一儲存位址、關於一儲存指令的來源且用以計算儲存指令的儲存位址的資訊、前次有發生儲存衝突之載入指令的IP值、因載入位址與位址尚未被產生的一舊的儲存指令相衝突導致接收到錯誤資料而需重新執行之一載入指令的一重排序緩衝器索引與一衝突的儲存指令間的差值、以及重排序緩衝器索引。這裡的重排序緩衝器索引例如為一儲存指令的索引,或一儲存指令為取得其儲存資料所需要之一指令的索引,也就是最近一次因載入指令的載入位址與一舊的儲存指令(其儲存資料在執行所述之載入指令期間無法使用)相衝突以致接收錯誤資料而需重新執行之一載入指令的索引。儲存類似資訊的預測歷程佇列800之實施態樣的詳細說明請參見引用西元2009年5月29日申請之編號為61/182,283的美國臨時申請案作為優先權之於西元2009年10月23日申請且編號為12/604,767的美國非臨時申請案,其等全部內容倂入此處作為參考。
在一實施例中,預測歷程佇列800 包含一計數器,此計數器持續追蹤關於一OS例行程序之有效項目802的數量,此OS例行程序係例如有其OS旗標804群組。當偵測到由圖5的控制資訊表單500中的其中一個OS 識別符502所識別的一OS例行程序正被執行時,預測歷程佇列800會接收控制資訊504之關於正在執行之OS例行程序的分數,並且只讓此OS例行程序佔用N個項目802,其中N係為此分數的分子,而預測歷程佇列800中之項目 802的總數量係為分數的分母。在一實施例中,預測歷程佇列800在推進新項目802時,會逐出OS例行程序之N個項目 802中最舊的項目 802。在一實施例中,預測歷程佇列800會維護最近最少使用的(least-recently-used,LRU)資訊,並在推進新項目802時,逐出OS例行程序的N個項目802中最近最少使用的項目802。在一實施例中,若在欲推進一OS例行程序的項目到預測歷程佇列800中並且此時之預測歷程佇列800未被佔滿,則預測歷程佇列800會讓此項目被推進而毋需逐出另一個OS的項目。換句話說,在這個實施例中,預測歷程佇列800暫時允許比N個更多之OS項目的出現。較佳的是,N的數字係可被動態安排。
請參考圖9所示,圖 9係為根據本發明之一實施例所繪示之產生圖 5的控制資訊表單500中數值之處理程序的流程圖。流程開始於方塊902。
如方塊902所示,不同的軟體應用程式 (例如熱門的或關鍵的軟體應用程式、標準檢查程式(benchmark)等)被描繪來識別被所述之軟體應用程式呼叫的不同的作業系統程序。這些軟體應用程式可被描繪在不同的作業系統,例如Microsoft ® Windows ®作業系統、Linux ®作業系統、Apple Mac OS X ®作業系統與Google® Android ™作業系統等上。每一個作業系統擁有自己的一組可供所述軟體應用程式呼叫的OS例行程序。流程進行到方塊904。
如方塊904所示,針對在方塊902中被識別的每一個OS例行程序,計數每一次OS例行程序被呼叫時所執行之指令的數量。接著,針對OS例行程序,計算已執行的指令的總數量,並且將此總數量除以此OS例行程序被呼叫的次數,藉此獲得已執行之指令的平均數量。在一實施例中,指令的平均數量和總數量可以在每個應用程式基礎上和每個作業系統基礎上計算獲得。在另一實施例中,計算微處理器100花費在OS例行程序上的時脈週期的平均數量和總數量,而不是計算被執行之指令的數量。流程進行到方塊906。
如方塊906所示,在方塊902中被識別的每一個OS例行程序可被歸類為下列三種類型(category)的其中一種類型。第一種類型是指執行指令數量相對少的OS例行程序。第二種類型是指執行指令數量中等的OS例行程序。第三種類型是指執行指令數量相對多的OS例行程序。直觀而言,第一種類型的 OS例行程序不太可能顯著地改變關聯於所述用以呼叫OS例行程序之用戶代碼(user code,亦即軟體應用程式的指令)的預測歷程132,所以此類型的OS例行程序會降低用戶代碼之指令的預測的準確性進而負面地影響用戶代碼的效能。相反地,第三種類型的OS例行程序可能會顯著地獲利於根據預測歷程的累計而獲得之其指令的預測。或者,第三種類型的OS例行程序可能會顯著地負面地影響具有用以呼叫此OS例行程序的用戶代碼的軟體應用程式的效能,其原因在於此軟體應用程式的效能是至少部分取決於此軟體應用程式所呼叫之OS例行程序的效能,並且若執行大量指令的OS例行程序沒有因根據其預測歷程來對其指令進行預測所獲得的優勢,則此OS例行程序很可能會進行得很慢。最後,第二種類型的OS例行程序很可能會改變用戶代碼的預測歷程到足以負面影響其效能的程度;然而,不確定提高OS例行程序的效能是否可補償所述的負面影響。或者,僅利用預測單元109中一部分的儲存器來累計第二種類型的OS例行程序的預測歷程可能會改善軟體應用程式的整體效能。較佳的是,藉由分析被執行的指令的平均數量和總數量來執行上述的分類工作。這是因為即使一OS例行程序的指令長度是相對地短(亦即若單看其指令的平均數量時,此OS例行程序可能屬於所述的第一種類型),但若此OS例行程序被相對頻繁地呼叫時,因為OS例行程序能快速進行是相當重要的(亦即由累計預測歷程獲得的好處),所以就需要透過方塊908來分析此OS例行程序。然而,OS例行程序的長度可能很短以致於無法顯著地從預測歷程的累計中獲得好處。有利的是,藉由選擇歸類為第二種類型之一子集合的OS例行程序,則必須在方塊908中執行的效能分析的量可能會大幅地減少。流程進行到方塊908。
如方塊908所示,這些軟體應用程式的效能分析是藉由改變用來累計每一個在方塊906中被歸類為第二種類型的OS例行程序的預測歷程的每一預測單元109內預測歷程儲存器(例如圖6的預測歷程快取儲存區600、圖7的預測歷程快取儲存區700和圖8的佇列800)的分數來完成,以決定最理想之分數的數值。換句話說,圖5的控制資訊表單500中被載入相關之OS例行程序的OS例行程序識別符 502,以及在控制資訊504中不同排列的數值被嘗試用來決定哪些組合可以使個別的軟體應用程式以及整個橫跨一給定的作業系統之軟體應用程式產生最佳效能。由於所述分數之數值的效能最優化組合會被保持,因此這些數值可被載入圖5的控制資訊表單500中給微處理器100使用。這些效能最優化的數值可做在微處理器100中及/或也可由一裝置驅動器下載至微處理器100中,如下面圖10和11所述。
請參考圖10所示,圖10係為根據本發明之一實施例所繪示之包含圖1之微處理器100的系統的運作流程圖。流程開始於方塊1002。
如方塊1002所示,將已根據例如圖9所示的方式執行OS例行程序分析的一作業系統(這裡稱為OS Y)載入包含微處理器100的一系統中。流程進行到方塊1004。
如方塊1004所示,在方塊1002中載入的作業系統會開始呼叫其裝置驅動器的初始化例行程序,並且會呼叫微處理器100的一裝置驅動器的初始化例行程序。微處理器100之裝置驅動器的初始化例行程序會下載在圖9的方塊908中決定的數值至微處理器100,以改變圖5的控制資訊表單500,因此在執行被選擇的OS例行程序時,使用預測歷程132的部分儲存器來累計預測歷程可能會對在微處理器100上進行的軟體應用程式有益,並且可有望實現更高的效能。在一實施例中,裝置驅動器藉由執行給一MSR的x86 WRMSR指令,或者藉由其他指令集架構的一相似的特殊型號暫存器寫入指令來下載所述的數值,所述的MSR係關聯於所述預測歷程之分數使用的特徵。流程結束於方塊1004。
請參考圖11所示,圖11係為根據本發明之另一實施例繪示之包含圖1之微處理器100的系統的運作流程圖。流程開始於方塊1102。
如方塊1102所示,微處理器100的一裝置驅動器偵測到所述作業系統已經預定一軟體應用程式(以下稱為軟體應用程式X)執行在包含微處理器100的一系統上。此作業系統的例行程序已經由例如圖9的方式進行分析。流程進行到方塊1104。
如方塊1104所示,裝置驅動器分別下載在圖9之方塊908中決定的數值至微處理器100,以改變圖5的控制資訊表單500。如此一來,在執行已選擇的OS例行程序時,分數使用預測歷程132的儲存器來累計預測歷程可為執行在微處理器100上的軟體應用程式帶來好處,並且也可有望實現更高的效能。流程結束於方塊1104。
雖然本發明以前述之實施例揭露如上,然其並非用以限定本發明。在不脫離本發明之精神和範圍內,具有相關電腦領域之技藝者所為之更動與潤飾,均屬本發明之專利保護範圍。舉例來說,可使用軟體來實現本發明所述之裝置與方法的功能、構造、模組化、模擬、描述及/或測試。此目的可透過使用一般程式語言(例如C、C++)、硬體描述語言(包括Verilog或VHDL硬體描述語言等)、或其他可用的程式來實現。此軟體可被設置在任何電腦可用的媒體,例如磁帶、半導體、磁碟、光碟(例如CD-ROM、DVD-ROM等)中,或者設置於網路通訊媒體、有線通訊媒體、無線通訊媒體或其他通訊媒體中。本發明實施例中所述之裝置與方法可被包括在一半導體智慧財產權核心(semiconductor intellectual property core),例如以硬體描述語言(HDL)實現之微處理器核心中,並被轉換為硬體型態的積體電路產品。此外,本發明所描述之裝置與方法可透過結合硬體與軟體的方式來實現。因此,本發明不應該被本文中之任一實施例所限定,而當視後附之申請專利範圍與其等效物所界定者為準。特別是,本發明係實現於一般用途電腦之微處理器裝置中。最後,任何熟悉此項技藝者,可基於本發明所揭露的概念以及特定實施例,在不脫離本發明之精神和範圍內,可做些許更動與潤飾以達到本發明之相同目的。
關於本發明所界定之保護範圍請參考所附之申請專利範圍。
100‧‧‧微處理器
102‧‧‧分支預測單元
104‧‧‧資料預先擷取單元
106‧‧‧儲存衝突預測單元
108‧‧‧儲存器
109‧‧‧預測單元
111‧‧‧目前特權等級暫存器
112‧‧‧優化資訊
113‧‧‧引退指令計數器
114‧‧‧效能計數器
124‧‧‧控制單元
132A~132C‧‧‧預測歷程
500‧‧‧控制資訊表單
502‧‧‧作業系統例行程序的識別符
504‧‧‧控制資訊
600‧‧‧預測歷程快取儲存區
602‧‧‧路徑
700‧‧‧預測歷程快取儲存區
702‧‧‧群組
704‧‧‧索引輸入
800‧‧‧預測歷程佇列
802‧‧‧項目
804‧‧‧作業系統旗標
102‧‧‧分支預測單元
104‧‧‧資料預先擷取單元
106‧‧‧儲存衝突預測單元
108‧‧‧儲存器
109‧‧‧預測單元
111‧‧‧目前特權等級暫存器
112‧‧‧優化資訊
113‧‧‧引退指令計數器
114‧‧‧效能計數器
124‧‧‧控制單元
132A~132C‧‧‧預測歷程
500‧‧‧控制資訊表單
502‧‧‧作業系統例行程序的識別符
504‧‧‧控制資訊
600‧‧‧預測歷程快取儲存區
602‧‧‧路徑
700‧‧‧預測歷程快取儲存區
702‧‧‧群組
704‧‧‧索引輸入
800‧‧‧預測歷程佇列
802‧‧‧項目
804‧‧‧作業系統旗標
圖1係為根據本發明之一實施例所繪示之微處理器的方塊圖。 圖 2係為根據本發明之一實施例所繪示之圖1中微處理器的運作流程圖。 圖 3係為根據本發明之另一實施例繪示之圖1中微處理器的運作流程圖。 圖 4係為根據本發明之另一實施例繪示之圖1中微處理器的運作流程圖。 圖 5係為根據本發明之一實施例所繪示之一控制資訊表單的示意圖。 圖 6係為根據本發明之一實施例所繪示之一預測歷程快取儲存區的方塊圖。 圖 7係為根據本發明之另一實施例繪示一預測歷程快取儲存區的方塊圖。 圖 8係為根據本發明之一實施例所繪示之一預測歷程佇列的方塊圖。 圖 9係為根據本發明之一實施例所繪示之產生圖 5的控制資訊表單中數值之處理程序的流程圖。 圖10係為根據本發明之一實施例所繪示之包含圖1之微處理器的系統的運作流程圖。 圖11係為根據本發明之另一實施例繪示之包含圖1之微處理器的系統的運作流程圖。
100‧‧‧微處理器
102‧‧‧分支預測單元
104‧‧‧資料預先擷取單元
106‧‧‧儲存衝突預測單元
108‧‧‧預測歷程儲存器
109‧‧‧預測單元
111‧‧‧目前特權等級暫存器
112‧‧‧優化資訊
113‧‧‧引退指令計數器
114‧‧‧效能計數器
124‧‧‧控制單元
132A~132C‧‧‧預測歷程
Claims (20)
- 一種微處理器,包含:一預測單元,具有一儲存器,該儲存器用以保存該微處理器先前執行的指令的特徵的一預測歷程,該預測單元用以累計該預測歷程並根據該預測歷程提供關聯於後續指令執行的預測,該儲存器包含多個儲存部,該些儲存部係單獨控制來累計該預測歷程;以及一控制單元,用以偵測該微處理器執行一作業系統程序,在該微處理器執行該作業系統程序期間,該控制單元使該預測單元僅使用該儲存器中部份的該些儲存部累計該預測歷程。
- 如請求項1所述之微處理器,其中該儲存器包含具有多個路徑(Way)的一關聯式的快取記憶體;在該微處理器執行該作業系統程序期間,該部分的儲存部指定被該控制單元控制之該預測單元所使用之該儲存器中用以累計該預測歷程之部份的該些路徑。
- 如請求項1所述之微處理器,其中該儲存器包含一索引式的快取記憶體,該快取記憶體具有多個群組;在該微處理器執行該作業系統程序期間,該部分的儲存部指定被該控制單元控制的該預測單元所使用之該儲存器中用以累計該預測歷程之部份的該些群組。
- 如請求項1所述之微處理器,其中該儲存器包含具有多個項目的一佇列;在該微處理器執行該作業系統程序期間,該部分的儲存部指定被該控制單元控制之該預測單元所使用的該儲存器中用以累計該預測歷程之部份的該些多個項目。
- 如請求項1所述之微處理器,更包含:一表單,該表單包含多個識別符,每一該識別符用以識別一各別的作業系統程序,每一該各別的作業系統程序具有一關聯式的控制資訊;在該微處理器執行該作業系統程序期間,該控制資訊指明被該控制單元控制的該預測單元所使用之該儲存器中用以累計該預測歷程之該部分的儲存部。
- 如請求項5所述之微處理器,其中該些識別符和該些控制資訊係根據偵測載入一預設作業系統的結果,由一裝置驅動器提供給該微處理器。
- 如請求項5所述之微處理器,其中該些識別符和該些控制資訊係根據偵測執行一預設軟體應用程式的結果,由一裝置驅動器提供給該微處理器。
- 如請求項1所述之微處理器,其中該預測單元包含一儲存衝突預測單元。
- 如請求項1所述之微處理器,其中該預測單元包含一分支預測單元。
- 如請求項1所述之微處理器,其中該預測單元包含一資料預先擷取單元。
- 一種微處理器的運作方法,適用於一微處理器,該微處理器具有一預測單元,該預測單元包含一儲存器,該儲存器用以保存先前被該微處理器執行過之指令的特徵的一預測歷程,該預測單元用以累計該預測歷程並根據該預測歷程產生關聯於後續指令執行的預測,該儲存器包含多個儲存部,該些儲存部係獨立控制以累計該預測歷程,該運作方法包含:偵測該微處理器執行一作業系統例行程序;以及在該微處理器執行該作業系統程序期間,使該預測單元僅使用該儲存器中部份的該些儲存部,以累計該預測歷程。
- 如請求項11 所述之運作方法,其中該儲存器包含一關聯式的快取記憶體,該快取記憶體包含多個路徑;以及在該微處理器執行該作業系統程序期間,該部分的儲存部指定被該預測單元使用之該儲存器中用以累計該預測歷程之部份之該些路徑。
- 如請求項11 所述之運作方法,其中該儲存器包含一索引式的快取記憶體,該快取記憶體包含多個群組;以及在該微處理器執行該作業系統程序期間,該部分的儲存部指定被該預測單元使用之該儲存器中用以累計該預測歷程之部份的該些群組。
- 如請求項11 所述之運作方法,其中該儲存器包含一佇列,該佇列包含多個項目;以及在該微處理器執行該作業系統程序期間,該部分的儲存部指定被該預測單元所使用之該儲存器中用以累計該預測歷程之部份的該些項目。
- 如請求項11 所述之運作方法,更包含:接收多個識別符,每一該識別符用以識別一各別的作業系統程序,每一該作業系統程序具有一控制資訊,在該微處理器執行該作業系統程序期間,該控制資訊指示被該控制單元控制之該預測單元所使用的該儲存器中用以累計該預測歷程之該部分的儲存部。
- 如請求項15 所述之運作方法,其中該些識別符和該些控制資訊係根據偵測載入一預設作業系統的結果,由一裝置驅動器提供給該微處理器。
- 如請求項15 所述之運作方法,其中該些識別符和該些控制資訊係根據偵測執行一預設軟體應用程式的結果,由一裝置驅動器提供給該微處理器。
- 一種用以改善微處理器效能的方法,適用於一微處理器,該微處理器包含一預測單元,該預測單元包含一儲存器,該儲存器用以累計先前被執行過之指令的一預測歷程,該預測單元利用該預測歷程來預測後續指令的執行,並且係可動態控制地僅使用部分該儲存器來累計該預測歷程,該方法包含:識別被多個軟體應用程式呼叫的多個作業系統程序;分別計數被每一該作業系統程序執行之指令的一數量;根據每一該被執行之指令的數量,從該些作業系統程序中選擇一子集合;以及針對該子集合調整該儲存器的一分數值,以決定使該些軟體應用程式達到最佳化效能所需之該分數值,藉此實現效能分析。
- 如請求項18 所述之方法,其中由該些作業系統程序中選擇該子集合的該步驟包含:相較於除了該子集合以外的其他該些作業系統程序而言,將該些作業系統程序中相對數量落入一中等數量範圍的作業系統例行程序加入該子集合中。
- 如請求項18 所述之方法,其中分別計數被每一該作業系統程序執行之指令的數量的該步驟包含分別計數被每一該作業系統程序執行之指令的一平均數和一總數。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462069602P | 2014-10-28 | 2014-10-28 | |
US14/605,943 US9891918B2 (en) | 2014-01-27 | 2015-01-26 | Fractional use of prediction history storage for operating system routines |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201626216A TW201626216A (zh) | 2016-07-16 |
TWI569207B true TWI569207B (zh) | 2017-02-01 |
Family
ID=56985135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104135375A TWI569207B (zh) | 2014-10-28 | 2015-10-28 | 微處理器、微處理器的運作方法、及改善微處理器效能的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI569207B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005114441A2 (en) * | 2004-05-19 | 2005-12-01 | Arc International (Uk) Limited | Microprocessor architecture |
US7861066B2 (en) * | 2007-07-20 | 2010-12-28 | Advanced Micro Devices, Inc. | Mechanism for predicting and suppressing instruction replay in a processor |
TW201241747A (en) * | 2011-04-07 | 2012-10-16 | Via Tech Inc | Efficient conditional ALU instruction in read-port limited register file microprocessor |
TW201428620A (zh) * | 2012-06-15 | 2014-07-16 | Soft Machines Inc | 實現從載入儲存重新排序與最佳化所導致的推測性轉送錯失預測/錯誤當中復原之方法及系統 |
-
2015
- 2015-10-28 TW TW104135375A patent/TWI569207B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005114441A2 (en) * | 2004-05-19 | 2005-12-01 | Arc International (Uk) Limited | Microprocessor architecture |
US7861066B2 (en) * | 2007-07-20 | 2010-12-28 | Advanced Micro Devices, Inc. | Mechanism for predicting and suppressing instruction replay in a processor |
TW201241747A (en) * | 2011-04-07 | 2012-10-16 | Via Tech Inc | Efficient conditional ALU instruction in read-port limited register file microprocessor |
TW201428620A (zh) * | 2012-06-15 | 2014-07-16 | Soft Machines Inc | 實現從載入儲存重新排序與最佳化所導致的推測性轉送錯失預測/錯誤當中復原之方法及系統 |
Also Published As
Publication number | Publication date |
---|---|
TW201626216A (zh) | 2016-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2813943B1 (en) | Predicting unit in a multithreaded processor | |
US9378020B2 (en) | Asynchronous lookahead hierarchical branch prediction | |
US11416253B2 (en) | Multiple-table branch target buffer | |
US7711935B2 (en) | Universal branch identifier for invalidation of speculative instructions | |
US9891918B2 (en) | Fractional use of prediction history storage for operating system routines | |
JP2014002735A (ja) | ゼロサイクルロード | |
US9952871B2 (en) | Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry | |
US20180173535A1 (en) | Determining a predicted behaviour for processing of instructions | |
JP6259518B2 (ja) | オペレーティング・システム・ルーチンのための予測履歴ストレージのフラクショナルな使用 | |
CN110402434B (zh) | 缓存未命中线程平衡 | |
JP2022509171A (ja) | ループ終了予測器 | |
EP4020167A1 (en) | Accessing a branch target buffer based on branch instruction information | |
CN102163139A (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
TWI569207B (zh) | 微處理器、微處理器的運作方法、及改善微處理器效能的方法 | |
US20220197657A1 (en) | Segmented branch target buffer based on branch instruction type | |
KR20220062559A (ko) | 업스트림 리소스를 관리하는 동안의 스로틀링 | |
US20220075624A1 (en) | Alternate path for branch prediction redirect |