Slojevi uređaja i odgovarajući paketi

Postoje tri vrste paketa i svaka vrsta povezana je sa odgovarajućim slojem uređaja. Transakcionom sloju odgovaraju paketi transakcionog sloja (Transaction Layer Packet - TLP), sloju veze odgovaraju paketi sloja veze (Data Link Layer Packet - DLLP), i najzad, fizičkom sloju odgovaraju paketi fizičkog sloja (Physical Layer Packet - PLP). Paketi transakcionog sloja (Transaction Layer Packet - TLP) O vrstama TLP paketa već je bilo riječi u prethodnim odjeljcima. Sada ćemo razmotriti kako se ovi paketi sastavljaju i rastavljaju. TLP paketi formiraju se na transakcionom sloju predajnika i završavaju na transakcionom sloju prijemnika (slika 25). Sloj veze i fizički sloj, takođe, daju doprinos formiranju TLP paketa. Na prijemnoj strani TLP paket se rastavlja prolazeći, redom, kroz fizički, sloj veze i najzad kroz transakcioni sloj.

Slika 1: Izvorište i odredište TLP paketa

Sastavljanje TLP paketa. Izgled TLP paketa na Link-u prikazan je na slici 26. Jezgro TLP paketa predstavljaju podaci koje treba prenijeti i zaglavlje (header). Ovi podaci dobijaju se od softverskog sloja ili jezgra uređaja. Njima se dodaje opciono End-to-End CRC (ECRC) polje. ECRC polje koristi se od strane krajnjeg, ciljnog uređaja za detekciju greške. Dalje se jezgro TLP paketa prosljeđuje sloju veze, koji dodaje polja identifikator sekvence (sequence ID) i LCRC polje koje je sada obavezno. LCRC polje služi za detekciju grešaka od strane susjednog prijemnika koji se nalazi sa druge strane Link-a. LCRC se određuje na osnovu jezgra TLP paketa plus identifikator sekvence. Dobijeni paket predaje se fizičkom sloju, koji dodaje karaktere za uokvirenje, pri čemu je svaki karakter veličine 1 bajt. Paket se kodira, i diferncijalno šalje na Link.

Slika 2: Sastavljanje TLP paketa

Rastavljanje TLP paketa. Kada susjedni prijemnik primi paket, on se, najprije, na fizičkom nivou dekodira, a zatim se odbacuju Start i End polja za uokviravanje (slika 27). Ostatak paketa šalje se sloju veze. Ovaj sloj provjerava ispravnost primljenog paketa i uklanja identifikator sekvence i LCRC polje. Pretpostavimo da nema grešaka u primljenom paketu. U tom slučaju TLP se prosljeđuje transakcionom sloju. Ukoliko je prijemni uređaj komutator, paket se rutira sa jednog porta na drugi, izlazni port, na osnovu informacije koja je sadržana u zaglavlju TLP paketa. Krajnji, ciljni uređaj provjerava ECRC polje (ukoliko postoji), odbacuje ga, ostavljajući zaglavlje i dio sa podacima. Ove informacije se, najzad, predaju softverskom sloju ili jezgru uređaja.

Slika 3: Rastavljanje TLP paketa

Paketi sloja veze (Data Link Layer Packet - DLLP) Drugi tip paketa koji se definiše PCI Express specifikacijom jesu paketi sloja veze. Ovi paketi potiču od sloja veze predajnika i završavaju na sloju veze prijemnika. Ovaj proces prikazan je na slici 28. I ovde fizički sloj doprinosi sastavljanju i rastavljanju DLLP paketa. DLLP paketi koriste se za upravljanjem Link-om. Ovim paketima prenose se potvrde prijema TLP paketa (ACK/NAK protokol), informacije za upravljanje potrošnjom, kao i informacije za upravljanjem tokom prenosa. DLLP paketi se prenose između dva direktno povezana uređaja. Oni, za razliku od TLP paketa, ne prolaze kroz komutatore. DLLP paketi ne sadrže informacije za rutiranje. Ovi paketi su i po veličini manji od TLP paketa, i njihova veličina iznosi 8 bajtova (uključujući i Start i End polja).

Slika 4: Izvorište i odredište DLLP paketa

Sastavljanje DLLP paketa. Proces sastavljanja DLLP paketa prikazan je na slici 29. Postoje različite vrste DLLP paketa: DLLP paketi za upravljanje tokom prenosa (Flow Control DLLP - FCx-), DLLP paketi kojima se potvrđuje prijem TLP paketa (acknowledge/no acknowledge DLLP - ACK i NAK), i DLLP paketi za upravljanje potrošnjom (power management - PMx). Tip DLLP paketa određen je posebnim poljem DLLP paketa. Sloj veze dodaje i 16-bitno CRC polje koje se koristi od strane prijemnika za detekciju grešaka. Fizički sloj pridodaje Start i End karaktere za uokviravanje (svaki veličine 1 bajt). Paket se kodira i diferencijalno šalje na Link.

Slika 5: Sastavljanje DLLP paketa

