Ports
Порт ввода/вывода - соединение с процессором, которое конфигурируется или программируется для обеспечения обмена данными между процессором и внешним устройством. Порт ввода/вывода может быть однонаправленным и двунаправленным.I/O-адреса (адреса портов ввода/вывода), а точнее сами порты нужны всем компонентам компьютера, там они временно хранят свои данные или данные о себе. Практически любое устройство использует порт ввода/вывода, а чаще всего набор этих портов. За каждым таким портом закреплен специальный адрес, работа с которым осуществляется через специальные команды процессора. Обратившись по одним адресам, можно получить информацию об устройстве, а по другим - изменить его параметры. Возможное число адресов портов ввода/вывода - 65536. Доступное же для использования количество портов значительно меньше.
Ну а теперь немного истории!
Интерфейсы шин расширения PC начали свою историю с 8-битной шины ISA. С появлением AT-286 шина была расширена до 16 бит, а значит, расширились возможности адресации. Но область адресов ввода/вывода 0-FFh (8 бит) осталась зарезервирована под устройства системной платы. В PC AT была принята 10-битная адресация ввода/вывода, что давало дополнительно аж 768 адресов. Это было результатом того, что линии адреса A[15:10] устройствами игнорировались, а диапазон адресов устройств шины ISA ограничивался областью 100h-3FFh адресов 8-битных регистров. К тому же на некоторые области этих адресов стали претендовать и системные устройства.
Впоследствии стали применять и 12-битную адресацию (диапазон расширился до FFFh). Но при ее использовании присутствие в системе старых "10-битных" карт могло привести к тому, что эти карты должны были бы "отозваться" на адрес с подходящими ему битами A[9:0] во всей допустимой области 12-битного адреса 4 раза (см. выше опцию "Extended I/O Decode").
Адреса | Размер | Назначение |
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 access only ** Byte access only |