一文彻底搞懂流水线加法器

这篇具有很好参考价值的文章主要介绍了一文彻底搞懂流水线加法器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.流水线加法器应用场景

2.流水线加法器本质原理(与普通加法器区别)

3.流水线加法器实现

4.流水线加法器代码Verilog代码实现


1.流水线加法器应用场景

首先最重要的是明白我们流水线加法器是什么,我们其实对于流水线其实并不陌生,我们常常可以听到说工厂中存在流水线,他是一种工业上的生产方式,应用场景是生产众多产品的时候,采用流水线方式可以大大提高生产速度。那么我们的流水线加法器也是一样,是应用于多组数据相加,以提高整体计算速度,不让加法器闲置。比如我们计算如下一组数据:

第一组G1

a1 0011_1100 b1 1100_0011

第二组G2

a2 0100_1100 b2 1110_0011

第三组G3

a3 1010_1010 b3 1111_1100

如果仅仅是一组数据相加,那么流水线加法器和普通加法器比起没有什么优势,流水线加法器的优势体现在大量数据相加。

2.流水线加法器本质原理(与普通加法器区别)

为了方便理解,我们后面采用这上述一组包含3组数据的集合来讲解。上述数据如果我们用普通加法器,分成高四位和低四位分别计算,也就是用两个四位加法器。假设高四位和低四位计算分布都各自需要一个周期T,那么我们计算第一组数据需要2T秒(高四位结果需要等低四位的进位结果出来后才能计算得到,第四位耗费T,T秒后高四位开始计算,最后又消耗T,总消耗2T秒)第一组数据计算完毕以后,我们才可以计算第二组数据,同上又一次耗时2T,第三组数据同上2T,总耗时6T秒。

普通加法器时间序列(1)如下:图对于理解非常重要 

流水线加法器,计算机系统基础,硬件工程

观察上图我们发现,在我们计算高4位的时侯,低4位加法器是空着不工作的,计算高4位的是,低4位加法器是空着不工作的,这其实会浪费很多费时间。我们想到让高4位和低4位的加法器一直工作。这样可以节省时间,更快地得到所有结果。

所以想到采用如下流水线加法器时间序列(2):

流水线加法器,计算机系统基础,硬件工程

这时候我们发现每隔Ts后,都会有一组值计算完毕,这样使得总时间压缩到4T秒完成,这仅仅是两级流水,如果更多级可以更明显感受到时间的缩短。

总之就一句话,每一个加法器你都不能给我闲着!!都给我work!work!work!

3.流水线加法器实现

但是理想很丰满,现实很骨感,实际实现起来发现还是不容易的。对于普通加法器级联模式如下

流水线加法器,计算机系统基础,硬件工程

如果采用上述序列(1)的普通加法器模式,我们可以直接利用上面加法器,把第一组数据同时输入到低四位和高四位加法器中,这时候低四位先计算完,它输出整体的低四位,它的输入值在T秒到2T秒不会改变,因而它可以等高四位计算完毕,2T秒的时候,高四位计算完毕,此时低四位和高四位综合得到的是G1组的低四位和高四位组合,也就是G1计算的最终整体值(低四位是在T秒时算出的,高四位是在2T秒算出的)

而如果采用流水线加法器序列(2),就得改装了,因为在T-2T秒的时候,低四位加法器的输入值会改变,观察上面流水线加法器时间序列(2)图,可以发现低四位加法器计算的是G2组的低四位,如果这时候还直接输出,则会在2T秒的时候接收到G2组的低四位,G1组的高四位组合值,这是错误的,我们期望得到G1组的高四位和第四位的组合值,所以在T秒G1组的低四位计算出来后,先存在寄存器中一个周期,在2T秒的时候释放出来,也就是我们的输出同步。改装如下

流水线加法器,计算机系统基础,硬件工程

0-T秒 低四位加法器进行G1组的低四位计算,T秒时把结果存在寄存器一中

T-2T秒 低四位加法器进行G2组的低四位加法器,2T秒时寄存器一结果输出(为G1组低四位),再把G2组第四位结果存入寄存器一

2T-3T秒 低四位加法器进行G3组的低四位加法器,3T秒时寄存器一结果输出(为G1组低四位),再把G3组第四位结果存入寄存器一

再次观察上述流水线加法器时间序列(2)我们发现T秒的时候才把第一组的高位传入高位加法器计算。因而我们需要在高四位的输入加寄存器,使得高四位在寄存器存一个周期再进入高四位加法器计算。也就是我们同时要保证输入同步

流水线加法器,计算机系统基础,硬件工程

0-T秒 0秒时把G1组高四位输入到寄存器二三,T秒时输入高四位加法器运算

T-2T秒 T秒时把G2组高四位输入到寄存器二三,2T秒时输入高四位加法器运算,2T秒时G1组高四位计算完毕输出。

2T-3T秒 2T秒时把G3组高四位输入到寄存器二三,3T秒时输入高四位加法器运算,3T秒时G2组高四位计算完毕输出。

3T-4T秒 4T秒时G3组高四位计算完毕输出。

综上,我们发现对于流水线加法器最重要的是输入输出同步,只有这样,某一个时刻(如T秒),我们输出的才是某一组数据的低四位和高四位和的组合,而不是交叉混乱的,这就是我们需要引入寄存器存放的原因。

4.流水线加法器代码Verilog代码实现

流水线加法器,计算机系统基础,硬件工程文章来源地址https://www.toymoban.com/news/detail-715090.html

到了这里,关于一文彻底搞懂流水线加法器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UnityShader(一)渲染流水线

    目录 一、什么是渲染流水线 二、渲染流程的三个概念性阶段 1.应用阶段(Application Stage) 一、准备好场景数据 二、粗粒度剔除 三、设置渲染状态 2.几何阶段(Geometry Stage) 3.光栅化阶段(Rasterizer Stage) 三、CPU和GPU的通信 1.把数据加载到显存中 2.设置渲染状态 3.调用Draw Ca

    2024年02月02日
    浏览(47)
  • Jenkins流水线怎么做?

    问CHAT:Jenkins流水线怎么做? CHAT回复:Jenkins流水线是一种创建、测试和部署应用程序的方法。以下是为Jenkins创建流水线的步骤: 1. 安装Jenkins:首先你需要在你的服务器上安装Jenkins。这个过程可能会根据你的操作系统有所不同。 2. 安装必要的插件:为了使流水线工作,你需

    2024年01月24日
    浏览(55)
  • 【Jenkins】pipeline流水线

    流水线既能作为任务的本身,也能作为jenkinsfile,使用流水线可以让我们的任务从ui手动操作,转换为代码化,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队其他开发者同事参与进来,同时也可以编辑开发jenkinswebui不能完成的复杂的构建逻辑,作

    2024年02月09日
    浏览(75)
  • Jenkins的流水线详解

    来源:u.kubeinfo.cn/ozoxBB 什么是流水线 声明式流水线 Jenkinsfile 的使用 jenkins 有 2 种流水线分为 声明式流水线 与 脚本化流水线 ,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkins 推荐使用声明式流水线。文档只介绍声明流水线。 声明式流水线 在声明式流水线语

    2024年02月11日
    浏览(48)
  • Jenkins 流水线多阶段构建

    Jenkins流水线配置遇到 无法识别的。需要使用 自定义环境 项。 比如官网的在流水线中使用Docker Started by remote host 172.17.0.1 Obtained Jenkinsfile from git http://10.99.20.51:8082/root/java-devops-demo.git org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 28: Invalid agent type “

    2024年04月22日
    浏览(38)
  • CI/CD流水线实战

    不知道为什么,现在什么技术都想学,因为我觉得我遇到了技术的壁垒,大的项目接触不到,做的项目一个字 辣* 。所以,整个人心浮气躁,我已经得通过每天的骑行和长跑缓解这种浮躁了。一个周末,我再次宅在了家里,学习了一下 CICD 。 先分享一下 shigen 的学习视频资源

    2024年02月12日
    浏览(66)
  • Verilog流水线设计——Pipeline

    在工程师实际开发过程中,可能会经常遇到这样的需求:数据从数据源端不断地持续输入FPGA,FPGA需要对数据进行处理,最后将处理好的数据输出至客户端。 在数据处理过程中,可能需要一系列的处理步骤。比如常规的信号进行处理步骤有(这里的处理步骤只是举个例子):

    2024年02月08日
    浏览(51)
  • verilog实例-流水线(Pipeline)

    所谓流水线设计实际上是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组并暂存中间数据。 K级的流水线就是从组合逻辑的输入到输出恰好有K个寄存器组(分为K 级,每一级都有一个寄存器组),上一级的输出是下一级的输入而又无反馈的电路。 流

    2024年02月02日
    浏览(53)
  • 【软件架构】流水线设计模式

    流水线模式 流水线 模式是一种软件设计模式,它提供了构建 和执行 一系列 操作的能力。 此模式最好与 插件 模式结合使用,以便在应用程序启动时 动态 构建流水线。 顺序 流水线的最基本实现是一个简单的操作序列。 可以调用 操作 的接口来 处理 数据。 流水线一个一个

    2024年02月10日
    浏览(50)
  • 3D Tiles语义分割流水线

    Dylan Chua 和 Anne Lee 开发了一个处理管线,用于对 3D Tiles 中包含的 GL 传输格式 (glTF) 模型进行语义分割。 该管道读取并遍历 3D Tileset,以输出包含元数据的经过转换的划分对象集。 该项目为 3D 语义分割器提供了最小可行产品,作为各种应用程序的概念验证。 他们接受模拟和培

    2024年04月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包