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