即便从软件角度,抛开地址译码器讨论内存颗粒中指定位置处的地址(DDR中的指定位置的电容)也是没有意义的。晶体管没有绝对地址,就如同地理测量中测定位置前需要确定坐标系一样,同一个位置在不同的坐标系中的地址描述可以是完全不同的。
所以,我们不能指着内存条上的某个芯片问,这颗存储颗粒的地址范围是多少,它和内存控制器的参数以及主控的编址策略有关,比如访问粒度, interleave方式,访问通道数等因素都有关系。在确定这些参数前,讨论一个存储单元的地址是没有意义的,下图用一个例子说明原理。
通过对地址线重新排序,逻辑地址从A2A2A0变为A1A0A2,不改变地址译码器的结构,右侧存储颗粒上会产生完全不同的存储单元的编址,从顺序访问变成了interleave模式,在这两种地址策略下,这些编址都是对的。
无论哪种地址解码方式,寻址都有某种程度的对称性,这是很自然的,三个地址线随便交换,一定在一组置换群中,具有某种对称性。
一种UMA/NUMA映射转换逻辑
总结
通常情况下,在一种硬件体系结构下,一个存储单元只有一个物理地址,但是如果系统设计时兼容了多套寻址方式,则可能存在同一个存储单元存在多个物理地址的情况,将地址类型编码到地址中,硬件会根据编码后的物理地址驱动合适的地址翻译电路寻址到正确的存储单元。