计算机组成原理与汇编语言(四)

计算机组成原理与汇编语言(四)


承接上文,计算机组成原理与汇编语言(三)

存储器的层次结构

1.存储技术

在这里插入图片描述

存储器的概述

  • 用途 : 为CPU存放指令

  • 在这里插入图片描述

随机访问存储器

  • 分类:

    • SRAM(静态RAM):
      • 一直供电,它就不期限地保持记忆的状态(1或0),称为静态存储器
      • 特点:小,快,贵
      • 用途:高速缓存
    • DRAM(动态RAM):
      • 信息的存储(1或0): 电容上电荷的有无
      • 刷新: 电容上的电荷会随着时间和温度而减少, 为保持所存信息, 必须定时补充电荷, 即刷新,称为动态存储器.
      • 特点:大,慢,便宜
      • 用途: 主存 (内存)
  • 存储原理

    • 在这里插入图片描述

在这里插入图片描述

64*4位:选择线64条,地址线6条, 26 = 64, 4条数据线


拓展:

一吉字节有多大?不幸地,像K (kilo), M (mega), G (giga)和T (tera)这样的前缀的含义依赖于上下文。·对于与DRAM和SRAM容量相关的计量单位,通常K=210 , M=220 , G=230 ,而T = 240 。对于与像磁盘和网络这样的I/0设备容量相关的计量单位,通常K= 103 , M = 106 , G = 109 ,而 T = 1012 。速率和吞吐量常常也使用这些前缀。


存储器扩展
  1. 位向扩展 ---- 加大字长

    • 1M × 4位 -> 1M × 8位 (1M = 220 , 1K = 210 )

    • 连接方法:

      • 各片地址线、控制线并联
      • 数据线单独引出

      即:两片芯片按地址看作一片,不需要片选信

      在这里插入图片描述

  2. 字数扩展 ---- 增多字数

    • 1M × 8位 -> 2M × 8位
    • 连接方法
      • 各片地址线、数据线、读/写控制线并联
      • 采用片选信号区分不同芯片,片选由地址经译码器给出
      • 1M 的片子需20位地址线,组成2M的存储器共需21位地址线,多出的1位做片选
      • 在这里插入图片描述
  3. 字位同时扩展

    • 1K × 1位 -> 8K × 8位 共需8×8=64片
    • 方法:
      • 先按位扩展得到1K×8位
      • 再按字扩展得到8K×8位
与CPU的连接

在这里插入图片描述

2. 局部性(重点)

  • 局部性原理: 往往程序要使用的数据和指令就是刚刚使用过的或其附近的

时间局部性:

  • 最近被访问过的指令和数据很可能再次被访问
  • 在这里插入图片描述

空间局部性:

  • 这些被访问的指令和数据往往集中在一小片存储区
  • 在这里插入图片描述

举个栗子

sum = 0;
for (i = 0; i< n; i++)
    sum += a[i];
return sum;
  • 对于数据来说
    • 连续的访问数组元素 <-- 空间局部性
    • 变量sum以及i的访问 <-- 时间局部性
  • 对于指令来说
    • 循环体中的指令按循序执行. <-- 空间局部性
    • 循环体被执行多次. <-- 时间局部性

3.存储器的层次结构

  • 属性:
    • 硬件方面:
      • 存储技术:小,快,贵
      • CPU与主存速度差异增大
    • 软件方面:
      • 好的程序有好的局部性

多级存储系统

  • 目的:

    • 解决存储的容量,速度和成本三者之间的矛盾
  • 依据原理:程序局部性原理

  • 实现:三个层次:

    • Cache - 主存 - 辅存
      • 速度递减,容量递增,成本低

    若能使CPU大部分时间访问高速缓存Cache,速度最快;

    仅在从Cache中读不到数据时才去读主存,速度略慢但容量更大

    当从主存中还读不到时才去成批量读辅存,速度很慢容量极大;

    这就很好地同时解决了对速度、容量、成本三个方面的需求。

4. 高速缓存

