对ARM紧致内存TCM的理解

发布者:李国永最新更新时间:2017-07-09 来源: 21ic关键字:ARM  紧致内存  TCM 手机看文章 扫描二维码
随时随地手机看文章

ARM的ram包括静态ram,动态ram, TCM---紧耦合内存(TCM: Tightly Coup ledMemories)。

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状态寄存器的内容,其中,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

注意TCM区域寄存器配置出来的各个TCM块不能相交,否则后果不可预测


关键字:ARM  紧致内存  TCM 引用地址:对ARM紧致内存TCM的理解

上一篇:恩智浦推出全新LPC84x系列
下一篇:stm32f105开发记录

推荐阅读最新更新时间:2024-03-16 15:35

三星将受益于ARM和国家半导体在功耗管理方面的合作
三星高度集成应用处理器整合了先进功耗控制器(APC),将为手机提供更长的电池寿命 ? 今天,国家半导体公司 和ARM公司共同宣布,三星公司 成为第一个公开宣布获得国家半导体 PowerWise 技术,即先进功耗控制器( APC)授权的ARM合作伙伴。该技术将帮助三星向消费者提供更快速的功能丰富的手机应用,并整合“智能 化”功耗控制技术以延长电池寿命。 国家半导体 的 PowerWise 技术采用一个可综合的适应 AMBA 算 法的宏单元——先进功耗控制器 ( APC: Advanced Power Controller ),它包括一个 硬件性能监
[新品]
Linux之ARM(IMX6U)裸机汇编LED驱动实验--烧写bin文件到SD卡运行
代码烧写 I.MX6U 虽然内部有 96K 的 ROM,但是这 96K 的 ROM 是 NXP自己用的,不向用户开放。所以相当于说 I.MX6U 是没有内部 flash 的,但是我们的代码得有地方存放啊,为此,I.MX6U 支持从外置的 NOR Flash、NAND Flash、SD/EMMC、SPI NOR Flash和 QSPI Flash 这些存储介质中启动,所以我们可以将代码烧写到这些存储介质中中。在这些存储介质中,除了 SD 卡以外,其他的一般都是焊接到了板子上的,我们没法直接烧写。但是 SD卡是活动的,是可以从板子上插拔的,我们可以将 SD 卡插到电脑上,在电脑上使用软件将.bin文件烧写到 SD 卡中,然后再插到板子
[单片机]
Linux之<font color='red'>ARM</font>(IMX6U)裸机汇编LED驱动实验--烧写bin文件到SD卡运行
谷歌、微软、高通联合抗议Nvidia收购Arm
集微网消息,针对Nvidia-Arm收购案引发了大规模的反对,包括Alphabet旗下的谷歌,微软和高通等科技企业正在向美国反垄断监管机构投诉Nvidia收购Arm,他们一致认为该交易将损害对其业务至关重要的行业领域的竞争,并要求进行干预。 据彭博社报道,了解这一过程的人士表示,至少有一家公司希望扼杀这笔交易。科技企业认为,这项收购将使Nvidia控制一个半导体产业链上重要的供应商,因为Arm向苹果、英特尔、亚马逊、华为等大公司授权芯片的基础技术,同时也向不计其数的中小企业提供授权。 总部位于英国的Arm被视为“全球半导体行业的瑞士”,因为它将芯片设计和相关软件代码授权给所有客户,而不是直接与半导体公司竞争。业内担心,本身作为芯片
[手机便携]
基于DSP/ARM双核系统的通信接口设计
嵌入式系统的核心是嵌入式微处理器和嵌入式操作系统。早期的嵌入式系统硬件核心是各种类型的8位和16位单片机;而近年来32位处理器以其高性能、低价格,得到了广泛的应用。近年来,又出现了另一类数据密集处理型芯片DSP。DSP由于其特殊的结构、专门的硬件乘法器和特殊的指令,使其能快速地实现各种数字信号处理及满足各种高实时性要求。随着现代嵌入式系统的复杂度越来越高,操作系统已成为嵌入式系统不可缺少的部分。免费的嵌入式操作系统,如 Linux等,随着自身不断的改善,得到了飞速的发展。Linux是一个免费的、强大的、可信赖的、具有可伸缩性与扩充性的操作系统。Linux实现了许多现代化操作系统的理论,并且支持完整的硬件驱动程序、网络通信协议与多处
[单片机]
基于DSP/<font color='red'>ARM</font>双核系统的通信接口设计
使用ARM7 LPC2148微控制器构建一个简单的机械臂
  机械臂是令人着迷的工程创造之一,看着这些东西倾斜和平移以像人类手臂一样完成复杂的事情总是令人着迷。这些机械臂常见于装配线上进行焊接、、喷漆等高强度机械工作的行业中,最近还开发了高精度的先进机械臂来执行复杂的外科手术。因此,在本中,让我们使用 7-2148 微控制器构建一个简单的机械臂,通过手动控制几个来拾取和放置物体。   所需组件   3D 打印机机械臂   ARM7-LPC2148   SG-90 伺服 (4)   10k 电位器 (4)   按钮 (4)    (4)   5V (1A) 直流电源   (10k (4)、2.2k(4))   面包板   连接   准备好
[机器人]
ARM指令集和X86指令集的比较
一、背景知识: 指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分。 相应的,微处理随着微指令的复杂度也可分为CISC及RISC这两类。 CISC 是一种为了便于编程和提高记忆体访问效率的晶片设计体系。在20世纪90年代中期之前,大多数的微处理器都采用CISC体系──包括Intel的80x86和Motorola的68K系列等。 即通常所说的X86架构就是属于CISC体系的。 RISC 是为了提高处理器运行的速度而设计的晶片体系。它的关键技术在于流水线操作(Pipelining):在一个时钟周期里完成多条指令。而超
[单片机]
ARM学习《八》——STM32定时器配置及其中断设置!
好久没有写东西了,工作太忙都快没时间学习了。今天调试了STM32的定时器功能,STM32定时器比较多,但调试都是一样的,寄存器都是一一对应的。就拿TIM2举例说明。在网上搜了好多关于定时器的设置,但大多数都是一个版本,而且都是针对库函数操作的,让人看起来一头雾水,对于初学者很是不利(我也是初学者)。下面我将自己的定时器设置过程一一记录下来,以供大家参考,我们共同学习 首先定义定时器头文件,也就是定义寄存器以供操作: //************************************************************************* // // TIM2-Register //
[单片机]
分析师:ARM开始挑战游戏机市场
ARM正在打入早已建立自有秩序的游戏机市场,这意味着PowerPC很可能生变,市调机构Semicast Research指出。 Semicast预测,微软(Microsoft)在行动装置领域将更专注于ARM架构,作为融合策略的一部份,该公司可能在下一代Xbox游戏机中选用基于ARM架构之Nvidia公司的晶片。 ARM Holdings plc已被指定为未来Sony手持式PSP的架构供应商,它将取代MIPS Technologies;而任天堂(Nintendo)的DS和3DS也是基于ARM架构。 ARM在掌上型游戏机市场的任务圆满达成,现在,该公司开始进军游戏机了,Semicast说。 目前的主流游戏机包括微软Xb
[家用电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved