計算機架構

MANY_L發表於2019-03-28

       有多種不同的方法可以對計算機架構進行分類。一個廣泛使用的分類方法是弗林分類法(Flynn’s Taxonomy),它根據指令和資料進入CPU的方式,將計算機架構分為4種不同的型別(如下圖所示)。

 

  • 單指令單資料(SISD)
  • 單指令多資料(SIMD)
  • 多指令單資料(MISD)
  • 多指令多資料(MIMD)

 



       SISD指的是傳統計算機:一種序列架構。在這種計算機上只有一個核心。在任何時間點上只有一個指令流在處理一個資料流。
       SIMD是一種並行架構型別。在這種計算機上有多個核心。在任何時間點上所有的核心只有一個指令流處理不同的資料流。向量機是一種典型的SIMD型別的計算機,現在大多數計算機都採用了SIMD架構。SIMD最大的優勢或許就是,在CPU上編寫程式碼時,程式設計師可以繼續按序列邏輯思考但對並行資料操作實現並行加速,而其他細節則由編譯器來負
責。
       MISD類架構比較少見,在這種架構中,每個核心通過使用多個指令流處理同一個資料流。
       MIMD是一種並行架構,在這種架構中,多個核心使用多個指令流來非同步處理多個資料流,從而實現空間上的並行性。許多MIMD架構還包括SIMD執行的子元件。
為了實現以下目的,在架構層次上已經取得了許多進展。

  • 降低延遲
  • 提高頻寬
  • 提高吞吐量

        延遲是一個操作從開始到完成所需要的時間,常用微秒來表示。頻寬是單位時間內可處理的資料量,通常表示為MB/s或GB/s。吞吐量是單位時間內成功處理的運算數量,通常表示為gflops(即每秒十億次的浮點運算數量),特別是在重點使用浮點          計算的科學計算領域經常用到。延遲用來衡量完成一次操作的時間,而吞吐量用來衡量在給定的單位時間內處理的操作量。
計算機架構也能根據記憶體組織方式進行進一步劃分,一般可以分成下面兩種型別。

  • 分散式記憶體的多節點系統
  • 共享記憶體的多處理器系統

        在多節點系統中,大型計算引擎是由許多網路連線的處理器構成的。每個處理器有自己的本地記憶體,而且處理器之間可以通過網路進行通訊。下圖所示為一個典型的分散式記憶體的多節點系統,這種系統常被稱作叢集。


        多處理器架構的大小通常是從雙處理器到幾十個或幾百個處理器之間。這些處理器要麼是與同一個實體記憶體相關聯(如圖1-8所示),要麼共用一個低延遲的鏈路(如PCI-Express或PCIe)。儘管共享記憶體意味著共享地址空間,但並不意味著它就是一個獨立的實體記憶體。這樣的多處理器不僅包括由多個核心組成的微控制器系統,即所謂的多核系統,而且還包括由多個晶片組成的計算機系統,其中每一個晶片都可能是多核的。目前,多核架構已經永久地取代了單核架構。


        “眾核”(many-core)通常是指有很多核心(幾十或幾百個)的多核架構。近年來,計算機架構正在從多核轉向眾核。
        GPU代表了一種眾核架構,幾乎包括了前文描述的所有並行結構:多執行緒、MIMD(多指令多資料)、SIMD(單指令多資料),以及指令級並行。NVIDIA公司稱這種架構為SIMT(單指令多執行緒)。
        GPU和CPU的來源並不相同。歷史上,GPU是圖形加速器。直到最近,GPU才演化成一個強大的、多用途的、完全可程式設計的,以及任務和資料並行的處理器,它非常適合解決
大規模的平行計算問題。


GPU核心和CPU核心


      儘管可以使用多核和眾核來區分CPU和GPU的架構,但這兩種核心是完全不同的。
      CPU核心比較重,用來處理非常複雜的控制邏輯,以優化序列程式執行。
      GPU核心較輕,用於優化具有簡單控制邏輯的資料並行任務,注重並行程式的吞吐量。

相關文章