本發(fā)明專利技術(shù)公開了一種Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法及系統(tǒng),利用性能監(jiān)控單元的事件計數(shù)器計算已記錄的分支記錄數(shù),若所述事件計數(shù)器的計數(shù)值已達到閾值,則性能監(jiān)控單元觸發(fā)中斷處理程序;讀取分支記錄緩沖區(qū)內(nèi)最新的一條分支記錄,中斷處理程序成功跳轉(zhuǎn)執(zhí)行的最后位置即發(fā)生并發(fā)錯誤的位置。本發(fā)明專利技術(shù)利用硬件機制來記錄程序執(zhí)行的路徑,不需要修改程序的源代碼,恢復(fù)執(zhí)行流的過程是借助分支記錄緩沖區(qū)來獲得分支指令的分支記錄,該過程由硬件組件分支記錄緩沖區(qū)獲取,且分支記錄緩沖區(qū)上下文切換和在線閱讀成本低,所以開銷幾乎為零。零。零。
【技術(shù)實現(xiàn)步驟摘要】
Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法及系統(tǒng)
[0001]本專利技術(shù)涉及并發(fā)缺陷檢測領(lǐng)域,特別是一種Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法及系統(tǒng)。
技術(shù)介紹
[0002]并發(fā)性是現(xiàn)代計算機的一個重要特征,它使計算機能夠更有效地執(zhí)行復(fù)雜任務(wù)并提高整體性能。并發(fā)提供了同一時間執(zhí)行多個任務(wù)的能力,這也就提高了系統(tǒng)的可靠性和可拓展性。引入并發(fā)可以幫助開發(fā)者更好地處理復(fù)雜的任務(wù)和問題,但是,凡事都有它的兩面性。盡管多核時代之下并發(fā)編程對于實現(xiàn)提升性能有著極大的重要性,但是由于多線程程序執(zhí)行的不確定性極易導(dǎo)致嚴重的并發(fā)錯誤,同時也給并發(fā)錯誤檢測帶來了困難。并發(fā)錯誤指的是多個進程或線程同時訪問共享資源的并發(fā)系統(tǒng)中發(fā)生的錯誤。當多個進程或線程同時訪問共享資源時,可能出現(xiàn)共享資源未經(jīng)過正確同步就被修改而導(dǎo)致程序出現(xiàn)意想不到的行為或崩潰。并發(fā)錯誤可以以各種形式表現(xiàn)出來,例如爭用條件、死鎖、活鎖和線程饑餓。一旦并發(fā)錯誤發(fā)生,程序或系統(tǒng)運行可能會出現(xiàn)不可預(yù)測的行為或錯誤的結(jié)果情況,這會嚴重損害系統(tǒng)的可用性,甚至造成巨大的經(jīng)濟損失。更重要的是,由于多線程并發(fā)執(zhí)行的不確定性,與其他類型的錯誤相比,并發(fā)錯誤往往很難查明其產(chǎn)生的原因。所以對于開發(fā)者來說如何避免和正確解決并發(fā)錯誤是一件極為頭疼的事情。
[0003]由于并發(fā)錯誤的出現(xiàn)會對系統(tǒng)的可用性和可靠性造成嚴重負面影響,我們必須及時地發(fā)現(xiàn)并解決該錯誤。目前已有一些解決并發(fā)問題的方法,如鎖機制、信號量、原子操作等。但這些方法都各有利弊,需要根據(jù)具體的場景來選擇解決方案。比如鎖機制是通過加鎖來防止多個線程同時訪問同一資源的同步機制,當線程獲取鎖時設(shè)置,當線程釋放鎖時釋放,保證同一時間只有一個線程可以訪問該資源,從而避免并發(fā)錯誤。但鎖機制可能會導(dǎo)致死鎖,即多個線程被阻塞等待彼此釋放鎖。當許多線程爭奪同一個鎖時,它們也可能導(dǎo)致性能問題。原子操作是一種不可中斷的操作,在執(zhí)行期間不會被其他線程中斷,從而避免了并發(fā)錯誤。不足的是,原子操作只能解決數(shù)據(jù)競爭這種特殊的并發(fā)錯誤,對于死鎖這類并發(fā)錯誤只能使用其他的解決方法。此外,原子操作也可能會導(dǎo)致性能問題。以上這些方法為了避免死鎖、競爭條件等問題則需要謹慎地設(shè)計代碼,這又會增加編程復(fù)雜度和維護成本。很顯然,目前的解決方法都有一定的劣勢,使用這些方法是無法有效以及高效的解決困難的并發(fā)問題。
[0004]除了以上提到的技術(shù),在計算機系統(tǒng)中用于解決并發(fā)錯誤的常見技術(shù)還包括回滾
?
重新執(zhí)行。這項技術(shù)包括檢測并發(fā)錯誤的發(fā)生,消除在導(dǎo)致錯誤的指令之后執(zhí)行的任何指令的影響,然后從導(dǎo)致錯誤指令之前的點開始重新執(zhí)行指令。當程序運行期間發(fā)生錯誤時,可以將程序回滾并從先前正確的檢查點重新執(zhí)行。由于并發(fā)性錯誤的不確定性重新執(zhí)行可以避免失敗。當多個事務(wù)同時對同一數(shù)據(jù)進行操作時,可能會出現(xiàn)并發(fā)沖突,比如兩個事務(wù)同時對同一個數(shù)據(jù)進行修改,這時就可以通過回滾
?
重新執(zhí)行來解決問題。雖然回滾
?
重新執(zhí)行可以有效地降低并發(fā)錯誤發(fā)生的可能性,但它在性能和系統(tǒng)資源方面有很大的開
銷,并且并不能解決全部并發(fā)錯誤,例如無法解決死鎖以及丟失更新的問題。
[0005]想要解決并發(fā)錯誤,首先得檢測出并發(fā)錯誤,查明其發(fā)生的原因。目前,學術(shù)界及工業(yè)界已經(jīng)在使用的檢測并發(fā)錯誤的一種方法是使用動態(tài)分析技術(shù),如數(shù)據(jù)競爭檢測和模型檢查。數(shù)據(jù)競爭檢測包括分析程序的執(zhí)行,以識別多個線程在沒有適當同步的情況下訪問同一共享資源的實例。模型檢查包括系統(tǒng)地探索所有可能的程序執(zhí)行,以識別潛在的并發(fā)錯誤。這兩種技術(shù)都可以有效地檢測并發(fā)錯誤,但由于監(jiān)控和分析的開銷,它們可能會減慢軟件系統(tǒng)的執(zhí)行速度。另一種方法是靜態(tài)分析技術(shù),這種方法包括分析軟件系統(tǒng)的源代碼,以識別潛在的并發(fā)問題,如競爭條件或死鎖。靜態(tài)分析工具可以掃描代碼中可能導(dǎo)致并發(fā)錯誤的特定模式或構(gòu)造,并為開發(fā)人員提供解決這些問題的反饋。靜態(tài)分析技術(shù)可能比動態(tài)分析技術(shù)更高效,但在檢測細微的并發(fā)錯誤方面可能會產(chǎn)生誤報。
[0006]除了以上兩種分析方法,實際上還可以通過記錄和跟蹤軟件系統(tǒng)的行為來檢測并發(fā)錯誤。X86架構(gòu)上的Last Branch Record(LBR)是一個用于記錄處理器執(zhí)行的分支指令的信息的硬件功能?,F(xiàn)在已經(jīng)有不少研究者通過使用LBR寄存器進行檢測并發(fā)錯誤相關(guān)的研究。例如,LBR
?
RECORD使用LBR寄存器來檢測Linux內(nèi)核代碼中的競爭條件。通過分析LBR寄存器中的存儲記錄,LBR
?
RECORD可以檢測當多個線程在沒有適當同步的情況下訪問共享資源時發(fā)生的競爭條件。
[0007]Arm架構(gòu)憑借著其功率效率、可擴展性、低成本和高性能等優(yōu)勢在近些年來越來越受歡迎,尤其是在移動設(shè)備和物聯(lián)網(wǎng)(IoT)領(lǐng)域。所以如今搭載Arm架構(gòu)機器的可靠性也變得尤為重要。2021年Arm公司發(fā)布Armv9體系結(jié)構(gòu)。Armv9體系結(jié)構(gòu)在兼容Armv8體系結(jié)構(gòu)的基礎(chǔ)上加入了一些新的特性,其中就包括分支記錄緩沖區(qū)擴展(Branch Record Buffer Extension,BRBE)(Martin Weidmann,Director Product Management,ATG ARM,LVC20
?
214 https://static.linaro.org/connect/lvc20/presentations/LVC20
?
214
?
0.pdf)。分支記錄緩沖區(qū)(BRB)是Arm處理器的一個硬件組件,它以低成本方式捕獲控制路徑歷史的分支記錄緩沖區(qū)。具體而言,分支指令的地址會記錄在BRBSRC寄存器中,分支記錄的目標地址會記錄在BRBTGT寄存器中,而分支指令的類型、跳轉(zhuǎn)是否有效以及目標地址的異常等級等信息則記錄BRBINF寄存器中,如圖1所示。現(xiàn)有技術(shù)中,沒有在Arm架構(gòu)上利用硬件功能來檢測并發(fā)錯誤問題的研究。
技術(shù)實現(xiàn)思路
[0008]本專利技術(shù)所要解決的技術(shù)問題是,針對現(xiàn)有技術(shù)不足,提供一種Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法及系統(tǒng),降低開銷。
[0009]為解決上述技術(shù)問題,本專利技術(shù)所采用的技術(shù)方案是:一種Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法,該方法包括:
[0010]S1、利用性能監(jiān)控單元的事件計數(shù)器統(tǒng)計已記錄的分支記錄數(shù),若所述事件計數(shù)器的計數(shù)值已達到閾值,則性能監(jiān)控單元觸發(fā)中斷處理程序;
[0011]S2、讀取分支記錄緩沖區(qū)內(nèi)最新的一條分支記錄,中斷處理程序成功跳轉(zhuǎn)執(zhí)行的最后位置即發(fā)生并發(fā)錯誤的位置。
[0012]ARM架構(gòu)中的性能監(jiān)控單元(PMU)是一種硬件組件,用于收集和監(jiān)控處理器的性能數(shù)據(jù)。與分支記錄緩沖區(qū)不同的是,性能監(jiān)控單元是可以引發(fā)中斷的。PMU提供了一組專門
的寄存器用于度量和分析處理器的各種性能指標,一般情況下編程人員只會使用性能監(jiān)控單元來計算與CPU相關(guān)的事件(執(zhí)行指令數(shù)、捕獲異常數(shù)、時鐘周期數(shù)等)、與cache有關(guān)的事件(cache訪問本文檔來自技高網(wǎng)...
【技術(shù)保護點】
【技術(shù)特征摘要】
1.一種Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法,其特征在于,該方法包括:S1、利用性能監(jiān)控單元的事件計數(shù)器統(tǒng)計已記錄的分支記錄數(shù),若所述事件計數(shù)器的計數(shù)值已達到閾值,則性能監(jiān)控單元觸發(fā)中斷處理程序;S2、讀取分支記錄緩沖區(qū)內(nèi)最新的一條分支記錄,中斷處理程序成功跳轉(zhuǎn)執(zhí)行的最后位置即發(fā)生并發(fā)錯誤的位置。2.根據(jù)權(quán)利要求1所述的Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法,其特征在于,步驟S1中,還包括:將分支記錄緩沖區(qū)內(nèi)存儲的指令信息數(shù)據(jù)放入提前分配好的物理內(nèi)存塊中。3.根據(jù)權(quán)利要求1所述的Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法,其特征在于,步驟S2之后,還包括:S3、讀取分支記錄緩沖區(qū)內(nèi)的分支記錄,確定節(jié)點之間的跳轉(zhuǎn)關(guān)系,通過時間戳記錄的指令執(zhí)行時間判斷指令的執(zhí)行順序,結(jié)合執(zhí)行順序以及節(jié)點之間的跳轉(zhuǎn)關(guān)系,將無序的指令執(zhí)行節(jié)點連接成為有序的指令執(zhí)行流。4.根據(jù)權(quán)利要求3所述的Arm架構(gòu)分支記錄緩沖區(qū)的并發(fā)錯誤檢測方法,其特征在于,步驟S3之后,還包括:S4、利用所述有序的...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:寧振宇,劉佳祿,楊祺浩,胡玉鵬,
申請(專利權(quán))人:湖南大學,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。