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级流水线的时序结果

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

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

    关注

    31

    文章

    5588

    浏览量

    129057
  • Xilinx
    +关注

    关注

    73

    文章

    2192

    浏览量

    129916
  • 流水线
    +关注

    关注

    0

    文章

    127

    浏览量

    27120
  • 除法器
    +关注

    关注

    2

    文章

    15

    浏览量

    14110
  • 时序
    +关注

    关注

    5

    文章

    402

    浏览量

    38626

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    流水线基本结构

    3级流水线(Cortex-M0) 分为以下三阶段: 取指(Fetch):从存储器中读取指令。 解码(Decode):解析指令的操作类型和操作数。 执行(Execute):执行指令(如算术运算、内存
    发表于 11-21 07:35

    FPGA中的流水线设计

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

    现代RISC中的流水线技术

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

    周期精确的流水线仿真模型

    使用软件仿真硬件流水线是很耗时又复杂的工作,仿真过程中由于流水线的冲突而导致运行速度缓慢。本文通过对嵌入式处理器的流水线, 指令集, 设备控制器等内部结构的分析和
    发表于 12-31 11:30 9次下载

    什么是流水线技术

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

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

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

    电镀流水线的PLC控制

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

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

    ,并暂存中间数据的方法。 目的是将大操作分解成若干的小操作,每步小操作的时间较小,所以能提高频率,各小操作能并行 执行,所以能提高数据吞吐率(提高处理速度)。 二. 什么时候用流水线
    发表于 09-25 17:12 7671次阅读

    FPGA之为什么要进行流水线的设计

    流水线又称为装配线,种工业上的生产方式,指每一个生产单位只专注处理某一个片段的工作。以提高工作效率及产量;按照流水线的输送方式大体可以分为
    的头像 发表于 11-28 07:04 4116次阅读

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

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

    滚筒输流水线故障排除方法

    在工程建造中,滚筒流水线演着重要的角色。在些工程建造过程中,经常看到滚筒流水线的身影。在工业不断发展下的今天,滚筒流水线日益增长,走向多元化。滚筒
    发表于 07-08 09:32 2235次阅读

    如何选择合适的LED生产流水线输送方式

    LED生产流水线输送形式分为平面直线传输流水线、各种角度平面转弯传输流水线、斜面上传流水线、斜面下传流水线这四种输送方式,企业也是可以根据L
    发表于 08-06 11:53 1333次阅读

    嵌入式_流水线

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

    CPU流水线的问题

    1989 年推出的 i486 处理器引入了五级流水线。这时,在 CPU 中不再仅运行条指令,每流水线在同时刻都运行着不同的指令。这个
    的头像 发表于 09-22 10:04 2804次阅读

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

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