• 沒有找到結果。

第二章 相關文獻探討

2.3 實驗硬體架構

由於硬體架構會和 OpenCL 的實作平行運算會有相關,所以在此處會談到一 些實驗硬體架構的內容,在本論文中實驗的硬體有 Intel Processor Graphics Gen8[3]

的 HD Graphics 6100 與 Geforce 900 series[4]的 GTX 960,以下依序介紹:

1.英特爾第八代圖形整合顯示核心處理器(Intel Processor Graphics Gen8)

在該代是採用 Broadwell 架構的微處理器,是一種多晶片模組的設計,該設 計可以在一個封裝內容納兩個或兩個以上的裸晶,所以運算效能較上一代能夠有 所提升。

圖 2.3.1 Intel® Iris™ Graphics 快取階層 圖片引用(3)

硬體架構會和 OpenCL 記憶體的實作息息相關,上圖為第七代整合顯示圖形 卡高階型號的快取階層圖,到了第八代仍然採用此架構,雖然圖上快取資料流動 方向標為單方向的箭頭,但事實上,平行運算時,資料會在這些快取(Cache)階層 中雙方向流動,讓每個 EU 的運算單元都可以拿到要使用的資料。

圖上除了常見的 L1、L2、L3 快取與 LLC、DRAM 記憶體外,在虛線中為的

EDRAM 為某些高階型號的整合顯示核心才會有此記憶體,該記憶體是一種內嵌 式的動態記憶體,可以有效降低延時以增進繪圖效能。

介紹完快取階層,了解資料的流動方向後,過來會說明整個圖形整合顯示核 心處理器的組成元件,由小到大分別是: Execution Unit(EU)、Subslice、Slice,然 後再組成 Intel Processor Graphics Gen8,以及和外部記憶體連結後的資料傳遞架 構。

(1)Execution Unit(EU)

圖 2.3.2 Execution Unit 細節 圖片引用(4)

在 Gen8 架構中最基本的執行運算單元,其中 OpenCL 的內核(kernel)函式會 在 EU 上執行,每個 EU 都是有複數 thread 的 SIMD(Single Instruction Multiple Data) 處理器,最多會有 7 個 thread 在 EU 中,且每個 thread 有自己的暫存器可以儲存 資料。

(2)Subslice

圖 2.3.3 Subslice 細節 圖片引用(4)

每個 Subslice 中會有 8 個 EU 執行運算,並加入了 Instruction cache、Local

Thread Dispatcher、Data Port 的元件來運行 Subslice,更重要的是,L1、L2 的快取 階層也加入在其中幫助資料傳輸,由上圖可推估出,每個 Subslice 會有 56 個 thread 同步執行運算。

(3) slice

圖 2.3.4 Gen8 Slice 細節 圖片引用(4)

在每個 slice 中有三個 Subslice,並可看出有 24 個核心(EU)在執行運算,同 時再加入 Fixed function units、Atomics、Barriers,來協助同步執行 EU 進行平行 計算的元件,並引入 L3 階層的快取與 Shared Local Memory 來傳遞資料。

圖 2.3.5 Gen7.5 Slice 細節 圖片引用(3)

(4)Intel Processor Graphics Gen8

圖 2.3.6 第八代圖形整合顯示核心處理器細節 圖片引用(4)

在整個顯示核心處理器中會有兩個 Slice,並可看出整個處理器有 48 個運算 核心(EU),同時加入 Command Streamer、Global Thread Dispatcher、Rendering fixed

function units 來維持處理器的運行,同時藉由 GTI(Graphics Technology Interface) 介面,來與更外層的記憶體和 CPU core 等…,可以互相傳遞資料。

圖 2.3.7 使用 SoC Ring Interconnect 的架構來串連資料傳輸 圖片引用(4)

(5) Intel Level Memory Hierarchy

圖 2.3.8 Intel 記憶體階層 圖片引用(4)

上圖為 Intel 官方釋出的記憶體階層圖,可以看出位階越高層的記憶體讀取速 度會越快,但容量也會越小,反之低階記憶體則是容量相當大,但讀取速度較慢,

因此在撰寫 OpecCL 的內核函式時,要特別注意記憶體的使用,否則平行化的演 算法寫得再好,反而會因為記憶體的問題而拖慢程式的執行。

另外在圖上的 Shared Local Mem 為往後實驗會常用到的記憶體,圖上標明的 容量大小為每個 Subslice 有 64KB,所以整個圖形整合顯示核心處理器會有 384KB 的 Shared Local Mem 可以供內核函式來使用。

2. NVIDIA GeForce GTX 900 Series GPUs

圖 2.3.9 採用 Maxwell 架構的 GTX980 與 GTX780 Ti 外觀圖片引用(5) 在 NVIDIA 推出的 900 系列外接顯示卡產品,是第二代採用『Maxwell』架 構所製成,第一代的『Maxwell』架構產品為 GeForce GTX 750/750 Ti,和第一代 想比,第二代多了幾項新技術: 動態超分辨力(Dynamic Super Resolution)、第三代 三角洲顏色壓縮(Third Generation Delta Color Compression)和多圖元程式設計採樣

(Multi-Projection Acceleration)、Nvidia VXGI(Real-Time-Voxel-Global Illumination) 和 MFAA(Multi Sampling Anti-Aliasing),同時並加入了支援 HDMI 2.0 的功能。

整 個 硬 體 架 構 由 小 到 大 為 :CUDA Core 、 SMM(Maxwell Streaming

Multiprocessor)、GPCs(Graphics Processing Clusters),然後再加上 memory controllers 與 PCIE 介面組成整個架構。

(1) CUDA Core 與 SMM

圖 2.3.10 SMM 結構 圖片引用(6)

NVIDIA 與 Intel 在硬體上的設計有相似的地方,在計算核心(CUDA Core)方 面,多個核心會形成一個群組,並在這群組加入 Register 與 Buffer 來存取計算指 令與資料,然後這些計算群組在組成更大架構 SMM,並加入 Shared Memory 與

L1 Cache 的元件,如同 Intel 快取階層般的設計,記憶體的存取會隨著階層大小 的改變,在存取大小與存取速度會有階層式的改變。

另外在 multiprocessor 中,執行平行運算的 warps,是將 32 個 threads 組成一 個群組來給執行單元使用,是否意味著最多只能同時計算 32 個內核程式?還有待 藉由後面章節的實驗來證實。

(2)GPC 與 Full-chip block

圖 2.3.11 GTX960 Full-chip block 結構 圖片引用(7)

多個 SMM 會組成一個 GPC,再加入第二層的快取:L2 Cache,讓每個 GPC 可 以共享此 Cache 的資料,並加上 memory controllers 與 PCIE 構成 Full-chip。

相關文件