第六章

作者: CSU_IceLee | 来源:发表于2018-11-30 11:37 被阅读7次

随机访问存储器 Random-Access Memory,RAM

  1. 静态RAM(SRAM)
    速度比动态的RAM要快,但是也贵得多,通常作为高速缓存存储器。
    电路类似于下面的图,只有两个状态是稳定的,其他状态都是不稳定的,从不稳定状态开始,电路会迅速地转移到两个稳定状态的其中一个。每位用六晶体管来实现。


    image.png

    SRAM只要有电,就会永远保持它的值,有干扰的电压也不会改变值,干扰消除时,电路就会恢复稳定。

  2. 动态RAM(DRAM)
    DRAM将每个位存储为对一个电容的充电,这个电容非常小,对干扰非常敏感,当电容的电压被扰乱之后,它就无法恢复了。
    很多原因会导致漏电,所以内存系统必须周期性地通过读出,然后重写刷新内存每一位。
    每位一个晶体管。

  3. 传统DRAM
    为了方便寻址,将DRAM芯片中的单元(位)划分为d个超单元,每个超单元都由w个DRAM单元组成。超单元被组织成一个r行c列的长方形阵列,rc = 。每个单元有形如(i,j)的二维地址。
    取值的时候先传送i,再传送j,再通过(i,j)取值。这样可以减少引脚的数量,但是需要加倍的传送时间。
    内部有一个行缓冲区,比如读取(2,1)的时候,会先将2读入内部行缓冲区,再将列1读出发给内存控制器。


    image.png
  4. 内存模块
    将多个DRAM组合成一个内存模块,例如将8个8Mx8的DRAM组成64M的内存模块,8个芯片编号0-7,每个超单元存储主存的一个字节,一个地址(i,j)表示的是64位。内部将64位组合成8字节返回给内存控制器。


    image.png
  5. 非易失性存储器
    断电后仍然可以保存数据的存储器。
    ROM中有的类型既可以读,也可以写,但是被统称为只读存储器(Read-Only Memory)。

  • PROM(Programmable ROM)只能被编程一次。
  • 可擦写可编程ROM(Erasable Programmable ROM,EPROM)可以写入与擦除次数达1000次。
  • 电子可擦除PROM(Electrically Erasable PROM,EEPROM),可以达10^5次编程次数。
  • 闪存(flash memory)是基于EEPROM的存储器
    存储在ROM中的程序称为固件(firmware),当计算机系统通电后机会运行存储器在ROM中的固件。
  1. 访问主存
    数据流通过称为总线(bus)的电路在CPU和DRAM主存之间来来回回。每次传送数据的一系列步骤称为总线事务(bus transaction)。读事务从主存传送数据到CPU。写事务从CPU传送数据到主存。


    image.png

    I/O桥包括内存控制器。
    movq A,%rax的具体过程:


    image.png
    image.png
  1. 旋转磁盘


    image.png

    每个盘片有两面,有磁性记录材料。每个同心圆都是一个磁道(track),每个磁道被划分为一组扇区(sector)。多个半径相等的磁道被称为一个柱面(cylinder)。
    磁盘为了对操作系统隐藏复杂性,将磁盘构造呈现为一个简单的视图,一个B个扇区大小的逻辑块的序列,序号为0,1,...,B-1。磁盘中有一个固件设备,称为磁盘控制器,扶着维护逻辑块号与实际磁盘扇区之间的映射关系,会将逻辑块号翻译成一个(盘面,磁道,扇区)三元组。

局部性(locality)

时间局部性(temporal locality):被引用过一次的内存位置很可能在不远的将来再被多次引用。
空间局部性(spatial locality):如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附件的一个内存位置。
此种程序具有较好的局部性:sum具有时间局部性,a数组具有空间局部性。但是如果将a[i][j]变为 a[j][i]那么空间局部性很可能会降低。


image.png

存储器层次结构

image.png
  1. 缓存
    高速缓存(cache)是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存(caching)。
  • 缓存命中:在第k层的某些块中找到了要访问的第k+1层的数据对象d,就是缓存命中。
  • 缓存不命中:如果第k层中没有数据对象d,就是缓存不命中。此时要从k+1层中取出包含d的那个块,放到第k层中缓存起来,如果缓存已满,则需要一定的替换策略(replacement policy)进行覆盖,例如LRU,最近最少被使用。
  • 缓存不命中的种类
    冲突不命中:一定的放置策略导致无法命中。
    容量不命中:缓存太小。
  1. 高速缓存存储器


    image.png
  2. 有关写的问题
    当更新了缓存的字w,如何写回低一层的副本中呢?

  3. 直写(write-through),立即将w的高速缓存块写回到第一层中。

  4. 写回(write-back),当替换算法要替换这个更新过的块时,才写到第一层中。必须维护一个额外的修改位(dirty bit),表明是否被修改过。

  5. 真实高速缓存层次结构
    真实的高速缓存可以分为i-cache(只保存指令),d-cache(只保存数据),统一高速缓存(都可以保存)


    image.png

相关文章

网友评论

      本文标题:第六章

      本文链接:https://www.haomeiwen.com/subject/iunccqtx.html