计算机组成与体系结构

时游大约 15 分钟

计算机组成与体系结构

概述
概述
分数分布
分数分布

1. 数据的表示

考点:进制转换、码制(原、反、补、移)、浮点数表示、逻辑运算

1. 进制转换(重要)

进制数码基数位权
十进制(D)0-91010k
二进制(B)0,122k
十进制0-9,A-F1616k
  1. 位权:各数字位数所对应的权值。例如十进制 10,0 对应的位权为 100,1 对应的位权为 101

  2. 字符B表示二进制数字,字符H表示十六进制数字。

  3. 十六进制 A 代表 10,B 代表 11,C 代表 12,D 代表 13,E 代表 14,F 代表 15。

1. 按权展开法

R 进制转为十进制使用按权展开法,具体操作为:将 R 进制的每一位数值用 Rk形式表示,即幂的底数为 R,指数为 k,k 与该位和小数点之间的距离有关。当该位位于小数点左侧时,k 为该位到小数点数码的个数,而当该数位于小数点右侧时,k 为负值,其绝对值时该数和小数点事件数码的个数加 1。

例子 1:10100.01(二进制) = 1x24+1x22+1x2-2 = 20.2520.25

例子 2:604.01(七进制) = 6x72+4x70+1x7-2 = $ 298 + \frac{1}{49}$

2. 短除法(除基取余法)

将十进制转为 R 进制。将十进制数字除以 R,将商和余数分别保存,直到商为 0 为止。最后将余数倒序填写即为 R 进制数。

例子 1: 94 转为二进制:94/2 = 47 余 0,47/2 = 23 余 1,23/2 = 11 余 1,11/2 = 5 余 1,5/2 = 2 余 1,2/2 = 1 余 0,1/2 = 0 余 1。将其倒序填写,因此 94 的二进制为:1011110(B)

例子 2: 94 转位十六进制:94/16 = 5 余 14,5/16 = 0 余 5,0/16 = 0 余 0,将其倒序填写,因此 94 的十六进制为:5E(H)

3. 减法

十进制转二进制,方便快速减法后得出目标进制值。

例子 1: 94 转二进制:94 - 64(26) = 30,30 - 16(24) = 14,14 - 8(23) = 6,6 - 4(22) = 2,2 - 2(21) = 0,最终得出 94 的二进制位 1011110

4. 二进制快速转八进制、十六进制

从右至左,八进制时候,每 3 位一组,十六进制的时候,每 4 位一组,不足时补 0。

2. 码制(原、反、补、移)

  1. 第一位为符号位,0 表示正数,1 表示负数。正数时可以默认不写符号位。
  2. 计算机运算时一般使用补码进行运算。

1. 原码

最高位是符号位,其余低位表示数值的绝对值。例如+7 = 0000 0111,-7=1000 0111。

2. 反码

正数的反码等于补码,负数的反码是其绝对值按位取反。例如+7 = 0000 0111,-7=1111 1000。

3. 补码

正数的补码等于原码,负数的补码在其反码的基础上末位加 1,但不会影响符号位。例如+7 = 0000 0111,-7=1111 1001。

4. 移码

补码的符号位按位取反。例如+7=1000 0111,-7=0111 1001。

5. 码制及其表示的范围

码制定点整数定点小数数码个数
原码(2n11)-(2^{n-1}-1) ~ + (2n11)(2^{n-1}-1)(12(n1))-(1-2^{-(n-1)}) ~ + (12(n1))(1-2^{-(n-1)})2n12^n-1
反码(2n11)-(2^{n-1}-1) ~ + (2n11)(2^{n-1}-1)(12(n1))-(1-2^{-(n-1)}) ~ + (12(n1))(1-2^{-(n-1)})2n12^n-1
补码(2n1)-(2^{n-1}) ~ + (2n11)(2^{n-1}-1)(1)-(1) ~ + (12(n1))(1-2^{-(n-1)})2n2^n
移码(2n1)-(2^{n-1}) ~ + (2n11)(2^{n-1}-1)(1)-(1) ~ + (12(n1))(1-2^{-(n-1)})2n2^n
  1. n 进制时, 数值部分只占 n-1 位,第一位为符号位。
  2. 反码跟原码一致。
  3. 补码负数时会人为加 1,正数不变。

