TCM简介

TCM :TIghtly Coupled Memory的缩写。为了弥补Cache访问的不确定性,而增加的OnChip Memory.有的CPU含有分立的InstrucTIon TCM / Data TCM.TCM包含在存储器的地址映射空间中,可以作为快速存储器来访问。TCM使用物理地址,对TCM的写访问,受到MMU内部保护信息的控制。向TCM中的内存位置写入时,不会发生任何外部写入。

TCM用于向处理器提供低延迟内存,它没有高速缓存特有的不可预测性。 可以使用 TCM 来存放重要例程,如中断处理例程或者极需要避免高速缓存不确定性的实时任务。此外,可以使用 TCM 来保存暂时寄存器数据、局部属性不适合高速缓存的数据类型,以及中断堆栈等重要数据结构。

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

TCM是一个固定大小的RAM,紧密地耦合至处理器内核,提供与cache相当的性能,相比于cache的优点是,程序代码可以精确地控制什么函数或代码放在哪儿(RAM里)。当然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 linux,ARM紧致内存TCM的解释相关推荐

  1. 对ARM紧致内存TCM的理解

    ARM 的ram包括静态ram,动态ram,TCM---紧耦合内存(TCM: Tightly Coupled Memories). TCM是一个固定大小的RAM,紧密地耦合至处理器内核,提供与cach ...

  2. 对ARM紧致内存TCM的理解 转

    ARM 的ram包括静态ram,动态ram,TCM. TCM 是一个固定大小的 RAM ,紧密地耦合至处理器内核,提供与 cache 相当的性能,相比于 cache 的优点是,程序代码可以精确地控制什 ...

  3. arm 模式 Linux,ARM Linux:usr模式转为svc模式的实现原理

    大家都知道linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式.下面咱们看看它的实现过程. 系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各 ...

  4. linux ram大小 arm,在linux / arm下对RAM(无ECC)进行基准测试的最佳方法是什么?

    这是我有时测试ram的方式:首先挂载两个tmpfs(默认情况下,tmpfs是ram的一半): # mount -t tmpfs /mnt/test1 /mnt/test1 # mount -t tmp ...

  5. arm的linux怎么管理任务,【linux】arm mm内存管理

    欢迎转载,转载时请保留作者信息,谢谢. arm mmu硬件原理 由上图,arm分四种模式,section,大小页+ 极小页,  section模式简单,也能说明mmu本质,其它模式只是用了多级数组索引 ...

  6. arm服务器性能监控工具,linux服务器jvm内存监控工具

    linux服务器jvm内存监控工具 内容精选 换一换 鲲鹏软件栈汇聚各种鲲鹏兼容软件,帮助开发者了解如何将软件移植到鲲鹏上运行,获取操作指导和工具. 来自:其他 简要介绍Sysstat是一个软件包,包 ...

  7. 英伟达对ARM、Linux开放光线追踪,SDK已就位,网友:switch也能跑光追的节奏?...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今后,在ARM架构CPU的电脑上,你也可以享受英伟达光追的快乐了. 在GDC 2021上,英伟达首次展示了DLSS和光追等技术在ARM硬件上 ...

  8. linux arm current_thread_info定义,linux中arm/mips架构current_thread_info定义

    arm架构 current 宏的定义: linux-3.4\arch\arm\include\asm\current.h 中: static inline struct task_struct *ge ...

  9. Linux_arm_启动_c语言部分详解,[原创]Linux arm 启动 c语言部分详解第四讲

    Linux arm启动c语言部分详解第四讲(from setup_per_cpu_areas();) Written by leeming 上面的setup_arch花了我们大量的篇幅,现在我们要继续 ...

最新文章

  1. SCDPM2012功能测试(4)—配置通知
  2. N-MOS的G-S电容随着DS电压的变化关系
  3. linux c 获取指定进程 父进程pid
  4. Windows下的网卡Teaming
  5. 斯坦福2014机器学习笔记五----正则化
  6. python爬虫背景_利用Python代码实现一键抠背景功能
  7. 收藏开发人员常去网站
  8. Esxi服务器虚拟化平台搭建
  9. DirectionalLayout线性布局
  10. spring学习(13):使用junit4进行单元测试续
  11. c语言冒泡结构入门程序,C语言入门:冒泡排序
  12. 新疆师范大学计算机科学学院,新疆师范大学王炜教授亲临计科学院讲学——记计算机科学学院研究生院...
  13. 微信小程序, 解析↵换行
  14. Fiddler--QUICKEXER
  15. 【TODO】HTML label
  16. 最优比例生成树(0/1分数规划)
  17. 《基于CapsNet的汉字字形表征模型》文章理解
  18. 37. Never redefine a function's iherited default parameter value.
  19. python分析股票收益与投资者情绪的关系_投资者情绪与股票市场收益的相互影响分析...
  20. 关于《成电讲坛》活动领票环节的调查报告

热门文章

  1. #java #web jsp开发入门(web应用概述、tomcat简介、编写步骤)
  2. 查看路由器中宽带的账号密码等
  3. 二、浙江专升本高等数学考点-极限
  4. Perforce warning:Can't clobber writable file ...
  5. google earth的网页版
  6. 一分钟搞懂 微调(fine-tuning)和prompt
  7. vue解决火狐浏览器滚动条问题
  8. std::tuple、std::tie(可用于结构体大小比较)、std::pair用法
  9. Couchbase评论:智能NoSQL数据库
  10. 三轴加速度计Triaxial accelerometer