名校公开课 / 普林斯顿 / 经典

计算机体系结构

Computer ArchitectureELE 475普林斯顿self-paced免费
流水线缓存乱序执行分支预测多处理器

这门课学什么

课程讲现代处理器如何设计。内容包括指令集、流水线、缓存、超标量与乱序执行、分支预测、虚拟内存、GPU、多处理器和缓存一致性。配习题、期中和期末考试。

内容摘要

这门课讲现代高性能处理器怎样设计,深度相当于研究生课。它从指令集和流水线讲起,一路讲到乱序执行、超长指令字、向量机和多处理器缓存一致性。课程以普林斯顿 ELE 475 为蓝本,由文茨拉夫(David Wentzlaff)主讲。

全课 21 讲,分 3 个阶段。第 1 阶段是第 1–3 讲,复习基础:指令集架构、微码、流水线和缓存。第 2 阶段是第 4–12 讲,讲单核如何提高指令级并行:超标量、乱序执行、寄存器重命名、VLIW、分支预测和高级缓存技术。第 3 阶段是第 13–21 讲,讲内存保护和并行:虚拟内存与 TLB、向量处理器与 GPU、多线程、并行编程的一致性模型、总线和目录式缓存一致性,以及片上互连网络。

课程有 5 套习题(部分带 A 套补充题),每套之后公布答案。第 9 讲之后有期中考试,第 21 讲之后有期末考试。多数讲次附有阅读材料。

学完以后,学生能读懂处理器微架构文档,能分析流水线冒险和缓存缺失对性能的影响,能比较乱序、VLIW、向量和多线程几种并行方案的取舍,并理解多核系统里锁、内存栅栏和一致性协议的工作原理。

讲课以板书式幻灯片为主,文茨拉夫边画流水线图边推演每个周期发生什么。课程要求先学过数字逻辑和计算机组成。前 3 讲是复习,基础好的学生可以快速跳过。

为什么值得学

免费课程里很少有讲处理器设计这么深的。已有 33 万多人注册。

课程信息

学校
普林斯顿(Princeton)
课程号
ELE 475
讲师
戴维·文茨拉夫(David Wentzlaff)
学期
self-paced
平台
Coursera
费用
免费
难度
高级
学时
21 个单元,Coursera 估计约 5 周 × 每周 10 小时
先修
需要数字逻辑和计算机组成基础。
材料
视频、作业、考试
许可证
未注明
去课程主页 ↗
课程是英文的。本页的介绍、摘要和大纲由极客教育原创撰写,讲次标题为中文意译。开课时间、收费和链接以官方页面为准。

课程大纲 · 共 21 节

大纲依据:Coursera 模块列表(21 讲,每讲一个模块;结构取自 api.coursera.org onDemandCourseMaterials.v2 与课程页)(查看原始页面 ↗)

  1. 1
    导论、指令集架构与微码Introduction, Instruction Set Architecture, and Microcode

    介绍课程内容,区分体系结构和微体系结构,比较几种机器模型和指令集的特征。

  2. 2
    流水线复习Pipelining Review

    讲微码实现的处理器和流水线基础,以及结构冒险和数据冒险。

  3. 3
    缓存复习Cache Review

    讲跳转和分支引起的控制冒险,再讲存储器技术和引入缓存的原因。

  4. 4
    超标量 1Superscalar 1

    讲缓存的分类和性能,再讲双发射顺序超标量处理器和取指对齐。

  5. 5
    超标量 2 与异常Superscalar 2 & Exceptions

    讲超标量的对齐和旁路,讲中断与异常的处理,并引入乱序处理器。

  6. 6
    超标量 3Superscalar 3

    按取指、发射、写回、提交各阶段是否顺序,比较几类乱序处理器的结构。

  7. 7
    超标量 4Superscalar 4

    讲推测执行、寄存器重命名的两种实现,以及访存消歧(memory disambiguation)。

  8. 8
    超长指令字 1VLIW 1

    讲乱序设计的复杂度上限,引入 VLIW 和配套的编译器优化,并介绍谓词执行。

  9. 9
    超长指令字 2VLIW 2

    讲谓词执行的实现、推测执行和分簇 VLIW,并以 IA-64/安腾为案例。本讲之后是期中考试。

  10. 10
    分支预测Branch Prediction

    讲分支的代价、静态和动态方向预测,以及目标地址预测。

  11. 11
    高级缓存 1Advanced Caches 1

    讲基本缓存优化、缓存流水化、写缓冲、多级缓存、受害者缓存和预取。

  12. 12
    高级缓存 2Advanced Caches 2

    讲多端口与分体、软件层的内存优化、非阻塞缓存,以及关键字优先和提前重启。

  13. 13
    内存保护Memory Protection

    讲基址与界限寄存器、分页内存、地址转换与保护,以及 TLB 的处理。

  14. 14
    向量处理器与 GPUVector Processors and GPUs

    讲缓存与内存保护的交互,再讲向量处理器的并行方式及其硬件和编译器优化。

  15. 15
    多线程Multithreading

    讲归约、分散与聚集、Cray-1、SIMD 和 GPU,再讲粗粒度多线程和同时多线程。

  16. 16
    并行编程 1Parallel Programming 1

    讲同时多线程的实现、并行的基本概念、顺序一致性和锁。

  17. 17
    并行编程 2Parallel Programming 2

    讲锁与信号量、原子操作、内存栅栏和 Dekker 算法。

  18. 18
    小型多处理器Small Multiprocessors

    讲总线的实现、缓存一致性问题和基于总线的一致性协议。

  19. 19
    多处理器互连 1Multiprocessor Interconnect 1

    讲更多一致性协议、互连网络、消息传递和互连设计。

  20. 20
    多处理器互连 2Multiprocessor Interconnect 2

    讲网络拓扑及其参数、网络性能、路由和流控。

  21. 21
    大型多处理器(目录协议)Large Multiprocessors (Directory Protocols)

    讲基于信用的流控、死锁和伪共享,再讲目录式一致性协议的实现和扩展性。本讲之后是期末考试。

普林斯顿的其他经典课