系统与数据库2020parallel.princeton.edu
ComputeDRAM:使用现成 DRAM 的内存计算
ComputeDRAM: In-Memory Compute Using Off-the-Shelf DRAMs (2019)
专业 · 约 75 分钟读完前置知识:DRAM 结构与行列激活机制、计算机体系结构、数字电路/时序基础
导读
这篇论文(MICRO 2019)研究如何在不改动硬件的商用 DRAM 芯片上实现"存内计算":通过快速连续激活多行(即利用 DRAM 行激活的干扰效应),在电路层面让存储单元之间发生电荷耦合,从而在内存内部直接完成批量按位逻辑运算。核心主张是无需定制芯片,用现成 DRAM 就能把一部分计算搬到内存里做。
HN 关注点:焦点在于:这实际是把长期被当作可靠性 bug 的 DRAM 干扰效应(类似 Row Hammer)反过来当作计算原语,读者惊叹这一现象存在几十年才有人想到它有用。
后来怎么样
推动了利用商用 DRAM 行激活干扰实现存内计算的研究方向,后续出现 SIMDRAM 等按位 DRAM 计算框架;但该技术尚未成为商用标准。
HN 评论精选
这几条评论里:支持 1 补充 3
支持把 DRAM 干扰效应从可靠性 bug 翻转为计算特性,是这篇论文最令人惊叹之处。
论文里写道:"我们的新操作在电路层面工作,通过快速连续激活多行,迫使商用 DRAM 芯片同时打开多个行。"这让我想起这个:https://www.linusakesson.net/scene/safevsp/ ——那里面的长解释和 HN 讨论(id=11845770)都值得一读,但关键部分是:简而言之,一个存储单元会被另一个存储单元的位值刷新。更让我惊叹的是,这种效应大概自 DRAM 诞生起就已被注意到并被当作 bug 处理(就像上面那样),却花了几十年才有人想到"这或许能派上用场!"
userbinator查看英文原文
From the paper: Our novel operations function at the circuit level by forcing the commodity DRAM chip to open multiple rows simultaneously by activating them in rapid succession. That reminds me of this: https://www.linusakesson.net/scene/safevsp/ It's worth reading the long explanation there, and the HN discussion at https://news.ycombinator.com/item?id=11845770 , but the critical part is this: In short, one memory cell gets refreshed with the bit value of a different memory cell. What I find more amazing is that this effect has probably been noticed for as long as DRAM existed and treated as a bug (like above), and it took several decades for someone to think "that could be useful!"
补充补充先例:Micron 的 Automata 处理器也把计算放进 DRAM。
Micron 曾在 DRAM 上实现过 Automata 处理器。链接:https://insidebigdata.com/2019/07/26/machine-learning-with-microns-automata-processor/ 和 https://semiwiki.com/forum/index.php?threads/survey-paper-on-microns-automata-processor.11424/
noipv4查看英文原文
Micron had implemented an Automata processor on DRAM. https://insidebigdata.com/2019/07/26/machine-learning-with-microns-automata-processor/ https://semiwiki.com/forum/index.php?threads/survey-paper-on-microns-automata-processor.11424/
补充指出存内计算的一个潜在应用是垃圾回收,并推荐相关 Berkeley 论文。
存内计算对垃圾回收会很有用。也可对比这篇文章:https://people.eecs.berkeley.edu/~krste/papers/maas-isca18-hwgc.pdf(注:作者之一是 Krste Asanovic,RISC-V 基金会董事会主席)。
pulse7查看英文原文
In-Memory compute would be useful for garbage collection. Compare also with this article: https://people.eecs.berkeley.edu/~krste/papers/maas-isca18-hwgc.pdf (note: one of the article authors is Krste Asanovic, who is on the RISC-V chairman of the board).
补充指向此前讨论中一条高质量的旧评论作为延伸阅读。
去年有一条虽只有一条但非常精彩的评论:https://news.ycombinator.com/item?id=21992296
dang查看英文原文
A single but excellent comment from last year: https://news.ycombinator.com/item?id=21992296
相关资源
从这篇论文所有 HN 讨论帖的全部评论里整理出来的链接。
历次讨论
- 2020Hacker News 讨论帖151 分 · 23 评
同领域还值得读
I/O 比 CPU 更快——让我们划分资源并消除操作系统抽象
I/O Is Faster Than CPU – Let’s Partition Resources and Eliminate OS Abstractions
指出在现代服务器硬件上 I/O 速度已接近甚至超过 CPU,传统操作系统抽象反而成为瓶颈。
系统与数据库2019 · 817 分 · 277 评进阶 · 约 30 分钟编辑精选使用 io_uring 的高效 I/O
Efficient IO with io_uring
由 Linux 内核开发者 Jens Axboe 撰写,介绍 Linux 新的异步 I/O 接口 io_uring。
系统与数据库2019 · 426 分 · 96 评进阶 · 约 45 分钟编辑精选线程对大多数用途而言是个坏主意(1995)
Threads Are a Bad Idea for Most Purposes (1995)
这篇 1995 年的文章由 John Ousterhout 撰写,讨论为什么线程对大多数用途而言是坏主意,并主张事件驱动编程通常更简单、更高效。
系统与数据库2017 · 423 分 · 382 评进阶 · 约 25 分钟编辑精选学习型索引结构之论证
The Case for Learned Index Structures
提出把索引看作一种"模型":既然 B-tree 等结构本质上是在学习数据的分布,就可以用机器学习模型(如回归模型、神经网络)来近似键到位置的映射,从而替代 B-tree、哈希索引…
系统与数据库2017 · 398 分 · 66 评 · 引用 25进阶 · 约 60 分钟编辑精选FoundationDB:一个分布式、解耦的事务型键值存储
FoundationDB: A distributed, unbundled, transactional key value store
介绍 FoundationDB:一个分布式、解耦设计的事务性键值存储。
系统与数据库2021 · 283 分 · 99 评进阶 · 约 90 分钟编辑精选