Михаил Гук Шины расширения
Книги | Статьи

Как и следует из названия, шины расширения (Expansion Bus) предназначены для подключения различных адаптеров периферийных устройств, расширяющих возможности компьютера. Интерфейсы шин расширения PC начали свою историю с 8-битной шины ISA. Ее открытость обеспечила появление широкого спектра плат расширений, позволяющих использовать PC в различных сферах, вплоть до применения в качестве управляющего компьютера в различных системах автоматизации. С появлением AT-286 шина была расширена, что позволило подключать большее количество адаптеров и повысить производительность обмена. Шина EISA явилась откликом на потребность в высокопроизводительном обмене для серверов. Эта довольно дорогая шина распространена не так широко, но она уже содержит прогрессивные идеи автоматизации конфигурирования (прообраз системы PnP). В шину EISA можно устанавливать и ISA-адаптеры. Шина MCA, выдвинутая фирмой IBM как прогрессивная альтернатива ISA, не была поддержана производителями клонов PC (ее спецификация не была открытой). В результате она так практически и отмерла вместе с семейством компьютеров IBM PS/2. С появлением процессора 486 появилась потребность в резком повышении производительности системной шины и родилась локальная шина VLB. Однако она являлась лишь дополнением к слоту шины ISA/EISA и использовалась в основном лишь для графических карт и дисковых контроллеров. Принципиальная привязка к шине процессора 486 не обеспечила ей долгого существования - пришла пора Pentium. С процессорами 486 появилась и другая скоростная шина - PCI. Ее иногда называли локальной, но это неверно. Она является новым "этажом" в архитектуре PC, к которому подключаются шины типа ISA/EISA. Воспринимаемая поначалу как некоторая экзотика, шина PCI укрепила свои позиции и сейчас является стандартной для компьютеров с процессорами 4, 5 и 6 поколений. Более того, она используется и в компьютерах "не-PC" - Power PC и некоторых других мощных платформах. Развитием шины PCI, нацеленным на дальнейшее повышение производительности обмена, явился порт AGP, специально предназначенный для подключения мощных графических адаптеров.
Для "маленьких" компьютеров, поначалу имевших довольно-таки закрытую (нерасширяемую) архитектуру, потребность в подключении разнообразной периферии привела к появлению стандартизованной шины PCMCIA, впоследствии переименованной в PC Card.
Шины расширения системного уровня дают возможность устанавливаемым на них модулям расширения максимально использовать системные ресурсы PC: пространства памяти и ввода-вывода, прерывания, каналы прямого доступа к памяти. За получение этих возможностей разработчикам и изготовителям модулей расширения приходится расплачиваться необходимостью обеспечения точного соответствия протоколам шины, включая и довольно жесткие частотные и нагрузочные параметры, а также временные диаграммы. Отклонения от этих требований могут приводить к проблемам совместимости (точнее, ее отсутствия) с разными системными платами. Если при подключении к внешним интерфейсам эти проблемы приведут к неработоспособности только этого устройства, то некорректное подключение к системной шине может блокировать работу всего компьютера. Кроме того, оказалось, что системных ресурсов PC не так уж и много, и самые дефицитные - это линии запросов прерываний. С остальными ресурсами тоже бывает напряженность, но ее разрядить легче: области памяти используются не так уж и широко, адресов портов ввода-вывода, в общем, хватает, а каналы прямого доступа можно заменить на активное управление шиной PCI. Проблемы распределения ресурсов на шинах решаются по-разному, но в последнее время большого успеха достигла технология PnP.
Рассмотрим стандартные шины расширения PC-совместимых компьютеров. Понимание принципов их работы может помочь в разрешении затруднений при подключении модулей расширения, а разработчикам аппаратуры сориентироваться и выбрать подходящий вариант подключения, не паля из пушки по воробьям и не устраивая "узкого горла" для взаимодействия со своими устройствами.
Шины расширения конструктивно оформляются в виде щелевых разъемов (слотов) для установки плат адаптеров. Количество и тип слотов определяет возможности функционального расширения системы.

Шины ISA и EISA

ISA Bus (Industry Standard Architecture) - шина расширения, применявшаяся с первых моделей PC и ставшая промышленным стандартом. В компьютере XT применялась шина с разрядностью данных 8 бит и адреса - 20 бит. В компьютерах AT шину расширили до 16 бит данных и 24 бит адреса. В таком виде она существует и поныне как самая распространенная шина для периферийных адаптеров. Конструктивно шина выполнена в виде двух щелевых разъемов (слотов). Подмножество ISA-8 использует только 62-контактный слот (ряды A, B), в ISA-16 применяется дополнительный 36-контактный слот (ряды C, D).
Шина обеспечивает своим абонентам возможность отображения 8- или 16-битных регистров на пространство ввода-вывода и памяти. Диапазон доступных адресов памяти ограничен областью UMA, но для шины ISA-16 специальными опциями BIOS Setup может быть разрешено и пространство в области между15-м и 16-м мегабайтом памяти (правда при этом компьютер не сможет использовать более 15 Мбайт ОЗУ). Диапазон адресов ввода-вывода сверху ограничен количеством используемых для дешифрации бит адреса, нижняя граница ограничена областью адресов 0-FFh, зарезервированных под устройства систнемной платы. В PC была принята 10-битная адресация ввода-вывода, при которой линии адреса A[15:10] устройствами игнорировались. Таким образом, диапазон адресов устройств шины ISA ограничивается областью 100h-3FFh, то есть всего 758 адресов 8-битных регистров. На некоторые области этих адресов претендуют и системные устройства. Впоследствии стали применять и 12-битную адресацию (диапазон 100h-FFFh), но при ее использовании всегда необходимо учитывать возможность присутствия на шине и старых 10-битных адаптеров, которые "отзовутся" на адрес с подходящими ему битами A[9:0] во всей допустимой области четыре раза.
В распоряжении абонентов шины ISA-8 может быть до 6 линий запросов прерываний IRQx, для ISA-16 их число достигает 11. Заметим, что при конфигурировании BIOS Setup часть из этих запросов могут отобрать устройства системной платы или шина PCI.
Абоненты шины могут использовать до трех 8-битных каналов DMA, а на 16-битной шине могут быть доступными еще три 16-битных канала. Сигналы 16-битных каналов могут использоваться и для получения прямого управления шиной устройством Bus-Master. При этом канал DMA используется для обеспечения арбитража управления шиной, а адаптер Bus-Master формирует все адресные и управляющие сигналы шины, не забывая "отдать" управление шиной процессору не более, чем через 15 микросекунд (чтобы не нарушить регенерацию памяти).
Все перечисленные ресурсы системной шины должны быть бесконфликтно распределены между абонентами. Бесконфликтность подразумевает следующее:
  • Каждый абонент должен при операциях чтения управлять шиной данных (выдавать информацию) только по своим адресам или по обращению к используемому им каналу DMA. Области адресов для чтения не должны пересекаться. "Подсматривать" не ему адресованные операции записи не возбраняется.
  • Назначенную линию запроса прерывания IRQx или прямого доступа DRQx абонент должен держать на низком уровне в пассивном состоянии и переводить в высокий уровень для активации запроса. Неиспользуемыми линиями запросов абонент управлять не имеет права, они должны быть электрически откоммутированы или подключаться к буферу, находящемуся в третьем состоянии. Одной линией запроса может пользоваться только одно устройство. Такая нелепость (с точки зрения схемотехники ТТЛ) была допущена в первых PC и в дань (жертву) совместимости старательно тиражируется уже много лет.
