Conector pentru carduri de expansiune PCI. Care este diferența dintre PCI Express și PCI?

11.08.2019 Efecte de text

Când vorbim despre magistrala PCI Express (PCI-E), poate primul lucru care o diferențiază de alte soluții similare este eficiența sa. Datorită acestui autobuz modern, performanța computerului crește și calitatea grafică se îmbunătățește.

Timp de mulți ani, magistrala PCI (Peripheral Component Interconnect) a fost folosită pentru a conecta placa video la placa de bază, în plus, a fost folosită și pentru a conecta alte dispozitive, cum ar fi plăcile de rețea și de sunet.

Iată cum arată aceste sloturi:

PCI-Express a fost în esență următoarea generație a magistralei PCI, oferind funcționalitate și performanță îmbunătățite. Utilizează o conexiune serială în care există mai multe linii, fiecare dintre acestea conducând la un dispozitiv corespunzător, adică. Fiecare dispozitiv periferic primește propria linie, care crește performanța generală calculator.

PCI-Express acceptă conectarea „la cald”, consumă mai puțină energie decât predecesorii săi și controlează integritatea datelor transmise. În plus, este compatibil cu Drivere PCI– cauciucuri. O altă caracteristică remarcabilă a acestui autobuz este scalabilitatea sa, adică. cardul pci express se conectează și funcționează în orice slot cu lățime de bandă similară sau mai mare. După toate probabilitățile, această caracteristică va asigura utilizarea ei pentru anii următori.

Tipul tradițional de slot PCI a fost suficient de bun pentru funcțiile audio/video de bază. Cu magistrala AGP, schema de lucru cu date multimedia s-a îmbunătățit, iar calitatea datelor audio/video a crescut în consecință. Nu a trecut mult timp până când progresele în microarhitectura procesoarelor au început să demonstreze și mai clar lentoarea magistralei PCI, ceea ce a făcut ca cele mai rapide și mai noi modele de computere din acea vreme să devină practic.

Caracteristici și lățime de bandă magistrala PCI-E

Poate avea de la o linie de conexiune bidirecțională x1, la x32 (32 de linii). Linia funcționează punct la punct. Versiunile moderne oferă o lățime de bandă mult mai mare în comparație cu predecesorii lor. x16 poate fi folosit pentru a conecta o placă video, iar x1 și x2 pot fi folosite pentru a conecta plăci obișnuite.

Iată cum arată sloturile x1 și pci express x16:

PCI-E
Număr de linii x1 x2 x4 x8 x16 x32
Lățime de bandă 500 MB/s 1000 MB/s 2000 MB/s 4000 MB/s 8000 MB/s 16000 MB/s

Versiuni PCI-E și compatibilitate

Când vine vorba de computere, orice mențiune despre versiuni este asociată cu probleme de compatibilitate. Și, ca orice altă tehnologie modernă, PCI-E evoluează și se modernizează constant. Cea mai recentă versiune disponibilă este pci express 3.0, dar dezvoltarea versiunii de magistrală PCI-E 4.0 este deja în curs de desfășurare, care ar trebui să apară în jurul anului 2015 (pci express 2.0 este aproape depășit).
Aruncă o privire la următoarea diagramă de compatibilitate PCI-E.
Versiuni PCI-E 3.0 2.0 1.1
Lățimea de bandă totală
(X16) 32 GB/s 16 GB/s 8 GB/s
Rata de transfer de date 8,0 GT/s 5,0 GT/s 2,5 GT/s

Versiunea PCI-E nu are niciun efect asupra funcționalității cardului. Cele mai multe trăsătură distinctivă a acestei interfeţe este linia ei dreaptă și compatibilitate inversă, făcându-l sigur și capabil să se sincronizeze cu multe variante de card, indiferent de versiunea interfeței. Adică puteți introduce o cartelă din a doua sau a treia versiune într-un slot PCI-Express din prima versiune și va funcționa, deși cu o oarecare pierdere de performanță. În același mod, puteți instala un card PCI-Express din prima versiune în slotul PCI-E al celei de-a treia versiuni. În prezent, toate modelele moderne de plăci video de la NVIDIA și AMD sunt compatibile cu această magistrală.

