欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種松耦合結(jié)構(gòu)的并行多核全系統(tǒng)模擬器的制作方法

文檔序號(hào):12462875閱讀:201來源:國知局
一種松耦合結(jié)構(gòu)的并行多核全系統(tǒng)模擬器的制作方法與工藝

本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種并行多核處理器的全系統(tǒng)模擬器。



背景技術(shù):

隨著多核技術(shù)的不斷發(fā)展,微處理器結(jié)構(gòu)變得越來越復(fù)雜,開發(fā)成本越來越高,開發(fā)周期也越來越長。如何驗(yàn)證設(shè)計(jì)的有效性,對(duì)提高設(shè)計(jì)的效率和成功率起著至關(guān)重要的作用,模擬便是為了達(dá)到這一目的而廣泛使用的技術(shù)。模擬器在處理器設(shè)計(jì)或體系結(jié)構(gòu)研究中的作用也變得不可或缺。一方面,硬件設(shè)計(jì)者可以對(duì)模擬器進(jìn)行擴(kuò)展,從而對(duì)未來的處理器進(jìn)行設(shè)計(jì)和驗(yàn)證。同時(shí),設(shè)計(jì)者也可以使用模擬器來測試處理器各個(gè)功能部件在不同配置下運(yùn)行各種測試程序的結(jié)果,并基于對(duì)結(jié)果的分析確定每個(gè)功能部件對(duì)處理器整體性能的影響程度,從而深入理解處理器的行為,進(jìn)而改進(jìn)處理器的設(shè)計(jì),提高性能。另一方面,軟件開發(fā)者也可以在硬件投產(chǎn)前,基于模擬器平臺(tái)為對(duì)應(yīng)硬件平臺(tái)開發(fā)各種軟件產(chǎn)品,加速軟硬件產(chǎn)品的市場化進(jìn)程。

軟件模擬技術(shù)通過軟件程序來模擬處理器系統(tǒng)部分或全部的功能,并給出各種所需模擬結(jié)果。具體說來,軟件模擬技術(shù)不但可以準(zhǔn)確地模擬硬件的各種功能和行為,還可以靈活的修改被模擬目標(biāo)架構(gòu)的結(jié)構(gòu)、組件以及行為。同時(shí),由于軟件易于擴(kuò)展,也可以有效克服硬件驗(yàn)證靈活性差、應(yīng)用面窄、開發(fā)周期長等缺點(diǎn)。由于這些特征,軟件模擬技術(shù)作為一種至關(guān)重要的手段,已廣泛應(yīng)用于處理器設(shè)計(jì)和體系結(jié)構(gòu)研究的方方面面。

目前,主流體系結(jié)構(gòu)模擬器主要包括功能模擬模型和時(shí)序模擬模型兩部分。功能模擬模型一般只完成處理器硬件的各種功能模擬,而不模擬處理器各個(gè)組成部分的微體系結(jié)構(gòu)特征。因此,功能模擬模型只能用來測試程序在一個(gè)平臺(tái)上執(zhí)行結(jié)果的正確性,而不能給出性能和時(shí)序行為數(shù)據(jù),因此無法進(jìn)行深入分析,也沒辦法進(jìn)行不同處理器設(shè)計(jì)的比較。時(shí)序模擬模型則能根據(jù)實(shí)際需要,模擬處理器整體或者部分功能單元在每個(gè)時(shí)鐘周期內(nèi)的微體系結(jié)構(gòu)的各種行為和反應(yīng),包括流水線、功能單元和存儲(chǔ)結(jié)構(gòu)等。時(shí)序模擬模型不僅可以確認(rèn)結(jié)果的正確性,還可以獲得程序執(zhí)行過程中處理器的各種性能指標(biāo),因此在相關(guān)研究和設(shè)計(jì)中有著更廣泛的應(yīng)用。

