0 просмотров

Для чего нужна шина pci

Эволюция шин для видеокарт: от ISA до PCIe

В далеком 1981 году создатели IBM PC и подумать не могли о том, что всего через двадцать пять лет компактные домашние компьютеры смогут выдавать практически фотореалистичную картинку с миллионами полигонов, а игровые миры раскинутся на тысячи виртуальных километров.

Интересно, что сказал бы Герман Холлерит (Herman Hollerith), узнав, что основанная им компания по изготовлению перфокарт и счетных машин в очередной раз оказалась у истоков наших ретро-исследований?

От простого к сложному

В 1981 году компания IBM представила первый в мире персональный компьютер — IBM PC. В нем использовалась допотопная видеокарта с возможностью вывода монохромного изображения, но не это главное. Все наше внимание приковано к шине Industry Standard Architecture (ISA), разработанной в недрах IBM. Основное назначение ISA — соединение периферийных компонентов с системой.

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

Предшественниками полноценных видеокарт были чипы с возможностью вывода спрайтов на экран. Графические возможности компьютеров в те времена не волновали людей: когда IBM представила первый в мире чип с поддержкой вывода нескольких цветов, люди и не поняли, зачем это нужно. Графические карты для интерфейса ISA в середине 1980-х выпускали компании Cirrus Logic, Avance Logic, ATI, S3.

EISA заткнула за пояс шину MCA от IBM и стала стандартом де-факто.

Изначально у шины ISA было много ограничений: недостаточная пропускная способность, малое число прерываний, система распределения питания не ахти. Заменить ISA должна была шина Micro Channel Architecture (MCA), представленная в 1987 году вместе с компьютером IBM PS/2. Новая разработка решила многие проблемы, свойственные ISA: частота шины поднялась до 10 МГц, появился вменяемый Plug-n-Play (до этого прописывать новое устройство в систему приходилось вручную), шина стала 32-битной. Теоретическая пропускная способность MCA достигала 66 Мб/с, на практике — максимум 40 Мб/с. Устройства наконец-то могли общаться друг с другом напрямую, минуя центральный процессор. С такими улучшениями MCA могла бы стать индустриальным стандартом, но IBM сама все испортила. Компания не стала развивать рынок периферии для новой шины, более того, тщательно тормозила этот процесс — сторонние производители должны были получать специализированный ID для каждого устройства, за право выпуска устройств под MCA нужно было платить лицензионные отчисления и роялти. И это при том, что IBM не получила патенты на шину.

История сохранила лишь несколько упоминаний о видеокартах под MCA. Очевидно, что производители испугались всех трудностей, связанных с лицензированием и получением ID. Да и стоило ли мучиться? Компьютеры с шиной MCA оказались значительно дороже аналогов с использованием ISA. Все большей популярностью пользовались системы от Dell, Research Machines и Olivetti. Самые известные дискретные видеокарты для MCA — это монструозные IBM XGA, XGA-2, несколько моделей от Infotronic, Actix и ATI. Кстати, примерно в то же время появился разъем VGA (D-sub) для подключения мониторов.

Видеокарта ATI Mach32 для шины VLB едва помещалась в корпуса того времени. Да-да, и тогда выпускали громадные видеокарты.

Производителям компьютеров основательно поднадоела политика IBM. В итоге они объединились и начали работать над альтернативным стандартом. Альянс AST Research, Compaq, Epson, Hewlett-Packard, NEC, Olivetti, Tandy, WYSE и Zenith Data Systems шутливо назвали «Бандой девяти». Результаты их труда обозначились уже в 1988 году, когда партнеры представили 32-битную шину Extended Industry Standard Architecture (EISA). Она обладала всеми преимуществами MCA, но при этом представляла собой лишь надстройку над классической ISA, что позволило сохранить совместимость с 8- и 16-битными компонентами. Лицензия на шину стоила копейки.

Внешне порты EISA были похожи на 16-битные разъемы ISA — они точно так же были разделены на части для сохранения совместимости. С точки зрения производителей, шина EISA не сильно отличалась от оригинальной ISA, так что и видеокарт с ее поддержкой было выпущено предостаточно.

Надстройка продлила жизнь ISA, но в начале 1990-х была представлена шина VESA Local Bus (VL-bus, VLB). За ее разработку ответственна всем известная ассоциация Video Electronics Standards Association (VESA), основанная NEC в середине 1980-х годов. Почему бы не успокоиться на время и не продолжить использование EISA? Все просто — производителям опять не хватало скорости. Решением стала совершенно неудобная по современным меркам «добавка» в виде PCI-образного порта, который располагался в один ряд с 16-битным разъемом ISA, таким образом продлевая его. Устройство с поддержкой VLB устанавливалось сразу в два разъема — порт VLB обслуживал обращения к памяти, а ISA обрабатывал прерывания. Топорное решение, ничего не скажешь.

Несмотря на все недостатки, VLB стала стандартом де-факто в компьютерах с процессорами Intel 80486. Многочисленные производители видеокарт представили длинные модели с двумя разъемами.

В 1991 году ATI выпустила видеокарту Mach 8, которая могла обрабатывать картинку без помощи процессора. Уже в 1992 году последовала Mach 32 с возможностью ускорения обработки графического интерфейса Windows. Начались первые войны за рынок графики. В стычках участвовали S3, Cirrus Logic, ATI, PowerVR, Rendition и более мелкие игроки. На горизонте замаячили трехмерные пространства и аппаратное ускорение графики.

Назад в будущее

Проследив за компьютерным рынком, Intel решила взять все в свои руки и начала работу над шиной Peripheral Component Interconnect (PCI). Intel подошла к вопросу со всей серьезностью и организовала специальную группу для продвижения стандарта — PCI Special Interest Group (PCI-SIG). В нее вошли представители наиболее крупных IT-компаний.

Карта расширения с четырьмя дополнительными разъемами ISA. Такие устройства использовали, когда доступных портов уже не хватало.

Финальные спецификации PCI 1.0 были готовы к 1993 году. В серверах новый интерфейс заменил и EISA, и MCA. Захват рынка настольных компьютеров произошел не сразу — на тот момент люди были вполне довольны возможностями VLB. С появлением мощных процессоров Pentium недостатки шины стали очевидны — пользователям не давали жить постоянные помехи, наводки от оборудования и испорченные данные на жестких дисках.

В один прекрасный момент Intel представила процессор Pentium Pro в паре с новым чипсетом, в нем место VLB не нашлось. Да, вот так просто компания взяла, да и убрала разъем. Силовые наклонности Intel проявляются и по сей день, ведь именно она форсировала переход на Serial ATA, ратовала за отказ от PS/2 в пользу USB. Что интересно, интерфейс EISA тогда сохранили — соответствующие разъемы оставались на платах еще довольно долго.

К выходу Pentium II в 1995 году PCI-SIG представила спецификации PCI 2.0 (33 МГц). В новой версии была решена проблема прерываний и определения установленных устройств — под эти цели отвели дополнительный канал связи. Периферия могла свободно обращаться к памяти, выделять для себя необходимые участки, а технологию Plug-n-Play довели до ума.

Участники PCI-SIG не почивали на лаврах и продолжали работу над стандартом — в последующие годы появились ревизии 2.1, 2.2 и даже 3.0. Самая ходовая версия PCI обладала пропускной способностью 133 Мб/с. Тем временем на рынке видеокарт только разгоралась борьба за место под солнцем. Производители работали над реализацией аппаратного ускорения 3D-графики. Ярчайшие представители той эпохи — разновидности S3 ViRGE и первый комбинированный 2D/3D графический ускоритель ATI Rage. Не выдержав конкуренции, рынок видеокарт начали покидать различные компании. Многие из них — например, Cirrus Logic — перепрофилировались и успешно существуют до сих пор.

Разъемы PCI Express даже внешне не похожи на PCI, от одноименного предшественника остались лишь воспоминания.

Все описанные тогдашние модели использовали интерфейс PCI — до поры до времени он обеспечивал достаточную пропускную способность. История шины как идеального интерфейса для видеокарт стала подходить к концу с появлением на рынке компаний 3Dfx и NVIDIA. К 1997 году последняя представила сравнительно мощную Riva 128, ATI продолжила развивать Rage, а 3Dfx выпустила легендарные 3D-акселераторы Voodoo и Voodoo 2. Несмотря на то, что шина PCI позволяла вытворять фокусы, вроде установки двух Voodoo 2 и объединения их в режим SLI, пропускной способности стало не хватать. И снова на арену вышла Intel.

Главное уязвимое место шины PCI заключается в том, что 133 Мб/с делятся между всеми установленными устройствами. Стало быть, для требовательной графической карты нужен обособленный разъем. На разработку Accelerated Graphics Port (AGP) ушло немного времени. Первую версию интерфейса представили вместе с процессорами Pentium II для Slot 1. Шина AGP 1x обеспечила пропускную способность до 266 Мб/с. Впервые соединение с процессором было прямым — их «общению» никто больше не мешал. Появилась дополнительная адресация, которая позволила видеокартам посылать новый запрос во время получения уже заказанных данных.

Первая волна видеокарт под AGP не заставила себя долго ждать. В числе пионеров были Rendition Verite V2200, 3dfx Voodoo Banshee, NVIDIA RIVA 128, 3Dlabs PERMEDIA 2, Intel i740, ATI Rage, Matrox Millennium II и S3 ViRGE GX/2. Разумеется, многие из них при работе задействовали переходной мост.

В дальнейшем Intel совершенствовала шину AGP — появились AGP 2x, AGP 4x и AGP 8x. Каждая новая версия отличалась от предыдущей еще большей пропускной способностью и улучшенными электротехническими характеристиками. AGP 8x обладала внушительной пропускной способностью 2133 Мб/с. Достигнуть этого предела производители видеокарт не успели, по команде Intel индустрия двинулась дальше.

«Дикая утка» IBM

На протяжении всей истории человечества всегда находились провокаторы в хорошем смысле слова, выдумщики и просто светлые головы. Люди, которые никогда не сидели на месте и старались привнести в мир что-то новое. Встречайте одного из таких — Чета Хита (Chet Heath).

Этот сотрудник IBM с тридцатилетним стажем отвечал за разработку многих ключевых компонентов, которые в том или ином виде присутствуют в компьютерах и по сей день. В нашей статье мы затронули сразу два из них — шину MCA и технологию Plug-n-Play. Подобных ему в IBM называют «дикими утками» (wild duck), и именно они вращают колесо прогресса.

Хит пока является единственным сотрудником IBM, дважды получившим награду компании за технологические достижения! Зная, какое влияние оказал «Голубой гигант» на компьютерную индустрию, можно предположить, что Чету мы обязаны многим.

В июне 2000 года Хит покинул родные пенаты. Стало тесно — руководство компании не захотело принимать в оборот предлагаемую им серверную технологию, а раз так, надо двигать дальше. В данный момент наш герой трудится в роли технологического директора на славу компании OmniCluster. Посмотрим, что еще он явит миру.

Задел на будущее

Переход на PCI Express вызвал немало вопросов. К моменту появления интерфейса в 2004 году многие лишь недоуменно поднимали бровь — зачем нужна пропускная способность порядка 4 Гб/с, если видеокарты до сих пор не используют всех возможностей AGP 8x? И зачем возвращаться к PCI?

Уже потом люди узнали, что от PCI-архитектуры в PCI Express осталось только название, шина таит в себе много новых возможностей. Так, инновационный интерфейс вернул позабытую технологию 3Dfx SLI в виде подретушированных NVIDIA SLI и ATI CrossFire. Как обычно, при переходе на новую шину широко использовали переходные мосты. История повторяется вот уже который раз, и с каждым новым витком она становится все интереснее!

Шина PCI

PCI – параллельная шина ввода-вывода материнской платы для установки дополнительного аппаратного обеспечения. Главным преимуществом стандарта, в свое время, стало то, что разработчик (Intel — PCI Special Interest Group) объявил шину PCI открытым интерфейсом. Данное решение позволило значительно увеличить ассортимент аппаратных устройств ПК, так как производителям не нужно было лицензировать свой продукт для шины PCI.

Особенности шины PCI

Так как шина PCI разрабатывалась с нуля, а не была попыткой апгрейда одного из существующих интерфейсов, разработчики Intel отказались от использования шины процессором, что позволило создать локальную процессоронезависимую шину. Теперь данные между процессором и оперативной памятью, равно как, и между устройствами самой шины PCI передавались независимо друг от друга.

Работа шины PCI полностью основывалась на принципе Plug & Play и управлялась базовой системой ввода-вывода (BIOS), таким образом, при старте компьютера происходило распределение аппаратных ресурсов между устройствами шины PCI.

Особенностью шины также стала её децентрализация, то есть, любое из устройств могло стать главным инициатором транзакций и затребовать столько ресурсов, сколько было необходимо для осуществления текущих операций. При этом использовалась система арбитража и отдельно стоящей логики арбитра. Новые транзакции инициировались в процессе предыдущих запущенных транзакций. Данные и адреса между устройствами шины PCI передавались циклическим методом и использовали «обычную», «пакетную» и «расщеплённую» типы транзакций.

«Обычная» транзакция состояла из одного либо двух циклов адреса.

«Пакетная» транзакция со множеством циклов чтения/записи использовала один цикл адреса на несколько, а не на каждый цикл данных. Транзакция могла быть временно приостановлена обоими устройствами из-за опустошения или переполнения буфера данных.

Принцип «расщеплённая» транзакция заключался в том, что целевое устройство отвечало состоянием «в процессе» и инициатор освобождал шину для других устройств, захватить её снова через арбитраж и повторив транзакцию. Так продолжалось, пока целевое устройство не отвечало «сделано». Данный метод использовался для сопряжения шин с разными скоростями (PCI и FSB-шина процессора) и для предотвращения тупиковых ситуаций в сценарии взаимодействия со многими межшинными мостами.

Что касается параметров, шина PCI работала на частоте 33,33/66,66 МГц и имела разрядность 32/64 бита, а данные и адрес передавались по одним и тем же линиям. Пиковая пропускная способность для 32-разрядного варианта составляла 133 Мбайт/с при частоте 33,33 МГц.

Шина PCI (Peripheral Component Interconnect bus)

Итак, переходим к самому интересному. Что же находится на сегодняшний день внутри большинства наших компьютеров? Естественно, шина PCI. Другой вопрос, почему именно эта шина. Попробуем разобраться.

Итак, разработка шины PCI началась весной 1991 года как внутренний проект корпорации Intel (Release 0.1). Специалисты компании поставили перед собой цель разработать недорогое решение, которое бы позволило полностью реализовать возможности нового поколения процессоров 486/Pentium/P6 (вот уже половина ответа). Особенно подчеркивалось, что разработка проводилась “с нуля”, а не была попыткой установки новых “заплат” на существующие решения. В результате шина PCI появилась в июне 1992 года (R1.0). Разработчики Intel отказались от использования шины процессора и ввели еще одну “антресольную” (mezzanine) шину.

Благодаря такому решению шина получилась, во-первых, процессоро-независимой (в отличие от VLbus), а во-вторых, могла работать параллельно с шиной процессора, не обращаясь к ней за запросами. Например, процессор работает себе с кэшем или системной памятью, а в это время по сети на винчестер пишется информация. Просто здорово! На самом деле идиллии, конечно, не получается, но загрузка шины процессора снижается здорово. Кроме того, стандарт шины был объявлен открытым и передан PCI Special Interest Group, которая продолжила работу по совершенствованию шины (в настоящее время доступен R2.1), и в этом, пожалуй, вторая половина ответа на вопрос “почему PCI?”

Основные возможности шины следующие.

  • Синхронный 32-х или 64-х разрядный обмен данными (правда, насколько мне известно, 64-разрядная шина в настоящее время используется только в Alpha-системах и серверах на базе процессоров Intel Xeon, но, в принципе, за ней будущее). При этом для уменьшения числа контактов (и стоимости) используется мультиплексирование, то есть адрес и данные передаются по одним и тем же линиям.
  • Поддержка 5V и 3.3V логики. Разъемы для 5 и 3.3V плат различаются расположением ключей

Существуют и универсальные платы, поддерживающие оба напряжения. Заметим, что частота 66MHz поддерживается только 3.3V логикой.

  • Частота работы шины 33MHz или 66MHz (в версии 2.1) позволяет обеспечить широкий диапазон пропускных способностей (с использованием пакетного режима):
    • 132 МВ/сек при 32-bit/33MHz;
    • 264 MB/сек при 32-bit/66MHz;
    • 264 MB/сек при 64-bit/33MHz;
    • 528 МВ/сек при 64-bit/66MHz.

    При этом для работы шины на частоте 66MHz необходимо, чтобы все периферийные устройства работали на этой частоте.

  • Полная поддержка multiply bus master (например, несколько контроллеров жестких дисков могут одновременно работать на шине).
  • Поддержка write-back и write-through кэша.
  • Автоматическое конфигурирование карт расширения при включении питания.
  • Спецификация шины позволяет комбинировать до восьми функций на одной карте (например, видео + звук и т.д.).
  • Шина позволяет устанавливать до 4 слотов расширения, однако возможно использование моста PCI-PCI для увеличения количества карт расширения.
  • PCI-устройства оборудованы таймером, который используется для определения максимального промежутка времени, в течении которого устройство может занимать шину.
  • При разработке шины в ее архитектуру были заложены передовые технические решения, позволяющие повысить пропускную способность.

    Шина поддерживает метод передачи данных, называемый “linear burst” (метод линейных пакетов). Этот метод предполагает, что пакет информации считывается (или записывается) “одним куском”, то есть адрес автоматически увеличивается для следующего байта. Естественным образом при этом увеличивается скорость передачи собственно данных за счет уменьшения числа передаваемых адресов.

    Шина PCI является той черепахой, на которой стоят слоны, поддерживающие “Землю” — архитектуру Microsoft/Intel Plug and Play (PnP) PC architecture. Спецификация шины PCI определяет три типа ресурсов: два обычных (диапазон памяти и диапазон ввода/вывода, как их называет компания Microsoft) и configuration space — “конфигурационное пространство”.

    Конфигурационное пространство состоит из трех регионов:

    • заголовка, независимого от устройства (device-independent header region);
    • региона, определяемого типом устройства (header-type region);
    • региона, определяемого пользователем (user-defined region).

    В заголовке содержится информация о производителе и типе устройства — поле Class Code (сетевой адаптер, контроллер диска, мультимедиа и т.д.) и прочая служебная информация.

    Следующий регион содержит регистры диапазонов памяти и ввода/вывода, которые позволяют динамически выделять устройству область системной памяти и адресного пространства. В зависимости от реализации системы конфигурация устройств производится либо BIOS (при выполнении POST — power-on self test), либо программно. Базовый регистр expansion ROM аналогично позволяет отображать ROM устройства в системную память. Поле CIS (Card Information Structure) pointer используется картами cardbus (PCMCIA R3.0). С Subsystem vendor/Subsystem ID все понятно, а последние 4 байта региона используются для определения прерывания и времени запроса/владения.

    Ссылка на основную публикацию
    Статьи c упоминанием слов: