高帶寬嵌入式應用中SoC微控制器的新型總線(xiàn)開(kāi)發(fā)
傳統SoC總線(xiàn)架構已不能滿(mǎn)足新的聯(lián)網(wǎng)嵌入式設計對高帶寬數據流進(jìn)行實(shí)時(shí)控制的需求, NetSilicon開(kāi)發(fā)的可編程總線(xiàn)帶寬控制系統可以使多個(gè)資源同時(shí)訪(fǎng)問(wèn)總線(xiàn),使其既滿(mǎn)足應用要求又不會(huì )影響其他重要操作的性能。本文將對該系統的可編程總線(xiàn)帶寬分配方案進(jìn)行探討。
32位嵌入式設計越來(lái)越要求對網(wǎng)絡(luò )上高帶寬數據流進(jìn)行實(shí)時(shí)控制,特別是在系統級芯片(SoC)層面,以確定性和無(wú)爭議的方式傳輸數據和控制信息變得非常重要。各種操作直接處于系統開(kāi)發(fā)者既定的控制之下也很重要,而這在基于總線(xiàn)的SoC設計中并不總是能夠實(shí)現。
設計者和芯片供應商常常借鑒板級及系統級架構技術(shù),以便在最短的設計時(shí)間內以最低的開(kāi)發(fā)成本進(jìn)行SoC設計。由于手機和PDA等設備對確定性的實(shí)時(shí)響應需求很少,所以傳統解決方案在此類(lèi)應用中表現還不錯。
但在許多新的聯(lián)網(wǎng)嵌入式設計中,傳統總線(xiàn)架構不能滿(mǎn)足共享總線(xiàn)對高帶寬及高密度數據流的需求,在下列應用中尤其如此,如工業(yè)用人機界面(HMI)網(wǎng)絡(luò )顯示、 POS終端設備,具有不同數據帶寬需求的彩色打印機、網(wǎng)絡(luò )投影儀和監視攝像機,以及網(wǎng)絡(luò )打印機、數字復印機、多功能一體機、傳真機和掃描儀等。
許多基于片上串行互連的替代方案正在研發(fā)中,這些替代方案類(lèi)似于串行結構、交叉交換(crossbar switch)和基于數據包的總線(xiàn)。在這些新方案得以完善之前,鑒于時(shí)間和成本壓力,必須找到能修改從板級設計借鑒過(guò)來(lái)的共享總線(xiàn)架構的方法,以滿(mǎn)足新的 32位嵌入式聯(lián)網(wǎng)設計對確定性和實(shí)時(shí)性的要求。
傳統SoC總線(xiàn)的優(yōu)缺點(diǎn)
SoC開(kāi)發(fā)者不愿意放棄這種通用共享總線(xiàn),因為它可以減少設計周期中的規范制定及驗證工作,能使SoC的高層次集成如同將擴展卡插到背板上一樣簡(jiǎn)單。通過(guò)采用通用總線(xiàn),開(kāi)發(fā)者可以集中精力投入到更高層次的決策中。
圖1:NS9xxx的帶寬控制系統。
ARM公司在高級微控制器總線(xiàn)架構(AMBA)中采用通用總線(xiàn),允許獲得許可的使用者專(zhuān)注于自己的應用開(kāi)發(fā),從而快速將產(chǎn)品推向市場(chǎng)。
微處理器、 DMA控制器、存儲器控制器及其它更高性能的模塊通過(guò)AHB連接。性能較低的模塊,比如UART、通用輸入/輸出(GPIO)及定時(shí)器等,則通過(guò)APB連接。
但是,基于A(yíng)RM的SoC所瞄準的許多高端嵌入式應用,要求它們在處理這些應用的確定性與實(shí)時(shí)性需求的同時(shí),還可以訪(fǎng)問(wèn)高帶寬網(wǎng)絡(luò )環(huán)境。
這些應用要求SoC能夠發(fā)出控制信號、采集數據并在網(wǎng)絡(luò )上實(shí)時(shí)傳輸數據?;诓煌木W(wǎng)絡(luò )特性及其帶寬要求,現有SoC總線(xiàn)架構的性能將會(huì )得到盡可能的提升,例如,高端聯(lián)網(wǎng)嵌入式應用可能要處理通過(guò)以太網(wǎng)連接從照相機傳輸到打印機的視頻數據位流,或從服務(wù)器傳輸到打印機的圖像,與此同時(shí)還可能根據與掃描、刷新和更新周期有關(guān)的確切要求對本地 LCD顯示進(jìn)行更新。使用外部LCD時(shí),LCD控制器必須知道通過(guò)該總線(xiàn)傳輸的具體字節數量、數據發(fā)送順序以及數據在顯示器上顯示的特定時(shí)隙和順序,同時(shí)也很必要將信息不斷地饋送給LCD用于更新。
圖2: NS9750原理框圖。
共享總線(xiàn)的概念并不能滿(mǎn)足SoC中的這些要求。在典型的AHB設計中,總線(xiàn)主控是總線(xiàn)上全部的主要資源,也就是說(shuō),當總線(xiàn)空閑時(shí),它們可向總線(xiàn)請求完成一個(gè)任務(wù)所需要的時(shí)間。但在基于A(yíng)RM的SoC中,程序設計者不能直接控制當它們掌管總線(xiàn)時(shí)可得到多少總線(xiàn)資源。
共享總線(xiàn)架構用多種方式來(lái)區分這些操作的優(yōu)先次序,包括:菊花鏈仲裁、集中式并行仲裁、基于自選或沖突監測的分布式仲裁以及帶多個(gè)總線(xiàn)請求的總線(xiàn)仲裁。但當指定的主控接管總線(xiàn)后,其他操作就會(huì )擱置在一邊。目前還沒(méi)有一種機制能夠讓多個(gè)資源同時(shí)訪(fǎng)問(wèn)總線(xiàn),使其既滿(mǎn)足應用要求,又不會(huì )影響其他重要操作提供確定性及實(shí)時(shí)性響應的能力。
在A(yíng)MBA環(huán)境中處理這類(lèi)情況的一種通用方法是使用仲裁通道。如果有六個(gè)總線(xiàn)主控,總線(xiàn)便設計成有六個(gè)仲裁通道。但是,片上仲裁邏輯根據請求訪(fǎng)問(wèn)該總線(xiàn)的主控數目來(lái)分配這些通道,而不是把每個(gè)通道指定給某個(gè)特定的主控。如果有四個(gè)主控請求訪(fǎng)問(wèn)總線(xiàn),則這六個(gè)通道會(huì )在這四個(gè)主控之間進(jìn)行分配,確保每個(gè)主控有平等的機會(huì )訪(fǎng)問(wèn)該總線(xiàn)。
然而,這并不能解決如何分配足夠的總線(xiàn)帶寬以完成某一特定任務(wù)這一基本問(wèn)題。若其中一個(gè)操作需要三個(gè)通道,而其它操作總共只需要兩個(gè)通道,則每一種操作將會(huì )分配到相同數量的可用通道空間。其結果是,有的通道沒(méi)有充分利用 (甚至根本沒(méi)用到),而有的則超負荷使用,影響SoC在極低延遲內對事件進(jìn)行確定性響應的能力。
可編程總線(xiàn)帶寬控制系統
因此,需要一種可編程的總線(xiàn)帶寬分配方案,在某一特定時(shí)刻為某一特定的主控分配其所需的總線(xiàn)配置,并將剩余的總線(xiàn)空間分配給其它可能要求訪(fǎng)問(wèn)該總線(xiàn)的主控。由于這種方案可能隨時(shí)間改變,因此需要一種機制以便按照常規原理重新分配總線(xiàn)資源。
NetSilicon 公司已開(kāi)發(fā)一種新的帶寬控制系統來(lái)取代采用AMBA架構的帶寬控制系統。該系統采用一個(gè)16槽位旋轉優(yōu)先級總線(xiàn)仲裁器(見(jiàn)圖1),這種仲裁器包含一套可編程偽隨機或旋轉優(yōu)先級緩存替換算法。例如,在NetSilicon的 NS9750(見(jiàn)圖2)中,AHB上的六個(gè)通道不是通過(guò)競爭進(jìn)行分配,而是根據16槽位總線(xiàn)分配方案由六個(gè)總線(xiàn)主控分享。通過(guò)系統控制模塊中的專(zhuān)用寄存器,系統開(kāi)發(fā)者目前可采用三種方法在SoC中分配總線(xiàn)資源。
在最高層次,某特定總線(xiàn)主控每次發(fā)出的一個(gè)訪(fǎng)問(wèn)請求,都會(huì )按請求順序得到響應,直到這六個(gè)主控全被輪詢(xún)。根據所需帶寬,每一個(gè)總線(xiàn)主控可分配到一定數目的槽位并獨占這些槽位。例如在NS9750中,四個(gè)槽位分配給CPU,四個(gè)槽位給以太網(wǎng),四個(gè)槽位給BBus橋,三個(gè)槽位給LCD,三個(gè)槽位給PCI/卡總線(xiàn),但在系統運行期間系統軟件會(huì )根據需要重新評估這一分配方案,這可用來(lái)確定AHB總線(xiàn)周期的數目。如果在下一個(gè)評估周期中情況沒(méi)有發(fā)生變化,則沿用以前的設置,如果情況有變,則協(xié)定新的總線(xiàn)主控槽位分配方案。
為對總線(xiàn)資源進(jìn)行更精確的控制,這種循環(huán)仲裁方案提供兩個(gè)附加層次的可編程性能:分配給ARM CPU的總線(xiàn)帶寬大小以及這16個(gè)槽位中每個(gè)槽位的帶寬利用率。
NS9750 的ARM926EJ-S內核作為總線(xiàn)主控時(shí)不能控制所有總線(xiàn)資源,缺省情況下它只能控制50%的總線(xiàn)帶寬或16個(gè)槽位中的8個(gè),這樣可確保其它五個(gè)總線(xiàn)主控可以一直占有至少50%的總線(xiàn)帶寬。不過(guò),在程序設計者直接控制下,它可以按照指令將其部分帶寬釋放給另一個(gè)總線(xiàn)主控,或者,在該總線(xiàn)仲裁周期內或程序設計者認為必要的任何周期中控制另外的槽位。
程序設計者也可為每個(gè)槽位選擇帶寬利用系數——100%、75%、50%或25%。這一選擇是通過(guò)控制何時(shí)以及以怎樣的順序分配每個(gè)槽位的訪(fǎng)問(wèn)來(lái)實(shí)現的,系數為25%,則這個(gè)槽位每四個(gè)周期只能被輪詢(xún)一次;系數為50%,則每?jì)蓚€(gè)周期輪詢(xún)一次;75%,則每四個(gè)周期輪詢(xún)三次。
對旋轉總線(xiàn)仲裁器進(jìn)行編程
程序設計者可通過(guò)包含在系統控制模塊內的幾個(gè)寄存器定義多種選項。第一個(gè)寄存器是16入口總線(xiàn)請求配置寄存器,它的每一個(gè)入口代表一個(gè)主控和一個(gè)準許槽位的總線(xiàn)請求。每一個(gè)請求/準許槽位每次只能分配給一個(gè)總線(xiàn)主控,但根據總線(xiàn)主控的帶寬要求,每個(gè)總線(xiàn)主控可同時(shí)連接多個(gè)請求/準許槽位。當多個(gè)通道分配給一個(gè)主控時(shí),這些通道應均勻分布在這16個(gè)通道當中。
每個(gè)請求/準許槽位都有一個(gè)兩位的帶寬壓縮字段(BRF),用以確定每個(gè)槽位能對系統總線(xiàn)進(jìn)行仲裁的頻率(100%、75%、 50%或25%)。BRC將總線(xiàn)請求信號輸出到第二個(gè)16入口總線(xiàn)請求寄存器(BRR),默認情況下,BRC中未被分配的槽位將阻止用任何總線(xiàn)請求信號設置相應的BRR入口。
第四個(gè)寄存器用于存儲哪個(gè)總線(xiàn)主控有數據在等待向AHB傳輸,而第五個(gè)寄存器則是程序設計者用來(lái)為每個(gè)總線(xiàn)請求和準許槽位(分配給特定總線(xiàn)主控)分配權重值。
使用循環(huán)仲裁
圖3:NS9xxx的總線(xiàn)架構。
在前面例子中,當基于特定仲裁再分配調度方案的LCD請求額外的總線(xiàn)訪(fǎng)問(wèn)時(shí),程序設計者可根據LCD必須處理的數據流的性質(zhì)來(lái)指定分配給LCD的優(yōu)先級。如果程序設計者認為需要分配10個(gè)槽位給LCD控制器,剩余的6個(gè)槽位會(huì )按最初仲裁方案分配給其它總線(xiàn)主控。這樣LCD控制器可獲得十倍于正常情況下可得到的帶寬,以及十倍于其它主控的帶寬來(lái)處理這種特定情形下的負載。
當通過(guò)以太網(wǎng)連接傳送數據、同時(shí)LCD屏幕進(jìn)行刷新的時(shí)候,這種特性十分重要。LCD需要實(shí)時(shí)、準確地進(jìn)行刷新,且不會(huì )被以太網(wǎng)請求中斷。
在典型的AMBA總線(xiàn)架構中,如果LCD對總線(xiàn)提出請求,不論有怎樣的刷新需求,它都不得不等待直到以太網(wǎng)主控將總線(xiàn)釋放出來(lái)。采用新的循環(huán)可編程仲裁方案,程序設計者可降低以太網(wǎng)傳輸的優(yōu)先級,使數據以更低但可接受的速率傳輸,確保LCD得以適當地刷新而不至于使屏幕出現空白。
如果為保證活動(dòng)畫(huà)面顯示對LCD延時(shí)和帶寬要求極高,則以太網(wǎng)協(xié)議需求還可進(jìn)一步降低傳輸速率。但停止數據流傳輸是不可以的。實(shí)際上,如果LCD主控控制了該總線(xiàn)并且只有當刷新工作完成后才將總線(xiàn)釋放,則有可能停止數據流的傳輸。
在外圍總線(xiàn)中增加突發(fā)模式DMA
在基于A(yíng)MBA的設計中,外圍總線(xiàn)的傳統設計方法是假定基于A(yíng)RM內核的嵌入式器件用于低端性能應用。但現在的器件經(jīng)常需要在不切斷低帶寬外圍電路訪(fǎng)問(wèn)總線(xiàn)資源的情況下,運行一種或多種高帶寬應用。在具有較多外圍電路的設計中,這種情況特別容易出問(wèn)題。例如NS9750或NS9360,它們支持USB、 I2C,具有四個(gè)多功能串行模塊(可選用UART或SPI,同步模式下的速率可達11Mbps)、50個(gè)單獨的可編程GPIO引腳、一個(gè)IEEE1284 外圍端口以及16個(gè)通用定時(shí)器或計數器(每個(gè)都有自己的I/O引腳)。
在傳統的APB實(shí)現方案中,采用FIFO就足以應付通信外設(如UART)的低速率傳輸,FIFO可以在處理器必須介入并訪(fǎng)問(wèn)APB之前將數個(gè)字節傳送到接口。但在本文所描述的許多高端嵌入式應用中,一個(gè)或多個(gè)這樣的外圍電路可能需要高帶寬傳輸,要求能通過(guò)APB/AHB橋快速訪(fǎng)問(wèn)主要的高性能總線(xiàn)。
一種讓外圍總線(xiàn)工作于這種突發(fā)模式的方法,是僅用一條突發(fā)模式外圍總線(xiàn)(如NetSilicon的 BBUS)替代APB總線(xiàn)。這種突發(fā)模式外圍總線(xiàn)帶有四個(gè)支持突發(fā)模式的總線(xiàn)主控(見(jiàn)圖3):第一個(gè)總線(xiàn)主控是具有13個(gè)通道的DMA引擎,支持13個(gè) USB端點(diǎn);第二個(gè)總線(xiàn)主控是具有12個(gè)通道的DMA引擎,支持4個(gè)串行模塊(每個(gè)串行模塊有8個(gè)通道)和1284端口;第三個(gè)總線(xiàn)主控為BBUS- AHB橋,它包含一個(gè)DMA引擎,該引擎具有可訪(fǎng)問(wèn)AHB系統總線(xiàn)的通道;第四個(gè)總線(xiàn)主控是一個(gè)USB宿主模塊。另外,這種DMA引擎有兩個(gè)獨立的專(zhuān)用 DMA通道,可支持連接到外部存儲總線(xiàn)的外部設備。為簡(jiǎn)化突發(fā)模式狀態(tài),每一個(gè)內部DMA通道以“飛越模式”(fly-by mode)在系統存儲器及BBUS外圍電路之間傳輸數據,而兩個(gè)外部DMA通道則選擇存儲器到存儲器的傳輸模式。
評論
查看更多