作者jk21234 ( 1569 11 /47)
看板VideoCard
標題Re: [問題] 請問計算機架構的書,看那本好?
時間Thu Dec 3 15:03:22 2009
※ 引述《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 ...比較不能拿來參考.
: 我的認知只到這裡了。
: 那請問版上對於計算機架構熟悉的大牛,是怎學習此領域的呢?
: 謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.62
推 VictorTom:推:) 12/03 16:05
推 HsiaoCC:Niagra 是 SUN 的吧?一代單核4 threads,二代 8 thrds 12/03 16:27
推 HsiaoCC:IA64是 不錯的東西,可惜生錯時代… 12/03 16:29
→ jk21234:Niagra是想通吃Network Processor跟GPU,所以是8 thread 12/03 17:42
→ jk21234:IA64那個multithread就無視....純作健康的嗎?? 12/03 17:42