ETHZ-计算机体系结构研讨会-2025-笔记-全-

ETHZ 计算机体系结构研讨会 2025 笔记(全)

001:课程介绍与安排 🖥️

在本节课中,我们将学习苏黎世联邦理工学院计算机体系结构研讨会的课程介绍、讲师背景、课程目标与基本安排。

概述

欢迎参加计算机体系结构研讨会。本课程旨在通过阅读、分析和讨论前沿研究论文,培养学生批判性思维与深入理解计算机体系结构领域的能力。课程面向不同背景的学生,包括本科生、硕士生和博士生。

讲师介绍

我是Onur Mutlu教授。在加入苏黎世联邦理工学院之前,我曾是卡内基梅隆大学的教授,更早之前在微软研究院创立了计算机体系结构研究组。我的职业生涯还包括在谷歌、VMware、微软、英特尔和AMD的工作经历,并在斯坦福大学度过了一段学术休假。我的研究兴趣涵盖计算机体系结构、计算机系统、硬件安全和生物信息学。

我们还有两位联合讲师:

  • Muhammad:组内高级研究与讲师,毕业于伊朗谢里夫理工大学。
  • Constantina:组内高级研究与讲师,毕业于希腊雅典国家技术大学,博士研究方向为生物信息学工作负载加速。

我的研究小组将在课程中担任各位的导师,协助大家准备论文报告。

课程背景与理念

我设计这门课程,源于我个人初次阅读研究论文时的困难经历。掌握批判性分析与阅读论文的技能是一次宝贵的学习体验。

传统上,计算机体系结构被视为硬件与软件之间的接口,以及实现该接口的微体系结构。然而,本课程将采取更广阔的视角。我们将涵盖从算法到硬件设备的整个堆栈。这是因为,为了优化性能、能效和可靠性,必须进行跨层次的协同设计。当前工业界与学术界也正朝此方向发展。

我认为研究与教学是同一枚硬币的两面:

  • 研究是探索未知。
  • 教学是传播已知。
    两者构成一个良性循环:新研究推动教学内容的更新,扎实的教学又为新的研究奠定基础。

研究领域简介

我们的研究旨在为未来设计更优秀的计算机。计算是所有领域的核心,其重要性将与日俱增。以下是一些我们将可能涉及的研究方向:

  • 内存内计算:新的计算范式。
  • 专用加速器:用于提升机器学习等应用的性能。
  • 内存与存储系统
  • 系统健壮性能效:尤其是针对当前消耗大量资源的大型AI模型。
  • 延迟可预测性智能体系结构设计。

课程安排与期望

本研讨会是一门以研究为导向的课程。学生将需要:

  1. 阅读指定的前沿研究论文。
  2. 在导师指导下准备并进行论文报告。
  3. 参与课堂讨论,进行批判性分析。

课程论文将根据学生的兴趣偏好进行分配,内容将涵盖上述多个研究领域。

总结

本节课我们一起了解了计算机体系结构研讨会的基本情况、讲师团队、课程背后的设计理念以及广泛的研究背景。本课程的核心是通过研读论文来深入探索计算机体系结构的未来方向,并特别强调从算法到设备的全栈协同设计视角。接下来,我们将正式进入具体论文的阅读与讨论环节。

002:内存鲁棒性

大家好,欢迎来到计算机体系结构研讨会的第二讲。本节课更像是一次传统讲座,而非论文展示,目的是为大家奠定与内存鲁棒性相关主题的基础知识。

课程内容较多,我会讲得比较快。但欢迎大家随时提问,我们会留出时间进行讨论。相比覆盖所有幻灯片内容,我更倾向于多进行讨论。

我叫 Gira Acha,是 Safari 和 NHR 的博士后研究员。我在内存鲁棒性领域已研究相当长一段时间,我的研究兴趣包括计算机体系结构、硬件安全、内存存储系统以及广义的鲁棒性。

🏗️ 鲁棒性为何重要

让我们从观察这张图片开始。你认为这座桥有多可靠、安全、稳固?

它看起来很不错。但由于建造过程中的一些工程和施工失误,它在当时悲惨地失败了。你可能会觉得桥上的人安然无恙,他们正在一起享用午餐。但我们无法预知下一刻会发生什么。因此,安全性或广义的鲁棒性,就是关于预防不可预见的后果。

再比如这辆遥控汽车,它最大限度地利用了车内存储空间,驾驶员坐在车顶。看起来它运行良好,但可能并非总是如此。我们不希望存在这类风险,我们希望系统是鲁棒的。

⚡ 什么是Rowhammer

今天我们将主要讨论Rowhammer。Rowhammer是一种现象,指在内存芯片中,通过某些软件可预测地诱发比特翻转。这是一种由软件触发的简单硬件故障机制,广泛存在于许多系统中。大家可能已经在各种科普文章中见过Rowhammer的相关报道。稍后我也会展示,关于此主题的研究论文非常多,是当下的热门话题。

📉 内存技术缩放带来的挑战

但让我们先退一步,谈谈为什么内存鲁棒性如此重要。这是一篇2013年的论文,它预见了由于内存缩放即将到来的挑战。

我们来谈谈主流的内存技术——动态随机存取存储器。如今的DRAM将电荷存储在电容器中。通过存取晶体管和位线感知电压,从而判断存储的是1还是0。

随着DRAM制造工艺的微缩,芯片密度增加,单个芯片可以容纳更多千兆字节。但结果是,存储单元的电容器变得更小,彼此靠得更近。因此,访问一个电容器可能会干扰其他电容器。

这里有一些图片展示了DRAM芯片中这些单元的布局,我就不一一细看了。这是一张来自某DDR5芯片的较新图片,你可以看到这些单元排列得非常紧密。

另一篇2015年的早期研究论文,调查了全球所有Facebook服务器的数据故障。研究表明,随着DRAM芯片密度增加,服务器故障率也随之上升。X轴是DRAM芯片密度(Gb),Y轴是故障率,存在明显的增长趋势。这篇论文的完整引用在此。这向我们表明,如今的内存缩放确实充满挑战:它在增加容量的同时降低了鲁棒性,我们需要对此保持警惕。

🔬 理解问题的测试基础设施

我们需要理解各种类型的故障,这就需要建立理解此类问题的基础设施。这个领域的特点是,如果你的工作做得非常出色,那么没有人会注意到问题。而要做到出色,你实际上需要在问题广泛影响系统之前,就发现芯片中的鲁棒性问题。为此,你需要一些基础设施来测试它们。随着时间的推移,我们为不同目的构建了几种不同的基础设施。

