Реклама:

Шины PCI и PCI Express очень хорошо подходят для соединения высокоскоростных периферийных устройств, но использовать интерфейс PCI для низкоскоростных устройств ввода-вывода (например, мыши и клавиатуры) было бы слишком дорого. Изначально каждое стандартное устройство ввода-вывода соединялось с компьютером особым образом, при этом для добавления новых устройств использовались свободные ISA- и PCI-слоты. К сожалению, такая схема имеет некоторые недостатки.

Например, каждое новое устройство ввода-вывода часто оснащается собственной платой ISA или PCI. Пользователь при этом должен сам установить переключатели и перемычки на плате и удостовериться, что настроенная плата не конфликтует с другими платами. Затем пользователь должен открыть системный блок, аккуратно вставить плату, закрыть системный блок и включить компьютер. Для многих этот процесс очень сложен и часто приводит к ошибкам. Кроме того, количество ISA- и PCI-слотов очень мало (обычно два или три). Автоматически конфигурируемые (РпР) платы исключают необходимость установки переключателей, но пользователь все равно должен открывать компьютер и вставлять туда плату. К тому же количество слотов шины ограничено.

В 1993 году представители семи компаний (Compaq, DEC, IBM, Intel, Microsoft, NEC и Nothern Telecom) собрались вместе, чтобы разработать шину, оптимально подходящую для подсоединения низкоскоростных устройств. Потом к ним примкнули сотни других компаний. Результатом их работы стала шина USB (Universal Serial Bus - универсальная последовательная шина), которая сейчас широко используется в персональных компьютерах [10, 201].

Некоторые требования, изначально составившие основу проекта:

+ пользователи не должны устанавливать переключатели и перемычки на платах и устройствах;

+ пользователи не должны открывать компьютер, чтобы установить новые устройства ввода-вывода;

+ должен существовать только один тип кабеля, подходящий для соединения всех устройств;

+ устройства ввода-вывода должны получать питание через кабель;

+ должна быть возможность подсоединения к одному компьютеру до 127 устройств;

+ система должна поддерживать устройства реального времени (например, звуковые устройства, телефон);

+ должна быть возможность устанавливать устройства во время работы компьютера;

+ должна отсутствовать необходимость перезагружать компьютер после установки нового устройства;

+ производство новой шины и устройств ввода-вывода для нее не должно требовать больших затрат.

Шина USB удовлетворяет всем этим условиям. Она разработана для низкоскоростных устройств (клавиатур, мышей, фотоаппаратов, сканеров, цифровых телефонов и т. д.). Общая пропускная способность первой версии шины (USB 1.0) составляет 1,5 Мбайт/с. Версия 1.1 работает на скорости 12 Мбайт/с, что вполне достаточно для принтеров, цифровых камер и многих других устройств. Предел был выбран для того, чтобы снизить стоимость шины.

Шина USB состоит из корневого хаба (root hub), который вставляется в разъем главной шины (см. рис. 3.49). Этот корневой хаб (часто называемый корневым концентратором) содержит разъемы для кабелей, которые могут подсоединяться к устройствам ввода-вывода или к дополнительным хабам, чтобы увеличить количество разъемов. Таким образом, топология шины USB представляет собой дерево с корнем в корневом хабе, который находится внутри компьютера. Коннекторы кабеля со стороны устройства отличаются от коннекторов со стороны хаба, чтобы пользователь случайно не подсоединил кабель другой стороной.

Кабель состоит из четырех проводов: два из них предназначены для передачи данных, один - для питания (+5 В) и один - для земли. Система передает 0 изменением напряжения, а 1 - отсутствием изменения напряжения, поэтому длинная последовательность нулевых битов порождает поток регулярных импульсов.

Когда соединяется новое устройство ввода-вывода, корневой хаб обнаруживает этот факт и прерывает работу операционной системы. Затем операционная система запрашивает новое устройство, выясняя, что оно собой представляет и какая пропускная способность шины для него требуется. Если операционная система решает, что для этого устройства пропускной способности достаточно, она приписывает ему уникальный адрес (1-127) и загружает этот адрес и другую информацию в конфигурационные регистры внутри устройства. Таким образом, новые устройства могут подсоединяться "на лету", при этом пользователю не нужно устанавливать новые платы ISA или PCI. Неинициализированные платы начинаются с адреса 0, поэтому к ним можно обращаться. Многие устройства снабжены встроенными сетевыми концентраторами для дополнительных устройств. Например, монитор может содержать два хаба для правой и левой колонок.

Шина USB представляет собой ряд каналов между корневым хабом и устройствами ввода-вывода. Каждое устройство может разбить свой канал максимум на 16 подканалов для различных типов данных (например, аудио и видео). В каждом канале или подканале данные перемещаются от корневого хаба к устройству и обратно. Между двумя устройствами ввода-вывода обмена информацией не происходит.

Ровно через каждую миллисекунду (±0,05 мс) корневой хаб передает новый кадр, чтобы синхронизировать все устройства во времени. Кадр состоит из пакетов, первый из которых передается от хаба к устройству. Следующие пакеты кадра могут передаваться в том же направлении, а могут и в противоположном (от устройства к хабу). На рис. 3.55 показаны четыре последовательных кадра.

Шина USB

Рис. 3.55. Корневой хаб шины USB передает кадры каждую миллисекунду

