This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] TMS570LC4357:MPU 设置中的存储器属性、存储器类型和高速缓存策略有何区别?

Guru**** 656470 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159114/faq-tms570lc4357-what-are-the-differences-among-the-memory-attributes-memory-types-and-cache-policy-in-mpu-settings

器件型号:TMS570LC4357
Thread 中讨论的其他器件:DBCA
  1. MPU 的用途是什么?
  2. MPU 设置中的读取分配和写入分配是什么?
  3. 设置 MPU 区的步骤是什么?
  4. 重叠区域的属性是什么?
  5. 可共享存储器和不可共享存储器之间有何区别?
  6. 什么是 MPU 设置中的回写和直写?
  7. 不可高速缓存意味着什么?
  8. 严格排序存储器、器件存储器和正常存储器之间有何差异?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    存储器保护单元(MPU)是一个可编程单元、它允许特权软件(通常是操作系统内核)定义存储器访问权限。 它监控事务、包括从处理器获取指令和数据访问、当检测到访问冲突时、这些事务会触发故障异常。

    基于 ARM Cortex-R 的 MCU 具有三种存储器类型:正常存储器、器件存储器和严格排序存储器。 存储器区域具有以下属性: 可共享或不可共享、可高速缓存或不可高速缓存、存储器访问权限和从未执行(XN)。

    在使用前、需要对 MPU 寄存器进行编程和使能。 这通常在系统启动后在目标 MCU 上运行的任何应用程序的初始化阶段完成。

    MPU 的用途是什么?

    1.防止不受信任的应用程序访问受保护的内存区域

    2.防止用户应用程序破坏操作系统使用的数据

    3.通过阻止任务访问其他数据来分隔处理任务之间的数据

    4.允许将存储器区域定义为只读、以便保护重要数据

    5.检测意外的内存访问

    MPU 设置中的读取分配和写入分配是什么?

    读取分配。  基于 ARM Cortex-R 的 MCU 上的所有可缓存位置均为读取分配。 这意味着数据高速缓存行在发生高速缓存未命中时被分配、从而将数据从主存储器传输到高速缓存存储器中。 因此、对这些存储器位置的后续访问将导致高速缓存命中条件、数据直接从高速缓存存储器中读取。

    写入分配: 在缓存未命中时、将分配缓存行并加载主存储器中的数据。 这意味着在处理器上执行存储指令可能会导致突发读取、从而将数据从主存储器缓存。 高速缓存未分配写入、未分配高速缓存行、数据直接写入主存储器。 在这里、只有在读取时出现缓存未命中时才会缓存一行、然后使用读取分配策略加载缓存。

    设置 MPU 区的步骤是什么?

    1.选择 MPU 区

    2.写入 MPU 区的基地址

    3.写入 MPU 区的属性

    4.使能 MPU:SCTLR 寄存器

    重叠区域的属性是什么?

    当存储器区域重叠时、存储器访问受编号最大的存储器区域属性的影响。

    可共享存储器和不可共享存储器之间有何区别?

    可共享意味着存储器区域由多个处理器共享。 不可共享意味着存储器区域只能由单个处理器使用。 它与 DMA 访问无关。

    什么是 MPU 设置中的回写和直写?

    回写:在高速缓存命中时、仅更新数据高速缓存、而不更新主存储器。 高速缓存行被标记为脏、写入主存储器的操作被推迟、直到高速缓存行被逐出或显式清理。

    直写式:高速缓存命中时、数据高速缓存和主存储器都将更新。

    不可高速缓存意味着什么?

    每次读取和写入都在主内存上执行,不会通过高速缓存。

    严格排序存储器、器件存储器和正常存储器之间有何差异?

    --严格排序(SO)和设备(DEV):

      1.显式加载/存储到严格排序的区域、并且器件区域始终会产生精确的事务大小和数量。

      对严格排序区域和器件区域的访问始终按照程序中列出的顺序显示。

    --严格排序与器件:

      1.严格排序的访问相对于*所有*其他显式加载/存储。

      2.器件访问只能相对于其它器件访问进行排序

    --正常(正常):

      1.加载/存储到正常的存储器区域可能会导致任何大小和数目的事务。  例如:两个相邻的半字存储可能合并为单字写入。  

      2.关于排序,可以重新排序对普通存储器的访问。

    --示例:

      load-norm-A、load-dev-B、load-dev-C、load-norm-D 可作为 ADBC、甚至 DBCA 执行;

      load-norm-A、load-SO-B、load-SO-C、load-norm-D 必须作为 ABCD 执行。