我将重点介绍其中一篇使用这些基础设施的论文。这是我们当时使用的基础设施:一个基于FPGA的测试平台,用于测试DRAM芯片。它包括一个温控PC、许多FPGA(每个FPGA连接着一些DRAM芯片),我们在这些FPGA上运行测试,分析数据,观察在各种条件下是否发生比特翻转。

后来我们将此基础设施开源了。如果你有自己的FPGA开发板,也可以在家尝试。但我们实际上拥有超过15套这样的基础设施实例,并且还在持续构建中。如果你有兴趣尝试,可以联系我们,我们可以一起安排,让你使用我们的基础设施。

这是一个灵活、易用且开源的基础设施。这是其完整引用,以及其更新版本的引用。我们还有许多这样的设施,可以非常精细地测试DDR DRAM模块。它支持很多不同的基础设施(图中是5种,现在可能更多了)。你可以直接从GitHub下载到你的FPGA上运行。

💾 数据保持时间与DRAM

接下来我们谈谈数据保持时间。如前所述,DRAM单元以电容器中电荷的形式存储数据位。这意味着这是一种存在泄漏的架构,存在许多泄漏路径,电荷会随时间流失,因此它是一种易失性存储技术。所以我们需要关注数据保持时间。

当我们测试真实的DRAM芯片时(这是2012年DDR3 DRAM芯片的数据),有一小部分DRAM单元的数据保持时间在64毫秒到128毫秒之间。另一小部分能保持到256毫秒。而绝大多数单元可以保持数据超过256毫秒。如果你不亲自测试芯片,是看不到这种分布情况的。如果你查看规格书,它们会告诉你需要每64毫秒刷新所有单元(即读取数据并写回一次)。实际上,你是按照最坏情况来设计所有操作的。

这里有一篇论文,他们正是利用了DRAM单元行为的这种异质性来提升性能。值得注意的是,去年在ISCA会议上,他们评选了过去25年最具影响力的论文,并邀请了一些回顾性文章,这篇就是其中之一。

另一篇入选的论文是这篇,同样发表在ISCA上,它对数据保持行为进行了实验性研究。

📝 总结

在本节课中,我们一起学习了内存鲁棒性的重要性,了解了Rowhammer现象及其影响,探讨了DRAM技术缩放带来的挑战,并介绍了一种用于测试和发现内存问题的开源FPGA基础设施。我们还简要讨论了DRAM的数据保持时间特性及其异质性。理解这些基础概念,是深入研究内存可靠性与安全性问题的第一步。

003:内存中心计算 🧠

在本节课中,我们将探讨一个核心的计算机体系结构趋势:从以处理器为中心的系统转向以内存为中心的计算。我们将了解当前系统面临的数据瓶颈问题,分析其背后的原因,并介绍通过将计算移至数据附近来解决问题的基本思路。

上一节我们介绍了课程背景和主讲人。本节中,我们来看看当前计算系统面临的核心挑战。

数据密集型应用带来的挑战

现代计算机系统经常受限于数据移动。这主要由数据密集型应用驱动。

以下是几个关键的应用领域示例:

  • 生成式人工智能:训练和推理大型语言模型(如GPT系列)需要处理海量参数和数据。
  • 基因组学:存储和分析大量基因组数据以提取有用信息(如预测疾病风险)。

这个问题正在加剧。以生成式AI为例,自2017年GPT发布以来,模型参数和数据量在短短几年内显著增长,且未来预计会更多。模型能处理的数据越多,其提取信息的能力就越强。

冯·诺依曼瓶颈与系统设计问题

数据密集型问题严重影响现有系统的性能和能效。其根源在于我们迄今为止的系统设计方式。

我们遵循冯·诺依曼模型,该模型将系统分解为三个部分:

  1. 计算
  2. 通信
  3. 存储/内存

然而,工业界长期将这三个组件隔离设计:处理器公司、内存公司和互连公司各自为政。这种专业化导致在专用资源之间移动数据变得越来越复杂和低效。

当前系统以处理器为中心进行设计。处理器是系统的核心,周围所有组件(如内存、互连)都是为了给处理器移动或存储数据而存在。尽管处理器芯片上大部分面积并非用于计算本身,但系统性能仍受限于数据移动。

性能与能效影响

这种设计对性能有重大影响。例如,一项针对谷歌云应用的研究显示,在许多关键负载中,大部分CPU周期都花在了数据移动上,而非实际计算。

从能效角度看,问题更为严重。因为数据移动的延迟或许可以设法隐藏,但其能耗无法避免。

以下是数据移动与计算能耗的对比:

  • 进行一次双精度浮点乘法运算的能耗,远低于从主内存读取一次数据。
  • 数据在内存层次结构中移动得越远(例如,从硬盘到内存,再到缓存),消耗的能量就越多。

具体数值因处理器组织和工艺而异,但趋势是明确的:在以处理器为中心的方法中,数据移动的能耗比计算本身高出数个数量级

这个问题不仅存在于大型服务器,也存在于个人设备中。例如,对Chromebook笔记本电脑的研究发现,运行Chrome等关键负载时,大部分电池能耗在了处理器与主内存之间的数据移动上。

对于专用加速器,问题同样存在。一项与谷歌合作的研究分析了其TPU机器学习加速器,发现对于不同规模的模型,加速器的大部分能耗同样来自数据移动。

核心问题与解决思路

我们面临的根本问题是:计算发生的地点距离数据存储的地点太远

为了解决这个问题,我们需要转变思路:将计算移动到更靠近内存的地方。我们离数据越近,需要移动的数据量就越少。

本节课中我们一起学习了以内存为中心计算的基本动机。我们了解了数据密集型应用如何凸显传统以处理器为中心架构的瓶颈,特别是数据移动带来的巨大性能和能效开销。解决问题的核心思路是将计算移至数据存储之处,从而减少不必要的数据搬运。

004:机器学习驱动的内存系统设计

概述

在本节课中,我们将探讨如何利用机器学习技术来设计和优化内存与存储系统。我们将从传统架构的局限性出发,介绍数据驱动架构的核心思想,并展示机器学习如何帮助系统从数据中学习,从而做出更智能的决策。


课程内容

今天,我们将进行另一场讲座,涵盖我们正在进行的一些关于内存和存储系统设计的工作。

到目前为止,你们已经听了G关于内存鲁棒性的讲座,以及John关于基因组学的讲座。下周我们将讨论基因组学。

今天,Raho将讨论机器学习驱动的内存和存储系统设计,Raakesh也可能参与部分内容的讲解。你们将有机会听到另一位即将在几个月内获得博士学位的研究者的分享,可以提出许多问题。

下周,我们将讨论基因组学。

这是一个很好的机会,让大家了解最近完成博士学位或即将完成博士学位的研究人员,比如Geraldo和Ras。

好的,谢谢Alman的介绍。我想我的声音是清晰的,一切正常。

正如Alman所说,今天我们将讨论机器学习驱动的内存和存储系统设计。我将介绍我们在内存方面研究的一些关键概念,然后Rash将加入讨论机器学习在存储系统中的应用。之后,我们将看一些具体的例子。

这是我的简要背景介绍,我是Rahul,那边是Rash,他是我的同事。这是联系我们的最简单方式,如果你们对今天的讲座有任何问题,或者有一些想法想讨论,请随时给我们发邮件。

我们的主要研究兴趣在于微架构以及内存和存储系统设计。我们专注于高性能内存存储子系统设计,包括预取器、缓存管理、辅助管理等。我们正在探索所谓的“数据驱动架构”。在讲座的剩余部分,我们将更清楚地解释数据驱动架构的含义,以及机器学习辅助策略如何应用于处理器和存储设备内部,以改善访问延迟、公平性、服务质量等。

我们使用的关键术语是“数据驱动架构”。那么,这究竟是什么意思呢?

在这一点上,从前面的讲座中应该可以完全清楚地看到,当今的计算严重受限于数据。从大规模加速系统、你们已经交互过的大型语言模型,到今天的实时图处理、基因组序列映射(我们将在下一讲中看到),最重要的是,数据通常是当今计算系统中关键的性能和能耗瓶颈。

这不仅适用于我们在服务器规模上交互的大型系统,即使在你们的移动设备上也是如此。例如,在手机上运行的Chrome、TensorFlow,以及视频编码/解码编解码器。这些应用程序通常也严重受数据限制,是主要的性能和能耗瓶颈。

同样的趋势也在延续,我们在上一讲中也看到了这张图。即使是新兴的工作负载,比如基因组序列分析(我们将在下一讲中看到),情况本质上也是相同的:数据、数据、数据。

我们如何才能更高效、更高性能地访问或处理数据呢?

设计当今系统以及我们拥有的计算系统的公理本质上是这句话:一个智能的架构应该能很好地处理数据。

然而,我们今天看到的架构却恰恰相反。我们所说的“相反”是什么意思呢?这些架构在处理海量数据方面非常糟糕。因此,我们投入的大部分处理器或大部分硅片面积主要用于存储数据,或者将数据从一层层次结构移动到另一层层次结构,而不是对数据进行计算。这种趋势就是我们所说的,今天的架构更多是“处理器中心”的,而不是“数据中心”的。

我们在上一讲中已经触及了如何重新构想系统,使其以数据为中心,让计算更靠近数据所在的位置,而不是相反。

我们还看到,这些架构在考虑海量数据及其元数据并从中学习方面表现得很糟糕。因此,它们被设计为做出简单的决策,忽略了在运行过程中产生的大量数据。结果我们看到的是,这些架构大多是由人类设计驱动的。

例如,我们为笔记本电脑、移动处理器设计的某些策略,从一开始就是由人类设计师决定的。无论你们使用这些移动设备多久,使用笔记本电脑多久,它们仍然在做同样的决策,即使它们可能已经看到了四、五年关于你们如何使用设备的数据。这显然有些不合理。

这就是今天讲座的主要内容:我们如何设想处理器的某些部分,从人类设计驱动的决策制定,转变为数据驱动的决策制定。

同时,这些处理器在了解或理解数据的语义特征方面也很糟糕。结果就是,它们以相同的方式对待所有类型的数据。这就是我们所说的,它们做出的是“组件决策”,而不是“数据感知决策”。我们不会深入探讨这部分,但如果你们感兴趣,请告诉我们,我们可以单独讨论。

因此,对于我们来说,智能机器的推论或愿景是:以数据为中心、数据驱动以及数据感知。

“以数据为中心”的部分我们在上一讲已经看到。“数据驱动”的部分是今天讲座要涵盖的内容。

正如我已经提到的,“数据驱动”是什么意思?今天的处理器大多是人类驱动的,是人类在设计策略。因此,我们的策略也反映了我们自身的一系列局限性。这些策略大多是短视的,它们非常不擅长预测未来,例如采取长期行动以获得长远利益,而不是采取短视的行动。在这些策略中,自动化的数据驱动学习即使有,也非常有限。

正如我所说,在许多情况下,根本没有任何学习。这就提出了一个问题:我们能否设计出从根本上更智能的架构,让它能够从看到的数据中自我学习?这些数据可能来自你们正在运行的工作负载,也可能来自处理器本身不断生成的各类数据和元数据。理想情况下,我们需要从中学习,并随着时间的推移变得更好。这就是“数据驱动”的部分。我不会过多深入细节,只是提到我们致力于实现自动化。


总结

本节课我们一起探讨了机器学习在内存与存储系统设计中的应用。我们了解了传统处理器架构在处理海量数据时的局限性,并引入了“数据驱动架构”这一核心概念。通过让系统从运行时数据中学习并自我优化,我们可以构建出更智能、更高效的计算系统,从而更好地应对以数据为中心的现代计算挑战。

005:加速基因组分析

在本节课中,我们将学习基因组分析的基础知识,并探讨如何通过算法和硬件设计来加速这一关键过程。基因组分析对于疾病治疗、病原体检测和生命科学研究至关重要。

什么是基因组分析?

上一节我们提到了基因组分析的重要性,本节中我们来看看基因组究竟是什么。

基因组是每个生物体的遗传蓝图。它由DNA分子构成,呈现为著名的双螺旋结构。DNA由四种碱基组成:腺嘌呤(A)、胸腺嘧啶(T)、胞嘧啶(C)和鸟嘌呤(G)。在双螺旋中,A与T配对,C与G配对。

一个完整的人类基因组包含约60亿个碱基对。如果将这些碱基逐个写在纸上并堆叠起来,其高度可达百米,相当于一栋高楼。这还只是一个细胞的数据,人体内约有数万亿个细胞。

