摘要:目前關(guān)于處理器的單核、雙核和多核已經(jīng)得到了普遍的運(yùn)用,今天我們主要說(shuō)說(shuō)關(guān)于多核處理器的一些相關(guān)概念,它的工作與那里以及優(yōu)缺點(diǎn)而展開(kāi)的分析。
1、多核處理器
多核處理器是指在一枚處理器中集成兩個(gè)或多個(gè)完整的計(jì)算引擎(內(nèi)核),此時(shí)處理器能支持系統(tǒng)總線(xiàn)上的多個(gè)處理器,由總線(xiàn)控制器提供所有總線(xiàn)控制信號(hào)和命令信號(hào)。
2、多核處理器的優(yōu)點(diǎn)和缺點(diǎn)
從應(yīng)用需求上去看,越來(lái)越多的用戶(hù)在使用過(guò)程中都會(huì)涉及到多任務(wù)應(yīng)用環(huán)境,日常應(yīng)用中用到的非常典型的有兩種應(yīng)用模式。
一種應(yīng)用模式是一個(gè)程序采用了線(xiàn)程級(jí)并行編程,那么這個(gè)程序在運(yùn)行時(shí)可以把并行的線(xiàn)程同時(shí)交付給兩個(gè)核心分別處理,因而程序運(yùn)行速度得到極大提高。這類(lèi)程序有的是為多路 工作站或服務(wù)器設(shè)計(jì)的專(zhuān)業(yè)程序,例如專(zhuān)業(yè)圖像處理程序、非線(xiàn)視頻編緝程序、動(dòng)畫(huà)制作程序或科學(xué)計(jì)算程序等。對(duì)于這類(lèi)程序,兩個(gè)物理核心和兩顆處理器基本上是等價(jià)的,所以,這些程序往往可以不作任何改動(dòng)就直接運(yùn)行在 雙核電腦上。
還有一些更常見(jiàn)的日常應(yīng)用程序。例如Office、IE等,同樣也是采用線(xiàn)程級(jí)并行編程,可以在運(yùn)行時(shí)同時(shí)調(diào)用多個(gè)線(xiàn)程 協(xié)同工作,所以在 雙核處理器上的運(yùn)行速度也會(huì)得到較大提升。例如,打開(kāi)IE 瀏覽器上網(wǎng)。看似簡(jiǎn)單的一個(gè)操作,實(shí)際上瀏覽器進(jìn)程會(huì)調(diào)用代碼解析、Flash播放、多媒體播放、Java、 腳本解析等一系列線(xiàn)程,這些線(xiàn)程可以并行地被雙核處理器處理,因而運(yùn)行速度大大加快(實(shí)際上IE瀏覽器的運(yùn)行還涉及到許多進(jìn)程級(jí)的交互通信,這里不再詳述)。由此可見(jiàn),對(duì)于已經(jīng)采用并行編程的軟件,不管是專(zhuān)業(yè)軟件,還是日常 應(yīng)用軟件,在多核處理器上的運(yùn)行速度都會(huì)大大提高。 日常應(yīng)用中的另一種模式是同時(shí)運(yùn)行多個(gè)程序。
許多程序沒(méi)有采用并行編程,例如一些 文件壓縮軟件、部分游戲軟件等等。對(duì)于這些 單線(xiàn)程的程序,單獨(dú)運(yùn)行在多核處理器上與單獨(dú)運(yùn)行在同樣參數(shù)的 單核處理器上沒(méi)有明顯的差別。但是,由于日常使用的最最基本的程序—— 操作系統(tǒng)——是支持 并行處理的,所以,當(dāng)在多核處理器上同時(shí)運(yùn)行多個(gè)單線(xiàn)程程序的時(shí)候,操作系統(tǒng)會(huì)把多個(gè)程序的指令分別發(fā)送給多個(gè)核心,從而使得同時(shí)完成多個(gè)程序的速度大大加快。 另外,雖然單一的單線(xiàn)程程序無(wú)法體現(xiàn)出多核處理器的優(yōu)勢(shì),但是多核處理器依然為 程序設(shè)計(jì)者提供了一個(gè)很好的平臺(tái),使得他們可以通過(guò)對(duì)原有的單線(xiàn)程序進(jìn)行并行設(shè)計(jì)優(yōu)化,以實(shí)現(xiàn)更好的程序運(yùn)行效果。
一些游戲廠(chǎng)商正在對(duì)原來(lái)的一些單線(xiàn)程游戲進(jìn)行優(yōu)化,采用并行編程使得游戲運(yùn)行得更快。有的游戲可以使用一個(gè)線(xiàn)程實(shí)現(xiàn)人物動(dòng)畫(huà),而使用另一個(gè)線(xiàn)程來(lái)載入地圖信息?;蛘呤褂靡粋€(gè)線(xiàn)程來(lái)實(shí)現(xiàn)圖像渲染中的 矩陣運(yùn)算,而使用另一個(gè)來(lái)實(shí)現(xiàn)更高的人工智能運(yùn)算。如今,大量的支持多核心的游戲涌現(xiàn)出來(lái),從而使得多核處理器的優(yōu)勢(shì)能得到進(jìn)一步的發(fā)揮。
優(yōu)點(diǎn):多線(xiàn)程,在一個(gè)時(shí)鐘周期內(nèi)能處理更多的任務(wù) 多任務(wù)處理 大緩存 高總線(xiàn) 這是單核處理器所達(dá)不到的
缺點(diǎn):功耗較大,需要特定平臺(tái)支持 需要大容量?jī)?nèi)存跟進(jìn) 一般的軟件最多支持到兩線(xiàn)程(雙核)價(jià)格高
3、多核開(kāi)發(fā)和多線(xiàn)程開(kāi)發(fā)的區(qū)別
在本質(zhì)上,多核開(kāi)發(fā)也就是利用多線(xiàn)程進(jìn)行程序開(kāi)發(fā),讓不同功能的進(jìn)程在不同的核上運(yùn)行,或者讓同一進(jìn)程中不同功能的線(xiàn)程在不同的核上運(yùn)行。以往我們學(xué)習(xí)的算法都是面向單線(xiàn)程的,而多核開(kāi)發(fā)時(shí)要將這些算法改造成支持多線(xiàn)程的算法,然后系統(tǒng)運(yùn)行時(shí)會(huì)將多線(xiàn)程分配到多核處理器上,以實(shí)現(xiàn)運(yùn)行的加速。
不過(guò)和傳統(tǒng)的多線(xiàn)程編程方式有所不同, 多核開(kāi)發(fā)對(duì)于同步鎖定等問(wèn)題較簡(jiǎn)單,但是需要仔細(xì)分析出可并行計(jì)算的代碼塊來(lái),讓多線(xiàn)程能夠在一個(gè)任務(wù)中并行。多線(xiàn)程開(kāi)發(fā)的時(shí)候,你并不知道有幾個(gè)物理CPU,而進(jìn)行多核開(kāi)發(fā)時(shí),你肯定知道有多少個(gè)物理CPU了。
4、多核處理器工作原理
由程序程序決定。如果程序支持多核處理器,那么它會(huì)把要處理的數(shù)據(jù)分解成多個(gè)部分分別給予不同的核心寄存器讓各個(gè)運(yùn)算器共同運(yùn)算,最后的結(jié)果匯總后由一個(gè)運(yùn)算器處理好分發(fā)給下一步,或者直接由程序控制將各個(gè)運(yùn)算結(jié)果下發(fā)給下一步。如果程序只支持單核,那就是很簡(jiǎn)單地把數(shù)據(jù)流供應(yīng)給一個(gè)處理器處理。
5、總結(jié)
目前,多核技術(shù)已經(jīng)成為最受關(guān)注的話(huà)題和研究方向。多核體系結(jié)構(gòu)為性能提高和節(jié)能計(jì)算等領(lǐng)域開(kāi)辟了新的方向。然而,現(xiàn)在的多核處理器還沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),基本上處于探索階段。核與核之間的連接方式、通訊協(xié)調(diào)方式、同一處理器中核與核間結(jié)構(gòu)的差異、器件資源分配策略、任務(wù)調(diào)度策略、節(jié)能策略、軟硬件協(xié)同設(shè)計(jì)策略等方面都處于研究探索之中。多核必將帶來(lái)影響整個(gè)計(jì)算機(jī)行業(yè)方方面面的巨大變革,包括體系結(jié)構(gòu)研究、嵌入式系統(tǒng)設(shè)計(jì)和解決方案設(shè)計(jì)、編譯技術(shù)、操作系統(tǒng)核心算法、應(yīng)用軟件設(shè)計(jì)等計(jì)算機(jī)系統(tǒng)的各個(gè)領(lǐng)域。
在單核處理器研究中,主要集中在提高頻率,提高指令級(jí)并行度等方面。而在多核體系中,更加關(guān)注核與核之間的協(xié)作、共享資源的分配、提高線(xiàn)程級(jí)并行度等方面。
多核處理器必然帶來(lái)一個(gè)問(wèn)題是,需要提高程序的并行度,因?yàn)閱尉€(xiàn)程程序是無(wú)法發(fā)揮多核處理器的優(yōu)勢(shì)的。通過(guò)編譯優(yōu)化可以把原先單線(xiàn)程的代碼編譯成多線(xiàn)程的形式。OpenMP提供了一種方法,程序員根據(jù)需要把可以并行處理的代碼加上合適的標(biāo)記,編譯器根據(jù)這些標(biāo)記把相應(yīng)代碼編譯成多線(xiàn)程的程序段。多線(xiàn)程程序開(kāi)發(fā)涉及到多線(xiàn)程調(diào)試的難題,這在多核處理器上會(huì)變得更加困難,所以多核體系導(dǎo)致程序開(kāi)發(fā)模式發(fā)生巨大變化。
多核處理器上的任務(wù)調(diào)度也是個(gè)新問(wèn)題,常用的調(diào)度算法有全局隊(duì)列調(diào)度和局部隊(duì)列調(diào)度。前者是指操作系統(tǒng)維護(hù)一個(gè)全局的任務(wù)等待隊(duì)列,當(dāng)系統(tǒng)中有一個(gè)CPU核心空閑時(shí),操作系統(tǒng)就從全局任務(wù)等待隊(duì)列中選取就緒任務(wù)開(kāi)始在此核心上執(zhí)行。這種方法的優(yōu)點(diǎn)是CPU核心利用率較高。后者是指操作系統(tǒng)為每個(gè)CPU內(nèi)核維護(hù)一個(gè)局部的任務(wù)等待隊(duì)列,當(dāng)系統(tǒng)中有一個(gè)CPU內(nèi)核空閑時(shí),便從該核心的任務(wù)等待隊(duì)列中選取恰當(dāng)?shù)娜蝿?wù)執(zhí)行,這種方法的優(yōu)點(diǎn)是任務(wù)基本上無(wú)需在多個(gè)CPU核心間切換,有利于提高CPU核心局部Cache命中率,從而提高系統(tǒng)的性能。目前多數(shù)CMP操作系統(tǒng)采用的是基于全局隊(duì)列的任務(wù)調(diào)度算法。
電子發(fā)燒友App


















評(píng)論