第一章 - 计算机系统概述

  1. 计算机硬件发展:电子管 ➡ 晶体管 ➡ 中小规模集成电路 ➡ 超大规模集成电路

  2. 数据库管理系统(DBMS)是操作系统软件,数据库系统(DBS)是用户软件。

  3. 计算机系统结构

    • 软硬件逻辑上等效
    • 计算机硬件结构:
      • 冯·诺伊曼机:
        • 运算器为中心
        • 包括:运算器、存储器、控制器、输入设备、输出设备
        • 特点:后面学的都是冯·诺依曼机,有什么特点看对不对的上就行
      • 现代机:
        • 存储器为中心(最慢的部分放在首位)
        • I/O操作尽可绕开CPU
    • 语言层次:高级语言 ➡ 汇编语言 ➡ 机器语言
  4. 计算机的工作过程 - 1:(看看就行,后面会详细)计算机的工作过程
    0: 刚开始时,PC = 0,即当前要执行的指令的地址在0号主存地址.
    1: PC -> MAR,控制器通过地址总线告诉内存(主存储器)要取的数据,导致MAR = 0.
    2&3: MAR -> 存储体 -> MDR,取出数据到MDR,导致MDR = 000001 0000000101.
    4: 控制器通过总线取走MDR的数据,存放到IR,导致IR = 000001 0000000101.
    5: CU控制单元取走IR的操作码部分,CU因此得知这时取数指令.
    6: IR -> MAR,控制器将IR的地址码发给MAR,导致MAR = 5.
    7&8: MAR -> 存储体 -> MDR, 导致MDR = 0000000000000010 = 2.
    9: MDR -> ACC,控制器取出MDR数据到累加寄存器ACC中,导致ACC = 0000000000000010 = 2.
    10:上一条指令执行后PC = PC+1.

  5. 计算机的工作过程 - 2:(重点!!!)

    • 执行指令的工作流程:
      1. 取指令
      2. 指令译码、执行指令(取操作数、运算等)
      3. 完成指令,取下一条指令
    • ⬇不放图,图要记在脑海里!!!⬇
    • 各阶段寄存器数据流动方向
      • 取指令:PC ➡ MAR、MAR ➡ M主存 ➡ MDR、MDR ➡ IR同时PC+1 ➡ PC
      • 分析指令:OP(MAR)➡ CU,指令的操作数部分放入控制单元CU
      • 执行指令:Ad(IR)➡ MAR、MAR ➡ MDR、MDR ➡ ACC(执行过程各不相同、以加法指令为例)
  6. 计算机的多级层次结构(简单了解)

    • 上层分别是高级语言 ➡ 汇编语言 ➡ 机器语言,下层是微程序 ➡ 微指令
  7. 各硬件(记忆)

    • 运算器:ACC累加寄存器、ALU算术逻辑单元、MQ乘商寄存器、X通用寄存器(可通过编程变成其它寄存器)、IX变址寄存器(理解为可随意改变的基址,IX+A就是当前地址)、BR基址寄存器、PSW程序状态寄存器
    • 存储器:MAR(存储地址寄存器)、MDR(存储数据寄存器)
      • 存储器结构:存储元件(1bit) ➡ 存储单元(1B或者1B的偶数倍,这个数值就是存储字长)
      • MAR标志地址,所以其位数对应着存储单元的个数,如MAR = 10bit,存储单元 = 2^10 = 1024个
      • MDR标志数据,所以其位数一般是存储字长或者存储字长的2^n
    • 控制器:IR指令寄存器(当前指令)、PC程序计数器(下一条指令地址)、CU控制单元
  8. 计算机性能指标:

    • 机器字长:一次整数运算的数据的最大位数,一般情况下等于内部寄存器(ACC等)的位数
    • 数据通路带宽:数据总线一次能够传输数据的位数(此处指外部数据总线,而非CPU内部总线)
    • 主存容量
    • 运算速度(理解)
      • 吞吐量:单位时间内处理请求的数量,主要取决于主存速度
      • 响应时间:发送请求到收到响应的时间
      • 主频:CPU单位时间内的时钟周期数
      • CPI(Clock Per Instruction):一条指令占用周期数
      • CPU执行时间:一个程序消耗时间
      • 计算能力
        • MIPS:每秒(PS)多少百万条指令(MI)
        • MFLOPS:每秒多少百万次浮点运算,十亿(GFLOPS),万亿(TFLOPS)

