88 Anatomia PC
Procesory serii x86 mogą adresować dwa obszary pamięci: pamięć operacyjną i przestrzeń wejścia-wyjścia, natomiast magistrala PCI wykorzystuje trzy obszary pamięci: pamięć operacyjną, przestrzeń wejścia-wyjścia i pamięć konfiguracyjną.
Pamięć konfiguracyjna nic została umieszczona w przestrzeni wejścia-wyjścia ze względu na swoje rozmiary - 256 bajtów dla urządzenia może dać do 64 kB pamięci konfiguracyjnej. W przestrzeni wejścia wyjścia oprócz portów magistrali PCI muszą się zmieścić porty wykorzystywane przez wcześniejsze rozwiązania (ISA, EISA).
Aby zachować zgodność z wcześniejszymi systemami i umożliwić implementację magistral ISA i LISA w systemach PCI, zostały zdefiniowane dwa mechanizmy dostępu do pamięci konfiguracyjnej urządzeń PCI, wykorzystujące porty umieszczone w przestrzeni wejścia-wyjścia.
Pici wszy, preferowany mechanizm dostępu do pamięci konfiguracyjnej jest bardzo prosty:
• w pierwszym etapie należy wpisać do 32-bitowego portu 0CF8h numer rejestru urządzenia PCI;
• w drugim etapie należy wpisać lub odczytać zawartość tego rejestru z 32-bito-wego portu o adresie OCFCh.
Mechanizm ten umożliwia dostęp do wszystkich rejestrów konfiguracyjnych, wszystkich urządzeń podłączonych do magistrali PCI, ponieważ pierwszy port pozwala na jednoznaczne zakodowanie numeru podwójnego słowa pamięci konfiguracyjnej wszystkich urządzeń PCI. Z kolei rozmiar drugiego portu odpowiada rozmiarowi zaadresowanego podwójnego słowa.
Sposób kodowania numeru rejestru odpowiada następującemu schematowi:
bit |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
bil |
bil |
bit |
bit |
bit |
bit |
bil |
bit |
31 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 | |||||||
bu |
bit |
bil |
bit |
bit |
bit |
bit |
bit |
bit |
bit |
bit |
bit |
bil |
bit |
0 |
0 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7. |
6 |
5 |
4 |
3 |
2 |
bit 31
bity 30-24 bity 23-16
bity 15-11 bity 10-8
określa sposób dostępu do rejestrów konfiguracyjnych. Wartość I
oznacza transakcję konfiguracyjną, natomiast 0 transakcję I/O;
zarezerwowane, muszą mieć wartość 0;
określają numer magistrali PCI, do której dołączone jest
urządzenie (0-255);
określają numer urządzenia PCI (0-31);
określają numer funkcji urządzenia PCI (0—7);