这两周业余时间复习了一遍计算机组成原理,做个记录。
冯诺依曼体系结构
- 以运算单元为中心
- 采用存储程序原理
- 数据以二进制编码
- 存储器是按地址访问、线性编址的空间
- 控制流由指令流产生
- 指令由操作码和地址码组成
从冯诺依曼体系结构中,可以看到冯诺依曼的设计目标是通用计算机:
- 明确了以运算为核心,即将数据按照一定程序顺序操作
- 程序和要操作的数据一样,都放在存储器里,这样对于运算模块,所有的操作都被抽象成统一的格式:操作码+地址码
- 使用二进制编码,将电路单元复杂度降到最低,前期可以提高稳定性,后期可以方便性能优化
大家心里都明白,既然要设计通用计算机,在获得通用的便利的同时,必然要付出一定的代价:
- 运算单元为核心,虽然简化了体系复杂度,但运算单元要做很多事情,无法兼顾
- 二进制顺序执行,极大简化的硬件设备的设计复杂度,却降低了运算单元的利用率
- 指令被抽象成操作码和地址码,每个指令的执行都必须要经历取指、译码、取数、执行操作,运算的成本变高
至此,计算机组成原理,就是在冯诺依曼体系结构的指导下,在实现计算机的过程中,硬件的发展加持人类无限的欲望,人们总是希望用现有的设备完成更多的事情。随着运算单元即CPU的性能与其他组件(数据传输、数据存储)的性能差距越来越大,开发出各种各样的技术以提高 CPU 使用率。大致分两个方向:指令运算优化和数据高效获取。