基因组分析的目标是解读这些遗传信息,以发现与健康、疾病相关的关键信息。即使单个碱基的改变,也可能导致癌症风险增加或引发特定疾病。

基因组分析的主要步骤

了解了基因组的基本概念后,我们来看看分析一个基因组通常需要哪些步骤。

以下是基因组分析流程中的三个核心步骤:

  1. 测序:这是第一步,将生物样本中的DNA化学信号转换为计算机可以处理的数字序列数据。这会产生大量的短DNA片段序列,称为“读段”。
  2. 组装:由于测序产生的读段非常短且无序,这一步的目标是将这些读段像拼图一样拼接起来,重建出完整的基因组序列。
  3. 分析:在获得完整的基因组序列后,最后一步是进行分析。这包括将新组装的序列与已知的参考基因组进行比较,以识别变异、寻找致病基因或进行其他研究。

加速基因组分析:算法与硬件协同设计

上一节我们介绍了基因组分析的标准流程,本节中我们来看看如何通过算法和硬件的协同设计来加速这一过程。

面对海量的基因组数据,传统的计算方法效率低下。我们的研究集中在两个层面进行优化:

  • 算法创新:设计更高效、更智能的算法来减少不必要的计算。例如,开发新的序列比对或组装算法,其时间复杂度低于传统方法。
    # 示例:一个简化的高效k-mer计数算法概念
    def count_kmers_efficient(sequence, k):
        kmer_counts = {}
        for i in range(len(sequence) - k + 1):
            kmer = sequence[i:i+k]
            # 使用哈希表实现O(1)复杂度的查找与更新
            kmer_counts[kmer] = kmer_counts.get(kmer, 0) + 1
        return kmer_counts
    
  • 硬件架构设计:为特定的基因组分析任务定制硬件加速器。例如,设计专用集成电路(ASIC)或现场可编程门阵列(FPGA)来并行处理大量的序列比对操作,其速度可比通用CPU快数个数量级。加速比公式可表示为:
    Speedup = Time_old / Time_new

通过将算法特性与硬件优势(如并行性、定制数据路径)紧密结合,可以显著提升基因组分析管道的整体性能。

未来机遇

随着测序技术持续发展,数据量将越来越大,分析需求也将更加复杂。这为计算机体系结构领域带来了持续的挑战与机遇。未来的方向可能包括:

  • 利用新兴存储技术(如存内计算)处理超大规模基因组图谱。
  • 为第三代长读长测序技术设计专用的加速架构。
  • 开发支持实时、便携式基因组分析的边缘计算设备。

总结

本节课中我们一起学习了基因组分析的基础。我们了解到基因组数据规模庞大,分析流程包括测序、组装和分析。为了应对计算挑战,需要从算法优化和硬件加速两个层面进行协同设计。这是一个计算机科学与生物学深度交叉、充满活力的研究领域,未来在新技术推动下将有更广阔的发展空间。

006:自管理DRAM与可变读取干扰

概述

在本节课中,我们将学习两项关于DRAM内存管理的前沿研究。第一部分将介绍一个名为“自管理DRAM”的低成本框架,它旨在让DRAM芯片自主管理内部维护操作,从而提升效率并简化新机制的引入。第二部分将探讨“可变读取干扰”现象,这是理解DRAM可靠性的关键概念。我们将了解当前DRAM维护机制面临的挑战以及论文提出的创新解决方案。


第一部分:自管理DRAM(Self-Managing DRAM)

大家好,我是克里斯托弗,我将为大家展示一篇在Micro‘24会议上发表的论文:《自管理DRAM:一个支持自主高效DRAM操作的低成本框架》。

研究背景与动机

当前,为了确保可靠性,DRAM需要频繁执行维护操作,例如行刷新行锤击防护内存清理。然而,引入或改进这些操作目前是一个漫长的过程,因为这需要更改由JEDEC标准组织定义的DRAM接口

上一节我们介绍了DRAM维护的必要性,本节中我们来看看当前方法的具体问题。

以下是当前DRAM接口工作方式的三个关键点:

  • 控制器集中控制:内存控制器向DRAM芯片发送所有命令,包括内存访问和维护操作。
  • 接口僵化:一切由内存控制器控制,导致接口非常不灵活。
  • 标准更新缓慢:JEDEC由超过390家公司组成,共同决策接口标准,因此更改接口耗时极长。例如,从DDR3到DDR4用了5年,从DDR4到DDR5用了8年。

因此,论文旨在解决两个核心问题:

  1. 引入新维护操作的壁垒:没有多年的努力,无法实现新的维护机制。
  2. 维护操作期间的性能损失:执行维护操作时,DRAM不可用,会阻塞内存请求,导致延迟增加和带宽下降。

随着DRAM密度持续增加,可靠性下降,维护操作将不得不变得更加频繁,这使得上述问题日益严重。

解决方案:SMD框架

那么,如何解决这些问题呢?论文提出了自管理DRAM框架。

其核心机制是对DRAM接口进行一项简单且单一的修改。这个修改使得DRAM能够自主管理和调度其内部的维护操作。

具体来说,在SMD框架下:

  • DRAM可以拒绝内存控制器对正在主动维护区域的访问请求。
  • 同时,允许控制器并发访问DRAM中的其他区域。

这意味着未来的维护操作可以在不进一步更改DRAM接口的情况下引入。

成果与优势

采用SMD框架能够带来以下好处:

  • 性能提升:平均性能加速最高可达 5%
  • 开销极小:在芯片上引入的额外开销非常小。
  • 未来兼容性:无需更改D接口即可引入新的维护操作。

第二部分:可变读取干扰

在介绍了自管理DRAM如何优化维护操作后,我们接下来关注一个特定的、重要的可靠性问题:读取干扰

什么是读取干扰?

读取干扰是DRAM中一种由电荷泄漏引起的现象。当频繁访问(读取或激活)某一行时,可能会导致其相邻行中存储的电荷发生改变,从而引发数据错误。这是一种“扰动错误”。

问题的演变

值得注意的是,读取干扰的特性并非一成不变。随着DRAM制造工艺的进步和单元尺寸的缩小,干扰的“范围”和“强度”可能会发生变化。这就是“可变”的含义——干扰模式会随着技术代际(例如从DDR4到DDR5)甚至不同生产批次而有所不同。

对维护的影响

