本發(fā)明屬于處理器設(shè)計(jì)和測(cè)試,具體是涉及一種驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法。
背景技術(shù):
1、隨著集成電路技術(shù)的發(fā)展和現(xiàn)代處理器架構(gòu)的不斷演進(jìn),處理器作為現(xiàn)代計(jì)算機(jī)系統(tǒng)的核心和關(guān)鍵部件,其復(fù)雜性在急劇增加。這種復(fù)雜性對(duì)處理器的功能驗(yàn)證提出了更高的要求,尤其是在浮點(diǎn)運(yùn)算單元的驗(yàn)證方面。由于浮點(diǎn)運(yùn)算具有特殊的數(shù)據(jù)編碼格式和復(fù)雜的計(jì)算過(guò)程,因此容易引發(fā)各種邊界情況和潛在錯(cuò)誤。因此,確保浮點(diǎn)運(yùn)算的正確性和可靠性是處理器設(shè)計(jì)和驗(yàn)證中的關(guān)鍵任務(wù)。
2、目前,處理器驗(yàn)證主要采用基于仿真的驗(yàn)證方法。這種方法通常使用指令集模擬器作為參考模型,將用于驗(yàn)證的指令序列輸入到指令集模擬器和待測(cè)處理器中,比較二者的執(zhí)行結(jié)果以找出潛在錯(cuò)誤。該方法的驗(yàn)證效率很大程度上取決于輸入指令序列的質(zhì)量和多樣性。因此,生成高質(zhì)量、高覆蓋率的指令序列成為驗(yàn)證的核心技術(shù)之一。為了解決指令序列生成的問(wèn)題,隨機(jī)指令序列生成技術(shù)得到了廣泛研究。
3、risc-v作為一種開源的精簡(jiǎn)指令集架構(gòu),以其模塊化的設(shè)計(jì)特點(diǎn)在工業(yè)界和學(xué)術(shù)界得到了廣泛應(yīng)用。risc-v指令集架構(gòu)由一個(gè)基礎(chǔ)指令集和若干可選擴(kuò)展指令集組成,針對(duì)浮點(diǎn)運(yùn)算的擴(kuò)展指令集主要包括f擴(kuò)展(單精度)、d擴(kuò)展(雙精度)以及q擴(kuò)展(四精度)。目前,針對(duì)risc-v的驗(yàn)證,通常使用的指令序列生成器有risc-v?dv、risc-v?torture等,它們采用約束隨機(jī)的生成方法生成匯編格式的指令序列。然而,這些risc-v指令序列生成器在浮點(diǎn)方面存在著一定的局限性,往往僅在浮點(diǎn)指令層面進(jìn)行約束隨機(jī),而在浮點(diǎn)數(shù)據(jù)方面通常只將浮點(diǎn)寄存器初始化為特殊值,缺乏在指令生成過(guò)程中進(jìn)行進(jìn)一步控制,從而導(dǎo)致浮點(diǎn)數(shù)據(jù)功能覆蓋不夠全面。另外,在現(xiàn)有專利中也鮮有專門針對(duì)risc-v指令集的浮點(diǎn)運(yùn)算單元的驗(yàn)證方法。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明要解決的技術(shù)問(wèn)題是提供一種驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法,用以對(duì)處理器的浮點(diǎn)數(shù)據(jù)通路進(jìn)行高效而全面的驗(yàn)證。
2、為了解決上述技術(shù)問(wèn)題,本發(fā)明提供一種全面驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法,包括過(guò)程具體為:
3、s1、構(gòu)建浮點(diǎn)測(cè)試覆蓋模型并生成浮點(diǎn)測(cè)試數(shù)據(jù)庫(kù);
4、s2、構(gòu)建基礎(chǔ)risc-v指令序列生成器;
5、s3、在基礎(chǔ)指令risc-v序列生成器基礎(chǔ)上添加內(nèi)存綁定的寄存器更新機(jī)制,生成內(nèi)存的初始化數(shù)據(jù);
6、s4、將生成的指令機(jī)器碼與內(nèi)存初始化數(shù)據(jù)注入待驗(yàn)證處理器內(nèi)存進(jìn)行仿真,比較仿真得到的執(zhí)行軌跡與指令集模擬器的執(zhí)行軌跡,以找出處理器中的潛在錯(cuò)誤。
7、作為本發(fā)明的一種全面驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法的改進(jìn):
8、所述構(gòu)建浮點(diǎn)測(cè)試覆蓋模型并生成浮點(diǎn)測(cè)試數(shù)據(jù)庫(kù)的方法為:
9、浮點(diǎn)測(cè)試覆蓋模型包括浮點(diǎn)數(shù)據(jù)的覆蓋模型和浮點(diǎn)運(yùn)算特性的覆蓋模型,浮點(diǎn)數(shù)據(jù)的覆蓋模型為先將浮點(diǎn)數(shù)據(jù)按基本類型和邊界值進(jìn)行分類,然后為每種浮點(diǎn)運(yùn)算的輸入輸出操作數(shù)生成所有可能的浮點(diǎn)數(shù)據(jù)類型組合,每種組合作為一個(gè)驗(yàn)證任務(wù);浮點(diǎn)運(yùn)算特性的覆蓋模型為針對(duì)浮點(diǎn)運(yùn)算舍入的邊界情況以及上溢、下溢等邊界情況構(gòu)建的驗(yàn)證任務(wù);
10、將浮點(diǎn)測(cè)試覆蓋模型的驗(yàn)證任務(wù)的約束求解得到的代表性浮點(diǎn)測(cè)試構(gòu)成浮點(diǎn)測(cè)試數(shù)據(jù)庫(kù)。
11、作為本發(fā)明的一種全面驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法的進(jìn)一步改進(jìn):
12、所述構(gòu)建基礎(chǔ)risc-v指令序列生成器的方法為:
13、首先對(duì)risc-v指令進(jìn)行建模,并依據(jù)用戶輸入的模板生成指令序列;然后將每條生成的指令送入指令集模擬器進(jìn)行模擬,根據(jù)指令模擬結(jié)果更新模型中的狀態(tài)信息,得到的執(zhí)行軌跡反饋給指令序列生成器后,更新狀態(tài)信息;
14、基礎(chǔ)risc-v指令序列生成器將輸出指令機(jī)器碼以及指令集模擬器仿真的執(zhí)行軌跡。
15、作為本發(fā)明的一種全面驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法的進(jìn)一步改進(jìn):
16、所述添加內(nèi)存綁定的寄存器更新機(jī)制的方法為:
17、步驟s3.1、所述基礎(chǔ)risc-v指令序列生成器中的每條指令生成后,進(jìn)行寄存器更新檢測(cè);
18、步驟s3.2、檢測(cè)到需要觸發(fā)浮點(diǎn)寄存器更新機(jī)制后,隨機(jī)選擇更新的浮點(diǎn)寄存器;對(duì)于每個(gè)待更新的浮點(diǎn)寄存器,插入一條flw指令,每條flw指令對(duì)應(yīng)一段未使用的內(nèi)存和一個(gè)需要更新的浮點(diǎn)寄存器;生成每條用于浮點(diǎn)寄存器更新的flw指令后,生成器中記錄浮點(diǎn)寄存器與內(nèi)存地址的綁定信息;
19、步驟s3.3、繼續(xù)指令序列生成,當(dāng)選擇生成的指令的源寄存器為浮點(diǎn)寄存器時(shí),進(jìn)行浮點(diǎn)測(cè)試選擇,包括指令無(wú)關(guān)的浮點(diǎn)測(cè)試和指令相關(guān)的浮點(diǎn)測(cè)試;
20、步驟s3.4、指令操作數(shù)選擇,對(duì)于每個(gè)選擇了浮點(diǎn)測(cè)試的源寄存器,從浮點(diǎn)寄存器與內(nèi)存地址的綁定關(guān)系中選擇一個(gè)綁定的浮點(diǎn)寄存器作為該源寄存器,如果未選擇浮點(diǎn)測(cè)試的源寄存器,則根據(jù)基礎(chǔ)指令序列生成器的方法隨機(jī)選??;
21、步驟s3.5、更新模擬器中內(nèi)存與寄存器中數(shù)據(jù),確定源寄存器與對(duì)應(yīng)浮點(diǎn)測(cè)試信息后,需要將指令集模擬器中每個(gè)更新的浮點(diǎn)測(cè)試數(shù)據(jù)對(duì)應(yīng)的寄存器及綁定的內(nèi)存地址中的值直接更新為相應(yīng)的數(shù)值;
22、步驟s3.6、輸出內(nèi)存初始化信息并更新生成器狀態(tài),每條指令執(zhí)行上述步驟后,輸出更新后的源寄存器對(duì)應(yīng)的綁定內(nèi)存地址及浮點(diǎn)數(shù)值作為內(nèi)存初始化信息;同時(shí),從浮點(diǎn)寄存器與內(nèi)存綁定列表中刪除已更新的寄存器,并將指令的源寄存器和目的寄存器中的浮點(diǎn)寄存器記錄到被使用的寄存器列表中,等待后續(xù)更新。
23、作為本發(fā)明的一種全面驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法的進(jìn)一步改進(jìn):
24、所述指令無(wú)關(guān)的浮點(diǎn)測(cè)試為部分浮點(diǎn)源寄存器從所述浮點(diǎn)數(shù)據(jù)的覆蓋模型的類型中選擇浮點(diǎn)值進(jìn)行更新;
25、所述指令相關(guān)的浮點(diǎn)測(cè)試為從所述浮點(diǎn)測(cè)試數(shù)據(jù)庫(kù)中選擇浮點(diǎn)測(cè)試,所有的浮點(diǎn)源寄存器都需更新為浮點(diǎn)測(cè)試中對(duì)應(yīng)的浮點(diǎn)數(shù)值。
26、本發(fā)明的有益效果主要體現(xiàn)在:
27、本發(fā)明構(gòu)造了高效的覆蓋模型以生成代表性的浮點(diǎn)測(cè)試數(shù)據(jù),采用內(nèi)存綁定的寄存器更新機(jī)制將浮點(diǎn)測(cè)試與指令生成相結(jié)合生成。與現(xiàn)有的risc-v指令序列生成方法相比,實(shí)現(xiàn)了浮點(diǎn)操作數(shù)據(jù)類型的全面覆蓋,能夠?qū)μ幚砥鞯母↑c(diǎn)數(shù)據(jù)通路進(jìn)行更全面的驗(yàn)證,用以克服現(xiàn)有方法在risc-v指令生成過(guò)程中浮點(diǎn)方面的不足,發(fā)現(xiàn)處理器中潛在的設(shè)計(jì)缺陷。
1.一種驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法,其特征在于包括過(guò)程具體為:
2.根據(jù)權(quán)利要求1所述的一種全面驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法,其特征在于:
3.根據(jù)權(quán)利要求2所述的一種驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法,其特征在于:
4.根據(jù)權(quán)利要求3所述的一種驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法,其特征在于:
5.根據(jù)權(quán)利要求4所述的一種驗(yàn)證處理器浮點(diǎn)運(yùn)算的指令序列生成方法,其特征在于: