專利名稱::越過障礙的推測性執(zhí)行的制作方法越過障礙的推測性執(zhí)行有關(guān)申請的相互參照本申請涉及轉(zhuǎn)讓給本發(fā)明的受讓人、標(biāo)題為"LOCKELISIONWITHTRANSACTIONALMEMORY(采用事務(wù)存儲器的鎖定取消)"的序號xx/xxxxx的未決美國專利申請(AttomeyDocketNumber(律師記錄號)P22226)。
背景技術(shù):
:在M.Herlihy和J.Moss的"事務(wù)存儲器無鎖定數(shù)據(jù)結(jié)構(gòu)的體系結(jié)構(gòu)支持,,(Preceedingsofthe20thAnnualInternationalSymposiumonComputerArchitecture20,1993)(Heriihy和Moss)中描迷了通過硬件、使用事務(wù)存儲器對無鎖定共享數(shù)據(jù)結(jié)構(gòu)的事務(wù)支持。這種方法描述了對于實(shí)現(xiàn)這種無鎖定訪問的現(xiàn)有多處理器高速緩存一致性協(xié)議的一組擴(kuò)展。使用事務(wù)存儲器的事務(wù)在本文稱作事務(wù)存儲器事務(wù)或者無鎖定事務(wù)。障礙同步(barriersynchronization)是多線程編程、例如OpenMP系統(tǒng)中的一種常用范例。還可將障礙同步用于其它廣泛使用的并發(fā)編程系統(tǒng),包括基于以pthreads或Java實(shí)現(xiàn)的線程的系統(tǒng)。一般來說,并發(fā)計(jì)算中的障礙是多個(gè)線程或進(jìn)程共享的同步點(diǎn)。要讓多個(gè)線程越過障礙正確執(zhí)行,各線程4全驗(yàn)并發(fā)執(zhí)行的所有其它線程已經(jīng)到達(dá)障礙是充分的。當(dāng)使用障礙的線程集合中的所有線程已經(jīng)到達(dá)障礙時(shí),作為多線程程序的連續(xù)正確執(zhí)行的先決條件的某個(gè)謂詞4皮保證為真,因而程序執(zhí)行可在所有線程中繼續(xù)進(jìn)行。一般來說,通常結(jié)合計(jì)數(shù)器的同步變量由線程用來相互傳達(dá)它們已經(jīng)到達(dá)障礙。因此,對障礙變量的互斥訪問可在典型實(shí)現(xiàn)中在障礙上強(qiáng)制實(shí)行串行化點(diǎn),以及所有線程到達(dá)障礙之前,已經(jīng)到達(dá)障礙的各線程的有效執(zhí)行的掛起,因而可能降低性能。但是,由于對于越過障礙的任何其它線程的正確執(zhí)行,所有線程到達(dá)障礙是充分但不是必要條件,因此,在一些情況下,即使所有線程仍未全部到達(dá)障礙,線程也能夠越過障礙正確執(zhí)行。已經(jīng)提出涉及多線程程序和專用硬件的程序員修改的學(xué)術(shù)方法,作為提高障礙同步的性能的一種方式。例如參見RajivGupta的"模糊障礙處理器的高速同步的機(jī)制"(ProceedingsoftheThirdInternationalConferenceonArchitecturalSupportforProgrammingLanguagesandOperatingSystems(ASPLOSIII),第54-63頁,Boston,Massachusetts,1989年4月3-6日,ACMPress)。圖1示出一個(gè)實(shí)施例中的基于處理器的系統(tǒng)。圖2示出一個(gè)實(shí)施例中的處理。具體實(shí)施方式圖1示出基于處理器的系統(tǒng),它可包括耦合到總線110的一個(gè)或多個(gè)處理器105。或者,系統(tǒng)可具有作為多核處理器的處理器或者其它情況下的多個(gè)多核處理器。在一個(gè)簡單示例中,總線110可耦合到系統(tǒng)存儲器115、例如磁盤驅(qū)動器或其它存儲設(shè)備120等存儲設(shè)備、外圍設(shè)備145。存儲裝置120可存儲各種軟件或數(shù)據(jù)。系統(tǒng)可經(jīng)由一個(gè)或多個(gè)總線系統(tǒng)連接到各種外圍設(shè)備145。這類外圍設(shè)備還可包括顯示器和打印系統(tǒng),這是已知的。在一個(gè)實(shí)施例中,例如圖中所示的處理器系統(tǒng)添加事務(wù)存4諸系統(tǒng),它允許具有事務(wù)存儲系統(tǒng)中高速緩存的共享數(shù)據(jù)結(jié)構(gòu)的無鎖定事務(wù)的執(zhí)行,如Herlihy和Moss中所述。處理器105則可包括支持這種無鎖定或基于事務(wù)存儲器的事務(wù)的指令集體系結(jié)構(gòu)。在這樣一種體系結(jié)構(gòu)中,這個(gè)實(shí)施例中的系統(tǒng)支持指令集,包括開始事務(wù)的指令;正常提交和終止事務(wù)的指令;以及中止事務(wù)的指令。在事務(wù)中,推測性地訪問所有存儲單元,并緩沖所有存儲器更新。在事務(wù)期間,高速緩存一致性協(xié)議表明另一個(gè)線程是否正嘗試訪問同一個(gè)存儲單元。如果檢測到任何沖突,則產(chǎn)生可由中止處理程序進(jìn)行處理的中斷。在提交時(shí),推測性更新變?yōu)樵涌梢?。還可由于例如超額預(yù)訂硬件資源等其它原因和其它異常而終止事務(wù)執(zhí)行。圖l的系統(tǒng)只是一個(gè)示例,并且本發(fā)明不限于任何特定體系結(jié)構(gòu)。對于其它體系結(jié)構(gòu)的系統(tǒng)的特定組件的變更可包括包含事務(wù)存儲器,在一些情況下作為系統(tǒng)的處理器或多個(gè)處理器的組件;在其它情況不,它可以是連接到處理器的總線上的獨(dú)立組件。在其它實(shí)施例中,系統(tǒng)可具有管理無鎖定事務(wù)的附加指令。在其它實(shí)施例中,指令的實(shí)際形式或格式可能有所不同。可存在附加存儲器或存儲組件。大量其它變更是可能的。在一個(gè)典型的多線程程序中,可使用例如下表1所示的代碼序列來實(shí)現(xiàn)障礙同步。<table>tableseeoriginaldocumentpage7</column></row><table>表l在表1的代碼序列中,操作lockedlnc是互斥的增量操作,它使最初設(shè)置為零、作為由所有線程共享的障礙同步變量的變量barrierObject的字段mmiberThreadsAtBarrier遞增。此外,障礙變量的字段numberThreadsInTeam的值是多線程計(jì)算中的線程數(shù)量。從以上代碼序列可以看到,到達(dá)障礙的各線程首先使障礙變量遞增,然后在第6至第8行的自旋鎖循環(huán)(spinlockloop)中等待,直至所有線程到達(dá)障礙。這通過以下條件來表示barrierObject->numberThreadsAtBarrier!=barrierObject->numberThreadsInTeam變?yōu)檎?,這是在處于計(jì)算中的每一個(gè)線程已經(jīng)使字段numberThreadsAtBarrier遞增、固而表明它已經(jīng)到達(dá)障礙時(shí)。表l中的代碼序列表示通常實(shí)現(xiàn)的障礙同步。眾所周知,這種同步是昂貴的,因?yàn)槊恳粋€(gè)線程都需要訪問共享障礙變量barrierObject,它至少必須祐L依次訪問以便進(jìn)行遞增,此外還因?yàn)楦骶€程必須在自旋鎖循環(huán)中閑置和自旋,直到所有其它線程已經(jīng)4吏障礙變量遞增。[10]在無序機(jī)中,處理器可越過barrierWait中的枱r驗(yàn)來進(jìn)4亍內(nèi)部推測,并在障礙之后推測性地執(zhí)行程序指令。在這種推測期間,處理器還確保一致性;即,它確信沒有其它處理器或線程正在訪問它已經(jīng)訪問的同一個(gè)數(shù)據(jù)。但是,如果所有線程仍未全部到達(dá)障礙,則推測將在無序處理器中觸發(fā)分支誤預(yù)測異常,從而使所有推測性工作祐j文棄,并且處理器將回復(fù)到自旋鎖循環(huán)中的自旋狀態(tài)。[11]在一個(gè)實(shí)施例中,可使用事務(wù)存儲器的指令集體系結(jié)構(gòu)支持的屬性,將通過硬件支持事務(wù)存儲器的基于處理器的系統(tǒng)用于越過障礙進(jìn)行推測性地執(zhí)行。這在不支持無序執(zhí)行的處理器中實(shí)現(xiàn)越過同步障礙的推測性執(zhí)行。甚至在支持無序執(zhí)行的處理器中,這允許越過障礙的多線程程序的推測性執(zhí)行,而無需冒如上所述;^文棄無序處理器推測的風(fēng)險(xiǎn)。[12]圖2示出一個(gè)這種實(shí)施例中的處理。在該圖中,該處理根據(jù)事務(wù)存儲器來實(shí)現(xiàn)推測性障礙,在210開始。在220,例如通過檢查障礙同步變量,多線程程序首先檢查是否所有線程已經(jīng)到達(dá)障礙。由于這個(gè)動作是讀動作,所以它不需要是互斥的。如果所有線程已經(jīng)到達(dá)障礙,則無需推測性執(zhí)行,并且在230,正常執(zhí)行可繼續(xù)進(jìn)行,直到在295終止。[13]但是,如果所有線程仍未全部到達(dá)障礙,則程序越過障礙對于這個(gè)線程繼續(xù)開始推測性執(zhí)行。為了確保保護(hù)推測性執(zhí)行不受其它線程干擾,在240,程序調(diào)用指令來開始體系結(jié)構(gòu)所提供的基于事務(wù)存儲器的事務(wù)。然后,在255,它推測性地執(zhí)行程序的其余部分,直到在255^皮需要事務(wù)中止處理程序關(guān)注的外部事件中斷為止。在一種情況下,逸個(gè)外部事件是專用于事務(wù)存儲系統(tǒng)中的推測性執(zhí)行的硬件資源的耗盡。由于只有有限數(shù)量的硬件可用于事務(wù)存儲器支持、因而用于推測性執(zhí)行,因此最終將產(chǎn)生這種中斷。如上所述,在其它情況下,還有可能的是,由于推測中的數(shù)據(jù)誤差、例如使推測性執(zhí)行被折衷的線程之間的干擾而產(chǎn)生這個(gè)中斷。在各種情況下,在260,中斷將控制轉(zhuǎn)移到中止處理程序。應(yīng)當(dāng)注意,中斷只將控制轉(zhuǎn)移到該處理程序,并且在這里也不存在中止和回滾或者事務(wù)的提交。然后,在270由該中止處理程序接管。首先,處理程序確定調(diào)用它的中斷的原因。如果中斷事件只是專用于事務(wù)存儲器的硬件資源的耗盡,則仍未發(fā)生影響推測性計(jì)算的正確性的誤差。隨后,在280,通過讀取同步變量,處理程序檢查是否所有線程已經(jīng)到達(dá)障礙。如果在280,仍存在未到達(dá)障礙的線程,則線程必須在自旋鎖循環(huán)中等待,因?yàn)樵谶@里,用于推測的任一個(gè)硬件資源可能不再是可用的,或者可能已經(jīng)出現(xiàn)推測相關(guān)誤差;即,在任何情況下,沒有其它推測是可行的。一旦所有線程已經(jīng)到達(dá)該障礙,則可在290^t是交該事務(wù),并且在230,可繼續(xù)進(jìn)行正常執(zhí)行。在這里,所有先前的推測性執(zhí)行不再是推測性的,即,它變?yōu)橛行?,并且它的副作用是所有其它線程可見的。在該備選情況下,在270,結(jié)果可能是,由于推測中的實(shí)際誤差所創(chuàng)建的事件、例如不同線程對已經(jīng)由這個(gè)線程讀取的變量進(jìn)入寫入的嘗試,而調(diào)用中止處理程序。在這種情況下,推測需要被回滾。這通過在285中止事務(wù)并返回到220的過程開始處來進(jìn)行。該中止放棄所有推測性執(zhí)行,因?yàn)闆]有發(fā)生提交動作。在這里,線程當(dāng)然可再一次重試推測性l丸行。[14]應(yīng)當(dāng)注意,當(dāng)中止處理程序在280的循環(huán)中等待時(shí),可能發(fā)生其它數(shù)據(jù)沖突。這則會導(dǎo)致在270的處理程序的重入調(diào)用。如果重入調(diào)用由誤推測引起,則處理程序?qū)凑丈鲜龇绞竭M(jìn)行操作,并引起推測的回滾。[15]最后,推測性執(zhí)行或者常規(guī)執(zhí)行將會成功,并且將到達(dá)在230的越過障礙的正常執(zhí)行。[16]應(yīng)當(dāng)清楚地知道,圖2所示的處理只是一個(gè)實(shí)施例的處理。其它實(shí)施例可以有所不同。例如,在描述其它實(shí)施例時(shí),具體術(shù)語可能不同術(shù)語"線程"可由"進(jìn)程"取代,術(shù)語"程序,,由"計(jì)算,,取代,術(shù)語"中斷"由"陷阱(tmp)"取代,等等,這是本領(lǐng)域已知的。可改變所示的控制流程,以便在其它實(shí)施例由技術(shù)人員實(shí)現(xiàn)等效程序流程。許多這類變更是可能的。[17]表l和表l列示用于實(shí)現(xiàn)以上一般描述的推測性障礙的偽代碼。<table>tableseeoriginaldocumentpage11</column></row><table>表3[18]在表2中,示出在一個(gè)實(shí)施例中進(jìn)一步闡明由多線程程序進(jìn)行的處理的偽代碼。在第3-4行,代碼首先檢查它是否已經(jīng)處于某個(gè)其它臨界區(qū)之內(nèi),并且在情況是那樣時(shí)中止,從而在第4行退出。這是因?yàn)檎系K一般不應(yīng)當(dāng)在任何現(xiàn)有原子區(qū)域中出現(xiàn)。在第7行,程序判定(court)檢查這個(gè)程序是否已經(jīng)越過先前遇到的障礙進(jìn)行了^f麵測,在那種情況下,函數(shù)調(diào)用getSpeculativeBarrierDepth將返回值"真"。在這個(gè)特定情況不,其它推測性執(zhí)行是不可能的,因此,第8至18行的代碼一般執(zhí)行傳統(tǒng)的障礙變量測試和自旋鎖循環(huán),并在障礙上等待。在該代碼中,使用本領(lǐng)域已知的并稱作"戳記(epoch)"同步變量的特定類型的障礙同步變量。具體來說,在第10行,非事務(wù)代碼首先;l全查是否留下要進(jìn)入的其它線程。如果情況是這樣,則執(zhí)行第12行的自旋鎖循環(huán),直到障礙可用為止。如果在第10行,代碼檢測到它是要進(jìn)入障礙的最后一個(gè)線程,則它完成其障礙等待,并且可繼續(xù)進(jìn)行。[19]但是,如果第7行的代碼發(fā)現(xiàn)它先前沒有越過所遇到的障礙進(jìn)行推測,則代碼的事務(wù)階段可開始。可以注意到,表2中第21至38行的代碼大體上對應(yīng)于圖2的框220-260。如同非事務(wù)情況中那樣,第23行的代碼首先檢查是否留下要進(jìn)入障礙的其它線程。如果存在這類線程,則推測性事務(wù)開始。第24行的BeginTmnsaction調(diào)用是這個(gè)實(shí)現(xiàn)的下的事務(wù)存儲器體系結(jié)構(gòu)所提供的指令的包裝器(wrapper)。在這個(gè)實(shí)施例中,BeginTransaction調(diào)用在成功時(shí)產(chǎn)生特定代碼TransactionStarted。如果事務(wù)已經(jīng)正確開始,則代碼將關(guān)于這個(gè)障礙的存儲裝置(TLS)中。具體來說,在笫25至27行,代碼存儲這個(gè)特定線程已經(jīng)越過障礙進(jìn)行推測的事實(shí)、對障礙變量的引用以及檢查是否所有線程已經(jīng)命中障礙的戳記的引用。然后它在笫28行返回,這表示線程這時(shí)可繼續(xù)推測性地執(zhí)行,直到發(fā)生中止。另一方面,在第22行,這個(gè)函數(shù)可能發(fā)現(xiàn)它是嘗試進(jìn)入該障礙的最后一個(gè)線程。因此,推測性執(zhí)行不是必要的,并且代碼可以如同在第36至38行的正常非推測性情況中那樣返回。[20]表3示出這個(gè)實(shí)施例中的中止處理程序的偽代碼,它在來自表2的推測性事務(wù)代碼開始的事務(wù)期間所產(chǎn)生的事務(wù)存儲器相關(guān)事件的上下文中進(jìn)行操作。在已經(jīng)發(fā)生與事務(wù)存儲器相關(guān)的、需要這個(gè)處理程序關(guān)注的事件時(shí),事務(wù)存儲器硬件體系結(jié)構(gòu)將控制轉(zhuǎn)移到這個(gè)處理程序。一般來說,如前面所述,該事件可以是支持推測性l丸行而分配的硬件資源或事務(wù)存儲器資源的耗盡;不同的線程對于存儲單元的沖突訪問所引起的數(shù)據(jù)一致性4昔誤,這個(gè)進(jìn)程已經(jīng)對該存々者單元寫入或者這個(gè)進(jìn)程已經(jīng)從該存儲單元中推測性地讀??;或者與事務(wù)存儲器相關(guān)的某種其它外部錯(cuò)誤條件。表3中的偽代碼大體上對應(yīng)于圖2中的框270-290。表3中的處理程序在第3行首先確定將控制轉(zhuǎn)移到處理程序的中斷是由硬件資源耗盡還是由另一種錯(cuò)誤產(chǎn)生。如果該事件由與推測性執(zhí)行的正確性相關(guān)的錯(cuò)誤、如數(shù)據(jù)一致性錯(cuò)誤所引起,則在第3行的測試為真,并且處理程序在第4行,通過中止先前開始的事務(wù),來使推測性執(zhí)行中止并回滾。否則,推測性執(zhí)行成功,但這時(shí)處理程序需要等待其它線程完成,因?yàn)楫?dāng)沒有充分的資源用于進(jìn)一步推測時(shí),它可能不再推測性地進(jìn)行操作。為此,處理程序在第6和第7行分別恢復(fù)對障礙和戳記的引用,然后在笫8行使用它們在自旋鎖循環(huán)中等待,直到所有其它線程完成。一旦所有線程已經(jīng)到達(dá)障礙,則在第9行,處理程序提交這個(gè)線程開始的事務(wù),以及推測性進(jìn)行的所有改變在這時(shí)都是有效的,并且變?yōu)樵涌梢姟21]本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚地知道,上述表只是一個(gè)實(shí)施例中的示范性代碼段。在其它實(shí)施例中,實(shí)現(xiàn)語言可以是另一種語言、例如C或Java,所使用的變量名可能有所不同,并且所定義或調(diào)用的所有函數(shù)的名稱可能有所不同。實(shí)現(xiàn)以上列示的程序所完成功能的程序的結(jié)構(gòu)和邏輯可在不改變輸入和輸出關(guān)系的條件下任意改變,這是已知的。[22]為了便于說明,以上描述中闡述了大量具體細(xì)節(jié),以提供對所述實(shí)施例的充分理解,但是,本領(lǐng)域的技術(shù)人員會理解,即使沒有這些具體細(xì)節(jié)也可實(shí)施其它許多實(shí)施例。[23]以上詳細(xì)說明的某些部分根據(jù)對基于處理器的系統(tǒng)中的數(shù)據(jù)位的操作的算法和符號表示來提供。這些算法描述和表示是本領(lǐng)域的技術(shù)人員用來向本領(lǐng)域的其它技術(shù)人員最有效地傳達(dá)其工作主旨的方式。操作是要求物理量的物理處理的那些操作。這些量可釆取能夠3皮存儲、傳遞、組合、比較以及以其它方式處理的電、磁、光或其它物理信號的形式。主要為了一般使用的原因,將這些信號稱作位、值、元素、符號、字符、項(xiàng)、編號等,已經(jīng)證明有時(shí)非常便利。[24]但應(yīng)當(dāng)記住,所有這些及類似的項(xiàng)均與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),并且只是應(yīng)用于這些量的便捷標(biāo)簽。若沒有明確說明,則/人描述中清楚地知道,諸如"執(zhí)行,,或"處理"或"計(jì)算,,或者"確定"等術(shù)語可指基于處理器的系統(tǒng)或類似電子計(jì)算設(shè)備的動作和過程,其中所述基于處理器的系統(tǒng)或類似電子計(jì)算設(shè)備處理表示為基于處理器的系統(tǒng)的存儲裝置或者其它這類信息存儲、傳送或顯示設(shè)備中的物理量的數(shù)據(jù)并將其轉(zhuǎn)換為以類似方式表示的其它數(shù)據(jù)。[25]在實(shí)施例的描述中,參照了附圖。附圖中,相似的標(biāo)號在所有幾幅視圖中描述基本相似的組件。可采用其它實(shí)施例,并且可進(jìn)行結(jié)構(gòu)、邏輯和電氣改變。此外,大家要理解,各種實(shí)施例雖然有所不同,但不一定相互排斥。例如,在一個(gè)實(shí)施例中描述的特定功能、結(jié)構(gòu)或特性可包含在其它實(shí)施例中。[26]此外,在處理器中實(shí)現(xiàn)的一實(shí)施例的設(shè)計(jì)可經(jīng)過從創(chuàng)建到才莫擬直到制造的各種階段。表示設(shè)計(jì)的數(shù)據(jù)可通過多種方式來表示設(shè)計(jì)。首先,如在模擬中有用的那樣,硬件可采用硬件描述語言或者另一種功能描述語言來表示。另外,采用邏輯和/或晶體管門電路的電路級沖莫型可在設(shè)計(jì)過程的某些階段產(chǎn)生。此外,在某個(gè)階段,大部分設(shè)計(jì)達(dá)到表示硬件才莫型中的各種設(shè)備的物理設(shè)置的數(shù)據(jù)級。在采用傳統(tǒng)半導(dǎo)體制造技術(shù)的情況下,表示硬件才莫型的數(shù)據(jù)可以是指定用于生產(chǎn)集成電路的掩才莫的不同掩模層上的各種特征是否存在的數(shù)據(jù)。在該設(shè)計(jì)的任何表示中,數(shù)據(jù)可存儲在任何形式的機(jī)器可讀介質(zhì)中。經(jīng)調(diào)制或者以其它方式產(chǎn)生以便傳送這種信息的光或電波、存儲器或者^f茲或光存儲裝置、如盤可以是機(jī)器可讀介質(zhì)。這些介質(zhì)的任一種可"攜帶"或"表明"設(shè)計(jì)或軟件信息。在傳送表明或攜帶代碼或設(shè)計(jì)的電載波,達(dá)到執(zhí)行電信號的復(fù)制、緩沖或重傳時(shí),可能產(chǎn)生新的副本。因此,通信提供商或網(wǎng)絡(luò)提供商可能制作構(gòu)成或表示實(shí)施例的產(chǎn)品(載波)的副本。[27]實(shí)施例可作為程序產(chǎn)品來提供,該程序產(chǎn)品可包括其中存儲了數(shù)據(jù)的機(jī)器可讀介質(zhì),所述數(shù)據(jù)在由機(jī)器訪問時(shí)可使機(jī)器執(zhí)行根據(jù)要求權(quán)益的主題的過程。機(jī)器可讀介質(zhì)可包括但不限于軟盤、光盤、DVD-ROM盤、DVD-RAM盤、DVD-RW盤、DVD+RW盤、CD-R盤、CD-RW盤、CD-ROM盤以及磁光盤、ROM、RAM、EPROM、EEPROM、磁卡或光卡、閃存、或者適合于存儲電子指令的其它類型的^h質(zhì)/機(jī)器可讀^h質(zhì)。此外,實(shí)施例還可作為程序產(chǎn)品下載,其中程序可通過載波或其它傳播介質(zhì)中包含的數(shù)據(jù)信號、經(jīng)由通信鏈^各(例如調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)從遠(yuǎn)程數(shù)據(jù)源傳遞到請求設(shè)備。[28]以最基本的形式對許多方法進(jìn)行了描述,但可以在不背離要求權(quán)益的主題的基本范圍的前提下,對任何一個(gè)方法添加或刪除步驟,或者對任何一個(gè)所述消息添加或減少信息。本領(lǐng)域的技術(shù)人員非常清楚,可進(jìn)行許多其它修改和變更。具體實(shí)施例的提供不是要限制要求權(quán)益的主題,而是用于對該主題進(jìn)行說明。要求權(quán)益的主題的范圍不是由以上提供的具體實(shí)例來確定,而是僅由以下斥又利要求來確定。權(quán)利要求1.在多線程程序中,一種方法包括共享同步障礙的線程集合中的線程,向所述線程集合中的各個(gè)其它線程表明所述線程已經(jīng)到達(dá)所述同步障礙;在所述表明步驟之后,所述線程開始基于事務(wù)存儲器的事務(wù);以及在開始所述基于事務(wù)存儲器的事務(wù)之后,所述線程越過所述同步障礙繼續(xù)執(zhí)行。2.如權(quán)利要求l所述的方法,還包括如果所述線程已從所述集合中的各個(gè)其它線程接收到關(guān)于那些線程已經(jīng)到達(dá)所述同步障礙的指示,以及如果越過所述同步障礙的才丸行沒有引起數(shù)據(jù)一致性錯(cuò)誤,則所述線程提交所述基于事務(wù)存儲器的事務(wù)。3.如權(quán)利要求2所迷的方法,還包括如果越過所述同步障礙的執(zhí)行引起了數(shù)據(jù)一致性賴-溪,則所述線程中止所述事務(wù),并回滾越過所述同步障礙的執(zhí)行。4.如權(quán)利要求l所述的方法,其中,向所述線程集合中的各個(gè)其它線程表明所述線程已經(jīng)到達(dá)所述同步障礙的步驟還包括更新障礙變量。5.如權(quán)利要求3所迷的方法,其中,所述線程檢查所述線程是否已從所述集合中的各個(gè)其它線程接收到關(guān)于那些線程已經(jīng)到達(dá)所述同步障礙的指示的步驟還包括所述線程檢查所述障礙變量。6.如權(quán)利要求1所述的方法,其中,所述多線程程序是Java程序。7.如權(quán)利要求2所述的方法,其中,所述多線程程序是Java禾呈序。8.如權(quán)利要求1所述的方法,其中,所述多線程程序是pthreads程序。9.如權(quán)利要求2所述的方法,其中,所述多線程程序是pthreads程序。10.—種機(jī)器可讀介質(zhì),其上存儲了在由機(jī)器訪問時(shí)使所述機(jī)器執(zhí)行在多線程程序中的一種方法的數(shù)據(jù),所述方法包括共享同步障礙的線程集合中的線程,向所述線程集合中的各個(gè)其它線程表明所述線程已經(jīng)到達(dá)所述同步障礙;在所述表明步驟之后,所述線程開始基于事務(wù)存儲器的事務(wù);以及在開始所述基于事務(wù)存儲器的事務(wù)之后,所述線程越過所述同步障礙繼續(xù)執(zhí)行。11.如權(quán)利要求IO所述的機(jī)器可讀介質(zhì),其中,所述方法還包括如果所述線程從所述集合中的各個(gè)其它線程接收到關(guān)于它們已經(jīng)到達(dá)所述同步障礙的指示,以及如果越過所述同步障礙的執(zhí)行沒有引起數(shù)據(jù)一致性錯(cuò)誤,則所述線程提交所述基于事務(wù)存儲器的事務(wù)。12.如權(quán)利要求11所述的機(jī)器可讀介質(zhì),其中,所述方法還包括如果越過所述同步障礙的執(zhí)行引起了數(shù)據(jù)一致性錯(cuò)誤,則所述線程中止所述事務(wù),并回滾越過所述同步障礙的執(zhí)行。13.如權(quán)利要求IO所述的機(jī)器可讀介質(zhì),其中,向所述線程集合中的各個(gè)其它線程表明所述線程已經(jīng)到達(dá)所述同步障礙的步驟還包括更新障礙變量。14.如權(quán)利要求12所述的機(jī)器可讀介質(zhì),其中,所述線程檢查它是否已從所述集合中的各個(gè)其它線程接收到關(guān)于它已經(jīng)到達(dá)所述同步障礙的指示的步驟還包括所述線程檢查所述障礙變量。15.如權(quán)利要求IO所述的機(jī)器可讀介質(zhì),其中,所述多線程程序是Java程序。16.如權(quán)利要求11所述的機(jī)器可讀介質(zhì),其中,所述多線程程序是Java程序。17.如權(quán)利要求10所述的機(jī)器可讀介質(zhì),其中,所述多線程程序是pthreads禾呈序。18.如權(quán)利要求11所述的機(jī)器可讀介質(zhì),其中,所述多線程程序是pthreads程序。19.一種包括事務(wù)存儲器體系結(jié)構(gòu)的系統(tǒng),包括處理器,執(zhí)行程序,并且還可操作以發(fā)起基于事務(wù)存儲器的事務(wù);提交基于事務(wù)存儲器的事務(wù);以及中止基于事務(wù)存儲器的事務(wù);存儲器;事務(wù)存儲器體系結(jié)構(gòu);處理器,執(zhí)行所述存儲器中存儲的、共享同步障礙的線程集合中的線程,所述線程向所述線程集合中的各個(gè)其它線程表明所述線程已經(jīng)到達(dá)所述同步障礙;在所述表明步驟之后,發(fā)起基于事務(wù)存儲器的事務(wù);以及在開始所述基于事務(wù)存儲器的事務(wù)之后,越過所述同步障礙繼續(xù)執(zhí)行。20.如權(quán)利要求19所述的系統(tǒng),其中如果所述線程已從所述集合中的每個(gè)其它線程接收到關(guān)于它已經(jīng)到達(dá)所述同步障礙的指示,以及如果越過所述同步障礙的執(zhí)行沒有引起數(shù)據(jù)一致性錯(cuò)誤,則所述線程還將提交所述基于事務(wù)存儲器的事務(wù)。21.如權(quán)利要求20所述的系統(tǒng),其中,如果越過所述同步障礙的執(zhí)行引起了數(shù)據(jù)一致性錯(cuò)誤,則所述線程還將中止所述事務(wù),并回滾越過所述同步障礙的執(zhí)行。22.如權(quán)利要求19所述的系統(tǒng),其中,所述存儲器還包括DRAM。全文摘要在多線程程序中,共享同步障礙的線程集合中的線程向線程集合中的各個(gè)其它線程表明該線程已經(jīng)到達(dá)同步障礙,在表明之后,該線程開始基于事務(wù)存儲器的事務(wù),以及在開始基于事務(wù)存儲器的事務(wù)之后,該線程越過同步障礙繼續(xù)執(zhí)行。文檔編號G06F9/52GK101331456SQ200680047199公開日2008年12月24日申請日期2006年12月6日優(yōu)先權(quán)日2005年12月16日發(fā)明者A·阿德爾-塔巴塔拜,B·薩哈申請人:英特爾公司