计算机组成原理笔记(十五)——3.5指令系统的发展
不同类型的计算机有各具特色的指令系统,由于计算机的性能、机器结构和使用环境不同,指令系统的差异也是很大的。
3.5.1 x86架构的扩展指令集
x86架构的扩展指令集是为了增强处理器在多媒体、三维图形、并行计算等领域的性能而设计的。这些扩展指令集通过单指令多数据(SIMD)技术,实现高效的数据并行处理。
一、核心扩展指令集演进
x86扩展指令集的演进可以归纳为以下几个阶段:

二、关键扩展指令集详解
1. MMX(Multi Media eXtension)
-
目标:优化多媒体处理(视频/音频)。
-
特性:
- 引入64位寄存器(MM0~MM7),支持整数并行计算。
- 新增57条指令,支持打包整数运算(8×8位、4×16位、2×32位)。
-
示例(矩阵加法):
MOVQ MM0, [A] ; 加载64位数据A到MM0 MOVQ MM1, [B] ; 加载64位数据B到MM1 PADDW MM0, MM1 ; 16位整数并行相加
2. SSE(Streaming SIMD Extensions)
- 目标:增强浮点运算和数据处理能力。
- 特性:
- 新增128位XMM寄存器(XMM0~XMM7)。
- 支持单精度浮点数的SIMD操作(4×32位)。
- 指令类型:

3. SSE2/SSE3/SSSE3
- SSE2:支持双精度浮点数(2×64位)和整数的128位运算。
- SSE3:优化科学计算和线程同步(如水平加法指令
HADDPS)。 - SSSE3:进一步扩展整数运算和随机数生成指令。
4. AVX(Advanced Vector Extensions)
-
目标:提升浮点性能和扩展数据宽度。
-
特性:
- 寄存器宽度扩展至256位(YMM寄存器),支持8×32位单精度浮点或4×64位双精度浮点。
- VEX编码:改进指令编码效率,支持三操作数指令(如
VADDPS YMM0, YMM1, YMM2)。
-
流程图(矢量乘法累加FMA):

5. 其他扩展指令集
- 3DNow!(AMD):针对3D图形处理(向量点积、坐标变换)。
- FMA(Fused Multiply-Accumulate):熔合乘加运算,提升深度学习性能。
- AVX-512:进一步扩展至512位寄存器,支持复杂科学计算和AI模型训练。
三、硬件架构对比
不同扩展指令集的硬件支持差异:
| 指令集 | 寄存器宽度 | 数据类型 | 典型应用场景 |
|---|---|---|---|
| MMX | 64位 | 8/16/32位整数 | 视频解码 |
| SSE | 128位 | 32位浮点 | 游戏物理引擎 |
| AVX | 256位 | 64位浮点 | 科学计算、机器学习 |
| AVX-512 | 512位 | 混合精度 | AI训练、金融建模 |
四、扩展指令集的作用与编程应用
-
性能提升:通过单指令处理多数据(SIMD),显著加速密集计算任务。
-
代码优化示例(SSE加速矩阵乘法):
#include <immintrin.h> void matrix_mult(float* A, float* B, float* C, int n) {for (int i=0; i<n; i++) {__m128 row = _mm_load_ps(&A[i*n]); // 加载一行数据for (int j=0; j<n; j++) {__m128 col = _mm_load_ps(&B[j]); __m128 prod = _mm_mul_ps(row, col);_mm_store_ps(&C[i*n+j], prod); }} } -
编译选项:需开启指令集支持(如GCC的
-mavx2)。
五、注意事项
- 兼容性:不同CPU代数支持的指令集不同(需通过
CPUID指令检测兼容性)。 - 功耗:宽寄存器操作会增加功耗,需平衡性能与能效。
- 混合编程:通常结合内联汇编或特定编译器内部函数(如Intel Intrinsics)使用。
3.5.2 从复杂指令系统到精简指令系统
一、背景与设计思想
传统计算机设计中,指令系统随着硬件复杂度提升而变得庞大(CISC,Complex Instruction Set Computer)。但随着技术演进,研究发现了指令使用频度的“20%-80%定律”——即 80% 的时间仅执行 20% 的简单指令。这一观察推动了 RISC(Reduced Instruction Set Computer)的设计理念:通过精简指令集、简化硬件设计,提升效率。
二、CISC与RISC对比
1. 核心设计目标
- CISC目标:通过丰富指令集减少程序指令数,用硬件复杂度换取编程简化。
- RISC目标:精简指令集,通过提高单条指令执行速度(降低CPI)优化性能。
2. 特性对比

三、RISC的优化逻辑
-
硬件优化
- 单周期指令:绝大多数指令在1个时钟周期内完成。
- 流水线设计:通过并行执行消除资源闲置(如五级流水:取指、译码、执行、访存、写回)。
- 寄存器优化:增加通用寄存器数量(常达32个以上),减少访存开销。