В кадрах 0 и 2 не происходит никаких действий, поэтому в них содержится только пакет SOF (Start of Frame - начало кадра). Этот пакет всегда посылается всем устройствам. Кадр 1 - упорядоченный запрос (например, сканеру посылается запрос на передачу битов сканированного им изображения). Кадр 3 состоит из данных, передаваемых какому-нибудь устройству (например, принтеру).

Шина USB поддерживает 4 типа кадров: кадры управления, изохронные кадры, кадры передачи больших массивов данных и кадры прерывания. Кадры управления используются для конфигурирования устройств, передачи устройствам команд и запросов об их состоянии. Изохронные кадры предназначены для устройств реального времени (микрофонов, акустических систем и телефонов), которые должны принимать и посылать данные через равные временные интервалы. Задержки хорошо прогнозируются, но в случае ошибки такие устройства не производят повторной передачи. Кадры следующего типа используются для передач большого объема от устройств и к устройствам (например, принтерам)

без требований, характерных для устройств реального времени. Наконец, кадры последнего типа нужны потому, что шина USB не поддерживает прерываний. Например, чтобы не вызывать прерывание всякий раз, когда нажимается клавиша, операционная система может вызывать прерывания каждые 50 мс и "собирать" все задержанные данные о нажатии клавиш.

Кадр состоит из одного или нескольких пакетов. Пакеты могут посылаться в обоих направлениях. Существует четыре типа пакетов: маркеры, пакеты данных, пакеты квитирования и специальные пакеты. Маркеры передаются от концентратора к устройству и предназначены для управления системой. Пакеты SOF, IN и OUT на рис. 3.55 - маркеры. Пакет SOF (Start of Frame - начало кадра) является первым в любом кадре, он идентифицирует начало кадра. Если никаких действий выполнять не нужно, пакет SOF - единственный в кадре. Пакет IN - это запрос. Этот пакет требует, чтобы устройство выдало определенные данные. Поля в пакете IN содержат информацию о том, какой именно канал запрашивается, и по этой информации устройство определяет, какие именно данные выдавать (если оно манипулирует несколькими потоками данных). Пакет OUT объявляет, что далее последует передача данных для устройства. Последний тип маркера, SETUP (он не показан на рисунке), используется при конфигурировании.

Помимо маркеров существует еще три типа пакетов. Это пакеты данных (используются для передачи 64 байт информации в обоих направлениях), пакеты квитирования и специальные пакеты. Формат пакета данных (DATA) показан на рис. 3.55. Он состоит из 8-разрядного поля синхронизации, 8-разрядного идентификатора типа пакета (PID), полезной нагрузки и 16-разрядного CRC-кода для обнаружения ошибок. Есть три типа пакетов квитирования: АСК (предыдущий пакет данных принят правильно), NAC (найдена ошибка CRC-кода) и STALL (устройство занято, ждите,).

А теперь давайте снова посмотрим на рис. 3.55. Корневой хаб должен отсылать по кадру каждую миллисекунду, даже если не происходит никаких действий. Кадры 0 и 2 содержат только один пакет SOF, который говорит о том, что ничего не происходит. Кадр 1 реализует опрос, поэтому начинается с пакетов SOF и IN, которые передаются от компьютера к устройству ввода-вывода, затем следует пакет DATA от устройства к компьютеру. Пакет АСК сообщает устройству, что данные были получены без ошибок. В случае ошибки устройство получает пакет NACK, после чего данные передаются заново (отметим, что изохронные данные повторно не передаются). Кадр 3 похож по структуре на кадр 1, но в нем поток данных направлен от компьютера к устройству.

После того как в 1998 году стандарт USB был окончательно утвержден, разработчики приступили к созданию следующей, высокоскоростной версии USB, названной USB 2.0. Этот стандарт во многом аналогичен USB 1.1 и совместим с ним, однако к двум прежним скоростям в нем добавляется новая - 480 Мбайт/с. Все прочие изменения, включая реализацию нового интерфейса между корневым хабом и контроллером, не так существенны. В стандарте USB 1.1 было предусмотрено два интерфейса UHCI и OHCI. Интерфейс UHCI (Universal Host Controller Interface - универсальный интерфейс хост-контроллера) разработала компания Intel, переложив большую часть забот на программистов (читай -

на Microsoft). Программисты вернули должок и выпустили интерфейс ОНО (Open Host Controller Interface - открытый интерфейс хост-контроллера), взвалив основную работу на разработчиков аппаратуры (читай - Intel). В процессе разработки стандарта USB 2.0 стороны пришли к взаимоприемлемому решению, выпустив новый интерфейс под названием EHCI (Enhanced Host Controller Interface - усовершенствованный интерфейс хост-контроллера).

Поскольку шина USB теперь передает данные со скоростью 480 Мбайт/с, она становится серьезным конкурентом последовательной шины IEEE 1394 (FireWire), работающей на скорости 400 Мбайт/с. Хотя почти все современные системы на базе Pentium оснащены шиной USB 2.0, стандарту 1394, который пользуется поддержкой производителей бытовой электроники, ничто не угрожает. Видеокамеры, DVD-проигрыватели и прочие электронные устройства, судя по всему, еще долго будут поддерживать интерфейс 1394. Связано это с тем, что их производители не желают тратить значительные средства лишь для того, чтобы перейти стандарт, преимущества которого по сравнению с прежним стандартом весьма сомнительны. С ними солидарны конечные потребители, которые тоже не любят менять стандарты.

PCI Express || Оглавление || Интерфейсы