第二章 - 数据的表示和运算

  1. 海明码补充知识点(详细请查看计网-海明码) 海明码补充知识点

  2. 进制转换:

    • 2 ➡ 8/16:小数点为分界线,每3或者4位为一组分别计算,不足3或4位就补0
    • 8/16 ➡ 2:小数点为分界线:每1位都写成3或4位二进制数(不足就补0)
    • 任意 ➡ 10:每项乘权值求和
    • 10 ➡ 任意(重点!!!)
      • 整数部分(除基取余法)
      • 小数部分(乘基取余法)
  3. 字符串编码(已删)

    • ASCⅡ编码:7b
      • 0~31:控制字符
      • 127:DEl
      • 48~57:0~9
      • 65~90、97~122:A~Z、a~z
    • 汉字的表示和编码:
      • 每个编码2个字节
      • 输入编码(计算机输入)、汉字内码(计算机处理,坐标)、汉字形码(计算机图形输出)
    • 大端和小端:
      • 整数127(十进制)在计算机(64位)中大/小端字节序
  4. 校验码:奇偶、CRC、海明码,参考计网

  5. 定点数的表示(重点!!!尤其补码!!!)

    • 定点整数
    • 定点小数
    • 原码的表示范围:
      - 最小负全1,最大正全1,用幂次累加和公式计算
    • 反码的表示范围:正不变、负全变
    • 补码:正不变、负全变并+1(补码到原码也是这个!)
      • 整数:
        • 在原码当中,“+0”0 000 0000和“-0”1 000 0000表示同一个数
        • 即0的反码可以表示成“-0”1 111 1111和“+0”0 000 0000,反码中“-0” + 1 = “+0”,这样负数对于的反码整体“+1右移”,使0不再重复,解放出一个最小值-2^n
      • 小数:
          • 在原码当中,“+.0”0 . 000 0000和“-.0”1 . 000 0000表示同一个数
        • 即0的反码可以表示成“-0”1 . 111 1111和“+0”0 . 000 0000,反码中“-.0” + 0 . 000 0001 = “+.0”,这样负数对于的反码整体“+.000 0001右移”,使.0不再重复,解放出一个最小值-1
      • 符号相同时,补码数据部分越大,码值越大
      • 模4补码:2位符号数;模2补码:1位符号数
    • 移码:补码符号位取反
      • 本质上是加上一个2^n使得符号取反,所以不可用于纯小数
  6. 定点数的移位运算

    • 算数移位(符号位不参与运算)(重点!!!但只记图,下面的理解为主)
      • 正数:正数的原码、反码、补码相同,均移位添0即可
      • 负数:
        • 原码:移位添0
        • 反码:反码数据位正好与原码相反,所以原码是移位添0,反码就应该移位添1
        • 补码:负数补码当中,最右边的1及其右边同原码、左边同反码,所以左移应该同原码补0,右该同反码补1
    • 逻辑移位:不管操作数,看出无符号数,左右移都添0
    • 循环移位
      • 不带进位位的循环左移将最高位进入最低位和标志寄存器位
      • 不带进位位的循环右移将最低位进入最高位和标志寄存器位
  7. 定点数的加减运算

    • 原码:
      • “正+正”或者“负+负”可能溢出
    • 补码(可以直接运算)(重点!!!)
      • 溢出判断
  8. 符号扩展(理解为主)

  9. 定点数的乘法运算(要会算!!!)

    • 乘法可以用加法和移位运算实现
    • 原码乘法:
      • 符号位异或确定
      • 手算:直接乘
      • 手算模拟ALU
    • 补码乘法模拟ALU:

    • 原码除法运算

    • 补码除法运算

  10. 浮点数的表示(超重点!!!每个概念都要搞懂):

    • +11 +3.026或者+15 +0.0003026
    • 浮点数尾数部分规范化:
      • 原码
      • 补码
    • IEEE 754:
      • 移码的定义是移码 = 真值 + 偏置值,一般偏置值 = 2^(n-1),这时刚好移码 = 补码符号位取反
      • IEEE 754的偏置值是2^(n-1) - 1
        • 例子:
  11. 数据存储:

    • 边界对齐方式和边界不对齐方式
      • 注意!边界对齐方式是不足字或半字就立即填充,而不是在最后填充
      • A(4B)、B(1B)、C(2B)应该填充为A(4B)、B(1B)+T(1B)、C(2B)而不是A(4B)、B(1B)、C(2B)+T(1B)
  12. ALU算术逻辑单元:也就是数字电路课上的小芯片.

    • 电路从左到右分别是:
      • 与、或、非
      • 与非、或非、异或
    • 标志位(CF、OF、ZF、SF):
      • CF(进位/借位标志)
      • OF(Overflow Flag、溢出标志):符号位进位⊕最高位进位
      • ZF(Zero Flag、零标志)
      • SF(符号标志):和的符号

