多核處理器介紹

多核是多微處理器核的簡稱,是將兩個或更多的獨立處理器封裝在一起,集成在一個電路中。多核處理器是單枚芯片(也稱爲硅核),能夠直接插入單一的處理器插槽中,但操作系統會利用所有相關的資源,將它的每個執行內核作爲分立的邏輯處理器。通過在多個執行內核之間劃分任務,多核處理器可在特定的時鐘週期內執行更多任務。

多線程是指從軟件或者硬件上實現多個線程併發執行的技術。具有多線程能力的計算機因有硬件支持而能夠在同一時間執行多於一個線程,進而提升整體處理性能。具有這種能力的系統包括對稱多處理機、多核心處理器以及芯片級多處理或同時多線程處理器。在一個程序中,這些獨立運行的程序片段叫作“線程”,利用它編程的概念就叫作“多線程處理”。

如果某個系統支持兩個或者多個動作(Action)同時存在,那麼這個系統就是一個併發系統。如果某個系統支持兩個或者多個動作同時執行,那麼這個系統就是一個並行系統。

 

多核編程技術主要包括並行計算、共享資源分佈式計算、任務分解與調度、Lock-Free編程等內容。其中共享資源分佈式計算、任務分解與調度是最重要的內容,也是大多數程序員未接觸過的內容,許多並行算法都可以通過它們來實現。多核編程模式主要是提供一種多核並行與分佈式編程的普遍方法,有了這些編程模式後,程序員不再需要去學習各種複雜的並行算法,它可以複用現有的串行算法,很容易地實現並行和分佈式計算。在多核編程技術中,最重要的一點是如何將計算均勻分攤到各個CPU核上。

多核時代的到來,給程序員的編程思維帶來了巨大的衝擊和挑戰。爲了能夠充分利用多核性能,程序員必須學會以分塊的思維設計程序,以多進程或多線程的形式來編寫程序。到底應該使用多進程還是多線程的形式來編寫程序,是最讓程序員感到困惑的問題之一,這些需要根據具體的應用來決定。在通常情況下,使用多線程進行多核編程比使用多進程有更大的優勢,因爲:

(1)線程的創建和切換開銷比進程更小。

(2)線程之間通信的方式比較多,而且簡單也更有效率。

(3)多線程有很多的基礎庫支持。

(4)多線程的程序比多進程的程序更容易理解和修改。

除了編程形式,使用多線程編程的動機也發生了改變。過去,Windows程序員使用多線程的主要原因之一是爲了提高用戶程序運行效率,例如,在長時間的計算中提高GUI、I/O或者網絡的響應速度。而在多核時代編寫應用程序爲了充分利用多個計算核心,縮短計算時間,或者在相同的時間段內計算更多任務。例如,在進行遊戲編程時,通過多線程的方式把碰撞檢測的計算分散到多個CPU內核,就可以大大縮減計算時間,也可以利用多核做更細緻的檢測計算,從而能夠模擬更加真實的碰撞。

處理器所能交換的最小存儲單元就是一個cache行,或者一個cache塊。兩個獨立的cache在需要讀取同一cache行時,會共享該cache行。但如果在其中一個cache中,該cache行被寫入,而在另一個cache中該cache行被讀取,那麼即使讀寫的地址不相交,也需要在這兩個cache之間移動該cache行。就像兩個人同時在寫一本日誌的兩個不同部分,兩人的寫入動作相互獨立,但是除非將日誌撕成兩半,否則這兩個人必須來回地互相傳遞這本日誌。同樣地,兩個硬件線程在寫入一個cache的不同部分時,互相競爭cache,就像在進行乒乓球比賽。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章