請問計算機架構的書,看那本好? - 顯卡

Table of Contents

※ 引述《gaiger (hallowed be my name)》之銘言:
: ※ [本文轉錄自 C_and_CPP 看板]
: 作者: gaiger (hallowed be my name) 看板: C_and_CPP
: 標題: [問題] 請問計算機架構的書,看那本好?
: 時間: Thu Dec 3 02:13:09 2009
: 最近在自學CUDA,發現真的要對計算機架構有一定認知
: 寫出來的CUDA code才會好。
: 去翻了幾本計組的書,好像對X86以外的架構著墨都不多。
: 就算只討論x86,也沒有詳細比較各代之間的差異。

不清楚買哪本好,因為作者會著重在CPU上面.
所以你會看到很多MIPS,DEC Alpha(即使沒了),
不太願意提起的x86,摸一些Power跟ARM的東西....

: nvidia算是SIMD的變型: SIMT吧。
: 但SIMT與SIMD有什麼差別,網上爬文也不知所云。

不要這樣看,因為SIMT這個命名本身就沒有意義.就好像MIMD跟MISD
一樣不明確.

但是真正在chip上實作的multithreading有兩種

從特性分別的命名,一種為course-grained multithreading.
切細 ? 實作上就如同DEC Alpha上的SMT,或者是比較有名的實作是Intel
的Hyper Threading



=====
===== Multi-Threading
===== Register File (A~D,假定只有四個)
Cycle =======>
1
執 A C B A A A
行 A C B A B C
單 A C A A B C
元 B A D A D A
1~4(假定)

Course-Grained MT就是指在可以Out-of-Order執行的前提下,將數個執行單元
每個cycle分配給不同的Thread,以避免ILP拉不起來導致執行單元閒置.
不過通常實作來說,不傾向作超過二個thread.

那麼還有一種,稱為Fine-Grained Multithreading



=====
===== Multi-Threading
===== Register File (A~Z,不過通常上百個)
Cycle =======>
1
執 A B C D A E
行 A B C D A E
單 A B C D A E
元 A B C D A E
1~4(假定)

同一個cycle中,執行單元全部會分配給同一個thread,而且排程方式有
循序,或者是偵測到需要等外部的要等待.或者是主動交出等實作.

這種處理方式是因為要Hidden Latency.假設Thread A存取了外部記憶體,
可能要等上上百個cycle,中間的情況下Thread A只能等待,因此排程也沒有用.
中間上百個cycle就會排程給其他thread使用,不過如果說每個thread執行時
都常常要這樣等上幾百個cycle,那麼thread數量最好就多提供一些,可以達到
至少上百個,才可以保持原有的Throughput

那這種架構通常用在哪裡 ?最接近現有的GPU實作,是Intel IXP Network Processor.
(不過這架構已經賣給別人了.....),GPU和IXP都有相同的特性.除了需要可程式化外.
(GPU處理Programmagle Shader,IXP則是實作各種網路Router,色情守門員??等...)
原有的資料都是大量的streaming data,需要利用大量頻寬,卻很難使用cache重新
使用的資料.

CUDA的multi-thread屬於後者,而且很明顯的,每個block中的thread
是循序排程的.假設是1~256個thread,就是1->2->3....255->256->1
這樣照順序排程.

至於Fine Grained在其他處理器上的例子.

DX10 GPU -- 512
INTEL IXP -- 200上下吧?
Nec Niagra -- 8
Intel IA64-- 2 ...比較不能拿來參考.

: 我的認知只到這裡了。
: 那請問版上對於計算機架構熟悉的大牛,是怎學習此領域的呢?
: 謝謝。

--

All Comments

Lydia avatarLydia2009-12-07
推:)
Andrew avatarAndrew2009-12-11
Niagra 是 SUN 的吧?一代單核4 threads,二代 8 thrds
Candice avatarCandice2009-12-16
IA64是 不錯的東西,可惜生錯時代…
Dinah avatarDinah2009-12-19
Niagra是想通吃Network Processor跟CPU,所以是8 thread
IA64那個multithread就無視....純作健康的嗎??
Heather avatarHeather2009-12-19
jk大真的很熱心XD
Jacky avatarJacky2009-12-24
jk大堅強!
Blanche avatarBlanche2009-12-26
Niagara一代八個core share一個fp,二代每個core一個fp
Ida avatarIda2009-12-28
裡面的fp其實是用來支援sparc vis 2.0 instr set ...
覺得把他視為跟 intel mmx/sse 之流會比當他想搶GPU看適合
David avatarDavid2010-01-02
GPU有太多需要fp的地方,niagara這樣的配置會炸…
Sandy avatarSandy2010-01-04
NetWork Processor跟低階網路server的CPU,我打錯 :P