Sunteți pe pagina 1din 53

Curs 2

1
Codificarea informatiilor

• Ce se urmareste:
• reprezentarea coerenta, univoca a informatiilor in vederea
stocarii, transmiterii si a prelucrarii acestora
• utilizarea eficienta a spatiului alocat (spatiu minim)
• detectia (si corectia) erorilor
• facilitarea (simplificarea) operatiilor de prelucrare, stocare si
transmitere
• securizarea datelor
• Cum se realizeaza:
• prin metode/algoritmi/standarde de codificare
• depinde de tipul de informatie care se codifica

2
Formate binare de reprezentare

• Bit:
• binary digit;
• unitatea elementara de informatie
• starea unui bistabil, sau a unei celule elementare de
memorie
• Octet (byte):
• grup de 8 biti
• unitatea elementara de adresare la cele mai multe
calculatoare actuale (inclusiv Intel x86)
• poate reprezenta: o valoare numerica, un caracter (cod
ASCII), un set de variabile (semnale) logice

3
Formate binare de reprezentare

• Octet
7 6 5 4 3 2 1 0
D7 - bitul cel mai semnificativ
D0 - bitul cel mai putin semnificativ
• Cuvant (word)

D15-D815- octetul
14 13 superior
12 11(High)
10 9 8 7 6 5 4 3 2 1 0
D7-D0 - octetul inferior (Low)
- folosit pt. reprezentarea intregilor, simpla precizie

4
Formate binare de reprezentare

• Dublu-cuvant (double word):


31 ...... 24 23 ...... 16 15 ...... 8 7 ...... 0
• 32 biti, 4 octeti, 2 cuvinte
• D31-D16 cuvantul superior
• D15-D0 cuvantul inferior
• folosit pentru reprezentarea numerelor in virgula fixa (dubla
precizie la sistemele pe 16 biti) sau in virgula flotanta

5
Formate binare de reprezentare

• Cuadruplu-cuvant (quad-word)

63 0
• 64 de biti, 8 octeti, 4 cuvinte, 2 dublucuvinte
• folosit pentru reprezentarea numerelor in virgula fixa (dubla precizie pt. sist. pe 32
biti) si in virgula flotanta
• Formate extinse:
• 80 de biti - pt. reprezentarea numerelor in virgula flotanta (formate
interne/intermediare)

6
Conventii de stocare/transmitere a informatiilor

• Little-endian/ Big-endian
• Little-endian: partea mai putin semnificativa la adresa mai mica
• Octeti: 2BH, 45H, 12H

2B 45 12
• Cuvinte: Adresa:
1234H, 56ABH,
x x+1FFFFH
x+2 x+3 x+4

34 12 AB 56 FF FF
• Dublu-cuvinte:
Adresa:01234567H,
x x+1 89ABCDEFH
x+2 x+3 x+4 x+5 x+6 x+7

67 45 23 01 EF CD AB 89
Adresa: x x+1 x+2 x+3 x+4 x+5 x+6 x+7 x+8
7
Reprezentarea numerelor

• numere pozitive:
• intervalul de reprezentare: [0.. 2n-1], unde n - nr. de
biti

8
Reprezentarea numerelor

• numere negative: mai multe metode de reprezentare (codificare):


• semn – mantisa,
• complement faţă de 1,
• complement faţă de 2

9
Reprezentarea numerelor

Reprezentare în format semn –


mantisă

• intervalul de reprezentare: [-
(2n-1-1) ... (2n-1-1)]
• bitul cel mai semnificativ - bit
de semn:
• 0 - numar pozitiv
• 1 - numar negativ

10
Reprezentarea numerelor

• Reprezentare în cod
complement faţă de 1
• Se inversează toţi biţii.
• Dacă msb (most significant bit
bitul cel mai semnificativ) este 1
atunci numărul este negativ.
• Intervalul de reprezentare este [-
(2n-1-1) ... (2n-1-1)]

11
Reprezentarea numerelor

• Reprezentare în cod complement faţă


de 2
• Regula practică de a obţine acest cod
este următoarea:
• dacă numărul este pozitiv sau 0
reprezentarea este normală;
• dacă numărul este negativ se
efectuează reprezentarea modulului
numărului, apoi se inversează toţi biţii
obţinând complementul faţă de 1 şi se
adună 1 la rezultat (în poziţia lsb).

