淺談GPU到底是什麼(上):不同的運算型態

2018.02.27 08:11PM
00_98

如果有人劈頭質問各位科科們:『GPU』是什麼?科科們可以馬上回答出來嗎?如果不行,那你就有硬著頭皮繼續看下去看到科科笑的必要。

指令流與數據流

很不幸的,即使是科班背景出身的技術人員,或著長期媒體打滾的科技編輯,碰到此類大哉問,也少有問答如流、簡潔明瞭的答案,因為就學理上,GPU真的是一個定位很詭異的奇行種,自從2006年11月9日NVIDIA發表以SIMT (單指令多執行緒) 之名、引領GPU邁入通用運算領域的G80 (Tesla 1.0微架構),就更加的難以解釋了。

傳統計算機系統結構的分類方法,多半依循M.J.Flynn在1966年的「指令流 x 數據流」配對法,稍有技術知識的科科絕對不會忘記「單指令單資料流 (SISD)」、「單指令多資料流 (SIMD)」、「多指令多資料流 (MIMD)」,與因Google TPU的Systolic Array而實用化的「多指令單資料流 (MISD)」。

是淺談GPU到底是什麼(上):不同的運算型態這篇文章的第1圖

3種SIMD差異性

先將最簡單的SISD和最詭異的MISD束之高閣,目前就「正統」教科書的觀點,GPU、古老的向量電腦、遍佈於各類泛用處理器的SIMD延伸指令集,共同列為「因單一指令就可啟動大量運算,享有較優的能量效率,並讓程式設計者可延續過去的循序性思考進行軟體開發」的SIMD陣營,MIMD則以傳統多處理器環境為典型,透過更加複雜的軟體開發方式,換取最高的運算效能使用彈性。

跳出傳統的定義,先進GPU的SIMT,則是企圖在SIMD和MIMD之間尋求「兼顧易於開發軟體與提高運算效能利用率」的平衡點,這在後面會深入介紹,各位科科請稍安勿躁。

我們先聚焦於三種SIMD的差異性,畢竟這三者很容易被笨蛋摻在一起做成撒尿牛丸,例如「追加SIMD指令集就等同將昔日的超級電腦塞入你在光華商場掏錢購入的CPU」、「GPU就是昔日超級電腦的單晶片版」之類的「真知灼見」,失之毫釐,差以千里,真正的超級電腦會哭泣。

是淺談GPU到底是什麼(上):不同的運算型態這篇文章的第2圖

其實諸多看似歷史陳跡的向量超級電腦,至今仍是相當值得細細品味的藝術品,拜託,可閃避傳統處理器惹人厭的條件判斷、少少指令就可搞定一堆運算、運算方向固定利於打造超深管線和記憶體子系統、隨意控制向量運算長度賦予無須更動指令集即可持續提昇計算能力等等,光這幾點就酷到讓人不得不多看幾眼。

向量電腦實在是二十世紀計算機工業最高貴成就中的一種,彷彿像一種溫室植物,只能在特殊的環境中才能成長。換言之,那是從精鍊化和簡潔化的思想中所產生的觀念。由於電腦的普及化、泛用化與低價化,今天除了少數超級電腦以外,今天不再存有此種可能性了,隨著時代的演進,我們曾喪失了許多好東西,這也許是其中一件。

那我們把狙擊槍的準心轉向GPU,GPU的SIMT,難道只是「SIMD + 多執行緒」這麼簡單嗎?假如此事成真,那支援硬體多執行緒的泛用CPU也可以叫做SIMT了嗎?少笨了,各位科科,我們下期再會。

是淺談GPU到底是什麼(上):不同的運算型態這篇文章的第3圖

5 則回應