專利名稱:一種硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種屬于計算機系統(tǒng)結(jié)構(gòu)中的多線程并行編程手段,特別涉及一種硬 件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法。
背景技術(shù):
當前,隨著工藝和應(yīng)用模式的發(fā)展,無論是高端還是低端、通用式還是嵌入式,傳 統(tǒng)的采用指令級并行的微處理器系統(tǒng)結(jié)構(gòu)正在由單線程向多線程、單處理器向多處理器、 單核向多核進行發(fā)展。與此同時,人們應(yīng)用中大規(guī)模數(shù)據(jù)處理的需求也在與日俱增。如何 建立一個有效的編程模型使得并行程序可以充分利用這些CPU和核,發(fā)揮多核處理器的資 源優(yōu)勢,從根本上提高并行程序運行性能、滿足人們的計算需求,是擺在研究人員面前一個 急需解決的難題。現(xiàn)在人們編寫并行程序的主要方法是多線程,硬件或軟件的并行化也是 朝著挖掘更多可以并行的線程的方向發(fā)展。傳統(tǒng)的并行程序設(shè)計方法需要程序員來維護各 個進程之間的同步,隨著進程數(shù)目的增加以及共享資源的增多,手工維護這種同步越來越 困難。在CMP/SMP結(jié)構(gòu)上采用由用戶顯式制導(dǎo)的并行程序設(shè)計模型,使用鎖和同步變量來 實現(xiàn)同步的方法存在很大的局限性。粗粒度鎖不易開發(fā)并行性,細粒度鎖會帶來較大的額 外系統(tǒng)開銷;同時鎖機制會導(dǎo)致死鎖、優(yōu)先權(quán)倒置、編程困難等種種問題。事務(wù)存儲(Transactional Memory,TM)模型提供了一種在CMP/SMP結(jié)構(gòu)上程序 并行執(zhí)行和同步的方法,能夠解決鎖機制帶來的種種問題,提高程序的并發(fā)性。事務(wù)存儲 模型使得程序在發(fā)生數(shù)據(jù)沖突時才串行化執(zhí)行,最大限度地挖掘程序中潛在的并行性,極 大地提高了多線程編程的正確性和效率,使得程序員可以集中精力于多核程序的設(shè)計。目 前有大量的研究工作已經(jīng)或正致力于硬件支持的事務(wù)存儲模型(Hardware Transactional Memory, HTM)的研究,充分顯示出該方案可能被未來主流CMP結(jié)構(gòu)采納的巨大潛力。對于HTM系統(tǒng)來說,當一個事務(wù)的執(zhí)行時間過長,超過一個時間片的限制時,事務(wù) 線程會先被阻塞,等到分配到新的時間片,事務(wù)可能被遷移到另外的處理器核上繼續(xù)執(zhí)行。 但是事務(wù)緩沖區(qū)存在難以遷移的特點,所以被喚醒的事務(wù)無法在新的處理器核上恢復(fù)事務(wù) 現(xiàn)場,容易導(dǎo)致事務(wù)頻繁重啟。對于這個問題,目前已有的硬件型事務(wù)存儲系統(tǒng)結(jié)構(gòu)采取將 事務(wù)限定在一個時間片內(nèi)執(zhí)行完畢的辦法,但是無法實質(zhì)上解決事務(wù)遷移的問題,反而限 制了事務(wù)的靈活性。因此,針對事務(wù)遷移問題,設(shè)計一種有效的阻塞喚醒方法是有十分重要 的。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法,該方 法解除了硬件型事務(wù)存儲系統(tǒng)中事務(wù)必須在一個時間片內(nèi)執(zhí)行完畢的限制,解決了事務(wù)緩 沖區(qū)難以遷移的問題,優(yōu)化了硬件型事務(wù)存儲系統(tǒng)中的事務(wù)的高效執(zhí)行。本發(fā)明的一種硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法,該方法解除了硬 件型事務(wù)存儲系統(tǒng)中事務(wù)必須在一個時間片內(nèi)執(zhí)行完畢的限制,具體實現(xiàn)步驟為
第一步喚醒事務(wù)線程(A)當處理器開始執(zhí)行事務(wù)時,一方面事務(wù)線程寄存器記錄下當前所執(zhí)行的事務(wù) 線程的標識符;(B)另一方面在事務(wù)緩沖區(qū)的讀/寫標志位中記錄下當前所執(zhí)行的事務(wù)的數(shù)據(jù);(C)若事務(wù)線程的執(zhí)行時間超過一個時間片,則阻塞該線程;(D)若事務(wù)線程的執(zhí)行時間未超過一個時間片,則查看事務(wù)是否執(zhí)行完成,若未完 成,繼續(xù)執(zhí)行當前事務(wù);(E)當事務(wù)被執(zhí)行完成后則進行事務(wù)提交;(F)對于阻塞的線程需要依據(jù)時間片輪轉(zhuǎn)調(diào)度機制來決定喚醒事務(wù)線程;所述的時間片輪轉(zhuǎn)調(diào)度機制是當線程用完它的時間片后,它將被轉(zhuǎn)移到就緒線 程隊列的末尾,直到排在它之前的所有線程全部執(zhí)行完畢或者時間片用完時,操作系統(tǒng)才 將其喚醒;第二步被喚醒的事務(wù)線程檢查事務(wù)現(xiàn)場(A)當事務(wù)線程被喚醒時,根據(jù)事務(wù)線程寄存器中的線程標識符能夠得到當前處 理器核內(nèi)正在執(zhí)行的事務(wù)線程,進而根據(jù)事務(wù)現(xiàn)場判斷條件來判斷事務(wù)現(xiàn)場是否被破壞;(B)若是,則對事務(wù)現(xiàn)場已被破壞的事務(wù),清除事務(wù)緩沖區(qū)內(nèi)的全部數(shù)據(jù),并重新 啟動事務(wù);(C)若否,則對事務(wù)繼續(xù)執(zhí)行并提交;所述的事務(wù)現(xiàn)場是指事務(wù)緩沖區(qū)內(nèi)保存的事務(wù)的讀、寫數(shù)據(jù);所述的事務(wù)現(xiàn)場判斷條件是如果事務(wù)線程寄存器中的線程標識符等于被喚醒事 務(wù)線程的標識符,則事務(wù)緩沖區(qū)內(nèi)保存的是該事務(wù)的讀、寫數(shù)據(jù),事務(wù)現(xiàn)場未被破壞;如果 事務(wù)線程寄存器中的線程標識符不等于被喚醒的事務(wù)線程的標識符,則事務(wù)緩沖區(qū)內(nèi)保存 的是臟數(shù)據(jù),事務(wù)現(xiàn)場已被破壞。本發(fā)明阻塞喚醒的優(yōu)點在于①本發(fā)明基于現(xiàn)有的多核處理器結(jié)構(gòu),只需在每個處理器核內(nèi)增加少量硬件即可 支持事務(wù)執(zhí)行,這些硬件包括一個事務(wù)緩沖區(qū)和一個事務(wù)線程寄存器。②本發(fā)明只需在處理器核內(nèi)增加少量硬件即可支持事務(wù)執(zhí)行,這些硬件型事務(wù)存 儲系統(tǒng)包括一個事務(wù)緩沖區(qū)和一個事務(wù)線程寄存器。本發(fā)明的方法解除了硬件型事務(wù)存儲 系統(tǒng)中事務(wù)必須在一個時間片內(nèi)執(zhí)行完畢的限制,解決了事務(wù)緩沖區(qū)難以遷移的問題,優(yōu) 化了硬件型事務(wù)存儲系統(tǒng)中的事務(wù)的高效執(zhí)行。
圖1是本發(fā)明硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法的流程圖。圖2是本發(fā)明硬件型事務(wù)存儲系統(tǒng)的結(jié)構(gòu)圖。圖3是未采用本發(fā)明方法的事務(wù)存儲系統(tǒng)在不同處理器個數(shù)下的加速比圖。圖4是采用本發(fā)明方法的事務(wù)存儲系統(tǒng)在不同處理器個數(shù)下的加速比圖。圖5是未采用本發(fā)明方法的事務(wù)存儲系統(tǒng)在不同處理器個數(shù)下的啟動事務(wù)個數(shù) 與提交事務(wù)個數(shù)之比。圖6是采用本發(fā)明方法的事務(wù)存儲系統(tǒng)在不同處理器個數(shù)下的啟動事務(wù)個數(shù)與提交事務(wù)個數(shù)之比。
具體實施例方式下面將結(jié)合附圖和實施例對本發(fā)明做進一步的詳細說明。參見圖1所示,本發(fā)明是一種硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法, 該方法是這樣實現(xiàn)的第一步喚醒事務(wù)線程(A)當處理器開始執(zhí)行事務(wù)時,一方面事務(wù)線程寄存器(TTR)記錄下當前所執(zhí)行 的事務(wù)線程的標識符activeTID ;(B)另一方面在事務(wù)緩沖區(qū)(TC)的讀/寫標志位中記錄下當前所執(zhí)行的事務(wù)的數(shù) 據(jù);(C)若事務(wù)線程的執(zhí)行時間超過一個時間片(是),則阻塞該線程;(D)若事務(wù)線程的執(zhí)行時間未超過一個時間片(否),則查看事務(wù)是否執(zhí)行完成, 若未完成(否),繼續(xù)執(zhí)行當前事務(wù);(E)當事務(wù)執(zhí)行完成(是)則進行事務(wù)提交;(F)對于阻塞的線程依據(jù)時間片輪轉(zhuǎn)調(diào)度機制(TCSM)來決定喚醒事務(wù)線程;所述的時間片輪轉(zhuǎn)調(diào)度機制(TCSM)是當線程用完它的時間片后,它將被轉(zhuǎn)移到 就緒線程隊列的末尾,直到排在它之前的所有線程全部執(zhí)行完畢或者時間片用完時,操作 系統(tǒng)才將其喚醒;第二步被喚醒的事務(wù)線程檢查事務(wù)現(xiàn)場(A)當事務(wù)線程被喚醒時,根據(jù)TTR中的線程標識符能夠得到當前處理器核內(nèi)正 在執(zhí)行的事務(wù)線程,進而根據(jù)事務(wù)現(xiàn)場判斷條件來判斷事務(wù)現(xiàn)場是否被破壞;(B)若是,則對事務(wù)現(xiàn)場已被破壞的事務(wù),清除事務(wù)緩沖區(qū)TC內(nèi)的全部數(shù)據(jù),并重 新啟動事務(wù);(C)若否,則對事務(wù)繼續(xù)執(zhí)行并提交;所述的事務(wù)現(xiàn)場是指事務(wù)緩沖區(qū)內(nèi)保存的事務(wù)的讀、寫數(shù)據(jù);所述的事務(wù)現(xiàn)場判斷條件是如果TTR中的線程標識符等于被喚醒事務(wù)線程的標 識符,則TC內(nèi)保存的是該事務(wù)的讀、寫數(shù)據(jù),事務(wù)現(xiàn)場未被破壞;如果TTR中的線程標識符 不等于被喚醒的事務(wù)線程的標識符,則TC內(nèi)保存的是臟數(shù)據(jù),事務(wù)現(xiàn)場已被破壞。參見圖2所示,基于現(xiàn)有的多核處理器結(jié)構(gòu),通過在處理器核內(nèi)增加部分支持事 務(wù)執(zhí)行的硬件,以實現(xiàn)對程序中事務(wù)的高效執(zhí)行。在本發(fā)明中,硬件型事務(wù)存儲系統(tǒng)包括一 個事務(wù)緩沖區(qū)和一個事務(wù)線程寄存器。事務(wù)線程寄存器(Transaction Thread Register,TTR),主要用于記錄當前執(zhí)行 的事務(wù)線程的標識符,以便在事務(wù)阻塞后被重新調(diào)度執(zhí)行時判斷事務(wù)現(xiàn)場是否正常。事務(wù) 線程寄存器的結(jié)構(gòu)與通用寄存器類似,寬度為32位,配備在每一個處理器核上。事務(wù)緩沖區(qū)TC主要用于緩沖事務(wù)執(zhí)行過程中對變量所做的修改,并保存相關(guān)狀 態(tài),以便最終提交或回滾。事務(wù)緩沖區(qū)結(jié)構(gòu)與高速緩沖存儲器(cache)結(jié)構(gòu)類似,數(shù)據(jù)的存 儲以行為單位,主要差異在于,對緩沖的數(shù)據(jù)保存新(new)、舊(old)兩個拷貝,其中舊拷貝 是指事務(wù)開始前的數(shù)據(jù)拷貝,新拷貝則為事務(wù)執(zhí)行過程中的修改版本。每行數(shù)據(jù)還配有1
5個讀標志位和1個寫標志位,用于記錄該行數(shù)據(jù)在事務(wù)執(zhí)行過程中的讀/寫情況。在本發(fā) 明事務(wù)緩沖區(qū)TC中Tag表示編號,Data表示數(shù)據(jù),Old表示數(shù)據(jù)的原始版本,New表示數(shù)據(jù) 的更新版本,State表示事務(wù)狀態(tài),Read表示讀標志位,Write表示寫標志位。本發(fā)明的性能評價是基于系統(tǒng)結(jié)構(gòu)模擬器Virtutech Simics及多核處理器 GEMS (general execution-driven multiprocessor simulator)進行。目標系統(tǒng)基于可擴 充處理器架構(gòu)SPARC (Scalable Processor ARChitecture),并擴展了事務(wù)存儲相關(guān)的硬件 部件和指令系統(tǒng),處理器核的個數(shù)從2 16個,運行Solaris操作系統(tǒng)。使用了 5個測試程序?qū)δ繕讼到y(tǒng)進行了測試,表1給出了測試程序的介紹。表1.測試程序介紹 注Deque (double-ended queue)是GEMS模擬器中自帶的一種具有隊列和棧的性 質(zhì)的數(shù)據(jù)結(jié)構(gòu)的基準測試程序。FFT(Fast Fourier Transformation)是斯坦福大學(xué)發(fā)明的通用并行測試程序集 SPLASH-2 (Stanford Parallel Applications for Shared M emory)中的傅里葉變換算法 的測試程序。LU (Lower/Upper triangular matrix)是斯坦福大學(xué)發(fā)明的通用并行測試程序集 SPLASH-2 (Stanford Parallel Applications for Shared Memory)中具有矩陣 LU 分解的 算法的測試程序。由圖3所示,在不使用本發(fā)明方法的事務(wù)存儲系統(tǒng)中,當處理器個數(shù)為2時,加速 比最大為1. 14 ;當處理器個數(shù)為4時,加速比最大為1. 15 ;當處理器個數(shù)為8時,加速比最 大為1. 7 ;當處理器個數(shù)為16時,加速比最大為1. 8。由圖4所示,在使用了本發(fā)明方法的事務(wù)存儲系統(tǒng)中,當處理器個數(shù)為2時,加速 比最大為1. 15 ;當處理器個數(shù)為4時,加速比最大為1. 23 ;當處理器個數(shù)為8時,加速比最 大為1. 73 ;當處理器個數(shù)為16時,加速比最大為1. 95。由此可知,隨著處理器個數(shù)的增長,使用了本發(fā)明方法的事務(wù)存儲系統(tǒng)與未使用 本方法的事務(wù)存儲系統(tǒng)的加速比都在逐漸提高,因此本發(fā)明方法比鎖機制在長事務(wù)處理上 的性能有所提高,在同等處理器個數(shù)下,使用了本發(fā)明方法對不使用本發(fā)明方法的性能提 升表現(xiàn)更加明顯。加速比是指事務(wù)存儲系統(tǒng)與鎖機制的系統(tǒng)進行事務(wù)處理的時間的反比。一個事務(wù)由于沖突回滾后需要被重新啟動,因而事務(wù)程序運行時啟動事務(wù)個數(shù)與成功提交事務(wù)個數(shù)的比值反映出了事務(wù)回滾的頻繁程度,如果該比值為1則表示無事務(wù)回 滾發(fā)生,比值越大說明回滾越頻繁。由圖5所示,在不使用本發(fā)明方法的事務(wù)存儲系統(tǒng)中,當處理器個數(shù)為2時,啟動 事務(wù)個數(shù)與提交事務(wù)個數(shù)的比值最大為1. 07 ;當處理器個數(shù)為4時,該比值最大為1. 17 ; 當處理器個數(shù)為8時,該比值最大為1. 26 ;當處理器個數(shù)為16時,該比值最大為1. 35。在 同等處理器個數(shù)下,由于deque (高)程序的長事務(wù)最為密集,因此發(fā)生沖突進行回滾的概 率也較大,所以比值最高,而FFT和LU程序中沒有長事務(wù),因此發(fā)生沖突進行回滾的概率很 低,所以比值一般接近于1。由圖6所示,在使用了本方法的事務(wù)存儲系統(tǒng)中,當處理器個數(shù)為2時,啟動事務(wù) 個數(shù)與提交事務(wù)個數(shù)的比值最大為1. 05 ;當處理器個數(shù)為4時,該比值最大為1. 12 ;當處 理器個數(shù)為8時,該比值最大為1. 19 ;當處理器個數(shù)為16時,該比值最大為1. 24。由此可知,在同等處理器個數(shù)下,使用了本發(fā)明方法比不使用本發(fā)明方法的事務(wù) 回滾概率更低,本發(fā)明方法使得事務(wù)的執(zhí)行更加高效。
權(quán)利要求
一種硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法,其特征在于該方法是這樣實現(xiàn)的第一步喚醒事務(wù)線程(A)當處理器開始執(zhí)行事務(wù)時,一方面事務(wù)線程寄存器記錄下當前所執(zhí)行的事務(wù)線程的標識符;(B)另一方面在事務(wù)緩沖區(qū)的讀/寫標志位中記錄下當前所執(zhí)行的事務(wù)的數(shù)據(jù);(C)若事務(wù)線程的執(zhí)行時間超過一個時間片,則阻塞該線程;(D)若事務(wù)線程的執(zhí)行時間未超過一個時間片,則查看事務(wù)是否執(zhí)行完成,若未完成,繼續(xù)執(zhí)行當前事務(wù);(E)當事務(wù)被執(zhí)行完成后則進行事務(wù)提交;(F)對于阻塞的線程需要依據(jù)時間片輪轉(zhuǎn)調(diào)度機制來決定喚醒事務(wù)線程;所述的時間片輪轉(zhuǎn)調(diào)度機制是當線程用完它的時間片后,它將被轉(zhuǎn)移到就緒線程隊列的末尾,直到排在它之前的所有線程全部執(zhí)行完畢或者時間片用完時,操作系統(tǒng)才將其喚醒;第二步被喚醒的事務(wù)線程檢查事務(wù)現(xiàn)場(A)當事務(wù)線程被喚醒時,根據(jù)事務(wù)線程寄存器中的線程標識符能夠得到當前處理器核內(nèi)正在執(zhí)行的事務(wù)線程,進而根據(jù)事務(wù)現(xiàn)場判斷條件來判斷事務(wù)現(xiàn)場是否被破壞;(B)若是,則對事務(wù)現(xiàn)場已被破壞的事務(wù),清除事務(wù)緩沖區(qū)內(nèi)的全部數(shù)據(jù),并重新啟動事務(wù);(C)若否,則對事務(wù)繼續(xù)執(zhí)行并提交;所述的事務(wù)現(xiàn)場是指事務(wù)緩沖區(qū)內(nèi)保存的事務(wù)的讀、寫數(shù)據(jù);所述的事務(wù)現(xiàn)場判斷條件是如果事務(wù)線程寄存器中的線程標識符等于被喚醒事務(wù)線程的標識符,則事務(wù)緩沖區(qū)內(nèi)保存的是該事務(wù)的讀、寫數(shù)據(jù),事務(wù)現(xiàn)場未被破壞;如果事務(wù)線程寄存器中的線程標識符不等于被喚醒的事務(wù)線程的標識符,則事務(wù)緩沖區(qū)內(nèi)保存的是臟數(shù)據(jù),事務(wù)現(xiàn)場已被破壞。
2.根據(jù)權(quán)利要求1所述的硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法,其特征在 于硬件型事務(wù)存儲系統(tǒng)包括一個事務(wù)緩沖區(qū)和一個事務(wù)線程寄存器。
3.根據(jù)權(quán)利要求1所述的硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的阻塞喚醒方法,其特征在 于該方法解除了硬件型事務(wù)存儲系統(tǒng)中事務(wù)必須在一個時間片內(nèi)執(zhí)行完畢的限制,解決 了事務(wù)緩沖區(qū)難以遷移的問題,優(yōu)化了硬件型事務(wù)存儲系統(tǒng)中的事務(wù)的高效執(zhí)行。全文摘要
本發(fā)明公開了一種硬件型事務(wù)存儲系統(tǒng)中事務(wù)線程的的阻塞喚醒方法,該方法在事務(wù)支持硬件中增加一個事務(wù)線程寄存器,在該寄存器中記錄當前執(zhí)行的事務(wù)線程的標識符;然后當阻塞的事務(wù)線程被重新調(diào)度執(zhí)行,如果與寄存器中的線程標識符相同,則該事務(wù)繼續(xù)進行提交操作;如果與寄存器中的線程標識符不同,則清除當前事務(wù)現(xiàn)場,并讓事務(wù)重新執(zhí)行。本發(fā)明的方法解除了硬件型事務(wù)存儲系統(tǒng)中事務(wù)必須在一個時間片內(nèi)執(zhí)行完畢的限制,解決了事務(wù)緩沖區(qū)難以遷移的問題,優(yōu)化了硬件型事務(wù)存儲系統(tǒng)中的事務(wù)的高效執(zhí)行。
文檔編號G06F9/46GK101908000SQ201010220900
公開日2010年12月8日 申請日期2010年7月8日 優(yōu)先權(quán)日2010年7月8日
發(fā)明者劉軼, 吳名瑜, 張昕, 張翠, 李鶴 申請人:北京航空航天大學(xué)