计算机组成与设计---硬件/软件接口---大容量和高速度:开发存储器层次结构

Posted FANCY PANDA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机组成与设计---硬件/软件接口---大容量和高速度:开发存储器层次结构相关的知识,希望对你有一定的参考价值。

5.1存储器技术

静态存储器 (SRAM)

  • 存取数据时间0.5ns – 2.5ns,
  • 价格: $2000 – $5000 per GB

动态存储器 (DRAM)

  • 存取数据时间50ns – 70ns,
  • 价格: $20 – $75 per GB

磁盘:

  • 存取数据时间 5ms – 20ms,
  • 价格:$0.20 – $2 per GB

5.1.1 SRAM技术

基本存储元

  • 由6只MOS管组成
  • 具有两个稳态
  • 1—— T1止, A高,T2通,B低,T1止。
  • 0——T2止,B高,T1通,A低,T2止。
  • 在加电情况下,数据才能保存/读/写,掉电后信息全部丢失。

5.1.2 DRAM技术

单管动态存储元

  • 电容器C有电荷,为逻辑“l”,无电荷时,为逻辑“0”
  • 由于电容器存在漏电,导致电荷流失,信息也就丢失
  • 解决的办法是刷新,即每隔一定时间(一般2ms)就要刷新一次

5.1.3 磁表面存储器

硬盘控制器HDC(适配卡)、连接电缆
硬盘驱动器

  • 盘片:多个盘片构成盘片组,每个盘片两个记录面
  • 磁头
    • 固定磁头:每磁道一个磁头,速度快,集成度低
    • 活动磁头:每个盘面一个磁头,需径向寻道

主轴电机:盘片旋转驱动机构

  • 磁头定位机构:寻道和磁头归位
  • 步进电机定位和音圈电机定位
  • 读写电路和控制逻辑

5.1.4存储系统分级结构

三级存储系统

  • Cache——主存层次
  • 主存——外存层次

局部性原理:在任意时刻,程序访问的只是地址空间相对较小的一部分内容

  • 时间局部性
  • 空间局部性

存储器层次结构

  • 块(也称行): 存储信息的最小单元,可以是多个字
  • 如果处理器需要的数据存放在高层存储器的某个块中
    • 命中: 在高层存储器中找到目标数据
    • 命中率: 命中次数/全部访问次数
  • 如果数据不在高层存储器
    • 缺失:从低层存储器拷贝包含所需数据的块
    • 缺失代价:将相应块从低层存储器替换到高层存储器所需要的时间
    • 缺失率: 缺失次数/全部访问次数= 1 – 命中率
      然后再从高层存储器访问数据

利用局部性原理

  • 可以把存储器组织成层次结构
  • 所有的数据都存储在磁盘上
  • 把最近被访问的(或即将被)的数据从磁盘拷贝到容量较小的DRAM存储器
    • 主存储器
  • 把最近经常被(即将被)访问的数据拷贝到更小的SRAM存储器(cache)
    • Cache隶属于CPU

5.2 cache的基本原理

Cache—memory:在存储层次中最靠近CPU
主存与Cache的地址映射

  • 全相联映射
  • 直接映射
  • 组相联映射

5.2.1 cache缺失处理

  • Cache命中时,CPU继续使用该数据,就像什么都有发生过
  • Cache缺失时
    • 引起CPU流水线阻塞
    • 从下一个存储层次读取数据块
    • 如果指令cache缺失
    • 重新取指,此时该指令在cache中
    • 如果数据cache缺失
    • 完成数据操作,此时数据在cahche中

5.2.2写操作处理

写直达

  • 数据写命中,可以只更新Cache中的块
    • 但这样会导致Cache和主存不一致
  • 写直达:将数据同时写入主存
  • 但这样会使写时间更长
  • e.g., 没有缺失情况,基本的CPI = 1, 10% 的指令是store指令,每次写到内存需要100个时钟周期,
    ·有效的 CPI = 1 + 0.1×100 = 11
  • 解决方法:写缓冲
    • 数据被放入写缓冲等待写存储器操作完成,之后释放写缓冲
    • CPU立即继续执行其他指令
    • 仅当缓冲区满时产生写阻塞

写回法

  • 另一种方式:当数据写命中,仅仅更新cache中的块
    • 记录每一块是否被“修改”过
  • 仅当一个修改过的块被替换时
    • 才写回到较低层的存储结构中(主存)
    • 当缺失替换一个被修改的块时,可先写入写缓冲区,同时从主存读出所需要的数据块,允许先读缓冲区中将替换的块,然后再将数据写回主存。

写分配

  • cache写缺失时
  • 写直达的策略
    • 缺失时写分配:重新从内存取数据块
    • 相似的写策略:写不分配,不从内存取块
    • 既然程序在读一个块之前通常要写整个块 (e.g., 初始化)
  • 写回法的策略
    • 通常要把这个块从内存取回到cache

5.3可信存储器层次

5.3.1 失效的定义

1)服务实现:交付的服务与需求相符
2)服务中断:交付的服务与需求不符

失效导致状态1到状态2的转换,而由状态2转换到状态1的过程称为恢复
失效可以是永久性的,也可以是间歇性的
间歇性失效更加复杂一些,因为当一个系统因间歇性失效在两个状态间摇摆时,诊断将会非常困难。而永久性失效的诊断要容易许多。
这种定义将引出两个术语:可靠性和可用性
可靠性是一个系统或模块能够持续提供用户需求的服务的度量,即从开始使用到失效的时间间隔
平均无故障时间(mean time to failure,MTTF):是一个可靠性度量方法
年失效率(annual failure rate,AFR):它是指在给定MTTF 情况下,在一年内预期的器件失效比例
提高系统的MTTF:
1)故障避免技术(fault avoidance):通过合理构建系统来避免故障的出现
2)故障容忍技术(fault tolerance):采用冗余措施,当发生故障时,通过冗余措施保证系充仍然正常工作
3)故障预报技术(fault forecasting):对故障进行预测,从而允许在器件失效前进行替换

5.4虚拟存储器

虚拟存储系统:建立在内存——外存层次上的,需要辅助硬软件的支持,将内存与外存空间统一编址形成一个庞大的存储空间,用户可在这个虚拟的庞大空间里编程,而不必考虑实际内存的大小
虚拟地址(逻辑地址):用户编程时使用的地址,在程序真正执行时,在辅助软硬件支持下,虚拟地址将映射为内存的物理地址。
实际地址(物理地址):内存的实际的地址编号

5.4.1页的存放和查找

内存空间和虚存空间划分成若干个大小相等 的页
设置地址变换机构——页表

  • 页表由多个页表项构成。
  • 每个页表项包含实页号、装入位等

5.4.2缺页故障

缺页时,页必须从磁盘被取回来

  • 花费数百万个时钟周期

  • 由OS处理
    尽量减小缺页率

  • 全相联替换算法

  • 更先进灵活的替换算法
    页表

  • 存储位置信息

    • 页表项的数组,可以通过虚页号检索
    • CPU中页表寄存器存放页表在内存的首地址
  • 如果页在存储器中

    • 页表项PTE存储物理页号
    • 加上其他的状态位(引用位ref,修改dirty,…)
  • 如果页不在内存

    • PTE可以到磁盘交换空间查找

使用页表进行地址转换
页表将虚页映射到主存或磁盘

5.4.3关于写

为减少缺页故障率,最好选择LRU替换算法

  • 访问页面时,PTE中的引用位(也称使用位)置位
  • OS定期将引用位清零
  • 当引用位=0时,表明该页最近没被使用
    磁盘写操作需要花费数百万个时钟周期
  • 可以写页,但不是独立的位置
  • 写直达是不可行的
  • 使用写回机制
  • 当页中任何字被写时,都将PTE中的重写位(Dirty bit)置位

5.5.4加快地址转换:TLB.

地址转换可能需要额外的内存访问

  • 一次访问页表项,获取物理地址
  • 另一次访问存储器读取数据
    但页表访问具有很好的局部性
  • 因此可以使用CPU内部的页表项(快速Cache)
  • 称之为旁路转换缓冲 (TLB),即快表。
  • TLB典型值: 16–512项, 0.5–1 时钟周期的命中时间, 10–100 时钟周期的缺失代价, 0.01%–1% 缺失率
  • 缺失可以被硬件或软件处理

5.4.5集成虚拟存储器、TLB.和cache

如果 cache 标记使用了物理地址

  • 需在cache查找前转换

替换方法:使用虚地址标

  • 别名将增加复杂性
    • 不同的虚拟地址共享主存的同一页

