看板 C_and_CPP 關於我們 聯絡資訊
因為初學 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://www.ptt.cc/bbs/C_and_CPP/M.1505704740.A.EE8.html
Lipraxde: 能定址多少記憶體主要還是跟位址線、架構有關 09/18 11:28
MOONRAKER: 現在都馬byte address,就算以前也沒啥CPU做bit-addres 09/18 12:07
MOONRAKER: 而32-bit可以定址到4GB就是以byte address而言 09/18 12:07
MOONRAKER: 所以你後面想對了 前面想太多 忘掉就好 09/18 12:08
jimfan: 響應 Lipraxde君:現時64-bit系統如Linux,只會用上48-bit 09/18 15:37
jimfan: 理由係,2^64可以定16777216 TB的地址,有如斯記憶體的電 09/18 15:38
jimfan: 腦暫時未普及。不過算法的確如此 09/18 15:40
james732: 其實32bit的CPU定址線有36條,詳見"PAE" 09/18 19:23
PkmX: 樓上你們要說清楚那是x86和x86_64的特有的啊 09/18 21:17
PkmX: 話說intel似乎要推支援5層page table的cpu出來了 09/18 21:18
PkmX: 有52-bit physical和57-bit virtual address可用 09/18 21:20
james732: 一時忘了其他家族的32位元處理器XD 09/18 21:57
jimfan: 五層page table...我太落伍 09/19 14:27