CS152 · Lab 3
这个实验把第 11-15 课的乱序执行、寄存器重命名、分支预测理论,变成对一颗真实乱序超标量核心(BOOM)的直接操作——并且用一次真实的 Spectre 攻击复现,让"推测执行会泄露信息"这件事不再是抽象的安全新闻标题,而是你亲手触发、亲手观测到的具体现象。
核心任务:从一个"最差情况"的 BOOM 配置(33 项物理寄存器堆、4 项 ROB、无分支预测)开始,通过 config-mixins.scala 里的 WithNCS152BaselineBooms 逐步升级到一个"改进版"配置(64 项物理寄存器堆、16 项 ROB、BTB+BHT+8 项返回地址栈),在 dhrystone、median、multiply、qsort、spmv、towers、vvadd 等基准测试上,对比乱序 BOOM 与顺序 Rocket 核心的 CPI 差异——这是第 11、12 课"ROB 大小、物理寄存器数量限制乱序执行效果"这一理论在真实硬件上的直接验证。
predictor_sw.cc)设计一个分支预测器,目标是打败 256 项双模态基线预测器(CS152SWPredBoomConfig),可选择性地与内置的 TAGE 实现对比——这是第 15 课讲过的两级预测器、TAGE 等结构的直接实践CS152SmallBoomConfig,训练分支预测器使其偏向某个方向,预热(prime)缓存,利用 pk(proxy kernel)中一个故意植入的、存在越界推测性读取漏洞的 sys_leak 系统调用接口,配合缓存计时侧信道(Prime+Probe 技术),一次一位地窃取一段 128 字节的秘密数据。仓库中已经附带了一份可运行的概念验证代码(lab/open2/spectre.c)、预编译好的 pk-spectre,以及一份真实运行日志作为参考。关于这个安全实验的说明:这是课程官方设计的教学实验,目的是让学生在受控、隔离的教学环境中,亲手理解 Spectre 这一类推测执行侧信道攻击的真实机制——这是计算机体系结构与安全交叉领域的经典教学案例(该漏洞本身在 2018 年由学术界公开披露,影响了几乎所有现代乱序处理器)。本页只描述这个作业已经公开的任务背景,不提供额外的攻击代码或漏洞利用细节;具体实现请参照课程仓库中已经提供的教学用代码。
问题 1:Lab 3 指导性部分对比"最差情况"与"改进版"BOOM 配置的 CPI,主要验证了第几课的哪条理论?
问题 2:本页对开放性部分选项 2(复现 Spectre Variant 1 攻击)采取了什么处理方式?