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

GitHub地址:https://github.com/tyronczt/system_architect
✨资料&文章更新✨

指令系统

计算机指令执行过程:取指令一一分析指令一一执行指令三个步骤,首先将程序计数器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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26774.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家用可燃气体探测器——家庭燃气安全的坚实防线

随着社会的发展和变迁,天然气为我们的生活带来了诸多便利,无论是烹饪美食,还是温暖取暖,都离不开它的支持。然而,燃气安全隐患如影随形,一旦发生泄漏,可能引发爆炸、火灾等严重事故,…

鸿蒙 ArkUI 实现敲木鱼小游戏

敲木鱼是一款具有禅意的趣味小游戏,本文将通过鸿蒙 ArkUI 框架的实现代码,逐步解析其核心技术点,包括动画驱动、状态管理、音效震动反馈等。 一、架构设计与工程搭建 1.1 项目结构解析 完整项目包含以下核心模块: ├── entry…

分布式日志和责任链路

目录 日志问题 责任链问题 分布式日志 GrayLog简介 部署安装 收集日志 配置Inputs 集成微服务 日志回收策略 搜索语法 搜索语法 自定义展示字段 日志统计仪表盘 创建仪表盘 链路追踪 APM 什么是APM 原理 技术选型 Skywalking简介 部署安装 微服务探针 整合…

进程间通信(IPC)与匿名管道

目录 一、进程间通信(IPC)概述 1. 核心概念 2. 核心目的 3. IPC分类 二、匿名管道 1. 什么是管道 示例:Shell中的管道 2. 匿名管道的原理 3. 匿名管道的实现 3.1 创建管道:pipe()函数 3.2 使用 fork 共享管道 3.3 站在…

构建智能 SQL 查询代理agent,把整个查询过程模块化,既能自动判断使用哪些表,又能自动生成 SQL 语句,最终返回查询结果

示例代码: import os import getpass from dotenv import load_dotenv from pyprojroot import here from typing import List from pprint import pprint from pydantic import BaseModel from langchain_core.tools import tool from langchain_core.runnables i…

从矩阵乘法探秘Transformer

目录 前言1. transformer背景1.1 回顾线性代数的知识1.1.1 矩阵和行向量1.1.2 矩阵相乘和算子作用1.1.3 从分块矩阵的乘法来看 Q K T V QK^TV QKTV 1.2 encoder-decoder1.3 低阶到高阶语义向量的转换1.4 核心的问题 2. transformer网络结构2.1 基于KV查询的相似性计算2.2 在一个…

用友NC系列漏洞检测利用工具

声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 目录标题 YongYouNcTool启动及适配环境核心功能界面预览一键检测命令执…

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…

zookeeper-docker版

Zookeeper-docker版 1 zookeeper概述 1.1 什么是zookeeper Zookeeper是一个分布式的、高性能的、开源的分布式系统的协调(Coordination)服务,它是一个为分布式应用提供一致性服务的软件。 1.2 zookeeper应用场景 zookeeper是一个经典的分…

【数据结构】LRUCache|并查集

目录 一、LRUCache 1.概念 2.实现:哈希表双向链表 3.JDK中类似LRUCahe的数据结构LinkedHashMap 🔥4.OJ练习 二、并查集 1. 并查集原理 2.并查集代码实现 3.并查集OJ 一、LRUCache 1.概念 最近最少使用的,一直Cache替换算法 LRU是Least Recent…

AUTOSAR简介

目录 核心目标 架构分层 核心优势 经典AUTOSAR vs 自适应AUTOSAR 典型应用场景 挑战与未来发展 相关企业介绍 1. 传统汽车电子供应商(Tier1) 2. 软件服务商与工具链企业 3. 新兴科技公司与自动驾驶企业 4. 基础软件与工具链企业 5. 高校与研…

国产开源AI平台Cherry Studio详解:联网搜索升级与ChatBox对比指南

文章概述 Cherry Studio是一款功能强大的国产开源AI工具,支持本地部署、知识库管理、多模型聚合和联网搜索等特性。本文将详细介绍Cherry Studio的核心功能、1.0版本新特性及与ChatBox的对比分析,帮助用户选择最适合自己的AI助手工具。 Cherry Studio核…

【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南

欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创&#x1…

【计算机网络入门】初学计算机网络(六)

目录 1.回忆数据链路层作用 2. 组帧 2.1 四种组帧方法 2.1.1 字符计数法 2.1.2 字节填充法 2.1.3 零比特填充法 2.1.4 违规编码法 3. 差错控制 3.1 检错编码 3.1.1 奇偶校验码 3.1.2 CRC(循环冗余校验)校验码 3.2 纠错编码 3.2.1 海明校验码…

二叉树的核心技术与C++实现:存储、遍历与递归应用

目录 一、二叉树基础概念与常见类型 1.1 二叉树核心概念 1.2 四种常见二叉树类型 类型1:满二叉树 类型2:完全二叉树 类型3:二叉搜索树(BST) 类型4:平衡二叉树(AVL) 类型5&…

《白帽子讲 Web 安全:点击劫持》

目录 摘要: 一、点击劫持概述 二、点击劫持的实现示例:诱导用户收藏指定淘宝商品 案例 构建恶意页面: 设置绝对定位和z - index: 控制透明度: 三、其他相关攻击技术 3.1图片覆盖攻击与 XSIO 3.2拖拽劫持与数据…

IDEA 使用codeGPT+deepseek

一、环境准备 1、IDEA 版本要求 安装之前确保 IDEA 处于 2023.x 及以上的较新版本。 2、Python 环境 安装 Python 3.8 或更高版本 为了确保 DeepSeek 助手能够顺利运行,您需要在操作系统中预先配置 Python 环境。具体来说,您需要安装 Python 3.8 或更高…

Linux:进程替换

目录 进程程序替换 替换原理 进程替换相关函数 环境变量与进程替换函数 命令行解释器(my_xshell) 进程程序替换 上一篇进程控制讲到,父进程创建子进程就是为了让子进程去做一些另外的事情,但是不管怎么说,子进程的部分代码也还是父进程…

Navicat连接虚拟机数据库详细教程

Navicat连接虚拟机数据库详细教程 以Windows主机 上的navicat 连接ubuntu虚拟机为例 确认虚拟机ip地址和主机ip地址 主机地址查询 cmd输入ipconfig 登录mysql 创建用户 CREATE USER newuserlocalhost IDENTIFIED BY password; CREATE USER newuser% IDENTIFIED BY passwor…

Java内存管理与性能优化实践

Java内存管理与性能优化实践 Java作为一种广泛使用的编程语言,其内存管理和性能优化是开发者在日常工作中需要深入了解的重要内容。Java的内存管理机制借助于垃圾回收(GC)来自动处理内存的分配和释放,但要实现高效的内存管理和优…