Cum arată un slot PCI? Pe scurt despre PCI și diferențele cu PCIe și AGP. Conector pentru conectarea procesorului pe placa de baza

Standardul PCI Express este unul dintre bazele computerelor moderne. Sloturile PCI Express au ocupat de mult timp un loc puternic pe orice placă de bază de computer desktop, înlocuind alte standarde, cum ar fi PCI. Dar chiar și standardul PCI Express are propriile sale variații și modele de conexiune care diferă unele de altele. Pe plăcile de bază noi, începând cu 2010, puteți vedea o întreagă împrăștiere de porturi pe o singură placă de bază, desemnată ca PCIE sau PCI-E, care poate diferi în ceea ce privește numărul de linii: unul x1 sau mai multe x2, x4, x8, x12, x16 și x32.

Deci, haideți să aflăm de ce există o astfel de confuzie între portul periferic PCI Express aparent simplu. Și care este scopul fiecărui standard PCI Express x2, x4, x8, x12, x16 și x32?

Ce este magistrala PCI Express?

În anii 2000, când a avut loc tranziția de la vechiul standard PCI (extensie - interconectarea componentelor periferice) la PCI Express, acesta din urmă avea un avantaj imens: în loc de o magistrală serială, care era PCI, un punct la punct. a fost folosit autobuzul de acces. Acest lucru însemna că fiecare port PCI individual și cardurile instalate în el puteau profita din plin de lățimea de bandă maximă fără a interfera unul cu celălalt, așa cum sa întâmplat cu o conexiune PCI. În acele zile, numărul de dispozitive periferice introduse în cardurile de expansiune era abundent. Plăcile de rețea, plăcile audio, tunerele TV și așa mai departe - toate au necesitat o cantitate suficientă de resurse PC. Dar, spre deosebire de standardul PCI, care folosea o magistrală comună pentru transferul de date cu mai multe dispozitive conectate în paralel, PCI Express, atunci când este luată în considerare în general, este o rețea de pachete cu o topologie în stea.


PCI Express x16, PCI Express x1 și PCI pe o singură placă

În termeni simpli, imaginați-vă computerul desktop ca pe un mic magazin cu unul sau doi vânzători. Vechiul standard PCI era ca un magazin alimentar: toți așteptau la aceeași coadă pentru a fi serviți, întâmpinând probleme de viteză cu limitarea unui singur vânzător în spatele ghișeului. PCI-E seamănă mai mult cu un hipermarket: fiecare client își urmează propriul traseu individual pentru produse alimentare, iar la casă, mai multe casiere preiau comanda deodată.

Evident, un hipermarket este de câteva ori mai rapid decât un magazin obișnuit în ceea ce privește viteza de deservire, datorită faptului că magazinul nu își poate permite capacitatea a mai mult de un vânzător cu o singură casă de marcat.

De asemenea, cu benzi de date dedicate pentru fiecare placă de expansiune sau componente încorporate ale plăcii de bază.

Influența numărului de linii asupra debitului

Acum, pentru a ne extinde metafora magazinului și hipermarketului, imaginați-vă că fiecare departament al hipermarketului are propriile casiere rezervate doar pentru ei. Aici intră în joc ideea mai multor benzi de date.

PCI-E a trecut prin multe schimbări de la începuturi. În zilele noastre, noile plăci de bază folosesc de obicei versiunea 3 a standardului, versiunea 4 mai rapidă devenind mai comună, versiunea 5 fiind așteptată în 2019. Dar versiuni diferite folosesc aceleași conexiuni fizice, iar aceste conexiuni pot fi realizate în patru dimensiuni principale: x1, x4, x8 și x16. (Există porturi x32, dar sunt extrem de rare pe plăcile de bază obișnuite ale computerelor).

Variat dimensiuni fizice Porturile PCI-Express vă permit să le împărțiți clar la numărul de conexiuni simultane la placa de bază: cu cât portul este mai mare din punct de vedere fizic, cu atât mai mult conexiuni maxime este capabil să se transfere pe card sau invers. Aceste conexiuni sunt, de asemenea, numite linii. O linie poate fi gândită ca o pistă formată din două perechi de semnale: una pentru trimiterea datelor și cealaltă pentru recepție.

Diferitele versiuni ale standardului PCI-E permit viteze diferite pe fiecare bandă. Dar, în general, cu cât există mai multe benzi pe un singur port PCI-E, cu atât mai repede pot circula datele între periferic și restul computerului.

Revenind la metafora noastră: dacă vorbim despre un vânzător într-un magazin, atunci banda x1 va fi acest singur vânzător care servește un singur client. Un magazin cu 4 casiere are deja 4 linii x4. Și așa mai departe, puteți aloca casierii după numărul de linii, înmulțind cu 2.


Diverse carduri PCI Express

Tipuri de dispozitive care utilizează PCI Express x2, x4, x8, x12, x16 și x32

Pentru versiunea PCI Express 3.0, viteza totală maximă de transfer de date este de 8 GT/s. În realitate, viteza pentru versiunea PCI-E 3 este puțin mai mică de un gigabyte pe secundă pe bandă.

Astfel, un dispozitiv care utilizează un port PCI-E x1, de exemplu, are o putere redusă placa de sunet sau antena Wi-Fi va putea transmite date de la viteza maxima la 1 Gbit/s.

Un card care se potrivește fizic într-un slot mai mare - x4 sau x8, de exemplu, un card de expansiune USB 3.0 va putea transfera date de patru sau, respectiv, de opt ori mai rapid.

Viteza de transfer a porturilor PCI-E x16 este teoretic limitată la o lățime de bandă maximă de aproximativ 15 Gbps. Acest lucru este mai mult decât suficient în 2017 pentru toate plăcile grafice moderne dezvoltate de NVIDIA și AMD.


Majoritatea plăcilor grafice discrete folosesc un slot PCI-E x16

Protocolul PCI Express 4.0 permite utilizarea a 16 GT/s, iar PCI Express 5.0 va folosi 32 GT/s.

Dar în prezent nu există componente care ar putea folosi acest număr de benzi cu debit maxim. Plăcile grafice moderne de înaltă calitate folosesc de obicei x16 PCI Express 3.0. Nu are sens să folosiți aceleași benzi pentru o placă de rețea care va folosi doar o singură bandă pe portul x16, deoarece portul Ethernet este capabil să transfere date de până la un gigabit pe secundă (care reprezintă aproximativ o opteme din debitul o bandă PCI-E - rețineți: opt biți într-un octet).

Există SSD-uri PCI-E pe piață care acceptă portul x4, dar acestea par pregătite să fie înlocuite de noul standard M.2 care evoluează rapid. pentru SSD-uri, care pot fi folosite și magistrala PCI-E. Plăcile de rețea de ultimă generație și hardware-ul entuziast, cum ar fi controlerele RAID, folosesc o combinație de formate x4 și x8.

Porturile PCI-E și dimensiunile benzii pot varia

Aceasta este una dintre cele mai confuze probleme cu PCI-E: un port poate fi realizat în format x16, dar nu are suficiente benzi pentru a transporta date, de exemplu, doar x4. Acest lucru se datorează faptului că, deși PCI-E poate transporta suma nelimitata conexiuni individuale, există încă o limită practică a capacității de lățime de bandă a chipset-ului. Plăcile de bază mai ieftine cu chipset-uri de ultimă generație pot avea doar un slot x8, chiar dacă acel slot poate găzdui fizic un card cu factor de formă x16.

În plus, plăcile de bază destinate jucătorilor includ până la patru sloturi PCI-E complete cu x16 și același număr de benzi pentru o lățime de bandă maximă.

Evident, acest lucru poate cauza probleme. Dacă placa de bază are două sloturi x16, dar unul dintre ele are doar x4 benzi, atunci conectați un nou placă grafică va reduce productivitatea primului cu până la 75%. Acesta este, desigur, doar un rezultat teoretic. Arhitectura plăcilor de bază este de așa natură încât nu veți observa o scădere bruscă a performanței.

Configurația corectă a două plăci video grafice ar trebui să folosească exact două sloturi x16 dacă doriți confort maxim de la un tandem de două plăci video. Manualul de la birou vă va ajuta să aflați câte linii are un anumit slot pe placa de bază. site-ul producătorului.

Uneori, producătorii chiar marchează numărul de linii pe PCB-ul plăcii de bază lângă slot

Trebuie să știți că un card x1 sau x4 mai scurt se poate încadra fizic într-un slot x8 sau x16 mai lung. Configurare contact contacte electrice face posibil acest lucru. Desigur, dacă cardul este fizic mai mare decât slotul, atunci nu o veți putea introduce.

Prin urmare, rețineți, atunci când cumpărați carduri de expansiune sau faceți upgrade la cele actuale, trebuie să vă amintiți întotdeauna atât dimensiunea slotului PCI Express, cât și numărul de benzi necesare.

Și PCI-X sunt conectori cu fante care au pinii înclinați la 0,05 inchi. Sloturile sunt situate puțin mai departe de panoul din spate decât ISA/EISA sau MCA. Componentele cardului PCI sunt situate pe suprafața din stânga a cardurilor. Din acest motiv, slotul PCI cel mai exterior împarte de obicei slotul adaptorului (un slot de pe peretele din spate al carcasei) cu slotul ISA adiacent. Un astfel de slot se numește slot partajat; în el poate fi instalat fie o placă ISA, fie PCI.

Cardurile PCI pot fi proiectate pentru semnale de interfață de 5 V și 3,3 V și pot fi universale. Sloturile PCI au niveluri de semnal corespunzătoare sursei de alimentare a cipurilor dispozitivelor PCI de pe placa de bază (inclusiv puntea principală): fie 5 V, fie 3,3 V. Pentru a evita conexiunile eronate, sloturile au chei care determină tensiunea nominală. Cheile sunt rândurile lipsă de contacte 12, 13 și/sau 50, 51:

  • pentru un slot de 5 V, cheia (partiția) este situată la contactele 50, 51 (mai aproape de peretele frontal al carcasei); astfel de sloturi sunt anulate în PCI 3.0;
  • pentru un slot de 3,3 V, partiția este situată la pinii 12, 13 (mai aproape de peretele din spate al carcasei);
  • nu există partiții pe sloturile universale;
  • pe conectorii de margine ai cardurilor de 5 V există sloturi potrivite numai la locul contactelor 50, 51; astfel de carduri sunt anulate în PCI 2.3;
  • pe carduri 3.3 În sloturi numai pe site-ul de contacte 12, 13;
  • Cardurile universale au ambele chei (două sloturi).

Cheile nu vă permit să instalați un card într-un slot cu o tensiune de alimentare necorespunzătoare. Cardurile și sloturile diferă numai în ceea ce privește alimentarea cu energie a circuitelor tampon, care provine de la liniile +V I/O:

  • pe slotul „5 V”, + 5 V este furnizat pe linia +V I/O;
  • pe slotul „3,3 V”, + (3,3–3,6) V este furnizat pe linia +V I/O;
  • pe cardul „5 V”, cipurile tampon sunt proiectate doar pentru alimentare de + 5 V;
  • pe cardul „3,3 V”, cipurile tampon sunt proiectate numai pentru alimentare de + (3,3–3,6) V;
  • pe o cartelă universală, cipurile tampon permit ambele opțiuni de alimentare și vor genera și recepționa în mod normal semnale conform specificațiilor de 5 sau 3,3 V, în funcție de tipul de slot în care este instalată cardul (adică de tensiunea de pe + V I/). O contacte).

Pe sloturile de ambele tipuri există tensiuni de alimentare de + 3,3, + 5, + 12 și –12 V pe liniile cu același nume. PCI 2.2 definește o linie suplimentară 3.3Vaux - putere „în așteptare” + 3.3 V pentru dispozitivele care generează semnalul PME# atunci când alimentarea principală este oprită.

NOTĂ!

Cele de mai sus sunt prevederi din specificațiile oficiale PCI. Pe modern plăci de bază ah, deocamdată, cel mai adesea există sloturi care sunt de 5 volți conform cheii. Cu toate acestea, tensiunea pe liniile +V I/O și nivelurile semnalului de interfață sunt de 3,3 volți. Toate cardurile moderne cu chei de 5 volți funcționează în mod normal în aceste sloturi - circuitele lor de interfață funcționează atât cu surse de alimentare de 3,3, cât și de 5 V. Interfața cu surse de alimentare de 5 volți poate funcționa doar la frecvențe de până la 33 MHz. Plăcile de bază „adevărate” de 5V erau disponibile numai pentru modelele 486 și Pentium timpurii.

Cele mai comune sunt sloturile pe 32 de biți care se termină în pinii A62/B62. Sloturile pe 64 de biți sunt mai puțin comune, sunt mai lungi și se termină la pinii A94/B94. Designul conectorilor și protocolul vă permit să instalați carduri pe 64 de biți atât în ​​sloturi pe 64 de biți, cât și pe 32 de biți și invers, carduri pe 34 de biți atât în ​​sloturi pe 32 de biți, cât și pe 64 de biți. În acest caz, adâncimea de biți a schimbului va corespunde celei mai slabe componente.

Pentru a semnala instalarea unui card și consumul său de energie, pe conectorii PCI sunt prevăzute două contacte - PRSNT1# și PRSNT2#, dintre care cel puțin unul este conectat la magistrala GND de pe card. Cu ajutorul lor, sistemul poate determina prezența unui card în slot și consumul de energie. Codificarea consumului de energie este dată în tabel; Valorile pentru cardurile PCI mici sunt, de asemenea, date aici.

Cardurile și sloturile PCI-X corespund mecanic cardurilor și sloturilor de 3,3 volți; Tensiunea de alimentare + V I/O pentru modul PCI-X 2 este setată la 1,5 V.

Figura prezintă plăcile PCI în designul computerelor compatibile PC/AT. Cardurile de dimensiune completă (Long Card, 107×312 mm) sunt rar folosite; cardurile scurtate (Short Card, 107×175 mm) sunt folosite mai des, dar multe carduri au și dimensiuni mai mici. Cardul are un cadru (bracket), standard pentru designul ISA (anterior existau carduri cu un cadru în stilul MCA al IBM PS/2). Pentru cardurile Low Profile, înălțimea nu depășește 64,4 mm; parantezele lor sunt, de asemenea, mai scurte în înălțime. Astfel de carduri pot fi instalate vertical în carcase de 19 inci cu o înălțime de 2U (aproximativ 9 cm).

Atribuțiile pinilor conectorului cardului PCI/PCI-X sunt prezentate în tabelul de mai jos.

Rândul BRândul ARândul BRândul A
-12V 1 TRST# GND/M66EN 1 49 AD9
TCK 2 +12 V GND/Tasta 5V/MOD 2 50 GND/Tasta 5V
GND 3 TMS GND/Tasta 5V 51 GND/Tasta 5V
TDO 4 TDI AD8 52 C/BE 0 #
+5 V 5 +5 V AD7 53 +3,3 V
+5 V 6 INTA# +3,3 V 54 AD6
INTB# 7 INTC# AD5 55 AD4
INTD# 8 +5 V AD3 56 GND
PRSNT1# 9 ECC 5 2 GND 57 AD2
ECC4 2 10 +V I/O AD1 58 AD0
PRSNT2# 11 ECC 3 2 +V I/O 59 +V I/O
GND/Cheie 3,3V 12 GND/Cheie 3,3V ACK 64#/ECC 1 60 REQ 64 #/ECC 6
GND/Cheie 3,3V 13 GND/Cheie 3,3V +5 V 61 +5 V
ECC2 2 14 3.3Vaux 3 +5 V 62 +5 V
GND 15 RST# Sfârșitul conectorului pe 32 de biți
CLK 16 +V I/O rezervă 63 GND
GND 17 GNT# GND 64 C/BE 7#
REQ# 18 GND C/BE 6# 65 C/BE 5#
+V I/O 19 PME# 3 C/BE 4# 66 +V I/O
AD31 20 AD30 GND 67 PAR 64 /ECC 7 2
AD29 21 +3,3 V AD63 68 AD62
GND 22 AD28 AD61 69 GND
AD27 23 AD26 +V I/O 70 AD60
AD25 24 GND AD59 71 AD58
+3,3 V 25 AD24 AD57 72 GND
C/BE3# 26 IDSEL GND 73 AD56
AD23 27 +3,3 V AD55 74 AD54
GND 28 AD22 AD53 75 +V I/O
AD21 29 AD20 GND 76 AD52
AD19 30 GND AD51 77 AD50
+3,3 V 31 AD18 AD49 78 GND
AD17 32 AD16 +V I/O 79 AD48
C/BE 2# 33 +3,3 V AD47 80 AD46
GND 34 CADRU# AD45 81 GND
IRDY# 35 GND GND 82 AD44
+3,3 V 36 TRDY# AD43 83 AD42
DEVSEL# 37 GND AD41 84 +V I/O
PCIXCAP 4 38 STOP# GND 85 AD40
LACĂT# 39 +3,3 V AD39 86 AD38
PERR# 40 SMBCLK 5 AD37 87 GND
+3,3 V 41 SMBDAT 5 +V I/O 88 AD36
SERR# 42 GND AD35 89 AD34
+3,3 V 43 PAR/ECC0 AD33 90 GND
C/BE 1# 44 AD15 GND 91 AD32
AD14 45 +3,3 V rezervă 92 rezervă
GND 46 AD13 rezervă 93 GND
AD12 47 AD11 GND 94 rezervă
AD10 48 GND Sfârșitul conectorului pe 64 de biți

Notă!

1 - Semnalul M66EN este definit în PCI 2.1 numai pentru sloturile de 3,3 V.
2 - Semnalul a fost introdus în PCI-X 2.0 (anterior exista o rezervă).
3 - Semnalul a fost introdus în PCI 2.2 (anterior exista o rezervă).
4 - Semnalul este introdus în PCI-X (în PCI - GND).
5 - Semnale introduse în PCI 2.3. În PCI 2.0 și 2.1, pinii A40 (SDONE#) și A41 (SBOFF#) au fost folosiți pentru cache snooping; în PCI 2.2 au fost lansate (pentru compatibilitate pe placa de bază, aceste circuite au fost trase la un nivel ridicat cu rezistențe de 5 kOhm).

Sloturile PCI au contacte pentru testarea adaptoarelor prin interfața JTAG (semnale TCK, TDI, TDO, TMS și TRST#). Pe placa de sistem, aceste semnale nu sunt întotdeauna folosite, dar se pot organiza lanț logic adaptoare de testare, la care puteți conecta echipamente de testare externe. Pentru continuitatea lanțului, un card non-JTAG trebuie să aibă o legătură TDI-TDO.

Pe unele plăci de bază mai vechi, în spatele unuia dintre sloturile PCI există un conector Media Bus, care transportă semnale ISA. Este proiectat pentru a găzdui un chipset audio proiectat pentru magistrala ISA de pe un card PCI. Majoritatea semnalelor PCI sunt conectate folosind o topologie de magistrală pură, adică pinii slotului cu același nume de pe aceeași magistrală PCI sunt conectați electric unul la altul. Există mai multe excepții de la această regulă:

  • Semnalele REQ# și GNT# sunt individuale pentru fiecare slot; ele conectează slotul la arbitru (de obicei o punte care conectează această magistrală la una mai înaltă);
  • Semnalul IDSEL pentru fiecare slot este conectat (eventual printr-un rezistor) la una dintre liniile AD, specificând numărul dispozitivului de pe magistrală;
  • semnalele INTA#, INTB#, INTC#, INTD# sunt deplasate ciclic de-a lungul contactelor, asigurând distribuirea cererilor de întrerupere;
  • semnalul CLK este furnizat fiecărui slot individual de la ieșirea sa tampon de sincronizare; lungimea conductoarelor de plumb este egalizată, asigurând sincronizarea semnalului pe toate sloturile (pentru toleranță 33 MHz ± 2 ns, pentru 66 MHz - ± 1 ns).

YouTube enciclopedic

  • 1 / 5

    Spre deosebire de standardul PCI, care folosea o magistrală comună pentru transferul de date cu mai multe dispozitive conectate în paralel, PCI Express este, în general, o rețea de pachete cu topologie în stea.

    Dispozitivele PCI Express comunică între ele printr-un mediu format din comutatoare, fiecare dispozitiv fiind conectat direct printr-o conexiune punct la punct la comutator.

    În plus, magistrala PCI Express acceptă:

    • lățime de bandă garantată (QoS);
    • managementul energiei;
    • monitorizarea integrității datelor transmise.

    Autobuzul PCI Express este destinat să fie utilizat numai ca autobuz local. Deoarece model software Atunci, PCI Express este moștenit în mare parte de la PCI sistemele existente iar controlerele pot fi modificate pentru a utiliza magistrala PCI Express prin înlocuirea doar a stratului fizic, fără modificarea software-ului. Performanța de vârf a magistralei PCI Express îi permite să fie folosită în locul magistralelor AGP, și cu atât mai mult PCI și PCI-X. De facto, PCI Express a înlocuit aceste autobuze în computerele personale.

    Conectori

    • MiniCard (Mini PCIe) - înlocuitor pentru factorul de formă Mini PCI. Conectorul Mini Card acceptă următoarele magistrale: x1 PCIe, USB 2.0 și SMBus.
    • ExpressCard - similar cu factorul de formă PCMCIA. Conectorul ExpressCard acceptă magistralele x1 PCIe și USB 2.0; cardurile ExpressCard acceptă conectarea la cald.
    • AdvancedTCA este un factor de formă pentru echipamentele de telecomunicații.
    • Mobile PCI Express Module (MXM) este un factor de formă industrial creat pentru laptopuri de NVIDIA. Este folosit pentru a conecta acceleratoare grafice.
    • Specificațiile cablului PCI Express permit ca lungimea unei conexiuni să atingă zeci de metri, ceea ce face posibilă crearea unui computer ale cărui dispozitive periferice sunt situate la o distanță considerabilă.
    • StackPC - specificație pentru construirea stivuitoare sisteme informatice. Această specificație descrie conectorii de expansiune StackPC, FPE și pozițiile lor relative.

    PCI Express X1

    Mini PCI-E

    Mini PCI Express este un format de magistrală PCI Express pentru dispozitive portabile.

    Multe dispozitive periferice sunt disponibile pentru acest standard de conector:

    SSD Mini PCI Express

    • Alimentare 3.3V

    ExpressCard

    Sloturile ExpressCard sunt utilizate în prezent (noiembrie 2010) pentru a se conecta:

    • Plăci de stocare SSD
    • Plăci video
    • Controlere 1394/FireWire (iLINK).
    • Stații de andocare
    • Instrumente de masura
    • In memoria
    • Adaptoare pentru carduri de memorie (CF, MS, SD, xD etc.)
    • Șoareci
    • Adaptoare de rețea
    • Porturi paralele
    • Adaptoare PC Card/PCMCIA
    • Extensii PCI
    • Expansiuni PCI Express
    • Telecomandă
    • Controlere SATA
    • Porturi seriale
    • Adaptoare SmartCard
    • tunere TV
    • Controlere USB
    • Adaptoare de rețea Wi-Fi fără fir
    • Adaptoare de internet wireless în bandă largă (3G, CDMA, EVDO, GPRS, UMTS etc.)
    • Plăci de sunet pentru interfețe multimedia acasă și audio profesionale.

    Descrierea protocolului

    A conecta Dispozitive PCI Express folosește o conexiune serială bidirecțională punct la punct numită linie (bandă engleză - bandă, rând); aceasta este în contrast puternic cu PCI, în care toate dispozitivele sunt conectate la o magistrală bidirecțională paralelă comună pe 32 de biți.

    Protocoale concurente

    Pe lângă PCI Express, există o serie de interfețe seriale standardizate de mare viteză, iată doar câteva dintre ele: HyperTransport, InfiniBand, RapidIO și StarFabric. Fiecare interfață are susținătorii săi în rândul companiilor industriale, deoarece au fost deja cheltuite sume semnificative pentru dezvoltarea specificațiilor de protocol și fiecare consorțiu încearcă să sublinieze avantajele interfeței sale specifice față de altele.

    O interfață standardizată de mare viteză, pe de o parte, trebuie să fie flexibilă și extensibilă și, pe de altă parte, trebuie să ofere o latență scăzută și o suprasarcină redusă (adică, ponderea supraîncărcării pachetelor nu ar trebui să fie mare). În esență, diferențele dintre interfețe stau tocmai în compromisul ales de dezvoltatorii unei anumite interfețe între aceste două cerințe conflictuale.

    De exemplu, informațiile suplimentare de rutare a serviciului dintr-un pachet vă permit să organizați rutarea complexă și flexibilă a pachetelor, dar crește suprasarcina de procesare a pachetului și, de asemenea, reduce debitului interfață, software-ul care inițializează și configurează dispozitivele conectate la interfață devine mai complex. Dacă este necesar să se asigure conectarea la cald a dispozitivelor, este necesar un software special care să monitorizeze modificările în topologia rețelei. Exemple de interfețe care găzduiesc acest lucru sunt RapidIO, InfiniBand și StarFabric.

    În același timp, prin scurtarea pachetelor, puteți reduce întârzierea transmisiei datelor, adică cerință importantă la interfața de memorie. Dar dimensiunea mică a pachetelor duce la faptul că proporția câmpurilor de supraîncărcare a pachetelor crește, ceea ce reduce debitul efectiv al interfeței. Un exemplu de acest tip de interfață este HyperTransport.

    Poziția PCI Express se află între abordările descrise, deoarece magistrala PCI Express este proiectată să funcționeze ca o magistrală locală, mai degrabă decât o magistrală de memorie procesor sau o rețea complexă rutabilă. În plus, PCI Express a fost conceput inițial ca o magistrală compatibilă logic cu magistrala PCI, care a introdus și propriile limitări.

    Bună ziua tuturor celor interesați de ce este un slot PCI. Cred că există multe dintre ele, deoarece acest standard este folosit și astăzi, în ciuda lansării analogilor moderni. Dacă computerul dvs. nu mai este tânăr, cel mai probabil aveți de-a face și cu PCI.

    Acest articol vă va ajuta să înțelegeți caracteristicile și diferențele sale față de modificarea „Express”, despre care poate ați auzit, deoarece este acum larg răspândită.

    Introducere în termen

    Abrevierea menționată mai sus reprezintă interconectarea componentelor periferice, ceea ce înseamnă literalmente interconectarea componentelor periferice. Deși această expresie nu reflectă întruchiparea fizică a PCI, a fost aleasă din motive întemeiate.

    După cum înțelegeți, „creierul” unui computer include diverse dispozitive (audio, video, placă de rețea etc.), așa-numitele. componente periferice. Majoritatea se vor conecta la placa de bază.

    Pentru legătura dintre dispozitive și placa de bază se folosesc autostrăzi electronice speciale, cu alte cuvinte, autobuze. Acesta este exact ceea ce este PCI. De fapt, acesta este un slot de expansiune lung situat pe placa de bază în care poate fi introdusă o placă video etc.

    Despre controler

    Există, de asemenea, un astfel de lucru precum controlerul PCI Comunicații simple sau Management Engine Interface, care asigură interacțiunea driverelor de programe instalate pe computer și driverele plăcii de bază. Uneori, după reinstalarea sistemului, un triunghi galben se aprinde lângă acest element în Manager dispozitive.

    În acest caz, ar trebui să descărcați driverele de pe site-ul oficial Intel sau de pe altă resursă de încredere și să le instalați. La urma urmei, această interfață controlează temperatura, rotația răcitoarelor, modurile de repaus etc.

    Poveste

    Grupul de interes special PCI, fondat în 1992 sub conducerea Intel Corporation, este responsabil pentru crearea și sprijinirea interfeței. În același timp, a fost lansată prima sa versiune, lansată special pentru a implementa funcționalitatea procesoarelor Pentium, Pentium Pro și 486.

    În anul următor, a apărut următorul model 2.0, iar după alți 3 ani - 2.1, care a fost la vârf de popularitate. Adevărat, după 2 ani grafica computerizată a atins un nou nivel, iar PCI nu-și mai îndeplini cerințele. Apoi plăcile video au început să fie conectate printr-un conector care era nou la acea vreme.

    Cu toate acestea, interfața pe care o luăm în considerare nu și-a pierdut poziția până în 2005. În acest timp, au apărut multe generații, dar nu cred că vrei să-ți deranjezi capul cu ele. Mai mult, pentru utilizatorul mediu diferențele dintre ele sunt nesemnificative sau de neînțeles.

    Specificații PCI

    Parametrii de bază ai portului pe care ar trebui să îi cunoașteți:

    • Frecvență - 33,33 sau 66,66 megaherți, informațiile sunt trimise sincron;
    • Dimensiunea biților - ca de obicei, 32 sau 64 de biți;
    • Spațiul de adrese al memoriei și al porturilor I/O este același - 4 octeți (32 biți);
    • Un alt spațiu de adrese (configurare) pentru 1 funcție este de 256 de octeți;
    • Viteza maximă a modelului pe 32 de biți și 33 MHz este de 133 megaocteți pe secundă;
    • Tensiune - 3,3 sau 5 Volți;
    • Există o funcție Multiply bus master, adică mai multe controlere de hard disk pot funcționa pe aceeași magistrală simultan.

    Diferență cu PCI-Express

    Aceasta este o modificare modernă a predecesorului său. Se bazează pe modelul software PCI, dar cu performanțe îmbunătățite semnificativ. Majoritatea dispozitivelor sunt produse în prezent cu această interfață.


    Prima diferență dintre ele este că versiunea învechită este paralelă, iar cea nouă este secvențială. Aceasta înseamnă că în al doilea caz există o conexiune bidirecțională, care poate include mai multe linii (de la x1 la x32). Cu cât sunt mai multe, cu atât viteza de lucru este mai mare.

    Oricum ar fi, debitul unui autobuz modern va fi mai mare decât cel al omologul său învechit. Pentru comparație: PCI cu o frecvență de 66 MHz este de 266 MB/s, iar PCI-E a treia generație cu 16 benzi este de 32 GB/s.

    Acum știți elementele de bază despre PCI.

    Vă sfătuiesc să nu vă opriți asupra acestor informații și să obțineți noi cunoștințe din alte articole de pe blogul nostru.

    Unde sunt utilizate țesături neinflamabile www.algo-textile.ru. Accesorii plase de tantari pentru plase de tantari 2-sklad.ru.

    PCI și PCI-X

    magistralele PCI și PCI-X

    Introducere

    Autobuzele PCI și PCI-X sunt principalele magistrale de extindere I/O în calculatoare moderne; pentru conectarea adaptoarelor video acestea sunt completate de un port AGP. Autobuzele de expansiune I/O (Expansion Bus) sunt conectivitate la nivel de sistem: permit adaptoarelor și controlerelor periferice să utilizeze direct resursele sistemului computerului - memorie și spațiu de adrese I/O, întreruperi, acces direct la memorie. Dispozitivele conectate la magistralele de expansiune pot controla ele însele aceste magistrale, obținând acces la alte resurse computerizate. Magistralele de expansiune sunt implementate mecanic ca sloturi (conectori slot) sau conectori pin; Se caracterizează printr-o lungime scurtă a conductoarelor, adică sunt pur locale, ceea ce le permite să atingă viteze mari de funcționare. Este posibil ca aceste magistrale să nu fie transmise la conectori, dar sunt folosite pentru a conecta dispozitive pe plăcile de bază integrate.

    La început, magistrala PCI a fost introdusă ca o extensie (magistrală mezanin) la sistemele cu magistrală ISA. A fost dezvoltat pe baza procesoare Pentium, dar a mers bine și cu procesoarele i486. Mai târziu, PCI a devenit magistrala centrală de ceva timp: a fost conectată la magistrala procesorului printr-un bridge de înaltă performanță (punte „nord”), care făcea parte din chipsetul plăcii de bază. Restul magistralelor de expansiune I/O (ISA/EISA sau MCA), precum și magistrala locală X-BUS asemănătoare ISA și interfața LPC, la care sunt conectate cipurile plăcii de sistem (ROM BIOS, controlere de întrerupere, tastaturi, DMA , porturi COM și LPT, HDD și alte „lucuri mici”), conectate la magistrala PCI prin podul „sud”. În plăcile de bază moderne cu arhitectură „hub”, magistrala PCI a fost mutată la periferie, fără a-și compromite capacitatea canalului de comunicație cu procesorul și memoria, dar și fără a încărca dispozitive pe alte autobuze cu trafic de tranzit.

    Busul PCI este sincron - toate semnalele sunt captate de marginea pozitivă (marginea) semnalului CLK. Frecvența nominală de sincronizare este considerată a fi de 33,3 MHz; dacă este necesar, poate fi redusă. Începând de la versiunea PCI 2.1, este posibilă creșterea frecvenței la 66,6 MHz dacă toate dispozitivele de pe magistrală „sunt de acord”. În PCI-X, frecvența poate ajunge la 133 MHz.

    PCI folosește o magistrală de adrese/date (AD) multiplexată paralelă cu o lățime tipică de 32 de biți. Specificația definește posibilitatea extinderii adâncimii de biți la 64 de biți; PCI-X versiunea 2.0 definește, de asemenea, o opțiune de magistrală pe 16 biți. La o frecvență magistrală de 33 MHz, debitul teoretic ajunge la 132 MB/s pentru o magistrală pe 32 de biți și la 264 MB/s pentru o magistrală pe 64 de biți; la o frecvență de sincronizare de 66 MHz - 264 MB/s, respectiv 528 MB/s. Cu toate acestea, aceste valori de vârf sunt atinse numai în timpul transmiterii pachetelor: din cauza supraîncărcării protocolului, debitul mediu real al magistralei este mai scăzut.

    Caracteristicile comparative ale magistralelor PCI și PCI-X și ale altor magistrale de expansiune ale computerelor compatibile cu PC sunt prezentate în tabel. 1.1. Autobuzul ISA părăsește computerele desktop, dar își păstrează poziția în computerele industriale și încorporate, atât în ​​versiunea tradițională cu slot, cât și în versiunea „sandwich” PC/104. Sloturile PCMCIA cu magistralele PC Card și Card Bus sunt utilizate pe scară largă în computerele notebook. Autobuzul LPC este un mijloc modern, cu costuri reduse, pentru conectarea la placa de bază a dispozitivelor fără consum de resurse.

    Obosi Debit maxim MB/s Canale DMA Maestru de autobuz ACFG Lățimea datelor Dimensiunea adresei Frecvența MHz
    ISA-8 4 3 - - 8 20 8
    ISA-16 8
    7
    +
    -
    16
    24
    8
    LPC 6,7
    7
    +
    -
    8/16/32
    32
    33
    EISA
    33,3 7 +
    +
    32
    32
    8,33
    MCA-16
    16
    -
    +
    +
    16
    24
    10
    MCA-32
    20
    -
    +
    +
    32
    32
    10
    VLB
    132
    -
    (+)
    -
    32/64
    32
    33-50(66)
    PCI
    133-533
    -
    +
    +
    32/64
    32/64
    33/66
    PCI-X
    533-4256
    -
    +
    +
    16/32/64
    32/64
    66-133
    PCI Express
    496-15872
    -
    +
    +
    1/2/4/8/12/16/32
    32/64
    2,5 GHz
    AGP 1x/2x/4x/8x
    266/533/1066/2132
    -
    +
    +
    32
    32/64
    66
    PCMCIA
    10/22
    +
    -
    +
    8/16
    26
    10
    Autobuz de carduri 132 - + + 32 32 33

    ACFG1- Suporta configurarea automata. Pentru ISA, PnP este o adăugare târzie implementată de adaptoare și software.

    Protocolul de semnalizare magistrală PCI și PCI-X

    Schimbul de informații pe magistrala PCI și PCI-X este organizat sub formă de tranzacții - operațiuni de schimb finalizate logic. O tranzacție tipică implică două dispozitive: un inițiator de schimb, cunoscut și ca dispozitiv master, și un dispozitiv țintă, cunoscut și ca slave. Regulile de interacțiune între aceste dispozitive sunt determinate de protocolul magistralei PCI. Dispozitivul poate monitoriza tranzacțiile pe autobuz fără a fi participant (fără a introduce niciun semnal); Termenul Snooping corespunde modului de urmărire. Există un tip special de tranzacție (Special Cycle) - difuzare, în care inițiatorul nu interacționează cu niciunul dintre dispozitive conform protocolului. Fiecare tranzacție execută o comandă, de obicei citind sau scriind date. adresa specificată. O tranzacție începe cu o fază de adresă, în care inițiatorul specifică o comandă și o adresă țintă. Pot urma faze de date, în care un dispozitiv (sursa de date) pune datele pe magistrală și un altul (chiuveta) le citește. Tranzacțiile care au mai multe faze de date sunt numite tranzacții în lot. Există și tranzacții unice (cu o singură fază de date). O tranzacție se poate finaliza fără faze de date dacă dispozitivul țintă (sau inițiatorul) nu este pregătit pentru schimb. ÎN magistrala PCI-X a fost adăugată o fază de atribut, în care Informații suplimentare despre tranzacție.

    Protocolul de semnalizare magistrală PCI și PCI-X

    Compoziția și scopul semnalelor de interfață magistrală sunt prezentate în tabelul de mai jos. Stările tuturor liniilor de semnal sunt percepute de marginea pozitivă CLK, iar aceste momente din descrierea ulterioară sunt înțelese prin cicluri de magistrală (marcate în figuri cu linii punctate verticale). La momente diferite, aceleași linii de semnal sunt controlate de diferite dispozitive de magistrală, iar pentru „transferul de autoritate” corect (fără conflicte) este necesar să existe o perioadă de timp în care niciun dispozitiv nu controlează linia. Pe diagramele temporale, acest eveniment - așa-numita „piruetă” (întoarcerea) - este indicată de o pereche de săgeți semicirculare.

    Masa. Semnale magistrală PCI

    Semnal
    Scop
    ANUNȚ Adresă/Date - adresa multiplexată/bus de date. La începutul tranzacției se transmite adresa, în ciclurile ulterioare - date
    C/B# Command/Byte Enable - comandă/permisiune pentru a accesa octeți. Comanda care determină tipul următorului ciclu de magistrală este specificată printr-un cod pe patru biți în faza adresei
    CADRU#
    Cadru. Introducerea semnalului marchează începutul tranzacției (faza de adresă), eliminarea semnalului indică faptul că ciclul de transfer de date ulterior este ultimul din tranzacție
    DEVSEL#
    Device Select - dispozitivul este selectat (răspunsul centrului de control la tranzacția adresată acestuia)
    IRDY#
    Initiator Ready - pregătirea dispozitivului principal pentru schimbul de date
    TRDY#
    Target Ready - pregătirea centrului de control pentru schimbul de date
    STOP#
    Solicitare de la CPU către master pentru a opri tranzacția curentă
    LACĂT#
    Semnal de blocare a magistralei pentru a asigura funcționarea neîntreruptă. Folosit de un bridge care necesită mai multe tranzacții PCI pentru a finaliza o singură operațiune
    REQ#
    Solicitare - cerere de la dispozitivul master de a sechestra magistrala
    GNT#
    Grant - acordarea controlului autobuzului comandantului
    PAR
    Paritate - bit de paritate comun pentru liniile AD și C/BE#
    PERR#
    Eroare de paritate — semnal de eroare de paritate (pentru toate ciclurile, cu excepția celor speciale). Generat de orice dispozitiv care detectează o eroare
    PME#
    Power Management Event - un semnal despre evenimente care provoacă o schimbare a modului de consum (un semnal suplimentar introdus în PCI 2.2)
    CLKRUN#
    Ceasul rulează—autobuzul funcționează la frecvența nominală a ceasului. Eliminarea semnalului înseamnă încetinirea sau oprirea sincronizării pentru a reduce consumul (pentru aplicațiile mobile)
    PRSN #
    Prezent - indicatori de prezență pe bord care codifică cererea de consum de energie. Pe placa de expansiune, una sau două linii LED sunt conectate la magistrala GND, care este detectată de placa de bază
    RST#
    Resetare - resetați toate registrele la starea lor inițială (faceți clic pe butonul „Resetare”.
    și la repornire)
    IDSEL
    Initialization Device Select - selectarea dispozitivului în ciclurile de citire și scriere de configurare; La aceste cicluri răspunde un dispozitiv care detectează un nivel ridicat de semnal pe această linie
    SERR#
    Eroare de sistem - eroare de sistem. O eroare de adresă sau de paritate a datelor într-un cadru special sau altă eroare catastrofală detectată de dispozitiv. Activat de orice dispozitiv PCI și apelează NMI
    REQ64#
    Solicitare 64 de biți - cerere pentru un schimb pe 64 de biți. Semnalul este introdus de inițiatorul pe 64 de biți; coincide în timp cu semnalul FRAME#. În timpul finalizării resetarii (semnal RST#) semnalează dispozitivului pe 64 de biți că acesta este conectat la magistrala pe 64 de biți. Dacă un dispozitiv pe 64 de biți nu detectează acest semnal, trebuie să se reconfigureze la modul pe 32 de biți prin dezactivarea circuite tampon octeți înalți
    ACK64#
    Confirmarea schimbului pe 64 de biți. Semnalul este introdus de procesorul pe 64 de biți, care și-a recunoscut adresa, simultan cu DEVSEL#. Eșecul de a furniza această confirmare va forța inițiatorul să efectueze schimbul la 32 de biți
    INTA#, INTB#, INTC#, INTD#
    Întreruperea A, B, C, D - linii de cerere de întrerupere, sensibilitate la nivel, nivel activ - scăzut, care permite separarea (partajarea) liniilor
    CLK
    Ceas — frecvența ceasului magistralei. Ar trebui să fie în intervalul 20-33 MHz, începând cu PCI 2.1 poate fi de până la 66 MHz, în PCI-X până la 100 și 133 MHz
    M66EN
    Activare 66MHz - rezoluție frecvență de ceas de până la 66 MHz (pe carduri 33 MHz este împământat, la 66 MHz este gratuit)
    PCIXCAP (38B)

    Capacitățile PCI-X: activate Carduri PCI- împământat, pe PCI-X133 conectat la masă printr-un condensator de 0,01 µF, pe PCI-X66 - printr-un circuit RC paralel de 10 kOhm, 0,01 µF.

    SDONE
    Snoop Done - semnalează că ciclul de snoop este încheiat pentru tranzacția curentă. Un nivel scăzut indică faptul că ciclul de monitorizare a coerenței memoriei și cache este incomplet. Semnal opțional, utilizat numai de dispozitivele autobuz cu memorie cache. Depreciat de la PCI 2.2
    SBO#
    Snoop Backoff - accesul curent la memoria unui abonat de autobuz se termină într-o linie de cache modificată. Un semnal opțional, utilizat numai de abonații de magistrală cu memorie cache în timpul algoritmului de scriere inversă. Depreciat de la PCI 2.2
    SMBCLK
    SMBus Clock - semnal de ceas al magistralei SMBus (interfață I2C). Introdus de la PCI 2.3
    SMBDAT
    Date SMBus - date seriale ale magistralei SMBus (interfață I2C). Introdus de la PCI 2.3
    TCK
    Test Clock - Sincronizarea interfeței de testare JTAG
    TDI
    Intrare date de testare - date de intrare a interfeței de testare JTAG
    TDO
    Test Data Output - Date de ieșire a interfeței de testare JTAG
    TMS
    Test Selectare mod— selectarea modului pentru interfața de testare JTAG
    TRST
    Test Logic Reset - resetează logica testului

    În orice moment, magistrala poate fi controlată doar de un singur dispozitiv principal, care a primit dreptul de a face acest lucru de la arbitru. Fiecare dispozitiv principal are o pereche de semnale - REQ# pentru a solicita controlul magistralei și GNT# pentru a confirma că a fost acordat controlul magistralei. Dispozitivul poate începe o tranzacție (setează semnalul FRAME#) numai atunci când primește un semnal activ GNT# și așteaptă până când nu există nicio activitate de magistrală. Rețineți că în timp ce așteaptă odihna, arbitrul se poate „răzgândi” și poate da controlul autobuzului unui alt dispozitiv cu o prioritate mai mare. Eliminarea semnalului GNT# împiedică dispozitivul să înceapă următoarea tranzacție și, în anumite condiții (vezi mai jos), îl poate forța să încheie tranzacția curentă. Arbitrajul cererilor de utilizare a autobuzului este gestionat de un nod special - un arbitru, care face parte din podul care leagă acest autobuz de centru. Schema de prioritate (fixă, round-robin, combinată) este determinată de programarea arbitrului.

    Liniile AD multiplexate comune sunt utilizate pentru adresă și date. Patru linii C/BE multiplexate oferă codificarea instrucțiunilor în faza de adrese și rezoluția octetilor în faza de date. În tranzacțiile de scriere, liniile C/BE permit utilizarea octeților de date concomitent cu prezența lor pe magistrala AD; în tranzacțiile de citire, aceste semnale se referă la octeții următoarei faze de date. În faza de adresă (începerea tranzacției), masterul activează semnalul FRAME#, transmite adresa țintă pe magistrala AD și transmite informații despre tipul tranzacției (comandă) pe liniile C/BE#. Dispozitivul țintă adresat răspunde cu un semnal DEVSEL#. Dispozitivul master indică disponibilitatea de a face schimb de date cu semnalul IRDY#; această disponibilitate poate fi setată înainte de a primi DEVSEL#. Când dispozitivul țintă este gata să facă schimb de date, va seta semnalul TRDY#. Datele sunt transmise pe magistrala AD numai atunci când semnalele IRDY# și TRDY# sunt prezente simultan. Folosind aceste semnale, dispozitivele master și țintă își coordonează vitezele introducând stări de așteptare. Figura de mai jos prezintă o diagramă de timp a unui schimb în care atât dispozitivele master, cât și cele țintă intră în ceasuri de așteptare. Dacă amândoi au introdus semnale gata la sfârșitul fazei de adresă și nu le-au îndepărtat până la sfârșitul schimbului, atunci 32 de biți de date ar fi transmise în fiecare ciclu de ceas după faza de adresă, ceea ce ar oferi performanță maximă de schimb. În tranzacțiile de citire, după faza de adresă, este necesar un ceas suplimentar pentru piruetă, timp în care inițiatorul nu mai controlează linia AD; Dispozitivul țintă va putea prelua controlul asupra magistralei AD doar în următorul ciclu de ceas. Într-o tranzacție de scriere, pirueta nu este necesară deoarece inițiatorul transmite datele.

    Pe magistrala PCI, toate tranzacțiile sunt tratate ca rafale: fiecare tranzacție începe cu o fază de adresă, care poate fi urmată de una sau mai multe faze de date. Numărul de faze de date din pachet nu este indicat în mod explicit, dar în ciclul de ceas al ultimei faze de date, dispozitivul master, când este introdus semnalul IRDY#, elimină semnalul FRAME#. În tranzacțiile individuale, semnalul FRAME# este activ doar pentru un ciclu de ceas. Dacă dispozitivul nu acceptă tranzacții în lot în modul slave, atunci trebuie să solicite ca tranzacția în lot să fie terminată în timpul primei faze de date (prin afirmarea semnalului STOP# în același timp cu TRDY#). Ca răspuns la aceasta, comandantul va finaliza tranzacția dată și va continua să schimbe tranzacția ulterioară cu următoarea valoare a adresei. După faza finală de date, dispozitivul master elimină semnalul IRDY#, iar magistrala intră în starea inactiv (Idle) - ambele semnale: FRAME# și IRDY# sunt în stare pasivă.

    Inițiatorul poate începe următoarea tranzacție fără o perioadă de odihnă setând FRAME# simultan cu eliminarea IRDY#. Astfel de tranzacții adiacente rapide (Fast Back-to-Back) pot fi adresate fie către unul, fie către diferite dispozitive țintă. Primul tip de tranzacții contigue rapide este acceptat de toate dispozitivele PCI care acționează ca dispozitiv țintă. Suportul pentru al doilea tip de tranzacții contigue (un astfel de suport este opțional) este indicat de bitul 7 al registrului de stare. Inițiatorul are voie (dacă știe cum) să folosească tranzacții rapide adiacente cu diverse dispozitive(activat de bitul 9 al registrului de comenzi) numai dacă toți agenții de magistrală permit acces rapid. La schimbul de date în modul PCI-X, tranzacțiile rapide contigue nu sunt permise.

    Protocolul de magistrală asigură fiabilitatea schimbului - dispozitivul principal primește întotdeauna informații despre procesarea tranzacției de către dispozitivul țintă. Un mijloc de creștere a fiabilității schimbului este utilizarea controlului parității: liniile AD și C/BE# atât în ​​faza de adrese, cât și în faza de date sunt protejate de bitul de paritate PAR (numărul de biți setați ai acestor linii, inclusiv PAR, trebuie să fie egal). Valoarea PAR reală apare pe magistrală cu o întârziere de un ciclu de ceas în raport cu liniile AD și C/BE#. Când este detectată o eroare, dispozitivul generează un semnal PERR# (deplasat cu un ceas după ce pe magistrală apare un bit de paritate valid). Atunci când se calculează paritatea în timpul transmiterii datelor, toți octeții sunt luați în considerare, inclusiv octeții invalidi (marcați printr-un semnal C/BEx# ridicat). Starea biților, chiar și în octeți de date invalidi, trebuie să rămână stabilă în timpul fazei de date.

    Fiecare tranzacție de pe magistrală trebuie să fie finalizată așa cum a fost planificat sau anulată, iar magistrala trebuie să intre în stare de repaus (semnalele FRAME# și IRDY# sunt pasive). Finalizarea tranzacției este fie inițiată de dispozitivul principal, fie de către dispozitivul țintă.

    Comandantul poate finaliza tranzacția în unul dintre următoarele moduri:

    • finalizare - terminare normală la finalul schimbului de date;
    • time-out — finalizare cu timeout. Apare atunci când controlul magistralei master este eliminat în timpul unei tranzacții (prin eliminarea semnalului GNT#) și temporizatorul de latență expiră. Acest lucru se poate întâmpla dacă dispozitivul țintă adresat este neașteptat de lent sau tranzacția este programată să fie prea lungă. Tranzacții scurte(cu una sau două faze de date) chiar dacă semnalul GNT# este eliminat și cronometrul este declanșat, acestea se completează normal;
    • master-Abort - Anulează o tranzacție atunci când dispozitivul master nu primește un răspuns de la dispozitivul țintă (semnal DEVSEL#) într-un timp specificat.

    Tranzacția poate fi încheiată la inițiativa dispozitivului țintă; Pentru a face acest lucru, poate introduce un semnal STOP#. Există trei tipuri de terminare a tranzacției posibile:

    • reîncercare - repetare, introducerea semnalului STOP# cu semnal pasiv TRDY# înainte de prima fază de date. Această situație apare atunci când dispozitivul țintă, din cauza ocupării interne, nu are timp să producă primele date la timp (16 cicluri de ceas). O întrerupere a reîncercării este o indicație către master de a reporni aceeași tranzacție;
    • deconectare - deconectare, introducerea semnalului STOP# în timpul sau după prima fază de date. Dacă semnalul STOP# este introdus în timp ce semnalul TRDY# al următoarei faze de date este activ, atunci aceste date sunt transmise și tranzacția este finalizată. Dacă semnalul STOP# este setat când semnalul TRDY# este pasiv, atunci tranzacția este finalizată fără transmiterea datelor din faza următoare. Deconectarea are loc atunci când dispozitivul țintă nu poate emite sau primi următoarea porțiune de pachete de date în timp util. Deconectarea este o indicație către master de a reporni această tranzacție, dar cu o adresă de început modificată;
    • target-abort — eșec, introducerea semnalului STOP# concomitent cu eliminarea semnalului DEVSEL# (în cazurile anterioare, când a apărut semnalul STOP#, semnalul DEVSEL# era activ). După aceasta, datele nu mai sunt transmise. Un refuz apare atunci când dispozitivul țintă detectează o eroare fatală sau alte condiții în care nu va mai putea deservi cererea dată (inclusiv o comandă neacceptată).

    Utilizarea celor trei tipuri de terminare a tranzacțiilor nu este necesară pentru toate țintele, dar orice dispozitiv principal ar trebui să fie pregătit să încheie tranzacțiile din oricare dintre aceste motive.

    Tipul de terminare a reîncercării este utilizat pentru a organiza tranzacțiile întârziate. Tranzacțiile amânate sunt utilizate numai de dispozitivele țintă lente și de punți PCI atunci când traduc tranzacțiile pe o altă magistrală. Prin anularea (pentru inițiator) a unei tranzacții cu o condiție de reîncercare, dispozitivul țintă execută în interior tranzacția. Când inițiatorul repetă această tranzacție (emite aceeași comandă cu aceeași adresă și același set de semnale C/BE# în faza de date), dispozitivul țintă (sau puntea) va avea deja rezultatul gata (citește datele sau scrierea progresului). status) că se va întoarce rapid la inițiator. Rezultatul unei tranzacții în așteptare efectuată de un anumit dispozitiv trebuie să fie stocat de dispozitiv sau de punte până când rezultatele sunt solicitate de către inițiator. Cu toate acestea, el poate „uita” să repete tranzacția (din cauza unor situații anormale). Pentru a evita depășirea tamponului de stocare a rezultatelor, dispozitivul trebuie să renunțe la aceste rezultate. Eliminarea poate fi efectuată fără efecte secundare dacă tranzacția a fost amânată în memorie care permite preluarea prealabilă (cu atributul preîncărcabil, vezi mai jos). În general, alte tipuri de tranzacții nu pot fi înlăturate cu impunitate (integritatea datelor poate fi încălcată); pentru acestea, eliminarea este permisă numai după așteptarea fără succes a unei repetări pentru 215 cicluri de magistrală (când este declanșat temporizatorul de eliminare). Dispozitivul poate raporta această excepție driverului său (sau întregului sistem).

    Inițiatorul unei tranzacții poate solicita utilizarea exclusivă a magistralei PCI pe durata unei operațiuni de schimb care necesită mai multe tranzacții cu magistrala. Deci, de exemplu, dacă CPU execută o instrucțiune de modificare a datelor într-o celulă de memorie aparținând unui dispozitiv PCI, trebuie să citească datele de pe dispozitiv, să le modifice în ALU și să returneze rezultatul dispozitivului. Pentru a împiedica tranzacțiile de la alți inițiatori să interfereze cu această operațiune (care poate duce la încălcări ale integrității datelor), puntea principală o efectuează ca o operație blocată - semnalul magistralei LOCK# este furnizat pe toată durata operațiunii. Acest semnal nu este utilizat (sau produs) în niciun fel de dispozitivele PCI convenționale (nu punți); este folosit doar de punți pentru a controla arbitrajul.

    Întreruperi hardware în computerele compatibile cu PC

    Dispozitivele PCI au capacitatea de a semnala evenimente asincrone folosind întreruperi. Există patru tipuri de semnalizare de întrerupere disponibile pe magistrala PCI:

    • semnalizare tradițională prin cablu prin linii INTx;
    • semnalizare prin cablu a evenimentelor de management energetic prin linia PME#;
    • semnalizare folosind mesaje - MSI;
    • semnalând o eroare fatală pe linia SERR#.

    Acest capitol acoperă fiecare dintre aceste tipuri de semnalizare, precum și imaginea de ansamblu a suportului de întrerupere hardware în computerele compatibile cu PC.

    Întreruperi hardware în computerele compatibile cu PC

    Întreruperile hardware oferă un răspuns procesor la evenimentele care apar asincron în raport cu codul programului care se execută. Amintiți-vă că întreruperile hardware sunt împărțite în mascate și nemascabile. Procesorul x86, la un semnal de întrerupere, suspendă execuția fluxului curent de instrucțiuni, salvând starea (steaguri și adresa de retur) pe stivă și execută procedura de gestionare a întreruperilor. O procedură de procesare specifică este selectată din tabelul de întreruperi de către vectorul de întrerupere - numărul de un octet al elementului din acest tabel. Vectorul de întrerupere este adus la procesor în diferite moduri: pentru întreruperile nemascabile este fix, pentru întreruperile mascabile este raportat de un controler special de întreruperi. Pe lângă întreruperile hardware, procesoarele x86 au și întreruperi interne - excepții asociate cu cazuri speciale de execuție a instrucțiunilor și întreruperi software. Pentru excepții, vectorul este determinat de condiția specială în sine, iar Intel își rezervă primii 32 de vectori (0-31 sau 00-1Fh) pentru excepții. În întreruperile software, numărul vectorului este conținut în instrucțiunea în sine (întreruperile software sunt doar o modalitate specifică de a apela proceduri după număr, cu un registru de tip flag stocat mai întâi pe stivă). Toate aceste întreruperi folosesc același set de 256 de vectori posibili. Din punct de vedere istoric, vectorii utilizați pentru întreruperile hardware se suprapun cu vectorii de excepție și vectorii pentru întreruperile software utilizați pentru apelurile de serviciu BIOS și DOS. Astfel, pentru un număr de numere vectoriale, procedura la care face referire tabelul de întreruperi trebuie să conțină la început cod de program care să determine din ce motiv a fost numită: din cauza unei excepții, a unei întreruperi hardware, sau pentru a apela unele serviciul de sistem. Astfel, procedura care asigură efectiv răspunsul procesorului la același eveniment asincron va fi apelată numai după o serie de acțiuni de identificare a sursei de întrerupere. De asemenea, remarcăm aici că același vector de întrerupere poate fi utilizat de mai multe dispozitive periferice - aceasta este așa-numita utilizare partajată a întreruperilor, care este discutată în detaliu mai jos.

    Apelarea rutinei serviciului de întrerupere în modurile reale și protejate ale procesorului este semnificativ diferită:

    • V modul real Tabelul de întreruperi conține indicatori de distanță de 4 octeți (segment și offset) către procedurile corespunzătoare care sunt apelate de apelul departe (Apel departe cu steaguri pre-stocate). Dimensiunea (256 × 4 octeți) și poziția tabelului (începând cu adresa 0) sunt fixe;
    • În modul protejat (și în cazul său particular, modul V86), tabelul conține descriptori de întrerupere de 8 octeți, care pot fi Porți de întrerupere, Porți de capcană sau Porți de sarcini. Dimensiunea tabelului poate fi redusă (maximum - 256 × 8 octeți), poziția tabelului se poate modifica (determinată de conținutul registrului IDT al procesorului). Codul de gestionare a întreruperii trebuie să fie cel puțin la fel de privilegiat ca și codul sarcinii întrerupte (în caz contrar, va fi declanșată o excepție de securitate). Din acest motiv, gestionatorii de întreruperi trebuie să ruleze la nivelul nucleului sistemului de operare (la nivel de privilegii zero). Schimbarea nivelului de privilegii la apelarea unui handler are ca rezultat timpul suplimentar petrecut pentru redefinirea stivei. Întreruperile care provoacă schimbarea sarcinilor (prin Task Gate) petrec mult timp comutării contextului - descărcarea registrelor procesorului în segmentul de stare al sarcinii vechi și încărcarea acestora din segmentul de stare al celei noi.

    Numerele vectoriale utilizate pentru întreruperile hardware în sistemele de operare în modul protejat sunt diferite de cele utilizate în sistemele de operare în modul real pentru a se asigura că nu intră în conflict cu vectorii utilizați pentru excepțiile procesorului.

    Procesorul răspunde întotdeauna la o întrerupere nemascabilă (NMI) (dacă întreținerea NMI-ului anterior este finalizată); Această întrerupere corespunde vectorului fix 2. Întreruperile nemascabile din PC-uri sunt folosite pentru a semnala erori hardware fatale. Semnalul către linia NMI vine de la circuitele de control al memoriei (paritate sau ECC), de la liniile de control al magistralei ISA (IOCHK) și magistrala PCI (SERR#). Semnalul NMI este blocat înainte de a intra în procesor prin setarea bitului 7 al portului 070h la 1, sursele individuale sunt activate și identificate de biții portului 061h:

    • bit 2 R/W - ERP - permisiunea de a controla RAM și semnalul SERR# al magistralei PCI;
    • bit 3 R/W - EIC - rezoluție control magistrală ISA;
    • bit 6 R - IOCHK - eroare de control pe magistrala ISA (semnal IOCHK#);
    • bit 7 R - PCK - eroare de paritate RAM sau semnal SERR# pe magistrala PCI.

    Răspunsul procesorului la întreruperile mascate poate fi întârziat prin resetarea indicatorului IF intern (instrucțiunea CLI dezactivează întreruperile, instrucțiunea STI le activează). Întreruperile mascate sunt folosite pentru a semnala evenimente în dispozitive. Când are loc un eveniment care necesită un răspuns, adaptorul dispozitivului (controlerul) generează o solicitare de întrerupere, care este trimisă la intrarea controlerului de întrerupere. Sarcina controlorului de întrerupere este să aducă cererea de întrerupere către procesor și să comunice vectorul prin care este selectată procedura de gestionare a întreruperilor software.

    Rutina de întrerupere a dispozitivului trebuie să efectueze acțiuni pentru deservirea dispozitivului, inclusiv resetarea solicitării acestuia pentru a-i permite să răspundă evenimentele viitoare, și trimite comenzi de finalizare către controlerul de întrerupere. La apelarea rutinei de procesare, procesorul stochează automat valoarea tuturor steagurilor de pe stivă și resetează marcajul IF, care dezactivează întreruperile mascate. La întoarcerea din această procedură (folosind instrucțiunea IRET), procesorul restabilește steagurile salvate, inclusiv setul (înainte de întrerupere) IF, care activează din nou întreruperi. Dacă, în timpul funcționării manipulatorului de întreruperi, este necesară o reacție la alte întreruperi (prioritate mai mare), atunci instrucțiunea STI trebuie să fie prezentă în handler. Acest lucru este valabil mai ales pentru manipulatorii lungi; aici instrucțiunea STI trebuie introdusă cât mai devreme posibil, imediat după secțiunea critică (neîntreruptibilă). Controlerul de întrerupere va deservi întreruperile ulterioare de același nivel de prioritate sau mai mic numai după primirea comenzii EOI (End Of Interrupt).

    Calculatoarele IBM compatibile cu PC utilizează două tipuri principale de controlere de întrerupere:

    • PIC (Peripheral Interrupt Controller) este un controler periferic de întrerupere, software compatibil cu controlerul „istoric” 8259A, utilizat în primele modele de PC IBM. De pe vremea IBM PC/AT, a fost folosită o pereche de PIC-uri în cascadă, care permite deservirea a până la 15 linii de solicitare de întrerupere;
    • APIC (Advanced Peripheral Interrupt Controller) este un controler periferic avansat de întrerupere introdus pentru a suporta sisteme multiprocesor în calculatoare bazate pe procesoare din 4-5 generații (486 și Pentium) și este folosit și astăzi pentru modelele de procesoare ulterioare. Pe lângă suportul pentru configurațiile multiprocesor, APIC modern vă permite să creșteți numărul de linii de întrerupere disponibile și să gestionați cererile de întrerupere de la dispozitivele PCI trimise prin motorul de mesaje (MSI). Un computer echipat cu un controler APIC trebuie să poată funcționa într-un mod compatibil cu o pereche PIC standard. Acest mod este activat printr-o resetare hardware (și pornire), care vă permite să utilizați aplicații vechi OS și MS DOS care nu cunosc APIC și multiprocesare.

    Schema tradițională de generare a cererilor de întrerupere folosind o pereche de PIC-uri este prezentată în figura de mai jos.

    Intrările controlerului de întrerupere primesc solicitări de la dispozitivele de sistem (tastatură, temporizator de sistem, temporizator CMOS, coprocesor), controlere periferice de pe placa de bază și plăci de expansiune. În mod tradițional, toate liniile de solicitare care nu sunt ocupate de dispozitivele listate sunt prezente pe toate sloturile de magistrală ISA/EISA. Aceste linii sunt desemnate IRQx și au un scop comun (vezi tabelul de mai jos). Unele dintre aceste linii sunt alocate magistralei PCI. Tabelul arată, de asemenea, prioritățile de întrerupere - cererile sunt aranjate în ordine descrescătoare. Numărul de vectori corespunzători liniilor de solicitare a controlerului, sistemul de prioritate și alți parametri sunt setate programatic atunci când controlerele sunt inițializate. Aceste setări de bază rămân tradiționale pentru compatibilitatea software-ului, dar diferă între sistemele de operare în mod real și în modul protejat. De exemplu, în sistemul de operare Windows vectorii de bază pentru controlerele master și slave sunt 50h și, respectiv, 58h.

    Nume (numărul 1) Vectorul 2 Vectorul 3 Controler/mască Descriere
    NMI 02h


    IRQ0 08h 50h
    #1/1h
    Control canal, paritate memorie (în XT - coprocesor)
    IRQ1 09h 51h
    #1/2h
    Tastatură
    IRQ2 0Ah 52h
    #1/4h
    XT - rezervă, AT - indisponibil (cascada IRQ8-IRQ15 este conectată)
    IRQ8 70h
    58h
    #2/1h
    CMOS RTC - Ceas în timp real
    IRQ9 71h
    59h
    #2/2h
    rezervă
    IRQ10 72h
    5Ah
    #2/4h
    rezervă
    IRQ11 73h
    5Bh
    #2/8h
    rezervă
    IRQ12 74h
    5Ch
    #2/10h
    PS/2-Mouse (rezervă)
    IRQ13 75h
    5Dh
    #2/20h
    Coprocesor matematic
    IRQ14 76h
    5Eh
    #2/40h
    HDC - controler HDD
    IRQ15 77h
    5Fh
    #2/80h
    rezervă
    IRQ3 0Bh
    52h
    #1/4h
    COM2, COM4
    IRQ4 0Ch
    53h
    #1/10h
    COM1, COM3
    IRQ5I 0Dh
    54h
    #1/20h
    XT - HDC, AT - LPT2, sunet (rezervă)
    IRQ6 0Eh
    55h
    #1/40h
    FDC - controler de antrenare cu plutitor
    IRQ7 0Fh
    56h
    #1/80h
    LPT1 - imprimanta

    *1 Cererile de întrerupere 0, 1, 8 și 13 nu sunt transmise magistralelor de expansiune.
    *2 Numerele vectoriale sunt indicate atunci când funcționează în modul procesor real.
    *3 Numerele vectoriale sunt indicate atunci când lucrați în sistemul de operare Windows.

    Fiecărui dispozitiv care necesită întreruperi pentru a-și susține funcționarea trebuie să i se aloce propriul număr de întrerupere. Atribuirea numărului de întreruperi se face din două părți: în primul rând, adaptorul care necesită întreruperi trebuie configurat pentru a utiliza o linie de magistrală specifică (fie prin jumperi, fie prin software). În al doilea rând, software-ul care acceptă adaptorul trebuie să fie informat cu privire la numărul vectorului utilizat. Sistemul PnP pentru magistralele ISA și PCI poate participa la procesul de atribuire a întreruperilor; parametri speciali CMOS Setup sunt utilizați pentru a distribui liniile de solicitare între magistrale. Sistemele de operare moderne au capacitatea de a modifica alocarea cererilor privind alocarea efectuate prin CMOS Setup.

    După ce sistemul de întrerupere este configurat (controlerul de întrerupere este inițializat, liniile de solicitare sunt alocate dispozitivelor și indicatorii către procedurile de procesare sunt setate), întreruperile hardware mascate sunt procesate după cum urmează:

    • la un eveniment de întrerupere, dispozitivul excită linia de cerere de întrerupere alocată acestuia;
    • controlerul primește semnale de solicitare de la sursele de întrerupere (semnale IRQx) și, dacă există o solicitare nemascata, trimite un semnal general de cerere de întrerupere (semnal INTR) către procesorul x86;
    • procesorul, răspunzând la o solicitare (când sunt activate întreruperi cu indicatorul IF), stochează conținutul registrului de flag și adresa de retur pe stivă, după care generează un ciclu de magistrală INTA (Interrupt Acknowledge), care este livrat către controlerul de întrerupere;
    • în momentul recepționării semnalului INTA, controlerul de întrerupere înregistrează starea intrărilor sale de solicitare - în acest moment starea acestora s-ar fi putut schimba: ar putea apărea noi solicitări sau ar putea dispărea o solicitare de la un dispozitiv „nerăbdător”. Controlerul analizează cererile primite în conformitate cu schema de prioritate programată și trimite procesorului un vector de întrerupere care corespunde cererii demascate cu cea mai mare prioritate prezentă la intrarea controlerului în momentul emiterii comenzii magistralei INTA. Totodată, controlorul efectuează și unele acțiuni în conformitate cu politica de prioritate stabilită, ținând cont de ce vector a fost trimis (care dintre solicitări a mers în service);
    • După ce a primit un vector de întrerupere, procesorul apelează procedura corespunzătoare de gestionare a întreruperilor folosind numărul său. Dacă un anumit vector de întrerupere este folosit nu numai pentru întreruperi hardware, ci și pentru excepții și/sau întreruperi software, atunci rutina trebuie să determine mai întâi care dintre aceste tipuri este evenimentul. Pentru a face acest lucru, procedura poate contacta controlorul PIC (citește registrul ISR) și poate analiza starea registrelor procesorului. Pasii urmatori luat în considerare pentru cazul în care este detectată o întrerupere hardware;
    • Procedura de gestionare a întreruperii trebuie să identifice sursa întreruperii - să determine dispozitivul care a provocat-o. În cazul utilizării partajate a unui anumit număr de solicitare (și, prin urmare, vector) de către mai multe dispozitive, sursa de întrerupere poate fi identificată doar prin acces secvențial la registrele fiecăruia dintre aceste dispozitive. În acest caz, ar trebui să se țină cont de posibilitatea de a primi solicitări de la mai multe dispozitive simultan sau în timpul procesării unei întreruperi de la unul dintre ele;
    • procedura trebuie să deservească dispozitivul sursă de întrerupere - să efectueze acțiuni „utile” legate de evenimentul semnalat de dispozitiv. Acest serviciu ar trebui să se asigure, de asemenea, că semnalul de solicitare de întrerupere de la acest dispozitiv este eliminat. În cazul întreruperilor partajate, pot exista mai multe surse, iar toate necesită întreținere;
    • dacă procesarea întreruperii durează o perioadă semnificativă de timp, timp în care sistemul trebuie să răspundă la solicitări cu prioritate mai mare, atunci după secțiunea critică, o instrucțiune STI este inclusă în handler, care setează indicatorul de activare a întreruperii (IF) în procesor. . Din acest moment, sunt posibile întreruperi imbricate, întrerupând munca unui handler dat printr-o altă procedură, cu prioritate mai mare;
    • Procedura de gestionare a întreruperilor trebuie să trimită controlorului o comandă de finalizare a procesării întreruperii EOI (End Of Interrupt), prin care controlerul va permite recepția ulterioară a unui semnal de la intrarea deservită și de la cele cu prioritate mai mică. Acest lucru trebuie făcut după eliminarea semnalului de întrerupere de la dispozitivele deservite, altfel controlerul va trimite o a doua cerere după EOI. Un handler de întrerupere pentru care a venit o cerere de la un controler slave trebuie să trimită un EOI atât controlerului slave, cât și controlerului principal. Secțiunea handlerului începând de la emiterea instrucțiunii EOI până la terminare (instrucțiunea IRET) trebuie să fie neîntreruptibilă, adică este secțiunea critică. Dacă handlerul a permis întreruperi imbricate, atunci trebuie să fie prezentă o instrucțiune CLI care dezactivează întreruperile înainte de a lansa comanda EOI;
    • procesarea întreruperii este finalizată cu instrucțiunea IRET, prin care procesorul revine la executarea fluxului întrerupt de instrucțiuni, după ce a preluat în prealabil conținutul registrului de steaguri din stivă. În acest caz, întreruperile hardware vor fi activate din nou.

    Această secvență este descrisă în relație cu un controler de întrerupere obișnuit (PIC), sistemele cu APIC schimbă modul în care vectorul de întrerupere este livrat de la controler la procesor, iar întreruperile MSI schimbă modul în care semnalul este livrat de la dispozitiv la controlerul APIC. . Aceste nuanțe sunt descrise în secțiunile ulterioare.

    Informații generale

    Podurile PCI (PCI Bridge) sunt hardware special pentru conectarea magistralelor PCI (și PCI-X) între ele și la alte magistrale. Host Bridge este folosit pentru a conecta PCI la centrul computerului (memoria de sistem și procesorul). „Datoria onorabilă” a podului principal este de a genera apeluri către spațiul de configurare sub controlul procesorului central, ceea ce permite gazdei (procesorului central) să configureze întregul subsistem magistrală PCI. Sistemul poate avea mai multe punți principale, ceea ce permite o comunicare de înaltă performanță cu centrul Mai mult dispozitive (numărul de dispozitive pe o magistrală este limitat). Dintre aceste autobuze, unul este desemnat condiționat drept principal (autobuzul 0).

    Punțile de egalitate PCI (PeertoPeer Bridge) sunt folosite pentru a conecta magistrale PCI suplimentare. Aceste punți introduc întotdeauna o suprasarcină suplimentară pentru transferul de date, astfel încât performanța efectivă a comunicațiilor dispozitiv-la-hub scade cu fiecare punte care iese în cale.

    Pentru conectarea magistralelor PCMCIA, CardBus, MCA, ISA/EISA, X-Bus și LPC, se folosesc punți speciale, care sunt incluse în chipseturile plăcii de bază sau sunt dispozitive PCI (cipuri) separate. Aceste punți convertesc interfețele magistralelor pe care le conectează, sincronizează și tamponează schimburile de date.

    Fiecare punte este programabilă - i se oferă intervalele de adrese din memorie și spațiile I/O alocate dispozitivelor de pe magistralele sale. Dacă adresa CPU a tranzacției curente de pe o magistrală (partea) a podului se referă la magistrala de pe partea opusă, puntea traduce tranzacția în magistrala corespunzătoare și asigură negocierea protocolului de magistrală. Astfel, o colecție de punți PCI realizează rutarea cererilor de-a lungul magistralelor asociate. Dacă sistemul are mai multe punți principale, atunci rutarea end-to-end între dispozitive de pe diferite magistrale ar putea să nu fie posibilă: punțile principale pot fi conectate între ele numai prin căile principale ale controlerului de memorie. Sprijinirea traducerii tuturor tipurilor de tranzacții PCI prin punțile principale în acest caz se dovedește a fi prea complexă și, prin urmare, nu este strict impusă de specificația PCI. Astfel, toate dispozitivele active de pe toate magistralele PCI pot accesa memoria sistemului, dar posibilitatea de comunicare peer-to-peer poate depinde dacă aceste dispozitive aparțin uneia sau altei magistrale PCI.

    Utilizarea punților PCI oferă oportunități precum:

    • creșterea numărului posibil de dispozitive conectate, depășirea limitărilor specificațiilor electrice ale magistralei;
    • împărțirea dispozitivelor PCI în segmente - magistrale PCI - cu diferite caracteristici de adâncime de biți (32/64 biți), frecvență de ceas (33/66/100/133 MHz), protocol (PCI, PC-X Mode 1, PCI-X Mode) 2, PCI Express). Pe fiecare autobuz, toți abonații sunt egali cu cel mai slab participant; aranjarea corectă a dispozitivelor pe autobuze vă permite să utilizați capacitățile dispozitivelor și ale plăcii de bază cu eficiență maximă;
    • organizarea segmentelor cu conectare/deconectare „la cald” a dispozitivelor;
    • organizarea executării simultane paralele a tranzacţiilor de la iniţiatori aflaţi pe diferite autobuze.

    Fiecare punte PCI conectează doar două magistrale: magistrala primară, situată mai aproape de vârful ierarhiei, cu magistrala secundară; Interfețele punte prin care este conectat la aceste magistrale se numesc primar și, respectiv, secundar. Este permisă doar o configurație pur arborescentă, adică două autobuze sunt conectate între ele printr-un singur pod și nu există „bucle” de poduri. Autobuzele conectate la interfața secundară a unui pod dat prin alte poduri se numesc autobuze subordonate. Punțile PCI formează o ierarhie de magistrale PCI, în vârful căreia se află magistrala master, numerotată zero, conectată la podul master. Dacă există mai multe poduri principale, atunci dintre autobuzele lor (egale ca rang), principalul va fi cel alocat cu numărul zero.

    Podul trebuie să îndeplinească o serie de funcții obligatorii:

    • deservirea magistralei conectate la interfața sa secundară:
    • efectuați arbitraj - primirea semnalelor de solicitare REQx# de la maeștrii magistralei și acordarea acestora dreptului de a controla magistrala cu semnale GNTx#
    • park the bus - trimite un semnal GNTx# către un dispozitiv când controlul magistralei nu este cerut de niciunul dintre master;
    • genera cicluri de configurare de tip 0 cu formarea de semnale IDSEL individuale către dispozitivul PCI adresabil;
    • „trageți” semnalele de control la un nivel ridicat;
    • determinați capacitățile dispozitivelor conectate și selectați un mod de funcționare a magistralei care le satisface (frecvență, adâncime de biți, protocol);
    • generați o resetare hardware (RST#) prin resetare din interfața primară și prin comandă, raportând modul selectat cu o alarmă specială.
    • menține hărțile resurselor situate peste tot laturi diferite pod;
    • să răspundă sub masca unui dispozitiv țintă la tranzacțiile inițiate de un maestru pe o interfață și adresate unei resurse situate pe o altă interfață; difuzați aceste tranzacții către o altă interfață, acționând ca un dispozitiv principal, și transmiteți rezultatele lor adevăratului inițiator.

    Podurile care îndeplinesc aceste funcții se numesc punți transparente; Pentru a lucra cu dispozitive situate în spatele unor astfel de poduri, nu sunt necesare drivere de pod suplimentare. Aceste punți sunt descrise în specificația PCI Bridge 1.1 și pentru ele, ca dispozitive PCI, există clasa speciala(06). În acest caz, ne referim la un model de adresare a resurselor „plat” (memorie și I/O): fiecare dispozitiv are propriile adrese, unice (nu se intersectează cu altele) în cadrul unui sistem dat (calculator).

    Există, de asemenea, punți opace (punte netransparentă), care vă permit să organizați segmente separate cu propriile spații de adrese locale. O punte opac efectuează traducerea (conversia) adresei pentru tranzacțiile în care inițiatorul și dispozitivul țintă sunt situate pe părțile opuse ale podului. Nu toate resursele (intervalele de adrese) din partea opusă pot fi accesibile printr-un astfel de pod. Punțile opace sunt utilizate, de exemplu, atunci când un computer are un subsistem „intrare/ieșire inteligentă” (I20) cu propriul procesor I/O și spațiu de adrese local.

    Informații generale

    Busul PCI este construit nativ cu capabilități de configurare automată. resursele sistemului(spații de memorie și I/O și linii de cerere de întrerupere). Configurarea automată a dispozitivului (selectarea adreselor și a întreruperilor) este suportată de instrumentele BIOS și OS; este axat pe tehnologia PnP. Standardul PCI definește un spațiu de configurare pentru fiecare funcție de până la 256 de registre (8 biți), nealocate nici spațiului de memorie, nici spațiului I/O. Acestea sunt accesate prin echipe speciale Autobuze de citire și scriere de configurare, generate folosind unul dintre mecanismele hardware și software descrise mai jos. În acest spațiu există zone care sunt necesare pentru toate dispozitivele, și unele specifice. Dispozitiv specific este posibil să nu aibă registre la toate adresele, dar trebuie să suporte finalizarea normală pentru operațiunile care le sunt adresate. În acest caz, citirea registrelor inexistente ar trebui să returneze zerouri, iar scrierea ar trebui efectuată ca o operație inactivă.

    Spațiul de configurare al unei funcții începe cu un antet standard, care conține identificatori ai producătorului, dispozitivului și clasei acestuia, precum și o descriere a resurselor de sistem necesare și ocupate. Structura antetului este standardizată pentru dispozitive convenționale (tip 0), punți PCI-PCI (tip 1), punți PCI-CardBus (tip 2). Tipul antetului determină locația registrelor bine-cunoscute și scopul biților acestora. După antet pot exista registre specifice dispozitivului. Pentru capabilitățile (capacitatea) standardizate ale dispozitivelor (de exemplu, managementul energiei) în spațiul de configurare există blocuri de registre cu scop cunoscut. Aceste blocuri sunt organizate în lanțuri, primul astfel de bloc este referit în antetul standard (CAP_PTR); în primul registru al blocului există o legătură către următorul bloc (sau 0, dacă acest bloc- ultimul). Astfel, prin scanarea lanțului, software-ul de configurare primește o listă cu toate proprietățile dispozitivului disponibile și pozițiile acestora în spațiul de configurare a funcțiilor. PCI 2.3 definește următoarele CAP_ID, dintre care unele le vom analiza:

    • 01 - managementul energiei;
    • 02 - port AGP;
    • 03 - VPD (Vital Product Data), date care oferă o descriere cuprinzătoare a proprietăților hardware (eventual și software) ale dispozitivelor;
    • 04 — numerotarea sloturilor și șasiului;
    • 05 - întreruperi MSI;
    • 06 - Hot Swap, conexiune la cald pentru Compact PCI;
    • 07 - Extensii de protocol PCI-X;
    • 08 - rezervat pentru AMD;
    • 09 - la discreția producătorului (Vendor Specific);
    • 0Ah — port de depanare (Port de depanare);
    • 0Bh - PCI Hot Plug, prevedere standard de „hot plug”.

    În dispozitivele PCI-X pentru Modul 2, spațiul de configurare este extins la 4096 de octeți; în spațiul extins pot exista descrieri extinse de proprietate.

    După hard reset(sau la pornire) dispozitivele PCI nu răspund la accesările la memorie și la spațiul I/O; sunt disponibile numai pentru citirea și scrierea configurației. În aceste operațiuni, dispozitivele sunt selectate folosind semnale IDSEL individuale, iar prin citirea registrelor, software-ul de configurare învață despre cerințele de resurse și posibilele opțiuni de configurare a dispozitivului. După ce alocarea resurselor este efectuată de către programul de configurare (în timpul POST sau pornirea sistemului de operare), parametrii de configurare (adresele de bază) sunt scrieți în registrele de configurare a dispozitivului. Abia după aceasta, dispozitivele (mai precis, funcțiile) sunt setate la biți care le permit să răspundă la comenzile de acces la memorie și porturile I/O, precum și să controleze magistrala în sine. Pentru a putea găsi întotdeauna o configurație funcțională, toate resursele ocupate de cărți trebuie să fie mobile în spațiile lor. Pentru dispozitivele multifuncționale, fiecare funcție trebuie să aibă propriul spațiu de configurare. Dispozitivul poate mapa aceleași registre atât în ​​memorie, cât și în spațiul I/O. În acest caz, ambii descriptori trebuie să fie prezenți în registrele lor de configurare, dar driverul trebuie să folosească o singură metodă de acces (de preferință prin memorie).

    Antetul spațiului de configurare descrie nevoile pentru trei tipuri de adrese:

    • registre în spațiul I/O);
    • Registre I/O mapate la memorie (Memory Mapped I/O). Aceasta este o zonă de memorie care trebuie accesată în strictă conformitate cu ceea ce solicită inițiatorul schimbului. Accesarea acestor registre poate modifica starea internă a dispozitivelor periferice;
    • memorie care permite memorie preîncărcabilă. Aceasta este o zonă de memorie în care citirea „în plus” (cu rezultate neutilizate) nu duce la efecte secundare, toți octeții sunt citiți independent de semnalele BE# și scrierile de octeți individuali pot fi conectate împreună (adică, este memoria în forma sa cea mai pură).

    Cerințele de adresă sunt indicate în registrele de adrese de bază - BAR (Base Address Register). Programul de configurare poate determina, de asemenea, dimensiunea zonelor necesare. Pentru a face acest lucru, după o resetare hardware, trebuie să citească și să salveze valorile adreselor de bază (acestea vor fi adresele implicite), să scrie FFFFFFFFh în fiecare registru și să citească din nou valoarea acestora. În cuvintele primite, trebuie să resetați tipul de biți de decodare (biți pentru memorie și biți pentru I/O), inversați și incrementați cuvântul rezultat de 32 de biți - rezultatul va fi lungimea zonei (ignorați biții pentru porturi ). Metoda presupune că lungimea regiunii este exprimată ca 2n și regiunea este aliniată în mod natural. Antetul standard găzduiește până la 6 registre de adrese de bază, dar când se utilizează adresarea pe 64 de biți, numărul de blocuri descrise este redus. Registrele BAR neutilizate ar trebui să returneze întotdeauna zerouri atunci când sunt citite.

    PCI are suport pentru dispozitive vechi (VGA, IDE), care se declară ca atare prin codul clasei din antet. Adresele lor tradiționale de porturi (fixe) nu sunt declarate în spațiul de configurare, dar odată ce bitul de activare a accesului la porturi este setat, dispozitivelor li se permite să răspundă și la acele adrese.