Sunteți pe pagina 1din 34

1.

Tipuri de date
-

instruciunile unui microprocesor trebuie s opereze asupra unor operanzi avnd


diferite 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 nelege prin tip de date?
Tip prin tip se nelege o colecie de valori
Tip de date prin tip de date se nelege un tip mpreun cu un set de operaii ce se pot
efectua cu valorile tipului
Tip de date abstract este un tip de date ale crui proprieti (valorile i operaiile)
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
Numr octei
Codificare
Cu semn, fr semn
ntregi, virgula flotant
Operaii
Instruciunile ce au operanzi de tipul respectiv
Tipuri de date fundamentale oferite de IA-32
+Tenbyte

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 valori
si 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, codificarea
lor, 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_valori
nume_sir tip N dup(valoare)
tip: db, dw, dd, dq, dt
var_int8 db 12H
var_int16 dw 1234H
var_int32 dd 12341234H
var_int64 dq 1234123412341234H
Constante vs. variabile?
Unde este pastrata valoarea unei constante sau a unei variabile?
const_int8 equ 10
var_int8 db 10
mov al, const_int8
mov al, var_int8
3

Caracteristicile variabilelor
Numele variabilei
Tipul variabilei
Dimensiunea alocat pentru variabile
Codificarea valorii variabilei
Stocarea coninutului variabilelor
Alocarea de memorie pentru stocarea valorii
Alinierea datelor
Accesarea variabilelor
Pointeri i referine
Valoare

3. Pointeri si referinte
-

Pointeri i referine
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 stocrii valorilor de tipul respectiv, precum i setul de
operaii ce se pot efectua asupra valorilor respective.
Valoarea variabilei este dat de coninutul memoriei n timpul execuiei
programului.
O variabila de tip pointer contine adresa unei locatii de memorie care la randul
ei contine valoarea propriuzisa
Pointeri i referine exemplu
int X = 5;
int Y = 7;
...
int* Ptr = &X;

Rezultatul operaiei *Ptr = 10

Pointer neiniializat
int *Ptr;

Ce se ntmpl dup Ptr1 = Ptr2?


Care este rezultatul operaiei *Ptr1 = *Ptr2?

Numele unei variabile identific adresa de memorie la care este salvat variabila
n memorie
Accesarea unei variabile de memorie:
mov al, var_int8
mov si, offset var_int8
mov al, [si]

Un pointer este o variabil ce conine adresa unei alte variabile


O referin este adresa unei variabile
5

int a = 1;
int b = 2;
int *pa = &a;
int *pb;
pb = pa + 1;
*pb = *pa + *pb;

Care este coninutul variabilelor dup


execuia secvenei de cod?

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 neiniializat
int *pa; int *pa = NULL;
*pa = 10; *pa = 10;
Utilizarea unui pointer iniializat 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)++;
6

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 leaks
for( i = 0; i < 100000; i++ )
{
int *pi = new int(i);
*pi = rand();
printf(%d, *pi);}
Dezalocare multipl pentru aceeai zon alocat
int *pa = malloc(4), *pb = pa;
free(pa);
free(pb);

Recomandri la utilizarea pointerilor


Programatorul trebuie s se asigure c valoarea referit de un pointer este
valid atunci cnd se acceseaz;
Programatorul trebuie s se asigure c toate zonele alocate dinamic n cod se i
dezaloc;
Programatorul trebuie s se asigure c nu terge aceeai zon alocat de mai
multe ori;
Programatorul e bine s nu foloseasc aritmetica pointerilor

4. Probleme de securitate a codului


-

Probleme de securitate 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
7

n buffer-ul de memorie se introduce codul main al programului ce se


dorete executat
Adresa de revenire se suprascrie cu adresa bufferului
La revenirea din funcie se va apela codul strin
Depirea buffer-ului de memorie permite execuia unei secvene de cod pe o
main la distan
Exemple: Internet Worm

5. Modele de memorie
-

