预习计算机组成原理之存储器——笔记2

系列文章目录

第四章 存储器


文章目录


前言

现在是7月12号了,继续学习第四章存储器的内容


一、存储器概述

执行程序需要的指令数据都来自存储器,执行结果也存储在存储器中

1.1 存储器类型(分类)

教材给出了三种分类方法

1.1.1 按存储介质分类

  1. 半导体存储器——电脑的内存条/U盘——分为两种一种是TTL(晶体管-晶体管逻辑)另一种是MOS(金属-氧化物半导体场效应晶体管)
    TTL:集成度低、功耗高、速度快
    MOS:集成度高、功耗低
    现在计算机内存主要是MOS型的半导体
  2. 磁表面存储器(要有磁头和载磁体) 容量大,速度慢
  3. 磁芯存储器 (core memory) 容量大 速度慢
  4. 光盘存储器 激光、磁光材料构成 廉价易于保存

半导体存储器是易失的,断电后不会保存
磁表面存储器、磁芯存储器 和光盘存储器 是非易失的,断电后仍然保存
在这里插入图片描述

1.1.2 按存取方式分类

  1. 存取时间与物理地址无关(随机访问)
    随机存储器 在程序的执行过程中 可读可写 ——RAM
    只读存储器——程序执行过程中 只读,可以用来存放系统参数与系统程序 ——ROM
  2. 存取时间和物理地址有关(串行访问)
    顺序存取存储器——磁带
    直接存取存储器——磁盘(与半径有关,半径越大,越快)
    在这里插入图片描述

1.1.3 按在计算机中作用分类

存储器分为主存储器和辅助存储器
主存储器 分为:
RAM(可读可写)——随机存储器,用户的数据和用户的程序。分为静态RAM和动态RAM(存在电容上)
ROM (只读)
PROM只能写一次,熔丝烧断的方式
EPROM可擦除,紫外线照射
EEPROM 电可擦除,平常用的U盘也是这种

主存储器和辅助存储器之间可以再放上 Flash Memory。
用作主存的闪存叫NORFlash 存储单元以或非式组织
用作辅存的闪存叫NANDFlash 存储单元以与非式组织
U盘,半导体存储器,速度比磁盘块,比主存储器慢;
计算机硬盘(比较高性能的计算机);
在主存储器和辅助存储器之间的缓存,SSD(固态硬盘)核心的存储材料就是Flash Memory

高速缓冲存储器,即cache
放在主存储器和CPU之间,比主存、Flash Memory快,通常用静态RAM来做,因为静态RAM快
在这里插入图片描述

1.2 存储器的层次结构

1.2.1 存储器三个主要特征的关系(层次结构的图十分重要!!!!!!)

速度、容量、价格/位一定注意是单位容量的价格

寄存器和缓存的一部分在CPU中,不过一些I/O端口中也有寄存器
主存+CPU等于主机
没了辅存可以继续用,但是主机的没有就无法运行了

寄存器分为两类:
体系结构寄存器(不透明,提供给机器语言程序员的,可以通过机器语言指令操作)
非体系结寄存器(透明的,不需要机器语言程序员了解,不能通过指令操作)
在这里插入图片描述

1.2.2 两个重要的存储层次:缓存—主存层次 和 主存—辅存层次

缓存—主存层次 用硬件连接起来,因为注重的是速度提升,对机器语言程序员来说是透明的,不可见的
主存—辅存层次软件硬件结合的方式,因为这里注重的是容量提升

虚拟存储器不是真正的存储器
缓存—主存层次的整体看作主存储器,使用的地址直接是主存的地址,如果缓存有就会通过分块偏移找到位置
主存—辅存的整体看作虚拟存储器,使用的时候用的是虚拟地址,逻辑地址
在这里插入图片描述

1.3 主存储器概述

1.3.1 主存的基本组成

我们已经直到存储器的构成是:存储体、MAR、MDR。主存要更复杂一些
MAR存储地址,通过译码器等等器件在存储体找到位置
控制电路通过读写电路控制数据方向
驱动器和译码器用于选择存储器的某单元
在这里插入图片描述

1.3.2 主存与CPU之间的联系

连接是三种类型的信号:
数据总线
地址总线
控制总线(读、写等控制信号)
CPU和主存之间的连接,给出对应的CPU的型号搭建主存和CPU相连!!!大题 注意四条线的方向
在这里插入图片描述

1.3.3 主存中存储单元地址的分配

假设存储字长:32位,即对这个存储器的读和写,一次是读或者写32个0/1
主存的编址,编址是8位,每一个字节都有个地址。

那么定义:这存储字的每一个字节都有一个字节地址,但是存储字的字地址在大端方式中是高位字节的地址
在小端方式中是低位字节地址
在这里插入图片描述
2的24次方的地址,那就是16M的字节
按字寻址的时候,需要考虑一个字里有几个字节
在这里插入图片描述

1.3.4 主存的技术指标

两个技术指标——速度 和 容量

存取周期 是第一次开始到第二次开始之间的最小时间间隔
任何一种存储器,在读写操作后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,因为存储器中的信息读出后需要马上进行再生。
存取时间一般比存取周期短

在突发访问的情况下,无存取周期,非独立,一次读出很多

存储器带宽是单位时间传输的位数或者字节数
在这里插入图片描述

