多核技術

1、首先要區別多核與多處理器:即多核CPU與多個CPU的區別   http://www.zhihu.com/question/20998226

架構可以千變萬化,面向需求、綜合考量是王道。
來,簡單舉個例子。假設現在我們要設計一臺計算機的處理器部分的架構。現在擺在我們面前的有兩種選擇,多個單核CPU和單個多核CPU。

如果我們選擇多個單核CPU,那麼每一個CPU都需要有較爲獨立的電路支持,有自己的Cache,而他們之間通過板上的總線進行通信。假如在這樣的架構上,我們要跑一個多線程的程序(常見典型情況),不考慮超線程,那麼每一個線程就要跑在一個獨立的CPU上,線程間的所有協作都要走總線,而共享的數據更是有可能要在好幾個Cache裏同時存在。這樣的話,總線開銷相比較而言是很大的,怎麼辦?那麼多Cache,即使我們不心疼存儲能力的浪費,一致性怎麼保證?如果真正做出來,還要在主板上佔多塊地盤,給佈局佈線帶來更大的挑戰,怎麼搞定?

如果我們選擇多核單CPU,那麼我們只需要一套芯片組,一套存儲,多核之間通過芯片內部總線進行通信,共享使用內存。在這樣的架構上,如果我們跑一個多線程的程序,那麼線程間通信將比上一種情形更快。如果最終實現出來,對板上空間的佔用較小,佈局佈線的壓力也較小。

看起來,多核單CPU完勝嘛。可是,如果需要同時跑多個大程序怎麼辦?假設倆大程序,每一個程序都好多線程還幾乎用滿cache,它們分時使用CPU,那在程序間切換的時候,光指令和數據的替換就要費多大事情啊!

所以呢,大部分一般咱們使用的電腦,都是單CPU多核的,比如我們配的Dell T3600,有一顆Intel Xeon E5-1650,6核,虛擬爲12個邏輯核心。少部分高端人士需要更強的多任務併發能力,就會搞一個多顆多核CPU的機子,Mac Pro就可以有兩顆。

2、瞭解多核技術   百度百科

內核是指在一枚處理器中集成兩個或多個完整的計算引擎(內核)。多核技術的開發源於工程師們認識到,僅提高單核芯片的速度會產生過多熱量且無法帶來相應的性能改善,先前的處理器產品就是如此。他們認識到,在先前產品中以那種速率,處理器產生的熱量很快會超過太陽表面。即便是沒有熱量問題,其性價比也令人難以接受,速度稍快的處理器價格要高很多。

多核技術能夠使服務器並行處理任務,而在以前,這可能需要使用多個處理器,多核系統更易於擴充,並且能夠在更纖巧的外形中融入更強大的處理性能,這種外形所用的功耗更低、計算功耗產生的熱量更少。多核技術 是處理器發展的必然近20年來,推動微處理器性能不斷提高的因素主要有兩個:半導體工藝技術的飛速進步和體系結構的不斷髮展。

半導體工藝技術的每一次進步都爲微處理器體系結構的研究提出了新的問題,開闢了新的領域;體系結構的進展又在半導體工藝技術發展的基礎上進一步提高了微處理器的性能。這兩個因素是相互影響,相互促進的。一般說來, 工藝和電路技術的發展使得處理器性能提高約20倍,體系結構的發展使得處理器性能提高約4倍,編譯技術的發展使得處理器性能提高約1.4倍。但是今天,這種規律性的東西卻很難維持。多核的出現是技術發展和應用需求的必然產物。

單芯片多處理器通過在一個芯片上集成多個微處理器核心來提高程序的並行性。每個微處理器核心實質上都是一個相對簡單的單線程微處理器或者比較簡單的多線程微處理器,這樣多個微處理器核心就可以並行地執行程序代碼,因而具有了較高的線程級並行性。由於CMP採用了相對簡單的微處理器作爲處理器核心,使得CMP具有高主頻、設計和驗證週期短、控制邏輯簡單、擴展性好、易於實現、功耗低、通信延遲低等優點。此外,CMP還能充分利用不同應用的指令級並行和線程級並行,具有較高線程級並行性的應用如商業應用等可以很好地利用這種結構來提高性能。目前單芯片多處理器已經成爲處理器體系結構發展的一種必然趨勢。

3、數據級並行、指令級並行、線程級並行   http://www.zhihu.com/question/21823699

  1. 處理器是就是執行指令的機器。性能是處理器最重要的指標之一,《計算機系統結構.量化研究方法》中提出了下面一個處理器性能公式。CPU時間=指令數×CPI×時鐘週期時間。這裏的CPI(Cycle Per Instruction)。
  2. 因此提高性能,可以從以下幾個方面着手。
    1. 降低指令數目。有硬件和軟件兩個方面可以降低指令數目。<1>通過編譯器的優化來去除冗餘指令。<2>使用數據級並行。在多媒體數據處理領域,會有這樣一種情況發生:同一操作重複處理多個數據。因此很多專用處理器設置了SIMD指令(Single Instruction Multiple Data),如普通處理器執行以下指令,
      AND Dest1  op_a  op_b
      AND Dest2  op_c  op_d
      
      在SIMD處理器中可能只需要這樣一條指令就可以了
      SIMD_AND Dest1 Dest2  op_a op_b op_c op_d
      
      缺點是硬件代價稍高。
    2. 減少時鐘週期,等價於提高時鐘頻率。這個方面可以通過兩個手段來達到。<1>使用先進的工藝,這樣就直接降低了關鍵路徑的延遲,可以在固定時間內發射更多的指令,摩爾定律正是這個方面的體現。<2>使用流水線技術,這是指令級並行的一種,將執行路徑拆分爲若干段,減少了等待,在任一時間點上同時有N條指令在執行,原理可參考工業流水線技術,缺點是會由於指令的相關性帶來指令阻塞,很難達到N倍的性能提升。
    3. 降低CPI。也就是減少平均每個指令使用的時鐘週期。可以每個週期執行多條指令來實現,也就是指令級並行。上面所說的流水線技術就是其中一種。此外還可以使用多發射等技術來實現。
  3. 單獨說一下多線程。我們平時所聽到的多線程通常指的是操作系統層面的多線程,比如,我們同時在聊qq和聽歌,操作系統通過時間片輪迴的調度方法讓處理器分別處理qq程序和播放器程序,只不過由於切換速度過快我們感受不到。處理器的多線程和這個類似。比如處理器中同時執行者t1, t2, t3三個程序(我們稱爲三個線程)。對於單發射處理器來說,每個時間點處理器只能被一個線程佔用,比如t1,當執行到某一個時間點時,可能會執行一些速度很慢但不需要處理器協助的動作,如從硬盤取數據,爲了避免處理器過長時間等待所造成的性能損失,我們可以去執行t2程序段,也就是切換到了t2線程。當然了,在切換之前需要保存斷點以便重新切換回t1線程時可以繼續執行。這也就是線程級並行,其實也是爲了降低CPI。











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