8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 1/34
1
1. Tipuri de date
- instrucţiunile unui microprocesor trebuie să opereze asupra unor operanzi avânddiferite tipuri de date.
-
care sunt tipurile de date primare utilizate în programare?- date numerice:
Numere întregi
Numere reale- date booleene
TRUE/FALSE- date caractere şi şiruri de caractere
ASCII, UNICODE- Ce se înţelege prin tip de date?
- Tip – prin tip se înţelege o colecţie de valori -
Tip de date – prin tip de date se înţelege un tip împreună cu un set de operaţii ce se potefectua cu valorile tipului
- Tip de date abstract – este un tip de date ale cărui proprietăţi (valorile şi operaţiile)sunt specificate independent de orice implementare particulară
- Tip de date structurat – este o implementare a unui tip de date abstract.- Exemplu:
Tip byte valori între -127 şi +128
Tip de date byte
valori între -127 şi +128 operatori +, -, *, /, %
Tip de date abstract: stiva
Tip de date structura: stiva de numere intregi implementată ca vector - Care sunt caracteristicile de implementare ale tipurilor de date primare?
- Caracteristici de implementare ale tipurilor de date primare:
Dimensiune
Număr octeţi
Codificare
Cu semn, fără semn Întregi, virgula flotantă
Operaţii Instrucţiunile ce au operanzi de tipul respectiv
- Tipuri de date fundamentale oferite de IA-32
+Tenbyte
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 2/34
2
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 3/34
3
2. Variabile si constante- Ce este o variabila?- Prin ce se caracterizeaza o variabila?- Un aspect fundamental pentru limbajele de programare este utilizarea variabilelor .
-
Ce este o variabila? = o marime care in cursul executiei unui program isi poate modifica valoarea.
- Prin ce se caracterizeaza o variabila?
Nume
Tip
Valoare- Cum se transpune definirea unei variabile intrun limbaj de programare de nivel inalt,
de catre compilator, la nivel de executie pe un microprocesor?
int a = 0;
-
O variabila poate fi privita ca o locatie de memorie folosita pentru stocarea unei valorisi este caracterizata prin:
nume (identificator): acesta este asociat adresei locatiei de memorie.
valoare: informatia stocata
tip: determina multimea de valori pe care le poate lua variabila, codificarealor, precum si operatiile ce se pot aplica acestor valori.
- Interpretarea informatiei stocate este specificat de tipul variabilei
a. Declararea si definirea variabilelor
- Ce inseamna declararea variabilelor?
specificarea unui nume si a unui tip de Data- Ce inseamna definirea unei variabile?
alocarea unei zone de memorie pentru pastrarea valorii variabilei- Initializarea unei variabile
Specificarea unei valori pentru variabila respectiva- Declararea si definirea variabilelor in asamblare
nume_var tip lista_valorinume_sir tip N dup(valoare)
tip: db, dw, dd, dq, dtvar_int8 db 12Hvar_int16 dw 1234Hvar_int32 dd 12341234H
var_int64 dq 1234123412341234H- Constante vs. variabile?- Unde este pastrata valoarea unei constante sau a unei variabile?
const_int8 equ 10var_int8 db 10
mov al, const_int8mov al, var_int8
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 4/34
4
- Caracteristicile variabilelor Numele variabilei Tipul variabilei
Dimensiunea alocată pentru variabile Codificarea valorii variabilei
Stocarea conţinutului variabilelor Alocarea de memorie pentru stocarea valorii
Alinierea datelor Accesarea variabilelor
Pointeri şi referinţe Valoare
3. Pointeri si referinte
- Pointeri şi referinţe
Numele unei variabile identifică adresa de memorie la care este salvatăvariabila în memorie. Tipul variabilei specifică setul de valori pentru variabilă, dimensiunea maximă
de memorie necesară stocării valorilor de tipul respectiv, precum şi setul deoperaţii ce se pot efectua asupra valorilor respective.
Valoarea variabilei este dată de conţinutul memoriei în timpul execuţiei programului.
O variabila de tip pointer contine adresa unei locatii de memorie care la randulei contine valoarea propriuzisa
- Pointeri şi referinţe – exempluint X = 5;
int Y = 7;...int* Ptr = &X;
Rezultatul operaţiei *Ptr = 10
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 5/34
5
Pointer neiniţializat int *Ptr;
Ce se întâmplă după Ptr1 = Ptr2?
Care este rezultatul operaţiei *Ptr1 = *Ptr2?
Numele unei variabile identifică adresa de memorie la care este salvată variabilaîn memorie
Accesarea unei variabile de memorie:mov al, var_int8mov si, offset var_int8mov al, [si]
Un pointer este o variabilă ce conţine adresa unei alte variabile
O referinţă este adresa unei variabile
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 6/34
6
int a = 1;int b = 2;int *pa = &a; Care este conţinutul variabilelor după int *pb; execuţia secvenţei de cod?
pb = pa + 1;
*pb = *pa + *pb;
Alocarea memoriei:int *pa = new int;int *pb = malloc(sizeof(int));
int *pc = new int[10]; Dezalocarea memoriei:
delete pa;free(pb);delete[] pc;
- Probleme curente la utilizarea pointerilor
Utilizarea unui pointer neiniţializat int *pa; int *pa = NULL;*pa = 10; *pa = 10;
Utilizarea unui pointer iniţializat incorect int *pa;
pa = 10;*pa = 10;
Utilizarea unui pointer după ce a fost dezalocat: int *pa = new int;*pa = 10;delete pa;(*pa)++;
Utilizarea eronată a aritmeticii pointerilor: int a = 10; int a = 10;int *pa = (&a)+1; float b;int *pa = (&a)+1;
Utilizarea unui pointer în afara scopului variabilei spre care arată: int *pa; int* f(void)if( ... ) {{ int a = 10;int a = 10; return &a;
pa = &a; }}(*pa)++;
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 7/34
7
Dangling pointers:int *pa = malloc(4), *pb = pa;free(pa);*pb = 10;
Nu se dezaloca memoria după ce s-a încheiat operarea asupra ei: memory leaksfor( i = 0; i < 100000; i++ ){int *pi = new int(i);*pi = rand();
printf(“%d”, *pi);}
Dezalocare multiplă pentru aceeaşi zonă alocată int *pa = malloc(4), *pb = pa;free(pa);free(pb);
- Recomandări la utilizarea pointerilor
Programatorul trebuie să se asigure că valoarea referită de un pointer estevalidă atunci când se accesează;
Programatorul trebuie să se asigure că toate zonele alocate dinamic în cod se şidezalocă;
Programatorul trebuie să se asigure că nu şterge aceeaşi zonă alocată de maimulte ori;
Programatorul e bine să nu folosească aritmetica pointerilor
4. Probleme de securitate a codului
- Probleme de secur i tate a codului :
/* Echo Line */void echo(){char buf[4];gets(buf);
puts(buf);}int main(){
printf("Type a string:");echo();return 0;}
Alocarea variabilelor dinamice?
Alocarea variabilelor statice? Variabile globale
Variabile locale
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 8/34
8
În buffer-ul de memorie se introduce codul maşină al programului ce sedoreşte executat
Adresa de revenire se suprascrie cu adresa bufferului La revenirea din funcţie se va apela codul “străin”
Depăşirea buffer -ului de memorie permite execuţia unei secvenţe de cod pe omaşină la distanţă
Exemple: Internet Worm
5. Modele de memorie
- Adresele cu care procesorul adresează memoria fizică prin magistrala de adrese suntconsiderate adrese fizice
- Fiecare octet de memorie are o adresă unică numită adresa fizică
-
Spaţiul maxim de adrese fizice IA-32 este 4Go (32 biţi) (extensibil la 64 Go prin PAE (Physical Address
Extension) 36 biţi)
IA-32e este in funcţie de modul de implementare: 40biti, 48 biţi, 56 biţi sau 64 biţi
- Aplicaţiile nu folosesc insă in mod direct adresele fizice
- Aplicaţiile utilizează facilităţile de management al memoriei implementate in procesor:
Modelul de memorie liniară
Modelul de memorie segmentată
Modelul de memorie real – modul de adresare 8086
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 9/34
9
- Modelul de memorie liniar:
Memoria apare programelor ca un unic spaţiu de adrese liniare de 4 Go (0-232-1)
Codul, datele şi stiva programelor se regăsesc in acelaşi spaţiu de adrese liniare
-
Modul de memorie segmentat: Memoria apare programelor ca un grup de spaţii de adrese independente,
contigue, numite segmente
Codul, datele şi stiva programelor sunt uzual conţinute in segmente distincte
Poate gestiona 16383 segmente fiecare avand maxim 4 Go (0-232-1) - Modelul de memorie liniar
- Adresa obţinută după segmentare este tot o adresă liniară - Adresa liniară poate fi mapată direct intr -o adresă fizică (nu este folosită paginarea) - Paginarea şi memoria virtuală
Independent de modelul de memorie se poate utiliza paginarea
Adresa liniară se interpretează ca o adresă virtuală ce descrie o pagină dememorie ce se mapează in memoria fizică
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 10/34
10
6. Moduri de adresare
- Ce se intelege prin moduri de adresare ale unui procesor?
- Reprezintă modalitatea prin care se specifică operanzii pentru instrucţiuni
Operanzi şi rezultate
Adrese de salt - Operanzii se specifică implicit sau explicit - Operanzii pot fi localizaţi in:
Codul instrucţiunii
Registre
Locaţii de memorie Porturi de intrare/ieşire
- Adresarea imediată
Operandul este specificat in codul instrucţiunii mov eax, 10add eax, 10a = 10
b = const_10
c = b + const_20-
Adresarea prin registre Operandul este specificat şi localizat intr -unul din registrele procesorului
add eax, ebx
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 11/34
11
- Adresarea memoriei
Operandul este specificat şi localizat in memorie
Există mai multe moduri de adresare a memoriei
O adresă de memorie in aplicaţii se specifică prin:
- Adresarea memoriei
Adresare directă – adresa de memorie a operandului este specificată in codulinstrucţiunii Utilizare: variabile de memorie adresabile direct
var_int32 dd 0mov eax, var_int32mov var_int32, ebx
Adresare indirectă – adresa de memorie a operandului este specificată printr -un registru sau printr-o combinaţie de registre Utilizare: pointeri şi referinţe
var_int32 dd 0mov ebx, offset var_int32mov eax, [ebx]
Există mai multe combinaţii de componente prin care se poate specifica oadresă de offset
sir_int16 dw 10 dup (?)xor eax, eaxmov esi, 2
mov ax, sir_int16mov ebx, offset sir_int16mov ax, [ebx+2]mov ax, [ebx+esi*2]
7. Extensii SIMD- Multimedia extension – MMX- Streaming SIMD extensions
SSE, SSE2, SSE3, SSE4.1, SSE4.2- Advanced Vector Extensions
AVX
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 12/34
12
- Utilizare:
Procesare, filtrare, recunoaştere, codare voce
Procesare, filtrare, recunoaştere, codare video
Grafică 3D, modelare CAD
Algoritmi de criptare- Identificare
...mov eax, 1cpuidtest edx, 00800000h
jnz mmx_found...
- Registre MMX şi SSE
- Operaţii şi operanzi SIMD
Instrucţiunile operează asupra unor date impachetate
Instrucţiunile operează asupra unor date scalare
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 13/34
13
- Operaţii şi operanzi SIMD (MMX)
- Operaţii şi operanzi SIMD (SSE, SSE2)
int i;for( i = 0; i < 4; i++ )
{c[i] = a[i] + b[i];}
paddd xmm1, xmm2
- Tratarea depasirilor la operatiile aritmetice
Wraparound – valoarea rezultata se obtine prin eliminarea bitilor maisemnificativi Signed saturation – valoarea rezultata se va limita la min/max cu semn Unsigned saturation – valoarea rezultata se va limita la min/max fara semn
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 14/34
14
- Operatii impachetate aritmetice
- Comparatii
-
Pack si Unpack
8.
Reguli de optimizare a codului
- Specifice pe arhitecturi de procesoare- Vizează diferite blocuri arhitecturale
Front end
Execution core
Memory- Reguli generale:
Generarea codului după tiparul 4-1-1 (microoperaţii) (P6)
Optimizarea salturilor şi buclelor Aducerea instrucţiunilor in avans şi decodarea lor Selecţia instrucţiunilor Optimizarea acceselor la memorie
- Optimizare specifica pe tip de procesor (utilizarea CPUID)- Paralelizarea codului si algoritmilor pentru multi-core si multi-threading- Optimizarea salturilor
Eliminarea salturilor Aranjarea codului pentru a forma blocurile de bază contigue şi
eliminarea salturilor inutile Utilizarea instrucţiunilor condiţionate setcc şi cmov
Aranjarea codului pentru a se potrivi peste predicţia statică implementată lanivelul microarhitecturii
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 15/34
15
Evitarea apelurilor incuibate multiple de subrutine Desfăşurarea buclelor
9. Performanţa sistemelor
- Programarea secvenţială
Majoritatea aplicaţiilor sunt scrise după o logică secvenţială Aplicaţia este executată pe un singur procesor
Problema este împărţită într -o serie de instrucţiuni ale procesorului Instrucţiunile sunt executate secvenţial Doar o instrucţiune se execută la un moment de timp dat
- Performanţa execuţiei secvenţiale: Viteza de calcul: număr de operaţii pe sec
v=N
t
Dacă o aplicaţie necesită N operaţii Din aceste operaţii o fracţiune f se execută cu rata şi restul se execută cu
viteza
≫ Timpul total de execuţie:
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 16/34
16
t= +
(1−)
Performanţa aplicaţiei:
r =
=1
+(1−)
≈ 1
1
−
Pentru a obţine o performanţă rezonabilă f trebuie să fie cât mai mare
În aplicaţiile secvenţiale, dacă există blocuri de operaţii care se execută la oviteză mult mai redusă decât restul operaţiilor, performanţa întregii aplicaţii
poate fi limitată de efectele acestora. Pentru a obţine o performanţă cât mai ridicată la execuţia aplicaţiilor
secvenţiale trebuie identificate blocurile care necesită cel mai mare număr de
operaţii ( f ) şi trebuie implementat cât mai performant ( )- Performanţa execuţiei paralele:
O aplicaţie (algoritm, task) se poate executa secvenţial pe un sistemuniprocesor
Sau aplicaţia se poate descompune în mai multe taskuri care se executăsimultan pe mai multe procesoare
Cum se poate exprima performanţa unei aplicaţii executate pe un sistemmultiprocesor, comparativ cu execuţia pe un sistem uniprocesor?
- Programarea secvenţială
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 17/34
17
- Performanţa execuţ iei paralele
MIPS sau MFLOPS nu se potrivesc pentru măsurarea performanţei sistemelor paralele.
Există alţi parametrii prin care se poate estima performanţa aplicaţiilor
paralele: Speedup Eficienţa
- Speedup:
Performanta aplicaţiilor paralele este adesea masurată în termeni de creştere avitezei
În cazul ideal, pentru o aplicaţie care se execută pe un sistem cu p procesoare,creşterea în performanţă va fi egală cu p
Cum se poate determina creşterea în performanţă (speedup) pentru o aplicaţiece se execută pe un sistem cu p procesoare faţă de execuţia pe un sistem cu 1
procesor?
Performanţa relativă se defineşte ca raportul dintre timpul de execuţie obţinut pe un sistem uniprocesor şi timpul de execuţie obţinut pe un sistem paralel
Speedup =Sequential execution time
Parallel execution time
- Eficienţa:
Creşterea în performanţă a unei aplicaţii nu este nelimitată, indiferent câte procesoare s-ar putea folosi pe un sistem.
Creşterea în performanţă (speedup) nu măsoară eficienţa cu care sunt utilizate procesoarele.
Se pune problema atingerii unui optim costcreştere în performanţă.
Eficienţa se defineşte ca raportul dintre creşterea în performanţă şi numărul de procesoare folosit pentru a obţine creşterea respectivă
Efficiency = Sequential execution timeProcessors∗Parallel execution time
Efficiency =Speedup
Processors
- Stabilirea cerintelor pentru eficienta multicore Cresterea liniara a performantelor pentru primele n procesoare
- Limitele calcului paralel:
Teoretice Legea lui Amdahl
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 18/34
18
Practice Încărcarea inegală a procesoarelor Timpul de comunicaţie Operaţii suplimentare necesare (sincronizări, planificări) Secţiuni non-computaţionale
Altele Timpul şi costurile de rescriere a codului
Legea lu i Amdahl
- În realitate nu toate aplicaţiile pot fi paralelizate 100%, deoarece conţin operaţii ce sunt secvenţiale.
- O aplicaţie conţine două tipuri de operaţii: Operaţii ce trebuie executate secvenţial Operaţii ce se pot executa simultan
- Legea lui Amdahl specifică limita teoretica pentru îmbunătăţirea performanţelor unui algoritm executat pe un sistem paralel ca fiind operaţiile ce se execută inerent
secvenţial. - Creşterea în performanţă S(p) pentru p procesoare:
S (p) =t(1)
t(p)=
1+ (1)
+ ()
t(1) – timpul de execuţie al aplicaţiei pe un procesor t(p) – timpul de execuţie al aplicaţiei pe p procesoare ts(1), ts(p) – timpul e execuţie a fracţiunii secvenţiale din aplicaţie pe un
procesor, respectiv pe p procesoare tp(1), tp(p) – timpul e execuţie a fracţiunii secvenţiale din aplicaţie pe un
procesor, respectiv pe p procesoare
10. Intefata paralela
- Portul paralel a fost proiectat în vederea conectării la calculator a imprimantelor.- Poate fi folosit şi ca un port de intrare/ieşire de uz general, pentru cuplarea la
calculator a oricărui dispozitiv extern. - Un alt dispozitiv uzual conectat la portul paralel este scannerul.- Este un port simplu, uşor de programat astfel că poate utilizat în dezvoltarea de
prototipuri, realizarea de experimente şi teste de interfaţare a calculatorului cuechipamente externe
- Portul paralel a fost standardizat în 1994 sub denumirea IEEE 1284.-
Standardul descrie comunicarea de mare viteză, bidirecţională, între PC şi periferic prin interfaţa paralelă.
- Standardul IEEE 1284 defineşte în totalitate portul paralel şi prevede: Modurile de transfer pentru date Metoda de negociere a modurilor de transfer Caracteristicile interfeţei fizice: cabluri, conectori Caracteristicile interfeţei electrice: amplificatoare de linie, receptoare,
impedanţa liniei, terminatoare. - Portul paralel constă din interfaţa paralelă şi conectorul de 25 pini situat în spatele
calculatorului.
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 19/34
19
- Interfaţa paralelă constă din totalitatea circuitelor şi registrelor de comandă, date şistare care asigură legătura între un echipament periferic şi magistrala internă acalculatorului prin conectorul paralel.
- Portul paralel
- Ce elemente hardware şi software trebuie cunoscute pentru a putea dezvolta o aplicaţie pentru un anumit port de I/O?
- Pentru a accesa un port trebuie cunoscute: Registre, buffere de intrare Semnificaţia rangurilor registrelor (comenzi, date, stare) Conectarea rangurilor registrelor la cupla portului
Adresele de porturi ale registrelor Protocolul de comunicaţie Întreruperi Canale DMA
- Din punct de vedere logic, interfaţa paralelă standard este formată din două registre şiun buffer de intrare, ocupând trei adrese consecutive din spaţiul adreselor de porturi al
procesorului.- Portul paralel standard conţine:
Un registru de date pe 8 biţi bidirecţional (iniţial a fost unidirecţional ca ieşire),
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 20/34
20
Un registru de control bidirecţional pe 6 biţi dintre care doar 4 linii sunt legatela connector-ul interfeţei paralele
Un buffer de intrare pe 5 biţi pentru liniile de stare de la periferic. - Ieşirile interfeţei paralele folosesc nivelele logice TTL, curentul însă diferă de la o
interfaţă la alta (până la 12 mA).
-
Circuitele interfeţei paralele sunt uzual implementate în chipset-ul de I/O- Registrul de date:
Adresa: IOBase+0 IOR:
MOV dx, IOBase data = inport(IOBase);
IN al, dx IOW:
MOV dx, IOBase outport(IOBase, data);OUT dx, al
Ieşirile registrului de date sunt legate la pinii 2-9 ai conectorului de interfaţă paralelă
La portul paralel bidirecţional direcţia de transfer se setează prin bitul 5 dinregistrul de control)
- Registrul de stare
Adresa: IOBase+1
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 21/34
21
IOR:MOV dx, IOBase+1 status = inport(IOBase+1);IN al, dx
- Registrul de contr ol
Adresa: IOBase+2
Biţii 4 şi 5 sunt pentru controlul intern al interfeţei paralele Bitul 4 este destinat validării întreruperilor Bitul 5 validează intrarea pentru registrul de date
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 22/34
22
Liniile corespunzătoare registrului de control sunt bidirecţionale. Ieşirile registrului de control sunt legate la cuplă prin intermediul unor
inversoare Open-Colector, pentru a asigura procesorului şi posibilitatea de aciti aceste linii.
Când portul de control este folosit ca intrare, trebuie ca registrul de control să
conţină valoare 0100.
Moduri de lucru- Specifică modul de funcţionare şi caracteristicile de transfer al datelor- Moduri de lucru:
SPP – Standard Parallel Port Compatibility Nibble Byte
EPP – Enhanced Parallel Port
ECP – Extended Capability Port
- SPP
Protocol de comunicaţie implementat în software Foloseşte doar registrele standard ale interfeţei paralele Se pot monitoriza semnale externe şi se pot genera semnale prin portul paralel Se pot implementa şi alte protocoale în afară de cele standard
- SPP – Compatibil ity
Date unidirecţionale trimise spre periferic (imprimantă) Protocolul standard implementat este Centronics
Care sunt paşii ce trebuie codificaţi în program pentru implementarea
protocolu lui Centronics? Citeşte portul de stare şi verifică rangul Busy, pentru a vedea dacă imprimanta
este liberă Dacă imprimanta e liber a
Se scrie data la portul de date Se activează linia Strobe (scriere în portul de control) Se dezactivează linia Strobe (scriere în portul de control)
- SPP – Nibble
Permite transferuri bidirecţionale: Ieşiri pe 8 biţi
Intrări pe 4 biţi prin portul de stare Cum se implementează prin program protocolul de citire date de la periferic?
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 23/34
23
Operaţii pentru citire: Portul cere o jumătate de octet activând HostBusy Perifericul răspunde plasând prima jumătate de octet pe liniile de stare
şi activează PtrClk
Portul dezactivează HostBusy indicând că a preluat data Perifericul dezactivează PtrClk Operaţiile se repetă şi pentru a doua jumătate a octetului
- SPP – Byte
Permite transferuri bidirecţionale pe 8 biţi prin portul de date al interfeţei paralele
Rangul 5 din registrul de control specifică direcţia de transfer pentru registrulde date
Pentru trecerea din ieşire în intrare trebuie setat bitul 5 pe 1
- EPP
Protocolul de transfer este implementat în hardware Oferă 4 cicluri de transfer:
Ciclu de scriere date Ciclu de citire date Ciclu de scriere adrese Ciclu de citire adrese
Ciclurile de adrese sunt destinate transferului de adrese, comenzi sauinformaţii de control
- ECP
Protocolul de transfer este implementat în hardware Elemente de transfer specifice: adresarea de canal, cicluri de date şi de
comenzi, compresia datelor (run length encoding), registre tampon FIFO Transferurile pot fi directe (calculator-periferic) sau inverse
11. Interfata serie
- Portul serial a fost proiectat ca o alternativă la portul paralel pentru conectarea lacalculator a echipamentelor din medii cu perturbaţii şi aflate la distanţă (peste 3 m).
- Printre dispozitivele uzuale conectate la portul serial sunt modemul, cititor de cod de bare şi centrala telefonică (PBX).
-
Este un port relativ simplu şi uşor de programat ce este folosit pentru conectarea lacalculator a sistemelor embedded.
- La momentul actual se foloseste destul de des conceptul de COM virtual pentruconectarea prin USB, bluetooth sau (W)LAN
- La baza portului serie al calculatorului stă standardul RS232.- Standardul RS232 defineşte cerinţele logice, electrice şi mecanice pentru transferul
serie al informaţiilor in format digital. Nivele de tensiune (EIA, PC +/- 12V) Tip de transfer: sincron, asincron Tip de echipamente: DTE şi DCE
Parametrii de comunicaţie Controlul fluxului
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 24/34
24
- Prin ce se caracterizează o comunicaţie asincronă? - Comunicaţie asincronă:
Transferul unui caracter la un moment dat. Nu există semnal de tact. Receptorul se sincronizează cu emiţătorul prin programare.
- Controlul fl uxului
Ce este şi pentru ce e necesar? Problema sincronizării transferurilor blocurilor de date
Cum află emiţătorul dacă receptorul poate primi sau nu alte caractere Soluţii:
Fără control Control software (XON/XOFF)
Control hardware (RTS/CTS)- Portul serie constă din interfaţa serială şi conectorul de 9 pini situat in spatele
calculatorului.- Prin interfaţa serială se inţelege ansamblul circuitelor care asigură comunicaţia intre
unitatea centrală (procesor) şi un dispozitiv periferic care transferă informaţia bit după bit.
- Portul serie
- Pentru a accesa un port trebuie cunoscute: Registre, buffere de intrare Semnificaţia rangurilor registrelor (comenzi, date, stare) Conectarea rangurilor registrelor la cupla portului Adresele de porturi ale registrelor Protocolul de comunicaţie Intreruperi
Canale DMA- Din punct de vedere logic, interfaţa serială este formată dintr -un set de registre ce
ocupă adrese consecutive din spaţiul adreselor de porturi al procesorului.- Portul serie conţine:
Registre tampon pentru transmisie şi recepţie Registre de stare Registre de configurare şi control
- Registrele de transmisie şi recepţie
Adresa: IOBase+0 IOR: (citirea ultimului caracter recepţionat)
MOV dx, IOBase data = inport(IOBase);IN al, dx
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 25/34
25
IOW: (transmisia unui caracter)MOV dx, IOBase outport(IOBase, data);OUT dx, al
Circuitul de interfaţă serie implementează serializarea şi deserializarea datelortransmise şi respectiv recepţionate.
Biţii se serializează pe linia TxD şi sunt recepţionaţi prin RxD din cuplaserială.
- Registrul de contr ol
Adresa: IOBase + 3 IOR:
MOV dx, IOBase+3 data = inport(IOBase+3);IN al, dx
IOW:MOV dx, IOBase+3 outport(IOBase+3, data);OUT dx, al
Biţii 1 şi 0 indică lungimea caracterului transmis
Bitul 2 indică numărul de biţi de stop: STB = 0 - 1 bit de stop; STB = 1 şi lungimea caracterului este de 5 biţi - 1 . biţi de stop; STB = 1 şi lungimea caracterului este de 6, 7 sau 8 biţi - 2 biţi de stop.
Bitul 3 indică dacă se foloseşte sau nu un bit de paritate in transmisie saurecepţie. PEN = 0 - nu se foloseşte paritatea; PEN = 1 - se va genera un bit de paritate cand se transmit date sau se va
aştepta şi un bit de paritate cand se recepţionează date. Bitul 4 selectează tipul de paritate.
EPS = 0 şi PEN = 1 - paritate impară (un număr impar de 1); EPS = 1 şi PEN = 1 - paritate pară (număr par de 1).
Bitul 5 - dacă bitul 3 este pe “1” şi bitul 5 este tot pe “1” atunci bitul de paritateeste transmis şi este detectat la recepţie ca “0” dacă EPS=1 sau ca şi “1” dacăEPS=0.
Bitul 6 - set break control bit. Bitul 7 este bitul de acces la registrul pentru divizarea ratei:
DLAB = 1 - se realizează accesul la registrele de divizare; DLAB = 0 - se realizează la buffer -ele de recepţie, transmisie şi
registrul de validare a intreruperilor.
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 26/34
26
- Registrele de divizare
Adresa: IOBase+0 şi IOBase+1 Generatorul ratei de transfer preia tactul de intrare şi il imparte cu orice număr
cuprins intre 1 şi 216 – 1 Numărul se află in registrele de divizare.
Frecvenţa de ieşire a generatorului este 16x rata. Frecvenţa de intrare a generatorului este 1.84MHz
divisor = (frecvenţa de intrare) / (baud rate x 16)
outport(IOBase+3, 0x80);outport(IOBase+1, 0x00);outport(IOBase+0, 0x06);outport(IOBase+3, ...);
- Registrul de stare
Adresa: IOBase+5 Bitul 0 = 1 - s-a recepţionat un caracter şi a fost transferat in buffer-ul de
recepţie.
Bitul 1 = 1 - indică faptul că data din buffer -ul de recepţie nu a fost citită decătre procesor inaintea recepţionării unui alt caracter. Astfel că acest primcuvant a fost pierdut. Bitul OE este pus pe 0 la citirea registrului de stare decătre procesor.
Bitul 2 - indică apariţia unei erori de paritate. Bitul 3 - apariţia unei erori de cadru. Caracterul recepţionat nu are bitul de stopvalid. Acest bit este pus pe 1 de fiecare dată cand bitul de stop ce urmeazădupă ultimul bit de date sau după bitul de paritate, este 0.
Bitul 4 - indică dacă linia de recepţie este in starea 0 o perioadă de timp maimare decat timpul necesar transmisiei complete a unui caracter. Inseamnă cătransmiţătorul a forţat linia pe 0 (Set Break).
Bitul 5 - indică procesorului că circuitul este pregătit pentru a primi un noucaracter ce trebuie transmis. Acest bit este setat la “1” cand un caracter estetransferat din buffer-ul de transmisie in registrul de serializare. Bitul esteresetat la “0” cand procesorul incarcă buffer -ul de transmisie cu un nou
caracter.
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 27/34
27
Bitul 6 - indică faptul că registrul de serializare este gol. Bitul este pus pe “0”odată cu incărcare unui nou caracter din buffer -ul de transmisie.
- Care este rolul celor două flaguri pentru starea transmisiilor seriale? Transmiter Holding Register Empty Transmiter Shift Register Empty
12. Interfata USB
- Caracteristicile interfeţei USB
Cost redus – USB este o soluţie simplă şi cu costvredus pentru conectareadispozitivelor periferice la PC
Standard unic pentru cabluri şi conectori Alocarea automată a adreselor pentru periferice Sesizarea perifericelor în timpul funcţionării sistemului
Permite conectarea a până la 127 dispozitive perif erice Permite conectarea perifericelor compuse (ce conţin mai multe funcţii) Rate de transfer medii (12 Mbps)
Dispozitive ieftine dar cu rată de transfer mică (1.5 Mbps) – USB 1(Low-speed)
Dispozitive mai scumpe cu o rată de transfer medie (12 Mbps) – USB 1(Full-speed)
Dispozitive performante cu rată de transfer mare (480 Mbps) – USB 2(High-speed)
Dispozitive performante noi cu rată de transfer foarte mare (5 Gbps) – USB 3 (Super-speed)
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 28/34
28
Protocol de comunicaţie flexibil pentru mai multe moduri de transfer Integrare simplă în shema dispozitivelor periferice Detecţie şi corecţie de erori Alimentare dispozitivelor prin interfaţa USB (5V, 100-500 mA) Controlul consumului (dacă nu se fac transferuri, interfaţa trece în starea de
consum redus)- Modelu l USB
Elementele USB se împart în două clase: Dispozitive de interconectare (hub-uri)
- Sunt dispozitive ce au mai multe porturi la care se pot conectaalte elemente USB
- La un hub poate fi conectat un alt hub- Sunt permise 5 nivele de hub-uri
Dispozitive funcţionale (funcţii) - Sunt dispozitive ce realizează un anumit tip de operaţii numite
funcţii
Topologia de interconectare aelementelor USB este una detip arbore
Nodul rădăcină al arborelui este un element hub numitrădăcină (root hub) implementat în chipset-ul deI/O al plăcii de bază
La hub-ul rădăcină se pot conecta alte hub-uri sau
funcţii USB nu oferă o conectare de
tip punct-la-punct ci este oconexiune de tip magistrală
Toate echipamenteleconectate partajează aceleasisemnale
Informaţia circulă pe magistrală sub formă de pachete Fiecare dispozitiv funcţional USB va recepţiona toate pachetele (chiar dacă nu
îi sunt adresate) Distanţa maximă între un hub şi o funcţie e de 5m
Interfaţa sistem (host) Interfaţa dispozitiv(device) Stiva de comunicaţii
Nivelul fizic Nivelul legaturii USB Nivelul funcţional
Este format din componente hardware şi software Software: driver dispozitiv USB, driver USB, driver controller USB Hardware: USB root Hub + host controller, USB hub şi dispozitive
USB
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 29/34
29
Tranzacţiile USB sunt iniţiate la nivel software De la nivelul driverului dispozitiv pentru a accesa dispozitivul Prin driverul USB sunt transmise pe USB
- Nivelu l fi zic – dispozitive funcţionale
Sunt dispozitive capabile să trimită sau să recepţioneze pachete de date şi
control pe magistrala USB Conţin informaţii de identificare şi configurare ce descriu capabilităţileimplementate şi resursele necesare
Înainde de a fi utilizate funcţiile trebuie configurate Sunt de două tipuri
Simple – conţin o singură unitate funcţională Compuse – conţin un hub la care sunt conectate mai multe unităţi
funcţionale interne - Nivelu l fi zic – dispozitive de interconectare
Simplifică conectarea dispozitivelor USB la host Posedă un număr de porturi
Un port de conectare la părinte (upstream) Mai multe porturi de conectare la alte hub-uri sau funcţii
Sesizează conectările şi deconectările porturilor dispozitiv Furnizează alimentare dispozitivelor
Permite controlul porturilor (validare/invalidare, stabilire rata de transfer) Suport pentru distribuirea mesajelor (upstream/downstream)
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 30/34
30
Hub controller
Conţine setul de registre prin care se configurează hub-ul Hub repeater
Comutator de pachete Regenerează semnalele
Hub central (host)
Detectează conectarea şi deconectarea echipamentelor USB Gestionează transferul de date între PC şi echipamentele USB Monitorizează informaţiile de stare de la echipamentele USB Furnizează alimentare echipamentelor USB conectat
- Nivelul de comunicaţie USB
Driverul USB Oferă o interfaţă de comunicaţie prin USB pentru nivelul software de
deasupra lui Împarte o operaţie funcţională în tranzacţii USB Tanzacţiile vor fi executate secvenţial în cadre de 1 ms Execută tranzacţiile pe baza caracteristicilor dispozitivului destinaţie
Driverul controller-ului USB (host USB) HCD Planifică generarea transferurilor pachetelor pe magistrala USB Se foloseşte de liste de tranzacţii Fiecare listă se transmite într -un frame de 1 ms
Drivere dispozitiv USB (clienţi USB) Iniţiază operaţiile cu dispozitivul USB
Sunt dedicate dispozitivelor USB Implementează accesul la particularităţile funcionale ale unuidispozitiv USB
Se foloseşte de serviciile de comunicaţie prin USB oferite de driverulUSB
Particularităţile de transfer prin USB sunt transparente la acest nivel
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 31/34
31
Caracter istici f izice
Cum detectează echipamentele USB de interconectare (hub-urile) că s-a conectat(deconectat) un dispozitiv la (de la) unul din porturile sale?
- Dispozitive cu rată de transfer mică
Dispozitivele USB de viteză redusă au o rezistenţă legată la Vcc pe linia D- pentru:
Detecţia conectării dispozitivului Identificarea tipului dispozitivului
- Dispozitive cu rată de transfer mare
Dispozitivele USB de viteză mare au o rezistenţă legată la Vcc pe linia D+ pentru:
Detecţia conectării dispozitivului Identificarea tipului dispozitivului
- Codificarea şi transmiterea datelor pe li ni i le fizice de comunicaţie:
Specifică modul în care datele în format binar suntcodificate pe liniile fizice decomunicaţie
Codificarea datelor binare în semnale
Transmisia USB presupune doi paşi: Codificarea datelor în formatul NRZI (Non-Return to Zero Inverted) Generarea semnalului diferenţial
Recepţia USB presupune Recepţia semnalului diferenţial Decodarea datelor din formatul NRZI
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 32/34
32
- Codifi carea datelor în formatul NRZI
Datele sunt reprezentate prin tranziţia semnalului Când se transmite 0 atunci se efectuează o tranziţie a liniei de ieşire Când se transmite 1 atunci se păstrează starea liniei
Codificarea este utilă pentru că pe linie se transmite şi semnalul de tact Receptorul va putea sa regenereze tactul şi să se sincronizeze cu emiţătorul Există riscul desincronizării dacă se transmite un sir neschimbat de “1” Pentru evitarea acestui lucru se inserează la codificare biţi de “0” dacă apar
secvenţe de 6 biţi de “1”.
Exemplu
Protocolul USB
- Comunicaţia prin USB se împarte în două categorii: Enumerare – comunicaţia aferentă procesului de enumerare a dispozitivelor Utilizare (Transfer) – comunicaţia specifică aplicaţiei ce utilizează dispozitivul
-
Enumerare: Prin enumerare sistemul gazdă află dispozitivele USB conectate şi le
programează pentru transferal de date În timpul enumerării dispozitivele USB răspund unei secvenţe standard de
cereri din partea host-ului
- Transferuri cu dispozitivul
După identificare şi configurare dispozitivele USB pot fi utilizate din aplicaţii Fiecare transfer de date se încadr ează în unul din următoarele tipuri:
Control Întreruperi
Blocuri Izocron
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 33/34
33
- Transfer USB
- Transferul cu dispozitivul
Sistemul gazdă e responsabil de gestionarea transferurilor prin USB
Host-ul divide traficul în cuante de timp de 1ms numite cadre
Host-ul alocă câte o porţiune din fiecare cadru fiecărui transfer Fiecare cadru începe printr-un pachet special numit Start-of-Frame (SOF) Exemplu de transferuri împărţite în cadre
Toate transferurile se desfăşoară între un dispozitiv şi host
Fiecare transfer constă din una sau mai multe tranzacţii Tranzacţiile unui transfer pot fi încapsulate întrun singur cadru sau se pot
întinde pe mai multe cadre în funcţie de: Modul de planificare a tranzacţiilor de host Dimensiunea transferului Viteza transferului Celelalte transferuri curente
O tranzacţie este compusă din unul sau mai multe pachete Deoarece tot traficul USB partajează aceleaşi linii fizice, fiecare tranzacţie
trebuie să includă o adresă care identifică dispozitivul destinaţie
8/10/2019 Subiecte Rezolvate Partea a II-A
http://slidepdf.com/reader/full/subiecte-rezolvate-partea-a-ii-a 34/34
- Adresarea dispozitivelor USB
Fiecare dispozitiv are o adresă unică alocată de host în faza de enumerare
Entitatea finală implicată într -un transfer pe USB nu este însă dispozitivul USB
Un dispozitiv are unul sau mai multe unităţi interne adresabile individualnumite endpoint
Un endpoint este uzual un buffer sau registru intern dispozitivului Datele stocate într-un endpoint pot fi date recepţionate sau date care vor fi
transmise
Host-ul nu are endpoints, însă el comunică cu endpoint-urile dispozitivelor Adresa unui endpoint este formată dintr -un număr pe 4 biţi şi o direcţie de
transfer (IN sau OUT) Toate dispozitivele trebuie sa implementeze endpoint-ul cu numărul 0, ce are
rol de control
- Tranzacţii USB Tranzacţiile USB sunt compuse din până la 3 faze, fiecare fază fiind specificată
printr-un pachet USB.
Fiecare tranzacţie începe printr-un pachet de tip token, trimis de host prin carese stabileşte adresa partenerului şi tipul tranzacţiei.
Pachetul de date conţine datele specific transferului Pachetul de răspuns din partea partenerului cu rezultatul transferului.