处理器一条指令需要几个时钟周期?
思考个小问题,处理器执行一条指令需要几个时钟周期。
对于软件工程师来说,印象流我们可能会觉得执行一条指令一个时钟周期嘛,一条指令算是一个最小的原子操作,不可能再细分了吧。
如果看看诸如《see mips run》,《arm体系架构》等书籍就会了解到,这个问题可没这么简单了,因为处理器设计中使用了流水线技术。
一条指令还是相当复杂的,处理器在一个时钟周期内肯定是完不成的,可能需要好多个时钟周期来完成执行。如果这样让处理器执行完一条指令,再去执行另一条,处理器的效率是很低的,假如一条指令是5个时钟周期完成,对于500MHZ的处理器串行运行指令,1秒内取指100000000次。
因此处理器引入了流水线技术,将一条指令划分为多个功能,由不同的功能部件来执行,并且这些功能部件可以并行工作。下面是一个arm7的三级流水线运行图。
流水线划分为取指 译码 执行,但并不是仅需3个时钟周期即执行完指令。因为执行单元模块的操作较多,可能需要多个周期,取指 译码一般是一个时钟周期,这样可以看出虽然一条指令完成需要多个时钟周期,但是总体来说看在每个时钟周期都有一条指令开始取指。如果我们的处理器是500MHZ,则1秒内取指了500000000次。
不同的处理器设计时流水线级数不一样,现在主流的有三级 五级 七级,增加流水线级数,简化流水线的各级逻辑,可以提高处理器的性能。
回答咱们开头的问题也就明白了,一条指令需要的时钟周期还真不固定,这得看处理器的流水线级数,也得看该指令的复杂度,在执行阶段需要几个时钟周期。
对于流水线各级具体工作这里就不细说了,网上文章很多,毕竟咱们是做软件的,硬件点到为止,流水线各级工作是有处理器内部逻辑单元来完成的,对于软件来说都是不可见的,软件可操作的最小原子操作就是指令。
不过呢,处理器的流水线技术在有一个事情对咱们软件造成了影响,那就是PC值。
据我了解的处理器流水线设计,前三级基本都是取指 译码 执行。处理器的PC寄存器中存储的是处理器的取指地址,根据上述流水线机制,而我们的处理器执行的指令地址是落后于要去预取的指令的地址,落后2个时钟周期。
也就是说我们在取了第一条指令后,等该指令到了执行阶段时,我们的处理器其实已经预取了往后的第二条指令了。
对于32位处理器,一条指令占据4字节。这也就是PC值 = 当前指令地址 + 8的根本原因啦。
处理器一条指令需要几个时钟周期?相关推荐
- c语言执行一条指令几个机器周期,时钟周期、机器周期与指令周期
时钟周期.机器周期与指令周期 1.51系列单片机中,外部输入震荡输入经2分频后作为时钟:另外,一个机器周期由6个时钟周期组成:因为没有流水线(pipeline)结构,执行一条指令需要经过取指令.译码. ...
- 假定某计算机的CPU主频为80 MHz,CPI为4,并且平均每条指令访存1.5
假定某计算机的CPU主频为80 MHz,CPI为4,并且平均每条指令访存1.5次,主存与Cache之间交换的块大小为16B,Cache的命中率为99%,存储器总线宽度为32位.请回答下列问题. (1) ...
- 基于 RICS-V 架构的单周期 38 条指令处理器设计(含源码及实验报告)
一.概述 之前有专门的写过两篇博文来介绍基于 RICS-V 架构的单周期九条指令处理器设计,并提供了相关的代码结构介绍,之后我又对其进行了拓展,且修补了之前源码中存在的一些小问题,并将指令集从九条 ...
- verilog实现多周期处理器之——(二)第一条指令ori的实现
本博文希望对于OpenMIPS第一条指令ori加以实现并总结.会加入一些基本的理论以及博主的学习记录. 流水与五级流水 什么是流水:拆分,并行.将多条指令的执行相互重叠起来.就构成了流水,这样充分利用 ...
- MIPS单周期CPU设计(24条指令)
MIPS单周期可执行24条指令CPU 实验要求 本实训项目帮助学生构建支持 24 条指令的 MIPS 单周期 CPU ,最终实现的处理器能运行 benchmark 测试程序.另外希望学有余力的同学能为 ...
- 31条指令单周期cpu设计(Verilog)-(二)总体设计
目录 31条指令单周期cpu设计(Verilog)-(一)相关软件 31条指令单周期cpu设计(Verilog)-(二)总体设计 31条指令单周期cpu设计(Verilog)-(三)指令分析 ...
- 【自己动手写CPU】第一条指令ori的实现
验证过程 实现ori指令->建立最小SOPC->验证ori指令是否正确 ori指令说明 ori是进行逻辑"或"的运算指令 ori指令的指令码是6'b001101.处理器 ...
- SIMD指令集——一条指令操作多个数,SSE,AVX都是,例如:乘累加,Shuffle等
SIMD指令集 from:https://zhuanlan.zhihu.com/p/31271788 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数 ...
- 【最全!最完整解析!】 计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期。因此,()
计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期.因此,() A. 时钟周期大于机器周期 B. 时钟周期等于机器周期 C. 机器 ...
最新文章
- 顺丰职级分成4级_14368!4月全国程序员均薪新鲜出炉!
- python中re模块怎么导入_python如何导入re模块
- tensorflow:Multiple GPUs
- 宽字符串忽略大小写比较的实现(原)
- 无限踩坑系列(8)--猿界神猿
- linux下c语言线程传参数,【linux】C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...
- java日历查询代码,查询日历,万年历查询,日历格式JAVA原代码
- ASP.NET MVC:自定义 Route 生成小写 Url(转)
- jmeter使用方法和功能
- oracle数据库左边栏不见,Oracle数据库中分区表的操作方法
- 如何用Robotics Toolbox 建模多自由度的机械手臂
- 数据结构:设线性表中每个元素有两个数据项k1和k2,现对线性表按一下规则进行排序:先看数据项k1,k1值小的元素在前,大的在后;在k1值相同的情况下,再看k2,k2值小的在前,大的在后。满足这种要求的
- shiro基本使用和完成登录
- 软通python机试_软通机试练习题
- qcc514x-qcc304x调试笔记-tone
- 一本通 1.5.3 字符数组
- 小米青春版使用OpenWrt实现无线中继功能
- 中新金盾信息安全管理系统存在默认密码
- 多传感器信息融合笔记
- 北京尚学堂--单例模式笔记