定义:所谓内存地址解码,也可以称作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的办法分为3种。
第一种:正向开发。
直接调用主板的BIOS的关于