以Tensilica的可配置与可扩展处理器Xtensa为例,其模块图如图1所示。它包括了基本指令集架构、通用寄存器文件、存储器接口、可选的处理器外设、DSP协处理器以及集成用户定制指令的机制。
处理器的可扩展能力可以看做可配置的高级形式,因为它的应用更为广泛。系统设计者和应用专家可以直接探索应用的性能需求以及什么样的处理器架构和指令集才能满足这样的需求。
微处理器的应用将SoC设计与板级设计区分开来
RTL硬逻辑有许多优势——面积小、功耗低、性能强大。但是在大规模的SoC设计中,采用RTL硬逻辑的不利因素(设计周期长、验证困难、不够灵活)正在逐渐大过其优势。而保留了大多数RTL硬逻辑的优点,又能够缩短开发时间并降低风险的设计方法正在流行起来,这就是针对特殊应用进行优化以取代复杂RTL设计的可配置处理器。
针对应用进行优化的处理器与相应的RTL设计拥有相近的数据通路,它在基本处理器核的流水线上增加额外的运算单元,新的寄存器或寄存器文件以及芯片架构师定义的其他功能模块来实现特定的应用。
在Xtensa处理器中,这些扩展功能是利用一种名为TIE语言的类Verilog语言来描述的。TIE语言经过优化,适用于描述数据处理指令的功能并对其进行编码。用TIE语言来进行描述比RTL要简洁得多,因为它去掉了所有时序逻辑,包括状态机描述、流水线寄存器以及初始化顺序。对于固件程序员来说,处理器中用TIE语言扩展的新指令和寄存器都可以通过编译器和汇编器来进行调用。利用处理器中取指、译码、执行的流水线机制,通过C或C++高级语言编程,可以由固件程序来控制处理器数据通路上的操作。用来替代RTL模块的可扩展处理器与传统的RTL设计在结构上大同小异:更深的流水线、并行的执行单元、特殊的状态寄存器、比片内外存储器间更宽的数据接口等。这些扩展后的处理器保留了原来RTL设计强大的运算能力和数据接口格式。
可扩展处理器对数据通路的控制机制则与RTL设计中依靠硬件状态机切换状态大为不同。实际上,操作的顺序完全由处理器上运行的固件程序控制,如图2所示。用跳转指令来实现控制操作,load/store指令来实现内存操作,通用和专用计算指令来实现数据运算操作。
图2 可编程的功能模块:数据通路+处理器+软件程序