亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于預(yù)測執(zhí)行無競爭的鎖定指令的方法和裝置的制作方法

文檔序號:6596968閱讀:132來源:國知局
專利名稱:用于預(yù)測執(zhí)行無競爭的鎖定指令的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及采用存儲器鎖定指令(對存儲器執(zhí)行讀_修改_寫的原子操作) 的微處理器,更具體地,涉及希望采用可以在無序執(zhí)行架構(gòu)中執(zhí)行的存儲器鎖定指令的微 處理器。
背景技術(shù)
現(xiàn)代的微處理器可以在其架構(gòu)中支持無序執(zhí)行。各指令可各自被解碼為一組對應(yīng) 的微操作,然后在執(zhí)行前被存儲到重新排序緩沖器中。調(diào)度器可確定哪些微操作已準(zhǔn)備好 被執(zhí)行,并可以不按嚴(yán)格的程序順序或“無序地”發(fā)出上述微操作。當(dāng)微操作準(zhǔn)備引退時, 它們可以按程序順序引退,因此,看上去它們是按程序順序執(zhí)行的。在之前的無序處理器中造成問題的一個指令族是鎖定指定族。該鎖定指令通常斷 言某個信號或采用執(zhí)行原子存儲器業(yè)務(wù)處理的某過程,也就是說,它鎖定存儲器中的特定 位置,以防止其他處理器或同一處理器上的其他線程訪問在進(jìn)行作為其組成部分的加載與 存儲微操作期間使用的該存儲器位置(或等效的高速緩存線)。在不同實施例中,該信號可 包括總線信號或高速緩存一致性協(xié)議鎖定(protocollock)。這些鎖定指令的具體實施要求 在開始執(zhí)行鎖定指令之前引退(retire)所有先前的指令(按程序順序)。鎖定指令的加載 和存儲微操作通常被延遲,這使得它們盡可能的被一起執(zhí)行和引退,以限制處理器保護(hù)由 上述鎖定指令使用的存儲器地址或高速緩存線的時間。然而,這樣阻止了加載微操作和任 何其他介于其間的微操作的預(yù)測執(zhí)行,因此,向程序的關(guān)鍵路徑中加入了它們的等待時間。 這些具體實施也可能阻止后續(xù)的加載操作或其他后續(xù)操作的預(yù)測執(zhí)行,從而增加了后續(xù)操 作的等待時間。實際上,這可能意味著任何用于支持無序處理的重新排序緩沖器可能填滿 流水線和使該流水線發(fā)生停頓,這導(dǎo)致了應(yīng)用程序的性能進(jìn)一步下降。

發(fā)明內(nèi)容
根據(jù)第一實施例,本發(fā)明提供了一種處理器,包括預(yù)測器,用于作出鎖定指令是否會發(fā)生競爭的預(yù)測;以及調(diào)度器,用于當(dāng)所述預(yù)測表明所述鎖定指令不發(fā)生競爭時以預(yù)測方式發(fā)出一組與 所述鎖定指令對應(yīng)的微操作;以及用于確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時st0re_ with_unlock微操作在高速緩存中未命中。根據(jù)第二實施例,本發(fā)明提供了一種處理器,包括預(yù)測器,用于作出鎖定指令是否會發(fā)生競爭的預(yù)測;
解碼器,用于將所述鎖定指令解碼成l0ad_with0Ut_l0Ck微操作和存儲微操作; 以及監(jiān)視器,用于確定是否出現(xiàn)了競爭指示,所述競爭指示包括何時存儲微操作在高 速緩存中未命中。根據(jù)第三實施例,本發(fā)明提供了一種用于預(yù)測執(zhí)行無競爭的鎖定指令的方法,包 括預(yù)測鎖定指令是否會發(fā)生競爭;當(dāng)所述預(yù)測認(rèn)為所述鎖定指令不會發(fā)生競爭時,發(fā)出對應(yīng)于所述鎖定指令的 load_without_lock 微操作;以及監(jiān)視競爭指示,所述競爭指示包括何時St0re_With_unl0Ck微操作在高速緩存中 未命中。根據(jù)第四實施例,本發(fā)明提供了一種用于預(yù)測執(zhí)行無競爭的鎖定指令的裝置,包 括預(yù)測鎖定指令是否會發(fā)生競爭的單元; 當(dāng)所述預(yù)測認(rèn)為所述鎖定指令不會發(fā)生競爭時發(fā)出對應(yīng)于所述鎖定指令的load_ without_lock微操作的單元;以及監(jiān)視競爭指示的單元,其中,所述競爭指示包括何時St0re_With_unl0Ck微操作 在高速緩存中未命中。根據(jù)第五實施例,本發(fā)明提供了一種用于預(yù)測執(zhí)行無競爭的鎖定指令的系統(tǒng),包 括第一處理器,該處理器包括預(yù)測器和調(diào)度器,所述預(yù)測器用于預(yù)測鎖定指令是否 會發(fā)生競爭,所述調(diào)度器用于在所述預(yù)測認(rèn)為所述鎖定指令不會發(fā)生競爭時以預(yù)測方式發(fā) 出一組對應(yīng)于所述鎖定指令的微操作;用于確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時st0re_ With_unl0Ck微操作在高速緩存中未命中;第一接口,用于將第一處理器耦合到第二處理器;第二接口,用于將第一處理器耦合到音頻輸入/輸出設(shè)備;以及耦合到所述第二接口的音頻輸入/輸出設(shè)備。根據(jù)第六實施例,本發(fā)明提供了一種用于預(yù)測執(zhí)行無競爭的鎖定指令的系統(tǒng),包 括第一處理器,包括用于預(yù)測鎖定指令是否會發(fā)生競爭的預(yù)測器,用于將所述鎖定 指令解碼成l0ad_With0Ut_l0Ck微操作和存儲微操作的解碼器,以及用于在所述存儲微操 作引退之前確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時store_with_ unlock微操作在高速緩存中未命中;第一接口,用于將第一處理器耦合到第二處理器;第二接口,用于將第一處理器耦合到音頻輸入/輸出設(shè)備;以及耦合到所述第二接口的音頻輸入/輸出設(shè)備。根據(jù)第七實施例,本發(fā)明提供了一種處理器,包括用于最初指明鎖定指令不發(fā)生競爭的部件;
調(diào)度器,用于以預(yù)測方式發(fā)出對應(yīng)于所述鎖定指令的一組微操作;以及用于確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時st0re_ with_unlock微操作在高速緩存中未命中。根據(jù)第八實施例,本發(fā)明提供了一種處理器,包括用于最初指明鎖定指令不發(fā)生競爭的部件;解碼器,用于將所述鎖定指令解碼成l0ad_With0Ut_l0Ck微操作和存儲微操作;以及監(jiān)視器,用于確定是否出現(xiàn)了競爭指示,所述競爭指示包括何時Store_With_ unlock微操作在高速緩存中未命中。根據(jù)第九實施例,本發(fā)明提供了一種用于預(yù)測執(zhí)行無競爭的鎖定指令的方法,包 括最初假定鎖定指令不會發(fā)生競爭;發(fā)出對應(yīng)于所述鎖定指令的IoacLwithout_loCk微操作;以及監(jiān)視競爭指示,所述競爭指示包括何時St0re_With_unl0Ck微操作在高速緩存中 未命中。根據(jù)第十實施例,本發(fā)明提供了一種用于預(yù)測執(zhí)行無競爭的鎖定指令的裝置,包 括最初假定鎖定指令不會發(fā)生競爭的單元;發(fā)出對應(yīng)于所述鎖定指令的IoacLwithout_loCk微操作的單元;以及監(jiān)視競爭指示的單元,所述競爭指示包括何時St0re_With_unl0Ck微操作在高速 緩存中未命中。


