跳转至

📔 Lecture01 Introduction and Basics 学习笔记

更新日期:2023.11.04

1. 课程目标

  • 了解原理
  • 了解先例

通过了解原理和先例,则可以完成一些目标:

  • 可以评估不同设计和想法的权衡。
  • 开发出原则性设计
  • 开发出新颖、开箱即用的设计。

重点目标:

  • 原理、先例以及如何将其用于新设计。

2. 体系结构的角色

  • 向后看(回顾过去)

    • 了解权衡和设计、优点/缺点、过去的工作负载。分析和评价过去。
  • 展望未来

    • 成为梦想家并创造出新的设计。聆听新需求。
    • 推动最先进的技术。评估新设计的选择。
  • 向上看(分析堆栈中的问题)

    • 开发架构和想法来解决重要的问题。
  • 向下看(器件/电路技术)

    • 预测和适应未来新的技术。

成为一个架构师并不容易。在这个过程中设计一个新系统时,需要考虑很多事情和想法,有良好洞察力和直觉。

一些技术的高性能系统的架构创新,才使得出现了现如今的系统设计。

3. 课程的重心

  • CMU 18-213(CMU 15-213)

    • 程序员通过编程语言作为计算模型,思考计算机系统的工作原理。
  • CMU 18-447

    • 架构师/微架构师的视角

      • 如何设计符合系统设计目标的计算机?
    • 课程重点:

      • 一个汇编语言是如何以数字逻辑的形式执行的?
      • 中间发生了什么?
      • 如何使用逻辑门和总线来设计计算机来满足特定的目标?
  • CMU 18-240

    • 硬件设计者通过数字逻辑作为计算模型,重新思考计算机系统是如何工作?
    • 对于硬件设计来说,一定程度上会影响软件层面的工作。

4. 抽象的作用

  • 转换的层次创造了抽象

    • 抽象:较高层级只需要知道与较低层级的接口,而不需要知道较低层级都是怎么实现的。
    • 例子:高级语言的程序员可以不知道任何关于体系结构的东西来编写程序,也无需去关注ISA是什么,以及计算机如何执行指令。
  • 抽象可以提高生产力

    • 无需关注底层所做出的的决策。 例子:Java编程 和 C编程,C编程和汇编语言等。

透过抽象层来看,只要一切顺利,不知道底层(或者上层)发生了什么就不是问题。

那么对于一些问题的思考点需要关注

  • 编写的程序运行缓慢?
  • 编写的程序不能运行?
  • 编写的程序消耗了太多的内存?
  • 如果设计的硬件难编程如何处理?
  • 设计的硬件太慢,是因为它本身没有为软件提供正确的原语?
  • 如何设计一个效率高、性能更高的系统?

那么本课程的关键目标:

  • 了解处理器如何在软件层下工作、以及硬件中的决策是如何影响软件/程序员?

  • 能够通过在不同层级边界和系统组件之间做出设计和优化决策。

5. 阅读材料笔记

阅读笔记细节待更新。

5.1 如何进行论文/演讲评审?

  • 简要总结

    • 论文想要解决的问题是什么?
    • 论文的核心思想是什么?关键的见解是什么?
    • 论文思想对当时学术的主要贡献是什么?
    • 从中获取到最重要的东西是什么?
  • 优势(最重要的优点)

    • 论文是否很好地解决了问题?
  • 缺点(最重要的缺点)

    • 这是你应该批判思考的点。每篇论文/想法都会有一个缺点
      • 论文不一定完全都是好的,有缺点的地方就是有改进空间的地方。也是未来可以研究的课题点。
  • 思考自己是否可以做得更好?

    • 提出自己的想法
  • 复盘总结

    • 学到了什么?
    • 喜欢什么?不喜欢什么?
    • 给出对应的理由。
  • 阅读论文和评审时,要非常挑剔

  • 总是去想用更好的方法去解决问题或者相关的问题。

5.2 论文:Memory Access Scheduling

5.2.1 介绍

  • 现代计算机系统经常性会受到内存系统带宽的限制。

  • 为了最大限度地提高内存带宽,现代DRAM组件允许内存访问的流水线化,提供了几个独立的内存库,并缓存内存中最近访问过的行。

  • 现代DRAM并不是真正的随机访问设备(所有未知的访问时间相同),而是具有bank、row、column的三维存储设备。

    • 对同一个bank内不同行的顺序访问具有高延迟且不能流水线。
    • 对同一个row内不同bank的访问具有低延迟且可以流水线。
  • 现在存储器期间的三维特性使得对存储器操作进行重新排序以利用DRAM的

5.2.2 现代DRAM架构

待更新