处理中...

首页 > 资料大全 > 解决方案 >

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

流水线技术在编程器中的提速应用
来源:EEFOCUS 时间:2015-08-05

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


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


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


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


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


图1山寨的烧录器


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


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


取指----从命令FIFO中取出指令。
译码----根据指令,产生对应的控制信号。
执行----执行擦除、编程或者检验操作,或者设置相关参数。


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


图2无流水线时空图


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


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


图3 流水线电路示意图


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

 


图4流水线时空图


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


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

热门推荐

更多 >
ESP32-S3 2022-03-16
RG200U 2022-03-16
USR-C322 2022-03-16

资料浏览排行榜

更多 >
商品名称 大小 浏览量
1 EPCS128SI16N 0.94MB 22000次
2 1N4001 0.19MB 17867次
3 DAC1220E 0.95MB 15865次
4 EP1C6Q240I7N 2.47MB 15822次
5 GRM32RR71H105... 0.10MB 14004次
6 DR127-3R3-R 0.72MB 11679次
7 DMG2305UX-7 0.40MB 9279次
8 DMP2008UFG-7 0.24MB 9066次
9 DS1337U+ 0.28MB 9063次
10 DX4R105JJCR18... 0.26MB 8981次