电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章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

  FIR滤波器的计算就是一个复杂函数并行操作的例子,其执行过程如下面的代码所示。函数内部含有一个循环,数据装载和乘法运算在循环内并行执行。由于RISC和DSP单元并行操作,整个算法的任务可以被协调分配给DSP和RISC两个单元来执行,同时各自优化两个单元的指令流程以确保指令管道畅通,这就使得指令执行速度大大提高。

  下面给出FIR滤波器的内部循环的示例代码:

  LDW.PL15,L11; L15 系数指针,装两个系数

  LDW. PL7,L12; L7 历史指针,装两个记录

  MOVDG14.0 ; 清除G14/G15循环累加器

  LDW.PL13,L15: L13指向下两个系数

  LDW,PL7L14: L14下两个历史记录的值

  ADDIL8,-4: 循环计数器减4

  EHMCD L11,L12: 半字长度乘累加

  EHMACD L13,L14; 半字长度乘累加

  LDW.PL15,L11; L11 指向下两个系数

  LDW.PL7,L12

  DBGT LOOP ; 如果L8>0,延时跳转

  EHMACD L13,L14; 半字长度乘累加

  扩展进来的DSP指令集有一个重要特征,即通过对两个独立的16位字运算组合,可以进行32位字操作数运算。每次运行滤波器内部循环时,装载指令(LDW)都会把两个16位数据合并成一个32位字。 EHMACD指令实现2个32位字的乘法运算,实质是执行两次16位数的乘法得到两个32位数,再把这两个数合并存储在一个64位的累加器G14/15里,得到一个64位的计算结果。ADDI和DBGT指令用于循环控制。循环每执行1次,有4次运算结果产生并被累加,因此循环计数器要减去4。图3示意了用E1-32 DSP/RISC内核执行FIR滤波器的内部循环中指令的管道执行。从中可以看出用E1-32结构在运行这一算法时的获得的并行程度,也可以看出使用双执行单元的效率优势。

  指令缓存的设计优化了对复杂函数的处理

  单内核RISC/DSP结构的很多优越机制的实现,一方面依赖于该结构给RISC和DSP提供了一个稳定的指令流程,另一方面依赖于该结构可以及时进行复杂函数处理。Hyperstone公司在片上设计了一个非常简单的指令缓存,含有32个非结构性的32位指令字。这是一个环形缓冲器,通过两个计数器来管理缓冲器内指令。一个前向计数器记录指令字的高端地址,一个后向计数器记录指令字的低端地址,这样一来在指令缓存内可以实现半字长度的短跳转。这一机制在指令执行时就好象产生了一个移动窗,滚动向前越过那些已经被执行过的指令,当遇到循环程序时窗口移动停止,执行循环程序。

  由于这种提前取指可以在指令缓存内放入至多8个指令字,所以只能给程序循环剩下24个指令字空间。也就是说包括结束循环的跳转指令在内,程序循环的最大长度为96字节或94字节(依据当时的队列情况有所不同)。当跳转目的地址在缓存区内,且当时缓存没有溢出时,一个短前向跳转落在前向计数器的前两个指令字位置。

  不考虑指令边界的情况下,对提前取指的控制字以32位方式管道装载。每进行一次前向取指令操作,前向计数器加4,并且前向取得的指令放入指令缓存的位置由前向计数器的第6位到第2位之间的五位来确定。如果计算出新放入的前向指令将要覆盖后向计数器所记录的指令时,则将前向指令向前移动4个字节,象标准的环行存储器操作一样,把它放在环形寄存器最低端。

  当执行长跳转或延时跳转时,需要检查跳转的目的地址位置。如果跳转的目的地址在两个计数器的值之间,则判断为缓存内的短跳转;如果跳转的目的地址不在缓存内,当跳转的目的地址被拷备到两个计数器内时,此时目标指令被装载到指令缓存内,就会出现指令缓存溢出的现象。延时跳转是指新指令跳转到前向计数器所指向的位置之前的缓存内某个位置,并装载新的指令到这一位置但不改变两个寄存器的值的一种跳转形式。从上可以看出,所有这些针对指令缓存的操作只适用于短跳转指令,并且只有当缓存模式控制标志位设置后才能生效(缓存模式控制标志位在执行普通跳转指令或帧指令时被清零)。

  由于大多数专门运算,如DSP函数的核心任务都包含在一个短循环内,因此这个简单的指令缓存设计将会对那些复杂、重复性的算法具有很好的支持。另外,芯片封装尺寸明显减小以及嵌入式系统的实时性的改进也是指令缓存设计的两个重要贡献。

  实时性能和复杂指令

  许多嵌入式应用需要一个快速但可预测的中断响应。两个执行单元的并行运行在处理中断方面有两个优点:首先,由于处理中断的时候复杂函数可有扩展的指令(集)来继续运行,这就保证了那些“不能被打断的任务”不被中断;其次,在那些可以被中断的任务场合,中断不会给进行复杂运算造成时间损失,因为这个任务可以在RISC单元执行中断处理后继续被完成。只要不被更高级别的中断所打断,这种两个单元独立执行的能力使得处理器可以在7个时钟周期内启动中断服务程序,甚至是在扩展的指令集执行一个复杂函数的过程中也同样在7个时钟周期内启动中断服务程序。

  软件上的考虑

  这种独特的处理器结构在软件设计上同样具有优势。在同一个指令流程内并行执行RISC指令和DSP指令,给程序编译带来了很大的性能提升。Hyperstone公司利用该结构内在的并行机制编写了一个经过优化处理的针对RISC/DSP处理器的函数库。同样,简单的程序开发流程、对参数传递和实时中断的硬件支持都大大简化了程序开发和调试工作的难度。



  

上一页  [1] [2] 

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