流水线技术在编程器中的提速应用

发布时间:2015-10-27 14:06    发布者:designapp
关键词: 流水线 , 编程器
  摘要:美国思科公司总裁约翰·钱伯斯他在谈到新经济的规律时说,现代竞争已经不是大鱼吃小鱼,而是快的吃慢的.在现代竞争中,效率有着决定性的作用。专业的烧录器厂商是如何做到比山寨烧录产品的快呢?
  美国思科公司总裁约翰·钱伯斯他在谈到新经济的规律时说,现代竞争已“不是大鱼吃小鱼,而是快的吃慢的.”在现代竞争中,效率有着决定性的作用。
  做嵌入式开发的工程师都知道,一旦产品需要量产,批量生产的烧录器必不可少。在调试阶段,工程师可以用串口下载来实现代码的烧录,如果用串口进行生产,工厂是绝不会允许的,因为效率实在太低。
  烧录器的功能,主要对非易失性的存储器进行操作(MCU内部Flash也都是各类非易失性的存储器)。这些存储器通常都需要擦除、编程和校验。这些基本操作和一些控制设置操作,是烧录的主要内容。
  通常情况下,这些操作都是依次执行的,先擦除,擦除完成后,对存储器进行加电编程,编程完成后,再对编程的部分进行校验、对比。这些步骤都是环环相扣,一步一步实现的,串行的处理效率是很低的。正如,一个人处理一件事忙不过,那么两个人三个人一起来呢,效率立即提高3倍。
  一步一步实现的方式,就是目前市面上很多山寨烧录器的做法,效率低下。
  


  图1山寨的烧录器
  专业烧录器厂商,不仅提高烧录时的工作频率,而且命令之间也尽量提高并行度,以达到效率最大化。
  稍微思考下,就会发现,烧录器在编程过程中是按照这样一个顺序执行的:从上位机取命令数据→命令解析→执行。这个过程是一个按顺序循环执行的,对应的操作为取指、译码和执行,解释如下:
  取指----从命令FIFO中取出指令。
  译码----根据指令,产生对应的控制信号。
  执行----执行擦除、编程或者检验操作,或者设置相关参数。
  如果没有采用流水线技术,时空图如图2所示。
  


  图2无流水线时空图
  从图2可知,每条命令都要经过取指、译码和执行后才能进行下一条命令,这严重影响系统的效率。最致命的是,取指、译码和执行都不能同时工作,只有完成取指之后才能译码,译码之后才能执行。
  因此,烧录器做出了改变,采用了“流水线”技术。根据编程器的操作步骤,可以把工作流程分为取指、译码和执行三部分,每一部分负责自己的工作。这样不仅细化了整个工作流程,而且能够使三部分同时工作,从而提高了并行度,进而提高了工作效率。在FPGA硬件实现上,这三部分分别对应三个电路,并且在它们之间都插入寄存器组,组成三级流水线,如图3所示。这样,在每个时钟周期下,取指、译码和执行部分同时使用上级传下来的数据工作,并且在下一个周期把结果传给寄存器以供下一级电路使用。在这个过程中,寄存器起到了暂存结果的作用。
  


  图3 流水线电路示意图
  采用流水线技术的时空图如图4所示。
  


  图4流水线时空图
  从图4中可知,相关的命令执行在时间上是交叠在一起的,也就是说三条命令同时工作(经过首次延迟之后)!比如,在时刻T4,指令N+3在取值,指令N+2在译码,指令N+1执行。值得注意的是,在某一时刻,它们虽然同时工作,但操作的都不是同一条指令。另外,在每个周期,都有一条命令在“执行”,也就是说一个周期产生一个结果,而无流水线技术需要3个周期才有一个结果,相比之下,工作效率提高了3倍。可喜的是,流水线技术会提高频率上限。
  在FPGA设计上,需要估算取值、译码和之下三部分的延时,尽量做到它们之间的延时相等或者接近,才能发挥流水线的优势。另外,理论上,流水线级数越多,工作频率越快,效率相对也高。
               
本文地址:https://www.eechina.com/thread-154749-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表