0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个典型的流水线设计

FPGA快乐学习 来源:FPGA快乐学习 2023-05-08 10:55 次阅读

流水线设计通常可以在一定程度上提升系统的时钟频率,因此常常作为时序性能优化的一种常用技巧。如果某个原本单个时钟周期完成的逻辑功能块可以进一步细分为若干个更小的步骤进行处理,而且整个数据处理过程是单向的,即没有反馈运算或者迭代运算,前一个步骤的输出是下一个步骤的输入,那么就可以考虑采用流水线设计的方法来提高工作的时钟频率。

如图3.23所示,典型的流水线设计是将原本一个时钟周期完成的较大的组合逻辑(上图)通过合理的分割后由多个时钟周期分别完成n个较小的组合逻辑(下图)。原本1个时钟周期完成的逻辑功能拆分为n个时钟周期以流水线方式实现,虽然该设计的时钟频率会有所提升,但是需要额外付出n-1个时钟周期的初始延时。

386d74cc-ed41-11ed-90ce-dac502259ad0.jpg

图3.23 流水线设计的寄存器模型

如图3.24所示,假设一个流水线设计需要四个步骤完成一个数据处理过程,那么从有数据输入(in1)的第1个时钟周期(1clk)开始,直到第4个时钟周期(4clk)才处理第1个输入数据;如果输出时再用寄存器打一拍,通常是第5个时钟周期才会输出第1个数据的处理结果;但在以后的每个时钟周期内都会有处理完成的数据持续输出。也就是说,流水线设计在提高工作的时钟频率的情况下,只在开始处理时需要一定的延时时间(和流水线级数正相关),以后就会不间断的输出数据,从而提高处理速度。如果该设计不采用流水线设计,那么该实例处理一个数据就需要4个时钟周期,而流水线设计则能够提高最多4倍的处理速度(取决于设计的整体性能水平,通常情况下是提升不了4倍的)。

38828ac4-ed41-11ed-90ce-dac502259ad0.jpg

图3.24 流水线设计实现

这里我们来看一个除法器IP核进行流水线优化的例子。如图3.25所示,在Xilinx提供的除法器IP核的配置页面中,有一个时延选项(Latency Options),这个时延其实就是我们刚刚提到的数据从输入到输出,经过内部的流水线处理逻辑,所需要的初始延时时钟周期数。可想而知,这个延时设置得越大,对应的流水线级数越高,可以达到的时序性能应该是会约好的;但这个延时值如果设置的较小,对应的流水线级数就越低,那么势必会影响它的时序性能。以笔者的经验,在一些算法实现中,经常会涉及除法器IP核的使用,虽然流水线级数设置得高一些能够带来更好的时序性能,但是往往也会涉及与该除法器计算结果相关的中间结果也需要用寄存器进行较多的延时缓存,有时这也是一笔不小的资源开销,所以就比较矛盾,因此通常会选择一个比较折中的时延参数,而不是单纯的“越大越好”。

38a525a2-ed41-11ed-90ce-dac502259ad0.jpg

图3.25 除法器IP的配置页面

在工程note10_prj002中,使用了Latency=2的一个较小的时延和流水线级数。在编译后,查看时序结果,如图3.26,对于50MHz这样较低频率下的时钟(20.0ns时钟周期),竟然也有3条和除法器(uut_div_gen_1)相关的3条路径出现了时序违规(Slack为负)。

38bad636-ed41-11ed-90ce-dac502259ad0.jpg

图3.26 2级流水线的时序结果

在工程note10_prj003中,当我们尝试修改Latency=4,将除法器的流水线数增加1倍后再做编译。如图3.27,此时已经不存在时序违规路径了,并且最小的时序余量也高达4.022ns,性能提升明显。

38d2c728-ed41-11ed-90ce-dac502259ad0.jpg

图3.27 4级流水线的时序结果

对于流水线设计是否能够实际的提升设计工程的时钟频率,并不能仅从局部的优化去考虑,而需要从整体的设计去考量。在时序性能的优化中,通常是先找到时序的关键路径,即时钟频率的瓶颈所在,从关键路径下手进行必要的流水线优化,如此才有可能提升性能。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117723
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119373
  • 流水线
    +关注

    关注

    0

    文章

    110

    浏览量

    24989
  • 除法器
    +关注

    关注

    2

    文章

    14

    浏览量

    13850
  • 时序
    +关注

    关注

    5

    文章

    357

    浏览量

    36957

原文标题:经典设计思想:流水线设计

文章出处:【微信号:FPGA快乐学习,微信公众号:FPGA快乐学习】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是流水线?ARM处理器流水线简析

    流水线是为了提高效率,能并发同时进行多个任务。
    的头像 发表于 09-05 15:39 1243次阅读
    什么是<b class='flag-5'>流水线</b>?ARM处理器<b class='flag-5'>流水线</b>简析

    FPGA中的流水线设计

    处理速度)。第二 什么时候用流水线设计使用流水线般是时序比较紧张,对电路工作频率较高的时候。典型情况如下:1)功能模块之间的流水线,用乒乓
    发表于 10-26 14:38

    现代RISC中的流水线技术

    流水线技术是提高系统吞吐率的项强大的实现技术,并且不需要大量重复设置硬件。20世界60年代早期的些高端机器中第次采用了流水线技术。第
    发表于 03-01 17:52

    什么是流水线技术

    什么是流水线技术 流水线技术
    发表于 02-04 10:21 3739次阅读

    流水线中的相关培训教程[1]

    流水线中的相关培训教程[1]  学习目标     理解流水线中相关的分类及定义;
    发表于 04-13 15:56 885次阅读

    流水线中的相关培训教程[3]

    流水线中的相关培训教程[3] (1) 写后读相关(RAW:Read After Write) (命名规则) :j 的执行要用到 i 的计算结果,当它们在流水线中重叠执行时,j 可
    发表于 04-13 16:02 784次阅读

    流水线中的相关培训教程[4]

    流水线中的相关培训教程[4] 下面讨论如何利用编译器技术来减少这种必须的暂停,然后论述如何在流水线中实现数据相关检测和定向。
    发表于 04-13 16:09 4351次阅读

    电镀流水线的PLC控制

    电镀流水线的PLC控制电镀流水线的PLC控制电镀流水线的PLC控制
    发表于 02-17 17:13 36次下载

    高速ADC的可编程特性的重要性

    多年来,高速信号转换系统中的模数转换器(ADC)所使用的典型流水线架构包含了取样波形所需的所有功能,这些功能被集成进同一封装中:
    的头像 发表于 06-17 08:05 1843次阅读

    Verilog基本功之:流水线设计Pipeline Design

    第一部分什么是流水线 第二部分什么时候用流水线设计 第三部分使用流水线的优缺点 第四部分流水线加法器举例 一. 什么是流水线
    发表于 09-25 17:12 4540次阅读

    FPGA之流水线练习(3):设计思路

    流水线的平面设计应当保证零件的运输路线最短,生产工人操作方便,辅助服务部门工作便利,最有效地利用生产面积,并考虑流水线安装之间的相互衔接。为满足这些要求,在流水线平面布置时应考虑流水线
    的头像 发表于 11-28 07:07 2083次阅读

    各种流水线特点及常见流水线设计方式

    按照流水线的输送方式大体可以分为:皮带流水装配线、板链线、倍速链、插件线、网带线、悬挂线及滚筒流水线这七类流水线
    的头像 发表于 07-05 11:12 6337次阅读
    各种<b class='flag-5'>流水线</b>特点及常见<b class='flag-5'>流水线</b>设计方式

    嵌入式_流水线

    流水线一、定义流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们可同时为多条指令的不同部分进行工作。• 把一个重复的过程分解为若干个子过程
    发表于 10-20 20:51 6次下载
    嵌入式_<b class='flag-5'>流水线</b>

    CPU流水线的问题

    1989 年推出的 i486 处理器引入了五级流水线。这时,在 CPU 中不再仅运行一条指令,每一级流水线在同一时刻都运行着不同的指令。这个设计使得 i486 比同频率的 386 处理器性能提升了不止一倍。
    的头像 发表于 09-22 10:04 1365次阅读

    什么是流水线 Jenkins的流水线详解

    jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkin
    发表于 05-17 16:57 668次阅读