CUDA Handbook 补充 CPU和GPU硬件架构2

Latency Hiding = Latency tolerance

        延迟隐匿又叫延迟容忍。通过在同一时间执行更多的warp来获得更高的吞吐量,叫做延迟容忍。所谓warp就是一个线程区里面一起执行的线程,一般是32个线程一起执行。它的意义是为了“隐藏”延迟性,也就是说最大化利用GPU的计算功能,计算相对多了,数据传输则相对就小了(比如同样执行100个操作,其中90个是计算,10个是传输,计算密度就比30个计算,70个传输大)。当然,有时候延迟也是隐匿不了的,(内容来自一本叫做 understanding latency hiding in GPUs的英文书,估计是没有中文翻译的一本比较不太流行的书??)因为功能运算单元利用率太低。阻塞一般分为两类:延迟阻塞和带宽阻塞。延迟阻塞可以通过降低处理器延迟来解决,即加速处理器存取指令等。带宽延迟则是与内存访问速度等有关。因为目前我做图形学方面还仅限于软件,所以硬件内部机制也不太懂,也不敢胡说,所以先了解这些应该就足够了。

        多CPU系统需要利用多线程程序,这样才能发挥多CPU的功能。SMP系统(对称多处理器),所有CPU都是一样的,它们对内存的访问接口都是一样的,都是通过北桥芯片(上一节讲的)连接到CPU内存,也叫统一内存访问。

        上一博客说的北桥可以集成到CPU里也不矛盾,这样的话,CPU就包含了内存控制器,以及连接外部IO设备(如鼠标接口)的功能,同时外部设备接口还连接了GPU设备。也就是说GPU通过连接到IO控制器,再连接到CPU。

        而多CPU系统就有点意思了(CUDA handbook说这个结构有点意思),首先每个CPU都有属于自己的内存空间,而且在AMD处理器和英特尔处理器还各自用了HT总线和QPI总线:

                            借用CUDA handbook的一张图

      其实这种结构中,CPU也可以访问到任意地方的内存,比如左边的CPU想用右边CPU的内存,则需要通过HT/QPI总线来获取,也就是说这个总线通过缓存来复制右边的内存内容,再传给左边的CPU,这样速度肯定比左边的CPU用左边CPU的内存慢很多呀!好在CPU芯片上的缓存非常大,可以减轻这种内存的传输(毕竟假设只有一个缓存空间,很可能在传输的时候不够用,导致阻塞耽误了时间)。而且windows,Linux等都提供了API,可以使程序很好的分配内存到执行它的CPU中,比如左边的CPU要操作一个数组,那么这个数组就分配在左边的CPU,这样内存访问就都是访问本地的内存了。

       

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dezeming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值