典型的嵌入式系统设计人员在硬件平台上进行编程,他们最关注的一点就是硬件平台的稳定性。如果硬件没有设置好,会带来重新编写代码的麻烦。但是一个完全设置好的稳定的硬件平台还是会对其上运行的程序有一系列的限制。这些限制 - 无论是设计结果,还是一个完全的缺陷 - 都会造成在编码时需要迂回处理甚至重新返工的情况,给设计实现带来麻烦,并且耗费了大量的时间。
通过将FPGA平台和一个精心设计的多核方法结合在一起,开发人员就能以下列这种方式实现高性能分组处理应用:软件工程师能够对计算平台的结构有所控制,从而大大缩短编程时间www.cechina.cn,同时降低延期交付风险。
硬件设计流程的主要工作就是定义一块电路板。像存储器类型、总线协议和I/O这样的基本组件已被预先定义。
如果只使用一个固定的处理器,那它也是预先定义好的。但是,单个处理器无法运行需要吉比特性能的算法(例如分组处理算法),此时就需要多个处理器协同工作。
构建一个处理构造块的最佳方法取决于所运行的软件。使用FPGA来进行处理,就能使你在对代码需求有了进一步了解后,再对精确的实现方式做出明确的决策。全新的Tejia FP平台在Xilin x® VirtexTM - 4 FPGA上提供了一种方法和多核基础设施,使开发人员在完成代码编写后,对多核架构进行精确的配置。
当软件工程师设计硬件时
硬件和软件设计是两种本质上不同的工作。无论硬件设计语言多么像一个软件,它进行的仍然是硬件设计。硬件语言对结构进行定义,并且设计流程最终要进行结构的实体化。但是,软件工程师正越来越多地使用C编程技术来设计系统功能;现有的工具支持使用软件或硬件方法来设计系统功能。
软件实现的方法更偏向于过程导向。它考虑的是“如何去做”而不是“构建什么”的问题,因为从传统观点来看,已经不需要再构建什么了 - 硬件都已经被构建好了。在真正基于软件的设计方法中,关键的功能不是被构建到一种结构中去,而是在一个已经构建好的系统中被结构执行的。灵活性是基于软件的实现方法的优势:在系统出厂后仍能快捷地对其进行改变。虽然FPGA也能现场编程,但改变软件设计要比构建硬件快捷地多。
由于硬件和软件设计存在着差异,因此硬件和软件的设计者所考虑的问题是不同的。硬件工程师不可能只通过改变编程语言的语法www.cechina.cn,就能转变成软件工程师。反之,软件工程师也不可能因为硬件设计中需要软件的参与,就能转变成硬件工程师。因此,不能轻率地就让软件工程师加入到处理架构的设计中来。
此外,硬件工程师、软件工程师或项目经理都不会同意将一个基于硬件方法的设计交给一位软件工程师去完成。软件工程师做出关于硬件的决定时所使用的方法,极有可能得到熟悉类似编程语言的另一位软件工程师的认同。
如图1所示,并行流水线是多核分组处理引擎中处理架构的关键结构。这一引擎由一个处理器阵列加上可能存在的硬件加速器构成。回答了下面这些问题CONTROL ENGINEERING China版权所有,就等于完成了一个设计流程:
需要多少个处理器?
应该如何安排这些处理器?
每个处理器需要处理多少代码和存储多少本地数据?
代码的哪些部分需要硬件加速
让我们来逐一回答这些问题,从而为软件工程师“组装”出一套设计方法。
处理器的数量和配置
所需处理器的数量可以通过对周期预算和执行代码所需的周期数进行简单的数学计算得出。当你要在规定的时间内完成工作时,周期预算就成为一个关键的参数。例如进行分组处理时,数据位置进行划分。这样www.cechina.cn,就能够围绕划分的情况来进行硬件设计,而不用根据硬件来进行划分。软件工程师如何进行设计是一个关键问题。Teja中集成了一组API和一个处理工具,可以用ANSI C来定义硬件平台。此工具可执行程序,创建处理平台的定义,这些定义能够被Xilinx嵌入式工具进行处理。API组的内容十分丰富,并且能够在很靠底的硬件层次上进行控制,但大多数软件工程师不希望使用它们。因此,Teja中还使用参数化的方式加入了一个“典型的”流水线定义的方法。要实现上述示例中的流水线,只需要在配置头文件中修改两个简单的#define陈述式。
下面的陈述式定义了一个两级的流水线,在第一级使用了4个引擎,在第二级使用了2个引擎:图1 - 并行的流水线www.cechina.cn,每个引擎由一个MicroBlaze处理器、专用存储器和可选的减负器构成。包不停地到来,而你在下一个数据包到来之前,只有那么多周期来完成你的工作。如果你的代码需要更长的时间来执行,那么就需要添加更多的处理器。例如,如果周期预算是100个周期,而代码执行需要520个周期,那么你就需要6个处理器(520除以100,然后进位到整数)。你可以对处理器数量进行调整,但必须满足预算的要求。使用Teja工具时,可以通过分析来确定周期数。