Rastavljanje DLLP paketa: DLLP paketi primaju se fizičkim slojem prijemnika. Primljeni niz bitova najprije se dekodira, a zatim se uklanjaju Start i End polja za uokviravanje,

kao što je to prikazano na slici 30. Ostatak paketa predaje se sloju veze, koji provjerava ispravnost primljenog paketa, na osnovu CRC polja. Sloj veze je krajnje odredište DLLP paketa. Dakle, oni se ne prosljeđuju transakcionom sloju.

Slika 6: Rastavljanje DLLP paketa

Paketi fizičkog sloja (Physical Layer Packet - PLP) Treći tip PCI Express paketa jesu paketi fizičkog nivoa (PLP). Ovi paketi potiču od fizičkog nivoa predajnika i završavaju na fizičkom nivou prijemnika. Proces formiranja PLP paketa prikazan je na slici 31. Struktura PLP paketa je veoma jednostavna i oni počinju 1bajtnim COM (comma) karakterom, za kojim slede 3 ili više drugih karaktera koji određuju tip PLP paketa, ali sadrže i druge informacije. PLP paket je umnožak od 4 bajta, a primjer PLP paketa prikazan je na slici 32. Ovaj tip paketa se, u specifikaciji, naziva uređeni skup (Orderedset). PLP paketi, kao i DLLP paketi, ne sadrže informacije za rutiranje, pa samim tim oni ne prolaze kroz komutator. Neki PLP paketi se koriste tokom procesa pripreme Link-a za prenos (Link Training process). Drugi PLP paketi se koriste za kompenzaciju odstupanja taktne frekvencije prijemnika od taktne frekvencije predajnika. PLP paketi se koriste i za prebacivanje Link-a u stanje sa smanjenom potrošnjom (low power state), kao i za vraćanje Link-a iz ovog stanja u normalan radni režim.

Slika 7: Izvorište i odredište PLP paketa

Slika 8: Tipični PLP paket

1.1. Uloga svakog sloja PCI Express uređaja
Na slici 33 prikazana je detaljnija blok šema slojeva PCI Express uređaja, a u nastavku ovog odjeljka biće, sa nešto više detalja, objašnjena uloga svakog od ovih slojeva. Jezgro uređaja/Softverski sloj Jezgro uređaja (Device core) predstavlja, na primjer, logika root complex-a, ili logika krajnje tačke kao što je Ethernet kontroler, SCSI kontroler, USB kontroler itd. Za projektovanje PCI Express uređaja može se iskoristiti logika PCI ili PCI-X uređaja, kojoj se dodaju PCI Express slojevi opisani u ovom odeljku. Predajna strana. Jezgro uređaja zajedno sa lokalnim softverom obezbjeđuje neophodne podatke za formiranje TLP paketa. To su, na primjer, tip transakcije, adresa, količina podataka koje treba prenijeti, sami podaci za prenos, klasa saobraćaja, indeks poruke itd. Prijemna strana. Na prijemnoj strani jezgro uređaja prima informacije od transakcionog sloja. To su uglavnom, isti oni podaci koje šalje predajna strana jezgra uređaja. Pored ovih podataka, ovaj dio prima i izveštaje o greškama.

Slika 9: Detaljna šema slojeva PCI Express uređaja

Transakcioni sloj Transakcioni sloj, prikazan na slici 33, zadužen je za generisanje i prijem TLP paketa. Transakcioni sloj podržava protokol dijeljenja transakcije za non-posted transakcije. Ovaj sloj sadrži bafere virtuelnih kanala (VC buffers) koji služe za smještanje paketa za slanje, kao i primljenih TLP paketa. Upravljanje tokom prenosa (Flow control) osigurava da predajnik neće započeti prenos paketa ukoliko prijemnik nema dovoljno prostora za prijem tih paketa. Ovim slojem obezbjeđuje se i tzv. kvalitet usluge (Quality of Service- QoS). Predajna strana. Na predajnoj strani formiraju se TLP paketi (slika 34). Osnovne komponente koje čine TLP paket su: zaglavlje (Header), podaci za prenos (Data Payload), i opciono ECRC polje (u specifikaciji se koristi izraz Digest). Struktura TLP paketa na transakcionom sloju prikazana je na slici 34.

Slika 10: Struktura TLP paketa na transakcionom sloju

Zaglavlje je veličine 3 dvostruke riječi (DW) ili 4 dvostruke riječi, u zavisnosti od toga da li se koristi 32-bitno ili 64-bitno adresiranje. Zaglavlje sadrži sledeće podatke: adresu (odredišnu), tip TLP paketa (tipovi TLP paketa dati su u Tabeli 5), identifikator requester-a odnosno completer-a, polje tag, klasu saobraćaja, byte enables, kodove odgovora, i atribute. Adresa kod memorijskih zahtjeva može biti 32-bitna ili proširena 64-bitna. U slučaju U/I transakcija adresno polje je 32-bitno. Kod konfiguracionih transakcija ovo polje je identifikator koji se sastoji od broja magistrale, broja uređaja i broja funkcije, plus adresa konfiguracionog registra kome se želi pristupiti. Kod paketa odgovora adresa je identifikator requester-a (requester ID) tj. adresa uređaja koji je zahtijevao uslugu. U slučaju transakcija porukama, adresa predstavlja identifikator odredišnog uređaja koji se sastoji od broja magistrale, broja uređaja i broja funkcije. Zahtjevi u obliku poruka mogu se, takođe, emitovati svim uređajima (broadcast), ili rutirati implicitno ako im je odredište root complex. Obim prenosa (transfer size) ili polje dužine (length field) predstavlja količinu podataka koji su sadržani u paketu, ili se zahtjevaju od completer-a, a izražava se brojem dvostrukih riječi (doublewords - DW). Obim prenosa može biti između 1 i 1024 DW (tj. maksimalno 4 kB). Kod zahtjeva za upis, polje dužine ukazuje na količinu podataka koju paket nosi. Kod zahtjeva za čitanje, polje dužine ukazuje na količinu podataka koja se zahtjeva od completer-a. Zahtjevi za čitanje, međutim, ne sadrže polje sa podacima. Polje byte enables određuje razlaganje adrese na nivou bajtova.

Paketi zahtjeva sadrže identifikator requester-a (requester ID), koji se sastoji od broja magistarle, broja uređaja, i broja funkcije. Polje tag iz zahtjeva se memoriše od strane completera, i isti tag koristi se u paketu odgovora.

Jedan bit u zaglavlju (TD-TLP Digest) ukazuje na to da li paket sadrži ECRC polje (koje se takođe naziva i Digest). ECRC polje dugačko je 32 bita i sadrži End-to End CRC kod. Ovo polje generiše se na osnovu cjelokupnog TLP paketa, počev od prvog bajta zaglavlja, pa sve do posljednjeg bajta polja podataka (sa izuzetkom 2 bita zaglavlja koja su uvijek uzimaju kao 1). Prijemna strana. Na prijemnoj strani transakcioni sloj smešta dolazne TLP pakete u bafere virtuelnih kanala. Prijemnik provjerava da li u primljenom TLP paketu ima grešaka na osnovu ECRC polja. Ukoliko nema grešaka, ECRC polje se uklanja, a ostatak paketa se šalje jezgru uređaja. Upravljanje tokom prenosa (Flow Control). Transakcioni sloj ne šalje TLP pakete ukoliko prijemnik nema dovoljno prostora u svojim baferima virtuelnih kanala za prijem tih paketa. Protokol koji ovo omogućava zove se protokol upravljanja tokom. Cjelokupan proces odvija se automatski na hardverskom nivou. Proces upravljanja tokom prikazan je na slici 35. Prijemnik periodično šalje DLLP pakete za upravljanje tokom (FCx DLLP), i tako predajnik dobija informacije o tome koliko slobodnog prostora ima u baferima virtuelnih kanala prijemnika.

Slika 11: Proces upravljanja tokom

Kvalitet usluge (Quality of Service - QoS). Razmotrimo situaciju koja je prikazana na slici 36, gdje video kamera i SCSI uređaj treba da pošalju zahtjev za upis u sistemski DRAM. Podaci koje šalje video kamera su vremenski kritični i moraju da stignu do memorije u određenom roku i sa zagarantovanom propusnošću. U suprotnom, doći će do “sjeckanja” slike, ili slika neće biti jasna. Podaci koje šalje SCSI uređaj nisu vremenski osjetljivi, i važno je samo da do memorije stignu ispravno tj. bez grešaka. Jasno je da video podaci treba da imaju viši prioritet prilikom rutiranja kroz PCI Express strukturu. Kvalitet usluge predstavlja sposobnost rutiranja paketa koji potiču od različitih aplikacija, sa različitim prioritetom, determinističkim kašnjenjem i determinističkom propusnošću. PCI i PCI-X arhitekture ne podržavaju kvalitet usluge. Razmotrimo sljedeći primjer. Neka programski drajveri u sprezi sa operativnim sistemom, dodjeljuju paketima koji nose video sadržaj klasu saobraćaja 7 (TC7), a paketima koje

šalje SCSI uređaj klasu saobraćaja 0 (TC0). Klasa saobraćaja upisuje se u zaglavlje TLP paketa. Na osnovu klase saobraćaja vrši se preslikavanje paketa u odgovarajuće bafere virtuelnih kanala. Neka se paketi klase saobraćaja TC0 preslikavaju u bafer virtuelnog kanala 0 (VC0), a paketi klase saobraćaja 7 u bafer virtuelnog kanala 7 (VC7). Paketi koji potiču od ove dviju aplikacije (video i SCSI aplikacije) kreću se kroz PCI Express strukturu, i dolaze do komutatora koji ih smješta u odgovarajuće bafere virtuelnih kanala (VC0 i VC7). Komutator, sada, na osnovu prioriteta određuje koji će paket biti prvi prosljeđen na izlazni port. Pretpostavimo da je VC7 konfigurisan tako da ima viši prioritet od VC0. Kad god komutator bude birao između dva paketa iz bafera VC7 i VC0, uvijek će izabrati paket iz bafera VC7 (paket sa video sadržajem). Time se obezbjeđuje veća propusnost i smanjeno kašnjenje paketa sa video podacima u odnosu na paket sa SCSI podacima.

Slika 12: Primjer načina ostvarivanja QoS-a kod PCI Express-a

PCI Express uređaj koji sadrži više od jednog bafera virtuelnog kanala, ima mogućnost da arbitrira između TLP paketa iz različitih bafera. Arbitražni mehanizam koji ovo omogućava zove se arbitraža virtuelnih kanala. Kao što ćemo kasnije vidjeti, komutatori osim arbitraže virtuelnih kanala mogu da vrše i arbitražu portova. Klase saobraćaja (Traffic Classes - TCs) i virtuelni kanali (Virtual Channels - VCs). Klasa saobraćaja (TC) je polje u okviru zaglavlja TLP paketa, koje se ne mijenja prilikom prenosa sa jednog na drugi kraj PCI Express strukture. Klasu saobraćaja određuju lokalni aplikativni softver i sistemski softver, na osnovu potrebne performanse. Virtuelni kanali (VC) su fizički baferi koji omogućavaju veći broj logičkih tokova podataka preko jednog fizičkog Link-a. To se postiže pomoću bafera virtuelnih kanala.

PCI Express uređaji mogu da implementiraju do 8 bafera virtuelnih kanala (VC0-VC7). Polje klase saobraćaja je 3-bitno polje, koje omogućava razlikovanje 8 klasa saobraćaja (TC0TC7). Uređaji moraju da implementiraju VC0. Takođe se od uređaja zahtijeva da podržavaju klasu saobraćaja TC0. Ostale klase saobraćaja su opcione, i mogu se koristiti da bi se pravila razlika u prioritetu paketa. Uređaji i komutatori sadrže logički blok koji paket, date klase saobraćaja, preslikava u odgovarajući bafer virtuelnog kanala (TC-to-VC mapping). PCI Express ima mogućnost preslikavanja većeg broja klasa saobraćaja u i isti bafer virtuelnog kanala. Ograničavanjem broja virtuelnih kanala smanjuje se cijena uređaja. Način na koji će vršiti preslikavanje klasa saobraćaja u odgovarajuće virtuelne kanale, konfiguriše sistemski softver, pomoću konfiguracionih registara. Aplikativni softver određuje klasu saobraćaja za TLP pakete. U najprostijem slučaju, za svaku klasu saobraćaja postoji poseban virtuelni kanal (preslikavanje jedan-na-jedan). Razmotrimo primjer koji je prikazan na slici 37. Konfiguracioni registri kojima se određuje preslikavanje klase saobraćaja u virtuelne kanale, u uređaju A, konfigurisani su tako da se TLP paketi klase saobraćaja od 0 do 2 (TC[2:0]) upisuju u VC0, a TLP paketi klase saobraćaja od 3 do 7 (TC[7:3]) upisuju se u VC1. Registri koji određuju preslikavanje TC u VC u prijemnom uređaju B, moraju se konfigurisati identično kao u uređaju A. Ako uređaj A na primjer, treba da pošalje dva paketa, pri čemu je jedan klase saobraćaja 7, a drugi klase saobraćaja 0, ova dva paketa biće smještena u bafere VC1 i VC0, respektivno. Arbitražna logika arbitrira između ova dva bafera. Pretpostavimo da je VC1 konfigurisan tako da ima viši prioritet od VC0. Tada će uređaj A uvek slati TLP pakete iz VC1, pre TLP paketa iz VC0. Na prijemnoj strani, logika koja preslikava TC u VC, dekodira TC polje iz primljenog TLP paketa, i smješta paket u odgovarajući VC bafer.

U ovom primjeru TLP paketi koji imaju TC[7:3] šalju se sa višim prioritetom od paketa koji imaju TC[2:0]. Međutim, svi paketi koji se nalaze u istom baferu šalju se sa jednakim prioritetom bez obzira na TC.

Slika 13: Klase saobraćaja i baferi virtuelnih kanala

Arbitraža portova i arbitraža virtuelnih kanala. Ciljevi arbitraže na transakcionom sloju su: • da omogući različito opsluživanje za različite tokove podataka unutar PCI Express strukture;

da obezbijedi zagarantovanu propusnost sa determinističkim i najmanjim mogućim kašnjenjem pri prenosu sa jednog kraja na drugi.

U komutatorima se koriste dva tipa arbitraže za svaki izlazni port: arbiraža portova (Port Arbitration), i arbitraža virtuelnih kanala (VC Arbitration). Posmatrajmo sliku 38. Arbitraža portova predstavlja arbitražu između dva paketa koja dolaze na različite ulazne portove, ali se preslikavaju u isti virtuelni kanal (nakon prolaska kroz logiku za preslikavanje TC/VC) na zajedničkom izlaznom portu. Arbitraža virtuelnih kanala vrši se nakon arbitraže portova. Za dati izlazni port takmiče se paketi iz svih virtuelnih kanala koji su vezani za taj port. Arbitražom virtuelnih kanala određuje se redosljed kojim će se TLP paketi iz različitih bafera virtuelnih kanala, proslijediti na Link. Krajnje tačke i root complex-i sa samo jednim portom ne podržavaju arbitražu portova. Oni podržavaju samo arbitražu virtuelnih kanala na transakcionom sloju.

Slika 14: Arbitraža portova i arbitraža virtuelnih kanala kod komutatora

Upravljanje potrošnjom. Hardver transakcionog sloja samostalno upravlja potrošnjom uređaja kako bi se minimizovala potrošnja tokom potpuno operativnog stanja. Ovo automatsko upravljanje potrošnjom zove se upravljanje potrošnjom u aktivnom stanju (Active State Power Management), i ne uključuje softver. Konfiguracioni registri. Konfiguracioni registri uređaja su povezeni sa transakcionim slojem. Ovi registri se konfigurišu tokom incijalizacije i numeracije magistrala. Takođe ih konfigurišu i drajveri uređaja, a u toku rada može im pristupati operativni sistem. Sloj veze Blok šema sloja veze data je na slici 33. Osnovna funkcija sloja veze jeste da obezbijedi integritet podataka prilikom predaje i prijema paketa. Ukoliko, tokom prenosa paketa, dođe do greške, predajnik će biti upozoren pomoću NAK (no acknowledge) DLLP paketa. U tom slučaju, predajni uređaj automatski ponavlja slanje TLP paketa. Zahvaljujući provjeri grešaka i automatskom ponovnom slanju (replay) paketa koji su pogrešno primljeni, velika je vjerovatnoća da će TLP paketi koje šalje neki uređaj, stići na odredište bez grešaka. Zbog toga je PCI Express arhitektura veoma pogodna za visoko pouzdane sisteme kao što su serveri. Predajna strana. Prije nego što proslijedi odlazni TLP paket sloju veze, transakcioni sloj provjerava da li prijemni uređaj ima dovoljno prostora za smještanje paketa, korišćenjem mehanizma za upravljanje tokom. Ukoliko utvrdi da prijemnik ima dovoljno prostora za prijem

paketa, transkacioni sloj prosljeđuje sloju veze paket koji se nalazi u baferu virtuelnog kanala, na dalju obradu. Razmotrimo sliku 39 na kojoj je prikazana logika ACK-NAK mehanizma sloja veze. Sloj veze zadužen je za generisanje CRC koda TLP paketa, kao i za provjeru grešaka. TLP paketu sa transakcionog sloja, dodaju se Link CRC (LCRC), i identifikator sekvence (sequence ID). Sloj veze kopira TLP paket u bafer za ponovno slanje (replay buffer), i šalje TLP paket uređaju B. Na drugoj strani, sloj veze uređaja B provjerava ispravnost primljenog paketa na osnovu CRC polja.

Slika 15: Mehanizam ponovnog slanja paketa (ACK/NAK)

Ukoliko nema grešaka sloj veze uređaja B šalje ACK (acknowledge) DLLP paket sa identifikatorom sekvence uređaju A. To je znak da je TLP paket uspješno stigao do uređaja B (koji ne mora da bude i krajnje odredište paketa). Uređaj A zatim, briše TLP paket sa datim identifikatorom sekvence iz bafera za ponovno slanje. Ako se, ipak, detektuje CRC greška u primljenom TLP paketu, tada sloj veze uređaja B, šalje NAK DLLP paket sa identifikatorom sekvence uređaju A. Sloj veze uređaja A ponovo šalje odgovarajući TLP paket iz bafera za ponovno slanje. Ukratko, mehanizam za ponovno slanje koristi polje ID sekvence iz primljenih ACK/NAK DLLP paketa, za uparivanje sa TLP paketima koji se nalaze u baferu za ponovno slanje. Prijem ACK DLLP paketa dovešće do brisanja odgovarajućeg TLP paketa iz bafera. Sa druge strane, prijem NAK DLLP paketa dovodi do ponovnog slanja TLP paketa. Ako za dati TLP paket, predajnik primi NAK DLLP paket 4 puta, i ponovo pošalje TLP paket 3 puta, tada sloj veze evidentira grešku, izvještava više slojeve da je došlo do greške i ponovo priprema Link za prenos. Prijemna strana. Prijemna strana zadužena je za provjeru grešaka u primljenim TLP paketima. Ukoliko nema grešaka, prijemnik šalje ACK DLLP paket udaljenom predajniku. Prijemnik uklanja polja LCRC i ID sekvence, i ostatak paketa šalje transakcionom sloju. Ako se detektuje CRC greška, prijemnik šalje NAK DLLP predajniku, a neispravni TLP paket se eliminiše.