5.4.6虚拟存储器中的保护

  • 多个进程可以共享他们的虚地址空间
    • 但需要保护不被破坏
    • 需要操作系统协助
  • 硬件支持操作系统保护
    • 特权管理模式 (也称核模式,管态)
    • 特权指令
    • 页表和其他状态信息只能在管理模式访问
    • 系统调用异常处理程序 (e.g., syscall in MIPS)

存储器的层次结构

  • 结构中所有的存储层次具有相同访问原则
    • 基于cache的概念
  • 在层次结构的每一级别
    • 块位置
    • 查找块
    • 访问缺失的替换算法
    • 写策略

块位置
由相联性决定

  • 直接映射 (1路组相联)
    • 只有一种选择
  • n路组相联
    • 在一组中有n个选择
  • 全相联
    • 任意位置

高相联度能降低缺失率

  • 增加了复杂度、开销和访问时间

查找块

  • 硬件caches
    • 通过减少比较次数来降低开销
  • 虚拟存储器
    • 独立查找表使得全相联成为可能
    • 有益于降低缺失率

访问缺失的替换算法

  • 在缺失时选择要替换的项
    • 最近最少使用算法 Least recently used (LRU)
    • 复杂度高,硬件开销大,适用于高关联度
  • 随机法
    • 性能接近LRU
  • 虚拟存储器
    • 需要硬件支持的近似LRU算法

写策略

  • 写直达

    • 同时更新顶层和底层的块
    • 替换方法简单,但需要写缓冲区
  • 写回法

    • 仅更新顶层的块
    • 当块被替换时更新低一层的块
    • 需要保存更多的状态
  • 虚拟存储器

    • 由于磁盘的写延迟较长,仅写回法适用

缺失类型

  • 强制缺失 (也称冷启动缺失)
    • 第一次访问块产生的缺失
  • 容量缺失
    • 由于cache的容量有限
    • 一个刚替换出的块随后又被访问而调入
  • 冲突缺失 (也叫碰撞缺失)
    • 在非全相联的cache中发生
    • 由于竞争组中的一个项而产生
    • 在相同容量的全相联cache中将不会发生

5.4.7处理TLB缺失和缺页

TLB 缺失

  • 如果页在主存储器
    • 将页表的转换信息装载到PTE,然后重新访问
    • 可以由硬件处理
    • 可以从较为繁杂的页表中得到复杂的信息
    • 或者用软件处理
    • 产生一个特殊的异常,用优化的处理程序来处理。
  • 如果页不在内存储器(缺页)
    • 操作系统处理程序从磁盘上读取该页并更新页表
    • 然后重新启动被中断的指令

TLB 缺失处理

  • TLB 缺失指要访问的页
    • 在页表中,但不在TLB的页表项中
    • 不在页表中
  • 在目标寄存器被重写前,必须知道TLB缺失
    • 产生异常
  • 处理程序从主存页表中拷贝信息填到TLB中
    • 然后重启指令
    • 如果访问的页不在主存,将发生页缺失

页式虚拟存储器

  • 页表的改进——快表
    快速小容量的存储器
    保存当前最常用的页表项
    是慢表的副本
  • 页表虚拟存储的特点
    页大小相等,地址变换简单
    存在页零头
    页的划分不具有逻辑性,程序处理复杂


缺页处理

  • 用缺失页的虚地址查页表,找到页表项
  • 在磁盘上定位页
  • 选择要替换的页
    • 如果被重写过,先写回磁盘
  • 把页读到内存并更新页表
  • 使进程又成为可运行状态
    • 从故障指令处重新开始

计算机组成与设计—硬件/软件接口—计算机概要与技术
计算机组成与设计—硬件/软件接口—指令: 计算机的语言
计算机组成与设计—硬件/软件接口—计算机的算术运算
计算机组成与设计—硬件/软件接口—处理器
存储器之主存–Cache–辅存大全

以上是关于计算机组成与设计---硬件/软件接口---大容量和高速度:开发存储器层次结构的主要内容,如果未能解决你的问题,请参考以下文章

计算机组成与设计---硬件/软件接口---大容量和高速度:开发存储器层次结构

计算机组成与设计---硬件/软件接口---大容量和高速度:开发存储器层次结构

计算机组成与设计---硬件/软件接口---计算机概要与技术

计算机组成与设计---硬件/软件接口---计算机概要与技术

计算机组成与设计:硬件/软件接口的目录

学习笔记----计算机组成与设计:硬件软件接口