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