12
Reprezentarea numerelor
• Exemple

13
Aritmetica in complement fata de 2

7+ 00000111+ 7+
-10 11110110 246
-3 11111101 253
• in C2 operatiile aritmetice sunt identice cu aritmetica
numerelor pozitive, fiind o problemă de interpretare
• la reprezentarea numerelor negative trebuie sa se
precizeze lungimea de reprezentare
• pt. cresterea lungimii de reprezentare: Extensia de
semn
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

14
Reprezentarea in virgula flotanta

• scopul: reprezentarea numerelor fractionare, a numerelor foarte mari si foarte mici


• forma de reprezentare: semn, caracteristica si mantisa

S Caracteristica Mantisa

1
simpla precizie: 32 de biti
c m
• 1 Semn, 8 Caracteristica, 23 Mantisa
• dubla precizie: 64 de biti
• 1 Semn, 11 Caracteristica, 52 Mantisa
• precizie extinsă: 80 biţi
• 1 Semn, 15 Caracteristica, 64 Mantisa
• caracteristica = exponent + 1/2 (domeniu_exponent)

15
Reprezentarea in virgula flotanta

• limite de reprezentare:
-Vmax -Vmin 0 Vmin Vmax
-∞ +∞
NU modeleaza pe deplin numerele reale

Precizia (biti) Simpla precizie Dubla precizie Precizie extinsa


Format 32 64 80
m(antisa) 23 52 64
c(aracteristica) 8 11 15
emax 127 1023 16383
emin -126 -1022 -16382

16
Codificarea Alfanumerica. ASCII

• American Standard Code for Information Interchange


• Fiecare caracter are 7bits + 1bit de paritate = 1byte
• Reprezintă tot setul de caractere ale alfabetului latin, fiecare
caracter având un cod între 0 și 127
• Prin acest cod se pot face transferuri de informație de la un
calculator la altul.
• Standardul ASCII:
• se codifica: litere, cifre, semne de punctuatie, semne grafice,
comenzi de formatare, comenzi de control al transmisiei
• se folosesc 7 biti/cod (+1 bit paritate) sau 8 biti/cod (pt.
standardul extins)
Codificarea Alfanumerica. ASCII

• Exemple:
• litere mari: A- 41H, B- 42H, C - 43H ......
• litere mici: a - 61H, b - 62H, c - 63H, ..
• cifre: 0 - 30H, 1 - 31H, ..... 9 - 39H
• altele: spatiu - 20H, CR - 0DH, LF - 0AH.....
• Linkuri utile
• http://www.pcguide.com/res/tablesASCII-c.html
• http://nickciske.com/tools/binary.php

18
Structuri de date
utilizate in limbaje de asamblare
• Declararea structurilor de date utilizate în limbaj de asamblare:
• explicit: prin declaratii, care indica in speta lungimea datei
• implicit: prin utilizarea unor tehnici de adresare
• numele variabilei reprezinta o adresa de memorie !!!
• date booleene (logice)
• indicatori de conditie (flag-uri): C,Z,O,...
• zone de memorie cu acces la nivel de bit
• (numai la anumite procesoare – ex: microcontrolare)
• caractere
• date reprezentate pe octet in codificare ASCII
• intregi fara semn
• reprezentati pe octet, cuvant sau dublucuvant

19
Structuri de date

• întregi cu semn
• în codificare complement față de 2 – unele instrucțiuni pot face distincție între întregi cu
semn și fără semn
• la declarare nu se face distincție între cele două forme de întregi
• numere în reprezentare flotantă
• dacă se acceptă aritmetica în virgulă flotantă (ex.: prezența unui coprocesor matematic)
• reprezentare pe 32, 64 sau 80 biți
• pointeri:
• Folosiți pentru păstrarea unor adrese (adr. segment: adr. offset)
• Șiruri de caractere sau de cuvinte
• Ține de modul de utilizare si nu de modul de declarare
• înregistrări

20
Arhitectura von Newmann

Von Neumann
Architecture

21
Computere
• Toate computerele respectă mai mult sau mai puțin
arhitectura Von Neumann !