缓存的概念

在这里插入图片描述

在这里插入图片描述

  • 命中:

在这里插入图片描述

  • 未命中

在这里插入图片描述

未命中的种类
  • 冷不命中
    • 出现在刚开始cache空的时候
  • 冲突不命中
    • 多个数据都要使用同一个块
  • 容量不命中
    • cache太小

  • 小容量,快速的,全部功能由硬件完成.
    • 保存着主存中频率使用的块
  • 在Cache中先寻找数据,找不到才去主存找

在这里插入图片描述

Cache命中率

  • Cache的命中率h

    • Nc : 访问Cache的总次数
    • Nm : 访问主存的总次数
    • Nc + Nm : 访问内存的总次数
    • h = Nc /(Nc + Nm )
  • Cache / 主存系统的平均访问时间ta :

    • tc : 命中时, Cache的访问时间

    • tm : 未命中时, 主存的访问时间

    • ta = h·tc + (1-h)·tm tc < tm

Cache是主存的一个子集,是主存的副本,以块为单位与主存交换信息

  • 地址映射:应用某种方法把主存地址定位到Cache中。

cache对于CPU来说是透明的,cpu访问存储器(主存),发出主存地址,cache需要解析该地址,以判断是否cache命中。

在这里插入图片描述

高速缓存 – 块和行

  • 映射:行与块的映射
  • 三种映射:
      1. 直接映射
      1. 全相联映射
      1. 组相联映射

在这里插入图片描述

1. 直接映射
  • 设: i : cache 的行号, j:主存的块号, m : cache 的总行数
  • 则映射时需满足 : i = j mod m

优点 : 硬件简单,成本低

缺点 : 相距m倍的块易发生冲突

适合 : 大容量 cache 使用, 行多则冲突少

2. 全相联映射方式
  • 块地址与块内容一起存于cache
  • 主存中的任一块可映射到cache中的任一行

优点 : 灵活, 主存任一块 -> Cache任一行

缺点:全相联比较, 电路复杂, 成本高

适合 : 小容量cache

3. 组相联映射方式
  • 设 : Cache分为u组v行, Cache总行数 : m = u × v, q : cache的组号

  • 则映射时需满足 : q = j mod u

  • v路组合相联cache:

    • 每组行数v一般取 2、4、8等较小值,
    • v路规模比较器较易实现

优点: 硬件较简单, 成本比较低,有一定的灵活性, 不易发生冲突

适合 : 普通使用

高速缓存 – 替换策略

  • Cache应当尽量保持最新数据
  • 当Cache满时, 再来新数据, 则需要替换原cache中的数据
    • 直接映射的cache来说,只要把此特定位置上的原主存块换出cache即可.
    • 全相联组相联 cache来说, 就要从允许存放新主存块的若干特定行中选取一行换出,涉及到替换算法
  1. 最不经常使用算法(LFU算法)

  2. 近期最少使用算法(LRU算法)

  3. 随机替换算法

期末复习完…………(遍历复习完课件和书)

总结: 教材是《深入理解计算机系统》第二版 + 老师课件 进行复习
主要学习章节 :一, 二 , 三 , 四 , 六章, 后面的都没学,打算后续自学,有空的话继续补充,我觉得这本书将计算机的底层知识进行很系统地分析,总结也很完备, 但也有很多看不懂的地方, 怎么说呢, 计算机就是一个神秘而又奥妙的东西。计算机底层的知识还是很有用的, 这些是学技术的时候学不到的基础理论知识,但却能处处体现出来。 个人觉得沉下心去学,还是很有意思的,虽然基础理论偏枯燥,但学好基础,对于后续的技术学习会很有帮助,有时间的话回来复盘一下,发现看多了,前面和后面的知识就会很自然而然的联系起来, 学得时候发现很分散, 几乎没啥关系,学完之后,就发现他们的联系很大,前面为后面铺垫, 后面又能把前面的联系起来,试图在告诉你之前的没有白学,真的很有意思!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值