南京电商网站开发,广州市网站建设公司在哪里,建站系统排行榜,wordpress主题范例ARM 的ram包括静态ram#xff0c;动态ram#xff0c;TCM---紧耦合内存(TCM: Tightly Coupled Memories)。
TCM是一个固定大小的RAM#xff0c;紧密地耦合至处理器内核#xff0c;提供与cache相当的性能#xff0c;相比于cache的优点是#xff0c;程序代码可以精确地控制…ARM 的ram包括静态ram动态ramTCM---紧耦合内存(TCM: Tightly Coupled Memories)。
TCM是一个固定大小的RAM紧密地耦合至处理器内核提供与cache相当的性能相比于cache的优点是程序代码可以精确地控制什么函数或代码放在哪儿(RAM里)。当然TCM永远不会被踢出主存储器因此他会有一个被用户预设的性能而不是象cache那样是统计特性的性能提高。 TCM对于以下几种情况的代码是非常有用、也是需要的可预见的实时处理中断处理、时间可预见加密算法、避免cache分析加密算法、或者只是要求高性能的代码编解码功能。随着cache大小的增加以及总线性能的规模TCM将会变得越来越不重要但是他提供了一个让你权衡的机会 那么哪一个更好呢他取决于你的应用。Cache是一个通用目的的加速器他会加速你的所有代码而不依赖于存储方式。TCM只会加速你有意放入TCM的代码其余的其他代码只能通过cache加速。Cache是一个通用目的解决方案TCM在某些特殊情况下是非常有用的。假如你不认为需要TCM的话那么你可能就不需要了转而加大你的cache从而加速运行于内核上的所有软件代码. 紧致内存是指片上快速存储区与片上缓存具有同等的性能但因为程序可完全控制紧致内存因而比统计复用的缓存有更好的可预测性。这是ARM5TE引入的特性目的是通过这一快速的存储区一方面提高某些关键代码如中断处理函数的性能另方面使存储访问延迟保持一致这是实时性应用所要求的。ARM6对TCM操作做了进一步的规范。
TCM的应用领域可预测的实时处理中断处理、避免缓存分析加密算法、或单纯的性能提高处理器侧编解码等。 如同缓存的哈佛结构指令TCM和数据TCM是分开的。TCM有两种使用方式作为快缓存使用和作为本地内存使用。 本地内存 这时TCM被用作更快速的内存如同一般的RAM。因为指令段有时也是数据访问的对象指令TCM实际上是指令数据一体化TCM。对TCM写操作后和后续对此写操作的依赖指令之间必须跟一个阻塞操作。 快缓存smartcache TCM可以配置成当作外部RAM的缓存使用对应的外部RAM也要设置可缓存标志。如果被缓存的外部RAM可以由多处理器共享那么TCM是否与共享数据保持一致并没有规定而由具体实现厂家决定。
TCM与缓存的内容不会自动保持一致这意味着TCM映射到的内存区域必须是不缓存的区域。如果一个地址同时落在缓存和TCM内那么访问这一地址的结果是不能预测的。另一个限制是各个TCM必须要配置成不相交的。
TCM的配置 通过CP15的0、1、9号寄存器进行 0号寄存器 读CP15的0号寄存器opcode2为2 MRC p15, 0, Rd, C0, C0, 2 返回TCM状态寄存器的内容其中1618位代表数据TCM个数03代表指令TCM个数。
1号寄存器 ARM6之前1号寄存器的16位和18位用于使能数据TCM和指令TCMARM946ARM966ARM6因为可以使用9号寄存器控制每一块TCM的使能状态所以1号寄存器的这两个位就过时了应该置1。
9号寄存器 每个TCM都有一个TCM区域寄存器设置这个寄存器就可以设置TCM的基址和大小。在设置TCM区域寄存器前需要设置TCM选择寄存器。 下面是访问这些相关寄存器的指令
ARM Instruction TCM Region Register MRC/MCR P15, 0, Rd, C9, C1, 0 Data TCM Region Register MRC/MCR P15, 0, Rd, C9, C1, 1 Instruction/Unified TCM Region Register MRC/MCR P15, 0, Rd, C9, C2, 0 TCM Selection Register
TCM区域寄存器的结构 Base Address (Physical Address)[31-12] SBZ/UNP[11-7] Size[6-2] SC[1] En[0]
其中 En位是使能位置1时使能此TCM SC位置位表示此TCM被用作快缓存smartcache清零表示本地内存 Size字段是只读的含义如下
Size Memory Size Memory filed size field size 0b00000 0K 0b01101 4M 0b00011 4K 0b01110 8M 0b00100 8K 0b01111 16M 0b00101 16K 0b10000 32M 0b00110 32K 0b10001 64M 0b00111 64K 0b10010 128M 0b01000 128K 0b10011 256M 0b01001 256K 0b10100 512M 0b01010 512K 0b10101 1G 0b01011 1M 0b10110 2G 0b01100 2M 0b10111 4G
注意TCM区域寄存器配置出来的各个TCM块不能相交否则后果不可预测会损坏硬件。