22
Arhitectura Von Neumann

• Model care stă la baza proiectării și construirii


calculatoarelor, este bazat pe următoarele trei
caracteristici:
1. Computerul constă din 4 subsisteme principale:
• Memorie
• UAL (Unitate Aritmetică și Logică) sau ALU (Arithmetic/Logic Unit)
• Unitate de Control
• Sistem Input/Output (I/O)
2. Programul este stocat în memorie în timpul execuției execution.
3. Instrucțiunile programului sunt executate secvențial.

23
Arhitectura Von Neumann
Magistrala

Processor (CPU)

Memoria Input-Output
Unitate de
Control

ALU
Memorează datele Comunică cu
și programul „lumea exterioară", de ex.
• Ecran
Execută program • Tastatură
• Dispozitive de stocare
Execută operații aritmetice/logice • ...
cerute de program

24
Subsistemul de memorie

• Memoria, numită uneori RAM (Random Access Memory),


• Constă din mai multe celule de memorie (unități de stocare) de
dimensiune fixă.
Fiecare celulă de memorie are asociată o adresă: 0, 1, …
• Toate accesele la memorie se fac pe baza acestei adrese specificată.
O celulă este unitatea minimă ce poate fi accesată (citită/scrisă); Termen
folosit: (fetch/store).
• Timpul de citire/scriere (fetch/store) este același pentru toate
celulele.
• În timpul rulării, ambele:
• Program
• Date (variabile)
sunt stocate în memorie.
25
RAM
• Atenție: a se distinge între N
• adresa unei celule de memorie și 0000000000000001
conținutul celulei de memorie 1 bit
• Lărgimea memoriei: Memory width,W: 0
• Numărul de biți ai unei celule de memorie, 1
tipic un byte (=8 bits) 2
• Lărgimea adresei (N): 2N
• Numărul de biți utilizații pentru a
reprezenta fiecare adresă de memorie, ...
ceea ce determină dimeniunea maximă a
memoriei adresabilă = spațiul adreselor
• Dacă lărgimea adresei este N-biți, atunci 2N-1
spațiul adreselor este 2N (0,1,...,2N-1)
W 26
Dimensiunea memoriei / Viteză
• Memorie tipică a unui computer personal (PC): 4GB – 64GB
• Multiplii octet:
• Kilobyte (KB) = 210 = 1,024 bytes ~ 1000
• Megabyte(MB) = 220 = 1,048,576 bytes ~ 1 million
• Gigabyte (GB) = 230 = 1,073,741,824 bytes ~ 1 billion
• Timp de acces la memorie (citire din/ scriere în memory)
• De ordinul nanosecundelor (1 nsec. = 0.000000001 sec.)
• RAM este
• volatilă (păstrează informația cât timp este alimentată cu
tensiune electrică)
• Relativ scumpă

27
Operațiile efectuate de memorie

• Fetch (adresă) aducere de la o adresă:


• Aduce (citește) o copie a conținutului celulei de memorie cu
adresa specificată.
• Non-distructiv, copiază valoarea din celula de memorie.
• Store (Adresa, value) stochează, memorează, scrie:
• Scrie valoarea specificată în celula de memorie specificată de
adresă.
• Distructivă, rescrie valoarea anterioară a celulei de memorie.
• Sistemul de memorie este interfațat prin:
• Memory Adresa Register (MAR)
• Memory Data Register (MDR)
• Semnal Fetch/Store 28
Structura subsistemului de memorie
• Fetch(adresă)
MAR MDR • Încarcă (Load) adresa în MAR.
F/S • Decodifică adresa in MAR.
Circuit
decodificator
Fetch/Store • Copiază conținutul celulei de
controller memorie cu adresa specificată în
memorie
MDR.
• Store(Adresa, value)
• Încarcă (Load) adresa în MAR.
• Încarcă (Load) valoarea în MDR.
...
• Decodifică adresa in MAR
• Copiază conținutul MDR în celula
de memorie cu adresa specificată.
29
Subsistemul Input/Output
• Gestionează dispozitivele care permit sistemului de calcul să:
• Comunice și interacționeze cu lumea exterioară
• Ecran, tastatură, imprimantă, ...
• Stocheze informații (stocare în masă)
• Hard disk-uri, memory stick, CD, DVD, …
• Metode de acces la dispozitive de stocare în masă:
• Dispozitive de stocare cu acces direct
• Hard disk-uri, memory stick, CD, DVD...
• Dispozitive de stocare de acces secvențial

