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

具有高效的高速緩存支持的事務(wù)內(nèi)存系統(tǒng)的制作方法

文檔序號:6350277閱讀:176來源:國知局
專利名稱:具有高效的高速緩存支持的事務(wù)內(nèi)存系統(tǒng)的制作方法
具有高效的高速緩存支持的事務(wù)內(nèi)存系統(tǒng)
背景技術(shù)
本發(fā)明一般地涉及計算環(huán)境內(nèi)的處理,更具體地講,涉及一種具有對事務(wù)內(nèi)存的優(yōu)化支持的計算系統(tǒng)。當(dāng)前的多處理器和多線程計算系統(tǒng)允許單個軟件應(yīng)用的性能提升到單線程應(yīng)用的可能性能的許多倍。當(dāng)前的軟件和硬件系統(tǒng)提供執(zhí)行的多個線程的并行處理。軟件應(yīng)用能夠使用現(xiàn)有的線程庫(諸如,POSIX pthread庫),來控制并行執(zhí)行的多個線程的創(chuàng)建。多個線程的使用對于對容易分割的任務(wù)和數(shù)據(jù)進(jìn)行操作的應(yīng)用而言工作良好;可使用粗粒度鎖來控制對幾個共享的數(shù)據(jù)結(jié)構(gòu)的訪問以防止多個線程的數(shù)據(jù)更新之間的少有沖突。許多軟件應(yīng)用包含必須在多個線程之間共享的數(shù)據(jù)結(jié)構(gòu)并具有共享數(shù)據(jù)結(jié)構(gòu)的頻繁的并發(fā)檢查和更新。這些應(yīng)用需要另外的修改以便當(dāng)使用大量線程時獲得良好的調(diào)整。使用并發(fā)地訪問共享數(shù)據(jù)結(jié)構(gòu)的執(zhí)行的多個線程的應(yīng)用需要使用專門的數(shù)據(jù)加鎖例程以便產(chǎn)生沒有死鎖和崩潰數(shù)據(jù)的可靠結(jié)果。大多數(shù)這個類別的現(xiàn)有多線程應(yīng)用使用細(xì)粒度軟件鎖來實現(xiàn)良好的性能和正確的操作。編寫使用細(xì)粒度軟件鎖的高性能多線程程序是極為困難的并且需要專家級編程技能。軟件行業(yè)的這些技能的缺乏可能限制需要使用共享數(shù)據(jù)結(jié)構(gòu)的多線程應(yīng)用的生產(chǎn),并且因此限制針對某些應(yīng)用種類(包括許多形式的事務(wù)處理)的多線程和多處理器計算系統(tǒng)的效用。已提出并建立了各種“事務(wù)內(nèi)存”系統(tǒng)以提供更簡單的用于構(gòu)造需要控制對共享數(shù)據(jù)結(jié)構(gòu)的訪問的多線程應(yīng)用的編程模型。這些系統(tǒng)允許在執(zhí)行的一個線程上運行的軟件樂觀地假定能夠在與執(zhí)行的其它線程的訪問和更新沒有沖突的情況下更新共享數(shù)據(jù)結(jié)構(gòu)。 對內(nèi)存的推測性更新保持為“未決”,直至事務(wù)內(nèi)存系統(tǒng)確認(rèn)未發(fā)生與其它線程的存儲器訪問的沖突。當(dāng)檢測到多個線程的存儲訪問之間的沖突時,事務(wù)內(nèi)存系統(tǒng)必須能夠丟棄未決的推測性更新。

發(fā)明內(nèi)容
一個示例性實施例是一種由事務(wù)程序用來管理對第一線程的事務(wù)數(shù)據(jù)的共享內(nèi)存位置的內(nèi)存訪問的計算機實現(xiàn)的方法,所述共享內(nèi)存位置可由第一線程和第二線程訪問。該方法包括在計算系統(tǒng)執(zhí)行一串指令以完成第一線程的事務(wù),該事務(wù)開始于所述一串指令中的一個指令。在計算系統(tǒng)確定所述一個指令是否是與第一線程的事務(wù)關(guān)聯(lián)的指令的有效原子指令組(AIG)的一部分。定位一起提供AIG的處于有效模式的條目的高速緩存結(jié)構(gòu)和事務(wù)表。響應(yīng)于確定所述一個指令是有效AIG的一部分而執(zhí)行所述定位。條目包括存儲在高速緩存結(jié)構(gòu)中的舊數(shù)據(jù)狀態(tài)和存儲在事務(wù)表中的控制信息。被有效AIG的指令檢查或修改的所有存儲器位置保持為未決,直至計算系統(tǒng)指示應(yīng)該提交(commit)存儲器位置。 響應(yīng)于確定所述一個指令不是有效AIG的一部分,在普通執(zhí)行模式下在計算系統(tǒng)執(zhí)行下一指令。另一示例性實施例是一種由事務(wù)程序用來管理對第一線程的事務(wù)數(shù)據(jù)的共享內(nèi)存位置的內(nèi)存訪問的計算機程序產(chǎn)品,所述共享內(nèi)存位置可由第一線程和第二線程訪問。 該計算機程序產(chǎn)品包括可由處理電路讀取并存儲由處理電路為執(zhí)行一種方法而執(zhí)行的指令的有形存儲介質(zhì)。該方法包括執(zhí)行一串指令以完成第一線程的事務(wù),該事務(wù)開始于所述一串指令中的一個指令。確定所述一個指令是否是與第一線程的事務(wù)關(guān)聯(lián)的指令的有效 AIG的一部分。定位一起提供AIG的處于有效模式的條目的高速緩存結(jié)構(gòu)和事務(wù)表。響應(yīng)于確定所述一個指令是有效AIG的一部分而執(zhí)行所述定位。條目包括存儲在高速緩存結(jié)構(gòu)中的舊數(shù)據(jù)狀態(tài)和存儲在事務(wù)表中的控制信息。被有效AIG的指令檢查或修改的所有存儲器位置保持為未決,直至計算系統(tǒng)指示應(yīng)該提交存儲器位置。響應(yīng)于確定所述一個指令不是有效AIG的一部分,在普通執(zhí)行模式下執(zhí)行下一指令。另一示例性實施例是一種由事務(wù)程序用以在計算機系統(tǒng)中管理對第一線程的事務(wù)數(shù)據(jù)的共享內(nèi)存位置的內(nèi)存訪問的系統(tǒng),所述共享內(nèi)存位置可由第一線程和第二線程訪問。該系統(tǒng)包括計算機內(nèi)存和與計算機內(nèi)存通信的處理器。該處理器包括用于從內(nèi)存取回指令的指令取回元件和用于執(zhí)行取回的指令的一個或多個執(zhí)行元件。該計算機系統(tǒng)能夠執(zhí)行一種方法。該方法包括執(zhí)行一串指令以完成第一線程的事務(wù),該事務(wù)開始于所述一串指令中的一個指令。確定所述一個指令是否是與第一線程的事務(wù)關(guān)聯(lián)的指令的有效AIG的一部分。定位一起提供AIG的處于有效模式的條目的高速緩存結(jié)構(gòu)和事務(wù)表。響應(yīng)于確定所述一個指令是有效AIG的一部分而執(zhí)行所述定位。條目包括存儲在高速緩存結(jié)構(gòu)中的舊數(shù)據(jù)狀態(tài)和存儲在事務(wù)表中的控制信息。被有效AIG的指令檢查或修改的所有存儲器位置保持為未決,直至計算系統(tǒng)指示應(yīng)該提交存儲器位置。響應(yīng)于確定所述一個指令不是有效AIG 的一部分,在普通執(zhí)行模式下執(zhí)行下一指令。通過本發(fā)明的技術(shù)實現(xiàn)另外的特征和優(yōu)點。本文詳細(xì)描述本發(fā)明的其它實施例和方面并把它們視為要求保護(hù)的本發(fā)明的一部分。為了更好地理解本發(fā)明的優(yōu)點和特征,參照描述和附圖。


