新四季網

利用改進的檢測過濾的數據競爭分析的製作方法

2023-05-02 08:48:06

利用改進的檢測過濾的數據競爭分析的製作方法
【專利摘要】根據一個實施例的方法包括如下操作:接收一個或多個數據競爭分析目標的列表,其中這些數據競爭分析目標包括源文件名、源文件行、函數名、變量名或目標地址範圍的至少其中之一;生成數據競爭分析過濾器,其中該數據競爭分析過濾器包括包含基於數據競爭分析目標列表的存儲器地址範圍的數據結構;以及對存儲器訪問執行數據競爭分析,其中將存儲器訪問與數據競爭分析過濾器中包含的存儲器地址關聯。
【專利說明】利用改進的檢測過濾的數據競爭分析
【技術領域】
[0001]本公開涉及數據競爭分析,以及更具體地來說,涉及利用改進的檢測過濾的數據競爭分析。
【背景技術】
[0002]隨著計算機系統發展得更為複雜,它們更多地採用具有大量線程並行地運行的多線程編程技術。這些線程可以在一個或多個處理器上運行或在多核處理器內的不同核上運行。編寫多線程程序可能是困難且容易出錯的。導致線程之間的同步錯誤的編程失誤可能產生數據競爭狀況,其中兩個或更多個線程以非確定性方式訪問相同的存儲器地址。這可能造成變化和/或不可預測的結果,具體視隨機定時狀況而定。此類編程失誤雖然常發生,但是難以利用常規調試工具來定位。
[0003]用於數據競爭狀況的檢測和定位的現有方法典型地包括整個程序的運行時分析,包括每次存儲器訪問的檢驗。除了使得存儲器的使用加倍外,這可將執行速度減慢20至100倍。這種類型的分析還可生成大量數據競爭報告,而這些大量數據競爭報告往往需要大範圍的分析後過濾以便集中在特定關注區域上以便使分析結果是可管理的。這些類型的過濾器可能變得複雜,難以維護且往往需要使用自動化工具來創建和管理。因為數據競爭調試典型地在迭代工作流中執行,其中分析該程序,檢測並修正數據競爭,將程序重新編譯並重複該過程,所以加重了這些困難。與此過程關聯的開銷可能阻礙作為日常軟體構建和測試周期的一部分的常規使用。
【專利附圖】

【附圖說明】
[0004]隨著下文【具體實施方式】的展開描述並且參考附圖,本發明主題的實施例的特徵和優點將變得顯而易見,這些附圖中相似的數字說明相似的部件,並且其中:
圖1圖示符合本公開的一個示範實施例的高級系統框圖;
圖2圖示符合本公開的多種實施例的包括數據競爭分析器的系統的一個示範框圖;
以及
圖3圖示符合本公開的另一個示範實施例的操作的流程圖。
[0005]雖然下文【具體實施方式】將參考說明性實施例來進行,但是本領域技術人員將顯見到其許多替代、修改和變化。
【具體實施方式】
[0006]一般,本公開提供用於使用改進的檢測過濾具有提升的效率對多線程程序實現運行時數據競爭分析的方法和系統。這些技術為用戶提供針對程序內的特定關注區域以進行數據競爭分析的能力。用戶可以通過例如,源文件名、行號、函數、變量、地址範圍或任何其他適合的指示來指定這些目標區域。然後可以基於指定的分析目標來生成數據競爭分析過濾器。過濾器可以採用以提升的效率提供搜索的形式包括含有存儲器地址範圍的數據結構。這些存儲器地址範圍可以是不重疊的存儲器地址範圍。然後可利用限於與分析過濾器中的地址關聯的存儲器範圍的分析來執行運行時數據競爭分析。
[0007]雖然常規數據競爭分析工具對整個程序執行分析,但是這往往是不必要的。針對的數據競爭分析可以為適合的一些示例包括監查限於特定代碼區的與代碼修訂(fix)關聯的數據競爭和/或監查已知與特定代碼區關聯的徵兆。
[0008]圖1圖示符合本公開的一個示範實施例的高級系統框圖100。可以將任何數量的處理器102、104、106配置成共享存儲器108。在一些實施例中,處理器102、104、106可以是多核處理器配置內的分離的核。要分析數據競爭狀況的程序可以包括任何數量的線程,每個線程包括可執行線程代碼112、116、120、124和關聯的線程數據114、118、122、126。提供數據競爭分析器110以監視和分析線程執行的選定的存儲器訪問,正如下文將更詳細描述的。
[0009]線程代碼112、116、120、124和線程數據114、118、122、126的每個實例可以佔據共
享存儲器108的給定區,並且在一些情況中,這些區可重疊。例如,線程2代碼116可訪問線程2數據區118中的數據,該線程2數據區118與線程I數據區114以及線程3數據區122在某種程度上重疊。此情況可發生,例如因為線程2需要與線程I和線程3共享數據。相似地,線程代碼區也可重疊,例如,線程I代碼112和線程2代碼116。這可發生,例如因為不同的線程共享代碼的共有段,或因為該代碼段中可嵌入共享的共有數據。來自不同線程的線程代碼可在相同的處理器上或不同的處理器上執行。例如,線程I代碼112和線程2代碼116都在處理器I 102上執行,而線程3代碼120在處理器2 104上執行。
[0010]一般,當來自不同線程的可執行代碼對共有存儲器位置,例如共享存儲器中的給定地址處的特定數據值具有不受限訪問權時,存在同步錯誤形式的衝突(稱為數據競爭狀況)的潛在可能性。這可造成變化和/或不可預測的結果,具體視隨機定時狀況而定。在簡單的示例中,如果一個線程正在對存儲器地址寫,同時另一個線程正在從相同存儲器地址讀,則其結果將具體根據寫發生在讀之前還是之後而有所不同。訪問的次序可能是不可預測的,因為它可取決於外部事件的定時、不同處理器之間的相對負載平衡或任何數量的其他因素。對於軟體開發者,有多種同步機制來防止這些問題,如標誌(flags)、信號量、鎖定、事件等,但是它們並非總是被使用或被正確地使用,以及在複雜的程序中,可能難以消除所有潛在的數據競爭狀況。
[0011]在符合本公開的實施例中,提供數據競爭分析器110。數據競爭分析器110在圖1中示出為駐留在共享的存儲器108中且被處理器I 102執行,雖然並非一定如此。數據競爭分析器110可以由任何可用的處理器來執行,並且可以駐留在任何可用的存儲器中。在一些實施例中,數據競爭分析器110可以作為外部電路、邏輯、固件或硬體和/或軟體的任何其他適合組合來實現。提供數據競爭分析器110以監視和分析線程112、116、120、124執行的選定的存儲器訪問,並檢查是否有可由線程之間的同步錯誤導致的衝突存儲器訪問,正如下文將更詳細描述的。
[0012]圖2圖示符合本公開的多種實施例的包括數據競爭分析器110的系統的一個示範框圖200。可以由用戶提供分析目標202以指示數據競爭分析應該集中在程序內的關注區域。這些目標可以包括諸如源文件名、行號、函數、變量、地址範圍的信息或任何其他適合的信息。還可以指定全局設置,如不包括數據競爭分析中的存儲器讀訪問的偽指令(directive)。
[0013]過濾器生成器204基於分析目標202生成整個程序中對於數據競爭分析關注的所有存儲器地址的初始列表,連同關注的存儲器訪問的類型(例如,讀訪問、寫訪問或二者兼有)連同任何其他相關信息。在一些實施例中,例如,在源文件名和行號目標指定的情況中,過濾器生成器204可以搜索源文件以找到匹配源文件名,然後搜索該源文件貢獻的編譯單元(compiland)(例如,源文件編譯的產品),然後搜索這些編譯單元中的函數,以獲取與目標源文件和行號對應的存儲器地址。可以執行類似的過程,如下文偽代碼示例中概述的,以便獲取用於其他分析目標指定的存儲器地址。然後可以將以此方式獲取的所有存儲器地址併入關注的存儲器地址初始列表中。
[0014]該初始列表可以包含存儲器地址的副本,並且這些存儲器地址可以按隨機次序,具體視指定和搜索分析目標的方式而定。過濾器生成器204將存儲器地址和關聯的信息的該初始列表處理成過濾器212以便在運行時分析期間使用來濾掉對於數據競爭分析不關注的地址的存儲器訪問。
[0015]過濾器212可以由過濾器生成器204基於初始列表配置成可以用於程序線程112、116、120、124的運行時分析的格式。在一些實施例中,該過濾器格式可以是不重疊的地址範圍的新且緊湊的有序列表。消除重複並對列表排序可以使得過濾器能夠在運行時分析期間以提升的速度來搜索。在其他實施例中,過濾器格式可以是搜索樹或其他適合的數據結構。
[0016]分析模塊206執行訪問存儲器108中的存儲器地址的線程112、116、120、124的運行時數據競爭分析。分析模塊206通過過濾器212監視這些線程存儲器訪問,以便分析來自關注地址的存儲器訪問。在一些實施例中,這可以通過檢查該存儲器訪問地址匹配過濾器212中的不重疊地址的有序列表中的關注地址來實現。
[0017]分析模塊206可以對那些關注地址採用任何公知的數據競爭分析技術,例如「鎖具(lockset)」分析或「之前發生(happens-before)」分析。在「鎖具」分析中,對來自不同線程的衝突存儲器訪問執行檢查,以確保對該存儲器地址存在同步鎖,以及正在訪問該存儲器地址的線程持有該鎖。在「之前發生」分析中,對來自不同線程的衝突存儲器訪問執行檢查以確保這些訪問被同步事件分離。
[0018]分析模塊206可以可選地響應檢測到數據競爭狀況執行調試器208或生成報告210。
[0019]通過將數據競爭分析限於為用戶所關注的那些存儲器地址,以及生成和使用使運行時分析能限於那些地址的過濾器格式,本公開的實施例可以實現提升的執行速度和減少的存儲器使用。
[0020]圖3圖示符合本公開的另一個示範實施例的操作300的流程圖。在操作310處,接收一個或多個數據競爭分析目標的列表。這些數據競爭分析目標包括源文件名、源文件行、函數名稱、變量名稱或目標地址範圍的至少其中之一。在操作320處,生成數據競爭分析過濾器。數據競爭分析過濾器包括包含基於數據競爭分析目標的列表的存儲器地址範圍的數據結構。在一些實施例中,這些存儲器地址範圍可以是不重疊的,該數據結構可以是有序列表或搜索樹,以及該過濾器可以指定要分析寫存儲器訪問還是要分析讀和寫存儲器訪問兩者。在操作330處,對存儲器訪問執行數據競爭分析,其中將存儲器訪問與數據競爭分析過濾器中包含的存儲器地址關聯。在一些實施例中,響應數據競爭分析檢測到數據競爭狀況,可以執行調試器和/或可以生成報告。
[0021]下文是符合本公開的偽代碼的一個實施例的說明性示例。偽代碼的行1-13可操作以基於源文件名指定生成地址工作組。偽代碼的行15-28可操作以基於源行指定生成地址工作組。偽代碼的行30-43可操作以基於函數名指定生成地址工作組。偽代碼的行45-58可操作以基於變量名指定生成地址工作組。偽代碼的行60-67可操作以基於地址工作組生成分析器過濾器。偽代碼的行69-81可操作以使用分析器過濾器執行數據競爭分析。
[0022]Il源文件的工作組生成
【權利要求】
1.一種方法,其包括: 接收一個或多個數據競爭分析目標的列表,其中所述數據競爭分析目標包括源文件名、源文件行、函數名、變量名或目標地址範圍的至少其中之一; 生成數據競爭分析過濾器,其中所述數據競爭分析過濾器包括包含基於所述數據競爭分析目標列表的存儲器地址範圍的數據結構;以及 對存儲器訪問執行數據競爭分析,其中將所述存儲器訪問與所述數據競爭分析過濾器中包含的存儲器地址關聯。
2.如權利要求1所述的方法,其中所述數據結構是有序列表。
3.如權利要求1所述的方法,其中所述數據結構是搜索樹。
4.如權利要求1所述的方法,其中所述存儲器地址範圍是不重疊的。
5.如權利要求1所述的方法,其中所述數據競爭分析過濾器還包括所述存儲器訪問是寫存儲器訪問的指示,其中所述指示應用於所述存儲器地址範圍的至少其中之一。
6.如權利要求1所述的方法,其中將所述存儲器訪問與數據的存儲器地址關聯。
7.如權利要求1所述的方法,其中將所述存儲器訪問與代碼的存儲器地址關聯。
8.如權利要求1所述的方法,還包括響應檢測數據競爭狀況的所述數據競爭分析執行調試器。
9.一種非暫時計算機可讀存儲介質,其上存儲有在被處理器執行時促使執行如下操作的指令,所述操作包 括: 接收一個或多個數據競爭分析目標的列表,其中所述數據競爭分析目標包括源文件名、源文件行、函數名、變量名或目標地址範圍的至少其中之一; 生成數據競爭分析過濾器,其中所述數據競爭分析過濾器包括包含基於所述數據競爭分析目標列表的存儲器地址範圍的數據結構;以及 對存儲器訪問執行數據競爭分析,其中將所述存儲器訪問與所述數據競爭分析過濾器中包含的存儲器地址關聯。
10.如權利要求9所述的非暫時計算機可讀存儲介質,其中所述數據結構是有序列表。
11.如權利要求9所述的非暫時計算機可讀存儲介質,其中所述存儲器地址範圍是不重疊的。
12.如權利要求9所述的非暫時計算機可讀存儲介質,其中所述數據競爭分析過濾器還包括所述存儲器訪問是寫存儲器訪問的指示,其中所述指示應用於所述存儲器地址範圍的至少其中之一。
13.如權利要求9所述的非暫時計算機可讀存儲介質,其中將所述存儲器訪問與數據的存儲器地址關聯。
14.如權利要求9所述的非暫時計算機可讀存儲介質,其中將所述存儲器訪問與代碼的存儲器地址關聯。
15.如權利要求9所述的非暫時計算機可讀存儲介質,還包括響應檢測數據競爭狀況的所述數據競爭分析執行調試器。
16.—種方法,其包括: 處理器; 存儲器,所述存儲器配置成託管要在所述處理器上執行的數據競爭分析代碼,其中當所述數據競爭分析代碼在所述處理器上執行時,所述數據競爭分析代碼促使所述處理器:接收一個或多個數據競爭分析目標的列表,其中所述數據競爭分析目標包括源文件名、源文件行、函數名、變量名或目標地址範圍的至少其中之一; 生成數據競爭分析過濾器,其中所述數據競爭分析過濾器包括包含基於所述數據競爭分析目標列表的存儲器地址範圍的數據結構;以及 對存儲器訪問執行數據競爭分析,其中將所述存儲器訪問與所述數據競爭分析過濾器中包含的存儲器地址關聯。
17.如權利要求16所述的系統,其中所述數據結構是有序列表。
18.如權利要求16所述的系統,其中所述數據競爭分析過濾器還包括所述存儲器訪問是寫存儲器訪問的指示,其中所述指示應用於所述存儲器地址範圍的至少其中之一。
19.如權利要求16所述的系統,其中將所述存儲器訪問與數據的存儲器地址關聯。
20.如權利要求16所述的系統,其中將所述存儲器訪問與代碼的存儲器地址關聯。
【文檔編號】G06F11/36GK103765390SQ201180073227
【公開日】2014年4月30日 申請日期:2011年9月2日 優先權日:2011年9月2日
【發明者】M.T.梅茨格 申請人:英特爾公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