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

基于輔助線程實(shí)現(xiàn)事務(wù)存儲(chǔ)系統(tǒng)的方法和裝置的制作方法

文檔序號(hào):6480681閱讀:150來(lái)源:國(guó)知局

專利名稱::基于輔助線程實(shí)現(xiàn)事務(wù)存儲(chǔ)系統(tǒng)的方法和裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及事務(wù)存儲(chǔ)系統(tǒng),更具體地,涉及基于輔助線程實(shí)現(xiàn)事務(wù)存儲(chǔ)系統(tǒng)的方法和裝置。
背景技術(shù)
:事務(wù)(transaction)是一個(gè)在計(jì)算機(jī)領(lǐng)域中被廣泛使用的概念。一個(gè)事務(wù)通常是指多條指令以看似原子的方式執(zhí)行,在執(zhí)行期間沒(méi)有其他操作介于其中。例如,如果一個(gè)事務(wù)訪問(wèn)了某個(gè)存儲(chǔ)器地址上的數(shù)據(jù),則直到該事務(wù)結(jié)束,該地址上的數(shù)據(jù)不應(yīng)該被該事務(wù)以外的操作修改。事務(wù)可以直接在硬件層面實(shí)現(xiàn),比如修改處理器體系結(jié)構(gòu)。從體系結(jié)構(gòu)級(jí)別上支持事務(wù)的硬件組件稱為硬件事務(wù)存儲(chǔ)器(HardwareTransactionalMemory,簡(jiǎn)稱HTM)系統(tǒng)。利用純軟件實(shí)現(xiàn)的事務(wù)存儲(chǔ)器稱為軟件事務(wù)存儲(chǔ)器(SoftwareTransactionalMemory,簡(jiǎn)稱STM)。下文中的TM泛指所有的事務(wù)存儲(chǔ)器系統(tǒng)。采用事務(wù)存儲(chǔ)器系統(tǒng),在編寫(xiě)并行程序時(shí)程序員無(wú)需使用鎖,因此可以提高軟件生產(chǎn)效率。事務(wù)訪問(wèn)的所有數(shù)據(jù)(推測(cè)性數(shù)據(jù))將被臨時(shí)地存儲(chǔ)在一事務(wù)緩沖器中,而不是寫(xiě)入到存儲(chǔ)器中。如果兩個(gè)事務(wù)訪問(wèn)相同的地址,并且其中至少一個(gè)修改該地址上的數(shù)據(jù),則其中一個(gè)事務(wù)必須回滾(rollback)并重新執(zhí)行,而另一個(gè)事務(wù)繼續(xù)。這種情況被稱為沖突(conflict)。如果沒(méi)有沖突,事務(wù)結(jié)束時(shí)臨時(shí)存儲(chǔ)的數(shù)據(jù)將被寫(xiě)入到存儲(chǔ)器。該操作稱為提交(commit)。如上所述,在事務(wù)訪問(wèn)數(shù)據(jù)時(shí),目前TM的一種實(shí)現(xiàn)是通過(guò)編譯器在每個(gè)需要訪問(wèn)數(shù)據(jù)的事務(wù)加載/存儲(chǔ)指令之前增加屏障(barrier)。這種屏障的作用在于通過(guò)檢查鎖定表來(lái)檢測(cè)是否存在沖突,在鎖定表中記錄有事務(wù)要訪問(wèn)的每個(gè)存儲(chǔ)器塊的許可。在使用屏障功能的情況下意味著,需要對(duì)事務(wù)的源代碼重新編譯,以在編譯期間加入這些屏障。但是第三方提供的函數(shù)庫(kù)一般不包含源代碼,因此程序員不能在事務(wù)中調(diào)用這些庫(kù)函數(shù)。實(shí)際上,很多庫(kù)中的函數(shù)相對(duì)于事務(wù)來(lái)說(shuō)是安全的,例如C庫(kù)中的"strcmp"和math庫(kù)中的"sqrt"。也就是說(shuō),即使那些函數(shù)不包含不可恢復(fù)的操作,程序員也不能夠調(diào)用那些函數(shù)。所以,這種禁止程序員在事務(wù)執(zhí)行期間調(diào)用那些函數(shù)的情況明顯降低了生產(chǎn)率。
發(fā)明內(nèi)容因此,根據(jù)本發(fā)明的一個(gè)方面,提供了一種在支持同時(shí)多個(gè)硬件線程的處理器中執(zhí)行事務(wù)的方法,包括以下步驟建立用于執(zhí)行事務(wù)的主軟件線程和用于執(zhí)行屏障功能的輔助軟件線程,利用所述多個(gè)硬件線程執(zhí)行所述主軟件線程和所述輔助軟件線程;執(zhí)行所述主軟件線程;如果所述主軟件線程遇到需要讀取/寫(xiě)入數(shù)據(jù)的事務(wù)加載/存儲(chǔ)操作,則判斷是否需要執(zhí)行屏障功能;如果需要執(zhí)行屏障功能,則執(zhí)行以下步驟停止所述主軟件線程;激活所述輔助軟件線程以執(zhí)行所述屏障功能;在所述輔助軟件線程執(zhí)行所述屏障功能完成之后,退出所述輔助軟件線程;以及繼續(xù)執(zhí)行所述主軟件線程。由此,本發(fā)明利用多個(gè)硬件線程實(shí)現(xiàn)屏障功能,從而避免了重新編譯過(guò)程中帶來(lái)的麻煩,并且保證了在數(shù)據(jù)訪問(wèn)過(guò)程中對(duì)沖突的檢測(cè)。優(yōu)選地,在所述多個(gè)硬件線程的每個(gè)硬件線程中還包括寫(xiě)簽名和讀簽名,用于存儲(chǔ)所述主軟件線程曾經(jīng)讀取/寫(xiě)入的數(shù)據(jù)的物理地址。如果要讀取/寫(xiě)入的數(shù)據(jù)沒(méi)有命中高速緩存,并且要寫(xiě)入的數(shù)據(jù)沒(méi)有命中至少一個(gè)寫(xiě)簽名或者要讀取的數(shù)據(jù)沒(méi)有命中至少一個(gè)讀簽名或?qū)懞灻?,則需要執(zhí)行所述屏障功能。由此,簽名的使用可以簡(jiǎn)化對(duì)沖突的判斷,而無(wú)需每次都查詢鎖定表,可以提高判斷的效率。優(yōu)選地,所述主軟件線程利用共享寄存器與所述輔助軟件線程進(jìn)行通信。所述共享寄存器包括事務(wù)地址寄存器,即TAR,用于保存讀取/寫(xiě)入的數(shù)據(jù)的物理地址;事務(wù)數(shù)據(jù)寄存器,即TDR,用于保存來(lái)自高速緩存中的高速緩存行的數(shù)據(jù);事務(wù)運(yùn)行寄存器,即T0R,用于保存事務(wù)操作代碼;以及事務(wù)ID寄存器,即TIR,用于保存設(shè)置TOR的硬件線程ID。所述主軟件線程利用共享寄存器與所述輔助軟件線程進(jìn)行通信的步驟包括將要讀取/寫(xiě)入數(shù)據(jù)的物理地址復(fù)制到TAR;在要寫(xiě)入時(shí)將要寫(xiě)入的數(shù)據(jù)復(fù)制到TDR;將硬件線程ID復(fù)制到TIR;以及根據(jù)要讀取/寫(xiě)入的狀態(tài)對(duì)應(yīng)地設(shè)置TOR的狀態(tài)。由此,可以實(shí)現(xiàn)多個(gè)硬件線程之間的高速通信。優(yōu)選地,所述輔助軟件線程通過(guò)檢索鎖定表來(lái)檢測(cè)沖突。其中所述鎖定表存儲(chǔ)在存儲(chǔ)器中。如果檢測(cè)到?jīng)_突,則所述輔助軟件線程根據(jù)管理策略中止發(fā)生沖突的事務(wù)。如果沒(méi)有檢測(cè)到?jīng)_突,則所述輔助軟件線程執(zhí)行以下步驟在要讀取數(shù)據(jù)時(shí),如果所述主軟件線程具有要讀取數(shù)據(jù)的物理地址的讀取許可,則所述輔助軟件線程不執(zhí)行任何處理;如果所述主軟件線程具有要讀取數(shù)據(jù)的物理地址的寫(xiě)入許可,則所述輔助軟件線程將所述鎖定表中的數(shù)據(jù)和硬件線程ID寫(xiě)入高速緩存行中;以及如果所述輔助軟件線程沒(méi)有在所述鎖定表中找到與要讀取數(shù)據(jù)的物理地址對(duì)應(yīng)的項(xiàng)目,則在所述鎖定表中插入新的項(xiàng)目,以表示所述主軟件線程具有讀取許可;在要寫(xiě)入數(shù)據(jù)時(shí),如果所述主軟件線程具有要寫(xiě)入數(shù)據(jù)的物理地址的讀取許可,則所述輔助軟件線程將所述讀取許可升級(jí)為寫(xiě)入許可,然后所述輔助軟件線程通過(guò)正常加載操作從TAR讀取與物理地址對(duì)應(yīng)的存儲(chǔ)器塊中的數(shù)據(jù),并在對(duì)應(yīng)的鎖定表的項(xiàng)目中記錄所讀取的數(shù)據(jù),從而進(jìn)行更新;如果所述主軟件線程具有要寫(xiě)入數(shù)據(jù)的物理地址的寫(xiě)入許可,則所述輔助軟件線程將對(duì)應(yīng)數(shù)據(jù)從TDR寫(xiě)入對(duì)應(yīng)的鎖定表的項(xiàng)目中;以及如果所述輔助軟件線程在所述鎖定表中沒(méi)有找到與要寫(xiě)入數(shù)據(jù)的物理地址對(duì)應(yīng)的項(xiàng)目,則向所述鎖定表插入新的項(xiàng)目,以表示所述主軟件線程具有寫(xiě)入許可。由此,可以實(shí)現(xiàn)在存在沖突和不存在沖突兩個(gè)情況下的對(duì)事務(wù)進(jìn)行的處理,以及對(duì)鎖定表的項(xiàng)目的處理,從而提高利用多個(gè)硬件線程進(jìn)行沖突判斷的事務(wù)處理的效率。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種執(zhí)行事務(wù)的系統(tǒng),包括支持同時(shí)多個(gè)硬件線程的至少一個(gè)處理器,其中利用所述多個(gè)硬件線程執(zhí)行用于執(zhí)行事務(wù)的主軟件線程和用于執(zhí)行屏障功能的輔助軟件線程;以及所述至少一個(gè)處理器能夠訪問(wèn)的高速緩存;其中,所述至少一個(gè)處理器被配置為執(zhí)行所述主軟件線程;如果所述主軟件線程遇到需要讀取/寫(xiě)入數(shù)據(jù)的事務(wù)加載/存儲(chǔ)操作,則判斷是否需要執(zhí)行屏障功能;如果需要執(zhí)行屏障功能,則執(zhí)行以下步驟停止所述主軟件線程;激活所述輔助軟件線程以執(zhí)行所述屏障功能;在所述輔助軟件線程執(zhí)行所述屏障功能完成之后,退出所述輔助軟件線程;以及繼續(xù)執(zhí)行所述主軟件線程。為了使本發(fā)明的優(yōu)點(diǎn)容易理解,將參考由附圖示出的特定實(shí)施例來(lái)對(duì)上述簡(jiǎn)要描述的本發(fā)明進(jìn)行更詳細(xì)的說(shuō)明??梢岳斫獾氖沁@些附圖僅僅對(duì)本發(fā)明的一般實(shí)施例進(jìn)行描述,不能因此而認(rèn)為它們對(duì)本發(fā)明的范圍進(jìn)行限制,通過(guò)使用下列附圖對(duì)本發(fā)明的特征及細(xì)節(jié)進(jìn)行描述及解釋圖1示出本發(fā)明的簡(jiǎn)單系統(tǒng)結(jié)構(gòu)。圖2示出本發(fā)明的軟件實(shí)現(xiàn)過(guò)程。圖3示出主線程和輔助線程的實(shí)際執(zhí)行程序圖。圖4示出判斷是否需要執(zhí)行屏障功能的具體判斷過(guò)程。圖5示出主線程和輔助線程的具體通信過(guò)程。圖6示出多個(gè)核心和多個(gè)線程的情況實(shí)例。具體實(shí)施例方式早期IBM提出一種盡力而為的事務(wù)(BET)方案(如美國(guó)專利申請(qǐng)No.2006/0288173),這種BET可以在現(xiàn)有的多處理器系統(tǒng)(例如對(duì)稱多處理器(SMP)系統(tǒng))中實(shí)現(xiàn),并具有較低的成本。在這種BET系統(tǒng)中,使用高速緩存(cache)保存在執(zhí)行事務(wù)時(shí)由事務(wù)所訪問(wèn)的數(shù)據(jù),其中系統(tǒng)對(duì)高速緩存進(jìn)行讀寫(xiě)的單位被稱作高速緩存行(cacheline)。高速緩存行包括A標(biāo)簽和顏色標(biāo)簽。A標(biāo)簽表示這個(gè)高速緩存行是否被未提交事務(wù)訪問(wèn),而顏色標(biāo)簽表示哪個(gè)事務(wù)進(jìn)行的訪問(wèn)。僅當(dāng)設(shè)置了A標(biāo)簽時(shí),顏色標(biāo)簽才有效。具有A標(biāo)簽設(shè)置的高速緩存行稱為A高速緩存行。A高速緩存行不能夠被替換出。對(duì)于A高速緩存行處于共享狀態(tài)下,顏色標(biāo)簽可表示多個(gè)線程(如果高速緩存被多個(gè)核共享)。在BET的情況下,沖突檢測(cè)基于現(xiàn)有的高速緩存一致性協(xié)議(如MESI的窺探協(xié)議)。所述MESI—致性協(xié)議已經(jīng)廣泛使用在SMP系統(tǒng)中,從名稱可以看出,MESI具有4個(gè)高速緩存狀態(tài)修改狀態(tài)(M)、專有狀態(tài)(E)、共享狀態(tài)(S)和無(wú)效狀態(tài)(I)。以下描述實(shí)現(xiàn)本發(fā)明的系統(tǒng)架構(gòu)。在上文所述的BET的基礎(chǔ)上,提出針對(duì)大型事務(wù)的改進(jìn)版本(BELT)。BELT需要支持同時(shí)多線程(SMT,simultaneousmulti-thread)的處理器。在以下的討論中,為了簡(jiǎn)化,假設(shè)處理器具有僅2個(gè)硬件線程。圖l示出本發(fā)明的簡(jiǎn)單系統(tǒng)結(jié)構(gòu),其中具有硬件線程SMTO和SMT1。當(dāng)然,也可以有多于2個(gè)硬件線程的情況。在系統(tǒng)中還包括處理器可訪問(wèn)的高速緩存和存儲(chǔ)器。這里的存儲(chǔ)器可以存儲(chǔ)鎖定表(以下將對(duì)其進(jìn)行詳細(xì)描述)等。此外,優(yōu)選地,還可以對(duì)每個(gè)硬件線程增加寫(xiě)簽名和讀簽名。這些簽名用于保存相應(yīng)的從高速緩存被替換出來(lái)的行的地址。所謂相應(yīng)是指緩存行的顏色標(biāo)簽等于線程ID。應(yīng)該注意,如果不存在溢出,則簽名為空。每個(gè)簽名是具有IK比特的布隆過(guò)濾器(bloomfilter),所述布隆過(guò)濾器實(shí)際上是一個(gè)很長(zhǎng)的二進(jìn)制向量和一系列隨機(jī)映射函數(shù),好處在于快速和省空間。簽名可具有以下操作1)向簽名中加入地址。2)檢查地址是否在簽名中。如果有,則命中;否則,失效。3)清除簽名(將所有比特設(shè)置為0)。當(dāng)事務(wù)結(jié)束(中止或提交)時(shí),硬件線程的簽名清除。在圖1中,每個(gè)處理器連接有至少4個(gè)寄存器。這些寄存器可由處理器中的所有硬件線程訪問(wèn)。這些寄存器包括事務(wù)地址寄存器(TAR)、事務(wù)數(shù)據(jù)寄存器(TDR)、事務(wù)ID寄存器(TIR)和事務(wù)運(yùn)行寄存器(TOR)等。TAR用于保存事務(wù)所讀取或?qū)懭氲臄?shù)據(jù)的物理地址。TDR用于保存來(lái)自高速緩存行的數(shù)據(jù),寄存器大小等于高速緩存行大小。在Power架構(gòu)中,為128B。在實(shí)際情況下,該寄存器可通過(guò)多個(gè)寄存器實(shí)現(xiàn)。TIR用于保存設(shè)置TOR(以下對(duì)其進(jìn)行詳細(xì)描述)的硬件線程ID。TOR用于保存事務(wù)操作代碼。在以下的表中列出代碼值。當(dāng)然,也可以包括用于存儲(chǔ)與事務(wù)相關(guān)的信息的其它寄存器。在本實(shí)施例中,TOR寄存器具有特別的特征。當(dāng)T0R為0PNO時(shí),讀取TOR的指令停止執(zhí)行該指令的硬件線程。停止意味著執(zhí)行流程停止對(duì)于該硬件線程的指令提取/解碼,并且不執(zhí)行讀取TOR的指令。在Power4和Power5架構(gòu)中,這個(gè)過(guò)程類(lèi)似于在數(shù)據(jù)高速緩存中失效(miss)的加載指令。該指令被拒絕,并且在一定次數(shù)的時(shí)鐘周期之后被再次發(fā)出,并重復(fù)該過(guò)程。當(dāng)T0R不是0P—N0時(shí),取消停止。如下表1示出操作代碼。表1<table>tableseeoriginaldocumentpage7</column></row><table>當(dāng)T0R不是0P—N0時(shí),TIR有效。僅當(dāng)TOR是數(shù)據(jù)操作時(shí),TAR有效。僅當(dāng)TOR是0P_WRITE或0P_0VERFL0W_WRITE時(shí),TDR有效。件實(shí)現(xiàn)過(guò)程。通過(guò)處理器中的2個(gè)硬件線程(SMT0和SMT1)調(diào)度一對(duì)軟件線程。應(yīng)該注意,如上所述可以是多個(gè)硬件線程,并且也可以是多個(gè)軟件線程。這里,為了與2個(gè)硬件線程對(duì)應(yīng),所以也僅假設(shè)有2個(gè)軟件線程。其中一個(gè)軟件線程稱為主軟件線程(即在SMTO上調(diào)度),以下簡(jiǎn)稱為主線程,其用于正常執(zhí)行事務(wù)。而另一個(gè)軟件線程稱為輔助軟件線程(即在SMT1上調(diào)度),以下簡(jiǎn)稱為輔助線程,其用于向主線程提供服務(wù),例如提供屏障功能。首先,需要建立主線程和輔助線程(步驟201)。然而,應(yīng)該注意,主線程和輔助線程可以在相同的處理空間中,也可以不在相同的處理空間中,這取決于不同因素的權(quán)衡結(jié)果。在本發(fā)明實(shí)施例的設(shè)計(jì)中,這兩個(gè)線程沒(méi)有在相同的處理空間中。主線程和輔助線程的執(zhí)行以粗粒度的方式交替。也就是說(shuō),在任意給定的適當(dāng)時(shí)刻僅有一個(gè)線程執(zhí)行。隨后,執(zhí)行主線程(步驟202)。在主線程的執(zhí)行期間,如果主線程遇到需要讀取/寫(xiě)入數(shù)據(jù)的事務(wù)加載/存儲(chǔ)操作,則判斷是否需要執(zhí)行屏障功能(步驟203)。圖4示出具體的判斷過(guò)程。如果需要屏障功能(步驟203為是),則表明需要利用本發(fā)明提出的多個(gè)硬件線程的配合來(lái)實(shí)現(xiàn)屏障功能。具體地,考慮到在任意給定時(shí)刻只能有一個(gè)線程在執(zhí)行,所以首先停止主軟件線程(步驟205)。然后,激活輔助線程以執(zhí)行屏障功能,由此實(shí)現(xiàn)從主線程到輔助線程的執(zhí)行切換(步驟206)。在輔助線程執(zhí)行所述屏障功能完成之后,輔助線程退出(步驟207)。在輔助線程執(zhí)行期間,輔助線程的功能對(duì)應(yīng)于傳統(tǒng)STM中的屏障所執(zhí)行的功能。在輔助線程退出之后,主線程繼續(xù)執(zhí)行,由此實(shí)現(xiàn)從輔助線程到主線程的執(zhí)行切換(步驟204)。如果不需要執(zhí)行屏障功能(如步驟203為否),則主線程正常執(zhí)行(步驟204),然后,判斷主線程是否結(jié)束,如果沒(méi)有結(jié)束(步驟208為否),則返回步驟203。否則(步驟208為是),結(jié)束主線程的執(zhí)行。如圖3示出主線程和輔助線程的實(shí)際執(zhí)行的程序圖。具體地,通過(guò)以下偽碼示出輔助線程實(shí)例。......while(true){op=read_TOR;//helperthreadisstalledbythisinstructionaddress=read—TPAR;//getthephysicaladdressthread_id=read_TCR;〃getthethreadIDswitch(op){caseOP_OVERFLOW_READ:/*addaddresstoin-memorypermissiontablewithreadpermission*/insert—read—permission(address,thread—id);break;caseOP_OVERFLOW_WRITE:/*addaddressanddatatoin-memorypermissiontablewithwritepermission*/8insert_write_permission(address,data,thread—id);break;case0P_TRANS_READ:/*searchthepermissiontabletodetectconflict*/if(conflict)abort_one_transaction;elseif(has_read_permission)donothing;elseif(has_write_permission)writethedataintocache.elseinsertanewentrytolocktable.break;case0P_TRANS_WRITE:data=read_TDR;/*searchthepermissiontabletodetectconflict*/if(conflict)abort_one_transaction;elseif(has_read_permission)upgradetowritepermission;elseif(has_write_permission)writedatatolocktableentry;elseinsertanewentrytolocktable.break;}}......在判斷是否需要執(zhí)行屏障功能的步驟203中,參照?qǐng)D4,示出根據(jù)本發(fā)明實(shí)施例的判斷是否需要執(zhí)行屏障功能的具體判斷過(guò)程。首先,判斷主線程要訪問(wèn)的數(shù)據(jù)是否命中高速緩存,即,判斷在高速緩存中是否包括主線程需要訪問(wèn)的數(shù)據(jù)。如果命中高速緩存,則主線程可以直接訪問(wèn)高速緩存,而不會(huì)發(fā)生沖突,因此不需要屏障功能(該過(guò)程類(lèi)似于BET)。如果沒(méi)有命中高速緩存,則在要寫(xiě)入數(shù)據(jù)時(shí),主線程判斷是否命中自身的寫(xiě)簽名;在要讀取數(shù)據(jù)時(shí),主線程判斷是否命中自身的讀簽名和寫(xiě)簽名。如果命中簽名,說(shuō)明當(dāng)前主線程曾經(jīng)訪問(wèn)過(guò)要訪問(wèn)的數(shù)據(jù),因此當(dāng)前主線程可以訪問(wèn)該數(shù)據(jù),而不會(huì)發(fā)生沖突,所以不需要屏障功能。否則,會(huì)存在兩種情況,一種是沒(méi)有命中高速緩存,并且沒(méi)有命中自身的簽名(即,在要寫(xiě)入數(shù)據(jù)時(shí),沒(méi)有命中自身的寫(xiě)簽名;在要讀取數(shù)據(jù)時(shí),沒(méi)有命中自身的讀簽名和寫(xiě)簽名),但是命中了其它線程的簽名(即,在要寫(xiě)入數(shù)據(jù)時(shí),命中其它線程的讀簽名或者寫(xiě)簽名;在要讀取數(shù)據(jù)時(shí),命中其它線程的寫(xiě)簽名);另一種是沒(méi)有命中高速緩存,也沒(méi)有命中簽名(即,在要寫(xiě)入數(shù)據(jù)時(shí),沒(méi)有命中任何讀簽名和寫(xiě)簽名;在要讀取數(shù)據(jù)時(shí),沒(méi)有命中任何寫(xiě)簽名)。第一種情況表示可能有其它主線程訪問(wèn)當(dāng)前主線程需要訪問(wèn)的數(shù)據(jù)(存在沖突),第二種情況表示沒(méi)有其它主線程和本線程沖突。這兩種情況下都需要執(zhí)行屏障功能。如果不需要執(zhí)行屏障功能,則主線程通過(guò)與BET情況類(lèi)似的高速緩存一致性協(xié)議檢測(cè)沖突。如果需要執(zhí)行屏障功能,則主線程需要利用上文中提及的寄存器與輔助線程進(jìn)行通信。圖5示出主線程和輔助線程的具體通信過(guò)程。首先,將事務(wù)加載/存儲(chǔ)所要讀取或?qū)懭氲臄?shù)據(jù)的物理地址復(fù)制到TAR(步驟501)。如果是事務(wù)存儲(chǔ),還需要將事務(wù)存儲(chǔ)所寫(xiě)入的數(shù)據(jù)復(fù)制到TDR(步驟502)。將線程ID復(fù)制到TIR(步驟503)。將TOR適當(dāng)?shù)卦O(shè)置為0P_TRANS_READ或0P_TRANS_WRITE(步驟504)。在設(shè)置了TOR之后,處理器切換到對(duì)輔助線程的執(zhí)行。如果需要屏障功能,則通過(guò)輔助線程執(zhí)行屏障功能。輔助線程通過(guò)檢索鎖定表來(lái)檢測(cè)沖突。優(yōu)選地,考慮到高速緩存空間有限,所以可以將鎖定表存儲(chǔ)在存儲(chǔ)器中,或者可以存儲(chǔ)在其它空間足夠大的存儲(chǔ)裝置中。在根據(jù)鎖定表檢測(cè)沖突的過(guò)程中,所述鎖定表的功能在于通過(guò)將當(dāng)前事務(wù)需要讀取或?qū)懭氲牡刂坊驍?shù)據(jù)信息填寫(xiě)到鎖定表中來(lái)實(shí)現(xiàn)對(duì)所填寫(xiě)的地址或數(shù)據(jù)信息的保護(hù)??紤]到對(duì)鎖定表的利用是本領(lǐng)域已知的,所以這里不再對(duì)其進(jìn)行詳細(xì)描述。在利用高速緩存存儲(chǔ)數(shù)據(jù)時(shí),可能會(huì)出現(xiàn)溢出的情況。當(dāng)在主線程中的事務(wù)溢出時(shí),將顏色標(biāo)簽等于主線程的線程ID的A高速緩存行替換出高速緩存。以下描述高速緩存控制器需要執(zhí)行的操作。1)將該高速緩存行的物理地址復(fù)制到TAR。2)如果A高速緩存行處于M狀態(tài),則將A高速緩存行中的數(shù)據(jù)復(fù)制到TDR。3)如果A高速緩存行處于M狀態(tài),將A高速緩存行的物理地址加入SMT0的寫(xiě)簽名中;否則,將物理地址加入SMTO的讀簽名中。4)將A高速緩存行的顏色標(biāo)簽復(fù)制到TIR。5)使得該高速緩存行無(wú)效。6)如果A高速緩存行處于M狀態(tài),將TOR設(shè)置為OP_OVERFLOW_WRITE,否則將TOR設(shè)置為OP_OVERFLOW_READ。7)最后,停止主線程,該步驟是可選的。當(dāng)然,各個(gè)步驟的具體順序不受到本實(shí)施例的限制,可以根據(jù)需要進(jìn)行修改。在檢測(cè)沖突的過(guò)程中,如果檢測(cè)到?jīng)_突,則輔助線程可執(zhí)行任意的競(jìng)爭(zhēng)管理策略中止發(fā)生沖突的事務(wù)。由于輔助線程是純軟件線程,所以對(duì)中止發(fā)生沖突的處理可以十分靈活。如果沒(méi)有檢測(cè)到?jīng)_突,則輔助線程執(zhí)行以下步驟。1)TOR是OP_TRANS_READa)如果主線程具有要讀取數(shù)據(jù)的物理地址的讀取許可,則輔助線程不執(zhí)行任何處理。b)如果主線程已經(jīng)具有對(duì)于該地址的寫(xiě)入許可,則輔助線程將該許可表中的數(shù)據(jù)和線程ID寫(xiě)入高速緩存行中,并設(shè)置A標(biāo)簽,隨后刷新在SMTO中的主線程的指令。c)如果輔助線程沒(méi)有找到與該地址對(duì)應(yīng)的許可表項(xiàng),則在鎖定表中插入新項(xiàng),以表示該線程具有讀取許可。2)TOR是OP_TRANS_WRITEa)如果主線程已經(jīng)具有對(duì)于該地址的讀取許可,則輔助線程將讀取許可升級(jí)為寫(xiě)入許可,然后輔助線程通過(guò)正常加載操作讀取存儲(chǔ)器塊(包含來(lái)自TAR的地址),并記錄在對(duì)應(yīng)的許可表項(xiàng)中的數(shù)據(jù)的塊,最后通過(guò)從TDR將數(shù)據(jù)寫(xiě)入該項(xiàng)并改變?cè)S可標(biāo)簽來(lái)更新該項(xiàng)。b)如果主線程已經(jīng)具有對(duì)該地址的寫(xiě)入許可,則輔助線程將數(shù)據(jù)從TDR寫(xiě)入對(duì)應(yīng)許可表項(xiàng)。c)如果輔助線程沒(méi)有找到與該地址對(duì)應(yīng)的許可表項(xiàng),則向鎖定表插入新項(xiàng),以表示該線程具有寫(xiě)入許可。當(dāng)輔助線程完成屏障功能操作時(shí),輔助線程退出,主線程繼續(xù)運(yùn)行,由此完成從輔助線程到主線程的切換。如上所述,主線程中執(zhí)行的事務(wù)可能被提交和中止。事務(wù)中止比較簡(jiǎn)單。主線程執(zhí)行回滾指令。具體操作如下1)停止主線程。2)將TIR設(shè)置為線程ID。3)將TOR設(shè)置為0P_AB0RT。4)當(dāng)輔助線程開(kāi)始運(yùn)行時(shí),刪除屬于主線程的許可表中的所有項(xiàng)。之后,主線程恢復(fù)。當(dāng)主線程恢復(fù)時(shí),使得高速緩存中所有對(duì)應(yīng)的A高速緩存行無(wú)效,并清除SMT0的簽名。主線程在提交事務(wù)時(shí),執(zhí)行以下步驟。1)主線程停止。2)將TIR設(shè)置為線程ID。3)將TOR設(shè)置為0P_C0MMIT。4)當(dāng)輔助線程開(kāi)始運(yùn)行時(shí),將推測(cè)數(shù)據(jù)寫(xiě)入高速緩存。之后,主線程恢復(fù)。在恢復(fù)指令之后的指令應(yīng)該清除屬于主線程的A高速緩存行中的所有A標(biāo)簽,并清除簽名。此外,在例如目前的處理器系統(tǒng)中,每個(gè)核心可以具有4個(gè)線程。在本發(fā)明的實(shí)施例中,可以僅使用一個(gè)輔助線程,其它的都用作主線程。輔助線程的成本并不是問(wèn)題。在未來(lái)的系統(tǒng)中,甚至可能出現(xiàn)更多個(gè)處理器核和硬件線程。如圖6示出多個(gè)處理器核和多個(gè)線程的情況實(shí)例。在這種情況下,可以通過(guò)與本發(fā)明中僅使用2個(gè)線程交互的類(lèi)似方法使得多個(gè)主線程與一個(gè)輔助線程交互運(yùn)行,從而可以實(shí)現(xiàn)相同的效果。因此,根據(jù)本發(fā)明實(shí)施例所提供的事務(wù)處理方法和系統(tǒng),可以在不需要加入屏障代碼的情況下,利用多個(gè)硬件線程之間的交互實(shí)現(xiàn)屏障功能,從而避免了重新編譯過(guò)程中帶來(lái)的麻煩,并且保證了在數(shù)據(jù)訪問(wèn)過(guò)程中對(duì)沖突的檢測(cè)。為了示意和說(shuō)明的目的,已經(jīng)提供了本發(fā)明的示意性實(shí)施例的上述說(shuō)明。它并不意味著窮盡或限制本發(fā)明公開(kāi)的準(zhǔn)確形式。根據(jù)上面的教導(dǎo),許多修改和變化都是可能的。這意味著本發(fā)明的保護(hù)范圍并不局限于這些詳細(xì)描述,而是由后面的權(quán)利要求書(shū)來(lái)確定。權(quán)利要求一種在支持同時(shí)多個(gè)硬件線程的處理器中執(zhí)行事務(wù)的方法,包括以下步驟建立用于執(zhí)行事務(wù)的主軟件線程和用于執(zhí)行屏障功能的輔助軟件線程,利用所述多個(gè)硬件線程執(zhí)行所述主軟件線程和所述輔助軟件線程;執(zhí)行所述主軟件線程;如果所述主軟件線程遇到需要讀取/寫(xiě)入數(shù)據(jù)的事務(wù)加載/存儲(chǔ)操作,則判斷是否需要執(zhí)行屏障功能;如果需要執(zhí)行屏障功能,則停止所述主軟件線程;激活所述輔助軟件線程以執(zhí)行所述屏障功能;響應(yīng)于所述輔助軟件線程執(zhí)行所述屏障功能完成,退出所述輔助軟件線程;以及繼續(xù)執(zhí)行所述主軟件線程。2.根據(jù)權(quán)利要求1的方法,在所述多個(gè)硬件線程的每個(gè)硬件線程中還包括寫(xiě)簽名和讀簽名,用于存儲(chǔ)所述主軟件線程曾經(jīng)讀取/寫(xiě)入的數(shù)據(jù)的物理地址。3.根據(jù)權(quán)利要求2的方法,其中判斷是否需要執(zhí)行屏障功能包括如果要讀取/寫(xiě)入的數(shù)據(jù)沒(méi)有命中高速緩存,并且要寫(xiě)入的數(shù)據(jù)沒(méi)有命中該線程的寫(xiě)簽名,或者要讀取的數(shù)據(jù)沒(méi)有命中該線程的讀簽名和寫(xiě)簽名,則需要執(zhí)行所述屏障功能。4.根據(jù)權(quán)利要求3的方法,還包括所述主軟件線程利用共享寄存器與所述輔助軟件線程進(jìn)行通信。5.根據(jù)權(quán)利要求4的方法,所述共享寄存器包括事務(wù)地址寄存器TAR,用于保存讀取/寫(xiě)入的數(shù)據(jù)的物理地址;事務(wù)數(shù)據(jù)寄存器TDR,用于保存來(lái)自高速緩存中的高速緩存行的數(shù)據(jù);事務(wù)運(yùn)行寄存器TOR,用于保存事務(wù)操作代碼;以及事務(wù)ID寄存器TIR,用于保存設(shè)置TOR的硬件線程ID。6.根據(jù)權(quán)利要求5的方法,其中所述主軟件線程利用共享寄存器與所述輔助軟件線程進(jìn)行通信包括將要讀取/寫(xiě)入數(shù)據(jù)的物理地址復(fù)制到TAR;在要寫(xiě)入時(shí)將要寫(xiě)入的數(shù)據(jù)復(fù)制到TDR;將硬件線程ID復(fù)制到TIR;以及根據(jù)要讀取/寫(xiě)入的狀態(tài)對(duì)應(yīng)地設(shè)置TOR的狀態(tài)。7.根據(jù)權(quán)利要求1的方法,其中所述輔助軟件線程執(zhí)行所述屏障功能包括所述輔助軟件線程通過(guò)檢索鎖定表來(lái)檢測(cè)沖突。8.根據(jù)權(quán)利要求7的方法,其中所述鎖定表存儲(chǔ)在存儲(chǔ)器中。9.根據(jù)權(quán)利要求7的方法,其中如果檢測(cè)到?jīng)_突,則所述輔助軟件線程根據(jù)管理策略中止發(fā)生沖突的事務(wù)。10.根據(jù)權(quán)利要求7的方法,其中如果沒(méi)有檢測(cè)到?jīng)_突,則所述輔助軟件線程執(zhí)行在要讀取數(shù)據(jù)時(shí),如果所述主軟件線程具有要讀取數(shù)據(jù)的物理地址的讀取許可,則所述輔助軟件線程不執(zhí)行任何處理;如果所述主軟件線程具有要讀取數(shù)據(jù)的物理地址的寫(xiě)入許可,則所述輔助軟件線程將所述鎖定表中的數(shù)據(jù)和硬件線程ID寫(xiě)入高速緩存行中;以及如果所述輔助軟件線程沒(méi)有在所述鎖定表中找到與要讀取數(shù)據(jù)的物理地址對(duì)應(yīng)的項(xiàng)目,則在所述鎖定表中插入新的項(xiàng)目,以表示所述主軟件線程具有讀取許可;在要寫(xiě)入數(shù)據(jù)時(shí),如果所述主軟件線程具有要寫(xiě)入數(shù)據(jù)的物理地址的讀取許可,則所述輔助軟件線程將所述讀取許可升級(jí)為寫(xiě)入許可,然后所述輔助軟件線程通過(guò)正常加載操作從TAR讀取與物理地址對(duì)應(yīng)的存儲(chǔ)器塊中的數(shù)據(jù),并在對(duì)應(yīng)的鎖定表的項(xiàng)目中記錄所讀取的數(shù)據(jù),從而進(jìn)行更新;如果所述主軟件線程具有要寫(xiě)入數(shù)據(jù)的物理地址的寫(xiě)入許可,則所述輔助軟件線程將對(duì)應(yīng)數(shù)據(jù)從TDR寫(xiě)入對(duì)應(yīng)的鎖定表的項(xiàng)目中;以及如果所述輔助軟件線程在所述鎖定表中沒(méi)有找到與要寫(xiě)入數(shù)據(jù)的物理地址對(duì)應(yīng)的項(xiàng)目,則向所述鎖定表插入新的項(xiàng)目,以表示所述主軟件線程具有寫(xiě)入許可。11.一種在支持同時(shí)多個(gè)硬件線程的處理器中執(zhí)行事務(wù)的系統(tǒng),包括用于建立用于執(zhí)行事務(wù)的主軟件線程和用于執(zhí)行屏障功能的輔助軟件線程,利用所述多個(gè)硬件線程執(zhí)行所述主軟件線程和所述輔助軟件線程的裝置;用于執(zhí)行所述主軟件線程的裝置;用于如果所述主軟件線程遇到需要讀取/寫(xiě)入數(shù)據(jù)的事務(wù)加載/存儲(chǔ)操作,則判斷是否需要執(zhí)行屏障功能的裝置;用于如果需要執(zhí)行屏障功能,則停止所述主軟件線程;激活所述輔助軟件線程以執(zhí)行所述屏障功能;響應(yīng)于所述輔助軟件線程執(zhí)行所述屏障功能完成,退出所述輔助軟件線程;以及繼續(xù)執(zhí)行所述主軟件線程的裝置。12.根據(jù)權(quán)利要求11的系統(tǒng),在所述多個(gè)硬件線程的每個(gè)硬件線程中還包括寫(xiě)簽名和讀簽名,用于存儲(chǔ)所述主軟件線程曾經(jīng)讀取/寫(xiě)入的數(shù)據(jù)的物理地址。13.根據(jù)權(quán)利要求12的系統(tǒng),還包括用于如果要讀取/寫(xiě)入的數(shù)據(jù)沒(méi)有命中高速緩存,并且要寫(xiě)入的數(shù)據(jù)沒(méi)有命中該線程的寫(xiě)簽名,或者要讀取的數(shù)據(jù)沒(méi)有命中該線程的讀簽名和寫(xiě)簽名,則需要執(zhí)行所述屏障功能的裝置。14.根據(jù)權(quán)利要求13的系統(tǒng),還包括共享寄存器,用于所述主軟件線程與所述輔助軟件線程之間的通信。15.根據(jù)權(quán)利要求14的系統(tǒng),所述共享寄存器包括事務(wù)地址寄存器TAR,用于保存讀取/寫(xiě)入的數(shù)據(jù)的物理地址;事務(wù)數(shù)據(jù)寄存器TDR,用于保存來(lái)自高速緩存中的高速緩存行的數(shù)據(jù);事務(wù)運(yùn)行寄存器TOR,用于保存事務(wù)操作代碼;以及事務(wù)ID寄存器TIR,用于保存設(shè)置TOR的硬件線程ID。16.根據(jù)權(quán)利要求11的系統(tǒng),還包括鎖定表,用于由所述輔助軟件線程檢測(cè)沖突。17.根據(jù)權(quán)利要求16的系統(tǒng),還包括所述至少一個(gè)處理器能夠訪問(wèn)的存儲(chǔ)器,用于存儲(chǔ)所述鎖定表。全文摘要一種在支持同時(shí)多線程的處理器中執(zhí)行事務(wù)的方法,包括建立用于執(zhí)行事務(wù)的主軟件線程和用于執(zhí)行屏障功能的輔助軟件線程,利用多個(gè)硬件線程執(zhí)行主軟件線程和輔助軟件線程;執(zhí)行主軟件線程;如果主軟件線程遇到需要讀取/寫(xiě)入數(shù)據(jù)的事務(wù)加載/存儲(chǔ)操作,則判斷是否需要執(zhí)行屏障功能;如果需要執(zhí)行屏障功能,則執(zhí)行以下步驟停止主軟件線程;激活輔助軟件線程以執(zhí)行屏障功能;在輔助軟件線程執(zhí)行屏障功能完成之后,退出輔助軟件線程;以及繼續(xù)執(zhí)行主軟件線程。由此,本發(fā)明利用多個(gè)硬件線程實(shí)現(xiàn)屏障功能,從而避免了重新編譯過(guò)程中帶來(lái)的麻煩,并且保證了在數(shù)據(jù)訪問(wèn)過(guò)程中對(duì)沖突的檢測(cè)。文檔編號(hào)G06F9/46GK101788922SQ20091000595公開(kāi)日2010年7月28日申請(qǐng)日期2009年1月22日優(yōu)先權(quán)日2009年1月22日發(fā)明者王華勇申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新兴县| 营山县| 溆浦县| 石林| 隆子县| 锡林郭勒盟| 贺州市| 吐鲁番市| 丰镇市| 大同县| 建宁县| 山西省| 景谷| 阿巴嘎旗| 东海县| 靖州| 文昌市| 新乡县| 左云县| 利辛县| 黑龙江省| 兴安盟| 浮山县| 杭州市| 广丰县| 永兴县| 宜州市| 砀山县| 常熟市| 武清区| 陕西省| 栾川县| 呼和浩特市| 神池县| 措美县| 千阳县| 屯昌县| 连江县| 高雄县| 固始县| 兰坪|