计算机组成原理——中央处理器(九)
在每一个清晨醒来,你都有一个全新的机会去塑造你的世界。无论昨日经历了多少风雨,今天的你依旧可以启航向梦想的彼岸。生活或许会给你设置障碍,但请相信,这些都是通往成功的垫脚石。不要让短暂的困境遮蔽了你的视野,因为从长远来看,它们都是成长和学习的机会。记住,没有不可逾越的高山,也没有无法跨越的河流。
你是自己故事中的英雄,每一步都充满了意义。即使路途遥远,即使前路未知,也要坚信自己的潜力是无限的。每一次尝试都是一次进步,每一次挑战都是对自己的一次提升。在这段旅程中,你会发现最强大的力量来自于内心深处那份对梦想执着的追求。
所以,请继续怀揣希望前行,用行动证明自己的价值。让你的梦想点燃心中的火焰,照亮前行的道路。即使遇到困难,也请保持坚韧不拔的精神,因为你所经历的一切都将使你变得更加强大。未来的画卷正在你面前徐徐展开,而你手中的画笔将决定它的色彩与辉煌。勇敢地追梦吧,因为这个世界因你的努力而更加精彩。
计算机组成原理资源网
https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载
目录
6.5 微程序设计技术
6.5.1 微命令编码
1. 直接控制法(不编码):
2. 字段编码法:
3. 混合编码法:
编码对比表:
6.5.2 微地址的形成方法
1. 计数器法(顺序执行):
2. 下址字段法(显式指定):
3. 分支逻辑法(条件跳转):
4. 多路转移法(多分支跳转):
地址形成对比表:
6.5.3 微指令格式
1. 水平型微指令:
2. 垂直型微指令:
微指令格式对比表:
6.5.4 静态微程序设计与动态微程序设计
1. 静态微程序设计:
2. 动态微程序设计:
对比表:
6.6 流水CPU
6.6.1 指令的执行方式
1. 顺序执行:
2. 一次重叠执行:
3. 二次重叠执行(经典五级流水线):
执行方式对比:
6.6.2 流水CPU的结构
1. 五级流水线结构:
2. 流水段寄存器:
3. 流水控制单元:
结构示意图:
6.6.3 流水线中的主要问题
1. 资源冲突(Structural Hazard):
2. 数据相关(Data Hazard):
3. 控制相关(Control Hazard):
问题与解决对比表:
6.6.4 指令级并行技术
1. 超流水线(Super Pipeline):
2. 超标量(Superscalar):
3. 超长指令字(VLIW):
4. 动态调度(Dynamic Scheduling):
技术对比表:
总结
6.5 微程序设计技术
6.5.1 微命令编码
微命令编码是微程序设计中的核心问题,目的是通过合理编码减少微指令的长度,同时保证控制信号的灵活性。常见的编码方式包括:
1. 直接控制法(不编码):
-
每个微命令占用一个独立的控制位,直接表示是否激活该信号。
-
优点:控制逻辑简单,信号生成速度快。
-
缺点:微指令长度大,存储资源浪费。
-
适用场景:控制信号数量较少的小型系统。
2. 字段编码法:
-
将互斥的微命令合并为字段,通过编码选择其中一个信号。
-
示例:ALU操作类型(ADD/SUB/AND/OR)可编码为2位字段:
00: ADD 01: SUB 10: AND 11: OR
-
优点:显著缩短微指令长度。
-
缺点:需额外译码电路,增加硬件复杂度。
3. 混合编码法:
-
结合直接控制与字段编码,对高频信号直接控制,低频信号编码。
-
案例:某微指令格式:
| RegWrite (1位) | ALUOp (2位) | MemCtrl (2位) |
-
RegWrite直接控制寄存器写使能。 -
ALUOp编码选择运算类型。 -
MemCtrl编码选择访存操作(读/写/无操作)。
-
编码对比表:
| 编码方式 | 微指令长度 | 硬件复杂度 | 灵活性 | 适用场景 |
|---|---|---|---|---|
| 直接控制 | 长 | 低 | 高 | 简单控制器 |
| 字段编码 | 短 | 中 | 中 | 通用微程序控制器 |
| 混合编码 | 中 | 高 | 高 | 复杂指令集系统 |
6.5.2 微地址的形成方法
微地址决定下一条微指令的位置,常见方法包括:
1. 计数器法(顺序执行):
-
通过微程序计数器(μPC)自动递增地址。
-
适用场景:无分支的线性微程序段。
2. 下址字段法(显式指定):
-
微指令中直接包含下一地址字段。
-
优点:灵活性高,支持任意跳转。
-
缺点:增加微指令长度。
-
案例:Intel 8086 的微程序控制器。
3. 分支逻辑法(条件跳转):
-
根据条件码(如零标志、溢出标志)动态生成地址。
-
实现:通过多路选择器选择跳转地址。
-
示例:
if (ZeroFlag) then μPC = Address1 else μPC = Address2
4. 多路转移法(多分支跳转):
-
结合操作码和状态标志生成多路地址。
-
案例:根据操作码映射到不同微程序的入口地址。
地址形成对比表:
| 方法 | 硬件需求 | 灵活性 | 典型应用 |
|---|---|---|---|
| 计数器法 | 低 | 低 | 顺序执行 |
| 下址字段法 | 中 | 高 | 复杂控制流 |
| 分支逻辑法 | 高 | 中 | 条件跳转 |
| 多路转移法 | 高 | 高 | 多指令入口 |
6.5.3 微指令格式
微指令的格式设计直接影响控制器的效率和复杂度,主要分为两类:
1. 水平型微指令:
-
控制字段宽,包含大量并行微命令。
-
特点:
-
高并行性:单条微指令可激活多个控制信号。
-
长指令字:典型长度为50~200位。
-
-
适用场景:高性能处理器(如CISC架构的x86)。
2. 垂直型微指令:
-
控制字段短,类似机器指令格式,需多次操作完成复杂功能。
-
特点:
-
低并行性:单条微指令仅激活少量信号。
-
短指令字:通常为16~32位。
-
-
适用场景:嵌入式系统或低功耗设备。
微指令格式对比表:
| 特性 | 水平型微指令 | 垂直型微指令 |
|---|---|---|
| 指令长度 | 长(50~200位) | 短(16~32位) |
| 并行性 | 高(多信号同时激活) | 低(信号串行激活) |
| 硬件复杂度 | 高(需复杂译码电路) | 低(类似普通指令译码) |
| 典型应用 | CISC处理器(如x86) | RISC协处理器(如ARM Cortex-M) |
6.5.4 静态微程序设计与动态微程序设计
1. 静态微程序设计:
-
微程序固化在只读控制存储器(ROM)中,不可修改。
-
优点:稳定性高,抗干扰能力强。
-
缺点:无法升级或修复微程序错误。
-
应用:早期计算机(如IBM 360)。
2. 动态微程序设计:
-
微程序存储在可写控制存储器(WCS)中,允许运行时修改。
-
优点:灵活性高,支持指令集扩展或优化。
-
缺点:成本高,安全性较低。
-
应用:实验性处理器或需要动态适配的场景(如FPGA)。
对比表:
| 特性 | 静态微程序设计 | 动态微程序设计 |
|---|---|---|
| 存储介质 | ROM | RAM/EPROM |
| 可修改性 | 不可修改 | 可动态修改 |
| 成本 | 低 | 高 |
| 适用场景 | 量产化商用处理器 | 科研或定制化硬件 |
6.6 流水CPU
6.6.1 指令的执行方式
流水线通过将指令执行划分为多个阶段并行处理,提升CPU吞吐率。
1. 顺序执行:
-
指令按串行方式执行,前一条完成后才启动下一条。
-
缺点:资源利用率低,吞吐率低。
-
示例:非流水线CPU执行3条指令需
3×5=15个时钟周期。
2. 一次重叠执行:
-
将指令分为“取指”和“执行”两阶段,相邻指令部分重叠。
-
示例:3条指令需
5 + 2×(3-1) = 9周期。
3. 二次重叠执行(经典五级流水线):
-
划分更多阶段(取指、译码、执行、访存、写回),实现更高并行度。
-
示例:MIPS五级流水线执行3条指令仅需
5 + (3-1) = 7周期。
执行方式对比:
| 方式 | 时钟周期数(3条指令) | 吞吐率提升倍数 |
|---|---|---|
| 顺序执行 | 15 | 1× |
| 一次重叠 | 9 | 1.67× |
| 二次重叠 | 7 | 2.14× |
6.6.2 流水CPU的结构
流水CPU的核心是通过流水段寄存器分隔各阶段,典型结构包括:
1. 五级流水线结构:
-
取指(IF):从指令缓存读取指令。
-
译码(ID):解析指令并读取寄存器操作数。
-
执行(EX):ALU执行计算。
-
访存(MEM):访问数据存储器。
-
写回(WB):将结果写入寄存器。
2. 流水段寄存器:
-
保存前一阶段的结果,供下一阶段使用。
-
示例:IF/ID寄存器存储取指阶段的指令和PC值。
3. 流水控制单元:
-
处理流水线冲突(如数据相关、控制相关)。
结构示意图:
+-------+ +-------+ +-------+ +-------+ +-------+ | IF | -> | ID | -> | EX | -> | MEM | -> | WB | +-------+ +-------+ +-------+ +-------+ +-------+↑ ↑ ↑ ↑ ↑ 指令缓存 寄存器堆 ALU 数据缓存 寄存器写回
6.6.3 流水线中的主要问题
1. 资源冲突(Structural Hazard):
-
多个流水段争用同一硬件资源(如单端口存储器)。
-
解决方法:
-
增加资源副本(如双端口存储器)。
-
插入流水线气泡(Stall)。
-
2. 数据相关(Data Hazard):
-
后续指令需要前一指令的未完成结果。
-
类型:
-
RAW(Read After Write):未写入完成即读取。
-
WAR(Write After Read):未读取完成即写入(罕见)。
-
WAW(Write After Write):写入顺序错误(罕见)。
-
-
解决方法:
-
转发(Forwarding):将结果提前从EX段传递到ID段。
-
插入气泡:强制等待1个周期。
-
3. 控制相关(Control Hazard):
-
分支指令改变程序流,导致后续指令无效。
-
解决方法:
-
分支预测:静态预测(默认不跳转)或动态预测(历史记录)。
-
延迟槽(Delay Slot):填充无关指令到分支指令后。
-
问题与解决对比表:
| 问题类型 | 原因 | 解决方法 |
|---|---|---|
| 资源冲突 | 硬件资源争用 | 增加资源或插入气泡 |
| 数据相关 | 数据依赖未完成 | 转发技术或插入气泡 |
| 控制相关 | 分支指令改变程序流 | 分支预测或延迟槽 |
6.6.4 指令级并行技术
通过挖掘指令间并行性,进一步提升流水线效率。
1. 超流水线(Super Pipeline):
-
将流水线划分为更多阶段(如10级),提高时钟频率。
-
缺点:冲突概率增加,需更复杂的冲突解决机制。
-
案例:Intel Pentium 4的20级流水线。
2. 超标量(Superscalar):
-
每个时钟周期发射多条指令到多个执行单元。
-
示例:同时发射1条整数指令和1条浮点指令。
-
案例:ARM Cortex-A77支持3指令/周期发射。
3. 超长指令字(VLIW):
-
编译器静态打包多条独立指令为一条长指令。
-
优点:硬件简单,依赖编译器优化。
-
缺点:对编译器要求极高。
-
案例:TI TMS320系列DSP。
4. 动态调度(Dynamic Scheduling):
-
硬件动态调整指令执行顺序(如Tomasulo算法)。
-
优点:无需编译器介入,适应运行时变化。
-
案例:现代CPU(如Intel Core i7)。
技术对比表:
| 技术 | 并行粒度 | 硬件复杂度 | 典型应用 |
|---|---|---|---|
| 超流水线 | 时间 | 高 | 高频CPU |
| 超标量 | 空间 | 极高 | 通用处理器 |
| 超长指令字 | 静态 | 低 | 嵌入式DSP |
| 动态调度 | 动态 | 极高 | 高性能服务器CPU |
总结
微程序设计技术通过编码优化和动态控制提升灵活性,而流水CPU则通过并行化大幅提高吞吐率。两者结合(如现代CPU的微程序控制流水线)构成了高性能处理器的核心设计思想。未来随着工艺进步,3D堆叠、量子计算等新技术可能进一步突破现有架构的瓶颈。
相关文章:
计算机组成原理——中央处理器(九)
在每一个清晨醒来,你都有一个全新的机会去塑造你的世界。无论昨日经历了多少风雨,今天的你依旧可以启航向梦想的彼岸。生活或许会给你设置障碍,但请相信,这些都是通往成功的垫脚石。不要让短暂的困境遮蔽了你的视野,因…...
网页版贪吃蛇小游戏开发HTML实现附源码!
项目背景 贪吃蛇是一款经典的休闲小游戏,因其简单易玩的机制和丰富的变形而深受玩家喜爱。本次开发目标是实现一款网页版贪吃蛇小游戏,并通过前端与后端结合的方式,提供一个流畅的在线体验。 实现过程 游戏逻辑设计 蛇的移动:…...
基于java ssm springboot选课推荐交流平台系统设计和实现
基于JavaWeb开发的 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 📝 🚀&…...
Sigma-Aldrich化学品安全技术说明书(SDS)查询教程
在当今的现代工业体系里,化学品的应用极为广泛,贯穿于众多行业的生产环节。以电子、皮革、玩具、工艺品、家具制造等行业为例,有机溶剂的使用频率颇高,这虽极大地推动了生产的发展,却也埋下了风险隐患。在这些企业中&a…...
嵌入式实训室解决方案(2025年最新版)
一、背景概述 随着信息技术的迅猛进步,嵌入式系统已成为智能化设备与应用的核心驱动力,引领产业变革与创新。其应用范围广泛,涵盖智能家居、智能医疗、工业控制、交通及网络通信等领域,是信息化与智能化转型的关键。在此背景下&am…...
Spring Cloud — 深入了解Eureka、Ribbon及Feign
Eureka 负责服务注册与发现;Ribbon负责负载均衡;Feign简化了Web服务客户端调用方式。这三个组件可以协同工作,共同构建稳定、高效的微服务架构。 1 Eureka 分布式系统的CAP定理: 一致性(Consistency)&am…...
全排列(力扣46)
这道题让我们求这个集合有多少种排列方式,那么与之前组合问题的不同就在于要考虑元素之间的顺序了,所以每一层递归的or循环的起始值无需变量控制,都从0开始。但是一个排列中不能出现相同元素,所以别忘了去重,这里的去重…...
Mac部署Jenkins 一
Mac部署Jenkins 一 一.Jenkins 部署依赖 JDK 环境 查看 Mac JDK 环境,如果没有安装,先安装 打开终端输入命令:java -version Mac安装配置 JDK 二. 检查 HomeBrew 安装 检查 HomeBrew 是否安装,终端输入命令:brew -v Mac安装HomeBrew …...
附录1:组维英文简写大全
附录1:组维英文简写大全 中央处理器 一、技术与厂商 FSB 前端总线频率 HT 超线程技术 Intel 英特尔 AMD 美国超微 VIA 威盛 二、CPU插座 Slot 针插式 ZIF 零插拔力的插座 Socket 触点式 LGA (IntelCPU封装形式名称) 三…...
SQL Server:查看内存使用情况
目录标题 **1. 使用系统视图和动态管理视图****查看 SQL Server 进程的内存使用情况****查看系统级别的内存使用情况****查看 SQL Server 内存管理器的状态** **2. 使用性能监视器(PerfMon)****添加内存使用情况计数器** **3. 使用 DBCC MEMORYSTATUS 命…...
chrome-mojo C++ Bindings API
概述 Mojo C 绑定 API 利用C 系统 API提供一组更自然的原语,用于通过 Mojo 消息管道进行通信。结合从Mojom IDL 和绑定生成器生成的代码,用户可以轻松地跨任意进程内和进程间边界连接接口客户端和实现。 本文档通过示例代码片段提供了绑定 API 用法的详…...
uniapp + vite + 使用多个 ui 库
样式冲突 新建了个项目 安装多个 ui 库 发现 uview-plus 和 Ant Design Vue 3.2.20 的 按钮样式 冲突uvuew-plus 的按钮样式 会被 ant 的样式给覆盖解决方式 找到圆满 ant.css 注释 button, html [type"button"], [type"reset"], [type"submit&quo…...
Unity3D 制作动画的时间轴管理方案: Timeline编
在 Unity3D 中使用 Timeline 实现所见即所得(WYSIWYG)的动画制作,合理的项目设置、资源管理和工作流程优化。以下基于本人实践之最佳方案总结: 1. 项目与场景设置 渲染模式与分辨率 在 Game 视图中选择与目标平台匹配的分辨率和屏幕比例(如 16:9 或 4:3),确保编辑时预览…...
逻辑回归不能解决非线性问题,而svm可以解决
逻辑回归和支持向量机(SVM)是两种常用的分类算法,它们在处理数据时有一些不同的特点,特别是在面对非线性问题时。 1. 逻辑回归 逻辑回归本质上是一个线性分类模型。它的目的是寻找一个最适合数据的直线(或超平面&…...
Prompt通用技巧1
Prompt 的典型构成 角色:给 AI定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」指示:对任务进行描述上下文: 给出与任务相关的其它背景信息(尤其在多轮交互中)。例子 : 必要时给出举例,学术中称为 one-shot learning,few-sho…...
C# 上位机--枚举
一、引言 在 C# 上位机开发过程中,枚举(Enum)是一种非常实用的数据类型,它可以将一组相关的常量组织在一起,使代码更加清晰、易读和易于维护。 二、枚举的基本概念 枚举(Enum)是一种值类型&a…...
01docker run
docker run 用于从镜像创建并启动容器。下面是一些常用的选项: -d: 让容器在后台运行,即以守护进程模式运行。--name: 给容器指定一个名称,便于识别和管理。-p: 将宿主机的端口映射到容器内的端口,实现网络通信。-e: 设置环境变量…...
易语言.飞扬特性展示2
类型反射:编译后的类型具有“自省”性。可以在运行时获取类型(或类库)的定义信息。可以根据类名称动态创建类对象,并调用对象指定方法。提供“反射”类库供程序员使用。静态编译: 源代码将被直接编译为可执行代码。 没…...
FlashDecoding
Flash Attention是将Q划分到所有SM block上。每个SM block上的Q,负责和所有K和所有V进行计算,得到对应的结果。期间,SM block彼此之间,不需要通信。 在prefill阶段,seqLength*batchSize*Heads足够多,所以每…...
提示词生成新方法,用Make自动化生成
提示词生成新方法!用Make自动化生成! 在当今快速发展的科技时代,人工智能(AI)正在改变我们如何创作内容。然而,待人青睐的诀窍——提示词生成,可能令许多创作者感到迷惘。你是否曾在写作中挣扎…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
