计算机组成原理 袁春风版 知识总结

计算机组成原理

教材 计算机组成与系统结构 袁春风著

第1章 概述

一.计算机发展历史

  1. 从第一代到第四代计算机各自的主要特点
  • 第一代采用电子管元件。ENIAC:十进制。

  • 第二代采用晶体管元件,磁芯作内存,磁鼓、磁带作外存。使用高级语言,提供了系统软件。

  • 第三代采用中小规模集成电路,半导体存储器作内存,出现了微程序控制,Cache,虚拟存储器,流水线等技术。IBM公司360系列提出了“兼容机”的概念,DEC公司PDP-8提出了总线结构。

  • 第四代采用大规模/超大规模集成电路,出现了微处理器,出现了共享存储器,分布式存储器及大规模并行处理系统等技术。

  1. 冯诺依曼结构要点,“存储程序”思想。

    • image-20230613003919955

    • “存储程序”思想: 将事先编好的程序和原始数据送入主存中;启动执行后,在不需操作人员干预下,自动完成逐条取出指令和执行指令的任务。

二.计算机系统的基本组成

  1. 现代计算机结构模型的基本构成及其执行程序(指令序列)的步骤

    image-20230613004349532

    image-20230613004618535

  2. 指令与数据

    image-20230613004643874

  3. 软件与硬件的接口界面---ISA指令集体系结构

  4. 系统软件与应用软件的概念

三.计算机系统的层次结构

  1. 现代计算机系统中从硬件、ISA,到操作系统、语言处理系统和应用程序的层次结构。

  2. 最终用户、应用程序员、系统管理员、系统程序员分别工作的层面。

    image-20230613004932112

  3. ISA涉及的主要内容

    image-20230613004957192

四. 计算机系统性能评价

  1. 响应时间,吞吐率,CPU时间,MIPS,MFLOPS,基准程序(Benchmarks)

    image-20230613005055825

    image-20230613005124029

    image-20230613005227282

    image-20230613005209551

    image-20230613005421877

    image-20230613005449751

  2. CPI的计算

    image-20230613005251067

  3. 阿姆达尔定律及简单应用

    image-20230613005524479

第2-3章 数据的表示与运算

一. 数值数据的表示

  1. 定点数的表示

    • 二进制原码、补码的表示必须搞清楚;移码表示:标准移码的偏置常数\(2^{n-1}\),它与补码的关系:最高位相反,其余位相同。

    • 无符号数表示和带符号数表示进行数据长度扩展时的差异。

image-20230611220705102 image-20230611221126053 image-20230611221150740 image-20230611221233337
  1. 浮点数表示IEEE754标准

    • 单精度32位和双精度64位的格式;偏置常数的取值。
    image-20230611221353581 image-20230611221447564 image-20230611221518797 image-20230611221541996
    • 规格化数的阶码取值范围;规格化尾数的表示(隐含位1);IEEE754浮点数几个特殊数据的表示形式:0、∞、NaN(非数)、非规格化数。
      image-20230611221945506
      image-20230611221913368
      image-20230611222006835
  2. 十进制数

    • 用ASCII码表示十进制数:前分隔数字串和后嵌入数字串两种格式表示正负号

      • (int)'0' = 48 = 30H
      • 前分隔:'+' = 2BH,'-'=2DH
      • 后嵌入:正数的最低一位数字编码不变,负数的最低一位数字编码的高4位由原来的0011变为0111
      • 缺点:占空间大,且需转换成二进制数或BCD码才能计算。
    • 用BCD码表示十进制数:正负号1100/1101,位数不等于8Bit的整数倍时需补0。

二. 非数值数据的表示

汉字的编码:输入码、内码、字模点阵码,它们分别有哪些常用编码。

三. 数据的宽度,存储和排列顺序

  1. 概念:字、字长、最低有效字节LSB、最高有效字节MSB

    • “字长”指某特定机器定点运算时数据通路的宽度。
    • “字长” = CPU内部总线的宽度,或运算器的位数,或通用寄存器的宽度。
    • “字”表示被处理信息的单位,用来度量数据类型的宽度。一般用于处理语言中,如汇编语言。字和字长的宽度可以相等,也可不等。
  2. 数据按字节存储时,多字节数据的地址涉及到数据是大端方式还是小端方式。

  3. 指令存放时大端和小端只影响指令中的多字节常数,不影响其他字段的存放顺序。

  4. 数据存储时存在边界对齐和不对齐问题,它们在存储空间和访问速度上存在差异

四. 数据的检错与纠错

了解数据检错与纠错的基本原理,知道常用的几种数据校验编码:奇偶校验码、海明校验码和循环冗余校验码。

五.串行进位加法器与并行进位加法器

1.并行进位加法器比串行进位加法器速度快的原因。

2.全先行进位加法器、局部先行进位加法器和多级先行进位加法器的区别。

六.ALU的构成

  1. 整数加减运算器的基本构成(关键:如何实现减法运算);

    image-20230612173114942

  2. ALU如何控制实现加、减、与、或等等各种功能:操作控制端(ALUop)

  3. ALU的OF、SF、CF和ZF标志信息如何产生。

    image-20230612173156375

    • 因为减法实际上计算\(a-b+2^n\),当\(c_n=1\)时,\(a-b>0\),无需借位
  4. 如何判断无符号数和带符号数加减运算时发生溢出。

    image-20230612180442876

