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

协处理器+流水线 (9)

3级流水线 流程:

取指令

译码

执行。

每一个时钟周期都可以执行一个指令。

提高CPU的能力有两种方法,

1 提高时钟频率,造成单位时间内执行的指令更多。

2 减少每条指令的平均指令周期数CPI ,CPI我不太懂,但大概的意思就是增加流水线,比如由三到五。

最佳的流水线 :

一条指令紧跟着一条指令。 没有浪费时钟周期,就是一个时钟。

然后是 ldr 的指令。

这个指令指的是 将内存中的数据加载到寄存器中。

ldr 的 第四个周期 M代表的是 从内存中取数据放到 暂存器

ldr 的 第五个周期W 代表的是将暂存器中的数据放到寄存器中。

本来在第4个周期,就会执行 AND指令,但是却拖到了 第6 个周期。

但是这里为什么 AND指令要 等呢, 不知道。

然后是跳转的指令。 BL

BL 指令的 第一个周期,E , 是指计算出 需要跳转的位置。

BL指令的第二个周期, L, 是指 将预取的指令+译码的指令全部丢弃,然后,从新预取之前计算的指令,然后,将返回的地址放到 r14  中。

BL指令的第三个周期,A, 的含义不知道,但是已经开始对跳转的指令进行译码了。

接下来是中断流水线。

IRQ 在 第一个周期的时候,发生,那么 add 指令会执行完,但是 sub 指令就不译码了,开始译码中断指令,并且预取指令。

在第二个周期的时候,开始获取中断向量表的地址, 将CPSR保存到SPSR,并将CPSR的模式改为 IRQ模式,并且禁止中断。并且Mov 的指令不译码了,并且预取下一条指令。

再第三个周期的时候,将PC指针(800c)保存到 r14中,并且到中断向量表的地址去预取指令,x 预取的指令并没有被译码。

再第四个周期的时候,开始对预取的指令译码, 但是这里的A,不知道是什么意思。


http://www.mrgr.cn/news/2960.html

相关文章:

  • Linux系统性能调优指南-硬件资源管理
  • 从零到一,全面掌握Apache DolphinScheduler发版流程,实战派经验分享!
  • 前端算法 | LeetCode第 70 题爬楼梯问题
  • Java 开发中常用的 Linux 命令
  • java:实现简单的验证码功能
  • 如何设置PowerBI报告展示在屏幕的大小?
  • FASTSPEECH 2论文阅读
  • CryptoJS hex模式前端
  • 系统架构设计师——系统运行与维护
  • RCE与SQL漏洞的复现
  • 嵌入式AI快速入门课程-K510篇 (第四篇 AI概念及理论知识)
  • PowerShell 一键配置IP
  • C语言 数据存储
  • vue3之仪表盘
  • sqlalchemy RowProxy
  • libLZMA库iOS18平台编译
  • 《重生到现代之从零开始的C语言生活》—— 指针2
  • 【JavaScript 】JavaScript 全教程 02
  • python从列表中选出最后4个元素
  • 【Leetcode:93. 复原 IP 地址 + dfs】