Гук Михаил Юрьевич
Шрифт:
• устройства ввода/вывода, служащие для преобразования информации из внутреннего представления компьютера (биты и байты) в форму, понятную окружающим, и обратно. Сюда относятся дисплеи (устройства отображения, то есть вывода), клавиатура и мышь (устройства ввода), принтеры и сканеры, плоттеры и дигитайзеры, джойстики, акустические системы и микрофоны, телевизоры и видеокамеры, устройства телеуправления и телеметрии. Любопытно, что в этих парах обычно лидируют устройства вывода, появляющиеся в компьютерах раньше соответствующих устройств ввода. Под окружающими подразумевается и человек (и другие биологические объекты), и различные технические устройства (компьютер можно приспособить для управления любым оборудованием, были бы датчики и исполнительные устройства). В какую форму эти устройства преобразуют двоичную информацию – определяется их назначением;
• коммуникационные устройства, служащие для передачи информации между компьютерами и (или) их частями. Сюда относятся модемы (проводные, радио, оптические, инфракрасные…), адаптеры локальных и глобальных сетей. Здесь преобразование формы представления информации нужно только для передачи ее на расстояние.
Главным действием в компьютере является исполнение программного кода центральным процессором, и ЦП должен иметь возможность взаимодействия с ПУ.
Для обращения к периферийным устройствам в процессорах x86, применяемых в PC-совместимых компьютерах, специально выделено пространство ввода/вывода (I/O Space), отдельное от памяти. Размер пространства адресов ввода/вывода 64 Кбайт; в этой области могут располагаться регистры периферийных устройств разрядностью 1, 2 или 4 байт, и для обращения к ним имеется несколько специальных инструкций процессора (IN, OUT, INS и OUTS). Регистры ПУ могут отображаться и в пространстве памяти – областях, свободных от оперативной и постоянной памяти. Заметим, что обособление пространства ввода/вывода используется далеко не во всех архитектурах процессоров. В любом случае разные регистры разных устройств не должны пересекаться по адресам в своих пространствах – в этом состоит требование бесконфликтного распределения ресурсов по адресам.
В плане взаимодействия с остальными компонентами компьютера процессор ничего не умеет, кроме как обращаться к ячейке (читать или писать байт, слово, двойное слово) пространства памяти или пространства ввода/вывода, а также реагировать на аппаратные прерывания. Таким образом, любое периферийное устройство должно представляться процессору набором регистров (ячеек) и, возможно, служить источником прерываний.
Иерархия и организация подключений Компоненты компьютера соединяются друг с другом иерархией средств подключения, наверху которой стоят интерфейсы системного уровня подключения. Эта группа интерфейсов характерна тем, что в их транзакциях фигурируют физические адреса пространства памяти и (если есть) пространства ввода/вывода. Группа связанных между собой интерфейсов системного уровня образует логическую системную шину компьютера. Системную шину образуют следующие физические интерфейсы:
• шина подключения центрального процессора (или нескольких процессоров в сложных системах) – FSB (Front Side Bus, фасадная шина);[1]
• шина подключения контроллеров памяти, оперативной и постоянной. Собственно шина памяти (Memory Bus) системной уже не является, поскольку в ней фигурируют не системные адреса, а адреса физических банков памяти;
• шины ввода/вывода, обеспечивающие связь между центральной частью компьютера и периферийными устройствами.
Типичные представители шин ввода/вывода в IBM PC – шина ISA (отмирающая) и шина PCI (развивающаяся в PCI–X и далее). Через шины ввода/вывода проходят все обращения ЦП к периферии. К шинам ввода/вывода подключаются контроллеры и адаптеры[2] периферийных устройств или их интерфейсов. Часть ПУ совмещена со своими контроллерами (адаптерами), как, например, сетевой адаптер Ethernet, подключенный к шине PCI. Другие же ПУ подключаются к своим контроллерам через промежуточные периферийные интерфейсы, являющиеся нижним уровнем иерархии подключений. Периферийные интерфейсы – самые разнообразные из всех аппаратных интерфейсов. К периферии, подключаемой через промежуточные интерфейсы, относится большинство устройств хранения (дисковые, ленточные), устройств ввода/вывода (дисплеи, клавиатуры, мыши, принтеры, плоттеры), ряд коммуникационных устройств (внешние модемы). Для взаимодействия с ПУ процессор обращается к регистрам контроллера, «представляющего интересы» подключенных к нему устройств.
По назначению периферийные интерфейсы можно разделить на специализированные и универсальные, выделенные и разделяемые:
• специализированные интерфейсы ориентированы на подключение устройств определенного узкого класса, и в них используются сугубо специфические протоколы передачи информации. Примеры – популярнейший интерфейс мониторов VGA, интерфейс накопителя на гибких дисках, традиционные интерфейсы клавиатуры и мыши, IDE/ATA и ряд других;
• универсальные интерфейсы имеют более широкое назначение, их протоколы обеспечивают доставку данных, не привязываясь к специфике передаваемой информации. Примеры – коммуникационные порты (COM), SCSI, USB, FireWire;
• выделенные интерфейсы позволяют подключить к одному порту (точке подключения) адаптера (контроллера) лишь одно устройство; число подключаемых устройств ограничено числом портов. Примеры – COM-порт, LPT-порт в стандартном режиме, интерфейс VGA-монитора, порт AGP, Serial SCSI;
• разделяемые интерфейсы позволяют подключить к одному порту адаптера множество устройств. Варианты физического подключения разнообразны: шина (жесткая, как ISA или PCI; кабельная шина SCSI и IDE/ATA), цепочка (daisy chain) устройств (SCSI, LPT-порт в стандарте IEEE 1284.3), логическая шина на хабах (USB) или встроенных повторителях (IEEE 1394 FireWire).
Параллельные и последовательные интерфейсы Для компьютеров и связанных с ним устройств наиболее распространенной является задача передачи дискретных данных, и, как правило, в значительных количествах (не один бит). Самый распространенный способ представления данных сигналами – двоичный: например, условно высокому (выше порога) уровню напряжения соответствует логическая единица, низкому – логический ноль (возможно и обратное представление). Для того чтобы передавать группу битов, используются два основных подхода к организации интерфейса:
• параллельный интерфейс – для каждого бита передаваемой группы используется своя сигнальная линия (обычно с двоичным представлением), и все биты группы передаются одновременно за один квант времени. Примеры: параллельный порт подключения принтера (LPT-порт, 8 бит), интерфейс ATA/ATAPI (16 бит), SCSI (8 или 16 бит), шина PCI (32 или 64 бита);
• последовательный интерфейс – используется лишь одна сигнальная линия, и биты группы передаются друг за другом по очереди; на каждый из них отводится свой квант времени (битовый интервал). Примеры: последовательный коммуникационный порт (COM-порт), последовательные шины USB и FireWire, PCI Express, интерфейсы локальных и глобальных сетей.