思考个小问题,处理器执行一条指令需要几个时钟周期。
对于软件工程师来说,印象流我们可能会觉得执行一条指令一个时钟周期嘛,一条指令算是一个最小的原子操作,不可能再细分了吧。
如果看看诸如《see mips run》,《arm体系架构》等书籍就会了解到,这个问题可没这么简单了,因为处理器设计中使用了流水线技术。
一条指令还是相当复杂的,处理器在一个时钟周期内肯定是完不成的,可能需要好多个时钟周期来完成执行。如果这样让处理器执行完一条指令,再去执行另一条,处理器的效率是很低的,假如一条指令是5个时钟周期完成,对于500MHZ的处理器串行运行指令,1秒内取指100000000次。
因此处理器引入了流水线技术,将一条指令划分为多个功能,由不同的功能部件来执行,并且这些功能部件可以并行工作。下面是一个arm7的三级流水线运行图。

流水线划分为取指 译码 执行,但并不是仅需3个时钟周期即执行完指令。因为执行单元模块的操作较多,可能需要多个周期,取指 译码一般是一个时钟周期,这样可以看出虽然一条指令完成需要多个时钟周期,但是总体来说看在每个时钟周期都有一条指令开始取指。如果我们的处理器是500MHZ,则1秒内取指了500000000次。
不同的处理器设计时流水线级数不一样,现在主流的有三级 五级 七级,增加流水线级数,简化流水线的各级逻辑,可以提高处理器的性能。
回答咱们开头的问题也就明白了,一条指令需要的时钟周期还真不固定,这得看处理器的流水线级数,也得看该指令的复杂度,在执行阶段需要几个时钟周期。
对于流水线各级具体工作这里就不细说了,网上文章很多,毕竟咱们是做软件的,硬件点到为止,流水线各级工作是有处理器内部逻辑单元来完成的,对于软件来说都是不可见的,软件可操作的最小原子操作就是指令。
不过呢,处理器的流水线技术在有一个事情对咱们软件造成了影响,那就是PC值。
据我了解的处理器流水线设计,前三级基本都是取指 译码 执行。处理器的PC寄存器中存储的是处理器的取指地址,根据上述流水线机制,而我们的处理器执行的指令地址是落后于要去预取的指令的地址,落后2个时钟周期。
也就是说我们在取了第一条指令后,等该指令到了执行阶段时,我们的处理器其实已经预取了往后的第二条指令了。
对于32位处理器,一条指令占据4字节。这也就是PC值 = 当前指令地址 + 8的根本原因啦。

处理器一条指令需要几个时钟周期?相关推荐

  1. c语言执行一条指令几个机器周期,时钟周期、机器周期与指令周期

    时钟周期.机器周期与指令周期 1.51系列单片机中,外部输入震荡输入经2分频后作为时钟:另外,一个机器周期由6个时钟周期组成:因为没有流水线(pipeline)结构,执行一条指令需要经过取指令.译码. ...

  2. 假定某计算机的CPU主频为80 MHz,CPI为4,并且平均每条指令访存1.5

    假定某计算机的CPU主频为80 MHz,CPI为4,并且平均每条指令访存1.5次,主存与Cache之间交换的块大小为16B,Cache的命中率为99%,存储器总线宽度为32位.请回答下列问题. (1) ...

  3. 基于 RICS-V 架构的单周期 38 条指令处理器设计(含源码及实验报告)

    一.概述   之前有专门的写过两篇博文来介绍基于 RICS-V 架构的单周期九条指令处理器设计,并提供了相关的代码结构介绍,之后我又对其进行了拓展,且修补了之前源码中存在的一些小问题,并将指令集从九条 ...

  4. verilog实现多周期处理器之——(二)第一条指令ori的实现

    本博文希望对于OpenMIPS第一条指令ori加以实现并总结.会加入一些基本的理论以及博主的学习记录. 流水与五级流水 什么是流水:拆分,并行.将多条指令的执行相互重叠起来.就构成了流水,这样充分利用 ...

  5. MIPS单周期CPU设计(24条指令)

    MIPS单周期可执行24条指令CPU 实验要求 本实训项目帮助学生构建支持 24 条指令的 MIPS 单周期 CPU ,最终实现的处理器能运行 benchmark 测试程序.另外希望学有余力的同学能为 ...

  6. 31条指令单周期cpu设计(Verilog)-(二)总体设计

    目录 31条指令单周期cpu设计(Verilog)-(一)相关软件 31条指令单周期cpu设计(Verilog)-(二)总体设计 31条指令单周期cpu设计(Verilog)-(三)指令分析      ...

  7. 【自己动手写CPU】第一条指令ori的实现

    验证过程 实现ori指令->建立最小SOPC->验证ori指令是否正确 ori指令说明 ori是进行逻辑"或"的运算指令 ori指令的指令码是6'b001101.处理器 ...

  8. SIMD指令集——一条指令操作多个数,SSE,AVX都是,例如:乘累加,Shuffle等

    SIMD指令集 from:https://zhuanlan.zhihu.com/p/31271788 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数 ...

  9. 【最全!最完整解析!】 计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期。因此,()

    计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期.因此,() A. 时钟周期大于机器周期 B. 时钟周期等于机器周期 C. 机器 ...

最新文章

  1. 顺丰职级分成4级_14368!4月全国程序员均薪新鲜出炉!
  2. python中re模块怎么导入_python如何导入re模块
  3. tensorflow:Multiple GPUs
  4. 宽字符串忽略大小写比较的实现(原)
  5. 无限踩坑系列(8)--猿界神猿
  6. linux下c语言线程传参数,【linux】C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...
  7. java日历查询代码,查询日历,万年历查询,日历格式JAVA原代码
  8. ASP.NET MVC:自定义 Route 生成小写 Url(转)
  9. jmeter使用方法和功能
  10. oracle数据库左边栏不见,Oracle数据库中分区表的操作方法
  11. 如何用Robotics Toolbox 建模多自由度的机械手臂
  12. 数据结构:设线性表中每个元素有两个数据项k1和k2,现对线性表按一下规则进行排序:先看数据项k1,k1值小的元素在前,大的在后;在k1值相同的情况下,再看k2,k2值小的在前,大的在后。满足这种要求的
  13. shiro基本使用和完成登录
  14. 软通python机试_软通机试练习题
  15. qcc514x-qcc304x调试笔记-tone
  16. 一本通 1.5.3 字符数组
  17. 小米青春版使用OpenWrt实现无线中继功能
  18. 中新金盾信息安全管理系统存在默认密码
  19. 多传感器信息融合笔记
  20. 北京尚学堂--单例模式笔记

热门文章

  1. 经典策略游戏《蜂窝大战》复刻版:抢旗模式
  2. Maven error: Failed to execute goal on project : Could not resolve dependencies for project 解决办法
  3. 深度学习 强化学习 迁移学习
  4. 史上最新 PHP 调用 jar包教程
  5. 推扫式和快照式高光谱成像系统在红肉掺假检测中的应用
  6. Leetcode 1376 TimeNeededToInformAllEmployees
  7. 社区医疗系统平台的设计与实现
  8. 小觅相机 相机以及IMU外参标定
  9. Linux就该这么学第二章笔记~
  10. PING命令与ICMP协议