Основные характеристики и принципы функционирования PCI - шины
PCI ( P eripheral C omponent I nterconnect bus)-шина – шина, применяемая для подсоединения периферийных устройств. Шина PCI - первая шина в архитектуре IBM PC, которая не привязана к этой архитектуре. Она является процессорно-независимой и применяется, например, в компьютерах Macintosh. Массовое применение получила в комплексе с Pentium-системами, но возможно её использование и с 486 процессорами.
Имеет следующие основные характеристики:
В стандарте 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
Официальный взгляд 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 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 пары сигналов запросов и предоставления управления шиной.
Основные характеристики:
- поддерживает спецификацию PnP: в ней работают все механизмы идентификации и автоконфигурирования, имеющиеся в PCI.
Внешне платы 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
могут декодировать только 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 такое адресное пространство не поддерживается (не позволяет сам процессор).