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

计算机组成原理——中央处理器(九)

在每一个清晨醒来,你都有一个全新的机会去塑造你的世界。无论昨日经历了多少风雨,今天的你依旧可以启航向梦想的彼岸。生活或许会给你设置障碍,但请相信,这些都是通往成功的垫脚石。不要让短暂的困境遮蔽了你的视野,因为从长远来看,它们都是成长和学习的机会。记住,没有不可逾越的高山,也没有无法跨越的河流。

你是自己故事中的英雄,每一步都充满了意义。即使路途遥远,即使前路未知,也要坚信自己的潜力是无限的。每一次尝试都是一次进步,每一次挑战都是对自己的一次提升。在这段旅程中,你会发现最强大的力量来自于内心深处那份对梦想执着的追求。

所以,请继续怀揣希望前行,用行动证明自己的价值。让你的梦想点燃心中的火焰,照亮前行的道路。即使遇到困难,也请保持坚韧不拔的精神,因为你所经历的一切都将使你变得更加强大。未来的画卷正在你面前徐徐展开,而你手中的画笔将决定它的色彩与辉煌。勇敢地追梦吧,因为这个世界因你的努力而更加精彩。

计算机组成原理资源网

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)。

对比表:
特性静态微程序设计动态微程序设计
存储介质ROMRAM/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
一次重叠91.67×
二次重叠72.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堆叠、量子计算等新技术可能进一步突破现有架构的瓶颈。


http://www.kler.cn/a/543093.html

相关文章:

  • SSL域名证书怎么申请?
  • vite + axios 代理不起作用 404 无效
  • ZooKeeper 技术全解:概念、功能、文件系统与主从同步
  • C# 属性的反射介绍
  • C++20 新特性解析
  • .Net使用EF Core框架如何连接Oracle
  • tp whereOr用法2
  • 链表的‘跑酷’:C++ list 如何在数据中自由穿梭?
  • IGBT工作原理
  • Barra多因子模型
  • 回归新系列——网络安全实操干货系列——Kali Linux新版本——Kali Purple实操指南——信息收集篇1——Nmap(其一)
  • AI赋能前端开发:加速你的职业晋升之路
  • 大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 玩转状态模式
  • Linux下的进程切换与调度
  • Spark商品销售数据可视化分析系统 机器学习预测算法 讲解视频 论文 大数据毕业设计 Hadoop和Hive 销量预测✅
  • 【github】docker realtime
  • 探索RDMA技术:从基础到实践
  • 【Qt】定期清理程序
  • AI写代码工具赋能前端工程师,加速职业晋升
  • 二叉树详解
  • 对前端的技术进行分层
  • 关于FC设备Map 系统的一些需求思考
  • OpenBayes 教程上新 | 告别服务器繁忙,DeepSeek 一键部署教程上线!
  • 解锁电商数据宝藏:淘宝商品详情API实战指南
  • 微信小程序的制作