存储系统(Memory)及与CPU的调度

存储系统基础知识

首先来了解一些寻址的概念
假设一个存储体总容量为1KB

  • 按字节寻址:每个单元1B,1K个单元
  • 按字寻址:每个单元4B(Intel中一个字=2个字节=16bit, Apple中一个字=4个字=32bit,此处以4个字节为主),256个单元
  • 按半字寻址:每个单元2B,512个单元
  • 按双字寻址:每个单元8B,128个单元

组成结构:

  • 内部架构
    • 译码驱动(译码器)
    • 存储体(存储矩阵)
    • 读写电路
  • 外部架构
    • 地址线(MAR)
    • 数据线(MDR),双向
    • 片选线:高低电频,高电频表示可读写,低电频表示不可读写
    • 读写控制线:一根或两根
      在这里插入图片描述

存储介质

  • 磁芯存储器
  • 磁表面存储器(磁盘,磁带)
  • 半导体存储器
  • 光存储器

信息可保存性

  • 断电后存储信息是否消失(RAM,易失性)
  • 读出时是否破坏信息(DRAM,破坏性读出)

存取方式

  • 顺序存取:在读、写数据的时候必须要按照顺序,不可跳过某一存储单元而进行下一存取单元。磁带
  • 随机存取:与顺序存取相反。RAM(DRAM,SRAM),ROM
  • 直接存取(磁盘):直接定位到小区域,直接存取

性能指标

  • 存储容量:存储字数x字长(如1Mx8位)
  • 单位成本:每位价格=总成本/总容量
  • 存储速度:数据传输率 = 数据的宽度/存储周期
    • 存取时间:存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间
    • 存取周期:读写周期或访问周期,包括存取时间和恢复时间
    • 主存带宽:数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒,字节/秒(B/s),位/秒(b/s)

在这里插入图片描述

存储器与CPU的协同工作

主存与CPU的连接

位扩展

CPU的较多的数据线对应较短的存储体内的数据线的时候,需要加更多的存储体(买他!)
在这里插入图片描述
最后结果如下
在这里插入图片描述

字扩展
线性法

CPU的较多的地址线对应较短的存储体内的地址线的时候,需要加更多的存储体,但是此时CPU的数据线对存储体内的数据线的时候会无法区分哪一个存储体内的数据线
在这里插入图片描述
用地址线控制CS线(片选线),按顺序打开各个存储体的片选线,依次读取。

译码器片选法

可是字扩展这样有多少个存储体岂不是要多少个地址线来控制,而且还是相互沟通来控制开关?这也太耗费性能了吧。
此时译码器就登场了,易知译码器的扩展公式:2的n次方

一般译码器通过映射方式,一般传入为3bit,则生成8bit,对应了8个不同的顺序:0 1 2 3 4 5 6 7,默认情况下3bit排列为0 0 0,则默认情况下的8bit的排列为0 0 0 0 0 0 0 1,即0个门开启
在这里插入图片描述

字位同时扩展

在这里插入图片描述

放个我今天看的例题,大家自己去领悟蛤(不做讲解了)
在这里插入图片描述

双口RAM和多模块存储器(高性能,速度)

这是一种高性能的存储器

双端口RAM

使用位置:用户程序区
在这里插入图片描述
运行情况:

  • 两个端口不同时对同一地址存取数据
  • 两个端口同时对同一地址读取数据
  • 两个端口同时对同一地址写入数据(不行)
  • 两个端口对同一地址,一个读,一个写(不行)

解决方法:加置一个控制信号,当一个在忙的时候,给另一个CPU发出一个信号0
在这里插入图片描述

多模块存储器

传统存储器:每行存储一个存储单元,一个存储单元有对应的存储字长
在这里插入图片描述
在这里插入图片描述
多体并行存储器:分成多个存储体,每个存储体的存储单元只存放一个存储元,即存储字长为x(一般为1)个字节,可以实现并行和串行操作

  • 每个模块都有相同的容量和存取速度
  • 各模块都有独立的读写控制电路、地址寄存器和数据寄存器
  • 他们既能并行工作,又能交叉工作
    在这里插入图片描述

