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

越過障礙的推測性執(zhí)行的制作方法

文檔序號:6570009閱讀:205來源:國知局

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