現(xiàn)在參照附圖,其中在幾個附圖中相似的元件具有相似的標(biāo)號圖1表示可由本發(fā)明的示例性實施例實現(xiàn)的具有優(yōu)化事務(wù)內(nèi)存的計算系統(tǒng);圖2表示可由示例性實施例實現(xiàn)的真實系統(tǒng)事務(wù)內(nèi)存表;圖3表示可由示例性實施例實現(xiàn)的加載處理流程;圖4表示可由示例性實施例實現(xiàn)的存儲處理流程;圖5表示可由示例性實施例實現(xiàn)的提交處理流程;圖6表示可由示例性實施例實現(xiàn)的回滾處理流程;圖7表示可由示例性實施例實現(xiàn)的專用指令和嵌套原子指令組(AIG)中使用的指令的AIG ;圖8表示顯示示例性實施例中的指令的解碼和執(zhí)行的流程的一般化流程圖;圖9表示可由示例性實施例實現(xiàn)的舊數(shù)據(jù)狀態(tài)存儲流程;以及圖10表示可由示例性實施例實現(xiàn)的計算機程序產(chǎn)品。
具體實施方式
本發(fā)明的示例性實施例涉及一種組合數(shù)據(jù)高速緩存結(jié)構(gòu)(例如,硬件緩沖器)與基于日志的結(jié)構(gòu)(例如,軟件表)以保持推測性事務(wù)數(shù)據(jù)的事務(wù)內(nèi)存系統(tǒng)。示例性實施例規(guī)定“舊數(shù)據(jù)狀態(tài)”存儲在高速緩存中并消除了把“舊數(shù)據(jù)狀態(tài)”移動到基于日志的結(jié)構(gòu)中的需要。然而,在數(shù)據(jù)高速緩存結(jié)構(gòu)不能存儲舊數(shù)據(jù)狀態(tài)(例如,它已滿)的情況下,示例性實施例規(guī)定把舊數(shù)據(jù)狀態(tài)存儲在基于日志的結(jié)構(gòu)中。示例性實施例提供一種計算系統(tǒng),該計算系統(tǒng)使用附加到真實系統(tǒng)內(nèi)存的每個增量的“事務(wù)專有”(PTRAN)標(biāo)簽、推測性加載和存儲的日志以及存儲與推測性加載和存儲關(guān)聯(lián)的舊數(shù)據(jù)狀態(tài)的數(shù)據(jù)高速緩存結(jié)構(gòu)的組合,提供事務(wù)內(nèi)存系統(tǒng)的改進(jìn)實現(xiàn)方式。示例性實施例使用以添加的標(biāo)記位用作PTRAN標(biāo)簽并與真實系統(tǒng)內(nèi)存的每個增量關(guān)聯(lián)的日志。提供硬件以快速檢測執(zhí)行的多個線程上運行的事務(wù)的存儲器訪問之間的沖突。當(dāng)與現(xiàn)有系統(tǒng)相比時,本發(fā)明的示例性實施例中所包括的內(nèi)存中的標(biāo)簽和關(guān)聯(lián)的沖突檢測硬件的使用以小得多的開銷提供了一種快得多的事務(wù)內(nèi)存系統(tǒng)。示例性實施例的復(fù)雜性低于以前在使用另外的高速緩存一致性狀態(tài)進(jìn)行沖突檢測方面的嘗試,對于具有大量處理器和關(guān)聯(lián)的互連的系統(tǒng)而言尤其如此。本發(fā)明的示例性實施例使用計算系統(tǒng)的高速緩存和主內(nèi)存陣列的組合來保持推測性數(shù)據(jù)(既包括舊數(shù)據(jù)狀態(tài)又包括控制信息)并且能夠支持非常長的事務(wù)。示例性實施例使用高速緩存存儲舊數(shù)據(jù)狀態(tài)并且使用主內(nèi)存陣列(這里也稱為主存儲器或主內(nèi)存)存儲事務(wù)和與推測性加載和存儲關(guān)聯(lián)的地址信息(例如,控制信息)。另外,主內(nèi)存陣列用于存儲不適合為舊數(shù)據(jù)狀態(tài)保留的高速緩存部分(例如,緩沖器)的任何溢出舊數(shù)據(jù)狀態(tài)。這里所使用的術(shù)語“舊數(shù)據(jù)狀態(tài)”是指在作為事務(wù)內(nèi)部的存儲指令的目標(biāo)的存儲器位置的原始非推測性數(shù)據(jù)。示例性實施例提供在沒有通常情況的長搜索過程的情況下檢查新的內(nèi)存訪問的地址的能力。同樣地,它是對僅使用軟件的事務(wù)內(nèi)存系統(tǒng)的改進(jìn),因為沖突檢測和內(nèi)存中的標(biāo)簽的使用消除了與跟蹤事務(wù)的推測性狀態(tài)關(guān)聯(lián)的一些軟件開銷。與跟蹤可能為幾百或幾千字節(jié)的整個軟件對象的更新的現(xiàn)有技術(shù)軟件系統(tǒng)相比,它還提供以非常精細(xì)的水平(下至單個字節(jié))檢測存儲器沖突的能力。當(dāng)嘗試跟蹤對軟件對象的個體組成部分的更新時,現(xiàn)有軟件系統(tǒng)將會給出潛在數(shù)據(jù)沖突的頻繁的過度指示或者引起非常大的軟件路徑長度的不利后果。通過提供用于存儲舊數(shù)據(jù)狀態(tài)的高速緩存位置,實現(xiàn)了消除對主內(nèi)存進(jìn)行讀寫所需的帶寬的另一優(yōu)點。如美國專利號7,536,517(以下,“’ 517專利”)所示已提出事務(wù)內(nèi)存系統(tǒng),該專利教導(dǎo)使用與已由事務(wù)訪問的內(nèi)存位置關(guān)聯(lián)的軟件征募(enlistment)記錄?!?17專利中描述的系統(tǒng)也使用“征募記錄”中的“版本值”?!?17專利的圖3包括操作“定位內(nèi)存位置的征募記錄”。描述圖3的文本給出征募記錄的例子,該征募記錄是在引用的內(nèi)存地址的軟件對象的一部分并且是使用“軟件事務(wù)內(nèi)存接口”創(chuàng)建的?!?17專利使用與每個征募記錄關(guān)聯(lián)的版本號并且需要處理版本號超過由征募記錄支持的最大編號的情況。事后來看,在學(xué)習(xí)本發(fā)明的示例性實施例的細(xì)節(jié)之后,將會認(rèn)識到,不需要事務(wù)內(nèi)存系統(tǒng)的最近發(fā)展的這些特征并且能夠改進(jìn)這些特征。早先,現(xiàn)在說在很久以前,如David A. Wood在他的標(biāo)題為“An Overview of Hardware Alternatives,,的文章(Transactional Memory Workshop, 2005 年 4 月 8 日) 中總結(jié)的快步調(diào)的計算系統(tǒng)發(fā)展的發(fā)展中所指出的,正是IBM的Chang和Mergen(在801Storage Architecture and Programming中描述)提出使用與虛擬內(nèi)存的每段關(guān)聯(lián)的加鎖位。他們的系統(tǒng)提供了檢測多個線程對存儲器位置的并發(fā)訪問的能力,但在事務(wù)加鎖機構(gòu)變?yōu)橛行r限制在任何單個虛擬內(nèi)存段上能夠操作的并發(fā)線程的總數(shù)。Chang和 Mergen執(zhí)行并發(fā)線程所需的大虛擬內(nèi)存頁表對使用虛擬內(nèi)存執(zhí)行的所有線程施加了性能上的不利后果,而非僅對執(zhí)行事務(wù)的線程施加了性能上的不利后果,因此Chang和Mergen 的建議變?yōu)楝F(xiàn)有技術(shù)中的趣聞,如Woods所說“好像沒有人看見他們學(xué)到了什么”。本發(fā)明的示例性實施例結(jié)合數(shù)據(jù)高速緩存結(jié)構(gòu)使用不同于該系統(tǒng)的虛擬內(nèi)存頁表的“事務(wù)表”存儲與推測性加載和存儲關(guān)聯(lián)的信息。Woods并不知道,在Chang和Mergen IBM Yorktown設(shè)施中,存在正在進(jìn)行的與事務(wù)內(nèi)存系統(tǒng)相關(guān)的實驗室開發(fā),包括于2005年6月20日提交的標(biāo)題為“Architecture Support of Best-Effort Atomic Transactions for Multiprocessor Systems,,的美國專利No. 7,350,034 (以下,“’ 034專利”)中描述的內(nèi)存系統(tǒng)。‘034專利描述了一種致力于使用“高速緩存作為用于由原子事務(wù)訪問的數(shù)據(jù)的緩沖器”的事務(wù)內(nèi)存系統(tǒng)?!?34專利教導(dǎo)在系統(tǒng)檢測到“緩沖器溢出”時強制使事務(wù)失敗,而未提出處理從高速緩存逐出推測性數(shù)據(jù)的情況。如果太多的事務(wù)加載或存儲以同一高速緩存同余類為目標(biāo),則將會導(dǎo)致緩沖器溢出。從高速緩存溢出并失敗的事務(wù)的百分比將會與事務(wù)中包含的加載和存儲的數(shù)量成比例。長事務(wù)將會更頻繁地失敗。已提出使用高速緩存實現(xiàn)沖突檢測方案并且捕捉從高速緩存溢出的推測性數(shù)據(jù)的其它系統(tǒng)。本發(fā)明的示例性實施例并不主要依賴于數(shù)據(jù)高速緩存狀態(tài)進(jìn)行沖突檢測。 所要求的專門高速緩存狀態(tài)使復(fù)雜性不希望地增加并且還使得難以把所需的檢測和隔離機制添加到現(xiàn)有多處理器高速緩存一致性設(shè)計。然而,除了 ‘034專利中描述的方案之夕卜,存在眾多已進(jìn)行的、利用高速緩存的嘗試。一種方法是使用“像前日志(before-image log)”和高速緩存一致性狀態(tài)來實現(xiàn)沖突檢測方案。另一種方法由Ananian等人在他們的標(biāo)題為"Unbounded Transactional Memory,,的論文(Research Abstracts 2006, CSAILPublications and Digital Archive)中描述,該論文描述了一種使用單個“未排序線性陣列數(shù)據(jù)結(jié)構(gòu)”捕捉從數(shù)據(jù)高速緩存溢出的推測性數(shù)據(jù)的事務(wù)內(nèi)存系統(tǒng)。他們對每個高速緩存組使用一個額外的位,即,使用“0”位指示該組是否已“溢出”,并且對每個高速緩存條目使用另一位,即,使用“T”位指示該條目保持推測性數(shù)據(jù)。該線性陣列數(shù)據(jù)結(jié)構(gòu)提供支持更長的事務(wù)的能力,但它不提供本發(fā)明的示例性實施例的快速檢測能力。需要針對以“溢出”的組為目標(biāo)的任何高速緩存訪問,搜索Ananian的線性陣列。這對于引起許多溢出的事務(wù)將是較長的過程。Rajwar、Herlihy和Lai在他們的標(biāo)題為“Virtualizing Transactional Memory"(2005IEEE)中采用了與 Ananian 相似的方法。Rajwar 等人也使用數(shù)據(jù)高速緩存作為用于跟蹤與事務(wù)關(guān)聯(lián)的推測性狀態(tài)的主要機構(gòu)。被迫離開高速緩存的推測性數(shù)據(jù)被移至虛擬內(nèi)存中的事務(wù)地址數(shù)據(jù)表(XADT)溢出區(qū)域。與作為XADT的一部分的地址的可能沖突的檢測需要對XADT的緩慢線性搜索。Rajwar描述使用過濾器來消除這些搜索中的一些,但存在許多仍然需要進(jìn)行搜索的情況。除了以上總結(jié)的本領(lǐng)域中的發(fā)展以外,已提出許多軟件接口和指令集修改以支持事務(wù)內(nèi)存。論文 “Architectural Semantics for Practical Transactional Memory” (McDonald 等人,Computer Systems Laboratory, Stanford University, 2006)比
6較了一些提議并提供了許多其它提議的參考,并且通過引用將其全部內(nèi)容包括在本文中。已提出許多軟件接口和指令集修改以支持事務(wù)內(nèi)存。本發(fā)明的示例性實施例可以結(jié)合它們中的任一種使用以便提供高性能事務(wù)內(nèi)存操作,而不會引起硬件或軟件復(fù)雜性的較大增加。針對IBMpowerpc 架構(gòu)描述了示例性實施例,但任何本領(lǐng)域技術(shù)人員能夠把相同的方法應(yīng)用于任何其它架構(gòu),諸如具有P3、P4、P5處理器的IBM的zSeries 、IBM的 pSeries ,甚至ibm的系統(tǒng)38及其As/400 能夠使用本發(fā)明的示例性實施例的支持,其它計算機系統(tǒng)(諸如,SunMicrosystems的SPARC 和Intel IA-32等)也是如此。任何本領(lǐng)域技術(shù)人員可擴展示例性實施例,以與可能為其它專用版本的事務(wù)內(nèi)存實現(xiàn)方式創(chuàng)建的其它應(yīng)用編程接口(API) —起使用。本發(fā)明的示例性實施例使用與所有內(nèi)存位置(而非僅僅當(dāng)前作為有效事務(wù)的一部分的內(nèi)存位置)關(guān)聯(lián)的一個或多個硬件位。與使用‘517專利中描述的過程能夠獲得的事務(wù)執(zhí)行相比,示例性實施例使用添加的一個或多個硬件位提供快得多的事務(wù)執(zhí)行。示例性實施例結(jié)合用于優(yōu)化內(nèi)存使用的作為日志的改進(jìn)事務(wù)表,使用數(shù)據(jù)高速緩存結(jié)構(gòu)保持舊數(shù)據(jù)狀態(tài),并提供使用比由像‘517專利中描述的系統(tǒng)一樣的其它系統(tǒng)將會使用的內(nèi)存少的內(nèi)存的系統(tǒng),但示例性實施例仍能夠執(zhí)行為這些其它系統(tǒng)開發(fā)的應(yīng)用。示例性實施例為每個存儲器增量提供一個或多個PTRAN位。在當(dāng)前實施例中不需要“定位"PTRAN位的間接方法。示例性實施例提供潛在沖突的快得多的指示,因為PTRAN位是要標(biāo)記的內(nèi)存位置的可直接尋址部分。示例性實施例不需要諸如在‘517專利中描述的接口,并通過使用硬件和固件更新并重置PTRAN位實現(xiàn)它的益處。雖然根據(jù)需要可以提供直接接口,但示例性實施例不要求應(yīng)用軟件知道PTRAN位的狀態(tài)。示例性實施例還針對短的提交處理時間進(jìn)行了優(yōu)化。示例性實施例不要求使用每個存儲器位置的版本號。示例性實施例的優(yōu)點在于它使用不同于系統(tǒng)的虛擬內(nèi)存頁表的“事務(wù)表”。這使非常大的事務(wù)能夠被處理并提供下至單個字節(jié)的沖突檢測。示例性實施例對能夠同時訪問同一虛擬內(nèi)存段中的內(nèi)存位置的并發(fā)線程的數(shù)量沒有限制。示例性實施例對物理內(nèi)存地址(或真實地址)執(zhí)行沖突檢測并僅在這個沖突檢測的粒度限制同時訪問。這個粒度能夠針對示例性實施例的各種實現(xiàn)方式而不同,但將典型地為字節(jié)的數(shù)量級。如果Chang和 Mergen系統(tǒng)嘗試使用大量并發(fā)線程,則該系統(tǒng)不能在不使用極大虛擬頁表格式并因此引起性能不利后果的情況下提供類似的益處。本發(fā)明的示例性實施例不施加這種性能不利后果。示例性實施例的另一優(yōu)點在于與推測性加載和存儲關(guān)聯(lián)的舊數(shù)據(jù)狀態(tài)被存儲在位于高速緩存中的數(shù)據(jù)高速緩存結(jié)構(gòu)中,因此節(jié)省了把舊數(shù)據(jù)狀態(tài)移至事務(wù)表所需的任何帶寬和時鐘周期。如果該數(shù)據(jù)高速緩存結(jié)構(gòu)變滿,則舊數(shù)據(jù)狀態(tài)被存儲在作為數(shù)據(jù)高速緩存結(jié)構(gòu)的后備的事務(wù)表中?,F(xiàn)在更詳細(xì)地參照附圖,將會看到,在圖1中,存在表示本發(fā)明的示例性實施例的計算系統(tǒng),該計算系統(tǒng)具有經(jīng)由互連元件(110)耦接到物理內(nèi)存陣列(120)的一個或多個微處理器(100,101,102)。微處理器(100,101,102)包括高速緩存104 (在本文也稱為“高速緩沖存儲器”)并且高速緩存104包括用于存儲與事務(wù)關(guān)聯(lián)的舊數(shù)據(jù)狀態(tài)的高速緩存結(jié)構(gòu)106。在示例性實施例中,高速緩存結(jié)構(gòu)106是包含32個高速緩存行的硬件緩沖器??捎墒纠詫嵤├龑崿F(xiàn)其它高速緩存結(jié)構(gòu)和高速緩存行數(shù),并且可基于諸如應(yīng)用和系統(tǒng)要求的準(zhǔn)則選擇其它高速緩存結(jié)構(gòu)和高速緩存行數(shù)。物理內(nèi)存陣列存儲與真實系統(tǒng)內(nèi)存的每個增量關(guān)聯(lián)的PTRAN標(biāo)簽(122)和事務(wù)數(shù)據(jù)(121)?;ミB元件(110)能夠?qū)崿F(xiàn)為共享總線或縱橫開關(guān)。示例性實施例適用于使用把物理內(nèi)存互連到可實現(xiàn)于一個或多個芯片中的多處理器系統(tǒng)的任何其它方案的系統(tǒng)。內(nèi)存能夠被分成更小的部分并且跨每個中央處理單元 (CPU)芯片的專有連接分布,如同針對使用POWER4 微處理器的一些IBM系統(tǒng)或者針對基于Amdahl的AMDOpteron 的服務(wù)器所做的那樣。微處理器和內(nèi)存控制器可一起位于單個硅芯片上或者它們可以散布在多個芯片上。計算系統(tǒng)的物理內(nèi)存被分成η個增量。為η個增量中的每個增量提供與真實系統(tǒng)內(nèi)存的每個增量關(guān)聯(lián)的一個或多個(PTRAN)位。示例性實施例允許選擇任何內(nèi)存增量大小并且最好的選擇將取決于工作負(fù)荷特性、硬件成本和目標(biāo)系統(tǒng)中使用的數(shù)據(jù)高速緩存結(jié)構(gòu)。在示出的實施例中使用16字節(jié)的增量。PTRAN位用于指示內(nèi)存中的數(shù)據(jù)條目是否是系統(tǒng)中當(dāng)前有效的未提交事務(wù)的推測性內(nèi)存狀態(tài)的一部分。如圖7的嵌套AIG代碼序列表示的特殊新指令(BEGIN_AIG,END_AIG)用于標(biāo)記一組指令的開始和結(jié)束。在特殊新指令之間執(zhí)行的指令被稱為由圖7中顯示的“原子指令組”(AIG)指令(指令A(yù)0,指令A(yù)l,指令A(yù)2)表示的AIG。當(dāng)處理器在執(zhí)行作為AIG的一部分的指令時,使用另外的存儲器訪問規(guī)則。以原子方式在內(nèi)存中更新被AIG指令組修改的所有存儲器位置。對存儲器位置的更新保持為“未決”,直至處理器和/或軟件應(yīng)用指示它們應(yīng)該被“提交”。所有的更新或者被一次性提交給“普通”內(nèi)存或者它們被丟棄。當(dāng)硬件和 /或軟件檢測到多處理器系統(tǒng)中并發(fā)執(zhí)行的多個AIG的存儲器訪問之間的沖突時,結(jié)果被丟棄。示例性實施例為硬件提供快速檢測多個AIG的存儲器訪問之間的潛在沖突的方法。 雖然示例性實施例使用特殊新指令來標(biāo)記事務(wù)的邊界,但任何其它方法能夠用于識別要以原子方式更新的一組內(nèi)存位置。示例性實施例與可用于實現(xiàn)事務(wù)內(nèi)存系統(tǒng)的任何數(shù)量的軟件接口兼容。示例性實施例能夠為嘗試提供多個存儲器位置的原子更新的任何系統(tǒng)提供相同的快速沖突檢測。示例性實施例還適用于以任何其它方式標(biāo)記指令組的邊界的系統(tǒng),包括編譯器產(chǎn)生的附加到其它指令的提示、由內(nèi)部微碼或毫碼產(chǎn)生的內(nèi)部微處理器命令。PTRAN標(biāo)簽(122)是為由作為AIG的一部分的指令產(chǎn)生的所有內(nèi)存訪問設(shè)置的、與內(nèi)存中的增量關(guān)聯(lián)的一個或多個位。處理器在嘗試設(shè)置位之前檢查這個位;這能夠?qū)崿F(xiàn)快速檢測與在其它線程上并發(fā)執(zhí)行的其它AIG的潛在沖突。該位的設(shè)置可通過IBM ζ/架構(gòu)的“測試并置位”(TS)操作或能夠?qū)崿F(xiàn)多線程或多處理器系統(tǒng)中的原子更新的任何其它等效操作完成?,F(xiàn)在參照圖2,將會看見,創(chuàng)建事務(wù)表(230,231)作為在這里作為物理內(nèi)存(120) 示出的真實系統(tǒng)內(nèi)存(220)(在本文也稱為“主存儲器”)的一部分。也能夠在邏輯或虛擬內(nèi)存中創(chuàng)建事務(wù)表(230,231)。能夠使用把邏輯系統(tǒng)內(nèi)存映射到物理系統(tǒng)內(nèi)存的任何系統(tǒng),并且在現(xiàn)有技術(shù)中已知許多能夠使用的例子,諸如IBM zSeries、IBM pSeries、Sun Microsystems的SPARC、Intel的IA-32等中的例子。當(dāng)作為AIG的一部分的指令引起內(nèi)存位置被檢查或更新時,制作事務(wù)表條目。線程標(biāo)識符(203,213)與每個事務(wù)表(230,231) 關(guān)聯(lián)。下一條目寄存器(202,212)用作事務(wù)表(230,231)的索引并指示接下來應(yīng)該寫哪個條目。表起點(201,211)指示事務(wù)表(230,231)針對其線程(203,213)的第一個條目的地址。事務(wù)表(230,231)用于保持除了與已被檢查或更新的內(nèi)存位置關(guān)聯(lián)的PTRAN標(biāo)簽位所關(guān)聯(lián)的簡單信息之外的附加信息。這種附加信息和與AIG關(guān)聯(lián)的推測性狀態(tài)相關(guān)。在本文描述的示出的IBM zSeries或pSeries CPU(100,101,102)實施例中,使用單個PTRAN位。 在這種情況下,事務(wù)表(230,231)和高速緩存結(jié)構(gòu)(106)的組合將包含關(guān)于推測性狀態(tài)的所有附加信息(例如,該組合將包含AIG的處于有效模式的條目),因此該PTRAN位將僅指示物理地址被包括在AIG中。這針對事務(wù)表A(230)被示出為地址(240)、事務(wù)信息標(biāo)識符 (241)和舊或新數(shù)據(jù)(242)。如本文所述,如果高速緩存結(jié)構(gòu)(106)不能存儲舊數(shù)據(jù),則事務(wù)表A(230)僅包含舊數(shù)據(jù)。這在高速緩存結(jié)構(gòu)(106)變滿時可能發(fā)生。以這種方式,事務(wù)表A(230)用作用于存儲舊數(shù)據(jù)狀態(tài)的高速緩存結(jié)構(gòu)(106)的后備。其它實施例可使用能夠由硬件或軟件使用的另外的PTRAN位以加速AIG或任何其它事務(wù)內(nèi)存系統(tǒng)的推測性狀態(tài)的處理中涉及的某些事件的處理。僅在內(nèi)存中使用單個位和使該位和與高速緩存結(jié)構(gòu)組合的事務(wù)表中的事務(wù)狀態(tài)的更完整的描述相關(guān)聯(lián)的組合提供了這樣一種事務(wù)內(nèi)存系統(tǒng)它需要非常少的硬件開銷,不會引起現(xiàn)有技術(shù)軟件事務(wù)內(nèi)存系統(tǒng)中看到的性能不利后果。再次參照圖2,將會看見,例如事務(wù)表A (230)中的條目包括已在AIG內(nèi)部檢查或更新的地址(240)、事務(wù)信息字段(241)和數(shù)據(jù)字段(242)。作為AIG的一部分的存儲指令將會使系統(tǒng)針對該地址把“舊”數(shù)據(jù)值、舊數(shù)據(jù)狀態(tài)從原始存儲器位置復(fù)制到高速緩存結(jié)構(gòu) (106),并且新的推測性數(shù)據(jù)放置在主存儲器位置(例如,物理內(nèi)存(120))中。如果高速緩存結(jié)構(gòu)(106)不能存儲舊數(shù)據(jù)狀態(tài),則它在事務(wù)表中被存儲在數(shù)據(jù)字段(242)中。如果需要,可以使示例性實施例與高速緩存結(jié)構(gòu)(106)中保持的新值一起工作。 把舊數(shù)據(jù)值放置在高速緩存結(jié)構(gòu)(106)中允許針對大多數(shù)事務(wù)成功的情況優(yōu)化系統(tǒng)。通過改變高速緩存結(jié)構(gòu)(106)的指針或者通過清除高速緩存結(jié)構(gòu)(106)的內(nèi)容,當(dāng)事務(wù)被永久地提交給內(nèi)存時,在不再需要舊數(shù)據(jù)時能夠快速地丟棄舊數(shù)據(jù)。事務(wù)表條目的事務(wù)信息字段241包括詳細(xì)決定引起事務(wù)失敗的需要所需的任何事務(wù)信息。還提供附加信息以允許對嵌套事務(wù)、虛擬化事務(wù)或事務(wù)內(nèi)存架構(gòu)的其它擴展的高效支持。在示例性實施例中,事務(wù)信息字段(241)包括這樣的指示關(guān)聯(lián)地址(240)的存儲訪問是加載型訪問還是存儲型訪問。 事務(wù)信息字段(240)還能夠指示該地址是否在系統(tǒng)中的多個AIG之間被共享。圖3顯示使用PTRAN位和事務(wù)表跟蹤推測性狀態(tài)的動作的加載處理流程圖。當(dāng)處理器嘗試加載型訪問時,最初,進(jìn)行判定(310)以確定加載訪問地址是否是AIG的一部分以及用于AIG訪問的特殊存儲器訪問規(guī)則是否適用。如果判定結(jié)果是否定的,則應(yīng)用普通處理并且遵循普通加載處理(320)操作。在判定處理步驟(310)中可以以許多不同方式確定加載型訪問是否是AIG的一部分??梢栽谔幚砥鞴艿乐谢蛘咴诩虞d/存儲單元中設(shè)置模式位以指示特殊AIG操作模式為有效。該模式可以是處理器的物理狀態(tài)或虛擬處理器的邏輯狀態(tài)的一部分。如果該特殊操作模式不是有效的,則該加載被視為普通加載(320)??商峁┻@種“AIG有效模式”的“覆蓋(override) ”。覆蓋能夠與包含目標(biāo)地址的邏輯內(nèi)存段或邏輯內(nèi)存頁關(guān)聯(lián)。覆蓋強迫系統(tǒng)把存儲請求視為普通,而不管該請求是AIG 的一部分的事實。如果覆蓋有效,則判定(310)的結(jié)果將會導(dǎo)致發(fā)生普通處理(320)。假設(shè) AIG有效而覆蓋不是有效的,則在檢查步驟(330)檢查關(guān)聯(lián)的PTRAN位。AIG內(nèi)部的加載指令在檢查時檢測PTRAN位的狀態(tài)。當(dāng)PTRAN位已被置位(330)時,這可能是由于在同一處理器上或者在另一處理器上執(zhí)行的另一線程的動作所導(dǎo)致。如果在檢查步驟330發(fā)現(xiàn)PTRAN 位未被置位(340),則處理器把PTRAN位置位并通過在置位PTRAN塊(340)添加到事務(wù)表以針對有效AIG在事務(wù)表(230)中記錄該訪問,然后完全加載能夠繼續(xù)(360)。如果PTRAN位已被置位,則把引起這種潛在沖突的地址與在處理器的事務(wù)表中已經(jīng)輸入的地址進(jìn)行比較。如果當(dāng)由同一AIG中更早的另一次加載在檢查塊(330)測試時把PTRAN位置位,則測試并確定(350)它已經(jīng)是該AIG的一部分并且隨后完全加載可繼續(xù)(360)。每個事務(wù)表(230, 231)包含用于特定AIG的地址。類似地,在示例性實施例中,每個高速緩存結(jié)構(gòu)(106)包含用于特定AIG的舊數(shù)據(jù)狀態(tài)。在示例性實施例中,每個高速緩存結(jié)構(gòu)(106)對應(yīng)于一個事務(wù)表并且同一索引用于存儲舊數(shù)據(jù)狀態(tài)和與AIG中正在跟蹤的每個指令關(guān)聯(lián)的控制信息。因此,如果測試并確定(350)該地址不是該AIG的一部分,則未在處理器的事務(wù)表中找到用于該加載的地址并且隨后在AIG共享的確定步驟(370)中處理器檢查是否啟用該地址在AIG 之間共享。如果該地址當(dāng)前未被啟用在多個AIG之間共享,則在是否允許在AIG之間共享的確定步驟(370)中,處理器可通知系統(tǒng)中的其它處理器以請求對這個地址的“共享AIG訪問”。如果系統(tǒng)中沒有其它AIG已推測性地寫該存儲器位置,則能夠準(zhǔn)許共享訪問。如果未準(zhǔn)許共享訪問,則AIG失敗(380),否則(390)加載地址被添加到事務(wù)表(230)并且事務(wù)信息字段(241)被更新以指示該地址是在系統(tǒng)中的多個AIG之間共享的加載訪問。圖4是顯示用于處理作為AIG的一部分的存儲的動作的存儲處理流程圖。當(dāng)處理器嘗試存儲型訪問時,最初,進(jìn)行存儲判定(400)以確定該訪問是否是AIG的一部分以及用于AIG訪問的特殊存儲器訪問規(guī)則是否適用。以與先前針對加載訪問描述的方法類似的方法檢查處理器的模式。如果用于AIG訪問的特殊訪問規(guī)則適用的特殊操作模式不是有效的,則該存儲被視為普通存儲(440)。假設(shè)AIG有效,在存儲過程檢查塊(410)檢查關(guān)聯(lián)的 PTRAN位。如果PTRAN位未被置位,則在存儲事務(wù)步驟(450)把PTRAN位置位并且把新條目添加到事務(wù)表(230)?!芭f數(shù)據(jù)”被移至高速緩存結(jié)構(gòu)(106),地址被寫到該新條目(240) 并且事務(wù)信息字段(241)被更新。如以下參照圖9所述,如果高速緩存結(jié)構(gòu)(106)不能存儲舊數(shù)據(jù)狀態(tài),則舊數(shù)據(jù)狀態(tài)被存儲在事務(wù)表的數(shù)據(jù)字段(242)中。事務(wù)信息字段(241) 被標(biāo)記以指示與這個條目關(guān)聯(lián)的訪問是存儲型訪問。在PTRAN位的置位完成之后,新的存儲數(shù)據(jù)被寫到內(nèi)存。如果PTRAN位的檢查(410)指示該位已被置位,則判定(420)當(dāng)前存儲地址是否是在處理器上有效的AIG的一部分。檢查該處理器的事務(wù)表(230),如果確定該地址存在于事務(wù)表中,則檢查該條目的事務(wù)信息字段(241)并判定共享訪問條目(460)。 如果事務(wù)信息字段(241)指示該條目是在多個AIG之間共享的加載型訪問條目,則事務(wù)失敗(430),否則關(guān)聯(lián)的條目的事務(wù)信息字段(241)被更新以指示存儲型訪問并且處理該存儲(470)。現(xiàn)在參照圖5的提交處理流程圖,將會看見,示例性實施例包括如在測試步驟 (500)最初確定的當(dāng)AIG中的最后一個指令已被處理并且整個組準(zhǔn)備好被永久地“提交”給內(nèi)存時完成的一組動作。如果測試結(jié)果是否定的,則處理在AIG模式下繼續(xù)進(jìn)行(550)。當(dāng)根據(jù)圖3和圖4的流程圖的AIG的加載和存儲的處理未導(dǎo)致事務(wù)失敗時,AIG被提交給內(nèi)存。在AIG成功的情況下,測試(500)確定AIG中的最后一個指令已被處理并且整個組準(zhǔn)備好被永久地“提交”給內(nèi)存。然后,檢查(510,520)事務(wù)表并且讀取要提交的針對AIG的每個條目并且它的關(guān)聯(lián)PTRAN位在事務(wù)表提交步驟(530)確定中在內(nèi)存中被重置。專用硬件弓I擎可用于完成這種提交操作的執(zhí)行。處理器高速緩存、多處理器一致性動作和示例性實施例的組合能夠用于提供具有這樣的錯覺的軟件即使主內(nèi)存存儲器陣列未被同時更新,單個AIG的所有內(nèi)存更新也同時發(fā)生。在提交處理期間,PTRAN位的重置持續(xù),直至已確定到達(dá)事務(wù)表中的最后一個有效條目(530)。此時,AIG被認(rèn)為已被提交并且引擎的執(zhí)行因此完成(540)?!l件阻止AIG的完成。在執(zhí)行AIG時的加載處理(380)期間或者在執(zhí)行AIG 時的存儲處理(430)期間,可以檢測到這些條件。存在可能導(dǎo)致需要異常中止AIG的處理的許多其它可能的處理器條件。這些條件包括在系統(tǒng)中檢測到的錯誤條件以及將需要大量另外的硬件支持以便使處理器能夠正確地處理它們的其它條件。許多現(xiàn)有技術(shù)事務(wù)內(nèi)存架構(gòu)包括事務(wù)的異常中止和隨后重試的規(guī)定?,F(xiàn)有技術(shù)軟件構(gòu)造能夠與示例性實施例一起使用以消除提供處理所有可能的特殊情況的硬件的需要。簡單的例子是在處理AIG中的定時器中斷的情況。該中斷可能使處理器花費大量時間運行不是部分完成的AIG的一部分的代碼??赡懿幌M幚砥髟谶@個時間期間使AIG保持有效。當(dāng)定時器中斷發(fā)生時,該系統(tǒng)能夠強迫當(dāng)前執(zhí)行的任何AIG的事務(wù)失敗。類似的方法能夠用于處理器中發(fā)生的任何其它特殊情況事件。根據(jù)圖6中顯示的用于“回滾”處理的回滾處理流程圖的過程來處理事務(wù)失敗或強制重試?,F(xiàn)在參照圖6,將會看見,事務(wù)失敗條件(600)的缺乏使處理器在AIG有效模式下繼續(xù)工作(650)。關(guān)于檢測事務(wù)失敗和引起事務(wù)回滾,示例性實施例使用“急切式(eager)” 策略。此外,示例性實施例可用于等待直至事務(wù)結(jié)束以采取回滾所需的動作的系統(tǒng)。作為 AIG的一部分執(zhí)行的內(nèi)存更新被同時提交給普通主存儲器(圖5)或者利用“回滾”操作 (620-640)丟棄它們。當(dāng)發(fā)現(xiàn)事務(wù)失敗條件(600)失敗時,需要另外幾個步驟(610,620)。回滾事務(wù)表處理條目步驟規(guī)定檢查AIG的事務(wù)表(230)和高速緩存結(jié)構(gòu)(106)并且把任何舊數(shù)據(jù)(或舊數(shù)據(jù)狀態(tài))寫回至條目中指示的主內(nèi)存地址(240)。用于關(guān)聯(lián)的地址的PTRAN位被重置。 回滾處理(620)繼續(xù),直至表中的最后一個有效條目已被處理(630)。在最后一個有效條目已被處理之后,回滾完成(640)。在此時由處理器采取的動作將會基于用于事務(wù)內(nèi)存的各種軟件架構(gòu)而不同??墒褂帽尘爸忻枋龅娜魏问聞?wù)內(nèi)存架構(gòu)。在一些情況下,將會從開始重試AIG。在其它情況下,特殊軟件處理程序?qū)⒈徽{(diào)用以處理事務(wù)失敗。示例性實施例可以與這些不同架構(gòu)中的任何架構(gòu)一起使用。示例性實施例支持“嵌套”事務(wù)的執(zhí)行。如圖7中所示,第二 AIG可以被包括在第一 AIG的范圍內(nèi)。每個BEGIN_AIG特殊指令(圖7)語句使系統(tǒng)創(chuàng)建一個事務(wù)表(230)并把該表與該AIG關(guān)聯(lián)。關(guān)于存儲器地址是否屬于AIG的判定(350)可包括內(nèi)AIG(A)或者內(nèi) AIG和外AIG的組合(A&B)。END-AIG特殊指令語句(圖7)結(jié)束事務(wù)序列,但如圖中所示, 用于特定事務(wù)(事務(wù)B)的序列可以嵌套在另一序列(事務(wù)A)內(nèi)。多個事務(wù)表(230)的使用可用于支持許多用于事務(wù)內(nèi)存的嵌套架構(gòu)。多個版本的“舊數(shù)據(jù)”或舊數(shù)據(jù)狀態(tài)可以以任何嵌套深度存儲在任何數(shù)量的高速緩存結(jié)構(gòu)(106)或事務(wù)表(230)中。依賴于數(shù)據(jù)高速緩存保持推測性狀態(tài)的現(xiàn)有技術(shù)事務(wù)內(nèi)存系統(tǒng)不能在沒有把附加狀態(tài)信息添加到高速緩存目錄以及為高速緩存一致性協(xié)議增加額外復(fù)雜性的情況下為嵌套的事務(wù)提供類似的支持。 現(xiàn)有技術(shù)系統(tǒng)上的嵌套支持將把大的硬件復(fù)雜性不利后果施加于這些設(shè)計。示例性實施例也能夠被擴展以包括包含來自內(nèi)AIG (指令B0,指令Bi)和外AIG (指令A(yù)0,指令A(yù)l,指令 A2)兩者的條目的組合事務(wù)表/高速緩存結(jié)構(gòu)。可替代于單獨的事務(wù)表和高速緩存結(jié)構(gòu)使用這種組合事務(wù)表/高速緩存結(jié)構(gòu),或者除了單獨的事務(wù)表和高速緩存結(jié)構(gòu)之外還使用這
11種組合事務(wù)表/高速緩存結(jié)構(gòu)。存在許多能夠添加到示例性實施例以加速事務(wù)表操作的處理以及PTRAN位的置位和重置的另外的硬件特征。由于PTRAN位是主存儲器數(shù)據(jù)的一部分,所以它能夠被緩存在系統(tǒng)的普通數(shù)據(jù)高速緩存中。事務(wù)表也是主存儲器的一部分并且也能夠被緩存。本文所使用術(shù)語“主存儲器”是指DRAM內(nèi)存芯片的陣列。附加控制信息能夠被添加到數(shù)據(jù)高速緩存以指示特定地址是否已被啟用以用于“共享AIG訪問,,并因此針對一些情況消除搜索事務(wù)表的需要。如上所述的本發(fā)明的示例性實施例的能力能夠?qū)崿F(xiàn)于軟件、固件、硬件以及軟件和固件的某種組合。圖8顯示使用示例性實施例的計算系統(tǒng)中的指令的解碼和執(zhí)行的流程。示例性實施例使用BEGIN_AIG指令指示AIG的開始并使用END_AIG指令指示AIG的結(jié)束。能夠使用標(biāo)記一組指令的開始和結(jié)束的任何其它合適的方法。指令或標(biāo)記可以由編程者以高級語言顯式地插入在代碼中或者由編譯器或翻譯器添加,作為高級加鎖功能的實現(xiàn)方式。在運行時環(huán)境中,可通過庫函數(shù)調(diào)用來添加指令或標(biāo)記,或者可通過特殊事件包括指令或標(biāo)記。作為針對對特定指令序列進(jìn)行解碼或接收進(jìn)入新執(zhí)行模式的特殊命令的響應(yīng),可由固件、硬件或二者的組合產(chǎn)生指令或標(biāo)記。示例性實施例在指令的解碼(800)之后識別AIG的開始。如果確定已解碼出 BEGIN_AIG指令(805),則處理器進(jìn)入新執(zhí)行模式(AIG模式)(815),否則像往常一樣執(zhí)行指令(810)并且對于下一指令繼續(xù)進(jìn)行處理(800)。在進(jìn)入AIG模式之前,以與在IBM Z-Series架構(gòu)中處理傳統(tǒng)程序調(diào)用的方式相同的方式保存處理器的架構(gòu)狀態(tài)。任何類似的狀態(tài)保存機制可用在任何其它處理器架構(gòu)上。 處理器可在AIG失敗的情況下直接返回到該保存的狀態(tài)或者可在已調(diào)用一系列其它錯誤處理例程之后返回到該狀態(tài)。在處于AIG模式時,指令的解碼繼續(xù)(820)。如果解碼了加載或存儲(825),則需要對這些加載和存儲進(jìn)行特殊處理(840)。AIG內(nèi)部的加載的處理所需的步驟描述于圖3中,AIG內(nèi)部的存儲的處理所需的步驟描述于圖4中。在AIG中的加載和存儲被處理之后,確定(850)是否如圖3和圖4的說明中所述存在AIG失敗。如果存在失敗,則調(diào)用特殊處理程序(860)。用于事務(wù)失敗的特殊處理程序的動作可根據(jù)使用示例性實施例的系統(tǒng)的架構(gòu)而不同。在現(xiàn)有技術(shù)中已描述許多處理事務(wù)失敗的方法,它們中的任何一種方法能夠用于這個目的。可能的方法包括從開始把事務(wù)重試設(shè)置的嘗試次數(shù)、等待引起失敗改變的條件、調(diào)用專用軟件例程以解決線程之間的沖突等。這些可能的失敗處理程序可能需要引起失敗的AIG的回滾(860)。如果未檢測到失敗,則確定加載或存儲是否是 AIG的最后一個指令(855)。如果指令是AIG中的最后一個指令,則使用圖5中描述的過程提交AIG(865)。處理器隨后退出AIG模式并繼續(xù)執(zhí)行AIG之后的下一順序指令(800)。AIG內(nèi)部除加載和存儲之外的指令的解碼不是必須要求特殊處理(830)。如果指令不是加載或存儲型指令,則確定指令是另一 BEGIN_AIG(830)。嵌套的AIG指令需要特殊處理(835)。現(xiàn)有技術(shù)包含許多不同的處理嵌套事務(wù)的方法。示例性實施例能夠用于支持它們中的任何一種方法。用于示例性實施例的嵌套AIG處理程序把“內(nèi)” AIG的指令添加至IJ“外”AIG,從而創(chuàng)建單個更大的AIG。本發(fā)明的其它實施例可提供作為內(nèi)嵌套事務(wù)的一部分的加載和存儲的處理的不同規(guī)則以及用于內(nèi)嵌套事務(wù)的提交和失敗處理的特殊規(guī)則。如果確定指令不是BEGIN_AIG,則執(zhí)行該指令(845)并且接下來確定(855)該指令是否是AIG 的最后一個指令。優(yōu)選實施例使用END_AIG指令的解碼來指示已到達(dá)AIG的最后一個指令。如果已到達(dá)AIG的最后一個指令,則AIG被提交給內(nèi)存并且處理器退出操作的AIG模式(865)。圖9表示可由示例性實施例實現(xiàn)的舊數(shù)據(jù)狀態(tài)存儲流程。在塊902,(例如,從圖 4中的塊450)接收把與AIG關(guān)聯(lián)的舊數(shù)據(jù)狀態(tài)寫到高速緩存結(jié)構(gòu)(106)的請求。如前所述,高速緩存結(jié)構(gòu)(106)位于高速緩沖存儲器(104)中;這在寫和讀舊數(shù)據(jù)狀態(tài)時提供了快速數(shù)據(jù)訪問。在示例性實施例中,高速緩存結(jié)構(gòu)(106)是硬件緩沖器,然而可由示例性實施例實現(xiàn)其它軟件和/或硬件實現(xiàn)方式。在示例性實施例中,硬件緩沖器對應(yīng)于事務(wù)表(230,231)并且針對每個事務(wù)表(230,231)實現(xiàn)的一個緩沖器(邏輯的或物理的)。在這個實施例中,事務(wù)表(230,231)的下一條目寄存器(202,212)可由對應(yīng)緩沖器用來存儲(和檢索)舊數(shù)據(jù)狀態(tài)。在其它示例性實施例中,一個緩沖器被多個事務(wù)表(230, 231)用來存儲舊數(shù)據(jù)狀態(tài)。在這個實施例中,為緩沖器保持單獨的索引,并且保持事務(wù)表 (230,231)中舊數(shù)據(jù)狀態(tài)和地址之間的相關(guān)性。在塊904,確定舊數(shù)據(jù)狀態(tài)是否能夠存儲在該緩沖器中。在圖9中描述的實施例中,如果該緩沖器已滿,則舊數(shù)據(jù)狀態(tài)不能存儲在該緩沖器中。在示例性實施例中,高速緩存的控制結(jié)構(gòu)中的位用于指示緩沖器已滿。如果緩沖器已滿,則執(zhí)行塊908并且舊數(shù)據(jù)狀態(tài)被寫到事務(wù)表的在由下一條目寄存器(202,212)指示的位置(即,事務(wù)表中與對應(yīng)地址相同的行)。在事務(wù)表的頭部中把一個位置位以指示舊數(shù)據(jù)狀態(tài)位于事務(wù)表中。如果在塊904中確定緩沖器未滿,則在塊906繼續(xù)進(jìn)行處理。在塊906,舊數(shù)據(jù)狀態(tài)被寫到該緩沖器。在圖9中描述的實施例中,每個事務(wù)表具有對應(yīng)的緩沖器并且舊數(shù)據(jù)狀態(tài)被寫到緩沖器的由下一條目寄存器(202,212)指示的位置。在事務(wù)表中把一個位置位以指示舊數(shù)據(jù)狀態(tài)是位于緩沖器中還是位于事務(wù)表的數(shù)據(jù)字段242中。技術(shù)效果和益處包括當(dāng)與現(xiàn)有系統(tǒng)相比時具有少得多的開銷的高速事務(wù)內(nèi)存系統(tǒng)。另外,通過提供用于存儲與推測性加載和存儲指令關(guān)聯(lián)的舊數(shù)據(jù)狀態(tài)的高速緩存位置, 減少了帶寬要求和處理時間。另外,通過在高速緩存結(jié)構(gòu)變滿時使用主存儲器中的事務(wù)表作為高速緩存的后備,提高了系統(tǒng)可靠性和可用性。本文使用的術(shù)語僅用于描述特定實施例的目的,而非意在限制本發(fā)明。如本文所使用的,單數(shù)形式“a” “an”和“the”也包括復(fù)數(shù)形式,除非上下文清楚地指示不是這樣。另夕卜,應(yīng)該理解,當(dāng)在本說明書中使用時,術(shù)語“包括”和/或“包含”指定存在聲稱的特征、整數(shù)、步驟、操作、元件和/或部件,但并不排除存在或增加一個或多個其它特征、整數(shù)、步驟、 操作、元件、部件和/或它們的組合。以下權(quán)利要求中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、動作和等同物意在包括用于結(jié)合具體要求保護(hù)的其它要求保護(hù)的要素而執(zhí)行功能的任何結(jié)構(gòu)、材料或動作。本發(fā)明的描述是為了說明和描述的目的而給出,而不是想要窮舉或者將本發(fā)明限制為所公開的形式。在不脫離本發(fā)明的范圍和精神的情況下,許多修改和變型對于本領(lǐng)域普通技術(shù)人員而言是顯而易見的。選擇并描述實施例以最好地解釋本發(fā)明的原理和實際應(yīng)用, 并且使其他本領(lǐng)域普通技術(shù)人員能夠針對具有適合設(shè)想的特定用途的各種修改的各種實施例來理解本發(fā)明。本領(lǐng)域技術(shù)人員應(yīng)該理解,本發(fā)明的各方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各方面可以采用通常全部可在本文稱為“電路”、“模塊”或“系統(tǒng)”的完全硬件實施例、完全軟件實施例(包括固件、常駐軟件、微碼等)或組合軟件和硬件方面的實施例的形式。另外,本發(fā)明的各方面可以采用實現(xiàn)于具有計算機可讀程序代碼的一個或多個計算機可讀介質(zhì)的計算機程序產(chǎn)品的形式??梢允褂靡粋€或多個計算機可讀介質(zhì)的任何組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可以是例如但不限于電子、磁、 光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備或裝置或者前述各項的任何合適的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉列表)將包括下述各項具有一個或多個線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器 (EPR0M或閃存)、光纖、便攜式壓縮盤只讀存儲器(CD-ROM)、光學(xué)存儲裝置、磁存儲裝置或前述各項的任何合適的組合。在本文的上下文中,計算機可讀存儲介質(zhì)可以是能夠包含或存儲由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的程序的任何有形介質(zhì)。計算機可讀信號介質(zhì)可包括例如基帶中或作為載波的一部分的嵌入了計算機可讀程序代碼的傳播數(shù)據(jù)信號。這種傳播信號可采用多種形式中的任何形式,包括但不限于電磁信號、光學(xué)信號或者它們的任何合適的組合。計算機可讀信號介質(zhì)可以是并非計算機可讀存儲介質(zhì)并且能夠傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的程序的任何計算機可讀介質(zhì)??梢允褂萌魏魏线m的介質(zhì)(包括但不限于無線、有線、光纜、RF等或前述各項的任何合適的組合)傳輸計算機可讀介質(zhì)上包含的程序代碼??梢园凑找环N或多種編程語言的任何組合編寫用于執(zhí)行本發(fā)明的各方面的操作的計算機程序代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言,諸如Java、Smalltalk, C++ 等;和常規(guī)的過程編程語言,諸如“C”編程語言或類似編程語言。程序代碼可以完全在用戶的計算機上執(zhí)行、部分在用戶的計算機上執(zhí)行、作為獨立軟件包執(zhí)行、部分在用戶的計算機上并且部分在遠(yuǎn)程計算機上執(zhí)行或者完全在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。在后一情形中, 遠(yuǎn)程計算機可以通過任何類型的網(wǎng)絡(luò)(包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))連接到用戶的計算機,或者可以(例如,使用互聯(lián)網(wǎng)服務(wù)提供商通過互聯(lián)網(wǎng))連接到外部計算機。以下參考根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/ 或方框圖描述了本發(fā)明的各方面。應(yīng)該理解,流程圖和/或方框圖中的每個方框以及流程圖和/或方框圖中的方框的組合能夠由計算機程序指令實現(xiàn)。這些計算機程序指令可被提供給通用計算機、專用計算機或者其它可編程數(shù)據(jù)處理設(shè)備的處理器,以產(chǎn)生一臺機器,從而指令(所述指令經(jīng)由計算機或者其它可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行)產(chǎn)生用于實現(xiàn)流程圖和/或方框圖的一個或多個方框中指定的功能/動作的裝置。這些計算機程序指令也可存儲在計算機可讀介質(zhì)中,該計算機可讀介質(zhì)能夠指示計算機、其它可編程數(shù)據(jù)處理設(shè)備或其它裝置按照特定的方式發(fā)揮作用,從而存儲在計算機可讀介質(zhì)中的指令產(chǎn)生一種制品,所述制品包括實現(xiàn)流程圖和/或方框圖的一個或多個方框中指定的功能/動作的指令。
計算機程序指令也可被加載到計算機、其它可編程數(shù)據(jù)處理設(shè)備或其它裝置上, 以使得在所述計算機、其它可編程設(shè)備或其它裝置上執(zhí)行一系列的操作步驟以產(chǎn)生計算機實現(xiàn)的過程,從而在該計算機或其它可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)流程圖和/或方框圖的一個或多個方框中指定的功能/動作的過程。如上所述,實施例能夠?qū)崿F(xiàn)為計算機執(zhí)行的過程和實施這些過程的設(shè)備的形式。 在示例性實施例中,本發(fā)明實現(xiàn)為由一個或多個網(wǎng)絡(luò)元件執(zhí)行的計算機程序代碼。實施例包括具有計算機程序代碼邏輯1004的計算機可用介質(zhì)1002上的如圖10中所述的計算機程序產(chǎn)品900,計算機程序代碼邏輯1004包含在作為制品的有形介質(zhì)中實現(xiàn)的指令。計算機可用介質(zhì)1002的示例性制品可包括軟盤、CD-ROM、硬盤驅(qū)動器、通用串行總線(USB)閃驅(qū)或者任何其它計算機可讀存儲介質(zhì),其中,當(dāng)計算機程序代碼邏輯1004被載入到計算機中并由計算機執(zhí)行時,該計算機變?yōu)橛糜趯嵤┍景l(fā)明的設(shè)備。實施例包括例如計算機程序代碼邏輯1004,不管存儲在存儲介質(zhì)中、載入到計算機中和/或由計算機執(zhí)行、或者在某傳輸介質(zhì)上傳輸,諸如在電線或線纜上、通過光纖光學(xué)器件或者經(jīng)由電磁輻射傳輸,其中當(dāng)計算機程序代碼邏輯1004被載入到計算機中并由計算機執(zhí)行時,該計算機變?yōu)橛糜趯嵤┍景l(fā)明的設(shè)備。當(dāng)實現(xiàn)于通用微處理器上時,計算機程序代碼邏輯1004段配置微處理器以創(chuàng)建特定邏輯電路。附圖中的流程圖和方框圖表示根據(jù)本發(fā)明各種實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)方式的架構(gòu)、功能和操作。在這個方面,流程圖或方框圖中的每個方框可代表包括用于實現(xiàn)指定的邏輯功能的一個或多個可執(zhí)行指令的代碼的模塊、段或一部分。還應(yīng)該注意的是,在一些另外的實現(xiàn)方式中,方框中標(biāo)注的功能可以不按附圖中標(biāo)注的次序執(zhí)行。例如,事實上,根據(jù)涉及的功能,連續(xù)示出的兩個方框可以基本上并發(fā)地執(zhí)行,或者這些方框有時候可以以相反的次序執(zhí)行。還應(yīng)該注意的是,方框圖和/或流程圖中的每個方框以及方框圖和/或流程圖中的方框的組合能夠由執(zhí)行指定的功能或動作的基于專用硬件的系統(tǒng)或?qū)S糜布陀嬎銠C指令的組合實現(xiàn)。
權(quán)利要求
1.一種由事務(wù)程序用來管理對第一線程的事務(wù)數(shù)據(jù)的共享內(nèi)存位置的內(nèi)存訪問的方法,所述共享內(nèi)存位置可由第一線程和第二線程訪問,該方法包括下述步驟在計算系統(tǒng)執(zhí)行一串指令以完成第一線程的事務(wù),該事務(wù)開始于所述一串指令中的一個指令;在計算系統(tǒng)確定所述一個指令是否是與第一線程的事務(wù)關(guān)聯(lián)的指令的有效原子指令組(AIG)的一部分;定位一起提供AIG的處于有效模式的條目的高速緩存結(jié)構(gòu)和事務(wù)表,響應(yīng)于確定所述一個指令是有效AIG的一部分而執(zhí)行所述定位,條目包括存儲在高速緩存結(jié)構(gòu)中的舊數(shù)據(jù)狀態(tài)和存儲在事務(wù)表中的控制信息,并且被有效AIG的指令檢查或修改的所有存儲器位置保持為未決,直至計算系統(tǒng)指示應(yīng)該提交存儲器位置;以及響應(yīng)于確定所述一個指令不是有效AIG的一部分,在普通執(zhí)行模式下在計算系統(tǒng)執(zhí)行下一指令。
2.如權(quán)利要求1所述的方法,還包括 接收存儲舊數(shù)據(jù)狀態(tài)的請求;確定把舊數(shù)據(jù)狀態(tài)存儲在高速緩存結(jié)構(gòu)中還是存儲在事務(wù)表中; 響應(yīng)于確定舊數(shù)據(jù)狀態(tài)應(yīng)該被存儲在高速緩存結(jié)構(gòu)中,把舊數(shù)據(jù)狀態(tài)存儲在高速緩存結(jié)構(gòu)中;以及響應(yīng)于確定舊數(shù)據(jù)狀態(tài)應(yīng)該被存儲在高速緩存結(jié)構(gòu)中,把舊數(shù)據(jù)狀態(tài)存儲在事務(wù)表中。
3.如權(quán)利要求2所述的方法,還包括 接收存儲控制信息的請求;以及把控制信息存儲在事務(wù)表中。
4.如權(quán)利要求1所述的方法,其中所述控制信息包括物理地址和事務(wù)專有(PTRAN)標(biāo)簽。
5.如權(quán)利要求1所述的方法,其中所述事務(wù)表位于主存儲器中。
6.如權(quán)利要求1所述的方法,其中所述高速緩存結(jié)構(gòu)位于高速緩沖存儲器中。
7.一種包括適于執(zhí)行如任一前述方法權(quán)利要求所述的方法的所有步驟的裝置的系統(tǒng)。
8.一種計算機程序,該計算機程序包括當(dāng)在計算機系統(tǒng)上執(zhí)行所述計算機程序時用于執(zhí)行如任一前述方法權(quán)利要求所述的方法的所有步驟的指令。
全文摘要
一種由事務(wù)程序用來管理對第一線程的事務(wù)數(shù)據(jù)的共享內(nèi)存位置的內(nèi)存訪問的計算機實現(xiàn)的方法,所述共享內(nèi)存位置可由第一線程和第二線程訪問。執(zhí)行用于完成第一線程的事務(wù)的一串指令,該事務(wù)開始于所述一串指令中的一個指令。確定所述一個指令是否是與第一線程的事務(wù)關(guān)聯(lián)的指令的有效原子指令組(AIG)的一部分。如果所述一個指令是有效AIG的一部分,則定位一起提供AIG的處于有效模式的條目的高速緩存結(jié)構(gòu)和事務(wù)表。響應(yīng)于確定所述一個指令不是有效AIG的一部分,在普通執(zhí)行模式下執(zhí)行下一指令。
文檔編號G06F9/46GK102483704SQ201080038491
公開日2012年5月30日 申請日期2010年8月24日 優(yōu)先權(quán)日2009年8月31日
發(fā)明者小T·赫勒 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1