1. 如何给CPU提升性能?
- 早期计算机的提速方式是减少晶体管的切换时间,晶体管组成了逻辑门,ALU以及其他组件。但这种提速方法最终会碰到瓶颈。
- 现代CPU直接在硬件层面设计了除法可以直接给ALU除法指令,但这让ALU更大也更复杂一些。现代处理器有专门电路来处理图形操作解码压缩视频加密文档等等。
2. 如何快速传递数据给CPU?
- 就像有强大的蒸汽机但无法快速加煤,RAM成了瓶颈。
2.1 RAM
- RAM还需要时间找地址取数据,配置,输出数据,一条从内存读数据的指令可能要多个时钟周期。解决延迟的方法之一是给CPU加一点RAM叫"缓存"
- 缓存提高了速度,CPU从RAM拿数据时RAM不用传一个,可以传一批,虽然花的时间久一点,但数据可以存在缓存。
2.2 脏位
- 缓存和RAM不一致时,这种不一致必须记录下来,之后要同步,因此缓存里每块空间有一个特殊标记,叫"脏位"。
- 同步一般发生在当缓存满了而CPU又要缓存时,在清理缓存腾出空间之前,会先检查"脏位"。如果是"脏"的在加载新内容之前会把数据写回RAM,另一种提升性能的方法叫"指令流水线"。
2.3 指令流水线
- 取指→解码→执行三个步骤可以并行处理,这样的流水线每个时钟周期执行1个指令,是原来处理速度的三倍。
- 由于指令之间具有依赖关系,所以有三种方法来解决这个问题,分别是乱序执行,推测执行和分支预测。
3.如何同时执行多条指令?
- 一个CPU芯片里,有多个独立处理单元。但因为它们整合紧密,可以共享一些资源,比如缓存。使得多核可以合作运算。