New*_*ils 0 ram memory-management linux-kernel embedded-linux device-tree
以下是DTS文件的摘录.LINUX /拱/的PowerPC /引导/ DTS/[board_name] .dts
memory {
device_type = "memory";
reg = <0x00000000 0x40000000>; // 1GB at 0
};
Run Code Online (Sandbox Code Playgroud)
嵌入式设备有1 GB的内存.
0x40000000 = 1073741824(十进制).
我得到1 GB的唯一方法是当我计算1073741824作为字节.
这意味着1073741824字节= 1GB.
这是否意味着0x00000000指向RAM中的一个字节数据?换句话说,RAM中的每个字节都有一个地址.
为什么会这样?我们读了8位块?为什么不说一句话?
TL; DR:RAM访问不是字节大小的块,即使每个字节在RAM中可独立寻址(有自己的地址).
第一个真正成功的微处理器,以"数字革命"为主流,是8位,因此8位基本数据块的传统一直持续到今天.在具有8位CPU的第一代微处理器中,RAM中的每个字节都被单独读取/写入.
下一代是使用大于8位的内部CPU寄存器开发的.它们通常是8位(16/32/64)的倍数,因为这允许它们从RAM一次读取多个完整字节.任何尝试读取地址X从RAM将导致提取2/4/8个字节(16/32/64位CPU)的即字包含的地址X和只有适当的字节被保留并存储在CPU内部寄存器在RAM按要求.
接下来,随着CPU缓存的出现,RAM开始以缓存行大小的块读取(并写入).它们甚至比寄存器的大小还要大.这将减少由于数据局部性而从RAM读取数据的延迟.
有关详细信息,请查看 Ulrich Drepper 关于CPU和内存的综合文章.
| 归档时间: |
|
| 查看次数: |
1606 次 |
| 最近记录: |