首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

计算机组成原理学习笔记(4):存储器

  • 25-03-03 17:23
  • 3542
  • 9078
blog.csdn.net

文章目录

  • 课程笔记导览
  • 附录:英语解释
  • 第四章 存储器
    • 4.1 概述
      • 4.1.1 存储器分类
      • 4.1.2 存储器的层次结构
        • 存储器三个主要特性的关系
        • 缓存一主存层次和主存一辅存层次
    • 4.2 主存储器:概述
      • 4.2.1 主存的基本组成
      • 4.2.2 主存与CPU之间的联系
      • 4.2.3 主存中存储单元地址的分配
      • 4.2.4 主存的技术指标
    • 4.3 主存储器:半导体存储芯片简介
      • 4.3.1 半导体存储芯片的基本结构
      • 4.3.2 半导体存储芯片的译码驱动方式
      • 线选法
      • 重合法
    • 4.4 主存储器:随机存取存储器(RAM)
      • 4.4.1 静态RAM(SRAM)
        • 基本电路
        • 读操作
        • 写操作
        • 静态RAM芯片举例
      • 4.4.2 动态RAM(DRAM)
      • 4.4.3 动态RAM和静态RAM的比较
    • 4.5 主存储器:只读存储器(ROM)
      • 4.5.1只读存储器的发展历程
    • 4.6 主存储器:存储器与CPU的链接
      • 4.6.1 存储器容量的扩展
      • 4.6.2 存储器与CPU的连接
    • 4.7 主存储器:存储器的校验
      • 4.7.1 校验原因
      • 4.7.2 如何进行编码
        • 合法代码集合
        • 编码的最小距离
        • 奇偶校验
        • 汉明码
      • 4.7.3 如何进行纠错
    • 4.8 主存储器:提高速度的措施
      • 主要方法
      • 讨论方法调整主存结构的方法:
      • 单体多字系统
      • 多体并行系统
      • 高性能存储芯片
    • 4.9 高速缓冲存储器
      • 4.9.1 概述
        • 为什么用Cache
        • Cache的工作原理
        • Cache的基本结构
        • Cache的读写操作
        • Cache的改进
      • 4.9.2 Cache-主存的地址映射
        • 直接映射
        • 全相联映射
        • 组相联映射
      • 4.9.3 替换算法
    • 4.10 辅助存储器
      • 4.10.1 概述
      • 4.10.2 磁记录原理
      • 4.10.3 硬磁盘存储器
      • 4.10.4 软磁盘存储器
      • 4.10.5 光盘存储器

课程笔记导览

计算机组成原理学习笔记(1):概述
计算机组成原理学习笔记(2):发展
计算机组成原理学习笔记(3):总线
计算机组成原理学习笔记(4):存储器
计算机组成原理学习笔记(5):I/O
计算机组成原理学习笔记(6):数字
计算机组成原理学习笔记(7):指令系统
计算机组成原理学习笔记(8):CPU的结构和功能
计算机组成原理学习笔记(9):控制单元的功能
计算机组成原理学习笔记(10):控制单元的设计

附录:英语解释

CPU——Central Processing Unit,中央处理机(器)
PC——Program Counter,程序计数器,存放当前欲执行指令的地址,并可自动计数形成下一条指令地址的计数器
IR——Instruction Register,指令寄存器,存放当前正在执行的指令的寄存器
CU——Control Unit,控制单元(部件),控制器中产生微操作命令序列的部件,为控制器的核心部件
ALU——Arithmetic Logic Unit,算术逻辑运算单元,运算器中完成算术逻辑运算的逻辑部件
ACC——Accumulator,累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器
MQ——Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器
X——此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数
MAR——Memory Address Register,存储器地址寄存器,内存中用来存放欲访问存储单元地址的寄存器
MDR——Memory Data Register,存储器数据缓冲寄存器,主存中用来存放从某单元读出、或写入某存储单元数据的寄存器
I/O——Input/Output equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送
MIPS——Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位

第四章 存储器

4.1 概述

4.1.1 存储器分类

按存储介质分类(半导体、磁力、光)

  • 半导体存储器:TTL、MOS(易失)
  • 磁表面存储器:磁头、载磁体(非易失)
  • 磁芯存储器:硬磁材料、环状元件(非易失)
  • 光盘存储器:激光、磁光材料(非易失)

