![]() |
|
||||||||||||||
| | 首页 | 新闻 | 文库 | 方案 | 技术 | 独家 | 座谈 | 下载 | 图库 | 开发板 | 仿真器 | 邮购 | VIP会员 | 芯片代购 | 客户评价 | | ||
|
||
|
|||||
| Blackfin561 VS TMS320DM642 全面比较 | |||||
作者:佚名 文章来源:Internet 点击数: 更新时间:2008-4-24 ![]() |
|||||
|
德州仪器公司(Texas Instruments以下简称TI公司)和美国模拟器件公司(Analog Devices以下简称ADI公司),作为全球领先的高性能DSP供应商,它们几乎占据了全球DSP市场全部分额。 一、体系结构
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 容量为 第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 容量为 DM642和BF561在存储器上有一个很大的不同是,DM642中的L2 是可以由用户自由配置的,用户可以将L2 配置成内部SRAM或者是CACHE,而在F561中用户只能配置对L1进行配置,其L2是固定的。如图5所示,DM642 的L2有5种配置模式:
图5 DM 全部配置成内部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 内核资源的多级访问。此外,汇编语言采用了处理器独特的体系结构,具有以下优点:
四、开发工具
| |||||