[408] NOTES on Computer Organization -计算机考研408笔记-计算机组成原理

[408] NOTES on Computer Organization

文章目录

  • [408] NOTES on Computer Organization
    • 1 计算机系统概述
    • 2 数据表示和运算
    • 3 存储系统
    • 4 指令系统
    • 5 中央处理器(CPU)
    • 6 总线
    • 7 I/O系统

1 计算机系统概述

  1. 冯·诺依曼计算机:以“存储程序”概念为基础的各类计算机

    1. 硬件系统五大部件:运算器、控制器、存储器、输入设备、输出设备
    2. 指令和数据以二进制形式存储在存储器中
    3. 指令在存储器内按顺序存放
    4. 指令由操作码、地址码组成
    5. 以运算器为中心
    6. 基本工作方式是控制流驱动方式
    7. 特点是“存储程序”,即按地址访问并顺序执行指令
    8. 有五大功能:数据传送、数据存储、数据处理、操作控制、操作判断
  2. 机器语言、汇编语言、高级语言

    1. 机器语言:机器唯一可以直接识别并执行的语言
    2. 汇编语言:必须经过汇编操作,转换为机器语言
    3. 高级语言:通过翻译程序转换为机器语言程序
      1. 编译程序:整个程序编译为汇编语言,汇编并执行
      2. 解释程序:将程序逐语句翻译为机器语言并执行
    4. 注意:硬件描述语言程序(Verilog等)也不可以直接执行
  3. 性能指标

    1. 机器字长:计算机进行一次定点整数运算所能处理的二进制数据位数
      1. 正是常说的计算机的位数(64位计算机表示机器字长是64位)
      2. 一般等于CPU寄存器(MDR等)位数
      3. 字长越大,数的表示范围越大,计算精度越高
      4. 对比
        1. 指令字长:一个指令字中包含的二进制代码位数
        2. 存储字长:一个存储单元存储的二进制代码长度
    2. 数据通路带宽(数据字长):数据总线一次所能并行传送的信息的位数
      1. 各个子系统通过数据总线连接成的数据传送路径即数据通路
      2. 指CPU外部数据总线的宽度,与CPU内部总线(寄存器位数)可能不同
    3. 主存容量:主存储器所能存储信息的最大容量
      1. MAR:地址寄存器
      2. 可用“字数” * “字长”来表示:512K * 16位
        1. MAR能表示512K个存储单元,即至少有19位
        2. MAR的位数代表了最大可寻址范围,但主存实际容量可能没那么大
        3. MDR位数是16位
    4. 运算速度
      1. 吞吐量:单位时间内处理请求的数量,主要取决于主存存储周期
      2. CPU时钟周期:主频的倒数,CPU每个操作至少需要一个时钟周期
      3. CPU执行时间:取决于主频、指令执行的时钟周期数、指令条数
        1. 主频(时钟频率):内部时钟的频率,以Hz为单位,1Hz表示秒1次
        2. CPI:执行一条指令需要的时钟周期数,不受主频影响
        3. 指令条数:程序包含的指令的条数
          执行时间 = 时钟周期数 / 主频 = (指令条数 * CPI)/ 主频
      4. MIPS、MFLOPS、GFLOPS、TFLOPS、PFLOPS
        每秒执行多少百万条指令 / (百万/ 十亿 / 万亿 / 千万亿)浮点运算
  4. MAR、MDR

    1. MAR用于寻址,位数对应存储单元的个数,长度与PC的长度相等
    2. MDR位数与存储字长相等
    3. 二者是存储器的一部分,但存在于CPU之中(高速缓存也在CPU中)
  5. 常见问题

    1. 相联存储器:即可按地址、又可按内容寻址
    2. 计算机数据采用二进制编码的原因
      1. 二进制运算规则简单
      2. 制造两个稳态的物理元件较容易
      3. 便于用逻辑门电路实现算术运算
    3. 对用户完全透明的寄存器:IR、MAR、MDR
    4. CPI与主频无关,与系统结构、指令集、计算机组织有关
    5. 当前设计高性能计算机的重要技术途径:采用并行处理技术
    6. 机器速度是由多个指标综合衡量的,如CPU架构、指令集、cache、主频率等,不仅由某一项决定。如“CPU主频率越高的机器速度越快”是错误的

2 数据表示和运算

  1. 8421码:有权码,表示范围是0~9,从1010到1111是无效码,需要加6修正

  2. 字符编码

    1. ASCII码:7位二进制
    2. 汉字表示和编码:2B表示一个汉字
      1. 区位码:94行94列中的坐标,(区码,位码)格式
      2. 国标码:(区位码)H + 2020H
      3. 汉字内码:(国标码)H + 8080H
  3. 校验码

    1. 海明码(详见见WEB篇)
      1. n位信息检1位错、纠1位错,校验位位数要满足 n+k≤2^k - 1
      2. n位信息检2位错、纠1位错,校验位位数要满足 n+k≤2^(k-1) - 1
    2. 循环冗余校验 CRC
      1. 给定原信息码长度N,生成多项式对应二进制数R+1位
      2. 原信息码后添加R个0,除数位生成多项式对应二进制数
      3. 进行模2除法(逐位异或),得到R位余数
      4. 余数添加到原信息码后,形成N+R长度的CRC码
      5. 检错:CRC码对生成多项式对应二进制数做模2除法,没有余数则没错
      6. 纠错:得到余数非0,对应的值即为出错的位置
  4. 定点数

    1. 表示范围(n+1位字长,1位符号位)
      1. 原码小数:-(1-2^-n) ~ (1-2^-n)
      2. 原码整数:-(2^n-1) ~ 2^n-1
      3. 补码小数:-1 ~ (1-2^-n)
      4. 补码整数:-2^n ~ 2^n-1
      5. 反码小数:-(1-2^-n) ~ (1-2^-n)
      6. 反码整数:-(2^n-1) ~ 2^n-1
    2. 移位运算
      1. 算术移位:负数补码右移、负数反码左右移添1,其他添0
      2. 逻辑移位:添0
      3. 循环移位
        1. 带进位标志位:相当于数据位与标志位一同进行逻辑移动
        2. 不带进位标志位:只有数据位进行移动
          1. 右移最低位进入最高位和标志位
          2. 左移最高位进入最低位和标志位
    3. 补码加减运算溢出判断(符号位参加运算)
      1. 单符号位:操作数符号相同,结果与操作数符号不同则溢出
      2. 双符号位:计算结果两个符号位若不同则溢出,较高位为正确符号
      3. 单符号位进位情况:符号位进位与数据最高位进位不同则溢出
  5. 数据存储

    1. 大小端存储(如存储0123H)
      1. 大端方式:最高有效字节存储在最小位置(01 23)
      2. 小端方式:最低有效字节存储在最小位置(23 01)
    2. 边界对齐:空间换时间,RISC采用
  6. 浮点数:阶符+阶码+数符+尾数

    1. IEEE 754标准
      1. 32位 float:1+8+23,阶码偏置127
      2. 64位 double:1+11+52,阶码偏置1023
      3. 80位 临时浮点数:1+15+64,阶码偏置16383
    2. 特点
      1. 尾数隐含一个“1”,即尾数是实际数的小数部分
        如:12 = 1100B = 1.1*2^3,尾数只存储0.1
      2. 阶码是实际阶码加上偏置
        如:12 = 1100B = 1.1*2^3,阶码:3+127 = 130
      3. 阶码全1表示无穷大,阶码全0表示无穷小或非规格化数
    3. 加减运算
      1. 对阶:小阶向大阶对齐
      2. 尾数求和:定点数加减运算
      3. 规格化:左归或右归直到规格化(符号位与最高位不同即可)
        1. 左归:尾数是00.0xxx或11.1xxx,尾数左移,阶码减1
        2. 右归:出现溢出,尾数为10.xxx或01.xxx,尾数右移,阶码加1
      4. 舍入:0舍1入或恒置1
      5. 判断溢出:规格化完之后,根据阶码是否溢出进行判断
      6. 溢出出现的特点
        1. 对阶不会导致上下溢
        2. 右归、尾数舍入(导致阶码加1)可能导致阶码上溢
        3. 左归(导致阶码减1)可能导致阶码下溢
        4. 尾数溢出,结果不一定溢出,而只是损失精度
  7. 常见问题

    1. 运算出现误差的原因:N位二进制数和十进制数能表示的数的个数不同
    2. 补码表示中,符号相同,数值位越大,真值越大
    3. 双符号位:只在符号位送入ALU时复制一个符号位,并非存储2个符号位
    4. 主存地址常用无符号数表示
    5. 长度与格式相同的浮点数,基数越大,表示范围越大,精度越低
    6. 原码规格化(0.1xx,1.1xx)和补码规格化(0.1xx,1.0xx)不同
    7. 双符号位算术移位,高符号位不参与、符号位参与移位,来判断溢出情况
    8. 无符号数减法转换成加补码(第一位也取反)
    9. 减法借位标志CF = C ^ 1,C为进位标志
    10. imul(带符号整数乘)的溢出标志OF=1的条件:高33位为非全0或非全1

