10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第3天 2018/10.26
今天是 2年修完清华6个CS硕士学位第37天
1. 第4次周计划概览
接下来10天,我将开启第一次主宰力量系列计划(2年精读彻底掌握40本国外计算机类类传世之作)。
第一次主宰力量计划之10天精读掌握 计算机组成与设计(COAD:Patterson and Hennessy,500页)
○ 教材网址:https://book.douban.com/subject/10441748/
○ 作者简介:
§ John L. Hennessy 斯坦福大学校长
§ David A. Patterson 加州大学伯克利分校计算机科学系教授,美国国家工程研究院院士,IEEE和ACM会士
○ 计划时间: 10.24~11.2号(这是2年修完清华6个CS硕士学位之第35天~45天,第4次周计划)
○ 学习时间:平均每天至少核心学习时间达到13小时,10天高效率学习130小时。
○ 伏笔:我对本书的难度也不太了解,如果部分内容难度过高我可能需要13~15天才能完成本教材的学习。
○ 辅助学习视频:
北京大学-计算机组成:http://www.chinesemooc.org/kvideo.php?do=kvideo_announcement&kvideoid=4392&classesid=1967
2. 今日学习成果
今日评分:85分(效率中等)
今日成果简述
• 3.2节
○ PS:关于溢出我们只讨论有符号数的情况,因为无符号数的情况太简单了
○ 理解加法和减法运算在什么情况下不会发生溢出;
○ 掌握有符号数加减法溢出的检测方法(就是那个图3-2)
○ 理解我们故意忽略无符号数加减法溢出的原因
○ 理解MIPS编译器通过什么方法来实现:”在某些情况下忽略溢出,而在另外一些情况下不忽略溢出“
§ 理解MIPS add addi sub addu addiu subu指令是否抛出溢出异常的约定以及形成这些约定的原因
○ 知道C语言这个懒货永远忽略溢出。
• 3.3.1节
○ 理解第一种实现乘法运算的硬件结构图
○ 理解乘法器的本质只是做一些简单的移位和相加操作
• 视频-第3章第1节
○ 理解addi $21,$22,-50 指令的具体执行步骤(取址,译码,执行,回写)
○ 理解addi $21,$22,-50 会发生符号拓展的原因以及他具体是如何进行符号拓展的。
○ 理解逻辑运算指令的立即数版本只需要进行无符号拓展的原因
○ 理解算数运算指令的立即数版本需要将立即数进行有符号拓展的原因
• 视频-第3章第2节
○ 理解晶体管P形和N形的功能
○ 知道如何使用P,N形晶体管构建非门电路
○ 知道如何使用P,N形晶体管构建与非门电路
• 视频-第3章第3节
○ 理解D触发器的电路图实现原理
○ 理解循环位移器的电路实现原理
○ 理解RAM的电路构造原理
○ 理解D触发器的性质
• 视频-第3章第4节
○ 理解MIPS或运算的电路图实现原理
○ 理解MIPS与运算的电路图实现原理
○ 理解(具有or-and-nor-xor等各种功能的,并且加入CLA)ALU的电路图
• 视频-第3章第5节
○ 理解半加器的功能和实现原理
○ 理解全加器的功能和实现原理
○ 理解MIPS的32-bit加法器的电路实现原理
○ 理解MIPS的32bit加法器判断是否溢出的核心逻辑(一步逻辑)以及电路实现方案
○ 深刻理解8086和MIPS处理溢出的不同的设计思路。MIPS是未雨绸缪而8086是先斩后奏
○ 掌握MIPS的减法器实现原理(电路图)
• 视频-第3章第6节
○ RCA(行波进位加法器)的缺点和构造原理
○ 了解线延迟,门延迟,关键路径的概念
○ 会计算RCA的关键路径(延迟最长的路径)的总延迟
§ 知道RCA属龟的主要原因
§ 知道如何提前计算“进位输出信号”
○ 掌握CLA(超前进位加法器)的设计理念以及电路图
○ 深刻理解超缺前进位加法器的优点和点
§ 优点:提前计算C(i)的门延迟和加数的数位无关
§ 缺点:C(i)的哥们的数量却等于加数的数位,悲催
○ 理解解决CLA缺点的真实工程方案:积跬步,至千里
• 视频-第4章第1节
○ 感知:我们为什么要回到小学时代?(- -)
○ 理解冯诺依曼报告说:我们使用二进制的其中一个原因是因为二进制实现乘法更加方便快捷
• 视频-第4章第2节 乘法器的实现
○ 复习指引:如果遗忘乘法器的具体实现流程,请参看视频2~10分钟;最快的是看4-3视频的前5分钟就能很好的复习初级乘法器的工作流程。
○ 掌握初级版本乘法器的实现原理以及其进行乘法运算的具体流程
○ 理解为什么初级乘法器执行一次循环需要3个时钟周期?
• 视频-第4章第3节 乘法器的优化1
○ 感知:
§ 时钟上升沿到来之前,寄存器内容不会发生变化
§ 时钟上升沿到来时,寄存器根据输入改变其内容(被乘数寄存器,乘数寄存器,积寄存器同时改变)
§ 上升沿过去后,这些寄存器都傻傻的不会变
○ 理解第一次优化方法的本质(纯算法层面的优化)
○ 理解第一次优化的方法为什么每次循环只需要1个周期,为什么速度提高3倍。
§ 效果:速度直接提高3倍
§ 核心:加法和移位并行
○ 复习指引
§ 就是完全在数学的算法上进行优化而已,完全等价于开几个go协程。。。不需要复习,不需要记忆
• 视频-第4章第3节 乘法器的优化2
○ 深刻理解优化乘法器的核心理念之减少寄存器资源的浪费,提高寄存器利用率
○ 学会玩游戏之大家一起来找茬-4点
§ 发现太初乘法器浪费不必要的硬件资源的地方
○ 掌握乘法器的第二次优化方案的具体方法(不用回忆)
○ 感知:这个优化操作太秀了,但是很简单啊。。也很容易忘,也不用记。。
• 视频-第4章第4节 除法器的实现
○ 掌握除法器的实现原理和工作流程
• 视频-第4章第5节 除法器的优化
○ 本节的所有一切都和乘法器非常相似
○ 我们再来玩一次大家来找茬游戏
§ 同样从寄存器存储空间浪费的角度。。
○ 理解除法和乘法的一些不同点
§ 乘法的各个位的运算(即每轮循环运算)互相独立因此可以并行运算,而除法不是。
○ 理解除法器的优化难以像乘法那样并行提高性能的原因
掌握除法器的优化方案
今日笔记
3. 今日时间表
4. 今日反思
- 今日效率非常中等,核心学习时间11小时;浪费了3小时(好多啊!)
- 今日仅仅学了8节(40页),这个速度我不满意。
5. 明日目标