Pci выходы. Версии шины PCI. Как работает шина PCI Express

PCI (англ. Peripheral component interconnect, дословно: взаимосвязь периферийных компонентов) - шина ввода/вывода для подключения периферийных устройств к материнской плате компьютера.

Стандарт на шину PCI определяет:

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

    электрические параметры (например, напряжения);

    логическую модель (например, типы циклов шины, адресацию на шине);

Развитием стандарта PCI занимается организация PCI Special Interest Group.

История создания

Весной 1991 г. компания Intel завершает разработку первой макетной версии шины PCI. Перед инженерами была поставлена задача разработать недорогое и производительное решение, которое позволило бы реализовать возможности процессоров 486, Pentium и Pentium Pro. Кроме того, было необходимо учесть ошибки допущенные VESA при проектировании шины VLB (электрическая нагрузка не позволяла подключать более 3 плат расширения), а также реализовать автоконфигурирование устройств по примеру протокола Autoconfig для компьютеров Amiga.

В 1992 году появляется первая версия шины PCI, Intel объявляет, что стандарт шины будет открытым и создаёт PCI Special Interest Group. Благодаря этому, любой заинтересованный разработчик получает возможность создавать устройства для шины PCI без необходимости приобретения лицензии. Первая версия шины имела тактовую частоту 33 МГц, могла быть 32 или 64 битной, а устройства могли работать с сигналами в 5 В или 3,3 В. Теоретически, пропускная способность шины 133 Мбайт/сек, однако в реальности пропускная способность составляла около 80 Мбайт/сек.

В середине 1993 г., компания Intel выходит из ассоциации VESA и начинает предпринимать активные шаги по продвижению шины PCI на рынке. Ответом на критику со стороны специалистов из конференций Usenet и конкурирующих компаний (характеристики шины были во многом аналогичны, например Zorro III, публиковались статьи об ошибочном дизайне шины) стала PCI 2.0.

В 1995 г., появляется версия PCI 2.1 (ещё одно название - «параллельная шина PCI», которая обеспечила передачу данных по шине с частотой 66 МГц и максимальную скорость передачи в 533 МБ/сек (для 64 битного варианта с частотой 66 МГц). Кроме того, эта шина уже была поддержана на уровне ОС Windows 95 (технология Plug and Play), что позволило пользователям IBM PC больше не чувствовать себя ущемлёнными по отношению к другим платформам. Версия шины PCI 2.1 оказалась настолько популярной, что вскоре уже она была перенесена на платформы с процессорами Alpha, MIPS, PowerPC, SPARC и др.

В 1997 г., в связи с развитием компьютерной графики и разработкой шины AGP, шина PCI перестала удовлетворять новым, повышенным требованием к видеокартам и перестала использоваться для установки видеокарт. Смысла приобретать PCI-видеокарту нет уже более 10 лет.

Конфигурирование

PCI-устройства с точки зрения пользователя самонастраиваемы (plug and play). После старта компьютера, системное программное обеспечение обследует конфигурационное пространство PCI каждого устройства, подключённого к шине и распределяет ресурсы. Каждое устройство может затребовать до семи диапазонов в адресном прострастве памяти PCI или в адресном пространстве ввода-вывода PCI. Кроме того, устройства могут иметь ПЗУ, содержащее исполняемый код для процессоров x86 или PA-RISC, Open Firmware (системное ПО компьютеров на базе SPARC) или драйвер EFI.

Настройка прерываний осуществляется также системным программным обеспечением (в отличие от шины ISA, где настройка прерываний осуществлялась переключателями на карте). Запрос на прерывание на шине PCI передаётся с помощью изменения уровня сигнала на одной из линий IRQ, поэтому имеется возможность работы нескольких устройств с одной линией запроса прерывания; обычно системное ПО пытается выделить каждому устройству отдельное прерывание для увеличения производительности.

Спецификация шины PCI

    частота шины - 33,33 МГц или 66,66 МГц, передача синхронная;

    разрядность шины - 32 или 64 бита, шина мультиплексированная (адрес и данные передаются по одним и тем же линиям);

    пиковая пропускная способность для 32-разрядного варианта, работающего на частоте 33,33 МГц - 133 МБ в секунду;

    адресное пространство памяти - 32 бита (4 байта);

    адресное пространство портов ввода-вывода - 32 бита (4 байта);

    конфигурационное адресное пространство (для одной функции) 256 байт;

    напряжение 3,3 или 5 вольт.

Стандартные модификации PCI

    PCI 2.0 - первая версия базового стандарта, получившая широкое распространение, использовались как карты, так и слоты с сигнальным напряжением только 5В. Пиковая пропускная способность - 133 МБ/с;

    PCI 2.1-3.0 - отличались от 2.0 возможностью одновременной работы нескольких bus-master устройств (т. н. конкурентный режим), а также появлением универсальных карт расширения, способных работать как в 5В, так и в 3.3В слотах (с частотой 33 и 66 МГц соответственно). Пиковая пропускная способность для 33 МГц - 133 МБ/с, а для 66 МГц - 266 МБ/с;

    Версия 2.1 - работа с 3.3 В картами и наличие соответствующих линий питания являлась опциональной;

    Версия 2.2 - сделанные в соответствии с этими стандартами карты расширения имеют универсальный разъём и способны работать практически во всех более поздних разновидностях слотов шины PCI, а также, в некоторых случаях, и в слотах 2.1;

    Версия 2.3 - несовместима с картами PCI 5 В, несмотря на продолжающееся использование 32-битных слотов с 5В-ключом. Карты расширения имеют универсальный разъём, но не способны работать в 5 В-слотах ранних версий (до 2.1 включительно);

    Версия 3.0 - завершает переход на карты PCI 3.3 В, карты PCI 5 В больше не поддерживаются.

    PCI 64 - расширение базового стандарта PCI, появившееся в версии 2.1, удваивающее число линий данных, и, следовательно, пропускную способность. Cлот PCI64 является удлинённой версией обычного PCI-слота. Формально совместимость 32-битных карт с 64-битным слотами (при условии наличия общего поддерживаемого сигнального напряжения) полная, а совместимость 64-битной карты с 32-битным слотами является ограниченной (в любом случае произойдёт потеря производительности). Работает на тактовой частоте 33 МГц. Пиковая пропускная способность - 266 МБ/с;

    Версия 1 - использует слот PCI 64-бита 5В;

    Версия 2 - использует слот PCI 64-бита 3.3В;

    PCI 66 - это PCI 64 работающий на тактовой частоте 66 МГц, использует 3.3В-слоты, карты имеют универсальный, либо 3.3В форм-фактор. Пиковая пропускная способность - 533 МБ/с;

    PCI 64/66 - комбинация PCI 64 и PCI 66, позволяет учетверить скорость передачи данных по сравнению с базовым стандартом PCI, и использует 64-битные 3.3В слоты, совместимые только с универсальными и 3.3В 32-битными картами расширения. Карты стандарта PCI64/66 имеют универсальный (имеющий ограниченную совместимость с 32-битными слотами) либо 3.3В форм-фактор (последний вариант принципиально не совместим с 32-битными 33МГц слотами популярных стандартов). Пиковая пропускная способность - 533 МБ/с;

    PCI-X - расширение PCI64, для всех вариантов шины существуют следующие ограничения по количеству подключаемых к каждой шине устройств: 66МГц - 4, 100МГц - 2, 133МГц - 1 (или 2 если одно или оба устройства не находятся на платах расширения, а уже интегрированы на одну плату вместе с контроллером), 266, 533 МГц и выше - 1;

    Версия 1.0 - введено две новые рабочие частоты: 100 и 133 МГц, а также механизм раздельных транзакций для улучшения производительности при одновременной работе нескольких устройств. Как правило, обратно совместима со всеми 3.3 В и универсальными PCI-картами. Карты обычно выполняются в 64-битном 3.3 В формате и имеют ограниченную обратную совместимость со слотами PCI64/66, а некоторые - в универсальном формате и способны работать (хотя практической ценности это почти не имеет) в обычном PCI 2.2/2.3. Пиковая пропускная способность - 1024 МБ/с;

    Версия 2.0 - введено две новые рабочие частоты: 266 и 533 МГц, а также коррекция ошибок чётности при передаче данных (ECC). Расширяет конфигурационное пространство PCI до 4096 байт и допускает расщепление на 4 независимых 16-битных шины, что применяется исключительно во встраиваемых и промышленных системах, сигнальное напряжение снижено до 1.5 В, но сохранена обратная совместимость разъёмов со всеми картами, использующими сигнальное напряжение 3.3 В. Пиковая пропускная способность - 4096 МБ/с;

    Mini PCI - новый форм-фактор PCI 2.2 для использования в основном в ноутбуках;

    Cardbus - PCMCIA форм-фактор для 32-бит, 33 МГц PCI;

    CompactPCI - использует модули размера Eurocard, включаемые в PCI backplane;

    PC/104-Plus - индустриальная шина, использующая сигнализацию PCI с другим разъёмом;

    PMC - PCI mezzanine card, мезонинная шина, соответствует стандарту IEEE P1386.1;

    ATCA или AdvancedTCA - шина следующего поколения для телекоммуникационной индустрии.

Введение

Шины PCI и PCI-X являются основными шинами расширения ввода/вывода в современных компьютерах; для подключения видеоадаптеров их дополняет порт AGP . Шины расширения ввода/вывода (Expansion Bus) являются средствами подключения системного уровня: они позволяют адаптерам и контроллерам периферийных устройств непосредственно использовать системные ресурсы компьютера — пространство адресов памяти и ввода/вывода, прерывания, прямой доступ к памяти. Устройства, подключенные к шинам расширения, могут и сами управлять этими шинами, получая доступ к остальным ресурсам компьютера. Шины расширения механически реализуются в виде слотов (щелевых разъемов) или штырьковых разъемов; для них характерна малая длина проводников, то есть они сугубо локальны, что позволяет достигать высоких скоростей работы. Эти шины могут и не выводиться на разъемы, но использоваться для подключения устройств в интегрированных системных платах.

Поначалу шина PCI вводилась как пристройка (mezzanine bus) к системам с шиной ISA. Она разрабатывалась в расчете на процессоры Pentium, но хорошо сочеталась и с процессорами i486. Позже PCI на некоторое время стала центральной шиной: она соединялась с шиной процессора высокопроизводительным мостом («северным» мостом), входящим в состав чипсета системной платы. Остальные шины расширения ввода/вывода (ISA/EISA или MCA), а также локальная ISAподобная шина X-BUS и интерфейс LPC, к которым подключаются микросхемы системной платы (ROM BIOS , контроллеры прерываний, клавиатуры, DMA, портов COM и LPT, НГМД и прочие «мелочи»), подключались к шине PCI через «южный» мост. В современных системных платах с «хабовой» архитектурой шину PCI отодвинули на периферию, не ущемляя ее в мощности канала связи с процессором и памятью, но и не нагружая транзитным трафиком устройств других шин.

Шина PCI является синхронной — фиксация всех сигналов выполняется по положительному перепаду (фронту) сигнала CLK. Номинальной частотой синхронизации считается частота 33,3 МГц, при необходимости она может быть понижена. Начиная с версии PCI 2.1 допускается повышение частоты до 66,6 МГц при «согласии» всех устройств на шине. В PCI-X частота может достигать 133 МГц.

В PCI используется параллельная мультиплексированная шина адреса/данных (AD) с типовой разрядностью 32 бит. Спецификация определяет возможность расширения разрядности до 64 бит; в PCI-X версии 2.0 определен также 16-битный вариант шины. При частоте шины 33 МГц теоретическая пропускная способность достигает 132 Mбайт/с для 32-битной шины и 264 Мбайт/с для 64-битной; при частоте синхронизации 66 МГц — 264 Мбайт/с и 528 Мбайт/с соответственно. Однако эти пиковые значения достигаются лишь во время передачи пакета: из-за протокольных накладных расходов реальная средняя пропускная способность шины оказывается ниже.

Сравнительные характеристики шин PCI и PCI-X и других шин расширения PCсовместимых компьютеров приведены в табл. 1.1. Шина ISA из настольных компьютеров уходит, но она сохраняет свои позиции в промышленных и встраиваемых компьютерах, как в традиционном, слотовом, так и в «бутербродном» варианте PC/104. В блокнотных компьютерах широко применяются слоты PCMCIA с шинами PC Card и Card Bus. Шина LPC является современным дешевым средством для подключения нересурсоемких устройств к системной плате.

Шина Пиковая пропускная способность Мбайт/с Каналы DMA Bus-Master ACFG Разрядность данных Разрядность адреса Частота МгГц
ISA-8 4 3 - - 8 20 8
ISA-16 8
7
+
-
16
24
8
LPC 6,7
7
+
-
8/16/32
32
33
EISA
33,3 7 +
+
32
32
8,33
MCA-16
16
-
+
+
16
24
10
MCA-32
20
-
+
+
32
32
10
VLB
132
-
(+)
-
32/64
32
33-50(66)
PCI
133-533
-
+
+
32/64
32/64
33/66
PCI-X
533-4256
-
+
+
16/32/64
32/64
66-133
PCI Express
496-15872
-
+
+
1/2/4/8/12/16/32
32/64
2,5 ГГц
AGP 1x/2x/4x/8x
266/533/1066/2132
-
+
+
32
32/64
66
PCMCIA
10/22
+
-
+
8/16
26
10
Card Bus 132 - + + 32 32 33

ACFG1 -Поддержка автоматического конфигурирования. Для ISA PnP является поздней надстройкой, реализуемой адаптерами и ПО.

Сигнальный протокол шин PCI и PCI-X

Обмен информацией по шине PCI и PCI-X организован в виде транзакций — логически завершенных операций обмена. В типовой транзакции участвуют два устройства —инициатор обмена (initiator), он же ведущее устройство (master), и целевое устройство (ЦУ, target)), оно же ведомое (slave). Правила взаимодействия этих устройств определяются протоколом шины PCI. Устройство может следить за транзакциями на шине и не являясь их участником (не вводя никаких сигналов); режиму слежения соответствует термин Snooping. Есть особый тип транзакции (Special Cycle) — широковещательный, в котором инициатор протокольно не взаимодействует ни с одним из устройств. В каждой транзакции выполняется одна команда — как правило, чтение или запись данных по указанному адресу. Транзакция начинается с фазы адреса, в которой инициатор задает команду и целевой адрес. Далее могут следовать фазы данных, в которых одно устройство (источник данных) помещает данные на шину, а другое (приемник) их считывает. Транзакции, в которых присутствует множество фаз данных, называются пакетными. Есть и одиночные транзакции (с одной фазой данных). Транзакция может завершиться и без фаз данных, если целевое устройство (или инициатор) не готово к обмену. В шине PCI-X добавлена фаза атрибутов, в которой передается дополнительная информация о транзакции.

