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

用于中止軟件線程的方法和系統(tǒng)的制作方法

文檔序號:6562521閱讀:196來源:國知局
專利名稱:用于中止軟件線程的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,并且尤其涉及能夠同時(shí)執(zhí)行多個(gè)軟件線程的計(jì)算機(jī)。本發(fā)明還尤其涉及一種用于在不調(diào)用操作系統(tǒng)內(nèi)核的情況下中止軟件線程的系統(tǒng)和方法。
背景技術(shù)
許多現(xiàn)代計(jì)算機(jī)系統(tǒng)能夠多重處理軟件。每個(gè)計(jì)算機(jī)程序包含被稱為進(jìn)程的多個(gè)子單元。每個(gè)進(jìn)程由多個(gè)線程組成。每個(gè)線程能夠在一定程度上自主于進(jìn)程中的其它線程來執(zhí)行。即,每個(gè)線程能夠就好像它是“小進(jìn)程”那樣被執(zhí)行,所述“小進(jìn)程”可以調(diào)用計(jì)算機(jī)的操作系統(tǒng)(operation system OS)來獨(dú)立地執(zhí)行。
在第一線程執(zhí)行期間,該線程常常必須等待在所述第一線程可能完成執(zhí)行之前所出現(xiàn)的某些異步事件。這種異步事件包括接收數(shù)據(jù)(包括作為在相同或不同進(jìn)程中另一線程的輸出的數(shù)據(jù))、中斷或異常。
中斷是與當(dāng)出現(xiàn)所述中斷時(shí)所執(zhí)行的指令不相關(guān)聯(lián)的異步中斷事件。即,所述中斷常常由處理器之外的某些事件引起,諸如來自輸入/輸出(I/O)設(shè)備的輸入、來自另一處理器的操作調(diào)用等。其它中斷例如可能由計(jì)時(shí)器的期滿而內(nèi)部引起,所述計(jì)時(shí)器用于控制任務(wù)切換。
異常是根據(jù)指令執(zhí)行而直接出現(xiàn)的同步事件,所述指令在出現(xiàn)異常時(shí)執(zhí)行。即,異常是來自處理器內(nèi)部的事件,諸如運(yùn)算溢出、定時(shí)的維護(hù)檢查、內(nèi)部性能監(jiān)視器、機(jī)載工作負(fù)荷管理器等。典型情況下,異常要遠(yuǎn)比中斷更為頻繁。
當(dāng)前,當(dāng)出現(xiàn)異步事件時(shí),線程調(diào)用計(jì)算機(jī)的OS來開始等待/恢復(fù)例程。然而,由于OS必須實(shí)現(xiàn)系統(tǒng)調(diào)用和進(jìn)程/線程分派,所以要求所述OS中的大量指令來實(shí)現(xiàn)此能力。該操作在時(shí)間和帶寬上給計(jì)算機(jī)帶來了繁重的開銷,因而減慢了進(jìn)程的執(zhí)行,減慢了所述計(jì)算機(jī)的總性能,并且在線程執(zhí)行之間產(chǎn)生更長的等待時(shí)間。

發(fā)明內(nèi)容
鑒于現(xiàn)有技術(shù)中的上述問題,給出了一種用于中止進(jìn)程中的軟件線程的方法、系統(tǒng)和計(jì)算機(jī)可用介質(zhì)。把指令從所述進(jìn)程中的第一軟件線程發(fā)送到處理單元中的指令排序單元(Instruction SequencingUnit ISU)。然后把所述指令從所述第一軟件線程發(fā)送到來自所述ISU的多個(gè)指令保持鎖存器中的第一指令保持鎖存器。然后有選擇地凍結(jié)第一指令保持鎖存器,所述第一指令保持鎖存器包含有來自第一軟件線程的指令,以致當(dāng)所述第一指令保持鎖存器被凍結(jié)時(shí),來自所述第一軟件線程的指令不能被傳遞到處理器核心中的執(zhí)行單元。這使整個(gè)第一軟件線程同樣地被凍結(jié),同時(shí)允許進(jìn)程中的其它軟件線程繼續(xù)執(zhí)行。因而,可以在不(即獨(dú)立于)調(diào)用操作系統(tǒng)內(nèi)核的情況下中止軟件線程。
依照下面的詳細(xì)描述,本發(fā)明的上述及附加目的、特征和優(yōu)點(diǎn)將變得更加清楚。


