首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

計算機組成原理:從 16 位地址總線到 32/64 位寻址空間擴展原理

     編輯:程式設計疑難解答

核心概念澄清

「存儲器地址為四位十六進制」即 16 位地址總線,對應寻址空間:

2^16 = 65,536 個地址單元 = 64 KB

這確實與現代 GB 級內存不符,關鍵在於 地址總線寬度 的發展歷程。

歷代 CPU 地址總線演進

CPU/架構地址總線寬度最大寻址空間代表產品
8086/808820 位1 MB早期 PC/XT
8028624 位16 MBPC/AT
80386 (IA-32)32 位4 GB386/486/Pentium
x86-64 (AMD64)48 位 (當前)256 TBCore/Ryzen 現代 CPU
ARMv8-A (AArch64)48/52 位256 TB / 4 PB手機/服務器芯片

突破物理地址線限制的關鍵技術

1. 分段寻址

物理地址 = 段基址 × 16 + 偏移地址  (8086 實模式)
段寄存器(16位) << 4 + 偏移(16位) = 20位物理地址

早期通過段寄存器擴展 16 位寄存器的寻址能力。

2. 頁式虛擬內存

現代作業系統核心機制:

  • 虛擬地址:進程看到的線性地址空間(32位=4GB,64位=256TB)
  • 頁表映射:MMU 將虛擬頁映射到物理頁框
  • 換頁機制:物理內存不足時交換到磁盤
虛擬地址(32位) → [頁目錄(10位) | 頁表(10位) | 頁內偏移(12位)] → 物理地址

3. 物理地址擴展 (PAE)

32 位系統支持 36 位物理地址(64 GB 物理內存):

  • 頁表項擴展為 64 位
  • 頁目錄指針表 (PDPT) 新增一級
  • 需 CPU、OS、驅動程序共同支持

現代 64 位系統實際寻址

雖然 x86-64 理論支持 64 位虛擬地址(16 EB),但當前實現通常為 48 位虛擬地址(256 TB),物理地址 48-52 位。頁表結構為 4 級:

PML4 (9位) → PDP (9位) → PD (9位) → PT (9位) → Offset (12位) = 48位

總結

  1. 地址總線寬度決定物理寻址上限,從 16→20→24→32→48 位逐步擴展
  2. 虛擬內存技術讓每個進程擁有獨立巨大地址空間,不受物理內存限制
  3. 分頁映射是現代 OS 管理內存的核心,實現了隔離、共享、換頁、權限控制
  4. 「四位十六進制」只是教學簡化模型,實際開發中直接使用指針/引用,由編譯器/OS 處理地址轉換

理解這一演進過程,有助於掌握指針大小、內存模型、系統編程等核心概念。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved