DRAM Address Mapping/Decoding(内存地址解码)

定义:所谓内存地址解码,也可以称作Dram地址的解码,DRAM Address Mapping(多通道卡槽定位和颗粒定位)

解释:是指从64bit的内存物理地址(比如,0x12345678234)到Dram地址(socket/ctrl/chl/dimm/rank/chip/group/bank/row/col)的映射关系的过程。

KEY: How physical addresses map to rows and banks in DRAM

内存地址解码的过程是一个十分复杂的过程,对于intel平台来说,

这部分MRC代码是BIOS在内存初始化阶段就执行完成的,我们作为UEFI应用开发者

无法知晓这其中的具体实现过程,除非我们有具体某个主板的BIOS源码进行分析。

而且不同的消费端的主板和服务器端的主板,二者的区别是巨大的,不可套用,消费级的主板只有4个卡槽,但是服务器的主板有很多卡槽,比如16个、24个、32个等等,映射复杂度不可同日而语。

就算不考虑服务器主板,只考虑消费级主板的内存映射,

开发人员需要的工作量也是巨量的,因为4个卡槽不同的状态,内存控制器对内存地址的编址是不一样的,比如:

A1 A2插2个8GB的内存条和A1 B1插2个8GB的内存条, 这2中情况的内存地址映射是不同的。

比如A1插8GB的内存条, B1插16GB的内存条,这种不对称插法又是另外的映射方式。

挖掘这个MAPPING的办法分为两种。

第一种:正向开发。

直接调用主板的BIOS的关于内存地址映射的接口API;

不过,这种办法需要开发人员对这个主板的BIOS有一定的基础认知。

而且不同的CPU对应的MAPPING都是不同的。

第二种:逆向开发。

这种办法需要开发人员对DRAM的工作原理、内存控制器的工作原理具有较高的认知,

而且需要巨量的样品数据作为支撑,特别是不良品和SOCKET模具。

你可能感兴趣的:(X86/X64汇编,memTest,BIOS源码,DRAM,TEST,DramAddrMapping,DramAddrDecode,physicalAddress)