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