由于模擬器的重要性和多核結(jié)構(gòu)的普及,各種功能更全的功能模擬模型不斷涌現(xiàn),如Simics,QEMU,COREMU;而各種更加精確和快速的新型時(shí)序模擬模型也不斷涌現(xiàn),如GEMS,MPTLSim,RAMP GOLD。目前主流多核模擬器通常采用緊耦合設(shè)計(jì),即功能模擬和時(shí)序模擬需要在每個(gè)時(shí)鐘周期都進(jìn)行交互。一方面,這樣的設(shè)計(jì)增加了模擬器擴(kuò)展的難度:給模擬器增添新的功能或者時(shí)序模擬模型通常需要幾個(gè)人年的時(shí)間,如研究人員花費(fèi)了數(shù)年的時(shí)間整合M5和GEMS模擬器(gem5),而擴(kuò)展PTLSim使之支持QEMU也用去了數(shù)年的時(shí)間(MARSS)。另一方面,緊耦合設(shè)計(jì)中過多的交互也引入了許多額外的開銷,不僅降低了多核模擬器的性能,也阻礙了模擬器功能模擬和時(shí)序模擬有效并行的可能。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于提供一種執(zhí)行力度強(qiáng)、模擬性能好,并具有擴(kuò)展功能的并行多核處理器的全系統(tǒng)模擬器。

本發(fā)明提供的并行多核處理器的全系統(tǒng)模擬器,是一種軟件實(shí)現(xiàn)的模擬系統(tǒng)。具體而言,本發(fā)明在邏輯上把功能模擬模型和時(shí)序模擬模型分開,采用完全松耦合的設(shè)計(jì)架構(gòu):功能模擬模型只負(fù)責(zé)功能模擬部分,時(shí)序模擬模型只負(fù)責(zé)模擬器的時(shí)序部分。模擬指令時(shí),模擬器采用功能優(yōu)先的結(jié)構(gòu),功能模擬模型先于時(shí)序模擬模型執(zhí)行,為時(shí)序模擬模型提供相關(guān)的信息;模擬器的功能模擬和時(shí)序模擬模塊通過體系結(jié)構(gòu)無關(guān)的通用接口進(jìn)行交互。為了保證模擬器的精確性,本發(fā)明設(shè)計(jì)了差異檢測和調(diào)節(jié)模塊,負(fù)責(zé)檢測功能模擬和時(shí)序模擬模塊之間行為的差異。當(dāng)檢測到差異時(shí),該模塊再根據(jù)引起差異的具體原因進(jìn)行調(diào)節(jié)。

本發(fā)明提供的并行多核處理器的全系統(tǒng)模擬器,其框架結(jié)構(gòu)可分為4個(gè)主要部分:功能模擬模塊、時(shí)序模擬模塊、通用接口、差異檢測和調(diào)節(jié)模塊。其中:

(1)功能模擬模塊,實(shí)現(xiàn)特定的功能模擬模型,主要負(fù)責(zé)執(zhí)行指令和收集應(yīng)用程序和操作系統(tǒng)的執(zhí)行信息,并將指令分解成時(shí)序模擬所需的體系結(jié)構(gòu)無關(guān)的指令流和數(shù)據(jù)流信息,寫入到功能模擬模塊和時(shí)序模擬模塊中間的通用接口,從而傳送給時(shí)序模擬模塊;

(2)時(shí)序模擬模塊,實(shí)現(xiàn)特定的時(shí)序模擬模型,負(fù)責(zé)從通用接口中取得指令的接口信息,對(duì)指令進(jìn)行時(shí)序模擬,并更新體系結(jié)構(gòu)的狀態(tài)信息;

(3)通用接口,該模塊里面包含一個(gè)指令緩沖區(qū)和一個(gè)內(nèi)存訪問表(Memory Access Table, MAT)結(jié)構(gòu)。指令緩沖區(qū)主要負(fù)責(zé)存放功能模擬模型傳遞的指令流信息,MAT則主要負(fù)責(zé)存儲(chǔ)內(nèi)存訪問的數(shù)據(jù)流信息;

(4)差異檢測和調(diào)節(jié)模塊,主要負(fù)責(zé)比較功能模擬和時(shí)序模擬行為的不一致,并根據(jù)不一致的原因分別調(diào)用相應(yīng)的處理模塊進(jìn)行調(diào)節(jié)。

