Image may be NSFW.
Clik here to view.
Magistrale
Într-un calculator, procesorul “discută” cu un dispozitiv periferic printr-o cale de comunicație numită magistrală. Sau bus, cum ar zice americanul, care ne face să ne imaginăm un fel de autobuz care transportă biții de colo-colo.
De fapt, tradițional vorbind, o magistrală era formată dintr-un număr de “fire” (trasee de cablaj imprimat) ce transmiteau fizic semnalele electrice care transportau biții între mai multe componente ale calculatorului atașate la respectiva magistrală. De exemplu dacă aveam 8 trasee conductoare în cadrul magistralei, prin ele se transportau 8 biți în paralel, deci simultan. În zilele noastre noțiunea de magistrală are un sens mai larg: este orice sistem fizic» ce oferă din punct de vedere logic aceeași funcționalitate ca o magistrală electrică paralelă (definită mai sus).
Din 1981, când a văzut PC-ul lumina zilei, și până-n zilele noastre, au fost făurite mai multe tipuri de astfel de magistrale, cum ar fi ISA (Industry Standard Architecture – cei mai “bătrâni” o visează ca pe un cal breaz), EISA (Extended ISA), MCA (Micro Channel Architecture), VLB (VESA Local Bus), PCI (Peripheral Component Interconnect), PCI-X (eXtended PCI), AGP (Accelerated Graphics Port). Și, bineînțeles, contemporanul PCI Express (notat pe scurt ca PCI-E sau PCIe).
Principala diferență între toate tipurile astea de magistrale este dată de numărul de biți care pot fi transportați simultan și de frecvența de tact la care operează magistrala.
Magistrală | Frecvența tactului |
Număr biți per transfer |
Nr. transferuri per impuls de tact |
Rata maximă de transfer |
PCI | 33 MHz | 32 | 1 | 133 MB/s |
PCI | 66 MHz | 32 | 1 | 266 MB/s |
PCI | 33 MHz | 64 | 1 | 266 MB/s |
PCI | 66 MHz | 64 | 1 | 533 MB/s |
PCI-X 64 | 66 MHz | 64 | 1 | 533 MB/s |
PCI-X 133 | 133 MHz | 64 | 1 | 1066 MB/s |
PCI-X 266 | 133 MHz | 64 | 2 | 2132 MB/s |
PCI-X 533 | 133 MHz | 64 | 4 | 4266 MB/s |
AGP x1 | 66 MHz | 32 | 1 | 266 MB/s |
AGP x2 | 66 MHz | 32 | 2 | 533 MB/s |
AGP x4 | 66 MHz | 32 | 4 | 1066 MB/s |
AGP x8 | 66 MHz | 32 | 8 | 2133 MB/s |
Una din cele mai longevive magistrale este PCI, care datează din 1992. Numai că viteza maximă de 133 MB/s permisă de PCI-ul clasic în ziua de azi este doar o glumă dacă ne gândim la necesitățile aplicațiilor contemporane. Ca să poată fi conectate plăcile video mai noi, care mâncau lățime de bandă pe pâine, Intel a creat în 1997 magistrala AGP, degrevând magistrala PCI de traficul intens cu placa video. Dar și AGP-ul este depășit în zilele noastre de când a apărut, în 2004, PCI Express.
Este PCI Express o magistrală?
PCI Express (PCI-E sau PCIe) a fost creat pentru a satisface nevoile crescute de lățime de bandă nu doar ale plăcilor video ci și ale altor tipuri de periferice cum ar fi plăcile Gigabit Ethernet și controllerele RAID.
O deosebire importantă față de PCI este faptul că PCI-E nu este propriu-zis o magistrală din moment ce conectează doar două dispozitive. Spre deosebire de PCI, unde toate sloturile PCI standard de pe placa de bază sunt conectate la aceeași magistrală și deci împart aceeași cale fizică de transmitere a datelor, la PCI-E există o cale fizică distinctă de transmitere a datelor între fiecare slot PCI-E și chipset-ul plăcii de bază. Astfel traficul efectuat de un dispozitiv PCI-E nu consumă din lățimea de bandă disponibilă celorlalte dispozitive PCI-E.
Mai mulți biți simultan = viteză mai mare? Nu neapărat
Când s-a născut bătrâna magistrală ISA, în 1981, ea știa să transfere câte 8 biți simultan. Ulterior, în 1984, ea a fost extinsă ca să poată transfera și 16 biți simultan (dublând astfel viteza de transfer). Magistrala PCI a început prin a transfera 32 biți simultan și a ajuns să poată transfera și 64 biți simultan.
Constatăm cum în lumea calculatoarelor paralelismul a tot câștigat teren în ultimele decenii și astfel, urmând tendința firească de paralelizare a transferului datelor, de “lărgire” a căilor de comunicație, ne-am aștepta ca PCI-E să știe să transfere chiar mai mult de 64 biți simultan. Eroare maximă. Comunicația pe PCI-Express este serială. Adică bit cu bit.
Cum așa? Ce se întâmplă?
Explicația este următoarea: În decursul timpului, creșterea vitezei de transmisie a datelor s-a făcut nu doar prin paralelizarea transferului ci și prin creșterea frecvenței tactului la care operează magistrala. La valori mari ale frecvenței de tact, însă, interferențele magnetice » între traseele învecinate ale magistralei devin foarte pronunțate.
Image may be NSFW.
Clik here to view.
La valori mari ale frecvenței de tact, în afară de pericolul alterării biților din cauza interferențelor electromagnetice, mai apare încă un fenomen foarte deranjant, cauzat de faptul că fizic este imposibil ca traseele paralele care formează magistrala să aibă caracteristici electrice perfect identice (în primul rând din cauza lungimilor ușor diferite). Deși în cursul unui transfer toți biții sunt transmiși simultan de dispozitivul transmițător, biții transmiși prin traseele mai scurte vor ajunge înaintea celor transmiși pe traseele mai lungi și atunci dispozitivul de la destinație va trebui să aștepte sosirea tuturor biților. La frecvențe mari fenomenul devine deranjant pentru că timpii de așteptare devin comparabili cu timpii necesari transmisiei, performanța fiind serios afectată.
Image may be NSFW.
Clik here to view.
În astfel de condiții devine mult mai simplă implementarea unei magistrale seriale care utilizează doar două fire pentru transmisia de date (transmisia fiind de tip diferențial oferă o imunitate mult mai bună la interferențe electromagnetice) iar frecvența de operare a unei magistrale seriale poate fi mult mai mare decât cea a unei magistrale paralele pentru că nu mai apar probleme legate de interferența electromagnetică și de timpi de propagare diferiți. O altă diferență între comunicația serială și paralelă este că cea paralelă este de obicei half-duplex (aceleași trasee sunt folosite atât pentru transmisia cât și pentru recepția de date) iar cea serială este full-duplex (se folosesc seturi de trasee diferite pentru transmisia respectiv pentru recepția datelor).
Așa se face că prin utilizarea unei transmisii seriale în PCI Express s-au obținut performanțe mai bune decât ar fi fost posibile folosind o magistrală paralelă clasică.
PCI Express e ca o autostradă
Ziceam că PCI Express folosește o transmisie serială și este full-duplex, utilizând o pereche de fire pentru fiecare din cele două sensuri de transmisie. În engleză cele două perechi de fire sunt denumite lane – nu știu să existe o traducere consacrată în română. Putem să-i zicem bandă, pistă, linie etc. Voi folosi termenul de bandă pentru că seamănă cu o șosea cu o bandă pe sens.
O magistrală PCI Express cu o singură bandă se numește PCI Express x1. La fel cum există șosele (autostrăzi) cu mai multe benzi pe sens, există și magistrale PCI Express pe mai multe benzi. Nu este, deci, greu de anticipat că magistralele PCI Express cu un număr de 2, 4, 8, 16 sau 32 benzi se vor numi PCI Express x2, x4, x8, x16 respectiv x32.
Image may be NSFW.
Clik here to view.
Transmisia biților pe o bandă PCI-E se realizează serial după o codare 8b/10b» iar rata de transfer maximă pe fiecare bandă este de 250 MB/s în fiecare din cele două sensuri ceea ce înseamnă aproape dublu față de viteza de 133MB/s de la PCI. În cazul unui PCI-E pe mai multe benzi, rata de transfer se multiplică proporțional. De exemplu într-un sistem PCI-E x8, rata de transfer este de 250MB/s * 8 = 2GB/s.
Magistrala | Rata de transfer maximă |
PCI | 133 MB/s |
AGP 2x | 533 MB/s |
AGP 4x | 1066 MB/s |
AGP 8x | 2133 MB/s |
PCI Express x1 | 250 MB/s |
PCI Express x2 | 500 MB/s |
PCI Express x4 | 1000 MB/s |
PCI Express x8 | 2000 MB/s |
PCI Express x16 | 4000 MB/s |
PCI Express x32 | 8000 MB/s |
Vitezele specificate la PCI Express se referă la prima versiune (1.0), cea din 2004. Începând din 2007 există PCI Express versiunea 2 care folosește un tact de 5GHz față de 2.5GHz utilizat la versiunea 1 și astfel dublează rata de transfer per bandă de la 250MB/s la 500MB/s. Viteza pentru PCI-E x32 crește, deci, corespunzător, de la 8000MB/s la 16000MB/s. Plăcile PCI-E din versiunea 2 se pot conecta în socluri versiunea 1, la fel și plăcile din versiunea 1 pot opera în socluri cu versiunea 2, în ambele cazuri ele operând la viteza mai mică specificată de versiunea 1.
Este demn de remarcat faptul că, spre deosebire de celelalte magistrale, PCI Express este hot plug, adică se pot conecta și deconecta plăci PCI Express din mers, fără a opri calculatorul.
Magistrala PCI Express definește mai multe tipuri de sloturi, în funcție de numărul de benzi, cum se poate vedea și în imaginea următoare (de remarcat faptul că nu există sloturi x32 și deci nici plăci x32):
Image may be NSFW.
Clik here to view.
Ce urmează? PCI-E versiunea 3.0
În 2007 a fost anunțată versiunea 3 ale cărei specificații finale ar trebui să apară în 2010 sau cel târziu în 2011, versiune care, de asemenea, va fi compatibilă cu primele două. Versiunea 3 a PCI-E va oferi și ea o viteză de transfer dublă față de versiunea anterioară, prin creșterea frecvenței tactului la 8GHz față de cei 5GHz din versiunea 2 și prin utilizarea codării 128b/130b care pierde numai 1.5% față de cei 20% care se pierd la codarea 8b/10b utilizată în versiunea 2 a specificației PCI-E.