精華區beta VideoCard 關於我們 聯絡資訊
※ 引述《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