当前位置: 首页 > article >正文

821 简答题整理【笔记】

本人 2022 年参加考研,当年专业课分数为 128,总分 382。硕士毕业之际,分享当年考研复习时整理的 821 历年真题,希望对备考 821 的学弟学妹有所帮助。题目和答案仅供参考,错误之处还请自己注意。

  • 备考经验请参考本人写的经验贴:2022一战上岸计算机学院电子信息经验分享
  • 填空题请参考:821 填空题整理【笔记】-CSDN博客

文章目录

  • 数据结构
  • 概述
  • 指令
  • 运算
  • 处理器
  • 存储
  • IO
  • 总线

数据结构

  • 试比较顺序存储、链式存储的优缺点。

    王道P34;天勤P23

  • 对一个有 m 个非 0 元素稀疏矩阵(n×n),求对角线元素之和,分析使用二维数组和三元组表存储该稀疏矩阵的时间复杂度和空间复杂度。
    在这里插入图片描述

概述

  • 何谓程序计数器?它有什么作用?
    在这里插入图片描述

  • 试着简述指令周期、时钟周期、存储周期及三者的关系。
    在这里插入图片描述
    在这里插入图片描述

  • 从硬件角度,简述提高计算机运算器速度和存储器速度的途径与方法。

    • 提高运算速度,可以
      • 使用主频高的 CPU
      • 增加 CPU 寄存器数目
      • 采取并行结构
    • 提高存储速度,可以
      • 使用高速器件
      • 多体交叉编址
      • 调整存储层次
      • 使用高速缓存 Cache
    • ①改进计算机的体系结构,如采用并行处理、流水线技术。
    • ②运算电路特别是加法和移位用逻辑电路的高速化。
    • ③运算方法和逻辑结构的高速化,如进位信号的快速处理。
    • ④存储系统的优化改进,如采用多模块存储器、多级 Cache 等。
    • ⑤选择高速的外围设备使之与 CPU 速度匹配,选择高效的 I/O 方式。
  • 请说明以下措施对缩短程序的响应时间、提高系统的吞吐率有何影响?

    • 程序响应时间是指作业提交到完成所花的时间,通常包括 CPU 执行时间和等待时间;吞吐率是单位时间内处理请求的数量。
    • (1) 使用更快的处理器。意为主频高的处理器,会缩短程序执行时间,从而减少程序响应时间。
    • (2) 优化编译器生成的代码使程序执行的总时钟周期数减少。缩短响应时间,提高吞吐率。

指令

  • 计算机是如何保证 CPU 能够按照程序规定的顺序执行指令的?

    • 程序的指令都是有序的
    • 指令的执行分为三个阶段:取指、分析、执行
      • 根据程序计数器 PC 的值取出指令,然后进行分析译码,再取出数据进行执行操作。
      • 执行完毕后 PC 自增,开始执行下一条指令。
      • 当遇到跳转时,会进行中断保留现场,然后执行中断操作,中断返回后再继续按照原定的顺序执行。
  • 无条件转移指令和调用指令的相同点和不同点是什么?返回指令是否需要在指令中明显地给出返回地址?

    • 相同点:都要先产生转移的目的地址,然后修改 PC 值,使计算机在新的地址处取指执行。
    • 不同点:调用指令和转移指令的区别在于子程序调用时需要保存返回地址。
    • 返回指令不需要在指令中给出返回地址,因为在调用子程序时已经将返回地址存放在某个约定的地方,返回时就根据此处存放的地址返回。
      • 约定的地方包括:寄存器、子程序的起始位置、栈顶等。
  • 在寄存器—寄存器型、寄存器—存储器型和存储器—存储器型三类指令中,哪类指令执行时间最短?哪类指令执行时间最长?为什么?

    寄存器-存储器指令的速度介于下述二者之间

img
img

  • 设计指令系统时,为什么要考虑指令功能和格式两个重要因素?
    • 指令格式与功能不仅影响机器的硬件结构,也直接影响系统软件和机器的使用范围。
    • 从指令功能而言,指令是程序员进行程序设计的最小单位,又是机器硬件能够理解并执行的语言,是设计硬件的基础。
    • 从指令格式而言,指令长度、操作码和地址码结构都直接影响计算机的
      • 速度
      • 功能强弱
      • 存储空间利用率
      • 硬件设计复杂性
      • 软件设计的方便性

运算

  • 为什么用算术逻辑运算部件(ALU)和移位器能够实现定点数和浮点数的所有加、减、乘、除运算?

    • 加法器是 ALU 中最核心的单元,其他减法、乘法、除法都可以转化为相应的加法运算和移位运算。
    • 定点乘法由左移和加法实现,定点除法由右移和加法实现,同样浮点运算也可以由定点的运算组合实现。
  • 无符号数计算时,可能会发生溢出吗?原因何在?有符号数运算结果产生溢出时,计算机是如何处理的?

    • 无符号算术运算中没有溢出,所有的无符号运算都是以 2 的 n 次方为模,n 是结果中的位数。
    • 有符号数运算结果有上溢和下溢。对于上溢,程序退出进行中断处理并报错,对于下溢系统一般按零值处理。
  • 何谓溢出?补码定点乘法是否会出现溢出?若出现,在什么情况下?

    • 溢出是指运算结果超过了数据的表示范围。通常大于机器所能表示的最大正数为上溢,小于机器所能表示的数为下溢。
    • 补码定点乘法会出现溢出。若参加运算的两个数均为定点小数,即|𝑨| ≤𝟏,|𝑩| ≤ 𝟏时,|𝑪| = |𝑨| × |𝑩| ≤ 𝟏。对于补码数据表示来说,当 A=-1,B=-1 时,C=1 这是唯一溢出的情况。
  • 何谓浮点规格化?为什么要进行浮点规格化?

    • 将非规格化浮点数,经过尾数移位和阶码调整转换为规格化浮点数的过程称为浮点规格化。
    • 规格化
      • 使得每次计算后都能获得最大有效数字;
      • 使得浮点数的表示具有唯一性;
      • 为浮点数计算和程序设计提供方便。
  • 某机字长 16 位,假定数据用定点整数补码表示,含 1 位符号位,或用浮点补码表示,阶码 6 位含 1 位符号位,尾数 10 位含 1 位符号位。是对两种数据表示简要比较。
    img

    • 在电子器件用量相同或相近的情况下,浮点数据比定点数据表示的范围大,但数据精度不及定点的高。
    • 另外,采用浮点数据表示时,阶码和尾数的划分,要根据数据范围和精度的要求综合考虑。