Задача распределения ресурсов в старых адаптерах решалась с помощью джамперов, затем появились программно-конфигурируемые устройства, которые вытесняются автоматически конфигурируемыми платами PnP.
С появлением 32-битных процессоров делались попытки расширения разрядности шины, но все 32-битные шины ISA не являются стандартизованными, кроме шины EISA.
EISA Bus (Extended ISA) - жестко стандартизованное расширение ISA до 32 бит. Конструктивное исполнение обеспечивает совместимость с ней и обычных ISA-адаптеров (см. рис. 1). Узкие дополнительные контакты расширения (ряды E, F, G, H) расположены между ламелями разъема ISA и ниже ламелей A, B, C, D таким образом, что адаптер ISA, не имеющий дополнительных ключевых прорезей в краевом разъеме, не достает до них. Установка карт EISA в слоты ISA недопустима, поскольку ее специфические цепи попадут на контакты цепей ISA, в результате чего системная плата окажется неработоспособной (к счастью, "без дыма").

Разъем шины EISA

Рис.1. Разъем шины EISA

Расширение шины касается не только увеличения разрядности данных и адреса: для режимов EISA используются дополнительные управляющие сигналы, обеспечивающие возможность применения более эффективных режимов передачи. В обычном (не пакетном) режиме передачи за каждую пару тактов может быть передано до 32 бит данных (один такт на фазу адреса, один - на фазу данных). Максимальную производительность шины реализует пакетный режим (Burst Mode) - скоростной режим пересылки пакетов данных без указания текущего адреса внутри пакета. Внутри пакета очередные данные могут передаваться в каждом такте шины, длина пакета может достигать 1024 байт. Шина предусматривает и более производительные режимы DMA, при которых скорость обмена может достигать 33 Мб/с. Линии запросов прерываний допускают разделяемое использование, причем сохраняется и совместимость с ISA-картами: каждая линия запроса может программироваться на чувствительность как по перепаду (Edge), как в ISA, так и по низкому уровню (Level). Шина допускает потребление каждой картой расширения мощности до 45 Вт, но это не означает, что мощность блока питания для системной платы на 8 слотов должна быть более 360 Вт - полную мощность, пожалуй, не потребляет ни один из адаптеров.
Многие решения EISA имеют корни в MCA-шине PS/2. Каждый слот (максимум - 8) и системная плата могут иметь селективное разрешение адресации ввода-вывода и отдельные линии запроса и подтверждения управления шиной. Арбитраж запросов выполняет устройство ISP (Integrated System Peripheral). Обязательной принадлежностью системной платы с шиной EISA является энергонезависимая память конфигурации NVRAM, в которой хранится информация об устройствах EISA для каждого слота. Формат записей стандартизован, для модификации конфигурационной информации применяется специальная утилита ECU (EISA Configuration Utility). Архитектура позволяет при использовании программно-конфигурируемых адаптеров автоматически разрешать конфликты использования системных ресурсов программным путем, но в отличие от спецификации PnP, EISA не допускает динамического реконфигурирования. Все изменения конфигурации возможны только в режиме конфигурирования, после выхода из которого необходима перезагрузка компьютера. Изолированный доступ к портам ввода-вывода каждой карты во время конфигурирования обеспечивается просто: сигнал AEN, разрешающий декодирования адреса в цикле ввода-вывода, на каждый слот приходит по отдельной линии AENx, в это время программно-управляемой. Таким образом можно по отдельности обращаться и к обычным картам ISA, но из этого особой пользы не извлечь, поскольку карты ISA не поддерживают обмена конфигурационной информацией, предусмотренного шиной EISA. На некоторых идеях конфигурирования EISA выросла спецификация PnP для шины ISA (формат конфигурационных записей ESCD во многом напоминает NVRAM EISA).
EISA - дорогая, но оправдывающая себя архитектура, применяющаяся в многозадачных системах, на файл-серверах и везде, где требуется высокоэффективное расширение шины ввода-вывода. Перед шиной PCI у нее есть некоторое преимущество в количестве слотов, которое для одной шины PCI не превышает четырех, а у EISA может достигать восьми.
Для шин ISA ряд фирм выпускает карты-прототипы (Protitype Card), представляющие собой печатные платы полного или уменьшенного формата с крепежной скобой. На платах установлены обязательные интерфейсные цепи - буфер данных, дешифратор адреса и некоторые другие. Остальное поле платы представляет собой "слепыш", на котором разработчик может разместить макетный вариант своего устройства. Эти платы удобны для макетной проверки нового изделия, а также для монтажа единичных экземпляров устройства, когда разработка и изготовление печатной платы нерентабельно.
На некоторых системных платах имеется небольшой разъем с загадочным названием Media Bus, расположенный позади разъема шины PCI одного из слотов. На этот разъем выводятся сигналы обычной шины ISA, и предназначен он для того, чтобы на графическом адаптере с шиной PCI можно было разместить и недорогой чипсет звуковой карты, предназначенный для шины ISA. Этот разъем, а тем более и такие комбинированные аудио-видео карты, широкого распространения не получили.

