对于存储在程序存储空间中的数据,有两种存取方法:
数据存储空间的高32 KB 可以映射到程序空间的下半部分(用户空间),映射的边界可以是任何16K 程序字边界,边界由8 位的程序空间可视性页( Program Space Visibility Page, PSVPAG)寄存器定义。这使得任何指令都能象存取数据存储空间那样存取程序存储空间,但存取需要一个额外的周期。此外,使用这个方法,只能存取每个指令字的低16 位。
使用任何工作寄存器,通过表读及表写指令,可以对程序空间内的 32K 字页进行线性间接存取。表读和表写指令能够用来存取一个指令字的全部24位。
X 和Y 地址空间都支持无开销循环缓冲区(模寻址)。模寻址的主要目的是要消除DSP 算法的循环开销。X AGU 还支持对目的有效地址进行位反转寻址,对于基-2 FFT 算法,这极大地简化了输入或输出数据的重新排序。
内核支持固有(无操作数)寻址、 相对寻址、立即数寻址、存储器直接寻址、寄存器直接寻址、寄存器间接寻址、寄存器偏移量寻址以及立即数偏移量寻址模式。指令与预定义的寻址模式相关联,这取决于其功能需求。对于大多数指令, 内核能够在每个指令周期内执行数据(或程序数据)存储器读取、工作寄存器(数据)读取、数据存储器写入以及程序(指令)存储器读取操作。因此,支持3 操作数指令,允许在单个周期内执行C=A + B 这样的操作。
内核包含DSP 引擎,这极大地提高了内核的运算能力和吞吐能力。它具有一个高速17 位× 17 位乘法器、一个40 位ALU、两个40 位饱和累加器和一个40 位双向桶形移位寄存器。累加器或任何工作寄存器中的数据,可以在单个周期内右移16 位或左移16 位。DSP 指令可以无缝地与所有其他指令一起操作,且设计为能获得最佳实时性能。在把两个W 寄存器相乘时, MAC 类指令能够从存储器中同时取出两个操作数。为了能够同时取数据操作数,对于MAC 类指令,数据空间拆分为两块,对所有其他指令数据空间则是线性的。对于MAC 类指令,这是通过将某些工作寄存器专用于每个地址空间,以透明而灵活的方式实现的。
内核不支持多级指令流水线。不过,为了最大限度地获得可用的执行时间,使用了单级指令预取机制,在指令执行的前一个周期,存取并部分译码指令。除了一些特例外,大部分指令都在单个周期内执行。内核具有用于陷阱和中断的向量异常处理结构,具有62个独立的向量。异常包括最多8 个陷阱(其中有4 个是保留的)和54 个中断。根据用户指定的1 到7 之间的优先级(1 为最低优先级, 7 为最高优先级),以及预定义的“自然顺序”,决定每个中断的优先级。陷阱的优先级是固定的,其优先级范围是从8 到15。