博客
关于我
计算机体系结构 第7章 存储系统(1)
阅读量:207 次
发布时间:2019-02-28

本文共 3046 字,大约阅读时间需要 10 分钟。

文章目录

第7章 存储系统

7.1 存储系统的基本知识

7.1.1 存储系统的层次结构

计算机系统结构设计中关键的问题之一 :

  • 如何以合理的价格,设计容量和速度都满足计算机系统要求的存储器系统?

要求:容量大、速度快、价格低

解决方法:采用多种存储器技术,构成多级存储层次结构。

  1. 程序访问的局部性原理

    对于绝大多数程序来说,程序所访问的指令和数据在地址上不是均匀分布的,而是相对簇聚的。

    程序访问的局部性包含两个方面 :

    • 时间局部性:程序马上将要用到的信息很可能就是现在正在使用的信息。
    • 空间局部性:程序马上将要用到的信息很可能与现在正在使用的信息在存储空间上是相邻的。
  2. 存储系统的多级层次结构

多级存储层次

假设第 i i i个存储器 M i M_{i} Mi的访问时间为 T i T_{i} Ti,容量为 S i S_{i} Si,平均每位价格为 C i C_{i} Ci

整个存储系统要达到的目标

  • 从CPU来看,该存储系统的速度接近于 M 1 M_{1} M1的,而容量和每位价格都接近于 M n M_{n} Mn的。
  • 存储器越靠近CPU,则CPU对它的访问频度越高,而且最好大多数的访问都能在 M 1 M_{1} M1完成。

7.1.2 存储层次的性能参数

出于讨论方便,仅考虑两级存储层次 M 1 M_{1} M1 M 2 M_{2} M2

  • M 1 M_{1} M1的参数: S 1 S_{1} S1 T 1 T_{1} T1 C 1 C_{1} C1
  • M 2 M_{2} M2的参数: S 2 S_{2} S2 T 2 T_{2} T2 C 2 C_{2} C2
  1. 存储容量S

    一般来说,整个存储系统的容量即是第二级存储器 M 2 M_{2} M2的容量,即 S = S 2 S = S_{2} S=S2

  2. 每位价格C

C = C 1 S 1 + C 2 S 2 S 1 + S 2 当 S 1 < < S 2 时 , C ≈ C 2 C = \frac{C_{1}S_{1} + C_{2}S_{2}}{S_{1} + S_{2}}\\ \text{当} S_{1} << S_{2} \text{时}, C \approx C_{2} C=S1+S2C1S1+C2S2S1<<S2CC2

  1. 命中率H和不命中率F

    命中率:CPU访问存储系统时,在 M 1 M_{1} M1中找到所需信息的概率。

    H = N 1 N 1 + N 2 H = \frac{N_{1}}{N_{1} + N_{2}} H=N1+N2N1
    其中:

    • N 1 N_{1} N1 ── 访问 M 1 M_{1} M1的次数
    • N 2 N_{2} N2 ── 访问 M 2 M_{2} M2的次数

    不命中率 F = 1 - H F=1-H F1H

  2. 平均访问时间 T A T_{A} TA

    T A = H T 1 + ( 1 - H ) ( T 1 + T M ) = T 1 + ( 1 - H ) T M = h 1 t 1 + ( 1 − h 1 ) h 2 t 2 + ( 1 − h 1 ) ( 1 − h 2 ) h 3 t 3 . . . . \begin{aligned} T_{A} &= HT_{1}+(1-H)(T_{1}+T_{M}) \\ &= T_{1}+(1-H)T_{M} \\ &= h_{1}t_{1}+(1-h_{1})h_{2}t_{2}+(1-h_{1})(1-h_{2})h_{3}t_{3} .... \end{aligned} TA=HT1(1H)(T1TM)=T1(1H)TM=h1t1+(1h1)h2t2+(1h1)1h2)h3t3....
    分两种情况来考虑CPU的一次访存:

    • 当命中时,访问时间即为 T 1 T_{1} T1命中时间
    • 当不命中时,情况比较复杂。

    T 2 + T B + T 1   =   T 1 + T M T M = T 2 + T B \begin{aligned} T_{2}+T_{B}+T_{1}\ &=\ T_{1}+T_{M} \\ T_{M} &= T_{2} + T_{B} \end{aligned} T2TBT1 TM T1TM=T2+TB

    其中:

    • T M T_{M} TM不命中开销,从向 M 2 M_{2} M2发出访问请求到把整个数据块调入 M 1 M_{1} M1中所需的时间。
    • T B T_{B} TB:传送一个信息块所需的时间。

例题 存储器层次结构的设计

存储系统参数表如下:

存储器层次 存取时间 容量 成本/KB
高速缓存 t 1 = 25 n s t_{1} = 25ns t1=25ns s 1 = 512 K B s_{1} = 512KB s1=512KB $c_{1} = $1.25$
主存 t 1 t_{1} t1未知 s 1 = 32 M B s_{1} = 32MB s1=32MB $c_{2} = $0.2$
磁盘阵列 t 3 = 4 n s t_{3} = 4ns t3=4ns s 3 s_{3} s3未知 $c_{3} = $0.0002$

利用下列存储器特性来设计一个3层的层次结构存储器。设计目标是使 T e f f = 10.04 μ s T_{eff} =10.04μs Teff=10.04μs,而高速缓存命中率 h 1 = 0.98 h_{1}=0.98 h1=0.98,主存命中率 h 2 = 0.9 h_{2}=0.9 h2=0.9。同时,存储器总成本上限是$15,000。

解:

总成本为 C = c 1 s 1 + c 2 s 2 + c 3 s 3 < 15 , 000 C = c_{1}s_{1}+c_{2}s_{2}+c_{3}s_{3} < 15,000 C=c1s1+c2s2+c3s3<15,000

  • 由上参数可得在不超过预算的前提下,磁盘的最大容量为 s 3 = 39.8 G B s_{3} = 39.8GB s3=39.8GB

T e f f = h 1 t 1 + ( 1 − h 1 ) h 2 t 2 + ( 1 − h 1 ) ( 1 − h 2 ) h 3 t 3 T_{eff} = h_{1}t_{1}+(1-h_{1})h_{2}t_{2}+(1-h_{1})(1-h_{2})h_{3}t_{3} Teff=h1t1+(1h1)h2t2+(1h1)1h2)h3t3

  • 代入已知量,可以求出:主存存取时间为 t 2 = 903 n s t_{2} = 903ns t2=903ns

7.1.3 三级存储系统

可以看成是由“Cache—主存”层次和“主存—辅存”层次构成的系统。

三级存储系统

  • Cache(高速缓冲存储器)
  • 主存储器
  • 磁盘存储器(辅存)

三级存储系统的作用

  • 从主存的角度来看
    • “Cache-主存”层次:弥补主存速度的不足
    • “主存-辅存”层次: 弥补主存容量的不足

“Cache-主存”与“主存-辅存”层次的区别

层次的区别

7.1.4 存储层次的四个问题

  • 映象规则:当把一个块调入高一层(靠近CPU)存储器时,可以放在哪些位置上?
  • 查找算法:当所要访问的块在高一层存储器中时,如何找到该块?
  • 替换算法:当发生不命中时,应替换哪一块?
  • 写策略:当进行写访问时,应进行哪些操作?

转载地址:http://ugri.baihongyu.com/

你可能感兴趣的文章
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>