事務(wù)存儲結(jié)構(gòu)的實(shí)現(xiàn)
但在執(zhí)行沖突檢測的過程中也會存在錯(cuò)誤的沖突,比如:當(dāng)處理機(jī)Q請求訪問一個(gè)數(shù)據(jù)塊,該數(shù)據(jù)塊在目錄中的狀態(tài)為M@P,而處理機(jī)P已經(jīng)執(zhí)行到后續(xù)事務(wù),同時(shí)也置了溢出位。P發(fā)送沖突信號給Q,但這個(gè)沖突并不是因處理機(jī)Q請求的數(shù)據(jù)正被其他占有而產(chǎn)生的沖突,是一種無關(guān)的沖突。所以必須采取一種機(jī)制將目錄狀態(tài)及時(shí)更新。
2.3 操作系統(tǒng)對LogTM的支持
由于事務(wù)的引入,傳統(tǒng)操作系統(tǒng)已經(jīng)不能滿足要求,必須更改或擴(kuò)展操作系統(tǒng)使事務(wù)能穩(wěn)定高效的執(zhí)行。
首先,基于LogTM系統(tǒng),操作系統(tǒng)負(fù)責(zé)對日志進(jìn)行創(chuàng)建和維護(hù)。它為每一個(gè)執(zhí)行線程開辟一片日志區(qū)域,并將該區(qū)域入口地址寫到Log Base寄存器中,同時(shí)當(dāng)某數(shù)據(jù)存入日志后使Log Pointer指針后移,用來存放新數(shù)據(jù)。當(dāng)發(fā)生回滾,操作系統(tǒng)根據(jù)目前Log Pointer指針從后向前恢復(fù)數(shù)據(jù)直到Log Pointer與Log Base指向相同為止。
其次,當(dāng)執(zhí)行事務(wù)發(fā)生切換時(shí),操作系統(tǒng)可以通過擴(kuò)展目前的TCB(線程控制塊)來對事務(wù)相關(guān)寄存器內(nèi)容等信息進(jìn)行保存。
再次,當(dāng)發(fā)生事務(wù)級線程切換時(shí),操作系統(tǒng)判斷切換原因(包括其他線程搶占、時(shí)間片到達(dá)、事務(wù)之間沖突等而執(zhí)行的切換),通知調(diào)度器采取不同的切換策略或沖突策略來完成切換。
最后,由于中斷內(nèi)新創(chuàng)建的事務(wù)和被中斷事務(wù)沖突而導(dǎo)致活鎖(被中斷事務(wù)掛起得不到執(zhí)行,中斷內(nèi)新創(chuàng)建事務(wù)由于沖突策略一直回滾——重新執(zhí)行——回滾,也得不到執(zhí)行),操作系統(tǒng)必須能夠記錄回滾次數(shù)并設(shè)定一個(gè)門限值,如果同一事務(wù)回滾數(shù)超過此門限,操作系統(tǒng)可以強(qiáng)行中止該事務(wù)而調(diào)度其他事務(wù)。
3 結(jié)論及展望
本文介紹TM的基本原理,并對當(dāng)前主流TM系統(tǒng)LogTM進(jìn)行分析實(shí)現(xiàn),得出以下結(jié)論:
⑴要實(shí)現(xiàn)高效的事務(wù)處理必須要有一個(gè)很好的基于事務(wù)模型的硬件結(jié)構(gòu)。比如:LogTM,硬件專門為TM添加了LogBase、LogPointer等寄存器并改變了cache的結(jié)構(gòu),在cache中加入了讀(R)和寫(W)標(biāo)志位;這樣對事務(wù)版本管理以及沖突管理都帶來了前所未有的作用,這也是此TM結(jié)構(gòu)優(yōu)越性的體現(xiàn)。
⑵要高效的進(jìn)行事務(wù)處理必須要有TM操作系統(tǒng)的支持,上文中提到了一些操作系統(tǒng)對LogTM的相關(guān)支持,但如果要完美的支持事務(wù)還需要不斷更改和優(yōu)化已有的操作系統(tǒng),最終的目的是將操作系統(tǒng)事務(wù)化,并能很好的處理事務(wù)化的用戶級應(yīng)用。
⑶目前TM系統(tǒng)(包括LogTM)雖然通過一些特有的結(jié)構(gòu)和機(jī)制解決了事務(wù)處理的一些問題,但是面對今后的發(fā)展,像多級嵌套事務(wù)的復(fù)雜應(yīng)用、中斷事務(wù)化(特別是外部設(shè)備的中斷)、掛起事物與執(zhí)行事務(wù)沖突問題、被切換事務(wù)的執(zhí)行選擇(重新調(diào)度后,被切換事務(wù)可能回滾也可能繼續(xù)接著執(zhí)行)等問題都需要我們不斷的去研究,去尋找最優(yōu)的解決辦法一一攻克,所以對TM的研究任重而道遠(yuǎn)。
參考文獻(xiàn)
[1]Yen, L. and J. Bobba, et al. LogTM-SE:Decoupling Hardware Transactional Memory from Caches. In Proc. of Thirteenth Annual International Symp. on High-Performance Computer Architecture.Feb.2007
[2]Moravan, M. J. and J. Bobba, et al. Supporting Nested Transactional Memory in LogTM. In Proc. of the Twelfth International Conference on Architectural Support for Programming Languages and Operating Systems, pages 359-370,Oct.2006
[3]Moore, K. E. and J. Bobba, et al. LogTM: Log_based Transactional Memory. In Proc. of the Twelfth IEEE Symp. on High-Performance Computer Architecture, pages 258–269, Feb. 2006
[4]Herlihy, M. and J. E. B. Moss . Transactional Memory:Architectural Support for Lock-Free Data Structures. In Proc. of the 20th Annual International Symp. on Computer Architecture, pages 289–300, May 1993
[5]Hammond, L. and V. Wong, et al. Transactional Memory Coherence and Consistency. In Proc. of the 31st Annual Intl. Symp. on Computer Architecture, June 2004
[6]Hammond, L. and B. D. Carlstrom, et al. Programming with Transactional Coherence and Consistency(TCC), ASPLOS.04, October 7–13, 2004
更多計(jì)算機(jī)與外設(shè)信息請關(guān)注:21ic計(jì)算機(jī)與外設(shè)頻道
評論