【软考-架构】1.2、指令系统-存储系统-cache

指令系统

计算机指令执行过程:取指令一一分析指令一一执行指令 三个步骤,首先将程序计数器PC 中的指令地址取出,送入地址总线 ,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器进行分析,分析指令操作码:最后执行指令,取出指令执行所需的源操作数。

CISC 是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现;

RISC 是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。

考试真题

第一题

答案为:第一空选 A,第二空选 D。

以下是具体解析:

  • Flynn 分类法的概念 :Flynn 分类法是根据计算机在执行程序过程中指令流和数据流的不同组合,将计算机系统分为 4 类。其中,指令流 是指机器执行的指令序列,数据流是指由指令流调用的数据序列,包括输入数据和中间结果,但不包括控制信息。
  • Flynn 分类法的 4 类计算机
    • 单指令流单数据流(SISD):这种计算机每次只执行一条指令,并且只对一个数据进行操作。传统的冯・诺依曼体系结构的计算机就属于 SISD 类型,如早期的个人计算机。
    • 单指令流多数据流(SIMD):SIMD 计算机有多个处理单元,它们在同一个控制部件的控制下,执行相同的指令,但操作于不同的数据上。典型的应用场景是对大量数据进行相同的处理,如向量处理机、阵列处理机等。
    • 多指令流单数据流(MISD):MISD 计算机具有多个处理单元,每个处理单元可以执行不同的指令,但都对同一个数据进行操作。这种结构在实际中应用较少,因为它的实用性相对较低,一个数据被多个不同的指令处理可能会导致数据处理的复杂性和不确定性增加。
    • 多指令流多数据流(MIMD):MIMD 计算机中有多个处理单元,它们可以独立地执行不同的指令,并且操作于不同的数据上。当前主流的多核计算机就属于 MIMD 类型,每个核心都可以独立地处理不同的任务或程序,多个核心之间可以通过共享内存或其他通信机制进行协作,从而实现多任务并行处理,提高计算机的整体性能和效率。

第二题

正确选项是 D. 指令长度不固定,指令格式和寻址方式多。

复杂指令集计算机(CISC)设计的初衷是为了通过单条指令完成复杂的任务,从而减少程序的指令数量和提高程序的执行效率。以下是各选项的具体分析:

A. 只设置使用频度高的一些简单指令,不同指令执行时间差别很小 - 这个描述更符合精简指令集计算机(RISC)的特点,而非CISC。CISC包含了大量的复杂指令,包括一些不常用的指令,这些指令的执行时间可能会有很大差异。

B. CPU中设置大量寄存器,利用率低 - 这个描述并不准确。虽然CISC架构确实可能拥有较多的寄存器,但其主要特征并不是寄存器利用率低。实际上,寄存器的利用情况更多依赖于编译器优化和具体的应用场景。

C. 常采用执行速度更快的组合逻辑实现控制器 - 这一点也是RISC架构的一个特点,因为RISC倾向于使用硬连线控制来加速指令处理。而CISC系统通常更复杂,可能会使用微代码(microcode)来实现指令解码和执行。

D. 指令长度不固定,指令格式和寻址方式多 - 这确实是CISC的一个重要特征。CISC架构支持多种不同的寻址模式和指令格式,并且为了灵活性,指令长度通常是可变的。这使得CISC处理器能够处理各种复杂操作,尽管这也增加了指令解码的复杂性。

指令系统-流水线


流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。

流水线执行时间:1条指令总执行时间 +(总指令条数-1)* 流水线周期。

流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。

公式:指令条数/流水线执行时间。

流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高,

公式:不使用流水线执行时间/使用流水线执行时间。

考试真题

第一题

流水线的吞吐率是指单位时间内流水线完成的任务数或输出的结果数。在流水线中,如果各段的操作时间不同,那么流水线的吞吐率将由耗时最长的那段决定,因为这将决定整个流水线完成一个任务所需的总时间。

在这个问题中,流水线有5段,其中1段的时间为2ns,另外4段的时间为1ns。由于流水线是并行工作的,所以完成一个任务的总时间将是各段时间中的最大值,即2ns。但是,这只是完成第一个任务的时间。从第二个任务开始,每个任务都只需要额外的2ns,因为流水线中的各个段可以同时处理不同的任务。

然而,这里有一个细节需要注意:当第一个任务进入流水线后,需要等待所有5段都完成后才能算作一个完整完成的任务。但从第二个任务开始,每进入一个新任务,只需要等待最慢的那一段(2ns)完成即可,因为其他段已经在处理前一个任务了。

因此,完成100个任务的总时间将是:

第一个任务的时间:2ns + 4 * 1ns = 6ns(所有段都完成第一个任务)

剩下99个任务的时间:99 * 2ns = 198ns(每个任务只需要最慢的那段时间)

总时间:6ns + 198ns = 204ns

但是,我们需要注意这里的单位。题目要求的是每秒的吞吐率,而我们的计算结果是以纳秒为单位的。所以,我们需要将总时间转换为秒:

204ns = 204 * 10^-9 s

然后,我们可以计算吞吐率:

吞吐率 = 完成的任务数 / 总时间

= 100 / (204 * 10^-9) ≈ 490 * 10^6 个/s

