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

事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)的制作方法

文檔序號(hào):6649315閱讀:212來(lái)源:國(guó)知局
專利名稱:事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)的制作方法
技術(shù)領(lǐng)域
本發(fā)明的實(shí)施方案涉及事務(wù)型存儲(chǔ)器(transactional memory)的領(lǐng)域。更具體地說(shuō),本發(fā)明的實(shí)施方案涉及事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)。
背景技術(shù)
事務(wù)型存儲(chǔ)器服務(wù)允許應(yīng)用、程序、模塊等,更具體地說(shuō)是允許應(yīng)用程序接口(API)以原子式的、一致的并且隔離的方式來(lái)訪問(wèn)存儲(chǔ)器。例如,事務(wù)型存儲(chǔ)器可被用作用于管理持久性的指針豐富型數(shù)據(jù)結(jié)構(gòu)(例如數(shù)據(jù)庫(kù))和目錄服務(wù)的運(yùn)行時(shí)引擎的一部分。
API可以被認(rèn)為是由應(yīng)用、程序、模塊等用來(lái)與系統(tǒng)程序(例如操作系統(tǒng)或數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS))通信的語(yǔ)言或消息格式。API可以通過(guò)在程序中寫(xiě)入函數(shù)調(diào)用來(lái)實(shí)現(xiàn),所述函數(shù)調(diào)用提供了到特定子例程的鏈接以供執(zhí)行。因此,API意味著某個(gè)程序模塊或例程已經(jīng)就位,或者被鏈接,以便執(zhí)行函數(shù)調(diào)用所請(qǐng)求的任務(wù)。
事務(wù)型存儲(chǔ)器使得寫(xiě)并行程序變得更容易,并且事務(wù)型存儲(chǔ)器的使用允許不同的線程同時(shí)進(jìn)行,從而獲得極高的處理效率。然而,目前程序員不得不在使用事務(wù)型存儲(chǔ)器時(shí)做出困難的選擇。
一種選擇是使用事務(wù)型存儲(chǔ)器應(yīng)用程序接口(API)的單獨(dú)硬件實(shí)現(xiàn),其中程序員負(fù)責(zé)跟蹤程序的硬件資源需求,并確保它們不超過(guò)可用的硬件資源。在這種方法下,事務(wù)型存儲(chǔ)器(此后稱為TM)的可適用性和可利用性是受限的。一種替換方案是使用TM API的單獨(dú)軟件實(shí)現(xiàn),這是很容易編程的(因?yàn)閷?shí)際上沒(méi)有資源限制),但是軟件方法要忍受很高的執(zhí)行時(shí)間開(kāi)銷。
進(jìn)一步觀察事務(wù)型存儲(chǔ)器(TM),TM是從數(shù)據(jù)庫(kù)事務(wù)中產(chǎn)生的。在數(shù)據(jù)庫(kù)中,事務(wù)是必須滿足被稱為ACID屬性的四種屬性的一組操作。第一種ACID屬性是原子性(atomicity)。原子性要求數(shù)據(jù)庫(kù)事務(wù)以要么全有要么全無(wú)的方式來(lái)執(zhí)行。事務(wù)可能因?yàn)槌绦虍惓=K止(abort)或者由于錯(cuò)誤而異常終止。原子性要求事務(wù)的所有操作要么全都執(zhí)行,要么全都不執(zhí)行。第二種ACID屬性是一致性。一致性要求如果數(shù)據(jù)庫(kù)在事務(wù)執(zhí)行前處于一致?tīng)顟B(tài)中,那么數(shù)據(jù)庫(kù)應(yīng)當(dāng)被保留在一致?tīng)顟B(tài)中。第三種ACID屬性是隔離性。隔離性屬性是指所有將要執(zhí)行的事務(wù)看上去必須是以某種串行順序來(lái)完成(即,它們應(yīng)當(dāng)是可串行化的)。符合ACID要求的最后一種也是第四種屬性是持久性。持久性要求事務(wù)在機(jī)器崩潰時(shí)也要存活下來(lái)。也就是說(shuō),事務(wù)在可被提交(commit)之前必須被寫(xiě)入一個(gè)穩(wěn)定的存儲(chǔ)設(shè)備(例如,盤(pán))。然而,應(yīng)當(dāng)注意的是,并非TM的所有實(shí)現(xiàn)都要求事務(wù)滿足上述所有四種屬性。例如,在一些實(shí)現(xiàn)中,持久性不是一種要求。
除了遵從全部或部分上述ACID屬性之外,通常還要求利用事務(wù)型存儲(chǔ)器的事務(wù)和數(shù)據(jù)庫(kù)支持并發(fā)執(zhí)行、死鎖自由度、以及非阻擋塞性。一般情況下,事務(wù)型存儲(chǔ)器系統(tǒng)支持非沖突事務(wù)的并發(fā)執(zhí)行。一些數(shù)據(jù)庫(kù)實(shí)現(xiàn)使用鎖(例如,二相鎖定)來(lái)實(shí)現(xiàn)這些類型的事務(wù)。因此,在這些情形中就可能發(fā)生死鎖。一旦檢測(cè)到死鎖,就簡(jiǎn)單地異常終止某些事務(wù)而從死鎖中恢復(fù),藉此在事務(wù)型存儲(chǔ)器系統(tǒng)中實(shí)現(xiàn)死鎖自由度。非阻塞或者說(shuō)無(wú)阻礙屬性被用來(lái)在事務(wù)型存儲(chǔ)器系統(tǒng)中防止某一線程妨礙其他線程的前進(jìn)。
到目前為止,有兩種常見(jiàn)的方法來(lái)實(shí)現(xiàn)使用應(yīng)用程序接口(API)的事務(wù)型存儲(chǔ)器訪問(wèn)一種是純硬件實(shí)現(xiàn);另一種是純軟件實(shí)現(xiàn)。硬件實(shí)現(xiàn)是基于以下文獻(xiàn)中闡述的多處理器體系結(jié)構(gòu),所述文獻(xiàn)名為“事務(wù)型存儲(chǔ)器對(duì)無(wú)鎖數(shù)據(jù)結(jié)構(gòu)的體系結(jié)構(gòu)支持”(MauriceHerlihy,J.Eliot B.MossTransactional MemoryArchitectural Support for Lock-Free DataStructure,國(guó)際計(jì)算機(jī)及其應(yīng)用協(xié)會(huì)(ISCA)1993289-300)。這種方法此后將被稱為“純硬件方法”。
純硬件方法提供了一種有效并且易于使用的無(wú)鎖(lock-free)同步方法。純硬件方法除了保證免受一般與基于鎖的同步方法相關(guān)聯(lián)的優(yōu)先級(jí)倒置、護(hù)送(convoying)和死鎖等困擾外,還避免了與并行編程相關(guān)聯(lián)的很多精細(xì)校正問(wèn)題。
不幸的是,純硬件方法需要由程序員來(lái)進(jìn)行小心的資源管理。這樣一來(lái),純硬件方法就很難用眾多更先進(jìn)的處理器結(jié)構(gòu)來(lái)實(shí)現(xiàn)。一般地,要求軟件可在在處理器實(shí)現(xiàn)之間進(jìn)行移植,并且如此小心地在應(yīng)用層上調(diào)節(jié)資源限制了純硬件方法的使用。此外,在實(shí)際操作中,純硬件方法只使用事務(wù)型存儲(chǔ)器中的事務(wù)型緩存(cache),由于該資源有限,所以不能保證處理線程完成,從而導(dǎo)致程序故障。
另一種常見(jiàn)的用API來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)的方法是使用純軟件方法,例如在以下文獻(xiàn)中所闡述的,該文獻(xiàn)名為“用于動(dòng)態(tài)大小的數(shù)據(jù)結(jié)構(gòu)的軟件事務(wù)型存儲(chǔ)器”(MauriceHerlihy,Victor Luchangco,Mark Moir,William N.Scherer III,Software Transactional Memoryfor Dynamic-Sized Data Structures,Principles of Distributed Computing(PODC)2003。)這種方法此后將被稱為純軟件方法。純軟件方法的效用在于程序員可以完全不管用來(lái)提供事務(wù)型存儲(chǔ)器語(yǔ)義的具體技術(shù),并且API特別易于編程。不幸的是,在操作中,純軟件方法技術(shù)將導(dǎo)致因軟件開(kāi)銷引起的很大減速。

