作者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/m.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