多核處理器與MP架構


多核處理器也稱片上多核處理器(Chip Multi-Processor,CMP)。

多核處理器的流行

多核出現前,商業化處理器都致力於單核處理器的發展,其性能已經發揮到極致,僅僅提高單核芯片的速度會產生過多熱量且無法帶來相應性能改善,但CPU性能需求大於CPU發展速度。盡管增加流水線提高頻率,但緩存增加和漏電流控制不力造成功率大幅增加,性能反而不如之前低頻率的CPU。功率增加,散熱問題也嚴重了,風冷已經不能解決問題了。

那么新技術必須出現-多核處理器。早在1996年就有第一款多核CPU原型Hydra。2001年IBM推出第一個商用多核處理器POWER4,2005年Intal和AMD多核處理器大規模應用。

多核處理器越來越流行,無論在服務器、桌面、上網本、平板、手機還是醫療設備、國防、航天等方面。

我們來了解一下基礎知識。

多核處理器分類-同構、異構

從硬件的角度來看,多核設計分為兩類。

  • 如果所有的核心或CPU具有相同的構架,那么定義為同構多核(homogeneous);
  • 如果架構不同,那么稱為異構(heterogeneous)多核。

從應用來看,同構多核處理器中大多數由通用處理器核構成,每個核可以獨立運行,類似單核處理器。而異構多核處理器往往同時繼承了通用處理器、DSP、FPGA、媒體處理器、網絡處理器等。每個內核針對不同的需求設定的,從而提高應用的計算性能或實時性能。

目前的異構多處理器有:TI的達芬奇平台DM6000系列(ARM9+DSP)、Xilinx的Zynq7000系列(雙核Cortex-A9+FPGA)、Cell處理器(1個64位POWERPC+8個32位協處理器)等等。

同構多處理器就比較多了,Exynos4412,freescale i.mx6 dual和quad系列、TI的OMAP4460等,Intel的Core Duo、Core2 Duo等。

多核處理器運行模式-SMP、AMP、BMP

從軟件的角度來看,多核處理器的運行模式有三種:

  • SMP:對稱多處理,symmetric multi-processing
  • AMP:非對稱多處理,asymmetric multi-processing
  • BMP:混合多處理,bound multi-processing
運行模式 名稱 意義 特點
SMP Symmetric Multi-Processing 對稱多處理器結構 每個CPU內核運行一個獨立的操作系統或同一操作系統的獨立實例(instantiation)
AMP Asymmetric Multi-Processing 非對稱多處理器結構 一個操作系統的實例可以同時管理所有CPU內核,且應用並不綁定某一個內核。
BMP Bound Multi-Processing 混合多處理器結構 一個操作系統的實例可以同時管理所有CPU內核,但每個應用被鎖定於某個指定的核心(具有明確的邊界)

簡單的解釋一下:

  • AMP-多個核心相對獨立的運行不同的任務,每個核心可能運行不同的操作系統或裸機程序,或者不同版本的操作系統。但是有一個主要核心,用來控制整個系統以及其它從核心。具有主從模式。

舉個例子,比如一個主要核心控制用戶界面UI,從核心控制數據采集以及輸出。還有POS機,一個負責UI,一個負責交易。也就是兩者負責不同的任務。每個核心有自己的內存空間(同時會有共享的內存空間),另外兩者之間還有一定的通信機制。從硬件上來說,這種多處理模式可能是同構的,也可能是異構的,但大多情況是異構多處理器。如MCU+DSP,MCU+FPGA等。同構的當然也有。比如Xilinx就提供了案例,Sun公司的Solari4.1.3系統也支持AMP模式(從主從角度來看,而不是多個操作系統)。Mars Board也可以運行AMP模式。

  • SMP-對稱多處理,這個是目前用的最多的,一個OS同等的管理各個內核,為各個內核分配工作負載。目前,大多數的系統都支持SMP模式,如Linux,Vxworks,windows。這種模式就是簡單提高運行性能。比如PC機上雙核、四核運行windows,linux等。所有的核心共享內存。另外,這種模式的通常都是同構多核處理器,因為異構的結構不同,實現比較復雜。

  • BMP-邊界多處理,和SMP類似,也是一個OS管理所有內核,但是不同的是,BMP中,開發者可以指定將某個任務僅在某個指定內核上執行。

可按我自己的理解,Linux(操作系統)可以將線程(任務)綁定到某個CPU執行(這種特性叫做:“CPU親和性”),這是否是一種BMP-SMP轉換呢?

上述三種模式都有其各自的優點和缺點。每一個模式適合於解決某方面的特定問題,而且對操作系統的要求也各不相同。

相關術語

CPU和處理器(Processor)在一般的計算機技術文檔中是同義詞,但是在SMP硬件平台上對兩者進行區分有助於准確描述問題,同時我們還定義了其它幾個術語:

CPU:特指一個硅處理單元,該單元可以執行程序指令和處理數據,和多核(Multi-Core)中的核(Core)是同義詞,本文對Core和CPU不加區分;

  • 處理器(Processor):指一個物理硅片,里面可能會包含一個或者多個CPU;

  • 單核處理器(Uniprocessor):指的是一個物理硅片,該硅片中僅僅含有一個CPU;

  • 多處理器(Multiprocessor):指的是一個硬件系統,其中可以包含有多個處理器(Processor);

SMP硬件平台:指的是包含SMP處理器的硬件系統,SMP處理器可以是一個對稱多核處理器,也可以是多個對等的單核處理器構成。CPU之間、或者單核處理器之間的地位平等,即它們平等的訪問內存和外設資源,硬件系統的內存結構必須是UMA(一致內存訪問)體系結構。

在嵌入式業內多核處理器更多的是指對稱多核處理器,例如:
A:以ZedBoard 開發板是一個SMP硬件平台,該平台使用的雙核處理器是一個多核處理器(Multicore Processor),在該處理器中集成了兩個CPU(即Core),這兩個Core都是Core-A9架構的。
B:以ZC106 開發板 是一個 AMP硬件平台,該平台使用的雙核處理器是一個多核處理器(Multicore Processor),在該處理器中集成了兩個CPU(即Core),一個 是 Cortex-A9架構的核,另外一個Cortex-R5 的核。

AP:Application Processor,應用處理器

BP:Baseband Processor,基帶處理器

GPU:圖像處理單元,Graphic Processor Unit,

有的PC芯片會將CPU和GPU集成起來,在手機中將AP和BP集成在一個硅片中。

Soc-System On Chip,片上系統;將CPU和一些外圍器件集成到一個硅片中。

參考

多核處理器基礎SMP&AMP&BMP

SMP與AMP體系結構


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM