Шина PCI
ОГЛАВЛЕНИЕ
Слот PCI самодостаточен для подключения любого контроллера (VLB не работала без ISA), на системной плате может сосуществовать с любой из других шин ввода-вывода.
Шина PCI - первая шина в архитектуре IBM PC, которая не привязана к этой архитектуре. Она является процессорно-независимой и применяется, например, в компьютерах Macintosh.
В отличие от остальных шин, компоненты расположены на левой поверхности плат PCI-адаптеров. По этой причине крайний PCI-слот обычно разделяет использование посадочного места с соседним ISA-слотом (Shared slot).
Процессор через так называемые мосты (PCI Bridge) может быть подключен к нескольким каналам PCI, обеспечивая возможность одновременной передачи данных между независимыми каналами PCI (возможно только в спецификации 2.1).
Автоконфигурирование устройств (выбор запросов прерывания, каналов DMA) поддерживается средствами BIOS материнской платы по образу и подобию стандарта Plug & Play. В настоящее время действует спецификация PCI 2.1.
Стандарт PCI определяет для каждого слота конфигурационное пространство размером до 256 восьмибитных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и Configuration Write, вырабатываемым контроллером при обращении процессора к регистрам контроллера шины PCI, расположенным в его пространстве ввода-вывода.
На PCI определены два основных вида устройств - инициатор (по ГОСТ - задатчик), т.е. устройство, получившее от арбитра шины разрешение на захват ее и устройство назначения, цель (target) с которым инициатор выполняет цикл обмена данными.
В мае 1999 года появилась спецификация 2.2 стандарта PCI и в это же время фирма Intel выпустила первый chipset с поддержкой версии 2.2 - i810. Поддержка версии 2.2 также появилась в некоторых платах на наборе 440BX. В соответствии с новой спецификацией появились следующие новые возможности:
-
Поддержка "горячей" замены PCI устройств, называемой в стандарте как PCI Hot-Plug. Ввод этой функции позволит добавлять/изымать PCI платы без выключения компьютера. Такая возможность особенно необходима для серверных платформ
-
Система управления энергопотреблением для устройств на шине PCI. Позволяет управлять энергопотреблением как для внешних PCI плат так и для встроенных на материнской плате устройств. Механизм управления подстроен под стандарт ACPI для облегчения управления энергопотреблением PCI устройств со стороны операционной системы.
-
Дополнены и переработаны требования к конструктивной реализации PCI плат.
Следует помнить, что для практического использования новых возможностей PCI расширения стандарта должны быть поддержаны как контроллером шины PCI так и самим PCI устройством.
Сигналы шины 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.
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 используются для выбора адресуемого устройства, а оставшиеся шины адреса игнорируются.
Адрес/Бит 32 16 15 0
00 Unit ID | Manufacturer ID
04 Status | Command
08 Class Code | Revision
0C BIST | Header | Latency | CLS
10-24 Регистр адреса
28 Резерв
2C Резерв
30 Базовый адрес ПЗУ устройства
34 Резерв
38 Резерв
3C MaxLat|MnGNT | INT-pin | INT-line
40-FF Используется самим устройством
Примечания:
-
Unit ID - идентификационный номер устройства
-
Manufacturer ID - идентификатор производителя устройства
-
Status - состояние
-
Class Code - код класса устройства
-
BIST - Built-In Self Test - встроенный тест
Это расширение обычного цикла чтения памяти. Используется для чтения больших блоков памяти без кэширования.
Двойной цикл адреса (1101)
Двойной цикл адреса необходим в том случае, если необходимо передать 64-х разрядный адрес в версии PCI с 32-х разрядной адресной сетке. В первом цикле передаются четыре младших байта адреса, затем четыре старших байта. Во втором цикле необходимо также передать команду, определяющую тип устройства, чей адрес выставлен (порт ввода/вывода, память и т.д.). Собственно PCI поддерживает 64 разряда адреса для портов ввода/вывода, но в PC на процессорах архитектуры от Intel такое адресное пространство не поддерживается (не позволяет сам процессор).
___ ___ ___ ___ ___ ___
CLK ___| |___| |___| |___| |___| |___| |___
_______ _________
FRAME |_________________________________|
______ _______ ______ ______ ______
AD -------<______><_______><______><______><______>---
Адрес Данные1 Данные2 Данные3 Данные4
______ _______________________________
C/BE -------<______><_______________________________>---
Команда Сигнал разрешения передачи байта
____________ ___
IRDY |_________________________________|
_____________ ___
TRDY |________________________________|
______________ ___
DEVSEL |_______________________________|
Цикл передачи данных на PCI, включает 4 фазы передачи данных, без тактов ожидания. Данные передаются по переднему фронту сигнала CLK.
[1] [2] [3]
___ ___ ___ ___ ___ ___ ___ ___
CLK _| |___| |___| |___| |___| |___| |___| |___| |_
_____ ________
FRAME |________________________________________________|
A B C
______ ______________ ______ _____________
AD -----<______>---------<______________><______><_____________>--
Адрес Данные1 Данные2 Данные3
______ ______________________________________________
C/BE -----<______><______________________________________________>--
Команда Сигнал разрешения передачи байта
Ожидание
__________ _____ __
IRDY |__________________________________| |_______|
Ожидание Ожидание
____________________ ______ __
TRDY |_______| |_______________________|
____________ _
DEVSEL |______________________________________________|
Цикл передачи данных на PCI включает 3 фазы передачи данных с тактами ожидания. Данные передаются по переднему фронту сигнала CLK.
PCI-X
Летом 1999 года консорциум SIG по PCI принял спецификацию принципиально нового варианта шины PCI - PCI-X. Несмотря на превосходные технические параметры, новая шина разрабатывалась под скептическим взглядом Intel, которая активно ведет разработку собственной шины NGIO. До настоящего времени практически все интерфейсы, разрабатываемые Intel (AGP,PCI, USB) принимались компьютерной индустрией Официальный взгляд Intel на PCI-X выглядит так: PCI-X хорошая шина, но жизнь ее будет недолговечной, так как когда мы разработаем и утвердим NGIO, PCI-X уйдет с рынка, проиграв NGIO по переспективности и производительности. Время покажет, кто победит, но очевидно, что только при поддержке PCI-X Intel в своих chipset она может найти широкое распространение.
Активное участие таких крупных компаний как IBM, Compaq, Hewlett-Packard в разработке PCI-X тем не менее дает новой шине существенные шансы на успех, и, кроме этого, в ее пользу говорит принятие спецификации PCI-X в то время как NGIO еще находится в разработке.
Основные отличия 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 - учетверенная скорость обмена данными