一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及裝置的制造方法
【專利摘要】本發(fā)明提出一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及其裝置,該方法包括步驟1,將待驗(yàn)證的多核處理器中的用戶約束與指令庫相結(jié)合,生成存在訪存沖突的并行程序作為驗(yàn)證向量;運(yùn)行驗(yàn)證向量,記錄驗(yàn)證向量的執(zhí)行結(jié)果及訪存操作的時(shí)間信息;步驟2,根據(jù)所述執(zhí)行結(jié)果及所述訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查,如果所述待驗(yàn)證的多核處理器的存儲一致性設(shè)計(jì)符合存儲一致性模型,則執(zhí)行步驟3;步驟3,將所述驗(yàn)證向量及所述訪存操作的時(shí)間信息送入指令級模擬器,所述指令級模擬器按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較,如果比較結(jié)果一致,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證。
【專利說明】
一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及超大規(guī)模集成電路設(shè)計(jì)驗(yàn)證領(lǐng)域,特別涉及一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及其裝置。
【背景技術(shù)】
[0002]單核處理器的存儲模型的語義很直觀,即對任何內(nèi)存單元的讀操作將返回最近對該單元進(jìn)行寫操作所寫入的值,而寫操作則唯一確定了此后對同一單元讀操作的結(jié)果。用仿真方法對單核處理器進(jìn)行隨機(jī)驗(yàn)證時(shí),通常采用參考模型給出驗(yàn)證向量的參考執(zhí)行結(jié)果,通過將參考模型給出的結(jié)果與實(shí)際RTL(register-transfer level)執(zhí)行結(jié)果比較來判斷對錯,對單核處理器環(huán)境下的串行程序來說,每次運(yùn)行的結(jié)果具有唯一確定性,這使得處理器隨機(jī)驗(yàn)證可以順利進(jìn)行。
[0003]與單核處理器不同,片上多核處理器采用共享存儲系統(tǒng),多個(gè)處理器核可以讀寫同一存儲單元,這就意味著多核處理器共享存儲訪存事件發(fā)生次序及其結(jié)果可以不唯一,其正確性由存儲一致性模型確定,存儲一致性模型作為片上多核處理器的硬件與軟件、操作系統(tǒng)與應(yīng)用程序的接口,詳細(xì)規(guī)定了共享存儲系統(tǒng)中訪存事件之間的次序要求,保證系統(tǒng)的正確性,學(xué)術(shù)界對存儲一致性驗(yàn)證的復(fù)雜性進(jìn)行了大量的研究,認(rèn)為多核共享存儲情況下并行程序執(zhí)行結(jié)果的正確性依賴于程序中沖突操作的訪問次序,并給出了并行程序執(zhí)行正確的標(biāo)準(zhǔn):用全局序表示的并行程序結(jié)果的有向圖無環(huán)(參考文獻(xiàn):胡偉武,《共享存儲系統(tǒng)結(jié)構(gòu)》,高等教育出版社,2001)。同時(shí),學(xué)術(shù)界也證明了不加任何限制的存儲一致性驗(yàn)證是一個(gè)NP難的問題,這使得片上多核處理器的正確性驗(yàn)證成為一個(gè)高度困難的問題。
[0004]隨后,有學(xué)者提出在多核處理器中,每條訪存操作都有一段執(zhí)行時(shí)間:這個(gè)時(shí)間從操作進(jìn)入處理器開始,到操作提交時(shí)結(jié)束,在時(shí)間序上位于前面的操作的結(jié)果會被后面的操作所觀察到,只有執(zhí)行時(shí)間有重疊部分的操作之間才存在順序的不確定性,由于多核處理器實(shí)現(xiàn)時(shí)操作窗口、訪存隊(duì)列、寫緩存等部件的大小限制,和一個(gè)訪存操作的執(zhí)行時(shí)間相重疊的操作的數(shù)量也是有限的,因此,在驗(yàn)證存儲一致性時(shí),序關(guān)系的推導(dǎo)及執(zhí)行圖中環(huán)的檢測都可以被限定在一定的操作范圍內(nèi),這使得多核處理器存儲一致性驗(yàn)證可以降為線性時(shí)間復(fù)雜度(參考文獻(xiàn):Yun j i Chen,etc.〃Fast Complete Memory ConsistencyVerificat1n",in Proceedings of the 15th IEEE Internat1nal Symposium onHigh-Performance Computer Architecture , 2009.),這一結(jié)論使得在實(shí)踐中驗(yàn)證多核處理器存儲一致性成為可能,依照該方法可以檢測有限范圍內(nèi)多核處理器并行程序訪存順序的有向圖是否無環(huán),并據(jù)此判斷多核處理器存儲一致性設(shè)計(jì)是否正確。
[0005]然而,上述方法并不能解決多核處理器仿真驗(yàn)證中的結(jié)果正確性比較問題,即使證明了多核處理器并行程序訪存順序的有向圖無環(huán),也只能說明多核處理器存儲一致性設(shè)計(jì)符合存儲一致性模型規(guī)范,而符合存儲一致性模型規(guī)范情況下的多核處理器訪存次序及結(jié)果仍可以不唯一,當(dāng)訪存指令與并行程序中更多復(fù)雜指令隨機(jī)組合在一起時(shí),這種訪存結(jié)果的不唯一性會引起執(zhí)行結(jié)果狀態(tài)空間爆炸,使得多核處理器執(zhí)行隨機(jī)仿真驗(yàn)證時(shí)指令執(zhí)行結(jié)果的正確性很難判斷。
[0006]隨機(jī)驗(yàn)證技術(shù)是處理器仿真驗(yàn)證流程中的重要支撐技術(shù),圖1中描述了處理器隨機(jī)驗(yàn)證方法的常用框架,將用戶約束102和指令庫101相結(jié)合,通過隨機(jī)生成引擎103生成驗(yàn)證向量,生成的驗(yàn)證向量被分別送入指令級模擬器104和待驗(yàn)證設(shè)計(jì)仿真環(huán)境105中執(zhí)行,并對執(zhí)行結(jié)果進(jìn)行比較,比較結(jié)果不一致時(shí)可以檢測出處理器設(shè)計(jì)中的錯誤,對于多核處理器來說,當(dāng)并行程序中訪存指令與其它復(fù)雜指令隨機(jī)組合在一起,訪存結(jié)果的不唯一性會引起執(zhí)行結(jié)果狀態(tài)空間爆炸問題,使得隨機(jī)驗(yàn)證時(shí)結(jié)果比較環(huán)節(jié)很難完成,導(dǎo)致很難直接使用傳統(tǒng)隨機(jī)驗(yàn)證技術(shù)進(jìn)行多核處理器仿真驗(yàn)證,這一問題一直未得到解決。目前驗(yàn)證多核處理器常用模式是:首先運(yùn)用傳統(tǒng)隨機(jī)驗(yàn)證技術(shù)對多核處理器中每個(gè)處理器核進(jìn)行驗(yàn)證,再針對連接各個(gè)處理器核的片上網(wǎng)絡(luò)進(jìn)行仿真驗(yàn)證,最后對多核處理器系統(tǒng)進(jìn)行存儲一致性驗(yàn)證,這種多核處理器驗(yàn)證模式常常會出現(xiàn)設(shè)計(jì)錯誤逃逸現(xiàn)象,特別是當(dāng)多核處理器存儲一致性設(shè)計(jì)正確,多核交叉訪存與其它指令混合執(zhí)行會發(fā)生錯誤時(shí),多核處理器驗(yàn)證常常無法準(zhǔn)確檢測和定位錯誤。
[0007]綜上,當(dāng)前多核處理器仿真驗(yàn)證中,訪存結(jié)果的不唯一性引起結(jié)果狀態(tài)空間爆炸問題,使得隨機(jī)驗(yàn)證時(shí)結(jié)果比較環(huán)節(jié)很難完成,無法準(zhǔn)確檢測和定位錯誤,在多核處理器芯片實(shí)際運(yùn)行時(shí),由于操作系統(tǒng)的調(diào)度及共享存儲訪存沖突的隨機(jī)性使得并行程序執(zhí)行結(jié)果無法唯一確定。
【發(fā)明內(nèi)容】
[0008]針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及其裝置。
[0009]本發(fā)明提出一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法,包括:
[0010]步驟I,將待驗(yàn)證的多核處理器中的用戶約束與指令庫相結(jié)合,通過并行程序產(chǎn)生器,生成存在訪存沖突的并行程序作為驗(yàn)證向量;在待驗(yàn)證的多核處理器仿真環(huán)境中運(yùn)行所述驗(yàn)證向量,記錄所述驗(yàn)證向量的執(zhí)行結(jié)果及訪存操作的時(shí)間信息;
[0011]步驟2,根據(jù)所述執(zhí)行結(jié)果及所述訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查,如果所述待驗(yàn)證的多核處理器的存儲一致性設(shè)計(jì)符合存儲一致性模型,則執(zhí)行步驟3,否則發(fā)現(xiàn)設(shè)計(jì)錯誤,停止本次隨機(jī)驗(yàn)證并執(zhí)行錯誤調(diào)試;
[0012]步驟3,將所述驗(yàn)證向量及所述訪存操作的時(shí)間信息送入指令級模擬器,所述指令級模擬器按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較,如果比較結(jié)果一致,則本次隨機(jī)驗(yàn)證通過,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證,否則進(jìn)行錯誤調(diào)試。
[0013]所述步驟I之前還包括:
[0014]步驟11,設(shè)置全局時(shí)鐘,用于記錄所述訪存操作的時(shí)間信息;
[0015]步驟12,設(shè)置所述并行程序產(chǎn)生器,支持通過偽隨機(jī)方法生成所述驗(yàn)證向量;
[0016]步驟13,記錄每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間并寫入到文件中;
[0017]步驟14,通過所述文件,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查;
[0018]步驟15,改進(jìn)指令級模擬器,使所述指令級模擬器能夠按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將執(zhí)行結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較。
[0019]所述步驟14包括檢測有限范圍內(nèi)所述待驗(yàn)證的多核處理器的所述驗(yàn)證向量訪存順序的有向圖是否無環(huán),并判斷所述待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)是否正確。
[0020]所述全局時(shí)鐘包括設(shè)置一個(gè)64位的計(jì)數(shù)器,從O時(shí)刻開始每個(gè)時(shí)鐘節(jié)拍自增I。
[0021]所述步驟13包括通過引線方式監(jiān)聽所述待驗(yàn)證的多核處理器的各個(gè)處理器核的每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間。
[0022]本發(fā)明還提出一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證裝置,包括:
[0023]獲取驗(yàn)證向量模塊,用于將待驗(yàn)證的多核處理器中的用戶約束與指令庫相結(jié)合,通過并行程序產(chǎn)生器,生成存在訪存沖突的并行程序作為驗(yàn)證向量;在待驗(yàn)證的多核處理器仿真環(huán)境中運(yùn)行所述驗(yàn)證向量,記錄所述驗(yàn)證向量的執(zhí)行結(jié)果及訪存操作的時(shí)間信息;
[0024]存儲一致性檢查模塊,用于根據(jù)所述執(zhí)行結(jié)果及所述訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查,如果所述待驗(yàn)證的多核處理器的存儲一致性設(shè)計(jì)符合存儲一致性模型,則進(jìn)入執(zhí)行結(jié)果比較模塊,否則發(fā)現(xiàn)設(shè)計(jì)錯誤,停止本次隨機(jī)驗(yàn)證并執(zhí)行錯誤調(diào)試;
[0025]執(zhí)行結(jié)果比較模塊,用于將所述驗(yàn)證向量及所述訪存操作的時(shí)間信息送入指令級模擬器,所述指令級模擬器按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較,如果比較結(jié)果一致,則本次隨機(jī)驗(yàn)證通過,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證,否則進(jìn)行錯誤調(diào)試。
[0026]所述獲取驗(yàn)證向量模塊之前還包括:
[0027]設(shè)置全局時(shí)鐘模塊,用于設(shè)置全局時(shí)鐘,用于記錄所述訪存操作的時(shí)間信息;
[0028]設(shè)置所述并行程序產(chǎn)生器模塊,用于設(shè)置所述并行程序產(chǎn)生器,支持通過偽隨機(jī)方法生成所述驗(yàn)證向量;
[0029]進(jìn)入時(shí)間與提交時(shí)間模塊,用于記錄每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間并寫入到文件中;
[0030]檢查模塊,用于通過所述文件,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查;
[0031]改進(jìn)指令級模擬器模塊,用于改進(jìn)指令級模擬器,使所述指令級模擬器能夠按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將執(zhí)行結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較。
[0032]所述檢查模塊包括檢測有限范圍內(nèi)所述待驗(yàn)證的多核處理器的所述驗(yàn)證向量訪存順序的有向圖是否無環(huán),并判斷所述待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)是否正確。
[0033]所述全局時(shí)鐘包括設(shè)置一個(gè)64位的計(jì)數(shù)器,從O時(shí)刻開始每個(gè)時(shí)鐘節(jié)拍自增I。
[0034]所述進(jìn)入時(shí)間與提交時(shí)間模塊包括通過引線方式監(jiān)聽所述待驗(yàn)證的多核處理器的各個(gè)處理器核的每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間。
[0035]由以上方案可知,本發(fā)明的優(yōu)點(diǎn)在于:
[0036]本發(fā)明提出了一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及其裝置,通過在隨機(jī)驗(yàn)證環(huán)境中設(shè)置全局時(shí)鐘及運(yùn)行后比較機(jī)制,支持多核處理器隨機(jī)驗(yàn)證中的精確結(jié)果比較,解決了長期困擾多核處理器隨機(jī)驗(yàn)證的錯誤準(zhǔn)確檢測和定位的問題。
【附圖說明】
[0037]圖1為現(xiàn)有技術(shù)中單核處理器隨機(jī)驗(yàn)證系統(tǒng)結(jié)構(gòu)示意圖;
[0038]圖2為本發(fā)明中多核處理器隨機(jī)驗(yàn)證環(huán)境改進(jìn)流程示例圖;
[0039]圖3為本發(fā)明中多核處理器隨機(jī)驗(yàn)證執(zhí)行流程示意圖。
【具體實(shí)施方式】
[0040]本發(fā)明的目的是解決多核處理器隨機(jī)驗(yàn)證中的精確結(jié)果比較問題,支持多核處理器隨機(jī)驗(yàn)證的錯誤準(zhǔn)確檢測和定位,為了解決上述技術(shù)問題,提出了一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及其裝置。
[0041]為了達(dá)到上述目的,本發(fā)明提出一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及其裝置,包括多核處理器隨機(jī)驗(yàn)證環(huán)境改進(jìn)方法和多核處理器隨機(jī)驗(yàn)證執(zhí)行方法兩部分,通過以下技術(shù)方案實(shí)現(xiàn):
[0042]多核處理器隨機(jī)驗(yàn)證環(huán)境改進(jìn)方法,包括如下步驟:
[0043]1.在隨機(jī)驗(yàn)證測試平臺頂層模塊中設(shè)置全局時(shí)鐘;
[0044]2.將單核處理器隨機(jī)驗(yàn)證環(huán)境中的隨機(jī)生成引擎改造為并行程序產(chǎn)生器,支持用偽隨機(jī)方法產(chǎn)生有訪存沖突的并行程序;
[0045]3.在隨機(jī)驗(yàn)證測試平臺頂層模塊中設(shè)置對待驗(yàn)證的多核處理器中每個(gè)處理器核訪存操作的監(jiān)聽機(jī)制,記錄每條訪存操作的進(jìn)入時(shí)間和提交時(shí)間并寫入到文件中;
[0046]4.在隨機(jī)驗(yàn)證環(huán)境的結(jié)果比較中增加存儲一致性設(shè)計(jì)正確性檢測機(jī)制,利用上述記錄每條訪存操作的進(jìn)入時(shí)間和提交時(shí)間的文件,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查;
[0047]5.改進(jìn)指令級模擬器,使其能夠按照此前記錄的訪存操作時(shí)間順序執(zhí)行并行程序,并將結(jié)果與待驗(yàn)證的多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較。
[0048]多核處理器隨機(jī)驗(yàn)證執(zhí)行方法,包括如下步驟:
[0049]1.將用戶約束和指令庫相結(jié)合,通過并行程序產(chǎn)生器,用偽隨機(jī)方法生成有訪存沖突的并行程序作為驗(yàn)證向量;
[0050]2.在待驗(yàn)證的多核處理器仿真環(huán)境中運(yùn)行前述有訪存沖突的并行程序,記錄并行程序的執(zhí)行結(jié)果及訪存操作的時(shí)間信息;
[0051]3.根據(jù)前述并行程序的執(zhí)行結(jié)果及訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查。如果待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)不符合需求規(guī)范要求的存儲一致性模型,則發(fā)現(xiàn)設(shè)計(jì)錯誤,停止本次隨機(jī)驗(yàn)證執(zhí)行錯誤調(diào)試;否則繼續(xù)執(zhí)行下一步驟;
[0052]4.將前述有訪存沖突的并行程序及訪存操作的時(shí)間信息送入指令級模擬器,指令級模擬器按照此前記錄的訪存操作時(shí)間順序執(zhí)行并行程序,并將結(jié)果與待驗(yàn)證的多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較,如果比較結(jié)果一致,則本次模擬仿真驗(yàn)證通過,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證;如果比較結(jié)果不一致,則發(fā)現(xiàn)設(shè)計(jì)錯誤,進(jìn)行錯誤調(diào)試。
[0053]下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明做進(jìn)一步詳細(xì)描述。
[0054]一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法及其裝置,具體實(shí)施流程包括多核處理器隨機(jī)驗(yàn)證環(huán)境改進(jìn)流程和多核處理器隨機(jī)驗(yàn)證執(zhí)行流程兩部分。
[0055]多核處理器隨機(jī)驗(yàn)證環(huán)境改進(jìn)流程,如圖2所示:
[0056]步驟S201.在隨機(jī)驗(yàn)證測試平臺頂層模塊中設(shè)置全局時(shí)鐘。在具體實(shí)施時(shí),可以在隨機(jī)驗(yàn)證測試平臺頂層模塊中,設(shè)置一個(gè)64位的計(jì)數(shù)器,從O時(shí)刻開始每個(gè)時(shí)鐘節(jié)拍自增I,即可獲得全局時(shí)鐘;
[0057]步驟S202.將單核處理器隨機(jī)驗(yàn)證環(huán)境中的隨機(jī)生成引擎改造為并行程序產(chǎn)生器,支持用偽隨機(jī)方法產(chǎn)生有訪存沖突的并行程序。并行程序中訪問的內(nèi)存地址是虛擬地址,而訪存沖突是指對相同物理內(nèi)存地址的訪問,需要在程序的實(shí)際運(yùn)行中把相同的訪存虛擬地址映射到同樣的物理地址,這樣才會產(chǎn)生真正的沖突,在待驗(yàn)證的多核處理器隨機(jī)驗(yàn)證環(huán)境中沒有操作系統(tǒng)支持,在具體實(shí)施時(shí),可以在隨機(jī)驗(yàn)證環(huán)境中將并行程序中每個(gè)進(jìn)程的代碼段分配到不同的物理地址,而將所有進(jìn)程的數(shù)據(jù)段都分配到相同的物理地址,以便產(chǎn)生真正的訪存沖突;
[0058]步驟S203.在隨機(jī)驗(yàn)證測試平臺頂層模塊中設(shè)置對待驗(yàn)證的多核處理器中每個(gè)處理器核訪存操作的監(jiān)聽機(jī)制,記錄每條訪存操作的進(jìn)入時(shí)間和提交時(shí)間并寫入到文件中。在具體實(shí)施時(shí),隨機(jī)驗(yàn)證測試平臺頂層模塊可以通過引線方式監(jiān)聽各個(gè)處理器核模塊的訪存信息,例如:在頂層模塊中設(shè)置對某個(gè)處理器核cache寫操作的監(jiān)聽,使用assign dcw_valid = top.cpu_corel......dcache_0.dcw_valid,其它訪存操作監(jiān)聽方式可以此類推;
[0059]步驟S204.在隨機(jī)驗(yàn)證環(huán)境的結(jié)果比較中增加存儲一致性設(shè)計(jì)正確性檢測機(jī)制,利用上述記錄每條訪存操作的進(jìn)入時(shí)間和提交時(shí)間的文件,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查。在具體實(shí)施時(shí),采用傳統(tǒng)方法檢測有限范圍內(nèi)待驗(yàn)證的多核處理器并行程序訪存順序的有向圖是否無環(huán),并據(jù)此判斷待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)是否正確;
[0060]步驟S205.改進(jìn)指令級模擬器,使其能夠按照此前記錄的訪存操作時(shí)間順序執(zhí)行并行程序,并將結(jié)果與待驗(yàn)證的多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較。
[0061 ]多核處理器隨機(jī)驗(yàn)證執(zhí)行流程,如圖3所示:
[0062]步驟S301.將用戶約束和指令庫相結(jié)合,通過并行程序產(chǎn)生器,用偽隨機(jī)方法生成有訪存沖突的并行程序作為驗(yàn)證向量;
[0063]步驟S302.在待驗(yàn)證的多核處理器仿真環(huán)境中運(yùn)行前述有訪存沖突的并行程序,記錄并行程序的執(zhí)行結(jié)果及訪存操作的時(shí)間信息;
[0064]步驟S303.根據(jù)前述并行程序的執(zhí)行結(jié)果及訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查;
[0065]步驟S304.判斷待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)是否符合需求規(guī)范要求的存儲一致性模型,如果不符合需求規(guī)范要求的存儲一致性模型,則發(fā)現(xiàn)設(shè)計(jì)錯誤,停止本次隨機(jī)驗(yàn)證執(zhí)行,進(jìn)行錯誤調(diào)試;否則執(zhí)行步驟S305;
[0066]步驟S305.將前述有訪存沖突的并行程序及訪存操作的時(shí)間信息送入指令級模擬器;
[0067]步驟S306.指令級模擬器按照此前記錄的訪存操作時(shí)間順序執(zhí)行并行程序,并將結(jié)果與待驗(yàn)證的多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較;
[0068]步驟S307.判斷前述比較結(jié)果是否一致,如果比較結(jié)果一致,則執(zhí)行步驟S308;如果比較結(jié)果不一致,則發(fā)現(xiàn)設(shè)計(jì)錯誤,進(jìn)行錯誤調(diào)試;
[0069]步驟308本次模擬仿真驗(yàn)證通過,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證。
[0070]本發(fā)明還提出一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證裝置,包括:
[0071]獲取驗(yàn)證向量模塊,用于將待驗(yàn)證的多核處理器中的用戶約束與指令庫相結(jié)合,通過并行程序產(chǎn)生器,生成存在訪存沖突的并行程序作為驗(yàn)證向量;在待驗(yàn)證的多核處理器仿真環(huán)境中運(yùn)行所述驗(yàn)證向量,記錄所述驗(yàn)證向量的執(zhí)行結(jié)果及訪存操作的時(shí)間信息;
[0072]存儲一致性檢查模塊,用于根據(jù)所述執(zhí)行結(jié)果及所述訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查,如果所述待驗(yàn)證的多核處理器的存儲一致性設(shè)計(jì)符合存儲一致性模型,則進(jìn)入執(zhí)行結(jié)果比較模塊,否則發(fā)現(xiàn)設(shè)計(jì)錯誤,停止本次隨機(jī)驗(yàn)證并執(zhí)行錯誤調(diào)試;
[0073]執(zhí)行結(jié)果比較模塊,用于將所述驗(yàn)證向量及所述訪存操作的時(shí)間信息送入指令級模擬器,所述指令級模擬器按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較,如果比較結(jié)果一致,則本次隨機(jī)驗(yàn)證通過,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證,否則進(jìn)行錯誤調(diào)試。
[0074]所述獲取驗(yàn)證向量模塊之前還包括:
[0075]設(shè)置全局時(shí)鐘模塊,用于設(shè)置全局時(shí)鐘,用于記錄所述訪存操作的時(shí)間信息;
[0076]設(shè)置所述并行程序產(chǎn)生器模塊,用于設(shè)置所述并行程序產(chǎn)生器,支持通過偽隨機(jī)方法生成所述驗(yàn)證向量;
[0077]進(jìn)入時(shí)間與提交時(shí)間模塊,用于記錄每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間并寫入到文件中;
[0078]檢查模塊,用于通過所述文件,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查;
[0079]改進(jìn)指令級模擬器模塊,用于改進(jìn)指令級模擬器,使所述指令級模擬器能夠按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將執(zhí)行結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較。
[0080]所述檢查模塊包括檢測有限范圍內(nèi)所述待驗(yàn)證的多核處理器的所述驗(yàn)證向量訪存順序的有向圖是否無環(huán),并判斷所述待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)是否正確。[0081 ]所述全局時(shí)鐘包括設(shè)置一個(gè)64位的計(jì)數(shù)器,從O時(shí)刻開始每個(gè)時(shí)鐘節(jié)拍自增I。
[0082]所述進(jìn)入時(shí)間與提交時(shí)間模塊包括通過引線方式監(jiān)聽所述待驗(yàn)證的多核處理器的各個(gè)處理器核的每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間。
【主權(quán)項(xiàng)】
1.一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法,其特征在于,包括: 步驟I,將待驗(yàn)證的多核處理器中的用戶約束與指令庫相結(jié)合,通過并行程序產(chǎn)生器,生成存在訪存沖突的并行程序作為驗(yàn)證向量;在待驗(yàn)證的多核處理器仿真環(huán)境中運(yùn)行所述驗(yàn)證向量,記錄所述驗(yàn)證向量的執(zhí)行結(jié)果及訪存操作的時(shí)間信息; 步驟2,根據(jù)所述執(zhí)行結(jié)果及所述訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查,如果所述待驗(yàn)證的多核處理器的存儲一致性設(shè)計(jì)符合存儲一致性模型,則執(zhí)行步驟3,否則發(fā)現(xiàn)設(shè)計(jì)錯誤,停止本次隨機(jī)驗(yàn)證并執(zhí)行錯誤調(diào)試; 步驟3,將所述驗(yàn)證向量及所述訪存操作的時(shí)間信息送入指令級模擬器,所述指令級模擬器按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較,如果比較結(jié)果一致,則本次隨機(jī)驗(yàn)證通過,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證,否則進(jìn)行錯誤調(diào)試。2.如權(quán)利要求1所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法,其特征在于,所述步驟I之前還包括: 步驟11,設(shè)置全局時(shí)鐘,用于記錄所述訪存操作的時(shí)間信息; 步驟12,設(shè)置所述并行程序產(chǎn)生器,支持通過偽隨機(jī)方法生成所述驗(yàn)證向量; 步驟13,記錄每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間并寫入到文件中; 步驟14,通過所述文件,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查; 步驟15,改進(jìn)指令級模擬器,使所述指令級模擬器能夠按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將執(zhí)行結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較。3.如權(quán)利要求2所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法,其特征在于,所述步驟14包括檢測有限范圍內(nèi)所述待驗(yàn)證的多核處理器的所述驗(yàn)證向量訪存順序的有向圖是否無環(huán),并判斷所述待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)是否正確。4.如權(quán)利要求2所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法,其特征在于,所述全局時(shí)鐘包括設(shè)置一個(gè)64位的計(jì)數(shù)器,從O時(shí)刻開始每個(gè)時(shí)鐘節(jié)拍自增I。5.如權(quán)利要求2所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證方法,其特征在于,所述步驟13包括通過引線方式監(jiān)聽所述待驗(yàn)證的多核處理器的各個(gè)處理器核的每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間。6.一種支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證裝置,其特征在于,包括: 獲取驗(yàn)證向量模塊,用于將待驗(yàn)證的多核處理器中的用戶約束與指令庫相結(jié)合,通過并行程序產(chǎn)生器,生成存在訪存沖突的并行程序作為驗(yàn)證向量;在待驗(yàn)證的多核處理器仿真環(huán)境中運(yùn)行所述驗(yàn)證向量,記錄所述驗(yàn)證向量的執(zhí)行結(jié)果及訪存操作的時(shí)間信息; 存儲一致性檢查模塊,用于根據(jù)所述執(zhí)行結(jié)果及所述訪存操作的時(shí)間信息,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查,如果所述待驗(yàn)證的多核處理器的存儲一致性設(shè)計(jì)符合存儲一致性模型,則進(jìn)入執(zhí)行結(jié)果比較模塊,否則發(fā)現(xiàn)設(shè)計(jì)錯誤,停止本次隨機(jī)驗(yàn)證并執(zhí)行錯誤調(diào)試;執(zhí)行結(jié)果比較模塊,用于將所述驗(yàn)證向量及所述訪存操作的時(shí)間信息送入指令級模擬器,所述指令級模擬器按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較,如果比較結(jié)果一致,則本次隨機(jī)驗(yàn)證通過,繼續(xù)執(zhí)行多核處理器隨機(jī)驗(yàn)證,否則進(jìn)行錯誤調(diào)試。7.如權(quán)利要求6所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證裝置,其特征在于,所述獲取驗(yàn)證向量模塊之前還包括: 設(shè)置全局時(shí)鐘模塊,用于設(shè)置全局時(shí)鐘,用于記錄所述訪存操作的時(shí)間信息; 設(shè)置所述并行程序產(chǎn)生器模塊,用于設(shè)置所述并行程序產(chǎn)生器,支持通過偽隨機(jī)方法生成所述驗(yàn)證向量; 進(jìn)入時(shí)間與提交時(shí)間模塊,用于記錄每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間并寫入到文件中; 檢查模塊,用于通過所述文件,進(jìn)行存儲一致性設(shè)計(jì)正確性檢查; 改進(jìn)指令級模擬器模塊,用于改進(jìn)指令級模擬器,使所述指令級模擬器能夠按照訪存操作的時(shí)間順序執(zhí)行所述驗(yàn)證向量,并將執(zhí)行結(jié)果與多核處理器模擬仿真后的執(zhí)行結(jié)果進(jìn)行比較。8.如權(quán)利要求7所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證裝置,其特征在于,所述檢查模塊包括檢測有限范圍內(nèi)所述待驗(yàn)證的多核處理器的所述驗(yàn)證向量訪存順序的有向圖是否無環(huán),并判斷所述待驗(yàn)證的多核處理器存儲一致性設(shè)計(jì)是否正確。9.如權(quán)利要求7所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證裝置,其特征在于,所述全局時(shí)鐘包括設(shè)置一個(gè)64位的計(jì)數(shù)器,從O時(shí)刻開始每個(gè)時(shí)鐘節(jié)拍自增I。10.如權(quán)利要求7所述的支持精確訪存檢測的多核處理器隨機(jī)驗(yàn)證裝置,其特征在于,所述進(jìn)入時(shí)間與提交時(shí)間模塊包括通過引線方式監(jiān)聽所述待驗(yàn)證的多核處理器的各個(gè)處理器核的每條訪存操作的進(jìn)入時(shí)間與提交時(shí)間。
【文檔編號】G06F11/263GK105930242SQ201610299336
【公開日】2016年9月7日
【申請日】2016年5月6日
【發(fā)明人】沈海華, 趙躍輝, 譚華哲
【申請人】中國科學(xué)院計(jì)算技術(shù)研究所