Adresele cu care procesorul adreseaz memoria fizic prin magistrala de adrese sunt
considerate adrese fizice
Fiecare octet de memorie are o adres unic numit adresa fizic
Spaiul maxim de adrese fizice
IA-32 este 4Go (32 bii) (extensibil la 64 Go prin PAE (Physical Address
Extension) 36 bii)
IA-32e este in funcie de modul de implementare: 40biti, 48 bii, 56 bii sau 64
bii
Aplicaiile nu folosesc ins in mod direct adresele fizice
Aplicaiile utilizeaz facilitile de management al memoriei implementate in
procesor:
Modelul de memorie liniar
Modelul de memorie segmentat
Modelul de memorie real modul de adresare 8086

Modelul de memorie liniar:


Memoria apare programelor ca un unic spaiu de adrese liniare de 4 Go (0232 -1)
Codul, datele i stiva programelor se regsesc in acelai spaiu de adrese liniare
Modul de memorie segmentat:
Memoria apare programelor ca un grup de spaii de adrese independente,
contigue, numite segmente
Codul, datele i stiva programelor sunt uzual coninute in segmente distincte
Poate gestiona 16383 segmente fiecare avand maxim 4 Go (0-232 -1)
Modelul de memorie liniar

Adresa obinut 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 de
memorie ce se mapeaz in memoria fizic

6. Moduri de adresare
-

Ce se intelege prin moduri de adresare ale unui procesor?


Reprezint modalitatea prin care se specific operanzii pentru instruciuni
Operanzi i rezultate
Adrese de salt
Operanzii se specific implicit sau explicit
Operanzii pot fi localizai in:
Codul instruciunii
Registre
Locaii de memorie
Porturi de intrare/ieire
Adresarea imediat
Operandul este specificat in codul instruciunii
mov eax, 10
add eax, 10
a = 10
b = const_10
c = b + const_20
Adresarea prin registre
Operandul este specificat i localizat intr-unul din registrele procesorului
add eax, ebx

10

Adresarea memoriei
Operandul este specificat i localizat in memorie
Exist mai multe moduri de adresare a memoriei
O adres de memorie in aplicaii se specific prin:

Adresarea memoriei
Adresare direct adresa de memorie a operandului este specificat in codul
instruciunii
Utilizare: variabile de memorie adresabile direct
var_int32 dd 0
mov eax, var_int32
mov var_int32, ebx
Adresare indirect adresa de memorie a operandului este specificat printrun registru sau printr-o combinaie de registre
Utilizare: pointeri i referine
var_int32 dd 0
mov ebx, offset var_int32
mov eax, [ebx]
Exist mai multe combinaii de componente prin care se poate specifica o
adres de offset

sir_int16 dw 10 dup (?)


xor eax, eax
mov esi, 2
mov ax, sir_int16
mov ebx, offset sir_int16
mov 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
11

Utilizare:
Procesare, filtrare, recunoatere, codare voce
Procesare, filtrare, recunoatere, codare video
Grafic 3D, modelare CAD
Algoritmi de criptare
Identificare
...
mov eax, 1
cpuid
test edx, 00800000h
jnz mmx_found
...
Registre MMX i SSE

Operaii i operanzi SIMD


Instruciunile opereaz asupra unor date impachetate

Instruciunile opereaz asupra unor date scalare

12

Operaii i operanzi SIMD (MMX)

Operaii 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 mai
semnificativi
Signed saturation valoarea rezultata se va limita la min/max cu semn
Unsigned saturation valoarea rezultata se va limita la min/max fara semn

13

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 (microoperaii) (P6)
Optimizarea salturilor i buclelor
Aducerea instruciunilor in avans i decodarea lor
Selecia instruciunilor
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 instruciunilor condiionate setcc i cmov
Aranjarea codului pentru a se potrivi peste predicia static implementat la
nivelul microarhitecturii
14

Evitarea apelurilor incuibate multiple de subrutine


Desfurarea buclelor

9. Performana sistemelor
-

Programarea secvenial
Majoritatea aplicaiilor sunt scrise dup o logic secvenial
Aplicaia este executat pe un singur procesor
Problema este mprit ntr-o serie de instruciuni ale procesorului
Instruciunile sunt executate secvenial
Doar o instruciune se execut la un moment de timp dat

Performana execuiei secveniale:


Viteza de calcul: numr de operaii pe sec
N

v=

Dac o aplicaie necesit N operaii


Din aceste operaii o fraciune f se execut cu rata i restul se execut cu
viteza

Timpul total de execuie:
15

