国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      無約束事務(wù)存儲器系統(tǒng)的制作方法

      文檔序號:6381288閱讀:175來源:國知局
      專利名稱:無約束事務(wù)存儲器系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本公開一般地涉及電子技術(shù)領(lǐng)域。更具體地,本發(fā)明的一個實施例涉及無約束事務(wù)存儲器系統(tǒng)(unbounded transactional memory system)
      背景技術(shù)
      為提高性能,一些計算機系統(tǒng)可并發(fā)地執(zhí)行多個線程。通常,在線程訪問共享資源之前,該線程可以獲取該共享資源的鎖。在共享資源為一存儲于存儲器中的數(shù)據(jù)結(jié)構(gòu)的情形中,所有試圖訪問該相同資源的線程可以依照加鎖機制提供的互斥性來將其操作的執(zhí)行串行化。上述情形可能會對系統(tǒng)性能不利并且可能造成程序故障,例如,由于死鎖錯誤。為減少使用加鎖機制對性能的影響,一些計算機系統(tǒng)會使用事務(wù)存儲器。事務(wù)存儲器通常涉及一種同步模型,其允許多個線程并發(fā)地訪問一個共享資源(例如存儲在存儲器中的一個數(shù)據(jù)結(jié)構(gòu)),而只要多個訪問之間不存在沖突(例如,只要多個訪問是針對共享資源的不同部分)就不需要獲取鎖。事務(wù)存儲器可通過一個表查找機制來實現(xiàn)。特別地,為訪問一個共享資源,一個線程可首先檢查一個存儲于存儲器中的表以確定是否有另一個線程正在訪問共享資源的相同部分。訪問存儲于存儲器中的表所產(chǎn)生的開銷會導致性能的下降。


      以下參考附圖對本發(fā)明進行詳細描述。在附圖中,參考標號最左側(cè)的數(shù)字標識出最先出現(xiàn)該參考標號的那張圖。在不同附圖中使用的相同的參考標號表示相似或相同的項目。圖I、圖6和圖7示出了計算系統(tǒng)各實施例的方框圖,其可被用于實現(xiàn)本文中討論的各種實施例。圖2示出了根據(jù)本發(fā)明的一個實施例,處理器內(nèi)核中多個部分的方框圖。圖3-圖5示出了根據(jù)本發(fā)明的各種實施例的方法的方框圖。
      具體實施例方式在以下的描述中給出了許多具體細節(jié)以提供對于各種實施例的深入理解。但是,一些實施例可以不需要這些細節(jié)來進行實現(xiàn)。在其它示例中,為了不使特定的實施例難以理解,一些公知的方法、過程、組件和電路沒有進行具體描述。本文中所討論的一些實施例可為使用硬件事務(wù)存儲器(HTM)和軟件事務(wù)存儲器(STM)技術(shù)的組合的非約束事務(wù)存儲器系統(tǒng)提供有效機制,例如參照圖I 圖7的計算系統(tǒng)而討論的實施例。更具體地,圖I示出了依據(jù)本發(fā)明的一個實施例的計算系統(tǒng)100的框圖。系統(tǒng)100可包括一個或多個處理器102-1到102-N(本文中簡稱為“多個處理器102”或更一般地稱為“處理器102”)。多個處理器102之間可通過互連或總線104進行通信。每個處理器可以包括各種組件,為了清楚,其中一部分僅在針對處理器102-1時給予說明。相應(yīng)地,其余處理器102-2到102-n中每個均可包括針對處理器102-1所論述的相同或類似的組件。此外,這里所描述的實施方式并不僅限于多處理器計算系統(tǒng)中,其也可被應(yīng)用于一個單處理器計算系統(tǒng)中。在一個實施例中,處理器102-1可包括一個或多個處理器內(nèi)核106-1到106-M(本文中簡稱為“多個內(nèi)核106”或者更一般地稱為“內(nèi)核106”)、高速緩存108、和/或路由器110。多個處理器內(nèi)核106可在單個集成電路(IC)芯片上實現(xiàn)。此外,該芯片可以包括一個或多個共享的和/或私有的高速緩存(如高速緩存108)、總線或互連(如總線112)、存儲器控制器(如參照圖6和7所描述的)、或者其他組件。在一個實施例中,路由器110可被用于在處理器102-1和/或系統(tǒng)100的多個不同組件之間的通信。此外,處理器102-1可包括多于一個的路由器110。更進一步地,多個路由器(110)之間可進行通信,以使得處理器102-1內(nèi)部或外部的各種不同組件之間能夠 進行數(shù)據(jù)路由。此外,高速緩存108可存儲數(shù)據(jù)(例如,包括指令),這些數(shù)據(jù)被處理器102-1的一個或多個組件所使用。舉例來說,高速緩存108可在本地對存儲器114中存儲的數(shù)據(jù)進行緩存,以供處理器102-1的多個組件更快地進行訪問。如圖I所示,存儲器114可與處理器102-1通過互連104進行通信。在一個實施例中,高速緩存108 (可為共享的)可以包括二級(L2)高速緩存、末級高速緩存(LLC)、或其他類型的高速緩存中的一個或多個。此外,每個內(nèi)核106或處理器102可包括一個一級(LI)高速緩存。處理器102-1的各種不同組件可與高速緩存108直接通過總線(例如,總線112)和/或存儲器控制器或控制中心進行通信。此外,處理器102-1可包括多于一個的高速緩存。正如將參照圖2做進一步描述的,存儲器114還可以包括一個頁表116,該頁表儲存了有關(guān)于在虛擬地址和物理地址之間的映射的信息。圖2示出了依據(jù)本發(fā)明的一個實施例,處理器內(nèi)核106中多個部分的一個框圖。如參照圖I所討論的,一個或多個處理器內(nèi)核(如處理器內(nèi)核106)可實現(xiàn)在單個集成電路芯片(或管芯(die))上。此外,該芯片可以包括一個或多個共享的和/或私有的高速緩存(例如,圖I中的高速緩存108)、互連(例如,圖I中的互連104和/或112)、存儲器控制器、或其他組件。如圖2所示,處理器內(nèi)核106可包括一個用于取回指令以便由內(nèi)核106來執(zhí)行的取回單元(fetch unit) 202。所述指令可以從任何存儲設(shè)備取回,如存儲器114和/或參照圖6和圖7所描述的存儲設(shè)備。內(nèi)核106還可包括一個解碼單元204,用于對取回的指令進行解碼。舉例來說,解碼單元204可將取回的指令解碼為多個uop (微操作)。另外,內(nèi)核106可包括一個調(diào)度單元206。調(diào)度單元206可執(zhí)行各種操作,這些操作關(guān)聯(lián)于存儲已解碼指令(例如,從解碼單元204接收的)直到所述指令已準備好待分派(例如,直到一個已解碼指令的全部源值都可用)。在一個實施例中,調(diào)度單元206可調(diào)度和/或發(fā)布(或分派)已解碼指令給執(zhí)行單元208來執(zhí)行。執(zhí)行單元208可在分派的指令被解碼(例如,通過解碼單元204)和被分派(例如,通過調(diào)度單元206)之后執(zhí)行所述指令。在一個實施例中,執(zhí)行單元208可包括多于一個的執(zhí)行單元,如存儲器執(zhí)行單元、整數(shù)執(zhí)行單元、浮點數(shù)執(zhí)行單元、或其他執(zhí)行單元。進一步地,執(zhí)行單元208可以亂序執(zhí)行指令。因此,在一個實施例中,處理器內(nèi)核106可以是一個亂序處理器內(nèi)核。內(nèi)核106也可包括一個引退(retirement)單元210。引退單元210可在指令被提交之后令已執(zhí)行的指令引退。在一個實施例中,已執(zhí)行指令的引退可能會導致處理器狀態(tài)根據(jù)指令執(zhí)行而被提交,指令使用的物理寄存器被解除分配,等等。如圖2所示,內(nèi)核106還可以包括一個跟蹤高速緩存(trace cache)或者微代碼只讀存儲器(uR0M)212,用于存儲微代碼和/或被取回的指令的蹤跡(例如,通過取回單元202)。存儲在UR0M212中的微代碼可用于配置內(nèi)核106的各種硬件組件。在一個實施例中,存儲在UR0M212中的微代碼可從與處理器內(nèi)核106通信的另一個組件中被加載,例如參照圖6和7中所描述的計算機可讀介質(zhì)或其他存儲設(shè)備。處理器內(nèi)核106還可以包括數(shù)據(jù)轉(zhuǎn)換后備緩沖器(data translationlook-a-side buffer,DTLB) 214,以存儲(或緩存)頁表116的多個部分。在一個實施例 中,DTLB214可以是一個內(nèi)容可尋址存儲器(CAM)。此外,處理器內(nèi)核106可以包括一個總線單元216,以允許處理器內(nèi)核106的組件和其他組件(如參照圖I所述的組件)通過一個或多個總線(例如,總線104和/或112)進行通信。頁表116和DTLB214可包括一個或多個表項。在一個實施例中,對每一個表項,DTLB214可存儲許多信息,例如虛擬地址218(例如,其可以用來虛擬地標識存儲器地址)、物理地址220 (例如,其可以用來標識與虛擬地址218對應(yīng)的存儲器114或另一存儲器中的物理地址)、所有權(quán)標志222 (例如,其包括一個或多個位,以標識相應(yīng)表項或DTLB214內(nèi)的一頁的所有者、所有權(quán)狀態(tài)、和/或所有者訪問類型(例如,讀或?qū)懺L問)、和/或推測標志224 (例如,其可以被線程或存儲器事務(wù)使用以表示相應(yīng)的表項(或頁)正在被推測性地訪問)。在一個實施例中,頁表116中也可包括對應(yīng)于每一個表項的字段218 224。在一個實施例中,對每一個表項,頁表116可存儲許多信息,例如虛擬地址標簽226、物理地址標簽228、和/或物理地址數(shù)據(jù)230。正如將在這里參照圖3 圖5來進一步描述的,標簽226和228可被用來搜索頁表116 (例如,來獲得物理地址數(shù)據(jù)230)。 在一個實施例中,頁表基指針232可指向頁表116的基地址。此外,頁表界限指針234可指向頁表116的頂端(或最末表項)。指針232和234可存儲在硬件寄存器中,或作為存儲器(如存儲器114)中的變量。內(nèi)核106還可包括事務(wù)描述符寄存器236,例如,用以存儲與事務(wù)存儲器請求的一個或多個指令相對應(yīng)的描述符。關(guān)于涉及參照圖I 圖2所描述的組件的操作的進一步細節(jié)將參照圖3 圖5中所示的方法來進行論述。更具體地,圖3示出了用以執(zhí)行對應(yīng)于HTM和/或STM事務(wù)的一個或多個指令的方法300的一個實施例的框圖。在一個實施例中,參照圖I 圖2以及圖6 圖7而描述的各種組件可被用來執(zhí)行參照圖3而描述的一個或多個操作。參照圖I-圖3,在操作302中,正被內(nèi)核106執(zhí)行的一個線程可啟動一個HTM事務(wù)。該線程可包括一個或多個被內(nèi)核106執(zhí)行(304)的指令。因此,該線程可包括一個或多個對應(yīng)于一個HTM訪問請求(如一個或多個加載或存儲操作)的指令。在操作306中,如果存在與另一指令(其可能是對應(yīng)于相同線程或另一線程(例如,運行在不同的處理器內(nèi)核上)的一個指令)的沖突,則該硬件事務(wù)在操作308中被中止。例如,發(fā)生沖突的指令可對DTLB214中操作302的HTM事務(wù)正在訪問(或已標記為正在被訪問,如通過在推測標志224中存儲的一個值來表示的)的表項發(fā)送一個監(jiān)聽。如果在操作306中沒有發(fā)生沖突,則在操作312中,內(nèi)核106可確定與操作302的HTM相對應(yīng)的硬件事務(wù)是否已經(jīng)在操作310中被提交(例如,通過引退單元210)。如果該硬件事務(wù)已被提交,則內(nèi)核106可更新存儲器114、頁表116、和/或DTLB214中對應(yīng)的數(shù)據(jù)。否則,如果在操作310中硬件事務(wù)(或它其中的一個指令)提交失敗,則內(nèi)核106可確定提交失敗是否是因為硬件溢出(314),例如,由于高速緩存溢出、異常的條件、中斷、異常、缺頁、輸入/輸出指令、或其他硬件溢出條件。如果沒有硬件溢出發(fā)生(314),則內(nèi)核106可繼續(xù)執(zhí)行操作304,例如,以執(zhí)行剩余的與操作302的HTM事務(wù)相對應(yīng)的指令。假設(shè)存在硬件溢出(314),則內(nèi)核106可在操作320中啟動一個STM事務(wù)。在一個實施例中,操作302的HTM和操作320的STM可針對的是對存儲器114的同一個訪問(例如,一個或多個讀或?qū)懖僮?。因此,在一個實施例中,一旦操作302的HTM由于操作422的硬件溢出而提交失 敗,則相同的存儲器操作可由操作320的STM執(zhí)行。在操作322中,內(nèi)核106可執(zhí)行對應(yīng)于STM的一個或多個指令。因此,該線程可包括對應(yīng)于一個STM訪問請求的一個或多個指令(如一個或多個加載或存儲操作)。在操作324中,內(nèi)核106可確定STM事務(wù)是否已成功提交。如果STM事務(wù)處于待提交狀態(tài)(324),則內(nèi)核106可繼續(xù)執(zhí)行剩余的與操作320的STM事務(wù)相對應(yīng)的指令。如果軟件事務(wù)已被提交(324),則在操作312中,內(nèi)核106可更新存儲器114、頁表116、和/或DTLB214中的相應(yīng)數(shù)據(jù)。在一個實施例中,操作312可原子地(atomically)執(zhí)行,例如,使得在提交(在操作310和/或324中)之后推測性更新原子地變?yōu)榭梢?。在一個實施例中,內(nèi)核106可推測性地執(zhí)行參照方法300所描述的指令,將參照圖4和圖5做進一步描述。例如,在操作302和/或320,內(nèi)核106可在推測標志224中存儲一個值以表明在DTLB214和/或頁表116中的相應(yīng)表項被推測性地訪問。一旦HTM中止(在操作308中),或者HTM或STM事務(wù)在操作312中被成功提交,內(nèi)核106可更新推測標志224以表明相應(yīng)記錄不再是被推測性地訪問。在一個實施例中,操作306的沖突可以由一個針對某表項的監(jiān)聽訪問引發(fā),所述表項被操作302的HTM事務(wù)標記為已被推測性地訪問過(例如,通過推測標志224)。根據(jù)至少一個指令集架構(gòu),所述監(jiān)聽可由一個所有權(quán)請求(或者稱為"RF0")指令產(chǎn)生。因此,處理器內(nèi)核(106)可排他地擁有對于一個DTLB表項(214)的所有權(quán),例如,使得其他處理器內(nèi)核的其他DTLB中的相應(yīng)表項無效。此外,在一個實施例中,DTLB擊落(shoot down)可被用來在多核處理器中維護DTLB (214A)的一致性。DTLB擊落一般指下面的情形,即某個線程對一個頁表(116)進行修改,其結(jié)果是向其他多個內(nèi)核(106)發(fā)送一個信號以移除它們各自的DTLB(214)中的相應(yīng)表項。在一個實施例中,頁表116的字段226 230還可以和高速緩存一致性協(xié)議一起使用。例如,DTLB214(以及頁表116)可被存儲于物理存儲器的一個可標識部分中(例如,在存儲器114中),如由指針232和234所標識出的部分。當內(nèi)核106 (或在內(nèi)核106中提供的一個監(jiān)聽過濾器)在總線(104/112)上檢測到一個監(jiān)聽,其可以通過頁表116中的字段226 230知道該監(jiān)聽是針對DTLB214還是高速緩存的。在一個實施例中,當一個處理器內(nèi)核106希望獲得一個DTLB214表項的所有權(quán)時,其可以向?qū)?yīng)的物理地址發(fā)送一個監(jiān)聽,該監(jiān)聽然后利用物理地址標簽226在頁表116中進行查找,并且可選地存儲在物理地址數(shù)據(jù)字段230的數(shù)據(jù)可被提供。圖4示出了用于執(zhí)行一個或多個對應(yīng)于一 HTM事務(wù)的指令的方法400的一個實施例的方框圖。在一個實施例中,圖4展示了關(guān)于參照圖3中的方法300所討論的一些操作的進一步細節(jié)。此外,參照圖I 圖2和圖6 圖7所討論的各種組件可被用于執(zhí)行參照圖4所討論的一個或多個操作。參見圖I-圖4,在從操作402到404,內(nèi)核106可啟動一個HTM事務(wù),并執(zhí)行一個或多個對應(yīng)于該HTM事務(wù)的指令,如參照操作302到304所分別描述的。在操作406中,內(nèi)核106可確定是否存在針對一個正在被推測性地訪問的DTLB表項的一個所有權(quán)請求,例如,來自另一指令,如參照操作306所述的。如果存在一個所有權(quán)請求(406),操作402的HTM事務(wù)可被中止。在一個實施例中,在中止該HTM事務(wù)之后,控制權(quán)可能被轉(zhuǎn)移到一個用戶級中止處理程序,以決定是重新嘗試相同的HTM事務(wù)還是采取其他的行動。如果在操作406中沒有接收到所有權(quán)請求,內(nèi)核106將在操作410繼續(xù)執(zhí)行一個 或多個對應(yīng)于該HTM事務(wù)的指令。在操作412中,如果存在一個DTLB缺失(比如與被一個HTM事務(wù)的指令訪問的虛擬或物理地址相對應(yīng)的一個表項不在DTLB214中,例如,由于之前對于該表項的驅(qū)逐(eviction)),對應(yīng)的數(shù)據(jù)(例如,頁表116的一部分)在操作414中可從頁表116復制到DTLB214中。復制的信息可包括相應(yīng)的虛擬地址218、物理地址220、所有權(quán)標志222、和/或推測標志224。在操作416中,內(nèi)核106可確定操作414中從頁表116復制的表項的所有權(quán)標志222是否表示了對于相應(yīng)表項的有效的所有權(quán)。如果所有權(quán)標志222表示一個有效值(例如,在一個實施例中為非空值),則內(nèi)核106在操作408中中止該硬件事務(wù)。如參照圖2所述的,所有權(quán)標志222還可包括所有者訪問類型信息(例如,讀訪問或?qū)懺L問)。在一個實施例中,如果所有權(quán)標志222的一個或多個位表明所有者正在執(zhí)行讀訪問,則方法400可繼續(xù)操作402(部分地因為兩條針對DTLB214的相同記錄進行讀取的指令可以不引起沖突)。此外,如果所有權(quán)標志222表示一個非有效值(例如,在一個實施例中為空值),則內(nèi)核106繼續(xù)執(zhí)行與操作402的HTM事務(wù)對應(yīng)的其他指令。在操作418中,內(nèi)核106可判斷與操作402的HTM對應(yīng)的硬件事務(wù)是否已被提交(例如,通過引退單元210)。如果該硬件事務(wù)已被提交,內(nèi)核106可更新存儲器114、頁表116JP/*DTLB214(420)中的相應(yīng)數(shù)據(jù)。否則,如果硬件事務(wù)(或其中的一個指令)在操作418中提交失敗,內(nèi)核106可判斷提交失敗是否是由于硬件溢出造成的(422),例如,由于高速緩存溢出、異常的條件、中斷、異常、缺頁、輸入/輸出指令、或其他硬件溢出條件。如果沒有硬件溢出發(fā)生(422),內(nèi)核106可繼續(xù)執(zhí)行操作404,例如,執(zhí)行剩余的與操作402的HTM事務(wù)相對應(yīng)的指令。如果存在硬件溢出(422),內(nèi)核106可啟動一個STM事務(wù),這些將參照圖5做進一步描述。圖5示出了執(zhí)行一個或多個對應(yīng)于一 STM事務(wù)的指令的方法500的一個實施例的框圖。在一個實施例中,圖4示出了與參照圖3的方法300所描述的一些操作的進一步細節(jié)。此外,參照圖I 圖2和圖6 圖7所討論的各種組件可被用于執(zhí)行一個或多個參照圖5所討論的操作。參照圖I-圖5,在操作502到504中,內(nèi)核106可啟動一個STM事務(wù)并執(zhí)行一個或多個對應(yīng)于該STM事務(wù)的指令,如參照操作320到322所分別描述的。在操作506中,內(nèi)核106可更新DTLB214的任何被訪表項的所有權(quán)標志222 (例如,由于在操作504中執(zhí)行指令)。參照圖2的討論,所有權(quán)標志222可包括一個或多個位,用以確定對應(yīng)表項的所有者或所有權(quán)狀態(tài)。在一個實施例中,在操作502,內(nèi)核106可在事務(wù)描述符寄存器236中存儲對應(yīng)于該STM事務(wù)的一個值(例如,一個事務(wù)標識符)。隨后,在操作506中,內(nèi)核106可將存儲在事務(wù)描述符寄存器236中的上述值復制給對應(yīng)表項的所有權(quán)標志222。在操作508中,內(nèi)核106可確定該STM事務(wù)是否已成功提交。如果STM事務(wù)處于待提交狀態(tài)(508),則內(nèi)核106可繼續(xù)執(zhí)行剩余的與操作502的STM事務(wù)相對應(yīng)的指令。如果該軟件事務(wù)被提交(508),則在操作510中,內(nèi)核106可更新存儲器114、頁表116、和/或DTLB214中的相應(yīng)數(shù)據(jù)。在一個實施例中,操作510可原子地執(zhí)行,例如,使得在提交(在操作508中)之后,推測性更新原子地變得可見。如參照圖3所描述的,HTM (例如,操作302或402中的)和STM (例如,操作320或502中的)可以對存儲器114有相同的訪問(例如,一個或多個讀或?qū)懖僮?。此外,在一個實施例中,為實現(xiàn)參照圖3至5所述的若干操作,編譯器可生成以下同步偽代碼塊的兩個 副本
      synchronized ( load addrl; load addr2; store addr3;
      }該偽代碼的兩個被編譯的副本可以如下副本#1 (HTM 代碼):
      synchros ized{ load addrl; load addr2; store addr3;
      }副本#2 (STM 代碼)
      load Descriptor into register 236 DLoadi addrl;
      DLoad2 addr2;
      DStore3 addi'3;
      STM_commit();
      I
      參照上述偽代碼和圖I 圖5,如果副本#1作為HTM執(zhí)行失敗,第二偽代碼(副本#2)可作為STM(如圖3 圖5所討論的)被執(zhí)行。因此,該HTM代碼可作為一個HTM事務(wù)執(zhí)行原子區(qū)。在一個實施例中,該HTM代碼可依靠高速緩存一致性機制來保證事務(wù)一致性,并且可以不獲得如圖3 圖5所描述的頁表(116)表項的任何所有權(quán)。如果該HTM事務(wù)由于硬件溢出(422)而導致提交失敗,STM代碼(副本#2)可在之后作為STM事務(wù)被執(zhí)行。如上述STM代碼示例(副本#2)所示,所述程序可首先加載一個對應(yīng)于該STM事務(wù)(502)的描述符(或標識符)到寄存器236。依照至少一個指令集架構(gòu),所述程序(副本#2)然后可以使用指令“DLoad”和“DStore”分別作為加載和存儲指令。在一個實施例中,“01^&(1”指令可獲取相應(yīng)01'1^(214)表項的排他所有權(quán),例如,通過復制寄存器236的值到相應(yīng)的所有權(quán)標志222的一部分。在一個實施例中,“05如^”指令可獲取相應(yīng)011^(214)表項的排他所有權(quán),例如,通過復制寄存器236的值到相應(yīng)的所有權(quán)標志222的一部分?!癝TM_commit O ”指令可對于STM代碼的成功提交進行測試(508)。
      按照至少一個指令集架構(gòu),“DRelease”指令可被用來釋放DTLB214的一個或多個表項(或頁)的所有權(quán),例如,通過更新對應(yīng)的所有權(quán)標志222 (例如,通過將該標志設(shè)置為空)。在一個實施例中,所有的存儲(例如,參照STM代碼所討論的)都被安排到線程私有的存儲單元(例如,在高速緩存108中),而一個或多個對應(yīng)于STM事務(wù)的指令正在被執(zhí)行(322)。當所述代碼到達該STM事務(wù)的結(jié)尾并且能夠成功提交(324)時,所述更新被復制到相應(yīng)的存儲單元,如參照操作312、420和/或510所討論的。因此,這些操作便可使用“DRelease”指令以釋放線程已訪問的所有頁的所有權(quán)。圖6示出了計算系統(tǒng)600的一個實施例的方框圖。計算系統(tǒng)600可包括一個或多個與互連(或者總線)604通信的中央處理單元(CPU)或處理器602。在一個實施例中,處理器602可以與圖I中的處理器相同或相似。并且,互連604可與參照圖I 圖2所討論的互連104和/或112相同或者相似。處理器602可包括任何類型的處理器,如通用處理器、網(wǎng)絡(luò)處理器(例如,處理通過計算機網(wǎng)絡(luò)進行傳遞的數(shù)據(jù)的處理器),或其它處理器,包括精簡指令集計算機(RISC)處理器或者復雜指令集計算機(CISC)處理器。此外,處理器602可為單內(nèi)核或多內(nèi)核設(shè)計,例如,包括一個或多個如參照圖I所描述的處理器內(nèi)核(106)。具有多內(nèi)核設(shè)計的處理器602可在同一集成電路(IC)管芯上集成不同類型的處理器內(nèi)核。此外,具有多內(nèi)核設(shè)計的處理器602可被實現(xiàn)為對稱或非對稱的多處理器。如圖6所示,芯片組606可與互連604進行通信。芯片組606可包括存儲器控制中心(MCH) 608。MCH608可包括與存儲器114通信的存儲器控制器610。存儲器114可存儲數(shù)據(jù),例如,包括由處理器602或其他任何與計算系統(tǒng)600通信的設(shè)備來執(zhí)行的指令序列。如圖6所示,存儲器114可包括如參照圖I 圖5所討論的頁表116。在本發(fā)明的一個實施例中,存儲器114可包括一個或多個易失性存儲設(shè)備,如隨機存取存儲器(RAM)、動態(tài)RAM(DRAM)、同步DRAM(SDRAM)、靜態(tài)RAM(SRAM)、或者其他易失性存儲設(shè)備。也可以使用非易失性存儲器,如硬盤。附加的設(shè)備可通過互連604進行通信,如多個處理器和/或多個系統(tǒng)存儲器。MCH608可另外包括與圖形加速器616通信的圖形接口 614。在一個實施例中,圖形接口 614可通過加速圖形端口(AGP)與圖形加速器616通信。在本發(fā)明的一個實施例中,顯示器(如平板顯示器)可與圖形接口 614通過例如信號轉(zhuǎn)換器進行通信,信號轉(zhuǎn)換器可以將存儲在一個存儲設(shè)備(如視頻存儲器或系統(tǒng)存儲器)中的圖像的數(shù)字表示轉(zhuǎn)換為被顯示器解釋和顯示的顯示信號。在各種實施例中,由顯示設(shè)備產(chǎn)生的顯示信號在被解釋和顯示在顯示器上之前可能會經(jīng)過各種控制設(shè)備。此外,控制中心接口 618可以使得MCH608和輸入/輸出(I/O)控制中心(ICH) 620之間能夠進行通信。ICH620可以給與計算系統(tǒng)600通信的I/O設(shè)備提供接口。ICH620可與總線622通過外設(shè)橋(或控制器)624進行通信,所述外設(shè)橋(或控制器)例如外圍組件互連(PCI)橋或者通用串行總線(USB)控制器。橋624可在處理器602和外圍設(shè)備之間提供數(shù)據(jù)通路。其他類型的拓撲也可以被使用。此外,例如通過多個橋或控制器,多個總線可以與ICH620進行通信。此外,在本發(fā)明的不同實施例中,與ICH620通信的其他外設(shè)還可以包括,集成驅(qū)動電子設(shè)備(IDE)或小型計算機系統(tǒng)接口(SCSI)硬盤驅(qū)動器、USB端口、鍵盤、鼠標、并行端口、串行端口、軟盤驅(qū)動器、或數(shù)字數(shù)據(jù)支持接口(例如,數(shù)字視頻接口(DVI))。 總線622可與音頻設(shè)備626、一個或多個磁盤驅(qū)動器628、以及網(wǎng)絡(luò)適配器630進行通信。適配器630可與計算機網(wǎng)絡(luò)631進行通信,例如,使系統(tǒng)600的各組件能夠通過網(wǎng)絡(luò)631發(fā)送和/或接收數(shù)據(jù)。其他設(shè)備可通過總線622進行通信。同樣,在本發(fā)明的一些實施例中,各種組件(如網(wǎng)絡(luò)適配器630)可與MCH608進行通信。此外,處理器602和MCH608可以結(jié)合起來構(gòu)成單個芯片。此外,在本發(fā)明的其他實施例中,圖形加速器616可被包含在MCH608 中。在一個實施例中,計算系統(tǒng)600可包括易失性和/或非易失性存儲器(或存儲裝置)。舉例來說,非易失性存儲器可包括下列中的一個或多個只讀存儲器(ROM)、可編程ROM(PROM)、可擦寫PROM(EPROM)、電可擦寫PROM(EEPROM)、磁盤驅(qū)動器(例如,628)、軟盤、光盤ROM(⑶-ROM)、數(shù)字通用光盤(DVD)、閃速存儲器、磁光盤、或其他類型的用于存儲電子數(shù)據(jù)(例如,包括指令)的非易失性機器可讀介質(zhì)。圖7示出了按照本發(fā)明的一個實施例被安排為點對點(PtP)配置的計算系統(tǒng)700。特別地,圖7示出了一個系統(tǒng),其中處理器、存儲器、輸入/輸入設(shè)備通過多個點對點接口進行互連。參照圖I 圖6所討論的操作可由系統(tǒng)700的一個或多個組件執(zhí)行。如圖7中所示的,系統(tǒng)700可包括若干處理器,為清晰闡述只顯示了其中的二個處理器702和704。處理器702和704可各自包含一個本地存儲器控制中心(MCH) 706和708以實現(xiàn)與存儲器710和712的通信。存儲器710和/或712可存儲各種數(shù)據(jù),例如參照圖
      I、圖2和圖6的存儲器114所討論的那些數(shù)據(jù)。在一個實施例中,處理器702和704可以是參照圖6所討論的處理器602里的一個。處理器702和704可分別使用PtP接口電路716和718通過點對點(PtP)接口 714交換數(shù)據(jù)。此外,處理器702和704可各自與芯片組720使用點對點接口電路726、728、730和732通過單獨的PtP接口 722和724交換數(shù)據(jù)。芯片組720可進一步與高性能圖形電路734通過高性能圖形電路接口 736交換數(shù)據(jù),例如,使用PtP接口電路737。本發(fā)明的至少一個實施例可提供在處理器702和704中。舉例來說,圖I或圖2的一個或多個內(nèi)核106可位于處理器702和704中。然而,本發(fā)明的其他實施例可存在于圖7的系統(tǒng)700中的其他電路、邏輯單元、或設(shè)備內(nèi)。此外,本發(fā)明的其他實施例可以是分布在圖7所示的幾個電路、邏輯單元或設(shè)備內(nèi)。芯片組720可使用PtP接口電路741與總線740進行通信??偩€740可以有一個或多個設(shè)備與之通信,如總線橋742和I/O設(shè)備743。通過總線744,總線橋743可與其他設(shè)備通信,所述其他設(shè)備如鍵盤/鼠標745、通信設(shè)備746(如調(diào)制解調(diào)器、網(wǎng)絡(luò)接口設(shè)備(例如,圖6中的網(wǎng)絡(luò)適配器630)、或其他可與計算機網(wǎng)絡(luò)631通信的通信設(shè)備)、音頻I/O設(shè)備、和/或數(shù)據(jù)存儲設(shè)備748。數(shù)據(jù)存儲設(shè)備748可存儲可由處理器702和/或704執(zhí)行的代碼749。在本發(fā)明的各種實施例中,本文中所述的操作,例如,參照圖I 圖7所述的,可以被實現(xiàn)為硬件(例如,邏輯電路)、軟件、固件或其組合,其可作為計算機程序產(chǎn)品來提供,所述計算機程序產(chǎn)品例如包括機器可讀或計算機可讀的介質(zhì),其上存儲了用于對計算機進行編程以使其執(zhí)行這里所述的處理過程的指令(或軟件過程)。所述機器可讀介質(zhì)可包括存儲設(shè)備,如參照圖I 圖7所述的那些。此外,這樣的計算機可讀介質(zhì)可以作為一個計算機程序產(chǎn)品來下載,其中所述程序可以以包含在載波或其他傳播媒介中的數(shù)據(jù)信號的形式通過通信鏈路(例如,總線、調(diào) 制解調(diào)器、或者網(wǎng)絡(luò)連接)從遠程計算機(例如,服務(wù)器)傳輸?shù)秸埱蟮挠嬎銠C(例如,客戶機)。因此,在這里,載波應(yīng)被視為包括機器可讀介質(zhì)。在說明書中提及“一個實施例”或“一實施例”表示,結(jié)合該實施例而描述的特定特征、結(jié)構(gòu)或特性可被包括在至少一種實現(xiàn)中。出現(xiàn)在說明書中各處的短語“在一個實施例中”可以或可以不全指同一個實施例。此外,在說明書和權(quán)利要求書中,可以使用術(shù)語“耦合的”和“連接的”以及它們所衍生出的詞匯。在本發(fā)明的一些實施例中,“連接的”可以被用來表示兩個或更多元件彼此直接物理或電接觸。“耦合的”可以表示兩個或更多元件直接物理或電接觸。然而,“耦合的”也可以表示兩個或更多元件可以彼此不是直接接觸,但仍然彼此協(xié)作或交互。因此,雖然已經(jīng)以特定于結(jié)構(gòu)特征和/或方法步驟的語言描述了本發(fā)明的實施例,但是應(yīng)當理解,所要求保護的主題不應(yīng)限于所述的具體特征或步驟。相反,所公開的這些具體特征和步驟只是實現(xiàn)所要求保護的主題的示例形式。
      權(quán)利要求
      1.一種處理器,包括 多個內(nèi)核,每個內(nèi)核用于在先前的與一線程相對應(yīng)的硬件事務(wù)存儲器訪問執(zhí)行失敗之后,引發(fā)執(zhí)行與所述線程相對應(yīng)的軟件事務(wù)存儲器訪問; 所述多個內(nèi)核中的每個內(nèi)核包括用于存儲數(shù)據(jù)的一級(LI)高速緩存; 共享的二級(L2)高速緩存、共享的低級高速緩存(LLC)或者被所述多個內(nèi)核共享的其它類型的高速緩存; 其中,每個內(nèi)核包括用于存儲所有權(quán)標志的存儲器,其中,所述所有權(quán)標志包括一個或多個位,用以確定對應(yīng)表項的所有權(quán)狀態(tài),并且其中,響應(yīng)于所述所有權(quán)標志指示有效的所有權(quán)狀態(tài),中止所述硬件事務(wù)存儲器訪問。
      2.如權(quán)利要求I所述的處理器,其中,每個內(nèi)核引發(fā)所述軟件事務(wù)存儲器訪問和所述 硬件事務(wù)存儲器訪問中的至少一個被推測性地執(zhí)行。
      3.如權(quán)利要求I所述的處理器,其中,當與不同指令發(fā)生沖突時,所述處理器中止所述硬件事務(wù)存儲器訪問。
      4.如權(quán)利要求3所述的處理器,其中,所述不同指令是與所述軟件事務(wù)存儲器訪問相對應(yīng)的指令。
      5.如權(quán)利要求3所述的處理器,其中,所述不同指令是由每個內(nèi)核或至少一個其它處理器內(nèi)核執(zhí)行的。
      6.如權(quán)利要求I所述的處理器,其中,所述存儲器還存儲與對應(yīng)于所述硬件事務(wù)存儲器訪問的第一指令和對應(yīng)于所述軟件事務(wù)存儲器訪問的第二指令中的至少一個指令相對應(yīng)的信息,其中,所述處理器在所述第一指令和第二指令中的至少一個指令提交時更新所存儲的信息。
      7.如權(quán)利要求I所述的處理器,還包括用于存儲數(shù)據(jù)的存儲器,其中,所述硬件事務(wù)存儲器訪問和所述軟件事務(wù)存儲器訪問對存儲在所述存儲器中的數(shù)據(jù)執(zhí)行相同的操作。
      8.如權(quán)利要求I所述的處理器,其中,所述存儲器還存儲與所述硬件事務(wù)存儲器訪問和所述軟件事務(wù)存儲器訪問中的至少一個相對應(yīng)的信息,其中,所存儲的信息包括虛擬地址、物理地址、所有權(quán)標志、以及推測標志中的一個或多個。
      9.如權(quán)利要求8所述的處理器,其中,所述存儲器包括內(nèi)容可尋址存儲器。
      10.如權(quán)利要求8所述的處理器,其中,所述存儲器包括數(shù)據(jù)轉(zhuǎn)換后備緩沖器。
      11.如權(quán)利要求I所述的處理器,其中,所述存儲器還存儲頁表的多個部分,其中,所述頁表存儲的數(shù)據(jù)包括虛擬地址標簽、物理地址標簽、以及物理地址數(shù)據(jù)中的一個或多個。
      12.如權(quán)利要求11所述的處理器,還包括用于存儲指向所述頁表的最后一條表項的頁表界限指針的寄存器。
      13.如權(quán)利要求I所述的處理器,還包括用于存儲與所述軟件事務(wù)存儲器訪問相對應(yīng)的描述符的寄存器。
      14.如權(quán)利要求I所述的處理器,還包括多個其它內(nèi)核。
      15.如權(quán)利要求I所述的處理器,其中,所述硬件事務(wù)存儲器訪問由于硬件溢出而執(zhí)行失敗。
      16.如權(quán)利要求I所述的處理器,其中,每個內(nèi)核包括 取回單元,用于取回指令以便由該內(nèi)核來執(zhí)行。
      17.如權(quán)利要求16所述的處理器,其中,每個內(nèi)核還包括 解碼單元,用于對取回的指令進行解碼。
      18.如權(quán)利要求17所述的處理器,其中,每個內(nèi)核還包括 調(diào)度單元,用于執(zhí)行關(guān)聯(lián)于存儲已解碼指令直到所述指令已準備好待分派的操作。
      19.如權(quán)利要求18所述的處理器,其中,每個內(nèi)核還包括 執(zhí)行單元,用于執(zhí)行所述調(diào)度單元所分派的指令。
      20.如權(quán)利要求19所述的處理器,其中,所述執(zhí)行單元包括存儲器執(zhí)行單元、整數(shù)執(zhí)行單元和浮點數(shù)執(zhí)行單元。
      21.如權(quán)利要求19所述的處理器,其中,所述執(zhí)行單元包括亂序執(zhí)行單元。
      22.如權(quán)利要求19所述的處理器,其中,每個內(nèi)核還包括 引退單元,用于在指令被提交之后令已執(zhí)行的指令引退。
      23.如權(quán)利要求19所述的處理器,其中,每個內(nèi)核還包括 跟蹤高速緩存或微代碼只讀存儲器(uROM),用于存儲微代碼和/或已被取回的指令的蹤跡。
      24.如權(quán)利要求23所述的處理器,其中,所述微代碼用于配置每個內(nèi)核的硬件組件。
      全文摘要
      描述了用于提供無約束事務(wù)存儲器系統(tǒng)的方法和裝置。在一個實施例中,如果先前的一個硬件事務(wù)存儲器(HTM)訪問操作失敗,則與一個軟件事務(wù)存儲器(STM)訪問相對應(yīng)的操作可被執(zhí)行。
      文檔編號G06F12/08GK102968292SQ20121045757
      公開日2013年3月13日 申請日期2006年12月14日 優(yōu)先權(quán)日2005年12月30日
      發(fā)明者H·H·阿卡瑞, A-R·阿德-塔巴塔巴伊, B·薩哈, R·拉吉瓦 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1