408-22新大纲知识点

本文最后更新于:2022年10月10日 晚上

408-22新大纲知识点

1.数据表示和运算

1.1.补码加减运算器、标志位

  • 传统补码手算:
    • 加法:直接相加,溢出舍弃
    • 减法:X-Y,Y连符号位一起全部取反末位+1,减法变加法
  • 电路: image-20221010100650472
    • 无符号数也可以使用此电路,但二者判断溢出逻辑不同
  • 标志位(都在PSW状态字寄存器中)
OF (Overflow Flag) 溢出标志 溢出时为1否则置0 最高位 异或 次高位,只在有符号数运算有意义
SF (Sign Flag) 符号标志 结果为负时置1,否则置0 取结果最高位,只在有符号数运算有意义
ZF (Zero Flag) 零标志 运算结果为0时置1,否则置0 运算结果全部位为0
CF (Carry Flag) 进位/借位标志 进位/借位时置1否则置0 最高位进位 异或 sub值(减法为1),只在无符号数运算有意义

1.2.乘法电路

  • 电路图:image-20221010121237152
  • 有符号数 乘法 算法:

    • 辅助位 一开始设为0

      • 辅助位 - Y中最低位 = 1时,(P)+[X]补
      • 辅助位 - Y中最低位 = 0时,(P)+[X]补
      • 辅助位 - Y中最低位 = -1时,(P)+[-X]补
    • 算数右移时,用符号位补空位

    • 此处用单符号位运算,n位右移后不用最后再来一次加法

1.3.除法电路

本质上是把n位数扩展为2n位,对n位数做除法得到n位商。定点正小数,低位补0;定点正整数,高位补0

  • 电路图:image-20221010144945187
  • 需要的基本结构:
    • ALU
    • 移位寄存器:乘法右移,除法左移
    • 控制逻辑:加减信号(向ALU)、右移/左移信号(向寄存器)、写使能信号(向寄存器)
    • 计数器Cn:记录还剩几轮处理

2.固态硬盘

  • 基于闪存技术 Flash Memory, 属于电可擦除ROM,即EEPROM
  • 组成
    • 闪存翻译层 :负责翻译逻辑块号,找到对应页 (Page)
    • 存储介质:多个闪存芯片(Flash Chip) ,每个芯片包含多个块(block) ,每个块包含多个页(page)
    • 示意图:image-20221010153340551
  • 读写性能特性
    • 以页 (page)为单位读/写:相当于磁盘的“扇区”
    • 以块 (block)为单位擦除:擦干净的块,其中的每页都可以写一次,读无限次
    • 支持随机访问:系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对应的物理地址
    • 读快、写慢:要写的页如果有数据,则不能写入,需要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新的页
  • 与机械硬盘相比
    • SSD读写速度快,随机访问性能高,用电路控制访问位置;机械硬盘通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟
    • SSD安静无噪音、耐摔抗震、能耗低、造价更贵
    • SSD的一个“块”被擦除次数过多可能会坏掉, 而机械硬盘的扇区不会因为写的次数太多而坏掉
  • 磨损均衡
    • 思想:将”擦除平均分布在各个块上,以提升使用寿命
    • 动态磨损均衡:写入数据时,优先选择累计擦除次数少的新闪存块
    • 静态磨损均衡:SSD监测并自动进行数据分配、迁移, 让老旧的闪存块承担以读 为主的储存任务, 让较新的闪存块承担更多的写任务

3.多处理器

3.1.SISD、 SIMD、MIMD、向量处理器

  • SISD(单指令流单数据流)
    • 各指令序列只能并发、不能并行,每条指令处理1个数据。不是数据级并行技术
    • 一个处理器 + 一个主存储器。若采用指令流水线,需设置多个功能部件,采用多模块交叉存储
  • SIMD(单指令流多数据流)
    • 各指令序列只能并发、不能并行,但每条指令可同时处理很多具体对象。是数据级并行技术
    • 一个指令控制部件(CU) + 多个处理单元/执行单元(如ALU) + 多个局部存储器 + 一个主存储器
    • 每个执行单元有各自的寄存器组、局部存储器、地址寄存器。不同执行单元执行同一条指令,处理不同的数据
  • MISD:理论存在
  • MIMD(多指令流多数据流)
    • 各指令序列并行执行, 分别处理多个不同的数据。是一种线程级并行、 甚至是线程级以上并行技术
    • 多处理器系统
      • 各处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可通过主存相互传送数据
      • 多个处理器 + 一个主存储器。共享单一的物理地址空间
      • 多个处理器共享单一的物理地址空间
    • 多计算机系统
      • 各计算机之间, 不能通过LOAD/STORE指令直接访问 对方的存储器, 只能通过“消息传递”相互传送数据
      • 多个处理器+多个主存储器。物理地址空间相互独立
  • 向量处理机
    • 条指令的处理对象是“向量”。擅长对向量型数据并行计算、浮点数运算
    • 常被用于超级计算机中,处理科学研究中巨大运算量
    • 多个处理单元,多组“向量寄存器”
    • 主存应采用“多个端口同时读取”的交叉多模块存储器
    • 主存大小限定了机器的解题规模,因此要有大容量的、集中式的主存

3.2.硬件多线程

  • 细粒度多线程:多个线程轮流交叉执行指令,多线程之间的指令不相关,可以乱序并行执行
    • 处理器能在每个时钟周期切换线程
  • 粗粒度多线程:仅在一个线程出现了较大开销的阻塞时,才切换线程,如Cache缺失
    • 发生流水线阻塞时,必须清除被阻塞的流水线,新线程的指令开始执行前需要重载流水线。线程切换的开销更大
  • 同时多线程(SMT)
    • 在同一时钟周期中,发射多个不同线程中的多条指令执行

4.汇编

  • 算数逻辑运算

    • OP, 目的地址, 源地址

    • 加、减、乘、除:OP: add、 sub, mul、 div

    • 左移、右移:shl、 shr

  • 分支结构

    • 判断条件(本质是减法):cmp A, B,结果放到PSW中
      • 无符号数减法关注CF、ZF(进位、零)
      • 有符号数减法关注OF、SF、ZF(溢出、符号、零)
    • 跳转指令
      • jxxxx(条件跳转)
      • jmp(无条件跳转),相当于C语言的goto
      • 转移指令,通常采用相对寻址。用补码表示偏移量,补码的值通常意味着要往前/往后跳多少个地址指令
  • 循环结构
    • xxx loop xxxx label:原理同跳转指令
    • 条件跳转指令 jxxxx 也可以用于实现循环
  • 函数调用
    • 调用指令:call label
      • 修改PC的值,跳转到label
      • call指令会将当前函数的相关信息入栈,这点与直接跳转不同
      • 入栈信息:当前PC
    • 返回指令:ret
      • 当前函数的信息出栈
      • 恢复上一层函数的运行现场,包括栈底指针ebp、程序计数器pc等

本博客所有文章除特别声明外均为原创,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!