这种可变性给像行锤击防护这样的维护操作带来了挑战。如果防护机制是基于固定的、过时的干扰模型设计的,那么它可能无法有效防护新一代DRAM中的错误,或者会因过度防护而浪费性能。

因此,理解并建模这种可变的读取干扰现象,对于设计下一代高效、自适应的DRAM维护机制至关重要。


总结

本节课我们一起学习了两项紧密相关的内容。首先,我们探讨了自管理DRAM框架,它通过一个简单的接口修改,使DRAM能自主调度维护操作,从而提升性能并打破引入新维护机制的壁垒。其次,我们了解了可变读取干扰现象,认识到DRAM的扰动错误模式会随着技术发展而变化,这强调了未来维护机制需要具备适应性和灵活性。这两项研究共同指向了更智能、更高效的未来内存系统设计方向。

007:面向移动端缓存内计算

在本节课中,我们将学习一篇名为“MIMDRAM”的论文。该论文提出了一种利用DRAM内存进行处理的端到端系统,旨在实现高吞吐量、高能效且对程序员透明的多指令多数据计算。我们将从背景介绍开始,逐步分析现有技术面临的问题,并详细讲解MIMDRAM的硬件与软件设计。

背景介绍

近年来,计算系统越来越受到内存带宽的限制,数据移动甚至可能消耗高达60%的系统总能量。为了应对这一挑战,研究人员提出了多种“内存内处理”架构。

内存内处理主要有两种方法:

  1. 近内存处理:将逻辑单元放置在靠近内存芯片的同一封装内。
  2. 用内存处理:利用内存单元自身的操作原理进行计算。MIMDRAM属于第二种类型。

为了理解MIMDRAM,我们首先需要了解DRAM的基本结构。DRAM由存储单元组成,这些单元被组织成称为“存储阵列”的二维网格。每个阵列通过字线连接到行解码器,通过位线将数据传输到本地感应放大器。多个阵列组合在一起构成一个DRAM行,并由全局行解码器驱动。

DRAM的读取操作涉及两个命令:首先是预充电命令,用于准备感应放大器;随后是激活命令,指定要读取的行,使感应放大器感知存储单元中的电流变化,从而读出数据。

在DRAM内部进行计算,需要利用其底层操作。两个关键操作是:

  • 行内复制:通过连续激活两个不同的DRAM行,可以将源行的数据复制到目标行。
  • 多数表决操作:通过同时激活三个不同的DRAM行,感应放大器会选择三个操作数中的多数值(例如,001中的0)。

通过精心编排这些行内复制和多数表决操作,可以构建出实现各种功能的电路,例如加法器。需要注意的是,在这种计算模式下,操作数不再按行存储,而是按列存储。

现有PIM系统的问题

上一节我们介绍了DRAM内计算的基本原理。本节中,我们来看看当前基于DRAM的处理系统所面临的主要挑战。所有问题都源于同一个根本原因:DRAM巨大且僵化的粒度

以下是三个核心问题:

  1. 并行性利用不足:这导致吞吐量低下和能量浪费。我们定义一个向量化因子来衡量计算的并行程度。在许多应用中,所需的并行度远低于一个DRAM行的大小(约65,000位),导致访问整个DRAM行时,大部分硬件资源被闲置。论文中的分析表明,大多数应用程序的并行度都低于DRAM行大小,甚至在单个应用内部,并行度也会变化。

  2. 计算支持有限:目前主要局限于执行映射操作。例如,给定一个数字数组,我们无法在DRAM内部有效地收集这些数字并计算总和,因为缺乏在不同列之间移动数据的机制。如果直接在所有DRAM列之间建立全连接,将带来巨大的面积开销,这是不可行的。

  3. 编程模型复杂:如何编程使DRAM执行有用计算的过程相当复杂且容易出错。一个相对简单的循环(例如条件加减法)需要被转换为等效的二进制操作代码。程序员需要负责数据的映射和对齐,以确保数据是按列存储的,这增加了编程负担。

MIMDRAM的硬件设计

了解了现有系统的局限性后,我们现在探讨MIMDRAM的解决方案。MIMDRAM是一个软硬件协同设计的PIM系统,它通过一系列创新来克服上述问题。

MIMDRAM的硬件设计主要包括以下三个关键组件:

  1. MIMD引擎:这是核心计算单元,嵌入在DRAM芯片内。它能够以比整个DRAM行小得多的粒度(低至512个元素)执行计算,从而更好地匹配应用程序的实际并行度,提高硬件利用率。

  2. 向量交换网络:这是一个低成本的互连网络,添加在DRAM子阵列内部。它支持不同列之间的数据移动和归约操作(如求和、求最大值),解决了数据无法在计算单元间流动的问题。

  3. 内存向量引擎:这是一个位于CPU芯片上的专用引擎,作为MIMD引擎的接口和协调器。它处理地址转换、命令调度和数据缓冲,使整个系统对上层软件更易管理。

MIMDRAM的软件堆栈

有了强大的硬件支持,还需要相应的软件来简化编程。MIMDRAM提供了一个完整的软件基础设施来提升程序员体验。

MIMDRAM的软件堆栈主要包含以下部分:

  • 编译器支持:编译器可以自动识别代码中适合在MIMDRAM上执行的部分(例如数据并行循环),并将其转换为可以在MIMD引擎上运行的指令。
  • 操作系统支持:操作系统负责管理MIMDRAM的内存区域,处理虚拟地址到物理地址的映射,并调度MIMD计算任务。
  • 编程模型:系统提供了一套更高级的抽象,程序员可以使用熟悉的并行编程范式(如OpenMP)进行开发,而无需直接处理底层的DRAM操作细节,实现了程序员透明性。

评估与总结

最后,我们来审视MIMDRAM的性能表现。论文作者将MIMDRAM与最先进的PIM系统、高性能CPU和GPU进行了比较。

关键结果包括:

  • MIMDRAM实现了显著更高的能效
  • 它在提供强大计算能力的同时,硬件开销非常小,仅增加约1% 的DRAM芯片面积和CPU芯片面积。
  • 该系统支持灵活的、细粒度的多指令多数据计算,并提供了完整的软件支持,易于被采用。