二、 半导体存储器芯片简介

2.1 半导体存储芯片的基本结构

地址线是单向的,可以是CPU或者是I/O设备的控制器指向存储器
读/写控制线可以是一条也可以是两条
题目很可能要画图!!!!,给芯片的容量
在这里插入图片描述

片选线 半导体芯片片选线有两种标识方式: C S ‾ \overline{CS} CS C E ‾ \overline{CE} CE 这两个上面都有一个横线,都是表示低电平有效

这几个信号要背下来!!!!!!!
ROM可能只有 O E ‾ \overline{OE} OE读,有时候可能被写成 R E ‾ \overline{RE} RE R D ‾ \overline{RD} RD

C S ‾ \overline{CS} CS 芯片选择
C E ‾ \overline{CE} CE 芯片使能信号
W E ‾ \overline{WE} WE 读/写控制线 ,一根线。低电平表示写操作
若是两根线,那么是 O E ‾ \overline{OE} OE W E ‾ \overline{WE} WE 与读/写控制线 ,两根线,前者低电平表示读,后者低电平表示写
在这里插入图片描述

2.2 半导体存储芯片的译码驱动方式——线选法

地址有4位,每一个地址输出数据8位,那么就是 16 ∗ 8 16*8 168
但是如果是1M*8的存储器,那就需要20根地址线,从地址译码器发出的线有100万根线,很难做到集成
而且这样做出来的芯片很窄很长

在这里插入图片描述

2.3 半导体存储芯片的译码驱动方式——重合法

A 0 A_0 A0~ A 4 是 行 地 址 A_4是行地址 A4 A 5 A_5 A5~ A 9 是 列 地 址 A_9是列地址 A9
第0行的X0是有效的
第0列的Y0是有效的
Y0有效,两个开关打开,(0,0)输出到I/O
Y31则因为管子不导通,无法输出到I/O设备
此时线选法的20位的地址,译码得到的1M根线,重合法只需要行1K,列1K,只需要20条线,集成度可以做得更好。
但是要注意,每一次选中的这个交差点上的存储单元,只包括了一个基本单元电路,每次读出和写入的位数只有1位。一次输出多位的情况见下面2114芯片,如何一次输出4位
在这里插入图片描述

三、随机存取存储器(RAM)

内存就是由随机存储器构成,内存包括cache和主存,分别对应SRAM和DRAM
RAM是对应用户的区域和系统程序运行的区域(ROM存储系统程序和保存配置信息的)

3.1 静态RAM(SRAM)

在这里插入图片描述

3.1.1 静态RAM基本电路

下面是静态RAM的基本单元
T 1 T_1 T1~ T 4 T_4 T4是触发器用于保存0和1
T 5 T_5 T5 T 6 T_6 T6是由行地址选择,用来控制读和写
这一个小单元是一共是6个晶体管

在大的SRAM中,虚线部分会被重复
T 7 T_7 T7 T 8 T_8 T8是一列共有的开关,叫做列开关
如果选中一个行,那么这行的 T 5 T_5 T5 T 6 T_6 T6都会被打开,但是只有列开关打开的才可以读写操作
注意写操作的时候,因为存储器是双稳态的触发器,所以写入的时候要分两边传,一个传0一个传1
在这里插入图片描述
读操作如下:
在这里插入图片描述
D i n D_{in} Din经过放大器之后驱动能力很强,可以直接改变存储单元( T 1 T_1 T1 T 4 T_4 T4的锁存)
写操作如下:
在这里插入图片描述

3.1.2 静态RAM经典芯片(大题!!!!!)

背下来,很常见!!!!!!!!
静态RAM芯片举例:
W E ‾ \overline{WE} WE 读/写控制线 ,低电平则有效,为写操作。高电平是读操作
C S ‾ \overline{CS} CS 片选信号,只有为低电平时候这个芯片才会被选中
A 0 A_0 A0~ A 9 A_9 A9是十根地址线,2114芯片是1K个存储单元
I / O 1 I/O_1 I/O1~ I / O 4 I/O_4 I/O4是四根数据线,每个存储单元选中后都可以读出或写入4位信号,每个存储单元有四个基本电路
1 K × 4 1K\times4 1K×4在实现中就是 64 × 64 64\times64 64×64的阵列
在这里插入图片描述
一个列选信号可以同时选择四列的操作(下图就是每一组的第一列)
读操作如下:
在这里插入图片描述
写操作:
在这里插入图片描述

3.2 动态RAM(DRAM)

只看刷新!!!!
在这里插入图片描述
静态RAM使用的是双稳态触发器,动态RAM用的是电容
电容保存了电荷则认为是1,电容中没有电则认为是0
了解RAM的信号如下
在这里插入图片描述

3.2.1 第一种基本单元电路,三管动态RAM(不考)

基本单元电路如下:
信息保存在 C g C_g Cg
T 1 T_1 T1 T 2 T_2 T2 T 3 T_3 T3是控制管,进行读出和写入。选择线有效,对应控制管可以导通
以读操作为例,过程如下:
通过预充电信号让 T 4 T_4 T4这个晶体管导通, V D D V_{DD} VDD会通过 T 4 T_4 T4晶体管给读数据线进行充电。读数据线是1
读操作,读选择线有效, T 2 T_2 T2导通

  1. C g C_g Cg中保存的信号是0,那么 T 1 T_1 T1不会导通
    读数据线保持高电平,那么读数据线上就是1( C g C_g Cg为0)
  2. C g C_g Cg中保存的信号是1,那么 T 1 T_1 T1导通
    读数据线会通过 T 1 T_1 T1 T 2 T_2 T2两个管子进行放电,那么读数据线上就是0( C g C_g Cg为1)

读出的信息和保存的信号相反,因此在接受信号时需要加一个非门
但是如果进行的是写入的话,输入的信息和存储的信息是相同的
在这里插入图片描述

3.2.2 第二种基本单元电路,单管动态RAM(不考)

竖着的是字线(控制线),相应的行被选中后,T会被打开
C s C_s Cs是1的时候,数据线为1; C s C_s Cs为0的时候,数据线为0
在这里插入图片描述

3.2.3 动态RAM经典芯片(三管)(不考)

读操作:
存储容量 1 K × 1 1K\times1 1K×1
行地址译码器处,参加译码的不仅仅是地址还有读写控制信号
需要注意的三角形的刷新放大器,因为电容会漏电,刷新放大器对电容保存的信息进行刷新
在这里插入图片描述
写操作:
在这里插入图片描述

3.2.4 动态RAM经典芯片(单管)(不考)

16K应该是14位,地址应该是14位,但是这里只有7位,之前的14位需要分两次传入,第一次传入行地址,第二次传入列地址
芯片有自己的控制器
R A S ‾ \overline{RAS} RAS——行选通信号——行时钟
C A S ‾ \overline{CAS} CAS——列选通信号——列时钟
W E ‾ \overline{WE} WE——读写控制信号——写时钟
在这里插入图片描述
读放大器一侧是0那么另一侧是1
一侧是1那么另一侧是0
所以在读放大器的左侧的行 C s C_s Cs是1,输出却是0;右侧则正常输出
然后通过紫色的通道输出
在这里插入图片描述
我们再看一下写操作,通过选中的行和选中的列,通过读放大器后做了一次相反操作,存储的信息与输入信息相反(0~63行)但是要注意,正好他们在读的时候也会进行一次取反,两次取反抵消了。
在这里插入图片描述

3.2.5 动态RAM刷新

电容容易漏电,一定时间内不对电容的信息进行再生,电容中的电会慢慢漏掉——动态RAM刷新
每一次刷新操作只和行地址有关,跟列地址没有关系,每一次刷新都是一行的所有基本单元电路,而不是某一个存储单元

  1. 集中式刷新——刷新时间集中在一起
    问题:在死区时间内CPU与I/O设备只能进行等待
    死区的计算是对每一行都进行刷新,每一次刷新都是用一个存储周期

  2. 分散刷新
    这里假设的存储周期要比集中刷新的存储周期时间长
    这是因为:
    t M t_M tM:正常的CPU或者I/O与内存进行信息交换的存取周期
    t R t_R tR:专门用于动态RAM芯片某一行的刷新
    t C t_C tC t M t_M tM+ t R t_R tR
    在2ms中每一行都被刷新了15.6次,其实他128微秒就把128行刷新完了,这实际上是过度的刷新
    虽然没有死区,读写周期加长(存取周期变长)芯片的性能下降插入的时间可能不需要这么多,可能只需要32次而不是每次的读写都有一次刷新,这样花了更多的时间进行刷新,性能下降
    在这里插入图片描述

  3. 分散刷新与集中刷新相结合(异步刷新)
    2ms被分成了128份,在每一份事件中进行了一次刷新,对于这一份时间来说这是一次集中式刷新
    对于整个大时间段来说,这是分散式刷新。每一份时间中的刷新时间可以合理安排,不一定在最后。 比如指令译码阶段就不会进行访存,如果放在指令译码阶段,就不会出现“死区”
    在这里插入图片描述
    在这里插入图片描述

3.3 动态RAM和静态RAM的比较(选择题的来源!!!!!!)

芯片存储一样的时候DRAM的引脚更少,SRAM通常是线选,片选的时候用的线多,DRAM重合法,引脚复用,线少
DRAM是电容的,因此集成度更高
DRAM的晶体管少于SRAM,更便宜
芯片的价格只跟面积有关,DRAM面积小
但是SRAM快!!!!(DRAM漏电要刷新,而且SRAM是线选,更快)
SRAM用的是双稳态触发器

RAM不能被ROM替换,因为首先RAM比ROM快几个数量级,其次是RAM掉电不能保存,ROM可以掉电保存
在这里插入图片描述

四、只读存储器(ROM)

ROM存储系统程序和保存配置信息的(RAM是对应用户的区域和系统程序运行的区域)

4.1 发展历程

在这里插入图片描述

4.2 掩模ROM(MROM)

先预充电,在预充电后每一列的位先都是高电平。然后当选择时候,若选中的交点有MOS管,那么位线的高电平会变为低电平,经过读放大器的反向后输出1。
在这里插入图片描述
有无MOS已经确定了

在这里插入图片描述

4.3 PROM(一次性编程)

破坏性编程
一次性写入

在这里插入图片描述

4.4 EPROM(多次性编程)

