【学习笔记】计算机组成原理(三)

存储器(一)


在这里插入图片描述

一、概述

1.1 存储器分类

  1. 按存储介质分类 - 存储介质是指能寄存“0” “1”两种代码并能区别两种状态的物质或元器件

    • 半导体存储器 TTL【Transistor-Transistor Logic、双极型】、MOS【金属(metal)-氧化物(oxide)-半导体(semiconductor)】, 易失。
      • TTL:集成度低、功耗高、速度快
      • MOS:集成度高、功耗低 - 现代存储器主要由MOS构成
    • 磁表面存储器
      • 在金属或塑料基体的表面上涂一层磁性材料作为记录介质,工作时磁层随载磁体高速运转,用磁头在磁层上进行读/写操作。利用磁层的磁化不同方向存放0、1。非易失(断电也可保存数据)
      • 按载磁体的形状不同分类:磁盘、磁带、磁鼓
      • 磁盘:磁层被分成若干个同心圆,每个同心圆就是一个磁道,每个磁道分成若干个扇区,每个扇区可以保存几百个~几千个数据
    • 磁芯存储器 core memory
      • 由硬磁材料做成的环状元件,在铁氧体磁芯中穿有驱动线(通电流)和读出线。非易失(断电也可保存数据)
      • 磁芯里有导线,导线通过一定的电流,可以对磁芯进行磁化成N、S极,根据磁场方向用来保存信息。磁芯里存放相互垂直的两个方向的导线(作为磁芯的数据写入和读出的驱动线,也起到了一个寻址的作用),还有一个斜着穿过去的导线(数据读出)
    • 光盘存储器
      • 应用激光在记录介质(磁光材料)上进行读/写的存储器,非易失(断电也可保存数据)。
  2. 按存取方式分类

    • 存取时间与物理地址无关(随机访问)—— 不同的地址在相同的时间里读写信息

      • 随机存储器(RAM):在程序的执行的过程中可读可写
      • 只读存储器(ROM):在程序的执行过程中只读(可用来存放系统中的一些参数或者是系统程序)
    • 存取时间与物理地址有关(串行访问)

      • 顺序存取存储器

        例如磁带,假如信息保存在磁带上的一个指定的位置,想对这个信息进行读出或者进行写入,必须转动这个磁带直到指定位置转到磁头下才能够开始读写。

      • 直接存取存储器

        例如磁盘,磁盘在寻址过程当中,首先要找到给定的磁道。这个过程是通过磁头或者读写头在磁盘表面进行径向移动来完成,磁头停留在指定的磁道上,磁盘转动直到指定的扇区转到磁头下,才能开始读出和写入过程。

  3. 按在计算机中的作用分类

    在这里插入图片描述

    掩膜编程的只读存储器(MROM或Mask ROM):存储器在制造过程中通过掩膜工艺将数据写入

    可编程只读存储器(PROM):允许用户在出厂后一次性编程,通常用于特定应用,如微控制器

    可擦除可编程只读存储器(EPROM):可以通过紫外线照射擦除,允许用户多次编程,但擦除和编程过程需要特殊设备

    电可擦除可编程只读存储器(EEPROM或E2PROM):可以通过电信号擦除和编程,操作更为方便,适用于高集成度和便携式设备

    Flash Memory:辅助存储器和主存之间还可以放上一层存储器Flash Memory,常用的U盘,就是用Flash Memory做的。Flash Memory是半导体存储器,速度比磁盘快,比主存储器慢。Flash Memory除了作为便携式存储器之外还可以作为计算机的硬盘。需要这台计算机性能比较高或主存和辅存之间速度差距比较大。那么可以在主存和辅存之间插入一层Flash Memory作为辅助存储器缓冲,一旦主存储器需要辅助存储器当中的信息,如果这个信息已经缓存在了Flash Memory当中,主存就可以直接从Flash Memory当中直接读取信息或者是把数据直接写到Flash Memory当中。现在很多磁盘阵列,都有一些用ssd的磁盘作为缓存,ssd核心的存储材料就是Flash Memory。Flash Memory是结合了EEPROM和掩膜ROM的特点,具有高集成度、低功耗和快速擦写能力。

    Cache:高速缓冲存储器,放在主存储器和CPU之间的,速度很高,作为CPU和主存之间的一个缓冲。但实际上我们高速缓冲存储器,通常情况下,就是由静态RAM来做,比flash memory要快,比主存要快。

1.2 存储器的层次结构

存储器有3个主要性能指标:速度、容量和每位价格(简称位价)。

在这里插入图片描述

