1.1 内核与存储器体系结构
1.1.1 内核体系结构
ADSP-BF561有两个相同的内核,每个都包含两个16bit乘法器、两个40bit累加器、两个40bit算术逻辑单元(ALU)、4个8bit视频ALU、1个40bit移位器,连同内核功能单元如图1-1所示。计算单元处理来自于寄存器文件的8-bit、16-bit、32-bit数据。
图1-1 ADSP-BF561内核的体系结构
计算寄存器文件包含8个32-bit寄存器。当执行16-bit操作数的计算操作时,寄存器文件操作如同16 个独立的16-bit寄存器。计算操作的所有操作数都来自于多端口寄存器文件和指令常数域。每个MAC能在每个周期执行一个16-bit和16-bit的乘法,并累加到一个40-bit结果上,支持有符号和无符号格式,以及圆整和饱和处理。ALU执行一个传统的16-bit或32-bit算术和逻辑操作,包括很多特殊指令用以加速各种各样的信号处理任务,有位操作如域提取和计算非零位的个数(Population Count)、模(Modulo)232乘法、除法原语、饱和与圆整,以及符号/指数检测。视频指令集包括字节对齐和打包操作、带截短的(Clipping)16-bit和8-bit加法、8-bit平均操作、8-bit减法/绝对值/累加(SAA)操作,也提供了比较/选择和矢量搜索指令。对于一些指令,两个16-bit ALU操作可同时按寄存器对(一个计算寄存器的16-bit高半字和16-bit低半字)执行,再通过第2个ALU,4个16-bit操作也是可能的。40-bit移位器能存储数据和执行移位、循环移位、归一化以及提取操作。
程序控制器控制指令执行流,包括指令对齐和译码。对于程序流控制,控制器支持PC相对寻址和间接的条件跳转(带静态分支预测)以及子程序调用,并提供了支持零开销循环的硬件。体系结构是完全互锁的,意味着当执行数据依赖的指令时流水线没有明显的影响。地址算术单元提供了2个地址,以便同时从存储器取2个数。它包含一个多端口的寄存器文件,由4套32-bit的索引、修改、长度和基址寄存器(用于循环缓冲器)以及8个另外的32-bit指针寄存器(用于C类型索引的堆栈操作)构成。处理器体系结构支持3种操作模式:用户模式、监控模式、仿真模式。用户模式是有限制地访问系统资源的一个子集,因此提供了软件环境的保护,监控模式和仿真模式对系统和内核的访问是不受限制的。
Blackfin指令集是优化的,所以16-bit操作码表示了最常用的指令。复杂的DSP指令编码成32-bit操作码,作为多功能指令。Blackfin产品支持有限的多发射能力,一个32-bit指令能发布并行的两个16-bit指令,这允许程序员在单个指令周期内可以使用到较多的内核资源。对于使用C编译器,这个处理器体系结构也是优化的。
1.1.2 存储器体系结构
处理器体系结构上将存储器构造为一个单一的、统一的4GB的32-bit地址空间。所有资源,包括内部存储器、外部存储器以及I/O控制寄存器,占据了这个共同地址空间中的独立部分。这个地址空间的存储器部分被安排成分级结构,以便支持一个更好的性价比:片上存储器是速度非常快的低延迟的小容量存储器,片外存储器是容量更大、价格更低、速度更慢的存储器,如图1-2所示为ADSP-BF561的存储器映射。存储器DMA控制器提供了高带宽的数据搬移能力,它可以在内部存储器和外部存储器中执行代码和数据的块传送。
图1-2 存储器映射
内部存储器 Blackfin处理器支持一个改进的Harvard体系结构,结合了一个分级存储器结构。ADSP-BF561每个内核都有3个片上核内存储器块支持高带宽的内核访问:L1指令存储器(包含32K字节SRAM,其中16K字节可配置为一个4通路设置关联Cache)、L1数据存储器(每个内核包含2个32K字节的组(Bank),其中一个组总是配置为SRAM,而另一个组可以配置成SRAM或一个2通路设置关联Cache)、4K字节的L1 Scratchpad RAM(只能用于数据SRAM访问,用于存储堆栈和局部变量信息,不能配置成Cache)。这3部分存储器就是第1级(L1)存储器,工作在处理器速度下。存储器管理单元(MMU)为单独的任务提供了存储器保护(这些任务可能操作内核),并保护系统寄存器免受意外的访问。ADSP-BF561两个内核共享一个低延迟的高带宽的片上核外第2级(L2)存储器。L2与L1存储器一起形成一个片上分级结构存储器,L2能提供比L1存储器更大的容量,但延迟要大些。L2也是SRAM的,但不能配置为Cache,可以同时存储指令和数据的任何混合体。
外部存储器 片外存储器是通过32-bit外部总线接口单元(EBIU)来访问的。EBIU能连接各种工业标准存储器设备,其控制器包括一个同步DRAM(SDRAM)控制器和一个异步存储器控制器,分别提供了对多至4组的SDRAM和4组异步存储器的无缝连接。
(1)PC133 SDRAM控制器。SDRAM控制器提供了一个接口,可连接4组工业标准的SDRAM设备或DIMM,全部兼容PC133 SDRAM标准,每组可配置为包含16M字节到128M字节之间的存储器,总共能支持高达512M字节的SDRAM。可用一组可编程定时参数来配置SDRAM组,支持慢速存储器设备。为了实现最少设备数、更低的系统代价以及高性能,存储器接口是32-bit宽的。
(2)异步控制器。异步存储器控制器提供了一个可配置的接口,能连接多达4个独立的存储器组或I/O设备,每组可独立地用不同的定时参数编程以连接各种存储器设备,包括SRAM、ROM和FLASH以及带有标准存储器控制线接口的I/O设备。在处理器地址空间里,每组占据一个64M字节的窗口,如果没有全部安装,这些存储器组就不会是相连的。存储器组是32-bit宽的,以便于连接各种存储器和I/O设备。
I/O存储器空间 Blackfin处理器没有定义单独的I/O空间,片上I/O设备有它们的控制寄存器,这些寄存器是存储器映射寄存器(MMR),映射到接近4G字节地址空间的顶部位置上。它们被分成两个小块:一个包含所有内核功能的控制MMR,另一个包含配置和控制核外片上外设所需要的寄存器。这些MMR只能在监控模式下访问,对于片上外设来说,它们看起来就是一个保留空间。