亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

使能混合事務存儲器系統(tǒng)中的最大并發(fā)性的制作方法

文檔序號:10694032閱讀:645來源:國知局
使能混合事務存儲器系統(tǒng)中的最大并發(fā)性的制作方法
【專利摘要】在事務存儲器系統(tǒng)的一實施例中,設備包括處理器和執(zhí)行邏輯,以便實現(xiàn)第一軟件事務模式的至少一個第一軟件事務和第二軟件事務模式的第二軟件事務以及第一硬件事務模式的至少一個硬件事務和第二硬件事務模式的至少一個第二硬件事務的并發(fā)執(zhí)行。在一個示例中,執(zhí)行邏輯可在處理器中實現(xiàn)。描述并且要求保護其他實施例。
【專利說明】使能混合事務存儲器系統(tǒng)中的最大并發(fā)性
【背景技術】
[0001] 在并行編程計算環(huán)境中,共享對相同存儲器位置的訪問要求適當管理和同步,這 會比較難以執(zhí)行。按傳統(tǒng),訪問共享存儲器的線程之間的同步使用鎖定來實現(xiàn),以保護共享 數(shù)據(jù)免于同時訪問。但是,鎖定在其對共享數(shù)據(jù)的串行化中常常是過度保守的(這在執(zhí)行時 可能不一定是必要的),但是確定編寫代碼的時間常常是棘手或不可能的。
[0002] 作為備選解決方案提出了事務存儲器,以允許線程推測地并行執(zhí)行臨界區(qū)(稱作 事務)。如果沖突在執(zhí)行時發(fā)生,則線程停止或終止其事務,并且再次執(zhí)行它們以解決沖突。 在事務存儲器系統(tǒng)中,線程能夠推測地執(zhí)行事務,而無需改變共享存儲器位置的內(nèi)容,直到 事務隨后提交。如果在兩個事務之間檢測到?jīng)_突,則可中止事務其中之一,使得其他事務能 夠提交,在這時,所提交事務可改變共享存儲器位置的內(nèi)容。
【附圖說明】
[0003] 圖1是按照一實施例的系統(tǒng)的框圖。
[0004] 圖2是按照一實施例的事務的執(zhí)行的高級流程圖。
[0005] 圖3示出按照一實施例的硬件事務與軟件事務之間的可能定時。
[0006] 圖4是按照本發(fā)明的一實施例的混合事務存儲器系統(tǒng)流程的框圖。
[0007] 圖5是按照一實施例的第一硬件事務的執(zhí)行的流程圖。
[0008] 圖6是按照一實施例的第一硬件事務的階段的細節(jié)。
[0009]圖7是按照一實施例的第二事務的執(zhí)行的流程圖。
[0010] 圖8是按照一實施例的基于基本布隆過濾器的硬件事務的細節(jié)。
[0011] 圖9是按照一實施例的基于優(yōu)化布隆過濾器的硬件事務的細節(jié)。
[0012] 圖10是按照一實施例的推測軟件事務的執(zhí)行的流程圖。
[0013] 圖11示出按照一實施例的軟件事務執(zhí)行的細節(jié)。
[0014] 圖12是按照一實施例的不可撤銷軟件事務的執(zhí)行的流程圖。
[0015] 圖13示出按照一實施例的不可撤銷軟件事務的細節(jié)。
[0016] 圖14是按照另一個實施例的系統(tǒng)的框圖。
【具體實施方式】
[0017] 在實現(xiàn)事務存儲器系統(tǒng)的各個實施例中,可在與一個或多個軟件事務并發(fā)執(zhí)行的 一個或多個硬件事務之間使用與被訪問存儲器位置有關的信息來確定沖突。在某些實現(xiàn) 中,這個信息可通過與執(zhí)行事務的線程關聯(lián)的過濾器組來保持。更具體來說,實施例可將這 些過濾器組作為所謂的布隆過濾器來實現(xiàn),其中可存儲與被訪問存儲器位置有關的信息。
[0018] -般來說,布隆過濾器可實現(xiàn)為位向量,其包括各提供與一個或多個存儲器位置 關聯(lián)的值的多個字段。在操作中,將被訪問存儲器位置地址(或者其一部分)與一個或多個 哈希值進行哈希。哈希結(jié)果用來裝載位向量的對應條目。更具體來說,在訪問和哈希計算 時,位向量的所指示字段可設置在邏輯一或有效值,以指示已經(jīng)訪問對應地址。類似地,具 有邏輯零或無效值的任何字段指示尚未訪問存儲器的一個或多個給定地址。
[0019] 沖突檢測可至少部分使用多個布隆過濾器值來執(zhí)行。更具體來說,第一線程的布 隆過濾器可使其內(nèi)容與具有并發(fā)執(zhí)行事務的第二線程的布隆過濾器的內(nèi)容進行比較。如果 交叉比較指示訪問存儲器位置在一個或多個位置中交叉,則檢測到?jīng)_突,并且終止或中止 事務的一個或多個的操作可發(fā)生。而如果交叉比較指示被訪問位置沒有交叉,則事務之一 或兩者可在沒有沖突檢測的情況下繼續(xù)提交。
[0020] 實施例可用來確定與軟件事務并發(fā)執(zhí)行的硬件事務之間的沖突。使用為各線程提 供布隆過濾器的一實施例,在軟件全局鎖定由軟件事務所保持的同時完成執(zhí)行的硬件事務 僅當發(fā)現(xiàn)沖突時才可被迫中止。布隆過濾器有時能夠允許誤報,因此假中止仍然能夠發(fā)生。 然而,布隆過濾器的使用能夠改進硬件事務的提交率。
[0021] 實施例可用于混合事務存儲器(HTM)(其使用將要由給定軟件事務所獲取的單個 全局鎖定來提供軟件事務和硬件事務)中。硬件事務存儲器可以只通過處理器硬件來實現(xiàn), 其使用盡力來完成要提交的事務。軟件事務存儲器完全通過軟件來實現(xiàn),以便在多線程程 序中同步共享存儲器。
[0022] 在硬件事務結(jié)束時,硬件事務咨詢單個全局鎖定。如果鎖定為空,則硬件事務能夠 成功提交。在單個全局鎖定不為空的情況下,沖突檢測可使用每線程布隆過濾器(其表示各 事務的讀和寫集合)來執(zhí)行。這樣,即使單個全局鎖定被軟件事務占用,非沖突硬件事務也 能夠提交。
[0023] 因此,實施例實現(xiàn)混合事務存儲器系統(tǒng)中所實現(xiàn)的并發(fā)量的增加。為了檢測軟件 事務與硬件事務之間的沖突,各線程與布隆過濾器關聯(lián)。在線程中的事務的執(zhí)行期間,注解 每個讀和寫,以便將存儲器位置添加到布隆過濾器。在一實施例中,這個注解可通過資料庫 調(diào)用進行。但是,其他實施例可采用讀和寫存儲器訪問來嵌入這類注解。備選地,編譯器可 插入指令,以操控布隆過濾器插入。
[0024] 在完成硬件事務(即,事務的臨界區(qū))時,事務在提交之前咨詢?nèi)宙i定,以及如果 鎖定為空,則該事務能夠成功提交。但是,如果鎖定被占用,則在交叉操作中比較硬件事務 和軟件事務(其擁有全局鎖定)的布隆過濾器內(nèi)容,以確定是否存在沖突。布隆過濾器允許 誤報,但是不允許漏報。因此,盡管事務沒有實際沖突,也可檢測到?jīng)_突,但是如果事務訪問 相同存儲器位置,則交叉比較將不會報告零沖突。因此,即使鎖定被占用,硬件事務也能夠 成功提交,只要布隆過濾器沒有報告沖突。
[0025] 在一個特定混合事務存儲器系統(tǒng)中,單個軟件事務可與一個或多個硬件事務并發(fā) 執(zhí)行。在軟件事務開始時,它獲取單個全局鎖定以確保獨占性。各硬件事務在臨界區(qū)結(jié)束時 讀取這個鎖定,以確定它是否能夠設法提交或者要咨詢布隆過濾器。在一實施例中,單個全 局鎖定能夠存儲擁有者線程的標識符,因而向硬件事務指示要對哪一個布隆過濾器檢查沖
[0026] 在一實施例中,布隆過濾器可實現(xiàn)為軟件布隆過濾器。使用這些過濾器,各事務 (硬件或軟件)在讀取/寫入那個位置時將所讀取或?qū)懭氲母鞔鎯ζ魑恢锰砑拥狡渥约旱牟?隆過濾器。在硬件事務結(jié)束時,布隆過濾器用來識別與當前保持單個全局鎖定(若有的話) 的軟件事務的沖突。
[0027] 注意,硬件事務主要通過硬件來執(zhí)行,但是使讀和寫訪問被注解,使得所讀取/寫 入的位置被輸入到每線程軟件布隆過濾器中。在提交時間,硬件事務檢查全局鎖定,以及如 果它為空,則它們能夠提交,否則它們計算它們自己的布隆過濾器與軟件布隆過濾器之間 的組交叉。如果不存在沖突,則硬件事務能夠成功提交。在提交時(在確認沒有沖突或過濾 器交叉之后),通過將已更新值寫到存儲器(使得所有更新立即變?yōu)榭梢姡捎布聞账鶊?zhí) 行的更新變成是其他線程可見的。如果事務中止,則所有更新恢復到其初始狀態(tài)。
[0028] 中止的硬件事務重試多次。在N(其是可配置參數(shù))重試之后,硬件事務轉(zhuǎn)變成軟件 事務,并且尋求獲取單個全局鎖定。在軟件事務沒有中止的一實施例中,這個轉(zhuǎn)變確保前向 進展。
[0029] 在這個實施例中,只有一個軟件事務能夠在任何給定時間執(zhí)行。軟件事務在其線 程擁有單個全局鎖定時能夠執(zhí)行。它通過在鎖定位置寫入其線程標識符(ID)來獲取鎖定, 并且開始執(zhí)行其臨界區(qū)。由軟件事務所執(zhí)行的所有更新在原位進行(換言之,軟件事務直接 更新存儲器)。此外,軟件事務還在其線程的布隆過濾器中存儲所讀取/寫入的位置,以允許 任何并發(fā)硬件事務檢查沖突。在一實施例中,軟件事務能夠從不中止。
[0030] 混合事務存儲器方式可用來實現(xiàn)更快的事務執(zhí)行以及與硬件事務存儲器關聯(lián)的 降低開銷,同時確保被操控事務的前向進展。按照混合事務存儲器方式,各事務最初通過硬 件來操控,以及隨后在前向進展無法通過軟件來取得時通過軟件來操控。在各個實施例中, 提供一種混合事務存儲器系統(tǒng),其中全局鎖定用來實現(xiàn)軟件事務和一個或多個硬件事務的 并發(fā)執(zhí)行。
[0031] 圖1是設備100的框圖。如圖1所示,設備100包括多個元件,其中包括處理器元件 102、存儲器元件104和事務管理模塊106。但是,實施例并不局限于所示元件的類型、數(shù)量或 布置。
[0032]在各個實施例中,處理器元件102可使用能夠?qū)崿F(xiàn)任務級并行性的任何處理器或 邏輯裝置來實現(xiàn)。在一些實施例中,處理器元件102可以是多核處理器。在另一個示例實施 例中,處理器元件102可以是設置成并行執(zhí)行任務的多個處理器。存儲器元件104可使用能 夠存儲數(shù)據(jù)的任何機器可讀或計算機可讀介質(zhì)來實現(xiàn),包括易失性和非易失性存儲器。在 一些實施例中,存儲器元件104可包括處理器元件102的高速緩存。在各個實施例中,作為補 充或替代,存儲器元件104可包括其他類型的數(shù)據(jù)存儲介質(zhì),例如只讀存儲器(R0M)、隨機存 儲存儲器(RAM)、動態(tài)RAM(DRAM)、雙倍數(shù)據(jù)速率DRAM(DDRAM)、同步DRAM(SDRAM)、靜態(tài)RAM (SRAM)、可編程ROM(PROM)、可擦可編程ROM(EPROM)、電可擦可編程ROM(EEPR0M)、閃速存儲 器、聚合物存儲器(例如鐵電聚合物存儲器、奧式存儲器、相變或鐵電存儲器、硅氧化氮化氧 化硅(S0N0S)存儲器)、磁或光卡或者適合存儲信息的任何其他類型的介質(zhì)。存儲器元件104 的部分或全部可包含在與處理器元件102相同的集成電路上,或者備選地,存儲器元件104 的部分或全部可設置在處理器元件102的集成電路外部的集成電路或其他介質(zhì)(例如硬盤 驅(qū)動器)上。
[0033]在一些實施例中,事務管理模塊106可包括電路、邏輯、其他硬件和/或指令,以按 照事務存儲器范例來管理事務的執(zhí)行。在各個實施例中,事務管理模塊106可引起硬件事務 和軟件事務的執(zhí)行。硬件事務可以是由處理器元件102中的邏輯裝置電路直接執(zhí)行的事務。 軟件事務可以是由執(zhí)行于處理器元件102的編程邏輯間接執(zhí)行的事務。
[0034]如圖1進一步所示,提供系統(tǒng)140,其包括設備100和收發(fā)器144。收發(fā)器144可包括 一個或多個無線電單元,其能夠使用各種適當?shù)臒o線通信技術來傳送和接收信號。這類技 術可涉及跨一個或多個無線網(wǎng)絡的通信。示范無線網(wǎng)絡包括(但不限于)無線局域網(wǎng) (WLAN)、無線個人區(qū)域網(wǎng)絡(WPAN)、無線城域網(wǎng)(WMN)、蜂窩網(wǎng)絡和衛(wèi)星網(wǎng)絡。
[0035] 在一些實施例中,處理器元件102可托管一個或多個線程108。各線程108可對應于 執(zhí)行于處理器元件102的應用或程序,以及任何特定應用或程序可具有一個以上關聯(lián)線程 108。應用或程序可使用特定線程108來請求一個或多個事務110的執(zhí)行。事務110可引起各 種計算或其他任務的執(zhí)行被處理器元件102來執(zhí)行。
[0036]在各個實施例中,當線程108請求事務的執(zhí)行時,事務管理模塊106按照混合事務 存儲器算法來管理事務。在一些實施例中,混合事務存儲器算法可實現(xiàn)多個執(zhí)行階段或模 式,在此期間,嘗試執(zhí)行和提交事務。在各個實施例中,混合事務存儲器算法可包括硬件階 段和軟件階段。在一些實施例中,事務管理模塊106可以僅在硬件階段不成功之后將軟件階 段用于事務。
[0037]在一些實施例中,事務管理模塊106可利用全局鎖定112,以便實現(xiàn)軟件事務和一 個或多個硬件事務的并發(fā)執(zhí)行。在各個實施例中,事務管理模塊106可在軟件事務經(jīng)歷執(zhí)行 時使全局鎖定112被設置或者是有效的,以及在沒有軟件事務經(jīng)歷執(zhí)行時使全局鎖定112被 清除或者是無效的。在一些實施例中,全局鎖定112可以是自旋鎖定。在其他實施例中, Mellor-Crummey-Scott (MCS)鎖定可用于全局鎖定112,以便降低鎖定高速緩存線上的爭 用。在各個這類實施例中,"MCS_acquire"和"MCS_release"方法可用來利用硬件事務來加 速比較和交換(CAS)指令的執(zhí)行。在一些實施例中,這個全局鎖定進一步可使用如本文所述 的過濾機制來實現(xiàn)。
[0038]在一些實施例中,如果全局鎖定112在事務結(jié)束時是無效的并且沒有其他沖突在 事務執(zhí)行期間發(fā)生,則事務管理模塊106可使硬件事務進行提交。而如果全局鎖定112在硬 件事務尋求提交時是有效的或者被占用,則事務管理模塊116可通過參照與發(fā)起事務的線 程關聯(lián)的布隆過濾器中存儲的信息,來確定沖突是否存在于硬件事務與未決軟件事務之 間。
[0039]在各個實施例中,事務管理模塊106可包括執(zhí)行邏輯114。在一些實施例中,執(zhí)行邏 輯114可以是執(zhí)行事務110的電路、其他硬件和/或指令。在各個實施例中,每當線程108請求 新事務的執(zhí)行時,執(zhí)行邏輯114可執(zhí)行事務的一個或多個執(zhí)行。在一些實施例中,執(zhí)行邏輯 114最初可將事務作為硬件事務來執(zhí)行一次或多次,并且隨后在事務執(zhí)行于硬件時無法提 交時將事務作為軟件事務來執(zhí)行。因此,在一些實施例中,軟件事務模式可以是回退執(zhí)行階 段,在此期間,事務被指配最高優(yōu)先級,以確保它將提交并且將取得前向進展。在一些實施 例中,執(zhí)行邏輯114還可在硬件事務結(jié)束時檢查全局鎖定112。
[0040] 在一些實施例中,事務管理模塊106可包括跟蹤邏輯116。在各個實施例中,跟蹤邏 輯116可包括管理全局鎖定112、重試計數(shù)器118和重試閾值120的電路、其他硬件和/或指 令。在一些實施例中,跟蹤邏輯116可基于來自執(zhí)行邏輯114的指令來設置全局鎖定112。例 如,當執(zhí)行邏輯114開始軟件階段中的事務的執(zhí)行時,執(zhí)行邏輯114可指示跟蹤邏輯116來設 置全局鎖定112。在各個實施例中,重試計數(shù)器118可包括在硬件事務模式已經(jīng)進行以執(zhí)行 事務的執(zhí)行總嘗試次數(shù)。在一些實施例中,重試閾值120可包括嘗試次數(shù),在該嘗試次數(shù)之 后,執(zhí)行邏輯114應當從作為硬件事務的執(zhí)行進入作為軟件事務的執(zhí)行。在各個實施例中, 當接收新事務時,跟蹤邏輯116可將重試計數(shù)器118(對應于事務)重置為零。在一些實施例 中,在事務的每個不成功執(zhí)行之后,跟蹤邏輯116可使重試計數(shù)器118遞增。
[0041]如圖1進一步所示,存儲器元件104包括每線程讀集合存儲裝置126和每線程寫集 合存儲裝置128。在一實施例中,存儲裝置可存儲與事務期間所讀取或?qū)懭氲闹涤嘘P的信 息。另外,各線程可具有與其關聯(lián)的對應布隆過濾器134和136,其各與給定讀集合存儲裝置 或?qū)懠洗鎯ρb置(和線程)關聯(lián)。如本文將進一步描述,在事務的執(zhí)行期間,每個讀和寫可 注解到對應布隆過濾器中,以指示在事務期間已經(jīng)訪問給定存儲器地址。這個信息以后可 用來確定至少潛在沖突是否存在于并發(fā)執(zhí)行事務之間。
[0042]在各個實施例中,事務管理模塊106可包括最終完成邏輯128。在一些實施例中,最 終完成邏輯128可包括確定在事務由執(zhí)行邏輯114來執(zhí)行之后是提交還是中止事務的電路、 其他硬件和/或指令。在各個實施例中,最終完成邏輯128可在事務與其他事務沖突或潛在 沖突時確定任何特定事務將被中止。在一些實施例中,最終完成邏輯128可通過檢查全局鎖 定112來確定事務是否可能與并發(fā)軟件事務潛在地沖突。在各個實施例中,如果全局鎖定 112被設置并且事務是硬件事務,則最終完成邏輯128然后可引用交叉邏輯124來確定是否 至少潛在沖突存在于硬件事務與軟件事務之間。為此,交叉邏輯124可訪問發(fā)起事務的線程 的相應布隆過濾器134和136,以確定過濾器組是否交叉。如果是這樣的話,則至少潛在沖突 存在,并且因此交叉邏輯124可向最終完成邏輯128報告有效交叉。如果過濾器組而是沒有 指示交叉,則向最終完成邏輯128報告這個無效交叉。
[0043] 最終完成邏輯128又可在發(fā)現(xiàn)交叉時使硬件事務被中止,否則使硬件事務能夠提 交(假定沒有檢測到其他沖突)。
[0044] 在一些實施例中,如果全局鎖定112被設置并且事務是軟件事務,則最終完成邏輯 128可提交事務,并且指示跟蹤邏輯116釋放全局鎖定112。在各個實施例中,如果全局鎖定 112沒有設置,則最終完成邏輯128可提交硬件事務,并且指示跟蹤邏輯116清除重試計數(shù)器 118,而無需與交叉邏輯124進行交互以確定過濾器組是否指示潛在沖突。
[0045] 在一些實施例中,事務管理模塊106可包括中止處理程序邏輯130。在各個實施例 中,中止處理程序邏輯130可包括操控最終完成邏輯128所指示的事務的中止的電路、其他 硬件和/或指令。在一些實施例中,中止處理程序邏輯130可確定被中止事務的下一個嘗試 執(zhí)行是應當作為硬件事務還是作為軟件事務發(fā)生。在各個實施例中,中止處理程序邏輯130 可確定事務是否因與其他事務的沖突或潛在沖突或者由于另一種原因而被中止。如果事務 由于另一種原因、例如因非法指令、容量上溢或者不規(guī)則存儲器訪問模式引起的高速緩存 關聯(lián)性上溢而被中止,則中止處理程序邏輯130可確定執(zhí)行邏輯114應當直接進入軟件階 段。如果事務因與其他事務的沖突或潛在沖突而被中止,則中止處理程序邏輯130可例如基 于重試次數(shù)來確定事務是應當在當前階段還是在下一個階段來重試。
[0046]在各個實施例中,為了確定被中止事務的下一個嘗試執(zhí)行應當作為硬件事務還是 軟件事務來操控,中止處理程序邏輯130可將重試計數(shù)器118與重試閾值120進行比較。在一 些實施例中,如果重試計數(shù)器118小于重試閾值120,則中止處理程序邏輯130可指示執(zhí)行邏 輯114將事務作為硬件事務來重試。否則中止處理程序邏輯130可指示執(zhí)行邏輯114將事務 作為軟件事務來重試。在各個實施例中,跟蹤邏輯116可基于嘗試事務的成功和/或不成功 提交數(shù)量自適應地確定重試閾值120的值。雖然在圖1實施例中以這個較高等級示出,但是 要理解,本發(fā)明的范圍并不局限于這個方面,以及混合事務存儲器系統(tǒng)可采取許多不同形 式并且具有許多變化。
[0047] 現(xiàn)在參照圖2,所示的是按照一實施例的事務的執(zhí)行的高級流程圖。如在圖2中看 到,按照方法200,所有事務作為硬件事務通過硬件開始執(zhí)行(框210)。在對每個讀或?qū)懙膱?zhí) 行期間(框215),事務在對應線程的軟件布隆過濾器中記錄所讀取或?qū)懭氲母魑恢谩T谟布?事務完成其臨界區(qū)的執(zhí)行之后(框220),它通過檢查與軟件事務(若存在的話)的沖突來嘗 試提交。硬件事務首先檢查全局鎖定是否被占用(菱形框225)。如果這個鎖定為空,則硬件 事務能夠成功提交(假定如菱形框240所確定沒有中止發(fā)生)。如果鎖定被占用,則鎖定的值 指示保持鎖定的線程的索引或標識符,其因而執(zhí)行軟件事務。
[0048] 在這種情況下,硬件事務轉(zhuǎn)到菱形框230,以便訪問執(zhí)行軟件事務的線程的布隆過 濾器,以確定是否存在任何沖突。更具體來說,在菱形框230,交叉操作可在2個過濾器之間 執(zhí)行,以確定2個布隆過濾器的任何條目或字段是否交叉(例如,兩者均具有有效或邏輯一 值)。如果是這樣的話,則硬件事務中止,并且控制轉(zhuǎn)到菱形框270,以確定給定硬件事務的 重試次數(shù)是否已經(jīng)達到可配置數(shù)N。注意,各種步驟可在中止事務時進行,包括逐出與線程 關聯(lián)的緩沖器或其他存儲裝置中的任何已更新值。
[0049] 如果而是確定布隆過濾器之間不存在交叉,則控制轉(zhuǎn)到菱形框240,以確定事務是 否例如因另一種原因而被中止。如果不是的話,則控制轉(zhuǎn)到框250,其中提交事務。為了進行 提交,硬件事務可采用任何已更新值(其先前存儲于僅在硬件事務執(zhí)行期間是給定線程可 見的緩沖器中)來更新存儲器。
[0050] 還要理解,雖然關于事務是否中止的確定在圖2實施例的特定位置以菱形框240示 出,但是有可能在通過沖突檢測邏輯(其可檢測其他類型的沖突或者事務期間的中止的其 他原因)使硬件事務在其執(zhí)行期間的任何時間中止。但是,為了便于說明,要理解,菱形框 240在圖2所示的位置中表示。
[0051] 又參照圖2,如果在菱形框270確定重試次數(shù)尚未達到閾值數(shù)N,則控制轉(zhuǎn)到框280, 其中使重試次數(shù)遞增,并且然后控制轉(zhuǎn)回到框210以再次開始硬件事務。否則,如果重試次 數(shù)已經(jīng)達到重試閾值N,則控制改為從菱形框270轉(zhuǎn)到框260,其中執(zhí)行可切換到軟件事務模 式。更具體來說,在僅準許單個軟件事務的這個實現(xiàn)中,事務因而可在軟件事務模式執(zhí)行以 完成,從而允許事務在框250提交。
[0052]布隆過濾器確保軟件事務與硬件事務之間的沖突檢測。由硬件事務存儲器系統(tǒng)來 確保硬件事務之間的沖突檢測和解決。在一實施例中,單個全局鎖定確保在任何時間只有 一個軟件事務執(zhí)行,并且因此沒有為軟件事務提供附加沖突檢測機制。
[0053]圖3示出按照一實施例的硬件事務與軟件事務之間的可能定時。在情況310,軟件 事務首先更新變量X,并且硬件事務稍后將相同變量X更新成不同值。當硬件事務嘗試提交 時,執(zhí)行過濾器組交叉,其識別雙重訪問,因而產(chǎn)生沖突并且中止硬件事務。類似操作在情 況320發(fā)生。但是,在情況330和340,在硬件事務提交的點,軟件線程已經(jīng)提交并且釋放單個 全局鎖定。因此,當硬件線程檢查這個鎖定時,發(fā)現(xiàn)它被釋放,并且因而事務能夠成功提交。 [0054]在情況330和340,當硬件事務設法提交時,鎖定為空,表示沒有軟件事務并發(fā)地執(zhí) 行。即使存在重疊軟件事務,它到這個點也已經(jīng)提交,在硬件事務之前串行化。如果軟件事 務已經(jīng)執(zhí)行在硬件事務之后串行化的任何沖突操作,則硬件事務在沖突時會被中止(由于 硬件沖突檢測機制)。因此,當鎖定為空時使硬件事務能夠提交提供正確行為。
[0055] 如果當硬件事務設法提交時鎖定而是被占用(如同情況310和320中一樣),則并發(fā) 軟件事務執(zhí)行。提交硬件事務因軟件事務所執(zhí)行的可能將來沖突操作而在這個軟件事務之 前串行化。但是,軟件事務可能在硬件事務開始跟蹤那些位置之前對一個或多個存儲器位 置執(zhí)行了沖突操作,并且因而在軟件事務之前串行化硬件事務會不正確地表現(xiàn)。因此,實施 例使用布隆過濾器來確定這種情況。
[0056] 注意,軟件布隆過濾器沒有包含軟件事務在將來將訪問的所有位置,而只是事務 已經(jīng)訪問的位置。然而,將來訪問將在所提交硬件事務之后正確地串行化。因此,如果布隆 過濾器沒有交叉,則硬件事務能夠在軟件事務之前正確地串行化。如果布隆過濾器識別沖 突,則沖突操作首先在軟件事務中并且然后在硬件事務中發(fā)生,否則硬件事務已經(jīng)中止。在 這種情況下,硬件事務無法在軟件事務之前串行化,并且將被中止。因此,實施例正確地識 別這些沖突,并且中止硬件事務。注意,在一實施例中,有可能使布隆過濾器不正確地報告 沖突(作為難區(qū)分的誤報),因此硬件事務也將在這兩種情況下中止。但是,布隆過濾器沒有 引起漏報,并且因此識別和防止所有沖突。
[0057]在一實施例中,有效布隆過濾器實現(xiàn)允許在0(1)時間的插入和組交叉,從而使開 銷為最小。此外,硬件事務只在提交之前僅讀取全局鎖定并且讀取軟件布隆過濾器,從而當 硬件事務可能因軟件事務修改這些位置而被中止時減小窗口。在一實施例中,讀取鎖定和 布隆過濾器可以僅對事務的讀集合添加兩個附加高速緩存線。在一些實施例中,這能夠優(yōu) 化成使得布隆過濾器的位用來指示鎖定是否被占用并且布隆過濾器的其余部分用作布隆 過濾器。在這種實現(xiàn)中,鎖定位置能夠服務于兩種目的,從而將硬件事務的讀集合大小減小 到僅一個附加位置。事務自己的布隆過濾器對寫集合添加附加高速緩存線,但是在一實現(xiàn) 中,這可能低至僅一個高速緩存線,這取決于布隆過濾器大小。
[0058] 使用一實施例,訪問其本身的分離存儲器訪問的許多小硬件事務和并發(fā)執(zhí)行大軟 件事務能夠進行提交。作為一個這種示例,考慮表示開放尋址哈希表的陣列。線程能夠執(zhí)行 這個哈希表中的lookup (X)操作和insert (X)操作。一旦取得占據(jù)的閾值,線程決定通過分 配新陣列并且將元素從舊陣列重新哈希到新陣列來使哈希表的大小翻倍。查找和插入操作 是短事務,并且能夠在大多數(shù)時間通過硬件成功進行。重新哈??筛臑樽鳛檐浖聞諄韴?zhí) 行(以及執(zhí)行重新哈希的線程獲取單個全局鎖定)。在這種情況下,通過軟件事務與并發(fā)硬 件事務之間的準確沖突檢測,作為硬件事務所執(zhí)行的查找操作能夠在對新陣列的重新哈希 發(fā)生的同時使用來自舊陣列的數(shù)據(jù)進行提交。此外,作為硬件事務所執(zhí)行的對舊陣列結(jié)束 (即,在尚未重新哈希的部分中)進行的插入操作也能夠在重新哈希期間提交。因此,實施例 通過允許小硬件事務與長執(zhí)行軟件事務并發(fā)地提交來改進吞吐量。
[0059] 雖然如上所述提供布隆過濾器沖突檢測技術改進并行性,但是在給定上述實施例 中的單個全局鎖定的使用的情況下,仍然能夠存在低效。在其他實施例中,可提供一種事務 存儲器系統(tǒng),其使多個硬件事務和多個軟件事務能夠并行地執(zhí)行和提交。一般來說,基于高 速緩存的硬件事務存儲器系統(tǒng)可用于硬件組件,以及基于失效的軟件事務存儲器系統(tǒng)可用 于軟件組件。這些實施例提供一種混合事務存儲器系統(tǒng),其允許多個硬件事務與多個軟件 事務并發(fā)地執(zhí)行,同時仍然保證前向進展。
[0060] 現(xiàn)在參照圖4,所示的是按照本發(fā)明的一實施例的混合事務存儲器系統(tǒng)的框圖。如 圖4所示,HTM系統(tǒng)400提供多個硬件事務模式和多個軟件事務模式。在圖4所示的實現(xiàn)中,事 務在第一硬件事務模式410(本文中稱作輕硬件(LiteHW)事務模式)開始。如果上溢或者未 支持指令發(fā)生,則事務立即升級到另一種類型的事務模式。如果事務而是由于另一種原因 (例如因沖突)而中止,則事務在被升級到第二硬件事務模式420(本文中稱作布隆過濾器硬 件(BFHff)模式)之前重試多次。類似重試發(fā)生,并且在事務沒有提交時將其更新到第一軟件 事務模式430 (本文中稱作推測軟件(SpecSW)模式)。再次在這個模式中,事務可在被升級到 第二軟件事務模式440(本文中稱作不可撤銷軟件(IrrevocSW)模式)之前重試多次。要理 解,雖然在圖4中采用特定模式和交互來示出,但是實施例并不局限于這個方面。
[0061 ]如果大多數(shù)事務較短、訪問能夠符合TM支持高速緩存空間的存儲器并且沒有包含 未支持指令,則它們能夠直接通過硬件成功進行,而無需與軟件事務進行同步。最輕量類型 的事務是第一硬件事務模式(LiteHff)。這個事務類型在沒有讀和寫的任何注解的情況下執(zhí) 行,并且在它設法提交時沒有軟件事務執(zhí)行時能夠成功提交。這種類型的事務是簡單和快 速的,但是它允許與軟件事務的極少并發(fā)性。
[0062]第二硬件事務模式BFHW使用軟件布隆過濾器來記錄硬件事務所讀取和寫入的位 置,以實現(xiàn)與并發(fā)執(zhí)行的軟件事務的沖突的檢測。這種事務類型與LiteHff事務相比增加額 外開銷,但是能夠甚至在并發(fā)執(zhí)行軟件事務存在的情況下也能夠提交。硬件事務較快,但是 在盡力HTM中因未支持指令或上溢而會出故障,并且因而提供軟件回退。
[0063]第一軟件事務模式SpecSW又執(zhí)行推測軟件事務,其中事務在與其他軟件和硬件事 務的沖突檢測的布隆過濾器中記錄所讀取和寫入的位置,并且將所有寫存儲在哈希表中供 提交階段期間的延緩更新。失效在提交后發(fā)生,以中止進行中沖突事務,并且每事務鎖定用 來確保不透明性。在這個第一軟件事務模式中,驗證每個讀,以防止僵事務(將中止的事務) 達到不一致狀態(tài)。
[0064]最后,第二軟件事務模式IrrevocSW在原位執(zhí)行所有更新(直接對存儲器),并且無 法被中止。由于這個質(zhì)量,只有一個IrrevocSW事務能夠在任何給定時間執(zhí)行。但是,多個 SpecSW和BFHff事務能夠與IrrevocSW事務并發(fā)地執(zhí)行。
[0065]多個軟件事務之間的沖突檢測使用布隆過濾器來實現(xiàn),如上所述。軟件與硬件事 務之間的沖突檢測也使用布隆過濾器,但是,使用沒有逸出動作的盡力HTM-般導致在沖突 檢測時中止硬件事務。這種行為歸因于硬件事務的強隔離:由硬件來跟蹤的任何存儲器位 置將引起沖突,由此當軟件事務執(zhí)行對那個位置的沖突訪問時中止硬件事務。此外,硬件更 新沒有變成是其他線程可見的,直到硬件事務提交。
[0066]實施例將硬件與軟件事務之間的沖突檢測推遲到硬件事務已經(jīng)提交之后。硬件事 務則執(zhí)行提交后階段,其中它使所有進行中沖突軟件事務失效。因為硬件事務已經(jīng)提交,所 以與其他線程的共享布隆過濾器信息無法使它中止。
[0067] 無論是軟件還是硬件的各事務經(jīng)過多個階段。這些階段的每個中的行為取決于事 務的類型。第一階段是開始事務的開始階段。硬件事務調(diào)用開始硬件事務指令,而軟件事務 記錄與起始地址有關的信息,并且經(jīng)由指示至少一個軟件事務的存在的指示符、例如標志 (例如,sw_exists標志)來通知其他線程關于其存在。
[0068] 在執(zhí)行階段期間,注解讀和寫操作,并且根據(jù)事務執(zhí)行的類型來判定行為。所有事 務類型在布隆過濾器中記錄被訪問位置,除了 LiteHff事務之外。
[0069] 在中止階段期間,硬件中止由硬件自動地應對。對于軟件事務,軟件清除事務執(zhí)行 期間所記錄的信息,并且從開始階段期間所存儲的地址重新開始。
[0070] 在提交階段期間,執(zhí)行沖突檢測,以及如果事務能夠提交,則進行存儲器更新。其 實現(xiàn)取決于事務類型。
[0071] 在提交后階段期間,事務可執(zhí)行失效。注意,這個階段在事務已經(jīng)提交并且采用其 寫集合位置來更新存儲器。這個階段確保與剛提交的事務沖突的所有進行中軟件事務將被 中止。
[0072] 如以上概述,第一硬件模式LiteHW是最簡單和最快的類型,因為它引入可忽略附 加軟件開銷,并且完全通過硬件來執(zhí)行。LiteHff事務只能在軟件事務不存在的情況下提交。 圖5是按照一實施例的這種事務的執(zhí)行的流程圖。方法500例如經(jīng)由用戶級硬件事務開始指 令來開始硬件事務的執(zhí)行(框510)。隨后,執(zhí)行事務主體(框520)。執(zhí)行這個臨界區(qū),而沒有 記錄讀或?qū)懙娜我粋€。當事務嘗試提交(在框530)時,它檢查是否有任何軟件事務當前正執(zhí) 行(例如,通過檢查sw_exists標志(如果軟件事務正執(zhí)行,則sw_exists != 0))(菱形框 540)。如果存在并發(fā)執(zhí)行的軟件事務,則控制轉(zhuǎn)到菱形框550,以確定是否已經(jīng)達到重試閾 值(M)。如果不是的話,則控制轉(zhuǎn)到框555,并且使重試計數(shù)遞增??刂齐S后轉(zhuǎn)回到上述框 510。如果事務而是重試了閾值次數(shù),則控制轉(zhuǎn)到框558,其中事務切換到第二硬件事務模式 BFHff模式。
[0073]如果在菱形框540確定沒有軟件事務執(zhí)行(sw_exi Sts=O ),則事務能夠成功提交, 假定事務在菱形框560尚未中止。因為LiteHff是硬件事務,所以其提交可瞬時執(zhí)行(框565)。 如果事務在由硬件沖突檢測機制的執(zhí)行期間的任何點被中止,則中止處理程序檢查硬件所 設置的中止狀態(tài),以確定是否在相同模式重試這個事務(最多M次),或者切換到SpecSW(框 570)(例如,如果中止通過上溢所引起)或者切換到IrrevocSW(框580)(例如,如果事務通過 未支持指令、例如輸入/輸出指令所引起)。
[0074]圖6示出LiteHW事務501的更多細節(jié)。在開始階段期間,事務執(zhí)行開始硬件事務指 令(例如txbegin指令)。在執(zhí)行期間,OnRead和OnWrite處理程序(其是采用訪問來更新布隆 過濾器的處理程序、例如基于資料庫的處理程序)為空。OnAbort處理程序使重試次數(shù)遞增, 并且基于重試次數(shù)和中止原因來判定是將事務作為LiteHW事務來重試還是切換到不同模 式。最后,也通過硬件所執(zhí)行的提交階段檢查SWjXiStS標志,并且調(diào)用硬件事務結(jié)束指令 (例如txend指令)。這種事務類型沒有提交后階段。
[0075] 圖7是按照一實施例的BFHW事務的執(zhí)行的流程圖。方法600例如經(jīng)由用戶級硬件事 務開始指令來開始硬件事務的執(zhí)行(框610)。隨后,執(zhí)行事務主體(框620)。在其執(zhí)行期間, 事務在其讀和寫布隆過濾器中記錄所讀取或?qū)懭氲拇鎯ζ魑恢谩.斒聞赵O法提交(菱形框 630)時,它檢查提交鎖定是否被占用(菱形框640)。如果鎖定為空,并且假定沒有中止已經(jīng) 發(fā)生(如在菱形框660所確定),則事務獲取其自己的硬件事務鎖定(在框670)并且提交(框 675) 〇
[0076] 如果事務鎖定被占用,則軟件事務當前正提交。在一實施例中,在這種情況下要做 的最簡單事情是中止,因為硬件事務可能具有與提交軟件事務的沖突存儲器更新。這種情 況在以下圖8中更詳細示出。
[0077] 但是,如果硬件事務沒有與提交軟件事務的任何沖突,則硬件事務可能在軟件事 務正提交的同時進行提交。這能夠使用布隆過濾器比較來確定。這個硬件事務模式的優(yōu)化 行為是在發(fā)現(xiàn)提交鎖定被占用時檢查提交軟件事務的布隆過濾器。如果布隆過濾器指示沖 突,則硬件事務中止,否則它能夠提交(在它如上所述獲取其自己的事務鎖定之后)。這種情 況在圖9中示出。
[0078]與Li teHW相似,OnAbort處理程序確定是否上升到多個軟件模式其中之一(例如在 框658和690)或者達到閾值數(shù)的重試次數(shù)是否已經(jīng)發(fā)生(在菱形框650)。否則,重試次數(shù)在 框655遞增,并且事務在框610再次開始。
[0079] 被寫入事務存儲器完全通過硬件來提交。首先,事務通過檢查提交鎖定和軟件布 隆過濾器(提交鎖定是否被占用)來確定它是否能夠提交(在菱形框650)。如果不存在沖突 (鎖定為空或者硬件交易的布隆過濾器沒有與軟件事務的布隆過濾器交叉),則硬件事務獲 取其自己的事務鎖定(在框675)(在圖8和圖9中示為tlock)。這個鎖定僅通過擁有它的硬件 事務來獲取,因此它在那個事務設法獲取它時始終為空。但是,它用來防止與開始其提交階 段的軟件事務的競爭,如以下更詳細描述。
[0080] 注意,如果事務被中止,則事務的鎖定自動釋放,因為它是其推測寫集合的部分。 此外,寫到鎖定的值僅當硬件事務對存儲器提交其變更時才變成是其他線程可見的。如果 其他線程在鎖定被占用之后但是在變更提交給存儲器之前檢查這個位置,則硬件事務被中 止,從而確保競爭不是可能的。
[0081] 仍然參照圖7,在框675的提交之后,這個第二硬件事務模式的提交后階段通過軟 件來執(zhí)行,并且在硬件事務對存儲器提交其變更之后發(fā)生。如看到,提交后操作包括使沖突 軟件事務失效(框680)。注意,在這個點,硬件事務已經(jīng)被提交,但是它確保與其沖突的所有 軟件事務將被中止。這通過針對進行中軟件事務的布隆過濾器檢查硬件事務的布隆過濾器 來取得。如果檢測到?jīng)_突,則軟件事務被中止。在完成失效過程之后,硬件事務重置其鎖定。
[0082] 圖8示出包括開始階段、執(zhí)行階段、提交階段和提交后階段的基于基本布隆過濾器 的硬件事務601。如看到,在執(zhí)行期間,將讀和寫添加到對應讀和寫布隆過濾器。但是要理 解,在其他實施例中,單個布隆過濾器可用于讀和寫集合。隨后確定提交鎖定是否被占用, 以及如果是這樣的話,則事務在這個基本實現(xiàn)中中止。否則,事務鎖定被占用,并且事務寫 入被提交。然后在提交后階段中,執(zhí)行布隆過濾器交叉,以中止所有沖突軟件事務,并且此 后釋放事務鎖定。
[0083] 圖9示出包括開始階段、執(zhí)行階段、提交階段和提交后階段的基于優(yōu)化布隆過濾器 的硬件事務602。在這種情況下,如果提交鎖定被占用,則沖突可使用布隆過濾器交叉來檢 測,以確定沖突是否存在,以及如果不是的話,則硬件線程可提交,而如果沖突存在,則事務 中止。否則,操作與圖8類似地發(fā)生。
[0084] 圖10是按照一實施例的推測軟件事務的執(zhí)行的流程圖。方法700開始軟件事務的 執(zhí)行(框710)。隨后,執(zhí)行事務主體(框720)。如看到,在執(zhí)行期間,將讀和寫位置記錄到布隆 過濾器。在提交時(框730),事務獲取提交鎖定(框740),并且咨詢爭用管理器(在框760)(其 可通過硬件、軟件、固件或其他邏輯或者其組合來實現(xiàn)),以確定它是提交還是中止(使得沖 突進行中軟件事務能夠繼續(xù)執(zhí)行)。如果爭用管理器決定中止事務,則事務釋放提交鎖定, 并且作為SpecSW事務進行重試,這取決于在菱形框790所確定的重試次數(shù)。如果低于這個閾 值,則重試計數(shù)器在框792遞增,并且事務在推測軟件事務模式重新執(zhí)行(在框710)。如果高 于閾值,則事務在框795切換到不可撤銷軟件事務模式。
[0085]否則,如果事務能夠提交,則它獲取不可撤銷鎖定(在框765),對存儲器提交其變 更(在框770),使進行中沖突軟件事務失效(在框775),并且釋放鎖定(在框780)。
[0086] SpecSW事務執(zhí)行的其他細節(jié)在圖11中示出。如看到,推測軟件事務701通過軟件執(zhí) 行所有階段。在圖11的實施例中,在主要執(zhí)行期間,讀取被驗證并且添加到讀布隆過濾器, 而寫被添加到寫布隆過濾器。注意,延緩更新可通過將任何已更新值寫到哈希表或其他暫 時存儲裝置來執(zhí)行。在提交階段期間,假定允許事務進行提交,它得到不可撤銷鎖定并且更 新存儲器。否則,它釋放鎖定,并且重新開始事務。然后在提交后階段,事務在釋放鎖定之前 執(zhí)行失效,從而使任何沖突軟件事務失效。
[0087] 最后要注意,SpecSW事務甚至當BFHW正提交時也提供正確執(zhí)行。如果SpecSW事務 在BFHW準備好提交時已經(jīng)開始提交過程,則BFHW事務將觀測到提交鎖定被占用,并且將檢 查針對軟件布隆過濾器對其布隆過濾器檢查沖突。如果不存在沖突,則硬件事務能夠提交, 否則BFHff將中止。
[0088]但是,如果BFHW在SpecSW事務開始提交階段之前檢查提交鎖定,則兩種狀況之一 能夠發(fā)生:提交鎖定在BFHff硬件事務提交之前改變(其中止硬件事務,從而消除任何潛在沖 突);或者提交鎖定在BFHW硬件事務提交之后改變。推測軟件事務不檢查與硬件事務的沖 突,并且因而它可能遺漏與新提交硬件事務的沖突,并且可能開始對存儲器提交其變更。為 了避免這種狀況,所有SpecSW事務在獲取提交鎖定之后檢查所有硬件事務的鎖定,并且等 待到它們?yōu)榭铡H绻鸖pecSW事務在事務鎖定為空時仍然有效,則它沒有與任何所提交硬件 事務的沖突。
[0089] 現(xiàn)在參照圖12,所示的是不可撤銷軟件事務IrrevocSW的執(zhí)行的流程圖。如在圖12 中看到,方法800開始于事務的開始階段(框810)。隨后,事務獲取不可撤銷鎖定并且提交鎖 定(框820)。然后,主要事務主體可在框830執(zhí)行。注意,對于不可撤銷軟件事務,所有更新在 原位執(zhí)行(直接對存儲器),因而事務在開始執(zhí)行時立即獲取不可撤銷并且提交鎖定,以確 保串行性。隨后,事務進行提交(框840)。此后,例如基于布隆過濾器組交叉來使沖突軟件事 務失效(框850)。最后,釋放兩種鎖定(框860)。
[0090] 圖13示出按照一實施例的不可撤銷軟件事務801的其他細節(jié)。注意,在執(zhí)行開始 時,獲取兩種鎖定,并且設置軟件標志。在主體中,雖然使用直接更新,但是將讀和寫添加到 對應布隆過濾器,以實現(xiàn)與沖突軟件事務的以后失效。在一實施例中,不可撤銷事務無法被 中止,并且因而提交階段基本上是沒有操作(Ν0Ρ)。提交后階段與推測軟件事務的提交后階 段相似:當前事務已經(jīng)提交,并且因而它使進行中沖突軟件事務失效。
[0091] 在一實施例中,爭用管理器由推測軟件事務用來確定它們在到達其提交階段時是 否能夠提交。爭用管理器考慮在提交事務被允許提交時會被中止的所有進行中事務,并且 基于各種因素來判定允許要中止的哪一個事務或哪些事務前進。在一實施例中,這個判定 可基于優(yōu)先級、提交和沖突事務的讀和寫集合大小以及各線程的事務進展(例如至此的提 交數(shù)量)以及其他因素。
[0092] 在提交之后執(zhí)行的失效確保新事務能夠在提交階段期間開始,而沒有被失效過程 遺漏。如果事務被失效過程遺漏(因為它過遲開始),則它在提交事務的失效過程之后開始。 因此,它在提交事務提交其與之后開始,并且因而新開始事務的所有讀在提交事務之后串 行化并且因而是一致的。下表1是按照一實施例的失效過程的偽代碼表示。
[0093] 表 1 If _ 義 eis 錄.1. irrevoc !ock ^ im tnrid; -.W WV .. MEyBARSTLD(i; for {mr - 0; thr < MAX..THREADS.: { if {ixns|thr].stalus ACTIVE) | if |bf.Jnter'sectsieixnsfthn.rbloo^.( etxnsi.jm....ihnd|Avb!oom)'} { ^rirBvocjDOk -- CASmt〇〇^m^yPTY; 'I y'· 對于不是執(zhí)行讀的事務的寫集合的部分的每一個讀執(zhí)行驗證。如果讀是寫集合的部 分,則從存儲事務的已更新值的哈希表返回值,并且沒有驗證需要被執(zhí)行。
[0094] 在一實施例中,驗證可執(zhí)行如下。首先,線程將新讀位置插入其布隆過濾器,并且 然后它讀取該位置。該順序確保潛在沖突將不會被提交事務的失效過程遺漏。在讀取讀位 置的值之后,被返回仍然不是安全的,因為其他事務可能處于其提交階段中間、從而更新存 儲器位置。如果當前讀針對剛更新的位置,則返回這個讀可能生成不正確程序行為,因為當 前事務的所有其他讀來自提交事務更新存儲器之前。
[0095] 為了避免這種狀況,可對所有先前未寫入的讀執(zhí)行驗證碼。這個代碼檢查不可撤 銷鎖定是否被占用,以及如果是的話,則它讀取軟件事務的布隆過濾器(通過不可撤銷鎖定 的標識符所指示),以確定是否存在任何沖突。如果鎖定在同時發(fā)生變化,則沖突能夠被驗 證碼忽略。但是在驗證結(jié)束時,事務檢查是否由其他軟件事務使它失效。如果鎖定在同時被 釋放,則表示提交事務必須完成了失效。如果驗證通過并且沒有由提交事務使事務失效,則 讀是安全的。
[0096] 現(xiàn)在參照表2,所示的是按照一實施例的驗證過程的偽代碼。
[0097] 表 2 負吝txnslJmJhrk^rbloomi Saddf); MEMBARSTLOO; vai:~ (%|idciii|:; local.jrrevoc.Jock - irrevoc.jock; if |ei 電'_f otherbf ~ txnspocal..jrrevc€ jock].vvt>lD〇m; if Oocal sirevoc lock srrevoc lock)! if(bf..jnt.ersecis(&o出erb[ ^xns[_Jn\…thridl、rb!oom>){ tx.ns[_Jrrs Jhrid].status - iNVAUD; }: if (ixns[ im J:hrid].staS:us ~~ INVALID) { restarts: Jm Jhrid); 不可撤銷事務在開始執(zhí)行時獲取提交鎖定和不可撤銷鎖定。推測事務首先獲取提交鎖 定,并且咨詢爭用管理器關于它是否能夠提交。如果爭用管理器允許事務進行提交,則就在 將其更新寫到存儲器之前獲取不可撤銷鎖定。
[0098] 提交事務可從其提交階段開始來獲取不可撤銷鎖定,從而使提交鎖定是不必要 的。但是,推測事務將其驗證碼基于所獲取的不可撤銷鎖定。如果提交鎖定不存在并且不可 撤銷鎖定在提交階段開始時獲取,則在咨詢爭用管理器之前,下列狀況可能發(fā)生。考慮執(zhí)行 讀并且執(zhí)行驗證碼的SpecSW事務,注意其讀與提交軟件事務沖突。因此,它決定重新開始。 提交事務咨詢爭用管理器,但是不允許它進行提交(例如因具有高優(yōu)先級的進行中事務)。 因此,提交事務也中止。但是,其他事務已經(jīng)終止。此外,競爭可能發(fā)生,使得爭用管理器將 其中止判定基于剛決定在驗證期間中止的事務,因此兩個事務相互中止,而沒有前進。
[0099] 提交鎖定可用來避免這種狀況。因此,提交事務要求提交鎖定,其僅在被給予提交 準許之后升級到不可撤銷鎖定。驗證碼僅因與保持不可撤銷鎖定的其他事務的沖突而中止 事務。因此,事務因與肯定提交的事務的沖突而僅被驗證中止。
[0100] 硬件用來確保相對并發(fā)硬件事務的正確性。硬件事務極大地隔離,因此對存儲器 進行的變更僅當事務提交時才變成是其他線程原子可見的。此外,沖突檢測通過硬件來實 現(xiàn),因此事務的沖突事務將被中止。因此,不存在其他軟件組件來確保多個LiteHW事務與多 個BFHff事務之間的正確交互。
[0101] 并發(fā)軟件事務之間的沖突檢測使用失效方法來確保。所有提交事務檢查與其他進 行中軟件事務的沖突,并且在存在沖突時中止它們。沒有軟件事務能夠在失效過程期間進 行提交,因為提交事務保持提交鎖定。不可撤銷事務在它變成有效時立即獲取提交鎖定,并 且因此沒有其他軟件事務能夠在其執(zhí)行期間變?yōu)椴豢沙蜂N或提交。當不可撤銷事務提交 時,它還使進行中沖突事務失效,從而確保沒有違反可串行化正確性。
[0102] 關于硬件-軟件正確性,在一實施例中,LiteHW事務能夠與軟件事務同時執(zhí)行,但 是它們在軟件事務當前執(zhí)行時無法提交。這是因為LiteHW事務沒有保持被訪問存儲器位置 的記錄,因此LiteHff事務與軟件事務之間的沖突檢測無法執(zhí)行。
[0103] 相比之下,BFHff事務跟蹤它們訪問的存儲器位置,因此它們能夠執(zhí)行沖突檢測。此 外,BFHW事務甚至當軟件事務正執(zhí)行時也能夠進行提交。如果提交軟件事務具有與BFHW事 務的沖突,則后者將由硬件自動中止。如果提交BFHff事務具有與進行中軟件事務的沖突,則 軟件事務在BFHW提交后階段(失效階段)期間被中止。此外,在硬件事務結(jié)束時將硬件事務 的布隆過濾器與軟件事務的布隆過濾器進行比較是充分的。這樣,能夠避免硬件事務的每 一個讀和寫的沖突檢測。
[0104] 實施例還實現(xiàn)存儲器的一致性。對于并發(fā)硬件事務,不透明性由硬件自動保持,因 為更新沒有變成是可見的,直到硬件事務進行提交,從而確保一致性。
[0105] 通過在不可撤銷事務使用直接更新正執(zhí)行的同時或者推測事務正執(zhí)行回寫的同 時讀取存儲器位置,硬件事務可進入不一致狀態(tài)。但是,在硬件事務中發(fā)生的故障和循環(huán)將 使事務中止和重新開始,而沒有對其他線程的顯著影響。
[0106] 在軟件事務之間使用每個新讀的驗證碼來確保不透明性,如上所述,使得軟件事 務無法因其他軟件事務所引起的更新而進入不一致狀態(tài)。
[0107] 通過讀取剛提交的硬件事務所修改的存儲器位置,軟件事務可進入不一致狀態(tài)。 在一實施例中,不允許軟件事務進行提交,并且通過硬件事務的提交后階段使其失效。但 是,由于具有讀不一致數(shù)據(jù),軟件事務在注意到使其失效之前可能進入非法狀態(tài)。
[0108] 為了防止這種狀況,一實施例可對SpecSW事務提供軟件沙箱。備選地,軟件事務的 不透明性能夠使用硬件提交后計數(shù)器來提供。在這種情況下,計數(shù)器對于在BFHW模式剛提 交并且當前在提交后階段中的硬件事務的數(shù)量進行計數(shù)。BFHff事務在提交硬件事務之前使 用存儲操作使這個計數(shù)器遞增。如果違反原子性,則中止硬件事務,從而沒有留下變化痕 跡。在提交后階段完成之后,BFHff事務例如使用取和置換指令使提交后計數(shù)器遞減。使用這 個計數(shù)器,能夠在BFHW事務存在的情況下對SpecSW事務實現(xiàn)不透明性。SpecSW事務又可讀 取這個計數(shù)器,并且在對其讀集合添加新值之前等待到它達到零。這確保SpecSW事務所讀 取的所有新值在硬件事務的提交后階段之外來讀取,并且因而是一致的(否則SpecSW事務 在BFHW事務的提交后階段期間標記為INVALID)。此外,BFHff事務可使用這個提交后計數(shù)器 來確保SpecSW事務的一致性,并且確保在提交階段期間與SpecSW事務的互斥(在一實施例 中使每事務鎖定未使用)。
[0109] 注意,提交鎖定串行化軟件事務的提交階段和提交后階段。但是,硬件事務沒有相 對并發(fā)提交軟件和硬件事務來串行化;因此它們能夠并發(fā)地提交和執(zhí)行失效,從而使系統(tǒng) 更為可縮放和實用。
[0110] 現(xiàn)在參照圖14,所示的是按照另一個實施例的設備的框圖。如圖14所示,設備100' 包括與以上針對圖1所述的設備100類似的電路、組件和邏輯。實際上,在許多系統(tǒng)實現(xiàn)中, 混合事務存儲器系統(tǒng)可執(zhí)行于相同硬件,無論它是按照實現(xiàn)單個全局鎖定的一實施例(如 以上在圖2中所述)還是實現(xiàn)多個鎖定和多個軟件模式事務模式的系統(tǒng)(例如,如圖4所述)。
[0111]為了便于論述,在圖14的實施例中與圖1相同的組件、電路和邏輯將不作論述。本 論述而是將集中于實現(xiàn)具有多個硬件事務模式和多個軟件事務模式的混合事務存儲器事 務的執(zhí)行的設備100'的差別。如看到,代替單個全局鎖定,提供提交鎖定112和不可撤銷鎖 定113,以使不同軟件事務能夠在事務中根據(jù)事務模式在不同時間獲取這些鎖定(當然要理 解,在其他實施例中,附加或不同鎖定可存在)。另外,可提供多個重試計數(shù)器118,其中各重 試計數(shù)器與給定事務模式的重試計數(shù)關聯(lián)。以及類似地,還提供多個重試閾值120。
[0112]仍然參照圖14,事務管理模塊106還包括失效邏輯125,其配置成如上所述執(zhí)行提 交后失效。一般來說,設備100'和系統(tǒng)140'的其余部分與圖1中相同。注意,給定在例如結(jié)合 圖4-13所述的混合事務存儲器系統(tǒng)中執(zhí)行的附加功能性和操作,在各種邏輯組件的實現(xiàn)中 可存在一些差別。此外要理解,雖然在圖14以這個較高等級示出,但是許多變化和備選方案 是可能的。
[0113]以下示例涉及其他實施例。
[0114]在示例1中,一種設備包括:處理器;執(zhí)行邏輯,在事務存儲器系統(tǒng)中實現(xiàn)第一軟件 事務模式的至少一個第一軟件事務和第二軟件事務模式的第二軟件事務以及第一硬件事 務模式的至少一個硬件事務和第二硬件事務模式的至少一個第二硬件事務的并發(fā)執(zhí)行;跟 蹤邏輯,激活標志,以指示至少一個軟件事務正經(jīng)歷在第一軟件事務模式或第二軟件事務 模式的執(zhí)行;交叉邏輯,確定在第二硬件事務模式的第一硬件事務的結(jié)束時,第二硬件事務 模式的第一硬件事務的過濾器組是否與經(jīng)歷執(zhí)行的至少一個軟件事務的過濾器組沖突;以 及最終完成邏輯,在沒有沖突時提交第一硬件事務,而在存在沖突時中止第一硬件事務。注 意,在一些實現(xiàn)中,執(zhí)行邏輯、跟蹤邏輯、交叉邏輯和最終完成邏輯中的一個或多個可在處 理器中實現(xiàn)。還要注意,上述處理器能夠使用各種部件來實現(xiàn)。在一示例中,處理器包括結(jié) 合在用戶設備觸摸使能裝置中的芯片上系統(tǒng)(SoC)。在另一個示例中,一種系統(tǒng)包括顯示器 和存儲器,并且包括本文中的示例的一個或多個的處理器。
[0115] 在示例2中,在第二硬件事務模式,第一硬件事務可選地更新第一硬件事務的各存 儲器訪問的第一硬件事務的過濾器組。
[0116] 在示例3中,在第一軟件事務模式,第一軟件事務在第一軟件事務結(jié)束時可選地得 到第一鎖定和第二鎖定,并且采用哈希表中存儲的寫數(shù)據(jù)來更新事務存儲器系統(tǒng)的事務存 儲器。
[0117] 在示例4中,在第一軟件事務模式,在第一軟件事務的提交之后,第一軟件事務可 選地使第一軟件事務模式的其他軟件事務失效。
[0118] 在示例5中,在第二硬件事模式,第二硬件事務可選地在第二硬件事務的提交之前 得到提交鎖定和事務鎖定。
[0119] 在示例6中,其中如果交叉在第一軟件事務的過濾器組與其他軟件事務的過濾器 組之間發(fā)生,則示例4的第一軟件事務可選地使其他軟件事務失效。
[0120] 在示例7中,在示例3的第一軟件事務模式,第一軟件事務在執(zhí)行期間可選地驗證 讀數(shù)據(jù)。
[0121] 在示例8中,在上述示例的任一個的第二軟件事務模式:在第二軟件事務的開始, 第二軟件事務得到第一鎖定和第二鎖定;以及在第二軟件事務模式的第二軟件事務的執(zhí)行 期間,第二軟件事務直接更新事務存儲器系統(tǒng)的事務存儲器。
[0122] 在示例9中,一種方法包括:由事務存儲器系統(tǒng)中的處理器并發(fā)地執(zhí)行第一線程的 軟件事務和第二線程的硬件事務;激活全局鎖定,以指示軟件事務的執(zhí)行;以及在硬件事務 結(jié)束時,確定全局鎖定的狀態(tài),以及如果全局鎖定是有效的,則確定第一線程的過濾器組是 否與第二線程的過濾器組交叉,而如果不是的話,則提交硬件事務。
[0123] 在示例10中,示例9的方法可選地還包括提交軟件事務,并且在軟件事務結(jié)束時停 用全局鎖定。
[0124] 在示例11中,示例9或10的方法可選地還包括在全局鎖定在硬件事務結(jié)束時是無 效的時候提交硬件事務,而沒有確定過濾器組是否交叉。
[0125] 在示例12中,示例9-1其中之一的方法可選地還包括:由硬件事務將對事務存儲器 系統(tǒng)的事務存儲器的訪問的地址插入第一線程的過濾器組中;以及基于將訪問的地址與一 個或多個哈希值進行哈希來更新第一線程的過濾器組的一個或多個字段。
[0126] 在示例13中,示例9-12其中之一的方法可選地還包括在第一線程的寫集合中存儲 第一線程的過濾器組,過濾器組包括布隆過濾器。
[0127] 在示例14中,示例13的方法可選地還包括將全局鎖定添加到第一線程的過濾器 組,并且基于確定過濾器組是否交叉來確定全局鎖定的狀態(tài)。
[0128] 在示例15中,示例9-14中的任一個的方法可選地還包括:在軟件事務中并發(fā)地將 哈希表從第一大小重新哈希到第二大?。灰约霸谟布聞罩性L問哈希表,并且使硬件事務 能夠在并發(fā)重新哈希期間提交。
[0129] 在另一個示例中,包括指令的計算機可讀介質(zhì)執(zhí)行上述示例的任一個的方法。在 又一個示例中,一種設備包括用于執(zhí)行上述示例的任一個的方法的部件。
[0130] 在示例16中,至少一個計算機可讀介質(zhì)包括指令,其在執(zhí)行時使系統(tǒng)能夠:在事務 存儲器系統(tǒng)的第二硬件事務模式執(zhí)行第二硬件事務;在第二硬件事務結(jié)束時提交第二硬件 事務;以及在第二硬件事務的提交之后,如果沖突存在于第二硬件事務與至少一個軟件事 務之間,則使與第二硬件事務并發(fā)執(zhí)行的至少一個軟件事務失效。
[0131] 在示例17中,示例16的至少一個計算機可讀介質(zhì)可選地還包括指令,其在執(zhí)行時 使系統(tǒng)在第二硬件事務的提交之前確定是否獲取了提交鎖定,以及如果是的話,則確定沖 突是否存在于第二硬件事務與獲取了提交鎖定的第一軟件事務之間。
[0132] 在示例18中,示例17的至少一個計算機可讀介質(zhì)可選地還包括指令,其在執(zhí)行時 使系統(tǒng)能夠在沖突存在于第二硬件事務與第一軟件事務之間時中止第二硬件事務,其中如 果第二硬件事務的過濾器組與第一軟件事務的過濾器組交叉,則確定沖突存在。
[0133] 在示例19中,示例17的至少一個計算機可讀介質(zhì)可選地還包括指令,其在執(zhí)行時 使系統(tǒng)能夠在第一軟件事務獲取提交鎖定之后確定是否由一個或多個硬件事務獲取了一 個或多個事務鎖定,以及如果是的話,則將第一軟件事務的提交延遲到一個或多個事務鎖 定被釋放。
[0134] 在示例20中,示例17的至少一個計算機可讀介質(zhì)可選地還包括指令,其在執(zhí)行時 使系統(tǒng)能夠:在事務存儲器系統(tǒng)的第一硬件事務模式執(zhí)行第一硬件事務;在第一硬件事務 結(jié)束時確定至少一個軟件事務是否并發(fā)地執(zhí)行;以及如果是的話,則中止第一硬件事務,否 則提交第一硬件事務。
[0135] 在示例21中,示例17的至少一個計算機可讀介質(zhì)可選地還包括指令,其在執(zhí)行時 使系統(tǒng)能夠:驗證由第一軟件事務在第一軟件事務的執(zhí)行期間對事務存儲器系統(tǒng)的事務存 儲器的讀操作;以及如果讀操作被驗證,則將讀操作的位置添加到第一軟件事務的過濾器 組。
[0136] 在示例22中,示例17的至少一個計算機可讀介質(zhì)可選地還包括指令,其在執(zhí)行時 使系統(tǒng)能夠:在第二軟件事務模式執(zhí)行第二軟件事務,包括在第二軟件事務的執(zhí)行開始時 獲取第一鎖定和提交鎖定,并且在第二軟件事務執(zhí)行期間直接更新一個或多個存儲器位 置;以及在第二軟件事務結(jié)束時,提交第二軟件事務,使第一軟件事務模式的一個或多個并 發(fā)執(zhí)行軟件事務失效,并且此后釋放第一鎖定和提交鎖定。
[0137] 在示例23中,一種系統(tǒng)包括:處理器,包括混合事務存儲器邏輯,以便并發(fā)地執(zhí)行 至少一個硬件事務和至少一個軟件事務?;旌鲜聞沾鎯ζ鬟壿嬁稍诘谝挥布聞漳J綀?zhí)行 第一事務,直到提交第一事務或者第一事務在第一硬件事務模式重試第一閾值次數(shù),并且 此后如果沒有提交第一事務,則在第一軟件事務模式執(zhí)行第一事務?;旌鲜聞沾鎯ζ鬟壿?可包括交叉邏輯,以確定關聯(lián)在第一硬件模式所執(zhí)行的第一事務的過濾器組是否與關聯(lián)在 第一軟件事務模式所執(zhí)行的第二事務的過濾器組沖突,以及響應沖突,混合事務存儲器邏 輯防止在第一硬件事務模式的第一事務進行提交。該系統(tǒng)還包括耦合到處理器的事務存儲 器。
[0138] 在示例24中,混合事務存儲器邏輯可選地可在第一軟件事務模式執(zhí)行第一事務, 直到提交第一事務或者第一事務在第一軟件事務模式重試第二閾值次數(shù),以及在第二閾值 次數(shù)之后,在第二軟件事務模式執(zhí)行第一事務,其中第一事務直接更新事務存儲器。
[0139] 在示例25中,混合事務存儲器邏輯可選地可在第一硬件事務模式的執(zhí)行之前在第 二硬件事務模式執(zhí)行第一事務,其中在第一硬件事務模式執(zhí)行第一事務之前,混合事務存 儲器邏輯在第二硬件事務模式將第一事務執(zhí)行第三閾值次數(shù)。
[0140]在示例26中,混合事務存儲器邏輯可選地可使第一事務在第一軟件事務模式的執(zhí) 行期間驗證讀數(shù)據(jù),基于與讀數(shù)據(jù)關聯(lián)的地址來更新與在第一軟件事務模式所執(zhí)行的第一 事務關聯(lián)的過濾器組,并且采用寫數(shù)據(jù)來更新哈希表。
[0141] 在示例27中,示例26的混合事務存儲器邏輯可選地可使:在第二軟件事務模式的 第二事務在第二事務開始時得到第一鎖定和第二鎖定,并且此后在第二事務的執(zhí)行期間直 接更新事務存儲器;以及在第一軟件事務模式的第一事務在第一事務的提交時得到第一鎖 定和第二鎖定,并且此后采用來自哈希表的寫數(shù)據(jù)來更新事務存儲器,并且使在第一軟件 事務模式并發(fā)地執(zhí)行的至少一個其他軟件事務失效。
[0142] 在示例28中,一種用于執(zhí)行事務存儲器事務的系統(tǒng)包括:用于在事務存儲器系統(tǒng) 的第二硬件事務模式執(zhí)行第二硬件事務的部件;用于在第二硬件事務結(jié)束時提交第二硬件 事務的部件;以及用于在第二硬件事務的提交之后、在沖突存在于第二硬件事務與至少一 個軟件事務之間時使與第二硬件事務并發(fā)執(zhí)行的至少一個軟件事務失效的部件。
[0143] 在示例29中,示例28的系統(tǒng)可選地還包括用于執(zhí)行下列步驟的部件:在第二硬件 事務的提交之前確定是否獲取了提交鎖定,以及如果是的話,則確定沖突是否存在于第二 硬件事務與獲取了提交鎖定的第一軟件事務之間。
[0144] 在示例30中,示例28的系統(tǒng)可選地還包括在沖突存在于第二硬件事務與第一軟件 事務之間時中止第二硬件事務的部件,其中如果第二硬件事務的過濾器組與第一軟件事務 的過濾器組交叉,則確定沖突存在。
[0145] 在示例31中,示例28的系統(tǒng)可選地還包括用于執(zhí)行下列步驟的部件:在第一軟件 事務獲取提交鎖定之后確定是否由一個或多個硬件事務獲取了一個或多個事務鎖定,以及 如果是的話,則將第一軟件事務的提交延遲到一個或多個事務鎖定被釋放。
[0146] 在示例32中,示例28的系統(tǒng)可選地還包括:用于在事務存儲器系統(tǒng)的第一硬件事 務模式執(zhí)行第一硬件事務的部件;用于在第一硬件事務結(jié)束時確定至少一個軟件事務是否 并發(fā)地執(zhí)行的部件;以及用于執(zhí)行下列步驟的部件:如果是的話,則中止第一硬件事務,否 則提交第一硬件事務。
[0147] 在示例33中,示例28的系統(tǒng)可選地還包括:用于驗證由第一軟件事務在第一軟件 事務的執(zhí)行期間對事務存儲器系統(tǒng)的事務存儲器的讀操作的部件;以及用于在讀操作被驗 證時將讀操作的位置添加到第一軟件事務的過濾器組的部件。
[0148] 在示例34中,示例28的系統(tǒng)可選地還包括:用于執(zhí)行下列步驟的部件:在第二軟件 事務模式執(zhí)行第二軟件事務,包括在第二軟件事務的執(zhí)行開始時獲取第一鎖定和提交鎖 定,并且在第二軟件事務執(zhí)行期間直接更新一個或多個存儲器位置;以及用于執(zhí)行下列步 驟的部件:在第二軟件事務結(jié)束時,提交第二軟件事務,使第一軟件事務模式的一個或多個 并發(fā)執(zhí)行軟件事務失效,并且此后釋放第一鎖定和提交鎖定。
[0149] 要理解,上述示例的各種組合是可能的。
[0150] 實施例可用于許多不同類型的系統(tǒng)中。例如,在一個實施例中,通信裝置能夠設置 成執(zhí)行本文所述的各種方法和技術。當然,本發(fā)明的范圍并不局限于通信裝置,而是其他實 施例能夠針對用于處理指令的其他類型的設備或者包括指令的一個或多個機器可讀介質(zhì), 指令響應執(zhí)行于計算裝置而使該裝置執(zhí)行本文所述方法和技術的一個或多個。
[0151] 實施例可通過代碼來實現(xiàn),并且可存儲在非暫時存儲介質(zhì)上,存儲介質(zhì)上存儲了 能夠用于將系統(tǒng)編程為執(zhí)行指令的指令。存儲介質(zhì)可包括但不限于:任何類型的磁盤,包括 軟盤、光盤、固態(tài)驅(qū)動器(SSD)、致密光盤只讀存儲器(CD-ROM)、可改寫光盤(CD-RW)和磁光 盤;半導體器件,例如只讀存儲器(R0M)、諸如動態(tài)隨機存取存儲器(DRAM)和靜態(tài)隨機存取 存儲器(SARAM)之類的隨機存取存儲器(RAM)、可擦可編程只讀存儲器(EPROM)、閃速存儲 器、電可擦可編程只讀存儲器(EEPROM)、磁卡或光卡;或者適合于存儲電子指令的任何其他 類型的介質(zhì)。
[0152] 雖然針對有限數(shù)量的實施例描述了本發(fā)明,但是本領域的技術人員將會從中知道 大量修改和變更。預計所附權利要求書涵蓋落入本發(fā)明的真實精神和范圍之內(nèi)的所有這類 修改和變更。
【主權項】
1. 一種設備,包括: 處理器; 執(zhí)行邏輯,用于在事務存儲器系統(tǒng)中使能第一軟件事務模式的至少一個第一軟件事務 和第二軟件事務模式的第二軟件事務以及第一硬件事務模式的至少一個硬件事務和第二 硬件事務模式的至少一個第二硬件事務的并發(fā)執(zhí)行; 跟蹤邏輯,用于激活標志,以指示至少一個軟件事務正經(jīng)歷在所述第一軟件事務模式 或者所述第二軟件事務模式的執(zhí)行; 交叉邏輯,用于確定在所述第二硬件事務模式的第一硬件事務結(jié)束時所述第二硬件事 務模式的所述第一硬件事務的過濾器組是否與經(jīng)歷執(zhí)行的所述至少一個軟件事務的過濾 器組沖突;以及 最終完成邏輯,用于在不存在沖突時提交所述第一硬件事務,而在存在沖突時終止所 述第一硬件事務。2. 如權利要求1所述的設備,其中,在所述第二硬件事務模式,所述第一硬件事務更新 所述第一硬件事務的各存儲器訪問的所述第一硬件事務的所述過濾器組。3. 如權利要求1所述的設備,其中,在所述第一軟件事務模式,第一軟件事務在所述第 一軟件事務結(jié)束時得到第一鎖定和第二鎖定,并且采用哈希表中存儲的寫數(shù)據(jù)來更新所述 事務存儲器系統(tǒng)的事務存儲器。4. 如權利要求3所述的設備,其中,在所述第一軟件事務模式,在所述第一軟件事務的 提交之后,所述第一軟件事務使所述第一軟件事務模式的另一個軟件事務失效。5. 如權利要求4所述的設備,其中,在所述第二硬件事模式,第二硬件事務在所述第二 硬件事務的提交之前得到提交鎖定和事務鎖定。6. 如權利要求4所述的設備,其中如果交叉在所述第一軟件事務的過濾器組與所述另 一個軟件事務的過濾器組之間發(fā)生,則所述第一軟件事務使所述另一個軟件事務失效。7. 一種方法,包括: 由事務存儲器系統(tǒng)中的處理器并發(fā)地執(zhí)行第一線程的軟件事務和第二線程的硬件事 務; 激活全局鎖定,以指示所述軟件事務的執(zhí)行;以及 在所述硬件事務結(jié)束時,確定所述全局鎖定的狀態(tài),以及如果所述全局鎖定是有效的, 則確定所述第一線程的過濾器組是否與所述第二線程的過濾器組交叉,而如果不是的話, 則提交所述硬件事務。8. 如權利要求7所述的方法,還包括提交所述軟件事務,并且在所述軟件事務結(jié)束時停 用所述全局鎖定。9. 如權利要求7所述的方法,還包括在所述全局鎖定在所述硬件事務結(jié)束時是無效的 時候在沒有確定所述過濾器組是否交叉的情況下提交硬件事務。10. 如權利要求7所述的方法,還包括: 將所述硬件事務對所述事務存儲器系統(tǒng)的事務存儲器的訪問的地址插入所述第一線 程的所述過濾器組;以及 基于將所述訪問的地址與一個或多個哈希值進行哈希來更新所述第一線程的所述過 濾器組的一個或多個字段。11. 如權利要求7所述的方法,還包括: 在所述軟件事務中并發(fā)地將哈希表從第一大小重新哈希到第二大??;以及 在所述硬件事務中訪問所述哈希表,并且使所述硬件事務能夠在所述并發(fā)重新哈希期 間進行提交。12. -種方法,包括: 在事務存儲器系統(tǒng)的第二硬件事務模式執(zhí)行第二硬件事務; 在所述第二硬件事務結(jié)束時提交所述第二硬件事務;以及 在所述第二硬件事務的提交之后,如果沖突存在于所述第二硬件事務與所述至少一個 軟件事務之間,則使與所述第二硬件事務并發(fā)執(zhí)行的至少一個軟件事務失效。13. 如權利要求12所述的方法,還包括在所述第二硬件事務的提交之前確定是否獲取 了提交鎖定,以及如果是的話,則確定沖突是否存在于所述第二硬件事務與獲取了所述提 交鎖定的第一軟件事務之間。14. 如權利要求12所述的方法,還包括在所述沖突存在于所述第二硬件事務與所述第 一軟件事務之間時中止所述第二硬件事務,其中如果所述第二硬件事務的過濾器組與所述 第一軟件事務的過濾器組交叉,則確定沖突存在。15. 如權利要求12所述的方法,還包括在所述第一軟件事務獲取所述提交鎖定之后,確 定是否由一個或多個硬件事務獲取了一個或多個事務鎖定,以及如果是的話,則將所述第 一軟件事務的提交延遲直到所述一個或多個事務鎖定被釋放。16. 如權利要求12所述的方法,還包括: 在所述事務存儲器系統(tǒng)的第一硬件事務模式執(zhí)行第一硬件事務; 在所述第一硬件事務結(jié)束時,確定至少一個軟件事務是否并發(fā)地執(zhí)行;以及 如果是的話,則中止所述第一硬件事務,否則提交所述第一硬件事務。17. 如權利要求12所述的方法,還包括: 驗證由所述第一軟件事務在所述第一軟件事務的執(zhí)行期間對所述事務存儲器系統(tǒng)的 事務存儲器的讀操作;以及 如果所述讀操作被驗證,則將所述讀操作的位置添加到所述第一軟件事務的過濾器 組。18. 如權利要求12所述的方法,還包括: 在第二軟件事務模式執(zhí)行第二軟件事務,包括在所述第二軟件事務的執(zhí)行開始時獲取 第一鎖定和提交鎖定,并且在所述第二軟件事務執(zhí)行期間直接更新一個或多個存儲器位 置;以及 在所述第二軟件事務結(jié)束時,提交所述第二軟件事務,使所述第一軟件事務模式的一 個或多個并發(fā)執(zhí)行軟件事務失效,并且此后釋放所述第一鎖定和所述提交鎖定。19. 包括多個指令的至少一個機器可讀介質(zhì),所述指令響應在計算裝置上執(zhí)行而使所 述計算裝置執(zhí)行如權利要求12至18中的任一項所述的方法。20. -種系統(tǒng),包括: 處理器,包括混合事務存儲器邏輯,以便并發(fā)地執(zhí)行至少一個硬件事務和至少一個軟 件事務, 其中所述混合事務存儲器邏輯在第一硬件事務模式執(zhí)行第一事務,直到提交所述第一 事務或者所述第一事務在所述第一硬件事務模式重試第一閾值次數(shù),以及此后,如果沒有 提交所述第一事務,則在第一軟件事務模式執(zhí)行所述第一事務,其中所述混合事務存儲器 邏輯包括交叉邏輯,以確定關聯(lián)在所述第一硬件模式所執(zhí)行的所述第一事務的過濾器組是 否與關聯(lián)在所述第一軟件事務模式所執(zhí)行的第二事務的過濾器組沖突,并且響應所述沖 突,所述混合事務存儲器邏輯防止在所述第一硬件事務模式的所述第一事務進行提交;以 及 耦合到所述處理器的事務存儲器。21. 如權利要求20所述的系統(tǒng),其中,所述混合事務存儲器邏輯在所述第一軟件事務模 式執(zhí)行所述第一事務,直到提交所述第一事務或者所述第一事務在所述第一軟件事務模式 重試第二閾值次數(shù),以及在所述第二閾值次數(shù)之后,在第二軟件事務模式執(zhí)行所述第一事 務,其中所述第一事務直接更新所述事務存儲器。22. 如權利要求20所述的系統(tǒng),其中,所述混合事務存儲器邏輯在所述第一硬件事務模 式的執(zhí)行之前在第二硬件事務模式執(zhí)行所述第一事務,其中在所述第一硬件事務模式執(zhí)行 所述第一事務之前,所述混合事務存儲器邏輯在所述第二硬件事務模式將所述第一事務執(zhí) 行第三閾值次數(shù)。23. 如權利要求20所述的系統(tǒng),其中,所述混合事務存儲器邏輯使所述第一事務在所述 第一軟件事務模式的執(zhí)行期間驗證讀數(shù)據(jù),基于與所述讀數(shù)據(jù)關聯(lián)的地址來更新與在所述 第一軟件事務模式所執(zhí)行的所述第一事務關聯(lián)的過濾器組,并且采用寫數(shù)據(jù)來更新哈希 表。24. 如權利要求23所述的系統(tǒng),其中,所述混合事務存儲器邏輯使: 在第二軟件事務模式的第二事務在所述第二事務開始時得到第一鎖定和第二鎖定,并 且此后在所述第二事務的執(zhí)行期間直接更新所述事務存儲器;以及 在所述第一軟件事務模式的所述第一事務在所述第一事務的提交時得到所述第一鎖 定和所述第二鎖定,并且此后采用來自所述哈希表的所述寫數(shù)據(jù)來更新所述事務存儲器, 以及使在所述第一軟件事務模式并發(fā)執(zhí)行的至少一個其他軟件事務失效。
【文檔編號】G06F17/30GK106062707SQ201580010928
【公開日】2016年10月26日
【申請日】2015年3月25日
【發(fā)明人】I.卡爾丘, J.E.戈特施利奇, T.什佩斯曼, G.A.波坎
【申請人】英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1