处理器内部有很多通用寄存器,这些寄存器用来存储指令的操作数,它对程序员可见,如x86有8个通用寄存器,RISC处理器则更多,常有32个或64个等等。这一堆寄存器也被叫做Register file(寄存器堆)。

在流水线设计中,为了确保不同流水线节拍不会相互影响,在每个阶段引入了流水线寄存器来分隔各个流水线节拍:

流水线寄存器

寄存器就像是红灯,信号只在固定的时间才会将左端节拍的值传递给右端节拍,这样各个节拍的工作就不会出现紊乱。

在汇编语言中,ALU(算术逻辑单元)单元直接访问通用寄存器进行运算,在硬件实现时,通用寄存器中的数据先被读到流水线寄存器中,也即ALU的输入寄存器中,ALU运算结束后,数据会存储在ALU的输出寄存器中,最后再送回到通用寄存器中。下图为ALU、通用寄存器、ALU输入输出寄存器的结构图:

ALU、ALU输入输出寄存器、寄存器堆的关系

流水线寄存器是对程序员不可见的,ALU指令的执行节拍可以进一步细分为3个子节拍:

1.       从寄存器堆中读取寄存器的值

2.       进行运算

3.       将运算结果写回到寄存器堆中

根据这个分析,处理器的流水线可以进一步细分。MIPS处理器在设计时,将处理器的执行过程划分为5个阶段:

5级流水线

在MIPS的5级流水线中,从寄存器堆中读数据到ALU输入寄存器这个步骤被放在了ID阶段,将运算结果写回到寄存器堆被作为一个独立的阶段。

到目前为止,我们都认为数据已经存放在寄存器中,事实上,数据被存放在内存(Memory)中,在RISC处器中,数据要先从内存load(导入)到寄存器中,然后再参与运算,然后将运算结果store(导出)到存储器中去。因此,MIPS的5级流水线增加了一个MEM阶段。

对于运算指令,在MEM阶段空闲。对于load指令,在EX阶段计算要访问的地址,在MEM阶段从内存中将数据读入到MEM register(MEM和WB之间的流水线寄存器)中,在WB阶段,将MEM register的数据写回到Register file中。对于store指令,在EX阶段计算要访问的地址,在MEM阶段将寄存器中的数据写回到存储器中。

下图是MIPS 5级流水线的执行顺序图:

MIPS 5级流水线

这5级流水线可以说是史上最经典的流水线,早期的MIPS、ARM9等处理器使用这种流水线,以后的处理器也都能看到它的影子,包括x86处理器等。

《大话处理器》连载——微架构(4) 史上最经典的5级流水线相关推荐

  1. rpg游戏发展史计算机网络,PC Gamer盘点史上最经典RPG游戏TOP15

    RPG角色演类游戏往往能带给玩家史诗般的剧情和难忘的战斗体验,今天外媒PC Gamer盘点了史上最经典RPG游戏TOP15,让我们一起来看看吧! 第 2 页 史上最经典15大RPG 2 6.<质 ...

  2. 史上最经典的27首背景音乐

    转自:http://emuch.net/html/200611/357420.html [推荐][资源荟萃]史上最经典的27首背景音乐 1.CCTV<天气预报>主题曲http://www. ...

  3. 史上最经典的IT入门学习教程DVD光盘免费领!

    史上最经典的IT入门学习教程DVD光盘免费领! http://user.qzone.qq.com/1679806262/blog/1395540727

  4. 《大话处理器》连载——微架构(2) 顺溜流水线的深入分析

    在上一节中,顺溜已经告诉了我们流水线的基本概念,顺溜将整个射击过程分成了2个步骤(术语称之为节拍),两个步骤可以并行起来执行,只是时间上进行了些许的错位,这就是流水线的本质. 这条流水线被划分成了2个 ...

  5. 史上最经典的10大反间计

    计之一:陈平间范增 很多人都熟知汉初三杰,萧何,张良和韩信,未免忽视了这位奇计百出的陈平. 范增是追随项羽叔父项梁起兵的老臣.项羽的手下猛将如林,但真正有战略头脑的谋士似乎只有范增一人.当年鸿门宴上范 ...

  6. 细数汽车史上那些经典的发动机,你知道几个?

    纵观世界汽车发展史,每一个汽车工业时期都会诞生极具代表性的车型,而每一款经典车型的背后都有一款经典的发动机. 那什么是经典?或是源自赛道,或是服务于畅销车型,也可以是从自身结构就独一无二的. Part ...

  7. ARM架构与体系学习(二)——3级流水线

    看到汇编中很多关于程序返回与中断返回时处理地址都很特别,仔细想想原来是流水线作用的效果.所以,决定总结学习下ARM流水线. ARM7处理器采用3级流水线来增加处理器指令流的速度,能提供0.9MIPS/ ...

  8. 《大话处理器》连载——微架构(1) 顺溜的2级流水线

    2009年央视有部热播大剧:<我的兄弟叫顺溜>.剧中顺溜是一个神枪手,里面有一个场景,当鬼子来袭击部队时,顺溜向团长建议,给自己配2个人装弹,自己专门负责打枪. <我的兄弟叫顺溜&g ...

  9. 微服务介绍(史上最全)

    1.微服务简介 简而言之,微服务架构风格是一种将单个应用程序开发为"一套小型服务"的方法,每个服务"运行在自己的进程中",并通过轻量级机制(通常是HTTP资源A ...

最新文章

  1. 大战设计模式【23】—— 原型模式
  2. C# 读取 appconfig文件配置数据库连接的方法
  3. HTML 块标签,行内标签,行内块标签以及之间的相互转换
  4. Linux环境进程间通信 信号量
  5. redis rdb aof区别_Redis 持久化之 RDB 与 AOF 详解
  6. MySQL常用命令大全
  7. 使用RTL-SDR,从打开一个车门到批量打开车门
  8. 松下机器人找原点步骤_桁架机器人在汽车座椅安装生产线中的应用
  9. 安装hdfs集群的具体步骤
  10. java 设置内存参数_Java虚拟机内存参数设置
  11. TensorRT 进阶用法
  12. java移位运算_Java 移位运算符
  13. 中标麒麟服务器中安装达梦数据库(DM7)的具体步骤
  14. python数据分析入门到实战 知了课堂 百度云_零基础入门Python数据分析,只需要看懂这一张图,附下载链接!...
  15. 2021-07-10树莓派PWM控制三极管(S8050)实现风扇调速
  16. Python入门(10)——宝可梦数据集探索
  17. 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码
  18. 用计算机处理图像属于啥技术,计算机图像处理技术在网页设计中的应用
  19. 计算机bios设置方法,bios功能怎么设置_bios设置图解教程
  20. Ubuntu18.04系统硬盘分区方法

热门文章

  1. 论文写作 8: 关键词的写法
  2. 搭建自己的ngrok服务器搭建方式二
  3. 到底死不死我就请了七天假_“你到底死不死?我就请了7天假”一个儿子这样说。。。。...
  4. [分享]在线的代码片段测试工具 jsbin
  5. 多个Word文档,多张图片转PDF方式实现
  6. moi3d 4.0中文版使用教程说明
  7. scamper使用详解
  8. 用Matlab读取Can录制的BLF文件
  9. 网页版在线聊天java Socket实现
  10. 哈希表(三)——哈希冲突