事務記憶體
事務記憶體是一種並行程式設計的方式,其來自於資料庫管理系統(DBMS)中的事務(Transaction)概念。事務記憶體目前有兩種實現方式,基於軟體的STM(Software Transactional Memory)和基於硬體的HTM(Hardware Transacational Memory)。
背景
採用任務並行時必須考慮執行緒間同步的問題:最初步也是最通常的方法是使用鎖,只有獲得了鎖的執行緒在允許訪問臨界區,但是使用鎖會發生一些問題,諸如優先權反轉(Priority inversion)、死鎖(Deadlock)、護航(Convoying)等問題;於是後來產生了無鎖編程(Lockless programming)的概念,即使用原子操作(Atomic Operations)和同步路障(Memory barrier)來完成執行緒間同步的功能,這種方法規避了使用鎖時出現的上述問題並極大的提高了並行度,但是面臨著原子操作本身功能局限性和組合性(Compositionality)不佳的問題。原子操作的局限性使得無鎖編程的算法設計很難,組合性則是指數個同步的原子對象組合應該也是一個同步的原子對象。
事務的概念
事務的概念源自於資料庫管理系統(DBMS)中資料庫事務的概念。在資料庫管理系統中,事務必須滿足ACID性質,即原子性,一致性,隔離性和持久性。原子性指的是事務中的動作要么全部執行,要么一個都不執行;一致性指的是任何時刻,資料庫必須處於一致性狀態,即必須滿足某些預先設定的條件;隔離性是指一個事務不能看見其他未提交事務所涉及到的內部對象的狀態,而持久性則是指一個已提交的事務對資料庫系統的改變必須是永久的。
事務記憶體的分類和涉及到的基本術語
事務記憶體按照更新數據時的機制不同,可分為 延遲更新(deferred-update) 和 直接更新 (direct-update) 兩大類。延遲更新軟體事務記憶體實現的基本思想是一個執行緒對僅對對象的一個副本進行改變,如果此次執行不與其他執行緒發生同步衝突,則此事務成功並執行提交(Commit)動作,如果失敗則執行回滾(Abort 或 Rollback)動作。直接更新則是直接對對象進行更新,並使用顯式的同步語句避免其他事物在進行更新的時候修改此對象。顯然在直接更新時需要系統記錄此對象的原始值,以便在回滾時可以恢復。
根據在事務衝突時的處理機制不同,TM又可以分為 悲觀和樂觀的並發控制(pessimistic & optimistic concurrency control)兩大類。在悲觀的並發控制中,衝突一旦發生就必須要得到偵測並加以解決,而在樂觀的並發控制里,衝突的偵測和解決可以延遲,只要是在事務提交之前進行就可以了。
事務還有粒度(granularity)的概念:最容易讓程式設計師理解的粒度是對象粒度;在此粒度下,任何衝突發生的判決是在對象範圍內進行的:即使兩個事務修改的記憶體塊不重合,只要他們是在同一個對象內,那么就可以判斷這兩個事務衝突。更精細的粒度是字粒度(word granularity)和位元組粒度(byte granularity),在這兩種粒度下,衝突的檢測更精細,更利於事務記憶體系統性能的提升,但是卻會給程式設計師帶來不小的麻煩。
軟體事務記憶體(STM)
軟體事務記憶體的實現包括原子對象(Atomic object)、衝突判決器(Conflict manager)。其中原子對象的實現是最重要的,它是各事務之間通信同步的媒介。原子對象的實現又分為順序性實現和事務實現:其中事務實現還要要求實現同步和恢復(recovery)功能,同步功能即意味著要求有檢測事務衝突的能力,而恢復功能則意味著需要在事務失敗的時候將對象回滾到事務執行之前的狀態。目前提出的原子對象一般是基於讀/寫衝突(Read/Write conflict)的機制:原子對象提供兩個接口,一個為讀接口,一個為寫接口,通過讀藉口可以得到一個可以讀的對象,而通過寫接口則可以得到一個可以寫的對象。為了檢測衝突(即多個事務並發時的同步情況),事務中可以設立兩個集合,一個為讀集(Read set),一個為寫集(Write set),分別記錄該事務所要處理的讀寫原子對象集。如果一個事務的讀集或寫集與另一個事務的寫集有交叉,則表明兩個事務衝突,需要衝突判決器進一步採取決策。
硬體事務記憶體(HTM)
Azul Systems在2009年推出的 Vega 2 微處理器支援硬體事務記憶體。
相關的話題
記憶體一致性模型 (Memory consistency model)無鎖編程(Lockless programming)任務並行事務提升(Transactional boosting)
參考書目
Transactional Memory,Synthesis Lectures on Computer Architecture,MarkD. Hill, University of Wisconsin, Madison