【计算机系统】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),同时并行地对多条指令进行流水处理

目录
相关文章
|
10天前
|
存储 人工智能 vr&ar
转载:【AI系统】CPU 基础
CPU,即中央处理器,是计算机的核心部件,负责执行指令和控制所有组件。本文从CPU的发展史入手,介绍了从ENIAC到现代CPU的演变,重点讲述了冯·诺依曼架构的形成及其对CPU设计的影响。文章还详细解析了CPU的基本构成,包括算术逻辑单元(ALU)、存储单元(MU)和控制单元(CU),以及它们如何协同工作完成指令的取指、解码、执行和写回过程。此外,文章探讨了CPU的局限性及并行处理架构的引入。
转载:【AI系统】CPU 基础
|
10天前
|
人工智能 缓存 并行计算
转载:【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,讲解了CPU算力的计算方法、算力与数据加载之间的平衡,以及如何通过算力敏感度分析优化计算系统性能。同时,文章还考察了服务器、GPU和超级计算机等平台的性能发展,揭示了这些变化如何塑造我们对CPU性能的理解和期待。
转载:【AI系统】CPU 计算本质
|
25天前
|
人工智能 缓存 并行计算
【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,解释了算力计算方法、数据加载与计算的平衡点,以及如何通过算力敏感度分析优化性能瓶颈。同时,文章还讨论了服务器、GPU和超级计算机等不同计算平台的性能发展趋势,强调了优化数据传输速率和加载策略的重要性。
48 4
|
25天前
|
存储 人工智能 编译器
【AI系统】CPU 指令集架构
本文介绍了指令集架构(ISA)的基本概念,探讨了CISC与RISC两种主要的指令集架构设计思路,分析了它们的优缺点及应用场景。文章还简述了ISA的历史发展,包括x86、ARM、MIPS、Alpha和RISC-V等常见架构的特点。最后,文章讨论了CPU的并行处理架构,如SISD、SIMD、MISD、MIMD和SIMT,并概述了这些架构在服务器、PC及嵌入式领域的应用情况。
53 4
|
25天前
|
存储 人工智能 vr&ar
【AI系统】CPU 基础
CPU,即中央处理器,是计算机的核心组件,负责执行指令和数据计算,协调计算机各部件运作。自1946年ENIAC问世以来,CPU经历了从弱小到强大的发展历程。本文将介绍CPU的基本概念、发展历史及内部结构,探讨世界首个CPU的诞生、冯·诺依曼架构的影响,以及现代CPU的组成与工作原理。从4004到酷睿i系列,Intel与AMD的竞争推动了CPU技术的飞速进步。CPU由算术逻辑单元、存储单元和控制单元三大部分组成,各司其职,共同完成指令的取指、解码、执行和写回过程。
40 3
|
25天前
|
缓存 人工智能 算法
【AI系统】CPU 计算时延
CPU(中央处理器)是计算机系统的核心,其计算时延(从指令发出到完成所需时间)对系统性能至关重要。本文探讨了CPU计算时延的组成,包括指令提取、解码、执行、存储器访问及写回时延,以及影响时延的因素,如时钟频率、流水线技术、并行处理、缓存命中率和内存带宽。通过优化这些方面,可以有效降低计算时延,提升系统性能。文中还通过具体示例解析了时延产生的原因,强调了内存时延对计算速度的关键影响。
42 0
|
21天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
54 7
|
1月前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
203 1
|
1月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
602 2
|
3月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
201 5