本發(fā)明涉及計(jì)算機(jī)教學(xué)測試工具領(lǐng)域。
背景技術(shù):
在科學(xué)技術(shù)日益發(fā)展的今天,計(jì)算機(jī)的作用已經(jīng)滲透到了工作生活中的每一個角落。各大高校都已將計(jì)算機(jī)課程列入到重點(diǎn)課程的行列。作為計(jì)算機(jī)科學(xué)的基礎(chǔ)課程,計(jì)算機(jī)組成原理和計(jì)算機(jī)體系結(jié)構(gòu)教學(xué)的成功與否,關(guān)系著計(jì)算機(jī)系學(xué)生對日后課程學(xué)習(xí)的理解好壞。而cpu的設(shè)計(jì)實(shí)驗(yàn),是對這門課程理解程度最好的檢驗(yàn)。因此,各高校都將cpu的設(shè)計(jì)實(shí)驗(yàn)列為一門重要實(shí)驗(yàn)課程。然而,許多學(xué)生都反應(yīng)cpu設(shè)計(jì)實(shí)驗(yàn)的難度大,流程復(fù)雜,傳統(tǒng)的硬件描述語言設(shè)計(jì)存在著流程繁瑣,測試過程不便,糾錯困難等問題。本發(fā)明根據(jù)眾多高校學(xué)生反應(yīng)的問題,設(shè)計(jì)出了一套完整的面向?qū)嵺`教學(xué)的mips-cpu測試工具。
本領(lǐng)域公知,mips匯編程序運(yùn)行模擬器(mars:themipsassemblyandruntimesimulator),主要用于模擬真實(shí)mips處理器,運(yùn)行mips匯編程序。在mars模擬器中,學(xué)生可以編輯或?qū)雖ips匯編程序,匯編,并運(yùn)行或調(diào)試程序。這樣便于學(xué)生直觀的觀察匯編代碼的運(yùn)行結(jié)果,也便于修改完善匯編程序。學(xué)生可以設(shè)置、移除斷點(diǎn),并向前、向后分步執(zhí)行,或者在運(yùn)行過程中修改寄存器和內(nèi)存內(nèi)容。
modelsim是工業(yè)界最為通用的硬件描述語言仿真器之一。不同于ise或者vivado內(nèi)置的仿真模塊仿真速度慢而且性能不太可靠,modelsim采用直接優(yōu)化的編譯技術(shù)、tcl/tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護(hù)ip核,個性化的圖形界面和接口,為學(xué)生加快調(diào)錯提供強(qiáng)有力的手段,它可以用于verilog仿真、vhdl仿真或者兩者的混合仿真。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的在于克服現(xiàn)有技術(shù)的不足,實(shí)現(xiàn)并公開了一種面向?qū)嵺`教學(xué)的mips-cpu測試工具,采用mipscpu模擬器與硬件描述語言仿真器協(xié)同工作的思想,將測試分為隨機(jī)指令測試和綜合指令測試。該測試工具提供了良好的用戶界面、便捷的操作步驟、完整的測試流程,大大簡化了測試過程。學(xué)生在設(shè)計(jì)并實(shí)現(xiàn)mips-cpu的過程中,將不必再面對一行行繁瑣的機(jī)器碼,也不必逐條指令檢驗(yàn)波形圖、查看內(nèi)存,避免了學(xué)生在測試過程中遇到錯誤時不知從何下手的情況,幫助學(xué)生更好、更快地完成cpu的測試工作,為mips-cpu的設(shè)計(jì)節(jié)省了大量的時間。
本發(fā)明需要保護(hù)的技術(shù)方案表征為:
本發(fā)明設(shè)計(jì)并實(shí)現(xiàn)了一套面向?qū)嵺`教學(xué)的mips-cpu測試工具。整套測試工具分為隨機(jī)指令測試子系統(tǒng)和綜合指令測試子系統(tǒng)兩個部分。
所述的隨機(jī)指令測試子系統(tǒng)包括mips隨機(jī)指令自動生成模塊、mips模擬器執(zhí)行模塊、硬件描述語言仿真器執(zhí)行模塊、執(zhí)行結(jié)果對比模塊。隨機(jī)指令測試子系統(tǒng)用mips隨機(jī)指令自動生成模塊生成隨機(jī)測試指令序列,通過mips模擬器執(zhí)行模塊運(yùn)行隨機(jī)測試指令,輸出標(biāo)準(zhǔn)結(jié)果,通過硬件描述語言仿真器執(zhí)行模塊運(yùn)行激勵文件來仿真導(dǎo)入隨機(jī)測試指令的cpu,輸出測試結(jié)果,將標(biāo)準(zhǔn)結(jié)果和測試結(jié)果通過執(zhí)行結(jié)果對比模塊進(jìn)行比對查看正確性,快速發(fā)現(xiàn)問題。
所述的綜合指令測試子系統(tǒng)包括綜合測試指令模塊、硬件描述語言仿真器執(zhí)行模塊、執(zhí)行結(jié)果查看模塊。綜合指令測試子系統(tǒng)將綜合測試指令模塊實(shí)現(xiàn)的mips標(biāo)準(zhǔn)指令的綜合測試匯編程序載入cpu后在硬件描述語言仿真器執(zhí)行模塊中進(jìn)行仿真測試,該匯編程序運(yùn)行后可通過執(zhí)行結(jié)果查看模塊方便查看綜合指令在cpu中的執(zhí)行結(jié)果和錯誤信,實(shí)現(xiàn)cpu的完備測試。
mips隨機(jī)指令自動生成模塊為一個b/s在線工具,在教學(xué)環(huán)節(jié)供學(xué)生生成指定數(shù)量的mips匯編指令隨機(jī)序列,這些隨機(jī)序列由mips標(biāo)準(zhǔn)指令集中隨機(jī)選取的指令構(gòu)成。mips模擬器執(zhí)行模塊,模擬真實(shí)mipscpu運(yùn)行環(huán)境,運(yùn)行mips匯編程序。將mips隨機(jī)指令自動生成模塊生成的隨機(jī)測試指令放入mips模擬器執(zhí)行模塊中運(yùn)行,得到每條指令執(zhí)行后的指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器、32個通用寄存器結(jié)果,作為隨機(jī)指令測試系統(tǒng)的標(biāo)準(zhǔn)結(jié)果。硬件描述語言仿真器執(zhí)行模塊,用于cpu的設(shè)計(jì)階段,為硬件描述語言編寫的cpu提供仿真服務(wù)。本發(fā)明通過運(yùn)行所實(shí)現(xiàn)的激勵文件,在仿真階段將cpu運(yùn)行每條指令后的指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器、32個通用寄存器結(jié)果輸出到目標(biāo)文件中,作為測試結(jié)果。執(zhí)行結(jié)果對比模塊,將mips模擬器執(zhí)行模塊和硬件描述語言仿真器執(zhí)行模塊得到的標(biāo)準(zhǔn)結(jié)果和測試結(jié)果進(jìn)行逐行對比,比較每條指令執(zhí)行后指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器、32個通用寄存器結(jié)果是否正確;錯誤則提示執(zhí)行錯誤的指令和指令地址,否則提示正確信息。
綜合測試指令模塊,實(shí)現(xiàn)了mips標(biāo)準(zhǔn)指令集的綜合測試匯編程序,該匯編程序涵蓋mips標(biāo)準(zhǔn)指令的逐條測試,測試過程中程序自動進(jìn)行指令執(zhí)行結(jié)果的正確性判斷,載入cpu后在硬件描述語言仿真器執(zhí)行模塊中進(jìn)行仿真測試,會將正確或錯誤標(biāo)識存入內(nèi)存及寄存器便于查看。硬件描述語言仿真器執(zhí)行模塊與隨機(jī)指令測試子系統(tǒng)中的相同。執(zhí)行結(jié)果查看模塊,該模塊將硬件描述語言仿真器執(zhí)行模塊的執(zhí)行結(jié)果進(jìn)行分析,根據(jù)結(jié)果標(biāo)識返回正確或錯誤,根據(jù)錯誤特征號返回錯誤指令。
本發(fā)明設(shè)計(jì)并實(shí)現(xiàn)了一套面向?qū)嵺`教學(xué)的mips-cpu測試工具:隨機(jī)指令測試子系統(tǒng)用mips隨機(jī)指令自動生成模塊生成隨機(jī)測試指令序列,通過mips模擬器執(zhí)行模塊運(yùn)行隨機(jī)測試指令,輸出標(biāo)準(zhǔn)結(jié)果,通過硬件描述語言仿真器執(zhí)行模塊運(yùn)行激勵文件來仿真導(dǎo)入隨機(jī)測試指令的cpu,輸出測試結(jié)果,將標(biāo)準(zhǔn)結(jié)果和測試結(jié)果通過執(zhí)行結(jié)果對比模塊進(jìn)行比對查看正確性,快速發(fā)現(xiàn)問題;綜合指令測試子系統(tǒng)將綜合測試指令模塊實(shí)現(xiàn)的mips標(biāo)準(zhǔn)指令的綜合測試匯編程序載入cpu后在硬件描述語言仿真器執(zhí)行模塊中進(jìn)行仿真測試,該匯編程序運(yùn)行后可通過執(zhí)行結(jié)果查看模塊方便查看綜合指令在cpu中的運(yùn)行情況及錯誤信息,實(shí)現(xiàn)cpu的完備測試。整套工具簡化并完善了cpu測試過程,從而為mips-cpu的設(shè)計(jì)節(jié)省了大量的時間。
附圖說明
圖1為系統(tǒng)總體架構(gòu)圖;
圖2為mips模擬器執(zhí)行過程示意圖;
圖3為硬件描述語言仿真器執(zhí)行模塊示意圖;
圖4為生成指定數(shù)量的符合mips規(guī)范的隨機(jī)指令序列示意圖;
圖5為mips模擬器執(zhí)行模塊示意圖;
圖6為mips模擬器執(zhí)行模塊對比;
圖7為綜合測試流程。
具體實(shí)施方式
面向?qū)嵺`教學(xué)的mips-cpu測試工具,實(shí)現(xiàn)步驟如下:
(1)總體架構(gòu)
系統(tǒng)總體架構(gòu)分為隨機(jī)指令測試子系統(tǒng)和綜合指令測試子系統(tǒng)兩部分,如圖1所示。
所述的隨機(jī)指令測試子系統(tǒng)包括mips隨機(jī)指令自動生成模塊、mips模擬器執(zhí)行模塊、硬件描述語言仿真器執(zhí)行模塊、執(zhí)行結(jié)果對比模塊。隨機(jī)指令測試子系統(tǒng)用mips隨機(jī)指令自動生成模塊生成隨機(jī)測試指令序列,通過mips模擬器執(zhí)行模塊運(yùn)行隨機(jī)測試指令,輸出標(biāo)準(zhǔn)結(jié)果,通過硬件描述語言仿真器執(zhí)行模塊運(yùn)行激勵文件來仿真導(dǎo)入隨機(jī)測試指令的cpu,輸出測試結(jié)果,將標(biāo)準(zhǔn)結(jié)果和測試結(jié)果通過執(zhí)行結(jié)果對比模塊進(jìn)行比對查看正確性,快速發(fā)現(xiàn)問題。
mips隨機(jī)指令自動生成模塊為一個b/s在線工具,在教學(xué)環(huán)節(jié)供學(xué)生生成指定數(shù)量的mips匯編指令隨機(jī)序列,這些隨機(jī)序列由mips標(biāo)準(zhǔn)指令集中隨機(jī)選取的指令構(gòu)成。mips模擬器執(zhí)行模塊,模擬真實(shí)mipscpu運(yùn)行環(huán)境,運(yùn)行mips匯編程序,實(shí)現(xiàn)功能如圖2所示。將mips隨機(jī)指令自動生成模塊生成的隨機(jī)測試指令放入mips模擬器執(zhí)行模塊中運(yùn)行,得到每條指令執(zhí)行后的指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器、32個通用寄存器結(jié)果,作為隨機(jī)指令測試系統(tǒng)的標(biāo)準(zhǔn)結(jié)果。硬件描述語言仿真器執(zhí)行模塊,用于cpu的設(shè)計(jì)階段,為硬件描述語言編寫的cpu提供仿真服務(wù),實(shí)現(xiàn)功能如圖3所示。本發(fā)明通過運(yùn)行所實(shí)現(xiàn)的激勵文件,在仿真階段將cpu運(yùn)行每條指令后的指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器、32個通用寄存器結(jié)果輸出到目標(biāo)文件中,作為測試結(jié)果。執(zhí)行結(jié)果對比模塊,將mips模擬器執(zhí)行模塊和硬件描述語言仿真器執(zhí)行模塊得到的標(biāo)準(zhǔn)結(jié)果和測試結(jié)果進(jìn)行逐行對比,比較每條指令執(zhí)行后指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器、32個通用寄存器結(jié)果是否正確;錯誤則提示執(zhí)行錯誤的指令和指令地址,否則提示正確信息。
所述的綜合指令測試子系統(tǒng)包括綜合測試指令模塊、硬件描述語言仿真器執(zhí)行模塊、執(zhí)行結(jié)果查看模塊。綜合指令測試子系統(tǒng)將綜合測試指令模塊實(shí)現(xiàn)的mips標(biāo)準(zhǔn)指令的綜合測試匯編程序載入cpu后在硬件描述語言仿真器執(zhí)行模塊中進(jìn)行仿真測試,該匯編程序運(yùn)行后可通過執(zhí)行結(jié)果查看模塊方便查看綜合指令在cpu中的執(zhí)行結(jié)果和錯誤信,實(shí)現(xiàn)cpu的完備測試。
綜合測試指令模塊,實(shí)現(xiàn)了mips標(biāo)準(zhǔn)指令集的綜合測試匯編程序,該匯編程序涵蓋mips標(biāo)準(zhǔn)指令的逐條測試,測試過程中程序自動進(jìn)行指令執(zhí)行結(jié)果的正確性判斷,載入cpu后在硬件描述語言仿真器執(zhí)行模塊中進(jìn)行仿真測試,會將正確或錯誤標(biāo)識存入內(nèi)存及寄存器便于查看。硬件描述語言仿真器執(zhí)行模塊與隨機(jī)指令測試子系統(tǒng)中的相同。執(zhí)行結(jié)果查看模塊,該模塊將硬件描述語言仿真器執(zhí)行模塊的執(zhí)行結(jié)果進(jìn)行分析,根據(jù)結(jié)果標(biāo)識返回正確或錯誤,根據(jù)錯誤特征號返回錯誤指令。
(2)系統(tǒng)模塊實(shí)現(xiàn)
mips隨機(jī)指令自動生成模塊在windowsserver2008r2上實(shí)現(xiàn),基于.net架構(gòu),由c#編寫,為一個b/s在線應(yīng)用系統(tǒng),每次可生成指定數(shù)量的符合mips規(guī)范的隨機(jī)指令序列。如圖4所示。
在測試隨機(jī)指令序列時,需要一個標(biāo)準(zhǔn)結(jié)果和一個測試結(jié)果,標(biāo)準(zhǔn)結(jié)果由mips模擬器執(zhí)行模塊生成,本發(fā)明在實(shí)現(xiàn)中用到了mars,mars是一個開源的mipscpu模擬器,使用java編寫,為了得到每條指令執(zhí)行后存儲器和寄存器的內(nèi)容,本發(fā)明實(shí)施例需要對mars進(jìn)行二次開發(fā),在每條指令執(zhí)行后將32個寄存器結(jié)果、標(biāo)準(zhǔn)寄存器結(jié)果、指令地址和執(zhí)行的指令機(jī)器碼寫入結(jié)果文件,執(zhí)行完成后作為標(biāo)準(zhǔn)執(zhí)行結(jié)果。如圖5所示,在mips模擬器執(zhí)行模塊中,通過用戶界面模塊向編譯模塊、mips硬件模塊、模擬運(yùn)行模塊發(fā)送命令,在編譯模塊中輸入?yún)R編程序后可進(jìn)行編譯操作,mips硬件模塊實(shí)現(xiàn)mipscpu硬件部分,主要為存儲器、寄存器和指令管理,編譯完成后可以在用戶界面中管理存儲的數(shù)據(jù),或使用模擬運(yùn)行模塊開始運(yùn)行mips指令。為了在每條指令執(zhí)行之后輸出指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器和32個寄存器內(nèi)容,模擬運(yùn)行模塊需要在每條指令執(zhí)行后給予mips硬件模塊一個反饋請求信號,由存儲器、寄存器和指令管理器將內(nèi)容輸出到一個result.txt文件,作為標(biāo)準(zhǔn)輸出結(jié)果。
測試結(jié)果由硬件描述語言仿真器執(zhí)行模塊生成,本發(fā)明在實(shí)現(xiàn)中用到了modelsim,首先需要用mips模擬器執(zhí)行模塊導(dǎo)出編譯隨機(jī)指令序列后得到的二進(jìn)制文件,cpu加載二進(jìn)制文件后用modelsim進(jìn)行仿真測試,仿真階段需要激勵文件,本實(shí)施例測試工具提供的激勵文件用verilog編寫,給予cpu執(zhí)行所必須的時鐘信號和復(fù)位信號并根據(jù)時鐘信號在適當(dāng)?shù)臅r機(jī)導(dǎo)出需要的變量值,實(shí)現(xiàn)在cpu仿真運(yùn)行時輸出每條指令執(zhí)行后的指令機(jī)器碼、指令地址、標(biāo)志寄存器和32個寄存器內(nèi)容到一個result.txt文件作為測試結(jié)果。
執(zhí)行結(jié)果對比模塊使用python編寫,將mips模擬器執(zhí)行模塊和硬件描述語言仿真器執(zhí)行模塊得到的標(biāo)準(zhǔn)結(jié)果和測試結(jié)果進(jìn)行逐行對比,比較每條指令執(zhí)行后指令機(jī)器碼、指令存儲地址、標(biāo)志寄存器、32個通用寄存器結(jié)果是否一致,不一致則相應(yīng)指令執(zhí)行錯誤,完全一致則執(zhí)行正確。錯誤則提示執(zhí)行錯誤的指令和指令地址,否則提示正確信息。如圖6,比對兩個結(jié)果文件,對比發(fā)現(xiàn)在指令地址為8,執(zhí)行指令20200001后,1號寄存器的結(jié)果出現(xiàn)了錯誤,需要進(jìn)一步調(diào)試修改。
綜合測試指令模塊使用mips標(biāo)準(zhǔn)指令集編寫,該匯編程序涵蓋mips標(biāo)準(zhǔn)指令的逐條測試,測試過程中程序自動進(jìn)行指令執(zhí)行結(jié)果的正確性判斷,測試過程如圖7所示。首先測試cpu通用寄存器的讀寫功能,然后測試一些基本指令,如移位指令、加法指令,在測試驗(yàn)證這些基本指令的正確性后再以這些指令為基礎(chǔ)對一些復(fù)雜指令進(jìn)行測試。測試過程通過將已知的正確結(jié)果存儲至內(nèi)存或寄存器中,在指令執(zhí)行完畢后取出正確結(jié)果進(jìn)行比較,若正確則繼續(xù)執(zhí)行直到全部指令測試完畢,將正確標(biāo)識存入指定內(nèi)存以供查看,若出現(xiàn)錯誤則跳出異常,結(jié)束測試,每條指令的測試結(jié)果出現(xiàn)錯誤都會將相應(yīng)的錯誤標(biāo)識存入內(nèi)存中,以區(qū)分不同的指令錯誤,方便錯誤查找。
執(zhí)行結(jié)果查看模塊使用python實(shí)現(xiàn),將硬件描述語言仿真器執(zhí)行模塊的執(zhí)行結(jié)果進(jìn)行分析,根據(jù)結(jié)果標(biāo)識返回正確或錯誤,內(nèi)存標(biāo)識為ac表示正確,內(nèi)存標(biāo)識為ce表示錯誤,根據(jù)錯誤特征號返回錯誤指令。
創(chuàng)新點(diǎn)及有益效果
(1)設(shè)計(jì)了一套面向?qū)嵺`教學(xué)的mips-cpu測試工具,由系統(tǒng)自動生成隨機(jī)指令并得到指令執(zhí)行結(jié)果的標(biāo)準(zhǔn)文件和測試文件,比對結(jié)果進(jìn)行cpu測試,避免了傳統(tǒng)測試方法在仿真器中逐條指令查看仿真結(jié)果的不便,使cpu的測試工作變得更加快速便捷。
(2)將cpu測試分為了隨機(jī)指令測試和綜合指令測試,實(shí)現(xiàn)了mips隨機(jī)指令自動生成模塊和綜合測試指令模塊,完善了cpu設(shè)計(jì)過程中的測試方法,保證了cpu測試的完備性。