多核cpu应用场景_操作系统基础11-关于多核编程
之前,CPU的性能還主要取決于CPU的主頻,經過超摩爾定律的發展后,沒過多長時間CPU的主頻速度就已接近“極限”,使得單單靠提高CPU的主頻來提升性能變得非常困難。
目前,Intel、AMD等CPU生產商都轉而采用了多核技術來提升CPU性能。系統設計趨勢是將多個計算核放到單個芯片。無論多個計算核是在多個CPU芯片上還是在單個CPU芯片上,我們稱之為多核(multicore)或多處理器(multiprocessor)系統。
雙核處理器 = 一個處理器上包含兩個內核
多核處理器 = 一個處理器上包含兩個或多個內核
多線程編程提供機制,以便更有效地使用這些多個計算核和改進的并發性。考慮一個應用,它有 4 個線程。對于單核系統,并發僅僅意味著線程隨著時間推移交錯執行(如下圖),因為處理核只能同一時間執行單個線程。
單核系統上的并發執行
對于多核系統,并發表示線程能夠并行運行,因為系統可以為每個核分配一個單獨線程(如下圖)
多核系統上的并行執行
并行性(parallelism)和并發性(concurrency)
并行系統可以同時執行多個任務。相比之下,并發系統支持多個任務,允許所有任務都能取得進展。因此,沒有并行,并發也是可能的。
在 SMP(Symmetrical Multi-Processing 對稱多處理) 和多核架構出現之前,大多數計算機系統只有單個處理器。CPU 調度器通過快速切換系統內的進程,以便允許每個進程取得進展,從而提供并行假象。這些進程并發運行,而非并行運行。
隨著系統線程數量從幾十個到幾千上萬個,CPU 設計人員通過增加硬件來改善線程性能的提高系統性能。現代 Intel CPU 的每個核經常支持兩個線程,這種支持意味著,可以將多個線程加載到處理核以便快速切換。毫無疑問,多核計算機將繼續增加多核數量和硬件線程支持。
編程挑戰
多核系統趨勢繼續迫使系統設計人員和應用程序開發人員更好地使用多個計算核。操作系統設計人員必須編寫調度算法利用多個處理核以便允許并行執行,如上圖(多核系統上的并行執行)。對于應用程序開發人員來說,挑戰是修改現有程序和設計新的程序以便利用多線程。
一般而言,多核系統編程有五個方面的挑戰:
由于這些挑戰,許多軟件開發人員認為,多核系統的出現將需要一個全新方法來設計未來軟件系統。同樣,許多計算機科學教育者也認為:軟件開發課程應當強調平行編程。
并行類型
- 數據并行(data parallelism)
- 數據并行注重將數據分布于多個計算核上,并在每個核上執行相同操作。例如,考慮一下對大小為 N 的數組的內容進行求和。對于單核系統,一個線程只能簡單相加元素 [0]…[N-1]。不過,對于雙核系統,線程 A 運行在核 0 上,相加元素 [0]…[N/2-1];而線程 B,運行在核 1 上,相加元素 [N/2]…[N-1]。這兩個線程可并行運行在各自的計算核上。
- 任務并行(task parallelism)
- 任務并行涉及將任務(線程)而不是數據分配到多個計算核。每個線程都執行一個獨特的操作。不同線程可以操作相同的數據,或者也可以操作不同的數據。再考慮剛才的例子。與那個情況相反,一個并行任務的例子可能涉及兩個線程,每個線程對元素數組執行一個唯一的統計操作。再次,線程在單獨計算核上并行操作,但是每個執行一個獨特操作。
- 從根本上說,數據并行涉及分布數據到多個核,而任務并行分布多個任務到多個核。然而,在實踐中,應用程序很少嚴格遵循數據或任務并行。在大多數情況下,應用程序混合使用這兩個策略。
并行的兩個重要定律
- Amdahl定律(阿爾達爾定律)
Amdahl定律定義了串行系統并行化后的加速比的計算公式和理論上限,就是將一個串行系統改造成并行系統后,或者增加多個CPU之后,系統執行速度提升有多少。
加速比定義:加速比=優化前系統耗時/優化后系統耗時
總結:增加CPU處理器的數量并不一定能起到有效的作用,合理增加并行處理器數量,才能以最小的投入,得到最大的加速比。
- Gustafson定律(古斯塔夫森)
Gustafson定律主要說明處理器個數,串行比例和加速比之間的關系。
Gustafson定律假設優化后的的執行時間為:a+b。其中a為串行執行時間、b為并行執行時間,那么優化前的執行時間為:a+nb。其中n為CPU的個數,有n個CPU,那么并行所耗時間就需要遞增n倍。
只要有足夠的并行化,那么加速比和CPU個數成正比
Amdahl定律和Gustafson定律說明加速比的角度是不同的,Amdahl定律說明光增加CPU的個數是沒有意義的,還必須增加串行化比例才行。而Gustafson定律說明如果串行化比例一定的情況下,增加CPU,那么系統的性能就會提升。總的來說,如果系統通過多核CPU、并行化處理來提升性能的話,需要做兩件事情:控制好串行化和CPU個數。
總結
以上是生活随笔為你收集整理的多核cpu应用场景_操作系统基础11-关于多核编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3d饼图 vue_在Vue中如何使用hi
- 下一篇: windows2008文件服务器端口,w