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

偵測自修正程序碼的處理器與方法與流程

文檔序號(hào):12801480閱讀:279來源:國知局
偵測自修正程序碼的處理器與方法與流程

本發(fā)明關(guān)聯(lián)于存儲(chǔ)器所有權(quán),特別是關(guān)聯(lián)于基于快取線決定存儲(chǔ)器所有權(quán)以偵測自修正程序碼。



背景技術(shù):

自修正程序碼(selfmodifiedcode,smc)具有被本地處理器執(zhí)行的至少一指令以修正另一指令,或者是后續(xù)被處理器處理的一程序碼序列。自修正程序碼可能具有一序列的程序碼以修正剛被執(zhí)行的程序碼,使得被修正而具有新功能的程序碼再被執(zhí)行一次。于另一個(gè)例子中,自修正程序碼用以修正順序緊接的程序碼且就在之前被執(zhí)行。雖然自修正程序碼現(xiàn)在并不如往昔普遍,許多舊式的程序仍具有自修正程序碼且應(yīng)被適當(dāng)?shù)膱?zhí)行。處理器必須能夠偵測自修正程序碼且校正運(yùn)算以避免不適當(dāng)?shù)慕Y(jié)果。此處所用的“處理器”一詞用以代表任意類型的處理單元,包含微處理器(microprocessor)、中央處理器(centralprocessingunit,cpu)、一運(yùn)算核或一微控制器(microcontroller)等等。此處所用的“處理器”一詞還包含了任意類型的處理器架構(gòu),例如整合有多個(gè)處理單元的晶片,或者是包含了具有一系統(tǒng)晶片(systemofachip,soc)的集成電路(integratedcircuit,ic)。

現(xiàn)代的處理器經(jīng)常執(zhí)行預(yù)擷取運(yùn)算以將存儲(chǔ)器中一或多行讀進(jìn)指令快取存儲(chǔ)器(icache)。指令快取存儲(chǔ)器的快取線被解析為指令并被執(zhí)行。為了使效率最大化,擷取單元或者是相仿的元件會(huì)試圖填滿指令快取存儲(chǔ)器并維持填滿的狀態(tài)以確保指令被連續(xù)地供給執(zhí)行。為了使效能最大化,執(zhí)行管線(executionpipeline)被希望能夠維持滿載的狀態(tài)?,F(xiàn)代的處理器經(jīng)常采用亂序(out-of-order,ooo)執(zhí)行,也就是說晚收到但已準(zhǔn)備好被執(zhí)行的指令可以先于早收到但還沒準(zhǔn)備好被執(zhí)行指令被執(zhí)行。預(yù)擷取與亂序運(yùn)算的至少一個(gè)問題是,被預(yù)擷取與提供執(zhí)行的指令可能會(huì)在之后被自修正程序碼修改。因此,已經(jīng)被提供執(zhí)行的指令可能會(huì)錯(cuò)過修正,而可能導(dǎo)致不適當(dāng)或非原意的運(yùn)算。

現(xiàn)代的處理器需要偵測或預(yù)防逾時(shí)指令被完成,逾時(shí)指令是指被程序碼修改之后不欲被執(zhí)行的指令。處理器一般會(huì)將存儲(chǔ)器的所有權(quán)分割為一指令區(qū)域與一數(shù)據(jù)區(qū)域,指令快取存儲(chǔ)器擁有指令區(qū)域,數(shù)據(jù)快取存儲(chǔ)器(datacache,dcache)擁有數(shù)據(jù)區(qū)域。指令區(qū)域被預(yù)設(shè)為只儲(chǔ)存用以執(zhí)行的指令,而數(shù)據(jù)區(qū)域被預(yù)設(shè)為可被軟件程序所儲(chǔ)存的數(shù)據(jù)與信息所利用。如果指令快取存儲(chǔ)器嘗試讀取數(shù)據(jù)快取存儲(chǔ)器所擁有的存儲(chǔ)器,所有權(quán)必需被從數(shù)據(jù)快取存儲(chǔ)器轉(zhuǎn)換,且轉(zhuǎn)換的過程會(huì)緩慢而冗長且使得運(yùn)算被串列化。

在以往的架構(gòu)中,所有權(quán)基于分頁的邊界。通常一個(gè)分頁的大小是4kb(kilobytes)。雖然,4kb的存儲(chǔ)器并不占有顯著的容量,自修正程序碼能會(huì)產(chǎn)生指令快取存儲(chǔ)器與數(shù)據(jù)快取存儲(chǔ)器之間的所有權(quán)顛簸(thrashing)現(xiàn)象,而降低了運(yùn)算效率。一種解決方法是降低所有權(quán)的大小至四分之一頁,也就是4kb的分頁大小中的1kb的存儲(chǔ)器區(qū)塊。但盡管只是1kb的所有權(quán)區(qū)塊在許多情況中還是足以對(duì)自修正程序碼造成麻煩。而且,更大的分頁大小也常被使用,像是2mb(megabytes)甚至是1gb(gigabyte),因此對(duì)于降低整體效能來說,所有權(quán)區(qū)塊一直是個(gè)重要的議題。



技術(shù)實(shí)現(xiàn)要素:

依據(jù)一實(shí)施例,一種處理器用以基于快取線決定存儲(chǔ)器所有權(quán)以偵測自修正程序碼,處理器具有所有權(quán)隊(duì)列、擷取系統(tǒng)、處理系統(tǒng)與比較器。處理系統(tǒng)具有處理前端與執(zhí)行系統(tǒng)。所有權(quán)隊(duì)列儲(chǔ)存有儲(chǔ)存單元,每一儲(chǔ)存單元對(duì)應(yīng)于其中一快取線。擷取系統(tǒng)將快取線的快取線數(shù)據(jù)提供至處理前端,以決定每一快取線的所有權(quán)索引,且將所有權(quán)索引與對(duì)應(yīng)的快取線地址輸入至所有權(quán)隊(duì)列的儲(chǔ)存單元。處理前端將快取線數(shù)據(jù)轉(zhuǎn)譯為指令并提出每一指令以進(jìn)行執(zhí)行。每個(gè)指令具有所有權(quán)隊(duì)列中對(duì)應(yīng)的儲(chǔ)存單元的所有權(quán)索引。執(zhí)行系統(tǒng)決定每一儲(chǔ)存指令的目標(biāo)地址,且當(dāng)所有權(quán)隊(duì)列的儲(chǔ)存單元的逾時(shí)位被設(shè)定時(shí),執(zhí)行第一例外事件。所述的儲(chǔ)存單元具有匹配的所有權(quán)索引與已準(zhǔn)備好被退出的指令。第一比較器比較被輸入進(jìn)所有權(quán)隊(duì)列的每一快取線地址與每一目標(biāo)地址,并在一個(gè)相匹配的結(jié)果被找到時(shí)設(shè)定對(duì)應(yīng)的逾時(shí)位。第二比較器比較被執(zhí)行系統(tǒng)決定的每一目標(biāo)地址與存在所有權(quán)隊(duì)列中的每一快取線地址,并設(shè)定每匹配的一儲(chǔ)存單元的逾時(shí)位。

第一例外事件被執(zhí)行時(shí)會(huì)使執(zhí)行系統(tǒng)刷新處理器,以避免觸發(fā)第一例外事件的指令退出,且第一例外事件還用以使擷取系統(tǒng)重新擷取指令。當(dāng)輸入對(duì)應(yīng)的快取線地址時(shí),擷取系統(tǒng)會(huì)使所有權(quán)隊(duì)列中的儲(chǔ)存單元有效。處理前端會(huì)標(biāo)注所有權(quán)隊(duì)列中的儲(chǔ)存最后指令為最后指令。在此實(shí)施例中,當(dāng)對(duì)應(yīng)快取線的退出的指令被標(biāo)記為最后指令時(shí),執(zhí)行系統(tǒng)會(huì)使儲(chǔ)存單元無效化。

在一實(shí)施例中,處理器會(huì)具有一逾時(shí)偵測器。逾時(shí)偵測器依據(jù)被提出的指令中的所有權(quán)索引讀取所有權(quán)快取存儲(chǔ)器中對(duì)應(yīng)的儲(chǔ)存單元中的逾時(shí)位。且當(dāng)對(duì)應(yīng)的儲(chǔ)存單元中的逾時(shí)位被設(shè)定時(shí),逾時(shí)偵測器用以使被提出的指令被標(biāo)記以產(chǎn)生第一例外事件。在此實(shí)施例中,當(dāng)準(zhǔn)備好退出的指令被標(biāo)記以產(chǎn)生第一例外事件時(shí),執(zhí)行系統(tǒng)執(zhí)行第一例外事件。處理前端還被用以設(shè)定從跨立于二快取線的快取線數(shù)據(jù)產(chǎn)生的每一指令的跨立位。在此實(shí)施例中,當(dāng)被提出的指令中的跨立位被設(shè)定時(shí),逾時(shí)偵測器會(huì)讀取所有權(quán)快取存儲(chǔ)器中對(duì)應(yīng)的儲(chǔ)存單元的下一個(gè)連續(xù)的儲(chǔ)存單元,且當(dāng)下一個(gè)連續(xù)的儲(chǔ)存單元的逾時(shí)位被設(shè)定時(shí),逾時(shí)偵測器會(huì)使被提出的指令被標(biāo)記以產(chǎn)生第一例外事件。

擷取系統(tǒng)會(huì)決定所有權(quán)索引為二進(jìn)位計(jì)數(shù)值。當(dāng)每一儲(chǔ)存單元被輸入進(jìn)所有權(quán)隊(duì)列時(shí),二進(jìn)位計(jì)數(shù)值會(huì)增加以作為所有權(quán)隊(duì)列中的儲(chǔ)存單元的總數(shù)量。此外,所有權(quán)索引的最高有效位會(huì)是纏繞位。處理器會(huì)還具有覆寫偵測器。覆寫偵測器用以依據(jù)被提出的指令中的所有權(quán)索引以讀取所有權(quán)快取存儲(chǔ)器中對(duì)應(yīng)的儲(chǔ)存單元中的纏繞位。且當(dāng)對(duì)應(yīng)儲(chǔ)存單元的纏繞位并不匹配于被提出的指令的纏繞位時(shí),覆寫偵測器還用以使被提出的指令被標(biāo)記以產(chǎn)生第一例外事件。當(dāng)準(zhǔn)備好退出的指令被標(biāo)記以產(chǎn)生第一例外事件時(shí),執(zhí)行系統(tǒng)會(huì)執(zhí)行第一例外事件。

處理器會(huì)具有儲(chǔ)存隊(duì)列。儲(chǔ)存隊(duì)列會(huì)具有多個(gè)儲(chǔ)存單元。每一儲(chǔ)存單元被用以儲(chǔ)存處理前端提出的儲(chǔ)存指令,且每一儲(chǔ)存單元用以儲(chǔ)存執(zhí)行系統(tǒng)決定的一個(gè)目標(biāo)地址。執(zhí)行系統(tǒng)會(huì)還具有儲(chǔ)存管線。儲(chǔ)存管線用以決定被調(diào)度以進(jìn)行執(zhí)行的每一儲(chǔ)存指令的目標(biāo)地址。且儲(chǔ)存管線用以提供被決定的每一目標(biāo)地址給儲(chǔ)存隊(duì)列的對(duì)應(yīng)的儲(chǔ)存單元與第二比較器。

處理系統(tǒng)會(huì)依據(jù)被提出的指令中的所有權(quán)索引存取所有權(quán)隊(duì)列中對(duì)應(yīng)的儲(chǔ)存單元以設(shè)定對(duì)應(yīng)的儲(chǔ)存單元中的執(zhí)行位。處理器會(huì)還具有逾時(shí)偵測器。逾時(shí)偵測器用以計(jì)算第二比較器決定的每匹配的一儲(chǔ)存單元的執(zhí)行位。且當(dāng)匹配的儲(chǔ)存單元中的任何的執(zhí)行位被設(shè)定時(shí),逾時(shí)偵測器會(huì)使對(duì)應(yīng)于被決定的目標(biāo)地址的儲(chǔ)存指令被標(biāo)記以產(chǎn)生第二例外事件。在此實(shí)施例中,當(dāng)準(zhǔn)備好退出的一儲(chǔ)存指令被標(biāo)記以產(chǎn)生第二例外事件時(shí),執(zhí)行系統(tǒng)會(huì)執(zhí)行第二例外事件。在一實(shí)施例中,第二例外事件使執(zhí)行系統(tǒng)令被標(biāo)記以產(chǎn)生第二例外事件的儲(chǔ)存指令退出,以刷新處理器,且以使擷取系統(tǒng)取得指令指標(biāo)以從指令快取存儲(chǔ)器取得儲(chǔ)存指令后的指令。

處理前端用以設(shè)定依據(jù)跨立于二快取線的快取線數(shù)據(jù)產(chǎn)生的每一指令中的跨立位。處理系統(tǒng)依據(jù)被提出的指令中的所有權(quán)索引存取所有權(quán)隊(duì)列中對(duì)應(yīng)的儲(chǔ)存單元以設(shè)定對(duì)應(yīng)的儲(chǔ)存單元中的執(zhí)行位。此外,當(dāng)被提出的指令中的跨立位被設(shè)定時(shí),處理前端會(huì)用以設(shè)定對(duì)應(yīng)的儲(chǔ)存單元后的下一個(gè)連續(xù)的儲(chǔ)存單元的執(zhí)行位。處理器還具有逾時(shí)偵測器。逾時(shí)偵測器用以計(jì)算第二比較器決定的每匹配的一儲(chǔ)存單元的執(zhí)行位。且當(dāng)匹配的儲(chǔ)存單元中的任何的執(zhí)行位被設(shè)定時(shí),逾時(shí)偵測器會(huì)使對(duì)應(yīng)于被決定的目標(biāo)地址的儲(chǔ)存指令被標(biāo)記以產(chǎn)生待執(zhí)行的第二例外事件。在此實(shí)施例中,當(dāng)準(zhǔn)備好退出的一儲(chǔ)存指令被標(biāo)記以產(chǎn)生第二例外事件時(shí),執(zhí)行系統(tǒng)會(huì)執(zhí)行第二例外事件。第二例外事件使執(zhí)行系統(tǒng)令被標(biāo)記以產(chǎn)生第二例外事件的儲(chǔ)存指令退出,以刷新處理器,且以使擷取系統(tǒng)取得指令指標(biāo)以從指令快取存儲(chǔ)器取得儲(chǔ)存指令后的指令。

依據(jù)一實(shí)施例,在依據(jù)快取線決定存儲(chǔ)器所有權(quán)以偵測自修正程序碼的方法中是先取得快取線。每一快取線具有快取線地址與快取線數(shù)據(jù)。決定每一取得的快取線的所有權(quán)索引,且將快取線地址與所有權(quán)索引加入所有權(quán)隊(duì)列中的一或多儲(chǔ)存單元。當(dāng)快取線地址被加入進(jìn)儲(chǔ)存單元時(shí),于所述的方法中,還比較每一快取線地址與被提出的每一儲(chǔ)存指令的每一目標(biāo)地址,且標(biāo)記任何的匹配的儲(chǔ)存單元為逾時(shí)的。在所述的方法中,還具有,將快取線的快取線數(shù)據(jù)轉(zhuǎn)譯成指令,每一指令具有所有權(quán)索引,所有權(quán)索引是為了所有權(quán)隊(duì)列中的儲(chǔ)存單元被決定。儲(chǔ)存單元儲(chǔ)存有被轉(zhuǎn)譯成的指令所來自的快取線。所述的方法還具有提出指令以執(zhí)行與決定被提出以執(zhí)行的每一儲(chǔ)存指令的目標(biāo)地址。所述的方法還具有,當(dāng)每一目標(biāo)地址被決定時(shí),比較每一目標(biāo)地址與所有權(quán)隊(duì)列中每一有效的儲(chǔ)存單元的快取線地址,且標(biāo)記任匹配的一儲(chǔ)存單元為逾時(shí)。所述的方法還具有,當(dāng)準(zhǔn)備好退出的指令具有匹配于所有權(quán)隊(duì)列中的儲(chǔ)存單元的所有權(quán)索引,且所述的指令被標(biāo)注為逾時(shí)的。

所述的方法具有,刷新處理器,避免用以觸發(fā)第一例外事件的指令退出,重新擷取用以產(chǎn)生第一例外事件的指令。

所述的方法具有,當(dāng)接收到新的快取線地址時(shí),有效化所有權(quán)隊(duì)列中的儲(chǔ)存單元,標(biāo)記所有權(quán)隊(duì)列中的每一有效儲(chǔ)存單元中的最后指令為最后指令,且當(dāng)標(biāo)記為最后指令的指令退出時(shí),使所有權(quán)隊(duì)列中的對(duì)應(yīng)的儲(chǔ)存單元無效化。

所述的方法還具有,依據(jù)被提出的每一指令具有的所有權(quán)索引以存取所有權(quán)隊(duì)列中對(duì)應(yīng)的儲(chǔ)存單元,且當(dāng)對(duì)應(yīng)的儲(chǔ)存單元被標(biāo)記為逾時(shí)的時(shí)候,標(biāo)記用以產(chǎn)生第一例外事件的指令,并為準(zhǔn)備好退出且被標(biāo)記以產(chǎn)生第一例外事件的每一指令執(zhí)行第一例外事件。

所述的方法具有,設(shè)定被轉(zhuǎn)譯自跨立于兩快取線的快取線數(shù)據(jù)的每一指令的跨立位。所述的方法還具有,當(dāng)每一指令被提出時(shí),依據(jù)指令所具有的所有權(quán)索引存取所有權(quán)隊(duì)列中對(duì)應(yīng)的儲(chǔ)存單元。且當(dāng)跨立位被設(shè)定時(shí),取得所有權(quán)隊(duì)列中下一個(gè)連續(xù)的儲(chǔ)存單元。當(dāng)對(duì)應(yīng)的儲(chǔ)存單元被標(biāo)記為逾時(shí)的時(shí)候,標(biāo)記指令以產(chǎn)生第一例外事件。且當(dāng)跨立位被設(shè)定且所有權(quán)隊(duì)列中的下一個(gè)連續(xù)的儲(chǔ)存單元被標(biāo)記為逾時(shí)的時(shí)候,標(biāo)記指令以產(chǎn)生第一例外事件。所述的方法還具有,執(zhí)行準(zhǔn)備好退出且被標(biāo)記以產(chǎn)生第一例外事件的每一指令的第一例外事件。

所述的方法還具有,重復(fù)地增加所有權(quán)索引如二進(jìn)位計(jì)數(shù)值,二進(jìn)位計(jì)數(shù)值具有一總計(jì)數(shù)量至少用以作為所有權(quán)隊(duì)列中的儲(chǔ)存單元的總數(shù)量。決定纏繞位,纏繞位為二進(jìn)位計(jì)數(shù)值的最高有效位。每一被轉(zhuǎn)譯的指令的對(duì)應(yīng)的纏繞位相同于所有權(quán)隊(duì)列中儲(chǔ)存有指令被轉(zhuǎn)譯所依據(jù)的快取線的儲(chǔ)存單元所被決定的纏繞位。依據(jù)指令中的所有權(quán)索引取得所有權(quán)快取存儲(chǔ)器中的儲(chǔ)存單元,比較指令中的纏繞位與曲出的儲(chǔ)存單元的纏繞位。當(dāng)纏繞位并不匹配時(shí),標(biāo)記用以產(chǎn)生第一例外事件的指令,執(zhí)行標(biāo)記以產(chǎn)生第一例外事件的每一指令的第一例外事件。

所述的方法還具有,當(dāng)提出每一指令時(shí),依據(jù)所有權(quán)索引取得所有權(quán)快取存儲(chǔ)器的儲(chǔ)存單元,且設(shè)定取出的儲(chǔ)存單元的執(zhí)行位。所述的方法還具有,在轉(zhuǎn)譯的過程中,設(shè)定依據(jù)跨立于二快取線的快取線數(shù)據(jù)產(chǎn)生的每一指令的跨立位。當(dāng)提出每一指令時(shí),當(dāng)指令的跨立位被設(shè)定,取得所有權(quán)快取存儲(chǔ)器中的下一個(gè)連續(xù)的儲(chǔ)存單元,并設(shè)定下一個(gè)連續(xù)的儲(chǔ)存單元的執(zhí)行位。所述的方法具有,當(dāng)比較被決定的目標(biāo)地址于所有權(quán)隊(duì)列中的每一有效的儲(chǔ)存單元的快取線地址且匹配的儲(chǔ)存單元被發(fā)現(xiàn)時(shí),決定匹配的儲(chǔ)存單元的執(zhí)行位是否被設(shè)定。當(dāng)匹配的儲(chǔ)存單元的執(zhí)行位被設(shè)定時(shí),標(biāo)記關(guān)聯(lián)于被決定的目標(biāo)地址的儲(chǔ)存指令以產(chǎn)生第二例外事件。所述的方法還具有,使被標(biāo)記以產(chǎn)生第二例外事件且預(yù)備退出的儲(chǔ)存指令退出且完成,以刷新處理器,且通過取得儲(chǔ)存指令于程序順序之后的下一個(gè)指令,重新開始操作。

本發(fā)明能夠提高處理器的效能。

附圖說明

通過以下的敘述與圖式,本發(fā)明的益處、特點(diǎn)與優(yōu)點(diǎn)可以被更佳的理解。

圖1為依據(jù)一實(shí)施例實(shí)作以建立數(shù)據(jù)與指令間的所有權(quán)的一所有權(quán)隊(duì)列結(jié)合一處理器的簡化功能區(qū)塊圖。

圖2為依據(jù)一實(shí)施例實(shí)作的圖1中的所有權(quán)隊(duì)列具有相對(duì)于其他所有權(quán)處理模塊的接口的一簡化功能區(qū)塊圖。

圖3為依據(jù)一實(shí)施例中圖1的處理前端的運(yùn)算的流程示意圖。

圖4為依據(jù)一實(shí)施例中所有權(quán)與例外事件處理的流程示意圖。

圖5為依據(jù)一實(shí)施例中執(zhí)行、退出與例外事件處理的流程示意圖。

其中,附圖中符號(hào)的簡單說明如下:

100:處理器;101:所有權(quán)隊(duì)列;102:系統(tǒng)存儲(chǔ)器;103:預(yù)擷取模塊;104:處理前端;105:指令快取存儲(chǔ)器;106:執(zhí)行系統(tǒng);107:擷取模塊;109:解碼器;111:循環(huán)隊(duì)列;113:循環(huán)偵測器;115:指令轉(zhuǎn)譯器;117:暫存器別名表;118:微操作;119:分支偵測器;121:重排序緩沖器;123:排程器;125:執(zhí)行單元;127:儲(chǔ)存隊(duì)列;129:儲(chǔ)存管線;130:數(shù)據(jù)快取存儲(chǔ)器;131:其他元件;135:退出模塊;137、139:逾時(shí)偵測比較器;141:覆寫偵測器;143、145:逾時(shí)偵測器;ca:快取線地址;da:目標(biāo)地址;exb:執(zhí)行位;l、t1、t2:欄位;ip:指令指標(biāo);owni:所有權(quán)索引;sdb:跨立位;stb:逾時(shí)位;uop、uopx:微操作;wb:纏繞位。

具體實(shí)施方式

發(fā)明人發(fā)現(xiàn)了由于自修正程序碼所產(chǎn)生的存儲(chǔ)器所有權(quán)的問題。他們開發(fā)出了依據(jù)快取線建立存儲(chǔ)器所有權(quán)的所有權(quán)隊(duì)列以偵測自修正程序碼。

圖1是處理器100結(jié)合一所有權(quán)隊(duì)列(ownq)101的一個(gè)簡化的功能區(qū)塊圖。所有權(quán)隊(duì)列101依據(jù)一實(shí)施例而實(shí)作以建立數(shù)據(jù)與指令間的所有權(quán)。處理器100的標(biāo)準(zhǔn)指令集架構(gòu)(instructionsetarchitecture,isa)可以是一個(gè)x86宏(macro)架構(gòu)。此x86宏架構(gòu)可以正確地執(zhí)行被設(shè)計(jì)成執(zhí)行于一個(gè)x86處理器的大部分的應(yīng)用程序。一個(gè)應(yīng)用程序的預(yù)期結(jié)果被取得時(shí),應(yīng)用程序算是被正確地執(zhí)行。尤其是,處理器100執(zhí)行x86指令集中的指令,且具有x86使用者可視的暫存器集。但是本發(fā)明并不限制于x86架構(gòu),處理器100可依據(jù)本領(lǐng)域普通技術(shù)人員理解的其他可替換的指令集架構(gòu)。如圖所示,處理器100耦接一外部系統(tǒng)存儲(chǔ)器102。外部系統(tǒng)存儲(chǔ)器102用以儲(chǔ)存軟件程序、應(yīng)用程序、數(shù)據(jù)與本領(lǐng)域普通技術(shù)人員所理解的其他數(shù)據(jù)。處理器100可以具有一總線接口單元(businterfaceunit,biu)或相仿的元件(未繪示)以耦接系統(tǒng)存儲(chǔ)器102。在一系統(tǒng)晶片的架構(gòu)中,處理器100、系統(tǒng)存儲(chǔ)器102與其它處理功能模塊(未繪示)可以結(jié)合于一共用的集成電路。

處理器100具有一處理系統(tǒng)。處理系統(tǒng)具有處理前端104與執(zhí)行系統(tǒng)106以及其他于后續(xù)說明的處理模塊。處理前端104具有一信息預(yù)擷取(prefetch)引擎103、一指令快取存儲(chǔ)器(icache)105、一擷取單元107、一解碼器109、一循環(huán)隊(duì)列(lq)111、一指令轉(zhuǎn)譯器(xlate)115、一暫存器別名表(rat)117與一分支預(yù)測器119。執(zhí)行系統(tǒng)106一般具有一重排序緩沖器(rob)121、一排程器123(亦稱保留站)、執(zhí)行單元125與一儲(chǔ)存隊(duì)列127。執(zhí)行單元125具有至少一儲(chǔ)存管線129以及其他的執(zhí)行單元131。執(zhí)行單元131例如為一或多個(gè)整數(shù)(int)單元、一或多個(gè)浮點(diǎn)數(shù)(或媒體)單元或至少一負(fù)載管線。在一實(shí)施例中,負(fù)載管線與儲(chǔ)存管線可以被結(jié)合進(jìn)一個(gè)存儲(chǔ)器排序緩沖器(mob)(未繪示)或相仿的元件。儲(chǔ)存管線129可以還耦接一數(shù)據(jù)快取存儲(chǔ)器(dcache)130。數(shù)據(jù)快取存儲(chǔ)器130具有一或多個(gè)級(jí)別的數(shù)據(jù)快取存儲(chǔ)器,例如一第一級(jí)別(l1)的快取存儲(chǔ)器或一第二級(jí)別(l2)的快取存儲(chǔ)器等等。數(shù)據(jù)快取存儲(chǔ)器130可以也耦接系統(tǒng)存儲(chǔ)器102。如圖所示,重排序緩沖器121還具有一退出模塊135,相關(guān)細(xì)節(jié)請(qǐng)容后再敘。

其他的所有權(quán)邏輯與電路連同所有權(quán)隊(duì)列101一同被提供,以進(jìn)行所有權(quán)決定與偵測自修正程序碼。以下進(jìn)行相關(guān)細(xì)節(jié)的介紹。所述的其他的所有權(quán)邏輯與電路具有一第一逾時(shí)偵測比較器(staledetectcomparator1)137、一第二逾時(shí)偵測比較器(staledetectcomparator2)139、一覆寫偵測器141、一第一逾時(shí)偵測器(staledetector1)143與一第二逾時(shí)偵測器(staledetector2)145。

在一般性的操作中,預(yù)擷取引擎103從系統(tǒng)存儲(chǔ)器102擷取程序資訊并儲(chǔ)存所述的資訊進(jìn)指令快取存儲(chǔ)器105的快取線中。每一快取線可以具有一預(yù)設(shè)長度。所述的預(yù)設(shè)長度例如為64字節(jié)(byte)??烊【€的尺寸可以是任意的且在其他的架構(gòu)之下可以是不同的。擷取單元107從指令快取存儲(chǔ)器105取得每一快取線且提供快取線數(shù)據(jù)給解碼器109以將所述的數(shù)據(jù)解析成指令信息。解碼器109將快取線數(shù)據(jù)分割且格式化成指令與對(duì)應(yīng)于指令的信息,例如運(yùn)算域或相仿的信息。舉例來說,在處理器100支持x86指令集架構(gòu)的情況下,所述的指令例如為x86指令。此處提到的每一指令集架構(gòu)例如是一宏指令或依據(jù)處理器100所支持的指令集的一宏操作。解碼器109所提供的宏操作接著被加入循環(huán)隊(duì)列111,且被提供至指令轉(zhuǎn)譯器115。指令轉(zhuǎn)譯器115將每一宏操作轉(zhuǎn)譯成一或多個(gè)對(duì)應(yīng)的微指令或稱微操作(microoperations,uop)。所述的微指令或微操作依據(jù)處理器100的原生指令集編排而成。當(dāng)每一微操作被提供至重排序緩沖器121時(shí),一指令指標(biāo)(ip)也被決定且連同每一微操作被提供。微操作被提供至?xí)捍嫫鲃e名表117。暫存器別名表117用以依據(jù)每一微操作的程序排序、運(yùn)算域源或重命名信息,產(chǎn)生每一微操作的相依信息。