习题1:

习题2:

  • 补码1000 0000的原码是1000 0000,原码里表示-0,补码中表示-128,所以转成原码会产生溢出
    习题3:

第三章- 存储系统

  1. 存储器的层次结构

    • 外存中的程序要执行必须先调入主存
  2. RAM和ROM:

    • RAM(随机存储器):
      • 随机存取,用于高速缓存存储器(如内存)
      • 易失性
    • ROM(只读存储器):
      • 只能读不能写(狭义上),随机存取(广义上,在写入上有某些限制);
      • 和随机存储器一起构成主存,存储某些固定不变的程序(如BIOS);
      • 非易失性
  3. 存储器的性能指标:

    • 大容量、低成本、高速度
    • 存储容量 = 存储字数 * 字长
    • 单位成本 = 总成本 / 总容量
    • 存储速度数据传输率 = 数据宽度 / 存储周期
  4. 半导体存储芯片(半导体存储器)组成结构:

    • 图中是一种拓展方式,还有其他方式
    • 读写控制器:决定读还是写操作
    • 片选器:决定哪个芯片被选中(用来存取数据)
    • 地址线:决定要读写数据位于芯片中的哪些存储单元
    • 数据线:双向(读写),位数与读写数据的位数有关
    • 数据线数与地址线数共同反应存储芯片容量大小
  5. SRAM和DRAM

    • 都是半导体随机存储器,SRAM用于高速缓存(Cache),DRAM用于主存(内存)
    • SRAM(静态RAM):
      • 使用双稳态触发器(六管MOS)记忆信息
      • 非破坏性读出,但具有易失性(信息很快就会自己消失)
      • 存取速度快(Cache比主存快)、集成度低、功耗大、成本高
      • 行列地址同时发送(DRAM是先行后列)
      • 习题:
        1. 地址线1024 = 2^10,10根
    • DRAM(动态存储器):
      • 使用电容存储信息
      • 破坏性读出,且有易失性(电容难以长时间留住电荷,需要充电)
      • 存取速度慢(相对SRAM)、集成度高、功耗低、容量大、成本低
      • 分别送行列地址
      • 刷新(DRAM特有,单位是行):
        • 集中刷新
          • 固定时间刷新、存在死区(一段时间内无法访问DRAM)
          • 但读写速度快,读写不会受到刷新影响(指读写的过程中被刷新)
        • 分散刷新
          • 分时刷新/读写、没有死区(分时,宏观下没有死区)
          • 存取周期长、降低整机速度
        • 异步刷新
          • 相当于读写占用时间片更多的分散刷新
          • 减小了死区
        • 透明刷新:刷新安排在译码阶段,不存在死区
    • SRAM与DRAM对比(理解!!!)
  6. 存储器的读写周期:

    • RAM读周期:存储器连续两次读操作时(读开始到下一次读开始),必须间隔的时间
    • RAM写周期:存储器启动到数据线上的数据全部可靠地写入存储器的时间
  7. 闪存(FLASH)和固态(SSD)

  8. 主存与CPU连接(总线、容量扩展/集成、片选)(超重点!!!)

    • 连接:数据总线、控制总线、地址总线
      • 细分下来又有:读写命令线“WE/WR”(控制),片选线“CS/CE”(地址)
    • 主存容量的扩展:
      • 位扩展:
        • 1B中每1b所在的存储芯片都不同
        • 并联、每次同时读取8个存储芯片的一位
        • 地址总线不变,数据总线n倍
      • 字扩展:
        • 8B中每1B所在的存储芯片都不同
        • 串联、每次读取1个存储芯片的一字节
        • 数据总线不变,地址总线n倍
      • 字位同时扩展:
        • 8B中每1B所在的存储芯片都不同,同时1B中每1b所在的存储芯片都不同(图中只分成4位,每4b不同)
        • 串联+并联、每次从1组存储芯片中同时读取该组所有芯片的1位
    • 片选:
      • 线选法:几个存储器就几根地址线,哪根地址线“亮了”就选择哪个存储器
      • (译码)片选法:加个译码器,如01是1号、10是2号,这样4个存储器只需要2根线而非4根线。
  9. 双端口RAM和多模块存储器(理解)

    • 双端口RAM:
    • 多模块存储器:
      • 普通存储器:每行为一个存储单元
      • 单体多字存储器:每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字
      • 多体并行存储器:每个模块都有相同的容量和存取速度,各个模块都有独立的读写控制电路、地址寄存器、数据寄存器
        • 高位交叉编制:
          • 本质上仍是顺序存储器
        • 低位交叉编址:
          • 可使用流水线方式
        • 试想:连续访问00000、00001、00010、00011、00100时,对于高位交叉编制,依然是顺序地一直访问一个存储器,而低位交叉编址则是并行访问多个存储器。
  10. Cache和主存的映射

    • 直接映射:每个主存块只能放在特定Cache块
    • 全相联映射:每个主存块可以放在任意Cache块
    • 组相联映射:每个主存块可以放在特定Cache组中的任意Cache块
  11. Cache写策略(命中:Cache中是否有所需数据)(理解)

    • 写命中:全写法(同时写入主存和Cache)、写回法(只修改Cache,不立即写入主存)
    • 写不命中:写分配法(加载内存块到Cache,然后修改Cache)、非写分配法(只写入主存、不调入Cache)
    • 多级Cache(通常三级,L1、L2、L3缓存):离CPU越近的Cache越快,容量一般越小。
      • 可以避免因频繁写造成的写缓存饱和溢出
  12. 虚拟存储器(超重点!!!)

    • 问题引出:
      1. 磁盘可能有坏道,这会影响数据的连续存储,怎么让数据跳过坏道实现”连续存储“?
      2. 多根内存条,每个内存条都有自己的从零开始的实际物理地址,怎么区分不同内存的”相同地址“?
      3. 多个磁盘,有的磁盘需要和其他磁盘合并为一个虚拟磁盘,有的磁盘需要划分出多个虚拟磁盘,怎么将虚拟磁盘的地址映射到实际磁盘物理地址?
    • 页式虚拟存储器:以页(大小相等)为基本单位
      • 地址变换过程
      1. 根据虚拟地址中的虚页号加上页表基地址,去页表找到对应的物理页号
      2. 物理页号+页内地址即可找到实际物理地址
    • 段式虚拟存储器:以段(大小不等)为基本单位,其它基本与页式存储器类似
      • 地址变换过程
  13. 存储系统大题(超重点!!!)

    • Cache行的完整构成:Tag(标记)、V(有效)、替换信息、行号、组号、脏位、块内数据、块内地址
    • 影响Cache行构成的因素:PA位数、Cache总行数、Cache块大小、Cache-主存映射方式、写策略、替换算法
      • Tag标记:受到PA(物理地址)位数、Cache块大小(块内地址位数)、Cache行数(组号/行号)、映射方式的影响(4者唯一确定Tag标记位数):
        • 全相联:
        • 直接相联(相当于1行就是1组):
        • 组相联:
      • V有效位:一定是1个比特
      • 替换信息:
        • 随机替换:0 bit
        • LRU:N个比特,N是:
          • 直接映射:0 bit
          • 全相联:log(2,Cache总行数) bit
          • 组相联:log(2,Cache路数/组内行数) bit
      • 脏位:
        • 写回法:1 bit
        • 直写法:0 bit
    • 例题1

注意地址线数与地址位数的区别!!!,以下可能用"位"但实际是"线".
习题1:

  • 注意是问的芯片引脚,不是存储器线路
    习题2:
  • 4行2列,每行2k × 8位,即每行地址数2^11 = 11位,0B1F = 0000 1011 XXXX XXXX舍弃后11位是0000 1即第二个(第一个是0)芯片,其地址是…
    习题3:
  • 4K = 12线而不是16K = 14线,想想看增加了4倍的存储单元(存储单元的位数增加了2倍),需要额外2根片选线(相当于地址线,但因为多个芯片不是整体而是组合,实际上是控制线)来定位.
    习题4:
  • 注意不是芯片扩展,而是芯片内存储单元阵列!
  • DRAM的行列地址线共用,所以行列数尽可能接近,同时DRAM按行刷新,行要少.
    习题5:
  • 用流水线做!
    习题6:

    习题7:

    习题8:
  • 主存地址32位,即物理地址32位,直接映射(行号10位),块内地址(4bit),所以Tag = 32 - 10 - 4 = 18位;回写(脏位1bit),有效位(1bit),一共20位,Cache索引位一共20位 × 2^10 = 20K,数据位4K*32=128K

第四章 - 指令系统

  1. 指令格式(了解!):半字长指令、单字长指令、双字长指令: 指令长度是机器字长的多少倍

    • 指令字长会影响取指令所需时间。如: 机器字长 = 存储字长 = 16bit, 则取一条双字长指令需要两次访存
    • 零地址指令:OP
      • 空操作、停机、关中断
    • 一地址指令:OP A1
      • 只有目的操作数的单操作数指令(+1、-1、求反、求补)、隐含约定目的地址的双操作数指令
    • 二地址指令:OP A1 A2
      • 算数和逻辑运算指令
    • 三地址指令:OP A1 A2 A3(结果)
      • 运算结果存放在A3
      • 需要四次访存:取指令、取操作数×2、存放结果
    • 四地址指令:OP A1 A2 A3(结果) A4(下址)
      • 相对于三址多了下一条执行命令的地址A4
  2. 定长操作码(RISC)、扩展(不定长)操作码(CISC)

  3. 指令寻址和数据寻址(重点!!!)

    • 指令寻址:
      • 顺序寻址:通过程序计数器PC自动+1,生成下一条指令地址
      • 跳跃寻址:结果是修改当前指令的PC值
    • 数据寻址(在指令中标记操作数的地址、操作码+地址(寻址特征+形式地址A)):
      • 隐含寻址:不给出操作数地址,而是指令中隐含。
        • 比如ALU中加法需要取一个数,另一个数隐含
        • 不访存
      • 立即(数)寻址:形式地址A就是操作数本身
        • 不访存
      • 直接寻址:形式地址A就是真实地址
        • 访存一次
      • 间接寻址:形式地址A给出的是存有操作数地址的地址(套娃)
        • 具体看几次间接寻址
      • 寄存器寻址:形式地址A给出操作数所在的寄存器编号
        • 不访存
      • 偏移寻址(区别在于偏移的”起点“不同):
        • 相对寻址:以PC为起点
          • EA = (PC) + A
          • 形式地址A是相对于PC的偏移量
        • 基址寻址:以程序起始地址为起点
          • EA = 基址寄存器的内容(BR) + 形式地址A
          • 基址寄存器BR的内容由操作系统指定,即使指定通用寄存器X为基址寄存器BR,其内容仍由操作系统指定。
        • 变址寻址:程序员自己决定起点(通过修改IX而非PC,修改PC的是跳跃寻址)
          • EA = 变址寄存器(IX) + 形式地址A
          • 通用寄存器X可作变址寄存器IX;变址寄存器IX面向用户,内容可由用户改变
  4. CISC和RISC(理解)

习题1:

第五章 - 中央处理器

  1. CPU基本结构(重点!!!)

    • 运算器:算术逻辑单元ALU、程序状态字寄存器PSW、暂存寄存器、累加寄存器ACC、通用寄存器组(AX~DX、SP等)、移位器、计数器CT等
    • 控制器:程序计数器PC、指令寄存器IR、指令译码器、存储器地址寄存器MAR、存储器数据寄存器MDR、时序系统和微操作信号发生器
    • 只有PC、PSW、ACC、X是可见(可编程)的
      • PC,可用条件转移指令改变其值
      • PSW,条件转移指令需要用到PSW的值,且比较指令可改变PSW的值
      • ACC,加法乘法可直接改变其值
      • X,通用寄存器,可以存放数据或者地址,位数一般与机器字长相等
  2. 指令周期:CPU完成一条指令的时间

    • 包含多个机器周期、每个机器周期又包含多个时钟周期
    • 每个指令周期包含的机器周期可能不等、每个机器周期包含的时钟周期(节拍)也可能不等
    • 基本组成:取指周期、间址周期、执行周期、中断周期
      • 无条件转移指令只有取指和执行
  3. 不同周期的数据流(重点!!!)

    • 取址周期:(PC) ➡ MAR1 ➡ RM(MAR) ➡ MDR(MDR) ➡ IR(PC) + 1 ➡ PC
      • 取址周期由控制器自动进行,不需要得到指令才进行
    • 间址周期:Ad(IR) ➡ MAR1 ➡ RM(MAR) ➡ MDR(MDR) ➡ Ad(IR)
      • 间址周期取的是操作数的地址,而不是操作数!
    • 执行周期:各不相同、具体分析
    • 中断周期:
      • 执行周期完成后,只有检测到中断才会进入中断周期
      1. 修改栈顶指针SP减一,送入MAR(保存断点至主存)(SP) - 1 ➡ SP(SP) ➡ MAR
      2. 读写控制1 ➡ W
      3. 保存PC内容到主存(PC) ➡ MDR
      4. 中断处理,将中断服务程序的入口地址(由向量地址生成部件生成)向量地址 ➡ PC
  4. 指令执行方案:

    • 单指令周期:所有指令周期时间相等,取决于最长那个
    • 多指令周期:不同指令选用不同执行步骤完成,不定长周期
    • 流水线周期:指令之间尽量并行(有些指令之间或者指令不同步骤之间没有资源冲突,可以并行)
      • RISC必须实现流水线
      • CISC通过优化实现流水线
  5. 数据通路:

    • 不包含控制部件!!!
    • 总线结构
      • 单总线结构:所有寄存器的输入输出在同一条公共通路上
      • 三总线方式:数据总线、控制总线、数据总线
      • 专用数据通路:减少共享线路、专线专用
  6. 控制器的设计(重点!!!)

    • 硬布线控制器的设计(根据指令、时序以及PSW等,按照时间顺序,由硬件电路产生一些微操作控制信号):
      • 控制单元CU的信号来源:指令译码器、时序信号、执行单元的反馈标志、来自总线的控制信号
      • 控制器的时序系统:
        • 时钟周期:用时钟信号控制节拍发生器,每个节拍内机器可以完成一个或几个需要同时执行的操作
        • 机器周期:可以视为所有指令执行过程中的一个基准时间,通常以存取周期作为基准时间
        • 指令周期:取指、间址、执行、中断
      • CPU控制方式:同步(统一时钟)、异步(无时钟,各自按照自己的速度工作(有前置步骤的可以暂停或”预判“))、联合控制(同步异步结合,大部件同步,小部件异步)
    • 微程序控制器(用软件设计硬件的技术):
      • 术语:
        • 微命令:控制部件向执行部件发出的控制信号,是构成控制序列的最小单位。
          • 例如:打开/关闭控制门电路的电位信号
        • 微操作:执行部件接收到微命令后执行的操作,和微命令是一一对应的
          • 微命令是微操作的控制信号,微操作是微命令的执行过程,微操作是执行部件中最基本的操作
        • 微指令:若干微命令的集合,存放在一个控制存储器中。存放微指令的控制存储器的单元被称为微地址。
          • 同一CPU周期内,并行执行的一组微命令,存储在控制存储器上,叫做一条微指令
        • 微周期:从读取一条微指令,到执行完成的时间
        • 微程序:实现一条机器指令功能的微指令序列
        • 程序 ➡ 微程序(机器指令) ➡ 微指令(微周期) ➡ 微命令(微操作)
      • 微指令至少包含:
        • 操作控制字段:用于产生某一步操作的各种操作控制信号
        • 顺序控制字段:控制产生下一条要执行的微指令地址
      • 主存储器与控制存储器:
        • 主存:RAM,存放程序和数据
        • 控存:ROM,存放微程序
      • 微地址寄存器(CMAR)和微指令寄存器(CMDR/μIR)
        • 类比MAR和MDR
      • 微指令的控制/编码方式:如何对微指令的控制字段进行编码,以形成控制信号
        • 直接编码法:不需要进行译码。其中每一位都代表一个微操作命令,例如控制字段中的某位为1,则代表着控制信号有效,0代表无效。
        • 字段直接编码法:
          • 如图微指令被分成三段,互斥的微命令(微操作)可以放在不同的段,相容的微命令则可以放在同一段内
          • 每个字段都需要留出一个状态表示此字段无效
        • 字段间接编码法:一个字段的某些微命令需要由另一个字段当中的某些微命令来解释。
      • 微指令格式:
        • 水平型微指令:一次能够执行多个并行操作的微命令。
          • 直接编码、字段直接编码、字段间接编码都属于这种
        • 垂直型微指令:
          • 设置微操作码字段,其规定了微指令的功能,并不强调并行控制功能
      • 硬布线控制与微程序控制对比
        • 微程序控制器的时序系统相对简单
  7. 指令流水线(重点!!!)

    • 一条指令的执行一般分为:取指、分析、执行。也可以分成其它步骤,但因保证其并行度
    • 流水线需要装入时间和排空时间
    • 流水线的分类:
      • 流水级别分类:部件功能级流水线(CPU内的各部件流水线)、处理机级流水线(子进程流水线)、处理机间流水线(分布式、每个处理机专门完成一种任务)
      • 功能分类:单功能流水线,多功能流水线
      • 连接方式分类:静态流水线(同一时间内,流水线的各段只能按照同一种功能的连接方式工作),动态流水线(不同段完成的运算可能不一样,可以提高效率,但控制困难)
      • 反馈信号分类:线性流水线(无反馈回路)、非线性流水线(存在反馈回路,适合线性递归运算)
  8. 影响流水线性能的因素(理解)

    • 结构相关/资源冲突:多条指令并行过程中争抢同一互斥资源
      • 可能发生冲突时,使后一条指令及其后续指令暂停
      • 增加资源,使指令在不同资源上运行
    • 数据相关/数据冲突:下一条指令可能会用到当前指令的最终结果
      • 可能发生冲突时,使后一条指令及其后续指令暂停
      • 设置专用通路,直接将当前指令的运行结果作为下一条指令输入,而不是先存入寄存器再输入。也叫数据旁路技术
      • 编译器优化,调整指令顺序
    • 控制相关/控制冲突:例如分支结构中的并行,当前指令未运行完成前,后一条指令无法确定分支的流向
      • 分支预测,尽早生成转移目标地址,不对就重新运行错误分支点即可
      • 同时预取转移成功和不成功两个方向上的目标指令
      • 加快前提形成条件码
      • 提高转移方向的猜准率
  9. 流水线性能指标(理解)

    • 吞吐率:
    • 流水线的加速比:不使用流水线与使用流水线的时间比值
    • 流水线效率:有效时空面积与总时空面积比值
  10. 流水线多发技术(假定指令周期分为四个阶段:取指FI、译码ID、执行EX、回写WR(了解)

    • 超标量技术
    • 超流水线技术
    • 超长指令字技术

tool

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
四号红: <font color=red size=4></font>
四号绿: <font color=green size=4></font>
四号蓝: <font color=blue size=4></font>
红: <font color=red></font>
绿: <font color=green></font>
蓝: <font color=blue></font>

分割线:

----------------------------

表格:
| | | |
| ----- | --: | :----: |
| | | |
| | | |
| | | |

拼图
{% gi 2 2 %}

{% endgi %}

便签:
{% note success %}

{% endnote %}

链接:
🔗