文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.006
中文引用格式: 胡春林,王鎮(zhèn),王申卓,等. 基于交點(diǎn)隊(duì)列型Crossbar的多層AXI總線設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,43(3):29-32.
英文引用格式: Hu Chunlin,Wang Zhen,Wang Shenzhuo,et al. Design of a multi-layer AXI bus based on the crosspiont-queued crossbar[J].Application of Electronic Technique,2017,43(3):29-32.
0 引言
多核時(shí)代的到來(lái),使得對(duì)片內(nèi)通信效率的要求越來(lái)越高,因而通信架構(gòu)成為了設(shè)計(jì)的重點(diǎn)和難點(diǎn),直接影響著SoC最終的性能、面積、功耗等因素。國(guó)內(nèi)外已有多家研究機(jī)構(gòu)發(fā)布了各自的總線標(biāo)準(zhǔn),其中ARM公司發(fā)布的AXI總線結(jié)構(gòu)具有高性能、低延遲等優(yōu)點(diǎn),能夠使 SoC以更低的功耗、更小的面積獲得更加優(yōu)異的性能[1],成為當(dāng)前主流的片上通信架構(gòu),在實(shí)際SoC中應(yīng)用最多。AXI總線將讀、寫(xiě)地址通道和讀、寫(xiě)數(shù)據(jù)通道完全分離,支持burst傳輸和亂序傳輸,具有很好的并行性。
AXI總線結(jié)構(gòu)中,處理器核(主設(shè)備)之間通常采用共享存儲(chǔ)的方式來(lái)實(shí)現(xiàn)核間的數(shù)據(jù)交互,這種核間通信方式結(jié)構(gòu)雖簡(jiǎn)單,但由于通信效率低,且存在數(shù)據(jù)一致性等問(wèn)題,使其難以滿足日益發(fā)展的多核SoC內(nèi)部核間通信的性能要求。
基于此,本文提出一種基于交點(diǎn)隊(duì)列型Crossbar結(jié)構(gòu)的多層AXI總線,并實(shí)現(xiàn)內(nèi)部集成4個(gè)處理器核的多核SoC片內(nèi)通信。在AXI總線結(jié)構(gòu)的基礎(chǔ)上,核間采用交點(diǎn)隊(duì)列結(jié)構(gòu)代替?zhèn)鹘y(tǒng)的共享存儲(chǔ)結(jié)構(gòu),實(shí)現(xiàn)4個(gè)處理器核之間點(diǎn)對(duì)點(diǎn)的分布式連接,處理器核可以同時(shí)工作而不受制約,且核間無(wú)數(shù)據(jù)共享,從結(jié)構(gòu)上避免了數(shù)據(jù)一致性問(wèn)題。同時(shí),AXI的多層總線結(jié)構(gòu)可充分利用總線的帶寬,提高模塊的并行性,能進(jìn)一步提升總體架構(gòu)的通信效率。
1 多層總線通信結(jié)構(gòu)
1.1 整體結(jié)構(gòu)
根據(jù)系統(tǒng)需求,本設(shè)計(jì)將外設(shè)從設(shè)備分為4類,Slave0用于配置寄存器,Slave1用于連接UART、CAN等串口外設(shè),Slave2用于連接片上SRAM,Slave3用于連接外部存儲(chǔ)器接口。系統(tǒng)總體的片上通信結(jié)構(gòu)如圖1所示。采用交點(diǎn)隊(duì)列型Crossbar的核間通信結(jié)構(gòu)如圖1上半部分全陣列,每個(gè)處理器核都與其他3個(gè)處理器核點(diǎn)對(duì)點(diǎn)互聯(lián),在交點(diǎn)處內(nèi)置異步FIFO緩存,實(shí)現(xiàn)局部同步,整體異步。在與外設(shè)通信時(shí),處理器核通過(guò)AXI總線可單獨(dú)與任一從設(shè)備進(jìn)行數(shù)據(jù)交互。核間交點(diǎn)隊(duì)列型Crossbar作為系統(tǒng)的第一層總線結(jié)構(gòu),時(shí)鐘頻率與處理器核同步,實(shí)現(xiàn)處理器核之間的高速通信;AXI總線的交叉網(wǎng)絡(luò)作為第二層總線結(jié)構(gòu),實(shí)現(xiàn)各處理器核與片上外設(shè)模塊之間的連接,在保證高速傳輸?shù)耐瑫r(shí),方便各處理器核與各功能模塊直接通訊;slave接口可直接連接高速設(shè)備,也可作為轉(zhuǎn)接器,連接串口外設(shè)等多路低速設(shè)備,構(gòu)成本設(shè)計(jì)的第三層總線結(jié)構(gòu)。
1.2 隊(duì)列深度的仿真與驗(yàn)證
交點(diǎn)隊(duì)列型Crossbar的內(nèi)部結(jié)構(gòu)中,每對(duì)處理器核的連線中間都有一個(gè)緩存隊(duì)列,發(fā)送端處理器核根據(jù)數(shù)據(jù)的目標(biāo)將數(shù)據(jù)發(fā)送至對(duì)應(yīng)的緩存隊(duì)列,接收端處理器核則根據(jù)仲裁結(jié)果讀取其中一路緩存隊(duì)列中的數(shù)據(jù)。若節(jié)點(diǎn)緩存隊(duì)列滿,則將后繼到來(lái)的數(shù)據(jù)丟包[2]。對(duì)于丟包的問(wèn)題,本設(shè)計(jì)通過(guò)保留輸入端與隊(duì)列之間的握手信號(hào)來(lái)解決,數(shù)據(jù)一旦丟包則再次請(qǐng)求輸入端發(fā)送丟失的數(shù)據(jù)。緩存隊(duì)列的深度和調(diào)度算法是影響核間交點(diǎn)隊(duì)列型Crossbar結(jié)構(gòu)通信效率的關(guān)鍵因素,隊(duì)列過(guò)小則會(huì)導(dǎo)致握手請(qǐng)求過(guò)于頻繁,影響通信效率,隊(duì)列過(guò)大則會(huì)導(dǎo)致資源的浪費(fèi),因而必須找到隊(duì)列吞吐量與緩沖隊(duì)列深度之間的平衡點(diǎn)。文獻(xiàn)[3~4]結(jié)合不同的調(diào)度算法,通過(guò)建模仿真,找出了不同調(diào)度算法和隊(duì)列深度對(duì)平均延遲、丟包率產(chǎn)生的影響,并指出輪詢算法(Round Robin,RR)為最佳的仲裁方案。
為進(jìn)一步驗(yàn)證隊(duì)列深度對(duì)丟包的影響,本文根據(jù)M/M/1排隊(duì)理論的知識(shí)[5],利用Simulink工具構(gòu)建了交點(diǎn)隊(duì)列型Crossbar的仿真模型。如圖2所示,模型設(shè)立了3個(gè)相互獨(dú)立的信源以及1個(gè)信宿,3個(gè)信源分別代表core0、core1、core2,信宿代表core3,“隊(duì)列0-3”表示core0到core3的緩存隊(duì)列,以此類推。模型主要模擬core0、core1、core2向core3發(fā)送數(shù)據(jù),并觀察它們之間緩存隊(duì)列中數(shù)據(jù)包的個(gè)數(shù)。信源端調(diào)度器代表解碼器,將來(lái)自信源的數(shù)據(jù)隨機(jī)分配給3個(gè)深度足夠大的緩存隊(duì)列。信宿端調(diào)度器按照輪詢算法接收core3與其他core之間交點(diǎn)緩存隊(duì)列中的數(shù)據(jù),并發(fā)送給core3。緩存隊(duì)列用于存放未被輪詢調(diào)度器接收的數(shù)據(jù),通過(guò)信號(hào)觀察器可查看隊(duì)列在每個(gè)時(shí)刻存儲(chǔ)的數(shù)據(jù)包的數(shù)量。
對(duì)模型進(jìn)行了2 500個(gè)時(shí)序的仿真后,結(jié)果如圖3所示,圖3(a)~圖3(c)分別記錄著3個(gè)交點(diǎn)緩存隊(duì)列中存放數(shù)據(jù)包的個(gè)數(shù),圖3(d)記錄信宿接收數(shù)據(jù)包的個(gè)數(shù)。從仿真結(jié)果可看出,3個(gè)緩存隊(duì)列中數(shù)據(jù)包的數(shù)量在絕大多數(shù)時(shí)序內(nèi)都小于32。文獻(xiàn)[6]推導(dǎo)出了在RR調(diào)度機(jī)制下,交點(diǎn)隊(duì)列型Crossbar節(jié)點(diǎn)吞吐量的計(jì)算公式,對(duì)于本設(shè)計(jì)的4×4交叉網(wǎng)絡(luò),在負(fù)載設(shè)為1的情況下,當(dāng)隊(duì)列深度設(shè)為32時(shí),節(jié)點(diǎn)的吞吐量將達(dá)0.98。由此,本文將交叉節(jié)點(diǎn)緩存隊(duì)列的深度設(shè)為32。
2 主要模塊的設(shè)計(jì)與實(shí)現(xiàn)
2.1 核間互連結(jié)構(gòu)
本設(shè)計(jì)的核間互連結(jié)構(gòu)如圖4所示,其中queue即為核間交點(diǎn)隊(duì)列型Crossbar結(jié)構(gòu)中的緩存隊(duì)列。數(shù)據(jù)在送至緩存隊(duì)列之前,w_addr信號(hào)根據(jù)此數(shù)據(jù)的目標(biāo)核,選通對(duì)應(yīng)的核間交點(diǎn)緩存隊(duì)列。當(dāng)交點(diǎn)緩存隊(duì)列中有數(shù)據(jù)時(shí),隊(duì)列就會(huì)向目標(biāo)核發(fā)出請(qǐng)求讀取的信號(hào),隨后仲裁器根據(jù)調(diào)度算法從3路請(qǐng)求信號(hào)中選擇一路;得到仲裁器的允許后,目標(biāo)核就會(huì)選通該隊(duì)列,并形成一條鏈路進(jìn)行數(shù)據(jù)傳輸。此外,每個(gè)緩存隊(duì)列與發(fā)送端處理器核之間都有一個(gè)response回路信號(hào),用于監(jiān)視數(shù)據(jù)是否已經(jīng)送至緩存隊(duì)列中,若發(fā)生丟包,則通知發(fā)送端處理器,令其再次發(fā)送丟失的數(shù)據(jù)。
2.2 Slave接口模塊
Slave接口模塊主要實(shí)現(xiàn)AXI總線到從模塊之間的協(xié)議轉(zhuǎn)換以及時(shí)序轉(zhuǎn)換。圖5為Slave接口模塊的結(jié)構(gòu)圖,兩個(gè)FIFO分別用于緩存總線發(fā)送給從模塊的數(shù)據(jù)和從模塊發(fā)送給總線的數(shù)據(jù),寫(xiě)返回邏輯主要用于通知總線此次寫(xiě)事務(wù)是否成功,last返回邏輯產(chǎn)生的rlast信號(hào)則用于通知總線此次讀取的數(shù)據(jù)為從模塊發(fā)送的最后一個(gè)數(shù)據(jù)。根據(jù)AXI協(xié)議,總線端信號(hào)主要包括寫(xiě)地址通道信號(hào)、寫(xiě)數(shù)據(jù)通道信號(hào)、寫(xiě)應(yīng)答通道信號(hào)、讀數(shù)據(jù)通道信號(hào)、讀地址通道信號(hào)。Slave接口模塊一方面將這些將基于AXI的協(xié)議包解碼出通用的寫(xiě)使能信號(hào)、寫(xiě)地址信號(hào)、寫(xiě)數(shù)據(jù)信號(hào)等基本信號(hào);另一方面將來(lái)自從模塊的讀使能信號(hào)、讀地址信號(hào)、讀數(shù)據(jù)信號(hào)轉(zhuǎn)換成AXI協(xié)議信號(hào)。
2.3 仲裁器模塊的設(shè)計(jì)
設(shè)計(jì)的仲裁器結(jié)構(gòu)如圖6所示,由優(yōu)先編碼器、屏蔽優(yōu)先級(jí)編碼器、屏蔽優(yōu)先級(jí)解碼器以及指針控制電路組成。仲裁開(kāi)始后,請(qǐng)求信號(hào)一方面進(jìn)入固定優(yōu)先級(jí)仲裁器仲裁;另一方面與優(yōu)先級(jí)寄存器中經(jīng)取反后的信號(hào)做與運(yùn)算,可編程優(yōu)先編碼器將此結(jié)果編碼后得到屏蔽信號(hào)。屏蔽信號(hào)主要用于和固定優(yōu)先級(jí)編碼器編碼后的結(jié)果做與運(yùn)算,實(shí)現(xiàn)屏蔽功能。屏蔽編碼后的結(jié)果再與可編程優(yōu)先級(jí)編碼器的結(jié)果做或運(yùn)算即得輸出結(jié)果,該結(jié)果即為仲裁器對(duì)仲裁請(qǐng)求做出的應(yīng)答信號(hào)。同時(shí),將此結(jié)果送至指針更新控制電路,對(duì)優(yōu)先級(jí)指針進(jìn)行更新。
3 仿真
本文設(shè)計(jì)的四核SoC片上通信結(jié)構(gòu)主要包括交點(diǎn)隊(duì)列型核間通信模塊、仲裁器、譯碼器、Master與Slave接口模塊等。采用Verilog HDL語(yǔ)言對(duì)交點(diǎn)隊(duì)列核間通信模塊進(jìn)行RTL設(shè)計(jì),并結(jié)合Testbench,使用Synopsys VCS仿真工具對(duì)交點(diǎn)隊(duì)列型核間通信結(jié)構(gòu)進(jìn)行了功能仿真,仿真后的波形如圖7所示。圖中INTM0_M1置高,表示核0發(fā)數(shù)據(jù)給核1。按照AXI協(xié)議,信息源通過(guò)VALID信號(hào)來(lái)指示通道中的數(shù)據(jù)和控制信息何時(shí)有效,目地源則用READY信號(hào)來(lái)表示何時(shí)能夠接收數(shù)據(jù)。當(dāng)SOIN_ARREADY與SOIN_ARV-ALID同時(shí)為高電平時(shí),表示傳輸?shù)牡刂酚行?;SOIN_RREADY與SOIN_ RVALID同時(shí)為高,表示傳輸?shù)臄?shù)據(jù)有效。只有當(dāng)傳輸?shù)牡刂酚行Ш?,且SOIN_RREADY與SOIN_RVALID同時(shí)為高時(shí),core1才會(huì)讀取來(lái)自core0的數(shù)據(jù)。從圖可看出,所設(shè)計(jì)的交點(diǎn)隊(duì)列結(jié)構(gòu)能完整地實(shí)現(xiàn)數(shù)據(jù)交換,且讀寫(xiě)過(guò)程與AXI協(xié)議一致。
4 結(jié)論
多核SoC設(shè)計(jì)中,采用傳統(tǒng)共享存儲(chǔ)的核間通信方式存在硬件資源浪費(fèi)、效率低等問(wèn)題,已經(jīng)難以滿足多核SoC日益發(fā)展的性能需求。針對(duì)這些問(wèn)題,本文結(jié)合交點(diǎn)隊(duì)列型交叉開(kāi)關(guān)結(jié)構(gòu),設(shè)計(jì)并實(shí)現(xiàn)一種交點(diǎn)隊(duì)列型Crossbar結(jié)構(gòu)的多層AXI總線。核間點(diǎn)對(duì)點(diǎn)的分布式連接可使處理器核同時(shí)工作而不受約束,極大地提高了核間通信效率。通過(guò)對(duì)4×4交叉網(wǎng)絡(luò)的建模仿真,確定了交點(diǎn)緩存隊(duì)列的最佳深度為32,并結(jié)合公式計(jì)算,得出其內(nèi)部節(jié)點(diǎn)的吞吐量高達(dá)0.98。四路Slave接口既能連接高速設(shè)備,又能作為轉(zhuǎn)接器,連接多路低速設(shè)備,這種AXI的多層結(jié)構(gòu)有利于總線帶寬的充分利用。
參考文獻(xiàn)
[1] 胡景華.基于AXI總線的SoC架構(gòu)設(shè)計(jì)與分析[D].上海:上海交通大學(xué).2013:21-29.
[2] RADONJIC M,RADUSINOVIC I.Average latency and loss probability analysis of cross-point queued crossbar switch[C]//ELMA-R,2010 PROCEEDINGS.IEEE,2010:203-206.
[3] DIVANOVIC S,KOVACEVIC V,RADONJIC M,et al.Crosspoint queued switch performance analysis under multicast traffic[C]//Telecommunications Forum(TELFOR),2012 20th.IEEE,2012:226-229.
[4] RADONJIC M,RADUSINOVIC I.CQ switch performance analysis from the point of buffer size and scheduling algorithms[C]//Telecommunications Froum(TELEFOR),2012 20th.IEEE,2012:210-217.
[5] 張霖,劉建明,李宏周.基于M/M/m隊(duì)列的通信網(wǎng)絡(luò)排隊(duì)模型化研究[J].科學(xué)技術(shù)工程,2013(5).
[6] KANIZO Y,HAY D,KESLASSY I.The cross-piont-queued switch[C]//INFOCOM 2009,IEEE.IEEE,2009:729-737.
作者信息:
胡春林1,2,王 鎮(zhèn)2,王申卓1,2,汪 健2,徐大誠(chéng)1
(1.蘇州大學(xué) 電子信息學(xué)院,江蘇 蘇州215006;
2.中國(guó)兵器工業(yè)集團(tuán)北方電子研究院有限公司微電子部,江蘇 蘇州215163)