30
Controlere I/O

• Viteza dispozitivelor de I/O este lentă comparativ cu RAM


• RAM ~ 50 nsec.
• Hard-Drive ~ 10msec. = (10,000,000 nsec)
• Soluție:
• Controlerele I/O, un procesor special:
• Are un buffer de memorie mic și o logică de control pentru a controla dispozitivul I/O (de
exemplu, deplasați brațul discului).
• Trimite un semnal de întrerupere la CPU când este terminată operația citit / scris.

• Transferă date între RAM și memory buffer.


• Procesorul este liber să facă altceva în timp ce controlerul I/O citește/scrie date
de la/la dispozitiv în bufferul de I/O.

31
Structura Subsistemului
Input/Output
Semnal de întrerupere (la procesor)
Data de la/la memorie

I/O controller

I/O Buffer

Control/Logic

I/O device

32
Subsistemul UAL
• ALU (Unitatea de aritmetică / logică) efectuează
• operații matematice (+, -, x, /, ...)
• operații logice (=, <,> și, sau, nu, ...)
• În calculatoarele de astăzi sunt toate integrate în
procesor
• Este format din :
• Circuite pentru efectuarea operațiilor aritmetice / logice.
• Registre (unități de stocare rapidă) pentru stocarea
rezultatelor de calcul intermediare.
• Magistrală care leagă cele două.

33
Structura ALU
• Registre:
R0
• Celule de memorie locale foarte
rapide, care stochează operanzii și R1
rezultatele intermediare. R2
• RIC (registru indicatorilor de condiții),
un registru cu scop special care
stochează rezultatul operațiilor <, =,>
• Circuite ALU: Rn

• Conține o serie de circuite pentru


efectuarea de operații matematice /
logice. Circuite ALU

• Magistrale:
• Calea de date care interconectează GT EQ LT
registrele la circuitele ALU.
34
Unitatea de control
• Programul este stocat în memorie
• ca instrucțiuni de limbaj mașină, în mod binar
• Sarcina unității de control este de a executa programe în
mod repetat:
• Fetch din memorie următoarea instrucțiune care va fi
executată.
• Decodificarea aceasteia, adică, determină ce trebuie făcut.
• Execuția ei prin emiterea semnalelor adecvate către
subsistemele ALU, memorie și I/O.
• Continuă până la instrucțiunea HALT

35
Instrucțiuni în limbajul mașinii
• O instrucțiune de limbaj mașină constă din:
• Cod Operație, spunând ce operație trebuie efectuată
• Câmp (uri) de Adresă, adică adresele de memorie ale valorilor
cu care funcționează operațiunea.
• Exemplu: ADD X, Y (Adună conținutul locațiilor de memorie X
și Y și îl stochează în locația Y).
• Presupunem: Cod operație ADD este 9, și adresele X=99, Y=100

Cod op.(8 biți) Adresa 1 (16 bits) Adresa 2 (16 bits)

00001001 0000000001100011 0000000001100100

36
Proiectarea setului de instrucțiuni
• Două abordări diferite:
• Reduced Instruction Set Computers (RISC)
• Set de instrucțiuni cât mai mic și simplu.
• Minimizează numărul de circuite -> calculatoare mai
rapide
• Complex Instruction Set Computers (CISC)
• Mai multe instrucțiuni, multe foarte complexe
• Fiecare instrucțiune poate face mai multe operații,
dar necesită mai multe circuite.

37
Instrucțiuni mașină tipice
• Notație:
• Folosim X, Y, Z pentru a denumi celulele RAM
• Presupunem că există un singur registru R (pentru
simplitate)
• Folosim descrieri similare în limba engleză (ar trebui să fie
binare)
• Instrucțiuni de transfer de date
• LOAD X Încarcă conținutul locației de memorie X
în R
• STORE X Încarcă conținutul R în locația de memorie X
• MOVE X, Y Copiază conținutul loc. de memorie X în
loc. Y
38
Instrucțiuni mașină tipice(cont.)
• Aritmetice
• ADD X, Y, Z CON(Z) = CON(X) + CON(Y)
• ADD X, Y CON(Y) = CON(X) + CON(Y)
• ADD X R = CON(X) + R
• instrucțiuni similare pentru alți operatori, de ex. SUBTR,
SAU, ...
• Compară
• COMPARE X, Y
Comparaă conținutul celulei de memorie X cu conținutul
celulei de memorie Y și setează indicatorii de condiție
(RIC) în consecință.
• Exemplu If CON(X) = R then set EQ=1, GT=0, LT=0

39
Instrucțiuni mașină tipice(cont.)
• Ramificare
• JUMP X Încinstrucțiunea urm. de la loc de memorie X
• JUMPGT X Încarcă instrucțiunea urm. de la loc loc de
memorie X
numai dacă este setat indicatorul GT în RIC, altfel
se
încarcă instrucțiunea următoare.
• JUMPEQ, JUMPLT, JUMPGE, JUMPLE,JUMPNEQ
• Control
• HALT Oprește execuția programului.

40
Exemple
• Pseudo-cod : A ← B + C
• Presupunând variabila :
• A stocată în celula de memorie 100, B stocată în celula
de memorie 150, C stocată în celula de memorie 151
• Limbaj mașină (în realitate în binar!)
• LOAD 150
• ADD 151
• STORE 100
• sau
• (ADD 150, 151, 100)

41
Structura unității de control
• PC (Program Counter):
• stochează adresa următoarei instrucțiuni pentru a prelua codul
acesteia
• IR (Instruction Register):
• stochează instrucțiunea preluată din memorie
• Instruction Decoder:
• Decodează instrucțiunea și activează circuitele necesare

PC IR

+1
Instruction
Decoder

42
von Neumann
Architecture

43
Cum funcționează toate acestea împreună?
• Execuția programului:
• PC-ul este setat pe Adresa unde prima
instrucțiune din program este stocată în
memorie.
• Repetă până la instrucțiunea HALT sau eroare
fatală
Fetch instruction
Decode instruction
Execute instruction
Sfârșit buclă
44
Execuția programului (cont.)
• Etapa Fetch
• PC --> MAR (încarcă Adresa din PC into MAR)
• Fetch signal (trimite semnal către memorie pentru a
încărca valoarea în MDR)
• MDR --> IR (încarcă valoarea în Instruction Register)
• PC + 1 --> PC (Incrementeaza Adresa in program counter)
• Etapa Decode
• IR -> Decodificator de instrucțiuni (decodifică instrucțiunea
din IR)
• Decodorul de instrucțiuni va genera apoi semnale pentru a
activa circuitul pentru execuția instrucțiunii
45
Execuția programului (cont.)
• Etapa Execute
• Diferă de la o instrucțiune la alta.
• Exemplu:
• LOAD X (încarcă valoarea de la adr. X în registru)
• IR_Adresa -> MAR
• Fetch signal
• MDR --> R
• ADD X
• Rămâne ca exercițiu

46
Set de instrucțiuni pentru mașina noastră Von Neumann
Opcode Operation Meaning
0000 LOAD X CON(X) --> R
0001 STORE X R --> CON(X)
0010 CLEAR X 0 --> CON(X)
0011 ADD X R + CON(X) --> R
0100 INCREMENT X CON(X) + 1 --> CON(X)
0101 SUBTRACT X R - CON(X) --> R
0101 DECREMENT X CON(X) - 1 --> CON(X)
COMPARE X If CON(X) > R then GT = 1 else 0
0111 If CON(X) = R then EQ = 1 else 0
If CON(X) < R then LT = 1 else 0
1000 JUMP X Ia următoarea instrucțiune de la loc. de mem. X
1001 JUMPGT X Ia urm. instrucțiune de la loc. de mem. X if GT=1
... JUMPxx X xx = LT / EQ / NEQ
1101 IN X Introduce un întreg și îl memorează la adresa X
1110 OUT X Scoate din memorie în zecimal, conținutul loc. X
1111 HALT Stop program execution 47
Metode generice de acces la date
• Metoda de acces: modalitatea de specificare (exprimare) a locatiei
instructiunii sau a operandului care urmeaza sa se acceseze
• Metode de acces pentru instructiuni:
• secventiala: se citeste instructiunea de la adresa urmatoare
• IP=IP+lungimea_instructiunii_curente
• ex: instructiuni aritmetice si logice
• directa: se citeste instructiunea de la adresa specificata in
instructiunea curenta
• IP= adresa_directa
• ex: instructiuni de salt, apel de rutine
• relativa: se citeste instructiunea de la o adresa relativa fata de
adresa curenta (deplasamentul poate fi pozitiv sau negativ)
• IP= IP+deplasament
• ex: instructiuni de salt, apel de rutine
• indirecta: instructiunea curenta specifica adresa adresei instructiunii
urmatoare

