GPU中的DRAM硬件技术

 

GPU中的DRAM硬件技术

本部分主要讲述global memory的硬件实现DRAM

Bit Line & Select Line

原理

  • 一个电容决定一个bit, 通过select线选择读取哪个bit line,然后通过bit line选择对应的bit。
  • 需要不停检查和电容充放电,因此叫做DRAM

特点

  • bit line的容量大,存在电容耦合与信号衰减,同时更容易遇到数据冲突,同时bit line的带宽有限。
  • 每个bit电容,需要信号放大器放大,进一步限制传统DRAM设计

Core Array & Burst的DRAM数据传输

改进

  • 在bit line -> bus的传输中,添加column buffer将bit line数据进行备份,提高bit line其他数据传输到bus的效率(数据局部性)

传输过程

  • 数据传输分为两个部分
    • core array -> column latches / buffer
    • column latches / buffer-> mux pin interface

传输耗时

  • core array -> column latches / buffer 耗时久
  • buffer -> mux pin interface 的耗时相对较小(原先耗时长)

burst与burst size/ line size

  • burst:当访问一个内存位置的时候,select line选择的bit line的数据会全部从core array传输到column latches/ buffer中。使用数据根据mux来确定传输给bus哪些数据,这样可以加速
  • burst size/ line size:读取一次memory address,会有多少个数据从core array被放到buffer中

DRAM 设计思想(局部性原理)

  • 在DRAM硬件实现中,为了提高DRAM的速度,充分利用局部性思想,通过添加buffer缓存,将core array -> column latches / buffer的时间转换为buffer -> mux pin interface时间,极大地提高速度
    • 该方法从数据存储->数据读取中利用局部性思想

Multiple Banks技术

引入原因

  • 从core array到buffer的时间长,单个传输导致实际使用的bus interface数据bandwidth未被完全利用($T_c:T_b = 20:1$)。如果只使用一个bank导致带宽大部分时间为空闲。
  • 所以需要在一个bus 上使用多个banks,来充分利用bus bandwidth。如果使用多个bank,大家交替使用interface bus,保证bus不会空闲,保证每个时间都有数据从bus传送过来。

一个bus需要多少个bank?

  • 如果访问core array与使用bus传输数据的时间比例是20:1,那么一个bus至少需要21个bank才能充分使用bus bandwidth。
  • 一般bus有更多的bank,不仅仅是ratio+1
    • 并发访问:如果同时对多个bank进行操作,这些操作可以并发进行,因为它们访问的是不同的物理存储体。假设一个DRAM模块有两个bank,并且内存控制器同时接收到两个读请求。如果这两个请求都针对同一个bank,那么它们将顺序执行,导致等待时间和带宽的减少。但是,如果这两个请求分别针对两个bank,那么它们可以并发执行,从而提高带宽。
    • 避免bank冲突:当多个请求尝试同时访问同一个bank时,会发生冲突。为尽可能减少冲突可能性,使用更多的banks。

banks与burst的速度对比

  • burst的速度快于banks的速度

Multiple Channels技术

  • 一般的GPU processor要求带宽达到128GB/s,HBM2要求带宽为898GB/s,在使用multiple banks后仍未满足要求(使用DDR DRAM clock为1GHz,每秒能传送8 bytes/ 1 words,得到的传输速率为16GB/s)因此需要多个channels

数据Interleaved(交织)分布技术

数据交织原因

  • 充分利用channel的带宽,实现max bandwidth。
  • 允许在core array -> buffer 的时间进行转化成多个channels获取数据(并行),减少总的时间。

如何实现数据交织

将数据平均分布在channels对应的banks中(上图中)