2020年1月8日Coding14156 字约 94 分钟


计算机组成原理与系统结构考纲

题型

选择题(20 分)

填空题(10 分)

判断题(10 分)

简答题(20 分)

名词解释(10 分)

分析计算题(30 分)

第一章 计算机组成原理概论

冯诺伊曼思想

核心:存储程序控制

采用二进制表示数据和指令:指令由操作码和地址码组成。

计算机由五大部件组成,并规定了五大部件的基本功能。

五大部件

  1. 存储器
    功能:存放指令和数据。
    操作:

    • 存储器读操作:从存储器取出数据,又称为读出。
    • 存储器写操作:向存储器存放数据,又称为写入;
      概念:
    • 存储单元:存储二进制信息的部件,每个单元可以存放一个字或字节的信息,存储器就是存储单元的集合。
    • 单元地址:存储单元的编号,是区分存储器中不同存储单元的唯一标志。
  2. 运算器
    功能:在控制器控制下,进行算术运算和逻辑运算。
    运算器的技术性能高低直接影响着计算机的运算速度和整机性能。

  3. 控制器
    功能:对当前指令进行译码分析其所需要完成的操作,产生并发送各部件所需要的控制信号,从而使整个计算机自动、协调地工作。(即:执行程序,控制全机各部件协调运转。)
    控制器是计算机的控制指挥部件,也是整个计算机的控制中心。

  4. 输入设备
    功能:将外界的信息转换为计算机能识别的二进制代码。输入设备是给计算机输入信息的设备。

  5. 输出设备
    功能:将计算机处理结果转换成人们或其他设备所能接收的形式。

计算机层次结构

微程序设计级(第一层):这是计算机的最底层硬件,使用微程序或硬布线来实现机器指令的功能。

机器指令系统级(第二层):它所提供的是那些计算机硬件能读懂的,兵可以直接操控计算机硬件工作的二进制信息,即机器指令。它是软硬件的分界面:硬件设计者一句他来设计硬件,软件设计者是用它来控制计算机硬件工作。

操作系统级(第三层):它由操作系统程序实现,用于管理、统一调度硬件资源、支撑其他系统软件和应用软件,使计算机能够自动运行,发挥高效率的作用。

语言处理程序及其他系统软件级(第四层):语言处理程序功能是将程序员编写的高级语言源程序翻译成机器语言程序。

面向用户应用程序级(第五层):它是针对计算机用户在某一应用领域、某些专门问题而设计开发的应用程序。

image-20191221144843057

性能指标

机器字长

概念:是指 CPU 一次能处理的数据位数,它决定了寄存器、运算部件、数据总线的位数。

作用:影响计算机的性能,指令系统的功能。机器字长越长,数的表示范围也越大,精度也越高,但其相应的硬件成本也越高。指令长度受限于机器字长。

存储容量

概念:存储器能存储的最大二进制信息量,一般以位(bits)或者字节(1Bytes = 8bits)为单位。

组成:

  • 主存储器容量
  • 辅助存储器容量

主存储器:CPU 能通过地址线直接访问的存储器,如 RAM、ROM 等,用于存放 CPU 正在执行或要执行的程序和数据。

辅助存储器:主存储器以外的存储器,如硬盘、U 盘等,用于存放备用的程序和数据。

运算速度

MIPS(Million Instructions Per seconds,每百万条指令每秒)表示。

第三章 信息编码与数据表示

数值转换

十进制(Decimal)、二进制(Binary)、八进制(Octal)、十六进制(Hexdecimal)数分别用 D、B、Q、H 来标志。

常用的几种数制的对应关系

十进制 二进制 八进制 十六进制 十进制 二进制 八进制 十六 进制
0 0000 0 0 8 1000 10 8
1 0001 1 1 9 1001 11 9
2 0010 2 2 10 1010 12 A
3 0011 3 3 11 1011 13 B
4 0100 4 4 12 1100 14 C
5 0101 5 5 13 1101 15 D
6 0110 6 6 14 1110 16 E
7 0111 7 7 15 1111 17 F
16 10000 20 10

二、八、十六进制转换为十进制

转换方法:加权求和。(按式 4-1)
例: (5AC.E6)16= 5\times16^{2}+ 10\times16^{1} +12\times16^{0} +14\times16^{-1}+ 6\times16^{-2} =(1452.8984375)_{10}

例如:
(1011)_{2} → (1011)_B → 1011B → 1011b
(123.45)_2 → ( 123.45 )_D → 123.45D → 123.45
(2B.D)_16 = (2B.D)_H = (43.8125)_10 = (53.64)_Q

