Interconectare componentă periferică

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Trei sloturi de expansiune PCI de 5 volți pe 32 de biți pe o placă de bază .

Interconectarea componentelor periferice (PCI) sau interconectarea componentelor periferice este un standard de magistrală dezvoltat de Intel la începutul anilor 1990. A fost lansat pe piață în 1993 [1] pentru a conecta CPU - ul la cele mai variate periferice interne de computer ( plăci electronice ) prin intermediul plăcii de bază . Viteza de transmisie a interfeței PCI a rămas de-a lungul anilor ancorată la 132 MBytes / s, generată de o transmisie de date cu o frecvență de ceas pe 32 de biți de 33 MHz .

Deși interfața PCI a marcat un pas semnificativ înainte în evoluția PC-urilor , atât pentru costul redus, cât și pentru performanțele bune (și inițial suficiente) care i-au decretat difuzia în masă, înlocuind arhitectura standard industrială (ISA sau Bus AT), primele limite au fost resimțite la scurt timp în sisteme precum servere și stații de lucru , unde este necesară o viteză foarte mare pentru transmiterea datelor. Așa că am început să căutăm și să proiectăm înlocuitori pentru această interfață: cei mai norocoși au fost PCI la 66 MHz, PCI X și acum PCI Express . Prima este consecința directă a PCI clasic: se caracterizează printr-o creștere a frecvenței de la 33 la 66 MHz , pentru a fi apoi exploatată atât cu interfețe de 32, cât și de 64 de biți pentru o lățime de bandă teoretică maximă de 528MBytes / s.

Alături de aceste noi interfețe, PCI a suferit ușoare mutații în timp: de exemplu, prezentarea PCI 2.3 este destul de importantă. Cu această nouă versiune, performanțele rămân neschimbate, dar au fost introduse module care vor funcționa fie exclusiv la 3.3v (la fel ca pentru PCI X ) sau într-un mod universal, recunoscând tensiunea adecvată (3.3v sau 5v) și adaptându-se în consecință.

Standardul este dezvoltat de consorțiul Peripheral Component Interconnect Special Interest Group .

Specificații convenționale pentru magistrala PCI

  • tactat la 33,33 MHz cu transfer sincron
  • rata de transfer de 133 MB / s pentru o magistrală pe 32 de biți
    • (33,33 MHz × 32 biți × 1 octet / 8 biți = 133 MB / s)
  • Lățimea magistralei pe 32 sau 64 de biți
  • 256 octeți de spațiu de configurare
  • Semnale de 3,3 sau 5 volți
  • comutarea reflexiilor

Variante PCI convenționale

  • PCI 2.2 permite transmiterea la 66 MHz (necesită semnale de 3,3 volți și are o rată de transfer de vârf de 266 MB / s)
  • PCI 2.3 permite doar utilizarea cardurilor cu semnale de 3,3 volți și nu mai sunt carduri cu semnale de 5 volți
  • PCI 3.0 este standardul definitiv
  • PCI-X dublează lățimea la 64 de biți, protocolul a fost revizuit și rata de date a fost mărită la 133 MHz (rata de transfer maximă la 1014 MB / s)
  • PCI-X 2.0 permite o rată de 266 MHz (rata de transfer de vârf la 2035 MB / s) și, de asemenea, 533 MHz, extinde spațiul de configurare la 4096 octeți, adaugă o variantă de 16 biți a magistralei și permite semnale la 1,5 volți
  • Mini PCI este un nou format PCI 2.2 pentru utilizare pe laptopuri
  • Cardbus este un PCI PCMCIA pe 32 de biți, 33 MHz
  • Compact PCI utilizează carduri dimensionate conform specificațiilor Eurocard (pentru laptopuri)
  • PC / 104-Plus este o magistrală industrială care utilizează specificații PCI, dar cu conectori diferiți
  • PCI Express (PCIe) este o nouă interfață care valorifică experiența acumulată cu PCI cu un protocol serial de strat fizic și conectori diferiți. PCI Express înlocuiește autobuzele PCI și AGP. Sloturile PCIe nu sunt compatibile cu sloturile anterioare care profită de standardele PCI și PCI-X.
  • Mini PCIe, format PCIe pentru laptopuri, pentru acest port există două dimensiuni de carduri, dintre care Half Mini PCIe se caracterizează prin dimensiunea mai mică
  • M.2 sau NGFF, utilizat pe unele laptopuri, porturi bazate pe PCIe

Registrele

Registrele de configurare ale oricărui card care utilizează magistrala PCI ca comunicare sunt împărțite în registre mapate de memorie (pentru configurarea tuturor rutinelor legate de card) și în registre aparținând Spațiului de configurare PCI.

Spațiu de configurare PCI