处理器

  • 单周期处理器的设计思想是什么?每条指令的 CPI 是否相同?其性能如何?为什么?

    • 单周期处理器执行一个指令固定地用一个时钟周期,它能使设计得到简化。

      在计算机中这种能够在一个时钟周期内完成的指令也占了大部分,如此设计也有一定的合理性。

    • 此时每条指令的 CPI 是相同的,均为 1。
    • 单周期处理器简化了设计,但在性能上做了妥协。
    • 比起多周期处理器,单周期处理器缺乏灵活性,因为不管指令复杂度如何,都需要用相同的时间去执行,造成了时间上的浪费。
  • 采用多周期控制器实现的 CPU,问在哪个时钟周期检测以下异常或中断:除数为 0、结果溢出、无效指令地址、缺页和外部中断?

    爱课程 PPT4.7 第 28 第 29 页

    • 除数为 0:译码阶段 ID

      除数为 0 肯定是在除之前发现到的,如果是在执行时检测则就太迟了,会造成系统宕机,故应当在译码的时候就检测

    • 结果溢出:执行阶段 EXE

      结果溢出必然是执行后才能发现溢出

    • 无效指令地址:取指阶段 IF

      无效指令地址则是取指时期

    • 缺页:取指阶段或访存阶段 IF、MEM

      缺页可以是指令访问主存访存时期,也可以是取指时期

    • 外部中断:写回阶段 WB

      外部中断则应该在指令执行的最后阶段,也就是写回时期

  • 如何确定指令流水线的瓶颈段?有哪些方法可以消除流水线的瓶颈段?

    • 一般是耗时最多的一段。指令流水各段长度不一的情况下,耗时较多的段将会令指令流水线无法连续不断的运行,会存在等待。
    • 消除指令流水线瓶颈的方法之一是重新设定和划分指令流水各段功能和时常,比如再次细分瓶颈段等。
  • 计算机流水线中存在哪些冒险?分别叙述消除流水线中这些冒险的方法。

    • 结构冒险:插入气泡;插入 NOP;修改指令使其延缓一个周期执行
    • 数据冒险:插入气泡;插入 NOP;转发技术;编译优化指令顺序
    • 分支冒险:插入气泡;插入 NOP;分支预测;延迟分支
  • 在 MIPS 的 5 段流水线设计时,将 CPU 中的数据存储器和指令存储器分开,可消除的流水线冒险是什么?请简述理由。

    • 可以消除结构冒险。
    • 因为在传统的五段流水线中,IF 和 MEM 的冲突经常发生,即某指令需要取指的同时,另一条指令在等待访存取操作数。由于两个操作不可同时进行,造成了流水线若干时钟周期的延迟。若分开存储,IF 和 MEM 可同时进行,避免了结构相关问题。
  • 控制器有哪两种实现方式?各有何特点?

    • 一种是组合逻辑,另一种是微程序。
      • 组合逻辑控制器速度更快。因为组合逻辑控制器由复杂的组合逻辑控制电路和一些触发器构成,速度取决于电路延迟,所以速度非常快。
      • 微程序控制器采用了存储程序原理,所以每条指令都要从控制存储器中取一次,影响了速度。
        img
  • 简述计算机控制器的功能和执行一条指令所需的步骤。

    • 控制器的基本功能是对指令流和数据流实施正确的控制。由控制器形成受控部件的控制信号,控制器控制各种动作的执行顺序。
    • 执行一条指令所需步骤:
      • 首先是取指令和分析指令。按照程序规定次序,从主存取出当前执行的指令,并送到控制器的 IR 中,对所取的指令进行分析,即根据指令中的操作码确定计算机应进行什么操作。
      • 其次是执行指令。根据指令分析结果,由控制器发出完成操作所需的一系列控制电位,以便指挥计算机有关部件完成这一操作,同时还为取下一条指令做好准备。
  • 试述微命令、微操作、微指令、微程序之间的关系。

    • 微命令是构成控制信号序列的最小单位,由控制部件向执行部件发出。
    • 微操作是执行部件接受微命令后所进行的最基本操作。微命令是微操作的控制信号,微操作是微命令控制的操作过程。对控制部件是微命令,对执行部件是微操作。
    • 微指令是一组实现一定操作功能的微命令组合,通常由二进制编码表示。
    • 微程序是由有序的微指令组成的,存放在控制存储器中。一条机器指令对应一段微程序。
  • 简述组合逻辑控制器设计的步骤。

    • 明确设计环境
    • 分析指令流程
    • 编制指令操作时间表
    • 形成微操作表
    • 进行微操作的逻辑综合
    • 产生各个微操作的逻辑线路

存储

  • 简述主存与辅存的异同点。

    • 相同点:都是用来存储信息的,且以二进制的形式读出或写入信息。
    • 不同点:
      • 主存容量小、速度快、成本高,CPU 可对其直接访问,通常为半导体存储器。
      • 辅存容量大、速度慢、成本低,CPU 不能直接对其访问,需要通道或 DMA 等 IO 方式控制读写,通常为磁表面存储器、光盘存储器。
  • 寄存器和主存都是用来存放信息的,它们有什么不同?
    img

  • 在存储器层次结构中,引入 Cache 和主存层次的目的是什么?该层由谁实现?引入主存和辅存层次的目的是什么?该层又由谁实现?

    • Cache-主存层次的引入是基于程序的局部性原理考量的,可以改善 CPU 高速和主存低速不匹配的问题。该层次是由硬件实现的。
    • 引入主存-辅存的目的是解决主存空间不足,扩展主存地址空间。该层次是由软件实现的。
      img
  • 试写出两种优化主存性能的方法,并加以说明。

    • 多级存储系统:Cache-主存系统,使用高速缓冲寄存器解决了主存和 CPU 速度不匹配的问题;主存-虚存系统,解决了主存容量问题。
    • 多模块存储器:一种是单体多字存储器,另一种是多体并行存储器。两种方案都提高了存储器的带宽,加快了存取速度。
  • 带有 TLB 和 Write Back 写策略 Cache 的 CPU 执行一条 Store 指令(向存储器写数据)时,最少需要访问几次主存?为什么?

    • 最少访存 0 次。当执行 store 指令时首先查找 TLB,然后再查找 Cache。若 Cache 命中,则在Write Back 策略下,只将对应的 Cache 行修改并标记脏位,即完成全部操作,最好的情况下不访存。
  • CPU 执行访存操作是否总是要进行虚拟地址至物理地址的转换吗?为什么?

    • 不是。
    • 有些硬件系统不支持虚拟存储,此时 CPU 所发出的地址直接就是物理地址,则不需要进行虚拟地址到物理地址的转换。
  • 替换策略是否对直接映射 Cache 的性能有影响?为什么?

    • 不影响,在直接映射的情况下,Cache 块和主存块是一一对应好的,无论何种替换算法,产生替换时替换结果都是一样的。
  • 通常 Cache 对程序员来说是透明的吗?为什么?在程序执行第一个 I/O 操作前,通常操作系统需要进行一个什么样的操作来保证存储访问的一致性?

    • Cache 对程序员来说是透明的。
    • 因为 Cache 存储器的地址变换和块替换均由硬件实现,程序员无法了解其工作过程。
    • 在执行第一个 IO 操作前,操作系统需要执行中断程序如保存断点、保存硬件的其他现场来保证存储访问的一致性。
  • 下面是一个 C 语言程序,用来计算一个数组 a 中每个元素之和。当参数 len 为 0 时,返回值应该是 0,但在执行时,却发生了存储器访问异常。请问是什么原因造成的,程序应该如何修改才能正确执行?
    img

    • len 是无符号 unsigned 类型,当 len 为 0 时,而具体执行却是 len-1,即 11……1,使得循环不断执行,最终发生越界访问,发生存储器访问异常。
    • 修改方法:将 len 声明为 int 型,或循环测试条件改为 i < len。
  • RAID 磁盘阵列的主要目的是什么?什么是条带化?RAID 盘列中,哪些采用大条区交叉分布方式?哪些采用小条区交叉分布方式?试述这两种条带化方式的优点。

    爱课程 PPT6.8 第 12 页

    • 使多块盘并行工作空间整合,提高传输速度,提高可靠性。
    • 条带化:把数据分散到多个硬盘。
    • 大条区交叉分布减少了 IO 排队时间,具有较快的 IO 响应能力。
    • 小条区交叉分布可获得较高的数据传输率。

IO

  • 中断判优有哪几种方法,试说明各自的特点。
    img

  • 程序中断与子程序调用有何区别?

    • 中断程序和正在执行的程序之间是相互独立的;子程序调用装入的子程序与 cpu 正在执行的子程序之间是同一程序的两个部分。
    • 除了软中断,通常中断都是随机产生的;子程序调用是通过子程序调用指令引起的。
    • 中断服务程序的入口地址有中断向量地址指出;子程序调用的入口地址有程序调用指令指出。
    • 调用中断服务程序和子程序都需保护断点;前者有中断隐指令完成,后者是有指令本身完成。
    • 处理中断服务程序时,对多个同时发生的中断要进行判优,而调用子程序时必没有这种操作。
  • 简述中断控制传送和 DMA 传送的区别。

    爱课程 PPT6.6 P24;王道 P290

