當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)

隨著SoC設(shè)計(jì)元件的出現(xiàn),如MIPS32 1004K一致處理系統(tǒng)(CPS),單操作系統(tǒng)條件下的片上對(duì)稱多處理(SMP)已經(jīng)成為了一種真正的設(shè)計(jì)選擇,而系統(tǒng)架構(gòu)師也需要了解其優(yōu)點(diǎn)和局限性。

任務(wù)越多,越需要并行


復(fù)雜的模塊化多任務(wù)處理嵌入式軟件系統(tǒng)經(jīng)常表現(xiàn)出“偶然發(fā)現(xiàn)的”并發(fā),如圖1所示。該系統(tǒng)的總?cè)蝿?wù)可能包括多任務(wù)操作,每個(gè)操作都有不同的職責(zé),可滿足一系列不同的輸入需求。如果沒(méi)有分時(shí)操作系統(tǒng),這些任務(wù)中的每個(gè)都必須在獨(dú)立的處理器上運(yùn)行。在一個(gè)分時(shí)單處理器(uniprocessor)上,任務(wù)可以在交替的時(shí)間片段上運(yùn)行。在一個(gè)采用SMP操作系統(tǒng)的多處理器上,任務(wù)可以并行地在許多可供使用的處理器上運(yùn)行。

 

圖1 并行的多任務(wù)處理

分布式處理


另一種形式的并行處理已經(jīng)成為司空見(jiàn)慣的事情,以至于有時(shí)甚至不被認(rèn)為是“并行”的,這就是分布式計(jì)算,它的網(wǎng)絡(luò)客戶機(jī)/服務(wù)器模型是迄今為止最常見(jiàn)的范例??蛻魴C(jī)/服務(wù)器編程基本上是一種控制流分解的形式。一個(gè)程序任務(wù)將工作請(qǐng)求連接和發(fā)送給系統(tǒng)中的一個(gè)或多個(gè)專門(mén)任務(wù),該系統(tǒng)被指定執(zhí)行具體的工作,而不是由這個(gè)程序任務(wù)本身執(zhí)行所有計(jì)算。客戶機(jī)/服務(wù)器編程通常是在LAN和WAN上實(shí)現(xiàn)的,SMP SoC內(nèi)的任務(wù)之間的通信也是遵循同一個(gè)范例。人們可以利用片上或無(wú)效“環(huán)回”網(wǎng)絡(luò)接口通過(guò)TCP/IP進(jìn)行未經(jīng)修改的客戶機(jī)/服務(wù)器的二進(jìn)制通信,或者更加有效地利用在存儲(chǔ)器中傳遞數(shù)據(jù)緩存的本地通信協(xié)議。


實(shí)際上,此類技術(shù)都可以單獨(dú)使用,或者結(jié)合使用,以利用給定應(yīng)用的基于SMP平臺(tái)的能力。人們甚至可以構(gòu)建一種分布式SMP服務(wù)器的數(shù)據(jù)并行陣列,其中每個(gè)陣列都可以執(zhí)行一條控制流的流水線。但是,為了有效地實(shí)現(xiàn)這個(gè)方案,可能需要非常大的工作量和數(shù)據(jù)集。


系統(tǒng)軟件的支持非常關(guān)鍵


在有些SoC系統(tǒng)中,有可能實(shí)現(xiàn)處理器靜態(tài)物理分解任務(wù)的并行性(例如每個(gè)輸入端口有一個(gè)處理器內(nèi)核),在這樣的SoC系統(tǒng)中,把并行的多個(gè)任務(wù)分配到不同的處理器去處理可以在硬件中完成。這將降低軟件開(kāi)銷(xiāo)和占位面積,但是不能提供靈活性。


同樣,如果嵌入式應(yīng)用可以被靜態(tài)地分解成客戶端和服務(wù)器端程序,這些程序通過(guò)片上互連進(jìn)行通信,那末系統(tǒng)連接所需的唯一的系統(tǒng)軟件就是執(zhí)行處理器間共用協(xié)議的信息傳遞代碼。信息傳遞協(xié)議可提供某些抽象層,可以用來(lái)配置更多或更少的處理器來(lái)運(yùn)行共用基礎(chǔ)的應(yīng)用代碼,但是對(duì)于任何給定的配置,處理器間的負(fù)載平衡就像硬件分區(qū)一樣無(wú)聲無(wú)息。為了實(shí)現(xiàn)更加靈活的并行系統(tǒng)編程,需要在一個(gè)共享資源的多處理器系統(tǒng)上完成軟件分布的任務(wù)。

SMP系統(tǒng)的靈活性和適應(yīng)性