若想要进行修改,可以用紫外线进行擦除。但是这样的操作较为麻烦
在这里插入图片描述
擦除的时候是整片擦除,考试的时候 P D ‾ \overline{PD} PD直接低电平是读出,5V的时候是休眠状态,12V是进行擦写状态
考试的时候接地低电平就完事

在这里插入图片描述

4.5 EEPROM(多次性编程)与 Flash Memory(快擦型存储器) 等其他存储器

在这里插入图片描述

五、存储器与CPU的连接(考试重点!!读写控制信号一定不能落下!!!!)

5.1 存储器容量的扩展

5.1.1 位扩展(例如两个 I K × 4 IK\times4 IK×4位组成 I K × 8 IK\times8 IK×8位)

一次选八位,因此位扩展,要这两个片同时被选中,连一个片选信号
在这里插入图片描述

5.1.2 字扩展(扩展的是存储字的数量,也就是地址线)

A 10 A_{10} A10保证只有一个工作
在这里插入图片描述

5.1.3 同时扩展 (读写控制信号一定不能拉下!!)

在这里插入图片描述

5.2 存储器与CPU的连接(考试时的解题步骤)

选择存储芯片时:选择逻辑尽可能简单,芯片尽可能少,数量最少
片选信号!!!
** 存储器的访问信号必须要在片选信号中体现,例如例题中的 M R E Q ‾ \overline{MREQ} MREQ,确认访问的不是I/O设备,是CPU与存储芯片正确工作的关键,片选有效信号与CPU的访存控制信号MREQ有关。当CPU访问I/O设备时,MREQ为高电平,表示不需要存储器工作,反之,MREQ为低电平,选择存储芯片。**

若有PD那条线,接地接地即可

读写命令线要写!
在这里插入图片描述
在这里插入图片描述

课上例题
系统程序区是ROM
用户程序区是RAM!!!
注意“相邻的”就是地址是挨着的
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
CBA的片选信号位放在芯片直接连的地址之外

在这里插入图片描述
非与非门就是或,它不能丢掉,这里是因为要保证A10是0,若不连的话,A10的0还是1都属于了这个RAM即6C00到6CFF都被占用了
WR的非,ROM不接!!!!!!!
若CPU有RD和WR两根线,RAM两个都连,ROM只连RD与自己的OE
MREQ是使能信号,一般置0
注意片选信号直接连低电平有效!
在这里插入图片描述
系统程序工作区是RAM!!!!
在这里插入图片描述
修改后的题目:
0000 0000 0000 0000 到
0000 1111 1111 1111 即 0FFF地址为4KROM
0001 0000 0000 0000 即 1000
0010 1111 1111 1111 即 2FFF 地址为8KRAM
8K是字扩展,所以第一片是1000 ~ 1FFF,第二片是2000~2FFF
G1是高电平,GA是MREQ,GB是A15
在这里插入图片描述
下一个例题
PGM接0的话是向芯片烧写,我们只是通过它读,让他接高电平
CE为输入信号,低电平有效。(有称作片选信号)
OE为输出允许信号,低电平有效
在这里插入图片描述
在这里插入图片描述

IO/M非是CPU的访存控制信号他就是MREQ,要接0使其能工作,EPROM属于ROM所以不需要写信号,WD信号不需要,RD非直接连到OE非上最后剩地三个地址,用与非门保证它们都是1

在这里插入图片描述

六、 存储器的校验

为什么要对存储器的信息进行校验?
例如在静态RAM,信息保存在四管的触发器中,若电磁环境较为复杂,或者收到带电粒子的打击,可能会对存储器中信息产生影响。造成电容的充电放电,或者可能让触发器进行反转
在这里插入图片描述

6.1 编码的检测和纠错能力

奇偶校验码,只能检测一位错误
奇校验是数据位和冗余位一起算,代码中1的个数是奇数个
偶校验就是偶数个
偶校验是分组校验
在这里插入图片描述

第一行,任意两组合法代码之间二进制最少差异数是1,检错0,纠错0,相加是0 = 1-1
第二行,任意两组合法代码之间二进制最少差异数是2,检错1,纠错0,相加是1 = 2-1
第三行,任意两组合法代码之间二进制最少差异数是3,检错1,纠错1,相加是2 = 3-1
第三行检一位错纠一位错,是因为我们认为一个代码错误反转一位概率大于错误多位,可以将110纠正为111

检错位数一定比纠错位数多,能检错出来才能进行纠错

第三行
{000,111};改造之后用3个0表示一个0,3个1表示一个1,假如现在有一个代码100,假如是一位错,就能检测出原始代码保存的是000。但是如果是110,显然有可能是000 --> 110,或者是111 --> 110,但是根据检1位错,会把代码110改为111,而不是000。检1位错,纠1位错。

第五行
{00000,11111};改造之后用5个0表示一个0, 5个1表示一个1, 假如现在有一个代码11000,
根据检错概率来说判断是两位错了,判断出11是错的,接收方可以直接把这个11改成00,
纠成00000。假如是11100 ,有可能是111错了,也有可能是00错了,显然检测不出3位错。 检2位错,纠2位错。
在这里插入图片描述
从规律可以得到一个概念:
** 编码的最小距离: **

在这里插入图片描述

6.2 典型例子:汉明码

6.2.1 汉明码的简单介绍