七.定点数的加减乘法运算方法

  1. 补码、原码、移码的加减运算方法;

    • 补码:直接用整数加减部件实现

    • 原码:

      image-20230612181105483

      image-20230612181554273

    • 移码(看规则就行)

      image-20230612181659391

      image-20230612181719248

  2. 标准移码与IEEE754移码的加减运算方法的差别;

    • 见下一部分
  3. 原码一位乘法的基本步骤;

    image-20230612185046701

  4. 原码一位乘法的硬件逻辑结构;

    image-20230612185147819

八.浮点数运算

  1. 浮点数加减运算的对阶原则和方法;

    image-20230612185412261

  2. 如何计算移码表示的阶码的和与差(标准移码与IEEE754移码有什么差别)

    • 浮点加减法对阶时,求deltaE补,直接减即可

      image-20230612191238733

    • *浮点乘除法,最终结果为移码,加加129减加127

      image-20230612191724047 image-20230612191742679
  3. 尾数规格化中的右规和左规方法;尾数的舍入处理常用方法;如何判断结果溢出(上溢和下溢)。如何计算减1。

    image-20230612191839395

    image-20230612191930770

    IEEE754规定至少保留两位附加位。

  4. 全流程

    • image-20230612190443758

    • image-20230612190525456

      image-20230612190541986

      image-20230612190553274

第4-6章 指令系统,CPU,流水线

一、指令系统设计

  1. 指令结构与设计思想

    • 操作码:指定操作类型 (操作码长度:固定/可变)

    • 源操作数或其地址:一个或多个源操作数所在的地址 (操作数来源:主(虚)存/寄存器/I/O端口/指令本身)

    • 结果的地址:产生的结果存放何处(目的操作数) (结果地址:主(虚)存/寄存器/I/O端口)

    • 下一条指令地址:下条指令存放何处(下条指令地址 :主(虚)存的地址) (正常情况隐含在PC中,改变顺序时由指令给出)

      image-20230610161340649 image-20230610161817947
    • 指令格式设计的几个基本原则

      • 应尽量短

      • 要有足够的操作码位数

      • 指令编码必须有唯一的解释,否则是不合法的指令

      • 指令字长应是字节的整数倍

      • 合理地选择地址字段的个数

      • 指令尽量规整

  2. 寻址

    • 概念:指令或操作数地址的指定方式。

    • 指令中的地址码编码由操作数的寻址方式决定

    • 地址码编码的三个原则:

      • 地址码尽量短
      • 操作数存放位置灵活,空间应尽量大
      • 地址计算过程尽量简单
    • 指令的寻址方式----简单

      • 顺序执行:PC增值
      • 跳转 ( jump / branch / call / return ):与操作数的某些寻址方式相同
    • 操作数的寻址方式----复杂(想象一下高级语言程序中操作数情况多复杂)

      • 操作数来源:寄存器 / 主(虚)存 /外设端口 / 栈顶
      • 操作数结构:位 / 字节 / 半字 / 字 / 双字 / 一维表 / 二维表 /…
    • 通常寻址方式特指“操作数的寻址”

    • 八种寻址方式

      image-20230610162929405

    • 偏移寻址

      image-20230610163207292

      • 相对寻址:指令地址码给出一个偏移量(带符号数),基准地址隐含由PC给出。
        即:EA=(PC)+A (ex. MIPS’s instruction: Beq)
        可用来实现程序(公共子程序)的浮动 或 指定转移目标地址
        注意:当前PC的值可以是正在执行指令的地址或下条指令的地址

      • 基址寻址:指令地址码给出一个偏移量,基准地址明显或隐含由基址寄存器B给出。即:EA=(B)+A (ex. MIPS’s instructions: lw / sw)
        可用来实现多道程序重定位 或 过程调用中参数的访问

      • 变址寻址:指令地址码给出一个基准地址,而偏移量(无符号数)明显或隐含由变址寄存器 I 给出。

        即:EA=(I)+A
        可为循环重复操作提供一种高效机制,如实现对线性表的方便操作。

      • 自动变址:指令中的地址码A给定数组首址,变址器I每次自动加/减数组元素的长度x。
        EA=( I )+A I=( I ) ± x
        例如,X86中的串操作指令
        RISC机器不提供自动变址寻址,并将变址和基址寻址统一成一种偏移寻址方式。

  3. 操作码编码

    • 操作码的编码的两种方式

      • Fixed Length Opcodes (定长操作码编码)

        • 指令的操作码部分采用固定长度的编码
        • 例如:设操作码固定为6位,则系统最多可表示64种指令
        • 特点:译码方便,但可能有信息冗余。
      • Expanding Opcodes (扩展操作码编码,也叫变长操作码编码)

        image-20230610165542020

    • 选择依据

      • 代码长度更重要时:采用变长指令字、变长操作码
      • 性能更重要时:采用定长指令字、定长操作码
      • 变长指令字和变长操作码使机器代码更紧凑;定长指令字和定长操作码便于快速访问和译码。
  4. 条件测试方式

    image-20230610170802092

    • 无符号数A-B>0的条件:ZF=0 && CF = 0
    • 有符号数A-B>0的条件:ZF=0 && SF = OF
      • 如果OF=0,显然应该有SF=0
      • 如果OF=1,只能是上溢出,此时有SF=1
  5. 指令系统设计风格

    • 操作数指定方式

      image-20230610180347982

      image-20230610180357650

      image-20230610180430739

    • 复杂指令集计算机CISC与精简指令集计算机RISC

      image-20230610180643043

      image-20230610180658216

      image-20230610180735691

二、程序的机器级表示 :MIPS

  1. MIPS有32个32位通用寄存器,其中0号寄存器是0寄存器

    image-20230612210758910

  2. MIPS指令格式

    • 所有指令都是32位宽(字长)

    • 按字地址对齐存储,字地址为4的倍数

    • 有R型、I型和J型三种指令格式

      • R型指令

        image-20230610181958728

        image-20230610182116906

        image-20230610182210640

      • I型指令

        image-20230610182357186

        image-20230610182627814

        image-20230610182845504

      • J型指令

        image-20230610183002477

  3. 寻址方式

    image-20230610183723067

  4. 掌握MIPS计算机的R型、I型和J型三种指令格式。

(1)清楚RR型指令、移位指令、寄存器跳转指令三种类型指令格式的区别和特点;R型指令采用了什么寻址方式?

(2)I型指令可能会出现寄存器寻址、立即数寻址、相对寻址和偏移寻址(基址或变址)几种寻址方式,这些寻址方式在每条指令都会出现吗?I型指令有哪些类型的指令?(双目运算、分支、存储访问),掌握分支型和存储访问型指令的地址形成方法、双目运算型指令中对立即数的扩展方法。

(3)J型指令中会出现哪些寻址方式?掌握J和Jal两条指令的功能

  1. 汇编与反汇编

    image-20230610185112498

    image-20230610185121917

  2. 高级语言语句的汇编指令表示

    image-20230610185239409

    image-20230610185405071

    image-20230610185430674

    image-20230610185458248

    image-20230610191905010

三、单周期数据通路的设计

  1. 数据通路

    image-20230610220533758

    image-20230610220552440

  2. 操作元件

    image-20230610220723589

  3. 存储元件

    • 特点:具有存储功能,在时钟控制下输入被写到电路中,直到下个时钟到达。输入端状态由时钟决定何时被写入,输出端状态随时可以读出。

    • 定时方式:边沿触发。在时钟上升/下降沿读写。

    • Setup/Hold/Clock-to-Q

      image-20230610221042304

    • 分类:

      • 寄存器(组)

        image-20230610221209478

      • 理想存储器

        image-20230610221255364

  4. 时序控制

    image-20230610221505784

  5. 总线式数据通路

    • 单总线

      image-20230610221634551

    • 三总线

      image-20230610221710738

  6. 单周期MIPS处理器数据通路

    • 设计步骤

      image-20230611175401750

    • 取值部件

      image-20230611175445595

    • R型指令

      image-20230611175534087

      image-20230611175636186

    • I型指令

      image-20230611175707967

      image-20230611175722768

    • lw指令

      image-20230611175858596

      image-20230611180002424

    • sw指令

      image-20230611180035396

      image-20230611180731594

    • B型指令

      image-20230611180759200

      image-20230611181841802

    • 下地址部件

      image-20230611182030553

      image-20230611182055168

    • J型指令

      image-20230611182220739

      image-20230611182247223

    • 完整数据通路

      image-20230611182329301

    • 关键路径

      image-20230611182527301

    熟练掌握课件中的最基本的7条指令执行时数据通路中信息的流动过程,以及在取指令部件中的信息处理,包括元件的连接和所需要的各种控制信号的取值等。同时也能够在前述基本结构上扩展指定功能和格式的一些指令。

四、单周期控制器的设计

  1. 运算器的功能是如何控制的?

    • ALU局部控制器是为R型指令产生ALU的控制信号,其输入为func字段;
    • 主控制器产生非R型指令的所有控制信号,以及R型指令的除ALU控制信号外的其他控制信号,其输入为op字段;
    • 将主控制器产生的ALU控制信号与ALU局部控制器的输出信号通过一个多路选择器合并后作为最终的ALU控制信号。多路选择器的选择信号(R-Type)由主控制器产生。
  2. 掌握指令译码的基本原理,OP和func字段如何与指令功能对应?

    • R型指令:所有指令的op字段都为000000,各指令的func字段用来产生ALU的控制信号,决定执行的操作(加、减、逻辑与…),其它数据通路的控制信号各指令都相同(仅考虑三寄存器操作数)。
    • 其他类型指令:没有func字段,各指令的op字段不同,它产生包括ALU的所有数据通路的控制信号。
  3. 明白每个控制信号与指令译码的对应关系。

    • ALU控制信号

      image-20230611205227760

    • 总表(附数据通路)

      image-20230611205734116

      image-20230611211304533

      • RegDst: R型为rd,lw/ori为rt,不写寄存器不关心。
      • ALUSrc: R型为busB(Rb/rt), I型为立即数(ExtOP: 位运算0拓展,其他符号拓展)
      • MemtoReg:仅lw为1,add,sub,ori为0,其他为x。
      • RegWrite:add,sub,ori,lw为1,其他为0。
      • MemWrite:仅sw位1,其他为0。
      • Branch/Jump:仅beq/j为1,其他为0。
  4. 单周期CPU的周期长度是由什么指令、哪些因素决定的?

    image-20230611211234558

  5. 通过分析每条指令的执行过程,明确所传输和处理的信息的流动路径,然后根据各个部件的延时(操作元件的延迟或存储元件的三个时间setup time、hold time和clock to Q time)算出指令执行所必需的最短时间。

    • give up