模擬器在運(yùn)行時(shí),一些因素會(huì)導(dǎo)致功能模擬和時(shí)序模擬的行為不一致,從而影響模擬的精確性。這些因素主要包括分支預(yù)測錯(cuò)誤、中斷和異常的處理、共享數(shù)據(jù)訪問的順序以及共享頁表訪問的順序等,以下簡稱精確性影響因素。為了提高模擬的精確性,本發(fā)明進(jìn)一步設(shè)計(jì)了錯(cuò)誤路徑處理模塊塊、異常和中斷處理模塊、共享內(nèi)存訪問的檢測和修正模和共享頁表訪問的檢測和修正模塊,修正精確性影響因素發(fā)生時(shí)引入的錯(cuò)誤。

本發(fā)明設(shè)計(jì)的錯(cuò)誤路徑處理模塊,更好地模擬現(xiàn)代處理器的分支預(yù)測功能。該模塊在時(shí)序模擬模型出現(xiàn)分支預(yù)測錯(cuò)誤時(shí),為功能模擬模塊創(chuàng)建出一個(gè)與當(dāng)前時(shí)序模擬模塊系統(tǒng)狀態(tài)完全一致的輕量級(jí)錯(cuò)誤路徑系統(tǒng),在這個(gè)系統(tǒng)內(nèi)繼續(xù)執(zhí)行經(jīng)過分支預(yù)測的指令路徑,當(dāng)被預(yù)測錯(cuò)誤的指令完成后,不執(zhí)行提交而直接退出錯(cuò)誤路徑模擬,從而避免更改實(shí)際流水線的狀態(tài)。這種調(diào)用輕量級(jí)錯(cuò)誤路徑的方式可以避免不必要的回滾和復(fù)雜狀態(tài)的記錄。

本發(fā)明設(shè)計(jì)的異常和中斷處理模塊,處理異?;蛑袛喟l(fā)生時(shí)功能模擬和時(shí)序模擬模塊執(zhí)行路徑的不一致。本模塊的處理方法與錯(cuò)誤路徑處理模塊的處理方法相似。當(dāng)中斷或異常發(fā)生時(shí),該模塊為功能模擬模塊創(chuàng)建出一個(gè)與當(dāng)前時(shí)序模擬模塊系統(tǒng)狀態(tài)完全一致的輕量級(jí)錯(cuò)誤路徑系統(tǒng),在這個(gè)系統(tǒng)內(nèi)繼續(xù)執(zhí)行中斷或異常發(fā)生后的指令路徑,當(dāng)錯(cuò)誤路徑的指令完成后,不執(zhí)行提交而直接退出錯(cuò)誤路徑模擬,從而避免更改實(shí)際流水線的狀態(tài)。

本發(fā)明設(shè)計(jì)的共享內(nèi)存訪問的檢測和修正模塊,檢測和修正提前執(zhí)行的功能模擬模型與時(shí)序模擬模型的內(nèi)存訪問順序不一致,以修正共享內(nèi)存訪問順序不一致所帶來的時(shí)序不精確性,避免導(dǎo)致模擬結(jié)果的不精確。共享內(nèi)存訪問的檢測和修正模塊通過兩步操作來避免功能模擬模型和時(shí)序模擬模型之間對(duì)于共享內(nèi)存的訪問順序不一致:首先在功能模擬模型執(zhí)行時(shí)記錄下各個(gè)處理器核訪問內(nèi)存的順序;然后在時(shí)序模擬模型中內(nèi)存指令提交時(shí),檢查時(shí)序模擬模型與功能模擬模型對(duì)共享內(nèi)存的訪問順序是否一致,從而確定兩者的執(zhí)行行為是否有沖突,如果發(fā)生沖突,需要根據(jù)時(shí)序模擬模型的系統(tǒng)狀態(tài)回滾功能模擬模型。