本节课中,我们一起学习了MIMDRAM,这是一个创新的端到端DRAM处理系统。它通过引入细粒度MIMD引擎、向量交换网络和内存向量引擎,有效解决了传统DRAM PIM系统并行度利用不足、缺乏数据归约能力和编程复杂三大问题。配合完整的编译器与操作系统支持,MIMDRAM在保持极小硬件开销的前提下,实现了高能效、高吞吐量且对程序员透明的内存内计算,为突破“内存墙”限制提供了一个有前景的方向。

008:PIMnet与DRAM中功能完备的布尔逻辑

概述

在本节课中,我们将学习一篇来自HPCA 2025的论文,标题为《PIMnet:一种用于可扩展PIM中高效集体通信的领域特定网络》。我们将探讨处理内存(PIM)的概念,现有PIM架构(如UPMEM)的局限性,以及PIMnet如何通过创新的硬件设计来解决这些挑战,特别是减少CPU开销并实现高效的DPU间通信。


PIM简介

上一节我们介绍了课程背景,本节中我们来看看什么是处理内存(PIM)。

在典型的冯·诺依曼架构中,CPU通过内存总线访问DDR内存。当CPU需要从内存读写数据时,需要经过漫长的内存总线等待时间。为了应对近期许多需要大量数据的应用程序,更好的方法是在内存内部直接进行处理。我们可以在内存中部署计算单元,这样能获得更短的延迟,并充分利用内存的内部带宽。如此一来,计算可以更快完成,主机CPU也无需再处理那些简单的计算操作,从而可以专注于其他更重要的任务。

UPMEM PIM架构

了解了PIM的基本概念后,我们具体来看一种当前商用的PIM架构——UPMEM。

UPMEM是一种结合了常规DIMM和其自身PIM-enabled DIMM的架构。其内部结构如下:每个芯片包含八个不同的存储体(bank)。每个存储体内部有特定的组件:

  • DPU:即DRAM处理单元,是一个具有14级流水线的32位处理器,支持24个线程(或称“任务单元”)。
  • 64MB DRAM存储体:这是大部分数据被CPU写入和读取的地方。
  • 24KB指令内存:用于存储DPU执行计算所需的指令。
  • 64KB WRAM:被称为“便签式存储器”,DPU在进行计算时,会用它来进行中间结果的存储和加载。

UPMEM PIM架构的主要缺点是,目前每个DPU都是独立运行小型程序的。如果不同DPU之间需要进行通信以协同计算,就必须经历很高的延迟,因为数据需要先传到CPU,再由CPU协调后传回,才能使不同存储体的DPU相互通信。这还可能导致一些DPU存储体闲置,无法被充分利用。因此,本文旨在解决主机与PIM之间、以及PIM内部仅支持本地内存访问的通信问题。

现有解决方案及其局限

在介绍PIMnet之前,我们先回顾一下已有的解决方案及其不足。以下是相关的研究工作:

软件方案:

  • SimplePIM (PAC 2023):关键思想是简化编程接口,并借鉴分布式系统的理念。它将PIM性能提升了10%到37%。但缺点仍然是存在CPU开销。
  • PiCoM (ISCA 2024):同样简化了编程接口,采用了酷炫的3D超立方体虚拟化技术来组织DPU,基本上是在计算前将数据移动到正确的位置,以最小化CPU主机的协调工作。其好处是带来了4到5倍的性能提升,并消除了大部分CPU开销,但并非全部。缺点主要也还是CPU开销。

下图展示了一个基线PIM示例的数据传输过程,以及经过上述论文优化后CPU角色的简化,但最终仍需要一些CPU协调工作(图中绿色部分),这会导致延迟。

硬件方案:

  • DIMM-Link (HPCA 2023)NDP-Bridge (ISCA 2024):这两个是硬件层面的方案。DIMM-Link基本上是在DIMM之间添加了类似桥接的互连功能。NDP-Bridge与稍后要讲的PIMnet非常相似,但它使用了缓冲区,并且不支持存储体间通信。DIMM-Link带来了约6倍的性能收益,NDP-Bridge则有约3倍的性能提升。它们的缺点同样包括CPU协调开销,并且NDP-Bridge由于使用缓冲区,在大型数据模型和DPU扩展时,缓冲区容易被填满,导致可扩展性差。

PIMnet的设计动机

基于现有方案的局限,我们来看看PIMnet的设计动机。

论文中有一个有趣的图表显示,UPMEM的基线性能、经过软件理想化优化后的性能(但仍需CPU协调开销),以及PIMnet可能达到的性能。PIMnet的潜力比其他方案高出约10倍。关键结论是:即使是最完美的软件实现,其性能也无法超越PIMnet。

PIMnet的目标是支持三种集体通信模式,并降低其延迟:

  1. All-to-all:所有节点之间相互交换数据。
  2. Scatter-reduce:将数据分发到多个节点进行处理,然后将结果规约到少数节点。
  3. All-reduce:所有节点参与计算,结果规约到一个节点。

PIMnet旨在利用现有结构(并可能少量增加新组件)来实现这些通信,尽可能减少乃至消除CPU开销,同时为此实现提供集成的软件和接口。

PIMnet架构详解

接下来,我们深入探讨PIMnet本身的设计。其架构分为三个层次:存储体内、芯片内和芯片间。

  • 存储体内互联:在UPMEM芯片的各个存储体之间,PIMnet添加了称为“PIMnet Stop”的路由器。这些路由器通过一个环形结构相互连接,利用存储体的内部总线进行通信。
  • 芯片内互联:在内存缓冲区内进行微小调整,使同一芯片上的所有DPU能够相互通信。
  • 芯片间/通道间互联:利用DDR总线和总线间的小型互连,实现不同芯片甚至不同内存通道之间的通信。

(注:图示中看似是四个独立的DIMM,但实际上它们是同一张卡正反两面的两个内存排,每个通道有两张卡。)

PIMnet存储体内部改造

现在,我们具体看看存储体内部是如何改造以提升性能的。

下图展示了UPMEM基础存储体的结构,PIMnet在其中添加了多路复用器、生成器和路由器等组件。这些改动使得DPU能够高效地直接访问其他存储体的数据,并参与集体通信操作,而无需CPU介入。

总结

本节课中,我们一起学习了PIMnet这一创新的PIM架构。我们首先回顾了处理内存的概念和UPMEM商用架构的局限性。然后,我们分析了现有软件和硬件解决方案在减少CPU开销和实现高效DPU间通信方面的不足。接着,我们探讨了PIMnet的设计动机,即通过硬件支持高效的集体通信来大幅超越纯软件优化。最后,我们详细介绍了PIMnet的三层互联架构及其对存储体内部的改造,这些设计使其能够近乎消除CPU协调开销,显著提升可扩展PIM系统的性能。

009:Lincoln 与 Ares-Flash (2025年春季)

在本节课中,我们将学习 Lincoln 系统,这是一个旨在消费级设备上实现实时、大规模语言模型推理的方案。我们将探讨其如何利用混合键合技术与定制闪存设计,解决内存容量与带宽的限制,从而实现高效的模型推理。

概述

大家好,我是 Lemon,一名硕士生。今天我将介绍来自 HBCA 2025 的 Lincoln 系统。该系统的主要目标是在配备 LPDDR 接口和计算型闪存的消费级设备上,实现 500 亿至 1000 亿参数大语言模型的实时推理。

首先进行执行摘要。当前,大型模型无法放入消费级设备有限的内存中。闪存存储具有高容量,但由于闪存本身及其接口的带宽较低,无法为 LLM 推理提供足够的带宽。Lincoln 的目标是实现实时推理。

Lincoln 的关键创新在于:利用混合键合技术将计算逻辑与 LPDDR 闪存融合,并充分利用内存接口。它采用基于 SLC NAND 闪存的定制存储设计,通过更短的位线和更多的平面来增加并行性。同时,它在逻辑芯片上使用存储内处理技术来处理全连接层,以减轻数据移动的开销。

在评估中,Lincoln 消除了闪存与神经处理单元之间的瓶颈,使得 NPU 能像使用 DRAM 一样高效地使用闪存,并实现了实时的 token 生成。与基线推测解码方案相比,它在预填充阶段和 token 生成阶段分别实现了 11 倍47 倍 的加速。同时,每个 token 的能耗比 SSD 方案降低了 3.6 倍,成本约为 191 美元。与其他方案相比,它在表面上具有竞争力。

为什么要在消费级设备上运行 LLM?

我们希望在消费设备上运行 LLM 主要有两点原因。

第一点是隐私问题。LLM 可能处理大量私人数据。我们可以回顾去年夏天,微软试图发布 Microsoft Recall 功能,该功能会将本地截图发送到云端,这引发了巨大的反对声浪。

第二点是云端推理成本非常高昂。据报道,OpenAI 在 ChatGPT 订阅服务上正在亏损。因此,公司希望将 LLM 的成本转嫁给消费者。

背景知识:LLM 基础

首先,我们来谈谈 LLM。今天我们将只讨论解码器架构的 Transformer 模型。它们有两个主要组成部分。

第一个是全连接层。它们只进行 token 级别的计算,意味着每个 token 只与自身进行计算,这是大语言模型中大多数参数所在的地方。

第二个重要部分是自注意力机制。它使用先前 token 的键和值。我们不需要精确了解其工作原理,重要的是我们知道可以仅使用先前上下文的键和值来计算当前查询的自注意力。由于我们只关心先前的键和值,这便启用了 KV 缓存,我们无需对整个序列再次运行自注意力计算。

推理阶段划分

因为有 KV 缓存,我们可以将 LLM 的执行分为两个部分。

第一部分是预填充阶段。在这个阶段,LLM 并行计算整个输入提示。例如,它会并行计算 “I” 和 “Apple”,并输出下一个 token。这个阶段主要是通用矩阵-矩阵乘法,并且大多是计算密集型。

第二部分是解码阶段。这个阶段每次接收提示加上已生成的 token,并生成一个新的 token。由于我们需要遍历所有层,这个阶段主要是内存密集型,并且大多使用通用矩阵-向量乘法。

推测解码简介

推测解码的思想是使用一个更小的草稿模型来快速生成多个候选 token,然后让更大的模型通过一次前向传播来并行验证所有这些生成的 token。这可以加速解码阶段的生成过程。

挑战:模型规模与硬件限制

我们运行的模型越来越大,通常性能也越好。但即使使用像 A100 这样非常快的 GPU,对于 1000 亿参数的模型来说,仍然不足以进行实时 LLM 推理。这存在两个问题:首先是容量,GPU 内存通常只有 40GB 或 80GB;其次是带宽,即使有足够的容量,带宽也可能不足以支持实时推理。

相关内存系统

我们今天关心的内存系统主要有两种。

  • DRAM:具有到神经处理单元的高带宽,大约在每秒 100 GB 量级,但在移动设备中容量通常较低,大约在 16GB 到 64GB 之间。
  • 闪存:具有更高的存储容量,可能达到 TB 级别,但其到 NPU 的带宽较低,大约在每秒 10 GB 量级。

此外,移动设备使用低功耗 DDR,这是 DDR 的一个版本,功耗更低,带宽更高。

关键技术:混合键合

混合键合的思想是将闪存的逻辑部分和存储阵列部分分别制造在不同的晶圆上。这使得可以分别优化两种芯片,从而获得更好的逻辑性能和更高的存储阵列密度。然后将它们键合在一起。与之前的硅通孔等技术相比,这种方法的成本更低。

Lincoln 系统的目标

那么,我们对这个 LLM 系统有什么期望?目标是什么?

首先,我们希望实现低延迟的 token 生成。我们的目标是预填充阶段在 4 秒内完成,每个 token 的生成在 0.2 秒内完成。

其次,我们希望能够运行更大的 LLM。正如之前所说,更大的模型通常更好,所以我们希望运行尽可能大的 LLM。

最后,我们希望系统具有可承受的低成本

总结

本节课我们一起学习了 Lincoln 系统,这是一个针对消费级设备上大语言模型推理的创新型硬件解决方案。我们探讨了在设备端运行 LLM 的动机,回顾了必要的背景知识,并分析了内存容量与带宽带来的挑战。Lincoln 通过结合混合键合技术、定制高并行性闪存设计以及存储内处理,有效地解决了这些瓶颈,为实现大规模、实时、低成本的设备端 AI 推理提供了新的可能性。

010:PIM Is All You Need, LUT-DLA and FACIL

概述

在本节课中,我们将学习大语言模型(LLM)背后的Transformer架构,分析其计算与内存瓶颈,并探讨一种名为Handense的、基于CXL(Compute Express Link)和PIM(Processing-in-Memory)技术的GPU-Free系统设计方案,旨在解决LLM推理中的挑战。


问题动机

LLM背后是Transformer架构,这是一种机器学习架构,最初由谷歌在2017年的论文《Attention Is All You Need》中提出。

从第一视角来看,可以将其想象为一个黑盒。你输入一个句子,这个句子会被分解并处理,随后以自回归的方式逐个输出单词,最终形成一个良好的回答。

Transformer的第一部分称为编码阶段,最后一部分称为解码阶段。Transformer的结构如下所示。

第一阶段称为输入嵌入。之后是核心思想之一:自注意力机制。在这之后,通常是一个前馈网络,例如一个多层感知机,其中归一化层用于保持数据稳定,最后是输出部分。

输入嵌入

第一阶段是输入嵌入,这是将单词转换为数字或密集向量的过程。例如,单词“King”和“Queen”应该产生具有相似数值的向量,因为它们具有相同或相似的语义含义。

这个过程同时包含了词元嵌入和位置嵌入。位置嵌入是一种将词序或词语上下文信息保留在数据本身中的过程。这样,我们可以为词语赋予数字,并将句子中词语的顺序信息编码在数据中,而不是模型中。

解码器块与自注意力

接下来是Transformer的核心:解码器块,其中第一部分是自注意力层。注意力层也是Transformer的一个主要思想,我们在此计算一个句子中各个词元相对于彼此的重要性或注意力。

例如,观察这个句子。在这张图中,词语越亮,表示它越重要。例如,“women”、“man”和“August 1992”是白色的。

另一个重要之处在于,例如在语言翻译中,第一句有“European economic”,第二句有“economic Upin”。我们无法进行一对一的翻译,因为在法语中,可能需要交换这两个词的位置。因此,注意力层的作用是让神经网络能够推导出一个句子中词语的上下文。

例如,“Only John ate the apple”和“John ate only the apple”这两个句子的含义不同。

前馈网络与后续处理

其余部分就像一个普通的前馈网络。在中间,我们将注意力层的输出加到下一个块,进行归一化以保持数据稳定性,然后输入到一个多层感知机中。每个词元在此被独立处理,这一点在后面会变得重要。

之后进入下一阶段,我们再次进行加法和归一化。最后是输出嵌入,最终的向量被投影到一个词汇表大小的向量上,并且通常与输入嵌入权重绑定。

随后,我们可以对其应用Softmax函数。你可能还记得在第二张幻灯片开头,解码阶段的每个单词都有一个概率分布,这就是因为Softmax函数。之后,我们执行Top-K采样,这样我们就不会总是得到相同的答案或句子,而是可以使用同义词或语义相同但概率稍低的词语。

接下来是下一个词元预测,这个过程会重复进行。


模型特性与瓶颈

我们得到了这样一幅图景。现在,我们问自己,这个模型真正受益于什么?答案是它具有高度的可并行性

在预填充阶段,我们可以一次性并行处理每个词元。解码器本身也是可并行的。但解码阶段,正如开头所说,是以自回归方式进行的,因为我们需要第一个词来处理下一个词。因此,我们必须顺序计算,但解码器本身仍然是可并行的。

关于LLM的另一个问题是它们非常庞大。例如,GPT-3有超过1750亿个权重,组织成大约28,000个矩阵。因此,我们需要处理大量数据。

从这张图中我们还可以看出,随着上下文长度的增加,吞吐量会达到饱和。因为CPU或处理单元正在成为瓶颈。

因此,我们可以得出结论,LLM推理更多是内存瓶颈,而非计算瓶颈。虽然我们在论文Lincoln中看到预填充阶段可能仍是计算瓶颈,但总体上它是内存瓶颈。

延迟也随着批处理大小的增加而增加,并且GPU利用率相当低。例如,在批处理大小为128的Llama 2模型上,利用率仅为21%。

以下是总结:

  • LLM必须处理大量数据。
  • 它更多是内存瓶颈,而非计算瓶颈。
  • 吞吐量在某个点会饱和。
  • 延迟随着批处理大小的增加而增加。
  • GPU利用率不足。
  • 但模型本身是可并行的。

解决方案目标

既然我们明确了问题,现在来看看解决方案。因此,我们希望实现的目标是:首先,我们需要高内存容量、高内存带宽和模型并行性。

因此,我们提出的问题是:我们能否设计一个无需GPU的系统,使其能够支持大语言模型推理,并具备高内存带宽、可扩展的容量和低数据移动延迟?

但在深入探讨之前,我们先介绍一个名为计算快速链接的技术,简称CXL。

CXL是一种用于CPU、加速器(如网络卡)之间高速、低延迟互连的开放标准。它使用PCIe物理接口,但拥有自己的协议,并得到英特尔、AMD等厂商的支持。

CXL背后的动机是实现高效的内存一致性、低延迟的内存共享以及可扩展性。这似乎正是我们所需要的。

因此,我们问自己:能否利用CXL来构建一个可以扩展的更大系统?


Handense 系统介绍

Handense就是一个基于CXL的、无需GPU的系统。它使用CXL进行内存扩展,并利用了PIM和PNM架构。其目标正如论文开头所述:解决LLM推理的挑战,并优化性能和成本。

正如开头所说,系统包含一个主机CPU,之后连接一个CXL交换机,该交换机再连接到多个CXL设备。

接下来,我们将深入探讨一个CXL设备的具体构造。

它看起来相当复杂,但我们将一起解析。首先,我们有CXL端口。CXL端口是与主机或机器其余部分通信的接口,CXL设备通过它与CPU通信。

更详细地说,其结构如下:我们有一个接收通信通道,数据随后被转换为FLIT,FLIT是CXL中最小的数据单元。之后,根据消息类型(本地到远程、远程到本地或主机到本地),数据被路由到相应的处理块。

仲裁器执行完整性检查,数据被分发并发送回去,甚至可以在内部执行纠错。

然后,我们有了指令缓冲区,来自CPU或主机的指令存储在这里。程序计数器遍历这些指令并执行它们。


总结

本节课中,我们一起学习了Transformer架构的基本原理,分析了大语言模型推理面临的内存与计算瓶颈。我们探讨了CXL技术作为高速互连解决方案的潜力,并详细介绍了一种名为Handense的新型GPU-Free系统设计。该系统旨在通过CXL实现内存扩展和低延迟数据交换,结合PIM/PNM架构,以应对LLM对高内存带宽、可扩展容量和高效并行的需求,从而优化推理性能和成本。

posted @ 2026-03-29 09:13  绝不原创的飞龙  阅读(4)  评论(0)    收藏  举报