跳转至

Processing In/near Memory

缘由

  1. 指令为中心,数据移动带来的功耗墙,性能墙
  2. 内存计算的经典模式
  3. 3D的内存技术
    1. Through silicon vias
  4. ReRAM 新型结构

PIM分类

  1. 按照PIM core和memory的距离分类

  2. 新的内存工艺使得内存的最小电路单元具有计算能力(忆阻器)

  3. 基于现有的商业DRAM和处理器的设计(加速的上限低一些,但是落地推广应用的阻力也越小, 应用范围更广,编程困难低)
  4. 基于3D堆叠memory(HMC)的设计(Starting from HMC 2.0, it supports the execution of 18 atomic operations in its logic layer.)
  5. 在每个最小存储单元融入计算能力(可以结合忆阻器)
  6. 完整的处理器核,有cache hierarchy
  7. 简单一点的应用相关的硬件计算单元
  8. 或者更简单的Functional Units (FUs)

关键技术

  1. 传统器件
  2. 地址翻译
    1. 三种不同解决思路
      1. 全部由CPU负责指令的发射和翻译
      2. 使能PIM侧页表管理,翻译机制
      3. 物理地址空间隔离(交互时需要拷贝),PIM独立管理地址空间
  3. 数据映射
    1. 物理内存地址排列的冲突(比如 GPUbank)
      1. CPU高带宽访存(会把数据分散来实现高带宽) vs PIM空间局部性(连续数据会跨多个颗粒)
    2. 纯软件方案或者软硬件结合大方案
  4. 安全性
    1. 物理内存被暴露在PIM core下,需要新的机制来确保内存安全。
  5. 数据一致性
    1. 现有一致性协议拓展差
    2. 核数量超级多,成千上万
    3. 解决方法
      1. 内存空间隔离,避免共享
      2. 弱化一致性问题,只处理特殊条件下一致性(eg.任务迁移)
      3. 批量处理一致性请求
  6. 新型器件
  7. 计算误差
  8. 外围电路大
  9. 异构编程模型
  10. 应用场景和编程模型
  11. 高能效比
  12. 高并行和NUMA访问
  13. 识别PIM函数的条件(什么函数适合用PIM做)
    1. 在所有函数中能耗最高
    2. 数据移动占据应用大比例,或者说是唯一的
    3. 访存密集型(通过LLC miss rate来判断)

根据PIM距离Memory的距离分成三类 1. NDP GPU 2. ? 3. ?

论文1

https://arxiv.org/pdf/2110.01709.pdf

论文2

hardware architecture and software stack for pim based on commercial dram technology

论文3

pim-enabled instructions a low-overhead locality-aware processing-in-memory architecture

论文4

展望

问题

  1. 由于核很小,不支持OS
  2. 但是可以支持message pass(reduce等)
  3. HPC应用经过数学变化后有些变成稀疏计算的,这时候变成memory-bound。所以PIM减少了数据移动,这时提升比较大。
  4. PIM的优势在于能效比,功耗的降低。而不是绝对性能。
  5. 单chip多核怎么通过PIM的思想,软件调度来实现?(不就是减少数据移动,和更近)

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献