1. 640KB内存墙的历史背景
1990年,个人计算机正处于从16位向32位架构过渡的关键时期。当时主流PC仍运行在实模式(Real Mode)下,受限于Intel 8086处理器的设计,最大只能寻址1MB内存空间。而其中,用户程序可用的常规内存(Conventional Memory)仅有640KB——这就是著名的"640KB内存墙"。
技术细节:在实模式下,CPU通过"段地址:偏移地址"的方式访问内存。由于偏移地址寄存器是16位的(最大65536),而段地址左移4位后与偏移地址相加,理论最大寻址范围为1MB(FFFF:FFFF = 0xFFFF0 + 0xFFFF = 0x10FFEF)。
这个限制源于IBM PC/AT的设计决策:
- 将0xA0000-0xFFFFF的384KB保留给硬件(视频缓冲区、BIOS等)
- 剩余的低端640KB(0x00000-0x9FFFF)留给DOS和应用程序
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. A20地址线的技术突破
2.1 门电路引发的兼容性问题
Intel 80286处理器引入保护模式(Protected Mode)后,理论上可访问16MB内存。但由于早期PC/AT主板上的键盘控制器8042芯片第21根地址线(A20)默认关闭,导致超过1MB的地址会"回卷"到低端内存——这是为了保持与8086的完全兼容。
实际表现是:
- 试图访问0x100000时,实际访问的是0x00000
- 这种回卷行为破坏了保护模式下的线性地址空间连续性
2.2 三种主流解决方案对比
开发者们发明了多种方法来控制A20线:
| 方法 | 原理 | 速度 | 可靠性 |
|---|---|---|---|
| BIOS中断(INT 15h) | 调用BIOS服务开启A20 | 慢 | 高 |
| 键盘控制器法 | 向8042芯片发送特定命令 | 中等 | 中 |
| 快速A20门(Fast A20) | 直接操作92h端口的第1位 | 最快 |
