2022年多核共享内存控制器 .pdf
《2022年多核共享内存控制器 .pdf》由会员分享,可在线阅读,更多相关《2022年多核共享内存控制器 .pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Muticore sharedmemory controller(MSMC)1.1 综述多核共享内存控制器(MSMC)管理核、 DMA、其他主设备、EMIF 之间的交通。MSMC同时提供片上共享的SRAM,所有的核和主设备都可以使用的。本数据手册结合特定设备数据手册使用。1.2 术语条目定义MPAX内存保护和地址扩展MSMC多核共享内存控制器PrivID系统主设备特定IDSES系统 EMIF 访问(从)接口SMS系统 MSMC SRAM访问(从)接口TeraNet网络交换矩阵1.3 特性MSMC 提供如下特性:(1)共享内存L2 或 L3 都可以被所有核及其主设备访问;(2)从系统主控访问MS
2、MC 和 DDR3的内存受内存保护;(3)32bits 到 36bits 地址扩展到更大的地址空间。2.1 功能概述功能模块图:1名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 29 页 - - - - - - - - - MSMC 包含有连接到C66x核的从接口(每个核有一个从接口)、与系统 TeraNet 连接的从接口,与EMIF 连接的主接口,与系统TeraNet 连接的主接口。2.1.1 C66x 核从接口MSMC 有连接到 C66x核 MDMA 口的从接口。C6
3、6x核用该接口来访问片上的MSMC 内存、外存、和 EMIF 存储映射寄存器 (通过 MSMC EMIF 主控接口)或者系统水平资源 (通过 MSMC系统主控接口) 。2.1.2 系统从接口MSMC 有两个从接口, 来访问主系统设备 (MSMC SRAM、EMIF, 除了 C66x核是通过C66x核从接口连接到MSMC) 。2.1.2.1 系统 EMIF 访问从接口( SES )SES 接口处理外部DDR3内存与 EMIF 模块的内存映射寄存器的访问。访问超过地址映射范围的外存地址或EMIF 的内存映射寄存器会返回一个地址错误到请求的主控制器。注意:当 MSMC SRAM采用 MPAX重映射到
4、外部地址空间时,这样的访问不会产生地址错误,因为访问是在有效的外存地址范围内的。接口的地址宽度是32bits,地址还可以扩展到36bits 的外存地址,参见“MemoryProtection and Address Extension(MPAX)” 。2.1.2.2 系统 MSMC SRAM 访问从接口( SMS)2名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 29 页 - - - - - - - - - SMS接口,通过一个非C66x核的主控制器,对MSMC SRAM
5、的访问进行处理。该接口也提供通过系统的主控制器到MSMC 配置寄存器的访问。所有对不是MSMC SRAM或配置寄存器地址的访问会返回一个地址错误到所请求的主控制器。2.1.3 系统主接口MSMC 为 C66x核提供一个主接口来访问系统资源诸如MSMC SRAM 、 MSMC MMRs、 DDR3memory 、和 EMIFMMRs 等。系统从接口的通讯不经过该主接口。2.1.4 外部存储器主接口外部存储器接口(External Memory Interface, EMIF)模块是外部存储器主接口连接到MSMC 的接口。该接口的地址宽度是36bits 的,因为它支持存储空间扩展超过4GB。 MS
6、MC实现 36bits 的地址空间扩展参见“Memory Protection and AddressExtension(MPAX)” 。2.2 内存保护和地址扩展(MPAX)MSMC 模块支持将外部存储空间扩展到64GB的 36bits 地址空间,即使DSP和 SoC地址仍然是 32bits 的。一些KeyStone设备(见特定设备数据手册)只支持到8GB的外部存储空间。 C66x核采用 MPAX单元来扩展32bits 地址到 36bits。MSMC 的从接口收到其他主接口的地址必须在MSMC 内部对地址进行扩展。这些接口也为系统主控制器对MSMC SRAM、外部存储器、 EMIF 的存储映
7、射寄存器的访问提供内存的保护。两个系统从接口 (SES和 SMS ) 都有与 C66x核一样的MPAX单元, 这使得编程者来看C66x核与其他系统主设备(特别是DMA 设备)的之间内存是相一致的。2.2.1 MPAX 段的操作MPAX控制大小可变内存段,每个段有一对控制寄存器对:MPAXH和 MPAXL 。MPAXH指定匹配段的基地址和大小;MPAXL指定段的替换的地址和允许访问。每个 MPAX单元为每个系统主控制器PrivID 提供 8 个寄存器对,允许8 个独立或重叠的变长存储段。控制寄存器的内存映射不是经由MPAX 的硬件来完成的,所有经过SMS 口访问MSMC的控制寄存器也是这样用的。
8、图 2 2 是 MPAX的组成结构,MPAX段寄存器见“MPAXSegment Registers” 。所有与 MSMC 连接的 C66x 核和通过SMS口与 MSMC 连接的系统主设备都可以读取MSMC的 MPAX寄存器。借助外部MSMC 信号量以及MSMC 配置寄存器的锁机制来写控制这些寄存器。系统主设备访问段寄存器是自动受保护的,因为每个PrivID 只有 8 对各自的段寄存器。如果访问的不是PrivID 对应的 MPAX段寄存器会产生一个保护性错误。3名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
9、- - - - - 第 3 页,共 29 页 - - - - - - - - - 2.2.2 MPAX 段寄存器复位值复位时, MPAX段 0 寄存器对初始化设置为不受限制访问整个MSMC SRAM地址空间和2GB的 EMIF 地址空间,其他段的允许位和大小都设置为0(这些段没有可访问的映射)。对每个 PrivID,SMS_MPAXH0复位为 0 x0C000017、SMS_MPAXL0 复位为 0 x00C000BF (段 0大小为 16MB,匹配为任何地址范围为0 x0Cxxxxxx ) 。对每个 PrivID,SES_MPAXH0 复位为 0 x8000001E、SES_MPAXL0 复
10、位为 0 x800000BF (段0 大小为2GB,对应的地址范围0 x8XXXXXXX ) 。这个2GB 的空间开始于外部存储器基地址0 x80000000。段 1 到段 7 的 SMS_MPAXH和 SMS_MPAXL复位分别设为0 x0C000000 和 0 x00C00000;SES_MPAXH 和 SES_MPAXL 复位都是 0。这些复位设置是为了方便启动代码。建议引导代码根据应用设置这些寄存器。2.2.3 内存保护对于 SES和 SMS,MPAXH寄存器包含段基地址( BADDR )域以匹配SES的入口地址以明确地址段。 BADDR和段大小( SEGSZ )域说明了控制段的位置和
11、大小。SEGSZ 是一个 5 位的域用于指定段的大小(从4kB 到 4GB的幂),如表 2 1“MPAXSegment SizeEncoding” 。4名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 29 页 - - - - - - - - - 对于 SES口的 MPAX单元,有充足数量的高比特位(依赖于SEGSZ 域的尺寸大小)输入地址来匹配PrivID 所有对应的MPAXH寄存器的 BADDR域,选择对应的MPAXH控制寄存器对来进行内存保护和地址扩展。例如,对于4k
12、B 的段, BADDR域的所有20bits 必须匹配上20bits 的系统地址,对于16MB 的段,BADDR的高 8 位必须跟C66x核地址的高8 位相匹配,其余位不考虑,对于4GB的段,没有匹配位,所有的地址都相一致。如果一个地址跟编程的MPAXH寄存器不匹配,也不是MSMC 配置寄存器地址,那么访问允许权限为0,结果产生一个故障保护。如果一个地址与多个MPAXH寄存器(重叠段描述)匹配,则最高的MPAX寄存器被选中(即,如果地址匹配MPAXH5和 MPAXH2中的 BADDR ,则 MPAXH5被选中)。利用这种基于优先级匹配方法,MPAX可被编程为重叠段,来实现对非2 的幂的大小段和子
13、段的不同内存的保护(和 /或扩展)。2.2.3.1 内存保护故障报告MSMC 的内存保护和故障报告寄存器于表2 2 列出和相关说明见“Memory Protection Fault Reporting Registers” (3 14 页) 。MPAXL寄存器包含管理员和用户访问的权限属性。如果访问不匹配MPAXL 的相应的权限属性,内存故障被触发,导致以下操作:如果 SMIESTAT 寄存器相应的中断被使能,以上错误的访问导致一个内存保护故障中断(MSMC_mpf_error n,n 是指哪个 PrivID 的访问请求)。这个故障也被记录到SMIRSTAT 寄存器中(见2-19 页“MSMC
14、 InterruptControl ” ) ,每个 PrivID 对应事件位被置位,SMIRC寄存器对应位写1 来清除。对每个PrivID 只记录一个故障,下一个故障中断不会产生,直到SMIRC将其清除。 导致故障的访问地址被记录到SMPFAR 寄存器中。如果故障是地址跟段的BADDR不匹配,则 SMPFXR 的 NM 域被设置吗,访问的主设备ID 和 PrivID 也被记录到SMPFR 寄存器中。参见特定器件数据手册中各个系统主设备的主设备ID 和 Privilege 5名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
15、整理 - - - - - - - 第 5 页,共 29 页 - - - - - - - - - ID(PrivID) 值的分配。并返回一个总线保护错误(bus-protection-error)到所请求的主设备。只有一个故障被记录在SMPFAR 和 SMPFXR 中。主设备接到一个总线错误故障中断的通知,作为应答,主设备应该通过在SMPFCR 中的 CLR 域写 1 来清除记录的故障,避免未来的故障产生。 2.2.4 地址扩展对于访问SES 接口,通过MPAXL中 BADDR (替换地址域)相应部分替换为适当数量的高位比特地址 (根据段的大小) 来进行 32bits 到 36bits 的扩展,
16、见表 2 3 “Replacement AddressUsedasPer Segment Size” 。在 C66x CorePac 的 MPAX 单元也执行同样的操作,将相同值编进BADDR 、SEGZ 域导致地址扩展操作对于系统主设备的访问。2.2.4.1 SES 访问 MSMC RAM 在 SES端口的 MPAX 单元中采用地址重映射,会映射一部分或全部的MSMC SRAM到外部存储空间,通过SES可以访问这部分的地址。系统主设备就这样对齐MSMC 存储空间到外部地址空间,同样C66x CorePac 通过它的 MPAX 单元也是可以的。对齐外部地址到SRAM 有以下限制:SES不支持跨
17、越MSMC SRAM和外部存储器终端的交互并导致一个寻址错误到寻址命令的第一个终端。寻址错误优先于保护错误。 2.2.4.2 SMSMPAX 地址扩展对于 SMS接口,地址的扩展操作非常相似,除了 31 24bits 地址与源地址(即 MSMC SRAM的起始地址)是保持相同的。SMS_MPAXL包含一个相对较小的BADDR域。请注意,此所得的地址仍然是MSMC RAM 内和 MSMC RAM 重映射操作到不同地址段内的一个32bit 地址。这有可能违反相关段的权限并检查内存保护(扩展地址到目的段有更多的权限限制)。这实际上是一个有效的MPAX的配置,刻画了重叠段不同子段的不同权限。如果不希望
18、段重叠,段权限的限定的水平一致性MPAX段匹配的优先级方案,这是个很好的做法,即,配置限制段A 比限制段 B 编号更低的MPAX对。如果段 A权限意在用于重叠A和 B段区域,配置A为一个编号比B更高的 MPAX 对。6名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 29 页 - - - - - - - - - 2.2.4.3 地址扩展错误报告如果 SES地址扩展超过EMIF 范围(内存或内存映射寄存器),则 MSMC EMIF 主设备口会从 EMIF收到一个寻址错误,并将
19、此错误传递给SES接口。2.3 MSMC 存储器2.3.1 MSMC SRAMMSMC SRAM 用作共享的L2 和 L3:共享的 L2可以 cache 为 L1D 和 L1P的缓存; L2 将不会缓存请求到MSMC SRAM的数据。共享的 L3 MSMC没有直接的L2 缓存,但可以缓存L1D和 L1P。然而如果使用C66x地 CorePac的址扩展功能重映射到外存地址,则 MSMC 存储器可以cache 为 L3作为 L1和 L2的缓存。为了实现这一点,MAR 寄存器中 cahing 必须使能( MAR.PC位)重新映射区域。2.3.2 MSMC 存储器的Bank存储器由 bank 组成,每
20、个bank 中有两个子bank(subbanks) ,分别放在相邻寻址的位置。每个 bank 地址是 64 byte 对齐的,64 byte 的存储块分别位于不同的bank。另外,32 byte对齐的地址存储块分别位于64 byte bank 块内的两个子块(subbanks) 。图 2 3 “MSMC SRAMBankAddressing”演示了 MSMC 存储器的4 个 bank 连续的 byte 地址, byte 地址的第 6 和 7 位用以指定位于4 个 bank 中的哪一个,地址第5 位用以指定位于哪个子 bank(subbanks) 。见特定器件数据手册中的MSMC SRAM大小和
21、配置。7名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 29 页 - - - - - - - - - 2.3.3 MSMC 带宽管理仲裁器试图分配访问者公平的优先级。然而,较低优先级的等待时间是不能保证在一个范围内的。 因此, 总是等待更高优先级繁忙的请求访问数据。为了避免低优先级的无限期等待, MSMC 提供一个带宽管理方案来限制等待时间。MSMC 为每个请求者提供一个等待范围寄存器(SBND) 。 这些存储映射配置寄存器,C66xCorePac从设备为SBANDC0
22、SBANDCn ,SMS为 SBANDM,SES为 SBANDE 。在 MSMC 循环访问中,这些寄存器为请求者请求等待范围。MSMC 带宽管理寄存器的描述见“Bandwidth Management Control Registers” 3 9 页。中央的 banks 和 EMIF的仲裁机构为每个请求者提供一个等待计数器,当哪个 SBAND寄存器 SCNT位域被编写,计数器为该请求者初始化相同的值。对于 EMIF 的仲裁器,如果EMIF 接口停滞, SCNT开始为循环倒计时。当SCNT倒计时到 0 时,请求者的优先级降到0(最高优先级) 。优先级降到0 后, SCNT被重新装载,在原优先级的
23、基础上进一步请求访问。2.4 MSMC 寄存器访问控制MSMC 的存储映射配置寄存器可以被所有的C66x CorePac及相连的 C66x CorePac从设备,系统主设备访问MSMC 通过 SMS接口。访问正在执行时存储映射基础器不能被更新,例如,要软件更新SESMPAX寄存器只有在没有传输执行的时候才可以。注意:MSMC 存储映射寄存器硬件不能保证传输的正确性当传输的同时配置寄存器被修改了。如果发生了,则传输的结果是不确定的。然而主设备读这些寄存器是没有限制的,这利于限制寄存器的写访问以防止核失控代码的发生或者MSMC 配置状态导致系统主设备不正确的配置的败坏。虽然基于信号量互斥的访问控制
24、有望被核软件实现(以及任何一个主设备都可以编程寄存器),MSMC 提供一个简单的锁机制来保护溢出指针的写。MSMC 寄存器访问控制由锁寄存器来管理,见表2 5 和“MSMC Configuration Write LockRegisters”的描述。对于写访问的控制,MSMC 包含 3 类寄存器:SMSMPAXregistersSES MPAXregistersNon MPAXregisters对于每一类,一个写锁位(MPAX一个写锁位 /PrivID )控制是否写使能。8名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
25、整理 - - - - - - - 第 8 页,共 29 页 - - - - - - - - - CFGLCK 、CFGULCK 和 CFGLCKSTATregisters 是 non MPAXregisters(例外与 3 类的写锁寄存器 ),锁定位WLCK( 置 1 锁定 )、WEN(置 1 解锁 )、WTAT( 读锁的状态 )。SMS_MPAX_LCK 、SMS_MPAX_ULCK 、SMS_MPAX_LCKSTATregisters,管理 16 个锁定位(1 位每个 PrivID) ,包含锁定位WLCK( 置 1 锁定 )、WEN(置 1 解锁 )、WTAT( 读锁的状态 )。SES_M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年多核共享内存控制器 2022 多核 共享 内存 控制器
限制150内