[問題] 有關於 CPU 與 RAM 定址問題

看板C_and_CPP作者 (gowrite)時間6年前 (2017/09/18 11:19), 編輯推噓0(0013)
留言13則, 5人參與, 最新討論串1/1
因為初學 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

09/18 11:28, , 1F
能定址多少記憶體主要還是跟位址線、架構有關
09/18 11:28, 1F

09/18 12:07, , 2F
現在都馬byte address,就算以前也沒啥CPU做bit-addres
09/18 12:07, 2F

09/18 12:07, , 3F
而32-bit可以定址到4GB就是以byte address而言
09/18 12:07, 3F

09/18 12:08, , 4F
所以你後面想對了 前面想太多 忘掉就好
09/18 12:08, 4F

09/18 15:37, , 5F
響應 Lipraxde君:現時64-bit系統如Linux,只會用上48-bit
09/18 15:37, 5F

09/18 15:38, , 6F
理由係,2^64可以定16777216 TB的地址,有如斯記憶體的電
09/18 15:38, 6F

09/18 15:40, , 7F
腦暫時未普及。不過算法的確如此
09/18 15:40, 7F

09/18 19:23, , 8F
其實32bit的CPU定址線有36條,詳見"PAE"
09/18 19:23, 8F

09/18 21:17, , 9F
樓上你們要說清楚那是x86和x86_64的特有的啊
09/18 21:17, 9F

09/18 21:18, , 10F
話說intel似乎要推支援5層page table的cpu出來了
09/18 21:18, 10F

09/18 21:20, , 11F
有52-bit physical和57-bit virtual address可用
09/18 21:20, 11F

09/18 21:57, , 12F
一時忘了其他家族的32位元處理器XD
09/18 21:57, 12F

09/19 14:27, , 13F
五層page table...我太落伍
09/19 14:27, 13F
文章代碼(AID): #1Plpiaxe (C_and_CPP)