在附圖中,通過舉例而非限制的方式說明了本發(fā)明,且類似的附圖標(biāo)記表示類似 的元件,其中圖1是根據(jù)本發(fā)明的一個實施例的處理器及其執(zhí)行流水線的示意圖,其中示出了 在流水線末端附近工作的鎖定競爭預(yù)測器;圖2是根據(jù)本發(fā)明的一個實施例的處理器及其執(zhí)行流水線的示意圖,其中示出了 在流水線起始附近工作的鎖定競爭預(yù)測器;圖3是根據(jù)本發(fā)明的一個實施例的處理器及其執(zhí)行流水線的示意圖,其中示出了 在流水線末端附近工作的鎖定競爭預(yù)測器;圖4是根據(jù)本發(fā)明的一個實施例的鎖定指令執(zhí)行的狀態(tài)圖;以及圖5A和圖5B是根據(jù)本發(fā)明的兩個實施例的系統(tǒng)的示意圖,這些系統(tǒng)包括支持鎖 定競爭預(yù)測器以預(yù)測執(zhí)行鎖定指令的處理器。
具體實施例方式以下的說明描述了允許無序執(zhí)行鎖定指令的技術(shù),在所述鎖定指令未發(fā)生競爭 時,無序執(zhí)行是有利的??梢哉J(rèn)為,當(dāng)超過一個處理器或同一處理器中超過一個線程幾乎同 時地試圖鎖定存儲器中的相同位置時,鎖定指令發(fā)生了競爭。當(dāng)另一處理器或者同一處理器中的另一個線程試圖訪問由另一處理器或者線程鎖定的存儲器位置時,可以認(rèn)為鎖定指 令發(fā)生了競爭。這是因為不能確定另一處理器(或另一線程)的存儲器訪問是鎖定企圖還 是普通的存儲器訪問。在以下的描述中,給出了大量具體細(xì)節(jié)(如邏輯實施方式、軟件模塊 分配、總線和其他接口信令技術(shù)和操作的細(xì)節(jié)),以便使讀者更為透徹地理解本發(fā)明。然而, 本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在不具有這些具體細(xì)節(jié)時仍可以實施本發(fā)明。在其他實例中,未 詳細(xì)示出控制結(jié)構(gòu)、門級電路和完整的軟件指令序列,以避免干擾對本發(fā)明的說明。利用本 文包括的說明內(nèi)容,無需進(jìn)行過多試驗,本領(lǐng)域技術(shù)人員便可實現(xiàn)適當(dāng)?shù)墓δ?。在某些實?例中,以為與Pentium 兼容的處理器(如Intel 公司生產(chǎn)的處理器)預(yù)測符合要求的 預(yù)測值的形式公開了本發(fā)明。然而,也可以在其他種類的處理器(如與Itanium 族兼容 的處理器或與X-Scale⑧族兼容的處理器)中實施本發(fā)明。參考圖1,其中示出了根據(jù)本發(fā)明的一個實施例的處理器100及其執(zhí)行流水線,該 圖示出了在流水線的末端附近工作的鎖定競爭預(yù)測器。在圖1的實施例中,示出了前端級 102、解碼級104、跟蹤高速緩存106、重新排序緩沖器(ROB) 108、執(zhí)行級112和引退級114。 在其他實施例中,可以在流水線中使用其他級,且可以改變級的順序。 可通過前端級102從一級(Li)高速緩存124取得宏指令,并通過解碼級104將其 解碼成對應(yīng)的一組微操作??梢詫⑦@些成組的微操作以痕跡(trace)的形式存儲在跟蹤高 速緩存106中,在其他實施例中,可以將上述痕跡存儲在其他形式的緩沖器中。在另一些實 施例中,可以以不同于痕跡的形式將這些成組的微操作存儲在其他形式的緩沖器中。當(dāng)準(zhǔn) 備執(zhí)行該組微操作時,可以將其加載到ROB 108之中。ROB 108可包括一系列存儲位置150 至166,其中,各存儲位置可以包含微操作、其源和目的地寄存器的標(biāo)識和執(zhí)行結(jié)果(當(dāng)存 在時)。在其他實施例中,可以設(shè)置不同數(shù)目的存儲位置,且這些存儲位置的內(nèi)容的確切格 式可以不同??墒褂谜{(diào)度器110來確定存儲位置150-166中的哪些微操作具有它們的源操作 數(shù)值(從而允許被執(zhí)行)。在一個實施例中,調(diào)度器110可以檢查存儲位置150-166中的 各微操作的源寄存器的狀態(tài)。然后,調(diào)度器110發(fā)出其源寄存器中包含用于執(zhí)行的有效數(shù) 據(jù)的那些微操作(在執(zhí)行級112中),而不論它們在所寫的軟件中的順序(即可能是“無序 的”)。然后,可以將因這些微操作的執(zhí)行而得到的任何結(jié)果作為執(zhí)行結(jié)果臨時存儲在對應(yīng) 的存儲位置中。存儲位置150至166中的各個存儲位置可以具有相關(guān)的“完成”位130至146,這 些位可以指明對應(yīng)的微操作已完成執(zhí)行且執(zhí)行所得結(jié)果已作為執(zhí)行結(jié)果臨時存儲在對應(yīng) 的存儲位置150-166中。在一個實施例中,完成位130-146可以指明,一旦與之前指令(按 程序順序)對應(yīng)的微操作引退,則與該完成位對應(yīng)的微操作也準(zhǔn)備引退。(宏指令產(chǎn)生的微 操作仍必須按原始程序順序引退)??梢詫?zhǔn)備引退的微操作發(fā)送到引退級114。也可以 將調(diào)用存儲器引用的微操作置于存儲器順序緩沖器(MOB) 122之中。MOB 122可存儲若干等 待的存儲器引用操作。圖1中的處理器能執(zhí)行鎖定指令。一種形式的鎖定指令可以在處理器對被鎖定的 存儲位置執(zhí)行操作時阻止其他處理器或者多線程處理器中的其他線程訪問該給定存儲位 置或高速緩存線。實際上,在執(zhí)行上述指令時,鎖定了該具體存儲位置或高速緩存線,以防 止其他處理器或線程的訪問。另一種觀點是,這種形式的鎖定允許指令對具體存儲位置或高速緩存線進(jìn)行原子修改(業(yè)內(nèi)通常稱為原子讀-修改-寫指令)。相比之下,這些鎖定指令可作為軟件旗語(semaphore)使用,以便以語義的方式鎖定覆蓋數(shù)目更多的指令的其他 存儲位置在本領(lǐng)域中,通常將這些數(shù)目更多的指令稱為臨界區(qū)(critical section)。在一 個實施例中,可以將鎖定指令實施成將附加到原始指令的鎖定前綴。在與Pentium 兼容的 架構(gòu)中,可以將鎖定前綴加到包含如下種類的指令(其中,目標(biāo)操作數(shù)為存儲器操作數(shù))之 前=ADD (加),ADC (進(jìn)位加),AND (邏輯與),BTC (位測試并求反),BTR (位測試并復(fù)位), BTS (位測試并置位),CMPXCHG (比較并交換),CMPXCH8B (比較并交換8個字節(jié)),DEC (遞 減),INC (遞增),NEG ( 二進(jìn)制補碼取反),NOT ( 二進(jìn)制反碼取反),OR (邏輯或),SBB (整 數(shù)借位減),SUB (減),XOR (異或),XADD (交換并加),以及XCHG (交換存儲器和寄存器)。 當(dāng)強(qiáng)制要求其他處理器或線程不能改變由這些指令指定的讀_修改_寫功能部分之間的目 的地存儲位置的值時,可以用所述鎖定前綴來使得這些部分原子化(看上去為一個部分)。在一個實施例中,可以將鎖定指令解碼成若干微操作,包括“ load_with_store_ interblock”微操作和“stonimlock”微操作。對于上一段提及的各種指令,可以存在其 他微操作。為便于討論,我們可以將“l(fā)oad_with_store_intent_lock”微操作稱為“l(fā)oad_ with_lock”微操作,并將其記為loacLlock。在進(jìn)入執(zhí)行單元112時,loacLlock微操作會 啟動鎖定情形。當(dāng)從MOB 122發(fā)出storejniock微操作時,可以去除該鎖定情形。前述實施例在滿足兩個條件之前不會發(fā)出loacLlock微操作。第一個條件是,原 始程序順序中的所有先前指令必須已執(zhí)行和引退。換言之,loacLlock微操作應(yīng)當(dāng)是ROB 108中最陳舊的微操作。第二個條件是,MOB 122中先前等待的存儲微操作必須已完成,且 與M0B122關(guān)聯(lián)的緩沖存儲器的內(nèi)容必須已排空(換言之,所有存儲操作必須已將其數(shù)據(jù)寫 入到存儲器系統(tǒng)中)。對無序執(zhí)行而言,這兩個條件不兼容。應(yīng)當(dāng)注意,鎖定指令經(jīng)常并非是絕對必要的。在很多情況下,存儲位置或者高速緩 存線在鎖定期間保持無競爭狀態(tài)也就是說,沒有其他處理器或線程嘗試訪問鎖定中的特 定存儲位置或高速緩存線,且沒有其他處理器事件威脅到該存儲位置的完整性。因此,處理 器100還包括鎖定競爭預(yù)測器118和監(jiān)視器邏輯116。鎖定競爭預(yù)測器118可以預(yù)測特定 鎖定指令在鎖定期間是否會發(fā)生競爭。如果預(yù)測認(rèn)為該特定鎖定指令會發(fā)生競爭,則采用 先前的用于鎖定指令的執(zhí)行方法。然而,如果預(yù)測認(rèn)為該特定鎖定指令實際上不會發(fā)生競爭,則可以以預(yù)測的方式 發(fā)出正常的加載微操作,并用監(jiān)視器邏輯116監(jiān)視所關(guān)心的存儲位置,以確定是否出現(xiàn)了 任何競爭指示。因此,在執(zhí)行指令的讀-修改-寫部分時,實際上,我們可以不鎖定存儲位置 來實現(xiàn)原子性(atomicity),而是獨立執(zhí)行各個部分,同時監(jiān)視任何指明其他處理器或線程 可能破壞原子性的情形。所述競爭指示可包括對包含加載指令的目標(biāo)地址的高速緩存線 的窺探(snoop)、中斷或是否隨后的storejniock微操作在高速緩存中發(fā)生未命中。在某 些實施例中,監(jiān)視器邏輯116監(jiān)視處理器中存在的若干已有的邏輯信號。如果在表示等效 鎖定情形的時段內(nèi)未出現(xiàn)競爭指示,則上述以預(yù)測方式發(fā)出的正常加載微操作可以正常引 退。這樣,便允許無序執(zhí)行鎖定指令和提高處理器性能。然而,如果出現(xiàn)了競爭指示,則必 須清洗(flush)流水線,并重新執(zhí)行鎖定指令。在重新執(zhí)行期間,可以按傳統(tǒng)實施方式非預(yù) 測地執(zhí)行鎖定指令,以幫助處理向前進(jìn)行。在另一個實施例中,在以非預(yù)測方式執(zhí)行指令之 前,處理器可以嘗試以預(yù)測方式執(zhí)行鎖定指令若干次,并在每次執(zhí)行時檢測競爭。當(dāng)處理器以非預(yù)測方式執(zhí)行指令時(如在傳統(tǒng)實施方式中一樣),它可以斷言信號或者采用某過程 來防止任何其他線程(或處理器)訪問所關(guān)心的存儲位置。這樣可確保處理器完成所述執(zhí) 行和引退所述鎖定指令,而無需任何隨后的重啟。如果在完成固定次數(shù)的預(yù)測執(zhí)行嘗試后, 處理器未回到非預(yù)測執(zhí)行方式,則可能是處理器在每次執(zhí)行中遇到了競爭指示并被迫重復(fù) 地重啟所述鎖定指令,從而阻止了處理的向前進(jìn)行。鎖定競爭預(yù)測器118可利用電路和有關(guān)多種著名的分支預(yù)測器之一的運行的理 論(包括本地預(yù)測器和全局預(yù)測器的相關(guān)理論)。在一個實施例中,鎖定競爭預(yù)測器118 可以是存儲某些鎖定指令的線性指令指針的表,且過去曾發(fā)現(xiàn)這些鎖定指令存在競爭。在 一個實施例中,在處理器初始化時,所述表可以為空,并預(yù)先假定所有鎖定指令不會發(fā)生競 爭。當(dāng)發(fā)現(xiàn)關(guān)于給定鎖定指令的預(yù)測錯誤時,將該鎖定指令的線性指令指針寫入所述表中, 以備將來使用。當(dāng)鎖定競爭預(yù)測器118預(yù)測給定的鎖定指令不會發(fā)生競爭時,調(diào)度器110可以從 ROB 108以預(yù)測方式發(fā)出對應(yīng)的loacLlock微操作。在一個實施例中,可以從ROB 108發(fā)出 作為預(yù)測的loacLwithoutJock微操作的對應(yīng)的loacLlock微操作。然后,兩種微操作均 可生成關(guān)于擁有對應(yīng)的高速緩存線的請求,在某些實施例中,這導(dǎo)致高速緩存線轉(zhuǎn)變?yōu)榕?他的“E”狀態(tài)(在使用修改的/排他的/共享的/無效的“MESI”高速緩存一致性協(xié)議的 高速緩存中)。如果在最低高速緩存中未命中加載微操作,則分配填充緩沖器,且所述加載 微操作作為等待的操作在M0B 122中進(jìn)行“休眠”。如果在高速緩存中命中了 loacLlock微操作,或當(dāng)通過對應(yīng)的高速緩存線填充喚 醒了在M0B 122中休眠的loacLlock微操作時,則發(fā)生以下情形。在某些實施例中,可能有 必要在執(zhí)行l(wèi)oacLlock和引退storejnlock之間防止取代包含鎖定變量的高速緩存線。 在一個實施例中,在高速緩存線的標(biāo)簽(tag)中,可以將一個位置位,以防止上述取代,但 仍允許進(jìn)行存儲器排序協(xié)議所要求的窺探。然而,在更陳舊的加載操作之前,可以執(zhí)行一組 上述預(yù)測的loacLlock,從而用盡了高速緩存組中的所有途徑(way)。這樣,便未在高速緩 存組中為更陳舊的加載操作留下任何從下一級高速緩存填充其數(shù)據(jù)的途徑,從而防止了更 陳舊的加載操作的引退,因為它無法完成。上述預(yù)測的loacLlock無法引退,因為它們不是 最陳舊的操作,從而形成了死鎖。為防止這種情況的出現(xiàn),僅當(dāng)所述高速緩存組中存在足夠 的未鎖定途徑時才以預(yù)測方式發(fā)出loacLlock,以便為更陳舊的指令留出至少某些可用的 途徑。如果不存在足夠的未鎖定途徑,則僅當(dāng)所有先前的指令引退后才發(fā)出loacLlock(與 傳統(tǒng)實施方式一樣)。在一個實施例中,至少必須具有兩個可用途徑才能發(fā)出預(yù)測的load_ lock。不管是load_lock微操作還是load_without_lock微操作從R0B 108發(fā)出,在所 述加載微操作之前或者之后,可以從R0B 108發(fā)出對應(yīng)的storejnlock微操作和任何居于 其間的微操作。然而,st0re_unl0Ck微操作可以在M0B 122中保持等待,直到加載微操作和 任何居于其間的微操作處于引退點(在該點處,M0B 122可以發(fā)出stonimlock微操作) 為止。如果監(jiān)視器邏輯116確定出現(xiàn)了競爭指示,則不允許引退加載微操作和對應(yīng)的 stonimlock微操作。這意味著關(guān)于鎖定指令不會發(fā)生競爭的預(yù)測是錯誤的。在不同實施 例中,考慮所述競爭指示的時段長度可能不同。在一個實施例中,所述時段可在存儲器存儲操作(對應(yīng)于stonimlock)變得全局可見時結(jié)束。此處的“全局可見”意味著高速緩存 一致性域中的所有代理(agent)均可看到所述存儲位置的最新值。在另一個實施例中,所 述時段可在st0re_unl0Ck成為MOB 122中的最陳舊的存儲操作時結(jié)束。在該第二實施例 中,在store_unlock成為M0B122中最陳舊的存儲操作的時刻與store_unlock變得全局可 見的時刻之間的短暫時間內(nèi),可能需要實現(xiàn)實際的鎖定情形。在前述實施方式中,當(dāng)存儲器存儲操作變得全局可見時,store_unlock微操作成 為ROB 108中最陳舊的未引退的微操作。然而,在一個實施例中,當(dāng)存儲器存儲操作變得全 局可見時,store_unlock微操作不是ROB 108中最陳舊的未引退的微操作,因為加載(存 在鎖定或不存在鎖定)微操作在存儲器存儲操作變得全局可見之前不會引退。因此,所述 加載操作是機(jī)器中最陳舊的未引退的微操作。在另一個實施例中,可以省略鎖定競爭預(yù)測器118。相反,可以假定在所有情況下 鎖定指令不會發(fā)生競爭。在各種情況下,最初可以預(yù)測執(zhí)行對應(yīng)的加載微操作。在加載指 令事實上發(fā)生競爭的情況下,監(jiān)視器邏輯116可檢測競爭指示,并重啟執(zhí)行流水線。僅那些 導(dǎo)致競爭指示的出現(xiàn)的鎖定指令才會以非預(yù)測方式重新執(zhí)行。在另一個實施例中,可以省略監(jiān)視器邏輯116。在該實施例中,高速緩存系統(tǒng)可包 括邏輯,用于拒絕針對鎖定指令關(guān)心的地址的窺探。這樣,無需調(diào)用正式的鎖定,便可以保 持所關(guān)心的地址中的內(nèi)容的完整性。生成上述窺探的另一個代理可以將對其窺探的拒絕視 為稍后重新嘗試窺探的指示?,F(xiàn)在參考圖2,其中示出了根據(jù)一個實施例的處理器及其執(zhí)行流水線的示意圖,該 圖示出了在流水線起始附近工作的鎖定競爭預(yù)測器。圖2所示的許多電路與圖1類似,但 鎖定競爭預(yù)測器218可用于修改解碼級204的操作。當(dāng)鎖定競爭預(yù)測器218確定鎖定指令 不會發(fā)生競爭時,解碼級204將鎖定指令解碼成包括常規(guī)的加載微操作和stonimlock微 操作的微操作,而不是總將鎖定指令解碼成loacLlock微操作和storejnlock微操作。在 某些實施例中,上述常規(guī)的加載微操作可能以附加了提示或其他狀態(tài)位的loacLlock微操 作的形式出現(xiàn)。然后可以用這些微操作來在跟蹤高速緩存206中構(gòu)建痕跡。在其他實施例 中,可以將上述微操作臨時存儲在另一種形式的緩沖器中。監(jiān)視器邏輯216可以執(zhí)行與圖1中的監(jiān)視器邏輯116所執(zhí)行功能類似的功能。 同樣的,如果監(jiān)視器邏輯216確定出現(xiàn)了競爭指示,則不允許引退加載微操作和對應(yīng)的 stonimlock微操作。這意味著關(guān)于鎖定指令不會發(fā)生競爭的預(yù)測是錯誤的。在不同實 施例中,考慮上述競爭指示的時段長度可能不同。在一個實施例中,該時段可以在存儲器存 儲操作(對應(yīng)于storejnlock)變得全局可見時結(jié)束。在另一個實施例中,該時段可以在 store_unlock成為M0B 222中的最陳舊的存儲操作時結(jié)束。如果確定了競爭指示,則恢復(fù)過程可能不同于以上結(jié)合圖1所述的過程。重啟 時不能從跟蹤高速緩存206中重新發(fā)出鎖定指令,因為跟蹤緩存206可能包含具有l(wèi)oad_ without_lock微操作的痕跡。必須在解碼級204中將上述鎖定指令再次解碼,這一次,將該 指令解碼成包括loacLlock微操作和對應(yīng)的storejnlock微操作的微操作。這些微操作 可能要求在跟蹤高速緩存206中構(gòu)建新的痕跡?,F(xiàn)在參考圖3,其中示出了根據(jù)一個實施例的處理器及其執(zhí)行流水線的示意圖,該 圖示出了在流水線末端附近工作的鎖定競爭預(yù)測器。圖3中的實施例包括指定為重放隊列322的修改后的M0B,以支持與Pentium 4兼容的處理器中的重放操作。重放操作可通 過重新執(zhí)行以預(yù)測方式發(fā)出的微操作來修復(fù)不正確的數(shù)據(jù)預(yù)測,直到數(shù)據(jù)預(yù)測變得正確為 止。在一個實施例中,如果監(jiān)視器邏輯316指明了競爭而未清洗流水線或者重啟鎖定指令, 則可以重放load_lock和store_unlock微操作。在另一個實施例中,可以使用檢查點恢復(fù)邏輯370執(zhí)行檢查點修復(fù)。在一個實施 例中,檢查點恢復(fù)邏輯370可以在loacLlock微操作之前的所有微操作均已引退時存儲處 理器狀態(tài)的快照。在執(zhí)行檢查點修復(fù)之后,組成所述預(yù)測執(zhí)行的鎖定指令的所有微操作和 在某些實施例中程序中的任何后續(xù)指令可以在完成后依次引退。如果監(jiān)視器邏輯316在存 儲器存儲操作(對應(yīng)于stonimlock)全局可見之前指明了競爭,這表明必須清洗處理器 流水線,然后,(從檢查點恢復(fù)邏輯370)恢復(fù)上述loacLlock之前的與其緊接的微操作引 退時的處理器狀態(tài)??梢灾匦聢?zhí)行l(wèi)oacLlock、storejnlock和組成上述鎖定指令的任何 其他微操作。在該重新執(zhí)行期間,可以將作為組成部分的上述微操作視為傳統(tǒng)實施方式中 的微操作,并可以以非預(yù)測方式執(zhí)行這些微操作。在其他實施例中,可以在其他處理器(如 圖1和圖2中所示的處理器)中使用檢查點恢復(fù)邏輯370。在一個實施例中,當(dāng)鎖定競爭預(yù)測器318確定鎖定指令不會發(fā)生競爭時,可以從 R0B 308以預(yù)測方式發(fā)出load_lock微操作或load_without_lock微操作。不管是load_ lock微操作還是l0ad_with0ut_l0Ck微操作從R0B 308發(fā)出,在加載微操作之前或者之后, 可以從R0B 308發(fā)出對應(yīng)的storejnlock微操作和任何居于其間的微操作。當(dāng)不正確的 數(shù)據(jù)預(yù)測創(chuàng)建了壞地址時,一個或者多個數(shù)據(jù)檢查邏輯368將無效的地址信號372發(fā)送到 重放隊列322??梢詫o效地址信號372與監(jiān)視器邏輯316 —起使用,以確定對預(yù)測的加載 微操作和對應(yīng)的store_unlock微操作的處理。當(dāng)無效地址信號372為假且監(jiān)視器邏輯316未檢測到競爭指示時,加載微操作和 store_unlock微操作可以正常引退。當(dāng)無效地址信號372為假且監(jiān)視器邏輯316檢測到競 爭指示時,可以清洗流水線并重啟鎖定指令。在另一個實施例中,如果監(jiān)視器邏輯316檢測 到競爭指示,則可以重放加載微操作。然而,當(dāng)無效地址信號372為真時,監(jiān)視器邏輯316 的狀態(tài)是無關(guān)的,因為任何競爭指示均可與錯誤地址相關(guān)聯(lián)。從而,當(dāng)無效地址信號372為 真時,發(fā)生重放,且任何來自監(jiān)視器邏輯316的競爭指示均不會更新鎖定競爭預(yù)測器318?,F(xiàn)在參考圖4,其中示出了根據(jù)本發(fā)明的一個實施例的鎖定指令的執(zhí)行的狀態(tài)圖。 在框410中,作出關(guān)于鎖定指令是否會發(fā)生競爭的預(yù)測。如果預(yù)測認(rèn)為會發(fā)生競爭,則過程 沿競爭路徑414離開,并進(jìn)入框460。在框460中,當(dāng)loacLlock微操作引退且僅在所有等 待的存儲緩沖器排空后,將loacLlock微操作發(fā)送到存儲器系統(tǒng)。然后,在框470中,以非 預(yù)測方式正常執(zhí)行鎖定指令的其他微操作。如果框410中作出的預(yù)測認(rèn)為鎖定指令不會發(fā)生競爭,則過程沿未競爭路徑412 離開,且可以以預(yù)測方式發(fā)出loacLlock微操作(或是某些實施例中的附有關(guān)于所述鎖定 操作不會發(fā)生競爭的某些提示的loacLlock微操作,或是某些實施例中的、變形為load_ with_uncontended_lock微操作或load_without_lock微操作之類的某些新的微操作的 loacLlock微操作),以供執(zhí)行。然后,在框430中,當(dāng)loadjock微操作引退時,可以將 storejnlock微操作發(fā)送到存儲器。然后,該storejnlock微操作準(zhǔn)備引退。在一個實施 例中,該stonimlock微操作在存儲器存儲操作變得全局可見時準(zhǔn)備引退。這樣也允許上述loacLlock微操作引退。在另一個實施例中,上述st0re_unl0Ck微操作在存儲器存儲操 作成為存儲器排序緩充器中最陳舊的等待的存儲微操作時準(zhǔn)備引退。而這允許上述load_ lock微操作引退。如果上述storejnlock微操作準(zhǔn)備引退(在一個實施例中,當(dāng)其成為全局可見 時)而無任何競爭指示,則過程沿路徑432離開,并且在框440中上述loacLlock微操作引 退,且用預(yù)測結(jié)果真更新預(yù)測邏輯。然而,如果在上述stonimlock微操作準(zhǔn)備引退之前 出現(xiàn)了競爭指示,則程序沿路徑434離開,并在框450中重啟鎖定指令,且用假預(yù)測結(jié)果更 新預(yù)測邏輯。在該重新執(zhí)行中,可以如傳統(tǒng)實施方式一樣以非預(yù)測方式執(zhí)行鎖定指令,以幫 助處理向前進(jìn)行。在另一個實施例中,可以省略框410、460和470。相反的,可以假定在所有情況下 鎖定指令不會發(fā)生競爭。在各種情況下,最初以預(yù)測方式執(zhí)行對應(yīng)的加載微操作(框420)。 在加載指令事實上發(fā)生競爭的情況下,監(jiān)視器邏輯160可以檢測競爭指示,清洗執(zhí)行流水 線,并重啟鎖定指令(框450)。僅那些導(dǎo)致了競爭指示的鎖定指令才會以非預(yù)測方式重新 執(zhí)行?,F(xiàn)在參考圖5A和圖5B,其中示出了根據(jù)本發(fā)明的兩個實施例的、包括支持鎖定競 爭預(yù)測器和監(jiān)視器邏輯的處理器的系統(tǒng)的示意圖。圖5A中的系統(tǒng)一般性地示出了通過系 統(tǒng)總線將處理器、存儲器和輸入/輸出設(shè)備相互連接起來的系統(tǒng),而圖5B的系統(tǒng)一般性地 示出了通過若干點到點接口將處理器、存儲器和輸入/輸出設(shè)備相互連接起來的系統(tǒng)。圖5A的系統(tǒng)可以包括若干處理器,其中,為清楚起見,僅示出了兩個處理器40、 60。處理器40、60可以包括一級高速緩存42、62。圖5A的系統(tǒng)可以具有通過總線接口 44、 64、12、8與系統(tǒng)總線6連接的若干功能。在一個實施例中,系統(tǒng)總線6可以是Intel .公司 生產(chǎn)的Pentium 微處理器采用的前端總線(FSB)。在其他實施例中,可以使用其他總線。 在某些實施例中,存儲器控制器34和總線橋32統(tǒng)稱為芯片組。在某些實施例中,可以以不 同于圖5A的實施例中所示內(nèi)容的方式在各物理芯片之間劃分芯片組的各個功能。存儲器控制器34允許處理器40、60讀和寫系統(tǒng)存儲器10、基本輸入/輸出系統(tǒng) (BIOS)的可擦除可編程只讀存儲器(EPR0M)36。在某些實施例中,BIOS EPR0M 36可利用 閃存。存儲器控制器34可以包括總線接口 8,以允許將存儲器讀和寫的數(shù)據(jù)送至系統(tǒng)總線 6上的總線代理(bus agents)和從這些代理接收上述數(shù)據(jù)。通過高性能的圖形接口 39,存 儲器控制器34也可以與高性能的圖形電路38相連。在某些實施例中,高性能圖形接口 39 可以是先進(jìn)圖形端口(AGP)類型的接口。存儲器控制器34可以通過高性能圖形接口 39將 數(shù)據(jù)從系統(tǒng)存儲器10導(dǎo)向高性能圖形電路38。圖5B的系統(tǒng)也可以包括若干處理器,其中,為清楚起見,僅示出了兩個處理器70、 80。處理器70、80各自包括本地內(nèi)存控制器集線器(MCH)72、82,以連接到存儲器2、4。處 理器70、80可通過點到點接口 50和使用點到點接口電路78、88交換數(shù)據(jù)。處理器70、80 可各自通過單獨的點到點接口 52、54和使用點到點接口電路76、94、86、98與芯片組90交 換數(shù)據(jù)。芯片組90也可以通過高性能圖形接口 92與高性能圖形電路38交換數(shù)據(jù)。在圖5A的系統(tǒng)中,總線橋路32允許系統(tǒng)總線6和總線16之間的數(shù)據(jù)交換,在某 些實施例中,上述總線是工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線或者外圍組件互連(PCI)總線進(jìn)行。在 圖5B的系統(tǒng)中,芯片組90可通過總線接口 96與總線16交換數(shù)據(jù)。在這兩個系統(tǒng)中,總線16上存在各種輸入/輸出I/O設(shè)備14,在某些實施例中,這些設(shè)備包括低性能圖形控制器、 視頻控制器和網(wǎng)絡(luò)控制器。在某些實施例中,可以使用另一個總線橋18來允許在總線16 和總線20之間交換數(shù)據(jù)。在某些實施例中,總線20可以是小型計算機(jī)系統(tǒng)接口(SCSI)總 線、集成驅(qū)動電子設(shè)備(IDE)總線或通用串行總線(USB)型的總線??梢詫⑵渌鸌/O設(shè)備 與總線20相連。這些設(shè)備包括鍵盤和光標(biāo)控制設(shè)備22 (包括鼠標(biāo))、音頻I/O 24、通信設(shè) 備26 (包括調(diào)制解調(diào)器和網(wǎng)絡(luò)接口)和數(shù)據(jù)存儲設(shè)備28??梢詫④浖a30存儲在數(shù)據(jù) 存儲設(shè)備28上。在某些實施例中,數(shù)據(jù)存儲設(shè)備28可以是固定的磁盤、軟盤驅(qū)動器、光盤 驅(qū)動器、磁光盤驅(qū)動器、磁帶或非易失性存儲器(包括閃存)。 在以上說明中,結(jié)合具體的實施例對本發(fā)明進(jìn)行了描述。然而,顯然可以對本發(fā) 明進(jìn)行各種修改和變更,而不至于背離由所附權(quán)利要求限定的本發(fā)明的更廣泛的精神和范 圍。因此,應(yīng)將本說明書和附圖視為說明性的而非限制性的。
權(quán)利要求
一種處理器,包括預(yù)測器,用于作出鎖定指令是否會發(fā)生競爭的預(yù)測;以及調(diào)度器,用于當(dāng)所述預(yù)測表明所述鎖定指令不發(fā)生競爭時以預(yù)測方式發(fā)出一組與所述鎖定指令對應(yīng)的微操作;以及用于確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時store_with_unlock微操作在高速緩存中未命中。
2.根據(jù)權(quán)利要求1所述的處理器,其中,所述調(diào)度器發(fā)出作為l0ad_With0Ut_l0Ck微操 作的load_with_lock微操作。
3.根據(jù)權(quán)利要求1所述的處理器,其中,當(dāng)所述監(jiān)視器確定出現(xiàn)了競爭指示時,所述處 理器重啟對所述鎖定指令的處理。
4.根據(jù)權(quán)利要求3所述的處理器,其中,所述競爭指示是對包含所述鎖定指令的目標(biāo) 地址的高速緩存線的窺探。
5.根據(jù)權(quán)利要求3所述的處理器,其中,所述競爭指示包括中斷。
6.根據(jù)權(quán)利要求1所述的處理器,其中,所述監(jiān)視器在所述St0re_With_iml0Ck微操作 成為最陳舊的未引退的存儲微操作之前確定所述競爭指示。
7.根據(jù)權(quán)利要求1所述的處理器,其中,所述監(jiān)視器在所述St0re_With_iml0Ck微操作 的結(jié)果變得全局可見之前確定所述競爭指示。
8.根據(jù)權(quán)利要求1所述的處理器,還包括窺探拒絕,用于拒絕對所述鎖定指令的目標(biāo) 地址的窺探。
9.一種處理器,包括預(yù)測器,用于作出鎖定指令是否會發(fā)生競爭的預(yù)測;解碼器,用于將所述鎖定指令解碼成l0ad_With0Ut_l0Ck微操作和存儲微操作;以及監(jiān)視器,用于確定是否出現(xiàn)了競爭指示,所述競爭指示包括何時存儲微操作在高速緩 存中未命中。
10.根據(jù)權(quán)利要求9所述的處理器,其中,所述處理器在所述監(jiān)視器確定出現(xiàn)了競爭指 示時重啟對所述鎖定指令的處理。
11.根據(jù)權(quán)利要求10所述的處理器,其中,所述競爭指示包括對包括所述鎖定指令的 目標(biāo)地址的高速緩存線的窺探。
12.根據(jù)權(quán)利要求10所述的處理器,其中,所述競爭指示包括中斷。
13.根據(jù)權(quán)利要求9所述的處理器,其中,所述監(jiān)視器在所述存儲微操作成為最陳舊的 未引退的存儲微操作之前確定所述競爭指示。
14.根據(jù)權(quán)利要求9所述的處理器,其中,所述監(jiān)視器在所述存儲微操作的結(jié)果變得全 局可見之前確定所述競爭指示。
15.一種用于預(yù)測執(zhí)行無競爭的鎖定指令的方法,包括預(yù)測鎖定指令是否會發(fā)生競爭;當(dāng)所述預(yù)測認(rèn)為所述鎖定指令不會發(fā)生競爭時,發(fā)出對應(yīng)于所述鎖定指令的load_ without_lock微操作;以及監(jiān)視競爭指示,所述競爭指示包括何時St0re_With_unl0Ck微操作在高速緩存中未命中。
16.根據(jù)權(quán)利要求15所述的方法,還包括在所述監(jiān)視檢測到所述競爭指示時重啟對所 述鎖定指令的執(zhí)行。
17.根據(jù)權(quán)利要求15所述的方法,其中,所述競爭指示包括對包括所述鎖定指令的目 標(biāo)地址的高速緩存線的窺探。
18.根據(jù)權(quán)利要求15所述的方法,其中,所述競爭指示包括中斷。
19.根據(jù)權(quán)利要求15所述的方法,其中,所述發(fā)出包括從緩沖器發(fā)送所述load_ without_lock 微操作。
20.根據(jù)權(quán)利要求19所述的方法,其中,所述loacLwithoutJock微操作作為load_ with_lock微操作存儲在所述緩沖器中。
21.根據(jù)權(quán)利要求15所述的方法,其中,所述發(fā)出包括從所述鎖定指令解碼所述load_ without_lock 微操作。
22.一種用于預(yù)測執(zhí)行無競爭的鎖定指令的裝置,包括預(yù)測鎖定指令是否會發(fā)生競爭的單元;當(dāng)所述預(yù)測認(rèn)為所述鎖定指令不會發(fā)生競爭時發(fā)出對應(yīng)于所述鎖定指令的load_ without_lock微操作的單元;以及監(jiān)視競爭指示的單元,其中,所述競爭指示包括何時st0re_With_iml0ck微操作在高 速緩存中未命中。
23.根據(jù)權(quán)利要求22所述的裝置,還包括在所述監(jiān)視檢測到所述競爭指示時重啟對所 述鎖定指令的執(zhí)行的單元。
24.根據(jù)權(quán)利要求22所述的裝置,其中,所述競爭指示包括對包括所述鎖定指令的目 標(biāo)地址的高速緩存線的窺探。
25.根據(jù)權(quán)利要求22所述的裝置,其中,所述競爭指示包括中斷。
26.根據(jù)權(quán)利要求22所述的裝置,其中,所述發(fā)出單元包括從緩沖器發(fā)送所述load_ without_lock微操作的單元。
27.根據(jù)權(quán)利要求26所述的裝置,其中,所述l0ad_with0ut_l0Ck微操作作為load_ with_lock微操作存儲在所述緩沖器中。
28.根據(jù)權(quán)利要求22所述的裝置,其中,所述發(fā)出單元包括從所述鎖定指令解碼所述 load_without_lock微操作的單元。
29.一種用于預(yù)測執(zhí)行無競爭的鎖定指令的系統(tǒng),包括第一處理器,該處理器包括預(yù)測器和調(diào)度器,所述預(yù)測器用于預(yù)測鎖定指令是否會發(fā) 生競爭,所述調(diào)度器用于在所述預(yù)測認(rèn)為所述鎖定指令不會發(fā)生競爭時以預(yù)測方式發(fā)出一 組對應(yīng)于所述鎖定指令的微操作;用于確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時st0re_with_ unlock微操作在高速緩存中未命中;第一接口,用于將第一處理器耦合到第二處理器;第二接口,用于將第一處理器耦合到音頻輸入/輸出設(shè)備;以及耦合到所述第二接口的音頻輸入/輸出設(shè)備。
30.根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述調(diào)度器發(fā)出作為l0ad_with0Ut_l0Ck微操 作的load_with_lock微操作。
31.根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述監(jiān)視器用于確定在St0re_With_iml0ck微 操作引退之前是否出現(xiàn)了競爭指示。
32.根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述處理器在所述監(jiān)視器確定出現(xiàn)了所述競 爭指示時重啟對所述鎖定指令的處理。
33.根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述監(jiān)視器在所述St0re_With_iml0Ck微操作 成為最陳舊的未引退的存儲微操作之前確定所述競爭指示。
34.根據(jù)權(quán)利要求29所述的系統(tǒng),其中,所述監(jiān)視器在所述St0re_With_iml0Ck微操作 的結(jié)果變得全局可見之前確定所述競爭指示。
35.一種用于預(yù)測執(zhí)行無競爭的鎖定指令的系統(tǒng),包括第一處理器,包括用于預(yù)測鎖定指令是否會發(fā)生競爭的預(yù)測器,用于將所述鎖定指令 解碼成l0ad_With0Ut_l0Ck微操作和存儲微操作的解碼器,以及用于在所述存儲微操作 引退之前確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時store_with_ unlock微操作在高速緩存中未命中;第一接口,用于將第一處理器耦合到第二處理器;第二接口,用于將第一處理器耦合到音頻輸入/輸出設(shè)備;以及耦合到所述第二接口的音頻輸入/輸出設(shè)備。
36.根據(jù)權(quán)利要求35所述的系統(tǒng),其中,所述處理器在所述監(jiān)視器確定出現(xiàn)了所述競 爭指示時重啟對所述鎖定指令的處理。
37.根據(jù)權(quán)利要求35所述的系統(tǒng),其中,所述監(jiān)視器在所述存儲微操作成為最陳舊的 未引退的存儲微操作之前確定所述競爭指示。
38.根據(jù)權(quán)利要求35所述的處理器,其中,所述監(jiān)視器在所述存儲微操作的結(jié)果變得 全局可見之前確定所述競爭指示。
39.一種處理器,包括用于最初指明鎖定指令不發(fā)生競爭的部件;調(diào)度器,用于以預(yù)測方式發(fā)出對應(yīng)于所述鎖定指令的一組微操作;以及用于確定是否出現(xiàn)了競爭指示的監(jiān)視器,其中,所述競爭指示包括何時st0re_with_ unlock微操作在高速緩存中未命中。
40.根據(jù)權(quán)利要求39所述的處理器,其中,所述調(diào)度器發(fā)出作為l0ad_with0Ut_l0Ck微 操作的load_with_lock微操作。
41.根據(jù)權(quán)利要求39所述的處理器,其中,所述處理器在所述監(jiān)視器確定出現(xiàn)了所述 競爭指示時重啟對所述鎖定指令的處理。
42.根據(jù)權(quán)利要求39所述的處理器,其中,所述監(jiān)視器在所述St0re_With_iml0Ck微操 作成為最陳舊的未引退的存儲微操作之前確定所述競爭指示。
43.根據(jù)權(quán)利要求39所述的處理器,其中,所述監(jiān)視器在所述St0re_With_iml0Ck微操 作的結(jié)果變得全局可見之前確定所述競爭指示。
44.根據(jù)權(quán)利要求39所述的處理器,還包括窺探拒絕,用于拒絕對所述鎖定指令的目 標(biāo)地址的窺探。
45.一種處理器,包括用于最初指明鎖定指令不發(fā)生競爭的部件;解碼器,用于將所述鎖定指令解碼成l0ad_With0Ut_l0Ck微操作和存儲微操作;以及監(jiān)視器,用于確定是否出現(xiàn)了競爭指示,所述競爭指示包括何時St0re_With_unl0Ck 微操作在高速緩存中未命中。
46.根據(jù)權(quán)利要求45所述的處理器,其中,所述處理器在所述監(jiān)視器確定出現(xiàn)了所述 競爭指示時重啟對所述鎖定指令的處理。
47.根據(jù)權(quán)利要求45所述的處理器,其中,所述監(jiān)視器在所述存儲微操作成為最陳舊 的未引退的存儲微操作之前確定所述競爭指示。
48.根據(jù)權(quán)利要求45所述的處理器,其中,所述監(jiān)視器在所述存儲微操作的結(jié)果變得 全局可見之前確定所述競爭指示。
49.一種用于預(yù)測執(zhí)行無競爭的鎖定指令的方法,包括最初假定鎖定指令不會發(fā)生競爭;發(fā)出對應(yīng)于所述鎖定指令的l0ad_with0ut_l0Ck微操作;以及監(jiān)視競爭指示,所述競爭指示包括何時St0re_With_unl0Ck微操作在高速緩存中未命中。
50.根據(jù)權(quán)利要求49所述的方法,還包括在所述監(jiān)視檢測到所述競爭指示時重啟對所 述鎖定指令的執(zhí)行。
51.根據(jù)權(quán)利要求49所述的方法,其中,所述發(fā)出包括從緩沖器發(fā)送所述load_ without_lock 微操作。
52.根據(jù)權(quán)利要求51所述的方法,其中所述loacLwithoutJock微操作作為load_ with_lock微操作存儲在所述緩沖器中。
53.根據(jù)權(quán)利要求49所述的方法,其中,所述發(fā)出包括從所述鎖定指令解碼所述load_ without_lock 微操作。
54.一種用于預(yù)測執(zhí)行無競爭的鎖定指令的裝置,包括最初假定鎖定指令不會發(fā)生競爭的單元;發(fā)出對應(yīng)于所述鎖定指令的l0ad_with0ut_l0Ck微操作的單元;以及監(jiān)視競爭指示的單元,所述競爭指示包括何時St0re_With_unl0Ck微操作在高速緩存 中未命中。
55.根據(jù)權(quán)利要求54所述的裝置,還包括在所述監(jiān)視檢測到所述競爭指示時重啟對所 述鎖定指令的執(zhí)行的單元。
56.根據(jù)權(quán)利要求54所述的裝置,其中,所述發(fā)出單元包括從緩沖器發(fā)送所述load_ without_lock微操作的單元。
57.根據(jù)權(quán)利要求56所述的裝置,其中,所述loacLwithoutJock微操作作為load_ with_lock微操作存儲在所述緩沖器中。
58.根據(jù)權(quán)利要求54所述的裝置,其中,所述發(fā)出單元包括從所述鎖定指令解碼所述 load_without_lock微操作的單元。
全文摘要
本發(fā)明的名稱是“用于預(yù)測執(zhí)行無競爭的鎖定指令的方法和裝置”。公開了一種用于在無序處理器中預(yù)測執(zhí)行鎖定指令的方法和裝置。在一個實施例中,預(yù)測給定鎖定指令是否會發(fā)生競爭。如果不會,則將該鎖定指令視為可預(yù)測執(zhí)行的具有正常加載微操作的指令。監(jiān)視器邏輯可查找有關(guān)該鎖定指令實際發(fā)生競爭的指示。如果未找到這種指示,則引退該預(yù)測的加載微操作和與該鎖定指令對應(yīng)的其他微操作。然而,如果確實找到了這種指示,則可重啟鎖定指令,并更新預(yù)測機(jī)制。
文檔編號G06F9/38GK101847091SQ201010003959
公開日2010年9月29日 申請日期2005年6月17日 優(yōu)先權(quán)日2004年6月30日
發(fā)明者B·薩哈, M·C·默藤, P·哈馬隆德 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1