计算机组成原理|第四章(笔记)

目录

  • 第四章 存储器
    • 4.1 概述
      • 4.1.1 存储器分类
      • 4.1.2 存储器的层次结构
    • 4.2 主存储器
      • 4.2.1 概述
      • 4.2.2 半导体存储芯片简介
      • 4.2.3 随机存取存储器(RAM)
      • 4.2.4 只读存储器(ROM)
      • 4.2.5 存储器与CPU的连接
      • 4.2.6 存储器的校验
      • 4.2.7 提高访存速度的措施
    • 4.3 高速缓冲存储器(Cache)
      • 4.3.1 概述
      • 4.3.2 Cache --- 主存地址映象
      • 4.3.3 替换算法
    • 4.4 辅助存储器
      • 4.4.1 概述
      • 4.4.2 磁记录原理和记录方式
      • 4.4.3 硬磁盘存储器
      • 4.4.4 软磁盘存储器
      • 4.4.5 光盘存储器
      • 4.4.6 循环冗余校验码(CRC码)
      • 4.4.7 光盘存储器


上篇:第三章:系统总线

第四章 存储器


4.1 概述

存储器是计算机系统中的记忆设备,用来存放程序和数据。是计算机系统中最重要的组件之一,执行程序时所需要的指令、数据都来自于存储器,程序的执行结果也保存在存储器当中,另外,各种文档、音频资料等也是保存在存储器当中。


4.1.1 存储器分类

存储介质分类

  • 半导体存储器:存储元件由半导体器件组成的,优点是体积小、功耗低、存取时间短,缺点是当电源消失时,所存信息也会消失,它是一种易失性存储器。
    • 双极型(TTL)半导体存储器:高速
    • MOS 半导体存储器:制造简单、成本低廉、功耗小
  • 磁表面存储器:在金属或塑料基体的表面上涂一层磁性材料作为记录介质,工作时磁层随载体高速运转,用磁头磁层上进行读写操作,不易失。
    • 磁盘
    • 磁带
    • 磁鼓
  • 磁心存储器:由硬磁材料、环状元件组成,在磁心中穿有驱动线和读出线进行读写操作,不易失的永久存储器。
  • 光盘存储器:由激光、磁光材料组成,应用激光在记录介质上进行读写的存储器,具有非易失性的特点。

存取方式分类

  1. 存取时间与物理地址无关(随机访问)
    • 随机存储器(RAM):在程序的执行过程中可读可写
    • 只读存储器(ROM):在程序的执行过程中只读
  2. 存取时间与物理地址有关(串行访问)
    • 顺序存取存储器 — 磁带
    • 直接存取存储器 — 磁盘

在计算机中的作用分类
在这里插入图片描述


4.1.2 存储器的层次结构

存储器的三个特性:速度容量价格/位(简称位价)

存储器分层结构图:
在这里插入图片描述
CPU 不能直接访问辅存,辅存只能与主存交换信息,因此辅存的速度可以比主存慢得多。

存储器的层次结构主要体现在缓冲---主存主存---辅存这两个存储层次上。

在这里插入图片描述
从 CPU 角度来看,缓存—主存 这一层次的速度接近于缓存,高于主存;主存–辅存 这一层次,从整体分析,其速度接近主存,容量接近于辅存。现代的计算机系统几乎都具有这两个存储层次,构成了缓存、主存、辅存三级存储系统。

主存—辅存这一层次形成了虚拟存储系统。在这个系统中,程序员编程的地址范围与虚拟存储器的地址空间相对应。虚拟存储器中用到的地址叫作虚地址(虚存地址、虚拟地址)或叫逻辑地址,而主存的实际地址称为物理地址实地址


4.2 主存储器


4.2.1 概述

主存储器是存储器子系统中的一类,用来存放程序和数据,它可以直接CPU 交换信息。

主存中还必须配置两个寄存器 MARMDR

  • MAR(Memory Address Register):存储器地址寄存器,用来存放欲访问的存储单元的地址。
  • MDR(Memory Data Register):存储器数据寄存器,用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码。

主存的基本组成:
在这里插入图片描述

驱动器、译码器和读写电路均制作在存储芯片中,而 MAR 和 MDR 制作在 CPU 芯片内,存储芯片和 CPU 芯片可通过总线连接。

实际上,根据 MAR 中的地址访问某个存储单元时,还需要经过地址译码、驱动等电路,才能找到所需访问的单元。读出时,需经过读出放大器,才能将被选中单元的存储字送到 MDR。写入时,MDR 中的数据也必须经过电路才能真正写入到被选中的单元中。

主存和 CPU 的联系:
在这里插入图片描述
CPU 和主存之间的连接信号分成:数据总线、控制总线和地址总线。

数据总线完成 CPU 和主存之间的信息传输,所以数据总线直接连在 MDR 寄存器上,是双向的,可能读出也可能进行写入;地址总线连接在 MAR 寄存器和主存之间,给出要访问内存单元的地址,从 CPU 送到主存,所以是单向的;控制总线也是单向的,由 CPU 送至主存储器。

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

主存各存储单元的空间位置是由单元地址号来表示的,而地址总线是用来指出存储单元地址号的,根据该地址可读出一个存储字。

在主存中数据的存放可以按照:① 以高位字节地址为字地址;② 以低位字节地址为字地址。两种方式进行存放。它的原理可参考博客:【主存中存储单元地址的分配】

主存的技术指标:

  • 存储容量:是指主存能存放二进制代码的总数。
    • 存储容量 = 存储单元个数 × 存储字长
  • 存储速度:是由存取时间和存取周期来表示的。
    • 存取时间:又叫存储器的访问时间,它是指启动一次存储器操作(读或写)到完成该操作所需的全部时间。
    • 存取周期:是指存储器进行连续两次独立的存储器操作(如连续两次读操作)所需的最小间隔时间。
  • 存储器的带宽:单位时间(位/秒)里能够读取或者是写入多少位数据。

4.2.2 半导体存储芯片简介

半导体存储芯片的基本结构:
在这里插入图片描述

  • 译码驱动:能把地址总线送来的信号翻译成对应存储单元的选择信号,该信号在读写电路的配合下完成对被选中单元的读写操作。
  • 读写电路:包括读出放大器和写入电路,用来完成读写操作。

存储芯片是通过地址总线、数据总线和控制总线与外部连接:

  • 地址线:单向输入,其位数与芯片容量有关
  • 数据线:双向,其位数与芯片可读出或写入的数据位数有关

地址线和数据线共同反映存储芯片的容量。

地址线数据线芯片容量
104210× 4 = 1K × 4 位
141214× 1 = 16K × 1 位
138213× 8 = 8K × 8 位
  • 控制总线
    • 读/写控制线:决定芯片进行读/写操作
      • WE ‾ \overline{\text{WE}} WE:低电平写,高电平读
      • OE ‾ \overline{\text{OE}} OE: 允许读
    • 片选线:选择存储芯片
      • CS ‾ \overline{\text{CS}} CS:芯片选择信号
      • CE ‾ \overline{\text{CE}} CE:芯片使能信号

用 16K × 1 位的存储芯片组成 64K × 8 位的存储器
在这里插入图片描述

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

半导体存储芯片的译码驱动方式有两种:线选法重合法。关于译码不太理解的可以去看:《数字逻辑设计-哈工大:P35》

  • 线选法
    在这里插入图片描述
    上图是一个 16 × 1 字节线法存储芯片的结构示意图,它的特点是用一根字选线(字线),直接选中一个存储单元的各位(如一个字节),这种方式结构比较简单,但只适用于容量不大的存储芯片。

  • 重合法
    在这里插入图片描述
    上图是一个1K × 1 位重合法结构示意图,由于被选单元是由 X、Y 两个方向的地址决定的,故称重合法。


4.2.3 随机存取存储器(RAM)

随机存储器按存储信息原理的不同可分为:静态 RAM动态 RAM

静态 RAM(Static RAM 或记作 SRAM):

存储器中用于寄存 “0” 和 “1” 代码的电路叫做存储器的基本单元电路。

(1)静态 RAM 的基本单元电路

在这里插入图片描述

  • T1 ~ T4 触发器
  • T5、T6 行开关
  • T7、T8 列开关,一列共用
  • A 触发器原端
  • A 触发器非端

静态 RAM 基本单元的 读操作:① 行选 – > T5、T6 开;② 列选 – > T7、T8 开;③ 读选择有效;④ VA – > T6 – > T8 – > 读放 – > DOUT

静态 RAM 基本单元的 写操作:① 行选 – > T5、T6 开;② 列选 – > T7、T8 开;③ 写选择有效;④ DIN – > 两个写放 (左:DIN – > 相反 – > T7 – > T5 – > A;右:DIN – > T8 – > T6 – > A)

(2)静态 RAM 芯片举例(Intel 2114 芯片)

在这里插入图片描述

  • A0 ~ A9 为地址输入端
  • I / O1 ~ I / O4 为数据输入 / 输出端
  • CS ‾ \overline{\text{CS}} CS 为片选信号(低电平有效)
  • WE ‾ \overline{\text{WE}} WE 为允许信号(低电平为写)
  • VCC 为电源端
  • GND 为接地端

动态 RAM(Dynamic RAM 或 DRAM):

动态 RAM 都是靠电容存储电荷的原理来寄存信息的,若电容上存有足够多的电荷表示存 “1”,电容上无电荷表示存 “0”。

(1)动态 RAM 的基本单元电路

常见动态 RAM 的基本单元电路可分为三管式单管式两种。

  • 三管 MOS 动态 RAM 基本单元电路
    在这里插入图片描述

    • 读出时,先对预充电管 T4 置一预充电信号(在存储矩阵中,每一列共用一个 T4管),使读数据线高达电平 VDD。然后由读选择线打开 T2,若 T1的极间电荷 Cg存有足够多的电荷(被认为原存 “1”),使 T1 导通,则因 T2、T1导通接地,使读数据线降低为零电平,读出 “0” 信息。若 Cg 没有足够电荷(原存 “0”),则 T1截止,读数据线为高电平不变,读出 “1” 信息。可见,由读出线的高低电平可区分其是读 “1” 还是读 “0”,只是它与原存信息反相。
    • 写入时,将写入信号加到写数据线上,然后由写选择线打开 T3,这样,Cg便能随输入信息充电(写 “1”)或放电(写 “0”)。
  • 单管 MOS 动态 RAM 基本单元电路
    在这里插入图片描述

    • 读出时,字线上的高电平使 T 导通,若 CS 有电荷,经 T 管在数据线上产生电流,可视为读出 “1”。若 CS 无电荷,则数据线上无电流,可视为读出 “0”。读操作结束时,CS 的电荷已泄放完毕,故是破坏性读出,必须再生。
    • 写入时,字线为高电平使 T 导通,若数据线上为高电平,经 T 管对 CS 充电,使其存 “1";若数据线为低电平,则 CS 经 T 放电,使其无电荷而存 “0”。

(2)动态 RAM 芯片举例

1K×1 位三管 MOS 动态 RAM 结构示意图:
在这里插入图片描述
4116 动态 RAM(16K×1位)芯片结构:

在这里插入图片描述

(3)动态 RAM 的刷新

动态 RAM 是利用电容存储电荷的方式来保存信息的,电容很容易漏电,在一段时间之内,如果不对电容当中的信息进行进行再生的话,电容信息就会丢失,因此,必须采用定时刷新的方法,在一定的时间内,对动态 RAM 的全部基本单元电路必作一次刷新,一般取 2ms,这个时间叫作刷新周期,或再生周期

对动态 RAM 的刷新只和行地址有关,和列地址无关,也就是说每一次刷新操作,刷新的是动态 RAM 当中的每行所有的基本单元电路。

动态 RAM 的刷新有三种方法:

  • 集中刷新:是在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读/写操作。
  • 分散刷新:是指对每行存储单元的刷新分散到每个读/写周期内完成。
  • 异步刷新:集中刷新与分散刷新相结合,

动态 RAM 和 静态 RAM 的比较:

比较项目DRAMSRAM
存储原理电容触发器
集成度
芯片引脚
功耗
价格
速度
刷新

4.2.4 只读存储器(ROM)

按 ROM 的原始定义,一旦注入原始信息后是不能改变的,但随着用户的需要,希望能修改 ROM 原始信息,便出现了用户可以一次性写的 ROM,之后又出现了能对信息进行擦除,并且可以多次写的 ROM。

1. 掩膜 ROM(MROM)

掩膜 ROM(MacroRead Only Memory),中文全称掩膜式只读存储器。掩膜式只读存储器中的信息是已经被生产厂家制作到芯片中的,是不可更改的,使用者不能对其进行编写。

在这里插入图片描述

行列选择线交叉处有 MOS 管为 “1”,行列选择线交叉处无 MOS 管为 “0”。

2. PROM(一次性编程)

PROM 是可以实现一次性编程的只读存储器。
在这里插入图片描述
如上图所示是一个 双极型镍铬熔丝式单元电路 ,这里面有一个熔丝,如果进行读出或者写入的话,就可以通过熔丝通和断来保存信息,熔丝断为 “0”,熔丝未断为 “1”,熔丝断了之后是不能再给它接回去的,所以是一次性编程的 ROM。

3. EPROM(多次性编程)

EPROM 是一种可擦洗可编程的只读存储器。它可以由用户对其所存信息作任意次的改写。

目前用得较多的 EPROM 是用浮动栅雪崩注入型 MOS 管构成,又称 FAMOS 型 EPROM。

在这里插入图片描述
D 端加正电压 – > 形成浮动栅 – > S 与 D 不导通为 “0”

D 端不加正电压 – > 不形成浮动栅 – > S 与 D 导通为 “1”

如果需要进行重新写入的话,就需要驱散浮动栅,浮动栅的驱散可以直接使用紫外线照射。

4. EEPROM(多次性编程)

EEPROM 是指带电可擦可编程只读存储器,是一种掉电数据不丢失的存储芯片。EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程,一般用在即插即用。

在这里插入图片描述
5. Flash Memory(闪速型存储器)

