I/O端口寻址和访问控制方式
一、I/O端口和寻址
1、统一编址:把I/O控制器中的端口地址归入存储器寻址地址空间范围内。CPU访问一个端口的操作与访问内存的操作一样。
2、把I/O控制器和控制卡的寻址空间单独作为一个独立的地址空间对待,每个端口有一个I/O地址与之对应,并且用专门的I/O指令来访问端口。
二、I/O端口分配
端口地址范围 | 分配说明 |
---|---|
0x000 – 0x01F | 8237A DMA控制器1 |
0x020 – 0x03F | 8259A 可编程中断控制器1 |
0x040 – 0x05F | 8253/8254A 定时器 |
0x060 – 0x06F | 8042 键盘控制器 |
0x070 – 0x07F | 访问CMOS RAM/实时时钟RTC(Real Time Clock)端口 |
0x080 – 0x09F | DMA页面寄存器访问端口 |
0x0A0 – 0x0BF | 8259A 可编程中断控制器2 |
0x0C0 – 0x0DF | 8237A DMA控制器2 |
0x0F0 – 0x0FF | 协处理器访问端口 |
0x170 – 0x177 | IDE硬盘控制器1 |
0x1F0 – 0x1F7 | IDE硬盘控制器0 |
0x278 – 0x27F | 并行打印机端口2 |
0x2F8 – 0x2FF | 串行控制器2 |
0x378 – 0x37F | 并行打印机端口1 |
0x3B0 – 0x3BF | 单色MDA显示控制器 |
0x3C0 – 0x3CF | 彩色CGA显示控制器 |
0x3D0 – 0x3DF | 彩色EGA/VGA显示控制器 |
0x3F0 – 0x3F7 | 软盘控制器 |
0x3F8 – 0x3FF | 串行控制器1 |
三、接口访问控制
PC机I/O接口数据传输控制方式一般可采用程序循环查询方式、中断处理方式和DAM传输方式。
注:
DMA用于I/O设备与系统内存之间进行批量数据传送,整个操作过程需要使用专门的DMA控制器来进行而无需CPU手抓。由于传输过程中无须软件介入,因此操作效率很高。Linux操作系统中,软盘驱动程序使用中断和DMA方式配合为实现数据的传输工作。