• 软件设计师考试重点1 计算机组成与体系结构


    一、 数据的表示

    1. 进制转换

    • R进制转十进制使用按权展开法。
    • 十进制转R进制使用短除法。

    2. 原码/反码/补码/移码

    • 正数的原码、反码、补码是相同的。
    • 负数:
      – 原码:原始数据;
      – 反码:原码除符号位求反;
      – 补码:在反码基础上加1;
      – 移码:在补码的基础上,符号位取反。

    3. 数值表示范围

    码制定点整数定点小数
    原码 − ( 2 n − 1 − 1 ) -(2^{n-1}-1) (2n11) + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n11) − ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)}) (12(n1)) + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(12(n1))
    反码 − ( 2 n − 1 − 1 ) -(2^{n-1}-1) (2n11) + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n11) − ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)}) (12(n1)) + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(12(n1))
    补码 − ( 2 n − 1 ) -(2^{n-1}) (2n1) + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n11) − 1 -1 1 + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(12(n1))
    移码 − ( 2 n − 1 ) -(2^{n-1}) (2n1) + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n11) − 1 -1 1 + ( 1 − 2 − ( n − 1 ) +(1-2^{-(n-1}) +(12(n1)

    4. 浮点数的运算

    浮点数表示: N = 尾 数 ∗ 基 数 指 数 N = 尾数* 基数^{指数} N=
    浮点数的运算顺序:

    1. 对阶
    2. 尾数计算
    3. 结果格式化

    运算要点:

    • 一般尾数用补码,阶码用移码
    • 阶码的位数决定数的表示范围,尾数位数决定数的有效精度
    • 对阶时,小数向大数看齐
    • 对阶是通过较小数的尾数右移实现的

    二、运算器与控制器

    1. 计算机结构

    在这里插入图片描述

    2. 计算机五大组成部分:

    • 运算器
    • 控制器
    • 存储器:分主存(内存储器)、辅助存储器
    • 输入设备
    • 输出设备

    3. CPU组成部分:

    • 运算器
    • 控制器
    • 寄存器组

    4. 控制器组成部分:

    • 程序计数器 PC:存储下一条要执行指令的地址
    • 指令寄存器 IR
    • 地址寄存器 PR 记录CPU当前访问的地址
    • 指令译码器
    • 时序部件:时钟

    5. 运算器组成部分:

    • 算术逻辑单元ALU:数据计算和逻辑运算
    • 累加寄存器 AC:为ALU提供一个工作区,用暂存数据
    • 数据缓冲寄存器 DR:写内存时,暂存指令和数据
    • 状态条件寄存器PSW(这个比较特殊,历年考试它算在运算器还是控制器不一定):存状态标志和控制标志。

    6. Flynn分类法

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

    7. 指令的基本概念

    一条指令是机器语言的一个语句,是一组有意义的二进制代码,基本结构:
    操作码字段-地址码字段

    • 操作码:指出要作什么操作,如加、移位、存取数。
    • 地址码: 需要包含各操作数的地址及操作结果的存放地址等,从其地址结构的角度可以分为三地址指令、二地址指令、一地址指令和零地址指令。

    8. 寻址方式

    • 立即寻址方式:操作数直接在指令中
    • 直接寻址方式:指令中存放操作数的地址
    • 间接寻址方式:指令中放了地址,地址放的是操作数的地址
    • 寄存器寻址方式:寄存器存放操作数
    • 寄存器间接寻址方式:寄存器内存放的是操作数的地址

    9. CISC与RISC

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

    —以下非考试重点—

    常见的CISC指令集:x86指令集

    x86的指令集可分为以下4种:

    • 通用指令
    • x87 FPU指令,浮点数运算的指令
    • SIMD指令,就是SSE指令
    • 系统指令,写OS内核时使用的特殊指令

    一些指令示例:

    指令操作说明
    MOV将源操作数传送到目标操作数
    ADD将源操作数与目标操作数相加 最后结果给到目标操作数
    SUB将源操作数与目标操作数相减 最后结果给到目标操作数
    AND将源操作数与目标操作数进行与运算 最后结果给到目标操作数
    OR将源操作数与目标操作数进行或运算 最后结果给到目标操作数
    XOR将源操作数与目标操作数进行异或运算 最后结果给到目标操作数
    NOT将源操作数与目标操作数进行异非运算 最后结果给到目标操作数
    MOVS数据传送 与MOV不同处在于它可以将内存的数据传送到内存
    STOS将 AL AX EAX 的值存到EDI指定的内存地址
    REP循环
    PUSH押入 通用寄存器 内存地址 立即数
    POP释放。通用寄存器 内存地址
    JMP修改EIP(存放下一条指令的地址)
    CALL修改EIP
    RETCALL的返回

    常见的RISC指令集: ARM指令集

    ARM指令集可以分为六大类:

    1. 跳转指令
    2. 数据处理指令
    3. 程序状态寄存器(PSR)处理指令
    4. 加载/存储指令
    5. 协处理器指令
    6. 异常产生指令
    指令说明
    ADC带进位的32位数加法
    ADD32位数相加
    AND32位数的逻辑与
    B在32M空间内的相对跳转指令
    BEQ相等则跳转(Branch if EQual)
    BNE不相等则跳转(Branch if Not Equal)
    BGE大于或等于跳转(Branch if Greater than or Equa)
    BGT大于跳转(Branch if Greater Than)
    BIC32位数的逻辑位清零
    BKPT断点指令
    BL带链接的相对跳转指令
    BLE小于或等于跳转(Branch if Less than or Equal)
    BLEQ带链接等于跳转(Branch with Link if EQual)
    BLLT带链接小于跳转(Branch with Link if Less Than)
    BLT小于跳转(Branch if Less Than)
    BLX带链接的切换跳转
    BX切换跳转
    CDP CDP2协处理器数据处理操作
    CLZ零计数
    CMN比较两个数的相反数
    CMP32位数比较
    EOR32位逻辑异或
    LDC LDC2从协处理器取一个或多个32位值
    LDM从内存送多个32位字到ARM寄存器
    LDR从虚拟地址取一个单个的32位值
    MCR MCR2 MCRR从寄存器送数据到协处理器
    MLA32位乘累加
    MOV传送一个32位数到寄存器
    MRC MRC2 MRRC从协处理器传送数据到寄存器
    MRS把状态寄存器的值送到通用寄存器
    MSR把通用寄存器的值传送到状态寄存器
    MUL32位乘
    MVN把一个32位数的逻辑“非”送到寄存器
    ORR32位逻辑或
    PLD预装载提示指令
    QADD有符号32位饱和加
    QDADD有符号双32位饱和加
    QSUB有符号32位饱和减
    QDSUB有符号双32位饱和减
    RSB逆向32位减法
    RSC带进位的逆向32法减法
    SBC带进位的32位减法
    SMLAxy有符号乘累加(16位*16位)+32位=32位
    SMLAL64位有符号乘累加((32位*32位)+64位=64位)
    SMALxy64位有符号乘累加((32位*32位)+64位=64位)
    SMLAWy号乘累加((32位*16位)>>16位)+32位=32位
    SMULL64位有符号乘累加(32位*32位)=64位
    SMULxy有符号乘(16位*16位=32位)
    SMULWy有符号乘(32位*16位>>16位=32位)
    STC STC2从协处理器中把一个或多个32位值存到内存
    STM把多个32位的寄存器值存放到内存
    STR把寄存器的值存到一个内存的虚地址内间
    SUB32位减法
    SWI软中断
    SWP把一个字或者一个字节和一个寄存器值交换
    TEQ等值测试
    TST位测试
    UMLAL64位无符号乘累加((32位*32位)+64位=64位)
    UMULL64位无符号乘累加(32位*32位)=64位

    国产的RISC指令集: 龙芯 指令集

    手册虽然可以免费下载,但手册里有一条:
    在这里插入图片描述

    不能公开散发,我~~~~~

    截个图意思一下:
    在这里插入图片描述

    新兴的RISC指令集:RISC-V

    指令示例:

    指令描述例子
    add加法
    sub减法
    and逻辑加法
    or逻辑或
    xor逻辑异或

    —以上非考试重点—

    五、流水线技术

    1. 流水线概念

    流水线是指程序执行多条指令重叠进行操作的一种准并行处理实现技术。

    使用流水线执行指令:
    在这里插入图片描述

    2. 流水线计算

    • 流水线周期为执行时间最长的一段
    • 流水线计算公式:1条指令执行时间+(指令条数-1)*流水线周期
      • 理论公式: ( t 1 + t 2 + . . . . t k ) + ( n − 1 ) ∗ Δ t (t_1+t_2+....t_k)+(n-1)*\Delta t (t1+t2+....tk)+(n1)Δt
      • 实践公式: k ∗ Δ t + ( n − 1 ) ∗ Δ t k*\Delta t +(n-1)* \Delta t kΔt+(n1)Δt

    3. 超标量流水线

    在标准状态下,一个处理器含一条指令流水线,超标量就是一个处理器中有多条指令流水线,单位是度。

    4. 流水线吞吐率计算

    流水线的吞吐率是指在单位时间内流水线所完成的任务数量或输出的结果数量,基本公式:
    T P = 指 令 条 数 流 水 线 执 行 时 间 TP=\frac{指令条数} {流水线执行时间} TP=线
    流水线最大吞吐率:
    T P m a x = lim ⁡ n → ∞ n ( k + n − 1 ) ∗ Δ t = 1 Δ t TP_{max} = \lim_{n \to \infty} \frac{n}{(k+n-1)*\Delta t} = \frac{1}{\Delta t} TPmax=nlim(k+n1)Δtn=Δt1

    六、存储系统

    1. Cache

    局部性原理与命中率

    • 在计算机的存储体系中,是访问速度最快的层次(若有寄存器,则寄存器最快)。
    • 使用Cache 改善系统性能的依据是程序的局部性原理。
    • 如果以 h 代表对Cache的访问命中率, t 1 t_1 t1表示Cache的周期时间, t 2 t_2 t2表示主存储器周期时间,以读操作为例,使用“Cahce+主存储器”的系统的平均周期为 t 3 t_3 t3,则:
      t 3 = h × t 1 + ( 1 − h ) × t 2 t_3=h \times t_1 + (1-h) \times t_2 t3=h×t1+(1h)×t2
      其中,(1-h)又称为失效率(未命中率)。

    映像

    地址映像是将主存与Cache的存储空间分为若干个大小相同的页(或称为块)。

    映像冲突率
    直接相联映像硬件电路简单,但冲突率最高
    全相联映像电路难于设计和实现,只适用于小容量的Cache,冲突率较低
    组相联映像直接相联与全相联的折中

    示例:1G的内存,分为2048页,每页512K;Cache容量8MB,每页也是512K,划分为16页。

    直接映像:
    直接映像是指在进行映像的工作时,规定各区中的某一信息块只能映像到Cache中的一个固定的信息块中,即主存中的第0块映像到cache的第0个块框架,第1块映像到cache的第1块,以此类推的映像方式。——百度百科
    全相联映像:
    两个不同存储器的地址空间之间的一种映射关系,一个存储器中的任意一块(页)可以映像到另外一个存储器中的任意一块(页)中。——《计算机科学技术名词 》第三版
    组相联映像:
    组相联映像方式的地址映像规则是主存储器中某一块只能存入缓存的同组号的任一块中,先分区、再分组,每个组内用全相联映像。

    2. 主存-编址与计算

    存储单元
    按字编址:存储体的存储单元是字存储单元
    按字节编址:存储体的存储单元是字节存储单元。

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

    七、总线系统

    计算机硬件之间通讯的桥梁,一条总线同一时刻只允许一个设备发送,但允许多个设备接收。

    总线的分类:

    • 数据总线
    • 地址总线
    • 控制总线

    八、可靠性

    串联系统、并联系统的可靠性

    串联系统

    R = R 1 × R 2 × . . . × R n R=R_1 \times R_2 \times ... \times R_n R=R1×R2×...×Rn

    并联系统

    R = 1 − ( 1 − R 1 ) × ( 1 − R 2 ) × . . . × ( 1 − R n ) R=1-(1-R_1) \times (1-R_2) \times ... \times (1-R_n) R=1(1R1)×(1R2)×...×(1Rn)

    复合系统

    ……

    九:校验码

    1. 基础知识

    码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。
    例:用4位二进制表示16种状态,则有16个不同的码字,此时码距为1,如:00000001

    2. 奇偶校验

    奇偶校验只能检查1位的错误,不可纠错。

    3. 循环冗余校验码

    CRC的编码方法:在k位信息码之后拼接r位校验码。

    4. 海明码

    海明码可以用来检错、也可以用来纠错。
    确定校验码的位数x:

    设数据有n位,校验码有x位。则校验码一共有 2 x 2^x 2x种取值方式。其中需要一种取值方式表示数据正确,剩下 2 x − 1 2^x-1 2x1种取值方式表示有一位数据出错。因为编码后的二进制串有n+x位,因此x应该满足:

    2 r − 1 ≥   n + x 2^r -1 ≥ n+x 2r1 n+x

    最常见的海明码校验位长度:

    • 2-4位数据位:3位校验位
    • 5-11位数据位:4位校验位

    详情可参见: 海明码运算方法

  • 相关阅读:
    js knex基本用法
    LabVIEW检测润滑油中的水分和铁颗粒
    温敏AIE双亲多肽分子/AIE磁性荧光微球/多重刺激响应性聚合物纳米微球相关制备
    kali渗透测试_HTTPS攻击
    算法分析与设计(持续更新……)
    YOLOv5算法改进(21)— 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之EIoU
    判断两个DataFrame和array的列(Series)是否相同
    【MyBatis源码分析】六、MyBatis Plugins(拦截器)
    江森自控×实在智能丨RPA一天完成20+人工作量,为制造业赋能
    人工智能、深度学习、机器学习常见面试题181~200
  • 原文地址:https://blog.csdn.net/xundh/article/details/127755786