新四季網

並行程序的數據競爭檢測方法、裝置及多核處理系統的製作方法

2023-07-06 13:35:01 2

並行程序的數據競爭檢測方法、裝置及多核處理系統的製作方法
【專利摘要】本發明提供一種並行程序的數據競爭檢測方法、裝置及多核處理系統,該方法在調用多核處理器中的一處理器核執行並行程序的指令之後,還包括:鎖訪問信息記錄流程:記錄所述處理器核的當前指令的鎖訪問信息,其中,所述鎖訪問信息與鎖操作的鎖地址對應記錄;訪存信息記錄流程:記錄所述處理器核的當前指令的訪存信息;以及數據競爭判斷流程:根據所述鎖訪問信息記錄流程記錄的鎖訪問信息以及所述訪存信息記錄流程記錄的訪存信息,判斷存在衝突的兩個指令之間是否存在數據競爭。本發明能夠實現快速、準確和有效地檢測並行程序中潛在的數據競爭,保證並行程序的正確性,為更好的調試和測試並行程序帶來突破。
【專利說明】並行程序的數據競爭檢測方法、裝置及多核處理系統
【技術領域】
[0001]本發明涉及處理器晶片技術,尤其涉及一種並行程序的數據競爭檢測方法、裝置及多核處理系統。
【背景技術】
[0002]隨著多核處理器的發展,需要更好的並行程序來獲取由多核帶來的性能提升。然而,由於並行程序執行結果的不確定性,調試並行程序有著極大的難度。在並行程序的眾多類型的漏洞(bug)中,數據競爭(data race)是在實際並行程序中最常見的一種。
[0003]對於來自不同線程的一對訪存操作,如果它們訪問的地址相同,而且其中至少有一個是寫操作,那麼就稱這對操作為一對衝突操作。如果一對衝突操作的執行過程之間沒有同步操作把它們隔開,那麼就認為產生一個數據競爭。數據競爭在大多數情況下都認為是一個漏洞,因為它給程序的執行帶來了不確定性。
[0004]為了檢測程序裡面存在的數據競爭,目前已有的方法可以分為靜態檢測和動態檢測兩種。靜態檢測方法靜態的分析整個並行程序,根據並行程序靜態的構造可能的執行圖,並判斷執行圖中的衝突操作是否被同步操作隔開。雖然靜態檢測方法可以找到所有可能的數據競爭,但是當並行程序規模變大時,靜態檢測方法不可避免的碰到狀態爆炸的問題,使得靜態分析無法進行。此外,靜態檢測方法需要推測並行程序可能的執行路徑,對於含有指針的程序,還要推測訪存操作的訪問地址。因此,所有的靜態檢測方法都有很多的誤報,即很多本來不是數據競爭的衝突操作被認為是數據競爭,極大的影響了檢測的準確性。
[0005]與靜態檢測方法不同的是,動態檢測方法通過記錄並分析並行程序一次具體的執行來檢測數據競爭。由於動態方法只用分析一次特定的執行,所以程序的執行流是可以知道的,也不會碰到狀態爆炸的問題。但是,檢測結果過於依賴並行程序的執行。對於一個有數據競爭的並行程序,可能只在很少的執行中才能把數據競爭暴露出來,一旦在某一次執行中沒有暴露出來,已有的動態檢測方法就會檢測不到該數據競爭。並且,一個並行程序可能的執行種數跟指令數是指數關係的,即使重複執行了同一個程序數萬次,也只能覆蓋並行程序中極少一部分的執行種數。在對並行程序進行測試的過程中,即使同一個程序數萬次的執行都沒有數據競爭,我們也無法斷定該並行程序是沒有數據競爭的。
[0006]綜上所述,現有技術中的方法在檢測數據競爭中都有著明顯的缺點:靜態檢測方法檢測過程中可能碰到狀態爆炸的問題、誤報率高;現有的動態檢測方法可能漏檢並行程序中存在的數據競爭。

【發明內容】

[0007]本發明提供一種並行程序的數據競爭檢測方法、裝置及多核處理系統,用於解決現有技術中數據競爭檢測方法誤報和漏檢的缺陷。
[0008]第一方面,本發明提供一種並行程序的數據競爭檢測方法,在調用多核處理器中的一處理器核執行並行程序的指令之後,還包括:[0009]鎖訪問信息記錄流程:記錄所述處理器核的當前指令的鎖訪問信息,其中,所述鎖訪問信息與鎖操作的鎖地址對應記錄;
[0010]訪存信息記錄流程:記錄所述處理器核的當前指令的訪存信息;以及
[0011 ] 數據競爭判斷流程:根據所述鎖訪問信息記錄流程記錄的鎖訪問信息以及所述訪存信息記錄流程記錄的訪存信息,判斷存在衝突的兩個指令之間是否存在數據競爭。
[0012]結合第一方面,在第一方面的第一種可能的實現方式中,所述數據競爭判斷流程具體包括:
[0013]根據記錄的各條指令的訪存信息,判斷指令間是否滿足程序序關係,如果兩條指令在處理器核上被執行,則兩條指令滿足程序序關係;
[0014]根據記錄的所述鎖訪問信息,判斷所述鎖操作間是否滿足可行同步序關係,其中,對應於同一地址的先後執行的第一鎖操作以及第二鎖操作,若在所述第一鎖操作的鎖獲取操作以及鎖釋放操作之間存在一個寫操作,使得所述第二鎖操作的鎖獲取和鎖釋放之間存在對與所述寫操作為同一地址的衝突讀操作,則所述鎖操作間滿足可行同步序關係;
[0015]當檢測出存在衝突的兩個指令時,判斷存在衝突的兩個指令是否滿足可行序關係;如果兩個指令之間不滿足可行序關係,則確定所述第一鎖操作和所述第二鎖操作間存在數據競爭,其中,所述可行序關係為:若存在衝突的兩條指令之間存在一串指令操作,這一串操作之間至少滿足程序序關係和可行同步序關係之一。
[0016]結合第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,在所述數據競爭判斷流程之前,還包括:
[0017]根據記錄的各處理器核的各條指令的訪存信息,判斷當前指令的訪問地址與所述多核處理器中其它處理器核的各條指令的訪問地址是否相同;
[0018]如果是,則判斷所述當前指令與具有相同訪問地址的指令中是否存在寫操作;
[0019]如果存在寫操作,則所述當前指令與其它處理器核的各條指令中,與該當前指令具有相同訪問地址的指令存在衝突。
[0020]結合第一方面的第一種可能的實現方式,在第一方面的第三種可能的實現方式中,還包括:向量時鐘更新流程,其中,
[0021]記錄所述處理器核的當前指令的鎖訪問信息具體包括:
[0022]當識別到當前指令觸發鎖操作或位於鎖獲取和鎖釋放之間時,記錄所述鎖訪問信息,所述鎖訪問信息包括:處理器核標識、操作類型和本地時間戳;
[0023]所述鎖訪問信息記錄流程還包括:
[0024]當識別到所述處理器核的當前指令觸發鎖操作時,將所述處理器核對應的本地時間戳加I ;
[0025]所述向量時鐘更新流程包括:
[0026]當識別到所述處理器核的本地時間戳加I時,根據本地時間戳更新所述處理器核當前指令的向量時鐘中的元素值,其中,每個向量時鐘與每個處理器核的每條指令對應設置,每個向量時鐘包括N個元素,N為處理器核的數量,N個元素分別與各處理器核對應;
[0027]對於每個鎖地址,當監測到所述鎖地址的鎖訪問信息的操作類型為鎖獲取時,判斷在當前的鎖獲取之前是否存在滿足可行同步序關係的鎖釋放,若存在,根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘。[0028]結合第一方面的第三種可能的實現方式,在第一方面的第四種可能的實現方式中,記錄所述處理器核的當前指令的訪存信息之前,還包括:
[0029]判斷存儲所述當前指令的訪存歷史記錄器中記錄的訪存信息是否超過η條,η為大於等於2的預設正整數;
[0030]若是,則刪除所述訪存歷史記錄器中最早存入的一條訪存信息,以將所述處理器核的當前指令的訪存信息記錄在所述訪存歷史記錄器中。
[0031]結合第一方面的第三種可能的實現方式,在第一方面的第五種可能的實現方式中,所述根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘,包括:
[0032]逐一對應比較所述滿足可行同步序關係的鎖獲取和鎖釋放的向量時鐘中各元素的大小,得到比較結果,取所述比較結果中較大的元素作為所述鎖釋放的向量時鐘中對應的元素。
[0033]結合第一方面的第三種可能的實現方式,在第一方面的第六種可能的實現方式中,判斷存在衝突的兩個指令是否滿足可行序關係,包括:
[0034]逐一對應比較存在衝突的兩個指令的向量時鐘中的各元素,判斷所述當前指令的向量時鐘中是否存在小於與其存在衝突的指令的向量時鐘中的對應元素的元素,如果存在,則存在衝突的兩個指令之間存在數據競爭。
[0035]第二方面,本發明提供一種並行程序的數據競爭檢測裝置,包括:中央鎖訪問模塊、訪存歷史記錄器和序關係分析模塊,其中,
[0036]所述中央鎖訪問模塊,用於在調用多核處理器中的一處理器核執行並行程序的指令之後,記錄所述處理器核的當前指令的鎖訪問信息,其中,所述鎖訪問信息與鎖操作的鎖地址對應記錄;
[0037]所述訪存歷史記錄器,用於在調用多核處理器中的一處理器核執行並行程序的指令之後,記錄所述處理器核的當前指令的訪存信息;
[0038]所述序關係分析模塊,用於根據所述中央鎖訪問模塊記錄的鎖訪問信息以及所述訪存歷史記錄器記錄的訪存信息,判斷存在衝突的兩個指令之間是否存在數據競爭。
[0039]結合第二方面,在第二方面的第一種可能的實現方式中,所述序關係分析模塊包括:
[0040]第一判斷單元,用於根據記錄的各條指令的訪存信息,判斷指令間是否滿足程序序關係,如果兩條指令在處理器核上被執行,則兩條指令滿足程序序關係;
[0041]第二判斷單元,用於根據記錄的所述鎖訪問信息,判斷所述鎖操作間是否滿足可行同步序關係,其中,對應於同一地址的先後執行的第一鎖操作以及第二鎖操作,若在所述第一鎖操作的鎖獲取操作以及鎖釋放操作之間存在一個寫操作,使得所述第二鎖操作的鎖獲取和鎖釋放之間存在對與所述寫操作為同一地址的衝突讀操作,則所述鎖操作間滿足可行同步序關係;
[0042]第三判斷單元,用於當檢測出存在衝突的兩個指令時,判斷存在衝突的兩個指令是否滿足可行序關係;如果兩個指令之間不滿足可行序關係,則確定所述第一鎖操作和所述第二鎖操作間存在數據競爭,其中,所述可行序關係為:若存在衝突的兩條指令之間存在一串指令操作,這一串操作之間至少滿足程序序關係和可行同步序關係之一。
[0043]結合第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,所述序關係分析模塊還包括:第四判斷單元,用於根據記錄的各處理器核的各條指令的訪存信息,判斷當前指令的訪問地址與所述多核處理器中其它處理器核的各條指令的訪問地址是否相同;如果是,則判斷所述當前指令與具有相同訪問地址的指令中是否存在寫操作;如果存在寫操作,則所述當前指令與其它處理器核的各條指令中,與該當前指令具有相同訪問地址的指令存在衝突。
[0044]結合第二方面的第一種可能的實現方式,在第二方面的第三種可能的實現方式中,所述中央鎖訪問模塊包括:
[0045]記錄單元,用於當識別到當前指令觸發鎖操作或位於鎖獲取和鎖釋放之間時,記錄所述鎖訪問信息,所述鎖訪問信息包括處理器核標識、操作類型和本地時間戳;
[0046]第一處理單元,用於當識別到所述處理器核的當前指令觸發鎖操作時,將所述處理器核對應的本地時間戳加I ;
[0047]所述序關係分析模塊還包括:
[0048]第一更新單元,用於當識別到所述處理器核的本地時間戳加I時,根據本地時間戳更新所述處理器核當前指令的向量時鐘中的元素值,其中,每個向量時鐘與每個處理器核的每條指令對應設置,每個向量時鐘包括N個元素,N為處理器核的數量,N個元素分別與各處理器核對應;
[0049]第五判斷單元,用於對於每個鎖地址,當監測到所述鎖地址的鎖訪問信息的操作類型為鎖獲取時,判斷在當前的鎖獲取之前是否存在滿足可行同步序關係的鎖釋放;
[0050]第二更新單元,用於若第五判斷單元判斷結果為存在,根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘。
[0051]結合第二方面的第三種可能的實現方式,在第二方面的第四種可能的實現方式中,所述訪存歷史記錄器包括:
[0052]第六判斷單元,用於判斷存儲所述當前指令的所述訪存歷史記錄器中記錄的訪存信息是否超過η條,η為大於等於2的預設正整數;
[0053]第二處理單元,用於若所述第六判斷單元判斷結果為是時,則刪除所述訪存歷史記錄器中最早存入的一條訪存信息,以使得所述處理器核的當前指令的訪存信息記錄在所述訪存歷史記錄器中;
[0054]第二記錄單元,用於記錄所述處理器核的當前指令的訪存信息。
[0055]結合第二方面的第三種可能的實現方式,在第二方面的第五種可能的實現方式中,所述第二更新單元具體用於:
[0056]逐一對應比較所述滿足可行同步序關係的鎖獲取和鎖釋放的向量時鐘中各元素的大小,得到比較結果,取所述比較結果中較大的元素作為所述鎖釋放的向量時鐘中對應的元素。
[0057]結合第二方面的第三種可能的實現方式,在第二方面的第六種可能的實現方式中,所述第三判斷單元具體用於:
[0058]逐一對應比較存在衝突的兩個指令的向量時鐘中的各元素,判斷所述當前指令的向量時鐘中是否存在小於與其存在衝突的指令的向量時鐘中的對應元素的元素,如果存在,則存在衝突的兩個指令之間存在數據競爭。
[0059]第三方面,本發明提供一種多核處理系統,包括:至少兩個處理器核、至少一個非處理器核設備以及如第二方面任一項所述的並行程序的數據競爭檢測裝置,其中,
[0060]所述至少兩個處理器核,用於執行並行程序;
[0061]所述至少一個非處理器核設備,與所述至少兩個處理器核連接;
[0062]所述訪存歷史記錄器,與所述至少兩個處理器核連接;
[0063]所述中央鎖訪問模塊,與所述至少兩個處理器核連接;
[0064]所述序關係分析模塊,與所述訪存歷史記錄器和中央鎖訪問模塊連接。
[0065]本發明在調用多核處理器中的處理器核執行並行程序的指令之後,通過首先兩個指令之間是否存在衝突,再判斷所述存在衝突的指令之間是否存在數據競爭,使得在並行程序單次執行的過程中能夠快速、準確、有效的檢測該並行程序中潛在的數據競爭,保證並行程序的正確性。
【專利附圖】