Și asta pentru o gustare:

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 având în vedere procesoarele Pentium, dar a funcționat bine și cu procesoarele i486. Mai târziu, PCI a devenit magistrala centrală de ceva timp: a fost conectată la magistrala procesorului printr-o punte de înaltă performanță (punte „nord”) inclusă în chipset placa de baza. 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. Autobuz ISA de la computere desktop pleacă, 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” a 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 la o adresă 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. Busul PCI-X a adăugat o fază de atribute în care sunt transmise 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ă (în figuri sunt marcate cu linii punctate verticale). Aceleași linii de semnal sunt controlate în momente diferite diferite dispozitive bus, 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.

Masă. Semnale magistrală PCI

Semnal
Scop
AD 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 unui semnal 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ă
BLOCARE#
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 extensie, una sau două linii LED sunt conectate la magistrala GND, care este detectată de placa de bază
RST#
Resetare - resetează toate registrele la starea initiala(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 pe 64 de biți - cerere pentru un schimb pe 64 de biți. Semnalul este introdus de către inițiatorul pe 64 de biți, acesta 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 în modul pe 32 de biți prin dezactivarea circuitelor tampon de 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#. Absența acestei confirmări 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)

Capabilități PCI-X: pe plăci PCI - împământate, pe PCI-X133 conectate 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
Testare date de intrare - 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 când anumite conditii(vezi mai jos) vă poate forța să opriți o tranzacție începută. 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 din următoarea fază 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ă pregătire 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 sincronizare a comunicației î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ă ceară 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 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 la același dispozitiv, fie la 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țiatorului i se permite (dacă poate) să utilizeze tranzacții contigue rapide cu diferite dispozitive (permisiunea este determinată de bitul 9 al registrului de comenzi) numai dacă toți agenții de magistrală permit apeluri rapide. La schimbul de date în Modul PCI-X tranzacțiile rapide adiacente 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 un bit de paritate valid apare pe magistrală). Când se calculează paritatea în timpul transmiterii datelor, toți octeții sunt luați în considerare, inclusiv cei nevalidi (marcați nivel înalt semnal C/BEx#). 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, 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:

  • retry — repetare, introducerea semnalului STOP# cu un 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 maestru 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 dispozitivele țintă, 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ă intern 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 eliminate cu impunitate (integritatea datelor poate fi încălcată pentru ele, 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 moduri diferite: Pentru întrerupere nemascabilă este fixă, pentru întrerupere mascabilă este raportată de un controler special de întrerupere. 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 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 o serie de numere vectoriale, procedura la care face referire tabelul de întreruperi trebuie să conţină la început codul programului, care determină de ce este apelat: din cauza unei excepții, a unei întreruperi hardware sau pentru a apela un serviciu 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, observă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 de întreținere a acestui dispozitiv, inclusiv resetarea cererii sale pentru a-i permite să răspundă la evenimentele ulterioare și trimiterea comenzilor de terminare către controlerul de întrerupere. La apelarea rutinei de procesare, procesorul stochează automat valoarea tuturor steagurilor de pe stivă și resetează indicatorul 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ă). Următoarele întreruperi ale aceluiași sau mai multor nivel scăzut Controlerul de întrerupere prioritară va funcționa numai după primirea comenzii de întrerupere 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 dispozitive de sistem(tastatură, temporizator de sistem, temporizator CMOS, coprocesor), controlere periferice ale plăcii 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
Tastatura
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
Rezervaţie
IRQ10 72h
5Ah
#2/4h
Rezervaţie
IRQ11 73h
5Bh
#2/8h
Rezervaţie
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
Rezervaţie
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, sprijinind acest adaptor, trebuie informat despre numărul vectorului utilizat. Sistemul PnP pentru magistralele ISA și PCI poate participa la procesul de atribuire a întreruperilor. Parametrii speciali CMOS Setup sunt utilizați pentru a distribui liniile de solicitare între magistrale. Sistemele de operare moderne au capacitatea de a modifica alocarea solicitărilor privind alocarea făcute 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. Alți pași sunt luați î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 ( memorie de sistemși procesor). „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 a conecta magistralele 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. Deci totul dispozitive active 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ți 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ți ale resurselor situate pe părțile opuse ale podului;
  • 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ță; difuzează aceste tranzacții către o altă interfață, acționând ca un master, și transmit 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ă o clasă specială (06). ÎN în acest caz, este implicat 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 pentru fiecare funcție un spațiu de configurare de până la 256 de registre (8-biți), nealocate nici spațiului de memorie, nici spațiului I/O. Acestea sunt accesate folosind comenzile speciale de magistrală Configuration Read și Configuration Write, 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 să fie 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 binecunoscute ș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ă o resetare completă (sau pornire), dispozitivele PCI nu răspund la accesările la memorie și la spațiul I/O și 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 dispozitive 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 intrare/ieșire), 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 (fixe) de porturi nu sunt declarate în spațiul de configurare, dar de îndată ce bitul de activare a accesului la port este setat, dispozitivelor li se permite să răspundă și la acele adrese.

Fiecare utilizator de PC a deschis cel puțin o dată managerul de dispozitive pe computerul său. Nu contează dacă este un computer desktop obișnuit sau un laptop, puteți găsi un așa-numit controler PCI peste tot. Ce este și de ce este nevoie de un computer? Unde să-l cauți și ce să faci cu el?

Ce este un controler PCI?

PCI este o magistrală universală pentru conectarea diferitelor dispozitive. Ele sunt de obicei amplasate pe placa de bază a computerului și cu ajutorul lor pot fi conectate diverse plăci suplimentare. Titularii computer desktop Va fi mai ușor să găsiți sloturi PCI pe computer. Când scoți capacul lateral al carcasei, vei vedea placa de bază a PC-ului tău, iar pe ea sunt câțiva conectori mari albi. Acești conectori se numesc magistrale PCI. Cu ajutorul lor, puteți conecta o placă video, o placă de sunet, plăci cu conectori suplimentari (USB sau COM), placa de retea etc.

Controlerul PCI în sine face parte din placa de bază și este responsabil pentru munca normala anvelopele în sine și dispozitivele conectate la acestea. Sloturile PCI pot avea versiuni diferiteși sunt destinate diverselor tipuri de plăci. Dacă te uiți cu atenție la placa de bază a PC-ului, vei observa că conectorul pentru conectarea plăcii video este diferit de celelalte. Acest lucru se face deoarece plăcile video oferă o rată de schimb de date mai mare placa de bazași consumă, de asemenea, mai multă energie electrică. Pe plăci de bază De asemenea, puteți găsi un mic conector PCI, care este destinat pentru rețea sau diverse alte plăci care consumă mai puțină energie și nu necesită un canal larg de transfer de date.

Instalarea unui dispozitiv PCI

Când alegeți un dispozitiv suplimentar pentru computer, aflați ce versiune de conectori PCI este instalată pe placa de bază. Amintiți-vă, diferitele versiuni ale acestor conectori diferă prin forma lor, așa că un dispozitiv pentru o versiune a conectorului nu va fi compatibil fizic cu o altă versiune a conectorului găsit pe placa de bază.

A afla dacă un dispozitiv este compatibil cu placa ta de bază este destul de simplu:

  1. Descărcați Everest, instalați-l și rulați-l.
  2. În coloana din stânga, selectați „Dispozitive” și selectați „Dispozitive PCI” acolo. Fereastra centrală a programului va fi împărțită în două fereastra de sus va lista toate dispozitivele care sunt conectate la magistralele PCI. Făcând clic pe dispozitiv, în fereastra de jos puteți vedea informații despre dispozitiv și magistrala în sine la care este conectat. Acolo puteți afla și versiunea magistralei PCI.
  3. Puteți să o faceți mai ușor și să găsiți o descriere a plăcii de bază pe Internet, apoi pur și simplu să o comparați cu caracteristicile dispozitivului pe care doriți să-l instalați. Puteți afla modelul plăcii de bază folosind programul Everest deschizând secțiunea „placă de bază”.

Dacă placa selectată este compatibilă cu placa dvs. de bază, puteți trece direct la instalarea dispozitivului.

  1. Scoateți capacul lateral al carcasei PC-ului.
  2. Selectați slotul PCI în care va fi instalat dispozitivul sau eliminați dispozitivul pe care doriți să îl înlocuiți cu unul nou din slotul dorit.
  3. Doar introduceți cu atenție cardul, astfel încât să se potrivească complet în conector. Nu puteți greși aici, deoarece este imposibil din punct de vedere fizic să instalați incorect placa în conector.
  4. Conectați conectori suplimentari (dacă este necesar) și înlocuiți capacul carcasei.
  5. Porniți computerul. Când sistemul de operare pornește, veți vedea un mesaj de sistem care indică faptul că a fost conectat un nou dispozitiv. Instalați driverele necesare funcționării acestuia de pe discul de instalare care vine cu dispozitivul, descarcând driverul din rețea sau utilizând instalarea automată a driverului.

Probleme care apar cu controlerul PCI

Uneori, după reinstalarea sistemului de operare, poate apărea următoarea problemă - sistemul nu va putea recunoaște controlerul PCI. Când deschideți Manager dispozitive, veți găsi elementul „hardware necunoscut” în loc de „controler PCI”. Soluția problemei este foarte simplă - descărcați sofer necesar de pe site-ul web al producătorului plăcii de bază și instalați-o.

HighPoint RocketRAID 2320: Al doilea controler RAID SATA II din laboratorul nostru cu o interfață PCIe.

PCI Express (PCIe) este pe piață de aproximativ un an și jumătate, dar este încă în mare măsură perceput ca o nouă interfață pentru plăcile grafice. Plăcile de bază pentru desktop cu suport PCI Express oferă sloturi suplimentare cu această interfață, dar sunt rar folosite astăzi. De fapt, ca și versiunile cu lățime de bandă mai mare pe plăcile de bază pentru servere și stații de lucru.

În timp ce PCI Express x16 ar putea, teoretic, să ofere mai multă lățime de bandă decât PCI-X 533 (8 GB/s față de 4,26 GB/s), este important să subliniem că PCIe nu a fost destinat să înlocuiască PCI-X, ci pe altele, mai vechi interfețe. PCIe avea ca scop înlocuirea GUI AGP din motive de marketing și, de asemenea, pentru a deschide calea pentru plăcile grafice duale. Și magistrala PCI paralelă învechită pe 32 de biți a necesitat și o înlocuire. PCI cu greu poate fi numit un autobuz bun din punct de vedere al concepte moderne: Oferă lățime de bandă relativ mică, care este, de asemenea, partajată între toate dispozitivele PCI. Tehnologii moderne- ca gigabit Ethernet, periferice cu suport rezoluție înaltăși controlere de antrenare - necesită un randament mai mare.

Să ajungem la punctul PCI Express: această interfață nu este neapărat mai rapidă decât PCI-X, dar este mai simplă și oferă lățime de bandă pe fiecare dispozitiv. De aceea apar astăzi tot mai multe chipset-uri server/stație de lucru cu suport PCI Express: este prea tentant să aloci lățime de bandă fiecărui dispozitiv.

Una dintre aplicațiile posibile poate fi numită imediat controlere de rețea și de stocare, deoarece au suferit de multă vreme de „îngustimea” interfeței. Este de înțeles că construirea unui mediu de testare Ethernet de 10 Gbps este mai dificilă decât utilizarea controlerelor de unitate. Prin urmare, am ales RAID pentru testare.

Am selectat cele mai recente două controlere HighPoint Serial ATA II RAID RocketRAID, modelele 2220 și 2320, deoarece sunt construite pe aceeasi tehnologieși diferă doar în interfață. 2220 este un model PCI-X, iar 2320 utilizează interfața x4 PCI Express.

PCI-X este o versiune semnificativ îmbunătățită a magistralei paralele Peripheral Components Interconnect (PCI). Este construit pe o topologie de magistrală clasică și necesită un număr mare de piste/contact pentru conectare. După cum am menționat mai sus, lățimea de bandă disponibilă este partajată între toate dispozitivele.

Spre deosebire de PCI obișnuit din computerul dvs., care are o lățime de 32 de biți, PCI-X este o magistrală de 64 de biți. Ca rezultat, debitul este dublat automat, la fel ca și numărul de piste/pini și dimensiunile sloturilor. Dar orice altceva, inclusiv protocoalele de transmisie, semnalele și tipurile de conectori, sunt compatibile cu invers. Adică, un card PCI pe 32 de biți (3,3 V) poate fi instalat în slotul PCI-X. În plus, multe carduri PCI-X pe 64 de biți pot funcționa în sloturi PCI pe 32 de biți, dar, desigur, la un debit redus semnificativ.

Dar nici măcar această extindere a magistralei încă nu a oferit o lățime de bandă suficientă pentru controlerele profesionale SCSI, iSCSI, Fibre Channel, Ethernet 10-Gbps, InfiniBand și altele. Prin urmare, PCI-SIG (Grupul de interes special) a adăugat mai multe gradații de viteză la specificație, variind de la PCI-X 66 (Rev. 1.0b) la PCI-X 533 (Rev. 2.0). Următorul tabel oferă informații detaliate.

Latimea anvelopei Frecvența ceasului Funcții Lățimea de bandă
PCI-X 66 pe 64 de biți 66 MHz Priză fierbinte, 3,3 V 533 MB/s
PCI-X 133 pe 64 de biți 133 MHz Priză fierbinte, 3,3 V 1,06 GB/s
PCI-X 266 133 MHz (DDR) 2,13 GB/s
PCI-X 533 64 de biți, opțional doar 16 biți 133 MHz (QDR) Hot Plug, 3,3 și 1,5 V, suport ECC 4,26 GB/s

După cum puteți vedea, la atingerea 133 MHz cu PCI-X 133, viteza de ceas nu a mai crescut. Pentru a oferi o lățime de bandă mai mare, au fost utilizate două tehnologii cu care probabil ești deja familiarizat: magistralele de memorie și FSB-urile. PCI-X 266 se bazează pe tehnologia Double Data Rate, în care datele sunt transferate pe impulsurile de ceas în scădere și în creștere. PCI-X 533 merge și mai departe și folosește Quad Data Rate. Intel folosește această tehnologie pentru FSB de mult timp procesoare Pentium 4 și Xeon.

Sloturile largi din stânga sunt magistrala PCI-X pe 64 de biți.


Sursa: prezentare PCI-SIG PCI-X 2.0.

După cum am menționat mai sus, lățimea de bandă totală cu maximum 4,26 GB/s este împărțită între toate dispozitivele conectate la magistrală. În plus, dacă orice dispozitiv nu poate funcționa la viteze mari de ceas, sistemul va reduce viteza magistralei la cea mai mică valoare totală, până la 33 MHz. Cu toate acestea, acesta este prețul pe care trebuie să-l plătiți pentru compatibilitate. Dar problema poate fi rezolvată prin implementarea mai multor punți PCI-X pe placa de bază. Produsele cu această capacitate sunt oferite de toți producătorii de calitate profesională, inclusiv de companii precum Asus, Supermicro și Tyan.

Compatibilitatea anterioară este un mare plus al PCI-X. Administratorii vor să fie absolut siguri că noile echipamente vor funcționa corect. De aceea, introducerea noilor tehnologii pe piața serverelor și stațiilor de lucru nu este atât de rapidă. De ce să ne luăm rămas bun de la o tehnologie care este compatibilă cu retrocompatibil, oferă performanță suficientă și are o bază hardware mare? Este puțin probabil ca această situație să se schimbe în viitor, deoarece astăzi PCI-SIG lucrează deja la standardul PCI-X 1066. Acesta va dubla încă o dată debitul și, în plus, va primi funcții noi, cum ar fi din mers compresia datelor, căile de backup automate și securitatea împotriva erorilor. În plus, poate apărea suportul pentru transferul izocron, dar apoi compatibilitatea cu PCI convențională va trebui abandonată.

