Sunteți pe pagina 1din 260

TEST 1

Reprezentarea în baza 2, pe opt biți, a valorii 35 este:

a. 100011
b. 10010011
c. 10000100
d. 0100101
e. 00100011

Reprezentarea în baza 2 a numărului -74,125 este:

a. 01001010,1
b. 0101010,011
c. 001001010,01
d. 11001010,010
e. 11001010,001

Reprezentarea IEEE 754, simplă precizie, a valorii -0.375 este:

a. 0xbea00000
b. 0xfac00000
c. 0xbac00000
d. 0xbec00000
e. 0xefc00000

Reprezentarea IEEE 754, simplă precizie, pentru valoarea -25,375 este:

a. 0 1000 0011 1001 0110 0000 0000 0000 000


b. 1 1000 0011 0001 0110 0000 0000 0000 000
c. 1 0000 0011 1001 0110 0000 0000 0000 000
d. 1 1000 0011 1001 0110 0000 0000 0000 000
e. 0 1000 0011 1100 1011 0000 0000 0000 000

) If (register && 5)
2) If (register & 5)
Cele două funcții decizionale vor intra pe ramura then pentru aceeași valoare a variabilei register.

True
False
If (register & 0x0011)
Ramura then a expresiei dicizionale va fi activă pentru:

a. register = 17
b. register = 8
c. register = 2
d. register = 20
e. register = 16
f. register = 10
g. register = 6
h. register = 32

Funcția decizională if ((register & 19) == 19) verifică dacă variabila register are activi biți:
(numerotarea biților începe de la 0)

a. 1, 2, 5
b. 1, 2, 3
c. 0, 1, 6
d. 0, 1, 4
e. 2, 3 ,6

Numărul reprezentat de următorul șablonul de biți


1 0111 1111 0000 0000 0000 0000 0000 000
este :

a. -1
b. 4,5
c. -2
d. 10
e. 0

TEST 2
Care dintre următoare magistralele nu este prezentă într-un calculator?

a. Magistrala de semnale
b. Magistrala de comunicații
c. Magistrala procesorului
d. Magistrala de adrese
e. Magistrala de date

Magistrala de date este:


a. tridirecțională
b. pluridirecțională
c. multidirecțională
d. unidirecțională
e. biderețională

Magistrala de adrese este:

a. tridirecțională
b. pluridirecțională
c. multidirecțională
d. unidirecțională
e. bidirecțională

Magistrala de semnale

a. este unidirecțională
b. are linii independente (fiecare activând individual)
c. este multidirecțională
d. este bidirectională
e. are un conținut omogen (semnale construind un tot unitar)

DMA-ul facilitează accesul la memorie fără intervenția procesorului

True
False

Semnalul (IBF) semnalează procesorului faptul că portul de intrare este plin

True
False

Când semnalul R/(W) are valoarea 0 înseamna că se va face o citire

True
False

Semnalul (ACK) este folosit pentru a semnala faptul că procesorul lucrează cu memoria

True
False

Când semnalul M/(IO) are valoare 0 înseamna că procesorul lucrează cu memoria


True
False

Portul de ieșire semnalează perifericului faptul că are informații disponibile prin semnalul:

Select one:
a. (OBF)
b. IBF
c. (EXTRD)
d. (EXTWR)
e. (CE)

Pentru adresarea locațiilor de memorie se folosesc liniile de date

True
False

Pentru generarea unei întârzieri de 3,5 semnale ale ciclului de tact, pentru memorie, se folosesc:

a. 2 bistabile
b. 4 bistabile
c. 3 bistabile
d. 1 bistabil
e. 5 bistabile

Pentru adresarea completă a unui modul de memorie cu capacitatea de 128 kB avem nevoie de:

a. 12 de linii de date
b. 16 linii de date
c. 27 linii de adrese
d. 32 de linii de adrese
e. 17 linii de adrese

Pentru adresarea completă a unui modul de memorie cu capacitatea de 2GB avem nevoie de:

a. 30 linii de adrese
b. 32 linii de adrese
c. 22 linii de adrese
d. 31 linii de adrese
e. 25 linii de adrese

Dacă avem la dispoziție module cu capacitatea 256 MB, iar procesorul are 30 de linii de adrese, adresa
31A0 5BACH se găsește în modulul
a. 3
b. 5
c. 4
d. 1
e. 2

Dacă avem la dispoziție module cu capacitatea 128MB, iar procesorul are 30 de linii de adrese, adresa
31A0 5BACH se găsește în modulul

a. 2
b. 6
c. 3
d. 7
e. 8
f. 4
g. 5
h. 1

Dacă avem la dispoziție module de memorie cu capacitatea de 512MB iar procesorul are 38 de linii de
adrese, de câte module de memorie este nevoie pentru a acoperii tot spațiul de adresare?

a. 8
b. 512
c. 16
d. 2
e. 1024
f. 256
g. 4
h. 128
(1). In zecimal, valoarea 16h reprezinta
a) 16 b)32 c)22 d)166 e)256
→c)22
2. Numarul maxim de semnale de selectie pentru un decodificator cu 3 linii de intrare
este: a)8 b)9 c)3 d)6 e)0
??? a)?
(3) Bitul este: a)informatie reductibila b) un atom c) informatie elementara d)
reprezentat prin valori binare multiple e) definit prin cele trei stari posibile (0,1,S)
--> C) INFORMATIE ELEMENTARA
(4)Un Megabyte reprezinta :
a)1024 x 1024 biti b) 1024 x 1024 x 8 bytes c)1024 bytes d)1024 x 1024 x 8 biti e)1024
x 1024 x 1024 biti
->D) 1024 x 1024 x 8 biti (1,048576 megabyte)
(5)Care dintre urmatoarele este o unitate a procesorului
a)unitatea aritmetico-cuantica b) unitatea cuantico-logica c) unitatea logica-comanda
d) unitatea fuzzy-logica e) unitatea aritmetico-logica
->E) unitatea aritmetico-logica
(6)Prin semnalul IORQ\ se selecteaza
a) memoria b) porturile de intrare/iesire c) placa de baza d)BIOS-ul e)driver-ele
→ b) porturile de intrare/iesire
7)Avand o magistrala de 24 de linii pentru adrese, capacitatea de memorie maxim
adresabila este de:
a)16 mb b)256 mb c)24 kb d)24 x 1024 bytes; e)toate gresite
→a)16mb
(8)Care dintre urmatoarele moduri de adresare nu este valid?
a) adresarea stiva b) adresarea directa c)adresarea implicita d) adresarea imediata
e)adresarea inedita
--> E)adresarea inedita
9)Generarea ansamblului de semnale care materializeaza operatiile elementare este
realizata de catre:
a)memorie b)porturi c) registre d)secventiator e)generatorul de tact
→D)secventiator
(10)Care dintre urmatoarele este un model valid de unitate de comanda
a)Van Eyck, b) von Neumann c)asincrona d) Van Gogh e) Vin diesel
b)-->von Neumann
(11)Primul ciclu al unei instructiuni este:
a)load b)add c)fetch d)jump e)MRQ\
--> c)fetch
(12)Care dintre urmatoarele programe de sistem nu exista
a) editoarele de procesor b) translatoarele de limbaj c) depanatoarele d)utilitarele
e)driver-ele
-->a)editoarele de procesor
(13)In urma rularii compilatorului se obtine un fisier
a).cpp b).com c).obj d).exe e).txt
-->c)obj
(14)Care dintre urmatoarele nu reprezinta un tip de memorie
a) RAM b)ROM c)EPROM d)GPROM e)EEPROM
-->d)GPROM
(15)Standardul IEEE 754 dubla precizie ocupa
a)32 biti b)16 biti c)256 biti d)128 biti e)64 biti
-->e)64 biti
(16)Avand sablonul de biti FFF00000H care reprezinta un IEEE 754 simpla precizie,
valoarea exponentului este
a)127 b)255 c)512 d)64 e)32
→b)255
(17)Magistrala de adrese este
a)unidirectionaloa b)bidirectionala c) multidirectionala d)omnidirectionala e) nu
exista
→a)unidirectionaloa
18)Daca in decodificatorul de memorie intre doar linia de adresa A31, stiind ca
procesoril are 32 de linii de adrese, in care modul se afla 7000 0000H?
a)5 b)4 c)3 d)2 e)1
(19)Valoarea 31 reprezentata in baza 2 este:
a)10111 b)11101 c)11100 d)11111 e)11110
-->d)11111
(20)Sablonul 101101(baza 2) reprezinta valoarea :
a)67 b)45 c)39 d)47 e)29
-->b)45
AC - Rezolvare subiecte examen anul trecut

1. Paradigma Von Neumann (pe scurt):


1) Un program este format din instructiuni care opereaza la un moment data supra
unui singur flux de date.
2) Instructiunile se executa una dupa alta din punct de vedere al furnizarii rezultatelor
si nu simultan.
3) O instructiune proceseaza maxim 2 operanzi.
4) Instructiunile se reprezinta prin coduri de lungime fiza sau variabila.
5) Codul instructiunii are 3 campuri principale care specifica:
• Operatia care se face
• Operandul/operanzii sau informatii despre locatia lor
• Informatii despre destinatia rezultatului.
6) O instructiune este urmata in executie de instructiunea aflata in locatia de memorie
imediat urmatoare. Exceptie fac instructiunile de salt, apelare subrutina si intoarcere
din subrutina (return).
7) Programele aflate in rulare sunt incarcate in memorie si au instructiunile in locatii
consecutive crescatoare sau rezultate din logica instructiunilor de salt, apelare
subrutina si intoarcere din subrutina.
2. Portul tipic de iesire:

Semnale:

Intrari:

- WR – Write = scriere date in buffer, activ pe 0, comanda de la processor.


- I0 … I7 – Intrari de date, 8
- CE sau CS – Chip Enable sau Chip Select – semnal de activare a portului,
activ pe 0, comanda de la processor.
- EXTRD – External Read, semnal de la periferic ca bufferul este in curs de
citire de catre acesta.
Iesiri:
- O0 … O7 – Iesiri de date catre periferic
- OBF – Semnal Output Buffer Full – semnaleaza perifericului ca bufferul
de iesire este plin

Desen:
3. Actiunile care au loc la pornirea calculatorului:
1) La pornire intra automat in executie programul BIOS aflat in EPROM.
2) Acesta identifica configuratia sistemului ,
3) Apoi testeaza componentele principale ale sistemului.
4) Bios incarca de pe HDD sistemul de operare in memorie
5) Si lanseaza in executie sistemul de operare.
6) Sistemul de operare preia controlul asupra tuturor actiunilor urmatoare.
4. Definitii:
1) bit = informaia elementara ireductibila ce surprinde una din doua posibilitati care
sunt contradictorii si complemntare.
2) Calculator = Un sistem format din processor, memorii, intefete, dispositive de
introducere a datelor, dispositive de extragere a datelor, memorii externe.
3) Compilator = un program ce traduce un program scris intr-un limbaj de programare
de nivel inalt in cod-masina necesar procesorului.
4) Interpretor = un program ce traduce o linie de program in cod-masina si o executa
imediat, apoi trece la urmatoarea linie de program s.a.m.d.
1. Să se reprezinte valoarea -53,125 conform standardului IEEE 754, simplă precizie (32 de
biți).

Rezolvare

Expresia reprezentării IEEE 754

S (1 bit) E (8 biți) M (23 biți)

Convertim numărul 53,125 în binar.

Normalizăm mantisa.

M reprezintă biți aflați după virgulă. Bitul 1 din fața virgulei fiind bitul ascuns.

M = 10101001

Exponentul reprezintă valoare puterii lui 2 după normalizare, plus bias-ul (în acest caz 127).

E = 5 + 127 = 132

Convertim valoarea 132 în binar.

Bitul de semn este 1 deoarece semnul este minus.

Rezultatul este:

S (1 bit) E (8 biți) M (23 biți)


1 1000 0100 1010 1001 0000 0000 0000 000
2. Să se calculeze valoarea zecimală pentru următorul șablon de biți exprimați conform
standardului IEEE 754:

1 1000 0011 1010 1100 0000 0000 0000 000

Rezolvare

Expresia reprezentării IEEE 754

S (1 bit) E (8 biți) M (23 biți)


1 1000 0011 1010 1100 0000 0000 0000 000

Transformăm exponentul din binar în zecimal

Înlocuim valorile în expresia reprezentării standardului IEEE 754


3. Să se scrie o secvență de cod, în limbaj de asamblare, care preia numere de la tastatură și
face suma acestora până la introducere valorii 0. Rezultatul se va afișa pe poziția a 7-a a
ecranului. Pentru preluare numerelor de la tastatură se va folosi întreruperii INT 08H.
Pentru afișarea numerelor se va folosi întreruperea INT 09H.

Rezolvare

MOV BL, 00H : se inițializează BL cu valoarea 0


LOOP:INT 08H ; se stochează valoarea introdusă de la
;tastatură în registrul AL
ADD BL, AL ; se adună valoarea din AL la valoarea din BL
CMP AL, 00H ; se compară conținutul registrului AL cu 0
JNZ LOOP ; dacă flag-ul zero nu este activ atunci se
;sare la LOOP
MOV AL, BL ; se mută rezultatul în registrul AL
MOV CL, 07H ; se încarcă conținutul lui CL cu valoarea 7
INT 09H ; se va afișa valoarea din registrul AL pe
;poziția 7 (care este stocată în registrul CL)

4. Folosind metoda Robertson, să se înmulțească numerele 2 și 6.

Rezolvare

A Q K M Operație
xxxx xxxx x xxxx Start
xxxx xxxx x xxxx IN
0000 + 0110 0 0010 ÎP
0000
0000 0110 0 0010 DD
0000 + 0011 0 0010 ÎP
0010
0010 0011 0 0010 DD
0001 + 0001 1 0010 ÎP
0010
0011 0001 1 0010 DD
0001 + 1000 1 0010 ÎP
0000
0001 1000 1 0010 DD
0000 + 1100 0 0010 ÎP
0000
0000 1100 0 0010
Arhitectura calculatoarelor

Laboratorul 1.

1.1. Reprezentări numerice în virgulă fixă.


Reprezentările numerice folosite în calculatoare au un caracter pozițional. Prin aceasta
înțelegem faptul că poziția unei cifre în reprezentarea formală a numărului semnifică ponderea
acelei cifre în raport cu o bază de numerație. Bazele de numerație folosite frecvent sunt:
 sistemul zecimal, cu baza de numerație 10;
 sistemul binar, cu baza de numerație 2, ușor de implementat în calculatoare dar dificil
de folosit de către om;
 sistemul hexazecimal, folosit pentru reprezentarea simbolică a numerelor binare într-o
formă acceptabilă pentru om.
Prin termenul de virgulă fixă înțelegem că unitatea aritmetică a unui calculator este proiectată
în așa fel încât să convertească coduri binare în numere și să opereze cu aceste numere conform
unei scheme fixe, în sensul că partea supraunitară și cea subunitară a numărului au un număr
fix de biți. În cursul evoluției calculatoarelor au fost folosite, practic, două convenții de
reprezentare în virgulă fixă:
 numere subunitare (cu partea întreagă nulă)
 numere supraunitare (cu partea fracționara nulă).
Calculatoarele actuale folosesc reprezentarea în virgulă fixă pentru numere supraunitare, fără
parte fracționară, adică pentru numere întregi, cu semn.
Notă: Faptul că virgula este fixă nu înseamnă că programele nu pot opera cu numere fracționare.
Aceasta înseamnă doar că modificarea convenției de plasare a virgulei trebuie asumată la
nivelul software, ceea ce înseamnă un efort suplimentar pentru programator.

1.2. Reprezentarea naturală a numerelor pozitive.


Considerând baza de numerație 2, reprezentarea naturală este una pozițională, în care valoarea
asociată unei cifre este dată de valoarea cifrei (0 sau 1) și de poziția sa în reprezentare. Astfel,
numărului scris sub forma:
𝑎𝑛−1 𝑎𝑛−2 … 𝑎1 𝑎0
Unde 𝑎𝑖 este o cifră binară, i se asociază valoarea:
𝑎𝑛−1 ∗ 2𝑛−1 + 𝑎𝑛−2 ∗ 2𝑛−2 + ⋯ + 𝑎1 ∗ 2 + 𝑎2
În funcție de valoarea lui n, avem următoarele lungimi de reprezentare tipice:

1
octet (byte) n=8
cuvânt (word) n=16
dublu cuvânt (long) n=32
cvadruplu cuvânt (quad, double long) n=64
Tabel 1.1 Denumirea reprezentărilor tipice în funcție de numărul biților

Denumirile de mai sus au un caracter istoric și sunt dependente de context. Astfel, la


începuturile calculatoarelor, prin byte se desemna cea mai mică unitate de adresare a memoriei,
cu valori, de la caz la caz, de 5, 6, 7, 8 sau 9 biți. În timp, pe măsura unificării practicilor,
termenii de byte și octet au devenit sinonimi. Termenul word poate fi folosit în contextul unui
limbaj de programare de nivel înalt, ca variabilă de doi octeți, sau în contextul implementării
hardware. Astfel, dacă unitatea de calcul suportă operanzi de 32 de biți atunci word se poate
folosi pentru a desemna un astfel de operand.
Această formă de reprezentare, corespunzând mulțimii numerelor naturale, este potrivită acelor
variabile care, prin natura lor, nu pot lua valori negative, de exemplu indecși în șiruri sau tabele.
Numărul maxim reprezentabil pe o lungime de n biți este 2𝑛 -1. Pe un octet, acest număr este
255.
Avantajul reprezentării este că unitatea aritmetică de calcul poate sesiza situația în care
rezultatul unei operații de scădere este negativ și poate semnala acest fapt ca pe o eroare.
La operația de adunare este posibil ca rezultatul să depășească capacitatea de reprezentare.
Pentru exemplificare adunăm numerele 6510 și 19210 , reprezentate pe octet.

6510 0100 0001 +


19210 , 1100 0000
1 0000 0001

Rezultatul, considerat pe 9 biți este reprezentarea binară a numărului 25710 . În fapt, rezultatul
constă doar din cei mai puțin semnificativi 8 biți, cu valoarea 00000001, iar bitul al nouălea, cu
valoarea 1, este memorat separat sub numele de transport sau carry. Semnificația bitului de
transport depinde de modul de reprezentare folosit. La reprezentarea naturală a numerelor
pozitive semnificația este de depășire a capacității de reprezentare, ceea ce este echivalent cu
un rezultat eronat pe componenta de 8 biți.
La operația de scădere avem în vedere necesitatea de a face un împrumut din rangul anterior,
atunci când este cazul. Dacă împrumutul trebuie făcut dinspre bitul de rang 2𝑛 spre rangul
2𝑛−1 atunci el se manifestă prin poziționarea fanionului carry și semnifică un rezultat negativ,
deci eronat.

1.3. Reprezentarea semn-mărime.


În majoritatea cazurilor se cere ca domeniul de apartenență al variabilelor să fie mulțimea
numerelor întregi. Una dintre reprezentările posibile este cea numită semn-mărime, care derivă
din reprezentarea comună în formă scrisă. Deoarece semnul poate lua două valori logice, i se

2
va asocia un bit din cei 8, 16,... ai reprezentării, iar ceilalți se vor folosi pentru a reprezenta
magnitudinea numărului (valoarea absolută).
Prin convenție, bitul cel mai semnificativ, 𝑎𝑛−1 , se folosește pentru a reprezenta semnul, cu
valoarea 0 pentru „+” și 1 pentru „-”. Rezultă o reprezentare simetrică, în care fiecare număr
pozitiv are o pereche negativă. Numărul maxim reprezentabil, ca valoare absolută, este jumătate
din cel reprezentabil ca număr natural. Pe octet acest număr este 127.
Avantajele reprezentării semn-mărime sunt:
 este o reprezentare naturală în raport cu percepția umană;
 la nivelul unității aritmetice facilitează realizarea operațiilor de înmulțire și împărțire.
Dezavantaje:
 există două coduri pentru numărul 0;
 necesită tratarea semnului printr-un proces de decizie complicat.

În continuare comentăm dezavantajele.


Existența a două coduri pentru numărul zero, respectiv „+0” și „-0” complică implementarea la
nivel de logică hardware a uneia dintre cele mai frecvente operații dintr-un calculator, anume
comparația cu zero. Practic, trebuie prevăzute două comparatoare și apoi o operație sau logic
(OR). De asemenea, este necesară încorporarea în unitatea aritmetică a unei scheme de unificare
a reprezentării lui 0, înainte de introducerea în calcul a oricărui operand.
Operațiile de adunare și scădere necesită tratarea semnelor și compararea magnitudinii
operanzilor, urmate de un proces de decizie. Aceste operații le facem, mental, fără să sesizăm,
atunci când adunăm/scădem numere în baza 10, pe baza experienței deprinse prin învățare și
exercițiu. Astfel:
(+3) + (+5)
este o operație imediată, în timp ce
(+3) + (-5) presupune:
 extragerea valorii absolute a operanzilor [3, 5]
 schimbarea ordinii operanzilor [3, 5 → 5, 3]
 operația de scădere [5 - 3 = 2]
 schimbarea semnului rezultatului [2 → -2]
Implementarea la nivel hardware a unui sumator/scăzător devine o operațiune extrem de
costisitoare, în termeni de complexitate a schemei, iar performanțele de viteză vor fi foarte
slabe.

1.4. Reprezentarea în complement de 1.


Obiectivul adoptării unui cod de reprezentare a numerelor întregi, altul decât semn-mărime,
este de a simplifica schema sumatorului, respectiv scăzătorului. Ideal, un astfel de dispozitiv,

3
va putea aduna/scădea două numere într-o singură fază, indiferent de semnele și magnitudinile
lor.
În codul complement de 1 numerele pozitive se reprezintă la fel ca în codul semn-mărime.
Numerele negative se reprezintă, prin convenție, inversând bit cu bit reprezentarea numărului
pozitiv.
Astfel, considerând o lungime de un octet,
numărul +19 se reprezintă 0001 0011 C1
numărul -19 se reprezintă 1110 1100 C1

Complementând fată de 1 un număr negativ se obține, așa cum era de așteptat, numărul pozitiv
care are aceeași magnitudine, fapt ce se poate verifica imediat pe exemplul de mai sus.
Față de reprezentarea semn-mărime se păstrează semnificația bitului de semn, dar la numere
negative ceilalți biți nu mai formează o reprezentare pozițională.
Se poate demonstra că adunarea a două numere în complement de 1 se poate face cu următorul
algoritm:
 se adună numerele bit cu bit, tratând toți biții nediferențiat, inclusiv cei de semn;
 se adună la rezultat bitul carry.

Exemplu 1: se calculează (+5) + (-3)


unde +5 = 0000 0101𝐶1 , +3 = 0000 0011𝐶1 şi -3 = 1111 1100𝐶1

0000 0101 +
1111 1100
1| 0000 0001 +
1
0000 0010

Exemplu 2: se calculează (-5) + (+3)


unde +5 = 0000 0101𝐶1 , -5 = 1111 1010𝐶1 şi +3 = 0000 0011𝐶1

1111 1010 +
0000 0011
0| 1111 1101 +
0
1111 1101

4
Rezultatul, 1111 1101𝐶1 corespunde numărului −210 , ceea ce se poate verifica imediat
deoarece prin complementare rezultă 0000 0010𝐶1 , adică +210 . Operația de scădere se
realizează prin complementarea scăzătorului, urmată de adunare.
Condiția de corectitudine a rezultatului este ca el să se încadreze în intervalul numerelor
reprezentabile în cod C1 (vezi exerciții). De exemplu, încercarea de a aduna 6410
(0100 0000𝐶1 ) cu 6510 (0100 0001𝐶1 ) duce la rezultatul 0 | 1000 0001𝐶1 , care se
interpretează ca număr negativ.

1.5. Reprezentarea în complement de 2.


În codul complement de 2 numerele pozitive se reprezintă la fel ca în codul semn-mărime,
respectiv la fel ca în codul complement de 1. Numerele negative se reprezintă, prin convenție,
adunând 1 la reprezentarea numărului în complement de 1.
Exemplificăm pentru numărul −1910 :
+1910 se reprezintă 0001 0011
−1910 se reprezintă 1110 1100𝐶1

respectiv 1110 1100 +


1
1110 1101𝐶2

Complementând încă o dată față de 2 obținem din nou numărul pozitiv:


acesta este −1910 1110 1101𝐶2
complementăm față de 1 0001 0010 +
adunăm 1 1
rezultă 0001 0011

Spre deosebire de codurile semn-mărime și complement de 1, există o singură reprezentare


pentru numărul 0 (verificați la exerciții).
Operația de adunare se face adunând numerele bit cu bit, tratând toți biții nediferențiat, inclusiv
cei de semn. Spre deosebire de adunarea în cod complement de 1, nu mai este necesar pasul
suplimentar, de corecție a rezultatului prin adunarea bitului carry. Operația de scădere se face
complementând al doilea operand și adunându-l la primul.
Rezumând, avem următoarele avantaje ale reprezentării în complement de doi, față de semn-
mărime și complement de unu:
 Există o singură reprezentare pentru zero;
 Schimbarea semnului se face prin complementare iar scăderea se face prin adunarea
descăzutului cu complementul scăzătorului;
 Adunarea se face într-un singur pas, fără a fi necesară o corecție;
 La adunare, bitul de semn este tratat la fel ca ceilalți biți.

5
Aceste caracteristici permit implementarea hardware unitară și simplă a unui sumator/scăzător
combinaţional, făcând din codul complement de doi codul acceptat de toți producătorii pentru
reprezentarea internă a numerelor întregi.

1.6. Sistemul hexazecimal


Este un sistem pozițional, la fel ca cel binar, care este folosit în matematică și domeniul
computațional pentru a reprezenta numerele în baza 16. Această formă este agreată, comparativ
cu sistemul binar, pentru că este mai prezentabilă pentru oameni. Sistemul conține o mulțime
de 15 simboluri, echivalentul cifrelor în baza 10. Această mulțime de element este compusă din
cifre, intervalul 0-9, și caracterele alfabetice de la A până la F. Fiecărui simbol în hexazecimal
îi corespunde un jumătate de byte, 4 biți. În Tabel 1.2 se găsesc cifrele hexazecimale și
echivalentul acestora în baza 2 respectiv baza 10.
Baza 16 Baza 2 Baza 10
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
A 1010 10
B 1011 11
C 1100 12
D 1101 13
E 1110 14
F 1111 15
Tabel 1.2 Echivalentul simbolurilor din baza 16 în bazele 2 și 10

Pentru schimbarea bazei de reprezentare a unui număr din baza 2 în hexazecimal este necesar
să grupăm biții numărului câte 4 începând cu cel mai puțin semnificativ bit, poziția cu puterea
0.
Exemplu 1: Reprezentarea numărului 2010 în hexazecimal. În acest exemplu vom folosi un byte
pentru reprezentarea numerelor.
Reprezentăm numărului 2010 în baza 2 0001 01002
Grupăm biții câte 4 grupul 1 – 0100
grupul 2 – 0001
Verificăm echivalentul grupurilor în Tabel 01002 – 416
1.2 00012 – 116

Rezultatul se obține prin concatenarea celor 1416


două simboluri

6
Reprezentarea hexazecimală se regăsește sub mai multe forme. De obicei, în matematică se
folosește 5𝐴16 . În programare, de exemplu limbajul C, valoarea este precedată de grupul de
simboluri 0x, precum în 0x5A. De asemenea, în limbajul de asamblare mai putem regăsi
valoarea succedată de caracter H, precum în 5AH, care reprezintă valoarea 5A16 .

1.7. Exerciții.

1. Să se reprezinte în semn-mărime, complement de 1 și complement de 2 următoarele valori:


29, -45, -90.
2. Care este reprezentarea în hexazecimal a valorii binare 1111002 ? Care este reprezentarea
valorii 10A16 în binar?
3. Cum se poate transforma o valoare din baza 10 în baza 16, fără a apela la reprezentarea
binară? Dar invers, din hexazecimal în zecimal? Pentru primul caz considerați valoare 3310 iar
pentru al doilea caz considerați valoare A116 .
4. Folosindu-vă de metodele folosite de la exercițiul 3, precizați care sunt reprezentările
zecimale ale următoarelor valori: 234 , 738 , 576 .
5. Să se reprezinte numărul 0 în cele trei moduri. Să se verifice relația 0+0=0, în toate variantele,
în cele trei reprezentări. Să se verifice relația x-x=0, în cele trei reprezentări.
6. Să se determine domeniul de reprezentabilitate (numărul maxim, pozitiv și cel minim,
negativ) în cele trei moduri de reprezentare. Se vor calcula valorile, în baza 10, pentru
dimensiuni de 8, 16 și 32 de biți.
7. Să se aleagă două numere, primul pozitiv și al doilea negativ, să se reprezinte în cele trei
moduri și să se facă operațiile de adunare și scădere între ele.

7
Arhitectura calculatoarelor

Laboratorul 2.

2.1. Reprezentări numerice în virgulă mobilă


Reprezentarea în virgulă mobilă se folosește pentru numere reale, care pot avea valori în limite
mult mai largi decât cele întregi. Ea este o reprezentare binară, adaptată pentru calculator, a așa
numitei reprezentări științifice. Ca exemplu, reprezentarea științifică a numărului -267.133 este
-2.67133E+2 corespunzând numărului −2.67133 ∗ 102 , iar a numărului 0.00017 este +1.7E-4
corespunzând numărului −1.7 ∗ 10−4 .
Reprezentarea cuprinde următoarele elemente:
 baza (a cărei valoare subînțeleasă este aici 10);
 mantisa (2.67133);
 semnul mantisei (minus);
 exponentul (2);
 semnul exponentului (plus).
După cum se poate remarca, am folosit convenția de separare a părții întregi a numărului de
partea sa fracționară prin caracterul „punct”. Mantisa este un număr fracționar și este
normalizată, în sensul că partea întreagă este nenulă și este mai mică decât baza, deci are o
singură cifră semnificativă. Dacă, în urma unui calcul, rezultă o mantisă nenormalizată, atunci
trebuie făcută normalizarea acesteia, prin deplasarea punctului zecimal la stânga sau la dreapta,
concomitent cu ajustarea corespunzătoare a exponentului. Exponentul este un număr întreg, cu
semn.

2.2. Reprezentarea în standardul IEEE 754


Reprezentarea internă, în calculatoare, a numerelor în virgulă mobilă este reglementată prin
standardul IEEE 754. Sunt precizate două lungimi de reprezentare: simplă precizie, pe 32 de
biți și dublă precizie, pe 64 de biți. Baza este implicit 2. Semnul mantisei, S, se reprezintă pe
un bit cu convenția 0 pentru plus, 1 pentru minus.

Mantisa (în limba engleză mantissa sau significand) este normalizată în baza doi, cu un bit în
partea întreagă și 23, respectiv 52 de biți în partea fracționară. Specific operației de normalizare
în baza 2 este faptul că partea întreagă are întotdeauna valoarea 1. Din acest motiv reprezentarea

1
acestui bit este redundantă. El nu se reprezintă și poartă numele de bit implicit sau bit ascuns.
Așadar, câmpul M conține doar partea fracționară a mantisei. Valoarea adevărată a mantisei
este 1.M. Putem considera că bitul este ascuns, sau acoperit, de bitul cel mai din dreapta al
câmpului C.
Valoarea exponentului și semnul său sunt exprimate prin câmpul C, numit caracteristică sau
exponent translatat (în limba engleză characteristic sau biased exponent). Dacă se alocă n biți
pentru caracteristică atunci C = E + (2𝑛−1 − 1). În simplă precizie n = 8. Rezultă că pentru C =
0, E = -127, pentru C = 127, E = 0, pentru C = 255, E = 128. În dublă precizie pentru C = 0, E
= -1023, pentru C = 1023, E = 0, iar pentru C = 2045, E = 1024.
Această reprezentare este similară reprezentărilor în cod complementar, în raport cu cele de tip
semn-mărime și are avantajul că caracteristicile a două numere pot fi comparate, adunate sau
scăzute printr-o singură operație. În concluzie, numărul corespunzător unei reprezentări în
simplă precizie este:

𝑥 = (−1)𝑠 ∗ 1. 𝑀 ∗ 2𝐶−127
Iar în dublă precizie:

𝑥 = (−1)𝑠 ∗ 1. 𝑀 ∗ 2𝐶−1023

2.3. Domeniile de reprezentare în standardul IEEE 754


2.3.1. Valori reprezentabile
Trasând axa reală și marcând pe ea zonele în care se pot reprezenta numere conform regulilor
expuse mai sus, putem observa câteva puncte de reper.

Numerele reprezentabile se află în două intervale simetrice, cuprinzând atât valori supraunitare
cât şi subunitare. Simetria este valabilă pentru orice reprezentare IEEE 754 și rezultă din modul
în care se reprezintă semnul, anume ca bit independent.
Prin depășire superioară înțelegem situația în care, în urma unui calcul, rezultatul are o valoare
a exponentului care depășește valoarea maximă, pozitivă, reprezentabilă pe numărul de biți
alocat prin standard.
Prin depășire inferioară înțelegem situația în care, în urma unui calcul, rezultatul are o valoare
a exponentului care depășește valoarea minimă, negativă, reprezentabilă pe numărul de biți
alocat prin standard.

2
2.3.2. Cazuri speciale

Numărul zero
Convenția de normalizare a mantisei pleacă de la prezumpția că mantisa are cel puțin o cifră
semnificativă. Acest lucru nu este adevărat pentru numărul zero. În standardul IEEE 754
numărul zero se reprezintă în forma 00…0. Aceasta este o derogare de la convenția prezentată
în paragraful anterior. Conform acestei convenții 00…0 ar fi reprezentat, după adăugarea bitului
implicit, numărul 2-127 , iar numărul zero ar fi fost nereprezentabil.
Datorită simetriei, există o reprezentare validă și pentru numărul -0, sub forma binară 100...000.
Operația de comparație între operanzii +0 și -0 este implementată astfel încât să dea un rezultat
de egalitate. Ca rezultat al unei operații, zero apare întotdeauna în forma pozitivă, cea negativă
poate apărea doar fiind introdusă din afară.

Alte cazuri speciale


Acestea apar în situații precum cele de mai jos:

Valorile +infinit și –infinit au reprezentări definite și distincte. Acesta capacitate a standardului


permite propagarea acestor valori prin operațiile de calcul, cu semnalarea corespunzătoare a
situațiilor de depășire superioară sau inferioară, dar fără a genera excepții (întreruperi software).
Acronimul NaN (Not a Number), se referă la un set de coduri binare care nu reprezintă numere
reale, deoarece apar în urma unor operații al căror rezultat este indefinit din punct de vedere
matematic. Standardul definește două categorii de NaN, anume:
 QNaN (Quiet Nan). Semantic, un QNaN semnifică o operație cu rezultat nedeterminat. Un
astfel de rezultat se va propaga liber prin majoritatea operațiilor aritmetice.
 SNaN (Signaling Nan). Un SNaN apare ca rezultat al unei operații invalide, cum ar fi, de
exemplu, radical dintr-o valoare negativă sau tangentă de π / 2 . Apariția unui SNaN are ca
efect generarea de către unitatea de calcul în virgulă mobilă a unei excepții (întrerupere
internă), prin care să se apeleze la o procedură software de tratare a situației, procedură ce
va fi definită de către utilizator.

3
În tabela următoare se prezintă sumarul codificărilor conform standardului IEEE754.

Valoarea unui număr real normalizat este dată de formula:

𝑥 = (−1)𝑠 ∗ 1. 𝑀 ∗ 2𝐶−𝑏
Unde prin b (bias) s-a notat offset-ul caracteristicii fată de exponent, cu valoarea de 127,
respectiv 1023 în simplă, respectiv în dublă precizie.
Se poate remarca faptul că toate codurile posibile care au valoarea 00…0 sau 11…1 în câmpul
C au interpretări speciale. Unele dintre acestea sunt rezervate pentru zero, infinit și NaN, iar

4
celelalte sunt disponibile pentru a reprezenta numere nenormalizate. Valoarea unui număr real
nenormalizat este dată de formula:

𝑥 = (−1)𝑠 ∗ 1. 𝑀 ∗ 21−𝑏

Aceste valori pot apărea și pot fi utilizate doar în calcule intermediare.

2.4. Caracterul aproximativ al reprezentării în virgulă mobilă


Așa cum s-a arătat, aceasta este o reprezentare dedicată pentru numerele reale. În sens
matematic, mulțimea numerelor reale este continuă și infinită. Dar mantisa are un număr finit
de biți. Aceasta înseamnă că doar un număr finit de puncte de pe axa numerelor reale sunt
reprezentabile.
Granularitatea reprezentării crește odată cu valoarea absolută a numerelor, în funcție de
valoarea exponentului. Între 1 și 2 se pot reprezenta 223 , sau 252 numere, în simplă precizie,
respectiv în dublă precizie, la fel ca și între 1/16 și 1/8 sau între 1024 și 2048. Acest aspect
poate fi considerat ca un avantaj, întrucât corespunde necesității de a surprinde corect
fenomenele fizice reale. Putem opera atât la nivel microscopic, cât și la nivel macroscopic, cu
păstrarea constantă a erorii relative a unei operații.
În mod normal rezultatul unei operații aritmetice între două numere, având fiecare o mantisă de
24 de biți, este un număr a cărui mantisă are mai mult de 24 de biți. Acest număr,
nereprezentabil, se aproximează la unul reprezentabil, fie prin trunchiere fie prin rotunjire.
Situația este normală și nu trebuie confundată cu depășirea exponentului, care duce la rezultate
nereprezentabile. Trunchierea se face prin ignorarea biților nereprezentabili. Rotunjirea se face
prin aproximare la una dintre cele două valori reprezentabile care încadrează rezultatul, fie către
plus infinit, fie către minus infinit.

2.5. Exerciții
1. Să se reprezinte conform standardului IEEE 754, simplă precizie, următoarele valori:
5
43.75; -123.375; 259 ; 192.
2. Să se calculeze care este valoare în baza 10 a următoarelor șabloane de biți, reprezentate
conform IEEE 754, simplă precizie:
0100 0001 1111 0000 0000 0000 0000 0000;
1100 0101 1000 0000 0000 0000 0000 0000;
43700000H;
C1E00000H.
3. Să se determine cel mai mic număr pozitiv și cel mai mare număr pozitiv ce pot fi
reprezentate. Să se reprezinte aceste numere în standard IEEE 754 în formă binară și în
formă hexazecimală.

5
[>
ARHITECTURA CALCULATOARELOR

CUPRINS

1. CONSIDERAȚII INTRODUCTIVE
1.1. Noţiuni fundamentale ..............macaonne nene ononeneonenoeeonenenoneoneenonnenaee
1.2. Acţiuni ce au loc la pornirea unui calculator .........mceeeee eee
2. DESPRE MEMORIE
3. DESPRE INTERFEȚE
4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ ..naemuneaeaeesce
4.1. Reprezentarea numerelor în calculator ............ce nenea neeneeeenee
4.1.1. Reprezentarea numerelor în virgulă fixă .......mceea nenea
4.1.1.1. Reprezentarea numerelor pozitive ......cc nana neaaareeeeeaeeee
4.1.1.2. Reprezentarea numerelorde orice semn ........... ceeace
4.1.1.2.1. Reprezentarea prin semn-mărime .........ecaeneeneneneeree
4.1.1.2.2. Reprezentarea prin complement de unu .................
4.1.1.2.3. Reprezentarea prin complement de doi ..............c.-
4.1.2. Reprezentarea numerelor în virgulă flotantă ...........m anaecene
4.1.2.1. Principii „cnneeeeneoneereeneneze ceeneneenenennenenenoataeeaenenneaanenenasaasee
4.1.2.2. Standardul IEEE 754 cca naennenneneene neon eeeneeeenaenacer ananas
4.2. Dispozitive de adunare şi scădere ............cccccee eee nana eraneneneeene
4.2.1. Principii „nana neeneoeoeennenonennaneencea eneneenenaneanananonaeneneananesasae nene
4.2.2. Sumatoare seriale .........ncoaeonneeeeen neo neeeenoneanenoeoane name ononenaneenanaee
4.2.2.1. Principii „mcccecnennonoe ne enoeeannenenenoneananeoaenanene once enneaaenaenennanaaae
4.2.2.2. Proiectarea unui sumator serial
folosind bistabile J-K ........cmc nonnacneeneanee nea eeceneenenoeeenaene
4.2.2.3. Proiectarea unui sumator serial
folosind bistabile D ........ccncneonaeanenene eneeeaneeoenaeeanenaease
4.2.2.4. Avantaje şi dezavantaje ale sumatoarelorseriale..........
4.2.3. Sumatoare paralele ...........meooeanoneenoneenonennanaeeeenoneasaaniseeacananaeee
4.2.3... Principii „nn smooeoneenooeeneeaeneencasenzonoeeezenenooneenonneneenana season
4.2.3.2. Sumatoare “ripple Carry” caen aneneentnee nenea eeaaennneeaaene
4.2.3.3. Sumatoare “carry lookahead” cena eee nn noereonenaaaee
4.2.3.4. Sumatoare “carry Skip”... nana nnnenaeenenenenaneemenananocannneeaeee
4.2.3.5. Sumatoare BCD .........cceeee neoane eeeeenneenne nn enoenenonoenaca oana eee
CUPRINS . ARHITECTURA CALCULATOARELOR

pag.
4.3, Dispozitive de înmulțire ..............maceoneconeceoneeeaeonneeoeeanaeeaneenananaae 63
4.3.1. Principii „nnncaenneeeoeanoeereeooeneracenenenanenaeaeooanonoaneaanenaaaanesaeneneaa aaa 63
4.3.2. Sinteza unui înmulţitor de numere în semn-mărime ............ 67?
4.3.3. Sinteza unui înmulţitor de numere în complementde doi,
după metoda Robertson .......ncnenano nnnnennennennannone nea neaaceneaneaeenaeae 79 1
4.3,4. Sinteza unui înmulţitor combinațional ..........mcnen nene eeeenoeeeeeaee 91 CONSIDERAȚII INTRODUCTIVE
4.4. Dispozitive de împărțire ..............couoaeneoceencenene ce aneeeaenaeeeneneenaaaeeae 93
4.4.1. Principii „mnecnnacieienenaceotaceneaeenanateseezatastssasceneaaetaanodeceesiesea 93 1.1. Noţiuni fundamentale
4.4.2. Sinteza unui înmulțitor de numere în semn-mărime,
operând cu refacerea resturilor ..........ÎN AaPNL MeA a,E5 96 Calculatorul este o maşină destinată procesării de date, înzestrată, în
4.4.3. Sinteza unui înmulţitor de numere în semn-mărime, acest sens, cu capabilități de a accepta,reţine, înțelege şi executa ordine
operând fără refacerea resturilor .......mcnnneoncecaeeeoeeenecaneeeozsace 105 exprimate de utilizator printr-o succesiune de instrucţii conformă scopului
5, DESPRE PROCESOR. UNITATEA DE REGISTRE ........smaoseosesasgatscacetces 119
urmărit şi care constituie ceea ce se cheamă program.
5.1. Introducere ............cnnan enmaenaneeneeenoneeneeeeanenneeneneanaecananeeanaaoeanea 119
5.2. Unitatea de registre a procesorului CSAC 2001.........LA, umaeasette 120
Prin instrucţii se specifică operaţiile solicitate şi, când este cazul, se
5.3. Unitatea de registre a procesorului MOTOROLA 68000 ........ 124
desemnează, într-un anumit mod dintre mai multe posibile, datele de tratat şi
127
destinaţia rezultatelor.
6. DESPRE PROCESOR. UNITATEA DE COMANDĂ ...cuce.naenaeocooeoaoeanacesasa 131
6.1. Preliminarii. Paradigma von Neumann ...........mcanaeeeeeeeeeeeeeee 131
Instrucţiile şi datele vizate de ele sunt construcții literal-cifrice
6.2. Elementele constitutive ai
aleunei unităţi de comandă von Neumann .........cccaeeee neaaeeaeeee 132 sugestive, detip lingvistic, deci cu o anumită sintaxă şi o anumită semantică.
6.3. Despre instrucţii. Studiu de caz
pesetul de instrucții al procesorului CSAC 2001 ................... 140 Pentru ca instrucţiile şi datele să poată fi acceptate, reţinute, înțelese și
6.3.1. Aspecte introductive ......naunaaenaoeaeaeeonaaeeceazaaaeatnaaee 140 tratate, forma lorliteral-cifrică se transpuneîntr-o formă fizică. Sub această
6.3.2. Codificarea instrucţiilor .........nnuenneeeneneoneeeneeaeenee aa eeeaneeeaenene e 141 formă, instrucţiile și datele se prezintă ca seturi de tensiuni electrice,
6.3.3. Conţinutul instrucțiilor .......ncasanseneeneoeeneoneeeanonenneeoeneeeneneaaeeere 147 constituite potrivit unor convenții de codificare.
6.4. Implementarea instrucțiilor ...........mcmoeceocenoneeeaeeneneeeeeeaeazeneneeaea 156
6.4.1]. Aspecte introductive .........mauua a noeaenoneoeaaeeenononoet tenteanaseeaaanaae 156 În unul dintre standardele consacrate, s-a instituit convenţia ca aceste
6.4.2. Implementarea cicluluifetch ......ncnnu annoeeneonneesesananeoeeneeenaeea 157 tensiuni să poată lua fie o valoare în intervalul 0-0.4 V, fie o valoare în
6.4.3. Implementarea instrucției “LD SP, aaaa”...............uemeeoooeeee 160 intervalul 2.4-5 V, în timp ceoricealte valori suntinterzise.
6.4.4. Implementarea instrucției “JP (aaaa)”...........mmecneeeneeeeeeee 162
6.4.5. Implementarea instrucției “ADD A, (BC)”..........cmcecaeoeeaenee 164 O astfel de tensiune, cu două valori posibile, se asociază cu ceea ce se
6.4.6. Implementarea instrucției “CALL (aaaa)”............ccanoeeeeee 166 cheamă bit.
6.4.7. Implementarea instrucției “RET” ...........mneoeneeeeaeenenecerocaee 169
6.4.8. Implementareainstrucției “OUT (aa), A”...nneeeeeeeeeee 171 Un bit este informația elementară, ireductibilă, caracterizată prin aceea
BIBLIOGRAFIA 174 că surprinde una din două posibilităţi care sunt, una în raport cu cealaltă,
contradictorii şi complementare.
CAP. 1. CONSIDERAŢII INTRODUCTIVE CAP. 1. CONSIDERAȚII INTRODUCTIVE

Corespunzător celor două posibilităţi, bitul ia valorile logice 0 sau i, Toate acestea au ca suport teoretic primar algebra booleeană şi
după caz. aritmetica sistemului de numerație binar.

O informație oarecare, ce surprinde una din m posibilități se poate Un calculator constă, din punct de vedere arhitectural, în:
reprezenta printr-un set de biţi de cardinalcel puţin egalcu logm. procesor;
memorie;
Un set de n biţi se cheamă cod pe n biţi. interfeţe;
dispozitive de introducere a datelor,
Codurile au, în contexte diferite, semnificații diferite. De exemplu,
dispozitive de extragere a datelor;
0100 0001 reprezintă, uneori, litera “A”, alteori, numărul 65 în baza 10, iar
memorii externe.
alteori, cu totul altceva.
Procesorul este partea unui calculator care are rolul de a implementa
Un set de 8 biţi se numește byte sauoctet.
sarcinile de comandă pe care le implică acceptarea, reținerea, înțelegerea şi
executarea ordinelor —adică: execuţia de programe- şi de a efectua
De obicei, codurile au lungimi care sunt puteri ale lui 2. Sunt uzuale
prelucrările propriu-zise. Blocurile funcționale ale unui procesorsunt:
codurile pe 8, 16, 32, 64, 128, 256 biţi.
e unitatea aritmetico-logică
Multiplii bitului sunt: e unitatea de comandă
1 Kbit = 21 biţi e unitatea deregistre
1 Mbit = 2%biţi
1 Gbit = 2%biţi Unitatea aritmetico-logică este partea unui procesor care, aşa cum
etc. numele său o sugerează, are în sarcină efectuarea operațiilor aritmetice şi
logice. Alături de unitatea aritmetico-logică, în structura procesoarelor
Multiplii byte-ului sunt: există, uneori, un bloc funcțional care implementează operaţii matematice
1 KByte = 210 Bytes mai complexe şi de mai bună rezoluție şi precizie, numit coprocesor
1 MByte = 2% Bytes matematic.
1 GByte = 2Bytes
etc. Unitatea de comandă este partea unui procesor care are în sarcină
generarea comenzilorinterne şi externe necesare funcționării calculatorului
Reprezentarea fizică a bitului printr-o tensiune ce poate lua doar două în ansamblul său.
valori se bazează pe fenomenele de comutație -saturare / blocare- specifice
tranzistoarelor de toate tipurile. Exploatând aceste fenomene, s-au conceput Unitatea de registre este partea unui procesor care reprezintă o memorie
şi realizat circuite în comutație -numite şi circuite digitale sau circuite de manevră, realizată pe acelaşi cip şi în aceeaşi tehnologie cu unitatea
numerice sau circuite logice-, ajunse actualmente la o diversitate extrem aritmetico-logică şi cu unitatea de comandă şi, în consecinţă, la fel de
de largă. rapidă ca şi acestea,la care accesele se fac mult mai simplu şi eficient decât
la memoria propriu-zisă.
Cu ajutorul circuitelor digitale, se pot memora informaţii şi se pot
efectua operații logice şi matematice elementare sau complexe, precum şi Memoria este partea unui calculator care are rolul de a păstra
operaţii de diverse alte naturi, reductibile la primele. informaţiile operative la un moment dat, adică: codurile programelor
aflate în rulare şi datele asupra cărora ele acționează, respectiv pe care le
produc.
%
CAP. 1. CONSIDERAȚII INTRODUCTIVE CAP. 1. CONSIDERAȚII INTRODUCTIVE

Interfeţele sunt entități structural-funcţionale care au rolul de a asigura


schimbul de informaţii între procesor sau memorie, pe de o parte, şi Se precizează că, până nu demult, noțiunea de calculator subsuma doar
dispozitivele de introducere a datelor, dispozitivele de extragere a datelor, procesorul, memoria şi interfețele, unii specialişti rămânând şi astăzi cu
respectiv memoriile externe, pe de altă parte. această accepțiune asupra termenului. Noi opiniem că o asemenea abordare
nu maieste în acord cu starea de fapt la care s-a ajuns în domeniu sub
Dispozitivele de introducere a datelor sunt entităţi structural- aspect constructiv, stare caracterizată prin aceea că cel puţin procesorul,
funcționale care au rolul de a intermedia transferul de informaţii de la memoria,interfețele şi memoriile externe sunt înglobate în aceeaşi carcasă,
utilizator către calculator. Dispozitivele de introducere a datelor cele în timp ce unele modele de calculatoare —ne referim la aşa-numitele /ap-
mai uzuale sunt tastatura, mzouse-ul, joy-stick-ul şi ecranulsenzitiv. top-uri sau note-book-uri- încorporează nu numai aceste entități, ci şi o
Dispozitivele de extragere a datelorsuntentități structural-funcționale tastatură, un mouse (eventual şi unjoy-stick) şi un display.
care au rolul de a intermedia transferul de informaţii de la calculator către
utilizator. Dispozitivele de extragere a datelor cele mai uzuale sunt Trebuie spus că maşina aceasta numită calculator, deşi deloc simplă, nu
monitorul sau display-ul, imprimanta şi ploterul. ar impresiona aşa cum o face, dacă nu ar funcționaîntr-un sistem mai
complex, numit sistem de calcul, care cuprinde,alături de entitățile referite
" Memoriile externe sunt entități structural-funcționale cu rolul de a mai sus —care, toate, au o natură materială, fizică- şi resurse de natură pur
păstra informaţiile neoperative la un moment dat (a se vedea, mai sus, ce logică, nepalpabile, reprezentând aşa-numitele programe de sistem.
se înţelege prin “informații operative”). Memoriile externe cele mai
uzuale sunt: unitatea de hard-disk, unitatea de dischete, unitatea de Menirea programelor de sistem este, pe de o parte, aceea de a face ca
compact-disk. exploatarea părţii fizice, precum şi a lor însele să decurgă cât maijudicios
şi cât mai comod, iar pe de altă parte aceea de a conferi sistemului
Dispozitivele de introducere a datelor, dispozitivele de extragere a capabilitățiîn plus față de cele prezentate de partea fizică.
datelor şi - memoriile externe sunt referite, generic, prin noţiunea de
echipamente periferice. Cele mai importante programe de sistem sunt:
editoarele de texte”;
Într-o reprezentare arhitecturală, un calculator poate fi schematizat translatoarele de limbaj ”;
astfel: | programele de bibliotecă);
editoarele de legături” >.
depanatoarele);
om om mi

utilitarele;
-omemnannm

Dispozitivede introducere ———— driver-ele de intrare-ieşire;


îi :..a datelor
sistemul de operare.

Editoarele de texte sunt programe cu ajutorul cărora se scriu textele


programelor, dar, posibil, şi texte oarecari. Prin acțiunea. editoarelor de
texte se generează aşa-numitele fişiere-sursă, care conțin textele
programelor şi a căror denumire este, în partea sa numită "extensie",
specifică limbajului de programare utilizat (de exemplu: "pas" —pentru
PASCAL,".c" -pentru C, ".epp" -pentru C++, etc.).
Fig. 1_1. Reprezentare arhitecturală a unui calculator.

10 1]
CAP. 1. CONSIDERAŢII INTRODUCTIVE CAP. 1. CONSIDERAȚII INTRODUCTIVE

Translatoarele de limbaj sunt programe cu ajutorul cărora se Toate aceste programe -marcate cu ” în enumerarea de mai sus- sunt
efectuează traducerea programelor utilizatorilor din limbajul de programare integrate în aşa-numitele medii de dezvoltare a aplicaţiilor, cum sunt:
în care au fost scrise, în limbajul maşinii numită calculator savu, altfel spus: TURBO PASCAL, BORLAND PASCAL, TURBO. C/C+, BORLAND
în cod-maşină. Există trei tipuri de translatoare de limbaj, denumite: C/C++, VISUAL STUDIO, etc., fără, însă, ca, în cadrul acestora, să-şi
e compilatoare; piardă identitatea.
e asambloare;
Utilitarele sunt programe cu ajutorul cărora se efectuează operații cu un
e interpretoare;
grad ridicat de uzualitate, cum sunt: creerea, copierea, mutarea fişierelor,
Compilatoarele şi asambloarele sunt programe care la un apel al lor etc.

traduc un întreg program sau modul de program şi, în final, generează


Driver-ele de intrare-ieşire sunt programe cu ajutorul cărora se
codul-maşină corespunzător, într-un fişier numit "fişier-obiect”, al cărui realizează introducerea, respectiv extragerea datelor, evident, într-o strânsă
nume are extensia. ".0bj". Diferența dintre compilatoare şi asambloare conlucrare cu interfețele de intrare-ieşire.
rezidă în faptul că primele traduc programe scrise în limbaje de nivel înalt,
iar cele din urmă —programe scrise în limbaj de asamblare. Sistemul de operare este un conglomerat de programe care au rolul
generic de a gestiona resursele sistemului, interpunându-se între acestea şi
Interpretoarele sunt programe care traduc o linie a unui program şi utilizator. Metaforic, se poate spune că un sistem de operare joacă rol de
introduc imediat în rulare codul-maşină rezultat, apoi trec la linia dirijor, orchestrând doleanțele utilizatorilor prin atribuirea de partituri
următoare ş.a.m.d., fără ca în final să ofere codul-maşină al întregului adecvate către diversele resurse ale calculatorului şi veghind la
program sau modul de program, cum am văzut că fac compilatoarele şi interpretarea armonizată a respectivelor partituri, astfel încât scopurile
asambloarele. Rezultă, aşadar, că în cazul folosirii interpretoarelor, de pentru care s-a apelat la calculatorsă devină atinse.
fiecare dată când se doreşte rularea unui program, se impune o nouă
traducere şi că, inevitabil, timpul necesar rulării programului este prelungit
cu timpul de traducere.
1.2. Acţiuni ce au loc la pornirea unui calculator
Programele de bibliotecă sunt programe care pun la dispoziţia
utilizatorilor o serie de facilități, ce se adaugă celor pe care le prezintă În general, la pornirea unui calculator, intră în rulare, în mod
automat, un program păstratîn partea nevolatilă (a se citi: care îşi păstrează
limbajele de programare înseşi.
conţinutul intact şi în lipsa tensiunii de alimentare) a memoriei
Editoarele de legături sunt programe care au rolul de a interconecta calculatorului, instanțiată, de obicei, în varianta cunoscută sub numele
codul-obiect al programului utilizatorului, respectiv codurile-obiect ale “EPROM”, program care are ca misiune identificarea configurației în
modulelor în care acesta consistă, cu coduri-obiect de programe de care se află calculatorul, efectuarea de teste de bună funcţionare a
bibliotecă, de driver-e de intrare-ieşire şi-sau de programe ţinând de principalelor entități componente, încărcarea în memorie, de pe hard-disk,
sistemul de operare, după caz, astfel încât ceea ce se obţine să reprezinte un a componentelor sistemului de operare şi lansarea acestuia în execuţie. O
program executabil; acesta face obiectul unui fişier numit "fişier- dată intrat în execuţie, sistemul de operare se va îngriji ca tot ce se va
executabil”, caracterizat prin aceea că poartă un nume cu extensia ".exe" întâmpla mai departe pe calculator să fie sub controlul sau, cel puţin, cu
sau, uneori, "com". consimțământul său. Astfel, el va asigura afişarea meniurilor cu
alternativele ce stau în fiecare moment când el este în execuţiela dispoziția
Depanatoarelesunt programe cu ajutorul cărora se pun la dispoziţia utilizatorului, preluarea şi introducerea în fluxul de procesare a
utilizatorilor o seamă de facilități de depanare a programelor: execuţie pas informaţiilor specificate de utilizator cu ajutorul tastaturii, mouse-ului, etc.,
cu pas, oprire la o anumită linie, vizualizarea/modificarea valorilor unor lansarea în execuţie, după caz, a altor programe de sistem -medii de
variabile, etc. programare, utilitare- sau a unor programeale utilizatorului, etc.
12 13
CAP. 1. CONSIDERAȚII. INTRODUCTIVE CAP. 1. CONSIDERAȚII INTRODUCTIVE

În cazul punctual al calculatoarelor exploatate sub sistemul de operare


WINDOWS 95, la pornire se întâmplă următoarele lucruri: se afişează conţinutul fişierului cu numele LOGO.SYS;
se încarcă fişierul cu numele DRVSPACE.BIN, dacă este prezent
4). SE INTRODUCE ÎN RULARE SISTEMUL DE PROGRAME fişierul cu numele DRVSPACE.ANI; |
“BIOS” ŞI, CU AJUTORUL LUI: se încarcăfişierul cu numele SYSTEM.DAT;
e seidentifică şi testează memoria, porturile, adaptorul video,tastatura,
se încarcă, dacă este cazul, un program detipul “driver”, cu facilități
unitatea de hard disk, unitatea de dischete, unitatea de CD-ROM;
de dublă “buffer "-izare;
e se identifică, introduc în configuraţie şi testează elementele tratabile
se încarcă şi lansează în execuţie, atunci când există, fişierul
prin tehnica “plug andplay”; CONFIG.SYS;
e se determină partiţia care conţine înregistrarea de startare principală, se încarcă şi lansează în execuţie, atunci când. există, fişierul
referită prin abrevierea MBR (Master Boot Record), căutând-o mai
AUTOEXEC.BAT;
întâi pe dischetă, dacă unitatea de dischete conține o dischetă, iar
apoi, dacă maieste cazul, pe hard-disk şi, eventual, pe CD-ROM; C). SE INTRODUCE ÎN RULARE PROGRAMUL “WIN.COM”ŞI, CU
e se încarcă înregistrarea MBR şi i se dă controlul;
AJUTORUL LUI:
B). SE INTRODUCE ÎN RULARE PROGRAMUL “I0.SYS” ŞI, CU e se încarcă diverse driver-e (VMM32. VXD sau un altul solicitat prin
AJUTORUL LUI: fişierul cu numele SYSTEMINI) şi se iniţializează;
e se preiau din fişierul numit MSDOS.SYS -vezi figura 1.2_|- şi se se încarcă componentele de bază ale sistemului de operare, care sunt:
efectivizează parametrii procesului de “boot "-are; -“KERNEL”, constituită din fişierele KERNEL32.DLL şi
Norlen Caimnmandei - we *
KERNEL.DLL, care asigură în principal: operațiile de intrare-ieşire
asupra fişierelor, încărcarea şi lansarea în execuţie a programelor,
gestiunea memoriei;
Pip aaobihibauinlal.[i
fii năcotDir=l: NHINDOAS
- “USER”, constituită din fişierele USER32.DLL şi USER.DLL, care
manevrează intrările şi ieşirile utilizator (legate, spre exemplu, de:
tastatură, mouse, canalele de comunicaţii, etc.) şi furnizează însăşi
interfața WINDOWS;
;
-“GDI”, constituită din fişierele GDI32.DLL şi GDIDLL, care
;The folloving lines are required for compatibility with other pregrams.
:Do not remove them (MSDOS._SY8 needs to be >1024 bytes).
gestionează tot ce este grafic (GDI: Graphical Device Interface),
[2.3.2 di ddpiăebioleltdeltadieobiaibidloizieid ddip.etiobaiviădoldisdieltiuibiedizidiaeieleleivio.eeineaie getii împreună cu interpretorul “Explorer” şi, dacă este cazul, cu suportul
aaa Diabpattezei dez. Did0.3.0
a ie : ii de rețea;
se execută toate programele din grupul “Start Up”;
se execută programele din registy, în directorul cu numele:
Hkey_LocalMachine/Software/Microsoft/Windows/CurrentVersion
/RunOnce.

"Fig, 1.2_1. Conţinutulfişierului MSDOS.SYS Uzual, în urma parcurgerii tuturor acestor paşi, se va ajunge ca ecranul
să arate aşa cum se ilustrează în figura 1.22, ca semn că sistemul de
o se afişează mesajul “Starting Windows 95” şi se aşteaptă timp de operare este plenar în lucru, aşteptând ca utilizatorul să-şi facă cunoscute
câteva secunde (uzual: două-trei) eventuala apăsare a unei taste opțiunile.
funcționale, menită să dicteze modul de derulare, în continuare, a
procesului de inițializare;
14 15
CAP. 1. CONSIDERAȚII INTRODUCTIVE eII ARHITECTURA CALCULATOARELOR

2
DESPRE MEMORIE

În acest capitol, ne propunem să vorbim despre memoria calculatoarelor


doar atât cât este necesar pentru înțelegerea a ceea ce ea reprezintă, a
principiilor organizării interne şi a modului în care ea funcționează la nivel
bloc. Şi toate acestea, pentru ca mai târziu, pe parcursul capitolului 6, să
existe premizele unei facile şi corecte înțelegeri a conlucrării dintre procesor
şi memorie, a funcţionalității ansamblului procesor-memorie şi, în definitiv, a
Fig. 1.22. Configuraţia ecranului după încărcarea sistemului WINDOWS 95. însăşi fenomenologiei computației.

Memoria unui calculator trebuie: percepută ca tabelă de locații


asimilabile, fiecare, câte unui registru pe 8 biţi şi având asociate, în mod
injectiv, informații de reperare cunoscute sub numele de adrese.

Deşi în calculatoarele actuale este obişnuit ca, în mod dinamic, după


necesităţi,memoriile să fie accesate fie la nivel de octet, fie la nivel de
dublu-octet, numit cuvânt, fiela nivel de cuadruplu-octet, numit cuvânt lung,
şi chiar la nivel mult mai extins, noi vom considera, simplificator, în
continuare, în acest capitol, cazul memoriilor capabile să opereze doar la
nivel de octet. În această ipoteză, o memorie se prezintă, la nivel bloc, ca
entitate prevăzută cu: |
*. 8 borne de intrare-ieşire -deci: bidirecţionale-, dedicate vehiculării
informaţiilor de scris în ea, respectiv citite din ea;
e 1 bornă de intrare de specificare a operației ce se execută la un moment:
scriere, respectiv citire;
e log» N borne de intrare de adresare, unde W reprezintă capacitatea
memoriei, adică: numărul de locaţii cu care memoria este înzestrată;
1 bornă de intrare de validare / invalidare;
e / bornă de ieşire de confirmare a efectuării complete a operației ce a
făcut obiectul unei sesiuni de lucru la un moment dat.

16 17
CAP2. DESPRE MEMORIE CAP2. DESPRE MEMORIE

Cele 8 borne de intrare-ieşire, numite borne de date, se notează, de D0-D7. Scrierea se încheie la un anumit interval de timp după momentul în
obicei, cu D0-D7. Bora de specificare a operaţiei ce se execută la un care care ultimul dintre semnalelele40-4X, MRO şi R/W ajungesă fie stabil.
moment dat, numită bornă de citire-scriere, se notează cu R/W (abreviere
de la “read / write”). Borna de validare / invalidare, numită şi bornă de Atât în cazul citirii, cât şi în cazul scrierii, în final, se activează semnalul
selecţie se notează cu MRQ (abreviere de la “memory request”), iar bornele
de adresare, numite şi borne de adrese -cu 40-AX, unde X= log> N -1. Borna ACK , ca semn, la citire, că datele citite au ajuns să fie disponibile la
bornele D0-D7, iar la scriere, că datele de scris sunt deja scrise. Semnalul
de confirmare se notează cu ACK (abreviere de la “acknowledge”). Cu
aceste notații —precizăm: regăsibile mai mult sau mai puţin ca atare în ACK este destinat procesorului (mai exact: unității de comandă a
documentaţii-, vom putea reprezenta o memorie aşa cum se arată în figura procesorului), care se informează cu ajutorul lui cât trebuie să țină activ
21. semnalul MRO. La trecerea semnalului ACK la “0”, procesorul înțelege
că memoria şi-a încheiat ciclul ce i-a fost cerut şi o dezleagă temporar
de sarcini, trecând semnalul carea ţinut-o activă —este vorba despre MRO -
D0-D7 "la
1

N Bytes În figura 2_2, se prezintă schema unei memorii organizată şi capabilă să


ZA 40-4X opereze la nivel de octet -şi numai la nivel de octet- şi având
capacitatea de 64 KBytes. S-a presupus că această memorie este realizată cu
Si Fig. 2_1. Reprezentarea bloc ajutorula 4 capsule de câte 16 KBytes fiecare, prevăzute —evident: pe lângă
—R/W MRO a unei memorii. bornele de alimentare- cu 14 borne de adrese, notate 40-413, 8 borne de
vila date, notate D0-D7, 1 bornă de citire-scriere, notată R/W şi 1 bornă de
selecţie, notată CS (abreviere de la “chip select”). Pentru cacele 4 capsule
Memoria efectuează o operaţie de citire sau de scriere, după caz, doar să poată constitui un bloc de memorie, a fost necesar ca ele să fie conectate
atunci când semnalul de la intrarea MRQ are 'valoarea logică “0”,altfel, ea bornă la bornă, excepţie de la această regulă făcând bornele CS, care se
îşi conservă, conţinutul şi îşi ţine bornele D0-D7 în starea de înaltă conectează separat, fiecare la câte o ieşire a circuisticii de decodificare. a
impedanță. € adreselor.

Se precizează că este firesc ca circuisticile de decodificare a adreselor să


Când semnalul de la intrarea MRO este «pp, dacă semnalul de la borna
aibă în sarcină doar decodificarea combinației logice a biților mai
R/W este “1”, atunci se execută o operaţie de citire dinlocaţia a cărei semnificativi din cadrul adresei, în timp ce ceilalţi biţi sunt tratați la nivelul
adresă este stabilită la bornele A0-AX. Informaţia citită este oferită la fiecărei capsule folosite în implementarea memoriei. La o memorie cu
bornele D)0-D7 după un interval de timp numit “fimp de acces”, măsurat capacitatea de N octeți, realizată cu capsule de capacitate M*k biţi
începând din momentul în care ultimul dintre semnalelele 40-4AX. MRO şi (în cazul considerat, 4=8), revin circuisticii de decodificare a adreselor,
R/W ajunge să fie stabil. dintre cei log> N biţi de adresă necesari în total, cei mai semnificativi
log» N - log» M. În cazul concret considerat, N=64-2!0=216 M=16-210 =211
Când semnalul de ia intrarea MRO este “0”, dacă semnalul de la borna şi, în consecință, Jog2 N - log2z M= 2; aşa se explică faptul că, în
R/YW este “0”, atunci se execută o operaţie de scriere în locaţia a cărei figura 22, circuistica de decodificare a adreselor se ocupă debiții 4/5 şi
adresă este stabilită la bornele 40-AX, a informaţiei prezente la bornele A14 ai adreselor.

18 19
CAP). DESPRE MEMORIE CAP2. DESPRE MEMORIE

MRO face ca toate ieşirile circuisticii de decodificare să fie ținute la

valoarea lor inactivă, adică: Ja”1”. Când semnalul MRQ ia valoarea “0”,
„nmeonmmmnmmman mmm amana

una dintre ieşirile circuisticii de decodificare va comuta la “0”. Prin


consecință, “una dintre cele patru capsule de memorie va ajunge să fie
selectată, procedând, după caz, la efectuarea unei operaţii de citire sau a
unei operaţii de scriere.
În parteainferioară a schemeidin figura 2_2, este prezentă circuistica de
generare a. semnalului ACK , concepută în ipoteza că atât la citire cât şi la
scriere, memoria răspunde cererii procesorului în cel mult 1 '4 perioade ale
semnalului detact, de la trecerea semnalului MRQ la “0”. Evident,dacă
durata acestor operaţii ar fi mai mare de2 4 perioade ale semnalului de tact,
A15=1, A14=1
atunci celor trei bistabile ale schemei ar trebui să li se adauge și altele,
Circuistică
de
conectate: după aceeaşi logică. În figura 23, esteredată cronograma
semnalelor MR9 şi ACK,pentru cazul considerat (cu.linie întreruptă, se
sugerează ce s-ar întâmpla dacă ACK ar fi luat de la primul bistabil,
respectiv de la al treilea bistabil).
ek] LJ LI LI LL

B [|
B2
"Fig. 2_2. Un exemplu de memorie.
Observatii:
ACK | i L_
Capsula 0 conţine locaţiile de memorie cu adresele hexazecimale 0000-3FFF.
Capsula ] conţine locaţiile de memorie cu adresele hexazecimale 4000-7FFF. Fig. 2_3. Cronograma semnalelor MRO şi ACK .
Capsula 2 conţine locaţiile de memorie cu adresele hexazecimale 8000-BEFF.
Capsula 3 conține locaţiile de memorie cu adresele hexazecimale C000-FFFF Se precizează că memoria oricărui calculator cuprinde o parte exploatată
atât în regiin de citire cât şi în regim de scriere, numită RAM —de la Random
Access Memory-, şi o parte exploatată doar în regim de citire, numită ROM
Circuistica de decodificare a adreselor va fi validă —adică: vaputea -de la Read Only Memory-. Este important de reținut că memoria RAM
efectua decodificarea combinației de valori logice prezente pe liniile 475 şi păstrează informaţiile memorate în ea intacte doar câtă vreme este
alimentată corespunzător, în timp ce memoria ROM îşi păstrează conţinutul
A14- doar în timp ce semnalul MRQ este “0”, valoarea “1” a semnalului
intact şi în lipsa tensiunii de alimentare. Se spune că memoria RAM este
volatilă şi că memoria ROM este nevolatilă.
20 21
CAP2. DESPRE MEMORIE CAP2. DESPRE MEMORIE
n

În cazul calculatoarelor universale, partea de memorie RAM este de aducerea tuturor celulelor sale la “1”. O memorie EPROM concretă poate fi
departe majoritară. La aceste calculatoare, memoria de tipul ROM conţine ştearsă şi reprogramată de un număr de ori foarte ridicat, reprezentând o
doar programul de boot-are, adică: un program introdus implicit în rulare la dată de catalog a circuitului respectiv. EPROM vine de la Erasable
pornire şi care are ca misiune identificarea configurației în care seaflă Programmable Read Only Memory.
calculatorul, efectuarea de teste de bună funcționare a principalelor entități
Memoria EEPROM se caracterizează prin aceea că este înscrisă de
componente, încărcarea, de pe hard-disk, a componentelorsistemului de
utilizator, printr-un proces specific, după ce a fost pregătită pentru aceasta
operare şi lansarea în execuţie a sistemului de operare. De asemenea,tot
prin ştergere electrică; atât ştergerea cât şi înscrierea memoriilor EEPROM
în memoria ROM se obişnuieşte să se păstreze şi driver-ele sau o parte a
se pot face chiar în contextul circuistic în care ele sunt exploatate. O
driver-elor de intrare ieşire. Celelalte programe —de sistem sau de aplicație-
memorie EEPROM concretă poate fi ştearsă şi reprogramată de un număr de
se păstrează pe suporturile externe de memorare. Deaici, ele se încarcă doar
ori foarte ridicat, reprezentând o dată de catalog a circuitului respectiv.
temporar în memoria RAM, în vederea rulării. Evident, când spunem că un
EEPROM vine de la Electrical Erasable Programmable Read Only
program se aflăîncărcat pentru rulare, înțelegem că partea lui de cod se află
Memory.
în memorie şi că oanumită cantitate din memorie este la dispoziţia sa pentru
implementarea diverselorvariabileşi pentru anumite manevre.
În cazul calculatoarelor dedicate unoraplicaţii -se au, aici, în vedere, în
primul rând, aşa-numitele “embedded systems ”-, memoria este preponderent
de tip ROM. În ea se găseşte programul aferent aplicaţiei, programe conexe
acestuia şi, eventual, un minim de programe de sistem, iar memoria RAM
serveşte doar implementării variabilelorşi operaţiilor de manevră.
Există mai multetipuri de memorie ROM:
memoria ROM propriu-zisă
memoria PROM
memoria EPROM
memoria EEPROM

Memoria ROM propriu-zisă se caracterizează prin aceea că este înscrisă


prin însuşi procesul său de fabricaţie, în mod imuabil.

Memoria PROM se caracterizează prin aceea că este înscrisă de


utilizator, printr-un proces specific, cu ajutorul unui dispozitiv dedicat, numit
“programator de PROM.-uri”sau “arzător de PROM-uri”. O dată înscrisă, o
asemenea memorie nu mai acceptă nici un fel de modificare a conţinutului
său, putând, în continuare, fi doar citită. PROM vine de la Programmable
Read Only Memory.
Memoria EPROM se caracterizează prin aceea că este înscrisă de
utilizator, printr-un proces specific, cu ajutorul unui dispozitiv dedicat, numit
“programator de EPROM-uri”, după ce a fost pregătită pentru aceasta prin
iradiere cu razeultraviolete. Iradiereaare ca efect ştergerea memoriei, adică:
22 23
CAP2. DESPRE MEMORIE ARHITECTURA CALCULATOARELOR

3
DESPRE INTERFEȚE

Aşa cum s-a precizat în capitolul 1, interfețele din structura unui


calculator au rolul de a asigura schimbul de informaţii între procesor sau
memorie, pe de o parte, şi dispozitivele de introducere a datelor,
dispozitivele de extragere a datelor, respectiv memoriile externe, pe de altă
parte.

O interfață constă în unul sau mai multe porturi şi, eventual, o circuistică
conexă, ce îndeplineşte funcţii de comandă locală.

Prin termenul de port se desemnează un registru, dimensionat, de regulă,


la 8 biţi, având rolul de a prelua date de la echipamentele periferice,
respectiv de a scoate date spre echipamentele periferice, precum şi de a
materializa diverse sarcini de comandă aferente transferului datelor.

Porturile dedicate preluării datelor de la echipamentele periferice se


numesc “porturi de intrare”.

Porturile dedicate scoaterii datelor spre echipamentele periferice se


numesc “porturi de ieşire” (evident, porturile folosite pentru materializarea
de sarcini de comandă sunt, inevitabil, fie de intrare, fie de ieşire).

În principiu, un port deintrare —vezifigura 3_1- este prevăzut cu:


e 8 borne de intrare dedicate preluării datelor de la echipamentul periferic,
numite “borne de intrare date”şi notate 10...17; |
e 1 bornă de intrare de comandă a scrierii în port a datelor prezente pe
liniile 10...17, numită “bornă de scriere” şi notată EXTWR (abreviere de
la “external write”);
e 8 borne de ieşire dedicate transmiterii datelor spre procesor, numite
“borne de ieşire date” şi notate 00...07;

24 25
CAP. 3. DESPRE INTERFEȚE CAP3. DESPRE INTERFEȚE

e 1 bomă deintrare de comandă disponibilizări către procesor a datelor


sub comanda semnalului RD. La încheierea operaţiei de citire, portul îşi va
înscrise în port, numită “bornă de citire” şi notată RD (abreviere de la
trece din nou semnalul 7ZBF la “0”, făcând, astfel, cunoscut, atât pentru
“read”);
procesor, cât şi pentru periferic, faptul că bufer-ul de intrare este gol. Pentru
e / bornă de ieşire de semnalarea faptului că în port există o dată înscrisă
a se evita pierderea de date prin suprascriere —suprascrierea înseamnă
şi încă necitită, numită “bornă de semnalare ”şi notată IBF (abreviere de
preluarea în port a unei noi date înainte ca precedenta să fi fost citită-,
la “input bufferfull”);
e 1 bornă de intrare de validare/invalidare, numită “bornă de selecție ” şi perifericul trebuie să nu activeze semnalul EXTWR decât în timp ce
notată CE sau CS (abrevieri de la “chip enable”, respectiv “chip Înaltul IBF este la “0”. Pe de altă parte, procesorul trebuie să nu citească
select”). portul decât în timp cesemnalul JBF este la”1”, pentru că, altfel, va accesa
fie o dată fără semnificație, stabilită în port cu ocazia punerii sub tensiune,
Îi 11
00 01 02 03 04 05 0607 îD fie o dată care a fost deja citită.
_jCE PORTDE INTRARE TIPIC IBFL_
În principiu, un port de ieşire —vezi figura 3_3- este prevăzut cu:
10_I1 12 13 4 _15 16 17 EXTWR
TI e 8 borne de intrare dedicate preluării datelor de la procesor, numite
“Borne de intrare date”şi notate 10...17;
Fig. 3_1. Bomele clasiceale unuiport de intrare.
+ / bornă de intrare de comandă a scrierii în port a datelorprezente pe
Introducerea datelor în calculator cu ajutorul unui port de intrare tipic liniile 10...17, numită “bornă de scriere” şi notată WR (abreviere de la
este ilustrată prin cronograma din figura 3_2. “write”),
e 8 borne de ieşire dedicate transmiterii datelor spre echipamentul
10-17. X DATE STABILE _X
periferic, numite “borne de ieșire date” şi notate 00...07;
e JI bornă de intrare de informare a portului asupra faptului că echipamentul
BELIN periferic a preluat datele înscrise în el, numită “bornă de citire” şi notată
EXTRD (abreviere de la “external read”);
RDCS Nos
e 1 bornă de ieşire de semnalare a faptului că în port există o datăînscrisă
Fig. 3_2. Cronograma semnalelorce intervin la introducerea datelor
şi încă necitită, numită “bornă de semnalare” şi notată OBE (abreviere
în calculator cu ajutorulunui port de intrare tipic.
dela “output bufferfull”);
Cronogramadin figura 3_2 vreasă spună următoarele lucruri: e 1 bornă de intrare de validare/invalidare, numită “bornă de selecție ”şi
notată CE sau CS (abrevieri de la “chip enable”, respectiv “chip
Când datele pe care perifericul trebuie să le introducă în calculator sunt select”).

stabile, are loc activarea de către periferic a semnalului EXTWR, prin [Eu ELA pei E pat
10 VU D B3 14 15 16 17 WR
trecerea sa la nivel “0”. Valoarea activă a semnalului EXTWR determină
preluarea în port a datei prezente la bornele sale 10-17. Buffer-ul portului
_ICE PORTDE IEŞIRE TIPIC E
ajungând astfel plin, semnalul fanion IBF trece la “1”. Prin testarea acestui 00_O1_02 03 04 05 06 07 EXTRD
semnal, procesorul află că o dată este pregătită pentru el în port şi execută o TITI
operaţie de citire cu referire la acesta, preluând data prin bornele 00-07, Fig. 3_3. Borneleclasice ale unui port de ieşire.

26 27
CAP.3. DESPRE INTERFEȚE CAP3. DESPRE INTERFEȚE

Extragerea datelor din calculator cu ajutorul unui port de ieşire tipic este Ca şi locaţiile de memorie, porturile au asociate adrese. Adresele de
ilustrată prin cronograma din figura 3_4. porturi pot fi parte a unui spațiu unic de adrese la nivelul calculatorului,
alături de adresele de locaţii de memorie sau pot constitui un spațiu de
Cronograma din figura 3_4 vrea să spună următoarele lucruri: adrese distinct, complementar spaţiului de adrese de locaţii de memorie. Din
Când procesorul vrea să scoată o dată spre periferic, execută o operație considerente didactice, vom merge pe varianta din urmă, adică: vom
presupune că se dispune de un spaţiu de adrese de locaţii de memorie, având
de scriere cu referire la port, ceea ce provoacă activarea semnalului WR, ca “martor” semnalul MRO, şi de un spațiu de adrese de porturi, având ca
prin trecerea sa la “0”. Valoarea activă a semnalului YPR determină “martor” un semnal numit IORQ.: O adresă de o anumită valoare se referă,
preluarea în port a datei prezente la bornele sale 10-77. Buffer-ul portului la un moment, la o locaţie de memorie sau la un port, după cum în acel
ajungândastfelplin, semnalul fanion OBF trece la“0”. Prin testareaacestui moment este activ semnalul MRO sau, dimpotrivă, semnalul JORQ. Dacă
semnal, perifericul află că o dată este pregătită pentru elîn port şi execută o nici unul dintre aceste semnale nu este activ, atunci codul prezent la bornele
operaţie de citire, preluând data prin bomele 00-07, sub comanda de adrese ale calculatorului —evident, la orice borne, un cod există,
inevitabil, întotdeauna, fie că este valid, fie că este invalid- nu reprezintă o
semnalului EXTRD . La încheierea operaţiei de citire, portul îşi va trece din adresă şi, în consecință, el nu trebuie să conducă nici la selecţia unei locații
nou semnalul OBF la “1”, făcând, astfel, cunoscut, atât pentru procesor, cât de memorie şi nici la selecţia unui port. Acest lucru se asigură decodificând
şi pentru periferic, faptul că buffer-ul de ieşire este gol. Pentru a se evita adresele condiționat de semnalele MRQ , respectiv IORQ.
pierderea de date prin suprascriere, procesorul trebuie să nu scrie în port
decât în timp ce semnalul OBF este la “1”. Pe de altă parte, perifericul Porturile se introduc în schemele calculatoarelor conectând între ele,
bornă la bornă, bornele de ieşire date ale porturilor de intrare, bornele de
trebuie să nu citească portul decât în timp ce semnalul OBF este la ”0”, intrare date ale porturilor de ieşire şi bornele de intrare-ieșire date ale
pentru că, altfel, va accesa fie o dată fără semnificaţie, stabilită în port cu memoriei. Conectarea nu trebuie înţeleasă obligatoriu directă, ci posibil prin
ocazia punerii sub tensiune,fie o dată care fost dejacitită. intermediul unorcircuite tampon.
10-17 W DATE STABILEX__

IRC TITI
era eauezaeBi | pe

EXTRD /
Fig. 3_4. Cronograma semnalelorce intervin la extragereadatelor
din calculatorcu ajutorul unui port deieşire tipic.

Se precizează că bornele de ieşire date ale porturilor de intrare sunt


ținute, în cea mai mare parte a timpului, în starea deînaltă impedanţă, fiind
activate doar în timp ce un astfel de port este citit efectiv de către procesor,
adică: în timp ce atât semnalul CE, cât şi semnalul RD sunt active. De
asemenea, se menţionează că semnalele RD şi WR au efecte doar în timp
portul este validat de semnalul CE, în timp ce semnalele EXTRD şi
EXTWR nu sunt legate de semnalul devalidare / invalidare.
28
CAP. 3. DESPRE INTERFEȚE ARHITECTURA CALCULATOARELOR

4
DESPRE PROCESOR. UNITATEA
ARITMETICO-LOGICA

4.1. Reprezenţarea numerelorîn calculator

4.1.1. Reprezentarea numerelor în virgulă fixă

4.1.1.1. Reprezentarea numerelor pozitive

Într-un sistem de numerație de bază r, un număr X se exprimă prin


notația:

k= CCaliCo Ce4-*C_(m1y0-ms OSc,<r (4.1.1.1-1)

şi are valoarea:
—m

K Cp Pl beat Ce ep torta om r= Yeri! (4.1.1.1-2)


in
Se spune că notația (1) este poziţională, deoarece fiecare cifră intervine
în valoarea numărului cu o pondere dată de poziţia sa (“r” pentru cifra
din poziţia “7”).

Întrucât în calculatoare se lucrează în baza 2, în continuare, vom


considera r=2.

Fie:

K' = Cn-1Cn-2 ... CC9- (4.1.1.1-3)

semnul “.” nu se mai scrie, fiind subînţeles

30 31
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

2 K' = cp 27+ cp 22 +.+c-21+ eg (4.1.1.1-4) Fie:

E" =,
K 10-32 ... C_(m-1)C-m (4.1.1.1-10)
K' = 2(e, 202 3 cp 203 ++ a)+ co
K (4.1.1.1-5) Kc 2hep-22 pact20 em 2 (4.1.1.1-11)
K] = 2epa +23 + ema 24 pur ca)ra (4.1.1.1-6) Prin înmulţiri succesive cu2 ale numărului inițial şi ale părţilor
K, fracţionare ale produselor, rezultă:

K"-2= ca tca:2+. Cm: 2-2 cp DD (4:1.1.1-12)

Ka-3 = 2(Cmi*2+ Ca2)ca-3


pr
(4.1.1.1-7 K 2 = C_3 + Ca . 2 + a... + C_(m- * 2-(m-3) + C_m . 2-2) (4. 1 . 1 . 1-13)

Ka
Ka > 20a)+ Ca (4.1.1.1-8)
K
——
Kmi
Ka = 2(0)+ ca (4.1.1.1-9) Ka i 2 = Cm) + C_m ” Pl
———
(4. ] . ] „1-14)

Km
Aşadar, cifrele binare ale unui număr pozitiv întreg se pot obține prin (4.1.1.1-15)
împărțiri succesive la 2 ale numărului în cauză, respectiv ale câturilor, până Km"2 = Com
se ajungela cât nul, ele -cifrele- fiind resturi în aceste împărțiri. Aşadar, cifrele binare ale unui număr pozitiv fracționar se pot obține
prin înmulţiri succesive cu 2 ale numărului în cauză, respectiv ale părților
Exemplu: fracţionare ale produselor, ele —ifrele- fiind părţile întregi ale produselor;
K'=42:
înmulţirile se efectuează până la determinarea unui număr satisfăcător de
0 cifre.
42:2=21 rest 0 = 42=2:21+0
21:2=10'rest 1 => 21=2:10+1 Exemple:
10:2= 5 restO => 10=2:5+0 1). K” = 0.8125 2). K” = 0.8124
5:2 =2 rest] = 5=2-2+1 | CJ C.]

2:2 = 1 restO = 2=2-1+0 4 A


1:2=0 restly = 1=2:0+1 -0.8125-2=1+0.625 "0.8124-2=1+0.6248 *
Cc
0.625-2=1+0.25 0.6248-2=1+0.2496
=> 4210=101010
0.25:2=0+0.5 0.2496:2=0+0.4992
J5210.0 0.4992-2=0-+0.9984
Se precizează că numărul cifrelor binare necesare reprezentării unui 0.9984-2=140.9968
număr “a” pozitiv întregeste: C4 C_3

=> 0.8125020.11012 => 0.812410=0.11001...2


n = mini|i > los» a
ieN 82

32 32
m
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ CAP. 4; DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ
n

Cifrele binare ale unui număr pozitiv format din parte întreagă şi parte Lungimea de coda reprezentării semn-mărime este dată de relaţia:
fracţionară se determină aplicând regulile de mai sus pentru cele două părți.
Exemplu: lc__sm = log» E
2M (4.1.1.2.1-6)
42.8125=42+0.8125=1010103+0.1101»=101010.11015 unde:
r: rezoluția cu care se iau în considerare numerele de reprezentat în
intervalul (CM; M).
4.1.1.2. Reprezentarea numerelor de orice semn
Observatie: i sl
4.1.1.2.1. Reprezentarea prin semn-mărime Atât M, câtşi r, sunt, în practică , puteri ale lui2.

Tabelele din figurile 4.1.1.2.11 şi 4.1.1.2.12 exemplifică


Fie A un număr oarecare şi a reprezentarea sa în semn-mărime. Atunci,
dacă: reprezentarea numerelorîn semn mărime în ipotezele:
e (-M; M)=(2;2)
Ă = tcpeo+ 00:01 --- Cm (4.1.1.2.1-1) e r=0.25
respectiv:
rezultă
(-M;, M=(8;8)
e r=]l
ă = Q9 O_4--1.(m+n) (4. j . ] 2, 1-2)
Numărul|-1.75 -1.50|-1.25 -1.00[-0.751-0.501-0.25| 0 [0.25 [0.50 [0.751 1.00| 1.25] 1.50] 1.75

semnul “.” nu se reprezintă în calculatorprin nimic, ge ]


el fiind considerat în mod implicit reprezentati
„Codul |1211/1110/1101 1100] 1011|1010!/1001|000010001 10010/0011|010010101|0110[0111
unde: semn- 1000 .
mărime i : :
e ap=40daca420
' i, daca A <0
4.1.1.2.1-3
(41.1.2.1-â)
Valoarea |[1.875|1.750|1.62511.500|1.3751.250|1.12510.000[0.123]0.250|0.375|0.50010.625|0.750/0.875
codului 1.000
semn-
mărime
a, =CuVi=l.m+n (4.1.1.2.1-4)
"Fig, 4.1.1.2.1_1. Reprezentarea în semn-mărime a numerelordin intervalul(-2; 2),
Reprezentarea numerelor în semn mărime se poate surprinde matematic considerate cu rezoluţia 0.25.
cu ajutorul următoarei expresii:
Numărul -7 -6 -5|-4|-3|-2|-l 0 1 2 3 4 5 6 7
„: de

1 e (0,1),
(0,1), dacadaca x > 0 reprezentat!
Codul |111111110[1101|1100/1011|1010|100110000/0001[0010[0011|0100|010110110[0111
semn- ! j 1000
sm(x) = 1 Pleq2) daca x <0 (4.1.1.2.1-5) mărime | |
Valoarea |1.875|t.75011.62511.50011.375|1.250|1.125|0.000|0.12540.25010.375|0.50010.62510.750/0.875
0 sau 1 daca x = 0 codului 1.000)
semn-
mărime
unde:
Fig. 4.1.1.2.1_2. Reprezentarea în semn-mărime a numerelor din intervalul (-8; 8),
Mare proprietatea că (-M: M) este intervalulîn care se presupune că se considerate cu rezoluția 1.
află numerele de reprezentat.

34 35
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Evident, valoarea unui număr x al cărui cod în semn-mărime este Aşadar, numerele pozitive se reprezintă în complement de unu exact
sm(%) vafi dată de expresiile: ca şi prin semn-mărime. Numerele negative au bitul de semn ca în cazul
reprezentării semn-mărime, iar ceilalți biţi —valori complementare în
M - sm(%), daca sm() e (041)
raport cu acest caz.
x =4-M -(sm() — 1), daca sm(x) e (1;2,) (4.1.1.2.1-7)
0, daca sm(x) e (0,17 - Lungimea de cod a reprezentării complement de unu este dată de
relația:
Avantajele reprezentării numerelor în semn mărime rezidă în faptul
că ea permite efectuarea fără nici o complicaţie a operaţiilor de înmulțire Ic_cl = log, ZM,
E (4.1.1.2.2-5)
şiîmpărțire. unde:
r: rezoluția cu care se iau în considerare numerele de reprezentat în
Dezavantajele reprezentării numerelor în semn mărime sunt: intervalul (-M: M).
e necesită tratarea specifică a biţilor de semn în cazul operaţiilor de
adunare şi scădere (la înmulţire şi împărțire nici nu se poatealtfel, în Reprezentărea numerelor în complement de unu se poate surprinde
nici una dintre reprezentări); matematic cu ajutorul următoarei expresii:
* dedică două coduri pentru numărul 0: 0.0...0, respectiv 1.0...0, ceea
ce face ca valorile reprezentabile cu ajutorul ei să fie cuprinse în își e (041), daca x > 0
intervalul (-M; M) şi nu [-M,; M), cum se întâmplă în cazul altor
reprezentări
cl(x) =42—2 -B e [1;2-2), dacax <0 (4.1.1.2.2-6)
0 sau 2 — 2”, daca x = 0
4.1.1.2.2. Reprezentarea prin complement de unu

Fie A un număr oarecare şi a reprezentarea sa în complement de unu. unde:


Atunci, dacă:
M are proprietatea că (-M; M) este intervalul în care se presupune
Ă = E C_p 09-01 Ca (4.1.1.2.2-1) că se află numerele de reprezentat,
şi:
rezultă: n este numărulcifrelor din dreapta bitului dedicat semnului:

ă= 09-01-04) (4.1.1.2.2-2) n=le_cl-l, (4.1.1.2.2-7)


semnul “.” nu se reprezintă în calculator prin nimic, Tabelele din figurile 4.1.1.2.21 şi 4.1.1.2.22 exemplifică
el fiind considerat în mod implicit reprezentarea numerelor în complement de unu,în ipotezele:
unde:
e (-M,M)=(2; 2)
E 0, daca A > 0 e r=0.25
1, daca A < 0
(4.1.1.2.2-3) respectiv:
* (MM)=(8;8)
Ca, daca A>0 e r=l
e a;„= [m daca A <0, unde, = NOT(e,,) Vi= | = um+n (4.1.1.2.2-4)
i

36 37
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Exemple:
Numărul |-1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 9.25 0.50 0.75 1.00 1-25 1.50 1.75
pă de
Fie:
reprezentat
Codul [1000 1001 1010 1011 1100 1101 1110 0000 0001 0010 0011 0100 0101 0110 0ili (-M; M)=>(-8; 8), r=l
complementi' Mr
-de: unu Rezultă:
Valoarea 11.000 1125 1250 1.375 17500 1.625 1.750 0.000 0.125 0.250 0.375 0.500 0.625 0.75010.875
1.875
codului lecl =4şin=3
ei)
de unu
Fie:
Fig. 4.1.1.2.2_1. Reprezentarea în complement de unua numerelordin intervalul (-2; 2),
„considerate cu rezoluţia 0.25. 1). a= -], b=-5

1 2 3 4 5 6 7 Se vaavea:
Numărul -7 [-61-5|4|-3|-2|-1|0
de
|. = -110= -0012= 1001, = 11104
reprezentat
Codu |1000[1001/101011011[1100|1101[111010000[000110010[0011:[0100|0101 [010 0111 | b= -510=-1012= 1101= 10102
- 1
complement "1110+
de unu CĂ
Valoarea |1.000/1.125|1.250|1.375|1.500[1.625|1.750|0.000[0.125|0.250|0.375|0.500[0.625/0.750
0.875 1010
codului 1.875] . - 1—1000+
complemen Ș I.
de unu ; 1
1001
Fig. 4.1.1.2.2_2. Reprezentareaîn complement de unu a numerelor din intervalul(-8; 8), cu:
considerate cu rezoluția |.
1001 = -619
Evident, valoarea unui număr x al cărui cod în complement de unu
este c1(%) va fi dată de expresiile: 2).a= 1,b=5

M ci), daca cl(s) e (041) Se va avea:


x =1-M-(2—2% —cl6;)), daca cl) e (1; 2-2) (4.1.1.2.2-8)
a = l0= 0012= 0001= 000la
0,daca cl(x) e (0;2-2”7 ! b = 510= 101»= 0101.„> 010la

Se demonstrează că în reprezentarea complement de unu, suma a 0001+


două numere se poate obține în doi paşi, astfel: . 0101
e în primul pas, se adună între ei complemenții de unu ai celor două 0—0110+
numere, într-un proces în care biții, de semn sunttratați exact ca 0
oricare alții 0110
» înal doilea pas, se adună la suma obținută în pasul unu,în poziţia cea cu:

mai puţin semnificativă, transportul rezultat în respectivul pas unu,


“transport ce, evident, poate fi fie 1, fie0. 9110a = 60

38 39
P
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ ti

Avantajele reprezentării numerelorîn complement de unu sunt: Aşadar, numerele pozitive se reprezintă în complement de doi exact
e permite efectuarea adunării prin introducereaîn calcule a biţilor de ca şi prin semn-mărime, respectiv ca şi în complement de unu.
semn în mod nedistinctiv față de restul biților Numerele negative au bitul de semn şi biții situați în dreapta celui mai
din dreapta bit nenul, precum şi pe acesta însuşi, la fel ca. în cazul
e permite înlocuirea scăderii prin adunarea la descăzut a
complementului de unu al scăzătorului reprezentării semn-mărime, iar ceilalți biţi —valori 'complementare în
raport cu acest caz.
Dezavantajele reprezentării numerelorîn complement de unu sunt: Lungimea de cod a reprezentării complement de doi este dată de
e dedică două coduri pentru numărul 0: 0.0...0, respectiv 1.1...1, ceea relația:
ce face ca valorile reprezentabile cu ajutorul ei să fie cuprinse în
intervalul (M: M) şi nu [-M; M), cum se întâmplă în cazul altor l0_2= loga (4.1.1.2.3-5)
reprezentări
face dificilă execuţia operaţiilor de înmulțire şi împărţire unde:
necesită parcurgerea a doi paşi pentru efectuarea operaţiei de - r: rezoluția cu care se iau în considerare numerele de reprezentat. în
adunare, ceea ce conduce la dublarea timpului de adunare, în raport intervalul [-M, M).
cu alte'reprezentări
Reprezentarea numerelor în complement de doi se poate surprinde
matematic cu ajutorul următoarei expresii:
4.1.1.2.3, Reprezentarea prin complement de doi x

el e(0;1),
), daca
daca x > 0
Fie A un număr oarecare şi a reprezentarea sa în complement de doi.
Atunci, dacă: c2(x) = bi e [1;2), daca x <9 (4.1.1.2.3-6)

0, daca x = 0
Ă = Eco
n
pe ec.m (4.1.1.2.3-1)

rezultă: unde:

M are proprietatea că [-M;: M) este intervalul în care se presupune


a= Go - 0_--1_(min (4.1.1.2.3-2) că se află numerele de reprezentat.
semnul “.” nu se reprezintă în calculator prin nimic,
el fiind considerat în mod implicit Evident, numărul cifrelor binare din dreapta bitului dedicat semnului
este n:
unde: n>le_c2-1, (4.1.1.2.3-7)

_ 0, daca 420
a | daca 40 (4.1.1.2.3-3) Tabelele din figurile 4.1.1.2.3_1 şi 4.1.1.2.32 exemplifică
reprezentarea numerelorîn complementde doi, în ipotezele:
e [-M; M)=/[-2; 2)
Cui» daca A 20 sau daca Vj >i=>c, =0 e r=0.25
e aj,=_ DN _ „Yi =1..m+na
Ca daca A<0si 3j >ic,, 40, undec,., = NOT(c,-;) respectiv:
(4.1.1.2.3-4) e /-M, M)=/-8; 8)
e 7=l

40 4]
P
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ BE CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Numărul |-2.00/-1.751-1.50-1.25-1.00]-0.751-0.50|-0.254 0 |0.2510.50|0.75|1.00[1.25|1.50| 1.75 Fie ac [-M; M) şi be [-M; M) două numere cu proprietatea că:
de
reprezentat a+b e [-M; M) (4.1.1.2.3-10)
Codul [10001100111010[101111100|1101[1110[111110000|0001|0010|00:1|0100[0101|0410J0111
complementi
de doi
şi A şi B imaginile lorprin c2.
Valoarea [1.000/1.125(1.25011.3'7541.5001.625/1.75041.87 popor .500|0.62510.'750%0.875i
“ codului . Atunci:
pomplenienţ
de doi [ata daca A+ B e [0;2)
Fig. 4.1.1.2.3_1. Reprezentarea în complement de doi a numerelor din intervalul [-2; 2), 4+ B-—2, daca 4+ Be [2,;4) (4.1.1.2.3-11)
considerate cu rezoluţia 0.25. are proprietatea că:
c2
Numărul -8 |-7|-6|-5|-4|-31-2|-1|10|1 2 3 4 516 |7 Cc (4.1.1.2.3-12)
de j
reprezentat unde:
Codul |1000[100111010|1011|1100[1101|1110[11111000010001|0010|0011|01001010110110|0111
complement! : - c=a+b (4.1.1.2.3-13)
de doi ,
Valoarea |1.000|1.12541.25011.3751.500[1.625|1.750/1.87500.00040.12510.25000.3'7540.50040.62510.75000.875| Într-adevăr:
codului
complement! i). dacă a 20 şi b 20 atunci, evident, a+b>0 şirezultă:
de doi

Fig. 4.1.1.2.3_2. Reprezentarea în complement de doi a numerelor din intervalul [-8; 8), c2(a) + c2(B) = a
„Pb. a+b
= c2(a+b) (4.1.1.2.3-14)
M M
considerate cu rezoluția 1.
ii). dacă a >0 şi b < 0, cua >|2|, atunci, evident, a+b>0 şi rezultă:
Evident, valoarea unui număr x al cărui cod în complement de doi
este c2(x) vafi dată de expresiile:
aa) e) 32-42 =2+ a-l a-l = c2(a+b)
= p (4.1.1.2.3-15)
M -c2(x), daca c2(x) e (0;1)
x = -M -(2 —c2(x)), daca c2(x) e [1;2) (4.1.1.2.3-8)
iii). dacă a 20 şi b < 0, cua < l2| , atunci, evident, a+b< 0 şi rezultă:
0, dacac2(x) = 0
cata) cab)=-2+2- hi 2- Pia o cata) (4.1.1.2.3-16)
Se demonstrează că în reprezentarea complement de doi, suma a
două numere se poate obține într-un singur pas, adunând între ei
complemenții de doi ai celor două numere,într-un procesîn care biții de iv). dacă a < 0 şi b 20, cu b>lal , atunci, evident, a+b>0 şi rezultă:
semn sunt trataţi exactca oricare alții.
| el p termenului "2"

Facem convenția de a nota cu litere minuscule numerele de 7 202


cata) + ap) 32 Fa îF, = B-la = c2(a + b) (4.1.1.2.3-17)
reprezentat şi cu litere majuscule imaginile lor în reprezentarea în
complement de doi:
v). dacă a < 0 şi b 20, cu la |>2, atunci, evident, a+b< 0 şi rezultă:
x e[-M:.M)2->X e[0;2) (4.1.1.2.3-9)
c2(a) + c2(b) = 2 — la 8
a _._lal-2
braa-Pl=cata+d) (4.1.1.2.3-18)
42 43
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

vi). dacă a < 0 şi b < 0, atunci, evident, a+b< 0 şi rezultă: Avantajele reprezentării numerelor în complement de doi sunt:
e permite efectuarea adunării prin introducerea în calcule a biţilor de
c2(a)+ c2(b) = 2 — Ela. pp,„His =c2(a+b) (4.1.1.2.3-19)
semn în mod nedistinctiv faţă de restul biților
e permite înlocuirea scăderii prin adunarea la descăzut a
_ complementului de doial scăzătorului
Observaţie: e numărul 0 are dedicat un singur cod: 0.0...0, ceea ce face ca valorile
Ignorarea termenilor de valoare “2” înseamnă, în practică,
reprezentabile cu ajutorulei să fie cuprinse în intervalul /-M;: M) şi
neglijarea transportului generat în procesul de adunare din rangul nu doar (-M; M), cum se întâmplă în cazul altor reprezentări
2% către rangul 2..
Dezavantajele reprezentării numerelor în complement de doi sunt:
Exemple: e face execuţia operațiilor de înmulțire şi împărțire maidificilă decâtîn
Fie: cazul reprezentării semn-mărime, dar, oricum, indiscutabil
LMM=[8; 8), r=l acceptabilă
Rezultă:
lec2 =4şin=3
4.1.2. Reprezentarea numerelor în virgulă fiotanță
Fie:
1). a= -1, b=-5 4.1.2.]. Principii
Se va avea:
a = -110= -0012= 1001= 111 1e2 Reprezentarea numerelor în virgulă fixă nu dă satisfacţie î n privința
b = -510= -1012= 1101= 101 leg rezoluţiei şi preciziei, atunci când numerele variază în intervale largi. În
astfel de cazuri, trebuie folosită aşa-numita reprezentare în virgulă
1111+ flotantă. În această reprezentare, un număr R se reprezintă printr-o
1011 mantisă, M, şi un exponent, E, stabilite astfel încât:

R=MBE,
cu: ,
10102 = -519 B fiind baza sistemului de reprezentare. În domeniul calculatoarelor,
baza se alege 2, sau, în orice caz, o putere lui 2. Se precizează că ea nu
2). a=1,b=5 trebuie să apară explicit la nivel de circuite, ci poate fi -şi aşa şi este-
Se va avea: subînţeleasă.
a = io = 001, = 0001, i 000 Le2
Mantisa este, în variantele clasice de reprezentare în virgulă flotantă,
"b = 510= 1012= 0101= 01013
un număr fracționar. Se obişnuieşte ca ea să se aducă cu modului mai
0001+ mare sau egal cu B”, prin ajustarea corespunzătoare a exponentului. O
9101 mantisă cu modulul mai mare sau egal cu B! se numeşte mantisă
00110 normalizată.
cu:
01 102 = 610 Mantisele clasice normalizate, reprezentate prin semn mărime, au
primul bit de dupăcel al semnului cu valoarea 1.
44 45
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Exemple:
Exponentul Valoarea Valoarea exponentului efectiv
translatat exponentului
0.1001... Bias=128
mantise semn-marime normalizate - translatat Bias=127
1.1010... III 255 +128 +127
11112110 254 +127 +126

0.0101... , , , 129 +2 +
1.0111 mantise semn-marime nenormalizate 10000001
10000000 128 + 0
Oli 127 0 i!
01111110 126 -l -2
Mantisele clasice normalizate, reprezentate prin complement de doi,
au: 00000001 1 -126 -127
00000000 ____| 0 -127 -128
a) dacă sunt pozitive: primul bit de după cel al semnului cu
valoarea 1
Fig, 4.1.2.1_1. Două exemple de translatare a exponenților.
b) dacă sunt negative: primul bit de după cel al semnului cu
valoarea O
Dacă atât mantisa, cât şi exponentul se reprezintă pe 8 biţi, cu biasul
Exemple: de +128, vom avea:
0.0000000 00000000 —>0
0.1001... ţi ] 'de2 alizat mantisa exponentul transiata
1.0110... maâniise compiemeni de hormalizale

0.0000001 00000000 —>27.2"'%=0


0.0101...
1.1011 mantise complement de 2 nenormalizate mantisa exponentul translată
Dacă exponentul s-ar reprezenta netranslatat, atunci s-ar avea:

Unităţile de calcul în virgulă flotantă oferă rezultatele cu mantisa 0.0000000 00000000 — 0


_———_—— pet

mantisa exponentul
normalizată.
0.0000001 00000000 —> 2.2% >> 0
Spre
mantisa exponentul
Exponentul este un număr întreg. Asupra lui. sunt instituite două
exigenţe. Pe de o parte, ar fi de dorit ca numărul zero să se reprezinte Aşadar, diferența între numărul care are toți biții nuli, în afară de
numai prin biţi nuli, pentru ca el să fie uşor detectabil, ca şi în bitul cel mai semnificativ al mantisei, şi numărul zero este 2”, când se
reprezentareaîn virgulă fixă. Pe de altă parte, se impune ca numerele lucrează cu exponentul netranslatat şi 2"'*, când se lucrează cu
nenule, dar foarte mici, să aibă acelaşi exponent ca numărul zero, pentru exponentul translatat.
ca erorile introduse prin rotunjiri şi trunchieri să nu fie mari. Ambele
cerințe pot fi satisfăcute dacă se adoptă ca exponentul să apară translatat
cu un deplasament (Bias) pozitiv, stabilit astfel încât exprimarea sa prin 4.1.2,2. Standardul IEEE 754
biţi exclusiv nuli să corespundă celei mai mici valori posibile (aceasta
Standardul IEEE 754 referitor la reprezentarea numerelorîn virgulă
este o valoare negativă, evident). Un. exponent translatat astfel poartă
flotantă a fost lansat de IEEE (Institute of Electronical and Electrical
numele de "caracteristică".
Engineers) în anul 1985. Acest standard are variante pe 16, 32, 64 şi 80
biţi. În continuare, va fi prezentată pe larg varianta pe 32 biţi. De
Spre exemplificare, se prezintă, în tabeluldin figura 4.1.2.1_1, cazul
asemenea, se vor indica şi elementele de bazăale variantei pe 64 biţi.
exponenților reprezentaţi pe 8 biţi, cu bias de 127, respectiv de 128.
46 47
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Baza de numerație a standardului IEEE 754 este 2. Ea nu apare e cel mai mic număr pozitiv reprezentabil este:
explicit la nivelul circuisticii, aceasta ținând cont de ea în mod implicit. Du a 31
Exponentuleste pe 8 biţi, translatat cu un deplasamentegal cu 127. [0[o00 ... 0 1[00 SI 0 0]
Mantisa este un întreg în intervalul [|; 2), reprezentat în semn- şi are valoarea:
mărime, cu partea întreagă nematerializată, ci subînțeleasă. Aşadar, în cramnpr 2 (2192 -(0.00..00)-2217 = 42-26 e +1.18-10%%
timp ce mantisavizibilă este +M, mantisa efectivă este m = +].M.
Reprezentarea IEEE 754 are câmpurile: e cel mai mare număr negativ reprezentabil este:
01 89 31 01 8 9 31
5] = iv — [i[o 0... 0 1[00 0_0]
unde: şi are valoarea:
e Seeste semnul mantisei cmMnnr = (-1)! -(1.00...00)-2117 = —2-1%6 z —1.18-10%
o E este exponentultranslatat, cu bias=127
o M este excesul de lal mantisei(partea vizibilă a mantisei) e numărul zero este:
Valoarea unui număr real x reprezentatîn standardul IEEE 754 este dată [oo g Ş oo G G7
de expresia: = —
x = 00-(0.M)-257, şi are valoarea:
unde:
e Mostar rezoluria 22 zero = (1
(Po.
-(1.00...00)-2
„D027 2
+22 390127 =2 40.59.10
40.59.10

* E e[0;254] | Standardul IEEE 754 rezervă unele combinaţii de biţi pentru semnalarea
Aşadar, se va avea: NI , unor situații deosebite. Astfel:
e cel mai mare număr pozitiv reprezentabil este: e combinaţia debiţi corespunzătoare lui E=255 şi M=0 arată că nu se
0 89 31 are de a face cu un număr,în cazuri cum sunt: O AJo cantitate negativa
[OI 1... TOȚI _. 11] 0
: ] i e combinaţia de biţi corespunzătoare lui E=255 şi M=0 arată
ȘI are valoarea: "supradepăşirea” ("overflow"), atunci când se ajunge la numere

= (199 -(1.11...11)-. 22532= Ha +(0-22)).21


emMnprAER 7 2| 434-10'% x e (a; —344-10%)J(+3.4-10%;-+)
| ,
e cel mai mic număr negativ reprezentabil este: e combinația de biți corespunzătoare lui E=0 şi M=z0 arată
"subdepăşirea” ("underflow"), atunci când se ajunge la numere
01 89 31 x e (-1.18-10"%;0)_](0;+1.18-10%)
Hi1 10[11 -. | 1 1]
şi are valoarea: În varianta pe 64 biţi, standardul IEEE 754 are câmpurile definite astfel:

cmmnur = (1)-(1.11...11)- 22%= (14 (1-22)).212 2 —3.4-10%8 01 1112 53


[S] E Ț M |

48
49
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ ARHITECTURA CALCULATOARELOR

Evident, în această variantă, exponentul se reprezintă pe 11 biţi, iar


mantisa pe 52 biţi, deplasamentul cu care se translatează exponentul fiind
egal cu 1023. Drept urmare, valoarea unui număr real x reprezentat în
standardul IEEE 754 pe 64 biţi este dată de expresia:
x = (CDS -(0.M)-2E42,
unde: 5
e Me[O;I),curezolulia 2% DESPRE PROCESOR. UNITATEA DE REGISTRE
* z£c[0;2047]
5,1. Introducere

Aşa cum s-a arătat în capitolul 1, unitatea de registre reprezintă o


memorie de manevră, realizată pe acelaşi cip şi în aceeaşi tehnologie cu
unitatea aritmetico-logică şi cu unitatea de comandă -şi, în consecință,la
fel de rapidă ca şi acestea-, la care accesele se fac mult mai simplu şi mai
eficient decât la memoria propriu-zisă.

Două linii arhitecturale s-au dezvoltat la nivelul unităţilor de registre. Una


dintre ele se caracterizează prin heterogenitate, iar cealaltă -prin
omogenitate. În cazul arhitecturilor heterogene,registrele se diferențiază sub
aspectul rolului pe care îl pot juca în funcționarea procesorului şi, în
consecință, al modului în care intervin sau pot interveni în diversele
instrucții-maşină. În cazul arhitecturilor omogene, registrele sunt echipotente
şi, în consecință, oricare dintre ele ar putea juca, la un moment dat, un
anumit rol în cadrul unei anumite instrucții. Trebuie spus că, în practică, nici
heterogenitatea şi nici omogenitatea nu au fost duse la cotele maximale. În
arhitecturile heterogene, este obişnuit să se întâlnească un număr de registre
echipotente între ele sau diferențiate doar în mică măsură, după cum este
obişnuit ca în arhitecturile omogene un număr de registre să dispună şi de
caracteristici în plus față de cele comune tuturor sau să se diferențieze uşor
unele de altele.

În scopuri ilustrative, se prezintă, în continuare, unitatea de registre a


unui procesor imaginar, cu date pe 8 biţi şi adrese pe 16 biţi —fie CSAC 2001
numele lui-, pe care îl vom considera, pe mai departe în cadrul cursului,
drept principal caz de studiu, unitatea de registre a procesorului
MOTOROLA 638000 şi unitatea de registre a procesorului INTEL8086.

50 119
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE L
CAP. 5, DESPRE PR
o CESOR. UNITATEA DE ERE REGI
GISTRE

5;2. Unitatea de registre a procesorului CSAC 2001

Fig. $.2_1. Blocurileîn gri: unitatea de registre


a procesorului didactic CSAC 2000.
Unitatea de registre a procesorului CSAC 2001 cuprinde registrele
reprezentate prin dreptunghiuri colorate în gri în figura 5.2_1, figură în care,
în sprijinul unei cât mai bune înțelegeri a lucrurilor, a fost redatîntregul
procesor. Respectivele registre sunt: A, B, C, F, SP, B], B2, B3, 0G şi IG.
Le vom prezenta rând pe rând.

Rezistrele A, B, şi C

Registrele A, B şi C au o lungime de 8 biţi şi sunt cvasiechipotente între


ele. Principala lor menire este aceea de a juca, în procesul de execuţie a
instrucţiilor, rolul de reşedinţă a cel puţin unui operand —eventual |
operandului unic-, respectiv de a prelua rezultate. Este uzual —de fapt, se &
poate vorbi despre o adevărată regulă în acest sens- ca rezultatele execuției a
instrucțiilor să fie oferite de procesoare prin registrul inițial sediu al
operandului unu —eventual unic-. Evident, respectivul operand, prin
suprascriere, se pierde. Atunci când valoarea sa este şi pe mai departe
necesară în rularea programului, ea trebuie salvată, fie în memorie, fie |
într-un registru. Evident, a doua alternativăar fi cea de preferat, întotdeauna, |
dar, uneori, ea nu poate fi aplicată, deoarece se întâmplă ca nici unul dintre |
registre să nu fie la momentul în cauză liber.

Registrele B şi C potfi folosite în câteva instrucţii şi concatenat —B în


poziția mai semnificativă şi C în poziția mai puţin semnificativă-, pentru
operare cu informaţii pe 16 biți. Procesorul CSAC 2001 dispune, după cum
se va vedea mai târziu, de posibilitatea referirii locaţiilor de memorie fie prin
adrese indicate în mod efectiv în cadrul instrucțiilor, fie prin adrese luate din |
registrul pereche BC. Evident, tocmai această din urmă facilitate de adresare zi
a memoriei este la originea concatenabilității celor două registre (ne a
reamintim: procesorul CSAC 2001 este o arhitectură de calcul pe 8.biţi, cu
adrese pe 16 biţi).

Rezistrul F

Registrul F' are rolul de a memora în bistabilele sale informații privind III
i oa.g
ş
s
rezultatele obținute în cadrul operaţiilor efectuate de unitatea aritmetico- ia N, Gal |
logică. La unele procescare —inclusiv la CSAC 2001- se au în vedere doar | oa
rezultatele operaţiilor care implică o prelucrare efectivă (adunare, scădere, | eee a force
120 | In
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

ŞI, SAU etc.), iar la altele inclusiv operaţiile de transfer simplu dintr-un loc în care se face scriere în stivă, respectiv pot viza registrele A şi F sau B şi C
în altul. Bistabilele registrului F poartă numele de fanioane. Ele sunt notate sau PCH 'şi PCL, în cazul în care se face citire din stivă. Tandemurile
cuZ, $, CVşiP. A-F, B-C, PCH-PCL vor fi referite prin abrevierile AF, respectiv BC,
respectiv PC.
Fanionul Z arată dacă rezultatul ultimei operații este nul sau nenul. Când
Exploatarea unei zone de memorie după principiul stivei presupune, mai
rezultatul este nul, atunci Z=/, când rezultatul este nenul, atunci Z=0.
întâi, încărcarea registrului SP cu adresa cea mai de sus a respectivei zone,
iar apoi respectarea cu stricteţe a următoarei proceduri:
Fanionul S arată dacă rezultatul ultimei operaţii este negativ sau
nenegativ (adică: pozitiv sau zero). Când rezultatul este negativ, atunci Z=/, scriere:
1. se decrementează SP cu o unitate
când rezultatul este nenegativ, atunci Z=0.
2. se scrie la adresa din SP octetul superior din perechea de doi octeți ce
trebuie depusă în stivă
Fanionul C arată dacă în timpul ultimei operaţii a apărut sau nu un
3. se decrementează SP cu o unitate
transport din rangul cel mai semnificativ, 2”, spre rangul inexistent, 2%. Când
4. se scrie la adresa din SP octetul inferior din perechea de doi octeți ce
a apărut transport, atunci C=1, când nu a apăruttransport, atunci C=0.
trebuie depusă în stivă
B. la citire:
Fanionul V arată dacă rezultatul ultimei operaţii este sau nu eronat ca
1. se citeşte de la adresa din SP octetul inferior din perechea de doi
urmare a fenomenului de depășire. Când rezultatul este eronat, atunci V=,
octeți ce trebuie descărcată din stivă
când rezultatul este neeronat, atunci V=0,
2. se incrementează SP cu o unitate
Fanionul P arată dacă rezultatul ultimei operații are un număr par sau un 3. se citeşte de la adresa din SP octetul superior din perechea de doi
octeți ce trebuie descărcată din stivă
număr impar de biţi cu valoarea “1”. Când rezultatul are un număr par de
4. se decrementează SP cu o unitate
biți cu valoarea “1”, atunci P=/, când rezultatul are un număr impar de biţi
cu valoarea “1”, atunci P=0. Se face precizarea că şi convenţia inversă de Registrele 8/7, B2 şi B3
poziționarea fanioanelor P poate fi întâlnită.
Registrele B7/, 82 şi B3 sunt registre auxiliare, de uz exclusiv intern. B/
Toate aceste fanioane se poziţionează implicit în procesul de execuţie a joacărol de tampon (“buffer ”) între magistrala pe care se vehiculează datele
instrucțiilor. Există, însă, şi instrucții speciale, a căror obiect este exclusiv şi unitatea aritmetico-logică. B2 joacă rol de tampon între unitatea
poziţionarea fanioanelor. aritmetico-logică şi magistrala pe care se vehiculează datele. B3 joacărol de
tampon între multiplexorul de adrese, AM, şi magistrala pe care se transmit
Repistrul SP în afară adresele. B2 şi B3 au ieşirile cu trei stări logice. Activarea
respectivelor ieşiri se facecu ajutorul semnalelor OB_B2, respectiv OB_B3,
Registrul SP (SP vine de la “stack pointer”) este constituit prin care înseamnă: “on the bus B2”, respectiv “on the bus B3”.
concatenarea registrelor SPH şi SPL (H şi L vin, respectiv, de la “high” şi
Registrele 0G şi 7JG
“low”). Prin urmare, SP este un registru pe 16 biţi. Rolul registrului SP este
acela de a face posibilă gestionarea unei părți din memoria RAM a Registrele 0G şi 1G sunt, de fapt, pseudoregistre, de uz exclusiv intern.
calculatorului după principiul stivei: Jast input-first output (prescurtat: Rolul lor este acela de a pune pe magistrala pe care se vehiculează datele,
LIFO); respectiva parte va fi numită simplu “stivă”. În procesorul CSAC atunci când sunt selectate cu semnalele OB_0G, respectiv 0OB_1G, un octet
2001, fiecare sesiune de lucru la nivelul stivei manevrează doi octeți. de valoare zero, respectiv un octet de valoare unu, necesari în
Aceştia pot proveni din registrele A şi F sau B şi C sau PCH şi PCL, în cazul implementarea unora dintre instrucții.
122 123
PT

CAF. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE CAP.5. DESPRE PROCESOR. UNITATEA DE REGISTRE

5.3. Unitaţea de registre a procesorului MOTOROLA 68000 Aşa cum se sugerează în figura 5.3_1, registrele D0-D7 —registre pe 32
biţi- pot fi folosite la nivel de octet, la nivel de dublu-octet, numit cuvânt şi
Unitatea de registre a procesorului MOTOROLA 68000 —aşa cum o vede la nivel de cuadruplu octet, numit cuvânt lung. Lucrul la nivel de octet
programatorul în limbaj maşină, fără registrele auxiliare de uz intern- este vizează în mod implicit biții 0-7, în timp ce biții 8-31 rămân neafectaţi, iar
reprezentată înfigura 5.3_1. lucrul la nivel de cuvântvizează în mod implicit biții 0-15, în timp ce biții
16-31 rămân neafectaţi. În limbaj de asamblare, se specifică dacă la un
cuvânt moment se doreşte lucrul pe octet, cuvânt sau cuvânt lung cu ajutorul unui
sufix adăugat mnemonicelor instrucțiilor. Sufixul este “B” în cazul lucrului
pe octet, ““W”în cazul lucrului pe cuvânt şi “L” în cazul lucrului pe cuvânt
7: 15:
lung, În toate cazurile, mnemonicul este separat de sufix printr-un

SINAI IRI
a Sa | Pa Pa Di a Pa Po Ps Ps Pa Pe Ps Pa
1 15 caracter “.”,
] 15
1 15 Exemple:
1 15 Să presupunem că registrul D3 conţine valoarea hexazecimală 11223344.
1 5 1. Dacă se doreşte anularea octetului format din biții 0-7, se execută
1 15 instrucția CLR.B D3, obținându-se în D3 valoarea hexazecimală
I 5.
11223300.
J 15
1 13 2. Dacă se doreşte anularea dublului octet format din biții 0-15, se
ti

1 15 execută instrucția CLR.W D3, obținându-se în D3 valoarea


1 15 hexazecimală 11220000.
1 13 3. Dacă se doreşte anularea întregului conţinut al registrului D3, se
LItă

1 15 execută instrucția CLR.L D3, obținându-se valoarea hexazecimală


I 15 000000.
1 15
7 15
3 7
Registrele 0-46 sunt denumite “registre de adrese”. Ele sunt
echipotente între ele în sensul cel mai strict al termenului. Principala menire
Fig. 5.3_1. Unitateade registre a procesorului MOTOROLA 68000. a registrelor 40-46 este aceea de a fi registre pointer-adică: sediu de
referințe -. De asemenea, ele se folosesc şi pe post de registre index şi de
Registrele D0-D7 sunt denumite “registre de date”. Ele sunt echipotente registre de manevră, pur şi simplu.
între ele în sensul cel mai strict al termenului. Principala menirea registrelor
D0-D7 este aceea de a juca, în procesul de execuţie a instrucțiilor, rolul de Aşa cum se sugerează în figura 5.3_1, registrele 40-46 —registre pe 32
reşedinţă a cel puţin unui operand —eventual a operandului unic-, respectiv biți- pot fi folosite la nivel de dublu-octet (cuvânt ) şi la nivel de cuadruplu
de a prelua rezultate; din acest punct de vedere, ele au exact acelaşi statut ca octet (cuvânt lung). Lucrul la nivel de cuvânt vizează în mod implicit biții 0-
registrele A, B, C ale procesorului CSAC 2001. De asemenea, registrele 15; biții 16-31 sunt, însă, şi ei afectaţi, în cazul operaţiilor de scriere într-un
D0-D7se folosesc ca registre de manevră şi ca registre index. Se precizează asemenea registru, prin extensia în zona lora valorii logice a bitului 15.
că un registru index este un registru implicat în procesul de calcul al
adreselor sub care se accesează memoria, prin adunarea conţinutului său cu Registrele A7 și 47" au toate caracteristicile registrelor 40-46, dar, în
o valoare ce joacă rol de referință, specificată efectiv sau aflată într-un alt plus, joacă în mod implicit rolui de pointeri de stivă, motiv pentru care şi
registru. sunt denumite “registre pointeri de stivă”. Procesorul MOTOROLA 63000
124 125

<a
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

are două moduri de funcționare: modul utilizator, respectiv modul Fanionul 7. indică dacă regimul de funcţionare este de trasare —în acest
supervizor. Modul utilizator este destinat rulării programelor de aplicaţie, iar caz 7=1- sau normal —în acest caz T=0-. Regimul de lucru trasare se
modul supervizor —rulării programelor de sistem. Fiecare categorie de caracterizează prin aceea că după rulareafiecărei instrucţii, se intră într-o
programe dispune, în sistemele cu MOTOROLA 68000, depropriastivă. Şi rutină specifică, ce afişează diverse informaţii, utile în procesul de depanare
asta, se asigură prin mecanisme hardware. De ce? Pentru asigurareacreşterii a programelor (de exemplu: conținuturile registrelor, etc.). Existența
performanţelor sistemelor în privința siguranței în funcționare. Când regimului de lucru trasare permite implementarea aşa-numitelor debuggere.
procesorul este în modul utilizator, unițatea de comandă a procesorului
MOTOROLA 68000 foloseşte pe post de pointer de stivă registrul 47. Când Fanionul $. indică dacă modul de lucru este supervizor —în acest caz S=1-
procesorul este în modul utilizator, unitatea de comandă a procesorului sau utilizator —în acest caz S=0-.
MOTOROLA 68000 foloseşte pe post de pointer de stivă registrul 47”.
Pentru programator, este transparentă comutarea de la 47 la 47" şi Fanioanele ]2, JI] şi 10 au semnificație doar ca ansamblu, prin valoarea
viceversa; referirile programatorului vor fi, întotdeauna, doar la 7, dar, pe care o codifică la un momentdat. Ele materializează așa-numita “mască
prin hardware, se va asigura ca ele să vizeze exemplarul din 47 care de întreruperi”. "Termenul “întrerupere” desemnează în domeniul
trebuie, după caz. calculatoarelor abilitatea procesoarelor de a se abate de la programulîn curs
de execuţie în vederea rulării unorrutine speciale —numite “rutine de tratare
:.. Registrul SR este denumit “registrude stare”(prescurtarea SR vine de la a întreruperilor” sau “handlere de întrerupere”, ca răspuns la semnale
“status register”). El cuprinde 10 fanioane. 5 dintre ele —implementate la externe sau interne, numite “cereri de întrerupere”. Întrucât este posibil ca
nivelul octetului inferior al registrului SR sunt accesibile programelor de în anumite momente să fie formulate mai multe cereri de întrerupere, se
aplicaţie, iar 5 sunt văzute exclusiv de programele de sistem. Din acest impune ca sistemele de calcul să dispună de mecanisme de tratare
motiv, octetul inferior al lui SR poartă numele de “octet utilizator”, iar prioritizată a acestor cereri. În cazul procesorului MOTOROLA 68000,
octetul superior —pe acela de “octet supervizor”. Figura 5.32 pune în cererile de întrerupere sunt ierarhizate pe7 nivele. Nivelul cel mai prioritar
evidenţă toate aceste fanioane. este nivelul7, iar cel mai puţin prioritar —nivelul 1. Fanioanele 12-10au rolul
de a determina luarea în considerare la un moment doar.a cererilor de
octet supervizor N octet utilizator întrerupere de pe nivelele cu număr de ordine mai mare decât numărul
15 8|7 0| codificat de ele (12 are ponderea 22, iar J0 —ponderea 20) şi ignorarea
7] [5] | jazz | | lxiylzivic celorlalte. |
trasare . ” transport
supervizor depăşire 5.4. Unitatea de registre a procesorului INZEL 8086
zero
mască de ——————— ——————— negativ Unitatea de registre a procesorului INTEL 8086 —aşa cum o vede
întrerupere L———————————— extensie
programatorul în limbaj maşină, fără registrele auxiliarede uz intern- este
reprezentată în figura 5.4_].
Fig. 5.3_2. Fanioaneleregistrului SR.
Registrul AX este din aceeaşi clasă cu registrele A, B, C ale procesorului
Fanioanele- C, V, Z şi N sunt echivalentele fanioanelor C, V, Z şi S ale CSAC 2001, respectiv D0-D7 ale procesorului MOTOROLA 68000.
procesorului CSAC 2001. Fanionul X are aceeaşi semnificaţie ca şi fanionul Principala menire a registrului AX este aceea de a juca, în procesul de
C, dar este afectat numai de către operaţiile aritmetice, în timp ce acesta din execuţie a instrucţiilor, rolul de reşedinţă a unuia dintre operanzi —eventual a
urmă se poziţionează şi cu alte ocazii. operandului unic-, respectiv de a prelua rezultate. De asemenea, registrul AX
se foloseşte ca registru de manevră.

126 127
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

Chiar dacă, aşa cum se poate remarca din descrierea de mai sus, fiecare
dintre registrele AX, BX, CĂ, DX îşi are particularitățile sale —unitatea de
registre a procesorului INTEL 8086 este, evident, una heterogenă-, există un
termen comun pentru referirea lor, şi anume: termenulde “registre de date”.

Registrul SP este registrul pointer de stivă al procesorului IN7ZEL 8086.

Registrul BP este un registru dedicat pointării programate —adică: nu


impusă hardware- spre locaţiile de memorie gestionate după principiulstivei.
Cu ajutorul lui BP, se pot accesa simplu locaţiile de stivăîn orice ordine
se doreşte şi nu neapărat în ordinea LIFO, implementată cu ajutorul
Fig. 5.4.1. Unitatea de registre a procesorului INTEL 8086.
registrului SP.
Aşa cum se sugerează în figura 5.4_1, registrul AX —registru pe 16 biţi-
Registrul $7 este un registru index conceput să fie utilizat în calculul
poate fi folosit la nivel de octet şi la nivel de dublu-octet. Lucrul la nivel de
adresei locației de memorie de unde se face la un moment un transfer.
octet vizează fie biții 0-7, fie biții 8-15. Primii definesc registrul parte a lui
AĂ, numit AL,iar ultimii -registrul parte a lui AX, numit AH.
Registrul DI]este un registru index conceput să fie utilizat în calculul
adresei locației de memorie spre care se face la un momentun transfer.
Registrul este un registru dedicat implementării unor “moduri de
adresare” a memoriei, şi anume: adresarea bazată şi adresarea indirectă Registrele SP, BP, SI şi DI sunt desemnate, împreună, prin termenul
(vezi capitolul următor). Şi BX este pe 16 biţi şi poate fi folosit la nivel de “registre pointer şi index”.
octetşi la nivel de dublu-octet. Lucrul la nivel de octet vizează fie biții 0-7,
fie biții 8-15. Primii definesc registrul parte a lui BX, numit BL, iar ultimii - Registrul F este un registru de fanioane numit “registru al cuvântului de
registrul parte a lui BX, numit BH.
stare a programului”; se obişnuieşte ca el să fie referit prin prescurtarea
PSW, de la program status word. Structura registrului este pusă în evidenţă
Registrul CX este un registru-numărător, conceput să fie utilizat în de figura 5.4_2.
materializarea unor operații de rotire, deplasare, ciclare şi transfer de şiruri.
Şi CX este pe 16 biţi şi poate fi folosit la nivel de octet şi la nivel de dublu- octet supervizor octet utilizator N
octet. Lucrul la nivel de octet vizează fie biții 0-7, fie biții 8-15. Primii 15 817 0
definesc registrul parte a lui CX, numit CL, iar ultimii -registrul parte a lui | | | IOFDHIZIrFISFIZzEI jar] _|Pr_|CF
-CĂ, numit CH. depăşire transport
——— paritate
direcție ———— ————————— transport
Registrul este un registru conceput cu predilecție pentru fi utilizat în
mască de ——————— auxiliar
materializarea operațiilor de înmulțire, împărțire şi lucru cu porturile. Şi DX întrerupere În ZETO
este pe 16 biţi şi poatefi folosit la nivel de octet şi la nivel de dublu-octet. trasare semn
Lucrul la nivel de octet vizeazăfie biții 0-7, fie biții 8-15. Primii definesc
registrul parte a lui DX numit DL, iar ultimii -registrul parte a lui DĂ,
Fig. 5.4_2. Fanioanele registrului F.
numit DH.

122 por
ARHITECTURA CALCULATOARELOR
CAP. $. DESPRE PROCESOR. UNITATEA DE REGISTRE

Fanioanele CF, ZF, SE. OE._PEau aceleaşi semnificaţii ca şi fanioanele


C, Z, $, V. P ale procesorului CSAC 2001, respectiv, primele patru dintre
ele, caşi fanioanele C, Z, N, ale procesorului MOTOROLA 680900.

Fanionul AF este numit “fanion de transport auxiliar ”şi are rolul de a 6


indica, în urma rulării unora dintre operațiile aritmetice, dacă apare —AC= l- DESPRE PROCESOR. UNITATEA DE COMANDĂ
sau nu —4C= 0- transport din rangul 3 spre rangul 4, adică: dela tetrada 1
spre tetrada 2. Această informaţie este utilă atunci când seoperează cu
numere reprezentate în codul BCD (BCD vine de la “binary coded
decimal”, adică: zecimal codificat binar). 6.1. Preliminarii. Paradisma von Neumann

Fanionul 7F are aceeaşi semnificaţie ca şi fanionul 7 al -procesorului După cum s-a văzut, nucleul unui calculatoreste constituit din procesor,
MOTOROLA 68000. memorie şi interfeţe, la nivelul procesorului distingându-se: unitatea
aritmetico-logică, unitatea de registre şi unitatea de comandă.
Fanionul ZF este numit “fanion de intreruper?”şi are rolul de valida /
invalida întreruperile, adică: de a activa / dezactiva sensibilitatea Unitatea aritmetico-logică şi algoritmii pe baza cărora ea funcționează
procesorului la cererile de întrerupere. s-au studiat în detaliu în capitolul 4.

Fanionul DF are rolul de a indica direcția în care evoluează adresele Unitatea de registre, cu locul şi rolul elementelor sale în ansamblul
în cazul operațiilor cu şiruri: DF=1 arătă că adresele se incrementează, iar procesorului, a făcut obiectul capitolului 5.
DF= 0 —că adresele se decrementează.
Despre unitatea de comandă s-a spus în prima parte a lucrării că ea
Se menţioneazăcă procesorul IN7EL 8086 mai dispune de 4 registre reprezintă partea unui procesor care are în sarcină generarea comenzilor
-CS, DS, S$, ES-, numite “registre segment”. Referitor la aceste registre, ne interne şi externe necesare funcționării calculatorului în ansamblul său.
limităm, în context, la a spune doar că ele aparţin unui bloc specialal unităţii
de comandă 'a procesorului INTEL 8086, numit “unitate de gestiune a Există mai multetipuri de unităţi de comandă; în cadrul prezentei lucrări,
memorie!”. DOO
se vor avea în vedere doar unităţile de comandă numite, ca şi procesoarele în
care sunt integrate, von Neumann. Acestea se caracterizează prin aceea că
respectă următoarea paradigmă, numită “paradigma von Neumann”:

1). Un program constă în instrucţii care operează la un moment asupra unui


singur flux de date.
2). Instrucţiile se execută una după alta şi nu mai multe simultan, sub
aspectul producerii de rezultate; la nivel micro, însă, este posibil ca
operaţii elementare aparţinând de două sau mai multe instrucții să fie
executate suprapus, fără alterarea ordinii de generare de rezultate macro,
față de cazul în care instrucţiile s-ar executa pur secvențiat.
3). O instrucție poate implica introducerea în procesare a maximum doi
operanzi.
130 13:

N
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

4). Instrucţiile se reprezintă prin coduri care suntfie de lungime fixă, fie de
Figura 6.2_1 surprinde o unitate de comandă von Neumann, ca parte a
lungime variabilă.
unui procesor ipotetic, definit de pe poziţii didactice —procesorul CSAC
5). Un cod deinstrucţie cuprinde câmpuri prin care se specifică:
e operaţia ceface obiectul instrucției 2001, referit şi în capitolul precedent.
e operandul / operanzii sau informaţii despre locul în care se află
Se remarcă prezenţa în figura 6.2_1 a tuturor celor 6 blocuri din
operandul / operanzii
e informații despre locul unde trebuie depus rezultatul componența unității de comandă standard von Neumann. Să ne oprim puțin,
6). O instrucţie este urmată în execuţie, în mod implicit, de instrucţia situată în continuare, asupra fiecăruia dintreele.
în memorie imediat după ea. În cazul instrucțiilor de salt, de apel de
subrutină şi de revenire din subrutină, instrucţia următoare se determină Registrul PC
de către fiecare dintre ele în mod specific, prin algoritmul înglobat special
în cadrul lor, în acest sens.
Registrul PC -numărătorul programului sau pointerul de instrucție- are
7). Programele aflate în rulare sunt “încărcate”, adică: au instrucţiile
amplasate în memorie, în acord cu logica programului, în locaţii de rolul de a indica adresa următoarei instrucţii sau, când instrucţiile se citesc
adrese consecutiv crescătoare sau rezultate din logica internă a fragmentar, adresa următorului fragment al instrucției în curs de rulare.
instrucţiilor de salt, de apel de subrutină şi de revenire din subrutină.
Având în vedere paradigma von Neumann, registrul PC funcționează, de
regulă, în regim de numărare —mai exact: incrementare- şi doar în cazul
6.2. Elementele constitutive ale unităţilor de comandă instrucţiilor de salt, apel de subrutină şi revenire din subrutină, în regim de
von Neumann încărcare paralelă; aceasta, în ideea de a prelua ceea ce se generează în
cadrul acestor instrucţii, pe post de adresăa instrucției următoare.
O unitate de comandă von Neumann constă, în esenţă, din următoarele
blocuri:
e un registru de adresare a instrucțiilor, numit pointer de instrucție, IP Registrul JR
(Instruction Pointer) sau numărător al programului, PC (Program
Counter); Registrul IR —registrul instrucției- joacă rolul de sediu al codului
e un registru sediu al cuvântului instrucție ce instanțiază instrucția aflată în operaţiei care face obiectul instrucției. Este obişnuit ca registrul IR să aibă
rulare, numit registrul instrucției, IR (Instruction Register); extensii pentru păstrarea unor informaţii conexe codului operaţiei, cum arfi
e un decodificator al cuvântului instrucţie ce instanţiază instrucția aflată în
informaţiile privind locul în care se află operanzii sau unde trebuie depus
rulare, numit, din raţiuni istorice, decodificator al codului operației,
rezultatul, respectiv informaţii pe baza cărora se determină —eventual în
OCD (Operation Code Decoder);
e un bloc de secvenţiere a comenzilor, numit secvențiator, S (Sequencer); urma unor calcule- locul operanzilor şi-sau al rezultatului.
e un bloc de pilotare temporală, numit generator de tact, CG (Clock
Generator); În arhitectura considerată, extensiile registrului IR sunt IREL,respectiv
e un bloc deiniţializare, numit generator de reset, RG (Reset Generator). IREH. Acestea sunt registre pe câte 8 biţi, concatenabile între ele astfel
încât să poată prelua şi păstra şi informaţii pe 16 biţi.
„nn
132

hu A
id
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ E_ CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ
....

Aşa cum se va vedea, în arhitectura considerată instrucţiile au lungimi de

Fig. 6.2_1. Blocurile în gri: unitatea de comandă


1-4 octeți. În timpul procesului de rulare, aceştia sunt păstraţi la nivelul

a procesorului didactic CSAC 2000


procesorului după cum urmează:
+ octetul 1:în registrul IR
e. octetul 2:în registrul IREL
+ octetul 3: în registrul IREH
+ octetul 4: în registrul B1

A nu se deduce din cele de mai sus că registrul BI ar fi şi el extensie a


registrului IR. Registrul B1 are, după cum s-a arătat în capitolul precedent şi
după cum se va vedea în continuare, cu totul alte roluri şi, numai
conjunctural, în cazul unui număr redus de instrucţii, el este pe post de
extensie a registrului IR.

Decodificatorul codului operaţiei


A15-A0

Decodificatorul codului operaţiei are rolul de a decodifica codul din IR şi


de a indica secvenţiatorului S, pe de o parte, operaţia ce trebuie executată,
iar pe dealtă parte, operandul / operanzii sau modul în care trebuie să fie
determinat locul operandului / operanzilor şi-sau al rezultatului.

Se precizează că există o multitudine de modalități prin care operandul /


operanzii, respectiv locul operandului / operanzilor şi-sau locul rezultatului
se pot specifica; o astfel de modalitate poartă, consacrat, numele de “mod de
adresare”. În figura 6.2_2, suntsintetizate modurile de adresare cu care este
înzestrată arhitectura de calcul considerată.

Se face precizarea că unele dintre modurile de adresare surprinse în


figura 6.22 sunt referite de către unii producători şi-sau utilizatori de
procesoare prin alți termeni decât cei adoptați în context de noi; de altfel,
cititorul este rugat să rețină că unicitatea termenilor şi a semnificaţiilor pe
care termenii le au este, în domeniul calculatoarelor, mult prea frecvent, doar
kb
un deziderat.

135
Ț
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Secvenţiatorul
Nr. Modul de adresare Definirea modului de adresare
crt,
Secvenţiatorul S$ are rolul de a genera ansamblul semnalelor ce
materializează operaţiile elementare la care sunt reduse instrucțiile, în mod
Adresarea implicită Se numeşte adresare implicită referirea unui
specific pentru fiecare instrucție, conform indicațiilor primite de la:
registru al procesorului ce conține un operand
sau este vizat să conțină rezultatul prin înşişi
decodificatorul codului operaţiei.
biții ce reprezintă codul operaţiei.
Adresarea la registru Se numeşte adresare la registru referirea unui
Rularea unei instrucţii are două etape:
1). Etapa de extragere sau aducere (“ferch”) a codului operației şi a
registru al procesorului ce conține un operand
informaţiilor privind locul operanzilor şi-sau rezultatului indisociabile de
sau este vizat să conțină rezultatul, prin biţi
codul operaţiei.
dedicați ai cuvântuluiinstrucție, alăturaţi celor
2). Etapa de execuție propriu-zisă a instrucției.
prin care se specifică codul operaţiei.
Adresarea imediată Se numeşte adresare imediată specificarea prin
Etapa de aducere cuprinde un ciclu de citire din memorie identic pentru
cuvântul instrucție a înşişi operanzilor, prin biţi
toate instrucţiile. În cadrul acestui ciclu, se citeşte locaţia cu adresa prezentă
dedicați, alăturaţi celor prin care se specifică
codul operaţiei.
în registrul PC şi conţinutul ei se duceîn registrul IR.
Adresarea indirectă Se numeşte adresare indirectă referirea unei
Etapa de execuţie cuprinde unul sau mai multe cicluri de citire, respectiv
locaţii de memorie sau a unui port ce conţine
de scriere, vizând memoria sau un port, în mod specific pentru fiecare
un operand sau este vizată / vizat să conțină
instrucţie. Aceste cicluri au ca obiectiv, în principal, citirea operanzilor,
rezultatul, printr-o adresă conținută de unul
respectiv scrierea rezultatului, dar, uneori, mai înainte de asta, aducerea
dintre registrele procesorului, indicat prin biţi
informaţiilor privind locul operanzilor şi-sau rezultatului, ce se prezintă
dedicați ai cuvântului instrucție, alăturați celor
separat de codul operaţiei. |
prin care se specifică codul operaţiei.
Adresarea directă Se numeşte adresare directă referirea unei
Semnalele de comandă generate de secvențiator acționează, în
locații de memorie sau a unui port ce: conţine majoritatea covârşitoare a lor, în interiorul procesorului şi doar un număr
un operand sau este vizată / vizat să conțină redus în afara sa. În arhitectura considerată, semnale de comandă interne
rezultatul, printr-o adresă conținută în mod
sunt:
efectiv în cuvântul instrucție, alăturat câmpului
e LDIR
ce joacărolul de cod al operaţiei. |
e OBA
Adresareastivă Se numeşte adresare stivă referirea unor locaţii
e ADD
de memorie pentru depunerea în ele a
conținuturilor unor registre, respectiv pentru e etc.
iar semnale de comandă externe:
descărcarea conținuturilor lor în anumite
registre, cu ajutorul adresei conținută de
g
SI) 3

registrul pointer de stivă, decrementată înaintea


fiecărei operaţii de scriere şi incrementată după
fiecare operaţie de citire.
39
3

Fig. 6.2_2. Modurile de adresare ale arhitecturii de calcul din figura 6.2_1.

136 137
Ţ
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Semnalul LD_IR (load IR)are rolul de a determina încărcarea registrului Operația de citire / scriere în derulare la un moment va viza o locaţie de
IR cu informaţia prezentă la intrările sale. Este activ pe frontul ridicător. memorie sau alta, respectiv un port sau altul, în funcţie de valoarea
informației numită adresă, transmisă memoriei, respectiv unităţii de porturi,
Semnalul OB_A (on the bus A) arerolul de a determina punerea peliniile
prin grija unităţii de comandă, în timp ce semnalele MRO, respectiv JIORO
de date ale procesorului a conținutului registrului A, prin activareaieşirilor
cu 3 stări ale acestui registru. Este activ penivelul ridicat, adică: pe nivelul sunt âctive.
de «>

Suportul fizic pe care se face vehicularea adreselor între procesor şi


Semnalul ADD (add) are rolul de a specifica unităţii aritmetico-logice că memorie, respectiv porturi este aşa-numita . “magistrală de adrese”,
are de efectuat o adunare. Este activ pe nivelul ridicat, adică: pe nivelul formată, în cazul arhitecturii considerate, din 16 linii: 40-475. Liniile
de Li 1 » magistralei de adrese sunt cutrei stări logice, unidirecționale.

Suportul fizic pe care se face vehicularea datelor între procesor şi


Semnalul MRO (“memory requesP”) are rolul de a mobiliza memoria în memorie, respectiv porturi, ca şi între memorie, respectiv porturi şi procesor
vederea efectuării unei operații. Operația poate fi de citire sau de scriere, este aşa-numita “magistrală de date”, formată, în cazul arhitecturii
considerate, din 8 linii: D0-D7. Liniile magistralei de date suntcu trei stări
dependentde valoarealogică a semnalelor RD şi WR . Este activ pe nivelul
logice, bidirecţionale. .
coborât, adică: pe nivelul de “0”.
Generatorul de tact
| Semnalul JORO (“input-output request”) are rolul de a mobiliza unitatea
Generatorul de tact, CG, are rolul de a furniza aşa-numitul “semnal de
de porturi în vederea efectuării unei operații. Operația poate fi decitire sau
tact” sau “semnal de ceas”, CLK (“clock”), cu care îşi sincronizează
de scriere, dependent de valoarealogică a semnalelor RD şi WR. Este activ funcţionarea secvenţiatorul, dar şi celelalte blocuri secvențiale ale unității de
pe nivelul coborât, adică: pe nivelul de “0”. comandă şi, în ultimă instanță, întregul calculator.

Generatorul de reset
Semnalul RD (“read”) are rolul dea specifica memoriei sau unităţii de
porturi că operația dispusă de procesor prin semnalele MRQ, respectiv Generatorul de reset, RG, are rolul de a furniza un semnal de iniţializare
a secvențiatorului şi a altor blocuri cu caracter secvențial, de fiecare dată
IORQ este unade citire. Este activ pe nivelul coborât, adică: pe nivelul când calculatorul se pune sub tensiune, respectiv când se apasă un buton
de «Q>
dedicat, numit “buton RESET”.

Semnalul YR (“write”) are rolul de a specifica memoriei sau unităţii de


Minimal, generatorul de reset asigură aducerea registrului PC la un
conţinut predefinit (zero, în cazul celor mai multe procesoare, inclusiv în
porturi că operaţia dispusă de procesor prin semnalele MRQ, respectiv cazul în studiu), reprezentând adresa instrucției de început a primului
program ce se impunea fi rulat (de regulă: un program de autotestare sau un
IORQ este una de scriere. Este activ pe nivelul coborât, adică: pe nivelul program încărcător), respectiv instituirea stării inițiale a secvenţiatorului,
de «(>
astfel încât el să-şi demarezeactivitatea cu un cicluferch.

138
-.
|

CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ


CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

diu de caz e (BC): pentru desemnarealocației de memorie pointată de adresa din BC


6.3. Instructţiile procesoarelor von Neumann. Stu sau a conţinutului ei, distincţia făcându-se din context
pe setul de instrucţii al procesorului CSAC 2001 e (aaaa): pentru desemnarea locației de memorie pointată de adresa “aaaa”
sau a conţinutului ei;distincţia făcându-se din context
6.3.1. Aspecte introduct
ive
+ (aa): pentru desemnarea portului de adresă“aa” sau a conţinutului lui,
distincţia făcându-se dincontext
ric, de 17 instrucţii:
Procesorul CSAC 2001 dispune, la nivelgene e aa: pentru desemnarea unei valori pe 8 biţi
[nstrucţia de încărcare (load), “LD” e aaaa:pentru desemnarea unei valori pe 16 biţi:
opAnHn PHP

[nstrucţia de adunare (add), “ADD”


ă
Instrucţia de scădere (substract), “SUB” Se face precizarea că cele mai multe dintre instrucțiile procesorului
Instrucţia de efectuare a operaţiei ŞI (and), “AND” CSAC 2001 fac uz de toate cele şase moduri de adresare introduse cu ocazia
Instrucţia de efectuare a operației SAU (or), “OR” Ei: prezentării decodificatorului codului operației:
v “XOR”
Instrucţia de efectuare a operaţiei SAU EXCLUSIV (exclusi or), e adresarea implicită
Instrucţia de incrementare(increment), “INC” adresarea la registru
Instrucţia de decrementare (decrement), “DEC” adresarea imediată
), “SAR” adresarea indirectă
_ Instrucţia de deplasare la dreapta (shift right adresarea directă
lefi), “SAL”
10.Instrucţia de deplasare la stânga (shift adresarea stivă
“IN”
11.Instrucţia de intrare (input),
T”
12,Instrucţia de ieşire (output), “OU 6.3.2. Codificarea instrucţiilor
“PUSH”
13 Instrucţia de scriere în stivă (push),“POP”
n stivă (p op ), Se convine ca octetul 1 al instrucțiilor -—reamintim: instrucțiile
14.Instrucţia decitire di
ump), «Tp» procesorului CSAC 2001 se reprezintă pe 1...4 octeţi- să aibă următoarele
15.Instrucţia de salt (j
brutină (call), «CALI? câmpuri:
16.Instrucţia de apel de su
utină (return), “RET”
17.Instrucţia de revenire din subr a). când val (Bit7... bit5) e [0012...1102] şi val(bit4 bit3) e [002...102]:
înainte de prezentarea efectivă a acestor instrucții, se instituie 7 6 5 4 3 2 1] 0
următoarele notații: |
|
e op: pentru desemnarea operaţiei cu care se identifică o instrucţie
comun al
e x: pentru desemnarea sediului operandului | sau a sediului codul specificația specificația
pt. x pt.y
operandului 1 şi al rezultatului sau a sediului operandului 2, distincția
operaţiei
001: 0p=LDx,y 00: x = A 000: y = A
făcându-se din context; operandul 1 poatefi şi unicul 010: op = ADDx,y O0l:x=8B 001:y=8

e y: pentru desemnarea operandului 2 sau a sediului operandului 2, 011: 0p= SUBx,y 10:x=C 010:y=C
100: op = AND + y Oll:y=aa :
distincţia făcându-se din context 101: op= OR, y 100: y = (BC)
e A,:B, C: pentru desemnarea registrelor A, B, C sau a conţinuturilor lor, 110: op=XOR.x, y 101: y = (aaaa)

distincția făcându-se din context

140 141

LA
Ț
Da
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ . CAP. Ga DESPRE PROCESOR. UNITATEA DE COMANDĂ

b). când val(bit7... bit5) e [0012...1102] şi val (Bit4 bit3) = 11»: e). când val (Bi47... bit5) = 1112şi val (bit4 bit3) = 002

trip iri
şi val (Bbit2 ... bit0) = 111:
Zu 6. 5 4 3 2 1 0_
7 6 5 4 3 2 1 0

codul specificaţia specificația


operaţiei pt. x pt. y codul codul
001: op =LDxy 110:x =(8B0 00:y=A4 operaţiei operaţiei
010: op = ADD =, y 111l:x =(aaaa) 0l:y=B 111: op = vezi 00111: op= RET
011: op= SUBx y 10:y=C val (bit4 ... bit0)
100: op = AND x, y il:y = aa
101: 0p= OR, y £). când val (bit? „. Bit5) = 1112 şi val (bit4 bit3) = |l
110: op = XOR =, y
7 6 5 4 3 2 1 0
c). când val (bit7... bit5) = 1112 şi val (bit4 bit3) e [002...102]
şi val (biţ2 ... bit0) e [0002...1012]:
codul specificația codul
operaţiei ptx operaţiei

=
76 2543 2 1 0 111: op = vezi 110: x =(B0) 00: op = INC
val (bit2 ... bit0) 111:x =(aaaa) 0l:op=DEC
10: op=SHL
codul specificația codul 11: op = SHR
operaţiei pt. x operaţiei

111: op vezi
,
00; x = A
şispecificaţi pt. y
000: op = INC x
2). când val (bi17.... bit5) = 0002 şival (bit3 ... bit0) e (0000, 1000, 01112):
val (bit2 ... bitQ) 0l:x=8 001: op = DEC x 7 6 5 4 3 2 ! 0
10:x =C 010: op = SHL x
OlI: op = SHR x
10l: o0p=INxy
cu y = (aa) codul specifi- codul
operaţiei _caţia operaţiei
d). când val (bit? ... bit5) = 1112 şi val (bit4 bit3) e [002...102] pt. x
000: 0p= vezi O0:x=AF 0000: PUSH x
şi val (biţ2 ... bit0) = 110:
val (biţ3 .. bit0) sau: 1000: POP x
x=SP 0111: LD x, aaaa
76 5 4232 1 0 1: x=BC

h). când val (Bi47.... bit5) = 0002 şi val (bit3... bit0) = 11112:
codul specificaţia codul
operaţiei pt.y operaţiei
, şi specificaţia pt. x
111: op = vezi 00:py=A 110:0p=O0UTx,y
val (Bit2 ... bitQ) O0I:y=8 cu x = (aa) codul codul
10:y=C
operației operaţiei
000: op = vezi 01111: 0p= INC BC
val (bit4 ... bit0) 11111: op= DEC BC
142 143
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

i). când val(Bit7 bit6 bit5) = 0002 şi val (bit2 bit] bit0) e 4001...110): L

2I>
1

Peel mel pm moi nioo eo pimmi la loolololo nioo o o oo Pee Da m m a


peri
o
7 6 5 4 3 2 1 0 1

n
1
2
1
codul specifi- codul 3
1
operaţiei caţia operaţiei 1
pt. x 1 10
000: op=vezi 0:e=N 000l:0p=JPeZ, (aaaa) 2
l 100
val (biţ3 ... bit0) 1: e=nil 0010: op = JP eS, (aaaa) 10
3
9011: op = JP eC, (aaaa) 1 000
0100: op = JP eV, (aaaa) 1 001
0101: op = JP eP, (aaaa) 1
2 01
0110: op = JP (BO), 100
i
dacă Bir4=0 3 101
0110: op = JP (aaaa) 000

sole lelel>
1

sole lolef>
dacă bit4=1 1 001
1
1001: op = CALL eZ, (aaaa)
2
1010: op = CALLeS,(aaaa) 3 199
1011: op = CALI eC, (aaaa) 3
1100: op = CALL, eV, (aaaa) 3
4 Ii
1101: op = CALL eP, (aaaa)
1 000

=
0110: op= CALL (BC), 1 001
dacă bit4=0 1 010

[îi joia [to rm [ma m o bella] bee o mii


0110: op = CALL (aaaa) 2 011
1 100
dacă bi!4=1
3 101
1 000 000
Ca o consecință a convențiilor de codificare de mai sus, rezultă tabelul 1 001 001
1 010 010
din figura 6.3.2_1. Acesta cuprinde, într-o manieră sintetică, întregul set de 2 911 ol!
100 100
instrucţii al procesorului CSAC 2001, cu modurile de adresare pe care ele le 3
1
101 101
admit. 1 000 000
1 00 001
1 010 010
2 oii OI
1 100 100
3 10i 101
1 009 000

s loelsle lalal>
3 lalel>lg lala|>
e lojal> E lola[>
1 001 001
1 010 010
2 Oli 011
3 100 100
3 101 191
3 110 110
4 11 ul

Fig. 6.3.2_1. Instrucţiile procesorului CSAC 2001 (se continuă).

144 145
CAP.6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

6.3.3. Conţinutul instructțiilor


000
000 000 1._Instrucţia de încărcare (LD).

== [mail ellos o le loial = ll o lo fus iale


001 001
010 010 Notaţie:
Oil Ol
100 100
LD x,y
101 101 unde:
110 110 xe(A, B, C, (BC), (aaaa)?
Ul 1
000 000
yețA, B, C, (BC), (aaaa), aa), cu yeţ(BC), (aaaa)) => x£ (BC), (aaaa))
001 001
010 010 Descriere:
Oi Ol Încarcă x cu y (a se citi: “încarcă un registru sau o locaţie de memorie
100 100
101 101 cu o valoare specificată prin adresare imediată sau cu o copie a unui octet
110 110 aflat într-un registru sau într-o locaţie de memorie”.
li MI
000 000
001 001 Codificare:
010 010 Aşa cum rezultă din figura 6.3.2_1, instrucția LD poate avea 1-4 octeți,
-L011 Oil în funcție de modurile de adresare pe care le foloseşte. Semnificațiile
100 100
101 101 octeților sunt următoarele:
IR

110 110 a). cazul L= 1 octet |


Mi 1 Octetul 1 (unicul) reprezintă codul operaţiei. În plus, în cazul adresărilor “la
000 000
m jte|blb== ==

001 001 registru” şi “indirectă”, tot el indică şi registrul / locația de memorie vizat /
010 010 vizată prin respectivele adresări.
Ol 011 b). cazul L= 2 octeți |
100 aaaa 100
101 aaaa 101 Octetul1 reprezintă codul operaţiei. În plus, în cazul adresărilor “la registru”
110 aaaa 110 aaaa şi “indirectă”, tot el indică şi registrul / locaţia de memorie vizat / vizată prin
il! Ul BC respectivele adresări.
Legendă: |: lungimeaîn octeți a instrucţiilor. Octetul 2 reprezintă operandul efectiv -adică: pe aa-, cazul L=2 octeți
conţinând o adresare imediată.
Fig. 6.3.2_1. Instrucţiile procesorului CSAC 2001 (continuare). c). cazul L= 3 octeți
Octetul 1 reprezintă codul operaţiei. În plus,tot el indică şi registrul vizat
prin adresarea “la registru” pe care cazul L=3 octeți o conţine inevitabil.
Octeţul 2 reprezintă partea mai puţin semnificativă a adresei locației de
memorie vizată -adică: pe aaaas-, cazul L=3 octeți conținând o adresare
directă.
Octetul 3 reprezintă partea mai puțin semnificativă a adresei locației de
memorie vizată -adică: pe aaaar-, cazul L=3 octeți conţinând o adresare
directă.

146 147
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPRE PROCESOR: UNITATEA DE COMANDĂ

d). cazul L= 4 octeți 4._Instrucţia de efectuare a operaţiei ŞI (AND).


Octetul 1 reprezintă codul operaţiei. Notaţie:
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locației de AND x,y
memorie vizată -adică: pe aaaar-, cazul L=4 octeți conţinând o adresare unde:
directă. xeţA, B, C, (BC), (aaaa))
Octetul 3 reprezintă partea mai puţin semnificativă a adresei locației de ye(A, B, C, (BC), (aaaa), aa?, cu yet(BC), (aaaa)) > x ((BC), (aaaa))
memorie vizată -adică: pe aaaay-, cazul L=4 octeți conţinând o adresare
directă. |. Descriere:
Octetul 4 reprezintă operandul efectiv -adică: pe aa-, cazul L=4 octeți Efectuează operaţia ŞI bit la bit între x şi y şi oferă rezultatul în x şi
conținând o adresare imediată. informaţii despre rezultat în F.

_2_Instrucţia de adunare (ADD ). Codificare:


Tot ce s-a spus în privința codificării la instrucția LD este valabil şi
Notaţie:
pentru instrucția AND.
ADD x, y
unde:
5._Instrucţia de efectuare a operației SAU (OR).
xeţA, B, C, (BC), (aaaa)) Notaţie:
yetA, B, C, (BC), (aaaa), aa), cu ye( (BC), (aaaa)) => x((BC), (aaaa))
OR x, y
Descriere: - unde:
Adună pex cu y şi oferă rezultatul în x şi informaţii despre rezultat în F. xe(A, B, C, (BC), (aaza) |
yeţA, B, C, (BC), (aaaa), aa), cu ye ((BC), (aaaa)) => xe((BC), (aaaa))
Codificare:
Tot ce s-a spus în privinţa codificării la instrucția LD este valabil şi Descriere:
pentru instrucția ADD. Efectuează operaţia SAU bit la bit între x şi y şi oferă rezultatul în:xşi
informaţii despre rezultat în F.
3. Instrucţia de scădere (SUB). Codificare:
Notaţie: Tot ce s-a spus în privinţa codificării la instrucția LD este valabil şi
SUB x, y pentru instrucția OR.
unde:
xEeţA, B, C,(BO), (aaaa)) 6._Instrucţia de efectuare a operației SAU EXCLUSIV (XOR).
ye1A, B, C, (BC), (aaaa), aa), cu ye((BC), (aaaa)) => x ((BC), (aaaa)) Notaţie:
XOR x, y
Descriere: | unde: -
Scade din x pe y şi oferă rezultatul în x şi informaţii despre rezultat în F. xe(A, B, C, (BC), (aaaa))
Codificare: ye(A, B, C, (BC), (aaaa), aa?, cu ye((BC),(aaaa)) > xg (BC), (aaaa);
Tot ce s-a spus în privința codificării la instrucţia LD este valabil şi
pentru instrucția SUB. Descriere:
Efectuează operaţia SAU EXCLUSIV bit la bit între x şi y şi oferă
rezultatulîn x şi informaţii despre rezultat în F.
148 149
“CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPREPROCESOR. UNITATEA DE COMANDĂ

Codificare:
Tot ce s-a spus în privința codificării la instrucţia LD este valabil şi Codificare:
pentru instrucția XOR. Tot ce s-a spus în privința codificării la instrucția ÎNC este valabil şi
pentru instrucția DEC.
7. Instrucția de incrementare (INC).
Notaţie: 9. Instrucţia de deplasare la dreapta (SHR).
INC x
unde: SHR x
unde:
xe(A, B, C, (BC), (aaaa), BC)
xețA, B, C,(BC), (aaaa))
Descriere:.
Incrementează x şi oferă informaţii despre rezultat în F. Descriere:
„ Deplaseazăla dreapta cu o poziţie biții lui x şi oferă informaţii despre
Codificare: rezultat în F. În procesul de deplasare, în rangul de pondere 2 al lui x se
Aşa cum rezultă din figura 6.3.2_1, instrucția INC poate avea fie 1 octet, introduce valoarea (, iar ceea ce a fostîn rangul de pondere 2" se transferă
fie 3 octeți, în funcție de modurile de adresare pe care le foloseşte. în fanionul C.
Semnificațiile octeţilor sunt următoarele:
a). cazul L= 1 octet Codificare:
Octetul1 (unicul) reprezintă codul operației. În plus, în cazul adresărilor “la Tot ce s-a spus în privinţa codificării la instrucția INC este valabil şi
registru” şi “indirectă”, totel indică şi registrul / paua de memorie vizat / pentru instrucția SHR.
vizată prin respectivele adresări.
b). cazul L= 3 octeți 10. Instrucţia de deplasare la stânsa (SHI).
Octetul1 reprezintă codul operaţiei. Notaţie:
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locației de SHL x
memorie vizată -adică: pe aaaay-, cazul L=3 octeți conţinând o adresare unde:
directă. xeA, B, C, (BC), (aaaa))
Octetul 3 reprezintă partea mai puţin semnificativă a adresei locației de
memorie vizată -adică: pe aaaay-, cazul L=3 octeți conținând o adresare Descriere:
directă. Deplasează la stânga cu o poziţie biții lui x şi oferă informaţii despre
rezultat în F. În procesul de deplasare, în rangul de pondere 2 al lui x se
8. Instrucţia de decrementare (DEC). introduce valoarea (, iar ceea ce a fost în rangul depondere 2' se transferă
Notaţie: | în fanionul C.
DEC x Codificare: E
unde: Tot ce s-a spus în privința codificării la instrucția INC este valabil şi
„ XEŢA,B, C, (BC), (aaaa), BC) pentru instrucția SHL.

Descriere: 1î. Înstrucţia de intrare (ÎN).


Decrementează x şi oferă informații despre rezultat în F. Notaţie:
IN x,y
150 151
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

unde: Codificare:
xe(A, B, C) Aşa cum rezultă din figura 6.3.21, instrucția PUSH are 1 octet.
y = (aa) Semnificațiile salesunt următoarele: Ă
Octetul1 (unicul) reprezintă codul operaţiei. În plus,tot el indică şi perechea
Descriere: de registre vizată prin adresarea “la registru” pe care instrucția o conține
Introduce în x o copie a informaţiei de un octet aflată într-un port de inevitabil.
intrare y.
14. Instrucţia de scriere în stivă (POP).
Notaţie:
Codificare: POP x
Aşa cum rezultă din figura 6.3.21, instrucția IN are 2 octeți. unde:
Semnificațiile octeţilor sunt următoarele:
x ețAF, BC?
Octetul 1 reprezintă codul operaţiei. În plus, tot el indică şi registrul vizat
prin adresarea “la registru” pe care instrucția o conţineinevitabil. Descriere:
Octetul 2 reprezintă adresa portului vizat -adică: pe aa-. Incarcă x prin descărcareastivei.

12. Instrucţia de ieşire (OUT). Codificare:


Notaţie: Tot ce s-a spus în privința codificării la instrucţia PUSH este valabil şi
OUT x, y pentru instrucția POP.
unde:
x = (aq) 15. Instrucţia de salt (JP).
yețA, B, C) Notdţie:
dacă W z nil:
Descriere: JP eW, x
Scoate într-un port de ieşire x o copie a octetului aflat în y. dacă W = nil:
JP x
Codificare: unde:
Tot ce s-a spus în privința codificării la instrucţia IN este valabil şi e ețnil, N)
pentru instrucția OUT. Wel!Z, S, C, V, P, ni?

13. Instrucţia de scriere în stivă (PUSH).


xe (BO), (aaaa))
Notaţie: Descriere:
PUSH x leşi din secvența normală de rulare, eventual condiționat, şi continuă
unde: programul cu instrucția localizată prin x; altfel spus: fă un salt. Dacă
x ețAF, BC! W nil, atunci ieşirea din secvență se face condiționat de valoarea
fanionului indicat de W: dacă e = ni], atunci, pentru salt, respectivul fanion
Descriere: trebuie să fie !a unu; dacă e = N, atunci, pentru salt, respectivul fanion
Depune x în stivă. trebuie să fie la zero. Când condiţia de salt nu este îndeplinită, programul
continuă, ca şi în cazul instrucţiilor ordinare, cu instrucţia imediat următoare
din punct de vedere topologic.
152 153
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Codificare: | e = nil, atunci, pentru apel, respectivul fanion trebuie să fie la unu; dacă
Aşa cum rezultă din figura 6.3.2_1, instrucţia JP poate avea fie 1 octet, e = N, atunci, pentru apel, respectivul fanion trebuie să fie la zero. Când
fie 3, octeți, în funcție de modurile de adresare pe care le foloseşte. condiţia de apel nu este îndeplinită, programul continuă, ca şi în cazul
Semnificațiile octeților sunt următoarele: instrucţiilor ordinare, cu instrucția imediat următoare din punct de vedere
a). cazul L= 1 octet topologic.
Octetul 1 (unicul) reprezintă codul operaţiei. În plus,tot el indică şi faptul că
adresa instrucției la care se vizează să se efectueze saltul se află în registrul
Codificare:
pereche BC. Aşa cum rezultă din figura 6.3.2_1, instrucţia CALL poate avea fie |
b). cazul L= 3 octeți octet,fie 3 octeți, în funcție de modurile de adresare pe care le foloseşte.
Octetul 1 reprezintă codul operației, iar în cazul instrucţiilor de salt Semnificațiile octeţilor sunt următoarele:
condiționat —în plus, condiţia impusă. a). cazul L= 7 octet _ a j
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locației de Octetul 1 (unicul) reprezintă codul operației. În plus, tot el indică şifaptul că
memorie vizată -adică: pe aaaa-, cazul L=3 octeți conținând o adresare
adresa instrucției la care se vizează să se efectueze apelul —altfel spus:
directă.
adresa de început a subrutinei- se află în registrul pereche BC.
Octetul 3 reprezintă partea mai puţin semnificativă a adresei locației de b). cazul L= 3 octeți _
memorie vizată -adică: pe aaaau-, cazul L=3 octeți conţinând o adresare
Octetul 1 reprezintă codul operaţiei, iar în cazul instrucţiilor de apel
directă. | E
condiţionat —în plus, condiţia impusă.
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locației de
Evident, în cazurile în care saltul trebuie executat, acest lucru se
memorie vizată -adică: pe aaaar-, cazul L=3 octeți conținând o adresare
realizează prin încărcarea registrului PC cu conţinutul registrului pereche BC N
directă.
-dacă x = (BC)-, repectiv cu octeții 2 şi 3 ai instrucției —dacă x = (aaaa). Octetul 3 reprezintă partea mai puţin semnificativă a adresei locației de
memorie vizată -adică: pe aaaay-, cazul L=3 octeți conţinând o adresare
16. Instrucţia de apel de subrutină (CALL).
directă.
Notaţie:
dacă W z nil:
Evident, în cazurile în care apelul trebuie executat, acest lucru se
CALL eW, x
realizează prin încărcarea registrului PC cu conținutul registrului. pereche BC
dacă W = ni:
—dacă x = (BC)-, repectiv cu octeţii 2 și 3 ai instrucției —dacă x = (aaaa),
CALL x
după ce conţinutul său, reprezentând adresainstrucției imediat următoare din
unde:
punct de vedere topologic, a fost salvat în stivă.
e.e(nil, N)
We(Z, S, C, V, P, nil)
xe((BO), (aaaa)) 17. Instrucția de revenire din subrutină
Notaţie:
T).

Descriere: RET
leşi din secvența normală de rulare, eventual condiționat, şi continuă
programul cu instrucția localizată prin x, după ce salveziîn stivă adresa Descriere: | |
instrucției imediat următoare din punct de vedere topologic; altfel spus: fă leşi din secvenţa normală de rulare şi continuă programul cu instrucția a
un salt reversibil sau apelează o subrutină. Dacă W z nil, atunci apelarea cărei adresă se află în vârful stivei sau, altfel spus: revino din subrutină
subrutinei se face condiționat de valoarea fanionului indicat de W: dacă (evident, dacă s-a operat corect asupra stivei, atunci în momentul execuţiei

154 155
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ:

instrucției RET, în vârful său se găseşte adresa instrucției imediat următoare


din punct de vedere topologic instrucției CALL care a apelat subrutina —vezi
descriereainstrucției CALL).

Codificare:
Aşa cum rezultă din figura 6.3.21, instrucția RET are 1 octet.
Semnificațiile sale sunt următoarele:
Octetul 1 (unicul) reprezintă codul operației. În plus, tot el indică şi faptul că
adresa instrucției la care se vizează să se producă revenirea —altfel spus:
adresa de revenire- se află în vârful stivei.

„_ Evident, revenirea din subrutină se face prin descărcarea primilor 2 octeți


din vârful stivei în registrul PC.

156
CUPRINS

CUPRINS

pag.
1. CONSIDERAŢII INTRODUCTIVE ........................................................ 7
1.1. Noţiuni fundamentale ................................................................ 7
1.2. Acţiuni ce au loc la pornirea unui calculator ........................... 13
2. DESPRE MEMORIE ............................................................................. 17
3. DESPRE INTERFEŢE ........................................................................... 25
4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ .................. 31
4.1. Reprezentarea numerelor în calculator .................................... 31
4.1.1. Reprezentarea numerelor în virgulă fixă ............................... 31
4.1.1.1. Reprezentarea numerelor pozitive ................................. 31
4.1.1.2. Reprezentarea numerelor de orice semn ....................... 34
4.1.1.2.1. Reprezentarea prin semn-mărime ........................... 34
4.1.1.2.2. Reprezentarea prin complement de unu ................. 36
4.1.1.2.3. Reprezentarea prin complement de doi .................. 40
4.1.2. Reprezentarea numerelor în virgulă flotantă ......................... 45
4.1.2.1. Principii .........................................................................
45
4.1.2.2. Standardul IEEE 754 ..................................................... 47
4.2. Dispozitive de adunare şi scădere ............................................. 50
4.2.1. Principii .................................................................................
50
4.2.2. Sumatoare seriale .................................................................. 52
4.2.2.1. Principii .........................................................................
52
4.2.2.2. Proiectarea unui sumator serial
folosind bistabile J-K ................................................... 52
4.2.2.3. Proiectarea unui sumator serial
folosind bistabile D .................................................... 53
4.2.2.4. Avantaje şi dezavantaje ale sumatoarelor seriale .......... 54
4.2.3. Sumatoare paralele ................................................................ 54
4.2.3.1. Principii ......................................................................... 54
4.2.3.2. Sumatoare “ripple carry” .............................................. 54
4.2.3.3. Sumatoare “carry lookahead” ....................................... 56
4.2.3.4. Sumatoare “carry skip”.................................................. 59
4.2.3.5. Sumatoare BCD ............................................................. 60

5
CUPRINS

pag.
4.3. Dispozitive de înmulţire ............................................................. 63
4.3.1. Principii ................................................................................ 63
4.3.2. Sinteza unui înmulţitor de numere în semn-mărime ............ 67
4.3.3. Sinteza unui înmulţitor de numere în complement de doi,
după metoda Robertson ........................................................ 79
4.3.4. Sinteza unui înmulţitor combinaţional ................................. 91
4.4. Dispozitive de împărţire ............................................................. 93
4.4.1. Principii ................................................................................ 93
4.4.2. Sinteza unui înmulţitor de numere în semn-mărime,
operând cu refacerea resturilor ............................................. 96
4.4.3. Sinteza unui înmulţitor de numere în semn-mărime,
operând fără refacerea resturilor ........................................... 105
5. DESPRE PROCESOR. UNITATEA DE REGISTRE ................................ 119
5.1. Introducere ................................................................................. 119
5.2. Unitatea de registre a procesorului CSAC 2001....................... 120
5.3. Unitatea de registre a procesorului MOTOROLA 68000 ........ 124
5.4. Unitatea de registre a procesorului INTEL 8086 ..................... 127
6. DESPRE PROCESOR. UNITATEA DE COMANDĂ ................................ 131
6.1. Preliminarii. Paradigma von Neumann ................................... 131
6.2. Elementele constitutive
ale unei unităţi de comandă von Neumann .............................. 132
6.3. Despre instrucţii. Studiu de caz
pe setul de instrucţii al procesorului CSAC 2001 ................... 140
6.3.1. Aspecte introductive ............................................................. 140
6.3.2. Codificarea instrucţiilor ........................................................ 141
6.3.3. Conţinutul instrucţiilor ......................................................... 147
6.4. Implementarea instrucţiilor ..................................................... 156
6.4.1. Aspecte introductive ............................................................. 156
6.4.2. Implementarea ciclului fetch ................................................ 157
6.4.3. Implementarea instrucţiei “LD SP, aaaa” ........................... 160
6.4.4. Implementarea instrucţiei “JP (aaaa)” ................................ 162
6.4.5. Implementarea instrucţiei “ADD A, (BC)” .......................... 164
6.4.6. Implementarea instrucţiei “CALL (aaaa)” .......................... 166
6.4.7. Implementarea instrucţiei “RET” ........................................ 169
6.4.8. Implementarea instrucţiei “OUT (aa), A” ........................... 171
BIBLIOGRAFIA ........................................................................................................ 174

6
CAP. 1. CONSIDERAŢII INTRODUCTIVE

În cazul punctual al calculatoarelor exploatate sub sistemul de operare


WINDOWS 95, la pornire se întâmplă următoarele lucruri:
A). SE INTRODUCE ÎN RULARE SISTEMUL DE PROGRAME
“BIOS” ŞI, CU AJUTORUL LUI:
• se identifică şi testează memoria, porturile, adaptorul video, tastatura,
unitatea de hard disk, unitatea de dischete, unitatea de CD-ROM;
• se identifică, introduce în configuraţie şi testează elementele tratabile
prin tehnica “plug and play”;
• se determină partiţia care conţine înregistrarea de startare principală,
referită prin abrevierea MBR (Master Boot Record), căutând-o mai
întâi pe dischetă, dacă unitatea de dischete conţine o dischetă, iar
apoi, dacă mai este cazul, pe hard-disk şi, eventual, pe CD-ROM;
• se încarcă înregistrarea MBR şi i se dă controlul;

B). SE INTRODUCE ÎN RULARE PROGRAMUL “IO.SYS” ŞI, CU


AJUTORUL LUI:
• se preiau din fişierul numit MSDOS.SYS -vezi figura 1.2_1- şi se
efectivizează parametrii procesului de “boot”-are;

Fig. 1.2_1. Conţinutul fişierului MSDOS.SYS

• se afişează mesajul “Starting Windows 95” şi se aşteaptă timp de


câteva secunde (uzual: două-trei) eventuala apăsare a unei taste
funcţionale, menită să dicteze modul de derulare, în continuare, a
procesului de iniţializare;
14
CAP. 1. CONSIDERAŢII INTRODUCTIVE

14
CAP. 1. CONSIDERAŢII INTRODUCTIVE

Fig. 1.2_2. Configuraţia ecranului după încărcarea sistemului WINDOWS 95.

14
CAP. 1. CONSIDERAŢII INTRODUCTIVE

1
CONSIDERAŢII INTRODUCTIVE

1.1. Noţiuni fundamentale

Calculatorul este o maşină destinată procesării de date, înzestrată, în


acest sens, cu capabilităţi de a accepta, reţine, înţelege şi executa ordine
exprimate de utilizator printr-o succesiune de instrucţii conformă scopului
urmărit şi care constituie ceea ce se cheamă program.

Prin instrucţii se specifică operaţiile solicitate şi, când este cazul, se


desemnează, într-un anumit mod dintre mai multe posibile, datele de tratat şi
destinaţia rezultatelor.

Instrucţiile şi datele vizate de ele sunt construcţii literal-cifrice


sugestive, de tip lingvistic, deci cu o anumită sintaxă şi o anumită semantică.

Pentru ca instrucţiile şi datele să poată fi acceptate, reţinute, înţelese şi


tratate, forma lor literal-cifrică se transpune într-o formă fizică. Sub această
formă, instrucţiile şi datele se prezintă ca seturi de tensiuni electrice,
constituite potrivit unor convenţii de codificare.

În unul dintre standardele consacrate, s-a instituit convenţia ca aceste


tensiuni să poată lua fie o valoare în intervalul 0-0.4 V, fie o valoare în
intervalul 2.4-5 V, în timp ce orice alte valori sunt interzise.

O astfel de tensiune, cu două valori posibile, se asociază cu ceea ce se


cheamă bit.

Un bit este informaţia elementară, ireductibilă, caracterizată prin aceea că


surprinde una din două posibilităţi care sunt, una în raport cu cealaltă,
contradictorii şi complementare.

Corespunzător celor două posibilităţi, bitul ia valorile logice 0 sau 1, după


caz.
7
CAP. 1. CONSIDERAŢII INTRODUCTIVE

O informaţie oarecare, ce surprinde una din m posibilităţi se poate


reprezenta printr-un set de biţi de cardinal cel puţin egal cu log2 m.

Un set de n biţi se cheamă cod pe n biţi.

Codurile au, în contexte diferite, semnificaţii diferite. De exemplu,


0100 0001 reprezintă, uneori, litera “A”, alteori, numărul 65 în baza 10, iar
alteori, cu totul altceva.

Un set de 8 biţi se numeşte byte sau octet.

De obicei, codurile au lungimi care sunt puteri ale lui 2. Sunt uzuale
codurile pe 8, 16, 32, 64, 128, 256 biţi.

Multiplii bitului sunt:


1 Kbit = 210 biţi
1 Mbit = 220 biţi
1 Gbit = 230 biţi
etc.

Multiplii byte-ului sunt:


1 KByte = 210 Bytes
1 MByte = 220 Bytes
1 GByte = 230 Bytes
etc.

Reprezentarea fizică a bitului printr-o tensiune ce poate lua doar două


valori se bazează pe fenomenele de comutaţie -saturare / blocare- specifice
tranzistoarelor de toate tipurile. Exploatând aceste fenomene, s-au conceput
şi realizat circuite în comutaţie -numite şi circuite digitale sau circuite
numerice sau circuite logice-, ajunse actualmente la o diversitate extrem de
largă.

Cu ajutorul circuitelor digitale, se pot memora informaţii şi se pot efectua


operaţii logice şi matematice elementare sau complexe, precum şi operaţii de
diverse alte naturi, reductibile la primele.

Toate acestea au ca suport teoretic primar algebra booleeană şi aritmetica


sistemului de numeraţie binar.
8
CAP. 1. CONSIDERAŢII INTRODUCTIVE

Un calculator constă, din punct de vedere arhitectural, în:


• procesor;
• memorie;
• interfeţe;
• dispozitive de introducere a datelor;
• dispozitive de extragere a datelor;
• memorii externe.

Procesorul este partea unui calculator care are rolul de a implementa


sarcinile de comandă pe care le implică acceptarea, reţinerea, înţelegerea şi
executarea ordinelor –adică: execuţia de programe- şi de a efectua
prelucrările propriu-zise. Blocurile funcţionale ale unui procesor sunt:
• unitatea aritmetico-logică
• unitatea de comandă
• unitatea de registre

Unitatea aritmetico-logică este partea unui procesor care, aşa cum


numele său o sugerează, are în sarcină efectuarea operaţiilor aritmetice şi
logice. Alături de unitatea aritmetico-logică, în structura procesoarelor
există, uneori, un bloc funcţional care implementează operaţii matematice
mai complexe şi de mai bună rezoluţie şi precizie, numit coprocesor
matematic.

Unitatea de comandă este partea unui procesor care are în sarcină


generarea comenzilor interne şi externe necesare funcţionării calculatorului
în ansamblul său.

Unitatea de registre este partea unui procesor care reprezintă o memorie


de manevră, realizată pe acelaşi cip şi în aceeaşi tehnologie cu unitatea
aritmetico-logică şi cu unitatea de comandă şi, în consecinţă, la fel de rapidă
ca şi acestea, la care accesele se fac mult mai simplu şi eficient decât la
memoria propriu-zisă.

Memoria este partea unui calculator care are rolul de a păstra


informaţiile operative la un moment dat, adică: codurile programelor aflate
în rulare şi datele asupra cărora ele acţionează, respectiv pe care le produc.
Interfeţele sunt entităţi structural-funcţionale care au rolul de a asigura
schimbul de informaţii între procesor sau memorie, pe de o parte, şi

9
CAP. 1. CONSIDERAŢII INTRODUCTIVE

dispozitivele de introducere a datelor, dispozitivele de extragere a datelor,


respectiv memoriile externe, pe de altă parte.
Dispozitivele de introducere a datelor sunt entităţi
structural-funcţionale care au rolul de a intermedia transferul de informaţii
de la utilizator către calculator. Dispozitivele de introducere a datelor
cele mai uzuale sunt tastatura, mouse-ul, joy-stick-ul şi ecranul senzitiv.
Dispozitivele de extragere a datelor sunt entităţi structural-funcţionale
care au rolul de a intermedia transferul de informaţii de la calculator către
utilizator. Dispozitivele de extragere a datelor cele mai uzuale sunt
monitorul sau display-ul, imprimanta şi ploterul.
Memoriile externe sunt entităţi structural-funcţionale cu rolul de a păstra
informaţiile neoperative la un moment dat (a se vedea, mai sus, ce se
înţelege prin “informaţii operative”). Memoriile externe cele mai uzuale
sunt: unitatea de hard-disk, unitatea de dischete, unitatea de
compact-disk.
Dispozitivele de introducere a datelor, dispozitivele de extragere a datelor
şi memoriile externe sunt referite, generic, prin noţiunea de echipamente
periferice.

Într-o reprezentare arhitecturală, un calculator poate fi schematizat astfel:

Dispozitive de introducere I I
n Procesor n
a datelor
t t
e e Memorii
r r
externe
f f
e e
ţ ţ
Dispozitive de extragere Memorie
e e
a datelor

Fig. 1_1. Reprezentare arhitecturală a unui calculator.

Se precizează că, până nu demult, noţiunea de calculator subsuma doar


procesorul, memoria şi interfeţele, unii specialişti rămânând şi astăzi cu
10
CAP. 1. CONSIDERAŢII INTRODUCTIVE

această accepţiune asupra termenului. Noi opiniem că o asemenea abordare


nu mai este în acord cu starea de fapt la care s-a ajuns în domeniu sub aspect
constructiv, stare caracterizată prin aceea că cel puţin procesorul, memoria,
interfeţele şi memoriile externe sunt înglobate în aceeaşi carcasă, în timp ce
unele modele de calculatoare –ne referim la aşa-numitele lap-top-uri sau
note-book-uri- încorporează nu numai aceste entităţi, ci şi o tastatură, un
mouse (eventual şi un joy-stick) şi un display.

Trebuie spus că maşina aceasta numită calculator, deşi deloc simplă, nu ar


impresiona aşa cum o face, dacă nu ar funcţiona într-un sistem mai complex,
numit sistem de calcul, care cuprinde, alături de entităţile referite mai sus
–care, toate, au o natură materială, fizică- şi resurse de natură pur logică,
nepalpabile, reprezentând aşa-numitele programe de sistem.

Menirea programelor de sistem este, pe de o parte, aceea de a face ca


exploatarea părţii fizice, precum şi a lor însele să decurgă cât mai judicios şi
cât mai comod, iar pe de altă parte aceea de a conferi sistemului capabilităţi
în plus faţă de cele prezentate de partea fizică.

Cele mai importante programe de sistem sunt:


• editoarele de texte*);
• translatoarele de limbaj*);
• programele de bibliotecă*);
• editoarele de legături*);
• depanatoarele*);
• utilitarele;
• driver-ele de intrare-ieşire;
• sistemul de operare.

Editoarele de texte sunt programe cu ajutorul cărora se scriu textele


programelor, dar, posibil, şi texte oarecari. Prin acţiunea editoarelor de texte
se generează aşa-numitele fişiere-sursă, care conţin textele
programelor şi a căror denumire este, în partea sa numită "extensie",
specifică limbajului de programare utilizat (de exemplu: ".pas" –pentru
PASCAL, ".c" -pentru C, ".cpp" -pentru C++, etc.).

Translatoarele de limbaj sunt programe cu ajutorul cărora se efectuează


traducerea programelor utilizatorilor din limbajul de programare în care au
fost scrise, în limbajul maşinii numită calculator sau, altfel spus: în
cod-maşină. Există trei tipuri de translatoare de limbaj, denumite:
11
CAP. 1. CONSIDERAŢII INTRODUCTIVE

• compilatoare;
• asambloare;
• interpretoare;
Compilatoarele şi asambloarele sunt programe care la un apel al lor
traduc un întreg program sau modul de program şi, în final, generează
codul-maşină corespunzător, într-un fişier numit "fişier-obiect", al cărui
nume are extensia ".obj". Diferenţa dintre compilatoare şi asambloare rezidă
în faptul că primele traduc programe scrise în limbaje de nivel înalt, iar cele
din urmă –programe scrise în limbaj de asamblare.
Interpretoarele sunt programe care traduc o linie a unui program şi
introduc imediat în rulare codul-maşină rezultat, apoi trec la linia următoare
ş.a.m.d., fără ca în final să ofere codul-maşină al întregului program sau
modul de program, cum am văzut că fac compilatoarele şi asambloarele.
Rezultă, aşadar, că în cazul folosirii interpretoarelor, de fiecare dată când se
doreşte rularea unui program, se impune o nouă traducere şi că, inevitabil,
timpul necesar rulării programului este prelungit cu timpul de traducere.
Programele de bibliotecă sunt programe care pun la dispoziţia
utilizatorilor o serie de facilităţi, ce se adaugă celor pe care le prezintă
limbajele de programare înseşi.
Editoarele de legături sunt programe care au rolul de a interconecta
codul-obiect al programului utilizatorului, respectiv codurile-obiect ale
modulelor în care acesta consistă, cu coduri-obiect de programe de
bibliotecă, de driver-e de intrare-ieşire şi-sau de programe ţinând de sistemul
de operare, după caz, astfel încât ceea ce se obţine să reprezinte un program
executabil; acesta face obiectul unui fişier numit "fişier-executabil",
caracterizat prin aceea că poartă un nume cu extensia ".exe" sau, uneori,
".com".
Depanatoarele sunt programe cu ajutorul cărora se pun la dispoziţia
utilizatorilor o seamă de facilităţi de depanare a programelor: execuţie pas cu
pas, oprire la o anumită linie, vizualizarea/modificarea valorilor unor
variabile, etc.
Toate aceste programe -marcate cu *) în enumerarea de mai sus- sunt
integrate în aşa-numitele medii de dezvoltare a aplicaţiilor, cum sunt:
TURBO PASCAL, BORLAND PASCAL, TURBO C/C++, BORLAND
C/C++, VISUAL STUDIO, etc., fără, însă, ca, în cadrul acestora, să-şi
piardă identitatea.
12
CAP. 1. CONSIDERAŢII INTRODUCTIVE

Utilitarele sunt programe cu ajutorul cărora se efectuează operaţii cu un


grad ridicat de uzualitate, cum sunt: creerea, copierea, mutarea fişierelor, etc.
Driver-ele de intrare-ieşire sunt programe cu ajutorul cărora se realizează
introducerea, respectiv extragerea datelor, evident, într-o strânsă conlucrare
cu interfeţele de intrare-ieşire.
Sistemul de operare este un conglomerat de programe care au rolul
generic de a gestiona resursele sistemului, interpunându-se între acestea şi
utilizator. Metaforic, se poate spune că un sistem de operare joacă rol de
dirijor, orchestrând doleanţele utilizatorilor prin atribuirea de partituri
adecvate către diversele resurse ale calculatorului şi veghind la interpretarea
armonizată a respectivelor partituri, astfel încât scopurile pentru care s-a
apelat la calculator să devină atinse.

1.2. Acţiuni ce au loc la pornirea unui calculator


În general, la pornirea unui calculator, intră în rulare, în mod automat,
un program păstrat în partea nevolatilă (a se citi: care îşi păstrează conţinutul
intact şi în lipsa tensiunii de alimentare) a memoriei calculatorului,
instanţiată, de obicei, în varianta cunoscută sub numele “EPROM”, program
care are ca misiune identificarea configuraţiei în care se află calculatorul,
efectuarea de teste de bună funcţionare a principalelor entităţi componente,
încărcarea în memorie, de pe hard-disk, a componentelor sistemului de
operare şi lansarea acestuia în execuţie. O dată intrat în execuţie, sistemul
de operare se va îngriji ca tot ce se va întâmpla mai departe pe calculator să
fie sub controlul sau, cel puţin, cu consimţământul său. Astfel, el va asigura
afişarea meniurilor cu alternativele ce stau în fiecare moment când el este în
execuţie la dispoziţia utilizatorului, preluarea şi introducerea în fluxul de
procesare a informaţiilor specificate de utilizator cu ajutorul tastaturii,
mouse-ului, etc., lansarea în execuţie, după caz, a altor programe de sistem
-medii de programare, utilitare- sau a unor programe ale utilizatorului, etc.
În cazul punctual al calculatoarelor exploatate sub sistemul de operare
WINDOWS 95, la pornire se întâmplă următoarele lucruri:
A). SE INTRODUCE ÎN RULARE SISTEMUL DE PROGRAME
“BIOS” ŞI, CU AJUTORUL LUI:
• se identifică şi testează memoria, porturile, adaptorul video, tastatura,
unitatea de hard disk, unitatea de dischete, unitatea de CD-ROM;

13
CAP. 1. CONSIDERAŢII INTRODUCTIVE

• se identifică, introduc în configuraţie şi testează elementele tratabile


prin tehnica “plug and play”;
• se determină partiţia care conţine înregistrarea de startare principală,
referită prin abrevierea MBR (Master Boot Record), căutând-o mai
întâi pe dischetă, dacă unitatea de dischete conţine o dischetă, iar apoi,
dacă mai este cazul, pe hard-disk şi, eventual, pe CD-ROM;
• se încarcă înregistrarea MBR şi i se dă controlul;
B). SE INTRODUCE ÎN RULARE PROGRAMUL “IO.SYS” ŞI, CU
AJUTORUL LUI:
• se preiau din fişierul numit MSDOS.SYS -vezi figura 1.2_1- şi se
efectivizează parametrii procesului de “boot”-are;

v. fişierul fig.1.2.1&1.2.2.doc

Fig. 1.2_1. Conţinutul fişierului MSDOS.SYS

• se afişează mesajul “Starting Windows 95” şi se aşteaptă timp de


câteva secunde (uzual: două-trei) eventuala apăsare a unei taste
funcţionale, menită să dicteze modul de derulare, în continuare, a
procesului de iniţializare;

• se afişează conţinutul fişierului cu numele LOGO.SYS;


• se încarcă fişierul cu numele DRVSPACE.BIN, dacă este prezent
fişierul cu numele DRVSPACE.INI;
• se încarcă fişierul cu numele SYSTEM.DAT;

14
CAP. 1. CONSIDERAŢII INTRODUCTIVE

• se încarcă, dacă este cazul, un program de tipul “driver”, cu facilităţi


de dublă “buffer”-izare;
• se încarcă şi lansează în execuţie, atunci când există, fişierul
CONFIG.SYS;
• se încarcă şi lansează în execuţie, atunci când există, fişierul
AUTOEXEC.BAT;

C). SE INTRODUCE ÎN RULARE PROGRAMUL “WIN.COM” ŞI, CU


AJUTORUL LUI:
• se încarcă diverse driver-e (VMM32.VXD sau un altul solicitat prin
fişierul cu numele SYSTEM.INI) şi se iniţializează;
• se încarcă componentele de bază ale sistemului de operare, care sunt:
-“KERNEL”, constituită din fişierele KERNEL32.DLL şi
KERNEL.DLL, care asigură în principal: operaţiile de intrare-ieşire
asupra fişierelor, încărcarea şi lansarea în execuţie a programelor,
gestiunea memoriei;
-“USER”, constituită din fişierele USER32.DLL şi USER.DLL, care
manevrează intrările şi ieşirile utilizator (legate, spre exemplu, de:
tastatură, mouse, canalele de comunicaţii, etc.) şi furnizează însăşi
interfaţa WINDOWS;
-“GDI”, constituită din fişierele GDI32.DLL şi GDI.DLL, care
gestionează tot ce este grafic (GDI: Graphical Device Interface),
împreună cu interpretorul “Explorer” şi, dacă este cazul, cu suportul
de reţea;
• se execută toate programele din grupul “Start Up”;
• se execută programele din registry, în directorul cu numele:
Hkey_Local_Machine/Software/Microsoft/Windows/CurrentVersion
/RunOnce.

Uzual, în urma parcurgerii tuturor acestor paşi, se va ajunge ca ecranul să


arate aşa cum se ilustrează în figura 1.2_2, ca semn că sistemul de operare
este plenar în lucru, aşteptând ca utilizatorul să-şi facă cunoscute opţiunile.

15
v. fişierul fig.1.2.1&1.2.2.doc
CAP. 1. CONSIDERAŢII INTRODUCTIVE

Fig. 1.2_2. Configuraţia ecranului după încărcarea sistemului WINDOWS 95.

16
CAP2. DESPRE MEMORIE

2
DESPRE MEMORIE

În acest capitol, ne propunem să vorbim despre memoria calculatoarelor


doar atât cât este necesar pentru înţelegerea a ceea ce ea reprezintă, a
principiilor organizării interne şi a modului în care ea funcţionează la nivel
bloc. Şi toate acestea, pentru ca mai târziu, pe parcursul capitolului 6, să
existe premizele unei facile şi corecte înţelegeri a conlucrării dintre procesor
şi memorie, a funcţionalităţii ansamblului procesor-memorie şi, în definitiv, a
însăşi fenomenologiei computaţiei.

Memoria unui calculator trebuie percepută ca tabelă de locaţii asimilabile,


fiecare, câte unui registru pe 8 biţi şi având asociate, în mod injectiv,
informaţii de reperare cunoscute sub numele de adrese.

Deşi în calculatoarele actuale este obişnuit ca, în mod dinamic, după


necesităţi, memoriile să fie accesate fie la nivel de octet, fie la nivel de dublu-
octet, numit cuvânt, fie la nivel de cuadruplu-octet, numit cuvânt lung, şi
chiar la nivel mult mai extins, noi vom considera, simplificator, în
continuare, în acest capitol, cazul memoriilor capabile să opereze doar la
nivel de octet. În această ipoteză, o memorie se prezintă, la nivel bloc, ca
entitate prevăzută cu:
• 8 borne de intrare-ieşire –deci: bidirecţionale-, dedicate vehiculării
informaţiilor de scris în ea, respectiv citite din ea;
• 1 bornă de intrare de specificare a operaţiei ce se execută la un moment:
scriere, respectiv citire;
• log2 N borne de intrare de adresare, unde N reprezintă capacitatea
memoriei, adică: numărul de locaţii cu care memoria este înzestrată;
• 1 bornă de intrare de validare / invalidare;
• 1 bornă de ieşire de confirmare a efectuării complete a operaţiei ce a făcut
obiectul unei sesiuni de lucru la un moment dat.

17
CAP2. DESPRE MEMORIE

Cele 8 borne de intrare-ieşire, numite borne de date, se notează, de obicei,


cu D0-D7. Borna de specificare a operaţiei ce se execută la un moment
dat, numită bornă de citire-scriere, se notează cu R / W (abreviere de la
“read / write”). Borna de validare / invalidare, numită şi bornă de selecţie se
notează cu MRQ (abreviere de la “memory request”), iar bornele de
adresare, numite şi borne de adrese -cu A0-AX, unde X= log2 N -1. Borna
_____
de confirmare se notează cu ACK (abreviere de la “acknowledge”). Cu
aceste notaţii –precizăm: regăsibile mai mult sau mai puţin ca atare în
documentaţii, întrucât ele nu corespund decât întâmplător unor
procesoare concrete-, vom putea reprezenta o memorie aşa cum se arată
în figura 2_1.

D0-D7
N Bytes
 A0-AX
 ACK Fig. 2_1. Reprezentarea bloc
R / W MRQ a unei memorii.

Memoria efectuează o operaţie de citire sau de scriere, după caz, doar


atunci când semnalul de la intrarea MRQ are valoarea logică “0”; altfel, ea
îşi conservă conţinutul şi îşi ţine bornele D0-D7 în starea de înaltă impedanţă.

Când semnalul de la intrarea MRQ este “0”, dacă semnalul de la borna


R / W este “1”, atunci se execută o operaţie de citire din locaţia a cărei adresă
este stabilită la bornele A0-AX. Informaţia citită este oferită la bornele D0-D7
după un interval de timp numit “timp de acces”, măsurat începând din
momentul în care ultimul dintre semnalelele A0-AX, MRQ şi R / W ajunge
să fie stabil.

Când semnalul de la intrarea MRQ este “0”, dacă semnalul de la borna


R / W este “0”, atunci se execută o operaţie de scriere în locaţia a cărei adresă
este stabilită la bornele A0-AX, a informaţiei prezente la bornele D0-D7.
Scrierea se încheie la un anumit interval de timp după momentul în care
ultimul dintre semnalelele A0-AX, MRQ şi R / W ajunge să fie stabil.

18
CAP2. DESPRE MEMORIE

Atât în cazul citirii, cât şi în cazul scrierii, în final, se activează semnalul


______
ACK , ca semn, la citire, că datele citite au ajuns să fie disponibile la
bornele D0-D7, iar la scriere, că datele de scris sunt deja scrise. Semnalul
______
ACK este destinat procesorului (mai exact: unităţii de comandă a
procesorului), care se informează cu ajutorul lui cât trebuie să ţină activ
______
semnalul MRQ . La trecerea semnalului ACK la “0”, procesorul înţelege că
memoria şi-a încheiat ciclul ce i-a fost cerut şi o dezleagă temporar de sarcini,
trecând semnalul care a ţinut-o activă –este vorba despre MRQ - la “1”.

În figura 2_2, se prezintă schema unei memorii organizată şi capabilă să


opereze la nivel de octet -şi numai la nivel de octet- şi având capacitatea
de 64 KBytes. S-a presupus că această memorie este realizată cu ajutorul a 4
capsule de câte 16 KBytes fiecare, prevăzute –evident: pe lângă bornele de
alimentare- cu 14 borne de adrese (14 = log2(16K) = log2 (16*210) =
log2(24*210) = log2214), notate A0-A13, 8 borne de date, notate D0-D7, 1
bornă de citire-scriere, notată R / W şi 1 bornă de selecţie, notată CS
(abreviere de la “chip select”). Pentru ca cele 4 capsule să poată constitui o
unitate de memorie, a fost necesar ca ele să fie conectate bornă la bornă,
excepţie de la această regulă făcând bornele CS , care se conectează separat,
fiecare la câte o ieşire a circuisticii externe de decodificare a adreselor.

Circuistica externă de decodificare a adreselor va fi validă –adică: va


putea efectua decodificarea combinaţiei de valori logice prezente pe liniile
_______
A15 şi A14- doar în timp ce semnalul MRQ este “0”; valoarea “1” a
_______
semnalului MRQ face ca toate ieşirile circuisticii de decodificare să fie ţinute
_______
la valoarea lor inactivă, adică: la”1”. Când semnalul MRQ ia valoarea “0”,
una dintre ieşirile circuisticii de decodificare va comuta la “0”. Prin
consecinţă, una dintre cele patru capsule de memorie din figura 2_2, va
ajunge să fie selectată, procedând, după caz, la efectuarea unei operaţii de
citire sau a unei operaţii de scriere.

Câteva remarci se impun în privința decodificării adreselor. Să


presupunem că dispunem de un procesor cu capabilitatea de a adresa o
memorie de capacitate de până la N locații. Asta înseamnă că el dispune de
un număr de linii de adresare X=log2 N. Dacă memoria este realizată cu
capsule cu capacitatea de M locații, atunci, dintre cele X linii de adrese ale
procesorului, Y = log2 M vor fi decodificate în interiorul capsulelor, iar
diferența de X – Y, cele mai semnificative, începând cu cea de indice Y, vor
19
CAP2. DESPRE MEMORIE

fi decodificate în exteriorul capsulelor, printr-o circuistică externă de


decodificare cu X – Y intrări și 2X–Y ieșiri. Fiecare dintre aceste ieșiri va
selecta câte o capsulă de M locații. În exemplul din figura 2_2, avem:
➢ capacitatea de adresare a procesorului: 64 Klocații, deci: X = log2(64K) =
log2 (64*210) = log2(26*210) = log2216 = 16
➢ capacitatea unei capsule: 16 Klocații, deci: Y = log2(16K) = log2 (16*210)
= log2(24*210) = log2214 = 14
➢ numărul liniilor de adresare decodificate în interiorul capsulelor: Y = 14
(liniile A0 – A13)
➢ numărul liniilor de adresare decodificate în exteriorul capsulelor: X - Y =
16 - 14 = 2 (liniile A14 – A15)

D7-D0

D0 A0 D0 A0 D0 A0 D0 A0
D1 A1 D1 A1 D1 A1 D1 A1
D2 A2 D2 A2 D2 A2 D2 A2
D3 A3 D3 A3 D3 A3 D3 A3
D4 A4 D4 A4 D4 A4 D4 A4
...

...

...
...

D5 A5 D5 A5 D5 A5 D5 A5
D6 0 A6 D6 1 A6 D6 2 A6 D6 3 A6
D7 A7 D7 A7 D7 A7 D7 A7
...

...

...

...
A8 A8 A8 A8
A9 A9 A9 A9
A10 A10 A10 A10
A11 A11 A11 A11
_ ____ A12 _ ____ A12 _ ____ A12 _ ____ A12
R/W CS A13 R/W CS A13 R/W CS A13 R/W CS A13
R/W
A15-A0

A15 A14
A15=1, A14=1  3
A15=1, A14=0  2 Circuistică
de
A15=0, A14=1  1 decodificare
A15=0, A14=0  0
MRQ
+5 V

J Q J Q J Q

C B0 C B1 C B2
K K R Q K R Q
R Q

CLK

ACK
Fig. 2_2. Un exemplu de memorie.
Observaţii:
20
CAP2. DESPRE MEMORIE

În figura 2_2:
Capsula 0 conţine locaţiile de memorie cu adresele hexazecimale 0000-3FFF.
Capsula 1 conţine locaţiile de memorie cu adresele hexazecimale 4000-7FFF.
Capsula 2 conţine locaţiile de memorie cu adresele hexazecimale 8000-BFFF.
Capsula 3 conţine locaţiile de memorie cu adresele hexazecimale C000-FFFF.

Acest lucru devine evident dacă exprimăm adresele în binar:


Adresele
Capsula A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0


0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 F F F
4 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1


0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
7 F F F
8 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2


1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
B F F F
C 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
F F F F

În partea inferioară a schemei din figura 2_2, este prezentă circuistica de


______
generare a semnalului ACK , concepută în ipoteza că atât la citire cât şi la
scriere, memoria răspunde cererii procesorului în cel mult 1 ½ perioade ale
_______
semnalului de tact, de la trecerea semnalului MRQ la “0”. Evident, dacă
durata acestor operaţii ar fi mai mare de 2 ½ perioade ale semnalului de tact,
atunci celor trei bistabile ale schemei ar trebui să li se adauge şi altele,
conectate după aceeaşi logică. În figura 2_3, este redată cronograma
_______ ______
semnalelor MRQ şi ACK , pentru cazul considerat (cu linie întreruptă, se

21
CAP2. DESPRE MEMORIE

______
sugerează ce s-ar întâmpla dacă ACK ar fi luat de la primul bistabil,
respectiv de la al treilea bistabil).

CLK

MRQ

B0

B1

B2

ACK
______ ______
Fig. 2_3. Cronograma semnalelor MRQ şi ACK .

Până acum, s-a presupus că fiecare capsulă este organizată pe locații de 1


octet (8 biți / locație). Este, însă, posibil, ca organizarea internă a capsulelor
să fie pe locații de câte 1 bit, 2 biți sau 4 biți. Într-o asemenea situație, un
număr de 8 / K capsule, unde K = 1, 2 sau 4 vor fi conectate între ele bornă la
bornă, mai puțin bornele de date, care vor fi relaționate fiecare cu câte o linie
a magistralei de date. Putem afirma, deci, că, procedând așa cum s-a arătat, în
cele trei cazuri, cu 8, 4, respectiv 2 capsule, organizate pe 1 bit, 2 biți,
respectiv 4 biți se va constitui capsula echivalentă pe 8 biți. Figurile 2_3, 2_4,
respectiv 2_5 surprind acest lucru.

22
CAP2. DESPRE MEMORIE

D7-D0

D0 A0 D1 A0 D6 A0 D7 A0
A1 A1 A1 A1
A2 A2 A2 A2
A3 A3 A3 A3
A4 A4 A4 A4
Bitul 0 A5 Bitul 1 A5 Bitul 6 A5 Bitul 7 A5
al A6 al A6 al A6 al A6
capsulei A7 capsulei A7 ... capsulei A7 capsulei A7

...

...
...

...
echivalente A8 echivalente A8 echivalente A8 echivalente A8
pe 8 biți A9 pe 8 biți A9 pe 8 biți A9 pe 8 biți A9
A10 A10 A10 A10
A11 A11 A11 A11
_ ____ A12 _ ____ A12 _ ____ A12 _ ____ A12
R/W CS A13 R/W CS A13 R/W CS A13 R/W CS A13

CS
R/W
A13

...
...
...

...
...

A1
A0
Fig. 2_3. Capsula echivalentă de 16 Kbytes,
realizată cu 8 capsule de 16 Klocații de 1 bit per locație.

D7-D0

D0 A0 D2 A0 D4 A0 D6 A0
D1 A1 D3 A1 D5 A1 D7 A1
A2 A2 A2 A2
A3 A3 A3 A3
A4 A4 A4 A4
Biții A5 Biții A5 Biții A5 Biții A5
0 și 1 A6 2 și 3 A6 4 și 5 A6 6 și 7 A6
ai A7 ai A7 ai A7 ai A7
...
...
...

...

capsulei A8 capsulei A8 capsulei A8 capsulei A8


echivalente A9 echivalente A9 echivalente A9 echivalente A9
pe 8 biți A10 pe 8 biți A10 pe 8 biți A10 pe 8 biți A10
A11 A11 A11 A11
_ ____ A12 _ ____ A12 _ ____ A12 _ ____ A12
R/W CS A13 R/W CS A13 R/W CS A13 R/W CS A13

CS
R/W
A13
...

...
...

...
...

A1
A0
Fig. 2_5. Capsula echivalentă de 16 Kbytes,
realizată cu 4 capsule de 16 Klocații de 2 biți per locație.

D7-D0

23
CAP2. DESPRE MEMORIE

D0 A0 D4 A0
D1 A1 D5 A1
D2 A2 D6 A2
D3 A3 D7 A3
A4 A4
Biții A5 Biții A5
0-3 A6 4 - 7 A6
ai A7 ai A7
capsulei A8 capsulei A8
echivalente A9 echivalente A9
pe 8 biți A10 pe 8 biți A10
A11 A11
_ ____ A12 _ ____ A12
R/W CS A13 R/W CS A13

Fig. 2_5. Capsula echivalentă de 16 Kbytes,


realizată cu 2 capsule de 16 Klocații de 4 biți per locație.

Se precizează că memoria oricărui calculator cuprinde o parte exploatată


atât în regim de citire cât şi în regim de scriere, numită RAM –de la Random
Access Memory-, şi o parte exploatată doar în regim de citire, numită ROM –
de la Read Only Memory-. Este important de reţinut că memoria RAM
păstrează informaţiile memorate în ea intacte doar câtă vreme este alimentată
corespunzător, în timp ce memoria ROM îşi păstrează conţinutul intact şi în
lipsa tensiunii de alimentare. Se spune că memoria RAM este volatilă şi că
memoria ROM este nevolatilă.

În cazul calculatoarelor universale –a se citi: de uz nespecific-, partea de


memorie RAM este de departe majoritară. La aceste calculatoare, memoria de
tipul ROM conţine doar programul de boot-are, adică: un program introdus
implicit în rulare la pornire şi care are ca misiune identificarea configuraţiei
în care se află calculatorul, efectuarea de teste de bună funcţionare a
principalelor entităţi componente, încărcarea, de pe hard-disk, a
componentelor sistemului de operare şi lansarea în execuţie a sistemului
de operare. De asemenea, tot în memoria ROM, se obişnuieşte să se păstreze
şi driver-ele sau o parte a driver-elor de intrare ieşire. Celelalte programe –de
sistem sau de aplicaţie- se păstrează pe suporturile externe de memorare. De
aici, ele se încarcă doar temporar în memoria RAM, în vederea rulării.
Evident, când spunem că un program se află încărcat pentru rulare, înţelegem
că partea lui de cod se află în memorie şi că o anumită cantitate din memorie
este la dispoziţia sa pentru implementarea diverselor variabile şi pentru
anumite manevre.
24
CAP2. DESPRE MEMORIE

În cazul calculatoarelor dedicate unor aplicaţii –se au, aici, în vedere, în


primul rând, aşa-numitele “embedded systems”-, memoria este preponderent
de tip ROM. În ea se găseşte programul aferent aplicaţiei, programe conexe
acestuia şi, eventual, un minim de programe de sistem, iar memoria RAM
serveşte doar implementării variabilelor şi operaţiilor de manevră.
Există mai multe tipuri de memorie ROM:
• memoria ROM propriu-zisă
• memoria PROM
• memoria EPROM
• memoria EEPROM
Memoria ROM propriu-zisă se caracterizează prin aceea că este înscrisă
prin însuşi procesul său de fabricaţie, în mod imuabil.
Memoria PROM se caracterizează prin aceea că este înscrisă de utilizator,
printr-un proces specific, cu ajutorul unui dispozitiv dedicat, numit
“programator de PROM-uri” sau “arzător de PROM-uri”. O dată înscrisă, o
asemenea memorie nu mai acceptă nici un fel de modificare a conţinutului
său, putând, în continuare, fi doar citită. PROM vine de la Programmable
Read Only Memory.
Memoria EPROM se caracterizează prin aceea că este înscrisă de
utilizator, printr-un proces specific, cu ajutorul unui dispozitiv dedicat, numit
“programator de EPROM-uri”, după ce a fost pregătită pentru aceasta prin
iradiere cu raze ultraviolete. Iradierea are ca efect ştergerea memoriei, adică:
aducerea tuturor celulelor sale la “1”. O memorie EPROM concretă poate fi
ştearsă şi reprogramată de un număr de ori foarte ridicat, reprezentând o dată
de catalog a circuitului respectiv. EPROM vine de la Erasable
Programmable Read Only Memory.
Memoria EEPROM se caracterizează prin aceea că este înscrisă de
utilizator, printr-un proces specific, după ce a fost pregătită pentru aceasta
prin ştergere electrică; atât ştergerea, cât şi înscrierea memoriilor EEPROM
se pot face chiar în contextul circuistic în care ele sunt exploatate. O memorie
EEPROM concretă poate fi ştearsă şi reprogramată de un număr de ori foarte
ridicat, reprezentând o dată de catalog a circuitului respectiv. EEPROM vine
de la Electrical Erasable Programmable Read Only Memory.

25
CAP3. DESPRE INTERFEŢE

3
DESPRE INTERFEŢE

Aşa cum s-a precizat în capitolul 1, interfeţele din structura unui


calculator au rolul de a asigura schimbul de informaţii între procesor sau
memorie, pe de o parte şi dispozitivele de introducere a datelor,
dispozitivele de extragere a datelor, respectiv memoriile externe, pe de altă
parte.

O interfaţă constă în unul sau mai multe porturi şi, eventual, o circuistică
conexă, ce îndeplineşte funcţii de comandă locală.

Prin termenul de port se desemnează ansamblul format dintr-un registru -


dimensionat, de regulă, la 8 biţi- și o circuistică de comandă aferentă lui,
având rolul de a prelua date de la echipamentele periferice, respectiv de a
scoate date spre echipamentele periferice, precum şi de a materializa
diversele sarcini de comandă aferente transferului datelor.

Porturile dedicate preluării datelor de la echipamentele periferice se


numesc “porturi de intrare”.

Porturile dedicate scoaterii datelor spre echipamentele periferice se


numesc “porturi de ieşire” (evident, porturile folosite pentru materializarea
de sarcini de comandă sunt, inevitabil, fie de intrare, fie de ieşire).

În principiu, un port de intrare –vezi figura 3_1- este prevăzut cu:


• 8 borne de intrare dedicate preluării datelor de la echipamentul periferic,
numite “borne de intrare date” şi notate I0...I7;
• 1 bornă de intrare de comandă a scrierii în port a datelor prezente pe
liniile I0...I7, numită “bornă de scriere” şi notată EXTWR (abreviere de
la “external write”);
• 8 borne de ieşire dedicate transmiterii datelor spre procesor, numite
“borne de ieşire date” şi notate O0...O7;

25
CAP3. DESPRE INTERFEŢE

• 1 bornă de intrare de comandă a disponibilizării către procesor a datelor


înscrise în port, numită “bornă de citire” şi notată RD (abreviere de la
“read”);
• 1 bornă de ieşire de semnalare a faptului că în port există o dată înscrisă
şi încă necitită, numită “bornă de semnalare” şi notată IBF (abreviere de
la “input buffer full”);
• 1 bornă de intrare de validare/invalidare, numită “bornă de selecţie” şi
notată CE sau CS (abrevieri de la “chip enable”, respectiv “chip
select”).

O0 O1 O2 O3 O4 O5 O6 O7 RD
___
CE PORT DE INTRARE TIPIC IBF
_______
I0 I1 I2 I3 I4 I5 I6 I7 EXTWR

Fig. 3_1. Bornele clasice ale unui port de intrare.

Introducerea datelor în calculator cu ajutorul unui port de intrare tipic


este ilustrată prin cronograma din figura 3_2.
I0-I7 DATE STABILE
_______
EXTWR

IBF

CE

RD

Fig. 3_2. Cronograma semnalelor ce intervin la introducerea datelor


în calculator cu ajutorul unui port de intrare tipic.

Cronograma din figura 3_2 vrea să spună următoarele lucruri:


Când datele pe care perifericul trebuie să le introducă în calculator sunt
__________
stabile, are loc activarea de către periferic a semnalului EXTWR , prin
______
trecerea sa la nivel “0”. Valoarea activă a semnalului EXTWR determină
preluarea în port a datei prezente la bornele sale I0-I7. Buffer-ul portului
ajungând astfel plin, semnalul fanion IBF trece la “1”. Prin testarea acestui
semnal, procesorul află că o dată este pregătită pentru el în port şi execută o
operaţie de citire cu referire la el, preluând data prin bornele O0-O7, sub
____
comanda semnalului RD . Evident, în cadrul operației de citire, procesorul
26
CAP3. DESPRE INTERFEŢE

plasează pe magistrala de adrese adresa portului în cauză, adresă a cărei


____
decodificare conduce la activarea semnalului CE . La încheierea operaţiei de
citire, portul îşi va trece din nou semnalul IBF la “0”, făcând, astfel,
cunoscut, atât pentru procesor, cât şi pentru periferic, faptul că buffer-ul de
intrare este gol. Pentru a se evita pierderea de date prin suprascriere –
suprascrierea înseamnă preluarea în port a unei noi date înainte ca
precedenta să fi fost citită-, perifericul trebuie să nu activeze semnalul
______
EXTWR decât în timp ce semnalul IBF este la “0”. Pe de altă parte,
procesorul trebuie să nu citească portul decât în timp ce semnalul IBF este
la”1”, pentru că, altfel, va accesa fie o dată fără semnificaţie, stabilită în port
cu ocazia punerii sub tensiune, fie o dată care a fost deja citită.

În principiu, un port de ieşire –vezi figura 3_3- este prevăzut cu:

• 8 borne de intrare dedicate preluării datelor de la procesor, numite “borne


de intrare date” şi notate I0...I7;
• 1 bornă de intrare de comandă a scrierii în port a datelor prezente pe
liniile I0...I7, numită “bornă de scriere” şi notată WR (abreviere de la
“write”);
• 8 borne de ieşire dedicate transmiterii datelor spre echipamentul
periferic, numite “borne de ieşire date” şi notate O0...O7;
• 1 bornă de intrare de informare a portului asupra faptului că
echipamentul periferic a preluat datele înscrise în el, numită “bornă de
citire” şi notată EXTRD (abreviere de la “external read”);
• 1 bornă de ieşire de semnalare a faptului că în port există o dată înscrisă
______
şi încă necitită, numită “bornă de semnalare” şi notată OBF (abreviere
de la “output buffer full”);
• 1 bornă de intrare de validare/invalidare, numită “bornă de selecţie” şi
notată CE sau CS (abrevieri de la “chip enable”, respectiv “chip
select”).
I0 I1 I2 I3 I4 I5 I6 I7 WR
___ ____
CE PORT DE IEŞIRE TIPIC OBF
_______
O0 O1 O2 O3 O4 O5 O6 O7 EXTRD

Fig. 3_3. Bornele clasice ale unui port de ieşire.


Extragerea datelor din calculator cu ajutorul unui port de ieşire tipic este
ilustrată prin cronograma din figura 3_4.
27
CAP3. DESPRE INTERFEŢE

Cronograma din figura 3_4 vrea să spună următoarele lucruri:


Când procesorul vrea să scoată o dată spre periferic, execută o operaţie
____
de scriere cu referire la port, ceea ce provoacă activarea semnalului WR ,
prin trecerea sa la “0”. Evident, în cadrul operației de scriere, procesorul va
plasa pe magistrala de adrese adresa portului în cauză, adresă a cărei
____
decodificare va conduce la activarea semnalului CE . Valoarea activă a
____
semnalului WR determină preluarea în port a datei prezente la bornele sale
______
I0-I7. Buffer-ul portului ajungând astfel plin, semnalul fanion OBF trece la
“0”. Prin testarea acestui semnal, perifericul află că o dată este pregătită
pentru el în port şi execută o operaţie de citire, preluând data prin bornele
______
O0-O7, sub comanda semnalului EXTRD . La încheierea operaţiei de citire,
______
portul îşi va trece din nou semnalul OBF la “1”, făcând, astfel, cunoscut,
atât pentru procesor, cât şi pentru periferic, faptul că buffer-ul de ieşire este
gol. Pentru a se evita pierderea de date prin suprascriere, procesorul trebuie
______
să nu scrie în port decât în timp ce semnalul OBF este la “1”. Pe de altă
parte, perifericul trebuie să nu citească portul decât în timp ce semnalul
______
OBF este la ”0”, pentru că, altfel, va accesa fie o dată fără semnificaţie,
stabilită în port cu ocazia punerii sub tensiune, fie o dată care a fost deja
citită.
I0-I7 DATE STABILE

CE

WR

OBF
________
EXTRD

Fig. 3_4. Cronograma semnalelor ce intervin la extragerea datelor


din calculator cu ajutorul unui port de ieşire tipic.

Se precizează că bornele de ieşire date ale porturilor de intrare sunt


ţinute, în cea mai mare parte a timpului, în starea de înaltă impedanţă, fiind
activate doar în timp ce un astfel de port este citit efectiv de către procesor,
adică: în timp ce atât semnalul CE , cât şi semnalul RD sunt active. De
asemenea, se menţionează că semnalele RD şi WR au efecte doar în timp ce

28
CAP3. DESPRE INTERFEŢE

portul este validat de semnalul CE , în timp ce semnalele EXTRD şi


EXTWR nu sunt legate de semnalul de validare / invalidare.

Ca şi locaţiile de memorie, porturile au asociate adrese. Adresele de


porturi pot fi parte a unui spaţiu unic de adrese la nivelul calculatorului,
alături de adresele de locaţii de memorie sau pot constitui un spaţiu de
adrese distinct, complementar spaţiului de adrese de locaţii de memorie. Din
considerente didactice, vom merge pe varianta din urmă, adică: vom
presupune că se dispune de un spaţiu de adrese de locaţii de memorie, având
ca “martor” semnalul MRQ , şi de un spaţiu de adrese de porturi, având ca
“martor” un semnal numit IORQ . O adresă de o anumită valoare se referă,
la un moment, la o locaţie de memorie sau la un port, după cum în acel
moment este activ semnalul MRQ sau, dimpotrivă, semnalul IORQ . Dacă
nici unul dintre aceste semnale nu este activ, atunci codul prezent la bornele
de adrese nu reprezintă o adresă –de fapt, nu are nicio semnificație-şi, în
consecinţă, el nu trebuie să conducă nici la selecţia unei locaţii de memorie
şi nici la selecţia unui port. Acest lucru se asigură decodificând adresele
condiţionat de semnalele MRQ , respectiv IORQ .

Porturile se introduc în schemele calculatoarelor conectând între ele,


bornă la bornă, bornele de ieşire date ale porturilor de intrare, bornele de
intrare date ale porturilor de ieşire şi bornele de intrare-ieşire date ale
memoriei. Conectarea nu trebuie înţeleasă obligatoriu directă, ci posibil prin
intermediul unor circuite tampon.

29
CAP3. DESPRE INTERFEŢE

30
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4
DESPRE PROCESOR. UNITATEA
ARITMETICO-LOGICĂ

4.1. Reprezentarea numerelor în calculator

4.1.1. Reprezentarea numerelor în virgulă fixă

4.1.1.1. Reprezentarea numerelor pozitive

Într-un sistem de numeraţie de bază r, un număr K se exprimă prin


notaţia:
~
K = cn−1cn−2 ...c1c0 .c−1 ...c−( m−1) c−m , 0  ci  r (4.1.1.1-1)

şi are valoarea:
−m
K = c n −1  r n −1 −1
+ ... + c1  r + c0 + c −1  r + ... + c −m  r −m
= c
i = n −1
i  ri (4.1.1.1-2)

Se spune că notaţia (1) este poziţională, deoarece fiecare cifră intervine


în valoarea numărului cu o pondere dată de poziţia sa (“ri” pentru cifra
din poziţia “i”, valoarea indicilor de poziție crescând de la dreapta spre
stânga, de la -m, la n-1, -m fiind indicele cifrei cea mai îndepărtată spre
dreapta de virgula separatoare între partea întreagă și partea fracționară, iar
n-1 indicele cifrei cea mai îndepărtată spre stânga de virgula separatoare
între partea întreagă și partea fracționară).
Întrucât în calculatoare se lucrează în baza 2, în continuare, vom
considera r=2.
Fie:
~
K ' = cn−1cn−2 ...c1c0 . (4.1.1.1-3)
semnul “.” nu se mai scrie, fiind subînţeles
31
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

 K  = cn −1  2n −1 + cn − 2  2n − 2 +  + c1  21 + c0 (4.1.1.1-4)

K ' = 2(cn −1  2n − 2 + cn − 2  2n −3 + ... + c1 ) + c0 (4.1.1.1-5)



K1'
(
  
)
K1 = 2 cn −1  2n −3 + cn − 2  2n − 4 +  + c2 + c1 (4.1.1.1-6)
K 2

..............................................................

K n' −3 = 2(cn −1  2 + cn − 2 ) + cn −3 (4.1.1.1-7)


 
K n' − 2
K n' − 2 = 2(cn −1 ) + cn − 2 (4.1.1.1-8)

K n' −1
K n' −1 = 2(0) + cn −1 (4.1.1.1-9)

Aşadar, cifrele binare ale unui număr pozitiv întreg se pot obţine prin
împărţiri succesive la 2 ale numărului în cauză, respectiv ale câturilor, până
se ajunge la cât nul, ele -cifrele- fiind resturi în aceste împărţiri.

Exemplu:
K  = 42 :
C0

42:2=21 rest 0  42=2·21+0


21:2=10 rest 1  21=2·10+1
10:2= 5 rest 0  10=2·5+0
5:2 = 2 rest 1  5=2·2+1
2:2 = 1 rest 0  2=2·1+0
1:2 = 0 rest 1  1=2·0+1
C5

 4210=1010102

Se precizează că numărul cifrelor binare necesare reprezentării unui


număr “a” pozitiv întreg este:

n = min i i  log 2 a
iN

32
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Fie:
~
K '' = .c−1 ...c−( m−1) c−m (4.1.1.1-10)

K  = c−1  2−1 + c− 2  2−2 +  + c− ( m −1)  2−( m −1) + c− m  2− m (4.1.1.1-11)

Prin înmulţiri succesive cu 2 ale numărului iniţial şi ale părţilor


fracţionare ale produselor, rezultă:

K   2 = c−1 + c− 2  2−1 +  + c− ( m −1)  2− ( m − 2) + c− m  2− ( m −1) (4.1.1.1-12)


 
K1 

K1  2 = c− 2 + c−3  2−1 +  + c− ( m −1)  2−( m −3) + c− m  2− ( m − 2) (4.1.1.1-13)


 
K 2
..................................................................................
K m − 2  2 = c− ( m −1) + c− m  2−1 (4.1.1.1-14)
 
K m −1

K m −1  2 = c− m (4.1.1.1-15)

Aşadar, cifrele binare ale unui număr pozitiv fracţionar se pot obţine
prin înmulţiri succesive cu 2 ale numărului în cauză, respectiv ale părţilor
fracţionare ale produselor, ele –cifrele- fiind părţile întregi ale produselor;
înmulţirile se efectuează până la determinarea unui număr satisfăcător de
cifre.

Exemple:
1). K  = 0.8125 2). K  = 0.8124
c-1 c-1
0.8125·2=1+0.625 0.8124·2=1+0.6248
0.625·2=1+0.25 0.6248·2=1+0.2496
0.25·2=0+0.5 0.2496·2=0+0.4992
0.5·2=1+0.0 0.4992·2=0+0.9984
0.9984·2=1+0.9968
c-4
c-5
 0.812510=0.11012  0.812410=0.11001...2

33
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Cifrele binare ale unui număr pozitiv format din parte întreagă şi parte
fracţionară se determină aplicând regulile de mai sus pentru cele două părţi.
Exemplu:
42.8125=42+0.8125=1010102+0.11012=101010.11012

4.1.1.2. Reprezentarea numerelor de orice semn

4.1.1.2.1. Reprezentarea prin semn-mărime

În reprezentarea semn-mărime, numerele dintr-un interval oarecare,


(-M, +M) se reprezintă prin numere imagine din intervalul [0, 2), după
următoarea lege de corespondență:

x
 M  ( 0;1 ), daca x  0

 x
sm( x ) = 1 +  ( 1;2 ), daca x  0 (4.1.1.2.1-1)
 M
0 sau 1 daca x = 0


Evident, legea de mai sus ne spune că numerele pozitive se reprezintă
prin numere din intervalul (0; 1), iar numerele negative, prin numere din
intervalul (1; 2), în timp ce numărul zero are o dublă imagine, pe zero,
respectiv pe unu:
-M 0 +M
 

 
 

0 1 2

Așadar, dacă notăm cu A un număr oarecare şi a reprezentarea sa în


semn-mărime, atunci, dacă:
~
A = cn−1...c0 .c−1...c−m (4.1.1.2.1-2)

34
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

rezultă:
a~ = a0 .a−1...a− ( m + n) (4.1.1.2.1-3)
Semnul “.” nu se reprezintă în calculator prin nimic,
el fiind considerat în mod implicit

unde:
0, daca A  0
• a0=  (4.1.1.2.1-4)
1, daca A  0

• a−i = cn−i , i = 1...m + n (4.1.1.2.1-5)

Lungimea de cod a reprezentării semn-mărime este dată de relaţia:

2M
lc _ sm = log2 (4.1.1.2.1-6)
r
unde:
r: rezoluţia cu care se iau în considerare numerele de reprezentat în
intervalul (-M; M).

Observaţie:
Atât M, cât şi r, sunt, în practică, puteri ale lui 2.
Tabelele din figurile 4.1.1.2.1_1 şi 4.1.1.2.1_2 exemplifică
reprezentarea numerelor în semn mărime în ipotezele:
• (-M; M)=(-2; 2)
• r=0.25
respectiv:
• (-M; M)=(-8; 8)
• r=1
Numărul -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0 0.25 0.50 0.75 1.00 1.25 1.50 1.75
de
reprezentat
Codul 1111 1110 1101 1100 1011 1010 1001 0000 0001 0010 0011 0100 0101 0110 0111
semn- 1000
mărime
Valoarea 1.875 1.750 1.625 1.500 1.375 1.250 1.125 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875
codului 1.000
semn-
mărime

Fig. 4.1.1.2.1_1. Reprezentarea în semn-mărime a numerelor din intervalul (-2; 2),


considerate cu rezoluţia 0.25.
35
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Numărul -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
de
reprezentat
Codul 1111 1110 1101 1100 1011 1010 1001 0000 0001 0010 0011 0100 0101 0110 0111
semn- 1000
mărime
Valoarea 1.875 1.750 1.625 1.500 1.375 1.250 1.125 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875
codului 1.000
semn-
mărime

Fig. 4.1.1.2.1_2. Reprezentarea în semn-mărime a numerelor din intervalul (-8; 8),


considerate cu rezoluţia 1.

Evident, valoarea unui număr x al cărui cod în semn-mărime este


sm(x) va fi dată de expresiile:
M  sm(x), daca sm(x)  ( 0;1 )

x = − M  (sm(x) − 1 ), daca sm(x)  ( 1;2 ) (4.1.1.2.1-7)
0, daca sm( x )  { 0;1 }

Avantajele reprezentării numerelor în semn mărime rezidă în faptul


că ea permite efectuarea facilă a operaţiilor de înmulţire şi împărţire.
Dezavantajele reprezentării numerelor în semn mărime sunt:
• necesită tratarea specifică a biţilor de semn în cazul operaţiilor de
adunare şi scădere (la înmulţire şi împărţire nici nu se poate altfel, în
nici una dintre reprezentări);
• dedică două coduri pentru numărul 0: 0.0...0, respectiv 1.0...0, ceea
ce face ca valorile reprezentabile cu ajutorul ei să fie cuprinse în
intervalul (-M; M) şi nu [-M; M), cum ar fi de dorit să se întâmple

4.1.1.2.2. Reprezentarea prin complement de unu

În reprezentarea prin complement de unu, numerele dintr-un interval


oarecare, (-M, +M) se reprezintă prin numere imagine din intervalul [0, 2),
după următoarea lege de corespondență:

36
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

x
 M  ( 0;1 ), daca x  0

 x
c1( x ) = 2 − 2− n −  [ 1; 2 − 2− n ), daca x  0 (4.1.1.2.1-1)
 M
0 sau 2 − 2− n , daca x = 0


Evident, legea de mai sus ne spune că, la fel ca în cazul reprezentării în
semn-mărime, numerele pozitive se reprezintă prin numere din intervalul
(0; 1), iar numerele negative, prin numere din intervalul (1; 2); numărul
zero are și în acest caz o dublă imagine, de data aceasta, pe zero, respectiv
pe 2 – 2-n:
-M 0 +M
 

 
 

0 1 2

Așadar, dacă notăm cu A un număr oarecare şi a reprezentarea sa în


complement de unu, atunci, dacă:
~
A = cn−1...c0 .c−1...c−m (4.1.1.2.1-2)

rezultă:
a~ = a0 . a−1...a−( m + n) (4.1.1.2.2-3)
Semnul “.” nu se reprezintă în calculator prin nimic,
el fiind considerat în mod implicit

unde:
0, daca A  0
• a0=  (4.1.1.2.2-4)
1, daca A  0

cn−i , daca A  0
• a−i =  , i = 1...m + n (4.1.1.2.2-5)
cn−i , daca A  0, unde cn−i = NOT (cn−i )

37
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Aşadar, numerele pozitive se reprezintă în complement de unu exact


ca şi prin semn-mărime. Numerele negative au bitul de semn ca în cazul
reprezentării semn-mărime, iar ceilalţi biţi –valori complementare în
raport cu acest caz.
Lungimea de cod a reprezentării complement de unu este dată de
relaţia:
2M
lc _ c1 = log2 (4.1.1.2.2-6)
r
unde:
r: rezoluţia cu care se iau în considerare numerele de reprezentat în
intervalul (-M; M).

Tabelele din figurile 4.1.1.2.2_1 şi 4.1.1.2.2_2 exemplifică


reprezentarea numerelor în complement de unu, în ipotezele:
• (-M; M)=(-2; 2)
• r=0.25
respectiv:
• (-M; M)=(-8; 8)
• r=1
Numărul -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0 0.25 0.50 0.75 1.00 1.25 1.50 1.75
de
reprezentat
Codul 1000 1001 1010 1011 1100 1101 1110 0000 0001 0010 0011 0100 0101 0110 0111
complement 1111
de unu
Valoarea 1.000 1.125 1.250 1.375 1.500 1.625 1.750 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875
codului 1.875
complement
de unu

Fig. 4.1.1.2.2_1. Reprezentarea în complement de unu a numerelor din intervalul (-2; 2),
considerate cu rezoluţia 0.25.
Numărul -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
de
reprezentat
Codul 1000 1001 1010 1011 1100 1101 1110 0000 0001 0010 0011 0100 0101 0110 0111
complement 1111
de unu
Valoarea 1.000 1.125 1.250 1.375 1.500 1.625 1.750 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875
codului 1.875
complement
de unu

Fig. 4.1.1.2.2_2. Reprezentarea în complement de unu a numerelor din intervalul (-8; 8),
considerate cu rezoluţia 1.
38
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Evident, valoarea unui număr x al cărui cod în complement de unu


este c1(x) va fi dată de expresiile:

M  c1(x), daca c1(x)  ( 0;1 )



x = − M  ( 2 − 2− n − c1(x)), daca c1(x)  ( 1; 2 − 2− n ) (4.1.1.2.2-7)
 −n
0, daca c1( x )  { 0; 2 − 2 }

Se demonstrează că în reprezentarea complement de unu, suma a


două numere se poate obţine în doi paşi, astfel:
• în primul pas, se adună între ei complemenţii de unu ai celor două
numere, într-un proces în care biţii de semn sunt trataţi exact ca
oricare alţii
• în al doilea pas, se adună la suma obţinută în pasul unu, în poziţia cea
mai puţin semnificativă, transportul rezultat în respectivul pas unu,
transport ce, evident, poate fi fie 1, fie 0.

Exemple:
Fie:
(-M; M)=(-8; 8), r=1

Rezultă:
lc_c1 = 4 şi n = 3

Fie:
1). a= -1, b= -5
Se va avea:
a = -110 = -0012 = 1001sm = 1110c1
b = -510 = -1012 = 1101sm = 1010c1
1110+
1010
11000+
1
1001
cu:

1001c1 = -610

39
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

2). a= 1, b= 5

Se va avea:
a = 110 = 0012 = 0001sm = 0001c1
b = 510 = 1012 = 0101sm = 0101c1

0001+
0101
00110+
0
0110
cu:

0110c1 = 610

Avantajele reprezentării numerelor în complement de unu sunt:


• permite efectuarea adunării prin introducerea în calcule a biţilor de
semn în mod nedistinctiv faţă de restul biţilor
• permite înlocuirea scăderii prin adunarea la descăzut a
complementului de unu al opusului scăzătorului; de reţinut că:
dacă ~
x c1 = x0 .x−1...x− p , atunci pentru y = -x, se va avea:
y c1 = y0 . y−1... y− p , cu y−i = x−i , i = 0... p ; aşadar: dacă scăzătorul, în
~

complement de unu, este 0011 (adică: +3), atunci numărul ce se va


aduna la descăzut pentru realizarea scăderii va fi 1100 (adică: -3), iar
dacă scăzătorul, în complement de unu, este 1100 (adică: -3), atunci
numărul ce se va aduna la descăzut pentru realizarea scăderii va fi
0011 (adică: +3)

Dezavantajele reprezentării numerelor în complement de unu sunt:


• dedică două coduri pentru numărul 0: 0.0...0, respectiv 1.1...1, ceea
ce face ca valorile reprezentabile cu ajutorul ei să fie cuprinse în
intervalul (-M; M) şi nu [-M; M), cum se întâmplă în cazul altor
reprezentări
• face dificilă execuţia operaţiilor de înmulţire şi împărţire
• necesită parcurgerea a doi paşi pentru efectuarea operaţiei de
adunare, ceea ce conduce la dublarea timpului de adunare, în raport
cu alte reprezentări

40
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.1.1.2.3. Reprezentarea prin complement de doi


În reprezentarea prin complement de doi, numerele dintr-un interval
oarecare, (-M, +M) se reprezintă prin numere imagine din intervalul [0, 2),
după următoarea lege de corespondență:
x
 M  ( 0;1 ), daca x  0

 x
c 2( x) = 2-  [ 1;2 ), daca x  0 (4.1.1.2.3-1)
 M
0, daca x = 0


Evident, legea de mai sus ne spune că, la fel ca în cazul reprezentării în
semn-mărime și în complement de 1, numerele pozitive se reprezintă prin
numere din intervalul (0; 1). Numerele negative, însă, se reprezintă prin
numere din intervalul [1; 2) și nu (1; 2), iar numărul zero are o singură
imagine, pe zero însuși:
-M 0 +M
 

 
 

0 1 2

Așadar, dacă notăm cu A un număr oarecare şi a reprezentarea sa în


complement de unu, atunci, dacă:
~
A =  cn −1  c0 .c−1  c− m (4.1.1.2.3-2)
rezultă:
_________________
a~ = a0 . a−1...a−( m+n ) (4.1.1.2.3-3)
semnul “.” nu se reprezintă în calculator prin nimic,
el fiind considerat în mod implicit
unde:
0, daca A  0
• a0=  (4.1.1.2.3-4)
1, daca A  0

41
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

cn−i , daca A  0 sau daca j  i  cn− j = 0


• a−i =  , i = 1...m + n
cn−i , daca A  0 si j  i cn− j  0, unde cn−i = NOT (cn−i )
(4.1.1.2.3-5)

Aşadar, numerele pozitive se reprezintă în complement de doi exact


ca şi în semn-mărime, respectiv ca şi în complement de unu. Numerele
negative au bitul de semn şi biţii situaţi în dreapta celui mai din
dreapta bit nenul, precum şi pe acesta însuşi, la fel ca în cazul
reprezentării semn-mărime, iar ceilalţi biţi –ne referim, evident, la biții
de mărime–, valori complementare în raport cu acest caz. Bitul de semn
va fi 1 și în reprezentarea în complement de 2, la fel ca și în semn-
mărime și în complement de 1.

Lungimea de cod a reprezentării complement de doi este dată de


relaţia:
2M
lc _ c2 = log 2 (4.1.1.2.3-6)
r
unde:
r: rezoluţia cu care se iau în considerare numerele de reprezentat în
intervalul [-M; M).

Evident, numărul cifrelor binare din dreapta bitului dedicat semnului


este n:
n=lc_c2-1, (4.1.1.2.3-7)

Tabelele din figurile 4.1.1.2.3_1 şi 4.1.1.2.3_2 exemplifică


reprezentarea numerelor în complement de doi, în ipotezele:
• [-M; M)=[-2; 2)
• r=0.25
respectiv:
• [-M; M)=[-8; 8)
• r=1

42
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Numărul -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0 0.25 0.50 0.75 1.00 1.25 1.50 1.75
de
reprezentat
Codul 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111
complement
de doi
Valoarea 1.000 1.125 1.250 1.375 1.500 1.625 1.750 1.875 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875
codului
complement
de doi

Fig. 4.1.1.2.3_1. Reprezentarea în complement de doi a numerelor din intervalul [-2; 2),
considerate cu rezoluţia 0.25.

Numărul -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
de
reprezentat
Codul 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111
complement
de doi
Valoarea 1.000 1.125 1.250 1.375 1.500 1.625 1.750 1.875 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875
codului
complement
de doi

Fig. 4.1.1.2.3_2. Reprezentarea în complement de doi a numerelor din intervalul [-8; 8),
considerate cu rezoluţia 1.

Evident, valoarea unui număr x al cărui cod în complement de doi


este c2(x) va fi dată de expresiile:

M  c 2( x), daca c 2( x)  (0;1)



x = − M  (2 − c 2( x)), daca c 2( x)  [1;2) (4.1.1.2.3-8)
0, daca c2( x) = 0

Se demonstrează că în reprezentarea complement de doi, suma a
două numere se poate obţine într-un singur pas, adunând între ei
complemenţii de doi ai celor două numere, într-un proces în care biţii de
semn sunt trataţi exact ca oricare alţii.
Facem convenţia de a nota cu litere minuscule numerele de
reprezentat şi cu litere majuscule imaginile lor în reprezentarea în
complement de doi:
c2
x  [−M ; M ) ⎯ → X  [0;2) (4.1.1.2.3-9)

43
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Fie a [-M; M) şi b [-M; M) două numere cu proprietatea că:


a+b  [-M; M) (4.1.1.2.3-10)
şi A şi B imaginile lor prin c2.
Atunci:
 A + B, daca A + B  [ 0;2 )
C=
 A + B − 2, daca A + B  [ 2;4 ) (4.1.1.2.3-11)
are proprietatea că:
c2 c
C ⎯⎯
(4.1.1.2.3-12)
unde:
c=a+b (4.1.1.2.3-13)
Într-adevăr:
i). dacă a  0 şi b  0 atunci, evident, a+b 0 şi rezultă:
a b a+b
c 2(a) + c 2(b) = + = = c 2(a + b) (4.1.1.2.3-14)
M M M

ii). dacă a  0 şi b < 0, cu a b, atunci, evident, a+b 0 şi rezultă:


prin ignorarea
termenului "2"
a b a− b   a− b
c 2(a) + c 2(b) = +2− = 2+ = = c 2(a + b) (4.1.1.2.3-15)
M M M M

iii). dacă a  0 şi b < 0, cu a <b, atunci, evident, a+b< 0 şi rezultă:


a b b −a
c 2(a) + c 2(b) = +2− = 2− = c 2(a + b) (4.1.1.2.3-16)
M M M

iv). dacă a < 0 şi b  0, cu ba, atunci, evident, a+b 0 şi rezultă:


prin ignorarea
termenului "2"
a b b− a   b− a
c 2(a) + c 2(b) = 2 − + = 2+ = = c 2(a + b) (4.1.1.2.3-17)
M M M M

v). dacă a < 0 şi b  0, cu a b, atunci, evident, a+b< 0 şi rezultă:


a b a −b
c 2(a) + c 2(b) = 2 − + = 2− = c 2(a + b) (4.1.1.2.3-18)
M M M

44
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

vi). dacă a < 0 şi b < 0, atunci, evident, a+b< 0 şi rezultă:


prin ignorarea
unui termen "2"
a b 
  a+b
c 2(a) + c 2(b) = 2 − +2− = 2− = c 2(a + b) (4.1.1.2.3-19)
M M M

Observaţie:
Ignorarea termenilor de valoare “2” înseamnă, în practică,
neglijarea transportului generat în procesul de adunare din rangul
20 către rangul 21.

Exemple:
Fie:
[-M; M)=[-8; 8), r=1
Rezultă:
lc_c2 = 4 şi n = 3
Fie:
1). a= -1, b= -5
Se va avea:
a = -110 = -0012 = 1001sm = 1111c2
b = -510 = -1012 = 1101sm = 1011c2
1111+
1011
11010
se pierde
cu:
1010c2 = -610
2). a= 1, b= 5
Se va avea:
a = 110 = 0012 = 0001sm = 0001c2
b = 510 = 1012 = 0101sm = 0101c2
0001+
0101
00110
cu:
0110c2 = 610

45
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Avantajele reprezentării numerelor în complement de doi sunt:


• permite efectuarea adunării prin introducerea în calcule a biţilor de
semn în mod nedistinctiv faţă de restul biţilor
• permite înlocuirea scăderii prin adunarea la descăzut a
complementului de doi al opusului scăzătorului; de reţinut că:
dacă ~
x c 2 = x0 .x−1...x− p , atunci pentru y = -x, se va avea:
 x−i , dacă j  i  x− j = 0
~
y c 2 = y0 . y−1... y− p , cu y −i =  , i = 0... p ;
 x−i , dacă j  i x− j  0
aşadar: dacă scăzătorul, în complement de doi, este 0110 (adică: +6),
atunci numărul ce se va aduna la descăzut pentru realizarea scăderii
va fi 1010 (adică: -6, în complement de 2), iar dacă scăzătorul, în
complement de doi, este 1010 (adică: -6), atunci numărul ce se va
aduna la descăzut pentru realizarea scăderii va fi 0110 (adică: +6)
• numărul 0 are dedicat un singur cod: 0.0...0, ceea ce face ca valorile
reprezentabile cu ajutorul ei să fie cuprinse în intervalul [-M; M) şi
nu doar (-M; M), cum se întâmplă în cazul altor reprezentări
Dezavantajele reprezentării numerelor în complement de doi sunt:
• face execuţia operaţiilor de înmulţire şi împărţire mai dificilă decât în
cazul reprezentării semn-mărime, dar, oricum, acceptabilă

4.1.2. Reprezentarea numerelor în virgulă flotantă


4.1.2.1. Principii
Reprezentarea numerelor în virgulă fixă nu dă satisfacţie în privinţa
rezoluţiei şi preciziei, atunci când numerele variază în intervale largi. În
astfel de cazuri, trebuie folosită aşa-numita reprezentare în virgulă
flotantă. În această reprezentare, un număr R se reprezintă printr-o
mantisă, MT, şi un exponent, E, stabilite astfel încât:
R=MT·BE,
B fiind baza sistemului de reprezentare. În domeniul calculatoarelor,
baza se alege 2, sau, în orice caz, o putere a lui 2. Se precizează că ea nu
trebuie să apară explicit la nivel de circuite, ci poate fi -şi aşa şi este-
subînţeleasă.
Există mai multe convenții de reprezentare a numerelor în virgulă
flotantă. Cea mai răspândită -și doar la prezentarea ei ne vom limita-
46
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

este cea introdusă de IEEE (Institute of Electronical and Electrical


Engineers) în anul 1985, sub numele IEEE 754. Ea are variante pe 16,
32, 64 şi 80 biţi

Înainte de a prezenta reprezentarea IEEE 754, se impun câteva


precizări privind exponentul, în general, în reprezentarea în virgulă
flotantă.

Exponentul este un număr întreg. Asupra lui sunt instituite două


exigenţe. Pe de o parte, ar fi de dorit ca numărul zero să se reprezinte
numai prin biţi nuli, pentru ca el să fie uşor detectabil, ca şi în
reprezentarea în virgulă fixă. Pe de altă parte, se impune ca numerele
nenule, dar foarte mici, să aibă acelaşi exponent ca numărul zero, pentru
ca erorile introduse prin rotunjiri şi trunchieri să nu fie mari. Ambele
cerinţe pot fi satisfăcute dacă se adoptă ca exponentul să apară translatat
cu un deplasament (bias) pozitiv, stabilit astfel încât exprimarea sa prin
biţi exclusiv nuli să corespundă celei mai mici valori posibile (aceasta
este o valoare negativă, evident).

Spre exemplificare, se prezintă, în tabelul din figura 4.1.2.1_1, cazul


exponenţilor reprezentaţi pe 8 biţi, cu bias de 127, respectiv de 128.

Exponentul Valoarea Valoarea exponentului efectiv


translatat exponentului
translatat Bias=127 Bias=128
11111111 255 +128 +127
11111110 254 +127 +126
… … … …
10000001 129 +2 +1
10000000 128 +1 0
01111111 127 0 -1
01111110 126 -1 -2
… … … …
00000001 1 -126 -127
00000000 0 -127 -128

Fig. 4.1.2.1_1. Două exemple de translatare a exponenţilor.

Dacă atât mantisa, cât şi exponentul se reprezintă pe 8 biţi, cu biasul


de +128, vom avea:
• pentru numărul zero:
0.0000000
 00000000
  →0
mantisa exponentul translatat

47
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

• pentru numărul cel mai apropiat de zero:


0.0000001
 00000000
  → 2 −7  2 −128  0
mantisa exponentul translatat

Dacă exponentul s-ar reprezenta netranslatat, atunci s-ar avea:


• pentru numărul zero:
0.0000000 →0
 00000000

mantisa exponentul

• pentru numărul cel mai apropiat de zero:


−7
 → 2  2  0 (a se citi: sensibil diferit de zero)
0
0.0000001
 00000000

mantisa exponentul

Aşadar, diferenţa între numărul care are toţi biţii nuli, în afară de
bitul cel mai semnificativ al mantisei şi numărul zero este 2 −7 , când se
lucrează cu exponentul netranslatat şi 2 −135 , când se lucrează cu
exponentul translatat.

4.1.2.2. Standardul IEEE 754 pe 32 de biți

În standardul IEEE 754 pe 32 de biți, baza este 2 și ea nu se


materializează, ci se subînțelege, exponentul este pe 8 biţi,
translatat cu un deplasament egal cu 127, iar mantisa este un număr real
în intervalul [1; 2), reprezentat în semn-mărime, cu partea întreagă
nematerializată, ci subînţeleasă. Aşadar, în timp ce mantisa vizibilă este
±M, mantisa efectivă este MT = ±1.M.
Câmpurile reprezentării IEEE 754 pe 32 de biți sunt următoarele:
31 30 23 22 0
S E M

unde:
• S este semnul mantisei: 1 pentru mantisă negativă, 0 pentru
mantisă pozitivă
• E este exponentul pe 8 biți, translatat, cu bias=127
• M este excesul de 1al mantisei (partea vizibilă a mantisei), pe 23
de biți
Valoarea unui număr real x reprezentat în standardul IEEE 754 pe 32 de
biți este dată de expresia:
48
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

x = (−1) S  (1.M )  2 E −127 ,


unde:
• M  [0; 1), cu rezolutia 2 - 23
• E  [0; 254]
Aşadar, se va avea:
• cel mai mare număr pozitiv reprezentabil este:
0 1 8 9 31
0 1 1 … 1 0 1 1 … 1 1

şi are valoarea:
cmMnpr = (−1) 0  (1.11...11)  2 254−127 = +(1 + (1 − 2 −23 ))  2127  +3.4  10 +38

• cel mai mic număr negativ reprezentabil este:


0 1 8 9 31
1 1 1 … 1 0 1 1 … 1 1

şi are valoarea:
cmmnnr = (−1)1  (1.11...11)  2 254−127 = −(1 + (1 − 2 −23 ))  2127  −3.4  10 +38

• cel mai mic număr pozitiv reprezentabil este:


0 1 8 9 31
0 0 0 … 0 1 0 0 … 0 0

şi are valoarea:
cmmnpr = (−1) 0  (1.00...00)  21−127 = +2 −126  +1.18  10 −38

• cel mai mare număr negativ reprezentabil este:


0 1 8 9 31
1 0 0 … 0 1 0 0 … 0 0

şi are valoarea:
cmMnnr = (−1)1  (1.00...00)  21−127 = −2 −126  −1.18  10 −38

• numărul zero este:


0 1 8 9 31
0 0 0 … 0 0 0 0 … 0 0

şi are valoarea:
zero = (−1) 0  (1.00...00)  2 0−127 = +2 −127  +0.59  10 −38
49
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Standardul IEEE 754 rezervă unele combinaţii de biţi pentru semnalarea


unor situaţii deosebite. Astfel:
• combinaţia de biţi corespunzătoare lui E=255 şi M0 arată că nu se
0
are de a face cu un număr, în cazuri cum sunt: , o cantitate negativa
0
• combinaţia de biţi corespunzătoare lui E=255 şi M=0 arată
"supradepăşirea" ("overflow"), atunci când se ajunge la numere
x  (−; − 3.4  10 38 ) (+3.4  10 38 ; + )
• combinaţia de biţi corespunzătoare lui E=0 şi M0 arată
"subdepăşirea" ("underflow"), atunci când se ajunge la numere
x  (−1.18  10 −38 ; 0 ) (0; + 1.18  10 −38 )

4.1.2.3. Standardul IEEE 754 pe 64 de biți

În standardul IEEE 754 pe 64 de biți, baza este, de asemenea, 2 și ea


nu se materializează, ci se subînțelege, exponentul este pe 11 biţi,
translatat cu un deplasament egal cu 1023, iar mantisa este un număr
real în intervalul [1; 2), reprezentat în semn-mărime, cu partea întreagă
nematerializată, ci subînţeleasă. Aşadar, în timp ce mantisa vizibilă este
±M, mantisa efectivă este MT = ±1.M.
Câmpurile reprezentării IEEE 754 pe 64 de biți sunt următoarele:
63 62 52 51 0
S E M

unde:
• S este semnul mantisei: 1 pentru mantisă negativă, 0 pentru
mantisă pozitivă
• E este exponentul pe 11 biți, translatat, cu bias=1023
• M este excesul de 1 al mantisei (partea vizibilă a mantisei), pe 52
de biți
Valoarea unui număr real x reprezentat în standardul IEEE 754 pe 64 de
biți este dată de expresia:

x = (−1) S  (1.M )  2 E −1023 ,


unde:
• M  [0; 1), cu rezolutia 2 -52
• E  [0; 2046]

50
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.2. Dispozitive de adunare şi scădere

4.2.1. Principii

Operaţia de adunare consistă în determinarea, pentru fiecare rang al


reprezentării, a cifrei sumei şi a cifrei transportului spre rangul de pondere
imediat superioară, pornind de la cifrele celor doi operanzi corespunzătoare
rangului în cauză şi de la cifra transportului din rangul de pondere imediat
inferioară, aşa cum se arată în figura 4.2.1_1. Evident, operanzii sunt
presupuși reprezentați în complement de 2. Pe cale de consecință, ponderile
biților sunt, de la stânga la dreapta, 20, 2-1, ..., 2-(n-2), 2-(n-1) .
z0 z-1 z-(n-2) z-(n-1) transport iniţial

c0 c-1 c-2 c-(n-2) c-(n-1) c-n

x0 y0 x-1 y-1 x-(n-2) y-(n-2) x-(n-1) y-(n-1)


Fig. 4.2.1_1. O ilustrare a operaţiei de adunare.

Aşadar, pentru un rang "i", se vor avea situaţiile din figura 4.2.1_2 şi
circuistica din figura 4.2.1_3.
Rezultatele obţinute în procesul de adunare pot fi afectate de erori,
atunci când ele se situează în afara intervalului de reprezentabilitate
corespunzător numărului de biţi pe care se lucrează. Se spune, în astfel de
situaţii, că intervine fenomenul de "depăşire". Evident, fenomenul de
depăşire poate apărea doar atunci când se adună operanzi cu acelaşi semn şi
se manifestă prin aceea că semnul rezultatului diferă de semnul comun al
celor doi operanzi. Tabelul din figura 4.2.1.4 evidenţiază clar cazurile de
depăşire, precum şi modul în care ele pot fi detectate.

51
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.2. Dispozitive de adunare şi scădere

4.2.1. Principii

Operaţia de adunare consistă în determinarea, pentru fiecare rang al


reprezentării, a cifrei sumei şi a cifrei transportului spre rangul de pondere
imediat superioară, pornind de la cifrele celor doi operanzi corespunzătoare
rangului în cauză şi de la cifra transportului din rangul de pondere imediat
inferioară, aşa cum se arată în figura 4.2.1_1. Evident, operanzii sunt
presupuși reprezentați în complement de 2. Pe cale de consecință, ponderile
biților sunt, de la stânga la dreapta, 20, 2-1, ..., 2-(n-2), 2-(n-1) .
z0 z-1 z-(n-2) z-(n-1) transport iniţial

c0 c-1 c-2 c-(n-2) c-(n-1) c-n

x0 y0 x-1 y-1 x-(n-2) y-(n-2) x-(n-1) y-(n-1)


Fig. 4.2.1_1. O ilustrare a operaţiei de adunare.

Aşadar, pentru un rang "i", se vor avea situaţiile din figura 4.2.1_2 şi
circuistica din figura 4.2.1_3.
Rezultatele obţinute în procesul de adunare pot fi afectate de erori,
atunci când ele se situează în afara intervalului de reprezentabilitate
corespunzător numărului de biţi pe care se lucrează. Se spune, în astfel de
situaţii, că intervine fenomenul de "depăşire". Evident, fenomenul de
depăşire poate apărea doar atunci când se adună operanzi cu acelaşi semn şi
se manifestă prin aceea că semnul rezultatului diferă de semnul comun al
celor doi operanzi. Tabelul din figura 4.2.1.4 evidenţiază clar cazurile de
depăşire, precum şi modul în care ele pot fi detectate.

50
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Intrări Ieşiri Se demonstrează simplu că:


c-(i+1) x-i y-i c-i z-i z−i = x−i  y−i  c− (i +1)
0 0 0 0 0 c−i = x−i y−i + c− (i +1) x−i + c− (i +1) y−i ,
0 0 1 0 1
Circuistica de determinare, pe
0 1 0 0 1 baza acestor ecuaţii, a biților z-i şi
0 1 1 1 0 c-i are schema din figura 4.2.1_3.
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

Fig. 4.2.1_2. Relaţiile dintre c-(i+1), x-i, y-i, pe de o parte,


şi c-i, z-i, pe de altă parte.

x-i
y-i z-i
c-(i+1)

c-i

Fig. 4.2.1_3. Circuistica de determinare a biţilor z-i şi c-i.

Intrări Ieşiri
c-1 x0 y0 c0 z0 v
0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 0 1 0 Rezultă, evident:
0 1 1 1 0 1 v = c0  c−1
1 0 0 0 1 1
1 0 1 1 0 0
1 1 0 1 0 0
1 1 1 1 1 0

Fig. 4.2.1_4. Cu privire la fenomenul de "depăşire".

51
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.2.2. Dispozitive de adunare seriale

4.2.2.1. Principii

Dispozitivele de adunare seriale efectuează adunarea, într-un ciclu de


tact, pentru un singur rang. Se presupune, deci, că biţii operanzilor sunt
furnizaţi serial, în sincronism cu un semnal de tact, aşa cum se sugerează în
figura 4.2.2.1_1.

...1010
x ...0101 z
...1011
y

tact

Fig. 4.2.2.1_1. Principiile adunării seriale.

4.2.2.2. Proiectarea unui dispozitiv de adunare serial


folosind bistabile J-K

Din paragraful anterior se poate înţelege că adunarea serială presupune


memorarea, în fiecare pas, a transportului rezultat în procesul de adunare,
pentru a se face posibilă disponibilitatea lui în pasul de adunare următor.
Având în vedere ecuaţia transportului, rezultă următoarea "diagramă a
stărilor următoare":
xy
Q 00 01 11 10
0 0 0 1 0
1 0 1 1 1

Fig. 4.2.2.2_1. Diagrama stărilor următoare.

Ţinând seamă de ecuaţia bistabilului J-K:


Qn+1 = J  Qn + K  Qn

se obţin, pentru J şi K, următoarele diagrame, respectiv ecuaţii:


• pentru J:
xy
Q 00 01 11 10
0 0 0 1 0  J = x y
1 * * * *
Fig. 4.2.2.2_2. Diagrama intrării J.

52
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

• pentru K:
xy
Q 00 01 11 10
0 * * * *  K = xy = x+ y
1 1 0 0 0
Fig. 4.2.2.2_3. Diagrama intrării K.

Având în vedere ecuaţia sumei, rezultă următoarea "diagramă a ieşirii":


xy
Q
00 01 11 10
0 0 1 0 1  z = x y Q
1 1 0 1 0
Fig. 4.2.2.2_4. Diagrama ieşirii.

În consecinţă, schema dispozitivului de adunare serial cu bistabil J-K


este următoarea:

x
y z

J Q
tact
C
K R

Fig. 4.2.2.2_5. Dispozitivul de adunare serial cu bistabil J-K.

4.2.2.3. Proiectarea unui dispozitiv de adunare serial


folosind bistabile D

S-a arătat că:


z−i = x−i  y−i  c− (i +1)
c−i = x−i y−i + c− (i +1) x−i + c− (i +1) y−i

Din aceste relaţii, rezultă că schema unui dispozitiv de adunare serial cu


bistabil D este cea din figura 4.2.2.3_1, în care dreptunghiul marcat cu
semnul "+" reprezintă circuistica de determinare a biţilor sumei şi
transportului, a cărei schemă este redată în figura 4.2.1_3.
53
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

x-i, i=0…n-1 z-i, i=0… n-1


y-i, i=0…n-1
+ c-i, i=0… n-1

c-(i+1)
i=0…n-1
Q D

tact
R C

Fig. 4.2.2.3_1. Dispozitivul de adunare serial cu bistabil D.

4.2.2.4. Avantaje şi dezavantaje ale dispozitivelor


de adunare seriale

Avantajele dispozitivelor de adunare seriale sunt:


• simplitate
• implementare printr-un număr redus de circuite
Dezavantajul dispozitivelor de adunare seriale este:
• viteza de însumare redusă (pentru operanzi pe "n" biţi, sunt necesare
"n" perioade de tact; în plus, frecvenţa semnalului de tact trebuie
aleasă astfel încât, în fiecare perioadă a sa, să existe suficient
timp pentru stabilizarea lui c-i)

4.2.3. Dispozitive de adunare paralele

4.2.3.1. Principii

Dispozitivele de adunare paralele efectuează adunarea într-un ciclu de


tact, pentru toate rangurile.

4.2.3.2. Dispozitive de adunare "ripple carry"

Se presupune că numerele sunt reprezentate în complement de 2, cu


bitul corespunzător semnului în poziţia c0. Schema de principiu a însumării
paralele "ripple carry" se prezintă, atunci, aşa cum se arată în figura
4.2.3.2_1.

54
z0 z-1 z-2 z-3

cin
p-3
g-3
p
g-2-2
p-1
g-1
p0
g0

cin
c0

58
g0 p0 g-1 p-1 g-2 p-2 g-3 p-3

*
*
*

c-1 c-2 c-3 cin


+ + + +

x0 y0 x-1 y-1 x-2 y-2 x-3 y-3

Fig. 4.2.3.3_2. Schema dispozitivului de însumare "carry lookahead".


CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

x-i, i=0…n-1 z-i, i=0… n-1


y-i, i=0…n-1
+ c-i, i=0… n-1

c-(i+1)
i=0…n-1
Q D

tact
R C

Fig. 4.2.2.3_1. Dispozitivul de adunare serial cu bistabil D.

4.2.2.4. Avantaje şi dezavantaje ale dispozitivelor


de adunare seriale

Avantajele dispozitivelor de adunare seriale sunt:


• simplitate
• implementare printr-un număr redus de circuite
Dezavantajul dispozitivelor de adunare seriale este:
• viteza de însumare redusă (pentru operanzi pe "n" biţi, sunt necesare
"n" perioade de tact; în plus, frecvenţa semnalului de tact trebuie
aleasă astfel încât, în fiecare perioadă a sa, să existe suficient
timp pentru stabilizarea lui c-i)

4.2.3. Dispozitive de adunare paralele

4.2.3.1. Principii

Dispozitivele de adunare paralele efectuează adunarea într-un ciclu de


tact, pentru toate rangurile.

4.2.3.2. Dispozitive de adunare "ripple carry"

Se presupune că numerele sunt reprezentate în complement de 2, cu


bitul corespunzător semnului în poziţia c0. Schema de principiu a însumării
paralele "ripple carry" se prezintă, atunci, aşa cum se arată în figura
4.2.3.2_1.

54
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

z0 z-1 z-(n-2) z-(n-1) transport iniţial

v c0 c-1 c-2 c-(n-2) c-(n-1) c-n =0


+ + + +
(overflow)

x0 y0 x-1 y-1 x-(n-2) y-(n-2) x-(n-1) y-(n-1)


Fig. 4.2.3.2_1. Schema de principiu a însumării paralele "ripple carry".

Având în vedere schema circuisticii de determinare a biţilor z-i şi c-i -


vezi figura 4.2.1_3-, rezultă că timpul de adunare, Tad, al dispozitivului de
adunare "ripple carry" este dat de relaţia:
Tad = n  (2 ) +  = (2n + 1)

Un dispozitiv de adunare "ripple carry" poate fi uşor transformat în


dispozitiv de adunare / scădere, aducându-l la următoarea schemă:
z0 z-1 z-(n-2) z-(n-1)

c-1 c-2 c-(n-2) c-(n-1) c-n


v c0
+ + + +
(overflow)

SUB
x0 y0 x-1 y-1 x-(n-2) y-(n-2) x-(n-1) y-(n-1)

Fig. 4.2.3.2_2. Schema dispozitivului de adunare / scădere "ripple carry".

Evident:
• când SUB=0, vom avea:
− la canalul 1 de intrare al dispozitivului: x c 2
− la canalul 2 de intrare al dispozitivului: y c 2 (întrucât: y−i  0 = y−i ),
ceea ce face ca dispozitivul să efectueze operaţia z c 2 = x c 2 + y c 2
• când SUB=1, vom avea:
− la canalul 1 de intrare al dispozitivului: x c 2
− la canalul 2 de intrare al dispozitivului: − y c 2 (întrucât: y−i 1 = y−i
și c-n=1), ceea ce face ca dispozitivul să efectueze
operaţia
z c 2 = x c 2 + (− y c 2 ) = x c 2 − y c 2

Observaţie:
Se reaminteşte faptul că între complementul de 2 şi complementul de 1
ai unui număr, în exprimare pe n biţi, există relaţia: c2( x) = c1( x) + 2−( n−1)

55
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.2.3.3. Dispozitive de adunare "carry lookahead"

Dispozitivele de adunare "carry lookahead" au apărut din ideea de a se


reduce Tad prin determinarea transporturilor c-i direct în funcţie de x-i, y-i,
x-(i+1), y-(i+1), ..., x-(n-1), y-(n-1) şi, eventual, c-n, printr-o circuistică cu un număr
redus de niveluri logice.
Se are:
c− i = x− i y− i + c− (i +1) x− i + c− (i +1) y− i = x− i y− i + ( x− i + y− i )c− (i +1) (4.2.3.3-1)
  
g −i p−i
unde:
• g-i este componenta lui c-i generată în rangul “-i”
• p-i este variabila care asigură regăsirea în c-i a transportului propagat
din rangul precedent, c-(i+1), atunci când acest transport este nenul
Mărimile g-i şi p-i se pot sintetiza cu o circuistică de factura celei
din figura 4.2.3.2_1.
x-i p-i g-i z-i
y-i z-i
c-(i+1)
*
g-i + c-(i+1)

p-i
x-i y-i

Fig. 4.2.3.3_1. Circuistica de sintetizare a lui z-i, g-i şi p-i.

Pe baza relaţiei (4.2.3.3-1), se obţine:


c− (i −1) = x− (i −1) y− (i −1) + ( x− (i −1) + y− (i −1) )c−i = g − (i −1) + p− (i −1)c−i (4.2.3.3-2)

iar din (4.2.3.3-2) şi (4.2.3.2-1) rezultă:


c− (i −1) = g − (i −1) + p− (i −1) g −i + p− (i −1) p−i c− (i +1) (4.2.3.3-3)

Pentru concretizare, să considerăm cazul operării pe 4 biţi. Vom avea:


c-3=g-3+p-3cin (4.2.3.2-4)
c-2=g-2+p-2g-3+p-2p-3cin (4.2.3.2-5)
c-1=g-1+p-1g-2+p-1p-2c-3= g-1+p-1g-2+p-1p-2g-3+ p-1p-2p-3cin (4.2.3.2-6)
c0=g0+p0g-1+p0p-1c-2= g0+p0g-1+p0p-1g-2+ p0p-1p-2g-3+ p0p-1p-2p-3cin (4.2.3.2-7)

şi, pe această bază, vom obţine schema din figura 4.2.3.3_2.

56
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Evident, circuistica devine considerabil mai complexă şi mai


costisitoare, pe măsură ce numărul de ranguri creşte. Timpul de adunare
este, însă, redus şi nu depinde de numărul rangurilor.

Tad =  p , g +  c +  z =  + 2 +  = 4 (4.2.3.2-8)

1 nivel logic 1 nivel logic


2 nivele logice

Observaţie:
S-a avut în vedere că xizi se determină în paralel cu p şi g, nu
consecutiv lor!

57
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.3. Dispozitive de înmulţire

4.3.1. Principii

Reprezentările în care se efectuează în calculator operaţia de înmulţire


sunt reprezentarea semn-mărime şi reprezentarea complement de 2. Pentru
ilustrarea principiilor de interes pentru implementarea acestei operaţii,
alegem să folosim, în cele ce urmează, reprezentarea semn-mărime.

Fie de înmulţit două numere y şi x din intervalul (-M; M), considerat cu


rezoluţia r. Lungimea de cod a reprezentării semn mărime a acestor numere
va fi –vezi relaţia (4.1.1.2.1-6)-:
lc_sm_o=log2(2M/r)= log2M+1-log2r (4.3.1-1)
Întrucât, evident, intervalul de valori posibile pentru produsul celor două
numere este (-M2; M2), dacă adoptăm şi pentru produs rezoluţia r, cum este
şi firesc, rezultă că lungimea de cod necesară pentru reprezentarea
produsului va fi:
lc_sm_p=log2(2M2/r)= 2log2M+1–log2r = 2lc_sm_o-1+log2r (4.3.1-2)
Dacă impunem, în plus, ca cele două numere să fie pozitive, atunci,
conform relaţiei (4.1.1.2.1-5), imaginile lor semn-mărime vor fi:

sm(x)=x/M (4.3.1-3)
sm(y)=y/M (4.3.1-4)

iar produsul acestor imagini va fi:

p=(xy)/M2=sm(xy) (4.3.1-5)

Privind acest p prin prisma relaţiei (4.1.1.2.1-7), în ipotezele stabilite, se


observă că el este tocmai imaginea semn-mărime a produsului z al
numerelor x şi y. Într-adevăr:

z=M2p=M2((xy)/M2)=xy (4.3.1-6)

În cazul în care cel puţin unul dintre numerele care se înmulţesc este
negativ, atunci, evident, cele de mai sus nu mai sunt valabile.

59
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Fie, pentru operanzi, (-Mop; Mop) = (-8; 8), r=1 şi, prin consecinţă,
lc_sm_op =4 biţi (inclusiv semnul) –a se revedea tabelul 4.1.1.2.1_2-, iar
pentru produse, (-Mp; Mp)=(-64; 64), r=1 şi, prin consecinţă, lc_sm_p =7
biţi (inclusiv semnul), şi fie, de asemenea, x=6 şi y=5.
Constatăm că dacă înmulţim imaginile celor două numere –adică:
numerele 0.750 şi 0.625-, obţinem numărul 0.46875, care, în condiţiile
stabilite, este imaginea semn-mărime a numărului 30=6*5 (într-adevăr:
64*0.46875=30).
610=1102 510=1012 111102=3010

0110sm=0.75010 0101sm=0.62510 0.4687510=0011110sm

Fig. 4.3.1_1. O ilustrare a înmulţirii a două numere întregi


prin intermediul imaginilor lor semn-mărime.

Algoritmul de înmulţire a celor doi operanzi întregi, deînmulţitul y=1102


şi înmulţitorul x=1012 este, în principiu, cel cunoscut din aritmetică pentru
înmulţirea numerelor zecimale, astfel încât vom avea:

y → 110  y2y1y0
x → 101  x2x1x0
110  20x0y
000  21x1y
110  22x2y
n −1
1 1 1 1 0  p =  2 j x j  y, cu n = 3
j =0

Evident, din punct de vedere al implementării, ar fi total inacceptabil să se


procedeze ca mai sus, adică: într-o etapă să se calculeze, succesiv, produsele
de forma 2 j x j  y , iar în final, să se efectueze adunarea lor în vederea
obţinerii produsului căutat. O soluţie mai rezonabilă ar rezulta dacă lucrurile
ar fi abordate în mod recurent. Produsul p ar putea fi, atunci, exprimat astfel:

60
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

p = (... ( ( 0 + 20 x0  y) + 21 x1  y) + ... + 2 n−2 xn−2  y) + 2 n−1 xn−1  y


P0 (4.3.1-7)
P1
P2
Pn-1
p
iar calculele ar decurge după cum urmează:
y ⎯⎯⎯⎯→ 110 
x ⎯⎯⎯⎯→ 101
P0 = 0 ⎯⎯→ 00000+
x0y20 ⎯⎯→ 110
P 1 = P 0 + x0 y → 00110+
x1y21 ⎯⎯→ 000
P 2 = P 1 + x1 y → 00110+
x2y22 ⎯⎯→ 110
p = P 2 + x2 y → 11110

Fie y0' y−' 1 y−' 2 y−' 3 imaginea semn-mărime a lui y = + y2 y1 y0 şi x0' x−' 1 x−' 2 x−' 3
imaginea semn-mărime a lui x = + x2 x1 x0 . Rezultă:
y ' = 20  0 + 2 −1 y−' 1 + 2 −2 y−' 2 + 2 −3 y−' 3 (4.3.1-8)

x ' = 20  0 + 2 −1 x−' 1 + 2 −2 x−' 2 + 2 −3 x−' 3 (4.3.1-9)

Să vedem ce se întâmplă dacă, în loc să înmulţim cele două numere,


înmulţim pe x’ cu y’ şi, în plus, facem artificiul ca pe parcursul calculelor să
operăm nu cu y’, ci cu 2y’, luând, totodată, măsuri pentru ca rezultatul final să
nu fie afectat.
p ' = y '  x ' = y '  (2 0  0 + 2 −1 x−' 1 + 2 −2 x−' 2 + 2 −3 x−' 3 ) =
= 2 0  0  y ' + 2 −1 x−' 1 y ' + 2 − 2 x−' 2 y ' + 2 −3 x−' 3 y ' =
= ( ( ( ( 0 + x−' 3 2 y' )  2 −1 + x−' 2 2 y ' )  2 −1 + x−' 1 2 y ' )  2 −1 + 0  2 y ' )  2 −1
P0' P1' (4.3.1-10)
P0 P2'
P3'
P2 P4' = p '
Prin artificiul de mai sus, au fost atinse două deziderate. Pe de o parte,
s-a pus în evidenţă un algoritm recurent de înmulţire, algoritm constând
într-un număr de paşi egal cu lungimea de cod a reprezentării semn-mărime
a operanzilor şi în cadrul căruia în fiecare pas se efectuează o operaţie de
adunare şi una de înmulţire cu 2-1, ambele uşor de implementat. Pe de altă
61
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

parte, s-au asigurat premizele furnizării rezultatului nu pe 7 biţi, cum ar


impune relaţiile (4.3.1-1) şi (4.3.1-2), dacă s-ar opera efectiv cu x’ şi y’, ci pe
8 biţi, lungime mult mai adecvată pentru un calculator. În acest caz, însă, Mp
devine:

Mp = Mop2Mop = 2 M op
2
= 2 82 = 128 (4.3.1-11)

ceea ce înseamnă că valoarea efectivă a produsului se va obţine înmulţind


exprimarea sa semn-mărime nu cu 64, ci cu 128.

Concret, lucrurile vor decurge după cum urmează:

y’⎯⎯⎯⎯⎯⎯⎯→ 0110  2 P2' + x−' 1  2 y ' ⎯→ 0 1 1 1 1 0 0 0


x ⎯⎯⎯⎯⎯⎯⎯→
’ 0101
  2 -1
2P0 ⎯⎯⎯⎯⎯⎯→ 0 0 0 0 0 0 0 0 +
'
2P3' ⎯⎯⎯⎯⎯→ 0 0 1 1 1 1 0 0 +
x−' 3  2 y ' ⎯⎯⎯⎯→ 0 1 1 0 02y’ ⎯⎯⎯⎯⎯→ 0 0 0 0
2 P0' + x−' 3  2 y ' ⎯→ 0 1 1 0 0 0 0 0 2 P3' + 0  2 y ' = 2 p ' → 0 0 1 1 1 1 0 0
  2 -1   2 -1
2P1' ⎯⎯⎯⎯⎯⎯→ 0 0 1 1 0 0 0 0 + p’ ⎯⎯⎯⎯⎯⎯→ 0 0 0 1 1 1 1 0
x−' 2  2 y ' ⎯⎯⎯⎯→ 0000 =
0.23437510
2 P1' + x−' 2  2 y ' ⎯→ 00110000
  128
  2 -1 =
2P2' ⎯⎯⎯⎯⎯⎯→ 0 0 0 1 1 0 0 0 + 3010
x−' 1  2 y ' ⎯⎯⎯⎯→ 0 1 1 0 Mp
2 P2' + x−' 1  2 y ' ⎯→ 0 1 1 1 1 0 0 0

62
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.3.2. Sinteza unui dispozitiv de înmulțire


de numere în semn-mărime
Înmulţirea în semn mărime a două numere pozitive se realizează aşa cum
s-a arătat în ultima parte a paragrafului 4.3.1. Înmulţirea în semn mărime a
unui număr pozitiv cu un număr negativ, respectiv a două numere negative
se realizează reducând problema la înmulţirea a două numere pozitive, după
cum urmează: se reţin semnele operanzilor pentru ca, pe baza lor, să se
stabilească semnul produsului, iar în calculele propriu-zise, se introduc, pe
de o parte, operandul pozitiv, aşa cum este el, iar pe de altă parte opusul
operandului negativ, respectiv, în al doilea caz, opuşii celor doi operanzi
negativi.
Fie y0' y−' 1 y−' 2 y−' 3 imaginea semn-mărime a lui y = s y y2 y1 y0 şi
x0' x−' 1 x−' 2 x−' 3 imaginea semn-mărime a lui x = s x x2 x1 x0 , cu sy, sx{+; -}.
Rezultă, aşadar, că, indiferent de valorile lui sy şi sx, în calculele propriu-zise
se vor introduce numerele 0 y−' 1 y−' 2 y−' 3  0 y2 y1 y0 , respectiv
0 x−' 1 x−' 2 x−' 3  0 x2 x1 x0 , iar semnul produsului va rezulta din expresia:
s p = s y  sx (4.3.2-1)

Schema bloc a unui dispozitiv de înmulțire de numere în semn-mărime,


concepută pe baza relaţiei (4.3.1-10), este redată în figura 4.3.2_1.
registrul produsului

bistabilul X acumulatorul, A registrul registrul


selectat cu “1” înmulţitorului, Q deînmulţitului, M
“0”
selectat cu “0” MUX1 x0' x −' 1 x −' 2 x −' 3 y0' y−' 1 y−' 2 y−' 3
DD
ÎC
“0” IN
z 4
UP 4
DA 4
IN ÎC DD UP
4
4
MUX2 4 selectat cu “1”
4

00 ... 0
BC selectat cu "0"

CLK ÎNM

Fig. 4.3.2_1. Schema bloc a dispozitivului de înmulțire de numere în semn-mărime.


Elementele structurale ale schemei sunt:
63
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

• X: bistabil
• MUX1: multiplexor
• A: registru de deplasare dreapta, cu posibilităţi de încărcare paralelă
• Q: registru de deplasare dreapta, cu posibilităţi de încărcare paralelă
• M: registru cu posibilităţi de încărcare paralelă
• DA: dispozitiv de adunare pe 8 biţi
• MUX2: multiplexor
• BC: bloc de comandă

Bistabilul X este destinat preluării semnului produsului, determinat cu


ajutorul porţii SAU EXCLUSIV în subpasul unu al ultimului pas al
algoritmului, în scopul transmiterii lui spre rangul 0 al registrului A, în
subpasul doi din cadrul aceluiaşi ultim pas (subpasul 1: adunare și încărcare
rezultat; subpasul 2: înmulțire cu 2-1 = deplasare dreapta).

Multiplexorul MUX1 are rolul de a introduce în rangul 0 al registrului A


biţi de valoare “0”, în subpașii de deplasare dreapta din cadrul paşilor ce-l
preced pe ultimul, respectiv informaţia prezentă în bistabilul X –semnul
produsului-, în subpasul de deplasare dreapta din cadrul pasului ultim.

Registrul A este sediul părţii mai semnificative a produselor parţiale şi, în


final, sediul părţii mai semnificative a produsului numerelor înmulţite. El
este iniţializat la zero la începutul fiecărei sesiuni de înmulţire. În primul
subpas al fiecărui pas al algoritmului de înmulţire, registrul A este încărcat
paralel cu suma dintre conţinutul său anterior şi rezultatul înmulţirii cifrei
curente a înmulţitorului cu deînmulţitul. În al doilea subpas al fiecărui pas al
algoritmului, registrul A este supus unei operaţii de deplasare la dreapta, în
concatenare cu registrul Q –deplasare prin care se efectuează, de fapt,
înmulţirea cu 2-1 prin care se generează produsele parţiale-; în timpul
deplasării, prin intermediul multiplexorului MUX1, în rangul 0 al
registrului A intră zero-uri, în paşii diferiţi de ultimul, respectiv conţinutul
bistabilului X, reprezentând semnul produsului, în pasul ultim.

Registrul Q este, iniţial, sediul înmulţitorului, dar, pe parcurs, în cadrul


operaţiilor de deplasare dreapta ce au loc în subpasul doi al fiecărui pas al
algoritmului de înmulţire, biţii înmulţitorului deja folosiţi sunt ejectaţi prin
partea dreaptă, în timp ce prin stânga intră ceea ce iese din rangul -3 al
registrului A, adică: câte un bit al produsului în curs de determinare. În
finalul algoritmului, în registrul Q se va găsi partea mai puţin semnificativă a
produsului numerelor ce se înmulţesc.
64
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Registrul M este, de la început până la sfârşit, sediul deînmulţitului, adus


aici în etapa de iniţiere a unei noi sesiuni de înmulţire.

Multiplexorul MUX2 are rolul de a transmite la intrarea 2 a dispozitivului


de adunare DA fie deînmulţitul, atunci când cifra curentă a înmulţitorului –
este vorba despre cifrele diferite de cea corespunzătoare semnului- este 1, fie
valoarea 0000, în cazul contrar. Atunci când cifra curentă a înmulţitorului
este cea corespunzătoare semnului, se forţează trimiterea spre intrarea 2 a
dispozitivului de adunare DA a valorii 0000.

Dispozitivul de adunare DA are rolul de a calcula produsele parţiale, ca


sumă dintre produsul parţial de până atunci şi rezultatul înmulţirii cifrei
curente a înmulţitorului cu deînmulţitul.

Blocul de comandă BC este un automat secvenţial cu rolul de a sintetiza


semnalele de comandă interne ale înmulţitorului, şi anume: IN, ÎC, DD şi
UP. Semnificaţiile acestor semnale sunt următoarele:
• IN: semnal de iniţializare a înmulţitorului, generat intern, de către
blocul de comandă BC, la începutul fiecărei noi sesiuni de
lucru. Iniţializarea contă în:
➢ forţarea la zero a bistabilului X şi a registrului A
➢ încărcarea registrului Q cu înmulţitorul
➢ încărcarea registrului M cu deînmulţitul
• ÎC: semnal de încărcare a registrului A şi a bistabilului X.
Reamintim: încărcarea registrului A se face cu suma z furnizată
de dispozitivul de adunare DA, în urma adunării produsului
parţial de până în momentul respectiv cu rezultatul înmulţirii
cifrei curente a înmulţitorului cu deînmulţitul, iar bistabilul
X se încarcă, în ultimul pas, cu semnul produsului, determinat
cu ajutorul porţii SAU EXCLUSIV prezente în schemă, iar
pe parcurs, cu informaţii nesemnificative şi, în consecinţă,
neutilizate.

65
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

• DD: semnal de deplasare la dreapta a informaţiei din registrele


A şi Q, considerate în concatenare. Reamintim: în cadrul
deplasărilor –deplasări prin care se efectuează, de fapt,
înmulţirea cu 2-1 a produselor parţiale-, în rangul 0 al
registrului A intră zero-uri, în paşii diferiţi de ultimul,
respectiv conţinutul bistabilului X, reprezentând semnul
produsului, în pasul ultim.
• UP semnal auxiliar ce marchează ajungerea în ultimul pas al
algoritmului de înmulţire, pas în care sunt ajunşi la rând biţii
celor doi operanzi corespunzători semnelor (remarcăm faptul
că, în schemă, apare şi negatul acestui semnal, U P ).

Semnalele pe care schema le primeşte din exterior sunt:


• CLK: semnal de tact, primit de înmulţitor de la unitatea de comandă
a procesorului. Acest semnal va pilota funcţionarea tuturor
elementelor secvenţiale ale schemei: bistabilul X, registrele A,
Q şi M şi blocul de comandă BC.
• ÎNM: semnal de declanşare a unei noi sesiuni de lucru a
dispozitivului de înmulțire, primit de către acesta din partea
unităţii de comandă a procesorului. Declanşarea unei noi
sesiuni de lucru a dispozitivului de înmulțire se va face la
fiecare tranziţie de la 0 la 1 a acestui semnal.

Dacă stabilirea schemei bloc a înmulţitorului este -de la un punct încolo,


cel puţin- o chestiune de imaginaţie, nu la fel stau lucrurile cu proiectarea
blocului său de comandă. Această proiectare se poate face algoritmic, aşa
cum se va arăta în continuare.

Funcţionarea dorită pentru schemă este cea descrisă prin organigrama din
figura 4.3.2_2. Se remarcă faptul că se parcurg 10 stări –o stare fiind un ciclu
al semnalului de tact-, dintre care una este starea de inactivitate, S0, alta este
starea de iniţializare, S1, iar celelalte opt, S2-S9, sunt stările
corespunzătoare celor 4 paşi ai algoritmului de înmulţire propriu-zisă, câte 2
pentru fiecare cifră binară din reprezentarea semn-mărime a înmulţitorului.
Rezultă, aşadar, că blocul de comandă al înmulţitorului va fi un automat
secvenţial cu 10 stări. Să-l proiectăm, acum, cu metoda diagramelor VID,
presupunând că implementarea vrem să o facem cu bistabile J-K.

66
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

0000 0110
S0 S4

0 ÎC
ÎNM
1 0111
S5
0001
S1
DD
IN
0101
X  0, S6
A(0:-3)  0,
Q(0:-3)  x’, ÎC
M(0:-3)  y’;
0100
0011 S7
S2
DD
ÎC
1100
A(0:-3)  z(0:-3), S8
X  Q(-3)  M(0);
// z(0:-3) = A(0:-3) + Q(-3)*0.M(-1:-3)
ÎC, UP

0010 A(0:-3)  z(0:-3),


S3
X  Q(-3)  M(0);
// z(0:-3) = A(0:-3) + Q(-3)*0.M(-1:-3)
DD // Q(-3) = sx, M(0) = sy
Q(-3)  Q(-2),
 1000
S9
Q(0)  A(-3),
A(-3)  A(-2),
 DD, UP
A(0)  MUX1; Q(-3)  Q(-2),
// MUX1 = XUP 
Q(0)  A(-3),
A(-3)  A(-2),

A(0)  MUX1;
// MUX1 = XUP

Fig. 4.3.2_2. Organigrama funcţionării dispozitivului de înmulțire.

67
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Mai întâi, se impune codificarea adiacentă a stărilor. Să admitem varianta


de codificare indicată în figura 4.3.2_2. Diagrama acestei codificări este
reprezentată în figura 4.3.2_3, în ipoteza că bistabilele blocului de
comandă sunt notate cu B3 – B0.
B1B0
B3B2 00 01 11 10
00 S0 S1 S2 S3
01 S7 S6 S5 S4
11 S8 * * *
10 S9 * * *

Fig. 4.3.2_3. Diagrama codificării stărilor.

În continuare, se întocmeşte, pentru fiecare din bistabilele B0– B3,


“diagrama stărilor următoare”, “diagrama lui J” şi “diagrama lui K” –vezi
figurile 4.3.2_4-4.3.2_15-, ultimele două ţinând seama de ecuaţia de
funcţionare a bistabilului J-K:
Qn+1 = J  Qn + K  Qn (4.3.2-
2)
B1B0
B3B2 00 01 11 10
00 ÎNM 1 0 0
01 0 0 1 1
11 0 * * *
10 0 * * *

Fig. 4.3.2_4. Diagrama stărilor următoare pentru bistabilul B 0.

B1B0
B3B2 00 01 11 10
00 ÎNM * * 0
01 0 * * 1
11 0 * * *
10 0 * * *
 J 0 = B3  B2  B1  ÎNM + B2  B1
Fig. 4.3.2_5. Diagrama lui J pentru bistabilul B0.

68
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 * 0 1 *
01 * 1 0 *
11 * * * *
10 * * * *

 K 0 = B2  B1 + B2  B1
Fig. 4.3.2_6. Diagrama lui K pentru bistabilul B0.

B1B0
B3B2 00 01 11 10
00 0 1 1 1
01 0 0 0 1
11 0 * * *
10 0 * * *

Fig. 4.3.2_7. Diagrama stărilor următoare pentru bistabilul B 1.

B1B0
B3B2 00 01 11 10
00 0 1 * *
01 0 0 * *
11 0 * * *
10 0 * * *
 J1 = B2  B0
Fig. 4.3.2_8. Diagrama lui J pentru bistabilul B1.

B1B0
B3B2 00 01 11 10
00 * * 0 0
01 * * 1 0
11 * * * *
10 * * * *
 K1 = B2  B0
Fig. 4.3.2_9. Diagrama lui K pentru bistabilul B1.

69
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 0 0 0 1
01 1 1 1 1
11 0 * * *
10 0 * * *

Fig. 4.3.2_10. Diagrama stărilor următoare pentru bistabilul B2.

B1B0
B3B2 00 01 11 10
00 0 0 0 1
01 * * * *
11 * * * *
10 0 * * *
 J 2 = B1  B0
Fig. 4.3.2_11. Diagrama lui J pentru bistabilul B2.

B1B0
B3B2 00 01 11 10
00 * * * *
01 0 0 0 0
11 1 * * *
10 * * * *

 K 2 = B3
Fig. 4.3.2_12. Diagrama lui K pentru bistabilul B2.

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 1 0 0 0
11 1 * * *
10 0 * * *

Fig. 4.3.2_13. Diagrama stărilor următoare pentru bistabilul B3.

70
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 1 0 0 0
11 * * * *
10 * * * *

 J 3 = B2  B1  B0
Fig. 4.3.2_14. Diagrama lui J pentru bistabilul B3.
B1B0
B3B2 00 01 11 10
00 * * * *
01 * * * *
11 0 * * *
10 1 * * *
 K 3 = B2
Fig. 4.3.2_15. Diagrama lui K pentru bistabilul B3.

Aşadar, ecuaţiile intrărilor bistabilelor B0 – B3 vor fi:


• pentru bistabilul B0:
J 0 = B3  B2  B1  MUL + B2  B1 (4.3.2-3)
K 0 = B2  B1 + B2  B1 (4.3.2-4)
• pentru bistabilul B1:
J1 = B2  B0 (4.3.2-5)
K1 = B2  B0 (4.3.2-6)
• pentru bistabilul B2:
J 2 = B1  B0 (4.3.2-7)
K 2 = B3 (4.3.2-8)
• pentru bistabilul B3:
J 3 = B2  B1  B0 (4.3.2-9)
K 3 = B2 (4.3.2-10)

A mai rămas să determinăm ecuaţiile ieşirilor, ieşiri care sunt: IN, ÎC, DD
şi UP. Întocmim, pentru fiecare dintre acestea, câte o “diagramă a ieşirii”
–vezi figurile 4.3.2_16 - 4.3.2_19-.

71
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 0 1 0 0
01 0 0 0 0
11 0 * * *
10 0 * * *

 IN = B2  B1  B0
Fig. 4.3.2_16. Diagrama ieşirii IN.

B1B0
B3B2 00 01 11 10
00 0 0 1 0
01 0 1 0 1
11 1 * * *
10 0 * * *

 IC = B2  B1  B0 + B2  B1  B0 + B3  B2  B1 + B2  B1  B0

Fig. 4.3.2_17. Diagrama ieşirii ÎC.

B1B0
B3B2 00 01 11 10
00 0 0 0 1
01 1 0 1 0
11 0 * * *
10 1 * * *
 DD = B2  B1  B0 + B2  B1  B0 + B3  B2 + B3  B2  B1  B0

Fig. 4.3.2_18. Diagrama ieşirii DD.

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 0 0 0 0
11 1 * * *
10 1 * * *

 UP = B3
Fig. 4.3.2_19. Diagrama ieşirii UP.

72
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

73
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Aşadar, ecuaţiile ieşirilor IN, ÎC, DD şi UP vor fi:


IN = B2  B1  B0 (4.3.2-11)
IC = B2  B1  B0 + B2  B1  B0 + B3  B2  B1 + B2  B1  B0 (4.3.2-12)
DD = B2  B1  B0 + B2  B1  B0 + B3  B2 + B3  B2  B1  B0 (4.3.2-13)
UP = B3 (4.3.2-14)

Pe baza ecuaţiilor (4.3.2-3) - (4.3.2-14), se obţine pentru blocul de


comandă al dispozitivului de înmulțire de numere în semn-mărime schema
din figura 4.3.2_20.

Considerăm contextul adecvat pentru a introduce şi un alt element


consacrat de descriere a funcţionării schemelor logice secvenţiale şi anume:
cronograma. Aşadar, redăm în figura 4.3.2_21 cronograma schemei din
figura 4.3.2_20.
S0 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S0
CLK

MUL

B3 0 0 0 0 0 0 0 0 1 1 0

B2 0 0 0 0 1 1 1 1 1 0 0

B1 0 0 1 1 1 1 0 0 0 0 0

B0 0 1 1 0 0 1 1 0 0 0 0

IN

ÎC

DD

UP

Fig. 4.3.2_21. Cronograma schemei din figura 4.3.2_20.

74
CLK
ÎNM

J Q J Q J Q J Q
C B3 C B2 C B1 C B0

CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ


K R Q K R Q K R Q K R Q
RESET

UP
77

IN

ÎC

schemă
similară DD
celei
pentru ÎP

Fig. 4.3.2_20. Schema blocului de comandă al înmulţitorului în semn-mărime.


CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.3.3. Sinteza unui înmulţitor de numere în complement de 2,


după metoda Robertson

Având în vedere că cele mai frecvente operaţii –am numit adunarea şi


scăderea- se fac mai convenabil în complement de 2, s-au căutat soluţii în
această reprezentare şi pentru înmulţire (soluţia de trecere de la
complement de 2 la semn-mărime, înmulţire în semn-mărime şi reconversie
din semn-mărime în complement de 2 nu este acceptabilă sub aspectul
vitezei, aceasta fiind sensibil diminuată de operaţiile de conversie). Una
dintre soluţiile cele mai bune rezultate din aceste căutări este cea dată de
Robertson. Metoda de înmulţire Robertson prevede următoarele:
1) în cazul y0' = 0, x0' = 0 :
Numerele se înmulţesc ca şi cum ar fi în semn mărime, pe baza
formulelor de recurenţă: P0' = 0, 2 Pi ' = (2 Pi −' 1 + xi' − n  2 y ' )  2 −1 , i = 1...n
2) în cazul y0' = 1, x0' = 0 :
Dacă k = max ( j ) x−' j = 1, atunci Pi ' = 0, i  k si Pi '  0, i  k . Drept
urmare, se pot aplica formulele P0' = 0, 2 Pi ' = (2 Pi −' 1 + xi' − n  2 y ' )  2 −1 ,
i = 1...n , luând măsuri ca deplasarea la dreapta din calculul lui 2 Pi '
prin care se face înmulţirea cu 2-1, să se facă cu introducere de zero –
uri în rangul cel mai semnificativ, dacă i > k, şi cu introducere de
unu –uri, dacă i  k.
3) în cazul y0' = 0, x0' = 1 :
Numerele se înmulţesc ca şi în cazul 1), dar, în final, se adaugă un
pas de corecţie care constă în scăderea deînmulţitului din
ultimul produs parţial.
4) în cazul y0' = 1, x0' = 1 :
Numerele se înmulţesc ca şi în cazul 2), adăugându-se, în final,
corecţia indicată la cazul 3).

Metoda Robertson poate fi implementată cu ajutorul schemei bloc din


figura 4.3.3_1, în care s-a avut în vedere cazul unor operanzi pe 4 biţi.

79
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

F A Q K M
' ' ' ' ' ' ' '
x0 x−1 x− 2 x−3 y0 y −1 y − 2 y −3
IN
DD
COR
ÎP
COR
4

z 4
cin selectat
IN ÎP DD COR
+ 4 cu “1”
4 4 M
U 4
BC 0000
X
selectat cu “0”
CLK MUL

Fig. 3.3.3_1. Schema bloc a înmulţitorului de numere în complement de 2,


bazat pe metoda Robertson.

Elementele structurale ale schemei sunt:


• F: bistabil
• A: registru de deplasare dreapta, cu posibilităţi de încărcare paralelă
• Q: registru de deplasare dreapta, cu posibilităţi de încărcare paralelă
• K: bistabil
• M: registru cu posibilităţi de încărcare paralelă
• SUM: sumator paralel, pe 4 biţi
• MUX: multiplexor
• BC: bloc de comandă

Bistabilul F este destinat furnizării de biţi de valoare adecvată -0 sau 1,


după caz-, pentru intrarea serie în rangul 0 al registrului A, în acord cu
specificaţiile în acest sens ale metodei Robertson. Remarcăm că dezideratul
exprimat la punctul 2) de mai sus şi valabil şi pentru punctul 4) se
realizează simplu cu ajutorul bistabilului F, dacă acesta se poziţionează –
atunci când deînmulţitul este negativ- pe 1 la prima întâlnire a unui bit al
înmulţitorului nenul şi rămâne apoi la valoarea 1 până la sfârşitul
procesului de înmulţire. Cu alte cuvinte, în F se va înscrie valoarea
F + xi' − n  y0' , cu “i” evoluând normal, de la 1 către n (aici, semnul “+”
reprezintă operaţia logică “SAU”, iar semnul “” –operaţia logică “ŞI”).

80
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Registrul A este sediul părţii mai semnificative a produselor parţiale şi,


în final, sediul părţii mai semnificative a produsului numerelor înmulţite. El
este iniţializat la zero la începutul fiecărei sesiuni de înmulţire. În primul
ciclu al fiecărui pas al algoritmului de înmulţire, registrul A este încărcat
paralel cu suma dintre conţinutul său anterior şi rezultatul înmulţirii cifrei
curente a înmulţitorului cu deînmulţitul. În al doilea ciclu al fiecărui pas al
algoritmului, registrul A este supus unei operaţii de deplasare la dreapta, în
concatenare cu registrul Q –deplasare prin care se efectuează, de fapt,
înmulţirea cu 2-1 din cadrul calculului produselor parţiale-; în timpul
deplasării, în rangul 0 al registrului A intră, după caz, zero-uri, sau
unu- uri, oferite de bistabilul F, aşa cum s-a menţionat.

Registrul Q este, iniţial, sediul înmulţitorului, dar, pe parcurs, în cadrul


operaţiilor de deplasare dreapta ce au loc în ciclul doi al fiecărui pas al
algoritmului de înmulţire, biţii înmulţitorului deja folosiţi sunt ejectaţi prin
partea dreaptă şi preluaţi în bistabilul K, în timp ce prin stânga intră ceea ce
iese din rangul 3 al registrului A, adică: câte un bit al produsului în curs de
determinare. În finalul algoritmului, în registrul Q se va găsi partea mai
puţin semnificativă a produsului numerelor ce se înmulţesc.

Registrul M este, de la început până la sfârşit, sediul deînmulţitului,


adus aici în etapa de iniţiere a unei noi sesiuni de înmulţire.

Multiplexorul MUX are rolul de a transmite la intrarea 2 a sumatorului


SUM fie deînmulţitul, atunci când cifra curentă a înmulţitorului este 1, fie
valoarea 0000, în cazul contrar. În timpul operaţiei de corecţie, circuistica
din jurul multiplexorului va asigura transmiterea spre sumator a opusului
deînmulţitului, dacă corecţia se impune, respectiv transmiterea valorii
0000, altfel.

Sumatorul SUM este un sumator binar paralel oarecare, cu rolul de a


calcula produsele parţiale ca sumă dintre produsul parţial de până atunci şi
rezultatul înmulţirii cifrei curente a înmulţitorului cu deînmulţitul. În
timpul corecţiei, sumatorul efectuează, în fond, o scădere, adunând la
produsul parţial din acel moment opusul deînmulţitului.

Blocul de comandă BC este un automat secvenţial cu rolul de a sintetiza


semnalele de comandă interne ale înmulţitorului, şi anume: IN, ÎP, DD şi
COR. Semnificaţiile acestor semnale sunt următoarele:

81
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

• IN: semnal de iniţializare a înmulţitorului, generat intern, de


către blocul de comandă BC, la începutul fiecărei noi sesiuni
de lucru. Iniţializarea contă în:
➢ forţarea la zero a bistabilelor F şi K şi a registrului A
➢ încărcarea registrului Q cu înmulţitorul
➢ încărcarea registrului M cu deînmulţitul
• ÎP: semnal de încărcare paralelă a registrului A şi a bistabilului F.
Reamintim: încărcarea paralelă a registrului A se face cu suma
z furnizată de sumatorul SUM, în urma adunării produsului
parţial de până în momentul respectiv cu rezultatul
înmulţirii cifrei curente a înmulţitorului cu deînmulţitul, iar
bistabilul F se încarcă cu valoarea F + xi' − n  y0' . În final,
sumatorul SUM va furniza spre încărcare în registrul A,
rezultatul operaţiei de corecţie.
• DD: semnal de deplasare la dreapta a informaţiei din registrele
A şi Q, considerate în concatenare, cu preluarea informaţiei
ejectate din rangul 3 al registrului Q, în bistabilul K;
evident, după ultima deplasare, în K se va afla semnul
înmulţitorului. Reamintim: în cadrul deplasărilor –deplasări
prin care se efectuează, de fapt, înmulţirea cu 2 -1 a
produselor parţiale-, în rangul 0 al registrului A intră, după
caz, zero-uri sau unu-uri furnizate de bistabilul F.
• COR semnal auxiliar ce marchează ajungerea în ultimul pas al
algoritmului de înmulţire, pas în care se efectuează operaţia de
corecţie.

Semnalele pe care schema le primeşte din exterior sunt:


• CLK: semnal de tact, primit de înmulţitor de la unitatea de comandă
a procesorului. Acest semnal va pilota funcţionarea tuturor
elementelor secvenţiale ale schemei: bistabilele F şi K,
registrele A, Q şi M şi blocul de comandă BC.
• MUL: semnal de declanşare a unei noi sesiuni de lucru a
înmulţitorului, primit de înmulţitor din partea unităţii de
comandă a procesorului. Declanşarea unei noi sesiuni de
lucru a înmulţitorului se va face la fiecare tranziţie de la 0 la 1
a acestui semnal.

82
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Blocul de comandă trebuie să aibă 11 stări:


• 1 stare de repaus
• 1 stare de iniţializare
• 4 x 2 = 8 stări de încărcare paralelă şi deplasare (câte o pereche de
operaţii de încărcare paralelă / deplasare pentru fiecare bit al
înmulţitorului)
• 1 stare de corecţie, care presupune efectuarea şi a unei operaţii de
încărcare paralelă
Vom proiecta acest bloc, de această dată, cu ajutorul unui numărător.
Evident, numărătorul trebuie să fie modulo 11. Bistabilele numărătorului
le vom nota cu B3-B0.
Considerăm, mai întâi, drept stare de repaus, starea 0 a numărătorului.
Adoptăm, apoi, ca procesul de numărare să înceapă atunci când tactul
găseşte semnalul MUL pe 1. Stabilim, în continuare, ca numărarea să ţină
cât timp cel puţin un bistabil al numărătorului este pe 1, dar nu mai mult de
11 perioade ale semnalului de tact. Mai exact, luăm măsuri ca la atingerea
în numărător a valorii 11, el să fie forţat asincron la 0.
Instituim drept stare de iniţializare starea 1 a numărătorului, iar drept
stări de încărcare paralelă, stările pare din intervalul 2-9 şi starea a 10-a.
Sunt, evident, 5 astfel de stări: 4 dedicate preluării sumelor ce intervin în
calculul produselor parţiale pe baza formulelor de recurenţă P0' = 0 ,
2 Pi ' = (2 Pi −' 1 + xi' − n  2 y ' )  2 −1 , i = 1...n , cu n = 4, şi 1 dedicată efectuării
corecţiei pe care algoritmul o impune pentru cazurile când înmulţitorul
este un număr negativ (corecţie care, reamintim, constă în scăderea
deînmulţitului din produsul parţial aferent ultimului pas).

Dedicăm drept stări de deplasare dreapta stările impare din intervalul


2-9. Sunt, evident, 4 astfel de stări. Ele servesc efectuării înmulţirii cu 2 -1
prezente în formula de calcul al produselor parţiale,
−1
2 Pi = (2 Pi −1 + xi −n  2 y )  2 , i = 1...n .
' ' ' '

Alocăm ca stare de corecţie starea 10 a numărătorului. În cadrul ei, se va


activa semnalul COR, astfel încât circuistica din jurul multiplexorului
MUX, împreună cu acesta, să poată asigura aplicarea la intrarea 2 a
sumatorului SUM fie a opusului deînmulţitului, atunci când corecţia se
impune, fie a valorii 0000, altfel.

83
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

S0 0000 0100
S4

0 ÎP
MUL
1 0101
0001 S5
S1
DD
IN
F  0, 0110
A(0:3)  0, S6
Q(0:3)  x’,
ÎP
M(0:3)  y’;
0111
0010 S7
S2
DD
ÎP
A(0:3)  z(0:3), 1000
F  F + M(0)Q(3); S8
// z(0:3) = A(0:3) + Q(3)*M(0:3)
ÎP
0011 A(0:3)  z(0:3),
S3 F  F + M(0)Q(3);
// z(0:3) = A(0:3) + Q(3)*M(0:3)
DD
K  Q(3), 1001
Q(3)  Q(2), S9

Q(0)  A(3), DD
A(3)  A(2), K  Q(3),
 Q(3)  Q(2),
A(0)  F; 
Q(0)  A(3),
A(3)  A(2),

A(0)  F;
1010
S10

ÎP, COR
A(0:3)  z(0:3),
F  F + M(0)Q(3);
// z(0:3) = A(0:3) - K*M(0:3)

Fig. 4.3.3_2. Organigrama funcţionării înmulţitorului Robertson.


84
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Când numărătorul atinge, în mod natural, starea 11, se va forţa


imediat –adică: în mod asincron- aducerea lui la zero; în acest fel,
numărătorul va număra modulo 11. Semnalul de forţare a aducerii
numărătorului la zero, la atingerea stării 11 are ecuaţia:
___________________
R = B3  B2  B1  B0

Întrucât combinaţia pentru care B3  B2  B1  B0 = 1 nu apare niciodată,


expresia lui R poate fi minimizată la forma:
_____________
R = B3  B1  B0 (4.3.3-1)

Organigrama de funcţionare a înmulţitorului Robertson este redată pe


pagina precedentă, în figura 4.3.3_2.

Evident, stările blocului de comandă realizat ca numărător modulo 11


nu vor mai fi codificate adiacent –vezi figura 4.3.3_3-, cum au fost la
înmulţitorul în semn mărime.
B1B0
B3B2 00 01 11 10
00 S0 S1 S3 S2
01 S4 S5 S7 S6
11 * * * *
10 S8 S9 * S10

Fig. 4.3.3_3. Diagrama codificării stărilor.

Ecuaţiile semnalelor de comandă generate de blocul BC se vor


determina construind, pentru fiecare dintre ele, cu ajutorul informaţiilor din
figurile 4.3.3_2 şi 4.3.3_3, “diagrama ieşirii”.
B1B0
B3B2 00 01 11 10
00 0 1 0 0
01 0 0 0 0
11 * * * *
10 0 0 * 0

 IN = B3  B2  B1  B0
Fig. 4.3.3_4. Diagrama ieşirii IN.

85
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 0 0 0 1
01 1 0 0 1
11 * * * *
10 1 0 * 1

 IP = B1  B0 + B2  B0 + B3  B0
Fig. 4.3.3_5. Diagrama ieşirii ÎP.

B1B0
B3B2 00 01 11 10
00 0 0 1 0
01 0 1 1 0
11 * * * *
10 0 1 * 0
 DD = B1  B0 + B2  B0 + B3  B0
Fig. 4.3.3_6. Diagrama ieşirii DD.

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 0 0 0 0
11 * * * *
10 0 0 * 1

 COR = B3  B1
Fig. 4.3.3_7. Diagrama ieşirii COR

Aşadar, ecuaţiile ieşirilor IN, ÎP, DD şi COR vor fi:


IN = B3  B2  B1  B0 (4.3.3_2)
_____________
IP = B1  B0 + B2  B0 + B3  B0 = ( B1 + B2 + B3 )  B0 = B1  B2  B3  B0 (4.3.3_3)
_____________
DD = B1  B0 + B2  B0 + B3  B0 = ( B1 + B2 + B3 )  B0 = B1  B2  B3  B0 (4.3.3_4)
COR = B3  B1 (4.3.3_5)

Pentru implementarea numărătorului, vom folosi bistabile J-K, cu


comutare pe frontul coborâtor al semnalului de tact. Pentru ca ansamblul
celor 4 bistabile să funcţioneze ca numărător, vom asigura pentru intrările
lor J şi K semnale cu următoarele ecuaţii:
86
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

J i = K i = MUL + B0 + B1 + B2 + B3 , i = 0 ... 3 (4.3.3_6)

C0 = CLK , Ci = Bi −1 ,i = 1...3 (4.3.3_7)

Evident, în acest fel, circuitul format din cele 4 bistabile va începe


numărarea prin comutarea de la 0 la 1 a bistabilului B0 şi o va continua cât
timp cel puţin unul dintre bistabile va fi pe 1, adică: până la atingerea stării
11, când va intra în acţiune semnalul R şi va reinstitui starea 0.

Pe baza ecuaţiilor (4.3.3_1) - (4.3.3_7), se obţine pentru blocul de


comandă al înmulţitorului Robertson schema din figura 4.3.3_8.

COR

DD

ÎP

IN
CLK

J Q J Q J Q J Q
C B3 C B2 C B1 C B0
K R Q K R Q K R Q K R Q
RES

MUL

Fig. 4.3.3_8. Schema blocului de comandă al înmulţitorului Robertson.

87
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

În figura 4.3.3_9, se prezintă cronograma de funcţionare a schemei din


figura 4.3.3_8.
S0 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S0

CLK

MUL

B0

B1

B2

B3

RE S

IN

IP

DD

COR

Fig. 4.3.3_9. Cronograma de funcţionare a dispozitivului de comandă


al înmulţitorului Robertson.
Observaţie:
Acţiunile semnalelor de comandă IN, ÎP, DD şi UP se produc efectiv pe frontul ridicător
(posibil, însă, şi pe cel coborâtor) al semnalului de tact din ciclul în care ele sunt active.

În final, se prezintă, în tabelele care fac obiectul figurilor 4.3.3_10-


4.3.3_13, patru exemple de înmulţire după metoda Robertson, câte unul
pentru fiecare din cele patru cazuri pentru care metoda prevede reţete
distincte.

88
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Nr. crt. B3B2B1B0 F A Q K M Operaţia


0 0000 x xxxx xxxx x xxxx START  linia 1
1 0001 x xxxx xxxx x xxxx IN  linia 2
2 0010 0 0000 + 0110 0 0010 ÎP  linia 3
0000
3 0011 0 0000 0110 0 0010 DD  linia 4
4 0100 0 0000 + 0011 0 0010 ÎP  linia 5
0010
5 0101 0 0010 0011 0 0010 DD  linia 6
6 0110 0 0001 + 0001 1 0010 ÎP  linia 7
0010
7 0111 0 0011 0001 1 0010 DD  linia 8
8 1000 0 0001 + 1000 1 0010 ÎP  linia 9
0000
9 1001 0 0001 1000 1 0010 DD  linia 10
10 1010 0 0000 + 1100 0 0010 ÎP  linia 11
0000
11 0000 0 0000 1100 0 0010 NIMIC  linia 12
12 0000 0 0000 1100 0 0010

Fig. 4.3.3_10. Exemplu de înmulţirea cu metoda Robertson: y = 2, x = 6 (cazul 1).


Observaţie:
Rezultatul este: 0000 1100c2 = 0000 1100sm = +000 11002 = +1210
Nr. crt. B3B2B1B0 F A Q K M Operaţia
0 0000 x xxxx xxxx x xxxx START  linia 1
1 0001 x xxxx xxxx x xxxx IN  linia 2
2 0010 0 0000 + 0110 0 1110 ÎP  linia 3
0000
3 0011 0 0000 0110 0 1110 DD  linia 4
4 0100 0 0000 + 0011 0 1110 ÎP  linia 5
1110
5 0101 1 1110 0011 0 1110 DD  linia 6
6 0110 1 1111 + 0001 1 1110 ÎP  linia 7
1110
7 0111 1 1101 0001 1 1110 DD  linia 8
8 1000 1 1110 + 1000 1 1110 ÎP  linia 9
0000
9 1001 1 1110 1000 1 1110 DD  linia 10
10 1010 1 1111 + 0100 0 1110 ÎP  linia 11
0000
11 0000 1 1111 0100 0 1110 NIMIC  linia 12
12 0000 1 1111 0100 0 1110

Fig. 4.3.3_11. Exemplu de înmulţirea cu metoda Robertson: y = -2, x = 6 (cazul 2).


Observaţie:
Rezultatul este: 1111 0100c2 = 1000 1100sm = -000 11002 = -1210

89
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Nr. crt. B3B2B1B0 F A Q K M Operaţia


0 0000 x xxxx xxxx x xxxx START  linia 1
1 0001 x xxxx xxxx x xxxx IN  linia 2
2 0010 0 0000 + 1010 0 0010 ÎP  linia 3
0000
3 0011 0 0000 1010 0 0010 DD  linia 4
4 0100 0 0000 + 0101 0 0010 ÎP  linia 5
0010
5 0101 0 0010 0101 0 0010 DD  linia 6
6 0110 0 0001 + 0010 1 0010 ÎP  linia 7
0000
7 0111 0 0001 0010 1 0010 DD  linia 8
8 1000 0 0000 + 1001 0 0010 ÎP  linia 9
0010
9 1001 0 0010 1001 0 0010 DD  linia 10
10 1010 0 0001 + 0100 1 0010 ÎP  linia 11
1110
11 0000 0 1111 0100 0 0010 NIMIC  linia 12
12 0000 0 1111 0100 0 0010

Fig. 4.3.3_12. Exemplu de înmulţirea cu metoda Robertson: y = 2, x = -6 (cazul 3).


Observaţie:
Rezultatul este: 1111 0100c2 = 1000 1100sm = -000 11002 = -1210
Nr. crt. B3B2B1B0 F A Q K M Operaţia
0 0000 x xxxx xxxx x xxxx START  linia 1
1 0001 x xxxx xxxx x xxxx IN  linia 2
2 0010 0 0000 + 1010 0 1110 ÎP  linia 3
0000
3 0011 0 0000 1010 0 1110 DD  linia 4
4 0100 0 0000 + 0101 0 1110 ÎP  linia 5
1110
5 0101 1 1110 0101 0 1110 DD  linia 6
6 0110 1 1111 + 0010 1 1110 ÎP  linia 7
0000
7 0111 1 1111 0010 1 1110 DD  linia 8
8 1000 1 1111 + 1001 0 1110 ÎP  linia 9
1110
9 1001 1 1101 1001 0 1110 DD  linia 10
10 1010 1 1110 + 1100 1 1110 ÎP  linia 11
0010
11 0000 1 0000 1100 1 1110 NIMIC  linia 12
12 0000 1 0000 1100 0 1110

Fig. 4.3.3_13. Exemplu de înmulţirea cu metoda Robertson: y = -2, x = -6 (cazul 4).


Observaţie:
Rezultatul este: 0000 1100c2 = 0000 1100sm = +000 11002 = +1210

90
91
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.3.3. Sinteza unui dispozitiv de înmulțire combinaţional

Procedeul de înmulţire considerat anterior implică o execuţie


secvenţială. El are avantajul că se implementează printr-o circuistică relativ
restrânsă, dar şi dezavantajul că necesită pentru efectuarea înmulțirii un
timp cu atât mai mare cu cât operează pe mai mulţi biţi. Progresele
înregistrate de tehnologia microelectronică au făcut posibilă și convenabilă
prin prisma performanță-cost realizarea de dispozitive de înmulțire
combinaţionale, ultrarapide.

La baza conceperii unui dispozitiv de înmulțire combinaţional stau


următoarele considerente:
Dacă cei doi operanzi, exprimaţi în semn-mărime, sunt:
_________________
y ' = y0' y−' 1... y−' ( n−1) (4.3.3_1)
_________________
x ' = x0' x−' 1 ... x−' ( n−1) (4.3.3_2)

modulele lor fiind:


_________________
y = 0 y ... y
' '
−1
'
− ( n −1) (4.3.3_3)
_________________
x = 0 x ... x
' '
−1
'
− ( n −1) (4.3.3_4)

atunci:
 n −1 −i '   n −1 −i ' 
___________________
P = 0 p p ... p
' ' '
−1 − 2 = y  x =   2 y −i     2 x −i  =
'
−( 2n − 2)
' '

 i =1   i =1 
−2 −3 − ( 2 n−2 )
= 2 ( x−1 y−1 ) + 2 ( x−1 y−2 + x−2 y−1 ) + ... + 2
' ' ' ' ' '
( x−' ( n−1) y−' ( n−1) ) (4.3.3_5)
iar:
______________________
P ' = p 0' p −' 1 p −' 2 ... p −' ( 2 n −2) (4.3.3_6)
cu:
p0' = x0'  y0' (4.3.3_7)
p−' 1 = c−' 2 (4.3.3_8)
p−' 2 = x−' 1 y−' 1 + c−' 3 (4.3.3_9)
p−' 3 = x−' 1 y−' 2 + x−' 2 y−' 1 + c−' 4 (4.3.3_10)

p−' ( 2 n−2) = x−' ( n−1) y−' ( n−1) (4.3.3_11)
91
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

În cazul concret n=4, se va avea:


_______________
y = y y y y
' ' ' '
0 −1 − 2 −3
'
(4.3.3_12)
_______________
x' = x x x x ' ' '
0 −1 − 2 −3
'
(4.3.3_13)
______________
y' = 0 y y y ' '
−1 − 2 −3
'
(4.3.3_14)
_____________
x = 0x x x
' ' '
−1 − 2 −3
'
(4.3.3_15)
___________________________
P ' = 0 p −' 1 p −' 2 p −' 3 p −' 4 p −' 5 p −' 6 = y '  x ' = 2 −2 ( x −' 1 y −' 1 ) + 2 −3 ( x −' 1 y −' 2 + x −' 2 y −' 1 ) +
+ 2 −4 ( x−' 1 y−' 3 + x−' 2 y−' 2 + x−' 3 y−' 1 ) + 2 −5 ( x−' 2 y−' 3 + x−' 3 y−' 2 ) + 2 −6 ( x−' 3 y−' 3 )
iar: (4.3.3_16)
____________________________
P =
' ' ' '
p p p p p p p ' '
0 −1 − 2 −3 − 4 −5 − 6
' '
(4.3.3_17)
cu:
p0' = x0'  y0' (4.3.3_18)
p−' 1 = c−' 2 (4.3.3_19)
p−' 2 = x−' 1 y−' 1 + c−' 3 (4.3.3_20)
p−' 3 = x−' 1 y−' 2 + x−' 2 y−' 1 + c−' 4 (4.3.3_21)
p−' 4 = x−' 1 y−' 3 + x−' 2 y−' 2 + x−' 3 y−' 1 + c−' 5 (4.3.3_22)
p−' 5 = x−' 2 y−' 3 + x−' 3 y−' 2 (4.3.3_23)
p−' 6 = x−' 3 y−' 3 (4.3.3_24)

Pe baza relaţiilor (4.3.3_17)...(4.3.3_24), rezultă, pentru înmulţitorul


combinaţional pe 4 biţi, schema din figura 4.3.3_1.
x0' y0' x−' 1 y−' 1 x−' 1 y−' 2 0 x−' 1 y−' 3 0 x−' 2 y−' 3 0 x−' 3 y −' 3

c-31 c-41 x−' 2 y−' 2 c-5 x−' 3 y −' 2

x−' 2 y−' 1 x−' 3 y−' 1

c-2 c-32 c-42

z z z

p0' p−' 1 p−' 2 p−' 3 p−' 4 p−' 5 p−' 6


4
Fig. 4.3.3_1. Schema înmulţitorului combinaţional (cazul operanzilor pe 4 biţi).
92
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.4. Dispozitive de împărţire


4.4.1. Principii
Operaţia de împărţire se efectuează în calculator cel mai convenabil în
semn-mărime. În procesul de împărţire propriu-zisă, se operează cu
modulele numerelor, semnul câtului urmând a fi stabilit separat, ca funcţie
SAU EXCLUSIV între bitul corespunzător semnului deîmpărţitului şi bitul
corespunzător semnului împărţitorului.
Fie cei doi operanzi –deîmpărţitul, respectiv împărţitorul- exprimaţi în
semn-mărime, după cum urmează:
__________________
x ' = x0' x−' 1 ... x−' ( 2 n−2) (4.4.1_1)
_________________
y ' = y0' y−' 1... y−' ( n−1) (4.4.1_2)

Pentru modulele lor, vom avea:


__________________
x = 0 x ... x
' '
−1
'
−( 2 n − 2 ) (4.4.1_3)
________________
y = 0 y ... y
' '
−1
'
− ( n −1) (4.4.1_4)

Este lesne de înţeles că, în semn mărime, dacă la nivel de module,


deîmpărţitul ar fi mai mare sau egal cu împărţitorul, atunci ar rezulta un cât
de modul supraunitar, care, în consecinţă, ar fi nereprezentabil (reamintim:
în semn mărime, numerele pozitive sunt reprezentate prin numere din
intervalul (0; 1), iar numerele negative, prin numere din intervalul (1; 2),
în timp ce numărul 0 are dublă imagine, pe 0 şi pe 1). Aşadar, este
obligatoriu ca:

x'  y' (4.4.1_5)

putând avea fie:


 y' 
x  0;
'  (4.4.1_6)
 2 

fie:
 y' 
x   ; y'
'  (4.4.1_7)
 2 

93
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

x' 1
Evident, în primul caz '
 şi, în consecinţă, bitul de pondere 2-1 al
y 2
x' 1
câtului va fi 0, iar în cazul al doilea '
 şi, în consecinţă, bitul de
y 2
pondere 2-1 al câtului va fi 1. Distincţia între cele două cazuri se va face în
practică prin testarea semnului expresiei 2 x ' - y ' .

Aceeaşi logică se va aplica, fireşte, şi pentru determinarea biţilor de


pondere 2-2, 2-3, ş.a.m.d., considerând, însă, în locul deîmpărţitului iniţial,
ceea ce a mai rămas din el în urma paşilor precedenţi, adică: deîmpărţiturile
parţiale sau, cum se spune mai frecvent în literatură, “resturile parţiale”.

O precizare se impune. Aşa cum s-a arătat în paragraful 4.3.1, la


înmulţirea a doi operanzi reprezentaţi în semn-mărime pe câte “n” biţi, se
obţine, natural, un rezultat exprimat pe 2n-1 biţi. Există, însă, posibilitatea
ca acest rezultat să fie reprezentat pe 2n biţi –aşa cum este, evident, mult
mai adecvat-, dacă se iau două măsuri: pe de o parte, se adaugă un bit de
mărime cu valoarea 0, imediat după cifra corespunzătoare semnului, iar pe
de altă parte, se calculează valoarea efectivă a numărului iniţial
înmulţind imaginea sa semn-mărime nu cu M, ci cu 2M; şi toate acestea,
1
pentru că sm( x) lc _ sm ( x )=2 n = sm( x) lc _ sm ( x )=2 n−1 .
2

Pe baza aceleiaşi logici, vom considera deîmpărţitul reprezentat nu pe


2n-1 biţi, ci pe 2n biţi, neuitând să ţinem seamă că
1
x ' pe 2 n biti = x ' pe 2 n-1 biti .
2

Ca o chintesenţă a celor de mai sus, rezultă algoritmul de împărţire


prezentat în organigrama din figura 4.4.1_1.

94
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

START
___ ___________________
x = x0' x−' 1 ...x−' ( 2 n−1 ) : reprezentarea semn-mărime pe 2n biţi a deîmpărţitului,
'

egală cu ½ din valoarea reprezentării pe 2n-1 biţi


___ __________________
y = y0' y−' 1 ...y−' ( n−1 ) : reprezentarea semn-mărime pe n biţi a împărţitorului
'

x’ 2x’
// se face x’ egal cu modulul deîmpărţitului
deîmpărţitul
q0' = x0'  y0'

i=1

x’ 2x’ – y’

q−i' = 1

DA
x’ 0
NU
q−i' = 0

x’ x’ + y’

i= i+1

DA
i n-1
NU
___ __________________
q = q0' q−' 1 ...q−' ( n−1 ) : câtul, în reprezentare semn-mărime
'

___ ___________________
x = x0' x−' 1 ...x−' ( 2 n−1 ) : restul, în reprezentare semn-mărime
'

STOP

Fig. 4.4.1_1. Organigrama algoritmului fundamental de împărţire .

95
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

4.4.2. Sinteza unui dispozitiv de împărţire de numere în semn mărime,


operând cu refacerea resturilor

Algoritmul fundamental de împărţire prezentat în organigrama din


figura 4.4.1_1 constituie ceea ce se cheamă “metoda de împărţire cu
refacerea resturilor”. Un dispozitiv de împărţire bazat pe această metodă
are schema bloc din figura 4.4.2_1, concepută în ipoteza n = 4.
registrul
deîmpărţitului, AQ

selectat registrul
registrul restului, A registrul câtului, Q M cu 1 împărţitorului, M
' ' ' ' ' ' ' ' U ' ' ' '
x0 x−1 x− 2 x−3 AQ(3) x−4 x−5 x −6 x −7 X “1” y0 y −1 y − 2 y −3
1
selectat
IN
PD cu 0
DS
ÎS
ÎA
“0”
4
z
selectat cu “1”
- DAS 4 4
4 4 M
IN PD DS ÎS ÎA 1 2
U 4 0000
X
BC 2 selectat cu “0”

CLK DIV

Fig. 4.4.2_1. Schema bloc a dispozitivului de împărţire cu refacerea resturilor.

Elementele structurale ale schemei sunt:


• A: registru de deplasare stânga, cu posibilităţi de încărcare
paralelă
• Q: registru de deplasare stânga, cu posibilităţi de încărcare
paralelă
• M: registru cu posibilităţi de încărcare paralelă
• DAS: dispozitiv de adunare și scădere paralel, pe 4 biţi
• MUX1, MUX2:multiplexoare
• BC: bloc de comandă

Registrul A este iniţial, împreună cu registrul Q, sediul deîmpărţitului


reprezentat în semn-mărime pe 8 biţi, iar în final, sediul restului. Aşa cum
s-a arătat, considerentele de scalare ar fi cerut ca, în cazul operării pe 4 biţi
96
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

la nivelul împărţitorului şi câtului, deîmpărţitul să fie reprezentat pe 7 biţi.


Faptul că în schema noastră el apare pe 8 biţi -precizăm din nou:
1
reprezentarea semn-mărime pe 8 biţi a unui număr are valoarea egală cu
2
din valoarea reprezentării aceluiaşi număr pe 7 biţi- face ca prima operaţie
efectuată asupra registrului ce-l găzduieşte să fie una de înmulţire cu 2.
Această înmulţire se face prin deplasare la stânga cu un rang. Cu ocazia
deplasării, bitul corespunzător semnului deîmpărţitului va dispărea, nu însă
înainte ca el să fie folosit, împreună cu bitul corespunzător semnului
împărţitorului, la determinarea semnului câtului, semn care va fi introdus în
rangul 3 al registrului Q. În continuare, registrul A va fi, succesiv, supus
câte unui triplet de operaţii, cuprinzând, în ordine: o deplasare la stânga în
concatenare cu registrul Q (calculul lui 2x’), o încărcare paralelă cu
rezultatul scăderii din el a modulului împărţitorului (încărcarea cu 2x’- y’
-vezi figura 4.4.1_1) şi o încărcare paralelă cu rezultatul adunării la el a
modulului împărţitorului (încărcarea cu 2x’+ y’ -vezi figura 4.4.1_1) sau
a valorii 0, după caz.

Registrul Q este, iniţial, împreună cu registrul A, sediul deîmpărţitului,


iar în final, sediul câtului. Cu ocazia primei deplasări la stânga la care el
este supus în concatenare cu registrul A, în rangul său 3 va fi introdus
semnul câtului. În continuare, la fiecare deplasare, în acest rang 3 se va
introduce un 1, pentru alternativa că cifra câtului aflată în curs de
determinare în pasul respectiv este 1. Dacă lucrurile vor sta contrar –adică:
se va constata că 2x’- y’  0-, atunci în ciclul de încărcare după adunare a
registrului A, rangul 3 al registrului Q va fi forţat la 0 (asta prin semnalul
AQ(3) din figura 4.4.2_1; “AQ(3)” vine de la anulează Q(3)).

Registrul M este, de la început până la sfârşit, sediul împărţitorului, adus


aici în etapa de iniţiere a unei noi sesiuni de împărţire.

Multiplexorul MUX1 are rolul de a furniza pentru introducere în


rangul 3 al registrului Q fie semnul câtului, fie un 1, dependent de valoarea
semnalului PD.

Multiplexorul MUX2 are rolul de a furniza pentru intrarea 2 a


dispozitivului de adunare și scădere DAS, în ciclurile de scădere, modulul
împărţitorului, iar în ciclurile de adunare, modulul împărţitorului, dacă
după scăderea ce le precede, conţinutul lui A a ajuns negativ (adică: A(0) =
1), respectiv valoarea 0000, altfel.
97
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Dispozitivului de adunare și scădere DAS este un dispozitiv de adunare


și scădere binar paralel oarecare, cu rolul de a calcula, pe de o parte,
diferenţele 2x’- y’, iar pe de altă parte sumele x’+ y’, respectiv x’+ 0.

Blocul de comandă BC este un automat secvenţial cu rolul de a sintetiza


semnalele de comandă interne ale împărţitorului, şi anume: IN, PD, DS, ÎS
şi ÎA. Semnificaţiile acestor semnale sunt următoarele:
• IN: semnal de iniţializare a împărţitorului, generat intern, de către
blocul de comandă BC, la începutul fiecărei noi sesiuni de
lucru. Iniţializarea constă în:
➢ încărcarea registrului A cu partea mai semnificativă din
reprezentarea semn-mărime pe 8 biţi a deîmpărţitului
➢ încărcarea registrului Q cu partea mai puţin
semnificativă din reprezentarea semn-mărime pe 8 biţi a
deîmpărţitului
➢ încărcarea registrului M cu împărţitorul, în reprezentare
semn-mărime pe 4 biţi
• PD: semnal de marcare a faptului că este în derulare prima operaţie
de deplasare la stânga a informaţiei din registrele A şi Q
concatenate. Acest semnal serveşte comandării
multiplexorului MUX1, astfel încât el să furnizeze pentru
introducere în rangul 3 al registrului Q fie semnul câtului, fie
un 1.
• DS: semnal de deplasare la stânga a informaţiei din registrele
A şi Q, considerate în concatenare. La prima deplasare
(adică: în timp ce PD=1), în rangul 3 al registrului Q se
va introduce semnul câtului, iar la celelalte deplasări, câte
un 1, pentru alternativa că cifra câtului aflată în curs de
determinare în pasul respectiv este 1. Dacă lucrurile vor sta
contrar –adică: se va constata că 2x’- y’  0-, atunci în
ciclul de încărcare după adunare a registrului A, rangul 3
al registrului Q va fi forţat la 0.
• ÎS: semnal de încărcare paralelă a registrului A cu rezultatul
scăderii din el a modulului împărţitorului (calculul lui
2x’- y’).
• ÎA: semnal de încărcare paralelă a registrului A cu rezultatul
adunării la el a modulului împărţitorului, respectiv a valorii
0000, după caz, în funcţie de semnul cantităţii 2x’- y’.

98
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Semnalele pe care schema le primeşte din exterior sunt:


• CLK: semnal de tact, primit de împărţitor de la unitatea de comandă
a procesorului. Acest semnal va pilota funcţionarea
tuturor elementelor secvenţiale ale schemei: registrele A, Q
şi M şi blocul de comandă BC.
• DIV: semnal de declanşare a unei noi sesiuni de lucru a
împărţitorului, primit de împărţitor din partea unităţii de
comandă a procesorului. Declanşarea unei noi sesiuni de
lucru a împărţitorului se va face la fiecare tranziţie de la 0 la 1
a acestui semnal.
Blocul de comandă trebuie să aibă 12 stări:
• 1 stare de repaus
• 1 stare de iniţializare
• 1 stare de deplasare stânga preliminară a registrelor A şi Q, tratate
concatenat
• 3 x 3 = 9 stări de deplasare stânga, încărcare paralelă asociată scăderii şi
încărcare paralelă asociată adunării
Vom proiecta acest bloc, cu ajutorul unui numărător. Evident,
numărătorul trebuie să fie modulo 12. Bistabilele numărătorului le vom
nota cu B3-B0.
Considerăm, mai întâi, drept stare de repaus, starea 0 a numărătorului.
Adoptăm, apoi, ca procesul de numărare să înceapă atunci când tactul
găseşte semnalul DIV pe 1. Stabilim, în continuare, ca numărarea să ţină
cât timp cel puţin un bistabil al numărătorului este pe 1, dar nu mai mult de
12 perioade ale semnalului de tact. Mai exact, luăm măsuri ca la atingerea
în numărător a valorii 12, el să fie forţat asincron la 0.
Instituim drept stare de iniţializare starea 1 a numărătorului, iar drept
stări de deplasare stânga, starea 2 şi stările multiplu de 3. Dedicăm pentru
scădere stările 4, 7 şi 10, iar pentru adunare –stările 5, 8 şi 11.
Când numărătorul atinge, în mod natural, starea 12, se va forţa
imediat –adică: în mod asincron- aducerea lui la zero; în acest fel,
numărătorul va număra modulo 12. Semnalul de forţare a aducerii
numărătorului la zero la atingerea stării 12 are ecuaţia:
_________
R = B3  B2 (4.4.2_1)
Organigrama de funcţionare a împărţitorului este redată în
figura 4.4.2_2.
99
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

S0 0000 S6 0110

DIV 0 DS
1 0111
0001 S7
S1
ÎS
IN
A(0:3).Q(0:3)  x’sm pe 8 biţi ,
S8 1000
M(0:3)  y’sm pe 4 biţi ;

S2 0010 ÎA

S9 1001
DS, PD
Q(3)  A(0)M(0),
... DS
A(3)  Q(0),
A(0)  A(1); S10 1010

S3 0011 ÎS

DS S11 1011
Q(3)  1,
...
A(3)  Q(0), ÎA
A(0)  A(1);
// A(0:3) = pcms a lui 2x’

S4 0100

ÎS
A(0:3)  z(0:3),
// z(0:3) = A(0:3) – MUX2(0:3)
// MUX2(0:3) = 0.M(1:3) = y’

S5 0101

ÎA
A(0:3)  z(0:3),
//z(0:3) = A(0:3) + MUX2(1:3)
//MUX2(0:3) = fie 0.M(1:3), fie 0000

Fig. 4.4.2_2. Organigrama funcţionării împărţitorului cu refacerea resturilor.


100
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Codificarea stărilor blocului de comandă realizat ca numărător modulo


12 este redată în figura 4.4.2_3.
B1B0
B3B2 00 01 11 10
00 S0 S1 S3 S2
01 S4 S5 S7 S6
11 * * * *
10 S8 S9 S11 S10
Fig. 4.4.2_3. Diagrama codificării stărilor.

Ecuaţiile semnalelor de comandă generate de blocul BC se vor


determina construind, pentru fiecare dintre ele, cu ajutorul informaţiilor din
figurile 4.4.2_2 şi 4.4.2_3, “diagrama ieşirii”.
B1B0
B3B2 00 01 11 10
00 0 1 0 0
01 0 0 0 0
11 * * * *
10 0 0 0 0
 IN = B3  B2  B1  B0
Fig. 4.4.2_4. Diagrama ieşirii IN.
B1B0
B3B2 00 01 11 10
00 0 0 0 1
01 0 0 0 0
11 * * * *
10 0 0 0 0
 PD = B3  B2  B1  B0
Fig. 4.4.2_5. Diagrama ieşirii PD.

B1B0
B3B2 00 01 11 10
00 0 0 1 1
01 0 0 0 1
11 * * * *
10 0 1 0 0
 DS = B3  B2  B1 + B3  B1  B0 + B3  B1  B0
Fig. 4.4.2_6. Diagrama ieşirii DS.
101
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 1 0 1 0
11 * * * *
10 0 0 0 1

 IS = B2  B1  B0 + B2  B1  B0 + B3  B1  B0
Fig. 4.4.2_7. Diagrama ieşirii ÎS

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 0 1 0 0
11 * * * *
10 1 0 1 0

 IA = B3  B1  B0 + B2  B1  B0 + B3  B1  B0
Fig. 4.4.2_8. Diagrama ieşirii ÎA

Aşadar, ecuaţiile ieşirilor IN, PD, DS, ÎS şi ÎA vor fi:

IN = B3  B2  B1  B0 (4.4.2_2)
PD = B3  B2  B1  B0 (4.4.2_3)
DS = B3  B2  B1 + B3  B1  B0 + B3  B1  B0 (4.4.2_4)
IS = B2  B1  B0 + B2  B1  B0 + B3  B1  B0 (4.4.2_5)
IA = B3  B1  B0 + B2  B1  B0 + B3  B1  B0 (4.4.2_6)

Pentru implementarea numărătorului, vom folosi bistabile J-K, cu


comutare pe frontul coborâtor al semnalului de tact. Pentru ca ansamblul
celor 4 bistabile să funcţioneze ca numărător, vom asigura pentru intrările
lor J şi K semnale cu următoarele ecuaţii:

J i = K i = DIV + B0 + B1 + B2 + B3 , i = 0...3 (4.3.3_7)

C0 = CLK , Ci = Bi −1 ,i = 1...3 (4.3.3_8)

102
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Evident, în acest fel, circuitul format din cele 4 bistabile va începe


numărarea prin comutarea de la 0 la 1 a bistabilului B0 şi o va continua cât
timp cel puţin unul dintre bistabile va fi pe 1, adică: până la atingerea stării
12, când va intra în acţiune semnalul R şi va reinstitui starea 0.

Pe baza ecuaţiilor (4.4.2_1) - (4.4.2_8), se obţine pentru blocul de


comandă al împărţitorului schema din figura 4.4.2_9.

ÎA

schemă ÎS
cu
porţi
DS

PD

IN
CLK

J Q J Q J Q J Q
C B3 C B2 C B1 C B0
K R Q K R Q K K
R Q R Q
RES

DIV

Fig. 4.4.2_9. Schema blocului de comandă al împărţitorului cu refacerea resturilor.

În figura 4.4.2_10, se prezintă cronograma de funcţionare a schemei


din figura 4.4.2_9.

103
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

S0 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11
CLK

DIV

B0

B1

B2

B3

RE S

IN

PD

DS

ÎS

ÎA

Fig. 4.4.2_10. Cronograma de funcţionare a dispozitivului de comandă


al împărţitorului cu refacerea resturilor.
Observaţie:
Acţiunile semnalelor de comandă IN, PD, DS, ÎS şi ÎA se produc efectiv pe
frontul ridicător (posibil, însă, şi pe cel coborâtor) al semnalului de tact din ciclul
în care ele sunt active.

În final, se prezintă, în tabelul care face obiectul figurii 4.4.2_11, un


exemplu de împărţire cu refacerea resturilor.

104
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ


Nr. crt. B3B2B1B0 A Q M Operaţia
0 0000 xxxx xxxx xxxx START  linia 1
1 0001 xxxx xxxx xxxx IN  linia 2
2 0010 1000 1110 0011 DS, PD  linia 3
3 0011 0001 1101 0011 DS  linia 4
4 0100 0011 - 1011 0011 ÎS  linia 5
0011
5 0101 0000 + 1011 0011 ÎA  linia 6
0000
6 0110 0000 1011 0011 DS  linia 7
7 0111 0001 - 0111 0011 ÎS  linia 8
0011
8 1000 1110 + 0111 0011 ÎA  linia 9
0011
9 1001 0001 0110 0011 DS  linia 10
10 1010 0010 - 1101 0011 ÎS  linia 11
0011
11 1011 1111 + 1101 0011 ÎA  linia 12
0011
12 1100 0010 1100 0011 NIMIC  linia 13
13 0000 0010 1100 0011

Fig. 4.4.2_11. Exemplu de împărţire cu refacerea resturilor: x = -14, y = 3.

105
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ


Nr. crt. B3B2B1B0 A Q M Operaţia
0 0000 xxxx xxxx xxxx START  linia 1
1 0001 xxxx xxxx xxxx IN  linia 2
2 0010 1000 1110 0011 DS, PD  linia 3
3 0011 0001 1101 0011 DS  linia 4
4 0100 0011 - 1011 0011 ÎS  linia 5
0011
5 0101 0000 + 1011 0011 ÎA  linia 6
0000
6 0110 0000 1011 0011 DS  linia 7
7 0111 0001 - 0111 0011 ÎS  linia 8
0011
8 1000 1110 + 0111 0011 ÎA  linia 9
0011
9 1001 0001 0110 0011 DS  linia 10
10 1010 0010 - 1101 0011 ÎS  linia 11
0011
11 1011 1111 + 1101 0011 ÎA  linia 12
0011
12 1100 0010 1100 0011 NIMIC  linia 13
13 0000 0010 1100 0011

Fig. 4.4.2_11. Exemplu de împărţire cu refacerea resturilor: x = -14, y = 3.

4.4.3. Sinteza unui împărţitor de numere în semn mărime,


operând fără refacerea resturilor
Algoritmul de împărţire fără refacerea resturilor este derivat din
algoritmul de împărţire cu refacerea resturilor şi este conceput în ideea
aceleiaşi scheme bloc de principiu.
La baza algoritmului de împărţire fără refacerea resturilor stă următorul
raţionament:
Fie Ri restul parţial obţinut într-un pas “i” al algoritmului, cu i=1... n-1
şi fie R0=x’. Atunci, aşa cum s-a văzut la împărţirea cu refacerea
resturilor:
2 R0 − y ' , daca 2 R0 − y '  0
R1 =  (4.4.3_1)
2 R0 , daca 2 R0 − y '  0
Introducem notaţia:
 i = 2 Ri −1 − y' (4.4.3_2)

105
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Rezultă:

1 , daca 1  0
R1 =  (4.4.3_3)
1 + y ' , daca 1  0

şi:
21 − y ' = 21 − y ' , daca Δ1  0
 2 = 2 R1 − y ' =  (4.4.3_4)
2(1 + y ' ) − y ' = 21 + y ' , daca 1  0

 2 , daca  2  0
R2 = 
 2 + y ' , daca  2  0
...
2 i −1 − y ' , daca Δ i −1  0
 i = 2 Ri −1 − y ' =  (4.4.3_5)
2 i −1 + y ' , daca Δ i −1  0

În consecinţă, algoritmul de împărţire fără refacerea resturilor se


prezintă aşa cum se arată în organigrama din figura 4.4.3_1.

Shema bloc a împărţitorului fără refacerea resturilor, concepută în


ipoteza n = 4, este redată în figura 4.4.3_2. După cum se poate lesne
remarca, ea este aproape identică cu cea a împărţitorului cu refacerea
resturilor. Blocul de comandă va fi, însă, sensibil diferit în cele două cazuri.

Elementele structurale ale schemei sunt:


• A: registru de deplasare stânga, cu posibilităţi de încărcare
paralelă
• Q: registru de deplasare stânga, cu posibilităţi de încărcare
paralelă
• M: registru cu posibilităţi de încărcare paralelă
• SUM/SCĂZ: sumator / scăzător paralel, pe 4 biţi
• MUX: multiplexor
• BC: bloc de comandă

106
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

START
___ ___________________
x = x0' x−' 1 ...x −' ( 2 n −1 ) : reprezentarea semn-mărime pe 2n biţi a deîmpărţitului,
'

egală cu ½ din valoarea reprezentării pe 2n-1 biţi


___ __________________
y = y y ...y
' '
0 −1
' '
−( n −1 )
: reprezentarea semn-mărime pe n biţi a împărţitorului

x’ 2x’
// se face x’ egal cu modulul deîmpărţitului
deîmpărţitul
q0' = x0'  y0'

i=0

x’ 2x’ – y’

i= i+1

q−i' = 1

NU DA
x’ 0
q−i' = 0

NU NU
i < n-1 i < n-1
DA DA
x  2x + y’
’ ’
x  2x - y’
’ ’

NU
x’ 0
DA
x’ x’ + y’

___ __________________
q ' = q0' q −' 1 ...q −' ( n −1 ) : câtul, în reprezentare semn-mărime
___ ___________________
x = x0' x −' 1 ...x−' ( 2 n −1 ) : restul, în reprezentare semn-mărime
'

STOP

Fig. 4.4.3_1. Organigrama algoritmului de împărţire fără refacerea resturilor.

107
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

registrul
deîmpărţitului, AQ

selectat registrul
registrul restului, A registrul câtului, Q împărţitorului, M
M cu 1
' ' ' ' ' ' ' ' U ' ' ' '
x0 x−1 x− 2 x−3 AQ(3) x−4 x−5 x −6 x −7 X “1”
y0 y −1 y − 2 y −3
selectat
IN
PD cu 0
DS
ÎS
ÎA
4 “0”
COR
z
- sUM/SCĂZ 4
4 4
IN PD DS ÎS ÎA COR

BC

CLK DIV
Fig. 4.4.3_2. Schema bloc a împărţitorului fără refacerea resturilor.

Registrul A este iniţial, împreună cu registrul Q, sediul deîmpărţitului


reprezentat în semn-mărime pe 8 biţi, iar în final, sediul restului. Şi în acest
caz, din aceleaşi considerente de scalare legate de reprezentarea
deîmpărţitului pe 8 biţi şi nu pe 7, se impune, mai întâi, o înmulţire a sa
cu 2. Această înmulţire se face prin deplasare la stânga cu un rang. Cu
ocazia deplasării, bitul corespunzător semnului deîmpărţitului va dispărea,
nu însă înainte ca el să fie folosit, împreună cu bitul corespunzător
semnului împărţitorului, la determinarea semnului câtului, semn care va fi
introdus în rangul 3 al registrului Q. În continuare, registrul A va fi,
succesiv, supus câte unui cuplu de operaţii, cuprinzând, în ordine: o
deplasare la stânga în concatenare cu registrul Q (calculul lui 2x’) şi o
încărcare paralelă cu rezultatul scăderii sau adunării din el a modulului
împărţitorului (încărcarea cu 2x’- y’, respectiv 2x’+ y’ din figura 4.4.3_1).
În final, dacă după ultimul cuplu de operaţii deplasare-scădere/adunare,
conţinutul lui A este găsit negativ, atunci se procedează la ajustarea lui prin
adunare cu modulul împărţitorului.
Registrul Q este, iniţial, împreună cu registrul A, sediul deînmulţitului,
iar în final, sediul câtului. Cu ocazia primei deplasări la stânga la care el
este supus în concatenare cu registrul A, în rangul său 3 va fi introdus
semnul câtului. În continuare, la fiecare deplasare, în acest rang 3 se va
introduce un 1, pentru alternativa că cifra câtului aflată în curs de
108
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

determinare în pasul respectiv este 1. Dacă lucrurile vor sta contrar


–adică: se va constata că 2x’- y’, respectiv 2x’+ y’  0-, atunci, cu ocazia
încărcărilor, rangul 3 al registrului Q va fi forţat la 0, prin semnalul AQ(3)
din figura 4.4.3_2 –reamintim: “AQ(3)” vine de la anulează Q(3)-.

Registrul M este, de la început până la sfârşit, sediul împărţitorului, adus


aici în etapa de iniţiere a unei noi sesiuni de împărţire.
Multiplexorul MUX are rolul de a furniza pentru introducere în
rangul 3 al registrului Q fie semnul câtului, fie un 1, dependent de valoarea
semnalului PD.
Sumator-scăzătorul SUM/SCĂZ este un sumator-scăzător binar paralel
oarecare, cu rolul de a calcula, după caz, diferenţele 2x’- y’ sau
sumele 2x’+ y’, respectiv, în finalul algoritmului, suma x’+ y’, atunci
când după ultimul cuplu de operaţii deplasare-scădere/adunare, x’ este găsit
negativ.
Blocul de comandă BC este un automat secvenţial cu rolul de a sintetiza
semnalele de comandă interne ale împărţitorului, şi anume: IN, PD, DS, ÎS,
ÎA şi COR. Semnificaţiile acestor semnale sunt următoarele:
• IN: semnal de iniţializare a împărţitorului, generat intern, de către
blocul de comandă BC, la începutul fiecărei noi sesiuni de
lucru. Iniţializarea constă în:
➢ încărcarea registrului A cu partea mai semnificativă din
reprezentarea semn-mărime pe 8 biţi a deîmpărţitului
➢ încărcarea registrului Q cu partea mai puţin
semnificativă din reprezentarea semn-mărime pe 8 biţi a
deîmpărţitului
➢ încărcarea registrului M cu împărţitorul, în reprezentare
semn-mărime pe 4 biţi
• PD: semnal de marcare a faptului că este în derulare prima operaţie
de deplasare la stânga a informaţiei din registrele A şi Q
concatenate. Acest semnal serveşte comandării
multiplexorului MUX, astfel încât el să furnizeze pentru
introducere în rangul 3 al registrului Q fie semnul câtului, fie
un 1.
• DS: semnal de deplasare la stânga a informaţiei din registrele
A şi Q, considerate în concatenare. La prima deplasare, în
rangul 3 al registrului Q se va introduce un 1, pentru
109
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

alternativa că cifra câtului aflată în curs de determinare în


pasul respectiv este 1. Dacă lucrurile vor sta contrar –adică:
se va constata că 2x’- y’, respectiv 2x’+ y’  0-, atunci, cu
ocazia încărcărilor la care este supus registrul A (mai puţin în
timpul celei cu scop ajustativ, din finalul algoritmului),
rangul 3 al registrului Q va fi forţat la 0.
• ÎS: semnal de încărcare paralelă a registrului A cu rezultatul
scăderii din el a modulului împărţitorului (calculul lui
2x’- y’).
• ÎA: semnal de încărcare paralelă a registrului A cu rezultatul
adunării la el a modulului împărţitorului (calculul lui 2x’+ y’,
respectiv, în finalul algoritmului, calculul lui x’+ y’, când
după ultimul cuplu de operaţii deplasare-scădere/adunare,
x’ este găsit negativ).
• COR: semnal de corecţie, ce însoţeşte ultimul semnal ÎA, cu rolul
de a împiedica activarea semnalului AQ(3) în timpul
încărcării aferente adunării corective finale.
Semnalele pe care schema le primeşte din exterior sunt:
• CLK: semnal de tact, primit de împărţitor de la unitatea de
comandă a procesorului. Acest semnal va pilota funcţionarea
tuturor elementelor secvenţiale ale schemei: registrele A, Q şi
M şi blocul de comandă BC.
• DIV: semnal de declanşare a unei noi sesiuni de lucru a
împărţitorului, primit de împărţitor din partea unităţii de
comandă a procesorului. Declanşarea unei noi sesiuni de
lucru a împărţitorului se va face la fiecare tranziţie de la 0 la 1
a acestui semnal.
Blocul de comandă trebuie să aibă 10 stări:
• 1 stare de repaus
• 1 stare de iniţializare
• 1 stare de deplasare stânga preliminară a registrelor A şi Q, tratate
concatenat
• 3 x 2 = 6 stări de deplasare stânga şi încărcare paralelă asociată, după
caz, scăderii sau adunării
• 1 stare de încărcare paralelă –eventuală- asociată adunării de corecţie a
resturilor negative de la sfârşitul ultimei perechi de operaţii deplasare-
scădere/adunare

110
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Vom proiecta acest bloc, cu ajutorul unui numărător. Evident,


numărătorul trebuie să fie modulo 9, când restul obţinut după a
treia pereche de operaţii deplasare-scădere/adunare este pozitiv,
respectiv modulo 10, în cazul contrar. Bistabilele numărătorului le vom
nota cu B3-B0.
Considerăm, mai întâi, drept stare de repaus, starea 0 a numărătorului.
Adoptăm, apoi, ca procesul de numărare să înceapă atunci când tactul
găseşte semnalul DIV pe 1. Stabilim, în continuare, ca numărarea să ţină
cât timp cel puţin un bistabil al numărătorului este pe 1, dar nu mai mult
de 9, respectiv 10 perioade ale semnalului de tact. Mai exact, luăm măsuri
ca la atingerea în numărător a valorii 9, respectiv 10, el să fie forţat
asincron la 0.

Instituim drept stare de iniţializare starea 1 a numărătorului, iar drept


stări de deplasare stânga, starea 2 şi stările 3, 5 şi 7. Dedicăm pentru
adunare / scădere după deplasare stările 4, 6 şi 8, iar pentru adunarea de
corecţie, atunci când ea este necesară, starea 9.

Când numărătorul atinge, în mod natural, starea 9, respectiv starea


10, se va forţa imediat –adică: în mod asincron- aducerea lui la zero; în
acest fel, numărătorul va număra modulo 9, respectiv modulo 10. Semnalul
de forţare a aducerii numărătorului la zero va avea ecuaţia:
_____________________________
_____
R = B3  B0  A(0)+ B3  B1 (4.4.3_6)

Organigrama de funcţionare a împărţitorului este redată în figura


4.4.3_3.
Codificarea stărilor blocului de comandă realizat ca numărător modulo
9 / 10 este redată în figura 4.4.3_4.

Ecuaţiile semnalelor de comandă generate de blocul BC se vor


determina construind, pentru fiecare dintre ele, cu ajutorul informaţiilor din
figurile 4.4.3_3 şi 4.4.3_4, “diagrama ieşirii”.

111
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

S0 0000 S5 0101

DIV 0 DS
1 0110
0001 S6
S1
ÎS / ÎA
IN
A(0:3).Q(0:3)  x’sm pe 8 biţi , 0111
M(0:3)  y’sm pe 4 biţi ; S7

S2 0010 DS

S8 1000
DS, PD
Q(3)  A(0)M(0),
... ÎS / ÎA
A(3)  Q(0),
A(0)  A(1); A(0) 0

S3 0011 1
S9 1001
DS
Q(3)  1, ÎA
... A(0:3)  z(0:3),
A(3)  Q(0), //z(0:3) = A(0:3) + 0.M(1:3)
A(0)  A(1);
// A(0:3) = pcms a lui 2x’

S4 0100

1 A(0) 0

ÎA ÎS
A(0:3)  z(0:3), A(0:3)  z(0:3),
//z(0:3) = A(0:3) + 0.M(1:3) // z(0:3) = A(0:3) – 0.M(1:3)

Fig. 4.4.3_3. Organigrama funcţionării împărţitorului cu refacerea resturilor.

112
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 S0 S1 S3 S2
01 S4 S5 S7 S6
11 * * * *
10 S8 S9 * *
Fig. 4.4.3_4. Diagrama codificării stărilor.

B1B0
B3B2 00 01 11 10
00 0 1 0 0
01 0 0 0 0
11 * * * *
10 0 0 * *
 IN = B3  B2  B1  B0
Fig. 4.4.3_5. Diagrama ieşirii IN.
B1B0
B3B2 00 01 11 10
00 0 0 0 1
01 0 0 0 0
11 * * * *
10 0 0 * *
 PD = B2  B1  B0
Fig. 4.4.3_6. Diagrama ieşirii PD.

B1B0
B3B2 00 01 11 10
00 0 0 1 1
01 0 1 1 0
11 * * * *
10 0 0 * *
 DS = B2  B0 + B2  B1
Fig. 4.4.3_7. Diagrama ieşirii DS.

113
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 A(0) 0 0 A(0)
11 * * * *
10 A(0) 0 * *
_______ _______
 IS = A( 0 ) B2  B0 + A( 0 ) B3  B1  B0
Fig. 4.4.3_8. Diagrama ieşirii ÎS.

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 A(0) 0 0 A(0)
11 * * * *
10 A(0) 1 * *
 IA = A( 0 )  B2  B0 + A( 0 )  B3 + B3  B0
Fig. 4.4.3_9. Diagrama ieşirii ÎA.

B1B0
B3B2 00 01 11 10
00 0 0 0 0
01 0 0 0 0
11 * * * *
10 0 1 * *

 COR = B3  B0
Fig. 4.4.3_10. Diagrama ieşirii COR.

Aşadar, ecuaţiile ieşirilor IN, PD, DS, ÎS şi ÎA vor fi:

IN = B3  B2  B1  B0 (4.4.3_7)
PD = B2  B1  B0 (4.4.3_8)
DS = B2  B0 + B2  B1 (4.4.3_9)
_____ _____
IS = A( 0 ) B2  B0 + A( 0 ) B3  B1  B0 (4.4.3_10)
IA = A( 0 )  B2  B0 + A( 0 )  B3 + B3  B0 (4.4.3_11)
COR = B3  B0 (4.4.3_12)

114
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

Pentru implementarea numărătorului, vom folosi bistabile J-K, cu


comutare pe frontul coborâtor al semnalului de tact. Pentru ca ansamblul
celor 4 bistabile să funcţioneze ca numărător, vom asigura pentru intrările
lor J şi K semnale cu următoarele ecuaţii:

J i = K i = DIV + B0 + B1 + B2 + B3 , i = 0...3 (4.4.3_13)

C0 = CLK , Ci = Bi −1 ,i = 1...3 (4.4.3_14)


________________
_______ _______ _____
RES = B3  B1  B3  B0  A( 0 ) (4.4.3_15)

Evident, în acest fel, circuitul format din cele 4 bistabile va începe


numărarea prin comutarea de la 0 la 1 a bistabilului B0 şi o va continua cât
timp cel puţin unul dintre bistabile va fi pe 1, adică: până la atingerea stării
9 respectiv 10, când va intra în acţiune semnalul R şi va reinstitui starea 0.

Pe baza ecuaţiilor (4.4.3_6) - (4.4.3_15), se obţine pentru blocul de


comandă al împărţitorului schema din figura 4.4.3_11.
A(0) COR
ÎA
A(0)
schemă
cu ÎS
porţi
DS

PD

IN
CLK

J Q J Q J Q J Q
C B3 C B2 C B1 C B0
K R Q K R Q K K
R Q R Q
RES

DIV

Fig. 4.4.3_11. Schema blocului de comandă al împărţitorului cu refacerea resturilor.

115
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

În figura 4.4.3_12, se prezintă cronograma de funcţionare a schemei


din figura 4.4.3_11.
S0 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S0

CLK

DIV

B0

B1

B2

B3

RE S

IN

PD

DS

ÎS/ÎA ÎS/ÎA ÎS/ÎA ÎS/ÎA ÎA

COR

Fig. 4.4.3_12. Cronograma de funcţionare a dispozitivului de comandă


al împărţitorului fără refacerea resturilor
(cazul când în final se impune corecţia restului).
Observaţie:
Acţiunile semnalelor de comandă IN, PD, DS, ÎS şi ÎA se produc efectiv pe
frontul ridicător (posibil, însă, şi pe cel coborâtor) al semnalului de tact din
ciclul în care ele sunt active.

În final, se prezintă, în tabelul care face obiectul figurii 4.4.3_13, un


exemplu de împărţire fără refacerea resturilor.

116
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ


Nr. crt. B3B2B1B0 A Q M Operaţia
0 0000 xxxx xxxx xxxx START  linia 1
1 0001 xxxx xxxx xxxx IN  linia 2
2 0010 1000 1110 0011 DS, PD  linia 3
3 0011 0001 1101 0011 DS  linia 4
4 0100 0011 - 1011 0011 ÎS  linia 5
0011
5 0101 0000 1011 0011 DS  linia 6
6 0110 0001 - 0111 0011 ÎS  linia 7
0011
7 0111 1110 0110 0011 DS  linia 8
8 1000 1100 + 1101 0011 ÎA  linia 9
0011
9 1001 1111 + 1100 0011 ÎA  linia 10
0011
10 0000 0010 1100 0011 NIMIC  linia 11
11 0000 0010 1100 0011

Fig. 4.4.3_13. Exemplu de împărţire fără refacerea resturilor: x = -14, y = 3.

117
CAP. 4. DESPRE PROCESOR. UNITATEA ARITMETICO-LOGICĂ

118
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

5
DESPRE PROCESOR. UNITATEA DE REGISTRE

5.1. Introducere

Aşa cum s-a arătat în capitolul 1, unitatea de registre reprezintă o memorie


de manevră, realizată pe acelaşi cip şi în aceeaşi tehnologie cu unitatea
aritmetico-logică şi cu unitatea de comandă -şi, în consecinţă, la fel de
rapidă ca şi acestea-, la care accesele se fac mult mai simplu şi mai eficient
decât la memoria propriu-zisă.

Două linii arhitecturale s-au dezvoltat la nivelul unităţilor de registre. Una


dintre ele se caracterizează prin heterogenitate, iar cealaltă -prin omogenitate.
În cazul arhitecturilor heterogene, registrele se diferenţiază sub aspectul
rolului pe care îl pot juca în funcţionarea procesorului şi, în consecinţă, al
modului în care intervin sau pot interveni în diversele instrucţii-maşină. În
cazul arhitecturilor omogene, registrele sunt echipotente şi, în consecinţă,
oricare dintre ele ar putea juca, la un moment dat, un anumit rol în cadrul
unei anumite instrucţii. Trebuie spus că, în practică, nici heterogenitatea şi
nici omogenitatea nu au fost duse la cotele maximale. În arhitecturile
heterogene, este obişnuit să se întâlnească un număr de registre echipotente
între ele sau diferenţiate doar în mică măsură, după cum este obişnuit ca în
arhitecturile omogene un număr de registre să dispună şi de caracteristici în
plus faţă de cele comune tuturor sau să se diferenţieze uşor unele de altele.

În scopuri ilustrative, se prezintă, în continuare, unitatea de registre a unui


procesor imaginar, cu date pe 8 biţi şi adrese pe 16 biţi –fie CSAC 2001
numele lui-, pe care îl vom considera, pe mai departe în cadrul cursului, drept
principal caz de studiu, unitatea de registre a procesorului MOTOROLA
68000 şi unitatea de registre a procesorului INTEL 8086.

119
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

5.2. Unitatea de registre a procesorului CSAC 2001

Unitatea de registre a procesorului CSAC 2001 cuprinde registrele


reprezentate prin dreptunghiuri colorate în gri în figura 5.2_1, figură în care,
în sprijinul unei cât mai bune înţelegeri a lucrurilor, a fost redat întregul
procesor. Respectivele registre sunt: A, B, C, F, SP, B1, B2, B3, 0G şi 1G. Le
vom prezenta rând pe rând.

Registrele A, B, şi C

Registrele A, B şi C au o lungime de 8 biţi şi sunt cvasiechipotente între


ele. Principala lor menire este aceea de a juca, în procesul de execuţie a
instrucţiilor, rolul de reşedinţă a cel puţin unui operand –eventual a
operandului unic-, respectiv de a prelua rezultate. Este uzual –de fapt, se
poate vorbi despre o adevărată regulă în acest sens- ca rezultatele execuţiei
instrucţiilor să fie oferite de procesoare prin registrul iniţial sediu al
operandului unu –eventual unic-. Evident, respectivul operand, prin
suprascriere, se pierde. Atunci când valoarea sa este şi pe mai departe
necesară în rularea programului, ea trebuie salvată, fie în memorie, fie într-
un registru. Evident, a doua alternativă ar fi cea de preferat, întotdeauna, dar,
uneori, ea nu poate fi aplicată, deoarece se întâmplă ca nici unul dintre
registre să nu fie la momentul în cauză liber.

Registrele B şi C pot fi folosite în câteva instrucţii şi concatenat –B în


poziţia mai semnificativă şi C în poziţia mai puţin semnificativă-, pentru
operare cu informaţii pe 16 biţi. Procesorul CSAC 2001 dispune, după cum se
va vedea mai târziu, de posibilitatea referirii locaţiilor de memorie fie prin
adrese indicate în mod efectiv în cadrul instrucţiilor, fie prin adrese luate din
registrul pereche BC. Evident, tocmai această din urmă facilitate de adresare
a memoriei este la originea concatenabilităţii celor două registre (ne
reamintim: procesorul CSAC 2001 este o arhitectură de calcul pe 8 biţi, cu
adrese pe 16 biţi).

Registrul F

Registrul F are rolul de a memora în bistabilele sale informaţii privind


rezultatele obţinute în cadrul operaţiilor efectuate de unitatea aritmetico-
logică. La unele procesoare –inclusiv la CSAC 2001- se au în vedere doar
rezultatele operaţiilor care implică o prelucrare efectivă (adunare, scădere,

120
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

121
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

ŞI, SAU etc.), iar la altele inclusiv operaţiile de transfer simplu dintr-un loc
în altul. Bistabilele registrului F poartă numele de fanioane. Ele sunt notate
cu Z, S, C, V şi P.

Fanionul Z arată dacă rezultatul ultimei operaţii este nul sau nenul. Când
rezultatul este nul, atunci Z=1, când rezultatul este nenul, atunci Z=0.

Fanionul S arată dacă rezultatul ultimei operaţii este negativ sau nenegativ
(adică: pozitiv sau zero). Când rezultatul este negativ, atunci S=1, când
rezultatul este nenegativ, atunci S=0.

Fanionul C arată dacă în timpul ultimei operaţii a apărut sau nu un


transport din rangul cel mai semnificativ, 27, spre rangul inexistent, 28. Când
a apărut transport, atunci C=1, când nu a apărut transport, atunci C=0.

Fanionul V arată dacă rezultatul ultimei operaţii este sau nu eronat ca


urmare a fenomenului de depăşire. Când rezultatul este eronat, atunci V=1,
când rezultatul este neeronat, atunci V=0.

Fanionul P arată dacă rezultatul ultimei operaţii are un număr par sau un
număr impar de biţi cu valoarea “1”. Când rezultatul are un număr par de biţi
cu valoarea “1”, atunci P=1, când rezultatul are un număr impar de biţi cu
valoarea “1”, atunci P=0. Se face precizarea că şi convenţia inversă de
poziţionare a fanioanelor P poate fi întâlnită.

Toate aceste fanioane se poziţionează implicit în procesul de execuţie a


instrucţiilor. Există, însă, şi instrucţii speciale, a căror obiect este exclusiv
poziţionarea fanioanelor.

Registrul SP

Registrul SP (SP vine de la “stack pointer”) este constituit prin


concatenarea registrelor SPH şi SPL (H şi L vin, respectiv, de la “high” şi
“low”). Prin urmare, SP este un registru pe 16 biţi. Rolul registrului SP este
acela de a face posibilă gestionarea unei părţi din memoria RAM a
calculatorului după principiul stivei: last input-first output (prescurtat:
LIFO); respectiva parte va fi numită simplu “stivă”. În procesorul CSAC
2001, fiecare sesiune de lucru la nivelul stivei manevrează doi octeţi. Aceştia
pot proveni din registrele A şi F sau B şi C sau PCH şi PCL, în cazul în care
se face scriere în stivă, respectiv pot viza registrele A şi F sau B şi C sau PCH
122
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

şi PCL, în cazul în care se face citire din stivă. Tandemurile A-F, B-C,
PCH-PCL vor fi referite prin abrevierile AF, respectiv BC, respectiv PC.
Exploatarea unei zone de memorie după principiul stivei presupune, mai
întâi, încărcarea registrului SP cu adresa cea mai de sus a respectivei zone, iar
apoi respectarea cu stricteţe a următoarei proceduri:
A. la scriere:
1. se decrementează SP cu o unitate
2. se scrie la adresa din SP octetul superior din perechea de doi octeţi ce
trebuie depusă în stivă
3. se decrementează SP cu o unitate
4. se scrie la adresa din SP octetul inferior din perechea de doi octeţi ce
trebuie depusă în stivă
B. la citire:
1. se citeşte de la adresa din SP octetul inferior din perechea de doi octeţi
ce trebuie descărcată din stivă
2. se incrementează SP cu o unitate
3. se citeşte de la adresa din SP octetul superior din perechea de doi octeţi
ce trebuie descărcată din stivă
4. se incrementează SP cu o unitate
Registrele B1, B2 şi B3
Registrele B1, B2 şi B3 sunt registre auxiliare, de uz exclusiv intern. B1
joacă rol de tampon (“buffer”) între magistrala pe care se vehiculează datele
şi unitatea aritmetico-logică. B2 joacă rol de tampon între unitatea aritmetico-
logică şi magistrala pe care se vehiculează datele. B3 joacă rol de tampon
între multiplexorul de adrese, AM, şi magistrala pe care se transmit în afară
adresele. B2 şi B3 au ieşirile cu trei stări logice. Activarea respectivelor ieşiri
se face cu ajutorul semnalelor OB_B2, respectiv OB_B3, care înseamnă: “on
the bus B2”, respectiv “on the bus B3”.
Registrele 0G şi 1G
Registrele 0G şi 1G sunt, de fapt, pseudoregistre, de uz exclusiv intern.
Rolul lor este acela de a pune pe magistrala pe care se vehiculează datele,
atunci când sunt selectate cu semnalele OB_0G, respectiv OB_1G, un octet
de valoare zero, respectiv un octet de valoare unu, necesari în implementarea
unora dintre instrucţii.

123
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

5.3. Unitatea de registre a procesorului MOTOROLA 68000

Unitatea de registre a procesorului MOTOROLA 68000 –aşa cum o vede


programatorul în limbaj maşină, fără registrele auxiliare de uz intern- este
reprezentată în figura 5.3_1.

cuvânt lung
cuvânt
octet

31 16 15 87 0 D0
31 16 15 87 0 D1
31 16 15 87 0 D2
31 16 15 87 0 D3
31 16 15 87 0 D4
31 16 15 87 0 D5
31 16 15 87 0 D6
31 16 15 87 0 D7
31 16 15 0 A0
31 16 15 0 A1
31 16 15 0 A2
31 16 15 0 A3
31 16 15 0 A4
31 16 15 0 A5
31 16 15 0 A6
31 16 15 0 A7
31 16 15 0 A7’
15 87 0 SR

Fig. 5.3_1. Unitatea de registre a procesorului MOTOROLA 68000.

Registrele D0-D7 sunt denumite “registre de date”. Ele sunt echipotente


între ele în sensul cel mai strict al termenului. Principala menire a registrelor
D0-D7 este aceea de a juca, în procesul de execuţie a instrucţiilor, rolul de
reşedinţă a cel puţin unui operand –eventual a operandului unic-, respectiv de
a prelua rezultate; din acest punct de vedere, ele au exact acelaşi statut ca
registrele A, B, C ale procesorului CSAC 2001. De asemenea, registrele D0-
D7 se folosesc ca registre de manevră şi ca registre index. Se precizează că
un registru index este un registru implicat în procesul de calcul al adreselor
sub care se accesează memoria, prin adunarea conţinutului său cu o valoare
ce joacă rol de referinţă, specificată efectiv sau aflată într-un alt registru.
Aşa cum se sugerează în figura 5.3_1, registrele D0-D7 –registre pe 32
biţi- pot fi folosite la nivel de octet, la nivel de dublu-octet, numit cuvânt şi la
124
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

nivel de cuadruplu octet, numit cuvânt lung. Lucrul la nivel de octet vizează
în mod implicit biţii 0-7, în timp ce biţii 8-31 rămân neafectaţi, iar lucrul la
nivel de cuvânt vizează în mod implicit biţii 0-15, în timp ce biţii 16-31
rămân neafectaţi. În limbaj de asamblare, se specifică dacă la un moment se
doreşte lucrul pe octet, cuvânt sau cuvânt lung cu ajutorul unui sufix adăugat
mnemonicelor instrucţiilor. Sufixul este “B” în cazul lucrului pe octet, “W”
în cazul lucrului pe cuvânt şi “L” în cazul lucrului pe cuvânt lung. În toate
cazurile, mnemonicul este separat de sufix printr-un caracter “.”.

Exemple:
Să presupunem că registrul D3 conţine valoarea hexazecimală 11223344.
1. Dacă se doreşte anularea octetului format din biţii 0-7, se execută
instrucţia CLR.B D3, obţinându-se în D3 valoarea hexazecimală
11223300.
2. Dacă se doreşte anularea dublului octet format din biţii 0-15, se
execută instrucţia CLR.W D3, obţinându-se în D3 valoarea
hexazecimală 11220000.
3. Dacă se doreşte anularea întregului conţinut al registrului D3, se
execută instrucţia CLR.L D3, obţinându-se valoarea hexazecimală
00000000.

Registrele A0-A6 sunt denumite “registre de adrese”. Ele sunt echipotente


între ele în sensul cel mai strict al termenului. Principala menire a registrelor
A0-A6 este aceea de a fi registre pointer –adică: sediu de referinţe-. De
asemenea, ele se folosesc şi pe post de registre index şi de registre de
manevră, pur şi simplu.

Aşa cum se sugerează în figura 5.3_1, registrele A0-A6 –registre pe 32


biţi- pot fi folosite la nivel de dublu-octet (cuvânt ) şi la nivel de cuadruplu
octet (cuvânt lung). Lucrul la nivel de cuvânt vizează în mod implicit biţii 0-
15; biţii 16-31 sunt, însă, şi ei afectaţi, în cazul operaţiilor de scriere într-un
asemenea registru, prin extensia în zona lor a valorii logice a bitului 15.

Registrele A7 şi A7’ au toate caracteristicile registrelor A0-A6, dar, în plus,


joacă în mod implicit rolul de pointeri de stivă, motiv pentru care şi sunt
denumite “registre pointeri de stivă”. Procesorul MOTOROLA 68000 are
două moduri de funcţionare: modul utilizator, respectiv modul supervizor.
Modul utilizator este destinat rulării programelor de aplicaţie, iar modul
supervizor –rulării programelor de sistem. Fiecare categorie de programe
dispune, în sistemele cu MOTOROLA 68000, de propria stivă. Şi asta, se
125
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

asigură prin mecanisme hardware. De ce? Pentru asigurarea creşterii


performanţelor sistemelor în privinţa siguranţei în funcţionare. Când
procesorul este în modul utilizator, unitatea de comandă a procesorului
MOTOROLA 68000 foloseşte pe post de pointer de stivă registrul A7. Când
procesorul este în modul utilizator, unitatea de comandă a procesorului
MOTOROLA 68000 foloseşte pe post de pointer de stivă registrul A7’. Pentru
programator, este transparentă comutarea de la A7 la A7’ şi viceversa;
referirile programatorului vor fi, întotdeauna, doar la A7, dar, prin hardware,
se va asigura ca ele să vizeze exemplarul din A7 care trebuie, după caz.

Registrul SR este denumit “registru de stare” (prescurtarea SR vine de la


“status register”). El cuprinde 10 fanioane. 5 dintre ele –implementate la
nivelul octetului inferior al registrului SR- sunt accesibile programelor de
aplicaţie, iar 5 sunt văzute exclusiv de programele de sistem. Din acest motiv,
octetul inferior al lui SR poartă numele de “octet utilizator”, iar octetul
superior –pe acela de “octet supervizor”-. Figura 5.3_2 pune în evidenţă
toate aceste fanioane.

octet supervizor octet utilizator


15 8 7 0
T S I2 I1 I0 X N Z V C
trasare transport
supervizor depăşire
zero
mască de negativ
întrerupere extensie

Fig. 5.3_2. Fanioanele registrului SR.

Fanioanele C, V, Z şi N sunt echivalentele fanioanelor C, V, Z şi S ale


procesorului CSAC 2001. Fanionul X are aceeaşi semnificaţie ca şi fanionul
C, dar este afectat numai de către operaţiile aritmetice, în timp ce acesta din
urmă se poziţionează şi cu alte ocazii.

Fanionul T indică dacă regimul de funcţionare este de trasare –în acest


caz T=1- sau normal –în acest caz T=0-. Regimul de lucru trasare se
caracterizează prin aceea că după rularea fiecărei instrucţii, se intră într-o
rutină specifică, ce afişează diverse informaţii, utile în procesul de depanare a
programelor (de exemplu: conţinuturile registrelor, etc.). Existenţa regimului
de lucru trasare permite implementarea aşa-numitelor debugger-e.
126
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

Fanionul S indică dacă modul de lucru este supervizor –în acest caz S=1-
sau utilizator –în acest caz S=0-.

Fanioanele I2, I1 şi I0 au semnificaţie doar ca ansamblu, prin valoarea pe


care o codifică la un moment dat. Ele materializează aşa-numita “mască de
întreruperi”. Termenul “întrerupere” desemnează în domeniul
calculatoarelor abilitatea procesoarelor de a se abate de la programul în curs
de execuţie în vederea rulării unor rutine speciale –numite “rutine de tratare
a întreruperilor” sau “handler-e de întrerupere”, ca răspuns la semnale
externe sau interne, numite “cereri de întrerupere”. Întrucât este posibil ca
în anumite momente să fie formulate mai multe cereri de întrerupere, se
impune ca sistemele de calcul să dispună de mecanisme de tratare
prioritizată a acestor cereri. În cazul procesorului MOTOROLA 68000,
cererile de întrerupere sunt ierarhizate pe 7 nivele. Nivelul cel mai prioritar
este nivelul 7, iar cel mai puţin prioritar –nivelul 1. Fanioanele I2-I0 au rolul
de a determina luarea în considerare la un moment doar a cererilor de
întrerupere de pe nivelele cu număr de ordine mai mare decât numărul
codificat de ele (I2 are ponderea 22, iar I0 –ponderea 20) şi ignorarea
celorlalte.

5.4. Unitatea de registre a procesorului INTEL 8086

Unitatea de registre a procesorului INTEL 8086 –aşa cum o vede


programatorul în limbaj maşină, fără registrele auxiliare de uz intern- este
reprezentată în figura 5.4_1.

Registrul AX este din aceeaşi clasă cu registrele A, B, C ale procesorului


CSAC 2001, respectiv D0-D7 ale procesorului MOTOROLA 68000.
Principala menire a registrului AX este aceea de a juca, în procesul de
execuţie a instrucţiilor, rolul de reşedinţă a unuia dintre operanzi –eventual a
operandului unic-, respectiv de a prelua rezultate. De asemenea, registrul AX
se foloseşte ca registru de manevră.

127
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

15 87 0
AH AL AX
BH BL BX
CH CL CX
DH DL DX
SP
BP
SI
DI
F

Fig. 5.4_1. Unitatea de registre a procesorului INTEL 8086.

Aşa cum se sugerează în figura 5.4_1, registrul AX –registru pe 16 biţi-


poate fi folosit la nivel de octet şi la nivel de dublu-octet. Lucrul la nivel de
octet vizează fie biţii 0-7, fie biţii 8-15. Primii definesc registrul parte a lui
AX, numit AL, iar ultimii -registrul parte a lui AX, numit AH.

Registrul BX este un registru dedicat implementării unor “moduri de


adresare” a memoriei, şi anume: adresarea bazată şi adresarea indirectă (vezi
capitolul următor). Şi BX este pe 16 biţi şi poate fi folosit la nivel de octet şi
la nivel de dublu-octet. Lucrul la nivel de octet vizează fie biţii 0-7, fie biţii
8-15. Primii definesc registrul parte a lui BX, numit BL, iar ultimii -registrul
parte a lui BX, numit BH.

Registrul CX este un registru-numărător, conceput să fie utilizat în


materializarea unor operaţii de rotire, deplasare, ciclare şi transfer de şiruri.
Şi CX este pe 16 biţi şi poate fi folosit la nivel de octet şi la nivel de dublu-
octet. Lucrul la nivel de octet vizează fie biţii 0-7, fie biţii 8-15. Primii
definesc registrul parte a lui CX, numit CL, iar ultimii -registrul parte a lui
CX, numit CH.

Registrul DX este un registru conceput cu predilecţie pentru a fi utilizat în


materializarea operaţiilor de înmulţire, împărţire şi lucru cu porturile. Şi DX
este pe 16 biţi şi poate fi folosit la nivel de octet şi la nivel de dublu-octet.
Lucrul la nivel de octet vizează fie biţii 0-7, fie biţii 8-15. Primii definesc
registrul parte a lui DX, numit DL, iar ultimii -registrul parte a lui DX, numit
DH.

128
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

Chiar dacă, aşa cum se poate remarca din descrierea de mai sus, fiecare
dintre registrele AX, BX, CX, DX îşi are particularităţile sale –unitatea de
registre a procesorului INTEL 8086 este, evident, una heterogenă-, există un
termen comun pentru referirea lor, şi anume: termenul de “registre de date”.

Registrul SP este registrul pointer de stivă al procesorului INTEL 8086.

Registrul BP este un registru dedicat pointării programate –adică: nu


impusă hardware- spre locaţiile de memorie gestionate după principiul stivei.
Cu ajutorul lui BP, se pot accesa simplu locaţiile de stivă în orice ordine se
doreşte şi nu neapărat în ordinea LIFO, implementată cu ajutorul registrului
SP.

Registrul SI este un registru index conceput să fie utilizat în calculul


adresei locaţiei de memorie de unde se face la un moment un transfer.

Registrul DI este un registru index conceput să fie utilizat în calculul


adresei locaţiei de memorie spre care se face la un moment un transfer.

Registrele SP, BP, SI şi DI sunt desemnate, împreună, prin termenul


“registre pointer şi index”.

Registrul F este un registru de fanioane numit “registru al cuvântului de


stare a programului”; se obişnuieşte ca el să fie referit prin prescurtarea
PSW, de la program status word. Structura registrului este pusă în evidenţă
de figura 5.4_2.

octet supervizor octet utilizator


15 8 7 0
OF DF IF TF SF ZF AF PF CF
depăşire transport
paritate
direcţie transport
mască de auxiliar
întrerupere zero
trasare semn

Fig. 5.4_2. Fanioanele registrului F.


Fanioanele CF, ZF, SF, OF, PF au aceleaşi semnificaţii ca şi fanioanele
C, Z, S, V, P ale procesorului CSAC 2001, respectiv, primele patru dintre ele,
ca şi fanioanele C, Z, N, V ale procesorului MOTOROLA 68000.
129
CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE

Fanionul AF este numit “fanion de transport auxiliar” şi are rolul de a


indica, în urma rulării unora dintre operaţiile aritmetice, dacă apare –AC= 1-
sau nu –AC= 0- transport din rangul 3 spre rangul 4, adică: de la tetrada 1
spre tetrada 2. Această informaţie este utilă atunci când se operează cu
numere reprezentate în codul BCD (BCD vine de la “binary coded decimal”,
adică: zecimal codificat binar).

Fanionul TF are aceeaşi semnificaţie ca şi fanionul T al procesorului


MOTOROLA 68000.

Fanionul IF este numit “fanion de intreruperi” şi are rolul de a valida /


invalida întreruperile, adică: de a activa / dezactiva sensibilitatea procesorului
la cererile de întrerupere.

Fanionul DF are rolul de a indica direcţia în care evoluează adresele în


cazul operaţiilor cu şiruri: DF=1 arată că adresele se incrementează, iar DF=
0 –că adresele se decrementează.

Se menţionează că procesorul INTEL 8086 mai dispune de 4 registre –


CS, DS, SS, ES-, numite “registre segment”. Referitor la aceste registre, ne
limităm, în context, la a spune doar că ele aparţin unui bloc special al unităţii
de comandă a procesorului INTEL 8086, numit “unitate de gestiune a
memoriei”.

130
A15-A0

LD_B3
B3

SEL_IRE
SEL_PC
AM
SEL_SP
SEL_BC

OB_IREH OB_IREL OB_PCH OB_PCL OB_SPH OB_SPL OB_B OB_C


LD_IREH LD_IREL LD_PCH LD_PCL LD_SPH LD_SPL LD_B LD_C
RES_PC DEC_SP DEC_BC

IREH IREL PCH PCL SPH SPL B C

INC_PC INC_SP INC_BC


D7-D0

CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE


121

OB_0G OB_1G OB_B2 OB_A OB_F

LD_IR LD_B1 LD_B2 LD_A LD_F


IR 0G 1G B1 B2 A F

SEL_ALU SEL_DB
OCD ADD MUX
… SUB
MRQ LD_IR ALU
XOR
IORQ LD_A
RD OB_A
S
WR ..
.
ACK ADD
RESET RESET Fig. 5.2_1. Blocurile în gri: unitatea de registre
RG
CLK CLK
a procesorului didactic CSAC 2001.
CG
A15-A0

LD_B3
B3

SEL_IRE
SEL_PC
AM
SEL_SP
SEL_BC

OB_IREH OB_IREL OB_PCH OB_PCL OB_SPH OB_SPL OB_B OB_C


LD_IREH LD_IREL LD_PCH LD_PCL LD_SPH LD_SPL LD_B LD_C
RES_PC DEC_SP DEC_BC

IREH IREL PCH PCL SPH SPL B C

INC_PC INC_SP INC_BC


D7-D0

CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE


121

OB_0G OB_1G OB_B2 OB_A OB_F

LD_IR LD_B1 LD_B2 LD_A LD_F


IR 0G 1G B1 B2 A F

OCD ADD
… SUB
MRQ LD_IR ALU
XOR
IORQ LD_A
RD OB_A
S
WR .. F
.
ACK ADD OB_F
RESET RESET LD_F Fig. 5.2_1. Blocurile în gri: unitatea de registre
RG
CLK CLK
a procesorului didactic CSAC 2000.
CG
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

6
DESPRE PROCESOR. UNITATEA DE COMANDĂ

6.1. Preliminarii. Paradigma von Neumann

După cum s-a văzut, nucleul unui calculator este constituit din procesor,
memorie şi interfeţe, la nivelul procesorului distingându-se: unitatea
aritmetico-logică, unitatea de registre şi unitatea de comandă.

Unitatea aritmetico-logică şi algoritmii pe baza cărora ea funcţionează s-


au studiat în detaliu în capitolul 4.

Unitatea de registre, cu locul şi rolul elementelor sale în ansamblul


procesorului, a făcut obiectul capitolului 5.

Despre unitatea de comandă s-a spus în prima parte a lucrării că ea


reprezintă partea unui procesor care are în sarcină generarea comenzilor
interne şi externe necesare funcţionării calculatorului în ansamblul său.

Există mai multe tipuri de unităţi de comandă; în cadrul prezentei lucrări,


se vor avea în vedere doar unităţile de comandă numite, ca şi procesoarele în
care sunt integrate, von Neumann. Acestea se caracterizează prin aceea că
respectă următoarea paradigmă, numită “paradigma von Neumann”:

1). Un program constă în instrucţii care operează la un moment asupra unui


singur flux de date.
2). Instrucţiile se execută una după alta şi nu mai multe simultan, sub
aspectul producerii de rezultate; la nivel micro, însă, este posibil ca
operaţii elementare aparţinând de două sau mai multe instrucţii să fie
executate suprapus, fără alterarea ordinii de generare de rezultate macro,
faţă de cazul în care instrucţiile s-ar executa pur secvenţiat.
3). O instrucţie poate implica introducerea în procesare a maximum doi
operanzi.

131
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

4). Instrucţiile se reprezintă prin coduri care sunt fie de lungime fixă, fie de
lungime variabilă.
5). Un cod de instrucţie cuprinde câmpuri prin care se specifică:
• operaţia ce face obiectul instrucţiei
• operandul / operanzii sau informaţii despre locul în care se află
operandul / operanzii
• informaţii despre locul unde trebuie depus rezultatul
6). O instrucţie este urmată în execuţie, în mod implicit, de instrucţia situată
în memorie imediat după ea. În cazul instrucţiilor de salt, de apel de
subrutină şi de revenire din subrutină, instrucţia următoare se determină
de către fiecare dintre ele în mod specific, prin algoritmul înglobat
special în cadrul lor, în acest sens.
7). Programele aflate în rulare sunt “încărcate”, adică: au instrucţiile
amplasate în memorie, în acord cu logica programului, în locaţii de
adrese consecutiv crescătoare sau rezultate din logica internă a
instrucţiilor de salt, de apel de subrutină şi de revenire din subrutină.

6.2. Elementele constitutive ale unităţilor de comandă


von Neumann

O unitate de comandă von Neumann constă, în esenţă, din următoarele


blocuri:
• un registru de adresare a instrucţiilor, numit pointer de instrucţie, IP
(Instruction Pointer) sau numărător al programului, PC (Program
Counter);
• un registru sediu al cuvântului instrucţie ce instanţiază instrucţia aflată în
rulare, numit registrul instrucţiei, IR (Instruction Register);
• un decodificator al cuvântului instrucţie ce instanţiază instrucţia aflată în
rulare, numit, din raţiuni istorice, decodificator al codului operaţiei,
OCD (Operation Code Decoder);
• un bloc de secvenţiere a comenzilor, numit secvenţiator, S (Sequencer);
• un bloc de pilotare temporală, numit generator de tact, CG (Clock
Generator);
• un bloc de iniţializare, numit generator de reset, RG (Reset Generator).

132
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Figura 6.2_1 surprinde o unitate de comandă von Neumann, ca parte a


unui procesor ipotetic, definit de pe poziţii didactice –procesorul CSAC
2001, referit şi în capitolul precedent.

Se remarcă prezenţa în figura 6.2_1 a tuturor celor 6 blocuri din


componenţa unităţii de comandă standard von Neumann. Să ne oprim puţin,
în continuare, asupra fiecăruia dintre ele.

Registrul PC

Registrul PC -numărătorul programului sau pointerul de instrucţie- are


rolul de a indica adresa următoarei instrucţii sau, când instrucţiile se citesc
fragmentar, adresa următorului fragment al instrucţiei în curs de rulare.

Având în vedere paradigma von Neumann, registrul PC funcţionează, de


regulă, în regim de numărare –mai exact: incrementare- şi doar în cazul
instrucţiilor de salt, apel de subrutină şi revenire din subrutină, în regim de
încărcare paralelă; aceasta, în ideea de a prelua ceea ce se generează în
cadrul acestor instrucţii, pe post de adresă a instrucţiei următoare.

Registrul IR

Registrul IR –registrul instrucţiei- joacă rolul de sediu al codului


operaţiei care face obiectul instrucţiei. Este obişnuit ca registrul IR să aibă
extensii pentru păstrarea unor informaţii conexe codului operaţiei, cum ar fi
informaţiile privind locul în care se află operanzii sau unde trebuie depus
rezultatul, respectiv informaţii pe baza cărora se determină –eventual în
urma unor calcule- locul operanzilor şi-sau al rezultatului.

În arhitectura considerată, extensiile registrului IR sunt IREL, respectiv


IREH. Acestea sunt registre pe câte 8 biţi, concatenabile între ele astfel
încât să poată prelua şi păstra şi informaţii pe 16 biţi.

133
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

134
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Aşa cum se va vedea, în arhitectura considerată instrucţiile au lungimi de


1-4 octeţi. În timpul procesului de rulare, aceştia sunt păstraţi la nivelul
procesorului după cum urmează:
• octetul 1: în registrul IR
• octetul 2: în registrul IREL
• octetul 3: în registrul IREH
• octetul 4: în registrul B1

A nu se deduce din cele de mai sus că registrul B1 ar fi şi el extensie a


registrului IR. Registrul B1 are, după cum s-a arătat în capitolul precedent şi
după cum se va vedea în continuare, cu totul alte roluri şi, numai
conjunctural, în cazul unui număr redus de instrucţii, el este pe post de
extensie a registrului IR.

Decodificatorul codului operaţiei

Decodificatorul codului operaţiei are rolul de a decodifica codul din IR şi


de a indica secvenţiatorului S, pe de o parte, operaţia ce trebuie executată,
iar pe de altă parte, operandul / operanzii sau modul în care trebuie să fie
determinat locul operandului / operanzilor şi-sau al rezultatului.

Se precizează că există o multitudine de modalităţi prin care operandul /


operanzii, respectiv locul operandului / operanzilor şi-sau locul rezultatului
se pot specifica; o astfel de modalitate poartă, consacrat, numele de “mod de
adresare”. În figura 6.2_2, sunt sintetizate modurile de adresare cu care este
înzestrată arhitectura de calcul considerată.

Se face precizarea că unele dintre modurile de adresare surprinse în


figura 6.2_2 sunt referite de către unii producători şi-sau utilizatori de
procesoare prin alţi termeni decât cei adoptaţi în context de noi; de altfel,
cititorul este rugat să reţină că unicitatea termenilor şi a semnificaţiilor pe
care termenii le au este, în domeniul calculatoarelor, mult prea frecvent,
doar un deziderat.

135
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Nr. Modul de adresare Definirea modului de adresare


crt.
1. Adresarea implicită Se numeşte adresare implicită referirea unui
registru al procesorului ce conţine un operand
sau este vizat să conţină rezultatul prin înşişi
biţii ce reprezintă codul operaţiei.
2. Adresarea la registru Se numeşte adresare la registru referirea unui
registru al procesorului ce conţine un operand
sau este vizat să conţină rezultatul, prin biţi
dedicaţi ai cuvântului instrucţie, alăturaţi celor
prin care se specifică codul operaţiei.
3. Adresarea imediată Se numeşte adresare imediată specificarea prin
cuvântul instrucţie a înşişi operanzilor, prin
biţi dedicaţi, alăturaţi celor prin care se
specifică codul operaţiei.
4. Adresarea indirectă Se numeşte adresare indirectă referirea unei
locaţii de memorie sau a unui port ce conţine
un operand sau este vizată / vizat să conţină
rezultatul, printr-o adresă conţinută de unul
dintre registrele procesorului, indicat prin biţi
dedicaţi ai cuvântului instrucţie, alăturaţi celor
prin care se specifică codul operaţiei.
5. Adresarea directă Se numeşte adresare directă referirea unei
locaţii de memorie sau a unui port ce conţine
un operand sau este vizată / vizat să conţină
rezultatul, printr-o adresă conţinută în mod
efectiv în cuvântul instrucţie, alăturat
câmpului ce joacă rolul de cod al operaţiei.
6. Adresarea stivă Se numeşte adresare stivă referirea unor locaţii
de memorie pentru depunerea în ele a
conţinuturilor unor registre, respectiv pentru
descărcarea conţinuturilor lor în anumite
registre, cu ajutorul adresei conţinută de
registrul pointer de stivă, decrementată
înaintea fiecărei operaţii de scriere şi
incrementată după fiecare operaţie de citire.
Fig. 6.2_2. Modurile de adresare ale arhitecturii de calcul din figura 6.2_1.
Secvenţiatorul

136
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Secvenţiatorul S are rolul de a genera ansamblul semnalelor ce


materializează operaţiile elementare la care sunt reduse instrucţiile, în mod
specific pentru fiecare instrucţie, conform indicaţiilor primite de la
decodificatorul codului operaţiei.

Rularea unei instrucţii are două etape:


1). Etapa de extragere sau aducere (“fetch”) a codului operaţiei şi a
informaţiilor privind locul operanzilor şi-sau rezultatului indisociabile de
codul operaţiei.
2). Etapa de execuţie propriu-zisă a instrucţiei.

Etapa de aducere cuprinde un ciclu de citire din memorie identic pentru


toate instrucţiile. În cadrul acestui ciclu, se citeşte locaţia cu adresa prezentă
în registrul PC şi conţinutul ei se duce în registrul IR.

Etapa de execuţie cuprinde unul sau mai multe cicluri de citire, respectiv
de scriere, vizând memoria sau un port, în mod specific pentru fiecare
instrucţie. Aceste cicluri au ca obiectiv, în principal, citirea operanzilor,
respectiv scrierea rezultatului, dar, uneori, mai înainte de asta, aducerea
informaţiilor privind locul operanzilor şi-sau rezultatului, ce se prezintă
separat de codul operaţiei.

Semnalele de comandă generate de secvenţiator acţionează, în


majoritatea covârşitoare a lor, în interiorul procesorului şi doar un număr
redus în afara sa. În arhitectura considerată, semnale de comandă interne
sunt:
• LD_IR
• OB_A
• ADD
• etc.,
iar semnale de comandă externe:
_______
• MRQ
________
• IORQ
_____
• RD
_____
• WR .

Semnalul LD_IR (load IR)are rolul de a determina încărcarea registrului


IR cu informaţia prezentă la intrările sale. Este activ pe frontul ridicător.
137
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Semnalul OB_A (on the bus A) are rolul de a determina punerea pe liniile
de date ale procesorului a conţinutului registrului A, prin activarea ieşirilor
cu 3 stări ale acestui registru. Este activ pe nivelul ridicat, adică: pe nivelul
de “1”.

Semnalul ADD (add) are rolul de a specifica unităţii aritmetico-logice că


are de efectuat o adunare. Este activ pe nivelul ridicat, adică: pe nivelul de
“1”.

________
Semnalul MRQ (“memory request”) are rolul de a mobiliza memoria în
vederea efectuării unei operaţii. Operaţia poate fi de citire sau de scriere,
____ ____
dependent de valoarea logică a semnalelor RD şi WR . Este activ pe nivelul
coborât, adică: pe nivelul de “0”.

_________
Semnalul IORQ (“input-output request”) are rolul de a mobiliza unitatea
de porturi în vederea efectuării unei operaţii. Operaţia poate fi de citire sau
____ ____
de scriere, dependent de valoarea logică a semnalelor RD şi WR . Este activ
pe nivelul coborât, adică: pe nivelul de “0”.

____
Semnalul RD (“read”) are rolul de a specifica memoriei sau unităţii de
________
porturi că operaţia dispusă de procesor prin semnalele MRQ , respectiv
_________
IORQ este una de citire. Este activ pe nivelul coborât, adică: pe nivelul
de “0”.

____
Semnalul WR (“write”) are rolul de a specifica memoriei sau unităţii de
________
porturi că operaţia dispusă de procesor prin semnalele MRQ , respectiv
_________
IORQ este una de scriere. Este activ pe nivelul coborât, adică: pe nivelul de
“0”.

Operaţia de citire / scriere în derulare la un moment va viza o locaţie de


memorie sau alta, respectiv un port sau altul, în funcţie de valoarea

138
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

informaţiei numită adresă, transmisă memoriei, respectiv unităţii de porturi,


________ _________
prin grija unităţii de comandă, în timp ce semnalele MRQ , respectiv IORQ
sunt active.

Suportul fizic pe care se face vehicularea adreselor între procesor şi


memorie, respectiv porturi este aşa-numita “magistrală de adrese”, formată,
în cazul arhitecturii considerate, din 16 linii: A0-A15. Liniile magistralei de
adrese sunt cu trei stări logice, unidirecţionale.

Suportul fizic pe care se face vehicularea datelor între procesor şi


memorie, respectiv porturi, ca şi între memorie, respectiv porturi şi procesor
este aşa-numita “magistrală de date”, formată, în cazul arhitecturii
considerate, din 8 linii: D0-D7. Liniile magistralei de date sunt cu trei stări
logice, bidirecţionale.

Generatorul de tact

Generatorul de tact, CG, are rolul de a furniza aşa-numitul “semnal de


tact” sau “semnal de ceas”, CLK (“clock”), cu care îşi sincronizează
funcţionarea secvenţiatorul, dar şi celelalte blocuri secvenţiale ale unităţii de
comandă şi, în ultimă instanţă, întregul calculator.

Generatorul de reset

Generatorul de reset, RG, are rolul de a furniza un semnal de iniţializare


a secvenţiatorului şi a altor blocuri cu caracter secvenţial, de fiecare dată
când calculatorul se pune sub tensiune, respectiv când se apasă un buton
dedicat, numit “buton RESET”.

Minimal, generatorul de reset asigură aducerea registrului PC la un


conţinut predefinit (zero, în cazul celor mai multe procesoare, inclusiv în
cazul în studiu), reprezentând adresa instrucţiei de început a primului
program ce se impune a fi rulat (de regulă: un program de autotestare sau un
program încărcător), respectiv instituirea stării iniţiale a secvenţiatorului,
astfel încât el să-şi demareze activitatea cu un ciclu fetch.

6.3. Instrucţiile procesoarelor von Neumann. Studiu de caz


pe setul de instrucţii al procesorului CSAC 2001

139
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

6.3.1. Aspecte introductive

Procesorul CSAC 2001 dispune, la nivel generic, de 17 instrucţii:


1. Instrucţia de încărcare (load), “LD”
2. Instrucţia de adunare (add), “ADD”
3. Instrucţia de scădere (substract), “SUB”
4. Instrucţia de efectuare a operaţiei ŞI (and), “AND”
5. Instrucţia de efectuare a operaţiei SAU (or), “OR”
6. Instrucţia de efectuare a operaţiei SAU EXCLUSIV (exclusiv or), “XOR”
7. Instrucţia de incrementare (increment), “INC”
8. Instrucţia de decrementare (decrement), “DEC”
9. Instrucţia de deplasare la dreapta (shift right), “SHR”
10. Instrucţia de deplasare la stânga (shift left), “SHL”
11. Instrucţia de intrare (input), “IN”
12. Instrucţia de ieşire (output), “OUT”
13. Instrucţia de scriere în stivă (push), “PUSH”
14. Instrucţia de citire din stivă (pop), “POP”
15. Instrucţia de salt (jump), “JP”
16. Instrucţia de apel de subrutină (call), “CALL”
17. Instrucţia de revenire din subrutină (return), “RET”

Înainte de prezentarea efectivă a acestor instrucţii, se instituie


următoarele notaţii:
• op: pentru desemnarea operaţiei cu care se identifică o instrucţie
• x: pentru desemnarea sediului operandului 1 sau a sediului comun al
operandului 1 şi al rezultatului sau a sediului operandului 2, distincţia
făcându-se din context; operandul 1 poate fi şi unicul
• y: pentru desemnarea operandului 2 sau a sediului operandului 2,
distincţia făcându-se din context
• A, B, C: pentru desemnarea registrelor A, B, C sau a conţinuturilor lor,
distincţia făcându-se din context
• (BC): pentru desemnarea locaţiei de memorie pointată de adresa din BC
sau a conţinutului ei, distincţia făcându-se din context
• (aaaa): pentru desemnarea locaţiei de memorie pointată de adresa “aaaa”
sau a conţinutului ei, distincţia făcându-se din context

140
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

• (aa): pentru desemnarea portului de adresă “aa” sau a conţinutului lui,


distincţia făcându-se din context
• aa: pentru desemnarea unei valori pe 8 biţi
• aaaa: pentru desemnarea unei valori pe 16 biţi

Se face precizarea că cele mai multe dintre instrucţiile procesorului


CSAC 2001 fac uz de toate cele şase moduri de adresare introduse cu ocazia
prezentării decodificatorului codului operaţiei:
• adresarea implicită
• adresarea la registru
• adresarea imediată
• adresarea indirectă
• adresarea directă
• adresarea stivă

6.3.2. Codificarea instrucţiilor


Se convine ca octetul 1 al instrucţiilor –reamintim: instrucţiile
procesorului CSAC 2001 se reprezintă pe 1...4 octeţi- să aibă următoarele
câmpuri:

a). când val (bit7... bit5)  [0012...1102] şi val (bit4 bit3)  [002...102]:

7 6 5 4 3 2 1 0

codul specificaţia specificaţia


operaţiei pt. x pt. y
001: op = LD x, y 00: x = A 000: y = A
010: op = ADD x, y 01: x = B 001: y = B
011: op = SUB x, y 10: x = C 010: y = C
100: op = AND x, y 011: y = aa
101: op = OR x, y 100: y = (BC)
110: op = XOR x, y 101: y = (aaaa)

141
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

b). când val (bit7... bit5)  [0012...1102] şi val (bit4 bit3) = 112:

7 6 5 4 3 2 1 0

codul specificaţia specificaţia


operaţiei pt. x pt. y
001: op = LD x, y 110: x =(BC) 00: y = A
010: op = ADD x, y 111: x =(aaaa) 01: y = B
011: op = SUB x, y 10: y = C
100: op = AND x, y 11: y = aa
101: op = OR x, y
110: op = XOR x, y

c). când val (bit7... bit5) = 1112 şi val (bit4 bit3)  [002...102]
şi val (bit2 ... bit0)  [0002...1012]:

7 6 5 4 3 2 1 0

codul specificaţia codul


operaţiei pt. x operaţiei
şi specificaţia pt. y
111: op = vezi 00: x = A 000: op = INC x
val (bit2 ... bit0) 01: x = B 001: op = DEC x
10: x = C 010: op = SHL x
011: op = SHR x
101: op = IN x, y
cu y = (aa)

d). când val (bit7 ... bit5) = 1112 şi val (bit4 bit3)  [002...102]
şi val (bit2 ... bit0) = 1102:

7 6 5 4 3 2 1 0

codul specificaţia codul


operaţiei pt. y operaţiei
şi specificaţia pt. x
111: op = vezi 00: y = A 110: op = OUT x, y
val (bit2 ... bit0) 01: y = B cu x = (aa)
10: y = C

e). când val (bit7... bit5) = 1112 şi val (bit4 bit3) = 002

142
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

şi val (bit2 ... bit0) = 1112:


7 6 5 4 3 2 1 0

codul codul
operaţiei operaţiei
111: op = vezi 00111: op= RET
val (bit4 ... bit0)

f). când val (bit7 ... bit5) = 1112 şi val (bit4 bit3) = 112
7 6 5 4 3 2 1 0

codul specificaţia codul


operaţiei pt. x operaţiei
111: op = vezi 110: x =(BC) 00: op = INC
val (bit2 ... bit0) 111: x =(aaaa) 01: op = DEC
10: op = SHL
11: op = SHR

g). când val (bit7 ... bit5) = 0002 şi val (bit3 ... bit0)  0000, 1000, 01112:
7 6 5 4 3 2 1 0

codul specifi- codul


operaţiei caţia operaţiei
pt. x
000: op = vezi 0: x=AF 0000: PUSH x
val (bit3 ... bit0) sau: 1000: POP x
x=SP 0111: LD x, aaaa
1: x=BC

h). când val (bit7 ... bit5) = 0002 şi val (bit3 ... bit0) = 11112:
7 6 5 4 3 2 1 0

codul codul
operaţiei operaţiei
000: op = vezi 01111: op= INC BC
val (bit4 ... bit0) 11111: op= DEC BC
i). când val (bit7 bit6 bit5) = 0002 şi val (bit2 bit1 bit0)  001...1102:

143
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

7 6 5 4 3 2 1 0

codul specifi- codul


operaţiei caţia operaţiei
pt. x
000: op = vezi 0: e= N 0001: op = JP eZ, (aaaa)
val (bit3 ... bit0) 1: e= nil 0010: op = JP eS, (aaaa)
0011: op = JP eC, (aaaa)
0100: op = JP eV, (aaaa)
0101: op = JP eP, (aaaa)
0110: op = JP (BC),
dacă bit4=0
0110: op = JP (aaaa)
dacă bit4=1
1001: op = CALL eZ, (aaaa)
1010: op = CALL eS, (aaaa)
1011: op = CALL eC, (aaaa)
1100: op = CALL eV, (aaaa)
1101: op = CALL eP, (aaaa)
0110: op = CALL (BC),
dacă bit4=0
0110: op = CALL (aaaa)
dacă bit4=1

Ca o consecinţă a convenţiilor de codificare de mai sus, rezultă tabelul


din figura 6.3.2_1. Acesta cuprinde, într-o manieră sintetică, întregul set de
instrucţii al procesorului CSAC 2001, cu modurile de adresare pe care ele le
admit.

144
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

765 43 210 Notaţie L 010 00 000 Notaţie L 765 43 210 Notaţie L


001 00 000 LD A, A 1 010 00 000 ADD A, A 1 011 00 000 SUB A, A 1
001 LD A, B 1 001 ADD A, B 1 001 SUB A, B 1
010 LD A, C 1 010 ADD A, C 1 010 SUB A, C 1
011 LD A, aa 2 011 ADD A, aa 2 011 SUB A, aa 2
100 LD A, (BC) 1 100 ADD A, (BC) 1 100 SUB A, (BC) 1
101 LD A, (aaaa) 3 101 ADD A, (aaaa) 3 101 SUB A, (aaaa) 3
01 000 LD B, A 1 01 000 ADD B, A 1 01 000 SUB B, A 1
001 LD B, B 1 001 ADD B, B 1 001 SUB B, B 1
010 LD B, C 1 010 ADD B, C 1 010 SUB B, C 1
011 LD B, aa 2 011 ADD B, aa 2 011 SUB B, aa 2
100 LD B, (BC) 1 100 ADD B, (BC) 1 100 SUB B, (BC) 1
101 LD B, (aaaa) 3 101 ADD B, (aaaa) 3 101 SUB B, (aaaa) 3
10 000 LD C, A 1 10 000 ADD C, A 1 10 000 SUB C, A 1
001 LD C, B 1 001 ADD C, B 1 001 SUB C, B 1
010 LD C, C 1 010 ADD C, C 1 010 SUB C, C 1
011 LD C, aa 2 011 ADD C, aa 2 011 SUB C, aa 2
100 LD C, (BC) 1 100 ADD C, (BC) 1 100 SUB C, (BC) 1
101 LD C, (aaaa) 3 101 ADD C, (aaaa) 3 101 SUB C, (aaaa) 3
11 000 LD (BC), A 1 11 000 ADD (BC), A 1 11 000 SUB (BC), A 1
001 LD (BC), B 1 001 ADD (BC), B 1 001 SUB (BC), B 1
010 LD (BC), C 1 010 ADD (BC), C 1 010 SUB (BC), C 1
011 LD (BC), aa 2 011 ADD (BC), aa 2 011 SUB (BC), aa 2
100 LD (aaaa), A 3 100 ADD (aaaa), A 3 100 SUB (aaaa), A 3
101 LD (aaaa), B 3 101 ADD (aaaa), B 3 101 SUB (aaaa), B 3
110 LD (aaaa), C 3 110 ADD (aaaa), C 3 110 SUB (aaaa), C 3
111 LD (aaaa), aa 4 111 ADD (aaaa), aa 4 111 SUB (aaaa), aa 4
100 00 000 AND A, A 1 101 00 000 OR A, A 1 110 00 000 XOR A, A 1
001 AND A, B 1 001 OR A, B 1 001 XOR A, B 1
010 AND A, C 1 010 OR A, C 1 010 XOR A, C 1
011 AND A, aa 2 011 OR A, aa 2 011 XOR A, aa 2
100 AND A, (BC) 1 100 OR A, (BC) 1 100 XOR A, (BC) 1
101 AND A, (aaaa) 3 101 OR A, (aaaa) 3 101 XOR A, (aaaa) 3
01 000 AND B, A 1 01 000 OR B, A 1 01 000 XOR B, A 1
001 AND B, B 1 001 OR B, B 1 001 XOR B, B 1
010 AND B, C 1 010 OR B, C 1 010 XOR B, C 1
011 AND B, aa 2 011 OR B, aa 2 011 XOR B, aa 2
100 AND B, (BC) 1 100 OR B, (BC) 1 100 XOR B, (BC) 1
101 AND B, (aaaa) 3 101 OR B, (aaaa) 3 101 XOR B, (aaaa) 3
10 000 AND C, A 1 10 000 OR C, A 1 10 000 XOR C, A 1
001 AND C, B 1 001 OR C, B 1 001 XOR C, B 1
010 AND C, C 1 010 OR C, C 1 010 XOR C, C 1
011 AND C, aa 2 011 OR C, aa 2 011 XOR C, aa 2
100 AND C, (BC) 1 100 OR C, (BC) 1 100 XOR C, (BC) 1
101 AND C, (aaaa) 3 101 OR C, (aaaa) 3 101 XOR C, (aaaa) 3
11 000 AND (BC), A 1 11 000 OR (BC), A 1 11 000 XOR (BC), A 1
001 AND (BC), B 1 001 OR (BC), B 1 001 XOR (BC), B 1
010 AND (BC), C 1 010 OR (BC), C 1 010 XOR (BC), C 1
011 AND (BC), aa 2 011 OR (BC), aa 2 011 XOR (BC), aa 2
100 AND (aaaa), A 3 100 OR (aaaa), A 3 100 XOR (aaaa), A 3
101 AND (aaaa), B 3 101 OR (aaaa), B 3 101 XOR (aaaa), B 3
110 AND (aaaa), C 3 110 OR (aaaa), C 3 110 XOR (aaaa), C 3
111 AND (aaaa), aa 4 111 OR (aaaa), aa 4 111 XOR (aaaa), aa 4

Fig. 6.3.2_1. Instrucţiile procesorului CSAC 2001 (se continuă).

145
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

765 43 210 Notaţie L 010 00 000 Notaţie L 765 43 210 Notaţie L


111 00 000 INC A 1 000 00 000 PUSH AF 1
001 DEC A 1 001 JP NZ, (aaaa) 3
010 SHL A 1 010 JP NS, (aaaa) 3
011 SHR A 1 011 JP NC, (aaaa) 3
100 100 JP NV, (aaaa) 3
101 IN A, (aa) 2 101 JP NP, (aaaa) 3
110 OUT (aa), A 2 110 JP (BC) 1
111 RET 1 111 LD SP, aaaa 3
01 000 INC B 1 01 000 POP AF 1
001 DEC B 1 001 CALL NZ, (aaaa) 3
010 SHL B 1 010 CALL NS, (aaaa) 3
011 SHR B 1 011 CALL NC, (aaaa) 3
100 100 CALL NV, (aaaa) 3
101 IN B, (aa) 2 101 CALL NP, (aaaa) 3
110 OUT (aa), B 2 110 CALL (BC) 1
111 111 INC BC 1
10 000 INC C 1 10 000 PUSH BC 1
001 DEC C 1 001 JP Z, (aaaa) 3
010 SHL C 1 010 JP S, (aaaa) 3
011 SHR C 1 011 JP C, (aaaa) 3
100 100 JP V, (aaaa) 3
101 IN C, (aa) 2 101 JP P, (aaaa) 3
110 OUT (aa), C 2 110 JP (aaaa) 3
111 111 LD BC, aaaa 3
11 000 INC (BC) 1 11 000 POP BC 1
001 DEC (BC) 1 001 CALL Z, (aaaa) 3
010 SHL (BC) 1 010 CALL S, (aaaa) 3
011 SHR (BC) 1 011 CALL C, (aaaa) 3
100 INC (aaaa) 3 100 CALL V, (aaaa) 3
101 DEC (aaaa) 3 101 CALL P, (aaaa) 3
110 SHL (aaaa) 3 110 CALL (aaaa) 3
111 SHR (aaaa) 3 111 DEC BC 1

Legendă: L: lungimea în octeţi a instrucţiilor.

Fig. 6.3.2_1. Instrucţiile procesorului CSAC 2001 (continuare).

146
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

6.3.3. Conţinutul instrucţiilor

1. Instrucţia de încărcare (LD).


Notaţie:
LD x, y
unde:
xA, B, C, (BC), (aaaa)
yA, B, C, (BC), (aaaa), aa, cu y(BC), (aaaa) x(BC), (aaaa)

Descriere:
Încarcă x cu y (a se citi: “încarcă un registru sau o locaţie de memorie cu
o valoare specificată prin adresare imediată sau cu o copie a unui octet aflat
într-un registru sau într-o locaţie de memorie”.

Codificare:
Aşa cum rezultă din figura 6.3.2_1, instrucţia LD poate avea 1-4 octeţi, în
funcţie de modurile de adresare pe care le foloseşte. Semnificaţiile octeţilor
sunt următoarele:
a). cazul L= 1 octet
Octetul 1 (unicul) reprezintă codul operaţiei. În plus, în cazul adresărilor “la
registru” şi “indirectă”, tot el indică şi registrul / locaţia de memorie vizat /
vizată prin respectivele adresări.
b). cazul L= 2 octeţi
Octetul 1 reprezintă codul operaţiei. În plus, în cazul adresărilor “la registru”
şi “indirectă”, tot el indică şi registrul / locaţia de memorie vizat / vizată prin
respectivele adresări.
Octetul 2 reprezintă operandul efectiv -adică: pe aa-, cazul L=2 octeţi
conţinând o adresare imediată.
c). cazul L= 3 octeţi
Octetul 1 reprezintă codul operaţiei. În plus, tot el indică şi registrul vizat
prin adresarea “la registru” pe care cazul L=3 octeţi o conţine inevitabil.
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locaţiei de
memorie vizată -adică: pe aaaaL-, cazul L=3 octeţi conţinând o adresare
directă.
Octetul 3 reprezintă partea mai semnificativă a adresei locaţiei de memorie
vizată -adică: pe aaaaH-, cazul L=3 octeţi conţinând o adresare directă.

147
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

d). cazul L= 4 octeţi


Octetul 1 reprezintă codul operaţiei.
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locaţiei de
memorie vizată -adică: pe aaaaL-, cazul L=4 octeţi conţinând o adresare
directă.
Octetul 3 reprezintă partea mai semnificativă a adresei locaţiei de memorie
vizată -adică: pe aaaaH-, cazul L=4 octeţi conţinând o adresare directă.
Octetul 4 reprezintă operandul efectiv -adică: pe aa-, cazul L=4 octeţi
conţinând o adresare imediată.

2. Instrucţia de adunare (ADD).


Notaţie:
ADD x, y
unde:
xA, B, C, (BC), (aaaa)
yA, B, C, (BC), (aaaa), aa, cu y(BC), (aaaa) x(BC), (aaaa)

Descriere:
Adună pe x cu y şi oferă rezultatul în x şi informaţii despre rezultat în F.

Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia LD este valabil şi
pentru instrucţia ADD.

3. Instrucţia de scădere (SUB).


Notaţie:
SUB x, y
unde:
xA, B, C, (BC), (aaaa)
yA, B, C, (BC), (aaaa), aa, cu y(BC), (aaaa) x(BC), (aaaa)

Descriere:
Scade din x pe y şi oferă rezultatul în x şi informaţii despre rezultat în F.
Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia LD este valabil şi
pentru instrucţia SUB.

148
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

4. Instrucţia de efectuare a operaţiei ŞI (AND).


Notaţie:
AND x, y
unde:
xA, B, C, (BC), (aaaa)
yA, B, C, (BC), (aaaa), aa, cu y(BC), (aaaa) x(BC), (aaaa)

Descriere:
Efectuează operaţia ŞI bit la bit între x şi y şi oferă rezultatul în x şi
informaţii despre rezultat în F.

Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia LD este valabil şi
pentru instrucţia AND.

5. Instrucţia de efectuare a operaţiei SAU (OR).


Notaţie:
OR x, y
unde:
xA, B, C, (BC), (aaaa)
yA, B, C, (BC), (aaaa), aa, cu y(BC), (aaaa) x(BC), (aaaa)

Descriere:
Efectuează operaţia SAU bit la bit între x şi y şi oferă rezultatul în x şi
informaţii despre rezultat în F.

Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia LD este valabil şi
pentru instrucţia OR.

6. Instrucţia de efectuare a operaţiei SAU EXCLUSIV (XOR).


Notaţie:
XOR x, y
unde:
xA, B, C, (BC), (aaaa)
yA, B, C, (BC), (aaaa), aa, cu y(BC), (aaaa) x(BC), (aaaa)

Descriere:
Efectuează operaţia SAU EXCLUSIV bit la bit între x şi y şi oferă
rezultatul în x şi informaţii despre rezultat în F.

149
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia LD este valabil şi
pentru instrucţia XOR.

7. Instrucţia de incrementare (INC).


Notaţie:
INC x
unde:
xA, B, C, (BC), (aaaa), BC

Descriere:
Incrementează x şi oferă informaţii despre rezultat în F.

Codificare:
Aşa cum rezultă din figura 6.3.2_1, instrucţia INC poate avea fie 1 octet,
fie 3 octeţi, în funcţie de modurile de adresare pe care le foloseşte.
Semnificaţiile octeţilor sunt următoarele:
a). cazul L= 1 octet
Octetul 1 (unicul) reprezintă codul operaţiei. În plus, în cazul adresărilor “la
registru” şi “indirectă”, tot el indică şi registrul / locaţia de memorie vizat /
vizată prin respectivele adresări.
b). cazul L= 3 octeţi
Octetul 1 reprezintă codul operaţiei.
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locaţiei de
memorie vizată -adică: pe aaaaL-, cazul L=3 octeţi conţinând o adresare
directă.
Octetul 3 reprezintă partea mai semnificativă a adresei locaţiei de memorie
vizată -adică: pe aaaaH-, cazul L=3 octeţi conţinând o adresare directă.

8. Instrucţia de decrementare (DEC).


Notaţie:
DEC x
unde:
xA, B, C, (BC), (aaaa), BC

Descriere:
Decrementează x şi oferă informaţii despre rezultat în F.

Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia INC este valabil şi
pentru instrucţia DEC.
9. Instrucţia de deplasare la dreapta (SHR).
150
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Notaţie:
SHR x
unde:
xA, B, C, (BC), (aaaa)

Descriere:
Deplasează la dreapta cu o poziţie biţii lui x şi oferă informaţii despre
rezultat în F. În procesul de deplasare, în rangul de pondere 27 al lui x se
introduce valoarea 0, iar ceea ce a fost în rangul de pondere 20 se transferă în
fanionul C.

Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia INC este valabil şi
pentru instrucţia SHR.

10. Instrucţia de deplasare la stânga (SHL).


Notaţie:
SHL x
unde:
xA, B, C, (BC), (aaaa)

Descriere:
Deplasează la stânga cu o poziţie biţii lui x şi oferă informaţii despre
rezultat în F. În procesul de deplasare, în rangul de pondere 20 al lui x se
introduce valoarea 0, iar ceea ce a fost în rangul de pondere 27 se transferă în
fanionul C.
Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia INC este valabil şi
pentru instrucţia SHL.

11. Instrucţia de intrare (IN).


Notaţie:
IN x, y
unde:
xA, B, C
y = (aa)

Descriere:

151
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Introdu în x o copie a informaţiei de un octet aflată într-un port de intrare


y.
Codificare:
Aşa cum rezultă din figura 6.3.2_1, instrucţia IN are 2 octeţi.
Semnificaţiile octeţilor sunt următoarele:
Octetul 1 reprezintă codul operaţiei. În plus, tot el indică şi registrul vizat
prin adresarea “la registru” pe care instrucţia o conţine inevitabil.
Octetul 2 reprezintă adresa portului vizat -adică: pe aa-.

12. Instrucţia de ieşire (OUT).


Notaţie:
OUT x, y
unde:
x = (aa)
yA, B, C

Descriere:
Scoate într-un port de ieşire x o copie a octetului aflat în y.
Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia IN este valabil şi
pentru instrucţia OUT.

13. Instrucţia de scriere în stivă (PUSH).


Notaţie:
PUSH x
unde:
x AF, BC

Descriere:
Depune x în stivă.
Codificare:
Aşa cum rezultă din figura 6.3.2_1, instrucţia PUSH are 1 octet.
Semnificaţiile sale sunt următoarele:
Octetul 1 (unicul) reprezintă codul operaţiei. În plus, tot el indică şi perechea
de registre vizată prin adresarea “la registru” pe care instrucţia o conţine
inevitabil.

14. Instrucţia de scriere în stivă (POP).

152
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Notaţie:
POP x
unde:
x AF, BC
Descriere:
Încarcă x prin descărcarea stivei.
Codificare:
Tot ce s-a spus în privinţa codificării la instrucţia PUSH este valabil şi
pentru instrucţia POP.

15. Instrucţia de salt (JP).


Notaţie:
dacă W  nil:
JP eW, x
dacă W = nil:
JP x
unde:
e nil, N
WZ, S, C, V, P, nil
x(BC), (aaaa)
Descriere:
Ieşi din secvenţa normală de rulare, eventual condiţionat, şi continuă
programul cu instrucţia localizată prin x; altfel spus: fă un salt. Dacă
W  nil, atunci ieşirea din secvenţă se face condiţionat de valoarea
fanionului indicat de W: dacă e = nil, atunci, pentru salt, respectivul fanion
trebuie să fie la unu; dacă e = N, atunci, pentru salt, respectivul fanion
trebuie să fie la zero. Când condiţia de salt nu este îndeplinită, programul
continuă, ca şi în cazul instrucţiilor ordinare, cu instrucţia imediat următoare
din punct de vedere topologic.

Codificare:
Aşa cum rezultă din figura 6.3.2_1, instrucţia JP poate avea fie 1 octet,
fie 3 octeţi, în funcţie de modurile de adresare pe care le foloseşte.
Semnificaţiile octeţilor sunt următoarele:

153
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

a). cazul L= 1 octet


Octetul 1 (unicul) reprezintă codul operaţiei. În plus, tot el indică şi faptul că
adresa instrucţiei la care se vizează să se efectueze saltul se află în registrul
pereche BC.
b). cazul L= 3 octeţi
Octetul 1 reprezintă codul operaţiei, iar în cazul instrucţiilor de salt
condiţionat –în plus, condiţia impusă.
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locaţiei de
memorie vizată -adică: pe aaaaL-, cazul L=3 octeţi conţinând o adresare
directă.
Octetul 3 reprezintă partea mai semnificativă a adresei locaţiei de memorie
vizată -adică: pe aaaaH-, cazul L=3 octeţi conţinând o adresare directă.

Evident, în cazurile în care saltul trebuie executat, acest lucru se


realizează prin încărcarea registrului PC cu conţinutul registrului pereche
BC –dacă x = (BC)-, repectiv cu octeţii 2 şi 3 ai instrucţiei –dacă x = (aaaa).

16. Instrucţia de apel de subrutină (CALL).


Notaţie:
dacă W  nil:
CALL eW, x
dacă W = nil:
CALL x
unde:
e nil, N
WZ, S, C, V, P, nil
x(BC), (aaaa)
Descriere:
Ieşi din secvenţa normală de rulare, eventual condiţionat, şi continuă
programul cu instrucţia localizată prin x, după ce salvezi în stivă adresa
instrucţiei imediat următoare din punct de vedere topologic; altfel spus: fă
un salt reversibil sau apelează o subrutină. Dacă W  nil, atunci apelarea
subrutinei se face condiţionat de valoarea fanionului indicat de W: dacă
e = nil, atunci, pentru apel, respectivul fanion trebuie să fie la unu; dacă
e = N, atunci, pentru apel, respectivul fanion trebuie să fie la zero. Când
condiţia de apel nu este îndeplinită, programul continuă, ca şi în cazul
instrucţiilor ordinare, cu instrucţia imediat următoare din punct de vedere
topologic.
Codificare:

154
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Aşa cum rezultă din figura 6.3.2_1, instrucţia CALL poate avea fie 1
octet, fie 3 octeţi, în funcţie de modurile de adresare pe care le foloseşte.
Semnificaţiile octeţilor sunt următoarele:
a). cazul L= 1 octet
Octetul 1 (unicul) reprezintă codul operaţiei. În plus, tot el indică şi faptul că
adresa instrucţiei la care se vizează să se efectueze apelul –altfel spus:
adresa de început a subrutinei- se află în registrul pereche BC.
b). cazul L= 3 octeţi
Octetul 1 reprezintă codul operaţiei, iar în cazul instrucţiilor de apel
condiţionat –în plus, condiţia impusă.
Octetul 2 reprezintă partea mai puţin semnificativă a adresei locaţiei de
memorie vizată -adică: pe aaaaL-, cazul L=3 octeţi conţinând o adresare
directă.
Octetul 3 reprezintă partea mai semnificativă a adresei locaţiei de memorie
vizată -adică: pe aaaaH-, cazul L=3 octeţi conţinând o adresare directă.
Evident, în cazurile în care apelul trebuie executat, acest lucru se
realizează prin încărcarea registrului PC cu conţinutul registrului pereche
BC –dacă x = (BC)-, repectiv cu octeţii 2 şi 3 ai instrucţiei –dacă x = (aaaa),
după ce conţinutul său, reprezentând adresa instrucţiei imediat următoare din
punct de vedere topologic, a fost salvat în stivă.

17. Instrucţia de revenire din subrutină (RET).


Notaţie:
RET
Descriere:
Ieşi din secvenţa normală de rulare şi continuă programul cu instrucţia
a cărei adresă se află în vârful stivei sau, altfel spus: revino din subrutină
(evident, dacă s-a operat corect asupra stivei, atunci în momentul execuţiei
instrucţiei RET, în vârful stivei se găseşte adresa instrucţiei imediat
următoare din punct de vedere topologic instrucţiei CALL care a apelat
subrutina –vezi descrierea instrucţiei CALL).
Codificare:
Aşa cum rezultă din figura 6.3.2_1, instrucţia RET are 1 octet.
Semnificaţiile sale sunt următoarele:
Octetul 1 (unicul) reprezintă codul operaţiei. În plus, tot el indică şi faptul că
adresa instrucţiei la care se vizează să se producă revenirea –altfel spus:
adresa de revenire- se află în vârful stivei.
Evident, revenirea din subrutină se face prin descărcarea primilor 2 octeţi
din vârful stivei în registrul PC.

155
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

6.4. Implementarea instrucţiilor


în procesoarele von Neumann

6.4.1. Aspecte introductive

În acest subcapitol, se va ilustra ce se întâmplă şi cum se desfăşoară


lucrurile la nivel elementar, pentru a se face posibilă procesarea datelor,
procesare care, aşa cum s-a arătat încă de la începutul lucrării noastre,
înseamnă: acceptarea, reţinerea, înţelegerea şi executarea de instrucţii. Vor fi
considerate câteva instrucţii reprezentative şi se vor construi cronogramele
semnalelor de comandă interne şi externe prin care ele se implementează.
Principiile organizării interne şi funcţionării calculatoarelor vor fi, astfel, clar
şi definitiv înţelese.

Aşa cum s-a arătat cu ocazia prezentării secvenţiatorului, rularea unei


instrucţii are două etape:
1). Etapa de extragere sau aducere (“fetch”) a codului operaţiei şi a
informaţiilor privind locul operanzilor şi-sau rezultatului indisociabile de
codul operaţiei.
2). Etapa de execuţie propriu-zisă a instrucţiei.

Etapa de aducere cuprinde un ciclu de citire din memorie identic pentru


toate instrucţiile. În cadrul acestui ciclu, se citeşte locaţia cu adresa prezentă
în registrul PC şi conţinutul ei se duce în registrul IR.

Etapa de execuţie cuprinde unul sau mai multe cicluri de citire, respectiv
de scriere, vizând memoria sau un port, în mod specific pentru fiecare
instrucţie. Aceste cicluri au ca obiectiv, în principal, citirea operanzilor,
respectiv scrierea rezultatului, dar, uneori, mai înainte de asta, aducerea
informaţiilor privind locul operanzilor şi-sau rezultatului, ce se prezintă
separat de codul operaţiei.

156
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

La pornirea calculatorului, are loc un proces de iniţializare al cărui efect


minimal este aducerea la zero a registrului PC şi instituirea stării iniţiale a
secvenţiatorului, astfel încât el să-şi demareze activitatea cu un ciclu fetch.

6.4.2. Implementarea ciclului fetch

Având în vedere obiectivele ciclului fetch, cronograma sa este cea care


face obiectul figurii 6.4.2_1.

Notă:
Pentru înţelegerea a ceea ce urmează, este obligatorie folosirea
schemei procesorului CSAC 2001 –figura 6.2_1- şi schemei memoriei
avută în vedere –figura 2_2-.

S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_IR

INC_PC
ciclul fetch

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.2_1. Cronograma ciclului fetch.

157
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Figura 6.4.2_1 arată că ciclul fetch debutează pe frontul ridicător al


semnalului CLK.

Semnalul SEL_PC are rolul de a selecta la ieşirea multiplexorului de


adrese AM informaţia din PC, adică: adresa instrucţiei care urmează a se
executa. Această adresă se încarcă în registrul tampon de adrese B3, pe
frontul coborâtor al semnalului LD_B3. Simultan, se lansează spre memorie
_______
o cerere de lucru, prin activarea semnalului MRQ şi se anunţă că operaţia
____
de executat este una de citire, prin activarea semnalului RD . Deodată cu
_______
activarea semnalului MRQ , pe liniile de adrese A0-A15 se plasează adresa
locaţiei de memorie vizate, adică: conţinutul registrului B3. Memoria
______
răspunde cererii primite, activând semnalul ACK în momentul în care
termină de efectuat citirea şi anume: după 1 ½ perioade ale semnalului de
tact (evident, aceasta este o ipoteză de lucru). În acest moment, informaţia
citită se află pe liniile de date D0-D7 şi, implicit, la intrările tuturor
registrelor conectate la acestea. După ce sesizează trecerea la 0 a semnalului
______
ACK , secvenţiatorul S activează semnalul LD_IR. Pe frontul său
coborâtor, acest semnal va determina preluarea informaţiei furnizate de
memorie –adică: a codului operaţiei instrucţiei ce urmează a se executa- în
registrul IR. Imediat în continuare, secvenţiatorul dezactivează semnalul
_______
MRQ , ceea ce face ca la nivelul memoriei să fie dezactivat semnalul
______
ACK . Până la încheierea ciclului de tact curent, are loc decodificarea
codului operaţiei, astfel încât din următorul ciclu să poată începe execuţia,
adică: secvenţa de operaţii elementare pe care instrucţia în cauză o implică.
Aşa cum se poate observa pe cronogramă, deodată cu semnalul LD_IR este
activat şi semnalul INC_PC, şi el activ pe front coborâtor. Prin aceasta, se
pregăteşte în PC adresa la care cel mai probabil -adică: dacă instrucţia nu se
dovedeşte a fi, de exemplu, una de salt pe 1 octet, apel de subrutină pe 1
octet sau revenire din subrutină- urmează să se facă următorul acces.

158
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

De remarcat că, în ipoteza de lucru adoptată, între stările S0 şi S1 a fost


inserată o perioadă de tact în care nu se întâmplă nimic nou faţă de perioada
precedentă. O asemenea perioadă poartă numele de stare de aşteptare sau
“stare wait”. Cu ajutorul stărilor wait, se realizează sincronizarea dintre
procesor şi memorie, astfel încât ele să poată conlucra chiar dacă au ritmuri
______
de “mişcare” diferite. Evident, semnalul ACK este cel în funcţie de care se
stabileşte numărul stărilor de aşteptare ce se inserează într-un ciclu de lucru
cu memoria.

6.4.3. Implementarea instrucţiei “LD SP, aaaa”

Aşa cum s-a arătat, activitatea procesorului demarează cu 0 în registrul


PC. Asta înseamnă că prima instrucţie rulată va fi cea de la adresa 0. Întrucât
una dintre primele operaţii care trebuie efectuate la nivel software este
iniţializarea pointerului de stivă, să presupunem că începând de la adresa 0 se
află instrucţia:

LD SP, 0

Această presupunere implică o alta, şi anume: că stiva este implementată


începând de la adresa FFFF16 spre adrese mai mici (ne reamintim: lucrul cu
stiva se face decrementând SP înaintea efectuării unei scrieri).

Notă:
În cele ce urmează, valorile hexazecimale se vor marca asociind
succesiunii cifrelor prin care ele se exprimă sufixul “H”. Se face
convenţia ca atunci când prima cifră a unei valori hexazecimale este o
literă (evident, una din literele A-F), în faţa acesteia să se adauge cifra 0,
pentru a se crea posibilitatea deosebirii succesiunilor de caractere care
reprezintă numere de construcţiile alfanumerice de altă natură.

Instrucţia “LD SP, aaaa” este una pe 3 octeţi. Ea se prezintă în memorie,


când aaaa=000016, aşa cum se arată în figura 6.4.3_1.

159
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

Adresa Conţinuturile locaţiilor Semnificaţia Instrucţiile


[în cu adresele date de col (1) informaţiei aflate în locaţiile cu adresele date de
hexa] [în hexa] din col (2) col (1)
(1) (2) (3) (4)
0000 07 octet 1
0001 00 octet 2 LD SP, 0000H
0002 00 octet 3
0003 16 octet 1
0004 00 octet 2 JP (0100H)
0005 01 octet 3

Fig. 6.4.3_1. Conţinutul zonei de memorie de adrese 0000H-0005H.

Presupunem că ciclul fetch a fost deja parcurs. Prin urmare, în registrul IR


se află codul 07H, iar registrul PC a ajuns la conţinutul 0001H.

Prin decodificarea codului 07H, secvenţiatorul află că are de executat


instrucţia “LD SP, aaaa”, despre care “ştie” că este una pe 3 octeţi, şi, prin
urmare, declanşează 2 cicluri de citire din memorie, similare ciclului fetch,
asistate, de asemenea, de registrul PC, pentru aducerea octeţilor 2 şi 3 ai
instrucţiei, care reprezintă valoarea aaaa. În aceste cicluri, însă, în locul
activării semnalului LD_IR, în timp ce informaţiile citite sunt stabile pe
liniile de date, se activează semnalele LD_SPL, respectiv LD_SPH. Se
înţelege că efectul cumulativ al acţiunii acestor două semnale va fi încărcarea
registrului SP cu valoarea 0000H.

Întrucât la sfârşitul fiecărui ciclu de citire registrul PC este incrementat


(de reţinut: incrementarea registrului PC cu ocazia oricărei citiri făcută sub
asistenţa sa reprezintă o regulă absolută!), la finele instrucţiei, în PC se va
găsi valoarea 0003H, reprezentând adresa următoarei instrucţii.

Cronogramele celor 2 cicluri de citire, pe care le vom numi “execuţie 1”,


respectiv “execuţie 2”, sunt redate în figurile 6.4.3_2, respectiv 6.4.3_3.

160
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_SPL

INC_PC
ciclul exec uţie 1

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.3_2. Cronograma ciclului execuţie 1


al instrucţiei “LD SP, aaaa”.

S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_SPH

INC_PC
ciclul exec uţie 2

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.3_3. Cronograma ciclului execuţie 2


al instrucţiei “LD SP, aaaa”.

161
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

6.4.4. Implementarea instrucţiei “JP (aaaa)”

L-a întocmirea figurii 6.4.3_1, s-a presupus că în zona de memorie


considerată, imediat după instrucţia “LD SP, 0000H” –adică: începând de
la adresa 0003H- se află instrucţia “JP (0100H)”. Să analizăm cum ar rula
“programul” considerat, în continuare.

După ciclul execuţie 2 al instrucţiei “LD SP, 0000H”, se va executa un


nou ciclu fetch, de data aceasta cu referire la adresa 0003H, prin care în
registrul IR va fi adus octetul 16H, adică: codul instrucţiei “JP (aaaa)”.

Instrucţia “JP (aaaa)” fiind şi ea una pe 3 octeţi, vor urma alte 2 cicluri
de citire, omoloage ciclurilor execuţie 1 şi execuţie 2 de la instrucţia
“LD SP, aaaa”, în cadrul cărora, cu ajutorul semnalelor LD_IREL,
respectiv LD_IREH, se încarcă registrele IREL şi IREH cu informaţia
aflată la adresele 0004H, respectiv 0005H, adică: cu octeţii 2 şi 3 ai
instrucţiei. Întrucât această informaţie reprezintă adresa la care se face saltul,
adică: adresa locaţiei unde se află instrucţia ce trebuie introdusă în rulare
după instrucţia JP, în continuare, se va proceda la transferul succesiv al
conţinuturilor registrelor IREL şi IREH în registrele PCL, respectiv PCH,
în cadrul unui ciclu de lucru desfăşurat exclusiv la nivelul procesorului.
Numim acest ciclu “execuţie 3”.

Cronogramele ciclurilor execuţie 1, execuţie 2 şi execuţie 3 ale instrucţiei


“JP (aaaa)” sunt redate în figurile 6.4.4_1, 6.4.4_2 şi 6.4.4_3.

În concluzie, se punctează faptul că valoarea care se va găsi înscrisă în


registrul PC la sfârşitul execuţiei instrucţiei “JP (0100H)”, este 0100H.

162
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_IREL

INC_PC
ciclul exec uţie 1

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.4_1. Cronograma ciclului execuţie 1


al instrucţiei “JP (aaaa)”.

S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_IREH

INC_PC
ciclul exec uţie 2

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.4_2. Cronograma ciclului execuţie 2


al instrucţiei “JP (aaaa)”.

163
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

S0 S1
CLK

OB_IREL

LD_PCL

OB_IREH

LD_PCH
ci clul e xecuţi e 3

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.4_3. Cronograma ciclului execuţie 3


al instrucţiei “JP (aaaa)”.

6.4.5. Implementarea instrucţiei “ADD A, (BC)”

Să presupunem, în continuare, că în zona de memorie 0100H-0105H


avem situaţia surprinsă de figura 6.4.5_1.

Adresa Conţinuturile locaţiilor Semnificaţia Instrucţiile


[în cu adresele date de col (1) informaţiei aflate în locaţiile cu adresele
hexa] [în hexa] din col (2) date de col (1)
(1) (2) (3) (4)
0100 44 octet 1 ADD A, (BC)
0101 1E octet 1
0102 00 octet 2 CALL (1000H)
0103 10 octet 3
0104 E6 octet 1 OUT (21H), A
0105 21 octet 2

Fig. 6.4.5_1. Conţinutul zonei de memorie de adrese 0100H-0105H.

Aşa cum s-a văzut în subcapitolul precedent, “programul” nostru a ajuns


la rularea instrucţiei de la adresa 0100H în urma execuţiei instrucţiei “JP
0100H”. Aşadar, suntem imediat după ciclul execuţie 3 al acestei instrucţii.

În continuare, se va executa un ciclu fetch prin care, de la adresa 0100H,


în registrul IR va fi adus octetul 44H, adică: codul instrucţiei “ADD
A, (BC)”. Această instrucţie este pe 1 octet. Execuţia ei presupune, mai întâi,
transferul operandului 1, aflat în registrul A, în registrul tampon B1, lucru
164
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

care se face cu ajutorul semnalelor OB_A şi LD_B1, iar apoi citirea


operandului 2 din memorie, de la adresa din BC, aducerea lui la intrarea a
doua a unităţii aritmetico-logice, comanda efectuării de către unitatea
aritmetico-logică a unei operaţii de adunare în timp ce informaţia citită din
______
memorie este stabilă pe liniile de date –adică: în timp ce semnalul ACK
este activ-, preluarea rezultatului adunării în registrul B2 şi, în final,
transferul său din B2 în A. Întrucât prima parte a operaţiei de citire din
memorie nu necesită magistrala de date internă a procesorului, transferul
operandului 1 din A în B1 se poate face în paralel cu ea. Se mai face
precizarea că deodată cu încărcarea rezultatului în registrul B2, se efectuează
şi încărcarea informaţiilor despre rezultat în registrul F, informaţii furnizate
automat de către unitatea aritmetico-logică.
Figura 6.4.5_1 şi 6.4.5_2 ilustrează la nivel de cronogramă ceea ce s-a
prezentat în rândurile de mai sus.
S0 SW S1
CLK

OB_A

LD_B1

SEL_BC

LD_B3

MRQ

ACK

RD

ADD

LD_B2

SEL_ALU

LD_F
ci clul e xecuţi e 1

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.5_2. Cronograma ciclului execuţie1


al instrucţiei “ADD A, (BC)”.
S0
CLK

165
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

OB_B2

LD_A

ciclul e xecuţi e 2

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.5_3. Cronograma ciclului execuţie 2


al instrucţiei “ADD A, (BC)”.

6.4.6. Implementarea instrucţiei “CALL (aaaa)”

L-a întocmirea figurii 6.4.5_1, s-a presupus că în zona de memorie


considerată, imediat după instrucţia “ADD A, (BC)” –adică: începând de la
adresa 0101H- se află instrucţia “CALL (1000H)”. Drept urmare, după
execuţia instrucţiei “ADD A, (BC)”, “programul” evoluează după cum
urmează.
Se execută, mai întâi, un ciclu fetch cu referire la adresa 0101H. Prin
acesta, în registrul IR se aduce octetul 1EH, adică: codul instrucţiei
“CALL (aaaa)”.
Instrucţia “CALL (aaaa)” fiind una pe 3 octeţi, vor urma alte 2 cicluri
de citire, primul dintre ele identic cu ciclul execuţie 1 al instrucţiei
“JP (aaaa)”, iar al doilea aproape identic cu ciclul execuţie 2 al instrucţiei
“JP (aaaa)”; “aproape identic” şi nu “identic” deoarece în ciclul execuţie 2
al instrucţiei “CALL (aaaa)” se execută, în plus faţă de ceea ce se întâmplă
în ciclul execuţie 2 al instrucţiei “JP (aaaa)”, decrementarea registrului SP,
în vederea iminentei campanii de scriere în stivă, sub asistenţa sa, a
conţinutului registrului PC, înainte de încărcărea acestui registru cu adresa
subrutinei la care se face apelul.
Salvarea în stivă a lui PC se face în 2 cicluri: mai întâi, se va salva PCH,
iar apoi, după o nouă decrementare a lui SP, realizată la finele primului ciclu,
se va salva PCL. Cele 2 cicluri se vor numi “execuţie 3”, respectiv “execuţie
4”.
Execuţia instrucţiei “CALL (aaaa)” se încheie cu un ciclu “execuţie 5”
identic cu ciclul execuţie 3 al instrucţiei “JP (aaaa)”, adică: cu un ciclu
intern de transfer al informaţiei din registrele IREL şi IREH, în registrele
PCL, respectiv PCH.
Cronogramele ciclurilor execuţie 1, execuţie 2, execuţie 3, execuţie 4 şi
execuţie 5 ale instrucţiei “CALL (aaaa)” sunt redate în figurile 6.4.6_1,
6.4.6_2, 6.4.6_3, 6.4.6_4 şi 6.4.6_5.

166
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_IREL

INC_PC
ciclul exec uţie 1

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.6_1. Cronograma ciclului execuţie 1


al instrucţiei “CALL (aaaa)”.

S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_IREH

INC_PC

DEC_SP
ciclul exec uţie 2

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.6_2. Cronograma ciclului execuţie 2


al instrucţiei “CALL (aaaa)”.

S0 SW S1
CLK

167
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

SEL_SP

LD_B3

MRQ

ACK

WR

OB_PCH

DEC_SP
ciclul exec uţie 3

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.6_3. Cronograma ciclului execuţie 3


al instrucţiei “CALL (aaaa)”.

S0 SW S1
CLK

SEL_SP

LD_B3

MRQ

ACK

WR

OB_PCL

ciclul exec uţie 4

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.6_4. Cronograma ciclului execuţie 4


al instrucţiei “CALL (aaaa)”.

168
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

S0 S1
CLK

OB_IREL

LD_PCL

OB_IREH

LD_PCH
ci clul e xecuţi e 5

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.6_5. Cronograma ciclului execuţie 5


al instrucţiei “CALL (aaaa)”.

În concluzie, se punctează faptul că valoarea care se va găsi înscrisă în


registrul PC la sfârşitul execuţiei instrucţiei “CALL (1000H)”, este 1000H,
în timp ce în vârful stivei se găseşte valoarea 0104H, reprezentând adresa
instrucţiei aflată topologic imediat după instrucţia CALL, adică: adresa la
care trebuie revenit din subrutină.

6.4.7. Implementarea instrucţiei “RET”


Aşa cum s-a văzut, efectul execuţiei instrucţiei “CALL (1000H)”,
amplasată în memorie la adresele 0101H - 0103H, a fost, pe de o parte,
salvarea în stivă a adesei 0104H, corespunzătoare instrucţiei aflată, din punct
de vedere topologic, imediat după instrucţia CALL (1000H), iar pe de altă
parte, încărcarea registrului PC cu valoarea 1000H, reprezentând adresa
primei instrucţii din subrutina apelată. În cadrul subrutinei, la un moment, se
va întâlni instrucţia RET. Prezenţa acesteia este obligatorie pentru revenirea
în secţiunea de program de unde subrutina a fost apelată. Să vedem cum se
implementează această instrucţie.
Instrucţia RET este o instrucţie pe 1 octet. După parcurgerea ciclului
fetch cu referire la adresa unde ea se găseşte, în registrul IR se va avea
valoarea 0E7H. Execuţia propriu-zisă a instrucţiei RET presupune efectuarea
a două cicluri de citire din memorie din zona gestionată după principiul stivei
–asta, bineînţeles, sub asistenţa registrului SP- şi transferarea informaţiei
citite în registrul PC. Conform principiilor lucrului cu stiva, fiecare citire din
stivă presupune o postincrementare a registrului SP, aşa cum fiecare scriere
în stivă presupune o predecrementare a registrului SP.

Cronogramele celor 2 cicluri de execuţie ale instrucţiei RET sunt redate


în figurile 6.4.7_1, respectiv 6.4.7_2.
S0 SW S1

169
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

CLK

SEL_SP

LD_B3

MRQ

ACK

RD

LD_PCL

INC_SP
ciclul exec uţie 1

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.7_1. Cronograma ciclului execuţie 1


al instrucţiei “RET”.

S0 SW S1
CLK

SEL_SP

LD_B3

MRQ

ACK

RD

LD_PCH

INC_SP
ciclul exec uţie 2

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.7_2. Cronograma ciclului execuţie 2


al instrucţiei “RET”.

În concluzie, se punctează faptul că valoarea care se va găsi înscrisă în


registrul PC la sfârşitul execuţiei instrucţiei “RET” în subrutina apelată prin
instrucţia “CALL (1000H)” amplasată în memorie la adresele 0101H -
0103H este 0104H.

170
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

6.4.8. Implementarea instrucţiei “OUT (aa), A”

În figura 6.4.5_1, s-a presupus că “programul” considerat are de rulat,


după subrutina de la adresa 1000H, o instrucţie de tip OUT, şi anume:
“OUT (21H), A”.
Instrucţia “OUT (21H), A” este o instrucţie pe 2 octeţi. După efectuarea
ciclului fetch cu referire la adresa 0104H, în registrul IR se va găsi valoarea
0E6H, reprezentând octetul 1 al unei instanţe a acestei instrucţii, ce vizează
portul de ieşire de adresă 21H. Execuţia instrucţiei “OUT (21H), A”
presupune, pe de o parte, efectuarea unui ciclu de citire din memorie sub
asistenţa lui PC, în scopul aflării adresei portului vizat, surprinsă de octetul 2
al instrucţiei, iar pe de altă parte, efectuarea unui ciclu de scriere în portul cu
adresa respectivă, a conţinutului registrului A. Notăm cu “execuţie 1”,
respectiv “execuţie 2” cele 2 cicluri. Dacă până acum, în toate operaţiile de
_______
citire sau scriere, a fost activat semnalul MRQ , la scrierea într-un port –
lucru valabil, evident, şi pentru citirea dintr-un port-, locul acestui semnal va
_______
fi luat de semnalul IORQ .

Cronogramele ciclurilor execuţie 1 şi execuţie 2 sunt redate în figura


6.4.8_1, respectiv 6.4.8_2.
S0 SW S1
CLK

SEL_PC

LD_B3

MRQ

ACK

RD

LD_IREL

INC_PC
ciclul exec uţie 1

Notă: Cu linii îngroşate s-au evidenţiat fronturile active.

Fig. 6.4.8_1. Cronograma ciclului execuţie 1


al instrucţiei “OUT (aa), A”.
S0 S1

171
CAP. 6. DESPRE PROCESOR. UNITATEA DE COMANDĂ

CLK

SEL_IRE

LD_B3

IORQ

WR

OB_A

cic lul ex ecuţie 2


x
Note:
1). Cu linii îngroşate s-au evidenţiat fronturile active.
2). Din IRE, doar partea inferioară –IREL- este utilă.
Fig. 6.4.8_2. Cronograma ciclului execuţie 2
al instrucţiei “OUT (aa), A”.

Este de remarcat faptul că din cronograma ciclului execuţie 2 lipseşte


______
semnalul ACK . Explicaţia rezidă în aceea că porturile au timpi de răspuns
foarte reduşi, fiind posibilă conlucrarea dintre ele şi procesor fără
introducerea de stări de aşteptare şi, în consecinţă, fără a se mai folosi
______ ______
semnalul ACK . Negenerarea semnalului ACK de către unitatea de porturi
face necesară aplicarea automată la intrarea cu acelaşi nume a procesorului a
________
semnalului IORQ însuşi.

172
A15-A0

LD_B3
B3

SEL_IRE
SEL_PC
AM
SEL_SP
SEL_BC

OB_IREH OB_IREL OB_PCH OB_PCL OB_SPH OB_SPL OB_B OB_C


LD_IREH LD_IREL LD_PCH LD_PCL LD_SPH LD_SPL LD_B LD_C
RES_PC DEC_SP DEC_BC

IREH IREL PCH PCL SPH SPL B C

INC_PC INC_SP INC_BC


D7-D0

CAP. 5. DESPRE PROCESOR. UNITATEA DE REGISTRE


121

OB_0G OB_1G OB_B2 OB_A OB_F

LD_IR LD_B1 LD_B2 LD_A LD_F


IR 0G 1G B1 B2 A F

SEL_ALU SEL_DB
OCD ADD MUX
… SUB
MRQ LD_IR ALU
XOR
IORQ LD_A
RD OB_A
S
WR ..
.
ACK ADD
RESET RESET Fig. 5.2_1. Blocurile în gri: unitatea de registre
RG
CLK CLK
a procesorului didactic CSAC 2001.
CG
7. Capabilităţi speciale ale procesoarelor

7.1. Capabilitatea de aşteptare

Pentru a se asigura posibilitatea sincronizării între procesoare şi memorii, în


contextul în care memoriile sunt sensibil mai lente decât procesoarele, acestea sunt
______ _________
prevăzute cu o bornă numită, de exemplu, ACK (”acknowledge”), READY sau
________
WAIT
https://clovis.ro/pc-periferice/componente-desktop/cel-
mai-bun-procesor-quad-core-intel/
Cum aleg cele mai bune procesoare Quad Core Intel

Procesorul sau Central Processing Unit (CPU) este componenta PC-ului care indeplineste
instructiunile date de sistemul de operare – poate fi considerat creierul calculatorului –
care primeste mesaje si indicatii si le transmite mai departe la celelalte componente care
sunt raspunzatoare de efectuarea lor. Daca vei face editari grafice, creezi muzica,
programezi si compilezi, vizionezi filme HD sau iti plac jocurile cu grafica buna, atunci e
bine sa alegi un procesor quad core, adica cu patru nuclee, fiecare putand sa proceseze
instructiuni individuale.

In continuare iti prezentam principalele caracteristici de care e bine sa tii seama cand vrei
sa faci o noua achizitie, pe care le-am extras analizand pareri despre cele mai bune
procesoare Quad Core Intel.

Pe piata producatorilor de componente pentru PC-uri, Intel este un nume cunoscut, fiind
pionier in multe tehnologii, si aliat cu mari firme precum Microsoft si Apple. In materie
de procesoare este un producator foarte important, detinand o mare parte din piata de
desktop-uri si laptop-uri.
Procesoarele cu patru nuclee Intel pot fi din seria i5 sau i7, care sunt de generatie mai
noua si intra in categoria foarte bune si excelente.

In notatia unui procesor avem specificat brandul (Intel Core), modelul de brand (i5, i7),
un grup de 4 cifre – prima semnifica generatia, cu cat este mai mare este mai nou, iar
urmatoarele trei sunt asa numitele SKU. Cu cat numarul SKU este mai mare cu atat
procesorul este mai performant din modelul din care face parte.

La unele modele dupa grupul de patru cifre mai apare si o litera care inseamna: T – este
optimizat pentru consum redus de energie; S – consum redus de energie fara impact
semnificativ asupra performantelor; K – procesorul este unlocked, adica se poate face
tactarea peste valorile setate de producator; R – grafica de inalta performanta; C –
unlocked si grafica de inalta performanta; X – are multiplicatorul deblocat si este
optimizat pentru performante extreme.

Frecventa de lucru este si ea importanta in functie de ce faci cu PC-ul. Daca faci


proiectare 3D sau editare foto/video atunci vei alege minim 3GHz viteza de tact (poate fi
pana la 4.2 GHz). Pentru jocuri 2,4 GHz este minimul pe care ti-l recomandam.

Poti alege procesoare cu frecvente ce beneficiaza de tehnologia Turbo Boost care aduce
performante, stiind sa aprecieze cate nuclee este necesar sa activeze simultan pentru
anumite aplicatii. Se activeaza doar cand sistemul de operare solicita performanta mai
mare procesorului.

Te poti orienta si dupa piese cu tehnologia Hyper Threading: procesorul creeaza nuclee
virtuale. Noile procesoare Quad Core folosesc patru nuclee pe care le pot transforma in 8
sarcini, ideale daca folosesti mai multe aplicatii odata, rulezi programe de editare video,
modelare 3D si altele.

Procesorul trebuie sa fie in concordanta cu placa video, pentru ca un procesor slab


limiteaza performatele video. Procesoarele Quad Core Intel au functii video integrate.

Cand iti alegi procesorul trebuie sa fii atent si sa fie compatibil cu placa de baza, si
anume aceasta sa contina tipul de soclu sau socket pe care il foloseste procesorul dorit.

Memoria cache este si ea importanta, dar nu se poate alege separat de restul elementelor,
si cu cat este mai scump si mai performant un procesor, cu atat are mai multa memorie.
Exista pana la 3 niveluri de memorie cache L1, L2, L3.

Memoria cache poate fi si de 12 MB la procesoarele performante, insa te poti multumi si


cu 6-9 MB, daca cerintele tale sunt mai mici si folosesti calculatorul pentru aplicatii
simple sau tip office.

Tehnologia de producere se refera la dimensiunea tranzistorilor existenti in procesor (de


exemplu 32nm implica folosirea unor tranzistori de aceasta dimensiune), si cu cat este
mai mica cu atat este mai nou procesorul. Modul de operare, arhitectura procesorului
poate fi de 32 sau 64 biti.

Procesoarele pot avea cooler inclus sau nu. Pentru procesoarele de frecventa mare, este
mai indicat sa achizitionezi un ventilator separat, care este mult mai puternic si mai
silentios.

Pentru a putea alege un procesor Quad Core Intel, la un pret bun, iti prezentam in
continuare cateva modele pe care ai posibilitatea sa le comanzi online.

Modele recomandate in 2018


Intel Core™ i7-7700K

Este un procesor Intel Core, model i7, de


generatie 7 (foarte noua), cu SKU 700 si unlocked, adica se poate face tactarea peste
valorile setate de producator. Este recomandata pentru cei care fac editare foto/video,
modelare 3D, jocuri cu grafica buna, fiind un procesor de performanta excelenta.

Placa de baza trebui sa aiba socket model 1151 pentru a fi compatibila cu acest procesor.
Are o memorie cache de 8MB, pe doua niveluri, ceea ce asigura rapiditate mare in
procesarea datelor. Frecventa de lucru este de 4200 MHz si poate fi tactata pana la
4500MHz cu ajutorul tehnologiei turbo boost pe care o are inclusa procesorul.
Tehnologia hyper threading asigura multiplicare virtuala a celor patru nuclee pana la opt.

Contine procesorul grafic Intel HD Graphics 630, ce asigura performante grafice


superioare. Modul de operare este de 32 sau 64 biti. Tehnologie de manufacturare este de
14 nm avand tranzistori de dimensiune mica. Nu are cooler inclus.
Intel Core™ i5-7500

Un procesor foarte bun, Intel Quad Core,


model i5, de generatie 7 (ultima generatie aparuta este 8). Are SKU 500, fiind printre
cele mai performante modele din aceasta generatie. Socketul este de tip 1151, deci
trebuie sa fii atent ca placa de baza pe care o ai sau vrei sa o achizitionezi sa fie
compatibila cu acest procesor.

Frecventa de lucru este 3.4 GHz, putand ajunge la 3.8 GHz cu ajutorul tehnologiei Turbo
boost. Memoria cache de 6 MB il recomanda pentru aplicatii de tip office mai
performante, grafica medie si gaming perfomant.

Modul de operare este de 32/64 biti si beneficiaza de tehnologie de fabricatie de ultima


generatie 14nm. Detine performante grafice foarte bune prin procesorul grafic Intel HD
Graphics 630. Numarul de nuclee este 4, numarul de thread-uri simultan 4. Procesorul se
vinde la pachet cu cooler ce asigura racire de calitate.
Intel Core™ i5-7400

Un procesor quad core Intel ieftin si bun


este modelul Intel Core i5, SKU 400, beneficiind de avantajele generatiei 7: tehnologie
de fabricatie 14 nm, unitate de procesare grafica Intel HD Graphics 630, mod de operare
de 32 sau 64 de biti ceea ce il face atat performant cat si utilizabil pentru o gama mare de
aplicatii.

Frecventa de operare este 3 GHz (frecventa maxima la care poate rula un nucleu fiid de
3.5 GHz in modul Turbo), nedeblocat; are 4 nuclee, nu este Hyper Threading – dar poate
rula 4 thread-uri, 6 MB memorie cache, ceea ce confera un timp de raspuns mic si o
performanta foarte buna, fiind recomandat pentru calculatoare de tip desktop ce ruleaza
aplicatii de productivitate si gaming.

Este compatibil cu placile de baza socket 1151, si avand o putere disipata maxima de
65W, coolerul inclus ii asigura racirea corespunzatoare.
Cum arată cel mai puternic calculator din
lume. Face 93.000 de trilioane de calcule pe
secundă
Tweet
Trimite pe email
06.27.2016 | ● Vizualizări: 2300
0 Comentarii

+ zoom
Galerie foto (2)

Inginerii chinezi tocmai au construit cel mai puternic computer de până acum, cu o capacitate de 93
de petaflopi – sau, mai pe înţeles, 93.000 de trilioane de calcule pe secundă.

Ca toate supercomputerele, Sunway TaihuLight este imens, şi este instalat la Centrul Naţional de
Supecomputere din Wuxi, a scris Business Insider.

Citeşte şi În această imagine de


53.000 de MP apare o maşină Bentley - FOTO
Citeşte şi Un robot rusesc a evadat
dintr-un laborator şi a dat mari bătăi de cap - FOTO+VIDEO
Performaţele invenţiei sunt destul de greu de ajuns, chiar şi comparându-le cu cele ale celui de-al
doilea cel mai rapid computer din lume, Tianhe-2, care este tot chinezesc. Sunway este de două ori
mai rapid şi de trei ori mai efficient din punct de vedere energetic decât Tianhe-2, notează ZF.

Ca oricare alt supercomputer, TaihuLight nu este ceva ce ai putea construi cu o şurubelniţă şi două
memorii de la magazinul din colţ. Sunway este alimentat de 10,5 milioane de procesoare adaptate şi
40.690 de noduri, toate construite local.

Întebarea este, la ce se poate folosi? Chiar dacă o putere de procesare de 93 de petaflopi ar fi


perfectă pentru gaming, computerul are ca sistem de operare Linux, deci este destul de greu să
găseşti jocuri pe calculator bune care să fie adaptate pentru Unix, potrivit Business Insider.

Se presupune că Sunway TaihuLight va fi folosit pentru sarcini mai utile omului de rând, precum
previziuni meteo sau lucrul cu mari calupuri de date.

Când ne gândim de obicei la calculatoare, ne gândim de obicei la nume mari precum IBM Watson
sau Deep Blue, dar în 2016 China conduce momentan piaţa supercomputerelor. Potrivit BBC, anul
acesta este primul din istorie când China deţine mai multe supercomputere decât Statele Unite.
Top procesoare performante
Petrus Procesoare Actualizat: June 19, 2016 4 Comments
CAMPANIE DE REDUCERI MASIVE, MAINE, LA EMAG! VEZI aici DETALII.

Am tot discutat până acum de placi video, de sisteme gata asamblate, iată că, în acest articol, vom
încerca să facem un top al procesoarelor performante pentru 2016.

În Romania foarte puțini aleg astfel de procesoare pentru jocuri, asa că majoritatea se îndreaptă spre
un procesor mai ieftin. Am discutat despre ele aici.

Este, însă, o nișă importantă de oameni care aleg aceste procesoare pentru producție video, pentru
editare 3d, proiectare și alte activități conexe.

AMD a pierdut lupta pe high end, așa că topul de mai jos va fi cu procesoare Intel. De fapt și de
drept, aceste procesoare de la Intel sunt singurele care beneficiază de memorii RAM DDR4 ce
lucrează în Quad Channel.

Procesoare performante în 2016

Aceste procesoare funcționează cu plăci de bază pe socket 2011. Am discutat despre acestea aici.

• i7-5930K – Face parte din seria Core i7 4th gen si are nucleu Haswell-E. Este tactat la 3.5
GHz si ajunge pana la 3.7 GHz in turbo. În 3D Mark ajunge la un punctaj de 9091.
• i7-5820K – probabil unul din cele mai bune procesoare Intel din punct de vedere al
raportului pret/performanta. În 3D Mark ajunge la un punctaj de 8573.
• i7-5960X – chiar dacă nu este cel mai performant procesor de la Intel, prețul este unul pe
masură. Este tactat la 3 GHz și ajunge la 3.5 GHz in turbo. În 3D Mark ajunge la un punctaj
de 9831.

Chiar dacă în România nu au prea mulți buget pentru a achiziționa așa ceva, în țările mai dezvoltate
există o nișă a entuziaștilor. Iată mai jos un videoclip cu procesorul I7 5930k folosit în jocuri:

Pe lângă procesoarele de mai sus avem și o serie de procesoare desktop. Ne limităm la cele din
Skylake, cele care funcționează cu memorii DDR4. Consider că, în perioada următoare, ofertele vor
fi tot mai diversificate pentru generația aceasta, iar Haswell sau Broadwell vor fi uitate.

• Intel 6600 – noul procesor I5 al celor de la Intel. Este disponibil din vara anului 2015 pe
piață și va înlocui vechiul 4460.
• Intel 6700 – este vârful de gamă pentru home user. Se găsește în 2 variante: cu multiplicator
deblocat(pentru overclock) și cu multiplicator blocat.

Iată o comparație interesantă în filmulețul de mai jos:

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