來自暫存器別名表117的每一微操作(連同相關(guān)聯(lián)的信息)依據(jù)程序順序被加入至重排序緩沖器121,且被加入至排程器123。排程器123具有至少一個(gè)隊(duì)列,所述的隊(duì)列用以儲(chǔ)存接收自暫存器別名表117的每一微操作以及其相依信息。當(dāng)微操作已準(zhǔn)備好被執(zhí)行時(shí),排程器123調(diào)度接收到的微操作至對(duì)應(yīng)的執(zhí)行單元125。儲(chǔ)存微操作被提供至儲(chǔ)存管線129以進(jìn)行處理,而所有其他的指令類型被提供至其他執(zhí)行單元131中的適當(dāng)?shù)膯卧?例如整數(shù)指令被提供至整數(shù)執(zhí)行單元,媒體指令被提供至媒體執(zhí)行單元,等等)。當(dāng)所有的相依關(guān)系被解決了,一微操作被認(rèn)為是準(zhǔn)備好進(jìn)行執(zhí)行。連同調(diào)度一微操作,暫存器別名表117將重排序緩沖器121的一儲(chǔ)存單元安排給所述的微操作。因此,所述的微操作按程序順序被分配至重排序緩沖器121中。重排序緩沖器121例如被編排成一循環(huán)隊(duì)列,以確保所述的微操作依據(jù)程序順序退出。暫存器別名表117也將對(duì)應(yīng)的指令指標(biāo)連同對(duì)應(yīng)的相依信息提供給重排序緩沖器121,以將指令指標(biāo)連同對(duì)應(yīng)的相依信息儲(chǔ)存于儲(chǔ)存有微操作的儲(chǔ)存運(yùn)算元與結(jié)果的儲(chǔ)存單元。在一實(shí)施例中,一個(gè)單獨(dú)的物理暫存器堆(prf)(未繪示)可以被包含進(jìn)來。暫存器別名表117可以還將物理暫存器堆中的一或多個(gè)物理暫存器分配或映射給每一個(gè)微操作,以儲(chǔ)存運(yùn)算元與結(jié)果。

執(zhí)行單元211的結(jié)果例如被傳回給重排序緩沖器121。重排序緩沖器121更新對(duì)應(yīng)的欄位且/或更新架構(gòu)暫存器(architecturalregister)或相仿的元件。在一物理暫存器堆的實(shí)施例中,重排序緩沖器121具有指標(biāo),指標(biāo)用以更新物理暫存器堆中對(duì)應(yīng)的暫存器。在一實(shí)施例中,暫存器別名表117將架構(gòu)暫存器映射至物理暫存器堆中的物理暫存器,并更新重排序緩沖器121中對(duì)應(yīng)于微操作的指標(biāo)或其他相仿的信息(未繪示)。重排序緩沖器121中的指標(biāo)例如在執(zhí)行中或在執(zhí)行之后被更新,且指標(biāo)用以于運(yùn)算中更新物理暫存器堆的暫存器中的內(nèi)容。重排序緩沖器121中的退出模塊135最后依據(jù)程序碼順序令微操作退出,以確保適當(dāng)?shù)倪\(yùn)算與軟件程序或應(yīng)用程序原本的指令一致。當(dāng)一微操作被標(biāo)記或者是指示有一例外事件時(shí),退出模塊135依據(jù)例外事件的類型采取適當(dāng)?shù)男袆?dòng)。相關(guān)細(xì)節(jié)請(qǐng)見以下詳述。

被加入至儲(chǔ)存管線129以進(jìn)行運(yùn)算的儲(chǔ)存微操作也被加入至儲(chǔ)存隊(duì)列127中的對(duì)應(yīng)的一個(gè)儲(chǔ)存單元。當(dāng)最初被從暫存器別名表117加入時(shí),儲(chǔ)存微操作的運(yùn)算元的地址可能是不被確知的。儲(chǔ)存微操作的運(yùn)算元的地址包含目標(biāo)地址(da)。當(dāng)儲(chǔ)存管線129決定被執(zhí)行的一儲(chǔ)存微操作的目標(biāo)地址,儲(chǔ)存管線129提供目標(biāo)地址至儲(chǔ)存隊(duì)列127中的對(duì)應(yīng)的儲(chǔ)存單元。

分支預(yù)測器119偵測由解碼器109提供的與/或循環(huán)隊(duì)列111中的分支宏操作輸出,且分支預(yù)測器119依據(jù)分支是否被采用而產(chǎn)生分支預(yù)測結(jié)果。分支預(yù)測器119與擷取單元107進(jìn)行通訊。擷取單元107依據(jù)分支預(yù)測結(jié)果可以在指令快取存儲(chǔ)器105中分支至不同的位置。擷取單元107與預(yù)擷取引擎103也彼此進(jìn)行通訊。因此,當(dāng)分支位置并不位于指令快取存儲(chǔ)器105中時(shí),預(yù)擷取引擎103從系統(tǒng)存儲(chǔ)器102取得對(duì)應(yīng)的位置,以輸入進(jìn)指令快取存儲(chǔ)器105。

在正常的運(yùn)算當(dāng)中,來自解碼器109的宏操作被經(jīng)由循環(huán)隊(duì)列111緩沖并被提供至指令轉(zhuǎn)譯器115。當(dāng)循環(huán)偵測器113判斷出循環(huán)中的指令多次遞回,所述的循環(huán)例如全部位于循環(huán)隊(duì)列111或者是至少部分位于循環(huán)隊(duì)列111,循環(huán)偵測器113辨識(shí)一循環(huán),所述循環(huán)中的指令重復(fù)地從循環(huán)隊(duì)列111中被取出而不是從指令快取存儲(chǔ)器105中被取出。在一實(shí)施例中,當(dāng)一預(yù)設(shè)數(shù)量的循環(huán)遞回發(fā)生時(shí),循環(huán)偵測器113偵測到一循環(huán)。在一具體的實(shí)施例中,遞回個(gè)數(shù)為24,但其他合適的遞回個(gè)數(shù)也可以被使用。在一實(shí)施例中,循環(huán)偵測器113假設(shè)循環(huán)會(huì)無限的持續(xù),因此循環(huán)偵測器113持續(xù)重復(fù)的循環(huán)運(yùn)算直到預(yù)測不正確(循環(huán)分支不被采用),此時(shí),系統(tǒng)被刷新,且擷取單元107開始在指令快取存儲(chǔ)器105的循環(huán)之后的下一個(gè)位置(或可能是另一個(gè)分支位置)取得信息。

在循環(huán)偵測器113已偵測到一循環(huán)的情況下,擷取單元107會(huì)持續(xù)地取得且將快取線加入至解碼器109的緩沖器,直到緩沖器被填滿,而擷取運(yùn)算會(huì)暫時(shí)地停住。在一實(shí)施例中,當(dāng)循環(huán)偵測器113偵測到一循環(huán)時(shí),擷取單元107重復(fù)地取得循環(huán)中的快取線。于另一實(shí)施例中,擷取單元107會(huì)被通知循環(huán)偵測器113已偵測到一循環(huán),且擷取單元107會(huì)開始讀取循環(huán)外的數(shù)據(jù)。例如,擷取單元107會(huì)開始讀取循環(huán)的下一個(gè)連續(xù)的位置。不論哪一個(gè)情況中,當(dāng)一個(gè)循環(huán)進(jìn)行中,解碼器109會(huì)被填滿。

當(dāng)擷取單元107將快取線數(shù)據(jù)加入解碼器109時(shí),擷取單元107也將對(duì)應(yīng)的快取線地址(ca)加入所有權(quán)隊(duì)列101中的一儲(chǔ)存單元并標(biāo)記此儲(chǔ)存單元為有效的。所有權(quán)隊(duì)列101會(huì)是被編排為循環(huán)緩沖器或相仿的結(jié)構(gòu),所有權(quán)隊(duì)列101會(huì)具有加入指標(biāo)與推出指標(biāo)以區(qū)別已被分配的儲(chǔ)存單元與已被解除分配的儲(chǔ)存單元。于另一實(shí)施例中,所有權(quán)隊(duì)列101中的每一儲(chǔ)存單元具有一有效位或一有效值以區(qū)別有效儲(chǔ)存單元與無效儲(chǔ)存單元。其中,每一被加入所有權(quán)隊(duì)列101的新的儲(chǔ)存單元的有效位被設(shè)定。在一實(shí)施例中,擷取單元107決定一所有權(quán)索引(owni)與一纏繞(wrap)位(wb)。所有權(quán)索引與纏繞位對(duì)應(yīng)于快取線的快取線地址,且對(duì)應(yīng)的所有權(quán)索引值與纏繞位值被連同快取線地址一同加入所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元。所有權(quán)索引唯一地定義出所有權(quán)隊(duì)列101中的每一儲(chǔ)存單元。在此纏繞位被用以偵測所有權(quán)隊(duì)列101中的一覆寫動(dòng)作。

暫存器別名表117用以依據(jù)對(duì)應(yīng)的所有權(quán)索引識(shí)別每一快取線中的最后的微操作,并用以標(biāo)注所述的快取線的微操作為最后一個(gè)的微操作,以使此信息被提供至重排序緩沖器121。當(dāng)退出模塊135退出一個(gè)微操作時(shí),退出模塊135決定被退出的微操作是否被標(biāo)注為所有權(quán)隊(duì)列101中被給定的一快取線的最后一個(gè)微操作。若是,退出模塊135指示所有權(quán)隊(duì)列101推出對(duì)應(yīng)的儲(chǔ)存單元或使所有權(quán)隊(duì)列中的對(duì)應(yīng)的儲(chǔ)存單元無效。

當(dāng)擷取單元107將每一新的快取線地址加入進(jìn)所有權(quán)隊(duì)列101中的一儲(chǔ)存單元時(shí),快取線地址也被提供至第一逾時(shí)偵測比較器137的輸入端。逾時(shí)偵測比較器137也自儲(chǔ)存隊(duì)列127中讀取每一有效的目標(biāo)地址(da),并比較每一目標(biāo)地址與新的快取線地址,以決定是否有相匹配者。逾時(shí)偵測比較器137可以被視為一種新儲(chǔ)存單元的比較器。當(dāng)快取線地址與任何的目標(biāo)地址相匹配,所有權(quán)隊(duì)列101中的儲(chǔ)存單元的對(duì)應(yīng)的一個(gè)逾時(shí)位被設(shè)定。逾時(shí)位stb指示一儲(chǔ)存微操作與快取線命中彼此,亦即,儲(chǔ)存指令已經(jīng)修改快取線或者是儲(chǔ)存指令將會(huì)修改快取線。當(dāng)一儲(chǔ)存指令與儲(chǔ)存在所有權(quán)隊(duì)列101一有效儲(chǔ)存單元的一快取線命中彼此或彼此沖突,任何依據(jù)此快取線產(chǎn)生的指令會(huì)是無效的。當(dāng)逾時(shí)位stb被設(shè)定的時(shí)候,任何來自于所述的快取線的微操作可能是無效的(也就是逾時(shí)的)。

