`

Intel 80386 Manual 读书笔记 - A20 地址线问题

阅读更多

A20 地址线问题

1981 年8 月,IBM 公司最初推出的个人计算机IBM PC 使用的CPU 是Intel 8088。在该微机中地址线只有20 根(A0 – A19)。在当时内存RAM 只有几百KB 或不到1MB 时,20根地址线已足够用来寻址这些内存。其所能寻址的最高地址是0xffff:0xffff,也即0×10ffef。对于超出 0×100000(1MB)的寻址地址将默认地环绕到0×0ffef。当IBM公司于1985 年引入AT 机时,使用的是Intel 80286 CPU,具有24 根地址线,最高可寻址16MB,并且有一个与8088完全兼容的实模式运行方式。然而,在寻址值超过1MB 时它却不能象8088那样实现地址寻址的环绕。但是当时已经有一些程序是利用这种地址环绕机制进行工作的。为了实现完全的兼容性,IBM公司发明了使用一 个开关来开启或禁止0×100000地址比特位。由于在当时的8042键盘控制器上恰好有空闲的端口引脚(输出端口P2,引脚P21),于是便使用了该引 脚来作为与门控制这个地址比特位。该信号即被称为A20。如果它为零,则比特20及以上地址都被清除。从而实现了兼容性。

由于在机器启动时,默认条件下,A20地址线是禁止的,所以操作系统必须使用适当的方法来开启它。但是由于各种兼容机所使用的芯片集不同,要做到这一点却是非常的麻烦。因此通常要在几种控制方法中选择。

对A20 信号线进行控制的常用方法是通过设置键盘控制器的端口值。这里的setup.s程序(138-144行)即使用了这种典型的控制方式。对于其它一些兼容微 机还可以使用其它方式来做到对A20线的控制。有些操作系统将A20的开启和禁止作为实模式与保护运行模式之间进行转换的标准过程中的一部分。由于键盘的 控制器速度很慢,因此就不能使用键盘控制器对A20线来进行操作。为此引进了一个A20 快速门选项(Fast Gate A20),它使用I/O 端口0×92 来处理A20信号线,避免了使用慢速的键盘控制器操作方式。对于不含键盘控制器的系统就只能使用0×92端口来控制,但是该端口也有可能被其它兼容微机上 的设备(如显示芯片)所使用,从而造成系统错误的操作。还有一种方式是通过读0xee端口来开启A20 信号线,写该端口则会禁止A20 信号线。

—————————————————————-

以上为转载内容 , 对应代码

enableA20    macro 
                     in       al,92h 
                     or      al,2 
                     out        92h,al 
                     endm 
disableA20   macro 
                     in        al,92h 
                     and       al,0fdh 
                     out        92h,al 
                     endm  

92h,即“1001‘0010“的第二位决定是否打开A20(1=yes   0=no) , 在看过上面转载的文章后 我想这里的92h是怎么来的 也就不言而喻了

—————————————————————-

Intel CPU 32 位保护运行模式

Intel CPU 一般可以在两种模式下运行 , 即实地址模式和保护模式 . 早期的IntelCPU(8088/8086)只能工作在实模式下 , 某一时刻只能运行单个任务 . 对于Intel 80386 以上的芯片则还可以运行在32位保护模式下 .  在保护模式下运行可以支持多任务 ; 支持4G的物理内存 ; 支持虚拟内存(2`46即64TB) ; 支持内存的页式管理和段式管理 ; 支持特权级 .

此处 ,  附上Intel 80386 Programmer’s Reference Manual中的说明 :

The 80386 is an advanced 32-bit microprocessor optimized for multitasking operating systems and designed for applications needing very high performance. The 32-bit registers and data paths support 32-bit addresses and data types. The processor can address up to four gigabytes of physical memory and 64 terabytes (246 bytes) of virtual memory. The on-chip memory-management facilities include address translation registers,advanced multitasking hardware, a protection mechanism, and paged virtual memory. Special debugging registers provide data and code breakpoints even in ROM-based software.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics