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