作者gowrite (gowrite)
看板C_and_CPP
标题[问题] 有关於 CPU 与 RAM 定址问题
时间Mon Sep 18 11:18:57 2017
因为初学 C 语言,另外自学相关 作业系统、计算机组织的课程
学习的教材就是各校的开放式课程、讲义、网路资料这样
有些地方看完不太确定,身边又没人可以问 QQ
所以想来问一下版友一些基础问题
就是有关 CPU 32-bit & RAM 定址问题
之前有看到说 32 bit CPU 只能够定址到 4GB的记忆体
1.原本的思考
所以我就做了一下算数
1 byte 1 KiB 1 MiB 1 GiB
2^32 bits x ---------- x ---------- x ---------- x ---------- == 0.5
8 bits 1024 bytes 1024 KiB 1024 MiB
QQ 怎麽不是 4 GB ...... 後来想了一下
2.後来的思考
CPU 的 32 bits 跟 记忆体容量没关系,而是指可以定址的数量
那每个记忆体位址的空间是 1 byte,
可以定址到一个记忆体位址,就等於可以存取 1 byte 的资料
所以 2^32 的定址量,就等於可以存取 2^32 bytes 的资料量
改一下算式,就变成
1 KiB 1 MiB 1 GiB
2^32 bytes x ---------- x ---------- x ---------- == 4 GiB
1024 bytes 1024 KiB 1024 MiB
请问 32-bit CPU 架构只能够拿到 4 GB 记忆体的说法,是这个意思吗?
QQ
如果有错或那里认知错误的话,
再麻烦各位解惑了。
谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.54.122
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1505704740.A.EE8.html
1F:→ Lipraxde: 能定址多少记忆体主要还是跟位址线、架构有关 09/18 11:28
2F:→ MOONRAKER: 现在都马byte address,就算以前也没啥CPU做bit-addres 09/18 12:07
3F:→ MOONRAKER: 而32-bit可以定址到4GB就是以byte address而言 09/18 12:07
4F:→ MOONRAKER: 所以你後面想对了 前面想太多 忘掉就好 09/18 12:08
5F:→ jimfan: 响应 Lipraxde君:现时64-bit系统如Linux,只会用上48-bit 09/18 15:37
6F:→ jimfan: 理由系,2^64可以定16777216 TB的地址,有如斯记忆体的电 09/18 15:38
7F:→ jimfan: 脑暂时未普及。不过算法的确如此 09/18 15:40
8F:→ james732: 其实32bit的CPU定址线有36条,详见"PAE" 09/18 19:23
9F:→ PkmX: 楼上你们要说清楚那是x86和x86_64的特有的啊 09/18 21:17
10F:→ PkmX: 话说intel似乎要推支援5层page table的cpu出来了 09/18 21:18
11F:→ PkmX: 有52-bit physical和57-bit virtual address可用 09/18 21:20
12F:→ james732: 一时忘了其他家族的32位元处理器XD 09/18 21:57
13F:→ jimfan: 五层page table...我太落伍 09/19 14:27