更新时间: 2023-01-08
片上数据的存储器分配
TMS320C55x除了读指令的地址数据总线外,还有三条用于从存储器读操作数的地址数据总线,两条写操作数到存储器的地址数据总线。CPU在一个周期内可完成多个操作数的读写,由于每个DARAM块或SARAM块有限的访问能力,这些操作数位于适当的DARAM或SARAM块内,才能在单周期内完成多个数据的读入或者数据的同时读写,而不产生延迟。
指令代码的分配
应用程序的指令代码可以存储在片外存储器,通过指令Cache进行访问,可以减少CPU读指令代码与CPU读写片上存储器内数据的冲突,同时将空余更多的片上存储器空间用于数据分配。若存储程序代码和数据所需的存储器总和少于片上存储器容量,将代码分配到片外存储器的性能与代码数据全部分配到片上存储器相比,性能降低大约10%。因此当代码和数据总和小于片上存储器容量时,应该全部分配到片上存储器。通常程序代码仅供CPU读取、并不修改,而数据经常需要同时读写,因而应尽量将代码存储在SARAM内,以便将访问能力更强的DARAM用来存储数据。在单个CPU周期内,SARAM仅有一次访问能力,同时读取指令和数据必然产生延迟,为了保证读取数据时不产生延迟,数据不能与访问这些数据的代码存储在同一SARAM块内。也就是说,当程序代码大小不是刚好整数个块大小时,可通过调整代码或者数据的存储器分配,以免CPU读代码与读写数据产生冲突。
数据分配
前面已经讨论过变量和常数的分配,这里主要讨论耗时较多的矩阵运算。通常可以用C语言或者汇编语言编写应用程序,C语言编译后可产生汇编代码。在汇编语言的代码中,找到处理矩阵操作数的指令,依次列举这些指令不产生延迟的矩阵分配限制,并求解满足这些限制条件的片上存储器分配。
上一篇:140XCP51000
下一篇:1440TBA