1.存储器结构
层次结构是基于局部性原理而构建的, 即程序相邻的代码访问的数据和指令是距离很近的, 这样层次结构才能发挥它的效果, 否则程序就会运行的很慢
寄存器 > L1 Cache > L2 Cache > L3 Cache > 内存 > 硬盘 > 网络
CPU读写内存需要总线的传输
CPU -> 系统总线 -> I/O桥 -> 内存总线 -> 内存.
2.存储技术
- RAM(Random-Access Memory)分为SRAM和DRAM
- SRAM不需要频繁的刷新保持数据
- DRAM需要频繁的刷新才能保持数据, 但是一旦断电, 都会丢失数据
- 磁盘为非易失类型存储
- ROM只读存储器
- PROM只能被编程一次
- EPROM需要光线进行擦除, 可编程1000次
- EEPROM可以直接在印制电路卡上编程, 可编程10^5次,闪存
- I/O设备连接需要I/O总线
- USB通用串行总线
- 显卡
- 主机总线适配器, 用于连接磁盘,如SATA
- 其他设备, 如网卡
3.CPU读取磁盘过程
- CPU发送第一条指令, 告诉磁盘发起一个读, 同时还发送了其他的参数, 例如当读完成, 是否中断CPU
- CPU第二条指令指明要读的逻辑块号
- CPU第三条指令指名存储的主存地址
- CPU发送完指令后就去做别的事情, 磁盘控制器收到CPU指令后, 将逻辑块号翻译成一个扇区地址, 然后将内容直接传送到主存DMA。
- 传送完成后, 磁盘控制器给CPU发送一个中断信号。这会导致CPU暂停工作, 跳转到一个操作系统例程, 这个例程会记录I/O操作已完成, 然后将控制返回到CPU被中断的地方
4.局部性
- 时间局部性: 被引用过一次的内存位置可能在不远的将来再被多次引用.
- 空间局部性: 如果一个内存位置被引用了一次, 那么程序很可能在不远的将来引用附件的一个内存位置.
循环时, 以步长为1的方式引用内存地址, 空间局部性是最好的.