2024-08-23
软件设计师
0
请注意,本文编写于 297 天前,最后修改于 296 天前,其中某些信息可能已经过时。

目录

数据的表示
进制转换
编码
浮点数运算
计算机结构
Flynn分类法
CISC与RISC
流水线技术
概念
计算
吞吐率计算
加速比计算
效率计算
存储系统
层次化存储结构
Cache
局部性原理
主存
分类
编址
磁盘结构与参数
总线系统
可靠性
校验码
基本概念
循环校验码CRC
海明校验码

数据的表示

进制转换

R进制转十进制使用按权展开法,每一位数都是 RkR^k

二进制10100.01=124+122+122二进制 10100.01 = 1 * 2^4 + 1 * 2^2 + 1 * 2^{-2}

十进制转R进制使用短除法,将R作为除数,记录余数,逆序拼接

每三个二进制位对应一个八进制位,每四个二进制位对应一个十六进制位

编码

数值1数值-11-1(1加负1)
原码0000 00011000 00011000 0010
反码0000 00011111 11101111 1111
补码0000 00011111 11110000 0000
移码1000 00010111 11111000 0000

正数的原码、反码、补码相等

负数的反码:符号位不变,其他位按位取反

负数的补码:反码+1

移码:对补码首位取反

表示范围:

整数
原码(2n11)-(2^{n-1}-1) ~ 2n112^{n-1}-1
反码(2n11)-(2^{n-1}-1) ~ 2n112^{n-1}-1
补码2n1-2^{n-1}~ 2n112^{n-1}-1

原码和反码中+0与-0的表示不同,补码中相同,所以比原码和反码的范围少1

浮点数运算

浮点数表示:N=MReN = M * R ^ e,M:尾数,e:指数,R:基数

对阶→尾数计算→结果格式化

计算机结构

image.png

状态条件寄存器:存储运算过程中相关的标志位

Flynn分类法

分类依据:指令流和数据流

体系结构类型结构关键特性代表
单指令流单数据流
SISD
控制部分:一个
处理器:一个
主存模块:一个
单处理器系统
单指令流多数据流
SIMD
控制部分:一个
处理器:多个
主存模块:多个
各处理器以异步的形式执行同一条指令并行处理机
阵列处理机(数组类型)
超级向量处理机
多指令流单数据流
MISD
控制部分:多个
处理器:一个
主存模块:多个
被证明不可能,至少是不实际目前没有,有文献称流水线计算机为此类
多指令流多数据流
MIMD
控制部分:多个
处理器:多个
主存模块:多个
能够实现作业、任务、指令等各级全面并行多处理机系统
多计算机

CISC与RISC

指令系统类型指令寻址方式实现方式其它
CISC(复杂)数量多,使用频率差别大,可变长格式支持多种微程序控制技术(微码)研制周期长
RISC(精简)数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存支持方式少增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线优化编译,有效支持高级语言

流水线技术

几乎每次考试都会考到

概念

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

取指→分析→执行

image.png

计算

流水线周期为执行时间最长的一段

流水线计算公式:1条指令执行时间 + (指令条数 - 1) * 流水线周期*

  1. 理论公式:(t1+t2+...+tk)+(n1)Δt(t1 + t2 + ... + tk) + (n - 1) * {\Delta}t
  2. 实践公式:(k+n1)Δt(k + n - 1) * \Delta t
  3. 考试时首先用到理论公式,若无理论公式答案再用实践公式

吞吐率计算

在单位时间内流水线处理的任务数量或输出的结果数量

基本公式:TP=指令条数流水线执行时间TP = \frac{指令条数}{流水线执行时间}

流水线最大吞吐率:TPmax=limnn(k+n1)Δt=1ΔtTP_{max} = \lim_{n \to \infty} \frac{n}{(k+n-1)\Delta{t}} = \frac{1}{\Delta{t}}

加速比计算

完成同一批任务,不使用流水线的时间与使用流水线的时间的比值

效率计算

流水线的设备利用率。在时空图上,流水线的效率定义为n个任务占用的时空区与k个流水段总的时空区之比

公式:E=n个任务占用的时空区k个流水段的总的时空区=T0kTkE = \frac{n个任务占用的时空区}{k个流水段的总的时空区} = \frac{T_0}{kT_k}

例1

image.png

  • 流水线周期为2ns
  • 流水线执行时间使用理论公式计算为(2ns+2ns+1ns)+99×2ns=203ns(2ns + 2ns + 1ns) + 99 \times 2ns = 203ns
  • 流水线执行时间使用实践公式计算为(3+1001)×2ns=204ns(3 + 100 - 1) \times 2ns = 204ns
  • 流水线吞吐率TP=100203TP = \frac{100}{203}
  • 最大吞吐率TPmax=12TP_{max} = \frac{1}{2}
  • 加速比(2+2+1)×100203=500203\frac{(2 + 2 + 1) \times 100}{203} = \frac{500}{203}

例2

image.png

  • 流水线效率E=(Δt+Δt+Δt+3Δt)×44×15ΔtE = \frac{(\Delta t + \Delta t + \Delta t + 3\Delta t) \times 4}{4 \times 15\Delta t}

