电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章arm嵌入式基于RISC结构的多功能嵌入式处理器结构设计应用

基于RISC结构的多功能嵌入式处理器结构设计应用

11-20 15:53:05 | http://www.5idzw.com | arm嵌入式 | 人气:631
标签:arm嵌入式系统,arm系统,arm开发,http://www.5idzw.com 基于RISC结构的多功能嵌入式处理器结构设计应用,http://www.5idzw.com

  当前的一些高端应用中,系统需要处理大量数据、算法和系统内外的通信,采用单RISC核不能满足用户对高性能的需求。基于DSP核和RISC核的并行CPU设计能有效解决这个问题,本文以Hyperstone公司的E1-32为例,阐述如何结合RISC单元和DSP单元实现CPU结构的优化。

  在嵌入式处理器设计领域,RISC已经成为处理器结构设计的必然选择。但是,如今嵌入式应用无处不在,各种产品之间的通讯需要执行快速傅立叶变换、音视频多媒体处理以及快速通信等基于DSP的算法,如果以单纯的RISC处理器以纯软件的方法来完成,由于高速运行,单RISC处理器在数据吞吐量和代码长度方面的局限性就会凸现出来。正是由于这种市场推动,DSP核+RISC核实现并行的CPU设计方案就逐渐得到广泛应用。

  这种双内核并行的架构设计带来了CPU性能的极大提高,同时又带来了一些新的问题:芯片体积增加,需要开辟额外的寄存器、缓存和内部存储空间;功耗显著增大;设计变得异常复杂,需要处理双内核的协作和同步问题、两套不同的指令集,增加了新品设计的复杂性和开发周期。另外,由于需要在两个独立内核的体系结构下来各自编程并保持相互通信,使得系统开发和调试环境变得异常复杂且难于掌握。

  一种简单可行的方法是以RISC核为基础,但在RISC核中加入一些用于专门处理的指令。这种方法几乎没有增加芯片尺寸和内核设计的复杂性,但却有一个致命缺点:当执行那些复杂的多循环的指令时,由于要进行数据信号处理、通信协议和图像等专门函数处理,RISC核就会出现性能瓶颈。

  单内核方法

  德国Hyperstone公司已经开发出E1-32这种新的单内核处理器结构。该结构既解决了纯RISC加一些专门指令的单核结构的限制,也克服了RISC核+其它独立核的双核结构的缺点。这种设计在最小化芯片的封装形式、功耗和指令复杂度的同时,却没有牺牲纯RISC核的性能。此外,由于其成本较低,使得该结构可以广泛用于各种嵌入式系统

  E1-32结构拥有一个32位的RISC执行单元和一个独立的DSP执行单元,两个单元使用一套16位、32位和48位可变长度的指令集,但包括指令译码在内的内核其它部分对两个单元都是共用的。同时,精巧而高效的指令缓存、单独的一套寄存器和共享的存储器总线接口等一系列措施也简化了芯片硬件逻辑和软件编程的复杂性。

  由于指令集可以方便地扩展,所以其它一些新的专用功能指令或指令集可以取代或加入到DSP单元之中,使之成为同RISC单元并行的执行单元。通过这种方法,一些专门指令可以方便地扩充到指令集中,例如一些专门的图像和通信处理指令,甚至是实现高精度制造技术中一些算法,如模糊逻辑指令集等。

  最优化的指令集设计

  鉴于单纯RISC结构的多种局限性,人们提出了许多提高单纯RISC结构性能的措施。32位定点指令格式改进了指令译码设计,加快了程序执行速度,也使得3操作数指令可通过传统设计所固有的共享寄存器集来寻址。然而,通过对典型应用代码的运行分析,在绝大多数情况下,第三个操作数不是寄存器变量而是常量。在一个3操作数指令中,那些常量的长度均大于其对应的操作数域5~8位,大于的部分需要后续指令来装载,这大大地削弱了定长指令的优越性。但通过精心设计,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规则的装载/存贮操作只定义了寄存器类型的操作数,并且几乎所有的指令在单周期内完成。这得益于使用了一种只有两级深度的管道机制,它使得一条跳转指令执行后可以进行快速的重装载动作,跳转目标地址在指令缓存内的延时跳转不用一个等待周期即可执行。若使用更深度的管道会减慢程序执行,因为它需要等待数据再装载。

  不断扩展的RISC指令集

  由于最初RISC结构具有定长、单周期指令等的特征,这就使得其指令集不可能包含乘除等复杂运算,所以乘除运算只好通过软件或片内/外的其它硬件逻辑来实现。为解决这类问题,实现诸如数字信号处理函数等运算,标准的硬件方法是集成RISC CPU和DSP 内核在单芯片内。然而,这样的双核结构实现起来具有一定的复杂性,对两个处理器之间的同步要求非常高,出现了内部总线量成倍增加、要求有双口RAM问题,还可能出现字长和队列紊乱等问题。

  一个可解决问题的办法是在RISC核指令集中增加一些复杂函数指令,这就解决了上述的大部分问题,但其最大的缺点在于函数的复杂性导致要多个时钟才能执行这样的一条指令。更糟糕的是,当作为一些更复杂函数的一部分时,这些专门函数指令经常要在一个紧凑的循环中被重复执行。由于大量的多周期指令在后台运行,使得实时应用的中断延时成为另一个值得关注的问题。

  为彻底解决这些问题,最好能够设计出这样一种体系结构:只含有一套指令集,但可以通过位于单核内的一个独立执行单元来进行复杂指令的扩展。与双核结构不同的是,RISC和独立的指令单元组成单核的指令译码、指令缓存、装载/存储单元、内部总线、CPU寄存器和存储器接口等,所有这些主要的内核资源在单内核指令流执行时均是共用的。

  该特点又使CPU重新具备了较高的硅单元面积效率和简单的软件开发模型的优点。但是与一个简单的RISC处理器设计要直接去处理一些复杂指令不同的是,这种结构可以通过单核内的独立执行单元来执行那些专门的复杂指令,这些复杂指令与RISC指令是并行执行的,这样就避免了指令/数据流程迟延和中断延时(二者总是在一起出现)问题。

  实现实例

  Hyperstone的E1-32结构在一个单核内结合了一个32位的RISC CPU和一个简单的DSP执行单元,它们通过一个单一指令流程来运行程序,该结构可以支持各种DSP算法需求的数据结构,如16/32位整数、16位复数等。RISC指令同时扩充了13条额外指令,用以进行DSP处理和其它特殊计算,如单指令乘法、乘法累加(包括复数运算)、加减(包括定点舍入运算)等。

  DSP运算是通过单核内的独立DSP单元来完成, 同时DSP单元和RISC ALU单元的处理过程完全并行,当在DSP和ALU处理的时间内有数据装载/存储操作时,DSP、ALU和装载/存储三个动作也是并行的。ALU和DSP两个执行单元是通过96个32位共享寄存器实现无缝连接,如图1所示。DSP单元是以一个16×16位乘法器和一个64位的加法器为基础组成,这样就可以在一个周期内(管道形式)实现16位乘法累加指令,也可以实现数据滤波器算法中需要的32位和64位加法操作,如图2所示。


  对复杂函数和数据类型的优化

  由于使用管道处理方式,E1-32的绝大多数指令都可以在一个周期内完成。指令从专一的指令缓存内取出,在一个周期内完成译码,几乎所有的RISC指令都可以在第二个周期内完成。标准RISC指令和DSP指令并行执行,RISC单元和DSP单元都可以在一个周期内完成从它们自己的寄存器内取操作数和指令的计算等操作,同时在一个周期内返回结果到相应的目的寄存器。这样,管道运行的深度只有两个阶段,使得跳转指令执行后管道能得到快速填充,同更深度管道相比大大节省了时间。

[1] [2]  下一页

,基于RISC结构的多功能嵌入式处理器结构设计应用
关于《基于RISC结构的多功能嵌入式处理器结构设计应用》的更多文章