1.一種并行多核處理器的全系統(tǒng)模擬器,其特征在于,框架結(jié)構(gòu)分為4個主要部分:功能模擬模塊、時序模擬模塊、通用接口模塊、差異檢測和調(diào)節(jié)模塊;其中:
所述功能模擬模塊,用于實(shí)現(xiàn)特定的功能模擬模型,負(fù)責(zé)執(zhí)行指令和收集應(yīng)用程序和操作系統(tǒng)的執(zhí)行信息,并將指令分解成時序模擬所需的體系結(jié)構(gòu)無關(guān)的指令流和數(shù)據(jù)流信息,寫入到功能模擬模塊和時序模擬模塊中間的通用接口,從而傳送給時序模擬模塊;
所述時序模擬模塊,用于實(shí)現(xiàn)特定的時序模擬模型,負(fù)責(zé)從通用接口中取得指令的接口信息,對指令進(jìn)行時序模擬,并更新體系結(jié)構(gòu)的狀態(tài)信息;
所述通用接口模塊,該模塊里面包含一個指令緩沖區(qū)和一個內(nèi)存訪問表(MAT)結(jié)構(gòu);指令緩沖區(qū)主要用于存放功能模擬模型傳遞的指令流信息,MAT則主要用于存儲內(nèi)存訪問的數(shù)據(jù)流信息;
所述差異檢測和調(diào)節(jié)模塊,主要負(fù)責(zé)比較功能模擬和時序模擬行為的不一致性,并根據(jù)不一致的原因分別調(diào)用相應(yīng)的處理模塊進(jìn)行調(diào)節(jié)。
2.根據(jù)權(quán)利要求1所述的并行多核處理器的全系統(tǒng)模擬器,其特征在于,針對模擬器在運(yùn)行時的4種精確性影響因素:還設(shè)計了錯誤路徑處理模塊塊、異常和中斷處理模塊、共享內(nèi)存訪問的檢測和修正模和共享頁表訪問的檢測和修正模塊,以修正精確性影響因素發(fā)生時引入的錯誤;其中:
所述錯誤路徑處理模塊,用于處理異常或中斷發(fā)生時功能模擬和時序模擬模塊執(zhí)行路徑的不一致;在時序模擬模型出現(xiàn)分支預(yù)測錯誤時,為功能模擬模塊創(chuàng)建出一個與當(dāng)前時序模擬模塊系統(tǒng)狀態(tài)完全一致的輕量級錯誤路徑系統(tǒng),在這個系統(tǒng)內(nèi)繼續(xù)執(zhí)行經(jīng)過分支預(yù)測的指令路徑,當(dāng)被預(yù)測錯誤的指令完成后,不執(zhí)行提交而直接退出錯誤路徑模擬,從而避免更改實(shí)際流水線的狀態(tài);
所述異常和中斷處理模塊,用于處理異?;蛑袛喟l(fā)生時功能模擬和時序模擬模塊執(zhí)行路徑的不一致;當(dāng)中斷或異常發(fā)生時,該模塊為功能模擬模塊創(chuàng)建出一個與當(dāng)前時序模擬模塊系統(tǒng)狀態(tài)完全一致的輕量級錯誤路徑系統(tǒng),在這個系統(tǒng)內(nèi)繼續(xù)執(zhí)行中斷或異常發(fā)生后的指令路徑,當(dāng)錯誤路徑的指令完成后,不執(zhí)行提交而直接退出錯誤路徑模擬,從而避免更改實(shí)際流水線的狀態(tài);
所述共享內(nèi)存訪問的檢測和修正模塊,用于檢測和修正提前執(zhí)行的功能模擬模型與時序模擬模型的內(nèi)存訪問順序不一致,以修正共享內(nèi)存訪問順序不一致所帶來的時序不精確性,避免導(dǎo)致模擬結(jié)果的不精確;共享內(nèi)存訪問的檢測和修正模塊通過兩步操作來避免功能模擬模型和時序模擬模型之間對于共享內(nèi)存的訪問順序不一致:首先在功能模擬模型執(zhí)行時記錄下各個處理器核訪問內(nèi)存的順序;然后在時序模擬模型中內(nèi)存指令提交時,檢查時序模擬模型與功能模擬模型對共享內(nèi)存的訪問順序是否一致,從而確定兩者的執(zhí)行行為是否有沖突,如果發(fā)生沖突,需要根據(jù)時序模擬模型的系統(tǒng)狀態(tài)回滾功能模擬模型;
所述共享頁表訪問的檢測和修正模塊,用于簡化共享頁表訪問順序沖突的處理;當(dāng)功能模擬模塊在遇到MMU miss時,不再繼續(xù)執(zhí)行指令,直到時序模擬模塊提交這條指令時,即跳轉(zhuǎn)到正確的MMU miss處理路徑時再繼續(xù)執(zhí)行,從而使得功能模擬模塊和時序模擬模塊在共享頁表的訪問順序上保持了一致。
3.根據(jù)權(quán)利要求2所述的并行多核處理器的全系統(tǒng)模擬器,其特征在于,當(dāng)需要對一條指令進(jìn)行模擬時,系統(tǒng)的模擬流程如下:首先,功能模擬模塊執(zhí)行被模擬的指令;接著,功能模擬模塊將把指令本身的信息以及進(jìn)行時序模擬所需要的執(zhí)行信息通過通用接口傳遞給時序模擬模塊;然后,時序模擬模塊要對這條指令模擬時,從通用接口中讀出這條指令的相關(guān)信息,對它進(jìn)行時序模擬;在時序模擬時,差異檢測和調(diào)節(jié)模塊檢測影響模擬精確性的事件,并根據(jù)被檢測到的精確性影響因素對應(yīng)地調(diào)用錯誤路徑處理模塊、共享內(nèi)存訪問的檢測和修正模塊、異常和中斷處理模塊和共享頁表訪問的檢測和修正模塊對功能模擬模型進(jìn)行修正,保證功能模擬模型模擬的路徑與時序模擬模型模擬的路徑一致,從而保證模擬的精確性;最后,在這條指令在時序模擬模塊中完成提交時,更新時序模擬模型的體系結(jié)構(gòu)狀態(tài)。
4.根據(jù)權(quán)利要求3所述的并行多核處理器的全系統(tǒng)模擬器,其特征在于,通用接口模塊的設(shè)計不依賴于功能模擬模型和特定指令集體系結(jié)構(gòu)相關(guān)信息;此外,由于時序模擬模型主要模擬流水線依賴及存儲結(jié)構(gòu),通用接口模塊包含這兩方面用于時序模擬的相關(guān)信息;通用接口的主要功能是在功能模擬和時序模擬模塊之間傳輸指令流和數(shù)據(jù)流信息;其中:
所述指令流信息記錄在指令緩沖區(qū)當(dāng)中,大小可通過配置文件設(shè)定;緩沖區(qū)的每一項保存了指令進(jìn)行時序模擬所需的信息,由功能模擬模型模擬完一條指令后填寫;每一項看做是對應(yīng)指令的蹤跡,主要包括三方面的信息:流水線相關(guān)信息,存儲訪問信息以及修改的體系結(jié)構(gòu)狀態(tài)信息;
所述數(shù)據(jù)流信息存儲在一個兩維的表MAT中;MAT的第一個維度是一個以物理地址為鍵值的散列,其中的每個節(jié)點(diǎn)稱為內(nèi)存地址節(jié)點(diǎn);每一個內(nèi)存地址節(jié)點(diǎn)擁有一個保存功能模擬模型對內(nèi)存的訪問順序隊列,用來記錄對于該內(nèi)存地址被各個核的訪問順序;隊列的每個節(jié)點(diǎn)記錄某一次訪問的具體信息,包括這次訪問來自哪個核,是讀操作還是寫操作,以及對內(nèi)存的改變等信息。