![BIOS 如何決定可用的 RAM 數量?](https://rvso.com/image/1466423/BIOS%20%E5%A6%82%E4%BD%95%E6%B1%BA%E5%AE%9A%E5%8F%AF%E7%94%A8%E7%9A%84%20RAM%20%E6%95%B8%E9%87%8F%EF%BC%9F.png)
如果 BIOS 是在實模式下運行的 16 位元程序,並且在該模式下只能尋址 1MB,那麼 BIOS 如何確定可用 RAM 的大小,例如 1 GB?
答案1
BIOS 是一個運行在實模式下的 16 位元程序,在該模式下只能尋址 1MB。
這是不正確的。
16 位元實模式不會將處理器限制為 1MB 記憶體。
雖然 x86 處理器確實以實模式啟動,並且預設為 16 位元 8086 指令集,但 80286 指令集中還有擴充。如果為 8086 指令新增位元組 0x67 前綴,則該指令將允許存取 32 位元暫存器,該暫存器可以存取 2 32位元組或 4GiB 記憶體。
如果您使用的是 64 位元處理器,則該處理器可以使用 PAE(實體位址擴展),這使處理器能夠存取 2 52位元組內存,這比任何現代主機板上物理安裝的內存都要多。
BIOS 如何決定可用 RAM 的大小,例如 1 GB?
它使用記憶體控制器資料表中記錄的方法(北橋)。
大多數 BIOS 無法使用任何 RAM,直到檢測到安裝的 RAM 類型,然後檢測每個記憶體模組的大小,然後配置晶片組以使用檢測到的 RAM。
所有這些都取決於晶片組特定的方法,並且通常記錄在記憶體控制器(北橋)的資料表中。
在此過程中,RAM 無法用於運行程式。 BIOS 最初是從 ROM 運行的,因此它可以使用 RAM 晶片玩必要的遊戲。但從任何其他程式內部做到這一點是完全不可能的。