PCI - шина
PCI ( P b> eripheral C b> omponent I b> nterconnect bus) - шина для підключення периферійних пристроїв. Стала масово застосовуватися для 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,3 V). Ключами є пропущені ряди контактів 12, 13 і 50, 51. Для слота з харчуванням 5V ключ розташований на місці контактів 50, 51, для 3,3 В - 12, 13, а для універсального - два ключі: 12, 13 і 50,51. 32-бітний слот закінчується контактами А62/В62, 64-бітний - А94/В94.
Слот PCI самодостатній для підключення будь-якого контролера на системній платі може співіснувати з будь-якою з інших шин вводу-виводу.
Шина PCI - перша шина в архітектурі IBM PC, яка не прив'язана до цієї архітектурі. Вона є процесорної-незалежної і застосовується, наприклад, у комп'ютерах Macintosh.
На відміну від інших шин, компоненти розташовані на лівій поверхні плат PCI-адаптерів. З цієї причини крайній PCI-слот звичайно розділяє використання посадкового місця з сусіднім ISA-слотом (Shared slot).
Процесор через так звані мости (PCI Bridge) може бути підключений до декількох каналах PCI, забезпечуючи можливість одночасної передачі даних між незалежними каналами PCI.
Автоконфігурірованіе пристроїв (вибір запитів переривання, каналів DMA) підтримується засобами BIOS материнської плати за образом і подобою стандарту Plug & Play.
Стандарт PCI визначає для кожного слота конфігураційне простір розміром до 256 восьмібітних регістрів, не приписаних ні до простору пам'яті, ні до простору введення-виведення. Доступ до них здійснюється за спеціальними циклів шини Configuration Read і Configuration Write, вироблюваним контролером при звертанні процесора до регістрів контролера шини PCI, розташованим в його просторі введення-виведення.
На PCI визначені два основних види пристроїв - ініціатор (по ГОСТ - Задатчики), тобто пристрій, що одержав від арбітра шини дозвіл на захоплення її та пристрій призначення, мета (target) з яким ініціатор виконує цикл обміну даними.
Підтримка "гарячої" заміни PCI пристроїв, що називається в стандарті як PCI Hot-Plug. Введення цієї функції дозволить додавати/вилучати PCI плати без виключення комп'ютера. Така можливість особливо необхідна для серверних платформ
Система управління енергоспоживанням для пристроїв на шині PCI. Дозволяє керувати енергоспоживанням як для зовнішніх PCI плат так і для вбудованих на материнській платі пристроїв. Механізм управління змінено відповідно стандарт ACPI для полегшення управління енергоспоживанням PCI пристроїв з боку операційної системи.
Доповнено і перероблені вимоги до конструктивної реалізації PCI плат.
Сигнали шини PCI
Знак - (мінус) перед назвою сигналу означає, що активний рівень цього сигналу логічний нуль, позначення (XX: 0) означає групу сигналів з номерами від 0 до XX.
AD b> (31:0) - мультиплексованих шина адреси/даних. Адреса передається по сигналу - FRAME, в подальших тактах передаються дані.
-C/BE b> (3:0) - команда/дозвіл звернення до байтах. Команда, яка визначає тип чергового циклу шини (читання-запис пам'яті, введення/виводу або читання/запис конфігурації, підтвердження переривання та інші) задається четирехбітним кодом у фазі адреси по сигналу - FRAME.
-FRAME b> - індикатор фази адреси (інакше - передача даних).
-DEVSEL b> - вибір ініціатором пристрої призначення.
-IRDY b> - ініціатора готовність до обміну даними.
-TRDY b> - готовність пристрою призначення до обміну даними.
-STOP b> - запит пристрої призначення до ініціатора на останов поточної транзакції.
-LOCK b> - використовується для встановлення, обслуговування та звільнення захоплення ресурсу на PCI.
-REQ b> (3:0) - запит від PCI-пристрої на захоплення шини (для слотів 3:0).
-GNT b> (3 0) - майстру дозвіл на використання шини.
PAR b> - загальний біт парності для ліній AD b> (31:0) і C/BE b> (3:0).
-ParityER b> - сигнал про помилку по парності (від пристрою, що її виявив).
-RST b> - скидання всіх пристроїв.
IDSEL b> - вибір пристрою призначення в циклах зчитування та запису конфігурації.
-SERR b> - системна помилка, активізується будь-яким пристроєм PCI і викликає емаскіруемое переривання процесора (NMI).
-REQ64 b> - запит на 64-бітний обмін.
-ASK64 b> - підтвердження 64-бітного обміну.
-INTR A, B, C, D b> - лінії запитів переривання, направляються на доступні лінії IRQ BIOS комп'ютера. Запит щодо низького рівня допускає колективні використання ліній переривання.
Clock b> - сигнал синхронізації на тактовій частоті шини.
Test Clock,-TSTRES, TestDO, TestDI b> - сигнали для тестування адаптерів по інтерфейсу JTAG (на системній платі зазвичай не задіяні).
TSTMSLCT b> - переведення в режим тестування.
Роз'єм шини 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
5 B
AD 43
83
AD 42
5 B
62
5 B
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,3 V
** 50,51 - ключ для 5V
Цикли шини
b>
За сигналами 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)
b>
Контролер переривань автоматично розпізнає сигнал INTA і реагує на нього передачею вектора переривання по шині AD.
Спеціальний цикл (0001) b>
AD15-AD0
Опис
0x0000
Processor Shutdown (процесор припиняє роботу)
0x0001
Processor Halt (зупинка процесора)
0x0002
x86 Specific Code (спеціальний код для машин на архітектурі Intel x86)
0x0003 to 0xFFFF
Reserved (зарезервовано)
Читання порту (0010) і запис в порт (0011)
b>
Порти введення/виводу на шині PCI можуть бути 8 або 16-ти розрядними, хоча власне стандарт на шину PCI дозволяє мати 32-х розрядне адресний простір. Це викликано тим, що на комп'ютерах з архітектурою Intel x86, адреса порту може мати не більше 16 розрядів. Ще й 16-ти розрядний адреса порту не може бути використаний, так як карти на шині ISA
можуть декодувати тільки 10 розрядів.
Адресний простір конфігурації доступно за адресами портів 0x0CF8 (Адреса) і 0x0CFC (Дані), причому адреса має бути записаний першим.
Читання пам'яті (0110) і запис в пам'ять (0111)
b>
За шинам AD передається адреса подвійним словом (чотири байти). Сигнали AD0 і AD1 декодувати не потрібно. Істинність даних визначається сигналами C/BE.
Читання конфігурації (1010) і запис конфігураційних даних (1011)
b>
Ці операції виконуються для конфігураційного простору PCI карти. Розмір області конфігурації становитиме 256 байт, причому читати/записувати в неї можна тільки в 32-х розрядної сітки, тобто подвійними словами. Тому AD0 і AD1 повинні бути встановлені в 0, AD2-7 містити адресу подвійного слова, AD8-10 використовуються для вибору адресується пристрою, а що залишилися шини адреси ігноруються.
Подвійний цикл адреси (1101)
b>
Подвійний цикл адреси є необхідним у тому випадку, якщо необхідно передати 64-х розрядну адресу у версії PCI з 32-х розрядної адресної сітці. У першому циклі передаються чотири молодших байти адреси, потім чотири старших байти. У другому циклі необхідно також передати команду, що визначає тип пристрою, чия адреса виставлений (порт введення/виводу, пам'ять і т.д.). Власне PCI підтримує 64 розряду адреси для портів введення/виводу, але в PC на процесорах архітектури від Intel таке адресний простір не підтримується (не дозволяє сам процесор).
PCI-X
b>
Улітку 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) b>
3.8
3.8
3.8
6
11
Tprop b>
2.0
4.5
9.5
5
10
Tskew b>
0.5
0.5
0.5
1
2
Tsu b>
1.2
1.2
1.2
3
7
Tcyc b>
7.5
10
15
15
30
Thold b>
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 - учетверенная швидкість обміну даними
Шина b> Compact PCI b> (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 В.