欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

微處理器以及微處理器操作方法

文檔序號(hào):6636846閱讀:162來源:國(guó)知局
微處理器以及微處理器操作方法
【專利摘要】一種微處理器以及微處理器操作方法。該微處理器包括一預(yù)測(cè)單元以及一控制單元??刂茊卧靡钥刂祁A(yù)測(cè)單元累計(jì)已執(zhí)行的指令的特性的歷史記錄??刂茊卧€檢測(cè)自運(yùn)行第一線程至運(yùn)行第二線程之間的第一轉(zhuǎn)變,以及檢測(cè)第二線程的識(shí)別碼是否存在??刂祁A(yù)測(cè)單元于運(yùn)行第二線程,且第二線程的識(shí)別碼不存在時(shí),選擇性地暫停累計(jì)歷史記錄并利用歷史記錄進(jìn)行預(yù)測(cè)。控制單元用以搜集有關(guān)第二線程的信息,以及檢測(cè)從運(yùn)行第二線程至運(yùn)行第三線程的第二轉(zhuǎn)變??刂茊卧靡缘卿洸⒏滤鸭呐c第二線程有關(guān)的信息,以及控制預(yù)測(cè)單元恢復(fù)累計(jì)歷史記錄及恢復(fù)利用歷史記錄進(jìn)行預(yù)測(cè)。
【專利說明】微處理器以及微處理器操作方法
[0001] 本申請(qǐng)是申請(qǐng)日為2014年6月6日、申請(qǐng)?zhí)枮?01410251303. 0、發(fā)明名稱為"微 處理器以及微處理器操作方法"的發(fā)明專利申請(qǐng)的分案申請(qǐng)。

【技術(shù)領(lǐng)域】
[0002] 本發(fā)明涉及一種微處理器以及其操作方法,特別涉及根據(jù)微處理器中所累計(jì)已執(zhí) 行的指令的特性的歷史記錄進(jìn)行預(yù)測(cè)的微處理器以及其操作方法。

【背景技術(shù)】
[0003] 現(xiàn)今微處理器利用不同的預(yù)測(cè)技術(shù)以改進(jìn)執(zhí)行效能。舉例來說,分支預(yù)測(cè)器 (branchpredictor)用以預(yù)測(cè)是否會(huì)執(zhí)行分支指令,若執(zhí)行分支指令,則預(yù)測(cè)分支指令的 目標(biāo)地址。動(dòng)態(tài)分支預(yù)測(cè)累計(jì)不同分支指令執(zhí)行所輸出的歷史記錄,以及根據(jù)歷史記錄進(jìn) 行預(yù)測(cè)。動(dòng)態(tài)分支預(yù)測(cè)的預(yù)測(cè)精準(zhǔn)度很大程度與可累計(jì)的歷史記錄的數(shù)量有關(guān)。只要在既 定時(shí)間內(nèi)通過程序執(zhí)行小到可以包含在預(yù)測(cè)歷史記錄中的一組分支指令,則精準(zhǔn)度可能非 常尚。
[0004] 然而,預(yù)測(cè)精準(zhǔn)度會(huì)因某些事件而大幅降低。上述事件之一為當(dāng)其他程序運(yùn)行時(shí), 目前正在運(yùn)行的程序暫時(shí)中斷的狀況。舉例來說,通過網(wǎng)絡(luò)接口控制器接收分組,將發(fā)出一 中斷信號(hào)至處理器。處理器將操作系統(tǒng)的控制轉(zhuǎn)換為提供中斷,這將造成目前所運(yùn)行的程 序A暫時(shí)中斷,直到操作系統(tǒng)將控制恢復(fù)以運(yùn)行程序A為止。當(dāng)處理器執(zhí)行操作系統(tǒng)的分 支指令時(shí),將影響程序A的分支預(yù)測(cè)的歷史記錄。對(duì)程序A的預(yù)測(cè)分支而言,很有可能會(huì)降 低的分支預(yù)測(cè)器的精準(zhǔn)度。


【發(fā)明內(nèi)容】

[0005] 本發(fā)明一實(shí)施例提供一種微處理器。微處理器包括一預(yù)測(cè)單元以及一控制單元。 控制單元用以控制預(yù)測(cè)單元累計(jì)由微處理器所執(zhí)行的指令的特性的歷史記錄,以及在微處 理器運(yùn)行第一線程時(shí)根據(jù)歷史記錄預(yù)測(cè)后續(xù)指令??刂茊卧€檢測(cè)自運(yùn)行第一線程至運(yùn)行 與第一線程不同的第二線程(thread)之間的第一轉(zhuǎn)變,以及檢測(cè)第二線程的識(shí)別碼是否 存在??刂茊卧€控制預(yù)測(cè)單元在運(yùn)行第二線程,且第二線程的識(shí)別碼不存在時(shí),選擇性地 暫停累計(jì)歷史記錄并利用歷史記錄進(jìn)行預(yù)測(cè)??刂茊卧靡运鸭嘘P(guān)第二線程的信息,以 及檢測(cè)從運(yùn)行第二線程至運(yùn)行第三線程的第二轉(zhuǎn)變。控制單元用以登錄并更新所搜集的 與第二線程有關(guān)的信息,以及控制預(yù)測(cè)單元恢復(fù)累計(jì)歷史記錄及恢復(fù)利用歷史記錄進(jìn)行預(yù) 測(cè)。
[0006] 本發(fā)明另一實(shí)施例提供一種執(zhí)行微處理器的方法。方法包括累計(jì)由微處理器所 執(zhí)行的指令的特性的歷史記錄,以及于微處理器運(yùn)行第一線程時(shí)根據(jù)歷史記錄預(yù)測(cè)后續(xù)指 令。方法還包括檢測(cè)自運(yùn)行第一線程至運(yùn)行第二線程之間的第一轉(zhuǎn)變,以及檢測(cè)第二線程 的識(shí)別碼是否存在。方法還包括于運(yùn)行第二線程,且第二線程的識(shí)別碼不存在時(shí),選擇性地 暫停累計(jì)歷史記錄并利用歷史記錄進(jìn)行預(yù)測(cè)。方法還包括搜集有關(guān)第二線程的信息,以及 檢測(cè)從運(yùn)行第二線程至運(yùn)行第三線程的第二轉(zhuǎn)變。方法還包括登錄并更新所搜集的與第二 線程有關(guān)的信息,以及控制預(yù)測(cè)單元恢復(fù)累計(jì)歷史記錄及恢復(fù)利用歷史記錄進(jìn)行預(yù)測(cè)。

【專利附圖】

【附圖說明】
[0007] 圖1是顯示一微處理器的方塊圖。
[0008] 圖2是描述圖1所示的微處理器的操作流程圖。
[0009] 圖3是根據(jù)一替代實(shí)施例描述圖1所示的微處理器的操作流程圖。
[0010] 圖4是根據(jù)另一替代實(shí)施例描述圖1所示的微處理器的操作流程圖。
[0011] 【符號(hào)說明】
[0012] 100?微處理器
[0013] 102?分支預(yù)測(cè)單元
[0014] 104?數(shù)據(jù)預(yù)取單元
[0015] 106?存儲(chǔ)沖突預(yù)測(cè)單元
[0016] 108?歷史記錄存儲(chǔ)器
[0017] 109?預(yù)測(cè)單元
[0018] 111?現(xiàn)有特權(quán)等級(jí)寄存器
[0019] 112?保存最佳化信息的存儲(chǔ)器
[0020] 113?引退指令計(jì)數(shù)器
[0021] 114?效能計(jì)數(shù)器
[0022] 124?控制單元
[0023] 132A、132B、132C?預(yù)測(cè)歷史記錄
[0024] 202、212、222、232、242、311、313、315、333、335、413、433、435 ?流程方塊

【具體實(shí)施方式】
[0025] 以下所述的實(shí)施例藉由選擇性暫停預(yù)測(cè)歷史記錄的累計(jì),以及當(dāng)暫停動(dòng)態(tài)預(yù)測(cè) 時(shí),通過預(yù)測(cè)單元(例如分支預(yù)測(cè)器、數(shù)據(jù)預(yù)取器(dataprefetcher)以及存儲(chǔ)沖突檢測(cè) 預(yù)測(cè)器(storecollisiondetectionpredictor))利用利于靜態(tài)預(yù)測(cè)的預(yù)測(cè)歷史記錄進(jìn) 行預(yù)測(cè),以改進(jìn)微處理器的效能。更具體地,當(dāng)微處理器運(yùn)行一些線程(thread,又稱之為 "執(zhí)行緒")但非其他時(shí),可能暫停預(yù)測(cè)歷史記錄累計(jì)(predictionhistoryaccumulation) 以及使用。舉例來說,根據(jù)運(yùn)行線程(thread,又稱之為"執(zhí)行緒")的特權(quán)等級(jí)選擇暫停, 更具體地,線程是否運(yùn)行于管理者特權(quán)等級(jí),例如于x86架構(gòu)處理器下的目前特權(quán)等級(jí) (currentprivilegelevel,CPL)的第0級(jí)(亦被稱為ring0)。舉另一例來說,根據(jù)線 程的類型選擇暫停,例如線程是否為中斷處理程序(interrupthandler)。舉另一例來說, 暫停的選擇可根據(jù)是否此轉(zhuǎn)換到一新的線程的動(dòng)作回應(yīng)一系統(tǒng)調(diào)用(systemcall)指令而 設(shè)定。舉另一例來說,微處理器搜集有關(guān)線程的前一執(zhí)行實(shí)例的信息,以及根據(jù)上述信息選 擇暫停,例如指令長(zhǎng)度以及效能信息。舉另一例來說,根據(jù)線程的識(shí)別碼選擇暫停。線程的 識(shí)別碼(identity)可根據(jù),例如,造成轉(zhuǎn)變的事件的類型、當(dāng)事件發(fā)生時(shí)處理器的架構(gòu)狀 態(tài)、以及前述兩者的結(jié)合而決定。事件的類型可包括,例如,系統(tǒng)調(diào)用的執(zhí)行、軟件中斷指 令的執(zhí)行、內(nèi)部特權(quán)(inter-privilege)或者任務(wù)切換程序調(diào)用(taskswitchprocedure call)的執(zhí)行、以及例外情況的檢測(cè)。此外,微處理器可在暫停預(yù)測(cè)歷史記錄累計(jì)以及使用 期間將預(yù)測(cè)歷史存儲(chǔ)以及還原至局部存儲(chǔ)器(localstorage)。
[0026]注釋:
[0027] 預(yù)測(cè)單元為微處理器的硬件、軟件、或者硬件以及軟件的結(jié)合,用以預(yù)測(cè)有關(guān)運(yùn) 行在處理器的指令流所將采取的動(dòng)作。預(yù)測(cè)可包括(但非以此為限)預(yù)測(cè)分支指令是否 指示微處理器進(jìn)行分支;預(yù)測(cè)分支指令的目標(biāo)地址;預(yù)測(cè)藉由指令流(instructionsof thestream)所存取的數(shù)據(jù);預(yù)測(cè)是否會(huì)發(fā)生存儲(chǔ)沖突(storecollision)。預(yù)測(cè)單元 根據(jù)由微處理器所執(zhí)行的指令的特性的歷史記錄進(jìn)行預(yù)測(cè),又可稱為動(dòng)態(tài)預(yù)測(cè)(dynamic prediction)。當(dāng)微處理器執(zhí)行指令流時(shí),預(yù)測(cè)單元累計(jì)歷史記錄。歷史記錄可包括(但 非以此為限)無論分支指令是否指示微處理器進(jìn)行分支的執(zhí)行結(jié)果(outcome);作用分支 指令(takenbuanchinstruction)的目標(biāo)地址;藉由指令流所讀取或者存儲(chǔ)的數(shù)據(jù)的地 址;與指定快取存儲(chǔ)器位置的存儲(chǔ)指令有關(guān)的信息,例如存儲(chǔ)指令的地址、用以計(jì)算存儲(chǔ)地 址的來源的識(shí)別符(identifier)、存儲(chǔ)數(shù)據(jù)所依賴的指令的重排序緩沖器索引(reorder bufferindex)、先前與存儲(chǔ)指令沖突的載入指令的地址以及重排序緩沖器索引、沖突載 入以及存儲(chǔ)指令之間的重排序緩沖器索引差量(delta)、沖突載入指令重復(fù)的次數(shù)的指 標(biāo)(indicator)。預(yù)測(cè)單元也可不根據(jù)歷史記錄進(jìn)行預(yù)測(cè),又可稱為靜態(tài)預(yù)測(cè)(static prediction)〇
[0028] 微處理器的特權(quán)等級(jí)由微處理器的指令集架構(gòu)(instructionset architecture)所定義,以及控制目前所運(yùn)行的程序?qū)τ谙到y(tǒng)資源的存取,例如存儲(chǔ)器區(qū) 域、I/O端口以及指令集的特定指令(certaininstruction)。
[0029] 線程為由微處理器所執(zhí)行的指令的序列。
[0030] 程序?yàn)榫€程,以及其相關(guān)的狀態(tài)系其他程序共同由操作系統(tǒng)所管理。操作系統(tǒng)將 處理識(shí)別符分配至程序。
[0031] 請(qǐng)參閱圖1,圖1是顯示微處理器100的方塊圖。微處理器100包括預(yù)測(cè)單元109。 預(yù)測(cè)單元109耦接至控制單元124以及預(yù)測(cè)歷史記錄存儲(chǔ)器108??刂茊卧?24耦接至引 退指令計(jì)數(shù)器(retiredinstructioncounter) 113、效能計(jì)數(shù)器114、現(xiàn)有特權(quán)等級(jí)寄存器 (currentprivilegelevelregister) 111、以及保存最佳化信息的存儲(chǔ)器(storagefor holdingoptimizationinformation) 112。在一實(shí)施例中,微處理器100包括一個(gè)或多個(gè) 功能單元的管線(未顯示),具有指令快?。╥nstructioncache)、指令轉(zhuǎn)換單元或者指令 解碼器、寄存器重命名單元(registerrenamingunit)、保留站(reservationstation)、 數(shù)據(jù)快取、執(zhí)行單元、存儲(chǔ)器子系統(tǒng)(memorysubsystem)以及具有重排序緩沖器的引退單 元。優(yōu)選地,微處理器100包括超標(biāo)量(superscalar)、無序執(zhí)行微架構(gòu)(out-of-order executionmicroarchitecture)。預(yù)測(cè)單元109可并入微處理器100的各種功能單元中或 者作為功能單元。
[0032] 預(yù)測(cè)單元109包括硬件、軟件或者硬件以及軟件的結(jié)合。預(yù)測(cè)單元109具有分支 預(yù)測(cè)單元102、數(shù)據(jù)預(yù)取單元104以及存儲(chǔ)沖突預(yù)測(cè)單元106,分支預(yù)測(cè)單元102包括用以 存儲(chǔ)預(yù)測(cè)歷史記錄132A的存儲(chǔ)陣列,數(shù)據(jù)預(yù)取單元104包括用以存儲(chǔ)預(yù)測(cè)歷史記錄132B 的存儲(chǔ)陣列,以及存儲(chǔ)沖突預(yù)測(cè)單元106包括用以存儲(chǔ)預(yù)測(cè)歷史記錄132C的存儲(chǔ)陣列。預(yù) 測(cè)歷史記錄單獨(dú)參考預(yù)測(cè)歷史記錄132A?C中的一個(gè)或者集體性參考多個(gè)預(yù)測(cè)歷史記錄 132A?C。預(yù)測(cè)單元109分別使用預(yù)測(cè)歷史記錄132A?C中的一個(gè)以作出與指令或者數(shù)據(jù) 處理有關(guān)的預(yù)測(cè),以通過各別的操作嘗試改進(jìn)效能和(或)減少微處理器100的功率消耗。 更具體地,分支預(yù)測(cè)單元102累計(jì)指令地址的歷史記錄、方位(執(zhí)行(taken)或者未執(zhí)行)、 以及由微處理器100所執(zhí)行的分支指令的目標(biāo)地址,以致能分支預(yù)測(cè)單元102動(dòng)態(tài)預(yù)測(cè)分 支指令之后續(xù)執(zhí)行狀況的方向以及目標(biāo)地址。動(dòng)態(tài)分支預(yù)測(cè)技術(shù)為本【技術(shù)領(lǐng)域】所已知的分 支預(yù)測(cè)技術(shù)。數(shù)據(jù)預(yù)取單元104藉由程序指令將存取的歷史記錄累計(jì)至快取存儲(chǔ)器區(qū)域以 檢測(cè)存儲(chǔ)器存取模式(pattern),以預(yù)測(cè)未來哪個(gè)來自快取存儲(chǔ)器區(qū)域的數(shù)據(jù)會(huì)通過程序 進(jìn)行存取,并在程序請(qǐng)求數(shù)據(jù)之前將預(yù)測(cè)的數(shù)據(jù)自系統(tǒng)存儲(chǔ)器預(yù)取至微處理器100的快取 存儲(chǔ)器以減少存儲(chǔ)器的存取時(shí)間(因?yàn)橄到y(tǒng)存儲(chǔ)器的延遲大于快取存儲(chǔ)器的延遲)。動(dòng)態(tài) 數(shù)據(jù)預(yù)取技術(shù)為本【技術(shù)領(lǐng)域】所已知的數(shù)據(jù)預(yù)取技術(shù)。存儲(chǔ)沖突預(yù)測(cè)單元106累計(jì)指令快取 存儲(chǔ)器位置的存儲(chǔ)指令的歷史記錄,以預(yù)測(cè)存儲(chǔ)沖突何時(shí)會(huì)發(fā)生。存儲(chǔ)沖突發(fā)生在當(dāng)較新 的載入指令指定數(shù)據(jù)以覆蓋較舊的存儲(chǔ)指令時(shí)。存儲(chǔ)沖突的預(yù)測(cè)可致能微處理器100預(yù)測(cè) 性地將數(shù)據(jù)自存儲(chǔ)指令轉(zhuǎn)移(forward)至載入指令,和(或)避免執(zhí)行抵觸(colliding) 載入指令使較舊的存儲(chǔ)指令失序。值得注意的是,上述實(shí)施例并非用以限制預(yù)測(cè)單元的上 述特定型式,但可能包括藉由微處理器100執(zhí)行以累計(jì)指令的特性的歷史記錄的其他型式 的預(yù)測(cè)單元,可有效地致能預(yù)測(cè)單元進(jìn)行有關(guān)后續(xù)執(zhí)行指令的預(yù)測(cè)或者執(zhí)行其他預(yù)測(cè)操作 以嘗試增加處理器100的效能和(或)降低其功率消耗。
[0033] 此外由各個(gè)預(yù)測(cè)單元109進(jìn)行動(dòng)態(tài)預(yù)測(cè),即為利用預(yù)測(cè)歷史記錄132A?C中的一 個(gè)進(jìn)行預(yù)測(cè),各個(gè)預(yù)測(cè)單元109也可用以進(jìn)行靜態(tài)預(yù)測(cè),即為不通過利用預(yù)測(cè)歷史記錄進(jìn) 行預(yù)測(cè)。舉例來說,在一實(shí)施例中,分支預(yù)測(cè)單元102對(duì)所有目標(biāo)地址為反向(backward) 的分支指令(舉例來說,偏移為負(fù)值的相關(guān)分支)進(jìn)行靜態(tài)預(yù)測(cè),因?yàn)椴⒉恍枰魏蜗惹八?執(zhí)行指令的歷史記錄,以及并不會(huì)對(duì)所有目標(biāo)地址為前向(forward)的分支指令進(jìn)行靜態(tài) 預(yù)測(cè)。舉另一例來說,在一實(shí)施例中,當(dāng)數(shù)據(jù)預(yù)取單元104檢測(cè)到程序存取快取存儲(chǔ)器時(shí), 需要下一時(shí)序(sequential)的數(shù)據(jù)的快取線以進(jìn)行預(yù)測(cè),因此數(shù)據(jù)預(yù)取單元104預(yù)取下一 時(shí)序的數(shù)據(jù)的快取線。靜態(tài)預(yù)測(cè)方法為中央處理單元的已知技術(shù)。
[0034] 在一實(shí)施例中,預(yù)測(cè)單元109利用預(yù)測(cè)歷史記錄存儲(chǔ)器108存儲(chǔ)預(yù)測(cè)歷史記錄 132A?C以響應(yīng)導(dǎo)致微處理器100自運(yùn)行一線程轉(zhuǎn)換至運(yùn)行另一線程的事件,舉例來說,自 使用者特權(quán)等級(jí)轉(zhuǎn)換至管理者特權(quán)等級(jí),以及還原預(yù)測(cè)歷史記錄132A?C以響應(yīng)導(dǎo)致微處 理器100自管理者特權(quán)等級(jí)轉(zhuǎn)換回使用者特權(quán)等級(jí)的事件,優(yōu)選地為當(dāng)在執(zhí)行轉(zhuǎn)換至管理 者特權(quán)等級(jí)時(shí),恢復(fù)至一不同的使用者程序而非先前所運(yùn)行處理,下列將提出更詳細(xì)的描 述。
[0035] 現(xiàn)有特權(quán)等級(jí)寄存器111存儲(chǔ)微處理器100的現(xiàn)有特權(quán)等級(jí)。在一實(shí)施例中,微 處理器100基本上符合X86的架構(gòu),其他為IntelIA-32架構(gòu)和(或)Intel64架構(gòu)(上 述的架構(gòu)詳述于"Intel64andIA-32ArchitecturesSoftwareDeveloper'sManual, CombinedVolumes:1,2A,2B,2C,3Band3C,OrderNumber325464-043US,May2012,by theIntelCorporationofSantaClara,California" 中)。特別的是,在x86 的實(shí)施例 中,現(xiàn)有特權(quán)等級(jí)寄存器111用以指示微處理器100是否運(yùn)行在現(xiàn)有特權(quán)等級(jí)〇、1、2或者 3,即為在第0級(jí)、第1級(jí)、第2級(jí)或者第3級(jí)。第0級(jí)為最優(yōu)先的特權(quán)等級(jí),以及第3級(jí)為 最小的特權(quán)等級(jí)(使用者特權(quán)等級(jí))。第〇級(jí)、第1級(jí)以及第2級(jí)為管理者特權(quán)等級(jí)。
[0036] 在一指令引退時(shí),引退指令計(jì)數(shù)器113遞增。將微處理器100開始運(yùn)行另一不同的 線程(例如離開第〇級(jí))的引退指令計(jì)數(shù)器的值減去當(dāng)微處理器100開始運(yùn)行線程時(shí)(例 如進(jìn)入第0級(jí))的引退指令計(jì)數(shù)器113的值,使控制單元124可根據(jù)上述的值決定有多少 指令藉由線程引退,下列將提出更詳細(xì)的敘述。在一實(shí)施例中,指令計(jì)數(shù)器113計(jì)算微指令 引退的數(shù)量(即為架構(gòu)指令,例如x86指令),然而在另一實(shí)施例中,指令計(jì)數(shù)器113計(jì)算微 指令引退的數(shù)量(即為由微處理器100的指令轉(zhuǎn)換器(instructiontranslator)自微指 令轉(zhuǎn)換為由微處理器100的微架構(gòu)指令集所定義的非架構(gòu)指令,以及上述非架構(gòu)指令由微 處理器100的執(zhí)行單元所執(zhí)行)。
[0037] 效能計(jì)數(shù)器114包括多個(gè)計(jì)數(shù)器,用以計(jì)算微處理器100有關(guān)效能和(或)功率 消耗的情況。在一實(shí)施例中,效能計(jì)數(shù)器114計(jì)算預(yù)測(cè)分支指令;正確地預(yù)測(cè)分支指令;非 正確地預(yù)測(cè)分支指令;由數(shù)據(jù)預(yù)取所分配的快取線;由非預(yù)取機(jī)制所分配的快取線,例如 需求載入/存儲(chǔ)或者直接存儲(chǔ)器存?。╠irectmemoryaccess,DMA)請(qǐng)求;程序存取至由數(shù) 據(jù)預(yù)取所分配的快取線;在使用前被驅(qū)除(evict)的由數(shù)據(jù)預(yù)取所分配的快取線;存儲(chǔ)沖 突預(yù)測(cè);實(shí)際存儲(chǔ)沖突檢測(cè)。
[0038] 最佳化信息112用以選擇性地暫停累計(jì),以及選擇性地使用預(yù)測(cè)歷史記錄132A? C,舉例來說,在管理者等級(jí)操作期間,將詳述于與圖3的相關(guān)的實(shí)施例中。
[0039] 控制單元124包括硬件、軟件、或者硬件以及軟件的結(jié)合。根據(jù)其輸入(主要為現(xiàn) 有特權(quán)等級(jí)111、最佳化信息112、引退指令計(jì)數(shù)器113、效能計(jì)數(shù)器114、線程轉(zhuǎn)換事件類 型、以及架構(gòu)狀態(tài)),控制單元124控制預(yù)測(cè)單元109繼續(xù)或者暫停累計(jì)其所對(duì)應(yīng)的預(yù)測(cè)歷 史記錄132A?C中的一個(gè),以及利用預(yù)測(cè)歷史記錄132A?C和(或)自預(yù)測(cè)歷史記錄存 儲(chǔ)器108存儲(chǔ)/還原的預(yù)測(cè)歷史記錄132A?C進(jìn)行預(yù)測(cè)。在一實(shí)施例中,控制單元124包 括硬件狀態(tài)機(jī)器、微編碼或者硬件狀態(tài)機(jī)器與微編碼的結(jié)合。在一實(shí)施例中,微編碼包括由 微處理器100的執(zhí)行單元所執(zhí)行的指令。
[0040] 在一實(shí)施例中,用以控制微編碼的讀取的微編碼單元(未顯示)包括其讀取單元、 或者定序器(sequencer)、以及未執(zhí)行分支預(yù)測(cè)單元102,以僅預(yù)測(cè)使用者程序分支指令。[0041] 請(qǐng)參閱圖2,圖2是描述圖1所示的微處理器100的操作流程圖。流程起始于方塊 202〇
[0042] 在方塊202,當(dāng)在使用者特權(quán)等級(jí)運(yùn)行線程操作時(shí)(舉例來說第3級(jí)),各個(gè)預(yù)測(cè) 單元109累計(jì)所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C中的一個(gè),并在微處理器100處理線程的指 令時(shí)利用預(yù)測(cè)歷史記錄132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè)。流程進(jìn)入方塊212。
[0043] 在方塊212,控制單元124檢測(cè)指示微處理器100操作管理者特權(quán)等級(jí)的事件, 舉例來說,第〇級(jí)。上述事件亦導(dǎo)致微處理器100自正在運(yùn)行的線程的控制轉(zhuǎn)換至不同 的線程。上述事件的例子包括,但并非限制于指令的操作,例如系統(tǒng)調(diào)用指令(例如X86 SYSENTER/SYSCALL指令)、軟件中斷(例如x86INT指令)、或者內(nèi)部特權(quán)等級(jí)或者任務(wù)切 換程序調(diào)用指令(例如X86CALL指令);以及例外情況的檢測(cè),例如硬件中斷(例如計(jì)時(shí)器 刻度(timertick)、I/0裝置)或者頁(yè)面錯(cuò)誤。在一實(shí)施例中,在轉(zhuǎn)換控制至第0級(jí)線程或 者子程序(routine)之前,事件將造成微處理器100將控制轉(zhuǎn)換至操作系統(tǒng)的微編碼以執(zhí) 行各種操作(例如權(quán)限檢查)。流程進(jìn)入方塊222。
[0044] 在方塊222,響應(yīng)于方塊212的事件檢測(cè),當(dāng)微處理器100在管理者特權(quán)等級(jí)運(yùn)行 新的線程時(shí),控制單元124控制預(yù)測(cè)單元暫停累計(jì)所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C,以及 暫停利用歷史記錄進(jìn)行預(yù)測(cè)。然而,預(yù)測(cè)單元109持續(xù)進(jìn)行不需使用預(yù)測(cè)歷史記錄132A? C的靜態(tài)預(yù)測(cè)。在一實(shí)施例中,控制單元124可暫停累計(jì)預(yù)測(cè)歷史記錄132A?C,以及暫停 針對(duì)部分預(yù)測(cè)單元109的預(yù)測(cè),但針對(duì)其他單元不暫停累計(jì)以及不暫停進(jìn)行預(yù)測(cè)。除此之 夕卜,暫停以及不暫停預(yù)測(cè)單元109的決定由微處理器100動(dòng)態(tài)操作。舉例來說,編程暫停以 及非暫停預(yù)測(cè)單元109的子集可藉由例如操作系統(tǒng)或者BIOS進(jìn)行編程。舉另一例子來說, 可在微處理器100的制造過程中通過熔絲,甚至通過使用者或者服務(wù)人員將子集配置或者 設(shè)置于一區(qū)域中。舉另一例子來說,可根據(jù)將運(yùn)行的特定第〇級(jí)決定子集,接下來將于圖3 所述的實(shí)施例進(jìn)行更詳細(xì)的敘述。流程進(jìn)入方塊232。
[0045] 在方塊232,控制單元124檢測(cè)指示微處理器100操作使用者特權(quán)等級(jí)(例如第 3級(jí))的事件。上述事件亦造成微處理器100將控制自正在運(yùn)行的線程轉(zhuǎn)換至不同的線 程。上述事件的例子包括,但并非限制于指令的執(zhí)行,例如系統(tǒng)調(diào)用返回指令(例如x86 SYSEXIT/SYSRET指令)、來自中斷或者例外的返回(例如x86IRET指令)、或者來自程序指 令的內(nèi)部特權(quán)等級(jí)返回(例如X86RET指令)。在一實(shí)施例中,造成微處理器100將控制轉(zhuǎn) 換至微編碼的事件,將于將控制轉(zhuǎn)換至第3級(jí)處理之前執(zhí)行各種操作。流程進(jìn)入方塊242。
[0046] 在方塊242,預(yù)測(cè)單元109恢復(fù)累計(jì)個(gè)別的預(yù)測(cè)歷史記錄,以及于微處理器100處 理指令時(shí)利用歷史記錄132進(jìn)行預(yù)測(cè)。流程結(jié)束于方塊242。
[0047] 如前所述,若方塊242所返回的控制的第3級(jí)處理與方塊212的事件所中斷的第3 級(jí)處理相同時(shí),則預(yù)測(cè)歷史記錄132A?C應(yīng)與先前的第0級(jí)的轉(zhuǎn)變相同,即為當(dāng)?shù)?級(jí)處 理被中斷時(shí),預(yù)測(cè)歷史記錄132A?C并不會(huì)因此而改變,因?yàn)槠洳⑽幢坏?級(jí)線程所影響。 因此,很可能預(yù)測(cè)單元109將可有利于事件發(fā)生后一如往常地持續(xù)對(duì)第3級(jí)處理的線程進(jìn) 行正確的動(dòng)態(tài)預(yù)測(cè)。也可能在執(zhí)行第0級(jí)線程時(shí)的預(yù)測(cè)效能將低于執(zhí)行第3級(jí)處理的預(yù)測(cè) 效能,因?yàn)榈讴柤?jí)線程預(yù)測(cè)僅使用靜態(tài)預(yù)測(cè)。無論如何,根據(jù)第〇級(jí)線程和(或)第3級(jí)處 理的特性,其可能希望在執(zhí)行第〇級(jí)線程時(shí),藉由犧牲效能以有利地改進(jìn)第3級(jí)的效能-由 于第3級(jí)處理預(yù)測(cè)歷史記錄的影響較少或者沒有-將支配第0級(jí)效能的損失,特別為當(dāng)?shù)?0級(jí)線程為短的和(或)不經(jīng)常運(yùn)行。
[0048] 請(qǐng)參閱圖3。圖3是根據(jù)一替代實(shí)施例描述圖1所示的微處理器的操作流程圖。 圖3中部分方塊與圖2相同,以及編號(hào)亦相同。優(yōu)選地,在重新設(shè)定時(shí),控制單元124初始 化信息112數(shù)據(jù)架構(gòu)將于以下做詳細(xì)的敘述。流程起始于方塊202。
[0049] 在方塊202,當(dāng)線程操作于使用者特權(quán)等級(jí)時(shí),例如第3級(jí),各個(gè)預(yù)測(cè)單元109累 計(jì)所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C,以及當(dāng)微處理器100處理指令時(shí)利用預(yù)測(cè)歷史記錄 132A?C進(jìn)行預(yù)測(cè)。流程進(jìn)入方塊212。
[0050] 在方塊212,控制單元124檢測(cè)指示微處理器100操作管理者特權(quán)等級(jí)(例如第0 級(jí))的事件,以及造成微處理器100將控制自正在運(yùn)行的線程轉(zhuǎn)換至不同的線程。流程進(jìn) 入方塊311。
[0051] 在方塊311,控制單元24嘗試識(shí)別運(yùn)行在第0級(jí)的線程,以及產(chǎn)生識(shí)別符給第0級(jí) 線程。在一實(shí)施例中,以下所述的最佳化信息112數(shù)據(jù)架構(gòu)包括由控制單元124保存在微 處理器100的私密存儲(chǔ)器中的表格。表格中每個(gè)登錄與不同的第0級(jí)線程識(shí)別符有關(guān)。功 能用以在檢測(cè)到線程轉(zhuǎn)換時(shí),產(chǎn)生第0級(jí)識(shí)別符以接收各種輸入,例如微處理器100的事件 類型以及狀態(tài)值。事件類型可為前述圖2的方塊212中各種事件類型中的一個(gè),但并非以 此為限。狀態(tài)值可為通用目的寄存器的值(generalpurposeregistervalue)、模塊特定 寄存器的值(modelspecificregistervalue)、指令指針(instructionpointer,IP),或 者第3級(jí)處理的程序計(jì)數(shù)器(PC)的值,用以進(jìn)行系統(tǒng)調(diào)用、軟件中斷、內(nèi)部特權(quán)或者任務(wù)切 換程序調(diào)用、以及與中斷或者例外有關(guān)的中斷向量數(shù)字,但并非以此為限。舉例來說,當(dāng)?shù)?3級(jí)處理對(duì)Microsoft? Windows?操作系統(tǒng)進(jìn)行系統(tǒng)調(diào)用時(shí)(例如通過x86SYSENTER 指令),Windows根據(jù)x86EAX寄存器中的值以及在某些情況下其他寄存器的值運(yùn)行不同的 線程。因此,在一實(shí)施例中,當(dāng)事件類型為系統(tǒng)調(diào)用指令時(shí),控制單元124檢查EAX寄存器 值,以及產(chǎn)生不同的第〇級(jí)識(shí)別符給不同的EAX值。其他實(shí)施例可用于其他的系統(tǒng)。在另 一例子中,控制單元124可產(chǎn)生不同的第0級(jí)識(shí)別符值給不同的中斷向量值。流程進(jìn)入方 塊 313〇
[0052] 方塊313,控制單元124查找在方塊311的最佳化信息112數(shù)據(jù)架構(gòu)中所產(chǎn)生的 第〇級(jí)識(shí)別符,以取得有關(guān)于藉由第〇級(jí)識(shí)別符所識(shí)別的第〇級(jí)線程的最佳化信息112。在 一實(shí)施例中,假設(shè)第〇級(jí)識(shí)別符不存在于最佳化信息112數(shù)據(jù)架構(gòu)中,控制單元124執(zhí)行預(yù) 設(shè)第〇級(jí)登錄動(dòng)作(即為相對(duì)于進(jìn)入第〇級(jí)的預(yù)設(shè)動(dòng)作有關(guān)于無論是否累計(jì)預(yù)測(cè)歷史記錄 132A?C以及利用預(yù)測(cè)歷史記錄132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè)),以及在最佳化信息112數(shù)據(jù)架 構(gòu)中分配進(jìn)入給第0級(jí)識(shí)別符。在一實(shí)施例中,預(yù)設(shè)第0級(jí)登錄動(dòng)作用以暫停累計(jì)預(yù)測(cè)歷 史記錄132A?C,以及利用其進(jìn)行預(yù)測(cè)。若第0級(jí)識(shí)別符存在,控制單元124決定是否根據(jù) 相關(guān)的最佳化信息112置換預(yù)設(shè)第0級(jí)登錄動(dòng)作。在一實(shí)施例中,最佳化信息112包括與 第0級(jí)線程有關(guān)的長(zhǎng)度,以及若第0級(jí)線程的長(zhǎng)度小于既定長(zhǎng)度,控制單元124決定暫停累 計(jì)并暫停使用預(yù)測(cè)歷史記錄132A?C,以及反之則繼續(xù)累計(jì)以及使用預(yù)測(cè)歷史記錄132A? C。在一實(shí)施例中,表示為指令的數(shù)字的長(zhǎng)度引退于第0級(jí)線程的前一次運(yùn)行期間,利用引 退指令計(jì)數(shù)器113取得。在一實(shí)施例中,最佳化信息112包括在第0級(jí)線程的前一次執(zhí)行 實(shí)例期間,和(或)于第3級(jí)處理的前一次運(yùn)行之后至第0級(jí)線程的前一次執(zhí)行實(shí)例期間, 有關(guān)于根據(jù)預(yù)測(cè)歷史記錄132A?C所進(jìn)行預(yù)測(cè)的有效性的信息。在一實(shí)施例中,利用效能 計(jì)數(shù)器114取得有效性。流程進(jìn)入決策塊315。
[0053] 在決策塊315,控制單元124決定是否暫停累計(jì)預(yù)測(cè)歷史記錄132A?C,以及是否 暫停使用預(yù)測(cè)歷史記錄132A?C進(jìn)行預(yù)測(cè)。若是如此,流程進(jìn)入方塊222 ;反之,流程進(jìn)入 方塊321。盡管在此所述的實(shí)施例決定是否累計(jì)預(yù)測(cè)歷史記錄132A?C,以及利用根據(jù)與 線程識(shí)別符有關(guān)的最佳化訊息112所作的預(yù)測(cè)歷史記錄132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè),但可藉由 準(zhǔn)則(criteria)作出決定。舉例來說,控制單元124可根據(jù)新的線程的特性、或者特征而 不參考最佳化訊息112作出運(yùn)行轉(zhuǎn)換的決定(利用任何前述的各種輸入的結(jié)合)。也就是 說,新的線程的特征(例如事件類型和(或)與轉(zhuǎn)換至新的線程的架構(gòu)狀態(tài);特權(quán)等級(jí),舉 例來說如相對(duì)于圖2的敘述;或者新的線程是否為中斷處理程序(handler))足以作出是否 累計(jì)預(yù)測(cè)歷史記錄132A?C的決定,以及執(zhí)行動(dòng)態(tài)預(yù)測(cè),即為是否選擇性地暫停累計(jì)預(yù)測(cè) 歷史記錄132A?C以及利用預(yù)測(cè)歷史記錄132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè)。一般而言,暫停累計(jì) 預(yù)測(cè)歷史記錄132A?C以及利用預(yù)測(cè)歷史記錄132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè)的方法用于明顯較 短和(或)很少運(yùn)行的線程,因?yàn)楹芸赡馨ㄉ鲜鎏卣鞯木€程具有較差的預(yù)測(cè)精準(zhǔn)度以作 為不影響其他明顯較長(zhǎng)和(或)較常運(yùn)行的線程的預(yù)測(cè)歷史記錄132A?C的交換,將使得 其他線程具有較高的預(yù)測(cè)精準(zhǔn)度以微處理器100整體效率較高。
[0054] 在方塊222,響應(yīng)于方塊212的事件檢測(cè),當(dāng)微處理器100運(yùn)行在管理者特權(quán)等 級(jí)時(shí),控制單元124控制預(yù)測(cè)單元109暫停累計(jì)其所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C,以及 暫停利用預(yù)測(cè)歷史記錄進(jìn)行預(yù)測(cè)。然而,預(yù)測(cè)單元109持續(xù)進(jìn)行不需要使用預(yù)測(cè)歷史記錄 132A?C的靜態(tài)預(yù)測(cè)。流程進(jìn)入方塊321。
[0055] 在方塊321,當(dāng)?shù)?級(jí)線程運(yùn)行時(shí),控制單元124持續(xù)搜集有關(guān)第0級(jí)線程的最佳 化信息,例如通過效能計(jì)數(shù)器的預(yù)測(cè)有效性以及自引退指令計(jì)數(shù)器113的線程長(zhǎng)度。在一 實(shí)施例中,控制單元124搜集除了由預(yù)測(cè)單元109所進(jìn)行的動(dòng)態(tài)預(yù)測(cè)之外有關(guān)于靜態(tài)預(yù)測(cè) 的預(yù)測(cè)有效性。在一實(shí)施例中,控制單元124亦搜集預(yù)測(cè)有效性信息給第3級(jí)線程。較佳 地,若靜態(tài)預(yù)測(cè)線程的效能為可接受的,則當(dāng)線程運(yùn)行時(shí),控制單元124將持續(xù)暫停預(yù)測(cè)歷 史記錄的累計(jì)以及使用,尤其是若其他線程的效能明顯改善時(shí);反之,當(dāng)線程運(yùn)行時(shí),控制 單元124將累計(jì)以及使用預(yù)測(cè)歷史記錄。流程進(jìn)入方塊232。
[0056] 在方塊232,控制單元124檢測(cè)指示微處理器100操作于使用者特權(quán)等級(jí)的事件 (例如第3級(jí)),以及將控制自正在運(yùn)行的線程轉(zhuǎn)換至不同的線程。流程進(jìn)入方塊333。
[0057] 在方塊333,控制單元124利用于方塊321所搜集的最佳化信息更新與第0級(jí)線程 有關(guān)最佳化信息112數(shù)據(jù)架構(gòu)登錄。在一實(shí)施例中,更新包括藉由較新的搜集最佳化訊息 的登錄簡(jiǎn)單地取代最佳化訊息112。在另一實(shí)施例中,更新包括利用所搜集的最佳化訊息進(jìn) 行計(jì)算,以及利用計(jì)算更新最佳化信息112。舉例來說,控制單元124計(jì)算引退指令的數(shù)量 的平均和(或)根據(jù)第〇級(jí)線程最后的執(zhí)行過程的預(yù)測(cè)有效性。除此之外,平均可為權(quán)重 或者移動(dòng)平均數(shù)(rollingaverage)。另外,控制單元124可過濾出極限值并自最佳化信息 112排除。除此之外,可考慮維持最佳化信息112數(shù)據(jù)架構(gòu)的各種方法。舉例來說,在一實(shí) 施例中,控制單元124僅在最佳化訊息112數(shù)據(jù)架構(gòu)保存控制單元124預(yù)置換預(yù)設(shè)第0級(jí) 登錄動(dòng)作的登錄給第〇級(jí)線程;即為若控制單元124在方塊313查找第0級(jí)線程識(shí)別符,以 及在最佳化信息112數(shù)據(jù)架構(gòu)中找到第0級(jí)線程識(shí)別符,則控制單元124在決策塊315作 決定以置換預(yù)設(shè)動(dòng)作。流程進(jìn)入決策塊335。
[0058] 在決策塊335,控制單元124決定是否累計(jì)以及使用于方塊222所暫停的預(yù)測(cè)歷史 記錄132A?C。若是如此,流程進(jìn)入方塊242 ;反之,則累計(jì)預(yù)測(cè)單元109以及持續(xù)累計(jì)預(yù) 測(cè)歷史記錄132A?C以及使用預(yù)測(cè)歷史記錄132A?C以進(jìn)行預(yù)測(cè),以及流程結(jié)束。
[0059] 在方塊242,預(yù)測(cè)單元109恢復(fù)累計(jì)所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C,以及當(dāng)微處 理器100處理指令時(shí),利用預(yù)測(cè)歷史記錄132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè)。流程結(jié)束于方塊242。
[0060] 請(qǐng)參閱圖4。圖4是根據(jù)一替代實(shí)施例描述圖1所示的微處理器100的操作流程 圖。圖4的一些方塊與圖2的方塊相同,以及具有相同的標(biāo)號(hào)。流程起始于方塊202。
[0061] 在方塊202,當(dāng)線程操作于使用者特權(quán)等級(jí),例如第3級(jí),每個(gè)預(yù)測(cè)單元109累計(jì) 所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C,以及當(dāng)微處理器100處理指令時(shí),利用預(yù)測(cè)歷史記錄 132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè)。流程進(jìn)入方塊212。
[0062] 在方塊212,控制單元124檢測(cè)指示微處理器100操作于管理者特權(quán)等級(jí)(例如 第〇級(jí))的事件,以及造成微處理器100將控制自正在運(yùn)行的線程轉(zhuǎn)換至不同的線程。流 程進(jìn)入方塊222。
[0063] 在方塊222,響應(yīng)至方塊212的事件檢測(cè),當(dāng)微處理器100在管理者特權(quán)等級(jí)運(yùn)行 新的線程時(shí),控制單元124控制預(yù)測(cè)單元暫停累計(jì)所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C者,以 及暫停利用預(yù)測(cè)歷史記錄進(jìn)行預(yù)測(cè)。然而,預(yù)測(cè)單元109持續(xù)進(jìn)行靜態(tài)預(yù)測(cè)而不需利用預(yù) 測(cè)歷史記錄132A?C。流程進(jìn)入方塊413。
[0064] 在方塊413,控制單元124將預(yù)測(cè)歷史記錄132A?C的目前實(shí)例存儲(chǔ)至預(yù)測(cè)歷史 記錄存儲(chǔ)器108。在一實(shí)施例中,控制單元124僅存儲(chǔ)部分的特定預(yù)測(cè)歷史記錄132A?C以 減少執(zhí)行存儲(chǔ)所需的時(shí)間。舉例來說,若分支預(yù)測(cè)單元102的預(yù)測(cè)歷史記錄132A相對(duì)較大 (例如8KB),控制單元124可僅存儲(chǔ)大部分最近的存取登錄(例如512位)而非全部的預(yù) 測(cè)歷史記錄132A。在一實(shí)施例中,控制單元124將失效未存儲(chǔ)的部分預(yù)測(cè)歷史記錄132A? C。除此之外,在一實(shí)施例中,控制單元124僅存儲(chǔ)一些而非所有的預(yù)測(cè)單元109的預(yù)測(cè)歷史 記錄132A?C。舉例來說,相較于預(yù)測(cè)單元109的第二子集,若控制單元124認(rèn)為由第0級(jí) 線程所產(chǎn)生的中斷對(duì)預(yù)測(cè)單元109的第一子集的預(yù)測(cè)有效性造成極大的不利影響,則控制 單元124將存儲(chǔ)第一子集而非第二子集。優(yōu)選地,控制單元124在預(yù)測(cè)歷史記錄存儲(chǔ)器108 中保留對(duì)應(yīng)于不同藉由唯一的第3級(jí)識(shí)別碼所識(shí)別的第3級(jí)處理的多數(shù)登錄。在一實(shí)施例 中,第3級(jí)處理藉由其x86處理內(nèi)容(process-context)識(shí)別符所識(shí)別的第3級(jí)處理,例如 "Intel64andIA-32ArchitecturesSoftwareDeveloper'sManual" 第 3A冊(cè)第 4-46 至4-62頁(yè)第4. 10節(jié)所述的內(nèi)容。在另一實(shí)施例中,第3級(jí)處理藉由位于x86CR3控制寄存 器中的第3級(jí)處理所使用的頁(yè)面目錄的地址所識(shí)別。在一實(shí)施例中,控制單元124保留預(yù) 測(cè)歷史記錄存儲(chǔ)器108以作為先入先出緩沖器(first-in-first-outbuffer)。在另一實(shí) 施例中,控制單元124執(zhí)行更復(fù)雜的替代方案,例如最近最少使用(least-recently-used) 或者至少頻繁使用(least-frequently-used)。優(yōu)選地,當(dāng)微處理器100的功能性單元持續(xù) 處理第0級(jí)線程的指令時(shí),將預(yù)測(cè)歷史記錄132A?C存儲(chǔ)至預(yù)測(cè)歷史記錄存儲(chǔ)器108,以及 第0級(jí)線程執(zhí)行時(shí)間很可能比預(yù)測(cè)歷史記錄存儲(chǔ)時(shí)間還長(zhǎng)。然而,有利的是,因?yàn)轭A(yù)測(cè)歷史 記錄132A?C陣列并未被存?。磳懭耄┮岳塾?jì)預(yù)測(cè)歷史記錄或者進(jìn)行預(yù)測(cè)(即讀?。?使得不用于預(yù)測(cè)歷史記錄存儲(chǔ)以及第〇級(jí)指令處理之間爭(zhēng)用存儲(chǔ)預(yù)測(cè)歷史記錄132A?C 的存儲(chǔ)陣列的存取的讀取端口以及寫入端口,以處理僅進(jìn)行讀取以寫入預(yù)測(cè)歷史記錄的第 0級(jí)指令。此為有利的,因?yàn)橛靡岳塾?jì)存儲(chǔ)的預(yù)測(cè)歷史記錄的額外硬件的數(shù)量將被最小化, 原因?yàn)椴恍枰ù鎯?chǔ)陣列的額外的讀取端口。流程進(jìn)入方塊232。
[0065] 在方塊232,控制單元124檢測(cè)指示微處理器100操作在使用者特權(quán)等級(jí)(例如第 3級(jí))的事件,以及將控制自目前所運(yùn)行的線程轉(zhuǎn)換置不同的線程。流程進(jìn)入方塊433。
[0066] 在決策塊433,控制單元124決定轉(zhuǎn)換的新的第3級(jí)線程以及控制被轉(zhuǎn)換的舊的第 3級(jí)線程的處理是否部分相同。相對(duì)于前述的方塊413,控制單元124將藉由比較兩個(gè)線程 的處理識(shí)別碼以進(jìn)行決定,例如x86PCID。若新的第3級(jí)線程處理不同于舊的第3級(jí)線程 處理,流程進(jìn)入方塊435 ;反之,流程進(jìn)入方塊242。
[0067] 在方塊435,控制單元124自預(yù)測(cè)歷史記錄存儲(chǔ)器108將預(yù)測(cè)歷史記錄132A?C 恢復(fù)給新的第3級(jí)處理。即為控制單元124使用新的第3級(jí)處理識(shí)別碼以在預(yù)測(cè)歷史記錄 存儲(chǔ)器108中尋找預(yù)測(cè)歷史記錄,以及根據(jù)第3級(jí)處理識(shí)別碼自預(yù)測(cè)歷史記錄存儲(chǔ)器108 載入預(yù)測(cè)單元109的預(yù)測(cè)歷史記錄132A?C。優(yōu)選地,當(dāng)微處理器100的功能性單元持續(xù) 處理自執(zhí)行第0級(jí)至第3級(jí)的微編碼的指令時(shí),執(zhí)行恢復(fù)預(yù)測(cè)歷史記錄存儲(chǔ)器108的預(yù)測(cè) 歷史記錄132A?C。微編碼的執(zhí)行時(shí)間可為明顯的時(shí)間周期,以及可能較執(zhí)行預(yù)測(cè)歷史記 錄132A?C的恢復(fù)所需的時(shí)間還長(zhǎng),此為有利的,因?yàn)轭A(yù)測(cè)歷史記錄132A?C陣列并未被 存?。磳懭耄┮岳塾?jì)預(yù)測(cè)歷史記錄或者進(jìn)行預(yù)測(cè)(即讀取),使得不用于預(yù)測(cè)歷史記錄 存儲(chǔ)以及第〇級(jí)指令處理之間爭(zhēng)用存儲(chǔ)預(yù)測(cè)歷史記錄132A?C的存儲(chǔ)陣列的存取的讀取 端口以及寫入端口,以處理僅進(jìn)行恢復(fù)預(yù)測(cè)歷史記錄的第〇級(jí)指令。舉例來說,在一實(shí)施例 中,微編碼單元并未處理分支預(yù)測(cè)單元102,即為分支預(yù)測(cè)單元102并未對(duì)微編碼指令進(jìn)行 預(yù)測(cè)。舉另一例來說,在一實(shí)施例中,環(huán)過渡(ringtransition)微編碼并未存取系統(tǒng)存儲(chǔ) 器;因此,數(shù)據(jù)預(yù)取單元104并不需要對(duì)環(huán)過渡微編碼進(jìn)行數(shù)據(jù)預(yù)取,以及存儲(chǔ)沖突預(yù)測(cè)單 元106并不需要對(duì)環(huán)過渡微編碼進(jìn)行預(yù)測(cè)。有利的是,因?yàn)橛靡岳塾?jì)預(yù)測(cè)歷史記錄的恢復(fù) 所需的額外硬件的數(shù)量可被最小化,原因?yàn)椴恍枰诖鎯?chǔ)陣列上包括額外的寫入端口。流 程進(jìn)入方塊242。
[0068] 在方塊242,預(yù)測(cè)單元109恢復(fù)累計(jì)所對(duì)應(yīng)的預(yù)測(cè)歷史記錄132A?C,以及當(dāng)微處 理器100處理指令時(shí),利用預(yù)測(cè)歷史記錄132A?C進(jìn)行動(dòng)態(tài)預(yù)測(cè)。流程結(jié)束于方塊242。
[0069] 有利的是,新的第3級(jí)線程的指令的處理并未影響與舊的第3級(jí)線程有關(guān)的預(yù)測(cè) 歷史記錄132A?C,將使得兩個(gè)第3級(jí)線程具有較佳的預(yù)測(cè)準(zhǔn)確度。
[0070] 其他實(shí)施例可為圖3以及圖4的實(shí)施例的有效結(jié)合,使得控制單元124存儲(chǔ)以及 恢復(fù)與第〇級(jí)線程有關(guān)的預(yù)測(cè)歷史記錄132A?C,使控制單元124決定不暫停累計(jì)以及使 用預(yù)測(cè)歷史記錄132A?C,舉例來說,對(duì)相對(duì)長(zhǎng)的第0級(jí)線程和(或)根據(jù)在第0級(jí)線程和 (或)第3級(jí)處理的前一執(zhí)行實(shí)例期間的預(yù)測(cè)有效性以累計(jì)以及使用預(yù)測(cè)歷史記錄132A? C的第0級(jí)線程。如上所述,當(dāng)不需要累計(jì)歷史記錄132以及使用歷史記錄132進(jìn)行預(yù)測(cè)的 期間,微處理器100自第3級(jí)轉(zhuǎn)換至第0級(jí)(以及反之亦然)可能需要大量的時(shí)間周期;因 此,在這段期間控制單元124可有效但不明顯地自預(yù)測(cè)歷史記錄存儲(chǔ)器124存儲(chǔ)/恢復(fù)相 關(guān)的預(yù)測(cè)歷史記錄132A?C,如果有的話,將降低效能。在上述的實(shí)施例中,這可能是特別 有利的,可限制于自第0級(jí)轉(zhuǎn)換至第3級(jí)以及自第3級(jí)轉(zhuǎn)換自第0級(jí)所存儲(chǔ)以及恢復(fù)的預(yù) 測(cè)歷史記錄132A?C的數(shù)量,以避免在完成存儲(chǔ)和恢復(fù)之前停止微處理器100的指令的執(zhí) 行。
[0071] 此外,盡管所述的實(shí)施例中微處理器100選擇性地暫停預(yù)測(cè)歷史記錄的累計(jì),以 及暫停利用預(yù)測(cè)歷史記錄進(jìn)行預(yù)測(cè)以響應(yīng)自一特權(quán)等級(jí)轉(zhuǎn)換至不同的特權(quán)等級(jí)的線程,在 其他實(shí)施例中微處理器100也可選擇性地暫?;蛘呋謴?fù)預(yù)測(cè)歷史記錄的累計(jì),以及使用預(yù) 測(cè)歷史記錄進(jìn)行預(yù)測(cè)以響應(yīng)線程在相同特權(quán)等級(jí)之間的轉(zhuǎn)換。舉例來說,微處理器100可 藉由檢測(cè)不包括特權(quán)等級(jí)的改變的事件以檢測(cè)線程轉(zhuǎn)換,以及決定暫?;蛘呋謴?fù)預(yù)測(cè)歷史 記錄的累計(jì),并響應(yīng)使用預(yù)測(cè)歷史記錄進(jìn)行預(yù)測(cè)。舉例來說,微處理器100可利用一特定IP 值以及在一些具有其他架構(gòu)狀態(tài)的特定值的情況下簡(jiǎn)單地檢測(cè)指令的執(zhí)行(例如子程序 調(diào)用(subroutinecall)或者恢復(fù)指令),例如通用目的寄存器值。舉另一例子來說,微處 理器100可檢測(cè)一序列的指令和(或)IP值。
[0072] 必須了解的是,在此所述有關(guān)本發(fā)明的實(shí)施例僅用以作為示范,并非以此為限。在 計(jì)算機(jī)相關(guān)領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可以廣義的方式作適當(dāng)?shù)?更動(dòng)和替換。舉例來說,可致能軟件,舉例來說,裝置的功能、制作、模塊、模擬、敘述和(或) 測(cè)試,以及在此所述的方法??山逵赏ㄓ玫某绦蛘Z言(例如C、C++)、硬件描述語言(HDL) (包括VerilogHDUVHDL等)、或者其他可用的程序?qū)崿F(xiàn)本發(fā)明。上述的軟件可執(zhí)行在任 意已知的計(jì)算機(jī)可執(zhí)行媒體,例如磁帶、半導(dǎo)體、磁碟或者光盤(例如⑶-R0M、DVD-R0M等), 網(wǎng)際網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、或者其他通信媒介。在此所述的裝置以及方法的實(shí)施例可 包括在半導(dǎo)體知識(shí)產(chǎn)權(quán)內(nèi)核中,例如微處理器內(nèi)核(例如在HDL中實(shí)施或指定),以及在集 成電路的產(chǎn)品中轉(zhuǎn)換為硬件。此外,在此所述的裝置以及方法可通過硬件以及軟件的結(jié)合 實(shí)現(xiàn)。因此,本發(fā)明并不能限制于此所述的任意實(shí)施例,本發(fā)明的范圍以及精神根據(jù)后附的 權(quán)利要求書所定義以及限制。特別的是,本發(fā)明可通過通用目的計(jì)算機(jī)的微處理器裝置實(shí) 現(xiàn)。最后,上述的實(shí)施例以足夠的細(xì)節(jié)敘述使所屬【技術(shù)領(lǐng)域】的技術(shù)人員能藉由上述的描述, 在不脫離本發(fā)明的精神以及范圍內(nèi),可做些許結(jié)構(gòu)上以及邏輯上的改變,以實(shí)施本發(fā)明所 揭露的系統(tǒng)以及方法。
【權(quán)利要求】
1. 一種微處理器,包括: 預(yù)測(cè)單元;以及 控制單元,用以: 控制上述預(yù)測(cè)單元累計(jì)由上述微處理器所執(zhí)行的指令的特性的一歷史記錄,以及當(dāng)上 述微處理器運(yùn)行一第一線程時(shí),根據(jù)上述歷史記錄進(jìn)行與后續(xù)指令有關(guān)的預(yù)測(cè); 檢測(cè)從運(yùn)行上述第一線程至運(yùn)行與上述第一線程相異的一第二線程之間的第一轉(zhuǎn) 變; 檢測(cè)上述第二線程的識(shí)別碼是否存在; 當(dāng)運(yùn)行上述第二線程,且上述第二線程的識(shí)別碼不存在時(shí),控制上述預(yù)測(cè)單元選擇性 地暫停累計(jì)上述歷史記錄,以及選擇性地暫停利用上述歷史記錄進(jìn)行上述預(yù)測(cè); 搜集有關(guān)上述第二線程的信息; 檢測(cè)從運(yùn)行上述第二線程至運(yùn)行第三線程的第二轉(zhuǎn)變; 登錄并更新所搜集的與上述第二線程有關(guān)的信息;以及 控制上述預(yù)測(cè)單元恢復(fù)累計(jì)上述歷史記錄及恢復(fù)利用上述歷史記錄進(jìn)行上述預(yù)測(cè)。
2. 如權(quán)利要求1所述的微處理器,其中上述控制單元還用以根據(jù)下列清單的一個(gè)或以 上以決定上述第二線程的上述識(shí)別碼:造成上述第一轉(zhuǎn)變的事件的類型、當(dāng)檢測(cè)到上述事 件時(shí)上述微處理器的架構(gòu)狀態(tài)、以及上述兩者的結(jié)合。
3. 如權(quán)利要求2所述的微處理器,其中造成上述第一轉(zhuǎn)變的上述事件的上述類型來自 下列清單:系統(tǒng)調(diào)用指令的執(zhí)行、軟件中斷指令的執(zhí)行、內(nèi)部特權(quán)或者任務(wù)切或程序調(diào)用的 執(zhí)行、以及特殊狀況的檢測(cè)。
4. 如權(quán)利要求2所述的微處理器,其中當(dāng)檢測(cè)到上述事件時(shí),上述微處理器的上述架 構(gòu)狀態(tài)來自下列清單:一個(gè)或以上的上述微處理器的通用目的寄存器的值、一個(gè)或以上的 上述微處理器的模塊特定寄存器的值、上述微處理器的指令指針寄存器的值、上述微處理 器的中斷向量的值、以及上述的結(jié)合。
5. 如權(quán)利要求1所述的微處理器,其中當(dāng)運(yùn)行在上述第二線程時(shí),不使用上述歷史記 錄進(jìn)行預(yù)測(cè),而進(jìn)行靜態(tài)預(yù)測(cè)。
6. -種操作方法,適用于微處理器,包括: 累計(jì)由上述微處理器所執(zhí)行的指令的特性的歷史記錄,以及當(dāng)上述微處理器運(yùn)行第一 線程時(shí),根據(jù)上述歷史記錄進(jìn)行與后續(xù)指令有關(guān)的預(yù)測(cè); 檢測(cè)從運(yùn)行上述第一線程至運(yùn)行與上述第一線程相異的第二線程之間的第一轉(zhuǎn)變 檢測(cè)上述第二線程的識(shí)別碼是否存在;;以及 當(dāng)運(yùn)行上述第二線程,且上述第二線程的上述識(shí)別碼不存在時(shí),選擇性地暫停累計(jì)上 述歷史記錄,以及選擇性地暫停利用上述歷史記錄進(jìn)行上述預(yù)測(cè); 搜集有關(guān)上述第二線程的信息; 檢測(cè)從運(yùn)行上述第二線程至運(yùn)行第三線程的第二轉(zhuǎn)變; 登錄并更新所搜集的與上述第二線程有關(guān)的信息;以及 上述預(yù)測(cè)單元恢復(fù)累計(jì)上述歷史記錄及恢復(fù)利用上述歷史記錄進(jìn)行上述預(yù)測(cè)。
7. 如權(quán)利要求6所述的操作方法,其中當(dāng)運(yùn)行在上述第二線程時(shí),不使用上述歷史記 錄進(jìn)行預(yù)測(cè),而進(jìn)行靜態(tài)預(yù)測(cè)。
8. 如權(quán)利要求6所述的微處理器,還包括用以根據(jù)下列清單的一個(gè)或以上以決定上述 第二線程的上述識(shí)別碼:造成上述第一轉(zhuǎn)變的事件的類型、當(dāng) 檢測(cè)到上述事件時(shí)上述微處理器的架構(gòu)狀態(tài)、以及上述兩者的結(jié)合。
9. 如權(quán)利要求8所述的微處理器,其中造成上述第一轉(zhuǎn)變的上述事件的上述類型來自 下列清單:系統(tǒng)調(diào)用指令的執(zhí)行、軟件中斷指令的執(zhí)行、內(nèi)部特權(quán)或者任務(wù)切或程序調(diào)用的 執(zhí)行、以及特殊狀況的檢測(cè)。
10. 如權(quán)利要求8所述的微處理器,其中當(dāng)檢測(cè)到上述事件時(shí),上述微處理器的上述架 構(gòu)狀態(tài)來自下列清單:一個(gè)或以上的上述微處理器的通用目的寄存器的值、一個(gè)或以上的 上述微處理器的模塊特定寄存器的值、上述微處理器的指令指針寄存器的值、上述微處理 器的中斷向量的值、以及上述的結(jié)合。
【文檔編號(hào)】G06F9/38GK104484158SQ201410718900
【公開日】2015年4月1日 申請(qǐng)日期:2014年6月6日 優(yōu)先權(quán)日:2013年6月10日
【發(fā)明者】R.E.虎克, T.派克斯, J.M.吉爾 申請(qǐng)人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
利辛县| 锡林郭勒盟| 金塔县| 越西县| 文山县| 府谷县| 纳雍县| 丰顺县| 诸城市| 临沧市| 宜都市| 丹阳市| 宣汉县| 仁布县| 铜山县| 原平市| 探索| 通江县| 丹寨县| 凌海市| 巴青县| 六安市| 八宿县| 桃园县| 乐山市| 繁昌县| 丹东市| 庆元县| 溆浦县| 平武县| 河池市| 清镇市| 綦江县| 东明县| 边坝县| 南陵县| 永安市| 栖霞市| 若尔盖县| 福海县| 黄山市|