作者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
1F:推 VictorTom:推:) 12/03 16:05
2F:推 HsiaoCC:Niagra 是 SUN 的吧?一代单核4 threads,二代 8 thrds 12/03 16:27
3F:推 HsiaoCC:IA64是 不错的东西,可惜生错时代… 12/03 16:29
4F:→ jk21234:Niagra是想通吃Network Processor跟CPU,所以是8 thread 12/03 17:42
5F:→ jk21234:IA64那个multithread就无视....纯作健康的吗?? 12/03 17:42
6F:推 mnmnqq:jk大真的很热心XD 12/03 19:22
7F:→ Nafusica:jk大坚强! 12/03 20:07
8F:推 HsiaoCC:Niagara一代八个core share一个fp,二代每个core一个fp 12/04 00:42
9F:→ HsiaoCC:里面的fp其实是用来支援sparc vis 2.0 instr set ... 12/04 00:43
10F:→ HsiaoCC:觉得把他视为跟 intel mmx/sse 之流会比当他想抢GPU看适合 12/04 00:43
11F:→ HsiaoCC:GPU有太多需要fp的地方,niagara这样的配置会炸… 12/04 00:44
12F:→ jk21234:NetWork Processor跟低阶网路server的CPU,我打错 :P 12/04 12:19
※ 编辑: jk21234 来自: 114.37.137.11 (12/04 12:19)