微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
厂商专区
产品/技术
应用分类

你知道吗? ARM当中的第三种内存方式

2016-06-16 09:43 来源:电源网综合 编辑:铃铛

在学习ARM的过程中,相信大家都接触过RAM和动态RAM。但是对于ARM的来说,还有第三种内存形式,那就是TCM紧欧合内存。TCM能够为ARM提供强力的支持,起到与cache相同的作用。但是TCM却拥有cache所不具备的优点,那就是对于程序代码的控制函数的精确摆放。在本文中,小编将为大家介绍TCM的相关知识。

TCM是一个固定大小的RAM,紧密地耦合至处理器内核,提供与cache相当的性能,相比于cache的优点是,程序代码可以精确地控制什么函数或代码放在哪儿(RAM里)。当然TCM永远不会被踢出主存储器,因此,他会有一个被用户预设的性能,而不是像cache那样是统计特性的性能提高。

TCM对于以下几种情况的代码是非常有用、也是需要的:可预见的实时处理(中断处理)、时间可预见(加密算法)、避免cache分析(加密算法)、或者只是要求高性能的代码(编解码功能)。随着cache大小的增加以及总线性能的规模,TCM将会变得越来越不重要,但是他为设计者提供了一个权衡的机会。

那么应该在哪种情况中使用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状态寄存器的内容,其中16-18位代表数据TCM个数,0-3代表指令TCM个数。

1号寄存器

ARM6之前,1号寄存器的16位和18位用于使能数据TCM和指令TCM(ARM946,ARM966),ARM6因为可以使用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;

这里需要大家注意的是,ARM内存当中的TCM区域寄存器配置得出的多个TCM模块是不能相交的。如果出现相交的情况则有可能发生不受开发者控制的情况出现。

标签: ARM ARM内存

声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。

相关阅读

微信关注
技术专题 更多>>
研发工程师的工具箱
智慧生活 创新未来

头条推荐

电子行业原创技术内容推荐
客服热线
服务时间:周一至周五9:00-18:00
微信关注
获取一手干货分享
免费技术研讨会
editor@netbroad.com
400-003-2006