热线电话:

厦门莫格电气自动化有限公司

主营:PLC可编程控制器模块,DCS卡件,ES...

商铺首页 > 新闻动态 > 51198947-100
厦门莫格电气自动化有限公司
7
企业等级: 普通会员
经营模式:
所在地区: 福建 厦门
联系卖家:    QQ在线咨询1982497648
手机号码:
公司官网:
公司地址:

51198947-100

发布时间:2019-08-28 07:55:16        

51198947-100  Honeywell

 
 TMS320C55x DSP是一种高性能的数字信号处理器,其强大的并行处理能力能够进一步提高其运算能力。本文介绍了C55xDSP的内核结构以及用户自定义并行指令时必须遵守如下3条并行处理基本规则,并介绍了6种典型的并行处理应用。利用本文介绍的方法使用并行处理能力将有效提高程序执行效率,同时降低系统功耗。
  德州仪器公司(TI)的TMS320C55x(简称C55x)DSP内核是在TMS320C54x(简称C54x)基础上开发出来的,并可以兼容C54x的源代码。C55x的内***压降到了1V,功耗降到0.05mW/MIPS,是C54x的1/6。C55x的运行时钟可以达到 200MHz,是C54x的两倍,再加上C55x在C54x结构上作了相当大的扩展,程序执行时可以大量采用并行处理,这样使得C55x的实际运算能力可以达到300MIPS以上。 
  C55x DSP已越来越多地应用于各种手持便携终端当中。以下我们将通过详细介绍C55x的CPU内核结构,讨论其并行处理技术的应用。
  C55x DSP内核结构
  C55x DSP是一款采用改良型哈佛结构,高度模块化的数字信号处理器拥有比普通DSP更为丰富的硬件资源,能够有效提高运算能力。其内核结构如图1所示.
内核结构图
图1
  整个处理器内部分为5个大的功能单元:存储器缓冲单元(M单元)、指令缓冲单元(I单元)、程序控制单元(P单元)、地址生成单元(A单元)和数据计算单元(D 单元),各个功能单元之间通过总线连接。C55x DSP中有1条32位程序数据总线(P总线),1条24位程序地址总线(PA总线),5条16位的数据总线(B、C、D、E、F总线)和5条24位的数据地址总线(BA、CA、DA、EA、FA总线)。这种高度模块化的多总线结构使得C55x DSP拥有***的并行处理能力。[next]
  M单元主要管理数据区(包括I/O数据区)与***处理器(CPU)之间的数据传送,使得高速CPU与外部相对低速的存储器之间在吞吐量上的瓶颈可以得到一定程度的缓解。
  I单元从程序数据总线接收程序代码,并将其放入指令缓冲队列(IBQ)中,然后利用指令译码器将指令缓冲队列中的程序代码进行译码,***后再将译码后的指令送给P单元、A单元、D单元进行处理。
C55xDSP并行处理能力分析图
图2
  P单元主要是通过判断是否满足条件执行指令的条件来控制程序地址的产生,达到控制程序流程的目的。程序控制单元中还含有程序控制寄存器、循环控制寄存器、中断寄存器和状态寄存器等硬件寄存器。通过循环控制寄存器的设置,可以直接控制程序中的循环次数等,而不必像在普通DSP中一样在外部对循环条件进行判断,从而可以有效提高运行效率。
  A单元的功能是产生读写数据空间的地址。地址生成单元由数据地址产生电路(DAGEN)、16位的算术逻辑单元(ALU)和一组寄存器构成。C55x DSP地址产生与其他功能模块分开,保证不会因为地址产生的原因使得单条指令需要在多个时钟周期内完成,提高了DSP的运行效率。A单元中的寄存器包括数据页寄存器、辅助寄存器、堆栈指针寄存器、循环寻址寄存器和临时寄存器等。
  D单元是C55x DSP中主要的数据执行部件,完成大部分数据的算术运算工作。它由移位器、40位ALU、两个17位的乘累加器(MAC)和若干寄存器构成。数据计算单元的两个乘累加器能够并行使用,可以有效提高DSP运行效率。D单元中的寄存器包括累加器和两个用于维特比译码的专用指令寄存器。[next]
  并行处理基本准则
  如图1所示C55x DSP内核结构可知,整个处理器的地址及数据运算由P单元、A单元和D单元完成。这三个单元相对***,各自通过总线与数据区及程序区相连。这种相互***的模块化结构,在硬件特性上确保这三个单元在同一时钟周期内能够进行并行处理,完成各自不同的运算操作。
  在C55x DSP指令集中有一些固定搭配的并行执行指令(主要是利用D单元双MAC结构的并行指令),这些被固定使用的并行指令之间使用“::”符号连接。除了这些固有的并行指令外,用户也可以根据CPU结构特征自行定义并行指令,并行的两条指令之间需使用“||”符号连接,以区分指令集中的并行指令。
  用户自定义并行指令时,必须遵守如下3条并行处理基本规则:
  规则1: 保证不产生硬件冲突,包括操作数、寄存器、总线及各运算模块的冲突。在对C55x DSP的所有操作中,对P、A、D三个单元进行操作的指令类型有14类,这14类操作指令之间有很大一部分可以相互并行运行。经过我们对C55x DSP硬件电路结构的分析,在只考虑硬件模块冲突的情况下,我们得出如图2所示的C55xDSP并行处理能力分析图。图中将14类操作指令组成了一个14 ×14的矩阵,列出了每一类指令与其自身及其他13类指令并行执行的能力。图中画有(符号的空格代表不能并行执行,相反没有任何符号的空格代表可以并行执行。
  在考虑并行处理的硬件冲突时,还需要考虑总线资源的冲突。总线资源的冲突通常发生在数据总线和常量总线,C55x DSP中含有5条数据总线和2条常量总线,各条总线与各运算模块的连接如图3所示。
  数据总线中,C、D总线是读数据总线,通过这两条总线进行数据读取;E、F总线是写数据总线,通过这两条总线进行数据写操作;另外还有一条特殊的B总线,这条总线可以进行读或写操作,但是它只能被CDP寄存器使用,而其它辅助寄存器无法使用B总线。
  两条常量总线分别是KA、KD总线。KA常量总线用于产***址数据。P单元的KA常量总线负责产生程序地址,例如跳转指令B #Routine2中,常量#Routine2就是通过KA常量总线被送到P单元的。A单元的KA常量总线负责产生数据存储区地址,例如在指令 Mov*SP(#7),Brc0中,偏移量#7就是通过KA常量总线被送到A单元的。KD总线用于传送参与运算的常量数据,例如指令ADD #123,AC0中,常量123就是通过KD总线传送的。
  规则2:受指令缓冲队列(IBQ)的限制,并行语句的总长度不能超过6个字节。 I单元中的译码器只能将IBQ中的1~6个字节的程序进行译码。如果一条并行语句的长度超过6个字节,则需要在两个时钟周期内对其进行两次译码。因此必须将两条并行语句的总长度限制在6个字节。
  规则3:当需要寻址两个及以上数据存储区数据时,必须使用双重AR间接寻址方式。
各条总线与各运算模块的连接图
图3
  采用双重AR间接寻址方式,可以通过使用2个不同的辅助寄存器(AR0~AR7)同时访问数据存储区中两个不同的数据。在这种寻址方式下,我们可以通过两条不同的数据总线,在同一时钟周期内寻址两个不同数据,并将其输入不同的运算模块进行计算。
  常用并行处理应用
  在编程实现过程中,对每一个并行处理都进行仔细分析将能达到事半功倍的效果。下面是我们总结出的几种典型并行处理应用:
  1. D单元双MAC结构的并行处理
  在C55x DSP的D单元中采用了双MAC的结构,其结构如图4所示。这里有3条数据总线(B、C、D数据总线)与两个MAC模块相连。在同一时钟周期里,可以同时通过3条数据总线将三个不同地址的数据传入两个MAC模块中进行并行计算。[next]
  通常情况下,两个MAC模块的运算总共需要4个数据,而这里的总线数却只有3条,所以在并行使用双MAC结构时,两个MAC模块必须共用一组数据,而另外两组数据分别分配给两个MAC模块。这使得双MAC结构的并行应用受到一定的限制。
  C55x的双MAC结构比较典型的应用如不同数据的相同算法处理和同一数据的不同算法处理。下面是对不同数据进行相同FIR滤波的实例:
  MAC *AR0+,*CDP+,AC0
  ::MAC *AR1+,*CDP+,AC1
  其中AR0和AR1寄存器分别指向输入的两组数据,CDP寄存器指向FIR滤波器的抽头系数。C55x DSP的指令集中还含有其它与双MAC模块并行处理的专用指令,在此就不再仔细分析。
  2. 存储区数据装载指令与存储指令的并行
  A单元、P单元和D单元均可以对存储器中数据实现装载及存储。数据的装载与存储使用的是不同总线,不会发生硬件冲突,易于实现并行处理。以下是在D单元内实现两个数据装载与存储的实例:
  MOV AC0,*AR1
  ||MOV *AR2,AC1
  此例是在D单元内对AC0进行存储并装载数据到AC1。程序执行时,将数据通过D总线读入AC1寄存器,同时将AC0数据通过E总线写入存储器,这样就避免了硬件冲突,满足并行规则1。两条指令总长度为4字节,小于IBQ6个字节的限制,满足了并行规则2。两条指令均采用双重间接寻址,满足了并行规则3。通过上机调试,这条并行指令确实能够正确编译并执行。
  3. A单元中ALU运算与D单元中ALU、MAC和移位运算的并行
  下面我们以一个实例来进行说明:
  ADD T0,AR1
  ||MOV HI(AC0<<#18),*AR2
双MAC的结构图
图3
  这是一个A单元ALU模块与D单元移位操作模块的并行处理实例。它在A单元完成16位加法运算,并将结果存放于AR1,同时在D单元完成对寄存器AC0的移位存储操作。这两条指令之间不存在硬件冲突,满足并行规则1。两条指令总共长度为5个字节,小于IBQ6个字节的限制,满足了并行规则 2。这里只使用了一个储器中的数据,不需要满足并行规则3的规定。通过上机调试,这条并行指令能够正确编译并执行。
   4. 累加器的移位、饱和及存储操作与D单元ALU或MAC的并行处理
       下面我们以一个实例来进行说明:
  MOV HI(AC0<<#18),*AR2
  ||ADD AC0,AC1
  这是一个D单元移位操作模块与D单元ALU模块的并行处理实例。它在移位操作模块中完成寄存器AC0的移位,然后将移位后的值通过E总线存储到存储器中,同时在ALU模块中完成寄存器AC0与AC1的加法运算,然后将结果存放于AC1。这两条指令不存在硬件冲突,满足并行规则1。两条指令总长度为5个字节,小于IBQ6字节的限制,满足并行规则2。这里只需使用一个存储器中的数据,不需满足并行规则3。通过上机调试,这条并行指令能够正确编译并执行。
  5. 程序控制操作与运算操作的并行
  P单元程序控制模块与其他的算术运算模块相对较***,不易发生硬件冲突,便于进行并行处理。下面是一个程序控制指令与算术运算指令的并行:
  ADD *AR2,AC0
  ||RPTBLOCAL JUMP1 这是一个D单元ALU模块与P单元程序控制模块的并行实例。它在D单元ALU中将D总线送来的数据与AC0相加并存入AC0,同时完成程序循环控制。程序执行中不存在硬件模块和总线的冲突,满足并行规则1;两条指令总长度为5字节,满足并行规则2;此例只使用一个存储器中的数据,不需要满足并行规则3。通过上机调试,这条并行指令能够正确编译并执行。
  6. 使用常量对存储器进行初始化
  D单元拥有两条写总线(E、F总线),在通常情况下我们只使用了其中的一条写总线造成资源浪费。假如我们需要对某块数据存储区清零,通常的做法如下:
  RPT #9
  MOV #0,*AR1+
  这段程序对存储区数据逐一清零,每次只使用了D单元的E总线,总共需要10个时钟周期才能完成。在这种情况下,如果我们充分利用E、F总线,将有效地降低这段程序的运算量。具体实现如下:
  MOV #0,AC0
  ||RPT #4
  MOV AC0,DBL(*AR1+)
  这段程序与上一段的***大不同点在于,一个时钟周期内通过E、F总线将两个初始数据同时传送到指定的数据区,同时初始化两个字的存储空间。这段程序只需要5个时钟周期就可以完成10个字的初始化,比普通做法节约一半的运算量,提高了使用效率。
 
 
  嵌入式存储系统由嵌入式硬件和固化在硬件平台中的嵌入式存储系统软件组成。传统的小规模嵌入式存储系统,软件多采用前后台的方法,通常应用于实时性要求不高的简单场合;对于复杂的应用场合,较为普遍的做法是给系统配上嵌入式存储系统实时操作系统(RTOS),这样不仅能够使系统具有良好的实时性能,降低软件编制的工作量,还可以提高整个系统的稳定性。此外,为了简化用户程序,系统通常要提供一些必要的库函数供用户调用。同前后台系统相比,这种实时嵌入式系统增加了系统存储空间的开销。Intel 8051系列及各种兼容的单片机因其极高的性价比、丰富的库函数和长期的技术积累等背景而被广泛应用于各种嵌入式领域中。受传统单片机寻址空间的限制,嵌入式应用中经常需要进行存储空间扩展。本文借鉴传统计算机系统设计中的虚拟存储技术,以8051单片机为例提出一种采用页面分组和虚拟接口技术扩展存储空间的方法。本方法与Keil C编译器具有良好的兼容性。
  2 存储系统的***
  2.1 虚拟存储系统
  计算机系统中常采用虚拟存储技术来扩展存储系统容量,页式虚拟存储器是常用的一种***方法。在这种方法下,整个虚拟地址空间和主存空间均被分成容量相等的若干页,地址变换机构(通常是一个快速地址变换表)建立了虚拟空间到主存空间虚页到实页的映射。页式存储器***关系如图1。
页式存储器***关系
  虚拟存储系统利用计算机CPU中的一组寄存器堆作为页表基址寄存器,如图1(b)所示,它与页表一起给出用户程序地址。实际计算机系统的页式虚拟存储要比这复杂得多,还需考虑未命中时的外部地址变换以及页面替换算法,然而在嵌入式存储系统中这些都可以简化乃至省去。
  2.2 单片机嵌入式存储系统程序存储区扩展
  受虚拟存储系统启发,我们把上述方法作了一些修改以应用于嵌入式存储系统中。由于系统设计选用的外部程序存储器容量为256k,而一般单片机(如 8051系列)的寻址空间为64k,为简单起见,以64k为一页,将256k虚拟地址分为4页映射到单片机的64k空间。嵌入式存储系统中地址变换机构可被简化:单片机没有专用的页表基址寄存器,可以通过额外的端口线(如P1.0,P1.1,P1.2等)作为基址指定不同的页面,页表查询可用一个跳转表实现。然而页面切换前后必须保证能够正确访问到跳转表,因此所有64k页面都需要有一个完全相同的代码段用来存放跳转表和中断矢量等公共资源。
  为提高存储器利用率可采用图2所示的结构,其中公共段中存放了高32k段之间相互调用所需要的跳转表。各段相互调用之前应先跳转到公共段,执行页面切换后再跳转到被调用程序的入口,这就实现了18位虚拟地址到16位主存地址的变换。不妨以P1.0,P1.1,P1.2作为页面基址来指定不同的页,相应的跳转表程序结构如下:
  ADDR:CLR EA ;关中断
  SETB/CLR P1.0 ;切换页面
  SETB/CLR P1.1
  SETB/CLR P1.2
  SETB EA ;开中断
  JMP REAL_ADDR ;跳转
提高存储器利用率结构
  在公共段(256k存储芯片的低32k)中存放操作系统和提供给用户的其他库函数,其他各段用来存放嵌入式存储系统的用户程序。采用图2结构的单片机与存储器接口原理图如图3所示。其中A0~A15地址线接法与普通存储器扩展方法相同。
采用图2结构的单片机与存储器接口原理图
  以上考虑了复位时页面应切换到公共代码区。
  Keil C51编译器是单片机开发应用中非常流行的一种***编译器,它支持上述页面分组技术。
  2.3 单片机嵌入式存储系统数据存储区扩展
  嵌入式存储系统中引入操作系统需要增加一定的数据存储器开销,必要时仍可以采用分页技术扩展数据存储区容量。
  引入操作系统以后,数据区有两种***方法,比较简单的一种方法是操作系统与用户程序共用一个数据区,编译器将整个程序一起编译,不必区分是系统程序还是用户程序。但这样对用户来说操作系统变得不透明了,而且不良的用户程序可能会***系统的数据区,导致整个系统崩溃。
  相对应的另一种方法是给操作系统与用户程序分别分配***的数据区,譬如将128k 数据存储器给操作系统和用户程序各分配64k。不幸地是,当操作系统与用户程序一起编译时,编译器会自动给它们分配不同的地址,这样即使存储器物理上是分开的,操作系统与用户程序的数据区还是无法地址复用,这极大地浪费了地址空间;而且对传统的单片机, Keil C 编译器***大只支持64k数据区,幸运地是,这个矛盾可以通过采用虚拟接口的方法加以解决。
  为此,将公共代码段中的程序单独编译,并且在链接、***目标代码时,给操作系统和公共库函数的每个函数在00000~07FFFH内分别指定一个固定的首地址。鉴于用户程序可能调用这些函数,需要为这些函数分别编写一个相同类型的同名伪函数,每个伪函数仅包含一条到真实函数(入口地址已知)的转移指令,所有这些函数都存放在一个被称为虚拟接口的头文件中。虚拟接口文件与用户程序一起编译,完成用户程序与操作系统两次编译的接口。显然这种方法仅占用了用户区的***量代码空间,而丝毫没有浪费用户数据区,同时又实现了地址复用。
  公共代码段和操作系统的数据区特殊的对应关系(见图4),很容易通过P2端口线来指定。由单片机外部程序区访问时序(图 5)可知,PSEN的上升沿后数据总线A0~A7上开始出现指令或指令操作数,此时的地址线A15指示当前访问的是公共代码段(对应数据区高64k)还是其他程序段(对应数据区低64k),因此在PSEN上升沿锁存地址线A15,用它可以选择不同的数据存储器空间。
公共代码段和操作系统的数据区特殊的对应关系
由单片机外部程序区访问时序
  3 存储系统的性能分析
  本文基于虚拟存储系统思想实现了嵌入式存储系统中大容量存储器的扩展。不难看出系统的扩展余地受端口线的限制。由于在同一块芯片中构造图2所示的结构,需要多使用一根端口线,因此对于8051系列使用整个P1口可以将系统的程序虚拟空间扩展至8M字节。数据存储区扩展的***大容量还与程序在编译时所被分成块的数目有关,***大可达16M字节,这在单片机嵌入式存储系统中已经是足够大了。
  程序在调用不同页面的函数时需要额外的软件切换周期,频繁的页面切换会降低系统的性能,因此编译时应仔细选择函数,尽可能将相关的函数分配在同一页中。
  数据存储区切换是由硬件实现的,页面切换并不降低系统性能。由于操作系统与用户程序数据区相互***,对用户来说整个64k空间都是可用的,这就增加了操作系统的透明性。
  4结论
  嵌入式存储系统由于它的专用性和特殊性,系统的软硬件设计都与传统的计算机系统设计方法有所不同。但进行嵌入式系统设计时仍然很有必要借鉴传统计算机系统体系结构成熟的设计方法,“量体裁衣”为我所用。作者在进行嵌入式存储系统平台设计时借鉴了传统计算机虚拟存储思想来扩展存储系统,并在实际项目中得以应用,证明这种方法是非常有效的。
免责声明
• 本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 304108043@qq.com
  • QQ在线咨询1982497648
  • 手机:
  • 联系我时务必告知是在产品网上看到的!

厦门莫格电气自动化有限公司

商铺|诚信档案

地址:

电话:传真:

免责声明:以上信息由会员自行提供,内容的真实性、准确性和合法性由发布会员负责,产品网对此不承担任何责任。产品网不涉及用户间因交易而产生的法律关系及法律纠纷, 纠纷由您自行协商解决。

风险提醒:本网站仅作为用户寻找交易对象,就货物和服务的交易进行协商,以及获取各类与贸易相关的服务信息的平台。为避免产生购买风险,建议您在购买相关产品前务必 确认供应商资质及产品质量。过低的价格、夸张的描述、私人银行账户等都有可能是虚假信息,请采购商谨慎对待,谨防欺诈,对于任何付款行为请您慎重抉择!如您遇到欺诈 等不诚信行为,请您立即与产品网联系,如查证属实,产品网会对该企业商铺做注销处理,但产品网不对您因此造成的损失承担责任!

联系:304108043@qq.com是处理侵权投诉的专用邮箱,在您的合法权益受到侵害时,欢迎您向该邮箱发送邮件,我们会在3个工作日内给您答复,感谢您对我们的关注与支持!

商铺首页 | 公司概况 | 供应信息 | 新闻动态 | 诚信档案 | 联系我们 |

厦门莫格电气自动化有限公司 电话: 传真: 联系人:

地址: 主营产品:PLC可编程控制器模块,DCS卡件,ESD系统卡件,振动监测系统卡件,汽轮机控制系统模块,燃气发电机备件

Copyright © 2024 版权所有: 产品网

免责声明:以上所展示的信息由企业自行提供,内容的真实性、准确性和合法性由发布企业负责。产品网对此不承担任何保证责任。

商盟客服

您好,欢迎莅临,欢迎咨询...