專利名稱:利用虛擬存儲器的事務(wù)型存儲器執(zhí)行的制作方法
技術(shù)領(lǐng)域:
背景技術(shù):
重要。特別地,可以利用現(xiàn)代處理器對預(yù)測執(zhí)行(speculative execution)的支持來預(yù)測性 地執(zhí)行代碼塊,以有效地實施這些多線程應(yīng)用程序。但是,目前實施事務(wù)型存儲器和事務(wù) 型執(zhí)行的技術(shù)受困于資源限制,因為它們不能處理任意大小的事務(wù)或任意長度的事務(wù),由 此給編程和事務(wù)型執(zhí)行都給出了巨大的限制。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供了一種.一種裝置,包括處理器,所述處理器包括本 地事務(wù)型緩存(cache);以及資源管理器,所述資源管理器對來自請求線程的事務(wù)型存 儲器事務(wù)請求做出響應(yīng),以便確定所述本地事務(wù)型緩存是否能夠容納所述事務(wù)型存儲器事 務(wù)請求,并且,如果可以,則所述本地事務(wù)型緩存執(zhí)行所述事務(wù)型存儲器事務(wù);其中,如 果所述本地事務(wù)型緩存不能容納所述事務(wù)型存儲器事務(wù)請求,則所述事務(wù)型存儲器事務(wù)請 求的數(shù)據(jù)被溢出到與所述請求線程相關(guān)聯(lián)的應(yīng)用程序虛擬地址空間中。
根據(jù)本發(fā)明的另一個方面,提供了一種方法,包括確定本地事務(wù)型緩存是否能夠容 納來自請求線程的事務(wù)型存儲器事務(wù)請求;如果所述本地事務(wù)型緩存能夠容納所述事務(wù)型 存儲器事務(wù)請求,則利用本地事務(wù)型緩存執(zhí)行所述事務(wù)型存儲器事務(wù)請求;以及如果所述 本地事務(wù)型緩存不能夠容納所述事務(wù)型存儲器事務(wù)請求,則將所述事務(wù)型存儲器事務(wù)請求 的數(shù)據(jù)溢出到與所述請求線程相關(guān)聯(lián)的應(yīng)用程序虛擬地址空間中。
根據(jù)本發(fā)明的又一個方面,提供了一種機器可讀介質(zhì),具有儲存在其上的指令,當(dāng)所 述指令被機器執(zhí)行時,引起所述機器執(zhí)行下列操作,包括確定本地事務(wù)型緩存是否能夠 容納來自請求線程的事務(wù)型存儲器事務(wù)請求;如果所述本地事務(wù)型緩存能夠容納所述事務(wù) 型存儲器事務(wù)請求,則利用本地事務(wù)型緩存執(zhí)行所述事務(wù)型存儲器事務(wù)請求;以及如果所 述本地事務(wù)型緩存不能夠容納所述事務(wù)型存儲器事務(wù)請求,則將所述事務(wù)型存儲器事務(wù)請
求的數(shù)據(jù)溢出到與所述請求線程相關(guān)聯(lián)的應(yīng)用程序虛擬地址空間中。
根據(jù)本發(fā)明的再一個方面,提供了一種計算機系統(tǒng),包括處理器,它包括本地事務(wù)
型緩存;數(shù)據(jù)庫;以及資源管理器,所述資源管理器對來自請求線程的事務(wù)型存儲器事務(wù) 請求做出響應(yīng),所述請求來自應(yīng)用程序接口 (API)并請求訪問數(shù)據(jù)庫中的存儲器,所述 資源管理器確定所述本地事務(wù)型緩存是否能夠容納所述事務(wù)型存儲器事務(wù)請求,并且,如 果可以,則所述本地事務(wù)型緩存執(zhí)行所述事務(wù)型存儲器事務(wù);其中,如果所述本地事務(wù)型 緩存不能容納所述事務(wù)型存儲器事務(wù)請求,則所述事務(wù)型存儲器事務(wù)請求的數(shù)據(jù)被溢出到 與所述請求線程相關(guān)聯(lián)的應(yīng)用程序虛擬地址空間中。
圖1是其中可以實踐本發(fā)明的實施方案的計算機系統(tǒng)結(jié)構(gòu)的實施例的部分框圖。
圖2是流程圖,示出了實施涉及利用虛擬存儲器的事務(wù)型存儲器執(zhí)行的本發(fā)明實施方案的過程。
圖3是根據(jù)本發(fā)明的一個實施方案的事務(wù)地址轉(zhuǎn)換表(XATT)的結(jié)構(gòu)圖。
圖4是流程圖,根據(jù)本發(fā)明的一個實施方案,示出了獲取新的虛擬和物理地址的過程。
圖5是根據(jù)本發(fā)明的一個實施方案示出各種狀態(tài)的例子的圖,在經(jīng)歷利用虛擬存儲器
的虛擬存儲器事務(wù),例如虛擬事務(wù)存儲器(VTM)事務(wù)時,事務(wù)的線程可以處于所述的狀態(tài)。
圖6是流程圖,根據(jù)本發(fā)明的一個實施方案,示出了事務(wù)型存儲器事務(wù)如何產(chǎn)生溢出 請求的過程。
圖7是流程圖,根據(jù)本發(fā)明的一個實施方案,示出了提交事務(wù)的過程。 圖8是流程圖,根據(jù)本發(fā)明的一個實施方案,示出了溢出的事務(wù)如何響應(yīng)進(jìn)入的請求 的過程。
具體實施方案
在下面的描述中,將詳細(xì)描述本發(fā)明的各種實施方案。但是,包括這些細(xì)節(jié)是為有助 于理解本發(fā)明和描述用于采用本發(fā)明的示范性實施方案。這樣的細(xì)節(jié)不應(yīng)該被用來將本發(fā)
明局限于所描述的特定實施方案,因為在本發(fā)明的范圍內(nèi),其他的變化和實施方案是可能 的。此外,盡管給出了大量細(xì)節(jié)以提供對本發(fā)明的實施方案的透徹理解,但是,對本領(lǐng)域 熟練技術(shù)人員來講很清楚,實踐本發(fā)明的實施方案不需要這些具體細(xì)節(jié)。在其他的實例中, 例如公知的方法、數(shù)據(jù)類型、協(xié)議、過程、部件、電氣結(jié)構(gòu)和電路的細(xì)節(jié)沒有被詳細(xì)描述, 或者被以框圖形式示出,以模糊了本發(fā)明。此外,本發(fā)明的實施方案將在特定實施方案中 被描述,但是可以被實施在硬件、軟件、固件、中間件或其組合中。
圖1示出了其中可以實踐本發(fā)明的實施方案的計算機系統(tǒng)結(jié)構(gòu)的實施例的部分框圖。 系統(tǒng)結(jié)構(gòu)100包括至少一個例如中央處理單元的處理器101、芯片組103、系統(tǒng)存儲器設(shè) 備105、 一個或更多個接口 111和網(wǎng)絡(luò)接口 107,所述接口 111用于和一個或更多個輸入/ 輸出(I/O)設(shè)備113連接。
芯片組103可以包括存儲器控制中心(MCH)和/或I/0控制中心(hub)。芯片組103 可以是一個或更多個起到用于在處理器101和計算機系統(tǒng)100的其他部件之間數(shù)據(jù)傳輸?shù)?中心或核心作用的集成電路芯片。而且,計算機系統(tǒng)100可以包括額外的部件(未被示出), 例如其他的處理器(例如在多處理器系統(tǒng)中)、協(xié)處理器,以及其他的部件等,這僅僅是 計算機系統(tǒng)非?;镜睦?。
為了當(dāng)前描述的目的,術(shù)語"處理器"或"CPU"指任何能夠執(zhí)行指令序列的機器, 并且應(yīng)該被視為包括但不限于通用微處理器、專用微處理器、專用集成電路(ASIC)、 多媒體控制器、信號理器和微控制器等。在一個實施方案中,CPU 101是能夠執(zhí)行英特爾 體系結(jié)構(gòu)指令集的通用高速微處理器。例如,CPU 101可以是英特爾 奔騰⑧類處理器, 例如英特爾⑧體系結(jié)構(gòu)32位(IA—32)處理器(例如奔騰 4M)。CPU 101、芯片組103和其他的部件通過芯片組103訪問系統(tǒng)存儲器設(shè)備105。例如, 芯片組103使用存儲器控制中心可以為以系統(tǒng)存儲器設(shè)備105為目標(biāo)的存儲器事務(wù)服務(wù)。
系統(tǒng)存儲器設(shè)備105可以包括任何用于儲存數(shù)字信息的存儲器設(shè)備,例如靜態(tài)隨機訪 問存儲器(SRAM)、動態(tài)隨機訪問存儲器(DRAM)、同步動態(tài)隨機訪問存儲器(SDRAM), 和/或雙數(shù)據(jù)率(DDR) SDRAM或DRAM,等等。因此,在一個實施方案中,系統(tǒng)存儲 器設(shè)備105包括易失性存儲器。而且,系統(tǒng)存儲器設(shè)備也可以包括非易失性存儲器,例如 只讀存儲器(ROM)。
此外,系統(tǒng)存儲器設(shè)備105還可以包括其他儲存設(shè)備和合適的接口,所述其他儲存設(shè) 備例如硬盤驅(qū)動器、軟盤驅(qū)動器、光盤驅(qū)動器等。
本發(fā)明的實施方案通過利用虛擬存儲器來允許在資源方面任意大小的事務(wù),在處理器 中提供了增強的事務(wù)型存儲器執(zhí)行支持,所述任意大小的事務(wù)例如數(shù)據(jù)印記(footprint) 大小、被執(zhí)行的指令、進(jìn)程遷移等。此外,這被透明地完成,以使程序員不必為了容納資 源問題而以任何特殊的方式來寫軟件。此后,術(shù)語事務(wù)指被原子性地執(zhí)行的指令序列。此 外,事務(wù)也可以符合先前所討論的ACID性質(zhì)。
如將要被討論的那樣,本發(fā)明的實施方案涉及事務(wù)型存儲器執(zhí)行支持,所述事務(wù)型存 儲器執(zhí)行支持通過利用應(yīng)用程序的虛擬地址空間自身,利用虛擬存儲器來有效地容納事務(wù) 型存儲器執(zhí)行中的資源問題,以便溢出任何不能被緩沖在處理器的事務(wù)型緩存結(jié)構(gòu)中的數(shù) 據(jù)。這允許對大多數(shù)一般情況中的硬件或處理器事務(wù)型執(zhí)行支持,在大多數(shù)一般情況中, 本地事務(wù)型緩存能夠容納事務(wù)的資源要求,并且,在數(shù)據(jù)印記尺寸大于本地事務(wù)型緩存的
相對罕見但極為重要的情況下,數(shù)據(jù)被溢出到應(yīng)用程序自己的虛擬地址空間中用于處理。 處理器中現(xiàn)存的本地緩存也可以被用作事務(wù)型緩存,或者,事務(wù)型緩存可以是單獨的硬件 結(jié)構(gòu)。
此外,系統(tǒng)存儲器設(shè)備105可以在非易失存儲器中儲存程序來輔助利用虛擬存儲器的 事務(wù)型存儲器(TM)執(zhí)行,如處理器101所實施的來實施根據(jù)本發(fā)明的實施方案的技術(shù) 那樣。特別地,在一個實施方案中,這樣的程序可以輔助實現(xiàn)計算機系統(tǒng)100內(nèi)的事務(wù)型 存儲器訪問,特別是在處理器的事務(wù)型緩存124、物理存儲器140或分頁存儲器141、虛 擬存儲器170和數(shù)據(jù)庫108之間,這將要被討論。
系統(tǒng)存儲器設(shè)備105結(jié)合物理存儲器140、分頁存儲器141、虛擬存儲器170等,可 以被用來實施與數(shù)據(jù)庫108的存儲器事務(wù)。例如,數(shù)據(jù)庫108可以包括企業(yè)數(shù)據(jù)庫 (corporatedatabase)、金融數(shù)據(jù)庫、項目管理數(shù)據(jù)庫、目錄服務(wù)等,以及其他的通常被 與事務(wù)型存儲器類型的事務(wù)一起使用的指針豐富型數(shù)據(jù)結(jié)構(gòu)。此外,計算機系統(tǒng)100可以包括適當(dāng)?shù)慕涌?111,用于與例如磁盤驅(qū)動器、監(jiān)視器、
小鍵盤、調(diào)制解調(diào)器、打印機的i/o設(shè)備或任何其他類型的適當(dāng)i/o設(shè)備連接。
計算機系統(tǒng)100可以包括網(wǎng)絡(luò)接口 107,用于將計算機系統(tǒng)100與網(wǎng)絡(luò)109連接,網(wǎng) 絡(luò)109例如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)等。
圖1的基本計算機系統(tǒng)結(jié)構(gòu)100是在實施此后將被討論的利用虛擬存儲器的事務(wù)型存 儲器執(zhí)行中可以被利用的一種類型的計算機系統(tǒng)的實施例。本領(lǐng)域熟練技術(shù)人員應(yīng)該理 解,圖1的示范性計算機系統(tǒng)結(jié)構(gòu)100僅僅是基本的計算機系統(tǒng)的一個實施例,并且,很 多其他的類型和變化是可能的。此外,本領(lǐng)域熟練技術(shù)人員將認(rèn)識到,圖1中所示的示范 性環(huán)境并非打算用來限制本發(fā)明的實施方案。此外,應(yīng)該理解,除了單個的計算機系統(tǒng)結(jié) 構(gòu)100以外,或者代替單個的計算機系統(tǒng)結(jié)構(gòu)100,在實踐本發(fā)明的實施方案時,還可以 利用計算機(和計算機系統(tǒng)結(jié)構(gòu)100類似或者不同)的集群或者組。
更特別地,如圖1所示,處理器101通過結(jié)合標(biāo)準(zhǔn)事務(wù)執(zhí)行功能120和本地事務(wù)型緩 存124以及儲存在物理和分頁存儲器140和141中的事務(wù)地址表145 (此后的XATT), 以及將要被討論的虛擬存儲器170來利用事務(wù)地址轉(zhuǎn)換表巡邏者(walker)(此后的XATT 巡邏者)132,可以實施利用虛擬存儲器功能130的事務(wù)型存儲器(TM)執(zhí)行。此外,如 稍后將被更詳細(xì)地討論的那樣,利用虛擬存儲器130的TM執(zhí)行還可以實施事務(wù)地址轉(zhuǎn)換 緩存(此后的XATC) 134和沖突檢測過濾器(此后的CDF) 136。
當(dāng)對于被請求的事務(wù),資源要求可以被本地事務(wù)型緩存124滿足時,處理器101可以 利用與本地事務(wù)型緩存124—起工作的標(biāo)準(zhǔn)事務(wù)型執(zhí)行功能120來實施標(biāo)準(zhǔn)的事務(wù)型執(zhí)行 功能。但是在其他情況下,當(dāng)事務(wù)要求大于本地事務(wù)型緩存的數(shù)據(jù)資源時,或者經(jīng)過例如 要求超過本地事務(wù)型緩存的持久性的上下文切換時,數(shù)據(jù)可以被溢出到對應(yīng)的應(yīng)用程序的 虛擬地址空間172中,以便無縫地執(zhí)行利用虛擬存儲器170的事務(wù)型存儲器執(zhí)行。如將要 被討論的那樣,這通過事務(wù)地址轉(zhuǎn)換表(XATT)巡邏者132、事務(wù)地址轉(zhuǎn)換表(XATT) 145的組合,以及對虛擬存儲器170和物理存儲器140的使用的唯一且并非顯而易見的組 合來達(dá)成。
在一個實施方案中,處理器101包括本地事務(wù)型緩存124和資源管理器131。對來自 請求線程的事務(wù)型存儲器事務(wù)請求116做出響應(yīng)的資源管理器131確定本地事務(wù)型緩存是 否能夠容納事務(wù)型存儲器事務(wù)請求,并且,如果可以,則本地事務(wù)型存儲器緩存執(zhí)行事務(wù) 型存儲器事務(wù)。但是,如果本地事務(wù)型緩存124不能容納事務(wù)型存儲器事務(wù)請求,則事務(wù) 型存儲器事務(wù)請求的數(shù)據(jù)被溢出到與請求線程相關(guān)聯(lián)的應(yīng)用程序的虛擬地址空間170中。
如圖1中所示,計算機系統(tǒng)結(jié)構(gòu)100包括具有XATT 145、新物理地址(PAnew) 150 和原始物理地址(PAorig) 152的物理存儲器140。在分頁存儲器實施方案141中,也可以 使用XATT 145。計算機系統(tǒng)結(jié)構(gòu)100還包括虛擬存儲器170,以實施應(yīng)用程序的虛擬地址空間172,并且,虛擬地址空間170 (應(yīng)該是172)包括新虛擬地址(VAnew) 174和原 始虛擬地址(VAorig) 176,這將被討論。
特別地,根據(jù)API請求或者其他類型的程序或模塊請求116 (即,請求事務(wù)型存儲器 事務(wù)的某種類型的線程),處理器101執(zhí)行潛在地利用虛擬存儲器的事務(wù)型存儲器執(zhí)行, 以實施此后將被討論的事務(wù)型存儲器事務(wù)。例如,這可以被完成,以便以事務(wù)的方式為程 序當(dāng)前活動的線程簡單地更新存儲器,或者,可以最終以事務(wù)方式來更新數(shù)據(jù)庫108。
現(xiàn)在轉(zhuǎn)到圖2,圖2是流程圖,示出了實施涉及利用虛擬存儲器的事務(wù)型存儲器執(zhí)行 的本發(fā)明實施方案的過程200。在塊202,根據(jù)來自請求線程的事務(wù)型存儲器事務(wù)請求, 過程200確定處理器的本地事務(wù)型緩存124是否能夠容納所請求的事務(wù)的資源要求。例如, 資源管理器131可以做出這個判斷。如果能夠容納,則利用事務(wù)型執(zhí)行功能120和本地事 務(wù)型緩存124的處理器101針對請求線程,利用本地事務(wù)型緩存124來執(zhí)行事務(wù)型存儲器 事務(wù)(塊204)。如果不能,則請求線程的用于所請求的事務(wù)型存儲器事務(wù)的數(shù)據(jù)被溢出 到請求應(yīng)用程序的虛擬地址空間172中(塊206)。利用XATT巡邏者132管理該數(shù)據(jù)溢 出(塊20S)。如稍后將要被更詳細(xì)地討論的那樣,通過利用應(yīng)用程序的虛擬地址空間172, 事務(wù)型存儲器事務(wù)仍可以被處理。
因此,利用標(biāo)準(zhǔn)事務(wù)型執(zhí)行功能來支持一般的情況,在一般情況下,本地事務(wù)型緩存 124能夠容納來自應(yīng)用程序的線程的被請求的事務(wù)的資源要求。
但是,當(dāng)被請求的數(shù)據(jù)資源大于本地事務(wù)型緩存124的資源時,數(shù)據(jù)被使用在寫入時 復(fù)制(copy-on-write)技術(shù)溢出到虛擬存儲器170中的應(yīng)用程序自己的虛擬地址空間172中。 通過將溢出信息保持在與應(yīng)用程序相同的虛擬地址空間中,例如上下文切換、進(jìn)程遷移等 的關(guān)鍵狀況可以被自動地處理。有利的是,在這個過程中不涉及到用戶。如將要被討論的 那樣,和頁面巡邏者類似,XATT巡邏者132提供一種機制,通過此機制,利用虛擬存儲 器而非本地事務(wù)型緩存,可以完成事務(wù)型存儲器事務(wù)。
為了處理這些溢出,利用了兩個特定部件儲存在物理地址140或分頁存儲器141中 的XATT145,和由處理器實施的XATT巡邏者132。 XATT 145被XATT巡邏者132操 作以實現(xiàn)這個功能。XATT以和頁表被管理的方法類似地被管理,并且,XATT巡邏者 132以和頁面巡邏者類似的方式被實施,這將被討論。應(yīng)該理解,盡管XATT巡邏者132 被示出成由處理器101來實施,但是,它也可以被用具有軟件支持的混合方式實施。
現(xiàn)在參考圖3,圖3是根據(jù)本發(fā)明的一個實施方案的XATT300的結(jié)構(gòu)圖。如先前所 討論的那樣,XATT可以被儲存在物理存儲器或者分頁存儲器中。此外,XATT300可以 是在所考慮的應(yīng)用程序的地址基內(nèi)運行的所有事務(wù)公用的,或者可以是每個事務(wù)一個。
特別地,XATT包括5個字段原始虛擬地址(VAorig) 302、新虛擬地址(VA new) 306、原始物理地址(PAorig)310、新物理地址(PAnew)316和事務(wù)指針(XPTR) 320。 XATT300 執(zhí)行兩個主要功能1)跟蹤溢出的讀集合(例如在事務(wù)中所讀的塊),和2)跟蹤溢出的 寫集合(例如在事務(wù)中所寫的塊)和它們被轉(zhuǎn)換的地址。應(yīng)該理解,XATT300可以是單 個一元結(jié)構(gòu),或者可以被分解成單獨的結(jié)構(gòu)。XATT自己可以被用來儲存和被轉(zhuǎn)換的地址 對應(yīng)的數(shù)據(jù)。
現(xiàn)在轉(zhuǎn)到圖4,圖4根據(jù)本發(fā)明的一個實施方案,示出了獲取新虛擬地址和物理地址 的過程400。原始虛擬地址(VAorig)通常是被溢出的數(shù)據(jù)塊的按緩存塊對齊的地址 (cache-block-aligned address)。當(dāng)溢出被觸發(fā)時,分配新虛擬地址(VAnew)(具有其自己 的新物理地址(PAnew)),以便和所述原始虛擬地址對應(yīng)。
特別地,如圖4中所示,在塊402,過程400確定是否已經(jīng)檢測到溢出。如果沒有, 則執(zhí)行標(biāo)準(zhǔn)處理(塊404)。但是,如果檢測到了溢出,則分配和原始虛擬地址(VAorig) 對應(yīng)的新虛擬地址(VAnew)。此外,在塊408,分配和原始物理地址(PAorig)對應(yīng)的新物理 地址(PAnew)。
VAnew可以由處理器通過運行時庫動態(tài)地分配,或者可以在編譯時由編譯器靜態(tài)地 分配,取決于地址空間實施如何被計算機系統(tǒng)結(jié)構(gòu)處理。使用現(xiàn)有的虛擬地存儲器管理機 制來獲取原始虛擬地址(VAorig)。新虛擬地址(VAnew)屬于應(yīng)用程序自身的地址空間。新 虛擬地址可以是XATT自身的一部分。
原始虛擬地址(VAorig) 302、新虛擬地址(VAnew) 306、原始物理地址(PAorig) 310、新 物理地址(PAnew) 316的這些值,以及事務(wù)動作指針320的值(這將在稍后被詳細(xì)地討論) 可以被輸入XATT 300中,并被儲存在物理地址140中和/或分頁地址141中。
可以用兩種不同的方法來實施XATT300。在一個實施方案中,在應(yīng)用程序中,可以 在每一個事務(wù)一個的基礎(chǔ)上實施XATT。當(dāng)被以這種方式實施時,每一個事務(wù)具有其自己 的唯一的新物理地址(PAnew)。這允許事務(wù)暫時地更新對被溢出塊的任何修改而不干涉到 任何其他的事務(wù)。PAnew只對正在被處理的事務(wù)是可見的。雖然這種方法允許多副本更新, 但是,如果事務(wù)提交了,則原始物理地址(PAorig)需要被用新物理地址(PAnew)更新。這通 過由XATT巡邏者132觸發(fā)提交事務(wù)發(fā)生。
在另一個實施方案中,XATT300可以被實施成對應(yīng)用程序內(nèi)的所有事務(wù)是公用的。 在這種方案中,新物理地址address(PAnew)對所有的事務(wù)是公用的。因此,無需副本更新 來保證正確的值是可見的,因為在任意時間,對于給定的溢出塊,只有一個物理位置可以 被寫入。此外,所有的事務(wù)自動得知從哪個物理地址獲取最近被更新的數(shù)據(jù)。
事務(wù)指針(XPTR) 320指向當(dāng)前"擁有"特定溢出塊的事務(wù)的頭(header)數(shù)據(jù)結(jié)構(gòu)。 特別的,如將要被詳細(xì)地討論的那樣,XPTR320可以被設(shè)置為下列模式中的一個運行、異常終止、或提交。通過査詢XPTR可以獲取擁有塊的事務(wù)的狀態(tài)。如果事務(wù)頭的"狀態(tài)" 被設(shè)置為將其異常終止,則可以執(zhí)行批量粉碎(bulk-squash)。然后,異常終止者(aborter) 可以改變XPTR來指向自己。
在溢出事務(wù)提交前,要求檢査XPTR320以保證它仍擁有該事務(wù)。如果其指針被設(shè)置 為異常終止它,則該事務(wù)必須重試。如果它未被異常終止,則它將自動地將其狀態(tài)設(shè)置為 提交。這告訴任何其他進(jìn)入的線程,較早的事務(wù)已經(jīng)被提交。表清除可以定期地發(fā)生。因 此,XPTR320提供了原子性地提交或異常終止具有溢出塊的事務(wù)的能力。
無論使用全局XATT還是私有XATT, XPTR 320總是指向事務(wù)頭。每一個事務(wù)的頭 可由事務(wù)型存儲器機器訪問。這允許活動的事務(wù)通過將事務(wù)的事務(wù)頭狀態(tài)設(shè)置為異常終止 來異常終止即使被交換出的事務(wù)。
現(xiàn)在參考圖5,圖5是根據(jù)本發(fā)明的一個實施方案示出各種狀態(tài)的例子的圖,在經(jīng)歷 利用虛擬存儲器的事務(wù)型存儲器事務(wù),例如虛擬事務(wù)存儲器(VTM)事務(wù)時,事務(wù)的線程 可以處于所述的狀態(tài)。此外,如先前所討論的那樣,VTM狀態(tài)可以被儲存在XATT中該 事務(wù)的XPTR中。
例如,XPTR320中的VTM狀態(tài)可以被設(shè)置為運行502。運行狀態(tài)指示正在執(zhí)行并且 其最終狀態(tài)未知的事務(wù)。在另一方面,VTM狀態(tài)可以被設(shè)置為異常終止504。如果狀態(tài)被 設(shè)置為異常終止,則它指示事務(wù)被迫異常終止的情況。異常終止?fàn)顟B(tài)是必要的,因為在溢 出情況下,在事務(wù)最后異常終止之前存在一個時間段,因為"即刻"丟棄是不可能的。
或者,XPTR320的VTM狀態(tài)可以被設(shè)置為提交506。提交狀態(tài)表示事務(wù)被成功地執(zhí) 行。提交狀態(tài)是必要的,因為在溢出情況下,在事務(wù)狀態(tài)已經(jīng)被最后提交之間存在一個時 間,因為"即刻"更新是不可能的。此外,VTM狀態(tài)描述了事務(wù)是活動的508還是已經(jīng) 被交換510?;顒訝顟B(tài)508表明事務(wù)當(dāng)前正在處理器上運行。在另一方面,交換狀態(tài)510 表明事務(wù)被上下文切換出去。
其他的VTM狀態(tài)包括本地512或溢出狀態(tài)514。本地狀態(tài)512表明本地硬件緩沖足 以完成事務(wù)。在另一方面,溢出狀態(tài)514表明事務(wù)已經(jīng)用盡本地硬件緩沖空間(例如本地 事務(wù)型緩存124),并且,將利用虛擬存儲器(例如虛擬存儲器170)來完成事務(wù)型存儲 器事務(wù)。
現(xiàn)在參考圖6,圖6根據(jù)本發(fā)明的一個實施方案,示出了事務(wù)型存儲器事務(wù)如何產(chǎn)生 溢出請求的過程600。應(yīng)該理解,與線程相關(guān)聯(lián)的事務(wù)可以自己產(chǎn)生請求,或者從另一個 與線程相關(guān)聯(lián)的事務(wù)接收請求。
在塊602處開始,XATT巡邏者通過XATT確定事務(wù)是否已經(jīng)溢出。如先前所討論的那樣,XPTR包含本地或溢出狀態(tài)。如果沒有溢出,則在塊604,過程結(jié)束。但是,如果 事務(wù)已經(jīng)溢出,則過程600在塊606處確定原始虛擬地址(VAorig)是否已經(jīng)被溢出和被映 射。如果沒有,則分配新虛擬地址和新物理地址(VAnewandPAnew)(塊608) 。 XATT 巡邏者對XATT表進(jìn)行巡邏以便對其適當(dāng)?shù)馗?。在任一事件中,在塊610處,獲取VAnew 和PAnew的值。使用PAorig來保持一致性。但是,事務(wù)在其執(zhí)行寫的時候?qū)⒏翽Anew。 使用PAorig來執(zhí)行沖突檢測,因為它是所有其他的事務(wù)知道的地址(假設(shè)使用了唯一的 XATT)。
XATT巡邏者還保證沒有其他的事務(wù)已經(jīng)映射到VAorig。這被在XATT巡邏期間確 定。如果不存在VAorig記錄,則在塊620處安裝新的記錄。特別地,VAnew和PAnew 被輸入XATT。但是,如果存在原始虛擬地址記錄,則在塊618處,過程600根據(jù)XATT 的XPTR的狀態(tài),確定當(dāng)前事務(wù)應(yīng)該等待或者之前的事務(wù)應(yīng)該被異常終止。在任一事件中, 在XATT中輸入VAnew和PAnew。 XATT巡邏者負(fù)責(zé)這些活動,并且能夠通過直接對 XPTR操作來這么做。
現(xiàn)在轉(zhuǎn)到圖7,圖7是流程圖,根據(jù)本發(fā)明的一個實施方案,示出了提交事務(wù)的過程 700。特別地,在溢出事務(wù)提交之前,它應(yīng)該檢查XPTR以驗證它仍由當(dāng)前事務(wù)擁有(塊 702)(例如,通過檢査它是否仍是活動的且未被交換)。接著,在塊704,過程700應(yīng)該 檢查XPTR是否被設(shè)置為"異常終止"。如果它被設(shè)置為異常終止,則在塊710處,事務(wù) 被異常終止。在另一方面,如果指針未被設(shè)置為異常終止,則事務(wù)應(yīng)該原子性地被設(shè)置為 提交。這樣,XPTR提供了原子性地提交或異常終止溢出塊的事務(wù)的能力。如果事務(wù)型存 儲器事務(wù)被提交,則除了本地事務(wù)型緩存之外,或者代替本地事務(wù)型緩存,還利用應(yīng)用程 序虛擬地址空間來執(zhí)行事務(wù)型存儲器事務(wù)。
參考圖8,圖8是流程圖,根據(jù)本發(fā)明的一個實施方案,示出了被溢出的事務(wù)如何響 應(yīng)進(jìn)入的請求的過程800。在塊802處,接收對溢出事務(wù)的進(jìn)入請求。該進(jìn)入請求可以被 另一個事務(wù)在正常執(zhí)行期間產(chǎn)生,或者,當(dāng)檢測到?jīng)_突并且溢出事務(wù)已經(jīng)被實際上提交時, 可以被XATT巡邏者產(chǎn)生。這兩個情況都要求類似的動作。因此,處理由另一個事務(wù)線程 在正常執(zhí)行期間產(chǎn)生的進(jìn)入請求,當(dāng)進(jìn)入請求被溢出事務(wù)接收到時,溢出事務(wù)過程800在 塊804處確定進(jìn)入請求是否與本地地址匹配或與溢出的地址匹配。如果它是本地地址,則 在塊810處,事務(wù)被處理器利用本地事務(wù)型緩存在本地處理。
但是,如果確定它是溢出的地址,則在塊812處,XATT巡邏者巡邏XATT以保證它 的確是被溢出的事務(wù)。因此,在塊814處,XATT巡邏者巡邏XATT,以確定匹配。如果 沒有找到匹配,則在塊816處,沒有沖突被聲明,并且,在塊818處,執(zhí)行被請求的事務(wù)。 但是,如果存在匹配,則根據(jù)優(yōu)先權(quán),XATT巡邏者或者異常終止其事務(wù),或者向沖突的 事務(wù)發(fā)異常終止信號(塊820)。
如先前所討論的那樣,當(dāng)提交被溢出的事務(wù)時,XATT巡邏者首先保證XPTR中的XATT記錄被更新。通過更新事務(wù)頭數(shù)據(jù)結(jié)構(gòu),XATT中所有適當(dāng)?shù)囊绯鰤K的所有對應(yīng)記 錄將被原子性地提交。只有當(dāng)那成功時,被緩沖的(并且未溢出的)本地硬件塊才被提交。 這種兩步操作(two-operation)提交保證本地硬件提交和溢出的軟件提交被同步。
因為溢出相對較為罕見,所以XATT巡邏者巡邏XATT的性能代價是相當(dāng)小的。而 且,通過迫使所有在本地被緩沖的非溢出塊被溢出到XATT中,可以處理進(jìn)程遷移、定時 器中斷和上下文切換。
再次參考圖1,根據(jù)本發(fā)明的實施方案,事務(wù)地址轉(zhuǎn)換緩存(XATC) 134和沖突檢測 過濾器(CDF) 136可以被利用以提高效率,并且,當(dāng)被與如先前所討論的利用虛擬存儲 器的事務(wù)型存儲器執(zhí)行一起利用時,可以提供更快的事務(wù)轉(zhuǎn)換和事務(wù)間沖突管理。
在一個實施方案中,可以利用XATC 134來緩存溢出的地址轉(zhuǎn)換,以便加速轉(zhuǎn)換的確 定。特別地,XATC 134可以緩存一部分轉(zhuǎn)換地址轉(zhuǎn)換表(XATT),例如XPTR的地址。 這和轉(zhuǎn)換參考緩沖器(translation look aside buffer, or TLB)為頁表所扮演的角色類似。
更特別地,當(dāng)處理器事務(wù)已經(jīng)溢出時,在執(zhí)行過地址之后,處理器查看XATC 134以 確定1)地址是否已經(jīng)被重新映射,和2)新的轉(zhuǎn)換是否必要。在原始和新物理地址上均 調(diào)用一致性動作。XATC 134使巡邏XATT的需要最小。但是,在上下文切換之后,XATC 134被無效。
此外,還可以利用沖突檢測過濾器(CDF) B6來加速確定進(jìn)入請求是否與地址沖突 或者請求者將與另一個事務(wù)沖突。CDF136粗略地追蹤已經(jīng)被溢出的地址。CDF 136還追 蹤屬于已經(jīng)被交換出的事務(wù)的地址。這樣,CDF136對包括被交換出的事務(wù)的所有的事務(wù) 是公用的。這是有必要的,因為被交換的事務(wù)不是活動地執(zhí)行事務(wù),因此,將不能為其自 己確定是否發(fā)生了沖突。產(chǎn)生請求的事務(wù)將檢査CDF 136以確定任何被交換的事務(wù)在 XATT中是否具有重新映射的地址。通過這么做,可以消除每次產(chǎn)生請求時巡邏XATT的 需要。
一種實施CDF 136的方法是通過擴展Bloom過濾器(Bloom filter)的概念。CDF 136 可以被實施為計數(shù)器的陣列,其中,最大計數(shù)器值是可以溢出的位置或事務(wù)的數(shù)量。為了 指示地址被溢出了,用哈希函數(shù)hl,…h(huán)k對PAorig進(jìn)行哈希處理,并且,增大CDF136 中的計數(shù)器。為了去除該地址,減小相同的計數(shù)器。為了測試地址是否存在,測試那些計 數(shù)器以確定它們是否全是非零的,在非零的情況下,已經(jīng)檢測到了潛在的沖突。
CDF 136和XATC 134都為了性能而以資源為代價:大的緩存占用資源但是加速轉(zhuǎn)換, 而大的過濾器比較小的過濾器產(chǎn)生更少的錯誤肯定(falsepositive)。這種靈活性意味著 詞樣的結(jié)構(gòu)既可以被配置在資源豐富的平臺上,也可以被配置在資源匱乏的平臺上。雖然已經(jīng)在特定實施方案中描述了本發(fā)明的實施方案及其各種功能部件,但是,應(yīng)該 理解,本發(fā)明的實施方案可以被實施在硬件、軟件、固件、中間件或者它們的組合中,并 在其系統(tǒng)、子系統(tǒng)、部件或子部件中被利用。當(dāng)被實施在軟件或固件中時,本發(fā)明的元件 是執(zhí)行必要任務(wù)的指令/代碼段。程序或代碼段可以被儲存在機器可讀介質(zhì)(例如處理器 可讀介質(zhì)或者計算機程序產(chǎn)品)中,或者,通過被具體實施在載波中的計算機數(shù)據(jù)信號、 被載波調(diào)制的信號,經(jīng)過傳輸介質(zhì)或通訊鏈路傳輸。機器可讀介質(zhì)可以包括任何可以用機 器(例如處理器、計算機等)可讀和可執(zhí)行的形式來儲存或者轉(zhuǎn)移信息的介質(zhì)。機器可讀 介質(zhì)的例子包括電子電路、半導(dǎo)體存儲器設(shè)備、ROM、閃存、可擦除可編程ROM(ERROM)、 軟盤、緊致盤CD-ROM、光盤、硬盤、光纖介質(zhì)、射頻(RF)鏈路等。計算機數(shù)據(jù)信號 可以包括任何能夠通過例如電子網(wǎng)絡(luò)通道、光纖、空氣、電磁、射頻鏈路、條碼卡等傳輸 介質(zhì)傳播的信號。代碼段可以通過例如因特網(wǎng)、企業(yè)內(nèi)部互聯(lián)網(wǎng)的網(wǎng)絡(luò)被下載。
此外,雖然已經(jīng)參考說明性實施方案描述了本發(fā)明的實施方案,但是,不希望以限制 性的方式來理解這些描述。說明性實施方案的各種修改,以及對本領(lǐng)域熟練技術(shù)人員來說 清晰的本發(fā)明的其他實施方案,被認(rèn)為位于本發(fā)明的精神和范圍之內(nèi)。
權(quán)利要求
1.一種用于處理事務(wù)型存儲器請求的方法,包括由處理器內(nèi)實現(xiàn)的資源管理器,根據(jù)與虛擬地址空間相關(guān)聯(lián)的請求線程,確定駐留在所述處理器中的緩存是否能夠容納事務(wù)型存儲器請求,其中所述事務(wù)型存儲器請求與原始地址相關(guān)聯(lián);響應(yīng)于所述資源管理器確定了本地緩存能夠容納所述事務(wù)型存儲器請求,由所述本地緩存執(zhí)行所述事務(wù)型存儲器請求;響應(yīng)于所述資源管理器確定了所述本地緩存不能夠容納所述事務(wù)型存儲器請求,在事務(wù)地址表轉(zhuǎn)換表XATT的記錄內(nèi),為所述事務(wù)型存儲器請求分配一新地址,所述新地址和所述XATT在與所述線程相關(guān)聯(lián)的虛擬地址空間內(nèi);并且利用所述新地址,管理所述事務(wù)型存儲器請求的數(shù)據(jù)。
2. 如權(quán)利要求l所述的方法,其特征在于,所述處理器內(nèi)的XATT巡邏者通過對所 述XATT進(jìn)行操作來分配所述新地址,其中所述XATT存儲在與所述虛擬地址空間相關(guān) 聯(lián)的物理存儲器中。
3. 如權(quán)利要求2所述的方法,其特征在于,用于分配新地址的所述步驟包括為所述 事務(wù)型存儲器請求分配新的虛擬地址和新的物理地址,其中用于為所述事務(wù)型存儲器請求 分配所述新的的虛擬地址和新的物理地址的所述步驟包括更新存儲在與所述虛擬地址空 間相關(guān)聯(lián)的所述物理存儲器內(nèi)的XATT中的記錄,以保存所述新的虛擬地址、原始虛擬地 址、所述新的物理地址以及原始物理地址。
4. 如權(quán)利要求3所述的方法,其特征在于,還包括在所述XATT中的所述記錄內(nèi), 分配包括所述事務(wù)型存儲器請求的當(dāng)前事務(wù)的狀態(tài)。
5. 如權(quán)利要求4所述的方法,其特征在于,當(dāng)前事務(wù)的所述狀態(tài)是本地或溢出流中 的本地或溢出中的一個。
6. —種用于處理事務(wù)型存儲器請求的計算機系統(tǒng),包括 系統(tǒng)存儲器,用于在應(yīng)用程序地址空間內(nèi)保存事務(wù)型轉(zhuǎn)換表; 處理器,其與所述系統(tǒng)存儲器耦合,所述處理器包括本地緩存;資源管理器,用于根據(jù)相關(guān)聯(lián)應(yīng)用程序的請求線程,確定所述本地緩存是否能 夠容納事務(wù)型存儲器請求,其中所述相關(guān)聯(lián)應(yīng)用程序與所述應(yīng)用程序地址空間相關(guān) 聯(lián),所述事務(wù)型存儲器請求參考原始地址;事務(wù)型轉(zhuǎn)換表巡邏者,用于啟動更新所述事務(wù)型轉(zhuǎn)換表的記錄,以保存與所述 原始地址相關(guān)聯(lián)的新地址,所述新地址在所述應(yīng)用程序地址空間內(nèi),所述新地址用 于保存與所述事務(wù)型存儲器請求相關(guān)聯(lián)的溢出數(shù)據(jù)。
7. 如權(quán)利要求6所述的計算機系統(tǒng),其特征在于,所述處理器還包括轉(zhuǎn)換邏輯,用 于將虛擬地址轉(zhuǎn)換成物理地址,并且所述原始地址包括原始虛擬地址,當(dāng)所述轉(zhuǎn)換邏輯轉(zhuǎn) 換所述原始虛擬地址時,所述原始虛擬地址將參考原始物理地址,并且所述新地址包括新 的虛擬地址,當(dāng)所述轉(zhuǎn)換邏輯轉(zhuǎn)換所述新的虛擬地址時,所述新的虛擬地址將參考所述應(yīng) 用程序地址空間內(nèi)、所述系統(tǒng)存儲器中的物理存儲單元的新的物理地址。
8. 如權(quán)利要求7所述的計算機系統(tǒng),其特征在于,所述處理器還包括事務(wù)轉(zhuǎn)換緩存, 用于緩存所述事務(wù)型轉(zhuǎn)換表中最近被更新的記錄。
9. 如權(quán)利要求7所述的計算機系統(tǒng),其特征在于,所述處理器還包括沖突檢測邏輯, 用于保存對已經(jīng)溢出所述本地緩存的原始地址的參考,并且來自后續(xù)事務(wù)型存儲器請求的 沖突能夠根據(jù)對保存在所述沖突檢測邏輯中的所述原始地址的參考而被檢測,無需所述事 務(wù)型轉(zhuǎn)換表巡邏者訪問保存在所述系統(tǒng)存儲器內(nèi)的所述事務(wù)型轉(zhuǎn)換表。
10. 如權(quán)利要求6所述的計算機系統(tǒng), 內(nèi)的數(shù)據(jù)緩存相分離的事務(wù)型緩存。
11. 如權(quán)利要求6所述的計算機系統(tǒng), 述數(shù)據(jù)緩存也被用作事務(wù)型緩存。
12. 如權(quán)利要求7所述的計算機系統(tǒng), 存所述原始虛擬地址、所述新的虛擬地址、 包括所述事務(wù)型存儲器請求的事務(wù)的狀態(tài)。其特征在于,所述本地緩存包括與所述處理器其特征在于,所述本地緩存包括數(shù)據(jù)緩存,所其特征在于,所述事務(wù)型表的所述記錄用于保 所述原始物理地址、所述新的物理地址,以及
13. 如權(quán)利要求6所述的計算機系統(tǒng),其特征在于,所述應(yīng)用程序地址空間內(nèi)的所述 事務(wù)型轉(zhuǎn)換表只與包括所述事務(wù)型存儲器的單個事務(wù)相關(guān)聯(lián)。
14. 如權(quán)利要求6所述的計算機系統(tǒng),其特征在于,所述應(yīng)用程序地址空間內(nèi)的所述 事務(wù)型轉(zhuǎn)換表與所述相關(guān)聯(lián)應(yīng)用程序的所述請求線程的所述事務(wù)相關(guān)聯(lián)。
15. —種設(shè)備,其包括處理器,所述處理器包括 本地存儲器;執(zhí)行資源,用于執(zhí)行線程,所述線程至少包括事務(wù)型存儲操作,以參考存儲數(shù)據(jù)以及 用于所述存儲數(shù)據(jù)的原始虛擬地址,所述線程與虛擬地址空間相關(guān)聯(lián);轉(zhuǎn)換邏輯,用于將所述虛擬地址空間內(nèi)的虛擬地址轉(zhuǎn)換成物理存儲器的物理地址,以 與所述處理器相關(guān)聯(lián);溢出邏輯,用于在接收到所述事務(wù)型存儲操作時確定該事務(wù)型存儲操作是否將溢出所 述本地存儲器;事務(wù)邏輯,用于響應(yīng)于所述溢出邏輯確定了所述事務(wù)型存儲操作將溢出所述本地存儲 器,將新的虛擬地址與所述原始虛擬地址相關(guān)聯(lián),其中所述新的虛擬地址在與所述線程相 關(guān)聯(lián)的所述虛擬地址空間內(nèi),并且當(dāng)所述轉(zhuǎn)換邏輯轉(zhuǎn)換所述新的虛擬地址時,所述新的虛 擬地址將參考所述物理存儲器的新的物理地址,以保存所述存儲數(shù)據(jù)。
16. 如權(quán)利要求15所述的設(shè)備,其特征在于,所述本地存儲器包括緩存存儲器;所 述執(zhí)行資源能夠至少部分并行地執(zhí)行包括所述線程的多個線程;當(dāng)所述轉(zhuǎn)換邏輯轉(zhuǎn)換所述 所述原始虛擬地址時,所述原始虛擬地址將參考所述物理存儲器的原始物理地址;并且所 述物理存儲器包括與一計算機系統(tǒng)內(nèi)的所述處理器耦合的存儲器設(shè)備。
17. 如權(quán)利要求16所述的設(shè)備,其特征在于,用于將所述新的虛擬地址與所述原始 虛擬地址相關(guān)聯(lián)的所述事務(wù)邏輯包括用于啟動對保存在所述物理存儲器內(nèi)的表進(jìn)行寫操 作的事務(wù)邏輯,用于更新所述表的記錄,以保存所述新的虛擬地址和所述原始虛擬地址。
18. 如權(quán)利要求17所述的設(shè)備,其特征在于,所述處理器還包括事務(wù)轉(zhuǎn)換緩存,其 響應(yīng)于所述事務(wù)邏輯啟動對所述表的寫操作,至少緩存所述表的所述記錄的一部分。
19. 如權(quán)利要求17所述的設(shè)備,其特征在于,所述處理器還包括沖突檢測邏輯,其 響應(yīng)于所述溢出邏輯確定了所述事務(wù)型存儲操作將溢出所述本地存儲,跟蹤所述原始物理 地址,并且響應(yīng)于參考該地址的后續(xù)事務(wù)型存儲器請求,所述事務(wù)邏輯能夠根據(jù)在所述沖 突檢測邏輯內(nèi)跟蹤的所述原始物理地址,確定沖突。
全文摘要
本發(fā)明的實施方案涉及利用虛擬存儲器的事務(wù)型存儲器執(zhí)行。處理器包括本地事務(wù)型緩存和資源管理器。資源管理器對來自請求線程的事務(wù)型存儲器事務(wù)請求做出響應(yīng),確定本地事務(wù)型緩存是否能夠容納事務(wù)型存儲器事務(wù)請求,并且,如果可以,則本地事務(wù)型緩存執(zhí)行事務(wù)型存儲器事務(wù)。但是,如果本地事務(wù)型緩存不能容納事務(wù)型存儲器事務(wù)請求,則事務(wù)型存儲器事務(wù)請求的數(shù)據(jù)被溢出到和請求線程相關(guān)聯(lián)的應(yīng)用程序的虛擬地址空間中。
文檔編號G06F12/10GK101556559SQ20091014543
公開日2009年10月14日 申請日期2005年9月30日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者拉維·拉吉瓦爾, 莫里斯·赫利希 申請人:英特爾公司