3 存储系统

  1. 串行访问存储器-直接存取存储器(如:磁盘)

    1. 与磁带(顺序存取存储器)区别
    2. 既不像RAM随机存取,又不像顺序存取存储器只能顺序查找,而是先找到某个区域(如磁盘磁道),再顺序查找
  2. Cache-主存系统

    1. 命中率:H = 命中Cache的次数 / 总次数
    2. 平均访存时间:Tc * H + Tm * (1-H)
    3. 效率:访问Cache的时间 / 平均访存时间
  3. SRAM与DRAM

    1. SRAM
      1. 存储元:双稳态触发器(六晶体管MOS)
      2. 存取快、集成度低、成本高,常用于Cache
    2. DRAM
      1. 存储元:电路栅极电容上的电荷
      2. 地址复用:地址信号分行、列两次传送
      3. 刷新:读出、放大、写回;对CPU透明;单位是行(只需要行地址);占用一个存储周期
    3. SRAM读出不需要再生,DRAM需要再生(刷新)
    4. 引脚数比较(1024*8位,读写线2根)
      8位数据线需8根引脚、读写线2根;
      1. SRAM:1024 = 2^10,SRAM无地址复用,需10根地址线,1位片选
      2. DRAM:DRAM地址复用,需5根地址线,1位行通选(片选),1位列通选
  4. ROM 只读存储器

    1. MROM、PROM
    2. EPROM 可擦除可编程只读存储器
      1. 可写入、改写信息
      2. 写入次数有限、写入时间长
    3. Flash Memory 闪速存储器(闪存)
      1. 存储元:MOS管,是半导体存储器
      2. 随机访问、数据不易失
      3. 读写速度:写较慢,需要先电清除原有数据
    4. SSD 固态硬盘:由闪存组成
    5. CD-ROM 光盘存储器:可再写
  5. 若主存地址空间大小与主存储器大小不一,MAR的位数取决于主存地址空间大小

  6. 多模块存储器

    1. 单体多字存储器
      1. 1个存储体,每个存储单元存储m个字
      2. 总线宽度为m个字,并行读出m个字
      3. 读出的m个字地址必须顺序排列、处于同一存储单元
      4. 特点
        1. 每1/m个存取周期,CPU向主存取一条指令,增大了带宽
        2. 指令、数据必须连续存放,遇到转移、操作数非连续存放时效果差
    2. 多体并行存储器(常用多体低位交叉存储器)
      1. 高位交叉编址(顺序方式)
        1. 高位地址:低位地址 = 体号:体内地址
        2. 存储模块不能并行访问,不能提高吞吐率
        3. 不满足局部性原理
      2. 低位交叉编址(交叉方式)
        1. 高位地址:低位地址 = 体内地址:体号
        2. 有m个模块,按照“模m”进行交叉编址
          如:M0中地址为0、m、2m,M1中为1、m+1等
        3. 交叉存取度:T / r
          1. 存储模块保证下一次再访问到时已完成上一次的存取操作
          2. 由此定义 交叉存取度m = 存取周期T / 总线传送周期r
          3. 总线传送周期r:两次启动同一模块的时间间隔
          4. 要求模块数大于等于交叉存取度,保证流水线不间断
        4. 连续存取m个字的时间优化:T为存取周期
          1. 顺序读取:mT
          2. 低位交叉:T+(m-1)r
        5. 满足局部性原理
        6. 涉及计算:注意第一次启动之后,后续的存取周期是否和数据传输并行进行了
        7. 访存冲突:m体交叉,相邻m次访问出现在同一模块内
      3. 局部性原理分析
        1. 高位交叉:
          1. 实质就是简单的片选+片内地址的简单顺序存储;
          2. 虽然看起来是满足局部性原理:待取数据集中在一小片范围内
        2. 低位交叉:
          1. 并行方式,可以明显加快逻辑上相邻单元的读取速度
          2. 相比之下,更像是为满足局部性原理而优化出的产物
        3. 高位交叉简单的顺序存储,显然并未在局部性原理上体现明显优势
  7. Cache

    1. 数据交换单位
      1. 与CPU:按字为单位交换数据
      2. 与主存:按Cache块为单位,块长与主存块长一致
    2. 映射方式:主存块号为 i
      1. 直接映射:只能装入到(i mod Cache行数)块
        1. Cache行结构:有效位+脏位+替换控制位+标记位+数据
        2. 对应地址结构:主存块号(标记位+Cache行号)+块内地址(偏移)
        3. 实现简单、不够灵活、空间利用率最低
      2. 全相联映射:可以装入任意位置
        1. Cache行结构:有效位+脏位+替换控制位+标记位+数据
        2. 对应地址结构:主存块号(标记位)+块内地址(偏移)
        3. 比较灵活、空间利用率高、标记比较速度慢、常用相联存储器实现,成本高
      3. 组相联映射:只能装入到(i mod Cache组数)组,组内任意装入
        1. Cache组结构:组内行数* 有效位+脏位+替换控制位+标记位+数据
        2. 对应地址结构:主存块号(标记位+Cache组号)+块内地址(偏移)
        3. 合适的组内行数可以使成本接近直接映射、性能接近全相联映射
    3. 写回策略:Cache内容是主存块副本,修改后需要写回
      1. 写命中
        1. 全写法(写直通法)
          1. 写数据同时写入主存
          2. 替换块不需要写回,直接覆盖即可
          3. 能随时保持主存数据正确性,但增加了访存次数
          4. 可以添加写缓冲,CPU写Cache同时写入缓冲,之后再由缓冲控制写入主存,但缓冲容易饱和溢出
          5. 常与未命中时 非写分配法 合用
        2. 写回法
          1. 写数据只修改Cache内容,不写入主存
          2. Cache块被换出时才写回主存
          3. Cache行内需要使用脏位来表示是否修改
          4. 常与未命中时 写分配法 合用
      2. 写未命中
        1. 写分配法
          1. 将块加载到Cache,写Cache
          2. 每次不命中都要从主存调块
          3. 常与命中时 写回法合用
        2. 非写分配法
          1. 只写入内存,不掉块
          2. 常与命中时 全写法合用
  8. 虚拟存储器

    1. 涉及3个地址空间
      1. 实地址 = 主存页号 + 页内偏移
      2. 虚地址 = 虚存页号 + 页内偏移
      3. 存储地址 = 磁盘号 + 盘面号 + 磁道号 + 扇区号
    2. 注意与OS中的内存管理区分开
      1. OS内存管理分页、分段、段页式:分的是实内存
      2. 请求分页
        1. 建立在基础分页之上
        2. 增加了请求调页、页面置换功能
        3. 为实现虚拟存储器的设计
    3. 页式虚存:主存、虚存都划分为等长的“页”
      1. 页表 Page
        1. 存放在主存中
        2. 表项是虚页号与实页号的映射
        3. 表项:有效位+脏位+引用位+实页号/磁盘地址
        4. 当有效位位0,代表该页未调入内存,可以映射到对应磁盘地址
      2. 地址转换:对应物理页号与页内偏移“拼接”
      3. TLB 快表:在高速缓存中存放常访问的页表
        1. 虚页号而不是虚地址进行映射
        2. 表项:TLB标记位+页表表项
        3. 通常TLB与Page同步进行查找
    4. 段式虚存:段表指明段起始地址、段长,偏移与读出的实地址相“加“
    5. 段页式虚存:先分段、再分页
  9. 常见问题

    1. Cache、Page、TLB的缺失情况
      1. 不存在TLB命中,Page缺失
      2. 不存在Page缺失,Cache命中
      3. 其他情况存在
    2. 局部性原理:程序执行过程中,程序对主存的访问是不均匀的
    3. 注意DRAM的地址复用(一般地址线,两根通选线)
    4. 段页式虚存先分段、再分页,与主存交换信息以页为单位
    5. TLB查找快原因:采用相联存储器,并非采用优化的搜索算法
    6. TLB命中率低于Cache:TLB内容是Cache的一个局部副本
    7. 缺页处理:完成后回到发生缺页的指令执行,并非”下一条指令“
    8. 虚存页面大小问题
      1. 页面过小
        1. 内部碎片少
        2. 页表较大
        3. 无法充分利用局部性
      2. 页面过大
        1. 内部碎片多
        2. 页表较小
        3. 页面调入调出时间长
    9. 地址划分注意:TLB标记、索引是在虚拟页号中划分的
      1. 实地址
        1. 页式存储管理视角 = 主存物理页号 + 页内偏移
        2. Cache视角 = Cache标记 + Cache索引 + 块内偏移
        3. 两种视角的偏移不同
          1. 页是分页存储方式中的页面,页内偏移取决于页面大小
          2. 块是Cache与主存交换的单位,块内偏移取决于块大小
      2. 虚地址
        1. 请求分页视角:虚存页号 + 页内偏移
        2. TLB视角:虚存页号(TLB标记+TLB索引)+页内偏移
        3. TLB是页表的复制,因此是基于虚存页号进行映射的
        4. 两种视角的偏移是一致的,都取决于分页方式页面的大小
    10. Cache查询及缺失处理的过程(组相联举例)
      1. 按照主存地址划分,确认组号,依次比对Tag以及有效位
      2. Cache缺失,根据主存地址访问主存,取出主存块
      3. 将主存块存到该组任一空闲行,若满则按照调度算法调出一行
      4. 将主存地址Tag部分填入该行标记字段、设置有效位、LRU位、修改位
      5. 再根据块内地址,从该行中取出相应内容
    11. 地址转换中的中断原因
      1. 地址越界:访问超过页长度
      2. 缺页:访问的页面不在内存
      3. 访问权限错误:执行的操作与页表中保护位不一致

4 指令系统

  1. 扩展操作码:指令字长有限、为丰富指令种类、操作码字段位数不固定

    1. 操作码的长度随地址码的减少而增加
    2. 常用分配方式(16位字长)
      1. 0000 A1A2A3~1110 A1A2A3:三地址指令
      2. 1111 0000 A1A2~1111 1110 A1A2:二地址指令
      3. 1111 1111 0000 A1~1111 1111 1110 A1:一地址指令
      4. 1111 1111 1111 0000 ~ 1111 1111 1111 1111:零地址指令
      5. 注意:三地址、二地址、一地址指令有15条,零地址16条
  2. 寻址方式

    1. 指令寻址、数据寻址
      1. 指令寻址:寻找下一条将执行的指令
        1. 顺序寻址:PC+1自动形成
        2. 跳跃寻址:转移指令修改PC值(已+1),仍由PC给出下一地址
      2. 数据寻址:在指令中表示操作数地址的方式
        EA:有效地址,A:形式地址,Ri:寄存器
        1. 直接寻址:EA = A
        2. 间接寻址:EA = (A),易于完成子程序返回
        3. 寄存器寻址:EA = Ri
        4. 寄存器间接寻址:EA = (Ri)
        5. 相对寻址:EA = (PC) + A,控制程序执行顺序、转移等
        6. 基址寻址:EA = (BR) + A
          1. 面向操作系统,(BR)不可变,A可变
          2. 适用于多道程序设计(浮动)
          3. 常用于为程序、数据分配空间
        7. 变址寻址:EA = (IX) + A
          1. 面向用户,(IX)可变,A不可变
          2. 处理数组问题(常设A为首地址,IX变化)
          3. 编制循环程序
  3. CISC(复杂指令集)与RISC(精简指令集)重要差别

    1. 指令字长:前者不固定,后者固定
    2. 指令访存:前者都可以访存,后者只有Load/Store指令
    3. 寄存器数量:前者较少,后者较多
    4. 控制方式:前者多为微程序控制,后者多为组合逻辑控制
    5. 流水线:前者可能实现,后者必须实现
    6. RISC利于流水线的设计特性:
      1. 指令长度一致(定长)
      2. 指令格式规整
      3. 只有Load/Store指令进行访存
      4. 数据和指令在存储器中对齐存放
    7. RISC指令基本都被CISC包含,是挑选最常用的简短指令,而不是为了“兼容”
  4. 若计算机按字节编址,则指令字长应是8bit(1B)的倍数,如计算得至少23位才能表示所有指令,则字长至少应该是24位,而不是23位

