📔 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架构¶
待更新