德州仪器公司(Texas Instruments以下简称TI公司)和美国模拟器件公司(Analog Devices以下简称ADI公司),作为全球领先的高性能DSP供应商,它们几乎占据了全球DSP市场全部分额。
TMS320DM642(以下简称DM462)是TI公司近来发布的新一代多媒体处理器,它基于其第二代高性能的VelociTI VLIW结构,适用于多种数字媒体应用,它的时钟频率为600MHz,指令速度高达4800MIPS。而ADSP-BF561(以下简称BF561)处理器是ADI公司推出的Blackfin 系列中的高性能产品,主要针对于多媒体和通信方面的各种应用。BF561的核心由两枚独立的Blackfin 处理器组成。它集成了一套通用的数字图像处理外围设备,为数字图像处理和多媒体应用创建了一个完整的系统级片上解决方案。下面我们将对TI公司的TMS320DM642与ADI公司的Blackfin561做一些简要介绍和比较。
一、体系结构
TMS320DM642与Blackfin561的体系结构的最大差别在于TMS320DM642是单核结构、而Blackfin561是双核结构,这就从整体上决定了它们之间的整个架构的不一致性。
图1 DM642的内核结构
如图1所示,DM642内核包含8 个并行的处理单元(.L1,.L2,.S1,.S2,M1,.M2,.D1,.D2),两个通用寄存器组(A和B,各32 个32-bit通用寄存器),两个从内存读取数据的通道(LD1和LD2),两个写内存的数据通道(ST1和ST2),两个数据地址通道(DA1和DA2),两个寄存器组数据交叉通道(1X和2X),两个乘法单元(M)、六个32-bit的算术单元、40-bit的ALU和40-bit的桶型移位器。DM642乘法单元(M)每个时钟周期执行两个16-bit的乘法,此外,每个乘法单元(M)可以在每个周期内作4 个8 bit 的乘法。DM642 的其他单元各有其强大的功能。例如,逻辑单元(L)可以作byte移位和四个8-bit的绝对值减法。该绝对值差指令对于实现运动估计算法是很有好处的。M单元和S单元都具有双向可变bit的移位功能。除S单元和L单元外,D单元也可以执行32-bit的逻辑指令。L单元和D单元可以装入5-bit 的常数,而S单元可以装入6-bit的常数。DM642 的每个功能单元组都各有其32 个32-bit 的寄存器组,每个程序可以将通用寄存器用于存放数据、地址指针或条件代码。
在DM642 中,两个功能单元组中的任何一个都可以使用另一个的寄存器组。允许每个功能单元组中的多个单元通过数据交叉通道,同时读同一个交叉通道信源。也就是说,一个功能单元组中的一个、多个、乃至全部单元,可以在一个VLIW执行包中使用交叉通道的操作数。DM642 可以使用非排队的存取方式,可以按byte边界访问,取消了执行包边界的限制,也就取消了填充的NOP 指令。CPU 可以在每个周期内执行1-8条指令,但数据的独立性、指令的反应时间、以及资源的冲突对性能的发挥有所限制。指令包的执行允许充分的并行、串行和并/串行的组合。同时,DM642要求八个串行指令和八个并行指令具有同样的长度,这就非常有利于编译器和汇编器的对代码进行优化。
如图2所示,Blackfin 内核包含2 个乘/累加器(MAC),2 个40 位的ALU,4 个8位的ALU 和1个40 位移位器。运算单元可以处理来自寄存器组的8 位、16 位或者32 位数据。每个MAC 每周期可完成一个16 位乘16 位的乘法运算,并把结果累加到40 位的累加器中,提供8 位的精度扩展。ALU 单元执行标准的算术和逻辑运算,由于两个ALU 具备对16 或32 位数据操作的能力,因此运算单元具备的灵活性可以满足各种应用中信号处理的要求。每个32 位的输入寄存器可以作为两个16 位的寄存器,因此每个ALU 可以完成非常灵活的单16 位算术运算。通过把寄存器当作两个16 位的操作数使用,双16 位或单32 位操作可以在一个周期中完成。更好地利用第二个ALU,四个16 位操作可以简单地完成,加速了每个周期的吞吐量。
图2 Blackfin的内核结构
强大的40 位移位器功能丰富,可以对数据进行移位、循环移位、归一化、提取和存储等操作。运算单元所使用的数据来自具有16 个16 位操作数或8 个32 位操作数的寄存器组。
功能强大的程序控制器控制指令执行的顺序,包括指令对齐和译码。程序控制器支持条件跳转、子函数调用及零耗循环。循环缓冲区在本地储存指令,消除了循环代码访问指令存储器的时间。两个数据地址产生器(DAG)为从存储器同时取回双操作数提供地址。两个数据地址产生器共用一个寄存器组,包括四套32 位的索引、修改、长度和基地址寄存器。8 个额外的32 位寄存器为变量和堆栈位置的索引提供指针。
虽然S320DM642与Blackfin561的体系结构在整个架构上完全不同。但是,它们都有一个共同点,那就是采用多功能单元来实现指令的并行执行。
二、存储器体系结构
图3 DM642 的存储器体系结构
DM642和BF561都采用采用改进的哈佛结构和分级的存储器结构。Level 1(L1)存储器一般能够实现全速运行,没有或只有很少的延迟。而Level 2(L2)存储器分布在片内或片外,对它的访问需要耗费多个处理器周期。L2既可以作为存储器映射,又可作为缓存cache。DM642内部有16KB的一级程序缓存,16KB的一级数据缓存和256KB的程序数据共享二级缓存。系统通过外部存储器接口(EMIF)可以使用外部存储器,可以由SDRAM、FLASH和SRAM进行扩展。片内程序存储区和片内数据存储区分别由各自的控制器控制。
图4 Blackfin561的存储器体系结构
在BF561中,L1 级指令存储器只存放指令,L1 级数据存储器存放数据,还有一个专用的临时数据存储器存放堆栈和局部变量信息。在L2 级,采用统一的存储空间,可以存放指令和数据。此外,L1 指令存储器的一半和L1 数据存储器的一半可配置成静态RAM(SRAM)或CACHE。存储器管理单元(MMU)提供存储器保护功能,对运行于内核上的独立的任务,可保护系统寄存器免于意外的存取。这种体系结构提供了3 种运行模式:用户模式、管理员模式和仿真模式。用户模式限制对某些系统资源的访问,因此提供了一个受保护的软件环境;而管理员模式对系统和内核资源的访问不受限制。
ADSP-BF561 把存储器视为一个统一的4GBytes 的地址空间,使用32 位地址。所有的资源,包括内部存储器、外部存储器和I/O 控制寄存器,都占据公共地址空间中相应的部分,并且各自独立。该地址空间的各部分存储器按分级结构排列,以提供高性能价格比。它将一些快速、低延迟的存储器(如CACHE 或SRAM)的位置靠近处理器,而更大的、低成本低性能的存储器远离处理器。如图4 所示,L1 存储器是内核中性能最高最重要的存储器。L2 存储器提供额外的存储能力,性能较低。片外存储系统通过外部总线接口单元(EBIU)进行访问,可以由SDRAM、FLASH 和SRAM 进行扩展,可以访问多达768MBytes 的物理存储器。存储器的DMA 控制器提供高带宽的数据传输能力,能够在内部L1/L2 存储器和外部存储器空间之间完成代码或数据的块传输。ADSP-BF561 有4 块片内存储器,提供到内核的高带宽的访问。
第1 块是Blackfin 内核的L1 指令存储器,它由16KBytes 4 路组相联的CACHE 和16Kbytes 的SRAM 组成。CACHE 存储器也可以配置成SRAM。L1 指令存储器以处理器的最快速度访问。当被配置成SRAM 时,存储器每个16K Bank 被分成4 个4K 的sub-bank,每个sub-bank 可以被处理器和DMA 独立地访问。
第2 块片内存储器是Blackfin 内核的L1 数据存储器,由4 个16K Bytes 的Bank 组成。LI 数据存储器的两个Bank可配置成2 路组相联CACHE或一个SRAM。另外两个Bank被配置成SRAM,该存储器也以全速度访问。当被配置成SRAM 时,存储器每个16K Bank 被分成4 个4K 的sub-bank,每个sub-bank 可以被处理器和DMA 独立地访问。供128K Bytes 高速SRAM,以内核速度的一半进行访问,比访问L1 存储器Bank 有稍多的延迟。L2 存储器是一个独立的指令和数据存储器,可以保存系统设计所要求的任意代码和数据的组合。两个Blackfin 内核共享一个专用低延迟64 位宽的通道端口,用于访问L2 SRAM 存储器。每个Blackfin 内核处理器有其自己的内核存储器映射寄存器(MMR),但是它们共享相同的系统MMR 寄存器和128K Bytes 的L2 SRAM 存储器。外部(片外)存储器ADSP-BF561 外部存储器通过外部总线接口单元(EBIU)进行访问。此接口可与多达4 个bank 的同步DRAM(SDRAM),或与多达4 个异步存储设备(包括FLASH、EPROM、ROM、SRAM 和存储器映射I/O 设备等)无缝连接。
PC133 兼容的SDRAM 控制器可通过编程与多达4 个Bank 的SDRAM 接口,每个Bank 容量为16M Bytes 到128M Bytes,4 个Bank 的总容量可达512M Bytes。每一个Bank可独立编程,与其相邻的Bank 连续排列而忽略Bank 大小和位置方面的差异。这就允许内核将所有的SDRAM 看作一个单独的、连续的物理地址空间,增加了对系统存储器配置和升级的灵活性。
第3 块是一个4KBytes 的临时数据SRAM,它和L1存储器有相同的运行速度,但是只能作为数据SRAM(不能配置为CACHE,也不能通过DMA 访问)。
第4 块片内存储系统是L2 SRAM 存储器阵列,它提供128K Bytes 高速SRAM,以内核速度的一半进行访问,比访问L1 存储器Bank 有稍多的延迟。L2 存储器是一个独立的指令和数据存储器,可以保存系统设计所要求的任意代码和数据的组合。两个Blackfin 内核共享一个专用低延迟64 位宽的通道端口,用于访问L2 SRAM 存储器。每个Blackfin 内核处理器有其自己的内核存储器映射寄存器(MMR),但是它们共享相同的系统MMR 寄存器和128K Bytes 的L2 SRAM 存储器。
而ADSP-BF561 外部存储器通过外部总线接口单元(EBIU)进行访问。该接口可与多达4 个bank 的同步DRAM(SDRAM),或与多达4 个异步存储设备(包括FLASH、EPROM、ROM、SRAM 和存储器映射I/O 设备等)无缝连接。PC133 兼容的SDRAM 控制器可通过编程与多达4 个Bank 的SDRAM 接口,每个Bank 容量为16M Bytes 到128M Bytes,4 个Bank 的总容量可达512M Bytes。每一个Bank可独立编程,与其相邻的Bank 连续排列而忽略Bank 大小和位置方面的差异。这就允许内核将所有的SDRAM 看作一个单独的、连续的物理地址空间,增加了对系统存储器配置和升级的灵活性。
DM642和BF561在存储器上有一个很大的不同是,DM642中的L2 是可以由用户自由配置的,用户可以将L2 配置成内部SRAM或者是CACHE,而在F561中用户只能配置对L1进行配置,其L2是固定的。如图5所示,DM642 的L2有5种配置模式:
图5 DM642 L1/L2 Cache
全部配置成内部SRAM映射到地址空间;
·224K RAM +32K CACHE;
·192K RAM +64K CACHE;
·128K RAM +128K CACHE;
·256K CACHE;
而在BF561中,328 KBytes 片内内存分配如下:
·每个内核32 Kbytes的L1 指令SRAM/Cache
·每个内核64 Kbytes的L1 数据SRAM/Cache
·每个内核4 KBytes 的L1
·128 KBytes 分享L2 空间用于存放中间结果的SRAM
三、指令结构
DM642的MPYU4指令可以执行四个8-bit的无符号数乘法。ADD4执行四个8-bit的加法。所有的功能单元都可以执行双16-bit的加法/减法、比较、移位、最大值/最小值、以及绝对值运算。两个M单元及其他六个功能单元中的四个都支持四个8-bit加法/减法、比较、平均、最大值/最小值、以及bit扩展运算。同时,还增加了直接对打包的8-bit和16-bit数据作运算的指令。M单元里的bit计数和旋转硬件,扩展了对bit层算法的支持,例如二进制语法、图像矩阵计算、以及加密算法等。
DM642的转移-地址递减(BDEC)和检测为正转移(BPOS)指令将转移指令和地址递减及目标寄存器检测指令分别组合起来。另外一条指令可以减少设置函数调用返回地址所需的指令数量。双16 bit算术指令和八个功能单元中的六个以及位倒序指令组合起来,将FFT所需的周期数减少一半。Galois乘法指令(GMPY4)使用Chien搜索法为C62x提供Reed Solomon编码。特殊的平均指令可以将运动补偿的性能提高七倍。同时,DM642还提供数据打包和解包,在四个8 bit或两个16 bit硬件扩展时能够保证很高的性能。解包指令为并行的16 bit运算准备8 bit数据,而打包指令则保证并行的结果的输出精度。
而Blackfin DSP 系列汇编语言指令集使用易于编程和可读性强的代数语法,而且在与C/C++编译器的链接上进行了优化,给程序员提供了快速有效的软件开发环境。Blackfin 指令系统经过优化,16 位操作码组成了最常用的指令,这使得编译后的代码密度非常高。复杂DSP 指令采用32 位操作码,体现了多功能指令的全部特征。Blackfin 处理器支持有限的并行能力,即1 个32 位的指令可以和2 个16 位指令并行执行,使编程人员在单指令周期中使用尽可能多的内核资源。采用专门调整的灵活的高密度编码的指令,这些指令被编译后只占用非常小的存储空间。指令集还提供了体现ADSP-BF561 全部特点的多功能指令,以使在一个指令中能够使用多个DSP 内核资源。除了提供许多微控制器上常见的功能外,指令集编译C 和C++源代码时效率非常高。此外,指令集还支持用户(算法/应用代码)和管理员(O/S 内核,设备驱动,调试器,ISRs)两种运行模式,允许对DSP 内核资源的多级访问。此外,汇编语言采用了处理器独特的体系结构,具有以下优点:
缝集成DSP/CPU特征,对8位和16位操作进行了优化。
并发加载/存储的改进哈佛体系结构,每个周期支持2个16位MAC或4个8位ALU+2个加载/存储+2个指针更新。
所有的寄存器、I/O、和存储器被映射成为统一4GB存储空间,提供了一个简化编程模式。
微控制器特征,如任意位和位域操作,插入和提取;对8位、16位和32位数据类型上的整数操作;独立的用户和内核(kernel)栈指针。
代码密度增强,包括混合的16和32位指令(无模式转换和代码分离)。常用指令以16位编码。
四、开发工具
TI公司有一套完整的开发系统,包括高效C编译器、用于简化汇编语言的汇编优化器、基于Windows操作系统的可视化调试接口,以及可兼容TI XDL仿真接口的硬件评估板。TI 的实时 eXpressDSP软件和开发工具策略包括三个紧密结合在一起的成分,使开发者能充分发掘 TMS320DSP 的潜能。eXpressDSP软件技术包括DSP集成开发工具:可升级的实时软件基础、可重复使用的应用软件接口标准、以及不断增加的第三方的软件模块。如图6所示,Code Composer Studio(CCS)是一个集成的DSP开发工具套件,包括C6000的C编译器、DSP/BIOS、实时数据交换技术等。实时应用对于 TI DSP 实时处理功能的需求曾爆炸性地增长。eXpressDSP 使创新者和发明者能够加快新产品上市,并将理念转为现实。以前无法想像的应用,包括虚拟现实、医疗成像、汽车导航、数字音频和因特网电话,现在都依赖只有在 DSP 中才能找到的关键实时计算功能。
图6 CCS开发环境
ADI 公司也提供一套类似的、完整的ADSP-BF561 软硬件开发工具,包括仿真器和Visual DSP++TM 开发环境。该仿真器能够对ADSP-BF561 实现全仿真,同时还可以实现对其它ADI 的JTAGDSPs 芯片的仿真。利用Visual DSP++项目管理环境,程序员可以开发和调试应用程序。这个环境包括一个基于代数语法的易于使用的汇编器,一个归档器(库和库建立工具),一个链接器,一个加载器,一个精确到时钟周期、指令级的模拟器,一个C/C++编译器和一个包括DSP 和数学函数的C/C++运行库。这些工具的最重要特点是C/C++代码的有效性,编译器能有效地将C/C++代码转换为Blackfin DSP 的汇编代码。同时,Blackfin DSP 体系结构的特点也更有利于提高C/C++代码的编译效率。 |