Шина MCA

MCA (MicroChannel Architecture) - микроканальная архитектура - была введена в пику конкурентам фирмой IBM для своих компьютеров PS/2 начиная с модели 50. Шина MCA абсолютно несовместима с ISA/EISA и другими адаптерами. Состав управляющих сигналов, протокол и архитектура ориентированы на асинхронное функционирование шины и процессора, что снимает проблемы согласования скоростей процессора и периферийных устройств. Адаптеры MCA широко используют Bus-Mastering, все запросы идут через устройство CACP (Central Arbitration Control Point). Архитектура позволяет эффективно и автоматически конфигурировать все устройства программным путем (в MCA PS/2 нет ни одного переключателя).
При всей прогрессивности архитектуры (относительно ISA) шина MCA не пользуется популярностью из-за узости круга производителей MCA-устройств и полной их несовместимости с массовыми ISA-системами. Однако MCA еще находит применение в мощных файл-серверах, где требуется обеспечение высоконадежного производительного ввода-вывода.

Локальная шина VLB

Шины ввода-вывода ISA, MCA, EISA имеют низкую производительность, обусловленную их местом в структуре PC. Современные приложения (особенно графические) требуют существенного повышения пропускной способности, которое могут обеспечить современные процессоры. Одним из решений проблемы повышения пропускной способности было применение в качестве шины подключения периферийных устройств локальной шины процессора 486. Шину процессора использовали как место подключения встроенной периферии системной платы (контроллер дисков, графического адаптера).
VLB (VESA Local Bus) - стандартизованная 32-битная локальная шина, практически представляющая собой сигналы системной шины процессора 486, выведенные на дополнительные разъемы системной платы. Шина сильно ориентирована на 486 процессор, хотя возможно ее использование и с процессорами класса 386. Для процессоров Pentium была принята спецификация 2.0, в которой разрядность шины данных увеличена до 64, но она распространения не получила. Аппаратные преобразователи шины новых процессоров в шину VLB, будучи искусственными "наростами" на шиннной архитектуре, не прижились, и VLB дальнейшего развития не получила.
Конструктивно VLB-слот аналогичен 16-битному обычному MCA-слоту, но является расширением системного слота шины ISA-16, EISA или MCA, располагаясь позади него вблизи от процессора. Из-за ограниченной нагрузочной способности шины процессора больше трех слотов VLB на системной плате не устанавливают. Максимальная тактовая частота шины - 66 МГц, хотя надежнее шина работает на частоте 33 МГц. При этом декларируется пиковая пропускная способность 132 Мб/с (33 МГц x 4 байта), но она достигается только внутри пакетного цикла во время передач данных. Реально в пакетном цикле передача 4 x 4 = 16 байт данных требует 5 тактов шины, так что даже в пакетном режиме пропускная способность составляет 105.6 Мб/с, а в обычном режиме (такт на фазу адреса и такт на фазу данных) - всего 66 Мб/с, хотя это и значительно больше, чем у ISA. Жесткие требования к временным характеристикам процессорной шины при большой нагрузке (в т. ч. и микросхемами внешнего кэша) могут привести к неустойчивой работе: все три VLB-слота могут использоваться только на частоте 40 МГц, при нагруженной системной плате на 50 МГц может работать только один слот. Шина в принципе допускает и применение активных (Bus-Master) адаптеров, но арбитраж запросов возлагается на сами адаптеры. Обычно шина допускает установку не более двух Bus-Master адаптеров, один из которых устанавливается в "Master"-слот.
Шину VLB обычно использовали для подключения графического адаптера и контроллера дисков. Адаптеры локальных сетей для VLB практически не встречаются. Иногда встречаются системные платы, у которых в описании указано, что они имеют встроенный графический и дисковый адаптер с шиной VLB, но самих слотов VLB нет. Это означает, что на плате установлены микросхемы указанных адаптеров, предназначенные для подключения к шине VLB. Такая неявная шина по производительности, естественно, не уступает шине с явными слотами. С точки зрения надежности и совместимости это даже лучше, поскольку проблемы совместимости карт и системных плат для шины VLB стоят особенно остро.