按存取方式分类
存取时间与物理地址无关(随机访问)

  • 随机存储器在程序的执行过程中可读可写

  • 只读存储器在程序的执行过程中只读

存取时间与物理地址有关(串行访问)

  • 顺序存取存储器磁带
  • 直接存取存储器磁盘

按在计算机中的作用分类

image-20200802202858015

4.1.2 存储器的层次结构

存储器三个主要特性的关系

(由于用户要求高速度大容量低价格,使用软硬件达到好的存储体系)

从某一级程序员来看达到这种要求

image-20200802203520563

缓存一主存层次和主存一辅存层次

解决问题:

  • CPU存取速度和主存之间的差异(缓存主存之间使用硬件直接相连为了解决存取速度的问题)
  • 大容量存储和CPU之间的矛盾(主存辅存之间软硬件相连解决容量问题)

image-20200802204550209

程序是在主存上,辅存存储文档等

在应用程序员使用时有辅存的容量主存的速度,程序员不用对这些主存分配进行控制(主存内的程序执行完,把程序退出,取出辅存的程序放入主存执行)

缓存主存构成的存储体系使用主存储器的地址(实地址,目的地址),程序执行时也是主存的地址

主存辅存构成的存储体系构成虚拟存储器使用虚拟地址(是既不是主存地址也不是辅存地址的逻辑地址),在使用的时候有特殊的模块完成映射

4.2 主存储器:概述

4.2.1 主存的基本组成

读写控制电路控制读出存取的方向

image-20200802212416785

4.2.2 主存与CPU之间的联系

image-20200802212608084

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

存储单元分为字地址和字节地址

下图对应的字地址就是0,4,8第一行字节地址是0,1,2,3(一个字包含四个字节)

image-20200802212807204

两种存储方式

大端方式(大尾方式)

高位字节存放在低地址

image-20200802213040348

小端方式(小尾方式)

image-20200802213532035

image-20200802214155045

(w = word)

4.2.4 主存的技术指标

存储容量:主存存放二进制代码的总位数

存储速度:

  • 存取时间:分为读出时间(给入信号开始到稳定的数据输出)和写入时间(给出位置一直到数据写入给定的单元),存储器的访问时间
  • 存取周期:连续两次独立的存储器操作(读或写)所需的最小间隔时间(第一次开始到第二次开始)分为读周期、写周期
  • 存储器的带宽:位/秒

4.3 主存储器:半导体存储芯片简介

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

image-20200802220943482

地址线(单向):CPU或者I/O指向存储器

数据线(双向):完成数据双向传输

芯片容量:image-20200802221119084

片选信号:image-20200803081946936 CS芯片选择 CE芯片使能 上面的横线表示低电平有效

读写控制线:一根线image-20200803082112060两根线image-20200803082122529

4.3.2 半导体存储芯片的译码驱动方式

线选法

评价译码器出来之后会出现字线条数过多的情况

image-20200803082442361

重合法

改善线选法的字线设计问题( Y ∗ Y_* Y∗​有效的时候对应列上的存储单元才会开启)

image-20200803082719618

4.4 主存储器:随机存取存储器(RAM)

4.4.1 静态RAM(SRAM)

基本电路

image-20200803083436185

读操作

image-20200803084214035

写操作

image-20200803084511608

静态RAM芯片举例

Intel2114外特性

image-20200803084648955

image-20200803084911340

image-20200803085148990

Intel2114读操作

image-20200803085342339

Intel2114写操作

image-20200803085625870

4.4.2 动态RAM(DRAM)

基本单元电路

(三管)

读出与原存信息相反(输出端需要加个非门)
写入与输入信息相同

image-20200803090053620

T 4 T_4 T4​预充电信号有效后打开对读数据线进行充电,使得读信号线为1,当读选择线高电平, T 2 T_2 T2​导通,此时如果 C g C_g Cg​为1则 T 1 T_1 T1​不导通,读数据线上的数据一直是1,反之如果 C g C_g Cg​为0则 T 1 T_1 T1​导通,读数据线上的数据放电变为1

image-20200803090813403image-20200803090837763

(单管)