采用奇偶检验,奇校验:加上校验位,1的个数是奇数个;偶校验:加上校验位,1的个数是偶数个
汉明码是一种非划分方式,组和组之间是有交叉的,有些位可能在不同组重复利用 汉明码用于一位错
偶校验 ,利用异或门实现,1的个数是偶数个那么结果应该是0
校验位的位置应该是和其他分组不重叠的位置,那么就是1 2 4 8 2 i 2^i 2i这些位置
在这里插入图片描述
上图可以看到,汉明码的分组方式。用偶校验得到的三个结果进行排列,若恰好是一位错,对应的正好是那一位有错。对应校验码应该是特定用于检验某一组用的,所以对应作为校验码的应该是1、2、4三个位置。

6.2.2 汉明码如何进行分组

在这里插入图片描述
图中的X,如果全是0,那么他就是这个组独有的,作为 校验码。第i组,那么检测位放在 2 i − 1 2^{i-1} 2i1的位置
图中的X,存在不只是一个1,那么他是几个组共有的一位

6.2.3 汉明码的组成

这里介绍汉明码组成的三要素:
这里解释一下检测位的不等式,n是需要传输的信息位数,k是检测位,因此是一共n+k位。
我们的校验结果情况应该是这n+k种情况加上一种全对的情况,一共n+k+1种情况
对应的情况编码是 2 k 2^k 2k种情况应该大于n+k+1。因此得到这个不等式
与计网的汉明距离与这里的汉明码的一些关系
在这里插入图片描述

在这里插入图片描述
每一个检测位承担的检测小组
在这里插入图片描述

6.2.4 编码例题

在这里插入图片描述
这里应该写C3 C5 C7 表示的是这个位对应的数字
在这里插入图片描述

6.2.5 汉明码的纠错过程

检验位的个数应该与组数相同
这里所谓的“1357”是传递的汉明码从左往右,从1开始数的标号
在这里插入图片描述
纠错例子:
这里注意 P 4 P 2 P 1 P_4P_2P_1 P4P2P1构成的二进制表示,就是第六位出错
第七位没有出错,若第七位出错,那么 P 1 P_1 P1也会出错
在这里插入图片描述
练习2是因为出错的是第四位,是校验位出错,可以不进行纠错

在这里插入图片描述

七、提高访存速度的措施

7.1 提高访存速度的措施

访存速度的提升小于CPU的速度提升
访存速度跟不上CPU运算速度,这种现象被称为 存储墙
在这里插入图片描述
所谓的“调整主存结构”。我们之前取数或者取指令都是和机器字长相等长度

7.1.1 调整主存结构之一:单体多字系统

调整主存结构的第一种措施:
好处:增加存储器的带宽
坏处:进行写操作时,可能只需要写16位,但是可能会多修改其他位,导致错误修改
第二,取指令时需要的指令不一定存储在一起,比如第一个是跳转指令的情况
在这里插入图片描述

7.1.2 调整主存结构之二:高位交叉(顺序编址)

调整主存结构的改进措施:高位交叉(适合存储器容量的扩展)
四个部分都有自己的控制电路,都有自己的MAR、MDR,都有自己的地址译码器,他们都可以独立工作,这样他们都有了并行工作的基础
但是程序的指令存储一般是依次存储,这样会导致一个部分十分繁忙而其他几个部分空闲。 这种模式适合存储器容量扩展,但是不适合拓宽存储器的带宽

字扩展!!!
在这里插入图片描述

7.1.3 调整主存结构之三:低位交叉(对访存性能更有帮助)轮流编址

低位交叉(适合存储器带宽和访问速度的提高,横向对各个体轮流编址)
这样,它的高位是体内地址,低位则是体号。体内的各个单元的低位是一样的
CPU取指令,给出指令。根据体号, M 0 M_0 M0自动进行寻址,其他个体在此时可以并发进行操作,读取下一条指令
在这里插入图片描述
流水的方式访问不同的存储体
在这里插入图片描述

注意存取周期和总线周期的区别,总线周期往往小于等于存取周期,这里在多体交叉的情况下是存取周期是总线周期倍数

在这里插入图片描述

先保证不丢数据,后提高其效率
注意区分存控和控存
存储器控制部件是存控
控存:控存是微程序控制器中用来存放微指令的存储器,速度比主存更快,通常由ROM组成。

在这里插入图片描述

7.1.4 调整主存结构之四:高性能存储芯片

同步:主存足够快,CPU无需等待(DDR,一个时钟上升沿和下降沿都传输数据,双倍传输数据)
突发式存取是一次读取连续地址的数据,可能频繁访问某一些地址的地址,具有局部性 用SRAM来解决
高性能存储芯片很贵
RDRAM用不同的时钟周期实现双倍数据
在这里插入图片描述

八、习题课

8.1 字与字节编址与地址分配

在这里插入图片描述
在这里插入图片描述

8.2 存储器构成的简单计算

注意这里第二个组成部分是“组号”,因为RAM是 4 K × 4 4K\times4 4K×4而每个模块板是 32 K × 8 32K\times8 32K×8,位数扩倍,因此两个RAM为一组,一个模块板上有8组,因此组号位为3
在这里插入图片描述

8.3 存储芯片的选择以及CPU与其连接题(经典74138译码器与书上例题一致)

