【皮皮灰】最后过一轮计算机组成原理

教育   2024-12-21 18:02   广西  

CO计算机组成原理

在复习过程中,要特别注意以下重点知识点:

一、计算机系统概述

  1. 计算机系统层次结构

  • 了解计算机系统的基本组成,包括硬件和软件部分。

  • 掌握计算机硬件的基本结构,如 CPU、内存、I/O 设备等。

  • 理解软件和硬件的关系,以及它们在计算机系统中的相互作用。

  • 熟悉 “存储程序” 的工作方式,包括高级语言程序与机器语言程序之间的转换过程和程序、指令的执行过程。

  • 计算机性能指标

    • 掌握吞吐量、响应时间等概念。

    • 理解 CPU 时钟周期、主频、CPI、CPU 执行时间等指标的含义及计算方法。

    • 熟悉 MIPS、MFLOPS 等不同量级的性能指标。

    二、数据的表示和运算

    1. 进位计数制及其转换:熟练掌握不同进位计数制之间的数据转换方法。

    2. 运算方法和运算电路

    • 了解基本运算部件如加法器、算术逻辑部件(ALU)的工作原理。

    • 掌握补码加减运算器的工作方式和标志位的生成方法。

    • 理解乘除运算的基本原理和乘法除法电路的基本结构。

  • 整数的表示和运算

    • 熟悉无符号整数和带符号整数的表示与运算方法。

  • 浮点数的表示和运算

    • 掌握 IEEE754 标准下浮点数的表示方法。

    • 了解浮点数的加 / 减运算过程。

    三、存储器层次结构

    1. 存储器的分类:了解不同类型存储器的特点和用途。

    2. 层次化存储器结构:理解存储器层次结构的设计原理和优势。

    3. 半导体随机存取存储器

    • 熟悉 SRAM、DRAM 和 Flash 存储器的特点。

  • 主存储器

    • 掌握 DRAM 芯片和内存条的工作原理。

    • 了解多模块存储器的结构和特点。

    • 熟悉主存和 CPU 之间的连接方式。

  • 外部存储器

    • 掌握磁盘存储器的结构和工作原理。

    • 了解固态硬盘(SSD)的读写性能特性和磨损均衡技术。

  • 高速缓冲存储器(Cache)

    • 理解 Cache 的基本工作原理。

    • 熟悉 Cache 和主存之间的映射方式。

    • 掌握 Cache 中主存块的替换算法。

    • 了解 Cache 的写策略。

  • 虚拟存储器

    • 掌握虚拟存储器的基本概念。

    • 熟悉页式、段式和段页式虚拟存储器的基本原理,包括页表、地址转换、TLB(快表)等内容。

    四、指令系统

    1. 指令系统基本概念:了解指令系统在计算机系统中的作用。

    2. 指令格式:熟悉指令的格式和组成部分。

    3. 寻址方式:掌握不同的寻址方式及其应用场景。

    4. 数据的对齐和大 / 小端存放方式:理解数据对齐的重要性和大 / 小端存放方式的特点。

    5. CISC 和 RISC 基本概念:了解复杂指令集计算机(CISC)和精简指令集计算机(RISC)的特点和区别。

    6. 高级语言程序与机器级代码之间的对应

    • 掌握编译器、汇编器和链接器的基本概念。

    • 熟悉选择结构、循环结构和过程(函数)调用在机器级代码中的表示方法。

    五、中央处理器(CPU)

    1. CPU 的功能和基本结构:了解 CPU 的主要功能和组成部分。

    2. 指令执行过程:熟悉指令在 CPU 中的执行流程。

    3. 数据通路的功能和基本结构:掌握数据通路的作用和组成结构。

    4. 控制器的功能和工作原理:理解控制器在 CPU 中的作用和工作方式。

    5. 异常和中断机制

    • 掌握异常和中断的基本概念。

    • 了解异常和中断的分类。

    • 熟悉异常和中断的检测与响应过程。

  • 指令流水线

    • 理解指令流水线的基本概念。

    • 掌握指令流水线的基本实现方法。

    • 熟悉结构冒险、数据冒险和控制冒险的处理方法。

    • 了解超标量和动态流水线的基本概念。

  • 多处理器基本概念

    • 熟悉 SISD、SIMD、MIMD 和向量处理器的基本概念。

    • 了解硬件多线程的基本概念。

    • 掌握多核处理器(multi-core)的基本概念。

    • 熟悉共享内存多处理器(SMP)的基本概念。

    六、总线和输入输出系统

    1. 总线概述

    • 掌握总线的基本概念。

    • 了解总线的组成及性能指标。

    • 熟悉总线的事务和定时方式。

  • I/O 接口(I/O 控制器)

    • 了解 I/O 接口的功能和基本结构。

    • 掌握 I/O 端口及其编址方式。

  • I/O 方式

    • 熟悉程序查询方式的工作原理。

    • 掌握程序中断方式,包括中断的基本概念、中断响应过程、中断处理过程、多重中断和中断屏蔽的概念。

    • 了解 DMA 方式,包括 DMA 控制器的组成和 DMA 传送过程。


    408大纲知识点回顾

    一、计算机系统概述

    一、计算机系统概述

    (一)计算机系统层次结构

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

    • 计算机系统由硬件和软件两大部分组成。硬件是计算机系统的物理基础,包括中央处理器(CPU)、存储器(主存和辅存)、输入设备(如键盘、鼠标)和输出设备(如显示器、打印机)等。软件则是各种程序和数据的集合,分为系统软件(如操作系统、编译器)和应用软件(如办公软件、游戏软件)。系统软件管理和控制计算机硬件资源,为应用软件提供运行环境;应用软件则是为了满足用户的各种具体需求。

  • 计算机硬件的基本结构

    • 诺依曼结构:现代计算机大多基于冯诺依曼结构,其特点是存储程序和程序控制。计算机硬件主要包括运算器、控制器、存储器、输入设备和输出设备五大部件。运算器用于进行算术和逻辑运算;控制器负责控制计算机各部件协调工作,按照程序指令的要求自动执行操作;存储器用于存储程序和数据;输入设备将外部信息输入计算机;输出设备将计算机处理后的结果输出。

    • 相关选择题分析

      • 2018 - 12 :冯诺依曼结构计算机中数据采用二进制编码表示有多方面原因。一是二进制的运算规则简单,加法和乘法规则容易实现,如二进制加法只有 0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 10 这几种情况。二是制造两个稳态的物理器件较容易,例如可以用高电平表示 1,低电平表示 0。三是便于用逻辑门电路实现算术运算,因为逻辑门的输入输出状态可以很好地与二进制数字对应,通过组合逻辑门电路就能实现各种算术和逻辑运算。

      • 2019 - 12 :在冯诺依曼结构计算机中,指令和数据虽然都用二进制表示,但在形式上是有差别的,它们存储在存储器的不同位置,通过不同的寻址方式来区分。指令按地址访问,数据可以在指令中给出地址,通过该地址访问数据,而不是所有数据都在指令中直接给出。

  • 计算机软件和硬件的关系

    • 硬件是软件运行的基础,软件是硬件功能的扩充和延伸。软件通过硬件执行的指令来实现各种功能,而硬件的设计和性能也会影响软件的运行效率和功能实现。例如,高性能的 CPU 可以更快地执行软件中的复杂计算任务,而复杂的软件功能需要硬件提供足够的资源支持,如内存容量和速度等。两者相互依存、相互促进,共同构成完整的计算机系统。

  • 计算机系统的工作原理

    • 存储程序的工作方式:这是冯诺依曼结构计算机的核心工作原理。程序和数据预先存储在存储器中,计算机在运行时,控制器从存储器中取出指令,分析指令的操作码和操作数地址,然后根据操作码的要求,控制运算器等部件完成相应的操作,操作过程中所需的数据也从存储器中读取。这种方式使得计算机能够自动地、连续地执行程序,实现各种复杂的任务。

    • 高级语言程序与机器语言程序之间的转换:高级语言(如      CJava 等)编写的程序便于人类理解和编写,但计算机硬件只能识别机器语言(由 0 1 组成的指令代码)。因此,需要通过编译器将高级语言程序转换为汇编语言程序,再通过汇编器将汇编语言程序转换为机器语言程序。这个过程涉及语法分析、语义理解、代码生成等多个复杂的步骤。

    • 程序和指令的执行过程:程序由一系列指令组成。在执行程序时,CPU 首先从内存中读取第一条指令,将其放入指令寄存器中,然后对指令进行译码,确定操作码和操作数地址。接着,根据操作数地址从内存或寄存器中读取操作数,将操作数送到运算器进行运算。运算结果根据指令要求存储到指定的位置(内存或寄存器)。之后,CPU 按照程序计数器(PC)的指示,读取下一条指令,重复上述过程,直到程序执行完毕。

    • 相关选择题分析2022 -      20 题考查了将高级语言源程序转换为可执行目标文件的主要过程,即预处理(处理宏定义、头文件包含等)、编译(将高级语言转换为汇编语言)、汇编(将汇编语言转换为机器语言)、链接(将多个目标文件和库文件链接成一个可执行文件)。

    (二)计算机性能指标

    1. 吞吐量和响应时间

    • 吞吐量:指单位时间内系统处理的请求数量或数据量。例如,在网络服务器中,吞吐量可以衡量服务器在单位时间内能够处理的客户端请求数量;在存储系统中,吞吐量表示单位时间内能够读写的数据量。吞吐量受到硬件性能(如 CPU 速度、存储设备读写速度)、软件效率(如操作系统调度算法、应用程序算法)和系统架构(如并行处理能力)等多种因素的影响。

    • 响应时间:是从用户发出请求到系统完成该请求并返回结果所经历的时间。它包括硬件处理时间、软件处理时间、数据传输时间等多个部分。例如,在数据库查询系统中,响应时间是从用户提交查询请求到系统返回查询结果所花费的时间,这对于用户体验至关重要,响应时间越短,系统的实时性和交互性越好。

  • CPU 时钟周期、主频、CPICPU 执行时间

    • CPU 时钟周期:是 CPU 工作的最小时间单位,它是由 CPU 的时钟脉冲信号决定的。一个时钟周期内,CPU 可以完成一些基本的操作,如读取指令、进行简单的运算等。时钟周期的长度与 CPU 的性能密切相关,较短的时钟周期意味着 CPU 能够更快地执行指令。

    • 主频:指 CPU 的时钟频率,是      CPU 每秒内产生的时钟脉冲次数,单位是赫兹(Hz)。例如,1GHz 的主频表示 CPU 每秒产生 10 亿个时钟脉冲。主频越高,CPU 的运算速度通常越快,但主频不是衡量 CPU 性能的唯一指标,还需要考虑 CPI 等因素。

    • CPI(每条指令平均时钟周期数):表示执行一条指令所需的平均时钟周期数。它反映了指令集的复杂程度和 CPU 的设计效率。不同类型的指令可能有不同的 CPI,例如,简单的算术运算指令可能只需要 1 个时钟周期,而复杂的浮点运算指令可能需要多个时钟周期。

    • CPU 执行时间:用于衡量      CPU 执行一段程序所花费的时间,可以通过公式 “CPU 执行时间 = 指令条数 ×CPI× 时钟周期来计算。这个指标综合考虑了程序的规模(指令条数)、指令的复杂程度(CPI)和 CPU 的时钟频率(时钟周期的倒数)。

    • 相关选择题分析

      • 2017 - 12

      • 2019 - 16

      • 2022 - 12

      • 2023 - 12

  • MIPSMFLOPSGFLOPSTFLOPSPFLOPSEFLOPSZFLOPS

    • 这些都是衡量计算机性能的指标,主要用于衡量计算机的运算速度,特别是在处理整数(MIPS - 每秒百万条指令)和浮点数(MFLOPS - 每秒百万次浮点运算,以及更高量级的 GFLOPSTFLOPS 等)运算方面。它们可以帮助用户在比较不同计算机系统或处理器时,直观地了解其运算性能的差异。例如,在科学计算、图形处理等领域,浮点数运算性能是非常重要的指标,GFLOPS 级别的计算机更适合处理大规模的科学计算任务。


  • 二、数据的表示和运算


    二、数据的表示和运算

    1. 进位计数制及其数据之间的相互转换

    • 知识点:需要熟练掌握不同进位计数制(如二进制、十进制、十六进制等)之间的转换方法。包括整数部分和小数部分的转换,如二进制转十进制是按位权展开相加,十进制转二进制可以用除 2 取余法(整数部分)和乘 2 取整法(小数部分)。不同进制之间的转换在计算机底层数据存储和处理以及程序调试等场景经常用到。


    2. 定点数的编码表示

    • 知识点

      • 原码、反码和补码:原码是符号位加上真值的绝对值;反码是正数的反码与原码相同,负数的反码是在原码的基础上,符号位不变,其余各位取反;补码是正数的补码与原码相同,负数的补码是在反码的基础上加 1。在计算机中,带符号整数通常用补码表示,因为补码可以将减法运算转换为加法运算,简化了计算机的运算电路。

      • 范围表示对于 n 位的定点数,其表示范围因编码方式和是否有符号而不同。如 n 位无符号整数范围是,n 位有符号整数补码表示范围是

    • 相关选择题分析

      • 2018 - 13 :先将给定的机器数转换为十进制来确定 x y 的值。

      • 2019 - 13 :将无符号短整型 65535FFFFH)赋值给有符号短整型

      • 2021 - 13 :先将机器数转换为十进制

      • 2022 - 13 32 位补码所能表示的整数范围是,这是由补码的定义和位长决定的。

      • 2023 - 13 :先求 - 8190 的绝对值8190 的二进制表示,再根据补码规则得到机器数。

      • 2024 - 12 32777 超出了短整型的范围,短整型范围是 - 32768 32767,将 32777 赋值给短整型会发生溢出,得到 - 32759,再赋值给整型 j 时,j 的值为 - 32759

    (二)运算方法和运算电路

    1. 基本运算部件:加法器、算术逻辑部件(ALU

    • 知识点

      • 加法器:是实现加法运算的基本电路,它可以对两个二进制数进行逐位相加,并考虑进位。半加器用于计算本位的和,全加器除了本位和还考虑来自低位的进位。多个全加器级联可以构成多位加法器。

      • 算术逻辑部件(ALU:是计算机中进行算术和逻辑运算的核心部件。它可以执行加法、减法、乘法、除法等算术运算,以及与、或、非、异或等逻辑运算。ALU 的操作通常由控制信号决定,这些控制信号选择要执行的具体运算,并将运算结果输出。

    • 相关大题分析

      • 2020 - 43

        • 第一问,因为乘法可以通过加法和位移运算来实现,例如将乘法转换为多个加法和移位操作的组合(如将看作是 y x 相加,通过循环加法和移位来实现乘法)。

        • 第二问,控制逻辑的作用是根据乘法指令的要求,协调 ALU、位移器、寄存器之间的操作顺序和数据传输,例如控制 ALU 进行加法或移位操作的次数、选择数据源和目的寄存器等。

        • 第三问,没有乘法指令时执行时间最长,因为需要用加法和位移指令来模拟乘法,指令数量多;使用阵列乘法器实现的乘法指令执行时间最短,因为阵列乘法器可以在一个时钟周期内完成乘法运算。

        • 第四问,计算乘积的 2n 位结果,根据溢出判断规则判断是否溢出。对于无符号整数乘法,当仅取低 n 位作为结果时,如果 2n 位乘积的高 n 位不为 0,则表示溢出。

      • 2022 - 43

        • 第一问,根据ALU 的运算规则和标志位的定义,通过 AB F 的最高位来确定符号标志 SF 和溢出标志 OF 的逻辑表达式。例如,对于加法运算,当最高位进位和次高位进位不同时产生溢出。

        • 第二问,暂存器 Y Z 用于临时存储数据,起到缓冲和数据暂存的作用,例如在数据通路中,暂时保存从寄存器或其他部件读取的数据,等待 ALU 进行运算。

        • 第三问,根据寄存器编号的位数确定通用寄存器的数量,rs rd 通常来自指令寄存器,rd 应连接多路选择器,用于选择写入数据的寄存器。

        • 第四问,取指令阶段的控制信号序列包括发出主存读信号、将读取的数据写入 MDR 等。由于从发出主存读命令到数据传送到 MDR 需要 5 个时钟周期,所以取指令阶段至少需要 5 个时钟周期。

        • 第五问,控制信号由控制器产生,寄存器的输出信号如指令寄存器(IR)、标志寄存器(FR)等会连接到控制器的输入端,用于提供指令信息和运算状态信息。

      • 2024 - 43

        • 第一问,根据指令格式中寄存器编号的位数确定寄存器数量,shamt 5 位是因为要满足对 32 位数据进行不同位移位数的左移操作范围。

        • 第二问,执行add 指令时,控制信号 ALUBsrc 的取值根据指令要求确定(通常是从寄存器 rs2 读取数据作为 ALU 的一个输入)。计算 ALU 输出端 EOF CF 的结果,根据无符号整数加法的溢出判断规则(如进位标志 CF)判断溢出。

        • 第三问,执行slli 指令时,EXT 可零可一是因为逻辑左移操作不涉及符号扩展,零扩展和符号扩展都不会影响结果。

        • 第四问,执行lw 指令时,根据指令功能和数据通路要求确定控制信号 ExtALUctr 的取值,例如 Ext 用于扩展偏移量,ALUctr 用于控制地址计算的加法操作。

        • 第五问,通过指令格式的编码规则判断指令类型。根据给定的指令和寄存器内容,计算读取数据的存储地址。

    2. 加减运算:补码加减运算器,标志位的生成

    • 知识点

      • 补码加减运算器:在补码运算中,加法和减法可以统一用加法器来实现。对于加法,直接将两个补码相加;对于减法,将减数取补码后与被减数相加。这样可以简化运算电路。

      • 标志位生成:在运算过程中会产生一些标志位,如进位标志 CFCarry Flag)、溢出标志 OFOverflow Flag)、符号标志 SFSign Flag)等。CF 表示最高位是否有进位或借位;OF 表示运算结果是否超出了有符号数的表示范围;SF 表示结果的符号。这些标志位对于后续的条件判断和程序流程控制非常重要。

    • 相关选择题分析

      • 2018 - 19 :先将补码转换为十进制进行减法运算,

      • 2023 - 16

    3. 乘除运算:乘除运算的基本原理,乘法除法电路的基本结构

    • 知识点

      • 乘法运算基本原理:可以通过移位和加法来实现。例如,对于二进制乘法,将乘数逐位与被乘数相乘,根据乘数的位值决定是否将被乘数移位后相加。从硬件电路角度,有阵列乘法器等结构,阵列乘法器通过并行的方式实现乘法运算,能够在一个时钟周期内完成乘法,但硬件复杂度较高;也可以用 ALU 和位移器来实现乘法,通过多次移位和加法操作,这种方式速度相对较慢。

      • 除法运算基本原理:类似于乘法的逆运算,通过减法和移位来实现。在计算机中,除法运算相对复杂,硬件实现也有多种方式,如恢复余数法和不恢复余数法等。

    • 相关选择题分析2024 -     15 题,选项 D 是错误的,两个变量的乘运算可以编译转换为位移及加法等指令的循环实现,例如通过循环累加被乘数的移位结果来实现乘法。

    4. 移位运算

    • 知识点

      • 逻辑移位:逻辑左移是将二进制数整体向左移动,低位补 0;逻辑右移是将二进制数整体向右移动,高位补 0。逻辑移位主要用于无符号数的位操作,如数据的格式转换、位扩展等。

      • 算术移位:算术左移和逻辑左移类似,但算术右移时,对于有符号数,为了保持符号不变,高位补符号位。算术移位用于有符号数的乘除运算等场景,通过移位可以快速实现乘 2 或除 2 的操作。

    • 相关选择题分析2018 -     16 题,整数 x 的机器数为 1101 1000,逻辑右移 1 位得到 0110 1100,算术右移 1 位得到 1110 1100

    (三)整数的表示和运算

    • 知识点

      • 无符号整数的表示与运算:无符号整数所有位都用于表示数值大小,范围是从 0 到(n 为位数)。运算规则比较简单,加法和减法可能产生进位或借位,乘法和除法结果也不会出现符号问题。

      • 带符号整数的表示与运算:包括原码、反码和补码表示。运算时要考虑符号位,特别是加法和减法运算可能会产生溢出,需要通过标志位来判断溢出情况。乘法和除法运算也需要根据补码规则进行处理。

    (四)浮点数的表示和运算

    1. 浮点数的表示(IEEE754 标准)

    • 知识点

      • IEEE754 标准格式:由符号位(S)、指数位(E)和尾数位(M)组成。单精度浮点数(32 位)中,1 位符号位,8 位指数位,23 位尾数位;双精度浮点数(64 位)中,1 位符号位,11 位指数位,52 位尾数位。

      • 规格化表示:通过调整指数和尾数,使尾数的最高位为 1(除了特殊情况如 0 和非数 NaN),这样可以提高浮点数的表示精度。

      • 特殊值表示:包括 0、无穷大(和)和非数(NaN)等特殊情况的表示方法。

    • 相关选择题分析

      • 2018 - 14 IEEE 754 单精度浮点格式中,最小的规格化正数是,因为规格化时尾数最小为 1.0,指数最小为 - 126。

      • 2020 - 13 :将机器数 C800      0000H 根据 IEEE 754 标准转换为十进制,先确定符号位、指数位和尾数位,再计算得到可能的值。

      • 2021 - 14 IEEE754 浮点格式不能精确表示所有小数,1.2 不能用其精确表示,因为在二进制转换过程中会出现无限循环小数的情况。

      • 2022 - 14 :先将 - 0.4375 转换为二进制小数,再根据 IEEE754 单精度浮点数的格式要求,确定符号位、指数位和尾数位,最后转换为十六进制机器数。

      • 2023 - 14 :同样根据 IEEE754 单精度浮点数的格式,将机器数 8020 0000H 进行解析,得到浮点数的值。

      • 2024 - 14 :根据 a β 的取值范围,选择合适的数据表示方法。a 的范围适合用 32 位整数表示,β 的范围适合用双精度浮点数表示,因为双精度浮点数能表示更大范围和更高精度的数值。

    • 相关大题分析2017 -43 题,

      • 第一问,当 n = 0 时,i 和 n 为 unsigned 型,i <= n - 1 的比较中,n - 1 会发生溢出变为最大值,导致死循环。若改为 int 型,不会出现死循环,因为 int 型的减法运算符合常规数学逻辑。

      • 第二问,计算 f1 (23) 和 f2 (23) 的返回值并转换为机器数。f1 返回值是整数计算结果,f2 返回值是浮点数计算结果,它们的机器数表示不同。

      • 第三问,f1 (24) 和 f2 (24) 返回值不相等是因为 int 型和 float 型的表示范围和精度不同,float 型在运算过程中可能会出现舍入误差。

      • 第四问,f (31) = ,但 f1 (31) 返回 - 1 是因为 int 型发生了溢出。要使 f1 (n) 返回值与 f (n) 相等,需要考虑 int 型的表示范围,找出最大的 n。

      • 第五问,根据 IEEE754 标准解析机器数 7F80 0000H 对应的浮点数的值。要使 f2 (n) 结果不溢出和精确,需要考虑 float 型的表示范围和精度,确定最大的 n。

    2. 数据大小端对齐

    • 知识点

      • 大端(Big - Endian)和小端(Little - Endian:大端方式是高位字节存于低地址,小端方式是低位字节存于低地址。在计算机存储和网络传输等场景中,数据的字节顺序很重要,不同的系统可能采用不同的字节顺序。

    • 相关选择题分析

      • 2018 - 15 :已知计算机是小端方式,对于语句 “int i = - 64;”,先求出 - 64 的补码表示,然后按照小端方式存储,得到机器代码。

      • 2020 - 14 :根据小端方式和结构体成员的存储顺序,确定 34H 所在存储单元的地址。先确定 x2 在结构体中的存储位置,再根据字节顺序找到 34H 所在的地址。

    3. 浮点数的加 / 减运算

    • 知识点

      • 浮点数加减法首先要对阶,使两个操作数的指数相同,然后进行尾数的加减运算,最后根据结果调整指数和尾数,可能还需要进行规格化处理。在对阶和运算过程中要考虑舍入问题,因为尾数的位数是有限的,可能会产生精度损失。

      • 舍入方式有多种,如向零舍入、向偶数舍入(也叫银行家舍入)等,不同的舍入方式在不同的场景下使用,以平衡精度和计算效率。

    • 对阶操作

      • 比较两个浮点数的指数大小,将指数小的那个浮点数的尾数进行移位操作,使其指数与另一个浮点数的指数相等。例如,若有浮点数 A 的指数为,尾数为,浮点数 B 的指数为(且),那么要将浮点数 A 的尾数右移位,同时调整其指数为。这个过程就是对阶,目的是让两个数在同一数量级上进行尾数的运算。

      • 对阶过程中,尾数右移会导致有效数字的丢失,可能影响运算精度。比如一个规格化的浮点数,右移尾数后,原本靠后的一些有效二进制位就被舍去了,后续的运算结果也就存在一定的误差隐患。

    • 尾数加减

      • 在完成对阶后,就可以对两个浮点数的尾数进行加或减运算了,这一步类似于定点数的加减法,不过是在已经对阶后的基础上进行。例如,两个已经对阶后的浮点数,其尾数分别为,进行加法运算就是计算(减法就是),得到一个临时的尾数结果。

      • 尾数运算同样可能产生进位或借位等情况,需要按照相应规则处理,并且要考虑运算结果是否超出了尾数所能表示的范围,如果超出可能还需要进一步处理,比如进行规格化调整。

    • 结果规格化与舍入

      • 规格化:完成尾数加减后,得到的结果可能不符合浮点数规格化的要求,需要进行规格化处理。如果尾数运算结果的最高位不是 1(对于 IEEE754 标准的规格化情况),就需要对其进行左移操作,同时指数相应减 1,直到尾数最高位为 1。例如,若得到的尾数结果是 0.01xxxx(二进制),就需要左移 1 位变为 0.1xxxx,同时指数减 1,以此保证浮点数的精度尽可能高,符合标准的表示形式。

      • 舍入:由于尾数的位数是有限的(如 IEEE754 单精度浮点数尾数只有 23 位),在对阶、尾数运算等过程中可能会出现超出尾数表示范围的情况,这时就需要进行舍入操作。向零舍入就是简单地舍去多余的位,比如要将 1.10110(二进制,假设只保留 4 位尾数)舍入,就舍去后面的 0,变为 1.1011;向偶数舍入则更复杂些,当舍去部分的最高位为 1,且舍去后尾数的最低位为 1(也就是处于中间值情况),就将尾数的最低位变为 0 使其为偶数,例如要舍入 1.101101(假设保留到小数点后 4 位),因为舍去部分最高位是 1 且舍入后 1.1011 的最低位是 1,就舍入为 1.1100。不同的舍入方式会对最终的运算结果精度产生影响,在不同应用场景中会根据需求选用合适的舍入策略。

    • 溢出判断与处理

      • 在浮点数加减法中,也存在溢出情况。如果运算后指数超出了所能表示的最大指数范围,就表示发生了溢出。比如在 IEEE754 单精度浮点数中,指数的表示范围是有一定限制的,当对阶或者运算后得到的指数值超过了这个限定范围,就会出现溢出。对于溢出情况,可能会根据系统设定将结果表示为正无穷或负无穷等特殊值,同时程序可能会进行相应的异常处理或者提示,告知用户运算出现了超出正常范围的情况。



    三、存储器层次结构

    三、存储器层次结构

    (一)存储器的分类

    • 按存储介质分

      • 半导体存储器:如 SRAMDRAMFlash 等,利用半导体特性存储数据,速度有差异,应用场景各不相同,像 CPU 缓存常用 SRAM,主存常用 DRAMU 盘等用 Flash

      • 磁表面存储器:典型的是磁盘,依靠磁性材料记录数据,存储容量大,但读写速度相对慢,常用于长期大量数据存储。

      • 光存储器:例如光盘,通过激光读写,在数据存档、软件发行等方面有应用,不过读写速度和便携性等方面在如今应用场景逐渐受限。

    • 按存取方式分

      • 随机存取存储器(RAM:可随机按地址访问存储单元,数据读写灵活,像内存就是典型的 RAM,能快速响应 CPU 对不同位置数据的读写请求。

      • 顺序存取存储器:如磁带,只能按顺序依次读写数据,读写特定位置数据时需顺序遍历前面的数据,效率低,现在多用于数据备份等对实时性要求不高的场景。

      • 直接存取存储器:像磁盘,读写时先定位大致区域(磁道等)再在附近顺序读写,兼具一定的定位和顺序读写特点,在计算机外存领域应用广泛。

    • 按在计算机系统中的作用分

      • 主存储器:与 CPU 直接交互,存放当前运行程序和数据,对计算机运行速度影响大,其性能和容量关乎系统整体性能。

      • 辅助存储器(外存储器):用于长期存储海量数据,如硬盘、SSD 等,需要时数据调入主存供 CPU 使用,扩充了计算机的存储能力。

      • 高速缓冲存储器(Cache:位于 CPU      和主存间,利用程序局部性原理,缓存常用数据和指令,减少 CPU 等待时间,显著提升系统效率。

    (二)层次化存储器的基本结构

    • 呈现金字塔结构,从顶层的寄存器(在 CPU 内部,速度极快但容量极小),到稍大容量的 Cache,再到主存储器,最底层是大容量的辅助存储器。各层速度递减、容量递增,利用程序访问的时间局部性(近期用过的数据指令可能再用)和空间局部性(访问某数据,附近数据也可能被访问),将大概率会用到的数据尽量放在高层的高速存储部件中,以平衡存储容量和访问速度,优化计算机整体性能。

    (三)半导体随机存取存储器

    • SRAM 存储器

      • 基于双稳态触发器存储数据,只要供电稳定,数据能长久保持,无需刷新电路,所以速度很快,能在一个时钟周期左右完成读写,常用于 CPU 的各级高速缓存,不过其集成度低,相同面积下存储容量小,而且制造成本高、功耗大。

    • DRAM 存储器

      • 通过电容存储电荷来表示数据,因电容漏电,需定期(一般每隔几毫秒)刷新以维持数据,集成度高,能在同等芯片面积实现更大存储容量,成本低,常用于主存(内存条),但读写速度比 SRAM 慢,刷新操作也会占用一定系统资源。

      • 相关选择题分析扩展

        • 2017 - 13 :考查基于 DRAM 芯片构成主存时,读取特定数据类型(double 型)所需存储周期数,需结合芯片编址方式、数据宽度以及数据类型的字节数等因素来综合判断。

        • 2018 - 17 :要考虑 DRAM 芯片中地址引脚数和刷新开销的平衡,不同的行列取值会影响地址译码和刷新操作的复杂度及开销,需根据给定芯片容量等条件来确定最佳的行列设置。

        • 2022 - 17 :关于内存条中 DRAM 芯片的多方面特性判断,涉及内存条总容量计算、编址方式、芯片地址引脚位数以及行缓冲区大小等内容,需对 DRAM 芯片在内存条中的应用细节有清晰认识。

    • Flash 存储器

      • 是非易失性的,断电数据不丢,用电擦除和编程方式操作数据,读写速度介于 DRAM 和磁盘之间,常用于固态硬盘、U 盘等设备,优点是能耗低、体积小、抗震好,但有写入寿命限制及写入速度相对较慢等不足,通过一些技术手段来优化其使用寿命和读写性能。

    (四)主存储器

    • DRAM 芯片和内存条:多个 DRAM     芯片组合封装成内存条插到主板上供计算机使用,内存条容量由芯片容量及组合方式决定,不同规格内存条满足不同计算机配置需求,在计算机运行中作为主存承载程序和数据。

    • 多模块存储器:采用交叉编址等多模块设计,能让 CPU 在一个存储周期内同时或轮流对多个模块操作,提高读写速度,减少等待时间,有效提升主存的数据传输带宽和整体性能。

    • 主存和 CPU 之间的连接:通过地址线、数据线和控制线相连,地址线传递访问地址,数据线传输读写数据,控制线协调读写等操作,要合理规划各线数量、连接方式以保障数据准确高效交互,满足不同计算机系统对主存的使用需求。

      • 相关选择题分析扩展

        • 2021 - 15 :依据给定的存储总线地址线、数据线情况以及字长、RAM 区范围等条件,计算所需特定规格(512×8 位)的 RAM 芯片数量,涉及地址空间划分、数据存储单位等知识点的运用。

        • 2023 - 15 :要根据 CPU 地址线数量、编址方式以及 RAM ROM 的容量分配比例、地址区域分布要求等,确定 ROM 的地址范围,考查对主存地址分配和存储区域划分的掌握程度。

    (五)外部存储器

    • 磁盘存储器

      • 由磁盘控制器、磁盘驱动器和盘片构成,盘片上划分磁道、扇区来存储数据,扇区含数据、地址和校验信息,最小读写单位通常是扇区(常见 512 字节或更大规格),格式化容量小于非格式化容量,因为格式化要占用部分空间用于文件系统管理等。

      • 相关选择题及大题分析扩展

        • 2019 - 20 :考查对磁盘存储器基本组成、扇区内容、读写单位及容量相关概念的准确理解,判断各选项描述的正误。

        • 2022 - 44 :涉及磁盘地址结构各字段名称及位数确定,需结合磁盘的磁道、扇区等存储结构来分析;计算扇区平均访问时间要考虑寻道时间、旋转延迟等因素;对于周期挪用 DMA 方式下的总线请求等问题,要清楚 DMA CPU 争用总线的处理机制及数据缓冲区大小与读写操作的关系。

    • 固态硬盘(SSD:基于闪存芯片,没有机械部件,读写靠电信号控制闪存内晶体管实现,速度比磁盘快很多,尤其随机读写性能突出,抗震性好、能耗低、启动快,但成本高且有写入寿命限制,通过技术手段保障整体性能和使用寿命,在现代计算机存储中应用越来越广泛,逐步替代部分传统磁盘的应用场景。

    (六)高速缓冲存储器(Cache

    • Cache 的基本工作原理:依据程序局部性原理,在 CPU 和主存间缓存数据和指令副本,CPU 访问时先在 Cache 中查找(命中则快速读取),未命中就从主存读取并按替换算法调入 Cache,以此提高 CPU 获取数据指令的速度,提升系统运行效率。

      • 相关选择题分析扩展

        • 2017 - 14 :通过分析给定 C 语言程序段中对数组的访问情况,判断其时间和空间局部性,像循环内对变量的重复使用体现时间局部性,对数组相邻元素顺序访问体现空间局部性。

        • 2020 - 15 :考查对 TLB       Cache 在组成、命中率影响因素、缺失处理方式及存储器类型等方面差异的准确理解,找出错误描述的选项。

      • 相关大题分析扩展

        • 2020 - 44

          • 第一问需根据主存地址位数、Cache 与主存映射方式、主存块大小等,准确计算 Cache 每行中标记、LRU 位的位数及判断是否有修改位,涉及地址划分和不同策略下的位分配。

          • 第二问要结合程序对数组的访问顺序、Cache 特性及参数,分析数据 Cache 的缺失次数,考查实际程序场景下 Cache 原理的应用。

          • 第三问描述指令从 Cache 中访问及缺失处理过程,从地址解析、查找判断到缺失时的数据调入等环节,考查对 Cache 访问机制的整体掌握。

    • Cache 和主存之间的映射方式

      • 直接映射:主存块固定映射到 Cache 特定位置,简单易实现但易冲突,不同主存块可能争用同一 Cache 位置,影响命中率。

      • 全相联映射:主存块可映射到 Cache 任意位置,灵活性高、命中率理论上较好,但硬件实现复杂,需大量比较器查找数据所在位置,成本高。

      • 组相联映射:综合前两者特点,主存和 Cache 先分组,主存块映射到某组内任意位置,平衡了性能和成本,实际应用较广。

      • 相关选择题分析扩展

        • 2022 - 16 :根据主存地址、Cache 容量、主存块大小及组相联映射方式等条件,计算 Cache 中比较器的个数和位数,涉及相关参数的换算和对映射方式的理解运用。

        • 2024 - 16 :考查在页式虚拟存储管理系统下,Cache - 主存和主存 - 外存两个层次在交换单位、替换算法、写策略、映射方式等方面的正确表述,判断错误的选项。

        • 2024 - 17 :需依据计算机的编址方式、虚拟地址和主存地址位数、页大小以及 TLB 的映射方式和表项数量等,计算 TLB 表项中标记字段的最少位数,综合多方面知识进行推导。

      • 相关大题分析扩展2019 -      46 题涉及多方面内容,在主存采用分页存储管理的背景下,不仅考查函数调用、指令跳转、寻址方式、数据溢出等程序相关问题,还关联到指令 Cache 的映射情况,如判断不同指令是否在同一页,以及分析主存地址各部分对应 Cache 的块内地址、组号、标记信息等,考查对程序执行、存储管理和 Cache 映射等知识的综合运用能力。

    • Cache 中主存块的替换算法:常见的有先进先出(FIFO)、最近最少使用(LRU)、随机替换等。FIFO 按调入顺序替换最早进入的块;LRU 依据访问频率替换近期最少使用的块,效果较好但硬件实现复杂些;随机替换则简单随机地选择块替换,命中率不太稳定,不同算法适用于不同场景,旨在合理利用 Cache 空间,提高命中率。

    • Cache 写策略

      • 写直达(Write      ThroughCPU Cache      时同时写主存,保证数据一致性,但写主存会拖慢写操作速度,不过实现简单,能确保主存数据及时更新。

      • 写回(Write      BackCPU Cache      时先不写主存,等 Cache 块要替换或特定情况才写回主存,减少主存写入次数、提高写效率,但需额外机制(如脏位)保证数据一致性,增加了管理复杂性。

      • 相关选择题分析扩展2021 -      16 题根据主存地址、Cache 数据区大小、主存块大小以及映射和写策略等条件,计算 Cache 行的最少位数,要综合考虑多方面因素对 Cache 行结构的影响。

    (七)虚拟存储器

    • 虚拟存储器的基本概念:通过软硬件结合,为用户提供比实际物理主存大得多的虚拟地址空间,让程序编写不受物理内存限制,操作系统按需将虚拟地址空间内容调入物理主存,对用户呈现出拥有大容量连续内存的效果,提升了计算机对多任务、大程序的处理能力。

    • 页式虚拟存储器

      • 基本原理:将虚拟和物理地址空间划分为固定大小的页,通过页表建立虚拟页和物理页映射关系,CPU 访问虚拟地址时经页表转换得到物理地址,这个过程可由硬件(如 MMU)加速,同时借助 TLB 缓存页表项提高转换效率。

      • 页表:存于主存,含虚拟页号、物理页号、有效位等字段,还可能有访问权限等控制信息,是实现地址转换的关键数据结构。

      • 地址转换:由硬件自动按页表查找转换,若 TLB 命中可快速完成,若缺失则需访问主存页表,会产生一定延迟,整个过程涉及多步地址解析和查找操作。

      • TLB(快表):作为高速缓存存放近期访问页表项,提高虚拟地址到物理地址转换速度,基于局部性原理减少访问主存页表次数,对提升系统性能很关键。

      • 相关选择题及大题分析扩展

        • 选择题方面(如 2019 - 14 题、2022 - 15 题、2024       - 18 题等):考查对页式虚拟存储器各环节原理、机制、相关概念及特性的准确理解,通过不同描述判断选项正误。

        • 大题方面(如       2018 - 44 题、2021 - 44 题、2023 - 43 题、2024       - 44 题等):从不同角度考查,像确定主存物理地址位数、分析 TLB Cache 的映射方式及相关参数、判断虚拟地址访问的物理地址、Cache 命中情况、页面置换、数据局部性及 Cache 命中率等,全面考查对页式虚拟存储器在复杂程序执行和存储管理场景下的综合运用能力。

    • 段式虚拟存储器:按程序逻辑结构分段,每段有不同长度,独立进行地址映射和保护,便于模块化编程、程序共享和保护,但因段长不固定易产生内存碎片,地址转换需维护段表记录各段信息,相对复杂些,在一些特定的大型程序开发和管理场景中有应用价值。

    • 段页式虚拟存储器:结合段式和页式优点,先分段再分页,兼顾了程序模块化、保护以及便于管理和地址转换的优势,但管理复杂度增加,需段表和页表共同协作完成地址映射等操作,在对程序组织和存储管理要求较高的系统中会采用这种方式来优化存储资源利用和程序运行。

    四、指令系统

    四、指令系统

    (一)指令系统的基本概念

    • 知识点

      • 指令集体系结构(ISA:是计算机软件和硬件之间的接口规范,规定了一系列内容,包括指令字格式(如指令长度、各字段的划分及编码方式等)、指令类型(像算术运算、逻辑运算、数据传送、控制转移等不同功能的指令类别)、通用寄存器个数和位数(寄存器作为 CPU 内快速暂存数据的部件,其数量和能存储的数据宽度由 ISA 定义)等,这些规定决定了程序员可以使用哪些指令以及如何编写程序来操作计算机硬件。而像 CPU 时钟周期、加法器的进位方式等更多属于硬件内部具体实现细节,不属于 ISA 规定范畴。

      • 相关选择题分析(2022 - 18 题):该题考查对指令集体系结构(ISA)规定内容的准确理解,需要区分哪些是 ISA 层面规定的与指令相关的内容,哪些是硬件实现层面的内容

    (二)指令格式

    • 知识点

      • 定长指令字与扩展编码方式:定长指令字指所有指令长度固定,便于指令的读取、译码等操作。扩展编码方式常用于操作码编码,比如对于多种指令格式(零地址、一地址、二地址等),先对操作码进行分组,不同组对应不同地址格式的指令,通过合理分配操作码位数,既能表示多种操作,又能兼顾不同地址格式指令数量的需求,有效利用指令字长空间。

      • 指令字长计算与指令数量关系:不同地址字段个数和位数会影响指令字长。例如,在计算指令字长时,要考虑操作码位数以及各地址字段位数之和,同时还要根据给定的不同类型指令(如三地址、二地址等)的数量,利用编码原理来确定操作码所需的最小位数,进而确定指令字长的最小值。

      • 相关选择题及大题分析

        • 2017 - 16 :已知三地址指令和二地址指令的数量以及每个地址字段位数,要先根据指令编码的唯一性原则,算出操作码需要占的位数,再加上地址字段的位数总和,从而得出指令字长至少应该是多少位,考查对指令编码和字长计算的掌握程度。

        • 2022 - 19 :同样基于操作码扩展编码方式,给定二地址和一地址指令的条数,按照操作码编码规则,推算出剩余的操作码组合可用于表示零地址指令的最大条数,考查对不同地址格式指令编码及数量关系的理解运用能力。

        • 2021 - 43 :围绕 16 位定长指令字展开多方面考查,涉及 ALU 宽度(与字长相关)、可寻址主存空间大小(由地址线位数决定)、指令寄存器等部件的位数确定;还包括不同指令格式下可定义的操作种类、通用寄存器个数,以及具体指令的功能分析(如根据指令编码判断功能、计算执行指令后的寄存器内容及判断溢出情况),还有寻址方式中对立即数扩展方式的判断以及不同功能指令适合的格式选择等,综合考查了指令格式相关知识在计算机整体运行和指令执行中的应用。

    (三)寻址方式

    • 知识点

      • 常见寻址方式及特点

        • 相对寻址:将程序计数器(PC)的值与指令中的偏移量相加得到操作数地址,常用于程序中的相对跳转、访问与当前指令位置有一定偏移的数据等情况,适合按下标顺序访问一维数组元素,因为可以方便地通过改变偏移量来顺序访问数组中的各个元素。

        • 寄存器寻址:操作数直接存放在指定的寄存器中,访问速度快,常用于存放临时数据、中间结果等,CPU 直接从寄存器读取数据参与运算,不需要访问内存。

        • 直接寻址:指令中直接给出操作数在主存中的地址,简单直接,但地址范围受指令中地址字段位数限制,常用于明确知道操作数在内存中固定位置的情况。

        • 变址寻址:将变址寄存器的内容与指令中给定的偏移量相加得到操作数地址,常用于按一定规律访问内存中的数据,比如在循环中按顺序访问数组元素,通过改变变址寄存器的值(如每次循环加 1),结合固定的偏移量(如数组元素大小)来依次访问数组各元素。

        • 寄存器间接寻址:指令中给出的寄存器内容是操作数在主存中的地址,需要再访问一次内存才能获取操作数,常用于通过寄存器来间接指向内存中的数据,像指针操作等情况。

      • 指令执行与部件使用:不同寻址方式在指令取数及执行过程中需要用到不同的计算机部件,例如涉及寄存器的寻址方式要使用通用寄存器组(GPRs)来获取寄存器中的值,访问内存的寻址方式需要通过存储器(Memory)读写数据,进行运算的指令还要用到算术逻辑单元(ALU),并且整个过程都离不开指令译码器(ID)对指令进行译码来确定操作类型和操作数获取方式等。

      • 相关选择题分析

        • 2017 - 15 :考查哪种寻址方式最适合按顺序访问一维数组元素,根据各种寻址方式特点,相对寻址能方便地通过相对偏移来顺序定位数组元素,所以答案为相对寻址。

        • 2018 - 18 :根据给定的数组首地址、变址寻址方式以及某次访问元素的地址,通过计算地址差值并结合数组元素类型(double 型,占用一定字节数),推算出变址寄存器进入该次循环时的内容,考查变址寻址方式下地址计算的实际应用。

        • 2019 - 17 :分析给定指令的两个源操作数的寻址方式(寄存器、寄存器间接寻址),确定在取数及执行该指令过程中需要用到的计算机部件,涵盖通用寄存器组、算术逻辑单元、存储器以及指令译码器等,考查对指令执行流程及部件协作的理解。

        • 2020 - 16 :在已知指令字格式、指令数量、寻址方式种类的情况下,对于单地址指令中的直接寻址方式,要根据相关编码和地址表示原理,计算其可寻址范围,考查对指令系统中寻址能力与各参数关系的掌握程度。

        • 2023 - 17 :考查 CPU 区分通用寄存器中存放的是操作数还是操作数地址的依据,涉及对操作数寻址方式、编码方式以及寄存器自身内容和编号等概念的理解与区分。

    (四)数据的对齐和大 / 小端存放方式

    • 知识点

      • 数据对齐:为了提高数据访问效率,计算机系统通常要求数据按照一定规则在内存中对齐存放,例如对于多字节的数据类型(如 intdouble 等),可能要求其起始地址是某个字节数(如 4 字节、8 字节等)的倍数,这样在 CPU 读取数据时,一次内存访问就能获取完整的数据,避免多次读取和拼接操作,提升运行速度。

      • / 小端存放方式

        • 大端方式:数据的高位字节存放在低地址,低位字节存放在高地址,就好像按照从高位到低位的顺序依次存放,符合人类正常的读写习惯,常用于网络协议等一些需要按照固定顺序解读数据的场景。

        • 小端方式:与大端方式相反,数据的低位字节存放在低地址,高位字节存放在高地址,在计算机内部数据存储和一些特定硬件处理上有应用优势,例如有些处理器在进行数据运算时从小端方式存储的数据中获取低位字节更方便。

      • 相关选择题分析(2019 - 15 题):根据给定的计算机采用大端方式、操作数机器数、基址寻址的形式地址以及基址寄存器内容等条件,通过地址计算和大端方式下字节存放顺序的规则,确定操作数的最低有效字节(LSB)所在的地址,考查对大端存放方式下地址与数据字节对应关系的理解和运用能力。

    (五)CISC RISC 的基本概念

    • 知识点

      • CISC(复杂指令集计算机):指令系统复杂,指令数量多、格式多样、功能丰富,一条指令可以完成较复杂的操作,可能包含多个微操作,能减少程序中的指令条数,但指令译码和执行的硬件电路复杂,执行速度相对较慢,并且由于指令长度和格式不统一,不利于指令流水线等优化技术的实施。常用于早期计算机系统,对硬件成本不太敏感、更注重编程便利性的场景。

      • RISC(精简指令集计算机):指令系统精简,指令数量少、格式规整、功能简单,大多是单周期执行的指令,指令译码和执行硬件相对简单,便于采用指令流水线等先进技术来提高 CPU 的执行效率,不过编写复杂程序时可能需要更多的指令条数。现代计算机多倾向于采用 RISC 架构或者融合了 RISC 思想进行设计,尤其在移动端等对功耗和性能要求较高的设备上应用广泛。

      • 相关选择题分析(2024 - 19 题):考查对 5 段流水线      RISC 相关特性的理解,像 stalk(可能是指流水线中的相关机制)解决数据冒险、转发(旁路)电路解决数据冒险以及通过添加 nop 指令和调整指令顺序解决数据相关等说法的正误判断,需要准确掌握 RISC 流水线中的数据处理和控制机制等知识。

    (六)高级语言程序与机器级代码之间的对应

    • 知识点

      • 编译器、汇编器和链接器的基本概念

        • 编译器:将高级语言(如 CJava 等)编写的源程序转换为汇编语言程序或者机器级代码(目标代码),在这个过程中进行语法分析、语义理解、代码优化等操作,把高级语言的抽象语句和逻辑转化为计算机硬件能直接执行的指令序列。

        • 汇编器:把汇编语言程序转换为机器级代码,主要进行汇编指令到机器指令的一对一翻译,处理诸如符号解析、地址分配等工作,生成可重定位的目标文件。

        • 链接器:将多个目标文件(可能是不同模块编译生成的)以及相关的库文件链接在一起,解决符号引用、重定位等问题,生成最终可执行的程序文件,使得程序各部分能正确协同工作,形成完整的可运行的软件。

      • 选择结构语句的机器级表示:在机器级代码中,像 if - else 这样的选择结构语句通常通过条件转移指令(如比较指令后跟着跳转指令)来实现,根据条件判断的结果决定程序是跳转到执行对应分支的代码段还是顺序执行下一条指令,涉及到对标志寄存器(如进位标志、零标志等)的设置和检测来判断条件是否成立。

      • 循环结构语句的机器级表示:例如 forwhile 等循环结构,往往会利用条件转移指令和计数器(可以是寄存器或者内存中的变量)来实现循环控制,通过不断判断循环条件是否满足来决定是继续循环执行循环体中的指令还是跳出循环,循环体中的代码可能会多次重复执行,体现了指令的重复利用和程序的局部性特点。

      • 过程(函数)调用对应的机器级表示:函数调用涉及参数传递(可以通过寄存器、栈等方式传递参数)、保存当前执行环境(如将返回地址、寄存器状态等压入栈中)、跳转到被调用函数的入口地址执行函数体代码,执行完后再恢复原来的执行环境(从栈中弹出数据恢复寄存器等)并返回调用处继续执行后续代码,整个过程涉及多个机器指令的协同操作。

      • 相关选择题及大题分析

        • 2024 - 13 :考查 CPU 能直接理解并执行的指令类型,伪指令是给汇编器等工具提供信息的,本身不是机器能直接执行的指令;微指令是用于控制 CPU 内部微操作的,相对底层;机器指令是 CPU 可直接执行的基本指令单位;汇编指令需经过汇编器转换为机器指令才能执行,所以 CPU 能直接执行的是机器指令和经过转换后的汇编指令对应的机器指令,答案为仅 III IV 选项。

        • 2017 - 44 :通过给定的 C 语言函数对应的机器级代码,判断计算机是 RISC 还是 CISC(可根据指令特点,如指令长度、功能复杂度等判断),计算函数的机器指令代码占的字节数(根据每行机器指令对应的字节数累加),分析特定指令执行过程中的标志位情况(如根据指令操作和数据计算进 / 借位标志 CF 内容),以及探讨指令在不同函数中的适用性(如能否用某指令实现相同运算)等,考查对高级语言到机器级代码转换及机器指令执行细节的理解。

        • 2019 - 45 :围绕计算阶乘的 C 语言函数的机器级代码,考查多方面内容,包括函数递归调用次数及对应的指令判断、条件转移指令的识别以及会导致程序跳转执行的指令确定、基于相对寻址方式的地址计算和对计算机存储数据大 / 小端方式的判断、函数返回值异常原因分析及程序修改、乘法运算溢出标志相关条件及异常处理指令添加等,全面考查对高级语言程序编译后机器级代码的分析解读能力。

        • 2023 - 44 :依据给定的 C 程序段对应的机器级代码,考查指令的虚拟地址确定、跳转指令的寻址方式及跳转目标地址计算、指令中操作数的寻址方式判断以及对计算机大 / 小端方式的推断、指令取指过程中是否会发生缺页异常及原因分析等,着重考查在具体程序执行场景下对机器级代码相关特性的掌握和运用能力。

    五、中央处理器(CPU)


    五、中央处理器 (CPU)

    (一)CPU 的功能和基本结构

    • 知识点

      • CPU 功能:主要包括指令控制(从主存取出指令并确定下一条指令的地址)、操作控制(指挥各部件按指令要求完成操作,如数据传送、运算等)、时间控制(控制各操作的先后顺序和时间间隔,保证各部件协调工作)、数据加工(对数据进行算术运算、逻辑运算等处理)。

      • CPU 基本结构:主要由运算器和控制器两大部分组成。运算器用于执行算术和逻辑运算,包括算术逻辑单元(ALU)等部件;控制器负责指挥和协调计算机各部件的工作,包括指令寄存器、程序计数器等部件。此外,CPU 还包含一些寄存器用于暂存数据和指令,这些寄存器与机器字长密切相关。

      • 相关选择题分析(2020 - 12 题)ALU 用于对数据进行运算,其位数通常与机器字长相同,以保证能对一个字长的数据进行完整运算;指令寄存器存储指令,其宽度一般和机器字长相同,方便存储完整指令;通用寄存器用于暂存数据,其位数也往往与机器字长一致,便于数据的处理;浮点寄存器用于处理浮点数,同样其位数通常和机器字长有关。

    (二)指令执行过程

    • 知识点

      • 取指阶段:从主存储器中取出指令,将指令存入指令寄存器。这个过程需要通过程序计数器(PC)提供指令地址,并且涉及到 CPU 与主存之间的数据通路,包括地址线传输地址、数据线传输指令数据。

      • 译码阶段:对指令寄存器中的指令进行译码,确定指令要执行的操作以及操作数的来源和去向。译码过程由控制器中的译码器完成,它会根据指令的操作码字段生成相应的控制信号,用于控制后续操作。

      • 执行阶段:根据译码结果,通过数据通路将操作数传送到运算器等执行部件进行运算或其他操作。例如,如果是算术指令,操作数会被送到 ALU 进行运算;如果是数据传送指令,数据会在寄存器或寄存器与存储器之间进行传送。

      • 访存阶段(如果需要):当指令涉及到访问主存中的操作数或存储结果时,需要进行访存操作。这个阶段同样需要通过数据通路与主存交互,并且要遵循一定的存储访问规则,如数据的对齐方式等。

      • 写回阶段:将执行结果写回到指定的寄存器或主存单元中。如果结果是要存储在寄存器中,数据会被传送到相应的寄存器;如果是存储到主存,会通过数据通路将数据发送到主存进行存储。

    (三)数据通路的功能和基本结构

    • 知识点

      • 功能:数据通路是      CPU 中用于在各个部件之间传输数据的路径,它实现了指令执行过程中数据的流动,包括取指、译码、执行、访存和写回等各个阶段的数据传输。通过数据通路,各个部件能够相互协作,完成指令的执行操作。

      • 基本结构组成

        • 组合逻辑(操作)元件:如 ALU,它能够在一个时钟周期内根据输入的操作数和控制信号完成算术和逻辑运算。ALU 是数据通路中的核心操作部件,能够实现加、减、乘、除、与、或、非等多种运算功能。

        • 时序逻辑(状态)元件:例如寄存器,包括指令寄存器、通用寄存器等。寄存器用于暂存数据和指令,它们能够在时钟信号的控制下保持数据状态,并且可以根据需要将数据输出到数据通路中。程序计数器(PC)也是一种特殊的寄存器,它用于存储下一条要执行的指令的地址,在指令执行过程中起着关键的顺序控制作用。

        • 多路选择器(MUX:用于在多个输入数据中选择一个输出,根据控制信号决定数据通路的走向。例如,在指令执行过程中,可能需要根据不同的指令类型或条件选择不同的操作数来源,这时就需要用到多路选择器。

      • 相关选择题分析

        • 2021 - 18 :数据通路是包含用于异常事件检测及响应的电路的。在 CPU 执行指令过程中,可能会出现各种异常情况,如访存异常、运算溢出等,数据通路需要能够检测到这些异常,并将异常信号传递给控制器,由控制器进行相应的处理。

        • 2023 - 18 :算术逻辑部件 ALU 是典型的操作元件,用于进行数据运算;多路选择器 MUX 用于选择数据通路,也是操作元件。程序计数器 PC 主要用于存储指令地址,是状态元件;通用寄存器组 GPRs 用于暂存数据,也是状态元件。所以属于操作元件的是 I(算术逻辑部件 ALU)和 IV(多路选择器 MUX)。

    (四)控制器的功能和工作原理

    • 知识点

      • 功能:控制器是整个计算机系统的指挥中心,它的主要功能包括指令译码(将指令寄存器中的指令操作码转换为相应的控制信号)、产生控制信号(根据译码结果和当前机器状态,产生用于控制数据通路和各个部件操作的信号)、控制程序流程(决定指令的执行顺序,如分支、循环等情况下的指令跳转)以及协调 CPU 与外部设备的交互(处理中断和异常等情况)。

      • 工作原理

        • 硬布线控制器:采用组合逻辑电路实现,通过对指令操作码和机器状态进行逻辑运算生成控制信号。这种方式速度快,但设计和修改复杂,缺乏灵活性,因为一旦电路设计完成,要改变控制逻辑就需要重新布线。

        • 微程序控制器:将每一条机器指令编写成一个微程序,每个微程序由若干条微指令组成。微指令存储在控制存储器(CS)中,通过读取微指令来产生控制信号。这种方式灵活性高,便于修改和扩展指令系统,但速度相对较慢,因为需要额外的时间来读取微指令。

      • 相关选择题分析

        • 2017 - 18 :主存储器(MM)在 CPU       外,用于存储指令和数据,通过地址访问;控制存储器(CS)在 CPU 内,存储微指令,也是通过地址访问,而不是按内容访问。MM 可以用 RAM ROM 实现,CS 一般用 ROM 实现,因为微指令通常是固定的,不需要修改。

        • 2021 - 17 :汇编语言程序员可见的寄存器是能够在汇编语言程序中直接使用和操作的寄存器。指令寄存器用于存储当前正在执行的指令,对汇编程序员来说是不可见的;微指令寄存器用于微程序控制,也是不可见的;基址寄存器可以在汇编程序中用于地址计算等操作,是可见的;标志 / 状态寄存器用于存储运算结果的标志和 CPU 的状态信息,汇编程序员可以通过测试这些标志来控制程序流程,所以是可见的。

    (五)异常和中断机制

    • 知识点

      • 异常和中断的基本概念

        • 异常:是指       CPU 在执行指令过程中出现的一些特殊情况,如算术运算溢出、除数为零、非法指令等。异常是由 CPU 内部产生的,是在执行当前指令时同步检测到的错误或特殊事件。

        • 中断:是指外部设备或其他外部因素(如定时器、网络设备等)请求 CPU 暂停当前任务,去处理一些紧急事件,如设备数据传输完成、外部信号到达等。中断是异步发生的,不受当前指令执行的控制。

        • 自陷(Trap:是一种特殊的异常,它是通过执行陷阱指令(一种特殊的软件中断指令)产生的,用于实现系统调用、程序调试(如设置断点、单步跟踪)等功能。当自陷发生时,CPU 会转去执行操作系统内核相应的程序,处理完成后返回到陷阱指令的下一条指令执行。

      • 异常和中断的分类

        • 异常可分为故障(Fault)、陷阱(Trap)和终止(Abort:故障是可以被修正的异常,如缺页异常,CPU 可以通过重新执行产生异常的指令来恢复程序执行;陷阱如前所述,是通过陷阱指令产生的有意的异常;终止是不可恢复的严重错误,如硬件故障导致的非法指令,会导致程序立即停止。

        • 中断可分为可屏蔽中断和不可屏蔽中断:可屏蔽中断可以被 CPU 暂时忽略,例如通过设置中断屏蔽位来禁止某些设备的中断请求;不可屏蔽中断则必须立即响应,如电源故障等紧急情况。

      • 异常和中断的检测与响应

        • 检测:异常是在指令执行过程中由 CPU 内部的硬件电路进行检测的,例如通过检查运算结果是否溢出、指令是否合法等。中断是由外部设备或其他外部因素发出中断请求信号,CPU 通过中断控制器等硬件电路检测这些信号。

        • 响应:当检测到异常或中断时,CPU 会暂停当前指令序列的执行,保存当前的程序状态(如程序计数器、寄存器内容等),然后根据异常或中断的类型跳转到相应的处理程序入口地址进行处理。处理完成后,根据情况恢复程序的执行,如对于故障类型的异常,可能会重新执行产生异常的指令;对于中断,在处理完中断事件后,返回原来被中断的程序继续执行。

      • 相关选择题分析

        • 2020 - 18 :自陷是一种软件中断,是通过执行陷阱指令产生的内部中断事件,不是外部中断。它可以用于程序调试,如设置断点和单步跟踪,发生后 CPU 会转去执行操作系统内核相应程序,处理完后返回到陷阱指令的下一条指令执行。

        • 2020 - 20 :访存时缺页是内部异常;定时器延时和网络数据包到达是外部中断事件,因为它们是由外部设备(定时器、网络设备)发出的中断请求。

        • 2021 - 21 :页缺失是一种故障类型的异常,当处理完页缺失异常(如从磁盘调入缺失的页面)后,需要重新执行当前指令,因为当前指令的正确执行依赖于缺失页面的调入。系统调用是通过自陷实现的,处理完后会返回自陷指令的下一条指令;DMA 传送结束和打印机缺纸属于中断,处理完中断后会返回被中断的程序继续执行下一条指令。

    (六)指令流水线

    • 知识点

      • 指令流水线的基本概念:指令流水线是一种将指令执行过程划分为多个阶段(如取指、译码 / 取数、执行、访存、写回等),让多条指令在不同阶段同时执行的技术。就像工厂的流水线生产一样,通过并行处理来提高 CPU 的指令执行效率。指令流水线的数据通路包含生成控制信号的控制部件、算术逻辑运算部件(ALU)、通用寄存器组和取指部件等,是由组合逻辑电路和时序逻辑电路组合而成的。

      • 指令流水线的基本实现:在实现指令流水线时,需要考虑每个流水段的执行时间,以确定 CPU 时钟周期。时钟周期至少要等于执行时间最长的流水段加上流水段寄存器延时。这样可以保证每个流水段在一个时钟周期内完成操作,并将数据正确地传递到下一个流水段。

      • 结构冒险、数据冒险和控制冒险的处理

        • 结构冒险:是指由于硬件资源冲突导致的流水线阻塞,例如指令和数据同时访问存储器,或者多个指令同时竞争同一功能部件(如 ALU)。解决方法包括增加硬件资源(如采用分离的指令存储器和数据存储器)、采用资源共享策略(分时复用功能部件)等。

        • 数据冒险:是指指令之间存在数据依赖关系,导致流水线中的数据不能正确地流动。例如,一条指令的结果是下一条指令的操作数,如果不进行处理,可能会出现错误。处理数据冒险的方法包括数据转发(旁路)技术(将前一条指令的结果直接转发给需要的指令,避免等待数据写回寄存器)、插入气泡(暂停流水线,等待数据准备好)等。

        • 控制冒险:是指由于指令的执行顺序可能发生改变(如分支指令)而导致的流水线性能下降。处理控制冒险的方法包括分支预测(预测分支是否会跳转,提前准备指令)、延迟槽(将一些不受分支影响的指令放在分支指令后面,保证流水线不空闲)、硬件阻塞(暂停流水线,等待分支结果确定后再继续执行)等。

      • 超标量和动态流水线的基本概念

        • 超标量流水线:能够在一个时钟周期内同时发射多条指令,通过增加硬件资源(如多个 ALU、多个取指部件等)来实现指令级并行。它可以结合动态调度技术,根据指令的依赖关系和硬件资源的可用性,动态地安排指令的执行顺序,提高指令执行的并行性。理想情况下,超标量流水线可以使 CPI(每条指令平均时钟周期数)小于 1,从而提高 CPU 的性能。

        • 动态流水线:能够根据指令的类型和执行情况动态地调整流水线的阶段和功能,例如可以根据指令的复杂程度动态地合并或拆分流水段,以提高流水线的效率和灵活性。

      • 相关选择题分析

        • 2017 - 19 :指令流水线数据通路是包含生成控制信号的控制部件、算术逻辑运算部件 (ALU)、通用寄存器组和取指部件,并且是由组合逻辑电路和时序逻辑电路组合而成的。

        • 2018 - 20

        • 2019 - 18

        • 2023 - 19

        • 2017 - 17 :超标量流水线不能缩短流水线功能段的处理时间,它的主要作用是能在一个时钟周期内同时发射多条指令,并能结合动态调度技术提高指令执行并行性。

        • 2020 - 17

    (七)多处理器基本概念

    • 知识点

      • SISDSIMDMIMD、向量处理器的基本概念

        • SISD(单指令流单数据流):传统的单处理器计算机体系结构,一个处理器按照顺序执行单一指令流,对单一数据流进行操作,每次处理一个数据元素。

        • SIMD(单指令流多数据流):在这种体系结构中,一个指令流同时作用于多个数据流。例如,向量处理器就属于 SIMD 结构,它可以对一组数据(向量)同时进行相同的操作,如同时对多个数据元素进行加法运算,提高数据并行处理能力,适用于科学计算、图形处理等对大量数据进行相同操作的领域。

        • MIMD(多指令流多数据流):多个处理器同时执行不同的指令流,对不同的数据流进行操作。多核处理器属于 MIMD 结构,每个核心可以独立地执行不同的任务或者协同完成一个复杂的任务,通过并行处理来提高系统的整体性能。

      • 硬件多线程的基本概念:硬件多线程技术是在一个处理器核心上同时运行多个线程,通过在不同线程之间快速切换来提高处理器的利用率。当一个线程因为等待数据(如访存延迟)或者其他原因暂停时,处理器可以切换到其他线程继续执行,减少处理器的空闲时间,提高系统的并发性能。

      • 多核处理器(multi      - core)的基本概念:多核处理器是将多个处理器核心集成在一个芯片上,每个核心都有自己的运算单元、寄存器等部件,可以独立地执行指令。多核处理器之间可以通过共享缓存、共享内存等方式进行通信和协作,共同完成复杂的计算任务


    六、总线和输入输出系统

    六、总线和输入输出系统

    (一)总线概述

    • 总线的基本概念

      • 总线是连接计算机各个部件的公共通信线路,它能在多个部件之间传输信息(数据、地址、控制信号等),就像城市中的交通主干道一样,使得各个部件可以相互通信、协同工作,是计算机系统中实现信息共享和交互的重要基础设施。不同类型的总线可以连接不同的部件组合,例如系统总线连接 CPU、主存和 I/O 接口等主要部件,而局部总线可能用于连接 CPU 与高速缓存等部件。

    • 总线的组成及性能指标

      • 组成部分

        • 数据总线:用于传输数据信息,其位数(宽度)决定了一次能够传输的数据量,例如 32 位数据总线一次可以传输 32 位的数据,宽度越宽,传输能力越强。

        • 地址总线:用来传送地址信息,以确定数据的来源或去向,地址总线的位数决定了可寻址的内存空间大小,比如 20 位地址总线能寻址的空间范围是有限的,而 32 位地址总线可寻址范围就大得多。

        • 控制总线:传递控制信号,协调各部件的操作,像读写信号、中断信号、总线请求与允许信号等都是通过控制总线来传输的,控制着数据传输的方向、时序以及各部件的行为。

      • 性能指标

        • 总线带宽:指单位时间内总线上可传输的数据总量,通常用字节每秒(B/s)或位每秒(bit/s)来衡量。计算公式一般是总线带宽 = 总线工作频率 × 总线宽度(每次传输的数据位数)× 每周期传输次数(如果支持多次传输)。例如在 2019 - 19 题中,根据给定的存储器总线工作频率、总线宽度以及计算出的每秒钟传输的数据量,就能算出总线带宽大约是多少。2024 - 20 题则在给定时钟频率、总线宽度、每时钟周期传送次数以及突发传输情况等条件下,同样依据此原理算出总线带宽最大传输速率。

        • 总线时钟频率:决定了总线操作的基本节拍,它为总线上的数据传输提供同步信号,频率越高,理论上在单位时间内传输的次数可能越多,进而影响总线带宽。

        • 总线宽度:如前面所述,就是数据总线的位数,直接决定了每次传输数据量的大小,是影响总线传输能力的重要因素之一。

      • 相关选择题分析

        • 2017 - 20 PCI -       Express×16 采用的是串行传输方式,并非并行传输方式,它通过高速的串行链路来实现高带宽的数据传输。靠近 CPU 的总线通常速度较快,因为要满足 CPU 快速获取数据和指令的需求;存储器总线支持突发传送方式能提高数据传输效率;总线之间往往通过桥接器相连来实现不同总线标准和特性的衔接与数据交换

        • 2019 - 19

        • 2020 - 19 :访存时缺页属于内部异常,不是外部中断事件;定时器延时和网络数据包到达是由外部设备产生的中断请求,属于外部中断事件。

    • 总线的事务和定时

      • 总线事务:指在总线上进行的一次完整的数据传输操作,比如一次读操作(从某个部件读取数据到另一个部件)或者一次写操作(将数据从一个部件写入到另一个部件),涉及到地址传输、数据传输以及相应控制信号的交互等过程。突发(Burst)传送总线事务是一种特殊情况,可以在总线上连续传送多个数据,提高了数据传输的效率,常用于连续读写内存块等场景。

      • 定时方式

        • 同步总线:由统一的时钟信号定时,所有部件按照这个时钟信号的节拍来进行数据的传输和操作,时钟频率决定了操作的速度节奏,不过时钟频率不一定等于工作频率,因为可能存在一些时钟周期用于其他控制操作等情况。像增加总线宽度、提高总线工作频率、支持突发传输等措施都可以提高同步总线的数据传输率,采用地址 / 数据线复用在一定程度上也能优化线路布局但对传输率提升相对间接,如 2018 - 21 题考查的就是可提高同步总线数据传输率的相关因素。

        • 异步总线:通过握手信号定时,发送方和接收方通过互相发送和检测握手信号来协调数据传输,一次握手过程通常完成一位数据交换,相对来说灵活性高,但传输效率可能不如同步总线在高速稳定情况下的表现,且控制逻辑更复杂一些。

      • 相关选择题分析

        • 2018 - 21 :增加总线宽度能在每次传输时承载更多数据;提高总线工作频率意味着单位时间内传输的次数增多;支持突发传输可连续传输多个数据,都能直接提高数据传输率。采用地址 / 数据线复用主要是为了减少总线引脚数量等,对提高传输率有一定间接帮助,但不是最主要的直接因素。

        • 2021 - 19 :总线确实是在两个或多个部件之间进行数据交换的传输介质;同步总线由时钟信号定时,时钟频率通常等于工作频率;异步总线靠握手信号定时,每次握手完成一位数据交换;突发传送总线事务能够连续传送多个数据。

        • 2023 - 20

    (二)I/O 接口(I/O 控制器)

    • I/O 接口的功能和基本结构

      • 功能

        • 数据缓冲:由于外部设备和主机(CPU、主存等)的速度往往不一致,I/O 接口中的数据缓冲寄存器可以暂存数据,起到速度匹配的作用,避免数据丢失或传输错误。例如,当外部设备传输数据较慢时,数据先暂存在接口的缓冲寄存器中,等主机准备好接收时再进行传输;反之,主机向设备发送数据时也可如此。

        • 信号转换:将外部设备的信号格式(如电平、信号类型等)转换为主机能够识别和处理的形式,同时也将主机发出的信号转换为适合外部设备接收的形式,保证双方通信的兼容性。

        • 设备选择:计算机系统通常连接多个外部设备,I/O 接口能够根据地址等信息选择相应的外部设备进行通信,就像一个交换机一样,把主机的指令和数据准确地导向目标设备。

        • 提供控制逻辑:包含一些控制电路,用于协调外部设备和主机之间的操作时序、控制数据传输的启动、停止等,确保数据传输按照正确的顺序和规则进行。

      • 基本结构:一般包括数据端口(用于数据的输入输出)、控制端口(接收主机的控制信号并对设备进行控制)、状态端口(向主机反馈设备的当前状态,如忙碌、就绪等)以及内部的缓冲寄存器、控制逻辑电路等部件,这些部分相互协作实现上述功能。

      • 相关选择题分析(2021 - 20 题):磁盘驱动器是一种外部存储设备,本身不属于 I/O 接口;打印机适配器用于连接打印机和主机,实现两者之间的通信和控制,是 I/O 接口;网络控制器负责主机与网络之间的数据交换和通信控制,是 I/O 接口;可编程中断控制器用于处理中断相关事务,协调主机与外部设备的中断交互,也是 I/O 接口。

    • I/O 端口及其编址

      • I/O 端口:是 I/O 接口中可被      CPU 访问的寄存器,分为数据端口、控制端口和状态端口等,CPU 通过读写这些端口来与外部设备进行数据交换、发送控制命令以及获取设备状态信息。

      • 编址方式

        • 独立编址I/O 端口有独立的地址空间,与主存地址空间分开,CPU 使用专门的 I/O 指令来访问 I/O 端口,这种方式可以使程序对 I/O 端口和主存的操作区分开来,便于系统的管理和维护,但需要额外的指令集来操作 I/O 端口。

        • 统一编址:将 I/O       端口和主存单元统一编址,也就是把 I/O 端口看作是主存的一部分,使用访问主存的指令来访问 I/O 端口,这样可以减少指令类型,但可能会使程序中对主存和 I/O 端口的操作界限不够清晰,容易混淆。

      • 相关选择题分析(2017 - 21 题)I/O 指令实现的数据传送通常发生在通用寄存器和 I/O 端口之间,CPU 先将数据从通用寄存器取出,通过执行 I/O 指令将数据发送到 I/O 端口,或者从 I/O 端口读取数据并存入通用寄存器中,方便后续的数据处理和运算等操作。

    (三)I/O 方式

    • 程序查询方式

      • 工作原理CPU 不断地主动查询外部设备的状态,通过执行一段循环查询程序,定期查看设备是否准备好数据或者是否可以接收数据。如果设备未准备好,CPU 就继续循环查询;一旦设备准备就绪,CPU 就进行数据的传送操作。这种方式的优点是实现简单、成本低,缺点是 CPU 利用率极低,因为在等待设备准备数据的过程中,CPU 一直处于忙碌查询状态,不能去执行其他有效的任务,浪费了大量的计算资源,适用于对实时性要求不高、数据传输不太频繁的简单低速外部设备。

    • 程序中断方式

      • 中断的基本概念:外部设备准备好数据或者完成其他操作后,主动向 CPU 发出中断请求信号,告知 CPU 可以进行数据传输或者需要处理相关事务了。CPU 在执行完当前指令后(对于非屏蔽中断可能随时响应),如果允许中断(开中断状态),就暂停当前正在执行的程序,转而去执行相应的中断服务程序来处理外部设备的请求,处理完后再返回原来被中断的程序继续执行。

      • 中断响应过程:当 CPU 检测到中断请求信号并且满足响应条件(如处于开中断状态等)时,会自动执行一系列操作来响应中断,比如保存当前程序计数器(PC)的值(以便后续能返回原来的执行位置)、将一些关键寄存器的内容压入堆栈保存现场,然后根据中断源确定中断服务程序的入口地址,跳转到该地址开始执行中断服务程序。

      • 中断处理过程:在中断服务程序中,进行与外部设备相关的数据传输、状态处理等具体操作,例如从设备的数据缓冲寄存器读取数据并存入主存,或者向设备发送控制命令等,完成对外部设备中断请求的处理任务。

      • 多重中断和中断屏蔽的概念

        • 多重中断:指在       CPU 处理一个中断的过程中,又有新的中断请求产生并且被响应,CPU 可以暂停当前中断服务程序的执行,去处理新的中断,处理完新中断后再返回继续执行原来未完成的中断服务程序,通过合理的优先级设置和中断嵌套机制来实现多个中断的有序处理,提高系统对多个外部事件的响应能力和并发处理能力。

        • 中断屏蔽CPU 可以通过设置中断屏蔽字来控制是否响应某些中断请求,即使有中断请求信号到来,如果对应的中断被屏蔽了,CPU 也不会去响应它。通过中断屏蔽可以调整中断的处理优先级,改变中断响应的顺序,以满足不同应用场景下对外部设备响应的需求。

      • 相关选择题及大题分析

        • 2017 - 22 :在多重中断系统中,是在一条指令执行结束时响应中断;中断处理期间 CPU 不一定处于关中断状态,为了能响应更高优先级的中断,可能会开中断允许嵌套中断;中断请求的产生确实与当前指令的执行无关,是由外部设备根据自身状态发出的;CPU 通过采样中断请求信号来检测中断请求。

        • 2018 - 22 :中断控制器一般是按中断优先级来进行中断请求的排队处理,而不是简单按接收先后次序;CPU 响应中断时,通过硬件自动完成部分关键信息(如程序计数器、状态寄存器等)的保存,而不是执行中断隐指令完成通用寄存器的保护;CPU 只有在处于中断允许状态时,才能响应外部设备的中断请求,否则会屏蔽中断;有中断请求时,CPU 需满足响应条件(如开中断等)才会暂停当前指令执行,转去执行中断服务程序。

        • 2019 - 21

        • 2020 - 21 CPU 处于关中断状态时也能响应不可屏蔽中断(NMI)请求,因为不可屏蔽中断优先级高且不受中断屏蔽控制;可屏蔽中断请求信号有效时,CPU 不一定立即响应,还需看是否处于开中断状态以及是否被屏蔽等情况;不可屏蔽中断的优先级确实比可屏蔽中断的优先级高;可通过中断屏蔽字改变可屏蔽中断的处理优先级。

        • 2021 - 22 CPU 不仅在用户态下能检测和响应中断,在核心态下同样可以;CPU 只有检测到中断请求信号并且满足响应条件(如开中断等)后,才会进入中断响应周期;进入中断响应周期时,CPU 必须处于中断允许(开中断)状态,否则无法响应中断;若 CPU 检测到中断请求信号,那必然存在未被屏蔽的中断源请求信号,否则会被屏蔽而不被检测到。

        • 2022 - 21 :中断 I/O 方式适用于键盘、针式打印机等字符型设备,因为这些设备数据传输不连续且速度相对较慢,适合用中断方式来协调与主机的数据交换;外设和主机之间的数据传送通过中断服务程序(软件)完成,CPU 响应中断后执行相应软件程序来处理;外设准备数据的时间理论上应小于中断处理时间,不然可能会导致数据丢失或处理不及时;外设为某进程准备数据时 CPU 可运行其他进程,这正是中断方式能提高 CPU 利用率的体现。

        • 2023 - 21 CPU 确实在执行一条指令过程中检测异常事件,在执行完一条指令时检测中断请求信号;开中断中 CPU 检测到中断请求后,还需满足其他条件(如没有更高优先级中断正在处理等)才进行中断响应;外部设备是通过中断控制器向 CPU 发中断请求信号,而中断结束信号是由 CPU 向中断控制器发送的,表示中断处理完毕。

        • 2023 - 22 :查询方式下,通过 CPU 执行查询程序不断查看设备状态并进行 I/O 操作;中断方式下,通过 CPU 执行中断服务程序来响应设备中断请求进行 I/O 操作;DMA 方式下,是由 DMA 控制器直接控制数据传输,不需要 CPU 执行 DMA 传送程序进行 I/O 操作,CPU 只需要进行一些预处理和后处理工作;对于 SSD、网络适配器等高速设备,由于数据传输速度快,采用 DMA 方式输入 / 输出能减轻 CPU 负担并提高传输效率。

        • 2024 - 21 :中断屏蔽字可以决定中断响应顺序,通过设置不同中断源的屏蔽状态来调整优先级;中断 I/O 方式下数据传送通过执行中断服务程序(软件)完成;保存通用寄存器和设置新中断屏蔽字确实是由软件(中断服务程序等)实现;单重中断方式下,中断处理时 CPU 通常处于关中断状态,防止被其他中断干扰,处理完后再开中断返回原程序。

    • DMA 方式

      • DMA 控制器的组成

        • 地址寄存器:用于存放要访问的主存单元的地址,在数据传输过程中,这个地址会不断更新(如每次传输后地址递增),以确定下一个数据传输的位置。

        • 字计数器:记录要传送的数据字数,每传送一个字(或字节,根据具体设置),字计数器就会减 1,当计数器减为 0 时,表示数据传输完成。

        • 数据缓冲寄存器:作为数据的临时存储区域,用于暂存从主存或外部设备读取的数据,或者是要发送到主存或外部设备的数据,起到缓冲和协调数据传输的作用。

        • 控制逻辑单元:产生和发出各种控制信号,如读写信号、总线请求信号等,协调 DMA 控制器与 CPU、主存以及外部设备之间的操作,是整个 DMA 传输过程的控制核心。

      • DMA 传送过程

        • 预处理阶段:在 DMA       传输开始之前,由 CPU DMA 控制器进行初始化,包括设置传送的主存起始地址、要传送的数据字数、传送方向(是从外部设备到主存,还是从主存到外部设备)等参数,这个过程类似于给 DMA 控制器下达一个详细的任务清单

        • 数据传送阶段DMA 控制器向 CPU 发出总线请求信号,请求占用总线控制权。当 CPU 响应并放弃总线控制权后(一般是在 CPU 的一个总线周期结束后),DMA 控制器就接管总线,直接控制主存和外部设备之间的数据传输。它按照预先设置好的地址和字数,将数据从源地址(外部设备或主存)传送到目标地址(主存或外部设备),每次传送一个数据单元后,自动更新地址寄存器和字计数器的值,直到完成全部数据的传送。

        • 后处理阶段:数据传送完成后,DMA 控制器会向 CPU 发出中断请求,通知 CPU 传输已经结束。CPU 响应中断后,会进行一些后续处理工作,比如检查数据传输是否正确等,这个阶段是对 DMA 传输的收尾工作,确保整个数据传输过程完整无误。

      • 相关选择题分析

        • 2019 - 22 DMA 传送前确实是由设备驱动程序设置传送参数,包括主存地址、数据长度等;数据传送前由 DMA 控制器请求总线使用权,这是 DMA 控制传输的关键步骤;数据传送由 DMA 控制器直接控制总线完成,不需要 CPU 过多参与数据传输过程;DMA 传送结束后的处理(如通知 CPU 等)由中断服务程序完成。

        • 2020 - 22 :在周期挪用 DMA 方式下,每准备好 32 位(4 字节)数据,DMA 控制器就发出一次总线请求;相对于 CPUDMA 控制器的总线使用权优先级更高,这样才能保证它能及时占用总线进行数据传输;在整个数据块的传送过程中,CPU 可以访问主存储器,不过这种访问会受到 DMA 操作的影响,可能会有一些延迟或者限制;数据块传送结束时,会产生 “DMA 传送结束的中断请求,以便 CPU 进行后续处理。

        • 2024 - 22 DMA 方式中,DMA控制器控制的数据传输通路位于外设和存储器之间,它的主要作用是直接在外设和存储器之间建立快速的数据传输通道,减少 CPU 在数据传输过程中的干预,提高数据传输效率。



    DS应用题

    参考:
    【25终极预测】408应用题分析与预测-DS

    代码题策略
    面对代码题,首先不要慌张。即使无法立即想到最优解,也可以采取以下策略:
    暴力解法尝试:如果直接求解复杂,可以先尝试编写暴力解法,即最直接、但可能效率不高的方法。这不仅能确保获得部分分数,还可能为优化解法提供思路。
    构建代码框架:如果暴力解法也难以实现,可以先写出相关的结构体定义、函数声明和基本的算法框架,如排序算法的框架代码,为后续填充具体逻辑打下基础。
    文字描述思路:时间紧迫时,至少应文字描述你的解题思路,包括算法的大致步骤、预期的数据结构等,这也能展示你的思考过程和问题解决能力。

    参考:

    皮皮灰讲义和模拟题!


    皮皮灰为大家带来了《考研DS应用题必刷100题
    没有任何套路,直接下载!


    皮皮灰为大家带来了《考研DS算法必背100题
    包含顺序表、栈、队列、字符串、树、图、查找、排序等计算机考研常考算法

    没有任何套路,直接下载!



    皮皮灰为大家带来了《数据结构冲刺全书
    没有任何套路,直接下载!



    皮皮灰为大家带来了考研OS应用题必刷100题
    没有任何套路,直接下载!


    皮皮灰为大家带来了《考研CN应用题必刷100题
    没有任何套路,直接下载!

    109页25考研408统考大纲解析版
    含大纲原文、变动情况、历年常考知识点对应题目
    以大纲考点+历年真题整理
    已发布,扫码下载


    【皮皮灰咨询】



    灰灰考研
    最全的【计算机考研】【软件考研】考研信息! 最丰富的共享资料! 最大程度上帮助学渣狗登上研究生大门!
     最新文章