分类
高位交叉编址的多体存储器,访问方式:体号+体内地址

体号:访问哪个存储体
体内地址:访问存储体的哪个存储单元
在这里插入图片描述
在这里插入图片描述
前面两位是哪个存储体,后面是访问哪个存储单元

低位交叉编址的多体存储器,访问方式:体号+体内地址

体号:访问存储体的哪个存储单元
体内地址:访问哪个存储体
在这里插入图片描述
访问方式同高位交叉的编址的多体存储体

夺模块的计算方法

有两种情况
第一种情况是在传统的对于一个存储体进行持续存取的过程,此时耗时ALL_T = nT
在这里插入图片描述
第二种情况就是在不同的情况下对不同的存储体进行并行的存取,即耗时为:ALL_T = T + (n-1)r
在这里插入图片描述

高速缓冲存储器Cache

局部性原理
  • 空间局部性:在最近的未来要使用到的信息(指令和数据),很可能与现在正在使用在存储空间上是邻近的
  • 时间局部性:在最近的未来要用到的信息,很可能是正在使用的信息

原理:借助Cache这个中间商,把需要用到的主存内的数据传入到Cache中(都为存储结构,因此传输数据的时候可以不像CPU和主存一样的一个一个数据进行读取,而是可以直接从块存取),后面CPU操作数据的时候直接从Cache中拿数据(此速度可自定义,一般较快)
在这里插入图片描述
性能指标:

  • 命中率:CPU访问的信息在Cache中的比率H
  • 缺失率:CPU访问的信息不在Cache中的比率1-H
  • 主存系统的平均访问时间:设命中时的访问时间为t1,没命中的时候访问时间为t2,则主存系统的平均访问时间T = H x t1 + (1-H)x t2
Cache地址映射

主存中的块放到cache的哪个位置?

  • (1)空位随意放:全相连映射
  • (2)对号入座:直接映射
  • (3)按号分组,组内随意放:组相连映射

(1)情况下,cache满了的问题
(2)(3)情况下,对应位置被占用的问题、
解决方法:随机算法(RAND),先进先出算法(FIFO),近期最少使用算法(LRU)最不常使用算法(LFU)

修改cache的内容后,如何保持主存中相应内容的一致性
命中:

  • 全写法(没有对应的数据)
  • 回写法(有对应的数据)

不命中:

  • 写分配法
  • 非写分配法
虚拟存储器

虚拟存储器是一个逻辑模型

基本概念

功能:用户给出一个地址,叫做虚地址或逻辑地址,虚拟存储器要给出该地址对应的数据

实现:由辅助硬件将虚地址映射到主存当中的某个单元,主存单元地址称为实地址或物理地址

页式虚拟存储器

虚拟空间与主存空间被划分为同样大小的页,主存的页称为实页,虚存的页称为虚页

实页:实页号+页内地址
虚页:虚页号+页内地址

将其放入页表中进行映射取出

运行过程:会自动产生一个页表基址寄存器,里面有页表起始地址,和虚页号共同组成了一个页表项地址,然后在页表中寻找,看位号(0则表示有这个数据,1表示没有),如果为1,获得主存中对应的实页号,然后先从cache主存中寻找,如果没有,再在主存中寻找数据。页内地址是直接从虚存中传递到实存中的
在这里插入图片描述

段式虚拟存储器

存储方式与页式虚拟存储器相同,但段式存储的大小可因地制宜,而页式存储的大小是固定的

段页式虚拟存储器

很复杂,不做讲解

快表TLB

页表,段表放在主存中,收到虚拟地址后要先访问主存,查询页表,段表,进行虚实地址转换,放在主存中的页表称为慢表(Page)

提高变换速度
用高速换成存储器cache存放常用的页表(不用去主存中去寻找数据),形成快表
在这里插入图片描述
给个题目大家感受一下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妖怪喜欢风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值