本發(fā)明設(shè)計(jì)的共享頁表訪問的檢測和修正模塊,簡化了共享頁表訪問順序沖突的處理。功能模擬模塊在遇到MMU (Memory Management Unit,內(nèi)存管理單元) miss時(shí),不再繼續(xù)執(zhí)行指令,直到時(shí)序模擬模塊提交這條指令時(shí)(即跳轉(zhuǎn)到正確的MMU miss處理路徑時(shí))再繼續(xù)執(zhí)行。這種策略使得功能模擬模塊和時(shí)序模擬模塊在共享頁表的訪問順序上保持了一致。采用這種方法,時(shí)序模擬模塊處理MMU miss之前都是從錯(cuò)誤路徑取指令,并不會(huì)導(dǎo)致流水線被停住的問題。

當(dāng)需要對(duì)一條指令進(jìn)行模擬時(shí),系統(tǒng)的典型模擬流程如下:首先,功能模擬模塊執(zhí)行被模擬的指令。接著,功能模擬模塊將把指令本身的信息以及進(jìn)行時(shí)序模擬所需要的執(zhí)行信息通過通用接口傳遞給時(shí)序模擬模塊。然后,時(shí)序模擬模塊要對(duì)這條指令模擬時(shí),從通用接口中讀出這條指令的相關(guān)信息,對(duì)它進(jìn)行時(shí)序模擬。在時(shí)序模擬時(shí),差異檢測和調(diào)節(jié)模塊將會(huì)檢測影響模擬精確性的事件,并根據(jù)被檢測到的精確性影響因素對(duì)應(yīng)地調(diào)用錯(cuò)誤路徑處理模塊、共享內(nèi)存訪問的檢測和修正模塊、異常和中斷處理模塊和共享頁表訪問的檢測和修正模塊對(duì)功能模擬模型進(jìn)行修正,保證功能模擬模型模擬的路徑與時(shí)序模擬模型模擬的路徑一致,從而保證模擬的精確性。最后,在這條指令在時(shí)序模擬模塊中完成提交時(shí),更新時(shí)序模擬模型的體系結(jié)構(gòu)狀態(tài)。

為了保證可擴(kuò)展性,使得模擬器能夠方便地?cái)U(kuò)展新的功能模擬模型,甚至更換指令集架構(gòu)(ISA),通用接口的設(shè)計(jì)不依賴于功能模擬模型和特定指令集等體系結(jié)構(gòu)相關(guān)信息。此外,由于時(shí)序模擬模型主要模擬流水線依賴及存儲(chǔ)結(jié)構(gòu),通用接口包含這兩方面用于時(shí)序模擬的相關(guān)信息。通用接口的主要功能是在功能模擬和時(shí)序模擬模塊之間傳輸指令流和數(shù)據(jù)流信息。

所述指令流信息會(huì)被記錄在指令緩沖區(qū)當(dāng)中,大小可通過配置文件設(shè)定。緩沖區(qū)的每一項(xiàng)保存了指令進(jìn)行時(shí)序模擬所需的信息,由功能模擬模型模擬完一條指令后填寫。每一項(xiàng)可以看做是對(duì)應(yīng)指令的蹤跡(trace),主要包括三方面的信息:流水線相關(guān)信息(功能單元需求和源/目的寄存器等),存儲(chǔ)訪問信息以及修改的體系結(jié)構(gòu)狀態(tài)信息。

所述數(shù)據(jù)流信息存儲(chǔ)在一個(gè)兩維的表MAT中。MAT的第一個(gè)維度是一個(gè)以物理地址為鍵值的散列,其中的每個(gè)節(jié)點(diǎn)我們稱之為內(nèi)存地址節(jié)點(diǎn);每一個(gè)內(nèi)存地址節(jié)點(diǎn)擁有一個(gè)保存功能模擬模型對(duì)內(nèi)存的訪問順序隊(duì)列,用來記錄對(duì)于該內(nèi)存地址被各個(gè)核的訪問順序。隊(duì)列的每個(gè)節(jié)點(diǎn)記錄了某一次訪問的具體信息,包括這次訪問來自哪個(gè)核,是讀操作還是寫操作,以及對(duì)內(nèi)存的改變等信息。

本發(fā)明的技術(shù)方案具有如下優(yōu)點(diǎn):功能模擬和時(shí)序模擬模型之間松耦合的結(jié)構(gòu),減少兩者之間的交互,增加了系統(tǒng)并行執(zhí)行的力度,提高了模擬的性能;還使得模擬器容易根據(jù)需求擴(kuò)展。功能模擬和時(shí)序模擬模型之間的差異檢測和調(diào)節(jié),保證了模擬器的精確性。

附圖說明

圖1、松散耦合結(jié)構(gòu)的模擬器架構(gòu)。

圖2、錯(cuò)誤預(yù)測路徑處理流程。

圖3、內(nèi)存訪問信息記錄流程。

圖4、內(nèi)存訪問順序檢查流程。

圖5、共享頁表訪問順序算法。

圖6、通用接口設(shè)計(jì)。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚,以下結(jié)合附圖及實(shí)施例,詳細(xì)說明本發(fā)明的優(yōu)選實(shí)施。在此之前需要說明的是,本說明書及權(quán)利要求書中所使用的術(shù)語或詞語不能限定解釋為通常的含義或辭典中的含義,而應(yīng)當(dāng)立足于為了以最佳方式說明其發(fā)明人可以對(duì)術(shù)語的概念進(jìn)行適當(dāng)定義的原則解釋為符合本發(fā)明技術(shù)思想的含義和概念。隨之,本說明書所記載的實(shí)施例和附圖中表示的結(jié)構(gòu)只是本發(fā)明最佳實(shí)施例之一,并不能完全代表本發(fā)明的技術(shù)思想,因此應(yīng)該理解到對(duì)于本發(fā)明而言可能會(huì)存在能夠進(jìn)行替換的各種等同物和變形例。

本發(fā)明在模擬器的兩大核心功能——功能模擬和時(shí)序模擬之間,采用松耦合的結(jié)構(gòu),參見圖1;兩者之間采用一個(gè)通用接口通訊,參見圖6。基于本發(fā)明,模擬器可以靈活地修改功能模擬和時(shí)序模擬模型,也可以進(jìn)一步改進(jìn)系統(tǒng)的性能。

實(shí)現(xiàn)一:模擬模型的擴(kuò)展

相比于其他模擬器的架構(gòu),基于本發(fā)明可以更方便進(jìn)行不同功能模擬模型和時(shí)序模擬模型的擴(kuò)展。下文參照圖1,介紹如何基于本發(fā)明進(jìn)行功能模擬擴(kuò)展和時(shí)序模擬擴(kuò)展?;诒景l(fā)明對(duì)模擬器進(jìn)行擴(kuò)展可以參照該具體實(shí)施例。

首先,功能模型的擴(kuò)展示例。QEMU是一個(gè)強(qiáng)大的功能模擬器,可以支持不同指令集的功能模擬。在模擬時(shí),QEMU把指令轉(zhuǎn)換為類似RISC的簡單的TCG(Tiny Code Generator, 簡單代碼生成器)指令。集成時(shí),只要在TCG指令與本發(fā)明的通用接口(參考圖6)建立映射,就可以避免復(fù)雜令的譯碼工作。在對(duì)接時(shí),還需要對(duì)一些復(fù)雜指令集進(jìn)行必要的優(yōu)化。如X86指令轉(zhuǎn)換為TCG指令過于瑣碎,一條X86指令往往需要被生成5-6條,甚至更多的TCG指令。這與真實(shí)的X86體系結(jié)構(gòu)并不相符,借用PTLSim模擬器的譯碼器功能,由PTLSim模擬器包含的譯碼器生成的微指令代替了TCG指令。新的功能模擬模型可以模擬出更真實(shí)的X86體系結(jié)構(gòu)。針對(duì)復(fù)雜指令集特點(diǎn),擴(kuò)展模型需對(duì)時(shí)序模擬模型進(jìn)行一些調(diào)整。比如X86指令往往被拆分成多條微指令,而為了保證X86指令的原子性,這些微指令要么完全被提交,要么完全不對(duì)系統(tǒng)狀態(tài)產(chǎn)生影響,需要時(shí)序模擬模型提供額外的支持。在實(shí)現(xiàn)時(shí),我們根據(jù)微指令的PC值,識(shí)別出同屬于一條X86指令的微指令群,當(dāng)且僅當(dāng)這個(gè)微指令群中所有的微指令都可以提交時(shí),才提交所有這些微指令;如果其中一條微指令被清空,所有這些微指令都將被清空。

其次,時(shí)序模型的擴(kuò)展示例。當(dāng)前基于FPGA的時(shí)序模擬是模擬的主流。原有方法需要定制復(fù)雜的功能和時(shí)序模擬接口,從而導(dǎo)致工程量巨大?;诒痉椒?,可以對(duì)FPGA的時(shí)序模擬模型定制與本發(fā)明體系結(jié)構(gòu)無關(guān)的信息傳遞功能,完成該功能后,F(xiàn)PGA時(shí)序模擬器可以方便與不同功能模擬器進(jìn)行對(duì)接,如Pin和QEMU。

對(duì)于功能或時(shí)序模擬,這個(gè)擴(kuò)展工作總共包含了大約180行代碼。對(duì)于功能模擬部分,所有的工作由一個(gè)熟悉QEMU但是初次接觸GEMS的學(xué)生完成,總共花費(fèi)了兩個(gè)月的時(shí)間。與之前幾個(gè)花費(fèi)數(shù)個(gè)人年的擴(kuò)展工作相比,比如gem5和MARSS,本發(fā)明在擴(kuò)展新功能/時(shí)序模擬模型方面顯示了更高的效率。

實(shí)現(xiàn)二:多核全系統(tǒng)模擬器的并行加速

為了提高模擬多核處理器的速度,本發(fā)明可以進(jìn)一步采用并行執(zhí)行的方式來發(fā)揮主機(jī)平臺(tái)多(核)處理器的性能。參考圖1,本發(fā)明采用功能模擬模型與時(shí)序模擬模型松耦合的結(jié)構(gòu),在模擬過程中,功能模擬和時(shí)序模擬所需要的交互少,頻度低。因此,當(dāng)功能模擬和時(shí)序模擬并行化后,兩個(gè)并行模塊屬于松耦合的通信方式,從而比基于已有緊耦合模擬框架獲得更高的并行性能。

功能模擬模塊和時(shí)序模擬模塊并行后,兩個(gè)模塊并行執(zhí)行,并通過共享的指令緩存和內(nèi)存訪問表結(jié)構(gòu)進(jìn)行通信。功能模擬模塊對(duì)共享部分添加信息,而時(shí)序模擬模塊從共享緩沖中讀取信息,具體如參考圖6。執(zhí)行時(shí),為了避免兩個(gè)兩個(gè)模塊同時(shí)對(duì)共享內(nèi)存的一個(gè)單元進(jìn)行讀寫導(dǎo)致的模擬結(jié)果錯(cuò)誤,可在指令緩存和內(nèi)存訪問表結(jié)構(gòu)上添加互斥鎖機(jī)制,保證共享緩沖同一單元在一個(gè)時(shí)刻只能被一個(gè)模塊所訪問到。為了減少訪問的沖突,本發(fā)明可以細(xì)化互斥鎖的粒度,把互斥鎖作用到指令緩存和內(nèi)存訪問表結(jié)構(gòu)的每一個(gè)具體的條目上,這樣功能模擬模塊在往某一具體條目當(dāng)中記錄訪問信息的時(shí)候,時(shí)序模擬模塊還可以訪問其他條目中的信息,從而提高了并行性,降低了通信帶來的性能開銷。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永州市| 驻马店市| 庄河市| 维西| 绥阳县| 林州市| 翼城县| 河池市| 临颍县| 皮山县| 银川市| 奎屯市| 桐庐县| 呼伦贝尔市| 普安县| 库车县| 舟山市| 和田市| 鸡东县| 商洛市| 咸阳市| 化州市| 伊宁市| 建湖县| 白朗县| 庆元县| 滨海县| 万荣县| 乌兰察布市| 静海县| 磴口县| 梨树县| 阳原县| 新疆| 永年县| 定西市| 当阳市| 巴马| 无极县| 曲沃县| 博野县|