读出时数据线有电流为“1”没电流为“0”
写入时 C s C_s Cs​充电为“1”放电为“0”

image-20200803090121546

动态RAM芯片举例:三管动态RAM芯片(Intel1103)

读写控制线也会参与译码译码后对应位置会产生单独的读选择线和写选择线(行列地址均为如此)

image-20200803091746828

读操作

image-20200803092348800

写操作

image-20200803092332270

单管动态RAM4116(16K×1位)外特性

16k需要14根地址线进行译码但是他只有7个地址线所以分两次进行传送,第一次送入的数据保存在缓存器中

image-20200803092550352

读放大器跷跷板电路,左右分别为0和1或者左右分别为1和0

image-20200804081304336

读操作

读出的时候会有一次反向

image-20200804082320616

写操作

写入的时候会有一次反向

image-20200804082501280

动态RAM的刷新

刷新与行地址有关

刷新方式

  • 集中式刷新对于128×128的存储芯片(存取周期为0.5us)

image-20200804082944157

  • 分散刷新:对于128×128的存储芯片(存取周期为1us)

读写周期包含了刷新周期,变成了原来的两倍,属于过度刷新,在此数据下每一个毫秒被刷新了15.6次

image-20200804083917735

  • 分散刷新与集中刷新相结合(异步刷新).

对于128×128的存储芯片(存取周期为0.5us)

image-20200804084134970

4.4.3 动态RAM和静态RAM的比较

DRAM(主存)SRAM(缓存)
存储原理电容触发器
集成度高低
芯片引脚少(行列地址可以分时传送入寄存器所以引脚大致减少一半)多(价格比较高速度比较快,在传入寄存器和译码器的时候会拖慢速度丧失优势)
功耗小(只是对电容充放电)大(有三个管子一直在导通状态漏电)
速度慢(电容充放电需要时间)快(触发器响应时间比较短)
刷新需要不需要

4.5 主存储器:只读存储器(ROM)

4.5.1只读存储器的发展历程

image-20200804090231119

①掩膜ROM(MROM)不可编程

行列选择线交叉处有MOS管为“1”

行列选择线交叉处无MOS管为“0”

②可编程ROM(PROM)一次性编程

image-20200804090423859

③可擦写可编程ROM(EPROM)多次编程

编程过程D加电压形成浮动栅

擦洗过程紫外线擦洗

image-20200804091905553

④电可擦写可编程ROM(EEPROM)多次编程

电可擦写
局部擦写
全部擦写

⑤Flash Memory(闪速型存储器)

比较

EPROM价格便宜集成度高

EEPROM电可擦洗重写

比EEPROM快具备RAM功能

4.6 主存储器:存储器与CPU的链接

4.6.1 存储器容量的扩展

位扩展

两个芯片同时做读操作和写操作(当一个芯片用)

地址线、片选线、读写控制线并联

数据线接入不同的位置

image-20200804094311934

字扩展

两个芯片同时做读操作和写操作(当一个芯片用)

数据线、地址线线、读写控制线并联

片选线作为新的译码器输出的一条获取更多的位置编码

image-20200804094821021

位字同时扩展

image-20200804095417075

4.6.2 存储器与CPU的连接

基本方法

地址线的链接:一般地址线的低位作为芯片内部的地址信号,高位作为片选信号送入芯片

数据线的连接:当CPU的数据线宽度比存储器的宽时,我们需要做位扩展,使存储器的输入输出数据位宽与CPU相同

读写命令线的连接:直接连接(ROM除外,只读不写)

片选线的连接:地址空间落在那一个或者那几个芯片上,片选线的信号可以体现出CPU访问的是I/O还是存储器,这一点需要在片选信号线上体现出来

合理选择存储芯片:ROM保存系统程序、配置信息;RAM用户程序

其他考虑因素时间负载

4.7 主存储器:存储器的校验

4.7.1 校验原因

信息保存在电容或者触发器中,经受带电粒子打击可能会出现电容充放电或者触发器翻转

4.7.2 如何进行编码

合法代码集合

image-20200804155817745

编码的最小距离

任意两组合法代码之间二进制位数的最少差异
编码的纠错、检错能力与编码的最小距离有关

image-20200804155918112

奇偶校验

为了能检测和纠正内存软错误,首先出现的是内存“奇偶校验”。内存中最小的单位是比特,也称为“位”,位只有两种状态分别以1和0来标示,每8个连续的比特叫做一个字节(byte)。不带奇偶校验的内存每个字节只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。而奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位。在某字节中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那么把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数。对于偶校验,校验位就定义为1;对于奇校验,则相反。

奇偶校验有两种类型:奇校验和偶校验。奇偶校验位是一个表示给定位数的二进制数中1的个数是奇数或者偶数的二进制数,奇偶校验位是最简单的错误检测码。

奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数

1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。

偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数,

汉明码

采用奇偶校验、分组校验

无校验奇偶校验分组奇偶校验如下

image-20200804160117377

汉明码的讲解

备注:默认如果出错也是只有一位有问题

想要达到的效果

通过校验位来判断具体是那个位置出错

P 1 P_1 P1​ P 2 P_2 P2​ P 3 P_3 P3​分别是校验出来这个校验位是否有错的含义,不代表这个校验位是什么值

image-20200804163934801

分组细节

image-20200804164309661

image-20200804164433941

汉明码三要素

image-20200804164337674

两个例子

image-20200804164540253

image-20200804164607911

4.7.3 如何进行纠错

检测过程

通过协议定义的信息(通过汉明码进行编码,采用奇校验还是偶校验,汉明码编码过程中增加的检测位位数)

根据汉明码编码过程中增加的检测位位数的每一个形成新的检测位 P x P_x Px​

符合奇校验或者偶校验的信息就认为没有错误定义,新的校验位定义为0

纠错例子

image-20200804165211907

image-20200804165244881

备注校验过程一样,纠错过程奇校验和偶校验略有不同

4.8 主存储器:提高速度的措施

存储墙:CPU速度提升的速率远远超过存储器的读取写入速度的提升,运行的程序存储的运行结果都需要存储器的访问,这个成为了瓶颈

主要方法

采用高速器件

采用层次结构Cache-主存

调整主存结构

讨论方法调整主存结构的方法:

单体多字系统

通过使存储器字位更多可以做到一次读取出多个对应于cpu的字位的数据(cpu为32位存储器128位读取一次存储器可以在cpu使用4次)

image-20200804201104383

评价:增加存储器的带宽

问题一:写入小字长的数据时候可能会因为过宽的位宽影响到其他数据进行错误写入

问题二:要取得数据不是连续的存放在一起,需要单体多次的取用

多体并行系统

高位交叉顺序编址

image-20200804203640901

评价和问题:多个存储体进行工作时独立;会造成某一个存储体非常繁忙其他的非常空闲。适合容量扩展不适合存储器提升带宽。

低位交叉各个体轮流编址

image-20200804204933618

评价和问题:多个存储体进行工作时独立;在实现过程中,每个存储体 M 0 − M 3 M_0-M_3 M0​−M3​都有独立的控制电路,可以锁存住指令和地址信息,在读取的时候这样cpu还可以去访问其他的存储体信息,适合容量扩展,也做到了存储器提升带宽。

image-20200804210129580

image-20200804210700300

高性能存储芯片

SDRAM(同步DRAM)

在系统时钟的控制下进行读出和写入CPU无须等待(存储器的速度非常快,使用系统时钟进行读取写入跟cpu做到了同步)

RDRAM

由Rambus开发,主要解决存储器带宽问题

带 Cache的DRAM

在DRAM的芯片内集成了一个由SRAM组成的Cache,有利于猝发式读取(实现方式是,每次进入缓冲器的行地址进行比较,如果和上一次的行地址相同就可以直接进行列地址的输入进行数据读取,如果不同则需要重新更改一下行地址)

4.9 高速缓冲存储器

4.9.1 概述

为什么用Cache

image-20200804212935608

原理:

时间局部性:当前的空间的数据或者指令在不久的将来也会被使用到

空间局部性:当前的空间的数据或者指令相邻的位置数据或者指令也会被使用到

Cache的工作原理

主存和缓存的编址

主存的容量远远大于Cache容量: M > > C M>>C M>>C

主存的块和Cache的块大小相等,CPU给出的内存地址分为两部分一部分对应块号一部分对应偏移地址也就是块内地址,块内的数据进行整体传送(数据按块进行传送)

标记的意义:标记主存内对应的块的编号,表示块是否被送入了Cache中,如果已经在里面就可以直接从Cache中得到数据

image-20200804213724076

命中与未命中

主存中只有部分块缓存入Cache中

命中:主存块调入缓存,主存块与缓存块建立了对应关系,用标记记录与某缓存块建立了对应关系的主存块号

未命中:主存块未调入缓存,主存块与缓存块未建立对应关系

Cache的命中率

CPU欲访问的信息在Cache中的比率

命中率与Cache的容量与块长有关

一般每块可取4~8个字

块长取一个存取周期内从主存调出的信息长度

Cache-主存系统的效率

image-20200804221825966

Cache的基本结构

image-20200804221957007

Cache的读写操作

读操作:

备注Cache判断是否满,判断的是这个信息能被存储入的Cache存储空间是否满了

image-20200804222301484

写操作:

主要解决:Cache和主存的一致性

写直达法(Write-through)
写操作时数据既写入Cache又写入主存写操作时间就是访问主存的时间,Cache块退出时,不需要对主存执行写操作,更新策略比较容易实现(评价:累加需要频繁的进行数据更新,这样每次更新后保存数据会使得内存和Cache频繁交互,很浪费)

写回法(Write-back)
写操作时只把数据写入Cache而不写入主存当Cache数据被替换出去时才写回主存(评价:多个处理器会因为多个Cache对内存有多个数据备份,不能保证实时一致。写操作时间就是访问Cache的时间,Cache块退出时,被替换的块需写回主存,增加Cache的复杂性)

Cache的改进

image-20200804223804737

4.9.2 Cache-主存的地址映射

直接映射

某一主存块只能固定映射到某一缓存块

CPU给出地址(区号=主存字块标记、块号=Cache字块地址、偏移地址=字块内地址)

Cache存储中的每个字块都可能是主存中任意分区的对应字块存储的信息,具体有那个区的信息传送进来记录在标记位上。

判断主存内的信息是否被加载进入Cache(是否命中) 比较器比较CPU给出的主存字块标记和Cache的标记位的信息,如果相同则为命中,如果不相同则没命中

image-20200804225653418

评价:速度快,简单易设计,Cache利用率低,冲突率高(存储在不同分区的相同偏移量的数据不能一次读进去需要不断的推出等操作)

全相联映射

某一主存块能映射到任一缓存块

image-20200804230451191

评价:成本高,利用率高,以为存储的时候的任意性,cache存储的数据可能对应主存储器中的任意数据,所以需要比较的地址位数很多,比较次数很多比较时间较慢

组相联映射

直接相连映射和全相连映射的组合

某一主存块只能映射到某一缓存组中的任一缓存块

主存储器分成若干区,每一 区内标号第 X X X块,放在Cache中第 X X X组的任何一个位置

如下图 Cashe分为 Q = 2 c − r Q=2^{c-r} Q=2c−r组每组有 2 2 2块,主存储器分为 2 m / Q 2^m/Q 2m/Q区,每个区有 2 c − r 2^{c-r} 2c−r个块,其中每一个块都对应 Q Q Q组中的一个。比较是否命中的时候给出主存地址,根据他在所属分区中属于第几块,然后去Cashe中的第几个组找有没有对应的标记,如果没有就是未命中。

image-20200804232434496

评价:比较数量较少,包含直接相连也包含了全相连,电路设计也不是很复杂

靠近CPU的Cache:直接相连或者两路组相连

中间的Cache:两路组相连或者八路组相连

靠近内存的Cache:全相连(越靠后对速度要求越低对利用率要求越高)

4.9.3 替换算法

先进先出(FIFO)算法

不能很好的体现出程序局部性原理

近期最少使用(LRU)算法

4.10 辅助存储器

4.10.1 概述

需要先将数据导入到主存中才可以与cpu交互

image-20200805080351269

4.10.2 磁记录原理

写操作

image-20200805080504976

读操作

image-20200805080600771

4.10.3 硬磁盘存储器

image-20200805081054882

image-20200805081304752

4.10.4 软磁盘存储器

image-20200805082509311

image-20200805082616535

4.10.5 光盘存储器

image-20200805083954742

注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/108085066"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top