存储系统

层次化存储结构

image.png

寄存器容量极小,速度极快

Cache是高速缓存,按内容存取,不是必需的,K字节和M字节

从上到下,速度减慢,容量增加

Cache

  • 提高CPU数据输入输出的速率,突破冯·诺依曼瓶颈(即CPU与存储系统间数据传送带宽限制)
  • 在计算机的存储系统体系中,Cache是访问速度最快的层次(有寄存器可选时选寄存器,没有寄存器选cache)
  • 使用Cache改善系统性能的依据;程序的局部性原理

t1t_1:Cache的周期时间(1ns),t2t_2:主存储器周期时间(1ms),t3t_3:以读操作为例使用“Cache+主存储器”的系统的平均周期,hh:访问命中率(95%),1-h:失效率(未命中率)

t3=h×t1+(1h)×t2t3=95%×1ns+(195%)×1000ns=50.95nst_3 = h \times t_1 + (1 - h) \times t_2 \\ t_3 = 95 \% \times 1ns + (1 - 95\%) \times 1000ns = 50.95ns

局部性原理

  • 时间局部性:顺序执行的代码,分成不同的块,放入cache中,特别是for循环比较明显,将其运行的代码放入cache中,每次循环从cache调用即可
  • 空间局部性:数组较为明显,当程序首先访问某空间,立即访问邻近的空间
  • 工作集理论:工作集是进程运行时被频繁访问的页面集合

主存

分类

image.png

编址

把芯片组成相应的存储器

image.png

image.png

地址单元:C7FFFH+1AC000H=C8000HAC000H=1C000H=1C000210K=112KC7FFFH + 1 - AC000H = C8000H - AC000H = 1C000H = \frac{1C000}{2^{10}} K = 112K

每个存储单元存储几位:112K×16bit28×16K×xbit=1\frac{112K \times 16bit}{28 \times 16K \times xbit} = 1,得出x=4x = 4

磁盘结构与参数

image.png

存取时间 = 寻道时间 + 等待时间(平均定位时间 + 转动延迟)

寻道时间是磁头移动到磁道所需的时间,等待时间为等待读写的扇区转到磁头下方所用的时间

image-20240824231613563.png

磁盘旋转周期为33ms,则平均每一个扇区的旋转时间为3ms,即读取时间为3ms

单缓冲区意味着一次只能处理一个记录,当R0R_0被读取并处理时,磁盘继续转动,要想继续处理R1R_1,需要等待磁盘继续旋转至磁头在R1R_1

所以最长处理时间为(33ms+3ms)×10+6ms=366ms(33ms + 3ms) \times 10 + 6ms = 366ms

对于最少处理时间,最优分布情况为,我们希望在R0R_0处理完毕后,磁头恰好处于R1R_1的位置,以此类推,最少处理时间为6ms×11=66ms6ms \times 11 = 66ms,如下图所示

image-20240824232412060.png

总线系统

根据总线所处的位置不同通常分为三种类型:

  • 内部总线:微机内部各个外围芯片与处理器之间的总线
  • 系统总线:CPU、主存、I/O设备各大部件之间的信息传输线
    • 数据总线
    • 地址总线
    • 控制总线
  • 外部总线:微机和外部的总线

可靠性

串联系统与并联系统

image.png

image.png

n模冗余模型

image.png

image.png

R×(1(1R)3)×(1(1R)2)R \times (1 - (1 - R)^3) \times (1 - (1 - R)^2)

校验码

基本概念

检错和纠错的方法就是提高码距

码距:整个编码系统中任意(所有)两个码字的最小距离

  • 在一个码组内为了检测e个误码,要求最小码距d应该满足:d>=e+1
  • 在一个码组内为了纠正t个误码,要求最小码距d应该满足:d>=2t+1

若用1位长度的二进制编码,若A=1,B=0,这样A、B之间的最小码距为1

若用2位长度的二进制编码,若A=11,B=00,这样A、B之间的最小码距为1

若用3位长度的二进制编码,可选用111,000作为合法编码,A、B之间的最小码距为3

循环校验码CRC

考试中所认可的标准:可以做检错,不能做纠错

用到模2除法:做除法运算的过程中不计其进位的除法

image.png

原始报文为11001010101,其生成多项式为:x4+x3+x+1x^4+x^3+x+1,对其进行CRC编码:

  • 生成多项式,对应二进制的位数为0还是1,本例中为11011
  • 编码时,要对原始报文用0进行末尾补位,补位长度为生成多项式长度-1
  • 最后进行模2除法,得到余数后,替换补位
  • image.png
  • 收到编码信息后,将编码与生成多项式进行模2除法,得到的余数应该是0

海明校验码

难点,考查频度高

了解海明码编码基本规则,知道如何编码,计算多少位信息位需要多少个校验位

要求校验位的位置应为2n

例,要放1个信息位,则长度应为3位,因为前两位都是校验码

假设校验码有r位,信息位有x位,则 2r>=x+r+12^r >= x + r + 1

image.png

海明校验码可以检错,也可以纠错,若校验位不同,则可以根据出错的校验位定位到出错的信息位

本文作者:Morales

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 License 许可协议。转载请注明出处!