【轉(zhuǎn)】SMT、CMP、SMP
SMT、CMP、SMP

zhangxinrun_業(yè)余erlang

于?2011-10-26 17:24:21?發(fā)布

3495

?收藏?4
分類專欄:?Linux系統(tǒng)?電腦組成?linux內(nèi)核?文章標(biāo)簽:?多線程?任務(wù)?服務(wù)器?cache?unix?branch

Linux系統(tǒng)同時被 3 個專欄收錄

184 篇文章3 訂閱
訂閱專欄

電腦組成
19 篇文章0 訂閱
訂閱專欄

linux內(nèi)核
69 篇文章1 訂閱
訂閱專欄
1、多線程??
??????同時多線程Simultaneous?multithreading,簡稱SMT。SMT可通過復(fù)制處理器上的結(jié)構(gòu)狀態(tài),讓同一個處理器上的多個線程同步執(zhí)行并共享處理器的執(zhí)行資源,可最大限度地實現(xiàn)寬發(fā)射、亂序的超標(biāo)量處理,提高處理器運算部件的利用率,緩和由于數(shù)據(jù)相關(guān)或Cache未命中帶來的訪問內(nèi)存延時。當(dāng)沒有多個線程可用時,SMT處理器幾乎和傳統(tǒng)的寬發(fā)射超標(biāo)量處理器一樣。SMT最具吸引力的是只需小規(guī)模改變處理器核心的設(shè)計,幾乎不用增加額外的成本就可以顯著地提升效能。多線程技術(shù)則可以為高速的運算核心準(zhǔn)備更多的待處理數(shù)據(jù),減少運算核心的閑置時間。這對于桌面低端系統(tǒng)來說無疑十分具有吸引力。Intel從3.06GHz?Pentium?4開始,所有處理器都將支持SMT技術(shù)。?Intel的hyper-threading其實就是
two-threadSMT.?
2?、多核心?(CMP就是multi-core)?
?????多核心,也指單芯片多處理器(Chip?multiprocessors,簡稱CMP)。CMP是由美國斯坦福大學(xué)提出的,其思想是將大規(guī)模并行處理器中的SMP(對稱多處理器)集成到同一芯片內(nèi),各個處理器并行執(zhí)行不同的進(jìn)程。與CMP比較,?SMT處理器結(jié)構(gòu)的靈活性比較突出。但是,當(dāng)半導(dǎo)體工藝進(jìn)入0.18微米以后,線延時已經(jīng)超過了門延遲,要求微處理器的設(shè)計通過劃分許多規(guī)模更小、局部性更好的基本單元結(jié)構(gòu)來進(jìn)行。相比之下,由于CMP結(jié)構(gòu)已經(jīng)被劃分成多個處理器核來設(shè)計,每個核都比較簡單,有利于優(yōu)化設(shè)計,因此更有發(fā)展前途。目前,IBM?的Power?4芯片和Sun的?MAJC5200芯片都采用了CMP結(jié)構(gòu)。多核處理器可以在處理器內(nèi)部共享緩存,提高緩存利用率,同時簡化多處理器系統(tǒng)設(shè)計的復(fù)雜度。??
????最近,Intel和AMD的新型處理器也融入CMP結(jié)構(gòu)。新安騰處理器開發(fā)代碼為Montecito,采用雙核心設(shè)計,擁有最少18MB片內(nèi)緩存,采取90nm工藝制造,它的設(shè)計絕對稱得上是對當(dāng)今芯片業(yè)的挑戰(zhàn)。它的每個單獨的核心都擁有獨立的L1,L2和L3?cache,包含大約10億支晶體管。??
3?、SMP?(多socket,多物理CPU)?
????SMP?(Symmetric?Multi-Processing),對稱多處理結(jié)構(gòu)的簡稱,是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu)。在這種技術(shù)的支持下,一個服務(wù)器系統(tǒng)可以同時運行多個處理器,并共享內(nèi)存和其他的主機資源。像雙至強,也就是我們所說的二路,這是在對稱處理器系統(tǒng)中最常見的一種(至強MP可以支持到四路,AMD?Opteron可以支持1-8路)。也有少數(shù)是16路的。但是一般來講,SMP結(jié)構(gòu)的機器可擴展性較差,很難做到100個以上多處理器,常規(guī)的一般是8個到16個,不過這對于多數(shù)的用戶來說已經(jīng)夠用了。在高性能服務(wù)器和工作站級主板架構(gòu)中最為常見,像UNIX服務(wù)器可支持最多256個CPU的系統(tǒng)。??
?????構(gòu)建一套SMP系統(tǒng)的必要條件是:支持SMP的硬件包括主板和CPU;支持SMP的系統(tǒng)平臺,再就是支持SMP的應(yīng)用軟件。??
?????為了能夠使得SMP系統(tǒng)發(fā)揮高效的性能,操作系統(tǒng)必須支持SMP系統(tǒng),如WINNT、LINUX、以及UNIX等等32位操作系統(tǒng)。即能夠進(jìn)行多任務(wù)和多線程處理。多任務(wù)是指操作系統(tǒng)能夠在同一時間讓不同的CPU完成不同的任務(wù);多線程是指操作系統(tǒng)能夠使得不同的CPU并行的完成同一個任務(wù)。??
?????要組建SMP系統(tǒng),對所選的CPU有很高的要求,首先、CPU內(nèi)部必須內(nèi)置APIC(Advanced?Programmable?Interrupt?Controllers)單元。Intel?多處理規(guī)范的核心就是高級可編程中斷控制器(Advanced?Programmable?Interrupt?Controllers--APICs)的使用;再次,相同的產(chǎn)品型號,同樣類型的CPU核心,完全相同的運行頻率;最后,盡可能保持相同的產(chǎn)品序列編號,因為兩個生產(chǎn)批次的CPU作為雙處理器運行的時候,有可能會發(fā)生一顆CPU負(fù)擔(dān)過高,而另一顆負(fù)擔(dān)很少的情況,無法發(fā)揮最大性能,更糟糕的是可能導(dǎo)致死機。??
4?、NUMA技術(shù)??
????NUMA?即非一致訪問分布共享存儲技術(shù),它是由若干通過高速專用網(wǎng)絡(luò)連接起來的獨立節(jié)點構(gòu)成的系統(tǒng),各個節(jié)點可以是單個的CPU或是SMP系統(tǒng)。在NUMA中,Cache?的一致性有多種解決方案,需要操作系統(tǒng)和特殊軟件的支持。圖2中是Sequent公司NUMA系統(tǒng)的例子。這里有3個SMP模塊用高速專用網(wǎng)絡(luò)聯(lián)起來,組成一個節(jié)點,每個節(jié)點可以有12個CPU。像Sequent的系統(tǒng)最多可以達(dá)到64個CPU甚至256個CPU。顯然,這是在SMP的基礎(chǔ)上,再用NUMA的技術(shù)加以擴展,是這兩種技術(shù)的結(jié)合。??
5?、亂序執(zhí)行技術(shù)??
?????亂序執(zhí)行(out-of-orderexecution),是指CPU允許將多條指令不按程序規(guī)定的順序分開發(fā)送給各相應(yīng)電路單元處理的技術(shù)。這樣將根據(jù)個電路單元的狀態(tài)和各指令能否提前執(zhí)行的具體情況分析后,將能提前執(zhí)行的指令立即發(fā)送給相應(yīng)電路單元執(zhí)行,在這期間不按規(guī)定順序執(zhí)行指令,然后由重新排列單元將各執(zhí)行單元結(jié)果按指令順序重新排列。采用亂序執(zhí)行技術(shù)的目的是為了使CPU內(nèi)部電路滿負(fù)荷運轉(zhuǎn)并相應(yīng)提高了CPU的運行程序的速度。分枝技術(shù):(branch)指令進(jìn)行運算時需要等待結(jié)果,一般無條件分枝只需要按指令順序執(zhí)行,而條件分枝必須根據(jù)處理后的結(jié)果,再決定是否按原先順序進(jìn)行。??
6?、CPU內(nèi)部的內(nèi)存控制器??
?????許多應(yīng)用程序擁有更為復(fù)雜的讀取模式(幾乎是隨機地,特別是當(dāng)cache?hit不可預(yù)測的時候),并且沒有有效地利用帶寬。典型的這類應(yīng)用程序就是業(yè)務(wù)處理軟件,即使擁有如亂序執(zhí)行(out?of?order?execution)這樣的CPU特性,也會受內(nèi)存延遲的限制。這樣CPU必須得等到運算所需數(shù)據(jù)被除數(shù)裝載完成才能執(zhí)行指令(無論這些數(shù)據(jù)來自CPU?cache還是主內(nèi)存系統(tǒng))。當(dāng)前低段系統(tǒng)的內(nèi)存延遲大約是120-150ns,而CPU速度則達(dá)到了3GHz以上,一次單獨的內(nèi)存請求可能會浪費200-300次CPU循環(huán)。即使在緩存命中率(cache?hit?rate)達(dá)到99%的情況下,CPU也可能會花50%的時間來等待內(nèi)存請求的結(jié)束-?比如因為內(nèi)存延遲的緣故。?