十进制转换为二、八、十六进制

转换方法:可以分为以下两种方法
直接转换:十进制 → 二、八、十六进制
间接转换:十进制 → 二进制 → 八、十六进制

十进制转化为 R 进制

转换方法
整数部分:除以 R 取余,先得低位,直到商为 0。
小数部分:乘 R 取整,先得高位,直到积为 0 或者达到精度要求为止。BCD 码(8421 码)

几种常见的 BCD 码

8421 码:
特点:4 位二进制数位的权从高到低依次是 8、4、2、1;8421 码实际上就是十进制数字 0 ~ 9 的二进制编码本身。
是最常用的一种 BCD 码,在没有特别指出的一般情况下,所提到的 BCD 码通常就是指 8421 码。
格雷码:
特点:又叫循环码,它的任何相邻的两个编码(例如 2 和 3、7 和 8、9 和 0 等)之间只有一位二进制位不同。
优点:是用它构成计数器时,在从一个编码变到下一个编码时,只有一个触发器翻转即可,波形更完美、可靠。
格雷码的编码方案有许多种。
余 3 码:对应的 8421 码加上 0011 构成的

十进制数 8421 码 2421 码 5211 码 4311 码 84-2-1 码 格雷码 余 3 码
0 0000 0000 0000 0000 0000 0000 0011
1 0001 0001 0001 0001 0111 0001 0100
2 0010 0010 0011 0011 0110 0011 0101
3 0011 0011 0101 0100 0101 0010 0110
4 0100 0100 0111 1000 0100 0110 0111
5 0101 1011 1000 0111 1011 1110 1000
6 0110 1100 1010 1011 1010 1010 1001
7 0111 1101 1100 1100 1001 1000 1010
8 1000 1110 1110 1110 1000 1100 1011
9 1001 1111 1111 1111 1111 0100 1100

定点数

原码表示法

表示方法

最高位表示数的符号,其他位表示数值位。
符号位:0-正数,1-负数。
数值位:与绝对值相同。

对于定点整数:
X=+X_1X_2 \dots\dots X_n ,则 [X]_原= 0,X_1X_2 \dots\dots X_n
X=- X_1X_2 \dots\dots X_n ,则 [X]_原= 1,X_1X_2 \dots\dots X_n
对于定点小数:
X=+0. X_1X_2 \dots\dots X_n ,则 [X]_原= 0.X_1X_2 \dots\dots X_n
X=- 0.X_1X_2 \dots\dots X_n ,则 [X]_原= 1.X_1X_2 \dots\dots X_n

,. 只用于助记,在计算机中并无专用部件来表示

0 的表示

0 的原码表示有两种形式,即分别按照正数和负数表示。

[+0]_原= 00…0 [-0]_原= 10…0

表示范围

对于 n + 1 位原码机器数 X,它所能表示的数据范围为:
定点整数: -(2^n-1) \leq X \leq 2^n-1
定点小数: (1-2^{-n}) \leq X \leq 1-2^{-n}

补码表示法

表示方法

最高位为符号位,其他位为数值位。
符号位:0-正数,1-负数。
数值位:正数时,与绝对值相同;负数时,为绝对值取反后,末位加 1

对于定点整数:
X=+X_1X_2 \dots\dots X_n ,则 [X]_补= 0,X_1X_2 \dots\dots X_n
X=- X_1X_2 \dots\dots X_n ,则 [X]_补= 1,\overline{X_1X_2 \dots\dots X_n} + 1
对于定点小数:
X=+0. X_1X_2 \dots\dots X_n ,则 [X]_补= 0.X_1X_2 \dots\dots X_n
X=- 0.X_1X_2 \dots\dots X_n ,则 [X]_补= 1.\overline{X_1X_2 \dots\dots X_n} + 0.00\dots\dots1

0 的表示

0 的原码表示有两种形式,即分别按照正数和负数表示。

[+0]_补= 00…0 [-0]_补= 00…0

表示范围

对于 n + 1 位原码机器数 X,它所能表示的数据范围为:
定点整数: -2^n \leq X \leq 2^n-1
定点小数: -1 \leq X \leq 1-2^{-n}

计算机中的整型数据(int)均用补码来表示。包括 1 位符号位,n 位数值位

反码表示法

表示方法

最高位为符号位,其他位为数值位。
符号位:0-正数,1-负数。
数值位:正数时,与绝对值相同;负数时,为绝对值取反

对于定点整数:
X=+X_1X_2 \dots\dots X_n ,则 [X]_反= 0,X_1X_2 \dots\dots X_n
X=- X_1X_2 \dots\dots X_n ,则 [X]_反= 1,\overline{X_1X_2 \dots\dots X_n}
对于定点小数:
X=+0. X_1X_2 \dots\dots X_n ,则 [X]_反= 0.X_1X_2 \dots\dots X_n
X=- 0.X_1X_2 \dots\dots X_n ,则 [X]_反= 1\overline{X_1X_2 \dots\dots X_n}

0 的表示

0 的原码表示有两种形式,即分别按照正数和负数表示。

[+0]_反= 00…0 [-0]_反= 11…1

表示范围

对于 n + 1 位原码机器数 X,它所能表示的数据范围为:
定点整数: -(2^n-1) \leq X \leq 2^n-1
定点小数: -(1-2^{-n}) \leq X \leq 1-2^{-n}

包括 1 位符号位,n 位数值位

移码表示法

表示方法

最高位为符号位,其他位为数值位。
符号位:1-正数,0-负数。
数值位:正数时,与绝对值相同;负数时,为绝对值取反后,末位加 1

对于定点整数:
X=+X_1X_2 \dots\dots X_n ,则 [X]_移= 1,X_1X_2 \dots\dots X_n
X=- X_1X_2 \dots\dots X_n ,则 [X]_移= 0,\overline{X_1X_2 \dots\dots X_n} + 1
对于定点小数:
X=+0. X_1X_2 \dots\dots X_n ,则 [X]_移= 1.X_1X_2 \dots\dots X_n
X=- 0.X_1X_2 \dots\dots X_n ,则 [X]_移= 0.\overline{X_1X_2 \dots\dots X_n} + 0.00 \dots\dots 1

移码表示:即为补码的符号位取反

0 的表示

0 的原码表示有两种形式,即分别按照正数和负数表示。

[+0]_移= 10…0 [-0]_移= 10…0

表示范围

对于 n + 1 位原码机器数 X,它所能表示的数据范围为:
定点整数: -2^n-1 \leq X \leq 2^n-1
定点小数: -1 \leq X \leq 1-2^{-n}

包括 1 位符号位,n 位数值位
移码通常作为浮点数的阶码。

定点机器数转换

机器数转换为真值

四种定点机器数转换为真值的方法要点是:首先根据机器数的符号位确定真值的正负,然后对照机器数的定义和表示,反方向求出真值的绝对值

机器数之间的相互转换

原码、补码、反码和移码之间的相互转换,最简单的方法是先求出它们的真值,然后再转换为另一种表示方法。

浮点数

浮点机器数的格式

浮点机器数用于表示实数,其小数点的位置由其中的阶码规定,因此是浮动的。
浮点数 N 的构成: N = M \times R^E
浮点数的格式:阶码的底是隐含规定的。

在机器中,为了方便浮点数大小的比较,通常将数符放置在浮点数的首位。

尾数 M:为定点小数,尾数的位数决定了浮点数有效数值的精度,尾数的符号代表了浮点数的正负,因此又称为数符。尾数一般采用原码和补码表示。

阶码 E:为定点整数,阶码的数值大小决定了该浮点数实际小数点位置与尾数的小数点位置(隐含)之间的偏移量。阶码的位数多少决定了浮点数的表示范围。阶码的符号叫阶符。阶码一般采用移码和补码表示。

阶码的底 R:一般为 2、8 或 16 ,且隐含规定。

image-20191225230227933

短实数又称为单精度浮点数长实数又称为双精度浮点数临时实数主要用于进行浮点数运算时保存临时的计算结果。

IEEE 754 国际标准

根据 IEEE 754 国际标准,常用的浮点数格式有 3 种,阶码的底隐含为 2。

尾数原码 表示、阶码移码 表示,偏置量为 127 或 1023,阶码至少为 1,所以偏置 127 ,127+1=128 它是规格化浮点数。

隐含最高有效位 1,即这位并不出现在浮点数的代码序列中,因此尾数实际上相当于 24 位。所以相应地尾数的真值等于 1(整数部分)+M(小数部分,23 位)得到真值 (-1)^{Ms} \times (1.M_1M_2M_3…M_{23}) \times 2^{E-127} —— 32 位表示法

image-20191225230616259

