摘要:介紹了基于MIPS指令集的嵌入式處理器BCM1250的雙向核、大容量片內(nèi)緩存、多類型通信接口等主要特性,并對其應用方案、啟動過程、操作系統(tǒng)選擇等進行了探討。
關(guān)鍵詞:MIPS 嵌入式RTOS SMP
1983年,斯坦福大學的John L.Hennessy成功完成了第一個采用RISC理念瓣MIPS(Microprocessor without Interlocked Pipeline Stages)微處理器。次年,他在硅谷創(chuàng)立了MIPS公司。該公司本身不生產(chǎn)微處理器,只設(shè)計高性能工業(yè)級的32位和64位CPU的體系結(jié)構(gòu),并且向其他半導體公司提供使用其內(nèi)核(IP)的授權(quán),用于生產(chǎn)基于MIPS而又各具特色的微處理器。目前已經(jīng)有50多家公司申請了授權(quán),相繼推出了一批個性鮮明的微處理器,如PMC-Sierra公司的RM7000系列、RM9000X2,NEC公司的VR55000、VR7700,而Broadcom公司開發(fā)的BCM1250一舉奪得了當年度嵌入式處理器論壇的“最佳高效能嵌入式處理器”大獎。
1 BCM1250處理器
BCM1250是Broadcom公司開發(fā)的基于MIPS架構(gòu)的雙內(nèi)核、高性能64位RISC微處理器,采用0.13μm CMOS工藝制造,860引腳BGA封裝(42.5×42.5mm),最高主頻1GHz。芯片集成了兩個名為“SB-1”的內(nèi)核(CPU0和CPU1)。SB-1內(nèi)核不僅實現(xiàn)了標準的MIPS64指令集架構(gòu),而且增加了MIPS-3D和MIPS-MDMX專用擴展指令。在1GHz時,兩個內(nèi)核具有4000MIPS或10Mpps的處理能力。
BCM1250是一種緊耦合共享內(nèi)存對稱式多處理器(SMP)。SMP系統(tǒng)定義為通過一個公共高速總線,將多個相同的處理器與內(nèi)存和I/O設(shè)備等一系列外圍設(shè)備連接起來的系統(tǒng)?!皩ΨQ”意味著每個處理器在訪問共享內(nèi)存和外圍設(shè)備時,訪問機制相同。所謂“緊耦合”是指各內(nèi)核個體之間距離很近,并通過一個通用高速總線實現(xiàn)物理互連。這些內(nèi)核通過公共高速總線共享一個全局內(nèi)存模塊(即共享內(nèi)存)以及諸多外圍設(shè)備。
圖1是BCM1250的內(nèi)部結(jié)構(gòu)框圖。主要特點如下。
1.1 高性能雙內(nèi)核和大容量緩存
(1)兩個64位MIPS內(nèi)核SB-1。每個內(nèi)核能夠在一個時鐘周期發(fā)射4條指令。每個內(nèi)核包含32KB 4路組關(guān)聯(lián)指令緩存和32KB 4路組關(guān)聯(lián)數(shù)據(jù)緩存,64位入口的全關(guān)聯(lián)TLB(Translation Lookaside Buffer)。
(2)兩個SB-1共享4路組關(guān)聯(lián)二級高速緩存(L2 Cache),每路128KB,共512KB。與其它系統(tǒng)不同的是,內(nèi)核與I/O DMA主設(shè)備共享這片緩存,就像緩存處于內(nèi)核和SDRAM(內(nèi)存)之間,所有對內(nèi)存的訪問都在二級緩存中檢驗。并且,每路Cache可以單獨設(shè)置為存儲器模式,作為存儲器使用,而且速度不變。
(3)面向網(wǎng)絡分組處理優(yōu)化的片內(nèi)公共高速總線Zbbus,256位(1個緩存線長cache line)數(shù)據(jù)寬度,速率是CPU主頻的一半,將兩個CPU、L2 Cache、SDRAM控制器和I/O橋等連接起來??偩€使用MESI協(xié)議以保證兩個CPU、L2 Cache、內(nèi)存和外部設(shè)備的數(shù)據(jù)的一致性。
(4)兩個內(nèi)核之間可以通過指令(ll、lld、sc和scd指令)和中斷等方式進行通信。每個內(nèi)核含有一個郵箱(mailbox)寄存器。當一個內(nèi)核通過Zbbus總線訪問另一個內(nèi)核的郵箱寄存器時,產(chǎn)生中斷。
1.2 外圍控制模塊和多類型通信接口
(1)DDR SDRAM控制器包括兩個通道,每個通道64位數(shù)據(jù)寬度,另加8位ECC數(shù)據(jù),支持兩條JEDEC標準的133MHz DDR DIMM。每個通道的帶寬高達16Gbps。如果采用DRAM芯片,輔以嚴格的走線控制,速度可達到200MHz,帶寬高達50Gbps。ECC單元能夠檢測2位錯誤,糾正1位錯誤。
(2)一個遵循PCI2.2標準的PCI接口,32位數(shù)據(jù)寬度,最高速率66MHz。內(nèi)部PCI仲裁器支持4個外部設(shè)備。
(3)一個遵循HyperTransport 1.03標準的HyperTransport接口(簡稱HT接口)。HyperTransport的性能比PCI總線高,是PCI總線的升級換代產(chǎn)品,由AMD公司在1999年的微處理器論壇上首先提出。HT設(shè)備采用標準的PCI配置方法。發(fā)送和接收的數(shù)據(jù)寬度都是8位。HT總線的參考時鐘是100MHz,但是發(fā)送數(shù)據(jù)的速率可以是參考時鐘的6位,而且時鐘的上下邊沿都能觸發(fā)。
(4)三個遵循IEEE802.3標準的MAC控制器,支持10Mbps、100Mbps、1Gbps以太網(wǎng)接口,可以運行在全雙工或者半雙工模式,可以設(shè)置收發(fā)數(shù)據(jù)包的最大長度和最短長度,甚至支持16K~1B的大包。MAC控制器支持VLAN——一個便于組建虛擬局域網(wǎng)的標志。不僅如此,控制器還能夠識別以太網(wǎng)包的類型、Ipv4包的校驗和TCP/UDP包的校驗和,并且能夠根據(jù)數(shù)據(jù)包的目的地址進行過濾,選擇是否接收廣播包??刂破靼?2位RMON統(tǒng)計寄存器,可以統(tǒng)計接收和發(fā)送的數(shù)據(jù)量、失敗次數(shù)、CRC出錯次數(shù)等。所以,有的資料將BCM1250稱作網(wǎng)絡處理器,因為其MAC的功能比普通MAC強大。
(5)除了標準的以太網(wǎng)模式,網(wǎng)絡接口還能夠配置成Packet FIFO模式。在此模式下,MAC控制器引腳復用作Packet FIFO,設(shè)置為8位或者16位數(shù)據(jù)通道,速率可達208MHz。
(6)兩個串口既可以工作于同步模式,也可以工作于異步模式的最高速率為5Mbps。兩個串口的模式選擇分別由AD[12]和AD[14]引腳在啟動時的電平?jīng)Q定。當然,CPU可以通過系統(tǒng)配置寄存器改變串口模式。串口的同步模式分為兩種子模式:HDLC和Transparent。
(7)設(shè)備控制器向外引出通用總線,用于連接外圍設(shè)備。它有8個片選信號CS[0:7],其中CS[0]專用于連接bootrom,CS[7]用于連接PCMCIA設(shè)備。每個片選空間的最大容量為256MB,可以獨立設(shè)置時序、數(shù)據(jù)寬度、地址空間等參數(shù)。上電時,CS[0]映射到4MB物理空間,從0x1FC00000~0x1FFFFFFF。0x1FC00000是MIPS處理器的啟動中斷入口地址。
(8)一個遵循PCMCAI 2.1標準的PCMCIA接口,支持外接PCMCIA存儲卡的熱插拔,能夠根據(jù)卡的插入和拔出相應地上下電。PCMCIA接口、中斷、通用輸入輸出口三者的引腳是復用的,設(shè)計師應根據(jù)實際需要決定取舍。PCMCIA接口需要消息10個GPIO引腳。
(9)16個GPIO引腳既可以配置成中斷引腳,也可以配置成普通數(shù)據(jù)輸入輸出引腳或者PCMCIA接口。
(10)兩個SMBus接口,遵循SMBus(系統(tǒng)管理總線)標準1.1,與I2C總線兼容。最高工作頻率為400kHz。系統(tǒng)可以選擇從SMBus 0接口的EEPROM啟動。啟動方式由引腳AD[17:18]在上電時的電平?jīng)Q定。
(11)多個DMA控制器。每個同步串口含有一個發(fā)送和接收DMA通道,每個網(wǎng)口有兩個支持QoS的發(fā)磅和接收DMA通道。還有4個專用于存儲器和其它設(shè)備(例如PCI,F(xiàn)lash)之間搬運數(shù)據(jù)的DMA。
(12)I/O橋0和I/O橋1將外圍模塊和內(nèi)部高速總線Zbbus隔離開來。
(13)兩個看門狗(Watchdog),4個通用定時器,4個40bit性能計數(shù)寄存器。定時器的最小單位為1μs。
(14)一個符合IEEE1149.1標準的JTAG接口,方便了硬件調(diào)試和測試。
1.3 其它
(1)低功耗,運行在800MHz主頻下的功耗為8~10W。
(2)芯片既可以工作于Big Endian模式,也可以工作于Little Endian模式,取決上電時引腳AD[22]的電平。
(3)為減少抖動,外部100MHz時鐘以差分信號方式輸入到芯片,經(jīng)過內(nèi)部的PLL倍頻或分頻,分別輸送給內(nèi)核、存儲器、Zbbus、HT接口、定時器、波特率發(fā)生器等單元。
(4)內(nèi)核電壓和HT接口電壓為1.2V,DDR SDRAM接口電壓為2.5V,其它模塊接口電壓為3.3V。
2 應用與實現(xiàn)的探討
2.1 典型應用
圖2是BCM1250的典型應用框圖,配合不同的外圍器件,可以構(gòu)成多種應用方式。PMC插槽可以擴展多種應用,例如網(wǎng)卡、DSP卡、IPSec卡等,DDR SDRAM既可以是內(nèi)存條,也可以是焊在電路板上的SDRAM芯片。串行設(shè)備可以是EEPROM或者實時時鐘芯片等,其它設(shè)備可以是USB控制器等。本系統(tǒng)的特點是可靠性高、擴展性強、通信接口多、占用空間少,適合于大型路由器、VoIP網(wǎng)關(guān)、交換機、無線基站等高端場合。
2.2 啟動
因為是雙核CPU,所以在實現(xiàn)過程中應特別注意合理安排系統(tǒng)的啟動順序。上電后,上電復位信號COLDRES_L必須保持為低電平直到電源和參考時鐘穩(wěn)定在工作范圍之內(nèi);然后BCM1250讀取配置PLL倍頻系數(shù)的引腳電平,從AD引腳讀取系統(tǒng)其它配置信息,例如,是否選用PCI內(nèi)部仲裁器,串口是否工作在同步模式等。啟動時,芯片根據(jù)AD[17:18]信號電平,選擇從掛在通用總線CS0上的Flash,或者從SMBus 0口的串行EEPROM讀取啟動代碼。
圖3以Windriver公司的VxWorks嵌入式實時操作系統(tǒng)為例,說明了啟動順序。其它操作系統(tǒng)的啟動順序類似。CPU0首先初始化,CPU1保持啟動狀態(tài),等待CPU0完成基本的內(nèi)核初始化、串口初始化、L1 Cache和L2 Cache的初始化;然后CPU0對CPU1初始化,包括內(nèi)核的基本初始化和CPU1內(nèi)部的L1 Cache初始化;接著,CPU1再次等待,CPU0對DDR SDRAM進行初始化,再將操作系統(tǒng)等數(shù)據(jù)從ROM復制到SDRAM,通知CPU1,然后啟動操作系統(tǒng);CPU1收到通知后,也將數(shù)據(jù)從ROM復制到SDRAM,運行操作系統(tǒng)的復本。較早地初始化串口,是為了便于通過計算機屏幕及監(jiān)測系統(tǒng)的啟動狀況,判斷故障所在。
2.3 選擇操作系統(tǒng)的考慮
因為BCM1250是一種SMP系統(tǒng),所以選擇操作系統(tǒng)時應考慮SMP系統(tǒng)的特點,充分發(fā)揮BCM1250的雙內(nèi)核特性。與單核處理器相比,SMP系統(tǒng)的優(yōu)勢是顯然的:
(1)在完成一組任務時,兩個CPU并行運行比一個CPU單獨運行的速度快得多。
(2)即使有一個CPU出現(xiàn)了致命故障,另一個CPU也能無縫地接管它的工作,降低系統(tǒng)的停工時間。
SMP系統(tǒng)與分布式多處理器的區(qū)別在于:在一個分布式多處理器系統(tǒng)中,處理單元個體通常以單獨節(jié)點的形式存在,每個這樣的節(jié)點中的處理器類型可以不同,并且各自配備內(nèi)存和I/O設(shè)備。每個處理器可以運行自己的操作系統(tǒng),只通過一種互連方式(例如以太網(wǎng)),利用消息或旗語來與其它處理器同步。而緊耦合共享內(nèi)存SMP系統(tǒng)則不同。在SMP系統(tǒng)中,所有的處理器都運行操作系統(tǒng)的同一個副本,該操作系統(tǒng)可協(xié)調(diào)每個相似的CPU上同時發(fā)生的活動。由于緊耦合CPU所訪問的是一個公共內(nèi)存區(qū),所以它們必須通過一種基于低延時共享內(nèi)存的通信機制實現(xiàn)相互之間的同步。這對操作系統(tǒng)提出了要求。
其次,如果操作系統(tǒng)選擇得當,能使硬件中確切的處理單元數(shù)對應用程序員透明。于是應用軟件就能不進行任何針對SMP的修改而運行。
再次,BCM1250同時有兩個任務在運行,兩個CPU都可以處理中斷,所以操作系統(tǒng)還必須具備“旋轉(zhuǎn)鎖”等機制,保證任務的合理調(diào)度和中斷的及時處理。
業(yè)界流行的MontaVistaLinux專業(yè)版、VxWorks等RTOS均支持SMP系統(tǒng)。當然,用戶也可以將單處理器RTOS擴展為支持SMP的系統(tǒng)。
雖然BCM1250比單內(nèi)核處理器在結(jié)構(gòu)上只多了一個內(nèi)核,但是在啟動順序、任務調(diào)度、中斷管理等方面卻有著較大的差別,相應地對RTOS提出了較高的要求。BCM1250主要用于高端設(shè)備,在國內(nèi)的開發(fā)應用還不普及。