所有權(quán)索引值與纏繞位值更被加進(jìn)或關(guān)聯(lián)至提供到解碼器109的對(duì)應(yīng)的快取線數(shù)據(jù)。解碼器109具有每一宏操作的一對(duì)應(yīng)的纏繞位值與所有權(quán)索引值以識(shí)別出是由解碼器109從哪個(gè)宏操作對(duì)應(yīng)的快取線取得。當(dāng)多個(gè)宏操作被自同一條快取線取出時(shí),同樣的纏繞位與所有權(quán)索引被指派給來自同一條快取線的每一宏操作。在一實(shí)施例中,宏操作并未與數(shù)據(jù)快取存儲(chǔ)器105中的快取線對(duì)齊時(shí),每一宏操作還具有一跨立位sdb。跨立位sdb用以識(shí)別出一宏指令跨立于兩條不同的快取線的情況。也就是說,一宏指令開始于其中一條快取線并結(jié)束于下一個(gè)連續(xù)的快取線。當(dāng)這樣的情況發(fā)生時(shí),解碼器109加入第一條線的所有權(quán)索引并設(shè)定宏操作的跨立位為真。當(dāng)宏操作被包含進(jìn)一單一的快取線,跨立位被設(shè)定為假。當(dāng)被加入進(jìn)指令轉(zhuǎn)譯器115時(shí),每一宏操作具有對(duì)應(yīng)的纏繞位、所有權(quán)索引與跨立位。當(dāng)一個(gè)位或一個(gè)欄位被設(shè)定為真或假時(shí),所述的位或欄位(具有至少一個(gè)位)被設(shè)定為邏輯“1”以設(shè)定為真,且被設(shè)定為邏輯“0”以設(shè)定為假。

指令轉(zhuǎn)譯器115將每一宏操作轉(zhuǎn)譯成一或多個(gè)微操作。在轉(zhuǎn)譯的過程當(dāng)中,由一宏操作產(chǎn)生的每一微操作同樣具有與所來自的宏操作一樣的纏繞位值、所有權(quán)索引值與跨立位值。因此,當(dāng)一個(gè)宏操作被轉(zhuǎn)譯成三個(gè)個(gè)別的微操作時(shí),三個(gè)微操作中的每一具有與原本的宏操作相同的纏繞位值、所有權(quán)索引值與跨立位值。當(dāng)傳輸經(jīng)過暫存器別名表117時(shí),纏繞位值、所有權(quán)索引值與跨立位值還是被保留于每一微操作。

一示范性微操作uopx示于圖1中的118,且示范性微操作uopx用以被暫存器別名表117推出與被加入進(jìn)重排序緩沖器121及排程器123中的為處理器100所定義的任意一個(gè)微操作。每一微操作具有多個(gè)欄位以便于對(duì)應(yīng)的微操作的運(yùn)算或執(zhí)行被處理器100的執(zhí)行系統(tǒng)106所執(zhí)行。一或多個(gè)欄位(未繪示)用以識(shí)別特定的指令與指令類型及其相關(guān)聯(lián)的運(yùn)算元,例如常數(shù)運(yùn)算元、地址、儲(chǔ)存位置與暫存器索引等等的。其他的欄位被提供以儲(chǔ)存指令指標(biāo)ip、纏繞位wb、所有權(quán)索引owni與跨立位sdb。如以下所述地,每一微操作還具有欄位t1以指示第一類型的例外事件,每一微操作還具有欄位t2以指示第二類型的例外事件,每一微操作還具有欄位l以指示指令是否是被暫存器別表117標(biāo)記為快取線中的最后指令。

當(dāng)每一微操作自暫存器別名表117中推出且被加入重排序緩沖器121與排程器123中時(shí),暫存器別名表117依據(jù)微操作的所有權(quán)索引owni的索引值存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元,并設(shè)定取出的儲(chǔ)存單元中的一個(gè)執(zhí)行位exb。當(dāng)微操作的跨立位為真以指示其為跨立指令時(shí),暫存器別名表117設(shè)定所有權(quán)隊(duì)列101中下一個(gè)連續(xù)的儲(chǔ)存單元的執(zhí)行位。除此之外。儲(chǔ)存單元的執(zhí)行位用以偵測一未被偵測為逾時(shí)的儲(chǔ)存微操作的之后的命中。

當(dāng)每一微操作被自暫存器別名表117中輸出時(shí),覆寫偵測器141通過微操作所具有的所有權(quán)索引值存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元,且覆寫偵測器141通過微操作所具有的所有權(quán)索引值讀取被取出的儲(chǔ)存單元的纏繞位值。當(dāng)微操作的纏繞位值并不匹配于所有權(quán)隊(duì)列101中的對(duì)應(yīng)的儲(chǔ)存單元的纏繞位值時(shí),一覆寫作動(dòng)曾經(jīng)發(fā)生,且覆寫偵測器141設(shè)置微操作的位t1(或是標(biāo)記欄位t1為真)以指示一第一例外事件或是第一類型的例外事件于微操作被退出時(shí)被執(zhí)行。在一實(shí)施例中,在微操作被加入重排序緩沖器121前,位t1于微操作被提出之時(shí)可以被覆寫偵測器141設(shè)定。在另一實(shí)施例中,當(dāng)被加入至重排序緩沖器121時(shí)或當(dāng)被加入至重排序緩沖器121之后,重排序緩沖器121中的儲(chǔ)存單元的位t1被覆寫偵測器141設(shè)定或是被重排序緩沖器121依據(jù)覆寫偵測器141的指示設(shè)定。一個(gè)纏繞位不匹配通常指示一循環(huán)引發(fā)所有權(quán)隊(duì)列101中的一覆寫,以至于對(duì)應(yīng)的快取線不再偵測自修正程序碼。退出模塊135偵測t1被設(shè)定以指示對(duì)應(yīng)于重排序緩沖器121的微操作儲(chǔ)存單元的微操作被標(biāo)記成第一類型的例外事件。覆寫意味著所有權(quán)隊(duì)列101中的一個(gè)儲(chǔ)存單元被覆寫而使得關(guān)聯(lián)于對(duì)應(yīng)快取線的自修正程序碼可能變得無法偵測而導(dǎo)致不正確的結(jié)果。更進(jìn)一步地來說,第一類型的例外事件刷新了機(jī)器以預(yù)防不正確的狀況。

當(dāng)每一微操作被自暫存器別名表117中輸出時(shí),第一逾時(shí)偵測器143依據(jù)微操作所具有的所有權(quán)索引存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元,且第一逾時(shí)偵測器143依據(jù)微操作所具有的所有權(quán)索引讀取取出的儲(chǔ)存單元的逾時(shí)位。當(dāng)微操作的跨立位為真時(shí),第一逾時(shí)偵測器43還讀取所有權(quán)隊(duì)列101中的下一個(gè)連續(xù)的儲(chǔ)存單元的逾時(shí)位stb。當(dāng)所有權(quán)隊(duì)列101中的此逾時(shí)位stb為真,或是微操作如跨立位sdb所示地為跨立指令且所有權(quán)隊(duì)列101中的下一個(gè)連續(xù)的儲(chǔ)存單元的逾時(shí)位為真,則第一逾時(shí)偵測器143通過設(shè)定欄位t1為真(或是通過設(shè)定位t1)以標(biāo)記微操作成第一類型的例外事件。逾時(shí)偵測器143可以是指用以當(dāng)指令被提出時(shí),用以偵測可能的無效指令的提交逾時(shí)偵測器。如覆寫偵測器141的例子,欄位t1于被加入進(jìn)重排序緩沖器121中的一儲(chǔ)存單元前、于被加入進(jìn)重排序緩沖器121中的一儲(chǔ)存單元時(shí)、或于被加入進(jìn)重排序緩沖器121中的一儲(chǔ)存單元后被設(shè)定為真,可以是由第一逾時(shí)偵測器143或是由重排序緩沖器121設(shè)定為真。如前述地,逾時(shí)位stb用以指示快取線已被一儲(chǔ)存微操作修改,因此指令可能是無效的。

每當(dāng)儲(chǔ)存管線129產(chǎn)生一目標(biāo)地址(da)給對(duì)應(yīng)的一儲(chǔ)存微操作時(shí),目標(biāo)地址除了被提供以更新儲(chǔ)存隊(duì)列127中對(duì)應(yīng)的一儲(chǔ)存單元之外,目標(biāo)地址還提供給第二逾時(shí)偵測比較器139的一輸入端。逾時(shí)偵測比較器139還存取所有有效的快取線地址且比較新的目標(biāo)地址于所有權(quán)隊(duì)列101中每一有效的快取線地址。逾時(shí)偵測比較器139可做為新目標(biāo)地址的比較器。當(dāng)有一相匹配結(jié)果時(shí),逾時(shí)偵測比較器139設(shè)定所有權(quán)隊(duì)列101中的對(duì)應(yīng)的儲(chǔ)存單元的逾時(shí)位為真。此外,當(dāng)逾時(shí)偵測比較器139偵測到有一相匹配結(jié)果時(shí),對(duì)應(yīng)的所有權(quán)索引被提供至第二逾時(shí)偵測器145的一輸入端。逾時(shí)偵測器145存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元,且讀取此儲(chǔ)存單元中的執(zhí)行位exb。當(dāng)儲(chǔ)存單元的執(zhí)行位exb被設(shè)定為真,則逾時(shí)偵測器145使重排序緩沖器121中的儲(chǔ)存微操作儲(chǔ)存單元被標(biāo)記成第二例外事件類型或者是第二類型的例外事件,這是通過設(shè)定儲(chǔ)存單元的欄位t2為真。逾時(shí)偵測器145可做為用以偵測正執(zhí)行中的可能的無效指令的執(zhí)行中逾時(shí)偵測器。逾時(shí)偵測器145可以直接存取重排序緩沖器121中的儲(chǔ)存微操作儲(chǔ)存單元以設(shè)定t2,或者逾時(shí)偵測器145可以指示重排序緩沖器121以設(shè)定t2。