Prijemna strana sloja veze takođe prima i ACK i NAK pakete od udaljenog uređaja. Ukoliko je primljen ACK paket, sloj veze obavještava predajnu stranu uređaja da obriše odgovarajući paket iz bafera za ponovno slanje. Ako je primljen NAK paket, prijemna strana obavještava predajnu stranu uređaja, da ponovi slanje odgovarajućeg TLP paketa. Prijemna strana zadužena je i za provjeru identifikatora sekvence primljenih TLP paketa, kako bi se detektovao izostanak nekog paketa, ili poremećaj redosljeda TLP paketa. Doprinos sloja veze formiranju TLP i DLLP paketa. Sloj veze dodaje 12-bitno polje ID sekvence i 32-bitno LCRC polje odlaznom TLP paketu, koji dolazi sa transakcionog sloja. Paket koji se, na taj način dobija, prikazan je na slici 40. ID sekvence se koristi za uparivanje kopije odlaznog TLP paketa koji je smješten u baferu za ponovno slanje, sa ACK/NAK DLLP paketom koji je primljen od susjednog uređaja. Polje LCRC (32 bita) izračunava se na osnovu svih bajtova TLP paketa, računajući i ID sekvence. DLLP paket (slika 40) je 4-bajtni paket kome se dodaje 16-bitno CRC polje. Osmobitno polje Tip DLLP paketa ukazuje da li se radi o ACK, NAK, DLLP paketu za upravljanje potrošnjom, ili DLLP paketu za upravljanje tokom. Šesnaestobitno CRC polje izračunava se na osnovu sva 4 bajta DLLP paketa. Primljeni DLLP paketi koji ne prođu CRC proveru, se odbacuju. Gubitak informacije zbog odbacivanja DLLP paketa nadoknađuju sukcesivni DLLP paketi. ACK i NAK DLLP paketi sadrže i ID sekvence (prikazano kao polje Misc. na slici 40).

Slika 16: Struktura TLP i DLLP paketa na sloju veze

Primjer Non-Posted transakcije koji ilustruje ACK-NAK protokol. U nastavku će postupno biti prikazano kako se ostvaruje transakcija čitanja iz memorije, kada uređaji komuniciraju preko komutatora. Na slici 41 prikazane su aktivnosti koje se sprovode tokom ove transakcije.

Slika 17: Non-posted transakcija na Link-u

Korak 1a: Requester šalje zahtjev za čitanje iz memorije (MRd). Komutator prima MRd TLP i na osnovu polja LCRC, provjerava da li ima CRC grešaka. Korak 1b: Ukoliko nema grešaka, komutator vraća ACK DLLP requester-u. Requester briše kopiju TLP paketa iz bafera za ponovno slanje. Korak 2a: Komutator na osnovu adrese koja je sadržana u zaglavlju TLP paketa, prosljeđuje MRd TLP na odgovarajući izlazni port. Completer prima MRd TLP, i na osnovu polja LCRC, provjerava da li ima CRC grešaka. Korak 2b: Ukoliko nema grešaka, completer vraća ACK DLLP komutatoru. Komutator briše kopiju TLP paketa iz bafera za ponovno slanje. Korak 3a: Completer provjerava da li ima grešaka u primljenom MRd TLP paketu pomoću opcionog ECRC polja. Pretpostavimo da nema End-to-End grešaka. Completer prikuplja tražene podatke i formira paket odgovora sa podacima (CplD). Komutator prima CplD TLP i na osnovu polja LCRC, provjerava da li ima CRC grešaka. Korak 3b: Ukoliko nema grešaka, komutator vraća ACK DLLP completer-u. Completer briše kopiju TLP paketa iz bafera za ponovno slanje. Korak 4a: Komutator na osnovu adrese u CplD TLP paketu, rutira paket ka odgovarajućem izlaznom portu. Requester prima CplD TLP, i na osnovu polja LCRC, provjerava da li ima CRC grešaka. Korak 4b: Ako nema grešaka requester vraća ACK DLLP paket komutatoru. Komutator briše kopiju CplD TLP paketa iz svog bafera za ponovno slanje. Sada requester provjerava ima li grešaka u CplD TLP paketu na osnovu opcionog ECRC polja. Pretpostavimo da nema End-toEnd grešaka. Requester provjerava kod greške u odgovoru. Pretpostavimo da kod odgovora ukazuje na uspješan prenos. Da bi pridružio odgovor i zahtjev, requester uparuje polje tag u CplD paketu sa izvornim poljem tag u MRd paketu. Na kraju requester prihvata primljene podatke. Primjer Posted transakcije koji ilustruje ACK-NAK protokol. Sada ćemo opisati kako se ostvaruje transakcija upisa u memoriju kada uređaji komuniciraju preko komutatora. Na slici 42 prikazane su aktivnosti koje se sprovode tokom ove transakcije.

Slika 18: Posted transakcija na Link-u

Korak 1a: Requester šalje zahtjev za upis u memoriju (MWr). Komutator prima MWr TLP i na osnovu polja LCRC, provjerava da li ima CRC grešaka. Korak 1b: Ukoliko nema grešaka, komutator vraća ACK DLLP requester-u. Requester briše kopiju TLP paketa iz bafera za ponovno slanje. Korak 2a: Komutator na osnovu adrese koja je sadražana u zaglavlju TLP paketa, prosljeđuje MWr TLP na odgovarajući izlazni port. Completer prima MWr TLP, i na osnovu polja LCRC, provjerava da li ima CRC grešaka. Korak 2b: Ukoliko nema grešaka, completer vraća ACK DLLP komutatoru. Komutator briše kopiju TLP paketa iz bafera za ponovno slanje. Completer provjerava da li ima grešaka u primljenom MWr TLP paketu pomoću opcionog ECRC polja. Pretpostavimo da nema End-toEnd grešaka. Completer prihvata primljene podatke. Kod ovog tipa transakcije completer ne šalje odgovor. Druge funkcije sloja veze. Nakon uključivanja sistema, ili nakon resetovanja, sloj veze inicira već pomenuti mehanizam za upravljanje tokom. Ovaj proces se odvija automatski na hardverskom nivou, bez učešća softvera. Fizički sloj Blok šema fizičkog sloja prikazana je na slici 33. TLP i DLLP paketi sa sloja veze, šalju se fizičkom sloju. Sa druge strane, paketi se primaju pomoću fizičkog sloja, i prosljeđuju sloju veze. Fizički sloj se može podijeliti na dva dijela: logički fizički sloj i električni fizički sloj. Logički fizički sloj se sastoji od digitalnih kola koja služe za obradu paketa prije nego što se oni pošalju na Link, ili za obradu primljenih paketa, prije nego što se oni pošalju sloju veze. Električni fizički sloj predstavlja analogni interfejs između fizičkog sloja i Link-a. On sadrži diferencijalne drajvere i diferencijalne prijemnike za svaku traku (Lane) pojedinačno. Predajna strana. TLP i DLLP paketi koji dolaze sa sloja veze, smještaju se u predajni bafer logičkog fizičkog sloja. Fizički sloj uokviruje TLP i DLLP pakete Start i End karakterima. Ovi simboli služe prijemniku za određivanje početka i kraja paketa. Na slici 43 prikazani su TLP i DLLP paketi kojima su dodati Start i End karakteri. Takođe su prikazane veličine svih polja TLP i DLLP paketa.

Slika 19: Struktura TLP i DLLP paketa na fizičkom sloju

Ako PCI Express uređaj podržava prenos po većem broju traka, paketi se dijele na bajtove (byte striping), tako da se svaki bajt prenosi po zasebnoj traci, a u skladu sa brojem raspoloživih traka. Tako se istovremeno prenosi veći broj bitova, pa se postiže veća propusnost. Svaki bajt paketa se zatim, skrembluje. Skrembler je u ovom slučaju, pomjerački registar sa lineranom povratnom spregom (Linear Feedback Shift Register). Cilj skremblovanja kod PCI Express-a NIJE da se informacija o taktu “usadi” u tok podataka, kao što je to slučaj u nekim sistemima, već da se eliminišu bitski oblici koji se ponavljaju (npr. 10101010). Bitski oblici koji se ponavljaju stvaraju značajne elektromagnetne smetnje na susjednim trakama, pa se njihovom eliminacijom smanjuju i smetnje na Link-u. Dobijeni bajtovi se zatim, kodiraju u 10-bitne simbole pomoću kodera 8b/10b. Osnovna svrha kodiranja 8-bitnih karaktera u 10-bitne simbole jeste stvaranje dovoljnog broja prelaza 1na-0 i 0- na-1, kako bi se olakšala ekstrakcija takta pomoću PLL-a u udaljenom prijemniku. Dakle, kod PCI Express magistrale ne prenose se taktni impulsi frekvencije 2,5 GHz po zasebnoj liniji, već niz bitova podataka sadrži dovoljno prelaza da omogući prijemniku regeneraciju takta. Na kraju se 10-bitni simboli konvertuju iz paralelnog u serijski oblik (pomoću paralelnoserijskog konvertora), i diferencijalno prenose bitskom brzinom od 2,5 Gbit/s. Prijemna strana. Električni deo fizičkog sloja prima paket koji dolazi u serijskom obliku. Serijski niz bitova najprije se konvertuje u 10-bitne paralelne simbole pomoću serijskoparalelnog konvertora. Prijemna logika sadrži elastični bafer koji služi za kompenzaciju razlike taktnih frekvencija predajnika i prijemnika. Naime, serijski niz bitova uzorkuje se i upisuje u serijskoparalelni konvertor taktnim impulsima koji se dobijaju ekstrakcijom iz primljenog niza bitova. Frekvencija ovog takta jednaka je taktnoj frekvenciji predajnika. Sa druge strane, najveći dio logike prijemnika taktuje se taktnim impulsima koji se generišu lokalno. Ove dvije taktne frekvencije mogu da se razlikuju za najviše 600 ppm. Pomoću elastičnog bafera i skip karaktera (simbola) vrši se kompenzacija ove razlike.

