通过APU扩展指令集的基本原理设计人员想优化嵌入式系统时,通常是设法扩展处于设计核心位置的微处理器的指令集,以此来达到优化目的。从传统上讲这是最佳方案,因为嵌入式系统的复杂性在于设计的软件部分。您也可以增加专用的硬件模块,直截了当地为设计赋予新功能。 不过,您可能会发现,增加指令的方法在弥补硬件变化方面具有某些显著的优越性,并且在一定程度上易于为设计人员所实现。例如,通过扩展指令,您可以更精细地优化设计。另外,扩展指令集通常不会干扰存储器访问,因此具有优化系统整体性能的可能性。尽管有个人、公司和学术研究机构发表过有关论著,然而对于不熟悉这种技法的任何人来说,扩展指令集都可能看似一种“魔术”。但实际上,这并非那么复杂。请试想您如何通过APU接口向PowerPC处理器的指令集增加某些相当简单的指令,以此来优化Virtex-5 FXT设计。 一般而言,要扩展嵌入式微处理器的指令集,您需要明白您是要进行软硬件两方面修改。首先,您要为系统增加硬件模块,以完成专门的计算。这些计算是在 FPGA 结构中并行执行,而不是在软件中依次执行。用赛灵思公司的话来说,这些硬件模块称为“结构协处理模块”,即FCM。您可以用VHDL或Verilog语言编写这些FCM,它们将在Virtex-5 FXT器件的FPGA结构中终结。您可以将一个或多个FCM连接到PowerPC处理器的APU接口。 下一步是调整软件代码,以便启用增加的指令。您有两种可选方法(假定您在用C语言编程)。第一种方法是修改C编译器,令其自动利用附加指令可施展功效的情形。我们把这种方法留给学术界和致力于ASSP的某些人。 第二种方法较为简洁,不必触及编译器,而是使用所谓编译器认识的函数。也就是说,我们要在软件代码中手动调用一个能使用这些附加指令的C宏或C函数。 无论使用哪种方法,我们都必须调整汇编器,使其支持新指令。幸好,赛灵思公司在嵌入式开发套件 (EDK) 中包括了PowerPC的编译器和汇编器,它们已经支持这些附加指令。PowerPC遇到这些新指令时,迅速察觉它们不是其原指令集的组成部分,进而将它们交给APU予以处理。赛灵思公司已将APU配置成解译这些指令,为相应的FCM提供运算元数据,然后让FCM执行计算。 |