Memory
如果 PCI 設備的記憶體太大以至於 BIOS 無法找到合適的空物理地址區域來分配它,會發生什麼情況?
32 位系統可以擁有高達 4GiB 的物理記憶體。正確的?哦不,只有虛擬地址有 4GB 的限制,因為 MMU 可以在頁碼中添加更多的地址位,所以可以使用更多的物理地址。例如,在 sparc32 架構中,頁表條目中增加了 4 位,因此最多可以使用 16*4GB = 64GB。
在 PCI 系統中,BIOS 為 BAR(基地址寄存器)分配一個偏移量,以便在某些物理地址處看到 PCI 設備後面的記憶體區域。如果 PCI 設備的記憶體太大以至於無法分配給定最大 64GB 的合適的空物理區域怎麼辦?(或者很多 PCI 設備有很多區域,所以總和太大了?)。匯流排的地址空間是否獨立?
好吧,BIOS 可以決定做什麼:要麼只映射設備的一部分,要麼不映射,讓作業系統中的設備驅動程序對其進行排序。
但是您說的是物理地址擴展(簡稱 PAE)。它可以幫助您超越 4 GiB 的限制,但代價是記憶體管理變得更加複雜,您將無法同時查看所有記憶體:每個單獨的程序都可以擁有自己的記憶體映射,呈現不同的64 GiB 物理地址空間的一部分。
如果需要超過 64 GiB,理論上可以進一步擴展 PAE 方案,但到時候確實麻煩多於其價值,因此製造商沒有這樣做。此時使用 64 位系統架構通常更有意義。