關(guān)聯(lián)于重排序緩沖器121中的一特定的微操作uopx的示范性的微操作118簡化后被示于圖1中。每一個(gè)別的微操作儲(chǔ)存單元具有欄位t1以指示第一類型的例外事件,且每一個(gè)別的微操作儲(chǔ)存單元具有欄位t2以指示第二類型的例外事件,每一個(gè)別的微操作儲(chǔ)存單元具有欄位l以指示指令是否為被暫存器別名表117標(biāo)記的快取線的最后一個(gè)微操作指令。當(dāng)微操作為一快取線的最后一個(gè)微操作,欄位l被設(shè)定為真,反之則欄位l被設(shè)定為假。退出模塊135偵測重排序緩沖器121的微操作的儲(chǔ)存單元的欄位t1與欄位t2,且退出模塊135執(zhí)行或初始化對(duì)應(yīng)的例外常式(routine)或者是程序。然而,包含儲(chǔ)存微操作的任何的微操作都可能被標(biāo)記成第一類型的例外事件,但只有儲(chǔ)存微操作會(huì)被標(biāo)記成第二類型的例外事件。

退出模塊135偵測每一微操作于何時(shí)準(zhǔn)備好退出,例如當(dāng)微操作為重排序緩沖器121中最老的指令時(shí)。當(dāng)一個(gè)微操作準(zhǔn)備好退出時(shí),退出模塊135還偵測對(duì)應(yīng)的微操作的儲(chǔ)存單元中的欄位t1、欄位t2與欄位l。當(dāng)一微操作的欄位t1為真時(shí),退出模塊135產(chǎn)生第一類型的例外事件給所述的微操作,且當(dāng)欄位t2為真時(shí),退出模塊135產(chǎn)生第二類型的例外事件給所述的微操作。當(dāng)欄位t1與欄位t2為假且欄位l為真時(shí),退出模塊135指示所有權(quán)隊(duì)列101推出所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元或是使所有權(quán)隊(duì)列101中的所述的儲(chǔ)存單元無效化,而有效率地從所有權(quán)隊(duì)列101中移除完整的快取線。

當(dāng)重排序緩沖器121中最老的微操作(也就是將要退出)被指示為第一類型的例外事件,重排序緩沖器121在處理器100中廣播一對(duì)應(yīng)的例外事件訊號(hào),且處理系統(tǒng)被刷新。在這樣的情況下,執(zhí)行管線中的任何的宏操作與微操作被有效率地?zé)o效化,包括導(dǎo)致所述的例外事件的微操作。當(dāng)?shù)谝活愋偷睦馐录l(fā)生時(shí),所有未退出的微操作被刷新,包括儲(chǔ)存隊(duì)列127中任何未退出的儲(chǔ)存微操作。退出的儲(chǔ)存微操作仍持續(xù)停留在儲(chǔ)存隊(duì)列127中,直到其數(shù)據(jù)被提交給存儲(chǔ)器架構(gòu)(如數(shù)據(jù)快取存儲(chǔ)器130與/或系統(tǒng)存儲(chǔ)器102)。導(dǎo)致第一類型的例外事件的微操作并不被允許退出,微操作記錄于暫存器重排緩沖器121中對(duì)應(yīng)的指令指標(biāo)可被使用以存取微操作于指令快取存儲(chǔ)器105中的地址。預(yù)擷取引擎103與擷取單元107暫時(shí)的停住。處理器100中斷于處理器100的一微程序碼唯讀存儲(chǔ)器(未繪示)中的例外常式,且對(duì)應(yīng)的例外程序碼用以指示例外事件的類型。一旦處理系統(tǒng)被刷新時(shí),例外常式取得指令指標(biāo)且將指令指標(biāo)傳給擷取單元107以重新擷取關(guān)聯(lián)于導(dǎo)致例外事件的微操作的宏操作。

儲(chǔ)存微操作的第二類型的例外事件相仿于其他類型的微操作的第一類型的例外事件。在此情況中,儲(chǔ)存微操作被允許退出,使儲(chǔ)存微操作完成了其運(yùn)算且更新其目標(biāo)地址所指出的存儲(chǔ)器位置。因?yàn)榇鎯?chǔ)器位置先被指令快取存儲(chǔ)器105所擁有,且儲(chǔ)存微操作是需要被處理器100中的數(shù)據(jù)快取存儲(chǔ)器130所擁有的數(shù)據(jù)運(yùn)算,因此一監(jiān)控(snoop)單元被初始化以使指令快取存儲(chǔ)器105中對(duì)應(yīng)的快取線無效化。存儲(chǔ)器修正與無效化被確保會(huì)在例外事件時(shí)發(fā)生。相仿于第一類型的例外事件,第二類型的例外事件的例外常式刷新機(jī)器,且存取與傳遞指令指標(biāo)至擷取單元,以于所述的位置重新開始。因?yàn)閷?dǎo)致第二類型的例外事件的儲(chǔ)存微操作被允許完成,指令指標(biāo)被增加至儲(chǔ)存微操作于指令快取存儲(chǔ)器105之后的下一指令,且運(yùn)算由儲(chǔ)存指令之后的所述的位置繼續(xù)。

圖2為依據(jù)一實(shí)施例實(shí)作的圖1中的所有權(quán)隊(duì)列101具有對(duì)應(yīng)于其他所有權(quán)處理模塊的接口的一簡化功能區(qū)塊圖。所有權(quán)隊(duì)列101具有多個(gè)儲(chǔ)存單元。每一儲(chǔ)存單元具有一欄位wrap以儲(chǔ)存纏繞位。每一儲(chǔ)存單元具有一欄位owni以儲(chǔ)存對(duì)應(yīng)的一索引值。每一儲(chǔ)存單元具有一執(zhí)行欄位以儲(chǔ)存對(duì)應(yīng)的一執(zhí)行位。每一儲(chǔ)存單元具有一有效欄位以儲(chǔ)存有效位。每一儲(chǔ)存單元具有一快取線地址欄位以儲(chǔ)存對(duì)應(yīng)的一快取線地址。每一儲(chǔ)存單元具有一逾時(shí)欄位以儲(chǔ)存對(duì)應(yīng)的逾時(shí)位。

在一實(shí)施例中,所有權(quán)索引為一計(jì)數(shù)值。當(dāng)每一儲(chǔ)存單元被加入進(jìn)所有權(quán)隊(duì)列101時(shí),所述的計(jì)數(shù)值增加。為了確保所有權(quán)隊(duì)列101中的每一儲(chǔ)存單元的所有權(quán)索引具有一獨(dú)特的索引值,所有權(quán)索引的位數(shù)b對(duì)應(yīng)于所有權(quán)隊(duì)列101中的儲(chǔ)存單元的個(gè)數(shù)n,例如2b≥n。在一個(gè)例子中,如圖2所示,所有權(quán)隊(duì)列101中的儲(chǔ)存單元的數(shù)量為n=32,且所有權(quán)索引的位為5。在一實(shí)施例中,擷取單元107以類似方式?jīng)Q定纏繞位,纏繞位做為所有權(quán)索引的一個(gè)額外的最高有效位。在這樣的情況下,當(dāng)所有權(quán)索引從0計(jì)數(shù)到一最大值時(shí),纏繞位是0b(b用以代表一二進(jìn)位數(shù)),其中最大值用以指示所有權(quán)隊(duì)列101中的儲(chǔ)存單元的總個(gè)數(shù)。當(dāng)所有權(quán)被重設(shè)為0且重新累加至最大值時(shí),且纏繞位是1b。換句話說,對(duì)于所有權(quán)隊(duì)列101每一次完整的傳遞(pass),纏繞位wb被切換于兩值之間。對(duì)于所有權(quán)索引的位數(shù)b,儲(chǔ)存單元的總數(shù)可以少于儲(chǔ)存單元最大可能的個(gè)數(shù)。舉例來說,對(duì)總數(shù)量為26的儲(chǔ)存單元來說,在第一次遞回時(shí)(owni從十進(jìn)位的0累計(jì)至十進(jìn)位的25,且wb為0),wb|owni從0|00000b計(jì)數(shù)至0|11001b。接著,在第二次遞回中(owni從十進(jìn)位的0計(jì)數(shù)至十進(jìn)位的25且wb為1),從1|00000b計(jì)數(shù)至1|11001b。后續(xù)依上述的方式重復(fù)。

如前述地,擷取單元107將一新的快取線地址ca插入快取線地址欄位,并設(shè)置有效欄位中對(duì)應(yīng)的有效位,并決定與插入對(duì)應(yīng)的所有權(quán)索引至欄位owni,并決定與插入對(duì)應(yīng)的纏繞位wb至欄位wrap。新被加入的快取線地址被提供至一逾時(shí)偵測比較器137的一輸入端。逾時(shí)偵測比較器137也從儲(chǔ)存隊(duì)列127接收目標(biāo)地址da。當(dāng)新的快取線地址與來自儲(chǔ)存隊(duì)列的任何目標(biāo)地址之間有相匹配的結(jié)果時(shí),逾時(shí)欄位中對(duì)應(yīng)的逾時(shí)位被設(shè)定為真。當(dāng)每一微操作被自暫存器別名表117提出時(shí),它依據(jù)微操作的所有權(quán)索引存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元以設(shè)定儲(chǔ)存單元對(duì)應(yīng)的執(zhí)行位exb。此外,當(dāng)微操作的跨立位被設(shè)定以指示一跨立微操作時(shí),暫存器別名表117存取所有權(quán)隊(duì)列101中的下一個(gè)儲(chǔ)存單元并設(shè)定該儲(chǔ)存單元對(duì)應(yīng)的執(zhí)行位。當(dāng)一快取線的最后的微操作退出時(shí),暫存器重排緩沖器121存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元并重置或清除有效位。

儲(chǔ)存管線129決定每一儲(chǔ)存微操作的目標(biāo)地址并儲(chǔ)存目標(biāo)地址于儲(chǔ)存隊(duì)列127的對(duì)應(yīng)的儲(chǔ)存單元。目標(biāo)地址也被提供至第二逾時(shí)偵測比較器139。第二逾時(shí)偵測比較器139從所有權(quán)隊(duì)列101中存取快取線地址ca。當(dāng)新被決定的目標(biāo)地址匹配來自所有權(quán)隊(duì)列101的快取線地址中的任何一個(gè)時(shí),逾時(shí)偵測比較器139設(shè)定所有權(quán)隊(duì)列101中的對(duì)應(yīng)的儲(chǔ)存單元的逾時(shí)位。此外,匹配的所有權(quán)索引的索引值被提供至第二逾時(shí)偵測器145。第二逾時(shí)偵測器145依據(jù)所有權(quán)索引值存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元以存取對(duì)應(yīng)的執(zhí)行位exb。當(dāng)所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元的執(zhí)行位被設(shè)定為真,逾時(shí)偵測器145將重排序緩沖器121中沖突的儲(chǔ)存微操作的儲(chǔ)存單元標(biāo)記(或是令其被標(biāo)記)成第二類型的例外事件。

