搜索
bottom↓
回复: 15

CPU在执行中是怎么做到一起取数据和指令的

[复制链接]

出0入0汤圆

发表于 2017-10-29 00:16:41 | 显示全部楼层 |阅读模式
如果ARM程序和数据都在RAM中,那么CPU在执行过程中,会不停地从RAM中取指令和数据,如果是单指令周期的指令,那么一个周期内就可能又取指令又取数据,CPU这是怎么处理呢?
有哪位大师能够定量的理解这个过程呢,或者哪本书能够详细的解释这个过程呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2017-10-29 00:35:04 | 显示全部楼层
多级流水线,比如3级流水线的系统,


流水线1        取指令 |  译码  | 执行
流水线2                   取指令 | 译码  | 执行
流水线3                              取指令 | 译码  | 执行
时间                  T1  |T2     |T3      |T4      |T5
看起在T3 T4 T5时刻分别执行了三条指令, 其实是3条流水线,分别顺序处理的,微观上,你认为的单周期指令,实际上分为好多个周期执行的。
如果遇到跳转等命令,如果不带分支预测功能的处理器,可能会打断流水线,将流水线清空,带来的结果就是所有的指令周期都会加长。 比如第一个指令,会在T3时刻被执行,而不是单周期就能执行了。


  

出0入0汤圆

发表于 2017-10-29 07:40:50 | 显示全部楼层
哈佛总线结构,数据和指令是分开的总线

出0入0汤圆

发表于 2017-10-29 08:43:50 来自手机 | 显示全部楼层
我记得stm32在ram运行是比flash还要偏低吧 数据和指令会共用总线带宽

出0入4汤圆

发表于 2017-10-29 09:30:54 | 显示全部楼层
你要知道,现代的 CPU 内部,机器中还有机器。像上面网友说的,你看到的一步实际是是分成很多步完成。

例子:
从 2008 年起,英特尔处理器平台都内置了 ME(Management Engine),它包含了一个或多个处理器核心,内存,系统时钟,内部总线,保留的受保护内存,运行了一个修改版的 MINIX 操作系统,能访问系统主内存和网络。ME 能完全访问和控制 PC,能启动和关闭电脑,读取打开的文件,检查所有运行的程序,跟踪按键和鼠标移动,甚至能捕捉屏幕截图。

出0入12汤圆

发表于 2017-10-29 09:39:25 | 显示全部楼层
单周期只是表示在指令占用的 pipeline 中 stage 的数目,fetch stage 如果读取不到指令,后续 stage 是会被“锁”上的。

出0入0汤圆

 楼主| 发表于 2017-10-29 14:44:33 | 显示全部楼层
huangqi412 发表于 2017-10-29 08:43
我记得stm32在ram运行是比flash还要偏低吧 数据和指令会共用总线带宽

在飞思卡尔m4中放到ram比在flash快很多。

出0入10汤圆

发表于 2017-10-29 15:24:16 | 显示全部楼层
因为指令周期不是一个时钟周期啊!指令周期包括取指、间址、执行、中断。数据有多种寻址方式,直接寻址就是地址作为指令的一部分,执行的时候再取。如果是间址,则在间址周期取出地址,执行周期再取出数据。书籍参考 唐朔飞《计算机组成原理》

出0入34汤圆

发表于 2017-10-29 17:27:53 | 显示全部楼层
就是指流水线原理,预取 FETCH 命令与资料放置于 CACHE 内,好让运算单元无需等待一直在运算中。
但若预提取的命令内有 Branch 等判断的命令时,早期就只能放弃 CACHE 内的资料了,
而近十几年来的做法就是将其 Branch 后的两种可能的两路都预提至 CACHE 内好随时让运算单元跟上,
也记得早些年 Intel 的 CPU 除了 L1 与 L2 的 CACHE 外,还直接于提取资料至 CACHE 时就先将 Branch 命令后的结果给运算完,使得效能得以进一步的提升。
以上仅是个人对流水线的理解,并不代表其完全的正确性说明。也就是随口说说聊聊而已,请各位误较真!谢谢。

出0入0汤圆

发表于 2017-10-30 14:10:52 | 显示全部楼层
对ARM结构来说,3楼是正解,其他的都是补充;

出0入0汤圆

发表于 2017-10-30 14:53:58 | 显示全部楼层
楼主要是无聊的话可以搭一个4位的cpu出来,就清楚了

出0入8汤圆

发表于 2017-10-30 15:20:17 | 显示全部楼层
我说几点:
1、指令周期,不等同于时钟周期。
2、访问同一个存储器的话(竞争),需要更底层的总线控制器去仲裁、做互斥控制。
3、多数 CPU 具备独立的数据和指令缓存,有效减少竞争的出现。

出0入0汤圆

发表于 2017-10-30 15:49:14 | 显示全部楼层
我认为单周期指令,,指令和操作数(数据)在一起的,比如前面16BIT是指令,后面16BIT是数据,一次取32BIT,包含了指令和操作数。

出0入0汤圆

发表于 2017-10-30 16:17:12 | 显示全部楼层
楼主说的是单周期指令吗?

单周期是只一个周期可以运行完毕的,如:add, sub, mov等;
多周期是多个周期才能运行完毕,如:mac, div, fpu等;

单周期和多周期与是否由流水线实现没有关系;这个是哈佛结构和冯诺依曼结构的区别;

出0入296汤圆

发表于 2017-11-1 07:04:32 | 显示全部楼层
你要的书:Computer Architecture 5th Edition

出0入0汤圆

发表于 2017-11-1 08:05:41 | 显示全部楼层
shiva_shiva 发表于 2017-10-29 14:44
在飞思卡尔m4中放到ram比在flash快很多。

他说是早期的stm32,比如f1系列,f4以后都有tcm内存了,当然就不一样了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 14:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表