五、微程序控制原理

  1. 微程序控制器的基本思想和结构

    • 仿照程序设计的方法,编制每条指令对应的微程序

    • 每个微程序由若干条微指令构成,一条微指令包含若干个微命令

    • 所有指令对应的微程序放在只读存储器中,执行某条指令就是取出对应微程序中的各条微指令,对微指令译码产生对应的微命令(即控制信号)。

    • 这个只读存储器称为控制存储器(Control Storage),简称控存CS 。

      image-20230611212502287

  2. 比较硬连线控制器和微程序控制器的优缺点。

    • 硬连线控制器
      • 优点:速度快,适合于简单或规整的指令系统,例如,MIPS指令集。
      • 缺点:设计周期长、繁琐、不灵活、不易修改和增删指令
    • 微程序控制器:简化设计、灵活、易修改、易维护,但速度慢。
  3. 指令、微程序、微指令、微命令、微操作它们之间的关系

    image-20230611212539172

  4. 了解水平型微指令和垂直型微指令的概念

    • 水平型微指令

      • 基本思想:相容微命令尽量多地安排在一条微指令中。
      • 优点:微程序短,并行性高,适合于较高速度的场合。
      • 缺点:微指令长,编码空间利用率较低,并且编制困难。
    • 垂直型微指令

      • 基本思想:一条微指令只控制一、二个微命令。

      • 优点:微指令短,编码效率高,格式与机器指令类似,故编制容易。

      • 缺点:微程序长,一条微指令只能控制一、二个操作,无并行,速度慢。

        image-20230611212921779

六、异常和中断处理

  1. 异常和中断(外部)的区别

    image-20230611213129272

    image-20230611213154803

  2. 处理机制

    image-20230611213605468

  3. 掌握计算机中对异常/中断的软件识别(MIPS计算机)和硬件识别这两种不同方式的基本过程。

    • 软件识别(MIPS采用)
      • 设置一个异常状态寄存器(MIPS中为Cause寄存器),用于记录异常原因。
      • 操作系统中有一个统一的异常处理程序,该程序按优先级顺序查询异常状态寄存器的各位,识别出异常事件。
      • 例如:MIPS中位于内核地址0x8000 0180处有一个专门的异常处理程序,用于检测异常的具体原因,然后转到内核中相应的异常处理程序段中进行具体的处理。
    • 硬件识别(向量中断)(80x86采用)
      • 用专门的硬件查询电路按优先级顺序识别异常,得到“中断类型号”,根据此号,到中断向量表中读取对应的中断服务程序的入口地址。

七、流水线数据通路和控制

  1. 单周期指令模型与流水模型的性能比较:

    • 单周期指令模型下时钟周期如何确定?

    • 流水模型下时钟周期如果确定?

    • 为什么流水线方式下单条指令执行时间不能缩短,但能大大提高指令吞吐率?

      image-20230611213936322

  2. 具有哪些特征的指令集有利于流水线执行?(四个特征)

    image-20230611214321566

  3. 能对常见的7条指令的各个流水阶段的划分及其所使用的功能部件情况进行分析。

    • give up
  4. 对于五阶段流水线数据通路,能分析7条指令执行时的各流水段寄存器存储了哪些信息。

八、流水线冒险处理

  1. 什么是流水线冒险,它分为哪些类型?

    • 在指令流水线中,当遇到某些情况使得流水线无法正确执行后续指令,而引起流水线阻塞或停顿,这个现象称为流水线冒险。
    • 根据引起冒险的原因不同,分为结构冒险、数据冒险和控制冒险三种。
  2. 结构冒险的现象是什么?如何处理结构冒险?

    • 一个部件同时被不同指令所用,即在使用硬件资源时发生了冲突。
    • 处理方法
      • 每个部件安排在特定的阶段使用
      • 将Instruction Memory (Im) 和 Data Memory (Dm)分开
      • 将寄存器读口和写口独立开来
  3. 数据冒险的现象是什么?对给出一个指令序列,能分析会在哪里产生了冒险现象。

    image-20230611215406256
    • 后面指令用到前面指令结果时,前面指令的结果还没产生。

    • 解决方法

      • 方法1:硬件阻塞(stall)

        • 控制比较复杂,需要改数据通路;指令被延迟三个时钟执行。
      • 方法2:软件插入“NOP”指令

        • 浪费三条指令的空间和时间。好处是无需修改数据通路。
      • 方法3:同一周期内寄存器组先写后读

        image-20230611215621264

      • 方法4:转发(Forwarding或Bypassing 旁路)技术(注意load-use需要一个nop)

        image-20230611215928169

      • 方法5:编译优化--调整指令顺序(不能解决所有数据冒险)

        image-20230611220052855

  4. 控制冒险的现象是什么?了解常见的四种处理方法。

    • 现象image-20230611220124763

    • 解决

      image-20230611220222653

第7章 存储器

一、存储器概述和存储器芯片

  1. 分类:

    • 随机存取存储器(RAM):每个单元读写时间一样,且与各单元所在位置无关。如:内存。
    • 顺序存取存储器:数据按顺序从存储载体的始端读出或写入,因而存取时间的长短与信息所在位置有关。例如:磁带。
    • 直接存取存储器:直接定位到读写数据块,在读写数据块时按顺序进行。如磁盘。
    • 相联存储器:按内容检索到存储位置进行读写。例如:快表。
    • 只读存储器(ROM)/读写存储器
    • 非易失(不挥发)性存储器:信息可一直保留, 不需电源维持。(如 :ROM、磁表面存储器、光存储器等)
    • 易失(挥发)性存储器: 电源关闭时信息自动丢失。(如:RAM、Cache等)
    • 静态/动态存储器。
  2. 层次结构存储系统

    • 寄存器:封装在CPU内,用于存放当前正在执行的指令和使用的数据,用触发器实现,速度快,容量小(几~几十个)

    • 高速缓存:位于CPU内部或附近,用来存放当前要执行的局部程序段和数据。用SRAM实现,速度可与CPU匹配,容量较小(几MB)

    • 内存(主存):位于CPU之外,用来存放已被启动的程序及所用的数据。用DRAM实现,速度较快,容量较大(几GB)

    • 外存:位于主机之外,用来存放暂不运行的程序、数据或存档文件。用磁表面或光存储器实现,容量大而速度慢。现在用闪存实现的电子盘也开始大量应用。

    • 内存与外存的关系。

      image-20230608210537761
  3. 半导体存储器

    image-20230608212620197
    • SRAM原理

      image-20230608212904285
    • DRAM原理

      image-20230608212940484
    • DRAM的刷新

      • 原因:动态存储器依靠栅极电容上的电荷来存储信息,无电源供电,通常只能维持几十个毫秒左右(常为64ms),为使电容上保存的信息不丢失,需定期向电容补充电荷。

      • 刷新方法:因DRAM在读操作时都需再生,故刷新即为读操作。刷新按行进行,所有芯片中的同一行同时刷新。

      • 刷新周期:从上次对整个存储器刷新结束到下次对整个存储器全部刷新一遍为止的时间间隔,也就是对某个特定行进行刷新的时间间隔。
        刷新周期取电容上数据有效保存时间的上限,一般为10ms~100ms,目前多数情况下是64ms。

      • 集中/分散/异步刷新:

        image-20230609152126615
    • SDRAM技术

      • 每步操作都在系统时钟控制下进行,有确定的等待时间(读命令开始到数据线有效的时间)CL,例如 CL=2 clks。
      • 芯片内有行缓冲,可实现突发(berst)传输,只需送入首地址,读后面的数据不需要地址传输和预充电时间,直接从行缓冲中取,每个时钟可以传一个数。
      • DDR及以后的芯片内具有从存储阵列预取多位到I/O缓冲器,利用总线时钟上升沿与下降沿各传送一次数据,即一个时钟传两次数据。
      • DDR2、DDR3、DDR4芯片内具有从存储阵列预取4位、8位和16位到I/O缓冲器,可以使总线频率是核心频率的2倍、4倍和8倍,大大提高了数据传输速度。

二、存储器容量的扩展及其与CPU的连接

  1. 存储器容量的拓展

    • 字扩展

      • 例:用16K×8位芯片扩成64K×8位存储器需几个芯片?地址范围各为什么?
      • 字方向扩展4倍,需4个芯片。
      • 每个芯片16K=214,故有14位地址。64KB=216,故总的地址共需16位。
      • 地址范围分别为:0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH
      • 地址高两位由外部译码器译码生成4个输出,分别连到4个芯片的片选信号端。
      • 地址的低14位连到各芯片作为片内地址。
      • 地址线、读/写控制线等对应相接,片选信号连译码输出。
    • 位扩展

      • 例:用4K×1位芯片构成4K×8位存储器需几个芯片?地址范围各是多少?
      • 位方向扩展8倍,字方向无需扩展。
      • 需要8个芯片,地址范围都一样:000-FFFH, 地址共12位,全部作为片内地址。
      • 芯片的地址线及读/写控制线对应相接,而数据线单独引出
    • 字位同时扩展

      • 例:16K×4位芯片构成64K×8位存储器需几个芯片,地址范围各是多少?
      • 字方向4倍、位方向2倍,8个芯片。
      • 各芯片地址范围:0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH

      系统存储容量的计算,芯片数的计算;这几种扩展方式下的芯片(组)与片选信号的地址线分配;各芯片(组)的地址范围的计算、划分。片选信号用地址信号表示的逻辑表达式。

三、高速缓冲存储器(cache)