Pentru a obine o performan rezonabil f trebuie s fie ct mai mare

n aplicaiile secveniale, dac exist blocuri de operaii care se execut la o


vitez mult mai redus dect restul operaiilor, performana ntregii aplicaii
poate fi limitat de efectele acestora.
Pentru a obine o performan ct mai ridicat la execuia aplicaiilor
secveniale trebuie identificate blocurile care necesit cel mai mare numr de
operaii (f) i trebuie implementat ct mai performant ( )

(1)
t=
+

Performana aplicaiei:

1
r= =
(1)

Performana execuiei paralele:


O aplicaie (algoritm, task) se poate executa secvenial pe un sistem
uniprocesor
Sau aplicaia se poate descompune n mai multe taskuri care se execut
simultan pe mai multe procesoare
Cum se poate exprima performana unei aplicaii executate pe un sistem
multiprocesor, comparativ cu execuia pe un sistem uniprocesor?
Programarea secvenial

16

Performana execuiei paralele

MIPS sau MFLOPS nu se potrivesc pentru msurarea performanei sistemelor


paralele.
Exist ali parametrii prin care se poate estima performana aplicaiilor
paralele:
Speedup
Eficiena
Speedup:
Performanta aplicaiilor paralele este adesea masurat n termeni de cretere a
vitezei
n cazul ideal, pentru o aplicaie care se execut pe un sistem cu p procesoare,
creterea n performan va fi egal cu p
Cum se poate determina creterea n performan (speedup) pentru o aplicaie
ce se execut pe un sistem cu p procesoare fa de execuia pe un sistem cu 1
procesor?
Performana relativ se definete ca raportul dintre timpul de execuie obinut
pe un sistem uniprocesor i timpul de execuie obinut pe un sistem paralel
Sequential execution time
Speedup =
Parallel execution time
Eficiena:
Creterea n performan a unei aplicaii nu este nelimitat, indiferent cte
procesoare s-ar putea folosi pe un sistem.
Creterea n performan (speedup) nu msoar eficiena cu care sunt utilizate
procesoarele.
Se pune problema atingerii unui optim costcretere n performan.
Eficiena se definete ca raportul dintre creterea n performan i numrul de
procesoare folosit pentru a obine creterea respectiv
Sequential execution time
Efficiency =
ProcessorsParallel 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
17

Practice
ncrcarea inegal a procesoarelor
Timpul de comunicaie
Operaii suplimentare necesare (sincronizri, planificri)
Seciuni non-computaionale
Altele
Timpul i costurile de rescriere a codului

Legea lui Amdahl


- n realitate nu toate aplicaiile pot fi paralelizate 100%, deoarece conin operaii ce
sunt secveniale.
- O aplicaie conine dou tipuri de operaii:
Operaii ce trebuie executate secvenial
Operaii ce se pot executa simultan
- Legea lui Amdahl specific limita teoretica pentru mbuntirea performanelor unui
algoritm executat pe un sistem paralel ca fiind operaiile ce se execut inerent
secvenial.
- Creterea n performan S(p) pentru p procesoare:
t(1)
1 + (1)
S (p) =
=
t(p)
+ ()
t(1) timpul de execuie al aplicaiei pe un procesor
t(p) timpul de execuie al aplicaiei pe p procesoare
ts(1), ts(p) timpul e execuie a fraciunii secveniale din aplicaie pe un
procesor, respectiv pe p procesoare
tp(1), tp(p) timpul e execuie a fraciunii secveniale din aplicaie pe un
procesor, respectiv pe p procesoare

10. Intefata paralela


-

Portul paralel a fost proiectat n vederea conectrii la calculator a imprimantelor.


Poate fi folosit i ca un port de intrare/ieire de uz general, pentru cuplarea la
calculator a oricrui dispozitiv extern.
Un alt dispozitiv uzual conectat la portul paralel este scannerul.
Este un port simplu, uor de programat astfel c poate utilizat n dezvoltarea de
prototipuri, realizarea de experimente i teste de interfaare a calculatorului cu
echipamente externe
Portul paralel a fost standardizat n 1994 sub denumirea IEEE 1284.
Standardul descrie comunicarea de mare vitez, bidirecional, ntre PC i periferic
prin interfaa paralel.
Standardul IEEE 1284 definete n totalitate portul paralel i prevede:
Modurile de transfer pentru date
Metoda de negociere a modurilor de transfer
Caracteristicile interfeei fizice: cabluri, conectori
Caracteristicile interfeei electrice: amplificatoare de linie, receptoare,
impedana liniei, terminatoare.
Portul paralel const din interfaa paralel i conectorul de 25 pini situat n spatele
calculatorului.

18

Interfaa paralel const din totalitatea circuitelor i registrelor de comand, date i


stare care asigur legtura ntre un echipament periferic i magistrala intern a
calculatorului prin conectorul paralel.
Portul paralel

Ce elemente hardware i software trebuie cunoscute pentru a putea dezvolta o aplicaie


pentru un anumit port de I/O?
Pentru a accesa un port trebuie cunoscute:
Registre, buffere de intrare
Semnificaia rangurilor registrelor (comenzi, date, stare)
Conectarea rangurilor registrelor la cupla portului
Adresele de porturi ale registrelor
Protocolul de comunicaie
ntreruperi
Canale DMA

Din punct de vedere logic, interfaa paralel standard este format din dou registre i
un buffer de intrare, ocupnd trei adrese consecutive din spaiul adreselor de porturi al
procesorului.
Portul paralel standard conine:
Un registru de date pe 8 bii bidirecional (iniial a fost unidirecional ca ieire),

19

Un registru de control bidirecional pe 6 bii dintre care doar 4 linii sunt legate
la connector-ul interfeei paralele
Un buffer de intrare pe 5 bii pentru liniile de stare de la periferic.
Ieirile interfeei paralele folosesc nivelele logice TTL, curentul ns difer de la o
interfa la alta (pn la 12 mA).
Circuitele interfeei 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
Ieirile registrului de date sunt legate la pinii 2-9 ai conectorului de interfa
paralel
La portul paralel bidirecional direcia de transfer se seteaz prin bitul 5 din
registrul de control)

Registrul de stare
Adresa: IOBase+1

20

IOR:
MOV dx, IOBase+1 status = inport(IOBase+1);
IN al, dx

Registrul de control
Adresa: IOBase+2

Biii 4 i 5 sunt pentru controlul intern al interfeei paralele


Bitul 4 este destinat validrii ntreruperilor
Bitul 5 valideaz intrarea pentru registrul de date

21

Liniile corespunztoare registrului de control sunt bidirecionale.


Ieirile registrului de control sunt legate la cupl prin intermediul unor
inversoare Open-Colector, pentru a asigura procesorului i posibilitatea de a
citi aceste linii.
Cnd portul de control este folosit ca intrare, trebuie ca registrul de control s
conin valoare 0100.

Moduri de lucru
-

Specific modul de funcionare 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

SPP Compatibility
Date unidirecionale trimise spre periferic (imprimant)
Protocolul standard implementat este Centronics

Protocol de comunicaie implementat n software


Folosete doar registrele standard ale interfeei 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

Care sunt paii ce trebuie codificai n program pentru implementarea


protocolului Centronics?
Citete portul de stare i verific rangul Busy, pentru a vedea dac imprimanta
este liber
Dac imprimanta e libera
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 bidirecionale:
Ieiri pe 8 bii
Intrri pe 4 bii prin portul de stare
Cum se implementeaz prin program protocolul de citire date de la periferic?
22

Operaii pentru citire:


Portul cere o jumtate de octet activnd HostBusy
Perifericul rspunde plasnd prima jumtate de octet pe liniile de stare
i activeaz PtrClk
Portul dezactiveaz HostBusy indicnd c a preluat data
Perifericul dezactiveaz PtrClk
Operaiile se repet i pentru a doua jumtate a octetului
SPP Byte
Permite transferuri bidirecionale pe 8 bii prin portul de date al interfeei
paralele
Rangul 5 din registrul de control specific direcia de transfer pentru registrul
de date
Pentru trecerea din ieire n intrare trebuie setat bitul 5 pe 1
EPP

ECP

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 sau
informaii de control

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 la


calculator a echipamentelor din medii cu perturbaii 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 uor de programat ce este folosit pentru conectarea la
calculator a sistemelor embedded.
La momentul actual se foloseste destul de des conceptul de COM virtual pentru
conectarea prin USB, bluetooth sau (W)LAN
La baza portului serie al calculatorului st standardul RS232.
Standardul RS232 definete cerinele logice, electrice i mecanice pentru transferul
serie al informaiilor in format digital.
Nivele de tensiune (EIA, PC +/- 12V)
Tip de transfer: sincron, asincron
Tip de echipamente: DTE i DCE
Parametrii de comunicaie
Controlul fluxului
23

Prin ce se caracterizeaz o comunicaie asincron?


Comunicaie asincron:
Transferul unui caracter la un moment dat.
Nu exist semnal de tact.
Receptorul se sincronizeaz cu emitorul prin programare.

Controlul fluxului
Ce este i pentru ce e necesar?
Problema sincronizrii transferurilor blocurilor de date
Cum afl emitorul dac receptorul poate primi sau nu alte caractere
Soluii:
Fr control
Control software (XON/XOFF)
Control hardware (RTS/CTS)
Portul serie const din interfaa serial i conectorul de 9 pini situat in spatele
calculatorului.
Prin interfaa serial se inelege ansamblul circuitelor care asigur comunicaia intre
unitatea central (procesor) i un dispozitiv periferic care transfer informaia bit dup
bit.
Portul serie

Pentru a accesa un port trebuie cunoscute:


Registre, buffere de intrare
Semnificaia rangurilor registrelor (comenzi, date, stare)
Conectarea rangurilor registrelor la cupla portului
Adresele de porturi ale registrelor
Protocolul de comunicaie
Intreruperi
Canale DMA
Din punct de vedere logic, interfaa serial este format dintr-un set de registre ce
ocup adrese consecutive din spaiul adreselor de porturi al procesorului.
Portul serie conine:
Registre tampon pentru transmisie i recepie
Registre de stare
Registre de configurare i control
Registrele de transmisie i recepie
Adresa: IOBase+0
IOR: (citirea ultimului caracter recepionat)
MOV dx, IOBase data = inport(IOBase);
IN al, dx
24

IOW: (transmisia unui caracter)


MOV dx, IOBase outport(IOBase, data);
OUT dx, al
Circuitul de interfa serie implementeaz serializarea i deserializarea datelor
transmise i respectiv recepionate.
Biii se serializeaz pe linia TxD i sunt recepionai prin RxD din cupla
serial.
Registrul de control
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

Biii 1 i 0 indic lungimea caracterului transmis

Bitul 2 indic numrul de bii de stop:


STB = 0 - 1 bit de stop;
STB = 1 i lungimea caracterului este de 5 bii - 1 . bii de stop;
STB = 1 i lungimea caracterului este de 6, 7 sau 8 bii - 2 bii de stop.
Bitul 3 indic dac se folosete sau nu un bit de paritate in transmisie sau
recepie.
PEN = 0 - nu se folosete paritatea;
PEN = 1 - se va genera un bit de paritate cand se transmit date sau se va
atepta i un bit de paritate cand se recepioneaz date.
Bitul 4 selecteaz tipul de paritate.
EPS = 0 i PEN = 1 - paritate impar (un numr impar de 1);
EPS = 1 i PEN = 1 - paritate par (numr par de 1).
Bitul 5 - dac bitul 3 este pe 1 i bitul 5 este tot pe 1 atunci bitul de paritate
este transmis i este detectat la recepie 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 recepie, transmisie i
registrul de validare a intreruperilor.

25