Сигнальный протокол шин PCI и PCI-X

Состав и назначение интерфейсных сигналов шины раскрывает таблице ниже. Состояния всех сигнальных линий воспринимаются по положительному перепаду CLK, и именно эти моменты в дальнейшем описании подразумеваются под тактами шины (на рисунках отмечены вертикальными пунктирными линиями). В разные моменты времени одними и теми же сигнальными линиями управляют разные устройства шины, и для корректной (бесконфликтной) «передачи полномочий» требуется, чтобы существовал промежуток времени, в течение которого линией не управляет ни одно устройство. На временных диаграммах это событие — так называемый «пируэт» (turnaround) — обозначается парой полукруглых стрелок.

Таблица. сигналы шины PCI

Сигнал
Назначение
AD Address/Data — мультиплексированная шина адреса/данных. В начале транзакции передается адрес, в последующих тактах — данные
C/B # Command/Byte Enable — команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины, задается четырехбитным кодом в фазе адреса
FRAME#
Кадр. Введением сигнала отмечается начало транзакции (фаза адреса), снятие сигнала указывает на то, что последующий цикл передачи данных является последним в транзакции
DEVSEL#
Device Select — устройство выбрано (ответ ЦУ на адресованную к нему транзакцию)
IRDY#
Initiator Ready — готовность ведущего устройства к обмену данными
TRDY#
Target Ready — готовность ЦУ к обмену данными
STOP#
Запрос ЦУ к ведущему устройству на остановку текущей транзакции
LOCK#
Сигнал блокировки (захвата) шины для обеспечения целостного выполнения операции. Используется мостом, которому для выполнения одной операции требуется выполнить несколько транзакций PCI
REQ#
Request — запрос от ведущего устройства на захват шины
GNT#
Grant — предоставление ведущему устройству управления шиной
PAR
Parity — общий бит четности для линий AD и C/BE#
PERR#
Parity Error — сигнал об ошибке четности (для всех циклов, кроме специальных). Вырабатывается любым устройством, обнаружившим ошибку
PME#
Power Management Event — сигнал о событиях, вызывающих изменение режима потребления (дополнительный сигнал, введенный в PCI 2.2)
CLKRUN#
Clock running — шина работает на номинальной частоте синхронизации. Снятие сигнала означает замедление или остановку синхронизации с целью снижения потребления (для мобильных применений)
PRSN #
Present — индикаторы присутствия платы, кодирующие запрос потребляемой мощности. На карте расширения одна или две линии индикаторов соединяются с шиной GND, что воспринимается системной платой
RST#
Reset — сброс всех регистров в начальное состояние (по кнопке «Reset»
и при перезагрузке)
IDSEL
Initialization Device Select — выбор устройства в циклах конфигурационного считывания и записи; на эти циклы отвечает устройство, обнаружившее на данной линии высокий уровень сигнала
SERR#
System Error — системная ошибка. Ошибка четности адреса или данных в специальном цикле или иная катастрофическая ошибка, обнаруженная устройством. Активизируется любым устройством PCI и вызывает NMI
REQ64#
Request 64 bit — запрос на 64-битный обмен. Сигнал вводится 64-битным инициатором, по времени он совпадает с сигналом FRAME#. Во время окончания сброса (сигналом RST#) сигнализирует 64-битному устройству о том, что оно подключено к 64-битной шине. Если 64-битное устройство не обнаружит этого сигнала, оно должно переконфигурироваться на 32-битный режим, отключив буферные схемы старших байтов
ACK64#
Подтверждение 64-битного обмена. Сигнал вводится 64-битным ЦУ, опознавшим свой адрес, одновременно с DEVSEL#. Отсутствие этого подтверждения заставит инициатор выполнять обмен с 32-битной разрядностью
INTA#, INTB#, INTC#, INTD#
Interrupt A, B, C, D — линии запросов прерывания, чувствительность к уровню, активный уровень — низкий, что допускает разделяемость (совместное использование) линий
CLK
Clock — тактовая частота шины. Должна лежать в пределах 20—33 МГц, начиная с PCI 2.1 может быть до 66 МГц, в PCI-X до 100 и 133 МГц
M66EN
66MHz Enable — разрешение частоты синхронизации до 66 МГц (на картах 33 МГц заземлен, на 66 МГц — свободен)
PCIXCAP (38B)

Возможности PCI-X: на платах PCI — заземлен, на PCI-X133 соединен с землей через конденсатор 0,01 мкФ, на PCI-X66 — параллельной RC-цепочкой 10 кОм, 0,01 мкФ.

SDONE
Snoop Done — сигнал завершенности цикла слежения для текущей транзакции. Низкий уровень указывает на незавершенность цикла слежения за когерентностью памяти и кэша. Необязательный сигнал, используется только устройствами шины с кэшируемой памятью. Исключен начиная с PCI 2.2
SBO#
Snoop Backoff — попадание текущего обращения к памяти абонента шины в модифицированную строку кэша. Необязательный сигнал, используется только абонентами шины с кэшируемой памятью при алгоритме обратной записи. Исключен начиная с PCI 2.2
SMBCLK
SMBus Clock — тактовый сигнал шины SMBus (интерфейс I2C). Введен начиная с PCI 2.3
SMBDAT
SMBus Data — последовательные данные шины SMBus (интерфейс I2C). Введен начиная с PCI 2.3
TCK
Test Clock — синхронизация тестового интерфейса JTAG
TDI
Test Data Input — входные данные тестового интерфейса JTAG
TDO
Test Data Output — выходные данные тестового интерфейса JTAG
TMS
Test Mode Select — выбор режима для тестового интерфейса JTAG
TRST
Test Logic Reset — сброс тестовой логики

В каждый момент времени шиной может управлять только одно ведущее устройство, получившее на это право от арбитра. Каждое ведущее устройство имеет пару сигналов — REQ# для запроса на управление шиной и GNT# для подтверждения предоставления управления шиной. Устройство может начинать транзакцию (устанавливать сигнал FRAME#) только при полученном активном сигнале GNT# и дождавшись отсутствия активности шины. Заметим, что за время ожидания покоя арбитр может «передумать» и отдать управление шиной другому устройству с более высоким приоритетом. Снятие сигнала GNT# не позволяет устройству начать следующую транзакцию, а при определенных условиях (см. далее) может заставить прекратить начатую транзакцию. Арбитражем запросов на использование шины занимается специальный узел — арбитр, входящий в мост, соединяющий данную шину с центром. Схема приоритетов (фиксированный, циклический, комбинированный) определяется программированием арбитра.