img

  • 叙述通道传送与 DMA 传送的区别。

    • DMA 控制器是通过专门设计的硬件控制逻辑来实现对数据传送的控制。而通道实际上是一个具有特殊功能的处理器,有自己的指令和程序,通过执行一个通道程序实现对数据传送的控制,具有更强的独立处理数据输入输出能力。
    • DMA 控制器通常仅能控制一台或少数几台同类设备,而通道可以同时控制许多台同类或不同类设备。
      img
  • 说明通道命令字和指令的异同点。

    • 相同点:都是计算机中的控制信息,计算机通过他们实现数值处理或非数值处理。
    • 不同点:
      • 指令由 CPU 执行并控制,通道命令字由通道控制并执行;
      • 指令所有计算机都有,通道命令字只有计算机配置通道才有;
      • 指令可以完成复杂的任务,复杂规整完备有效。通道命令字只规定通道及其连接外设的操作等,简单且具有局限性。
  • 周期挪用 DMA 接口由哪几部分构成?各部分的功能是什么?

    • 由接口寄存器、中断传送标准接口、DMA 控制逻辑三部分组成。img
    • 接口寄存器:
      • 数据缓冲寄存器 DBR:寄存要传送的单位数据信息。
      • 地址缓冲寄存器 ABR:寄存主存缓冲区开始地址。
      • 字计数器 WC:寄存传输长度,即要交换的单位数据个数。
      • 状态寄存器 DSR:寄存设备及接口状态。
      • 设备控制寄存器 DCR:寄存 CPU 启动接口及设备有关的控制命令。
      • 设备内部地址寄存器 DAR:寄存设备内部地址。
    • 中断传输标准接口:一是当 WC 产生溢出说明一批数据传输完成或传输出现故障,由它向 CPU 发出中断请求,以便 CPU 完成 DMA 传送的结束处理;二是 DMA 传送的所有准备工作也借助它实现,如查询、启停外设、设置参数等。
    • DMA 控制逻辑:控制 DMA 的数据传送过程。由单位数据准备就绪、DMA 请求和响应等多个触发器,DMA 优先排队、DMA 向 CPU 发请求及回送命令等线路构成。
  • 简述程序中断传送接口的组成及各部分的功能。
    img

  • Windows 系统中打开一个 Word 文件的方法一般是双击鼠标左键,请问这个过程中 CPU 会处理哪些中断?

    • 点击鼠标会产生 I/O 中断;
    • 点击鼠标后打开程序,如果是第一次打开,需要从辅存调入内存中,会产生缺页中断。