存储层次

  • 主存—辅存这个存储层次,是为了解决储存容量的不足的问题。用软硬件相结合的方法将主存和辅存连接成一个整体

    主存和辅存构成这个整体叫做虚拟存储器。在这个层次我们给出了一个新的地址空间,即虚地址。在编写程序时用到的的逻辑地址。编写程序时所写的地址实际上都是由0开始,那真正的物理地址是在这个程序被装入到内存,或者是在指令要执行的时候由特定的机构,把这个地址由虚拟地址或者由逻辑地址把它转化成内存单元当中的地址。

  • 缓存—主存这个存储层次,是为了解决主存的速度和CPU的速度之间差距就越来越大的问题。采用硬件的方法,把缓存和主存连接成一个整体

    使用的就是主存储器的地址,主存储器用到的地址称为实地址,也就是物理地址。

在这里插入图片描述

二、主存储器

2.1 主存的基本组成

在这里插入图片描述

MAR保存了要访问存储单元的地址,必须经过译码器译码以后,才能选定指定的存储单元。

MDR保存了要读出或要写入的数据,数据到底是读出还是写入,要通过读写电路和控制电路来进行控制,如果是写入的话,就把MDR当中的数据送到MAR指定的存储单元中,如果是读出,那指定的存储单元中的数据就送到MDR中。方向的控制是通过读写电路来控制的

2.2 主存与CPU之间的联系

在这里插入图片描述

驱动器、译码器和读写电路均制作在存储芯片中,而MAR和MDR 制作在 CPU 芯片内

  • 数据总线:直接连在MDR寄存器上,是双向的,可读出可读入,完成了CPU和主存之间的信息传输。
  • 地址总线:连接在MAR和主存之间,给出了要访问的存储单元的地址,是单向的,由CPU送往主存。
  • 控制总线:图中的控制总线只给出了读和写两条,都是单向的,由CPU送往主存。

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

在这里插入图片描述

假设存储字长为32位,12345678H的低位字节存放在高位地址称为大端,低位字节存放在低位地址称为小端

设地址线24根 ————按字节(Byte)寻址 —— 224 = 16MB

  • 若字长为16位 —— 按字(Word)寻址 —— 8MW
  • 若字长为32位 —— 按字(Word)寻址 —— 4MW

2.4 主存的技术指标

  1. 存储容量

    • 主存 存放二进制代码的总位数
    • 总位数 - 存储容量 =存储单元个数x存储字长
      字节总数 - 存储容量 =存储单元个数x存储字长/8
  2. 存储速度

    • 存取时间:又称为存储器的访问时间(Memory Access Time),是指启动一次存储器操作(读或写)到完成该操作所需的全部时间。存取时间分读出时间和写人时间两种。
      • 读出时间是从存储器接收到有效地址开始,到产生有效输出(即有稳定的数据输出)所需的全部时间。
      • 写人时间是从存储器接收到有效地址开始,到数据写入到被选中单元为止所需的全部时间。
    • 存取周期:存取周期(Memory Cycle Time)是指存储器进行连续两次独立的存储器操作(如连续两次读操作)所需的最小间隔时间,通常存取周期大于存取时间。
  3. 存储器带宽

    表示单位时间内存储器存取的信息量, 单位可用字/秒或字节/秒或位/秒表示。

    存取周期为500ns,每个存取周期可访问16位,则它的带宽

    1. 首先,将存取周期从纳秒转换为秒。由于1秒等于10亿纳秒(1s=109ns),所以500纳秒等于:500ns=500×10-9s=5×10−7s

    2. 接下来,计算每秒钟可以进行多少次存取操作。

      1s/(5×10−7s)=2×106次存取操作/秒

    3. 最后,计算每次存取操作的位数,然后乘以存取操作的次数,得到带宽。每次存取操作可以访问16位,所以带宽为:

      16 位/次×2×106 次/秒=32×106 位/秒=32M 位/秒

2.5 半导体存储芯片

在这里插入图片描述

计算芯片容量:

地址线(单向)数据线(双向)芯片容量
104210 x 4 位= 1K x 4 位
141214 x 1 位= 16K x 1 位
138213 x 8 位= 8K x 8 位

片选线(Chip Select):

用于选择这些芯片中的哪一个将响应当前的读/写操作。只有被选中的芯片会激活其数据输入/输出端口,参与数据传输。

CS ‾ \overline{\text{CS}} CS CE ‾ \overline{\text{CE}} CE 上划线代表低电平有效,只有处于低电平状态时,相应的芯片才会被选中

  • CS ‾ \overline{\text{CS}} CS 片选信号(Chip Select):用于激活特定的存储芯片或外围设备,以便进行数据传输,即芯片选择。可以让某一个芯片或者是某些芯片,同时进行工作。
  • CE ‾ \overline{\text{CE}} CE 芯片使能信号(Chip Enable):通常用于确定设备是否应该处于活动状态。

在这里插入图片描述

读/写控制线:

一根信号线控制: WE ‾ \overline{\text{WE}} WE(低电平写 高电平读)

两根信号线控制: OE ‾ \overline{\text{OE}} OE(允许读) WE ‾ \overline{\text{WE}} WE(允许写)

译码驱动方式:

  • 线选法

    在这里插入图片描述

    A0~A3 一共四位地址,有16个存储单元,数据线是D0~D7共8位,所以这个存储器是16 × 8位的。

    对存储单元进行布局时实际上是把它布局成一个线性的数组。

  • 重合法
    在这里插入图片描述

    把地址分成了两部分,X和Y。通常情况下叫做行地址和列地址。行,列地址分别进行译码,行地址只能有一条线是有效的,列地址也只能有一条线是有效的。

    对存储单元进行布局时是把所有的存储单元布成一个二维的阵列。

2.6 随机存取存储器(RAM)

2.6.1 静态RAM(SRAM)
2.6.1.1 原理

在这里插入图片描述

静态RAM的基本单元电路就包括了两部分,一部分就是负责存取0/1的触发器部分和控制读写的T5和T6两个晶体管。一共是六个晶体管。T7和T8是所有的存储元件共有的控制开关——叫做列开关。只有行地址和列地址都有效的存储单元才可以进行数据的读或写。

核心是利用了一个触发器,触发器由T1~T4四个晶体管构成,是一个双稳态触发器,两端用来存储信息,一端是触发器的Q端,一端是触发器的非端。

由于存储单元的核心电路是一个双稳态的触发器,要把数据分成两个方向写入,在触发器原端写入数据本身,在数据非端写入数据的非。

静态RAM基本电路的读操作

在这里插入图片描述

静态RAM基本电路的写操作

在这里插入图片描述

2.6.1.2 举例
静态 RAM 芯片举例
  • Intel2114外特性

    在这里插入图片描述

    • WE ‾ \overline{\text{WE}} WE:读写控制信号,低电平写入高电平读出

    • CS ‾ \overline{\text{CS}} CS:片选信号,只有 CS ‾ \overline{\text{CS}} CS为低电平时,这块2114芯片才会被选中

    • A0~A9:给出的地址线,一共十根地址线,所以2114共有1K个存储单元

    • I/O1~I/O4:给出的数据线,这是一个四位的存储器芯片

    • 芯片的存储容量是1K x 4位

  • Intel 2114 RAM 矩阵 (64 × 64) 读/写

在这里插入图片描述

​ 为了达到一个列地址同时控制四个列选信号的目的,将64列分成四组,每一组包含16行,四位列地址产生16个列选信号,每一组列选信号控制了每一组当中的一列。

Intel 2114 RAM 矩阵读操作

在这里插入图片描述

Intel 2114 RAM 矩阵写操作

在这里插入图片描述

2.6.2 动态RAM(DRAM)
2.6.2.1 原理

单管DRAM:Cs存储信息, T是控制管

在这里插入图片描述

三管DRAM:Cg存储信息,T1,T2,T3是控制管

在这里插入图片描述

👉 读出时,字线上的高电平使T导通,若Cs有电荷,经T管在数据线上产生电流,可视为读出“1”。若Cs无电荷,则数据线上无电流,可视为读出“0”

👉 写入时,若数据线上为高电平,经T管对Cs充电,存为"1";若数据线上为低电平,经T管对Cs放电,存为"0"

在这里插入图片描述

在这里插入图片描述

👉 读出的信息和原存的信息是相反的。如果想从单元电路当中读出并且读到正确的信号,那么在读数据线的输出端要加一个非门。

对这个基本单元电路进行读出操作的话,首先要通过预充电信号,使t4这个预充电晶体管导通。VDD就会通过T4这个晶体管,给读数据线进行通电,这个时候读数据线是高电平,表示1。如果我们进行读操作,读选择信号有效,T2被导通。如果现在Cg中保持的信息是0,也就是Cg这个电容没有进行通电,那T1的栅极是低电平,不会被导通。读数据线就会保持高电平。也就是说,如果我们保存的信息是0,在读数据线上,读出的数据就是1。

在这里插入图片描述

如果我们保存的信息是1,Cg电容是被充电,T1的栅极有电,那么T1这个管子是导通的。数据线预充电的时候保存的是1,这个高电平就会通过T2和T1这个管子进行放电,变成低电平。

在这里插入图片描述

👉 如果进行写入的话,信息和输入的信息是相同。

进行写入时写选择线有效,T3的管子导通。写数据线通过T3向Cg进行充电或者是放电,如果我们写入的信息是1,写数据线是高电平。数据线通过T3会向Cg进行充电,使Cg当中保存的是1。如果我们写入的是0,Cg会通过T3放电,Cg当中保存的信息就变成0。

2.6.2.2 举例

三管动态RAM 芯片 (Intel 1103)举例

在这里插入图片描述

在这里插入图片描述

行地址通过译码产生的信号,每一行都对应两条控制信号,即读选择线和写选择线,也就是说在行地址译码器参加译码的不止有地址,同时还有读写控制信号。

刷新发大器:由于动态RAM是使用电容存储信息,而电容经过一段时间会漏电,所以需要刷新发大器定期来进行数据重现。

单管动态RAM 芯片 intel4116(16Kx1位)举例

在这里插入图片描述

这是一个16Kx1位的存储芯片,按理应有14根地址线,但为了减少芯片封装的引脚数,地址线只有7根。因此,地址信息分两次传送,先送7位行地址保存到芯片内的行地址缓存器内,再送7位列地址保存到列地址缓存器中。芯片内有时序电路,它受行地址选通 RAS ‾ \overline{\text{RAS}} RAS、列地址选通 CAS ‾ \overline{\text{CAS}} CAS以及写允许信号 WE ‾ \overline{\text{WE}} WE控制。

在这里插入图片描述

读放大器:每一列上都有一个读放大器,读放大器实际上是个跷跷板电路,跷跷板电路就是如果一端强制为1的话,那另一端就变成0。即读放大器的右侧与输入信息同相,左侧与输入信息反相。在读放大器左端存放的数据,在存储的时候取了一次反,读取的时候又取了一次反,所以读放大器的跷跷板电路并不影响数据的正确性。

2.6.2.3 DRAM刷新

原因:动态RAM是利用电容存储电荷的方式存储信息,电容小很容易漏电,在一段时间之内如果不对电容当中的信息进行再生的话,电容信息就会丢失(原来保存的"1"会变成"0")

特点:只与行地址有关,与列地址无关——每一次刷新就是刷新DRAM当中一行所有的基本单元电路

方法:

  • 集中刷新:将刷新的时间集中在相对集中的时间段来操作。

    在这里插入图片描述

    假设存取周期为0.5us,要刷新动态电容的周期假设是2ms,即动态RAM中的所有电容都要在2ms内完成信息的再生,2ms内对DRAM内所有的行进行刷新即对128行的每一行进行刷新。2ms一共是4000个存取周期,4000-128=3872个周期可以供CPU、I/O对DRAM芯片进行读写操作,128周期专用于刷新操作即在这128周期内无论CPU还是I/O都无法和DRAM进行信息交换——这段时间称为"死区"。

  • 分散刷新:没有死区,但把读取周期加长了,芯片的性能下降了

    在这里插入图片描述

  • 异步刷新:

    在这里插入图片描述

    2ms刷新128行,每经过15.6μs刷新一行即2ms分成128份,一份15.6μs。相对15.6μs里属于集中式刷新,相对于2ms来说属于分散式刷新。如果在CPU和I/O不访存的时候进行刷新就不会出现"死区"

2.6.3 比较

在这里插入图片描述

2.7 只读存储器(ROM)

2.7.1 发展历程
  • 早期的只读存储器----在厂家就写好内容
  • 改进1:用户可以自己写----一次性,破坏性的,无法修改
  • 改进2:可以多次写----能对信息进行擦除,但是擦除麻烦,还需要单独购买特殊设备进行擦除
  • 改进3:电可擦写----特定设备
  • 改进4:电可擦写----直接连接到计算机进行擦写
2.7.2 掩膜ROM(MROM)
  • 行列选择交叉处有MOS管----“1”
  • 行列选择交叉处无MOS管----“0”
2.7.3 PROM(一次性编程)

在这里插入图片描述

2.7.4 EPROM(多次性编程)

在这里插入图片描述

利用紫外线照射来擦洗浮动栅

2.7.5 EEPROM(多次性编程)
  • 电可擦写
  • 可局部擦写
  • 可全部擦写
2.7.6 Flash Memory(闪速型/快擦型存储器)

它既有EPROM的价格便宜、集成度高的优点,又有EEPROM电可擦除重写的特性。

2.8 存储器与CPU的连接

2.8.1 存储器容量扩展
  • 位扩展 —— 增加存储字长

在这里插入图片描述

​ 两个芯片的片选和读写连在一起,同时工作

  • 字扩展 —— 增加存储字的数量

在这里插入图片描述

​ 这两块芯片不能同时进行工作,否则数据会产生混乱,所以需要A10做片选信号。

​ 地址线:000 0000 0000 ~ 011 1111 1111属于第一个芯片;

​ 100 0000 0000 ~ 111 1111 1111属于第二个芯片

  • 同时扩展

在这里插入图片描述

2.8.2 存储器与CPU的连接
  • 地址线的连接

    存储芯片的容量不同,其地址线数也不同,CPU的地址线数往往比存储芯片的地址线数多。
    通常总是将CPU地址线的低位与存储芯片的地址线相连。CPU地址线的高位或在存储芯片扩充时用,或做其他用途,如片选信号等。

  • 数据线的连接

    CPU的数据线数与存储芯片的数据线数也不一定相等。此时,必须对存储芯片扩位使其数据位数与CPU的数据线数相等。

  • 读/写命令线的连接

    CPU的读写命令线通常直接与存储芯片的读写控制端相连,通常高电平为读,低电平为写。

  • 片选线的连接

    • 片选有效信号与CPU的访存控制信号 MREQ ‾ \overline{\text{MREQ}} MREQ(低电平有效)有关,因为只有当CPU要求访存时,才需选择存储芯片。若CPU访问I/O,则 MREQ ‾ \overline{\text{MREQ}} MREQ为高电平,表示不要求存储器工作。

    • 片选有效信号还和地址有关,因为CPU的地址线往往多于存储芯片的地址线,故那些未与存储芯片连上的高位地址必须和访存控制信号共同产生存储芯片的片选信号。通常需用到一些逻辑电路,如译码器及其他各种门电路,来产生片选有效信号。

  • 合理的选择存储芯片

    • 芯片类型

      ROM:保存系统程序,配置信息
      RAM:用户的程序,系统程序运行的区域

    • 芯片参数

      芯片数量尽可能少,片选逻辑尽可能简单。

2.8.3 例题
例一

在这里插入图片描述


步骤:

在这里插入图片描述

74138译码器实质是3-8译码器,意思是将3位二进制转换为1位八进制数(0~7的数字),CBA是100,转换成八进制为4,就从Y4出去

例二

在这里插入图片描述


步骤:

在这里插入图片描述

例三

在这里插入图片描述


解:

在这里插入图片描述

2.9 存储器的校验

2.9.1 汉明码

编码的最小距离

​ L−1=D+C(D≥C)

  • L----编码最小距离
  • D----检查错误的位数
  • C----纠正错误的位数

代码长度与检测位位数的关系

​ 2k ≥ n + k + 1

  • n----欲检测的二进制代码
  • k----新增添的检测位数
n12~45~1112~2627~5758~120
k234567

在这里插入图片描述

2.10 提高访存速度的措施(解决存储墙)

  • 采用高速器件
  • 采用层次结构Cache-主存
  • 调整主存结构
2.10.1 单体多字系统

在这里插入图片描述

优点:

  • 增加存储器的带宽

缺点:

  • 写数据不方便,如果要实现CPU字长的写入,还要有专门的硬件,使存储器更加复杂。

    (在写入W位时,但是数据寄存器4W位都会被写入给定的存储单元中,会造成给定存储字有4W位被错误修改)

  • 指令和数据在主存内必须是连续存放的,否则取数据效率低

2.10.2 多体并行系统
  1. 高位交叉

    体号:完成对存储体的选址在哪一个存储体当中——选定了一个存储体

    体内地址:利用体内地址去选定这个存储体当中某一个存储单元

    缺点:程序在计算机当中是按顺序进行存储,所以虽然存储器实现了并行的基础,但是按照程序或数据的存储特征来说,会造成一个存储体非常繁忙,其余存储体空闲的问题。所以适合存储器的容量扩展,并不适合提高存储器的带宽

    在这里插入图片描述

  2. 低位交叉

    各个体轮流编址

    在这里插入图片描述

    在这里插入图片描述

    特点:在不改变存取周期的前提下,增加存储器的带宽。

    在这里插入图片描述

    在这里插入图片描述

  3. 高性能存储芯片

    在这里插入图片描述
    参考:
    教材:计算机组成原理 (唐朔飞).pdf
    视频:https://www.bilibili.com/video/BV1t4411e7LH?p=1&vd_source=a89593e8d33b31a56b894ca9cad33d33

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值