如前述地,覆寫偵測器141從暫存器別名表117提出的微操作接收纏繞位值與所有權(quán)索引值,且覆寫偵測器141依據(jù)所有權(quán)索引從所有權(quán)隊(duì)列101中的對(duì)應(yīng)的儲(chǔ)存單元存取纏繞位值。當(dāng)所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元的纏繞位wb不匹配于微操作的纏繞位,覆寫偵測器141將微操作標(biāo)記(或是令其被標(biāo)記)成第一類型的例外事件。此外,第一逾時(shí)偵測器143從暫存器別名表117提出的微操作接收所有權(quán)索引值與跨立位值,且第一逾時(shí)偵測器143依據(jù)所有權(quán)索引值以存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元的逾時(shí)位。當(dāng)被暫存器別名表117提出的微操作中的跨立位為真以指示一跨立微操作,則逾時(shí)偵測器143存取所有權(quán)隊(duì)列101中下一個(gè)連續(xù)的儲(chǔ)存單元的逾時(shí)位。當(dāng)被存取的儲(chǔ)存單元的任何一個(gè)的逾時(shí)位被設(shè)定為真,逾時(shí)偵測器143將微操作標(biāo)記(或是令其被標(biāo)記)成第一類型的例外事件。

一第一儲(chǔ)存單元顯示于所有權(quán)隊(duì)列101的頂部,第一儲(chǔ)存單元具有一纏繞位wb、一所有權(quán)索引、一執(zhí)行位exb、一有效位、一對(duì)應(yīng)的快取線地址ca_33與一逾時(shí)位stb。其中,纏繞位wb=1b。所有權(quán)索引的索引值為00000b。執(zhí)行位的值為0b。有效位的值為1b。逾時(shí)位的值為0b。一所有權(quán)隊(duì)列101中的第二儲(chǔ)存單元位于第一儲(chǔ)存單元的下方。第二儲(chǔ)存單元具有一纏繞位wb、一所有權(quán)索引、一執(zhí)行位exb、一有效位、一對(duì)應(yīng)的快取線地址ca_34與一逾時(shí)位stb。其中,纏繞位wb=1b。所有權(quán)索引的索引值為00001b。執(zhí)行位的值為0b。有效位的值為1b。逾時(shí)位的值為0b。一所有權(quán)隊(duì)列101中的第三儲(chǔ)存單元位于第二儲(chǔ)存單元的下方。第三儲(chǔ)存單元具有一纏繞位wb、一所有權(quán)索引、一執(zhí)行位exb、一有效位、一對(duì)應(yīng)的快取線地址ca_03與一逾時(shí)位stb。其中,纏繞位wb=0b。所有權(quán)索引的索引值為00010b。執(zhí)行位的值為0b。有效位的值為0b。逾時(shí)位的值為0b。往所有權(quán)隊(duì)列101的末端,最后五個(gè)儲(chǔ)存單元分別具有快取線地址ca_28至ca_32與對(duì)應(yīng)的所有權(quán)索引,分別具有所有權(quán)索引值11011b–11111b。具有快取線地址ca_28的儲(chǔ)存單元還具有執(zhí)行位、有效位與逾時(shí)位。執(zhí)行位、有效位與逾時(shí)位的值皆為0b。而接下來分別具有快取線地址ca_29–ca_31的三個(gè)儲(chǔ)存單元分別具有值為1b的儲(chǔ)存位與值為1b的有效位。具有快取線地址ca_29的儲(chǔ)存單元與具有快取線地址ca_31還具有值為0b的逾時(shí)位。而具有快取線地址ca_30的儲(chǔ)存單元?jiǎng)t具有值為1b的逾時(shí)位。具有快取線地址ca_32的最后儲(chǔ)存單元為有效但尚未執(zhí)行,且被標(biāo)記為逾時(shí)的。

在第一次傳遞中,快取線地址ca_1至快取線地址ca_32以具有值0b的纏繞位填滿所有權(quán)隊(duì)列101。在第二次傳遞剛開始時(shí),第一次傳遞中最前面兩個(gè)儲(chǔ)存單元會(huì)被具有快取線地址ca_33與具有快取線地址ca_34與所有權(quán)索引值00000b所有權(quán)索引值00001b的儲(chǔ)存單元給分別覆寫,儲(chǔ)存單元各具有值為1b的纏繞位wb。這些新的儲(chǔ)存單元(33與34)為有效的,但尚未有任何微操作被執(zhí)行。第三至第二十八個(gè)儲(chǔ)存單元已被無效化(可能是完成再無效)。第二十九與第三十一儲(chǔ)存單元為有效的,且每一具有至少一微操作正在執(zhí)行中。第三十儲(chǔ)存單元為有效的且具有至少一仍在執(zhí)行中的微操作,但已被標(biāo)記為逾時(shí)的。第三十二個(gè)儲(chǔ)存單元并不具有從暫存器別名表117中被提出的微操作,因此第三十二個(gè)儲(chǔ)存單元尚未被設(shè)定為執(zhí)行,但是其逾時(shí)位已被設(shè)定以指示與一儲(chǔ)存指令沖突或命中。

當(dāng)擷取單元107計(jì)數(shù)所有權(quán)索引值至11111b,同時(shí)纏繞位wb的值如所有權(quán)隊(duì)列101中最后的具有快取線地址ca_32(例如第一次傳遞)的儲(chǔ)存單元所指示的為0b,它設(shè)定纏繞位的值如具有快取線地址ca_33(開始第二次傳遞)的儲(chǔ)存單元所指示的為1b且將所有權(quán)索引值重置為00000b重新開始計(jì)數(shù)。后續(xù)被擷取單元107讀取的三十一個(gè)儲(chǔ)存單元的纏繞位wb的值持續(xù)維持為1b直到所有權(quán)索引被重置為00000b,操作以如上述的方式重復(fù)。當(dāng)一個(gè)循環(huán)被偵測到時(shí),循環(huán)隊(duì)列111不再自解碼器109加入宏操作,擷取單元107仍然持續(xù)地自快取存儲(chǔ)器105讀取快取線至所有權(quán)隊(duì)列101與解碼器109,所有權(quán)隊(duì)列101中的對(duì)應(yīng)于循環(huán)指令的一儲(chǔ)存單元可能被擷取單元107覆寫。在這樣的情況下,處理器100可能不能夠再為所述的快取線偵測自修正程序碼。被暫存器別名表117提出的而位于一循環(huán)中的微操作的纏繞位wb的值不再與所有權(quán)隊(duì)列101中被覆寫的儲(chǔ)存單元的纏繞位的值一樣。在被提出的微操作的纏繞位值與所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元的纏繞位值不匹配的情況下,覆寫偵測器141偵測被覆寫的快取線并將微操作標(biāo)記(或是令其被標(biāo)記)成第一類型的例外事件。即使所有權(quán)隊(duì)列101中的儲(chǔ)存單元被標(biāo)記為無效或被自隊(duì)列中推出,這依然為真。一個(gè)無效的或被推出的儲(chǔ)存單元持續(xù)停留在所有權(quán)隊(duì)列101中直到被覆寫。

圖3為依據(jù)一實(shí)施例中處理前端104的運(yùn)算的流程示意圖。在第一個(gè)區(qū)塊301,快取線(例如從系統(tǒng)存儲(chǔ)器102)被讀取且儲(chǔ)存于指令快取存儲(chǔ)器105中,例如是通過信息預(yù)擷取引擎103。在下一個(gè)區(qū)塊303,下一條快取線的一個(gè)纏繞位與所有權(quán)索引值被決定,例如是通過擷取單元107,且這些信息連同快取線地址被加入所有權(quán)隊(duì)列101中下一個(gè)可用的儲(chǔ)存單元。擷取單元107還設(shè)定所有權(quán)隊(duì)列101中的儲(chǔ)存單元中的有效位。如前述地,所有權(quán)隊(duì)列101例如被實(shí)施成一循環(huán)的緩沖器,所述的有效位用以決定任意時(shí)點(diǎn)中所有權(quán)隊(duì)列101中的當(dāng)前的有效儲(chǔ)存單元。在一可替代的實(shí)施例中,加入指標(biāo)與推出指標(biāo)可被使用。

如下一個(gè)區(qū)塊305所示,當(dāng)一個(gè)新的快取線地址被加入所有權(quán)隊(duì)列101,新的快取線地址被比較于儲(chǔ)存隊(duì)列127中的每一個(gè)有效的目標(biāo)地址。如下一個(gè)詢問區(qū)塊307所示,當(dāng)有一命中被決定時(shí),在區(qū)塊309中,接收新的快取線地址的儲(chǔ)存單元的逾時(shí)位stb被設(shè)定。在逾時(shí)位值被設(shè)定或者并沒有命中時(shí),所有權(quán)隊(duì)列101的操作結(jié)束。

如區(qū)塊311所示,同時(shí),當(dāng)一個(gè)新的快取線地址被加入所有權(quán)隊(duì)列101中時(shí),對(duì)應(yīng)的快取線數(shù)據(jù)連同纏繞位與所有權(quán)索引被加入解碼器109。而在下一個(gè)區(qū)塊313,解碼器109解析快取線中的宏操作,且將宏運(yùn)算所在的快取線的對(duì)應(yīng)的纏繞位與所有權(quán)索引加入進(jìn)每一宏運(yùn)算。此外,解碼器109決定宏操作是否跨立兩條快取線,也就是說宏操作起始于一條快取線并結(jié)束于下一條連續(xù)的快取線。若是,則宏操作的跨立位被設(shè)定。此時(shí),每一宏操作具有纏繞位值、所有權(quán)索引值與跨立位值。

