计算机组成与系统结构(物联网专业)

`考试题型:选择、问答、画图、计算

重点看标红的章节和题

另外,原题答案没有,我写的也没有,好好学习,别老想着白嫖 →_→

第一章 计算机系统概论

1.1 计算机的分类

  • 从总体上:电子模拟计算机 / 电子数字计算机(按位计算,不连续)
  • 从经济性和适应性:专用计算机(适应性比较差) / 通用计算机(单片机 → …… → 超级计算机)

1.2 计算机的性能指标

  • 吞吐量:表征一台计算机在单位时间内能够处理的信息量
  • 响应时间:表征从输入有效到系统产生响应之间的时间
  • 存储器带宽:单位时间内从存储器读出的二进制信息量,B/s

题型:计算程序的 CPI 和 MIPS

1. 假设一台计算机主频为 1 GHZ ,在其上运行由 2\times 10^{5} 条指令组成的目标代码,程序主要由 4 类指令组成,他们所占的比例和各自的 CPI 如下表所示,求程序的 CPI 和 MIPS。

指令类型                       CPI                    指令比例

算术和逻辑                      1                          60%

Load/Store                      2                          18%

转移                                 4                          12%

Cache缺失访存               8                          10%

首先明确下涉及到的几个计算量的概念和计算方法,

  • 时钟周期 T 与主频 / CPU 时钟频率 f

  • T = 1 / f
  • CPU 执行时间 / CPU 时间 t_{cpu}

  • 执行一段程序所占用的 CPU 时间
  • CPU 时间 = 程序中所有指令的时钟周期数之和 × 时钟周期时间 = 程序中所有指令的时钟周期之和 / 时钟频率
  • 程序中所有指令的时钟周期数之和 就是 CPU 周期数 N_{c}
  • CPI

  • 执行一条指令所需要的平均时钟周期数
  • CPI = 程序中所有指令的时钟周期数之和 / 指令条数 I_{N} = (程序中各类指令的 CPI × 程序中该类指令的比例)之和
  • MIPS

  • 表示每秒执行多少百万条指令
  • MIPS = 指令条数 /(执行时间 × 10^{6} )= 指令条数 /( CPU 时钟周期总数 × 10^{6} / f )= f /( CPI × 10^{6} )  
  • 程序的执行时间 Te

  • Te = 指令条数 /( MIPS × 10^{6} ) 

解题思路:

这道题里用不着解 CPU 时钟周期总数(即 CPU 周期数)

CPI =(表格中各类指令的 CPI × 程序中该类指令的比例)之和

MIPS = f /( CPI × 10^{6}

f 即为主频,但是注意单位,1 GHZ = 1 × 10^{9} Hz,1 MHZ = 1 × 10^{6}Hz,1 KHZ = 1000 Hz(读法分别是吉赫,兆赫,千赫)

1.3 计算机的硬件

计算机组成与系统结构(物联网专业)_第1张图片

1.3.1 冯·诺依曼型计算机

2. 冯·诺依曼型计算机的主要设计思想是什么? ①②③④

3. 画出冯·诺依曼计算机五大部件的连接结构图

  • ① 五大组成部分:控制器、运算器、存储器、输入设备、输出设备

计算机组成与系统结构(物联网专业)_第2张图片

  • ② 二进制表示:将数据和指令(操作码和地址码构成)用二进制的形式表示
  • ③ 存储程序:将程序(指令序列)和数据存放到存储器中,可以存放到存储器的任何位置
  • ④ 程序控制控制器依据存储的程序来全机协调地计算任务,按照指令在存储器里存放的顺序进行执行,程序分支由转移指令实现
  • 工作方式的特点:按地址访问并顺序执行指令

1.3.2 运算器

4. 运算器的主要功能是进行______。

A. 算术运算          B. 逻辑运算与算术运算          C. 初等函数的运算         D. 逻辑运算

  • 运算器主要进行的是算术运算和逻辑运算,参与运算的数是二进制形式,其长度即为计算机的字长
  • 运算器的核心部分是算术逻辑运算单元( ALU )

 位、字节、字、半字、字长:

位(bit):计算机内最小的数据单位,取值 0 或 1

5.32位的个人计算机,一个字节( Byte )由_____位( bit )组成。

A. 4                   B. 8                  C. 16                   D. 32

字节(Byte):8 位二进制数,计算机内部最基本的计量单位,1 Byte = 8 bit

KB、MB、GB里面的B就是字节,K/M/G 对应的是 2^{10}/2^{20}/2^{30} (应该是简化书写?注意点就是比如 4M 是 2^{2}\times 2^{20} = 2^{2 + 20}=2^{22} ,是数字转换成指数形式幂次相加计算的)

有的时候题目不会直接写 1MB 而是像上面题目里的主存容量写的是 1M 字节,记住字节就是B,计算带上就行

字:一个或多个字节组成,一串固定长度的二进制数,对应部件处理数据的固定长度(听 8086 听得我认为一个字固定等于两字节了×

半字:字的一半(双字同理)

6. 什么是计算机字长?

指运算器中一次能够完成二进制数运算的位数

另外,不同部件的字长可能不同,不过一般都是看计算机字长

1.3.3 存储器

7. 目前的计算机,从原理上讲_______。

A. 指令以二进制形式存放,数据以十进制形式存放

B. 指令以十进制形式存放,数据以二进制形式存放

C. 指令和数据都以二进制形式存放          D. 指令和数据都以十进制形式存放

  • 运算开始前,都是将程序和数据存入存储器(指令是顺序存放)
  • 有两种方式存储:
  • ① 冯诺依曼结构:存储器的任何位置既可以存放数据也可以存放指令
  • ② 哈佛结构:指令和数据存储器物理上独立
  • 存储器 → 存储单元(大量)→ 一个存储单元存入一个 2 进制数据串 → 存储器中存入的一个 2 进制位 :存储元
  • 存储器是按存储单元组织的,每个存储单元都会被分配一个地址,所以存储器通常都是按地址查找,线性编址的

解题思路:

存储器中存入的均是二进制数据串,而开始任务之前都会将数据和程序存入其中

而程序是一系列的机器指令的有序集合

所以指令和数据都以二进制形式存放

  • 容量一般按字节计算
  • 分类:内存、外存(区分:CPU 能否直接与其交互)
  • 写入新数据会覆盖旧数据,读出并不破坏数据并可反复读出

1.3.4 控制器

  • 计算机中给各部件提供控制信号的地方
  • 按照特定的顺序一条接一条取指令(从内存中)、指令译码、执行指令
  • 取指周期:从存储器中取指令到控制器的时间
  • 执行周期:在控制器中对指令译码、执行指令的时间

8. 什么是指令?什么是程序?

  • 指令是指挥计算机执行某种操作的命令,由操作码和地址码构成
  • 程序是一系列指令的有序集合
  • 指令系统:计算机的全部指令集合

9. 指令和数据均存放在内存中,计算机如何区分它们是指令还是数据?

  • 根据不同的时间段区分:
  • 指令流:取指周期中从内存读出,流向控制器的信息流
  • 数据流:执行周期中从内存读出,流向运算器的信息流

1.3.5 适配器与输入输出设备

  • 输入设备:将一般的信息形式 → 二进制信息形式
  • 输出设备:把计算机处理结果 → 人或其他机器设备能识别接收的信息形式
  • 总线:构成计算机系统的骨架,是多个系统部件之间进行数据传送的公共通路

1.4 软件的发展演变

10. 说明高级语言、汇编语言和机器语言三者之间的差别和联系。

  • 高级语言远离硬件,是一种指令集的体系,先需要通过编辑程序翻译成源程序,再经过汇编/编译程序翻译成目的程序,最后通过联接程序翻译成可执行程序
  • 汇编语言主要面向硬件,需要经过汇编程序翻译成机器语言才能成为可执行程序
  • 机器语言是手工编写的二进制码,计算机能直接执行

1.5 计算机系统的层次结构

  • 软件部分:高级语言级 → 汇编语言级 → 操作系统级
  • 硬件部分:一般机器级 → 微程序设计级

第二章 运算方法和运算器

2.1 数据与文字的表示方法

  • 两类数据:符号数据 / 数值数据

2.1.1 数据格式

1. 下列数中最小的数是______。

A. 二进制数( 1010010 )         B. 8421 BCD 码( 00101000 )

C. 8 进制数( 512 )                 D. 16 进制数( 35 )

无法直接进行比较大小,要比只能换成十进制再进行比较

转换什么的已经写烂了,懒得再写一遍,需要看的去找另一篇数字逻辑笔记

  • 计算机中的数值数据表示格式(符号位 0 为正数,1 为负数):
  • ① 定点表示:小数点位置固定(要么纯小数要么纯整数)
  • 由于字长一定,所以能表示的范围有限
  • 分为带符号数和不带符号数
  • 带符号定点纯小数的小数点位置在符号位后面,表示数的范围是 0 ≤ | x | ≤ 1 − 2^{-n}
  • 带符号定点纯整数的小数点在最低位后面,表示数的范围是 0 ≤ | x | ≤ 2^{n} -1
  • ② 浮点表示:小数点位置不固定,所以需要给小数点专门存放位置
  • 把数的 有效数字 和 数的范围 分别表示
  • 一个 R 进制数 N 可以写成:N = R^{e} M,其中 e 为指数,M 为尾数且低位以纯小数的格式存储

2. 浮点数的表示范围和精确度分别由什么决定?

阶码 E 决定了浮点数的表示范围,尾数 M 决定了浮点数的表示精度

  • IEEE 754 标准

  • 用于规定浮点数的表示格式,IEEE 754 规定的浮点数的指数偏移值比规约的浮点数的指数偏移值小 1(所以会有 1.M )
  • M 使用原码,e 使用移码,R 隐含
  • 32 位中 低 23 位为 M,64 位中 低 52 位为 M,最高位都为符号位,剩余放 E
  • 32 位的阶码 E = e + 127( 01111111 ),64 位的阶码 E = e +1023(就是 E 占多少位,加的数字就是以 2 为底位数 - 1 次方的指数)
  • 一般要么写成存储在计算机里的格式,要么由计算机里格式写成对应的十进制数

  • 当 M 不为 0 时,在规格化的过程中,若小数点右移 1 位,则阶码减 1(左规:尾数左移),若小数点左移 1 位,则阶码加 1(右规:尾数右移)
  • 由浮点数标准存储格式求十进制数值:x = \left ( -1 \right )^{s} × 1.M × 2^{e}(整数部分的 1 是隐藏位,没有存进去,所以这里要补上)

2.1.2 数的机器码表示

  • 真值 → 加符号位 → 原码 → 若为负数 → 符号位不变,余下按位取反 → 反码 → 加1 → 补码,均为有符号数
  • 1. 原码表示法:

  • 优点:实现乘除运算简单
  • 将真值写成二进制数的形式,正数符号位写 0 ,负数符号位写 1
  • 正 0 与负 0 有区别
  • 2. 补码表示法

3. 为什么计算机中采用补码表示带符号整数?

为了避免减法运算中需要比较绝对值的大小,还要给结果选择符号,所以采用补码简化运算

  • 优点:将减法运算转换成加法运算
  • 没有正 0 和 负 0 的区分

4. 已知 y = + 10001,则 [ y ] 补为__________。

A. 110001          B. 001111         C. 101111         D. 010001

  • 正数的补码 = 正数的原码
  • 负数的补码 = 负数的原码,其中,符号位不变,余下数值位按位取反再加 1
  • 负数补码 → 原码:对补码再次求补
  • 对于相同的机器字长,补码比原码和反码能多表示一个负数
  • 3. 反码表示法

  • 优点:电路很容易实现
  • 正数的反码 = 正数的原码
  • 负数的反码 = 负数的原码,其中,符号位不变,余下数值位按位取反
  • 4. 移码表示法

  • 可以直接比较大小
  • 用于表示浮点数中的阶码

题型:求能表示的数据范围

一看总共多少位,二看有无符号位

比如 16 位无符号整数,就是 1111 1111 1111 1111,即最大可表示 2^{16} - 1,最小可表示 0

若是 16 位有符号整数,就是 符号位111 1111 1111 1111,即最大可表示 2^{15}-1,最小可表示其的相反数

还需要注意是什么码和是定点整数还是定点小数,若是 16 位补码定点整数,那么范围就是 -2^{15} ≤ X ≤ 2^{15}-1

总之按照定义写出来二进制码,再转换成十进制就行

2.1.3 字符和字符串的表示方法

  • ASCII

  • 单字节编码系统,主要用于显示现代英文字母和符号
  • 用 7 位二进制编码表示一个字符,总共可以表示 128 个字符,在计算机中存储是以一字节的形式,最高位固定为 0
  • 数字的高三位为 011,大写字母的高三位:A ~ O 为 100,P ~ Z 为 101,小写字母的高三位:a ~ o 为 110,p ~ z 为 111
  • 低四位 0 是 0000,剩下依次 + 1,字母 A 和 a 是 0001 开始,剩下依次 + 1

2.1.4 汉字的表示方法

5. 汉字输入码、机内码和字形码在汉字处理过程中各有何作用?

  • 汉字输入码是用西文标准键盘上按键的不同排列组合来对汉字进行编码,可用数字、字音、字形、音形来编码
  • 汉字内码是汉字的机内代码,一般采用两个字节表示
  • 汉字输出码(汉字字形码)先存储汉字的字形,可以显示和打印汉字
  • 字形码:点阵字形(字模码)和矢量字形

2.1.5 奇偶校验码

  • 若干位有效信息加上 1 位校验位组成校验码
  • 奇校验:使校验码中 1 的个数为奇数
  • 偶校验:使校验码中 1 的个数为偶数
  • 奇校验:可以检测出一位或奇数位错误,但不能确定出错位置

2.2 定点加法、减法运算

2.2.1 补码加法

  • 任意两数的补码之和 = 该两数之和的补码
  • 特点:符号位一起参加运算,符号位的进位要丢掉

2.2.2 补码减法

  • 任意两数之差的补码 = 被减数的补码 + 减数的相反数的补码
  • 由 y 的补码 求 -y 的补码:对 y 的补码包括符号位按位求反且末位加 1

2.2.3 溢出的概念与检测方法

  • 数的补码表示范围为 -2^{n} ≤ X ≤ 2^{n} - 1,超出这个范围称为“溢出”
  • 溢出的实质是最高位产生了进位
  • 结果大于所能表示的最大数,称为正溢(上溢)
  • 结果小于所能表示的最小数,称为负溢(下溢)

6. 假定有4个整数用8位补码分别表示为r1=FEH, r2=F2H,r3=90H, r4=F8H。若将运算结果存放在一个8位寄存器中,则下列运算会发生溢出的是______。

A. r1 × r2        B. r2 × r3        C. r1 × r4          D. r2 × r4

  • 双符号位法(被计算的数字拥有两个符号位,负数为 11,正数为 00 ):
  • 结果的两个符号位一致则没有溢出
  • 单符号位法:
  • 符号位产生的进位和最高有效位产生的进位进行比较(产生了进位是 1,没有产生进位就是 0 ),若一致则没有溢出
  • 在定点运算器中,无论采用双符号位还是单符号位,必须有 溢出判断电路,它一般用 异或门 来实现

2.2.4 基本的二进制加法 / 减法器

  • 半加器:两个一位二进制数相加 → 产生一个两位二进制数
  • 加法器是算术运算电路的核心,不区分符号数与无符号数

2.3 定点乘法运算

  • 两个位数相同的二进制数相乘,位数会扩大一倍
  • 采用软件 / 硬件实现
  • 硬件实现(需要专门的乘法指令):
  • ① 串行乘法器:乘数每次和一位被乘数相乘
  • ② 并行乘法器:乘数同时和被乘数所有二进制位相乘

2.3.1 原码并行乘法

7. 采用原码阵列乘法运算时,结果的符号可由两数的符号位进行_____得到。

A. 逻辑加          B. 逻辑乘          C. 异或          D. 与非运算

  • 在定点计算机中,两个原码数相乘的运算规则是:
  • ① 乘积的符号位由两数的符号位按异或得到
  • ② 乘积的数值部分由两个正数相乘得到
  • 1. 人工计算部分:② 里计算就按正常的十位数计算那种方法来计算:求部分积(按权对应移位)→ 部分积相加
  • 设计高速并行乘法器的基本问题:缩短部分积的加法时间
  • 在串行进位的加法器中,影响加法器运算速度的关键因素:进位传递延迟
  • 所以采用先行进位的根本目的是:快速传递进位信号
  • 2. 不带符号的阵列乘法器
  • 实现 n 位 × n 位:需要 n( n - 1 )个全加器和 n^{2} 个与门,总的乘法时间为:( 8n - 7)T
  • 延迟时间为( n - 1 )个全加器延迟 +( n - 1 )个进位链延迟
  • 3.带符号的阵列乘法器
  • 对于补码表示的数的计算,需要求补电路将补码转为原码再进行计算

2.5 定点运算器的组成

2.5.1 逻辑运算

  • 逻辑非、逻辑加、逻辑乘、逻辑异或:按位反、按位或、按位与、按位加
  • 移位运算

  • 右移 n 位等于乘以 2^{n},左移 n 位等于除以 2^{n}
  • 乘除运算 = 移位 + 加法
  • 无符号数的移位称逻辑移位,空出位补 0
  • 有符号数的移位称算术移位,符号位均保持不变,负数原码补 0,负数反码补 1,负数补码左移 0,右移补 1
  • 注意超过机器数字长的位需要舍弃

2.5.2 多功能算术 / 逻辑运算单元 ALU

  • 由全加器( FA )构成的加法器,可以实现补码的加法 / 减法运算,但为串行进位,运算时间很长,且不能完成逻辑操作
  • ALU 可算术运算也可逻辑运算,先行进位逻辑(每一位的产生是同时的),能实现高速加法运算
  • 组成 ALU 的芯片是片内先行进位,片间串行进位

2.5.3 内部总线

  • 将计算机各个部件之间的数据传送通路加以归并,组成总线结构
  • 任何一个时刻,总线上只能有一个来源的数据;不同来源的数据在总线上分时传送
  • 根据所在位置分为:
  • ① 内部总线:CPU 内各部件的连线
  • ② 外部总线:CPU 与存储器、I / O 系统之间的连线
  • 根据逻辑结构分为:
  • ① 单向总线:传送地址信息或控制信息
  • ② 双向总线:传送数据
  • 总线的基本电路是三态门

2.5.4 定点运算器的基本结构

  • 基本组成:ALU(核心)+ 数据存储部件(暂存器 / 通用寄存器)+ 内部总线

8. 现代计算机的运算器一般通过总线结构来组织。按总线连接方式划分为哪三种?各自的特点是什么?

  • 单总线结构的运算器

  • 需要两个缓冲寄存器存操作数,分两次存入操作数,操作时间较慢
  • 双总线结构的运算器

  • 两个操作数通过两条总线同时加到 ALU 进行运算,ALU 输出端需要设置缓冲寄存器,等总线空闲后再送入目的寄存器
  • 三总线结构的运算器

  • 两条总线同时送给 ALU 数据,一条总线用于 ALU 的输出

2.6 浮点运算方法和浮点运算器

2.6.1 浮点加法、减法运算

  • (被加/减数的尾数 × 2 的(被加/减数阶码 - 加/减数阶码)次方 ± 加/减数的尾数)× 2 的加/减数阶码,其中被加/减数阶码 > 加/减数阶码

9. 简述浮点加/减法运算步骤 

  • ① 0 操作数检查
  • ② 比较阶码大小并完成对阶:小阶向大阶看齐,尾数右移是 × 2 的移位数目的次方,丢失的是低位数据
  • ③ 尾数求和运算
  • ④ 结果规格化
  • ⑤ 舍入处理
  • ⑥ 溢出处理

10. 如何判断IEEE 754标准浮点数运算结果是否为规格化数?如果不是规格化数。如何进行规格化?

  • 结果规格化:

  • 判断:第一个数值位为 1 即为规格化数
  • 规格化:对尾数进行左规/右规至满足格式形式,同时对阶码进行相应增减

11. 小数+1.101011保留小数点后3位有效数字,按照IEEE 754四种舍入方式得到结果为:

就近舍入: (    )

向正无穷舍入: (    )

向负无穷舍入: (    )

向零舍入: (    )

  • 舍入处理:

  • a . 就近舍入:
  • 类似于四舍五入,只不过看多余位与 100…0 的大小(就是看多余位打头是 0 / 1 )
  • 如果多余位 = 100…0,就来看有效位的末尾
  • 其为 1 则进 1,其为 0 则舍弃
  • b . 朝 0 舍入:直接去掉多余位
  • c . 朝 正无穷 舍入:
  • 正数:多余位不全为 0,进 1
  • 负数:直接去掉多余位
  • d . 朝 负无穷 舍入:
  • 正数:直接去掉多余位
  • 负数:多余位不全为 0,进 1

12. 如何判断浮点数运算结构是否发生溢出

  • 溢出处理:

  • 阶码溢出表示浮点溢出,单精度阶码 E 范围是 1 ~ 254( e 是 -126 ~ 127)
  • 阶码上溢:认为是 正负无穷,阶码下溢:0
  • 尾数溢出不是真正的溢出,上溢右规,下溢左规

2.6.2 浮点乘法、除法运算

  • 1. 浮点乘法、除法运算规则:
  • 首先操作数换算成规格化的 R^{e}M 的形式,如果说用 IEEE 754 形式求,那么这里的 M = 1.……,但是记得 M 是个纯小数
  • ① 浮点乘法:结果 = 2 的(被乘数的阶码 + 乘数的阶码)次方 ×(被乘数的尾数 × 乘数的尾数),即尾数相乘,阶码相加减偏移量
  • ② 浮点除法:结果 = 2 的(被除数的阶码 - 除数的阶码)次方 ×(被除数的尾数 ÷ 除数的尾数),即尾数相除,阶码相减加偏移量
  • 步骤与加减操作差不多,只是 ② 是阶码加/减操作而不是对阶, ③ 是尾数乘/除操作,⑥ 是确定积的符号而不是溢出处理

第三章 多层次的存储器

3.1 存储器概述

  • 存储器是计算机系统中的记忆设备,用来存放程序和数据

3.1.1 存储器的分类

  • 按存储介质:半导体/磁表面/光盘
  • 按存取方式:
  • ① 随机存储器 RAM :内容能被随机存取,存取时间和存储单元的物理位置无关,譬如半导体存储器
  • ② 顺序存储器:只能按照某种顺序来存取,存取时间和存储单元的物理位置有关
  • 半导体存储器按其存储内容可变性:
  • ① 只读存储器 ROM :存储内容固定,仅能读出不能写入
  • ② 随机读写存储器 RAM :既能读出又能写入
  • 按信息易失性:
  • ① 非易失性存储器:断电后仍能保存信息,磁存储器、光盘存储器、闪存
  • ② 易失性存储器:断电玩完,SRAM、DRAM

接下来是以前写的东西,懒得拆开按顺序了,先看完这些吧

1. 设主存容量为1M字节,按字节寻址,Cache容量为4K字节,块长为32字节。

(1)Cache可容纳多少块?

(2)主存地址有多少位?有多少块?

(3)写出4路组联映射方式下的内存地址格式。

 注意点:题目中的单位看准了,计算的时候别忘了单位上汉字的字节/字,字节除字节可以约掉,字除字可以约掉,就是注意字和字节蹲一起,发生的是还要加上字长的三个人的故事

Cache 可容纳多少块(主存与Cache的地址映射):

我是先写按字寻址那些后面写的Cache,推荐先去看完那个再来看Cache

注意是Cache容纳多少块,不是说Cache分多少块,分块的是主存块,Cache分的是行,题目的意思是Cache能容纳的主存块个数

存储器的分级(缓存(Cache)、相联存储器(CAM)、主存、外存、内存):

Cache(缓存):高速缓冲存储器(高速但是小容量),为了提高计算机的处理速度,利用其来高速存取指令和数据

Cache是CPU和内存之间的桥梁,功能全部由硬件实现

用来解决CPU和主存之间的速度不匹配问题(所以Cache位于CPU和主存之间,但是硬件上不是跟它们俩完全独立隔开的三层,有的CPU内会带Cache,主板内主存待的地方贴近CPU也可能会有Cache

我才知道Cache竟然就是平常说的缓存_(:з」∠)_,缓存 → 数据交换的缓冲区

相联存储器(CAM):属于Cache的一部分(怕你们忘,我后面就跟Cache拆出来一起提,但是得明白它就是Cache里的),用来存内存地址和信息,拿块地址(块号)找,比较的Tag就是在它里面,是按内容存取方式进行寻址的存储器

主存储器:作为计算机系统的主存储器,存放着大量计算机运行时的大量程序和数据,能和Cache交换数据和指令

因为Cache主要是用来快速存取的,所以Cache保存的内容是主存内容的一个子集

内存储器 = Cache + 主存 :CPU能够直接访问的存储器(很重要!!!)

外存储器就不能被CPU直接访问了,信息得调入内存才能被CPU所处理

外存储器:大容量辅助存储器,比如硬盘、磁带、光盘

综上所述,存储器速度越快 → 容量越小、越靠近CPU

而CPU读取数据的顺序是:由内而外的,一层没有就上外面一层去找

一般涉及到Cache的问题要么是有关Cache本身(命中率、访问时间之类),要么是与主存的地址映射

地址映射:在主存的地址定位到Cache中的确切位置

主存地址访问(但是相连存储器(CAM)也就是块表是按内容访问的),Cache内容访问

按地址访问:地址不保存寻址时译码器根据地址直接选中对应的数据

按内容访问:地址保存在CAM或者Cache中(跟数据存在一块儿),称为标识(标记、Tag)查找时,把要访问的地址和表中所有标识比较相同的确定要访问的存储单元

一旦问题涉及到主存,往往除了求Cache块数还要求主存块

所以需要知道的点是:

1.主存是分块的,并且每块包含若干个字(主存块,每块大小是相同的),同理,Cache分为若干行(Line)

Cache存储一个主存块的区域就叫行(所以地址映射就是看把哪块主存块对应放到哪行)

所以容量:Cache每行 = 主存块

2.主存地址格式:

块地址(块号):用于确定该块是否命中

块内偏移:用于确定所访问的数据在该块中的位置

(你这样记,主存分很多块,你要找的数据就在一个主存块上,肯定要这个块号找第几块,块又是很多字组成,肯定要偏移来指示第几个字地址(不一定字地址啊,看它说按什么寻址,要是字节那就相当于把字拆开,偏移的肯定多了))

CPU与Cache的数据交换是以字为单位,Cache与主存的数据交换是以块为单位

可以这样看,Cache内不是好多行嘛,每一行存储的是一个主存块,而一个主存块又由好多字组成,CPU找数据的时候会跟着映射规则到对应的行去看 → 挨个字找;

而Cache内的数据都是从主存那里拿来的,放到自己的行里,所以 → 要换就换整个块

命中:在那个地方能找见要的数据(或者说按内容/地址访问拿目标地址瞅可以找到相同的地址),找不见就是未命中

在针对Cache的命中率时候,可以说一次访存中,在Cache中完成存取是命中了;在Memory中完成存取就是未命中;

看下面CPU读取字的过程可加深理解 ↓

当CPU读取主存中一个字时,会发出这个字的内存地址到Cache和主存;

Cache控制逻辑依据地址判断这个字当前是否在Cache中(按内容访问,去比较标识),找到就从Cache拿;找不到,就利用主存读周期把这个字从主存里读出(按地址访问,寻址找到数据)送到CPU,同时把含有这个字的整个数据块从主存读出送到Cache中

题型:条件给出Cache容量 + 块长 求 Cache能容纳的块数/Cache的行数

同理 条件给出主存容量 + 块长 求 主存有多少块

两个问题用到的题目给的块长都是主存块的块长(其实就是块的大小啦~)

主存根据块长分成一沓子大小相同的主存块,所以

主存有多少块 = 主存容量 ÷ 块长

反推:题目给出的是 主存有多少块 + 块长 → 主存容量

因为前面说的Cache分为很多行,每行就蹲个主存块,所以行容量等于主存块容量,求能容纳的块数其实也就是求Cache的行数

所以,

Cache能容纳的块数/Cache的行数 = Cache容量 ÷ 块长

反推:题目给出的是 Cache能容纳的块数 + 块长 → Cache容量 + Cache有多少行(就是块数)

这两个题连在一起看容易弄糊涂Cache容量跟主存容量关系:

记得Cache内容是主存的一个子集,容量小得多,别误会成Cache容量跟主存一样了!!!

接下来是映射方式 ↓

地址映射方式:全相联、直接映射、组相联(每一个主存块放在Cache的哪一行):

主存地址格式和Cache地址格式框架都是内存地址格式(块地址 | 块内偏移),只不过Cache地址格式因为由于映射的约束导致会对块地址有划分

全相联:块地址 | 块内偏移

Cache地址格式和主存地址格式区别在于块地址位数

地址变换:用块地址同时和Cache中所有的Tag进行比较(此时一只相联存储器(CAM)路过),命中不命中处理方式前面提过,命中就拿走,同时撤销内存寻址过程;没有命中,则从主存那里通过主存读周期读出送到CPU,等着访存过程结束以后把对应的块塞进Cache里。

特点:冲突概率小,Cache利用率高,比较电路实现成本高,适合小容量Cache采用

直接映射:Cache地址格式(和主存地址格式区别在于把块地址划分了两个部分):注意不一定是字地址,有可能是偏移字节地址,看题目条件

计算机组成与系统结构(物联网专业)_第3张图片

 全相联的地址信息在CAM里,而直接映射的tag是跟行数据一起在行里

地址变换:用访存地址里块号的 r 位行索引找到对应的Cache行,然后用块号的 s - r 位与该行的tag比较,命中则用低 w 位读取所要求的字;不命中则由主存读取

 特点:容易产生冲突,成本低,适合大容量Cache采用

组相联:Cache地址格式(和主存地址格式区别在于把块地址划分了两个部分):注意不一定是字地址,有可能是偏移字节地址,看题目条件

计算机组成与系统结构(物联网专业)_第4张图片

 组相联和直接映射一样将tag存在了行里

地址变换:用块地址的低d位找到对应组,然后将块地址的高s-d位与该组v行中的所有标记同时进行比较。命中,选中该行,用内存地址的低w位选择相应的字。不相符,则访问内存。

特点:比全相联容易实现,冲突低

n 路组相联Cache的分组就是按 n 行一组分的

 冲突:一个主存块想去映射的那个Cache行里另一个主存块已经在了

全相联:主存一个块可以放到Cache任一行,没有限制;标识就是整个块地址;(多对多)

直接映射:一个主存块只能映射到Cache的一个特定行上(多对一)

 人话翻译模式开启:

注意主存跟Cache开头第一块都是第 0 块不是第 1 块

假如Cache一共有 n 行,那么主存可以按照 n 个主存块为一组划分,第一组第一块是第 0 块,最后一块是第 n - 1 块;第二组第一块是第 n 块,最后一块是第 2n -1 块,以此类推……

每组每块就可以按顺序一一跟Cache的每行对应放

注意我不是说每次主存传输给Cache只能按我说的分组来一传对应一组,这个理解只是方便你记忆每个主存块只能够去哪行,也就是说一个主存块对应一行,一行可以对应多个主存块

组相联:将Cache分组,主存中的每一块可以被放置到Cache中唯一的一个组中的任何一行(多对多)

组间采用直接映射,组内采用全相联映射

 人话翻译:

将Cache按 m 行一组分成 n 组,主存也按 n 个主存块为一组划组,主存第一组第一个是第 0 块,最后一个是第 n -1块;第二组第一个是第 n 块,最后一个是第 2n - 1 块,以此类推……

然后主存块分的组就可以一一跟Cache分的组对应,每组里的任意一个主存块可以在对应的Cache组里的 m 行挑自己喜欢的

题型一:让写出全相联方式下的主存/Cache地址格式

注意!注意!注意!题目里可能会踩坑:主存地址/Cache地址,读题很容易被忽略,要看清题目说的是主存地址还是Cache地址!!!两者的块地址位数是不同的!!!

做题的时候看到一堆条件不知道怎么用,脑子就开始杠机,计组尤为明显,拿这张PPT咱们来整理下做题应该有的思路

 计算机组成与系统结构(物联网专业)_第5张图片

(推荐平时学习的时候像公式里的字母要记就记汉字全名,当然寄存器或者技术方法名称按英文记,我博客里面出现的字母也只是方便我打字,请自动脑补成它的全称,不然过一段时间再看真的会懵!!!)

PPT还是一如既往的隐晦,从上到下从左到右看一遍:

首先:主存 256 块,是根据主存容量以及块长算出来的,又知道每块 4 个字(字、字节其实就是种计量单位),好了,我知道主存容量了:256 块 X 4 字 = 1024 字 = 1K 字;

再看后半句,Cache有 8 行,好了,我又知道Cache能容纳 8 块主存块了,好家伙,Cache容量这不就差贴脑门上了吗:8 块 X 4 字 = 32 字

没给字长,第一反应是这玩意儿怕是按字寻址(对,按什么为最小存储单元进行寻址,就是按什么寻址,而从Cache里找的是一个字还是一个字节是有区别的,毕竟偏移就看找谁。不管用不用得着,最好每次看题都全分析一遍,考试的时候就会自己自动跳出来了)

(被我水印挡住的是页标 22 昂,麻了,看半天我说这是什么)

思路整理完毕╭(╯^╰)╮,言归正传:

计算机组成与系统结构(物联网专业)_第6张图片

 如果没有命中,就把对应的数据块塞进Cache块里,地址信息什么的进对应CAM里位置 → 载入状态/未命中状态,从这里就可以知道,刚开始Cache内没有数据的时候,第一次进去肯定是未命中状态的!!!

图中未命中也看不出来采取的是什么替换算法,等会儿单开一节说

原先看到前三个格子上面那一串二进制数是有点懵的,写完了后面的计算思想突然发现,一共五位二进制数,第一次在Cache第 0 行载入数据,第二次在第 1 行载入数据,第三次命中了第 0 行,而改变的是前三位数据,而第一次的等于第三次的,有没有可能那是数据载入或命中依据的块地址

再看下面标明说Cache 8 行,计算后得到块地址位数就为三位,那就说明前三个是块地址也就是全相联里的标识,后两位就是块长了,好了,我知道块长为 4 字/字节,只要再给我它确切按什么寻址我就能知道主存跟Cache的容量了。并且这是在数据块的第 2 块进行的查找载入。

所以那串二进制数实际是地址(看不懂的等看完后面计算题型就懂了)

好吧,打起精神,应试教育来了(看答案凑解释我老强项了~):

解题方法一:每个地址位数都求出来

需要的全相联地址格式咱们先摆出来:块地址(块号)| 块内偏移

那么我们要求的就是两个东西的位数

前面说的注意点就在这里,块地址我是找的谁的块地址,看题,让你求Cache的地址格式就盯Cache,要求主存地址格式就用主存里多少主存块(主存和Cache里的主存块数目不一样)

地址是一串二进制数,每一位有 0 、1 两种状态,所以如果有 n 位地址,排列组合我可以有 2^{n} 个地址跟块号一一对应,所以对块数进行求对数就可以了

那么,

块地址位数 → (求Cache)看Cache可容纳主存块的块数/Cache内多少行 → 求log以2为底的值

块地址位数 → (求主存)看主存块的块数 → 求log以2为底的值

继续想,它找到数据块以后还要找数据的吧,块内偏移是确定数据在数据块的位置,那么块内偏移是求谁?

块地址求法的注意点是求谁的地址格式,而块内偏移的注意点是按什么寻址

按什么寻址,CPU就是要找什么,前面CPU要取一个字就是按字寻址,按字节寻址CPU要取得就是一个字节

所以块内偏移想要定位就跟块地址一样,块地址找确切块就要看它块的个数,块内偏移想要找确切的字/字节,就要知道每块里面(不是在整个容量里找,只是在那个确切块里面找,所以咱们看的是块长)字/字节的个数

因为块长都一样,所以这里就不区分求谁的地址格式了

所以,

块内偏移位数 → (按字寻址)主存块里有多少字 → 块长写成【数字】字这种形式 → 求 log 以 2 为底的值

块内偏移位数 → (按字节寻址)主存块里有多少字节 → 块长写成【数字】字节这种形式 → 求 log 以 2 为底的值

Q:看了后面字节/字寻址的可能有个疑问(没错,就是我自己的疑问),用地址线根数求寻址空间的时候按字寻址提到因为需要对字进行字内寻址会占用几根地址线,这里为什么没有提?

A:按字寻址的话,CPU要找的是一个字,找到以后Cache就直接传送给CPU了;其实这句话可以就理解成只是告诉你虽然按字寻址比按字节寻址需要找的东西少了,但是地址线没用到的也不是闲置着的。

解题方法二:先算地址格式的总位数,作减法(直接映射、组相联同理)

因为我不大想为了做题而做题,不知道原理你还做什么题

所以事实上,为了在考试时候节省反应的时间,大佬们都是先求总位数到时候直接一减就行

先说下为什么可以这么做的原因,Cache容量 = Cache行数 × 块长;主存容量 = 主存块数 × 块长

而地址,一个是选块,一个是选字/字节,等式左右两边同时求对数,那么,算出来Cache容量的次幂就等于 块地址位数 + 块偏移位数,即地址格式总位数

所以,

(问Cache的地址格式 + 按字寻址)地址格式总位数 → Cache容量写成【数字】字形式 → 以 2 为底对【数字】求对数

(问Cache的地址格式 + 按字节寻址)地址格式总位数 → Cache容量写成【数字】字节形式 → 以 2 为底对【数字】求对数

同理,

(问主存的地址格式 + 按字寻址)地址格式总位数 → 主存容量写成【数字】字形式 → 以 2 为底对【数字】求对数

(问主存的地址格式 + 按字节寻址)地址格式总位数 → 主存容量写成【数字】字节形式 → 以 2 为底对【数字】求对数

题型二:让写出直接映射方式下的主存/Cache地址格式

因为直接映射方式是将主存块存入特定的Cache行,一个Cache行对应多个块

计算机组成与系统结构(物联网专业)_第7张图片

 所以在映射的时候还需要对Cache的特定行进行定位

这样就不只是对块进行定位了,所以Cache里块地址就被分割成了两部分,一部分是去定位行,一部分仍然是对块的定位(标识tag),只不过因为一行对应的块也被缩小范围了,即 主存块数 = 行数 × 每行对应的块的个数,求对数同理,就是分割开了两部分:标识、行号

行号即为进行定位的行索引,还是按照排列组合,有 n 位地址就可以对 2^{n} 个行进行选择

所以,

Cache地址格式:

index行号位数 → 以 2 为底对Cache内行数/Cache可容纳多少块求对数

tag标记位数 → Cache可容纳的块数 - index行号

块内偏移位数 → (按字寻址)主存块里有多少字 → 块长写成【数字】字这种形式 → 以 2 为底对【数字】求对数

块内偏移位数 → (按字节寻址)主存块里有多少字节 → 块长写成【数字】字节这种形式 →以 2 为底对【数字】求对数

主存地址格式不用划分出来行号

题型三:让写出组相联方式下的主存/Cache地址格式

组相联嘛,是把主存块存到特定的Cache分的组里面的任意一行,所以需要对Cache分的组定位

发现特点没,如果主存块必须存到特定的地方,存特定Cache行就分割出来行号,存特定的Cache组就分割出组号,而说让任意存的话就用标识找

计算机组成与系统结构(物联网专业)_第8张图片

 想用公式看为什么画出来的是组号的话:主存块个数 = Cache划分的组数 × 可存进Cache对应组的主存块数,同时求对数,块地址 = 组号 × 标识

 所以同理,

Cache地址格式:

组号位数 → 以 2 为底对Cache分了多少组求对数

tag标记位数 → Cache可容纳的块数 - 组号位数

块内偏移位数 → (按字寻址)主存块里有多少字 → 块长写成【数字】字这种形式 → 以 2 为底对【数字】求对数

块内偏移位数 → (按字节寻址)主存块里有多少字节 → 块长写成【数字】字节这种形式 →以 2 为底对【数字】求对数

主存地址格式不用划分出来组号

如果Cache没分组就是全相联映射方式(不用划分位数特意去找是哪个组),如果分的组里行数为 1 ,就是直接映射方式(主存块只能存进Cache特定行)

题目中说是几路组相联Cache就是说Cache分的组里有几行

Q1:既然Cache和主存都属于内存,那题目问内存地址格式的时候,我该写Cache地址格式还是主存地址格式

A1:在Cache这里的题目就是指Cache地址格式,事实上地址映射就是按照特定映射规则把主存地址分割 → Cache地址格式,别忘了主存地址格式在之前是有定义的,就分为块地址和块内偏移两部分,而Cache分割了它的块地址。

Q2:CPU同时将地址发送给Cache和主存,比如全相联是把发送过去的地址中的块地址和Cache里CAM存的标识比较的,命中就可,不命中去主存找,既然同时发那地址里的块地址应该是一样的,可是Cache和主存由于容量不一样,肯定块地址位数不一样,这怎么找?

A2:产生这个疑问属实是因为我在这里垒的知识点太多了,导致忘了Cache是按内容访问的,主存是按地址访问的,而按内容访问会将地址保存下来,查找时进行比对,按地址访问不保存地址直接根据译码器进行选择了,所以,小伙子,做人不要想太多,当个傻子就这样过去不好么,非要纠结。

按字节/字/半字/双字寻址(求地址线根数及寻址范围):

注意点:寻址范围是 0 ~ 求出来的结果 -1,寻址空间是求出来的结果( 0x0000 ~ 0xFFFF 里面的 0x 指的是十六进制数,我们求出来的一般都是十进制,写十六进制形式就加 0x 前缀,不转换就别乱搞)

存放一个字节/字/半字/双字的单元称为字节/字/半字/双字存储单元,相应的地址称为字节/字/半字/双字地址;编址/寻址的最小单元是字节/字/半字/双字单元,就是对应按什么编址/寻址

每根地址线都有两个状态:要么 0 ,要么 1 ,地址就是一串 0、1 的序列。

有 n 根地址线,则最大寻址范围2^{n} (并不一定都是求最大寻址范围,怎么求在于按什么来寻址)。

一般出现按什么寻址会有两种题型:

题型一:条件给地址线的根数 + 按什么寻址

题目中给出 地址线的根数 + 按什么编址/寻址(若是按字/半字寻址会给出字长) 可求出 寻址空间范围

假如说现在有 n 根地址线,

一组地址线每一次读出来的地址就对应一个(字节/半字/字/双字,按什么编址就是什么)的地址(注意:不一定把这 n 根全部用了,所以前面说是最大寻址范围)

按字节寻址:可寻址空间 2^{n} B

按字寻址:计算机在寻址过程中会对字进行字节寻址,所以会占用部分地址线。

假设字长为 2^{m} 位,这个字就是由 \frac{2^{m}}{2^{3}=8}=2^{m-3} 个字节组成(就是除以8)

需要占用 k 根地址线里的 k = m - 3 (注意 m 是指数形式字长的幂次,不是字长)

除去占用的,还剩下的地址线根数为 n - k ,则可寻址空间 2^{m-k}W(这里的 W 为字长,想要转换成正常的 B 就是乘组成那个字的字节个数)

按半字寻址:半字虽然指的是字的一半,但是不一定代表内部就只有一个字节了,所以跟按字寻址的寻址空间求法类似(双字同理)

题型二:条件给出主存容量 + 按什么寻址

题目中给出 主存容量 + 按什么编址/寻址(若是按字/半字寻址会给出字长) 可求出 寻址空间范围

按字节寻址:主存容量除以 1B

按字寻址:主存容量除以 (1W)字长位数(没有说明字长大小的时候一般都可与容量的单位约去,注意 W 为字长)

按半字寻址:因为半字是字的字长的一半,所以是 主存容量除以 字长位数 / 2(双字同理)

想从第二种情况推出地址线根数的话,就是上面一类型题的反推 ↓

如果是按字节寻址幂次就是;

如果是按字寻址,就看字长,由多少字节构成,就有 2^{m} = 字节数,m + 幂次就是地址线根数;

如果是按半字寻址,就看半字长,跟字长同理。

记错考试时间缺考直接重修什么的蠢货无语流泪orz,大半个学期过去回来发现看不懂这张PPT了(可能是因为就给了个字长但是没给存储器容量什么的,y1s1,上学期虽然表面听得认真,但是下来就一个感觉,这PPT长得真tnd白),记录些问老师的问题:

计算机组成与系统结构(物联网专业)_第9张图片

左边图为 a ,右边图为 b

1.计算机不同部件的字长是不一样的,但是一般情况下机器字长等于存储器字长

2.(瞳孔地震!!!突然发现为什么我纠结那么久了!!!原来图里一格是一个字节地址,我把一行看成一个字节地址了,好蠢_(:з」∠)_

所以关于字节地址跟字地址的位数由于PPT内条件缺失就不存在疑问了,注意的点只是PPT是在说字节编址跟字编址两种条件下的地址

由原先的疑问想到的东西 ↓

前面说的两种题型解出来存储器的位数(寻址范围的次幂,也就是可以使用的地址线的根数)需要两个题目条件:一个是按什么寻址,另一个要么是地址线根数要么是内存容量;

字长在这类型的题里面是按字寻址的情况下使用(用来求占用的地址线根数和用来内存容量除它得寻址范围),没有内存容量没有地址线根数,光凭字长啥也求不出来;

3.为什么 a 每一行划了四格,b 每一行划了两格?

图 a 的机器字长为 32 位,它的一个字就包含了 4 个字节,划了四格,图b的机器字长为 16 位,它的一个字就包含了 2 个字节,划了两格

也就是说字地址指向的字存储单元其实是对应一个字里含有的字节个数个字节存储单元,所以前面的字寻址空间计算方法里面,需要占用地址线来进行字内寻址

所以也说字节地址里面隐含字地址

4.按字寻址的话,就不会存在字节地址么:因为寻址最小单元是字单元,还是说只是寻址,但是实际上还是存在字节单元?

看问题三的第二段解释,就是说按什么寻址看的是寻址的最小单元,实际上存储的最小单元还是字节地址

5.字节存储地址不应该是八位么?

看寻址问题开头那句:存放一个字节的单元称为字节存储单元,相应的地址称为字节地址;

意思是,地址是一串二进制数,它的位数根据前面题的方法计算,指向的存储单元里面放的数据是一个字节,所以放的数据是八位,而地址位数就不一定!!!

3.1.2 存储器分级结构

计算机组成与系统结构(物联网专业)_第10张图片

 计算机系统中为何采用层次化存储体系? 层次化存储体系结构如何构成?

需要在一个存储器中同时兼顾容量大,速度快,成本低三点

利用cache高速存取指令和数据,主存储器存放计算机运行期间的大量程序和数据,用外存储器存放系统程序和大型数据文件及数据库,由以上三种类型构成层次化存储体系结构

  • 存储器的端模式

  • 端模式:存储字为多个字节时,在存储器中存放顺序

大端存储和小端存储有什么区别?各种有什么处理器?

  • ① 大端:大尾端优先存储,高字节在低地址;MIPS,IBM 360 / 370,Sparc,网络传输
  • ② 小端:小尾端优先存储,低字节在低地址;X86
  • ARM 的端模式不固定

3.2 SRAM 存储器

  • 内部存储器是半导体存储器,采用双译码方式
  • 提高了计算机的速度
  • 根据信息存储的机理不同可分:
  • ① 静态读写存储器 SRAM :速度快、成本高、容量小、功耗低,一般用作 Cache
  • ② 动态读写存储器 DRAM :容量大、成本低、速度慢、功耗高,用作主存
  • 地址线有 10 根,数据线有 4 根,另外有控制信号 \bar{CS}\bar{WE}

3.2.1 读/写周期波形图

  • 先给地址,再给片选和读/写信号
  • 读出时间:从地址有效到外部数据总线上稳定地出现所读出的数据信息所经历的时间
  • 读周期时间:存储片进行两次连续读操作时所必须间隔的时间,它总是大于或等于读出时间
  • 写周期时间 一般等于 读周期时间 也就是存储周期,所以存取时间是指连续两次读操作所需间隔的最小时间

3.3.1 DRAM存储位元的记忆原理

  • 存储位元是由一个 MOS 晶体管和电容器组成的记忆电路
  • 与 SRAM 芯片不同之处:

  • ① 增加了行地址锁存器和列地址锁存器
  • ② 增加了刷新控制电路,需要定期刷新,并且是按行刷新

简述DRAM存储器为何需要刷新?如何刷新?

DRAM存储位元是基于电容器上的电荷量存储,而电荷量会随着时间和温度减少,因此必须定期刷新 分为集中式刷新和分散式刷新两种

① 集中式刷新方式:DRAM 的所有行在每一个刷新周期中都被刷新,刷新期间停止正常读写

② 分散刷新方式:每隔一段时间刷新一行

3.3.2 读/写周期、刷新周期

3.4 只读存储器

  • 若主存由ROM和RAM 组成,容量分别为 2^{n} 和 2^{m} ,则主存地址共需要n+m位。

3.4.2 Flash 存储器

  • 高密度、非易失性、有很高的读取速度、易于擦除和重写、功耗小

3.5.2 多模块交叉存储器

  • 实际上是一种 模块式 存储器,它能 并行 执行 多个 独立的读写操作

存储器容量扩充

  • 芯片经常是 字数 X 字长 的形式,乘起来就是总容量
  • 1. 位扩展:给定芯片的字长较短,不满足存储器字长要求,用多片来扩展字长
  • 2. 字扩展:给定芯片的字数少,用多片来扩展字数
  • 3. 字位扩展:从字长和字数两个方向扩展

用1K×8位SRAM芯片组成2K×16位的SRAM存储器,问;

共需多少1K×8位SRAM 芯片?

画出该存储器的连接图

看题:

字长为 8 位,需要组成的是 16 位的 → 字长短

字数为 1 K,需要组成的是 2K 的 → 字数少

所以这得字位扩展

  • 这三种扩展方式步骤:
  • ① 确定需要的芯片数量:用后面的存储器容量 / 前面的存储器容量
  • 其中,字位扩展:字数之比作为需要多少组进行字扩展,字长之比作为每组内需要多少芯片进行位扩展
  • ② 确定地址线和数据线数量:
  • a . 地址线:把字数写成 以 2 为底的形式,幂次即为需要的地址线数目
  • b . 数据线:把字长写成 以 2 为底的形式,幂次即为需要的数据线数目
  • ③ 画图(基本上都是问的 SRAM 芯片)(存储器的连接图/组成逻辑框图/组成框图应该都是这玩意儿):
  • a . 位扩展:

计算机组成与系统结构(物联网专业)_第11张图片

  • 字扩展:多出来的高位那根线用来作为片选信号 \bar{CS}

计算机组成与系统结构(物联网专业)_第12张图片

  • 字位扩展(这是 8 组进行字位扩展的示图,高三位进行片选,不懂的话还是去找数字逻辑笔记看看)

计算机组成与系统结构(物联网专业)_第13张图片

Cache

  • 命中率 = cache 中完成存取的总次数 /(cache 中完成存取的总次数 + 主存中完成存取的总次数)
  • 所以主存的存取时间与命中率无关
  • 并且 Cache 的容量越大,存储系统的平均访问时间越低
  • 平均访问时间 = 命中率 × 命中时的 cache 访问时间 + ( 1 - 命中率 )× 未命中时的主存访问时间

写出可以提高访存速度的方法(至少三种)。

单体多字系统; 多体并行系统; 采用高性能存储芯片

  • 时间局部性:被访问过一次的内存区域在未来会被多次访问
  • 空间局部性:如果一个内存区域被访问,那么将来它附近的单元也会被访问

3.6.3 替换策略

  • 直接映射:换指定的行;全相联和组相联:从所有行/组内所有行中选取一行换出
  • 最不经常使用 LFU 算法:每行有个从 0 开始的计数器,该行被访问一次计数器 + 1 ,将计数值最小的一行换出,并清零计数器
  • 近期最少使用 LRU 算法:每行有个从 0 开始的计数器,该行被访问一次,其它各行计数器 + 1,将计数值最大的一行换出,并清零计数器
  • 随机:随机换一行

3.6.4 Cache 的写操作策略

  • ① 写回法:
  • a . 命中:只有当被修改的那行被替换时才写回主存
  • b . 未命中:将对应块调入修改,此行被换出时,写回主存
  • ② 全写法:
  • a . 命中:同时写入主存
  • b . 未命中:直接向主存写入
  • ③ 写一次法:
  • a . 命中:第一次:采用全写法,不是第一次:采用写回法
  • b . 未命中:同写回法

第四章 指令系统

4.1 指令系统的发展与性能要求

  • 指令的执行过程依靠硬件实现,是软硬件的分界面
  • 指令系统是表征一台计算机性能的重要因素,影响计算机的硬件结构、系统软件、机器的适用范围

4.1.1 指令系统的发展

  • ① 系列计算机:基本指令系统、基本体系结构相同的一系列计算机
  • ② 复杂指令系统计算机:CISC,单条指令功能复杂,整个指令系统数量庞大
  • ③ 精简指令系统计算机:RISC,华为麒麟 980,龙芯、苹果 A12
  • RISC 的指令数、寻址方式和指令格式种类相对 CISC 少,内部通用寄存器数量相对 CISC多,大多数指令在一个时钟周期内完成

4.2 指令格式

  • 表示一条指令的二进制串,称为指令字、指令
  •  指令格式:用二进制代码表示的结构形式
  • OP 为操作码,是指令进行什么操作的编码

1. 指令格式结构如下所示,试分析指令格式特点。 ①②③④⑤

4.2.2 地址码

  • ① 地址格式:

计算机组成与系统结构(物联网专业)_第14张图片

  • a . 零地址指令:指令字中只有操作码,没有地址码
  • 可能是无需操作数,可能是操作数在累加器或堆栈中(隐含默认)
  • b . 一地址指令:单操作数指令,指令中只有一个地址码
  • 可能是单操作数运算(地址即是操作数的也是结果的),也可能是二元运算(没给地址的那个操作数是隐含的)
  • c . 二地址指令:双操作数指令
  • 运算结果放在其中一个地址码中,会将其中原有的数据被覆盖
  • d . 三地址指令:两个操作数地址,一个操作数结果存放地址
  • ② 若判断为二 / 三地址指令,则进一步判断:
  • a . 存储器 - 存储器( SS )型指令:操作数和操作结果都是在内存单元中
  • 这种指令需要多次访问内存
  • b . 寄存器 - 寄存器( RR )型指令:操作数和操作结果都是在寄存器中
  • 这种指令执行速度很快,因为不需要访问内存
  • c . 寄存器 - 存储器( RS )型指令:既要访问内存单元,又要访问寄存器
  • 判断是什么型得看寻址方式,也就是说主要看是访问内存嘛还是访问寄存器,每个寻址方式的内容得熟
  • ③ 判断需要多少通用寄存器,这个只用看一个寄存器所占的位数,若占 n 位,则总共用的寄存器就是 2^{n}

4.2.3 指令字长度

  • 指令字长度:一般为机器字长倍数
  • 多字长指令:指令字长度等于两个或多个机器字长度;多次访存才能取得一条指令,会降低速度,占用存储空间
  • ④ 判断是单字长指令还是双字长指令:单字长指令 = 16 位 = 2 字节
  • 指令集中所有指令长度是否相等:
  • a . 若相等 → 等长指令
  • b . 长度随功能而异 → 变长指令

4.2.4 指令助记符

  • 就是 OP 对应的操作的助记符,比如 OP = 001,那么这个操作的指令助记符就是 ADD 即加法
  • ⑤ 判断操作码字段 OP 可以指定多少条指令,若 OP 占 n 位,则可指定 2^{n} 条指令

4.4 指令和数据的寻址方式

  • 在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式
  • 寻址方式:采用地址指定方式时,形成操作数或指令地址的方式
  • ① 指令寻址方式:
  • a . 顺序寻址方式:指令地址在内存中按序存放,必须使用程序计数器 PC 计数指令的顺序号,这个顺序号就是指令在内存中的地址,PC + 1
  • b . 跳跃寻址方式:下条指令的地址码不是由 PC 给出,而是由本条指令给出,可实现程序转移或构成循环程序,PC = 偏移量
  • ② 数据寻址方式
  • 数据寻址和指令寻址的不同点在于:前者决定操作数地址,后者决定程序转移地址

4.4.2 操作数基本寻址方式

  • 即形成操作数的有效地址的方法
  • 有效地址:可以通过该地址直接获取到操作数的地址
  • 指令系统中采用不同的寻址方式的目的主要是:缩短指令字长,扩大寻址空间,提高编程灵活性
  • ⑥ 判断寻址方式有多少种,同寄存器的原理

2. 某计算机单操作数指令长度为16位,格式包括操作码OP、寻址方式特征位X和形式地址D三个字段,其中OP字段6位,字段X为2位,字段D为8位。

X 的功能如下:

    X=00:直接寻址 X=01:变址寻址; X=10:基址寻址;X=11:相对寻址.

设(PC)=1234H,(X1)=0037H , (X2)=1122H,X1为基址寄存器,X2为变址寄存器,以下两条指令均采用上述格式,

请确定这些指令中的操作数有效地址:

(1)4420H (2)2244H

  • a . 隐含寻址:单地址指令和双地址指令中的目的操作数的地址
  • b . 立即寻址:指令地址字段给出的不是地址,而是操作数本身,是获取操作数最快方式
  • c . 直接寻址:指令地址字段直接指出操作数在内存的地址
  • d . 间接寻址:指令地址字段给出的是存操作数在内存的地址的地址,至少需要访问两次才能拿到地址
  • e . 寄存器寻址:操作数在 CPU 内某一通用寄存器中而不是内存
  • f . 寄存器间接寻址:寄存器里放的不是操作数,而是操作数的存储器地址
  • g . 偏移寻址:
  • ① 相对寻址:隐含使用的专用寄存器是 PC ,即指令中给出的地址还要加上 PC 存的偏移量才是有效地址
  • ② 基址寻址:隐含使用的专用寄存器是基址寄存器,即指令中给出的地址还要加上基址寄存器存的偏移量才是有效地址
  • ③ 变址寻址:隐含使用的专用寄存器是变址寄存器,即指令中给出的地址还要加上变址寄存器存的偏移量才是有效地址
  • h . 段寻址:段寄存器中的地址需要自动左移 4 位,然后加上 16 位的偏移量,最终形成 20 位的物理地址
  • i . 堆栈寻址方式:用的是堆栈寄存器来指明栈顶位置 / 地址,数据以先进后出的方式存储
  • ① Full 栈:指针指向栈顶,先动指针再放数据
  • ② Empty 栈:指针指向第一个可用元素,先放数据再动指针
  • ③ 递减栈:堆栈向内存地址减小的方向生长,即向下生长
  • ④ 递增栈:堆栈向内存地址增大的方向生长,即向上生长

3. 某机字长为32位,主存容量为 1MB,单字长指令。下列寄存器的宽度为

PC宽度为 [    ] 位

IR宽度为 [   ]位

AR(内存地址寄存器)宽度为 [   ]位

  • ① PC 宽度取决于主存容量
  • ② IR 是指令寄存器,取决于指令字长度位数
  • ③ AR 取决于内存单元的个数

4.5.1 指令的分类

  • 从功能上:数据传送、数据处理、程序控制、其他指令

4. 某计算机字长16位,运算器16位,有16个通用寄存器,8 种寻址方式,主存64KB,单字长指令,指令中操作数地址码由寻址方式字段和寄存器号字段组成。试问,

单操作数指令最多有多少条? 说明原因。

双操作数指令最多有多少条?说明原因。

解题思路:由寄存器个数 → 寄存器号字段多少位,寻址方式个数 → 寻址方式字段多少位:

主存容量出来的是存储字长,而要看指令字长度看的是机器字长和题目提出它是单字长指令还是双字长指令,所以上面的指令字长度应该是 16 位

求单操作数指令:即上面那两个字段就只有一个,所以 OP 字段位数用字长 - 上面那俩,然后同理求有多少指令

求双操作指令:即上面那两个字段分别有两个,所以 OP 字段位数用字长 - 上面那俩 * 2 ,然后同理求有多少指令

第五章 中央处理器

5.1 CPU 的功能和组成

5.1.1 CPU 的功能

  • 中央处理器是控制计算机自动完成取出指令和执行指令任务的部件,是计算机的核心部件
  • 功能:指令控制、操作控制、时间控制、数据加工

5.1.2 CPU 的基本组成

  • 由运算器和控制器两大部分组成
  • 控制器

  • 协调和指挥整个计算机系统的操作
  • 组成:程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器
  • 功能:
  • ① 从指令 Cache 中取指,并指出下一条指令的位置
  • ② 对指令进行译码,并产生相应的操作控制信号
  • ③ 控制 CPU 、内存和输入 / 输出设备间的数据流动
  • 操作控制器的功能是 ① + ② ,可以用掩膜 ROM、 EPROM 或闪速存储器实现
  • 指令译码器对 指令的操作码字段 进行译码
  • 运算器

  • 数据加工处理部件
  • 组成:ALU 、通用寄存器、数据寄存器 DR 和状态条件寄存器 PSW
  • 功能:执行算术运算、执行逻辑运算,并进行逻辑测试

5.1.3 CPU 中的主要寄存器

1. CPU内有哪些主要寄存器?各自功能是什么?

在CPU中:

保存当前正在执行的指令的寄存器是 [    ] ;

保存当前正要执行的指令地址的寄存器是 [     ] ;

算术逻辑运算结果通常放在 [     ] 和 [      ] 。

从下列寄存器中选择相应的填空:

IR、DR、通用寄存器、AR、PC、PSW

  • 数据寄存器 DR:暂时保存要写入寄存器的数据
  • 指令寄存器 IR:用来保存当前正在执行的一条指令,接收 OP 字段的输出
  • 程序计数器 PC:保存下一条指令的地址
  • 数据地址寄存器 AR :保存当前访问的数据 cache 单元的地址
  • 通用寄存器:有 4 个,作为 ALU 的数据源和目的
  • 状态字寄存器 PSW:由各种状态条件标志拼凑而成的寄存器

2. 数据存储器DM最大存储容量为65536字(字长16位)

请写出下列各寄存器的位数,并说明原因:

(1)DM的地址寄存器AR;

(2)DM数据寄存器DR

AR 位数取决于 DM 的容量,DR 位数取决于 DM 的字长

5.1.4 操作控制器和时序产生器

  • 数据通路:部件之间传送信息的通路
  • 操作控制器:在各部件之间建立数据通路,需要 OP 码和时序信号
  • ① 硬布线控制器,采用时序逻辑技术实现
  • ② 微程序控制器,采用存储逻辑实现
  • 时序发生器:产生并发出计算机所需要的时序控制信号,对各种控制信号实施时间上的控制

5.2 指令周期

3. 名词解释:指令周期

  • 从内存取出一条指令的时间:取指周期
  • 分析并执行这条指令的时间:执行周期
  • 指令周期 = 取指周期 + 执行周期

5.2.1 指令周期的基本概念

  • 指令周期 = n 个 CPU 周期,CPU 周期 = 4 个时钟周期 / T 周期/节拍脉冲
  • CPU 周期又称机器周期:通常指从内存读一个字的最短时间
  • 时钟周期是处理操作的最基本时间单位
  • 单周期 CPU :在一个时钟周期内完成从指令取出到得到结果的所有工作
  • 多周期 CPU :把指令的执行分成多个阶段,每个阶段在一个时钟周期完成,容易流水线执行,效率高

4. 某机器字长16位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节PC自动加1。若某转移指令所在主存地址为2000H,相对位移量字段的内容为06H,则该转移指令成功转以后的目标地址为()。

A.2006H          B.2007H          C.2008H           D.2009H

相对寻址隐含的寄存器是 PC ,每取一字节会自动 + 1 ,所以是 2000 H + 06 H + 2 H

5.2.2 MOV指令

计算机组成与系统结构(物联网专业)_第15张图片

 5.2.3 LAD 指令

计算机组成与系统结构(物联网专业)_第16张图片

5.2.4 ADD 指令

计算机组成与系统结构(物联网专业)_第17张图片

5.2.5 STO 指令

计算机组成与系统结构(物联网专业)_第18张图片

5.2.6 JMP 指令

计算机组成与系统结构(物联网专业)_第19张图片

5.2.7 用方框图语言表示指令周期

  • 一个矩形框代表一个 CPU 周期,内容表示数据通路(到数据线上也算通路),右边写出控制信号
  • 菱形框表示判断或测试
  • 公操作符号 “ ~ ” 表示一条指令执行完毕后 CPU 进行的一些共性操作
  • 从寄存器里进去或出来的控制信号就是对应寄存器名下标写 in / out
  • 到 ALU 上就写 ALU 传送
  • 剩下看图写对应的时序脉冲
  • 一般的都是看图,如果图上实在没标就按上面那样粗略写下
  • 下面这些指令从取指周期 → 执行周期都需要进行译码操作(写菱形框)
  • MOV 、ADD 、JMP :取指一个 CPU 周期,执行一个 CPU 周期
  • LAD 、STO :取指一个 CPU 周期,执行两个 CPU 周期

5.4 微程序控制器

  • 微程序控制基本思想:把操作控制信号编制成微指令,存放到只读存储器里,运行时取出这些微指令,从而产生所需的操作控制信号,是用软件方法来设计硬件
  • 采用微程序控制方式也不能用 μPC 取代 PC

5.4.1 微程序控制原理

  • 部件分为:控制部件和执行部件

1)说明程序与微程序,指令与微指令的异同。

2)微命令有哪几种表示方法?

  • 微命令:控制部件通过控制线向执行部件发出的各种控制命令
  • 微操作:执行部件接受微命令后所进行的操作,在执行部件中是最小、最基本的操作,与微命令一一对应
  • ① 互斥:不能同时或不能在同一个 CPU 周期内并行执行的微操作
  • ② 相容:能够同时或在同一个 CPU 周期并行执行的微操作
  • 微指令:在一个 CPU 周期中,一组实现一定操作功能的微命令的组合,存储在控制器中的控制存储器中,由操作控制和顺序控制两大部分组成
  • ① 操作控制字段中,每一位表示一个微命令,为 1 表示发出该微命令,为 0 不发出
  • ② 顺序控制字段,产生下一条微指令的地址,其中后四位为直接微地址

某机有8条微指令I1-I8,每条微指令所包含的微命令控制信号如下表所示。

计算机组成与系统结构(物联网专业)_第20张图片

a-j分别对应10种不同性质的微命令信号。

  • 上述微命令哪些是互斥?
  • 假设一条微指令的控制字段为8位,请安排微指令的控制字段格式。 

互斥就是找没同屏出现的,控制字段格式按后面的混合表示方法写,也就是说,每一位代表一个微指令,互斥的用译码器编个 001 啊什么的二进制码进行选择,自己看着办

  • 微程序:一系列微指令的有序集合就是微程序,一段微程序对应一条指令
  • 微地址:存放微指令的控制存储器的单元地址
  • 微程序控制器:由控制存储器、微指令寄存器和地址转移逻辑三大部分组成

计算机组成与系统结构(物联网专业)_第21张图片

  • ① 控制存储器 CM:是核心部件,存放微程序,是一种只读存储器,字长为微指令字的字长,存储容量取决于微程序的数量
  • ② 微指令寄存器 μIR:微地址寄存器和微命令寄存器组成
  • ③ 地址转移逻辑:修改微地址

假设某机器有80条指令,平均每条指令由4条微指令组成,其中有一条取指微指令是所有指令公用的。已知微指令长度为32位,计算该控制存储器容量。

容量 = 微指令总条数 * 微指令长度,这里出来单位是 bit,想改成 B 记得 ÷ 8

5.4.1 微程序控制原理

  • 一个微指令周期与 CPU 周期时间相等

5.4.2 微程序设计技术

  • 微命令编码:
  • ① 直接表示法:每一位表示一个微命令
  • 优点:结构简单,并行性强,操作速度快
  • 缺点:微指令字太长,导致 CM 容量较大
  • ② 编码表示法:把一组相斥的微命令组成一个小组,然后通过译码器对小组信号进行译码,输出作为微命令
  • 微指令字缩短,但是译码电路使微指令的执行速度减慢
  • ③ 混合表示法:直接表示法和编码表示法混合使用

已知某机采用微程序控制方式,其控制存储器容量为 512×48 位。微程序可在整个控制存储器中实现转移,控制微程序转移的条件共4个,微指令采用水平型格式,后继微指令地址采用多路转移方式。微指令中的三个字段分别应为多少位?

微命令三个字段分别是:控制字段,下一微命令地址字段和地址字段

首先微命令长度看控制存储器字长,其次,转移条件有几个,那么该字段就有几位

而下一微命令地址字段看存储器的容量 512 ,照旧是幂次,存储单元微命令字段拿总的减前面求出来的那俩

5.5 硬连线控制器

  • 也称为硬布线控制器,由门电路和触发器构成
  • 在微程序控制器中,微命令由微指令产生,在硬连线控制器中,微命令由布尔代数表达式描述的输出函数产生
  • 硬连线与微程序控制器比较

  • ① 硬连线控制器执行速度快
  • ② 硬连线控制器设计复杂,代价昂贵
  • ③ 微程序控制器设计简单,便于维护修改

第六章 总线系统

6.1.1 总线的基本概念

  • 总线( BUS )是构成计算机系统的互连机构、多个系统功能部件之间进行数据传送的公共通路
  • 实现地址、数据和控制信息的交换,在争用资源的基础上进行工作
  • 大致分为:
  • ① 内部总线:CPU 内连接各寄存器及运算器部件之间的总线
  • ② 系统总线:计算机系统中 CPU 和其他高速功能部件相互连接的总线
  • ③ I / O 总线:中低速 I / O 设备相互连接的总线
  • 总线的特性:物理特性、功能特性、电气特性、时间特性
  • 总线带宽:总线所能达到的最高传输速率,单位是 MB/s 或 GB/s
  • 总线带宽 = 总线在同一个时钟周期内能并行传送的字节数 / 总线时钟周期
  • 总线时钟周期 = 总线频率的倒数
  • 系统总线中地址线的功能是:指定主存和 I/O 设备接口电路的地址
  • 系统总线中控制线的功能是:提供主存、I/O 接口设备的控制信号和响应型号

6.1.2 总线的连接方式

  • 外围设备和总线的连接部件称为适配器/接口,完成 CPU 和外设之间的数据传送和控制
  • 总线影响计算机系统性能
  • ① 单总线结构:CPU 是主控设备,结构简单、容易扩充,处理器结构变化对总线产生影响
  • ② 多总线结构:主要解决各种设备速率不匹配的问题,提高总线的效率和吞吐量

6.2 总线接口

6.2.1 信息的传送方式

  • ① 串行传送:使用一条物理传输线:单端传输(使用两条的是差分传输),按顺序每次传一位
  • 同步控制
  • 位时间:每个二进制位在传输线上占用的时间长度
  • 波特率:传输的字符数目 × 每个字符多少位,是位时间的倒数
  • ② 并行传送:
  • 每个数据位都需要一条单独的传输线
  • 数据传送前:并——串变换 → 拆卸
  • 数据接收后:串——并变换 → 装配
  • ③ 分时传送:功能复用 + 分时复用
  • 同步通信之所以比异步通信具有较高的传输频率,是因为同步通信:用一个公共时钟信号进行同步

6.2.2 总线接口的基本概念

  • I/O 接口即 I/O设备适配器,一个标准接口可连接一个设备,也可连接多个设备
  • 接口的典型功能:控制、缓冲、状态、转换、整理、程序中断
  • I/O 接口中 CPU 可访问的寄存器称为 I/O 端口
  • 状态端口和控制端口可以合用同一个寄存器

6.3 总线仲裁

  • 总线上的模块有主方和从方两种形态,每次总线操作只能有一个主方,可以有多个从方,主方启动总线周期,从方响应主方请求
  • 为了解决多个主方争用总线的问题,设置总线仲裁部件
  • 分为集中式和分布式
  • 集中式仲裁:一个中央仲裁器
  • ① 链式查询方式:优先级固定,离仲裁器最近的设备具有最高优先级,用线少,易扩充,对查询链的电路故障敏感,存在单点故障
  • ② 计数器定时查询方式:每次计数可以从 0 开始,也可以从中止点开始,控制线较多,扩展性差
  • ③ 独立请求方式:响应速度快,控制灵活,优先级可通过程序改变,控制线多,总线裁决机构较复杂
  • 分布式仲裁:每个功能设备都有自己的仲裁号以及仲裁器

6.4 总线的定时和数据传送模式

6.4.1 总线的定时

  • 总线信息传送过程:请求总线、总线仲裁、寻址、信息传送、状态返回
  • 定时:事件出现在总线上的时序关系
  • ① 同步定时:由总线上的时钟周期决定
  • ② 异步定时:建立在应答式或互锁机制基础上

第七章 外围设备/外部设备

7.1.1 外围设备的一般功能

  • 在计算机与其他设备或用户之间提供联系
  • 都是在它自己的设备控制器控制下进行工作,而设备控制器则通过 I/O 接口和主机连接,并受主机控制

7.2 磁盘存储设备

  • 存储量大,可重复使用,记录信息可长期保存
  • 存取速度较慢,机械结构复杂
  • 目前硬磁盘主要是温彻斯特磁盘,是一种可移动磁头固定盘片的磁盘机

7.2.3 磁盘驱动器和控制器

  • 磁盘驱动器主要 3 个部件组成:定位驱动系统、主轴系统和数据转换系统

7.2.4 磁盘上信息的分布

  • 盘片上下两面 → 记录面
  • 一个记录面对应一个磁头,记录面上一系列同心圆称为磁道
  • 每个磁道等弧度分为若干个扇区
  • 所有记录面上相同编号的磁道的逻辑上形成一个圆柱面 → 柱面

7.2.5 磁盘存储器的技术指标

  • 存储密度:
  • ① 道密度:沿磁盘半径方向单位长度上的磁道数
  • ② 位密度:磁道单位长度上能记录的二进制代码位数
  • ③ 面密度:位密度和道密度的乘积
  • 存取时间(存储周期):① + ② + ③
  • ① 寻道时间:将磁头定位至所要求的磁道上所需的时间
  • 平均寻道时间:最大找道时间与最小找道时间的平均值
  • ② 等待时间:找道完成后至磁道上所访问的扇区到达磁头下的时间,和磁盘转速有关
  • 平均等待时间:用磁盘旋转半周的时间表示
  • ③ 数据传输时间:传输的字节数/(磁盘转速 × 每磁道字节数)
  • 计算:
  • 有效存储区域 = 外径半径 - 内径半径
  • 柱面个数 = 有效存储区域 × 道密度
  • 每道信息量 = 位密度 × 内层磁道周长
  • 每面信息量 = 每道信息量(也就是每磁道字节数)× 柱面个数
  • 总容量 = 每面信息量 × 能用的记录面个数

7.3 磁带存储设备

  • 磁带采用顺序访问方式,速度比磁盘速度慢,通常作为数据备份的海量存储设备

第八章 输入输出系统

8.1 CPU 与外设之间的信息交换方式

  • 外围设备的两种编址:

  • 编址对象:I/O 设备中的控制寄存器、数据寄存器、状态寄存器
  • ① 独立编址:内存地址和 I/O 寄存器各自独立编址
  • 采用独立编址方式时,I/O 端口地址和主存地址可能相同
  • ② 统一编址:I/O 地址和内存单元一起编址
  • 使用访存指令访问 I/O 端口

假定基准程序 A 在某计算机上的运行时间为 100 秒,其中 90 秒为 CPU 时间,其余为 I/O 时间。若 CPU 速度提高 50%,I/O 速度不变,则运行基准程序 A 所耗费的时间是(  )

  • 耗费的时间 = CPU 时间 + I/O 时间
  • 若 CPU 速度提高 50 %,那么 CPU 时间就会变成 90/1.5 = 60s
  • 这种题还有可能问法是 n 年后的耗费的时间,就每一年拿上一年的 CPU 时间 / 1.5 求新的 CPU 时间就行
  • I/O 时间因为速度不变所以不会变

8.1.3 CPU 与外设间的数据传送方式

  • 速度极慢或简单的外设:直接输入输出
  • 慢速或中速的外设:异步定时
  • 高速的外设:同步定时
  • 输入输出操作的最终目的是要实现 CPU 与外设之间的数据传输

8.1.4 CPU 与 I/O 接口之间的数据传送

  • CPU 管理外设的方式:
  • 单片机多采用程序查询/中断方式,微型机采用程序中断和 DMA 方式,通道是大型机用的
  • ① 无条件传送方式(简单 I/O 方式)
  • ② 程序查询方式:程序控制 I/O 方式
  • 当需要输入/输出时,CPU 暂停执行主程序,转去执行设备的服务程序
  • 信息交换完全由 CPU 执行程序实现,传输和查询都依赖 CPU ,与外设串行工作,反复查询外设状态占用较多 CPU 时间
  • 程序查询输入/输出方式:CPU 周期性轮询调用外设服务程序,数据传输完全依赖于程序控制,查询频繁浪费 CPU 时间
  • ③ 程序中断方式:
  • 中断:CPU 暂时中止现行程序,转去处理随机发生的紧急事件,处理完后自动返回原程序的功能和技术,有时称为异常
  • 中断系统是计算机实现中断功能的软硬件总称,一般在 CPU 中设置中断机构,在外设接口中设置中断控制器,在软件上设置相应的中断服务程序
  • 中断源:产生中断的事件:与 I/O 设备信息交换(键盘、鼠标),故障处理,实时处理,程序调度,时间片划分,软中断
  • 响应时机:外界中断请求信号通常存放在接口中的中断源锁存器中,并通过中断请求线连至 CPU,CPU 只有在当前一条指令执行完毕后,即转入公操作时才受理中断请求
  • 断点保护:当前指令执行结束后 CPU 的状态,即现场,保存到堆栈中
  • 多重中断处理:中断屏蔽触发器,置 1 为关中断,不受理中断请求,置 0 为开中断
  • 如果有多个中断同时发生,系统将根据中断优先级响应优先级最高的中断请求。若要调整中断事件的处理次序,可以利用中断屏蔽
  • 计算机中断响应后,如何调用出中断服务程序:CPU 响应中断后可通过硬件向量法或软件查询法转至中断服务程序入口地址
  • 中断周期的操作由硬件实现,中断服务程序由软件实现
  • ④ 直接内存访问( DMA )
  • ⑤ 通道方式

8.2.1 中断服务程序入口地址的获取

  • ① 向量中断:硬件直接产生一个固定的地址,即向量地址,指向每个中断源设备的中断服务程序入口
  • 中断向量地址是中断服务程序入口地址、中断服务程序入口地址指示器
  • ② 查询中断:不直接提供入口地址,而是为所有中断安排一个公共的中断服务程序,由此程序查询和跳转至相应中断服务子程序入口

8.3 DMA 方式

  • 直接内存访问,完全由硬件执行 I/O 数据交换,不经过 CPU,DMA 控制器接管对总线的控制,用于高速传送成组数据
  • 每传送一个数据就要占用一个存储周期的时间
  • 一个完整的 DMA 过程,部分由 DMAC 控制,部分由 CPU 控制
  • 发出 DMA 请求的是外部设备
  • 简述 DMA 和 I/O 中断方式的异同:
  • 中断方式通过程序实现数据传送,DMA 直接用硬件实现
  • ② CPU 在执行完一条指令后响应中断,在一个指令周期结束后响应 DMA 请求
  • ③ 中断方式还能处理异常时间,DMA 只能进行数据传送
  • ④ 中断方式需要切换程序,保护现场和恢复现场,DMA 不改变 CPU 现场
  • ⑤ DMA 请求比中断请求优先级高
  • 为什么在保护现场和恢复现场的时候必须关中断:保护和恢复现场的时候若允许其他中断发生,干扰正在处理中的操作系统的信息,会导致很难恢复到原有状态甚至发生错误,因为进度无法保存
  • 改中断屏蔽优先级的表格题:
  • 对角线“\”必须被 1 占满
  • 然后看横排,若优先级最高,那么横排全填 1
  • 剩下依次是,大于它优先级的填 0 ,低的填 1

你可能感兴趣的:(物联网专业课学习,其他)