新聞中心

EEPW首頁(yè) > 設(shè)計(jì)應(yīng)用 > 多處理器設(shè)計(jì)技術(shù)

多處理器設(shè)計(jì)技術(shù)

——
作者:Robert Cravotta 時(shí)間:2005-09-06 來(lái)源:EDN電子設(shè)計(jì)技術(shù) 收藏
多處理器設(shè)計(jì)技術(shù)
 
并行處理不僅可以改善性能,而且還可以通過(guò)更好地反映系統(tǒng)行為和開(kāi)發(fā)資源的自然分割來(lái)簡(jiǎn)化設(shè)計(jì)。
  人們可以將多處理器設(shè)計(jì)定義為這樣的系統(tǒng):它把各項(xiàng)功能和任務(wù)分配給多個(gè)處理器去完成,而這些處理器彼此協(xié)調(diào)、互相溝通,以保證行為一致。多處理器系統(tǒng)比單處理器設(shè)計(jì)更加復(fù)雜。它要求為內(nèi)務(wù)操作和協(xié)調(diào)功能進(jìn)行額外的編程,調(diào)試也更為復(fù)雜。這是因?yàn)槎嗵幚砥飨到y(tǒng)需要各處理器間的交互作用,而在單處理器體系結(jié)構(gòu)中不存在這種處理器之間的交互作用的問(wèn)題。盡管多處理器設(shè)計(jì)增加了復(fù)雜性,但多年來(lái),它一直用于高性能計(jì)算機(jī)和工作站中,而且正躋身于日益增多的嵌入式系統(tǒng)應(yīng)用之中。
  人們之所以使用多個(gè)處理器,一條突出的理由是,它們能夠比單個(gè)處理器提供更強(qiáng)的處理能力。在選擇單處理器體系結(jié)構(gòu)還是多處理器體系結(jié)構(gòu)時(shí),需要考慮的一些性能因素有:實(shí)時(shí)算法的處理量,處理外部事件所需的響應(yīng)時(shí)間,所需的數(shù)學(xué)密集處理量,以及所需的并行運(yùn)作的能力。多處理器體系結(jié)構(gòu)可提供某種平衡負(fù)載的能力,并提供了使用定制的處理器來(lái)完成各項(xiàng)系統(tǒng)任務(wù)的機(jī)會(huì)。
  現(xiàn)在來(lái)考慮一下如果執(zhí)行時(shí)間具有很大的不定性的話,