5 中央处理器(CPU)

  1. CPU内部寄存器

    1. 运算器中:累加寄存器(ACC)、通用寄存器组、程序状态字寄存器(PSW)
    2. 控制器中:PC、IR、MAR、MDR
    3. 用户可见:PC、通用寄存器组、PSW
    4. 用户透明:MAR、MDR、IR
  2. 指令周期、机器周期、时钟周期

    1. 指令周期≥机器周期≥时钟周期
    2. 不同 指令 的 指令周期 可能不同
    3. 不同 指令周期 中 机器周期 数可能不同
    4. 不同 机器周期 中 时钟周期 数可能不同
    5. 机器周期 常由 存取周期来决定
    6. 总结:执行各条指令的机器周期数可变、各机器周期的时钟周期数可变
  3. 取址周期、间址周期、执行周期、中断周期

    1. 目的:取指令、取操作数地址、取操作数并执行、处理中断请求
    2. 访存:取指令、取操作数地址、取操作数、保存断点
    3. 若指令字长等于存取字长,取址周期等于机器周期
  4. 数据通路:实现CPU内部运算器与寄存器、寄存器之间的数据交换

  5. 控制器:取指、译码、控制执行

    1. 硬布线控制器:控制信号由组合逻辑电路产生
      1. 应用于RISC,执行快,指令不规整,时序系统复杂
      2. 微操作
        1. 控制单元发出的控制信号
        2. 按照一定次序发出
        3. 一个机器周期中能完成若干微操作
      3. 微操作命令分析
        1. 取址周期
          1. PC —> MAR
          2. 1 —> R
          3. M(MAR) —> MDR
          4. MDR —> IR
          5. OP(IR) —> CU
          6. (PC) + 1 —> PC
        2. 间址周期
          1. Ad(IR) —> MAR
          2. 1 —> R
          3. M(MAR) —> MDR
        3. 执行周期:不固定
    2. 微程序控制器:读出预存在控制存储器的微程序执行
      1. 微程序入口地址由机器指令的操作码字段形成
      2. 应用于CISC,执行慢,指令较规整
      3. 微命令、微操作(组合逻辑中也有此概念)
        1. 机器指令分解成微操作序列,微操作是原子操作
        2. 微命令由控制部件发出,控制微操作
        3. 微命令与微操作一一对应
      4. 微指令、微周期
        1. 微指令是若干微命令的集合
        2. 微指令在控制存储器的单元地址是微地址
        3. 微周期:读取一条微指令并执行相应微操作的时间,一般对应一个机器指令周期
      5. 控制存储器:在CPU内部,用ROM实现
      6. 微指令编码
        1. 直接编码
        2. 字段直接编码:将互斥性微指令编在同一字段
          1. 属于水平型微指令,可以并行
          2. 操作码长度计算方式:各自段至少需要的位数之和
        3. 字段间接编码
      7. 与程序间的逻辑关系:程序 编译为 多条机器指令,各机器指令 对应 一个特定微程序,各微程序 由若干 有序微指令序列 组成,各微指令 由 一组微命令组合构成,而微操作是每条对应微命令的执行过程。
  6. 流水线

    1. 流水线阻塞
      1. 资源冲突(结构相关):争用同一资源
        1. 后续指令暂停一个时钟周期
        2. 资源重复配置,分离数据存储器、指令存储器
      2. 数据冲突(数据相关/冒险):后续指令用到当前指令计算结果
        1. 暂停一至数个时钟周期(硬件阻塞stall或软件插入NOP指令)
        2. 设置相关专用通路(数据旁路技术)
        3. 编译优化调整指令顺序
      3. 控制冲突(控制相关/冒险):转移指令等改变PC值,造成断流
        1. 分支预测
        2. 预取两个分支上的目标指令
        3. 加快、提前形成转移条件码
        4. 提高猜准率
    2. 性能指标:n个任务,k段流水线
      1. 吞吐率:n与处理完n个任务的时间之比
      2. 加速比:不使用流水线的完成时间与使用流水线完成时间之比
      3. 效率:设备利用率,完成n个任务占用的时空图有效面积与n*k之比
    3. 超标量流水线:CPU内有多于一条的流水线
      1. 实质是空间换时间
      2. 能在一个时钟周期内发射多条指令
      3. 能结合动态调度技术提高指令并行性
      4. 不能缩短流水线功能段时间
  7. 常见问题

    1. PC的位数与存储器地址位数相等,存储器地址位数取决于其容量
    2. 通用寄存器的位数取决于机器字长
    3. 间址周期:取操作数有效地址,间址周期结束MDR存放操作数有效地址
    4. 若流水线“按序发射,按序完成”,则时空图中下一条指令的IF段一定与上一条指令的ID段并行
    5. 微指令存储在控制存储器CS中,CS由ROM实现,在CPU控制器内,按地址访问而不是内容访问