注意题目的,题目中给出的所有的信号与引脚都要在CPU示意图种给出!!!特别是 M R E Q ‾ \overline{MREQ} MREQ W R ‾ \overline{WR} WR!!!
而且要知道,每个芯片它的片选信号是低电平有效,直接和 Y 1 ‾ \overline{Y_1} Y1等引脚相连
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里添加一个,假若选择 2 K × 8 2K\times8 2K×8的存储芯片的结果
在这里插入图片描述

8.4 存储芯片的选择以及CPU与其连接的进阶题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.5 交叉编址和多体并行系统

低位多体交叉存储与之前题目的不同就是在于它的片选信号不一样,它的片选信号在 A 2 A_2 A2 A 1 A_1 A1 A 0 A_0 A0,在低位而不是像上面正常的连接方式在高位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到,这个地址范围是不连续的
在这里插入图片描述
在这里插入图片描述

九、高速缓冲存储器

9.1 概述

9.1.1 为什么用cache

局部性原理包括时间的局部性和空间的局部性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.1.2 cache的工作原理

是主存和缓存按照块进行传输的,两者块的大小是一样的
m一般远大于c,主存和缓存一般上千倍差异,主存的块数远远大于缓存的块数
缓存标记信息tag,在缓存中寻找的时候看标记确定是否为要找的那一块,标记与主存中的哪一个块建立对应关系
在这里插入图片描述

在这里插入图片描述
cache的容量越大命中率越高
命中率也与块长有关:块长过小,可能取一次得不到想要的信息,需要多次取;块长过大,cache中块的个数不多,需要频繁更换块
在这里插入图片描述
访存要是直接给的“访存次数”那么分母就不用再加了,注意区分“访存次数”和“访问主存次数”
在这里插入图片描述

这里需要强调:

  1. e的取值是1~ t c t m \frac{t_c}{t_m} tmtc之间
  2. 注意下面截图的公式给出的是cache和主存中并行查找的结果。如果说是先查找cache,若没有才查找主存,那么应该用的是条件概率计算,结果是 e = t c h × t c + ( 1 − h ) × ( t c + t m ) e=\frac{t_c}{h \times t_c + (1-h) \times (t_c+t_m)} e=h×tc+(1h)×(tc+tm)tc

这个公式就是在看平均访问时间有多靠近访问缓存的时间,越接近则说明设计的越好
在这里插入图片描述

9.1.3 cache的基本结构

在这里插入图片描述

地址映射:主存的块可以放到cache的哪些块中
变换机构:主存的块在cache中哪里的查找功能
这些过程(箭头)由CPU完成
在这里插入图片描述

9.1.4 cache的读写操作

“CPU发出访问地址是PC送MAR”
在这里插入图片描述
在这里插入图片描述

9.1.5 cache的改进

主板外面的是片外Cache,片外cache容量更大
多核处理器,每一个核都有自己的cache,多个核会有共用的cache

临近CPU的缓存指令和数据缓存一定是分开的
哈佛结构主存就是指令数据分开的;但是冯诺依曼结构是指令和数据一体的
在这里插入图片描述

9.2 cache-主存的地址映射

不同映射方式的cache,在多层次cache中有不同的用处:
靠近CPU的cache希望有高速度,那么就使用直接映射,或者路数比较少的组相联
中间的用组相联方式
距离CPU远的用全相联,距离CPU越远,对速度要求越低,对cache的利用率要求越高

9.2.1 直接映射

不灵活!!cache利用率较低,但是速度快
一个存储块只能放在一个缓存块中
标记相等且有效位为1才是命中
关系:i = j mod C

在这里插入图片描述
在这里插入图片描述

9.2.2 全相联映射

cache利用率较高
一个存储块可能放在任何一个缓存块中
但是与之相对的用于标记的位数是t+c,比较器更长,比较速度更慢,需要更复杂的电路
成本高,但是cache利用率比较高
电路复杂,也要多花比较的时间
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9.2.3 组相联映射(几路就是一组内有多少块)

一个存储块可能放在缓存中的几个块中,这缓存的几个块就是一个组
比较的时候只要在对应的组内进行比较即可。
把所有的块都变成一组,那就变成全相联
让每一组只有唯一一块,那么组相联就是直接相联

可以通过并行地比较

组地址比块地址少,毕竟多个块一个组
在这里插入图片描述

在这里插入图片描述

相联度越大,越接近全相联;相联度越小,越接近直接映射
并不是相联度越大越好,要是相联度越大需要更多的比较时间
在这里插入图片描述

9.3 替换算法

先进先出,不能很好的体现出局部性原理。近期最少使用算法能够较好体现局部性

在这里插入图片描述

在这里插入图片描述

9.4 查找算法

在这里插入图片描述
索引不需要比较(它就是组号,每组内是全相联一一对应),块内位移也不需要比较

在这里插入图片描述

注意这里的目录表项,是只有有效位和标识tag
在这里插入图片描述
在这里插入图片描述
索引拿到组号
找目录表进行比较
标志检查器进行比较后其实还要看有效位是否为1
在这里插入图片描述

在这里插入图片描述

9.5 访问cache小结

直接:不灵活
全相联:成本高 (比较器多)
组相联 兼顾
在这里插入图片描述

