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

[特殊字符]《计算机组成原理》第 8 章 - CPU 的结构和功能

🔵8.1 CPU 的结构

🔵8.1.1 CPU 的功能

CPU(中央处理器)是计算机的核心部件,主要负责以下任务:

  • 指令执行:解析并执行指令集架构(ISA)定义的指令
  • 数据处理:完成算术运算(如加减乘除)和逻辑运算(如与或非)
  • 存储控制:管理内存访问(读取 / 写入数据)
  • 输入输出控制:协调 CPU 与外部设备的数据传输
  • 中断处理:响应外部设备的异步请求

案例:简单算术运算实现

// 模拟CPU执行加法运算
public class SimpleCPU {// 通用寄存器private int accumulator; // 累加器private int registerB;   // 通用寄存器B// 执行加法指令public void addInstruction(int operand) {// 模拟取操作数到寄存器BregisterB = operand;// 执行加法运算(累加器 + 寄存器B)accumulator += registerB;System.out.println("加法结果:" + accumulator);}public static void main(String[] args) {SimpleCPU cpu = new SimpleCPU();cpu.addInstruction(5); // 初始累加器为0,执行0+5=5cpu.addInstruction(3); // 执行5+3=8}
}

🔵8.1.2 CPU 结构框图

图注:控制单元协调各部件工作,ALU 负责运算,寄存器组存储数据和地址

🔵8.1.3 CPU 的寄存器

分类及功能
寄存器类型典型寄存器功能描述
程序控制类程序计数器 PC存储下一条指令的内存地址
指令寄存器 IR存储当前正在执行的指令
数据存储类累加器 ACC存放运算结果和待运算数据
通用寄存器 GR临时存储数据(如 AX/BX/CX/DX 等)
状态控制类状态寄存器 PSW存储运算状态标志(如进位 / 溢出)

代码示例:寄存器操作模拟

// 模拟寄存器组操作
public class RegisterDemo {private int pc;       // 程序计数器private int ir;       // 指令寄存器private int acc;      // 累加器private int psw;      // 状态寄存器(二进制位表示状态)// 模拟取指令操作public void fetchInstruction(int address) {pc = address;          // 设置PC到目标地址ir = loadFromMemory(pc);// 从内存模拟函数获取指令System.out.println("取指令:IR=" + ir);}private int loadFromMemory(int addr) {// 简化模拟:返回固定指令(假设0x1234为加法指令)return 0x1234;}
}

🔵8.1.4 控制单元和中断系统

控制单元功能
  • 生成时序信号:控制指令执行的时序(时钟周期)
  • 指令译码:解析 IR 中的指令操作码
  • 发出控制信号:驱动 ALU、寄存器、内存等部件动作
中断系统核心概念
  • 中断请求:外设通过中断线向 CPU 发送请求信号
  • 中断响应:CPU 在当前指令执行结束后检测中断请求
  • 中断服务:跳转至中断服务程序处理外设请求

🔵8.2 指令周期

🔵8.2.1 指令周期的基本概念

定义执行一条指令所需要的全部时间,由若干机器周期(CPU 周期)组成
阶段划分

  1. 取指周期:从内存读取指令到 IR
  2. 译码周期:分析指令操作码和寻址方式
  3. 执行周期:完成指令规定的操作
  4. 访存周期(可选):读写内存数据
  5. 中断周期(可选):处理中断请求

流程图:指令周期流程

🔵8.2.2 指令周期的数据流

示例:加法指令数据流

  1. PC → 内存地址总线(取指)
  2. 内存数据 → IR(指令存入 IR)
  3. PC 自增 → 指向下一条指令
  4. IR 操作码 → 控制单元译码
  5. 源操作数地址 → 内存 / 寄存器获取数据
  6. ALU 执行加法运算 → 结果存入 ACC

🔵8.3 指令流水

🔵8.3.1 指令流水原理

流水线思想:将指令执行过程分解为多个阶段(如取指 IF、译码 ID、执行 EX、访存 MEM、写回 WB),各阶段并行处理不同指令
示例:5 级流水线示意图

说明:每个时钟周期启动一条新指令,相邻指令在不同阶段并行执行

🔵8.3.2 影响流水线性能的因素

  1. 结构冲突:硬件资源竞争(如同时访问内存)
  2. 数据冲突:后续指令依赖前序指令的结果
  3. 控制冲突:分支指令导致流水线断流

🔵8.3.3 流水线性能

性能指标

  • 吞吐率(TP):单位时间执行的指令数
    TP = n / (k + n - 1) * f(n 为指令数,k 为阶段数,f 为时钟频率)
  • 加速比(S):流水线执行时间与非流水线执行时间的比值

🔵8.3.4 流水线中的多发技术

超标量技术
  • 多个指令译码器和运算单元
  • 示例:同时执行 2 条指令的流水线
// 模拟超标量流水线(简化版)
public class SuperscalarPipeline {public void executeInParallel(Instruction inst1, Instruction inst2) {// 并行译码decode(inst1);decode(inst2);// 并行执行(假设ALU1和ALU2独立)execute(inst1);execute(inst2);}private void decode(Instruction inst) { /* 译码逻辑 */ }private void execute(Instruction inst) { /* 执行逻辑 */ }
}class Instruction { /* 指令类 */ }

🔵8.3.5 流水线结构

典型流水线结构对比

流水线类型阶段数典型应用
简单流水线3-5 级早期 CPU(如 80486)
超流水线6-15 级Pentium 系列
乱序执行流水线多级现代 CPU(如酷睿)

🔵8.4 中断系统

🔵8.4.1 概述

中断分类

  • 硬件中断:来自外设(如键盘、磁盘)
  • 软件中断:由指令触发(如系统调用)
  • 异常:CPU 内部错误(如除法溢出)

中断处理流程

  1. 中断请求 → 2. 中断判优 → 3. 中断响应 → 4. 中断服务 → 5. 中断返回

🔵8.4.2 中断请求标记和中断判优逻辑

数据结构模拟:中断请求寄存器

// 中断请求寄存器(8位,支持8个中断源)
public class InterruptRequestRegister {private int irr; // 用整数模拟8位寄存器(每位代表一个中断源)// 设置中断请求(第n位设为1)public void setRequest(int n) {if (n >= 0 && n < 8) {irr |= (1 << n); // 位运算设置请求位System.out.println("中断源" + n + "请求已登记");}}// 清除中断请求(第n位设为0)public void clearRequest(int n) {irr &= ~(1 << n);}
}

🔵8.4.3 中断服务程序入口地址的寻找

向量中断方式

  • 每个中断源对应唯一的中断向量号
  • CPU 根据向量号查找中断向量表获取服务程序地址

模拟中断向量表

// 中断向量表(存储8个中断源的服务程序地址)
public class InterruptVectorTable {private int[] vectorTable = new int[8]; // 存储地址(模拟整数)// 初始化向量表public InterruptVectorTable() {for (int i = 0; i < 8; i++) {vectorTable[i] = 0x1000 + i * 100; // 预设地址范围}}// 根据向量号获取服务程序地址public int getServiceAddress(int vectorNo) {return vectorTable[vectorNo];}
}

🔵8.4.4 中断响应和恢复现场

中断响应步骤

  1. 关中断:禁止新的中断请求
  2. 保存断点:将当前 PC 值存入堆栈
  3. 识别中断源:获取中断向量号
  4. 跳转服务程序:PC ← 中断向量地址

恢复现场代码模拟

// 模拟中断现场保存与恢复
public class InterruptHandler {private Stack<Integer> stack = new Stack<>(); // 模拟堆栈// 保存现场(PC、寄存器等)public void saveContext(int pc, int acc, int psw) {stack.push(pc);stack.push(acc);stack.push(psw);System.out.println("现场已保存至堆栈");}// 恢复现场public void restoreContext() {int psw = stack.pop();int acc = stack.pop();int pc = stack.pop();System.out.println("恢复PC=" + pc + ", ACC=" + acc + ", PSW=" + psw);}
}

🔵8.4.5 中断屏蔽技术

作用:通过屏蔽寄存器选择性禁止某些中断源的请求
模拟屏蔽寄存器

📚总结

     本章系统讲解了 CPU 的核心架构、指令执行机制、流水线技术和中断系统。通过 Java 代码模拟了寄存器操作、流水线执行和中断处理等关键环节,帮助读者理解理论知识与实际编程的结合。建议结合教材中的硬件电路图和时序图,进一步掌握 CPU 的工作原理。

相关文章:

[特殊字符]《计算机组成原理》第 8 章 - CPU 的结构和功能

&#x1f535;8.1 CPU 的结构 &#x1f535;8.1.1 CPU 的功能 CPU&#xff08;中央处理器&#xff09;是计算机的核心部件&#xff0c;主要负责以下任务&#xff1a; 指令执行&#xff1a;解析并执行指令集架构&#xff08;ISA&#xff09;定义的指令数据处理&#xff1a;完…...

第八篇:MySQL 备份恢复与数据安全管理实战

在企业数据库运维中&#xff0c;数据安全是第一要务。系统崩溃、误删数据、磁盘损坏等场景都可能造成数据丢失&#xff0c;因此建立可靠的备份与恢复机制是保障业务连续性的关键。 一、为什么需要备份&#xff1f; 防止数据丢失&#xff1a;误操作、故障、黑客攻击等&#xff…...

系统是win11+两个ubuntu,ubuntu20.04和ubuntu22.04,想删除ubuntu20.04且不用保留数据

在 Ubuntu 22.04 的终端里运行这些命令: 重启电脑&#xff0c;选择启动 Ubuntu 22.04&#xff1b;打开终端&#xff1b;从 lsblk 开始操作。 如果你不确定当前启动的是哪个系统&#xff0c;可以在终端输入&#xff1a; lsb_release -a它会输出&#xff1a; Distributor ID: …...

OramaCore 是您 AI 项目、答案引擎、副驾驶和搜索所需的 AI 运行时。它包括一个成熟的全文搜索引擎、矢量数据库、LLM界面和更多实用程序

一、软件介绍 文末提供程序和源码下载 OramaCore 是您的项目、答案引擎、副驾驶和搜索所需的 AI 运行时。 它包括一个成熟的全文搜索引擎、矢量数据库、LLM具有行动计划和推理功能的接口、用于根据数据编写和运行您自己的自定义代理的 JavaScript 运行时&#xff0c;以及更多…...

GitHub 趋势日报 (2025年05月28日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 2379 agenticSeek 1521 computer-science 841 n8n 577 langflow 351 qlib 282 skt…...

OpenCV CUDA模块图像处理------颜色空间处理之GPU 上交换图像的通道顺序函数swapChannels()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于在 GPU 上交换图像的通道顺序&#xff08;例如将 BGR 图像转为 RGB&#xff09;。 它适用于多通道图像&#xff08;如 3 通道或 4 通道…...

回归任务损失函数对比曲线

回归任务损失函数曲线可视化对比 本节将可视化对比均方误差&#xff08;MSE&#xff09;、平均绝对误差&#xff08;MAE&#xff09;、Huber损失函数三种常见回归任务损失函数的曲线&#xff0c;帮助理解它们在不同误差区间的表现差异。 1. 导入所需库 我们需要用到 numpy 进…...

Magentic-UI:人机协作的网页自动化革命

Magentic-UI是微软开源的一款创新浏览器自动化工具&#xff0c;基于多智能体系统和AutoGen框架设计&#xff0c;强调人机协作、透明性和安全控制&#xff0c;通过协作规划、实时执行和计划学习机制&#xff0c;高效处理复杂网页任务如数据抓取和表单填写&#xff0c;显著提升任…...

计算机专业大学生常用的刷题,资源网站(持续更新)

一、刷题网站 1.牛客网 牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推&#xff0c;求职就业一站解决_牛客网 (nowcoder.com)https://www.nowcoder.com/ 牛客网&#xff08;Nowcoder&#xff09;是中国一个主要面向编程和技术学习者的在线教育和职业发展平台。它提供了…...

Redisson学习专栏(二):核心功能深入学习(分布式锁,分布式集合,原子操作与计数器,事件与监听)

本文是“Redisson学习专栏”第二篇&#xff0c;聚焦其核心分布式功能实现原理与最佳实践 文章目录 前言&#xff1a;分布式系统核心能力实践一、分布式锁&#xff1a;高并发下的守卫者1.1 可重入锁 (Reentrant Lock)1.2 公平锁 (Fair Lock)1.3 联锁 (MultiLock)1.4 红锁 (RedLo…...

医疗多模态共情推理与学习一体化网络构成初探

1 引言:多模态共情推理的概念内涵与技术背景 在当今医疗人工智能领域,多模态共情推理正逐步成为突破临床决策支持系统瓶颈的关键范式。这一技术通过融合认知共情与情感共情的双重机制,模拟人类医生的综合诊断思维过程,实现对患者全方位健康状态的深度理解。医疗环境中的共…...

MySQL : MySQL的安装【CentOS 7】

MySQL : MySQL的安装【CentOS 7】 (一) MySQL的卸载和安装1.卸载查看是否存在MySQL删掉原有的MySQL 2.安装 &#xff08;二&#xff09;登录和环境配置登录方法一: 存在临时密码登录方法二:通过修改配置文件环境配置 (一) MySQL的卸载和安装 安装与卸载中&#xff0c;用户全部…...

EasyRTC嵌入式音视频实时通话SDK助力AI与IoT智能硬件打造音视频交互多场景应用

一、引言​ 在数字化浪潮下&#xff0c;AI与IoT深度融合重塑智能硬件产业。实时音视频通信是智能硬件交互的核心&#xff0c;其性能关乎用户体验与场景拓展。EasyRTC嵌入式音视频实时通话SDK基于WebRTC技术&#xff0c;以轻量、易扩展的特性&#xff0c;为AI与IoT智能硬件融合…...

pod创建和控制

一、引言 ‌主题‌&#xff1a;pod以及控制器模式中的Deployment作用。‌控制器模式&#xff1a;使用一种API对象&#xff08;如Deployment&#xff09;管理另一种API对象&#xff08;如Pod&#xff09;的方式。 二、容器镜像与配置文件 ‌容器镜像‌&#xff1a;应用开发者…...

Unity数字人开发笔记——讯飞超拟人语音

基于上一篇&#xff1a; https://blog.csdn.net/qq_17523181/article/details/148255809?spm1001.2014.3001.5501 https://blog.csdn.net/qq_17523181/article/details/148264127?spm1011.2415.3001.5331 讯飞默认的语音非常机械&#xff0c;更换为讯飞的超拟人语音 一、讯飞…...

C# 文件 I/O 操作详解:从基础到高级应用

在软件开发中&#xff0c;文件操作&#xff08;I/O&#xff09;是一项基本且重要的功能。无论是读取配置文件、存储用户数据&#xff0c;还是处理日志文件&#xff0c;C# 都提供了丰富的 API 来高效地进行文件读写操作。本文将全面介绍 C# 中的文件 I/O 操作&#xff0c;涵盖基…...

OpenCV 第7课 图像处理之平滑(二)

1. 示例代码 import cv2 import numpy as np import matplotlib.pyplot as pltimg = cv2.imread(noise.jpg)blur1 = cv2.blur(img, (5, 5)) blur2 = cv2.GaussianBlur(img, (5, 5), 1) blur3 = cv2.medianBlur(img, 5) plt.figure(figsize=(10, 5), dpi=100) plt.rcParam…...

Visual Studio笔记:MSVC工具集、MSBuild

1. MSVC工具集 1.1 什么叫MSVC工具集 也可以说Visual Studio平台工具集&#xff08;Platform toolset&#xff09;. 这些工具包括 C/C 编译器、链接器、汇编程序和其他生成工具以及匹配的库和头文件。 Visual Studio 2015、Visual Studio 2017 和 Visual Studio 2019 是二进制…...

【Netty系列】核心概念

目录 1. EventLoop 与线程模型 2. Channel&#xff08;通道&#xff09; 3. ChannelHandler 与 Pipeline 4. ByteBuf&#xff08;数据容器&#xff09; 5. Bootstrap 与 ServerBootstrap 6. Future 与 Promise 7. 其他核心概念 总结 Netty 是一个高性能、异步事件驱动的…...

Axure中继器交互完全指南:核心函数解析×场景实战×避坑策略(懂得才能应用)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 主要内容:中继器核心函数解析、场景方法详解、注意事项、特殊函数区别 课程目标:提高中继器的掌握…...

DeepSeek 赋能数字人直播带货:技术革新重塑电商营销新生态

目录 一、引言二、DeepSeek 技术探秘2.1 DeepSeek 技术原理剖析2.2 DeepSeek 与其他大模型对比优势 三、数字人直播带货现状洞察3.1 数字人直播带货发展历程回顾3.2 市场规模与增长趋势分析3.3 现存问题与挑战探讨 四、DeepSeek 在数字人直播带货中的应用实例4.1 交个朋友的成功…...

高端制造行业 VMware 替代案例合集:10+ 头部新能源、汽车、半导体制造商以国产虚拟化支持 MES、PLM 等核心应用系统

在“中国制造 2025”政策的推动下&#xff0c;国内的新能源、汽车制造、半导体、高端装备等高端制造产业迎来了蓬勃发展&#xff0c;成为全球制造业版图中举足轻重的力量。订单数量的激增与国产化转型的趋势&#xff0c;也为高端制造企业的 IT 基础设施带来了新的挑战&#xff…...

【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 - 3人脸识别采集统计人脸检测语音识别

https://www.bilibili.com/video/BV1WgQdYNERe/?p87&spm_id_from333.788.top_right_bar_window_history.content.click&vd_sourcec919d6976fd77ac77f9860cf2e7e0e11 1 人脸识别 # 1 采集完-人脸图片好上传到百度人脸识别-后期使用百度进行人脸识别-保存、删除等-后期…...

达梦的TEMP_SPACE_LIMIT参数

达梦的TEMP_SPACE_LIMIT参数 TEMP_SPACE_LIMIT是达梦数据库中控制临时表空间使用上限的重要参数&#xff0c;它限制了数据库会话可以使用的临时表空间总大小。 一、参数基本说明 1. 参数作用 限制单个会话可以使用的临时表空间总量防止异常SQL消耗过多临时空间影响系统稳定…...

24核32G,千兆共享:裸金属服务器的技术原理与优势

在云计算和数据中心领域&#xff0c;裸金属服务器正逐渐成为企业追求高性能计算的热门选择。本文将深入探讨裸金属服务器的技术原理&#xff0c;以及以“24核32G&#xff0c;千兆共享”配置为代表的裸金属服务器所具备的独特优势。 一、裸金属服务器的技术原理 &#xff08;一…...

杆塔倾斜在线监测装置:电力设施安全运行的“数字守卫”

在输电线路、通信基站及风电设施等场景中&#xff0c;杆塔作为支撑核心设备的基础结构&#xff0c;其稳定性直接关系到能源传输与信息通信的安全。传统人工巡检方式存在效率低、响应滞后等局限&#xff0c;而杆塔倾斜在线监测装置通过技术赋能&#xff0c;实现了对杆塔状态的实…...

C++23 新成员函数与字符串类型的改动

文章目录 引言std::basic_string::contains 与 std::basic_string_view::contains (P1679R3)功能介绍示例代码优势 禁止从 nullptr 构造 std::basic_string 和 std::basic_string_view (P2166R1)背景改动影响 std::basic_string_view 的显式范围构造函数 (P1989R2)功能介绍示例…...

在 ElementUI 中实现 Table 单元格合并

在 ElementUI 中实现 Table 单元格合并 在使用 ElementUI 的 Table 组件时&#xff0c;有时我们需要合并相邻的单元格&#xff0c;以提高表格的可读性和简洁性。下面是一个关于如何在 Table 中根据特定字段合并单元格的实现方法。 逻辑分析 spanMethod 方法&#xff1a;这是 …...

threejs渲染器和前端UI界面

1. three.js Canvas画布布局 学习本节课之前&#xff0c;可以先回顾下第一章节入门部分的6和12两小节关于threejs Canvas画布布局的讲解。 网页上局部特定尺寸&#xff1a;1.6 第一个3D案例—渲染器(opens new window) 全屏&#xff0c;随窗口变化:1.12 Canvas画布布局和全屏…...

AI笔记 - 网络模型 - mobileNet

网络模型 mobileNet mobileNet V1网络结构深度可分离卷积空间可分![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/aff06377feac40b787cfc882be7c6e5d.png) 参考 mobileNet V1 网络结构 MobileNetV1可以理解为VGG中的标准卷积层换成深度可分离卷积 可分离卷积主要有…...