發(fā)布日期:2022-07-15 點(diǎn)擊率:46
在系統(tǒng)級(jí)芯片(SoC)設(shè)計(jì)中采用多個(gè)CPU已經(jīng)成為一種越來(lái)越常用的設(shè)計(jì)方法。為多CPU應(yīng)用而設(shè)計(jì)的處理器內(nèi)核應(yīng)具備幾個(gè)重要特性,例如較高的性能密度、有效的處理器內(nèi)部通信能力、支持調(diào)試,以及可靈活實(shí)現(xiàn)和可配置性。本文將針對(duì)這些與多CPU設(shè)計(jì)相關(guān)的內(nèi)核性能進(jìn)行討論。
由于業(yè)界對(duì)SoC器件的可編程性要求越來(lái)越高,所以采用多CPU進(jìn)行SoC設(shè)計(jì)變得更加普遍。對(duì)許多應(yīng)用來(lái)說(shuō),單CPU很難滿足人們對(duì)設(shè)備性能飛速提高的要求。而在復(fù)雜的實(shí)時(shí)系統(tǒng)中,采用多CPU通常會(huì)使性能分配更加容易做到,因此響應(yīng)時(shí)間也更容易達(dá)到要求。同時(shí),外圍器件或?qū)S眉铀倨髦械膶S肅PU也能夠分擔(dān)主CPU中那些比較低級(jí)的功能,從而使主CPU能夠?qū)W⒂诟呒?jí)功能的實(shí)現(xiàn)。
多CPU設(shè)計(jì)非常適用于今天的嵌入式系統(tǒng),這主要有三個(gè)方面的原因。首先,嵌入式應(yīng)用的功能通常可以靈活地進(jìn)行分離,因此很容易將其功能映射到多個(gè)CPU中。有時(shí),將嵌入式系統(tǒng)的功能分割映射到多個(gè)單獨(dú)的CPU中甚至比映射到一個(gè)CPU中更容易。其次,許多嵌入式應(yīng)用都具備明顯的并行性,因而可以用一系列并行CPU來(lái)開(kāi)發(fā)。例如,網(wǎng)絡(luò)處理器(NPU)設(shè)計(jì)工程師已經(jīng)利用這個(gè)特性開(kāi)發(fā)路由功能。最后一點(diǎn),隨著當(dāng)今和微米工藝技術(shù)的出現(xiàn),已經(jīng)可以以較低的成本實(shí)現(xiàn)用多CPU方法構(gòu)造SoC系統(tǒng)。
目前,多CPU設(shè)計(jì)在很多重要市場(chǎng)中都有應(yīng)用,例如網(wǎng)絡(luò)路由器,大多數(shù)新一代NPU都是基于多CPU設(shè)計(jì)。除了這些標(biāo)準(zhǔn)的NPU以外,核心ASSP也開(kāi)始采用多處理器構(gòu)建更加優(yōu)化的針對(duì)特定應(yīng)用的路由解決方案。對(duì)于很多應(yīng)用來(lái)說(shuō),特定目標(biāo)應(yīng)用的ASSP比標(biāo)準(zhǔn)NPU效率高。一個(gè)ASSP可以集成合適的物理接口,根據(jù)目標(biāo)應(yīng)用確定存儲(chǔ)器大小,并可以為處理器提供最佳配置。
諸如DSLAM和基站或高性能網(wǎng)絡(luò)存儲(chǔ)設(shè)備等的相關(guān)應(yīng)用中,在采用這種多處理器的“分而治之”的方法來(lái)構(gòu)建高性能可編程解決方案時(shí),都實(shí)現(xiàn)了較好的工作性能。而且,為了節(jié)約成本并降低功耗,甚至終端用戶設(shè)備都開(kāi)始采用多CPU來(lái)獲取最佳性能密度。例如,在設(shè)計(jì)機(jī)頂盒、住宅網(wǎng)關(guān),甚至智能移動(dòng)設(shè)備時(shí)也可采用多CPU方法。需要說(shuō)明的是,這里的多CPU并不是單用一個(gè)RISC處理器和一個(gè)DSP,而是采用多個(gè)RSIC處理器和多個(gè)DSP。
如何獲得優(yōu)秀的CPU內(nèi)核
一個(gè)適用于多CPU設(shè)計(jì)的處理器內(nèi)核,必須具備以下幾個(gè)重要的特性:
首先最重要的是它必須能夠提供較高的性能密度。多CPU設(shè)計(jì)的目的就在于在每平方毫米內(nèi),或在單位功耗內(nèi)獲得盡可能高的總性能。因此,理想的效果是在最小的空間內(nèi)或最低的功耗內(nèi)得到最佳的MIPS性能。
其次,它必須能夠在處理器內(nèi)實(shí)現(xiàn)有效通信。因?yàn)楸M管許多多CPU設(shè)計(jì)都是軟件相關(guān)的,但在設(shè)計(jì)過(guò)程中仍然十分需要進(jìn)行處理器內(nèi)的通信。如果處理器內(nèi)核不提供一種支持處理器內(nèi)的通信機(jī)制,那么這種內(nèi)部通信的功能就必須由SoC設(shè)計(jì)工程師來(lái)開(kāi)發(fā)。這不僅非常耗時(shí),而且也從其它方面增加了設(shè)計(jì)的復(fù)雜性。而如果在處理器內(nèi)核處提供對(duì)內(nèi)部通信的支持將簡(jiǎn)化SoC設(shè)計(jì)工程師的工作,從而也縮短開(kāi)發(fā)周期。
通常,多CPU設(shè)計(jì)在調(diào)試時(shí)比較困難,因?yàn)檫@些處理器內(nèi)核既相互獨(dú)立又相互影響,而且在調(diào)試多CPU SoC時(shí),設(shè)計(jì)工程師必須看到各處理器之間相互影響的情況。這就要求在CPU內(nèi)置一種功能,使多CPU能夠同時(shí)進(jìn)行調(diào)試,并且充分地相互作用。否則,多CPU SoC的調(diào)試工作將十分艱難,甚至根本不可能對(duì)所有CPU進(jìn)行全面調(diào)試。同時(shí),調(diào)試工具必須支持這些CPU,這樣,設(shè)計(jì)工程師才能利用CPU內(nèi)嵌的調(diào)試功能進(jìn)行調(diào)試。
此外,在判斷一個(gè)處理器內(nèi)核是否適用于多CPU設(shè)計(jì)時(shí),還需考慮配置和實(shí)現(xiàn)該CPU內(nèi)核時(shí)的靈活度。在進(jìn)行一個(gè)多CPU設(shè)計(jì)時(shí),應(yīng)盡量將產(chǎn)品尺寸和功耗降至最低,同時(shí)必須盡力提高其性能。設(shè)計(jì)工程師只有采用高度可配置和高度可綜合的CPU,才能設(shè)計(jì)出尺寸、功耗和頻率都滿足特定應(yīng)用要求的SoC產(chǎn)品。而對(duì)于一個(gè)固化的或不可配置的CPU內(nèi)核,則不可能構(gòu)造出滿足各種要求的產(chǎn)品。
基于這些思想,MIPS Technologies公司最近研制出一款專門針對(duì)多CPU設(shè)計(jì)的CPU內(nèi)核--MIPS32 M4K。該內(nèi)核可達(dá)到很高的性能,而且尺寸和功耗都很低。同時(shí),該內(nèi)核還具備可綜合性,并內(nèi)帶一個(gè)快速響應(yīng)的存儲(chǔ)器系統(tǒng)。
處理器間通信
在多CPU設(shè)計(jì)中,處理器之間必須能夠相互通信,以便控制對(duì)共享資源的訪問(wèn)。但在如今構(gòu)建的很多多CPU設(shè)計(jì)中,存儲(chǔ)器相關(guān)性都是通過(guò)純軟件方式管理的,因此不能利用常規(guī)的高速緩存相關(guān)機(jī)制通信。
M4K中,通過(guò)外部執(zhí)行MIPS結(jié)構(gòu)中的負(fù)載鏈接(Load Linked,LL)指令和條件存儲(chǔ)(SC)指令來(lái)支持多CPU旗語(yǔ)(semaphore),并以此使得系統(tǒng)能夠?qū)Ω鰿PU保持必要的監(jiān)控。同時(shí),為實(shí)現(xiàn)對(duì)系統(tǒng)的最大控制和靈活性,SYNC指令動(dòng)作也被移出到信號(hào)接口。通過(guò)執(zhí)行該指令,可以為系統(tǒng)提供一個(gè)內(nèi)存排序器(memory barrier),以保證分類指令語(yǔ)義正確。
如圖1所示,當(dāng)系統(tǒng)執(zhí)行一個(gè)典型的旗語(yǔ)訪問(wèn)代碼序列時(shí),使用LL和SC指令就可以無(wú)需對(duì)系統(tǒng)傳輸一個(gè)鎖定信息而直接執(zhí)行自動(dòng)的Read-Modify-Write序列。
例如,在一個(gè)測(cè)試-設(shè)置旋轉(zhuǎn)鎖(spin-lock)中,執(zhí)行LL指令時(shí)會(huì)在信號(hào)接口上產(chǎn)生一個(gè)讀操作,這個(gè)信號(hào)接口在系統(tǒng)中標(biāo)記為L(zhǎng)L。然后,系統(tǒng)會(huì)在該地址設(shè)置一個(gè)監(jiān)測(cè)器,監(jiān)測(cè)該接口所在地址的狀態(tài)。此時(shí),如果另一個(gè)處理器向這個(gè)被監(jiān)測(cè)的地址進(jìn)行寫操作,那么監(jiān)測(cè)器的pass/fail標(biāo)志位將被清零。而系統(tǒng)執(zhí)行SC指令時(shí),系統(tǒng)邏輯會(huì)根據(jù)監(jiān)測(cè)器的狀態(tài)有條件地執(zhí)行存儲(chǔ)操作,即有條件地向存儲(chǔ)器中寫入數(shù)據(jù)。接著,系統(tǒng)會(huì)將監(jiān)測(cè)器的Pass/fail標(biāo)志位返回給處理器,然后將工作交給處理器中的軟件去執(zhí)行。 該軟件執(zhí)行的操作起初通常會(huì)失敗,但它會(huì)不斷重復(fù)執(zhí)行,直到成功為止。類似地,SYNC指令的語(yǔ)義解釋也被轉(zhuǎn)移到CPU外執(zhí)行,這樣系統(tǒng)才能保證內(nèi)存排序器正確操作。
如圖2中范例所示,SYNC位于連接到共享緩沖的最后一個(gè)存儲(chǔ)器和釋放控制信號(hào)的存儲(chǔ)器之間。在執(zhí)行SYNC指令時(shí),CPU向系統(tǒng)邏輯發(fā)送信號(hào),表示它已經(jīng)準(zhǔn)備接收同步響應(yīng)。一旦系統(tǒng)確保工作次序正常,就向CPU返回一個(gè)信號(hào),接著,負(fù)載和存儲(chǔ)內(nèi)容才得以釋放。如果系統(tǒng)是一個(gè)簡(jiǎn)單系統(tǒng),那么必須按部就班地等待所有重要的轉(zhuǎn)換完成;但如果系統(tǒng)比較復(fù)雜,就能夠保持其序列中的次序,并以更快的速度進(jìn)行響應(yīng)。但在這兩種情況下,CPU軟件和硬件的運(yùn)行機(jī)制都是相同的。
M4K上的處理器內(nèi)部通信機(jī)制得到業(yè)界的標(biāo)準(zhǔn)開(kāi)發(fā)工的全面支持。設(shè)計(jì)工程師如果用M4K內(nèi)核進(jìn)行多CPU設(shè)計(jì),那么他們就可以利用M4K的這些特性在不同的處理器內(nèi)核間方便快捷地進(jìn)行通信,從而縮短設(shè)計(jì)時(shí)間并降低風(fēng)險(xiǎn)。
多CPU系統(tǒng)的應(yīng)用
系統(tǒng)有了多個(gè)CPU內(nèi)核后,能做些什么呢?以圖3的NAS設(shè)計(jì)為例,其主處理器為一個(gè)MIPS64 20Kc內(nèi)核,使用了多處理器核后,網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)就可以將許多特定功能從主處理器中轉(zhuǎn)移出來(lái)。例如將一個(gè)CPU放在網(wǎng)絡(luò)接口處,將一些較高級(jí)的功能,如濾波、L2或L3協(xié)議響應(yīng)以及分段和重裝等轉(zhuǎn)移到本地的外圍器件中去完成,從而將主處理器解放出來(lái)去執(zhí)行一些更高級(jí)的協(xié)議和管理功能。
與此類似,在一個(gè)加速器內(nèi)使用一個(gè)或多個(gè)M4K處理器內(nèi)核,可以將一些特殊的高性能的功能從主處理器中分離出來(lái),而同時(shí)并不影響標(biāo)準(zhǔn)可再編程器件的優(yōu)勢(shì)。
多CPU系統(tǒng)設(shè)計(jì)的另一個(gè)常見(jiàn)的例子是線路卡,這類線路卡可用于網(wǎng)絡(luò)路由器和DSLAM中,也可以用于無(wú)線基站。在這些情況下使用并行CPU子系統(tǒng)(有時(shí)也叫微引擎)能令高度并行的應(yīng)用(如L2層處理、數(shù)據(jù)包分類、濾波或標(biāo)志管理)實(shí)現(xiàn)極好的總體性能。此時(shí),主處理器主要用于異常處理。該方法在實(shí)現(xiàn)時(shí)有多種不同的形式,不但可以采用并行處理,還可以采用處理器管線或并行處理器管線來(lái)實(shí)現(xiàn)。
多CPU設(shè)計(jì)能夠提供可擴(kuò)展、可編程的特性,非常適用于將許多網(wǎng)絡(luò)和嵌入式系統(tǒng)設(shè)計(jì)中的功能分離出主處理器,因而這種方法在芯片設(shè)計(jì)中逐漸得到很多應(yīng)用。當(dāng)然,就如今的大多數(shù)SoC設(shè)計(jì)而言,多CPU設(shè)計(jì)并非毫無(wú)問(wèn)題,但我們通過(guò)采用MIPS32 M4K這類優(yōu)化的CPU內(nèi)核,可以在相當(dāng)大的程度上減少這些問(wèn)題。
作者:David Courtright
產(chǎn)品策劃部主任
MIPS Technologies公司