《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 流水线技术在编程器中的提速应用

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

2015-07-30
作者:周立功致远电子

       摘要:美国思科公司总裁约翰·钱伯斯他在谈到新经济的规律时说,现代竞争已经不是大鱼吃小鱼,而是快的吃慢的.在现代竞争中,效率有着决定性的作用。专业的烧录器厂商是如何做到比山寨烧录产品的快呢?

       美国思科公司总裁约翰·钱伯斯他在谈到新经济的规律时说,现代竞争已“不是大鱼吃小鱼,而是快的吃慢的.”在现代竞争中,效率有着决定性的作用。

       做嵌入式开发的工程师都知道,一旦产品需要量产,批量生产的烧录器必不可少。在调试阶段,工程师可以用串口下载来实现代码的烧录,如果用串口进行生产,工厂是绝不会允许的,因为效率实在太低。

       烧录器的功能,主要对非易失性的存储器进行操作(MCU内部Flash也都是各类非易失性的存储器)。这些存储器通常都需要擦除、编程和校验。这些基本操作和一些控制设置操作,是烧录的主要内容。

       通常情况下,这些操作都是依次执行的,先擦除,擦除完成后,对存储器进行加电编程,编程完成后,再对编程的部分进行校验、对比。这些步骤都是环环相扣,一步一步实现的,串行的处理效率是很低的。正如,一个人处理一件事忙不过,那么两个人三个人一起来呢,效率立即提高3倍。 

       一步一步实现的方式,就是目前市面上很多山寨烧录器的做法,效率低下。

图片7.jpg

                            图1山寨的烧录器

       专业烧录器厂商,不仅提高烧录时的工作频率,而且命令之间也尽量提高并行度,以达到效率最大化。

       稍微思考下,就会发现,烧录器在编程过程中是按照这样一个顺序执行的:从上位机取命令数据→命令解析→执行。这个过程是一个按顺序循环执行的,对应的操作为取指、译码和执行,解释如下:

       取指----从命令FIFO中取出指令。

       译码----根据指令,产生对应的控制信号。

       执行----执行擦除、编程或者检验操作,或者设置相关参数。

       如果没有采用流水线技术,时空图如图2所示。

图片8.png

                            图2无流水线时空图

       从图2可知,每条命令都要经过取指、译码和执行后才能进行下一条命令,这严重影响系统的效率。最致命的是,取指、译码和执行都不能同时工作,只有完成取指之后才能译码,译码之后才能执行。

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

图片9.png

                           图3 流水线电路示意图

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

图片10.png

                                图4流水线时空图

       从图4中可知,相关的命令执行在时间上是交叠在一起的,也就是说三条命令同时工作(经过首次延迟之后)!比如,在时刻T4,指令N+3在取值,指令N+2在译码,指令N+1执行。值得注意的是,在某一时刻,它们虽然同时工作,但操作的都不是同一条指令。另外,在每个周期,都有一条命令在“执行”,也就是说一个周期产生一个结果,而无流水线技术需要3个周期才有一个结果,相比之下,工作效率提高了3倍。可喜的是,流水线技术会提高频率上限。

       在FPGA设计上,需要估算取值、译码和之下三部分的延时,尽量做到它们之间的延时相等或者接近,才能发挥流水线的优势。另外,理论上,流水线级数越多,工作频率越快,效率相对也高。


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。