Registrele de divizare
Adresa: IOBase+0 i IOBase+1
Generatorul ratei de transfer preia tactul de intrare i il imparte cu orice numr
cuprins intre 1 i 216 1
Numrul se afl in registrele de divizare.
Frecvena de ieire a generatorului este 16x rata.
Frecvena de intrare a generatorului este 1.84MHz
divisor = (frecvena 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 recepionat un caracter i a fost transferat in buffer-ul de
recepie.
Bitul 1 = 1 - indic faptul c data din buffer-ul de recepie nu a fost citit de
ctre procesor inaintea recepionrii unui alt caracter. Astfel c acest prim
cuvant a fost pierdut. Bitul OE este pus pe 0 la citirea registrului de stare de
ctre procesor.

Bitul 2 - indic apariia unei erori de paritate.


Bitul 3 - apariia unei erori de cadru. Caracterul recepionat nu are bitul de stop
valid. 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 recepie este in starea 0 o perioad de timp mai
mare decat timpul necesar transmisiei complete a unui caracter. Inseamn c
transmitorul a forat linia pe 0 (Set Break).
Bitul 5 - indic procesorului c circuitul este pregtit pentru a primi un nou
caracter ce trebuie transmis. Acest bit este setat la 1 cand un caracter este
transferat din buffer-ul de transmisie in registrul de serializare. Bitul este
resetat la 0 cand procesorul incarc buffer-ul de transmisie cu un nou
caracter.

26

Bitul 6 - indic faptul c registrul de serializare este gol. Bitul este pus pe 0
odat cu incrcare 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 interfeei USB


Cost redus USB este o soluie simpl i cu costvredus pentru conectarea
dispozitivelor periferice la PC
Standard unic pentru cabluri i conectori
Alocarea automat a adreselor pentru periferice
Sesizarea perifericelor n timpul funcionrii sistemului
Permite conectarea a pn la 127 dispozitive periferice
Permite conectarea perifericelor compuse (ce conin mai multe funcii)
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)

27

Protocol de comunicaie flexibil pentru mai multe moduri de transfer


Integrare simpl n shema dispozitivelor periferice
Detecie i corecie de erori
Alimentare dispozitivelor prin interfaa USB (5V, 100-500 mA)
Controlul consumului (dac nu se fac transferuri, interfaa trece n starea de
consum redus)
Modelul USB
Elementele USB se mpart n dou clase:
Dispozitive de interconectare (hub-uri)
- Sunt dispozitive ce au mai multe porturi la care se pot conecta
alte elemente USB
- La un hub poate fi conectat un alt hub
- Sunt permise 5 nivele de hub-uri
Dispozitive funcionale (funcii)
- Sunt dispozitive ce realizeaz un anumit tip de operaii numite
funcii
Topologia de interconectare a
elementelor USB este una de
tip arbore
Nodul rdcin al arborelui
este un element hub numit
rdcin (root hub)
implementat n chipset-ul de
I/O al plcii de baz
La hub-ul rdcin se pot
conecta alte hub-uri sau
funcii
USB nu ofer o conectare de
tip punct-la-punct ci este o
conexiune de tip magistral
Toate echipamentele
conectate partajeaz aceleasi
semnale
Informaia circul pe magistral sub form de pachete
Fiecare dispozitiv funcional USB va recepiona toate pachetele (chiar dac nu
i sunt adresate)
Distana maxim ntre un hub i o funcie e de 5m
Interfaa sistem (host)
Interfaa dispozitiv(device)
Stiva de comunicaii
Nivelul fizic
Nivelul legaturii USB
Nivelul funcional
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

28

Tranzaciile USB sunt iniiate la nivel software


De la nivelul driverului dispozitiv pentru a accesa dispozitivul
Prin driverul USB sunt transmise pe USB
Nivelul fizic dispozitive funcionale
Sunt dispozitive capabile s trimit sau s recepioneze pachete de date i
control pe magistrala USB
Conin informaii de identificare i configurare ce descriu capabilitile
implementate i resursele necesare
nainde de a fi utilizate funciile trebuie configurate
Sunt de dou tipuri
Simple conin o singur unitate funcional
Compuse conin un hub la care sunt conectate mai multe uniti
funcionale interne
Nivelul fizic dispozitive de interconectare
Simplific conectarea dispozitivelor USB la host
Posed un numr de porturi
Un port de conectare la printe (upstream)
Mai multe porturi de conectare la alte hub-uri sau funcii

Sesizeaz conectrile i deconectrile porturilor dispozitiv


Furnizeaz alimentare dispozitivelor
Permite controlul porturilor (validare/invalidare, stabilire rata de transfer)
Suport pentru distribuirea mesajelor (upstream/downstream)

29

Hub controller
Conine 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 informaiile de stare de la echipamentele USB
Furnizeaz alimentare echipamentelor USB conectat

Nivelul de comunicaie USB


