CPU指令执行及流水线(超标量、多发射、乱序执行)
用生活例子引入流水线逻辑:**
为什么要引入流水线(流水线诞生之前):
首先计算机是通过CPU执行指令来实现运行并计算的,计算机在设计之初,每条指令只能串行执行,意思就是等第一条指令执行完,第二条指令才能开始执行,这样显然效率太低。
流水线设计原理:
然而指令执行过程有很多阶段,比如经典的五级流水线结构,把指令执行的阶段分成五级,分别为取指、译码、执行、访存、写回,就像手机组装生成线上的把组装、检测、包装一样,不同阶段是不一样的工人在干活,同样五级流水线中的每一级用的也是不一样的CPU部件。在手机组装过程中,第一个人组装完第一台手机就把第一台交给测试工人,组装工人继续组装第二台手机。测试工人也一样测试完第一台就交给下个包装工人,自己继续测试第二台。所以有人想办法借鉴组装手机这种思想去构造流水线,第一条指令取指完,就把这条指令交给译码部件,自己继续取指第二条,这样的话从第5个时间段开始,每个部件都在自己忙活,不存在之前的串行问题,5个时间内,每个部件只上一个时间的班,其余时间都歇着。这就是流水线技术。
多发射:
但是随着集成电路发展,很多人不满足这样的效率,萌生出一次我直接执行两条毫无关系的指令。也就是一次发射两条指令。多发射就是这个意思。显然生活中肯定一心不能二用,但是现在可以增加部件,也就是组装线上坐多个人也就是多条流水线,实现了多发射。
乱序执行:
由于在指令在一定逻辑上只能按照顺序执行,比如疫情期间在家办公,计划的顺序是起床、等快递来送菜、做早饭、吃早饭、回复邮件、开始工作。但是快递小哥迟迟不来,咱们是不是得一直等着他来送菜再进行下面的事情?显然不会,你一定会把等菜、做饭、吃饭等一系列步骤放着,先去执行另一系列的步骤(发邮件、工作),因为这两个系列的步骤是完全不相关的。放在CPU中的逻辑时,某条指令需要访存,访存的时候多级cache不命中、内存缺页等原因导致访存时间延长,这个时候是不是也像快递小哥迟迟不来一样,这个时候咱们就要先放弃这一系列的事情,先去执行后面的与之无关指令。等访存结束再去回去执行之前被耽搁的指令,这就是乱序执行(因为指令的顺序被打乱了)。这样的代价在哪里?,为什么叫乱序执行,不叫乱序提交,那就是因为提交顺序(最后结果)必须正确,比如一个寄存器按照原本的顺序是 被改成3、3被访问、被改成5、5被访问,显然前两个跟后两个没有关系,如果出现了乱序执行,先执行了后两个,那么寄存器最后结果就是3了,后续跟这个寄存器打交道的指令都会出错(原本希望最后是5),所以提交顺序一定要正确,所以设计了保留站和ROB(重排序缓冲),那就是标记指令本来的执行顺序,在写回(最后一级流水线)的时候、如果比自己标记好小的指令不提交,自己就在ROB中呆着等待原本在自己前面的指令提交。这样就保证了既节省时间又能正确提交。
超标量:
上面是说的都是一个核同时只能执行一条指令,超标量就是一个核同时可以指令两条指令。
CPU指令执行及流水线(超标量、多发射、乱序执行)相关推荐
- 计算机指令要素,【计算机系统】CPU指令执行流程与指令流水线原理
[计算机系统]CPU指令执行流程与指令流水线原理 一.指令执行流程 冯诺依曼架构CPU指令执行的五个阶段: 阶段 涉及的功能部件 IF 指令寄存器IR.程序计数器PC ID 指令译码器ID EXE C ...
- 【计算机系统】CPU指令执行流程与指令流水线原理
[计算机系统]CPU指令执行流程与指令流水线原理 一.指令执行流程 冯诺依曼架构CPU指令执行的五个阶段: 阶段 涉及的功能部件 IF 指令寄存器IR.程序计数器PC ID 指令译码器ID EXE C ...
- CPU指令的流水线执行
指令集是CPU体系架构的重要组成部分.C语言的语法是对解决现实问题的运算和流程的方法的高度概况和抽象,其主要为算术.逻辑运算和分支控制,而指令集就是对这些抽象的具体支持,汇编只不过是为了让开发人员更好 ...
- 超标量处理器设计 姚永斌 第9章 指令执行 摘录
9.1 概述 执行阶段负责指令的执行,在流水线的之前阶段做了那么多的事情,就是为了将指令送到这个阶段进行执行.在执行阶段,接受指令的源操作数,对其进行规定的操作,例如加减法.访问存储器.判断条件等,然 ...
- CPU结构与指令执行过程简介
CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件. CPU结构 CPU由通用寄存器组,运算器,控制器和数据通路等部件组成. 寄存器包括 数据寄存器 ...
- 6 计算机组成原理第五章 中央处理器 CPU功能和结构 指令执行过程
文章目录 1 CPU功能和基本结构 1.1 CPU的功能 1.2 运算器的基本结构 1.3 控制器的基本结构 1.4 CPU基本结构 1.5 CPU的功能和基本结构小结 2 指令周期和数据流 2.1 ...
- 8086/8088 指令执行流水线断流原因
8086/8088 指令执行流水线断流原因 1. 指令预取队列中有转移类指令 2. 执行指令需要参数 当指令的执行需要参数时(比如:加法),EU得去获得了参数才可以顺利执行指令,因此此时的并行流水线依 ...
- 【计算机组成原理】流水线式指令执行
文章目录 前言 一.处理器的构成 二.数据通路 1. 流水线工作 2. 冒险 3. 流水线寄存器 三.FPGA相比于CPU的速度优势 总结 前言 最近在阅读<计算机组成与设计 硬件/软件接口(原 ...
- 【蜂鸟E203内核解析】Chap.2 E203内核中指令执行的过程-为什么E203是两级流水线?
[蜂鸟E203内核解析]Chap.2 E203内核中指令执行的过程-为什么E203是两级流水线? 0. E203的两级流水线结构 1. IFU取指令 2. EXU 译码执行交付写回 (1)译码部分与指 ...
- 汇编为什么分段执行总是执行不了_iOS汇编教程(六)CPU 指令重排与内存屏障...
系列文章 iOS 汇编入门教程(一)ARM64 汇编基础 iOS 汇编入门教程(二)在 Xcode 工程中嵌入汇编代码 iOS 汇编入门教程(三)汇编中的 Section 与数据存取 iOS 汇编教程 ...
最新文章
- html 弹出遮罩 iframe,iframe正在加载时显示遮罩层 加载完毕后显示iframe
- Caffe官方教程翻译(9):Multilabel Classification with Python Data Layer
- Android开发之SQLite的使用方法
- Python全栈之路——运算符(Day 02)
- 【鱼眼镜头2】[鱼眼畸变模型]:评估了五个模型:radial,division,FOV,多项式(如双三次]和rational模型。
- 【GStreamer开发】GStreamer基础教程05——集成GUI工具
- 2台电脑一根网线传文件_一根网线做两根用?接两个水晶头?是的你没看错
- PS_02_大师之路
- java中编写一个学生抽奖活动_用java做的抽奖程序
- 如何将计算机恢复到桌面快捷方式,怎样还原电脑系统默认的Windows快捷方式及其图标呀?...
- AES前端flutter加密与后端java解密pad block corrupted问题
- 题目20: 吝啬的国度
- SpringBoot中@Value读取不到值的解决方案
- win10:如何设置电脑睡眠只息屏
- Alpine Linux
- 细细品味B/S与C/S
- 【AGM】《风色幻想:纷争—luca篇》总之这是一个没空填的坑
- C++ 队列(queue)简介
- LeetCode 第201次周赛 1546. Maximum Number of Non-Overlapping Subarrays With Sum Equals Target
- 怎么使用flashfxp,偷偷告诉你怎么使用flashfxp