计算器硬件结构结构
冯.诺伊曼模型 : 1945年冯诺依曼和其他的计算机科学家提出了计算机的具体实现报告,其遵循了图灵机的设计,提出了用电子原件制造计算机,约定了二进制的存储。
定义了计算机的五个部分: 运算器、控制器、存储器、输入设备、输出设备。我们把这五个部分称为冯诺依曼模型。
运算器控制器在中央处理器中,存储器是我们常见的内存,输入设备输出设备是计算机的外接设备。
存储器和输入输出设备的数据传输要依赖总线。
在这里总线分为三种:
- 地址总线 用于指定cpu中要操作的内存地址
- 数据总线 用于读写内存的数据
- 控制总线 用于发送和接受信号。
CPU缓存一致性
写直达
保持内存与 Cache 一致性最简单的方式是,把数据同时写入内存和 Cache 中,这种方法称为写直达
写回
既然写直达由于每次写操作都会把数据写回到内存,而导致影响性能,于是为了要减少数据写回内存的频率,就出现了写回(Write Back)的方法。
在写回机制中,当发生写操作时,新的数据仅仅被写入 Cache Block 里,只有当修改过的 Cache Block「被替换」时才需要写到内存中,减少了数据写回内存的频率,这样便可以提高系统的性能。
具体操作
- 如果当发生写操作时,数据已经在 CPU Cache 里的话,则把数据更新到 CPU Cache 里,同时标记 CPU Cache 里的这个 Cache Block 为脏(Dirty)的,这个脏的标记代表这个时候,我们 CPU Cache 里面的这个 Cache Block 的数据和内存是不一致的,这种情况是不用把数据写到内存里的;
- 如果当发生写操作时,数据所对应的 Cache Block 里存放的是「别的内存地址的数据」的话,就要检查这个 Cache Block 里的数据有没有被标记为脏的,如果是脏的话,我们就要把这个 Cache Block 里的数据写回到内存,然后再把当前要写入的数据,先从内存读入到 Cache Block 里(注意,这一步不是没用的,具体为什么要这一步,可以看这个「回答 (opens new window)」),然后再写入的数据写入到 Cache Block,最后也把它标记为脏的;如果 Cache Block 里面的数据没有被标记为脏,则就直接将数据写入到这个 Cache Block 里,然后再把这个 Cache Block 标记为脏的就好了。