画布 1
计算机组成原理
  概述
    冯诺依曼结构
      哈弗结构
      存储器
      控制器
      运算器
      输入/输出设备
    性能指标
      CPI
        程序中执行一条指令所需的平均时钟周期数
        CPI=程序中所有指令的时钟周期数之和/程序中指令总条数
        CPI= ∑（程序中各种指令的CPI×程序中该种指令所占的比例）
      平均运算速度
        单位时间内可执行的指令条数
          MIPS：百万指令每秒
          FLOPS：浮点操作每秒
    层次结构
      硬核
      微程序级
      机器语言级
      操作系统级
      汇编语言级
      高级语言级
      应用语言级
      物理机
      虚拟机
  总线系统
    连接方式
      单总线
      双总线
        在CPU和主存之间增加高速的存储总线
      三总线
        增加控制IO操作的处理器IOP,IO总线
      多总线
        桥
    总线分类
      片内总线
        芯片内部寄存器与寄存器间，寄存器与ALU间的公共连接线
      系统总线
        数据总线
          传输各功能部件间的数据信息
          双向传输总线
        地址总线
          指出数据总线上源数据或目的数据所在主存单元或IO端口的地址
          单向传输总线
        控制总线
          传输控制信息（包括CPU送出的控制命令和主存（外设）返回CPU的反馈信号）
      通信总线
    总线接口
      计算机与外部设备之间相互连接的电路
      CPU对外部操作
        访问内存
          同步访问
        访问IO设备
          异步访问
    总线使用权分配
      令牌总线
      冲突检测
      总线仲裁
        集中仲裁
          菊花链查询
            实现简单
            对故障敏感
            仲裁速度慢
          计数器定时轮询
            轮询速度慢
            对电路故障不敏感
          独立请求
            判优速度快
            电路复杂
        分布仲裁
          线或方式实现优先级比较
    总线定时
      握手技术🤝
        同步总线协定
        异步总线协定
          总线周期长度可变
          握手次数复杂
        半同步总线协定
          前沿检测
          等待周期
        周期分裂式总线协定
          将一个读周期分解为两个分离的传输子周期
    数据传送模式
      读、写操作
      突发传送操作
        对一定长度的数据连续读出或写入
      写后读操作
        用于校验
      读-修改-写回操作
        用于对共享资源的改动
      广播，广集操作
    总线实例
      PCI总线
        突发式传送
        集中式仲裁，独立请求方式
      USB总线
        轮询总线
  运算器与运算方法
    数据
      定点格式
        小数点位置固定
          纯小数
          纯整数
        带符号数
          一比特表示符号
      浮点格式
        N=m*R^e
          m:尾数
            使用定点小数或定点整数表示
            浮点数表示精度
          e：阶数
            用整数形式表示
            浮点数表示范围
        规格化
          机器零
          非零浮点数
            尾数绝对值大于1/2
        IEEE745标准
        溢出：阶码
          上溢
          下溢
      符号数据
        字符串
          一个字节存放一个十进制的数位或符号位
        压缩的十进制数串
          一个字节存放两个十进制的数位
          BCD码
          符号位占半个字节
            存放在最低数位后
            12（c）表示正号，13（d）表示负号
            数值位数与符号位数和必须为偶数
    机器码
      种类
        原码
          有正负0⃣️
        补码
          0⃣️只有一种形式
        反码
          正数反码为其本身
          负数反码等于把其各位取反
          0⃣️有两种编码
        移码
          bias=2^n
      定点加减法运算
        补码加减法
        溢出
          单符号检测
          双符号检测
            “01”或”10”表示一溢出
        二进制加减法器（新增考点）
          二进制全加器
          串行进位并行加法器
          4位先行进位部件
          多级分组先行进位加法器
      逻辑运算
        无符号数，按位运算
      定点乘除法运算
        间接补码乘法
          乘数求补
          乘积求补
        定点除法
          加减交替法
      浮点加减法
        对阶
          小阶向大阶对齐
          尾数右移，阶加一
        规格化
          左移
        舍入
          向偶数舍入
      浮点乘除法
        阶码加/减操作
  IO系统
    编址方式
      独立编址
        io，主存地址空间独立
        通过不同指令访问，不同控制信号区分
      统一编址：存储器io映射
        外设接口寄存器的地址包含在主寄存器的地址空间内（此区域不能配置存储器芯片）
    IO接口
      主要功能
        时序配合
        地址译码和设备选择
        数据缓冲
        信号格式转换
        传送控制命令和状态信息
          IO接口的命令字、状态字、中断类型号均由IO接口发往CPU只能通过IO总线的数据线传输
          CPU对IO设备的控制信号通过控制线传输IO接口
      IO总线的控制线与地址线是单向传输
      IO总线的数据线是双向传输
    IO接口与外设间的数据传送
      无条件传送
      同步传送
        确定的时钟速率
      异步传送🤝
        双线，单线，三线
    CPU与IO接口间的数据传送
      无条件传送
        简单io方式
          简单外设为输入设备，适用三态缓冲器
          简单外设为输出设备，适用锁存器
      程序实现
        程序查询
          条件传送
        程序中断
          应用
            与外设并行工作
            故障处理
            实时处理
            程序调度
            程序资源中断：调试
          中断处理过程
            中断请求
            中断排队与判优
              菊花链式
              并行
            中断响应（硬件实现）
              暂停现行程序，发出中断响应
                在当前指令完成，进入公操作时（中断周期）执行
              关中断
              保护断点与PSWR
              查找中断源，获取中断服务程序入口地址
                向量中断
                  中断机构将响应中断源的中断总量送入CPU
                  中断向量
                      中断服务程序的入口地址（及初始psw）
                      寄存器中的基地址➕偏移量
                      硬件直接产生一个向量地址
                      向量地址转移：优先级编码电路产生固定地址码，其指向的单元中存放转移指令，转入中断服务程序入口
                查询中断
                  由软件查询中断源并跳转
            中断处理（机器指令序列实现）
              单级中断
                非强占式优先，不允许中断嵌套
                  所有中断源属于同一级，中断触发器离CPU越近优先权越高
                  保护现场
                  中断服务
                  恢复现场
                  开中断
              多级中断
                强占式中断，允许中断嵌套
                  优先级高的中断可打断优先级低的中断
                  保护现场，更新屏蔽字，开中断
                  中断服务
                    允许响应更高优先级的中断请求
                  关中断，恢复现场，还原屏蔽字
                  开中断
            中断返回
      硬件实现
        PPU方式
        通道方式
        DMA方式：直接存储器存取
          DMA传送前预处理阶段
            CPU将必要信息（传输地址、长度等）送给DMAC、并测试IO设备状态
              对DMA控制器进行初始化
            外设准备好传送后，向DMAC发送DMA请求
            DMAC向CPU发送总线请求
              多个DMA请求同时产生时，使用硬件排队器择优请求
            CPU响应总线请求，发送总线响应信号给DMAC
          数据传送阶段
            DMAC作为主设备控制数据传送过程
          传送结束后的处理阶段
            DMAC以中断方式向CPU报告DMA传送结束，当CPU响应中断时，执行DMA传送结束中断服务程序
          传送方式
            周期挪用
              CPU一次让出1⃣️2⃣️个总线周期的总线控制权
              窃取，挪用
            成组连续传送
            透明DMA
              一个CPU周期分为两个子周期
                c1周期DMAC使用总线
                c2周期CPU使用总线
                不需要总线使用权申请，建立，归还
  IO设备
    显示器
      像素
      灰度值
      分辨率
      刷新存储器
    磁盘
      磁道
      柱面
        一个文件尽量在一个柱面上
      存储密度
      存储容量
      平均寻址时间
        寻道时间
        等待时间
      平均存取时间
        内务操作（用时很短）
      数据传输率
  存储系统
    层次结构
      高速缓存寄存器
      主存
      辅存
      内存
      外存
    程序局部性
      时间局部性
      空间局部性
    主存技术指标
      存储器编址方式
        每个存储单元有一个地址
        按字节，字，半字，1/4字编址
      存储器的访问
        每次访问寄存器读写的信息量
        字，半字，字节寻址
      存储容量
        存储字节*存储字长
      端模式
        大端：高字节在低地址（对人友好）
        小端：低字节在低地址（对机器友好）
        字地址在低地址处
      位扩展（大题）
      字扩展
    随机读写存储器RAM
    多模块交叉存储器
      高位交叉编址（顺序方式）
        串行存取，模块内地址连续
        地址高位选择存储体（类同片选），低位为体内地址
      低位交叉编址（交叉方式）
        每个模块“模m”交叉编址
        地址高位为体内地址，低位为体号
        连续存取m个字所需时间为t=T+（m-1）r
          T：模块存取一个字的存取周期
          r：总线传送周期
        交叉存取度m
          m=T/r
          存储器的交叉模块数应该大于等于m
    高速缓存寄存器Cache
      Cache地址
        标记项（在Cache中独立添加与主存地址无关）
          有效位
          一致性维护位
            写策略
          替换算法位
            在LRU算法中计数值位数与Cache组大小有关
              4路使用两位LRU位（两位可以表示前4次中未访问的次数）
        标记位Tag
          主存地址中划分给组号与块内地址后剩余的字段
        组号（Cache行号）
          由Cache组数决定
        块内地址
          Cache低位由低位块内地址开始计算
          位数为块内存储单元的个数（块大小/存储单元大小）
      命中率
      分页
        页地址映射
          全相联映射
          直接映射
          r路组相联映射
            每组有r个Cache行，称为r路组相联
            主存映射到cache的组号固定，组内各块映射到cache相应组的行是任意的
              Q（Cache组数）=1:全相联映射
              Q=n（块数）：直接映射
            映射关系：j=i mod Q
              j：Cache行的组号
              i：主存的块号
              Q：Cache组数
            CPU访存过程
              根据访存地址的组号找到对应的Cache组
              将对应Cache组中的每个行的标记与主存地址的高位进行比较
              若有一个相等且有效位为1，说明Cache命中
                根据主存地址的块内地址找到Cache块内对应的存储字
              若都不相等且有效位为0，说明Cache未命中
                CPU从主存中读出该地址所在块的信息送到对应Cache组的任意一个空闲行中（或进行块置换），将有效位置1，并设置标记；同时将该地址中的内容送CPU
      替换
        随机替换法
        先进先出
        最久没有使用LFU
        最近最少使用LRU
          r路组内不会出现r+1次都没有访问过的非空闲块
          2路组相联的简化实现
          堆栈实现
      读出
        贯穿读出式
        旁路读出式
      写入
        写回法
        全写法
        写一次法
    虚拟存储器
      段式虚存
      页式虚存
        实现方法
          二级页表
          反向页表
        转换后援缓冲器TLB
      段页式虚存
        程序按逻辑分段，每段再分页
        程序按页调入调出主存，按段进行编程，保护，共享
  指令系统
    指令格式
      操作码
        操作类型
          等长操作码
          变长操作码
      地址码
        源操作数地址
        目的操作数地址
        下一条指令地址
        主存单元，CPU内部数据寄存器，io设备接口内寄存器
      四地址指令
        （A1）OP（A2）-A3 A4
        A4为下一条要执行的指令
      三地址指令
        （A1）OP（A2）-A3
      二地址指令
        双操作数
          （A1）OP（A2）-A1
        单操作数
          OP（A1）-A2
      一地址指令
        双操作数
          （A1）OP X - X
            x：隐含使用寄存器或堆栈寻址
        单操作数
          OP （A1）-A1
      零地址指令
        无需操作数的指令，如空操作，停机等
        运算的操作数地址全部隐含
      拓展操作码
        向地址字段拓展操作码
    寻址方式
      指令寻址
        顺序寻址
        转移寻址
          转移指令的地址码字段包含下一条指令地址
      操作数寻址
        立即寻址
          指令地址字段给出立即数
        隐含寻址
          指令中某个操作数或其地址隐含在指定的寄存器或内存单元中
        寄存器寻址
          操作数在寄存器中
        直接寻址
          指令中直接给出地址
        间接寻址
          指令给出操作数地址在内存中的地址
        寄存器间接寻址
          寄存器中存放操作数地址在内存中的地址
        相对寻址
          PC值➕指令中形式地址
        基址寻址
          CPU中基址寄存器➕指令中形式地址
        变址寻址
          CPU中某个变址寄存器➕指令中形式地址
            变址寄存器每次使用后可自动变值
            访问复合数据结构
        段寻址
          段寻址程序中指令和数据先分为段，每个段内均以段起始地址为基址编址
        堆栈寻址
          依据数据出入栈的顺序给出地址
          存储器堆栈（软堆栈）
            固定的栈底，浮动的栈顶
            CPU内部堆栈寄存器SP
    RISC
      精简指令种类
      提高指令译码速度
      减少访存次数
      提高指令执行效率
  中央处理器
    主要寄存器
      程序计数器PC
        确定下一条指令地址
      地址寄存器AR
        保存当前CPU访问的内存单元或io接口地址
      数据缓冲寄存器DR
        输入/输出缓冲
      指令寄存器IR
        保存当前正在执行的一条指令
      程序状态字寄存器/状态条件寄存器（PSWR）
        控制位
        保存中断和系统工作状态等信息
        保存指令运行，测试的结果建立的条件码
      通用数据寄存器
    功能
      指令控制
      操作控制
      时序控制
        时序发生器
          时序控制方法
            同步控制
            异步控制
              请求-响应
              询问-应答
            联合控制
          组成
            时钟源
            脉冲发生器
            节拍脉冲和读写时序译码逻辑
            启停控制逻辑
              主时钟输出需要一定时间达到稳定
      数据加工
    指令周期
      时钟周期
        操作的最基本时间单位
      CPU周期
    基本组成
      控制器
        PC，IR，指令译码器，时序发生器，操作控制器
          操作控制器
            硬布线控制器
              组合逻辑电路
              速度快
              设计，调试，维护困难
              硬布线控制器设计
                画出指令流程图
                设计控制操作时序
                进行微操作综合
                电路实现
            微程序控制器
              微程序控制器设计
                将机器指令分解成基本的微操作序列，用代码表示这些微操作，写成微程序
                  微指令格式
                    微操作码➕顺序控制
                      水平型微指令
                        一个CPU周期内同时给出多个并行操作的微命令的微指令
                          直接控制法
                            将控制字段每个二进制位定义为一个微命令
                          编码表示法
                            将互斥性的微命令信号组成一个子字段
                            通过小组译码器对每个子字段进行译码
                          混合控制法
                      垂直型微指令
                        寄存器-寄存器传送型微指令
                        运算控制型微指令
                        访问主存微指令
                        条件转移微指令
                  主存与控存
                    控存：存放对应于机器指令系统的全部微程序
                    不属于存储系统
                  微指令与机器指令
                  微程序执行顺序控制
                    计数器方式
                      顺序执行
                        现行微地址加上一个增量产生后续微地址
                      非顺序执行
                        由转移指令直接或间接给出转移微地址
                    多路转移方式
                      不产生分支
                        由微指令的顺序控制字段给出
                      出现分支
                        按顺序控制字段的判别测试标志和状态条件信息通过运算或测试选择候选地址中的一个微地址
              存储逻辑
              设计，调试，维护，扩充方便
              指令执行速度慢
        指令执行过程
          取值
          取操作数
          分析
          执行
          指令流程图
      运算器
        算术逻辑运算单元（ALU），寄存器组，状态条件寄存器
        算术运算，逻辑运算与逻辑测试
      数据通路
        CPU内部的信息传送通过CPU 内部总线进行；CPU与外界交换信息通过系统总线进行
    流水（时间并行）
      并行性
        时间并行
        空间并行
        时间➕空间并行
      流水线
        线性流水线
          各功能段顺序执行
            时钟周期
              过程段处理时间最大值➕缓冲寄存器延时
            加速比
              流水线工作相对于等效的非流水线顺序串行方式工作，速度提高的比值
              潜在加速比=流水线级数
            吞吐率
              单位时间内流水线 所完成的任务数量或输出的结果数量
              最大吞吐率=指令流水的时钟周期长的倒数
        非线性流水线
          各功能段存在反馈连接
        实现
          流水计算机设置取指令，分析指令，执行，写回四个独立部件
          任何时候有四条指令处于流水线不同功能段
          相继指令可以重叠执行
        指令流水中的问题
          拥挤
            瓶颈段细分
            重复设计瓶颈段
          资源相关
            硬件资源冲突：取指令，访存
              引入暂停周期
              资源重复设置
                分设数据存储器和指令存储器
                使用双端口存储器
          数据相关
            后续指令需要当前指令结果操作数
              后推法
                流水线互锁
              定向技术
                将结果操作数送到后续指令所需位置
              编译器调度
              动态调度
          控制相关
            条件转移，中断，改写PC指令
              排空流水线
              转移预测
      超标量流水线
        每个时钟周期并发多条独立指令，并以并行操作方式将两条或多条指令编译并执行
        编译器优化
        需要配置多个功能部件
      超流水技术
        在一个时钟周期再分段，在一个时钟周期内一个功能部件多次使用
        编译器优化
      超长指令字
        由编译程序将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字
        需要多个处理部件