组成与系统结构-复习

组成与系统结构-复习

名词解释

  • 对阶
    • 浮点数加/减运算时,在尾数相加/减之前所进行的操作称为对阶。
    • 对阶时,需要比较两个阶的大小。阶小的那个数的尾数右移(小数点左移),阶码增加。右移一次,阶码加1,直到两数的阶码相等为止。
  • 真值
    • 机器数真正的值(即原来带有正负号的数)称为机器数的真值。
  • 机器数
    • 通常将数值数据在计算机内部编码表示的数称为机器数。
  • 机器字长
    • 一个二进制位(bit,比特)是计算机内部信息表示的最小单位。
    • 而机器字长指的是特定计算机中CPU用于定点整数运算的数据通路的宽度,通常也就是CPU内定点数运算器和通用寄存器的位数
  • 数据通路
    • 数据通路是指,指令在执行过程中数据所经过的部件以及部件之间的连接线路,主要由 ALU一组寄存器、存储器、总线等组成
    • 国内许多教科书中提到的运算器即是运算数据通路。
  • 立即寻址
    • 指令中的地址码直接给出操作数本身。
  • 直接寻址
    • 指令中的地址码给出的是操作数所在的存储单元地址,称为直接地址。
  • 间接寻址
    • 指令中的地址码给出的是操作数所在的存储单元地址所在的存储单元地址,称为间接地址。
  • 寄存器寻址
    • 指令中的地址码给出的是操作数所在的寄存器的编号。
  • 寄存器间接寻址
    • 指令中的地址码给出的是操作数所在的存储单元的地址所在的寄存器的编号。
  • 相对寻址
    • 相对寻址方式下,指令中的形式地址给出一个位移量D,而基准地址由程序计数器PC提供。即有效地址$EA=(PC)+D$。
  • 基址寻址
    • 基址寻址方式下,指令中的地址码给出一个形式地址,作为位移量,并且隐含或明显地指定一个寄存器作为基址寄存器,基址寄存器的内容和形式地址相加,得到操作数的有效地址,根据有效地址到存储器中访问,去取操作数或写运算结果。
  • 变址寻址
    • 变址寻址方式下,指令中的地址码给出一个形式地址,并且隐含或明显地指定一个寄存器作为变址寄存器,变址寄存器的内容(变址值)和形式地址相加,得到操作数的有效地址,根据有效地址到存储器中访问,去取操作数或写运算结果。
  • 中断向量
    • 每个中断源都有对应的处理程序,我们称这个处理程序为中断服务程序,其入口地址称为中断向量。
  • 向量中断
    • 是指一种识别中断源的技术或方式。识别中断源的目的就是要找到中断源对应的中断服务程序的入口地址,即获得向量地址。
  • 中断向量表
    • 所有中断(包括异常)的中断服务程序入口地址构成一个表,称为中断向量表。
    • 也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表。
  • 向量地址
    • 中断向量表或中断向量跳转表中每个表项所在的内存地址称为向量地址。
  • 结构冒险
    • 在指令流水线中,同一个部件同时被不同指令所使用的现象称为结构冒险,也称为资源冲突。
  • 数据冒险
    • 在指令流水线中,后面指令用到前面指令的结果时,前面指令的结果还未产生的现象称为数据冒险,也称为数据相关。
  • 控制冒险
    • 在指令流水线中,转移指令或异常等情况改变了程序执行的流程,而使得在目标地址产生前已被取到流水线中的指令无效的现象称为控制冒险,也称分支冒险。
  • 存储保护
    • 虚拟存储器可以实现多道程序运行,也就是说,在一个主存物理空间中同时有多个进程共存。
    • 为避免主存中多道程序的相互干扰,防止某进程出错而破坏其他进程的正确性,或某进程不合法地访问其他进程的存储器,应对每个进程进行存储保护。
  • 缺页
    • 需要访问的页不在内存中时,则发生“缺页异常”。通过检查“有效位”就可以判断是否“缺页”。
  • 页表
    • 每个进程有一个页表,记录该进程的每个页存放在主存的哪个页框中,或在辅存的哪个地方。
    • 页表中一般有装入位(有效位)、修改位、使用位、实页号等。
  • DMA 方式
    • DMA 是Direct Memory Access(直接存储器存取)的缩写。
    • 每次需要进行外设数据读写时,首先 CPU 把要传送的数据个数、数据块在内存的首址、数据传送的方向(是读还是写操作)、设备的地址等参数送给 DMA 控制器,然后发送一个命令给 DMA 接口,启动外设进行数据准备工作。在这些工作完成后,CPU 就继续进行其他工作。
    • 此时,外设和 CPU 并行工作,而 I/O 设备和主存交换数据的事情就交给了 DMA 控制器。

简答题

  • 为什么计算机内部采用二进制表示信息?既然计算机内部所有信息都用二进制表示,为什么还用到十六进制或八进制数?
    • 使用二进制原因:
      • 二进制系统只有两个基本符号:0 和 1。所以它的基本符号少,易于稳态电路的实现。
      • 二进制的编码、记数、运算等规则简单。
      • 二进制中的 0 和 1 与逻辑命题的“真”和“假”的对应关系简单,为计算机中实现逻辑运算和程序中的逻辑判断提供了便利的条件,特别是能通过逻辑门电路方便地实现算术运算。
    • 计算机内部在进行信息的存储、传送和运算时,都是以二进制形式来表示信息的。但在屏幕上或书本上书写信息时,由于二进制信息位数多,阅读、记忆不方便,而十六进制、八进制和二进制的对应关系简单,又便于阅读、记忆和书写,所以引入十六进制或八进制,使得人们在开发、调试程序和阅读机器内部代码时,能方便地用八进制或十六进制来等价表示二进制信息。
  • 常用的定点数编码方式有哪几种?通常它们各自用来表示什么?
    • 定点数是计算机中小数点固定在最左边或最右边的数,有定点整数和定点小数两种。
    • 定点数的编码方式有原码、反码、补码和移码。浮点数的尾数一般用原码小数来表示;浮点数的阶码一般用移码来表示;常用补码表示带符号整数;而反码很少被使用,只用在某些特殊场合。
  • 在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定?两者如何互制约?
    • 浮点数的精度取决于尾数的位数,数值范围取决于阶码的位数。在浮点数总位数不变的情况下,阶码位数越多,则尾数位数越少,即表示范围越大,则精度越差(数变稀疏)。
  • 一条指令中应该显式或隐式地给出寻址信息是什么?
    • 操作码:指定操作类型,如移位、加减乘除、传送等。
    • 源操作数或其地址:指出一个或多个源操作数或其地址,可以是主(虚)存地址、寄存器编号、或 I/O 端口,也可以在指令中直接给出一个立即数。
    • 结果的地址:结果所存放的地址,可以是主(虚)存地址、寄存器编号、或 I/O 端口。
    • 下一条指令地址:下一条指令存放的地址,可以是主(虚)存地址。
  • 哪些寻址方式下的操作数在寄存器中?哪些寻址方式下的操作数在存储器中?
    • 操作数在寄存器中:寄存器寻址。
    • 操作数在存储器中:直接寻址、间接寻址、寄存器间接寻址、偏移寻址(变址寻址、基址寻址、相对寻址)。
  • 基址寻址方式和变址寻址方式的作用各是什么?有何相同点和不同点?
    • 相同点:变址寻址方式和基址寻址方式的有效地址形成过程类似。
    • 不同点(两个方面):
      • 具体应用的场合不同
        • 变址寻址面向用户,可用于访问字符串、数组、表格等成批数据或其中的某些元素(变址寻址作用)。
        • 基址寻址面向系统,用于解决程序的重定位问题和短地址访问大空间的问题(基址寻址作用)。
      • 使用方式不同
        • 变址寻址时,指令中提供的形式地址是一个基准地址,位移量由变址寄存器给出。
        • 而基址寻址时,指令中给出的形式地址为位移量,而基址寄存器中存放的是基准地址。
  • RISC(精简指令集计算机) 处理器的特点有哪些?
    • 指令数目少:只包含使用频度高的简单指令。
    • 指令格式规整:寻址方式少,指令格式少,指令长度一致。
    • 采用$Load/Store$型指令设计风格:只有 Load 和 Store 指令才能访存。
    • 采用流水线方式执行指令:规整的指令格式有利于采用流水线方式执行,除$Load/Store$指令外,其他指令都只需一个或小于一个时钟周期就可完成,指令周期短。
    • 采用大量通用寄存器:编译器可将变量分配到寄存器中,以减少访存次数。
    • 采用硬连线控制器:指令少而规整使得控制器的实现变得简单,可以不用或少用微程序控制。
    • 采用优化的编译系统:指令数少有利于编译器的优化。
  • CPU 中标志寄存器的功能是什么?有哪几种基本标志?
    • 标志寄存器又称程序状态字。用于存放条件标志、控制标志,反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。
    • 6个状态标志:
      • CF(Carry Flag)——进位标志位。
      • PF(Parity Flag)——奇偶标志位。该标志位反映运算结果中1的个数是偶数还是奇数。
      • AF(Auxiliary carry Flag)——辅助进位标志位。当执行一个加法(或减法)运算,使结果的低4位向高4位有进位(或借位)时,AF=1;否则AF=0。
      • ZF(Zero Flag)——零标志位。
      • SF(Sign Flag)——符号标志位。
      • OF(Overflow Flag)——溢出标志位。
    • 3个控制标志位用来控制CPU的操作,由指令进行置位和复位。
      • DF(Direction Flag)——方向标志位。它用以指定字符串处理时的方向。
      • IF(Interrupt enable Flag)——中断允许标志位。它用来控制8086是否允许接收外部中断请求。
      • TF(Trap Flag)——跟踪标志位。它是为调试程序而设定的陷阱控制位。当该位置“1”时,8086 CPU处于单步状态,此时CPU每执行完一条指令就自动产生一次内部中断。当该位复位后,CPU恢复正常工作。
  • CPU 的基本组成和基本功能各是什么?
    • CPU 主要由数据通路控制单元(部件)组成。
      • 数据通路中包含组合逻辑单元和存储信息的状态单元。组合逻辑单元用于对数据进行处理,如加法器、ALU、扩展器(0扩展或符号扩展)、多路选择器以及总线接口逻辑等;状态单元包括触发器、寄存器等,用于对指令执行的中间状态或最终结果进行保存。
      • 控制单元也称为控制器,主要功能是对取出的指令进行译码,并与指令执行得到的条件码或当前机器的状态、时序信号等组合,生成对数据通路进行控制的控制信号。
    • CPU总是周而复始地执行指令,并在执行指令过程中检测和处理内部异常事件和外部中断请求。在此过程中,要求CPU具有以下各种功能:
      • 取指令并译码:从存储器取出指令,并对指令操作码译码,以控制CPU进行相应的操作。
      • 计算PC的值:通过自动计算PC的值来确定下一条指令地址,以正确控制执行顺序。
      • 算数逻辑运算:计算操作数地址,或对操作数进行算术或逻辑运算。
      • 取操作数或写结果:通过控制对存储器或I/O接口的访问来读取操作数或写结果。
      • 异常或中断处理:检测有无异常事件或中断请求,必要时响应并调出相应处理程序执行。
      • 时序控制:通过生成时钟信号来控制上述每个操作的先后顺序和操作时间。
  • 取指令部件的功能是什么?
    • 取指令并计算下条指令地址。
    • 下地址逻辑中,要区分是顺序执行还是转移执行。顺序执行,PC=PC+取出的指令长度;转移执行要根据当前指令是分支还是跳转指令来计算目标地址。
  • 控制器的功能是什么?
    • 对指令进行译码,将译码结果和状态/标志信号和时序信号进行组合,产生各种操作信号,即产生各条指令所需的控制信号。
    • 有两大类控制信号:CPU 内部控制信号和发送到系统总线上的控制信号。
  • 硬连线控制器和微程序控制器的特点各是什么?
    • 硬连线路控制器的优点是速度快适合于实现简单或规整的指令系统。但是,它是一个多输入/多输出的巨大逻辑网络。对于复杂的指令系统来说,其结构庞杂实现困难修改、维护不易灵活性差
    • 微程序控制器的特点是具有规整性可维护性灵活性,但速度慢
    • 为了结合两种方式的优点,很多出理解采用两者结合的方式来实现。
  • 为什么 CISC 大多用微程序控制器实现,RISC 大多用硬连线控制器实现?
    • CISC 的指令功能复杂寻址方式多指令长度可变指令格式多样。对应的硬连线控制器结构庞杂实现困难修改、维护不易灵活性差。所以适合采用微程序方式来设计控制器。
    • RISC 的指令集中只包含程序常用的指令,具有指令数目少指令格式规整采用(Load/Store)型指令风格等特点。所以适合采用硬连线方式来设计控制器。
  • 流水线方式下,一条指令的执行时间缩短还是加长了?程序执行时间是缩短了还加长了?
    • 流水线方式会延长一条指令的执行时间,但不会缩短。原因是在一条确定的流水线的流水段个数中,是以最复杂的指令执行过程所需的流水段个数为标准设计的;在确定每个流水段宽度时也是以最复杂流水段所需的宽度来设计。此外每个流水段之间的信息缓存和传递等也会增加额外开销。
    • 流水线方式可以缩短程序的执行时间,即大大增加指令执行的吞吐率。
  • 具有什么特征的指令集易于实现指令流水线?
    • 指令长度应尽量一致(定长指令字和定长操作码)使得每条指令的预取及译码操作时间完全一致,便于流水线控制
    • 指令格式尽量规整,尽量保证源寄存器的位置相同便于规划取操作数步骤,并使得对指令进行译码的同时,可以读取寄存器操作数。
    • 采用装入/存储(Load/Store)型指令风格便于利用执行运算步骤来进行地址计算,即将地址计算和运算指令的执行步骤规整在同一个周期。
  • 流水线处理器中时钟周期如何确定?单条流水线处理器的 CPI 为多少?每个时钟周期一定有一条指令完成吗?为什么?
    • 流水线的流水段个数以最复杂的指令执行过程所需的流水段个数为标准设计的;在确定每个流水段宽度时也是以最复杂流水段所需的宽度来设计。
    • 不能。理想情况下,经过若干周期后,能在每个时钟周期内执行完一条指令,即 CPI=1 但是,当程序中出现以下情况时,流水线被破坏,因而,不能达到CPI=1。
    • 原因:有多条指令的不同阶段都要用到同一个功能部件时,发生资源冲突(结构冒险),后面指令要延时执行;当程序的执行流程发生改变时,发生控制相关(控制冒险),原来按顺序取出的指令无效;当后面指令的操作数是前面指令的运行结果时,发生数据相关(数据冒险),后面指令要延时执行。此外,还有cache缺失、TLB缺失、异常和中断等的发生都会阻塞流水线的执行。
  • 为什么要在各流水段之间加寄存器?各流水段寄存器的宽度是否都一样?为什么?
    • 每两个相邻流水段之间需要设置一个流水段寄存器,用来存放前一个流水段中产生的并需要传输到其后所有流水段的信息,包括各种数据(PC、指令、立即数、运算结果、寄存器号等)和控制信号两大类信息。
    • 每个流水段功能不同,所需传递到信息也不同,因此各流水段寄存器长度也不同。
  • 计算机内部为何要采用层次化存储体系结构?层次化存储体系结构如何构成?
    • 原因:每一种单独的存储器都不是又快、又大、又便宜,为了构建这种理想的存储系统,计算机采用了一种层次化的存储体系结构。
    • 按照速度从快到慢容量从小到大价格从高到低的顺序,由近到远地将不同存储器设置在离 CPU 远近不同地地方,这样的顺序是寄存器->cache->主存->SSD或磁盘->光盘和磁带。
  • SRAM 芯片和 DRAM 芯片各有哪些特点?各自用在哪些场合?
    • 静态随机访问存储器(Static RAM,SRAM):靠触发器的双稳态的正负反馈电路存储信息,因而速度快,是非破坏性读出,但电路中元器件多,因而集成度小价格贵功耗大适合做高速小容量的半导体存储器,如高速缓冲存储器(cache)。
    • 动态随机访问存储器(Dynamic RAM,DRAM):靠电容存储电荷来保存信息。集成度高功耗小价格相对较低,是破坏性读出,读出后需要再生,而且需要定时刷新。适合做慢速大容量的半导体存储器,如主存
  • 为什么在 CPU 和主存之间引入 cache 能提高 CPU 访存效率?
    • 原因:程序执行代码和数据的存储访问具有局部性特点,包括时间局部性和空间局部性。
    • 时间局部性指某个单元在一个很短的时间段内被重复访问的可能性很大;空间局部性指某个单元被访问后其周围单元不久也将被访问的可能性很大。
    • 只要将刚被访问的单元及其邻近单元一起复制到cache中,那么,在最近一段时间内CPU访问的信息都可以在cache中访问到,而不需要访问慢速的主存。
  • 什么是页表?什么是快表(TLB)?
    • 页表:每个进程有一个页表,记录该进程的每个页存放在主存的哪个页框中,或在辅存的哪个地方。页表中一般有装入位(有效位)、修改位、使用位、实页号等。
    • 快表:用一个特殊的 cache 来跟踪记录最近用过的页表表项。因为页表表项主要用于地址转换,所以把这种特殊的 cache 称为转换后援缓冲器(Translation-Lookaside Buffer,TLB)。因为在TLB中查找页表表项速度很快,所以TLB也被称为快表。
  • 什么是 I/O 接口?I/O 接口的基本功能有哪些?按数据传送方式分有哪两种接口类型?
    • I/O 接口是用于连接主机和外设并通过接受主机命令来对外设进行控制的部件的总称。
    • 功能:
      • 数据缓冲:匹配主机和外设工作速度;
      • 错误或状态检测:是否完成、是否出错;
      • 控制和定时:协调内部资源和外设间动作的先后关系;
      • 数据格式转换:串/并行转换,数据宽度转换等。
    • 按数据传送方式分有:并行接口、串行接口。
  • CPU 如何进行设备的寻址?I/O 端口的编址方式有哪两种?各有何特点?
    • CPU 通过地址总线进行设备寻址。
    • I/O 端口一般有两种编址方式:独立编址和统一编址。
    • 独立编址将 I/O 端口和主存单元分别编号,不占用主存单元的地址空间,因而主存单元和 I/O 端口可能会有相同的编号,但地址位数大多不同,主存单元多,地址空间大,因而地址位数多;I/O 端口少,地址空间小,因而地址位数少。因为可能有相同的编号,指令中无法靠地址来区分要访问的是主存单元还是 I/O 端口,所以,需要有和访存指令不同的操作码,因此, 需要设计专门的I/O指令
    • 统一编址I/O 端口和主存单元统一编址,所以也称为存储器映射I/O (memory-mapped I/O)方式。一个地址空间分成了两部分,各在不同的地址段中,但地址的位数是相同的,可根据地址范围的不同来区分访问的是主存单元还是 I/O 端口,所以无需专门的输入输出指令
  • 什么是程序查询 I/O 方式?说明其工作原理。
    • CPU 通过执行查询程序来完成对外设的控制,实现和外设的数据传送。
    • 在查询程序中,CPU首先通过读取状态端口中的状态信息,了解接口是否已“就绪”(或“完成”),若是,就通过数据端口进行新的数据传送,并查询外设是否空闲,在外设空闲的情况下,通过发送控制信息到命令端口,然后由接口发“启动”命令送外设;如果接口没有就绪,或外设不空闲,则CPU继续查询,以等待接口就绪或外设空闲。
    • 所有信息(包括控制、数据、状态)的交换由查询程序中的I/O指令完成。
  • 什么是中断 I/O 方式?说明其工作原理。
    • 程序中断I/O方式下,CPU启动外设后,就转到另外一个程序执行,此时,外设和 CPU 并行工作。
    • 一旦外设完成任务,便发中断请求给CPU,告知CPU此次任务已经完成。此时,CPU暂停正在执行的程序,转到一个中断服务程序进行中断处理,在中断处理过程中,进行外设下一步的准备工作(例如,传送下一个要打印的数据,或者取走键盘数据或采样数据,为下次输入腾空数据缓冲寄存器,等等),最后启动外设,并回到原程序继续执行。此时,CPU和外设又能并行工作。
  • 为什么在保护现场和恢复现场的过程中,CPU 必须关中断?
    • 在保护断点和现场以及恢复断点和现场过程中,如果又有新的中断被响应,则原被保护的断点或现场就会被破坏。
    • 因而,需要一种机制能保证断点和现场的保护及恢复过程不被新的中断请求打断。
  • DMA 方式能够提高成批数据交换效率的主要原因何在?
    • DMA 方式下,CPU 只要在最初的 DMA 控制器初始化和最后处理“DMA 结束”中断时介入,而在整个一块数据传送过程中都不需要 CPU 参与,因而 CPU 用于 I/O 的开销非常小。
  • CPU 响应 DMA 请求和响应中断请求有什么区别?为什么通常使 DMA 请求具有高于中断请求的优先权?
    • DMA 方式下,向 CPU 请求的是总线控制权,要求 CPU 让出总线控制权给 DMA 控制器,由DMA控制器来控制总线完成主存和外设之间的数据交换。因此,CPU只要用完总线后就可以响应请求,释放总线,让出总线控制权。CPU 总是在一次总线事务完成后响应,因此,DMA 响应时间应该少于一个总线周期
    • 而中断方式下请求的是 CPU 时间,要求 CPU 中止正在执行的程序,转到中断服务程序去执行,通过执行中断服务程序,对中断事件进行相应的处理。CPU 总是要等到一条指令执行结束后,才去查询有无中断请求,所以响应时间少于一个指令周期的时间
    • 原因:DMA请求得不到及时响应,I/O传输数据可能会丢失。
  • 如何解决结构冒险?
    • 通过以下两种规整流水线结构的方式可以解决部分结构冒险:
      • 规定每个功能部件在每条指令执行过程中只能被使用一次。例如,每条指令只能用一次“寄存器写口”。
      • 每个功能部件只能在一个特定的流水段内被使用。例如,“寄存器写口”只能在第5个流水阶段被使用。
      • 另外,指令和数据分别存放在不同的存储器中,使得同时访问指令和数据不会引起存储器资源的结构冒险。
  • 什么是控制冒险?哪些情况下会发生控制冒险?
    • 正常情况下PC的值按顺序增量,但在执行转移类指令或发生异常和中断时,PC 的值由指令或异常/中断处理部件给岀。
    • 流水线方式下,如果在取下一条指令时,正确的下条指令地址还没有送到 PC 中,那么所取的下条指令就不是正确的,因而发生控制冒险。
    • 可以看出,如果确定下条指令地址所用时间较长,就会因为来不及在一个时钟周期内得到正确的 PC 值而发生控制冒险。通常,转移类指令会发生控制冒险,例如,分支指令(条件转移指令)要根据条件测试结果来确定 PC 的值,因而会发生控制冒险;返回指令需要从存储器中读取返回地址送PC,因而也会发生控制冒险。
作者

TIANYUZHOU

发布于

2020-12-17

更新于

2021-02-17

许可协议

评论