Documente Academic
Documente Profesional
Documente Cultură
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
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
9
Reprezentarea numerelor
• 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
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
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
16
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
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
27
Operațiile efectuate de memorie
30
Controlere 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
• 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
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)
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