快闪存储器(英语:flash memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在计算机与其他数字产品间交换传输数据,如储存卡U盘。闪存是一种特殊的、以宏块抹写的 EPROM。早期的闪存进行一次抹除,就会清除掉整颗芯片上的数据。

在这里插入图片描述


4.2.5 存储器与CPU的连接

1. 存储容器的扩展

由于单片存储芯片的容量总是有限的,很难满足实际的需要,因此,必须将若干存储芯片连在一起才能组成足够容量的存储器,这就叫存储容量的扩展,通常有位扩展字扩展

(1)位扩展

位扩展是指增加存储字长,如 2 片 1K×4 位的芯片,可组成 1K×8 位的存储器。

在这里插入图片描述
又如,将 8 片 16K×1 位的存储芯片连接,可组成一个 16K×8 位的存储器。

在这里插入图片描述

(2)字扩展

字扩展是指增加存储器字的数量,如用 2 片 1K×8 位的存储芯片,可组成一个 2K×8 位的存储器。

在这里插入图片描述

(3)字、位扩展

字、位扩展是指既增加存储字的数量,又增加存储字长,如用 8 片 1K×4 位的芯片组成 4K×8 位的存储器。
在这里插入图片描述

2. 存储器与 CPU 的连接

  • 地址线的连接
    • 存储芯片容量不同,其地址线数也不同,而 CPU 的地址线数往往比存储芯片的地址线数要多。通常总是将 CPU 地址线的低位与存储芯片的地址线相连。CPU 地址线的高位或作存储芯片扩充时用,或作其他用法,如作为片选信号等。
  • 数据线的连接
    • CPU 的数据线数与存储芯片的数据线数也不一定相等,此时,必须对存储芯片扩位,使其数据位数与 CPU 的数据线数相等。
  • 读/写命令线的连接
    • CPU 读/写命令线一般可直接与存储芯片的读/写控制端相连,通常高电平为读,低电平为写。
  • 片选线的连接
    • 片选信号的连接是 CPU 与存储芯片正确工作的关键,由于存储器是由许多存储芯片叠加组成的,哪一片被选中完全取决于该存储芯片的片选控制端 CS ‾ \overline{\text{CS}} CS 是否能接收到来自 CPU 的片选有效信号。片选有效信号与 CPU 的访存控制信号 MREQ ‾ \overline{\text{MREQ}} MREQ(低电平有效)和地址有关。
  • 合理选择存储芯片
    • 合理选择存储芯片主要是指存储芯片类型(RAM 或 ROM)和数量的选择。通常选用 ROM 存放系统程序、标准子程序和各类常数等。RAM 则是为用户编程而设置的。此外,在考虑芯片数量时,要尽量使连线简单方便。
  • 其他
    • 比如时序的配合问题、速度问题、负载匹配问题等等。

4.2.6 存储器的校验

在计算机运行过程中,由于种种原因致使数据在存储过程中可能出现差错,所以需要对存储器中的信息进行校验。

编码的检测能力和纠错能力和什么有关?
任意两组合法代码之间 二进制位最少差异数,也就是编码的最小距离


纠错理论公式:L - 1 = D + C (PS:D>=C)

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

1. 海明码的组成

海明码又称汉明码,是由 Richard Hanming 于 1950 年提出的,它具有一位纠错能力

  • 海明码采用奇偶校验
  • 海明码采用分组校验
    在这里插入图片描述
  • 海明码的分组是一种非划分方式,分为 3 组,每组有 1 位校验位,共包括 4 位数据位
    在这里插入图片描述
P3P2P1校验结果
000无差错
001P1 出错
101P5 出错
110P6 出错
111P7 出错

校验位是只对一组数据进行校验,不会和其它组共有位置,所以海明码的校验位在 P1、P2、P4 ,也就是 2x 位上。

组成海明码的三要素:

  • 海明码的组成需添加 2k>= n + k + 1 位检测位
  • 检测位的位置在 2i( i = 0,1,2,3,…)
  • 检测位的取值与该位所在的检测 “小组” 承担的奇偶校验任务有关

举例:求 0101 按 “偶校验” 配置海明码
解:因为 n = 4 ,根据 2k>= n + k + 1 可得 k = 3
汉明码排序如下:
>![在这里插入图片描述](https://img-blog.csdnimg.cn/af27d4fa2284427296313a3534165965.png)
C1 对应 P1、P3、P5、P7 所在的组,P3、P5、P7 中有1个0和2个1,由于是偶校验,所以C1 为 0,同理可得 C2 为1,C4 为 0
即 0101 的汉明码为 0100101

2. 海明码的纠错

海明码的纠错过程实际上是对传送后的海明码形成新的检测位 Pi( i = 0,1,2,4,8,…),根据 Pi 的状态,便可直接指出错误的位置。Pi 的状态是由原检测位 Ci 及其所在小组内 “1” 的个数确定的。

举例:已知接收到的汉明码为 0100111,按偶配原则配置,原本传送的信息是什么?
在这里插入图片描述
则新的检测位为
在这里插入图片描述
即 P4P2P1 = 110
第 6 位出错,可纠正为 0100101
故要求传送的信息为 0101

PS:这一块东西可能有点难以理解,可参见博客:《汉明码(海明码)》通俗易懂,或者是看:B站:计算机组成原理(唐朔飞)-P36~P38


4.2.7 提高访存速度的措施

在计算机的发展过程中,CPU 速度的提高是非常快的,但是存储器速度的提升却非常的有限,两者之间的差在逐渐的增大,CPU 执行程序时所需要的指令、数据都来自于内存,运行结果也要保存到内存当中,如果存储器很慢,CPU 再快也无法提高整机的速度,这种现象在计算机结构领域称为存储墙,是目前影响计算机性能的主要因素之一。

为了解决此类问题,可通过以下几种方式去解决:

  • 采用高速器件
  • 采用层次结构 Cache-主存
  • 调整主存结构
    • 单体多字系统
      在这里插入图片描述
    • 多体并行系统
      在这里插入图片描述

4.3 高速缓冲存储器(Cache)


4.3.1 概述

高速缓冲存储器是存在于主存(DRAM)CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。

在这里插入图片描述
程序访问的局部性原理:程序访问的局部性原理包括时间局部性空间局部性时间局部性是指在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环。空间局部性是指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是连续的,因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组等形式簇聚地存储在一起的。

高速缓冲技术就是利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的、容量较小的Cache 中,使 CPU 的访存操作大多针对 Cache 进行,从而大大提高程序的执行速度。

Cache 的工作原理:

在这里插入图片描述
缓存块 C 远小于主存的块数 M,内存块和 Cache 块的大小是相同的,所以块内地址位数也是相同的,另外,一个块在内存和 Cache 之间进行传送的时候是整体进行传送,块内字节的顺序不会发生任何变化,即内存的块内地址部分和 Cache 的块内地址部分的指是完全相等的。Cache 上有一个标记,它标记的是主存块和 Cache 块之间的对应关系,如果一个主存块调用到 Cache 当中,就能将主存块号写到标记当中,将来 CPU 给出一个内存地址,它希望在 Cache 当中访问到这个数据,首先要确定这个块是否已经被送到 Cache 当中,就会拿给出地址的主存块号和 Cache 中的标记进行对比,如果和某一个标记正好相等并且 Cache 块是有效的,这个 Cache 块中就保存了需要在内存中访问的信息。

主存和缓存之间是按照进行存储的,按块进行传送的、块的大小是相同的、块内地址也是完全相同的。

任何时刻都有一些主存块处于缓存块中。CPU 欲读取主存某字时,有两种可能;一种时所需要的数已在缓存中,即可直接访问 Cache;另一种事所需的数不在 Cache 内,此时需将该数所在的主存整个字块一次调入 Cache 种。第一种情况称为 CPU 访问 Cache 命中,第二种情况称 CPU 访问 Cache 不命中,通常用命中率来衡量 Cache 的效率,命中率是指 CPU 要访问的信息已在 Cache 内的比率,它是高速缓冲存储器最重要的技术指标,命中率与 Cache 的容量块长有关,一般而言,Cache 容量越大,其 CPU 的命中率就越高。

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

Cache - 主存系统的效率:效率 e命中率 有关,e = (访问 Cache 的时间 / 平均访问时间) × 100%

Cache 的基本结构:

在这里插入图片描述
高速缓冲存储器主要由三大部分组成:

  • Cache 存储体:存放由主存调入的指令与数据块
  • 地址转换部件:建立目录表以实现主存地址到缓存地址的转换
  • 替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件

Cache 的读操作:

在这里插入图片描述

Cache 写操作:

在对 Cache 块内写入信息的时候,必须与被映射象的主存块内的信息完全一致。通常有以下几种方法来保证 Cache 与主存内容保持一致性的问题。

  • 写直达法
    • 写操作时数据既写入 Cache 又写入主存
    • 写操作时间就是访问主存的时间
    • Cache 块退出时,不需要对主存执行写操作,更新策略比较容易实现
  • 写回法
    • 写操作时只把数据写入 Cache 而不写入主存
    • 当 Cache 数据被替换出去时才写回主存
    • 写操作时间就是访问 Cache 的时间
    • Cache 块退出时,被替换的块需写回主存,增加了 Cache 的复杂性

Cache 的改进:

  • (1)增加 Cache 的级数
    • 片载(片内)缓存:单一缓存,缓存直接与 CPU 制作在同一个芯片内
      • 优点:① 外部总线的利用率高;② 存取速度快;③ 系统的整体效率高
      • 缺点:容量不大,CPU 欲访问的信息可能不在缓存中,就会去访问主存,如果访问次数多了,就会影响整机的速度
    • 片外缓存:两级缓存,在主存和片内缓存之间,再加一级缓存
      • 优点:由静态 RAM 组成,从片外缓存调入片内缓存的速度jjiu能提高,而 CPU 占用外部总线的时间就会大大下降,整机工作速度明显提高
  • (2)统一缓存和分立缓存
    • 统一缓存:是指指令和数据都存放在同一缓存内的 Cache
    • 分开缓存:是指指令和数据分别存放在两个缓存中,一个叫指令 Cache,一个叫数据 Cache
    • 两种缓存的选用主要考虑如下两个因素:
      • 与主存结构有关
      • 与机器对指令执行的控制方式有关

4.3.2 Cache — 主存地址映象

由主存地址映象到 Cache 地址称为地址映象,可分为:① 直接映象;② 全相联映象;③ 组相联映象;④ 段相联映象

  • 直接映射:是指主存当中任意一个给定的,它只能映射到,或者是只能装载到某一个指定的 Cache 块当中。
    在这里插入图片描述

    • 每个缓存块 i 可以和若干主存块对应,但是每个主存块 j 只能和一个缓存块对应
    • 优点:实现简单,只需利用主存地址的某些位直接判断,即可确定所需字块是否在缓存中。
    • 缺点:不够灵活,每个主存块只能固定地对应某个缓存块;当程序恰好要重复访问对应同一缓存位置的不同主存块时,就要不停地进行替换,从而降低了命中率。
  • 全相联映射:允许主存中每一字块映象到 Cache 中任何一块位置上。
    在这里插入图片描述

    • 优点:方式灵活,命中率更高,缩小了块冲突率。
    • 缺点:所需的逻辑电路甚多,成本较高,实际的 Cache 还要采用各种措施来减少地址的比较次数。
  • 组相联映射:是对直接映象和全相联映象的一种折衷。
    在这里插入图片描述

    • 某一主存块 j 按模 Q 映射到缓存的第 i 组中的任一块
  • 段相联映射:是直接映象和全相联映象两者结合的又一种方式。它是将主存和 Cache 都分成若干段,且使它们每段都包含的块数相等,段之间采用全相联映象,段内块之间采用直接映象。


4.3.3 替换算法

当新的主存块需要调入 Cache 并且它的可用空间位置又被占满时,就产生了一个替换算法问题。

  • 先进先出(FIFO)算法

    • FIFO 算法的原则总是将最先调入 Cache 的字块替换出来,它不需要随时记录各字块的使用情况,所以容易实现、开锁小。但其缺点是可能把一些需要经常使用的程序(如循环程序〉块也作为最早进入 Cache的块而被替换出去。
  • 近期最少使用(LRU)算法

    • LRU算法是将近期最少使用的块替换出来。它需要随时记录Cache中各个字块的使用情况,以便确定哪个字块是近期最少使用的字块。LRU算法的平均命中率比FIFO高,尤其是当分组容量加大时(组相联映象〉更能提高LRU算法的命中率。

4.4 辅助存储器


4.4.1 概述

辅助存储器作为主存的后援设备,又称作外部存储器,简称外存,它与主存一起组成了存储器系统的 主存 --- 辅存层次,与主存相比,辅存具有容量大、速度慢、价格低、可脱机保持信息等特点,属 “非易失性” 存储器。

特点:不直接参与 CPU 交换信息

目前,广泛用于计算机系统的辅助存储器有硬磁盘、软磁盘、磁带、光盘等。前三种均属磁表面存储器
在这里插入图片描述
磁表面存储器是在不同形状(如盘状、带状等)的载体上,涂有磁性材料层,工作时,靠载磁体高速运动,由磁头在磁层上进行读写操作,信息被记录在磁层上,这些信息的轨迹就是磁道

磁表面存储器的主要技术指标:

  • (1)记录密度:是指单位长度内所存储的二进制信息量。
  • (2)存储容量:是指外存能存储的二进制信息总数量,一般以位或字节为单位。
  • (3)平均寻址时间:分为两个部分,一个是磁头寻找到目标磁道的寻道时间,其二是磁头等待欲读写的磁道区段旋转到磁头下方所需要的等待时间。
  • (4)数据传输率:是指单位时间内磁表面存储器向主机传送数据的位数或字节数。
  • (5)误码率:是衡量磁表面存储器出错概率的参数,它等于从辅存出错时,出错信息位数和读出的总信息位数之比。

4.4.2 磁记录原理和记录方式

磁记录原理:

磁表面存储器通过磁头和记录介质的相对运动完成读写操作。

  • 写操作:记录介质在磁头下方匀速通过,对写入线圈输入一定方向和大小的电流,使磁头导磁体磁化,产生一定方向和强度的磁场,根据写入驱动电流的不同方向,使磁层表面被磁化的极性方向不同,以区别记录 “0” 或 “1”。
    在这里插入图片描述
  • 读操作:记录介质在磁头下方匀速通过,磁头相对于一个个被读出的磁化单元作切割磁力线的运动,从而在磁头读线圈中产生感应电势,其方向正好和磁通的变化方向相反,由于原来磁化单元的剩磁通 ф 的方向不同,感应电势方向也不同,便可读出 “1” 或 “0” 两种不同信息。
    在这里插入图片描述

磁表面存储器的记录方式:

  1. 归零制(RZ)
  2. 不归零制(NRZ)
  3. 见 “1” 就翻的不归零制(NRZ1)
  4. 调相制(PM)
  5. 调频制(FM)
  6. 改进调频制(MFM)

评价记录方式的主要指标为:① 编码效率;② 自同步能力


4.4.3 硬磁盘存储器

硬磁盘存储器的类型:

按照磁头是否固定可划分为:

  • 固定磁头:磁头位置固定不动,磁盘上的每一个磁道都对应一个磁头,特点是省去了磁头沿盘片径向运动所需寻找磁道的时间,存取速度快,只要磁头进入工作状态即可进行读写操作。
    在这里插入图片描述
  • 移动磁头:在存取数据时,磁头在盘面上作径向运动,这类存储器可以由一个盘片组成,也可由多个盘片装在一个同心主轴上,每个记录面各有一个磁头。
    在这里插入图片描述

按硬盘盘片是否可更换分为:

  • 可换盘磁盘存储器:是指盘片可以脱机保存。
  • 固定盘磁盘存储器:是指磁盘不能从驱动器中取下,更换时要把整个 “头盘组合体” 一起更换。

硬磁盘存储器的结构:

硬磁盘存储器是由磁盘驱动器磁盘控制器盘片组成。

在这里插入图片描述
硬磁盘存储器的发展方向:

  1. 半导体盘
  2. 提高磁盘记录密度
  3. 提高传输率和缩短存取时间
  4. 采用磁盘阵列 RAID

硬磁盘的磁道记录格式:

  1. 定长记录格式
  2. 不定长记录格式

4.4.4 软磁盘存储器

软磁盘存储器的盘片是用类似塑料薄膜唱片的柔性材料制成的,简称软盘

在这里插入图片描述

与硬盘的比较:

硬盘软盘
速度
磁头固定、活动活动
读写过程靠浮动磁头读写,磁头不接触盘片直接接触盘片进行读写
盘片固定盘、盘组大部分不可换可换盘片
价格
环境苛刻要求不苛刻

4.4.5 光盘存储器

磁带存储器也属磁表面存储器,其记录原理方式与磁盘存储器是相同的。从存取方式来看,磁盘存储器属于直接存取设备,而磁带存储器必须按顺序进行存取,既磁带上的文件是按磁带头顺序存放的。由于磁带容量比较大,位价格也比磁盘低,格式统一便于互换,因此仍是一种用于脱机存储的后备存储器。

磁带存储器是由磁带磁带机两部分组成。


4.4.6 循环冗余校验码(CRC码)

磁表面存储器由于磁介质表面的缺陷、尘埃等原因,致使出现多个错误码。CRC (Cyclic Redundancy Check)码可以发现并纠正信息在存储或传送过程中连续出现的多位错误代码。因此 CRC校验码在磁介质存储器和计算机之间通信方面得到广泛应用。


4.4.7 光盘存储器

光盘存储器采用光存储技术,利用激光写入和读出。

  • 第一代光存技术 — 采用非磁性介质 — 不可擦写
  • 第二代光存技术 — 采用磁性介质 — 可擦写

光盘的存储原理:

光盘存储器利用激光束在记录表面上存储信息,根据激光束和反射光的强弱不同,可实现信息的读写。

  • 只读型光盘(CD-ROM)和 只写一次型光盘(WORM) — 热作用(物理或化学变化)
  • 可擦写型光盘 — 热磁效应

上篇:第三章:系统总线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界

Chapter 1 亚稳态的世界 一、简介 同步系统中,数据和时钟有固定的因果关系(在同一时钟域(Clock Domains))中,只要数据和时钟满足建立时间和保持时间的要求,不会产生亚稳态(meastable) 静态时序分析(STA) 就是基于同步电路设计模型而出现的&am…

安全防御 --- 防火墙

防火墙 1、基础 (1)防御对象:授权用户;非授权用户 (2)含义: 防火墙是一种隔离(非授权用户所在区域间)并过滤(对受保护网络中的有害流量或数据包&#xff0…

GCC 编译器的主要组件和编译过程

主要组件: 分析器:分析器将源语言程序代码转换为汇编语言。因为要从一种格式转换为另一种格式(C到汇编),所以分析器需要知道目标机器的汇编语言。 汇编器:汇编器将汇编语言代码转换为CPU可以执行字节码。 …

网络层协议 IP

目录 IP协议 基本概念 协议头格式(重要) 分片了如何组装: 那么判断是否片偏移就是: 分片对UDP和TCP有影响吗? 总结 网段划分(重要) 下面有两个例子: 特殊的IP地址 …

这几个SQL语法的坑,你踩过吗

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

人工智能能否取代软硬件开发工程师

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 人工智能发展趋势 随着AI技术的不断发展,它正在改变我们的生活方式、商业模式和工作方式。人工智能技术的发展一直处于快速变化和持续创新的状态,以下…

免费镜像 ChatGPT 网站随你挑和分享一批可用的 API Keys

文章目录一、前言二、在线 ChatGPT三、分享一批 API Keys🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 随着科技的不断进步,人工智能在各个领域的应用越来越广泛。在这个过程中,人们需要不断更新知识和技能&#x…

文件包含漏洞学习笔记

1、为何会出现文件包含漏洞 相同内容或方法在多个页面显示或调用,文件包含漏洞又称为目录遍历漏洞或任意文件访问漏洞。分为本地文件包含(LFI:Local File Inclusion),远程文件包含(RFI:Remote …

Linux 多线程:多线程和多进程的对比

目录一、多进程优缺点二、多线程优缺点三、使用多执行流的场景在多任务处理中,我们既可以使用多进程,也可以使用多线程。但多进程和多线程并不是随意选择的,因为它们应对的场景不同,优缺点也不同。 一、多进程优缺点 多进程就是在…

Spring - Spring 注解相关面试题总结

文章目录01. Spring 配置方式有几种?02. Spring 如何实现基于xml的配置方式?03. Spring 如何实现基于注解的配置?04. Spring 如何基于注解配置bean的作用范围?05. Spring Component, Controller, Repository, Service 注解有何区别…

【数据结构】堆

文章目录前言堆的概念及结构堆初始化堆的判空堆的销毁插入数据删除数据堆的数据个数获取堆顶数据用数组创建堆对数组堆排序有关topk问题整体代码展示写在最后前言 &#x1f6a9;前面了解了树&#xff08;-> 传送门 <-&#xff09;的概念后&#xff0c;本章带大家来实现一…

手机验证发送及其验证(基于springboot+redis)保姆级

在Java开发中&#xff0c;发送手机验证码时需要考虑以下几个问题&#xff1a; 验证码的有效期&#xff1a;验证码应该有一定的有效期&#xff0c;一般设置为几分钟或者十几分钟。过期的验证码应该被认为是无效的&#xff0c;不能用于验证用户身份。手机号码格式的校验&#xf…

软测界的黑科技,难道不来瞧瞧?

写在前面&#xff1a; 在当今互联网时代&#xff0c;软件已经渗透到了人们生活的方方面面&#xff0c;各种类型的软件应运而生&#xff0c;为人们的工作和生活提供了更便捷的服务。然而&#xff0c;随着软件的不断增长和复杂性的不断提高&#xff0c;软件测试变得越来越重要。…

如何成为优秀的程序员

崔宝秋&#xff0c;现任小米首席架构师、小米云平台负责人。1995年赴美留学&#xff0c;纽约州立大学石溪分校计算机科学系博士毕业&#xff0c;曾任IBM高级工程师和高级研发经理、雅虎搜索技术核心团队主任工程师、LinkedIn主任工程师&#xff0c;2012年回国加入小米科技。 20…

安全防御之入侵检测篇

目录 1.什么是IDS&#xff1f; 2.IDS和防火墙有什么不同&#xff1f;3.IDS的工作原理&#xff1f; 4.IDS的主要检测方法有哪些&#xff1f;请详细说明 5.IDS的部署方式有哪些&#xff1f; 6.IDS的签名是什么意思&#xff1f;签名过滤器有什么用&#xff1f;例外签名的配置作…

性能测试(三)----loadrunner的使用

一)Controller的使用: 1)在VUG中针对写好的脚本创建场景: 2)手动打开Controller进行脚本的添加并创建场景: 点击完成之后直接打开Controller所在的组件 3)针对场景来进行设置: Basic schedule:点击这个选项进行设置 可手动修改每个用户组的Quantity来修改并发用户总量 3.1)初始…

css绘制一个Pinia小菠萝

效果如下&#xff1a; pinia小菠萝分为头部和身体&#xff0c;头部三片叶子&#xff0c;菠萝为身体 头部 先绘制头部的盒子&#xff0c;将三片叶子至于头部盒子中 先绘制中间的叶子&#xff0c;利用border-radius实现叶子的效果&#xff0c;可以借助工具来快速实现圆角的预想…

ChatGPT常用开源项目汇总

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

基于jmeter+perfmon的稳定性测试记录

最近承接了项目中一些性能测试的任务&#xff0c;因此决定记录一下&#xff0c;将测试的过程和一些心得收录下来。 说起来性能测试算是软件测试行业内&#xff0c;有些特殊的部分。这部分的测试活动&#xff0c;与传统的测试任务差别是比较大的&#xff0c;也比较依赖工具&…

c++之模板入门详解(五千字长文详解)

c之模板入门详解 文章目录c之模板入门详解泛型编程函数模板函数模板概念函数模板格式模板的原理函数模板的实例化模板实例化的个数对于同不同类型的传参&#xff01;如何处理这个问题呢&#xff1f;关于具体存在的函数和模板函数的优先级问题&#xff01;类模板类模板的用法&am…