Cache对程序员(编译器)是透明的。

  1. 三种映射

    • 直接映射

      • 主存中数据以块为单位,Cache中以行为单位,1块=1行。

      • 把主存的每一块映射到一个固定的Cache行(槽),也称模映射(Module Mapping)

      • 映射关系为:Cache行号=主存块号 mod Cache行数
        例如,设Cache有16行,则主存第100号数据应映射到Cache的第4行中。

      • 块和行都从0开始编号

      • 将主存按Cache的数据容量大小划分为多个群,群的编号从0开始。

      • 每个群的各个数据块就映射到固定的Cache行。

      • 主存块号就划分为主存群号和Cache行号两个部分、

      • 优点:实现简单,命中检测时间短,无需考虑淘汰(替换)问题

      • 缺点:不够灵活,Cache存储空间得不到充分利用,命中率低

      image-20230609161737640

      image-20230609161953977image-20230609163123216

    • 全相联映射

      image-20230609163331935

      image-20230609170835013

    • 组相联映射

      • 将Cache所有行分为\(2^k\)个组,每个主存块只能映射到Cache的一个固定组,但可选该组中的任一行。即:组间是模映射,组内是全映射。

      • 映射关系为: Cache组号=主存块号 mod Cache组数

      • 例如:假定Cache的划分为:8KB=8组x2行/组x512B/行

        ​ 主存第100块: 100 mod 8=4,映射到Cache的第4组的任意行中

      • 每组的行数称为路, 该例的映射称为2路组相联映射。

        image-20230609171154391

      • 特点:结合了直接映射和全相联映射的优点。

      • 当Cache组数为1时,就是全相联映射;当每组只有一行时,就是直接映射。

  2. 替换算法

    • 在组相联或全相联映射下,若发生Cache未命中,需从主存调入一主存块到cache,可能需要替换。

    • 过程:从主存取出一个新块。若有满足映射关系的Cache空行,将数据块写入。若满足映射关系的Cache行都已装有效数据,则必须从Cache行中替换出一个主存块。

    • 先进先出FIFO:命中率并不随组的增大而提高,FIFO不是一种栈算法。

    • 最近最少用LRU:

      • 最近用到的块在栈顶,栈底块被淘汰。

      • 是一种栈算法,它的命中率随组的增大而提高。

      • 具体实现:

        image-20230609172222163

    • 最不经常用LFU:替换掉cache中引用次数最少的行。

    • 随机替换算法(Random):常用,实验证明其性能只稍逊基于使用情况的算法。

  3. 写策略

    • Cache与主存的一致性:Cache中的内容是主存块的副本,当对Cache中的内容进行更新时,就存在Cache和主存如何保持一致的问题。当多个设备都被允许访问主存、多个CPU都带有各自的Cache而共享主存时也会出现一致性问题。

    • 两种情况

      • 写命中(Write Hit):要写的单元已经在Cache中
      • 写未命中(Write Miss):要写的单元不在Cache中
    • 两种操作方式

      • 全写(Write Through):

        • 若写命中,同时写Cache和主存单元。
        • 若写未命中,有两种处理方式:
          • 写分配(Write Allocate): 先将主存块中相应单元更新,然后将主存块装入Cache。充分利用了空间局部性,但增加了从主存读数据块Cache的开销。
          • 非写分配(Not Write Allocate): 直接写主存单元,不把主存块装入到Cache。缺点未利用空间局部性。
        • 这种方法会大大增加写操作的开销。CPI = 1 + T * Rate。可采用写缓冲法,Cache与主存间加缓存。
      • 回写(Write Back):

        • 若写命中,只写Cache不写主存。每行设一个修改位(“dirty bit-脏位”),当它被替换时才写回主存。
        • 若写不命中,通常采用写分配法。
        • 可大大降低主存带宽需求,但不及时更新Cache和主存内容,为保证一致性,控制可能很复杂。

四、虚拟存储器

  1. 分页

    • 基本思想

      • 内存被分成固定长度且比较小的存储块(页框、实页、物理页)
      • 每个进程也被划分成固定长的程序块(页、虚页、逻辑页)
      • 程序块可装到内存中可用的存储块中
      • 无需用连续页框来存放一个进程
      • 操作系统为每个进程生成一个页表(page table)
      • 通过页表实现逻辑地址向物理地址转换(Address Mapping )
    • 逻辑地址(LA): 程序中指令所用地址(进程所在地址空间),也称为虚拟地址(VA)

    • 物理地址(PA):存放指令或数据的实际内存地址,也称为实地址、主存地址。

    • 虚拟存储系统

      image-20230609181937997

      image-20230609181946636

    • 设计与原因:

      为什么页的大小比cache映射中的主存块要大得多?

      页框与虚拟页之间采用全相联映射,为什么不采用其他映射方式?

      答:缺页的开销比Cache缺失开销大得多。因此,页命中率比cache命中率更重要,采用“大页面”和“全相联”可提高页命中率。

      当发生程序或数据访问缺页时,由操作系统在主存和磁盘之间进行信息交换。为什么不直接用硬件来处理?

      答:缺页时需要访问磁盘(约几百万个时钟周期),慢,没必要用硬件实现。

      在处理页框与虚拟页的一致性问题时采用回写(write back)方式,为什么不采用全写方式?

      答:避免频繁的慢速磁盘访问操作。

      逻辑地址转换为物理地址是由硬件(CPU中的存储管理部件)完成,其中虚页号到页框号的转换是通过查表(页表或快表)实现。

      答:加快指令执行。

  2. 页表的基本结构

    image-20230609184512305

    image-20230609185629398

    • 如何区分未分配页、已分配的缓存页和已分配的未缓存页。

      • 未分配:装入位为0,存放位置为null
      • 已分配未缓存:装入位为0,存放位置为null
      • 已分配已缓存:装入位为1
    • 逻辑地址转换为物理地址的过程,异常处理

      image-20230609185807578

      image-20230609185941745

  3. 快表—TLB

    • 减少访存次数,把经常要查的页表项放到Cache中,这种在Cache中的页表项组成的页表称为TLB(Translation Lookaside Buffer) ,中文一般称为快表,或页表缓冲。

    • 快表与页表之间一般采用组相联或全相联映射。

      • TLB组相联时,虚页号被分成tag+index,index用于定位组,tag用于与组内的页表项中的tag比较。
      • TLB全相联时,没有index,虚页号需与每个tag比较。

      image-20230609190403418

  4. CPU访存的全过程

    image-20230609190558583

    image-20230609190724183

  5. 分段式与段页式

    image-20230609191016762 image-20230609191037897 image-20230609191104846