實(shí)時(shí)處理將會(huì)遇到多大困難的問(wèn)題。例如,當(dāng)一個(gè)處理器刷新流水線、碰上高速緩存器故障、實(shí)施關(guān)聯(lián)轉(zhuǎn)換或者采用無(wú)序的推理性執(zhí)行來(lái)提高效率時(shí),系統(tǒng)行為就會(huì)更加不確定。同樣,如果同一個(gè)處理器還必須執(zhí)行高度優(yōu)先級(jí)的、連續(xù)而且實(shí)時(shí)的任務(wù),特別是當(dāng)這些任務(wù)采用“多發(fā)布指令”(multi-issue instruction)、而這類(lèi)指令在任務(wù)執(zhí)行過(guò)程中會(huì)阻塞“中斷服務(wù)”時(shí),處理外部事件的響應(yīng)時(shí)間會(huì)受很大的影響。如果分別用合適的處理器來(lái)完成兩項(xiàng)任務(wù),則可以把每一類(lèi)任務(wù)的性能問(wèn)題和確定性問(wèn)題分開(kāi)并予以克服。硬盤(pán)驅(qū)動(dòng)器就是這樣的實(shí)例:主接口功能用一個(gè)配置高速緩存的處理器就能很好地實(shí)現(xiàn),而系統(tǒng)的伺服控制部分則由一個(gè)精減(stripped-down)處理器來(lái)執(zhí)行。
  DSP 體系結(jié)構(gòu)通過(guò)與外設(shè)的緊密交互作用來(lái)支持快速的數(shù)據(jù)傳送,從而側(cè)重于執(zhí)行連續(xù)迭代數(shù)學(xué)處理,主要是乘法-累加運(yùn)算。為了實(shí)現(xiàn)這種連續(xù)處理功能,這些處理器常常采用復(fù)雜的存儲(chǔ)器結(jié)構(gòu)(例如多條總線和多種類(lèi)型存儲(chǔ)器的混合)和專(zhuān)門(mén)的指令集,其中包括定點(diǎn)數(shù)學(xué)運(yùn)算和通過(guò)硬件加速的專(zhuān)用運(yùn)算操作。雖然這些機(jī)制非常適合于預(yù)定的用途,但它們的性能卻不如用 RISC 體系結(jié)構(gòu)進(jìn)行控制和響應(yīng)處理的機(jī)制好。
  單片系統(tǒng)(SOC)設(shè)計(jì)采用可編程模塊這種發(fā)展趨勢(shì),使人們?cè)诿鞔_支持嵌入式多處理器設(shè)計(jì)的處理器和芯核方面有了更多的選擇。這些SoC設(shè)計(jì)所提供的性能可以升級(jí),可以通過(guò)編程來(lái)達(dá)到超過(guò)單處理器體系結(jié)構(gòu)為計(jì)算密集型應(yīng)用所能提供的性能;這些SoC設(shè)計(jì)能夠更好地反映許多聯(lián)網(wǎng)系統(tǒng)、多媒體系統(tǒng)和其他嵌入式系統(tǒng)的自然分割,而這些系統(tǒng)本來(lái)就是適合多通道或會(huì)聚式應(yīng)用的。對(duì)于這些類(lèi)型的系統(tǒng),采用多個(gè)處理器能夠最好地平衡并達(dá)到工程的性能、成本、功耗、風(fēng)險(xiǎn)以及上市時(shí)間等目標(biāo)。
  許多嵌入式設(shè)計(jì)正在采用多處理器體系結(jié)構(gòu),并不是純粹出于提高性能的考慮。其他考慮因素包括:既有的軟件資源和開(kāi)發(fā)工具,關(guān)鍵部件(如那些支持演進(jìn)中標(biāo)準(zhǔn)的部件)的穩(wěn)定性,簡(jiǎn)化工程工作,系統(tǒng)安全性,容錯(cuò)要求,滿(mǎn)足價(jià)格、功耗、散熱和電磁干擾等約束條件。多處理器體系結(jié)構(gòu)可為人們提供用最合適的工程資源來(lái)完成每一項(xiàng)設(shè)計(jì)任務(wù)的靈活性和機(jī)遇。
  人們?cè)谔幚眢w系結(jié)構(gòu)方面的經(jīng)驗(yàn)和既有資源對(duì)目前工程的適用性方面的經(jīng)驗(yàn),會(huì)影響他們采用單處理器還是采用多處理器設(shè)計(jì)的抉擇(參考文獻(xiàn)1)。既有的代碼或操作系統(tǒng)可能會(huì)決定人們選擇何種處理器和如何分配工程技術(shù)人員。譬如,用不同的小組來(lái)從事前端、后端、控制和信號(hào)處理方面的工作,會(huì)影響對(duì)處理器體系結(jié)構(gòu)的選擇。在移動(dòng)電話應(yīng)用中,信號(hào)處理小組開(kāi)發(fā)由 DSP 芯片來(lái)執(zhí)行的無(wú)線電控制功能和語(yǔ)音編譯碼功能,應(yīng)用小組則開(kāi)發(fā)由微控制器來(lái)執(zhí)行的人機(jī)界面功能。諸如多媒體和無(wú)線應(yīng)用的標(biāo)準(zhǔn)或協(xié)議的穩(wěn)定性會(huì)影響人們是將這些協(xié)議或標(biāo)準(zhǔn)作為軟件來(lái)實(shí)施,以保證可編程性和靈活性,還是使用某些硬件來(lái)降低功耗和成本。
  多多益善
  由于軟件復(fù)雜性并不是隨代碼長(zhǎng)度增加而線性增加,而是比線性增加還要快,因此把軟件設(shè)計(jì)得可在多個(gè)專(zhuān)用處理器上運(yùn)行,可比在單個(gè)處理器上運(yùn)行縮短開(kāi)發(fā)時(shí)間,還可簡(jiǎn)化調(diào)試,并改善系統(tǒng)的可靠性。使用單獨(dú)的處理器可以使人們更容易理解系統(tǒng)中被分割的各項(xiàng)任務(wù)之間的相互作用,并最大限度地減少由中斷等待時(shí)間、處理器加載和內(nèi)存使用等造成的任務(wù)之間的相互依賴(lài)性。相互作用的重點(diǎn)可從任務(wù)間資源共享轉(zhuǎn)變?yōu)樘幚砥髦g資源的共享和專(zhuān)用。人們只要讓整個(gè)操作系統(tǒng)支持系統(tǒng)的某些部分,而幾乎不支持其他部分就可以簡(jiǎn)化性能的分配。
  即使一個(gè)單處理器可以滿(mǎn)足對(duì)性能的要求,也不可能滿(mǎn)足對(duì)成本、功耗、電磁干擾和散熱預(yù)算等指標(biāo)的要求。使用多個(gè)處理器可以降低時(shí)鐘頻率,以避開(kāi)某些射頻頻率,并降低系統(tǒng)的電磁干擾和散熱分布。如果任務(wù)分割允許把高速的突發(fā)性處理分配給某個(gè)處理器來(lái)完成,并在其不工作期間禁用該處理器,而另一個(gè)處理器則處理連續(xù)性操作,則可進(jìn)一步降低系統(tǒng)的功耗預(yù)算。只要將安全或加密措施交給與主處理器分開(kāi)的另一個(gè)處理器來(lái)實(shí)現(xiàn),就可以提高系統(tǒng)的安全性,而且還能運(yùn)行一個(gè)可以簡(jiǎn)化逆向工程的標(biāo)準(zhǔn)操作系統(tǒng)。
  盡管把多個(gè)芯核集成到一個(gè)器件中有許多好處,但人們?nèi)匀辉敢膺x用在物理上將一個(gè)多處理器體系結(jié)構(gòu)分配成若干個(gè)離散器件。例如,如果系統(tǒng)需要冗余或容錯(cuò),就要想法使處理器故障相互隔離。分配多處理器體系結(jié)構(gòu)的另一個(gè)例子是采用處理器網(wǎng)絡(luò)模型。當(dāng)將每個(gè)處理器設(shè)置在相關(guān)處理及信號(hào)的附近(如在汽車(chē)中),要求弱化處理器之間的通信、降低信號(hào)噪聲并且減小系統(tǒng)布線重量時(shí),這種方法是非常合適的。
  某些應(yīng)用不能將多個(gè)處理器輕易地分割開(kāi)來(lái),認(rèn)識(shí)到這一點(diǎn)十分重要。如果在被分割的任務(wù)之間需要密切的通信而又想不出合適的互聯(lián)方式來(lái)支持系統(tǒng)的吞吐量或等待時(shí)間要求,那就需要重新考慮這種分割或者放棄多處理器方案。
  能否成功采用多處理器體系結(jié)構(gòu),取決于應(yīng)用系統(tǒng)中固有的并行操作的數(shù)量與類(lèi)型(參見(jiàn)附文《利用并行操作》)。許多單處理器體系結(jié)構(gòu)采用了諸如流水線和超標(biāo)量指令等技術(shù),這些技術(shù)都依賴(lài)指令級(jí)的時(shí)間并行操作或空間并行操作來(lái)提高性能。SIMD(單指令多數(shù)據(jù))和多線程技術(shù)使系統(tǒng)能夠在數(shù)據(jù)抽象級(jí)或線程抽象級(jí)采用并行操作。軟件分割是多處理系統(tǒng)取得成功的關(guān)鍵,而且這樣的體系結(jié)構(gòu)在人們制造它來(lái)利用系統(tǒng)的進(jìn)程級(jí)并行操作時(shí)具有最大效益。
  對(duì)稱(chēng)多處理(SMP)是一種同類(lèi)處理器拓?fù)浣Y(jié)構(gòu),在此結(jié)構(gòu)中,系統(tǒng)能動(dòng)態(tài)地將處理負(fù)載分配到一個(gè)緊密耦合的“共享一切”的多個(gè)處理器網(wǎng)絡(luò)中。在這樣的系統(tǒng)中,操作系統(tǒng)一般都了解每個(gè)處理器并管理任務(wù)的分配。這些系統(tǒng)保持著與高速緩存一致的子系統(tǒng),并能夠在處理器之間移植包括操作系統(tǒng)內(nèi)核在內(nèi)的各種進(jìn)程,以平衡負(fù)載。處理器數(shù)量的增減是有限的,因?yàn)殡S著處理器數(shù)目的增加,系統(tǒng)的通信開(kāi)銷(xiāo)在總系統(tǒng)工作負(fù)荷中會(huì)占據(jù)更大的比例。管理多用戶(hù)環(huán)境的網(wǎng)絡(luò)服務(wù)器和事務(wù)服務(wù)器是 SMP 體系結(jié)構(gòu)的共同目標(biāo)。


關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