【附圖說明】
[0066]圖1為本發明並行程序的數據競爭檢測方法實施例一的流程示意圖;
[0067]圖2為本發明並行程序的數據競爭檢測方法實施例一中數據競爭判斷流程示意圖;
[0068]圖3為本發明並行程序的數據競爭檢測方法實施例二所適用的多核處理系統的結構示意圖;
[0069]圖4為本發明並行程序的數據競爭檢測方法實施例二的流程示意圖;
[0070]圖5為本發明並行程序的數據競爭檢測方法實施例二中向量時鐘更新流程示意圖;
[0071]圖6為本發明並行程序的數據競爭檢測方法實施例二中訪存信息記錄流程示意圖;
[0072]圖7為本發明並行程序的數據競爭檢測裝置實施例一的結構示意圖;
[0073]圖8為本發明並行程序的數據競爭檢測裝置實施例一中序關係分析模塊的結構示意圖;
[0074]圖9為本發明並行程序的數據競爭檢測裝置實施例二的結構示意圖。
【具體實施方式】
[0075]實施例一
[0076]本發明提供了一種並行程序的數據競爭檢測方法,主要針對所述同步操作為鎖操作時檢測衝突操作之間是否存在數據競爭。圖1為本發明並行程序的數據競爭檢測方法實施例一的流程示意圖,該方法可以由任意並行程序的數據競爭檢測裝置來執行,該裝置可以通過軟體和/或硬體實現。如圖1所示,本實施例的方法包括:
[0077]步驟101、調用多核處理器中的一處理器核執行並行程序的指令。
[0078]具體地,當程式設計師或測試人員調試或測試並行程序時,觸發所述並行程序,此時,由作業系統控制多核處理器從存儲介質中獲取所述並行程序,並調用多核處理器中的處理器核去執行所述並行程序的指令。其中,所述存儲介質不同於上述非處理器核設備,可以是計算機中的存儲部件,例如內存,用於預先存儲待檢測的並行程序。
[0079]在各處理器核執行並行程序指令的過程中,還會執行鎖訪問信息記錄流程、訪存信息記錄流程和數據競爭判斷流程,各流程之間沒有必然的時序關係,且可並發執行,下面將詳細介紹各流程的步驟。
[0080]步驟102、鎖訪問信息記錄流程。
[0081]具體地,所述鎖訪問信息記錄流程包括:記錄所述處理器核的當前指令的鎖訪問信息,其中,所述鎖訪問信息與鎖操作的鎖地址對應記錄。所述鎖訪問信息包括處理器核標識、操作類型和本地時間戳,鎖操作包括鎖獲取操作,和鎖釋放操作。
[0082]需要說明的是,鎖獲取和鎖釋放是成對出現的,在大多數情況下,一對鎖獲取和鎖釋放之間只有很少的指令,所以記錄下來不會帶來很大的開銷;成對出現的鎖獲取和鎖釋放對應同一個鎖地址。
[0083]步驟103、訪存信息記錄流程。
[0084]具體地,所述訪存信息記錄流程包括:記錄所述處理器核的當前指令的訪存信息。其中,所述訪存信息包括所述當前指令的訪問地址和操作類型。在這裡,指令的所述操作類型可以是讀操作、寫操作、計算操作等。
[0085]步驟104、數據競爭判斷流程。
[0086]具體地,所述數據競爭判斷流程包括:根據所述鎖訪問信息記錄流程記錄的鎖訪問信息以及所述訪存信息記錄流程記錄的訪存信息,判斷存在衝突的兩個指令之間是否存在數據競爭。
[0087]該步驟中,可以先判斷兩個指令之間是否存在衝突,再判斷存在衝突的兩個指令之間是否存在數據競爭。若已知兩個指令之間是存在衝突的,則可以直接判斷該存在衝突的兩個指令之間是否存在數據競爭。
[0088]本發明根據多核處理器中的各處理器核中預先記錄的訪存信息和鎖訪問信息,判斷指令之間是否存在數據競爭,實現能夠快速、準確和有效地檢測並行程序中潛在的數據競爭,保證並行程序的正確性,為更好的調試和測試並行程序帶來突破。
[0089]如圖2所示,在上述實施例的基礎上,數據競爭判斷流程可以進一步細化為:
[0090]步驟201、根據記錄的各條指令的訪存信息,判斷指令間是否滿足程序序關係。
[0091]具體地,如果兩條指令在處理器核上被執行,則兩條指令滿足程序序關係。通常情況下,並行程序編寫完成後,該並行程序中的各上下行指令之間已滿足程序序關係,這裡,在並行程序被執行過程中,根據相同或不同時刻所記錄的各條指令的訪存信息,判斷該些指令之間是否滿足程序序關係。
[0092]步驟202、根據記錄的所述鎖訪問信息,判斷所述鎖操作間是否滿足可行同步序關係O
[0093]具體地,對應於同一地址的先後執行的第一鎖操作以及第二鎖操作,若在所述第一鎖操作的鎖獲取操作以及鎖釋放操作之間存在一個寫操作,使得所述第二鎖操作的鎖獲取和鎖釋放之間存在對與所述寫操作為同一地址的衝突讀操作,則所述鎖操作間滿足可行同步序關係。
[0094]舉例說明,對應於相同鎖地址的鎖釋放操作U和鎖獲取操作V,其中,U對應鎖獲取操作U』,V對應鎖獲取操作V』,若V在U之後執行,在U』與U之間有對所述鎖地址的寫操作,且在V與V』之間有對所述鎖地址的讀操作,則U與V滿足可行同步序關係。
[0095]其中,步驟201和步驟202之間沒有時序關係,可以同時執行,也可以先執行步驟201再執行步驟202,不對其時序進行限制。
[0096]步驟203、當檢測出存在衝突的兩個指令時,判斷存在衝突的兩個指令是否滿足可行序關係;如果兩個指令之間不滿足可行序關係,則確定所述第一鎖操作和所述第二鎖操作間存在數據競爭。
[0097]其中,本領域技術人員可以將可行序關係理解為:若存在衝突的兩條指令之間存在一串指令操作,這一串操作之間至少滿足程序序關係和可行同步序關係之一,則這兩條存在衝突的指令滿足可行序關係。
[0098]在上述基礎上,步驟104之前,還可以首先判斷當前指令與其它各條指令之間是否存在衝突,具體操作如下:
[0099]1、根據記錄的各處理器核的各條指令的訪存信息,判斷當前指令的訪問地址與所述多核處理器中其它處理器核的各條指令的訪問地址是否相同;
[0100]2、如果訪問地址相同,則判斷所述當前指令與具有相同訪問地址的指令中是否存在寫操作;
[0101]3、如果存在寫操作,則所述當前指令與其它處理器核的各條指令中,與該當前指令具有相同訪問地址的指令存在衝突。
[0102]具體地,若當前指令與其它處理器核的各條指令中至少一條的訪問地址相同,則判斷所述當前指令與該具有相同訪問地址的指令的操作類型是否至少一個是寫操作,若是,則所述處理器核的當前指令,與其它處理器核的各條指令中與該當前指令具有相同訪問地址的指令存在衝突。
[0103]採用首先根據各條指令的訪存信息判斷處理器核的當前指令與多核處理器中其它處理器核的各條指令之間是否存在衝突的方案,可以提高檢測並行程序中是否潛在數據競爭的效率,節省時間。
[0104]實施例二
[0105]本實施例中,該並行程序的數據競爭檢測方法通過本發明提供的多核處理系統執行。結合多核處理系統,對本發明並行程序的數據競爭檢測方法進行說明。
[0106]該多核處理系統的結構如圖3所示,配置有至少兩個處理器核,如圖3所示,以四個處理器核為例,記為第一處理器核111、第二處理器核112、第三處理器核113和第四處理器核114。多核處理系統還包括至少一個非處理器核設備115,用於與其連接的各處理器核的內容交互,其中,所述非處理器核設備115包括但不限於二級緩存、片上網絡、內存控制器等設備。本實施例中,該多核處理系統還進一步設置有訪存歷史記錄器,訪存歷史記錄器與所述處理器核相連,用於記錄所述處理器核的當前指令的訪存信息,其個數可以是一個,也可以是多個,例如圖3中,與多核處理器中包含的處理器核個數相同。所述訪存歷史記錄器與所述處理器核一一對應,分別記為第一訪存歷史記錄器121、第二訪存歷史記錄器122、第三訪存歷史記錄器123和第四訪存歷史記錄器124 ;該多核處理系統還進一步設置有中央鎖訪問模塊和序關係分析模塊,其中,中央鎖訪問模塊用於記錄所述處理器核的當前指令的鎖訪問信息,序關係分析模塊用於根據所述中央鎖訪問模塊和所述訪存歷史記錄器記錄的各處理器核的各條指令的訪存信息以及鎖訪問信息,判斷存在衝突的兩個指令之間是否存在數據競爭,例如圖3中,中央鎖訪問模塊130和序關係分析模塊140。中央鎖訪問模塊與各所述處理器核相連,序關係分析模塊與訪存歷史記錄器和中央鎖訪問模塊連接。
[0107]圖4為本發明並行程序的數據競爭檢測方法實施例二的流程示意圖,如圖4所示,該方法可以包括以下步驟:
[0108]步驟401、在調用多核處理器中的一處理器核執行並行程序的指令。
[0109]本步驟與步驟101類似,此處不再贅述。
[0110]步驟402、當識別到所述處理器核的當前指令觸發鎖操作時,將所述處理器核對應的本地時間戳加I。
[0111]其中,所述鎖操作為鎖獲取或鎖釋放。本地時間戳記錄在訪存歷史記錄器中,例如圖3所示的第一訪存歷史記錄器121,本地時間戳的初始值為0,在其對應的處理器核每次執行鎖操作時加1,即本地時間戳隨著鎖操作的執行而逐步遞增。
[0112]步驟403、記錄所述處理器核的當前指令的鎖訪問信息。
[0113]當識別到當前指令觸發鎖操作或位於鎖獲取和鎖釋放之間時,記錄當前指令的鎖訪問信息,所述鎖訪問信息包括處理器核標識、操作類型和本地時間戳,且所述鎖訪問信息與鎖操作的鎖地址對應記錄。
[0114]例如圖3所示的中央鎖訪問模塊130用於執行該步驟。中央鎖訪問模塊130用於集中處理鎖操作,即在多核處理器系統中的多個鎖地址,由各處理器核通過向中央鎖訪問模塊130發送鎖獲取請求來佔用,並在操作完成後向中央鎖訪問模塊130發送鎖釋放請求來釋放該鎖地址。當中央鎖訪問模塊130接收到對同一鎖地址的多個鎖獲取請求,或對佔用狀態鎖地址的鎖獲取請求時,保證該鎖地址僅分配給一個處理器核。其中,中央鎖訪問模塊130記錄至少兩條鎖訪問信息。較優的是,鎖訪問歷史記錄器記錄30條鎖訪問信息,不以此為限。
[0115]中央鎖訪問模塊根據當前鎖地址的狀態,決定如何處理各處理器核送來的鎖操作。例如,若當前鎖地址是自由(free)狀態,則中央鎖訪問模塊只接收各處理器核來的鎖獲取操作;若當前鎖地址是佔用(held)狀態,則中央鎖訪問模塊只接收佔用處理器核來的鎖釋放操作,其它操作,例如由其它處理器核來的鎖獲取操作,需要等待,直到該鎖地址被釋放,重新變為自由狀態為止。
[0116]具體地,每個處理器核在記錄其當前指令的鎖訪問信息時執行相同的操作,且各處理器核之間彼此不相互影響。
[0117]步驟404、記錄所述處理器核的當前指令的訪存信息。
[0118]此步驟與步驟103類似,此處不再贅述。
[0119]其中,步驟403和步驟404可以並行執行,該兩個步驟之間執行順序可以互換。
[0120]步驟405、向量時鐘更新流程。
[0121]具體地,圖5為本發明並行程序的數據競爭檢測方法實施例二中的向量時鐘更新流程示意圖。如圖5所示,向量時鐘更新流程可以包括:
[0122]步驟501、當識別到所述處理器核的本地時間戳加I時,根據本地時間戳更新所述處理器核當前指令的向量時鐘中的元素值。
[0123]其中,每個向量時鐘與每個處理器核的每條指令對應設置,每個向量時鐘包括N個元素,N為處理器核的數量,N個元素分別與各處理器核對應。
[0124]舉例說明,如圖3所示,多核處理器包含四個處理器核,則每個處理器核對應一個向量時鐘,該向量時鐘中元素個數為4,假設第一處理器核各指令的向量時鐘用i表示,則某條執行對應的向量時鐘為G1, i2, i3, i4),其中,下標1、2、3、4對應各處理器核。I1為第一處理器核對應的元素值,i2為第二處理器核對應的元素值,依次類推。每個處理器核的各條指令均對應一個向量時鐘,考慮存儲空間的佔用,可僅記錄最近的設定數量指令的向量時鐘。
[0125]當識別到本地時間戳加I時,根據本地時間戳更新序關係分析模塊中記錄的第一處理器核當前指令的向量時鐘中的h。
[0126]步驟502、對於每個鎖地址,當監測到所述鎖地址的鎖訪問信息的操作類型為鎖獲取時,判斷在當前的鎖獲取之前是否存在滿足可行同步序關係的鎖釋放。
[0127]可以通過以下步驟判斷當前的鎖獲取之前是否存在滿足可行同步序關係的鎖釋放:
[0128]1、自當前的第一鎖獲取U1起,從此前的任意鎖獲取和鎖釋放中查找第二鎖獲取U2以及第二鎖釋放V2,其中,U1對應第一鎖釋放Vl。
[0129]具體可以是分別監測各個鎖地址,對於任意一個鎖地址,在監測到鎖訪問信息中出現鎖獲取起觸發獲取操作。第一鎖釋放、第二鎖獲取和第二鎖釋放可以是在第一鎖獲取前的任意獲取和釋放操作,若此前沒有上述兩對鎖獲取和鎖釋放操作,則不進行可行同步序判斷,若存在多組兩對鎖操作的情況,可分別組合進行可行同步序判斷。
[0130]2、根據記錄的鎖訪問信息判斷所述Up U2> V1和V2是否滿足如下條件:v2在U1之前執行,且在U1和V1之間有針對所述鎖地址的寫指令,在U2和V2之間有對所述鎖地址的讀指令;若滿足,則V2在U1可行同步序之前,即U1之前存在滿足可行同步序關係的v2。
[0131]3、確定V2和U1滿足可彳丁同步序關係。
`[0132]若存在滿足可行同步序關係的鎖釋放,則執行步驟503 ;否則,執行步驟406。
[0133]步驟503、根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘。
[0134]根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘可以具體為逐一對應比較U1和V2的向量時鐘中各元素,取比較後較大的值更新U1的向量時鐘中對應的該元素。例如,仍以四個處理器核為例進行說明,U1的向量時鐘為(ju j2, j3, j4)? V2的向量時鐘為Ck1, k2, k3, k4),依次比較J1與k1; j2與k2, j3與k3, j4與k4的大小,取j!與Ii1中較大的值更新V2的向量時鐘中Ic1,並以此類推。
[0135]由前述可知,在某個處理器核的各向量時鐘中,與其它處理器核對應的元素是不隨本地時間戳而更新的,但會在存在可行同步序的關係時,將相應操作的向量時鐘進行更新。
[0136]步驟406、根據存在衝突的兩個指令的向量時鐘判斷是否存在數據競爭。
[0137]逐一對應比較存在衝突的兩個指令的向量時鐘中的各元素,判斷所述當前指令的向量時鐘中是否存在小於與其存在衝突的指令的向量時鐘中的對應元素的元素,如果存在,則存在衝突的兩個指令之間存在數據競爭。
[0138]具體地,比較存在衝突的兩個指令的向量時鐘中對應的各元素,若所述當前指令的向量時鐘中有一個元素小於與所述當前指令具有相同訪問地址的指令的向量時鐘中的對應元素,則存在衝突的兩個指令之間存在數據競爭。例如,當前指令的向量時鐘為(P1, P2, P3, P4),存在與該當前指令存在衝突的至少一條指令中的某一條指令的向量時鐘為(qi, Q2, q3, q4),若Pi〈q1、P2〈%、P3〈q3和pZi中有至少一個滿足,則該當前指令與向量時鐘為Cqi, Q2, q3, (U)的指令之間存在數據競爭。
[0139]本實施例在調用多核處理器中的處理器核執行並行程序的指令之後,通過執行鎖訪問信息記錄流程、訪存信息記錄流程、向量時鐘更新流程和數據競爭判斷流程查找存在衝突的指令,並判斷所述存在衝突的指令之間是否存在數據競爭,使得在並行程序單次執行的過程中能夠快速、準確、有效的檢測該並行程序中潛在的數據競爭,保證並行程序的正確性;在並行程序的單次執行時可能沒有數據競爭的情況下,也能根據該次執行檢測出數據競爭存在的可能性,並且不會誤報,即,所有檢測出來的數據競爭都是真實在並行程序中真實存在的。本發明很好的彌補了現有技術中數據競爭檢測方法在速度、準確性、有效性方面的不足,為更好的調試和測試並行程序帶來突破。
[0140]在上述基礎上,如圖6所示,記錄所述處理器核的當前指令的訪存信息之前,還可以包括:
[0141]步驟601、判斷存儲所述當前指令的訪存歷史記錄器中記錄的訪存信息是否超過η條。
[0142]其中,η為大於等於2的預設正整數。
[0143]若是,則執行步驟602,以將所述處理器核的當前指令的訪存信息記錄在所述訪存歷史記錄器中;否則,直接執行步驟603。
[0144]步驟602、刪除所述訪存歷史記錄器中最早存入的一條訪存信息。
[0145]步驟603、記錄所述處理器核的當前指令的訪存信息。
[0146]訪存歷史記錄器中可以包含多個與各處理器核相對應的內容地址存儲器(content-addressable memory,簡稱CAM),所述CAM用於記錄與其對應的處理器核在執行所述並行程序過程中對應的指令的訪存信息。較優地,每條訪存指令存在CAM中的訪存信息可以包括:指令訪問的地址、指令操作類型(讀或寫)以及指令執行時對應處理器的本地時間戳。本發明中,η是預先設定的,η可以為任意大於等於2的正整數,優選的,取n=512。另外,當訪存歷史記錄器與處理器核個數相同時,所述訪存歷史記錄器可以一體化的配置在其對應的處理器核中,本發明不以此為限。
[0147]需要說明的是,本發明所有實施例中,通過並行程序的數據競爭檢測方法對待檢測並行程序中潛在的數據競爭進行檢測過程中,若檢測到有數據競爭存在,可以響應給程序檢測人員該數據競爭在並行程序中的位置,由程序檢測人員決定後續是否繼續進行或對待檢測並行程序進行修改,以避免該數據競爭;或者,直接在待檢測並行程序中規避該數據競爭,並繼續執行待檢測並行程序的後續部分,本發明不對此進行限制。
[0148]實施例三
[0149]圖7為本發明並行程序的數據競爭檢測裝置實施例一的結構示意圖。該裝置70包括:中央鎖訪問模塊71、訪存歷史記錄器72和序關係分析模塊73。
[0150]其中,所述中央鎖訪問模塊71,用於在調用多核處理器中的一處理器核執行並行程序的指令之後,記錄所述處理器核的當前指令的鎖訪問信息,其中,所述鎖訪問信息與鎖操作的鎖地址對應記錄;所述訪存歷史記錄器72,用於在調用多核處理器中的一處理器核執行並行程序的指令之後,記錄所述處理器核的當前指令的訪存信息;所述序關係分析模塊73,用於根據所述中央鎖訪問模塊記錄的鎖訪問信息以及所述訪存歷史記錄器記錄的訪存信息,判斷存在衝突的兩個指令之間是否存在數據競爭。
[0151]本實施例的並行程序的數據競爭檢測裝置,可以用於並行程序的數據競爭檢測方法實施例一的技術方案,其實現原理和技術效果類似,此處不再贅述。
[0152]在圖7的基礎上,如圖8所示,本實施例中所述序關係分析模塊80可以包括:第一判斷單元81、第二判斷單元82和第二判斷單元83。其中,第一判斷單元81用於根據記錄的各條指令的訪存信息,判斷指令間是否滿足程序序關係,如果兩條指令在處理器核上被執行,則兩條指令滿足程序序關係;第二判斷單元82用於根據記錄的所述鎖訪問信息,判斷所述鎖操作間是否滿足可行同步序關係,其中,對應於同一地址的先後執行的第一鎖操作以及第二鎖操作,若在所述第一鎖操作的鎖獲取操作以及鎖釋放操作之間存在一個寫操作,使得所述第二鎖操作的鎖獲取和鎖釋放之間存在對與所述寫操作為同一地址的衝突讀操作,則所述鎖操作間滿足可行同步序關係;第三判斷單元83用於當檢測出存在衝突的兩個指令時,判斷存在衝突的兩個指令是否滿足可行序關係;如果兩個指令之間不滿足可行序關係,則確定所述第一鎖操作和所述第二鎖操作間存在數據競爭,其中,所述可行序關係為:若存在衝突的兩條指令之間存在一串指令操作,這一串操作之間至少滿足程序序關係和可行同步序關係之一。
[0153]進一步地,在上述實施例中,所述序關係分析模塊80還可以包括:第四判斷單元84用於根據記錄的各處理器核的各條指令的訪存信息,判斷當前指令的訪問地址與所述多核處理器中其它處理器核的各條指令的訪問地址是否相同;如果是,則判斷所述當前指令與具有相同訪問地址的指令中是否存在寫操作;如果存在寫操作,則所述當前指令與其它處理器核的各條指令中,與該當前指令具有相同訪問地址的指令存在衝突。
[0154]實施例四
[0155]圖9為本發明並行程序的數據競爭檢測裝置實施例二的結構示意圖,如圖9所示,序關係分析模塊90在包括第一判斷單元906、第二判斷單元907、第三判斷單元908和第四判斷單元905的基礎上,還可以包括:第一更新單元901、第五判斷單元902和第二更新單元 903。
[0156]其中,第一判斷單元906、第二判斷單元907、第三判斷單元908和第四判斷單元905的作用與上述實施例中各對應單元所起的作用相同;第一更新單元901用於當識別到所述處理器核的本地時間戳加I時,根據本地時間戳更新所述處理器核當前指令的向量時鐘中的元素值,其中,每個向量時鐘與每個處理器核的每條指令對應設置,每個向量時鐘包括N個元素,N為處理器核的數量,N個元素分別與各處理器核對應;第五判斷單元902用於對於每個鎖地址,當監測到所述鎖地址的鎖訪問信息的操作類型為鎖獲取時,判斷在當前的鎖獲取之前是否存在滿足可行同步序關係的鎖釋放;第二更新單元903用於若第五判斷單元判斷結果為存在,根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘。
[0157]此時,對應地,中央鎖訪問模塊91可以包括:
[0158]記錄單元911用於當識別到當前指令觸發鎖操作或位於鎖獲取和鎖釋放之間時,記錄所述鎖訪問信息,所述鎖訪問信息包括處理器核標識、操作類型和本地時間戳;
[0159]第一處理單元912用於當識別到所述處理器核的當前指令觸發鎖操作時,將所述處理器核對應的本地時間戳加I。
[0160]本實施例的並行程序的數據競爭檢測裝置,可以用於本發明任意並行程序的數據競爭檢測方法實施例的技術方案,其實現原理和技術效果類似,此處不再贅述。
[0161]在上述基礎上,所述訪存歷史記錄器92可以包括:第六判斷單元921、第二處理單元922和第二記錄單元923。其中,第六判斷單元921用於判斷存儲所述當前指令的所述訪存歷史記錄器中記錄的訪存信息是否超過η條,η為大於等於2的預設正整數;第二處理單元922用於若第六判斷單元921判斷結果為是時,則刪除所述訪存歷史記錄器中最早存入的一條訪存信息,以使得所述處理器核的當前指令的訪存信息記錄在所述訪存歷史記錄器中;第二記錄單元923用於記錄所述處理器核的當前指令的訪存信息。
[0162]進一步地,第二更新單元903具體用於逐一對應比較所述滿足可行同步序關係的鎖獲取和鎖釋放的向量時鐘中各元素的大小,得到比較結果,取所述比較結果中較大的元素作為所述鎖釋放的向量時鐘中對應的元素。
[0163]進一步地,第三判斷單元923具體用於逐一對應比較存在衝突的兩個指令的向量時鐘中的各元素,判斷所述當前指令的向量時鐘中是否存在小於與其存在衝突的指令的向量時鐘中的對應元素的元素,如果存在,則存在衝突的兩個指令之間存在數據競爭。
[0164]實施例五
[0165]本實施例在上述實施例的基礎上,對多核處理系統實施例的技術方案進行詳細說明。
[0166]該多核處理系統包括:至少兩個處理器核、至少一個非處理器核設備以及如上述任一實施例中所提及的並行程序的數據競爭檢測裝置,其中,所述至少兩個處理器核,用於執行並行程序;所述至少一個非處理器核設備,與所述至少兩個處理器核連接;所述訪存歷史記錄器,與所述至少兩個處理器核連接;所述中央鎖訪問模塊,與所述至少兩個處理器核連接;所述序關係分析模塊,與所述訪存歷史記錄器和中央鎖訪問模塊連接。
[0167]本實施例仍以四個處理器核為例進行說明,如圖3所示,多核處理系統包括:第一處理器核111、第二處理器核112、第三處理器核113和第四處理器核114,用於執行並行程序;非處理器核設備115 ;第一訪存歷史記錄器121、第二訪存歷史記錄器122、第三訪存歷史記錄器123和第四訪存歷史記錄器124,與所述處理器核連接;中央鎖訪問模塊130,與所述處理器核連接;序關係分析模塊140,與各所述訪存歷史記錄器(圖3中標記為121、122、123和124)和中央鎖訪問模塊130連接。
[0168]需要說明的是,本發明任意實施例所提及的非處理器核設備,用於與其連接的各處理器核的內容交互,其中,所述非處理器核設備可以包括但不限於二級緩存、片上網絡、內存控制器等設備。
[0169]本實施例中的各訪存歷史記錄器、中央鎖訪問模塊和序關係分析模塊與上述裝置部分實施例中訪存歷史記錄器、中央鎖訪問模塊和序關係分析模塊的工作原理相同,在此不再贅述。
[0170]本實施例的多核處理系統,可以用於執行本發明任意實施例所提供的並行程序的數據競爭檢測方法的技術方案,其實現原理和技術效果類似,此處不再贅述。
[0171]本發明在調用多核處理器中的處理器核執行並行程序的指令之後,通過多個處理器核、非處理器核設備、訪存歷史記錄器、中央鎖訪問模塊和序關係分析模塊相互協同作用,使得在並行程序單次執行的過程中,通過該多核處理系統能夠快速、準確、有效的檢測該並行程序中潛在的數據競爭,保證並行程序的正確性;在並行程序的單次執行時可能沒有數據競爭的情況下,也能根據該次執行檢測出數據競爭存在的可能性,並且不會誤報,即,所有檢測出來的數據競爭都是真實在並行程序中真實存在的。本發明很好的彌補了現有技術中數據競爭檢測方法在速度、準確性、有效性方面的不足,為更好的調試和測試並行程序帶來突破。
[0172]本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬體來完成。前述的程序可以存儲於一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:R0M、RAM、磁碟或者光碟等各種可以存儲程序代碼的介質。
[0173]最後應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的範圍。
【權利要求】
1.一種並行程序的數據競爭檢測方法,其特徵在於,在調用多核處理器中的一處理器核執行並行程序的指令之後,還包括: 鎖訪問信息記錄流程:記錄所述處理器核的當前指令的鎖訪問信息,其中,所述鎖訪問信息與鎖操作的鎖地址對應記錄; 訪存信息記錄流程:記錄所述處理器核的當前指令的訪存信息;以及數據競爭判斷流程:根據所述鎖訪問信息記錄流程記錄的鎖訪問信息以及所述訪存信息記錄流程記錄的訪存信息,判斷存在衝突的兩個指令之間是否存在數據競爭。
2.根據權利要求1所述的方法,其特徵在於,所述數據競爭判斷流程具體包括: 根據記錄的各條指令的訪存信息,判斷指令間是否滿足程序序關係,如果兩條指令在處理器核上被執行,則兩條指令滿足程序序關係; 根據記錄的所述鎖訪問信息,判斷所述鎖操作間是否滿足可行同步序關係,其中,對應於同一地址的先後執行的第一鎖操作以及第二鎖操作,若在所述第一鎖操作的鎖獲取操作以及鎖釋放操作之間存在一個寫操作,使得所述第二鎖操作的鎖獲取和鎖釋放之間存在對與所述寫操作為同一地址的衝突讀操作,則所述鎖操作間滿足可行同步序關係; 當檢測出存在衝突的兩個指令時,判斷存在衝突的兩個指令是否滿足可行序關係;如果兩個指令之間不滿足可行序關係,則確定所述第一鎖操作和所述第二鎖操作間存在數據競爭,其中,所述可行序關係為:若存在衝突的兩條指令之間存在一串指令操作,這一串操作之間至少滿足程序序關係和可行同步序關係之一。
3.根據權利要求2所述的方法,其特徵在於,在所述數據競爭判斷流程之前,還包括: 根據記錄的各處理器核的各 條指令的訪存信息,判斷當前指令的訪問地址與所述多核處理器中其它處理器核的各條指令的訪問地址是否相同; 如果是,則判斷所述當前指令與具有相同訪問地址的指令中是否存在寫操作; 如果存在寫操作,則所述當前指令與其它處理器核的各條指令中,與該當前指令具有相同訪問地址的指令存在衝突。
4.根據權利要求2所述的方法,其特徵在於,還包括:向量時鐘更新流程,其中, 記錄所述處理器核的當前指令的鎖訪問信息具體包括: 當識別到當前指令觸發鎖操作或位於鎖獲取和鎖釋放之間時,記錄所述鎖訪問信息,所述鎖訪問信息包括:處理器核標識、操作類型和本地時間戳; 所述鎖訪問信息記錄流程還包括: 當識別到所述處理器核的當前指令觸發鎖操作時,將所述處理器核對應的本地時間戳加I ; 所述向量時鐘更新流程包括: 當識別到所述處理器核的本地時間戳加I時,根據本地時間戳更新所述處理器核當前指令的向量時鐘中的元素值,其中,每個向量時鐘與每個處理器核的每條指令對應設置,每個向量時鐘包括N個元素,N為處理器核的數量,N個元素分別與各處理器核對應; 對於每個鎖地址,當監測到所述鎖地址的鎖訪問信息的操作類型為鎖獲取時,判斷在當前的鎖獲取之前是否存在滿足可行同步序關係的鎖釋放,若存在,根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘。
5.根據權利要求4所述的方法,其特徵在於,記錄所述處理器核的當前指令的訪存信息之前,還包括: 判斷存儲所述當前指令的訪存歷史記錄器中記錄的訪存信息是否超過η條,η為大於等於2的預設正整數; 若是,則刪除所述訪存歷史記錄器中最早存入的一條訪存信息,以將所述處理器核的當前指令的訪存信息記錄在所述訪存歷史記錄器中。
6.根據權利要求4所述的方法,其特徵在於,所述根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘,包括: 逐一對應比較所述滿足可行同步序關係的鎖獲取和鎖釋放的向量時鐘中各元素的大小,得到比較結果,取所述比較結果中較大的元素作為所述鎖釋放的向量時鐘中對應的元素。
7.根據權利要求4所述的方法,其特徵在於,所述判斷存在衝突的兩個指令是否滿足可行序關係,包括: 逐一對應比較存在衝突的兩個指令的向量時鐘中的各元素,判斷所述當前指令的向量時鐘中是否存在小於與其存在衝突的指令的向量時鐘中的對應元素的元素,如果存在,則存在衝突的兩個指令之間存在數據競爭。
8.一種並行程序的數據競爭檢測裝置,其特徵在於,包括:中央鎖訪問模塊、訪存歷史記錄器和序關係分析模塊,其中, 所述中央鎖訪問模塊,用於在調用多核處理器中的一處理器核執行並行程序的指令之後,記錄所述處理器核的當前指令的鎖訪問信息,其中,所述鎖訪問信息與鎖操作的鎖地址對應記錄; 所述訪存歷史記錄器,用於在調用多核處理器中的一處理器核執行並行程序的指令之後,記錄所述處理器核的當前指令的訪存信息; 所述序關係分析模塊,用於根據所述中央鎖訪問模塊記錄的鎖訪問信息以及所述訪存歷史記錄器記錄的訪存信息,判斷存在衝突的兩個指令之間是否存在數據競爭。
9.根據權利要求8所述的裝置,其特徵在於,所述序關係分析模塊包括: 第一判斷單元,用於根據記錄的各條指令的訪存信息,判斷指令間是否滿足程序序關係,如果兩條指令在處理器核上被執行,則兩條指令滿足程序序關係; 第二判斷單元,用於根據記錄的所述鎖訪問信息,判斷所述鎖操作間是否滿足可行同步序關係,其中,對應於同一地址的先後執行的第一鎖操作以及第二鎖操作,若在所述第一鎖操作的鎖獲取操作以及鎖釋放操作之間存在一個寫操作,使得所述第二鎖操作的鎖獲取和鎖釋放之間存在對與所述寫操作為同一地址的衝突讀操作,則所述鎖操作間滿足可行同步序關係; 第三判斷單元,用於當檢測出存在衝突的兩個指令時,判斷存在衝突的兩個指令是否滿足可行序關係;如果兩個指令之間不滿足可行序關係,則確定所述第一鎖操作和所述第二鎖操作間存在數據競爭,其中,所述可行序關係為:若存在衝突的兩條指令之間存在一串指令操作,這一串操作之間至少滿足程序序關係和可行同步序關係之一。
10.根據權利要求9所述的裝置,其特徵在於,所述序關係分析模塊還包括: 第四判斷單元,用於根據記錄的各處理器核的各條指令的訪存信息,判斷當前指令的訪問地址與所述多核處理器中其它處理器核的各條指令的訪問地址是否相同;如果是,則判斷所述當前指令與具有相同訪問地址的指令中是否存在寫操作;如果存在寫操作,則所述當前指令與其它處理器核的各條指令中,與該當前指令具有相同訪問地址的指令存在衝關。
11.根據權利要求9所述的裝置,其特徵在於, 所述中央鎖訪問模塊包括: 記錄單元,用於當識別到當前指令觸發鎖操作或位於鎖獲取和鎖釋放之間時,記錄所述鎖訪問信息,所述鎖訪問信息包括處理器核標識、操作類型和本地時間戳; 第一處理單元,用於當識別到所述處理器核的當前指令觸發鎖操作時,將所述處理器核對應的本地時間戳加I; 所述序關係分析模塊還包括: 第一更新單元,用於當識別到所述處理器核的本地時間戳加I時,根據本地時間戳更新所述處理器核當前指令的向量時鐘中的元素值,其中,每個向量時鐘與每個處理器核的每條指令對應設置,每個向量時鐘包括N個元素,N為處理器核的數量,N個元素分別與各處理器核對應; 第五判斷單元,用於對於每個鎖地址,當監測到所述鎖地址的鎖訪問信息的操作類型為鎖獲取時,判斷在當前的鎖獲取之前是否存在滿足可行同步序關係的鎖釋放; 第二更新單元,用於若第五判斷單元判斷結果為存在,根據該鎖釋放的向量時鐘更新該鎖獲取的向量時鐘。
12.根據權利要求11所述的裝置,其特徵在於,所述訪存歷史記錄器包括: 第六判斷單元,用於判斷存儲所述當前指令的所述訪存歷史記錄器中記錄的訪存信息是否超過η條,η為大於等於2的預設正整數; 第二處理單元,用於若所述第六判斷單元判斷結果為是時,則刪除所述訪存歷史記錄器中最早存入的一條訪存信息,以使得所述處理器核的當前指令的訪存信息記錄在所述訪存歷史記錄器中; 第二記錄單元,用於記錄所述處理器核的當前指令的訪存信息。
13.根據權利要求11所述的裝置,其特徵在於,所述第二更新單元具體用於:逐一對應比較所述滿足可行同步序關係的鎖獲取和鎖釋放的向量時鐘中各元素的大小,得到比較結果,取所述比較結果中較大的元素作為所述鎖釋放的向量時鐘中對應的元素。
14.根據權利要求11所述的裝置,其特徵在於,所述第三判斷單元具體用於: 逐一對應比較存在衝突的兩個指令的向量時鐘中的各元素,判斷所述當前指令的向量時鐘中是否存在小於與其存在衝突的指令的向量時鐘中的對應元素的元素,如果存在,則存在衝突的兩個指令之間存在數據競爭。
15.一種多核處理系統,其特徵在於,包括:至少兩個處理器核、至少一個非處理器核設備以及如權利要求8-14中任一項所述的並行程序的數據競爭檢測裝置,其中, 所述至少兩個處理器核,用於執行並行程序; 所述至少一個非處理器核設備,與所述至少兩個處理器核連接; 所述訪存歷史記錄器,與所述至少兩個處理器核連接; 所述中央鎖訪問模塊,與所述至少兩個處理器核連接;所述序關係分析模塊,與所述訪 存歷史記錄器和中央鎖訪問模塊連接。
【文檔編號】G06F11/36GK103488563SQ201310400690
【公開日】2014年1月1日 申請日期:2013年9月5日 優先權日:2013年9月5日
【發明者】李磊, 陳雲霽, 孫國慶 申請人:龍芯中科技術有限公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