例题 1:如果“2X”的补码是“90H”,则 X 的值为多少?

  1. 90H 转位 2 进制:1001 0000(补码,且为负数)
  2. 转位反码:1000 1111(反码,且为负数)
  3. 转为原码:1111 0000(二进制原码)
  4. 转位十进制:(26+25+24)=112-(2^6+2^5+2^4) = -112
  5. 2X = -112,所以 X = -56

3. 浮点数表示

  1. 浮点数表示(类似于科学计数法):N=尾数指数(阶码)N=尾数*基数^{指数(阶码)}

例如:1.251061.25 * 10^6,小数点前最多只保留一位,其中 1.25 为尾数,6 为阶码,10 为基数

1000 + 119 使用浮点数运算:

  1. 1000 科学计数法:1.0 x 103
  2. 119 科学计数法:0.119 x 103
  3. 尾数相加 1.0 + 0.119 = 1.119
  4. 结果格式化(确保小数点左边第一位不能为 0 且不能为一位以上的数字):1.119 x 103

例题:设 16 位浮点数,其中阶符 1 位、阶码值 6 位、数符 1 位、尾数 8 位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是?难度(*)

  1. 阶码为移码,切 6 位,则范围为264 263-2^{64} ~ 2^{63}

2. 校验码

校验码基础知识

  1. 校验码的功能:在原有数据上,添加一些冗余数据来校验这些数据的准确性和正确性。

  2. 码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。

1. 奇偶校验码(可检错,不可纠错)

由若干个有效信息,再加上一个二进制位(校验位)组成校验码。

  1. 奇校验:整个校验码(有效信息位+校验码)中 1 的个数为奇数。
  2. 偶校验:整个校验码(有效信息位+校验码)中 1 的个数为偶数。

2. CRC 循环冗余校验码(可检错,不可纠错)

需掌握 CRC 循环冗余校验特点即可。

  1. 在 k 位信息码之后拼接 r 位校验码。r 位校验码由生成多项式 P(x)计算得到。G(X)位发送接收方定义好的多项式。
  2. 将接收到的 CRC 码用约定好的多项式 G(X)去除(模二除法),如果正确,则余数为 0,否则不为 0。不同位数出错其余数不同,余数和出错序号之间有唯一的对应关系。

3. 海明校验码(重点:可检错,可纠错)

在有效信息位中加入几个校验位形成海明码,使码距比较均匀地拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还可以指出错误的位置,为自动纠错提供依据。

  1. 海明校验位的求取公式:2r>=m+r+12^r>=m+r+1,m 为信息位的个数,r 为校验位的个数。例如 16 位信息位时,r>=5r>=5

  2. 海明码明确规定校验位的位置是位于整个信息编码中的2n2^n位置,例如20=121=222=42^0 = 1、2^1 = 2、2^2 = 4位

例题:求信息 1011 的海明码。

海明码计算
海明码计算

3. CPU 组成(运算器与控制器)

  1. 计算机结构

    1. 外设
      1. 输入设备
      2. 输出设备
      3. 辅助存储设备(外存:硬盘)
    2. 主机
      1. 主存储器(内存)
      2. CPU(中央处理单元)
        1. 运算器
        2. 控制器 结构
  2. CPU 组成

    1. 运算器(数据加工)
      1. 算术逻辑单元 ALU:数据的算数运算和逻辑运算
      2. 累加寄存器 AC:通用寄存器,为 ALU 提供一个工作区,用在暂存数据
      3. 数据缓冲寄存器 DR:写内存时,暂存指令或数据
      4. 状态条件寄存器(分类存在争议,即可归咎于运算器也可归咎于控制器):存状态标志与控制标志
    2. 控制器(控制数据加工流程)
      1. 程序计数器 PC:存储下一条要执行的指令的地址
      2. 指令寄存器 IR:存储即将执行的指令
      3. 指令译码器 ID:对指令中的操作码字段进行分析解释
      4. 时序部件:提供时序控制信号

4. 寻址方式

