Fork me on GitHub

02325教材大纲

计算机系统 = 硬件+ 固件 + 软件

指令系统

数据表示

寻址规则

存储器定义

中断系统

机器工作状态的定义和切换

存储系统

信息保护

计算机系统结构 : 区分软硬件工作范畴(属性)

计算机组成: 逻辑实现

计算机的实现 : 底层 - 电子

并行

系列机 : 同一厂家, 相同结构 , 不同组成 , 不同实现的一系列机器

模拟 & 仿真 : 可移植性

  1. 模拟 : 代表程序 vmware , 定义是用软件的方法在一台机器上实现另一台机器的指令集
  2. 仿真 : 代表安卓模拟器 , 定义 : 使用宿主机上的微程序来解释另一台机器的指令集
  3. 速度 : 仿真 > 模拟

并行性 = 同时性 + 并发性

并行的范围:

  1. 微操作并行
  2. 多指令并行
  3. 多进程并行
  4. 多线程并行

计算机常用的单位:

b : bit 位 : 最基本的数据存储单元

↓ * 8

B : Byte 字节 : 最常用的单位 = 8 bit

↓ * 4 / 8

字(word) : 32位CPU : 4B / 64位CPU : 8B = 32 bit / 64 bit

程序常用单位:

B : byte 字节 : 8 bit

↓ * 2

字(word) : 2B = 4 bit

↓ * 2

dword : 4B = 32 bit

↓ * 2

qword : 8B = 64 bit

数据处理分类(冯氏分类法):

  1. 字串位串
  2. 字串位并 (实际运行使用方案)
  3. 字并位串
  4. 全并行

提高并行性的方法:

  1. 时间重叠 : 同一个时刻跑多个任务
  2. 资源重复 : 扩展多个设备来处理同一组任务 : 多核心(intel) ,多cpu(arm) , 集群
  3. 资源共享 : 将任务处理为一个循环队列来处理, 根据资源调度的算法去切换执行每个任务直到完成

计算机系统分类: (Flynn 分类法)

  1. 单指令单数据流(SISD) : 单核处理
  2. 单指令多数据流(SIMD) : 使用最多 , 一条指令可以处理多个数据
  3. 多指令单数据流(MISD) : 没有被实际使用
  4. 多指令多数据流(MIMD) : 多核/多cpu 处理

计算机软硬件取舍原则: (高性价比)

  1. 实现费用
  2. 速度
  3. 其他性能要求

计算机系统性能描述:

  1. 用户响应时间
  2. 服务端吞吐量 : 系统在单位时间内能够处理的工作量

判定计算机系统的性能指标:

  1. 时钟频率
  2. 每秒百万指令 : MIPS
  3. 每秒百万条浮点数指令 (常用)

唯一标准 : 执行相同的程序所用的执行时间 , 越少性能越高

计算机系统设计原则

  1. 定量设计原理
    1. 大概率事件优先 (哈夫曼压缩定律)
    2. 阿姆达尔定律 : 改进后的性能 / 改进前的性能 ≈ 改进的时间 / 改进的时间 = 加速比
    3. 局部性原理
      1. 时间局部性 : 使用过的数据在短时间内可能会使用第二次 : 循环变量
      2. 空间局部性 : 使用到的数据附近的数据可能被使用到 : innodb页机制

加速比 : 推导和计算公式

阿姆达尔定律

  • 推导

已知不可改进比例 A , 可改进比例B , 组件加速比 S

T1(总改进前时间) = A + B

T2(总改进后时间) = [ (1 - B) + B / S ] * T1

加速比 = 改进后性能 / 改进前性能 = T1 / T2 = T1 / [ (1 - B) + B / S ] * T1 = 1 / ( 1 - B ) + B / S

  • 公式

加速比 = 1 / ( 1 - B ) + B / S

数据表示

  1. 数据基本概念

    1. 数据表示 & 数据结构的区别

      • 数据表示 : 硬件能直接识别的, 指令集能直接调用的数据类型
      • 数据结构 : 软件为了根据开发需要实现的一些数据类型
    2. 数据表示的类型 :

      1. 定点数据表示
      2. 逻辑数据表示
      3. 浮点数据表示
    3. 数据结构支持 :

      1. 向量数据结构
      2. 阵列数据结构
  2. 高级数据表示

    1. 自定义数据
      1. 标志符数据表示 : 描述一个数据 , 和数据相连
        • 操作码
        • 扩展数据内容, 对数据增加标识
      2. 数据描述符 :描述一片数据 , 和数据分开存放
        描述符是优化标志符的方案
        用于节约相同类型矩阵数据的空间存放
      3. 数据扩展设计
    2. 向量 , 数组
    3. 堆栈
  3. 浮点数尾数基值大小

    1. 格式 : 数符 + 阶码 (阶符 +其他) + 小数点 + 尾数
    2. 浮点数范围影响因素 :
      1. 进制 : 进制越大, 表示范围越大, 表示个数越大, 分布在实数轴越稀疏, 精度越低, 精度损失越小 , 运算速度提高
    3. 尾数下溢处理
      1. 截断法 : 结果整体比实际值低
      2. 舍入法 : 结果整体接近实际值
      3. 恒置1法 (低位永远设为1,误差大)
      4. 查表舍入法 (ROM) : 结果整体接近实际值

浮点数尾数基值大小和下溢

  1. 概念
    1. 尾数
    2. 进制影响
    3. 溢出

寻址

  1. 分类 : 形式地址 ---- 运算: 首地址 + 偏移量 --> 实际地址
  2. 分类 : 面向寄存器 , 面向堆栈 , 面向主存
  3. 寻址方式 :
    1. 立即值寻址 : 找值3
    2. 直接寻址 : M1001 找地址1001的值
    3. 寄存器直接寻址 : R3 找3号寄存器的值
    4. 寄存器间接寻址 R[R3] / R[R[R3]] : 3号寄存器值作为地址, 寻找该地址对应的值 应用 : 指针
  4. 常见的寻址方式 :
    1. 变址寻址 : 首地址 + 偏移值(可变)
    2. 相对寻址 : 当前PC地址 + 相对当前的偏移值
    3. 基址寻址 : 首地址 + 偏移值(固定)
    4. 堆栈寻址 : ...
    5. 指明指令的寻址方式
      1. 占用操作码的某些位来表示寻址方式
      2. 占用地址的某些位表示寻址方式
      3. 占用长度 n , 可支持寻址方式表达 2^n种

指令系统设计要求

指令优化

指令系统发展和改进

指令

  1. 指令功能类型

    1. ALU : 算术运算 + 逻辑运算
    2. 移位操作
    3. 数据传送
    4. 输入输出 (IO设备交互)
    5. 转移
    6. 子程序调用与返回指令
    7. 堆栈操作 (push , pop)
    8. 其他指令 : 空操作指令 , 特权指令(debug)
  2. 指令类型

    1. 特权型 : 系统程序员
    2. 非特权型 : 应用程序员 / 系统程序员
  3. 指令构成 : 操作码 + 操作数地址

  4. 指令编码方式

    1. 定长操作码
    2. 变长操作码 (实际使用) : 硬件难度增加, 存储增加, 灵活性增加, 扩展性增加
  5. 指令优化 : 性能 , 空间分析 , 使用频度

    1. 优化操作码 :
      1. 使用变长操作码
      2. 构建哈夫曼树 : 使用频度高的指令操作符更短 , 哈夫曼编码实现了变长操作码的设计, 结果编码的熵最接近可能的最短位数, 降低了编码的浪费
      3. 使用哈夫曼扩展编码 : 基于哈夫曼编码的结果再对编码的长度进行规整 , 限定长度只能是某些值 , 方便硬件处理 ; 增加了少量的编码浪费 , 是性能利弊的权衡结果
      4. 其他扩展方法
        1. 零地址指令
        2. 一地址指令
        3. 二地址指令
        4. 多地址指令
    2. 优化操作码的方式:
      1. 15/15/15扩展法
      2. 8 /64/512扩展法
      3. 按要求设计扩展方法 , 判定设计方案可行性

地址

  1. 分类
    1. 逻辑地址 : 编程使用的空间
    2. 主存地址/实存地址 : 程序实际存储的空间 位置可变, 未必连续, 不一定等于逻辑地址的大小
  2. 程序在主存的定位方法
    1. 静态再定位
    2. 动态再定位
    3. 虚实地址映射表
  3. 主存信息存储与宽度 : 主存64位宽度 , 一个存储周期访问8个字节
    1. 任意信息储存
    2. 按整数边界存储 空间增加, IO减少

存储 :

  1. 存储设备 (按速度递减排序)

    硬件 应用 工作原理/备注
    寄存器(register) PC , IR
    cache (高速缓存)
    SDRAM (main memory) 内存条(必要硬件)
    ROM (read only memory) ROM ,PROM , EPROM,EEROM
    FLASH (闪存) NOR FLASH(读快) , NAND FLASH (写快) ; SSD ,SD卡 , U盘 SSD属于NAND但是读快写慢
    机械硬盘 , 磁带 VCD , DVD 电磁感应, 读时磁生电, 写时电引发磁改变
    软盘
  2. 存储性能

    1. 每位单价
    2. 命中率
    3. 平均时间
  3. 主-辅 存储层次结构

  4. 三级存储层次结构

    1. cache --速度(北桥芯片)--> 主存 --容量(操作系统)--> 硬盘
  5. 虚拟存储器(存逻辑地址)

    1. 特点

      1. 部分加载指令/资源分配
      2. 地址不连续
      3. 动态分配
      4. 虚拟地址大小和实际物理地址无关 (最大值一般不超过总容量和)
    2. 管理虚拟存储器

      1. 段式管理 (不定大小)
      2. 页式管理 (定大小)
      3. 段页式管理
    3. 页式管理

      页式存储管理 : cpu给出基虚地址 + 寄存器获取地址offset ==> 完整虚地址 + 主存中查询地址映射表 ==>物理地址基地址 + 寄存器获取地址offset ==> 完整物理地址  ==> 进入存储器查找数据
      
    4. 转换虚拟地址到物理地址

      1. 过程 cpu --> 主存 --> disk

      2. 优化 cpu --> TLB(cpu) --> disk

        ​ ↓
        ​ --> TLB(cpu) miss --> 主存 --> disk (两次访问)

    5. 页面替换算法

      1. 随机算法
      2. 先进先出
      3. 近期最少使用
  6. cache

    1. 映像规则
      1. 直接相联映射
      2. 全相联映射
      3. 组相联映射 (实际使用)
    2. 查找
    3. 替换算法
      1. 随机算法
      2. FIFO 先进先出
      3. 最近最少使用 LRU
    4. 写入主存策略:
      1. 写回法 : 仅当cache将被替换前拷贝到主存
      2. 写直达法 : cache改变立刻改主存
    5. cache一致性问题处理方案 : 多核多cache数据不一致问题
      1. 限制功能
      2. 硬件实现 - 监听法
        1. 写作废协议 (性能更高): 当cpu修改cache数据时同步修改主存, 将其他有该数据缓存的位置抹除; 其他内核需要该数据会从主存重新拷贝到cache
        2. 写更新协议 (播写法) : 当cpu修改数据的时候同时修改主存, 并广播其他有该数据的内核同步修改数据
      3. 硬件实现 - 目录法
        1. 全映像目录法
        2. 有限目录表法
        3. 链式目录表法
    6. cache性能分析
      1. 块容量/组容量 , 缺失率 成反比
      2. cache等效存储周期 ta= tc * Hc + (1-Hc) * tm

标量处理机

  1. 指令执行过程
    1. 取指
    2. 译码
    3. 执行
    4. 访存
    5. 写回
  2. 指令重叠执行
    1. 顺序执行 ( 执行时间 = 3nT )
    2. 一次重叠 ( 执行时间 = (1+2n)T )
    3. 二次重叠 ( 执行时间 = (n+2)T )
  3. 指令执行测试 WINDLX
  4. 指令并行
  5. 流水线
  6. 流水方式
  7. 时间高度并行的超级流水机

流水线

  1. 本质 : 重叠 + 异步 处理指令
  2. 描述 : 时空图
  3. 特点 : 功能部件+锁存 器
  4. MIPS(五级流水线) : IF , ID , EX , MEM , WB
  5. 分类:
    • 按处理级别
      1. 操作流水线
      2. 指令流水线
      3. 宏流流水线
    • 按功能
      1. 单功能流水线
      2. 多功能流水线
    • 按同一时间连接方式
      1. 静态多功能流水线
      2. 动态多功能流水线
    • 按指令执行顺序1
      1. 线性流水线
      2. 非线性流水线 (带前/后反馈回路)
    • 按指令执行顺序2
      1. 顺序流水线
      2. 乱序流水线 (异步)
    • 按数据处理方式
      1. 标量流水线
      2. 向量流水线
  6. 性能分析 (复习)
    1. 吞吐率 : 单位时间内完成的任务数, 任务数无穷大吞吐率接近1 , 即1周期执行1条指令 (瓶颈段时间)
    2. 加速比 : 不使用流水线时间 / 使用流水线时间
    3. 效率 : 有效工作数 / 总工作数
  7. 流水线冲突 (hazard)和处理方案
    1. 类型
      1. 结构冲突 (硬件资源造成)
        1. 拆分指令存储器和数据存储器
        2. 流水线气泡 (阻塞)
      2. 数据冲突 (指令造成,逻辑相关c= a+b)
        1. 规定一个写后读的周期内写占上半周期, 读占下半周期
        2. 旁路方式 bypass (定向技术) , 增加多路选择器 从输出直接获取数据到输入
      3. 控制冲突 (指令分支造成,逻辑相关if)
        1. 提早判断
        2. 延迟槽技术 : 从前调度必须执行的指令填充到延迟槽使条件指令执行同时可以并行执行其他指令降低空闲时间从而提升效率
    2. 约定 : 当一条指令等待, 之后的指令全部阻塞
    3. 数据指令关系 :
      1. 写后读 : 数据冲突
      2. 写后写
      3. 读后写
      4. 读后读
    4. 处理分支指令方法
      1. 冻结
      2. 排空

向量处理机

  1. 分类
    1. 时间重叠 : 向量流水处理机
    2. 资源重叠 : 阵列处理机 SIMD
  2. 流水处理方式
    1. 横向处理
    2. 垂直处理
    3. 分组纵横方式
  3. CRAY-1 四种向量指令
    1. 向量操作 : B+C
    2. 向量,标量混合操作 : B+2
    3. 从主存载入数据到向量寄存器 : load
    4. 向量寄存器写入数据到主存 : store
  4. 向量冲突
    1. V冲突 : 并行工作的各指令使用了相同的向量
    2. 功能冲突 : 同一功能部件被一条以上的指令请求使用
  5. 向量冲突处理 : 链接
  6. 链接性能分析

阵列处理机

  1. 构形
    1. 分布式存贮器
    2. 集中式共享存贮器
  2. 特点
    1. 可以把问题转化为数组或向量的处理
    2. SIMD模式
    3. 资源重叠
    4. 利用并行性非并发性
    5. 主要靠增加处理单元数量提高运行速度
  3. SIMD互联网络 ....
  4. 脉动阵列结构

中断系统

  1. ISR 中断服务程序
  2. 中断处理过程
    1. 接收中断请求
    2. 保存当前状态 (PSW + PC)
    3. 分析中断优先级, 执行优先级最高的中断请求
    4. 恢复中断前环境
    5. cpu继续执行被中断的程序
  3. 类型
    1. 内部中断
    2. 外部中断
    3. 软件中断
  4. 中断向量 中断向量指向中断服务地址
  5. 中断优先级
  6. 中断源
    1. 机器故障
    2. 软件中断 (异常)
    3. IO设备中断
    4. 外中断 (定时器)
    5. 调用中断指令
  7. 中断嵌套 : 由优先级判定
  8. 中断响应方式
    1. 轮询通信流程图
    2. 中断驱动流程图 (性能高)
  9. 软硬件功能划分
    1. 硬件 : 发起中断请求 , 响应中断请求 , 保存恢复环境
    2. 软件 : 执行中断程序

总线系统 (bus)

  1. 分类
    1. 按数据种类
      1. 数据总线
      2. 地址总线
      3. 控制总线
      4. 电源总线
    2. 按层次位置
      1. 片内总线(on-chip bus) : cpu内模块连接线
      2. 内部总线 : 连接机器内部的设备的连接线
      3. 外部总线 : 和其他机器 / 外部设备的连接线 (usb)
    3. 控制方式
      1. 按架构
        1. 集中式控制方式
        2. 分布式控制方式
      2. 按 ..
        1. 同步总线 (速度快,成本低,总线操作使用相同时钟频率)
        2. 异步总线 (没有统一时钟, 采用握手协议, 性能损失 , 更加灵活)
    4. 性能指标
      1. 总线工作频率
      2. 总线位宽
      3. 总线传输率 / 总线带宽 = 总线位宽 * 总线频率
    5. 常见并行IO总线
      1. IDE (PC硬盘)
      2. SCSI (服务器硬盘)
      3. PCI (网卡显卡)
      4. PCI-X
      5. PCI-E
    6. 嵌入式串行IO总线
      1. I2C
      2. 1-wire
      3. RS-232
      4. SPI

数据流计算机

  1. 计算机 = CPU ( 控制 + 运算 ) + IO + 存储
  2. 驱动理论
    1. 控制驱动 (冯诺依曼计算机)
    2. 数据驱动
      1. 数据流程序图
      2. 规约表达
        1. 串规约
        2. 图规约
    3. 需求驱动 (归约机)
    4. 模式匹配驱动

名词解释

PC : program counter 程序计数器 : 指明下一条执行的指令地址

PSW : program status word 程序状态码 : 用来指示处理器状态、控制指令的执行顺序并且保留和指示与运行程序有关的各种信息,其主要作用是方便地实现程序状态的保护和恢复

posted @ 2020-09-11 16:46  llbrh  阅读(383)  评论(0)    收藏  举报