FPGA软核之战点燃创新激情

技术分类: 可编程器件  | 2008-04-24
来源:微处理器报告 | 作者:Tom R. Halfhill

  为了保证更高的效率,CoreConnect将低速和高速的外设分别设置在分开的总线上,两条总线由桥连接起来。截止到目前,MicroBlaze只支持较慢的片上外设总线(OPB),该总线的数据通道宽度为32bit。MicroBlaze v7仍然保持了与OPB之间的后向兼容性,但增加了对速度更快的处理器本地总线(PLB)的支持。在面向32、64或者128bit宽度的综合时,PLB的数据通道是可配置的。总线的带宽取决于这些数据通道的宽度和FPGA的时钟频率,速度最快的Virtex-5器件的时钟频率已经达到了550MHz。在550MHz的频率上,一个128bit的PLB的最大的理论带宽为8.8MB/s。

  PLB直接与CPU相连,提供了一条为若干片上外设所共享的多点总线。它是一个Xilinx专有的、被称为快速单工链路(FSL)的接口。FSL是直接的点-点接口,而并非多点总线。FSL的速度要比共享总线的快,但是每个I/O接口需要更多的逻辑门电路。一个SoC设计可以使用一条或多条FSL与一条CoreConnect PLB的组合来满足不同的目标需求,从而给开发者提供了丰富的设计选项。

  图1示出了在Xilinx FPGA上实现的一个SoC实例,其中采用了一个MicroBlaze或者Power 405处理器内核。在这个TCP/IP包处理器实例中,最关键的数据通道将Ethernet控制器与外部存储控制器和CPU连接起来。这些数据通道是FSL,宽度可以是32~128bit。重要性较低的部件则分享一个CoreConnect PLB。Xilinx开发工具可以自动对FSL进行配置,使之服务于某个特定的目的,或者让开发者能够对接口进行人工配置。

在Xilinx FPGA上实现的一个SoC实例

  经过IBM的许可,Xilinx对标准的CoreConnect IP进行了轻微的改进。但这些改进是必不可少的,因为FPGA的可编程逻辑门的效率并没有ASIC的标准的单元门那么高,特别是路由信号要横跨一块大芯片时。在FPGA中,数据通道和时钟树所延伸的长度要远远高于ASIC的情况,这使得时序的收敛变得更为困难。对于那些分布在芯片各处的、数不清的外设连接到一条共享总线上的复杂设计而言,该问题变得更为严重。于是,Xilinx对PLB进行了改进,提高了它的同步能力,并消除了不确定的数据猝发现象。Xilinx宣称,这些改进虽然相对而言幅度并不大,却可以让开发者能够在CoreConnect PLB上连接10~20个外设,而不至于出现时序问题。

  此外,Xilinx已经改进了PLB,使之能以更高的效率与集成在某些Virtex-5 FPGA中的、加固的收发机交互。这些收发机是一个PCI Express端点和一个3模Ethernet媒体访问控制器(TEMAC),它们可以提供的性能将远远优于那些功能相同、综合到架构中的软IP控制器的性能。上述的PCI Express端点得到了充分的缓冲,并且支持1、2、4或8条通道。TEMAC收发机则支持10Mb/s、100Mb/s和Gigabit Ethernet数据率。在Xilinx的基准测试中,一个基于MicroBlaze v7和TEMAC的包处理器实现了750Mb/s的原始吞吐率,对收发机的理论最大带宽的利用率达到了惊人的75%。

  虽然AMBA得到的支持要比CoreConnect所得到的支持广泛,后一种标准对于MicroBlaze来说却更为适合。内置到某些Virtex系列FPGA内部的Power 405处理器则采用了CoreConnect,因此,开发者能够更为轻松地基于Power 405和MicroBlaze内核创制出非对称的多处理器。许多来自于第三方厂商的外设IP内核,往往通过添加一个简单的衬垫适配头就可以与AMBA或者CoreConnect一起工作。

  新指令提升性能

  Xilinx在MicroBlaze v7中添加了11种新的指令:3种用于浮点运算,其余8种则用于FSL的操作。这些新的浮点指令是简明易用的。其中的一个指令FSQRT,可在27或者29个时钟周期计算出一个32bit浮点值的平方根,具体的时间占用取决于MicroBlaze处理器配置了3级或者5级流水线。如果不采用FSQRT,则同样的运算应通过对软件库的函数调用来实现,耗时约为500个周期。

  其他两种新的浮点指令可以把整数转换为浮点数或者执行相反的运算。FLT指令可以在4~6个时钟周期中把一个32bit的整数转换为32bit的浮点数,具体则取决于流水线的深度。要在软件中调用相同的函数将需要330个时钟周期。相反地,FINT指令则可以在5或者7个时钟周期中将一个32bit的浮点数变换为32bit整数,具体的时间长度取决于流水线深度。而软件调用将耗用88个周期的时间。

  当协处理器通过FSL连接到MicroBlaze内核上时,另有8种新的指令可以改善I/O特性。这些指令采取了PUT和GET操作的形式,它们可以让程序以闭锁(blocking)或者非闭锁运算的形式管理协处理器的I/O。在分块关系中,CPU停止处理其他的操作,直到将协处理器的请求处理完为止。在非闭锁关系中,CPU继续处理其他操作,而协处理器的请求被送入一个FIFO缓冲器中。在缓冲器未被充满前,CPU不会被闭锁。开发者可以根据协处理器的需要来定义缓冲器的尺寸。

  此外,MicroBlaze v7的FSL接口的数量是从前的两倍(16比8),而程序在运行过程中可以动态地将协处理器分配给各FSL接口。先前,协处理器在FSL间的分配是通过硬代码形式嵌入用户的软件中的。进行任何改动进行任何改动时,开发者都必须对软件进行重新编译。动态分配使得开发者编写出的软件能适应不断变化的条件和工作负载。多媒体加速库可以在专门完成快速傅里叶变换(FFT)或者有限脉冲响应(FIR)滤波器运算的协处理器上运行。

1】【2】【3
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销