计算机系统是分层方式的。这样每一层只需要关注下一层提供的接口和逻辑,不需要管下一层是如何实现的。比如当机器语言改变时,只要其提供的接口不变,那么操作系统就可以直接复用,显著降低了工作量。在此基础上,不同的人员可以同时去完成不同的工作,互不干扰。
比如说早期的机器语言并不支持乘法,这样编译器就只能通过循环加法去实现。随着技术的发展,有些任务也开始重新分配,比如说把网络协议栈从操作系统卸载到硬件网卡。
我们的目的是通过数字逻辑电路技术,搭建出实际机器,也就是能执行机器指令的物理硬件。
冯·诺依曼机
1. 数据的存储与表示
1.1 构造加法器
一个加法单元会接收 ,但是发现这样不能并行处理进位。
进位 ,其中 称为本位进位生成函数, 称为进位传递函数。
我们把进位函数带入进去,就可以做到并行,或者叫做超前进位。但随着加法器字长的增加,导致 涵盖的逻辑项越来越多。于是采用分组进位,组间进位只和每组的最高进位有关。
注意逻辑门是有延迟的,因此芯片的时钟频率必须大于最长路径上的门延迟总和。
1.2 定点数乘法与乘法器设计
1.6 浮点数
一般采用 IEEE 754 标准,分为符号位 S、指数位 E 和尾数位 F,有:
其中 。
- 规格化数(Normalized Numbers):指数不全为 也不全为 。
- 非规格化数(Subnormal Numbers):指数位全为 ,但是尾数位不为 ,此时变为 ,因此此时 。
- 无穷大:指数位全为 ,尾数位全为 。
- 非数值(NaN):指数位全为 ,尾数为不为 。符号位不限制。
- 零:指数位和尾数为全为 。
无效运算会得到 NaN,除以零和溢出会得到无穷。