發(fā)明內(nèi)容
本發(fā)明的實(shí)施方案涉及在計(jì)算機(jī)系統(tǒng)中事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)。根據(jù)本發(fā)明的一個(gè)方面,提供了一種裝置,包括包括事務(wù)型緩存和常規(guī)緩存在內(nèi)的處理器;和選擇第一模式和第二模式之一來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)的策略管理器;其中,在第一模式中,所述事務(wù)型緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作,而在第二模式中,所述常規(guī)緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種方法,包括選擇第一模式和第二模式之一來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn);利用事務(wù)型緩存,在第一模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作;以及利用常規(guī)緩存,在第二模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),所述指令在被機(jī)器執(zhí)行時(shí)使得所述機(jī)器執(zhí)行以下操作,其中包括選擇第一模式和第二模式之一來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn);利用事務(wù)型緩存,在第一模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作;以及利用常規(guī)緩存,在第二模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
根據(jù)本發(fā)明的再一個(gè)方面,提供了一種計(jì)算機(jī)系統(tǒng),包括包括事務(wù)型緩存和常規(guī)緩存在內(nèi)的處理器;和選擇第一模式或第二模式之一,以響應(yīng)于在數(shù)據(jù)庫(kù)中訪問(wèn)存儲(chǔ)器的應(yīng)用程序接口請(qǐng)求來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)的策略管理器;其中,在第一模式中,所述事務(wù)型緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作,而在第二模式中,所述常規(guī)緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作。


