1、计算机系统概述
1.1、计算机系统层次结构
1.1.1、系统的组成
硬件系统和软件系统共同构成了一个完整的计算机系统。硬件指有形的物理设备,是计算机系统中实际物理装置的总称。软件指在硬件上运行的程序和相关的数据及文档。
计算机系统性能的好坏,很大程度上是由软件的效率和作用来表征的,而软件性能的发挥又离不开硬件的支持。
1.1.2、计算机硬件
1、冯 · 诺依曼机的特点:
- 计算机由五大部件组成:输入输出设备,存储器,运算器,控制器;
- 指令和数据以同等地位存于存储器,可按地址寻访;(按地址访问并顺序执行指令)
- 指令和数据用二进制表示, 指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。
- 存储程序 (控制流驱动方式)
- 以运算器为中心(I / O 设备与存储器之间的数据传送通过运算器完成) 现在一般以存储器为中心
“存储程序” 的基本思想是:将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
2、计算机的功能部件
(1)输入设备:键盘、鼠标、扫描仪、摄像机等。
(2)输出设备:显示器、打印机等。
(3)存储器
存储器分为主存储器(又称内存储器)和辅助存储器(又称外存储器)。CPU 能够直接访问的存储器是主存储器。辅助存储器中的信息必须调入主存后,才能被 CPU 所访问。
地址寄存器 (MAR) 存放访存地址,经过地址译码后找到所选的存储单元。
数据寄存器 (MDR) 用于暂存要从存储器中读或写的信息。
存储体由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码 “0” 或 “1”。因此存储单元可存储一串二进制代码,称这串代码为存储字,称这串代码的位数为存储字长,存储字长可以是 1B(8bit)或是字节的偶数倍。
MAR 用于寻址,其位数对应着存储单元的个数,如 MAR 为 10 位,则有 210 = 1024 个存储单元,记为 1K。MAR 的长度与 PC 的长度相等(与地址码长度相等)。
MDR 的位数和存储字长相等,一般为字节的二次幂的整数倍。
注意:MAR 与 MDR 虽然是存储器的一部分,但在现代计算机中却是存在于 CPU中 ,高速缓存(Cache)也存在于CPU中。
(4)运算器(不含地址寄存器)
运算器为执行部件,用于进行算术运算和逻辑运算,其核心是算术逻辑单元 ALU,包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC),乘商寄存器 ( MQ ),操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前 3 个寄存器是必须具备的。运算器内还有程序状态寄存器(PSW), 也称标志寄存器,用于存放 ALU 运算得到的一些标志信息或处理机的状态信息,如结果是否溢出、有无产生进位或借位、结果是否为负等。
(5)控制器(CPU含地址寄存器,不含地址译码器)
计算机的指挥中心,由其“指挥”各部件自动协调地进行工作。控制器由程序计数器(PC),指令寄存器(IR)和控制单元(CU)组成。
PC 用来存放当前欲执行指令的地址,可以自动加 1 以形成下一条指令的地址,它与主存的 MAR 之间有一条直接通路。
IR 用来存放当前的指令(存放欲执行指令的寄存器),其内容来自主存的 MDR。指令中的操作码 OP(IR)送至 CU,用以分析指令并发出各种微操作命令序列;而地址码 Ad(IR) 送往 MAR,用以取操作数。
一般将运算器和控制器集成到同一个芯片上,称为中央处理器 (CPU)。CPU 和主存储器共同构成主机,除主机外的其他硬件装置(外存、I/O设备等)统称为外部设备,简称外设。
CPU 和主存之间通过一组总线相连,总线中有地址、控制和数据 3 组信号线。MAR 中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读 / 写信号线,指出数据是从 CPU 写入主存还是从主存读出到 CPU,根据是读操作还是写操作来控制将 MDR 中的数据是直接送到数据线上还是将数据线上的数据接收到 MDR 中。
ACC | 累加计数器,存放操作数、运算的结果 |
---|---|
MQ | 乘商寄存器,进行乘、除法时用得到 |
X | 通用寄存器,存放操作数 |
ALU | 算术逻辑单元,用电脑实现各种算数运算、逻辑运算 |
PC | 程序计数器,存放下一条指令的地址 |
IR | 指令寄存器,存放当前执行的指令 |
CU | 控制单元,分析指令,给出控制信号 |
MAR | 地址寄存器,用于指明要读/写哪个存储单元。其长度反映存储单元数量 |
MDR | 数据寄存器,用于暂存要读/写的数据。其位数 = 存储字长 |
1.1.3、计算机软件
系统软件主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序,编译程序等。
应用软件是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序,数据库系统等。
三个级别的语言:
1)机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。
2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译。将其转换为机器语言程序后,才能在计算机的硬件系统上执行。
3)高级语言。高级语言(如C、C++、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。
翻译程序的分类:
1)汇编程序(汇编器):将汇编语言程序翻译成机器语言程序。
2)解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
3)编译程序(编译器):将高级语言程序翻译成汇编语言或机器语言程序。
1.1.4、层次结构
下层是上层的基础,上层是下层的扩展。
1.1.5、工作原理
1、“存储程序”工作方式
一个程序的执行就是周而复始地执行一条一条指令(指令和数据预先存储在主存中)的过程。每条指令执行过程包括:从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。
程序执行前,先将程序第一条指令的地址存放到 PC 中,取指令时,将 PC 的内容作为地址访问主存。在每条指令执行过程中,都需要计算下条将执行指令的地址,并送至PC。若当前指令为顺序型指令,则下条指令地址为 PC 的内容加上当前指令的长度;若当前指令为跳转型指令,则下条指令地址为指令中指定的目标地址。
2、从源程序到可执行文件
3、指令执行过程的描述
以取数指令(送至运算器的 ACC 中)为例来说明,其信息流程如下:
1)取指令:PC—>MAR—>M—>MDR—>IR
根据 PC 取指令到 IR。将 PC 的内容送MAR,MAR 中的内容直接送地址线,同时控制器将读信号送读/写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,MDR 从数据线接收指令信息,并传送到 IR 中。
2)分析指令:OP(IR)—>CU
指令译码并送出控制信号。控制器根据 IR 中指令的操作码,生成相应的控制信号,送到不同的执行部件。在本例中,IR 中是取数指令,因此读控制信号被送到总线的控制线上。
3)执行指令:Ad(IR)—>MAR—>M—>MDR—>ACC
取数操作。将 IR 中指令的地址码送 MAR,MAR 中的内容送地址线,同时控制器将读信号送读/写信号线,从主存中读出操作数,并通过数据线送至 MDR,再传送到 ACC 中。
每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1—>PC。(PC)指程序计数器 PC 中存放的内容。PC—>MAR 应理解为 (PC)—> MAR)
1.1.6、本节习题
01、计算机硬件能够直接执行的是【机器语言程序(二进制编码)】。
02、冯 · 诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU 区分它们的依据是【C】。
A. 指令操作码的译码结果 B. 指令和数据的寻址方式
C. 指令周期的不同阶段 D. 指令和数据所在的存储单元
解析:通常在取指阶段取出的是指令,在执行阶段取出的是数据。
1.2、计算机性能指标
1.2.1、主要性能指标
1、字长
计算机进行一次定点整数运算所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关。因此,字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。通常选定为字节(8位)的整数倍。
2、数据通路带宽(外部数据总线的宽度):数据总线一次所能并行传送信息的位数。
3、主存容量
主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数×字长(如512K×16位)来表示存储容量。其中,MAR 的位数反映存储单元的个数,MAR 的位数反映可寻址范围的最大值(不一定是实际存储器的存储容量)。
例如,MAR 为 16 位,表示 216 = 65536,即此存储体内有 65536 个存储单元(可称为 64 K内存,1K = 1024),若 MDR 为 32 位,表示存储容量为 64K×32位。
4、运算速度
(1)吞吐量和响应时间
- 吞吐量: 指系统在单位时间内处理请求的数量。系统吞吐量主要取决于主存的存储周期。
- 响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。通常包括 CPU 时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I / O操作、操作系统开销等时间)。
(2)主频和 CPU 时钟周期
-
CPU 时钟周期:通常为节拍脉冲或 T 周期,即主频的倒数。它是 CPU 中最小的时间单位,执行指令的每个动作至少需要 1 个时钟周期。
-
主频(CPU时钟频率)。机器内部主时钟的频率,是衡量机器速度的重要参数。对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。
注意:CPU 时钟周期 = 1/主频,主频通常以 Hz(赫兹)为单位,1Hz 表示每秒 1 次。
(3)CPI:执行一条指令所需的时钟周期数。
(4)CPU 执行时间 = CPU 时钟周期数 / 主频 = (指令条数 x CPI)/ 主频
(5)MIPS:每秒执行多少百万条指令。
MIPS = 指令条数 / (执行时间 x 106 )
IPS:每秒执行多少条指令。 IPS = 主频 / 平均CPI; 主频 = 1 / 时钟周期。
注意:在描述存储容量、文件大小等时,K、M、G、T 通常用 2 的幂次表示,如 1Kb=210b;在描述速率、频率等时,k、M、G、T 通常用 10 的幂次表示,如 1kb/s = 103b/s。
1.2.2、本节习题
01、计算机中,CPU 的 CPI 与下列【A】因素无关。
A. 时钟频率 B. 系统结构 C. 指令集 D. 计算机组织
解析:CPI 是执行一条指令所需的时钟周期数,系统结构、指令集、计算机组织都会影响 CPI,而时钟频率并不会影响 CPI,但可加快指令的执行速度。例如,执行一条指令需要 10 个时钟周期,则一台主频为 1GHz 的 CPU,执行这条指令要比一台主频为100MHz 的 CPU 快。
02、计算机“运算速度”指标的含义是每秒能执行多少条【指令】。
03、假定计算机 MI 和 M2 具有相同的指令集体系结构(ISA),主频分别为 1.5GHz 和 1.2GHz。在 MI 和 M2 上运行某基准程序 P,平均 CPI 分别为 2 和 1,则程序 P 在 MI 和 M2 上运行时间的比值是【1.6】。
解析:运行时间 = 指令数 × CPI/主频 = 指令数 × CPI × T。
04、下列给出的部件中,其位数(宽度)一定与机器字长相同的是【ALU、通用寄存器】。
机器字长是指 CPU 内部用于整数运算的数据通路的宽度。CPU 内部数据通路是指 CPU 内部的数据流经的路径及路径上的部件,主要是 CPU 内部进行数据运算、存储和传送的部件,这些部件的宽度基本上要一致才能相互匹配。因此,机器字长等于CPU内部用于整数运算的运算器位数和通用寄存器宽度。
05、设主存储器容量为 64K x 32 位,且指令字长、存储字长、机器字长三者相等。写出如下图所示各寄存器的位数,并指出哪些寄存器之间有信息通路。
解析:由于主存容量为 64K×32位,因 216 = 64K,则地址总线宽度为 16 位,32 位表示数据总线宽度,因此 MAR 为 16 位,PC 为 16 位,MDR 为 32 位。
因指令字长 = 存储字长 = 机器字长,则 IR、ACC、MQ、X 均为32位。
寄存器之间的信息通路有:
PC—>MAR
Ad(IR)—>MAR
MDR—>IR
取数:MDR—>ACC,存数:ACC—>MDR
MDR—>X
1.3、简答题
(1)计算机由哪几部分组成?以哪部分为中心?
计算机由运算器、控制器、存储器、输入设备及输出设备五大部分构成。现代计算机通常把运算器和控制器集成在一个芯片上,合称为中央处理器。
而在微处理器面世之前,运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量 I/O 设备的速度和 CPU 的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使 I/O 操作尽可能地绕过 CPU,直接在 I/O 设备和存储器之间完成,以提高系统的整体运行效率。
(2)主频高的 CPU 一定比主频低的 CPU 快吗?为什么?
衡量 CPU 运算速度的指标有很多,不能以单独的某个指标来判断 CPU 的好坏。CPU 的主频,即CPU 内核工作的时钟频率。CPU 的主频表示 CPU 内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看 CPU 的流水线的各方面的性能指标(架构、缓存、指令集、CPU 的位数、Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的 CPU 实际运算速度较低的现象。
(3)不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植性。其中机器语言可以被硬件直接执行。
(4)基准程序执行得越快说明机器的性能越好吗?
一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。
(5)什么是透明性?透明是指什么都能看见吗?
在计算机领域中,站在某类用户的角度,若感觉不到某个事物或属性的存在,即“看”不到某个事物或属性,则称为“对该用户而言,某个事物或属性是透明的”。这与日常生活中的“透明”概念正好相反。
例如,对于高级语言程序员来说,浮点数格式、乘法指令等这些指令的格式、数据如何在运算器中运算等都是透明的;而对于机器语言或汇编语言程序员来说,指令的格式、机器结构、数据格式等则不是透明的。在 CPU 中,IR、MAR 和 MDR 对各类程序员都是透明的。
(6)翻译程序、解释程序、汇编程序、编译程序的区别和联系是什么?
翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,只要源程序不变,就无须重新翻译。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。
编译程序与汇编程序的区别:若源语言是诸如 C、C++、Java 等“高级语言“,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器浯言,则这样的一个翻译程序称为汇编程序。
(7)字、字长、机器字长、指令字长、存储字长的区别和联系是什么?
在通常所说的“某 16 位或 32 位机器”中,16、32指的是字长,也称机器字长。所谓字长,通常是指 CPU 内部用于整数运算的数据通路的宽度,因此字长等于 CPU 内部用于整数运算的运算器位数和通用寄存器宽度,它反映了计算机处理信息的能力。字和字长的概念不同。字用来表示被处理信息的单位,用来度量数据类型的宽度,如 x86 机器中将一个字定义为 16 位。
指令字长:一个指令字中包含的二进制代码的位数。
存储字长;一个存储单元存储的二进制代码的长度。
它们都须是字节的整数倍。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的 2 倍,则需要 2 个访存周期来取出一条指令;若指令字长等于存储字长,则取指周期等于机器周期。
早期的存储字长一般与指令字长、字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长、字长都可变,但必须都是字节的整数倍。
(8)什么是存储程序原理?按此原理,计算机应具有哪几大功能?
存储程序是指将指令以代码的形式事先输入计算机主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
计算机按照此原理应该具有5大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能。
2、数据的表示和运算
2.1、数制与编码
01、下列各种数制的数中,最小的数是【B】。
A. (101001)2 B. (101001)BCD C. (52)8 D. (233)16
解析:A 为 29H,B 为 29D,C 写成二进制数为 101010,即 2AH,显然最小的为 29D。注意,没有特殊说明时,可默认 BCD 码就是 8421 码。
02、若 X 为负数,则由 [X]补 求 [-X]补 是将【 [X]补 连同符号位一起变反,末位加 1 】。
03、对于相同位数(设为 N 位,不考虑符号位)的二进制补码小数和十进制小数,二进制小数能表示的数的个数 / 十进制小数所能表示数的个数为【(0.2)N】。
解析: N 位二进制小数可以表示的数的个数为 1 + 20 + 21 + ········· + 2N-1 = 2N ,而十进制小数能表示
的数的个数为 10N,二者的商为(0.2)N。这也是为何在计算机的运算中会出现误差情况的原因,它表明仅有 (0.2)N 概率的十进制数可以精确地用二进制表示。
04、若 [x]补 = 1,x1x2x3x4x5x6,其中 xi 取 0 或 1,若要 x > -32,应当满足【x1 为 1,x2 ······x6 中至少有一位为 1】。
解析:[x]补 的符号位为 1,所以 x 一定是负数。绝对值越小,数值越大,所以要满足 x > - 32,则 x 的绝对值必须小于 32。因此,x1 为 1,x2 ······x6 中至少有一位为1;这样,各位取反末尾加 1 后,x1 一定为 0,x2 ······x6 中至少有一位为 1,使得 x 的绝对值保证小于 32。
解题技巧:使用补码表示时,若符号位相同,则数值位越大码值越大。
05、设 x 为真值,x* 为其绝对值,满足[ - x* ]补 = [ - x ]补,当且仅当【D】。
A. x 任意 B. x 为正数 C. x 为负数 D. 以上说法都不对
解析:当 x 为 0 或为正数时,满足 [ - x* ]补 = [ - x ]补,B 为充分条件,因此 B 错误。而 x 为负数时,-x 为正数,而 -x* 为负数,补码的表示是唯一的,显然二者不等,因此 C 错误
06、一个 n+1 位整数 x 原码的数值范围是【- 2n + 1 ≤ \leq ≤ x ≤ \leq ≤ 2n - 1】
一个 n+1 位小数 x 原码的数值范围是【- (1 - 2-n ) ≤ \leq ≤ x ≤ \leq ≤ 1 - 2-n】
一个 n+1 位整数 x 补码的数值范围是【- 2n ≤ \leq ≤ x ≤ \leq ≤ 2n - 1】
一个 n+1 位小数 x 补码的数值范围是【- 1 ≤ \leq ≤ x ≤ \leq ≤ 1 - 2-n】
移码常用来表示浮点数的阶码。它只能表示整数。
[x]移 = 2n + x (-2n ≤ \leq ≤ x ≤ \leq ≤ 2n,其中机器字长为 n + 1)
当 纯整数 x 为负数时:
[ x ]补 = 2n+1 - | x | [ x ]原 = 2n + | x |
当 纯小数 x 为负数时:
[ x ]补 = 2 - | x | [ x ]原 = 1 + | x |
07、若寄存器内容为 10000000,若它等于 - 0,则为【原码】。
若寄存器内容为 00000000,若它等于 - 128,则为【移码】。
若寄存器内容为 11111111,若它等于 - 1,则为【补码】。
若寄存器内容为 11111111,若它等于 +127,则为【移码】。
0 的移码:1000···0(n 个 “0”) -128 的补码:10000000
同一数值的移码和补码除最高位相反外,其他各位相同。
08、在计算机中,通常用来表示主存地址的是【无符号数】。
解析:主存地址都是正数,因此不需要符号位,因此直接采用无符号数表示。
09、由 3 个 “1” 和 5 个 “0” 组成的 8 位二进制补码,能表示的最小整数是【-125】。
解析: 使用补码表示时,若符号位相同,则数值位越大码值越大。绝对值越小,数值越大。
1000 0011 ——> 1111 1101 <——> -125
10、下列为 8 位移码机器数 [ x ]移,求 [ - x ]移 时,【B】将会发生溢出。
A. 11111111 B. 00000000 C. 10000000 D. 01111111
解析:选项 B 对应 8 位最小的值 - 128,而 - x = 128 发生溢出,因此无法表示其移码。
2.2、运算方法和运算电路
01、算术移位 不同机器数移位(有符号数)后空位添补规则
码制 | 添补代码 | |
---|---|---|
正数 | 原码、补码、反码 | 0 |
原码 | 0 | |
负数 | 补码 | 左移添 0 |
补码 | 右移添 1 | |
反码 | 1 |
02、逻辑移位(无符号数)
移位规则:逻辑 左移 时,高位移丢,低位添 0;逻辑 右移 时,低位移丢,高位添 0。
03、补码加减运算公式(设机器字长为 n + 1)
[ A + B ]补 = [ A ]补 + [ B ]补 ( mod 2n+1 ) [ A - B ]补 = [ A ]补 + [ - B ]补 ( mod 2n+1 )
注:最终运算结果的高位丢弃,保留 n + 1 位,运算结果亦为补码。
【例】设机器字长为 8 位(含 1 位符号位),A = 15,B = 24,求 [ A + B ]补 和 [ A - B ]补。
解:A = +15 = +000 1111,B = +24 = +001 1000; 得 [ A ]补 = 0000 1111,[ B ]补 = 0001 1000
求得 [ - B ]补 = 1110 1000
所以: [ A + B ]补 = 0010 0111 ,符号位为 0,对应真值为 +39。
[ A - B ]补 = 1111 0111 ,符号位为 1,对应真值为 - 9。
04、设 x = - 0.1101,y = 0.1011,采用原码一位乘法求 x·y 。
05、设 x = - 0.1101, y = 0.1011 ,采 用 Booth 算 法 求 x · y 。
06、设 x = 0.1011,y = 0.1101,采 用 原 码 加 减 交 替 除 法 求 x/y 。
07、设 x = 0.1000,y =- 0.1011,采 用 补 码 加 减 交 替 除 法 求 x/y 。
08、一 个 C 语 言 程 序 在 一 台 32 位 机 器 上 运 行 。程 序 中 定 义 了 三 个 变 量 x 、y 、z , 其 中 x 和 z 为 int 型 ,y 为 short 型 。当 x = 127 、y = - 9 时 ,执 行 赋 值 语 句 z = x + y 后 ,x 、 y 、z 的 值 分 别 是 【0000 007FH、FFF7H、0000 0076H】。
解 析:C 语 言 的 数 据 在 内 存 中 为 补 码 形 式 , 因 此 x 、y 的 机 器 数 写 为 0000 007F 、 FFF7H 。 执 行 z = x + y 时 , 由 于 x 为 int 型 , y 为 short 型 , 因 此 需 将 y 的 类 型 强 制 转 换 为 int 型 , 在 机 器 中 通 过 符 号 位 扩 展 实 现 , 由 于 y 的 符 号 位 为 1 , 因 此 在 y 的 前 面 添 加 16 个 1 , 即 可 将 y 强 制 转 换 为 int 型 , 其 十 六 进 制 形 式 为 FFFF FFF7H 。然 后 执 行 加 法 , 即 0000 007FH + FFFF FFF7H = 0000 0076H , 其 中 最 高 位 的 进 位 1 自 然 丢 弃 。
09、假 定 有 4 个 整 数 用 8 位 补 码 表 示 ,r1 = FEH 、r2 = F2H 、r3 = 90H 、r4 = F8H , 若 将 运 算 结 果 存 放 在 一 个 8 位 寄 存 器 中 , 则 下 列 运 算 会 发 生 溢 出 的 是 【B】 。
A. r1 × r2 B. r2 × r3 C. r1 × r4 D. r2 × r4
解 析:本 题 的 真 正 意 图 是 考 查 补 码 的 表 示 范 围 , 采 用 补 码 乘 法 规 则 计 算 出 4 个 选 项 是 费 力 不 讨 好 的 做 法 ,且 极 易 出 错 。8 位 补 码 所 能 表 示 的 整 数 范 围 为 - 128 ~ +127 。 将 4 个 数 全 部 转 换 为 十 进 制 数 :r1 = -2 、r2 = -14 、r3 = -112 、r4 = -8,r2 × r3 远 超 出 了 表 示 范 围 , 发 生 溢 出 。
10、某 字 长 为 8 位 的 计 算 机 中 , 已 知 整 型 变 量 x、y 的 机 器 数 分 别 为 [x]补 = 1 111 0100 ,[y]补= 1 0110000 。 若 整 型 变 量 z =2x + y / 2 , 则 z 的 机 器 数 为 【1 1000000】 。
解 析:x * 2 ,将 x 算 术 左 移 一 位 为 1 1101000 ;y/2,将 y 算 术 右 移 一 位 为 11011000, 均 无 溢 出 或 丢 失 精 度 。 补 码 相 加 为 1 1101000 + 1 1011000 = 1 1000000 , 亦 无 溢 出 。
11、某 32 位 计 算 机 按 字 节 编 址 , 采 用 小 端 方 式 。 若 语 句 "int i = 0;” 对 应 指 令 的 机 器 代 码 为 "C7 45 FC 00 00 00 00 ” , 则 语 句 "int i = - 64;” 对 应 指 令 的 机 器 代 码 是___。
解 析:按 字 节 编 址 , 采 用 小 端 方 式 , 低 位 的 数 据 存 储 在 低 地 址 位 、 高 位 的 数 据 存 储 在 高 地 址 位 ,并 且 按 照 一 字 节 相 对 不 变 的 顺 序 存 储 。 由 题 意 , 存 储 0 的 位 数 是 后 32 位 , 则 我 们 只 需 要 把 - 64 的 补 码 按 字 节 存 储 在 其 中 即 可 , 而 - 64 表 示 成 32 位 的 十 六 进 制 是 FFFFFF C0 , 根 据 小 端 方 式 特 点 , 低 字 节 存 储 在 低 地 址 , 就 是 C0 FF FF FF 。
12、考 虑 以 下 C 语 言 代 码 :unsigned short usi = 65535 ;short si = usi ; 执 行 上 述 程 序 段 后 , si 的 值 是 【-1】 。
解 析:unsigned short 类 型 为 无 符 号 短 整 型 , 长 度 为 2 字 节 , 因 此 unsigned short usi 转 换 为 二 进 制 代 码 即 1111 1111 1111 1111 。 short 类 型 为 短 整 型 , 长 度 为 2 字 节 , 在 采 用 补 码 的 机 器 上 , short si 的 二 进 制 代 码 为 1111 1111 1111 1111, 因 此 si 的 值 为 1000 0000 0000 0001 = -1 。( 仅 解 释 方 式 不 同 )
13、在 按 字 节 编 址 ,采 用 小 端 方 式 的 32 位 计 算 机 中 ,按 边 界 对 齐 方 式 为 以 下 C 语 言 结 构 型 变 量 a 分 配 存 储 空 间 。
struct record{
short x1; int x2;
}a;
若 a 的 首 地 址 为 2020 FE00H , a 的 成 员 变 量 x2 的 机 器 数 为 1234 0000H , 则 其 中 34H 所 在 存 储 单 元 的 地 址 是【2020 FE06H】。
解 析:
14、有 实 现 x * y 的 两 个 C 语 言 函 数 如 下 :
unsigned umul (unsigned x,unsigned y) { return x * y ; }
int imul (int x , int y) { return x * y ; }
假 定 某 计 算 机 M 中 的 ALU 只 能 进 行 加 减 运 算 和 逻 辑 运 算 。请 回 答 下 列 问 题 。
1 ) 若 M 的 指 令 系 统 中 没 有 乘 法 指 令 , 但 有 加 法 、 减 法 和 位 移 等 指 令 , 则 在 M 上 也 能 实 现 上 述 两 个 函 数 中 的 乘 法 运 算 , 为 什 么 ?
2 ) 若 M 的 指 令 系 统 中 有 乘 法 指 令 , 则 基 于 ALU 、 位 移 器 、 寄 存 器 及 相 应 控 制 逻 辑 实 现 乘 法 指 令 时 , 控 制 逻 辑 的 作 用 是 什 么 ?
3 ) 针 对 以 下 三 种 情 况 : a ) 没 有 乘 法 指 令 ; b ) 有 使 用 ALU 和 位 移 器 实 现 的 乘 法 指 令 ; c ) 有 使 用 阵 列 乘 法 器 实 现 的 乘 法 指 令 , 函 数 umul() 在 哪 种 情 况 下 执 行 的 时 间 最 长 ? 在 哪 种 情 况 下 执 行 的 时 间 最 短 ? 说 明 理 由 。
4 ) n 位 整 数 乘 法 指 令 可 保 存 2n 位 乘 积 , 当 仅 取 低 n 位 作 为 乘 积 时 , 其 结 果 可 能 会 发 生 溢 出 。 当 n = 32 , x = 231 - 1 、 y = 2 时 , 带 符 号 整 数 乘 法 指 令 和 无 符 号 整 数 乘 法 指 令 得 到 的 x * y 的 2n 位 乘 积 分 别 是 什 么( 用 十 六 进 制 表 示 )? 此 时 函 数 umul() 和 imul() 的 返 回 结 果 是 否 溢 出 ? 对 于 无 符 号 整 数 乘 法 运 算 ,当 仅 取 乘 积 的 低 n 位 作 为 乘 法 结 果 时 , 如 何 用 2n 位 乘 积 进 行 溢 出 判 断 ?
解 析:1 ) 乘 法 运 算 可 通 过 加 法 和 移 位 来 实 现 。编 译 器 可 以 将 乘 法 运 算 转 换 为 一 个 循 环 代 码 段 ,在 循 环 代 码 段 中 通 过 比 较 、加 法 和 移 位 等 指 令 实 现 乘 法 运 算 。
2 ) 控 制 逻 辑 的 作 用 是 控 制 循 环 次 数 , 控 制 加 法 和 移 位 操 作 。
3 ) a) 最 长 , c) 最 短 。 对 于 a) , 需 要 用 循 环 代 码 段 ( 即 软 件 ) 实 现 乘 法 操 作 , 因 而 需 要 反 复 执 行 很 多 条 指 令 , 而 每 条 指 令 都 需 要 取 指 令 、 译 码 、 取 数 、 执 行 并 保 存 结 果 , 所 以 执 行 时 间 很 长 ; 对 于 b) 和 c) , 都 只 需 用 一 条 乘 法 指 令 实 现 乘 法 操 作 , 不 过 b) 中 的 乘 法 指 令 需 要 多 个 时 钟 周 期 才 能 完 成 , 而 c) 中 的 乘 法 指 令 可 在 一 个 时 钟 周 期 内 完 成 , 所 以 c) 的 执 行 时 间 最 短 。
4 ) 当 n = 32 、 x = 231 - 1 、 y = 2 时 ,带 符 号 整 数 和 无 符 号 整 数 乘 法 指 令 得 到 的 64 位 乘 积 都 是 0000 0000 FFFF FFFEH 。int 型 的 表 示 范 围 为 [ -231 ,231 -1 ] ,故 函 数 imul() 的 结 果 溢 出 ;unsigned int 型 表 示 范 围 为 [ 0 ,232 - 1 ] ,故 函 数 umul() 的 结 果 不 溢 出 。 对 于 无 符 号 整 数 乘 法 ,若 乘 积 高 n 位 全 为 0 , 即 使 低 n 位 全 为 1 也 正 好 是 232 - 1 , 不 溢 出 , 否 则 溢 出 。
2.3、浮点数的表示与运算
01、长 度 相 同 、格 式 相 同 的 两 种 浮 点 数 , 假 设 前 者 基 数 大 ,后 者 基 数 小 , 其 他 规 定 均 相 同 , 则 它 们 可 表 示 的 数 的 范 围 和 精 度 为 【前 者 可 表 示 的 数 的 范 围 大 且 精 度 低】。
解 析:基 数 越 大 ,范 围 越 大 ,但 精 度 变 低( 数 变 稀 疏 )。在 浮 点 数 总 位 数 不 变 的 情 况 下 ,阶 码 位 数 越 多 ,尾 数 位 数 越 少 ;即 表 示 的 数 的 范 围 越 大 ,精 度 越 差( 数 变 稀 疏 )。
02 , 在 规 格 化 浮 点 运 算 中 ,若 某 浮 点 数 为 25 × 1.10101,其 中 尾 数 为 补 码 表 示 , 则 该 数【需 将 尾 数 左 移 一 位 规 格 化】。
解 析:考 查 浮 点 数 的 规 格 化 。 当 尾 数 为 补 码 表 示 , 且 为 1.0×××× 形 式 时 为 规 格 化 数 , 因 此 该 尾 数 需 左 移 一 位 , 阶 码 同 时 应 减 1 , 才 为 规 格 化 数 。
03、某 浮 点 机 , 采 用 规 格 化 浮 点 数 表 示 , 阶 码 用 移 码 表 示 ( 最 高 位 代 表 符 号 位 ) , 尾 数 用 原 码 表 示 。下 列 【B】 的 表 示 不 是 规 格 化 浮 点 数 。
A. 11111111,1.1000······00 B. 0011111 ,1.0111······01
C. 1000001 , 0.1111······01 D. 0111111 , 0.1000········10
解 析:原 码 表 示 时 , 正 数 的 规 格 化 形 式 为 0.1×××× , 负 数 的 规 格 化 形 式 为 1.1×××× , 因 此 B 错 误 。
04、若 浮 点 数 的 尾 数 用 补 码 表 示 , 则 下 列 【D】中 的 尾 数 是 规 格 化 数 形 式 。
A. 1.11000 B. 0.01110 C. 0.01010 D. 1.00010
解 析:补 码 的 规 格 化 表 示 是 小 数 点 后 一 位 与 符 号 位 不 同 。
IEEE 754 标 准 中 尾 数 采 用 原 码 表 示 , 阶 码 部 分 用 移 码 表 示 。
05、设 浮 点 数 的 基 数 为 4 , 尾 数 用 原 码 表 示 , 则 以 下【C】 是 规 格 化 的 数 。
A. 1.001101 B. 0.001101 C. 1.011011 D. 0.000010
解 析:原 码 表 示 的 规 格 化 小 数 是 小 数 点 后 2 位 ( 基 数 为 4 , 用 2 位 表 示 ) 不 全 为 0 的 小 数 。
06、设 浮 点 数 共 12 位。其 中 阶 码 含 1 位 阶 符 共 4 位,以 2 为 底,补 码 表 示;尾 数 含 1 位 数 符 共 8 位, 补 码 表 示, 规 格 化。 则 该 浮 点 数 所 能 表 示 的 最 大 正 数 是【27 - 1】。
解 析:为 使 浮 点 数 取 正 数 最 大 ,可 使 尾 数 取 正 数 最 大 ,阶 码 取 正 数 最 大 。尾 数 为 8 位 补 码 ( 含 符 号 位 ),正 值 最 大 为 0.1111111 , 即 1 - 2-7 , 阶 码 为 4 位 补 码 ( 含 符 号 位 ) , 正 值 最 大 为 0111 , 即 7 , 则 最 大 正 数 为 (1 - 2-7)× 27 = 27 - 1 。
舍 入 是 浮 点 数 的 概 念 , 定 点 数 没 有 舍 入 的 概 念 。 浮 点 数 舍 入 的 情 况 有 两 种 : 对 阶 、 右 规 格 化 。 舍 入 不 一 定 产 生 误 差 , 如 向 下 舍 入 1.00 到 1.0 时 是 没 有 误 差 的 。
07、浮 点 数 加 、减 运 算 过 程 一 船 包 括 对 阶 、尾 数 运 算 、规 格 化 、舍 入 和 判 断 溢 出 等 步 驟 。 设 浮 点 数 的 阶 码 和 尾 数 均 采 用 补 码 表 示 , 且 位 数 分 别 为 5 和 7( 均 含 2
位 符 号 位 )。 若 有 两 个 数 X = 27 × 29 /32 和 Y= 25 × 5 / 8 , 则 用 浮 点 加 法 计 算 X + Y 的 最 终 结 果 是 【发 生 溢 出】。
解 析:小 数 点 左 移(右 规、右 移) ,阶 码 增 加 ;小 数 点 右 移(左 规) , 阶 码 减 小 。
5 / 32 —>101. × 2-5 = .00101
char —> int —> long —> double 和 float —> double ,转 换 过 程 没 有 损 失 。
08、float 型 数 据 通 常 用 IEEE 754 单 精 度 格 式 表 示 。 若 编 译 器 将 float 型 变 量 x 分 配 在 一 个 32 位 浮 点 寄 存 器 FR1 中 , 且 x = -8.25 , 则 FR1 的 内 容 是【C184 0000H】。
解 析:先 将 x 转 换 成 二 进 制 为 -1000.01 = - 1.000 01 × 23 , 其 次 计 算 阶 码 E ,根 据 IEEE 754 单 精 度 浮 点 数 格 式 , 有 E - 127 = 3 , 因 此 E = 130 , 转 换 成 二 进 制 为 1000 0010 。 最 后 , 根 据 IEEE 754 标 准 , 最 高 位 的 “ 1 ” 是 被 隐 藏 的 。
IEEE 754 单 精 度 浮 点 数 格 式 : 数 符 ( 1 位 ) + 阶 码 ( 8 位 ) + 尾 数 ( 23 位 ) 。
因 此 FR1 的 内 容 为 1 ; 1000 0010 ; 0000 1000 0000 0000 0000 000 。
即 1100 0001 0000 0100 0000 0000 0000 0000 = C104 0000H 。
09、float 型(即 IEEE754 单 精 度 浮 点 数 格 式)能 表 示 的 最 大 正 整 数 是【2128 - 2104】。
解 析:表 示 最 大 正 整 数 时 : 数 符 取 0 ;阶 码 取 最 大 值 为 127(FEH) ;尾 数 部 分 隐 藏 了 整 数 部 分 的 “1”,23 位 尾 数 全 取 1 时 尾 数 最 大 ,为 1 + 1 - 2-23 ,此 时 浮 点 数 的 大 小 为(2 -223) × 2127 。( 阶 码 全 0 表 示 非 规 格 化 ,全 1 表 示 无 穷 大 )规 格 化 短 浮 点 数 的 真 值 为 (-1)S × 1.m × 2E-127 。此 题 最 小 正 整 数 为:S = m = 0,E = 1 , 为 2-126 。
5、中央处理器总结
5.1、CPU功能和基本结构
01、运算器的组成部件:【算术逻辑单元(ALU)】、【暂存寄存器】、【累加寄存器(ACC)】、【通用寄存器组】、【程序状态字寄存器(PSW)】、【移位器】、【计数器(CT)】。
02、控制器的组成部件:【程序计数器(PC)】、【指令寄存器(IR)】、【指令译码器】、【存储器地址寄存器(MAR)】、【存储器数据寄存器(MDR)】、【时序系统】、【微操作信号发生器】。
03、用户可见的寄存器:【通用寄存器组】、【程序状态字寄存器】、【程序计数器】。
04、用户不可见的寄存器:【存储器地址寄存器(MAR)】、【存储器数据寄存器(MDR)】、【指令寄存器】。
05、在所谓的 n位 CPU 中,n 是指【数据总线线数(数据总线的位数与处理器的位数相同)】。
06、在一条无条件跳转指令的指令周期内,PC 的值被修改【2】。
解析:取指周期结束后,PC值自动加1;执行周期中,PC 值修改为要跳转到的地址,因此在这个
指令周期内,PC 值被修改两次。
07、程序计数器的位数取决于【存储器的容量】。
08、指令寄存器的位数取决于【指令字长】。
09、CPU 中通用寄存器的位数取决于【机器字长】。
10、间址周期结束时,CPU 内寄存器 MDR 中的内容为【操作数地址】。
解析:间址周期的作用是取操作数的有效地址,因此间址周期结束后,MDR 中的内容为操作数
地址。
寄存器 | 作用 |
---|---|
指令寄存器(IR) | 存放当前正在执行的指令 |
程序计数器 | 存放下一条指令在主存中的地址,具有自增功能。 |
地址寄存器 | 暂存指令或数据的地址 |
通用寄存器 | 存放操作数和各种地址信息等 |
程序状态字寄存器 | 暂存系统运行状态(状态标志 / 控制标志) |
5.2、指令执行过程
指令周期 | 行为 | 标志触发器 |
---|---|---|
取指周期 | 取指令(从主存中取出指令字) | FE |
间址周期 | 取有效地址 | IND |
执行周期 | 取操作数 | EX |
中断周期 | 保存程序断点 | INT |
01、【时钟周期】是计算机操作的最小单位时间,由计算机的主频确定,是主频的倒数。工作脉冲是控制器的最小时间单位,起定时触发作用,一个时钟周期有一个工作脉冲。指令周期则可由多个CPU 周期组成。CPU 周期,即机器周期,包含若干时钟周期。
02、以下叙述中,错误的是【B】。
A. 指令周期的第一个操作是取指令
B. 为了进行取指操作,控制器需要得到相应的指令
C. 取指操作是控制器自动进行的
D. 指令执行时有些操作是相同或相似的
解析:取指操作是自动进行的,控制器不需要得到相应的指令。
03、存储器进行一次读或写操作所需的时间称为存储器的访问时间(或读/写时间),而连续启动两次独立的读或写操作(如连续的两次读操作)所需的最短时间称为存取周期。机器周期通常由存取周期确定。
04、、【控制器】可区分存储单元中存放的是指令还是数据。
05、下列说法中,正确的是【(2)(3)】。
(1)指令字长等于机器字长的前提下,取指周期等于机器周期
(2)指令字长等于存储字长的前提下,取指周期等于机器周期
(3)指令字长和机器字长的长度没有任何关系
(4)为了硬件设计方便,指令字长都和存储字长一样大
解析:指令字长一般都取存储字长的整数倍,若指令字长等于存储字长的 2 倍,则需要两次访存,取指周期等于机器周期的 2 倍;若指令字长等于存储字长,则取指周期等于机器周期。指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数,与机器字长没有必然的联系。但为了硬件设计方便,指令字长一般取字节或存储字长的整数倍。
5.3、数据通路的功能和基本结构
(1)PC 内容送至 MAR
PC---->Bus PCout有效,PC内容送总线
Bus--->MAR MARin有效,总线内容送MAR
(2)CPU从主存读取指令
PC--->Bus--->MAR PCout 和 MARin有效,现行指令地址 --->MAR
I--->R CU 发读命令
MEM(MAR)--->MDR MDRin有效
MDR--->Bus--->IR MDRout 和 IRin 有效,现行指令--->IR
(3)两数相加
Ad(IR)--->Bus--->MAR MDRout 和 MARin有效
I--->R CU 发读命令
MEM--->数据线--->MDR 操作数从存储器--->数据线--->MDR
MDR--->Bus--->Y MDRout 和 Yin 有效,操作数--->Y
(ACC)+(Y)--->Z ACCout 和 ALUin 有效,CU 向 ALU 发加命令,结果---> Z
Z--->ACC Zout 和 ACCin 有效,结果--->ACC
01、对 CPU 而言,数据通路的基本结构分为【总线结构】和【专用数据通路结构】,其中总线结构又分为【单总线结构】、【双总线结构】、【多总线结构】。
02、ALU 是一个组合逻辑电路,其运算过程中必须保持两个输入端的内容不变。由于CPU内部采用单总线结构,因此为了得到两个不同的操作数,ALU 的一个输入端与总线相连,另一个输入端需通过一个寄存器与总线相连。此外,ALU 的输出端也不能直接与内部总线相连,否则其输出又会通过总线反馈到输入端,影响运算结果,因此输出端需通过一个暂存器(用来暂存结果的寄存器)与总线相连。
03、CPU内部总线方式的数据通路的特点:结构简单,实现容易,性能较低,存在较多的冲突现象;不采用 CPU 内部总线方式的数据通路的特点:结构复杂,硬件量大,不易实现,性能高,基本不存在数据冲突现象。
04、单总线数据通路将所有寄存器的输入输出端都连接在一条公共通路上,一个时钟内只允许一次操作,无法完成指令的所有操作。
05、控制信号是 CU 根据指令操作码发出的信号,对于单周期处理器来说,每条指令的执行只有一个时钟周期,而在一个时钟周期内控制信号并不会变化;若是多周期处理器,则指令的执行需要多个时钟周期,在每个时钟周期控制器会发出不同信号。
06、指令执行过程中数据所经过的路径,包括路径上的部件,称为数据通路。ALU、通用寄存器、状态寄存器、Cache、MMU、浮点运算逻辑、异常和中断处理逻辑等,都是指令执行过程中数据流经的部件,都属于数据通路的一部分。数据通路中的数据流动路径由控制部件控制,控制部件根据每条指令功能的不同,生成对数据通路的控制信号。
07、历年大题:
5.4、控制器的功能和工作原理(结合视频学习)
01、取指令阶段完成的任务是将现行指令从主存中取出并送至指令寄存器,这个操作是公共的操作,是每条指令都要进行的,与具体的指令无关,所以不需要操作码的控制。
02、在组合逻辑控制器中,微操作控制信号的形成主要与【指令译码信号和时钟】信号有关。因为:CU 的输入信号来源如下:(1)经指令译码器译码产生的指令信息;(2)时序系统产生的机器
周期信号和节拍信号;(3)来自执行单元的反馈信息即标志。前两者是主要因素。
03、在微程序控制器中,形成微程序入口地址的是【机器指令的操作码字段】。
解析:执行公用的取指微程序从主存中取出机器指令后,由机器指令的操作码字段指出各个微程
序的入口地址(初始微地址)。
04、微程序控制存储器用来存放微程序,是微程序控制器的核心部件,属于 CPU 的一部分,而不属于主存。
05、硬布线控制器需要结合各微操作的节拍安排,综合分析,写出逻辑表达式,再设计成逻辑电路图,因此时序系统比较复杂;而微程序只需按照节拍的安排,顺序执行微指令,因此比较简单。
06、在微程序控制器中,控制部件向执行部件发出的控制信号称为微命令,微命令执行的操作
称为微操作。微指令则是若干微命令的集合,若干微指令的有序集合称为微程序。微程序的作用是实现一条对应的机器指令。
07、由水平型微指令解释指令的微程序,具有微指令字较长但微程序短的特点;垂直型微指令其微指令字较短而微程序较长的特点。一条水平型微指令能定义并执行几种并行的基本操作(更充分利用数据通路的并行结构);一条垂直型微指令只能定义并执行一种基本操作。
08、若指令系统中具有 n 种机器指令(n 种操作),则控制存储器中的微程序数至少是 n+2个(增加的 1个为公共的取指微程序,另一个为对应中断周期的微程序)。
09、兼容性微命令是指那些可以同时产生、共同完成某些微操作的微命令。
10、微处理器是相对于一些大型处理器而言的,与微程序控制器没有必然联系。不管是采用微程序控制器,还是采用硬布线控制器,微机的 CPU 都是微处理器。直接编码方式中每位代表一个微命令,不需要译码,因此执行效率最高,只是这种方式会使得微指令的位数大大增加。
11、微程序控制方式采用编程方式来执行指令,而硬布线方式则采用硬件方式来执行指令,因此硬布线方式速度较快。
uPC无法取代 PC,因为它只在微程序中指向下一条微指令地址的寄存器。因此它也必然不可能知道这段微程序执行完毕后下一条是什么指令。
由于每条微指令执行时所发出的控制信号是事先设计好的,不需要改变,因此存放所有控制信号的存储器应为 ROM。
指令周期是从一条指令启动到下一条指令启动的间隔时间,而 CPU 周期是机器周期,是指令执行中每步操作所需的时间。
12、CPU 控制器(控制部件)主要由三个部件组成:指令寄存器、程序计数器和操作控制器。状态条件寄存器通常属于运算器的部件,保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,如运算结果进位标志©、运算结果溢出标志(V)等。运算器、存储器、外围设备相对控制器来说就是执行部件。
13、某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6个微命令,则操作控制字段至少有【15位】。
解析:字段直接编码法将微命令字段分成若干小字段,互斥性微命令组合在同一字段中,相容性
微命令分在不同字段中,每个字段还要留出一个状态,表示本字段不发出任何微命令。5 个互斥类,分别包含 7、3、12、5 和6个微命令,需要 3、2、4、3和 3 位,共 15 位。
14、某计算机采用微程序控制器,共有 32 条指令,公共的取指令微程序包含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法(下地址字段法)确定下条微指令地址,则微指令中下地址字段的位数至少是【8位】。
解析:计算机共有 32 条指令,各个指令对应的微程序平均有 4 条微指令,则指令对应的微指令为 32 × 4=128条,而公共微指令还有 2 条,整个系统中微指令的条数共为 128+2=130条,所以需要 ⌈ l o g 2 130 ⌉ \lceil{log_2130}\rceil ⌈log2130⌉ = 8 位才能寻址到 130 条微指令。
15、某机共有 52 个微操作控制信号,构成 5 个相斥类的微命令组,各组分别包含 5、8、2、15、22 个微命令。已知可判定的外部条件有两个,微指令字长 28 位。
1)按水平型微指令格式设计微指令,要求微指令的下地址字段直接给出后继微指令地址。
2)指出控制存储器的容量。
解:1)根据 5 个互斥类的微命令组,各组分别包含 5、8、2、15、22个微命令,考虑到每组必
须增加一种不发命令的情况,条件测试字段应包含一种不转移的情况,则 5 个控制字段分别需给出6、9、3、16、23 种状态,对应 3、4、2、4、5位(共18位),条件测试字段取 2 位。根据微指令字长为 28 位,下地址字段取 28 - 18 - 2 = 8位。
2)根据后继地址字段为 8 位,微指令字长为 28 位,得出控制存储器的容量为 28 × 28位。
16、主存储器(MM)就是我们通常所说的主存,它在CPU外,用于存储指令和数据,由 RAM 和 ROM实现。控制存储器(CS)用来存放实现指令系统的所有微指令,是一种只读型存储器(ROM实现),机器运行时只读不写,在 CPU 的控制器内。CS按照微指令的地址访问。
应用程序员透明 | 虚拟寄存器、暂存寄存器 |
---|---|
汇编程序员可见 | PC、基址寄存器、状态/标志寄存器、通用寄存器组 |
汇编程序员透明 | MAR、MDR、IR、微指令寄存器 |
系统程序员可见 | 虚拟存储器 |
5.5、异常和中断机制
01、异常
-
硬故障中断:存储器校验错、总线错误等。
-
程序性异常:也称 软件中断,如整除 0、溢出、断点、单步跟踪、非法指令、栈溢出、地址越界、缺页等。
02、中断
中断是指来自 CPU 外部、与 CPU 执行指令无关的事件引起的中断,包括 I/O 设备发出的 I/O 中断(如键盘输入、打印机缺纸等),或发生某种特殊事件(如用户按 Esc 键、定时器计数时间到)等。
03、自陷是人为设定的特殊中断机制,不是出现某些异常情况而产生的。
执行到自陷指令时,无条件或有条件地自动调出操作系统内核程序进行执行。
CPU 执行陷阱指令后,会自动地根据不同陷阱类型进行相应的处理,然后返回到陷阱指令的下一条指令执行。
指令执行结果出现的异常是程序性中断(软件中断),如运算溢出等。I/O 中断属于外部中断。机器校验中断属于终止类异常。
04、CPU 检测到异常事件后所做的处理和检测到中断请求后所做的处理基本是相同的,但有些地方可能不同。例如,对于故障类异常,因为其断点为发生故障时的指令地址,所以要重新计算PC值,而中断的断点为下条指令地址(即PC值),因此无须重新计算 PC 值。
05、以下给出的事件中,无须异常处理程序进行处理的是【B】。
A. 缺页故障 B. Cache 缺失 C. 地址越界 D. 除数为 0
解析:缺页、地址越界 和 除数为0 都是执行某条指令时发生的故障,需要调出操作系统内核中相
应的异常处理程序来处理,而 Cache 缺失由 CPU 硬件实现,无须调出异常处理程序进行处理。
06、异常事件在当前指令执行过程中进行检测,中断请求则在当前指令执行后进行检测。下列事件中,相应处理程序执行后,必须回到当前指令重新执行的是【B】。
A. 系统调用 B. 页缺失 C. DMA传送结束 D. 打印机缺纸
解析:外部中断都是在一条指令执行完成后(中断周期)才被检测并处理的。DMA 请求只请求总线的使用权,不影响当前指令的执行,不会导致被中断指令的重新执行。而缺页中断发生在取指或间址等指令执行过程之中,并且会阻塞整个指令。当缺页中断发生后,必须回到这条指令重新执行,以便重新访存。因此选B。
5.6、指令流水线
01、基础知识部分
一条指令的执行过程分为 5 个阶段(功能段/流水段):【取指(IF)】、【译码/读寄存器(ID)】、【执行/计算地址(EX)】、【访存(MEM)】、【写回(WB)】。
指令周期由若干机器周期来表示,1 个机器周期又包含若干时钟周期,只有在理想情况下的流水线 CPU 中,才可能实现每个时钟周期开始执行 1 条新指令。
流水线设计原则:指令流水段个数以最复杂指令所用的功能段个数为准;流水段的长度以最复杂操作所花的时间为准。
假设某条指令的 5 个阶段所花的时间分别如下:(1)取指:200ps;(2)译码:100ps;(3)执行:150ps;(4)访存:200ps;(5)写回:100ps。该指令的总执行时间为 750ps。按照流水线设计原则,每个流水段的长度为200ps,所以每条指令的执行时间为 1ns。
假设某程序中有 N 条指令,单周期处理机所用的时间为 N×750 ns,而流水线处理机所用的时间为(N + 4)× 200 ns。 (不能缩短单条指令执行时间,但能提高整体效率)
02、流水线性能指标
流水线吞吐率(TP):在单位时间内流水线所完成的任务数量,或输出结果的数量。
TP = n T k \frac{n}{T_k} Tkn 式中, n 是任务数,Tk 是处理完 n 个任务所用的总时间。
设 k 为流水段的段数,T 为时钟周期。在输入流水线中的任务连续的理想情况下,一条 k 段流水线能在 k + n - 1 个时钟周期内完成 n 个任务。得出流水线的吞吐率为 TP = n ( k + n − 1 ) T \frac{n}{(k+n-1)T} (k+n−1)Tn
流水线加速比(S) :完成同样一批任务,不使用流水线与使用流水线所用的时间之比。
S = T 0 T k \frac{T_0}{T_k} TkT0,T0 表示不使用流水线的总时间;Tk 表示使用流水线的总时间。
S = n k T ( k + n − 1 ) T \frac{nkT}{(k + n - 1)T} (k+n−1)TnkT = n k k + n − 1 \frac{nk}{k+n-1} k+n−1nk
超流水线技术(CPI = 1):流水线功能段划分得越多,时钟周期就越短,指令吞吐率也就越高,因此超流水线技术是通过提高流水线主频的方式来提升流水线性能的。但是,流水线级数越多,用于流水寄存器的开销就越大,因而流水线级数是有限制的,并不是越多越好。
多发射流水线 CPU 每个时钟周期可以处理多条指令,CPI<1,相对而言,多发射流水线成本更高,控制更复杂。
动态流水线是相对于静态流水线而言的,静态流水线上下段连接方式固定,而动态流水线的连接方式是可变的。即动态流水线是指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进
行另一种运算,这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。
03、空间并行即资源重复,主要指多个功能部件共同执行同一任务的不同部分,典型的如多处理机系统。时间并行即时间重叠,让多个功能部件在时间上相互错开,轮流重叠执行不同任务的相同部分,因此流水CPU利用的是时间并行性。RISC 都采用流水线技术,以提高资源利用率。大部分CISC同样采用了流水线技术。流水 CPU 和多媒体 CPU 无必然联系。
04、超标量流水线技术:是指在 1个时钟周期内 1条流水线可执行 1条以上的指令。1 条指令分为多段指令,由不同电路单元完成。超标量通过内置多条流水线来同时执行多个处理器,其实质是以空间换取时间**(并非运算操作并行)**。
05、设指令由取指、分析、执行 3 个子部件完成,并且每个子部件的时间均为 T,若采用度为 4的超标量流水线处理机,连续执行 20 条指令,共需【7T】。
解析:这个超标量流水线处理机可以发送 4 条指令,所以共需:(3 + (20-4) / 4)T = 7T。
06、流水 CPU 是由一系列称为“段”的处理线路组成的。一个 m 段流水线稳定时的 CPU 的吞吐能力,与 m 个并行部件的 CPU 的吞吐能力相比,【具有同等水平的吞吐能力】。
解析:吞吐能力是指单位时间内完成的指令数。m 段流水线在第 m 个时钟周期后,每个时钟周期都可以完成 1条指令;而 m 个并行部件在 m 个时钟周期后能完成全部的 m 条指令,等价于平均每个时钟周期完成一条指令。因此两者的吞吐能力等同。
07、设指令流水线把一条指令分为取指、分析、执行3部分,且3部分的时间分别是 T取指= 2ns, T分析= 2ns, T执行= 1ns,则 100 条指令全部执行完毕需【203ns】。
解析:每个功能段的时间设定为取指、分析和执行部分的最长时间 2ns,第一条指令在第 5ns 时执行完毕,其余 99 条指令每隔 2ns 执行完一条,所以 100 条指令全部执行完毕所需的时间为
(5+99x2)ns=203ns。
08、数据在功能部件之间传送的路径被称为数据通路,包括数据通路上流经的部件,如程序计数器、ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等。数据通路由控制部件控制,控制部件根据每条指令功能的不同生成对数据通路的控制信号。因此,不包括控制部件。
09、某计算机的指令流水线由 4 个功能段组成,指令流经各功能段的时间**(忽略各功能段之间的缓存时间)分别为 90ns、80ns、70ns和60ns,则该计算机的 CPU 周期**至少是【90ns】。
解析:时钟周期应以各功能段的最长执行时间为准,否则用时较长的流水段的功能将不能正确完
成,因此应选90ns。
10、若某计算机最复杂指令的执行需要完成 5 个子功能,分别由功能部件 A~E 实现,各功能部件所需时间分别为 80ps、50ps、50ps、70ps和50ps,采用流水线方式执行指令,流水段寄存器延时为20ps,则 CPU 时钟周期至少为【100】。
解析:指令流水线的每个流水段时间单位为时钟周期,题中指令流水线的指令需要用到 A~E 五个
部件,所以每个流水段时间应取最大部件时间 80ps,此外还有寄存器延时20ps,则 CPU 时钟周期至少是100ps。
11、现有 4 级流水线,分别完成 取指令、指令译码并取数、运算、回写四步操作,假设完成各部操作的时间依次为 100ns、100ns、80ns和50ns。试问:
1) 流水线的操作周期应设计为多少?
2) 若相邻两条指令如下,发生数据相关(假设在硬件上不采取措施),试分析第二条指令要推迟多少时间进行才不会出错。
ADD R1,R2,R3 # R2+R3->R1
SUB R4,R1,R5 # R1 -R5->R4
3)若在硬件设计上加以改进,至少需要推迟多少时间?
解析:1)流水线操作的时钟周期 T 应按四步操作中的最长时间来考虑,所以 T=100ns。
2)分析如下:
首先该两条指令发生写后读相关,且两条指令在流水线中的执行情况如下表所示。
5.7、多处理器的基本概念
01、Flynn 分类法将计算机体系结构分为 SISD、SIMD、MISD 和 MIMD 四类。常规的单处理器属于 SISD,常规的多处理机属于MIMD。
02、SIMD 结构的计算机通常由一个指令控制部件、多个处理单元组成,不同处理单元执行的同一条指令所处理的数据可以不同。
03、超线程技术在 CPU 内部仅复制必要的线程资源,共享 CPU 的高速缓存和功能部件,让两个线程可以并行执行,模拟双核心 CPU。
04、时间并行是指流水线技术,空间并行则是指硬件资源的重复,空间并行导致了两类并行机的产生,按 FIynn 分类法分为 SIMD 和 MIMD。
05、多核 CPU 的各核心可以有独自的 Cache,也可以共享同一个Cache。只有支持多线程的并行处理程序才能同时在多个核心上运行,发挥多核的优势。多任务系统又称多道程序系统,可以运行在单核CPU上,宏观上并行,微观上串行。
5.8、简答题
01、指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?
从时间上讲,取指令事件发生在“取指周期”,取数据事件发生在“执行周期”。
从空间上讲,从内存读出的指令流流向控制器(指令寄存器),从内存读出的数据流流向运算器(通用寄存器)。
02、什么是指令周期、机器周期和时钟周期?它们之间有何关系?
CPU 每取出并执行一条指令所需的全部时间称为指令周期;机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作(指令步)所需的时间,通常安排机器周期长度 = 主存周期;时钟周期是指计算机主时钟的周期时间,它是计算机运行时最基本的时序单位,对应完成一个微操作所需的时间,通常时钟周期 = 计算机主频的倒数。
03、什么是微指令?它和指令有什么关系?
控制部件通过控制线向执行部件发出各种控制命令,通常把这种控制命令称为微命令,而一组实现一定操作功能的微命令的组合,构成一条微指令。许多条微指令组成的序列构成微程序,微程序完成对指令的解释执行。指令,即指机器指令。每条指令可以完成一个独立的算术运算或逻辑运算操作。在采用微程序控制器的CPU中,一条指令对应一个微程序,一个微程序由许多微指令构成,一条微指令会发出很多不同的微命令。
04、什么是指令流水线?指令流水线相对于传统体系结构的优势是什么?
指令流水线是把指令分解为若干子过程,通过将每个子过程与其他子过程并行执行,来提高计算机的吞吐率的技术。采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍,因此成为计算机中普遍使用的一种并行处理技术,通过在同一个时间段使用各功能部件,使得利用率明显提高。
05、流水线越多,并行度就越高。是否流水段越多,指令执行越快?
错误,原因如下:
1)流水段缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能,这些开销加长了一条指令的整个执行时间,当指令间逻辑上相互依赖时,开销更大。
2)流水段间控制逻辑变多、变复杂。用于流水线优化和存储器(或寄存器)冲突处理的控制逻辑将随流水段的增加而大增,这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。
6、总线系统
6.1、总线概述
01、基本概念:
总线特点:【分时】和【共享】。
总线特性指【机械特性】(尺寸、形状)、【电气特性】(传输方向和有效的电平范围)、【功能特性】(每根传输线的功能)和【时间特性】(信号和时序的关系)。
总线分类:【片内总线】、【系统总线】、【I/O总线】、【通信总线(外部总线)】。
系统总线(连接各个功能部件:如 CPU、主存和 I/O设备):
-
数据总线:用来传输各功能部件之间的数据信息,它是双向传输总线,其位数与机器字长、存储字长有关。
-
地址总线:用来指出数据总线上的源数据或目的数据所在的主存单元或 I/O 端口的地址,它是单向传输总线,地址总线的位数与主存地址空间的大小有关。
-
控制总线:传输的是控制信息,包括 CPU 送出的控制命令和主存(或外设)返回 CPU 的反馈信号。
总线标准中属于串行总线的是:【USB】、【RS-232C】、【SATA】、【PCI-Expressx】。
局部总线:【PCI】、【AGP】、【VESA】。 总线之间须通过【桥接器相连】。
高速设备采用局部总线连接,可以节省系统的总带宽。
串行传输是指数据的传输在一条线路上按位进行,并行传输是指每个数据位有一条单独的传输线,所有的数据位同时进行。不同信号在同一条信号线上分时传输的方式,称为总线复用方式。
取指令时,指令是在数据线上传输的。操作数显然在数据线上传输。
中断类信号用指出中断向量的地址,CPU 响应中断请求后,将中断应答信号 (INTR) 发回数据总线,CPU 从数据总线上读取中断类型号后,查找中断向量表,找到相应的中断处理程序入口。
握手(应答)信号属于通信联络控制信号,应在控制总线上传输。
可提高同步总线数据传输率的是【增加总线宽度、支持突发传输、提高总线工作频率】。
02、计算机使用总线结构便于增减外设,同时【减少信息传输线的条数】;相对于专线结构,其实际上也降低了信息传输的并行性及信息的传输速度。
03、间址寻址第一次访问内存所得到的信息经系统总线的【数据总线】传送到CPU。
解析:间址寻址首次访问内存所得到的信息是操作数的有效地址,该地址作为数据通过数据总线传送至 CPU,地址总线是用于 CPU 选择主存单元地址和 I/O 端口地址的单向总线,不能回传。
地址总线由单向的多根信号线组成,可用于 CPU 向主存、外设传送地址信息;数据总线由双向的多根信号线组成,CPU 可以沿着这些线从主存或外设读入数据,也可以发送数据;控制总线上传输控制信息,包括控制命令和反馈信号等。
04、传输一幅分辨率为 640×480 像素、颜色数量为 65536 的照片(采用无压缩方式),设有效数据传输率为 56kb/s,大约需要的时间是【87.77s】。
解析:65536 =216 色,因此颜色深度为 16 位,占据的存储空间为 640×480×16 =4915200位。有效传输时间 = 4915200 /(56×103) ≈ \approx ≈ 87.77s。
05、某同步总线的时钟频率为 100MHz,宽度为 32 位,地址/数据线复用,每传输一个地址或数据占用一个时钟周期。若该总线支持突发(猝发)传输方式,则一次**“主存写”**总线事务传输 128 位数据所需要的时间至少是【50ns】。
解析:由于总线时钟频率为 100MHz,因此时钟周期为 10ns。总线位宽与存储字长都是 32 位,因此每个时钟周期可传送一个 32 位存储字。猝发式发送可以连续传送地址连续的数据,因此总传送时间为:传送地址 10ns,传送 128 位数据 40ns,共需50ns。
06、某同步总线采用数据线和地址线复用方式,其中地址/数据线有 32 根,总线时钟频率为66MHz,每个时钟周期传送两次数据(上升沿和下降沿各传送一次数据),则总线带宽是 528MB/s。
解析:32 根,则一次传送 32B/8 = 4B 的数据,66MHz 意味着有 66M 个时钟周期(1Hz 代表每秒钟周期震荡 1 次即 1 个时钟周期),而每个时钟周期传送两次数据,可知总线每秒传送的最大数据量为 66M×2×4B=528MB。
总线带宽(最大数据传输率) = 总线宽度 × 总线工作频率(单位为 B / s) 当 总线周期 = N 个时钟周期,则总线工作频率 = 时钟频率 / N。
总线时钟频率:即机器的时钟频率,它为时钟周期的倒数。
总线工作频率:总线周期的倒数。指 1s 内传送几次数据。
07、假定一台计算机采用 3 通道存储器总线,配套的内存条型号为 DDR3-1333,即内存条所接插的存储器总线的工作频率为 1333MHz,总线宽度为 64 位,则存储器总线的总带宽大约是【32GB/s】。
解析:总线的宽度为 64bit,即 8B,则 3 通道总线的总带宽为 8×1333×3=31.992≈32GB/s。
支持三通道 DDR3 内存,理论上内存带宽为单通道系统的三倍。
08、下列关于总线设计的叙述中,错误的是【A】。
A. 并行总线传输比串行总线传输速度快(不是绝对的)
B. 采用信号线复用技术可减少信号线数量
C. 采用突发传输方式可提高总线数据传输率
D. 采用分离事务通信方式可提高总线利用率
解析:总线复用是指一种信号线在不同的时间传输不同的信息,它可使用较少的线路传输更多的信息,从而节省空间和成本;分离事务通信是总线复用的一种,相比单一的传输线路可以提高总线的利用率。
09、QPI 总线是一种点对点全工同步串行总线,总线上的设备可同时接收和发送信息,每个方向可同时传输 20 位信息(16 位数据 + 4 位校验位),每个 QPI 数据包有 80 位信息,分 2 个时钟周期传送,每个时钟周期传递 2 次。因此,QPI 总线带宽为:每秒传送次数×2B×2。若 QPI 时钟频率为2.4GHz,则总线带宽为【19.2GB/s】。
解析:每个时钟周期传送 2 次,故每秒传送的次数 = 时钟频率×2 = 2.4G×2/s。
总线带宽 = 每秒传送次数 × 2B×2 = 2.4G×2×2B×2/s = 19.2GB/s。
公式中的 “x2B” 是因为每次传输 16 位数据,“×2” 是因为采用点对点全双工总线,两个方向可同时传输信息。
10、某总线支持二级 Cache 块传输方式,若每块 6 个字,每个字长 4 字节,时钟频率为100MHz。
1)读操作时,第一个时钟周期接收地址,第二、三个为延时周期,另用 4 个周期传送一个块。读操作的总线传输速率为多少?
2)写操作时,第一个时钟周期接收地址,第二个为延时周期,另用 4 个周期传送一个块,写操作的总线传输速率是多少?
3)设在全部的传输中,70% 用于读,30% 用于写,该总线在本次传输中的平均传输速率是多少?
答:**1)**读操作的时钟周期数:1+2+4=7
对应的频率:100MHz / 7
总线宽度: 6x4B = 24B
所以数据传输率 = 总线宽度 / 读取时间 = 24×(100MHz / 7) = 343MB/s
2)写操作的时钟周期数: 1 + 1 + 4 = 6
对应的频率: 100MHz / 6
总线宽度: 6×4B=24B
所以数据传输率 = 总线宽度 / 写操作时间 = 24(100MHz/6) = 400MB/s
3)平均传输速率 = 1/(0.7/343+0.3/400) = 358MB/s。
公式推导如下:设时钟频率为 C MHz,读操作占用 r 个周期,写操作占用 w 个周期;读周期数据为 aB,写周期则为 bB;读写了 n 次,其中 p1 (百分比)为读,p2 为写。
则 总周期数 = p1 × n × r + p2 × n × w = n(p1 r + p2 w)
总传输数据 = n( p1 a + p2 b) B 总时间 = [n(p1 r + p2 w) × 1 C M \frac{1}{CM} CM1 ] s
∴ \therefore ∴ 平均传输速率 = C ( p 1 a + p 2 b ) p 1 r + p 2 w \frac{C( p_1 a + p_2 b)}{p_1 r + p_2 w} p1r+p2wC(p1a+p2b) MB/s
6.2、总线事务和定时
01、总线事务包括:【请求操作】、【仲裁操作】、【地址操作】、【数据传输】、【总线释放】。在异步总线中,传送操作【按需分配时间】。
突发(猝发)传送方式能够进行连续成组数据的传送,其寻址阶段发送的是连续数据单元的首地址,在传输阶段传送多个连续单元的数据,每个时钟周期可以传送一个字长的信息,但是不释放总线,直到一组数据全部传送完毕后,再释放总线。
02、同步通信之所以比异步通信具有较高的传输速率,是因为【D】。
A. 同步通信不需要应答信号且总线长度较短
B. 同步通信用一个公共的时钟信号进行同步
C. 同步通信中,各部件的存取时间较接近
D. 以上各项因素的综合结果
03.在手术过程中,医生将手伸出,等护士将手术刀递上,待医生握紧后,护士才松手。若把医生和护士视为两个通信模块,上述动作相当于【异步通信的全互锁方式】。
解析:由题意可知,医生是主模块,护士是从模块。医生伸出手后(即主模块发出请求信号),等待护士将手术刀递上(主模块等待从模块的回答信号),护士也必须等待医生握紧后才松开手
(从模块等待主模块的回答信号),以上整个流程就是异步通信的全互锁方式。
04、某机器 I/O 设备采用异步串行传送方式传送字符信息,字符信息格式为 1 位起始位、7
位数据位、1 位校验位和 1 位停止位。若要求每秒传送 480 个字符,则该设备的数据传输率为【4800b/s】。
解析:一个字符占用 1+7+1+1 = 10位,因此数据传输率为 10×480 = 4800位/秒。
05、在异步串行传输方式下,起始位为 1 位,数据位为 7 位,偶校验位为 1 位,停止位为 1
位,假设每秒传输 1200 比特,则有效数据传输率为【840 b/s】。
解析:在这样的一个数据帧中,有效数据位是 7 位,传输过程中发送的代码位共有 1+7+1+1=10
位,所以有效数据传输率为 1200×7/ 10 = 840 b/s。
6.3、简答题
01、引入总线结构有什么好处?
1)简化系统结构,便于系统设计制造。
2)大大减少了连线数目,便于布线,减小体积,提高系统的可靠性。
3)便于接口设计,所有与总线连接的设备均采用类似的接口。
4)便于系统的扩充、更新与灵活配置,易于实现系统的模块化。
5)便于设备的软件设计,所有接口的软件对不同的接口地址进行操作。
6)便于故障诊断和维修,同时也能降低成本。
02、一个总线在某一时刻可以有多对主从设备进行通信吗?
不可以。在某个总线周期内,总线上只有一个主设备控制总线,选择一个从设备与之进行通信(即一对一的关系),或对所有设备进行广播通信(即一对多的关系)。所以一个总线在某一时刻不能有多对主从设备进行通信,否则会发生数据冲突。
03、同一个总线不能既采用同步方式又采用异步方式通信吗?
半同步通信总线可以。这类总线既保留了同步通信的特点,又能采用异步应答方式连接速度相差较大的设备。通过在异步总线中引入时钟信号,其就绪和应答等信号都在时钟的上升沿或下降沿有效,而不受其他时间的信号干扰。
例如,某个采用半同步方式的总线总是从某个时钟开始,在每个时钟到来时,采样 Wait 信号,若无效,则说明数据未准备好,下个时钟到来时,再采样 Wait 信号,直到检测到有效,再去数据线上取数据。PCI 总线也是一种半同步总线,它的所有事件都在时钟下降沿同步,总线设备在时钟开始的上升沿采样总线信号。
7、输入输出系统
7.1、I/O系统基本概念
01、I/O 控制方式:【程序查询方式】、【程序中断方式】、【DMA方式(硬件电路实现)】、【通道方式】。
02、在微型机系统中,I/O 设备通过【设备控制器】与主板的系统总线相连接。
03、I/O 指令是指令系统(CPU系统指令)的一部分,是机器指令的一类,但其为了反映与 I/O 设备交互的特点,格式和其他通用指令相比有所不同。
04、通道程序存放在主存而非通道中,由通道从主存中取出并执行。通道程序由通道执行,且只能在具有通道的 I/O 系统中执行。
05、打印机从打字原理的角度来分,可分为击打式和非击打式两种;按照能否打出汉字来分,可分为点阵式打印机和活字式打印机。
06、假定一台计算机的显示存储器用 DRAM 芯片实现,若要求显示分辨率为 1600×1200,颜色深度为 24 位,帧频为 85Hz,显存总带宽的 50% 用来刷新屏幕,则需要的显存总带宽至少约为【7834Mb/s】。
解析:刷新所需带宽 = 分辨率×色深×帧频 = 1600×1200×24bit×85Hz = 3916.8Mb/s,显存总带宽的 50% 用来刷新屏幕,于是需要的显存总带宽至少为 3916.8 /0.5 = 7833.6Mb/s ≈ \approx ≈ 7834Mb/s。
显示存储器(VRAM):也称新存储器。VRAM 容量 = 分辨率×灰度级位数
VRAM 带宽 = 分辨率 × 灰度级位数 × 帧频
7.2、I/O接口
01、主机访问 I/O 设备的控制方式可分为【程序查询接口】、【中断接口】和【DMA接口】等。
02、I/O 端口是指接囗电路中可被 CPU 直接访问的寄存器,主要有**【数据端口】、【状态端口】和【控制端口】**,若干端口加上相应的控制逻辑电路组成接口。
03、在统一编址的方式下,区分存储单元和 I/O 设备是靠【不同的地址码】。
04、在 I/O 总线的数据线上传输的信息包括【I/O 接口中的命令字】、【I/O 接口中的状态字】、【中断类型号】。
解析:I/O 总线分为三类:数据线、控制线和地址线。数据缓冲寄存器和命令/状态寄存器的内容都是通过数据线来传送的;地址线用以传送与 CPU 交换数据的端口地址;而控制线用以给 I/ O端口发送读/写信号,只是用来对端口进行读/写控制的。
05、下列选项中,不属于 I/O 接口的是【A】。
A. 磁盘驱动器 B. 打印机适配器 C. 网络控制器 D. 可编程中断控制器
解析:I/O 接口即 I/O 控制器,其功能是接收主机发送的 I/O 控制信号,并实现主机和外部设备之间的信息交换。磁盘驱动器是由 磁头、磁盘和读写电路等组成的,也就是我们平常所说的磁盘本身。
7.3、I/O方式
01、中断隐指令处理步骤:关中断—>保存断点—>引出中断服务程序。程序计数器内容的保护和更新是由【硬件自动】完成的。
02、中断判优逻辑和总线仲裁方式相类似,下列说法中正确的是【(1)(3)(4)】。
(1)在总线仲裁方式中,独立请求方式响应时间最快,是以增加控制线数为代价的
(2)在总线仲裁方式中,计数器定时查询方式有一根总线请求(BR)和一根设备地址线,若每次计数都从 0 开始,则设备号小的优先级高
(3)总线仲裁方式一般是指 I/O 设备争用总线的判优方式,而中断判优方式一般是指 I/O 设备争用 CPU 的判优方式
(4)中断判优逻辑既可以通过硬件实现,又可以通过软件实现
解析:独立请求方式的每个 I/O 接口都有各自的总线请求和总线同意线,共 2n 根控制线以获得高响应速度,因此(1)正确。在计数器定时方式下,n 个 I/O 接口需要 ⌈ l o g 2 n ⌉ \lceil log_2n\rceil ⌈log2n⌉ 根设备地址线,因此(2)错误。总线仲裁方式是总线被争用的判优方式,从设备一般是 I/O 设备,但也可以是硬盘(外存)
03、【中断向量方法】可提高中断源的识别速度。中断向量由向量地址形成部件,即由硬件产生,并且不同的中断源对应不同的中断服务程序,因此通过该方法,可以较快速地识别中断源。
【中断向量】是中断服务程序的入口地址,【中断向量地址】是内存中存放中断向量的地址,即中断服务程序入口地址的地址。
04、当有中断源发出请求时,CPU 可执行相应的中断服务程序,可以提出中断的有【(1)(3)(5)】。
(1)外部事件 (2)Cache (3)虚拟存储器失效 (4)浮点数下溢 (5)浮点数上溢
解析: Cache完全由硬件实现,不涉及中断层面 浮点数下溢直接当机器零处理,不属于中断
内中断是指来自CPU和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、非法指令、用户程序执行特权指令自行中断(INT)和除数为零等。
外部中断:定时器到时描述(时钟中断)、网络数据包到达等。
DMA操作结束、机器出现故障、执行“软中断”指令时都会产生中断请求。
05、每条指令周期结束后,CPU 会统一扫描各个中断源,然后进行判优来决定响应哪个中断源,而不是在每条指令的执行过程中这样做。CPU 会在每个存储周期结束后检查是否有 DMA 请求,而不是在指令执行过程的末尾这样做。中断服务程序的最后指令通常是中断返回指令,与无条件转移指令不同的是,它不仅要修改 PC 值,而且要将 CPU 中的所有寄存器都恢复到中断前的状态。
06、能产生 DMA 请求的总线部件是【具有 DMA 接口的设备】。
07、用户程序需要输入/输出时,需要调用操作系统提供的接口(请求操作系统服务),此时会引起访管中断,系统由用户态转为核心态。
08、在中断响应周期中,CPU 主要完成的工作是【关中断,保护断点,发中断响应信号并形成向量地址,即执行中断隐指令(允许中断触发器置 0 表示关中断)】。
09、设置中断屏蔽标志可以改变【多个中断服务程序执行完的次序】。
10、在 DMA 传送方式中,由外部设备向 DMA 控制器发出 DMA 请求信号,然后由 DMA 控制器向 CPU 发出总线请求信号。在 DMA 方式中,DMA 控制器在传送期间有总线控制权,这时 CPU 不能响应 I/O 中断。
11、关于外中断(故障除外)和 DMA,下列说法中正确的是【A】。
A. DMA 请求和中断请求同时发生时,响应 DMA 请求
B. DMA 请求、非屏蔽中断、可屏蔽中断都要在当前指令结束之后才能被响应
C. 非屏蔽中断请求优先级最高,可屏蔽中断请求优先级最低
D. 若不开中断,所有中断请求就不能响应
解析:DMA 连接的是高速设备,其优先级高于中断请求,以防止高速设备数据丢失,A正确。
DMA 请求的响应时间可以发生在每个机器周期结束时,只要 CPU 不占用总线;中断请求的响应时间只能发生在每条指令执行完毕,B错误。DMA 的优先级要比外中断(非屏蔽中断、可屏蔽中断)高,C错误。如果不开中断,内中断和非屏蔽中断仍可响应,D错误。
12、在 DMA 方式下,数据从内存传送到外设经过的路径是【内存—>数据总线—>DMAC—>外设】
解析:DMA 方式的数据传送不经过 CPU,但需要经过 DMA 控制器中的数据缓冲寄存器。输入时,数据由外设(如磁盘)先送往 DMA 的数据缓冲寄存器,再通过数据总线送到主存。输出时,数据由主存通过数据总线送到DMA的数据缓冲寄存器,然后送到外设。
13、单级中断系统中,中断服务程序内的执行顺序是【保护现场—>中断事件处理—>恢复现场—>开中断—>中断返回】。 (通用寄存器的保护由中断服务程序完成)
解析:在单级(或单重)中断系统中,不允许中断嵌套。中断处理过程为:(1)关中断;(2)保存断点;(3)识别中断源;(4)保存现场;(5)中断事件处理:(6)恢复现场:(7)开中断;(8)中断返回。其中,(1)~(3)由硬件完成,(4)~ (8)由中断服务程序完成。
14、若某设备中断请求的响应和处理时间为 100ns,每 400ns 发出一次中断请求,中断响应所允许的最长延迟时间为 50ns,则在该设备持续工作过程中,CPU 用于该设备的 I/O 时间占整个 CPU 时间的百分比至少是【25%】。
解析: 每 400ns发出一次中断请求,而响应和处理时间为 100ns,其中允许延迟时间为干扰信息,因为在 50ns 内,无论怎么延迟,每 400ns 还是要花费 100ns 处理中断的,所以该设备的 I/O 时间占整个 CPU 时间的百分比为 100ns/400ns = 25%。
15、若设备采用周期挪用 DMA 方式进行输入和输出,每次 DMA 传送的数据块大小为 512B,相应的 I/O 接口中有一个 32 位数据缓冲寄存器。对于数据输入过程,下列叙述中错误的是【C】。
A. 每准备好 32 位数据,DMA 控制器就发出一次总线请求
B. 相对于 CPU,DMA 控制器的总线使用权的优先级更高
C. 在整个数据块的传送过程中,CPU 不可以访问主存储器
D. 数据块传送结束时,会产生"DMA传送结束”中断请求
解析:周期挪用法由 DMA 控制器挪用一个或几个主存周期来访问主存,传送完一个数据字后立即释放总线,是一种单字传送方式,每个字传送完后 CPU 可以访问主存,选项 C 错误。停止 CPU 访存法则是指在整个数据块的传送过程中,使 CPU 脱离总线,停止访问主存。
16、下列是关于多重中断系统中 CPU 响应中断的叙述,错误的是【A】
A. 仅在用户态(执行用户程序)下,CPU 才能检测和响应中断
B. CPU 只有在检测到中断请求信号后,才会进入中断响应周期
C. 进入中断响应周期时,CPU 一定处于中断允许(开中断)状态
D. 若 CPU 检测到中断请求信号,则一定存在未被屏蔽的中断源请求信号
解析:中断服务程序在内核态下执行,若只能在用户态下检测和响应中断,则显然无法实现多重中断(中断嵌套),A错误。 在多重中断中,CPU 只有在检测到中断请求信号后(中断处理优先级更低的中断请求信号是检测不到的),才会进入中断响应周期。进入中断响应周期时,说明此时 CPU一定处于中断允许状态,否则无法响应该中断。如果所有中断源都被屏蔽(说明该中断的处理优先级最高),则CPU不会检测到任何中断请求信号。
17、假定某计算机的 CPU 主频为 80MHz,CPI 为 4,平均每条指令访存 1.5 次,主存与 Cache之间交换的块大小为 16B,Cache 的命中率为 99%,存储器总线宽带为 32位。回答下列问题。
1) 该计算机的 MIPS 数是多少?平均每秒 Cache 缺失的次数是多少?在不考虑 DMA 传送的情况下,主存带宽至少达到多少才能满足 CPU 的访存要求?
2) 假定在 Cache 缺失的情况下访问主存时,存在 0.0005% 的缺页率,则 CPU 平均每秒产生多少次缺页异常?若页面大小为 4KB,每次缺页都需要访问磁盘,访问磁盘时 DMA 传送采用周期挪用方式,磁盘 I/O 接口的数据缓冲寄存器为 32位,则磁盘 I/O 接口平均每秒发出的 DMA 请求次数至少是多少?
3) CPU 和 DMA 控制器同时要求使用存储器总线时,哪个优先级更高?为什么?
4) 为了提高性能,主存采用 4体低位交叉存储模式,工作时每1/4个存储周期启动一个体。若每个体的存储周期为50ns,则该主存能提供的最大带宽是多少?
解:1)平均每秒 CPU 执行的指令数为 80M/4=20M,因此 MIPS 数为 20。平均每条指令访存
1.5次,因此平均每秒 Cache 缺失的次数 = 20M×1.5×(1 - 99%)= 300K。当 Cache 缺失时,CPU访问主存,主存与Cache之间以块为传送单位,此时主存带宽为 16B×300k/1s = 4.8MB/s。在不考虑DMA传送的情况下,主存带宽至少达到 4.8MB/s 才能满足CPU的访存要求。
**2)**题中假定在 Cache 缺失的情况下访问主存,平均每秒产生缺页中断 300K×0.0005% = 1.5次。因为存储器总线宽度为 32 位,所以每传送32位数据,磁盘控制器发出一次 DMA 请求,因此平均每秒磁盘 DMA 请求的次数至少为 1.5 x 4KB / 4B = 1.5K = 1536。
3)CPU 和 DMA 控制器同时要求使用存储器总线时,DMA 请求的优先级更高。因为 DMA 请求得不到及时响应,I/O 传输数据可能会丢失。
4) 4 体交叉存储模式能提供的最大带宽为 4×4B/50ns = 320MB/s。
18、假定计算机的主频为 500MHz,CPI 为 4,现有设备 A 和 B,其数据传输率分别为 2MB/s 和 40MB/s,对应 I/O 接口中各有一个 32位 数据缓冲寄存器。回答下列问题,要求给出计算过程。
1) 若设备 A 采用定时查询 I/O 方式,每次 输入/输出 都至少执行 10 条指令。设备 A 最多间隔多长时间查询一次才能不丢失数据?CPU 用于设备 A 输入/输出的时间占 CPU 总时间的百分比至少是多少?
2) 在中断 I/O 方式下,若每次中断响应和中断处理的总时钟周期数至少为 400,则设备 B 能否采用中断 I/O 方式?为什么?
3) 若设备 B 采用 DMA 方式,每次 DMA 传送的数据块大小为 1000B,CPU 用于 DMA 预处理和后处理的总时钟周期数为 500,则 CPU 用于设备 B 输入/输出的时间占 CPU 总时间的百分比最多是多少?
解:1) 程序定时向缓存端口查询数据,由于缓存端口大小有限,必须在传输完端口大小的数据时访问端口,以防止部分数据未被及时读取而丢失。设备 A 准备 32 位数据所用的时间为 4B/2MB = 2us,所以最多每隔 2us 必须查询一次,每秒的查询次数至少是 1s / 2us = 5×105 ,每秒 CPU 用于设备 A 输入/输出的时间至少为 5×105×10×4 = 2×107 个时钟周期,占整个 CPU 时间的百分比至少是 2×107 / 500M = 4%。
(2) 中断响应和中断处理的时间为 400×(1/500M) = 0.8us,这时只需判断设备 B 准备 32 位数据要多久,若准备数据的时间小于中断响应和中断处理的时间,则数据会被刷新,造成丢失。经计算,设备 B 准备 32 位数据所用的时间为 4B/40MB = 0.1us,因此设备 B 不适合采用中断 I/O方式。
(3) 在 DMA 方式中,只有预处理和后处理需要 CPU 处理,数据的传送过程由 DMA 控制。设备 B 每秒的 DMA 次数最多为 40MB/1000B = 40000,CPU 用于设备 B 输入/输出的时间最多为40000×500=2×107 个时钟周期,占 CPU 总时间的百分比最多为 2×107 / 500M = 4%。
7.4、简答题
01、中断响应优先级和中断处理优先级分别指什么?
中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变;而中断处理优先级可以由中断屏蔽字来改变,反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为“0”,对新中断开放),若是,则中止正在处理的中断,转到新中断去处理,处理完后再回到刚才被中止的中断继续处理。
02、向量中断、中断向量、向量地址三个概念是什么关系?
中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表。
向量地址:中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号。
向量中断:指一种识别中断源的技术或方式。识别中断源的目的是找到中断源对应的中断服务程序的入口地址的地址,即获得向量地址。
03、I/O 设备有哪些编址方式?各有何特点?
统一编址和独立编址。统一编址是在主存地址中划出一定的范围作为 I/O 地址,以便通过访存指令即可实现对 I/O的访问,但主存的容量相应减少。独立编址是指 I/O地址和主存是分开的,I/O地址不占主存空间,但访存需专门的 I/O指令。
04、CPU 响应中断应具备哪些条件?
-
在CPU内部设置的中断屏蔽触发器必须是开放的。
-
外设有中断请求时,中断请求触发器必须处于 “1“ 状态,保持中断请求信号。
-
外设(接口)中断允许触发器必须为“1”,这样才能把外设中断请求送至 CPU。
具各上述三个条件时,CPU 在现行指令结束的最后一个状态周期响应中断。
05、I/O接口的主要功能有哪些?
(1)数据格式的转换 (2)与主机和外设通信 (3)I/O操作的控制与定时
(4)I/O过程中错误与状态检测(反映I/O设备工作状态的功能)
07、DMA 方式和中断方式的区别
-
中断方式是程序的切换,需要保护和恢复现场;而 DMA 方式除了预处理和后处理,其他时候不占用CPU的任何资源。
-
对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期后);而对 DMA 请求的响应可以发生在每个机器周期结束时(在取指周期、间址周期、执行周期后均可),只要 CPU 不占用总线就可被响应。
-
中断传送过程需要 CPU 的干预;而 DMA 传送过程不需要 CPU 的干预,因此数据传输率非常高,适合于高速外设的成组数据传送。
-
DMA 请求的优先级高于中断请求。
-
中断方式具有对异常事件的处理能力,而 DMA 方式仅局限于传送数据块的 I/O操作。
-
从数据传送来看,中断方式靠程序传送,DMA 方式靠硬件传送。
08、1) 一个完整的指令周期包括哪些 CPU 工作周期?
2) 中断周期前和中断周期后各是 CPU 的什么工作周期?
3) DMA 周期前和 DMA 周期后各是 CPU 的什么工作周期?
1) 一个完整的指令周期包括取指周期、间址周期、执行周期和中断周期。其中取指周期和执行周期是每条指令均有的。
2) 中断周期前是执行周期,中断周期后是下一条指令的取指周期。
3) DMA 周期前可以是取指周期、间址周期、执行周期或中断周期,DMA周期后也可以是取指周期、间址周期、执行周期或中断周期。总之,DMA周期前后都是机器周期。