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