Sunteți pe pagina 1din 11

Magistrala PCI

Iovi Alexandru , An IV IS
Magistrala pe 32 de bit PCI a fost introdusă de Intel în 1993 în sistemele dotate cu microprocesor
Pentium. Această magistrală oferă o serie de avantaje faţă de magistrala ISA.
 viteza este de 33 MHz
 capabilităţi de PnP îmbunătăţite
 permite adminstrarea de magistrală (bus mastering) mai eficient – permite
perifericelor să preia controlul magistralei şi să facă transfer direct de date
fărăintervenţiamicroprocesorului
De la introducerea magistralei PCI, numărul de locaţii în PC (sloturi) s-a redus. Iniţial au
coexistat ambele magistrale (PCI şi ISA), dar recent cele ISA au dispărut. Deşi sloturile PCI sunt
mai puţine, o serie de periferice ce erau instalate pe ISA (hard disk, port serial, port paralel,
sunet, video) au acum interfeţele pe placa de bază, astfel încât sloturile PCI disponibile permit o
extensibilitate mare de periferice. Majoritatea plăcilor de achiziţii de date se instalează pe
magistrala PCI.
Istorie

Munca pe PCI a început la Arhitectura Intel Laboratorul de Dezvoltare în cca. 1990. O echipă de
ingineri Intel (compusă în principal din ingineri ADL) definite de arhitectură și a dezvoltat o
dovadă de conceptul chipset și platforma (Saturn) parteneriatul cu echipele de compania sisteme
PC desktop și produse core logic organizatiilor. Arhitectura PCI original echipa incluse,
printrealtele, Dave Carson, Norma Rasmussen, Brad Hosler, Ed Solari, Bruce Tineri, Gary
Solomon, Ali Oztaskin, Tom Sakoda, Bogat Haslam, Jeff Rabe, și Steve Fischer.
PCI (Peripheral Component Interconnect) a fost imediat pus la utilizarea în servere, înlocuirea
MCA, EISA ca server magistrală de extensie de alegere. În PC-uri mainstream, PCI era mai lent
pentru a înlocui VESA Local Bus (VLB), și nu avea semnificatie pătrunderea pe piață până la
sfârșitul lui 1994 în a doua generație de PC-uri Pentium. Prin 1996 era VLB disparuse, iar
producătorii au adoptat calculatoare echipate pentru PCI 486. EISA continuă să fie folosită
împreună cu PCI prin 2000. Apple Computer adopta PCI pentru calculatoarele profesionale
Power Macintosh în mijlocul anului 1995.
Mai târziu revizuiri ale PCI adauga noi caracteristici și îmbunătățiri ale performanței, inclusiv a
standardului 66 MHz 3.3 V și 133 MHz PCI-X, și adaptarea de semnalizare PCI pentru alte
factorii de formă. Ambele PCI-X 1.0b și PCI-X 2.0 sunt compatibile cu unele standarde PCI.
PCI-SIG introduse serial PCI Express în 2004 iar în același timp au redenumit PCI în PCI
convenționale. De atunci, producătorii de plăci au inclus progresiv mai puține sloturi PCI
convenționale în favoarea noului standard. Specificații hardware convenționale. Aceste
specificații reprezintă cele mai comune versiuni PCI utilizate în PC-uri normale:

 transferuri de 33 MHz cu ceas sincron rată maximă de transfer de 133 MB/s (133 mb pe
secundă) pentru lățime 32-bit (33,33 MHz x 32 biți ÷ 8 biți/byte = 133 MB/s)
 32-Bit lățime bus
 32 sau 64 de biți spațiu pentru adrese de memorie (4 GB sau 16 hexabyte)
 32-Bit I/O spațiu port
 256-Byte (per dispozitiv) spațiu de configurare
 5-volt semnalare

De asemenea, specificațiile PCI oferă opțiuni pentru semnalizare de 3,3 V, lățime bus 64-bit, și
clocking de 66 MHz, dar acestea nu sunt des întâlnite în afară de PCI-X pe plăci de bază server.
Configurare automata

PCI oferă spații de memorie separate și spații de adrese I / O pentru familia de procesoare x86,
respectiv 64 și respectiv 32 de biți. Adresele din aceste spații de adrese sunt atribuite prin
software. Un al treileaspațiu de adrese, numitSpațiul de configurare PCI, care utilizează o
schemă de adresarefixă, permite software-uluisă determine cantitatea de memorieșispațiul de
adrese I / O necesarpentrufiecaredispozitiv. Fiecaredispozitivpoatesolicitapână la șase zone de
spațiu de memoriesauspațiu de port I / O prinintermediulregiștrilor de spațiu de configurare.

Într-un sistemtipic, firmware-ul (sausistemul de operare) interogheazătoatemagistralele PCI la


pornire (prin PCI Configuration Space) pentru a aflacedispozitive sunt prezenteșiceresurse de
sistem (spațiu de memorie, spațiu I / O, linii de întrerupereetc. )fiecare are nevoie.
Apoialocăresurseleși le spunefiecăruidispozitivceestealocareasa.
Spațiul de configurare PCI conține, de asemenea, o cantitatemică de
informațiidespretipuldispozitivului, care ajută un sistem de operaresăaleagădriverele de
dispozitivpentruacestasaucelpuținsăaibă un dialog cu un utilizatordespreconfigurațiasistemului.
Dispozitivele pot avea un ROM de bord care conține cod executabilpentruprocesoarele x86 sau
PA-RISC, un driver Open Firmware sau un driver EFI. Acestea sunt în mod
obișnuitnecesarepentrudispozitiveleutilizate la pornireasistemului, înainte de
încărcareasistemelor de operare de cătredriverele de dispozitiv.
În plus, existăși PCI Latency Timers, care sunt un mecanismpentrudispozitivele PCI Bus-
Mastering care permit partajareacorectă a magistralei PCI. "Târg", înacestcaz,
înseamnăcădispozitivele nu vorutiliza o parteatât de mare din lățimea de bandă a magistralei PCI
disponibile, încâtaltedispozitive nu sunt capabilesăobținălucrulnecesar. Reținețicăacestlucru nu
estevalabilpentru PCI Express.

Modul în care funcționeazăestecăfiecaredispozitiv PCI care poatefuncționaînmodulautobuz


master estenecesarpentruimplementareaunuicronometrunumit Latency Timer, care
limiteazătimpul pe care dispozitivulîlpoateține pe magistrala PCI. Cronometrulîncepe de la
momentulîn care dispozitivuldobândeșteproprietatea cu autobuzulși se numără la rata ceasului
PCI. Cândcontorulajunge la zero, dispozitivulesteobligatsăeliberezemagistrala. Dacăniciun alt
dispozitiv nu așteaptăsădețină un autobuz, poatepurșisimplusă-l captureze din nou pe
autobuzșisătransferemaimulte date.
Întreruperile

Dispozitiveletrebuiesăurmeze un protocol astfelîncâtliniile de întreruperesăpoată fi partajate.


Circuitul PCI include patrulinii de întrerupere, toatedisponibilepentrufiecaredispozitiv. Cu
toateacestea, ele nu sunt cablateînparalel, așa cum sunt celelaltelinii de autobuz PCI.
Pozițiileliniilor de întrerupere se rotescîntresloturi, astfelîncâtceeaceaparunuisingurdispozitiv ca
linia INTA # este INTB # la următoareași INTC # la ceaulterioară. Dispozitivele cu o
singurăfuncțieutilizează INTA # pentrusemnalizareaîntreruperii,
astfelîncâtîncărcareadispozitivuluiestedistribuităîn mod egalîntrecelepatrulinii de
întreruperedisponibile. Acestlucruameliorează o problemăcomună cu întreruperile de partajare.

Cartografierealiniilor de întrerupere PCI pe liniile de întrerupere a sistemului,


prinintermediulpoduluigazdă PCI, depinde de implementare. Codul BIOS specific
platformeiestemenitsăștieacestlucrușisetațicâmpul "linia de întrerupere" înspațiul de configurare
al fiecăruidispozitivindicând la care IRQ esteconectat.
Liniile de întrerupere PCI sunt declanșate la nivel. Acestlucru a fost ales
pestedeclanșareamarginilorpentruaobține un avantajatuncicând se întreține o liniecomună de
întrerupereșipentrurobustețe: întreruperiledeclanșate de margini sunt ușor de pierdut.
Revizuirileulterioare ale specificației PCI adaugăsuportpentruîntreruperilesemnalate de mesaje.
Înacestsistem, un dispozitivsemnaleazănevoia de serviciuprinefectuareauneiscrieri de memorie,
maidegrabădecâtprinafirmareauneilinii dedicate. Acestlucruatenueazăproblemalipseiliniilor de
întrerupere. Chiardacăvectorii de întrerupere sunt încăpartajați, nu suferăprobleme de partajare a
întreruperilordeclanșate la nivel. De asemenea, rezolvăproblema de rutare,
deoarecescriereamemoriei nu estemodificatăimprevizibilîntredispozitivșigazdă. Încele din urmă,
deoarecesemnalareamesajeloresteînbandă, rezolvăuneleprobleme de sincronizare care pot apărea
cu linii de întrerupereînregistrateși out-of-band.
PCI Express nu are linii de întreruperefizică.
Utilizeazăîntreruperilesemnalateprinmesajeexclusiv.
Specificații hardware
Operațiuni cu magistrala PCI

Traficulpe PCI constădintr-o serie de tranzacții cu magistrala PCI. Fiecaretranzacțieconstădintr-o


fază de adresăurmată de una saumaimulte faze de date. Direcțiafazelor de date poate fi de la
inițiator la obiectiv (tranzacție de scriere) sau invers (tranzacțiecitită), dartoatefazele de date
trebuiesă fie înaceeașidirecție. Oricaredintrepărțipoateîntrerupesauoprifazele de date înorice
moment. (Un exempluobișnuiteste un dispozitiv PCI cu performanțescăzute care nu
acceptătranzacții de spargereșiopreșteîntotdeauna o tranzacțiedupă prima fază de date.)

Oricedispozitiv PCI poateiniția o tranzacție. Înprimulrând,


trebuiesăsolicitepermisiuneaunuiarbitru de bus PCI de pe placa de bază.
Arbitrulacordăpermisiuneaunuidispozitiv solicitant.
Inițiatorulinițiazăfazaadreseiprintransmitereauneiadrese pe 32 de biți plus un cod de comandă pe
4 biți, apoiașteaptă ca o țintăsărăspundă. Toatecelelaltedispozitiveexamineazăaceastăadresă, iar
una dintreelerăspunde la câtevacicluriulterioare.

Adresarea pe 64 de bițiesterealizatăutilizând o fază de adresăîndouăetape.


Initiatorultransmiteemisiunile de biți de 32 de adrese, însoțite de un cod special de
comandăpentru "ciclul de adresădublă". Dispozitivele care nu acceptăadresarea pe 64 de biți nu
pot răspunde la acel cod de comandă. Înurmătorulciclu, inițiatorultransmitebiții de adresă de
mare 32, plus codul de comandă real. Tranzacțiaoperează identic din acel moment. Pentru a
asiguracompatibilitatea cu dispozitive PCI pe 32 de biți, esteinterzisăutilizareaunuiciclu de
adresădublă, dacă nu estenecesar, adicădacăbiții de adresă de înaltăordine sunt zero.

Întimpcemagistrala PCI transferă 32 de biți pe fază de date, inițiatorultransmite 4 semnale de


activare a byte-uluiscăzut, indicândceocteți pe 8 bițitrebuieconsiderațisemnificativi. În special, o
scrieretrebuiesăafectezenumaioctețiiactivi din dispozitivul PCI destinație. Ele au o
importanțăredusăpentrucitireamemoriei, darcitirile I / O arputeaaveaefectesecundare. Standardul
PCI permiteîn mod explicit o fază de date fărăactivare de octeți, care trebuiesă se comporte ca o
opțiune.
Spațiile de adrese PCI

PCI aretreispații de adrese: memorie, adresă I / O șiconfigurație.

Adresele de memorie sunt de 32 de biți (opțional 64 de biți) înmărime, suportămemorareaîn


cache și pot fi tranzacții de spargere.
Adresele I / O sunt compatibile cu spațiul de adrese al portului I / O al arhitecturii Intel x86.
Deșispecificațiabusului PCI permitetranzacții de tip burst înoricespațiu de adrese,
majoritateadispozitivelorîlsuportănumaipentruadresele de memorieși nu pentru I / O.
Încele din urmă, spațiul de configurare PCI oferăacces la 256 octeți de registre de
configurarespecialepentrufiecaredispozitiv PCI. Fiecare slot PCI obținepropriul interval de
adresepentruspațiul de configurare. Regiștrii sunt utilizațipentru a
configuramemoriadispozitivelorșiintervalele de adrese I / O pe care artrebuisă le
răspundăinițiatorilor de tranzacții. Când un computer estepornitpentru prima oară,
toatedispozitivele PCI răspundnumai la accesărilelor din spațiul de configurare. BIOS-ul
computeruluiscaneazădispozitiveleși le atribuiedomeniile de memorieșiadrese de I / O.

Dacă o adresă nu esterevendicată de nici un dispozitiv, faza de adresăainițiatoruluitranzacției se


vaîntrerupe, determinândinițiatorulsăîntrerupăoperația. Încazulcitirilor, esteobișnuitsă se
furnizezetoțiceipentruvaloarea de citire a datelor (0xFFFFFFFF) înacestcaz. Prinurmare,
dispozitivele PCI încearcăîn general să evite
utilizareavalorilortuturorutilizatorilorînregistreleimportante de stare, astfelîncât o astfel de
eroaresăpoată fi ușordetectată de software.

Codurile de comandă PCI


Există 16 comenziposibile pe 4 biți, iar 12 dintreacestea sunt atribuite. Cu excepțiacicluluiunic
de adresăduală, bitulcelmaipuținsemnificativ al codului de comandăindicădacăurmătoarele faze
de date sunt citite (date trimise de la destinație la inițiator) sau date de scriere (date trimise de la
un inițiator la altul). Obiectivele PCI trebuiesăexaminezecodul de comandă, precum șiadresașisă
nu răspundă la fazeleadreselor care specifică un cod de comandăneacceptat.
Comenzile care se referă la linii de cache depind de reglareamărimiiliniei de cache a spațiului de
configurație PCI fiindconfiguratăcorespunzător; acestea nu pot fi utilizatedecâtdupăce au
fostefectuate.

0000: Întrerupețirecunoașterea
Aceastaeste o formăspecială de ciclu de citire implicit adresatăcontrolerului de întrerupere, care
returnează un vector de întrerupere. Câmpul de adresă pe 32 de bițiesteignorat. O
posibilăimplementareestegenerareaunuiciclu de recunoaștere a întreruperii pe o magistrală ISA
utilizând o punte de autobuz PCI / ISA. Aceastăcomandăestecompatibilă cu IBM PC; dacă nu
există un controler de întrerupere de stil Intel 8259 pe magistrala PCI, acestciclu nu
trebuiefolositniciodată.

0001: Ciclul special


Acestciclueste o scrierespecialăaevenimentelor de sistem pe care cardul PCI arputea fi interesat.
Câmpul de adresă al unuiciclu special esteignorat, daresteurmat de o fază de date care conține un
mesaj cu încărcăturăutilă. Mesajele definite înprezentanunțăcăprocesorul se oprește din anumite
motive (de exemplu, pentruaeconomisienergie). Niciundispozitiv nu răspundeniciodată la
acestciclu; esteîntotdeaunaterminat cu o abortare master dupăce a părăsitdatele de pe
magistralătimp de celpuțin 4 cicluri.

0010: Citește I / O
Aceasta face o citire din spațiul I / O. Toatecele 32 de biți ale adresei de citire sunt furnizate,
astfelîncât un dispozitivpoate (din motive de compatibilitate) săimplementezemaipuțin de 4
octețiînvaloare de registre I / O. Dacăoctetulpermite ca datele de solicitaresă nu se
încadrezeînintervalul de adreseacceptat de dispozitivul PCI (de ex., Un citire de 4 octeți de la un
dispozitiv care suportănumai 2 octeți de spațiu de adrese I / O), trebuieterminat cu o abortare a
destinației. Sunt permisemaimultecicluri de date, folosindordonarea burst liniară
(incrementaresimplă).
Standardul PCI descurajeazăutilizareaspațiului de intrare / ieșireîndispozitivenoi, preferând ca,
pe câtposibil, să fie realizatprinmapareaprincipală a memoriei.

0011: Scriere I / O
Aceastaefectuează o scriereînspațiul I / O.

010x:rezervat
Un dispozitiv PCI nu trebuiesărăspundă la un ciclu de adrese cu acestecoduri de comandă.

0110: Citeștememoria
Aceastaefectuează un ciclu de citire din spațiul de memorie. Deoarececelmai mic spațiu de
memorie pe care un dispozitiv PCI estepermissăîlimplementezeeste de 16 octeți,
ceidoibițiceimaipuținsemnificativi ai adresei nu sunt necesareîntimpulfazei de adresă;
informațiaechivalentăvaajungeîntimpulfazelor de date sub formă de semnaleselectate de octeți.
Înschimb, elespecificăordineaîn care trebuiereturnatedatele.Dacă un dispozitiv nu
acceptăcomandasolicitată, trebuiesăfurnizezeprimulcuvântșiapoisă se deconecteze.
Dacă un spațiu de memorieestemarcat ca "prefetchable", dispozitivulțintătrebuiesă ignore
semnalele de selectareaocteților de pe o memoriecititășisăîntoarcăîntotdeauna 32 de bițivalabili.

0111: Scrierememorie
Aceastafuncționeazăîn mod similar cu citireamemoriei. Semnalele de selectareaocteților sunt
maiimportanteîntr-o scriere, deoareceoctețiineselectați nu trebuiesă fie scriseînmemorie.
În general, înregistrările PCI sunt mairapidedecâtcitirile PCI, deoarece un
dispozitivpoatetamponadatele de scriereprimiteșipoateeliberamai rapid magistrala. Pentru o
citire, trebuiesăîntârziefaza de date pânăcânddatele au fostpreluate.

100x: rezervat
Un dispozitiv PCI nu trebuiesărăspundă la un ciclu de adrese cu acestecoduri de comandă.

1010: ConfigurareCitire
Acestlucrueste similar cu o citire I / O, darcitește din spațiul de configurare PCI. Un
dispozitivtrebuiesărăspundănumaidacăcei 11 bițimici ai adreseispecifică o
funcțieșiînregistreazăimplementareaacesteiașidacă se afirmăsemnalul special IDSEL. Trebuiesă
ignore cei 21 de bițiînalți. Declanșările Burst (folosindincrementarealiniară) sunt
permiseînspațiul de configurare PCI.
Spredeosebire de spațiul I / O, registrele standard de configurare PCI sunt definite astfelîncâtsă
nu perturbeniciodatăstareaaparatului. Este posibil ca un dispozitivsăaibăregistre de spațiu de
configuraredincolo de standardul 64 de octeți care au cititefectesecundare, daracestlucruesterar.
Accesul la spațiul de configurare are adeseacâtevacicluri de întârzierepentru a permiteliniilor
IDSEL să se stabilizeze, ceeace le face mai lent decâtalteforme de acces. De asemenea, un acces
la spațiul de configurarenecesitămaidegrabă o operațieînmaimulteetapedecât o
singurăinstrucțiune de mașină. Astfel, celmai bine estesă le evitațiîntimpuloperării de rutină a
unuidispozitiv PCI.
1011: ConfigurareScrieți
Aceastafuncționeazăîn mod analog cu o citire a configurației.

1100: memoriecititmaimulte
Aceastăcomandăesteidentică cu o citiregenerică a memoriei, dar include sugestiacă o
explozielungă a citiriiva continua dincolo de sfârșitulliniei cache actuale,
iarțintăartrebuisăprefacăîn interior o cantitate mare de date. O
țintăesteîntotdeaunapermisăsăconsidereacestlucru un sinonimpentru o citiregenerică a memoriei.

1101: Ciclu de adresădublă


Cândaccesați o adresă de memorie care solicită

S-ar putea să vă placă și