專利名稱:片上多核處理器時(shí)鐘精確并行仿真系統(tǒng)及仿真方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息處理系統(tǒng)處理器的仿真領(lǐng)域,具體的說是一種在共享存儲(chǔ)多處理
器機(jī)器平臺(tái)上時(shí)鐘精確的并行仿真片上多核處理器的技術(shù)。
背景技術(shù):
計(jì)算機(jī)體系結(jié)構(gòu)仿真器技術(shù)用軟件方法在體系結(jié)構(gòu)的層次從時(shí)間上仿真計(jì)算機(jī)系統(tǒng)的行為,是計(jì)算機(jī)體系結(jié)構(gòu)及軟件理論研究者所依賴的重要工具,在學(xué)術(shù)界和產(chǎn)業(yè)界有著廣泛的應(yīng)用。該類型仿真器早期主要的仿真對(duì)象是單處理器系統(tǒng),性能、靈活性、細(xì)節(jié)程度是衡量該類型仿真器的主要指標(biāo)。 隨著多核時(shí)代的來臨,該類型仿真器將仿真對(duì)象擴(kuò)展到了多核處理器系統(tǒng),然而傳統(tǒng)的單處理器串行仿真技術(shù)在應(yīng)用到多核系統(tǒng)仿真時(shí)遇到了性能瓶頸。串行仿真必須遍歷仿真每一個(gè)處理器核,并且系統(tǒng)后端的行為也隨著核數(shù)增加而更加復(fù)雜,這導(dǎo)致仿真器運(yùn)行時(shí)間隨著核數(shù)增加而超線性上升。當(dāng)仿真對(duì)象系統(tǒng)的規(guī)模達(dá)到上百乃至上千個(gè)核時(shí),仿真器的耗時(shí)程度將令使用者難以容忍。 多核處理器系統(tǒng)仿真器中各處理器核模塊存在內(nèi)在的并行性,因此使用并行仿真技術(shù)是提高性能的有效途徑之一。在共享存儲(chǔ)機(jī)器平臺(tái)上,使用多線程編程模型,多核仿真器可實(shí)現(xiàn)為一條線程仿真一塊或多塊處理器核,通過多條線程并行的執(zhí)行以加快仿真速度。但各處理器核模塊并不完全獨(dú)立,它們主要通過共享的二級(jí)高速緩存交換數(shù)據(jù),各條處理器核仿真線程必須保證彼此交換數(shù)據(jù)時(shí)不會(huì)出現(xiàn)因果邏輯錯(cuò)誤,即某線程收到其他線程
發(fā)送來的數(shù)據(jù)時(shí),本地時(shí)鐘不會(huì)前進(jìn)的太快以至于數(shù)據(jù)過時(shí)了。這一問題屬于離散事件并行仿真(PDES)的領(lǐng)域,解決方法主要有路障同步協(xié)議。 路障同步根據(jù)對(duì)象系統(tǒng)的特性尋找事件發(fā)生時(shí)間之間的前瞻量,通過設(shè)置路障確保任何兩個(gè)邏輯處理器之間的本地時(shí)間差保持在前瞻量范圍內(nèi),發(fā)送給其他邏輯處理器的事件必然在前瞻量之后的時(shí)間點(diǎn)發(fā)生,從而避免了因果邏輯錯(cuò)誤的產(chǎn)生。所謂前瞻量是某邏輯處理器產(chǎn)生的事件對(duì)其他邏輯處理器產(chǎn)生影響所需要經(jīng)過的最小時(shí)間。路障同步以前瞻量為周期把仿真時(shí)間劃分成了固定的同步間隔。在多核系統(tǒng)仿真中,前瞻量一般是二級(jí)高速緩存的訪問延遲,只有大約10個(gè)時(shí)鐘周期,這嚴(yán)重限制了仿真線程的并發(fā)程度。
路障同步技術(shù)把二級(jí)高速緩存延遲作為前瞻量,在更精細(xì)的系統(tǒng)模型中,這種前瞻量會(huì)引起因果邏輯錯(cuò)誤,其原因有兩個(gè)方面1、更精細(xì)的系統(tǒng)模型需要更細(xì)致的互連網(wǎng)絡(luò),互連網(wǎng)絡(luò)是數(shù)據(jù)的交流通道,同時(shí)受多個(gè)處理器核的影響,但其傳輸延遲只有一、二個(gè)時(shí)鐘周期,小于二級(jí)緩存的延遲,無法利用前瞻量并行化仿真;2、從低層高速緩存返回的反饋數(shù)據(jù)必須通過互連網(wǎng)絡(luò)傳輸給處理器核,受互連網(wǎng)絡(luò)串行仿真的限制,高速緩存一致性協(xié)議產(chǎn)生的返回事件仍然無法利用前瞻量。 另外,互連網(wǎng)絡(luò)承擔(dān)了繁重的數(shù)據(jù)傳輸任務(wù),如果完全串行化仿真,可能成為性能中的一個(gè)瓶頸。功能仿真子系統(tǒng)嵌入在系統(tǒng)前端仿真模塊中與之一起被并行化,這導(dǎo)致工作負(fù)載中共享變量的競爭性訪問,可能引起邏輯死鎖使得仿真器停止運(yùn)行。而且并行仿真器軟件存在大量的共享變量及動(dòng)態(tài)分配的變量。共享變量的并行寫會(huì)產(chǎn)生數(shù)據(jù)競爭;不同線程交叉分配動(dòng)態(tài)變量可能造成假共享,兩者都會(huì)嚴(yán)重降低仿真器的性能。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一種片上多核處理器時(shí)鐘精確并行仿真系統(tǒng),解決了現(xiàn)有技術(shù)中并行仿真器帶來的因果邏輯錯(cuò)誤、對(duì)共享變量的競爭性訪問導(dǎo)致的邏輯死鎖以及不同線程交叉分配動(dòng)態(tài)變量造成假共享等問題。 為了解決現(xiàn)有技術(shù)中的這些問題,本發(fā)明提供的技術(shù)方案是 —種片上多核處理器時(shí)鐘精確并行仿真系統(tǒng),包括初始化仿真系統(tǒng)的管理線程,所述管理線程根據(jù)仿真對(duì)象系統(tǒng)的核心數(shù)目或用戶指定的參數(shù)創(chuàng)建核線程,其特征在于所述管理線程接受核線程發(fā)送的訪問數(shù)據(jù)事件并設(shè)置作用于核線程的懸掛路障,當(dāng)最小本地時(shí)鐘的核線程到達(dá)預(yù)定時(shí)鐘周期未接受到數(shù)據(jù)時(shí),核線程移動(dòng)懸掛路障同步前進(jìn)形成滑動(dòng)仿真時(shí)間窗口。 優(yōu)選的,所述核線程仿真一個(gè)或多個(gè)處理器核及私有一級(jí)高速緩存、一級(jí)高速緩存到二級(jí)高速緩存的點(diǎn)對(duì)點(diǎn)連接通道,所述管理線程仿真二級(jí)高速緩存、主存、低層互連網(wǎng)絡(luò)。 優(yōu)選的,所述系統(tǒng)設(shè)置有相互分離的功能仿真模塊、時(shí)序仿真模塊,所述功能仿真模塊完成工作負(fù)載的功能性仿真并驅(qū)動(dòng)時(shí)序仿真模塊前進(jìn),所述時(shí)序仿真模塊完成工作負(fù)載在對(duì)象系統(tǒng)上運(yùn)行的性能仿真,記錄各種系統(tǒng)狀態(tài)。 優(yōu)選的,所述功能仿真模塊還包括工作負(fù)載存儲(chǔ)空間的共享變量訪問控制模塊,所述工作負(fù)載存儲(chǔ)空間的共享變量訪問控制模塊識(shí)別設(shè)置在工作負(fù)載源代碼的同步原語前后的注釋指令,并控制核線程互斥訪問同步原語間的共享變量。 本發(fā)明的另一目的在于提供一種片上多核處理器時(shí)鐘精確并行仿真方法,其特征
在于所述方法包括當(dāng)核線程發(fā)生二級(jí)高速緩存訪問請求時(shí),包括以下步驟 (1)管理線程為核線程創(chuàng)建一個(gè)帶有反饋數(shù)據(jù)預(yù)測返回時(shí)間戳的懸掛路障; (2)核線程的本地時(shí)鐘到達(dá)懸掛路障的時(shí)間戳卻沒有收到反饋數(shù)據(jù)時(shí),停止本地
時(shí)鐘的前進(jìn); (3)訪問請求必須由更低級(jí)高速緩存或遠(yuǎn)地高速緩存滿足時(shí),管理線程更新懸掛路障的時(shí)間戳為新的數(shù)據(jù)預(yù)測返回時(shí)間,核線程可繼續(xù)前進(jìn)到新的時(shí)間戳形成滑動(dòng)仿真時(shí)間窗口 ; (4)當(dāng)核線程收到反饋數(shù)據(jù)后,仿真器清除懸掛路障。 優(yōu)選的,所述方法中核線程仿真一個(gè)或多個(gè)處理器核及私有一級(jí)高速緩存、一級(jí)高速緩存到二級(jí)高速緩存的點(diǎn)對(duì)點(diǎn)連接通道,所述管理線程仿真二級(jí)高速緩存、主存、低層互連網(wǎng)絡(luò)。 優(yōu)選的,所述方法還包括通過線程局部存儲(chǔ)私有化全局變量消除數(shù)據(jù)競爭的步驟。 優(yōu)選的,所述方法還包括使用線程私有動(dòng)態(tài)空間分配庫分配動(dòng)態(tài)變量消除不同線程私有變量的交叉分配引起的假共享的步驟。 優(yōu)選的,所述方法還包括在工作負(fù)載源代碼的同步原語前后插入注釋指令,仿真
4模塊根據(jù)注釋指令識(shí)別出同步原語指令段,并控制核線程互斥訪問同步原語間的共享變 本發(fā)明的核心在于,管理線程與需要訪問二級(jí)高速緩存的核線程之間通過懸掛路 障同步消除可能產(chǎn)生的因果邏輯錯(cuò)誤,并通過滑動(dòng)仿真時(shí)間窗口降低懸掛路障的同步開 銷。另外,為提高仿真性能,本發(fā)明的多核仿真器使用功能仿真與時(shí)序仿真分離的策略,其 特點(diǎn)是功能仿真模塊完成工作負(fù)載的功能性仿真并驅(qū)動(dòng)時(shí)序仿真模塊前進(jìn),時(shí)序仿真模塊 完成工作負(fù)載在對(duì)象系統(tǒng)上運(yùn)行的性能仿真,記錄各種系統(tǒng)狀態(tài)。 本發(fā)明所實(shí)現(xiàn)的并行仿真器的整體架構(gòu)可以為在共享存儲(chǔ)機(jī)器平臺(tái)上使用多線 程編程模型搭建的多核處理器并行仿真器。所有仿真線程分為兩類處理器核線程與管理 線程,每條核線程仿真一塊或多塊處理器核及私有一級(jí)高速緩存并以本地時(shí)鐘前進(jìn),唯一 的管理線程仿真其他系統(tǒng)后端并以全局時(shí)鐘前進(jìn),全局時(shí)鐘與所有核線程中最慢的局部時(shí) 間保持一致。所有核線程通過管理線程交流信息,并使用基于路障同步技術(shù)的懸掛路障方 法保持線程間的同步,同步只發(fā)生在核線程與管理線程之間。應(yīng)理解,該仿真器架構(gòu)是本發(fā) 明的應(yīng)用實(shí)例而本發(fā)明不限于此實(shí)例的范圍,敘述該架構(gòu)是為了輔助說明下列技術(shù)方案。
本發(fā)明的懸掛路障同步方法以路障同步技術(shù)為基礎(chǔ),在同步周期內(nèi)插入作用于核 線程的路障以保證不會(huì)出現(xiàn)因果邏輯錯(cuò)誤,其步驟包括 A、當(dāng)某核線程發(fā)生二級(jí)高速緩存訪問請求時(shí),向管理線程發(fā)送相應(yīng)的事件,管理 線程接收到此事件將其放入調(diào)度堆中,并以預(yù)測的反饋數(shù)據(jù)返回時(shí)間為時(shí)間戳創(chuàng)建懸掛路 障。該次預(yù)測默認(rèn)訪問會(huì)命中,預(yù)測返回時(shí)間為全局時(shí)鐘加上二級(jí)高速緩存訪問延遲;
B、該源核線程的本地時(shí)鐘到達(dá)懸掛路障的時(shí)間戳卻沒有接收到反饋數(shù)據(jù)時(shí),停止 本地時(shí)鐘的前進(jìn); C、管理線程從調(diào)度堆中取出并處理事件,有兩種情況發(fā)生 Cl、發(fā)現(xiàn)該訪問命中時(shí),或接收到遠(yuǎn)地高速緩存的返回?cái)?shù)據(jù)時(shí),向源核線程發(fā)回返 回?cái)?shù)據(jù); C2、發(fā)現(xiàn)該訪問請求必須由更低級(jí)高速緩存或遠(yuǎn)地高速緩存滿足時(shí),產(chǎn)生新的訪 問請求,并預(yù)測新請求數(shù)據(jù)的返回時(shí)間,更新懸掛路障的時(shí)間戳為新的預(yù)測返回時(shí)間;
D、管理線程發(fā)現(xiàn)全局時(shí)鐘超過懸掛路障的時(shí)間戳?xí)r,更新懸掛路障的時(shí)間戳為全 局時(shí)鐘; E、源核線程發(fā)現(xiàn)懸掛路障更新,恢復(fù)仿真,繼續(xù)前進(jìn)直到本地時(shí)鐘到達(dá)新的時(shí)間 戳; F、源核線程收到返回?cái)?shù)據(jù)后,向管理線程發(fā)回確認(rèn)消息,管理線程清除懸掛路障; 這時(shí)源核線程可能已被阻塞,也可能未到達(dá)路障時(shí)間戳,無論何種情況,它都會(huì)繼續(xù)前進(jìn)。 由于源核線程收到返回?cái)?shù)據(jù)時(shí)本地時(shí)鐘不會(huì)超過其時(shí)間戳,不再存在因果邏輯錯(cuò)誤產(chǎn)生的 可能性。 由于互連網(wǎng)絡(luò)傳輸延遲過小,仿真器很難將單一網(wǎng)絡(luò)劃分給不同線程并行仿真,
但多核系統(tǒng)一般存在多層次的網(wǎng)絡(luò),其中有些網(wǎng)絡(luò)的通信活動(dòng)局部于相關(guān)處理器核,例如
一級(jí)高速緩存到二級(jí)高速緩存的點(diǎn)到點(diǎn)通道,本發(fā)明把這種通道劃分給相應(yīng)核線程,以提
高并行化程度;其他處理器核節(jié)點(diǎn)之間的互連網(wǎng)絡(luò)不再劃分,由管理線程線性仿真。 由于邏輯死鎖是由工作負(fù)載同步原語代碼中共享變量的并發(fā)訪問引起的,本發(fā)明通過在代碼中插入注釋指令保護(hù)共享變量,具體步驟如下 在測試程序同步原語代碼的前后插入注釋指令sync—start、 SynC_end,把源文 件編譯成可執(zhí)行文件;核線程仿真到sync—start指令后,功能仿真子系統(tǒng)訪問仿真對(duì)象工 作空間的變量前必須先獲得內(nèi)存鎖;核線程獲得內(nèi)存鎖后,訪問工作空間的變量,然后釋放 鎖;核線程仿真到sync—end指令后,可以直接訪問工作空間的變量,不再需要獲得鎖。
共享變量一般來源于全局變量,本發(fā)明使用編譯器支持的線程局部存儲(chǔ)(TLS)技 術(shù)私有化全局變量以消除數(shù)據(jù)競爭;但編譯期間的線程局部存儲(chǔ)技術(shù)無法定義動(dòng)態(tài)分配的 變量,本發(fā)明利用dlmalloc庫中的私有空間分配技術(shù),為每條線程創(chuàng)建一塊私有空間,線 程在私有空間中動(dòng)態(tài)分配變量,消除了交叉分配引起的假共享。
相對(duì)于現(xiàn)有技術(shù)中的方案,本發(fā)明的優(yōu)點(diǎn)是 本發(fā)明的多核處理器并行仿真系統(tǒng)經(jīng)仿真實(shí)驗(yàn)證實(shí),本系統(tǒng)提高多核處理器并行 仿真的精確度及仿真性能。
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述 圖1為本發(fā)明實(shí)施例多核處理器時(shí)鐘精確并行仿真對(duì)象系統(tǒng)的一種體系結(jié)構(gòu); 圖2為本發(fā)明實(shí)施例多核處理器時(shí)鐘精確并行仿真系統(tǒng)的一種實(shí)現(xiàn)架構(gòu); 圖3為現(xiàn)有技術(shù)中路障同步時(shí)細(xì)致互連網(wǎng)絡(luò)及高速緩存一致性協(xié)議的仿真過程; 圖4為本發(fā)明實(shí)施例懸掛路障同步的處理過程; 圖5為本發(fā)明實(shí)施例并行仿真器運(yùn)行多線程負(fù)載時(shí)的加速比結(jié)果; 圖6為本發(fā)明實(shí)施例并行仿真器運(yùn)行多線程負(fù)載時(shí)的擴(kuò)展性結(jié)果; 圖7為本發(fā)明實(shí)施例懸掛路障同步與路障同步仿真時(shí)間的比值。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例對(duì)上述方案做進(jìn)一步說明。應(yīng)理解,這些實(shí)施例是用于說明 本發(fā)明而不限于限制本發(fā)明的范圍。實(shí)施例中采用的實(shí)施條件可以根據(jù)具體廠家的條件做 進(jìn)一步調(diào)整,未注明的實(shí)施條件通常為常規(guī)實(shí)驗(yàn)中的條件。
實(shí)施例多核處理器時(shí)鐘精確并行仿真器的實(shí)現(xiàn)及性能測試 本實(shí)施例在使用POSIX多線程編程庫并行化Multi2sim-2. 1串行仿真器的基礎(chǔ)
上,實(shí)現(xiàn)了多核處理器時(shí)鐘精確并行仿真器。本實(shí)施例以主pthread線程作為管理線程初
始化仿真器,完成初始化后,管理線程根據(jù)仿真對(duì)象系統(tǒng)的核心數(shù)目及用戶指定的參數(shù)創(chuàng)
建多條子線程作為仿真核線程,所有線程并行執(zhí)行直到測試程序仿真結(jié)束。 本實(shí)施例仿真對(duì)象系統(tǒng)的體系結(jié)構(gòu)如圖1所示,仿真對(duì)象系統(tǒng)前端是X86超標(biāo)量
處理器模型,后端是部分共享的存儲(chǔ)結(jié)構(gòu)及全局共享的內(nèi)存控制器。 本實(shí)施例并行仿真器的總體架構(gòu)如圖2所示,每條核線程仿真一個(gè)或多個(gè)處理器 核及私有一級(jí)高速緩存、連接通道,管理線程仿真二級(jí)高速緩存、主存、低層互連網(wǎng)絡(luò)等其 他模塊。每條核線程擁有兩條無鎖隊(duì)列事件接受隊(duì)列與事件發(fā)送隊(duì)列,接受隊(duì)列實(shí)現(xiàn)管理 線程發(fā)送事件給核線程的機(jī)制,發(fā)送隊(duì)列實(shí)現(xiàn)核線程發(fā)送事件給管理線程的機(jī)制,核線程 與管理線程間通過懸掛路障方法同步。每條核線程按本地時(shí)鐘的節(jié)拍前進(jìn),在每個(gè)時(shí)鐘周期內(nèi)根據(jù)前端模塊的狀態(tài)決定功能仿真子系統(tǒng)完成零或多條指令的仿真,功能仿真促使處 理器流水線的更新,并產(chǎn)生LOAD、 STORE事件以驅(qū)動(dòng)后端運(yùn)轉(zhuǎn)。系統(tǒng)后端主要由管理線程 仿真,按全局時(shí)鐘的節(jié)拍前進(jìn),所有活動(dòng)由事件機(jī)制驅(qū)動(dòng)。系統(tǒng)后端在一定時(shí)鐘周期后完成 LOAD、 STORE的請求,把反饋數(shù)據(jù)返回給系統(tǒng)前端使其更新流水線狀態(tài)。仿真過程中,每條 核線程的本地時(shí)鐘受外層路障同步路障與內(nèi)層懸掛路障的共同控制,到達(dá)任何一個(gè)路障之 后將會(huì)被阻塞,全局時(shí)鐘保持與最慢核線程的本地時(shí)鐘一致,管理線程根據(jù)全局時(shí)鐘每周 期更新外層路障的時(shí)間戳,并可能更新內(nèi)層懸掛路障的時(shí)間戳。 圖3說明了路障同步協(xié)議在仿真細(xì)致的網(wǎng)絡(luò)模型及高速緩沖一致性協(xié)議時(shí)產(chǎn)生
因果邏輯錯(cuò)誤的一種情況。核線程二在同步周期K發(fā)生一級(jí)高速緩存缺失,產(chǎn)生二級(jí)高速
緩存訪問請求,經(jīng)過網(wǎng)絡(luò)通道的傳輸后,把訪問到達(dá)事件發(fā)送給管理線程,這里的網(wǎng)絡(luò)通道
是私有的,傳輸事件由核線程仿真;管理線程收到后把該事件放入到調(diào)度堆中,然后在全局
時(shí)鐘達(dá)到其時(shí)間戳?xí)r取出該事件處理,此時(shí)它發(fā)現(xiàn)二級(jí)高速緩存仍然缺失,于是產(chǎn)生三級(jí)
高速緩存訪問請求事件,該請求將等待二級(jí)緩存訪問延遲完成,在第K+l個(gè)同步周期被處
理,經(jīng)過網(wǎng)絡(luò)傳輸?shù)姆抡孢^程送到三級(jí)高速緩存;然后管理線程發(fā)現(xiàn)三級(jí)緩存訪問命中,產(chǎn)
生反饋數(shù)據(jù)傳輸事件,該圖假設(shè)三級(jí)高速緩存訪問延遲等于前瞻量,因此在第K+2個(gè)同步
周期,也就是三級(jí)高速緩存訪問完成后,反饋數(shù)據(jù)傳輸事件才會(huì)發(fā)生,此次及上一次的傳輸
網(wǎng)絡(luò)由于被多個(gè)處理器核共享只能被管理線程仿真;傳輸完成后,管理線程將向核線程二
發(fā)回?cái)?shù)據(jù)到達(dá)事件,由于在同一同步周期內(nèi)核線程前進(jìn)速度具有不確定性,核線程二的本
地時(shí)鐘在收到到達(dá)事件時(shí)可能已經(jīng)超過了事件的時(shí)間戳,從而違反了因果邏輯。 圖4說明了懸掛路障是如何阻止因果邏輯錯(cuò)誤在第K+2個(gè)同步周期產(chǎn)生的。當(dāng)管
理線程收到二級(jí)緩存訪問請求時(shí),為核線程二在第K+l個(gè)同步周期創(chuàng)建一個(gè)懸掛路障,由
于此后很快被更新,該懸掛路障暫時(shí)不會(huì)阻塞核線程二;隨后管理線程發(fā)現(xiàn)二級(jí)緩存訪問
缺失,需要訪問三級(jí)緩存,于是更新懸掛路障的時(shí)間戳,新的時(shí)間戳是原值加上三級(jí)緩存的
訪問延遲及預(yù)測的網(wǎng)絡(luò)傳輸延遲;其后可能還有數(shù)次更新;直到管理線程收到核線程二對(duì)
數(shù)據(jù)到達(dá)的事件的確認(rèn)消息,懸掛路障才會(huì)被撤銷。這個(gè)過程中核線程可能因?yàn)楸镜貢r(shí)鐘
到達(dá)了懸掛路障的時(shí)間戳而被阻塞。如果全局時(shí)鐘在某時(shí)刻到達(dá)了懸掛路障的時(shí)間戳,由
于全局時(shí)鐘是最慢的邏輯時(shí)鐘,核線程必定已經(jīng)被阻塞,為避免死鎖此時(shí)管理線程需要把
懸掛路障遞增一個(gè)時(shí)鐘周期。 需要說明的是,以上描述雖然未明顯提及高速緩存一致性協(xié)議,但所述過程中產(chǎn) 生的緩存訪問、反饋等事件均由高速緩存一致性協(xié)議控制,因此懸掛路障同步解決的是高 速緩存一致性協(xié)議中產(chǎn)生的仿真問題。 圖3、圖4也揭示了本實(shí)施例如何對(duì)網(wǎng)絡(luò)模塊進(jìn)行劃分。由于二級(jí)緩沖命中時(shí),沒
有低層網(wǎng)絡(luò)的傳輸事件,因此連接一級(jí)緩存與二級(jí)緩存的網(wǎng)絡(luò)一般會(huì)更加繁忙,把這部分
網(wǎng)絡(luò)通道劃分給各核線程將減輕管理線程的負(fù)擔(dān),有益于并行度的提高。 本實(shí)施例使用gcc支持的嵌入式匯編定義了兩個(gè)空操作的X86系統(tǒng)調(diào)用指令,并
在測試程序源代碼的barrier、 mutex等同步原語函數(shù)前后插入這兩個(gè)指令,功能仿真子系
統(tǒng)據(jù)此判斷是否到達(dá)或退出同步原語指令段。如下為避免功能仿真子系統(tǒng)邏輯死鎖的注釋
指令在本實(shí)施例中的一種實(shí)現(xiàn)方式。 同步開始的注釋指令
7
#define SYNC—BEGIN asm(" movl%0, %%eax\n\t〃 \ 〃 movl% 1, %%ebx\n\t〃 \ 〃 int$0x80\n\t〃 \ : /氺output氺/A :〃 r〃 (325), 〃 r〃 (0) /*input*/\ : 〃 % eax〃 , 〃 % ebx" \ ); 同步結(jié)束的注釋指令 #define SYNC_END asm(" movl%0, %%eax\n\t〃 \ 〃 movl% 1, %%ebx\n\t〃 \ 〃 int$0x80\n\t〃 \ : /氺output氺/A :" r" (326), " r" (0) /*input*/ \ : 〃 % eax〃 , 〃 % ebx" \ ); 注釋指令插入到同步原語前后可以如下 Define (BARRIER,— SYNC_BEGIN pthread_barrier_wait(&($l)); SYNC_END ') 本實(shí)施例以dlmalloc庫所支持mspace_calloc、mspace_realloc等函數(shù)代替了 C 標(biāo)準(zhǔn)庫中的calloc、 realloc等分配函數(shù),在核線程初始化之前為每條核線程分配了一塊 私有空間,私有空間的粒度為64K,每次私有空間被消耗完之后,dlmalloc庫自動(dòng)為其擴(kuò)張 64K的空間;核線程初始化及運(yùn)行過程中所有動(dòng)態(tài)變量的分配都必須指定私有空間,從私 有空間內(nèi)獲取存儲(chǔ)塊。私有空間的相互隔離基本消除了假共享現(xiàn)象。 如下給出了本實(shí)施例如何使用線程私有空間動(dòng)態(tài)分配變量的一種實(shí)施方式 for(i = 0 ;i < host_threads_l ;i++)
private—space[i] = create—mspace(0,0); ...... for(i = 0 ;i < host_threads ;i++) { event_procs[i] = mspace—calloc (private—space [i] , 1, sizeof (struct list—t));
list—create (private—space [i] , event—procs [i] , 10); heap—create (private—space [i] , 20, event—he即[i]); r印os—create (private—space [i] , sizeof (struct event_t) , 〃 event—r印os〃 , event—r印os[i]); host—thd[i]. self. event_out_q. pool = mspace—calloc (private—space [i] , eq_len, sizeof (eq_entry));
host—thd[i]. mnger. event_in_q. pool = mspace—calloc (private—space [i] , eq_len, sizeogf (eq_entry));
} 實(shí)驗(yàn)環(huán)境及實(shí)驗(yàn)結(jié)果本實(shí)施例所用的服務(wù)器是曙光天演EP850-GF小型機(jī), 該小型機(jī)具體配置如下8顆4核AMD Opteron 83461. 8G HE CPU,32G DDR2ECC內(nèi)存, 4* 146G SAS硬盤。該服務(wù)器運(yùn)行的操作系統(tǒng)是Li皿xDebain(X86-64)。實(shí)驗(yàn)以一條核 線程仿真兩塊前端模塊,工作負(fù)載為Splash2多線程測試集中的8個(gè)代表性程序FFT、 LU-麗-contig麗s、 LU-contig麗s、 RADIX、 CH0LESKY、 WATER-spatial、 WATER-nsquared、 0CEAN-contiguous。圖5給出了該仿真器運(yùn)行上述工作負(fù)載時(shí)相對(duì)于串行仿真器的加速 比,可以看出,該仿真器達(dá)到了較高的加速比,創(chuàng)建4條核線程仿真時(shí)達(dá)到平均3. 48的加速 比,創(chuàng)建8條核線程仿真時(shí)達(dá)到平均5. 63倍的加速比,創(chuàng)建16條核線程仿真時(shí)達(dá)到平均 8. 66倍的加速比。但平均加速比掩蓋了測試程序之間的差異,不能以此衡量仿真器的擴(kuò)展 性。從圖6每項(xiàng)測試程序在不同核線程數(shù)下的加速比折線可以看出,單項(xiàng)測試程序隨著核 線程增加時(shí)表現(xiàn)出合理的擴(kuò)展性。 圖7給出了使用懸掛路障同步的仿真器相對(duì)于使用純粹路障同步機(jī)制的仿真器 仿真時(shí)間的比值,可以看出,懸掛路障同步并沒有明顯降低路障同步技術(shù)的性能,兩者表現(xiàn) 出的差異是由并行仿真內(nèi)在的不確性形成的。 綜上所述,本實(shí)施例說明本發(fā)明能夠有效解決多核處理器系統(tǒng)并行仿真中細(xì)致互 連網(wǎng)絡(luò)及高速緩存一致性協(xié)議的仿真問題,并保持了較高的性能與合理的擴(kuò)展性。
上述實(shí)例只為說明本發(fā)明的技術(shù)構(gòu)思及特點(diǎn),其目的在于讓熟悉此項(xiàng)技術(shù)的人是 能夠了解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,并不能以此限制本發(fā)明的保護(hù)范圍。凡根據(jù)本發(fā)明精
神實(shí)質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種片上多核處理器時(shí)鐘精確并行仿真系統(tǒng),包括初始化仿真系統(tǒng)的管理線程,所述管理線程根據(jù)仿真對(duì)象系統(tǒng)的核心數(shù)目或用戶指定的參數(shù)創(chuàng)建核線程,其特征在于所述管理線程接受核線程發(fā)送的訪問數(shù)據(jù)事件并設(shè)置作用于核線程的懸掛路障,當(dāng)最小本地時(shí)鐘的核線程到達(dá)預(yù)定時(shí)鐘周期未接受到數(shù)據(jù)時(shí),核線程移動(dòng)懸掛路障同步前進(jìn)形成滑動(dòng)仿真時(shí)間窗口。
2. 根據(jù)權(quán)利要求1所述的片上多核處理器時(shí)鐘精確并行仿真系統(tǒng),其特征在于所述核線程仿真一個(gè)或多個(gè)處理器核及私有一級(jí)高速緩存、一級(jí)高速緩存到二級(jí)高速緩存的點(diǎn)對(duì)點(diǎn)連接通道,所述管理線程仿真二級(jí)高速緩存、主存、低層互連網(wǎng)絡(luò)。
3. 根據(jù)權(quán)利要求1所述的片上多核處理器時(shí)鐘精確并行仿真系統(tǒng),其特征在于所述系統(tǒng)設(shè)置有相互分離的功能仿真模塊、時(shí)序仿真模塊,所述功能仿真模塊完成工作負(fù)載的功能性仿真并驅(qū)動(dòng)時(shí)序仿真模塊前進(jìn),所述時(shí)序仿真模塊完成工作負(fù)載在對(duì)象系統(tǒng)上運(yùn)行的性能仿真,記錄各種系統(tǒng)狀態(tài)。
4. 根據(jù)權(quán)利要求3所述的片上多核處理器時(shí)鐘精確并行仿真系統(tǒng),其特征在于所述功能仿真模塊還包括工作負(fù)載存儲(chǔ)空間的共享變量訪問控制模塊,所述工作負(fù)載存儲(chǔ)空間的共享變量訪問控制模塊識(shí)別設(shè)置在工作負(fù)載源代碼的同步原語前后的注釋指令,并控制核線程互斥訪問同步原語間的共享變量。
5. —種片上多核處理器時(shí)鐘精確并行仿真方法,其特征在于所述方法包括當(dāng)核線程發(fā)生二級(jí)高速緩存訪問請求時(shí),包括以下步驟(1) 管理線程為核線程創(chuàng)建一個(gè)帶有反饋數(shù)據(jù)預(yù)測返回時(shí)間戳的懸掛路障;(2) 核線程的本地時(shí)鐘到達(dá)懸掛路障的時(shí)間戳卻沒有收到反饋數(shù)據(jù)時(shí),停止本地時(shí)鐘的前進(jìn);(3) 訪問請求必須由更低級(jí)高速緩存或遠(yuǎn)地高速緩存滿足時(shí),管理線程更新懸掛路障的時(shí)間戳為新的數(shù)據(jù)預(yù)測返回時(shí)間,核線程可繼續(xù)前進(jìn)到新的時(shí)間戳形成滑動(dòng)仿真時(shí)間窗□;(4) 當(dāng)核線程收到反饋數(shù)據(jù)后,仿真器清除懸掛路障。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于所述方法中核線程仿真一個(gè)或多個(gè)處理器核及私有一級(jí)高速緩存、一級(jí)高速緩存到二級(jí)高速緩存的點(diǎn)對(duì)點(diǎn)連接通道,所述管理線程仿真二級(jí)高速緩存、主存、低層互連網(wǎng)絡(luò)。
7. 根據(jù)權(quán)利要求5所述的方法,其特征在于所述方法還包括通過線程局部存儲(chǔ)私有化全局變量消除數(shù)據(jù)競爭的步驟。
8. 根據(jù)權(quán)利要求5所述的方法,其特征在于所述方法還包括使用線程私有動(dòng)態(tài)空間分配庫分配動(dòng)態(tài)變量消除不同線程私有變量的交叉分配引起的假共享的步驟。
全文摘要
本發(fā)明公開了一種片上多核處理器時(shí)鐘精確并行仿真系統(tǒng)及其方法,所述系統(tǒng)包括初始化仿真系統(tǒng)的管理線程,所述管理線程根據(jù)仿真對(duì)象系統(tǒng)的核心數(shù)目或用戶指定的參數(shù)創(chuàng)建核線程,其特征在于所述管理線程接受核線程發(fā)送的訪問數(shù)據(jù)事件并設(shè)置作用于核線程的懸掛路障,當(dāng)最小本地時(shí)鐘的核線程到達(dá)預(yù)定時(shí)鐘周期未接受到數(shù)據(jù)時(shí),核線程移動(dòng)懸掛路障同步前進(jìn)形成滑動(dòng)仿真時(shí)間窗口。經(jīng)仿真實(shí)驗(yàn)證實(shí),本系統(tǒng)大大提高了多核處理器并行仿真的精確度及仿真性能。
文檔編號(hào)G06F9/455GK101788919SQ201010104449
公開日2010年7月28日 申請日期2010年1月29日 優(yōu)先權(quán)日2010年1月29日
發(fā)明者吳俊敏, 唐軼軒, 尹巍, 朱小東, 趙小雨, 隋秀峰 申請人:中國科學(xué)技術(shù)大學(xué)蘇州研究院