顧名思義,SMP操作系統(tǒng)有一個(gè)對(duì)系統(tǒng)“對(duì)稱”的含義。所有處理器都可以發(fā)現(xiàn)相同的存儲(chǔ)器、相同的I/O器件以及相同的全局操作系統(tǒng)的狀態(tài)。這將使從一個(gè)處理器到另一個(gè)處理器的程序移植變得極其簡(jiǎn)單而有效,如圖2所示的簡(jiǎn)單例子,也將使負(fù)載均衡更加容易。無(wú)須額外的編程或系統(tǒng)管理,一套采用時(shí)間分割的單個(gè)CPU上的多任務(wù)程序,將同時(shí)運(yùn)行于一個(gè)SMP系統(tǒng)的可用CPU之上。如Linux調(diào)度程序的SMP調(diào)度程序?qū)⒋蜷_(kāi)和關(guān)閉處理器的程序,一切都以一種公平的方式進(jìn)行。


作為多處理運(yùn)行的Linux應(yīng)用不必為了發(fā)揮SMP的并行性而進(jìn)行修改。在大多數(shù)情況下,無(wú)須重新進(jìn)行編譯;一個(gè)例外則是與非線程安全庫(kù)靜態(tài)連接的二進(jìn)制碼。 


SMP Linux環(huán)境可以提供許多工具,有助于系統(tǒng)設(shè)計(jì)人員調(diào)節(jié)可用處理器的任務(wù)共享方式。這些任務(wù)可以讓它們的優(yōu)先級(jí)上升和下降,可以由運(yùn)行在處理器上的任意子集加以限制。利用適當(dāng)核的支持,它們可以請(qǐng)求使用不同的實(shí)時(shí)調(diào)度狀態(tài)。


類UNIX操作系統(tǒng)總是允許應(yīng)用程序?qū)θ蝿?wù)的相對(duì)調(diào)度優(yōu)先級(jí)進(jìn)行控制,即使是單處理器分時(shí)系統(tǒng)也是這樣。隨著能夠?qū)θ蝿?wù)、任務(wù)組或系統(tǒng)具體用戶的優(yōu)先級(jí)進(jìn)行操作的更復(fù)雜機(jī)制的出現(xiàn),傳統(tǒng)上優(yōu)良的外殼命令(shell command)和系統(tǒng)調(diào)用已經(jīng)增加到Linux當(dāng)中,這對(duì)評(píng)判該操作系統(tǒng)的優(yōu)劣應(yīng)該是十分必要的。


此外,在多處理器配置方面,所有的Linux任務(wù)都有一個(gè)參數(shù),定義了哪些處理器組(set of processor)可以對(duì)任務(wù)進(jìn)行調(diào)度。根據(jù)默認(rèn),這個(gè)參數(shù)存在于系統(tǒng)中的整組處理器當(dāng)中,但是,像優(yōu)先級(jí)一樣,這種CPU親合力可以由taskset外殼命令,或者由顯式(explicit system)調(diào)用來(lái)操作任務(wù)的“CPU親合力”。

 

圖2 多處理器資源上的SMP任務(wù)分布

實(shí)現(xiàn)SMP


一個(gè)SMP系統(tǒng)范例要求所有處理器在同一個(gè)地址看到所有的存儲(chǔ)器。對(duì)于簡(jiǎn)單而低性能的處理器,這不是太難完成的事情。人們只要在一個(gè)共用存儲(chǔ)器和I/O總線上放置所有處理器的指令提取和裝載/存儲(chǔ)流量就可以了。隨著總線很快成為了一個(gè)性能瓶頸,這個(gè)非常簡(jiǎn)單的模型利用增加的處理器迅速而漂亮地解決了這個(gè)問(wèn)題。甚至在單處理器系統(tǒng)中,高性能的嵌入式內(nèi)核指令和數(shù)據(jù)的帶寬需求要求在主存儲(chǔ)器及處理器之間使用高速緩存。


采用獨(dú)立每個(gè)處理器高速緩存的系統(tǒng)不再只是一個(gè)自然而然的SMP。當(dāng)一個(gè)處理器的高速緩存包含了存儲(chǔ)器中某一位置的最近保持值(most recent value)的唯一備份時(shí),就會(huì)出現(xiàn)一種基本而危險(xiǎn)的不對(duì)稱。系統(tǒng)必須增加高速緩存一致協(xié)議以恢復(fù)這種對(duì)稱性。在一個(gè)非常簡(jiǎn)單的系統(tǒng)中,所有處理器都連接到一條共用總線,它足以使所有高速緩存控制器監(jiān)控總線,以發(fā)現(xiàn)哪個(gè)高速緩存擁有給定存儲(chǔ)器位置的最新版本。在更先進(jìn)的系統(tǒng)中,如MIPS32 1004K CPS,處理器與存儲(chǔ)器的連接是采用點(diǎn)對(duì)點(diǎn)方式連接一個(gè)交換結(jié)構(gòu),而不是連接到一條總線。因此,高速緩存一致性需要更加復(fù)雜的支持。1004K一致管理器在存儲(chǔ)器處理上加入了一個(gè)全局順序(global order),并生成必要的干預(yù)信號(hào),以保持多個(gè)1004K處理器內(nèi)核的高速緩存的一致性。 


