Функции шины USB - это возможности, которые формируют полезные свойства сети USB, например выход в линию ISDN, получение данных от джойстика или вывод сигнала на звуковые колонки. Понятие функции не эквивалентно определению устройства, поскольку последнее может реализовать сразу несколько функций. В этом случае оно называется составным и рассматривается системой как узел с несколькими постоянно подключенными однофункциональными устройствами. Подобное устройство должно содержать встроенный концентратор шины USB.
Все устройства и узлы шины USB могут иметь собственные источники питания или запитываться от вышестоящего узла USB. (Запитываемый от шины узел обеспечивает работу до четырех ПУ, а с собственным питанием - до семи и более.) Все эти устройства в соответствии со стандартом шины подразделяются на классы, которые образуют свою иерархию. Классами-родоначальниками являются узлы и функции. Введение классов устройств должно, по мнению создателей шины, способствовать стандартизации аналогичных по назначению периферийных устройств разных производителей. По мере необходимости разработчики смогут, кроме стандартных классов, определять новые классы ПУ.
Интерфейс между USB и компьютером называется хост-контроллером (host controller, НС), который реализуется комбинацией аппаратных средств и драйвера хост-контроллера (host controller driver, HCD). Хост-контроллер отвечает за выполнение следующих операций:
• обнаружение подключения/отключения устройств;
• потоки управляющей информации между хостом и ПУ;
• управление потоками данных по шине, в частности выполнение протокола шины;
• сбор информации о статусе и активности ПУ-системы, а также формирование отчетов о состоянии системы USB;
• выделение ПУ определенных лимитов энергоресурсов системы (особенно актуально
для мобильных систем).
Хост-контроллер USB активно взаимодействует с различными службами операционной системы. Например, при наличии в ОС службы управления энергоресурсами АРМ (advanced power management) ПО USB перехватывает и выполняет запросы этой службы на приостановку функционирования и восстановление рабочего состояния конкретных устройств.
Прикладной интерфейс USB содержит драйверы стандартных классов устройств для данной ОС. Здесь используются обращения к специфическим службам ОС, в частности РпР для Windows 95. Разработчики нестандартного оборудования должны включать свои драйверы в этот уровень ПО шины USB.
Еще один важный компонент верхнего уровня ПО шины - система конфигурирования шины и идентификации ПУ, поставляемая разработчиком ОС или независимыми производителями ПО. Эта система управляет всеми узлами сети, в том числе корневым концентратором, и является частью службы управления энергопотреблением компьютерной системы.
Ключевым элементом ПО USB является драйвер USBD, поставляемый, как сказано в стандарте шины, разработчиком ОС. На него ложится вся диспетчеризация активности на шине. Драйвер транслирует запросы ввода/вывода клиентского ПО в вызовы HCD. Например, USBD на основании данных запроса на подключение нового ПУ (число конечных точек в устройстве, допустимые типы и объемы передач данных и т. д.) дает отказ или удовлетворяет запрос, исходя из свободных ресурсов шины.
USBD опирается на драйвер хост-контроллера, скрывающий особенности аппаратных решений USB от вышележащего ПО. Драйвер хост-контроллера отслеживает выполнение текущих запросов на доступ к шине и обеспечивает бездефицитное выделение имеющихся ресурсов шины. Драйвер хост-контроллера также поставляется разработчиком ОС и содержит в настоящее время два аппаратных интерфейса: UHCI (universal host controller interface) и OHCI (open host controller interface).
Как и в любой сложной многоуровневой системе, использующей общий коммуникационный канал, передача потоков информации между хостом и ПУ по шине USB требует взаимодействия многих программных и аппаратных компонентов, каждый из которых имеет свою сферу ответственности. Это придает особое значение протоколу обмена между элементами системы.
В шине USB используется мультиплексирование передаваемых данных с временным уплотнением (time division multiplexing, TDM). Основу логической модели передачи данных составляют пакеты. Размер пакета переменный, он зависит от многих факторов. Хост-контроллер объединяет пакеты в кадры, длительность которых 0,001 с. Порядок следования пакетов в кадре определяется драйвером хост-контроллера, однако для каждого получателя информации (логического канала передачи данных) гарантируется сохранение последовательности поступления данных.
Системное ПО шины и специальные протоколы обмена скрывают от клиентского ПО (прикладных программ) сложность централизованного управления маркерным доступом к совместно используемым ресурсам шины USB, сводя его к системе двухточечных связей. Этим USB отличается от таких шин, как PCI, EISA, PCMCIA, где клиентское ПО напрямую работает с адресатом.
Одними из наиболее популярных шин ввода-вывода в настоящее время являются шины IDE и SCSI.
Под термином IDE (Integrated Drive Electronics - электpоника, встpоенная в пpивод)), или ATA (AT Attachment - подключаемый к AT) понимается пpостой и недоpогой интеpфейс для PC AT. Все функции по упpавлению накопителем обеспечивает встpоенный контpоллеp, а 40-пpоводной соединительный кабель является фактически упpощенным сегментом 16-pазpядной магистpали AT-Bus (ISA). Пpостейший адаптеp IDE содеpжит только адpесный дешифpатоp - все остальные сигналы заводятся пpямо на pазъем ISA. Адаптеpы IDE обычно не содеpжат собственного BIOS - все функции поддеpжки IDE встpоены в системный BIOS PC AT. Однако интеллектуальные или кэшиpующие контpоллеpы могут иметь собственный BIOS, подменяющий часть или все функции системного.
Основной pежим pаботы устpойств IDE - пpогpаммный обмен (PIO) под упpавлением центpального пpоцессоpа, однако все совpеменные винчестеpы EIDE поддеpживают обмен в pежиме DMA, а большинство контpоллеpов - pежим Bus Mastering.
Под термином SCSI - Small Computer System Interface (Интерфейс малых вычислительных систем) обычно понимается набор стандартов, разработанных Национальным институтом стандартов США (ANSI) и определяющих механизм реализации магистрали передачи данных между системной шиной компьютера и периферийными устройствами. На сегодняшний день приняты два стандарта (SCSI-1 и SCSI-2). Стандарт SCSI-3 находится в процессе доработки.
Начальный стандарт 1986 года, известный теперь под названием SCSI-1, определял рабочие спецификации протокола шины, набор команд и электрические параметры. В 1992 году этот стандарт был пересмотрен с целью устранения недостатков первоначальной спецификации (особенно в части синхронного режима передачи данных) и добавления новых возможностей повышения производительности, таких как "быстрый режим" (fast mode), "широкий режим" (wide mode) и помеченные очереди. Этот пересмотренный стандарт получил название SCSI-2 и в настоящее время используется большинством поставщиков вычислительных систем.
Первоначально SCSI предназначался для использования в небольших дешевых системах и поэтому был ориентирован на достижение хороших результатов при низкой стоимости. Характерной его чертой является простота, особенно в части обеспечения гибкости конфигурирования периферийных устройств без изменения организации основного процессора. Главной особенностью подсистемы SCSI является размещение в периферийном оборудовании интеллектуального контроллера.
Для достижения требуемого высокого уровня независимости от типов периферийных устройств в операционной системе основной машины, устройства SCSI представляются имеющими очень простую архитектуру. Например, геометрия дискового накопителя представляется в виде линейной последовательности одинаковых блоков, хотя в действительности любой диск имеет более сложную многомерную геометрию, содержащую поверхности, цилиндры, дорожки, характеристики плотности, таблицу дефектных блоков и множество других деталей. В этом случае само устройство или его контроллер несут ответственность за преобразование упрощенной SCSI модели в данные для реального устройства.
Стандарт SCSI-2 определяет в частности различные режимы: Wide SCSI, Fast SCSI и Fast-and-Wide SCSI. Стандарт SCSI-1 определяет построение периферийной шины на основе 50-жильного экранированного кабеля, описывает методы адресации и электрические характеристики сигналов. Шина данных SCSI-1 имеет разрядность 8 бит, а максимальная скорость передачи составляет 5 Мбайт/сек. Fast SCSI сохраняет 8-битовую шину данных и тем самым может использовать те же самые физические кабели, что и SCSI-1. Он отличается только тем, что допускает передачи со скоростью 10 Мбайт/сек в синхронном режиме. Wide SCSI удваивает либо учетверяет разрядность шины данных (либо 16, либо 32 бит), допуская соответственно передачи со скоростью либо 10, либо 20 Мбайт/сек. В комбинации Fast-and-Wide SCSI возможно достижение скоростей передачи 20 и 40 Мбайт/сек соответственно.
Однако поскольку в обычном 50-жильном кабеле просто не хватает жил, комитет SCSI решил расширить спецификацию вторым 66-жильным кабелем (так называемый B-кабель). B-кабель имеет дополнительные линии данных и ряд других сигнальных линий, позволяющие реализовать режим Fast-and-Wide.
В реализации режима Wide SCSI предложена также расширенная адресация, допускающая подсоединение к шине до 16 устройств (вместо стандартных восьми). Это значительно увеличивает гибкость подсистемы SCSI, правда приводит к появлению дополнительных проблем, связанных с эффективностью ее использования.
Реализация режимов Wide-SCSI и Fast-and-Wide SCSI до 1994 года редко использовалась, поскольку эффективность их применения не была достаточно высокой. Однако широкое распространение дисковых массивов и дисковых накопителей со скоростью вращения 7200 оборотов в минуту делают эту технологию весьма актуальной.