<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 事務(wù)存儲結(jié)構(gòu)的實現(xiàn)

          事務(wù)存儲結(jié)構(gòu)的實現(xiàn)

          作者: 時間:2012-06-04 來源:網(wǎng)絡(luò) 收藏

          但在執(zhí)行沖突檢測的過程中也會存在錯誤的沖突,比如:當(dāng)處理機(jī)Q請求訪問一個數(shù)據(jù)塊,該數(shù)據(jù)塊在目錄中的狀態(tài)為M@P,而處理機(jī)P已經(jīng)執(zhí)行到后續(xù)事務(wù),同時也置了溢出位。P發(fā)送沖突信號給Q,但這個沖突并不是因處理機(jī)Q請求的數(shù)據(jù)正被其他占有而產(chǎn)生的沖突,是一種無關(guān)的沖突。所以必須采取一種機(jī)制將目錄狀態(tài)及時更新。

          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ù)。它為每一個執(zhí)行線程開辟一片日志區(qū)域,并將該區(qū)域入口地址寫到Log Base寄存器中,同時當(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ā)生切換時,操作系統(tǒng)可以通過擴(kuò)展目前的TCB(線程控制塊)來對事務(wù)相關(guān)寄存器內(nèi)容等信息進(jìn)行保存。

          再次,當(dāng)發(fā)生事務(wù)級線程切換時,操作系統(tǒng)判斷切換原因(包括其他線程搶占、時間片到達(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è)定一個門限值,如果同一事務(wù)回滾數(shù)超過此門限,操作系統(tǒng)可以強(qiáng)行中止該事務(wù)而調(diào)度其他事務(wù)。

          3 結(jié)論及展望

          本文介紹TM的基本原理,并對當(dāng)前主流TM系統(tǒng)LogTM進(jìn)行分析實現(xiàn),得出以下結(jié)論:

          ⑴要實現(xiàn)高效的事務(wù)處理必須要有一個很好的基于事務(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ī)與外設(shè)信息請關(guān)注:21ic計算機(jī)與外設(shè)頻道


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 存儲結(jié)構(gòu)

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();