1.存储器结构

层次结构是基于局部性原理而构建的, 即程序相邻的代码访问的数据和指令是距离很近的, 这样层次结构才能发挥它的效果, 否则程序就会运行的很慢

寄存器 > L1 Cache > L2 Cache > L3 Cache > 内存 > 硬盘 > 网络

CPU读写内存需要总线的传输

CPU -> 系统总线 -> I/O桥 -> 内存总线 -> 内存.

2.存储技术

  • RAM(Random-Access Memory)分为SRAM和DRAM
  1. SRAM不需要频繁的刷新保持数据
  2. DRAM需要频繁的刷新才能保持数据, 但是一旦断电, 都会丢失数据
  • 磁盘为非易失类型存储
  1. ROM只读存储器
  2. PROM只能被编程一次
  3. EPROM需要光线进行擦除, 可编程1000次
  4. EEPROM可以直接在印制电路卡上编程, 可编程10^5次,闪存
  • I/O设备连接需要I/O总线
  1. USB通用串行总线
  2. 显卡
  3. 主机总线适配器, 用于连接磁盘,如SATA
  4. 其他设备, 如网卡

3.CPU读取磁盘过程

  1. CPU发送第一条指令, 告诉磁盘发起一个读, 同时还发送了其他的参数, 例如当读完成, 是否中断CPU
  2. CPU第二条指令指明要读的逻辑块号
  3. CPU第三条指令指名存储的主存地址
  4. CPU发送完指令后就去做别的事情, 磁盘控制器收到CPU指令后, 将逻辑块号翻译成一个扇区地址, 然后将内容直接传送到主存DMA。
  5. 传送完成后, 磁盘控制器给CPU发送一个中断信号。这会导致CPU暂停工作, 跳转到一个操作系统例程, 这个例程会记录I/O操作已完成, 然后将控制返回到CPU被中断的地方

4.局部性

  • 时间局部性: 被引用过一次的内存位置可能在不远的将来再被多次引用.
  • 空间局部性: 如果一个内存位置被引用了一次, 那么程序很可能在不远的将来引用附件的一个内存位置.

循环时, 以步长为1的方式引用内存地址, 空间局部性是最好的.