当前的一些高端应用中www.cechina.cn,系统需要处理大量数据、算法和系统内外的通信,采用单RISC核不能满足用户对高性能的需求。基于DSP核和RISC核的并行CPU设计能有效解决这个问题,本文以Hyperstone公司的E1-32为例,阐述如何结合RISC单元和DSP单元实现CPU结构的优化。
在嵌入式处理器设计领域,RISC已经成为处理器结构设计的必然选择。但是,如今嵌入式应用无处不在CONTROL ENGINEERING China版权所有,各种产品之间的通讯需要执行快速傅立叶变换、音视频多媒体处理以及快速通信等基于DSP的算法,如果以单纯的RISC处理器以纯软件的方法来完成控制工程网版权所有,由于高速运行,单RISC处理器在数据吞吐量和代码长度方面的局限性就会凸现出来。正是由于这种市场推动,DSP核+RISC核实现并行的CPU设计方案就逐渐得到广泛应用。
这种双内核并行的架构设计带来了CPU性能的极大提高,同时又带来了一些新的问题:芯片体积增加,需要开辟额外的寄存器、缓存和内部存储空间;功耗显著增大;设计变得异常复杂,需要处理双内核的协作和同步问题、两套不同的指令集,增加了新品设计的复杂性和开发周期。另外,由于需要在两个独立内核的体系结构下来各自编程
一种简单可行的方法是以RISC核为基础,但在RISC核中加入一些用于专门处理的指令。这种方法几乎没有增加芯片尺寸和内核设计的复杂性,但却有一个致命缺点:当执行那些复杂的多循环的指令时,由于要进行数据信号处理、通信协议和图像等专门函数处理www.cechina.cn,RISC核就会出现性能瓶颈。
单内核方法
德国Hyperstone公司已经开发出E1-32这种新的单内核处理器结构。该结构既解决了纯RISC加一些专门指令的单核结构的限制,也克服了RISC核+其它独立核的双核结构的缺点。这种设计在最小化芯片的封装形式、功耗和指令复杂度的同时,却没有牺牲纯RISC核的性能。此外,由于其成本较低,使得该结构可以广泛用于各种嵌入式系统。
E1-32结构拥有一个32位的RISC执行单元和一个独立的DSP执行单元,两个单元使用一套16位、32位和48位可变长度的指令集,但包括指令译码在内的内核其它部分对两个单元都是共用的。同时,精巧而高效的指令缓存、单独的一套寄存器和共享的存储器总线接口等一系列措施也简化了芯片硬件逻辑和软件编程的复杂性。
由于指令集可以方便地扩展,所以其它一些新的专用功能指令或指令集可以取代或加入到DSP单元之中,使之成为同RISC单元并行的执行单元。通过这种方法,一些专门指令可以方便地扩充到指令集中,例如一些专门的图像和通信处理指令,甚至是实现高精度制造技术中一些算法,如模糊逻辑指令集等。
最优化的指令集设计
鉴于单纯RISC结构的多种局限性,人们提出了许多提高单纯RISC结构性能的措施。32位定点指令格式改进了指令译码设计,加快了程序执行速度,也使得3操作数指令可通过传统设计所固有的共享寄存器集来寻址。然而,通过对典型应用代码的运行分析,在绝大多数情况下,第三个操作数不是寄存器变量而是常量。在一个3操作数指令中,那些常量的长度均大于其对应的操作数域5~8位www.cechina.cn,大于的部分需要后续指令来装载,这大大地削弱了定长指令的优越性。但通过精心设计,16位+16位和16位+32位变长指令通常能够满足常量操作数的要求。
另外,32位定长的RISC指令集在考虑芯片设计的“硅变效应”方面有很多缺陷。同复杂指令集计算机 (CISC)程序相比,它生成的应用程序代码需要较多的存储空间,这将直接导致目标系统的电路板尺寸增大、成本和功耗的显著提高等问题。在任何情况下,快速指令译码并不能总是保证程序的快速执行,因为必须综合考虑存储器的存取速度。
为平衡考虑代码生成空间的大小和存储器存取速度的影响,必须保证有基本的16位的指令格式,同时具有32位和48位长度的指令格式。在E1-32处理器的16位指令格式中,各用5位对32个目的寄存器和32个源寄存器寻址。另一方面,这5位也可以用来寻址一个直接操作数,在32个“最常用”的常量中找到要用的常量,其它的不常用常量和比较大的数值需要用扩展后的16位或32位来寻址。因为操作码占用6位,所以一个简单的常量装载操作需要一个16位指令(6位操作码+5位常量+5位目的寄存器)。
基于RISC规则的装载/存贮操作只定义了寄存器类型的操作数,并且几乎所有的指令在单周期内完成。这得益于使用了一种只有两级深度的管道机制,它使得一条跳转指令执行后可以进行快速的重装载动作,跳转目标地址在指令缓存内的延时跳转不用一个等待周期即可执行。若使用更深度的管道会减慢程序执行,因为它需要等待数据再装载。