《大话处理器》连载——微架构(4) 史上最经典的5级流水线
处理器内部有很多通用寄存器,这些寄存器用来存储指令的操作数,它对程序员可见,如x86有8个通用寄存器,RISC处理器则更多,常有32个或64个等等。这一堆寄存器也被叫做Register file(寄存器堆)。
在流水线设计中,为了确保不同流水线节拍不会相互影响,在每个阶段引入了流水线寄存器来分隔各个流水线节拍:
流水线寄存器
寄存器就像是红灯,信号只在固定的时间才会将左端节拍的值传递给右端节拍,这样各个节拍的工作就不会出现紊乱。
在汇编语言中,ALU(算术逻辑单元)单元直接访问通用寄存器进行运算,在硬件实现时,通用寄存器中的数据先被读到流水线寄存器中,也即ALU的输入寄存器中,ALU运算结束后,数据会存储在ALU的输出寄存器中,最后再送回到通用寄存器中。下图为ALU、通用寄存器、ALU输入输出寄存器的结构图:
ALU、ALU输入输出寄存器、寄存器堆的关系
流水线寄存器是对程序员不可见的,ALU指令的执行节拍可以进一步细分为3个子节拍:
1. 从寄存器堆中读取寄存器的值
2. 进行运算
3. 将运算结果写回到寄存器堆中
根据这个分析,处理器的流水线可以进一步细分。MIPS处理器在设计时,将处理器的执行过程划分为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级流水线相关推荐
- rpg游戏发展史计算机网络,PC Gamer盘点史上最经典RPG游戏TOP15
RPG角色演类游戏往往能带给玩家史诗般的剧情和难忘的战斗体验,今天外媒PC Gamer盘点了史上最经典RPG游戏TOP15,让我们一起来看看吧! 第 2 页 史上最经典15大RPG 2 6.<质 ...
- 史上最经典的27首背景音乐
转自:http://emuch.net/html/200611/357420.html [推荐][资源荟萃]史上最经典的27首背景音乐 1.CCTV<天气预报>主题曲http://www. ...
- 史上最经典的IT入门学习教程DVD光盘免费领!
史上最经典的IT入门学习教程DVD光盘免费领! http://user.qzone.qq.com/1679806262/blog/1395540727
- 《大话处理器》连载——微架构(2) 顺溜流水线的深入分析
在上一节中,顺溜已经告诉了我们流水线的基本概念,顺溜将整个射击过程分成了2个步骤(术语称之为节拍),两个步骤可以并行起来执行,只是时间上进行了些许的错位,这就是流水线的本质. 这条流水线被划分成了2个 ...
- 史上最经典的10大反间计
计之一:陈平间范增 很多人都熟知汉初三杰,萧何,张良和韩信,未免忽视了这位奇计百出的陈平. 范增是追随项羽叔父项梁起兵的老臣.项羽的手下猛将如林,但真正有战略头脑的谋士似乎只有范增一人.当年鸿门宴上范 ...
- 细数汽车史上那些经典的发动机,你知道几个?
纵观世界汽车发展史,每一个汽车工业时期都会诞生极具代表性的车型,而每一款经典车型的背后都有一款经典的发动机. 那什么是经典?或是源自赛道,或是服务于畅销车型,也可以是从自身结构就独一无二的. Part ...
- ARM架构与体系学习(二)——3级流水线
看到汇编中很多关于程序返回与中断返回时处理地址都很特别,仔细想想原来是流水线作用的效果.所以,决定总结学习下ARM流水线. ARM7处理器采用3级流水线来增加处理器指令流的速度,能提供0.9MIPS/ ...
- 《大话处理器》连载——微架构(1) 顺溜的2级流水线
2009年央视有部热播大剧:<我的兄弟叫顺溜>.剧中顺溜是一个神枪手,里面有一个场景,当鬼子来袭击部队时,顺溜向团长建议,给自己配2个人装弹,自己专门负责打枪. <我的兄弟叫顺溜&g ...
- 微服务介绍(史上最全)
1.微服务简介 简而言之,微服务架构风格是一种将单个应用程序开发为"一套小型服务"的方法,每个服务"运行在自己的进程中",并通过轻量级机制(通常是HTTP资源A ...
最新文章
- 大战设计模式【23】—— 原型模式
- C# 读取 appconfig文件配置数据库连接的方法
- HTML 块标签,行内标签,行内块标签以及之间的相互转换
- Linux环境进程间通信 信号量
- redis rdb aof区别_Redis 持久化之 RDB 与 AOF 详解
- MySQL常用命令大全
- 使用RTL-SDR,从打开一个车门到批量打开车门
- 松下机器人找原点步骤_桁架机器人在汽车座椅安装生产线中的应用
- 安装hdfs集群的具体步骤
- java 设置内存参数_Java虚拟机内存参数设置
- TensorRT 进阶用法
- java移位运算_Java 移位运算符
- 中标麒麟服务器中安装达梦数据库(DM7)的具体步骤
- python数据分析入门到实战 知了课堂 百度云_零基础入门Python数据分析,只需要看懂这一张图,附下载链接!...
- 2021-07-10树莓派PWM控制三极管(S8050)实现风扇调速
- Python入门(10)——宝可梦数据集探索
- 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码
- 用计算机处理图像属于啥技术,计算机图像处理技术在网页设计中的应用
- 计算机bios设置方法,bios功能怎么设置_bios设置图解教程
- Ubuntu18.04系统硬盘分区方法