如區(qū)塊315所示,宏操作接著被加入循環(huán)隊(duì)列111,且如區(qū)塊317所示,接著被加入指令轉(zhuǎn)譯器115。宏操作被轉(zhuǎn)譯成對(duì)應(yīng)的微操作。如前述地,每一宏操作被轉(zhuǎn)換成一或多個(gè)微操作。每一微操作具有被轉(zhuǎn)譯的宏操作的纏繞位值、所有權(quán)索引值與跨立位值。此時(shí),每一微操作的指令指標(biāo)也被指定為加入于微操作。在另一例子中,是在區(qū)塊319或321時(shí),指令指標(biāo)被加入于每一微操作。在這些架構(gòu)中的其中任一,指令指標(biāo)最終連同每一微操作被加入重排序緩沖器121。在下一個(gè)區(qū)塊319中,微操作被加入暫存器別名表117中,暫存器別名表117用以依據(jù)程序順序、運(yùn)算元與重命名信息產(chǎn)生每一微操作的相依信息。在區(qū)塊321中,暫存器別名表117識(shí)別出且標(biāo)注出位于一快取線最后的每一微操作,如前述的一實(shí)施例,是通過設(shè)定欄位l為真。此信息被傳給重排序緩沖器121且被提供給重排序緩沖器121的對(duì)應(yīng)的儲(chǔ)存單元,因此退出模塊135可以辨識(shí)每一快取線的指令何時(shí)被處理。接著,微操作被從暫存器別名表117中提出以進(jìn)行執(zhí)行以及后述的所有權(quán)與例外事件處理。

圖4為依據(jù)一實(shí)施例中所有權(quán)與例外事件處理的流程示意圖。在第一個(gè)區(qū)塊401,暫存器別名表117提出每一個(gè)微操作至重排序緩沖器121與排程器123。此外每一儲(chǔ)存微操作還被加入儲(chǔ)存隊(duì)列127中。相關(guān)操作繼續(xù)進(jìn)行至區(qū)塊402,自暫存器別名表117中提出的微操作的所有權(quán)索引用于存取所有權(quán)隊(duì)列101中對(duì)應(yīng)的儲(chǔ)存單元。此操作已說明于前述的處理器100的多個(gè)功能方塊的敘述中,但可以集中于共同的邏輯。當(dāng)微操作被自暫存器別名表117中提出時(shí),相關(guān)操作接著進(jìn)行至三個(gè)不同的區(qū)塊,區(qū)塊403、區(qū)塊405與區(qū)塊411。

在區(qū)塊403中,儲(chǔ)存單元的執(zhí)行位exb被設(shè)定。此外,若微操作的跨立位也為真,所有權(quán)隊(duì)列101中的下一個(gè)連續(xù)的儲(chǔ)存單元也被取出,且儲(chǔ)存單元的執(zhí)行位也被設(shè)定。此時(shí),所有權(quán)隊(duì)列101中被取出微操作的至少一快取線被標(biāo)記為執(zhí)行中,亦即,至少一快取線的微操作被提出以進(jìn)行執(zhí)行。在一或二執(zhí)行位被設(shè)定后,流程圖中的此分支被完成。

在區(qū)塊405,儲(chǔ)存單元中對(duì)應(yīng)的纏繞位wb被取得且被比較于微操作的纏繞位wb。當(dāng)微操作的纏繞位wb與所有權(quán)隊(duì)列101中的儲(chǔ)存單元對(duì)應(yīng)的纏繞位wb不匹配,如在下個(gè)詢問區(qū)塊407,操作進(jìn)行至區(qū)塊409,而微操作標(biāo)記成第一類型的例外事件(例如通過設(shè)定t1為真)。在標(biāo)記(不匹配)之后或在纏繞位wb被判斷為匹配,流程圖的此分支的相關(guān)操作結(jié)束。

在區(qū)塊411中,所有權(quán)隊(duì)列101中取出的儲(chǔ)存單元的逾時(shí)位stb被取得。此外,當(dāng)微操作的跨立位值為真,所有權(quán)隊(duì)列101的下一個(gè)連續(xù)的儲(chǔ)存單元的逾時(shí)位也被取得。在區(qū)塊413中,判斷逾時(shí)位是否被設(shè)置。當(dāng)兩個(gè)逾時(shí)位其中之一被設(shè)定時(shí),相關(guān)操作進(jìn)行至區(qū)塊409,微操作標(biāo)記成第一類型的例外事件(例如通過設(shè)定t1為真)。在于區(qū)塊409中標(biāo)記微操作為第一類型的例外事件之后或當(dāng)兩個(gè)逾時(shí)位都未被設(shè)定時(shí),流程圖的此分支的操作結(jié)束。

當(dāng)如前述地準(zhǔn)備好被執(zhí)行時(shí),被提出至排程器123的每一微操作最終會(huì)被調(diào)度至多個(gè)執(zhí)行單元125中的對(duì)應(yīng)的其中之一。還包含了如區(qū)塊415所示地調(diào)度儲(chǔ)存微操作至儲(chǔ)存管線129。在下一個(gè)區(qū)塊417,儲(chǔ)存管線129決定儲(chǔ)存微操作的目標(biāo)地址且更新儲(chǔ)存隊(duì)列127中對(duì)應(yīng)的儲(chǔ)存單元。在下一個(gè)區(qū)塊419,當(dāng)每一新的目標(biāo)地址被決定,目標(biāo)地址被比較于所有權(quán)隊(duì)列101中的有效快取線地址。在區(qū)塊421中,判斷新的目標(biāo)地址是否匹配于有效的快取線地址。當(dāng)新的目標(biāo)地址并不匹配于所有權(quán)隊(duì)列101中的有效的快取線地址任何一個(gè),相關(guān)操作完成。

當(dāng)一個(gè)新的目標(biāo)地址匹配于一個(gè)有效的快取線地址,相關(guān)操作進(jìn)行至區(qū)塊423,每個(gè)匹配的一儲(chǔ)存單元的逾時(shí)位被設(shè)定。此外,匹配的儲(chǔ)存單元的所有權(quán)索引被傳至逾時(shí)偵測器145。在下一個(gè)區(qū)塊425,逾時(shí)偵測器145依據(jù)被提供的所有權(quán)索引存取對(duì)應(yīng)的儲(chǔ)存單元以取得儲(chǔ)存單元的執(zhí)行位exb。在下一個(gè)詢問區(qū)塊427中,當(dāng)執(zhí)行位exb被決定為真,相關(guān)操作進(jìn)行至區(qū)塊429,沖突的儲(chǔ)存微操作標(biāo)記成第二類型的例外事件(例如通過設(shè)定t2為真)。在區(qū)塊427中,當(dāng)執(zhí)行位exb被決定為假或是在區(qū)塊429標(biāo)記儲(chǔ)存微操作之后,操作結(jié)束。

圖5為依據(jù)一實(shí)施例中執(zhí)行、退出與例外事件處理的流程示意圖。在第一個(gè)區(qū)塊501中,微操作從排程器123如前述地被調(diào)度至執(zhí)行單元125。被調(diào)度的為操作會(huì)執(zhí)行,但特定操作情況下并非如此。在下一個(gè)區(qū)塊503,重排序緩沖器121的退出模塊135識(shí)別出下一個(gè)要退出的微操作。在下一個(gè)詢問區(qū)塊505,待退出的微操作的欄位t1被決定是否被設(shè)定為真(例如由退出模塊135決定)。若是,則相關(guān)操作進(jìn)行至區(qū)塊507,第一類型的例外事件被執(zhí)行,包括刷新處理器100。此外,導(dǎo)致第一類型的例外事件的微操作被如前述地從指令快取存儲(chǔ)器105中重新擷取。例外事件的處理操作完成。

如下一個(gè)詢問區(qū)塊509,當(dāng)t1不為真但t2被決定為真(例如經(jīng)由退出模塊135),相關(guān)操作進(jìn)行至區(qū)塊511,此時(shí)第二類型的例外事件被執(zhí)行,儲(chǔ)存微操作被允許完成與退出,且處理器100被刷新。在儲(chǔ)存微操作開始例外事件之后,操作被重新開始于指令快取存儲(chǔ)器105中的下一個(gè)指令。例外事件處理的相關(guān)操作于此被完成。在區(qū)塊513,當(dāng)t1與t2都不為真,微操作被允許退出。在區(qū)塊514,當(dāng)微操作的欄位l被設(shè)定為真,以指示為操作為快取線的最后一個(gè)微操作,則在區(qū)塊515退出模塊135指示所有權(quán)隊(duì)列101以使對(duì)應(yīng)的儲(chǔ)存單元無效化,且操作被完成。所述的無效化例如是通過標(biāo)記儲(chǔ)存單元為無效,或者是推出所有權(quán)隊(duì)列101中的儲(chǔ)存單元堆迭中的儲(chǔ)存單元。當(dāng)欄位l為假,在指令被退出后,操作完成。

前述的相關(guān)內(nèi)容被以本領(lǐng)域普通技術(shù)人員能制造或使用本發(fā)明,如所提供關(guān)聯(lián)于特定應(yīng)用與必要條件的內(nèi)容。盡管本發(fā)明已參照于某些相關(guān)的版本而被相當(dāng)仔細(xì)的方式描述,其他的版本與變異為可行的且是經(jīng)過仔細(xì)考慮過的。前述提及的實(shí)施例的多個(gè)變化形對(duì)本領(lǐng)域普通技術(shù)人員來說會(huì)是顯而易見的,且上述定義的一般性元?jiǎng)t也可以適用于其他的實(shí)施例。例如此處所描述的電路可以被實(shí)作于適當(dāng)?shù)姆绞?,例如邏輯裝置或類似的電路。

以上所述僅為本發(fā)明較佳實(shí)施例,然其并非用以限定本發(fā)明的范圍,任何熟悉本項(xiàng)技術(shù)的人員,在不脫離本發(fā)明的精神和范圍內(nèi),可在此基礎(chǔ)上做進(jìn)一步的改進(jìn)和變化,因此本發(fā)明的保護(hù)范圍當(dāng)以本申請(qǐng)的權(quán)利要求書所界定的范圍為準(zhǔn)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
富锦市| 宁明县| 托克逊县| 延长县| 萨嘎县| 罗城| 商水县| 洮南市| 平南县| 恩施市| 榆林市| 库车县| 大洼县| 化德县| 宁津县| 陇川县| 潮州市| 苍山县| 耿马| 敦煌市| 邓州市| 师宗县| 昭平县| 宝坻区| 无棣县| 石台县| 谢通门县| 余干县| 珠海市| 上林县| 罗田县| 蒙阴县| 繁峙县| 图们市| 当阳市| 兖州市| 正定县| 大安市| 延吉市| 万年县| 桐庐县|