基于片內(nèi)WISHBONE總線的高速緩存一致性實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:基于IP可重用的設(shè)計(jì)方法,利用WISHBONE總線協(xié)議,把兩個(gè)已成功開(kāi)發(fā)出的具有自主知識(shí)產(chǎn)權(quán)的THUMP內(nèi)核在一個(gè)芯片上,實(shí)現(xiàn)了片上多處理器FPGA。開(kāi)發(fā)重點(diǎn)是實(shí)現(xiàn)基于片內(nèi)WISHBONE總線的高速緩存一致性協(xié)議。
關(guān)鍵詞:WISHBONE總線片上多處理器高緩一致性SOCIP
清華大學(xué)嵌入式微處理器芯片設(shè)計(jì)為國(guó)家重點(diǎn)863項(xiàng)目,單芯片多處理器設(shè)計(jì)為項(xiàng)目的一個(gè)延伸。單芯片多處理器是提高處理器性能的有效途徑,具有低耦合度、粗粒度并行性的主要特點(diǎn)。清華大學(xué)已成功開(kāi)發(fā)出具有自主知識(shí)產(chǎn)權(quán)的MIPS4Kc架構(gòu)的32位微處理器--THUMPl07。該處理器具有內(nèi)核性能高、面積小、功耗低的優(yōu)點(diǎn)。使其經(jīng)過(guò)裁減非常適合作為單芯片多處理器的內(nèi)核。
本次單芯片多處理器的設(shè)計(jì)將兩個(gè)Thumpl07內(nèi)核集成在一個(gè)芯片上,兩個(gè)內(nèi)核處于完全對(duì)等地位,實(shí)現(xiàn)進(jìn)程級(jí)的粗粒度并行。由于已經(jīng)具有可以利用的內(nèi)核,開(kāi)發(fā)的重點(diǎn)就集中在高速緩存(Cache)一致性的實(shí)現(xiàn)上。芯片采用了基于內(nèi)部總線寫更新監(jiān)聽(tīng)的高速緩存一致性協(xié)議,具有控制邏輯簡(jiǎn)單、可擴(kuò)展性好的特點(diǎn)。內(nèi)部總線采用適合片上系統(tǒng)通信、高可配置性的WISHBONE總線。使用該片上總線有效地解決了IP核可移植性、設(shè)計(jì)復(fù)用的問(wèn)題[2l]。
1WISHBONE總線
WISHBONE最先由Silicore公司提出,現(xiàn)在被移交給OpenCores組織維護(hù)。由于其開(kāi)放性,現(xiàn)在已有不少用戶群體。特別是一些免費(fèi)的IP核,大多數(shù)都采用WISH-BONE標(biāo)準(zhǔn)。該總線結(jié)構(gòu)具有公用的接口規(guī)范方便結(jié)構(gòu)化設(shè)計(jì),有效地解決了IP核可移植性、設(shè)計(jì)復(fù)用的問(wèn)題。
WISHBON耳總線為半導(dǎo)體內(nèi)核提供了可配置的互連方式,能夠使各種內(nèi)核互連起來(lái)形成片上系統(tǒng);WISH-BONE總線具有很強(qiáng)的兼容性,提高了設(shè)計(jì)的可重用性;WISHBONE總線的接口獨(dú)立于半導(dǎo)體技術(shù),其互連方式既可以支持FPGA設(shè)備,也可以支持ASIC設(shè)備;WISHBONE總線協(xié)議簡(jiǎn)單、易懂。
WISHBONE總線是一種主/從接口架構(gòu)的總線技術(shù),如果具有有效的仲裁機(jī)制,總線系統(tǒng)可以支持多個(gè)ne/從接口;WISHBONE總線的可配置性主要體現(xiàn)在支持點(diǎn)到點(diǎn)、共享總線、數(shù)據(jù)流、交叉開(kāi)關(guān)型的互連方式;WISHBONE總線協(xié)議既包含了一種容易使用、可靠性高、易測(cè)試、所有總線事務(wù)都可以在一個(gè)時(shí)鐘周期內(nèi)協(xié)同的同步傳輸協(xié)議,也包含了標(biāo)準(zhǔn)時(shí)鐘周期的異步傳輸協(xié)議;WISHBONE總線的同步傳輸協(xié)議可以工作在一個(gè)大范圍的時(shí)鐘頻率上。這樣WISHBONE總線接口既可以與內(nèi)核時(shí)鐘周期同步,也可與不同的目標(biāo)設(shè)備同步,時(shí)序都非常簡(jiǎn)單。此外,WISHBONE總線還具有如下特點(diǎn):
·簡(jiǎn)單、緊湊的硬件邏輯接口,需要更少的邏輯門;
·支持流行的單字讀/寫、塊讀/寫、讀-修改-寫的總線協(xié)議;
·可調(diào)整的總線和操作數(shù)位寬;
·支持大端(bigendian)和小端(1ittleendian)兩種數(shù)據(jù)表示方法;
·握手協(xié)議能夠控制數(shù)據(jù)傳輸速率;
·支持單周期數(shù)據(jù)傳輸;
·從接口的部分地址解碼;
·根據(jù)系統(tǒng)需要,用戶可自定義增加接口信號(hào);
·系統(tǒng)包含多個(gè)MASTER接口時(shí),用戶可以自定義總線仲裁方式與算法。
圖2
2實(shí)現(xiàn)方案
單芯片多處理器的每個(gè)內(nèi)核都有分離的16KB指令高速緩存(1Cache)和16KB數(shù)據(jù)高速緩存(DCache);指令高速緩存和數(shù)據(jù)高速緩存都采用兩路組相聯(lián)的映射方式;每塊都包含8個(gè)字;采用虛擬地址定位、物理地址比較的尋址方法;替換方式為L(zhǎng)BU(最近最少使用替換)。
指令高速緩存不涉及一致性問(wèn)題,不多做說(shuō)明。數(shù)據(jù)高速緩存采用基于監(jiān)聽(tīng)總線的寫更新一致性協(xié)議Dragonl[3]
協(xié)議狀態(tài)說(shuō)明見(jiàn)表1。
表1協(xié)議狀態(tài)
狀態(tài)說(shuō)明
干凈獨(dú)占(E)只有一個(gè)緩存有這一存儲(chǔ)塊的拷貝,并且還沒(méi)有被修改(主存狀態(tài)也有效)。
干凈修改(SC)潛在的兩個(gè)或多個(gè)緩沖有這一存儲(chǔ)塊,主存不一定是最新的。
共享已修改(SM)潛在的兩個(gè)或多個(gè)緩沖有這一存儲(chǔ)塊,主存不是最新的。該塊在被替換時(shí),要更新主存(寫回)。一個(gè)存儲(chǔ)塊在一定時(shí)間內(nèi)只能在一個(gè)緩沖內(nèi)共享已修改狀態(tài)。
獨(dú)點(diǎn)已修改(M)存儲(chǔ)塊的內(nèi)容已經(jīng)被修改,并且只在該存儲(chǔ)塊里,發(fā)生替換需要更新主存的內(nèi)容。
確定一致性協(xié)議后,單芯片多處理器的數(shù)據(jù)高速緩存單元整體設(shè)計(jì)見(jiàn)圖1。
片內(nèi)總線采用WISHBONE總線共享型連接,每個(gè)內(nèi)核的數(shù)據(jù)高速緩存的控制單元都包含WISHBONE總線的一個(gè)主接口(MASTER)和一個(gè)從接口(SLAVE);數(shù)據(jù)總線為32位;地址總線為33位,其中最高位是兩個(gè)從接口的選擇位;片內(nèi)總線采用預(yù)先同步傳輸協(xié)議;仲裁方式為輪換型;片外總線接口與廣泛應(yīng)用的工業(yè)標(biāo)準(zhǔn)SYSAD系統(tǒng)總線兼容。
在UNCAHCE空間發(fā)生的讀寫操作,直接訪問(wèn)外部總線,與主存通信;在CACHE空間發(fā)生的讀寫操作,過(guò)程如下所述:
讀缺失:當(dāng)一個(gè)內(nèi)核的數(shù)據(jù)高速緩存發(fā)生讀缺失,由本地主接口通過(guò)片內(nèi)總線向遠(yuǎn)端數(shù)據(jù)高速緩存發(fā)出讀請(qǐng)求,遠(yuǎn)端從接口通過(guò)片內(nèi)總線應(yīng)答請(qǐng)求。如果應(yīng)答有該單元數(shù)據(jù),就由遠(yuǎn)端數(shù)據(jù)高速緩存調(diào)來(lái)一個(gè)數(shù)據(jù)塊(8個(gè)字);如果沒(méi)有,本地主接口結(jié)束片內(nèi)總線周期,轉(zhuǎn)而訪問(wèn)外部總線,由主存調(diào)人數(shù)據(jù)。
寫缺失:內(nèi)核發(fā)生寫缺失時(shí),前半部分的操作與讀缺失完全一致;只是如果缺失單元是從遠(yuǎn)端數(shù)據(jù)高速緩存調(diào)來(lái)的,由于采用基于寫更新的Dragon協(xié)議,所以在完成片內(nèi)總線塊傳輸事務(wù)后還要產(chǎn)生一個(gè)單字寫總線事務(wù),更新遠(yuǎn)端數(shù)據(jù)高速緩存單元。
讀命中:不會(huì)產(chǎn)生任何總線事務(wù)。
寫命中:如果該單元的原來(lái)狀態(tài)是SC或SM,基于寫更新協(xié)議,由本地主接口通過(guò)片內(nèi)總線向遠(yuǎn)端數(shù)據(jù)高速緩存發(fā)出寫請(qǐng)求,遠(yuǎn)端從接口通過(guò)片內(nèi)總線應(yīng)答請(qǐng)求。如果應(yīng)答有該單元數(shù)據(jù),則通過(guò)一個(gè)單字寫總線事務(wù)更新遠(yuǎn)端數(shù)據(jù)高速緩存單元;如果沒(méi)有,結(jié)束片內(nèi)總線周期。
替換:實(shí)現(xiàn)寫回協(xié)議,只有被替換出的單元狀態(tài)為SM或M狀態(tài),才通過(guò)外部總線更新主存,其他情況拋棄即可。
注意:完成上述操作后要根據(jù)DRAGON協(xié)議,更新本地和遠(yuǎn)端DCahe單元的相關(guān)狀態(tài)。[!--empirenews.page--]
3總線事務(wù)時(shí)序分析
由前部分的說(shuō)明發(fā)現(xiàn)在內(nèi)部總線上可以產(chǎn)生三種類型的總線事務(wù):讀缺失時(shí),塊傳輸總線事務(wù);SM或SC狀態(tài)寫命中時(shí),發(fā)生單宇寫總線事務(wù);寫缺失時(shí),先是一個(gè)塊傳輸總線事務(wù)而后在本地寫操作完成后,一個(gè)單字寫總線事務(wù)更新遠(yuǎn)端的數(shù)據(jù)高速緩存單元。以下是塊傳輸和單字寫總線周期具體的時(shí)序分析,下文提到的具體信號(hào)其意義可以查閱參考文獻(xiàn)[1]。
塊傳輸時(shí)序:主接口通過(guò)聲明CYC_O申請(qǐng)總線的使用權(quán),同時(shí)也給出STB_O、CTI_0(010)、WE_O(低電平)和ADR_O;經(jīng)過(guò)若干時(shí)鐘周期等待后,如果遠(yuǎn)端從接口給出ACK_I信號(hào),同時(shí)給出的SHARE_I信號(hào)為低電平(說(shuō)明遠(yuǎn)端數(shù)據(jù)高速緩存沒(méi)有所需要的數(shù)據(jù)塊,.SHARE_I為自定義的信號(hào)),這時(shí)主接口忽略DAT-I信號(hào),下一個(gè)時(shí)鐘周期撤銷CYC_O信號(hào),結(jié)束片內(nèi)總線周期;如果給出AClI信號(hào)的同時(shí),SHARE_I信號(hào)為高電平(說(shuō)明遠(yuǎn)端數(shù)據(jù)高速緩存有所需要的數(shù)據(jù)塊),接收DAT-I上的數(shù)據(jù);而后7個(gè)時(shí)鐘周期內(nèi),每個(gè)時(shí)鐘周期ADR_O數(shù)據(jù)加4,DAII上的數(shù)據(jù)根據(jù)地址相應(yīng)地變化,在第7個(gè)數(shù)據(jù)傳輸?shù)臅r(shí)鐘周期CTI_O變?yōu)?11,告訴遠(yuǎn)端從接口這是最后一個(gè)傳輸時(shí)鐘周期,下一個(gè)時(shí)鐘周期:降完成這個(gè)總線事務(wù);最后一個(gè)時(shí)鐘周期主接口撤銷CYC_O信號(hào),結(jié)束片內(nèi)總線周期。
內(nèi)塊傳輸時(shí)序見(jiàn)圖2。
單字寫總線周期:主接口通過(guò)聲明CYC_O申請(qǐng)總線的使用權(quán),同時(shí)也給出STB_O、CTI_O(111)、WE_O(高電子)、ADlO和DAT-0;經(jīng)過(guò)若干時(shí)鐘周期等待后,如果遠(yuǎn)端從接口給出ACK_I信號(hào),同時(shí)給出的SHARE信號(hào)為低電子(說(shuō)明遠(yuǎn)端數(shù)據(jù)高速緩存沒(méi)有所需要的數(shù)_I據(jù)塊),主接口下一個(gè)時(shí)鐘周期撤銷CYC_O信號(hào),結(jié)束片內(nèi)總線周期;如果給出ACK_I信號(hào)的同時(shí),SHARK-I信號(hào)為高電子(說(shuō)明遠(yuǎn)端數(shù)據(jù)高速緩存有所需要的數(shù)據(jù)塊),說(shuō)明從接口已經(jīng)用DAT-O上的數(shù)據(jù)更新了相應(yīng)的數(shù)據(jù)單元,下一個(gè)時(shí)鐘周期撤銷CYC_O信號(hào),結(jié)束片內(nèi)總線周期。
單字寫時(shí)序見(jiàn)圖3。
塊傳輸總線事務(wù)時(shí)序圖2,單字寫總線事務(wù)時(shí)序圖3中WAIT表示主接口等待總線仲裁和從接口的應(yīng)答,需若干時(shí)鐘周期,最快的情況下只要一個(gè)時(shí)鐘周期。總線仲裁:如果兩個(gè)數(shù)據(jù)高速緩存的主接口同時(shí)請(qǐng)求,由仲裁單元決定哪個(gè)主接口可以使用片內(nèi)總線,仲裁的優(yōu)先級(jí)算法是輪換法。數(shù)據(jù)高速緩存的主接口,在聲明CYC_O申請(qǐng)總線后,如果AClI一直是低電平無(wú)效,但同時(shí)該數(shù)據(jù)高速緩存從接口的CYC_I信號(hào)有效,說(shuō)明數(shù)據(jù)高速緩存主接口沒(méi)有得到總線使用權(quán),主接口撤銷CYC_O信號(hào),該數(shù)據(jù)高速緩存響應(yīng)從接口的操作,操作完成后,主接口再次聲明CYC_O信號(hào)請(qǐng)求總線;相反,如果數(shù)據(jù)高速緩存主接口的ACK_I信號(hào)高電平有效,說(shuō)明得到了總線使用權(quán),可以使用總線。
綜上所述,片內(nèi)總線采用WISHBONE總線地址增量的傳輸方式,與內(nèi)核時(shí)鐘同步,最快可以在9個(gè)時(shí)鐘周期從另一個(gè)數(shù)據(jù)高速緩存調(diào)來(lái)一個(gè)塊(8個(gè)宇)的內(nèi)容,可在2個(gè)時(shí)鐘周期更新遠(yuǎn)端數(shù)據(jù)高速緩存的一個(gè)相關(guān)單元;數(shù)據(jù)高速緩存實(shí)現(xiàn)寫回、寫更新機(jī)制,減少了向外部總線寫操作的頻度。該結(jié)構(gòu)具有可擴(kuò)展性,只要把片內(nèi)WISHBONE·總線的地址線的位數(shù)擴(kuò)展(用于選擇多個(gè)從接口)就可以把多個(gè)內(nèi)核集成在該芯片上,協(xié)議無(wú)需變化。該種體系結(jié)構(gòu)運(yùn)行兩個(gè)耦合度很低的程序,性能最好。
該方案利用WISHBONE總線,基于監(jiān)聽(tīng)總線的寫更新一致性協(xié)議,把兩個(gè)IP核集成在一塊芯片上,實(shí)現(xiàn)了單芯片多處理器結(jié)構(gòu)的FPGA。該體系結(jié)構(gòu)采用開(kāi)放的片上總線標(biāo)準(zhǔn),具有公用的主從接口規(guī)范,實(shí)現(xiàn)了IP核可移植性,具有設(shè)計(jì)可復(fù)用的優(yōu)點(diǎn)。