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

【计组】指令与CPU

ISA(指令集体系结构)

ISA完整定义了软件与硬件之间的接口,是机器语言/汇编语言程序员熟悉的

内容

  • 指令格式,指令寻址方式,操作类型,每种操作对应的操作数的相应规定
  • 操作数的类型,操作数寻址方式,按大端/小端存放
  • 程序可访问的寄存器编号、个数、位数,存储空间的大小和编址方式
  • 指令执行过程的控制方式等,包括程序计数器、条件码定义

RISC和CISC

RISC

定长指令

流水线

硬布线

只允许load/store访存

CISC

不定长指令

微程序

访存指令不受限制

扩展操作码

\left ( 1 \right ) 2^{16-6-6}-M-N \\ \left ( 2 \right ) 2^{16-6-6}-1 \\ \left ( 3 \right ) \left [ (2^{4}-P)\times 2^{6}-R \right ]\times 2^{6}=Q

n位操作码的指令共有2^{n}条        零地址+一地址+二地址+... 一共2^{n}

x地址指令条数=2^{新扩展的操作码位数}*(x+1地址留下的扩展窗口数量)-给x-1地址留下的扩展窗口数量

寻址方式

隐含寻址

间接寻址

寄存器寻址

寄存器间接寻址

立即寻址

堆栈寻址

基址寻址

变址寻址

直接寻址

相对寻址

汇编

常见助记符

编址单位、指令字长、指令地址

数据通路

指令执行过程

1.取指令并计算下一跳指令的地址

2.对指令操作码译码

3.计算源操作数地址并取源操作数

4.数据操作

5.计算目的操作数地址并存结果

组成

组合逻辑元件(操作元件)

MUX

加法器

ALU

译码器

存储元件(状态元件)

流水段锁存器

IR

通用寄存器

输出带三态门的寄存器,三态门用来决定信息是否送至总线

带计数功能的寄存器

带移位功能的寄存器

带清零复位功能的寄存器

时序系统

机器周期

一个指令周期可分为取指令、读操作数、执行、写结果等多个基本工作周期称为机器周期

每个机器周期长短可能不同

一个机器周期会划分成若干节拍,每个动作在一个节拍内完成

总线特征

每个节拍每个总线只能有一种数据

每个节拍每个总线上只能有一种控制信号

控制器

硬布线

微程序

指令流水线

五段式流水线

条件转移指令

EX阶段比较个数

MEM阶段决定是否跳转,将目的地址写回PC

WB阶段空段

无条件转移指令

EX阶段将目标地址写回PC

MEM阶段、WB阶段空段

冒险

结构冒险

不同指令争用同一功能部件产生资源冲突时产生的

设置多个功能部件

控制冒险

遇到改变指令正常执行顺序的情况,如转移、调用、返回指令时,会修改PC值,造成断流

对指令进行分支预测,尽早生成转移目标地址

数据冒险

写后读

load/use冒险

  • 前一条指令为访存并将数据存储到存储器,后一条指令需要使用该数据
  • load-use冒险在ID阶段进行检测,检测到后必须使load后的两条指令停顿一个时钟周期后继续执行
  • 配合数据旁路,将load指令MEM阶段取到的数据送到use指令的EX阶段
  • use指令先ID还是先阻塞都可以

数据旁路:从得到需要数据的流水段锁存器直接送至ALU的输入端

插入气泡stall或空操作指令NOP

将寄存器写口和读口分别控制在前后半个时钟周期内操作

多发技术

超标量

一次同时发射多条指令

CPI<1

超流水线

将每个段更细地划分

时钟周期变短

超长指令字

把多条能并行的指令组合成一条具有多个操作码字段的超长指令

http://www.lryc.cn/news/619543.html

相关文章:

  • 建设有人文温度的智能社会:规划与实施路径
  • Apple 的 GPU 加速框架
  • setsockopt函数详解
  • 利用 Makefile 高效启动 VIVADO 软件:深入解析与实践
  • 哈希算法(摘要算法)
  • 超实用!ToDesk/网易UU/向日葵:远程办公文件协作效率与安全实测
  • C++冒泡、选择、快速、桶排序超超超详细解析
  • PCBA:电子产品制造的核心环节
  • 深度学习赋能汽车制造缺陷检测
  • MFC/C++ 如何弹窗选择具体文件或某种类型文件路径,又是如何选择路径
  • 记录RK3588的docker中启动rviz2报错
  • 【论文笔记】DOC: Improving Long Story Coherence With Detailed Outline Control
  • 【114页PPT】基于SAPSRM数字化采购解决方案(附下载方式)
  • XCZU6CG-2FFVC900I Xilinx FPGA AMD ZynqUltraScale+ MPSoC
  • 002.从0开始,实现第一个deepseek问答
  • h5bench(3)
  • 疯狂星期四文案网第38天运营日记
  • 【递归、搜索与回溯算法】综合练习
  • 双椒派E2000D系统盘制作全攻略
  • 2025 电赛 C 题完整通关攻略:从单目标定到 2 cm 测距精度的全流程实战
  • RS485转profinet网关接M8-11 系列 RFID 读卡模块实现读取卡号输出
  • [Oracle数据库] Oracle的表维护
  • npm安装时一直卡住的解决方法
  • Redis宝典
  • PromptPilot — AI 自动化任务的下一个环节
  • 51c自动驾驶~合集14
  • 自动驾驶中安全相关机器学习功能的可靠性定义方法
  • 自动驾驶轨迹规划算法——Apollo EM Planner
  • 云计算-OpenStack 运维开发实战:从 Restful API 到 Python SDK 全场景实现镜像上传、用户创建、云主机部署全流程
  • 关于Google Pixel,或者安卓16,状态栏颜色无法修改的解决方案