【计算机系统】CPU指令执行流程与指令流水线原理

简介: 【计算机系统】CPU指令执行流程与指令流水线原理

一、指令执行流程

冯诺依曼架构CPU指令执行的五个阶段:


image.png

在上述各阶段CPU与内存交互时,还涉及系统总线如AB、CB、DB等

1、取指阶段(IF, Instruction Fetch)

在上一个指令周期时,程序计数器PC中记录的是下一条指令的内存地址。因此IF阶段CPU指令寄存器按照PC的地址从主存中取得一条指令,当前指令被取出后,PC更新到下一条指令的地址。

2、指令译码阶段(ID, Instruction Decode)

在ID阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同的指令类别以及各种获取操作数的方法。

3、执行指令阶段(EXE, Execute)

通过对指令的译码,CPU已经知晓这条指令要如何执行,因此EXE阶段就是通过操作控制器OC,按确定的时序向相应的部件发出微操作控制信号以对指令要求的特定操作进行具体实现。EXE阶段CPU的不同部分(如ALU、寄存器组等)被联合起来,以实现指令所需的操作。

4、访存取数阶段(MEM, Memory)

根据指令需要可能要访问内存,读取操作数。MEM阶段根据指令地址码(如果有要求的话)得到操作数在主存中的地址,并从主存中读取该操作数用于运算。

5、写回阶段(WB, Write Back)

WB阶段把执行指令阶段的运行结果数据“写回”到某种存储形式:

①写入CPU的内部寄存器中,以便被后续的指令快速地存取

②写入内存

③改变FR中标志位状态(如果需要改变的话),用来影响接下来程序的动作

WB阶段结束后,若无意外事件(如结果溢出等)或异常中断发生,计算机就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环。上述五个阶段在具体实现过程中会引入指令流水线来提高效率。

二、指令流水线(Instruction Pipeline)

指令流水线概念的提出是为了提高CPU处理指令的效率。

假设将CPU执行一条指令按照流程分为四个步骤如图1(ii)


image.png

image.png

考虑一个完全不采用流水线的系统如图3(i),对于一组指令序列,CPU总是等某条指令的全部过程都执行完之后再开始下一条指令。与之对比的是图1(ii)的指令流水线,在第一条指令完成IF后,第二条指令就可以开始IF,依次类推。直观地,指令流水可以大幅提高CPU处理指令的效率。

1、指令流水线基本概念

①指令流水周期:将一条指令划分为不同的步骤涉及到的一个重要问题就是——不一致的划分现象,即每个步骤完成的时间不均匀,例如在经典划分中,IF,WB的速度比较快而EXE速度较慢,如图2所示阴影部分为指令步骤所需的时间。因此必须把流水周期设置为单级操作的最大时延。指令阶段间的指令转移(例如IF→ID)是由时钟信号控制的,驱动这条指令流水工作的时钟周期应该要等于这个最大时延。


image.png

②CPI(Cycles Per Instruction):即每条指令经过整个流水线所需周期数,它与各指令有关,不同的指令,CPI也不相同。因此,一般使用平均CPI表示


③ILP(Instruction Level Parallelism):即指令级并行度,是指当指令流水线被充分利用时,一个基本周期内并行执行的指令数


④指令发射速率:指在每个周期内发射的指令数,在数值上等于超标量处理机的级数。

2、影响流水线性能的因素

①数据相关:如第一条指令的输出为第二条指令的输入,则第二条指令必须等待第一条指令执行完毕而不能直接进入流水,造成流水线效率下降

②控制相关:如遇到分支判断指令,那么该指令可能顺序执行,也可能分支跳转到其他位置,造成流水线断流。

引入流水线会提高CPU指令处理效率,但过深的流水等级会使数据相关和控制相关的副作用增大,反而又降低了CPU工作性能

3、流水线的改进技术——超标量技术


image.png

采用资源重复的并行性思想,设置多条指令流水线和多个功能部件。每个周期发送多条指令(即指令发射速率大于1),同时并行地对多条指令进行流水处理

目录
相关文章
|
11月前
|
存储 缓存 程序员
软考软件评测师——计算机组成与体系结构(CPU指令系统)
本内容详细解析了计算机中央处理器(CPU)的核心架构及其关键组件的工作原理。首先介绍了CPU的四大核心模块:运算单元、控制单元、寄存器阵列和内部总线,并阐述其在数据处理中的核心职责。接着深入探讨了算术逻辑部件(ALU)的功能与专用寄存器的作用,以及通用寄存器对性能提升的意义。随后分析了控制单元的指令处理流程及特殊寄存器的功能。此外,还解析了寄存器系统的分类与设计特点,并对比了不同内存访问模式的特点与应用场景。最后,通过历年真题巩固相关知识点,帮助理解CPU各组件的协同工作及优化策略。
|
Windows
【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
在Azure App Service中,CPU占比可在App Service Plan级别查看整个实例的资源使用情况。具体应用中仅能查看CPU时间,需通过公式【CPU Time / (CPU核数 * 60)】估算占比。CPU百分比适用于可横向扩展的计划(Basic、Standard、Premium),而CPU时间适用于Free或Shared计划。然而,CPU Percentage包含所有应用及系统占用的CPU,高CPU指标可能由系统而非应用请求引起。详细分析每个进程的CPU占用需抓取Windows Performance Trace数据。
333 40
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
1646 8
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
3472 23
|
存储 人工智能 vr&ar
转载:【AI系统】CPU 基础
CPU,即中央处理器,是计算机的核心部件,负责执行指令和控制所有组件。本文从CPU的发展史入手,介绍了从ENIAC到现代CPU的演变,重点讲述了冯·诺依曼架构的形成及其对CPU设计的影响。文章还详细解析了CPU的基本构成,包括算术逻辑单元(ALU)、存储单元(MU)和控制单元(CU),以及它们如何协同工作完成指令的取指、解码、执行和写回过程。此外,文章探讨了CPU的局限性及并行处理架构的引入。
转载:【AI系统】CPU 基础
|
人工智能 缓存 并行计算
转载:【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,讲解了CPU算力的计算方法、算力与数据加载之间的平衡,以及如何通过算力敏感度分析优化计算系统性能。同时,文章还考察了服务器、GPU和超级计算机等平台的性能发展,揭示了这些变化如何塑造我们对CPU性能的理解和期待。
转载:【AI系统】CPU 计算本质
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
286 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之怎么设置流水线中的全局参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

热门文章

最新文章