Muticoresharedmemorycontroller(MSMC)
1.1 综述
多核共享内存控制器(MSMC)管理核、DMA、其他主设备、EMIF 之间的交通。MSMC
同时提供片上共享的 SRAM,所有的核和主设备都可以使用的。
本数据手册结合特定设备数据手册使用。
1.2 术语
条目 定义
MPAX
内存保护和地址扩展
MSMC
多核共享内存控制器
PrivID
系统主设备特定 ID
SES
系统 EMIF 访问(从)接口
SMS
系统 MSMCSRAM 访问(从)接口
TeraNet
网络交换矩阵
1.3 特性
MSMC 提供如下特性:
(1)共享内存 L2 或 L3 都可以被所有核及其主设备访问;
(2)从系统主控访问 MSMC 和 DDR3 的内存受内存保护;
(3)32bits 到 36bits 地址扩展到更大的地址空间。
2.1 功能概述
功能模块图:
1
MSMC 包含有连接到 C66x 核的从接口(每个核有一个从接口)、与系统 TeraNet 连接的
从接口,与 EMIF 连接的主接口,与系统 TeraNet 连接的主接口。
2.1.1C66x 核从接口
MSMC 有连接到 C66x 核 MDMA 口的从接口。C66x 核用该接口来访问片上的 MSMC 内存、
外存、和 EMIF 存储映射寄存器(通过 MSMC‐EMIF 主控接口)或者系统水平资源(通过 MSMC
系统主控接口)。
2.1.2 系统从接口
MSMC 有两个从接口,来访问主系统设备(MSMCSRAM、EMIF,除了 C66x 核是通过 C66x
核从接口连接到 MSMC)。
2.1.2.1 系统 EMIF 访问从接口(SES)
SES 接口处理外部 DDR3 内存与 EMIF 模块的内存映射寄存器的访问。访问超过地址映射
范围的外存地址或 EMIF 的内存映射寄存器会返回一个地址错误到请求的主控制器。
注意:当 MSMCSRAM 采用 MPAX 重映射到外部地址空间时,这样的访问不会产生地址
错误,因为访问是在有效的外存地址范围内的。
接口的地址宽度是 32bits,地址还可以扩展到 36bits 的外存地址,参见“Memory
ProtectionandAddressExtension(MPAX)”。
2.1.2.2 系统 MSMCSRAM 访问从接口(SMS)
2
SMS 接口,通过一个非 C66x 核的主控制器,对 MSMC SRAM 的访问进行处理。该接口
也提供通过系统的主控制器到 MSMC 配置寄存器的访问。所有对不是 MSMC SRAM 或配置
寄存器地址的访问会返回一个地址错误到所请求的主控制器。
2.1.3 系统主接口
MSMC 为 C66x 核提供一个主接口来访问系统资源诸如 MSMCSRAM、MSMCMMRs、DDR3
memory、和 EMIFMMRs 等。系统从接口的通讯不经过该主接口。
2.1.4 外部存储器主接口
外部存储器接口(ExternalMemoryInterface,EMIF)模块是外部存储器主接口连接到
MSMC 的接口。该接口的地址宽度是 36bits 的,因为它支持存储空间扩展超过 4GB。MSMC
实现 36bits 的地址空间扩展参见“MemoryProtectionandAddressExtension(MPAX)”。
2.2 内存保护和地址扩展(MPAX)
MSMC 模块支持将外部存储空间扩展到 64GB 的 36bits 地址空间,即使 DSP 和 SoC 地址
仍然是 32bits 的。一些 KeyStone 设备(见特定设备数据手册)只支持到 8GB 的外部存储空
间。C66x 核采用 MPAX 单元来扩展 32bits 地址到 36bits。
MSMC 的从接口收到其他主接口的地址必须在 MSMC 内部对地址进行扩展。这些接口也
为系统主控制器对 MSMCSRAM、外部存储器、EMIF 的存储映射寄存器的访问提供内存的保
护。
两个系统从接口(SES 和 SMS)都有与 C66x 核一样的 MPAX 单元,这使得编程者来看 C66x
核与其他系统主设备(特别是 DMA 设备)的之间内存是相一致的。
2.2.1MPAX 段的操作
MPAX 控制大小可变内存段,每个段有一对控制寄存器对:MPAXH 和 MPAXL。
·MPAXH 指定匹配段的基地址和大小;
·MPAXL 指定段的替换的地址和允许访问。
每个 MPAX 单元为每个系统主控制器 PrivID 提供 8 个寄存器对,允许 8 个独立或重叠的
变长存储段。
控制寄存器的内存映射不是经由 MPAX 的硬件来完成的,所有经过 SMS 口访问 MSMC
的控制寄存器也是这样用的。
图 2‐2 是 MPAX 的组成结构,MPAX 段寄存器见“MPAXSegmentRegisters”。
所有与 MSMC 连接的 C66 x 核和通过 SMS 口与 MSMC 连接的系统主设备都可以读取 MSMC
的 MPAX 寄存器。
借助外部 MSMC 信号量以及 MSMC 配置寄存器的锁机制来写控制这些寄存器。
系统主设备访问段寄存器是自动受保护的,因为每个 PrivID 只有 8 对各自的段寄存器。
如果访问的不是 PrivID 对应的 MPAX 段寄存器会产生一个保护性错误。
3
2.2.2MPAX 段寄存器复位值
复位时,MPAX 段 0 寄存器对初始化设置为不受限制访问整个 MSMCSRAM 地址空间和
2GB 的 EMIF 地址空间,其他段的允许位和大小都设置为 0(这些段没有可访问的映射)。
对每个 PrivID,SMS_MPAXH[0]复位为 0x0C000017、SMS_MPAXL[0]复位为 0x00C000BF(段 0
大小为 16MB,匹配为任何地址范围为 0x0Cxxxxxx)。
对每个 PrivID,SES_MPAXH[0]复位为 0x8000001E、SES_MPAXL[0]复位为 0x800000BF(段
0 大小为 2GB,对应的地址范围 0x8XXXXXXX)。这个 2GB 的空间开始于外部存储器基地址
0x80000000。
段 1 到段 7 的 SMS_MPA X H 和 SMS_MPAXL 复位分别设为 0x0C000000 和 0x00C00000;
SES_MPAXH 和 SES_MPAXL 复位都是 0。
这些复位设置是为了方便启动代码。建议引导代码根据应用设置这些寄存器。
2.2.3 内存保护
对于 SES 和 SMS,MPAXH 寄存器包含段基地址(BADDR)域以匹配 SES 的入口地址以明
确地址段。BADDR 和段大小(SEGSZ)域说明了控制段的位置和大小。SEGSZ 是一个 5 位的
域用于指定段的大小(从 4kB 到 4GB 的幂),如表 2‐1“MPAXSegmentSizeEncoding”。
4
对于 SES 口的 MPAX 单元,有充足数量的高比特位(依赖于 SEGSZ 域的尺寸大小)输入
地址来匹配 PrivID 所有对应的 MPAXH 寄存器的 BADDR 域,选择对应的 MPAXH 控制寄存器
对来进行内存保护和地址扩展。例如,对于 4kB 的段,BADDR 域的所有 20bits 必须匹配上
20bits 的系统地址,对于 16MB 的段,BADDR 的高 8 位必须跟 C66x 核地址的高 8 位相匹配,
其余位不考虑,对于 4GB 的段,没有匹配位,所有的地址都相一致。
如果一个地址跟编程的 MPAXH 寄存器不匹配,也不是 MSMC 配置寄存器地址,那么访
问允许权限为 0,结果产生一个故障保护。
如果一个地址与多个 MPAXH 寄存器(重叠段描述)匹配,则最高的 MPAX 寄存器被选
中(即,如果地址匹配 MPAXH5 和 MPAXH2 中的 BADDR,则 MPAXH5 被选中)。利用这种基
于优先级匹配方法,MPAX 可被编程为重叠段,来实现对非 2 的幂的大小段和子段的不同内
存的保护(和/或扩展)。
2.2.3.1 内存保护故障报告
MSMC 的内存保护和故障报告寄存器于表 2‐2 列出和相关说明见“Memory Protection
Fault Reporting Registers”(3‐14 页)。
MPAXL 寄存器包含管理员和用户访问的权限属性。
如果访问不匹配 MPAXL 的相应
的权限属性,内存故障被触发,导致以下操作:
·如果 SMIESTAT 寄存器相应的中断被使能,以上错误的访问导致一个内存保护故障中
断(MSMC_mpf_errorn,n 是指哪个 PrivID 的访问请求)。这个故障也被记录到 SMIRSTAT 寄
存器中(见 2-19 页“MSMC Interrupt Control”),每个 PrivID 对应事件位被置位,SMIRC 寄
存器对应位写 1 来清除。对每个 PrivID 只记录一个故障,下一个故障中断不会产生,直到
SMIRC 将其清除。
·导致故障的访问地址被记录到 SMPFAR 寄存器中。如果故障是地址跟段的 BADDR
不匹配,则 SMPFXR 的 NM 域被设置吗,访问的主设备 ID 和 PrivID 也被记录到
SMPFR 寄存器中。参见特定器件数据手册中各个系统主设备的主设备 ID 和 Privilege
5