Для адреса и данных используются общие мультиплексированные линии AD. Четыре мультиплексированные линии C/BE обеспечивают кодирование команд в фазе адреса и разрешение байтов в фазе данных. В транзакциях записи линии C/BE разрешают использование байтов данных одновременно с их присутствием на шине AD, в транзакциях чтения эти сигналы относятся к байтам следующей за ними фазы данных. В фазе адреса (начало транзакции) ведущее устройство активирует сигнал FRAME#, передает целевой адрес по шине AD, а по линиям C/BE# — информацию о типе транзакции (команду). Адресованное целевое устройство отзывается сигналом DEVSEL#. Ведущее устройство указывает на свою готовность к обмену данными сигналом IRDY#, эта готовность может быть выставлена и до получения DEVSEL#. Когда и целевое устройство будет готово к обмену данными, оно установит сигнал TRDY#. Данные по шине AD передаются только при одновременном наличии сигналов IRDY# и TRDY#. С помощью этих сигналов ведущее и целевое устройства согласовывают свои скорости, вводя такты ожидания (wait states). На рисунке ниже приведена временная диаграмма обмена, в которой и ведущее и целевое устройства вводят такты ожидания. Если бы они оба ввели сигналы готовности в конце фазы адреса и не снимали бы их до конца обмена, то в каждом такте после фазы адреса передавались бы по 32 бита данных, что обеспечило бы выход на предельную производительность обмена. В транзакциях чтения после фазы адреса необходим дополнительный такт для пируэта, во время которого инициатор прекращает управление линией AD; целевое устройство сможет взять на себя управление шиной AD только в следующем такте. В транзакции записи пируэт не нужен, поскольку данные передает инициатор.

На шине PCI все транзакции трактуются как пакетные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Количество фаз данных в пакете явно не указывается, но в такте последней фазы данных ведущее устройство при введенном сигнале IRDY# снимает сигнал FRAME#. В одиночных транзакциях сигнал FRAME# активен лишь в течение одного такта. Если устройство не поддерживает пакетные транзакции в ведомом режиме, то оно должно потребовать прекращения пакетной транзакции в течение первой фазы данных (выставив сигнал STOP# одновременно с TRDY#). В ответ на это ведущее устройство завершит данную транзакцию и продолжит обмен последующей транзакцией со следующим значением адреса. После завершающей фазы данных ведущее устройство снимает сигнал IRDY#, и шина переходит в состояние покоя (Idle) — оба сигнала: — FRAME# и IRDY# — находятся в пассивном состоянии.

Инициатор может начать следующую транзакцию и без такта покоя, установив FRAME# одновременно со снятием IRDY#. Такие быстрые смежные транзакции (Fast Back-to-Back) могут быть обращены как к одному, так и к разным целевым устройствам. Первый тип быстрых смежных транзакций поддерживается всеми устройствами PCI, выступающими в роли целевого устройства. На поддержку второго типа смежных транзакций (такая поддержка необязательна) указывает бит 7 регистра состояния. Инициатору разрешают (если он умеет) использовать быстрые смежные транзакции с различными устройствами (разрешение определяется битом 9 регистра команд), только если все агенты шины допускают быстрые обращения. При обмене данных в режиме PCI-X быстрые смежные транзакции недопустимы.

Протокол шины обеспечивает надежность обмена — ведущее устройство всегда получает информацию об отработке транзакции целевым устройством. Средством повышения достоверности обмена является применение контроля четности: линии AD и C/BE# и в фазе адреса, и в фазе данных защищены битом четности PAR (количество установленных битов этих линий, включая PAR, должно быть четным). Действительное значение PAR появляется на шине с задержкой в один такт относительно линий AD и C/BE#. При обнаружении ошибки устройство вырабатывает сигнал PERR# (со сдвигом на такт после появления на шине действительного бита четности). В подсчете четности при передаче данных учитываются все байты, включая и недействительные (отмеченные высоким уровнем сигнала C/BEx#). Состояние бит, даже и в недействительных байтах данных, во время фазы данных должно оставаться стабильным.

Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя (сигналы FRAME# и IRDY# пассивны). Завершение транзакции выполняется либо по инициативе ведущего устройства, либо по инициативе целевого устройства.

Ведущее устройство может завершить транзакцию одним из следующих способов:

  • comletion — нормальное завершение по окончании обмена данными;
  • time-out — завершение по тайм-ауту. Происходит, когда во время транзакции у ведущего устройства отбирают право на управление шиной (снятием сигнала GNT#), и истекает время, указанное в его таймере Latency Timer. Это может произойти, если адресованное целевое устройство оказалось непредвиденно медленным или запланирована слишком длинная транзакция. Короткие транзакции (с одной-двумя фазами данных) даже в случае снятия сигнала GNT# и срабатывания таймера завершаются нормально;
  • master-Abort — прекращение транзакции, когда в течение заданного времени ведущее устройство не получает ответа от целевого устройства (сигнала DEVSEL#).

Транзакция может быть прекращена по инициативе целевого устройства; для этого оно может ввести сигнал STOP#. Возможны три типа прекращения транзакции:

  • retry — повтор, введение сигнала STOP# при пассивном сигнале TRDY# до первой фазы данных. Эта ситуация возникает, когда целевое устройство изза внутренней занятости не успевает выдать первые данные в положенный срок (16 тактов). Прекращение типа retry является указанием ведущему устройству на необходимость повторного запуска той же транзакции;
  • disconnect — отключение, введение сигнала STOP# в течение или после первой фазы данных. Если сигнал STOP# введен при активном сигнале TRDY# очередной фазы данных, то эти данные передаются, на чем транзакция и завершается. Если сигнал STOP# выставлен при пассивном сигнале TRDY#, то транзакция завершается без передачи данных очередной фазы. Отключение производится, когда целевое устройство не способно своевременно выдать или принять очередную порцию данных пакета. Отключение является указанием ведущему устройству на необходимость повторного запуска этой транзакции, но с модифицированным стартовым адресом;
  • target-abort — отказ, введение сигнала STOP# одновременно со снятием сигнала DEVSEL# (в предыдущих случаях во время появления сигнала STOP# сигнал DEVSEL# был активен). После этого данные уже не передаются. Отказ производится, когда целевое устрйство обнаруживает фатальную ошибку или иные условия, по которым оно уже никак не сможет обслужить данный запрос (в том числе и неподдерживаемую команду).

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

Прекращение типа retry используется для организации отложенных транзакций (delayed transactions). Отложенные транзакции используются только медленными целевыми устройствами, а также мостами PCI при трансляции транзакций на другую шину. Прекращая (для инициатора) транзакцию условием retry, целевое устройство внутренне выполняет данную транзакцию. Когда инициатор повторит эту транзакцию (выдаст ту же команду с тем же адресом и тем же набором сигналов C/BE# в фазе данных), у целевого устройства (или моста) уже будет готов результат (данные чтения или состояние выполнения записи), который оно быстро вернет инициатору. Результат отложенной транзакции, выполненной данным устройством, устройство или мост должны хранить до тех пор, пока результаты не будут запрошены инициатором. Однако он может и «забыть» повторить транзакцию (из-за каких-либо нештатных ситуаций). Чтобы избежать переполнения буфера хранения результатов, устройству приходится отбрасывать (discard) эти результаты. Отбрасывание может быть выполнено без побочных эффектов, если откладывалась транзакция к памяти, допускающей предвыборку (с атрибутом prefetchable, см. далее). Остальные типы транзакций в общем случае безнаказанно отбрасывать нельзя (может нарушиться целостность данных), для них отбрасывание разрешается только после безрезультатного ожидания повтора в течение 215 тактов шины (по срабатыванию discard timer). Об этой особой ситуации устройство может сообщить своему драйверу (или всей системе).

Инициатор транзакции может потребовать монопольного использования шины PCI на все время выполнения операции обмена, требующей нескольких шинных транзакций. Так, например, если центральный процессор выполняет инструкцию модификации данных в ячейке памяти, принадлежащей устройству PCI, ему нужно прочитать данные из устройства, модифицировать их в своем АЛУ и вернуть результат в устройство. Чтобы в эту операцию не вклинивались транзакции от других инициаторов (что чревато нарушением целостности данных), главный мост выполняет ее как блокированную — на все время исполнения операции подается шинный сигнал LOCK#. Этот сигнал никак не используется (и не вырабатывается) обычными устройствами PCI (не мостами); он используется только мостами для управления арбитражем.

Аппаратные прерывания в PC-совместимых компьютерах

Устройства PCI имеют возможность сигнализации об асинхронных событиях с помощью прерываний. На шине PCI возможны четыре типа сигнализации прерываний:

  • традиционная проводная сигнализация по линиям INTx;
  • проводная сигнализация событий управления энергопотреблением по линии PME#;
  • сигнализация с помощью сообщений — MSI;
  • сигнализация фатальной ошибки по линии SERR#.

В данной главе рассматриваются все эти типы сигнализации, а также общая картина поддержки аппаратных прерываний в PC-совместимых компьютерах.

Аппаратные прерывания в PC-совместимых компьютерах

Аппаратные прерывания обеспечивают реакцию процессора на события, происходящие асинхронно по отношению к исполняемому программному коду. Напомним, что аппаратные прерывания делятся на маскируемые и немаскируемые. Процессор x86 по сигналу прерывания приостанавливает выполнение текущего потока инструкций, сохраняя в стеке состояние (флаги и адрес возврата), и выполняет процедуру обработки прерывания. Конкретная процедура обработки выбирается из таблицы прерываний по вектору прерывания — однобайтному номеру элемента в данной таблице. Вектор прерывания доводится до процессора разными способами: для немаскируемого прерывания он фиксирован, для маскируемых прерываний его сообщает специальный контроллер прерываний. Кроме аппаратных прерываний у процессоров x86 имеются также внутренние прерывания — исключения (exceptions), связанные с особыми случаями выполнения инструкций, и программные прерывания. Для исключений вектор определяется самим особым условием, и под исключения фирмой Intel зарезервированы первые 32 вектора (0-31 или 00-1Fh). В программных прерываниях номер вектора содержится в самой инструкции (программные прерывания — это лишь специфический способ вызова процедур по номеру, с предварительным сохранением в стеке регистра флагов). Все эти прерывания используют один и тот же набор из 256 возможных векторов. Исторически сложилось так, что векторы, используемые для аппаратных прерываний, пересекаются с векторами исключений и векторами для программных прерываний, используемых для вызовов сервисов BIOS и DOS. Таким образом, для ряда номеров векторов процедура, на которую ссылается таблица прерываний, должна в начале содержать программный код, определяющий, по какому поводу она вызвана: из-за исключения, аппаратного прерывания или же для вызова какого-то системного сервиса. Таким образом, процедура, собственно и обеспечивающая реакцию процессора на то самое асинхронное событие, будет вызвана только после ряда действий по идентификации источника прерываний. Здесь еще заметим, что один и тот же вектор прерывания может использоваться и несколькими периферийными устройствами — это так называемое разделяемое использование прерываний, которое подробно обсуждается ниже.

Вызов процедуры обслуживания прерываний в реальном и защищенном режимах процессора существенно различается:

  • в реальном режиме таблица прерываний содержит 4-байтные дальние указатели (сегмент и смещение) на соответствующие процедуры, которые вызываются дальним вызовом (Call Far с предварительным сохранением флагов). Размер (256 × 4 байт) и положение таблицы (начинается с адреса 0) фиксированы;
  • в защищенном режиме (и в его частном случае — режиме V86) таблица содержит 8-байтные дескрипторы прерываний, которые могут быть шлюзами прерываний (Interrupt Gate), ловушек (Trap Gate) или задач (Task Gate). Размер таблицы может быть уменьшен (максимальный — 256 × 8 байт), положение таблицы может меняться (определяется содержимым регистра IDT процессора). Код обработчика прерываний должен быть не менее привилегированным, чем код прерываемой задачи (иначе сработает исключение защиты). По этой причине обработчики прерываний должны работать на уровне ядра ОС (на нулевом уровне привилегий). Смена уровня привилегии при вызове обработчика приводит к дополнительным затратам времени на переопределение стека. Прерывания, вызывающие переключение задач (через Task Gate), расходуют значительноевремя на переключение контекста — выгрузку регистров процессора в сегмент состояния старой задачи и их загрузку из сегмента состояния новой.

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

На немаскируемое прерывание (NMI — Non-Maskable Interrrupt) процессор реагирует всегда (если обслуживание предыдущего NMI завершено); этому прерыванию соответствует фиксированный вектор 2. Немаскируемые прерывания в PC используются для сигнализации о фатальных аппаратных ошибках. Сигнал на линию NMI приходит от схем контроля памяти (четности или ECC), от линий контроля шины ISA (IOCHK) и шины PCI (SERR#). Сигнал NMI блокируется до входа процессора установкой в 1 бита 7 порта 070h, отдельные источники разрешаются и идентифицируются битами порта 061h:

  • бит 2 R/W — ERP — разрешение контроля ОЗУ и сигнала SERR# шины PCI;
  • бит 3 R/W — EIC — разрешение контроля шины ISA;
  • бит 6 R — IOCHK — ошибка контроля на шине ISA (сигнал IOCHK#);
  • бит 7 R — PCK — ошибка четности ОЗУ или сигнал SERR# на шине PCI.

Реакция процессора на маскируемые прерывания может быть задержана сбросом его внутреннего флага IF (инструкция CLI запрещает прерывания, STI — разрешает). Маскируемые прерывания используются для сигнализации о событиях в устройствах. По возникновении события, требующего реакции, адаптер (контроллер) устройства формирует запрос прерывания, который поступает на вход контроллера прерываний. Задача контроллера прерываний — довести до процессора запрос прерывания и сообщить вектор, по которому выбирается программная процедура обработки прерываний.

Процедура обработки прерывания от устройства должна выполнить действия по обслуживанию данного устройства, включая сброс его запроса для обеспечения возможности реакции на следующие события, и послать команды завершения в контроллер прерываний. Вызывая процедуру обработки, процессор автоматически сохраняет в стеке значение всех флагов и сбрасывает флаг IF, что запрещает маскируемые прерывания. При возврате из этой процедуры (по инструкции IRET) процессор восстанавливает сохраненные флаги, в том числе и установленный (до прерывания) IF, что снова разрешает прерывания. Если во время работы обработчика прерываний требуется реакция на иные прерывания (более приоритетные), то в обработчике должна присутствовать инструкция STI. Особенно это касается длинных обработчиков; здесь инструкция STI должна вводиться как можно раньше, сразу после критической (не допускающей прерываний) секции. Следующие прерывания того же или более низкого уровня приоритета контроллер прерываний будет обслуживать только после получения команды завершения прерывания EOI (End Of Interrupt).

В IBM PC-совместимых компьютерах применяется два основных типа контроллеров прерываний:

  • PIC (Peripheral Interrupt Controller) — периферийный контроллер прерываний, программно совместимый с «историческим» контроллером 8259A, применявшимся еще в первых моделях IBM PC. Со времен IBM PC/AT применяется связка из пары каскадно соединенных PIC, позволяющая обслуживать до 15 линий запросов прерываний;
  • APIC (Advanced Peripheral Interrupt Controller) — усовершенствованный периферийный контроллер прерываний, введенный для поддержки мультипроцессорных систем в компьютеры на базе процессоров 4-5 поколений (486 и Pentium) и используемый поныне для более поздних моделей процессоров. Кроме поддержки мультипроцессорных конфигураций современный APIC позволяет увеличивать число доступных линий прерываний и обрабатывать запросы прерываний от устройств PCI, посылаемые через механизм сообщений (MSI). Компьютер, оснащенный контроллером APIC, обязательно имеет возможность функционировать и в режиме, совместимом со стандартной связкой пары PIC. Этот режим включается по аппаратному сбросу (и включению питания), что позволяет использовать старые ОС и приложения MS DOS, «не знающие» APIC и мультипроцессирования.

Традиционная схема формирования запросов прерываний с использованием пары PIC изображена на рисунке ниже.

На входы контроллеров прерываний поступают запросы от системных устройств (клавиатура, системный таймер, CMOS-таймер, сопроцессор), периферийных контроллеров системной платы и карт расширения. Традиционно все линии запросов, не занятые перечисленными устройствами, присутствуют на всех слотах шины ISA/ EISA. Эти линии обозначаются как IRQx и имеют общепринятое назначение (см. таблицу ниже). Часть этих линий отдается в распоряжение шины PCI. В таблице отражены и приоритеты прерываний — запросы расположены в порядке их убывания. Номера векторов, соответствующих линиям запросов контроллеров, система приоритетов и некоторые другие параметры задаются программно при инициализации контроллеров. Эти основные настройки остаются традиционными для обеспечения совместимости с программным обеспечением, но различаются для ОС реального и защищенного режимов. Так, например, в ОС Windows базовые векторы для ведущего и ведомого контроллеров — 50h и 58h соответственно.

Имя (номер 1) Вектор 2 Вектор 3 Контроллер/маска Описание
NMI 02h


IRQ0 08h 50h
#1/1h
Контроль канала, четность памяти (в XT — сопроцессор)
IRQ1 09h 51h
#1/2h
Клавиатура
IRQ2 0Ah 52h
#1/4h
XT — резерв, AT — недоступно (подключается каскад IRQ8-IRQ15)
IRQ8 70h
58h
#2/1h
CMOS RTC — часы реального времени
IRQ9 71h
59h
#2/2h
Резерв
IRQ10 72h
5Ah
#2/4h
Резерв
IRQ11 73h
5Bh
#2/8h
Резерв
IRQ12 74h
5Ch
#2/10h
PS/2-Mouse (резерв)
IRQ13 75h
5Dh
#2/20h
Математический сопроцессор
IRQ14 76h
5Eh
#2/40h
HDC — контроллер НЖМД
IRQ15 77h
5Fh
#2/80h
Резерв
IRQ3 0Bh
52h
#1/4h
COM2, COM4
IRQ4 0Ch
53h
#1/10h
COM1, COM3
IRQ5I 0Dh
54h
#1/20h
XT — HDC, AT — LPT2, Sound (резерв)
IRQ6 0Eh
55h
#1/40h
FDC — контроллер НГМД
IRQ7 0Fh
56h
#1/80h
LPT1 — принтер

*1 Запросы прерываний 0, 1, 8 и 13 на шины расширения не выводятся.
*2 Указаны номера векторов при работе в реальном режиме процессора.
*3 Указаны номера векторов при работе в ОС Windows.

Каждому устройству, для поддержки работы которого требуются прерывания, должен быть назначен свой номер прерывания. Назначения номеров прерываний выполняются с двух сторон: во-первых, адаптер, нуждающийся в прерываниях, должен быть сконфигурирован на использование конкретной линии шины (джамперами или программно). Во-вторых, программное обеспечение, поддерживающее данный адаптер, должно быть проинформировано о номере используемого вектора. В процессе назначения прерываний может участвовать система PnP для шин ISA и PCI, для распределения линий запросов между шинами служат специальные параметры CMOS Setup. Современные ОС имеют возможность изменить назначение запросов относительно распределения, сделанного через CMOS Setup.

После того как произведено конфигурирование системы прерываний (проинициализирован контроллер прерываний, устройствам назначены линии запросов и установлены указатели на процедуры обработки), отработка маскируемых аппаратных прерываний происходит следующим образом:

  • устройство по событию прерывания возбуждает назначенную ему линию запроса прерывания;
  • контроллер принимает сигналы запросов от источников прерываний (сигналы IRQx) и при наличии незамаскированного запроса подает сигнал общего запроса прерывания (сигнал INTR) процессору x86;
  • процессор, реагируя на запрос (когда прерывания флагом IF разрешены), сохраняет в стеке содержимое регистра флагов и адрес возврата, после чего формирует шинный цикл INTA (Interrupt Acknowledge, подтверждение прерывания), который доводится до контроллера прерываний;
  • в момент получения сигнала INTA контроллер прерываний фиксирует состояние своих входов запросов — к этому моменту их состояние могло измениться: могли появиться новые запросы или пропасть запрос от «нетерпеливого» устройства. Контроллер анализирует поступившие запросы в соответствии с запрограммированной схемой приоритетов и посылает процессору вектор прерывания, соответствующий самому приоритетному незамаскированному запросу, присутствующему на входе контроллера в момент подачи шинной команды INTA. При этом контроллер выполняет и некоторые действия в соответствии с установленной приоритетной политикой, учитывающие, какой именно вектор был послан (какой из запросов пошел на обслуживание);
  • получив вектор прерывания, процессор по его номеру вызывает соответствующую процедуру обработки прерывания. Если данный вектор прерывания используется не только для аппаратных прерываний, но и для исключений и/или программных прерываний, то процедура в первую очередь должна определить, к какому из этих типов относится данное событие. Для этого процедура может обратиться к контроллеру PIC (прочитать регистр ISR) и проанализировать состояние регистров процессора. Дальнейшие шаги рассматриваются для случая, когда обнаружено аппаратное прерывание;
  • процедура обработки прерывания должна идентифицировать источник прерывания — определить устройство, его вызвавшее. В случае разделяемого использования несколькими устройствами данного номера запроса (следовательно, и вектора) идентифицировать источник прерывания можно только последовательными обращениями к регистрам каждого из этих устройств. При этом следует учитывать возможность поступления запросов от нескольких устройств одновременно или в процессе обработки прерывания от одного из них;
  • процедура должна обслужить устройство-источник прерывания — выполнить «полезные» действия, связанные с событием, о котором и сигнализировало устройство. Это обслуживание должно обеспечить и снятие сигнала запроса прерывания от данного устройства. В случае разделяемых прерываний источников может быть и несколько, и все они требуют обслуживания;
  • если обработка прерывания занимает значительное время, в течение которого требуется реакция системы на более приоритетные запросы, то после критической секции в обработчик включают инструкцию STI, устанавливающую флаг разрешения прерываний (IF) в процессоре. С этого момента возможны вложенные прерывания, прерывающие работу данного обработчика другой, более приоритетной процедурой;
  • процедура обработки прерывания должна послать контроллеру команду завершения обработки прерывания EOI (End Of Interrupt), по которой контроллер разрешит последующий прием сигнала с обслуженного входа и менее приоритетных. Это должно быть сделано после снятия сигнала прерывания от обслуженных устройств, иначе контроллер после EOI пошлет повторный запрос. Обработчик прерывания, для которого запрос поступил от ведомого контроллера, должен послать EOI как ведомому, так и ведущему контроллеру. Участок обработчика, начинающийся от подачи команды EOI до завершения (инструкции IRET), должен быть непрерываемым, то есть он является критической секцией. Если обработчик разрешал вложенные прерывания, то перед подачей команды EOI должна присутствовать инструкция CLI, запрещающая прерывания;
  • завершается обработка прерывания инструкцией IRET, по которой процессор возвращается к выполнению прерванного потока инструкций, предварительно извлекая из стека содержимое регистра флагов. При этом аппаратные прерывания снова окажутся разрешенными.

Эта последовательность описана применительно к обычному контроллеру прерываний (PIC), в системах с APIC меняется способ доставки вектора прерывания от контроллера к процессору, а в прерываниях MSI меняется способ доставки сигнала от устройства к контроллеру APIC. Эти нюансы описаны в последующих разделах.

Общая информация

Мосты PCI (PCI Bridge) — специальные аппаратные средства соединения шин PCI (и PCI-X) между собой и с другими шинами. Главный мост (Host Bridge) используется для подключения PCI к центру компьютера (системной памяти и процессору). «Почетной обязанностью» главного моста является генерация обращений к конфигурационному пространству под управлением центрального процессора, что позволяет хосту (центральному процессору) выполнять конфигурирование всей подсистемы шин PCI. В системе может быть и несколько главных мостов, что позволяет предоставить высокопроизводительную связь с центром большему числу устройств (число устройств на одной шине ограниченно). Из этих шин одна назначается условно главной (bus 0).

Равноранговые мосты PCI (PeertoPeer Bridge) используются для подключения дополнительных шин PCI. Эти мосты всегда вносят дополнительные накладные расходы на передачу данных, так что эффективная производительность при обмене устройства с центром снижается с каждым встающим на пути мостом.

Для подключения шин PCMCIA, CardBus, MCA, ISA/EISA, X-Bus и LPC используются специальные мосты, входящие в чипсеты системных плат или же являющиеся отдельными устройствами PCI (микросхемами). Эти мосты выполняют преобразование интерфейсов соединяемых ими шин, синхронизацию и буферизацию обменов данных.

Каждый мост программируется — ему указываются диапазоны адресов в пространствах памяти и ввода-вывода, отведенные устройствам его шин. Если адрес ЦУ текущей транзакции на одной шине (стороне) моста относится к шине противоположной стороны, мост транслирует транзакцию на соответствующую шину и обеспечивает согласование протоколов шин. Таким образом, совокупность мостов PCI выполняет маршрутизацию (routing) обращений по связанным шинам. Если в системе имеется несколько главных мостов, то сквозная маршрутизация между устройствами разных шин может оказаться невозможной: главные мосты друг с другом могут оказаться связанными лишь через магистральные пути контроллера памяти. Поддержка трансляции всех типов транзакций PCI через главные мосты в этом случае оказывается чересчур сложной, а потому спецификацией PCI строго и не требуется. Таким образом, все активные устройства всех шин PCI могут обращаться к системной памяти, но возможность равнорангового общения может оказаться в зависимости от принадлежности этих устройств той или иной шине PCI.

Применение мостов PCI предоставляет такие возможности, как:

  • увеличение возможного числа подключенных устройств, преодолевая ограничения электрических спецификаций шины;
  • разделение устройств PCI на сегменты — шины PCI — с различными характеристиками разрядности (32/64 бит), тактовой частоты (33/66/100/133 МГц), протокола (PCI, PC-X Mode 1, PCI-X Mode 2, PCI Express). На каждой шине все абоненты равняются на самого слабого участника; правильная расстановка устройств по шинам позволяет с максимальной эффективностью использовать возможности устройств и системной платы;
  • организация сегментов с «горячим» подключением/отключением устройств;
  • организация одновременного параллельного выполнения транзакций от инициаторов, расположенных на разных шинах.

Каждый мост PCI соединяет только две шины: первичную (primary bus), находящуюся ближе к вершине иерархии, с вторичной (secondary bus); интерфейсы моста, которыми он связан с этими шинами, называются соответственно первичным и вторичным. Допускается только чисто древовидная конфигурация, то есть две шины соединяются друг с другом лишь одним мостом и нет «петель» из мостов. Шины, подсоединяемые ко вторичному интерфейсу данного моста другими мостами, называются подчиненными (subordinated bus). Мосты PCI образуют иерархию шин PCI, на вершине которой находится главная шина с нулевым номером, подключенная к главному мосту. Если главных мостов несколько, то из их шин (равных друг другу по рангу) условно главной будет шина, которой назначен нулевой номер.

Мост должен выполнять ряд обязательных функций:

  • обслуживать шину, подключенную к его вторичному интерфейсу:
  • выполнять арбитраж — прием сигналов запроса REQx# от ведущих устройств шины и предоставление им права на управление шиной сигналами GNTx#
  • парковать шину — подавать сигнал GNTx# какому-то устройству, когда управление шиной не требуется ни одному из задатчиков;
  • генерировать конфигурационные циклы типа 0 с формированием индивидуальных сигналов IDSEL к адресуемому устройству PCI;
  • «подтягивать» управляющие сигналы к высокому уровню;
  • определять возможности подключенных устройств и выбирать удовлетворяющий их режим работы шины (частота, разрядность, протокол);
  • формировать аппаратный сброс (RST#) по сбросу от первичного интерфейса и по команде, сообщая о выбранном режиме специальной сигнализацией.
  • поддерживать карты ресурсов, находящихся по разные стороны моста;
  • отвечать под видом целевого устройства на транзакции, инициированные мастером на одном интерфейсе и адресованные к ресурсу, находящемся со стороны другого интерфейса; транслировать эти транзакции на другой интерфейс, выступая в роли ведущего устройства (мастера), и передавать их результаты истинному инициатору.

Мосты, выполняющие данные функции, называются прозрачными (transparrent bridge); для работы с устройствами, находящимися за такими мостами, не требуется дополнительных драйверов моста. Именно такие мосты описаны в спецификации PCI Bridge 1.1, и для них, как устройств PCI, есть специальный класс (06). В данном случае подразумевается «плоская» модель адресации ресурсов (памяти и ввода-вывода): каждое устройство имеет свои адреса, уникальные (не пересекающиеся с другими) в пределах данной системы (компьютера).

Существуют и непрозрачные мосты (non-transparrent bridge), которые позволяют организовывать обособленные сегменты со своими локальными адресными пространствами. Непрозрачный мост выполняет трансляцию (преобразование) адресов для транзакций, у которых инициатор и целевое устройство находятся по разные стороны моста. Досягаемыми через такой мост могут быть и не все ресурсы (диапазоны адресов) противоположной стороны. Непрозрачные мосты используются, например, когда в компьютере выделяется подсистема «интеллигентного ввода-вывода» (I20) со своим процессором ввода-вывода и локальным адресным пространством.

Общая информация

В шину PCI изначально заложены возможности автоматического конфигурирования системных ресурсов (пространств памяти и ввода-вывода и линий запроса прерываний). Автоматическое конфигурирование устройств (выбор адресов и прерываний) поддерживается средствами BIOS и ОС; оно ориентировано на технологию PnP. Стандарт PCI определяет для каждой функции конфигурационное пространство размером до 256 регистров (8-битных), не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным командам шины Configuration Read и Configuration Write, вырабатываемым с помощью одного из аппаратно-программных механизмов, описанных далее. В этом пространстве есть области, обязательные для всех устройств, и специфические. Конкретное устройство может иметь регистры не во всех адресах, но должно поддерживать нормальное завершение для адресуемых к ним операций. При этом чтение несуществующих регистров должно возвращать нули, а запись выполняться как холостая операция.

Конфигурационное пространство функции начинается со стандартного заголовка, в котором содержатся идентификаторы производителя, устройства и его класса, а также описание требуемых и занимаемых системных ресурсов. Структура заголовка стандартизована для обычных устройств (тип 0), мостов PCI-PCI (тип 1), мостов PCI-CardBus (тип 2). Тип заголовка определяет расположение общеизвестных регистров и назначение их бит. После заголовка могут располагаться регистры, специфичные для устройства. Для стандартизованных свойств (capability) устройств (например, управления энергопотреблением) в конфигурационном пространстве имеются блоки регистров известного назначения. Эти блоки организуются в цепочки, на первый такой блок есть ссылка в стандартном заголовке (CAP_PTR); в первом же регистре блока есть ссылка на следующий блок (или 0, если данный блок — последний). Таким образом, просмотрев цепочку, конфигурационное ПО получает список всех доступных свойств устройства и их позиций в конфигурационном пространстве функции. В PCI 2.3 определены следующие идентификаторы CAP_ID, часть из которых мы рассмотрим:

  • 01 — управление энергопотреблением;
  • 02 — порт AGP ;
  • 03 — VPD (Vital Product Data), данные, дающие исчерпывающее описание аппаратных (возможно, и программных) свойств устройств;
  • 04 — нумерация слотов и шасси;
  • 05 — прерывания MSI;
  • 06 — Hot Swap, горячее подключение для Compact PCI;
  • 07 — протокольные расширения PCI-X;
  • 08 — зарезервировано для AMD;
  • 09 — на усмотрение производителя (Vendor Specific);
  • 0Ah — отладочный порт (Debug Port);
  • 0Bh — PCI Hot Plug, стандартное обеспечение «горячего подключения».

В PCI-X для устройств Mode 2 конфигурационное пространство расширено до 4096 байт; в расширенном пространстве могут присутствовать расширенные описания свойств.

После аппаратного сброса (или при включении питания) устройства PCI не отвечают на обращения к пространству памяти и ввода-вывода, они доступны только для операций конфигурационного считывания и записи. В этих операциях устройства выбираются по индивидуальным сигналам IDSEL, чтением регистров конфигурационное ПО узнает о потребностях в ресурсах и возможных вариантах конфигурирования устройств. После распределения ресурсов, выполняемого программой конфигурирования (во время теста POST или при загрузке ОС), в конфигурационные регистры устройства записываются параметры конфигурирования (базовые адреса). Только после этого устройствам (точнее, функциям) устанавливаются биты, разрешающие им отвечать на команды обращения к памяти и портам ввода-вывода, а также самим управлять шиной. Для того чтобы всегда можно было найти работоспособную конфигурацию, все ресурсы, занимаемые картами, должны быть перемещаемыми в своих пространствах. Для многофункциональных устройств каждая функция должна иметь собственное конфигурационное пространство. Устройство может одни и те же регистры отображать и на память, и на пространство ввода-вывода. При этом в их конфигурационных регистрах должны присутствовать оба описателя, но драйвер должен использовать только один способ обращения (предпочтительно через память).

В заголовке конфигурационного пространства описываются потребности в адресах трех типов:

  • регистры в пространстве ввода-вывода (I/O Space));
  • регистры ввода-вывода, отображенные на память (Memory Mapped I/O). Это область памяти, обращения к которой должны производиться в строгом соответствии с тем, что запрашивает инициатор обмена. Обращение к этим регистрам может изменять внутреннее состояние периферийных устройств;
  • память, допускающая предвыборку (Prefetchable Memory). Это область памяти, «лишнее» чтение которой (с неиспользуемыми результатами) не приводит к побочным эффектам, все байты считываются независимо от сигналов BE#, и записи отдельных байтов мостом могут быть объединены (то есть это память в чистом виде).

Потребности в адресах указываются в регистрах базовых адресов — BAR (Base Address Register). Конфигурирующая программа может определить и размеры требуемых областей. Для этого после аппаратного сброса она должна считать и сохранить значения базовых адресов (это будут адреса по умолчанию), записать в каждый регистр FFFFFFFFh и снова считать их значение. В полученных словах нужно обнулить биты декодирования типа (биты для памяти и биты для вводавывода), инвертировать и инкрементировать полученное 32-битное слово — результатом будет длина области (для портов биты игнорировать). Метод подразумевает, что длина области выражается числом 2n и область выровнена естественным образом. Стандартный заголовок вмещает до 6 регистров базового адреса, но при использовании 64-битной адресации число описываемых блоков сокращается. Неиспользуемые регистры BAR при чтении всегда должны возвращать нули.

В PCI имеется поддержка старых (legacy) устройств (VGA, IDE), которые сами себя таковыми объявляют по коду класса в заголовке. Их традиционные (фиксированные) адреса портов не заявляются в конфигурационном пространстве, но как только устанавливается бит разрешения обращения к портам, устройствам разрешается ответ и по этим адресам.

Шина ISA

Стандарты шинного интерфейса

По мере увеличения разрядности шины и увеличения тактовой частоты в компьютере, изменялись и стандарты шинного интерфейса. В настоящее время в компьютерах используются следующие основные стандарты шинного интерфейса:

· шина ISA;

· шина PCI;

Другие стандарты, такие как МСА (Micro Channel Architecture – микроканальная архитектура), EISA (Extended Industry Standard Architecture – расширенная стандартная промышленная архитектура) и VESA, обычно называемый локальной шиной, VL-шиной и разработанный ассоциацией VESA (Video Electronics Standards Association – ассоциация стандартов видеоэлектроники), в настоящее время не используются.

Первый распространенный стандарт шинного интерфейса – шина ISA (Industry Standard Architecture – стандартная промышленная архитектура) была разработана фирмой IBM при создании компьютера IBM PC AT (1984 г.). Эта 16-битовая шина с тактовой частотой 8,33 МГц допускает установку как 8-битовых, так и 16-битовых плат расширения (с пропускной способностью соответственно 8,33 и 16,6 Мбайт/с).

Обмен данными между высокоскоростными внешними устройствами и оперативной памятью выполняется при участии процессора, что в некоторых случаях может привести к снижению производительности компьютера. В режиме прямого доступа, введенном в шине ISA, периферийное устройство связано с оперативной памятью напрямую через каналы DMA (Direct Memory Access – прямой доступ в память). Наиболее эффективным такой режим обмена данными бывает в ситуациях, когда требуется высокая скорость для передачи большого объема информации (например, при загрузке данных в память с жесткого диска).

Для организации прямого доступа в память используется контроллер DMA, встроенный в одну из микросхем на материнской плате. Устройство, требующее прямой дос­туп к памяти, по одному из свободных каналов DMA обращается к кон­троллеру, сообщая ему путь (адрес), откуда или куда переслать данные, на­чальный адрес блока данных и объем данных. Инициализация обмена происходит с участием процессора, но собственно передача данных осуществляется уже под управлением контроллера DMA, а не процессора.

Шина ISA отсутствует в современных материнских платах, и сохранилась только в старых компьютерах.

Шина PCI (Peripheral Component Interconnect – взаимосвязь периферийных компонент) была разработана фирмой Intel с участием ряда других фирм в 1993 г. для своего нового высокопроизводительного процессора Pentium.

В настоящее время все стандарты PCI разрабатываются и поддерживаются организацией PCI-SIG (PCI – Special Interest Group) (PCI – Группа специальных интересов).


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

Для ускорения передачи данных в шине PCI используется пакетный режим (burst mode). В этом режиме данные, расположенные по какому-либо адресу, передаются не по одному, а сразу целым набором.

Основополагающим принципом, положенным в основу шины PCI, является применение так называемых мостов (bridges), которые осуществляют связь между шиной PCI и другими шинами. Важной особенностью шины PCI является и то, что в ней вместо каналов DMA реализован более эффективный режим управления шиной (Bus Mastering), который позволяет внешнему устройству управлять шиной без участия процессора. Во время передачи информации устройство, поддерживающее Bus Mastering, захватывает шину и становится главным. При таком подходе центральный процессор освобож­дается для выполнения других задач, пока происходит передача данных. Это особенно важно при использовании многозадачных операционных сис­тем типа Windows и Unix.

Разъемы для карты PCI на материнской плате приведен на рис. ?????.

Рис. ?????. Разъемы для карты PCI на материнской плате:

а) 32-разрядный разъем; б) 64-разрядный разъем

Дополнением к стандарту PCI является стандарт PCI Hot Plug v1.0. Устройства PCI, удовлетворяющие этому стандарту, можно вставлять в разъем или вынимать из разъема во время работы компьютера – так называемое «горячее» подключение (hot plug).

Шины стандарта PCI используются в современных компьютерах для подключения внутренних устройств системного блока, таких как звуковая карта или модем. Однако для графических устройств эти шины имеют недостаточную скорость передачи данных, поэтому PCI-SIG был разработан новый стандарт – PCI-X (символ X означает eXtended – расширенный) с тактовыми частотами 66, 133, 266 и 533 МГц и пиковыми пропускными способностями соответственно 533, 1066, 2132 и 4264 Мбайт/с. Этот стандарт обратно совместим со стандартом PCI 3.0, т.е. в компьютере можно использовать и карты PCI 3.0 и карты PCI-X.

Последняя версия стандарта PCI-X – PCI-X 2.0 была принята в 2002 году. В настоящее время шины этого стандарта практически не используются, поскольку в этом же году PCI-SIG начала разработку принципиально нового стандарта шины PCI – PCI Express.

Стандарт PCI Express, называемый также PCI-E или PCe, предполагает замену параллельной разделяемой структуры, используемой шиной PCI и PCI-X, последовательным соединением устройств с использованием коммутаторов (switches). Старое название этого стандарта – 3GIO (3 rd Generation Input/Output – третье поколение ввода/вывода).

Последним действующим стандартом PCI Express является стандарт PCI Express Base 2.0, принятый в 2006 году.

В отличие от стандарта PCI, в котором все устройства подключаются к общей 32-разрядной параллельной однонаправленной шине, в PCI Express для подключения устройства используется одно или несколько двунаправленных последовательных соединений типа точка-точка, реализованных на медной витой паре.

При обмене данными по витой паре используется метод низковольтной дифференциальной передачи сигналов – LVDS (Low-Voltage Differential Signaling). Данные в LVDS передаются последовательно, бит за битом. При этом для передачи одного сигнала используется дифференциальная пара, т.е. что передающая сторона подаёт на проводники пары различные уровни напряжения, которые сравниваются на приёмной стороне. Для кодирования информации используется разница напряжений на проводниках пары. Небольшая амплитуда сигнала, а также незначительное электромагнитное влияние проводов пары друг на друга позволяют уменьшить шумы в линии и передавать данные на высоких частотах, т.е. с большой скоростью. Для повышения скорости передачи данных можно использовать несколько соединений (витых пар), по которым биты передаются параллельно, т.е. одновременно.

В PCI Express для передачи данных могут использоваться одно или несколько соединений. Количество соединений для устройства задается с помощью числа, за которым (или перед которым) указывается буква x. В настоящее время в спецификации определены соединения 1x, 2x, 4x, 8x, 16x и 32x. Для каждого из этих соединений шины PCI Express (за исключением соединения 32x, который пока не используется) определен свой вид разъема. На рис. ???? приведены наиболее распространенные разъемы PCI Express: 1x, 2x, 4x, 8x и 16x.

Рис. ?????. Наиболее распространенные разъемы PCI Express: а) слот 1x; б) слот 4x;

в) слот 8x; г) слот 16x;

Пропускная способность в шине PCI Express по одному соединению в настоящее время составляет 2,5 Гбит/с с перспективой увеличения до 10 Гбит/с. Стандарт PCI Express должен заменить стандарты PCI и PCI-X, а также рассматриваемый в следующем разделе стандарт AGP. Однако стандарт PCI Express совместим с этими стандартами и, видимо долго будет использоваться с ними совместно, поскольку в настоящее время выпущено и продолжает выпускаться много карт по стандартам PCI и AGP.

При смене одной только видеокарты обязательно нужно учитывать, что новые модели могут просто не подходить к вашей материнской плате, так как существует не просто несколько разных типов слотов расширения, но и несколько разных их версий (применительно и к AGP, и к PCI Express). Если вы не уверены в своих знаниях по этой теме, внимательно ознакомьтесь с разделом.

Как мы уже отметили выше, видеокарта вставляется в специальный разъем расширения на системной плате компьютера, через этот слот видеочип обменивается информацией с центральным процессором системы. На системных платах чаще всего есть слоты расширения одного-двух разных типов, отличающихся пропускной способностью, параметрами электропитания и другими характеристиками, и не все из них подходят для установки видеокарт. Важно знать имеющиеся в системе разъемы и покупать только ту видеокарту, которая им соответствует. Разные разъемы расширения несовместимы физически и логически, и видеокарта, предназначенная для одного типа, в другой не вставится и работать не будет.

К счастью, за прошедшее время успели кануть в лету не только слоты расширения ISA и VESA Local Bus (которые интересны лишь будущим археологам) и соответствующие им видеокарты, но практически исчезли и видеокарты для слотов PCI, а все AGP-модели безнадежно устарели. И все современные графические процессоры используют только один тип интерфейса — PCI Express. Ранее был широко распространён стандарт AGP, эти интерфейсы значительно отличаются друг от друга, в том числе пропускной способностью, предоставляемыми возможностями для питания видеокарты, а также другими менее важными характеристиками.

Лишь очень малая часть современных системных плат не имеет слотов PCI Express, и если ваша система настолько древняя, что использует AGP видеокарту, то заняться её апгрейдом не получится — нужно менять всю систему. Рассмотрим эти интерфейсы подробнее, именно эти слоты вам нужно искать на своих системных платах. Смотрите фотографии и сравнивайте.

AGP (Accelerated Graphics Port или Advanced Graphics Port) — это высокоскоростной интерфейс, основанный на спецификации PCI, но созданный специально для соединения видеокарт и системных плат. Шина AGP хотя и лучше подходит для видеоадаптеров по сравнению с PCI (не Express!), предоставляет прямую связь между центральным процессором и видеочипом, а также некоторые другие возможности, увеличивающие производительность в некоторых случаях, например, GART — возможность чтения текстур напрямую из оперативной памяти, без их копирования в видеопамять; более высокую тактовую частоту, упрощенные протоколы передачи данных и др., но этот тип слотов безнадёжно устарел и новых изделий с ним давно не выпускают.

Но всё же, для порядка упомянем и об этом типе. Спецификации AGP появились в 1997 году, тогда Intel выпустил первую версию описания, включающую две скорости: 1x и 2x. Во второй версии (2.0) появился AGP 4x, а в 3.0 — 8x. Рассмотрим все варианты подробнее:
AGP 1x — это 32-битный канал, работающий на частоте 66 МГц, с пропускной способностью 266 Мбайт/с, что в два раза выше полосы PCI (133 Мбайт/с, 33 МГц и 32 бит).
AGP 2x — 32-битный канал, работающий с удвоенной пропускной способностью 533 Мбайт/с на той же частоте 66 МГц за счет передачи данных по двум фронтам, аналогично DDR памяти (только для направления «к видеокарте»).
AGP 4x — такой же 32-битный канал, работающий на 66 МГц, но в результате дальнейших ухищрений была достигнута учетверенная «эффективная» частота 266 МГц, с максимальной пропускной способностью более 1 ГБ/с.
AGP 8x — дополнительные изменения в этой модификации позволили получить пропускную способность уже до 2,1 ГБ/с.

Видеокарты с интерфейсом AGP и соответствующие слоты на системных платах совместимы в определенных пределах. Видеокарты, рассчитанные на 1,5 В, не работают в слотах 3,3 В, и наоборот. Впрочем, существуют и универсальные разъемы, которые поддерживают оба типа плат. Видеокарты, рассчитанные на морально и физически устаревший слот AGP, давно не рассматриваются, поэтому чтобы узнать о старых AGP-системах, лучше будет ознакомиться со статьей:

PCI Express (PCIe или PCI-E, не путать с PCI-X), ранее известная как Arapahoe или 3GIO, отличается от PCI и AGP тем, что это последовательный, а не параллельный интерфейс, что позволило уменьшить число контактов и увеличить пропускную способность. PCIe — это лишь один из примеров перехода от параллельных шин к последовательным, вот другие примеры этого движения: HyperTransport, Serial ATA, USB и FireWire. Важное преимущество PCI Express в том, что он позволяет складывать несколько одиночных линий в один канал для увеличения пропускной способности. Многоканальность последовательного дизайна увеличивает гибкость, медленным устройствам можно выделять меньшее количество линий с малым числом контактов, а быстрым — большее.

Интерфейс PCIe 1.0 пропускает данные на скорости 250 Мбайт/с на одну линию, что почти вдвое превышает возможности обычных слотов PCI. Максимально поддерживаемое слотами PCI Express 1.0 количество линий — 32, что дает пропускную способность до 8 ГБ/с. А слот PCIe с восемью рабочими линиями примерно сопоставим по этому параметру с быстрейшей из версий AGP — 8x. Что еще больше впечатляет при учете возможности одновременной передачи в обоих направлениях на высокой скорости. Наиболее распространенные слоты PCI Express x1 дают пропускную способность одной линии (250 Мбайт/с) в каждом направлении, а PCI Express x16, который применяется для видеокарт и в котором сочетается 16 линий, обеспечивает пропускную способность до 4 ГБ/с в каждом направлении.

Несмотря на то, что соединение между двумя PCIe-устройствами иногда собирается из нескольких линий, все устройства поддерживают одиночную линию, как минимум, но опционально могут работать с большим их количеством. Физически, карты расширения PCIe входят и работают нормально в любых слотах с равным или большим количеством линий, так, карта PCI Express x1 будет спокойно работать в разъемах x4 и x16. Также, слот физически большего размера может работать с логически меньшим количеством линий (например, на вид обычный разъем x16, но разведены лишь 8 линий). В любом из приведенных вариантов PCIe сам выберет максимально возможный режим, и будет нормально работать.

Чаще всего для видеоадаптеров используются разъемы x16, но есть платы и с разъемами x1. А большая часть системных плат с двумя слотами PCI Express x16 работает в режиме x8 для создания SLI- и CrossFire-систем. Физически другие варианты слотов, такие как x4, для видеокарт не используются. Напоминаю, что всё это относится только к физическому уровню, попадаются и системные платы с физическими разъемами PCI-E x16, но в реальности с разведенными 8, 4 или даже 1 каналами. И любые видеокарты, рассчитанные на 16 каналов, работать в таких слотах будут, но с меньшей производительностью. Кстати, на фотографии выше показаны слоты x16, x4 и x1, а для сравнения оставлен и PCI (снизу).

Хотя разница в играх получается не такой уж и большой. Вот, например, обзор двух системных плат на нашем сайте, в котором исследуется разница в скорости трехмерных игр на двух системных платах, пара тестовых видеокарт в которых работает в режимах 8 каналов и 1 канала соответственно:

Интересующее нас сравнение — в конце статьи, обратите внимание на две последние таблицы. Как видите, разница при средних настройках весьма небольшая, но в тяжелых режимах начинает увеличиваться, причем, большая разница отмечена в случае менее мощной видеоплаты. Примите это к сведению.

PCI Express отличается не только пропускной способностью, но и новыми возможностями по энергопотреблению. Эта необходимость возникла потому, что по слоту AGP 8x (версия 3.0) можно передать лишь не более 40 с небольшим ватт суммарно, чего уже не хватало видеокартам тогдашних поколений, рассчитанных для AGP, на которых устанавливали по одному или двум стандартным четырехконтактным разъемам питания. По разъему PCI Express можно передавать до 75 Вт, а дополнительные 75 Вт получают по стандартному шестиконтактному разъему питания (см. последний раздел этой части). В последнее время появились видеокарты с двумя такими разъемами, что в сумме даёт до 225 Вт.

В дальнейшем группа PCI-SIG, которая занимается разработкой соответствующих стандартов, представила основные спецификации PCI Express 2.0. Вторая версия PCIe вдвое увеличила стандартную пропускную способность, с 2,5 Гбит/с до 5 Гбит/с, так что разъем x16 позволяет передавать данные на скорости до 8 ГБ/с в каждом направлении. При этом PCIe 2.0 совместим с PCIe 1.1, старые карты расширения обычно нормально работают в новых системных платах.

Спецификация PCIe 2.0 поддерживает скорости передачи как 2,5 Гбит/с, так и 5 Гбит/с, это сделано для обеспечения обратной совместимости с существующими решениями PCIe 1.0 и 1.1. Обратная совместимость PCI Express 2.0 позволяет использовать устаревшие решения с 2,5 Гбит/с в слотах 5,0 Гбит/с, которые просто будут в таком случае работать на меньшей скорости. А устройства, разработанные по спецификациям версии 2.0, могут поддерживать скорости 2,5 Гбит/с и/или 5 Гбит/с.

Хотя основное нововведение в PCI Express 2.0 — это удвоенная до 5 Гбит/с скорость, но это не единственное изменение, есть и другие модификации для увеличения гибкости, новые механизмы для программного управления скоростью соединений и т. п. Нас больше всего интересуют изменения, связанные с электропитанием устройств, так как требования видеокарт к питанию неуклонно растут. В PCI-SIG разработали новую спецификацию для обеспечения увеличивающегося энергопотребления графических карт, она расширяет текущие возможности энергоснабжения до 225/300 Вт на видеокарту. Для поддержки этой спецификации используется новый 2×4-штырьковый разъем питания, предназначенный для обеспечения питанием топовых моделей видеокарт.

Видеокарты и системные платы с поддержкой PCI Express 2.0 появились в широкой продаже уже в 2007 году, а теперь на рынке других и не встретить. Оба основных производителя видеочипов, AMD и NVIDIA, выпустили новые линейки GPU и видеокарт на их основе, поддерживающие увеличенную пропускную способность второй версии PCI Express и пользующиеся новыми возможностями по электрическому питанию для карт расширения. Все они обратно совместимы с системными платами, имеющими на борту слоты PCI Express 1.x, хотя в некоторых редких случаях наблюдается несовместимость, так что нужно быть осторожным.

Собственно, появление третьей версии PCIe было очевидным событием. В ноябре 2010 года спецификации третьей версии PCI Express окончательно утвердили. Хотя этот интерфейс обладает скоростью передачи 8 гигатранзакций/с вместо 5 Гт/с у версии 2.0, его пропускная способность снова возросла ровно вдвое по сравнению со стандартом PCI Express 2.0. Для этого применили иную схему кодирования пересылаемых по шине данных, но совместимость с предыдущими версиями PCI Express при этом сохранилась. Первые продукты версии PCI Express 3.0 были представлены летом 2011-го, а реальные устройства только-только начали появляться на рынке.

Среди производителей системных плат разгорелась целая война за право первым представить продукт с поддержкой PCI Express 3.0 (в основном, на базе чипсета Intel Z68), и соответствующие пресс-релизы представили сразу несколько компаний. Хотя на момент обновления путеводителя видеокарт с такой поддержкой просто нет, так что это просто неинтересно. К тому времени, когда поддержка PCIe 3.0 будет нужна, появятся совершенно иные платы. Скорее всего, это произойдёт не ранее 2012 года.

К слову, можно предполагать, что PCI Express 4.0 будет представлена в течение ещё нескольких следующих лет, и новая версия также будет иметь ещё раз удвоенную пропускную способность, востребованную к тому времени. Но это произойдёт совсем нескоро, и нам пока неинтересно.

External PCI Express

В 2007 году группа PCI-SIG, занимающаяся официальной стандартизацией решений PCI Express, объявила о принятии спецификации PCI Express External Cabling 1.0, описывающей стандарт передачи данных по внешнему интерфейсу PCI Express 1.1. Эта версия позволяет передавать данные со скоростью 2,5 Гбит/с, а следующая должна увеличить пропускную способность до 5 Гбит/с. В рамках стандарта представлены четыре внешних разъема: PCI Express x1, x4, x8 и x16. Старшие разъемы оснащены специальным язычком, облегчающим подключение.

Внешний вариант интерфейса PCI Express может использоваться не только для подключения внешних видеокарт, но и для внешних накопителей и других плат расширения. Максимальная рекомендованная длина кабеля при этом равна 10 метров, но её можно увеличить при помощи соединения кабелей через повторитель.

Теоретически, это могло облегчить жизнь любителей ноутбуков, когда при работе от батарей используется маломощное встроенное видеоядро, а при подключении к настольному монитору — мощная внешняя видеокарта. Значительно облегчается апгрейд подобных видеокарт, не нужно вскрывать корпус ПК. Производители могут делать совершенно новые системы охлаждения, не ограниченные особенностями карт расширения, да и с питанием должно быть меньше проблем — скорее всего, будут использоваться внешние блоки питания, рассчитанные специально на определенную видеокарту, их можно встроить в один внешний корпус с видеокартой, используя одну систему охлаждения. Может облегчиться сборка систем на нескольких видеокартах (SLI/CrossFire), да и с учётом постоянного роста популярности мобильных решений такие внешние PCI Express должны были завоевать определенную популярность.

Должны были, но не завоевали. По состоянию на осень 2011 года внешних вариантов видеокарт на рынке практически нет. Их круг ограничен устаревшими моделями видеочипов и узким выбором совместимых ноутбуков. К сожалению, дело внешних видеокарт дальше не пошло, и потихоньку заглохло. Не слышно уже даже победных рекламных заявлений от производителей ноутбуков… Возможно, мощностей современных мобильных видеокарт просто стало хватать даже для требовательных 3D-приложений, в т. ч. и многих игр.

Остаётся надежда на развитие внешних решений в перспективном интерфейсе для подключения периферийных устройств Thunderbolt, ранее известном как Light Peak. Его разработала корпорация Intel на базе технологии DisplayPort, и первые решения уже выпущены компанией Apple. Thunderbolt объединяет возможности DisplayPort и PCI Express и позволяет подключать внешние устройства. Впрочем, пока таковых просто не существует, хотя кабели уже есть:

В статье мы не трогаем устаревшие интерфейсы, абсолютное большинство современных видеоплат рассчитано на интерфейс PCI Express 2.0, поэтому при выборе видеокарты мы предлагаем рассматривать только его, все данные о AGP приведены лишь для справки. Новые платы используют интерфейс PCI Express 2.0, объединяющий скорость 16 линий PCI Express, что дает пропускную способность до 8 ГБ/с в каждом направлении, это в несколько раз больше по сравнению с той же характеристикой лучшего из AGP. Кроме того, PCI Express работает с такой скоростью в каждом из направлений, в отличие от AGP.

С другой стороны, продукты с поддержкой PCI-E 3.0 ещё толком не вышли, поэтому рассматривать их тоже не имеет особого смысла. Если речь идёт об апгрейде старой или покупке новой платы или одновременной смене системной и видеоплаты, то просто нужно приобретать платы с интерфейсом PCI Express 2.0, который будет вполне достаточен и наиболее распространен еще несколько лет, тем более что продукты разных версий PCI Express совместимы между собой.

Шина расширения - компьютерная шина, которая используется на системной карте компьютеров или промышленных контроллеров, для добавления устройств (плат) в компьютер. Есть несколько видов:

    ISA - 8 и 16 разрядная, использовалась в первых персональных компьютерах

    VL-bus - шина, разработанная на смену шине ISA, в противовес MCA

    MCA - микроканальная архитектура, разработана IBM, для своего компьютера IBM PS/2

    PCI - шина, разработанная Intel, для процессоров Pentium

    AGP - вариант PCI, использовавшийся для видеокарт

    PCI Express - современная шина, которая пришла на смену PCI

    PCI (англ. Peripheral component interconnect, дословно - взаимосвязь периферийных компонентов) - шина ввода/вывода для подключения периферийных устройств к материнской плате компьютера.

Стандарт на шину PCI определяет:

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

    электрические параметры (например, напряжения);

    логическую модель (например, типы циклов шины, адресацию на шине).

Развитием стандарта PCI занимается организация PCI Special Interest Group.

PCI-устройства с точки зрения пользователя самонастраиваемы (Plug and Play). После старта компьютера системное программное обеспечение обследует конфигурационное пространство PCI каждого устройства, подключённого к шине, и распределяет ресурсы.

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

Кроме того, устройства могут иметь ПЗУ, содержащее исполняемый код для процессоров x86 или PA-RISC, Open Firmware (системное ПО компьютеров на базе SPARC и PowerPC) или драйвер EFI.

Настройка прерываний осуществляется также системным программным обеспечением (в отличие от шины ISA, где настройка прерываний осуществлялась переключателями на карте). Запрос на прерывание на шине PCI передаётся с помощью изменения уровня сигнала на одной из линий IRQ, поэтому имеется возможность работы нескольких устройств с одной линией запроса прерывания; обычно системное ПО пытается выделить каждому устройству отдельное прерывание для увеличения производительности.

PCI-X 1.0 - расширение шины PCI64 с добавлением двух новых частот работы, 100 и 133 МГц, а также механизма раздельных транзакций для улучшения производительности при одновременной работе нескольких устройств. Как правило, обратно совместима со всеми 3.3В и универсальными PCI-картами.

PCI-X карты обычно выполняются в 64-бит 3,3 В формате и имеют ограниченную обратную совместимость со слотами PCI64/66, а некоторые PCI-X карты - в универсальном формате и способны работать (хотя практической ценности это почти не имеет) в обычном PCI 2.2/2.3.

В сложных случаях для того, чтобы быть полностью уверенным в работоспособности комбинации из материнской платы и карты расширения, надо посмотреть таблицы совместимости (compatibility lists) производителей обоих устройств.

PCI-X 2.0 - дальнейшее расширение возможностей PCI-X 1.0; добавлены частоты 266 и 533 МГц, а также - коррекция ошибок чётности при передаче данных (ECC). Допускает расщепление на 4 независимых 16-битных шины, что применяется исключительно во встраиваемых и промышленных системах; сигнальное напряжение снижено до 1,5 В, но сохранена обратная совместимость разъёмов со всеми картами, использующими сигнальное напряжение 3,3 В.

В настоящее время для не профессионального сегмента рынка высокопроизводительных компьютеров (мощных рабочих станций и серверов начального уровня), в которых находит применение шина PCI-X, выпускается крайне мало материнских плат с поддержкой шины. Примером материнской платы для такого сегмента является ASUS P5K WS Платформа для рабочих станций с поддержкой PCI-X. В профессиональном сегменте применяется в RAID контроллерах в SSD накопителях под PCI-E. PCI Express, или PCIe, или PCI-E (также известная как 3GIO for 3rd Generation I/O; не путать с PCI-X и PXI) - компьютерная шина, использующая программную модель шины PCI и высокопроизводительный физический протокол, основанный на последовательной передаче данных.

Развитием стандарта PCI Express занимается организация PCI Special Interest Group.

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

Кроме того, шиной PCI Express поддерживается:

    горячая замена карт;

    гарантированная полоса пропускания (QoS);

    управление энергопотреблением;

    контроль целостности передаваемых данных.

Разработка стандарта PCI Express была начата фирмой Intel после отказа от шины InfiniBand. Официально первая базовая спецификация PCI Express появилась в июле 2002 года.

Шина PCI Express нацелена на использование только в качестве локальной шины. Так как программная модель PCI Express во многом унаследована от PCI, то существующие системы и контроллеры могут быть доработаны для использования шины PCI Express заменой только физического уровня, без доработки программного обеспечения. Высокая пиковая производительность шины PCI Express позволяет использовать её вместо шин AGP и тем более PCI и PCI-X. Де-факто PCI Express заменила эти шины в персональных компьютерах.

Для подключения устройства PCI Express используется двунаправленное последовательное соединение типа точка-точка, называемое линией (англ. lane - полоса, ряд); это резко отличается от PCI, в которой все устройства подключаются к общей 32-разрядной параллельной двунаправленной шине.

Соединение (англ. link - связь, соединение) между двумя устройствами PCI Express и состоит из одной (x1) или нескольких (x2, x4, x8, x12, x16 и x32) двунаправленных последовательно соединённых линий. Каждое устройство должно поддерживать соединение по крайней мере с одной линией (x1).

На электрическом уровне каждое соединение использует низковольтную дифференциальную передачу сигнала (LVDS), приём и передача информации производится каждым устройством PCI Express по отдельным двум проводникам, таким образом, в простейшем случае, устройство подключается к коммутатору PCI Express всего лишь четырьмя проводниками.

Использование подобного подхода имеет следующие преимущества:

    карта PCI Express помещается и корректно работает в любом слоте той же или большей пропускной способности (например, карта x1 будет работать в слотах x4 и x16);

    слот большего физического размера может использовать не все линии (например, к слоту x16 можно подвести проводники передачи информации, соответствующие x1 или x8, и всё это будет нормально функционировать; однако, при этом необходимо подключить все проводники питания и заземления, необходимые для слота x16).

В обоих случаях, на шине PCI Express будет использоваться максимальное количество линий, доступных как для карты, так и для слота. Однако это не позволяет устройству работать в слоте, предназначенном для карт с меньшей пропускной способностью шины PCI Express. Например, карта x4 физически не поместится в стандартный слот x1, несмотря на то, что она могла бы работать в слоте x4 с использованием только одной линии. На некоторых материнских платах можно встретить нестандартные слоты x1 и x4, у которых отсутствует крайняя перегородка, таким образом, в них можно устанавливать карты большей длины чем разъем. При этом не обеспечивается питание и заземление выступающей части карты, что может привести к различным проблемам.

PCI Express пересылает всю управляющую информацию, включая прерывания, через те же линии, что используются для передачи данных. Последовательный протокол никогда не может быть заблокирован, таким образом задержки шины PCI Express вполне сравнимы с таковыми для шины PCI (заметим, что шина PCI для передачи сигнала о запросе на прерывание использует отдельные физические линии IRQ#A, IRQ#B, IRQ#C, IRQ#D).

Во всех высокоскоростных последовательных протоколах (например, гигабитный Ethernet), информация о синхронизации должна быть встроена в передаваемый сигнал. На физическом уровне, PCI Express использует метод канального кодирования 8b/10b (8 бит в десяти, избыточность - 20%) для устранения постоянной составляющей в передаваемом сигнале и для встраивания информации о синхронизации в поток данных. В PCI Express 3.0 используется более экономное кодирование 128b/130b с избыточностью 1,5%.

Некоторые протоколы (например, SONET/SDH) используют метод, который называется скремблинг (англ. scrambling) для встраивания информации о синхронизации в поток данных и для "размывания" спектра передаваемого сигнала. Спецификация PCI Express также предусматривает функцию скремблинга, но скремблинг PCI Express отличается от такового для SONET.

PCI Express 3.0 - В ноябре 2010 года были утверждены спецификации версии PCI Express 3.0. Интерфейс обладает скоростью передачи данных 8 GT/s(Гигатранзакций/с). Но, несмотря на это, его реальная пропускная способность всё равно была увеличена вдвое по сравнению со стандартом PCI Express 2.0. Этого удалось достигнуть благодаря более агрессивной схеме кодирования 128b/130b, когда 128 бит данных пересылаемых по шине кодируются 130 битами. PCI Express 2.0 обладает скоростью передачи данных 5 GT/s и схемой кодирования 8b/10b. При этом сохранилась совместимость с предыдущими версиями PCI Express. По данным PCI-SIG, первые тесты PCI Express 3.0 начнутся в 2011 году, средства для проверки совместимости для партнеров появятся лишь в середине 2011-го, а реальные устройства ― только в 2012-м. Компания MSI стала первым в мире производителем, выпустившим материнскую плату с поддержкой стандарта PCI-3.0. Летом 2011 года Gigabyte официально представила материнскую плату G1.Sniper 2, построенную на чипсете Intel Z68 и поддерживающую интерфейс PCI Express 3.0

PCI Express 4.0 - PCI Special Interest Group (PCI SIG) заявила, что PCI Express 4.0 может быть стандартизирован до 2015 года. Он будет иметь пропускную способность 16 GT/с или более, т.е. будет в два раза быстрее PCIe 3.0.