來源 | 硬件十萬個為什么
提高處理器主頻可以提高處理器的性能,但是到一定程度就不能再提高了,我們需要通過雙核,或者多核來提高處理器的性能。
提高處理器主頻是一種提高計算機性能的傳統方法,但它存在一些限制和挑戰。雖然提高主頻可以在一定程度上增加處理器的運算速度,但這也帶來了一些問題:
熱量和功耗:隨著主頻的提高,處理器產生的熱量和功耗也會顯著增加。高功耗可能導致散熱問題,需要更強大的冷卻系統,而且會增加計算機系統的能耗。
性能遞減:在某一點之后,提高主頻可能會遇到性能遞減的問題。因為高頻率會導致電子信號傳輸速度的增加,可能引發信號傳輸延遲、時序問題等,從而限制性能的提升。
制程技術限制:隨著制程技術的進步,制造更高主頻的處理器變得更加困難。存在物理限制,例如晶體管的尺寸、電流密度等,制約了進一步提高主頻的可能性。
相比之下,多核處理器提供了一種更為可行和有效的方式來提高計算機性能,同時克服了主頻提升所面臨的一些問題。多核架構允許并行處理多個任務,提高整體性能,而且相對于提高主頻,多核設計在能效比、熱量分散等方面有一些優勢。
綜合考慮,多核和提高主頻都是提高計算機性能的手段,但多核處理器更符合當前計算需求和技術趨勢。在實際設計中,通常會綜合考慮這兩者以達到最佳的性能和能效比。
1.雙核≠雙倍性能
多核不一定會使你的手機或電腦速度更快,但它將提高你的PC的整體性能,這是一個有所不同的細微的技術特色。多核處理器的性能提升并不是簡單CPU核心的倍數,因為受到兩(多)個核之間共享資源的拖累。比如雙核性能只是單核的1.4~1.8倍,實際情況取決于具體的應用。
一個核拼命干活,拼命轉啊轉啊,其他核在看,最后溫度不斷上升然后藍屏了。
上圖是個笑話,不過你可以用任務管理器可以看到并不是每個核的負載是均勻分配的。
這是為什么一個核轉啊轉啊,最后藍屏的原因。
2.多核并不一定高能
從理論上來說,多核的性能肯定要比單核高很多。不過軟件的發展遠遠跟不上硬件發展的速度,這樣多核CPU在實際應用中就無法發揮其應用的功效,比如現在四核CPU已經非常的普及,但是針對四核優化的應用軟件寥寥可數。即使你已經用上八核的CPU,在運行很多軟件時仍然不會感到速度有多快的提升。因此我們并不要唯核是從,多核的不一定是最優的。“夠用就好”永遠是大家裝機時選擇硬件的唯一原則。另外由于架構、主頻的不同,多核也并不一定比少核性能高。
多核不一定高能,的原理跟人多不一定力量大,是一個道理。
3.多核不僅是多個CPU的內核
為了充分發揮CPU功效和減少用戶支出,現在越來越多CPU集成GPU功能,比如Intel就在Sandy Bridge把GPU核心整合進了CPU當中,其GPU核心的圖形核心性能大幅度地提升。
多核化是無奈之舉:以前,半導體工藝的發展可以帶來“一舉三得”的效果,包括提高晶體管速度、降低功耗和縮小芯片面積。但是,當制造工藝發展到90nm或65nm時,泄漏電流的問題凸顯,沿用以往的內部架構來提高頻率的方法難以奏效。為了在不提高工作頻率的條件下實現性能的提升,只能增加CPU內核的數量。
在有許多客戶要求進行并行處理的服務器中,多核架構容易獲得比較好的效果。但是,問題發生在根據用戶的要求運行應用軟件的客戶機里。由于可能同時運行的軟件數量有限,即使可以將各個軟件分割以后并行執行,但軟件中必須串行執行的部分仍然會妨礙處理性能的提升。許多相關人士認為,在目前這種架構的PC中,4~8個內核可能是多核處理器能夠獲得較好性能提升效果的極限。
集成多個不同類型的內核:另一方面,提供新體驗的高級用戶接口、動態及靜態圖像分析等新的應用軟件的不斷出現,對處理器的處理性能提出了更高的要求。如果處理器僅在目前以CPU內核為主的架構上繼續發展,這些新應用可能將無法實現。
2007年9月,英特爾公司董事會名譽主席Gordon Moore在英特爾秋季技術峰會上表示:“眾所周知,摩爾定律在物理上是有極限的。大約10年或15年以后,摩爾定律將會遇到根本性障礙,而退出歷史舞臺。”反過來說,Moore認為,半導體工藝的發展很可能還會像以前那樣再延續10年左右。在把工藝發展當作技術推動力的同時,為了越過橫亙在多核架構前面的壁壘,處理器應該采用什么樣的內部架構呢?
業界想到的方案是采用異構處理器架構,即將不同類型的內核集成在一起。在這種架構中,CPU內核所不擅長的浮點運算及信號處理工作,將由集成在同一塊芯片上的其它可編程內核執行。相關人士認為,集成多個不同類型內核的異構多核架構將成為今后處理器的主流架構。
從同構到異構通用處理器將實現SoC化:Nvidia公司的總裁兼CEO指出:“目前,圖形芯片具有的浮點運算性能已經大大超越了處理器。如果能夠靈活運用,隨著圖形芯片的發展,將會涌現出各種各樣新的應用。”在占據PC及服務器主流地位的x86處理器中,圍繞GPU(圖形處理單元)展開的相關研發工作突然活躍起來。
GPU的集成和通用化取得進展:圍繞GPU的研發方向主要有兩個。首先,是將GPU內核集成到處理器芯片上。AMD公司在2006年7月收購了加拿大的GPU生產商ATI科技公司,并提出了將ATI公司的GPU內核集成到處理器上的Fusion處理器方案。另外,英特爾公司在2007年4月明確表示,正在開發矢量處理器Larrabee(開發代號),其中集成了許多專用于浮點運算的CPU內核。
另一個研發方向是,利用GPU擅長對浮點運算進行并行處理的特點,將其用作矢量處理器。這就是面向通用計算領域的GPGPU(General Purpose Computing on GPU),NVIDIA公司從2006年下半年已陸續推出相關的硬件產品及軟件開發工具(見圖1)。
16nm FinFET 3D晶體管的FPGA新品---Zynq UltraScale MPSoC
看看它的內部結構:
1、 四核A53處理器 CPU
2、 一個GPU Mali-400MP
3、 一個Cortex-R5 CPU
5、 H.265(HEVC)視頻編解碼器
6、 安全模塊
7、 UltraScale FPGA 單元;
這其實就是一款異構處理器,如前所述,它是一款ASIC就級的異構處理器!而且是64位,采用16nm FinFET工藝的處理器!而且是采用FPGA實現硬加速的處理器!
64核處理器
基于高性能RISC-V內核,9-12流水線設計,支持亂序執行,主頻高達2GHz,每個Cluster最多4個內核,單SoC芯片擁有64核,64MB共享三級緩存,可以滿足數據中心的各種需求。
我們知道平頭哥C906的性能大約相當于ARM的Cortex-A7~A35的性能。可以64個處理器內核協同工作,能夠勝任一些服務器級別的工作,也是讓人很驚訝。
4、多核是怎么協同工作的?
多核處理器之間的協同工作涉及到并行計算、任務分配和數據交互。這種協同工作的方式通常通過操作系統、編程模型和硬件支持來實現。以下是多核處理器之間協同工作的一些基本概念:
并行計算:多核處理器可以同時執行多個任務或處理多個線程,實現并行計算。這意味著每個核心都可以獨立執行指令,從而提高整體系統的計算性能。
任務分配:操作系統或應用程序可以將不同的任務分配給多個核心,以實現負載均衡和提高系統的效率。任務分配的方式可以根據任務性質和系統狀態動態調整。
線程級并行:多核處理器支持線程級并行,即同時執行多個線程。這可以通過多線程編程模型實現,其中每個線程都由不同的核心執行,共同完成整體任務。
共享內存:在多核系統中,核心之間通常共享一部分內存。這使得不同核心之間可以輕松地共享數據,從而實現更緊密的協同工作。然而,共享內存也需要考慮同步和一致性等問題。
消息傳遞:多核處理器之間還可以通過消息傳遞進行通信。不同核心之間通過發送和接收消息來共享信息,這在一些分布式計算場景中比較常見。
硬件支持:多核處理器的硬件通常會提供一些支持協同工作的機制,如高速緩存一致性協議、硬件線程調度等。這些機制有助于優化多核系統的性能和效率。
多核處理器之間的協同工作是通過合理的任務分配、數據交互和并行計算來實現的。軟件層面的編程模型和操作系統的支持,以及硬件層面的設計都起著關鍵的作用。合理的協同工作可以使多核系統更好地利用計算資源,提高系統的整體性能。
5、AMP和SMP
"AMP" 、 "SMP" 都是與多處理器系統(Multiprocessing Systems)相關的術語,它們描述了不同的處理器架構方式:
AMP (Asymmetric Multiprocessing):
定義:AMP 指的是非對稱多處理,其中系統中的處理器核心可以具有不同的性能特征。
特點:不同核心可能擁有不同的時鐘頻率、功能和用途。通常,一些核心專注于高性能計算任務,而其他核心則專注于低功耗任務。
例子:某個系統中,可能有一個高性能的核心用于執行復雜的計算任務,而其他低功耗核心則用于處理簡單的后臺任務,以節省能量。
SMP (Symmetric Multiprocessing):
定義:SMP 指的是對稱多處理,其中系統中的所有處理器核心被認為是相同的,具有相似的性能特征。
特點:所有核心共享相同的內存空間和系統總線,可以同時執行相同的指令序列。這使得任務可以在不同核心之間平均分配,實現負載均衡。
例子:在 SMP 系統中,所有的核心都能夠處理相同類型的任務,而任務可以被分配到任何可用的核心上。
在選擇 AMP 還是 SMP 的架構時,取決于應用程序的性質和系統設計的目標。AMP 提供了更大的靈活性,允許系統中的核心具有不同的功能,而 SMP 則更注重任務的平均分配和相對均勻的性能。
6、Cache一致性
Cache(緩存)一致性是多處理系統中的一個關鍵概念,它確保不同處理器或核心的緩存之間的數據保持一致。在具有多個處理器核心的系統中,每個核心都有自己的緩存,當一個核心修改內存中的數據時,其他核心的緩存可能會包含過時的數據。為了確保數據的正確性和一致性,需要實現緩存一致性。
以下是一些關于緩存一致性的重要概念和方法:
寫命令和寫回:處理器對內存的寫操作通常包括寫命令和寫回兩個階段。寫命令將數據寫入內存,而寫回則是將數據從緩存寫回內存。緩存一致性涉及確保在寫回階段,其他核心的緩存中的相應數據被更新或無效。
緩存一致性協議:緩存一致性通常通過硬件支持的緩存一致性協議來實現。一些常見的協議包括MESI(Modified, Exclusive, Shared, Invalid)協議和MOESI(Modified, Owned, Exclusive, Shared, Invalid)協議。這些協議定義了緩存狀態和處理器之間的通信規則,以確保數據的一致性。
總線鎖定:通過總線鎖定機制,可以實現對總線的獨占訪問,防止多個處理器同時修改內存。這有助于減小緩存不一致性的可能性,但也可能引入性能瓶頸。
全局內存一致性模型:一些系統采用全局內存一致性模型,即所有處理器對內存的訪問看起來是按照某個全局的順序進行的。這要求系統保證所有核心看到的內存訪問順序是一致的。
軟件同步和屏障:在并行編程中,軟件同步機制和屏障(barrier)可以用于確保在多個核心之間的操作順序。這有助于維護一致性,但也可能引入性能開銷。
緩存一致性是多處理系統設計中的復雜問題,需要綜合考慮性能、復雜性和一致性的要求。各種硬件和軟件技術都被用來解決這一問題,以確保系統的正確運行和高性能。
7、 雙核、雙芯、超線程的區別
雙(多)核:是指擁有兩(或多個)物理核心(又稱為內核),各種CPU核心都具有固定的邏輯結構,一級緩存、二級緩存、執行單元、指令級單元和總線接口等邏輯單元,各個核心通過超傳輸技術讓CPU內核直接跟外部I/O相連,集成內存控制器技術,使得每個內核都有自己的高速緩存可用,都有自己的專用車道直通I/O,沒有資源爭搶的問題。
雙(多)芯:僅僅將兩(或多個)完整的CPU封裝在一起,連接到同一個前端總線上。由于總線的限制,兩個核心必然會產生總線爭搶,影響性能,而且這樣的核心越多,越容易加劇處理器爭用前端總線帶寬,成為提升系統性能的瓶頸,這是CPU架構引發的先天故障,因此這種雙(多)芯實際上是“假多核”。雙芯有些像是北京郊區開發的大型社區一樣,多個社區利用同一條城市快速路,人們出行(數據處理)肯定要遇到堵車的問題。雙核則是為不同小區開發專用車道,每個小區出行并不交叉(數據可以并行處理),并不會發生堵車現象。
HT技術(即超線程技術):HT技術是在處理器實現2個邏輯處理器(注意不是物理處理器),是充分利用處理器資源,類似虛擬CPU,讓系統誤認為是雙核處理器。而雙核心處理器是集成2個物理核心,是實際意義上的雙核心處理器。舉個形象例子來說,前者好像是一個能用雙手同時炒菜的廚師,但一次只能把一碟菜放到桌面;而雙核心處理器好比2個廚師炒兩個菜,并同時把兩個菜送到桌面。
8、進程和線程
進程(Process) 和 線程(Thread) 是計算機中用于執行任務的兩個基本概念
進程
簡單的來講進程的概念主要有兩點:第一,進程是一個實體。每一個進程都有它自己的地址空間,一般情況下,包括文本區域(text region)、數據區域(data region)和堆棧(stack region)。文本區域存儲處理器執行的代碼;數據區域存儲變量和進程執行期間使用的動態分配的內存;堆棧區域存儲著活動過程調用的指令和本地變量。第二,進程是一個 “執行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時,它才能成為一個活動的實體,我們稱其為進程。
進程是程序的一次執行過程,是動態概念
程序是一組有序的指令和數據集合,是靜態概念
線程
有時被稱為輕量進程(Lightweight Process,LWP),是程序執行流的最小單元。是被系統獨立調度和分派的基本單位。
是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤銷另一個線程,同一進程中的多個線程之間可以并發執行。線程有就緒、阻塞和運行三種基本狀態。一個線程可以創建和撤銷另一個線程,同一進程中的多個線程之間可以并發執行。由于線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。就緒狀態是指線程具備運行的所有條件,邏輯上可以運行在等待處理機;運行狀態是指線程占有處理機正在運行;阻塞狀態是指線程在等待一個事件(如某個信號量),邏輯上不可執行。每一個程序都至少有一個線程,若程序只有一個線程,那就是程序本身。進程可以簡單地理解為一個可以獨立運行的程序單位。它是線程的集合,進程就是由一個或多個線程構成的,每一個線程都是進程中的一條執行路徑。
進程與線程,它們之間存在一些關鍵區別:
概念定義:
進程:進程是計算機中運行的程序的實例。每個進程都有自己的地址空間、內存、文件句柄等資源,是操作系統進行資源分配和調度的基本單位。
線程:線程是進程中的一個執行單元,是進程的一個子集。一個進程可以包含多個線程,它們共享相同的地址空間和其他資源,但擁有獨立的執行流。
資源分配:
進程:進程是獨立的資源單位,擁有獨立的內存空間和系統資源。進程間通信通常需要特殊的機制,如進程間通信(IPC)。
線程:線程共享相同進程的資源,包括內存空間和文件。線程之間的通信相對容易,因為它們可以直接訪問共享的數據空間。
切換開銷:
進程:由于進程有獨立的資源,進程間切換的開銷較大。進程切換通常需要保存和恢復大量的狀態信息。
線程:線程切換的開銷較小,因為它們共享相同的地址空間,切換只需要保存和恢復少量的狀態信息。
并發性:
進程:進程間是相互獨立的,一個進程的崩潰不會直接影響其他進程。
線程:線程共享相同的地址空間,因此一個線程的錯誤可能會影響到同一進程內的其他線程。
創建和銷毀:
進程:創建和銷毀進程的開銷較大,通常需要分配和釋放大量的資源。
線程:創建和銷毀線程的開銷相對較小,因為它們共享進程的資源。
獨立性:
進程:進程是獨立的執行單位,進程之間相對隔離。
線程:線程是進程內的執行單元,線程之間共享相同進程的資源,因此相對于進程來說更密切相關。
進程和線程是操作系統中用于管理和執行任務的兩個關鍵概念。線程的輕量級和共享資源的特性使其在某些情況下更適合實現并發性和多任務處理。選擇使用進程還是線程通常取決于任務的性質和系統設計的需求。
一個基本的事實前提:一個CPU在一個瞬間只能處理一個任務。但為什么在我們人類視角,哪怕是單核心計算機也能同時做很多事情,比如同時聽音樂和瀏覽網頁,作為整個系統唯一可以完成計算任務的 CPU 是如何保證兩個進程“同時進行”的呢?時間片輪轉調度!
每個進程會被操作系統分配一個時間片,即每次被 CPU 選中來執行當前進程所用的時間。時間一到,無論進程是否運行結束,操作系統都會強制將 CPU 這個資源轉到另一個進程去執行。為什么要這樣做呢?因為只有一個單核 CPU,假如沒有這種輪轉調度機制,那它該去處理寫文檔的進程還是該去處理聽音樂的進程?無論執行哪個進程,另一個進程肯定是不被執行,程序自然就是無運行的狀態。如果 CPU 一會兒處理 word 進程一會兒處理聽音樂的進程,起初看起來好像會覺得兩個進程都很卡,但是 CPU 的執行速度已經快到讓人們感覺不到這種切換的頓挫感,就真的好像兩個進程在“并行運行”。
9、多任務、多線程、多核。
多任務是指系統可以同時執行多個任務,比如你可以一邊下載、一邊聽歌,Windows可以很好支持多任務的運行,這和多核CPU并沒有多大關系。多線程則是指系統可以針對某項操作,調用多個CPU進行并行處理。比如支持多線程的PS,在批處理多個操作(如濾鏡、摳圖)時,系統就會調用多路CPU并行處理這些操作以提高操作效率。
"多任務"、"多線程" 和 "多核" 是計算機系統中描述并發處理和并行計算的概念,它們之間存在一些區別:
多任務 (Multitasking):
定義:多任務是指在同一時間內執行多個任務或程序的能力。這些任務可能屬于不同的應用程序,系統通過快速切換執行上下文來模擬同時運行。
實現方式:多任務可以通過時間片輪轉、優先級調度等方式實現。每個任務分配一小段時間,系統在不同任務之間切換,使用戶感覺好像它們在同時運行。
多線程 (Multithreading):
定義:多線程是在同一進程內執行多個線程的能力。線程是進程內的執行單元,多線程允許程序同時執行多個獨立的線程,每個線程都有自己的執行流。
實現方式:多線程可以在單個核心上運行,通過在不同線程之間進行快速切換來模擬并發。多線程也可以在多核系統中發揮更大的優勢,每個線程可以在不同核心上并行執行。
多核 (Multicore):
定義:多核是指計算機系統中包含多個處理器核心的架構。每個核心都是一個獨立的處理器,能夠獨立執行指令序列。多核系統允許同時處理多個任務或線程,提高整體系統性能。
實現方式:多核系統可以是對稱多處理(SMP)或非對稱多處理(AMP)。在 SMP 中,所有核心共享內存,而在 AMP 中,核心可能具有不同的性能特征。
多任務 是指同時執行多個任務,可以是不同應用程序的任務。單核也可以多任務,把處理器按照時間片段分配給不同的任務。
多線程 是在同一進程內執行多個線程,每個線程可以獨立執行,但它們共享進程的資源。
多核 是指計算機系統中包含多個獨立的處理器核心,可以同時執行不同的任務或線程。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19395瀏覽量
230672 -
cpu
+關注
關注
68文章
10898瀏覽量
212571 -
計算機
+關注
關注
19文章
7529瀏覽量
88408 -
多核處理器
+關注
關注
0文章
109瀏覽量
19941
原文標題:CPU為什么需要多核?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論