E906的流水线|学习笔记

简介: 快速学习 E906的流水线

开发者学堂课程【高校精品课-大连理工大学-计算机组织与结构:E906的流水线】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/3/detail/16056


E906的流水线

 

内容介绍

一、E906流水线介绍

二、指令的乱序写回

三、L/S 类型指令的流水执行

四、浮点指令的执行冲突问题

 

一、E906流水线介绍

E906处理器有5级整形流水线

-即指令提取、指令译码、指令执行、内存访问、写回

-采用按序单发射的机制,不支持乱序发射同时也不支持多发射,处理器从内存中一次只能取一条指令

指令的流水执行

image.png

这个是单执行周期的指令的流水执行过程,下面有三条指令,每条指令是五个执行阶段,它依次错开采用流水执行的方式,一共用七个时钟周期就可以完成三条指令的执行。如果串行执行就需要15个周期才能够把三条指令都执行完,所以流水线的采用实际上是能够大幅提高指令的执行速度的。

 

二、指令的乱序写回

两执行周期乘法指令和多执行周期除法指令

为了减少长周期指令对流水线造成的堵塞,E906设计乱序写回机制,除法指令需要4个周期,后续没有冲突的加法指令可以先于除法指令回写

image.png

这个是两执行周期的乘法指令和多执行周期的除法指令,当前有四条指令,第一条是一个乘法指令,它有两个执行周期,我们用 EX 来表示,第二个出发指令有四个执行周期,为了减少长周期指令对流水线造成的阻塞,E906设计了乱序写回机制,出发指令需要四个周期,后续没有冲突的加法指令是可以先与除法指令写回的。

下面这条加法指令,如果和他紧挨着的上面的除法指令没有相关就可以直接执行完毕,可以先于除法指令执行结束。但是下面一条加法指令是与除法有冲突的加法指令就必须等待,要等待除法指令的执行周期结束以后才能开始自己的执行周期。执行完一码之后插入两个气泡导致后续的加法指令向后延续了两个周期。

 

三、L/S 类型指令的流水执行

第一条 Add 指令与 Load 指令没有数据冲突,超前 Load 指令回写寄存器;第二条 Add 指令与 Load 指令存在冲突阻塞执行

image.png

在这个例子当中第一条加法指令和load的指令没有数据冲突,超前露的指令写回到寄存器中那第二条Add指令和load指令存在冲突,所以要阻塞执行。

第一条是个 Store 指令,第二条是 load 指令,第三条 Add 指令实际上是和 load 的指令没有冲突。Load 指令和Add指令都可以顺利执行。但是第四条加法指令是和 Load 指令有冲突的,所以他在指令译码之后插入了气泡,等待load指令执行到一定阶段,最后一条 Add 指令才能够继续往后走,所以这两条 Add 执行,执行的时间实际上是差了三个时钟周期的。

 

四、浮点指令的执行冲突问题

浮点除法指令需要多个周期完成,后续紧挨的没有冲突的浮点加法可以先于除法指令回写,对于存在冲突的浮点指令需要等待浮点除法指今完成才能发射到执行单元

image.png

浮点除法指令需要多个周期才能完成,后续紧挨着没有冲突的浮点加法指令实际是可以先与除法指令写回的,但是对于存在冲突的浮点指令需要等待浮点除法指令完成以后才能发射到执行单元。

第一条是浮点乘法指令,第二条是浮点除法指令,第三条浮点加法指令,它和浮点除法没有冲突,这两条指令都可以顺利执行完这条除法和这条加法,这两条浮点指令都能顺利执行完。

但是最后一条浮点加法指令是和浮点除法指令有冲突,在异码之后插入了三个气泡,等这个浮点除法指令的执行阶段结束以后,最后一条浮点加法指令才能够开始执行。这个就是它的冲突问题造成的后续加法指令执行延后。

相关文章
|
3月前
|
jenkins 持续交付 开发工具
jenkins学习笔记之一:流水线基础语法
jenkins学习笔记之一:流水线基础语法
|
3月前
|
jenkins 持续交付 API
enkins学习笔记之十一:优化Gitlab提交流水线
enkins学习笔记之十一:优化Gitlab提交流水线
enkins学习笔记之十一:优化Gitlab提交流水线
|
3月前
|
jenkins Devops Java
jenkins学习笔记之十:配置Gitlab提交流水线
jenkins学习笔记之十:配置Gitlab提交流水线
|
6月前
|
JavaScript jenkins 持续交付
Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)
Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)
208 0
|
6月前
|
存储 缓存 算法
龚大视频学习笔记:上帝视角看GPU(1)-图形流水线基础
龚大视频学习笔记:上帝视角看GPU(1)-图形流水线基础
210 0
龚大视频学习笔记:上帝视角看GPU(1)-图形流水线基础
|
弹性计算 Kubernetes 安全
实验四:流水线部署 | 学习笔记
快速学习实验四:流水线部署
实验四:流水线部署 | 学习笔记
|
Java Spring 调度
spring学习笔记(16)趣谈spring 事件机制[2]:多监听器流水线式顺序处理
<div class="markdown_views"> <p>上一篇我们使用到的ApplicationListener是无序的,结合异步调度它能满足了我们的大部分应用场景,但现在我们来个另类的需求,我们来模拟一条<strong>作业调度流水线</strong>,它不能异步,必须按照先后次序执行不同的任务才能得到我们的最终结果。 <br> 需求示例:现在假如华中科技大学的小白想
3021 0
|
3月前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
80 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
3月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。