总线

  • 计算机总线从规模上看,可分为哪几种?各自的功能是什么?

    • 片内总线:芯片内部设置的总线,用于完成芯片内部各功能单元的信息交换。
    • 系统总线:用于计算机内部各大功能部件的信息传输。
    • 设备总线:又称为 IO 总线,用于连接各种外部设备。
    • 通信总线:又称为外部总线,用于完成计算机间、计算机与其他系统之间的信息通信。
  • 请列举能够提高总线带宽的技术/方法。

    总线带宽 = 总线时钟频率 × 总线宽度

    • 增大总线宽度。即总线一次数据传输的位数
    • 增加总线时钟频率
    • 采用成组传输数据的方式
    • 补充:
      • 优化总线仲裁算法,减少仲裁时间
      • 采用突发传送方式,允许一次总线事务传送多个数据
  • 何谓总线控制器?它的功能是什么?

    • 总线控制器:
      • 总线系统中,用来管理“总线上设备和设备使用总线的过程”的部件。
      • 不一定是独立的控制器,其组成可以分布到总线的各个部件或各个设备上。
    • 功能如下:
      • 总线系统资源的管理:对总线资源进行分配、选择、启动等。

        连接到总线上的所有部件,如存储空间、IO 设备、通道、DMA 和中断接口等称为总线资源

      • 总线系统的定时:产生总线命令和各种定时信号。
      • 总线的仲裁:确定哪个设备获得总线使用权。
      • 总线的连接:要完成多种总线不同总线协议的转换和多条总线之间的连接。
  • 简述同步总线和异步总线的优缺点。
    img

  • 何谓集中式仲裁和分布式仲裁?有何优缺点?

    • 集中式仲裁:设置集中式的仲裁电路,连接所有总线主设备并按照某种策略选择其中的一个总线主设备获得总线使用权。
      • 优点:仲裁过程以及总线设备接口简单。
      • 缺点:
        • 仲裁电路出现故障将导致整个系统瘫痪;
        • 扩展设备需要对仲裁电路进行大的修改,难度较大。
    • 分布式仲裁:所有主设备均设置自己的仲裁电路。当主设备发出请求时,各仲裁电路根据一定的策略,共同决定总线使用权。
      • 优点:
        • 线路可靠性高,
        • 设备扩展灵活,
        • 设备接插比较随意。
      • 缺点:
        • 确定总线主设备是否在正常工作,系统需要进行超时判断;
        • 由于每个主设备需要在其接口设计仲裁电路,导致设计的复杂性加大。
  • 单总线结构存在什么缺点?存在的主要问题有哪些?解决问题的途径是什么?

    • 存在的缺点:计算机系统的所有部件,不管速度差异多大,都以总线设备的形式连接到一条总线上,且都以同等地位分时共享这条总线。
    • 存在的主要问题:
      • 多设备竞争总线使用权,降低了计算机系统的效率。
      • 多种速度差异很大的设备连接在一条总线上,整个系统性能会降低。
      • 扩展设备的能力受限,计算机系统功能也受到限制。
    • 解决问题的途径:img
  • 以单总线系统为例,简要说明一个总线主设备从与总线连接的某设备读取数据的操作过程。

    • 总线主设备发出总线使用请求,并等待获得总线控制权。
    • 经过总线控制器仲裁,对请求给出应答,表明该主设备获得总线控制权。
    • 主设备通过地址总线发出源设备的地址选择源设备,通过控制总线向源设备发出读数据的总线命令。

      该源设备是从设备

    • 从设备读出数据送到数据总线,同时发出撤销使用总线的请求,主设备从数据总线取得数据,表示设备本次使用总线完毕。
    • 总线控制器收到撤销使用总线请求信号,收回总线控制权,发出总线撤销使用应答信号并释放总线。

http://www.kler.cn/a/536472.html

相关文章:

  • 解锁高效 Web 开发新姿势:Open WebUI 安装指南
  • element-ui rate 组件源码分享
  • web直播弹幕抓取分析 signature
  • [ESP32:Vscode+PlatformIO]添加第三方库 开源库 与Arduino导入第三方库的区别
  • 如何利用Python爬虫获取商品销量详情:应对eBay反爬策略的实战指南与代码示例
  • Spring Task之Cron表达式
  • CosyVoice /F5-TTS /GPT-SoVITS /Fish-Speech 开源语音克隆与文本转语音(TTS)项目的对比整理
  • 探索前端框架的未来:Svelte 的崛起
  • Fiddler Classic(HTTP流量代理+半汉化)
  • 【AI】在Ubuntu中使用docker对DeepSeek的部署与使用
  • 11 享元(Flyweight)模式
  • 亚博microros小车-原生ubuntu支持系列:24 巡线驾驶
  • 如何导入第三方sdk | 引入第三方jar 包
  • 项目实战 —— HTTP服务器设计与实现
  • FocusAny v0.6.0 MacOS和Linux安装优化,独立窗口显示优化
  • mysql-connector-java 和 mysql-connector-j的区别
  • C语言-预处理
  • BpmnJS源码篇1:Injector 依赖注入模式的实现
  • 一、lambda表达式处理stream操作
  • 换电脑了如何快速导出vscode里的插件
  • 【C/C++算法】从浅到深学习---双指针算法(图文兼备 + 源码详解)
  • 低成本训练的突破与争议:DeepSeek R1模型的新进展
  • (2024|Nature Medicine,生物医学 AI,BiomedGPT)面向多种生物医学任务的通用视觉-语言基础模型
  • 3.Python分支和循环:if判断语句、运算符、if-else语句、while循环、for循环、break、continue
  • nuxt3中报错: `setInterval` should not be used on the server.
  • 不定参数.