关于处理器流水线,此流水线非彼流水线关于处理器流水线,此流水线非彼流水线
本文将讨论的一个重要的基础知识:“”。熟悉计算机体系结构的读者一定知道,言及微架构,几乎必谈其。的结
构是处理器微架构基本的一个要素,犹如汽车底盘对于汽车一般具有基石性的作用,它承载并决定了处理器其
他微架构的细节。本文将简要介绍处理器的一些常见流水线结构,让您真正读懂处理器流水线。 1 从经典的
五级流水线说起 流水线的概念于工业制造领域,以汽车装配为例来解释流水线的工作方式,假设装配一辆
汽车需要四个步骤: 步冲压:制作车身外壳和底盘等部件。 第二步焊接:将冲压成形后的各部件焊接
成车身。 第三步涂装:将车身等主要部件清洗、化学处理、打磨、喷漆和烘干。 第四步总装:将各部
件(包括发动机和
本文将讨论的一个重要的基础知识:“”。熟悉计算机体系结构的读者一定知道,言及微架构,几乎必谈其。的结构是处理
器微架构基本的一个要素,犹如汽车底盘对于汽车一般具有基石性的作用,它承载并决定了处理器其他微架构的细节。本文将
简要介绍处理器的一些常见流水线结构,让您真正读懂处理器流水线。
1 从经典的五级流水线说起从经典的五级流水线说起
流水线的概念于工业制造领域,以汽车装配为例来解释流水线的工作方式,假设装配一辆汽车需要四个步骤:
步冲压:制作车身外壳和底盘等部件。
第二步焊接:将冲压成形后的各部件焊接成车身。
第三步涂装:将车身等主要部件清洗、化学处理、打磨、喷漆和烘干。
第四步总装:将各部件(包括发动机和向外采购的零部件)组装成车。
汽车装配则同时对应需要冲压、焊接、涂装和总装四个工人。简单的方法是一辆汽车依次经过上述四个步骤装配完成之
后,下一辆汽车才开始进行装配,早期的工业制造就是采用的这种原始的方式,即同一时刻只有一辆汽车在装配。不久之后人
们发现,某个时段中一辆汽车在进行装配时,其它三个工人都处于闲置状态,显然这是对资源的极大浪费,于是思考出能有效
利用资源的新方法,即在辆汽车经过冲压进入焊接工序的时候,立刻开始进行第二辆汽车的冲压,而不是等到辆汽车经过全部
四个工序后才开始,这样在后续生产中就能够保证四个工人一直处于运行状态,不会造成人员的闲置。这样的生产方式就好似
流水川流不息,因此被称为流水线。
计算机体系结构教材中被提及多的经典MIPS五级流水线如图1所示。在此流水线中一条指令的生命周期分为:
取指:
指令取指(Instruction Fetch)是指将指令从存储器中读取出来的过程。
译码:
指令译码(Instruction Decode)是指将存储器中取出的指令进行翻译的过程。经过译码之后得到指令需要的操作数寄存器索
引,可以使用此索引从通用寄存器组(Register File,Regfile)中将操作数读出。
执行:
指令译码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,那么接下来便进行指
令执行(Instruction Execute)。指令执行是指对指令进行真正运算的过程。譬如,如果指令是一条加法运算指令,则对操作数
进行加法操作;如果是减法运算指令,则进行减法操作。
在“执行”阶段的常见部件为算术逻辑部件运算器(Arithmetic Logical Unit,ALU),作为实施具体运算的硬件功能单元。
访存:
存储器访问指令往往是指令集中重要的指令类型之一,访存(Memory Access)是指存储器访问指令将数据从存储器中读
出,或者写入存储器的过程。
写回:
写回(Write-Back)是指将指令执行的结果写回通用寄存器组的过程。如果是普通运算指令,该结果值来自于“执行”阶段计
算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
在工业制造中采用流水线可以提高单位时间的生产量,同样在处理器中采用流水线设计也有助于提高处理器的性能。以上
述的五级流水线为例,由于前一条指令在完成了“取指”进入“译码”阶段后,下一条指令马上就可以进入“取指”阶段,依次类推,
如图2所示,如果流水线没有停顿,理论上可以取得每个时钟周期都完成一条指令的性能。