繼承與創(chuàng)新:Innovasic Fido微控制器
上世紀最早出現的CISC (復雜指令集計算機) 計算機結構,現又悄然興起——Xilinx, Tensilica, Sun Microsystems和Power聯(lián)盟等組織帶頭復興 CISC 計算機結構。畢竟CISC 指令至今仍存在優(yōu)于RISC之處。ISA(工業(yè)標準結構)雖不斷更替,但有些東西仍經久不變。如Freescale的老式68K結構至今仍在應用。68K系列至今仍一直保有32位處理器市場銷售額最高的地位,直到幾年前被ARM所取代。68K系列的長壽有很多原因:容易編程,支撐軟件優(yōu)良,從性能、封裝、價格水平到外圍設備種類廣泛,適應各類客戶的需要。以至于68K結構一度成為嵌入式處理器的代名詞。Freescale 68K的產品系列的銷售額每年都高達數百萬美元。只要數以千計的忠誠于68K的開發(fā)人員尚未退休,它的市場份額暫時不會輕易失去。
Innovasic公司發(fā)現了CISC的潛在機遇,設計制造了一款與Freescale公司 68K系列相兼容的、新型32位Fido 1100微處理器芯片。Fido 1100并不只是一款克隆68K的產品,而是在68K結構的基礎上,增加了創(chuàng)新的外設與硬件實時任務切換等新技術。
仿制高手
Fido 是Innovasic生產的第一款兼容于68K的芯片。其實Innovasic是克隆微處理器經驗豐富的廠家。過去十年以來,Innovasic的工程師們曾為停產的多個8位和16位微控制器生產過完全兼容的替代產品。不僅軍方是Innovasic的大量客戶,在尋找市面上難以找到的產品時,嵌入式和業(yè)界的設計人員也會經常想起Innovasic。Innovasic的仿制經驗使其充滿自信地推出了自己的原始芯片Fido,這款芯片雖然沿用了68K的編程模式和指令集,但芯片關鍵的微結構內核、內部總線、以及外設等的設計都是自主的創(chuàng)新。例如,Fido使用的鐘頻提高到66MHz,以取勝于Freescale的 680x0和ColdFire。
真正的實時
Fido的設計讓人感覺有些“自相矛盾”。如它所兼容的68K指令集是卡特時代的產品,但Fido的微結構內核卻驚人地現代化。Fido芯片的外設類別看似極為平常的I/O,而其實現卻絕非一般。粗覽數據表時,Fido顯得十分普通,但實際上卻有創(chuàng)新的技術內涵。Fido通過硬件取代一貫沿用的常規(guī)軟件任務切換,提高性能的同時也簡化了新手的使用。片上有五組32位程序員可見的地址、數據和控制/狀態(tài)寄存器組??梢栽趩我粫r鐘周期內,從某一寄存器組切換到其他任一組。由這套硬件代替?zhèn)鹘y(tǒng)的軟件任務切換功能,或代替?zhèn)鹘y(tǒng)實時操作系統(tǒng)的初等操作內核。嵌入式應用中,有了這套硬件,就足夠應付五個任務以內的一切操作管理了。五個任務以下的操作管理也是一般應用都會用得著的。Innovasic 建議,任務多于五個時,僅需在五組中的一組上運行傳統(tǒng)的軟件任務管理程序或實時操作系統(tǒng)即可。
圖1 Fido 1100方塊圖
Fido維護這五個任務,采用物理上雙份的程序員可見寄存器組,而且可以指定某一份在某個周期上使能。五個寄存器組的用戶及監(jiān)控的特權級別與68K編程器的相同,當中斷或異常發(fā)生時,便無需處理器再行干預切換事物了。Fido的片上中斷控制器中含有中斷屏蔽位、中斷優(yōu)先級位、和為硬件任務指定中斷源域。從而,在該中斷開放的情況下,就能夠觸發(fā)硬件任務的切換,或是由當前任務,如同任一68K處理器一樣,來處理中斷。
任務切換還有其他一些因素。程序員可以給五個寄存器組各分配一個優(yōu)先級,使高優(yōu)先級任務能中斷當前任務。另外,當前任務也能把自己置于休眠態(tài),將控制讓予其他任務。從而,可以使用一個定時器即可簡單地實現任務輪換,或優(yōu)先級任務切換。各種任務排列組合后的切換算法都是可能的,Innovasic認為這是留給程序員的最好練習。
緊拽住軟件價值鏈
Fido 將Freescale CPU32+的指令集的字節(jié)數加倍,其執(zhí)行時間與Freescale指令相比,處處有一個時鐘周期的差異。這一點并不奇怪,Freescale的 CPU32+,芯片不同,執(zhí)行時間也不盡相同。作為Fido的客戶,要充分以利用CPU32+軟件開發(fā)工具在這方面已有的功能。就是說,絕大多數68K的開發(fā)工具Fido都可以利用。如Fido這樣的新開發(fā)的處理器,尚未建立自己軟件庫之前,都可以從Freescale原有開發(fā)工具中獲取幫助。
Fido在確定性輸出方面,有三大特點:高速緩存具有確定性;I/O極具靈活性;和任務切換僅需單周期。
Fido所用的高速緩存并非是常用的那種高速緩存,實際是32KB的。程序員可以拆分和從新映射到處理器的幾乎全部代碼空間。這樣的安排,比通常中間暫存的DRAM更加靈活。它已經不是普通意義下的緩存,倒是更像可寫又可控的存儲器。另外最重要地是,它克服了通常高速緩存存在的不確定性。不確定性是實時系統(tǒng)中最致命的缺陷。Fido 1100除去32KB的確定性緩存,還附加24KB SRAM的一般暫存存儲器。
Fido的I/O,像許多微控制器片上集成的I/O控制器一樣,支持以太網、UART、I2C、CAN、SPI、和其他一些常用接口。實際上,Fido具有四個通用的可編程I/O控制器(UIC),由它們模擬出上述的各種外設接口。每個UIC(見圖1)可以表現為高速串行口、16位并行口等等,直到10~100Mb/s以太網的MAC。Fido芯片上的每個UIC,都可以通過改變固件,而實現不同的配置或各種各樣的產品。
Fido的可編程I/O接口,是通用的但非唯一。 Fido的I/O設計與Ubicom的 IP3000系列芯片的很相似。 Cradle、 Cavium Networks、 Triscend (已被Xilinx收購)、 Morpho、 Stretch、和 Freescale等公司所生產的芯片,片內都具有可編程的I/O引擎,用以模擬各種標準的外圍接口。然而,Fido的方案中,UIC引擎的編程不是由用戶完成的。這一點與Freescale公司 PowerQUICC處理器中的通信引擎類似。Innovasic將UIC引擎的結構及其指令的版權,死死地捏在自己手中。目前,Innovasic免費向客戶提供外圍設備接口的管理固件,它還宣布不久的將來,會有軟件外設問世,眼下的客戶暫時要受點委屈。
調試問題
應該在編程時就該把調試和排錯考慮在內。調研表明,嵌入式的編程人員花費在調試上的時間,在項目的策劃、工程和編程的總時間里,約占40%以上。調試已經成為開發(fā)者最頭疼的一項工作。綜上所述,需要一個能提供現成的優(yōu)秀調試工具的市場。很早以前,已有少數處理器生產商將調試電路直接集成在芯片之中。如Freescale 的后臺調試模塊(BDM,Background Debug Module)。BDM很受嵌入式編程人員的歡迎。Innovasic沒有復制Freescale的 BDM,而是研制了自己的BDM替代品,起名為軟件評價與集成調試環(huán)境,英文名的字頭縮寫是SPIDER (Software Profiling and Integrated Debug EnviRonment)。SPIDER包括硬件斷點,跟蹤緩沖器,上下文識別寄存器等功能部件。
這些硬件資源與開發(fā)用宿主機上的標準GNU/Eclipse操作系統(tǒng)、軟件工具等通過芯片上的串口(通常是以太口)或是片上的JTAG口相連接。硬件斷點與近代異常中斷標準中的典型做法一樣。它們應有上下文識別能力,應可設置成僅在指定上下文激活時才去觸發(fā)。程序員在調試五個硬件上下文寄存器中的任一個時,其他四個上下文寄存器應該照舊運行。
Fido片上的24KB SRAM、外部RAM、或是連接于以太口或JTAG口上的其他外存,都可以用作跟蹤緩沖器。因而可以說,Fido具有無限的事件記錄能力,視外存的容量而定。如果程序員打算跟蹤的事件量過大,JTAG或以太口的帶寬可能會限制存儲器容量的發(fā)揮,但是無論如何,它畢竟是其他芯片所沒有的很有用的選項。只要不是對以太網接口本身進行調試,可以通過JTAG使用以太網,這樣做能夠相當大地改善帶寬。要是工作于66MHz鐘頻,使用Fido的以太口會實現從容不迫的跟蹤記錄,而不致產生瓶頸。
Fido有一套包括:SDRAM控制器、雙通道DMA控制器、片選信號系統(tǒng)、和各種門類的計數/定時器等穿插在一起的電路,用它可以組成各種硬件外圍設備。內部數據通道位寬雖是32位,而芯片的外部數據總線則為16位,另有16位的SDRAM接口,其中有13位為地址線,接口運行于內核頻率的66MHz。像各有自我側重的CISC處理器一樣,Fido能夠完成向任意外部地址傳輸非整體總線寬度的數據。
能買得起嗎?
Fido是哪一類的處理器,在哪些方面有競爭力呢?Fido 1100是具有大量數據輸出門,16位封裝,低價位(每千片單價10美金),與時俱進的32位微處理器。Fido 1100,比一般簡單的微控制器多硬件的乘法器和筒形移位寄存器。它是16位難于滿足性能要求時的潛在升級產品。Fido 1100雖說是新芯片,而實際上與Freescale的68K同宗。所以,68K的開發(fā)系統(tǒng)、68K的經驗,和原有的支撐軟件都可以照樣使用。
Fido的部分魅力來自68K的血統(tǒng),所以原有基于68K的各種芯片,自然而然地就成為相互競爭的對手。
表1中的ColdFire 5206與Fido價格一樣,而運行速度較Fido慢了一倍,片上的RAM及外設也都較少。至于ColdFire v2,有Fido缺乏的硬件乘法累加器(MAC)和整數除法指令,可惜對許多用戶也還是不足夠。Freescale的其他基于CPU32的控制器,如68360、68328等,與Fido的性能相當,可惜的是,它們的外設都是硬線邏輯的。純種的680x0 處理器,如030、040,它們的工作頻率較低,都只有40MHz,比Fido的運行速度慢,而價格又高出很多。但是,它們比Fido多了浮點運算單元(FPU),卻又缺乏外設。正確地說,它們的差異,原自于服務目標的不同。ColdFire有更多更好的性能,運行速度也很高。其中的5270系列與Fido有同樣的速度,同樣的外設、總線、存儲控制器,和同樣的價格。Freescale的芯片都使用的是慣用高速緩存,故而都存在令人煩心的時鐘周期不確定的缺陷。
注意:Fido的可變成通用I/O控制器一次只能模擬一種I/O接口。例如,一個UIC編程為以太網的MAC時,就不能再同時編程為UART。所以有些場合,Fido的I/O能力比專用的I/O控制器受到更多的限制。表中的N/A位數據未能提供。
結語
總而言之,Innovasic的Fido 1100為新型的32位微控制器開創(chuàng)了一個新的起點。多少年來,68K芯片一直缺乏第二來源。在ARM、 MIPS 、和 Power Architecture的芯片都有多個廠家供貨的時代,能夠看到一向保守的68K也有了第二來源,令人十分欣慰。
在工業(yè)應用領域中,芯片執(zhí)行時間的可預測性是頭等重要的大事;軟件的執(zhí)行時的時間擺動會引起機械問題或復雜的調整問題。有少數的重要項目的開發(fā)者的全部的工作就在于計算周期數。在那里,高速緩存被禁用,就連DRAM也需經過仔細地處理,因為其刷新周期有時會意想不到地中斷總線的正常活動。這樣的市場,正是Innovasic展示自己經驗,Fido顯示克服周期搖擺的良好時機。
對于主流的開發(fā)者,Innovasic應該可以頂替Freescale的ColdFire系列產品。Fido使用軟件來定義各種外設的特色,對于那些混合型終端產品的開發(fā)者具有最大的誘惑力。他們期望能夠輕松地配置出混合的外圍設備,伴隨著自然而然地同時也就得到了期望得到的終端產品?;ㄙM同樣10美元的代價,用下載軟件的方法就可以獲得各種所需的I/O的組合,再加上Fido獨具的68K血統(tǒng)的優(yōu)點,對于既求實用又具懷舊情調的開發(fā)者,Fido將是最佳的選擇。(梁合慶編譯)
評論