-
课程链接 https://www.bilibili.com/video/av21376839/?p=3
-
笔记:
-
第二集 电子计算机:
- 计算机的最核心最基本的部件的演进:继电器 -> 真空管 -> 晶体管。
- 演进方向是更小的尺寸,更快的开闭速度,更长的寿命,更小的故障率
-
第三集 布尔逻辑与逻辑门
- 二进制:起初的晶体管用来表示3进制,5进制。。。但二进制有易于区分,抗噪。
- 布尔代数:0,1 以及 NOT,AND,OR,通过晶体管的开闭和门电路来表示。其中XOR可以通过前三个的组合得到。
-
第四集 二进制(计算机如何存储和表示数字)
- 二进制的加减法,类比于十进制
- 二进制表示整数(类比于十进制),负数,浮点数,8位,32位,64位。。。
- 二进制表示符号:ASCII码,Unicode
-
第五集 计算逻辑单元 ALU(计算机如何计算)
- 计算的核心组件:ALU ,其封装了各种计算组件分为计算单元(加法器,减法器,自增,自减),逻辑单元(与或非)
- 逐层的封装抽象 : 门电路 -> ,门逻辑 -> 半加器 -> 全加器 ->八位加法器 -> ALU
-
第六集 寄存器&内存
- 逐层的抽象封装 :逻辑门 -> 锁存器 -> 1.寄存器(并列), 2.256位内存(矩阵) -> 小块内存- > 整块内存
- 矩阵压缩了引线的使用量
-
第七集 中央处理器(CPU)
- 负责执行程序
- CPU = ALU + 寄存器(数据寄存器,指令寄存器,指令地址寄存器) + 控制器
- RAM独立于CPU之外,通过读写线,数据线,地址线交互
- 三个时钟周期完成一个指令:取指令 -> 解码(控制器) -> 执行
- 时钟:节奏掌控者。单位:赫兹。超频和降频
-
第八集 指令和程序
- 程序 = 指令的集合
- 硬件基本的指令 ADD JUMP SUB STROE LODA_X ...
- 通过增加寻址到位宽或是可变长的地址来扩展指令集
-
第九集 高级CPU设计(为CPU加速)
- 复杂度 vs 速度
- 早起提升晶体管的开闭速度
- 为特定的指令设计专门的电路:除法,视频解码,图像处理
- 为减少CPU的等待时间,增加了catch,可以将一批ram中的数据读入catch,而不是一个。在程序执行期间可以能修改catch内的数据,这就会造成catch和ram的数据不一致,通过标记dirty bit 来确定哪个位置的数据被修改了。
- cpu增加流水线,使得cpu能够在 取指令 -> 解码 -> 执行 期间不用等待。即执行某一个阶段的同时也在执行其他的阶段。但是弄清楚指令之间的依赖关系(有依赖关系就必须等待),通过动态排序来最小化流水线的停工时间,称之为乱序执行,当遇到跳转语句时要进行分支预测,提前把指令放入流水线。
- 同时执行多条执行 多个ALU -> 多核 -> 多个cpu -> 超级计算机
-
第十集 早期的编程方式
- 最早的编程:纺织机,一张串孔卡片表示不同的图案,可编程纺织机可以根据穿孔卡片来进行纺织。
- 用插线板来存储程序,不同的插线方式表示不同的程序
- 用内存来存储程序,计算机读取打孔卡片上的程序并存进程序。内存比插线板更加易用,体积小,复用性强。
- 用开关来存储程序。不同的开关组合表示不同的指令。
- 早期的编程(1980之前)是一件非常专业的事情,而且很繁琐。
-
-
总结
- 计算机的设计 封装,分层,抽象
- 硬件提供最基本的指令,软件在基本指令的基础上来实现更多的指令,可以将这些指令封装成软件的基本指令。硬件基本指令的多了会让硬件设计变的麻烦,少了一是可能无法通过软件来弥补指令的缺失,二是会让软件的设计变的麻烦。这是一个复杂度 vs 速度的平衡。最优的硬件基本指令集是图灵完备下的最小指令集?
计算机速成课程笔记(一)
猜你喜欢
转载自blog.csdn.net/qq_38043440/article/details/88967481
今日推荐
周排行