Шина PCI

PCI (Peripheral Component Interconnect bus) - шина соединения периферийных компонентов. Эта шина занимает особое место в современной PC-архитектуре (mezzanine bus), являясь мостом между локальной шиной процессора и шиной ввода-вывода ISA/EISA или MCA. Эта шина разрабатывалась в расчете на Pentium-системы, но хорошо сочетается и с 486 процессорами, а также с не-Intel'овскими процессорами. Шина PCI является четко стандартизованной высокопроизводительной шиной расширения ввода-вывода. Частота шины 20-33 МГц, PCI 2.1 допускает и частоту 66 МГц. Теоретическая максимальная скорость 132/264 Mбайт/с для 32/64 бит при 33 МГц. Слот PCI достаточен для подключения адаптера (в отличие от VLB), на системной плате он может сосуществовать с любой из шин ввода-вывода и даже с VLB (хотя в этом и нет необходимости).
На одной шине PCI может быть не более четырех устройств (слотов). Мост шины PCI (PCI Bridge) - это аппаратные средства подключения шины PCI к другим шинам. Host Bridge - главный мост - используется для подключения PCI к системной шине (шине процессора или процессоров). Peer-to-Peer Bridge - одноранговый мост - используется для соединения двух шин PCI. Две и более шины PCI применяются в мощных серверных платформах - дополнительные шины PCI позволяют увеличить количество подключаемых устройств.
Автоконфигурирование устройств (выбор адресов, запросов прерывания) поддерживается средствами BIOS и ориентировано на технологию Plug and Play. Стандарт PCI определяет для каждого слота конфигурационное пространство размером до 256 восьмибитных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и Configuration Write, вырабатываемым контроллером при обращении процессора к регистрам контроллера шины PCI, расположенным в его пространстве ввода-вывода.
В состав шины PCI введены сигналы для тестирования адаптеров по интерфейсу JTAG. На системной плате эти сигналы не всегда задействованы, но могут и организовывать логическую цепочку тестируемых адаптеров.
Шина PCI все обмены трактует как пакетные: каждый кадр начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Количество фаз данных в пакете неопределенно, но ограничено таймером, определяющим максимальное время, в течении которого устройство может пользоваться шиной. Каждое устройство имеет собственный таймер, значение для которого задается при конфигурировании устройств шины.
В каждом обмене участвуют два устройства - инициатор обмена (Initiator) и целевое устройство (Target). Арбитражем запросов на использование шины занимается специальный функциональный узел, входящий в состав чипсета системной платы. Для согласования быстродействия устройств-участников обмена предусмотрены два сигнала готовности IRDY# и TRDY#. Для адреса и данных на шине используются общие мультиплексированные линии AD. Четыре мультиплексированных линии C/BE[3:0] используются для кодирования команд в фазе адреса и разрешения байт в фазе данных.
Шина имеет версии с питанием 5 В, 3.3 В и универсальную (с переключением линий +V I/O c 5 В на 3.3 В). Ключами являются пропущенные ряды контактов 12, 13 и 50, 51. Для 5 В-слота ключ расположен на месте контактов 50, 51; для 3 В - 12, 13; для универсального - два ключа: 12, 13 и 50, 51. Ключи не позволяют установить карту в слот с неподходящим напряжением питания. 32-битный слот заканчивается контактами A62/B62, 64-битный - A94/B94.
В отличие от адаптеров остальных шин, компоненты карт PCI расположены на левой поверхности плат. По этой причине крайний PCI-слот обычно разделяет использование посадочного места адаптера с соседним ISA-слотом (Shared slot).
Шина PCI является второй (после ISA) по популярности применения. Некоторые фирмы для этой шины выпускают карты-прототипы, но, конечно же, доукомплектовать их периферийным адаптером или устройством собственной разработки гораздо сложнее, чем карту ISA. Здесь сказываются и более сложные протоколы, и более высокие частоты (частота шины ISA - 8 МГц, PCI - 33 или 66 МГц).
Иногда на системной плате позади разъема шины PCI одного из слотов имеется небольшой разъем Media Bus, на который выводятся сигналы обычной шины ISA. Он предназначен для обеспечения возможности размещения на графическом адаптере PCI недорогого чипсета звуковой карты, предназначенный для шины ISA.

Шины блокнотных компьютеров


Организация PCMCIA (Personal Computer Memory Card International Association - международная ассоциация производителей карт памяти для персональных компьютеров) ввела ряд стандартов на шины расширения блокнотных компьютеров. Первый из них и назывался PCIMCIA, а впоследствии был переименован в стандарт PC Card. Шина PC Card позволяет подключать расширители памяти, модемы, контроллеры дисков и стриммеров, SCSI-адаптеры, сетевые адаптеры и др. Не очень строгое следование производителей этому стандарту приводит к некоторым проблемам совместимости. Назначение контактов разъема шины приведено в табл. 6.9. Шина адресует до 64 Mбайт памяти, разрядность данных 16 бит, частота до 33 МГц, DMA и Bus-Mastering не поддерживаются. Теоретически допускается до 4080 слотов PC Card в PC. Шина ориентирована на программное конфигурирование адаптеров (переключатели на таких маленьких картах не помещаются). Большинство адаптеров выпускается с поддержкой PnP и предусматривают возможность горячего подключения-отключения - интерфейсные карты могут вставляться и выниматься без выключения PC. Для обеспечения горячего подключения контакты шин питания имеют большую длину, чем сигнальные, чем обеспечивается их упреждающее подключение и запаздывающее отключение. Два контакта обнаружения карты (Card Detect) короче остальных. Все устройства имеют свою BIOS-поддержку. Несмотря на возможность динамического конфигурирования, в некоторых случаях при изменении конфигурации требуется перезагрузка системы.
Различают несколько типов PC Card. Электрически идентичные, они различаются по габаритам и совместимы снизу вверх (меньшие адаптеры встают в большие гнезда). Адаптер типа 1 имеет размеры 54 x 85 мм и толщину не более 3.3 мм, типа 2 - размеры 48 x 75 мм и толщину 5 мм, тип 3 - размеры 48 x 75 мм и толщину 10.5 мм.
Все устройства PC Card имеют минимальное энергопотребление. Существуют предпосылки для введения этой шины как дополнительной и в настольные PC.
Шина CardBus с тем же 68-контактным разъемом обеспечивает расширение разрядности данных до 32 бит за счет мультиплексирования шины адреса и данных, обеспечивая обратную совместимость с PC Card.
Для карт памяти (динамической, статической, постоянной и флэш-памяти) существует стандарт Miniature Card, представляющий подмножество шины PC Card. Миниатюрная карта размером 33 x 38 x 3.5 мм с 60-контактным разъемом через переходный адаптер может устанавливаться и в слот PC Card типа 2.

Подробнее о шинах расширения можно узнать в книге "Интерфейсы ПК. Справочник", а о подсистемах компьютера, пользующихся этими шинами - в книге "Аппаратные средства IBM PC. Энциклопедия".

Михаил Гук (Mgook@stu.neva.ru)
Опубликовано в газете "КомпьютерИнфо" (СПб.) 1998/2-4.
Публикация в печатных изданиях только с разрешения автора, ссылка обязательна.
Книги | Статьи


Copyright (c) М. Гук, 1999. Дизайн (с) О. Гук, 1999.