48
Metode generice de acces la date
• Metode de acces la date:
• imediata: valoarea operandului este prezenta in codul instructiunii
• ex: MOV AX, 1234H
• directa: adresa operandului este specificata in codul instructiunii
• ex: MOV AX, [1234H]
• registru: operandul se afla intr-un registru intern al UCP
• ex: MOV AX,BX
• indirecta: instructiunea contine adresa adresei operandului
• ex: MOV AX, [SI+1234H]
• implicita: codul instructiunii implica utilizarea unui anumit registru,
adresa de memorie sau adresa de adresa de memorie
• ex: PUSH AX ; implicit se foloseste SP ca registru de adresare
• indexata: se acceseaza succesiv elementele unei structuri de date de
tip tablou
• ex: MOV AX, [SI]
• altele: bazata, relativa, stiva

49
Instrucţiuni în cod maşina
• formatul instrucţiunilor (lungime+continut):
• varianta 1: fara
Codoperanzi
operatie in codul instructiunii

• operatia nu necesita operanzi sau operanzii sunt specificati implicit prin codul de operatie
• varianta 2: un singur camp de operand in codul instructiunii
Cod operatie Adresa/Data imed.
• operatia este unara (un operand) sau al doilea operand este implicit
• varianta 3: doua campuri de operanzi (sursa, destinatie)
Cod operatie Adresa operand 1 Adresa op.2/Data imed.
• varianta4: trei campuri de operand (operand 1, operand 2, rezultat)

Cod operatie Adresa operand 1 Adresa op.2/Data imed. Adresa rezultat

50
Executia instructiunilor
• Faze de executie:
• citire cod instructiune (instruction fetch IF)
• decodificare instructiune (instruction decoding Dec)
• citire operand (operanzi) (data fetch DF)
• executie operatie (execution Ex)
• scriere rezultat (write back WB)
• Cicluri de transfer:
• ciclu de citire instructiune
• ciclu de citire operand (optional)
• ciclu de scriere rezultat (optional)
=>durata unei instructiuni este determinata (in majoritatea cazurilor)
de numarul de cicluri care trebuie sa se execute
• un ciclu = una sau mai multe perioade de ceas
• durata unei perioade de ceas= durata celei mai lungi cai in UCP (suma
intarzierilor produse in circ. combinationale care alcatuiesc calea unui
semnal)

51
Executia instructiunilor
• Executie secventiala –Perioade pe instructiune=5
IF Dec DF Ex WB IF Dec DF Ex WB
Timp: T 2T 3T 4T 5T 6T 7T 8T 9T 10T

Instr. 1 Instr.2
• Executie pipeline – Per. Pe instr.=5..1

Instr.1 IF Dec DF Ex WB
Instr.2 IF Dec DF Ex WB
Instr.3 IF Dec DF Ex WB
Instr.4 IF Dec DF Ex WB
Timp: T 2T 3T 4T 5T 6T 7T 8T
52
Arhitectura procesoarelor Intel x86
Procesor Structura/ Spatiu de Unitati de Tip
Frecv. memorie prelucrare executie
8086/88 16 /5MHz 1Mo 2 biprocesor

80286 16/20MHz 16Mo 4 pipeline

80386 32/33MHz 4Go 6 pipeline

80486 32/66MHz 4Go 8 pipeline

Pentium 32/100MHz 4Go 12 2 linii


pipeline
Pentium 32/200MHz 4Go superscalar
Pro
Pentium 64 4Go superscalar
II, III, IV /400MHz –
2GHz 53

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