6 总线

  1. 总线猝发传送:一个总线周期内传输存储地址连续的多个数据字,能提高数据总线数据传输率

  2. 总线指标

    1. 总线周期:一次总线操作所需的时间,由若干时钟周期构成
    2. 总线带宽:数据传输率,单位时间传送的位数
  3. 总线仲裁:n个设备

    1. 链式查询:3根(请求、忙、允许),优先级固定,不灵活
    2. 计数器定时查询:logn+2根(地址、忙、允许),优先级灵活,控制复杂
    3. 独立请求:n+n+1个根控制线(请求、允许、忙),响应快,优先级灵活,控制复杂
    4. 总线忙信号由获得总线控制权的设备发出
  4. 常见问题

    1. 总线相对于专线:减少了传输线条数,便于增减外设;但降低了信息的传输速度、降低了传输的并行性
    2. 地址线:指定主存单元地址、I/O设备接口电路地址;但并不是“选择”
    3. 单周期处理器不能采用单总线数据通路,单总线数据通路是CPU内部的概念,若指令同时涉及读写操作,则一定要超过1个时钟周期
    4. 并行总线不总是比串行总线传输速度快:并行传输时钟频率太高时,会出现互相干扰等导致数据无法恢复的情况;而串行情况线间干扰可以控制,因此能通过不断提高时钟频率来提高传输速率
    5. 总线之间通过桥接器相连,桥接器起流量交换作用
    6. 分离事物通信方式可提高总线利用率
    7. 异步总线中,传送操作按需分配时间(握手),每次传送数据需要添加1位起始位
    8. 常见总线标准:ISA、PCI(局部总线)、USB、SCSI、SATA
    9. 数据总线宽度由总线的功能特性定义

