В рамках данной статьи будут рассмотрены наиболее распространенные на сегодняшний день PCI-устройства. Что этотакое, и когда без него не обойтись - ключевые вопросы этого материала. Хотя данный стандарт постепенно уходит в прошлое, но все равно он будет актуальным еще достаточно долгое время. Его, по существу, можно считать прародителем самых современных интерфейсов ЮСБ и PCI-Express, которые пришли ему на смену.
Перед тем как получим ответ на вопрос: «PCI-устройства: что это такое и где они используются?», рассмотрим характеристики данной шины. Свое победоносное шествие этот стандарт начал в 1991 году. Первым процессором, который мог с ним полноценно функционировать, был 80486. Чуть позже появились первые «Пентиумы», еще больше раскрывшие его потенциал. Физически за этой аббревиатурой скрывается группа разъемов, распаянных на материнской плате. За организацию их работы отвечает одна из микросхем, установленных на ней. Характеристики у PCI следующие:
Еще один важный нюанс, который предопределил будущее этого стандарта. «Интел» сделала его «открытым». То есть каждый разработчик мог при желании разработать любую плату расширения, которая без проблем работала бы с этим стандартом.
В слот расширения PCI могут быть установлены различные устройства. Среди них можно выделить:
Это список можно продолжать до бесконечности. По существу - это полный аналог современной шины ЮСБ, но только с более низкой скоростью передачи данных. Даже драйвер PCI-устройств инсталлируется аналогичным образом. Многие идеи, которые были реализованы в этой устаревшей шине, получили дальнейшее развитие в более современных стандартах. оказала очень большое влияние на дальнейшее развитие компьютерной техники.
Для вывода графического изображения использовалась PCI-видеокарта. В свое время это позволило значительно увеличить производительность компьютерных систем и полностью раскрыть потенциал процессоров 80486 и первых «Пентиумов».
Но время не стоит на месте. То, что тогда стало революционным решением, на сегодняшний день устарело как морально, так и физически. До 1997 года у таких графических ускорителей не было аналогов. Поэтому их можно было встретить на каждом персональном компьютере. И лишь только с появлением на материнской плате такие адаптеры уступили новым графическим решениям пальму первенства по производительности.
Сейчас PCI-видеокарта - большая редкость. Ее можно встретить только на очень старых персональных компьютерах. Можно сказать, что это уже анахронизм. Их производительности достаточно только для решения наиболее простых задач - набора текста, работы с и просмотра картинок. А вот с более сложными приложениями обязательно возникнут проблемы, и в таком случае их лучше не запускать.
Звуковая плата - это тоже одна из разновидностей PCI-устройства. Что этотакое? Ответ на этот вопрос достаточно прост. До 1997 года на материнских платах не было интегрированных звуковых адаптеров. Поэтому для организации акустической системы использовались именно такие приспособления. С одной стороны такая плата оснащалась «классическим» разъемом для установки в слот расширения. Интерфейсная ее панель выводилась на тыльную сторону системного блока.
Для фиксации внутри компьютера использовался один болт. Качество звучания их оставляло желать лучшего. Но все равно это был прорыв, который нельзя недооценивать. Именно установка таких устройств позволяла раньше любой компьютер превратить в настоящий мультимедийный центр. Можно было на такой ЭВМ и музыку послушать, и фильм посмотреть, и в игру поиграть.
Еще один важный тип устройств для данной шины - это тюнер. Такой PCI-контроллер позволяет просматривать телевизионные передачи и прослушивать радио. Для обеспечения работоспособности такой платы к ней нужно в обязательном порядке подключить внешнюю антенну. Иначе качество принимаемого сигнала будет далеким от идеала.
Кроме того, в комплекте с тюнером в обязательном порядке шел пуль дистанционного управления. Это позволяло превратить компьютер в настоящий телевизор. Большого распространения подобная практика не получила, но все равно бывали случаи, когда без такого ноу-хау было не обойтись. Например, занятому человеку такое решение позволяло постоянно быть в курсе событий.
Важный атрибут старых компьютеров - это модем. С его помощью можно было раньше подключаться к Интернету. Большая часть таких устройств была внутреннего исполнения, то есть устанавливалась в слот PCI. Сейчас их с этого сегмента благополучно вытеснили Хотя еще остались сферы, где им нет альтернативы. Одна из них - это система «Клиент-Банк», которая часто встречается в бухгалтерии. С ее помощью бухгалтер может контролировать состояние счетов компании и при необходимости делать платежи.
Нередко в можно встретить следующее устройство: «PCI контроллер simple communications». За этим словосочетанием скрывается плата расширения. Она позволяет увеличить количество портов для подключения или жестких дисков. То есть подобное приспособление устанавливается в слот расширения материнской платы, а с внешней стороны оно оснащено разъемами ЮСБ, КОМ или ЛПТ. Лет 5 назад это позволяло существенно увеличить количество подключенных периферийных устройств. Сейчас же количество портов на материнской плате выросло в разы, и потребность в установке подобных контроллеров просто отпала.
В данном материале был дан ответ на вопрос: «PCI-устройства - что это такое и где они используются?»
Как видим, это достаточно широкая гамма устройств, которая позволяет превратить ваш компьютер в настоящий центр для развлечений. По крайней мере, это утверждение было справедливо до недавних пор. Сейчас ситуация немного изменилась. Все больше компонентов интегрируются непосредственно в сам процессор или на материнскую плату. Поэтому и потребность в них отпадает. Можно встретить и прочее устройство моста PCI, например, сетевая карточка, которая позволяет объединить компьютеры в локальную вычислительную сеть. Единственное устройство, которое пока не имеет достойной альтернативы, - это тюнер для приема телепередач и прослушивания радио. Но уже и в этом сегменте начали появляться компактные ЮСБ-аналоги. В общем, стандарт PCI постепенно уходит в прошлое, но он все равно будет продолжительное время присутствовать на рынке.
Последовательная шина PCI Express, разработанная Intel и ее партнерами, призвана заменить параллельнуrю шину PCI и ее расширенный и специализированный вариант AGP. Несмотря на похожие наименования, шины PCI и PCI Express имеют мало общего. Протокол параллельной передачи данных, используемый в PCI, накладывает ограничения на ширину полосы пропускания и частоту работы шины; последовательная передача данных, примененная в PCI Express, обеспечивает возможность масштабирования (в спецификациях описываются реализации PCI Express 1x, 2x, 4x, 8x, 16x и 32x). На данный момент актуальной является версия шины с индексом 3.0
В ноябре 2010 года организация PCI-SIG, которая занимается стандартизацией технологии PCI Express, объявила о принятии спецификации PCIe Base 3.0.
Ключевым отличием от предыдущих двух версий PCIe можно считать измененную схему кодирования - теперь вместо 8 бит полезной информации из 10 бит переданной (8b/10b), по шине можно передать 128 бит полезной информации из 130 бит отправленной, т.е. коэффициент полезной нагрузки практически приблизился к 100%. Кроме того, увеличилась скорость передачи данных до 8 GT/s. Напомним, что это значение для PCIe 1.x составляло 2.5 GT/s, а для PCIe 2.x - 5 GT/s.
Все вышеперечисленные изменения привели к удвоению пропускной способности шины, по сравнению с шиной PCI-E 2.x. Это значит, что общая пропускная способность шины PCIe 3.0 в конфигурации 16x будет достигать 32 Гб/с. Первыми процессорами, которые были оснащены контроллером PCIe 3.0, стали процессоры Intel, созданные на основе микроархитектуры Ivy Bridge.
Несмотря на увеличившуюся более чем в три раза пропускную способность PCI-E 3.0 по сравнению с PCI-E 1.1, производительность одних и тех же видеокарт при использовании разных интерфейсов отличается не сильно. В таблице ниже представлены результаты тестов GeForce GTX 980 в разных тестах. Измерения проводились при одних графических настройках, в одной конфигурации Версия шины PCI-E изменялась в настройках BIOS.
PCI Express 3.0 по-прежнему сохраняет обратную совместимость с предыдущими версиями PCIe.
В 2007 году была принята новая спецификация шины PCI Express - 2.0, главное отличие которой заключается в удвоенной пропускной способности каждой линии передачи в каждом направлении, т.е. в случае с самой популярной версии PCI-E 16x, применяемой в видеокартах, пропускная способность составляет 8Гб/cек в каждом направлении. Первым чипсетом с поддержкой PCI-E 2.0 стал Intel X38.
PCI-E 2.0 полностью обратно совместим с PCI-E 1.0, т.е. все существующие устройства с интерфейсом PCI-E 1.0 могут работать в слотах PCI-E 2.0 и наоборот.
Первая версия интерфейса PCI Express, появившаяся в 2002 году. Обеспечивала пропускную способность 500 МБ/с на одну линию.
Шина PCI работает на частоте 33 или 66 МГц и обеспечивает пропускную способность 133 или 266 Мб/сек, но эта пропускная способность делится между всеми устройствами PCI. Частота, на которой работает шина PCI Express 1.1 - 2.5 ГГц, что дает пропускную способность 2500 МГц / 10 * 8 = 250 * 8 Мбит/сек = 250 Мб/сек (из-за избыточного кодирования для передачи 8 бит данных реально передается 10 бит информации) для каждого устройства PCI Express 1.1 x1 в одном направлении. При наличии нескольких линий для вычисления пропускной способности величину 250 Мб/сек надо умножить на число линий и на 2, т.к. PCI Express является двунаправленной шиной.
Число линий PCI Express 1.1 | Пропускная способность в одном направлении | Суммарная пропускная способность |
1 | 250 МБ/сек | 500 МБ/сек |
2 | 500 Мб/сек | 1 ГБ/сек |
4 | 1 ГБ/сек | 2 ГБ/сек |
8 | 2 ГБ/сек | 4 ГБ/сек |
16 | 4 ГБ/сек | 8 ГБ/сек |
32 | 8 ГБ/сек | 16 ГБ/сек |
Практически все современные материнские платы на текущий момент оснащены слотом расширения PCI-E x16. В этом нет ничего удивительного: в него устанавливается дискретный графический акселератор, без которого создание производительного персонального компьютера вообще невозможно. Именно о его предыстории появления, технических спецификациях и возможных режимах работы пойдет в дальнейшем речь.
В начале 2000-х годов со слотом расширения AGP, который на тот момент использовался для установки сложилась такая ситуация, когда максимальный уровень быстродействия достигнут и его возможностей уже недостаточно. В результате этого был создан консорциум PCI-SIG, который приступил к разработке программной и аппаратной составляющих будущего слота для установки графических ускорителей. Плодом его творчества и стала в 2002 году первая спецификация PCI Express 16х 1.0.
Некоторые компании для обеспечения совместимости двух существовавших на тот момент времени портов установки дискретных графических адаптеров разрабатывали специальные устройства, которые позволяли устанавливать устаревшие графические решения в новый слот расширения. На языке профессионалов такая разработка имела свое название - переходник PCI-E x16/AGP. Основное его назначение - это минимизация затрат на модернизацию ПК за счет использования комплектующих с предыдущей конфигурации системного блока. Но такая практика не получила большого распространения по той причине, что видеоплаты начального уровня на новом интерфейсе имели стоимость практически равную цене переходника.
Параллельно с этим были созданы и более простые модификации этого слота расширения для внешних контроллеров, которые пришли на смену привычным на то время портам PCI. Несмотря на внешнюю схожесть, эти устройства существенно различались. Если AGP и PCI могли похвастаться параллельной передачей информации, то вот PCI Express был последовательным интерфейсом. Его более высокое быстродействие обеспечивалось значительно увеличенной скоростью передачи данных в дуплексном режиме (информация в этом случае могла передаваться сразу по двум направлениям).
В обозначении интерфейса PCI-E x16цифра указывает на количество задействованных полос для передачи данных. В данном случае их 16. Каждая из них, в свою очередь, состоит из 2 пар проводов для передачи информации. Как было отмечено, более высокая скорость обеспечивается тем, что эти пары работают в дуплексном режиме. То есть передача информации может идти сразу в двух направлениях.
Для защиты от возможных потерь или искажения передаваемых данных применяется в этом интерфейсе специальная система защиты информации, которая называется 8В/10В. Это обозначение расшифровывается следующим образом: для правильной и корректной передачи 8 бит данных необходимо их дополнить 2 служебными битами для выполнения проверки правильности. В этом случае система вынуждена передавать 20 процентов служебной информации, которая для пользователя компьютера не несет полезной нагрузки. Но это плата за надежную и стабильную работу графической подсистемы персонального компьютера, и без этого уж точно никак не обойтись.
Разъем PCI-E x16 внешне одинаковый на всех системных платах. Только вот скорость передачи информации в каждом случае может существенно отличаться. Как результат, быстродействие устройства тоже разное. А модификации у этого графического интерфейса такие:
Визуально отличить по расположению контактов невозможно. При этом они совместимы между собой. Например, если в слот версии 3.0 установить плату графического адаптера, которая соответствует на физическом уровне спецификациям 2.0, то вся система обработки автоматически переключится в наименее скоростной режим (то есть 2.0) и будет уже в дальнейшем функционировать именно с пропускной способностью в 64 Гб/с.
Как было отмечено ранее, впервые PCI Express был представлен в 2002 году. Его выход ознаменовал появление персональных компьютеров с несколькими графическими адаптерами, которые к тому же могли похвастаться даже с одним установленным акселератором повышенным быстродействием. Стандарт AGP 8Х позволял получить пропускную способность 2,1 Гб/с, а первая ревизия PCI Express - 8 Гб/с.
Конечно, говорить о восьмикратном приросте не приходится. 20 процентов прироста использовалось на передачу служебной информации, которая позволяла находить ошибки.
На смену первому поколению данного в 2007 году пришел PCI-E 2. 0 x16. Видеокарты 2-го поколения, как было отмечено ранее, физически и программно были совместимы с первой модификацией этого интерфейса. Только в таком случае существенно снижалось быстродействие графической системы до уровня версии интерфейса PCI Express 1.0 16х.
Теоретически предел передачи информации в этом случае был равен 16 Гб/с. Но 20 процентов полученного прироста расходовалось на служебную информацию. В итоге в первом случае реальная передача была равна: 8 Гб/с - (8 Гб/с х 20% : 100%) = 6,4 Гб/с. А для второго исполнения графического интерфейса это значение было уже таким: 16 Гб/с - (16 Гб/с х 20% : 100%) = 12,8 Гб/с. Разделив же 12,8 Гб/с на 6,4 Гб/с, получаем реальный практический прирост быстродействия в 2 раза между 1-м и 2-м исполнением PCI Express.
Последнее и наиболее актуальное обновление этого интерфейса увидело свет в 2010 году. Пиковая скорость PCI-E x16 в этом случае увеличилась до 64 Гб/с, а максимальная мощность графического адаптера без дополнительного питания в этом случае может быть равна 75 Вт.
Одним из наиболее важных нововведений данного интерфейса является возможность наличия сразу нескольких графических адаптеров в x16. Видеокарты при этом объединяются между собой и образуют, по существу, единое устройство. Их общая производительность суммируется, и это позволяет в разы повысить быстродействие ПК с позиции обработки выводимого изображения. Для решений от NVidia такой режим называется SLI, а для графических процессоров от АМД - CrossFire.
Слот PCI-E x16в обозримом будущем уж точно не будет изменяться. Это позволит более производительные видеокарты использовать в составе устаревших ПК и за счет этого осуществлять поэтапный апгрейд компьютерной системы. Сейчас же прорабатываются спецификации уже 4-й версии этого способа передачи данных. Для графических адаптеров в этом случае будет предусмотрена максимальная 128 Гб/с. Это позволит выводить изображение на экран монитора в качестве «4К» и более.
Как бы там ни было, а PCI-E x16 на текущий момент является безальтернативным графическим слотом и интерфейсом. Он будет актуальным еще достаточно долгое время. Его параметры позволяют создавать как компьютерные системы начального уровня, так и высокопроизводительные ПК с несколькими акселераторами. Именно за счет такой гибкости и не предвидится существенных изменений в этой нише.
Где применяются негорючая ткань www.algo-textile.ru . Москитные сетки комплектующие для москитных сеток 2-sklad.ru .
Шины 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 организован в виде транзакций — логически завершенных операций обмена. В типовой транзакции участвуют два устройства —инициатор обмена (initiator), он же ведущее устройство (master), и целевое устройство (ЦУ, target)), оно же ведомое (slave). Правила взаимодействия этих устройств определяются протоколом шины PCI. Устройство может следить за транзакциями на шине и не являясь их участником (не вводя никаких сигналов); режиму слежения соответствует термин Snooping. Есть особый тип транзакции (Special Cycle) — широковещательный, в котором инициатор протокольно не взаимодействует ни с одним из устройств. В каждой транзакции выполняется одна команда — как правило, чтение или запись данных по указанному адресу. Транзакция начинается с фазы адреса, в которой инициатор задает команду и целевой адрес. Далее могут следовать фазы данных, в которых одно устройство (источник данных) помещает данные на шину, а другое (приемник) их считывает. Транзакции, в которых присутствует множество фаз данных, называются пакетными. Есть и одиночные транзакции (с одной фазой данных). Транзакция может завершиться и без фаз данных, если целевое устройство (или инициатор) не готово к обмену. В шине 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# пассивны). Завершение транзакции выполняется либо по инициативе ведущего устройства, либо по инициативе целевого устройства.
Ведущее устройство может завершить транзакцию одним из следующих способов:
Транзакция может быть прекращена по инициативе целевого устройства; для этого оно может ввести сигнал STOP#. Возможны три типа прекращения транзакции:
Использование трех типов прекращения транзакции вовсе не обязательно для всех целевых устройств, однако любое ведущее устройство должно быть готово к завершению транзакций по любой из этих причин.
Прекращение типа retry используется для организации отложенных транзакций (delayed transactions). Отложенные транзакции используются только медленными целевыми устройствами, а также мостами PCI при трансляции транзакций на другую шину. Прекращая (для инициатора) транзакцию условием retry, целевое устройство внутренне выполняет данную транзакцию. Когда инициатор повторит эту транзакцию (выдаст ту же команду с тем же адресом и тем же набором сигналов C/BE# в фазе данных), у целевого устройства (или моста) уже будет готов результат (данные чтения или состояние выполнения записи), который оно быстро вернет инициатору. Результат отложенной транзакции, выполненной данным устройством, устройство или мост должны хранить до тех пор, пока результаты не будут запрошены инициатором. Однако он может и «забыть» повторить транзакцию (из-за каких-либо нештатных ситуаций). Чтобы избежать переполнения буфера хранения результатов, устройству приходится отбрасывать (discard) эти результаты. Отбрасывание может быть выполнено без побочных эффектов, если откладывалась транзакция к памяти, допускающей предвыборку (с атрибутом prefetchable, см. далее). Остальные типы транзакций в общем случае безнаказанно отбрасывать нельзя (может нарушиться целостность данных), для них отбрасывание разрешается только после безрезультатного ожидания повтора в течение 215 тактов шины (по срабатыванию discard timer). Об этой особой ситуации устройство может сообщить своему драйверу (или всей системе).
Инициатор транзакции может потребовать монопольного использования шины PCI на все время выполнения операции обмена, требующей нескольких шинных транзакций. Так, например, если центральный процессор выполняет инструкцию модификации данных в ячейке памяти, принадлежащей устройству PCI, ему нужно прочитать данные из устройства, модифицировать их в своем АЛУ и вернуть результат в устройство. Чтобы в эту операцию не вклинивались транзакции от других инициаторов (что чревато нарушением целостности данных), главный мост выполняет ее как блокированную — на все время исполнения операции подается шинный сигнал LOCK#. Этот сигнал никак не используется (и не вырабатывается) обычными устройствами PCI (не мостами); он используется только мостами для управления арбитражем.
Устройства PCI имеют возможность сигнализации об асинхронных событиях с помощью прерываний. На шине PCI возможны четыре типа сигнализации прерываний:
В данной главе рассматриваются все эти типы сигнализации, а также общая картина поддержки аппаратных прерываний в PC-совместимых компьютерах.
Аппаратные прерывания обеспечивают реакцию процессора на события, происходящие асинхронно по отношению к исполняемому программному коду. Напомним, что аппаратные прерывания делятся на маскируемые и немаскируемые. Процессор x86 по сигналу прерывания приостанавливает выполнение текущего потока инструкций, сохраняя в стеке состояние (флаги и адрес возврата), и выполняет процедуру обработки прерывания. Конкретная процедура обработки выбирается из таблицы прерываний по вектору прерывания — однобайтному номеру элемента в данной таблице. Вектор прерывания доводится до процессора разными способами: для немаскируемого прерывания он фиксирован, для маскируемых прерываний его сообщает специальный контроллер прерываний. Кроме аппаратных прерываний у процессоров x86 имеются также внутренние прерывания — исключения (exceptions), связанные с особыми случаями выполнения инструкций, и программные прерывания. Для исключений вектор определяется самим особым условием, и под исключения фирмой Intel зарезервированы первые 32 вектора (0-31 или 00-1Fh). В программных прерываниях номер вектора содержится в самой инструкции (программные прерывания — это лишь специфический способ вызова процедур по номеру, с предварительным сохранением в стеке регистра флагов). Все эти прерывания используют один и тот же набор из 256 возможных векторов. Исторически сложилось так, что векторы, используемые для аппаратных прерываний, пересекаются с векторами исключений и векторами для программных прерываний, используемых для вызовов сервисов BIOS и DOS. Таким образом, для ряда номеров векторов процедура, на которую ссылается таблица прерываний, должна в начале содержать программный код, определяющий, по какому поводу она вызвана: из-за исключения, аппаратного прерывания или же для вызова какого-то системного сервиса. Таким образом, процедура, собственно и обеспечивающая реакцию процессора на то самое асинхронное событие, будет вызвана только после ряда действий по идентификации источника прерываний. Здесь еще заметим, что один и тот же вектор прерывания может использоваться и несколькими периферийными устройствами — это так называемое разделяемое использование прерываний, которое подробно обсуждается ниже.
Вызов процедуры обслуживания прерываний в реальном и защищенном режимах процессора существенно различается:
Номера векторов, используемых для аппаратных прерываний в операционных системах защищенного режима, отличаются от номеров, используемых в ОС реального режима, чтобы исключить их конфликты с векторами, используемыми для исключений процессора.
На немаскируемое прерывание (NMI — Non-Maskable Interrrupt) процессор реагирует всегда (если обслуживание предыдущего NMI завершено); этому прерыванию соответствует фиксированный вектор 2. Немаскируемые прерывания в PC используются для сигнализации о фатальных аппаратных ошибках. Сигнал на линию NMI приходит от схем контроля памяти (четности или ECC), от линий контроля шины ISA (IOCHK) и шины PCI (SERR#). Сигнал NMI блокируется до входа процессора установкой в 1 бита 7 порта 070h, отдельные источники разрешаются и идентифицируются битами порта 061h:
Реакция процессора на маскируемые прерывания может быть задержана сбросом его внутреннего флага IF (инструкция CLI запрещает прерывания, STI — разрешает). Маскируемые прерывания используются для сигнализации о событиях в устройствах. По возникновении события, требующего реакции, адаптер (контроллер) устройства формирует запрос прерывания, который поступает на вход контроллера прерываний. Задача контроллера прерываний — довести до процессора запрос прерывания и сообщить вектор, по которому выбирается программная процедура обработки прерываний.
Процедура обработки прерывания от устройства должна выполнить действия по обслуживанию данного устройства, включая сброс его запроса для обеспечения возможности реакции на следующие события, и послать команды завершения в контроллер прерываний. Вызывая процедуру обработки, процессор автоматически сохраняет в стеке значение всех флагов и сбрасывает флаг IF, что запрещает маскируемые прерывания. При возврате из этой процедуры (по инструкции IRET) процессор восстанавливает сохраненные флаги, в том числе и установленный (до прерывания) IF, что снова разрешает прерывания. Если во время работы обработчика прерываний требуется реакция на иные прерывания (более приоритетные), то в обработчике должна присутствовать инструкция STI. Особенно это касается длинных обработчиков; здесь инструкция STI должна вводиться как можно раньше, сразу после критической (не допускающей прерываний) секции. Следующие прерывания того же или более низкого уровня приоритета контроллер прерываний будет обслуживать только после получения команды завершения прерывания EOI (End Of Interrupt).
В IBM PC-совместимых компьютерах применяется два основных типа контроллеров прерываний:
Традиционная схема формирования запросов прерываний с использованием пары 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.
После того как произведено конфигурирование системы прерываний (проинициализирован контроллер прерываний, устройствам назначены линии запросов и установлены указатели на процедуры обработки), отработка маскируемых аппаратных прерываний происходит следующим образом:
Эта последовательность описана применительно к обычному контроллеру прерываний (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 соединяет только две шины: первичную (primary bus), находящуюся ближе к вершине иерархии, с вторичной (secondary bus); интерфейсы моста, которыми он связан с этими шинами, называются соответственно первичным и вторичным. Допускается только чисто древовидная конфигурация, то есть две шины соединяются друг с другом лишь одним мостом и нет «петель» из мостов. Шины, подсоединяемые ко вторичному интерфейсу данного моста другими мостами, называются подчиненными (subordinated bus). Мосты PCI образуют иерархию шин PCI, на вершине которой находится главная шина с нулевым номером, подключенная к главному мосту. Если главных мостов несколько, то из их шин (равных друг другу по рангу) условно главной будет шина, которой назначен нулевой номер.
Мост должен выполнять ряд обязательных функций:
Мосты, выполняющие данные функции, называются прозрачными (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, часть из которых мы рассмотрим:
В PCI-X для устройств Mode 2 конфигурационное пространство расширено до 4096 байт; в расширенном пространстве могут присутствовать расширенные описания свойств.
После аппаратного сброса (или при включении питания) устройства PCI не отвечают на обращения к пространству памяти и ввода-вывода, они доступны только для операций конфигурационного считывания и записи. В этих операциях устройства выбираются по индивидуальным сигналам IDSEL, чтением регистров конфигурационное ПО узнает о потребностях в ресурсах и возможных вариантах конфигурирования устройств. После распределения ресурсов, выполняемого программой конфигурирования (во время теста POST или при загрузке ОС), в конфигурационные регистры устройства записываются параметры конфигурирования (базовые адреса). Только после этого устройствам (точнее, функциям) устанавливаются биты, разрешающие им отвечать на команды обращения к памяти и портам ввода-вывода, а также самим управлять шиной. Для того чтобы всегда можно было найти работоспособную конфигурацию, все ресурсы, занимаемые картами, должны быть перемещаемыми в своих пространствах. Для многофункциональных устройств каждая функция должна иметь собственное конфигурационное пространство. Устройство может одни и те же регистры отображать и на память, и на пространство ввода-вывода. При этом в их конфигурационных регистрах должны присутствовать оба описателя, но драйвер должен использовать только один способ обращения (предпочтительно через память).
В заголовке конфигурационного пространства описываются потребности в адресах трех типов:
Потребности в адресах указываются в регистрах базовых адресов — BAR (Base Address Register). Конфигурирующая программа может определить и размеры требуемых областей. Для этого после аппаратного сброса она должна считать и сохранить значения базовых адресов (это будут адреса по умолчанию), записать в каждый регистр FFFFFFFFh и снова считать их значение. В полученных словах нужно обнулить биты декодирования типа (биты для памяти и биты для вводавывода), инвертировать и инкрементировать полученное 32-битное слово — результатом будет длина области (для портов биты игнорировать). Метод подразумевает, что длина области выражается числом 2n и область выровнена естественным образом. Стандартный заголовок вмещает до 6 регистров базового адреса, но при использовании 64-битной адресации число описываемых блоков сокращается. Неиспользуемые регистры BAR при чтении всегда должны возвращать нули.
В PCI имеется поддержка старых (legacy) устройств (VGA, IDE), которые сами себя таковыми объявляют по коду класса в заголовке. Их традиционные (фиксированные) адреса портов не заявляются в конфигурационном пространстве, но как только устанавливается бит разрешения обращения к портам, устройствам разрешается ответ и по этим адресам.
PCI — Express (PCIe , PCI — E ) – последовательная, универсальная шина впервые обнародованная 22 июля 2002 года.
Является общей , объединяющей шиной для всех узлов системной платы, в которой соседствуют все подключённые к ней устройства. Пришла на замену устаревающей шине PCI и её вариации AGP , по причине возросших требований к пропускной способности шины и невозможности за разумные средства улучшить скоростные показатели последних.
Шина выступает как коммутатор , просто направляя сигнал из одной точки в другую не изменяя его. Это позволяет без явных потерь скорости, с минимальными изменениями и ошибками передать и получить сигнал.
Данные по шине идут симплексно (полный дуплекс), то есть одновременно в обе стороны с одинаковой скоростью, причём сигнал по линиям, течёт непрерывно , даже при отключении устройства (как постоянный ток, или битовый сигнал из нулей).
Синхронизация построена избыточным методом. То есть вместо 8 бит информации, передаётся 10 бит , два из которых являются служебными (20% ) и в определённой последовательности служат маячками для синхронизации тактовых генераторов или выявления ошибок . Поэтому, заявленная скорость для одной линии в 2.5 Гбитс , на самом деле равна примерно 2.0 Гбитс реальных.
Питание каждого устройства по шине, подбирается отдельно и регулируется с помощью технологии ASPM (Active State Power Management ). Она позволяет при простое (без подачи сигнала) устройства занижать его тактовый генератор и переводить шину в режим пониженного энергопотребления . Если сигнал не поступал в течение нескольких микросекунд, устройство считается неактивным и переводится в режим ожидания (время зависит от типа устройства).
Скоростные характеристики в двух направлениях PCI — Express 1.0 :*
1 x PCI —E ~ 500 Мбс
4х PCI —E ~ 2 Гбс
8 x PCI —E ~ 4 Гбс
16х PCI —E ~ 8 Гбс
32х PCI-E ~ 16 Гбс
*Скорость передачи данных в одном направлении в 2 раза ниже данных показателей
15 января 2007 года, PCI —SIG выпустила обновлённую спецификацию именуемую PCI-Express 2.0
Основным улучшением стала в 2 раза увеличенная скорость передачи данных (5.0 Ггц , против 2.5Ггц в старой версии). Усовершенствованию подвергся также двухточечный протокол передачи данных (точка-точка), доработана программная составляющая и добавлена система программного мониторинга за скоростью шины. При этом сохранилась совместимость с версиями протокола PCI —E 1.х
В новой версии стандарта (PCI — Express 3.0 ), главным нововведением будет измененная система кодирования и синхронизации . Вместо 10 битной системы (8 бит информации, 2 бита служебных), будет применяться 130 битная (128 бит информации, 2 бита служебных). Это позволит снизить потери в скорости с 20% до ~1.5% . Будет также переработан алгоритм синхронизации передатчика и приёмника, улучшен PLL (phase-locked loop). Скорость передачи увеличится предположительно в 2 раза (в сравнении с PCI —E 2.0 ), при этом сохранится совместимость с прошлыми версиями PCI —Express .