当前位置:文档之家› DM8168 内存管理

DM8168 内存管理

DM8168的互连与内存映射

DM8168是多处理器系统,每个子系统或处理器都有自己的内存和内存映射的寄存器。为了简化软件开发,使用统一的内存映射,这样从所有总线Master方来看芯片资源具有了一致性。

系统内存划分为4个1GB的quadrant,用于目标地址空间的定位。4个quadrant:Q0、Q1、Q2和Q3总计4-GB 的32位地址空间。(HDVPSS包括一个第33位地址位,增加了4GB 地址范围,这用作虚拟寻址而不是物理内存的寻址),在每个quadrant内部,系统目标以4MB 为边界进行映射(除了EDMA目标,它降低到1MB范围)。

DM8168是使用一种互连技术,将多处理器和子系统连接到一起的。因此我们有必要介绍一下这个互连技术。

所谓互连,就是模块之间实现存取的一种技术,先要理解一些基本概念:

●Initiator(发起者):向互连发起读写请求。典型如:处理器、DMA。

●Target(目标):不同与Initiator,它不向互连发出读写请求,但是它能响应这些请

求。它还可以向系统产生中断和DMA请求。典型如:外设、内存控制器

●Agent(代理):一个模块与互连的连接是通过代理的,它相当于模块与互连之间的

适配器(有时可以配置)。一个Target通过一个Target代理(TA)与互连连接,Initiator

通过Initiator代理(IA)与互连连接。

●Interconnect(互连):应该包含译码、路由、仲裁等逻辑,才能实现连接在其上的

多个Initiator和多个Target之间的互连。

DM8168的互连是基于一种分层架构(L3,L4),如下图。注意箭头并不是表示数据流的方向,而是表示Master/Slave(或者Initiator/Target)关系。

图5-1 互连概貌

图5-2 L4结构

表5-1 L3 Master/Slave互连

(1)X = 互连存在;S = 可裁减的通道。Non-DEMMU可存取的目标(如C674x SDMA)总是直接映射。

表5-2 L4外设连接

(1)X,Port0,Port1 = 连接存在

DM816x的系统框图如下。我们以Cortex-A8和C674x两个子系统为例,来看DM816x 是如何管理内存。

1.C ortex-A8

Cortex-A8的结构框图如下:

从图中我们可以看到:

●Cortex-A8内部有48KB ROM 和64KB RAM。

●Cortex与其它模块互连是通过DMM和L3端口。

?Cortex-A8通过DMM端口(128bit宽)直接存取DDR。

?Cortex-A8通过L3互连端口(64bit)存取芯片的其他模块。

(2)这些存取通过DDR DMM TILER端口。DDR DMM内部分开寻址DDR EMIF和DDR DMM 控制寄存器的地址范围

(3)这些地址路由到与DDR DMM ELLA端口直接相连的Master0端口

(4)DDR EMIF0和DDR EMIF1地址可以连续或BANK交织,取决于DDR DMM配置2.C674x

C674x DSP Megamodule框图如下:

从图中,我们看到:

●EMC(Extend Memory Controller)是一个桥,将Megamodule与芯片的其他部分连接起

来。它包括3个端口:

?配置端口(CFG):这个端口提供对内存映射的寄存器(这些寄存器控制不同的外

设和资源)的存取,但并不支持对CPU和Megamodule内部的内存映射寄存器的

存取。CFG总线总是32bit宽,总是应该使用32bit load/store指令或者IDMA来存

?Master DMA(MDMA):MDAM提供对MegaModule外部资源的存取,传输的发起

者是Megamodule(也就是说这些传输,Megamodule是Master)。MDMA常用来

做为CPU/Cache对L2以外的内存的存取。这些存取可能是以对系统内存的Cache

Line Allocate、Writeback、Non-Cacheable Load和Store形式。

?Slave DMA(SDMA):SDMA用于Megamodule外部的其它Masters对Megamodule

内部资源的存取。这些其它的Master如:DMA控制器、HPI等等,也就是说这些

传输是Megamodule外部Master发起的,而Megamodule在交易中是处于Slave地

位。

?所有的MDMA存取都是通过DEMMU来路由做地址翻译的;CFG总是用于存取连

L4外设。

●还有3个Master端口,用于直接存取HDVICP2 SL2(仅HDVICP2-0和HDVICP2-1)内存。

C6474x DSP通过MDMA端口进行的存取是通过DSP/EDMA内存管理单元(DEMMU)来路由的,DEMMU重新映射物理系统地址。这样做可以保护ARM Cortex A8内存区域避免被C674x代码意外破坏,并允许在用户空间里直接定位buffer而不需要在ARM和DSP之间进行翻译。

另外,EDMA TC0进行的存取可以选择通过DEMMU来路由,这允许DSP使用EDMA 通道0进行传输的时候,仅使用相关Buffer的已知虚拟地址来执行传输。EDMA_TC通过控制模块里的MMU_CFG寄存器来使能/禁止DSP/EDMA MMU。

表2-31C674x内存映射

注2:地址0x0180 0000到0x01BF FFFF保留作为C674x内部CFG寄存器。

注3:地址0x01C0 0000到0x0FFF FFFF映射倒C674x CFG总线。

注4:地址0x1000 0000到0x10FF FFFF映射倒C674x内部地址0x0000 0000 到0x00FF FFFF。注5:这些存取通过DEMMU路由,DEMMU通过页表将这些地址翻译到物理L3地址。

3.L3内存映射

L3高性能互连是基于片上网络(Network-on-Chip:NoC)互连基础架构,NoC使用一个

内部基于包的通讯规程,用作前向(读命令、带数据负荷的写命令)和后向(带数据负荷的读响应、写响应)交易,所有公开的NoC互连接口(对目标和发起者)满足OCP IP2.2参考标准。

表2-26显示了DM8168的L3的内存映射,表中呈现了L3基础架构使用的物理地址,某些处理器(如Cortex A8 ARM、C674x DSP)可以通过内部或外部MMU重新将这些目标重新映射到不同的虚拟地址。没有MMU的处理器和其他总线Master使用这些物理地址存取L3区域,注意并不是所有MASTER都会对L3所有区域进行存取,而仅仅是那些有明确连接的存取,如表5-1显示的那些才可以。在5.2节列出了连接到L4外设端口的外设。任何发起者如果企图存取一个没有连接的目标,L3互连会返回一个地址空洞错误。

4. L4内存映射

4.1 L4标准外设

L4标准外设总线存取标准的外设和IP配置寄存器。内存映射表入表2-27

仅是为了当考虑Cortex A8内存映射的时候作为参考。对于除了Cortex A8外的Master,这些区域是保留的。

4.2 L4高速外设

L4高速外设总线存取L3里的高速外设IP配置寄存器。内存映射表如2-28

相关主题
文本预览
相关文档 最新文档