Порты ввода-вывода: распределение адресов и их назначение
Порты ввода-вывода (I/O) играют ключевую роль в обеспечении взаимодействия между центральным процессором и периферийными устройствами компьютера, такими как клавиатура, мышь, жесткие диски, сетевые адаптеры и другие компоненты. Каждое устройство взаимодействует с системой через определенные порты, которым присваиваются уникальные адреса в адресном пространстве ввода-вывода. Эти адреса позволяют процессору идентифицировать и обмениваться данными с конкретными устройствами, обеспечивая их корректную работу.
BIOS (Basic Input/Output System) отвечает за начальную инициализацию оборудования при запуске компьютера. Одной из его функций является назначение адресов портов ввода-вывода для различных устройств. Правильное распределение этих адресов критически важно для предотвращения конфликтов между устройствами, которые могут возникнуть, если два устройства пытаются использовать один и тот же адрес. Такие конфликты могут привести к нестабильной работе системы или даже к ее отказу.
Понимание структуры и назначения адресов портов ввода-вывода позволяет эффективно диагностировать и устранять проблемы, связанные с оборудованием. Например, если известно, что определенное устройство использует конкретный диапазон адресов, можно быстро определить источник проблемы при возникновении конфликта. Кроме того, это знание помогает при настройке системы, особенно при установке новых устройств или при модернизации существующих компонентов.
Ниже представлена таблица, содержащая информацию о стандартных адресах портов ввода-вывода, их размерах и назначении. Эта информация может быть полезна для системных администраторов, инженеров и энтузиастов, занимающихся настройкой и обслуживанием компьютерных систем.
адреса | размер | назначение |
0000 - 000F | 16 bytes | PIIX4 - DMA 1 |
0020 - 0021 | 2 bytes | PIIX4 - interrupt controller 1 |
002E - 002F | 2 bytes | Super I/O controller configuration registers |
0040 - 0043 | 4 bytes | PIIX4 - Counter/Timer 1 |
0048 - 004B | 4 bytes | PIIX4 - Counter/Timer 2 |
0060 | 1 byte | Keyboard Controller Byte - Reset IRQ |
0061 | 1 byte | PIIX4 - NMI, Speaker Control |
0064 | 1 byte | Keyboard controller, CMD/STAT Byte |
0070 | bit 7, 1 bit | PIIX4 - enable NMI |
0070 | bits 0-6, 7 bits | PIIX4 - real time clock, address |
0071 | 1 byte | PIIX4 - real time clock, data |
0078 | 1 byte | Reserved - system board configuration |
0079 | 1 byte | Reserved - system board configuration |
0080 - 008F | 16 bytes | PIIX4 - DMA page registers |
00A0 - 00A1 | 2 bytes | PIIX4 - interrupt controller 2 |
00B2 - 00B3 | 2 bytes | APM control |
00C0 - 00DE | 31 bytes | PIIX4 - DMA 2 |
00F0 | 1 byte | Reset numeric error |
0170 - 0177 | 8 bytes | Secondary IDE channel |
01F0 - 01F7 | 8 bytes | Primary IDE channel |
0200 - 0207 | 8 bytes | Audio/game port |
0220 - 022F | 16 bytes | Audio (Sound Blaster compatible) |
0240 - 024F | 16 bytes | Audio (Sound Blaster compatible) |
0278 - 027F | 8 bytes | LPT2 |
0290 - 0297 | 8 bytes | Hardware monitor |
02E8 - 02EF | 8 bytes | COM4/Video (8514A) |
02F8 - 02FF | 8 bytes | COM2 |
0300 - 0301 | 2 bytes | MPU-401 (MIDI) |
0330 - 0331 | 2 bytes | MPU-401 (MIDI) |
0332 - 0333 | 2 bytes | MPU-401 (MIDI) |
0334 - 0335 | 2 bytes | MPU-401 (MIDI) |
0376 | 1 byte | Secondary IDE channel command port |
0377 | 1 byte | Floppy channel 2 command |
0377 | bit 7, 1 bit | Floppy disk change, channel 2 |
0377 | bits 0-6, 7 bits | Secondary IDE channel status port |
0378 - 037F | 8 bytes | LPT1 |
0388 - 038D | 6 bytes | AdLib (FM synthesizer) |
03B4 - 03B5 | 2 bytes | Video (VGA) |
03BA | 1 byte | Video (VGA) |
03BC - 03BF | 4 bytes | LPT3 |
03C0 - 03CA | 11 bytes | Video (VGA) |
03CC | 1 byte | Video (VGA) |
03CE - 03CF | 2 bytes | Video (VGA) |
03D4 - 03D5 | 2 bytes | Video (VGA) |
03DA | 1 byte | Video (VGA) |
03E8 - 03EF | 8 bytes | COM3 |
03F0 - 03F5 | 6 bytes | Floppy Channel 1 |
03F6 | 1 byte | Primary IDE channel command port |
03F7 (Write) | 1 byte | Floppy channel 1 command |
03F7 | bit 7, 1 bit | Floppy disk change channel 1 |
03F7 | bits 0-6, 7 bits | Primary IDE channel status port |
03F8 - 03FF | 8 bytes | COM1 |
04D0 - 04D1 | 2 bytes | Edge/level triggered PIC |
0530 - 0537 | 8 bytes | Windows Sound System |
0604 - 060B | 8 bytes | Windows Sound System |
LPTn + 400h | 8 bytes | ECP port, LPTn base address + 400h |
0CF8 - 0CFB (*) | 4 bytes | PCI configuration address register |
0CF9 (**) | 1 byte | Turbo and reset control register |
0CFC - 0CFF | 4 bytes | PCI configuration data register |
0E80 - 0E87 | 8 bytes | Windows Sound System |
0F40 - 0F47 | 8 bytes | Windows Sound System |
0FF0 - 0FF7 | 8 bytes | CS4236B audio control |
FF00 - FF07 | 8 bytes | IDE bus master register |
FFA0 - FFA7 | 8 bytes | Primary bus master IDE registers |
FFA8 - FFAF | 8 bytes | Secondary bus master IDE registers |
007C | bits 4-5, 2 bits | Chassis fan RPM sense selection |
* Только доступ через DWORD
** Только доступ через Byte