摘要:?jiǎn)尉€程性能是處理器設(shè)計(jì)中需要考慮的重要因素.基于T2設(shè)計(jì)并實(shí)現(xiàn)了單線程雙發(fā)射結(jié)構(gòu),以開(kāi)發(fā)單線程的指令級(jí)并行、提高單線程性能;并對(duì)此結(jié)構(gòu)搭建了完備的驗(yàn)證平臺(tái),通過(guò)加速比對(duì)改善前后的兩種結(jié)構(gòu)進(jìn)行了性能評(píng)估,評(píng)估結(jié)果表明,本文設(shè)計(jì)并實(shí)現(xiàn)的單線程雙發(fā)射結(jié)構(gòu)能夠有效提高單線程的性能.
關(guān)鍵詞:微處理器;單線程性能;指令級(jí)并行;雙發(fā)射;性能評(píng)估
中圖分類號(hào):TP332 文獻(xiàn)標(biāo)識(shí)碼:A
Design and Implementation of Multi-thread
Processor's Instruction Dual-issue Structure
ZHU Cheng-bo, SUN Cai-xia, WANG Yong-wen
(College of Computer, National Univ of Defense Technology, Changsha, Hunan 410073, China)
Abstract: The performance of the single thread is an important element in the processor design. In this paper, multi-thread dual-issue structure in T2 was modified to support single-thread dual-issue, which would improve the performance of a single thread. The results show that the designed structure achieves the expected functions, and is able to improve the performance of a single thread.
Key words: microprocessor chips; performance of a single thread; instruction level parallelism; dual-issue; performance evaluation
目前的主流高性能微處理器大多是在開(kāi)發(fā)指令級(jí)并行性的同時(shí)開(kāi)發(fā)線程級(jí)并行,如IBM 公司的BlueGene PowerPC A2處理器[1]采用4線程雙發(fā)射體系結(jié)構(gòu),POWER7處理器[2]采用4線程6發(fā)射體系結(jié)構(gòu),Sun公司的SPARC T4處理器[3]采用8線程雙發(fā)射體系結(jié)構(gòu).這樣的微體系結(jié)構(gòu)能夠提高處理器的實(shí)用效率.另外通過(guò)實(shí)現(xiàn)多發(fā)射開(kāi)發(fā)指令級(jí)并行,在單線程性能上也有很大的提升.
T2微處理器核采用多線程體系結(jié)構(gòu),硬件支持8個(gè)線程[4].其總體結(jié)構(gòu)如圖1所示.其中IFU為取指部件;EXU0和EXU1為兩個(gè)整數(shù)運(yùn)算部件,執(zhí)行除了整數(shù)乘除法外的所有整數(shù)運(yùn)算;FGU為浮點(diǎn)運(yùn)算部件,執(zhí)行所有的浮點(diǎn)運(yùn)算和整數(shù)乘除法;LSU為訪存部件,執(zhí)行所有的load和store操作;TLU為中斷和異常處理部件;MMU為存儲(chǔ)管理部件;Gasket為接口部件;IRF0和IRF1為整數(shù)寄存器文件,F(xiàn)RF為浮點(diǎn)寄存器文件.
T2中,8個(gè)線程分為兩組,線程組內(nèi)使用細(xì)粒度多線程,線程組間采用同時(shí)多線程,單周期每個(gè)線程組挑選一個(gè)線程發(fā)射一條指令,即單線程單發(fā)射執(zhí)行.雖然T2的整體性能和其他主流處理器相當(dāng),但是單線程性能低.圖2給出了T2和Xeon微處理器[5]在單線程環(huán)境下運(yùn)行串行程序的響應(yīng)時(shí)間, T2的響應(yīng)時(shí)間是Xeon的幾十倍.
為了提高T2的單線程性能,本文對(duì)其多線程雙發(fā)射結(jié)構(gòu)進(jìn)行了改造,使其支持單線程雙發(fā)射,以開(kāi)發(fā)指令級(jí)并行.在搭建的軟件模擬平臺(tái)上對(duì)單線程雙發(fā)射結(jié)構(gòu)進(jìn)行了性能評(píng)估.結(jié)果表明,設(shè)計(jì)并實(shí)現(xiàn)的單線程雙發(fā)射結(jié)構(gòu)能有效提高單線程的性能.
1 指令雙發(fā)射的結(jié)構(gòu)設(shè)計(jì)
圖3所示為指令雙發(fā)射結(jié)構(gòu)圖.雙發(fā)射結(jié)構(gòu)從指令buffer開(kāi)始到指令執(zhí)行部件結(jié)束,覆蓋流水線的P站和D站,其中發(fā)射單元覆蓋P站,譯碼單元覆蓋D站.
1.1 發(fā)射單元的設(shè)計(jì)
圖4所示為發(fā)射單元結(jié)構(gòu)圖.發(fā)射單元覆蓋功能流水線的P站,從指令buffer開(kāi)始到譯碼單元結(jié)束.發(fā)射單元的設(shè)計(jì)包括兩線程組TG0和TG1的線程組內(nèi)調(diào)度策略、兩線程組間調(diào)度策略、譯碼部件、指令控制部件的設(shè)計(jì)[6].通過(guò)線程組內(nèi)調(diào)度策略在TG0和TG1中各挑選一個(gè)線程,然后再通過(guò)線程組間調(diào)度策略選擇TG0或TG1中的一個(gè)線程組發(fā)射兩條指令,或選擇TG0和TG1中的一個(gè)線程各發(fā)射一條指令,最后通過(guò)指令控制部件決定指令能否發(fā)射.
1.1.1 線程組內(nèi)調(diào)度策略
線程組內(nèi)使用細(xì)粒度多線程調(diào)度策略[7],從每個(gè)線程組處于準(zhǔn)備狀態(tài)的線程中挑選一個(gè)線程.TG0和TG1的挑選過(guò)程是完全獨(dú)立的,采用LRP(Least Recently Picked)算法實(shí)現(xiàn)[8],以TG0實(shí)現(xiàn)LRP算法為例,如表1所示.其中pick0, pick1, pick2和pick3分別代表挑選了0, 1, 2和3線程,使用1個(gè)8位的lrp值來(lái)表示LRP狀態(tài),每?jī)晌槐硎?個(gè)線程,lrp[1:0]的值表示的是剛剛挑選過(guò)的線程,lrp[3:2]次之,lrp[7:6]的值表示的是最久沒(méi)有被挑選的線程.lrp的初值為“00011011”,則第一次pick0,相應(yīng)的lrp的值變?yōu)椤?1101100”,第二次pick1,那么lrp的值變成“10110001”,第三次pick2,lrp的值變成“11000110”,第四次pick3,lrp的值變成“00011011”.
1.1.2 線程組間調(diào)度策略
圖5所示為線程組間調(diào)度策略[9],根據(jù)線程發(fā)射指令的類型,線程組間采用同時(shí)多線程和細(xì)粒度多線程兩種調(diào)度策略.線程發(fā)射的兩條指令I(lǐng)0和I1,只有一條指令可以發(fā)射時(shí),采用同時(shí)多線程調(diào)度策略,否則采用細(xì)粒度多線程調(diào)度策略.
1.1.3 譯碼部件
發(fā)射單元中的譯碼部件只是對(duì)指令進(jìn)行簡(jiǎn)單譯碼,包括指令類型、寄存器地址、源操作數(shù)、目的操作數(shù)等.其中指令類型用于判斷兩條指令能否同時(shí)發(fā)射,由此可以決定兩個(gè)線程組間采用哪種調(diào)度策略,另外譯碼出來(lái)的信息還用于指令控制部件進(jìn)行相關(guān)性檢測(cè).
1.1.4 指令控制部件
指令控制部件的設(shè)計(jì)包括數(shù)據(jù)相關(guān)和控制相關(guān).數(shù)據(jù)相關(guān)解決指令間的RAW相關(guān)和WAW相關(guān)問(wèn)題,控制相關(guān)解決以下幾種問(wèn)題:
1)雙發(fā)射的任何一條指令為可在前瞻模式下執(zhí)行訪存指令、條件分支指令、產(chǎn)生浮點(diǎn)結(jié)果的浮點(diǎn)指令,無(wú)論后面是什么指令,該線程都不能再發(fā)射指令,而直接進(jìn)入前瞻不使能等待狀態(tài),直到指令執(zhí)行完畢或者被清除.
2)雙發(fā)射的兩條指令只要有一條為讀寫浮點(diǎn)狀態(tài)寄存器指令、讀/寫特權(quán)級(jí)寄存器指令、FGU執(zhí)行的整數(shù)指令、無(wú)條件分支跳轉(zhuǎn)指令,線程立即進(jìn)入后同步等待狀態(tài),只有當(dāng)?shù)却臈l件得到滿足,即指令完成或者被清除,線程的狀態(tài)才由等待狀態(tài)變成準(zhǔn)備狀態(tài),才可以繼續(xù)發(fā)射后續(xù)指令.
3)雙發(fā)射的任何一條指令為除法指令,線程直接進(jìn)入除法等待狀態(tài),直到FGU給出除法指令完成信號(hào).
4)對(duì)于發(fā)生數(shù)據(jù)Cache失效的load指令,LSU會(huì)向發(fā)射單元發(fā)出LSU同步信號(hào),導(dǎo)致線程進(jìn)入LSU同步等待狀態(tài),直到LSU給出完成信號(hào)線程才取消等待狀態(tài)變?yōu)闇?zhǔn)備狀態(tài),可以發(fā)射后續(xù)指令.
1.2 譯碼單元的設(shè)計(jì)
圖6所示為譯碼單元結(jié)構(gòu)圖.譯碼單元覆蓋功能流水線的D站,從發(fā)射單元開(kāi)始到指令執(zhí)行部件結(jié)束.
圖6中Decode0和Decode1分別為譯碼單元的兩個(gè)譯碼部件.若發(fā)射單元選擇TG0雙發(fā)射兩條指令,I0到Decode0中譯碼,I1到Decode1中譯碼;若選擇TG1雙發(fā)射兩條指令,I0到Decode1中譯碼,I1到Decode0中譯碼;若發(fā)射單元在TG0和TG1中各挑選一個(gè)線程發(fā)射一條指令,TG0到Decode0中譯碼,TG1到Decode1中譯碼.由Decode0譯碼后的指令發(fā)送到整數(shù)運(yùn)算單元EXU0,由Decode1譯碼后的指令發(fā)送到整數(shù)運(yùn)算單元EXU1,訪存單元LSU和浮點(diǎn)運(yùn)算單元FGU被共享.
由于只有一個(gè)LSU部件和一個(gè)FGU部件,所以不管哪個(gè)線程組發(fā)射指令,只要P站發(fā)射的兩條指令I(lǐng)0和I1為兩條LSU指令或兩條FGU指令,就會(huì)產(chǎn)生資源相關(guān),這種資源相關(guān)由譯碼單元解決[10].
表2所示為通過(guò)“favor”位來(lái)實(shí)現(xiàn)兩條需要同時(shí)訪問(wèn)相同功能部件指令的資源相關(guān)解決方案[11].以TG0為例,當(dāng)TG0中的一個(gè)線程發(fā)射的兩條均要訪問(wèn)LSU部件的指令I(lǐng)0和I1到達(dá)D站后,存在LSU-LSU資源相關(guān).由于I0在譯碼單元0中譯碼,I1在譯碼單元1中譯碼,lsu0_d_0和lsu1_d_1的邏輯值均為“1”,且I0和I1是只訪問(wèn)LSU部件的指令,所以fgu0_d_0和fgu1_d_1的邏輯值均為“0”,此時(shí)若lfavor為“0”,I0進(jìn)行譯碼,I1停止譯碼,lfavor置“1”;若lfavor為“1”,I1進(jìn)行譯碼,I0停止譯碼,lfavor置“0”,這里只有遇到相關(guān)時(shí)才更新“l(fā)favor”位.
FGU-FGU資源相關(guān)處理與LSU-LSU資源相關(guān)相同,只是使用了不同的“favor”位,F(xiàn)GU-FGU資源相關(guān)使用“ffavor”位.
當(dāng)TG0中的一個(gè)線程發(fā)射的兩條同時(shí)需要占用FGU和LSU兩個(gè)部件的指令I(lǐng)0和I1到達(dá)D站后,存在StoreFGU-StoreFGU相關(guān).StoreFGU-StoreFGU相關(guān)的優(yōu)先級(jí)總是大于LSU-LSU相關(guān)和FGU-FGU相關(guān)的優(yōu)先級(jí),避免LSU的favor狀態(tài)不是同一個(gè)線程發(fā)射的兩條指令時(shí)發(fā)生死鎖[12].通過(guò)“sffavor”來(lái)實(shí)現(xiàn)兩條同時(shí)需要占用FGU和LSU部件的指令輪流譯碼,這樣就解決了StoreFGU-StoreFGU資源相關(guān).
2 性能評(píng)估
2.1 驗(yàn)證平臺(tái)
本文采用基于仿真驗(yàn)證中軟件仿真的驗(yàn)證方法.仿真工具使用Cadence公司的NC_Verilog模擬器.圖7所示為雙發(fā)射結(jié)構(gòu)的功能驗(yàn)證方案示意圖,將測(cè)試程序通過(guò)編譯器反匯編成指令編碼序列,加載到為雙發(fā)射結(jié)構(gòu)所設(shè)計(jì)的取指單元模型中,將雙發(fā)射結(jié)構(gòu)和取指單元模型作為頂層模塊,編寫TestBench,通過(guò)NC_Verilog模擬器進(jìn)行仿真.[13].
圖8所示為取指單元模型示意圖,包括匯編指令編碼序列生成單元、實(shí)際指令編碼序列生成單元、兩個(gè)指令緩沖隊(duì)列和一個(gè)比較器.匯編指令序列生成單元生成與匯編指令相對(duì)應(yīng)的指令編碼序列、PC序列放入指令緩沖隊(duì)列1中.實(shí)際指令序列生成單元生成指令實(shí)際執(zhí)行的序列和每條指令對(duì)應(yīng)的RPC序列放入指令緩沖隊(duì)列2中.
雙發(fā)射的兩條指令在發(fā)射之前要依次通過(guò)比較器比較PC值和RPC值是否相等,若相等,NPC=PC+4;若不相等,NPC=RPC.最后,通過(guò)NPC的值找到指令緩沖隊(duì)列1中對(duì)應(yīng)的指令編碼作為指令發(fā)射單元的輸入.
圖9所示為匯編指令編碼序列生成單元流程圖,首先通過(guò)編譯器進(jìn)行匯編測(cè)試激勵(lì)的反匯編,生成diag.s文件,文件中包含由32位指令編碼組成的指令編碼序列和與每條指令相對(duì)應(yīng)的32位PC序列.這里只是把匯編指令轉(zhuǎn)化成相應(yīng)的指令編碼,并不是生成實(shí)際的指令執(zhí)行序列,所以這里的PC值都是以4為單位遞增的,即下一條指令的PC值NPC=PC+4.最后將32位PC序列和32位指令編碼序列合并,PC序列作為高32位,指令編碼作為低32位,加載到取值單元模型的64位指令緩沖隊(duì)列中.
實(shí)際指令編碼序列是通過(guò)將匯編測(cè)試激勵(lì)加載到T2微處理器的核級(jí)驗(yàn)證環(huán)境中生成的.T2微處理器的核級(jí)驗(yàn)證環(huán)境如圖10所示,由測(cè)試激勵(lì)生成模塊、監(jiān)控模塊、存儲(chǔ)模塊三部分組成.測(cè)試激勵(lì)生成模塊通過(guò)編譯腳本來(lái)進(jìn)行匯編激勵(lì)代碼的匯編,產(chǎn)生可執(zhí)行存儲(chǔ)映像文件、符號(hào)表等;存儲(chǔ)模塊的功能為測(cè)試激勵(lì)加載;監(jiān)控模塊監(jiān)控不同時(shí)間點(diǎn)的PC值、指令類型等信息.
將匯編測(cè)試激勵(lì)加載到T2微處理器的核級(jí)驗(yàn)證后,生成sims.log文件.此文件是仿真過(guò)程的運(yùn)行記錄,包括各個(gè)線程不同時(shí)機(jī)的RPC和對(duì)應(yīng)的指令編碼等執(zhí)行信息.由于是實(shí)際指令的執(zhí)行序列,所以在沒(méi)有遇到分支指令時(shí),下一條指令的PC值NRPC為當(dāng)前指令的PC值RPC加4(NRPC=RPC+4),當(dāng)指令序列中的某條指令為分支指令時(shí),如果分支跳轉(zhuǎn)失敗,NRPC= RPC+4;如果分支指令跳轉(zhuǎn)成功,NRPC為成功跳轉(zhuǎn)處的地址.
2.2 性能評(píng)估方案
圖11為性能評(píng)估方案示意圖,將匯編測(cè)試程序通過(guò)編譯器反匯編生成指令編碼,然后將指令編碼分別加載到為雙發(fā)射結(jié)構(gòu)和單發(fā)射結(jié)構(gòu)所設(shè)計(jì)的指令緩沖隊(duì)列中,編寫兩種結(jié)構(gòu)的TestBench,通過(guò)NC_Verilog模擬器進(jìn)行仿真,得到兩種結(jié)構(gòu)的響應(yīng)時(shí)間t1和t2,代入Amdahl定律的部件加速比公式:
通過(guò)公式計(jì)算雙發(fā)射結(jié)構(gòu)所獲得的性能的提高[14].
測(cè)試程序選擇T2微處理器的單線程匯編測(cè)試程序.性能評(píng)估的最終目標(biāo)是驗(yàn)證單線程性能是否提高,所以所選的測(cè)試程序均為單線程測(cè)試程序[15].
3 性能評(píng)估結(jié)果分析
使用T2處理器Sims環(huán)境下的單線程測(cè)試程序進(jìn)行性能評(píng)估.在前瞻使能和不使能兩種情況下,將所有測(cè)試程序在單發(fā)射和雙發(fā)射兩種結(jié)構(gòu)的單線程環(huán)境下運(yùn)行,分別得到兩種結(jié)構(gòu)的響應(yīng)時(shí)間,代入加速比公式,通過(guò)加速比來(lái)評(píng)估性能是否提升[16].
在性能評(píng)估過(guò)程中NC-Verilog模擬器時(shí)鐘頻率設(shè)置為1 ns.
3.1 前瞻使能
表3所示為前瞻使能情況下,優(yōu)化前后的兩種結(jié)構(gòu)運(yùn)行串行程序的加速比,由表3可以得到以下結(jié)論.
1)所有測(cè)試程序的加速比均大于1,說(shuō)明雙發(fā)射與單發(fā)射結(jié)構(gòu)相比,單線程性能有所提升.
2)測(cè)試程序7和9的加速比相對(duì)較大,因?yàn)檫@兩個(gè)測(cè)試程序的指令大部分為EXU執(zhí)行的指令.由于有兩個(gè)EXU,雙發(fā)射兩條整數(shù)運(yùn)算類指令不會(huì)存在資源相關(guān),可以實(shí)現(xiàn)每個(gè)周期的指令雙發(fā)射,與單發(fā)射結(jié)構(gòu)相比,性能會(huì)有很大的提升.
3)測(cè)試程序10和15的加速比相對(duì)較小,因?yàn)檫@兩個(gè)測(cè)試程序的大部分指令為除法指令.雙發(fā)射結(jié)構(gòu)中,若I0作為除法指令發(fā)射后,本線程都會(huì)進(jìn)入除法指令等待狀態(tài),不能發(fā)射后續(xù)指令,與單發(fā)射結(jié)構(gòu)相比,性能相當(dāng);若I1作為除法指令發(fā)射后,雙發(fā)射的I0指令只要不為FGU執(zhí)行的指令,還是可以發(fā)射的,若I0為FGU執(zhí)行的指令,由于只有一個(gè)FGU功能部件,I0和I1在譯碼站會(huì)存在資源相關(guān).因此,只有I1為除法指令發(fā)射時(shí),雙發(fā)射的結(jié)構(gòu)在性能上才會(huì)有所提升,所以程序加速比和7,9相比較小.
4)測(cè)試程序11,13,14的加速比相對(duì)較小,因?yàn)檫@幾個(gè)測(cè)試程序大部分指令為不包括除法的運(yùn)算類指令.雙發(fā)射結(jié)構(gòu)中兩條運(yùn)算類指令一起發(fā)射時(shí)會(huì)在譯碼站造成資源相關(guān),結(jié)果是停止取指一個(gè)周期,因此與單發(fā)射結(jié)構(gòu)相比,性能上不會(huì)有很大提升.
5)測(cè)試程序1和2的加速比相對(duì)較小,因?yàn)檫@兩個(gè)測(cè)試程序大部分指令為訪存類指令.雙發(fā)射結(jié)構(gòu)只有一個(gè)LSU單元,當(dāng)雙發(fā)射的兩條指令均為訪存類指令時(shí),會(huì)造成資源相關(guān).
6)程序3,4,19,20的加速比相對(duì)較小,因?yàn)檫@幾個(gè)測(cè)試程序大部分指令為后同步指令.雙發(fā)射結(jié)構(gòu)中,若I0作為后同步指令發(fā)射后,本線程都會(huì)進(jìn)入后同步指令等待狀態(tài),不能發(fā)射后續(xù)指令,與單發(fā)射結(jié)構(gòu)相比,性能上不會(huì)有提升;若I1作為后同步指令發(fā)射后,I0是可以發(fā)射出去的.因此,只有I1為后同步指令發(fā)射時(shí),程序的加速比才會(huì)比較大.
3.2 前瞻不使能
表4所示為前瞻不使能情況下,優(yōu)化前后的兩種結(jié)構(gòu)運(yùn)行串行程序的加速比.
4.3 兩種情況下的加速比對(duì)比
圖12所示為前瞻使能和不使能兩種情況下的加速比對(duì)比圖,由圖可以明顯看出前瞻使能和不使能兩種情況下,測(cè)試程序的加速比不同,可以得到以下結(jié)論:
1)所有測(cè)試程序在前瞻不使能模式下的加速比與前瞻使能相比減小了.
2)測(cè)試程序11和13在兩種模式下執(zhí)行的加速比差別相對(duì)較大.因?yàn)檫@兩個(gè)測(cè)試程序大部分指令為產(chǎn)生浮點(diǎn)結(jié)果的浮點(diǎn)指令,前瞻不使能情況下,發(fā)射產(chǎn)生浮點(diǎn)結(jié)果的浮點(diǎn)指令、訪存指令、分支指令后,進(jìn)入前瞻不使能等待,后續(xù)指令不允許發(fā)射.對(duì)于雙發(fā)射結(jié)構(gòu)而言,若I0作為浮點(diǎn)指令發(fā)射后,本線程都會(huì)進(jìn)入前瞻不使能等待狀態(tài),不能發(fā)射后續(xù)指令,與前瞻使能相比加速比一定會(huì)降低.
3)測(cè)試程序7在兩種模式下的加速比差別不大.因?yàn)槌绦?大部分指令為整數(shù)運(yùn)算類指令,發(fā)射狀態(tài)與是否是前瞻模式?jīng)]有關(guān)系,因此測(cè)試程序7在前瞻使能和不使能兩種模式下的加速比差別不大.
5 結(jié) 論
本文基于T2處理器設(shè)計(jì)并實(shí)現(xiàn)了單線程雙發(fā)射結(jié)構(gòu),以開(kāi)發(fā)單線程的指令級(jí)并行,提高單線程性能;并對(duì)此雙發(fā)射結(jié)構(gòu)進(jìn)行了性能評(píng)估,包括搭建驗(yàn)證平臺(tái),建立模擬需要的功能模型,最后通過(guò)串行程序的響應(yīng)時(shí)間進(jìn)行性能評(píng)估.結(jié)果表明,本文設(shè)計(jì)并實(shí)現(xiàn)的單線程雙發(fā)射結(jié)構(gòu)實(shí)現(xiàn)了預(yù)期的功能,有效提高了單線程的性能.
參考文獻(xiàn)
[1] IBM Corporation. PowerPC microprocessor family: AltiVec technology programming environments manual[M]. Armonk, New York: IBM Corporation, 2004.
[2] MANOUSOPOULOS S, MORETO M, GIOIOSA R, et al. Characterizing thread placement in the IBM POWER7 processor[C]//Proceedings of 2012 IEEE International Symposium on Workload Characterization. New York: IEEE, 2012: 4-6.
[3] ORACLE Corporation. SPARCT4processor[R/OL]. Redwood Shores, CA: Oracle Corporation, 2011. http://www.oracle.com/ us/products/servers-storage/servers/sparc-enterprise/t-series/sparc-t4-processor-ds-497205.pdf.
[4] ORACLE Corporation. OpensparcT2processor[R/OL]. Redwood Shores, CA: Oracle Corporation, 2007. http://www.oracle.com/ technetwork/systems/opensparc/opensparc-t2-page-1446157.html.
[5] INTEL Corporation. Intel Xeon processor[R/OL]. Santa Clara, CA: Intel Corporation, 2010. http://www. intel.com/products/processor/ Xeon/index.htm.
[6] HENNESSY J L, PATTERSON D A. Computer architecture: a quantitative approach[M]. San Francisco, CA: Morgan Kaufmann Publishers, 2006.
[7] 張民選, 王永文. 高性能微處理器技術(shù)與結(jié)構(gòu)[M]. 長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué)出版社,2004.
ZHANG Min-xuan, WANG Yong-wen. Technology and structure of high performance microprocessor [M]. Changsha: National University of Defense Technology Press, 2004. (In Chinese)
[8] MANJIKIAN N, ROTH J. Multithreading and interprocessor communication in a dual-issue pipelined processor[C]//Proceedings of 2008 Joint 6th International IEEE Northeast Workshop on Circuits and Systems and TAISA Conference. New York: IEEE, 2008: 33-36.
[9] OLUKOTUN K, HAMMOND L. The future of microprocessors[J]. QUEUE-Multiprocessors, 2005,3(7): 26-29.
[10]孫彩霞, 張民選. 使用取值策略控制同時(shí)多線程處理器中個(gè)體線程的性能[J]. 計(jì)算機(jī)學(xué)報(bào), 2008, 31(2): 309-317.
SUN Cai-xia, ZHANG Min-xuan. Using instruction fetch policy to control performance of a thread in SMT processors[J]. Chinese Journal of Computers, 2008, 31(2): 309-317.(In Chinese)
[11]WANG Yong-wen, ZHENG Qian-bing, DOU Qiang, et al. Low power design for a multi-core multi-thread microprocessor[C]//Proceedings of International Symposium on Energy-aware Computing and Networking. Washington, DC: IEEE Computer Society, 2010: 351-356.
[12]路放, 安紅,梁博,等. OpenSMT:一個(gè)同時(shí)多線程處理器模擬器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)科學(xué),2006, 33(1): 158-163.
LU Fang, AN Hong, LIANG Bo, et al. OpenSMT: the design and implementation of a simulator for simultaneous multithreading processor architecture[J]. Computer Science, 2006, 33(1): 158-163.(In Chinese)
[13]劉星江, 王慧. 一種基于Verilog的驗(yàn)證平臺(tái)搭建及應(yīng)用[J]. 信息安全與通信保密, 2013(1): 43-45.
LIU Xing-jiang, WANG Hui. Building-up and application of testbench based on verilog[J]. Information Security and Communications Privacy, 2013(1): 43-45.(In Chinese)
[14]高秋紅. 時(shí)序電路的功能驗(yàn)證方法和技術(shù)研究[D]. 北京:北京交通大學(xué), 2006.
GAO Qiu-hong. The study on functional verification methods and technologies for sequential circuits[D]. Beijing: Beijing Jiaotong University, 2006.(In Chinese)
[15]陳海燕, 郭陽(yáng), 陳吉華, 等. 集成電路計(jì)算機(jī)輔助設(shè)計(jì)與驗(yàn)證實(shí)踐[M].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué)出版社,2010.
CHEN Hai-yan, GUO Yang, CHEN Ji-hua, et al. Integrated circuit computer aided design and verification in practice. [M]. Changsha: National University of Defense Technology Press, 2010.(In Chinese)
[16]羅莉, 何鴻君, 竇強(qiáng), 等. 覆蓋率驅(qū)動(dòng)的芯片功能驗(yàn)證設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與科學(xué), 2013, 35(1): 36-40.
LUO Li, HE Hong-jun, DOU Qiang, et al. Design and implementation of coverage-driven chip function verification [J]. Computer Engineering Science, 2013, 35(1): 36-40.(In Chinese)