维基百科引用了英特尔手册中的这个声明
A20M# 的功能主要由旧操作系统使用,现代操作系统不使用。在新的 Intel 64 处理器上,可能不存在 A20M#。
这是一个现在实际上在手册中存在但含义模糊的短语:
A20M#
实际上是指仅引脚还是整个屏蔽过程?- A20M 事件/中断在许多指令的描述中命名(例如 TXT
GETSEC
或 VMX 指令)。
我知道的信息
A20M# 引脚本身已经消失,它曾经被 DMI 中的 VLW(虚拟遗留线)接口所取代。DMI 协议足够丰富,可以有关于断言各种传统引脚的消息:
PCH 支持 VLW 消息作为向处理器传递以下传统边带接口信号状态的替代方法: • A20M#、INTR、SMI#、INIT#、NMI
该引用来自 PCH 系列 8(Haswell 时代)。
到目前为止,PCH具有A20GATE Pass-Through功能。当PCH被配置为捕获对传统的8042 IO端口(60h、64h)的访问并提供SMI(用于模拟USB键盘/鼠标的PS2),它可以选择让A20线启用序列通过而不被捕获。根据PCH的配置方式,这允许EC(移动设备)或SuperIO芯片(台式机)成为命令序列的目标。
有趣的是,PCH系列8(Haswell时代)数据表报告:
注意:不支持A20M#功能。
在LPC部分(EC / SuperIO连接的部分),这可能仅意味着PCH本身不会模拟A20门,而必须由外部芯片(EC或SuperIO)处理它。
如果是这种情况,PCI必须有一个由外部芯片断言的引脚。数据表没有提到任何信息。
但是,我在某个中国网站上找到了我的上一台Haswell笔记本电脑的原理图,并且原理图显示引脚(实际上是球)AN10(又名TP14)用作A20M输入引脚:
左侧的蓝色盒子标记为LYNX-POINT-DH82LPMS_BGA695。
GATEA20信号的另一端来自EC(如预期):
{{IT8586E/AX}}是联想的一个EC芯片(显然)。因此,除非我对原理图的解释有误,否则在Haswell平台上仍然可以屏蔽A20线。
因此,关于A20M方面,数据手册并不完整。可能Intel的BIOS编写指南已经涵盖了所有内容。
我想知道的
至少在Haswell平台上,A20线路是否可以被禁用?Skylake及其后续版本呢?
我的做法
我编写了一个简单的传统引导程序来检查A20线路是否已启用并尝试将其禁用:
- 如果A20线路已禁用,则测试结束。A20门功能存在于测试平台上。
- 否则,询问BIOS支持的A20门方法,然后请求其禁用A20线路(我相信操作系统开发人员对函数名称的命名,即启用与禁用-什么的事情,因此我希望该调用禁用A20 线路而不是掩码)
- 如果BIOS返回错误,则程序通过KBC、快速A20方法和端口
0eeh
方法禁用A20线路。 - 再次测试A20线路状态。如果仍然启用,请手动禁用(除非已经禁用)并再次测试。
当我在Skylake笔记本电脑上运行此程序时,BIOS返回仅支持快速A20方法,并且没有报错,但A20线路仍处于启用状态。即使手动禁用它,A20线路仍处于启用状态。
我得出结论,Skylake处理器上无法禁用A20线,即它已经不存在了。