因此,1004K處理器可以看到一個(gè)對(duì)稱的存儲(chǔ)器。像Linux的SMP操作系統(tǒng)可以自由地遷移任務(wù)并動(dòng)態(tài)地平衡處理器負(fù)載。 


在一個(gè)嵌入式SoC中,整個(gè)計(jì)算的大部分時(shí)間可能花在中斷服務(wù)方面。這意味著需要控制良好的負(fù)載均衡和性能調(diào)節(jié),這不僅有助于控制程序任務(wù)的運(yùn)行地點(diǎn),而且還可以控制執(zhí)行中斷服務(wù)的地點(diǎn)。Linux操作系統(tǒng)有一個(gè)“IRQ親合力”控制界面,這個(gè)界面允許用戶和程序指定哪個(gè)處理器用來(lái)服務(wù)一個(gè)給定的中斷。為了便于使用,這個(gè)界面需要底層的系統(tǒng)硬件提供一種方法將中斷有選擇地發(fā)送給處理器。1004K全局中斷控制器為1004K CPS提供了這種能力。 


高速緩存一致基礎(chǔ)架構(gòu)非常有用,不僅是在對(duì)稱多處理的處理器之間,而且在處理器和I/O DMA通道之間也是如此。雖然如MIPS32的RISC架構(gòu)有支持基于軟件的I/O一致的特性,但還是需要CPU在每個(gè)I/O DMA操作之前或之后對(duì)DMA緩沖器進(jìn)行處理。該處理功能對(duì)I/O密集應(yīng)用的性能有著顯著的影響。在1004K CPS中,通過(guò)一個(gè)I/O一致單元將I/O DMA連接到存儲(chǔ)器,有助于DMA流量的條理化和與一致裝載/存儲(chǔ)流的整合,從而消除了軟件開(kāi)銷(xiāo)。

采用管道,得到回報(bào)


由于1004K處理器VPE對(duì)于軟件來(lái)說(shuō)看起來(lái)像成熟的處理器,大到有獨(dú)立的中斷輸入,所以,管理多個(gè)內(nèi)核的同一個(gè)SMP操作系統(tǒng)邏輯可以用來(lái)管理其構(gòu)成VPE。在最高水平的系統(tǒng)管理方面,全部VPE功能都在運(yùn)行的雙核1004K系統(tǒng)是一個(gè)4路SMP系統(tǒng)的樣子。為了利用SMP而編寫(xiě)或配置的軟件能夠自然而然地利用多線程,反之亦然。


雖然系統(tǒng)資源的想法仍然是對(duì)稱的,但事實(shí)上,雙線程爭(zhēng)用一條處理器流水線將比雙線程運(yùn)行于獨(dú)立的內(nèi)核實(shí)現(xiàn)的性能更低。這種情況在服務(wù)器系統(tǒng)中已經(jīng)存在了許多年,其多線程CPU的一致集群十分常見(jiàn),而1004K的SMP Linux核的配備可以實(shí)現(xiàn)必要的負(fù)載平衡的優(yōu)化。如果要優(yōu)化功耗,調(diào)度程序可以每次在一個(gè)內(nèi)核的虛擬處理器上加載運(yùn)行(load work),從而使其他內(nèi)核能夠停留在一種低功耗狀態(tài)。

如果是為了優(yōu)化性能,可以首先在不同的內(nèi)核上展開(kāi)運(yùn)行(spread work),一旦所有內(nèi)核都有一個(gè)要運(yùn)行的動(dòng)態(tài)任務(wù),只需在每個(gè)內(nèi)核上加載多個(gè)VPE就可以了。

結(jié)語(yǔ)


片上多處理可以多種方式進(jìn)行開(kāi)發(fā),從而實(shí)現(xiàn)高性能的SoC。通過(guò)輸入數(shù)據(jù)或處理功能,可以實(shí)現(xiàn)非常高效的工作靜態(tài)分解,但這也是非常不靈活的。SMP平臺(tái)和軟件可以提供一個(gè)非常靈活的高性能計(jì)算平臺(tái),以實(shí)現(xiàn)比單處理器更加顯著的加速,通常這需要很少的甚至不需任何應(yīng)用代碼的修改。多線程是對(duì)SMP并行性的最好補(bǔ)充,可以最大限度地利用每個(gè)處理器中的流水線資源。MIPS32 1004K一致處理系統(tǒng)在一個(gè)單IP塊中整合了MIPS多線程和一致SMP,以提供可擴(kuò)展、高密度的嵌入式計(jì)算能力。

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