指令的概念:一条指令就是机器语言的一个语句,是一组有意义的二进制代码,指令的基本格式如下:操作码(OP)字段+地址码字段

  1. 立即寻址方式

特点:操作数直接在指令中、速度快、灵活性差

  1. 直接寻址方式

特点:指令中存放的是操作数的地址

  1. 间接寻址方式

特点:指令中存放了一个地址,这个地址对应的内容是操作数的地址

  1. 寄存器寻址方式

寄存器存放操作数

  1. 寄存器间接寻址方式

寄存器中放的是操作数的地址

Alt text
Alt text

5. CISC 与 RISC

指令系统类型指令寻址方式实现方式其他
CISC(复杂)数量多,使用频率差异大,可变长格式支持多种微程序控制技术研制周期长
RISC(精简)数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有 Load/Store 操作内存支持多种微程序控制技术优化编译,有效支持高级语言

CISC与RISC比较,分为指令数量、指令使用频率、寻址方式、寄存器、流水线支持、高级语言支持等几个维度。

  1. CISC复杂,指令数量多、指令使用频率差异大、多种寻址方式。
  2. RISC精简,指令数量少、指令使用频率差异不大、少寻址、操作寄存器、单周期、适合流水线

6. 流水线技术(重点)

流水线相关计算:流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多种指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。

时空图
时空图
  1. 流水线计算

    1. 流水线周期为执行时间最长的一段
    2. 流水线计算公式为:1条指令执行时间 + (指令条数 - 1) * 流水线周期
      1. 理论公式(默认使用)t1+t2+...+tk+(n1)tt_1+t_2+...+t_k + (n-1)*t
      2. 实践公式:kt+(n1)tk * t + (n-1)*t,t代表流水线周期,n代表指令条数,k为划分段数

例题:一条指令的执行过程可以分解为取指、分析、执行三步,取指时间为3,分析时间为2,执行时间为4多情况下,执行10条指令采用串行方式需要多长时间?采用并行方式需要多长时间?

  1. 串行:(3+2+4)10=90(3 + 2 + 4) * 10 = 90
  2. 并行:
    1. 理论时间:9+(101)4=459 + (10 - 1) * 4 = 45
    2. 实际时间:34+94=483 * 4 + 9 * 4= 48
流水线计算
流水线计算
  1. 流水线吞吐率计算

    1. 流水线的吞吐率是指在单位时间内流水线所完成的任务数量或输出的结果数量。公式如下:TP=指令条数流水线执行时间TP = \frac{指令条数}{流水线执行时间}
    2. 流水线最大吞吐率:TPmax=limnn(k+n1)t=1tTP_{max} = \lim\limits_{n \to \infty} \frac{n}{(k + n - 1)t} = \frac{1}{t}

    结论:流水线最大吞吐率 = 1流水线周期\frac{1}{流水线周期}

例题:一条指令的执行过程可以分解为取指、分析、执行三步,取指时间为3,分析时间为2,执行时间为4多情况下,执行10条指令其吞吐率为多少,最大吞吐率为多少?

  1. 吞吐率=1045Δt吞吐率 = \frac{10}{45\Delta t}
  2. 最大吞吐率=14=14最大吞吐率 = \frac{1}{4} = \frac{1}{4}

7. 存储系统(重点)

考点:层次化存储体系、Cache、主存编址计算

1. 层次化存储结构

  1. 外存(辅存):硬盘、光盘、U盘等
  2. 内存(主存):随机存储器RAM、只读存储器ROM
  3. CPU:寄存器(读取速度最快,成本最高,容量最小)
  4. Cache:按内容存取
Alt text
Alt text

局部性原理是层次化存储结构的支撑。可分为两种局部性:

  1. 时间局部性:刚被访问的内容,立即又被访问。
  2. 空间局部性:刚被访问的内容,临近的空间很快被访问。

Cache+内存+外存被叫做三级存储体系。

2. Cache

  1. 在计算机的存储体制内中,Cache是访问速度最快的层次,仅次于寄存器。
  2. 使用Cache改善系统s改善系统性能的依据是程序的局部性原理。

如果以hh代表对Cache的访问命中率,t1t_1表示Cache的周期时间,t2t_2表示主存储器周期时间,以读操作为例,使用“Cache+主存储器”的系统的平均周期为t3t_3,则:则:t3=ht1+(1h)t2t_3 = h * t_1 + (1-h) * t_2,其中(1-h)又称为失效率(未命中率)。

直接相联映射:硬件电路较简单,但冲突率很高。

全相联映射:电路难于设计与实现,只适用于小容量的cache,冲突率较低。

组相联映射:直接相联与全相联的折中。

主存与Cache之间的地址映射由硬件直接完成。

3. 主存编址计算

编制计算
编制计算
  1. 存储单元个数:最大地址 - 最小地址 + 1
  2. 编址内容:
    1. 按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字。
    2. 按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节。
  3. 总容量 = 存储单元个数 * 编制内容

根据存储器所要求的容量和选用的存储芯片容量,可以计算需要的芯片总数,即:总片数 = 总容量 / 每片容量

例题:内容按字节编址,地址从A0000H到CFFFFH,共有多少个字节,若使用存储容量为64K * 8bit到存储器芯片构成该内存空间,至少需要多少片?

  1. 计算存储单元个数:CFFFFFH + 1 - A0000H = D0000H - A0000H = 30000H
  2. 计算总容量:31648bit=3164210KB=326KB=192KB3 * 16^4 * 8bit = \frac{3 * 16^4}{2^{10}}KB = 3 * 2^6KB = 192KB

注意:1B = 8bit

  1. 所需芯片:326KB64K8bit=3\frac{3 * 2^6KB}{64K * 8bit} = 3片

8. 输入输出技术

CPU控制主存与外设之间数据交互的过程。

  1. 数据传输控制方式
    1. 程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但I/O能力不高,影响CPU的利用率。
    2. 程序中断方式:中断方式因为CPU无需等待而提高了请求的响应速度。
    3. DMA方式:DMA方式是为了在主存与外设之间实现高效、批量数据交互设置的。DMA方式比程序控制方式和程序中断方式都高效。
    4. 通道方式
    5. I/O处理机

DMAC向总线裁决逻辑提出总线请求;CPU执行完当前总线周期即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输。

  1. 中断处理过程
    1. CPU无需等待也不必查询I/O状态。
    2. 当I/O设备装备好后,发出中断请求信号给CPU。
    3. CPU接收到中断请求后,保存正在执行程序的现场,即打断点。
    4. (通过中断向量表)转入I/O的服务程序的执行,完成I/O系统的数据交换。
    5. 返回被打断的程序继续执行。

9. 总线系统

分时双工:一条总线同一时刻仅允许一个设备发送,但允许多个设备接收。

  1. 总线的分类:
    1. 数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
    2. 地址总线(Address Bus):用来指定在RAM中存储的数据的地址。
    3. 控制总线(Control Bus):将微处理器控制单元的信号,传送到周边设备。

例题:以下关于总线的叙述中,不正确的是(C)

  1. 并行总线适合近距离高速数据传输。(成本高,数据可靠性高)
  2. 串行总线适合长距离数据传输。(成本低,数据可靠性低)
  3. 单总线结构在一个总线上适应不同种类的设备,设计简单且性能高。(性能不高)
  4. 专用总线在设计上可以与连接设备实现最佳匹配。

10. 可靠性

  1. 可靠性指标

    1. 平均无故障时间MTTF=1λλ为失效率MTTF = \frac{1}{\lambda},\lambda为失效率
    2. 平均故障修复时间MTTR=1μμ为修复率MTTR = \frac{1}{\mu},\mu为修复率
    3. 平均故障间隔时间MTBF=1MTTF+MTTRMTBF = \frac{1}{MTTF + MTTR}
    4. 系统可用性=MTTFMTTR+MTTF100\frac{MTTF}{MTTR+MTTF} * 100% Alt text
  2. 串联系统与并联系统

串并联系统
串并联系统
例题
例题

11. 性能指标

时钟周期 = 1主频\frac{1}{主频}

性能指标
性能指标

例题1:软件质量属性中,吞吐量是指软件每分钟可以处理多少个请求。

例题2
例题2

平均CPI为加权平均数

上次编辑于:
贡献者: 15327360835chenlulu,15327360835
Loading...