一、理解:
1、C6678 存在32位逻辑地址和物理地址时间的动态映射机制,所以理论上可以将4G空间,扩展到64G空间;
2、但是,由于核只对8000 0000 到FFFF FFFF地址的2G空间采取 DDR3的总线接口,2G空间重映射16次,所DDR3理论上可以扩展到32G;
3、但是 ,C6678的 DDR3 Memory Controller,只实现了 33-bit address for 8 GB of address space ,所以上限是8G;
二、疑问:
1、sprugv8e-DDR3 UG.pdf 文件中,
P14,33-bit address for 8 GB of address space
P19,表格Table2-3中,可以看出,列地址有11位,行地址16位,块地址3位,片选1位,数据总线是8字节(相当于3位地址),总计是34位地址;
P23, 表格Table2-5中,Logical Address 最高位到32,即地址线33根;
P23, 表格Table2-6中,例化的时候,Logical Address 最高位到33,即地址线34根;(没有算错)
鉴于 8G空间,这个数据应该不会错,
是否可以这么理解,P23, 表格Table2-5中,Logical Address 最高位只到32是对的,超过部分忽略。
表格Table2-6中,计算都没错,只是,地址线bit 33 应该忽略。
这从 P14,8GB address space available over one or two chip selects ,这句话中 似乎也能够得到印证:
如果 一个片选能够达到8G的话,那么2个片选,应该到达16G。
合理的解释,就是 2个片选的时候,行地址(Row)16位变为15位。
2、 暂按照 最大8G DDR3,继续探讨
DDR3的逻辑空间(MPAX的输入)是0x8000 0000 ~ 0xFFFF FFFF,2G;
扩展到8G空间物理空间(MPAX的输出)是1000 : 0x00000000 ~ 1001: 0xFFFF FFFF,(为了便于标书,:前是二进制,之后是十六进制)
MPAX的输出,应该送入 DDR3 Memory Controller,(sprugv8e)
DDR3 Memory Controller,接受33位地址,是否应该就是 32位地址,加上 二进制部分中红色的那一位地址?
如果是这样的话,那么,C6678 MPAX 把 0x8000 0000 ~ 0xFFFF FFFF 映射到
1000: 0x00000000 开始的2G 和
1010: 0x00000000 开始的2G ,红色部分相同,应该就是对应一个的外接DDR3存储器,这么理解对吗?
3、
扩展到8G空间物理空间(MPAX的输出)是8: 00000000 ~ 9: FFFF FFFF,是否必须这样?在哪个文档中有描述,谢谢!
hongkun ma:
等答案,谢谢!
hongkun ma:
更正一下:
原文:2、但是,由于核只对8000 0000 到FFFF FFFF地址的2G空间采取 DDR3的总线接口,2G空间重映射16次,所DDR3理论上可以扩展到32G; 描述不对
应该是,8000 0000 到FFFF FFFF地址的2G空间采取 DDR3的总线接口,但是,可以通过MPAX 32次 动态重新映射到64G空间上。
原文:扩展到8G空间物理空间(MPAX的输出)是8: 00000000 ~ 9: FFFF FFFF,是否必须这样?在哪个文档中有描述
应该是的,在sprugw0c-C66x DSP CorePac User Guide中P 141 有 这样的描述:
MPAX上电后把 8000 0000-FFFF FFFF映射到 8:0000 0000-8:7FFF FFFF,This corresponds to the first 2GB of address space。
所以,8G就是 8: 00000000 ~ 9: FFFF FFFF。
DDR3接口输入的33位地址线,应该就是对应 MPAX输出36位物理地址的 bit32-bit0,高3位地址线忽略。
也就是说C6678的MPAX把8000 0000-FFFF FFFF映射到
8:0000 0000-8:7FFF FFFF和映射到
0:0000 0000–0:7FFF FFFF、
2:0000 0000–2:7FFF FFFF、
4:0000 0000–4:7FFF FFFF、
6:0000 0000–6:7FFF FFFF、
A:0000 0000–A:7FFF FFFF、
C:0000 0000–C:7FFF FFFF、
E:0000 0000–E:7FFF FFFF实际效果是一样的?
即使MPAX 把 8000 0000-FFFF FFFF 映射到 0:0000 0000–0:7FFF FFFF ,
也 和系统中 把 0000 0000-7FFF FFFF 映射到 0:0000 0000–0:7FFF FFFF ,不冲突。
因为,前者的 0:0000 0000–0:7FFF FFFF 是送到 DDR3接口控制器,去操作外部DDR3访问方式操作的存储器。
而后者,则不会通过 DDR3接口去操作。
或者这么理解吧:地址通过什么接口(DDR3?还是EMIF16?)去操作外部器件,是由32位的逻辑地址确定的,而不是MPAX转换后的36物理地址确定,是这样吗?
hongkun ma:
回复 hongkun ma:
这些疑问,谁能够给解答一下,谢谢!