計算機的五大組成部分:控制器、運算器、存儲器、輸入設備、輸出設備多線程
多核CPU硬件架構介紹架構
Flynn於1972年提出了計算平臺的Flynn分類法,主要根據指令流和數據流來分類,共分爲四種類型的計算平臺,以下圖所示:性能
單指令流單數據流機器(SISD)spa
SISD機器是一種傳統的串行計算機,它的硬件不支持任何形式的並行計算,全部的指令都是串行執行。而且在某個時鐘週期內,CPU只能處理一個數據流。所以這種機器被稱做單指令流單數據流機器。早期的計算機都是SISD機器,如IBM PC機,早期的巨型機和許多8位的家用機等。.net
單指令流多數據流機器(SIMD)線程
SIMD是採用一個指令流處理多個數據流。這類機器在數字信號處理、圖像處理、以及多媒體信息處理等領域很是有效。3d
Intel處理器實現的MMXTM、SSE(Streaming SIMD Extensions)、SSE2及SSE3擴展指令集,都能在單個時鐘週期內處理多個數據單元。也就是說咱們如今用的單核計算機基本上都屬於SIMD機器。htm
多指令流單數據流機器(MISD)blog
MISD是採用多個指令流來處理單個數據流。因爲實際狀況中,採用多指令流處理多數據流纔是更有效的方法,所以MISD只是做爲理論模型出現,沒有投入到實際應用之中。進程
多指令流多數據流機器(MIMD)
MIMD機器能夠同時執行多個指令流,這些指令流分別對不一樣數據流進行操做。最新的多核計算平臺就屬於MIMD的範疇,例如Intel和AMD的雙核處理器等都屬於MIMD。
多核CPU硬件結構
多核CPU是將多個CPU核集成到單個芯片中,每一個CPU核都是一個單獨的處理器。每一個CPU核能夠有本身單獨的Cache,也能夠多個CPU核共享同一Cache。下圖即是一個不共享Cache的雙核CPU體系結構。
在現代的多核硬件結構中,內存對多個CPU核是共享的,CPU核通常都是對稱的,所以多核屬於共享存儲的對稱多處理器(Symmetric Multi-processor,SMP)。
在多核硬件結構中,若是要充分發揮硬件的性能,必需要採用多線程(或多進程)執行,使得每一個CPU核在同一時刻都有線程在執行。
和單核上的多線程不一樣,多核上的多個線程是在物理上並行執行的,是一種真正意義上的並行執行,在同一時刻有多個線程在並行執行。而單核上的多線程是一種多線程交錯執行,實際上在同一時刻只有一個線程在執行。