Utilizează două frecvențe noi de operare: 100 MHz și 133 MHz. În plus, această magistrală implementează un mecanism de tranzacție separat pentru a îmbunătăți performanța atunci când mai multe dispozitive sunt conectate în același timp.

În esență, PCI-X, care poate fi descifrat ca PCI-eXtended, este o versiune prescurtată a PCI-E. Ulterior, extinderea a fost înlocuită de omologul său mai compact, deoarece spațiul de pe placa de bază a devenit o problemă din ce în ce mai presantă, „plăcile de bază” au devenit mai mici, ceea ce a necesitat același lucru de la sloturi. Deci, PCI-E a înlocuit aproape complet PCI-X.

Pentru magistrala PCI-X, există restricții privind numărul de dispozitive conectate la aceasta: 66 MHz - 4, 100 MHz - 2, 133 MHz - 1, 2, 266 și 533 MHz - doar 1.

Acest autobuz este compatibil cu toate 3,3 V și carduri universale Extensii PCI. În general, PCI-X nu este utilizat pe scară largă pe plăcile de bază moderne. În segmentul profesional este folosit pentru controlere RAID, în SSD-uri, sub PCI-E.

PCI-X a fost dezvoltat în colaborare între IBM, HP și Compaq. Anvelopa a apărut pe piață în 1998. Scopul principal al creării unei noi magistrale a fost încercarea de a introduce pe piață o nouă magistrală codificată prin diverse extensii pe platforma locală PCI, care să elimine dezavantajele PCI, să fie mai rapidă și mai productivă și, în același timp, să fie mai productivă. crește popularitatea dispozitivelor precum: Gigabit Ethernet, Fibre Channel și carduri Ultra3 SCSI. PCI-X este deconectat de la alții Autobuze PCIși permite diverșilor agenți să-l folosească. Răspunsurile divizate cresc eficiența magistralei prin eliminarea buclelor repetate în timpul cărora datele nu pot fi transferate pe magistrală. În plus, PCI-X a adăugat dispozitive MSI care întrerup sistemul prin scrierea în memoria gazdă.

Teoretic, cantitatea maximă de date transferată între procesor și dispozitivele periferice folosind PCI-X este de 1,06 GB/s, comparativ cu 133 MB/s pentru PCI standard. PCI-X are, de asemenea, un nivel îmbunătățit de toleranță la erori, permițând utilizatorului, de exemplu, să reinițialeze o cartelă eșuată sau să o scoată offline.

PCI-X nu este compatibil cu vechiul I/O de 5V care era atât de comun în PCI standard.

În ce Diferența PCI-X de la PCI 64?

pe 64 de biți Slot PCIîl putem distinge de 32 de biți în lungime, în primul rând, iar de PCI-X diferă prin prezența a trei segmente, cu unul la mijloc, care este mult mai scurt decât restul. Sloturile PCI-X pot fi distinse de PCI 64 printr-un segment mic la început, același mic din PCI 64 fiind situat în mijlocul slotului. Este vorba despre diferențele vizuale.

Un card pe 32 de biți va funcționa corect Slot PCI-X, dar cardurile PCI-X nu vor funcționa pe un slot de 32 de biți. Unele plăci PCI 64 pot funcționa normal pe sloturi de 32 de biți, dar cu o inevitabil pierdere dublă a puterii, deoarece lățimea de bandă a magistralei este mai mică.


Versiuni:

Carduri

  • 66 MHz
  • 100 MHz
  • 133 MHz
  • 266 MHz
  • 533 MHz

Sloturi

  • 66 MHz
  • 133 MHz
  • 266 MHz
  • 533 MHz