《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 滿足嵌入式系統(tǒng)應(yīng)用的多核處理器SoC設(shè)計(jì)
滿足嵌入式系統(tǒng)應(yīng)用的多核處理器SoC設(shè)計(jì)
Vasanth Asokan 賽靈思公司
摘要: 賽靈思嵌入式開發(fā)套件(EDK)工具和IP具有很大的靈活性,用戶可以利用它們以FPGA邏輯為基礎(chǔ)設(shè)計(jì)出獨(dú)具特色的定制多處理解決方案,從而同時(shí)滿足價(jià)格和性能目標(biāo)要求。本文將主要介紹以PowerPC和MicroBlaze嵌入式處理器為基礎(chǔ)的賽靈思解決方案中的多處理概念。
Abstract:
Key words :

       隨著嵌入式處理需求的快速增長,系統(tǒng)架構(gòu)正朝著多處理器設(shè)計(jì)的方向發(fā)展,以解決單處理器系統(tǒng)復(fù)雜度太高和計(jì)算能力不足的問題。憑借其高邏輯密度及高性能硬模塊,新一代FPGA已經(jīng)使功能強(qiáng)大的芯片多處理(CMP)解決方案成為現(xiàn)實(shí)。目前的挑戰(zhàn)在于如何在該解決方案的范疇內(nèi)快速完成設(shè)計(jì)的開發(fā)與創(chuàng)建。

   賽靈思嵌入式開發(fā)套件(EDK)工具和IP具有很大的靈活性,用戶可以利用它們以FPGA邏輯為基礎(chǔ)設(shè)計(jì)出獨(dú)具特色的定制多處理解決方案,從而同時(shí)滿足價(jià)格和性能目標(biāo)要求。本文將主要介紹以PowerPCMicroBlaze嵌入式處理器為基礎(chǔ)的賽靈思解決方案中的多處理概念。

  應(yīng)用領(lǐng)域
  性能和功能劃分是設(shè)計(jì)多處理器系統(tǒng)的主要?jiǎng)恿?。總的來說,多處理在以下這些常見場(chǎng)合中會(huì)發(fā)揮作用:
  1. 多個(gè)獨(dú)立功能。設(shè)計(jì)可能需要應(yīng)對(duì)多個(gè)獨(dú)立的處理任務(wù)。解決這個(gè)問題的好方法是為每個(gè)處理任務(wù)創(chuàng)建獨(dú)立的專用處理模塊,并為每個(gè)處理模塊分配專用處理器和外設(shè)集。
 
  2. 控制或數(shù)據(jù)層面卸載。常見情況是既有實(shí)時(shí)任務(wù)(計(jì)算或數(shù)據(jù)密集型),也有非實(shí)時(shí)任務(wù),從而可能導(dǎo)致單處理器解決方案無法做出及時(shí)的響應(yīng)。對(duì)于這種情況,您可以分配一個(gè)從處理器以便及時(shí)完成實(shí)時(shí)任務(wù),主處理器則完成其他常規(guī)任務(wù),并且充當(dāng)?shù)街鳈C(jī)系統(tǒng)的接口。主處理器同時(shí)也監(jiān)控從處理器。從處理器可能包含專用功能或接口,從而能夠滿足計(jì)算性能要求。相應(yīng)的例子包括網(wǎng)絡(luò)負(fù)載分擔(dān)、媒體處理以及安全算法等。
 
  3. 接口處理。對(duì)于作為多接口之間的橋梁或開關(guān)的系統(tǒng),您可以分配一個(gè)從處理器用于處理每個(gè)接口上的數(shù)據(jù),而用一個(gè)或者多個(gè)主處理器處理更高級(jí)的橋接或者開關(guān)任務(wù)。
 
  4. 數(shù)據(jù)流處理。對(duì)于數(shù)據(jù)流計(jì)算問題,您可以安排多個(gè)處理器以流水線的方式處理數(shù)據(jù)流。多處理器流水線的每一級(jí)都要在將數(shù)據(jù)傳到下一個(gè)處理器之前完成一部分計(jì)算任務(wù)。這是提高系統(tǒng)吞吐量的一種有效方式。
 
  5. 可靠性和冗余度。您可以多次復(fù)制處理系統(tǒng)以提高可靠性和冗余度。
 
  6. 對(duì)稱處理。傳統(tǒng)的對(duì)稱處理(SMP)是一種十分有用的解決方案,您可以利用它來提升那些不存在明確劃分邊界的應(yīng)用性能。一個(gè)具有SMP功能的OS層可以管理并行任務(wù),并且在多處理器之間自動(dòng)調(diào)度這些任務(wù)。然而,SMP使用模型不適用于賽靈思處理器,因?yàn)樗鼈內(nèi)狈?shí)現(xiàn)SMP所需的高速緩存相關(guān)性。
 
  除了SMP場(chǎng)合,其他的所有應(yīng)用場(chǎng)合均適合賽靈思公司帶有EDK工具的FPGA的應(yīng)用。賽靈思處理解決方案的獨(dú)特之處在于,它可以針對(duì)應(yīng)用要求來靈活定制每個(gè)處理子系統(tǒng)。例如,并不是所有的處理器都需要一個(gè)高速緩存或者浮點(diǎn)單元。通過為特定處理器分配特定的功能,您可以創(chuàng)建一個(gè)能夠?qū)崿F(xiàn)所有設(shè)計(jì)目標(biāo)的專用解決方案。
 
  簡(jiǎn)單且可擴(kuò)展的系統(tǒng)架構(gòu)
 
  正如您見到的那樣,有許多種使用模型適合多處理器使用。同時(shí)存在多種系統(tǒng)架構(gòu)的可能性。為某一應(yīng)用場(chǎng)合明確一種單純且可擴(kuò)展的拓?fù)浜图軜?gòu)是一件令人頭疼的事情,所以定義一個(gè)可以滿足大部分需求的基線架構(gòu)會(huì)將有所幫助。
 
  圖1給出了一個(gè)雙內(nèi)核架構(gòu)。這個(gè)架構(gòu)展示了簡(jiǎn)單且可擴(kuò)展的多處理器系統(tǒng)定義。您可以基于這個(gè)定義衍生出新的拓?fù)鋪響?yīng)對(duì)設(shè)計(jì)約束或挑戰(zhàn)。該架構(gòu)的主要概念如下:
  圖1:雙處理器架構(gòu)
 
  1. 這個(gè)架構(gòu)是兩套完全獨(dú)立的單處理器系統(tǒng)的簡(jiǎn)單擴(kuò)展,是通過將系統(tǒng)與通信元件連接在一起實(shí)現(xiàn)的。
 
  2. 共享元件全部采用多端口(或者雙端口)結(jié)構(gòu)。這些元件的多端口特性使得每個(gè)處理器的系統(tǒng)總線在靜態(tài)和動(dòng)態(tài)負(fù)載方面都獨(dú)立于其他總線。通過隔離各個(gè)處理子系統(tǒng),您可以確保系統(tǒng)總線不會(huì)因?yàn)橐粋€(gè)處理器的事務(wù)執(zhí)行而不能給另一個(gè)處理器或者外設(shè)使用。所有的多端口外設(shè)都在內(nèi)部完成不同端口上的訪問仲裁。
 
  3. 關(guān)鍵共享外設(shè)是多端口存儲(chǔ)器控制器(MPMC)。MPMC通過不同的端口接口訪問外部存儲(chǔ)器。多個(gè)處理器可以通過獨(dú)立端口連接到MPMC上。這種拓?fù)涫沟?a class="innerlink" href="http://ihrv.cn/tags/PowerPC" title="PowerPC" target="_blank">PowerPC和MicroBlaze處理器能夠以最小的延遲和高帶寬同時(shí)訪問外部存儲(chǔ)器。MPMC目前最多可以提供8個(gè)端口,這樣就可以將三到四個(gè)處理器連接到一個(gè)外部存儲(chǔ)器上。
 
  4. 這個(gè)架構(gòu)還可以在處理器之間共享內(nèi)部塊RAM存儲(chǔ)器。片上塊RAM共享是一種在處理器之間傳輸KB尺寸數(shù)據(jù)的高速方式。塊RAM的訪問也可以是確定性的,這對(duì)于某些應(yīng)用而言是一個(gè)重要要求。
 
  5. 除了共享存儲(chǔ)器外,還有另外2個(gè)內(nèi)核 - XPS Mailbox和XPS Mutex,它們可以提供形式簡(jiǎn)單的處理器間通信。XPS Mailbox內(nèi)核以同步或異步方式為兩個(gè)處理器提供低延遲、FIFO風(fēng)格的消息傳遞接口。它可用于直接傳送消息或者用于傳送共享存儲(chǔ)器中存儲(chǔ)的消息指針。您可以使用XPS Mutex內(nèi)核在2個(gè)處理器上為軟件共享資源(無論它們是片上資源還是片外資源)的訪問進(jìn)行仲裁??偟膩碚f,這些內(nèi)核可幫助您在每個(gè)處理器上創(chuàng)建協(xié)作軟件程序。
 
  6. 一些系統(tǒng)可能期望共享非多端口外設(shè)(比如UART、SPI或I2C)。這種情況需要在沒有連至外設(shè)的總線和連至外設(shè)的總線之間提供一個(gè)系統(tǒng)總線橋。圖1給出了一個(gè)在兩個(gè)處理器之間共享UART的總線橋的應(yīng)用情況。
 
  7. 圖1特意指出PowerPC405是第一處理器,MicroBlaze是第二處理器,以說明每個(gè)處理器的某些特性。然而,經(jīng)過很小的改動(dòng)就可以將任何一個(gè)處理器替換成其他的處理器。因此這個(gè)架構(gòu)可以在不同的處理器之間實(shí)現(xiàn)無縫轉(zhuǎn)換。
 
  雖然圖1給出了推薦的整體多處理架構(gòu),但是不同的約束可能需要您進(jìn)一步改善該架構(gòu)。例如,在邏輯面積和資源使用是關(guān)鍵考慮因素的系統(tǒng)中,所有處理器都可以連接到相同的系統(tǒng)總線上。雖然這降低了系統(tǒng)的確定性,增加了總線的運(yùn)行負(fù)載,但是它通過消除新的系統(tǒng)總線以及消除IP的多端口需求而節(jié)省了面積。
 
  還可實(shí)現(xiàn)其他衍生架構(gòu),例如在獨(dú)立系統(tǒng)總線上連接一個(gè)高性能處理器,或在共享系統(tǒng)總線上連接多個(gè)低性能處理器。您還可以通過利用多級(jí)橋連接處理子系統(tǒng)來創(chuàng)建層次化拓?fù)洹?a class="innerlink" href="http://ihrv.cn/tags/EDK" title="EDK" target="_blank">EDK所提供的各種工具和IP可以幫助你進(jìn)一步優(yōu)化這個(gè)基本拓?fù)?,直到其滿足您的需要為止。
 
  其他考慮因素
 
  通常情況下,多處理器架構(gòu)還需要考慮其他一些因素。例如,您需要在兩個(gè)處理器之間以非沖突方式定義存儲(chǔ)器映射。EDK提供的自動(dòng)地址生成工具將這一任務(wù)簡(jiǎn)化成簡(jiǎn)單的按鈕操作。
 
  您也需要考慮您的時(shí)鐘和復(fù)位網(wǎng)絡(luò)。您可以選擇給所有處理器提供相同速率的時(shí)鐘,或者讓每個(gè)處理器使用不同的時(shí)鐘域。同樣,您也可以將復(fù)位域定義在不同層次上,例如僅處理器復(fù)位、處理器子系統(tǒng)復(fù)位和系統(tǒng)復(fù)位。處理器必須獨(dú)立連至調(diào)試端口,從而能為每個(gè)處理器創(chuàng)建一個(gè)獨(dú)立的調(diào)試進(jìn)程。
 
  除了硬件因素,還需要設(shè)計(jì)軟件系統(tǒng),以便它們能夠協(xié)同運(yùn)轉(zhuǎn)。這包括使用共享存儲(chǔ)器、消息傳遞以及一些常見的同步概念,例如屏障(barrier)和會(huì)合(rendezvous)等,從而使系統(tǒng)以可預(yù)測(cè)性和同步的方式運(yùn)行。市場(chǎng)上也有商用軟件??梢蕴峁└呒?jí)的通信范例。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。