例题:将十进制数 20.59375 转换成 IEEE754 的 32 位标准浮点数的二进制格式来存储,并写出其 16 进制数。

解答:首先分别将整数和分数部分转换成二进制数:
20.59375 = 10100.10011
然后移动小数点,使其在第 1、2 位之间
10100.10011 = 1.010010011 \times 2^4
小数点被左移了 4 位,于是得到:e = 4
尾符 M_s=0 ,阶码 E=4+127=131
尾数 M=010010011
最后得到 32 位浮点数的二进制存储格式为:
\underbrace{0}_{符号位} \quad \underbrace{10000011}_{阶码} \quad \underbrace{010 \quad 0100 \quad 1100 \quad 0000 \quad 0000 \quad 0000}_{尾数} = (41A4C000)_{16}

规格化

给真值,求浮点数表示

尾数
  • 原码表示:最高有效位( M_1 )为 1 时,浮点数为规格化,即尾数为 X.1X \cdots
  • 补码表示:符号位( M_s )与最高有效位( M_1 )相异时,浮点数为规格化表示,即尾数为 0.1X \cdots X 或者 1.0X \cdots X

溢出

一道选择题,阶码溢出,取决于阶码上溢

机器数

校验码

​ 奇偶校验码——选择题,数一的个数
​ CRC 校验码——根据多项式,模二除(异或运算)
​ 海明校验码——不考

ASCII 码

第四章 运算方法与运算器

定点数的加减运算

补码加减器实现

补码加减运算方法

补码的加减运算的公式是:
[X+Y]_补 = [X]_补 + [Y]_补
[X-Y]_补 = [X]_补 + [-Y]_补
特点:
使用补码进行加减运算,符号位和数值位一样参加运算。
补码的减法可以用加法来实现,任意两数之差的补码等于被减数的补码与减数相反数的补码之和。

求补运算:[Y]补 → [-Y]补

[-Y]补求补规则:将[Y]补包括符号位在内每一位取反,末位加 1。
[Y]_补 = Y_0,Y_1……Y_n ,则: [-Y]_补 = \overline{Y_0Y_1 \dots Y_n} + 1

[Y]_补 = Y_0.Y_1……Y_n ,则: [-Y]_补 = \overline{Y_0Y_1 \dots Y_n} + 0.0 \dots 1

[X]_补 = 0.1101 则: [-X]_补 = 1.0011

[X]_补 = 1.1101 则: [-X]_补 = 0.0011

溢出判断

进位

单符号位

双符号位(变形补码)

00 为正数。

11 为负数。

01 为正溢出

10 为负溢出。

移位运算——选择题

二进制数据(真值)每相对于小数点左移一位,相当于乘以 2;每相对于小数点右移一位,相当于除以 2。

逻辑移位

无符号数据,对无符号数据的数值放大或缩小。

左移:高位移出,低位补 0

右移:低位移出,高位补 0

算术移位

带符号数据,符号位不变,在数值的绝对值上放大或缩小。

左移:符号位不变,高位移出,低位补 0,左移出的数据位为 1 时,溢出。

右移:符号位不变,低位移出,高位补 0

第五章 存储体系 (15 分~ 20 分)

主存储器(内存)

一般由 RAM 和 ROM 组成。

SRAM 和 DRAM 的不同:

比较内容 SRAM DRAM
存储信息 0 和 1 的方式 双稳态触发器 极间电容上的电荷
电源不掉电时 信息稳定 信息会丢失
刷新 不需要 需要
集成度
容量
价格
速度
适用场合 Cache 主存

DRAM

DRAM 的地址一般分两次接收,因为 DRAM 一般容量较大,为减少地址译码输出线,采用双向译码;并且为节省外引线,减低成本,DRAM 芯片地址线根数减少一半,行列地址分时复用,所以需要分两次接收。

刷新

例: 64K×1 位 DRAM 芯片中,存储电路由 4 个独立的 128×128 的存储矩阵组成。设存储器存储周期为 500ns ,单元刷新间隔是 2ms。

集中式刷新

在 2ms 单元刷新间隔时间内,集中对 128 行刷新一遍,所需时间 128×500ns=64μs ,其余时间则用于访问操作。
在内部刷新时间(64μs)内,不允许访存,这段时间被称为死时间

分散式刷新

在任何一个存储周期内,分为访存和刷新两个子周期。
访存时间内,供 CPU 和其他主设备访问。
在刷新时间内,对 DRAM 的某一行刷新。
存储周期为存储器存储周期的两倍,即 500ns \times 2=1μs