Driverul USB
Ofer o interfa de comunicaie prin USB pentru nivelul software de
deasupra lui
mparte o operaie funcional n tranzacii USB
Tanzaciile vor fi executate secvenial n cadre de 1 ms
Execut tranzaciile pe baza caracteristicilor dispozitivului destinaie
Driverul controller-ului USB (host USB) HCD
Planific generarea transferurilor pachetelor pe magistrala USB
Se folosete de liste de tranzacii
Fiecare list se transmite ntr-un frame de 1 ms
Drivere dispozitiv USB (clieni USB)
Iniiaz operaiile cu dispozitivul USB
Sunt dedicate dispozitivelor USB
Implementeaz accesul la particularitile funcionale ale unui
dispozitiv USB
Se folosete de serviciile de comunicaie prin USB oferite de driverul
USB
Particularitile de transfer prin USB sunt transparente la acest nivel

30

Caracteristici fizice
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 Dpentru:
Detecia conectrii 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:
Detecia conectrii dispozitivului
Identificarea tipului dispozitivului

Codificarea i transmiterea datelor pe liniile fizice de comunicaie:


Specific modul n care datele n format binar suntcodificate pe liniile fizice de
comunicaie
Codificarea datelor binare n semnale

Transmisia USB presupune doi pai:


Codificarea datelor n formatul NRZI (Non-Return to Zero Inverted)
Generarea semnalului diferenial
Recepia USB presupune
Recepia semnalului diferenial
Decodarea datelor din formatul NRZI

31

Codificarea datelor n formatul NRZI


Datele sunt reprezentate prin tranziia semnalului
Cnd se transmite 0 atunci se efectueaz o tranziie a liniei de ieire
Cnd se transmite 1 atunci se pstreaz 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 emitorul
Exist riscul desincronizrii dac se transmite un sir neschimbat de 1
Pentru evitarea acestui lucru se insereaz la codificare bii de 0 dac apar
secvene de 6 bii de 1.

Exemplu

Protocolul USB
- Comunicaia prin USB se mparte n dou categorii:
Enumerare comunicaia aferent procesului de enumerare a dispozitivelor
Utilizare (Transfer) comunicaia specific aplicaiei ce utilizeaz dispozitivul
-

Enumerare:
Prin enumerare sistemul gazd afl dispozitivele USB conectate i le
programeaz pentru transferal de date
n timpul enumerrii dispozitivele USB rspund unei secvene standard de
cereri din partea host-ului

Transferuri cu dispozitivul
Dup identificare i configurare dispozitivele USB pot fi utilizate din aplicaii
Fiecare transfer de date se ncadreaz n unul din urmtoarele tipuri:
Control
ntreruperi
Blocuri
Izocron
32

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 cte o poriune din fiecare cadru fiecrui transfer
Fiecare cadru ncepe printr-un pachet special numit Start-of-Frame (SOF)
Exemplu de transferuri mprite n cadre
Toate transferurile se desfoar ntre un dispozitiv i host

Fiecare transfer const din una sau mai multe tranzacii


Tranzaciile unui transfer pot fi ncapsulate ntrun singur cadru sau se pot
ntinde pe mai multe cadre n funcie de:
Modul de planificare a tranzaciilor de host
Dimensiunea transferului
Viteza transferului
Celelalte transferuri curente
O tranzacie este compus din unul sau mai multe pachete
Deoarece tot traficul USB partajeaz aceleai linii fizice, fiecare tranzacie
trebuie s includ o adres care identific dispozitivul destinaie

33

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 uniti interne adresabile individual
numite endpoint
Un endpoint este uzual un buffer sau registru intern dispozitivului
Datele stocate ntr-un endpoint pot fi date recepionate 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 numr pe 4 bii i o direcie de
transfer (IN sau OUT)
Toate dispozitivele trebuie sa implementeze endpoint-ul cu numrul 0, ce are
rol de control

Tranzacii USB
Tranzaciile USB sunt compuse din pn la 3 faze, fiecare faz fiind specificat
printr-un pachet USB.

Fiecare tranzacie ncepe printr-un pachet de tip token, trimis de host prin care
se stabilete adresa partenerului i tipul tranzaciei.
Pachetul de date conine datele specific transferului
Pachetul de rspuns din partea partenerului cu rezultatul transferului.

34

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