计算机组成原理:深入理解计算机的组成,冯诺依曼体系结构,CPU设计原理,指令系统,总线,存储器等部件的工作原理。

创建时间:2019-6-15 11:29:19
更新时间:2020-1-15 22:21:01 【更新原因】:复习回顾

开篇词|为什么要学习计算机组成原理

如果越早去弄清楚计算机的底层原理,在你的知识体系中储蓄起这些知识,也就意味着你有越长的时间来收获学习知识的利息。虽然一开始可能不起眼,但是随着带来的复利效应,你的长线投资项目,就能让你在成长的过程中越走越快。

:::info 我为什么要学习计算机组成原理。

大概是被极客时间的宣传营销策略套路到了吧,拿捏住了我的软肋,想要弥补羸弱的计算机基础知识。
计算机专业的那些基础课我感觉都是相通的,相互依赖,完全可以合在一起去理解,去系统性的学习。记得计算机网络教科书的序言上有讲到一种学习螺旋上升模型。

人类对于新知识和新技术的学习和认知过程总是螺旋上升的,对某个复杂的事务不可能立即就全面理解。相反,对任何复杂的事务必须从各个不同的角度(总体和细节)进行学习,并随时温习以前学习过的内容,而每一次螺旋上升的过程都会有新的收获,

顿悟:温习?这个环节貌似丢失掉了 ,口号喊的响,却很少做到呀。
后面要怎么做:学习笔记要认真,保证质量,回顾要有记录,很多时候都忘了去回顾,最后什么都忘了。

个人学习目标:把专栏快速过一遍,做到心中有数,对感兴趣的地方深入了解下,不过分深入学习。 :::

买书如山倒,读书如抽丝。

感同身受,买了很多书,真正读的却是屈指可数。原因是什么呢,没有时间吗?不是,坚持不下去吗?也不全是。

人生如逆旅,我亦是行人。

做好心理准备,把学习这件事情做成!

阅读评论收获:

  1. 操作系统和硬件之间还有一层指令集

01|冯诺依曼体系结构

计算机的基本硬件组成

主板,CPU,内存,硬盘,总线,芯片组,I/O设备,散热

冯诺依曼体系结构

存储程序计算机,可编程,存储。
典型的冯诺依曼计算机是以运算器为中心的;
现代的计算机已经转化为一存储器为核心;

任何一台计算机的任何一个部件都可以归到运算器、控制器、存储器、输入设备和输出设备中,而所有的现代计算机也都是基于这个基础架构来设计开发的。

image.png

可计算性理论

延伸学习;暂时不深入探讨;

02|知识地图

  • 计算机的基本组成
  • 计算机的指令和计算
  • CPU的设计
  • 存储器的原理

浮点数 Floating point is very important

学习方法论

  1. 学会提问自己来串联知识点
  2. 动手编写示例程序验证知识点
  3. 通过和计算机硬件发展的历史做对照

松鼠症患者

光囤积材料,却没有花足够多的时间去学习这些知识。
勤学如春起之苗,不见其长,日有所增。
辍学如磨刀之石,不见其损,日有所亏。

学习,要有节奏的坚持。

03|CPU主频与“性能”

响应时间 response time /执行时间 execution time
吞吐率 throughput / 带宽 bandwidth

性能 = 1/响应时间

CPU时钟

CPU主频 frequency/clock rate,晶振,晶体振荡器 oscillator crystal
粗浅的理解:CPU在1秒时间内,可以执行的简单指令的数量是2.8G

程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time

减少后面三个乘法因子的值,提升性能。
现代的CPU通过流水线技术 pipeline ,让一条指令需要的CPU Cycle尽可能减少

04|提升性能

为什么多放晶体管,可以提升CPU的时钟频率?

增加晶体管可以增加硬件能够支持的指令数量,增加数字通路的位数,以及利用好电路天然的并行性,从硬件层面更快地实现特定的指令,所以增加晶体管也是常见的提升cpu性能的一种手段。

制程 ,晶体管大小
功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量

阿姆达尔定律:
优化后的执行时间 = 受优化影响的执行时间/加速倍数 + 不受影响的执行时间

性能提升办法:

  1. 加速大概率事件
  2. 通过流水线提高性能
  3. 通过预测提高性能