在附加權(quán)利要求中闡明了被認(rèn)為是本發(fā)明特性的新穎特征。然而最好結(jié)合附圖參考以下說明性實(shí)施例的詳細(xì)描述來理解本發(fā)明本身以及所使用的優(yōu)選模式、其進(jìn)一步的目的和優(yōu)點(diǎn),其中圖1a是進(jìn)程的指令通過指令保持鎖存器(Instruction HoldingLatch IHL)、執(zhí)行單元(Execution Unit EU)和輸出而流動(dòng)的流程的高級示例;圖1b描繪了其中軟件線程可以被中止/凍結(jié)的示例性處理單元的框圖;圖1c圖示了在圖1b中所示出的處理單元的附加細(xì)節(jié);
圖2描繪了在圖1c中所示出的管理程序級寄存器的附加細(xì)節(jié);圖3是開始中止/凍結(jié)軟件線程的示例性步驟的流程圖;圖4圖示了用于凍結(jié)去往IHL和EU的時(shí)鐘信號的示例性硬件;和圖5描繪了用于中止/凍結(jié)軟件線程的軟件的高級視圖。
具體實(shí)施例方式
現(xiàn)在參考附圖,圖1a圖示了常規(guī)的處理單元100的一部分。在處理單元100所描繪的部分內(nèi)是指令排序單元(ISU)102,所述指令排序單元102包括一級(L1)指令高速緩存器(I-Cache)104和指令保持鎖存器(IHL)106。ISU 102被耦合到執(zhí)行單元(EU)108。
為了圖示,假定進(jìn)程包括被示為指令1-5的五個(gè)指令(即,操作數(shù))。進(jìn)程的第一指令(指令1)已經(jīng)被加載到EU 108中,所述指令1在EU 108中被執(zhí)行。進(jìn)程的第二指令(指令2)已經(jīng)被加載到IHL106中,所述指令2在IHL 106中等待被加載到EU 108中。后三個(gè)指令(指令3-5)仍然被保持在L1I-Cache 104中,它們最后會(huì)從所述L1I-Cache 104中被順序地加載到IHL 106中。
圖1b提供了處理單元100的附加細(xì)節(jié)。如所描述,ISU 102具有多個(gè)IHL 106a-n。每個(gè)IHL 106能夠存儲(chǔ)來自相同進(jìn)程或不同進(jìn)程的線程的指令。在優(yōu)選實(shí)施例中,每個(gè)IHL 106專用于特定的一個(gè)或多個(gè)EU 108。例如,IHL 106n可以只向EU 108b發(fā)送指令,而IHL106a和106b只向EU 108a發(fā)送指令。
處理單元100還包括加載/存儲(chǔ)單元(Load/Store Unit LSU)110,所述加載/存儲(chǔ)單元110從ISU 102提供指令并且從L1數(shù)據(jù)高速緩存器(D-Cache)112中提供數(shù)據(jù)(將被來自ISU 102的指令所操縱)。從計(jì)算機(jī)系統(tǒng)中的系統(tǒng)存儲(chǔ)器114經(jīng)由存儲(chǔ)器總線116來填充L1 I-Cache 104和L1 D-Cache 112,其中所述計(jì)算機(jī)系統(tǒng)支持并使用處理單元100。執(zhí)行單元108可以包括浮點(diǎn)執(zhí)行單元、定點(diǎn)執(zhí)行單元、分支執(zhí)行單元等。
現(xiàn)在參考圖1c,其示出了處理單元100的附加細(xì)節(jié)。處理單元100包括芯片內(nèi)多級高速緩存器體系,分別包括統(tǒng)一的二級(L2)高速緩存器117和分叉的一級(L1)指令(I)和數(shù)據(jù)(D)高速緩存器104和112。高速緩存器117、104和112提供了對高速緩存線的低等待時(shí)間的訪問,所述高速緩存線對應(yīng)于系統(tǒng)存儲(chǔ)器114中的存儲(chǔ)單元。
響應(yīng)于存在于取指令地址寄存器(Instruction Fetch AddressRegister IFAR)118中的有效地址(effective address EA)來從L1 I-Cache 104取出指令以便處理。在每個(gè)周期期間,可以從以下三個(gè)源之一中把新的取指令地址加載到IFAR 118中分支預(yù)測單元(BranchPrediction Unit BPU)120,用于提供由預(yù)測條件分支指令所產(chǎn)生的推測性目標(biāo)路徑和順序的地址;全局完成表(Global Completion TableGCT)122,用于提供轉(zhuǎn)儲(chǔ)清除(flush)和中斷地址;或分支執(zhí)行單元(Branch Execution Unit BEU)124,用于提供由分析所預(yù)測的條件分支指令所產(chǎn)生的非推測性地址。與BPU 120相關(guān)聯(lián)的是分支歷史記錄表(Branch History Table BHT)126,其中記錄了條件分支指令的分析以幫助預(yù)測將來的分支指令。
諸如IFAR 118內(nèi)的取指令地址之類的有效地址(EA)是由處理器所產(chǎn)生的指令或數(shù)據(jù)的地址。EA指定了段寄存器和段內(nèi)的偏移信息。為了訪問存儲(chǔ)器中的數(shù)據(jù)(包括指令),EA通過一級或多級轉(zhuǎn)換被轉(zhuǎn)化為實(shí)際地址(Real Address RA),所述實(shí)際地址與存儲(chǔ)有數(shù)據(jù)或指令的物理位置相關(guān)聯(lián)。
在處理單元100內(nèi),由存儲(chǔ)器管理單元(Memory ManagementUnits MMU)和相關(guān)聯(lián)的地址轉(zhuǎn)換設(shè)備來執(zhí)行有效到實(shí)際地址的轉(zhuǎn)換。優(yōu)選地是,提供獨(dú)立的MMU來用于指令訪問和數(shù)據(jù)訪問。在圖1c中,為了清楚起見圖示了單個(gè)MMU 128,只示出了到ISU 102的連接。然而應(yīng)當(dāng)理解的是,MMU 128優(yōu)選還包括到加載/存儲(chǔ)單元(LSU)110a和110b及為管理存儲(chǔ)器訪問所必須的其它組件的連接(未示出)。MMU 128包括數(shù)據(jù)轉(zhuǎn)換后備緩沖器(Data TranslationLookaside Buffer DTLB)130和指令轉(zhuǎn)換后備緩沖器(instructiontranslation lookaside buffer ITLB)132。每個(gè)TLB包含最近引用的頁面表?xiàng)l目,訪問所述頁面表?xiàng)l目以便把用于數(shù)據(jù)(DTLB 130)或指令(ITLB 132)的EA轉(zhuǎn)化為RA。從ITLB 132中最近引用的EA到RA的轉(zhuǎn)換被高速緩存到有效到實(shí)際地址表(Effective-to-RealAddress Table ERAT)134中。
如果命中/未命中邏輯136確定在由ERAT 134轉(zhuǎn)換在IFAR 118中所包含的EA并且查找I-Cache目錄(I-cache directory IDIR)138中的實(shí)際地址(RA)之后,對應(yīng)于IFAR 118中EA的指令的高速緩存線并未存在于L1 I-Cache 104中,那么命中/未命中邏輯136經(jīng)由I-Cache請求總線140向L2高速緩存器116提供RA作為請求地址。這種請求地址也可以由L2高速緩存器116內(nèi)的預(yù)取邏輯根據(jù)最近訪問模式來產(chǎn)生。響應(yīng)于請求地址,L2高速緩存器116輸出指令的高速緩存線,所述指令經(jīng)由I-Cache重新加載總線144被加載到預(yù)取緩沖器(Prefetch Buffer PB)142和L1 I-Cache 104中,可能在穿過可選的預(yù)解碼邏輯146之后。
一旦由IFAR 118中的EA所指定的高速緩存線存在于L1高速緩存器104中,L1 I-Cache 104就向分支預(yù)測單元(BPU)120和取指令緩存器(Instruction Fetch Buffer IFB)148輸出所述高速緩存線。BPU 120掃描用于分支指令的指令的高速緩存線并且預(yù)測條件分支指令的結(jié)果,如果存在的話。按照分支預(yù)測,如上所述BPU 120向IFAR 118提供推測性的取指令地址,并且把所述預(yù)測傳遞到分支指令隊(duì)列150以便當(dāng)隨后由分支執(zhí)行單元(BEU)124分析所述條件分支指令時(shí)可以確定所述預(yù)測的準(zhǔn)確性。
IFB 148暫時(shí)地緩沖從L1 I-Cache 104所接收的指令的高速緩存線,直到指令的高速緩存線可以被指令轉(zhuǎn)換單元(InstructionTranslation Unit ITU)152轉(zhuǎn)換。在所圖示的處理單元100的實(shí)施例中,ITU 152把來自用戶指令集體系結(jié)構(gòu)(User Instruction SetArchitecture UISA)指令的指令轉(zhuǎn)換為可能不同數(shù)目的內(nèi)部ISA(Internal ISA IISA)指令,所述內(nèi)部ISA可由處理單元100的執(zhí)行單元直接執(zhí)行。例如可以參考在只讀存儲(chǔ)器(ROM)模板中所存儲(chǔ)的微代碼來執(zhí)行這種轉(zhuǎn)換。在至少一些實(shí)施例中,UISA到IISA的轉(zhuǎn)換導(dǎo)致IISA指令與UISA指令的數(shù)目不同和/或IISA指令與相應(yīng)的UISA指令的長度不同。然后由全局完成表(GCT)122把所產(chǎn)生的IISA指令分配到指令組,允許所述指令組的成員彼此之間相互無序地分派并執(zhí)行。GCT 122跟蹤每個(gè)指令組,其執(zhí)行尚需由至少一個(gè)相關(guān)聯(lián)的EA來完成,所述EA優(yōu)選為指令組中最舊指令的EA。
在UISA到IISA指令轉(zhuǎn)換之后,根據(jù)指令類型向指令保持鎖存器106a-n之一分派指令,可能是無序的。即,向指令保持鎖存器106a分派分支指令及其它條件寄存器(Condition Register CR)修改指令,向指令保持鎖存器106b和106c之一分派定點(diǎn)和加載-存儲(chǔ)指令,并且向指令保持鎖存器106n分派浮點(diǎn)指令。然后由CR映射器154、鏈路和計(jì)數(shù)(Link and Count LC)寄存器映射器156、異常寄存器(exception register XR)映射器158、通用寄存器(General-Purpose Register GPR)映射器160和浮點(diǎn)寄存器(Floating-PointRegister FPR)映射器162中適當(dāng)?shù)囊粋€(gè)來把要求重命名寄存器的每個(gè)指令分配到一個(gè)或多個(gè)重命名寄存器,所述重命名寄存器用于暫時(shí)地存儲(chǔ)執(zhí)行結(jié)果。
然后所分派的指令被暫時(shí)地置于CR發(fā)布隊(duì)列(CR Issue QueueCRIQ)164、分支發(fā)布隊(duì)列(Branch Issue Queue BIQ)150、定點(diǎn)發(fā)布隊(duì)列(Fixed-point Issue Queues FXIQ)166a和166b和浮點(diǎn)發(fā)布隊(duì)列(Floating-point Issue Queues FPIQ)168a和168b中適當(dāng)?shù)囊粋€(gè)。只要觀察到數(shù)據(jù)相關(guān)性和反相關(guān)性,就可以抓住機(jī)會(huì)地把指令從發(fā)布隊(duì)列164、150、166a-b和168a-b發(fā)布到處理單元100的執(zhí)行單元以便執(zhí)行。然而,在需要重新發(fā)布任何指令的情況下,指令被維持在發(fā)布隊(duì)列164、150、166a-b和168a-b中直到指令執(zhí)行完成并且寫回所產(chǎn)生的數(shù)據(jù)(如果存在的話)。
如所圖示,處理器核心170的執(zhí)行單元包括用于執(zhí)行CR修改指令的CR單元(CR Unit CRU)172、用于執(zhí)行分支指令的分支執(zhí)行單元(BEU)124、用于執(zhí)行定點(diǎn)指令的兩個(gè)定點(diǎn)單元(Fixed-pointUnits FXU)174a和174b、用于執(zhí)行加載和存儲(chǔ)指令的兩個(gè)加載-存儲(chǔ)單元(LSU)110a和110b以及用于執(zhí)行浮點(diǎn)指令的兩個(gè)浮點(diǎn)單元(Floating-point Units FPU)176a和176b。處理器核心170中的每個(gè)執(zhí)行單元優(yōu)選被實(shí)現(xiàn)為具有多個(gè)流水線級的執(zhí)行流水線。
在處理器核心170中的一個(gè)執(zhí)行單元內(nèi)的執(zhí)行期間,指令從被耦合到所述執(zhí)行單元的寄存器文件內(nèi)的一個(gè)或多個(gè)體系結(jié)構(gòu)和/或重命名寄存器中接收操作數(shù),如果存在的話。當(dāng)執(zhí)行CR修改或CR相關(guān)指令時(shí),CRU 172和BEU 124訪問CR寄存器文件178,所述CR寄存器文件178在優(yōu)選實(shí)施例中包含CR和多個(gè)CR重命名寄存器,所述CR重命名寄存器均包括由一個(gè)或多個(gè)比特形成的多個(gè)不同字段。在這些字段之間是LT、GT和EQ字段,所述字段分別表明值(典型情況下為指令的結(jié)果或操作數(shù))小于零、大于零還是等于零。鏈路和計(jì)數(shù)寄存器(Link and count register LCR)寄存器文件180均包含計(jì)數(shù)寄存器(Count Register CTR)、鏈路寄存器(Link Register LR)和重命名寄存器,借此BEU 124還可以分析條件分支以便獲得路徑地址。同步的通用寄存器(GPR)182a和182b復(fù)制寄存器文件、存儲(chǔ)由FXU 174a和174b以及LSU 110a和110b所訪問并生成的定點(diǎn)和整數(shù)值。浮點(diǎn)寄存器文件(FPR)184包含由FPU 176a和176b執(zhí)行浮點(diǎn)指令并且由LSU 110a和110b執(zhí)行浮點(diǎn)加載指令所產(chǎn)生的浮點(diǎn)值,所述浮點(diǎn)寄存器文件(FPR)184像GPR 182a和182b一樣也可以被實(shí)現(xiàn)為同步寄存器的復(fù)制集。
在執(zhí)行單元完成指令執(zhí)行之后,所述執(zhí)行通知GCT 122,所述GCT 122依照程序次序來調(diào)度完成指令。為了完成由CRU 172、FXU174a和174b或FPU 176a和176b之一所執(zhí)行的指令,GCT 122向執(zhí)行單元發(fā)信號,所述執(zhí)行單元從所分配的重命名寄存器向適當(dāng)寄存器文件內(nèi)的一個(gè)或多個(gè)體系結(jié)構(gòu)寄存器寫回所產(chǎn)生的數(shù)據(jù),如果存在的話。然后從發(fā)布隊(duì)列中移除指令,并且一旦其指令組內(nèi)的所有指令已經(jīng)完成,那么從GCT 122中移除所述指令。然而不同地完成其它類型的指令。
當(dāng)BEU 124分析條件分支指令并且確定應(yīng)當(dāng)采取的執(zhí)行路徑的路徑地址時(shí),相對于由BPU 120所預(yù)測的推測性路徑地址來比較所述路徑地址。如果所述路徑地址匹配,那么不再要求進(jìn)一步的處理。然而如果所計(jì)算的路徑地址與所預(yù)測的路徑地址不匹配,那么BEU 124向IFAR 118提供正確的路徑地址。在任何一種情況下,然后可以從BIQ150中移除分支指令,并且當(dāng)相同指令組內(nèi)的所有其它指令已經(jīng)完成時(shí),從GCT 122中移除分支指令。
在執(zhí)行加載指令之后,通過執(zhí)行所述加載指令所計(jì)算的有效地址被數(shù)據(jù)ERAT(未圖示)轉(zhuǎn)換為實(shí)際地址繼而被作為請求地址提供到L1 D-Cache 112。在此,加載指令被從FXIQ 166a或166b中被移除并且置于加載重排序隊(duì)列(Load Reorder Queue LRQ)186中直到執(zhí)行所表明的加載。如果請求地址在L1 D-Cache 112中未命中,那么所述請求地址被置于加載未命中隊(duì)列(Load Miss Queue LMQ)188中,據(jù)此從L2高速緩存器116中獲取所請求的數(shù)據(jù),并且失敗的話,那么從另一處理單元100或系統(tǒng)存儲(chǔ)器114(在圖1b中所示)中獲取。LRQ 186探聽專用的訪問請求(例如,帶有修改意圖的讀取),在互連結(jié)構(gòu)上轉(zhuǎn)儲(chǔ)清除或殺死運(yùn)行中的負(fù)載,并且如果出現(xiàn)命中,那么取消并重新發(fā)布加載指令。類似地利用存儲(chǔ)隊(duì)列(Store QueueSTQ)190來完成存儲(chǔ)指令,在執(zhí)行所述存儲(chǔ)指令之后把用于存儲(chǔ)的有效地址加載到所述存儲(chǔ)隊(duì)列190中。數(shù)據(jù)可以從STQ 190被存儲(chǔ)到L1 D-Cache 112和/或L2高速緩存器116。
處理單元100還包括鎖存器凍結(jié)寄存器(Latch FreezingRegister LFR)199。如在下面附加細(xì)節(jié)中所描述,LFR 199包含掩碼比特,用于控制特定的IHL 106是否能夠接收時(shí)鐘信號。如果暫時(shí)地阻塞到特定IHL 106的時(shí)鐘信號,那么IHL 106以及使用該IHL及其伴隨執(zhí)行單元的指令/線程被暫時(shí)凍結(jié)。
處理器狀態(tài)處理器的狀態(tài)包括在特定時(shí)間所存儲(chǔ)的數(shù)據(jù)、指令和硬件狀態(tài),并且這里被定義為“硬”或“軟”?!坝病睜顟B(tài)被定義為處理器內(nèi)的信息,處理器在體系結(jié)構(gòu)上要求所述信息從進(jìn)程的當(dāng)前點(diǎn)執(zhí)行所述進(jìn)程。相比之下,“軟”狀態(tài)被定義為處理器內(nèi)的信息,所述信息可能會(huì)改進(jìn)進(jìn)程執(zhí)行的效率,但是并不要求達(dá)到體系結(jié)構(gòu)上正確的結(jié)果。在圖1c的處理單元100中,硬狀態(tài)包括用戶級寄存器的內(nèi)容,所述用戶級寄存器諸如CRR 178、LCR 180、GPR 182a-b、FPR 184以及管理程序級寄存器192。處理單元100的軟狀態(tài)包括諸如L-1 I-Cache 104、L-1D-Cache 112的內(nèi)容之類的“性能關(guān)鍵”信息、諸如DTLB 130和ITLB132之類的地址轉(zhuǎn)換信息和諸如BHT 126和L2高速緩存器116的所有或部分內(nèi)容之類的不那么關(guān)鍵的信息。
在一個(gè)實(shí)施例中,硬和軟狀態(tài)被存儲(chǔ)到(移動(dòng)到)如這里所描述的寄存器。然而在優(yōu)選實(shí)施例中,由于處理凍結(jié)指令(和線程)的硬件被掛起(凍結(jié)),所以硬和軟狀態(tài)簡單地“保持在原地”,以致所述硬和軟狀態(tài)同樣地保持凍結(jié)直到伴隨的硬件被解凍。
中斷處理機(jī)第一級中斷處理機(jī)(First Level Interrupt Handlers FLIH)和第二級中斷處理機(jī)(Second Level Interrupt Handlers SLIH)可以被存儲(chǔ)在系統(tǒng)存儲(chǔ)器中并且當(dāng)被調(diào)用時(shí)填充高速緩沖存儲(chǔ)器體系。然而,從系統(tǒng)存儲(chǔ)器中調(diào)用FLIH或SLIH可能會(huì)導(dǎo)致很長的訪問等待時(shí)間(用于在高速緩存器未命中之后從系統(tǒng)存儲(chǔ)器中定位并加載所述FLIH/SLIH)。類似地,利用FLIH/SLIH指令和數(shù)據(jù)來填充高速緩沖存儲(chǔ)器用隨后進(jìn)程所不需要的數(shù)據(jù)和指令會(huì)“污染”高速緩存器。
為了減少FLIH和SLIH的訪問等待時(shí)間并且為了避免高速緩存器污染,在優(yōu)選實(shí)施例中,處理單元100把至少一些FLIH和SLIH存儲(chǔ)到特定的片上存儲(chǔ)器(例如,閃速只讀存儲(chǔ)器(ROM)194)中。FLIH和SLIH可以在制造時(shí)被燒錄進(jìn)閃速ROM 194中,或者可以在制造之后通過閃速編程被燒入。當(dāng)中斷被處理單元100接收時(shí),直接從閃速ROM 194而不是從系統(tǒng)存儲(chǔ)器114或包括L2高速緩存器116的高速緩存器體系來訪問FLIH/SLIH。
SLIH預(yù)測通常,當(dāng)在處理單元100中出現(xiàn)中斷時(shí),F(xiàn)LIH被調(diào)用,所述FLIH然后調(diào)用SLIH,所述SLIH完成中斷處理。哪個(gè)SLIH被調(diào)用并且該SLIH怎樣執(zhí)行會(huì)改變,并且取決于各種因素,包括所傳遞的參數(shù)、條件狀態(tài)等。因?yàn)槌绦蛐袨榭梢允侵貜?fù)的,所以事實(shí)常常是中斷會(huì)出現(xiàn)多次,導(dǎo)致執(zhí)行了相同的FLIH和SLIH。從而,本發(fā)明識(shí)別到可以通過預(yù)測重復(fù)中斷處理進(jìn)程的控制圖并且通過在不首先執(zhí)行FLIH的情況下推測地執(zhí)行部分SLIH,來加速用于隨后出現(xiàn)中斷的中斷處理。
為了便于中斷處理預(yù)測,處理單元100配備有中斷處理機(jī)預(yù)測表(Interrupt Handler Prediction Table IHPT)196。IHPT 196包含了多個(gè)FLIH的基地址(中斷向量)列表。與每個(gè)FLIH地址相關(guān)聯(lián),IHPT 196存儲(chǔ)一個(gè)或多個(gè)SLIH地址的各自組,所述SLIH地址先前已經(jīng)被相關(guān)聯(lián)的FLIH調(diào)用。當(dāng)利用特殊FLIH的基地址來訪問IHPT196時(shí),預(yù)測邏輯(Prediction Logic PL)198選擇與IHPT 196中所指定的FLIH地址相關(guān)聯(lián)的SLIH地址作為可能被所指定FLIH調(diào)用的SLIH地址。注意,雖然所圖示的預(yù)測SLIH地址可以是SLIH的基地址,然而所述地址也可以是指令在所述SLIH內(nèi)開始點(diǎn)(例如,在B點(diǎn))之后的地址。
預(yù)測邏輯(PL)198使用用于預(yù)測哪個(gè)SLIH會(huì)被所指定FLIH調(diào)用的算法。在優(yōu)選實(shí)施例中,此算法挑選與所指定FLIH相關(guān)聯(lián)的SLIH,其最近被使用得最多。在另一優(yōu)選實(shí)施例中,此算法挑選與所指定FLIH相關(guān)聯(lián)的SLIH,其在歷史上被最為頻繁地調(diào)用。在任何一個(gè)所描述的優(yōu)選實(shí)施例中,所述算法可以運(yùn)行在請求所預(yù)測的SLIH時(shí),或者所預(yù)測的SLIH可以被連續(xù)地更新并存儲(chǔ)在IHPT 196中。
應(yīng)當(dāng)注意,本發(fā)明不同于在本領(lǐng)域中已知的分支預(yù)測方法。首先,上述方法導(dǎo)致跳到特定的中斷處理機(jī),而并非是基于分支指令地址的。即,在現(xiàn)有技術(shù)中所使用的分支預(yù)測方法預(yù)測分支操作的結(jié)果,而本發(fā)明根據(jù)(可能的)非分支指令來預(yù)測到特殊中斷處理機(jī)的跳轉(zhuǎn)。這導(dǎo)致第二差異,所述差異在于與現(xiàn)有技術(shù)的分支預(yù)測相比按照本發(fā)明的教導(dǎo)可以借助中斷處理機(jī)預(yù)測來跳過更大量的代碼,這是因?yàn)楸景l(fā)明能夠繞過任意數(shù)目的指令(諸如FLIH中的指令),而分支預(yù)測允許在所預(yù)測的分支之前只繞過有限的指令,這是由于常規(guī)的分支預(yù)測機(jī)制可以掃描的指令窗口大小所存在的固有限制的緣故。第三,依照本發(fā)明的中斷處理機(jī)預(yù)測并未如現(xiàn)有技術(shù)中所知的采用/未采用分支預(yù)測那樣被約束為二分判定。因而,再次參照圖1c,預(yù)測邏輯198可以從任意數(shù)目的歷史SLIH地址中選擇所預(yù)測的SLIH地址,而分支預(yù)測配置只在順序執(zhí)行路徑和分支路徑之間進(jìn)行選擇。
寄存器在以上描述中,諸如GPR 182a-b、FPR 184、CRR 178和LCR180之類的處理單元100的寄存器文件通常被定義為“用戶級寄存器”,這是由于這些寄存器可以由具有用戶或管理程序特權(quán)的軟件來訪問。管理程序級寄存器192包括那些寄存器,所述寄存器典型情況下由操作系統(tǒng)使用,典型情況下在操作系統(tǒng)核心中使用,這種操作如存儲(chǔ)器管理、配置和異常處理。照此,對管理程序級寄存器192的訪問通常只局限于少數(shù)具有足夠訪問許可的進(jìn)程(即,管理程序級進(jìn)程)。
如在圖2中所描述,管理程序級寄存器192通常包括配置寄存器202、存儲(chǔ)器管理寄存器208、異常處理寄存器214和混雜寄存器222,在下面將更詳細(xì)地進(jìn)行描述。
配置寄存器202包括機(jī)器狀態(tài)寄存器(Machine State RegisterMSR)206和處理器版本寄存器(Processor Version Register PVR)204。MSR 206定義了處理器的狀態(tài)。即,MSR 206標(biāo)識(shí)在處理指令中斷(異常)之后指令執(zhí)行應(yīng)當(dāng)在那里恢復(fù)。PVR 204標(biāo)識(shí)處理單元100的具體類型(版本)。
存儲(chǔ)器管理寄存器208包括塊地址轉(zhuǎn)換(Block AddressTranslation BAT)寄存器210。BAT寄存器210是軟件控制的陣列,用于存儲(chǔ)可用的芯片內(nèi)塊地址轉(zhuǎn)換。優(yōu)選地是,存在獨(dú)立的指令和數(shù)據(jù)BAT寄存器,被示為IBAT 209和DBAT 211。存儲(chǔ)器管理寄存器還包括段寄存器(SR)212,用來當(dāng)BAT轉(zhuǎn)換失敗時(shí)把EA轉(zhuǎn)換為虛擬地址(Virtual Addresses VA)。
異常處理寄存器214包括數(shù)據(jù)地址寄存器(Data AddressRegister DAR)216、專用寄存器(Special Purpose Registers SPR)218和機(jī)器狀態(tài)保存/恢復(fù)(Status Save/Restore SSR)寄存器220。如果存儲(chǔ)器訪問導(dǎo)致諸如對準(zhǔn)異常之類的異常,那么DAR 216包含由存儲(chǔ)器訪問指令所產(chǎn)生的有效地址。例如為了由操作系統(tǒng)所定義的特定目的來使用SPR標(biāo)識(shí)存儲(chǔ)區(qū)域,所述存儲(chǔ)區(qū)域被保留以供第一級異常處理機(jī)(例如,F(xiàn)LIH)使用。此存儲(chǔ)區(qū)域優(yōu)選對系統(tǒng)中的每個(gè)處理器來說是唯一的。SPR 218可以被FLIH用為暫時(shí)存儲(chǔ)寄存器以便保存通用寄存器(GPR)的內(nèi)容,所述通用寄存器可以從SPR 218中加載并用為基址寄存器以便把其它GPR保存到存儲(chǔ)器。SSR寄存器220保存關(guān)于異常(中斷)的機(jī)器狀態(tài)并且當(dāng)執(zhí)行中斷返回指令時(shí)恢復(fù)機(jī)器狀態(tài)。
混雜寄存器222包括用于維持時(shí)刻的時(shí)基(Time Base TB)寄存器224、用于遞減計(jì)數(shù)的遞減寄存器(Decrementer Register DEC)226和用于如果遇到所指定的數(shù)據(jù)地址那么導(dǎo)致出現(xiàn)斷點(diǎn)的數(shù)據(jù)地址斷點(diǎn)寄存器(Data Address Breakpoint Register DABR)228。此外,混雜寄存器222包括基于時(shí)間的中斷寄存器(Time Based InterruptRegister TBIR)230,用于在預(yù)定時(shí)段之后開始中斷。這種基于時(shí)間的中斷可以與將在處理單元100上運(yùn)行的定期維護(hù)例程一起使用。
現(xiàn)在參照圖3,描繪了示例性方法的流程圖,借此諸如處理單元100之類的處理單元處理軟件線程中執(zhí)行指令的中斷、中止、異?;蚱渌蓴_。在開始塊302之后,第一軟件線程被加載(塊304)到處理單元中,諸如上面所示出并描述的處理單元100。特別地是,軟件線程中的指令在上述IFAR 118及其它組件的控制下是流水線的。然后該第一軟件線程中的第一指令被加載(塊306)到適當(dāng)?shù)闹噶畋3宙i存器(IHL)中。適當(dāng)?shù)腎HL優(yōu)選是專用于執(zhí)行單元的IHL,所述執(zhí)行單元被特別地設(shè)計(jì)成用于處理正加載的指令類型。
然后詢問(詢問塊308)所加載的指令在該指令可以執(zhí)行之前是否具有先決條件,諸如需要特定數(shù)據(jù)片(諸如由另一指令所生成的數(shù)據(jù))、傳遞預(yù)定數(shù)目的時(shí)鐘周期,或任何其它條件,包括在圖2所描述的寄存器中所表示的那些。
如果尚未滿足所述先決條件(詢問塊310),那么用于保持指令的IHL被凍結(jié)(塊312),因而凍結(jié)整個(gè)第一軟件線程。然而注意,其它軟件線程及其它EU 108仍然能夠繼續(xù)執(zhí)行。例如,假定在圖1b中所示出的IHL 106n被凍結(jié)。如果是的話,那么EU 108b不能被使用,但是所有其它EU 108仍然可以由其它解凍的IHL 106來使用。
如果先決條件已經(jīng)滿足(詢問塊310),那么在適當(dāng)?shù)膱?zhí)行單元中執(zhí)行所述指令(塊314)。
然后詢問是否存在要在軟件線程中執(zhí)行的其它指令(詢問塊316)。如果不是的話,那么該過程結(jié)束(終止塊320)。否則,下一指令被加載到指令保持鎖存器中(塊318),并且如同所示所述過程重復(fù)直到線程中的所有指令已經(jīng)被執(zhí)行。
如上所述在優(yōu)選實(shí)施例中,由于整個(gè)軟件線程和與該軟件線程的執(zhí)行相關(guān)聯(lián)的硬件簡單地被凍結(jié)直到用于解凍特定IHL 106的信號被接收,所以不需要存儲(chǔ)軟或硬狀態(tài)。作為選擇,軟和/或硬狀態(tài)可以被存儲(chǔ)到GPR 182、IFAR 118或任何其它存儲(chǔ)寄存器中,優(yōu)選為(本地)位于處理單元100上的寄存器。
在圖4中示出了用于凍結(jié)指令保持鎖存器(IHL)106的優(yōu)選系統(tǒng)。最初在圖1b中示出并且在圖4中用于示例性目的的IHL 106n被耦合到單個(gè)執(zhí)行單元(EU)108b。IHL 106n的功能取決于時(shí)鐘信號,所述時(shí)鐘信號被要求用于IHL 106n的正常操作。在沒有時(shí)鐘信號的情況下,IHL 106n會(huì)簡單地“凍結(jié)”,導(dǎo)致(在圖1b中所示出的)L1I-Cache 104被阻止能夠向IHL 106n發(fā)送任何新的指令,所述指令來自與在IHL 106n中所凍結(jié)的指令相同的軟件線程。作為選擇,可以通過向IFAR 118發(fā)送凍結(jié)信號來實(shí)現(xiàn)用于凍結(jié)軟件線程的整個(gè)上游部分的指令。
EU 108b的操作可以繼續(xù),導(dǎo)致處于與在IHL 106n中所凍結(jié)的指令相同線程中的任何指令的執(zhí)行。然而在另一實(shí)施例中,當(dāng)IHL106n被凍結(jié)時(shí)EU 108b也被凍結(jié),優(yōu)選如同所示通過控制EU 108b的時(shí)鐘信號來凍結(jié)。
通過掩碼IHL凍結(jié)寄存器(IHL Freeze Register IFR)402來實(shí)現(xiàn)對時(shí)鐘信號的控制。IFR 402包含了用于每個(gè)IHL 106(并且選擇性地用于每個(gè)EU 108、L1 I-Cache 104和IFAR 118)的控制位。此掩碼可以由各種源來創(chuàng)建。例如,系統(tǒng)計(jì)時(shí)器404可以創(chuàng)建用于表明是否已經(jīng)過去預(yù)定的時(shí)間量的掩碼。在優(yōu)選實(shí)施例中,來自庫調(diào)用406的輸出控制IFR 402的加載(掩碼)。
如圖5所述,當(dāng)出現(xiàn)特定條件時(shí)(諸如所要求的執(zhí)行數(shù)據(jù)不可用),應(yīng)用(或進(jìn)程或線程)可以調(diào)用庫。庫調(diào)用使邏輯執(zhí)行確定所運(yùn)行的軟件線程是否需要被中止(凍結(jié))。如果是的話,那么向最近的時(shí)鐘控制器(Proximate Clock Controller PCC)408發(fā)送禁止信號,(如在圖4中所示)導(dǎo)致阻塞去往IHL 106n(并且選擇性地還有EU 108b)的時(shí)鐘信號。凍結(jié)信號還可以被發(fā)送到L1 I-Cache 104和/或IFAR 118。此凍結(jié)信號可以是單獨(dú)的(singular)信號(諸如到L1I-Cache 104的時(shí)鐘信號阻斷),或者它可以產(chǎn)生IFAR 118的可執(zhí)行代碼,所述可執(zhí)行代碼使IFAR 118選擇輸出將要凍結(jié)的特定軟件線程。
一旦已經(jīng)滿足先決條件來執(zhí)行所凍結(jié)的指令,那么IFR 402就向PCC 408發(fā)布“啟用”命令,并且選擇性地向L1 I-Cache 104和/或IFAR 118發(fā)布“解凍”信號,允許所述指令和其線程中的其余指令通過用于該線程的IHL 106和EU 108執(zhí)行。
再次參考圖5,應(yīng)用程序502通常直接與IFAR 118工作,所述IFAR 118調(diào)用軟件線程中的每個(gè)指令。當(dāng)出現(xiàn)異常時(shí),諸如所需要的數(shù)據(jù)不可用,那么調(diào)用中止例程庫(Pause Routines Library PRL)504。PRL 504執(zhí)行所調(diào)用的文件,所述文件由線程狀態(tài)確定邏輯(Thread State Determination Logic TSDL)506來執(zhí)行。然后TSDL506控制IFAR 118(或作為選擇為在圖4中所示出的PCC 408)來在IFAR 118的控制下凍結(jié)特定的軟件線程。
盡管相對于計(jì)算機(jī)處理器和軟件已經(jīng)描述了本發(fā)明的方面,然而應(yīng)當(dāng)理解的是,作為選擇本發(fā)明的至少一些方面可以被實(shí)現(xiàn)為計(jì)算機(jī)可用介質(zhì),所述計(jì)算機(jī)可用介質(zhì)包含供數(shù)據(jù)存儲(chǔ)系統(tǒng)或計(jì)算機(jī)系統(tǒng)所使用的程序產(chǎn)品。用于定義本發(fā)明功能的程序可以經(jīng)由各種信號運(yùn)載介質(zhì)遞送到數(shù)據(jù)存儲(chǔ)系統(tǒng)或計(jì)算機(jī)系統(tǒng),所述信號運(yùn)載介質(zhì)包括但不限于不可寫的存儲(chǔ)介質(zhì)(例如CD-ROM)、可寫的存儲(chǔ)介質(zhì)(例如軟盤、硬盤驅(qū)動(dòng)器、讀取/寫入CD-ROM、光介質(zhì))以及通信介質(zhì),諸如計(jì)算機(jī)和包括以太網(wǎng)的電話網(wǎng)絡(luò)。因此應(yīng)當(dāng)理解,這種信號運(yùn)載介質(zhì)當(dāng)攜帶或編碼用于指示本發(fā)明方法功能計(jì)算機(jī)可讀指令時(shí),表現(xiàn)了本發(fā)明的候選實(shí)施例。此外應(yīng)當(dāng)理解,本發(fā)明可以借助具有采用硬件、軟件或如這里所述的軟件和硬件的組合或其等效物的形式的裝置的系統(tǒng)來實(shí)現(xiàn)。
雖然參考優(yōu)選實(shí)施例已經(jīng)特別示出并描述了本發(fā)明,然而本領(lǐng)域內(nèi)技術(shù)人員應(yīng)當(dāng)理解,在不脫離本發(fā)明的精神和范圍的情況下可以對其形式和詳細(xì)進(jìn)行各種改變。
權(quán)利要求
1.一種用于中止軟件線程的方法,所述方法包括把指令從第一軟件線程發(fā)送到處理單元中的指令排序單元(ISU);把所述指令從所述第一軟件線程發(fā)送到所述第一指令保持鎖存器,所述第一指令保持鎖存器來自于所述ISU中的多個(gè)指令保持鎖存器;以及有選擇地凍結(jié)所述第一指令保持鎖存器,其中當(dāng)所述第一指令保持鎖存器被凍結(jié)時(shí),來自所述第一軟件線程的指令不能被傳遞到處理器核心中的執(zhí)行單元,并且其中所述第一軟件線程的執(zhí)行被凍結(jié)。
2.如權(quán)利要求1所述的方法,其中由等待寄存器來控制有選擇地凍結(jié)所述第一指令保持鎖存器,并且其中所述等待寄存器包含控制位用于控制多個(gè)指令保持鎖存器中的每一個(gè)的凍結(jié)狀態(tài)的控制位。
3.如權(quán)利要求2所述的方法,其中利用由硬件時(shí)鐘計(jì)數(shù)器所定義的值來掩碼所述等待寄存器。
4.如權(quán)利要求2所述的方法,其中利用由從庫中調(diào)用的例程所定義的值來掩碼所述等待寄存器。
5.如權(quán)利要求1所述的方法,其中通過阻塞到所述第一指令保持鎖存器的時(shí)鐘信號來凍結(jié)所述第一指令保持鎖存器。
6.如權(quán)利要求1所述的方法,其中到所述第一指令保持鎖存器的時(shí)鐘信號是來自時(shí)鐘控制器的時(shí)鐘輸出信號,并且其中來自所述時(shí)鐘控制器的時(shí)鐘輸出信號由等待寄存器中的控制位來控制。
7.如權(quán)利要求1所述的方法,其中所述第一指令保持鎖存器專用于所述處理器核心中的單個(gè)執(zhí)行單元。
8.如權(quán)利要求1所述的方法,還包括確定用于提示有選擇地凍結(jié)所述第一指令保持鎖存器的條件已經(jīng)結(jié)束,以使所述第一軟件線程現(xiàn)在能夠傳遞到所述處理器核心中的執(zhí)行單元。
9.如權(quán)利要求8所述的方法,其中對另一軟件線程的未完成執(zhí)行是提示有選擇地凍結(jié)所述第一指令保持鎖存器的條件。
10.如權(quán)利要求8所述的方法,其中未完成傳遞預(yù)定數(shù)目的時(shí)鐘周期是提示有選擇地凍結(jié)所述第一指令保持鎖存器的條件。
11.如權(quán)利要求8所述的方法,其中缺乏要由第一軟件線程使用的必要數(shù)據(jù)是提示有選擇地凍結(jié)所述第一指令保持鎖存器的條件。
12.一種系統(tǒng),包括用于把第一軟件線程發(fā)送到處理單元的裝置,其中所述第一軟件線程來自于能夠由處理器核心同時(shí)執(zhí)行的多個(gè)軟件線程,所述處理器核心具有多個(gè)執(zhí)行單元;和用于響應(yīng)于所指定條件的發(fā)生而在不中止所述多個(gè)軟件線程中的任何其它軟件線程并且不向操作系統(tǒng)進(jìn)行調(diào)用的情況下中止所述第一軟件線程的裝置。
13.如權(quán)利要求12所述的系統(tǒng),其中在執(zhí)行所述多個(gè)軟件線程中的另一線程之前中止所述第一軟件線程。
14.如權(quán)利要求12所述的系統(tǒng),其中所述第一軟件線程被中止直到已經(jīng)過去預(yù)定的時(shí)間量。
全文摘要
本發(fā)明提供一種用于中止進(jìn)程中的軟件線程的方法、系統(tǒng)和計(jì)算機(jī)可用介質(zhì)。把指令從所述進(jìn)程中的第一軟件線程發(fā)送到處理單元中的指令排序單元(ISU)。然后把所述指令從所述第一軟件線程發(fā)送到來自所述ISU的多個(gè)指令保持鎖存器中的第一指令保持鎖存器。然后有選擇地凍結(jié)第一指令保持鎖存器,所述第一指令保持鎖存器包含有來自第一軟件線程的指令,以致當(dāng)所述第一指令保持鎖存器被凍結(jié)時(shí),來自所述第一軟件線程的指令不能被傳遞到處理器核心中的執(zhí)行單元。這使整個(gè)第一軟件線程同樣地被凍結(jié),而允許進(jìn)程中的其它軟件線程繼續(xù)執(zhí)行。
文檔編號G06F9/48GK1967471SQ20061014298
公開日2007年5月23日 申請日期2006年10月26日 優(yōu)先權(quán)日2005年10月27日
發(fā)明者拉科什·沙馬, 薩特亞·普拉卡什·沙馬, 小赫爾曼·D.·德爾克斯, 杰弗里·P.·梅西 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
盘山县| 瑞金市| 马边| 辉县市| 沁源县| 务川| 呼玛县| 漳州市| 山东| 灵台县| 苗栗市| 塘沽区| 安阳市| 灌南县| 双桥区| 涟源市| 图们市| 静安区| 沁水县| 三穗县| 鸡西市| 蒙阴县| 民丰县| 咸丰县| 香格里拉县| 卫辉市| 万盛区| 通山县| 临颍县| 鸡东县| 山阳县| 二连浩特市| 梓潼县| 泸定县| 德江县| 光泽县| 永寿县| 稷山县| 洞头县| 常州市| 四子王旗|