计算机组成-4.存储结构

237 阅读4分钟

CPU 通用寄存器 Byte量级

SRAM 高速缓存 KB~MB量级

  • 存储单元
    • 双稳态触发器
  • 优点
    • ◦ 速度较快
  • 缺点
    • ◦ 集成度低 ◦ 功耗较高 ◦ 价格较高
  • 设计
    • 平均访存时间Average Memory Access Time = Hit Time + Miss Penalty×Miss Rate
    • Cache失效原因
      • 义务失效(Compulsory Miss)
        • 第一次访问某一数据块◦ 也称为冷启失效(Cold Start Miss)
      • 容量失效(Capacity Miss)
        • ◦ Cache无法保存程序访问所需的所有数据块
      • 冲突失效(Conflict Miss)
        • ◦ 多个存储器位置映射到同一Cache位置
    • Cache的映射策略
      • 直接映射Cache
      • 二路组相联Cache
      • 四路组相联Cache
    • Cache替换算法
      • 随机(Random)
      • 轮转(Round-Robin)
      • 最近最少使用(LRU)
    • Core i7的多级高速缓存
  • 高速缓存的 工作原理
    • 程序的局部性原理
      • 时间局部性(Temporal Locality)
        • ◦ 最近被访问的存储器单元(指令或数据)很快还会被访问
      • 空间局部性(Spatial Locality)
        • ◦ 正在被访问的存储器单元附近的单元很快会被访问
    • Cache的基本原理
      • Cache对空间局部性的利用
        • ◦ 从主存中取回待访问数据时,会同时取回与位置相邻的主存单元的数据
        • ◦ 以数据块(Block)为单位和主存进行数据交换
      • Cache对时间局部性的利用
        • ◦ 保存近期频繁被访问的主存单元的数据

DRAM 主存 MB~GB量级

  • 存储单元
    • 电容
  • 优点
    • ◦ 集成度高 ◦ 功耗较低 ◦ 价格较低
  • 缺点
    • ◦ 速度较慢 ◦ 定时刷新
  • SDRAM内存的访问过程
    • 1、Bus Request
    • 2、Precharge and Row Access
    • 3、Column Access
    • 4、Bus Transmission
  • SDRAM的关键性能参数
    • tRCD: Row to Column Delay, 从行选到列选的延迟时间
      • ◦ PC133标准:23个时钟周期,约1523ns
    • CL: CAS Latency, 从列选到数据输出的延迟周期数
      • ◦ PC133标准:23个时钟周期,约1523ns
    • tRP: RAS Precharge, 行预充电(关闭行)的延迟时间
      • ◦ PC133标准:23个时钟周期,约1523ns
  • 主存技术的发展
    • SDRAM,又称SDR SDRAM
    • DDR SDRAM,又称DDR1 SDRAM
      • DDR:Double Data Rate
    • DDR2 SDRAM
    • DDR3 SDRAM
    • DDR4 SDRAM

Disk 本地二级存储 GB~TB量级

附录

cache工作原理

Cache缓存最近访问过的内存数据,由于Cache的访问速度是内存的几十倍,所以有效利用Cache可以大大提高计算机的整体性能。 一级Cache是这样工作的:

  • CPU执行单元要访问内存时首先发出VA,Cache利用VA查找相应的数据有没有被缓存
  • 如果Cache中有就不需要访问物理内存了: 如果是读操作就直接将Cache中的数据传给CPU寄存器 如果是写操作就直接改写到Cache中;
  • 如果Cache没有缓存该数据,就去物理内存中取数据,但并不是要哪个字节就取哪个字节,而是把相邻的几十个字节都取上来缓存着,以备下次用到,这称为一个Cache Line,典型的Cache Line大小是32~256字节。如果计算机还配置了二级缓存,则在访问物理内存之前先用PA去二级缓存中查找。一级缓存是用VA寻址的,二级缓存是用PA寻址的,这是它们的区别。Cache所做的工作是由硬件自动完成的,而不是像寄存器一样由指令决定先做什么后做什么。

cache局部性原理

Cache从内存取数据时会预取一个Cache Line缓存起来,操作系统从硬盘读数据时会预读几个页面缓存起来,都是希望这些数据以后会被程序访问到。 大多数程序的行为都具有局部性(Locality)的特点:它们会花费大量的时间反复执行一小段代码(例如循环),或者反复访问一个很小的地址范围中的数据(例如访问一个数组)。 所以预读缓存的办法是很有效的:CPU取一条指令,我把和它相邻的指令也都缓存起来,CPU很可能马上就会取到;CPU访问一个数据,我把和它相邻的数据也都缓存起来,CPU很可能马上就会访问到。 设想有两台计算机,一台有256KB的Cache,另一台没有Cache,两台计算机的内存都是512MB的,硬盘都是100GB的,虽然多出来256KB的Cache与内存、硬盘的容量相比微不足道,但访问Cache比访问内存、硬盘快几个数量级,由于局部性原理,CPU大部分时间是在和Cache打交道,有Cache的计算机明显会快很多。高速存储器的容量只能做得很小,却能显著提升计算机的性能,这就是Memory Hierarchy的意义所在。

注意:内存cache与操作系统磁盘读写page cache概念区别开