第8章 IO与总线

一、I/O设备与磁盘

  1. I/O系统性能指标:

    • 吞吐率(I/O带宽): 单位时间内从系统输入/输出多少数据
    • 响应时间: 在多长时间内完成请求的任务
  2. 外设的通用模型(抽象模型)

    image-20230606190048968
    • 通过电缆与计算机内部I/O接口进行数据、状态和控制信息的传送。电缆线中包括控制信号、状态信号和数据信号三种信号线。
    • 控制逻辑根据计算机送出的控制信息控制设备的操作,并检测设备状态送往计算机。
    • 缓冲器用于保存与计算机交换的数据信息。
    • 变换器用于实现电信号形式(内部数据)与其他形式的设备数据之间的转换。
  3. 磁盘上的数据定位(地址)

    • 磁道号、磁头号(每个盘面都对应地有一个读/写磁头)、扇区号
    • 磁盘数据的存取以块(扇区)为单位。
    • 磁盘操作包括:寻道操作、旋转等待操作(找扇区)和读写操作。
  4. 低密度与高密度磁盘

    • 低密度磁盘:各个磁道上的扇区数相同,每个磁道存储的数据量相同,内磁道的位密度比外磁道高;
    • 高密度磁盘:各个磁道上的位密度相同,各磁道存储的数据量不同,外磁道上的扇区数比内磁道多。高密度磁盘比低密度磁盘容量高很多。
  5. 磁盘容量:

    • 未格式化容量:磁盘总容量=记录面数×柱面数×内圆周长×位密度
    • 格式化容量: 磁盘数据容量=2×盘片数×磁道数/面×扇区数/磁道×512/扇区
  6. 硬盘的主要技术指标: 平均存取时间T

    • 计算:T = 平均寻道时间 + 平均旋转等待时间 + 数据传输时间(一般忽略)
    • 磁盘响应时间 = 排队延迟 + 控制器时间 + T
  7. 冗余磁盘阵列RAID

    • 基本思想:将多个独立操作的磁盘按某种方式组织成磁盘阵列(Disk Array),以增加容量。
      利用类似于主存中的多体交叉技术,将数据分散在多个磁盘上,通过这些盘并行工作来提高数据传输速度。用冗余磁盘技术来进行错误恢复以提高系统可靠性。
    • 3个特性:
      • RAID是一组物理磁盘驱动器,在操作系统下被视为一个高容量的单逻辑驱动器。
      • 数据连续或交叉地分布在一组物理磁盘上,具有高数据传输率。
      • 冗余磁盘用于存储校验信息,保证磁盘万一损坏时能恢复数据。
    • RAID不同级别的含义:表示具有上述3个特性的不同设计结构。
  8. 固态硬盘SSD

    • 采用NAND闪存芯片代替磁盘作为存储介质
    • 比磁盘速度快很多
    • 类似磁盘以区块写入和抹除的方式进行数据的读取和写入
    • 其写操作比读操作慢很多
    • 早期的SSD与主机的接口与磁盘兼容,现在的SSD采用了更快的PCI-E或M.2接口。

二、总线及系统互连、I/O接口

  1. 总线

    • 定义:总线是指在各种层次上提供部件之间的连接和交换信息的通路

    • 分类:

      • 芯片内总线: 在芯片内部各元件之间提供连接
      • 系统总线: 在系统主要功能部件(CPU 、MM和各种I/O控制器)之间提供连接。一般包括处理器总线、存储总线、I/O总线。
      image-20230606192355576 image-20230606192739603
      • 通信总线:在主机和I/O设备之间或计算机系统之间提供连接
    • 基本概念:

      • 裁决:确定哪个设备使用总线(趋势:点对点,无需裁决)

      • 总线定时:定义总线事务中的每一步何时开始、何时结束。

        分为同步(时钟信号),异步(握手信号)(趋势),半同步。

      • 并行传输:一个方向同时传输多位数据信号,故位与位需同步,慢。

        串行传输:一个方向只传输一位数据信号,无需在位之间同步,快。(趋势)

    • 性能指标

      • 总线宽度:总线中数据线的条数,决定了每次能同时传输的信息位数。
      • 总线工作频率:早期的总线通常一个时钟周期传送一次数据,工作频率等于总线时钟频率。现在有些总线一个时钟周期可以传送2次或4次数据,因此,工作频率是时钟频率的2倍或4倍。
      • 总线带宽:总线的最大数据传输率
        对于同步总线,总线带宽计算公式: B=W×F/N
        W-总线宽度;F-总线时钟频率;N-完成一次数据传送所用时钟周期数。
        F/N实际上就是总线工作频率
      • 总线传送方式
        非突发传送:每个总线事务都传送地址,一个地址对应一次数据传送。
        突发传送:即成块数据传送。突发传送总线事务中,先传送一个地址,后传送多次数据,后续数据的地址默认为前面地址自动增量。
    • 处理器总线QPI,替代了FSB

      image-20230606201232812
    • 存储器总线

      image-20230606201211922
    • I/O总线

      • 主流: PCI-Express(串行总线)

        • 两个PCI-Express设备之间以一个链路(link)相连
        • 每个链路包含多条通路(lane),可以是1,2,4,8,16
        • PCI-Express×n表示一个具有n条通路的PCI-Express链路
        • 每条通路有独立的发送和接收数据线,可同时发送和接受。
        • 每个数据字节被转换为10位信息被传输
        • PCI-Express1.0下,每条通路的发送和接受速率都是2.5Gb/s,故PCI-Express×n的带宽为:2.5Gb/s×2×n/10=0.5GB/s×n
      • I/O总线、接口、设备的关系

        image-20230606202123248
      image-20230606201925274 image-20230606202729963
  2. I/O接口

    • 定义:I/O设备控制器及其插座(如网卡、显卡、键盘适配器、磁盘控制器)

    • 5大功能

      • 数据缓冲:提供数据缓冲寄存器,以达到主机和外设工作速度的匹配。
      • 错误或状态检测:提供状态寄存器,以保存各种错误或状态信息供CPU查用。
      • 控制和定时:提供控制和定时逻辑,以接受从系统总线来的控制定时信号。
      • 数据格式转换:提供数据格式转换部件,使通过外部接口得到的数据转换为内部接口需要的格式,或在相反的方向进行数据格式转换。
      • 与主机和设备通信:上述功能通过I/O接口与主机之间、I/O接口与设备之间的通信来完成
    • I/O接口的通用结构、几大寄存器的作用

      image-20230606203135214
  3. I/O端口

    • 定义:上图

    • 两种编址方式:

      • 统一编址方式(内存映射方式)

        与主存空间统一编址,将主存空间分出一部分地址给I/O端口进行编号。(该方法是将I/O端口映射到某主存区域,故也称为“存储器映射方式”) 在这种方式下,系统使用访存指令就能够访问I/O端口。

      • 编址方式(专门的I/O指令方式)
        不和主存单元一起编号,而是单独编号,使成为一个独立的I/O地址空间。在这种方式下,系统需设置专门I/O指令来访问I/O端口,因此也称为“特殊I/O指令方式”。