圖1是可以實(shí)現(xiàn)本發(fā)明實(shí)施方案的計(jì)算機(jī)系統(tǒng)配置的實(shí)施例的部分框圖。
圖2根據(jù)本發(fā)明的一個(gè)實(shí)施方案提供了事務(wù)型存儲(chǔ)器對(duì)象的圖示。
圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,圖示了實(shí)現(xiàn)硬件/軟件事務(wù)型存儲(chǔ)器事務(wù)的指令集體系結(jié)構(gòu)的表。
圖4A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,圖示了用于事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)的過(guò)程的流程圖。
圖4B是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,具體圖示了監(jiān)視孤兒事務(wù)的過(guò)程的流程圖。
圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,圖示了利用硬件/軟件事務(wù)ISA來(lái)有效實(shí)現(xiàn)鎖的過(guò)程的流程圖。
具體實(shí)施例方式
在以下說(shuō)明書(shū)部分中,將詳細(xì)描述本發(fā)明的各種實(shí)施方案。然而,將這些細(xì)節(jié)包括進(jìn)來(lái)是為了幫助理解本發(fā)明,并且描述用于實(shí)現(xiàn)本發(fā)明的示例性實(shí)施方案。這些細(xì)節(jié)不應(yīng)用來(lái)將本發(fā)明限制為所描述的具體實(shí)施方式
,因?yàn)樵诒景l(fā)明的范圍內(nèi),其他變體和實(shí)施方式也是可能的。此外,雖然闡述了大量細(xì)節(jié)以便提供對(duì)本發(fā)明實(shí)施方案的完整理解,但是本領(lǐng)域的技術(shù)人員將清楚,這些具體細(xì)節(jié)不是實(shí)現(xiàn)本發(fā)明的實(shí)施方案所必需的。此外,諸如公知的方法、數(shù)據(jù)類型、協(xié)議、過(guò)程、元件、電結(jié)構(gòu)和電路等細(xì)節(jié)都沒(méi)有詳細(xì)描述,也沒(méi)有以框圖形式示出,以免模糊了本發(fā)明。此外,本發(fā)明的實(shí)施方案將在具體實(shí)施方式
中描述,但是可以用硬件、軟件、固件。中間件或其組合來(lái)實(shí)現(xiàn)。
本發(fā)明的實(shí)施方案提供了事務(wù)型存儲(chǔ)器(TM)訪問(wèn)的混合硬件軟件實(shí)現(xiàn),例如和應(yīng)用程序接口(API)一起用來(lái)通過(guò)利用處理器的嵌入式硬件支持,然后如果硬件資源耗盡的話,則轉(zhuǎn)向軟件方案,從而實(shí)現(xiàn)高性能的訪問(wèn)。因而同時(shí)實(shí)現(xiàn)了硬件TM訪問(wèn)和軟件TM訪問(wèn)的益處。
在一個(gè)實(shí)施方案中,如下面所討論的,在多數(shù)常見(jiàn)情況下通過(guò)修改原始事務(wù)對(duì)象以實(shí)現(xiàn)硬件TM輔助,從而大大減小與TM API軟件方法相關(guān)聯(lián)的性能損失。因此,利用嵌入式硬件支持(例如,事務(wù)型存儲(chǔ)器緩存)來(lái)處理常見(jiàn)的情形以獲得高性能,如果出現(xiàn)問(wèn)題,那么在硬件資源耗盡的情況下轉(zhuǎn)向軟件TM方案。
圖1示出了其中可以實(shí)現(xiàn)本發(fā)明的實(shí)施方案的計(jì)算機(jī)系統(tǒng)配置100的實(shí)施例的部分框圖。系統(tǒng)配置100包括諸如中央處理單元(CPU)的至少一個(gè)處理器101、芯片組103、系統(tǒng)存儲(chǔ)器件105、與一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備113接口的一個(gè)或多個(gè)接口111、以及網(wǎng)絡(luò)接口107。
芯片組103可以包括存儲(chǔ)器控制中心(MCH)和/或I/O控制中心。芯片組103可以是對(duì)于在處理器101和計(jì)算機(jī)系統(tǒng)100的其他組件之間的數(shù)據(jù)傳輸起到中心或內(nèi)核作用的一個(gè)或多個(gè)集成電路芯片。此外,計(jì)算機(jī)系統(tǒng)100可以包括附加的組件(未示出),例如其他處理器(例如,在多處理器系統(tǒng)中)、協(xié)處理器以及其他組件等——這僅僅是計(jì)算機(jī)系統(tǒng)一個(gè)非常簡(jiǎn)單的實(shí)施例。
用在本說(shuō)明書(shū)中,術(shù)語(yǔ)“處理器”或“CPU”是指能夠執(zhí)行指令序列,并且應(yīng)被視為包括但不限于通用微處理器、專用微處理器、專用集成電路(ASIC)、多媒體控制器、信號(hào)處理器和微控制器等的任何機(jī)器。在一個(gè)實(shí)施方案中,CPU 101是能夠執(zhí)行Intel體系結(jié)構(gòu)指令集的通用高速微處理器。例如,CPU 101可以是INTELPENTIUM系列處理器,例如INTEL體系結(jié)構(gòu)32位(IA-32)處理器(例如PENTIUM4M)。
CPU 101、芯片組103和其他組件經(jīng)由芯片組103來(lái)訪問(wèn)系統(tǒng)存儲(chǔ)器件105。芯片組103例如與存儲(chǔ)器控制中心一起使用,可以服務(wù)于指向系統(tǒng)存儲(chǔ)器件105的存儲(chǔ)器事務(wù)。
系統(tǒng)存儲(chǔ)器件105可以包括適于存儲(chǔ)數(shù)字信息的任何存儲(chǔ)器件,例如靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)、同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SDRAM)和/或雙數(shù)據(jù)率(DDR)SDRAM或DRAM等。因此,在一個(gè)實(shí)施方案中,系統(tǒng)存儲(chǔ)器件105包括易失性存儲(chǔ)器。此外,系統(tǒng)存儲(chǔ)器件還可以包括非易失性存儲(chǔ)器,例如只讀存儲(chǔ)器(ROM)。
此外,系統(tǒng)存儲(chǔ)器件105還可以包括其他存儲(chǔ)設(shè)備以及適當(dāng)?shù)慕涌?,所述其他存?chǔ)設(shè)備例如是硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器等。
另外,系統(tǒng)存儲(chǔ)器件105可以在非易失性存儲(chǔ)器中存儲(chǔ)硬件/軟件事務(wù)型存儲(chǔ)器(TM)引擎程序,供處理器101運(yùn)行來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施方案的技術(shù),以由在處理器101上實(shí)現(xiàn)的混合硬件/軟件TM引擎在計(jì)算機(jī)系統(tǒng)100內(nèi)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)和事務(wù)(此后,術(shù)語(yǔ)“訪問(wèn)”和“事務(wù)”可以互換使用)。
系統(tǒng)存儲(chǔ)器件還可以包括專用于利用數(shù)據(jù)庫(kù)108來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器事務(wù)的存儲(chǔ)器區(qū)域。例如,數(shù)據(jù)庫(kù)108可以包括諸如企業(yè)數(shù)據(jù)庫(kù)、財(cái)務(wù)數(shù)據(jù)庫(kù)、規(guī)劃管理數(shù)據(jù)庫(kù)、目錄服務(wù)之類的數(shù)據(jù)庫(kù),還可以包括一般與事務(wù)型存儲(chǔ)器類事務(wù)一起使用的其他指針豐富型數(shù)據(jù)結(jié)構(gòu)。
此外,計(jì)算機(jī)系統(tǒng)100可以包括與I/O設(shè)備113接口的適當(dāng)接口111,所述I/O設(shè)備113例如包括盤(pán)驅(qū)動(dòng)器、監(jiān)視器、鍵盤(pán)、調(diào)制解調(diào)器、打印機(jī)、或任何其他類型的適當(dāng)I/O設(shè)備。
計(jì)算機(jī)系統(tǒng)100還可以包括使計(jì)算機(jī)系統(tǒng)100與網(wǎng)絡(luò)109相接口的網(wǎng)絡(luò)接口107,所述網(wǎng)絡(luò)109例如是局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)等。
圖1中的基本計(jì)算機(jī)系統(tǒng)配置100是可用來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)施方案的一類計(jì)算機(jī)系統(tǒng)的實(shí)施例。本領(lǐng)域的技術(shù)人員將會(huì)理解,圖1中示例性的計(jì)算機(jī)系統(tǒng)配置100僅僅是基本計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例,很多其他的類型和變體都是可能的。此外,本領(lǐng)域的技術(shù)人員將會(huì)認(rèn)識(shí)到,在圖1中示出的示例性環(huán)境并不想限制本發(fā)明的實(shí)施方案。此外,應(yīng)當(dāng)明白,除了單個(gè)計(jì)算機(jī)系統(tǒng)配置100之外,或取而代之,多群或其他組的(與計(jì)算機(jī)系統(tǒng)配置100類似或不同的)計(jì)算機(jī)可以用來(lái)實(shí)現(xiàn)本發(fā)明的實(shí)施方案。
更具體地說(shuō),如圖1所示,利用事務(wù)型引擎118的處理器101可以實(shí)施混合硬件/軟件TM訪問(wèn)方法。具體地說(shuō),事務(wù)型引擎118包括標(biāo)準(zhǔn)TM功能,加上由事務(wù)型引擎118實(shí)現(xiàn)的增強(qiáng)型TM指令集體系結(jié)構(gòu)(ISA),后面將更詳細(xì)地討論,用以實(shí)現(xiàn)與混合硬件/軟件TM引擎有關(guān)的本發(fā)明的實(shí)施方案。另外,處理器101包括可以相互耦合在一起的事務(wù)型緩存132和常規(guī)存儲(chǔ)器緩存134。
正如后面將詳細(xì)討論的那樣,用事務(wù)型引擎118來(lái)實(shí)現(xiàn)的TM ISA使得混合硬件/軟件TM引擎能夠與例如API一同用來(lái)在“硬件模式”中使用硬件支持(例如,事務(wù)型緩存132)而獲得高性能,并且在硬件緩存132耗盡的情況下轉(zhuǎn)向軟件方案(或“軟件模式”)。按照這種方式,向存儲(chǔ)器105和數(shù)據(jù)庫(kù)108讀寫(xiě)數(shù)據(jù)的API請(qǐng)求116被優(yōu)化。應(yīng)當(dāng)注意,此后“硬件模式”是指主要利用事務(wù)型緩存132獲得高性能,而“軟件模式”是指主要利用常規(guī)緩存134以及其他存儲(chǔ)器資源,這些資源的性能較慢,但卻是耗之不盡的。
雖然將在具體實(shí)施方案中描述本發(fā)明的實(shí)施方式及其各種功能組件,但是應(yīng)當(dāng)明白,這些方面和功能可以用硬件、軟件、固件、中間件或其組合來(lái)實(shí)現(xiàn)。
現(xiàn)在看圖2,圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,提供了事務(wù)型存儲(chǔ)器對(duì)象的圖示說(shuō)明的圖。如圖2所示,事務(wù)型存儲(chǔ)器(TM)對(duì)象202通過(guò)定位符204來(lái)標(biāo)識(shí)。每個(gè)不是只讀的共享數(shù)據(jù)對(duì)象都被放入TM對(duì)象202所示的容器。在事務(wù)期間,所有TM對(duì)象202在被訪問(wèn)前都被打開(kāi)。這將對(duì)象與事務(wù)關(guān)聯(lián)起來(lái),使得底層軟件系統(tǒng)可以檢測(cè)到事務(wù)之間的沖突。典型地,線程用API打開(kāi)對(duì)象,所述API指定了是否將以只讀方式訪問(wèn)所述對(duì)象。一旦對(duì)象已被打開(kāi),就可以對(duì)事務(wù)型對(duì)象內(nèi)的數(shù)據(jù)進(jìn)行操縱。
定位符204起到事務(wù)型對(duì)象定位符的作用。對(duì)于每個(gè)事務(wù)型對(duì)象而言,無(wú)論同時(shí)訪問(wèn)該對(duì)象的線程數(shù)量為多少,都只有一個(gè)事務(wù)型對(duì)象定位符是活動(dòng)的。狀態(tài)列表206存儲(chǔ)當(dāng)前正在以軟件模式訪問(wèn)對(duì)象的事務(wù)的狀態(tài)的存儲(chǔ)器地址。典型地,事務(wù)狀態(tài)是以下之一ACTIVE、COMMITTED或ABORTED(214)。每個(gè)事務(wù)只有一個(gè)狀態(tài)。處于硬件模式的事務(wù)也具有狀態(tài),但是它們從不出現(xiàn)在狀態(tài)列表206中,下面將會(huì)討論。
TM定位符204還存儲(chǔ)對(duì)象210的新版本的內(nèi)容218和對(duì)象212的舊版本的內(nèi)容220的存儲(chǔ)器地址。當(dāng)事務(wù)打開(kāi)TM對(duì)象以獲取內(nèi)容的最新版本時(shí),它獲得的版本取決于前面打開(kāi)對(duì)象以寫(xiě)入(即,不是只讀的)的最后一個(gè)事務(wù)的狀態(tài)。如果最后寫(xiě)入者的狀態(tài)214是ACTIVE或ABORTED,那么正在打開(kāi)對(duì)象的事務(wù)將接收到舊版本220。如果最后寫(xiě)入者的狀態(tài)214是COMMITTED,則正在打開(kāi)對(duì)象的事務(wù)將接收到新版本218。
當(dāng)軟件模式的事務(wù)打開(kāi)TM對(duì)象202以寫(xiě)入時(shí),它將最新版本(如上面定義的)的地址放入TM定位符對(duì)象204的舊對(duì)象字段212。事務(wù)制作最新內(nèi)容的拷貝,并將這一拷貝的地址放入TM定位符204的新對(duì)象字段210。在由軟件模式的事務(wù)提交之前,對(duì)象的新拷貝不被任何其他線程訪問(wèn),因此是局部的。一旦由事務(wù)提交,TM對(duì)象的新版本就變?yōu)楣蚕韺?duì)象,并且不能再被修改。當(dāng)硬件模式的事務(wù)打開(kāi)TM對(duì)象202以寫(xiě)入時(shí),它不制作內(nèi)容的拷貝。硬件模式的事務(wù)直接修改對(duì)象的最新版本,它依賴硬件來(lái)緩沖推測(cè)式的寫(xiě)操作,后面將討論。
TM對(duì)象202還包括模式字段208,其指示了TM對(duì)象202是處于讀模式還是寫(xiě)模式。當(dāng)軟件模式的事務(wù)打開(kāi)處于讀模式或?qū)懩J?08的TM對(duì)象時(shí),它將其狀態(tài)變量214的地址加入狀態(tài)列表206。這允許其他(處于軟件模式和硬件模式的)線程異常終止所述事務(wù),并且消除一度在個(gè)體對(duì)象上完成驗(yàn)證操作的需要??梢詥渭兺ㄟ^(guò)檢查保持事務(wù)狀態(tài)(狀態(tài)214)的一個(gè)位置來(lái)驗(yàn)證該事務(wù)。當(dāng)事務(wù)打開(kāi)TM對(duì)象202并且它的模式字段208被設(shè)置為只讀時(shí),如果所述對(duì)象正在以只讀模式打開(kāi),則不需要明確地異常終止任何事務(wù);然而,如果所述對(duì)象正在以寫(xiě)模式打開(kāi),則狀態(tài)列表206中的所有事務(wù)在它們的狀態(tài)214為ACTIVE時(shí)都需要被異常終止。當(dāng)事務(wù)打開(kāi)TM對(duì)象202并且模式字段208已被設(shè)置為由狀態(tài)列表206中的單個(gè)事務(wù)(當(dāng)前寫(xiě)入者)設(shè)置來(lái)寫(xiě)時(shí),如果該單個(gè)事務(wù)的值是ACTIVE214,則該事務(wù)需要被異常終止,無(wú)論TM對(duì)象202正在以只讀模式還是以寫(xiě)模式打開(kāi)。
在這個(gè)實(shí)現(xiàn)中,TM對(duì)象202在給定的時(shí)間上只接納單個(gè)讀出者或單個(gè)寫(xiě)入者。在一些實(shí)施方案中,可以通過(guò)在狀態(tài)列表206中允許多個(gè)事務(wù)字段存在,從而接納并發(fā)的讀出者,藉此來(lái)減緩這種限制。這允許在任何給定的時(shí)間上有多個(gè)(但卻是受限的)事務(wù)打開(kāi)對(duì)象??梢灾饌€(gè)對(duì)象地來(lái)設(shè)置這一限制。正如將會(huì)討論的,TM對(duì)象202使得事務(wù)型存儲(chǔ)器事務(wù)更傾向于通過(guò)硬件/軟件混合方案來(lái)實(shí)現(xiàn)。
本發(fā)明的實(shí)施方案提供了允許以“硬件模式”或“軟件模式”來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器事務(wù)的硬件/軟件事務(wù)指令集體系結(jié)構(gòu)(ISA)。當(dāng)以硬件描述執(zhí)行事務(wù)型存儲(chǔ)器訪問(wèn)時(shí),主要利用事務(wù)型緩存132(圖1)來(lái)完成。按照這種方式,可以向事務(wù)提供非常高的性能,然而,硬件資源有時(shí)會(huì)耗盡。此外,在硬件模式中,處理器需要跟蹤被訪問(wèn)的所有存儲(chǔ)器位置。在硬件模式中,同時(shí)執(zhí)行的事務(wù)之間的沖突被檢測(cè)出來(lái),并且發(fā)生沖突的事務(wù)之一被異常終止。一旦異常終止,在該事務(wù)期間被寫(xiě)入的數(shù)據(jù)就被無(wú)效,并且在提交時(shí),該數(shù)據(jù)必須原子地是存儲(chǔ)器狀態(tài)的一部分。
更具體地說(shuō),本發(fā)明的實(shí)施方案涉及計(jì)算機(jī)系統(tǒng)中事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)。包括事務(wù)型緩存和常規(guī)緩存在內(nèi)的處理器被用在計(jì)算機(jī)系統(tǒng)中。策略管理器選擇第一模式(此后稱為“硬件模式”)或第二模式(此后稱為“軟件模式”)之一來(lái)響應(yīng)于訪問(wèn)存儲(chǔ)器的應(yīng)用程序接口(API)請(qǐng)求而實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)。在硬件模式中,事務(wù)型緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作,在軟件模式中,常規(guī)緩存被用來(lái)執(zhí)行大多數(shù)讀寫(xiě)存儲(chǔ)器操作(只有一個(gè)位置被存儲(chǔ)在事務(wù)型緩存中,下面將討論)。
策略管理器首先選擇硬件模式,以在事務(wù)型緩存中使用事務(wù)型讀寫(xiě)指令來(lái)執(zhí)行讀寫(xiě)操作。如果有足夠的存儲(chǔ)器資源存在于事務(wù)型緩存中用于執(zhí)行讀寫(xiě)操作,則發(fā)出提交指令以完成事務(wù)型存儲(chǔ)器訪問(wèn)。然而,如果在事務(wù)型緩存中檢測(cè)到?jīng)_突的事務(wù)型讀寫(xiě)操作,或者檢測(cè)到?jīng)]有足夠的存儲(chǔ)器資源,則發(fā)出異常終止指令。如果對(duì)于第一模式發(fā)出了異常終止指令,則策略管理器可以選擇軟件模式,在該模式中,在常規(guī)緩存中使用常規(guī)的讀寫(xiě)指令來(lái)執(zhí)行常規(guī)的讀寫(xiě)操作。
當(dāng)純粹用硬件來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器事務(wù)時(shí),對(duì)于單個(gè)事務(wù)可以訪問(wèn)的存儲(chǔ)器位置有數(shù)量上的限制。如果事務(wù)超過(guò)了這個(gè)限制,根據(jù)本發(fā)明的一個(gè)實(shí)施方案,該事務(wù)以“軟件模式”重新啟動(dòng)。下面將會(huì)討論,當(dāng)硬件事務(wù)被無(wú)效時(shí),該線程所執(zhí)行的下一存儲(chǔ)器操作將引發(fā)例外。這可以防止被無(wú)效的硬件事務(wù)繼續(xù)進(jìn)行并破壞存儲(chǔ)器。在發(fā)生例外并進(jìn)入軟件模式之后,主要由常規(guī)緩存及其他存儲(chǔ)器資源(見(jiàn)圖1)來(lái)執(zhí)行事務(wù)型存儲(chǔ)器訪問(wèn)。
為了實(shí)施事務(wù)型存儲(chǔ)器訪問(wèn)的這種混合硬件軟件實(shí)現(xiàn)方案,本發(fā)明的實(shí)施方案提供了新穎的、非顯而易見(jiàn)的事務(wù)型存儲(chǔ)器指令集體系結(jié)構(gòu)(ISA)。參考圖3,圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,圖示了實(shí)現(xiàn)硬件/軟件事務(wù)型存儲(chǔ)器事務(wù)的指令集的表。
如圖3所示,硬件/軟件事務(wù)ISA 300包括具有兩種模式的開(kāi)始事務(wù)302。“開(kāi)始事務(wù)(全部)”(Begin Transaction All)用于指定“硬件模式”事務(wù),而“開(kāi)始事務(wù)(選擇)”(Begin Transaction Select)被用于“軟件模式”事務(wù)。具體地說(shuō),開(kāi)始事務(wù)指令302標(biāo)記事務(wù)的啟動(dòng)。用于“硬件模式”的“開(kāi)始事務(wù)(全部)”默認(rèn)使所有的存儲(chǔ)器訪問(wèn)成為事務(wù)型的(例如,使用事務(wù)型緩存),而“開(kāi)始事務(wù)(選擇)”只完成被明確指定為事務(wù)型的存儲(chǔ)器操作。
應(yīng)當(dāng)注意,硬件事務(wù)不能被嵌套(與基于軟件的事務(wù)相反)。因此,在前一事務(wù)已被提交或異常終止之前,新的硬件事務(wù)不能開(kāi)始。通過(guò)執(zhí)行異常終止事務(wù)指令306或者在遇到數(shù)據(jù)沖突時(shí),異常終止一個(gè)事務(wù),下面將會(huì)討論。
提交指令304被用來(lái)標(biāo)記事務(wù)的結(jié)束,并允許包括事務(wù)型緩存在內(nèi)的事務(wù)型存儲(chǔ)器的所有內(nèi)容成為體系結(jié)構(gòu)性的。具體地說(shuō),允許事務(wù)型存儲(chǔ)來(lái)修改系統(tǒng)狀態(tài),并且事務(wù)型加載被從事務(wù)型緩存中清除出去。如果在先指令前面未被啟動(dòng),則無(wú)法讓提交指令開(kāi)始。
異常終止事務(wù)指令306異常終止當(dāng)前事務(wù),并丟棄先前被緩沖的所有事務(wù)型寫(xiě)數(shù)據(jù)。如果先前沒(méi)有任何事務(wù)被啟動(dòng),那么將發(fā)生錯(cuò)誤。
此外,硬件/軟件事務(wù)ISA 300還包括加載/存儲(chǔ)事務(wù)指令308,用以執(zhí)行事務(wù)型存儲(chǔ)器加載/存儲(chǔ)操作。
硬件/軟件事務(wù)ISA 300此外還包括加載/存儲(chǔ)常規(guī)指令,用以執(zhí)行非事務(wù)型的存儲(chǔ)器加載/存儲(chǔ)操作。
還提供了檢查點(diǎn)和恢復(fù)狀態(tài)指令312。檢查點(diǎn)指令對(duì)當(dāng)前寄存器狀態(tài)進(jìn)行檢查點(diǎn)操作并存入存儲(chǔ)器?;謴?fù)指令從存儲(chǔ)器中恢復(fù)當(dāng)前寄存器狀態(tài)。
硬件/軟件事務(wù)ISA 300還包括孤兒事務(wù)例外指令314。一個(gè)事務(wù)如果不能提交的話,就被定義為孤兒事務(wù)。例如,如果另一個(gè)處理已對(duì)它已進(jìn)行事務(wù)型讀的位置進(jìn)行寫(xiě)操作,那么這就可能發(fā)生。在這種情況下,孤兒事務(wù)可以發(fā)現(xiàn)存儲(chǔ)器處于不一致?tīng)顟B(tài)中,并可以讓程序引發(fā)例外,例如除以零,或者訪問(wèn)超范圍的存儲(chǔ)器地址。更壞的是,它可能將錯(cuò)誤的值寫(xiě)入有效的存儲(chǔ)器位置,并破壞系統(tǒng)狀態(tài)。
孤兒事務(wù)例外指令避免了這些復(fù)雜問(wèn)題。具體地說(shuō),在某一線程的事務(wù)已變?yōu)楣聝汉?,由該線程執(zhí)行的第一加載指令將生成孤兒事務(wù)例外指令314,后面將會(huì)討論。
現(xiàn)在看圖4A,圖4A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,圖示了用于事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)的過(guò)程400的流程圖。過(guò)程400利用了以下事實(shí),即,當(dāng)針對(duì)大多數(shù)正常情形用“硬件模式”來(lái)實(shí)現(xiàn)(例如,主要利用處理器的事務(wù)型緩存)時(shí),事務(wù)型存儲(chǔ)器訪問(wèn)是以非常快速并且最優(yōu)的方式來(lái)完成的。然而,該過(guò)程也考慮到,當(dāng)在硬件模式下由處理器來(lái)實(shí)現(xiàn)時(shí),事務(wù)也許不能完成,因此,它返回到“軟件模式”中,軟件模式總能保證完成事務(wù)。相反的是,“軟件模式”主要使用常規(guī)緩存和其他存儲(chǔ)器資源。下面將會(huì)討論,當(dāng)硬件事務(wù)被無(wú)效時(shí),下一存儲(chǔ)器操作引發(fā)孤兒事務(wù)例外,其防止被無(wú)效的硬件事務(wù)繼續(xù)進(jìn)行并破壞存儲(chǔ)器。
具體閱讀過(guò)程400,在框402,事務(wù)(例如,從API)開(kāi)始。在框404,策略管理器選擇硬件模式或軟件模式之一來(lái)開(kāi)始所述事務(wù)。在一個(gè)實(shí)施方案中,首先選擇硬件模式以(例如,經(jīng)由事務(wù)型緩存)利用快速硬件處理的優(yōu)勢(shì),而軟件模式可以用作后備。
在選擇了硬件模式之后,發(fā)起來(lái)自硬件/軟件事務(wù)ISA 300的Begin Transaction All指令302,使得模式被設(shè)置為硬件。進(jìn)一步地,來(lái)自硬件/軟件事務(wù)ISA的加載事務(wù)指令308也被發(fā)起,以加載事務(wù)型存儲(chǔ)器狀態(tài)。接著,在框408,如前所述,使用事務(wù)型讀寫(xiě)操作,在適當(dāng)之處對(duì)TM對(duì)象執(zhí)行事務(wù)的讀寫(xiě)操作。如果硬件事務(wù)可以完成(例如,如果有足夠的硬件資源可以用事務(wù)型緩存來(lái)完成事務(wù)),那么生成提交事務(wù)指令,并且如框410所示,狀態(tài)被設(shè)置為提交,并且事務(wù)被提交。對(duì)事務(wù)的處理就這樣被提交了(框415)。
然而,如果事務(wù)不能用硬件來(lái)提交(例如,在事務(wù)型緩存中沒(méi)有足夠的硬件資源),則發(fā)起異常終止事務(wù)指令,并且狀態(tài)被設(shè)置為異常終止,并且事務(wù)被異常終止(框420)。于是,過(guò)程被異常終止(框422)。
當(dāng)事務(wù)被異常終止時(shí),生成孤兒事務(wù)例外指令424。這可能是由于沖突的事務(wù)型讀寫(xiě)操作或硬件資源不夠引起的。在任一種情形中,事務(wù)型存儲(chǔ)器被清理,并且事務(wù)被重試(框426)。一般,如果在硬件模式中發(fā)生故障,那么對(duì)于下一次嘗試,策略管理器將選擇軟件模式。
簡(jiǎn)要地說(shuō),將更詳細(xì)地討論提交和異常終止指令。具體地說(shuō),如前所述,可以使用事務(wù)型緩存來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器。例如,如圖1所示,處理器101可以包括事務(wù)型緩存132和常規(guī)緩存134。使用來(lái)自硬件/軟件事務(wù)ISA 300的加載和存儲(chǔ)事務(wù)308進(jìn)行讀寫(xiě)的所有位置都被存儲(chǔ)在事務(wù)型緩存中。所有的事務(wù)型寫(xiě)都保留在事務(wù)型緩存中,直到事務(wù)提交為止。如果事務(wù)型緩存中曾被所述事務(wù)讀取的位置被另一個(gè)線程寫(xiě),那么所述事務(wù)變成一個(gè)孤兒,并且最終將被異常終止。
提交事務(wù)指令304標(biāo)記事務(wù)的結(jié)束,并且使得事務(wù)型緩存的所有內(nèi)容變?yōu)轶w系結(jié)構(gòu)性的(例如,事務(wù)型存儲(chǔ)被允許修改系統(tǒng)狀態(tài),并且事務(wù)型加載被從事務(wù)型緩存中清除出去)。
如果某一事務(wù)不能提交的話,它就被定義為一個(gè)孤兒。舉例來(lái)說(shuō),一個(gè)事務(wù)可能成為孤兒,如果另一個(gè)線程寫(xiě)它讀過(guò)的位置的話。孤兒事務(wù)可以發(fā)現(xiàn)存儲(chǔ)器處于不一致?tīng)顟B(tài)中,并可以讓處理器引發(fā)例外,例如除以零,或者訪問(wèn)范圍以外的存儲(chǔ)器位置。更壞的是,它有可能將錯(cuò)誤的值寫(xiě)入有效的存儲(chǔ)器位置,并破壞系統(tǒng)狀態(tài)。因此,當(dāng)這發(fā)生時(shí),就發(fā)起孤兒事務(wù)例外指令314,并使動(dòng)作異常終止422。
因此,過(guò)程400和硬件/軟件事務(wù)ISA 300允許例外被異步使用,以通知一個(gè)線程它正在執(zhí)行的事務(wù)是否已變?yōu)楣聝?。一旦事?wù)已變?yōu)楣聝海瑒t讓所述線程異常終止,并且不允許該線程使用從來(lái)自存儲(chǔ)器的新加載操作所返回的數(shù)據(jù)。
為了完成這一目標(biāo),在每次加載上使用特殊的例外。具體地說(shuō),在某一線程成為孤兒后的第一次加載在該加載上強(qiáng)制一個(gè)例外,并且該線程被異常終止。然后,例外處理者(handler)負(fù)責(zé)分支回到事務(wù)的開(kāi)端,這可以如前面的清理和重試框426所述來(lái)完成。因此,用異常終止事務(wù)指令306實(shí)現(xiàn)的用戶例外處理者負(fù)責(zé)異常終止事務(wù),展開(kāi)堆棧,以及利用清理和重試426來(lái)重新啟動(dòng)被異常終止的事務(wù)。
簡(jiǎn)要參考圖4B,圖4B是具體圖示了監(jiān)視孤兒事務(wù)的過(guò)程448的流程圖。在框450,在發(fā)生加載事務(wù)后,狀態(tài)標(biāo)記被設(shè)置為事務(wù)有效。接著,過(guò)程448監(jiān)視由另一個(gè)處理器或線程引發(fā)的沖突(框452)。如果在框454沒(méi)有檢測(cè)到?jīng)_突,則繼續(xù)處理(框456)。然而,如果在框454檢測(cè)到?jīng)_突,則狀態(tài)標(biāo)記被重置為事務(wù)無(wú)效,用以標(biāo)志該事務(wù)已被異常終止(框460)。在第一次加載事務(wù)后的所有加載都檢查狀態(tài)標(biāo)記,以在提交(例如,將數(shù)據(jù)返回處理器)前驗(yàn)證它被設(shè)置為事務(wù)有效。另一方面,如果狀態(tài)標(biāo)記被重置,則不允許所述加載被提交,并且發(fā)生如前所述的異常終止過(guò)程。
返回圖4A,假設(shè)硬件事務(wù)由于發(fā)生沖突的事務(wù)讀寫(xiě)操作或硬件資源耗盡而已被異常終止,那么策略管理器在框404處可以選擇“軟件模式”來(lái)確保事務(wù)的完成。在框430,從硬件/軟件事務(wù)ISA 300發(fā)起B(yǎng)egin Transaction Select指令302,使得模式被設(shè)置為軟件,并且事務(wù)狀態(tài)被加載。應(yīng)當(dāng)注意,當(dāng)運(yùn)行在軟件模式時(shí),處理器并不將所有的存儲(chǔ)器訪問(wèn)都視為事務(wù)型的。對(duì)于每個(gè)事務(wù),只有一個(gè)位置是以事務(wù)型方式(例如,使用加載事務(wù)指令308)來(lái)訪問(wèn)的——即,包含所述事務(wù)的狀態(tài)的位置。
接著,在框432,通過(guò)拷貝并使用常規(guī)讀寫(xiě)操作(例如,加載/存儲(chǔ)常規(guī)指令310),對(duì)事務(wù)執(zhí)行讀寫(xiě)操作。此外,使用常規(guī)緩存和其他存儲(chǔ)器資源,而不是事務(wù)型緩存。如果對(duì)事務(wù)的讀寫(xiě)操作可以執(zhí)行的話,則發(fā)起提交事務(wù)指令304,并狀態(tài)被設(shè)置為提交(框434)。于是,對(duì)存儲(chǔ)器的讀寫(xiě)操作被提交(框415)。
另一方面,如果檢測(cè)到?jīng)_突的事務(wù)型寫(xiě)操作,則過(guò)程可以被異常終止,并且狀態(tài)被設(shè)置為異常終止(框436)。于是,事務(wù)在框422處被異常終止,并且基于發(fā)生沖突的寫(xiě)事務(wù)的例外438,處于軟件模式的過(guò)程400可以在軟件模式中再次清理并重試(框440)事務(wù)型操作。
在本發(fā)明的另一個(gè)實(shí)施方案中,前面所討論的硬件/軟件事務(wù)ISA 300可以用來(lái)有效地實(shí)現(xiàn)鎖。簡(jiǎn)要地說(shuō),當(dāng)調(diào)用鎖獲取函數(shù)時(shí),處理器試圖使用事務(wù)型存儲(chǔ)器擴(kuò)展,以硬件模式來(lái)執(zhí)行臨界區(qū)(例如,在鎖獲取和接下來(lái)的鎖釋放之間的代碼),并且如果失敗的話,過(guò)程將轉(zhuǎn)回到軟件模式。
有三種可能的原因致使臨界區(qū)可能無(wú)法以硬件模式完成。例如,可能發(fā)生資源耗盡,其中用來(lái)保存事務(wù)型狀態(tài)的事務(wù)型緩存溢出。或者,可能存在數(shù)據(jù)上的沖突。例如,如果兩個(gè)線程想要以硬件模式執(zhí)行它們的臨界區(qū),并且試圖對(duì)同一數(shù)據(jù)執(zhí)行沖突的操作,這也可能引發(fā)故障。舉例來(lái)說(shuō),一個(gè)線程可能要寫(xiě)另一個(gè)線程已經(jīng)讀過(guò)的緩存行。另外,在向軟件模式轉(zhuǎn)移時(shí)也可能發(fā)生故障。例如,如果某一線程在軟件模式中奪取了鎖,那么所有需要這個(gè)鎖并且處于臨界區(qū)中間的其他線程都將被異常終止。
應(yīng)當(dāng)注意,對(duì)于任何鎖,在硬件模式中,多個(gè)線程可以處于臨界區(qū)中,或者在軟件模式中,單個(gè)線程可以正在持有該鎖。為了在硬件模式中進(jìn)入鎖的臨界區(qū),線程進(jìn)行檢查以確信鎖是可獲得的,并且進(jìn)入臨界區(qū)而不將其標(biāo)記為鎖定。為了在軟件模式中進(jìn)入鎖的臨界區(qū),線程進(jìn)行檢查以確信鎖是可獲得的,并將其標(biāo)記為鎖定。這將在硬件模式中異常終止任何已處于臨界區(qū)中的線程,并將在硬件或軟件模式中阻止任何新的線程進(jìn)入臨界區(qū)。
看圖5,圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,圖示了使用硬件/軟件事務(wù)ISA 300來(lái)有效實(shí)現(xiàn)鎖的過(guò)程500的流程圖。在框502,鎖被獲取或發(fā)起。在框504,策略管理器選擇一種模式。典型地,如前所述,首先選擇硬件模式,從而嘗試最有效地完成事務(wù)型存儲(chǔ)器事務(wù)。如果硬件模式無(wú)法完成事務(wù)的話,則轉(zhuǎn)向軟件模式。
接著,在框506,鎖被開(kāi)啟,并且模式被事務(wù)ISA 300的“開(kāi)始事務(wù)(全部)”指令302設(shè)置為硬件。在框508,使用事務(wù)型讀寫(xiě)操作(例如,加載/存儲(chǔ)事務(wù)308),對(duì)所述事務(wù)執(zhí)行讀寫(xiě)操作(例如,在事務(wù)型緩存中)。如果事務(wù)完成,則鎖被釋放(框510),并且事務(wù)被提交。
然而,如果存在因沖突的事務(wù)型讀寫(xiě)操作520引起的例外,則鎖被異常終止。然后發(fā)起清理和重試操作(框522),并且以軟件模式來(lái)嘗試鎖。因此,在框504,策略管理器選擇軟件模式。
在這種情形中,鎖以軟件模式開(kāi)始,并且鎖的狀態(tài)被設(shè)置為鎖定(框530)。接著(框532),使用常規(guī)讀寫(xiě)操作(例如,加載和存儲(chǔ)常規(guī)指令310)來(lái)執(zhí)行讀寫(xiě)操作。在軟件模式中,鎖一般總是被完成,然后鎖被釋放,并且鎖定狀態(tài)被設(shè)置為解鎖(在框534)。這結(jié)束了過(guò)程500。
為了獲得進(jìn)一步的性能改進(jìn),處理器可以執(zhí)行沖突解決。具體地說(shuō),當(dāng)檢測(cè)到數(shù)據(jù)沖突時(shí),處理器可以解決沖突,并允許事務(wù)之一完成。剩下的發(fā)生沖突的事務(wù)可以被推遲或異常終止,這取決于它們?cè)x取的存儲(chǔ)器位置中是否有哪一個(gè)位置已被另一個(gè)線程寫(xiě)入。此外,當(dāng)如前所述已發(fā)生例外520(例如,孤兒事務(wù)例外)時(shí),可以記錄事務(wù)是否因資源耗盡或因數(shù)據(jù)沖突而成為孤兒。然后,例外處理器可被修改為只有當(dāng)資源耗盡時(shí)才返回軟件模式。當(dāng)只發(fā)生了數(shù)據(jù)沖突時(shí),可以采用以下修改,即再次以硬件模式來(lái)重試事務(wù),而不是自動(dòng)切換到軟件模式。
雖然已在具體實(shí)施方案中描述了本發(fā)明的實(shí)施方案及其各種功能組件,但是應(yīng)當(dāng)理解,可以用硬件、軟件、固件、中間件或它們的組合來(lái)實(shí)現(xiàn)本發(fā)明的實(shí)施方案,并且本發(fā)明的實(shí)施方案可以用在多種系統(tǒng)、子系統(tǒng)、組件或其子組件中。當(dāng)用軟件或固件來(lái)實(shí)現(xiàn)時(shí),本發(fā)明的單元是用于執(zhí)行必要任務(wù)的指令/代碼段。程序或代碼段可被存儲(chǔ)在機(jī)器可讀介質(zhì)(例如,處理器可讀介質(zhì)或計(jì)算機(jī)程序產(chǎn)品)中,或者在傳輸介質(zhì)或通信鏈路中,通過(guò)包含在載波或由載波調(diào)制的信號(hào)中的計(jì)算機(jī)數(shù)據(jù)信號(hào)來(lái)傳輸。機(jī)器可讀介質(zhì)可以包括可存儲(chǔ)或傳輸機(jī)器(例如,處理器、計(jì)算機(jī)等)可讀并可執(zhí)行形式的信息的任何介質(zhì)。機(jī)器可讀介質(zhì)的例子包括電子線路、半導(dǎo)體存儲(chǔ)器件、ROM、閃存、可擦除可編程ROM(EPROM)、軟盤(pán)、壓縮盤(pán)(CD-ROM)、光盤(pán)、硬盤(pán)、光纖介質(zhì)、射頻(RF)鏈路等。計(jì)算機(jī)數(shù)據(jù)信號(hào)可以包括可在傳輸介質(zhì)上傳播的任何信號(hào),所述傳輸介質(zhì)例如是電子網(wǎng)絡(luò)信道、光纖、空氣、電磁介質(zhì)、射頻(RF)鏈路、條形碼等。代碼段可以經(jīng)由因特網(wǎng)、企業(yè)內(nèi)部網(wǎng)等網(wǎng)絡(luò)來(lái)下載。
此外,雖然已參考示意性的實(shí)施方案描述了本發(fā)明的實(shí)施方式,但是這些描述不想被理解為限制性的。對(duì)本發(fā)明實(shí)施方案所屬技術(shù)領(lǐng)域的技術(shù)人員來(lái)說(shuō)很清楚的對(duì)示意性實(shí)施方案的各種修改、以及本發(fā)明的其他實(shí)施方案都被視為落入本發(fā)明的精神和范圍內(nèi)。
權(quán)利要求
1.一種裝置,包括包括事務(wù)型緩存和常規(guī)緩存在內(nèi)的處理器;以及選擇第一模式和第二模式之一來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)的策略管理器;其中,在第一模式中,所述事務(wù)型緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作,而在第二模式中,所述常規(guī)緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
2.如權(quán)利要求1所述的裝置,其中,所述策略管理器選擇第一模式,以在所述事務(wù)型緩存中使用事務(wù)型讀寫(xiě)指令來(lái)執(zhí)行讀寫(xiě)操作。
3.如權(quán)利要求2所述的裝置,其中,如果在所述事務(wù)型緩存中存在足夠的存儲(chǔ)器資源用于執(zhí)行讀寫(xiě)操作,則發(fā)出提交指令,以完成所述事務(wù)型存儲(chǔ)器訪問(wèn)。
4.如權(quán)利要求2所述的裝置,其中,如果檢測(cè)到發(fā)生沖突的事務(wù)型讀寫(xiě)操作,則發(fā)出異常終止指令。
5.如權(quán)利要求2所述的裝置,其中,如果在所述事務(wù)型緩存中檢測(cè)不到足夠的存儲(chǔ)器資源,則發(fā)出異常終止指令。
6.如權(quán)利要求5所述的裝置,其中,如果對(duì)于第一模式發(fā)出了異常終止指令,則所述策略管理器選擇第二模式,在第二模式中,在所述常規(guī)緩存中使用常規(guī)讀寫(xiě)指令來(lái)執(zhí)行常規(guī)讀寫(xiě)操作。
7.如權(quán)利要求6所述的裝置,其中,運(yùn)行在第二模式中,如果檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則發(fā)出異常終止指令。
8.如權(quán)利要求6所述的裝置,其中,如果未檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則發(fā)出提交指令以完成所述存儲(chǔ)器訪問(wèn)。
9.一種方法,包括選擇第一模式和第二模式之一來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn);利用事務(wù)型緩存,在第一模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作;以及利用常規(guī)緩存,在第二模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
10.如權(quán)利要求9所述的方法,還包括選擇所述第一模式;以及使用事務(wù)型讀寫(xiě)指令,在所述事務(wù)型緩存中執(zhí)行讀寫(xiě)操作。
11.如權(quán)利要求10所述的方法,其中,如果在所述事務(wù)型緩存中存在足夠的存儲(chǔ)器資源用于執(zhí)行讀寫(xiě)操作,則還包括發(fā)出提交指令,以完成所述事務(wù)型存儲(chǔ)器訪問(wèn)。
12.如權(quán)利要求10所述的方法,其中,如果檢測(cè)到發(fā)生沖突的事務(wù)型讀寫(xiě)操作,則還包括發(fā)出異常終止指令。
13.如權(quán)利要求10所述的方法,其中,如果在所述事務(wù)型緩存中檢測(cè)不到足夠的存儲(chǔ)器資源,則還包括發(fā)出異常終止指令。
14.如權(quán)利要求13所述的方法,其中,如果在第一模式中發(fā)出了異常終止指令,那么還包括選擇第二模式;以及使用常規(guī)讀寫(xiě)指令,在所述常規(guī)緩存中執(zhí)行常規(guī)讀寫(xiě)操作。
15.如權(quán)利要求14所述的方法,其中,當(dāng)運(yùn)行在第二模式中時(shí),如果檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則還包括發(fā)出異常終止指令。
16.如權(quán)利要求14所述的方法,其中,如果未檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則還包括發(fā)出提交指令以完成所述存儲(chǔ)器訪問(wèn)。
17.一種其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),所述指令在被機(jī)器執(zhí)行時(shí)使得所述機(jī)器執(zhí)行以下操作,其中包括選擇第一模式和第二模式之一來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn);利用事務(wù)型緩存,在第一模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作;以及利用常規(guī)緩存,在第二模式中執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
18.如權(quán)利要求17所述的機(jī)器可讀介質(zhì),還包括使得所述機(jī)器執(zhí)行以下操作的指令實(shí)現(xiàn)所述第一模式;以及使用事務(wù)型讀寫(xiě)指令,在所述事務(wù)型緩存中執(zhí)行讀寫(xiě)操作。
19.如權(quán)利要求18所述的機(jī)器可讀介質(zhì),還包括使得所述機(jī)器執(zhí)行以下操作的指令如果在所述事務(wù)型緩存中存在足夠的存儲(chǔ)器資源用于執(zhí)行讀寫(xiě)操作,則發(fā)出提交指令,以完成所述事務(wù)型存儲(chǔ)器訪問(wèn)。
20.如權(quán)利要求18所述的機(jī)器可讀介質(zhì),還包括使得所述機(jī)器執(zhí)行以下操作的指令如果檢測(cè)到發(fā)生沖突的事務(wù)型讀寫(xiě)操作,則發(fā)出異常終止指令。
21.如權(quán)利要求18所述的機(jī)器可讀介質(zhì),還包括使得所述機(jī)器執(zhí)行以下操作的指令如果在所述事務(wù)型緩存中檢測(cè)不到足夠的存儲(chǔ)器資源,則發(fā)出異常終止指令。
22.如權(quán)利要求21所述的機(jī)器可讀介質(zhì),其中,如果在第一模式中發(fā)出了異常終止指令,則還包括使得所述機(jī)器執(zhí)行以下操作的指令選擇第二模式;以及使用常規(guī)讀寫(xiě)指令,在所述常規(guī)緩存中執(zhí)行常規(guī)讀寫(xiě)操作。
23.如權(quán)利要求22所述的機(jī)器可讀介質(zhì),當(dāng)運(yùn)行在第二模式中,還包括使得所述機(jī)器執(zhí)行以下操作的指令如果檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則發(fā)出異常終止指令。
24.如權(quán)利要求22所述的機(jī)器可讀介質(zhì),還包括使得所述機(jī)器執(zhí)行以下操作的指令如果未檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則發(fā)出提交指令以完成所述存儲(chǔ)器訪問(wèn)。
25.一種計(jì)算機(jī)系統(tǒng),包括包括事務(wù)型緩存和常規(guī)緩存在內(nèi)的處理器;以及選擇第一模式或第二模式之一,以響應(yīng)于在數(shù)據(jù)庫(kù)中訪問(wèn)存儲(chǔ)器的應(yīng)用程序接口請(qǐng)求來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)的策略管理器;其中,在第一模式中,所述事務(wù)型緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作,而在第二模式中,所述常規(guī)緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
26.如權(quán)利要求25所述的計(jì)算機(jī)系統(tǒng),其中,所述策略管理器選擇第一模式,以在所述事務(wù)型緩存中使用事務(wù)型讀寫(xiě)指令來(lái)執(zhí)行讀寫(xiě)操作。
27.如權(quán)利要求26所述的計(jì)算機(jī)系統(tǒng),其中,如果在所述事務(wù)型緩存中存在足夠的存儲(chǔ)器資源用于執(zhí)行讀寫(xiě)操作,則發(fā)出提交指令,以完成所述事務(wù)型存儲(chǔ)器訪問(wèn)。
28.如權(quán)利要求26所述的計(jì)算機(jī)系統(tǒng),其中,如果檢測(cè)到發(fā)生沖突的事務(wù)型讀寫(xiě)操作,則發(fā)出異常終止指令。
29.如權(quán)利要求26所述的計(jì)算機(jī)系統(tǒng),其中,如果在所述事務(wù)型緩存中檢測(cè)不到足夠的存儲(chǔ)器資源,則發(fā)出異常終止指令。
30.如權(quán)利要求29所述的計(jì)算機(jī)系統(tǒng),其中,如果對(duì)于第一模式發(fā)出了異常終止指令,則所述策略管理器選擇第二模式,在第二模式中,在所述常規(guī)緩存中使用常規(guī)讀寫(xiě)指令來(lái)執(zhí)行常規(guī)讀寫(xiě)操作。
31.如權(quán)利要求30所述的計(jì)算機(jī)系統(tǒng),其中,運(yùn)行在第二模式中,如果檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則發(fā)出異常終止指令。
32.如權(quán)利要求30所述的計(jì)算機(jī)系統(tǒng),其中,如果未檢測(cè)到發(fā)生沖突的寫(xiě)事務(wù),則發(fā)出提交指令以完成所述存儲(chǔ)器訪問(wèn)。
全文摘要
本發(fā)明的實(shí)施方案涉及在計(jì)算機(jī)系統(tǒng)中事務(wù)型存儲(chǔ)器訪問(wèn)的混合硬件軟件實(shí)現(xiàn)。包括事務(wù)型緩存和常規(guī)緩存在內(nèi)的處理器被用在包括策略管理器的計(jì)算機(jī)系統(tǒng)中,所述策略管理器選擇第一模式(硬件模式)和第二模式(軟件模式)之一來(lái)實(shí)現(xiàn)事務(wù)型存儲(chǔ)器訪問(wèn)。在硬件模式中,事務(wù)型緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作,在軟件模式中,常規(guī)緩存被用來(lái)執(zhí)行讀寫(xiě)存儲(chǔ)器操作。
文檔編號(hào)G06F12/08GK1755635SQ200510107809
公開(kāi)日2006年4月5日 申請(qǐng)日期2005年9月30日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者桑吉夫·庫(kù)馬, 克里斯托弗·休斯, 帕薩·肯杜, 安東尼·納古炎 申請(qǐng)人:英特爾公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1