7 I/O系统

  1. 显示器

    1. 显示存储器 VRAM:带宽、容量
    2. 字符显示器:字符点阵存入字符发生器,VRAM存储显示字符的ASCII代码
    3. 图形显示器:显示文件存在缓冲存储器中
    4. 有CRT、LCD、LED显示器,LED在各方面都更具优势
  2. 磁盘地址:驱动器号+柱面(磁道)号+盘面号+扇区号

  3. RAID 廉价冗余磁盘阵列:多个独立物理磁盘组成一个独立的逻辑盘

    1. RAID0:无冗余无校验
    2. RAID1:镜像磁盘阵列
    3. RAID2:纠错海明吗
    4. RAID3:位交叉奇偶校验
    5. RAID4:块交叉奇偶校验
    6. RAID5:无独立校验的奇偶校验
    7. 提高了传输率、吞吐量、可靠性,有容错能力
    8. 并未影响磁记录密度,不会提高磁盘利用率
  4. I/O接口

    1. 地址线:单向(CPU向I/O接口),选中I /O端口地址
    2. 数据线:双向
      1. 数据缓冲寄存器的内容
      2. 命令/状态寄存器的内容
    3. 控制线:单向(CPU向I/O接口),控制端口读写
    4. I/O端口与编址
      1. I/O端口:接口中可以进行读写的寄存器
      2. 统一编址:存储器映射
        1. 将I/O端口当作存储单元,分配地址
        2. 无需I/O指令,访存指令即可访问
      3. 独立编址:I/O映射
        1. 与主存地址空间相独立
        2. 需要I/O指令进行访存
  5. DMA方式

    1. 预处理:需要CPU
      1. CPU执行I/O指令,测试设备状态
      2. CPU通过设备驱动程序,初始化寄存器、指定传送方向、启动设备
      3. CPU继续执行原程序
      4. I/O数据准备好后,设备进行DMA请求
        1. 设备向DMA控制器发送DMA请求
        2. DMA控制器向CPU发送总线请求
    2. 数据传送:无需CPU
      1. 可以以字节、字或数据块为基本单位
      2. DMA控制器通过“循环”输入输出数据
    3. 后处理:需要CPU
      1. 传送完成,DMA控制器向CPU发送中断请求
      2. CPU执行中断处理
        1. 校验数据
        2. 测试传送过程是否出错
        3. 是否继续传送
    4. 与中断方式的区别
      1. 响应时间
        1. 中断:每条指令执行周期后的中断周期
        2. DMA:每个机器周期结束后,CPU不占用总线即可响应
      2. 优先级:DMA请求优先级高于中断请求
      3. DMA方式只负责传送数据,中断方式有异常处理能力
      4. DMA方式依靠硬件实现,中断方式靠软件实现
      5. DMA不能用于键盘鼠标等需要中断现行程序、要求CPU立即响应的设备
  6. 常见问题

    1. I/O设备通过设备控制器来控制设备的具体动作
    2. 通过I/O接口与主机(总线)连接
    3. I/O指令也是机器指令的一类,格式与通用指令格式不同
    4. 鼠标也采用中断方式实现输入
    5. 打印机区分
      1. 打字原理:击打式、非击打式
      2. 能否打出汉字:点阵式、活字式
    6. 磁盘驱动器向盘片磁道写入数据时,采用串行方式写入
    7. 中断屏蔽字能改变多个中断服务执行完的次序,而不是响应次序或优先级
    8. I/O方式特点与区别
      1. 程序查询方式:CPU与外设 串行 工作,数据传送与主程序 串行 工作
      2. 中断方式:CPU与外设 并行 工作,数据传送与主程序 串行 工作
      3. DMA方式:CPU与外设 并行 工作,数据传送与主程序 并行 工作
    9. DMA方式接口电路中的中断部件,仅向CPU提出传输结束,不进行检错

to be continue

Karl 2020/12/24

你可能感兴趣的:(学习笔记,408,组成原理,考研,操作系统)