所以,利用此流水线完成100个任务的吞吐率约为490 * 10^6个/s,选项B是正确的。

第二题

答案:D C

第一空:单缓冲区时间计算

单缓冲区的关键限制在于读入缓冲区和传输至用户区必须串行执行。每个块的总时间由三个阶段组成:

  • 第一块:读入缓冲区(15μs)→ 传输至用户区(5μs)→ 处理数据(1μs),共 21μs。
  • 后续9块:由于缓冲区不可复用,每个块需等待前一块的读入和传输完成后才能开始,每块时间为 15μs(读入) + 5μs(传输) = 20μs。

总时间 = 21 + 9×20 = 201μs
对应选项 D

第二空:双缓冲区时间计算

双缓冲区的优势在于读入缓冲区与传输至用户区可并行:

  • 第一块:读入缓冲区(15μs)→ 传输至用户区(5μs)→ 处理数据(1μs),共 21μs。
  • 后续9块:读入缓冲区(15μs)可与前一块的传输和处理并行,因此每块仅需 15μs(读入)。

总时间 = 21 + 9×15 = 156μs
对应选项 C

第三题

第一空:完成n个连续任务的总时间

对于k段流水线,各段执行时间均为t,在理想情况下(任务连续输入且无阻塞),总时间的计算公式为:总时间 = (k + n - 1) × t
推导逻辑

  1. 第一个任务 需要完整经历k个阶段,耗时 k × t
  2. 后续每个任务 只需等待前一个任务完成一个阶段即可进入流水线,每个新增任务耗时 t,因此后续n-1个任务耗时 (n-1) × t 。
  3. 总时间为两者之和:k × t + (n-1) × t = (k + n - 1) × t
    对应选项 B

第二空:流水线最大加速比

某5段浮点加法运算器的各段执行时间分别为6ns、7ns、8ns、9ns、6ns,计算其最大加速比:最大加速比 = 4
推导逻辑

  1. 非流水线执行时间 :每个任务需顺序执行所有阶段,总时间 6 + 7 + 8 + 9 + 6 = 36ns
  2. 流水线周期 :由最长的阶段时间决定,即 9ns
  3. 流水线执行时间 :处理n个任务的时间为 5 × 9 + (n - 1) × 9 = 9n + 36ns (当n→∞时,近似为 9n)。
  4. 加速比公式

    对应选项 A

存储系统

地址映射,由硬件自动完成映射,有三种方法:

  • 直接映射
  • 全相联映像
  • 组组相连映像

考试真题

第一题

按照Cache地址映像的块冲突概率从高到低排列的顺序为:B. 直接映像→组相联映像→全相联映像
解析

  1. 直接映像 :主存中的每个块只能映射到Cache中唯一固定的块。若多个主存块映射到同一Cache块,则冲突概率最高。
  2. 组相联映像 :将Cache分为若干组,组内全相联映射,组间直接映射。冲突概率介于直接映像和全相联之间,属于折中方案。
  3. 全相联映像 :主存块可映射到Cache中任意块,冲突概率最低(仅当Cache满时才会冲突)。

排序逻辑

直接映像的严格映射规则导致高冲突率,而全相联的灵活性最大程度减少了冲突,组相联通过分组部分缓解冲突,因此顺序为 直接映像 > 组相联映像 > 全相联映像

第二题

关于Cache与主存间地址映射的正确叙述是:D. 由硬件自动完成Cache与主存之间的地址映射

关键解析

  1. 硬件自动管理机制
    Cache与主存的地址映射(包括直接映射、全相联映射、组相联映射)由计算机硬件逻辑电路实现,如地址转换部件、相联存储器(CAM)和比较器等。这些操作在CPU访存时实时完成,无需软件干预。
  2. 选项错误原因
    • A. 操作系统负责管理:操作系统不参与实时地址映射,仅负责内存分配等高层管理,而非具体的Cache映射逻辑。
    • B. 程序员编程处理:地址映射对程序员透明,无需通过代码控制,属于底层硬件功能。
    • C. 应用软件调度:应用软件无法直接操作Cache映射规则,其运行依赖于硬件自动完成地址转换。

结论

Cache与主存的地址映射由硬件自动实现,确保高速访问和低延迟,与软件无关。正确答案为 D

相关推荐
m0_748257462 小时前
vllm源码解析(一):整体架构与推理代码
架构
桂月二二4 小时前
服务端驱动UI架构解析:React Server Components与流式渲染的革命
react.js·ui·架构
嗨!陌生人5 小时前
创建Order项目实现Clean & Hexagonal架构
后端·架构
桂月二二6 小时前
微前端架构深度解码:模块化拆解与联邦宇宙的构建
前端·架构
白露与泡影6 小时前
「架构选型」5 种 API 网关技术选型
架构
优人7 小时前
万字解析AQS源码
后端·架构
fxrz129 小时前
利用 AWS API Gateway 和 Lambda 节省成本的指南
低代码·架构·云计算·gateway·aws·无服务器
WeiLai111213 小时前
面试基础----ReentrantLock vs Synchronized
java·分布式·后端·面试·职场和发展·架构
小巫程序Demo日记16 小时前
Spark中RDD模式下Driver和Excutor架构原理
java·架构·spark