程序空间

当CPU读取指令时,程序空间才被访问。CPU采用字节寻址来读取指令,指令缓冲队列每次通过程序数据总线PB从程序空间读取32位程序指令

字节寻址(24位)

当CPU从程序空间读取指令时,采用字节寻址,即按字节分配地址,且地址为24位。一个行宽为32位存储器的地址分配由下图说明,每个字节分配一个地址,例如字节0的地址是00 0100h,字节2的地址是00 0102h。

DSP支持8位、16位、24位、32位和48位长度的指令。

在32位宽的存储器中存放了5条指令,每一条指令的地址是指操作码最高有效字节的地址,阴影部分表示没有代码。

在程序空间存放指令时不需要边界对齐,当读取指令时要和32位的偶地址对齐。也就是说,在读取一条指令时,CPU要从最低两位是0的地址读取32位的代码,这样的地址其最低位应是0h,4h,8h和Ch。

不过,也会遇到写入到程序计数器PC中的地址值和程序空间的读取地址不一致的情况,

假设子程序X的第一条指令C的地址是00 0106h,PC的值是00 0106h,但是读程序地址总线(PAB)上的值是32位边界地址00 0104h,CPU在00 0104h地址开始读取4字节的代码,而第一个被执行的指令是C。

字寻址(23位)

当CPU访问数据空间时,采用字寻址,即为每个16位的字分配一个23位宽的地址,下面说明了一行32位宽的存储器的地址分配,字0的地址为00 0100h,字1的地址为00 0101h。

由于地址总线是24位宽,所以,当CPU读/写数据空间时,23位的地址左移一位,最低位补0。例如,一条指令在23位地址00 0102h上读一个字,读数据地址总线上传送的值是00 0204h。

C55x DSP指令处理的数据类型有8位、16位和32位。

数据空间是采用字寻址,但C55x有专门的指令如high_byte(), low_byte()可以选择字的高字节或低字节,进行8位数据的处理。

当CPU存取长字(32位)时,存取地址是指32位数据的高16位(MSW)的地址,而低16位(LSW)的地址取决于MSW的地址。

Last modification:August 24, 2021
求观众老爷打赏,揭不开锅了。