![]() 實(shí)時(shí)系統需要快速和可預見(jiàn)的響應,這歷來(lái)是出了名的實(shí)施難題。隨著(zhù)多核處理器的使用,這個(gè)困難已經(jīng)變得越來(lái)越大。在本文中,XMOS的市場(chǎng)營(yíng)銷(xiāo)總監Andy Gothard先生概述了XMOS的xCORE多核微控制器系列如何提供了一種方法,為實(shí)時(shí)系統帶來(lái)了并發(fā)處理的優(yōu)勢…… 在處理器中采用多核體系架構的主要原因有兩個(gè):要盡量避免持續性的工藝線(xiàn)寬縮小所帶來(lái)的局限性——實(shí)際上是避免摩爾定律的限制——或以一種更有效方法來(lái)解決某些類(lèi)型的問(wèn)題。在這兩種情況下,系統開(kāi)發(fā)人員都不得不應對同樣的問(wèn)題;創(chuàng )建在多個(gè)內核上同時(shí)運行的軟件。 在現實(shí)世界中,各種活動(dòng)不是以線(xiàn)性方式進(jìn)行的。即使是在諸如工廠(chǎng)生產(chǎn)線(xiàn)這樣的經(jīng)典線(xiàn)性活動(dòng)中,其他任務(wù)也是相伴主要生產(chǎn)流程而發(fā)生的;如子系統的組裝、輪胎成型并安裝在車(chē)輪上等等。 計算機已經(jīng)普遍采取了不同的策略:從早期的實(shí)現方法開(kāi)始,計算機體系架構已迫使開(kāi)發(fā)人員利用單個(gè)處理器的線(xiàn)性瓶頸。但是,從20世紀70年代開(kāi)始,經(jīng)常有人試圖打破這一櫛楛。 有些應用自然適合于并行運行;通常是那些個(gè)中的大問(wèn)題可以很容易地分成多個(gè)較小任務(wù)的情況,這些小任務(wù)可以同時(shí)得到解決。經(jīng)典的應用是天氣預報或大型物理科學(xué)問(wèn)題。這些類(lèi)別的問(wèn)題是由部署了成千上萬(wàn)個(gè)相同處理器的大型超級計算機來(lái)解決的。 包括現今的智能手機在內的其他應用,都使用了幾種不同的處理器,包括傳統中央處理單元、圖形處理單元、數字信號處理器和專(zhuān)用邏輯。 而最近多核芯片備受人們關(guān)注。這些集成了兩個(gè)或兩個(gè)以上處理器的單個(gè)器件最初被看作是一種可持續獲得更多處理能力、同時(shí)使用更少功率的方法,并且已被部署在臺式電腦以及類(lèi)似應用中。 雖然制造這些類(lèi)型的多核芯片在物理上相對簡(jiǎn)單,但它們也提出了部署方面問(wèn)題:在臺式環(huán)境中,現有應用并不是為多個(gè)處理器設計的,一般都是一個(gè)應用運行在一個(gè)獨立的內核上,而操作系統也管理為其他核分配其他任務(wù)。 用于開(kāi)發(fā)和調試運行在多核器件上的應用的新工具正在不斷涌現,但這些仍然不是簡(jiǎn)單的任務(wù)。特別是調試還是很困難,因為在兩個(gè)或兩個(gè)以上處理器運行軟件的時(shí)候,當一個(gè)錯誤發(fā)生時(shí),依賴(lài)于重新創(chuàng )建一個(gè)系統準確狀態(tài)的許多標準調試技術(shù)已不再適用。 在觀(guān)察嵌入式應用、特別是實(shí)時(shí)應用的時(shí)候,問(wèn)題就變得更大了。即使是用一個(gè)傳統單核處理器,也很難開(kāi)發(fā)實(shí)時(shí)系統。一個(gè)特別問(wèn)題是對一個(gè)緊急需求的反應,處理器通常不得不接收一個(gè)中斷,暫停當前正在處理的、包括存儲設置的操作,然后對中斷做出反應。這需要時(shí)間,但更糟糕的是,它需要的時(shí)間并不總是可以預測的。如果有多個(gè)處理器,這種不確定性會(huì )變得更大。處理器之間的消息傳遞通常是通過(guò)共享的內存,這又是不確定的。 一種不同的體系架構 XMOS的xCORE體系架構是專(zhuān)為解決諸多這類(lèi)問(wèn)題而創(chuàng )立:特別是,它設計的目的就是要通過(guò)一個(gè)并發(fā)多核體系架構來(lái)解決實(shí)時(shí)應用的問(wèn)題。 該體系架構的基礎是邏輯內核,這種內核是一個(gè)能夠以可確保的最低指令速度順序執行程序的32位處理單元。邏輯內核組合在一起構成了邏輯塊(tiles),每個(gè)邏輯塊可容納最多達八個(gè)內核。而實(shí)體器件可包含一個(gè)、兩個(gè)或四個(gè)邏輯塊。入門(mén)級器件xCORE XS1-L4 -64有一個(gè)帶有四個(gè)內核和400 MHz時(shí)鐘速度的邏輯塊;谟布恼{度器為每個(gè)內核分配執行的時(shí)間條,所以在這種情況下,每個(gè)內核都有100 MIPS的執行速度,或每個(gè)周期花10ns來(lái)執行任務(wù)。這種可預測的執行速率是確定性的核心,所以使xCORE非常適合實(shí)時(shí)應用。 在一個(gè)內核上運行的任務(wù)可以是一個(gè)更大問(wèn)題的子集,就像一個(gè)大規模并行超級計算機的非常小型版本;或者它們也可以是不同的應用,就像是多應用器件的一個(gè)版本。 一個(gè)邏輯塊上的內核共享內存。當一個(gè)內核正在執行一項任務(wù)時(shí),它可不使用任何緩存而訪(fǎng)問(wèn)全部?jì)却。這消除了不確定性的另一個(gè)可能的來(lái)源:任務(wù)間的通信和同步不需要軟件實(shí)時(shí)操作系統(RTOS)。取而代之的是包括IN和OUT指令的指令集。IN輸入來(lái)自一個(gè)源的一個(gè)數據字,而OUT發(fā)送一個(gè)數據字。如果兩項任務(wù)在一個(gè)通道上通信,則IN指令被阻止,直到OUT已被執行。通信速度快,而任務(wù)可以同步。 I/O引腳是完全可配置的。一組邏輯函數,即xCORE-Port,位于I/O引腳后面,并連接到一個(gè)邏輯處理器內核,以便在需要的時(shí)候創(chuàng )建外設。在xSOFTip庫中提供了多樣化的標準外設,包括各種UART、I2C、SPI、USB、以太網(wǎng)、CANbus、LIN和豐富的專(zhuān)業(yè)音頻接口。由于這些接口是以軟件定義的,它們可以自由地被定制:用戶(hù)也可以創(chuàng )建他們所需要的任意專(zhuān)用接口。 在使用不止一個(gè)邏輯塊時(shí),無(wú)論在同一器件上或另一器件上,通信是通過(guò)一種名為xCONNECT的專(zhuān)用高速體系架構實(shí)現的。此時(shí),運行在一個(gè)邏輯塊上的各個(gè)內核上的任務(wù)可以使用內存來(lái)交換數據,它們還可以通過(guò)通道來(lái)交換數據并同步數據。xCONNECT將通道擴展到其他邏輯塊上的內核,無(wú)論這些邏輯塊是在同一個(gè)芯片上或是在其他芯片上,是否在同一個(gè)電路板上或者甚至是其他電路板上。 xCONNECT的邏輯機制是一個(gè)通過(guò)XMOS鏈路來(lái)連接一個(gè)交換機網(wǎng)絡(luò )。從任務(wù)的角度來(lái)看,它通過(guò)一個(gè)通道發(fā)送一條消息,因為它將與同一邏輯塊中的另一個(gè)任務(wù)通信。在這種情況下,這條消息打開(kāi)了交換機來(lái)來(lái)創(chuàng )建一個(gè)路由,該路由可在一段通信會(huì )話(huà)結束時(shí)被關(guān)閉,或保持打開(kāi)來(lái)運載數據流。一則空的消息可以被用來(lái)建立任務(wù)之間的同步。典型延時(shí)是每跳100 ns,每個(gè)鏈路的帶寬可高達400 MBit/s。 這便為擴展一個(gè)應用的可用資源提供了一種簡(jiǎn)單的途徑:它很容易增加更大的處理能力、更大的內存和更多的I/O,而不會(huì )損失確定性。 當然,xCORE器件采用了XMOS專(zhuān)有的可配置多核微控制器體系架構。但在很寬廣的應用范圍內,ARM Cortex處理器是被一個(gè)巨大的生態(tài)系統所使用和支持的領(lǐng)先內核,該生態(tài)系統由工具、合作伙伴和軟件等成員組成。與此相適應的是,XMOS已經(jīng)創(chuàng )造了一類(lèi)全新的低能耗可編程SoC產(chǎn)品,它將xCORE技術(shù)與超低功耗ARM Cortex M3處理器結合在一起。xCORE技術(shù)支持所需外設精確組合的軟件配置,并能以時(shí)序精確的執行來(lái)支持最嚴格的硬實(shí)時(shí)要求。xCORE-XA系列擴展了這些功能,讓開(kāi)發(fā)人員可以利用豐富的ARM生態(tài)系統,包括可以大大加快產(chǎn)品設計時(shí)間的標準代碼庫。 開(kāi)發(fā) 電子產(chǎn)品中許多新進(jìn)展的致命弱點(diǎn)是缺乏足夠的開(kāi)發(fā)工具。從一開(kāi)始,XMOS就已經(jīng)把重點(diǎn)放在了提供一流的工具。極為豐富的xCORE系列開(kāi)發(fā)板(sliceKIT)得到了xSOFTip軟件外設和xTIMEcomposer Studio開(kāi)發(fā)工具的支持,其中包括一個(gè)編譯器、調試器、仿真器、靜態(tài)代碼分析儀,以及xSCOPE軟件邏輯分析儀。 XMOS時(shí)序分析儀(XTA)是一個(gè)基于形式化方法的工具,用以確保開(kāi)發(fā)的代碼滿(mǎn)足應用的時(shí)序要求,這對于實(shí)時(shí)系統至關(guān)重要。它可以用來(lái)進(jìn)行二進(jìn)制代碼的分析,以生成在最好和最壞時(shí)序情況下的時(shí)序路徑圖形化顯示。另外,衍生于系統規范的時(shí)序判斷可以?xún)戎糜诖a中,XTA將報告這些條件是否已經(jīng)被滿(mǎn)足。 xSIM為xTIMEComposer Studio增加了一個(gè)全功能仿真器,而xSCOPE可提供電路中在線(xiàn)調試。xSCOPE的界面類(lèi)似于一個(gè)傳統示波器,但它以非常高的性能提供了高級別的信息。與目標系統的USB 2.0連接是通過(guò)一個(gè)由xCORE提供支持的XTAG調試適配器實(shí)現的,它提供了高達1MSPS的數據傳輸速率。數據也可以存儲起來(lái)作為一份日后分析用的文件。 對xCORE的編程是在匯編程序中進(jìn)行的,可以使用C或C++。對于C和C++,一組簡(jiǎn)單的語(yǔ)言擴展提供了用于描述并行性和并發(fā)性的機制。這些還定義了數據流和事件,并可以用于高級腳本。該編譯器是基于LLVM項目的開(kāi)源編譯器。 xSOFTip功能單元塊被用于I/O和信號處理及協(xié)議。它們采用C語(yǔ)言編寫(xiě)而成,并在xCORE上執行,提供了部署靈活性。xSOFTip Explorer是一個(gè)圖形化接口,它提供了對庫的訪(fǎng)問(wèn),并允許功能單元塊被配置為滿(mǎn)足某項特定規范。該工具了解一個(gè)特定功能單元塊的資源需求(如處理器內核數量、I/O引腳、存儲器和時(shí)鐘的資源等),并能為一種實(shí)現提供最合適器件預估。 對于調試任務(wù),開(kāi)源的GNU調試器已經(jīng)進(jìn)行了擴展,可與多內核和通道資源一起使用。 xTIMEcomposer Studio是基于Eclipse的開(kāi)源集成化開(kāi)發(fā)環(huán)境(IDE),它可從XMOS網(wǎng)站免費下載。 憑借一種結合了應用靈活性與時(shí)序確定性的創(chuàng )新體系架構、一個(gè)豐富的開(kāi)發(fā)環(huán)境,以及在實(shí)際應用中批量部署的良好記錄,XMOS正在為實(shí)時(shí)應用帶來(lái)并行處理能力。 應用 客戶(hù)應用1:索尼 索尼公司在其PHA-2便攜式耳機放大器中采用了xCORE技術(shù)。 PHA-2將多個(gè)高保真發(fā)燒友級USB接口與一個(gè)高解析度DAC以及一個(gè)高品質(zhì)耳機放大器結合在一起,所有東西都集成在一個(gè)很小的便攜式產(chǎn)品中。它與USB Audio Class 2和DSD(直接數字流編碼)技術(shù)兼容,為使用索尼Walkman系列便攜式音樂(lè )播放器、Windows和Mac電腦,以及iPad、iPod和iPhone的收聽(tīng)者提供了更高質(zhì)量的音頻體驗。 索尼PHA-2基于XMOS的業(yè)界領(lǐng)先的USB音頻解決方案,使用了xCORE產(chǎn)品代碼為XS1-U8-64的8核多核微控制器。它能夠支持采樣率高達192kHz和解析度為全24位的音樂(lè )文件,可提供錄音室品質(zhì)的數字音頻。 客戶(hù)應用2:Synapticon Synapticon為機器人提供嵌入式計算和控制系統。一臺機器人的手臂有多個(gè)電機,其中每一個(gè)通常都有其自己的控制器。這為開(kāi)發(fā)人員在控制這些電機和管理它們之間通信兩個(gè)方面都帶來(lái)了挑戰。為了解決這個(gè)問(wèn)題,位于斯圖加特的Synapticon開(kāi)發(fā)出了一款核心處理器板C22,它基于兩個(gè)xCORE L16芯片,在一個(gè)低功耗30 mm×30 mm電路板上提供了等效于于一個(gè)32核處理器的能力。此板減少了元件數量,提供方便而高確定性的控制和通信,并且還可為系統開(kāi)發(fā)提供一種可實(shí)現更高級別抽象的方法。 附錄:術(shù)語(yǔ) 邏輯處理器:每個(gè)xCORE邏輯塊包含4至8個(gè)邏輯處理器,該處理器是一個(gè)虛擬32位計算引擎。 端口:xCORE Port是一套輕量級邏輯函數,它們位于I/O引腳后面,并通過(guò)連接到一個(gè)邏輯處理器內核來(lái)創(chuàng )建外設。在xSOFTip庫中提供了多樣化的外設,包括UART、I2C、SPI、USB、以太網(wǎng)、CANbus和豐富的專(zhuān)業(yè)音頻接口。 邏輯塊:xCORE體系架構的物理子單元,單個(gè)芯片帶有一個(gè)或多個(gè)邏輯塊。 sliceKIT:sliceKIT將開(kāi)發(fā)板和參考設計組合在一起,并可以結合起來(lái)構建各種更復雜的系統。 作者:Andy Gothard XMOS市場(chǎng)營(yíng)銷(xiāo)總監 |