Iz elastičnog bafera 10-bitni simboli se vode u dekoder 8b/10b, kojim se 10-bitni simboli vraćaju u 8-bitni oblik. Osmobitni karakteri se zatim de-skrembluju, a zatim se logikom za sastavljanje bajtova (Byte unstriping logic) rekonstruišu izvorni paketi. Priprema Link-a i inicijalizacija (Link Training and Initialization). Još jedna funkcija fizičkog sloja jeste priprema Link-a i inicijalizacija. To je, zapravo, proces kojim se Link konfiguriše za normalan rad. Ovaj proces odvija se automatski bez učešća softvera, a koriste se paketi fizičkog sloja. Tokom pripreme Link-a i inicijalizacije određuje se i podešava: • obim Link-a (Link width) • brzina prenosa po Link-u (Link data rate) • obrtanje traka (Lane reversal) • obrtanje polariteta (Polarity inversion) • bit lock za svaku traku (Bit lock per Lane) • eliminacija košenja između traka za Link-ove sa više traka (Lane-to-Lane deskew)
Obim Link-a. PCI Express arhitektura omogućava povezivanje dva uređaja sa različitim brojem traka. Tako se na primjer, uređaj koji ima port tipa x2 može povezati sa uređajem koji ima port tipa x4. Nakon inicijalizacije fizički slojevi oba uređaja određuju i postavljaju obim Link-a na maksimalnu vrijednost koju podržavaju oba uređaja, a to je, u ovom slučaju, x2. Obrtanje traka je opciona karakteristika. Trake su numerisane. Može se desiti da projektant ne poveže ispravno trake dva porta. Priprema Link-a omogućava obrtanje brojeva traka, tako da se oni poklapaju za portove koji se nalaze na suprotnim krajevima Link-a. Obrtanje polariteta. Priključci diferencijalih parova provodnika, D+ i D-, dva uređaja, takođe, mogu biti pogrešno povezani. U tom slučaju vrši se obrtanje polariteta priključaka diferencijalnog prijemnika. Brzina prenosa po Link-u. Prilikom pripreme Link-a, kao i pri normalnom radu, brzina prenosa podataka je 2,5 Gbit/s. Međutim, PCI Express 2.0 podržava brzinu prenosa od 5 Gbit/s, a očekuje se da će naredne generacije podržavati brzinu prenosa od 10 Gbit/s. Tokom pripreme, svaki čvor objavljuje svoju maksimalnu brzinu prenosa. Link se inicijalizuje najvišom zajedničkom frekvencijom koju podržavaju oba uređaja na suprotnim krajevima Link-a. Bit lock. PLL petlja prijemnika rekonstruiše taktne impulse na osnovu primljenih podataka. Kada se PLL petlja prijemnika sinhronizuje sa taktnom frekvencijom predajnika kaže se da je postignut bit lock. Eliminacija košenja između traka. Zbog razlika u dužinama linija i različitih karakteristika drajvera/prijemnika kod Link-ova sa većim brojem traka, simboli koji su istovremeno poslati neće istovremeno stići na odredište. Ova pojava naziva se košenje između linija (Lane-to-Lane skew). Prijemnik mora da bude u stanju da kompenzuje ovo košenje dodavanjem/smanjivanjem kašnjenja za svaku traku pojedinačno.

Upravljanje potrošnjom Link-a (Link Power Management). Normalno, potpuno operativno stanje Link-a naziva se L0 stanje. Stanja Link-a sa manjom potrošnjom, u kojima se ne prenose paketi su: L0s, L1, L2 i L3. U stanje L0s prelazi se automatski nakon određenog

vremena neaktivnosti Link-a. Ulazak i izlazak iz ovog stanja odvija se bez učešća softvera, a vrijeme izlaska iz ovog stanja je najkraće. L1 i L2 su stanja sa manjom potrošnjom od stanja L0s, ali je vrijeme izlaska iz ovih stanja duže. Stanje L3 je stanje potpune isključenosti Link-a. Resetovanje. PCI Express podržava dva načina resetovanja: • Hladno/toplo resetovanje (cold/warm reset) koje se takođe naziva i fundamentalno resetovanje, vrši se nakon uključenja uređaja (hladno resetovanje), a može se ostvariti i bez gašenja napajanja (toplo resetovanje). Matične ploče imaju posebnu liniju za ovaj tip resetovanja. • Vruće resetovanje (hot reset) ponekad se naziva i protokolarno resetovanje, i predstavlja inband način resetovanja. Generisanje vrućeg reseta inicira softver, a za ovaj tip resetovanja koriste se paketi fizičkog sloja. Električni fizički sloj. Predajni dio PCI Express uređaja povezuje se sa Link-om pomoću sprežnog kondenzatora, kao što je to prikazano na slici 44. Ovaj kondenzator odvaja naizmjenične komponente signala od jednosmjerne. Kapacitivnost ovog kondenzatora kreće se u granicama od 75 do 200 nF. Nominalna vrijednost karakteristične impedanse Link-a je 100 Ω diferencijalno, dok je tipična vrijednost DC Common mode impedanse je 50 Ω. Završna impedansa mora se prilagoditi karakterističnoj impedansi Link-a.

Slika 20: Električni fizički sloj

Sign up to vote on this title
UsefulNot useful