多核處理器設(shè)計(jì)九大要素
由于SMP和DSM已經(jīng)是非常成熟的技術(shù)了,CMP結(jié)構(gòu)設(shè)計(jì)比較容易,只是后端設(shè)計(jì)和芯片制造工藝的要求較高而已。正因?yàn)檫@樣,CMP成為了最先被應(yīng)用于商用CPU的“未來”高性能處理器結(jié)構(gòu)。
雖然多核能利用集成度提高帶來的諸多好處,讓芯片的性能成倍地增加,但很明顯的是原來系統(tǒng)級的一些問題便引入到了處理器內(nèi)部。
1 核結(jié)構(gòu)研究: 同構(gòu)還是異構(gòu)
CMP的構(gòu)成分成同構(gòu)和異構(gòu)兩類,同構(gòu)是指內(nèi)部核的結(jié)構(gòu)是相同的,而異構(gòu)是指內(nèi)部的核結(jié)構(gòu)是不同的。為此,面對不同的應(yīng)用研究核結(jié)構(gòu)的實(shí)現(xiàn)對未來微處理器的性能至關(guān)重要。核本身的結(jié)構(gòu),關(guān)系到整個芯片的面積、功耗和性能。怎樣繼承和發(fā)展傳統(tǒng)處理器的成果,直接影響多核的性能和實(shí)現(xiàn)周期。同時,根據(jù)Amdahl定理,程序的加速比決定于串行部分的性能,所以,從理論上來看似乎異構(gòu)微處理器的結(jié)構(gòu)具有更好的性能。
核所用的指令系統(tǒng)對系統(tǒng)的實(shí)現(xiàn)也是很重要的,采用多核之間采用相同的指令系統(tǒng)還是不同的指令系統(tǒng),能否運(yùn)行操作系統(tǒng)等,也將是研究的內(nèi)容之一。
2 程序執(zhí)行模型
多核處理器設(shè)計(jì)的首要問題是選擇程序執(zhí)行模型。程序執(zhí)行模型的適用性決定多核處理器能否以最低的代價提供最高的性能。程序執(zhí)行模型是編譯器設(shè)計(jì)人員與系統(tǒng)實(shí)現(xiàn)人員之間的接口。編譯器設(shè)計(jì)人員決定如何將一種高級語言程序按一種程序執(zhí)行模型轉(zhuǎn)換成一種目標(biāo)機(jī)器語言程序; 系統(tǒng)實(shí)現(xiàn)人員則決定該程序執(zhí)行模型在具體目標(biāo)機(jī)器上的有效實(shí)現(xiàn)。當(dāng)目標(biāo)機(jī)器是多核體系結(jié)構(gòu)時,產(chǎn)生的問題是: 多核體系結(jié)構(gòu)如何支持重要的程序執(zhí)行模型?是否有其他的程序執(zhí)行模型更適于多核的體系結(jié)構(gòu)?這些程序執(zhí)行模型能多大程度上滿足應(yīng)用的需要并為用戶所接受?
3 Cache設(shè)計(jì): 多級Cache設(shè)計(jì)與一致性問題
處理器和主存間的速度差距對CMP來說是個突出的矛盾,因此必須使用多級Cache來緩解。目前有共享一級Cache的CMP、共享二級Cache的CMP以及共享主存的CMP。通常,CMP采用共享二級Cache的CMP結(jié)構(gòu),即每個處理器核心擁有私有的一級Cache,且所有處理器核心共享二級Cache。
Cache自身的體系結(jié)構(gòu)設(shè)計(jì)也直接關(guān)系到系統(tǒng)整體性能。但是在CMP結(jié)構(gòu)中,共享Cache或獨(dú)有Cache孰優(yōu)孰劣、需不需要在一塊芯片上建立多級Cache,以及建立幾級Cache等等,由于對整個芯片的尺寸、功耗、布局、性能以及運(yùn)行效率等都有很大的影響,因而這些都是需要認(rèn)真研究和探討的問題。
另一方面,多級Cache又引發(fā)一致性問題。采用何種Cache一致性模型和機(jī)制都將對CMP整體性能產(chǎn)生重要影響。在傳統(tǒng)多處理器系統(tǒng)結(jié)構(gòu)中廣泛采用的Cache一致性模型有: 順序一致性模型、弱一致性模型、釋放一致性模型等。與之相關(guān)的Cache一致性機(jī)制主要有總線的偵聽協(xié)議和基于目錄的目錄協(xié)議。目前的CMP系統(tǒng)大多采用基于總線的偵聽協(xié)議。
4 核間通信技術(shù)
CMP處理器的各CPU核心執(zhí)行的程序之間有時需要進(jìn)行數(shù)據(jù)共享與同步,因此其硬件結(jié)構(gòu)必須支持核間通信。高效的通信機(jī)制是CMP處理器高性能的重要保障,目前比較主流的片上高效通信機(jī)制有兩種,一種是基于總線共享的Cache結(jié)構(gòu),一種是基于片上的互連結(jié)構(gòu)。
總線共享Cache結(jié)構(gòu)是指每個CPU內(nèi)核擁有共享的二級或三級Cache,用于保存比較常用的數(shù)據(jù),并通過連接核心的總線進(jìn)行通信。這種系統(tǒng)的優(yōu)點(diǎn)是結(jié)構(gòu)簡單,通信速度高,缺點(diǎn)是基于總線的結(jié)構(gòu)可擴(kuò)展性較差。
基于片上互連的結(jié)構(gòu)是指每個CPU核心具有獨(dú)立的處理單元和Cache,各個CPU核心通過交叉開關(guān)或片上網(wǎng)絡(luò)等方式連接在一起。各個CPU核心間通過消息通信。這種結(jié)構(gòu)的優(yōu)點(diǎn)是可擴(kuò)展性好,數(shù)據(jù)帶寬有保證; 缺點(diǎn)是硬件結(jié)構(gòu)復(fù)雜,且軟件改動較大。
也許這兩者的競爭結(jié)果不是互相取代而是互相合作,例如在全局范圍采用片上網(wǎng)絡(luò)而局部采用總線方式,來達(dá)到性能與復(fù)雜性的平衡。
5 總線設(shè)計(jì)
傳統(tǒng)微處理器中,Cache不命中或訪存事件都會對CPU的執(zhí)行效率產(chǎn)生負(fù)面影響,而總線接口單元(BIU)的工作效率會決定此影響的程度。當(dāng)多個CPU核心同時要求訪問內(nèi)存或多個CPU核心內(nèi)私有Cache同時出現(xiàn)Cache不命中事件時,BIU對這多個訪問請求的仲裁機(jī)制以及對外存儲訪問的轉(zhuǎn)換機(jī)制的效率決定了CMP系統(tǒng)的整體性能。因此尋找高效的多端口總線接口單元(BIU)結(jié)構(gòu),將多核心對主存的單字訪問轉(zhuǎn)為更為高效的猝發(fā)(burst)訪問; 同時尋找對CMP處理器整體效率最佳的一次Burst訪問字的數(shù)量模型以及高效多端口BIU訪問的仲裁機(jī)制將是CMP處理器研究的重要內(nèi)容。
6 操作系統(tǒng)設(shè)計(jì): 任務(wù)調(diào)度、中斷處理、同步互斥
對于多核CPU,優(yōu)化操作系統(tǒng)任務(wù)調(diào)度算法是保證效率的關(guān)鍵。一般任務(wù)調(diào)度算法有全局隊(duì)列調(diào)度和局部隊(duì)列調(diào)度。前者是指操作系統(tǒng)維護(hù)一個全局的任務(wù)等待隊(duì)列,當(dāng)系統(tǒng)中有一個CPU核心空閑時,操作系統(tǒng)就從全局任務(wù)等待隊(duì)列中選取就緒任務(wù)開始在此核心上執(zhí)行。這種方法的優(yōu)點(diǎn)是CPU核心利用率較高。后者是指操作系統(tǒng)為每個CPU內(nèi)核維護(hù)一個局部的任務(wù)等待隊(duì)列,當(dāng)系統(tǒng)中有一個CPU內(nèi)核空閑時,便從該核心的任務(wù)等待隊(duì)列中選取恰當(dāng)?shù)娜蝿?wù)執(zhí)行,這種方法的優(yōu)點(diǎn)是任務(wù)基本上無需在多個CPU核心間切換,有利于提高CPU核心局部Cache命中率。目前多數(shù)多核CPU操作系統(tǒng)采用的是基于全局隊(duì)列的任務(wù)調(diào)度算法。
多核的中斷處理和單核有很大不同。多核的各處理器之間需要通過中斷方式進(jìn)行通信,所以多個處理器之間的本地中斷控制器和負(fù)責(zé)仲裁各核之間中斷分配的全局中斷控制器也需要封裝在芯片內(nèi)部。
另外,多核CPU是一個多任務(wù)系統(tǒng)。由于不同任務(wù)會競爭共享資源,因此需要系統(tǒng)提供同步與互斥機(jī)制。而傳統(tǒng)的用于單核的解決機(jī)制并不能滿足多核,需要利用硬件提供的“讀-修改-寫”的原子操作或其他同步互斥機(jī)制來保證。
7 低功耗設(shè)計(jì)
半導(dǎo)體工藝的迅速發(fā)展使微處理器的集成度越來越高,同時處理器表面溫度也變得越來越高并呈指數(shù)級增長,每三年處理器的功耗密度就能翻一番。目前,低功耗和熱優(yōu)化設(shè)計(jì)已經(jīng)成為微處理器研究中的核心問題。CMP的多核心結(jié)構(gòu)決定了其相關(guān)的功耗研究是一個至關(guān)重要的課題。
低功耗設(shè)計(jì)是一個多層次問題,需要同時在操作系統(tǒng)級、算法級、結(jié)構(gòu)級、電路級等多個層次上進(jìn)行研究。每個層次的低功耗設(shè)計(jì)方法實(shí)現(xiàn)的效果不同——抽象層次越高,功耗和溫度降低的效果越明顯。
8 存儲器墻
為了使芯片內(nèi)核充分地工作,最起碼的要求是芯片能提供與芯片性能相匹配的存儲器帶寬,雖然內(nèi)部Cache的容量能解決一些問題,但隨著性能的進(jìn)一步提高,必須有其他一些手段來提高存儲器接口的帶寬,如增加單個管腳帶寬的DDR、DDR2、QDR、XDR等。同樣,系統(tǒng)也必須有能提供高帶寬的存儲器。所以,芯片對封裝的要求也越來越高,雖然封裝的管腳數(shù)每年以20%的數(shù)目提升,但還不能完全解決問題,而且還帶來了成本提高的問題,為此,怎樣提供一個高帶寬,低延遲的接口帶寬,是必須解決的一個重要問題。
9 可靠性及安全性設(shè)計(jì)
隨著技術(shù)革新的發(fā)展,處理器的應(yīng)用滲透到現(xiàn)代社會的各個層面,但是在安全性方面卻存在著很大的隱患。一方面,處理器結(jié)構(gòu)自身的可靠性低下,由于超微細(xì)化與時鐘設(shè)計(jì)的高速化、低電源電壓化,設(shè)計(jì)上的安全系數(shù)越來越難以保證,故障的發(fā)生率逐漸走高。另一方面,來自第三方的惡意攻擊越來越多,手段越來越先進(jìn),已成為具有普遍性的社會問題。現(xiàn)在,可靠性與安全性的提高在計(jì)算機(jī)體系結(jié)構(gòu)研究領(lǐng)域備受注目。
今后,CMP這類處理器芯片內(nèi)有多個進(jìn)程同時執(zhí)行的結(jié)構(gòu)將成為主流,再加上硬件復(fù)雜性、設(shè)計(jì)時的失誤增加,使得處理器芯片內(nèi)部也未必是安全的,因此,安全與可靠性設(shè)計(jì)任重而道遠(yuǎn)。