多核與多處理器
多核()
多核處理器就是指單個 CPU 中有多個可執行單元。
如下圖所示,單個 CPU 中有兩套可執行單元。
多處理器()
多處理器系統則是一個擁有多個 CPU 的系統。每個 CPU 中也可能有多個核。
如下圖所示,一個系統中擁有 個處理器,即 個CPU。
併發與並行
併發()
併發執行的定義是,多個程序在一段重疊的時間段中開始、運行與結束,但這些程序並沒有在任何一個時刻同時在執行。如下圖的左半部分圖片所示,同一時刻只有一個程序在執行。
因此我們常聽到的 “兩個任務或兩個程序” 併發執行這樣的說法,並不意味着這兩個程序在某個時刻同時執行。
並行()
並行執行,則意味着在同一個時刻,存在兩個以上任務在同時運行。如下圖的右半部分所示,同一時刻有多個任務在同時執行。
其實可以把並行理解爲平行,避免與併發概念發生混淆。
這裏需要注意,併發執行的關鍵點在於多個程序在一段時間內
同時執行,但並行執行的關鍵點在於多個任務在同一時刻點
同時執行。
接下來我們再仔細探討一下併發與並行之間更深刻的關係。
並行,但不併發
如果一個系統僅支持平行,不支持併發,則意味着必須執行完程序 才能執行程序 ,但執行程序 時,其中的各個子任務可以在同一時刻同時執行。
併發,但不併行
併發但不併行,則意味着執行程序 時,可以突然中斷執行程序 轉去執行程序 ,執行完程序 後再去執行 。
併發且併發
併發且並行意味着執行程序 和 時不僅可以互相打斷,還可以在同一時刻同時執行程序 和 。
超線程技術
超線程技術概念
- 超線程技術()是 公司提出的一種提高 CPU 性能的技術,可將一個物理 CPU 當作兩個邏輯 CPU 使用,同時執行多個線程,從而提高效率。
- 超線程處理器內部的兩個邏輯處理器共享一組處理器執行單元,運算能力提高 30%。
- 超線程技術可將處理器內部的閒置資源利用起來,當並行執行兩個線程時,負責處理第二個線程的邏輯處理器,僅使用運行第一個線程的處理器不使用的資源。
超線程技術執行單線程
執行單個線程時,超線程技術的效果反而下降。
因爲打開超線程後,處理器內部緩存被劃分爲幾個區域,互相共享內部資源,單個子系統性能反而下降。
爲了更好地說明超線程技術的特性,我們將雙核處理器與支持超線程技術的單核處理器進行對比。
雙核處理器概念
雙核處理器是在一個處理器芯片上集成了兩個 “物理的” 運算核心。
超線程單核處理器與雙核處理器的區別
- 開啓了超線程技術的單核處理器與雙核處理器在操作系統中都被識別爲兩個處理器,二者的區別在於,前者是兩個 “邏輯” 處理器,後者是兩個 “物理” 處理器。
- 超線程的邏輯處理器並沒有獨立的執行單元、整數單元、寄存器甚至緩存,它們在運行時仍需要共用執行單元、緩存和總線接口。
- 執行多線程時,超線程的兩個處理器交替工作,當爭用某資源時,一個線程必須暫停並讓出資源。