ОСНОВНЫЕ ХАРАКТЕРИСТИКИ И ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ PCI - ШИНЫ
PCI ( P eripheral C omponent I nterconnect bus)-шина – шина, применяемая для подсоединения периферийных устройств. Шина PCI - первая шина в архитектуре IBM PC, которая не привязана к этой архитектуре. Она является процессорно-независимой и применяется, например, в компьютерах Macintosh. Массовое применение получила в комплексе с Pentium-системами, но возможно её использование и с 486 процессорами 
Имеет следующие основные характеристики: 
•	Частота шины колеблется в пределах от 20 до 33 МГц 
•	Теоретически максимальная скорость 132/264 Мбайт/с для 32/64 бит. 
•	Частота на шине PCI в современных материнских платах задается как 1/2 входной частоты процессора. Таким образом, при частоте 66 MHz на PCI-шине будет 33 MHz, при 75 MHz - 37.5 MHz. 
•	Имеет версии с питанием 5V, 3.3V и универсальную (с переключением линий +VI/O c 5V на 3,3V). Ключами являются пропущенные ряды контактов 12, 13 и 50, 51, причём для слота с питанием 5V ключ расположен на месте контактов 50, 51; для 3,3 В - 12, 13, а для универсального - два ключа: 12, 13 и 50,51. 32-битный слот заканчивается контактами А62/В62, 64-битный - А94/В94. 
•	Автоконфигурирование устройств - выбор запросов прерывания каналов DMA - поддерживается средствами BIOS материнской платы по образу и подобию стандарта Plug & Play. 
•	Поддержка "горячей" замены PCI устройств, называемой в стандарте как PCI Hot-Plug, позволяет добавлять/изымать PCI платы без выключения компьютера, что особенно необходимо для серверных платформ. 
В стандарте PCI для каждого слота определено конфигурационное пространство размером до 256 восьмибитных регистров. Это пространство не приписано ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и Configuration Write, вырабатываемым контроллером при обращении процессора к регистрам контроллера шины PCI, которые расположены в его пространстве ввода-вывода. Процессор через так называемые мосты (PCI Bridge) имеет возможность подключения к нескольким каналам PCI. Тем самым обеспечивается возможность одновременной передачи данных между независимыми каналами PCI 
На PCI определены два основных вида устройств - инициатор (задатчик) - устройство, получившее от арбитра шины разрешение на её захват, и устройство назначения - цель (target), с которым инициатор выполняет цикл обмена данными. В отличие от остальных шин, компоненты расположены на левой поверхности плат PCI-адаптеров, поэтому крайний PCI-слот обычно разделяет использование посадочного места с соседним ISA-слотом (Shared slot). Вообще, слот PCI способен обеспечить подключение любого контроллера на системной плате; он может сосуществовать с любой из других шин ввода-вывода. Система управления энергопотреблением для устройств на шине PCI позволяет управлять энергопотреблением как для внешних PCI плат, так и для встроенных на материнской плате устройств. Механизм управления подстроен под стандарт ACPI для облегчения управления энергопотреблением PCI устройств со стороны операционной системы 
Основные модификации PCI-шин 
Существует две основные модификации PCI-шин: 
1.	PCI-X 
2.	Compact PCI 
Рассмотрим каждую из них в отдельности 
1.PCI-X 
Официальный взгляд Intel на PCI-X выглядит так: PCI-X хорошая шина, но жизнь ее будет недолговечной. Такая позиция связана с тем, что в то время Intel активно вела разработку собственной шины NGIO, которая должна была, согласно мнениям специалистов из Intel, обойти PCI-X по переспективности и производительности. Тем не менее летом 1999 года консорциум SIG по PCI принял спецификацию принципиально нового варианта шины PCI - PCI-X, обладающую превосходными техническими параметрами 
Время покажет, кто победит, но очевидно, что только при поддержке PCI-X Intel в своих chipset она может найти широкое распространение, ведь до настоящего времени практически все интерфейсы, разрабатываемые Intel (AGP,PCI, USB) принимались компьютерной индустрией. В то же время активное участие таких крупных компаний как IBM, Compaq, Hewlett-Packard в разработке PCI-X дает новой шине существенные шансы на успех 
Основные отличия PCI-X от PCI: 
•	тактовая частота шины до 133 MHz 
•	использование различных слотов для разных скоростей обмена данными; стандарт предусматривает 1 слот с частотой 133 MHz, 2 слота на 100 MHz, остальные слоты могут использоваться на частоты 33 и 66 MHz. 
•	значительно уменьшен временной отрезок, выделяемый на операции в PCI-X (все времена в наносекундах). 
Параметр 	133 MHz PCI-X 	100 MHz PCI-X 	66 MHz PCI-X 	66 MHz обычная PCI 	33 MHz обычная PCI 	
Tval (max) 	3.8 	3.8 	3.8 	6 	11 	
Tprop 	2.0 	4.5 	9.5 	5 	10 	
Tskew 	0.5 	0.5 	0.5 	1 	2 	
Tsu 	1.2 	1.2 	1.2 	3 	7 	
Tcyc 	7.5 	10 	15 	15 	30 	
Thold 	0 	0 	0 	1 	2 	
Основные функциональные отличия представлены в таблице: 
Возможности 	PCI 	AGP1.0 	AGP2.0 	PCI-X 	
Совместимость с PCI 	Да 	Нет 	Нет 	Да 	
Скорость шины 100 Mhz 	Нет 	Нет 	Нет 	Да 	
Скорость шины 133 Mhz 	Нет 	66 DDR 	66 DDR 	Да 	
Скорость шины 266 Mhz 	Нет 	Нет 	66 QDR 	Нет 	
Разрядность шины данных 	32/64 	32 	32 	64 	
Разрядность шины адреса 	32/64 	32/36/64 	32/47/64 	64 	
Максимальная скорость обмена, MBytes/s 	533 	533 	1064 	1064 	
Допустимость нескольких слотов 	Да 	Нет 	Нет 	Да 	
Иерархическая топология 	Да 	Нет 	Нет 	Да 	
Некогерентные транзакции 	Нет 	Да 	Да 	Да 	
Идентификатор устройства и шины (позволяет оптимизировать параметры обмена) 	Нет 	Нет 	Нет 	Да 	
Примечания: 
DDR - Double Data Rate - удвоенная скорость обмена данными 
QDR - Quad Data Rate - учетверенная скорость обмена данными 
2.Шина Compact PCI (cPCI) 
Разработана на основе спецификации PCI версии 2.1. Основное отличие от обычной PCI - большое количество поддерживаемых слотов для одной шины: 8 против 4. В связи с этим появились новые 4 пары сигналов запросов и предоставления управления шиной 
Основные характеристики: 
•	поддерживает 32-битные и 64-битные обмены (с индивидуальным разрешением байт). 
•	при частоте шины 33 МГц максимальная пропускная способность составляет 133 Мб/с для 32 бит и 266 Мб/с для 64 бит (в середине пакетного цикла). 
•	возможна работа на частоте 66 МГц, при этом производительность удваивается. 
- поддерживает спецификацию PnP: в ней работают все механизмы идентификации и автоконфигурирования, имеющиеся в PCI 
•	в шине возможно применение географической адресации, при которой адрес модуля, на который он отзывается при программном обращении, определяется его положением в каркасе. Для этого на коннекторе J1 имеются контакты GA0...GA4, коммутацией которых на "землю" для каждого слота может быть задан его двоичный адрес. Географическая адресация позволяет переставлять однотипные модули, не заботясь о конфигурировании их адресов. Это хорошая альтернатива системе PnP - здесь модуль "встанет" всегда в одни и те же адреса, которые без физического вмешательства ничем не собъются). 
Внешне платы Compact PCI представляют собой еврокарты высотой 3U (100 x 160 мм) с одним коннектором или 6U (233 x 160 мм) с двумя коннекторами. Коннекторы - 7-рядные штырьковые разъемы с шагом 2 мм между контактами, на кросс-плате - вилка, на модулях - розетки. Контакты коннекторов имеют разную длину: более длинные контакты цепей питания при установке модуля соединяются раньше, а при вынимании разъединяются позже, чем сигнальные. Такое решение закладывает основу для реализации возможности "горячей" замены модулей. Собственно шина использует только один коннектор (J1), причем в 32-битном варианте не полностью - часть контактов выделяются на использование по усмотрению пользователя. 64-битная шина использует коннектор полностью. Одно посадочное место на кросс-плате резервируется под контроллер шины, на который возлагаются функции арбитража и синхронизации. На его коннекторе шиной используется большее число контактов, чем на остальных. У больших плат коннектор J2 отдается на использование по усмотрению пользователя (разработчика), а между коннекторами J1 и J2 может устанавливаться 95-контактный коннектор J3. Конструкция коннекторов позволяет для J2 применять специфические модификации, в которых может, например, присутствовать разделяющий экран и механические ключи. В шине предусматривается наличие независимых источников питания +5 В, +3.3 В и +/-12 В 
Сигналы шины PCI 
Знак - (минус) перед названием сигнала означает, что активный уровень этого сигнала логический ноль, обозначение {XX:0} означает группу сигналов с номерами от 0 до XX 
AD {31:0} - мультиплексированная шина адреса/данных. Адрес передается по сигналу - FRAME, в последующих тактах передаются данные 
-C/ BE {3:0} - команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины (чтение-запись памяти, ввода/вывода или чтение/запись конфигурации, подтверждение прерывания и другие) задается четырехбитным кодом в фазе адреса по сигналу - FRAME 
-FRAME - индикатор фазы адреса (иначе - передача данных) 
-DEVSEL - выбор инициатором устройства назначения 
-IRDY - готовность инициатора к обмену данными 
-TRDY - готовность устройства назначения к обмену данными 
-STOP - запрос устройства назначения к инициатору на останов текущей транзакции 
-LOCK - используется для установки, обслуживания и освобождения захвата ресурса на PCI 
-REQ {3:0} - запрос от PCI-устройства на захват шины (для слотов 3:0) 
-GNT {3 0} - разрешение мастеру на использование шины 
PAR - общий бит четности для линий AD {31:0} и C/BE {3:0} 
-ParityER - сигнал об ошибке по четности (от устройства, ее обнаружившего) 
-RST - сброс всех устройств 
IDSEL - выбор устройства назначения в циклах считывания и записи конфигурации 
-SERR - системная ошибка, активизируется любым устройством PCI и вызывает емаскируемое прерывание процессора (NMI) 
-REQ64 - запрос на 64-битный обмен 
-ASK64 - подтверждение 64-битного обмена 
-INTR A,B,C,D - линии запросов прерывания, направляются на доступные линии IRQ BIOS компьютера. Запрос по низкому уровню допускает разделяемое использование линий прерывания 
Clock - сигнал синхронизации на тактовой частоте шины 
Test Clock, -TSTRES, TestDO, TestDI - сигналы для тестирования адаптеров по интерфейсу JTAG (на системной плате обычно не задействованы) 
TSTMSLCT - перевод в режим тестирования 
Разъем шины PCI 
Ряд В 	Номер 	Ряд А 	Ряд В 	Номер 	Ряд А 	
-12 В 	1 	-TSTRES 	-C / BE 3 	26 	IDSEL 	
Test Clock 	2 	+12 B 	AD 23 	27 	+3,3 B 	
GND 	3 	TSTMSLCT 	GND 	28 	AD 22 	
Test DO 	4 	Test DO 	AD 21 	29 	AD 20 	
+5 B 	5 	+5 B 	AD 19 	30 	GND 	
+5 B 	6 	-INTR A 	+3,3 B 	31 	AD 18 	
-INTR B 	7 	-INTR C 	AD 17 	32 	AD 16 	
-INTR D 	8 	+5 B 	-C / BE 2 	33 	+3,3 B 	
-PRSNT 1 	9 	Reserved 	GND 	34 	-FRAME 	
Reserved 	10 	+VI / O 	-IRDY 	35 	GND 	
-PRSNT 2 	11 	Reserved 	+3,3 B 	36 	-TRDY 	
GND / Ключ 	12 	GND /Ключ 	-DEVSEL 	37 	GND 	
GND / Ключ 	13 	GND /Ключ 	GND 	38 	-STOP 	
Reserved 	14 	Reserved 	-Lock 	39 	+3,3 B 	
GND 	15 	-RST 	ParityER 	40 	SDONE 	
Clock 	16 	+VI / O 	+3,3 B 	41 	-SBOFF 	
GND 	17 	-GNT 	SysERR 	42 	GND 	
-REQ 	18 	GND 	+3,3 B 	43 	PAR 	
+V I/O 	19 	Reserved 	-C / BE 1 	44 	AD 15 	
AD 31 	20 	AD 30 	AD 14 	45 	+3,3 B 	
AD 29 	21 	+3,3 B 	GND 	46 	AD 13 	
GND 	22 	AD 28 	AD 12 	47 	AD 11 	
AD 27 	23 	AD 26 	AD 10 	48 	GND 	
AD 25 	24 	GND 	GND 	49 	AD 9 	
+3,3 B 	25 	AD 24 	GND / Ключ 	50** 	GND / Ключ 	
GND /Ключ 	51**** 	GND / Ключ 	GND 	73 	AD 56 	
AD 8 	52 	-C / BE 0 	AD 55 	74 	AD 54 	
AD 7 	53 	+3,3 B 	AD 53 	75 	+VI / O 	
+3,3 B 	54 	AD 6 	GND 	76 	AD 52 	
AD 5 	55 	AD 4 	AD 51 	77 	AD 50 	
AD 3 	56 	GND 	AD 49 	78 	GND 	
GND 	57 	AD 2 	+VI / O 	79 	AD 48 	
AD 1 	58 	AD 0 	AD 47 	80 	AD 46 	
+ VI / O 	59 	+VI / O 	AD 45 	81 	GND 	
-ACK 64 	60 	-REQ64 	GND 	82 	AD 44 	
+5 B 	61 	+5B 	AD 43 	83 	AD 42 	
+5 B 	62 	+5B 	AD 41 	84 	+VI / O 	
Конец 32-битного разъема 	GND 	85 	AD 40 	
  	AD 39 	86 	AD 38 	
Reserved 	63 	GND 	AD 37 	87 	GND 	
GND 	64 	-C / BE 7 	+VI / O 	88 	AD 36 	
-C / BE 	65 	- C / BE 5 	AD 35 	89 	AD 34 	
-C / BE 	66 	+ VI / O 	AD 33 	90 	GND 	
GND 	67 	PAR 64 	GND 	91 	AD 32 	
AD 63 	68 	AD 62 	Reserved 	92 	Reserved 	
AD 61 	69 	GND 	Reserved 	93 	GND 	
+VI / O 	70 	AD 60 	GND 	94 	Reserved 	
AD 59 	71 	AD 58 	Конец 64-битного разъема 	
AD 57 	72 	GND 		
*12, 13 - ключ для 3,3V 
**50,51 - ключ для 5V 
Циклы шины 
По сигналам C/BE (от C/BE3 до C/BE0) во время фазы передачи адреса определяется тип цикла передачи данных 
C/BE 	Команда 	
0000 	Interrupt Acknowledge (подтверждение прерывания) 	
0001 	Special Cycle (специальный цикл) 	
0010 	I/O Read (чтение порта) 	
0011 	I/O Write (запись в порт) 	
0100 	Reserved (резервировано) 	
0101 	Reserved (резервировано) 	
0110 	Memory Read (чтение памяти) 	
0111 	Memory Write (запись в память) 	
1000 	Reserved (резервировано) 	
1001 	Reserved (резервировано) 	
1010 	Configuration Read (чтение конфигурации) 	
1011 	Configuration Write (запись конфигурации) 	
1100 	Multiple Memory Read (множественное чтение памяти) 	
1101 	Dual Address Cycle (двойной цикл адреса) 	
1110 	Memory-Read Line (чтение памяти) 	
1111 	Memory Write and Invalidate (запись в память и проверка) 	
Подтверждение прерывания (0000) 
Контроллер прерываний автоматически распознает сигнал INTA и реагирует на него передачей вектора прерывания по шине AD 
Специальный цикл (0001) 
AD15-AD0 	Описание 	
0x0000 	Processor Shutdown (процессор прекращает работу) 	
0x0001 	Processor Halt (останов процессора) 	
0x0002 	x86 Specific Code (специальный код для машин на архитектуре Intel x86) 	
0x0003 to 0xFFFF 	Reserved (зарезервировано) 	
Чтение порта (0010) и запись в порт (0011) 
Порты ввода/вывода на шине PCI могут быть 8 или 16-ти разрядными, хотя собственно стандарт на шину PCI позволяет иметь 32-х разрядное адресное пространство. Это вызвано тем, что на компьютерах с архитектурой Intel x86, адрес порта может иметь не более 16 разрядов. Пока и 16-ти разрядный адрес порта не может быть использован, так как карты на шине ISA isabus.htm
могут декодировать только 10 разрядов 
Адресное пространство конфигурации доступно по адресам портов 0x0CF8 (Адрес) и 0x0CFC (Данные), причем адрес должен быть записан первым 
Чтение памяти (0110) и запись в память (0111) 
По шинам AD передается адрес двойным словом (четыре байта). Сигналы AD0 и AD1 декодировать не требуется. Истинность данных определяется сигналами C/BE 
Чтение конфигурации (1010) и запись конфигурационных данных (1011) 
Эти операции выполняются для конфигурационного пространства PCI карты. Размер области конфигурации составляет 256 байт, причем читать/записывать в нее можно только в 32-х разрядной сетке, т.е. двойными словами. Поэтому AD0 и AD1 должны быть установлены в 0, AD2-7 содержать адрес двойного слова, AD8-10 используются для выбора адресуемого устройства, а оставшиеся шины адреса игнорируются 
Двойной цикл адреса (1101) 
Двойной цикл адреса необходим в том случае, если необходимо передать 64-х разрядный адрес в версии PCI с 32-х разрядной адресной сетке. В первом цикле передаются четыре младших байта адреса, затем четыре старших байта. Во втором цикле необходимо также передать команду, определяющую тип устройства, чей адрес выставлен (порт ввода/вывода, память и т.д.). Собственно PCI поддерживает 64 разряда адреса для портов ввода/вывода, но в PC на процессорах архитектуры от Intel такое адресное пространство не поддерживается (не позволяет сам процессор)