-
编译器优化
- 延迟槽调度:填充流水线空闲周期,避免因分支指令导致的流水线停顿。
- 寄存器分配优化:最大化利用寄存器,减少内存访问。
四、关键性能公式
程序执行时间 t t t 可表示为:
t = I × C P I × T t = I \times CPI \times T t=I×CPI×T
- I I I:程序总指令数(CISC更小,RISC稍大)。
- C P I CPI CPI:平均每条指令周期数(RISC接近1,CISC更高)。
- T T T:时钟周期时间(RISC较短)。
示例对比:
| 类型 | 平均指令数(I) | 平均CPI | 时钟周期(T) | 性能优势 |
|---|---|---|---|---|
| CISC | 1000 | 4 | 1ns | 低 |
| RISC | 1500 | 1 | 0.8ns | 高 |
五、典型架构与应用
-
CISC代表:x86架构(Intel/AMD)。
- 特点:兼容性强,适合复杂应用(如Windows系统、服务器负载)。
-
RISC代表:ARM架构(移动设备)、RISC-V(开源嵌入)。
- 特点:低功耗、高性能,广泛用于手机(如苹果A系列芯片)、IoT设备。

- 特点:低功耗、高性能,广泛用于手机(如苹果A系列芯片)、IoT设备。
六、总结:CISC与RISC的平衡
现代架构(如x86-64)融合两者特性:
- 硬件层面:兼容CISC指令,但内部微码转为RISC风格操作。
- 软件层面:编译器优化生成更高效的指令序列。
3.5.3 VLIW 和EPIC
VLIW(Very Long Instruction Word,超长指令字)和 EPIC(Explicit Parallel Instruction Code,显式并行指令代码)是两种以编译器驱动的并行指令处理技术,通过静态调度实现高效指令级并行。
一、核心概念与设计目标
-
VLIW
- 原理:将多个独立的简单指令组合成一条超长指令字(通常128~256位),运行时分解到多个功能单元并行执行。
- 特点:
- 编译器负责分析指令间并行性和数据依赖,确定可并行执行的指令组合。
- 硬件简化:无需动态调度(如超标量的乱序执行),降低电路复杂度。
- 示例:将4条独立指令合并为1条VLIW指令。
-
EPIC
- 衍生于VLIW:由Intel和HP联合设计,强调显式并行性(由编译器显式标记并行指令)。
- 目标:克服传统分支预测和数据依赖的局限性,减少流水线中断。
- 代表架构:Intel IA-64(Itanium系列)。
二、核心技术与执行流程
1. VLIW的执行流程

- 关键要点:
- 组合条件:指令间无数据依赖。
- 硬件架构:包含多个独立执行单元(如ALU、FPU、内存单元等),并行处理超长指令中的子指令。
2. EPIC的优化与指令束
EPIC将显式并行性和高级分支处理结合:
-
并行指令束(Instruction Bundle):每个指令束包含3条不相关的指令(128位)。
-
分支判定技术:

- 相比传统分支预测,无需清空流水线,提高稳定性。
EPIC执行流程(以IA-64为例)

三、关键技术与对比
1. 核心功能特性
| 技术 | 并行方式 | 调度主体 | 硬件复杂度 | 编译器角色 |
|---|---|---|---|---|
| VLIW | 静态组合指令束 | 编译器 | 低(无动态调度) | 分析并行与依赖关系 |
| EPIC | 显式标记并行性 | 编译器 | 中等(支持动态检测) | 显式打包指令束 |
| 超标量 | 动态调度多指令 | 硬件 | 高(乱序执行) | 无直接控制 |
2. 创新技术
- 数据推测装载:预加载可能需要的缓存数据,减少访存延迟。
- 分支判定技术:同时执行多路径分支,避免预测错误开销。
- 大规模寄存器:减少访存依赖(如Itanium的128个整数和浮点寄存器)。
四、与传统架构的对比如表
| 架构 | CISC | RISC | VLIW/EPIC |
|---|---|---|---|
| 设计 | 复杂指令,硬件微码 | 精简指令,硬布线控制 | 超长指令束,编译器显式调度 |
| 并行性 | 序列化执行 | 流水线/超标量 | 静态或显式并行 |
| 硬件 | 复杂控制逻辑 | 简单控制逻辑 | 功能单元多,逻辑简单 |
| 优势 | 指令密度高 | 执行效率高 | 并行度高,低功耗 |
| 劣势 | 难以并行优化 | 依赖动态调度 | 编译器复杂,适应性弱 |
五、应用场景与限制
- 适用领域:科学计算、大规模并行处理(如AI训练、金融建模)。
- 限制:
- 编译器依赖:需智能编译器发现并打包并行指令。
- 代码灵活性差:动态生成代码难以优化。
- 缓存需求大:超长指令束占用较大缓存空间。
相关文章:
计算机组成原理笔记(十五)——3.5指令系统的发展
不同类型的计算机有各具特色的指令系统,由于计算机的性能、机器结构和使用环境不同,指令系统的差异也是很大的。 3.5.1 x86架构的扩展指令集 x86架构的扩展指令集是为了增强处理器在多媒体、三维图形、并行计算等领域的性能而设计的。这些扩展指令集通…...
基于时间序列分解与XGBoost的交通通行时间预测方法解析
一、问题背景与数据概览 在城市交通管理系统中,准确预测道路通行时间对于智能交通调度和路径规划具有重要意义。本文基于真实道路传感器数据,构建了一个结合时间序列分解与机器学习模型的预测框架。数据源包含三个核心部分: 道路通行数据(new_gy_contest_traveltime_train…...
基于XGBoost的异烟酸生产收率预测:冠军解决方案解析
1. 引言 在化工生产领域,准确预测产品收率对优化工艺流程、降低生产成本具有重要意义。本文以异烟酸生产为研究对象,通过机器学习方法构建预测模型,在包含10个生产步骤、42个工艺参数的数据集上实现高精度收率预测。该方案在工业竞赛中斩获冠军,本文将深度解析其技术实现细…...
计算机视觉算法实现——电梯禁止电瓶车进入检测:原理、实现与行业应用(主页有源码)
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 1. 电梯安全检测领域概述 近年来,随着电动自行车(以下简称"电瓶车"&…...
智能制造方案精读:117页MES制造执行系统解决方案【附全文阅读】
本方案围绕制造执行系统(MES)展开,阐述了智能制造相关概念及发展趋势,指出 MES 是连接 ERP 与生产现场的关键系统。介绍其在加工、装配及其他场景的应用,通过实例展示各场景下的功能、特点和实施效果,如实现生产信息可视化、产品追溯、设备监控等。还提及实施 MES 面临的…...
【操作系统】【内存分配过程】
内存分配的过程 过程 程序向内存请求空间(如new,malloc)程序检查虚拟内存是否有剩余分配虚拟内存调用程序时,CPU 会查页表,若发现该虚拟页未映射,则触发缺页中断分配物理页,并建立页表映射继续…...
MOM成功实施分享(八)汽车活塞生产制造MOM建设方案(第二部分)
在制造业数字化转型的浪潮中,方案对活塞积极探索,通过实施一系列数字化举措,在生产管理、供应链协同、质量控制等多个方面取得显著成效,为行业提供了优秀范例。 1.转型背景与目标:活塞在数字化转型前面临诸多挑战&…...
Swift的学习笔记(一)
Swift的学习笔记(一) 文章目录 Swift的学习笔记(一)元组基本语法1. **创建元组**2. **访问元组的值**3. **命名的元组**4. **解构元组**5. **忽略某些值** 可选值类型定义 OptionalOptional 的基本使用1. **给 Optional 赋值和取值…...
Azure AI Foundry 正在构建一个技术无障碍的未来世界
我们习以为常的街道和数字世界,往往隐藏着被忽视的障碍——凹凸不平的路面、不兼容的网站、延迟的字幕或无法识别多样化声音的AI模型。这些细节对某些群体而言,却是日常的挑战。正如盲道不仅帮助视障者,也优化了整体城市体验,信息…...
中厂算法岗面试总结
时间:2025.4.10 地点:上市的电子有限公司 面试流程: 1.由负责人讲解公司文化 2,由技术人员讲解公司的技术岗位,还有成果 3.带领参观各个工作位置,还有场所 4.中午吃饭 5.面试题,闭卷考试…...
地毯填充luogu
P1228 地毯填补问题 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿。宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地方盖上,美丽漂亮聪慧的公主就是他的人了。公主…...
哈喽打车 小程序 分析
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 这一次遇到这种风控感觉挺有…...
基于 Vue 3 + Express 的网盘资源搜索与转存工具,支持响应式布局,移动端与PC完美适配
一个基于 Vue 3 Express 的网盘资源搜索与转存工具,支持响应式布局,移动端与PC完美适配,可通过 Docker 一键部署。 功能特性 🔍 多源资源搜索 支持多个资源订阅源搜索支持关键词搜索与资源链接解析支持豆瓣热门榜单展示 &#…...
OL9设置oracle23ai数据库开机自启动
1、设置oracle用户的环境变量信息 [oracleOracleLinuxR9U5 ~]$vim ~/.bash_profile # Set Oracle environment variables for Oracle 23c AI export ORACLE_HOME/opt/oracle/product/23ai/dbhomeFree export ORACLE_SIDFREE export PATH$ORACLE_HOME/bin:$PATH export LD_LIB…...
【操作系统学习篇-Linux】进程
1. 什么是进程 课本概念:程序的一个执行实例,正在执行的程序等 内核观点:担当分配系统资源(CPU时间,内存)的实体。 如果你就看这个来理解进程,那么恭喜你,作为初学者,你…...
CF985G Team Players
我敢赌,就算你知道怎么做,也必然得调试半天才能 AC。 [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 图片来自洛谷。 [Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis] 显然不可能正面计算。所以…...
企业经营决策风险
在企业的经营过程中,领导者每天都在面对大量的决策——该扩大生产还是收缩业务?该增设销售渠道还是提升产品质量?但你知道吗,企业最大的成本,不是生产成本,也不是人工成本,而是决策错误的成本&a…...
UE5蓝图实现打开和关闭界面、退出
Button_Back 和Button_Exit是创建的两个按钮事件。 1.Create Widget 创建界面(打开界面) 2.Add to Viewport 添加到视图 3.remove form Parent,Target:self 从父节点移除当前界面(关闭界面) 4.Quit Game 退…...
【Linux C】简单bash设计
主要功能 循环提示用户输入命令(minibash$)。创建子进程(fork())执行命令(execlp)。父进程等待子进程结束(waitpid)。关键问题 参数处理缺失:scanf("%s", buf)…...
安全是基石
“安全是基石”这句话强调了安全在个人、企业、社会等各个层面中的基础性和不可替代的重要性。无论是物理安全、网络安全、数据安全,还是生产安全、公共安全,都是保障稳定发展的前提。以下是不同领域中“安全”作为基石的体现: 1. 个人安全 基…...
JavaWeb 课堂笔记 —— 09 MySQL 概述 + DDL
本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…...
echarts 图表
echart快速上手 快速上手 - 使用手册 - Apache EChartshttps://echarts.apache.org/handbook/zh/get-started/...
无线通信网
1.2.4G相邻信道间有干扰,5G相邻信道几乎无干扰 2.2.4G频段的优点是信号强,衰减小,穿墙强,覆盖距离远;缺点是带宽较窄,速度较慢,干扰较大。 5G频段的优点是带宽较宽,速度较快&#…...
数据结构:哈希表 | C++中的set与map
上回说到,红黑树是提升了动态数据集中频繁插入或删除操作的性能。而哈希表(Hash Table),则是解决了传统数组或链表查找数据必须要遍历的缺点。 哈希表 哈希表的特点就是能够让数据通过哈希函数存到表中,哈希函数能够将数据处理为表中位置的索…...
随笔 20250413 Elasticsearch 的 term 查询
你这个问题非常经典,来自于 Elasticsearch 的 term 查询是 ✅精确匹配(case-sensitive,大小写敏感)! 🧨 为什么查不到 "World"? 你的查询语句是: GET /movie/_search {&…...
容器初始化Spring Boot项目原理,即web项目(war)包涉及相关类对比详解
以下是关于 SpringBootServletInitializer、ServletContainerInitializer、SpringServletContainerInitializer、WebApplicationInitializer 和 ServletInitializer 的对比详解及总结表格: 1. 核心对比详解 (1) SpringBootServletInitializer 作用: S…...
Python创意:AI图像生成
1. 基本概念 AI 图像生成通常基于以下几种方法: 一.生成对抗网络 (GAN) 生成对抗网络(GAN,Generative Adversarial Network)是一种深度学习框架,主要用于生成新的、类似于训练数据的样本。自2014年由Ian Goodfellow及…...
[ctfshow web入门] web29
前置知识 eval: 把字符串按照 PHP 代码来执行,例如eval(“echo 1;”);这个函数拥有回显 system:使php程序执行系统命令,例如,system(“ls”);就是查看当前目录,这个拥有回显 preg_match:查找字符串是否匹配…...
5.JVM-G1垃圾回收器
一、什么是G1 二、G1的三种垃圾回收方式 region默认2048 三、YGC的过程(Step1) 3.1相关代码 public class YGC1 {/*-Xmx128M -XX:UseG1GC -XX:PrintGCTimeStamps -XX:PrintGCDetails -XX:UnlockExperimentalVMOptions -XX:G1LogLevelfinest128m5% 60%6.4M 75M*/private stati…...
Odrive0.5.1-FOC电机控制 arm_cos_f32.cpp arm_sin_f32.cpp代码实现(一)
01 查表法 在 our_arm_cos_f32 函数中,查表(Look-Up Table, LUT) 的核心是 预计算的正弦值表 sinTable_f32,通过巧妙利用余弦与正弦的相位关系实现快速余弦计算。以下是详细解析: 1. 查的是什么表? (1) 表内…...
