《2022年多核共享内存控制器 .pdf》由会员分享,可在线阅读,更多相关《2022年多核共享内存控制器 .pdf(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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
26、PAX_LCK、SES_MPAX_ULCK、SES_MPAX_LCKSTATregisters,管理 16 个锁定位( 1位每个 PrivID) ,包含锁定位WLCK( 置 1 锁定 )、WEN(置 1 解锁 )、WTAT( 读锁的状态 )。所有的 LCK和 ULCKregisters 只有当写数据的高16bits 跟关键字段MGCID 的固定值相匹配时才可以被修改,其他值高16bits 写数据不能修改WLCK/WEN 位域。对于每一类,步骤和顺序如下:锁定,写MGCID_WLCK15:0到 LCK register(例如,写2CD10440 锁定 PrivIDs7 到 11的 SMSMPAX
27、registers) 。对于 non MPAXregisters,写 2CD00001 到 CFGLCK register。则接下下来写这类寄存器会产生一个保护错误,直到被解锁。解锁,写MGCID_WEN15:0到 ULCKregister(例如,写2CD10440 解锁 PrivIDs7 11 的SMSMPAXregisters) ,对于 non MPAXregisters,写 2CD00001 到 CFGULCK register。接下来写这类寄存器会产生一个保护错误,直到锁定。注意:这一简单的写保护机制只能防止意外的修改,建议采用软件信号量的方法确保修改 MSMC lock regist
28、ers 的专一性。2.5 错误检测和矫正支持MSMC 具有硬件的错误检测和纠正,保护MSMC 存储内容的正确性,防止瞬时的(软)错误的发生。提供的保护级别,每个核使用的方案都是相同的(1 位比特纠正, 2 位错误检测,超过 256 位基准校验码) 。2.5.1 奇偶产生与校验图 2 4“Error Detection and Correction”描述每个硬件MSMC bank 支持奇偶的产生、存储、检验和矫正。每个MSMC SRAM bank 奇偶代码的产生被存储到相应的奇偶RAM。奇偶校验 RAM 也存储奇偶校验位置允许单独的检测瞬时的错误。9名师资料总结 - - -精品资料欢迎下载 -
29、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 29 页 - - - - - - - - - 2.5.2 EDC操作对于 MSMC EDC方案,奇偶产生和跟踪每个256 bit 基准位,对应于从接口访问的RAM的位置和数据段。奇偶RAM 可能会无效当写到bank 的数据少于256bits 的时候(例如,当L2 cahceoff/frozen/bypassed MSMC SRAM域就会产生一个写丢失到L1Dcache) 。在这种情况下,奇偶 RAM 相应的有效位被重置。当行通过图4 4 的传输路径传输时,每一行的奇偶代
30、码被重新核算。EDC硬件的组成寄存器列于表2 6,描述见“ EDCRegisters”3 5 页。2.5.2.1 纠错模式10名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 29 页 - - - - - - - - - 错误检测增加从接口数据读取访问的迟延。ECM(Error Correction Mode) 位于 SMEDCC控制寄存器中, 复位的时候ECM是 0, 选择从接口访问不进行错误检测(图 2 4 “Error Detectionand Correction
31、 ”直接返回路径) ,默认为最快的读取配置。设置ECM=1使能错误检测;然而接下来的任何写ECM位都会被忽略(即一旦使能,错误检测将保持到MSMC 重新复位)。2.5.2.1.1 软错误检测对于数据正在MSMC 存储块中传输,EDC硬件产生奇偶校验错误和日志信息放到EDC寄存器中。 该操作总结与表2 7 中,更多的关于中断的细节见“MSMC Interrupt Control ”2 19页。2.5.3 EDC错误报告当检测到一个错误发生,EDC硬件在 EDCerror reporting registers 中报告错误详细信息如下:对于可纠正的错误(1 位) :低 32 位已损坏的地址存放到S
32、MCERRAR register, 高 4 位放在 SMCERRXR 寄存器的SEEADDR 域。综合矫正位置位于SMCERRXR 的 ESYN域中。PrivID保存到 SMCERRXR 的 SEPID域,如果请求来自SMS或 SES ,则 SER被置位。如果 SMIESTAT 使能,则产生MSMC_dedc_cerror 中断。对于非可纠正的错误(2 位) : 低 32 位已损坏的地址存放到SMCERRAR register, 高 4 位放在 SMCERRXR 寄存器的SEEADDR 域。PrivID保存到 SMCERRXR 的 SEPID域,如果请求来自SMS或 SES ,则 SER被置位
33、。如果 SMIESTAT 使能,则产生MSMC_dedc_cerror 中断。在不寻常的情况下检测到多个bank 错误,在同一个访问周期中,硬件只选择记录一个 bank 的相关信息,优先顺序为:bank0bank1bank2bank3 。写完之后,错误记录寄存器SMCERRAR/SMNCERRAR 和 SMCERRXR/SMNCERRXR 存储内容直到下一次错误记录被重新启用,通过写SMIRC 清除相应的中断状态(见“MSMCInterrupt Control”2 19 页) 。2.5.4 后台奇偶刷新奇偶校验作为跟踪32bits 宽的 banks,写小于 32bytes 时行奇偶校验将是无效
34、的。MSMC11名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 29 页 - - - - - - - - - 拥有后台的错误检验硬件,叫做刷新引擎,定期的刷新奇偶校验位。MSMC 刷新引擎是一个状态机,周期性刷新MSMC 的每个存储bank,读和检验数据,重新计算校验位,并保存数据和校验信息。每个这样的 “刷新周期” 有一系列的读 改 写“刷新”到存储的banks。2.5.4.1 刷新率刷新引擎的每个刷新周期开始和延迟使用SMEDCC寄存器进行设定。位域 REFDEL
35、指定刷新之间有多少个MSMC 时钟周期。为了防止刷新引擎的突发刷新对性能的影响,REFDEL 应该分频为1024。当 REFDEL 的分频是使能的,则 0 倍被当作是1 倍。当分频不使能, 则 REFDEL=0 当作0 倍,所以两次刷新之间没有延迟。复位后, 默认分频是使能打开的,奇偶校验RAM 也进行了初始化,但 SMEDCC中 SEN位可能是失效的。刷新操作是不需要启动的,除了复位序列操作的核查外,见“Parity RAMInitialization at Reset”2 17 页。2.5.4.2 刷新错误日志和信息统计的收集MSMC 刷新引擎可以记录错误和搜集刷洗错误的统计信息:如果刷新
36、引擎检测到某个位置已经被修正,它会记录地址到SMCEA寄存器,记录校验值(识别的数据错误位)到SMCEA的 ESYN域中,并递增SMSECC 的 SCEC (刷新矫正错误计数器)域。同时产生MSMC_scrub_cerror 中断(如果SMIESTAT 已使能)表示刷新周期中发生软错误检测并矫正(1 位) 。如果刷新引擎检测到2 位的错误没纠正,它会记录地址到SMNCEA 寄存器并递增SMSECC 中的 SNCEC (刷新非矫正错误计数器)。同时产生MSMC_scrub_nc_error 中断(如果SMIESTAT 已使能)表示刷新周期中发生非矫正的软错误检测。一旦写入, 错误日志寄存器SMS
37、ECC 和 SMNCEA存储内容直到下一次的错误记录重新被使能,这些寄存器通过写SMIRC寄存器(见“ MSMC Interrupt Control”2 19 页)来清除相关中断状态。 SMCEA和 SMNCEA都是饱和计数器分别计数纠正和非纠正的错误,SMCEA和 SMNCEA的计数使能也是分别独立的。每隔一段时间, 软件可读取所收集数据来分析持久性的软错误。读饱和错误计数器的错误计数来检查错误发生的频率。如果错误率高, 则初始化更高的刷新周期以降低不可修复的2 位错误的概率;如果错误率低,减少刷新频率可以降低功耗和降低干扰存储器的访问。2.5.5 奇偶校验RAM 复位的初始化复位时 MSM
38、C EDC硬件使所有的奇偶校验RAM 都失效,在此初始化周期,从设备的访问和刷新引擎不会被拖延,但是不进行错误矫正和检测:可以进行内存读访问但不进行核查,例如,在此期间不进行内存位置的保护。这些初始化的访问与预分频失效一起完成。因此,没有虚假事件产生直到奇偶校验RAM 完成初始化。初始化的末尾,默认的预分频延迟是1024。在 SMEDCC的 PRR( 奇偶校验RAM 的准备, Parity RAM Ready)位表示在此过程中的状态,一旦奇偶校验RAM 准备好用于EDC和刷新操作,则PRR被置 1。PRR为 0 在初始化的12名师资料总结 - - -精品资料欢迎下载 - - - - - - -
39、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 29 页 - - - - - - - - - 过程中。复位后第一次读访问MSMC RAM 的时候,软件必须检查该位。在此期间写访问一个32byte 会产生相应的奇偶校验值到奇偶校验RAM 中。当同一周期写访问和初始化写奇偶校验RAM 同时发生,则前者优先。2.6 MSMC 中断控制MSMC 模块产生如下的中断,见特定器件数据手册的详细介绍这些中断在芯片上的映射。MSMC 提供一个中断状态设置和使能寄存器来控制MSMC 模块范围内的中断的产生。MSMC 中断操作的控制寄存器如表2 8,描述见
40、“ MSMC Interrupt Control registers”3 21页。SMIRSTAT寄存器为没个中断线存储中断状态数据,如果相应的中断发生一个位域会被置位。当硬件事件发生(硬件中断)或者软件写相应位到SMIRSTAT 寄存器中(软件中断的仿真事件),则会产生中断脉冲并记录到SMIRSTAT 寄存器中。 无论中断是怎么产生的,都是通过写相应位到SMIRC寄存器来清除。注意:内存保护故障中断事件(memory protection fault interruptevent)对每个PrivID记录在 SMIRSTAR , 相应地址和主设备信息记录到SMPFAR和 SMPFXR寄存器中(
41、见“MemoryProtection Fault Reporting Registers”3 14 页) 。软件必须在清除SMIRSTAT 的 PrivID 位之前先清除 SMPFAR和 SMPFXR ,以便事件的状态和主设备信息保持同步,硬件不会自行按此顺序执行。SMIESTAT寄存器为每个中断线存储中断使能的状态,如果相应中断使能则一个位域被置位。可以通过写SMIESTAT 寄存器来中断使能和通过写SMIEC寄存器来清除。对于中断信号和状态的捕获遵循以下规则:对于给定的中断线,一旦中断信号到来,它的状态立即被设置,需要通过主机来清除以免下一个中断信号的到来。即使SMIESTAT 未使能,中
42、断线的状态也会被设置。因此,建议使用软件清除中断状态当使能它的时候,可以通过分别写到SMIESTAT 和 SMIRC寄存器来自动完成。因为有 3 个源可以修改SMIRSTAT 的位,所以有以下优先规则:硬件中断优先于软件中断如果它们同时到来。这是针对不指定的使用模式,如通过硬件中断来启动一个真正的硬件事件,或者通过软件触发方式来模拟一个相同的事件。 写事件到 SMIRSTAT 寄存器优先于清除SMIRC寄存器的事件。这种情况下中断脉冲就13名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
43、第 13 页,共 29 页 - - - - - - - - - 会使相应事件被设置。2.7 复位的注意事项所有设备复位时MSMC 模块复位。复位时,按以下顺序进行:所有的 MSMC 配置寄存器复位初始化为其默认值。MSMC SRAM相关的奇偶校验RAM 无效,描述见“Parity RAM Initialization at Reset”2 17 页。MSMC 管道复位到一个空闲的状态终止任何外部访问。2.8 内存映射对于内存映射的细节,见相关的KeyStone 设备架构的数据手册。14名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
44、- 名师精心整理 - - - - - - - 第 14 页,共 29 页 - - - - - - - - - 3.1 MSMC 内存映射寄存器表 3 1 列出了 MSMC 内存映射的寄存器,这些寄存器的存储地址见特定器件数据手册。其他偏移地址的寄存器没有列出是那些保留段或内容不能被修改的。15名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 29 页 - - - - - - - - - 3.2 外设标识寄存器(PID)外设标识寄存器(PID)唯一的标识MSMC 及其版本。
45、PID见图 3 1,相关描述于表3 2.3.3 EDC寄存器3.3.1EDC的操作是由SMEDCC控制的。 SMEDCC见图 3 2 和表 3 3。MSMC SRAMEDC控制寄存器(SMEDCC )16名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 29 页 - - - - - - - - - 3.3.2 MSMC SRAM 可修正 EDC错误地址寄存器(SMCERRAR )检测到一位可修正错误,EDC 硬件报告错误细节到可修正EDC 错误报告寄存器。SMCERRAR
46、 见图 3 3 和表 3 4。3.3.3 MSMC SRAM 可修正 EDC扩展错误寄存器(SMCERRXR )检测到一位可修正错误,EDC 硬件报告错误细节到可修正EDC 错误报告寄存器。SMCERRXR 见图 3 4 和表 3 5。17名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 29 页 - - - - - - - - - 3.3.4 MSMC SRAM 非可修正 EDC错误地址寄存器(SMNCERRAR )检测到 2 位非可修正错误,EDC硬件报告错误细节到非
47、可修正EDC错误报告寄存器。SMNCERRAR 见图 3 5 和表 3 6。3.3.5 MSMC SRAM 非可修正 EDC扩展错误寄存器(SMNCERRXR )检测到 2 位非可修正错误,EDC硬件报告错误细节到非可修正EDC错误报告寄存器。SMNCERRXR 见图 3 6 和表 3 7。3.3.6 MSMC 刷新错误修正地址寄存器(SMCEA )18名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 29 页 - - - - - - - - - 检测到一位可修正错误,刷
48、新引擎报告地址到SMCEA寄存器。SMCEA见图 3 7 和表 3 8。3.3.7 MSMC 刷新非可修正地址寄存器(SMCEA )检测到 2 位非可修正错误,刷新引擎报告地址到SMNCEA寄存器。SMNCEA见图 3 8 和表 3 9。3.3.8 MSMC 刷新错误计数寄存器(SMSECC )检测到 1 位可修正错误,刷新引擎递增SCEC (Scrub Correctable Error Counter,刷新可修正错误计数器) ;检测到 2 位非可修正错误,刷新引擎递增SNCEC (Scrub Non CorrectableError Counter,刷新非可修正错误计数器)。这两个计数域都
49、位于SMSECC 中。3.4 带宽管理控制寄存器19名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 29 页 - - - - - - - - - 3.4.1 C66xCorePacSlavePorts 的等待范围寄存器(SBNDCn )3.4.2 SMSPorts 的等待范围寄存器(SBNDM)3.4.3 SESPorts 的等待范围寄存器(SBNDE )3.5 MPAX 段寄存器3.5.1 SMS_MPAXHn20名师资料总结 - - -精品资料欢迎下载 - - -
50、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 29 页 - - - - - - - - - 3.5.2 SMS_MPAXLn3.5.3 SES_MPAXHn21名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 29 页 - - - - - - - - - 3.5.4 SES_MPAXLn3.6 内存保护故障报告寄存器3.6.1 MSMC 内存保护故障地址寄存器(SMPFAR )22名师资料总结 -