操作系統(tǒng)例行程序的預(yù)測(cè)歷程儲(chǔ)存器的部分使用
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種微處理器,特別設(shè)及一種微處理器、微處理器的運(yùn)作方法及改善 微處理器性能的方法。
【背景技術(shù)】
[0002] 現(xiàn)今的微處理器采用不同的預(yù)測(cè)技術(shù)來(lái)試圖改善其性能。舉例來(lái)說(shuō),分支預(yù)測(cè)器 被用來(lái)預(yù)測(cè)分支指令是否將被使用,W及當(dāng)預(yù)測(cè)到分支指令將會(huì)被使用時(shí),進(jìn)一步預(yù)測(cè)此 分支指令的目標(biāo)地址。動(dòng)態(tài)分支預(yù)測(cè)器會(huì)累計(jì)用W記載執(zhí)行不同的分支指令的結(jié)果的歷程 并且會(huì)根據(jù)運(yùn)些歷程產(chǎn)生針對(duì)每一分支指令的預(yù)測(cè)。動(dòng)態(tài)分支預(yù)測(cè)器的預(yù)測(cè)準(zhǔn)確性主要在 于歷程可累計(jì)的量的函數(shù)。只要一程序在給定的時(shí)間內(nèi)所執(zhí)行的分支指令組的長(zhǎng)度小到足 W被涵蓋在預(yù)測(cè)歷程中,則獲得的預(yù)測(cè)準(zhǔn)確性可能會(huì)相當(dāng)高。
[0003] 然而,預(yù)測(cè)準(zhǔn)確性可能會(huì)因某些事件(例如發(fā)生在另一程序執(zhí)行的同時(shí)暫緩目前 正在執(zhí)行的程序的事件等)的發(fā)生而大幅縮減。舉例來(lái)說(shuō),當(dāng)一網(wǎng)絡(luò)接口控制器(network interhce con化oiler)接收到一封包(packet)時(shí),網(wǎng)絡(luò)接口控制器會(huì)發(fā)出訊號(hào)通知處理 器進(jìn)行中斷。此時(shí)處理器會(huì)轉(zhuǎn)而控制操作系統(tǒng)去執(zhí)行此中斷事件,而操作系統(tǒng)則會(huì)暫緩目 前正在執(zhí)行的程序A直到返回執(zhí)行此程序A為止。在處理器執(zhí)行操作系統(tǒng)的分支指令的期 間,會(huì)改變分支預(yù)測(cè)器針對(duì)程序A所產(chǎn)生的預(yù)測(cè)歷程。運(yùn)樣可能會(huì)降低分支預(yù)測(cè)器在預(yù)測(cè)程 序A的跳轉(zhuǎn)(branch)時(shí)的準(zhǔn)確性。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種微處理器、微處理器的運(yùn)作方法及改善微處理器性能的方法,借 W僅使用儲(chǔ)存器中的一部分儲(chǔ)存部來(lái)累計(jì)預(yù)測(cè)歷程,進(jìn)而提升分支預(yù)測(cè)的準(zhǔn)確性。
[0005] -方面,本發(fā)明提供一微處理器。微處理器包含一預(yù)測(cè)單元和一控制單元。預(yù)測(cè)單 元包含用W保存一預(yù)測(cè)歷程的一儲(chǔ)存器,此預(yù)測(cè)歷程記載微處理器先前執(zhí)行的指令的特 征。預(yù)測(cè)單元累計(jì)預(yù)測(cè)歷程,并根據(jù)此預(yù)測(cè)歷程產(chǎn)生關(guān)于后續(xù)指令執(zhí)行的預(yù)測(cè)。儲(chǔ)存器包含 用W累計(jì)此預(yù)測(cè)歷程且分別受控的多個(gè)儲(chǔ)存部。控制單元用W偵測(cè)微處理器執(zhí)行一操作系 統(tǒng)程序,并用W在微處理器執(zhí)行所述的操作系統(tǒng)程序期間控制預(yù)測(cè)單元僅使用儲(chǔ)存器中部 分的儲(chǔ)存部,W累計(jì)此預(yù)測(cè)歷程。
[0006] 另一方面,本發(fā)明提供一微處理器的運(yùn)作方法。此微處理器包含一預(yù)測(cè)單元,并且 此預(yù)測(cè)單元包含用W保存一預(yù)測(cè)歷程的一儲(chǔ)存器。所述的預(yù)測(cè)歷程記載微處理器先前執(zhí)行 過(guò)的指令的特征。預(yù)測(cè)單元用W累計(jì)此預(yù)測(cè)歷程并根據(jù)此預(yù)測(cè)歷程產(chǎn)生關(guān)于后續(xù)指令執(zhí)行 的多個(gè)預(yù)測(cè)。儲(chǔ)存器包含用W累計(jì)此預(yù)測(cè)歷程并可分別控制的多個(gè)儲(chǔ)存部。此運(yùn)作方法包 含下列步驟。偵測(cè)微處理器執(zhí)行一操作系統(tǒng)程序。在微處理器執(zhí)行所述的操作系統(tǒng)程序期 間,控制預(yù)測(cè)單元僅使用所述儲(chǔ)存器中部分的儲(chǔ)存部,W累計(jì)此預(yù)測(cè)歷程。
[0007] 又一方面,本發(fā)明提供一改善微處理器性能的方法,此方法適用于一微處理器。所 述微處理器包含一預(yù)測(cè)單元,預(yù)測(cè)單元包含用W累計(jì)先前被執(zhí)行過(guò)的指令的預(yù)測(cè)歷程的一 儲(chǔ)存器。預(yù)測(cè)單元利用預(yù)測(cè)歷程來(lái)預(yù)測(cè)后續(xù)指令的執(zhí)行,并且是可動(dòng)態(tài)控制地僅使用部分 的儲(chǔ)存器來(lái)累計(jì)預(yù)測(cè)歷程。此方法包含下列步驟。識(shí)別被多個(gè)軟件應(yīng)用程序呼叫的多個(gè)操 作系統(tǒng)程序。分別計(jì)數(shù)被每一個(gè)操作系統(tǒng)程序執(zhí)行的指令的一數(shù)量。此方法也包含根據(jù)每 一被執(zhí)行的指令的數(shù)量,從操作系統(tǒng)程序中選擇一子集合;W及針對(duì)此子集合調(diào)整儲(chǔ)存器 的分?jǐn)?shù)值,W決定使運(yùn)些軟件應(yīng)用程序達(dá)到優(yōu)化性能所需的分?jǐn)?shù)值,借此實(shí)現(xiàn)性能分析。
[0008] W上的關(guān)于本掲露內(nèi)容的說(shuō)明及W下的實(shí)施方式的說(shuō)明是用W示范與解釋本發(fā) 明的精神與原理,并且提供本發(fā)明的專(zhuān)利申請(qǐng)范圍更進(jìn)一步的解釋。
【附圖說(shuō)明】
[0009] 圖1為根據(jù)本發(fā)明的一實(shí)施例所繪示的微處理器的方塊圖;
[0010] 圖2為根據(jù)本發(fā)明的一實(shí)施例所繪示的圖1中微處理器的運(yùn)作流程圖;
[0011] 圖3為根據(jù)本發(fā)明的另一實(shí)施例繪示的圖1中微處理器的運(yùn)作流程圖;
[0012] 圖4為根據(jù)本發(fā)明的另一實(shí)施例繪示的圖1中微處理器的運(yùn)作流程圖;
[0013] 圖5為根據(jù)本發(fā)明的一實(shí)施例所繪示的一控制信息表單的示意圖;
[0014] 圖6為根據(jù)本發(fā)明的一實(shí)施例所繪示的一預(yù)測(cè)歷程高速緩存的方塊圖;
[0015] 圖7為根據(jù)本發(fā)明的另一實(shí)施例繪示一預(yù)測(cè)歷程高速緩存的方塊圖;
[0016] 圖8為根據(jù)本發(fā)明的一實(shí)施例所繪示的一預(yù)測(cè)歷程隊(duì)列的方塊圖;
[0017] 圖9為根據(jù)本發(fā)明的一實(shí)施例所繪示的產(chǎn)生圖5的控制信息表單中數(shù)值的處理程 序的流程圖;
[0018] 圖10為根據(jù)本發(fā)明的一實(shí)施例所繪示的包含圖1的微處理器的系統(tǒng)的運(yùn)作流程 圖;
[0019] 圖11為根據(jù)本發(fā)明的另一實(shí)施例繪示的包含圖1的微處理器的系統(tǒng)的運(yùn)作流程 圖。
[0020] 附圖標(biāo)記:
[0021] 100:微處理器; 102:分支預(yù)測(cè)單元;
[0022] 104:數(shù)據(jù)預(yù)先揃取單元;106:儲(chǔ)存沖突預(yù)測(cè)單元;
[0023] 108:儲(chǔ)存器; 109:預(yù)測(cè)單元;
[0024] 111:目前特權(quán)等級(jí)緩存器;112:優(yōu)化信息;
[002引113:引退指令計(jì)數(shù)器; 114:性能計(jì)數(shù)器;
[00%] 124:控制單元; 1324~132。預(yù)測(cè)歷程;
[0027] 500:控制信息表單; 502:操作系統(tǒng)例行程序的識(shí)別符;
[00%] 504:控制信息; 600:預(yù)測(cè)歷程高速緩存;
[0029] 602:路徑; 700:預(yù)測(cè)歷程高速緩存;
[0030] 702:群組; 704:索引輸入;
[0031] 800:預(yù)測(cè)歷程隊(duì)列; 802:項(xiàng)目;
[0032] 804:操作系統(tǒng)旗標(biāo)。
【具體實(shí)施方式】
[0033] W下說(shuō)明是為完成發(fā)明的較佳實(shí)現(xiàn)方式,其目的在于描述本發(fā)明的基本精神,但 并不用W限定本發(fā)明。實(shí)際的
【發(fā)明內(nèi)容】
必須參考之后的權(quán)利要求范圍。
[0034] 必須了解的是,使用于本說(shuō)明書(shū)中的"包含"、"包括"等詞,是用W表示存在特定的 技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件W和/或組件,但并不排除可加上更多的技術(shù)特 征、數(shù)值、方法步驟、作業(yè)處理、組件、組件,或W上的任意組合。
[0035] W下在實(shí)施方式中詳細(xì)敘述本發(fā)明的詳細(xì)特征W及優(yōu)點(diǎn),其內(nèi)容足W使任何本領(lǐng) 域技術(shù)人員了解本發(fā)明的技術(shù)內(nèi)容并據(jù)W實(shí)施,且根據(jù)本說(shuō)明書(shū)所掲露的內(nèi)容、申請(qǐng)專(zhuān)利 范圍及圖式,任何本領(lǐng)域技術(shù)人員可輕易地理解本發(fā)明相關(guān)的目的及優(yōu)點(diǎn)。W下的實(shí)施例 是進(jìn)一步詳細(xì)說(shuō)明本發(fā)明的觀點(diǎn),但非W任何觀點(diǎn)限制本發(fā)明的范疇。
[0036] 本發(fā)明所提供的用W改善微處理器性能的相關(guān)實(shí)施例是通過(guò)預(yù)測(cè)單元(例如分支 預(yù)測(cè)器、數(shù)據(jù)預(yù)取器和儲(chǔ)存沖突(store collision)偵測(cè)預(yù)測(cè)器)利用預(yù)測(cè)歷程選擇性地暫 緩(suspend)預(yù)測(cè)歷程與預(yù)測(cè)的累計(jì),并在動(dòng)態(tài)預(yù)測(cè)中斷時(shí)使用靜態(tài)預(yù)測(cè)。進(jìn)一步來(lái)說(shuō),當(dāng) 微處理器正執(zhí)行某些線程(thread)而非其他運(yùn)作時(shí),預(yù)測(cè)歷程的累計(jì)與使用可能會(huì)被暫 緩。舉例來(lái)說(shuō),所述的暫緩與否是取決于線程的特權(quán)等級(jí)。進(jìn)一步來(lái)說(shuō),線程是否為位于一 監(jiān)督者特權(quán)等級(jí)(supervisor privilege level),例如在x86處理器架構(gòu)中的目前特權(quán)等 級(jí)(current privilege level,CPL)0,也可稱(chēng)為第0級(jí)。在另一示例中,所述的暫緩與否是 取決于線程的型態(tài)(Type),例如取決于線程是否為一中斷處理器(interrupt handler)。在 另一示例中,所述的暫緩與否是取決于是否因應(yīng)一系統(tǒng)呼叫指令(system call instruction)而跳到新的線程。在另一示例中,微處理器會(huì)收集關(guān)于先前線程的執(zhí)行情況 的信息,而所述的暫緩與否可取決于微處理器所收集到的信息,例如指令長(zhǎng)度(length)和 性能信息。在另一示例中,所述的暫緩與否是取決于線程的身份。線程的身份可根據(jù)例如由 導(dǎo)致躍遷(transition)的事件的型態(tài)、此事件發(fā)生當(dāng)時(shí)的處理器的結(jié)構(gòu)狀態(tài)W及其組合來(lái) 決定。事件的型態(tài)例如可包含執(zhí)行一系統(tǒng)呼叫、執(zhí)行一軟件中斷指令、執(zhí)行一內(nèi)部特權(quán) (inter-privilege)或工作切換(task switch)過(guò)程調(diào)用W及偵測(cè)異常情況(exception condition)。再者,在中斷預(yù)測(cè)歷程的累計(jì)與使用的期間,微處理器可儲(chǔ)存和恢復(fù)運(yùn)些預(yù)測(cè) 歷程至一局部?jī)?chǔ)存器(local storage)。
[0037] 詞匯說(shuō)明
[0038] 預(yù)測(cè)單元可為微處理器的硬件、軟件或其組合,并可產(chǎn)生關(guān)于在微處理器上進(jìn)行 的一指令流所對(duì)應(yīng)的動(dòng)作的預(yù)測(cè)。所述的預(yù)測(cè)可例如但不限于包含預(yù)測(cè)一分支指令是否將 指示微處理器跳轉(zhuǎn)(branch)、預(yù)測(cè)一分支指令的一目標(biāo)地址、預(yù)測(cè)指令流的其中一個(gè)指令 將要存取的數(shù)據(jù)、W及預(yù)測(cè)一儲(chǔ)存沖突是否發(fā)生。預(yù)測(cè)單元可根據(jù)記載有被微處理器執(zhí)行 的指令的特征的一歷程(或稱(chēng)預(yù)測(cè)歷程),產(chǎn)生相對(duì)應(yīng)的預(yù)測(cè),而此時(shí)的預(yù)測(cè)稱(chēng)為動(dòng)態(tài)預(yù)測(cè)。 當(dāng)微處理器執(zhí)行指令流中的每個(gè)指令的同時(shí),預(yù)測(cè)單元也會(huì)累計(jì)此歷程。此歷程可例如包 含但不限于分支指令是否指示微處理器跳轉(zhuǎn)的結(jié)果、一已執(zhí)行的分支指令的目標(biāo)地址、指 令流中的每個(gè)指令所加載或儲(chǔ)存的數(shù)據(jù)的地址、關(guān)于指明可高速緩存位置的儲(chǔ)存指令的信 息(例如儲(chǔ)存指令的地址、用W計(jì)算儲(chǔ)存地址的來(lái)源(source)的識(shí)別符、用W決定儲(chǔ)存數(shù)據(jù) 的指令的一重排序緩沖器索引(reorder buffer index)、之前與儲(chǔ)存指令發(fā)生沖突的一加 載指令的地址和重排序緩沖器索引、沖突的加載和儲(chǔ)存指令之間的一重排序緩沖器索引差 值W及一沖突的加載指令的重新執(zhí)行次數(shù)的一指示器(indicator))。預(yù)測(cè)單元也可W不用 根據(jù)此歷程來(lái)產(chǎn)生預(yù)測(cè),而此時(shí)的預(yù)測(cè)稱(chēng)作靜態(tài)預(yù)測(cè)。
[0039] 微處理器的特權(quán)等級(jí)是由微處理器的指令集架構(gòu)(instruction set architecture)所定義,并且特權(quán)等級(jí)是用W控制當(dāng)前正在執(zhí)行的程序?qū)鐑?chǔ)存區(qū)域 (memory region)、輸入輸出端口(I/O port) W及指令集中的特定指令等的系統(tǒng)資源的存 取動(dòng)作。
[0040] 線程是由微處理器執(zhí)行的包含多個(gè)指令的一指令序列。
[0041] 處理程序(process)是指一線程和其相關(guān)狀態(tài),此狀態(tài)連同其他處理程序是由一 操作系統(tǒng)管理。此操作系統(tǒng)會(huì)分配一處理程序識(shí)別符(process identifier)給此處理程 序。
[0042] 請(qǐng)參考圖1所示,圖1為根據(jù)本發(fā)明的一實(shí)施例所繪示的微處理器100的方塊圖。微 處理器100包含多個(gè)預(yù)測(cè)單元109。運(yùn)些預(yù)測(cè)單元109禪接于一控制單元124和一預(yù)測(cè)歷程儲(chǔ) 存器1〇8(或稱(chēng)儲(chǔ)存器)??刂茊卧?24分別禪接于一引退指令計(jì)數(shù)器