Spațiul de configurare PCI este furnizat de standardul PCI ca memorie suplimentară (în plus față de registrele cartografiate de memorie standard) pentru informații suplimentare, cum ar fi ID-ul furnizorului, ID-ul dispozitivului, pentru funcțiile de configurare și inițializare. Dimensiunea este de 256 de octeți adresați prin BDF. BDF este un acronim care înseamnă Bus-Device-Function.

  • ID-ul furnizorului este salvat într-un registru pe 16 biți și este atribuit producătorului (cipului) de către grupul de interese speciale PCI , în timp ce ID-ul dispozitivului (salvat întotdeauna pe un registru pe 16 biți) este atribuit de către producătorul cip.
  • ID-ul furnizorului subsistemului identifică producătorul cardului și ID-ul dispozitivului subsistemului este atribuit de aceștia pentru a identifica cardul.
  • Registrul de comandă este setat bit cu bit și controlează funcționarea cardului în conformitate cu standardul PCI.
  • Registrul de stare este registrul în care sunt salvate informații referitoare la evenimente legate de magistrala PCI.

La pornirea computerului, toate dispozitivele adăpostite în sloturile PCI sunt într-o stare inactivă și nu li s-a atribuit încă o adresă de memorie (de BIOS sau firmware-ul asociat) pentru a comunica cu sistemul de operare sau cu driverul. Nu există metode pentru a determina care sloturi sunt ocupate de dispozitive și ce funcții îndeplinesc aceste dispozitive, pentru a continua este numărat până când este identificat un număr corespunzător unui ID furnizor și ID dispozitiv pentru fiecare combinație BDF (magistrală, dispozitiv, funcție). Când BDF se potrivește, BIOS-ul sau sistemul de operare scrie adresa memoriei de pornire în BAR (Registre de adrese de bază) ale cipului, această operațiune este valabilă pentru fiecare sesiune: de la pornirea computerului până la oprirea acestuia (acesta este „ implementarea plug and play).

Conector PCI (slot)

Din specificațiile standard PCI, există două tipuri de conectori PCI care pot fi realizați pe suprafața plăcii de bază: unul pentru sistemele care utilizează semnale de 5 volți și unul pentru sistemele care utilizează semnale de 3,3 volți. În plus, pot fi implementați conectori pe 32 de biți sau pe 64 de biți. În consecință, există trei tipuri de sloturi:

  • sloturi care funcționează la 5 volți cu o crestătură care întrerupe pozițiile 50 și 51 (pentru a permite doar acestui tip de carduri să intre în sloturile de semnal de 5 volți)
  • sloturi care funcționează la 3,3 volți cu o crestătură care întrerupe din nou pozițiile 12 și 13 din motivul menționat anterior
  • sloturi universale care includ cele două tipuri de crestături în același timp pentru a permite inserarea tuturor tipurilor de cărți.

Alocarea pinilor și numele pinilor unui slot PCI cu semnale de 5 volți

 : -----: -----:
              -12V | - B1 A1 - | Test Reset
        Ceas de testare | - B2 A2 - | + 12V
            Teren | - B3 A3 - | Selectare mod test
  Ieșire date de testare | - B4 A4 - | Testați datele de intrare
               + 5V | - B5 A5 - | + 5V
               + 5V | - B6 A6 - | Întrerupeți A
       Întrerupere B | - B7 A7 - | Întrerupeți C
       Întrerupere D | - B8 A8 - | + 5V
           PRSNT1 # | - B9 A9 - | Rezervat
          Rezervat | - B10 A10 - | + VI / O
           PRSNT2 # | - B11 A11 - | Rezervat
                  : -----: -----:
                  : -----: -----:
          Rezervat | - B14 A14 - | Rezervat
            Pământ | - B15 A15 - | Resetați
             Ceas | - B16 A16 - | + VI / O
            Teren | - B17 A17 - | Acorda
           Cerere | - B18 A18 - | Sol
            + VI / O | - B19 A19 - | Rezervat
        Adresa 31 | - B20 A20 - | Adresa 30
        Adresa 29 | - B21 A21 - | + 3,3V
            Pământ | - B22 A22 - | Adresa 28
        Adresa 27 | - B23 A23 - | Adresa 26
        Adresa 25 | - B24 A24 - | Sol
             + 3,3V | - B25 A25 - | Adresa 24
            C / BE 3 | - B26 A26 - | Selectare dispozitiv inițial
        Adresa 23 | - B27 A27 - | + 3,3V
            Pământ | - B28 A28 - | Adresa 22
        Adresa 21 | - B29 A29 - | Adresa 20
        Adresa 19 | - B30 A30 - | Sol
             + 3.3V | - B31 A31 - | Adresa 18
        Adresa 17 | - B32 A32 - | Adresa 16
            C / BE 2 | - B33 A33 - | + 3,3V
            Teren | - B34 A34 - | Ciclu Cadru
   Initiator Ready | - B35 A35 - | Sol
             + 3,3V | - B36 A36 - | Țintă gata
     Selectare dispozitiv | - B37 A37 - | Sol
            Pământ | - B38 A38 - | Stop
              Blocare | - B39 A39 - | + 3,3V
      Eroare de paritate | - B40 A40 - | Snoop Gata
             + 3,3V | - B41 A41 - | Snoop Backoff
      Eroare de sistem | - B42 A42 - | Sol
             + 3,3V | - B43 A43 - | PAR
            C / BE 1 | - B44 A44 - | Adresa 15
        Adresa 14 | - B45 A45 - | + 3,3V
            Teren | - B46 A46 - | Adresa 13
        Adresa 12 | - B47 A47 - | Adresa 11
        Adresa 10 | - B48 A48 - | Sol
            Teren | - B49 A49 - | Adresa 9
                  : -----: -----:
                  : -----: -----:
         Adresa 8 | - B52 A52 - | C / BE 0
         Adresa 7 | - B53 A53 - | + 3,3V
             + 3,3V | - B54 A54 - | Adresa 6
         Adresa 5 | - B55 A55 - | Adresa 4
         Adresa 3 | - B56 A56 - | Sol
            Teren | - B57 A57 - | Adresa 2
         Adresa 1 | - B58 A58 - | Adresa 0
            +5 I / O | - B59 A59 - | + VI / O
Confirmați pe 64 de biți | - B60 A60 - | Solicitați 64 de biți
               + 5V | - B61 A61 - | + 5V
               + 5V | - B62 A62 - | + 5V
                  : -----: -----:

Descrierea funcționării magistralei PCI

Într-o magistrală PCI, toate transferurile de date au loc sincron, adică conform unui ceas de sistem (CLK). Ceasul în cazul nostru (PCI 2.0) este de 33 MHz și, prin urmare, are loc un transfer la fiecare 30 ns. Pe magistrala PCI datele și adresele sunt multiplexate prin aceiași pini (AD [31: 0]), ceea ce permite reducerea numărului de pini necesari pe conector și, prin urmare, reducerea costurilor și o dimensiune redusă. De obicei, cardurile găzduite pe sloturile PCI utilizează aproximativ 50 de pini, dintre care 32 sunt pentru date sau adrese. Ciclurile magistralei PCI încep cu o adresă prezentă pe pinii AD [31: 0] de pe prima margine a ceasului, aceasta se numește faza de adresă și este semnalată prin activarea semnalului pe pinul FRAME # (care, din moment ce este scăzut activ va fi adus la un nivel logic scăzut). Următoarea margine de ceas începe în prima dintre una sau mai multe faze de date în timpul cărora datele sunt transferate la pinii AD [31: 0]. Conform terminologiei PCI, datele sunt transferate între un inițiator care acționează ca maestru și o țintă care acționează ca un sclav. Inițiatorul conduce semnalele C / BE [3: 0] # în timpul fazei de adresă pentru a evidenția tipul de transfer (citire memorie, scriere memorie, citire I / O, scriere I / O etc.). În timpul fazelor de date, semnalele prezente pe pinii C / BE [3: 0] # servesc pentru a identifica ce octet de date este transferat. Atât inițiatorul, cât și ținta pot insera stări de așteptare în transferul de date, aducând semnalele IRDY # și TRDYB # la un nivel logic ridicat. Un transfer de date este considerat valabil pe fiecare margine a ceasului atunci când atât semnalele IRDYB #, cât și TRDYB # sunt la un nivel logic scăzut.

Un transfer pe magistrala PCI constă dintr-o fază de adresă și una sau mai multe faze de date. Operațiile I / O care accesează registrele din interiorul diferitelor dispozitive care utilizează magistrala PCI au de obicei o singură fază de date. Transferurile de memorie care mută blocuri de date constau în mai multe faze de date care citesc sau scriu locații consecutive de memorie. Atât inițiatorul, cât și ținta pot termina un transfer prin autobuz în orice moment. Inițiatorul semnalează finalizarea transferului prin autobuz aducând semnalul de pe pinul FRAME # la un nivel înalt în timpul ultimei faze de date (chiar înainte de a transfera ultimele date). Ținta, pe de altă parte, poate semnaliza sfârșitul unui transfer prin autobuz setând valoarea semnalului de pe pinul STOP # la nivel scăzut. Când inițiatorul detectează că semnalul de pe STOP # este activ, acesta trebuie să înceteze transferul curent și să arbitreze din nou pentru concurența autobuzului de către diferitele periferice. Dacă semnalul STOP # pin este activat fără finalizarea oricărei faze de date, ținta decretează că este o reîncercare. Dacă semnalul STOP # pin este activat după ce una sau mai multe faze de date s-au încheiat cu succes, ținta rezolvă faptul că este o deconectare.

Diferenții inițiatori sunt arbitrați pentru deținerea magistralei PCI aducând semnalul pe pinul REQ # la un nivel scăzut. Arbitrul garantează posesia autobuzului aducând semnalul de pe pinul GNT # la nivel scăzut. Arbitrajul autobuzului PCI este definit ca ascuns, adică nu consumă cicluri de ceas. Transferurile pe magistrala inițiatorului curent sunt suprapuse procesului de arbitraj care determină următorul pasager al autobuzului.

Standardul PCI acceptă adresarea pe 64 de biți (nu transferul de date pe 64 de biți care ar necesita un conector mai lung) direct pe conectori pentru adresarea pe 32 de biți. Prin ciclurile de adresă duală se transferă întreaga adresă: în primul ciclu cei mai puțin semnificativi 32 de biți, în cel de-al doilea ciclu cei mai semnificativi 32 de biți.

Arhitectura magistralei PCI este independentă de procesor, definițiile semnalului permit utilizarea magistralei de diferite familii de procesoare. Datorită ratei mari de transfer de date, numărul de sloturi PCI pe o singură magistrală nu trebuie să depășească 3 sau 4 unități. Pentru a permite magistrale de expansiune cu mai mult de 3 sau 4 sloturi, PCI SIG a introdus un mecanism PCI-to-PCI Bridge. Podurile PCI-la-PCI sunt ASIC-uri care izolează electric două autobuze PCI permițând transferul transferurilor de la un autobuz la altul.

Descrierea semnalelor PCI

 Pinii necesari Pinii opționali
------------- -------------
                   ----------------
                  | |
<=== AD [31: 0] =====> | | <=== AD [63:32] ====>
<=== C / BE [3: 0] # ===> | PCI | <=== C / BE [7: 4] # ===>
<---PAR----------> | Conform | <---PAR64-------->
                  | Dispozitiv | <--- REQ64 # ------->
<--- FRAME # -------> | | <--- ACK64 # ------->
<--- TRDY # --------> | |
<--- IRDY # --------> | | <--- LOCK # -------->
<--- STOP # --------> | |
<--- DEVSEL # ------> | | ---- INTA # -------->
---- IDSEL --------> | | ---- INTB # -------->
                  | | ---- INTC # -------->
<--- PERR # --------> | | ---- INTD # -------->
<--- SERR # --------> | |
                  | | <--- SBO # --------->
<--- REQ # ---------- | | <---SDONE-------->
---- GNT # ---------> | |
                  | | <--- TDI -----------
---- CLK ----------> | | ---- TDO ---------->
---- RST # ---------> | | <--- TCK -----------
                  | | <--- TMS -----------
                  | | <--- TRST # ---------
                   ----------------

Pinul sistemului

  • CLK: Ceasul este referința orei pentru toate transferurile de autobuz PCI. Toate semnalele PCI, cu excepția resetărilor și întreruperilor, sunt eșantionate pe marginea ascendentă a semnalului CLK. Toate specificațiile de sincronizare sunt definite în raport cu marginea ascendentă. După cum sa menționat deja, ceasul de bază al magistralei PCI rulează la 33 MHz. Pentru versiunea 2.1 a magistralei PCI ceasul a crescut la 66 MHz. Cardurile care vor fi adăpostite în sloturile PCI anunță dacă pot funcționa la 66 MHz prin semnalul M66EN . Dacă un sistem poate suporta doar o magistrală PCI de 33 MHz, atunci un card care rulează la 66 MHz trebuie să poată funcționa la o frecvență mai mică. Frecvența minimă a semnalului CLK este setată la 0 Hz permițând suspendarea CLK în scopuri de economisire a energiei.
  • RST #: este semnalul de resetare (activ scăzut), utilizat la pornirea sistemului pentru a declanșa o resetare hardware a unui dispozitiv PCI. Resetarea acționează asupra registrelor de configurare și stare și semnalele de ieșire sunt readuse la starea inițială. Semnalul RST # este asincron cu semnalul CLK. Rămâne activ timp de minimum 100 de noi după ce ceasul devine stabil.

Adresele și pinii de date

  • AD [31: 0]: Adresele și datele sunt multiplexate pe acești pini. Pinii AD [31: 0] transferă adrese fizice pe 32 de biți în timpul fazei adrese și transferă 32 de biți de date în timpul fazei de date. O fază de adresă începe cu marginea ceasului după o tranziție înaltă-joasă a semnalului FRAME #. O fază dată începe când ambele IRDY # și TRDY # sunt setate la un nivel scăzut. Ținta conduce TRDY # scăzut atunci când este capabil să accepte date de scriere. Când atât IRDY # cât și TRDYB # sunt scăzute, ținta captează datele pentru scriere și tranzacția este finalizată. Pentru tranzacțiile citite este opusul. Ținta aduce TRDY # scăzut atunci când datele valide sunt aduse pe pinii AD [31: 0], iar inițiatorul setează IRDY # scăzut atunci când este capabil să accepte date. Când atât IRDY # cât și TRDY # sunt scăzute, inițiatorul captează datele și tranzacția este finalizată. Bitul 31 este cel mai semnificativ dintre biții AD și, în consecință, bitul 0 este bitul cel mai puțin semnificativ.
  • C / BE [3: 0] #: magistralele de comandă și octeții de activare (identificatori ai octetului transmis) sunt multiplexați pe acești pini. În timpul unei faze de adresare, aceste semnale poartă comenzi de magistrală care definesc tipul de transfer care va fi efectuat. În tabelul următor există o listă de coduri valide de comandă a magistralei. În timpul unei faze de date, aceste semnale transmit informații cu privire la activarea octetului (care octet de date este transmis). Semnalul C / BE [3] # se referă la cel mai semnificativ octet (AD [31:24]) în timp ce C / BE [0] # se referă la cel mai puțin semnificativ octet (AD [7: 0]). Semnalele C / BE [3: 0] sunt controlate exclusiv de inițiator și sunt active în timpul tuturor fazelor de adresă și date.
 C / BE [3: 0] # Tipuri de comenzi	
0000 Întrerupe confirmarea 	
0001 Ciclu special 	
0010 Citire I / O 	
0011 I / O Write 	
0100 Rezervat 	
0101 Rezervat 	
0110 Citire memorie 	
0111 Memorie Scriere 	
1000 rezervat 	
1001 Rezervat 	
1010 Configurare citită 	
1011 Configurare Scriere 	
1100 Citire memorie multiplă 	
1101 Ciclul de adresă dublă 	
1110 Linie de citire a memoriei 	
1111 Scriere de memorie și invalidare	
  • PAR: paritatea se aplică semnalelor AD [31: 0] C / BE [3: 0] # și PAR. Paritate înseamnă că există un număr par de 1 între semnalele AD [31: 0] C / BE [3: 0] # și PAR. Semnalul PAR are același timp ca semnalele AD [31: 0], dar este întârziat cu un ciclu pentru a permite mai mult timp pentru calcularea parității.

Pin de control al dispozitivului (interfață)

  • FRAME #: cadrul ciclului este adus de inițiator pentru a semnaliza începerea unei noi tranzacții. Faza de adresă începe în timpul primului ciclu de ceas util după tranziția înaltă-joasă a semnalului FRAME #. Dacă inițiatorul intenționează să inițieze o tranzacție cu o singură fază de date, va ridica din nou semnalul FRAME # după un singur ciclu de ceas. Dacă există mai multe faze de date, inițiatorul va menține semnalul FRAME # scăzut până la ultima fază de date. Dacă încetarea unei tranzacții este implementată de un dispozitiv master, semnalul FRAME # este ridicat în timpul ultimei faze de date, dacă în schimb terminarea unei tranzacții este comandată de o țintă (slave), atunci inițiatorul continuă să mențină scăzut FRAME # semnal până la sfârșitul tranzacției.
  • IRDY #: Semnalul pregătit pentru inițiator este redus de inițiator ca o indicație că este gata să finalizeze faza de date curentă a tranzacției. În timpul fazelor de scriere indică faptul că inițiatorul a trimis date valide pe pinii AD [31: 0]. În timpul citirilor indică faptul că inițiatorul este gata să accepte date de la pinii AD [31: 0]. Odată afirmat, inițiatorul păstrează IRDY # scăzut până când TRDY # este dezactivat pentru a finaliza transferul sau ținta folosește semnalul STOP # pentru a termina fără a efectua faza de date. IRDY # permite inițiatorului să introducă stări de așteptare, dacă este necesar, pentru a încetini transferul de date.
  • TRDY #: semnalul pregătit pentru țintă este dezactivat de țintă ca o indicație că este capabil să finalizeze faza de date curentă a tranzacției. În timpul scrierilor indică faptul că ținta este gata să accepte date pe pinii AD [31: 0]. În timpul citirii, indică faptul că ținta are date valide pe pinii AD [31: 0]. Odată afirmat, ținta menține TRDY # scăzut până când IRDY # scade pentru a finaliza transferul. TRDY # permite țintei să introducă stări de așteptare, dacă este necesar, pentru a încetini transferul de date.
  • STOP #: semnalul STOP # este coborât de către țintă pentru a cere inițiatorului să încheie tranzacția în curs. În cazul în care ținta are nevoie de mult timp pentru a răspunde tranzacției, acesta poate utiliza semnalul STOP # pentru a suspenda tranzacția, astfel încât autobuzul să poată fi utilizat pentru alte tranzacții între timp. Când ținta încheie o tranzacție fără nicio fază de date, se spune că a fost reîncercată. Dacă una sau mai multe faze de date sunt finalizate înainte ca ținta să încheie tranzacția, se spune că a avut loc o deconectare. Reîncercările sau deconectarea semnalează inițiatorului că trebuie să revină mai târziu pentru a încerca să finalizeze din nou tranzacția. În cazul unei erori fatale, cum ar fi o problemă hardware, ținta poate utiliza STOP # și DEVSEL # pentru a semnala o întrerupere anormală a transferului pe autobuzul numit avort țintă. Inițiatorul poate utiliza ținta de avort pentru a semnala software-ului sistemului că a fost identificată o eroare fatală.
  • LOCK #: semnalul de blocare poate fi afirmat de un inițiator pentru a solicita acces exclusiv pentru a efectua mai multe tranzacții cu o țintă. Împiedică alți inițiatori să modifice adresele blocate, astfel încât inițiatorul care a afirmat blocarea să își poată încheia tranzacția. Doar o regiune specifică de cel puțin 16 octeți din adresele țintă este blocată pentru acces exclusiv. În timp ce LOCK # este afirmat, alte tranzacții neexclusive pot continua cu adrese care nu sunt blocate în prezent, dar orice acces neexclusiv la spațiul de adresă blocat al țintei va fi refuzat printr-o reîncercare. Semnalul LOCK # este destinat să fie utilizat de dispozitivele bridge (de exemplu, ASIC-uri?) Pentru a preveni blocaje (multe procese așteaptă alte procese, nimeni nu își termină activitatea din cauza lipsei de informații care trebuie să sosească din alte procese și vă aflați într-un impas ).
  • IDSEL: Semnalul de selectare a dispozitivului de inițializare este utilizat ca selector de cipuri în timpul tranzacțiilor de citire și scriere a configurației PCI. IDSEL este afirmat de sistemul PCI și este unic pentru fiecare slot PCI. Acest lucru permite mecanismului de configurare PCI să localizeze adresa fiecărui dispozitiv PCI din sistem. Un dispozitiv PCI este selectat dintr-un ciclu de configurare numai dacă IDSEL este ridicat, AD [1: 0] sunt "00" (indicând un ciclu de configurare de tip 0) și comanda prezentă pe semnalele C / BE [3: 0] # în timpul faza de adresă este fie o „configurare citită”, fie o „configurare scriere”. Semnalele AD [10: 8] pot fi utilizate pentru a selecta de la 1 la 8 funcții din dispozitivul PCI. Semnalele AD [7: 2] selectează configurații specifice de registre în cadrul funcțiilor și dispozitivelor.
  • DEVSEL #: semnalul de selectare a dispozitivului este afirmat la scăzut activ de către ținta PCI atunci când își detectează adresa pe magistrala PCI. DEVSEL # poate fi afirmat de una, două sau trei ori după faza de adresă. DEVSEL # trebuie activat cu prioritate atunci când, la marginea ceasului, este activat semnalul TRDY #. Odată activat DEVSEL # nu poate fi dezactivat până când ultima fază de date nu este finalizată sau ținta efectuează un avort țintă (sclav). Dacă inițiatorul nu primește un DEVSEL activ #, încetează tranzacția în sensul întreruperii master.

Pinuri de arbitraj (numai pentru inițiator)

  • REQ #: Semnalul de solicitare este utilizat de un dispozitiv PCI pentru a solicita utilizarea magistralei. Fiecare dispozitiv PCI are propriul său semnal REQ # unic. Arbitrul din sistemul PCI primește semnalele REQ # de la fiecare dispozitiv. Este important ca acest semnal să fie în condiții de tri-stare, în timp ce semnalul RST # este afirmat pentru a preveni blocarea sistemului. Acest semnal este implementat numai pe dispozitive capabile să fie inițiatori.
  • GNT #: Semnalul de acordare indică faptul că a fost acordată o cerere de la un dispozitiv PCI de utilizare a magistralei. Fiecare dispozitiv PCI are propriul său semnal GNT # unic de la arbitrul sistemului PCI. Dacă un semnal GNT # este activ în timpul unui ciclu de ceas, atunci dispozitivul poate iniția o tranzacție în următorul ciclu de ceas, setând semnalul FRAME #. Acest semnal este implementat numai pe dispozitive capabile să fie inițiatori.

Eroare la raportarea pinului

  • PERR #: Semnalul de eroare de paritate este utilizat pentru a raporta erorile de paritate pe date în timpul tuturor tranzacțiilor PCI, cu excepția „buclelor speciale”. PERR # este dezactivat la două perioade de ceas după faza de date conținând erori de paritate. Este dezactivat pentru cel puțin un ciclu de ceas. PERR # este partajat între toate dispozitivele PCI și este controlat de un driver tri-stare. Un rezistor de tragere asigură păstrarea semnalului într-o stare inactivă atunci când niciun dispozitiv nu îl folosește. După ce PERR # a fost dezactivat, un ciclu de ceas trebuie să fie resetat la nivel înalt înainte de a fi afirmat printr-o tri-stare pentru a restabili semnalul la starea sa inactivă. Acest lucru asigură faptul că semnalul nu rămâne scăzut în următorul ciclu din cauza creșterii lente a marginii cauzată de tragere.
  • SERR #: semnalul de eroare de sistem este utilizat pentru a raporta erori de paritate, erori de date în timpul unui ciclu special sau alte erori de sistem fatale. SERR # este partajat între toate dispozitivele PCI și este afirmat doar ca un semnal de drenaj deschis (este declanșat sau tri-stare de un dispozitiv PCI, dar niciodată nu este afirmat ridicat). Este activat sincronizat cu CLK, dar când este eliberat, acesta va reveni asincron la un nivel ridicat printr-un rezistor de tragere.

Pin de întrerupere

  • INTA #, INTB #, INTC #, INTD # - Semnalele de întrerupere sunt scăzute de dispozitivele PCI pentru a necesita atenție de la driverele de software aferente. Acestea sunt știfturi definite ca „sensibile la nivel” și sunt setate la un nivel scăzut ca semnale de golire deschise. Odată setate, semnalele INTx # vor continua să fie păstrate de dispozitivele PCI până când driverul software al dispozitivului PCI în cauză satisface cererea în așteptare. Un dispozitiv PCI care conține o singură funcție ar trebui să utilizeze numai INTA #. Dispozitivele multifuncționale (de exemplu carduri care funcționează atât pentru conectarea la o rețea LAN, cât și de la un modem) pot utiliza mai multe linii INTx #. Un dispozitiv cu o singură funcție folosește INTA #, un dispozitiv cu două funcții folosește INTA # și INTB # și așa mai departe. Toți driverele de dispozitiv PCI trebuie să poată partaja un nivel de întrerupere cu alte dispozitive prin vectorizarea întreruperii.

Pinii de suport pentru cache (opțional)

Acești pini au fost proiectați pentru a vă permite să implementați o memorie cache pe o magistrală PCI. Transferă informații între pod / cache și țintă cerere de memorie. Dacă o tranzacție are ca rezultat o lovitură pe o linie cache proastă (murdară), podul / cache va raporta „snoop backoff” către țintă. Ca rezultat, ținta va reîncerca linia cache până când bridge / cache finalizează operațiunea de scriere. Țintei i se va permite acum să acceseze memoria cache pentru a-și finaliza operațiunea. Acești pini de suport pentru cache sunt foarte rar implementați în sistemele PCI moderne. Din motive de performanță, memoria cache este de obicei cuplată la o magistrală care comunică cu un procesor care rulează la frecvențe mai mari decât magistrala PCI.

  • SBO #: Semnalul de retragere snoop indică o lovitură la o linie modificată atunci când este afirmată. Când SBO # este dezactivat și SDONE este afirmat, acesta indică rezultatul căutării „CLEAN”.
  • SDONE: Semnalul snoop done indică starea unei căutări pentru datele de conectare curente. Când este anulat, indică rezultatul unei căutări care este încă în așteptare. Când este afirmat, indică faptul că căutarea este completă.

Pini suplimentari

  • PRSNT [1: 2] #: semnalele actuale sunt utilizate în două scopuri:
    • 1 - pentru a indica faptul că o carte este prezentă fizic
    • 2 - pentru a indica cererea de putere de către un consiliu.

Aceste semnale sunt statice, care sunt referite la masă sau lăsate neconectate pe placă. Tabelul următor prezintă codurile diferitelor semnale.

 PRSNT1 # PRSNT2 # Configurare pentru placa de completare	
Deschis Deschis Nu există tablou prezent 	
Placă deschisă la sol prezentă, maxim 25 W 	
Placă de masă deschisă prezentă, maxim 15 W 	
Masă de masă prezentă, 7,5 W maxim	
  • CLKRUN #: semnalul de ceas în funcțiune este opțional și este utilizat pentru a facilita oprirea semnalului CLK pentru economisirea energiei. CLKRUN # este destinat mediilor de tip laptop unde consumul de energie este critic. Nu este definit în conectorul PCI utilizat pentru cardurile normale. CLKRUN # este acționat ca un semnal de golire deschis. Sistemul PCI setează CLKRUN # scăzut atunci când propagă un semnal CLK normal. Eliberați CLKRUN # astfel încât să poată pluti la un nivel ridicat printr-un rezistor pull-up ca o cerere de oprire a CLK pentru un anumit dispozitiv PCI. Dispozitivul poate seta ulterior CLKRUN # low pentru a spune sistemului că ar trebui să continue să conducă CLK sau să permită CLKRUN # să rămână ridicat ca o confirmare că CLK poate fi oprit. Dacă CLK a fost oprit și un dispozitiv PCI dorește să restabilească operațiunile normale, acesta stabilește CLKRUN # ca o cerere ca sistemul să înceapă să furnizeze CLK din nou.
  • M66EN: Semnalul de activare de 66 MHz este lăsat deschis sau deconectat pe cardurile care acceptă operațiuni CLK la 66 MHz și se referă la masă pe carduri care acceptă operații cu un CLK doar la 33 MHz. Sistemele de 66 MHz au o rezistență de tracțiune - sus pe acest semnal pentru a detecta dacă placa este capabilă să funcționeze la 66 MHz. Dacă semnalul este ridicat, este furnizat un CLK cu o frecvență maximă de 66 MHz, dacă este scăzut, este furnizat un CLK cu o frecvență maximă de 33 MHz. semnal către pământ. Operazioni a 66 MHz avranno luogo solo se sia il sistema che la scheda supportano questa frequenza.

Esempi di diagrammi temporali del bus PCI

Transazione di una lettura (read) sul bus PCI

 1__ 2__ 3__ 4__ 5__ 6__ 7__ 8__ 9__
CLK __| |__| |__| |__| |__| |__| |__| |__| |__|
          ____ ____________
FRAME# |___________________________________|
               _____ ____ _____ ____ __________
AD ----<_____>-----<____><_____><____><__________>------
             Address Data1 Data2 Data3
               _____ __________________________________
C/BE# ----<_____><__________________________________>------
             Bus-Cmd BE#'s
          __________ _____ ______
IRDY# |_______________________| |_____|
          ________________ _____ ______
TRDY# |_____| |_________________|
          ________________ ______
DEVSEL# |_____|_____________________________ 

|<--->|<--------->|<--------->|<--------->|

 Address Data Data Data
              Phase Phase Phase Phase
              |<--------------------------------------->|
                            Bus Transaction

Descrizione ciclo per ciclo di una transazione di lettura (read) del bus PCI

  • Ciclo 1: il bus è nello stato di idle (non passa nessuna informazione).
  • Ciclo 2: l'initiator asserisce un indirizzo valido e dispone un comando di lettura sui segnali C/BE#, questa è la address phase.
  • Ciclo 3: l'initiator mette in condizione di tri-state l'indirizzo in modo che il target possa cominciare a fornire i dati da leggere. L'initiator adesso imposta valide informazioni di byte enables (abilitazione dei vari byte di dati trasmessi) sui segnali C/BE#. L'initiator asserisce IRDY# basso per indicare che è pronto a catturare dati in lettura. Il target asserisce DEVSEL# basso (in questo ciclo o nel prossimo) come acknowledgment (riconoscimento di operazione completata) che ha positivamente decodificato l'indirizzo. Il target porta TRDY# alto per indicare che non sta ancora fornendo dati validi in lettura.
  • Ciclo 4: il target fornisce dei dati validi e asserisce TRDY# basso per indicare all'initiator che i dati sono validi. IRDY# e TRDY# sono tutti e due bassi durante questo ciclo, questo comporta che il trasferimento di dati abbia luogo. L'initiator cattura i dati. Questa è la prima data phase.
  • Ciclo 5: il target deasserisce TRDY#alto per indicare che necessita di più tempo per preparare il prossimo trasferimento di dati.
  • Ciclo 6: la seconda data phase avviene quando sia IRDY# che TRDY# sono bassi. L'initiator cattura i dati forniti dal target.
  • Ciclo 7: il target provvede a fornire dei dati validi per la terza data phase, ma l'initiator indica che non è pronto deasserendo IRDY# alto.
  • Ciclo 8: l'initiator riasserisce IRDY# basso per completare la terza data phase. L'initiator cattura i dati forniti dal target. L'initiator porta FRAME# ad alto indicando che è l'ultima data phase (master termination).
  • Ciclo 9: FRAME#, AD e C/BE# sono in modalità tri-state, mentre IRDY# TRDY# e DEVSEL# sono portati ad inattivi alti per un ciclo precedente prima di essere messi in modalità tri-state.

Transazione di una scrittura (write) sul bus PCI

 1__ 2__ 3__ 4__ 5__ 6__ 7__ 8__ 9__
  CLK __| |__| |__| |__| |__| |__| |__| |__| |__|
            ____ ________________________
  FRAME# |_______________________|
                 _____ ____ ____ ____ _____________
  AD ----<_____><____><____><____><_____________>---------
                Address Data1 Data2 Data3
                _____ ____ ____ ______________________
 C/BE# ----<_____><____><____><______________________>------
              Bus-Cmd BE-1 BE-2 BE-3
           __________ _____ ______
 IRDY# |___________| |_________________|
           __________ _________________ ______
 TRDY# |___________| |_____|
            ________________ ______
  DEVSEL# |_____|_____________________________|
  
                |<--->|<--->|<--->|<--------------------->|
             Address Data Data Data
               Phase Phase Phase Phase
              |<--------------------------------------->|
                            Bus Transaction

Descrizione ciclo per ciclo di una transazione in scrittura

  • Ciclo 1: il bus è nello stato di idle (non passa nessuna informazione).
  • Ciclo 2: l'initiator asserisce un indirizzo valido e dispone un comando di scrittura sui segnali C/BE#, questa è la address phase.
  • Ciclo 3: l'initiator dispone dati validi da scrivere ei segnali di byte enable (C/BE#). L'initiator asserisce IRDY# basso per indicare che dati validi da scrivere sono disponibili. Il target asserisce DEVSEL# basso come acknowledgment (riconoscimento di operazione completata) per aver positivamente decodificato l'indirizzo (il target non può asserire TRDY# prima di DEVSEL#). Il target porta TRDY# basso per indicare che è pronto a catturare i dati. La prima data phase avviene quando sia IRDY# che TRDY# sono bassi. Il target cattura i dati in scrittura.
  • Ciclo 4: l'initiator fornisce nuovi dati e byte enables (C/BE#). La seconda data phase avviene quando sia IRDY# che TRDY# sono bassi. Il target cattura i dati in scrittura.
  • Ciclo 5: l'initiator deasserisce IRDY# indicando che non è pronto a fornire i prossimi dati. Il target deasserisce TRDY# per indicare che non è ancora pronto a catturare i dati.
  • Ciclo 6: l'initiator fornisce i prossimi dati validi e asserisce IRDY# basso. L'initiator porta FRAME# alto indicando che è la data phase finale (master termination). Il target non è ancora pronto e mantiene TRDY# alto.
  • Ciclo 7: il target non è ancora pronto e mantiene TRDY# alto.
  • Ciclo 8: il target diventa pronto e asserisce TRDY# basso. La terza data phase comincia non appena sia IRDY# che TRDY# sono bassi. Il target cattura i dati in scrittura.
  • Ciclo 9: FRAME#, AD e C/BE# sono settati in modalità tri-state, mentre IRDY#, TRDY# e DEVSEL# sono portati a inattivi alti per un ciclo precedente ad essere messi in modalità tri-state.

Note

  1. ^ PCI (Peripheral Component Interconnect) , su tech-faq.com . URL consultato il 1q marzo 2016 .

Bibliografia

Altri progetti

Collegamenti esterni

Controllo di autorità LCCN ( EN ) sh2001003078 · BNF ( FR ) cb13556158h (data)
Informatica Portale Informatica : accedi alle voci di Wikipedia che trattano di informatica