三、I/O数据传送控制方式

  1. 程序直接控制方式、程序中断方式和DMA方式的各自工作过程、特点。

    image-20230606204421941
  2. 程序直接控制

    image-20230606204600666
  3. 中断

    • 中断响应:

      • 指CPU发现外部中断请求后,中止现行程序的执行,到调出中断服务程序这一过程。

      • 条件:

        ①CPU处于开中断状态。

        ②至少要有一个未被屏蔽的中断请求。

        ③当前指令刚执行完。

      • 过程:

        执行一条隐指令,来完成一次中断响应过程。具体来说,处理器做三件事:
        ① 关中断:0 => 中断允许触发器CIEN

        ② 保护断点和程序状态:PC=>EPC或堆栈,PSWR =>EPSWR或 堆栈

        ③ 识别中断源:取得中断服务程序首地址和初始PSW,分别送PC和PSWR。包括向量中断、软件查询两种方式。

        • 向量中断:从总线的数据线上取得中断类型号后得到中断服务程序首址
        • 软件查询:直接转中断查询程序image-20230606213145729
    • 中断处理过程

      image-20230606213233152

    • 多重中断和中断处理优先权的动态分配

      • 多重中断:在一个中断处理(执行中断服务程序)过程中,若有新的中断请求发生,且新中断优先级高于正在执行的中断,则中止正在执行的中断服务程序,转去处理新的中断。这种情况为多重中断,也称中断嵌套。

      • 中断优先级:包含中断响应优先级和中断处理优先级

        • 中断响应优先级:由查询程序或硬联排队线路决定的优先权,反映多个中断同时请求时选择哪个响应。

        • 中断处理优先级:当某个中断正在被处理过程中,有别的中断源的请求发生了,这时就由各中断源的中断处理优先级决定如何响应。

        • 它由正在处理的中断的中断屏蔽字来设定,可以动态调整各中断源原来的中断优先级顺序(中断响应优先级),反映该中断与其它中断之间的处理顺序关系。经典例题:

          image-20230606214805647

          image-20230606214830009

          image-20230606215008075

    • 中断响应的时点与异常处理的时点是否相同?为什么?
      在一条指令执行结束后开始查询有无中断请求,有的话立即响应,所以,一般在指令执行完时响应中断;“异常”发生在指令执行过程中,所以,不能等到指令执行完才进行异常处理。

  4. DMA

    • 基本要点

      image-20230606215658998

      image-20230606215924600

    • DMA常用的三种方式:

      • CPU停止法

        image-20230606215943992

        image-20230606220031945

      • 周期挪用法

        image-20230606220135828

      • 交替分时访问法

    • DMA传输方式的逻辑结构

      image-20230606220342624

    • DMA控制器

      DMA数据传送过程由DMA接口的控制逻辑完成,所以DMA接口也称DMA控制器。其功能为:

      • 请求。能接收外设发来的“DMA请求”信号,并能向CPU发“总线请求”信号。
      • 响应。当CPU发回“总线响应”信号后,能接管对总线的控制。
      • 发主存地址并修改。能在地址线上给出主存地址,并自动修改主存地址。
      • 根据传送方向发相应的读写信号。按不同的传送方向,在控制线上给出正确的I/O和主存的读写控制信号。
      • 确定传送数据个数。
      • 能发出DMA结束信号。引起一次DMA中断,进行数据校验等一些后处理。
    • DMA操作的三个步骤

      image-20230606220738515

      image-20230606220721670

    • DMA I/O传送方式与中断I/O传输方式的差异比较。

      image-20230606220950216

posted @ 2023-06-13 01:12  _vv123  阅读(342)  评论(0编辑  收藏  举报