Documente Academic
Documente Profesional
Documente Cultură
Transmisia seriala se face pe un singur fir, deci linia este unica, octetii sunt intr-
un sir de date succesive, transferul se face bit cu bit, ceea ce usor de diferetiat fata
de transmisia paralela, caci cea seriala are unitatea de masura b/s. Mai demult
exista si interfata seriala a calculatorului, care astazi nu mai prea exista, de care
se lega mouse-ul serial, astazi foloseste USB. Pinii sunt in numar de 9, lucrand
pe o singura linie, configuratia este verticala cu aceasta semnificatie:
In table se specifica care sunt de intrare, care de iesire, acest lucru inseamna
configurarea a doi parteneri care discuta pe o linie de transmisiune seriala. Vom
observa ca toate semnalele din tabel, in afara de indicatorul de apel si de masa,
sunt in pereche. Data set ready DST este in pereche cu Data terminal ready DTR,
adica pinul 6 are ca raspuns 4. Alta pereche e data de pinii 7 si 8, RTS cu CTS,
partenerul 1 spune ca vrea sa tranmita date si dupa ce a vazut ca partenerul e activ
pe linie se transmite solicitare de transfer de date intr-un anumit sens (aici
partenerul 1 transmite, 2 receptioneaza), 1 raspunde prin CTS – clear to send,
dupa care are loc transmisia propriu-zisa de date, adica pinii 3 si 2, RD si TD,
deci pe acea linie dupa ce s-a facut configurarea parametrilor de transmisie, apare
transferul propriu-zis. Aceasta configuratie de protocol, pt ca exista un protocol
de comunicare intre 2 parteneri, o vom folosi mai tarziu.
Toate transmisiunile seriale se fac dupa anumite standarde, care prevad 4 lucruri
importante:
- Tipul de modulatie al semnalului purtator de pe linia de comunicatie a
transmisiunii seriale
- Codarea semnalului transmis => standardele de codare stabilesc vitezele
de transmisiune standardizate
- Si optional si un standard de compresie; datele comprimate ocupa un spatiu
mai mic si se transmit mai repede; fiind vorba de date informationale si nu
date multimedia, standardele de compresie sunt fara pierderi. De ex atunci
cand compilam o rutina, daca un singur bit este gresit, ne da eroare. Deci
nu ne permitem aproximare sau eroare pe un bit => datele informationale
trebuie decomprimate absolut identic; stardardele fara pierderi nu au rate
de compresie asa mari, dar garanteaza corectitudinea compresiei la nivel
de bit.
Sus de tot este logica pe care vrem sa o transmitem => 1, 0 … Se aloca unui bit
de 1 o anumita amplit, sa zicem A, si celuilalt bit o amplitudine mult diferita f
mica, A/10. Functia sinusoidala are continuitate, are aceeasi frecventa, cele 2
semnale care coresp lui 0 si 1 au si aceeasi faza, pleaca din 0. Vedem cele 2 valori
de amplit intre care se face shiftare. Daca ar fi mai multi biti de 0 sau de 1,
semnalul ar arata la fel. La FSK semalul are aceeasi amplit si aceeasi faza, dar se
schimba frecv => in figura avem 10 perioade complete pt semnalul de 1 si 5
perioade pt semnalul de 0 => frecv sunt f si f/2. Se alege de obicei o combinatie
de val ca sa nu fie usor confundate. De ex la ASK nu o sa alegem A si 0.9 A. Info
consta in modul in care este modulate amplit si cu zgomotul de pe canal, nu treb
sa le confundam la receptie. La PSK sau BPSK semnalele au aceeasi amplit si
frecv, dar faza diferite => unul pleaca pozitiv din 0, unul pleaca negativ din pi.
Daca se face acest punct de trecere unghiular cu pi inseamna ca s-a trecut de la 0
la 1 sau invers.
Din pct de vedere al circuitisticii pt transmiterea seriala bit cu bit, la receptive e
foarte usor de construit demodulatorul. La ASK spre ex, cum putem detecta
modificarile de amplit, tinand cont ca aici nu ne intereseaza faza sau frecv?
Trebuie sa avem un detector de anvelopa pt ca mesajul purtator de informatie este
continut in amplitudine. Cu alte cuvinte, ca sa vedem cand se face intre 1 si 0 ne
treb un detector de prag. Daca avem si zgomot, la 1 amplitudinea poate sa fie A
+- o val si la 0 A/10 +- o val. Imp e ca atunci cand avem val mare de amplit cu
zgomot negativ sa nu ajunga atat de jos incat sa il confundam cu semnal cu amplit
mica la care se adauga zgomot pozitiv. Functia de prag se alege la media
artimetica a celor 2 valori. Tot ce este peste A/2 face parte din amplit mare si tot
ce este sub A/2 din amplit mica => Acasta este decizie binara, la care se poate
adauga zgomot care este zgomot aditiv gaussian.
La FSK trebuie sa punem un detector de frecventa. Daca frecv aici sunt 2f si f,
punem undeva la jumatate, adica 3f/2. Si la PSK detectia se face cu un detector
de faza, de ex 0 sau pi. Cum zgomotul este aditiv, el se aduna in amplitudine,
astfel ASK este cel mai sensibil la zgomot. Daca se aduna zg pozitiv peste amplit
mica si zg negative peste amplit mare, semnalele se pot confunda. FSK si PSK
sunt foarte putin sensibile la zgomot, deci sunt de recomandat atunci cand zg pe
canal este aditiv pt ca aici nu demodulam amplit, info poate sa fie in faza sau in
frecv.
4. USB
Este un standard care prevede atat reguli pentru interfatare cu exteriorul
calculatorului, dar o data transmise/primite ele sunt primite cu ajutorul
magistralelor USB.
Vom prezenta doar de felul de interfete al USB.
DPDV al interfetei seriale are un HOST controller(comunica prin intermediul
acestor host controllere, un host cu mai multe hub uri).
La nivel intern, host ul are un numar de linii, care se numesc PIPES. Sunt mai
multe pt downstreaming, acele conectoare se num End points, si un conector
pentru upstraming. 16 end point uri, 32 de linii(fiecare e dual). De la host-hub
downstreaming, hub-host up streaming
Pinii conectorilor USB: standart: A/B, mini A/b, C
Doar 4 semnale. Numarul de linii conectate atat pentru interfata cat si pt
magistrala sunt reduse.
5.IEEE 1394-in special pentru camere video
A avut 3 producatori
Interfata generala paralela pentru calculatoare. Ex cum arata. Sagetile care intra
de intrare, care ies de iesire. E un exemplu particular pe 24b, poate sa lucreze
simultan pe 3 porturi de biti, A, B, C(8b in paralel). Sunt comandate prin A0 si
A1(2^2 combinatii, 3 se folosesc pentru a desemna care din porturi A,B, C)
Semnale de comanda:CS, WR, RD, RESET. Comunicatia bidirectionala D0-D7.
Se poate face un transfer prin handshake tot pe D0-D7.
Ex:i8255
C. Interfete Wireless
Cate porturi poate sa inregistreze Blue vedem mai sus. La nivelul host controller
noi avem posibilitatea de a interfata prin Blue foarte multe tipuri de alte
protocoale.
De obicei de blueetooth se pot configura retele, unul e master + 7 dispozitive
Blue=PICONET
Mai multe piconet=SCATTERNET
2.WI-FI
Avantajul Reteleor WI-FI- folosesc benzi de frecventa la care nu trebuie sa ceara
autorizatie . Orice retea wirless foloseste un spectru de frecventa la liber.
Pot evita obstacole, tehnologia de roaming(se poate comunica peste un deal, o
cladire inalta). Se pot folosi compatibile cu foarte multe standarde. PCI USB,
PCMCIA
(Citit de pe slide) In poza transmisia wi fi intre 2 cladiri
Se foloseste un master acces point -care este un modem pe cablu conectat la
ethernet, pe cladirea cealalata un Remote acces point. Ca sa faca conexiunea intre
ele prin wi fi(merge la distante mai mari decat blue, dar nu are voie sa intalneasca
obstacole) acel Relay Acces Point (se pun pe cladiri foarte inalte, dealuri) – face
legatura intre master si remote la fiecare dintre ele se pot conecta mai multe pc
uri laptop uri etc. Retelele pot sa comunice local in interiorul unui spatiu
delimitat, dar pot sa transmita prin roaming conexiunea cu o relatie la distanta.
CURS 8
CAP 3-Structura unui calculator – pg 27
Observam 3 faze
importante:
1) Initializarea
transferului
2) Transferul propriu-
zis
3) Controlul final de
terminare si corectitudine
-Transferul este orientat pe cicluri, in care un ciclu inseamna un cuvant, iar cuvantul e
definit in functie de tipul magistralei
Exemplu
In acest exp dorim sa facem
urmatoare operatie:
-controlerul RS232C(studiat la
interfete seriale) asigura
transmisiunea pe o linie de
comunicatie, doreste sa scrie un bloc
de o anumita dimensiune la o anumita
adresa din memorie
-obs ca controlerul DMA are 4
campuri importante pentru a furniza
toate aceste date, de care protocolul, pe care l-am vazut mai devreme, are nevoie
6)Dupa ce intreruperea a fost tratata, adica in cazul nostru au fost preluate datele de
la butoanele mouse-ului (I s-a citit starea), trebuie ca procesorul sa revina la starea
initiala, starea pe care si-a salvat-o prin continutul registrelor curente, se reincarca si cu
aceasta ocazie ciclul s-a incheiat si se poate reveni la momentul in care s-a lansat cererea
de intrerupere, iar procesele pot continua pentru microprocesor asa cum se desfasurau
inainte
Exemplu:
-controlerul de la Intel 8259A e cel mai usor de gestionat
-poate fi un controler integrat adica un APIC(Intel APIC), un circuit dedicat acestei
functii
-acest exemplu ne arata cum combina folosirea chipului integrat (8259A), controlerul
IRQ specializat de la Intel, cat si APIC-uri
-intreruperile la dispozitiv I/O pot fi tratate atat de catre APIC, cat si de 8259A, iar la
nivelul nucleelor celor 2 procesoare de catre APIC-ul local integrat
-forma generala a schemei este un simetrica adica daca schimbam intre ele cele 2
procesoare nu se intampla nimic in schema => este o arhitectura de multiprocesare
simetrica
Exemplu
-presupunem ca avem 3 dispozitive: imprimanta, hard disk-ul siinterfata seriala
-trebuie sa dam desfasurarea in timp a evenimentelor, adica pt fiecare periferic care poate
sa lanseze o cerere de intrerupere trebuie sa spunem: la ce moment de timp o formuleaza
si ce durata de tratare a intreruperii (DTI-durata de tratare a intreruperii)
-la momentu 0 porneste un program care are nevoie de: imprimanta la mom
10(t=10); interfata seriala la mom 15(t=15); hard disk la mom 20(t=20)
Intelegerea exemplului:
-la t=10 cererea de intrerupere vine de la imprimanta care are nivelul de prioritate 2; nu
mai era ceva in desfasurare in acel moment => poate fi tratata acea intrerupere a carei
durata incepe la mom 10
-ne uitam la durata si obs ca toate sunt 10=> tre sa terminam la mom 20
-la t=15 apare cererea de intrerupere de la interfata seriala, dar la mom 15 imprimanta era
la jumatatea lucrului
-nivelul de prioritate al interfetei este 5>2 => imprimanta e suspendata si se
trateaza interfata seriala=>LPT-ul suspendat tine minte ca mai are 5 unitati de timp
de lucru
-incepe la momentul 15 tot cu durata 10=> tre sa dureze pana la 25
-la t=20 , la jumatatea tratarii intreruperii interfetei, apare cererea de intrerupere a hard
disk-ului
-nivelul de prioritate a hard disk-ului 4<5 => hard disk ul se suspenda, punandu-l
in asteptare, lasand interfata seriala sa-si termine lucrul
=> acum avem 2 mom in asteptare: una care nu a incepu si una care nu s-a finalizat
-nivelul de prioritate al imprimantei e 2 care e mai mic fata de cel al hard disk-ului care e
4 => hard disk-ul poate sa intre sa-si trateze intreruperea la momentul 25=> de la 25->35
se trateaza intreruperea pentru disk
-inainte de a ajunge in productie tre sa facem niste teste, inclusiv verificarea interfetei
PIO
In exp nostru:
-la adr 0-> se aloca spatiul necesar EPROM ului
-la adr 32K-> se aloca spatiul necesar mem RAM
- la adr 64K-> se aloca spatiul necesar interfetei PIO
-ce se vede hasurat e o zona de memorie mapata
-proiectand un
sistem noi trebuie sa
dam criteriile
importante de care
trebuie sa tinem
seama; sa dam
valorile de
parametrii la care
vrem sa
ajungem(adica ce
performanta dorim
sa atingem); si sa
spunem relatia
dintre ele
Exemplu particular
-tot schema de chip pentru Intel Core i7
-se obs cele 2 canale de memorie - 2
memorii DDR-uri; canalul PCIe(express);
DMI(Direct Media Interface); interfata de
disc; pe dreapta: semnalele de diagnoza,
de monitorizare termica, de gestiune a
puterii; senzorul de putere; semnale de
configurare si alte semnale; jos- ceasul,
alimentarea si masa
-observam dialogu care se face cu liniile cerere de intrerupere, liniile de date pt transfer
intr-un sens sau altul sau bidirectionale si semnalele de comanda, read RD/write WR
pentru sens, A0 pt prima linie LSB-ul a liniilor de adresa si chip selectul CS, pt control
-fiind un controler de intreruperi cu 8 intrari, s-a marcat aici o anumita alocare: pentru
IRQ0-semnalul de ceas; IRQ1-tastatura; IRQ5-disk-ul; IRQ7-imprimanta
-daca avem nevoie de mai mult de 8 linii atunci putem zice in felul urmator:
-daca nu avem la dispozitie alte circuite, alte chip uri, doar 8259A, atunci in
momentul in care s-a umplut, deci am pus 7 periferice pe liniile de intrare ale acestui
controler, pe ultima ramasa vom pune un alt controler (alt 8259A), ca si cum ar fi o
unitate I/O care se conecteaza. Astfel ea ocupa o singura linie de intrare, dar ea in sine are
alte 8 linii de intrare => in acest mod putem gestiona cele 7 canale alocate direct
perifericelor plus inca 8 periferice pe care le pune la dispozitie al 2 lea controler, adica
15. Daca avem nevoie de mai multe putem pe cele 8 linii alea primului controler sa
punem alte 8 controlere cu cate 8 intrari fiecare.
C.Magistrala
Magistrala -este canalul de comunicatie, acea artera de trafic pe care se face orice tip de
transfer in interiorul arhitecturii unui calculator
-ca o magistrala sa functioneze corect trebuie sa existe un cod rutier, adica un
set de reguli de circulatie care sa faca ca tot acest flux care circula pe magistrale sa se
desfasoare in bune conditii => reprezinta protocolul de magistrala
3)Transferul de date
- ciclu-perioada completa in care se desfasoara un transfer care dupa aceea se poate
repeta cu alte date
a)magistrale secventiale: sunt cele prin cicluri, in care fiecare ciclu poate sa fie de
citire/scriere in/de la memorie si la fel cu dispozitivele I/O si cu circuitul DMA
b)magistrale tranzactionale: nu au cicluri => fiecare transfer e divizat la randul lui
in faze sau etape, astfel, magistralele tranzactionale vor putea fi tratate cu o diagrama de
stare pt a vedea in orice moment in ce stare suntem si in ce stare putem sa evoluam
ulterior
Este tipul ce se folosea pentru configurarea transferurilor pe placa de baza si mai tarziu a
devenit magistrala mezanin.
a. Doar magistrala
backplane care face legatura
intre processor, memorie si
traffic I/O
b. Procesorul si memoria
lucreaza pe un singur canal
a.i celelalte canale sa fie
folosite pentru sarcine
specifice
c. Combinatia tuturor
In stanga :
- in interiorul CPU-ului avem magistrala On-Chip, cea care este integrata in nucleu
procesorului si face legatura intre ALU si registrele interne.
- cele doua magistrale de intrare in ALU care sa aduca operanzii
In afara cipului CPU avem magistrala de memorie care face legatura intre CPU si RAM
prin controllerul de memorie si magistrale de I/O care fac legatura cu memoriile externe.
Viteza=numarul de linii* frecventa de ceas si rezulta ceva exprimat in biti/s dupa care noi
il transformam in octeti/s impartind rezultatul la 8. (B/s)
Pt viteza de transfer trebuie sa ne uitam la cantitatea de date si in ce interval de timp.
Viteza de transfer- debitul de transinformatie( ce cantitate de informatie in biti se
transforma in unitatea de timp adica secunda)
Avem reprezentarea diagremei de timp.Este magistrala intre procesor si memorie adica se
pot face transferuri intre CPU si RAM deci de citire/scriere.Diagrama de timp ne arata
succesiunea evenimentelor, desfasurarea in timp, momentele principale, conditionarile, ce
intervale de timp sunt necesare pt mentinere si cum se deternima ele in relatia
cauza/efect.
Liniile implicate sunt: ceasul, liniile de adrese si de date, semnalele de comanda(MREQ)
si sensul transferului(citire/scriere).In cazul nostru avem un exemplu de citire din
memorie a procesorului. Observam ca semnalul de ceas nu este ideal(nu este
dreptunghiular) ci este trapezoidal.Asta inseamna ca vom tine cont si de durata
frontorilor(cat dureaza sa creasca/coboare frontul)
Pentru un semnal de ceas corect aceste fronturi nu trebuie sa depaseasca 5% fata de
perioada de ceas.
Tot ce este marcat cu gri este zona ce nu ne intereseaza.
Dorim sa citim din memorie: pe semnalul de adresa punem valoarea adresei din memorie
de la care vrem sa citim( se marcheaza comutarea semnalului de adresa)
TAD – intervalul de timp intre frontul crescator din T1 si cmutarea semnalului din
adresa.
Semnalul de date a aparut abia in tactul 3 din cauza memoriei(din cauza timpului de
acces).Daca memoria este mai rapida poate pune datele chiar in T1, daca este mai lenta
apare o intarziere.
Cand deja adresele au aparut noi trebuie sa spunem ce vrem sa facem la acea adresa(sa
scriem sau sa citim). Deci se activeaza MREQ tot in tactul T1 dar cu un anumit delay fata
de comutatrea adreselor marcat cu TML.
TML: M: Memory; L:Low ( Timpul care trece intre punerea semnalului de adresa si
activarea smnalului MREQ)
Acea comutare vine la un anumit delay adica TM( intervalul la care se activeaza Memory
request fata de caderea frontului din T1)
Semnalu RD ii spune memoriei ca de acolo trebuie preluata o data.
TRL – timpul care trece intre frontul descrescator in T1 si comutarea pe 0 a semnalului
RD
Pe tactul T2 nu se intampla nimic( semnalul de WAIT s a comutat din cauza faptului ca
DATA este activat cu delay deoarece este lenta)
In ciclul T3 apar datele(memoria raspunde punand pe liniile de date cuvantul specificat in
T1)
Datele se mentin un interval de timp pentru a fi preluate pe magistrala.Dupa ce au fost
preluate, momentul de preluare este frontul descrescator deci se poate ridica semnalul de
MREQ dupa TMH, se poate ridica semnalul de RD prin TRH si apare semnalul TDH de
mentinere a semnalului de read.
Diagrama s-a desenat pt fi= 100MHz ( 1/10^8=10ns- durata unui ciclu de ceas)
Pentru toate aceste intervale create prin relatia cauza-efect intre evenimentele care au
avut loc s-au creat aceste conditii ce trebuie respectate:
-unde avem doar valoare maxima acel interval nu are voie sa dureze mai mult de..
-unde este valoarea minima nu are voie sa fie mai scurt de..
-unde este 0 acolo intervalul trebuie sa existe(sa fie pozitiv)
Dezavantajul major a magistralei sincrone: ea va dura mereu un numar complet de
perioade de ceas( durata totala a unui ciclu de magistrala va fi mereu 2T- mai rapida, 3T,
4T deci nu putem avea valori intermediare). Totul se masoara in etaloane multipli de T.
Acesta este un dezavantaj deoarece nu avem valori intermediare.Orice transfer care real
ar dura intre 3,1 si 4 va fi tratata in 4.
Magistrala asincrona nu mai are semnal de ceas, dar ca sa se faca o evidenta ff corecta a
comutarilor, a evenimentelor, se introduc doua semnale suplimentare de comanda:
-MSYN (Master)
-SSYN(Slave)
Tehnica folosita in acest caz este protocolul de Full Handshake.Este tehnica aceea in care
2 parteneri se pun de acord si vor folosi aceeasi parametrii de comunicatii.
Comutarea unui semnal in sensul activarii o va determina pe cealalta.Masterul este
primul care comuta iar slave-ul este cel care raspunde.
Tehnica se realizeaza astfel:
-se activeaza MSYN dupa ce s a pus adresa, s-a specificat accesul la memorie (prin
activarea MREQ), s-a specificat faptul ca va fi o citire( prin activarea RD) se pune
MSYN( semnalul de sincronizare de la master ne spune ca procesorul este gata sa
primeasca date pe care doreste sa le citeasca de la slave(memorie))
-In momentul in care s-a activat sincronizarea de master asteptam rezultatul citirii din
memorie( vine dupa un timp care este timpul de acces)
-In momentul in care el a pus datele activeaza SSYN (memoria a raspuns).In acest
moment datele pot fi preluate.
-Dupa activare SSYN dezactivam toate celelelate semnale deoarece datele au fost
preluate.
Marele avantaj este acela ca daca dorim un ciclu mai rapid si pune o memorie mai buna(
chiar si cu 1ns aceasta cantitate se va simti la ciclul de transfer).
In concluzie si o crestere a performantei infime poate fi simtita la aceasta metoda
asincrona.
Aceasta diagrama este tot o diagrama de citire pe magistrala asincrona dar diferenta in
acest caz este ca citirea nu se mai face pe cuvant ci se face pe blocuri.Un bloc poate
contine un pachet de date.
Aceasta este tehnica de citire in rafale(burst) – se da o singura data adresa si se citesc
atatea adrese consecutive cat se specifica a fi lungimea pachetului.
Deosebirile in aceasta diagrama:
-in valoarea countului trebuie sa precizam care este lungimea pachetului( in cazul nostru
4)
- trebuie sa spunem ca citirea se face pe blocuri( cu semnalul BLOCK)
In ciclul T1 se pune adresa inceputului pachetului, se pune lungimea pachetului de la
acea adresa, se activeaza MREQ, RD si se activeaza si BLOCK.
La sfarsitul ciclului T1 inca nu au aparut datele deci se va activa imediat si semnalul de
WAIT.
In ciclul T3 au aparut datele( delay de 2 perioade de ceas) in care apare cele 4 blocuri de
date citite in ordine.Putem ridica semnalul de WAIT.Este suficient sa preluam primul
bloc din pachet dupa care putem ridica restul semnalelor.
Protocol tranzactional – protocol in care ciclul de magistrala are mai multe faza sau etape
prin care se poate face o trecere de la o stare de alta.
Fiecare transfer are 3 faze:
-Request(REQ) - faza de cerere de transfer
-Transfer(XFER) - transferul propriu zis de citire/scriere
-Acknowledge(ACK) – confirmarea terminarii si corectitudinii transferului de date din
acel ciclu de magistrala
Transferul poate dura oricat in functie de lungimea pachetului de date cerut( se poate
ramane in aceasta stare in functie de lungime)
Exemplul are nuante diferite( masterul A si masterul B)
Fiecare master face altceva: pe magitrala putem citi o data de o adresa si sa scriem o data
de la alta adresa.
EX: Masterul A(gri) este cel care citeste, masterul B este cel care scrie si dupa care se pot
inversa.
Masterul B face o cerere de transfer, asta inseamna ca trebuie sa puna dupa faza de REQ
adresele de la care vrea sa citeasca.
Punand aceste adrese asteapta sa treaca la faza XFER.Memoria raspunde mai greu deci se
termina cu totul in ciclul 4.
Masterul A are faza de REQ de unde porneste comutarea adreselor spunand ca vrea sa
faca o citire.Faza de transfer incepe dupa 4 perioade de ceas deoarece o data intarzierea
este data de timpul de acces dar el trebuie sa astepte pe linia de Read sa se termine citirea
anterioara a masterului B.
CURS 10
- la schema2 (pt cazul cu multe disp master): se repartizeaza aceeasi schema1 cu 2 niveluri de
prioritate; avem 2 bus grant si 2 bus request (2 perechi de semn). Ex: pe bus request 1 pune disp
1/3/5 si pe 2 punem 2/4 => am separat pe 2 niveluri de prioritate.
- la schema3 (alg cu cereri independente): fiecare unitate master poate adresa arbitrului o cerere de
magistrala / iar arbitrul poate acorda unuia singur la un mom magistrala prin BG. La schema asta
nu se vede pe schema ce disp are prioritatea cea mai mare ( toate au acces direct, criteriul distantei
fata de arbitru nu functioneaza aici ). Care e ordinea prioritatilor aici, cum se alege? -> E
problema doar at cand 2+ disp master trimit cererea pt acces la magistrala in acelasi timp. Solutie
software: arbitrul trb sa aiba o configuratie care printr-o anumita formula de repartizare a
prioritatilor sa aiba ..; ex: realizam arbitrul printr-un FPGA pe care il putem reconfigura (software)
in ordinea dorita pt orice configuratie posibila ( pt orice nr m ).
- la schema4: pooling-ul intreaba rand pe rand pe fiecare disp ( 1,2...m ); cand cineva are nevoie
interogarea asta se opreste pt ca intalneste un semnal de bus req de la acel disp; daca magistrala e
libera arbitrul i-o acorda pe linia de confirmare si disp respectiv preia controlul magistralei ( pe
linia de bus ).
De ce trebuie log2m linii de interogare? -> pe linie s-a format un cod (binar) care de ex: pt
m=8 avem cod de log28 = 3biti din care pot avea 8 combinatii posibilie pt fiecare disp. (000, 001,
... )
Cum facem interogarile? Se fac pe rand, cand ajunge la m si il interogheaza porneste de la capat cu
1.
Linia de interogare este linie cu intrari binare in care avem atatia biti cate combinatii se pot face pe
2m. Nu este linie speciala pentru fiecare ci o singura linie in care s-a format un cod in care pe 3
pozitii binare
Poate genera 8 combinatii.
Pentru a obţine accesul la magistrala, o unitate trebuie să verifice indeplinirea a trei conditii:
a) sa verifice dacă magistrala este libera;
b) sa aiba semnalul BUS BUSY dezactivat;
c) dacă linia de arbitraj a ajuns pana la el (prezenta la intrarea sa este libera).
- schema2: schema descentralizata circulara, arbitrul e prezent printr-un bloc la fiecare disp master
in parte. Disp acestea vor cere magistrala pe bus req, ele vor primi confirmare pe semn ack si vor
avea semn bus grant activat (deci pot prelua magistrala) daca nimic de la stanga lui nu i a intrerupt
aceasta solicitare.
Cu alte cuvinte, daca un disp a fost prioritar si a preluat magistrala, dupa cand trecem mai
departe el devine cel mai putin prioritar (il trecem la coada) -> prin deplasare circulara.
- PCI: el e cel care a inlocuit standardul ISA ( Industry Standard Architecture ) si este o mag
sincrona;
a fost proiectat de Intel la liber ( fara licenta ) ai lumea sa l poate folosi free;
introduce un controller PCI ( controller de mem care lucreaza printr-o conexiune PCI Bridge
dedicata, de mare viteza ); el asigura astfel conex pe magistrala mem cu orice alt tip de disp care se
poate conecta ( ex: controller de retea/controller video/controller din alt standard (SCSI) );
Controlerul SCSI este tot un dispozitiv PCI, prin care se pot conecta la magistrala alte
dispozitive: HDD, SCN (scanner) etc.;
orice disp legat intr-un slot PCI este vazut ca un disp PCI;
La fMAX = 66 MHz, transfera cel mult 64 de biti simultan => largimea de banda = 528
MB/s (prima versiune?).
Cum poate fi fol standardul PCI sau PCI-X (urm versiune) in diferite configuratii:
- schema1: pt procesoarele uni-core, Northbridge gestioneaza discutia cu memoria ( CPU-mem ) si
cu adaptorul grafic ( monitor ), Southbridge gestioneaza conexiunile externe din diferite standarde
+ comunicarea cu mem secundara.
- schema2: procesoarele dual-core, PCI se mentine, el aici asigura legatura prin controllere
specializate cu alte tipuri de magistrale. Rolul Southbridge ului este acum putin mai redus deoarece
cele 2 procesoare solicita acum mai mult Northbridge ul fata de ex cu uni-procesor.
Cum lucreaza magistrala PCI aici: - ea este sincrona, deci lucreaza prin coordonare cu un semnal
de tact, este multimaster si tranzactionala. Aici se lucreaza pe tranzactii, tranzactile sunt etape/faze
ale unui transfer pe magistrala si le putem gestiona printr-o diagrama de stare in care vom vedea in
orice moment in ce stare ne aflam si in ce stare putem trece ulterior.
=> Operatiile de read/write sunt gestionate prin 3 faze, respectiv 2 faze(cicluri).
Operaţia de citire:
ciclul 1 – disp master (procesorul) pune adresa de la care citeste pe magistrală;
ciclul 2 – se retrage adresa de pe magistrală, care este cedată slave-ului ( proces de inversare - se
multiplexeaza aceleasi linii de adresa fizice intre master si slave );
ciclul 3 – slave-ul pune pe magistrală data solicitata.
Operaţia de scriere:
ciclul 1 – master-ul pune pe magistrală atat adresa, cât şi data;
ciclul 2 – slave-ul preia de pe magistrală data (nu mai este nevoie de inversare/turnaround).
O tranzactie dureaza minimum trei cicluri, iar lungimea blocurilor ( ce cantitate de date trb sa
scriem/citim ) transferate nu e limitata.Ciclurile de magistrale sunt foarte numeroase, nu trebuiesc
retinute toate. Partea speciala la PCI este ca da alte perechi master-slave, adica in loc de master
spune initiator si il noteaza cu I iar in loc de slave spune target si il noteaza cu T
Avem 3 situatii distincte in primul proces avem opratii de citire, apoi avem o perioada libera si
apoi o perioada de scriere.Liniile de date si de adresa sunt multiplexate de semnalul AD asta
inseamna ca pe aceleas linii fizice mai inainte se pune adresa, adresa a fost pusa de master,operatia
de inversare turnaround,urmand ca slav, memoria raspunde cu datele citite pe aceleas linii fizice.
- grafic: avem acel Idle deoarece s-a intrat in T4 cu preluarea datelor;
C/BE – clock/byte enable;(sensul de citire)
Adresa de pe linia AD este o adresa de citire si este corelata cu o comanda de read, urmand
validarea operatiei datele fiind preluate.Deoarece datele au fost preluate, intrand in T4 acesta este
ciclu liber. Observam un ciclu de scriere in care prima etapa a tranzactiei punerea adreselor si a
datelor(la scriere se spune unde si ce anume se pune pe aceleas linii, nu mai este nevoie de
turnaround, pe clock/byte enable s-a dat comanda de write, iar datele s-au validat pentru scriere.
semnalul FRAME – ne arata cat dureaza validarea ciclurilor acestor operatii;
corespondenta intre master-slave are loc pe semnalele IRDY (init ready) si TRDY (target
ready);
DEVSEL – device selection (care e masterul cu care trb sa intre in legatura, in caz ca avem
mai multe disp master).
In concluzie avem 3 faze/cicluri la citire si 2 faze/cicluri la scriere nu avem turnaround, dialog
master-slave prin IRDY TRDY si selectia dispozitivului afisat.
Arbitraj PCI: - cu schema3 de la struct centralizata
- e fol cand avem de transferat cantităţi mari de date într-un timp foarte scurt: HD (hard),
CD/DVD, LPT, SCN, VID etc.;
- toate disp conectate la SCSI sunt vazute ca SCSI ( ca la PCI asemanare );
- magistrala tranzactionala, poate fi repr printr-o diagrama de stare in care comunicatia este tot
intre initator si tinta (slave).
- fiecărui dispozitiv SCSI (ţintă) îi este alocat un identificator unic SCSI ID (valoare întreagă);
-starea de baza este starea de magistrala libera in care magistrala se poate intoarce dupa oricare alta
stare. Cand are loc o tranzactie propriu zisa magistrala libera trece in faza de arbitraj(stabileste
care din dispozitivele cu ID configurat preia magistala) faza de selectie, daca se repeta operatia
avem faza de reselectie, dupa care faza de transfer propiu zis a operatiei si anume bucla care apare
in partea dreapta sus inseamna ca acest transfer poate sa dureze oricat se poate ramane un timp
oarecare prin ciclare in aceas faza in sensul transferul continua si cantitatea de date este mare. De
la fiecare faza se poate ajunge inapoi la faza de magistrala libera. SAS ultima versiune din 2017.
- am vazut-o de cele mai multe ori prin schemele Northbridge pt ca prin north se facea legatura cu
placa de afisare (monitorul), si acest standard de mag realiza gestiunea mem grafice; era o
magistrala paralela, rolul ei era sa preia sarcinile de comunicatie cu monitorul si sa degreveze
astfel CPU de aceste lucruri. Folosea o procedura specializata de acces a memoriei, deci este
practic un tip DMA care acceseaza exact zona grafica din mem pt a prelua informatia despre
afisare (adancimea de culoarea,rezolutia etc). Realiza aceasta comunicatie in mod pipe-line.
- poate atinge lărgimea de bandă de 2.132 MB/s, la viteza 8× (versiunile 3.0 și 3.5/UAGP);
- superioară magistralei PCI, dar abandonată după 2004, în favoarea magistralei PCI Express
- modul control – folosit pentru comenzi simple către dispozitive, primind ca răspuns starea
dispozitivului periferic la un moment dat (de exemplu, pipe-urile de management 0);
- modul izocron – garantează o viteză constantă (nu neapărat cea maximă), dar cu posibilităţi
de a pierde date (de exemplu, aplicaţii audio-video în timp real);
- modul întrerupere – pentru periferice care au nevoie de răspuns rapid (cu latenţe limitate)
(de exemplu, mouse, tastatură etc.);
- modul bulk – pentru transferuri mari şi lungi de date, folosind toată banda liberă, fără a
garanta banda (de exemplu, transferuri de fişiere).
- modurile super-speed și super-speed+ – introduse la ver. 3.0 (2008), respectiv, ver. 3.1
(2013), 3.2 (2017) și USB4 (2019), pentru transferuri foarte rapide și masive de date.
Fiecare transfer USB are asociat un descriptor.
- la desen: Endpoint e partenerul de dialog in transferul pe magistrala care poate fi ales dintre
tipurile de transfer anterioare. Setarile de interfata implica 3 tipuri de descriptori: de jos in sus
descriptori de disp, de config, de interfata.
tag – formatul datelor (specific protocolului); channel – adresa de canal; tcode – codul tranzacţiei
(asincron, isocron, pachet de date, de control etc.); sy – codul de sincronizare (specific aplicaţiei)
destination id – 16 biţi: 6 biţi pentru node ID (63 de noduri) şi 10 biţi pentru bus ID (1024
magistrale); tcode – tipul tranzacţiei; pri – nivel prioritate (câmp neutilizat); destination offset –
locaţia de adresă din interiorul nodului ţintă (target)
- la desen: driverul software este cel unificator, pe partea dreapta avem layerele de protocol
serial/fizic de legaturi de date si tranzactional iar coloana din stg e layerul de gestiune de
magistrala (cel mai imp) si el e alc din 4 blocuri: controller de noduri – face legatura cu nivelul
legaturii de date si nivelul fizic + gestioneaza disp slave, cycle master – face trimiterea pachetelor
de initializare repetitive la un anumit interval fix de timp, IRM (Isochronous Resource Manager) –
gestioneaza largimea de banda a magistralei de date si aloca numerele de canal in modul de
transmisie multinod, Bus Manager (BM) –
gestionează distribuţia de putere(energie) pe cabluri şi afişează harta topologica şi diagrama de
viteza (la fiecare nivel tranzactional)
Ex de schema cu arbitraj:
➢ Fibre Channel
- e un standard care face tranzitia intre magistralele cu fire pe baza de cupru si cele pe suport optic;
- Tehnologie de interconectare cu fiabilitate ridicata, pentru comunicatii concurente de mare
viteza între staţii de lucru, servere, sisteme de stocare a datelor etc., aflate la distante mari;
- Standard folosit iniţial la supercomputere, extins apoi la sisteme SAN (Storage Area Network);
- Foloseşte cabluri pe fibra optica, dar cu interfaţă electrică, iar porturile nu sunt neapărat HW;
- Protocol similar TCP/IP, transportând, în principal, (accepta) comenzi SCSI;
- Protocolul nu foloseşte modelul OSI-ISO, dar are tot cinci niveluri:
nivelul fizic (FC0): cabluri, conectori;
nivelul legăturii de date (FC1): codarea semnalelor pe linie;
nivelul de reţea (FC2): nucleul FC, cu protocoalele de bază şi conexiunile port-la port;
nivelul serviciilor comune (FC3): algoritmi RAID şi de criptare, conexiuni multiport;
nivelul de mapare al protocoalelor (FC4): încapsulează diversele protocoale folosite.
- Gama de protocoale încapsulate cuprinde: SCSI, TCP-IP, HIPPI-FP (High Performance
Peripheral Interface – Framing Protocol), FICON (Fibre Connection) etc.;
- Exista 2 tipuri de porturi: porturi ale nodurilor, porturi generale (catch-all);
- Exista 2 tipuri de switchuri: switch-uri modulare, cu un număr ridicat de porturi, bazate pe
sloturi, fără erori SI switch-uri de dimensiuni reduse, în configuraţii fixe (semi-modulare), fără
redundanţă;
- Gama de viteze: 1, 2, 4, 8, 16, 32, 128 (2016), 256 Gb/s (2019), pe distanţe de 0,5m – 50km;
- e vorba de un standard care integreaza un standard de mag cu unul de retea, deci limitele sunt
flexibile
-la desen: Topologii Fibre Channel (N_Port – port al unui nod, F_Port – port al reţelei fabric):
switched fabric (FC-SW): dispozitive/bucle conectate la switch-ul fabric, similar modelului
Ethernet;
punct la punct (point-to-point, FC-P2P): două dispozitive conectate direct (limitat, dar simplu);
buclă arbitrată (arbitrated loop, FC-AL): dispozitive dispuse circular, similar reţelei token-ring;
- in stanga e configuratia stea in dreapta e configuratia token ring (structura in bucla);
- fiecare legatura din stg e bidirectionala pe 2 fire unul e transm unul e recept.
➢ InfiniBand
- la desen: Exemplu simplu de arhitectură InfiniBand fabric: fiecare nod reprezintă fie un dispozitiv
gazdă
(server), fie un dispozitiv I/O (subsistem RAID), iar reţeaua InfiniBand Fabric poate consta dintrun
singur comutator (caz minimal) sau dintr-un set de comutatoare interconectate şi router-e.
Avantajele conexiunii seriale punct la punct:
- necesită doar patru legături (în comparaţie cu PCI, de exemplu);
- oferă capacitatea maximă a legăturii între două puncte finale, fiind dedicată acestora;
- se elimină concurenţa la magistrală şi întârzierea din suprasarcini în arhitectura partajată (+ partea
de arbitraj);
- oferă lărgime de bandă net superioară faţă de conexiunile cu lungimi mult mai mari;
Lărgimea de bandă optimizată (2017): 50 Gb/s (1x), 200 Gb/s (4x), 400 Gb/s (8x) și 600
Gb/s
(12x). În viitor, se anunță pentru 12x valori de 1200 Gb/s (după 2020) și 3000 Gb/s (după 2023).
- la desen: pe un cip de controller se leaga un sw prin care se pot conecta prin linii seriale paralele
imperechate orice tip de disp... .
-ce este caract ascetui switch, daca magistala comuna (cea din partea de sus cea lata pe gri) este o
magistrala partajata care isi imparte largimea de banda in functie de cate dispozitive sunt conectate.
Arhitectura PCIExpress se bazeaza pe switch, in acest caz fiecare disp PCI primeste intreaga
largime de banda si asta constituie diferenta majora intre PCI vechi si asta: nu se mai imaprte
largimea de banda cum era inainte.
Pt a ne da seama de dimensiune ne uitam in tabel unde avem rata de transfer si lungimile de banda
pentru versiunile care au aparut din 2003.
Arhitectura simpla cu 3 porturi PCI Express, aceste porturi sunt de 3 tipuri, un disp PCI legat direct
de portul 2, un controler PCI care poate lega mai multe device-uri PCIle si o legatura pe protul 1
printr-un switch care poate conecta mai miulte disp PCIle.
- la desen: retinem doar unde apare PCIe ( de ex sus stanga la placa grafica unde pot fi 2 cazuri ... )
-standard de comunicatie care poate comunica atat la nivel grafiuc cu procesorul cat si la nivel de
northbridge cat si la nivel de southbridge.
STUDII DE CAZ:
O arhitectura pt calc PC de tip desktop in care se obs ca PCIle este fie inlocuitor de AGB pt
comunicatia intre northbridge si placa grafica fie o varianta de comunicatie intre cele doua chip-
seturi northbridge si southbridge.Pot exista mai multe porturi externe pentru conexiuni cu placa
Ethernet sau cu alte disp PCIle.
Arhitectura de sist portabil (laptop sau notebook) in care se obs ca PCIle apare din nou ca legatura
intre northbridge si placa grafica asigura comunicatia intre cele doua chip-seturi northbridge si
southbridge apare in multiple ipostaze pe southbridge ata prin conectarea disp integrate pe placa de
baza cat si ca variante pentru USB.Avem o placa dedicata Express Card prin care se asigura
comunicatia cu southbridge. Prezenta lui la toate niv este o dublare pe USB
Observaţie: R = l6R1 + R2
Folosind acest tabel cu aceste 16 operatii descrise in binar pe 4 biti si cu ecuatiile
logice corespunzatoare vom ajunge la schema urmatoare
Schema bloc a micromaşinii cu format vertical (mB)
Schema asta e mult mai concentrata adica
Cele 16 registre generale le regasim, amux-ul, ALU
In partea din dreapta vedem ca schema de comanda din dreapta mijloc se pastreaza
adica microcontorul, blocul de incrementare si multiplexorul.
Memoria de comanda care da registrul micronstructiune acum e mult mai mica
pentru ca microinstructiunea a ajuns la 12 biti
Noul registru microinstructiune are acum 3 campuri
COP – care comanda inainte ALU (Codul operatiei)
R1
R2
In rest, este la fel
Secventiatorul de micromasina,
ceasul in 4 faze
si decodorul COP care stabileste ce operatie se executa in functie de codul
acesteia.
• Blocul ŞI: 16 porţi ŞI care permit câmpului R1, după traversarea decodorului
R1, să comande golirea unui registru pe magistrala A şi încărcarea sa de pe
magistrala C. Aceste operaţii nu pot fi simultane necesitatea porţilor ŞI, care
determină în timpul subciclului 4 încărcarea unui registru când această operaţie
este validată de decodorul COP.
Blocul SI apare inainte de intrarea decodorului R1 in registrele generale
Blocul SI este necesar tocmai ca un resgitru intern sa fie golit inainte de a fi scris
adica tot la fel ca la campul COP sa avem grija sa nu scriem ceva peste o valoare
care urmeaza a fi citita
Nanoprogramarea
Nanoprogramarea este o derivata de microprogramare in momentul in care ,
pornind de la memoria de microprogram si de la instructiunile pe care le contine
facem o analiza statistica a instructiunii.
Adica vedem intr-un numar mare de microprograme de cate ori este folosita fiecare
microinstructiune in parte
Vom constata ca nu toate microinstructiunile sunt folosite la fel.
Unele sunt folosite mult mai frecvent si altele mai putin
Ideea a fost
De ce sa nu izlam intr-o noua memorie pe care o numim “Memorie de
nanoProgram” acele microinstructiuni folosite mai des
a. Microprogramare convenţionala
Variantele pentru cele 2 reprezentari de memorie de microprogram( cea care
contine microinstructiunile) in varianta conventionala numarul de microinstructiuni
n=256 iar w=61,32,12
Deci ne referim la dimensiunea memoriei
In varianta nanoprogramata izolam o memorie de nanoprogram cu doar m
instructiuni in care m mult mai mic ca n, de acelasi numar de biti astfel incat acolo
sa punem microinstructiuni mai des utillizate, dar ca sa o adresam avem nevoie in
continuare de memoria de microprogram care va avea acelasi numar de
mmicroinstructiuni dar de dimensiune log2m
Deci
Daca m= 32, acolo memoria de microprogram am avea campuri de 5 biti
pentru ca pe 25 putem forma 32 de combinatii
b. microprogramare şi nanoprogramare
Exemplu. Fie un program de nw = 4096 100 biţi, cu m = 128 instrucţiuni
folosite mai frecvent.
Rezultă o nanomemorie cu mw = 128 100 biţi şi o memorie de comandă de n
log m = 4096 7 biţi.
Avantaj: câştigul faţă de programarea convenţională este de:
(4096 100) – (4096 7) – (128 100) = 368.128 biţi.
Dezavantaj: nanoprogramarea presupune două accese la memorie în loc de unul
singur
Programul din exemplu are 4096 de microinstructiuni ( deci 4k ), fiecare
microinstructiune are w=100 de biti.
Dintre aceste 4096de microinstructiuni, 128 sunt folosite mai des.
Deci in cazul nostru m fiind 128 => log2m=7
atunci calcul[m rezultatul obținut.
NanoMemoria va avea w*m = 128*100biti
iar memoria de microcomanda va avea m ( care este 4096) *7 ca numar total de
biti
Deci rezultatul ar da valoarea dimensiunii celor 2 componente de micromemorie si
nanomemorie
Vrem sa facem acum o comparatie-+
Calculam dimesiunea memoriei de micropogram ( 4096*100) din care scadem cele
2 componente astfel calculate si vedem ca avem o economie de peste 360.000 de
biti
Deci in varianta de nanoprogramare in care separam intr-o memorie distincta
microinstructiunile mai des utilizate rezulta la capacitate o economie deci avem
nevoie de o memorie mai mica.
Dar dezavantajul este ca naoprogramarea presupune 2 accesari la memorie
Intai accesam mempria de microprogram din care se va selecta instructiunea
din memoria de nanoprogram
Deci memoria este mai mica, capacitatea scade, costurile scad, dar durata este mai
mare pentru ca la microprogramarea conventionala aveam nevoie de o singura
adresare, aici avem nevoie de 2 adresari
Sistemul de operare este cel rezident in memoria ROM cel care guverneaza toate
actiunile care se intreprind la nivelul sistemului de calcul. Vom discuta doar despre
gestiunea memoriei virtuale pe care o vom pune in legatura cu memoria
fizica(memoria principala sau memoria de lucru RAM). Vom observa legatura
intre memoria fizica si memoria de lucr, modul de gestionare si vom trata cele
doua componente: operatiile de paginare si de segmentare.
Poziţionarea nivelului sistemului de operare în structura stratificată a nivelurilor
unui calculator se afla deasupra masinii traditionale si sub nivelurile(acestea nu
sunt reprezentate pe schema), aceste niveluri sunt operatiile de traducere
asamblare, compilare.
Observam ca el realizeaza interpretarea partiala a comenzilor sistemului de operare
la nivelul masinii traditionale si mai departe la nivelul microprogramat.
Din punct de vedere al definitiei memoria are doua abordari(doua componente):
memoria fizica si memoria virtuala.
• fizică:
o liniile fizice de adresă externe procesorului (lăţimea magistralei de
adrese, m);
o o spaţiul de memorie fizic instalată în sistemul de calcul (capacitatea
de adresare fizică, 2m );
• virtuală:
o spaţiu de memorie creat de SO, care conţine un model al memoriei şi
al adreselor de memorie pe care un program le are la dispoziţie (este
mai mare decât memoria fizică);
o suportul fizic (HDD) pe care SO salvează zone din memoria totală
disponibilă pentru a asigura spaţii libere în zona de memorie fizică,
destinate porţiunilor de cod sau de date cu care programul lucrează la
momentul respective.
Mem fizica se reprezinta prin doi parametrii care sunt legati. Daca specificam
latimea magistralei de adrese (adica numarul liniilor de adresa ) de pe magistrala
de sistem m, atunci avem practic numarul de linii fizice pe care se pot face
combinatii binare. Aceste combinatii binare ne vor arata numarul total de locatii
adresate sau de celule de memorie care pot fi scrise sau citite. Deci capacitatea
fizica a memoriei este 2m, in care prin m notam latimea magistralei( a nu se
confunda cu largimea de banda).
De cele mai multe ori in aplicatii se constata (aceasta constatare fiind facuta de-a
lungul generatiilor de procesoare) ca spatial fizic nu este sufficient pentru
dezvoltarea unor aplicatii si astfel s-a introdus conceptul de memorie virtuala.
Memoria virtuala fiind un spatiu creat tocmai de SO astfel incat sa genereze un
spatiu de memorie(spatiu adresabil) care depaseste capacitatea memoriei fizice.
Daca facem acest lucru este evident ca trebuie sa folosim un artificiu si anume un
spatiu virtual care depaseste capacitatea de memorie a RAM-ului trebuie
dezvoltat pe alt support fizic. De cele mai multe ori suport fizic este discul extern
sau discul intern, deci memoria secundara pe suport magnetic hard disk ul in care
se salveaza anumite zone care vor fi folosite de memoria virtuala pentru
gestionarea acesteia si asta presupune ca hard diskul are spatii libere. De multe ori
se intalneste situatia in care sistemul trimite un mesaj de avertizare In care spune
ca nu existe sufficient spatiu pe hard disk pentru dezvoltarea memoriei virtuale,
asta cand memoria fizica este aproape plina. Deci, cu alte cuvinte, trebuie pastrat
mereu un spatiu de minim 10-15% liber din capacitatea hard diskului astfel incat sa
se poate extinda aceasta dezvoltare virtuala de pagini suplimentare de memorie in
asa fel incat un program sa poate lucre cu un spatiu de adresare mai mare decat cel
fizic aflat la dispozitie.
In aceasta schema vedem cum in partea din stanga vom gaso 8 biti de 0 si 8 biti de
1 pe pozitia MSB pentru ca maxim se pot incarca 8 pagini in memoria principal si
raman 16-8 pagini neincarcate.
Ce se intampla daca in memoria fizica cea din partea dreapta toate cele 8 pagini
sunt deja pline, adica memoria RAM este incarcata complet toate cele 8 cadre de
pagina sunt mapate dar programul cere o pagina noua care e in plus de cele 8
existente dar de care este nevoie?
Paginarea la cerere vs. modelul setului de lucru
Eroare de pagină (page fault) = situaţia în care se face o referinţă la o adresă
dintr-o pagină care nu se află în memoria principală SO trebuie să citească în
pagina cerută de pe disc, să introducă noua sa adresă fizică în tabelul de pagini şi
să repete instrucţiunea care a provocat eroarea.
Reducerea numărului de erori de pagină se poate face în două moduri:
• paginarea la cerere – o pagină este adusă în memorie numai când este solicitată,
nu în avans; dezavantaj: în cazul operării prin diviziune în timp, schimbarea
repetată a paginilor devine critică:
• principiul localizării – la orice moment de timp, t, există un set al tuturor
paginilor folosite de cele mai recente k referiri la memorie se presupune că setul
de lucru (working set), w(k, t), variază lent în timp şi poate fi păstrat în memorie ca
bază de pornire pentru reducerea erorilor.
Politici de înlocuire a paginilor
Dacă memoria este complet ocupată, la apariţia unei erori de pagină, politicile de
înlocuire stabilesc care pagini trebuie să fie înlocuite. Paşii parcurşi pentru tratarea
excepţiei page fault:
1. aplicaţia accesează o pagină care nu este prezentă în memoria fizică;
2. blocul MMU (Memory Management Unit) generează excepţia page fault;
3. este aleasă o pagină goală (un cadru de pagină neocupat);
4. dacă nu este găsită nicio pagină goală, este aleasă una care urmează a fi evacuată
din memoria virtuală, această alegere fiind făcută pe baza unor algoritmi de
înlocuire;
5. dacă pagina a fost modificată, această pagină este mai întâi scrisă pe disc;
6. pagina necesară este citită de pe disc;
7. pagina este mapată în spaţiul de adrese al aplicaţiei;
8. este reluată execuţia aplicaţiei.
Atunci evident trebuie sa stabilim un mecanisc care sa ne dea care pagina din
memoria principal deja incarcata este cea la care putem sa renuntam, sa o
eliminam, astfel incat sa putem sa o aducem o pagina noua si acest lucru se face in
momentul in care sistemul de operare da un anumit semnal care se numeste eroare
de pagina, adica aplicatia in executie cere o locatie care se afla la o adresa dintr-o
pagina care inca nu e incarcata in RAM , daca nu este incarcata inseamna ca
trebuie sa o aduca de pe disk sa o puna in memoria principal daca are loc si daca
nu are loc sa se creeze spatiu prin eliminarea unei pagini mai vechi.
Evident ca aceste erori de pagina exact ca la cache sunt de evitat, adica trebuie sa
ne gandim la un mechanism care sa incerce sa minimizeze numarul erorilor de
pagina care se pot intalnii.
Reducerea page fault se poate face in doua moduri:
Paginarea la cerere adica aducem o pagina in RAM numai dupa ce ea a fost
solicitata nu in avans. In cazul operării prin diviziune în timp, schimbarea repetată
a paginilor devine critică.
A doua metoda de reducere este principiul localizarii si pentru asta se introduce o
functie care se numeste setul de lucru, sau working set.
Cu alte cuvinte, este o functie notata cu W si are doua variabile : k si t, deci w(k,t),
in care ne arata la fiecare moment de timp t care este multimea paginilor deja
folosite la cele mai reticente k referiri. Deci cu alte cuvinte, sa zicem, la ultimele
16 referiri au fost cerute 10 pagini. Asta inseamna ca pana la momentul t, sistemul
de operare a lucrat cu 10 pagini, si setul de lucru este multimea celor 10 pagini deja
solicitate la ultimele k referinte. Evident ca este o functie crescatoare, deci pe
masura ce trece timpul, este foarte probabil sa se ceara o pagina noua si atunci
setul se va imbunatatii adaugand o alta pagina. Dar, aceasta noua adaugare este
posibil sa nu apara la fiecare pas. Deci variatia in timp este lenta si il pastram in
memorie pe acest set de lucru ca sa stim de ce am avut nevoie. Pt ca principiul
localizarii ne spune ca daca am avut nevoie de o pagina in trecut, s-ar putea sa
avem nevoie si acum. Chiar daca spatial este deja localizata, noi o pastram acolo
pentru preferinte.
Dar daca memoria principala este deja plina, atunci trebuie sa vedem care pagina
este cea de care ne putem desparti => deci sa vedem care este cea care iese pentru a
putea aduce o pagina noua de care este nevoie. Observati ca pentru executia unui
program in cazul intalnirii unei erori de tip page fault, pasii sunt
urmatorii:programul cere o pagina. Se constata ca bitul din partea stanga adica
MSB este 0 => deci pagina respectiva nu este incarcata inca in memoria fizica, dar
este nevoie de ea. Asta inseamna ca MMU trebuie sa dea semnalul de page fault,
adica sa spuna aplicatiei „vezi ca pagina in care tu ai nevoie de o locatie inca nu e
incarcata in RAM”, va trebui sa gaseasca un cadru de pagina gol, neocupat in care
sa o aduca. Daca nu gaseste, va trebui sa scoata din memorie o pagina, dar nu
oricare, ci una de care sa poata constata ca se poate desparti fara consecinte. Deci
cu alte cuvinte, va trebui sa apeleze la un algoritm de inlocuire a paginilor care sa
ne spuna care este pagina de care chiar putem sa ne luam ramas bun pentru a
introduce pagina noua in care este referita. Daca pagina pe care o alege pentru a fi
evacuata a fost modificata, adica s-a umblat la ea intre timp cat timp era in RAM,
trebuie trecute pe disk modificarile efectuate intre timp. Dupa care, pagina nou
ceruta este luata de pe disk din memoria virtuala, este trecuta prin operatia de
mapare a adresei in memoria fizica, dupa care executia continua.
ALGORITMI DE INLOCUIRE
Mai departe vom stabili care pot fi algoritmii de inlocuire pe care-i folosim pt a
scoate o pagina veche in cazul in care se solicita prin eroarea de page fault o pagina
noua.
O sa facem o insiruire a tuturor algmoritmilor de inlocuire care se pot folosi in
cazul eliminarii unei pagini vechi in cazul in care se aduce o pagina noua. O sa
incepem cu algoritmul cu performantele cele mai bune, dar din pacate care nu este
realizabil fizic si o sa vedem imd de ce, dar care intotdeauna va fi o referinta, un
algoritm optimal, o referinta la calitatea algoritmului pe care il vom folosi. Adica
cu cat se apropie mai mult de performantele algoritmului optim, cu atat un algoritm
pe care il folosim va fi mai eficinet.
1. Algoritmul optim de înlocuire (Belady)
Fiecare pagină se etichetează cu numărul de instrucţiuni care se vor executa până
când pagina
este referită pentru prima dată => se elimină pagina cu cea mai mare valoare a
etichetei.
Dezavantaj: nu poate fi implementat (SO nu poate determina exact momentele
referirilor viitoare).
Exemplu: 8 pagini virtuale (numerotate de la 0 la 7) şi 3 cadre de pagină (page
frames) şir de referiri
Rata de page fault (pagini invalide) = 9/20.
NRU inseamna Not Recently Used, poate vi-l mai amintiti ca a fost un exemplu si
la memoria cache, fiind vorba in principiu de acelasi lucru, inlocuirea unei portiuni
de informatie care trb scoasa si adusa una noua. La NRU ni se spune inca din
denumire ca vom scoate o pagina care nu a fost folosita recent, adica care in trecut
(adica inspre stanga daca studiem sirul de referiri)n-a mai fost folosita de foarte
multa vreme. Pt a stabili care este acea pagina, pt ca s-ar putea sa fie mai multe,
introducem doi biti de stare: bitul de referinta si bitul de modificare.
Deci R este un bit care se pune pe 1 ori de cate ori acea pagina a fost ceruta in
memorie, adica referita de programul in lucru, nu conteaza daca a fost vorba de
citire sau scriere, dar a fost nevoie de pagina. Iar M este pus in 1 numai atunci cand
pagina referita este modificata, deci doar cand este scrisa si s-a inlocuit o valoarea
din interiorul paginii. Asta insemna ca R si M sunt 2 biti de stare pentru fiecare
pagina in parte si la fiecare moment de timp, ei trebuie actualizati. Adica sa vedem
daca e cazul sa ii trecem in 1 in cazul in care pagina respectiva a fost ceruta sau
modificata. Odata pus in 1, adica odata ce o pagina este referita/modificata, bitul
va ramane 1 pana cand il reseteaza sistemul de operare. Sirul de referiri, la un mom
dat, s-ar putea sa fie fff lung si atunci anulam trecutul si incepem socoteala de la 0.
Deci dupa un anumit interval de timp, cand sirul de referiri este deja foarte mare,
periodic R se pune in 0.
Sistemul de operare distinge 4 clase de pagini:
• clasa 0: nereferite, nemodificate (R = 0, M = 0); (paginile care nu au fost
nici referite, nici modificate)
• clasa 1: nereferite, modificate (R = 0, M = 1);
• clasa 2: referite, nemodificate (R = 1, M = 0);
• clasa 3: referite, modificate (R = 1, M = 1). (cele mai importante pagini, pe
care vrem sa le pastram)
Pagina eliminată este selectată aleator din clasa având cel mai mic indice.
In fiecare clasa s-ar putea sa fie mai multe pagini care se incadreaza in aceste
combinatii de biti de stare. Si atunci daca vrem sa eliminam o pagina, atunci
principiul nostrum de a nu fi folosit recent, inseamna ca trb sa alegem o pagina
care nu a fost nici referita, nici modificata, adica o pagina care nu a introdus
schimbari de care sa avem nevoie, Adica va trb sa alegem o pagina de clasa 0.
Daca sunt mai multe pagini in fiecare clasa, alegem la intamplare una dintre ele pt
ca neavand un alt criteriu de discriminare in plus fata de aceasta impartire pe patru
clase….adica daca sunt mai multe pagini in clasa 0 cand noi vrem sa scoatem doar
una, alegem una la intamplare.
Algoritmul FIFO este un alg foarte simplu. Algoritmii complicati, care se vor
dovedi si mai eficienti, sunt cei la care trb sa tinem socoteala atat in ceea ce
priveste referiri, modificari, momentele acestora; adica sa tinem seama de evolutia
unor parametrii care inseamna contoare, timere, deci cu cat un alg va necesita mai
multe resurse si cu cat va dura mai mult timp pt verificarea si compararea tuturor
acestor parametrii de pagina, cu atat alg va fi mai greu de implementat, dar va fi
mai eficient.
3. Algoritmul FIFO (First In – First Out)
Asociază fiecărei pagini momentul intrării în memorie se înlocuieşte pagina cea
mai veche.
Avem tot 20 de referiri, acelasi sir de soliticari de catre program, acelasi numar de
8 pagini virtuale si 3 cadre fizice in memoria RAM. Momentele 7,0,1, se intampla
exact cum am discutat anterior. RAM ul era gol, s-au adus paginile in ordine, la
momentul 3 s-a umplut memoria. Vine pagina 2. Acuma nu ne mai in dreapta, spre
viitor, ci acum vom analiza trecutul si evolutia starii paginilor de la inceputul
referirilor pana in acel moment. Cine a fost introdusa prima? Pagina 7 => pagina 2
intra in locul paginii 7. In momentul urmator vine 0 care exista deja in continut. In
momentul 6 vine pagina 3, nu este continuta, iar inauntru avem 2,0,1 dintre care
pag 0 a fost introdusa prima dintre acestea. => soatem pag 0 si introducem pagina
3. Si tot asa mai departe. Sirul de referiri va produce un nr mult mai mare de erori
de pagina, adica inlocuirile vor fi mai frecvente. Daca le numaram pana la capat,
vor fi 15 din 20 => deci rata de page fault va creste destul de mult, stiind ca la
Belady era 9/20. => nu e un algoritm foarte eficient, dar e un algoritm simplu pt ca
verificarile sunt putine.
Sa mai luam un exemplu tot la algortimul FIFO: in cazul in care avem 3 cadre de
pagini in RAM si referirile care se vad in partea de sus ( din exemplul de sus) ,
conform algoritmului FIFO vor rezulta 9 erori de paginare => deci 9 pagini
invalide.
Acum, sa presupunem ca avem acelasi timp de referiri, acelasi nr de pagini in
memoria virtuala, dar marit memoria fizica,deci am inlocui RAM ul cu unul de
capacitate mai mare care acuma permite 4 cadre de pagini. Logic, ne gandim ca
daca aceleasi 8 pagini din memoria fizica vor concura nu pe 3, ci pe 4 pozitii,
sansele de a gasi un loc liber vor trb sa fie mai mari. Adica e ca si cand , sa zicem,
concurenta la un examen de admitere este de 3 pe un loc si la un moment dat se
suplimenteaza numerul locurilor, toata lumea se gandeste ca „aa, am mai multe
sanse sa intru”. Se constata aici, de fapt, un paradox . Daca vom face verificarea la
4 frame-uri cu acelasi sir de referiri, com costata ca nr dreptunghiurilor incadrate
va fi 10 in loc de 9. => este contrar logicii pe care noi ne asteptam s-o vedem
aplicata. Adica daca marim RAM ul cu o pozitie si punem un cadru de pagina in
plus, vor fi mai multe erori? Da, si asta se numeste anomalia lui Belady, adica
cazul in care numarul de erori de pagina creste in ciuda marimii numarului de
spatii libere de frame-uri din memoria fizica.
Anomalia lui Belady:
Pentru unii algoritmi de înlocuire, numărul erorilor de page fault poate creşte dacă
se măreşte numărul de frame-uri (cadre de pagină).
Acest fenomen se produce in cazul algoritmului FIFO. Mai sus avem graficul care
ne arata cum variaza numarul de erori de pagina in cazul in care numarul de cadre
fizice din memoria RAM creste. Noi ne-am astepta sa scada, dar vedem ca
modificarea de la 3 la 4 este in sus, deci numarul de page fault-uri a crescut de la 9
la 10.
Temă: refaceţi Ex. 2 în cazurile cu 4 frameuri şi 5 frame-uri (cadre de pagină), la
acelaşi şir de accesări. Se aplică anomalia lui Belady? Intuitive, daca ne uitam in
grafic, vedem ca erorile scad pt 4->5 frame uri. (Ne-a lasa tema ca sa aplicam noi
alg FIFO cu 5 frame uri si sa vedem ca trecera de la 4 la 5 frame-uri face ca erorile
sa scada de la 10 la 5 erori pe pagina pt aceasi sir de referiri.)
Trebuie sa retinem de aici ca FIFO sufera de anomalia lui Belady , este un alg care
uneori, in anumite situatii contrazice logica elementara.
Am retinut ideea ca ca FIFO este un algoritm simplu, dar nu doarte bun. Din el
deriva un alt algoritm care , de fapt, se foloseste de combinatia avantajelor celor
doi algoritmi prezzentai inainte, FIFO si NRU, si anume algoritmul Second
Chance.
Deci Second Chance combina FIFO si LRU a.i. daca FIFO elimina din memorie o
pagina utilizata intens pt ca el nu stie, nu tine socoteala ce se intampla cu acea
pagina dupa ce a intrat, ci doar cand a intrat, atunci unei pagini pe care FIFO ar
arunca-o, noi ii mai dam o sansa. Adica cautam o pagina veche, intrata de mult, dar
care sa nu fi fost referita in ultimul interval de timp. Cu alte cuvinte, schimbam un
pic regula de verificare a bitului de referinta, R.
• daca R = 0, deci pagina nu a fost referita, este veche si neutilizata => o
inlocuim
• dar daca R = 1, pagina respectiva care a fost veche, dar a fost solicitata(deci
referita) => n-o scoatem, ii mai dam o sansa, ii resetam bitul de referire si in
felul acesta o mutam la sfarsitul listei de eliminare si procesul continua
Sa vedem pe schema de jos, Exemplu: paginii A i se acordă o „a doua şansă”
Asemenator cu NRU, dintre toate pag. care n-au fost fol. Recent, o fol.
pe cea care a fost fol. Cel mai demult in timp, optimizam LRU a.i. sa
ajungem la un optim in ceea ce priveste neutilizarea paginii;
IMPLEMENTARE: le urmarim intr-un interval mai scurt decat o
perioada de ceas! DE CE?
Deoarece paginile care au fost foarte mult folosite/referite la cele mai
recente instructiuni din trecut, conform principiului localizarii
temporale, probabil vom mai avea nev. de ele tot la fel de intens si-n
urmat. cateva instr. Deci pagina care n-a fost utilizata de cel mai mult
timp ( de care n-a fost nevoie de ea de un interval de timp CEL MAI
MARE , nu MARE) este cea care este eliminata. In felul acesta rafinam
NRU, care era o rafinare a FIFO , ajungem mai aproape de
performantele algoritmului optim. Toate variantele de algoritmi care
sunt performante sunt si costisitoare.
Sunt 2 moduri de implementare:
TIP COADA: se face o coada de asteptare (lista inlantuita cu toate pag
existente in memorie si la coada ei se afla paginile care nu au mai fost
referite cel mai demult, iar la varf cele care au fost referite recent); a.i. la
fiecare noua referire noi trebuie sa refacem toata aceasta lista inlantuita
remodificand starile pag.=> o metoda care cere timp
Segmentarea
[adresa_segment][adresa_ob_din_segment]
Putem compara aceasta utilizare bidimensionala cu adresare combinata de tip baza
plus deplasamnet, in care baza ar fi categoria de segment numerotat, iar in cadrul
adresei vom avea un descriptor de sgment.
Imaginea din partea de sus ne arata o reprezentare vizuala a spatiilor independente
utilizate pentru gestionarea memoriei pentru toate categoriile de segmente. S-a
constata ca aceste tipuri de segmente (tipuri de obiecte) nu depasesc in total 32 de
categorii, deci in descriptorul de segment vom avea alocat un camp de 5 biti pentru
tipul segmentului.
In cadrul bazei avem din nou o deplasare de tip baza (bitii 24-31 din stanga) +
deplasament (bitii 16-19) la care se mai adauga cativa biti suplimentari (bitul G –
ne spune daca deplasamentul notat cu LIMIT este exprimat in octeti sau in pagini;
bitul D – ne spune daca segmentele sunt pe 16 sau 32 de biti; apoi urmeaza un
camp neutilizat). Ordinea este baza + alti biti + deplasament.
Cum se realizeaza obtinerea adresei liniare din mem virtuala care trebuie
mapata in adresa fizica din memoria principala a i sa vedem cum lucram cu
directorul de pagini, tabelul de pagini si frame-ul de pagini?
Vom obtine tot o adresa liniara pe 32 de biti impartita in 3 campuri:
Adresa logica din memoria virtuala este alcatuita din perechea selector-offset (din
partea de sus din stanga). Selectroul se duce in tabelul corespunzator LDT sau
GDT, de unde culege descriptorul de segment de care are nevoie, unde impreuna
cu offset-ul formeaza adresa de baza a segmentului, care, in spatiul adreselor
liniare, ne va da o informatie de adresa de linie. Adresa de linie a segmentului
este alcauita din DIRECTOR, TABEL si OFFSET. Campul DIR ne da o intrare in
directorul de pagina, de unde vom lua info cu care, impreuna cu biti de tabel din
adresa liniara, vom face o adresare in tabelul de pagini. De aici vom lua o intrare
care ne va da o adresa fizica din spatiul de adresare fizica.
Implementarea segmentarii
La segmentare, problema se poate pune initial la fel ca la paginare: ce se intampla
daca vrem sa inlocuim un segment cu altul? Unde il punem, avand in vedere ca nu
au aceeasi dimensiune tooate segmentele?
Exemplul din figura: instantele (a), (b), (c), (d), (e) reprezinta structura de memorie
(pe 32 de biti ) de gestionare a segmentelor la mom de timp succesive.
Intre fig (a) si (b) vom inlocui segmentul 1 cu segmnetul 7. Seg 1 are 8k,
segmentul 7 are 5k. In acest fel, prin inlocuire se creeaza o gaura de 3K (plasata
deasupra lui seg. 7 pt ca numerotarea este facuta de jos in sus in acest exemplu).
Intre fig (b) si (c) vom inlocui segmentul 4 cu segmnetul 5. Seg 4 are 7k,
segmentul 5 are 4k. Astfel vom crea o gaura de 3k plasata deasupra segmentului 5.
Intre fig (c) si (d) vom inlocui segmentul 3 cu segmnetul 6. Seg 3 are 8k,
segmentul 6 are 4k, realizandu-se astfel o a treia gaura.
Intre fig (d) si (e) vom realiza o compactare prin care vom realiza o gaura unica
(prin insumarea dimensiunii tuturor gaurilor existente) care va fi plasata in varf.
Acest pas este util pentru ca memoria poate fi asignata mai usor daca avem o
singura gaura de dimensiune mare in loc sa avem mai multe gauri de dimensiuni
mici. De altfel in cazul unui nr mare de gauri cu dimensiune mica, exista riscul ca
anumite segmente de dimensiuni mari sa nu mai poata fi introduse. De aceea este
necesara aceasta compactare.
Structura adresei liniare la Sun SPARC: paginare pură, separare pe trei niveluri de
tabele
Folosesc adrese virtuale pe 32 de biti, care sunt translatate in adrese virtuale pe 36
de biti.
Blocul care se ocupa de translatarea adreselor din adrese virtuale in adrese fizice
este TLB- translation look asigne Bar
Tabelele sunt tot in numar de 3 => 3 nivele de indexare, in figura index 1 2
si 3 de 8, 6, 6 biti si exact la fel ca la motorola dar cu alte dimensiuni, aceasta
adresare se face pe 3 niv de tabele, dar au alt numar de intrari. Tabelul contextual
este acela care practic ne ajuta la formarea bazei in adresa fizica, din tabelul
contextual se alege o adr specificiata in campul context, care adreseaza primul
nivel de tabele => 64 de combinatii. De acolo se ia continutul care cu ajutorul
indexaraii, in al 2 lea niv de tabele va lua o alta adresa, care cu ajutorul inxului 3
va forma o alta indexare in nivelul al 3 lea din table, de unde cu val gasita acolo,
combinata cu deplasamentul, ultimii 12 biti se formeaza in felul acesta adresa
fizica.
In partea de sus este adresa virtuala iar jos este adresa fizica.
Cum este partajata aceasta memorie?
R: pentru fiecare categorie de pagini se gaseste un spatiu distinct, adica se
gestioneaza paginile virtuale de dim 4 K, prin gestionarea drr virtuale de 32 de biti,
intr o formula de 20+12 +> 2^12 = 4K . Acolo se gestioneaza paginile din
memoria principala de dim 4K dar el accepat si ideea sa exista pagini de 64 de K
de 16 M, deci accepta ca dim sa poata fi schimbata pe categorii. Daca presupunem
4 categorii, la fel seintmpla si cu adr fizice pe 32 de biti, sunt gestionate in 4
categorii dif in fct de dim paginii cu care se lucreaza, adusa din mem virtuala in
mem fizica => 4 tipuri de traslatii de adrese din spatiul virtual in cel fizic.
Comparatie intre paginare si segmentare: