一種驗證cache一致性協(xié)議的方法及裝置的制造方法
【專利摘要】本發(fā)明提供了一種驗證cache一致性協(xié)議的方法及裝置,該方法,包括:預(yù)先設(shè)置cache一致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù)設(shè)狀態(tài)機的一個狀態(tài)對應(yīng);預(yù)先根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立所述cache一致性協(xié)議的形式化模型;確定待運行的協(xié)議表項;確定到達(dá)每個待運行的協(xié)議表項對應(yīng)的狀態(tài)的所有場景;根據(jù)每個所述場景,運行所述形式化模型;根據(jù)所述形式化模型的運行結(jié)果,驗證所述cache一致性協(xié)議。本發(fā)明提供了一種驗證cache一致性協(xié)議的方法及裝置,能夠使得驗證結(jié)果更加準(zhǔn)確。
【專利說明】
_種驗證cache-致性協(xié)議的方法及裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種驗證cache-致性協(xié)議的方法及裝置。
【背景技術(shù)】
[0002] 近年來隨著集成電路技術(shù)的不斷發(fā)展引發(fā)了多內(nèi)核技術(shù)的出現(xiàn),因為CHJ的速度 遠(yuǎn)高于存儲器的速度,成為了限制處理器發(fā)展的"技術(shù)瓶頸"。Cache(高速緩存)的出現(xiàn)很好 的解決了這個問題,Cache是存在于主存和CHJ之間的一級存儲器,然而在應(yīng)用時會出現(xiàn) Cache-致性問題。當(dāng)兩個或兩個以上的Cache包含有同一數(shù)據(jù)塊時,如果其中任何一個 Cache對該數(shù)據(jù)塊進(jìn)行修改,包含有該數(shù)據(jù)塊的其他Cache如果沒有及時將數(shù)據(jù)進(jìn)行更新就 會產(chǎn)生數(shù)據(jù)不一致的情況。Cache-致性協(xié)議就是維護(hù)多個Cache數(shù)據(jù)的一致性。Cache-致 性協(xié)議是多核處理機系統(tǒng)的核心,所以對cache-致性進(jìn)行形式化驗證是一項非常重要的 工作。
[0003] 現(xiàn)有技術(shù)中,一般都采用模擬或仿真技術(shù)進(jìn)行cache-致性協(xié)議的驗證。具體地, 通過模擬或仿真cache之間的數(shù)據(jù)交互來驗證cache-致性協(xié)議。
[0004] 但是,現(xiàn)有技術(shù)的驗證cache-致性協(xié)議的方案,隨著協(xié)議的復(fù)雜性的增加,無法 覆蓋所有的錯誤情況,驗證結(jié)果不夠準(zhǔn)確。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例提供了一種驗證cache-致性協(xié)議的方法及裝置,能夠使得驗證結(jié) 果更加準(zhǔn)確。
[0006] -方面,本發(fā)明實施例提供了一種驗證cache-致性協(xié)議的方法,包括:
[0007] S1:預(yù)先設(shè)置cache-致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù)設(shè)狀態(tài)機的一個 狀態(tài)對應(yīng);
[0008] S2:預(yù)先根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立所述cache-致性協(xié)議的形式化模 型;
[0009] S3:確定待運行的協(xié)議表項;
[0010] S4:確定到達(dá)每個待運彳丁的協(xié)議表項對應(yīng)的狀態(tài)的所有場景;
[0011] S5:根據(jù)每個所述場景,運行所述形式化模型;
[0012] S6:根據(jù)所述形式化模型的運行結(jié)果,驗證所述cache-致性協(xié)議。
[0013] 進(jìn)一步地,包括:
[0014] 所述S3,包括:將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0015] 所述S6,包括:判斷是否存在沒有場景能夠到達(dá)的狀態(tài),如果是,則確定所述cache 一致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0016] 進(jìn)一步地,包括:
[0017]所述S3,包括:將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0018]所述S6,包括:判斷是否存在能夠到達(dá)不止一個狀態(tài)的場景,如果是,則確定所述 cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0019] 進(jìn)一步地,還包括:預(yù)先設(shè)置至少兩個協(xié)議表,其中,每個協(xié)議表包括至少一個協(xié) 議表項;
[0020] 還包括:預(yù)先設(shè)置任一兩個協(xié)議表之間的觸發(fā)條件;
[0021 ]所述S3,包括:將每個觸發(fā)條件對應(yīng)的協(xié)議表中的協(xié)議表項作為所述待運行的協(xié) 議表項;
[0022] 所述S5,包括:根據(jù)每個觸發(fā)條件和每個觸發(fā)條件對應(yīng)的場景,運行所述形式化模 型;
[0023] 所述S6,包括:判斷是否存在所有的協(xié)議表均未被觸發(fā)的情況,如果是,則確定所 述cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0024] 進(jìn)一步地,所述S3,包括:將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0025] 所述S6,包括:判斷在所有場景到達(dá)的狀態(tài)中是否存在沒有對應(yīng)的協(xié)議表項的狀 態(tài),如果是,則確定所述cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通 過驗證。
[0026]進(jìn)一步地,還包括:預(yù)先設(shè)置目錄監(jiān)聽協(xié)議MESI檢測規(guī)則,其中,所述MESI檢測規(guī) 貝1J,包括:任意兩個Cache不能同時為M狀態(tài);任意兩個Cache不能同時為E狀態(tài);任意兩個 Cache的狀態(tài)中M狀態(tài)和E狀態(tài)不能同時存在;任意兩個Cache的狀態(tài)中M狀態(tài)和S狀態(tài)不能同 時存在;任意兩個Cache的狀態(tài)中E狀態(tài)和S狀態(tài)不能同時存在;主存目錄狀態(tài)為I狀態(tài)時,所 有Cache狀態(tài)都為I狀態(tài);主存目錄狀態(tài)為S狀態(tài)時,任意一個Cache不能為E狀態(tài)和M狀態(tài);主 存目錄狀態(tài)為I狀態(tài)時,目錄矢量必須為〇;主存目錄狀態(tài)為E狀態(tài)時,目錄矢量只有一位為 1;
[0027] 還包括:根據(jù)所述MESI檢測規(guī)則生成檢查探針;
[0028] 所述S6,包括:通過所述檢查探針來實時檢測運行中的所述形式化模型是否滿足 所述MESI檢測規(guī)則,如果是,則所述cache-致性協(xié)議通過驗證,否則,所述cache-致性協(xié) 議不通過驗證。
[0029]另一方面,本發(fā)明實施例提供了一種驗證cache-致性協(xié)議的裝置,包括:
[0030]第一設(shè)置單元,用于設(shè)置cache-致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù)設(shè)狀 態(tài)機的一個狀態(tài)對應(yīng);
[0031 ]建立單元,用于根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立形式化模型;
[0032] 第一確定單元,用于確定待運行的協(xié)議表項;
[0033] 第二確定單元,用于確定到達(dá)每個待運行的協(xié)議表項對應(yīng)的狀態(tài)的所有場景;
[0034] 運行單元,用于根據(jù)每個所述場景,運行所述形式化模型;
[0035] 驗證單元,用于根據(jù)所述形式化模型的運行結(jié)果,驗證所述cache-致性協(xié)議。 [0036] 進(jìn)一步地,包括:
[0037] 所述第一確定單元,用于將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0038] 所述驗證單元,用于判斷是否存在沒有場景能夠到達(dá)的狀態(tài),當(dāng)判斷結(jié)果為是時, 則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致性協(xié)議 通過驗證。
[0039] 進(jìn)一步地,所述第一確定單元,用于將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0040]所述驗證單元,用于判斷是否存在能夠到達(dá)不止一個狀態(tài)的場景,當(dāng)判斷結(jié)果為 是時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致性 協(xié)議通過驗證。
[0041 ] 進(jìn)一步地,還包括:
[0042]第二設(shè)置單元,用于設(shè)置至少兩個協(xié)議表,其中,每個協(xié)議表包括至少一個協(xié)議表 項;
[0043]還包括:第三設(shè)置單元,用于設(shè)置任一兩個協(xié)議表之間的觸發(fā)條件;
[0044] 所述第一確定單元,用于將每個觸發(fā)條件對應(yīng)的協(xié)議表中的協(xié)議表項作為所述待 運行的協(xié)議表項;
[0045] 所述運行單元,用于根據(jù)每個觸發(fā)條件和每個觸發(fā)條件對應(yīng)的場景,運行所述形 式化模型;
[0046] 所述驗證單元,用于判斷是否存在所有的協(xié)議表均未被觸發(fā)的情況,當(dāng)判斷結(jié)果 為是時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致 性協(xié)議通過驗證。
[0047] 進(jìn)一步地,所述第一確定單元,用于將每個協(xié)議表項作為所述待運行的協(xié)議表項; [0048]所述驗證單元,用于判斷在所有場景到達(dá)的狀態(tài)中是否存在沒有對應(yīng)的協(xié)議表項 的狀態(tài),當(dāng)判斷結(jié)果為是時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時, 確定所述cache-致性協(xié)議通過驗證。
[0049] 進(jìn)一步地,還包括:
[0050] 第四設(shè)置單元,用于設(shè)置目錄監(jiān)聽協(xié)議MESI檢測規(guī)則;
[0051] 其中,所述MESI檢測規(guī)則,包括:任意兩個Cache不能同時為M狀態(tài);任意兩個Cache 不能同時為E狀態(tài);任意兩個Cache的狀態(tài)中M狀態(tài)和E狀態(tài)不能同時存在;任意兩個Cache的 狀態(tài)中M狀態(tài)和S狀態(tài)不能同時存在;任意兩個Cache的狀態(tài)中E狀態(tài)和S狀態(tài)不能同時存在; 主存目錄狀態(tài)為I狀態(tài)時,所有Cache狀態(tài)都為I狀態(tài);主存目錄狀態(tài)為S狀態(tài)時,任意一個 Cache不能為E狀態(tài)和M狀態(tài);主存目錄狀態(tài)為I狀態(tài)時,目錄矢量必須為0;主存目錄狀態(tài)為E 狀態(tài)時,目錄矢量只有一位為1;
[0052] 還包括:生成單元,用于根據(jù)所述MESI檢測規(guī)則生成檢查探針;
[0053]所述驗證單元,用于通過所述檢查探針來實時檢測運行中的所述形式化模型是否 滿足所述MESI檢測規(guī)則,當(dāng)判斷結(jié)果為是時,則所述cache-致性協(xié)議通過驗證,當(dāng)判斷結(jié) 果為否時,所述cache-致性協(xié)議不通過驗證。
[0054]在本發(fā)明實施例中,通過協(xié)議表項和狀態(tài)機建立形式化模型,將cache-致性協(xié)議 轉(zhuǎn)換為形式化模型,將cache-致性協(xié)議的邏輯體現(xiàn)在形式化模型中,通過運行形式化模型 根據(jù)運行結(jié)果來驗證cache-致性協(xié)議,根據(jù)形式化模型中的邏輯關(guān)系能夠覆蓋更多的錯 誤情況,使得驗證結(jié)果更加準(zhǔn)確。
【附圖說明】
[0055]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明 的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù) 這些附圖獲得其他的附圖。
[0056]圖1是本發(fā)明一實施例提供的一種驗證cache-致性協(xié)議的方法的流程圖;
[0057]圖2是本發(fā)明一實施例提供的另一種驗證cache-致性協(xié)議的方法的流程圖;
[0058]圖3是本發(fā)明一實施例提供的一種驗證cache-致性協(xié)議的裝置的示意圖;
[0059]圖4是本發(fā)明一實施例提供的另一種驗證cache-致性協(xié)議的裝置的示意圖。
【具體實施方式】
[0060]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。 [0061 ]如圖1所示,本發(fā)明實施例提供了一種驗證cache-致性協(xié)議的方法,該方法可以 包括以下步驟:
[0062] S1:預(yù)先設(shè)置cache-致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù)設(shè)狀態(tài)機的一個 狀態(tài)對應(yīng);
[0063] S2:預(yù)先根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立形式化模型;
[0064] S3:確定待運行的協(xié)議表項;
[0065] S4:確定到達(dá)每個待運彳丁的協(xié)議表項對應(yīng)的狀態(tài)的所有場景;
[0066] S5:根據(jù)每個所述場景,運行所述形式化模型;
[0067] S6:根據(jù)所述形式化模型的運行結(jié)果,驗證所述cache-致性協(xié)議。
[0068] 在本發(fā)明實施例中,通過協(xié)議表項和狀態(tài)機建立形式化模型,將cache-致性協(xié)議 轉(zhuǎn)換為形式化模型,將cache-致性協(xié)議的邏輯體現(xiàn)在形式化模型中,通過運行形式化模型 根據(jù)運行結(jié)果來驗證cache-致性協(xié)議,根據(jù)形式化模型中的邏輯關(guān)系能夠覆蓋更多的錯 誤情況,使得驗證結(jié)果更加準(zhǔn)確。
[0069] 下面分別從完整性、獨立性、防死鎖、完備性、MESI(Modified Exclusive Shared Or Invalid,目錄監(jiān)聽協(xié)議)等方面對cache-致性協(xié)議的進(jìn)行驗證。
[0070] 為了對cache-致性協(xié)議進(jìn)行完整性驗證,在一種可能的實現(xiàn)方式中,所述S3,包 括:將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0071 ]所述S6,包括:判斷是否存在沒有場景能夠到達(dá)的狀態(tài),如果是,則確定所述cache 一致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0072]在該實現(xiàn)方式中,已經(jīng)確定出協(xié)議表項,根據(jù)協(xié)議表項可以確定出到達(dá)每個協(xié)議 表項對應(yīng)的狀態(tài)的所有場景。如果有的狀態(tài)沒有任何場景能夠到達(dá),說明該cache-致性協(xié) 議是不完整的,確定cache-致性協(xié)議不通過完整性驗證,否則,確定cache-致性協(xié)議通過 完整性驗證。
[0073]另外,可以不對每個協(xié)議表項進(jìn)行驗證,只是驗證其中一部分,因此,可以通過參 數(shù)cover來標(biāo)識需要在該實現(xiàn)方式中進(jìn)行驗證的協(xié)議表項,這樣,只需對被標(biāo)識的協(xié)議表項 進(jìn)行處理即可。具體地,可以通過表1的方式來標(biāo)記協(xié)議表項。
[0074]表 1
[0076] 在表1中,第一行是參數(shù)行,第二行是形式化模型中需要標(biāo)記的協(xié)議表項。
[0077] 還有,在本發(fā)明實施例中,場景可以包括:到達(dá)每個協(xié)議表項對應(yīng)的狀態(tài)的路徑。 協(xié)議表項包括:行為、數(shù)據(jù)結(jié)構(gòu);行為包括:讀、寫、監(jiān)聽等,數(shù)據(jù)結(jié)構(gòu)包括:地址、參數(shù)等。 [0078]為了對cache-致性協(xié)議進(jìn)行獨立性驗證,在一種可能的實現(xiàn)方式中,所述S3,包 括:將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0079] 所述S6,包括:判斷是否存在能夠到達(dá)不止一個狀態(tài)的場景,如果是,則確定所述 cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0080] 在該實現(xiàn)方式中,由于每個場景只能到達(dá)一個狀態(tài),如果存在能夠到達(dá)不止一個 狀態(tài)的場景,說明cache-致性協(xié)議存在不相互獨立的協(xié)議表項。具體地,判斷是否存在能 夠到達(dá)不止一個狀態(tài)的場景,如果是,則確定所述cache-致性協(xié)議不通過獨立性驗證,否 貝 1J,確定所述cache-致性協(xié)議通過獨立性驗證。
[00811另外,可以通過參數(shù)PRLL標(biāo)記協(xié)議表項,然后,只對標(biāo)記的協(xié)議表項進(jìn)行驗證。具 體地,可以通過表2的方式來標(biāo)記協(xié)議表項。
[0082]表 2
[0084]在表2中,第一行是參數(shù)行,第二行是形式化模型中需要標(biāo)記的協(xié)議表項。
[0085] 為了對cache-致性協(xié)議進(jìn)行防死鎖驗證,在一種可能的實現(xiàn)方式中,該方法還包 括:預(yù)先設(shè)置至少兩個協(xié)議表,其中,每個協(xié)議表包括至少一個協(xié)議表項;
[0086] 還包括:預(yù)先設(shè)置任一兩個協(xié)議表之間的觸發(fā)條件;
[0087] 所述S3,包括:將每個觸發(fā)條件對應(yīng)的協(xié)議表中的協(xié)議表項作為所述待運行的協(xié) 議表項;
[0088] 所述S5,包括:根據(jù)每個觸發(fā)條件和每個觸發(fā)條件對應(yīng)的場景,運行所述形式化模 型;
[0089] 所述S6,包括:判斷是否存在所有的協(xié)議表均未被觸發(fā)的情況,如果是,則確定所 述cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0090] 在該實現(xiàn)方式中,在設(shè)置協(xié)議表時,可以根據(jù)功能來設(shè)置,例如:將所有實現(xiàn)下行 的協(xié)議表項放到協(xié)議表A中,將所有實現(xiàn)上行的協(xié)議表項放到協(xié)議表B中。通過觸發(fā)條件來 觸發(fā)協(xié)議表之間協(xié)議表項對應(yīng)的狀態(tài)的跳轉(zhuǎn)。舉例來說,協(xié)議表A中有協(xié)議表項A,協(xié)議表B 中有協(xié)議表項B,為了觸發(fā)協(xié)議表項A對應(yīng)的狀態(tài)A跳轉(zhuǎn)到協(xié)議表項B對應(yīng)的狀態(tài)B,可以通過 設(shè)置觸發(fā)條件A來實現(xiàn)。通過觸發(fā)條件能夠?qū)崿F(xiàn)協(xié)議表之間的狀態(tài)跳轉(zhuǎn)。形式化模型中所有 協(xié)議表在任意時刻必須有一個協(xié)議表被觸發(fā),如果存在所有的協(xié)議表均未被觸發(fā)的情況, 表明狀態(tài)的跳轉(zhuǎn)至少發(fā)生在同一個協(xié)議表中,或者沒有發(fā)生狀態(tài)的跳轉(zhuǎn),確定cache-致性 協(xié)議存在死鎖情況。具體地,判斷是否存在所有的協(xié)議表均未被觸發(fā)的情況,如果是,則確 定所述cache-致性協(xié)議不通過防死鎖驗證,否則,確定所述cache-致性協(xié)議通過防死鎖 驗證。當(dāng)處于所有的協(xié)議表均未被觸發(fā)的情況時,協(xié)議進(jìn)入一種沒出口的狀態(tài),Cache和主 存無法實現(xiàn)狀態(tài)轉(zhuǎn)換,它們之間以及Cache和Cache之間都無法進(jìn)行消息傳輸。
[0091] 為了對cache-致性協(xié)議進(jìn)行完備性驗證,在一種可能的實現(xiàn)方式中,所述S3,包 括:將每個協(xié)議表項作為所述待運行的協(xié)議表項;
[0092] 所述S6,包括:判斷在所有場景到達(dá)的狀態(tài)中是否存在沒有對應(yīng)的協(xié)議表項的狀 態(tài),如果是,則確定所述cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通 過驗證。
[0093] 在該實現(xiàn)方式中,確定出到達(dá)每個協(xié)議表項的所有場景,運行形式化模型,當(dāng)在所 有場景中如果有任一場景所到達(dá)的狀態(tài)沒有對應(yīng)的協(xié)議表項,則說明cache-致性協(xié)議沒 有覆蓋所有場景,協(xié)議表項不夠完備,缺少協(xié)議表項。具體地,判斷在所有場景到達(dá)的狀態(tài) 中是否存在沒有對應(yīng)的協(xié)議表項的狀態(tài),如果是,則確定所述cache-致性協(xié)議不通過完備 性驗證,否則,確定所述cache-致性協(xié)議通過完備性驗證。另外,可以通過參數(shù)FULL標(biāo)記協(xié) 議表項,然后,只對標(biāo)記的協(xié)議表項進(jìn)行驗證。具體地,可以通過表3的方式來標(biāo)記協(xié)議表 項。
[0094] 表 3
[0096]在表3中,第一行是參數(shù)行,第二行是形式化模型中需要標(biāo)記的協(xié)議表項。
[0097] 為了對cache-致性協(xié)議進(jìn)行MESI驗證,在一種可能的實現(xiàn)方式中,該方法還包 括:預(yù)先設(shè)置MESI檢測規(guī)則,其中,所述MESI檢測規(guī)則,包括:
[0098] 任意兩個Cache不能同時為M狀態(tài);任意兩個Cache不能同時為E狀態(tài);任意兩個 Cache的狀態(tài)中M狀態(tài)和E狀態(tài)不能同時存在;任意兩個Cache的狀態(tài)中M狀態(tài)和S狀態(tài)不能同 時存在;任意兩個Cache的狀態(tài)中E狀態(tài)和S狀態(tài)不能同時存在;主存目錄狀態(tài)為I狀態(tài)時,所 有Cache狀態(tài)都為I狀態(tài);主存目錄狀態(tài)為S狀態(tài)時,任意一個Cache不能為E狀態(tài)和M狀態(tài);主 存目錄狀態(tài)為I狀態(tài)時,目錄矢量必須為〇;主存目錄狀態(tài)為E狀態(tài)時,目錄矢量只有一位為 1;
[0099] 還包括:根據(jù)所述MESI檢測規(guī)則生成檢查探針;
[0100] 所述S6,包括:通過所述檢查探針來實時檢測運行中的所述形式化模型是否滿足 所述MESI檢測規(guī)則,如果是,則所述cache-致性協(xié)議通過驗證,否則,所述cache-致性協(xié) 議不通過驗證。
[0101] 在MESI中,M狀態(tài)表示這行數(shù)據(jù)有效,數(shù)據(jù)被修改了,和內(nèi)存中的數(shù)據(jù)不一致,數(shù)據(jù) 只存在于本cache中;E狀態(tài)表示這行數(shù)據(jù)有效,數(shù)據(jù)和內(nèi)存中的數(shù)據(jù)一致,數(shù)據(jù)只存在于本 cache中;S狀態(tài)表示這行數(shù)據(jù)有效,數(shù)據(jù)和內(nèi)存中的數(shù)據(jù)一致,數(shù)據(jù)存在于很多cache中;I 狀態(tài)表示這行數(shù)據(jù)無效。
[0102] 在該實現(xiàn)方式中,將預(yù)設(shè)的MESI檢測規(guī)則生成檢查探針,通過檢查探針對運行中 的形式化模型進(jìn)行檢測,判斷形式化模型在運行過程中是否滿足規(guī)則的要求。在這種實現(xiàn) 方式中,預(yù)設(shè)的規(guī)則不影響形式化模型的運行,檢查探針與形式化模型是平行的,保證了形 式化模型的獨立完整性,這樣,可以根據(jù)需要來設(shè)置規(guī)則,而不會因為規(guī)則的改變對形式化 模型造成影響,能夠更加方便地、更加全面地對cache-致性協(xié)議進(jìn)行驗證。
[0103]另外,可以通過參數(shù)NEVER標(biāo)記協(xié)議表項,然后,只對標(biāo)記的協(xié)議表項進(jìn)行驗證。具 體地,MESI檢測規(guī)則的定義可以通過表4來實現(xiàn)。
[0104]表4
[0106]參數(shù)部分是NEVER這是固定的,表示該情況是不允許發(fā)生的;第二部分同形式化模 型主體類似,但是定義的是根據(jù)需要設(shè)計定義的檢查探針。
[01 07] 需要說明的是:針對參數(shù)COVER、參數(shù)PRLL、參數(shù)FULL,如果這三個參數(shù)要標(biāo)記的協(xié) 議表項相同,則可以通過同一個表來實現(xiàn)。具體地,如表5所示。
[0108]表5
[0110] 在表5中,第一行是參數(shù)行,第二行是形式化模型中需要標(biāo)記的協(xié)議表項。在參數(shù) 行中幾個參數(shù)是并列獨立存在,參數(shù)之間不會相互影響。
[0111] 如圖2所示,本發(fā)明實施例提供了一種驗證cache-致性協(xié)議的方法,該方法可以 包括以下步驟:
[0112] 步驟201:預(yù)先設(shè)置cache-致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù)設(shè)狀態(tài)機 的一個狀態(tài)對應(yīng)。
[0113] 具體地,在進(jìn)行協(xié)議表項的定義時可以根據(jù)具體的測試環(huán)境來定義。協(xié)議表項可 以包括:數(shù)據(jù)結(jié)構(gòu)、行為,數(shù)據(jù)結(jié)構(gòu)包括:地址、參數(shù)等,行為包括:讀、寫、監(jiān)聽等。協(xié)議表項 還要根據(jù)具體的測試環(huán)境來定義。舉例來說,測試環(huán)境為:2個cache、2個CPU,協(xié)議表項A為: cachel的數(shù)據(jù)結(jié)構(gòu)為地址1,行為是讀,cache2的數(shù)據(jù)結(jié)構(gòu)為地址2,行為是監(jiān)聽。而該協(xié)議 表項A對應(yīng)于狀態(tài)機的一個狀態(tài)A。經(jīng)過事件的觸發(fā),協(xié)議表項A對應(yīng)的狀態(tài)A可能會跳轉(zhuǎn)到 協(xié)議表項B對應(yīng)的狀態(tài)B。
[0114] 步驟202:預(yù)先設(shè)置兩個以上協(xié)議表,其中,每個協(xié)議表包括至少一個協(xié)議表項。
[0115] 舉例來說,設(shè)置有10個協(xié)議表項,其中,4個是用于接收功能,6個是用于發(fā)送功能, 則可以根據(jù)功能設(shè)置兩個協(xié)議表,分別是協(xié)議表A和協(xié)議表B,協(xié)議表A對應(yīng)于接收功能,其 中包括4個協(xié)議表項,協(xié)議表B對應(yīng)于發(fā)送功能,其中包括6個協(xié)議表項。
[0116] 步驟203:預(yù)先根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立所述cache-致性協(xié)議的形 式化模型。
[0117]該形式化模型是基于狀態(tài)機的,隨著形式化模型的運行,狀態(tài)機中的狀態(tài)會發(fā)生 跳轉(zhuǎn)。這里的形式化模型可以是表格狀態(tài)機形式的。
[0118] 步驟204:確定到達(dá)每個協(xié)議表項對應(yīng)的狀態(tài)的所有場景。
[0119] 可以根據(jù)形式化模型,窮舉出到達(dá)每個協(xié)議表項對應(yīng)的狀態(tài)的所有場景。舉例來 說,狀態(tài)A、狀態(tài)B、狀態(tài)C,到達(dá)狀態(tài)A的場景有:場景1:由狀態(tài)B直接到狀態(tài)A,場景2:由狀態(tài)B 到狀態(tài)C再到狀態(tài)A。這里場景可以是到達(dá)某個狀態(tài)的路徑。另外,發(fā)生狀態(tài)的轉(zhuǎn)換可以還需 要一些事件作為觸發(fā)條件,因此,場景中還可以包括觸發(fā)條件。例如:場景1:在處于狀態(tài)B 時,經(jīng)過觸發(fā)條件A,能夠到達(dá)狀態(tài)A。
[0120] 步驟205:根據(jù)每個協(xié)議表項對應(yīng)的每個場景,運行所述形式化模型。
[0121] 舉例來說,對應(yīng)上述的場景1,可以將形式化模型的狀態(tài)設(shè)置為狀態(tài)B,按照狀態(tài)B 運行,經(jīng)過觸發(fā)條件A進(jìn)行觸發(fā)。
[0122] 步驟206:判斷是否存在沒有場景能夠到達(dá)的狀態(tài),如果是,則確定所述cache-致 性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0123] 舉例來說,針對上述的狀態(tài)A,在運行形式化模型的過程中,通過場景1和場景2都 不能到達(dá)狀態(tài)A,因此,狀態(tài)A就是沒有場景能夠到達(dá)的狀態(tài),無法通過驗證。
[0124] 步驟207:判斷是否存在能夠到達(dá)不止一個狀態(tài)的場景,如果是,則確定所述cache 一致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。
[0125] 舉例來說,針對上述的狀態(tài)A,在運行形式化模型的過程中,通過場景1,不僅能夠 到達(dá)狀態(tài)A,還能到達(dá)狀態(tài)C,那么,狀態(tài)A和狀態(tài)C不是獨立的存在沖突,無法通過驗證。
[0126] 步驟208:判斷在所有場景到達(dá)的狀態(tài)中是否存在沒有對應(yīng)的協(xié)議表項的狀態(tài),如 果是,則確定所述cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗 證。
[0127] 舉例來說,針對場景1,根據(jù)場景1運行形式化模型后,到達(dá)了狀態(tài)D,但是,狀態(tài)D在 協(xié)議表A和協(xié)議表B中都沒有對應(yīng)的協(xié)議表項,則說明協(xié)議表項不完備,無法通過驗證。
[0128] 另外,本發(fā)明實施例還可以包括:預(yù)先設(shè)置目錄監(jiān)聽協(xié)議MESI檢測規(guī)則,其中,所 述MESI檢測規(guī)則,包括:
[0129] 任意兩個Cache不能同時為M狀態(tài);任意兩個Cache不能同時為E狀態(tài);任意兩個 Cache的狀態(tài)中M狀態(tài)和E狀態(tài)不能同時存在;任意兩個Cache的狀態(tài)中M狀態(tài)和S狀態(tài)不能同 時存在;任意兩個Cache的狀態(tài)中E狀態(tài)和S狀態(tài)不能同時存在;主存目錄狀態(tài)為I狀態(tài)時,所 有Cache狀態(tài)都為I狀態(tài);主存目錄狀態(tài)為S狀態(tài)時,任意一個Cache不能為E狀態(tài)和M狀態(tài);主 存目錄狀態(tài)為I狀態(tài)時,目錄矢量必須為〇;主存目錄狀態(tài)為E狀態(tài)時,目錄矢量只有一位為 1;
[0130] 在步驟205之前,還包括:根據(jù)所述MESI檢測規(guī)則生成檢查探針;
[0131] 在步驟205之后,包括:通過所述檢查探針來實時檢測運行中的所述形式化模型是 否滿足所述MESI檢測規(guī)則,如果是,則所述cache-致性協(xié)議通過驗證,否則,所述cache- 致性協(xié)議不通過驗證。
[0132] 舉例來說,針對規(guī)則:任意兩個Cache不能同時為M狀態(tài)來說,當(dāng)在運行形式化模型 的過程中,出現(xiàn)了任意兩個cache同時為M狀態(tài),則該cache-致性協(xié)議不符合規(guī)則,不能通 過驗證。
[0133] 在本發(fā)明實施例中,采用Excel表格格式進(jìn)行循環(huán)狀態(tài)機和狀態(tài)列舉的驗證,通過 表格探針模式來進(jìn)行驗證。
[0134] 通過在本發(fā)明實施例,豐富了形式化驗證手段,使得形式化驗證的自動化得到提 升,具有快速、準(zhǔn)確、自動化的優(yōu)點。
[0135] 如圖3、圖4所示,本發(fā)明實施例提供了一種驗證cache-致性協(xié)議的裝置。裝置實 施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。從硬件層面而言,如 圖3所示,為本發(fā)明實施例提供的一種驗證cache-致性協(xié)議的裝置所在設(shè)備的一種硬件結(jié) 構(gòu)圖,除了圖3所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲器之外,實施例中裝置所 在的設(shè)備通常還可以包括其他硬件,如負(fù)責(zé)處理報文的轉(zhuǎn)發(fā)芯片等等。以軟件實現(xiàn)為例,如 圖4所示,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的CPU將非易失性存儲器中對應(yīng) 的計算機程序指令讀取到內(nèi)存中運行形成的。本實施例提供的一種驗證cache-致性協(xié)議 的裝置,包括:
[0136] 第一設(shè)置單元401,用于設(shè)置cache-致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù) 設(shè)狀態(tài)機的一個狀態(tài)對應(yīng);
[0137] 建立單元402,用于根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立形式化模型;
[0138] 第一確定單元403,用于確定待運行的協(xié)議表項;
[0139] 第二確定單元404,用于確定到達(dá)每個待運行的協(xié)議表項對應(yīng)的狀態(tài)的所有場景; [0140]運行單元405,用于根據(jù)每個所述場景,運行所述形式化模型;
[0141] 驗證單元406,用于根據(jù)所述形式化模型的運行結(jié)果,驗證所述cache-致性協(xié)議。
[0142] 在一種可能的實現(xiàn)方式中,所述第一確定單元403,用于將每個協(xié)議表項作為所述 待運行的協(xié)議表項;
[0143] 所述驗證單元406,用于判斷是否存在沒有場景能夠到達(dá)的狀態(tài),當(dāng)判斷結(jié)果為是 時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致性協(xié) 議通過驗證。
[0144] 在一種可能的實現(xiàn)方式中,所述第一確定單元403,用于將每個協(xié)議表項作為所述 待運行的協(xié)議表項;
[0145] 所述驗證單元406,用于判斷是否存在能夠到達(dá)不止一個狀態(tài)的場景,當(dāng)判斷結(jié)果 為是時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致 性協(xié)議通過驗證。
[0146] 在一種可能的實現(xiàn)方式中,還包括:
[0147] 第二設(shè)置單元,用于設(shè)置至少兩個協(xié)議表,其中,每個協(xié)議表包括至少一個協(xié)議表 項;
[0148] 還包括:第三設(shè)置單元,用于設(shè)置任一兩個協(xié)議表之間的觸發(fā)條件;
[0149] 所述第一確定單元403,用于將每個觸發(fā)條件對應(yīng)的協(xié)議表中的協(xié)議表項作為所 述待運行的協(xié)議表項;
[0150] 所述運行單元405,用于根據(jù)每個觸發(fā)條件和每個觸發(fā)條件對應(yīng)的場景,運行所述 形式化模型;
[0151]所述驗證單元406,用于判斷是否存在所有的協(xié)議表均未被觸發(fā)的情況,當(dāng)判斷結(jié) 果為是時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache- 致性協(xié)議通過驗證。
[0152]在一種可能的實現(xiàn)方式中,所述第一確定單元403,用于將每個協(xié)議表項作為所述 待運行的協(xié)議表項;
[0153]所述驗證單元406,用于判斷在所有場景到達(dá)的狀態(tài)中是否存在沒有對應(yīng)的協(xié)議 表項的狀態(tài),當(dāng)判斷結(jié)果為是時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為 否時,確定所述cache-致性協(xié)議通過驗證。
[0154] 在一種可能的實現(xiàn)方式中,還包括:
[0155] 第四設(shè)置單元,用于設(shè)置目錄監(jiān)聽協(xié)議MESI檢測規(guī)則;
[0156] 其中,所述MESI檢測規(guī)則,包括:任意兩個Cache不能同時為M狀態(tài);任意兩個Cache 不能同時為E狀態(tài);任意兩個Cache的狀態(tài)中M狀態(tài)和E狀態(tài)不能同時存在;任意兩個Cache的 狀態(tài)中M狀態(tài)和S狀態(tài)不能同時存在;任意兩個Cache的狀態(tài)中E狀態(tài)和S狀態(tài)不能同時存在; 主存目錄狀態(tài)為I狀態(tài)時,所有Cache狀態(tài)都為I狀態(tài);主存目錄狀態(tài)為S狀態(tài)時,任意一個 Cache不能為E狀態(tài)和M狀態(tài);主存目錄狀態(tài)為I狀態(tài)時,目錄矢量必須為0;主存目錄狀態(tài)為E 狀態(tài)時,目錄矢量只有一位為1;
[0157] 還包括:生成單元,用于根據(jù)所述MESI檢測規(guī)則生成檢查探針;
[0158] 所述驗證單元406,用于通過所述檢查探針來實時檢測運行中的所述形式化模型 是否滿足所述MESI檢測規(guī)則,當(dāng)判斷結(jié)果為是時,則所述cache-致性協(xié)議通過驗證,當(dāng)判 斷結(jié)果為否時,所述cache-致性協(xié)議不通過驗證。
[0159] 上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施 例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
[0160] 本發(fā)明實施例至少具有如下有益效果:
[0161] 1、在本發(fā)明實施例中,通過協(xié)議表項和狀態(tài)機建立形式化模型,將cache-致性協(xié) 議轉(zhuǎn)換為形式化模型,將cache-致性協(xié)議的邏輯體現(xiàn)在形式化模型中,通過運行形式化模 型根據(jù)運行結(jié)果來驗證cache-致性協(xié)議,根據(jù)形式化模型中的邏輯關(guān)系能夠覆蓋更多的 錯誤情況,使得驗證結(jié)果更加準(zhǔn)確。
[0162] 2、在本發(fā)明實施例中,以協(xié)議表項為單位進(jìn)行驗證,當(dāng)發(fā)現(xiàn)問題后,可以定位到具 體的某一條協(xié)議表項,在調(diào)試復(fù)現(xiàn)時便不需要整個模型都運行,只需單獨對問題協(xié)議表項 進(jìn)行單獨的運行就可以,效率大大提升,發(fā)現(xiàn)問題的時間得到大大縮減,在分析和復(fù)現(xiàn)問題 上也提供了方便。
[0163] 需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實體 或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在 任何這種實際的關(guān)系或者順序。而且,術(shù)語"包括"、"包含"或者其任何其他變體意在涵蓋非 排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素, 而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固 有的要素。在沒有更多限制的情況下,由語句"包括一個......"限定的要素,并不排 除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
[0164] 本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲在計算機可讀取的存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光 盤等各種可以存儲程序代碼的介質(zhì)中。
[0165] 最后需要說明的是:以上所述僅為本發(fā)明的較佳實施例,僅用于說明本發(fā)明的技 術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、 等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項】
1. 一種驗證cache-致性協(xié)議的方法,其特征在于,包括: SI:預(yù)先設(shè)置cache-致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù)設(shè)狀態(tài)機的一個狀態(tài) 對應(yīng); S2:預(yù)先根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立所述cache-致性協(xié)議的形式化模型; S3:確定待運行的協(xié)議表項; S4:確定到達(dá)每個待運行的協(xié)議表項對應(yīng)的狀態(tài)的所有場景; S5:根據(jù)每個所述場景,運行所述形式化模型; S6:根據(jù)所述形式化模型的運行結(jié)果,驗證所述cache-致性協(xié)議。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,包括: 所述S3,包括:將每個協(xié)議表項作為所述待運行的協(xié)議表項; 所述S6,包括:判斷是否存在沒有場景能夠到達(dá)的狀態(tài),如果是,則確定所述cache-致 性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,包括: 所述S3,包括:將每個協(xié)議表項作為所述待運行的協(xié)議表項; 所述S6,包括:判斷是否存在能夠到達(dá)不止一個狀態(tài)的場景,如果是,則確定所述cache 一致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。4. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 還包括:預(yù)先設(shè)置至少兩個協(xié)議表,其中,每個協(xié)議表包括至少一個協(xié)議表項; 還包括:預(yù)先設(shè)置任一兩個協(xié)議表之間的觸發(fā)條件; 所述S3,包括:將每個觸發(fā)條件對應(yīng)的協(xié)議表中的協(xié)議表項作為所述待運行的協(xié)議表 項; 所述S5,包括:根據(jù)每個觸發(fā)條件和每個觸發(fā)條件對應(yīng)的場景,運行所述形式化模型; 所述S6,包括:判斷是否存在所有的協(xié)議表均未被觸發(fā)的情況,如果是,則確定所述 cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗證。5. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述S3,包括:將每個協(xié)議表項作為所述待運行的協(xié)議表項; 所述S6,包括:判斷在所有場景到達(dá)的狀態(tài)中是否存在沒有對應(yīng)的協(xié)議表項的狀態(tài),如 果是,則確定所述cache-致性協(xié)議不通過驗證,否則,確定所述cache-致性協(xié)議通過驗 證。6. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 還包括:預(yù)先設(shè)置目錄監(jiān)聽協(xié)議MESI檢測規(guī)則,其中,所述MESI檢測規(guī)則,包括:任意兩 個Cache不能同時為M狀態(tài);任意兩個Cache不能同時為E狀態(tài);任意兩個Cache的狀態(tài)中M狀 態(tài)和E狀態(tài)不能同時存在;任意兩個Cache的狀態(tài)中M狀態(tài)和S狀態(tài)不能同時存在;任意兩個 Cache的狀態(tài)中E狀態(tài)和S狀態(tài)不能同時存在;主存目錄狀態(tài)為I狀態(tài)時,所有Cache狀態(tài)都為 I狀態(tài);主存目錄狀態(tài)為S狀態(tài)時,任意一個Cache不能為E狀態(tài)和M狀態(tài);主存目錄狀態(tài)為I狀 態(tài)時,目錄矢量必須為〇;主存目錄狀態(tài)為E狀態(tài)時,目錄矢量只有一位為1; 還包括:根據(jù)所述MESI檢測規(guī)則生成檢查探針; 所述S6,包括:通過所述檢查探針來實時檢測運行中的所述形式化模型是否滿足所述 MESI檢測規(guī)則,如果是,則所述cache-致性協(xié)議通過驗證,否則,所述cache-致性協(xié)議不 通過驗證。7. -種驗證cache-致性協(xié)議的裝置,其特征在于,包括: 第一設(shè)置單元,用于設(shè)置cache-致性協(xié)議的協(xié)議表項,將每個協(xié)議表項與預(yù)設(shè)狀態(tài)機 的一個狀態(tài)對應(yīng); 建立單元,用于根據(jù)所述狀態(tài)機和所述協(xié)議表項,建立形式化模型; 第一確定單元,用于確定待運行的協(xié)議表項; 第二確定單元,用于確定到達(dá)每個待運行的協(xié)議表項對應(yīng)的狀態(tài)的所有場景; 運行單元,用于根據(jù)每個所述場景,運行所述形式化模型; 驗證單元,用于根據(jù)所述形式化模型的運行結(jié)果,驗證所述cache-致性協(xié)議。8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,包括: 所述第一確定單元,用于將每個協(xié)議表項作為所述待運行的協(xié)議表項; 所述驗證單元,用于判斷是否存在沒有場景能夠到達(dá)的狀態(tài),當(dāng)判斷結(jié)果為是時,則確 定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致性協(xié)議通過 驗證; 和/或, 所述第一確定單元,用于將每個協(xié)議表項作為所述待運行的協(xié)議表項; 所述驗證單元,用于判斷是否存在能夠到達(dá)不止一個狀態(tài)的場景,當(dāng)判斷結(jié)果為是時, 則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致性協(xié)議 通過驗證。9. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括: 第二設(shè)置單元,用于設(shè)置至少兩個協(xié)議表,其中,每個協(xié)議表包括至少一個協(xié)議表項; 還包括:第三設(shè)置單元,用于設(shè)置任一兩個協(xié)議表之間的觸發(fā)條件; 所述第一確定單元,用于將每個觸發(fā)條件對應(yīng)的協(xié)議表中的協(xié)議表項作為所述待運行 的協(xié)議表項; 所述運行單元,用于根據(jù)每個觸發(fā)條件和每個觸發(fā)條件對應(yīng)的場景,運行所述形式化 豐旲型; 所述驗證單元,用于判斷是否存在所有的協(xié)議表均未被觸發(fā)的情況,當(dāng)判斷結(jié)果為是 時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定所述cache-致性協(xié) 議通過驗證; 和/或, 所述第一確定單元,用于將每個協(xié)議表項作為所述待運行的協(xié)議表項; 所述驗證單元,用于判斷在所有場景到達(dá)的狀態(tài)中是否存在沒有對應(yīng)的協(xié)議表項的狀 態(tài),當(dāng)判斷結(jié)果為是時,則確定所述cache-致性協(xié)議不通過驗證,當(dāng)判斷結(jié)果為否時,確定 所述cache-致性協(xié)議通過驗證。10. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括: 第四設(shè)置單元,用于設(shè)置目錄監(jiān)聽協(xié)議MESI檢測規(guī)則; 其中,所述MESI檢測規(guī)則,包括:任意兩個Cache不能同時為M狀態(tài);任意兩個Cache不能 同時為E狀態(tài);任意兩個Cache的狀態(tài)中M狀態(tài)和E狀態(tài)不能同時存在;任意兩個Cache的狀態(tài) 中M狀態(tài)和S狀態(tài)不能同時存在;任意兩個Cache的狀態(tài)中E狀態(tài)和S狀態(tài)不能同時存在;主存 目錄狀態(tài)為I狀態(tài)時,所有Cache狀態(tài)都為I狀態(tài);主存目錄狀態(tài)為S狀態(tài)時,任意一個Cache 不能為E狀態(tài)和M狀態(tài);主存目錄狀態(tài)為I狀態(tài)時,目錄矢量必須為O;主存目錄狀態(tài)為E狀態(tài) 時,目錄矢量只有一位為1; 還包括:生成單元,用于根據(jù)所述MESI檢測規(guī)則生成檢查探針; 所述驗證單元,用于通過所述檢查探針來實時檢測運行中的所述形式化模型是否滿足 所述MESI檢測規(guī)則,當(dāng)判斷結(jié)果為是時,則所述cache-致性協(xié)議通過驗證,當(dāng)判斷結(jié)果為 否時,所述cache-致性協(xié)議不通過驗證。
【文檔編號】G06F11/07GK105912415SQ201610204354
【公開日】2016年8月31日
【申請日】2016年4月5日
【發(fā)明人】王振江, 王朝輝, 鐘俊華
【申請人】浪潮電子信息產(chǎn)業(yè)股份有限公司