9.6 写策略

算“所有访存操作”时的百分之百,是取址操作
在这里插入图片描述
主存和缓存之间也有写策略
写直达更加简单,保持一致性

在这里插入图片描述
写直达和不按写分配,写命中缓存主存都改,未命中则直接写主存,这两个搭配的话下一次写的时候未命中可以直接写主存里面的东西,此时如果写回缓存是没有意义的,缓存和主存就要都进行改写了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9.7 Cache 结构举例

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.8 改进Cache性能

请求字优先处理,缓存的块还没装完,如果请求字在块的前面,可以先将请求字给CPU
在这里插入图片描述

9.9 例题

在这里插入图片描述
在这里插入图片描述
首先13次miss
块号未超出上限,后面900次都命中,未发生替换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题2
认为k起始地址是0
访问过程中一定超出了cache的大小
每圈访问的时候64次Miss进行访存,取了256个块,
注意除了读主存,还有写缓存,写操作缺失率为0
在这里插入图片描述
曲线是一个凹下的函数,因此还是有个最优值的
在这里插入图片描述
cache足够大后,性能表现基本一致
相联度不是越大越好,4路看起来比8路更好

在这里插入图片描述

9.10 Cache系统(单级/多级)(联合/分立)

在这里插入图片描述

联合还是分立,联合是指令和数据cache合在一起

L2 Cache更看重命中率
在这里插入图片描述

例题
在这里插入图片描述
CPI的1是命中的时候,单位是时钟
但是这里要注意,这里PPT是先后访问方式
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
i7有四个核心,每个核心L1是分立,L2是联合的,四个核共用L3

在这里插入图片描述
在这里插入图片描述

十、辅助存储器

10.1概述

保存程序数据文档等,不能直接与CPU直接进行信息交换
程序要运行,数据要被使用,必须要被调入到主存储器中,最常用的就是磁表面存储器
每个磁道都是同心圆,越往外,位密度越低
数据传输率是用位密度和旋转速度相乘

位密度不应是字节每秒,应该是位/毫米,注意换算,一般单位是bpm,也就是位/mm
也有BPI(Bits Per Inch)意为位每英寸,BPIin(位每英寸英寸)=位(Bits)
平均等待时间:磁头转0.5圈的时间

在这里插入图片描述
硬盘和软盘是磁面硬盘
最外侧是0号磁道,低地址靠外,高地址靠内
文件系统的簇的大小是4K,若扇区大小跟簇大小一致都是4K,会更快
在这里插入图片描述
在这里插入图片描述

在外圈增加密度(早期内部高),外圈的数据吞吐率高,角速度相同的时候外圈的线速度大,因此读的更多
在这里插入图片描述
机械硬盘的转速越高,平均等待时间越低

在这里插入图片描述
例题
最大寻道时间是从最内到最外,或者最外到最内的时间
这里的平均等待时间是取的平均值,5400是转速,所以0.5/5400就是转半圈,等待磁头转半圈的时间
因为局部性原理,他寻道的时间也一般不会有二分之一寻道时间那么大,因此这时候可能寻道等待时间就可能是主要的了

磁盘控制器需要一定时间知道自己要干什么
在这里插入图片描述

10.2 磁记录原理

写操作:局部磁化单元的磁化方向不同,表示0和1

磁载体中会产生不同的剩磁的方向,对应1和0
在这里插入图片描述

读操作:读操作时,磁层是运动的,磁场经过读写头切割磁力线,磁通发生变化,电势发生变化,可以根据不同的电势差得到0或者1.

磁载体运动,产生的对应磁通量是不一样的,对应的磁通量方向不一样,电动势不一样
在这里插入图片描述
RZ是归零码,负脉冲记录-1,正脉冲记录1,保证同步,不会因为全0导致不同步
NRZ 可能一直0或者一直1,导致时钟不同步
NRZ1 遇到一个1就进行一次翻转
PM,调相,用相位进行存储区分,1采用与参考相位相反的相位,0采用与参考相位相同
FM,调频,0和1频率不同
MFM,调频,但是跳变在中间,0则中间不跳变
在这里插入图片描述
磁通量的变化和驱动电流成正比
有跳变读出来1,无跳变读出来0
在这里插入图片描述

10.3 硬磁盘存储器

在这里插入图片描述
音圈电机,控制读写臂的寻道
传动机构控制转速
在这里插入图片描述
在这里插入图片描述

10.4 软磁盘存储器(不常见,这里只简单与硬盘对比)

硬盘不能更换,买的时候就是整个硬盘驱动器购买
整张盘片硬盘比软盘高,但是按照单位字节是硬盘更便宜
在这里插入图片描述

10.5 光盘存储器

CO/DVD-R/-RW 也可以擦写 他没有磁作用,直接用激光,不用热磁效应
在这里插入图片描述

十一、虚拟存储器(主存与辅存)

11.1 虚拟存储器概述

在这里插入图片描述

在这里插入图片描述

PA和VA,一个是虚拟地址一个是实地址
操作系统可以进行调页

在这里插入图片描述
程序:一个火车
进程:运行起来的火车,这时候叫多少多少次列车就是进程
进程下面的概念不涉及

在这里插入图片描述
虚地址虽然是连续的,但是映射后,在物理地址则不一定连续,而且有可能有点不再主存中
用户在虚拟内存中的页不一定都在主存中

在这里插入图片描述

11.2 三种管理方式

11.2.1 页式管理

等长的页面拼接起来比较整齐不会产生碎块
和段式不一样,这里的每一个页可能只是一个程序的一部分,不能独立
在这里插入图片描述

11.2.2 段式管理

每一个段,跟程序的边界是对应的,因此具有独立性,每个程序占自己的一个段(段对应自然分界)
便于维护,便于在多道程序中被共享,对其他的段不会有影响
但是段式管理,要分配一个可变长的空间,容易产生碎块,浪费空间
比如修改一个段A,修改的时候改的更长了,则需要一个更长的段,需要找一个新的连续空间
之前留下的内存空洞下一次写的时候不一定可以完美契合,这样就产生了碎块
在这里插入图片描述

11.2.3 段页式管理

共享保护——按段进行管理
调入调出——页面
需要进行查表
首先分多个段,每个段分多个页
所以首先查段地址,然后找到第一个页,然后找到自己页,两次查表

在这里插入图片描述
cache到主存不需要任何软件控制,给硬件即可
主存到辅存则主要是软件,硬件占小部分,主存和缓存一起实现

cache主存可以让CPU等一会,CPU不用切换
主存辅存辅存过慢,因此需要切换不能等

访问辅存一定要经过主存!!!(对第二级的访问也就是对辅存的访问没有单独的通路,而CPU可以直接访问主存)
主存和辅存的层次失效的时候需要切换进程

在这里插入图片描述

cache的失效来自主存,虚拟存储器很少发生失效,失效率很低
因此虚拟存储器给人感觉很大,但是速度跟主存一样
一个是物理地址向cache映射
一个是虚拟地址向物理地址的映射
在这里插入图片描述
段式系统是加法,页式是拼接
页表和段表是页和段的物理地址
在这里插入图片描述
虚页号找到一个表项和页内位移合在一起作为物理地址去主存访存
在这里插入图片描述
“使用位”是最后一次使用的时间,对应的位数应该是相联度的取log对数,例如八路组相联,LRU是3位
都用写回,只改写第一级缓存,在虚拟内存中就是改写主存的内容,而不是写到辅存
写辅存时间很长,不能用写穿透
在这里插入图片描述
无需用连续的页框来存放一个页表
程序块是可以存在存储块中的
在这里插入图片描述
逻辑地址,程序所用的地址
在这里插入图片描述
1:虚拟页号
14:主存页框
30那一部分直接照抄
程序可以很大,加载到主存的东西很小,可以按需调页
在这里插入图片描述
注意这里的主存种保存主存物理空间的操作系统程序
每一个页块都加载了最近使用的片段
在这里插入图片描述
虚拟地址空间的分配和操作系统有关
内核空间1GB,固定从0xc000 0000 开始
用户栈向下增长
共享库上面的未分配的空间用来放共享程序
brk堆的结束地址
sbrk堆的起始地址
.data 和 .bss 未初始化的话就是0,但是一般还是要显式地赋初值
在这里插入图片描述
不是装入地时候确定虚拟地址
而是链接的时候
(这里没有细讲,涉及的知识量比较大)
在这里插入图片描述
页表首地址记录页面在表格中的偏移
在这里插入图片描述
装入位为0,实地址为NULL,未分配页
若不是NULL则在辅存
装入位为1已经缓存,主存已经有对应的物理页
在这里插入图片描述
若V=0装入位发生缺页
看页面是不是符合操作
得到实页号
在这里插入图片描述
缺页:进程切换
在这里插入图片描述
只读、可读可写、只能执行(不能改写,保证安全)

在这里插入图片描述
实地址:CPU看到的就是实低级物理地址
在这里插入图片描述
个人PC:CPU看到的是虚拟地址,需要进行转换
在这里插入图片描述
开始的红线指向磁盘,后来将其改为指向内存(从辅存调入主存)
在这里插入图片描述
主存访问两次
在这里插入图片描述
访问cache必须用物理地址!!
为什么不用虚地址呢,因为操作系统上可能运行多个进程,可能会用相同的的虚拟地址
如果用虚拟地址可能会乱,物理地址保证切换时候可以仍然保证缓存正确命中

DMA传送不涉及CPU,是直接访问的

MMU:分页内存管理单元

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

主存
在这里插入图片描述
快表,TLB
TLB存经常访问的表项
在这里插入图片描述
先找块表,找不到再去页表,来迅速得到物理页号,生成物理地址

在这里插入图片描述
TLB命中,没碰主存直接得到物理页号,不用两次访问主存
在这里插入图片描述
TLB缺失,需要去主存找物理页号,得到物理地址访问cache,cache不命中再访问主存

OS管理TLB
在这里插入图片描述
冲刷指令:更新数据
在这里插入图片描述
在这里插入图片描述
缺页需要缺页中断,操作系统介入
三个缺失有谁处理一定要分清,这是这三个的区别
在这里插入图片描述
TLB是页表子集,TLB命中,页表一定命中
页表命中,说明信息一定在主存,可能再缓存
在这里插入图片描述
在这里插入图片描述
除了全中以外的最好
在这里插入图片描述
最坏
在这里插入图片描述
之间

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值