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