Sunteți pe pagina 1din 254

FACULTATEA DE INGINERIE ELCTRIC I TIINA CALCULATOARELOR

DEPARTAMENTUL DE ELECTRONIC I CALCULATOARE

Prof. dr. ing. Gheorghe TOACE

ARHITECTURA I ORGANIZAREA

MICROPROCESOARELOR
(NOTE DE CURS PENTRU SPECIALIZRILE DE :
ELECTRONIC;
CALCULATOARE).
Anul universitar 2012-2013

BRAOV2013
1

INTRODUCERE

Ce este un calculator?
Un calculator este o main programabil care primete o intrare, stochez i procesez conform unui program
date/informaie genernd ieire ntr-un format utilizabil.

ENUNUL PROBLEMEI (ALGORITM)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


2

Reprezentarea informaiei n calculator


Orice problem, ca s fie rezolvat pe calculator, trebuie s fie adus n format limbaj main! (cuvnt
binar, iruri de 1 i 0).
Un ir de bii formez un cuvnt, care este caracterizat prin numrul de bii (lungimea cuvntului). Lungimile de
cuvint uzuale pentru calculatoare sunt :

Pentru stocare n procesor sau memorie Pentru stocare n hard disk

1 Bit = Binary Digit 1 Bit = Binary Digit


8 Bits = 1 Byte 8 Bits = 1 Byte
1024 Bytes = 1 Kilobyte 210 bytes 1000 Bytes = 1 Kilobyte = 10bytes
1024 Kilobytes = 1 Megabyte 220 bytes 1000 Kilobytes = 1 Megabyte 106 bytes
1024 Megabytes = 1 Gigabyte 230 bytes 1000 Megabytes = 1 Gigabyte 109 bytes
1024 Gigabytes = 1 Terabyte 240 bytes 1000 Gigabytes = 1 Terabyte 1012 bytes
1024 Terabytes = 1 Petabyte 250 bytes 1000 Terabytes = 1 Petabyte 1015bytes
1024 Petabytes = 1 Exabyte 260 bytes 1000 Petabytes = 1 Exabyte 1018bytes
1024 Exabytes = 1 Zettabyte 270 bytes 1000 Exabytes = 1 Zettabyte 1021bytes
1024 Zettabytes = 1 Yottabyte 280 bytes 1000 Zettabytes = 1 Yottabyte 1024 bytes
1024 Yottabytes = 1 Brontobyte 290 bytes 1000 Yottabytes = 1 Brontobyte 1027 bytes
1024 Brontobytes = 1 Geopbyte 2100bytes 1000 Brontobytes = 1 Geopbyte 1030 bytes

n calculator un cuvnt binary poate reprezenta o instruciune sau o data:


1. Cuvnt instruciune
2. Cuvnt data - adres, character, dat logic, ir
- numr: ntreg (cu semn sau fr semn) sau
zecimal ( n virgul fix sau virgul flotant.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


3

Termenul de Microprocessor ( procesor realizat la scar integrat (microelectronic)) acoper (n general):


Microprocesoarele de uz general i cele specializate/coprocesoare, P.
Microcontrollerele (care pot fi microcalculatoare, C)
Procesoarele de semnal, DSP (Digital Signal Processing)

Dezvoltarea calculatoarelor nu a fost revoluionar ci una evoluionar. Evoluia n performane la P s-a bazat
pe:
1. Tehnologia de integrare (legea lui Moore);
2. mbuntirile arhitectural-structurale.

ncepnd cu 1985 mbuntirile/inovaiile structurale au generat creteri anuale de performa mai mari dect
creterile datorate legii lui Moore. Majoritatea mbuntirilor architectural-structurale la P s-au bazat pe
aplicarea unor concepte deja cunoscute, pn n anii 70, pentru mainframe i mai ales pentru supercalculatoare
(n 1965 Gordon Moore, co-founder la Intel, a emis aseriunea numrul de tranzistoare pe unitatea de suprafa
se dubleaz n fiecare an, care este referit ca legea lui Moore. ncepnd cu anii 90 acest ritm de cretere s-a
ncetinit avnt o dublare cam la 18 luni. Se prezice c aceast rat de cretere, pentru tehnologia CMOS se
contiun cam pn n jur de 2018 )
.

Scurt istoric

1946 (anunare public) Primul calculator electonic (realizat cu tuburi cu vid, ENIAC- Electronic Numerical
Integrator and Computer). A fost realizat de ctre inginerii John Mauchly i John Prospert Eckart la Moore School
of the University of Pensilvania, pentru calculul automat al tabelelor de tragere utilizate de artileria american.
Apoi, conceptualizarea sistematic pentru un nou calculator, ce urma a fi realizat de ctre University of
Pensilvania (U-Pen) i University of Princenton (proiectul EDVAC- Electronic Discret Variable Automatic
Computer, proiect care s-a interrupt), s-a fcut prin conceptul de arhitectur de main cu program stocat n
memorie (stored programme computer). Pentru aceast nou main s-a elaborate un memo, care a fost
sistematizat de ctre ilustrul mathematician John von Neumann (First Draft of a Report on the EDVAC,;
surprinztor, acest material rmne foarte actual i n prezent!), implicat n proiectul Manhattan (prima bomb
nuclear), dar care includea n acel material i ideile elaborate de Mauchly i Eckart n proiectul ENIAC Acest
memo a fost difuzat de ctre Herman Goldstine, dar fr a nscrie i numele celor doi ingineri! Acest material a
infuenat toat concepia care a stat la dezvoltarea calculatorului, prin impunerea a ceea ce se numete arhitectura
de tip von Neumann.
1971- Primul microprocessor (4004), P, anunat de firma INTEL (nfiinat n 1967), care a fost idea lui T. D.
Hoff i proiectat n siliciu de Frederico Faggin. Pentru apariia microprocesorului nu s-a fcut o activitate de
cercetare planificat, a fost o apariie natural. De ce natural? Pentru c tehnologia de integrare, dezvoltat pentru
domeniul militar (n anii 60 era rzboi rece!) i dup deja o decad a programului Apollo (debarcarea unui om pe
lun, 1969), a nceput s fie transferat i n domeniul activitilor civile, deci aa a aprut posibilitatea tehnologic
de realizare a primului microprocesor. Microprocesorul, prezentat ( greit) la nceput ca computer-on-a-chip
nu a avut succes de pia, periclitnd existena firmei Intel. Deoarece acest computer-on-a-chip necesita pentru
funcionare o programare, electronitii l evitau s i-l nsueac, la fel au procedat i calculatoritii deoarece
acesta se programa ntr-un limbaj rudimentar (cod main sau limbaj de asamblare), la vremea aceea limbajele
curente erau Cobol i Fortan. De fapt, corect, P era Unitatea Central de Procesare, CPU (Central Processing
Unit), adic procesorul unui calculator, dar realizat la scar micro (integrat). Prezentat, apoi, ca fiind elementul cu
care se poate realiza un calculator, dac se joncioneaz cu memoria i cu elementele de intrare-ieire I/O
(perifericele) plus softul SO (Sistemul de Operare), P a avut imediat succes de pia. Iar pentru realizarea unui
calculator pe baz de P ( mai trziu s-a realizat i computer-on-a-chip) s-au format specialiti care joncionau
pregtirea (ntreptruns) att de hard ct i de soft.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


4

Microfotografia layoutului pentru P 4004 ( primul microprocesor)

Dup 4004 la firma Intel a urmat: 8008 (1972); 8080 (1974); 8086 (1978); 80286 (1982); 80386 (1985)
Pentium (1993); PentiumII (1995- introduce noua arhitectur referit P6); Pentium III (1999); Pentium 4 (2001);
Pentium M (2004). Alturi de Intel au nceput s realizeze P i alte firme (IBM , Motorola, National
Semiconductor, AMD etc) care au conceput arhitecturi fr greelile de nceput ale procesoarelor Intel.
Core Architecture (2005 apare procesorul multicore la Intel ), IBM (Power 4 n 2001 i Power 5 n 2005) care
se pare a deschis noua direcie de dezvoltare a microprocesoarelor, microprocesoare multiprocesor (multicore) sau
CMP (Chip MultiProcessors).
Creterea performaelor microprocesoarelor (vitez de calcul, frecvena de ceas) sunt prezentate n diagramele
urmtoare [1]

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


5

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


6

Clase (de aplicaii) pentru calculatoare:

Oricare calculator este construit pe baza unui procesor, dar n piaa calculatoareleor (computing market) acestea
sunt caracterizate n funcie de aplicaie, de performane i de tehnologia de realizare. n acest sens se pot distinge
urmtoarele cinci clase de calculatoare:
1. Dispozitive/calculatoare mobile personale, PMD (Personal Mobile Devices). Cu aceast abreviaie sunt
referite dispozitivele de tip wireless cu o interfa utilizator de tip multimedia, cum sunt: telefoanele
celulare, tabletele digitale etc);

2. Desktop computers.Calculatorul personal (PC), utilizat pentru un singur utilizator; cuprinde ntrega scar
de la low-end, cum sunt notebook-urile, pn la cele high-end cu o configuraie bogat, cum sunt staiile
de lucru (work stations);

3. Servere. Modern, prin servere se face referin la ceea ce nainte era reprezentat de: calculatoare
mari (mainframe), minicalculatoare i supercalculatoare, uzual accesul acestora este numai
prin reea. Acestea sunt coloana vertebrel a mediului de calcul al unei inteprinderi, tehnologia lor,
fundamental, este ca i cea a desktop computers dar sunt direcionate pentru o mare expandabilitate
(scalare) i larg capacitate de intrate/ieire (I/O). Se ntlnesc:
servere de date
servere de fiier
servere de reea;

4. Clusters/ Warehouse-Scale Computers (WSC) ( Cluster = ciorchine; Warehous = depozit de mrfuri,


magazie mare). Clusterul este o colecie de desktop computer sau de servere, ca i elemente componente
(noduri) conectate local printr-o reea local i care n totalitate , funcional, este considerat un singur
calculator. Fiecare nod ruleaz propriu su sistem de operare, comunicare ntre noduri se realizeaz
printr-un anumit protocol. Clusterele cele mai mari, cuprinznd zeci sua sute de mii de servere, sunt
referite prin abreviaia WSC. WSC sunt direcionate spre aplicaii de tip SaaS ( Software as a Service )
cum sunt: search, social networking, video sharing, online shopping etc.
O sub clas de WSC sunt supercalculatoarele, care sunt realizate spre putere ridicat de calcul ( n
general n virgul flotant) pentru programe mari i cu comunicaii intense de date ntre noduri ce pot
necesita timpi de rulare de ordinul sptmnilor. n consecin, supercalculatoarele necesit reele de
comunicare intern de vitez foarte ridicate, dar mai puin band spre Internet cum necesit WSC-urile;

5. Embedded systems ( sisteme integrate pe baz de calculator). Reprezint mare mas de aplicaii ale
calculatorului ca de exemplu: automobile, periferice, jocuri electronice, aparatur electrocasnic,
comand pentru procese de producie etc. n general acestea ruleaz o singur sau un set restrns de
aplicaii (software dezvoltat intern, special pentru aplicaia respectiv). De fapt, i PMD sunt tot
embedded systems, dar se consider PMD ca o clas separat deoarece acestea au multe carateristici
similare cu clasa de desktop computere, ca de exemplu pot rula soft dezvoltat n exterior.

Caracteristicile principale ale acestor clase de calculatoare sunt prezentate n tabelul urmtor [1]

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


7

Evoluia calculatoarelor

QVO VADIS COMPUTER?


80 2012
peste 3 decenii
Supercalculatoare Laptop
(ex. Cray I, Cray II; x 10 6 $ ) (mobile station; x 103 $)

2012 40
peste 3 decenii
Supercalculatoare ?
Pentascale computers
15
( rata de procesare xPflops, 1Pflop= 10 )

Exascale (2018)
( rata de procesare xEflops, 1Eflop= 1018 )

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


8

. Cray Supercomputers (nceputul anilor 80)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


9

SUPERCALCULATOARELE 2012

Top 500 (www.top500.org/) Green 500


1. Sequia-BlueGene/Q
Tip procesor : Power BQC; 1,6GHz
Nr. Procesoare = 1 572 864
Rata maxim = 20, 1327 Pflops ?
Rata medie = 16,3248 Pflops
Memorie = 1 572 864 GB
Putere = 7,890 MWatt
Sist. de operare: LINUX
Productor: IBM

2. K computer
Tip procesor : SPARC 64 VIIIfx; 2GHz
Nr. Procesoare = 705 024
Rata maxim = 10,51Pflops Locul 6
Rata medie = 8,162 Pflops
Sist. de operare: LINUX
Putere = 12,659 MWatt
Productor: Fujitsu

Microprocesorul multicore BlueGene (BQC)

Tehnologie 45nm; Arie 18,96 x18,96mm ; Numr tranzistoare= 1,47 10


9

Numr de core = 18; L1 - cache = 16KB; L2 - cache = 32 MB

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


10

Sequia-BlueGene/Q

(Photo: Lawrence Livermore National Laboratory)

K computer (Japonia)

RIKEN Advanced Institute for Computational Science (AICS)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


11

CIRCUITE NEUROMORFE

TRANZISTOR NANOFIR(Nanowire) MEMREZISTOR

Oare cnd va fi ?

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


12

Computing Curriculum
n USA pe cte o durat de o decad s-a elaborat, de ctre colective naionale compuse din reprezentani ai
universitilor i ai mediului economic, curriculum pentru educaia n domeniul calculatoarelor. Pentru decadele
80 i90 curiculum se referea la domeniul COMPUTERS, iar pentru prima decad a acestui secol sev refer la
domeniul COMPUTING. Curriculum pentru Computing conine cinci specializri: Computer Science (CS),
Computer engineering (CE), Software engineering (SE), Information technology (IT) i Information Systems (IF)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


13

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


14

BIBLIOGRAFIE

[1] John L. Hennessy, David A. Patterson Computer Architecture- Aquantitatve Approach


Morgan Kauffaman Publishers, fifth edition,2012, ISBN 13: 978-0-
12-383872-8.
[2] David A. Patterson, John L. Hennessy,Computer Organization and Design- The
hardware/software interface Morgan Kauffaman Publishers, fourth
edition,2009, ISBN 978-0-12-374493-7.
[3] Raymond Greenlaw, James H. Hoover Fundamentals of teh Theory of Computation-
Principles and Practice , Morgan Kauffaman Publishers, fourth
edition, 1998 , ISBN 1-55860-547-9
[4] Jean-Loup Baer Microprocessor Architectures- From Simple Pipelines to Chip
Multiprocessors, Cambridge University Press, 2010, ISBN
9780-521-76992-1.
[5] Milles J. Murdocca, Vincent P. Heuring Computer Architecture and Organization: An
Integrated Approacch John Wiley and Sons Inc, 2007, ISBN
978-0-471-73388-1.
[6] Wayne Wolf Computers as Components- Principles of Embedded Computing System
Design Morgan Kauffaman Publishers, second edition,2008, ISBN
978-0-12-374379-8.
[7] Lucian N. Vinan Prediction Techniques in Advance Computing Architectures Matrix
Rom, Bucureti, 2007, ISBN 978-973-755-137-5.
[8] Gheorghe Toace Introducere n Microprocesoare Editura Stiinific i Enciclopedic,
Bucureti,1986, ediia doua, ISBN
[9] Gheorghe Stefan: "One-Chip TeraArchitecture", in Proceedings of the 8th Applications
and Principles of Information Science Conference, Okinawa, Japan on
11-12 January 2009.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


15

CAP 1. ORGANIZAREA UNUI SISTEM PE BAZ DE


MICROPROCESOR (uP)

1.1 Ierahizarea nivelurilor (hardware/software) intr-un calculator


1.2 Gap-ul fundamental ntr-un calculator
1.3 Memoria calculatorului
1.3.1 Registre
1.3.2 Memoria principal
1.3.3. Memoria cache
1.3.3.1 Memoria cache cu mapare direct
1.3.3.2 Memoria cache complet asociativ
1.3.3.3 Memoria cache set-asociativ
1.3.3.4 memoria cache multinivel
1.4 Perifericele (I/O)
1.5 Organizarea unui sistem pe baz de magistrale
1.5.1 Sistemul cu trei magistrale
1.5.2. Caracteristicile magistralei
1.5.3 Magistrale sincrone
1.5.4 Magistrale asincrone
1.5.5 Structurarea ierarhizat a magistralelor unui sistem
1.5.6. Prezent i tendine n strucurarea pa baz de magistrale
1.6 Lega lui Amdahl
1.7 Procesorul Main de Procesare a Programelor
1.7.1 Noiuni: Alfabet, ir, Limbaj
1.7.2 Structurarea pe niveluri a procesrii pe calculator. Maini virtuale
1.7.3 Organizarea i funcionarea de principiu a unui microprocesor
1.7.4 Limbajul de asamblare
1.7.5 Setul (parial) de instruciuni al procesorului MIPS (R2000)
1.8.6. Etapele n realizarea unui program executabil

CAP 2. ARHITECTURA SETULUI DE INSTRUCIUNI


2.1 Componentele (arhitecturale ale) microprocesorului
2.2 Metrici de performan pentru microprocessor
2.3 Spaiul de adresare.
2.4 Moduri de adresare
2.5. Tipuri de instructiuni
2.5.1 Instruciuni de deplasare/ transfer a datelor
2.5.2 Instruciuni de transformare a datelor
2.5.3 Instruciuni de control al progamului
2.5.3.1 Instruciuni de ramificaie
2.5.3.2 Instruciuni cu execuie condiionat
2.5.3.3 Instruciuni de lucru cu subrutine
2.5.3.4 Evenimente de excepie, EIT (Exceptions, Interrupts, Traps)
2.5.4. Modaliti de lucru ale procesorului cu perifericele
2.5.5. Instruciuni de control al procesorului
2.5.6 Instruciuni de nivel nalt, HLL
2.7 Formatul instruciunilor
2.8 Intredependena arhitectura setului de instruciuni-compilator
2.9 Arhitecturi CISC i RISC
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
16

CAP 3. CALEA DE DATE

3.1 Organizarea de principiu a cii de date


3.2 Reprezentarea numerelor n calaculator- overflow (depirea)
3.3 Unitatea aritmetic i logic, alu (arithmetic and logic unit)
3.3.1. Sumatorul.
3.3.1.1 Sumatorul cu Transport Progresiv, STP
3.3.1.2 Sumatorul cu transport anticipat, CLA (Carry-Look-Ahead adder)
3.3.1.3 Sumatorul cu selectarea transportului, CSA (Carry Select Adder)
3.3.2 Multiplicatorul - pentru numere fr semn (Multiply unsigned- multu)
3.3.3 Unitatea de procesare n virgul flotant
3.3.3.1 Reprezentarea n virgul flotant
3.3.3.2 Reprezentarea numerelor conform standardului IEEE-754
3.3.3.3 Operaii n virgul flotant
3.4 Registre
3.4.1 Structurarea registrelor ntr-un microprocesor.

CAP 4. CALEA DE CONTROL

4.1 Funcia unitii de control


4.2 Unitatea de control cablat
4.3 Unitatea de control microprogramat

CAP 5. TEHNICI I STRUCTURI PENTRU CRETEREA


PERFORMANELOR
5.1 Procesarea de tip pipeline
5.1.1 Organizarea de principiu pentru un pipeline
5.1.2 Procesarea de tip pipeline - Noiuni fundamentale
5.1.3 Procesarea n pipeline la procesorul MIPS
5.1.4 Hazardul n pipeline
5.1.4.1 Hazardul structural
5.1.4.2 Hazardul de date
5.1.4.3 Hazardul de nume.
5.1.4.4 Hazardul de control
5.2 Microprocesoare cu execuii multiple
5.1.1 Microprocesoare superscalare
5.1.2 Microprocesoare de tip VLIW (Very Long Instruction Word)
5.1.3 Procesoare vectoriale
5.3 Procesarea de tip multithread
5.4 Procesoare grafice

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


17

CAP 1.

ORGANIZAREA UNUI SISTEM PE BAZ DE MICROPROCESOR (P)

1.1 IERAHIZAREA NIVELURILOR (HARDWARE/SOFTWARE) INTR-UN CALCULATOR

Ierahizare sistem

Structurare/organizare software

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


18

Structurare/organizare hardware

Elemnete hardware fundamentale (combinionale, secveniale).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


19

1.2 GAP-UL FUNDAMENTAL NTR-UN CALCULATOR

Rolul memoriei principale din componena calculatorului este de a stoca i de a livra, n fiecare ciclu de ceas,
Tclk, care comand funcionare procesorului, informaia (instruciuni i date) necesar pentru procesare. Dar, apare
o discrepan/gap ntre viteza de procesare a procesorului i latena memoriei ( timpul de rspuns al memoriei din
momentul cnd s-a apelat o informaie i momentul cnd aceast informaie este livrat/disponibil procesorului).
Dac se consider c procesorul necesit informaie n fiecare ciclu de ceas, latena memoriei este de mai multe
cicluri de ceas. Raportul dintre latena memoriei i Tclk era de 5:1 n 1990, iar n prezent a ajuns la mai mult de
dou ordine de mrime. De exemplu, dac fclk = 2,5GHz Tclk =1/ fclk = 0,4ns, la o laen de 40ns a memoriilor
DRAM actuale rezult o laten exprimat n cicluri egal cu 40ns/0,4ns =100 de cicluri de ceas. Viteza
procesorului crete cu 60%/pe an pe cnd latena memoriei scade doar cu 7%/pe an, ceea ce se reflect din
diagrama urmtoare. Odat cu procesoarele multicore deoarece frecvena de ceas pare a se fi stabilizat sub 3-3,5
GHz, pentru aceste procesoare, aspectul de alimentare al procesorului de ctre memorie apare sub forma creterii
lrgimii de band pentru accesul la memorie nct toate core-urile s primeasc informaia necesar
(instruciuni/date).

Acest gap nu poate fi redus fizic, dar poate fi ascuns prin introducerea unui buffer ntre P i memorie, ceea ce
se realizez prin memoria cache, care se structurez pe dou niveluri L1 i L2 integrate n processor, mai nou
chiar i al treilea nivel, L3, este ntegrat (procesoarelor dedicate pentru desktop sau servere). Memorie cache este o
memorie RAM static, deci permite un timp de acces de ordinul ns (n funcie de capacitatea sa). Aceast
ascundere a latenei memoriei principale se realizeaz prin aducerea informaiei (instruciuni, date), care este
necesar n prezent i n timpul urmtor, din memoria principal n memoria cache, ce prezint o laten mai
redus ( pentru L1 latena poate fi de 1Tclk). Prin aceast aducere a informaiei necesare de pe hard-disk i
nscrierea sa n memoria principal, apoi din memoria principal se transfer n L2 i apoi se transfer n L1 se
realizez o incluziune multinivel, adic informaia din L1 exist n L2, toat informaia din L2 exist n
Memmoria principal (Mem) i evident toat aceasta informaie exist n Hard-disk (HD),
L1 L2 Mem HD. Acest trick prin care se ascunde laten memoriei se sprijin pe principiul localizrii
n timp i n spaiu:
codul (instruciunile) i datele utilizate recent de procesor , cu o probabililitate destul de ridicat, vor fi
reutilizate i int-un timp imediat (localizarea temporal);
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
20

codul (instruciunile) i datele utilizate de procesor care au fost accesate dintr-un spaiu (o zon de
adrese din memorie), cu o probabililitate destul de ridicat, aceast zon va fi accesat din nou
(localizarea spaial).
Dac informaia solicitat de procesor nu se afl n L1 atunci se acceseaz L2, dac nu se afl nici aici atunci se
acceseaz Mem, sau chiar HD, apoi cu informaia cutat gsit se parcurge traseul n sens invers, nscriindu-se
succesiv informaia n fiecare nivel pn ajunge n procesor. Evident c penalizarea n timp (procesorul ateapt)
este cu att mai mare cu ct informaia cutat se afl ntr-un nivel mai deprtat de procesor. De exemplu,
conform datelor din figura urmtoare, o informaie care se afl m memoria principal pentru a fi adus succesiv
din nivel n nivel va necasita 111Tclk (100+10+1=111).

1.3 MEMORIA CALCULATORULUI

1.3.1 Registre

Registrul este memoria intern a procesorului, are viteza de nscriere i de citire cea mai ridicat din sistem,
poate fi < Tclk. Registrele sunt organizate n bnci de registre, ntr-o banc fiind, uzual, un numr de registre egal
cu puteri al lui 2 (16, 32, 64, 128, 256); pentru o lungime de n bii, a fiecrui registru, rezult capacitate bncii, C =
2 k n bii. Structurarea unei bnci de registre n care se poate nscrie informaia de pe o magistral de intrare
(magistral rezultat, MgR), iar coninutul dintr-un registru se poate citi i aplica simultan pe dou magistrale de
ieire (magistrale surs, MgS1, MgS2) este cea din figura urmtoare, (fiecare registru este dublu port pe ieire, se
pot efectua simultan dou citiri). (O operaie ntre doi operanzi A i B produce un rezultat, R A Operaie B,
utilizeaz cei doi operanzi de pe magistralele surs MgS1, MgS2, care sunt citii simultan din banca de registre, iar
rezultatul R al Operaiei este pus pe magistrala rezultat, MgR, i nscris n banca de registre).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


21

1.3.2 Memoria principal

Plasarea cuvintelor n memorie.


Uzual, memoria este organizat pe byte, adic n locaia corespunztoare unei adrese, A, este stocat un cuvnt cu
lungimea de un byte, ceea ce nseamn c un cuvnt de 32 bii (4 bytes) ocup n memorie patru locaii
consecutive la adresele A+0, A+1, A+2, A+3. Evident, c o accesare de memorie la o adres A care nu este un
multiplu de patru (A modulo 4 0) va citi eronat o dat sau o instruciune, o parte din cuvntul citit are bytes din
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
22

cuvntul ce trebuie citit iar restul de bytes de la cuvntul urmtor (P are un mecanism prin care semnalizeaz o
citire care care nu respect aceast regul); pentru un cuvnt de n bytes regula generar de accesare corect la
memorie ( de aliniere) este A modulo n = 0.
Exist dou convenii de plasare n memorie pentru bytes unui cuvnt: big-endian i little-endian. Dup
convenia little-endian, byte-ul cel mai puin semnificativ al cuvntului este plasat n memorie la adresa cea mai
mic (A+0), pe cnd dup convenia big-endian, byte-ul cel mai semnificativ al cuvntului este plasat n memorie
la adresa ce a mai mic (A+0). n figura urmtoare B3 este byte-ul cel mai semnificativ (big), iar B0 cel mai puin
semnificativ (little). La procesoarele actuale se poate programa, pentru plasarea n memorie, oricare din cele dou
convenii.

------------------------------------------------------------------------------------------------------------------------
Exemplul 1.1. Numele POPESCU IOAN 31 ani s fie scris n memorie conform celor dou convenii de
plasare.
Soluie. Fiecare character este codificat n ASCII, deci necesit 8 bii, se codific i blancul dintre cuvinte, .
Plasarea rezultat este urmtoarea:

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


23

------------------------------------------------------------------------------------------------------------------------

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


24

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


25

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


26

Din diagramele anterioare rezult c funcionarea memoriei, att cea static ct i cea dinamic au o
funcionare asincron (n aceste diagrame operaiile nu sunt coordonate prin semnal de ceas, CLK). Pentru ca
memoria DRAM s poat fi integrat n sistemele cu P, care sunt sisteme sincrone (sunt pilotate de un ceas, sau
mai multe) s-a realizat memoria DRAM sincron, SDRAM, la care operaiile de citire i nscriere sunt
sincronizate.
La memorile SDRAM, clasic, operaiile de citire sau nscriere se realizeaz pe un front (cresctor sau
descresctor) al semnalului de ceas, ceea ce nseamn c se realizeaz o operaie pe perioada Tclk. n prezent,
usual, memorile SDRAM utilizeaz ambele fronturi ale semnalului de ceas, ceea ce nseamn c se realizez o rat
dubl de date, DDR(Double Data Rate) obinndu-se memoria DDR SDRAM, pentru operaiile de citire i
nscriere; practic, se utilizez pe lng frontul cresctor de la semnalul Tclk i frontul cresctor de la semnalul de
ceas negat, T clk , ca n reprezentarea urmtoare

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


27

Uzual, pentru calculatoare (desktop i servere), capacitatea de memorie este realizat din mai multe circuite
care sunt implantate pe ambele pri ale unei mici plachete de circuit imprimat referitit modul DIMM ( Dual In
line Memory Modul). Tipic, un DIMM conine 4-16 circuite DRAM i este organizat pe cuvinte de 8 bii + ECC
(Error Correcting Code
Pentru memoriile RAM statice exist varianta QDR SRAM, care mrete de patru ori debitul total de
date, la operaiile de citire i nscriere; prezint att pe intrare cte dou porturi (dublu port), pe intrare pentru
nscriere i dou porturi (dublu port) pe ieire pentru citire, unul din porturi este sincronizat cu Tclk, iar cellat
cu T clk .
Costurile per bit se ncadrez:
SRAM 2000-5000$/GB
DRAM 20-75$/GB
Disk magnetic: Timpul de acces, TAC = 5 000 000- 20 000 000ns; pre 0,20-2$/GB
Aspectele care sunt n atenia proiectantului de sistem pe baz de P pentru optimizarea memoriei principale
sunt:
1. Latena (pentru valorile anterioare TAC = 40-70ns, la frecvena procesorului de 3GHz neasmn c
accesul la memorie necesit (120-210)xTclk);
2. Capacitatea pe chip ( 8Gbit/chip, la nivelul 2008);
3. Limea de band, Bandwidth (vezi magistrale).

1.3.3. Memoria cache.

Introducerea memoriei cache (cache a safe place for hiding or storing things) este modalitatea prin care
se ascunde latena memoriei. Procesorul necesit n fiecare perioad/tact de ceas, Tclk, s fie alimentat
cu informaie (instruciune i/sau data) care este stocat n memorie, dar accesarea la memoria principal
(SDRAM) necesit un timp de ordinul sute tacte, aceasta nseamn c procesorul trebuie s stea (stall, opreate
procesarea) sute de tacte pn primete informaia necesar. Pentru a elimina aceast oprire din funcionare a P se
introduce ntre memoria principal i P un buffer de mare vitez, adic un nivel (L1) suplimentar de memorie,
sau dou (L1+ L2), care forme memoria cache. Memoria cache este n fond o memorie SRAM de dimensiuni
reduse care are un timp de acces 1-2 tacte. Raiunea i eficiena memoriei cache se bazeaz pe localizarea (n timp
i spaiu) existent n programele rulate pe calculator i pe incluziunea informaiei stocate (blocul existent n cache
exist i n nivelurile inferioare, memorie principal (Mem), memorie secundar (HD), L1 L2 Mem HD)
Structurarea nivelurilor de memorie n prezena memoriei cache este prezentat n figura urmtoare.

Operaia de citire. Procesorul trimite la memoria cache adresa cuvntului (instruciune/data) solicitat i
dac acesta exist (hit) este trimis la procesor n 1-2 tacte de ceas (transfer pe cuvnt). Dac acest cuvnt nu este n
cache (miss) se accesez nivelul inferior (memoria primar/principal) pentru care se consum de ordinul sute de
tacte de ceas (miss penalty); dac cuvtul cutat se afl n memoria principal (hit) atunci blocul, n care se afl
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
28

cuvntul respectiv, este transferat (transfer pe bloc) n memoria cache de unde, apoi, se citete cuvntul de adres
cutat i se trimite n procesor, n totalitate procesul de citire din memoria principal consum de ordinul sute de
tacte de ceas. Dac blocul cutat nu se afl (miss) n memoria principal atunci se acceseaz nivelul inferior (hard
disk), iar pagina de pe hard disk n care se afl blocul cutat este transferat (transfer pe pagin) i nscris n
memoria principal, iar din memoria principal blocul respectiv transferat (transfer pe bloc) i nscris n memoria
cache, de unde cuvntul cutat se trimite la procesor, tot acest proces consum milioane de tacte de ceas. (Se
observ c se merge ( la miss) nspre niveluri inferioare din nivel n nivel, apoi se aduce cuvntul cutat
parcurgnd aceste niveluri de memorie n sens invers).

Operaia de nscriere. Procesorul trimite la adresa din memoria cache cuvntul care trebuie nscris. Pentru
nscrire exist dou metode: write-through i write-back. Prin write-through cuvntul este nscris nti la adresa
din memoria cache i apoi se continu i cu nscrirea n memoria principal; deoarece se face acces la memoria
principal se consum un timp similar cu cel exprimat prin miss penalty de la procesul de citire. Prin write-back
se nscrie numai n memoria cache, urmnd ca nscrierea n memoria principal se se realizeze doar atunci cnd
blocul respectiv, din memoria cache n care s-a nscris, este trimis napoi la memoria principal (aceasta se
realizeaz doar cnd respectivul bloc este nlocuit n memoria cache de ctre un alt bloc adus in memoria
principal); evident c pn la nscrierea n memoria principal coninutul bocului din memoria cache i coninutul
blocului de aceiai adres din memoria principal nu este acelai, deci coninuturile din cele dou locaii de aceeai
adres nu sunt consistente!
Dac la nscriere exist miss, adic locaia de adres la care procesorul vrea s nscrie nu a fost adus n memoria
cache, atunci se caut blocul n memoria principal, se nscrie cuvntul respectiv n memoria principal, iar blocul
respectiv se transfer i n memoria cache.
Metrica pentru performana memoriei cache este hit ratio definit prin raportul

Numarul de accese cu succes la memoria cache


h
Numarul total de accese la memoria cache

Deoarece h are valori n intervalul 0,9-0,99 este mai atractiv s se lucreze cu termenul miss rate care se exprim
prin (1-h); creterea pentru hit rate de la 0,96 la 0,97 corespunde cu 1%, dar descreterea pentru miss rate este de la
0,05 la 0,04 adic 20%. Timpul mediu de acces la memoria cache (nivelul 1, L1) se calculaz cu relaia

Tacces mediu = TL1/h

n care TL1 este timpul (exprimat n tacte de ceas) de acces la nivelul L1 cache ( TL1 1 tact).
Entitatea de transfer ntre memoria principal i memoria cache este blocul care poate conine un cuvnt sau mai
multe (n general puteri ale lui 2, vezi figura anterioar). Prin transfer se realizez o mapare a unui bloc din
memorie, care are o anumit adres n memorie, pe o adres de bloc din memoria cache (pe care o s-o referim ca
intrare/linie cache sau bloc cache), deci se face o aplicaie ntre cele dou mulimi (mulimea de adrese ale
blocurile din memorie i mulimea de intrri din memoria cache); evident c numrul de blocuri din memoria
principal este cu mult mai mare dect numrul de intrri ale memoriei cache. Regula dup care se face aceast
aplicaie determin/definete trei modaliti de organizare: memoria cache cu mapare direct, memoria cache
asociativ i memoria cache set-asociativ.

1.3.3.1 Memoria cache cu mapare direct.

Regula de mapare, pentru o organizare de memorie cache cu mapare direct, permite ca adresa unui bloc din
memorie s fie plasat doar ntr-o singur intrare/linie cache (din numrul total de intrari ale memoriei cache),
aplicaie ce se exprim prin relaia

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


29

(adres bloc din memorie) modulo ( numr intrri cache)

In figura urmtoare se reprezint grafic o mapare direct, corespondena dintre adresele blocurilor din memoria
principal i adresele intrrilor/blocurilor din memoria cache se determin cu relaia anterioar. Se consider o
memorie cache cu 8 intrri (deci n total opt adrese), iar din memoria principal se reprezint doar adresele din
intervalul 12|10 (01000|2) 27|10 (11010|2), lungimea unui bloc (pentru simplitate) se consider format dintr-un
singur cuvnt (deci n acest caz adresa unui bloc din memoria principal corespunde cu adresa unui cuvnt) . Se
observ c toate adresele de bloc de memorie a cror clas de resturi este 5|10 (00101|2) modulo opt se nscriu n
intrarea cache de adres 5|2 =101 (ceea ce corespunde cu utimii trei bii din adreasa blocului din memorie), aceste
adrese sunt 13|10 (01101|2), 21|10 (10101|2), iar n adresa de intrare cache 2|10 (00010|2) se plaseaz toate adresele
din memorie care fac parte din clasa de resturi doi modulo opt, adic 18|10 (10010|2), 26|10 (11010|2), care au
ultimii trei bii 010 (2|10) n adresa blocului din memorie.

Pentru accesarea unui cuvnt n memoria cache P utilizez un cuvnt de adres A identic cu cel prin care ar
accesa respectivul cuvnt n memoria principal, dar pentru cache se folosesc specific anumite subcmpuri din
cuvntul adres A. Blocul din cache este plasat ntr-o anumit intrare (deci trebuie selectat respectiva intrare prin
subcmpul index), n cadrul blocului trebuie selectat cuvntul ( cnd blocul este format din mai multe cuvinte,
deci trebuie s existe un subcmp selectare cuvnt), iar n cadrul cuvntului trebuie selectat oricare byte (de ctre
cmpul selectare byte). Dar pentru c aceleai valori de selectare index, cuvnt, byte pot s fie identice pentru mai
multe cuvinte din memoria principal, diferenierea n identificarea diferitelor blocuri/cuvinte/bytes se face prin
restul de bii din cuvntul adresa A, specificat n subcmpul referit tag. ntr-o intrare a memoriei cache, pe lng
blocul plasat se mai nscrie i biii din subcmpul tag al adresei, iar la accesarea memoriei cache blocul plasat n
memoria cache este cel cutat numai cnd tag-ul din cache este identic cu cel din subcmpul tag al adresei A.
Identificarea ntre tag-ul nscris intr-o intrare/linie a memoriei cache i a tag-ului din cuvntul adres se face prin
intermediul unui circuit comparator, la o identitate a celor dou taguri se generez semnalul de hit (data va fi
transmis la P), iar la o neidentitate se generez miss (va trebui accesat nivelul inferior, adic memoria
principal, ceea ce implic oprirea i intrarea n stare de ateptare a P pe durata a cel puin 100 de tacte de clock,
acest consum de tacte de clock este referit ca miss penalty). n fiecare intrare de cache se mai nscrie, pe lng
blocul respectiv i tagul blocului respectiv, nc un bit de validare,V, care pentru valoarea V=1 indic faptul c n
intrarea respectiv a fost nscris un bloc, iar pentru V= 0 n intrarea respectiv nu este plasat nc un bloc.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


30

Relaia ntre lungimile subcmpurile (exprimate n numr de bii) din cuvntul de adres A, cu lungimea de wA
bii, este:
wA = wt +wi +wc +wb
n care: - wi = | log2 (numrul de intrri, blocuri n memoria cache)|
- wc = |log2 (numrul de cuvinte/ bloc)|
- wc = |log2 (numrul de byte/ cuvnt)| ,

iar lungimea tag-ului rezult


- wt = wA wi wc wb
Un exemplu de structurare a memoriei cache cu mapare direct este prezentat n figura urmtoare

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


31

_______________________________________________________________________________
Exemplul 1.2 La un processor, care lucrez cu cuvinte de de 32 bii, exist o memorie cache de capacitate Ccache
=16KB ( 214bytes ), cu organizarea de tip mapare direct iar lungimea unui bloc este de 4 cuvinte, adresarea se
realitez cu cuvinte de adres de 32 bii. S se determine ci bii are capacitatea total, Ctotal, a memoriei cache.
Soluie. Capacitatea memoriei cache Ccache (numai bii pentru date) se calculez cu relaia
Ccache[bytes] = Nr.blocuri x Nr.cuvinte/bloc x Nr.bytes/cuvnt [bytes]
214bytes Nr.blocuri 22 22 [bytes] Nr blocuri(intrri) = 2
wi = log2(2) = 10bii
wc = log2(2) = 2bii
wb = log2(2) = 2bii
wt = wA wi wc wb = 32 ( 10+2+2) = 18 bii
Lungimea unei intrri Li din memoria cache este
Li = 1(valid bit) + wt +Lb(lungime bloc) =1+18+ 4x32 = 147 bii
Rezult:
Ctotal = Nr. intrri x Li = 2 x 147 bii = 147Kbii 147/8 = 18,4KB
n acest memorie numrul total de bii este de 18,4KB/16KB= 1,15ori mai mult dect sunt necesari pentru
stocarea datelor ( o regie de 19bii x 2/ 8 x 2 =2,375KB).

________________________________________________________________________________
Exemplul 1.3. Se consider o memorie cache, cu organizare de tip mapare direct, care are 64 de blocuri (intrri)
iar lungimea unui bloc este de 16bytes; memoria principal este organizat pe byte. n ce intrare/linie a memoriei
cache va fi plasat coninutul locaiei de memorie cu adresa de 1209.
Soluie. Deorece lungimea unui bloc, Lb, este de 16 bytes, nseamn c datele de la 16 locaii de adrese
consecutive din memoria principal vor intra ntr-un bloc de memorie cache. Numrul blocului din memoria
principal, care conine locaia de adres 1209 este 75 (1209:16 =75 rest 9, numerotarea blocurilor este: 0, 1, 2,...).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
32

Cele 16 locaii a cror coninut intr n blocul de memorie cu numrul 75 sunt n intervalul de adrese 1200 - 1215
( care includ adresa 1209).
Aplicnd regula de adresare la organizarea de cache cu maparea direct

(adres bloc din memorie) modulo ( numr intrri cache)


rezult
75 modulo 64 11; 75 = 1x 64 + 11
deci n a 11-a linia de intrare a memoriei cache se plasez blocul 75 (16 bytes) al memoriei principale, unde se
gsete coninutul byte-ul de adres 1209.
________________________________________________________________________________

1.3.3.2 Memoria cache complet asociativ

Memoria complet asociativ ( full-asociativ) se situeaz la extrema opus n raport cu memoria cu mapare
direct. Dac la memoria cu mapare direct un bloc din memoria principal poate fi mapat doar ntr-o singur
intrare a memoriei cache la cea full-asociativ un bloc din memoria principal poate fi plasat (asociat) n oricare
intrare din memoria cache. Pentru c blocul de memorie poate fi oriunde n cache, nu mai trebuie cutat intrarea
in n care se plasez, n cuvntul de adres nu mai este nevoie de subcmpul index (wi =0 bii), exist doar
subcmpurile selectare cuvnt (wc), selectare byte (wb) i cmpul tag. Tag-ul se aplic la toate intrrile, iar
operaia de compararea simultan a tag-ului cu tag-urile nscrise n toate liniile memoriei cache se realizez n
paralel, ceea ce implic existena a unui numr de comparatoare egal cu cel al numrului liniilor din memoria
cache (n raport cu un singur comparator de la memoria cache cu mapare direct). Un numr mare de
comparatoare (egal cu numrul de intrri din memoria cache) duce la creterea costului unei astfel de organizri,
ceea ce face ca memoria cache full-asociativ s fie practic doar pentru un numr mic de blocuri/linii. n general
memoria full-asociativ este realizat pe baz de memorie adresabil dup coninut, CAM ( Content Addresable
Memory).

Memoria full-asociativ avnd un grad mare de asociativitate poate realiza un miss rate de valoare foarte mic,
ceea ce este intuitiv. De exemplu, la memoria cu mapare direct dac trebuie accesat un bloc care corespunde
unei clase de resturi ( modulo numr de intrri cache), iar acesta nu se afl n memoria cache ci n memoria
principal, atunci este transferat blocul din cache (care are aceeai clas de resturi cu cel cutat) n memorie i
blocul din memorie adus n cache; apoi dac se adreseaz blocul din memorie care a fost nainte n cache, i care a
fost trimis napoi n memorie, atunci se face din nou swap ntre memorie i cache cu cele dou blocuri ( care au
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
33

aceeai clas de resturi). Aceste transferuri, cu valori mari pentru miss penalty, sunt generate de faptul c toate
blocurile de aceeai clas de resturi concur la o singur intrare n cache, deci nu pot exista simultan n cache
blocuri de aceeai clas de resturi. La memoria full-asociativ pot coexista n memoria cache mai multe blocuri de
memorie toate avnd aceeai clas de resturi ( plasate n diferite intrri/linii), deci numrul de situaii de miss este
mult mai mic!

1.3.3.3. Memoria cache set asociativ

Memoria set asociativ se situez ntr-o zon intermediar n raport cu cea full asociativ i cea cu mapare
direct. Memoria set asociativ prezint un numr de seturi, fiecare dintre aceste seturi conine un numr n de
intrri/linii care formeaz o memorie full asociativ cu n intrri, aceast organizare este referit ca memorie set
asociativ cu n-ci (n-way set-associative). Pentru o memorie cache cu un numr total de m intrri, fiecare set
avnd n ci, numrul total de seturi este egal cu raportul m/n. Fiecare set este selectat de subcmpul index din
cuvntul de adres, la fel ca memoria cu mapare direct; numrul setului din memoria cache set asociativ n care
va fi plasat un bloc din memoria principal se determin conform relaiei

(adres bloc din memorie) modulo ( numrul seturilor din cache)

dar acest bloc din memoria principal poate fi plasat n setul respectiv n oricare din cele n intrri/linii ale
setului ( mapare asociativ n cadrul setului i nu mapare direct). Un bloc din memorie este mapat direct (numai)
intr-un set (deci prin index), dar n cadrul setului plasat asociativ (n oricare intrare a setului). ntr-o intrare cache,
a unui set, se nscrie tag-ul, blocul data i bitul valid (V). Deoarece n fiecare set cu n ci pot exista n blocuri de
date cu aceeai clas de resturi, modulo(numrul seturilor din cache), miss rate este destul de mic. Gsirea unui
bloc dintr-un set se realizeaz prin intermediul tag-urilor.
Comparnd o memorie cache set asociativ cu cele dou tipuri anterioare de organizare rezult c memoria cu
mapare direct este o memorie set asociativ cu o singur cale (n =1), ntr-un set, iar memoria full asociativ cu
m intrri este o memorie set asociativ cu un singur set care are n ci, egal cu numrul total de intrri n cache, n=
m.

n figura urmtoare este exemplificat maparea blocurilor ( blocul este compus doar dintr-un singur cuvnt data)
din memoria principal pentru intervalul de adrese 12-27 pe o memorie cache cu 8 intrri (m = 8) n dou
variante. n prima variant memoria cache set asociativ are dou ci (n =2), deci rezult patru seturi m/n= 4
maparea se face conform relaiei:
(adres bloc din memorie) modulo 4

iar n a doua variant memoria este organizat set asociativ cu patru ci (n = 4), deci rezult dou seturi m/n =2,
maparea se face conform relaiei
(adres bloc din memorie) modulo 2

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


34

Se pune ntrebarea fireasc, ct se reduce miss rate prin creterea asociativitii. Din tabelul urmtor se poate
deduce un astfel de rspuns. Se consider o memorie cache cu capacitatea de 64KB, cu blocuri de 16 cuvinte, iar
lungimea cuvnt este de 32 bii (4 bytes) rezult numrul de blocuri /linii din memoria cache 64KB/(16x4)B = 1K
intrri. Prin trecerea de la maparea direct (set asociativ cu o singur cale) la organizarea set asociativ cu 2 ci,
mis rate se reduce cu 16,5% , dar trecerea n contiunare la organizarea set asociativ cu 4 ci miss rate se reduce
doar cu 3,4%% (de la 8,6% la 8,3%) . Aceste statistici sunt un argument de ce majoritatea organizrilor actuale de
memorii cache sunt de tipul 2 ci set asociative

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


35

Alegerea ntre organizrile maparea-direct, set asociativ i full asociativ, n oricare nivel de memorie cache,
depinde de costul miss rate n raport cu costul asociativitii att din punct de vedere al timpului ( timp de acces
i miss penalty) ct i al (costului) implementrii de hardware suplimentar.

1.3.3.4. Memoria cache multinivel

Pentru a micora i mai mult gap-ul dintre frecvena de ceas foarte ridicat i timpul lung de acces la memoria
SDRAM procesoarelor moderne au pe lng memoria cache L1 nc un nivel de memorie cache L2, ambele
integrate pe acelai chip cu P; capacitatea nivelului L2 este mai mare dect capacitatea nivelului L1 cam de un
ordin de mrime ( uzual L1: L2 = 50:1). Nivelul L2 este accesat totdeauna cnd se produce un miss pe L1. Dac
L2 conine data cutat atunci miss penalty este egal cu timpul de acces la L2, care este cu mult mai mic dect
timpul de acces la memorie. Dar dac data cutat nu se afl nici n L1 nici n L2 atunci se acceseaz memoria
rezultnd o penalizare foarte mare. n proiectarea unei memorii cache pe dou niveluri se caut realizarea
nivelului L1 cu un timp de acces (hit time) ct mai mic, printr-o capacitate redus i blocuri de dimensiuni reduse,
iar pentru nivelul L2 o capacitate mai mare (pentru c timpul de acces este mai puin critic dect la L1) i cu o mai
mare asociativitate pentru a se micora miss rate ( n scopul reducerii numrul accesrilor la memomorie, care
introduc penalizri mari).
Ultimile procesoare ( pentru desk-top, servere) au deja integrat pe chip i al treilea nivel de cache, L3, situat ntre
L2 i memorie, cu o capacitate mai mare dect L2, uzual L3:l2 = 5:1
O atenie deosebit n optimizarea nivelurile L2 i L3 trebuie ndreptat asupra algoritmului de nlocuire a unui
bloc dintr-un nivel cache cnd se aduce un bloc nou din nivelul inferior; cel mai simplu i des utilizat este
algoritmul referit LRU (Least-Recently Used), adic se substituie blocul care n-a mai fost accesat de cel mai lung
timp ( utilizat cel mai puin n ultimul timp).
n tabelul urmtor sunt prezentate valori pentru parametrii nivelurilor de cache ale procesoarelor
IBM Power P4(2001) i IBM Power P5(2004), acestea sunt procesoare multichip dou procesoare identice pe
acelai chip (dual-core).

Dimensiune Laten(n tacte)


Nivel cache Capacitate Asociativitate Bloc/linie Modul de nscriere
P4(1,7GHz) P5(1,9GHz)
(byte)
L1 I-cache 64KB Direct/2-ci 128 Instr. nu se nscriu 1 1
L1 D-cache 32KB 2-ci/4-ci 128 Write-through 1 1
L2 (D+I 1,5MB/ 8-ci/10-ci 128 Writeback 12 13
unificate) 2MB
L3 32MB/ 8-ci/12-ci 512 Writeback 123 87
36MB
Memorie 351 220
/ refer valori pentru P4 respectiv P5
I-cache ( memorie cache numai pentru stocarea de cuvinte instruciune)
D-cache (memorie cache numai pentru stocarea de cuvinte data)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


36

________________________________________________________________________________
Exemplul 1.4 Se consider un sistem cu P cu frecvena de ceas de fclk = 4GHz (Tclk = 0,25ns) la care timpul
de acces la nvelul L1 cache TACL1 este un tact (TACL1 =1 tact = 0,25ns) i timpul de acces la memorie SDRAM
este TACm = 100ns (100ns/ (0,25ns/tact = 400 tacte). Cand toate accesrile la memoria cache L1 sunt rezultate cu
hit, (miss rate este 0) sistemul execut pe fiecare tact de ceas o instruciune, CPI=1 (Cycles Per Instruction)

1. Ct este valoarea pentru CPItotal, cnd se presupune c miss rate pentru nivelul unu de cache nu este zero
ci 2%.
Soluie.
Numrul total de tacte pe instruciune , CPI total, consumat de procesor pentru o instruciune este egal cu
CPI = 1 plus numrul de tacte de ateptare pentru P cnd a rezultat miss pe nivelul L1 i se acceseaz
memoria SDRAM(miss penalty)
CPI total = 1 + 2% x 400 = 9

2. Cu ct va crete viteza sistemului dac se introduce i al doilea nivel (L2) de cache, care are timpul de acces de
TACL2 = 5ns (5ns/ (0,25ns/tact) = 20 tacte) iar mis rate este de 0,5% ?
Soluie
- Dac rezult miss pe nivelul L1 atunci se acceseaz L2, iar pe acest nivel este numai hit la toate accesrile
atunci miss penalty este egal cu 20 de tacte

CPI total = 1 + numrul de tacte de ateptare introduse de accesul la L2 =


= 1+ 2% x 20 =1+0,4 = 1,4

- Dac se produce miss pe nivelul L1, dac se produce miss i pe nivelul L2 atunci se acceseaz SDRAM
unde se gsete blocul cutat ( cu o penalizare de 400tacte)

CPI total = 1 + (2% 0,5%) 20 + 0,5% x (20 +400) =1+0,3+2,1 = 3,4

Procesorul care are o memorie cache pe dou niveluri cu datele calculate anterior obine un spor de vitez
de 9/3,4 = 2,6.

________________________________________________________________________________

1.4. PERIFERICELE (I/O)

Elementele externe (periferice) care se pot conecta la P sunt foarte variate i prezint o dispersie larg a
caracteristicilor ( tip de periferic, partener , rat de transfer (vitez/rat de transfer)), unele dintre acestea sunt
prezentate n tabelul urmtor

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


37

Raportul ntre rata de transfer cea mai ridicat 104 Mbit/s (nerwork /LAN) i rata de transfer cea mai mic
1.104 Mbit/s (tastatur) este de 108
Un periferic ca s poat fi conectat ntr-un sistem pe baz de P trebuie s fie adaptat ( cerine mecanice
(cuplaje), mod de comunicare pe intrare i iesire (I/O) , niveluri de semnale) la modul de lucru al procesorului,
aceast adaptare se realizeaz printr-o circuistic de interfaare referit: bloc de I/O, I/O, controller I/O sau
simplu controller. Controllerul, fizic, poate fi inclus n periferic sau poate fi nclus n sistemul cu P.
Procesorul nu vede perifericul ci doar componenta I/O (controllerul). Fiecare bloc de I/O (adic periferic)
are o adres prin care este nregistrat n sistem i pe baza creia este recunoscut de P. O structur bloc
(generic) pentru I/O este schiat n figura urmtoare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


38

1.4 ORGANIZAREA UNUI SISTEM PE BAZ DE MAGIASTRALE

1.5.1 Sistemul cu trei magistrale

Magistral o cale de comunicaie care utilizeaz un set de linii pentru conectarea diferitelor
pri ale sistemnului. Limea magistralei (w) este egal cu numrul de linii, n general
numrul de linii sunt multiplu de byte ( 8 bii).

Organizare de principiu

1.Magistrale de date. Cuvintele DATA , n general, cu lungimea de multiplu de byte sunt transferate ntre P,
memorie i I/O pe magistrala de date. Cuvintele data pot fi instruciuni transferate ntre P i memorie sau cuvinte
data transferate ntre P, memorie i I/O. Uneori pentru cuvintele lungi (mai mari dact limea magistralei se fac
dou sau trei transferuri succesive pe magistral). Magistrala de date este cu transfer bidirecional, adic P poate
fi att surs de date ct i destinaie.
2. Magistrala de adrese. Este suportul pentru transmisia cuvintelor ADRES. n general, aceast magistral
este unidirecional, adic se transmit cuvinte adres ntr-un singur sens, de la P la memorie sau la I/O. Exist
situaia cnd se transmit adrese i de la alte componente ale sistemului, de exemplu funcionare n DMA (Direct
Memory Access). Pentru micorarea numrului de pini P i pentru creterea numrul de operaii n unitatea de
timp (Throughput), magistrala de date este, uneori, multiplexat ntre transmiterea cuvintelor ADRES i a
cuvintelor DATA. Aceast multiplexare, Adres/Date, este posibil n timp deoarece intervalele de comunicaie
DATA i cele de comunicaii ADRESA sunt disjuncte ( nu se suprapun n timp).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


39

3. Magistrala de control. Se nelege prin magistral toate liniile prin care sunt transmise semnalele pentru
sincronizarea operaiilor n sistem, adic pentru a indica ce fel de informaie exist pe magistrala de date i ce
operaie se execut. Urmtoarele patru semnale de control generate de P sunt cele mai uzuale:
- citire memmorie, MEM_L
- nscriere memorie, MEMW_L
- nscriere I/O, I/OW_L
- citire I/O, I/OR_L
Exist semnale de control generate i de alte elemente din sistem, de exemplu: TRANSFER ACK confirmare
(Acknowledgement) c o comand a fost acceptat; WAIT- ateapt pn cnd menmoria este citit; IRQ cerere
de ntrerupre etc.

1.5.2. Caracteristicile magistralei

1. Latena exprim ntrzierea de propagare pe magistral, aceasta se reflect n frecvena maxim de


ceas, fmax, cu care se poate comanda transferul sau frecvena maxim a semnalului aplicat pe magistral.
ntrzierea (latena) pe o linie magistral este determinat de:
constanta de timp, T = RC ( produsul dintre rezistena i capacitatea liniei);
ncrcarea liniei ( numrul de sarcini comandate de elementul care genereaz semnalul pe linia de mag.);
adaptarea liniei (atenuarea reflexiilor la capete).
Procesoarele actuale funcioneaz cu o frecven interioar de ceas, fckl, i o alt frecven exterioar pentru
controlul sincronizrii transferului pe magiatral, fcklmag, care se obine prin divizarea frecvenei interioare. De
exemplu, microprocesorul Pentium 4 are fckl= 2,66GHz i fcklmag= 133MHz ( 1,33x20 = 2,66).
O linie de magistral nu se las niciodat n gol la capete, se adapteaz printr-un divizor Thevenin, iar pentru ca
atunci cnd linia nu este comandat ca s nu se fixeze nivelul de tensiune la o valoare de potenial ntre VH i
VL (care ar distruge porile receptoare conectate la linie) se conectez un bus holder.

Memoriile actuale, de tip DDR SDRAM sau cele QDR SRAM la care transferul pe magistral se realizeaz la
frecvene de peste 500MHz, conectarea la linia de magistral se realizez prin circuite care au posibilitatea de
adaptare la valoarea impedanei caracteristice a liniei, Zo, att le emisie ct i la recepie. n funcie de valoarea
variabil Zo a liniei, la elementul conectat la magistral, se modific rezisten de ieire a bufferulul de ieire, Ro,
nct s se obin egalitatea Ro = Zo (pentru funcionarea ca generator pe magistral) sau egalitatea
( 2Zoi 2Zoi)/( 2Zoi +2Zoi)= Zoi =Zo (pentru funcionarea ca receptor pe magistral), structura de principiu a unui
astfel de circuit de conectare la magistral este prezentat n figura urmtoare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


40

2. Lrgimea de band, B ( Bandwidth). Se definete ca produsul dintre limea magistralei w ( exprimat n


bytes sau bii) i frecvena maxim admis pentru comanda magistralei fmax (MHz, sau 1/s)
B = fmax w [ MB/s, Mbit/s]

Lrgimea de band exprim transferal maxim pe magistrala respectiv. n general, pe o magistral rata de transfer
este mai mic dect B.

3.Throughput- exprim numrul de operaii n unitatea de timp; pentru magistral se reduce la numrul de
tranzacii n unitatea de timp, adic numrul de operaii de citire/s sau nscriere/s.
Numrul de operaii n unitatea de timp poate fi mrit printr-o multiplexarea a magistralei, adic realiznd un
trensfer intreesut pe magistral. De exemplu, la accesarea pentru citire a unei memorii cu laen mare, dup ce s-a
aplicat adresa la memorie, pe intervalul de ateptare pn la obinerea datelor (timpul de acces), magistrala poate
fi utilizat pentru alte tanzacii.
________________________________________________________________________________
Exemplul 1.5 Un procesor este conectat la o memorie printr-o magistral multiplexat ( date+adresa) de lime
w = 32 bii, comandat cu frecvena maxim de sincronizare fcklmag = 100MHz (Tcklmag = 10ns) . Adresarea
memoriei pentru citire se face cu un cuvnt ADRESA de 32 bii (1w), cuvntul DATA este de 64 bii (2w), iar
latena memoriei este de 50ns. Transferul cuvntului ADRESA pe magistral spre memorie consum un tact, iar
transferul cuvntului DATA de la memorie spre procesor dou tacte. S se determine: limea de band, numrul
de citiri n unitatea de timp/ troughput, rata de transfer (tranzacii) i gradul de utilizare al magistralei.
Soluie.
Lrgimea de band, B = w fcklmag = 4byte 100M [1/s]= 400MB/s
Latena memoriei 50ns/(10ns/tact) = 5 tacte
Durata unei tranzacii (citire)
Ttranz = 1tact (adresare) +5tacte (acces memorie) + 2 tacte (transfer DATA) =
= 8tacte 80ns/tranzactie(citire)
Troughput= 1/(80ns/tranzacie) = 12,5 106 citiri/s = 12,5 Mcitiri/s
Rata de transfer = 12,5 106 citiri/s x 64bii/citire = 100MB/s
Gradul de utilizare al magistralei 3tacte/8tacte 100 = 37,5% ( 5 tacte se ateapt citirea memoriei)
n cazul n care lungimea cuvtului DATA este de 128bii rezult:
Ttranz = 1tact (adresare) +5tacte (acces memorie) + 4 tacte (transfer DATA) =
= 10tacte 100ns/tranzactie
Troughput= 1/(100ns/tranzacie) = 10 106 citiri/s= 10Mcitiri/s
Rata de transfer = 10 106 citiri/s x 128bii/citire = 160MB/s
Gradul de utilizare al magistralei 5tacte/10tacte 100 = 50%
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
41

iar dac i limea magistralei devine w = 128 bii (cuvntul de date fiind tot 128 bii)
Lrgimea de band, B = w fcklmag = 16byte 100M [1/s]= 1600MB/s
Ttranz = 1tact (adresare) +5tacte (acces memorie) + 1 tacte (transfer DATA) =
= 7tacte 70ns/tranzactie
Troughput= 1/(70ns/tranzacie) = 14,29 106 citiri/s= 14,29Mcitiri/s
Rata de transfer = 14,29 106 citiri/s x 128bii/citire = 228,64MB/s
Gradul de utilizare al magistralei 2tacte/7tacte 100 = 28,5%

________________________________________________________________________________

Magistralele paralele prezentate au avantajul c sunt structuri de transmiterea datelor realizabile la un pre
sczut i cu mare varsatilitate n organizare, dar au i dezavantajele:
pot apare stangulri n comunicaie (limitare din cauza lrgimii de band, rata de transfer necesar este
mai mare dect B);
latena limitez viteza de transfer;
apariia defazajului de ceas (la lungimi mari ale liinilor de magistral)
n plus, dac n sistem exist mai multe elemente care pot comanda magistrala (masteri) atunci trebuie introdus un
sistem de arbitrare pentru primirea dreptului de a comanda magistrala. Toate aceste dezavantaje a determinat
tendina de utilizate a magistralelor seriale sau conexiunile punc-la-punct ntre elementele sistemului.

1.5.3 Magistrale sincrone

La o magistral sincron toate tranzaciile se realizeaz sub controlul semnalului de ceas, adic sunt referite la
fronturile H-L sau L-H ale acestui semnal. Aceast ncadrare a tranzacilor n cadena semnalul de ceas, care
este dat, impune ca toate elementele care particip n tranzacia de pe magistral s aib parametrii de timp
constani. Astfel de condiii sunt ndeplinite de P, memorie, disply-uri grafice, ceea ce explic faptul c aceste
elemente sunt conectae prin magistrale sincrone. Chiar dac unele elemente sunt mai rapide dect perioada
ceasului aceste elemente trebuie s se supun ( s atepte) fronturile perioadei semnalului de ceas. Toat
succesiunea desfurrii tranzaciei, cu un timing fixat, poate fi dirijat ( producerea semnalelor de control) de
ctre un ASM sau de ctre un P.

Exemplul 1.6 S se reprezinte succesiunea semnalelor necesare pentru operaia de citire a unei memorii cu
timpul de acces TAC =40ns. Frecvena ceasului de sincronizare pe magistral fclk =40 MHz ( Tclk= 25ns); aplicarea
adresei pe magistrala de adresare de ctre P se face pe frontul L-H, nscrierea datelor de pe magistrala de date
ntr-un registru al P se face pe frontul H-L ale semnalului de ceas, iar restriciile de temporizare pentru memorie
(extrase din foia de catalog a memoriei) sunt cele date n tabelul urmtor.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


42

Soluie.
Diagramele de temporizare la citirea memoriei, cu datele de timp din tabelul anterior, sunt prezenatate n figura
urmtoare.

Pe frontal L-H(T1) se aplic ADRESA pe magistrala de adrese, iar citirea datelor stabile DATA de pe
magistrala de date se face pe un front H-L, dar intervalul ntre cele dou fronturi nu poate fi mai mic dect TAD(
timpul de stabilire a cuvntului ADRESA + TAC(timpul de acces al memoriei) + TSU(timpul de stabilizare a
cuvntului DATA nainte de citire de ctre P pe frontul H-L) = 11+ 40 +5 = 56ns, deci citirea nu poate fi
efectuat pe frontul H-L din perioada T2 (56ns >37,5ns =25+12,5) ci numai pe H-L(T3), adic dup 2x 25 +12,5 =
62,5ns >56ns. Deoarece memoria nu poate produce DATA pe H-L(T2) trebuie s informeze P c este necesar s
se consume un timp de ateptare prin activarea ( la nceputul perioadei T2) semnalul de WAIT, n cazul aceasta
ateptarea este de un tact (T2) (n cazul general memoria ine activ semnalul WAIT attea tacte ct este necesar ca
s genereze date valide care s fie citite de procesor).
Dac memoria ar fi avut TAC = 50ns atunci TAD + TAC+ TSU = 11+ 50 +5 = 66ns >62,5ns ceea ce nsemn c
urmtorul front H-L pe care se pot citi date stabile DATA de pe magistrala va fi H-L(T4) la 87,5ns, deci semnalul
WAIT trebuie activat pentru tactele T2 + T3.
Succesiunea semnalelor de control ( aplicare cuvnt ADRESA, MEMQ_L, READ_L ) este realizat de ctre P,
dar poate fi generat i de ctre un ASM (controller) acesta este cazul cnd memoria este introdus ntr-o aplicaie
fr P.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


43

1.5.4 Magistrale asincrone

ntr-o magistral cu funcionare asincron sunt conectate elemente care prezint caracteristici de vitez foarte
diferite, mai mult valorile acestor caracteristici pot varia n timp ( deci astfel de elemente nu pot fi reunite pe o
magistral sincron unde timingul este foarte rigid, fixat/ncadrat prin semnalul de ceas). n consecin, realizarea
unei tranzacii pe o magistral asincron nu este pilotat de semnalul de ceas (lipsete ceasul), iar lungimea
magistralei poate fi mult mai mare dect la una sincron. Transferul pe magistral se efectuez sub forma unui
protocol, ntre cei doi parteneri implicai, care const intr-un proces de informare-confirmare, adic fiecare dintre
parteneri determin (prin reacie) o cauz pentru cellat; trecerea la etapa urmtoare a transferului se realizez
numai atunci cnd att partenerul emitor ct i partenerul receptor agreaz aceasta.
________________________________________________________________________________
Exemplul 1.7. Se consider c un dispozitiv I/O solicit citirea unui cuvnt din memorie, Pentru realizarea
protocolului de citire din memorie sunt necesare urmtoarele trei semnale de control ( acestea constituie
magistrala de control):
1. Cerere citire, READ_REQ prin activarea acestui semnal de ctre I/O se solicit memoriei o citire de un
cuvnt DATA, simultan cu activarea acestui semnal dispozitivl I/O aplic i
cuvntul ADRESA pe magistrala de adresare (aceeai magistrala este
multiplexat ntre ADRES i DATA). Elementul I/O permanet testez starea
semnalului DATA_RDY, activat de I/O.
2. Date disponibile, DATA_RDY activarea acestui semnal indic faptul c pe magistral a fost pus un
cuvnt DATA; la o operaie de citire DATA_RDY este activat de ctre memorie,
iar la una de nscriere este activat de I/O. Memoria permanet testez starea
semnalului READ_REQ.
3. Confirmare ACK la sesizarea activrii semnalului READ_REQ ( de ctre memorie) sau a semnalului
DATA_RDY( de ctre I/O), cellalt partener implicat n protocol rspunde prin activarea
semnalul ACK

Urmtorii apte pai ai protocolului ncep dup ce I/O a depus pe magistrala de date cuvntul ADRESA i
informez memoria prin activarea semnalului READ_REQ =1(informare).

1. Memoria testnd permanent linia de semnal READ_REQ (comandat de I/O) constat c a fost activat, va
citi cuvntul ADRESA i confirm aceasta dispozitivului I/O prin activarea liniei de semnal ACK
(confirmare).
2. I/O sesiznd activarea semnalului de confirmare, ACK = 1, dezactiveaz semnalul READ_REQ i
elibereaz magistrala.
3. Memoria sesiznd c READ_REQ = 0 (a fost dezactivat) anulez semnalul de confirmare, ACK=0.
4. n continuare este o stare de ateptare orict de lung (nencadrat ntr-un numr de tacte de ceas ca la o
tranzacie de pe o magistral sincron) pn cnd memoria are cuvntul DATA disponibil, atunci l pune pe
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
44

magistrala de date i informez I/O prin activarea semnalul DATA_RDY ( c se poate citi cuvntul
DATA). Permanet I/O testez starea semnalului DATA_RDY, iar memoria testeaz starea semnalului
READ_REQ.
5. I/O sesiznd DATA_RDY= 1, citete cuvntul DATA i confirm aceasta prin activarea semnalului ACK.
6. Memoria primind confirmarea citirii, ACK =1, dezactiveaz semnalul DATA_RDY= 0 i eliberez
magistrala .
7. n final , I/O sesiznd DATA_RDY= 0, anuleaz confirmarea, ACK=0, ceea ce indic faptul c tranzacia s-a
ncheiat. Poate ncepe o alt tranzacie pe magistral.
________________________________________________________________________________

1.5.5 Structurarea ierarhizat a magistralelor unui sistem

ntr-un sistem coexist elemente care necesit vitez de transfer foarte ridicat (P, cache, componente
grafice) cu elemente foarte lente (tastatur, mouse etc.). Pentru conectarea lor mpreun soluia este s se
realizeze magistrale cu valori diferite pentru bandwidth, n funcie de elementele pe care le conectez, apoi
aceste magistrale s fie conectate ntre ele prin adaptoare de magistrale (bridge). Dei o astfel de structurare
apare, fizic, cu mai multe magistrale, totui logic aceste magistrale formez doar o singur magistral.
Adaptorul de magistrale (bridge) joncioneaz dou magistrale realiznd:
adaptarea i bufferarea nevelurilor de semnale;
adaptarea diferenelor de vitez;
compatibilizeaz protocalele.
Fizic, magistralele pot fi ncadrate n unul din urmtoarele tipuri
1. Magistral procesor-memorie, caracterizat prin:
uzual, este o magistral proprietar realizat pentru o anumit platform (cu un anumit
microprocesor);
bandwidth foarte ridicat, laten redus, lungime foarte mic, realizat pentru un anumit
P;
conectare direct la P, optimizat pentru a maximiza transferul ntre procesor i memorie,
funcionare sincron;
2. Magistrala I/O:
uzual, este o magistral standardizat realizat pentru a uni o varietate de dispozitive foarte
diferite ca vitez;
bandwidth sczut, laten ridicat, lungime foarte mare (metrii);
conectare prin adaptor la o magistral fund-de-sertar sau la o magistral procesor-memorie.
3. Magistrala fund-de-sertar (backplane bus):
uzual, o magistral standardizat, de lungime maximum 50 cm i plasat pe fundul
sertarului n care este nchis sistemul;
este proiectat pentru a coexista pe o singur magistral P, memoria i dispozitivele I/O;
performanele sale de comunicaie balanseaz ntre cele ale magistralei procesor-memorie i
cele ale magistralei I/O;
conectarea n magistral a componentelor I/O sub form de carduri.
Un exemplu de structurare a magistralelor ntr-un sistem este prezentat n figura urmtoare

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


45

Structurarea de principiu, pe baz de magistrale, a unui PC

Se observ North Bridge chipset care conecteaz componentele de vitez ridicat (P, memorie,
componenta video) la magistrala PCI ( Peripheral Componet Interconet) care este o magistral standardizat cu
urmtoarele variante:
PCI B = 32 bii x 33MHz= 133MB/s
PCI B = 64 bii x 66MHz= 528MB/s
PCI B = 64 bii x 133MHz= 1GB/s
South Bridge chipset conecteaz componentele de vitez mai redus ale sistemului.
Referirea de chipset a rezultat din evoluia istoric a acestor circuite. Iniial, placa/plcile de baz ale PC pe
lng P i memorie conineau o mulime de circuite (chip-uri) pentru realizarea sistemului. Cu progresele
tehnologiei de integrare tot mai multe din aceste chip-uri au fost integrate n chip-uri de complexitate mai ridicat
pn cnd, n prezent, toare funciile necesare n sistem, n afar de cele proprii P i memoriei, au fot ntegrate n
cele dou chipseturi (bridge-uri) de nord i de sud.
Structurarea de principiu, pe baz de magistrale, a unui server

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


46

1.5.6. Prezent i tendine n strucurarea pa baz de magistrale

Magistrale paralele.
Avantaje: versatile, pre redus.
Desavantaje: strangularea transmisiilor (bottleneck), defazaj de ceas( clock-skew), necesit arbitraj.
Deja n unele aplicaii magistralele paralele au fost substituite de magistrale punct-la-punct.
Avantaje: conexiuni mai rapide (evitare clock-skew) deci performae mai ridicate, numr redus de pini,
switch-ul realizez i arbitrarea

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


47

ATA - Advance Technology Attachment, DIMM- Dual In-line Memory Module

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


48

SMbus- System Management bus, GPIO- General Purpose I/O

1.6. LEGEA LUI AMDAHL

Legea lul Amdahl exprim cantitativ cu ct se mbuntesc performanele globale ale unui sistem cnd se
mbuntesc doar performanele unei componente a sistemului, component care este utilizat doar o fraciune k
din ntregul timp de funcionarea al sistemului, ceea ce formal este redat prin relaia
k
Tmb Tnmb 1 k
n
Respectiv creterea de vitez (speed-up)

Tnmb 1
Speed up
Tmb 1 k k
n
n care:

Tnmb timpul consumat de sistem pentru realizarea unei sarcini cnd componenta respectiv nu a
fost mbuntit;
Tmb timpul consumat de sistem pentru realizarea unei sarcini cnd componenta respectiv a
fost mbuntit;
k fraciunea de timp, ct este utilizat componenta supus mbuntirr, din timpul total necesar pentru
realizarea unei sarcini;
n de cte ori a crescut performanele componentei mbuntite.

Exemplul 1.8. Un program de test (benchmark) este executat n 100s din care 80s sunt consumate de CPU
(Central Processing Unit) iar restul de 20ns sunt consumate de I/O. Dac timpul de execuie pe CPU este
mbuntit in fiecare an cu 50%, dar nu i timpul pentru I/O, n ct timp va fi rulat accest program pe calaculator
dup cinci ani?

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


49

Soluie.
Tnmb = 100s; K = 80/100 = 0,8; n = 5 x1,5 = 7,5

0,8
Tmb 1001 0,8 100(0,106 0,2) 30.535s
7,5

i nu n 100s: 7,5= 13,33s!


100
Speed up 3,28
30,535

Dup CPUtime[s] I/Otime[s] Timpul total[s] I/Otime


t ani %
0 80 20 100 20
1 80/1,5 = 53,33 20 73,33 27,2
2 53,33/1,5 =35,55 20 55,55 36,7
3 35,55/1,5 = 23,70 20 43,70 45,7
4 23,55/1,5 = 15,80 20 35,80 55,8
5 15,80/1,5 = 10,53 20 30,53 65,5

n performan mbuntit a sistemului componenta mbuntit va avea o pondere cu att mai mare cu ct
coanta sa de timp (k) este mai mare i mbuntirea sa (n) crete mai mult. Pentru k =1 creterea performanelor
sistemului este egal cu mbuntirea (n) efectuat asupre componentei.

1.7. PROCESORUL MAIN DE PROCESARE A PROGRAMELOR

1.7.1 Noiuni: Alfabet, ir, Limbaj

Un SIMBOL este orice obiect. Exemple: #, 0,1,a,b, begin, else, while.


Un ALFABET () este orice mulime nevid de simboluri. Exemple:
1. Alfabetul binar = {0,1}:
2. Alfabetul minuscul latin = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,r,s,t,u,v,w,x,y,z}; 26 de simboluri (caractere).
3. Primele cinci majuscule din alfabetul latin = {A,B,C,D,E}.
4. Simbolurile de pe tastatura unui calculator de buzunar ={0,1,2,3,4,5,6,7,8,9,,=,,+,x,), (}
5. Cteva alfabete cu dou sau trei simboluri: {T,F} True,Fals; {!,?};{a,b};{,, };{0,1}.
6. Simbolurile email: (http://www.unitbv.ro/iesc/Contact.aspx)
Un IR este o secven de simboluri pe un anumit alfabet . Lungimea x a unui ir x este egal cu
numrul de simboluri din ir.
Exemple de iruri pe alfabetul{0,1}:
1. 0; 1; 00; 11; 0000; 0111; 10101 respectiv cu lungimile: 0 1; 1 1 ; 00 2; 11 2; 0000 4;
0111 4; 10101 5.
2. irul vid este un ir care nu conine nici un simbol 0 .
Un LIMBAJ (L) peste un alfabet este oricare mulime finit sau infinit de iruri pe . Altfel spus,
elementele unui limbaj sunt iruri finite de simboluri din alfabetul . Exemple de limbaje pe alfabetul {0,1}:
1. Mulimea irurilor x cu x 2 : {, 0, 1, 00, 11, 10, 01}.
2. Mulimea irurilor numai cu simbolul 0: {,0, 00, 000, 0000,...}.
3. Mulimea irurilor numai cu 1 sau 0: {, 0, 1, 00, 11, 000, 111, 0000, 11111,...}.
4. Limbajul vid {}=.
5. Limbajul coninnd irul vid {} ; {}{} deoarece {}=0 pe cnd{ }= 1
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
50

Mulimea tuturor limbajelor peste un alfabet este notat cu *

Exemple:
1. Fie alfabetul = {a}pe care se definesc L1 = { ,a, aa,aaa,...} |
: |
: | Li Orice
Li = { ,a,aaaa,...} | limbaj
: | este
2. Fie alfabetul = {0,1} pe care se definesc L1 ={ ,0, 1,00,11,...} inclus
| sau egal
: | cu *
: | Li
Li = { , 0, 01,00,...} |
: |

Comenzile care se dau unui calculator de ctre operator pot fi exprimate ca iruri de caractere din alfabelul
latin. Exemple:
add adun dou numere; sub scade dou numere; mult nmulete dou numere; beq salt dac dou
numere sunt egale; bne salt dac dou numere nu sunt egale; copy copiaz un numr etc.

Un limbaj L1 cu aceste iruri poate fi:


L1 = { add, sub, mult, beq, bne, copy } de fapt, acesta este setul de instruciuni al limbajului L1 ( limbaj definit
pe alfabetul latin, limbaj exprimat n acesta form nu este neles de main, pentru a fi neles trebuie
tradus/translatat n limbajul mainii.
Limbajul L0 neles de main LIMBAJUL MAIN este definit pe alfabetul = {0,1}.
Utilizarea unui limbaj, definit pe alfabetul latin, pentru a lucra cu un calculator necesit ca fiecare
instruciune a acestui limbaj (L1) s fie codificat/translatat n limbajul main L0.

1={a,b,c,...} L1= { add, sub, beq, copy } setul de instruciuni pe alfabelul latin
mult,

1={0, 1} L0= { 0010, 0110 1110, 0001, 1111} setul de instruciuni cod main

Translatarea anterioar a fiecrei instruciuni (setul de instruciuni pe alfabelul latin) n instruciuni cod main s-
a fcut utiliznd o codificare arbitrar. Dar se poate utiliza pentru codificare codul ASCII ( American Standard
Code for Information Interchange) n care fiecare caracter alfanumeric este codificat pe opt bii (pot fi codificate
256 de simboluri, 28 256 ), de exemplu utiliznd acest cod pentru instruciunea anterioar mult se obine
cuvntul n binar (cuvnt cod main):
m u l t
mult0x 0110 1101 0111 0101 0110 1100 1111 0100 = 6D756C74hex sau 6D756C74H (exprimri n
hexazecimal)
6 D 7 5 6 C 7 4

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


51

ASCII cuprinde caractere latine, cifre arabe, simboluri, fiecare codifict pe opt bii (byte).
Universal Code (UNICODE) cuprinde caracterele, simbolurile din aproape toate culturile, fiecare
codificat pe 16 bii, deci n toatal 216 combinaii.
Un LIMBAJ, n termeni foarte generali, este un sistem de simboluri/semne pentru comunicarea ntre mai
multe pri.
Un calculator, chiar cu o interfa grafic, nu este altceva dect un manipulat de simboluri. Calculatorului i
se aplic o secven de simboluri, ca intrare, le proceseaz conform unui program i se obine, la ieire, o
succesiune de simboluri. Orice problem care nu poate fi aexprimat n simboluri acceptate de calculator nu
poate fi procesat/rezolvat de calculator. Multitudinea problemelor rezolvate de calculator au n comun: toate
pot fi exprimate/aduse ntr-un limbaj neles de main.

1.7.2 Structurarea pe niveluri a procesrii pe calculator. Maini virtuale.

Structurarea pe niveluri a procesrii pe calculator.

Nivelul cel mai de jos n procesare este cel al mainii fizice (hardware), M0, pentru care exist un limbaj main,
L0, reprezentat simbolic prin perechea (M0, L0)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


52

Figura a):
problema descris printr-un program scris n limbajul L0 (definit pe alfabetul {0,1}).
programul n limbajul L0 (cod binar , stocat n memorie) este executat de maina M0 (existent fizic sub
form de circuite electronice); (M0,L0)

Figura b):
problema descris printr-un program scris n limbajul L1
programul n limbajul L1 este compilat/translatat ntr-un program, dar n limbajul L0 i
stocat n memoria mainii M0
apoi programul n limbajul L0 (stocat n memorie ) este executat pe maina M0.

Figura c):
problema descris printr-un program scris n limbajul L1
fiecare instruciune a programului, n limbajul L1, este aplicat la intrarea programului
INTERPRETOR (fix n memoria mainii M0) i interpretat ca o dat de intrare
instruciunea este executat pe maina M0.

Maina virtual este doar o construcie logic i nu una fizic (nu exist sub forma de circuistic-
hardware). Pentru orice main se definete un limbaj, similar pentru orice limbaj se definete o main! Logic,
se poate construi un limbaj oarecare Li pentru care corespunde o main Mi, dar care nu are o implementar
fizic deci este o main virtual ( de fapt cnd exist un limbaj exist i o main virtual! exist perechea
perechea (Li ,Mi)).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


53

O problem scris ntr-un limbaj de nivel nalt cu ct va trace prin mai multe niveluri succesive, pn a ajunge
la maina (M0, L0), va rula ntr-un timp din ce n ce mai lung.Timpul cel mai scurt pentru rularea problemei se
obine cnd programul este scris direct n limbajul L0, dar scrierea ntr-un astfel de limbaj este destul de
dificil i consumatoare de timp.
Exemplul 1.9. Maina virtual Java, JVM (Java Virtual Machine).
Obinerea unor programe direct executabile de pe Internet i rularea lor ca pri pentru pagina WEB ridic
problema securitii informaiei. Mai mult, aceste programe descrcate de pe internet trebuie s ruleze pe orice
platform (Pentium i Window, Sparc i Unix etc.), adic respectivele programe s fie independente de
platform. Pentru rezolvarea acestor probleme s-a inventat limbajul JAVA. Pentru limbajul Java s-a conceput
maina virtual Java, JVM, deci perechea ( limbaj Java, JVM). Un program scris n Java este compilat pentru
aceast main i se obine o form intermediar de program Bytecode, form care este independent de
platform, deci poate fi portat de la platform la platform. n prezent exist aproape pe toate platformele un
interpretor JVM. Deci, pentru rularea unui program scris n Java, obinut de pe Internet, sub form de bytecode
acesta se aplic la intrarea interpretorului Java, prezent pe platforma respectiv, care l convertete ntr-un
limbaj L0 propriu mainii M0 (perechea L0, M0) al calculatorului pe care se lucreaz.

Structurarea pe niveluri a calculatorului.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


54

1.7.3. Organizarea i funcionarea de principiu a unui microprocesor

Formatul general al unei instruciuni ( n cod main/binar).

P recunoate doar formatul binary de instruciune

Arhitectura de tip von Neumann.


Aceast arhitectur de main are o funcionare conform unui program stocat mpreun cu datele ntr-o memorie
comun; memoria este comun att pentru date ct i pentru instruciuni. Dezavantajul acestei arhitecturi const
n faptul c procesorul fiind legat de memorie printr-o singur magistral nu se poate accesa simultan
INSTRUCIUNE i DATA.
n figura de mai jos s-a considerat memoria organizat pe Byte, deci un cuvnt de 32 bii ocup n memorie
patru bytes, adic patru adrese consecutive. Relaia de aliniere, de citire a unui cuvnt ncepnd cu primul byte al
cuvntului i nu bytes din dou cuvinte alturate, este:

(adres cuvnt din memorie) modulo 4 =

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


55

Arhitectura de tip Harvard.

Memorie de date i memorie de instruciuni sunt separate, deci se pot accesa simultan datele i instruciunile.

Ciclul instruciune ( timpul ct maina este ocupat cu execuia unei instruciuni) cuprinde dou
subcicluri ( frecvent, referite tot cicluri):
FETCH, cuprinde adresarea memoriei, citirea instruciunii, transferul pe magistrale i depunerea acesteia intr-
un registru din P;
EXECUTE, cuprinde realizarea de ctre P a operaiei, codul operaiei (OPCODE), specificate n
intruciunea adus din memorie i depus intr-un registru din P, apoi nscrierea rezultatului operaiei efectuate
ntr-un registru al procesorului sau ntr-o locaie de memorie.

Organigrama ciclului instruciune

Instruciunile sunt procesate secvenial, sunt citite din memorie, aduse n P i executate una dup alta.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


56

Timpul total consumat de CPU pentru execuia unui program cu lungime de N instruciuni, fiecare instruciune
avnd ciclul (instruciune) este

TCPU = N x TI

Organizarea de principiu a unui microprocesor.

Organizarea n interiorul microprocesorului este realizat pe baza a trei magistrale dou magistrale pentru
operanzi i una pentru rezultat (o operaie, n general are doi operanzi i genereaz un rezultat). i n exterior
sistemul este organizat tot pe trei magistrale: de date, de adrese i de control; acesat organizare pe baz de trei
magistrale este foarte uzual. Se poate organiza procesorul i cu dou sau chiar cu o singur magistral, numai
c pentru aceste organizri apar probleme de transferuri, deci administrarea accesurilor la magistral.
Organizarea microprocesorului ( att din punct de vedere didactic ct i din punctde vedere al proiectantului)
const din dou ci, CALEA DE DATE ( cea care efectueaz/execut operaiile) i CALEA DE CONTROL
(cea care pe baza codului operatiei OPCODE- instruciunii coordodoneaz execuia instruciunii).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


57

PC (Program Counter), numrtorul de adrese (pentru instruciuni). Adresa instruciunii (cuvntul coninut n
PC) se aplic la memoria extern, M[PC], de unde se citete instruciunea care se aduce (FETCH) pe magistale
i va fi depus n procesor, P, n registrul IR ( IRM[PC]); programul counter se incrementez automat (
PC PC+1) dup citirea instruciunii din memoriei, obinndu-se adresa instruciunii urmtoare (PC+1).
Subciclul FETCH este identic pentru toate instruciunile.
IR (Instruction Register), Registrul de instruciuni. Instruciunea adus n ciclul FETCH se depune n
procesor n registrul IR i se pstreaz n P ct timp instruciunea se execut. OPCODE-ul respectivei
instruciunii este trimis n Calea de Control, iar dup decodificarea acestuia Calea de Control genereaz toate
semnalele necesare n CALEA de DATE care vor comanda execuia instruciunii.
ALU (Arithmetic and Logic Unit). Unitatea Aritmetic i Logic efectuaz operaiile, conform
OPCODE-ului instruciunii, asupra operanzilor A i B pe durata subciclului EXECUTE. n urma operaiei
executate se genereaz un rezultat (i dac este cazul anumite condiii logice care se transmit cii de control);
rezultatul se nscrie ntr-un registru intern sau n memoria extern.
Bloc de registre, cuprinde n general un numr de registre egal cu puteri ale lui doi (8, 16, 32, 64, 128), dublu
port pe ieire, unde se pstrez datele (operanii) nainte de efectuarea operaiei i rezultatul dup efectuarea
operaiei. Registrele sunt memoria intern a procesorului.
MAR (Memory Adress Register) Acest registru nu are un rol logic n organizarea P, ci doar o funcionalitate
electric, de fapt, este un buffer pentru semnalele din interiorul P ctre exteriorul acestuia n calea de aplicare a
adreselor la memoria extern.
MDR (Memory Data Register) este un buffer pentru semnalele de pe traseul transferrii datelor ntre procesor
i exterior i invers.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


58

1.7.4 Limbajul de asamblare


Limbajul de asamblare (assembly language) este un limbaj de nivel cobort care implementez o reprezentare
simbolic a instruciunilor cod main i a datelor n scopul programrii unui P. Aceast reprezentare
simbolic este definit de productorul P i se bazeaz pe mnemonice care specific instruciuni, registre, locaii
de memorie i alte caracteristici ale limbajului; evident c aceast reprezentare (limbajul de asamblare ) este
propriu unui anumit procesor, ceea ce nu asigur portabilitatea unui program scris n limbaj de asamblare de la
microprocesor la alt microprocesor (pentru c procesoarele nu au acelai limbaj main) spre deosebire de
programele scrise ntr-un limbaj de nivel nalt, care sunt idependente de procesor.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


59

Problema de rezolvat poate fi exprimat fie ntr-un limbaj de nivel nalt fie n limbaj de asamblare. Dac
programul surs respectiv este ntr-un limbaj de asamblare, se translateaz n program limbaj main (program
obiect) utiliznd un program denumit ASAMBLOR. Asamblarea este o operaie simpl deoarece se face o
mapare/aplicaie unu-la-unu ntre o instruciune din limbajul de asamblare i aceeai instruciune n cod main.
Deoarece aceast aplicaie este bijectiv exist i program DEZASAMBLOR care realizeaz aplicaia invers, de
pe mulimea codurilor binare (instruciunilor cod main) pe mulimea setului de instruciuni, adic de la o
instruciune n binar la o instruciune n limbaj de asamblare.
Dac programul surs este scris n limbaj de nivel nalt atunci se face o compilare care produce un program n
limbaj de asamblare ( cum este n figura urmtoare), apoi programul din limbaj de asamblare este asamblat i se
obine programul obiect, compilarea nu este o operaie bijectiv, de aceea nu exist decompliator. Fiecare
instruciune de nivel nalt, prin complilare genereaz mai multe instructiuni de asamblare. Exist compilatoare care
produc direct cod obiect fr faza intermediar de program n limbaj de asamblare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


60

1.7.5 Setul (parial) de instruciuni al procesorului MIPS (R2000)

Prin arhitectura unui microprocessor se nelege ceea ce vede un programator (utilizator) pentru scrierea
programelor n limbajul de asamblare al microprocesorului sau un scriitor de compilator pentru translatarea
programelor de nivel nalt n limbajul de asamblare al microprocesorului: elementele care definesc arhitectura
sunt:
setul de instruciuni de asamblare, ISA (Instruction Set Architecture);
tipizarea datelor utilizate;
banca de register interne ale procesorului;
structurare logic a memoriei.

Structurarea logic a memoriei pentru MIPS este dat n figura urmtoare.

Segmentul de memorie de adrese 0- 4M este rezervat sistemului de operare.


Segmentul de memorie de adrese 4- 256M, rezervat pentru programele n binar (obiect)care
se ruleaz pe P, este referit ca segment TEXT; acest segment este adresat cu registrul program counter, PC.
Segmentul de memorie de adrese 1000 000H este alocat pentru datele stocate i generate n program,
referit ca segment DATE; adresa din acest segment se construiete pe baza registrului $r28,
referit ca global pointer.
STIVA (soft, realizat n memorie) a programului este plasat la partea superioar a adreselor de memorie.
Baza stivei este fixat prin registrul $r30, denumit frame pointer, iar vrful stivei se adreseaz cu registrul $r29,
referit ca stack pointer. Deoarece stiva crete n jos iar datele cresc n sus, atenie ca stiva s nu intre n zona
de date (sau zona dinamic de date) iar datele s nu intre n stiv (aceast verificare permanent este sarcina
programatorului).

Conveniile pentru asamblor n alocarea registrelor sunt:


$r0 ($zero) este cablat la zero, nu poate fi nscris de programator ci doar pentru citirea constantei zero.
$r1 ($at) este rezervat pentru operaiile efectuate de programul asamblor, de exemplu pentru realizarea de
pseudoinstruciuni.
$r2 ,$r3 ($v0,$v1) sunt rezervate pentru stocarea valorilor rezultatelor unei subrutine i apoi transmiterea
lor programului principal (apelant).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


61

$r4 ,$r5,$r6 ,$r7 ($a0,$a1,$a2,$a3) sunt utilizate pentru transmiterea parametrilor/argumentelor din programul
apelant (Caller) la programul apelat (Callee), de exemplu subrutin. Dac se transmit mai mult de patru
parametri atunci pe lng cele patru registre n plus se utilizeaz i transmiterea prin stiv.
$r8 ,$r9,$r10 ,$r11 $r12 ,$r13,$r14 ,$r15,$r24 ,$r25 ($t0,$t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9), zece registre temporare.
Aceste registre pot fi utilizate de programul apelat fr nici o restricie, pentru c coninutul lor a fost
salvat de programul apelant (Caller saved registers) nainte ca procesorul s ruleze programul apelat.
$r16 ,$r17,$r18 ,$r19, $r20 ,$r21,$r22 ,$r23 ($s0,$s1,$s2,$s3,$s4,$s5,$s6,$s7) opt registre temporar salvate. n
aceste registre programul apelant are valori care sunt necesare i dup rentoarecrea din
programul apelat, deci trebuiesc protejate de ctre apelant . Dac programul apelat necesit i utilizarea
acestor registre, trebuie nti s le salveze (Callee saved registrer), iar dup utilizare s refac coninutul
lor nct la rentoarcere n programul apelant acesta s le poat utiliza cu valoarile de dinainte de apelare
nemodificate.
$r26 ($k0), registru rezervat pentru utilizare numai de ctre nucleul Sistemului de Operare.
$r27 ($k1), registru rezervat pentru utilizare numai de ctre nucleul Sistemului de Operare.
$r28 ($gp), pointer global la segmentul DATA; se pot adresa date construind adresa prin adunare la $gp
( ca registru de baz) un deplasament.
$r29 ($sp), stack pointer, indic vrful stivei alocate programului care ruleaz ( stiva este construit in
soft, deci trebuie permanet verificat ca stiva care crete n jos s nu intre n segmentul dinamic DATA
$r30 ($fp), frame pointer, fixez baza segmentului de adrese alocate pentru stiv.
$r31 ($ra), stocheaz adresa de rentoarcere dintr-o subrutin, Exemplu: la apelarea unei subrutine prin
instruciunea, jal sub, plasat la adresa A se salveaz n $r31 adresa urmtoare (de rentoarcere, A+4);
se efectueaz microoperaiile PC sub; $ra (A+4). Dup terminarea subrutinei prin instruciunea
jr $ra se realizeaz rentoarcere la adresa din programul apelant, A+4 (PC $ra).
.
Conveniile fixate sunt necesare pentru a realiza programe n limbaj de asamblare portabile, cnd sunt scrise de
diferii programatori sau pentru a scrie pri de programe compatibile n cadrul unei echipe de programatori

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


62

Setul (redus) de instruciuni ale microprocesorului MIPS (R2000)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


63

Formatul unor instruciuni din setul microprocesorului MIPS (R2000)

n contiunare sunt prezentate opt exemple de programe scrise n limbajul de asamblare pentru microprocesorul
MIPS.
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
64

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


65

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


66

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


67

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


68

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


69

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


70

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


71

1.8 ETAPELE N REALIZAREA UNUI PROGRAM EXECUTABIL

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


72

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


73

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


74

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


75

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


76

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


77

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


78

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


79

CAP 2.

ARHITECTURA SETULUI DE INSTRUCIUNI,


ISA ( INSTRUCTION SET ARCHITECTURE)

2.1 COMPONENTELE (ARHITECTURALE ALE) MICROPROCESORULUI

ARHITECTURA refer acele atribute ale P care sunt vizibile (imaginea) de ctre programator (n limbaj de
asamblare) sau de ctre scriitorul de compilator; adic acele atribute care au un impact direct asupra execuiei
logice a programului. Atributele arhitecturale sunt:
setul de instruciuni i contextul de utilizare a acestora;
modurile de adresare i organizarea registrelor;
structurarea datelor (pe cuvinte) i structurarea cuvintelor folosite de calculator;
logica de accesare a memoriei;
modaliti de accesare I/O.

ISA este interfaa ntre soft i hard!

Definii ale limbajului:


1. Un sistem de simboluri /semne de comunicare ntre pri (foarte general) .
2. O mulime finit sau infinit de iruri, definite pe un alfabet (), (matematic).
3. Un sistem de reguli, simboluri i cuvinte speciale utilizate pentru construcia unui program (informatic, limbaj
de programare).
(Un limbaj, ca orice sistem de semne este dotat cu trei niveluri: sintactic, semantic i pragmatic)

Instruciunea descrierea unei aciuni a procesorului cu ajutorul unui limbaj de programare cu


urmtoarea sintax
i : OP D, S1, S2 ; D [S1] OP [S2]
unde:
i eticheta instruciunii
OP codul operaiei (OPCODE) efectuate de instruciune
D argumentul/operandul destinaie (data, registru, adres)
S1, S2 argumentele/operanzii surs (data, registru, adres)
Instruciune este celula pe care o procesaz un P, care sub forma unui cuvt binar are urmtoarea
structur/cpuri:

OPCODE, este cmpul obligatoriu n orice instruciune


OPERANZI/ADRESE, n acest cmp se specific operazii surs i operandul rezultat; n locul operanzilor
se poate specifica locul, ADRESA) unde sunt plasi acetia (acest cmp nu este obligatoriu n formatul
instruciunii, exist instruciuni care nu au operanzi, de exemplu NOP- No Operation, nici o operaie).
ADRESA INSTRUCIUNII URMTOARE, este cmpul care conine informaia despre modul cum se
realizeaz secvenialitate, adic unde se afl instruciunea urmtoare. Informaia const n adresa
instruciunii urmtoare, adres care se nscrie n PC, PC PC +k ; unde k este incrementul, n numr de
adrese de memorie, de exemplu 1, 4, 8, la instruciunea urmtoare sau PC +k este o adres fixat (sau

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


80

calculat) la o alt instruciune din program sub forma unui salt necondiionat (jump) sau condiionat
(branch). Uneori, acest cmp poate lipsi din formatul unor instruciunii, deoarece adresa instruciunii
urmtoare este implicit se obine din adresa instruciunii prezente plus un increment fix (+1, +4, +8).
Regula de adresare corect este: adresa n memorie modulo k = 0.

Concepte. P fiind o main matematic, arhitectura sa se bazeaz pe concepte din matematic


n matematic transpuse n arhitectura P
1. Completitudinea Completitudinea
2. Regularitatea Ortogonalitatea

COMPLETITUDINEA. Alegerea setului de instruciun pentru un P trebuie realizat nct s


satisfac toate aplicaiile care vor rula pe procesor i s genereze un cod optim. Aceast aseriune ar duce la un
numr foarte mare de instruciuni/operatori n setul de instruciuni (ISA); deci se impune eliminarea unora i
reinerea altora innd cont de urmtoarele trei criterii de alegere:
1. frecvena de utilizare a respectivei instruciuni n viitoarele aplicaii;
2. eficiena instruciunii n utilizare (n scrierea programelor);
3. costul implementrii instruciunii n ISA (suprafaa de Si consumat pentru realizarea circuisticii necesare
instruciunii respective).

Prin simulare pe programe de test (benchmark) se poate determina frecvena medie de utilizare a fiecrei
instruciuni din ISA, acest frecven de utilizare , de exemplu, este redat n tabelele urmtoare

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


81

ORTOGONALITATEA. Fiecare instruciune din ISA poate opera cu orice tip de dat, aceasta
accesat prin oricare mod de adresare, coninut n oricare registru, locaie de memorie sau I/O. O arhitectur
perfect ortogonal ar impune costuri de realizare ridicate , astfel c arhitecturile existente doar se apropie de o
ortogonalitate perfect.
Un ISA reuit se msoar prin numrul de procesoare relizate/vndute n arhitectura respectiv i printr-o
longevitate de cel puin 10-15 ani ( IBM -360 (1964), INTEL 80X86 (1978); IA -64 (1999))

La ora actual urmtoarele patru ISA sunt dominante: x86 (Intel, AMD), PowerPC ( Apple, IBM and Motorola),
MIPS (Silicon graphics,MIPS Computer Systems, Siemens-NixdorfAcer, Digital Equipment Corporation, NEC) i
ARM (ARM Holdings).

Evoluia tipurilor de arhitecturi de P :


CISC (Complex Instruction Set Computer), pornind din anii 60
RISC ( Reduced Instruction Set Computer), pornind la nceputul anillor 80
EPIC ( Explicitly Parallel Instructin Computer) pornind la nceputul anillor 2000
CPM (Cip Multiprocessors), dup 2005

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


82

ORGANIZAREA refer acele atribute legate de structurarea de nivel nalt a microprocesorulului n pri
componente. Atributele structurale sunt:
structurare n CALEA DE DATE i CALEA DE CONTROL;
organizarea din calea de date (ALU, shifter, registre, magistrale, etape de pipe);
organizarea din calea de control (cablat, microprogramat, nanoprogramat);
structurarea circuitelor acces la memorie i cache, i realizarea maprii ntre spaiul real i virtual;
structurarea circuitelor de acces la I/O;
structurarea sistemului de ntreruperi;
suport arhitectural pentru compilare i sistemul de operare.
Spre deosebire de atributele arhitecturale care sunt vizibile pentru programator, atributele de organizare sunt
transparente pentru programator.
Oraganizarea P urmrete s estompeze gap-ul fundamental, adic: diferena dintre timpul de acces
la memoria principal i timpul de acces n calea de date; raportul ntre aceti timpi de acces (accesul la memorie/
accesul n calea de date) este mult supraunitar. n scopul estomprii acestor mari diferene organizarea memoriei se
realizez pe niveluri i se mrete numrul de etape de procesare n pipe.

MICROARHITECTURA refer proiectarea detaliat a circuisticii i implemntarea ntr-o anumit tehnologie.


Dezvoltrile tehnologice. Legea lui (Gordon )Moore 1965 Numrul de tranzistoare integrate pe unitatea
de suprafa ntr-un circuit integrat se dubleaz n fiecare an. Dup anii 90 aceast cretere, dup puterile lui
doi, s-a diminuat, ajungnd la dublri la intervale de 1,5 ani sau chiar mai mult. Se prevede sfritul legii lui
Moore prin 2018-2020, adic creterea densitii de integrare s nceteze pe baza tehnologiei CMOS ( ajungnd la
o lungime de canal de 6nm, respectiv la o tehnologie de integrare de 16-21 nm).
1. Tehnologia circuitelor integrate. Creterea anual numrului de componente pe chip este de 60-70% ,
frecvena de ceas crete cu un procent mai mic, de fapt ncepnd cu 2005 frecven de ceas nu mai prea depete
3,5 GHz din cauza puterii disipate foarte mari (Pd = CV f).
Pentru memorile DRAM densitatea de integrare are aceeai cretere pe cnd viteza de acces crete doar cam cu
30% n zece ani.
Tehnologia discurilor magnetice permite o cvadriplare a densitii de mpachetare cam la 3 ani, dar cu o cretere
a vitezei de acces de 30% n zece ani.
Instrumentle software de proiectare, tehnicile EDA (Electonic Design Automation). Creterea
posibilitilor oferite de instrumentele software de proiectare este sub posibilitile oferite de tehnologia de
proiectare
Un procesor se proiectez pentru o tehnologie care va fi state-of- the art peste 1-2ani!
Actual, divizarea pe cele trei componente (arhitectura setului de instruciuni, organizarea/structurarea,
microarhitectura) se pstrez, dar tot mai mult prin arhitectura microprocesorului se nelege toate cele trei
componente mpreun. Aceast extensie a noiunii de arhitectur de la (iniiala) Arhitectura Setului de Instruciuni
se explic prin faptul c tot mai mult elaborarea ISA necesit o cunoatere i participare i la elaborarea
organizrii i a microarhitecturii. Astfel c, actual, arhitectura microprocesorului acoper toate cele trei
componente
Abordarea structurat a proiectrii microprocesorului

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


83

2.2 METRICI DE PERFORMAN PENTRU MICROPROCESSOR

Performan (implicit!) pentru un P este viteza de calcul, pentru c utilizatorul ar dori ca fiecare din problemele
sale s fie rezolvate instantaneu. Evident c exist i alte caracteristici, nafar de vitez, care trebuie s fie
cuantificate.
O prim metric pentru viteza unui microprocesor ar putea fi frecvena de ceas, deoarece fiecare P
posed un generator de semnal de ceas , iar fiecare instruciune este procesat pe durata unui anumit numr de
tacte de ceas ( n funcie de complexitatea instruciunii).

Procesorul MIPS are instruciuni care sunt procesate pe un numr fix de tacte de ceas ( instruciunea este
constituit din cinci etape ( IF-Instructin Fetch; ID Instruction Decode; EX Execute; MEM Memory
(acces); WB - Write back (nscrie rezultatul)).

Mai adecvat, dect frecvena de ceas , pentru msurarea vitezei P este numrul de tacte pentru procesarea
unei instruciuni CPI (Cycle-Per-Instruction)
Numarul de tacte de ceas consumate pe program nr. tacte
CPI instructiune
Numarul de instructiuni ale programulu i
Pentru cazul procesrii de tip pipeline i accesul la memorie (cache) se face ntr-un singur tact (iar miss rate este
zero9 se ajunge la CPI = 1, adic un tact pe instruciune. La mainile superscalare CPI poate scdea sub valoare
unu, cnd este mai potrivit s se utilizeze valoarea reciproc a lui CPI, IPC = 1/ CPI, adic numrul de
instruciuni procesate pe un tact (Instruction Per Cycle).
O alt metric este timpul consumat de CPU pentru rularea unui program, TCPU
secunde instructiuni tacte secunde
TCPU Nr x CPI x Tclk
program program instructiune tact
iar cnd procesorul are instruciuni cu lungimi diferite de ciclu instruciune, deci valori diferitev pentru CPIi
(i- tipul de instruciune) relaia anterioar devine

TCPU CPIi N r de instructiuni i Tclk


i

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


84

Pe baza relaiei anterioare poate se poate analiza cum timpul de procesare (TCPU ) poate fi inflenat de deciziile
arhitecturale
Caracteristica/
Parametru Este influenat de :
Nr de instruciuni Arhitectura Setului de Instruciuni (ISA), Compilator
CPI Arhitectura Setului de Instruciuni (ISA), Organizarea P
Tclk Tehnologia de implementare, Organizarea P

MIPS (Million- Instructions-Per-Second)

Nr instr 10-6 instr 10-6 1 Nr de instr 10-6


MIPS Nr program secunde
TCPU
secunde T MIPS
CPU
program
sau
MIPS
Nr de instr/program

Nr de instr/program 106 106 f MHz
TCPU Nr de instr/program CPI TCLK CPI TCLK CPI

MIPS-ul este o metric intuitiv ( dar de utilitate comercial), un procesor care relizeaz un MIPS mai ridicat
apare ca fiind mai rapid, dar nu este o metric profesional.
MIPS-ul este dependant de setul de instruciuni al procesorului, dar pentru comparaie ntre procesoare nu se
poate utiliza deoarece procesoarle au seturi de instruciuni diferite.
Chiar pe acelai procesor valoarea MIPS nu este concludent deorece de la program la program proporia ntre
diferite tipuri de instruciuni se modific.

MFLOPS (Million-Floatingpoint-Operation-Per-Second)

MFLOPS
Nr de operatii n virgula flotanta 10-6 / program
TCPU / program

Aceast metric se aplic doar pentru programele care conin operaii n virgul flotant ( de exemplu,
compilatoarele nu conin).
n seturile de instruciuni ale microprocesoarelor nu exist aceleai instruciuni n virgul flotant ( dar
compararea microprocesoarelor se face prin numrul de instruciuni FP existente n program i nu la numrul de
operaii OP, unele operaii FP sunt simulate prin alte instruciuni).
BENCHMARK SUITS- pachete de programe de test. S-au elaborat pachete de programe de test SPEC (
Standard Performance Evaluation Corporation) special concepute pentru testarea: calculatoare, servere, embedded
systems.

Pentru un procesor care rulez doar o singur aplicaie (ar fi cazul unor embedded systems) se poate alege
procesorul care realizeaz TCPU cel mai scurt. Pentru microprocesoare de uz general pe care se ruleaz o
multitudine de tipuri de programe alegerea celui mai bun P este dificil de realizat, n concluzie un P de uz
general trebuie s fie proiectat nct s realizeze performae cvasi-optime pentru gam larg de tipuri de
programe.
Din punct de vedere al utilizatorului unui calculator este important ct de repede este executat programul su.
Dar acest timp depinde de muli factori din sistem ( memorie, I/O, sistem de operare) de modul cum sunt acetia
corelai i numai de performanele microprocesorului. De exemplu, acest timp de rulare pe calculator/sistem
depinde n primul rnd de modul cum nivelurile de memorie (cache, principal) pot asigura alimentarea
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
85

procesorului cu penalizri minime apoi depinde de: sistemul de operare ( care versiune de Windows sau Linux) de
compilator ( ct de bine acesta genereaz un cod optim) i de networking conditions ( dac acel calculator
partajeaz resursele I/O din reea).

Anyone can built a fast CPU. The trick is to build a fast system
Seymour Cray (considered the father of the supercomputer)

EXEMPLUL 2.1 Se consider dou calculatoare A i B care au acelai set de instruciuni. Calculatorul A are
un ceas cu perioada TCLKA = 250ps (fCLKA= 4GHz) i CPIA= 2 pentru un anumit program iar calculatorul B pentru
acelai program are TCLKB = 500ps (fCLKA= 2GHz) i CPIA= 1,2. Care din calculatoare ruleaz mai repede acel
program ( care are numrul de instruciuni, Nr. instr) i de cte ori.
Soluie.

TCPUA = Nr. instr CPIA TCLKA= Nr. instr 2 250 ps


TCPUB = Nr. instr CPIB TCLKB= Nr. instr 1,2 500 ps

CPUperformante A TCPU B Nr. instr 1,2 500ps 600


1,2
CPUperformate B TCPU A Nr.instr 2 250ps 500

Calculatorul A este de 1,2 ori mai rapid dect calculatorul B pentru acest program.

2.3 SPAIUL DE ADRESARE.

Fiecare element din sistem, ca s poat fi adresat de P, trebuie s aib o adres (un element fr adres nu exist
n sistem!). Totalitatea adreselor pe care le acceseaz P n sistem constitue spaiul de adresare, adic toatalitatea
adreselor memoriei i adreselor componentelor I/O. Dup modul cum se aloc adresele componentelor de I/O n
raport cu cele ale memoriei exist trei variante de adresare n sistem:
1. Adresarea I/O n spaiul memoriei, se realizeaz cnd capacitatea de adresare a memoriei este 2 n , n fiind
numrul de bii n cuvtul de adres, A = An -1An - 2 ...A1A0 , iar un numr din aceste adrese sau un segment din
spaiul de adresare este alocat pentru componentele de I/O. Avantajul acestui mod de alocare a adreselor n
sistem const n faptul c toate instruciunile din setul de instruciuni care lucreaz cu memoria pot fi
utilizate i pentru lucru cu I/O, dar apare i dezavantajul, minor, c prin aceast alocare se consum o parte
din adresele utilizate de memorie.
2. Adresarea I/O n spaiul izolat. Prin aceast modalitate de alocare a adreselor spaiul de adresare pentru
memori este de 2n , iar pentru I/O se creaz un subspaiu separat de cel al memoriei. Pentru componentele I/O
nu se mai utilizeaz instruciunile care lucreaz cu memoria ci n setul de instruciuni exist instruciuni
speciale pentru lucru cu I/O; dou dintre cele mai uzuale de intruciuni speciale pentru I/O sunt:
in porti ; P citete coninutul portului I/O de adres porti ( IN 37 ; citete portul de adres 37)
out portk ; P nscrie n portului I/O de adres porti (OUT 25 ; inscrie n portul de adres 25)
Numrul de adrese din subsetul de sdrese I/O este mult mai mic dect adresele pentru memorie ( 2n ).

3. Adresare I/O combinat. Pentru I/O se pot utiliza att modul/instruciunile de lucru cu memoria ct i
instruciunile dedicate numai pentru I/O.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


86

EXEMPLUL 2.2. S se implementeze un modul de memorie, adresabil cu un cuvnt de 16 bii,


A= An -1An - 2 ...A1A0 ( spaiul de adresare 216 16K ) care cuprinde:
1. o component ROM format din patru circuite de capacitate 4KB, ( 4x4KB); ROM#8, ROM#7, ROM#6,
ROM#5.
2. o component RAM format din patru circuite de capacitate 1KB, ( 4x1KB); RAM#4, RAM#3, RAM#2,
RAM#1.
3. dou porturi PORT1 (input pot), PORT2 (output port) pentru care se aloc n spaiul memoriei un segment
de 4K adrese.
Soluie.
ROM. Fiecare chip ROM din modul utilizeaz, n comun, pentru decodificarea celor 16K adrese, biii
A11 - A0 , (4K 212 ) iar biii superiori A15 - A12 vor fi utilizai pentru selectarea celor patru circuite ROM ( dintre
acetia vor fi diferii, de la circuit la circuit, doar biii A13 i A12 ). Segmentul de adrese care este repartizat pentru
ROM este de la 48K ( C000H) la 64K (FFFFH).
RAM. Fiecare chip RAM utilizeaz, n comun, pentru decodificarea celor 4K adrese, biii A9 - A0 (1K 210 )
iar biii superiori A15 - A10 vor fi utilizai pentru selectarea celor patru circuite RAM; de fapt vor fi diferii, de la
circuit la circuit, numai biii A11 i A10 . Segmentul de adrese de 4K este de la 0K (0000H) la 4K (0FFFH).
I/O. Se aloc un segment de 4K adrese ( A11 - A0 ) ; cu biii superiori A15 - A12 se pot selecta 16 segmente de
4K adrese. Se alege pentru I/O segmentul de 4K selectabil cu A15A14A13A12 1000 , de la 32K la 36 K, adresele
din acest segment cu A2 = 0 vor selecta portul de ieire (PORT2), iar adresele cu A2 = 1 vor selecta portul de
intrare (PORT1).
Pentru selectare se vor utiliza circuite decodificatoare DCD3:8, 74XX138.
Mapa memoriei pentru modulul de memorie este

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


87

Selectare ROM.
Selectarea unei adrese n fiecare circuit ROM se realizeaz cu biii A11 - A0
Selectarea fiecrui circuit ROM se realizeaz cu biii A15A14A13A12 11xx , subsegmentele de adrese sunt:
ROM#8 (F000H, FFFFH), ROM#7 (E000H,EFFFH), ROM#6 (D000H,DFFFH,
ROM#5 (C000H,CFFFH).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


88

Selectare porturi
Selectare port de intrare (citire), PORT1, se realizeaz cu A15 - A0 = 1000 xxxx xxxx xx1xx
Selectare port de ieire (nscriere), PORT2, se realizeaz cu A15 - A0 = 1000 xxxx xxxx xx0xx

Selectare RAM
Selectarea unei adrese n fiecare circuit RAM se realizeaz cu biii A9 - A0 (1K adrese)
Selectarea fiecrui circuit RAM se realizeaz cu biii A15A14A13A12A11A10 0000xx , subsegmentele de
adrese sunt: RAM#4 (0C00H, 0FFFH), RAM#3 (0800H, 0BFFH), RAM#2 (0400H,07FFH),
RAM#1 (0000H, 03FFH).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
89

Mapa spaiului de adresare asignat pentru modulul de memorie

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


90

2.4 MODURI DE ADRESARE

Instruciunea adus n P, din segmental text al memoriei, n etapa de FETCH, este decodificat i n etapele
urmtoare din subciclul EXECUTE va fi procesat conform codului operaiei, OPCODE. Majoritatea
instruciunilor pentru a fi procesate necesit operanzi, operanzi care se gsesc stocai n registre , locaii de
memorie sau n porturile I/O; deci este necesar ca acesti operanzi s fie adui n procesor (calea de date) pentru
efectuarea procesrii. Modalitatea de identificare a locului unde sunt plasai operanzii, citirea lor lor i aducerea
lor n calea de date pentru procesare este referit prin MOD DE ADRESARE. Informaia necesar pentru a realiza
modul de adresare pentru o instruciune trebuie s fie coninut, explicit sau implicit, n instruciunea reapectiv.
Aducerea unui oprerand plasat n banca de registre, n raport cu un operand plasat n memorie, prezint avantajul
unui timp de acces de pn la un ordin de mirime mai mic i, n plus, n corpul instruciunii un subcmp de
lungime scurt (un numr redus de bii), pentru specificarea numrului de registru de accesat. Pentru accesarea
unui registru dintr-o banc de 2 n registre este necesar un subcmp de n bii n corpul instruciunii, pe cnd pentru
accesarea unei locaii de memorie dintr-un spaiu de memorie de 2n1 adrese n corpul instruciunii subcmpul de
specificare are lungimea de n1 bii ( n1 >> n), de exemplu n1 = 32 sau 64bii (n general, neexistnd un astfel de
numr de bii disponibil n corpul instruciunii)
Denumirea de registru general, GRP (General Purpose Register) indic fapul c un registru poate fi utolilizat
att pentru pstrarea unui operand ct i pentru pstrarea unei adrese necesare accesrii unei date (pointer) din
memorie. Unele procesoare au anumite registre dedicate pentru pointeri (de exemplu, la MIPS: $gp = $28-
pointer pentru segmentul de date; $sp= $29- pointerul pentru indicarea vrfului stivei; $fp= $30- pointerul pentru
indicarea bazei stivei).
n contiunare se vor prezenta modurile de adresare fundametale pentru instruciunile unui P.

1. ADRESAREA IMEDIAT ( sau literal) Adresa operandului este specificat (imediat) n corpul
instruciunii, de exemplu:
Add $R4, #3 ; $R4$R4+3, instruciune conine (imediat) al doilea operand (3) n corpul su

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


91

2. ADRESAREA DIRECT. La acest mod de adresare, adresa operandului (adresa efectiv, AE) se afl n
corpul instruciunii fie sub forma unui cuvnt adres la memorie, fie sub forma unui cuvnt numr registru din
banca de registre (adres de registru), de unde referirea repectiv adresare direct la memorie sau adresare direct
la registru. Adresarea direct la registru este utililizat cnd operandul cutat este deja nscris n registru , iar cea
la memorie cnd se acceseaz date statice; prima variant are avantajul unei execuii rapide i o utilizare mai
eficient a cmpului instruciunii.

3. ADRESAREA INDIRECT. Prin modul de adresare indirect, n corpul instruciunii se specific o adres
intermediar, AI; apoi, la punctual indicat de adresa intermediar se gsete nscris adresa efectiv AE, se extrage
adresa efectiv (ca pointer) i se citete, de la locul indicat de AE, operandul necesar n instruciune. Exist dou
variante de adresare indirect:
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
92

3 adresarea indirect prin memorie cnd adresa AI indic o locoaie de memorie al crui coninut este AE, apoi se
citete adresa efectiv i de la locaia de adres AE se extrage operandul, M[AE];
3 adresarea indirect prin registru cnd adresa AI indic un numr de registru al crui coninut este AE, apoi
folosind coninutul registrului ca pointer se citete locaia de memorie de unde se extrage operandul M[AE];

Adresarea indirect este recomandat pentru cazurile cnd adreasa efectiv, AE, de stocare a operandului nu se
cunoate n momentul compilrii programului sau se modific pe durata rulrii programului. n ambele cazuri
atunci cnd se cunoate valoarea penntru AE aceasta se nscrie n punctual indicat de AI, ceea ce imprim
programului o mare flexibilitate. De exemplu, pentru accesul unor date successive se nscrie adresa efectiv, AE
(prin incrementare sau decrementare) n punctul indicat de adreasa intermediar, AI.
Adresarea indirect poate fi extins prin mrirea numrului de indirectri ( indirectare multipl), dar pentru
aceasta instruciunea necesit n corpul su un cmp (unu sau mai muli bii) n care se specific numrul de
indirectri. Lanul de indirectri se realizeaz: cu adresa AI1, din corpul instruciunii, se acceseaz primul punct
intremediar de unde se citete a dou adres intremediar, AI2, cu care se acceseaz al doilea punct
intermediar de unde se citete a treia adres intremediar, AI3, . a. m. d., citirea din ultimul punct intermediar
este AE, cu care se extrage apoi operandul necesar n instruciune.
Din analiza aflrii adresei effective, de la adresarea indirect, se deduce c aceasta se obine printr-un proces de
calcul, acest proces de calcul este o simpl sau mulipl indirectare. Pentru modurile de adresare urmtoare,
complexitatea calculului adresei efective crete necesitnd uneori o unitate de calcul separat de cea care
efectuez operaia conform opcode-ului din instruciune, unitate de calcul dedicat doar pentru calculul necesar
modului de adresare.

4. ADRESAREA RELATIV. Adresa efectiv, AE, se obine prin sumarea la o adres de referin (uzual
adresa coninut n PC) a unei valori specificat ca un imediat n corpul instruciunii denumit, n general, ca
DEPLASAMENT (cnd este un numr fr semn) sau denumit OFFSET (cnd este un numr cu semn exprimat
n complement fa de 2). Cu un offset de lungie (n+1) bii se poate acoperi o distan (salt) de adrese fa de
adresa coninut n PC de ( 2n 1 ) adrese nainte [PC+ ( 2n 1 )] sau de 2 n napoi [PC- 2 n ]. Evident c
implementarea modului de adresare relativ cu salt (4) necesit un sumator pentru calculul adresei effective.
O alt variant de adresare relativ, care se poate implementa fr existena unui sumator pentru calculul adresei
efective, este adresarea relativ n pagin (4). La aceast variant deplasamentul cu lungimea de (n+1) bii nu se
sumez la cuvntul adres din PC ci va substitui ultimii (n+1) bii din cuvntul adres coniunt n PC (segmentul
de adrese care corespunde celor (n+1) bii l referim ca pagin). Rezult c adresa efectiv poate fi doar pe
lungimea unei pagini (de adrese) fa de PC, dar n schimb implementarea este simpl (tergerea ultimilor (n+1)
bii din cuvntul existent n PC i realizarea unei operaii SAU, PC DEPLASAMEN T ).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


93

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


94

5. ADRESAREA INDEXAT sau ADRESAREA (cu deplasare) LA REGISTRUL DE BAZ

Prin acest mod de adresare, adresa efectiv, AE, se obine prin sumarea coninutului unui registru intern, Ri,
selectat printr-un cmp al instruciunii, cu coniuntul unui cmp DEPLASAMENT coninut tot n corpul
instruciunii, AE = Ri + Depl; n aceast sum unul din termeni este considerat ca o adres de memorie iar cellalt
ca un increment. Dac Depl este considerat ca o valoare (fix) de adres iar Ri ca un increment modul de adresare
(5) se refer ca adresare indexat (valoarea indexului este coninut n Ri). n cazul cnd Depl este considerat ca un
increment iar valoarea registrului ca o adres de baz, Rb, modul de adresare (5) este referit ca adresare la
(registrul de) baz, AE = Rb + Depl.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


95

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


96

6. ADRESARE LA STIV.

STIVA este o structur de date care poate fi implementat ntr-un segment de memorie (referit ca stiv soft sau
stiv n memorie) sau pe un grup de registre (referit stiv hard) pentru stocarea temporar a datelor/adreselor cu
o funcionare de tip LIFO (Last- In-First-Out), iar funcionarea sa se bazez pe dou operaii de baz: push
(nscrie n stiv), pop (citete din stiv), crora le corespunde n setul de instruciuni, instruciunea Push i
instruciunea Pop.
Adresarea stivei implementat n memorie se face printr-un pointer dedicat STACK POINTER, SP. Prin
instruciunea PUSH se nscrie data n vrful stivei, ascunznd toate datele nscrise deja n stiv sau se
iniializeaz stiva dac ea este goal. Prin instruciunea POP se extrage data existent din vrful stivei, iar data de
sub vrful stivei devine noua data din vrful stivei. Explicaiile urmtoare vor descrie microoperaiile
corespunztoare instruciunilor Push i Pop pentru o stiv construit n memorie. Stiva n memorie, uzual, crete n
jos deoarece segmentul alocat pentru stiv este zona de adrese superioare din spaiul de adresare, baza stivei fiind
adresa ce mai mare ( adres coninut n registrul frame pointer, Fp ( $r30).
nscrierea n stiv (PUSH), stiva crete n jos
Push $R ; SP (SP-1), M[SP] $R, nscrie coninutul unui registru n vrful stiv
sau
Push Adresa ; SP (SP-1), M[SP] M[Adres], nscrie coninutul unei locaii n vrful stiv

Citire din stiv (Pop), stiva crete n jos


Pop $R ; $R M[SP], SP (SP+1), nscrie vrful stivei ntr-un registru
sau
Pop Adresa ; M[Adres] M[SP], SP (SP+1), nscrie vrful stivei ntr-o locaie de memorie

n unele ISA, uneori, exist n afar de incremenetarea i decrementarea automat respectiv de la operaile Pop
i Push i instruciuni pentru modificarea coninutului pointerului de stiv, SP, de exemplu
Incr SP ; SP (SP+1), incrementez adresa vrfului stivei
Dcr SP ; SP (SP-1), decrementez adresa vrfului stivei
Load SP, DATA ; SP DATA, ncarc o adres pentru vrful stivei

Pentru o operaie unar (un singur operand) se extrage (POP) respectivul operand, care se afl n vrful stivei,
M[SP], se execut operaia ( de exemplu: complementare, shiftare) i rezultatul se nscrie (PUSH) tot n vrful
stivei, M[SP].
Pentru operaii binare (doi operanzi) se extrage (POP) primul operand din vrful stivei, M[SP], se extrage al
doilea de la adresa de sub vrful stivei, M[SP+1], se execut operaia, iar rezultatul se nscrie n locul celui de al
doilea operand (adres, SP SP+1, care acum este vrful stivei).

La procesorul MIPS stiva se construiete n memorie (stiv soft) si este plast n segmentul superior al spaiului
de adresare; baza stivei se specific cu pointerul FP ($30), iar vrful stivei este indicat prin pointerul SP ($29).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


97

Pentru uurina realizrii operaiilor cu stiva, notaia normal (infix) a expresiilor se transform n notaia postfix
(polonez). Pentru o expresie scris n notaie postfix, utilizat pentru lucru cu stiva, se procedeaz n felul
urmtor:
a) cnd se ntlnete un opernad , la parcurgrea de la stnga la dreapta a expresiei postfix, acel oparand se
introduce n vrful stivei (PUSH);
b) cnd se ntlnete un operator, se extrag (POP) cei doi operanzi din vrful stivei iar rezultatul se nscrie
(PUSH) n vrful stivei.
Exemplu. Expresia n infix a + (bxc) are n postfix forma abcx+, pentru care prin parcurgere de la stnga la dreapta
succesiunea de operaii pe stiv sunt reprezentate n figura urmtoare

Cu modurile de adresare przentate pn acum se pot face combinaii, astfel se pot obine numeroase variante
de moduri de adresare. Arhitecturile CISC (x86) prezint zeci de moduri de adresare, ceea ce nu este cazul la
arhitecturile RISC care au doar cteva moduri de adresare. n continuare, se prezint trei moduri de adresare care
sunt combinaii ale modurilor de adresare prezentate anterior.
7. ADRESAREA LA BAZ INDEXAT. Acest mod de adresare combin modul de adresare la (registrul de)
baz (5) cu modul de adresare indexat (5). Evident c, pentru acest mod de adresare n corpul instruciunii
trebuie s se specifice un registru de baz (Rb) i un deplasament (Depl) pentru a se obine deplasarea la baz (Rb
+Depl), apoi mai este necesar un cmp n care s se specifice registrul index (Ri) pentru realizarea adresrii
indexate [(Rb +Depl)+ Ri].

8. ADRESAREA RELATIV INDEXAT. Prin acest mod de adresare se combin modul de adresare
relativ, la PC (4), cu modul de adresare indexat (5). n corpul instruciunii trebuie s existe in subcmp pentru
deplasament, Depl, care sumat cu coninutul PC generez modul de adresare relativ cu salt (Depl + PC) ; de
asemenea, trebuie s existe un subcmp pentru specificarea registrului index, Ri, i apoi prin indexare se obine
adresa efectiv, AE = (Depl + PC) + Ri .

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


98

9. ADRESARE INDIRECT CU INDEXARE. Acest mod de adresare este o combinare ntre adresarea
indrect (3) cu adresarea cu indexare (5). Pot fi dou varinate pentru aceast combinare: 1. adresarea indirect cu
preindexare cnd indexarea se aplic (nainte) pentru calculul adresei indirecte, AI = A +Ri; 2. adresarea
indirect cu post indexare cnd indexarea se aplic dup extragerea adresei indirecte, AE = M[A] +Ri.

Dintre modurile de adresare prezentate se poate observa c n construcia modului de adresare (aflarea valorii
adresei effective, AE) se pot distinge trei operaii (primitive de adresare):
1. Deplasarea (deplasament cu semn (offset) sau fr semn, Depl);
2. Indirectarea ( AE = M[AI]
3. Scalarea. Un registru, Ri (index) utilizat n calculul adresei efective poate fi scalat (nmulit) cu o valoare de
scalare fsc (valoare, n general, puteri ale lui 2, pentru ca prin index s poat fi accesate cuvinte care sunt
multiplu de 1, 2, 4, 16, 32 bytes), rezultnd valoarea de scalare, Ri fsc.
Existena a numeroase moduri de adresare la un P creaz posibilitate ca aceeai dat (operand) s poat fi
accesat/gsit n diferite variante, altfel spus se pot parcurge mai multe trasee prin memorie pentru a ajunge la
aceeai dat. O astfel de multitudine de trasee prin memorie pentru a ajunge la data cutat constituie o dificultate
( prin care traseu s ajung la dat?) pentru scriitorul de compilator, dar pe de alt parte aceast varietate poate
constitui soluii pentru diferite cazuri paticulare ( trick-uri n limbajul de asamblare). De exemplu:
un registru cu facilitatea de autoincrementare utilizat n modul de adresare indirect (3) poate simula
funcionarea numrtorului de instruciuni, PC;
instruciunile STORE i LOAD cu adresare indirect printr-un registru index, Ri, (3) cu posibilitatea de
autoincrementare/autodecrementare sunt similare cu instruciunile Pop respectiv Push, iar registru index Ri
emuleaz pointerul de stiv, SP.

La microprocesoarele CISC exist un repertoriu foarte larg, peste 20, de moduri de adresare, pe cnd la cele
bazate pe o arhitectur RISC , uzual, exist 4-5 moduri de adresare. Der exemplu, microprocesorul MIPS prezint
numai cinci moduri de adresare, prezentate n continuare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


99

2.5. TIPURI DE INSTRUCIUNI

Setul de instruciuni pentru un P se alege anticipnd spectrul de aplicaii, nct acestea s poat fi uor
programate. Un microprocesor specializat ( coprocesoarele pentru diferite funciuni, procesor de semnale, DSP)
are un set de instruciuni care sunt suport pentru anumite funciuni dedicate i care este diferit de cel al unui
procesor de utilitate general.
Cuvntul instruciune cu lungimea de n bii ar putea codifica 2 n aciuni ale P, ceea ce, n general, ar depi cu
mult necesarulul. Pentru mai multe motive (lejeritatea codificrii, atribuirea denumirii, uurina decodificrii,
limitri impuse lungimii, realizarea unei ortogonaliti) instruciunea se mparte n grupuri de bii (subcmpuri) pe
care se face o codificare local. Pe aceste subcmpuri se poate atribui o semnificaie individual fiecrui bit
(codificare liniar) sau semnificaia rezult din codul care utilizez mpreun toi biii din subcmpul respectiv.
Primul subcmp care trebuie s existe n oricare instruciune este cel care codific aciunea procesorului-
codul operaiei, OPCODE (OPeration CODE). Mnemonicul pentru acest cod al operaiei se alege printr-o
abreviaie a verbului aciunii asupra procesorului : deplasez move ; ncarc load ; adun add etc. Uneori
mnemonicul operaiei exprim i modul de adresare : addi sumare cu un oprand exprimat ca un imediat.
n funcie de efectul operaiei asupra datelor, instruciunile setului de instruciuni pot fi clasificate n:
1. Instruciuni de deplasare/ transfer a datelor
2. Instruciuni de transforamare a datelor
3. Instruciuni de control al programului
4. Instruciuni de control al procesorului
Acest clasificare ncerc s cuprind toate instruciunile procesorului, dar exist i combinaii de mai multe
operaii n aceeai instruciune; n general aceste combinaii genereaz instruciuni care sunt referite ca
5. Instruciuni de nivel nalt.
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
100

2.5.1 Instruciuni de deplasare/ transfer a datelor

Acest tip de instruciune realizeaz o deplasare de date ntre diferite componente ale sistemului (CPU, memorie,
I/O) sau n interiorul acestora. De regul, prin aceste instruciuni nu se modific coninutul sursei de unde se
citete informaia care se transfer. Se vor prezenta, generic, doar unele (posibile) din astfel de instruciuni de
deplasare/transfer.

Load ; Ri M[Adres].
Restore ; poate combina o succesiune de Load-uri dintr-o zon de memorie, M, ntr-un bloc de
registre, Rn, Rn M.
Store ; M[Adres] Ri
Save ; poate combina o succesiune de Store ntr-o zon de memorie dintr-un bloc de registre M Rn.
Push ; se nscrie n vrful stivei o valoare dintr-un registru sau dintr-o locaie de memorie.
Pop ; se extrage valoare coninut n vrful stivei i se transfer intr-un registru sau ntr-o locaie de
; memorie.
Move ; deplasez cuvinte de la un registru la altul, Ri Rj, sau de la o locaie de memorie la o alt
; locaie de memorie M[Adres1] M[Adres2]. Mai corect, denumirea ar fi de Copy deoarece
; coninutul sursei nu se modific.
Swap ; coniuturile a dou registre sunt schimbate ntre ele Ri Rj sau dou locaii de
; memorie M[Adres1] M[Adres2].
Exchange ; schimb coninuturile a mai multor registre ntre ele sau a mai multor locaii de memorie.

Input port ; transfer coninutul uni port de adres port ntr-un registru din banca de registre a
; procesorului, Ri port
Output port ;transfer coninutul unui registru din banca de registre ntr-un port de adresport,portRi.

Cnd sunt utilizate coprocesoare de intrat/ieire, procesorul master poate avea un grup restrns de intrare/ieire,
pentru c coprocesorul are el propriile intruciuni de transfer cu exteriorul. n general, instruciunile de
intrare/ieire ale procesorului master se pot limita la trei:
1. Start I/O ; asigneaz un program pentru coprocesorul I/O.
2. Test I/O ; permite procesorului master s testeze starea unui dispozitiv de I/O care este controlat de
; coprocesorul I/O.
3. Halt I/O ; permite masterului s opreasc o operaie I/O n orice moment.

Driverele de lucru cu perifericele, incluse n general n sistemul de operare, sunt programe/rutine care
realizeaz transferuri de date de la periferice la memorie i invers.
n general, operaiile de transfer de date sunt mari consumatoare de timp, n consecin se caut a se miminiza
ca durat i ca numr transferul de date cost mai mult dect procesarea

2.5.2. Instruciuni de transformare a datelor

Pot fi incluse n acest tip acele instruciuni care genereaz date noi n urma unor operaii asupra operanzilor.
Generic, unele din astfel de instruciuni (posibile) sunt prezentate n contiunuare.

ARITMETICE: Add, Subtract, Multiply, Division, Increment, Decrement, Negate, BCD adjust,
Modulo, Absolut value, Normalize etc.

LOGICE: AND, OR, XOR, NOT, SHIFT/ROTATE, SET, RESET, CLEAR etc
AND poate fi privit ca un operator de mascare pentru resetare (ntr-un cuvnt poate nscrie bii n
valoarea 0, 0a = 0, sau s nu le modifice valoarea, 1 a = a).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
101

OR poate fi privit ca un operator de mascare pentru setare (ntr-un cuvnt poate nscrie bii n
valoarea 1, 1 a = 1, sau s nu le modifice valoarea, 0 a = a).
XOR poate fi privit ca un operator de complementare (ntr-un cuvnt poate nscrie bii n valoarea
complementat, 1 a = a , sau s nu le modifice valoarea, 0 a = a).

INSTRUCIUNI COMPAR/TESTEAZ (RELAIONALE): =, , <, , >,


Rezultatul unei instruciuni relaionale este o valoare logic, adic se nscrie un bit/fanion n valoarea
adevrat sau fals. Testnd apoi n program valoarea acestui bit se decide traseul de urmat n contiunare.n
funcie de locul n procesor unde este plasat fizic bitul cu valoarea de adevrat 1 sau fals 0 se pot distinge
trei variante:

1. Registrul codurilor de condiii (cc). Biii/fanioanele care se nscriu, cu valoarea zero sau unu, n urma
unor operaii relaionale sunt grupai toi sub forma unui registru denumit registrul codurilor de conditii, de
exemplu la arhitectura IA-32, ca n reprezentarea urmtoare

2. Registre Booleene (de exemplu la procesorul Alpha 21264). Rezultatul unei operaii relaionale se nscrie n
unul din registrele din banca de registre, care este referit ca registru Boolean; se pot nscrie cu valoarea condiiei
toi biii registrului Booleean, dar uzual se nscrie doar bitul cel mai puin semnificativ, LSB ( Less Significant Bit)
al registrului ca n desenul urmtor

3. Registre predicative ( de exemplu la arhitectura IA-64). Un bloc de registre , uzual 32 sau 64 de registre cu
lungimea de un bit, n care se nscriu rezultatele operaiilor relaionale.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


102

EXEMPLUL 2.3 S se scrie un program n limbaj de asamblare pentru determinarea valorii logice a expresiei
(B > C) AND ( D = E).
1. pe o arhitectur de procesor cu registru pentru codurile de condiii (cc)

CMP B, C ; Compar B i C, nscrie bitul corespunztor din registrul codurilor de condiii cu valoarea
; 1 dac B > C sau cu valoarea 0 dac B C.
SGT $1 ; Bitul Great Than din registrul cc este citit i nscris n registrul $1
CMP E, D ; Compar E cu D, se nscrie fanionul Equal =1 din registrul cc, altfel Equal =0
SEQ $2 ; Fanionul Equal din registrul cc este citit i nscris n registrul $2
AND $1, $1, $2 ; $1 ($1 AND $2) valoarea logic a expresiei se nscrie n registrul $1

2. pe o arhitectur de procesor cu registre Booleene

CMPGT $B1, B, C ; (Compare-Great-Than), dac B > C bitul LSB (sau toi) din registrul booleean
; $B1 este nscris n 1, iar pentru B C, LSB 0.
CMPEQ $B2, E, D ; (Compare-Equal) dac E = D atunci bitul LSB (sau toi) din registrul Booleean
; $B2 este nscris n 1, iar pentru E D LSB 0.
AND $B3, $B1, $B2 ; B3 ($B1 AND $B2), valoarea logic a expresiei se nscrie n registrul $B3

2.5.3 Instruciuni de control al programului

Traseul prin memorie n rularea unui program, att timp ct PCPC+1, parcurge succesiv adresele din
memorie din segmentul de text. Modificarea acestui traseu se produce cnd n PC adresa urmtoare se obine prin
PC Adres, unde cuvntul Adres se nscrie din exterior n PC, iar urmtoarea isntruciune este extras din
locaia de adres Adres. Procesele care modific traseul normal (succesiv, de parcurgere a adreselor n ordinea
numerelor naturale) de extragere a instruciunilor sunt:

1. Execuia ramificailor de tipul: instruciunile de salt necondiionat (Jump)


instruciunile de salt condiionat (Branch)
2. Apelarea procedurilor (Call/Return)
2. Generarea de ntreruperi (I) de tip : externe
interne (EIT*): Exceptions (E)
Faults
Aborts
Traps (T)
etc
* EIT ( Exceptions, Interrupts, Traps)

2.5.3.1. Instruciuni de ramificaie

A. Instruciuni de salt necondiionat (Jump). Deoarece o instruciune de salt necondiionat totdeuna se


realizeaz, acest tip de instruciune se utilizeaz atunci cnd este necesar evitarea unui segment de program.
Exemplu: Variante de instruciuni de salt necondiionat n setul de instruciuni MIPS.
1. Salt adres.

Imediatul cu lungimea de 26 bii este deplasat la stnga cu dou poziii (x4) i apoi concatenat cu cei patru bii
mai semnificativi din PC (care are adresa PC+4)
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
103

Adresa Acolo = [PC31PC28] xx (I26 I0) 2


2. Salt registru

Salt la adresa indicat n registrul $r.


3. Jumpandlink

Imediatul cu lungimea de 26 bii este deplasat la stnga cu dou poziii (x4) i apoi concatenat cu cei patru bii
mai semnificativi din PC (care are adresa PC+4),
Adresa Subrutin = [PC31PC28] xx (I26 I0) 2
Coninutul (PC+4) din programului counter este introdus n registrul $31. Pstrnd adresa (PC+4), n registrul
$31, a instruciunii imediat urmtoare instruciunii Jal, dup terminarea rulrii (subrutinei) prin segmentul text din
memorie, traseul se ntoarce n programul principal la punctul imediat dup instruciunea de ramificaie/salt, adic
la adresa (PC+4, pstrat n $31).

B. Instruciuni de salt condiionat(branch)


O instruciune de salt condiionat va executa salt la adresa calculat a instruciunii INT dac este
adervrat condiia de salt, iar dac nu este adevrat condiia de salt va fi procesat instruciunea urmtoare din
program.
Exemplu (n limbaj de asamblare MIPS)

Aciunea de salt condiionat n ISA poate fi realizat n dou variante:


a) cu dou instruciuni
1. Instruciune TEST/COMPARE ; testeaz condiia de salt i nscrie valoarea logic obinut n registrul
; codurilor de condiii (cc) sau ntr-un registru Booleean
2. Instruciune de salt ; testez condiia de salt nscris, dac are valoarea adevrat atunci salt la
; adresa INT, altfel se continu cu instr. urmtoare de adres PC+1.
b) cu o singur instruciune; instruciunea de salt realizeaz att testarea condiiei de salt ct i saltul
(dac condiia de salt este adevrat), cum este implementat n MIPS.
Exemple de instruciuni de salt din MIPS
1. Branch equal, beq.

2. Branch not equal, bne.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


104

3. Pentru urmtoarele relaii de ordonare < , , >, exist pseudoinstruciuni. Aceste pseudoinstruciuni se
realizeaz cu instruciunea slt care testeaz condiia a < b i apoi salt cu beq sau cu bne la instruciunea int (dac
este cazul). Urmtoarele dou pseudoinstruciuni
blt $a, $b, INT ; salt la INT dac mai mic dect ( $a < $b)
bge $a, $b, INT ; salt la INT dac mai mare sau egal ( $a $b)
sunt simulate n seciunea 1.7.5 Exemplul 4.
Exerciiu. S se scrie programul de simulare pentru urmtoarele dou pseudoinstruciuni
- Branch greater then, bgt
bgt $a, $b, INT ; salt dac mai mare s ( $a > $b)
- Branch less equal, ble
ble $a, $b, INT ; dac $a $b atunci salt la instruciunea TINT

Instruciunile de salt condiionat produc mari scderi de vitez n procesarea programelor cnd aceast
procesare este de tip pipeline. Una din tehnicile moderne de a reduce scderea de vitez la procesarea de tip
pipeline const n realizarea instruciunilor cu execuie condiionat (cu execuie predicativ, a nu se confunda cu
instruciunea de salt condiionat!). Un program care conine instruciuni cu execuie condiionat va elimina
instruciunile de salt necondiionat i va nulifica sau nu instruciunile de salt condiionat.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


105

Din Figura precedent rezult c pentru majoritatea salturilor condiionate lungimea distanei de salt, fa de
adresa instruciunii de salt condiionat, se poate exprima cu un imediat de cel mult 8-10 bii (aceast particularitate
rezult din principiul localizrii (n spaiu a) programelor). Rezult c un imediat cu lungimea de 16 bii n corpul
instruciunii este suficient pentru realizarea saltului. Mai mult, acest imediat n corpul unei instruciuni MIPS, care
exprim numrul de instruciuni peste care se efectueaz saltul, este multiplicat cu 2 ( deplasat spre stnga cu
dou poziii) i se obine numrul de adrese peste care se efectuaz saltul n modul urmtor

C. Instruciuni cu execuie condiionat

Formatul instruciunii cu execuie condiionat

Instruciunea este adus din memorie, n ciclul de FETCH, decodificat i executat n ciclul EXECUIE
conform OPCODE, dar rezultatul obinut se nscrie la destinaie ( registru, memorie) NUMAI dac valoarea
predicatului, <PI>, ataat instruciunii, nscris n registrul predicative ( specificat n cmpul N RP) are valoarea 1,
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
106

iar dac are valoarea 0, rezultatul produs prin execuia instruciunii nu se nscrie la destinaie ( deci instruciunea
consum timp dar nu produce rezultat, ceea ce este echivalen cu rularea instruciunii NOP - No OPeration).

Formatul instruciunii relaionale (de (com)paraie care nscrie valorile (predicalele) n registrele predicative)

n care:
PJ, PK predicatele nscrise n registrele predicative n urma testrii relaie;
NRPJ, NRPK numerele registrelor predicative n care instruciunea predicativ nscrie rezultatul testrii
relaie.
n urma execuiei instruciunii relaionale, dac valoarea relaiei testate este adevrat se nscrie n cele dou
registre predicative NRPJ, NRPK respective valorile PJ = 1, PK= 0, iar dac valoarea relaiei testate este fals se
nscrie n registrele predicative PJ = 0, PK= 1.

Formatul instruciunii relaionale cu execuie condiionat ( i instruciunea relaional poate fi executat


condiionat!)

Pentru: <PI> =1 instruciunea este o instruciune relaional normal, nscrie registrele predicative NRPJ,
NRPK;
<PI> = 0 instruciunea este o instruciune relaional dar nu nscrie valorile n registrele predicative
NRPJ, NRPK; este echivalent cu o instruciune NOP.

Modul de operare al instruciunii relaionale cu execuie condiionat este sintetizat n tabelul urmtor:

Pentru un ISA cu execuie condiionat P trebuie s aib un mecanism de nulificare, de nenscrire a


rezultatului la sfritul etapei de execuie (realizare NOP).
Cu ajutorul instruciunilor cu execuie condiionat/predicative salturile necondiionate (jump) sunt eliminate din
program iar instruciunile de salt condiionat/branch sunt transformate in instruciuni care se nulific sau nu se
nulific. Unele P actuale au toate instruciunile din ISA cu execuie condiionat ( IA-64).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


107

_________________________________________________________________________________________
EXEMPLUL 2.4 Realizarea primitivei IF condiie THEN bloc_then ELSE bloc_else pe un ISA cu instruciuni
cu execuie condiionat.

________________________________________________________________________________________
_
EXEMPLUL 2.5 Realizarea primitivei
IF (a<10) THEN (c=c+1) ELSE [IF (b 20) THEN (d = d+1) ELSE(e = e+1)]
pe un ISA cu instruciuni cu execuie condiionat

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


108

_________________________________________________________________________________________

2.5.3.3. Instruciuni de lucru cu subrutine

O modalitate de scriere a programelor, care duce totdeauna la economie, sistematizare i depanare uoar a
programelor, este cea de modularizare, adic programul este divizat n componente/module independente. Aceste
module sunt compilate independent, iar joncionarea lor este realizat de ctre programul LINKER i plasarea
programului linkat, n memoria calculatorului, se face de ctre programul INCRCTOR. O serie de module
care implementeaz procesri uzuale ( funcii uzuale, drivere I/O etc ) nu se mai elaboreaz de programator
deoarece acestea exist n bibliotec de unde se apeleaz, ca module independente, de ctre programul principal.
Aceste programe de bibliotec sunt referite ca subrutine sau proceduri ( methods n Java). Pentru lucrul cu
subrutine setul de instruciuni trebuie s implementeze urmtoarele dou primitive:

1. SALT LA SUBRUTIN sub forma instruciunii


Call Sub ; PC (Sub), M[SP] (PC+k)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


109

iar particularizat pentru MIPS este instruciunea jal (jump-and-link)


jal Sub ; PC (Sub), $31 (PC+4)

La apelarea subrutinei Sub (prin instruciunea Call sau jal la MIPS) adresa instruciunii urmtoare (PC+k sau
PC+4 la MIPS) este salvat n stiv sau n registrul $31 (la MIPS), n scopul rentoarcerii n acel punct din
programul principal dup rularea subrutinei.

2. REVENIRE DIN SUBRUTIN sub forma instruciunii


Return ; PC M[SP]

iar particularizat pentru MIPS este instruciune jr (jump registru)


jr $31 ; PC $31

Instruciunea Return sau jr $31 este ultima din subrutin i ncarc PC, din stiv sau din registrul $31, cu
adresa de revenire n programul apelant. Uzual n cazul subrutinelor ce servesc cererei de ntrerupere prima
instruciune din subrutin este DI (Disable Interrupt), aceast instruciune blocheaz eventuala servirii unei alte
intreruperi ivite pe durata rulrii subrutinei curente, iar penultima instruciune din subrutin este EI (Enable
Interrupt), care red posibilitatea de ntreupere. De regul, instruciunile EI i Return sunt joncionate ntr-o
singur instruciune, care este nentreruptibil (atomic), adic P nu poate fi intrerupt pe durata rulrii acestei
instruciuni, care este ultima din subrutin, dect numai dup nscrierea adresei de rentoracere n programul
apelant.
Traseul prin memorie la apelarea nlnuit de subrutine pentru MIPS este reprezentat n figura urmtoare

ATENIE . De fiecare dat cnd se apeleaz de ctre o subrutin o alt subrutin, care la rndul su apeleaz o
alt subrutin (subrutine nlnuite) adresa de rentoarcere a subrutinei apelante, din registrul $31, trebuie salvat
n stiv, iar la rentoarcerea subrutina apelat trebuie s refac (din stiv) n registrul $31 adreasa de rentoarcere
a subrutinei apelante.
La apelarea unei subrutine programul apelant transmite subrutinei un numr de parametri, iar la rentoarcere
subrutina transmite programului apelant valorile calculate. Transmiterea parametrilor la subrutin se poate realiza
prin una din urmtorele metode:
1. prin valoare (se transmite valoarea parametrului ntr-un registru/locaie, alocat implicit);
2. prin adres ( se transmite adresa registrului/locaiei unde este stocat valoarea parametrului)
3. prin nume (se transmite relaia de calcul a parametrului).
Pentru MIPS conform conveniei de alocare a registrelor (vezi seciunea 1.7.5) transmiterea parametrilor se face
prin registrele $a0, $a1 $a2, $a3, iar dac sunt mai muli de patru parametrii atunci cei de la patru n sus se
transmit prin stiv. Rentoarcerea n programul principal a valorilor calculate de subrutin se face prin registrele
$v0 i $v0.
Instructiunea Call Sub poate fi privit tot ca o instruciune de salt, dar o instruciune de salt care i salveaz
adresa de rentoarcere din programul apelant.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


110

SECVENIEREA OPERATIILOR PENTRU CALL-RETURN


nainte de apelarea unei subrutine (programul apelat), programul apelant trebuie s pregteasc parametrii de
transmis i s salveze toate acele informaii de proces (registre) care i sunt necesare nemodificate la rentoarcere
din subrutin, dar care pot fi nedorit modificate de apelat. La rndul su, apelatul nu trebuie s modifice acele
valori necesare apelantului ca s renceap rularea corect dup rentoarcerea din subrutin i totodat s
rentoarc n programul apelant valorile calculate. Rezult c pentru procesul CALL-RETURN trebuie fixate, prin
convenie, cum s se desfoare urmtoerele trei etape:
1. ce face apelantul nainte de apelare;
2. ce face apelatul imediat dup apelare;
3. ce face apelatul imediat nainte de rentoarcere nspre programul apelant.
Se vor analiza aceste etape petru MIPS, innd cont de convenia de alocare a registrelor (vezi seciunea1.7.5).
Procesorul MIPS nu are mecanism (hard) automat pentru realizarea lucrului cu stiva (stiv soft), n consecin
acest mecanism trebuie realizat n soft de ctre programator. n acest scop se utilizeaz registrul $29 ca pointer de
stiv (SP, adresa liber din vrful stivei), registrul $30 ca frame pointer (baza stivei), iar registrul $31 ca pointer al
adresei de rentoarcere n programul apelant.
1. (Imediat) nainte de apelare, programul apelant efectueaz:
a) Transferul parametrilor. Parametrii de transmis apelatului sunt nscrii n registrele $a0 $a3, iar pentru
parametrii care depesc numrul de patru acetia se vor transmite prin zona de stiv pe care i-o va
construi apelatul;
b) Salvarea registrelor pe care (se ateapt) s fie utilizate de apelat fr ca apelatul s le salveze n
prealabil (caller-saved registers sunt: $t0 $t9, $a0 $a3 );
c) Executarea apelrii, cu instruciunea jal Sub; PC Sub, $ra PC+4.
2. (Imediat) la nceputul programului apelat:
a) Fixarea dimensiunii stivei, sf (stack frame), utilizat de programul apelat. Baza noii stive se fixeaz
la adresa indicat de vrful stivei (vechi) de la programul apelant, iar vrful noii stive va fi cu un
numr sf de adrese mai jos ( subi $sp, $sp, sf ; $sp$sp sf), stiva crete n jos;
b) Salvarea registrelor pe care apelatul (se ateapt) s le utilizeze, dar a cror valori trebuie pstrate
intacte pentru apelant, aceste sunt din: $s0 $s7, $fp, $ra. Registrul $fp (baza stivei vechi, a
programului apelant) este salvat n noua stiv de ctre fiecare apelat, pentru c fiecare apelat i
aloc propriu su nceput de stiv (baza stivei noi). Registrul $ra se salveaz doar atunci cnd
apelatul apeleaz la rndul su un alt apelat (subrutin);
c) Stabilirea bazei stivei noi, fp (frame pointerul). Frame pointerul, fp, pentru noua stiv
va avea valoarea egal cu adresa indicat de stack pointerului sp de la stiva veche
i se calculeaz cu instruciunea addi $fp, $sp, sf ; $fp $sp + sf, (se consider c $sp indic
prima locaie liber din noua stiv).
3. Rularea programului apelat.
4. (Imediat) nainte de rentoarcerea din programul apelat:
a) Plasarea valorilor calculate n registrele $v0, $v1;
b) Se refac (dac sunt) registrele salvate de apelat din: $s0 $s7 (Calee-saved-registers);
c) Se restabilete vrful stivei vechi, addi $sp, $sp, sf ; $sp$sp + sf. Aceste restabiliri sunt n ordine
invers ( n oglind) n raport cu salvrile de la nceputul programului apelat (de la punctul 2);
d) Salt la adresa de revenire din programul apelant, jr $ra ; PC ($ra).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


111

________________________________________________________________________________________

EXEMPLUL 2.6. Modul de apelare nlnuit a subrutinelor la MIPS

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


112

______________________________________________________________________________________

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


113

2.5.3.4 Evenimente de excepie, EIT (Exceptions, Interrupts, Traps)


n afar de instruciunile de ramificaie, de cele de apelare de subrutine exist i alte evenimente care ntrerup
secvenialitatea accesrii adreselor din program n ordinea de cretere a numerelor naturale , aceste evenimente
sunt referite prin EIT. La producerea unora din aceste evenimente, la fel ca i instruciunile CALL-RETURN, se
poate salva sau nu adresa de rentoarcere n programul curent dup rularea unei subrutine care rezolv cauza care
a generat acel eveniment. Dar spre deosebire de cele dou tipuri de instruciuni anterioare ( de ramificaie,
CALL-RETURN) care ntrerup secvenialitatea de accesare n ordinea numerelor naturale a adreselor,
evenimentele de tip EIT nu sunt prevzute n program, ele apar n mod aleatoriu pe durata rulrii programului.
Aceste evenimente sunt referite printr-o multitudine de termeni, care , uneori, sunt proprii firmei productore
microprocesorului, dup cum se exemplific prin termenii din tabelele urmtoare.
Cteva atribute ale evenimentelor de excepie, existente n tabelul de mai jos, sunt explicate n contiunuare.
Evenimentul este sincron dac apare totdeauna n acelai punct al programului dac programul este executat
cu aceleai date i aceeai alocare de memorie.
User request versus coerced, dac programul utilizator cere situaia de excepie, spre deosebire de coerced
(silit,constrns) exception care este cauzat de anumite evenimente hardware care nu sunt sub controlul
programului.
Between versus within instruction, evenimentul care produce excepia este recunoscut/acceptat chiar n
punctul n care apare din interiorul instruciunii (within) sau recunoaterea evenimentului este amnat pn la
sfritul (execuiei) instruciunii (between), adic ntre dou instruciuni.
Resume versus terminate, dac procesorul are mecanismul ca s reia rularea programului curent din punctul
unde a aprut excepia (resume) sau se termin programul curent (terminate).
User maskable versus nonmaskable, dac utilizatorul poate opri/(mascable) ca exceptia s fie recunoscut de
procesor sau nu poate fi mascat de ctre utilizator (nonmaskable).
n cadrul acestui curs vor fi utilizai termenii de excepie cnd cauza este intern (uzual de natur sotfware-
ntrerupere soft) i termenul de ntrerupere cnd cauza este extern (uzual ntrerupere hardware).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


114

Rezolvarea excepilor/ntreruperilor. n principiu o excepie/ntrerupere este rezolvat n modul urmtor:


Dac evenimentul de excepie/ntreruperea fost acceptat/recunoscut de P, se salveaz n registrul
program counter de excepii, EPC (Exception PC), adresa instruciunii de unde se va relua programul
curent ntrerupt (uzual este adresa instruciunii care a provocat ntreuperea/excepia);
Controlul P este trecut de la programul curent la coordonarea de ctre Sistemul de Operare (SO);
SO determin care este cauza evenimentului de excepie/ntreruperea. Pentru aceasta SO trebuie s
primeasc o informaie care poate proveni:
1. dintr-un registru de cauz, n care este nscris cauza de ctre evenimentul care a aprut sub forma unui
cod (asignat pentru fiecare tip de cauz, n general pentru ntreruperile soft);
2. sub forma unui vector (specific fiecrei cauze, n general pentru ntreruperile hard) generat chiar de
ctre evenimentul care a generat ntreruperea (referit ca ntrerupere vectorizat).
Pe baza acestei informaii obinute, SO determin adresa de nceput unde este plasat n memorie
subrutina specific pentru rezolvarea/servirea evenimentului respectiv. Fiecare tip de eveniment are o
subrutin de servire specific stocat n memorie;
Dup rularea subrutinei de servirea evenimentului se decide dac programul curent se reia (resume)
sau se termin.
Rezolvarea excepilor la MIPS. Excepiile la MIPS sunt efectuate de ctre un coprocesor, iar mecanismul
de rezolvare a acestor excepii se bazeaz pe informaia din urmtoarele patru registre
Denumire registru Explicaii
BadVAddress Bad Virtual Address. n momentul cnd se acceseaz o adres virtual, care nu exist n
memorie (Page Fault Address) adresa respectiv este nscris n registrul BadVAddress.
EPC PC pentru excepii. n acest registru se nscrie adresa instruciunii la care a aprut
evenimentul de excepie (n vederea, eventual, a relurii programului de la aceast adres).
Cause Registrul de cauz. n acest registru se nscrie codul pentru fiecare tip de cauz care a generat
un eveniment, acest cod este informaie de identificare a cauzei pentru sistemul de operare.
Status Registrul de stare. n acest registru se nscriu biii mtii prin care se permite
recunoaterea/acceptarea unui eveniment de excepie, precum i regimul de funcionare al P
n care a aprut evenimentul (regim user sau regim SO - kernel)
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
115

n registrul de stare cele opt niveluri de evenimente (trei soft i cinci hard) pot fi mascate prin nscrierea bitului
corespunztor: mi = 0, sau nemascate mi = 1. Totodat, se poate cunoate dac evenimentul a fost generat n
regiumul de funcionare sub SO (k/u = 0) sau n regimul de funcionare utilizator (k/u = 1), att pentru evenimentul
curent ct i pentru cele dou evenimente anterioare ( cei ase bii sunt ntr-un registru de deplasare). nscrierea
bitul IE/ID specific dac ntreruperea este permis (IE/ID = 1) sau nu este permis (IE/ID = 0).
n registrul de cauz, n cmpul pending interrupts, fiecare din cele opt niveluri de ntreruperi, n momentul cnd
sunt generate va nscrie bilul respectiv, Ei = 1. Acceptarea ntreruperii corespunztoare unuia din cele opt niveluri
se realizeaz numai dac nivelul respectiv nu este mascat (mi = 1) i Ei = 1, (mi Ei=1), iar IE/ID = 1. Cauza
care a generat un eveniment, la producerea acestuia, este nscris sub forma unui cod n cmpul codul excepiei din
registrul de cauz ( codurile pentru cauzele evenimentelor sunt specificate n tabelul de sub registru de cauz).
La acceptarea unei excepii, adresa instruciunii care a generat evenimentul de excepie este nscris n registrul
EPC, iar adresa fix 8000 0080H (adres situat n segmentul kernel din memorie) este introdus n PC; controlul
P este preluat de SO. La aceast adres exist o subrutin (interrupt handler) care pe baza codului din registrul de
cauz sau pe baza vectorului livrat de eveniment ( ntrerupere vectorizat) determin un salt la adresa de nceput a
subrutinei de servire specific tipului de eveniment de excepie. Subrutina de servire a evenimentului va rezolva
evenimentul respectiv dup care se va relua programul curent din punctul de ntrerupere sau se va opri rularea
programului curent.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


116

Modul de rezolvare a unei ntrerupri la MIPS

Structurarea unui sistem de intreruperi externe vectorizate.


Structura din desenul urmtor prezint o variant posibil (simplificat) de implementare a ntreruperilor externe
pentru setul de periferice I/O1 I/On. La activarea unei sau unor cereri de ntrerupere ctre P, de la unul sau mai
multe din periferice, aceast/aceste cerere se memoreaz n latch-ul RS i se aplic, dac nu este mascat, la
codificatorul prioritar, CDn:ln n i la poarta AND cu colectorul n gol. Cnd cel puin o cerere de ntrerupere este
activ semnalul la borna INT a P devine activ, iar la ieirea CD se obine codul perifericului cu prioritatea cea
mai ridicat care a cerut ntreruperea. P va citi codul (VECTORUL) perifericului, aplicat pe magiastrala de date
i va determina pe baza acestui vector adresa de nceput a subrutinei specifice de servire a acelui periferic.
Totodat, P aplic pe magistrala de date un cuvnt care nscrie n (portul) Registru pentru Achitarea
ntreruperilor, prin coninutul acestui cuvnt latch-ul RS al perifericului care a solicitat ntreruperea este
comandat n zero (Q=0) ; deci perifericul n curs de servire de P nu va mai solicita n continuare ntrerupere
ctre P dect numai cnd rutina de servire s-a terminat, dac ntre timp a activat din nou o cerere de ntrerupere.
Prin cuvntul nscris n Registrul Masc se selecteaz care din cererile de ntrerupere de la periferice au acces la
P. Dac mai multe periferice solicit n acelai timp servirea de ctre P, va fi servit doar perifericul care are
prioritatetea ce mai ridicat i nu este mascat (Nivelul de de prioritate se stabilete n funcie de ordinea de
realizare a conexiunilor prifericelor la intrarea codificatorului prioritar,CD).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


117

Niveluri (linii) de ntreruperi

Nivelurilor de ntrerupere (linii) la un P li se asigneaz diferite niveluri de prioritate. Nivelurile de prioritate


sunt introduse pentru ca fiecare priferic s fie (dac se poate) servit n timp real. Servirea n timp real nseamn c
perifericul s aib sau s transmit date atunci cnd este nevoie (datele sunt valide, sunt necesare). Dar viteza
perifericelor pentru schimbul de date este foarte diferit, n consecin rezult c un periferic de vitez mare,
pentru a se asigura servirea n timp real, trebuie servit naintea unui periferic de vitez sczut, dac solicit n
acelai timp intervenia microprocesorului. n desenul urmtor se exemplific modul de servire de ctre P a unor
periferice care au niveluri de prioritate diferite n sistem.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


118

2.5.4 Modaliti de lucru ale procesorului cu perifericele

ntr-un sistem exist trei modaliti de lucru ale procesorului cu I/O: 1. metoda prin interogare ; 2. metoda prin
ntreruperi; Metoda DMA.
1. Metoda prin interogare/scrutare (polling). Procesorul testeaz pe rnd fiecare periferic din sistem (registrul
de stare al acestora) i constat dac perifericul respectiv a solicitat intervenia procesorului, dac da o ofer dac
nu trece la scrutarea urmtorului periferic; de fapt este o bucl programat n care opereaz procesorul ( de unde
metoda se mai numete i I/O programat). Registrul de stare testat se poate reduce la un singur bit, fanion de
stare, Fi, a crui valoare se testez

Avantajele metodei de lucru prin interogare:


simplitate pe partea de hardware;
scutarea perifericelor este sincron cu modul de execuie al programului (buclei de scutare).

Dezantajele metodei de lucru prin interogare:


ncarc sistemul cu timpul de testare n bucl (timp n care P ar putea executa alt activitate);
timpul de rspuns al sistemului la o necesitate de servire a unui periferic este mare, fiind cel puin egal cu
intrevalul de apelarea subrutinei de apelare.
Metoda este potrivit pentru periferice cu vitez relativ redus.

2. Metoda prin ntreruperi ( interrupt-driven I/O).


Utiliznd cererea de ntrerupere ctre P, activat de ctre un I/O; nu mai este nevoie de scrutarea periodic n
bucl a fiecrui periferic ca la metoda programat, deci timpul consumat de procesor se reduce , totodat se
reduce i timpul de rspuns la servirea unui periferic. Modul cum se realizeaz procesul de ntreruperi a fost
prezentat n seciunea 2.6.3.4. Metoda este potrivit pentru periferice de vitez ridicat.

2. Metoda prin accesul direct la memorie, DMA (Direct Memory Acces).


Aceast metod este recomandat pentru de schimb de date ntre memorie i periferice cu Bandwidth foarte
ridicat, de exmplu ; hard disk, dispozitive video, reele, camcordere etc. Dup cum i denumirea metodei exprim,
schimbul de date (pe blocuri) ntre un periferic i memorie se face direct , fr intrevenia microprocesorului,
controlul transferului pe magistral este preluat de controllerului DMA, care devine master de magistral. Exist
trei pai n realizarea unui transfer DMA.
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
119

a) Procesorul prescrie n controllerul DMA adresa perifericului care va fi implicat n transfer, tipul de operaie
pe care se va efectua (read, write), adresa de nceput din memorie pentru surs (citirea memoriei) sau pentru
destinaie (nscrierea memoriei), numrul de bytes implicat n transfer. Pentru realizarea acestor operaii, ntr-o
organizare minimal controllerul DMA trebuie s conin un registru n care P nscrie adresa de nceput (surs
sau destinaie) din memorie i apoi acest registru va funciona ca un Program Counter pentru adresele din
memorie. Un alt registru n care se nscrie numrul de bytes ai blocului de transfer i apoi acest registru are rolul
de contor cu decrementare , cnd ajunge la zero s-a terminat transferul.
b) Controllerul DMA preia controlul pe magistral i ncepe transferul direct ntre I/O i memorie, deci datele
nu mai au traseul I/O-procesor-memorie sau memorie-procesor-I/O ci doar memorieI/O.
c) Odat terminat transferul, controllerul DMA printr-un semnal de ntrerupere semnalizeaz procesorul s preia
n continuare controlul pe magistral.
De fapt transferul DMA poate fi privit ca o instruciune de deplasare masiv de date (bloc de date).

ntr-un system pot exista mai multe controllere DMA, de exemplu ntr-un sistem cu o singur magistral
memorie-procesor i multiple magistrale I/O, pe fiecare magistral I/O exist cte un controller DMA care
coordoneaz transferal ntre memorie i un dispozitiv I/O de pe acea magistral.
n sisteme pentru a reduce implicarea procesorului n transferurile I/O i prin aceasta micorarea timpului
consumat de procesor, controllerele I/O sunt dotate cu inteligen. Controllerele inteligente sunt referite ca
procesoare I/O. Astfel de procesoare specializate execut o serie de operaii I/O denumite programe de intrare
ieire, aceste programe de intrare-ieire pot fi stocate n procesorul I/O sau pot fi stocate n memorie de unde
sunt accesate de procesorul I/O. Cnd se utilizez un procesor I/O sistemul de operare printr-un program special
de intrare-ieire fixeaz operaiile care trebuie executate, mrimea blocurilor transferate, adresele surs i
destinaie.
Un controller DMA este n esen un procesor pentru utilizri speciale ( uzual pe un chip i neprogramabil) n
timp ce un procesor specializat I/O adesea este implementat pe baza unui microprocesor de uz general care
ruleaz un program specializat n operaii de intrare-ieire. Actual multe din aceste operaii de intrare-ieire sunt
implementate n chip-seturile north i south bridge.
Lucrul cu perifericele ntr-un sistem se reduce, n fond, la transferuri de date, deci driverele pentru periferice
(programe speciale de intrare-ieire) sunt componente software sub sistemul de operare.

2.5.5 Instruciuni de control al procesorului

nstruciunile din aceast clas, printr-un suport hardaware adecvat, pot fi utilizate n supravegherea i dirijarea
procesorulului/sistemului. Cu ct mai complxe i mai performante devin P cu att se extinde aceast clas de
instruciuni. n continuare se vor prezenta unele din instruciuni care pot exista n ISA, corespunztoare acestei
clase.
Instruciuni de: setare a biilor din registru de stare, de vaildare/devalidare a biilor din registrul de control
al ntreruperilor, de oprire temporar (halt, wait) etc.
Instruciuni suport pentru testarea procesorului: prin fixarea opririi programului ntru-un punct fixat prin
programare, prin testarea anumitor componente interne etc.
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
120

nstruciuni de sincronizare.
La sistemele uniprocesor multiprogram, dei exist impresia c mai multe programe ruleaz n acelai timp,
funcionarea se reduce doar la rularea unui singur program la un moment dat (ocup procesorul); fiecrui
program i se aloc o coant de timp cnd este rulat pe procesor, deci resursele sunt alocate procesului respectiv pe
durata acelei coante de timp, neexistnd concuren la resurse ntre procese pe durata respectivei coante. La
sistemele multiprocesor poate apare concuren pentru aceeai resurs ntre procesele care ruleaz n acelai timp,
deci se impune o sincronizare ntre aceste procese, n consecin n ISA sunt introduse instruciuni n acest scop.
Sincronizarea ntre procese se impune, fie din cauza concurenei n acelai timp la aceeai resurs (resurs critic,
RC), de exemplu pentru procesele de tip producer-consumer (producere i consumare de date), fie se impune o
funcionare corelat, de exemplu terminarea tuturor iterailor unei bucle n programe paralele. Un exemplu de
concuren a dou procese la o resurs critic este prezentat n continuare, resursa critic fiind variabila A pe
care o acceseaz dou programe (procese) procesul P1 nscrie A A+1, iar procesul P2 nscrie A A+2 .

Proces P1 Proces P2

A A+1 A A+2

load R1, A ; R1 M[adr A] load R1, A ; R1 M[adr A]


addi R1, R1, 1 ; R1= R1+1 addi R1, R1, 2 ; R1= R1+2
store R1, A ; M[adr A] R1 store R1, A ; M[adr A] R1
a)

load R1, A ; R1 M[adr A] load R1, A ; R1 M[adr A]


ncrcarea variabilei A de ctre P1 addi R1, R1, 2 ; R1= R1+2
necesit un timp mai lung dect store R1, A ; M[adr A] R1
ncrcarea variabilei A de ctre P2
addi R1, R1, 1 ; R1= R1+1
store R1, A ; M[adr A] R1=A+1
b)

Cazul a) cnd este un singur procesor evident c procesele P1 i P2 sunt executate secvenial, indiferent care
este executat primul, rezultatul este A+3. n cazul multiprocesor n funcie de timpii de acces spre variabila A i
nscrierea acesteia n R1 dac aceti timpi sunt diferii pentru P1 i P2 valoarea rezultat pentru A poate fi A+1,
A+2, A+3. De exemplu, n cazul b) dac timpul de accesare i nscriere n registru pentru P1 (variabila A nu este
n cache-ul elementului de procesare de la P1) este mai mare dect pentru P2 (variabila A este n cache-ul
elementului de procesare de la P2) rezultatul ar putea fi A+1. Variabila A este citit de P2 i ncepe procesarea dar
nainte de terminare este citit i de P1, ntre timp P2 termin i nscrie A+2, dar apoi termin i P1 care nscrie n
final A+1; se pot analiza toate cazurile posibile n funcie de diferite ntrzieri de accesare i nscriere. Pentru a
evita astfel de cazuri, resurselor critice li se aloc un zvor (lock), adic un bit ntr-o locaie de memorie; accesul
la resursa critic este posibil numai cnd zvor = 0 i nu este posibil cnd zvor =1.
Pentru sincronizarea la resurse critice n ISA s-au introdus instruciuni de sincronizare, una dintre primele
instruciuni introdus i cea mai simpl este instruciunea test-and-set (zvor). nainte de accesarea resursei critice
procesul testeaz zvorul, dac zvor =1 va testa n contiunare iar cnd gsete zvor = 0, instruciunea se execut
prin: citete zvor, modific/nscrie zvor1 i nscrie napoi n memorie zvor =1, deci se preia n continuare
controlul asupra resursei critice (ncepnd din acest moment oricare instruciune care dorete s acceseze resursa
critic va gsi zvor = 1). Instruciunea test-and-set este indivizibil (atomic), adic nu poate fi intrerupt pe
timpul execuiei. Odat preluat controlul asupra resursei critice (zvor =1) se menine acest control pn
terminarea sarcinii care necesit resursa critic, iar la sfrit se elibereaz resursa critic prin nscrierea n memorie
zvor 0

while zavor 0 { testare zvor}

se utilizeaz resursa critic


ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
121

zvor0

Dezavantajul aceste nstruciuni simple de sincronizare este provocat de timpul (care poate fi) lung de testare n
bucl a zvorului, deoarece procesorul este ntr-o bucl de ateptare (do-while). Pentru alte instruciuni de
sincronizare mai complexe acest dezavantaj este atenuat sau chiar eliminat. n IA-32 cele mai multe instruciuni
aritmetice i logice pot fi transformate n instruciuni atomice prin prescriea unui prefix (lock prefix) ataat
instruciunii.
Programul anterior, pentru accesarea resursei critice, variabila A, corespunztor procesului P1, prin utilizarea
instruciunii test and-set este:

Loop: test-and-set R2, zvor ; test-and-set valoarea din locaia zvor


bnz R2, loop ; dac zvor =1, resursa ocupat, atunci salt la Loop
dac zvor =0 se preia controlul asupra resursei critice:
ld R1, A ; resursa critic (A) a fost preluat
addi R1,R1,1 ; variabila A se incrementeaz
st R1, A ; se stocheaz valoare variabilei A
se eliberez controlul asupra resursei critice:
st R0, zvor ; se nscrie zvor = 0, resursa critic devine lber, poate fi accesat de un
; alt proces

nstruciuni privilegiate. Procesoarele evoluate permit dou moduri de funcionare: modul sistem ( modul
sistem de operare, supervizor sau kernel) i modul utilizator (user).
Fixarea unuia din modurile de funcionare se face prin nscrierea unui bit de mod sistem (user/kernel),
corespunztor n ISA exist dou tipuri de instruciuni: instruciuni privilegiate i instruciuni normale. Rularea n
mod supervizor poate utiliza toate instruciunile, pe cnd rularea n mod user poate utiliza doar instruciunile
normale, orice tentativ de a utililiza din mod user o instruciune privilegiat genereaz o ntrerupere indicnd
violarea sistemului. Printre instruciunile privilegiate se gsesc toate instruciunile care prin execuia lor fac
sistemul vulnerabil cum sunt: unele instruciuni de I/O, instruciuni care controleaz parametrii de protecie a
memoriei, instruciuni care controleaz parametrii de mapare a adreselor, instruciuni de control al mascrii
ntreruperilor i prioritilor, a unor registre de stare etc.Trecerea din mod user n mod sistem se face prin
nscrierea bitului mod sistem. Aceast trecere este controlat implicit prin hardware, tipic, se realizeze prin
apariia evenimentelor de excepie/ntrerupere. Cnd un astfel de eveniment este acceptat nu se salveaz numai
registrele dar se devalidez i accesul altor cereri de ntreruperi care ar putea aprea i se nscrie bitul n mod
sistem, iar la rentoarcere din sistemul de operare, ultima instruciune Return From Exception (rfe) automat va
nscrie bitul n mod user.

2.5.6 Instruciuni de nivel nalt, HLL

Sarcina , normal, care o urmrete un utilizator este s i rezolve problemele cu calculatorul, adic s
transforme universul problemei n universul calculatorului. Acest transfer este realizat printr-un limbaj de
programare. Universul calculatorulului (procesorulului) se bazeaz pe transferri i transformri de irururi
de bii (cuvinte), acestora le corespund printr-o aplicaie bijectiv anumite mnemonice care formez limbajul de
asamblare. Pe de alt parte, generalitatea (i apoi decompozabilitatea) universului problemei necesit o
abstractizare a abordrii (algoritmice). Pentru o astfel de abordare abstract, mai potrivit i independent de
procesor, sunt limbajele de nivel nalt HLH (High Level Language), fie de tip imperativ fie de tip funcional.
Limbajele imperative ( C, BASIC; FORTRAN, PASCAL, ADA, JAVA etc) descriu procesrile prin secvene de
comenzi adresate unui procesor. n schimb limbajele funcionale (LISP, PROLOG) permit ca ntregul program s
fie vzut ca descrierea unor funcii n matematic. ntre universul problemei (algoritmic) i universul calculatorului
(iruri de bii) , ntre limbajele de nivel nalt (abstract) i respectiv limbajul de asamblare (main) exist o
diferen conceptual, o diferen semantic (semantic gap).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


122

Pentru reducerea diferenei semantice o parte din instruciunile limbajului de asamblare au fost extinse la nivelul
semantic al instruciunilor din HLL, aprnd astfel instruciuni (main) de nivel nalt. Unei instruciuni de nivel
nalt, implementat n procesor fie cablat sau microprogramat (deci devenit instruciune n limbaj de asamblate),
la fel ca tuturor instruciunilor de asamblare clasice, i corespunde unu-la-unu o instruciune n cod main .
Rezultatul n procesare pentru o instruciune HLL este echivalent cu cel obinut de toate instruciunile (clasice) de
asamblare produse n urma compilrii acestei instruciuni de limbaj nalt cnd aceasta nu este implementat n
ISA. Instruciunile de nivel nalt acoper procesri cum ar fi: accesul datelor structurate de tip matriceal,
procesarea de date de tip multimedia, manevrarea irurilor, apelarea procedurilor i schimbarea cotextului. I/O; n
contiunare se va exemplifica prin analiza unor astfel de (posibile) instruciuni.
Instruciunea Compar-ntre-limite determnin dac un index calculat pentru un elemement al unei structuri de
date de tip matriceal se ncadreaz ntre valoarea inferioar i superioar a indexului (dac exist depirea
intrevalului). La o situare n afara intrevalului se nscrie un bit de cod de condiie (cc) i, eventual, se genereaz o
excepie.
Instruciuni pentru procesarea de texte care manipuleaz iruri sau cmpuri de bii. Astfel de instruciuni pot
fi: Copiaz-ir, deplaseaz un ir dintr-o zon de memorie ntr-o alt zon de memorie, o variant a acestei
instruciuni ar putea fi Deplasez-bloc care specific blocul (lungimea) de copiat. Sfrit-ir localizeaz caracterul
de sfrit de ir, aceast instruciune poate fi utilizat pentru calculul lungimii unui ir sau combinat cu Copiaz-
ir poate realiza operaia de anexeaz ir. Caut-caracter, realizeaze ntr-un ir o cutare secvenial (caracter
dup caracter) pn cnd gsete caracterul specificat, cnd caracterul specificat este gsit se ntrerupe cutarea iar
adresa caracterului se nscrie ntr-un registru. Aciunea de comparare doar pentru un caracter se poate extinde la
aciunea de comparare a dou iruri cu posibilitatea de contor (incrementare/decrementare) . Instruciuni asupra
cmpurilor de bii (nu neaprat cu lungimi de byte sau multipli de bytes) pot fi: Inserare-cmp, Extragere-cmp,
Cutare- cmp, Alturare-cmp etc.

Instruciuni pentru lucru cu proceduri. La apelarea unei proceduri (vezi seciunea 2.6.3.3) trebuie salvat
contextul, iar la revenire acesta trebuie refcut. Termenul de context refer toate acele date care sunt necesare
pentru reluarea rulrii unui proces (registre, registrul de stare al procesului ( PSW- Program Staus Word- care
include PC+ registru codurilor de condiii (cc)), adresele din memorie ale tabelului procesului etc). Pentru paii de
realizat la salvare i la refacerea contextului grupurile de instruciuni de asamblare pot fi combinate/integrate
doar n cteva instruciuni de nivel nalt, cum se exemplific mai jos

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


123

2.6 FORMATUL INSTRUCIUNILOR

Cuvntul instruciune, ntr-o concepie structurat, este mprit n cmpuri/subcmpuri, fiecrui cmp
atribuindu-i-se responsabilitatea unei comenzi/aciuni n cadrul instruciunii. Cei n biii ai unui cmp pot fi
utilizai pentru o codificare global sau liniar. La codificarea liniar, fiecare bit din cei n bii ai subcmpului prin
valoarea sa, unu sau zero, este responsabil de o anumit comand/aciune, n total n comenzi sunt posibile, iar
decodificarea nu este necesar. La codificarea global un cuvnt de cod este responsabil de o anumit comand, n
total 2 n comenzi sunt posibile (numrul total de cuvinte de cod formate cu n bii), dar apoi este necesar un
decodificator DCD n: 2 n . Modul de codificare afecteaz nu numai formatul instruciunii i mrimea programului
dup compilare, ci afectez nsi implementarea procesorului n ceea ce privete decodificarea rapid n aflarea
operaiei i a operanzilor (deci viteza de procesare).
Pentru obinerea unui cod ct mai compact al programului se poate realiza o codificare pe cmpuri n funcie de
frecvena comenzii/aciunii respective, pentru aciunile cu frecven mai ridicat se impun codificri scurte ca
numr de bii sau chiar codificare liniar. ntr-o instruciune exist cmpuri care exist in fiecare instruciune, ca
de exemplu cmpurile OPCODE, operanzii sau modurile de adresare i cmpuri care se introduc numai pentru o
anumit interpretare cerut de instruciune. Deoarece modurile de adresare i cmpurile de adresare ale registrelor
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
124

pot aprea de mai multe ori n aceeai instruciune, codificarea aleas pentru acestea este de cea mai mare
importan n contabilitatea biilor dintr-o instruciune precum i pentru viteza de decodificare.
Realizarea unui set de instruciuni ortogonal este o cerin major. Un set de instruciuni este ortogonal dac nu
are restricii (sau foarte puine) n ceea ce privete combinarea celor trei componenente (subcmpuri) primare
dintr-o instruciune: 1.operaiile (OPCODE); 2. tipurile de date; 3. modurile de adresare. Proprietatea de
ortogonalitate se reflect prin faptul c pentru fiecare operaie asupra unui tip de date se poate aplica oricare mod
de adresare. Ortogonalitatea unui ISA simplific dezvoltarea unui compilator de bun calitate i mbuntete
productivitatea software.
Exist trei modaliti pentru formatul (lunginea) de instruciune din ISA.
Formatul variabil, adic poate fi orice lungime de instruciune, evident multiplu de byte. Acest format
permite, virtual, implemnetarea tuturor modurilor de adresare aplicabile pentru operaii; se recomand acest format
cnd sunt multiple moduri de adresare.
Formatul fix, o singur lungime de instruciunen (multiplu de byte), acest format, uneori, combin n cmpul
OPCODE i unele moduri de adresare, de exemplu addi (i specific i adresarea imediat). Evident c formatul fix
aproape c oblig la utilizarea unui numr restrns de moduri de adresare i operaii. Formatul fix este foarte
potrivit pentru procesarea pipeline, este formatul pentru mainile RISC. Acest format prezint urmtoarele
avantaje:
1. instruciunile nu vor iei niciodat din pagin, alinierea instruciunilor n program este automat (modulo k
=0;
2. permite codificarea cu cmpuri fixe. Codificarea cu cmpuri fixe nsemn c operanzii surs i valorile de
imediat sunt totdeauna n aceleai poziii fixe n instruciune, ceea ce permite citirea acestora (din acele
locuri tiute) nainte sau n paralel cu decodificarea OPCODE, deci n momentul cnd decodificarea este
efectuat deja operanzii sunt obinui (din cmpurile fixe) i se poate trece la execuia instruciunii,
rezultnd un timp redus pe ciclu instruciune.
Formatul mixt este o combinaie ntre primele dou formate. n general, se admit dou formate de
instruciuni, unul normal i unul scurt. Cu formatul normal se obine o bun ortogonalitate, iar cu formatul scurt
se obine un cod mai compact, deci o vitez mai ridicat i un consum de putere mai redus. Formatul scurt este
cerut n special de aplicaiile de tip PMD, n acest sens arhitectura ARM a introdus o variant de 16 bii
(Thumb instruction set), la fel i arhitectura MIPS a introdus microMIPS instruction set. La formatul scurt, n
raport cu formatul normal, se pstreaz acelai set de operaii, dar cu restricia c operanzii, moduri de adresare,
operanzii immediat sunt un subset al celor din formatul normal.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


125

2.7 INTREDEPENDENA ARHITECTURA SETULUI DE INSTRUCIUNI-COMPILATOR

Performanele unui procesor se obin prin sinergismul arhitectur-compilator, deci arhitectura trebuie
coroborat cu tehnologia compilatoarelor.

A. Cerinele impuse compilatorului:


1. s genereze un cod corect
2. s genereze un cod de nalt calitate (compact i de vitez ridicat)
3. cerine secundare: compilare rapid
suport pentru depanare
interoperabilitate ntre limbaje

Etapele i optimzrile n procesul de compilare

Operaii n cadrul fiecrui nivel de optimizare

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


126

Optimizri:
La nivel inalt, se realizeaz asupra programului surs, iar ieirea se aplic (influeneaz) etapele
urmtoare ale compilrii;
La nivel local, se aplic asupra codului numai din cadrul unui bloc de baz (un segment de program
ntre intrarea n acel segment pn la prima instruciune de salt);
La nivel global, extinde optimizarea local i asupra salturilor i introduce un set de transformri n
scopul optimizrii buclelor;
La nivel de main, se ncearc s se foloseasc avantajele particulare ale mainii. Pentru aceast
faz a compilatorului important este procesul de alocare a regitrilor mainii

B. Suportul ISA pentru tehnologia compilatoarelor:


1. Set ortogonal de instruciuni
2. Generarea de primitive i nu soluii potrivite doar unui singur limbaj
3. Reducerea numrului de alternative disponibile oferite compilatorului
4. Favorizarea instruciunilor care aloc n timpul compilrii (static) n raport cu cele care aloc
dinamic

Pot apare urmtoarele nuane pentru proiectarea unei arhitecturi de procesor:


Arhitectur orientat (ajut) spre compilator ( compilor oriented architecture)
Arhitectur orientat (ajut) spre sistemul de operare (operating system oriented architecture).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


127

2.8 ARHITECTURI CISC I RISC

Aproape toate conceptele care se gsesc n microprocesoerele actuale erau cunoscute, n domeniul
calculatoarelor, pn n anii 70, tehnologia microprocesoarelor nu a fcut dect s le implemneteze avnd ca
suport tehnologia de integrare. Dezvoltarea calculatoarelor/microprocesorelor de tip vo Neumann a fost una
evolutiv i nu una revolutiv . Se pare c discontinuitatea/ruptura n acest evoluie este provocat de
apariia procesoarelor de tip muticore, care atrage dup sine impunerea abordrii procesrii paralele. n
domeniul calculatoarelor pn n prezent problema a fost ct hard i ct soft n sistem. Aceasta, de fapt, reflect
n ce const diferena ntre cele dou arhitecturi CISC (Complex Instruction Set Computer), RISC (Reduced
Instruction Set Computer), adic balansul dintre hard i soft

Principii prezente ntr-o arhitectur de tip RISC ( less mean more).


1. Set de instruciuni redus (ca numr) i simplu
instruciuni rapide pentru store, load, add (cele mai frecvente)
instruciunile complexe se implementez numai dac sporul de vitez n execuie justific creterea de
complexitate
numr redus de moduri de adresare (n general dou, relativ la PC, indexat)
un singur format de instruciune (sau cel mult dou), cu cmpuri fixe ceea ce atrage o decodificare
simpl i rapid ( n paralel cu decodificarea OPCODE)
operaiile mai complexe se sintetizez n soft prin succesiuni de instruciuni simple
execuia instruciuni ntr-un singur ciclu (tact de ceas); instruciunile pe mai multe cicluri (aritmetice,
virgul flotant) sunt direcionate spre coprocesoare specializate
2. Unitate de control simpl, implementat cablat
3. Execuie de tip registru-la-registru (arhitectur load-store, GPR- General Purpose Registers)
4. Execuie de tip pipeline
5. Sinergismul arhitectur-compilator.

Exemplu de ISA pentru un microprocesor RISC implemnetat n GaAs (anii 80, pentru SDI-Space Defence
Initiative)

P-RISC = Orice main dup 1985

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


128

CAP 3. CALEA DE DATE

3.1 ORGANIZAREA DE PRINCIPIU A CII DE DATE


Intrepretarea unei instruciuni de ctre procesor, pe durata unui ciclu instruciune, cuprinde dou subcicluri/
cicluri/: unul de adresarea i extragerea instruciunii din memorie, aducerea acesteia n registrul de instrucini (IR)
din procesor i decodificarea sa (subciclul FETCH), apoi cellat, subciclul EXECUIE, care proceseaz
conform codului operaiei din instruciunea respectiv. Dup consumarea ciclului instruciune (Fetch+Execuie) se
iniiez ciclul instruciune pentru urmtoarea instruciune. Fiecare subciclu este realizat pe parcursul a una sau mai
multe etape/faze, fiecare etap consumnd mai multe tacte de ceas (stri). Subciclul Fetch este identic pentru toate
instrucinile din ISA, pe cnd subciclul Execuie difer de la instruciune la instruciune.
Intrepretarea unei instruciuni se reprezint grafic printr-o diagram de stare. n aceast diagram de stare exist
un singur traseu pentru subciclul Fetch, care consum una sau mai multe stri (tacte de ceas) n schimb, dup
DECODIFICARE, pentru subciclul Execuie exist mai multe trasee fiecare desfurat pe multe etape, iar o etap
consummd mai multe stri (tacte). Aceste etape din subciclul Execuie pot fi: citirea operanzilor (din registre sau
din memorie), efectuarea/execuia operaiei conform OPCODE, citirea/nscrirea operanzilor n memorie, nscrirea
rezultatului la (registrul) destinaie.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


129

Pentru asigurarea succesiunii etapelor n intrepretarea instruciunilor, trebuie realizat o funcie de secveniere i
funcie de execuie. Aceste dou funcii detremin o delimitare n organizarea procesorului ntr-o unitate de
control (CALEA DE CONTROL) i una de execuie (CALEA DE DATE). Prin aceast delimitare se uureaz at
proiectarea procesorului ct i implementarea sa. Fiecere din cele dou uniti au semnale de intrare i de ieire
precum i semnale de interaciune ntre ele. Calea de date execut operaia specificat de codul instruciunii (dup
decodificare). Realizarea secvenierii tuturor etapelor n intrepretarea instruciunii, ncepnd cu extragerea din
memorie, execuia i pn la completare (nscrierea rezultatului) este dirijat de unitatea de control prin generarea
de semnale de control. n concluzie interpretarea instruciunii cuprinde:
1. (funcia de) secveniere- realizat n CALEA DE CONTROL;
2. (funcia de) execuie- realizat n CALEA DE DATE.

Structurarea de princiupiu pentru calea de date (cu trei magistrale: magistrala surs1(Ms1), magistrala
surs(Ms2), magistrala rezultat, MR)

Memory Address Registre (MAR) i Memory Data Registre (MDR) sunt registre buffer care acomodeaz
interiorul procesorului cu exteriorul (memoria), primul pentru cuvntul Adres trimis ctre memorie, iar al
doilea pentru cuvntul Data trimise i primite ctre i de la memorie. Aceste registre nu au funcie logic ci numai
funcie electric de adaptare cu exteriorul. Uneori, Registrul de Instruciuni (IR) i Program Counter (PC) sunt
considerate ca fiind componente din calea de control i nu din calea de date.

EXEMPLUL 3.1. [5] Se va prezenta o organizarea de calea de date pentru un microprocesor i setul (redus)
de instruciuni.
Calea de date este organizat pe baza a trei magistrale fiecare de 32 bii: Abus magistrala surs1 (pe care se
vehiculeaz registrul surs1, rs1); Bbus magistrala surs2 (pe care se vehiculeaz registrul surs2, rs2); Cbus
magistrala rezultat (pe care se vehiculeaz registrul destinaie, rd).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


130

Registrele interne sunt n numr de 37 din care:


Banca de 32 registre generale de lucru, %r0 %r31, dublu port,vizibile pentru programator, %r0 ( nu este
legat la Cbus, deci poate fi numai citit, este cablat la zero pentru a se citit numai valoarea zero);
Selectarea unui registru pentru nscriere se realizeaz prin conjuncia dintre semnalul de la ieirea
decodificatorului C- decoder (la intrarea cruia s-a aplicat numrul registrului ( ase bii) n care se face
nscrierea) cu semnalul de ceas, iar cuvntul care se nscrie se aplic pe magistrale C bus. Cuvntul care se
nscrie poate fi obinut ca un rezultat de la ALU sau este adus din memorie, selectarea ntre cele dou surse
se face cu multiplexorul C bus MUX (32MUX 2:1 . Citirea unui registru dublu port se obine prin
aplicarea ieirii sale pe A bus sau pe B bus prin comanda bufferul de ieire TSL, comanda bufferului se
obine prin conjuncia dintre semnalul de la decodificatorul A-decoder sau B- decoder cu semnalul de ceas.
Cuvintele de pe magistrale A bus sau pe B bus pot fi aplicate direct la ALU sau la memorie extern.
Registrul program counter, pc (%r32), are ultimii doi bii cablai la zero pentru a se accesa n memorie
doar adrese multiplu de patru, adic (ADRESA)modulo 4 = 0 (cuvnt n memorie de 32 bii, patru bytes).
Registrul de instruciuni, ir (%r37), n care se depune instruciunea la sfritul cicului Fetch are
urmtoarele cmpuri,reprezentate n figura urmtoare:
op codul operiei
op2, op3 extensii pentru codul operaiei
rs1, rs1, rd repectiv registrele surs unu i doi i destinaie
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
131

bit13 (i) specific existene unui imediat, imm, n corpul instruciunii

Patru registre temporare, %temp0 (33) %temp3 (36), utilizabile doar de ctre procesor n execuia
instruciunilor ca registre temporare.

Unitatea aritmetic i logic, ALU, la care se aplic doi operanzi de pe cele dou magistrale surs, A bus i pe
B bus i genereaz un rezultat. Rezultatul obinut, prin selectarea multiplexorul C bus MUX se aplic pe
magistrala C bus i se nscrie n unul din cele 32 de registre ale bncii de registre interne. Operaia realizat de
ALU prin aplicarea semnalelor F0, F1, F2, F3, generate n calea de control, corespunde codului instruciunii
decodificat. ALU la execuia instruciunilor aritmetice i logice produce nscrierea umtorilor bii de condiii din
registrul (cc):
z zero (rezultatul operaiei este valoarea zero);
n negativ (rezultatul operaiei este negativ), bitul 31, MSB, din cuvntul rezultat este 1, exprimare n
complement de doi;
c carry bit, exist un transport de la MSB (bitul 31, din poziia 32) spre poziia 33 (care nu exist n
registru) pentru adunare sau exist un mprumut nspre MSB (bitul 31) de la bitul din poziia 33 (care
nu exist n registru) pentru scdere; b
v depire (overflow), rezultatul depete capacitatea de 32 de bii.

Setul de instruciuni. Toate instruciunile sunt cu lungimea de 32 bii. Arhitectura este de tipul load-store i este
inspirat dup procesorul SPARC. Setul redus de instruciuni pentru acest procesor este redat n figura urmtoare
(sufixul cc la mnemonicul unei instruciuni indic faptul c instruciunea nscrie n registrul codurilor de condiii).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


132

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


133

3.2 REPREZENTAREA NUMERELOR N CALACULATOR- OVERFLOW (DEPIRE)

Un numr format din n bii este reprezentat n calculator pe un cuvnt, x n -1 x n - 2 x n -3...... x 2 x1 x 0 , avnd ca
suport de implementare un registru sau o locaie de memorie cu lungime de n bii. Pe cei n bii se pot reprezenta
maximum 2 n valori de numere; uneori se concateneaz dou registre obinndu-se reprezentarea n dubl precizie,
ceea ce mrete posibilitatea de reprezentare la 22 n valori de numere.
Numerele ntregi reprezentate n calculator pot fi numere pozitive, referite ca numere fr semn (unsigned
number, unsigned int) i numere cu semn (signed int.). Procesorul MIPS are pentru anumite operaii instruciuni
speciale, acestea au n mnemonic litere u pentru numere fr semn, dar aceeai instruciune fr sufixul u este
pentru operaii cu semn.
Reprezentarea n calculator a numerelor ntregi cu semn, n general, se face sub form codificat n complement
de doi x 2 . Un numr cu semn n complement de doi se reprezint pe un registru/locaie cu bitul cel mai
semnificativ, MSB, cu valoarea zero dac este pozitiv (x n -1 0) i acelai bit are valoare 1 dac numrul este
negativ (x n -1 1) , n felul urmtor:
n -2
pt x 0 x 2 0 x n - 2 x n -3...... x 2 x1 x 0 x 02 n -1
x i 2i
i 0
n -2
pt x 0 x 2 1 x n -2 x n -3...... x 2 x1 x 0 x (-1) 2n -1 x i 2i
i 0
n 1 n 1
valoare numrului fiind n intervalul (2 ) x (2 1) ,

pentru n 32 231,231 1 , iar pentru n = 8 [ -128, 127]
Cu un cuvnt de n bii, n complemnet de doi, se pot reprezenta 2 n numere: 2n 1 numere negative, 2n 1 1
numere pozitive plus cifra zero (un ir de zerouri). Uneori valoarea numerelor reprezentate n calculator se
scaleaz cu valoarea absolut cea mai mare, 2n 1 , astfel c toate numerele se aduc n intrevalul 1, (1 21 n
x
1 n 1 (1 21 n )
2

Astfel, toate numerele reprezentate se aduc n intrevalul 1, (1 21 n .
EXEMPLU 3.2. Fie numerele coninute n registrele $s0 i $s1

$s0 = 1111 1111 1111 1111 1111 1111 1111 1111 12 sau fr semn este 4 249 967 293
$s1 = 0000 0000 0000 0000 0000 0000 0000 0001 1
Aplicnd instruciunile slt, sltu, care este rezultatul procesrii?
Soulie. Aplicnd instruciunea relaional pentru numere cu semn
slt $t0 $s0 $s1 ; $t0 1 deoarece 12 1
iar aplicnd instruciunea pentru numere fr semn (u)
sltu $t0 $s0 $s1 ; $t0 0 deoarece 4 249 967 293 > 1

DEPIREA (OVERFLOW). n urma unor operaii aritmetice poate apare operaia de depire, adic
numrul rezultat nu mai poate fi reprezentat pe cei n bii care sunt disponibili ntr-un registru/locaie. Depirea se
manifest, de exemplu pentru un cuvnt de 32 bii, x 31x 30x 29.....x 2 x1x 0 , printr-un transfer 1de la bitul din poziia
32 ( x 31 ) la bitul din poziia 33 care de fapt nu exist pentru numerele fr semn, iar depirea pentru numerele cu
semn este un transfer 1 de la bitul din poziia 31 ( x 30 ) la bitul de semn s, din poziia 32, (x 31) .
La apariia unei depiri, pe arhitecturile actuale soluiile pot fi:
- cazul 1. se generez EXCEPIE att pentru numerele cu semn ct i pentru cele fr semn;
- cazul 2. se nscrie un bit C (CARRY) pentru numerele fr semn i se nscrie un bit V pentru numerele
cu semn (aceti bii, C i V, sunt n afara lungimii registrului, de fapt ar fi n poziia 33);
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
134

- cazul 3. nu se semnalez n nici un fel, problema trebuie rezolvat de ctre programator (dup fiecare
instruciune care poate genera depire, dac aceea depire contez).

Cazul 1 i 2
Multe din arhitecturi implementeaz combinat soluiile 1 i 2 prin introducerea unui bit EB (Enable Bit). Cnd
se programeaz prin sistemul de operere EB =1, atunci la apariia depirii procesorul va genera un eveniment
de EXCEPIE (care n fond se reduce la apelarea unei subrutine), iar dac procesorul se programeaz cu EB = 0
atunci la apariia depirii se va nscrie bitul C dac numerele sunt fr semn pozitive sau se va nscrie bitul V
dac operanzii sunt tratai ca numere cu semn. Acest mod de abordare este reflectat n tabelul urmtor pentru
unele din procesoarele cunoscute

Modalitate de detectare ( prin hard) a depirii la numerele:


- cu semn (apariia transferului S n 1 1 ) i nscrierea bitului V, este explicat n continuare:

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


135

La adunarea a dou numere cu semn dac cele dou numere au acelai semn iar bitului de semn rezult de
semn opus evident c a fost a fost o depire , ceea ce corespunde liniei 2 i 7 din tabelul de adevr din figura
anterioar, deci se poate deduce funcia logic pentru bitul V i implementa circuitul combinaional de detecie.
O alt modalitate de implementare a circuitul detector se bazeaz pe faptul c totdeauna exist overflow cnd
transferul de la bitul de semn S n 1 spre exterior (carry-out) este diferit de transferul de la MSB ( S n 2 ) la bitul de
semn S n 1 , ceea ce se poate implementa uor cu o poart SAU EXCLUSIV ca n figura urmtoare.

- fr semn suportul este foarte simplu: transferul de la bitul 31 (poziia 32) se nscrie ca fanion de Carry n
poziia 33 ( din afara registrului).
Cazul 3. Detectarea apariiei depirii la numerele cu semn, deoarece nu exist un mecanism hard, trebuie
realizat n soft de ctre programator, deoarece instruciunile nu genereaz Excepie i nici nu nscrie biii de
CARRY (C) sau de overflow (V), ca la cazurile 1 i 2. Pogramatorul din analiza semnului celor doi operanzi i a
semnului operandului rezultat poate deduce apariia de overflow, conform celor patru situaii expuse n tabelul
urmtor

Din acest tabel rezult c adunarea a dou numere de semne opuse i scderea numerelor de acelai semn nu
poate genera overflow. n consecin, trebuie testat doar semnul rezultatului adunrii a dou numere de acelai
semn, dac are semn opus fa de cel al celor doi operanzi indic overflow. La scdere poate apare overflow numai
dac dac cei doi operanzi au semne contrare (aceasta se reduce, de fapt, tot la adunarea de operanzi de acelai
semn).
Cum se rezolv depirea la MIPS? Exist dou tipuri de instruciuni:
instruciunile utilizate pentru numerele cu semn ( add, addi, sub, subi) care la producerea depirii
generez un evenimet de Excepie ( controlul este preluat de sistemul de operare, care printr-o
subrutin specific rezolv depirea i apoi se face rentoarcerea la instruciunea care a generat
depirea).
Instruciuni utilizate pentru numere fr semn (addu, addiu, subu) care nu genereaz un eveniment de
Excepie dac s-a produs o depire, este sarcina programatorului s se asigure c nu s-a produs
depirea! Aceste instruciuni sunt folosite pentru calculul de adrese de acces la memorie care nu sunt
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
136

numere cu semn. Dac totui aceste instruciuni sunt utilizate pentru numere cu semn, neaprat trebuie
s se determine (prin soft, conform tabelului anterior) dac s-a produs overflow.

3.3. UNITATEA ARITMETIC I LOGIC, ALU (ARITHMETIC AND LOGIC UNIT)

3.3.1. Sumatoare.

3.3.1.1. Sumatorul cu Transport Progresiv, STP

Celula sumator complet, 3,2 . Tabelul de adevr pentru celula sumator complet ( cu trei intrri: ai,bi i
transportul anterior Ci 1 , genernd dou ieiri: suma si i transportul urmtor Ci ) cu reprezentarea, schem bloc i
implementarea cu pori reprezentate n figura urmtoare

n exemplul din figur pentru sumarea cuvintelor A i B, de n bii, sumarea nu este terminat pn cnd
transportul se propag prin toate cele n celule sumator, deci timpul de sumare T= n2 p.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


137

Caracteristicile sumatorului cu trasport progresiv:


structur regulat, uor de implementat n siliciu ( predomin porile i nu conexiunile);
suprafaa consumat n siliciu O(n);
timpul de propagare ridicat O(n), de exemplu: pentru n = 32, p = 10ns, timpul de calcul T= n2 p=640ns,
frecvena maxim fmax 1/640ns = 1,56MHz.

Sumatorul (A+B)/ Scztorul (AB). Scderea a dou numere se substituie prin adunarea scztorului
exprimat n complement de doi
A B = A + (-B) = A+ [B]2
deci nu este nevoie s existe pe lng sumator i un scztor. Sumatorul, prin intermediul unei variabile de
control d va realiza operaia de adunare, cnd d = 0, iar pentru d = 1 va realiza operaia de scdere (prin calculul
lui [B]2 = B +1 ) ca n figura urmtoare

Sumator n cod BCD . Sumarea a dou cifre zecimale codificate n BCD genereaz o cifr corect dac
suma este mai mic dect 9|10 (1001|BCD), dar dac suma este mai mare sau egal cu 10|10 (1010 nu este cod BCD)
atunci rezultatul este incorect (nu mai este un cod BCD) i se corecteaz prin sumarea coreciei 6|10 (0110|BCD),
de exemplu 9+8 = 17 (1001 + 1000 = 0001(suma) (i transportul) 1|10 , dac se sumeaz (corecia) 0110 +0001
= 0111 7|10 . Aplicarea coreciei este necesar fie cnd suma rezultat este mai mare de 15|10 ( 1111), deci
apare un transfer, fie cnd suma rezultat este ntre 10|10 i 15|10 care se poate identifica prin faptul c doi bii
dintre cei trei mai semnificativi au simultan valoarea 1.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


138

3.3.1.2. Sumatorul cu transport anticipat, CLA (Carry-Look-Ahead adder)

Timpul mare O(n) de sumare la sumatorul cu transport progresiv se datoreaz timpului mare pentru
propagarea transportului prin cele n celule . Sumatorul cu transport anticipat reduce timpul de sumare la o valoare
constant O(1).
n tabelul de adevr pentru celula sumator complet 3,2 s-au introdus i dou variabile intremediare gi i pi,
definite n modul urmtor:
funcia de generare, gi, care are valoarea 1 cnd celula i generez un transport urmtor i care se exprim prin
relaia logic, gi = aibi, deci implementare pe o poart AND;
funcia de propagare, pi, care are valoarea 1 cnd prin celula i se propag transport anterior i care se exprim
prin relaia logic, pi = ai + bi, deci implementare pe o poart OR.
Cu ajutorul variabilelor intremediare, gi, pi, expresiile deduse anterior pentru Ci i si pot avea urmtoare
exprimare

pi a i bi
si a i bi Ci 1 g i a i bi
=>
Ci a i bi (a i bi )Ci -1 si a i bi Ci -1
Ci g i pi Ci -1
Celula de ordin i va genera transport urmtor Ci fie cnd gi = 1, fie cnd pi =1 i Ci-1 =1
Pe baza expresiei Ci gi pi Ci -1 printr-o dezvoltare recurent pentru i = 1,2, .....,n-1 se obine expresia
logic care calculeaz transportul anterior Ci -1 pentru fiecare celul, deci fiecare celul i poate calcula suma si
imediat ce se aplic biii de intrare ai i bi fr s mai atepte ca transportul anterior s strbat lanul de la C-1
pn la intrarea sa. La toate celulele sumatorului se aplic simultan, la nceput, cei doi operanzi A , B iar
transportul anterior la intrarea, Ci 1 , se poate calcula pentru celula sumatoare de rang i (=0,1,2,....,n-1) numai pe
baza biilor anteriori: a i -1, bi -1; a i - 2 , bi - 2 ;....; a1, b1; a 0 , b0 i a bitului de intrare C-1 doar pe dou niveluri logice. In
acest mod de abordare celula sumator are strucura prezentat n figura urmtoare, pe lng calculul sumei,
si a i bi Ci -1 , pe dou pori SAU EXCLUSIV, se mai adaug circuitul care genereaz transportul anterior
Ci -1 .

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


139

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


140

Sumator cu transport progresiv (compus) din blocuri cu transport anticipat ( Ripple- Block Carry Look-
Ahead Adder, RCLA).
Deoarece un sumator cu transport anticipat, CLA, pentru un numr n mare de ranguri de sumare este practic
greu de realizat, dar se pot utiliza astfel de sumatoare cu un numr mai mic de bii (m) , iar aceste sumatoare sunt
nseriate sub forma unui sumator cu propagarea transportului, pentru un sumator de n bii fiind necesar
nserierea a n/m sumatoare CLA. n funcie de de numrul sumatoarelor CLA utilizate i de numrul de bii m,
pentru implemntarea unui sumator de n bii se pot obine structuri care realizeaz timp de sumare cuprins ntre
cel al unui al unui sumator complet CLA de n bii i cel al unui sumator cu transport progresiv de n bii. O
organizare de principiu pentru un astfel de numrtor combinat este prezentat n figura urmtoare ( cu N=n/m
blocuri CLA fiecare de m bii).

Circuitul/lanul Manchester pentru propagarea transportului (Manchester chain, Kilburn adder). Structura
de lan Manchester a fost conceput n perioada de nceput a calculatoarelor pentru a crea, n paralel cu celulele
sumatorului, o cale rapid de transfer pentru transport. Iniial a fost implementat cu relee, cum este figurat n
desenul urmtor, dar actual se poate implementa uor i eficient cu tranzistoare de trecere .

Ci = Sg +Sp Ci-1
si a i bi Ci 1

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


141

3.3.1.3Sumatorul cu selectarea transportului, CSA (Carry Select Adder)

Funcionarea sumatorului cu selectarea transportului se bazeaz pe aseriunea: sumarea complet pe o celul sau
pe un modul sumator se poate efectua doar cnd este disponibil transportul anterior, Cin , care poate avea numai
dou valori: 1 sau 0. n concluzie, se poate porni procesul de sumare pe respectiva celul sau modul realiznd
simultan sumarea att pentru transportul anterior Cin 1 ct i pentru Cin 0 , fr a se mai atepta sosirea
acestuia, iar cnd acesta sosete, din cele dou sumri, deja efectuate, se selecteaz doar suma care s-a calculat
pentru transportul anterior care are valoarea egal cu cea a transportului anterior care a sosit, cum se prezint n
figura urmtoare. Cnd semnalul Cin sosete acesta este utilizat pentru selectarea unui grup de multiplexoare (2:1)
care alege sumarea corect ct i pentru selectarea unui multiplexor (2:1) care selecteaz transportului urmtor
corect.

Un sumator CSA de n bii se structureaz din module de m bii, cte dou astfel module pentru fiecare
subgrup de m bii din cuvintele de sumare, cu excepia celui mai puin semnificativ subgrup de m bii pentru care
este utilizat doar un singur modul, cum este prezentat n figura urmtoare. Biii cuvintelor de sumare se aplic
simultan pe toate modulele de m bii ai sumatorului. Pe fiecare modul de m bii, cu excepia modulului cel mai
puin semnificativ, se calculeaz att suma i transportul urmtor cu Ci -1 1 ct i cu Ci -1 0 , iar cnd sosete
transportul anterior, calculat de modulul anterior, se alege suma i transportul urmtor calculate corespunztor
valorii bitului Ci -1 sosit.

Structurarea sumatorului nu se face n module de un numr egal de bii ci un numr cresctor. Aceast
neuniformitate se datoreaz faptului c la o aplicare simultan a biilor cuvintelor de sumat, cnd semnalul de
(transport) selectare a sosit de la modulul anterior acesta a trebuit s se propage i printr-un multiplexor, deci cel
puin dou nivele logice de parcurs n plus, n consecin modulul de selectat poate avea cu cel puin o celul
(rang) de sumare n plus fa de modulul anterior.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


142

Caracteristicile sumatorului CSA sunt:


blocurile componente pot avea structuri de : transport progresiv, transport anticipat etc;
sunt recomandate organizrile cu blocuri inegale, blocul urmtor fiind cu un rang mai lung ;
fun-out pentru semnalul de selectare al mutiplexoarelor poate deveni de valoare ridicat ;
timpul de sumare este O( n ) .

3.3.2. Multiplicatorul - pentru numere fr semn (Multiply unsigned - multu)

nmulirea a dou numere, B x A, fr semn

A a n -1 a n - 2 .... a 2a1a 0 Inmultitor (Multiplier)


B b n -1b n - 2 ....b 2 b1b0 Deinmultitor ( Multiplicand)
se poate realiza : 1. cu deplasarea denmulitorului spre stnga ; 2. deplasarea produselor pariale spre
dreapta

1. Multiplicarea cu deplasarea denmulitorului spre stnga


B = 11|10 1011|2 ; A = 13|10 1101|2

1011 x 1101
1011
0000
1011
1011
10001111|2 143|10

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


143

2. Multiplicarea cu deplasarea produselor pariale spre dreapta ( demulitorul rmne n aceeai poziie),
operaia de deplasare dreapta cu o poziie se poate realiza uor pe un tact.

Adunarea i deplasarea spre dereapta pot fi realizate n dou tacte de ceas. Aceste dou operaii, adunare +
deplasare pot constitui o primitiv
Pi Pi -1 B a i
B ai
Pi 1 Pi 21

care poate fi integrat sub forma unei instruciuni AND and SHIFT n ISA, n consecin realizarea unei
multiplicri n soft a dou cuvinte de n bii se realizeaz prin aplicarea repetitiv, de n ori, a instruciunii AND and
SHIFT.
Structurarea hard a unui circuit multiplicator, care realizez multiplicarea prin regula sumare i deplasare
spre dreapta a produselor pariale, conform algoritmului prezentat anterior, este prezentat n figura urmtoare.
Denmulitorul B este nscris n registrul B iar nmulitorul n registrul A, produsele pariale Pi se obin n registrul
RP, fiecare dintre aceste registre avnd lungimea de n bii, iar bitul de transport (CARRY) se obine n registrul
de un bit CY, plasat naintea registrului RP. Registrele CY+ RP+A prin concatenare formeaz un registru de
deplasare, n care dup nscrierea produsului parial Pi n registrul RP (ca rezultat de la sumator) i a bitului de
transport n registrul CY se realizeaz o deplasare spre dreapta cu o poziie ( 21 ), cel mai puin semnificativ (LSB)
din registrul A (nmulitor) se pierde. Prin selectarea multiplexoarelor nxMUX 2:1, cu bitul LSB din registrul A, se
realizez pe sumator, fie sumarea cu B, fie sumarea cu 0 dup cum LSB este 1 sau 0, adic se aplic produsul
B a i . Sumatorul realizeaz adunarea operandului Bai , care este ieirea de la multiplexor, cu opernadul Pi 1 21
, ca ieire din registrul RP, i genereaz coninutul n registrul RP i n CY dac exist transfer . Registrul de
deplasare, RP+A, are lungimea de 2n bii, deci are capacitatea ca produsul final cu lungimea de 2n bii s ncap.
Multiplicarea cuvintelor de n bii necesit n pai, numr care se nscrie ntr-un contor, odat cu nscrirea registrelor
A i B, care apoi se decrementez dup fiecare pas, ajungnd la zero dup n pai (pe un pas se realizeaz o adunare
i o deplasare spre dreapta).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


144

Exist i alte structuri de multiplicare succesiv care prin diferite modaliti pot duce la micorarea numrul n
de pai de execuie pentru multiplicarea a doi operanzi cu lungimea de n bii. De asemenea, pentru lungimi mai
reduse de operanzi se poate realiza multplicarea nu succesiv ci combinaional, folosind pentru aceasta look-up
table.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


145

3.3.3 Unitatea de procesare n virgul flotant

3.3.3.1.Reprezentarea n virgul flotant

Exprimarea uniui numr real N n virgul flotant (reprezentarea stiinific) este

N (-1)s M Be
n care: s este semnul numrului, care se reprezint pe un bit i este: 1 pentru negativ i 0 pentru pozitiv;
M matisa numrului;
B baza sistemului de numeraie n care este considerat exprimarea numrului (uzual 2, 10, 16) ;
e exponentul.
Pentru un numr real N n virgul flotant exist o infinitate de forme scriere (de unde i sintagma de virgul
flotant, punctul zecimal (radix point) poate fi fixat ca poziie oriunde n cadrul numrului!) de exemplu, cteva
din aceste forme de scriere pentru numerele 3.14|10 i 10.11|2 ( uzual baza oricrui sistem de numeraie se scrie 10,
aici s-a scris 2 (i nu sub forma10) pentru o mai uoar nelegere)
3.14 100 31.4 101 0.0314 102 0.314 101
10.11 20 101.1 21 1.011 21 0.1011 22
Din aceast multitudine de forme de scriere , uzual, se alege forma normalizat care corespundei formei cnd
prima cifr dup punctul (virgula) zecimal este o cifr semnificativ ( adic nu este zero), ceea ce pentru numerele
anterioare corespund: 0.31410, 0.10112.
Domeniul de adresare i domeniul de reprezentare a numerelor sunt direct determinate de lungimea cuvintelor
(registrelor) din procesor. Reprezentarea n virgul flotant a unui numr este caracterizat de tripletul (s, M,e).
Deoarece numrul este exprimat n procesor pe un cuvnt cu lungimea (fix) de n biti, trebuie ca lungimile (n bii)
repartizate celor trei parametri s satisfac relaia n = s + M + e. Lngimea n bii a matisei (deci numrul de bii pe
care se reprezint n procesor) determin precizie de exprimare a valorii numrului, iar exponentul (deci numrul
de bii pe care se reprezint n procesor) determin rangul/domeniul de exprimare al numrului. Numrul total de
bii alocai pentru exprimarea mantisei i pentru exprimarea exponentului este n-s ( s- semnul totdeauna necesit
1 bit). ntre numrul de bii repartizai pentru mantis i numrul de bii repartizat pentru exponent se face un
balans, ceea ce se reflect printr-un balans ntre precizia i domeniul numrului, cu creterea preciziei (numrul de
bii pentru mantis) scade domeniul sau invers, cu scderea preciziei crete domeniul. Dar, indiferent ci bii se
repartizeaz pentru exponent i ci bii se repartizeaz pentru mantis numrul total de numere n virgul flotant
care se pot reprezenta pe un cuvnt de n bii este 2 n (la fel ca i pentru numere ntregi). Diferen n reprezentarea
pe o ax a numerelor const n faptul c numerele intregi sunt repartizate uniform (distana absolut dintre dou
numere consecutive este 1) pe cnd la cele n virgul flotant distana absolut ntre dou numere consecutive
crete cu ct domeniul/rangul (exponentul) n care se situeaz valoarea numerelor devine mai mare.

De exemplu, n intervalele ( 21 ,2 ) (2, 2) sunt acelai valori ale mantisei, dar distana ntre dou valori
consecutive ale matisei din al doilea interval este de dou ori mai mare dect ntre aceleai valori ale mantisei
din primul interval.

EXEMPLUL 3.2. Un numr n virgul flotant cu trei digii repartizai pentru mantis i doi digii pentru
exponent are forma N = M 10e (m2m1m0 ) 10e1e0 ; rezult c valorile pentru mantisa ( pe trei digii) se situez n
intrevalul (0.001, 0,999), iar valorile pentru exponent (pe doi digii) n intrevalul (00, 99). S se determine distana

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


146

absolut i relativ ntre valorile cele mai mari ale mantiselor numerelor (0,998, 0999) la domeniul cel mai mic
(00) i la domeniul cel mai mare (99).
La domeniul cel mai mic mic ( 100 ) :
Diferenta absoluta 0.999 100 0.998 100 0.001100
0.001100
Diferenta relativa 0.001
0.998 100

La domeniul cel mai mare (1099 ) :


Diferenta absoluta 0.999 1099 0.998 1099 0.001 1099
0.001 1099
Diferenta relativa 0.001
0.998 1099
Diferna absolut depinde de domeniu pe cnd deferena relativ este aproximativ aceeai indiferent de domeniu

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


147

3.3.3.2. Reprezentarea numerelor conform standardului IEEE-754

(Fundamentarea matematic a fost realizat de Prof. W. Kahan, Berkeley University)

Formatul de cuvnt: simpl i dubl precizie

Semnul numrului. Pentru semn este rezervat bitul cel mai semnificativ din cuvnt, 0-pentru numere
pozitive i 1- pentru numere pozitive.

Reprezentarea exponentului. Pentru reprezentarea exponentului sunt repartizai 8 bii (23-30), n simpl
precizie, i 11 bii (52-62), n dubl precizie, iar codificarea pe aceti bii este n mrime i semn la care se aplic
apoi o deplasare (cod deplasat). Pentru simpl precizie deplasarea pe codul mrime i semn se face cu +127
rezultnd codul deplasat cu 127, sau codul Excess 127.

Numrul zero. Un numr N M Be 0 cnd M = 0 i/sau Be 0; pentru Be 0 e = - (adic cel


mai mic exponent negativ (-127), reprezentat n mrime i semn pe opt bii, este considerat ca -). Dar, dac
pentru a introduce o identitate cu reprezentarea numerelor intregi, la care zero este un ir de 32 bii zero, atunci
la reprezentarea n virgul flotant pe lng cei 23 de bii ai mantisei de valoare zero, care sunt un ir de zerouri,
trebuie ca i cei opt bii ai exponentului n mrime i semn s fie tot un ir de zerouri. Ca numrul (exponentul cel
mai mic) -127, n mrime i semn (1111 1111), s fie reprezentat ca un ir de opt zero-uri (0000 0000) trebuie
deplasat (sumat) cu 127, adic utiliznd un cod deplasat cu 127, rezultnd pentru exponentul e reprezentarea E
referit cu exponentul deplasat sau Excess 127 (E = e + 127).

Mantisa, M - este parte fracionar a numrului i se aduce totdeuna la forma normalizat:


0.1bb....bbbb (23 de bii pentru precizie simpl); 0.1bb........bbbb (52 de bii pentru precizie dubl) cu valori situate
n intervalele (valoarea mantisei este considerat totdeauna pozitiv i se exprim n binar natural)

Deoarece la reprezentarea normalizat bitul dup punctul zecimal este totdeauna 1 acest bit poate s nu mai fie
reprezentat n formatul IEEE-754 (este bitul ascuns, reprezentat implicit ,deci se face economie de un bit n
reprezentarea mantisei), rezult c mantisa, de fapt, este de 24 de bii (respectiv pe 53 de bii); n consecin,
totdeauna cnd se extrage mantisa din formatul IEEE754 prima operaie n obinerea valorii exacte a matisei este
cea de adugare a bitului (ascuns, considerat implict 1) naintea punctului zecimal, obinndu-se significantul, S.
Significantul, S =1. M, este o exprimare a valorii mantisei numrului obinut din reprezentarea mantisei
n formatul 754 la care se introduce ca parte ntreag bitul ascuns, bit care este totdeauna de valoare 1. Altfel spus,
significantul se obine din forma normalizat a numrului (0.1xxx...) deplasat cu o poziie spre stnga (1.xxx...).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


148

Domeniul n care significantul, S, are valori este:

Domeniul n care significantul, S, are valori este:

n standardul IEEE 754 un numr se reprezint sub forma:


N (-1)s 1. M 2e (-1)s S 2E -127 ; 0 E 255,

din aceste numere se exclud valorile de exponent deplasat : E 0 (obtinut din - 127 127(deplasarea)) i E 255
(obtinut din 127 127(deplasarea) 1) care corespund respectiv reprezentarilor pentru - si

Exponentul este reprezentat n cod Excess 127, iar mantisa nu este codificat (numr binar natural pozitiv)

EXEMPLUL 3.3. Pentru numerele 3,5 i 11,375 s se scrie codul n formatul IEEE754

(Conversia unui numr real din zecimal n binare se obine prin:


partea ntreag se mparte succesiv cu doi i se consider , n sens invers, irul de bii ai resturilor;
partea zecimal se nmulete succesv cu doi i se consider irul de bii partea ntreag rezultat).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
149

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


150

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


151

3.3.3.3Operaii n virgul flotant (FLOPS, MFLOPS)

Exemplificarea operaiilor se va face cu numerele: X X s B X E 0.3 102 ; Y Ys BYE 0.2 103

Adunarea/scderea

1. Mantisa numrului mai mic (XS) se deplaseaz spre dreapta cu (YE X E) poziii (aliniere) crescnd
simultan exponentul X E pn se ajunge la valoarea YE;
2. Se obine mantisa rezultat prin adunarea/scderea celor dou mantise;
3. Mantisa rezultat se normalizeaz prin deplasri stnga/dreapta simultan cu scderea/creterea
exponentului YE;
4. Se rotunjete/aproximeaz mantisa rezultat.

nmulirea/mprirea

1. Mantisele se nmulesc/mpart;
2. Se sumeaz exponenii pentru nmulire i se scad pentru scdere;
3. Din exponentul rezultat la nmulire se scade valoarea excesului (127), iar din cel rezultat la scdere se
adun excesul (127);
4. Se normalizeaz mantisele prin deplasri stnga/dreapta simultan cu scderea/creterea exponentului Y
i se rotunjesc/aproximeaz.

Depiri.
1. Depire exponent (Exponent overflow). Valoarea exponentului rezultat depete valoarea maxim
pentru numere normale (+127), adic are valoarea +.
2. Subdepirile (Exponent underflow). Exponentul negativ rezultat este mai mic dect -126. Aceasta
nsemn c numrul rezultat este prea mic pentru a fi reprezentat i poate fi raportat ca fiind zero.
3. Subdepire significant (Significand underflow). n procesul de aliniere a matiselor biii pot fi deplasai
la dreapta peste poziia 223 .
4. Depire significant (Significand overderflow). n procesul de adunare a mantiselor poate apare un
transfer dela bitul cel mai semnificativ (bitul ascuns) . Se poate realinia cu mrirea exponentului.

Biii de gard. Registrele ALU (care aplic operanzii i care colecteaz rezultatul de la ALU) ce conin o
dat sau o dat rezultat n virgul flotant au lungimi pentru reprezentarea valorii mantisei ce depesc 24 de bii
( s-a considerat c s-a introdus i bitul ascuns) cu un anumit numr de bii, denumii bii de gard (ascuni) cum
este prezentat n figura urmtoare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


152

Exemplul 3.4 Fie urmtoarele dou numere pozizive: X= 1.000.....00x2 i Y= 1.111...11 x2. S se realizeze
operaia X-Y pentru cazul cnd matisa este reprezentat fr bii de gard i pentru cazul cnd pentru
reprezentarea mantisei exist i patru bii de gard

Rotunjirea/aproximarea. Din banca de registre ale procesorului sau din memorie, unde numerele sunt
stocate n format IEEE-754, sunt extrase: matisa 23 bii (0-22), exponentul 8 bii (23-30) i bitul de semn (31).
Mantisa, M, este completat cu bitul ascuns obinndu-se significantul, 1.M, (24 bii), iar acesta este depus n
registrele care aplic operanzii la unitatea aritmetic i logic n virgul flotant. Aceste registre care aplic
operanzii precum i registrele n care se obin rezultatele de la unitatea aritmetic i logic pe lng cei 24 de biii
au n completare 4-6 bii, numii biii de gard. Biii de gard sunt necesari pentru obinerea unor rezultate ct mai
corecte n urma rotunjirii sau truncherii rezultatelor la 23 bii (mantis) i apoi nscrierea acestora sub forma
standard IEEE-754 n banca de registre ale procesorului. Modul n care sunt utilizaii biii de gard este prezentat
n exemplele urmtoare:
Rotunjire la valoarea cea mai apropiat, exemple:

Trunchiere, se considere doarcei 23 de bii ai mantisei, se negljeaz biii de gard

Prin operaia de rotunjire sau de trunchiere numrul se exprin cu o anumit eroare, iar pe o succesiune de
operaii erorile introduse prin rotunjire/trunchiere se pot cumula!

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


153

Adunarea n virgul flotant

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


154

Structurarea unitii de adunare n virgul flotant

Exponentul YE al operandului Y este sczut din exponentul XE al operandului X i n funcie de semnul


diferenei (YE XE) se determin operandul cu exponentul mai mare, aceast operaie este efectuat pe un
sumator/scztor de dimensiune redus (exponenii sunt exprimai pe 8 bii n simpl precizie). n funcie de
semnul acestei diferene unitatea de control comand trei multiplexoare care ( n ordinea de la stnga la dreapta n
figur) selecteaz: exponentul de valoarea mai mare, mantisa operandului cu exponentul mai mic, mantisa
operandului cu exponentul mai mare. Mantisa operandului cu exponentul mai mic este deplasat la dreapta cu un
numr de poziii egal cu diferena exponenilor |YE XE|, dup care pe sumatorul de dimensiune mai mare (24 bii
fr biii de gard) este sumat cu cealalt mantis. n etapa de normalizare a rezultatului acesta este deplasat
stnga/dreapta cu decrementarea/incrementarea exponentului (cel de valoare mai mare), iar dup
rotunjire/trunchiere se obine rezultatul.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


155

nmulirea n virgul flotant.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


156

3.4. REGISTRE

Registrele constituie memorie (intern) din calea de date, se spune c registrele sunt zestrea
microprocesorului. Registrele ca memorie intern n raport cu memoria extern prezint avantajele:1- timp de
acces cel puin cu un ordin de mrime mai mic; 2- cuvnt de adresare de maximum 4-7 bii (n corpul unei
instruciuni); 3. Registrele fiind o structur uniform prezint un layout-ul de o mare regularitate.
Modul de organizare al registrelor este un atribut architectural al procesorului. Organizarea registrelor
mpreun cu arhitectura setului de instruciuni (ISA), cu tipurile de date i cu modurile de adresare sunt suportul
pentru programator, pentru codul generat de compilator i pentru sistemul de operare.
Pentru programator organizarea registrelor este de dorit s aib o regularitate i flexibilitate ct mai
ridicat, adic s fie o organizare simetric. Uneori, pentru organizarea registrelor se cere i pstrarea unei
compatibiliti cu implemetrile anterioare ale procesorului.
Pentru compilator o organizare simetric a registrelor ( regularitate + flexibilitate) constituie suportul
pentru generarea unui cod eficient. Un set simetric de registre ofer posibilitatea ca oricare registru s poat fi
utilizat:
de ctre oricare instruciune (OPCODE);
ca acumulator (n operaii);
ca surs/destinaie n operaii;
ca pointer, registru index.
Un set simetric de registre i un numr suficient de registre formeaz un suport pentru un set ortogonal de
instruciuni. O arhitectur cu suport pentru compilator este referit ca arhitectur ndreptat spre compilator
(Compiler-oriented-architecture).
Pentru sistemul de operare o organizare potrivit a registrelor (Operatingsystem-oriented-architecture)
poate constitui suport pentru :
comutarea proceselor;
rspunsul la ntreruperi;
adresarea spaiului memoriei i asigurarea proteciei;
sincronizare n lucrul multiprocesor i depanare.
n concluzie, o organizare simetric (regularitate + flexibilitate) pentru setul de registre interne plus un ISA
ortogonal constituie un suport pentru compilator i pentru sistemul de operare.

3.4.1 Strcturarea registrelor ntr-un microprocesor.

Registrele - resurse ale procesorului sunt structurate n trei bnci/blocuri (fiecare banc coninnd, uzual, 16,
32, 64, 128) plus cteva registre specializate.
1. Banca registrelor de date, conine acele registre care sunt utilizate n lucrul cu date ( procesare i transfer);
2. Banca registrelor de adresare, conine acele registre care sunt utilizate n determinarea adreselor;
3. Banca registrelor de control, conine acele registre pentru controlul funcionrii procesorului i pentru
funciunile sistemului de operare.

Uzual, registrele individuale dedicate sunt:


Registrul de adrese, PC (Program Counter). Conine adresa instruciuni care se extrage din memorie pe durata
ciclui FETCH, iar la sfritul acestui ciclu se incrementeaz pentru a indica adresa urmtoarei instruciuni care se

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


157

va extrage, PC PC+1, iar dac instruciunea urmtoare se obine printr-un salt la o adres ADRESA atunci PC
ADRESA.
Registrul de instruciuni, IR (Instruction Register). Este registrul n care se depune instruciunea adus din
memorie n ciclul de FETCH i care se pstrez n acest registru pn la terminarea ciclului EXECUTE.
Cmpurile instruciunii din acest registru se aplic la unitatea de control pentru a se genera semnalale de control
necesare ciclului de execuie, totodat unele cmpuri se aplic la registrele de date/adrese pentru a se extrage date
i/sau a se calcula adrese.
Registrul codurilor de condiii CC (Condition Codes). In acest registru se colecteaz biii corespuztori
condiiilor realizate/sau n urma efecturii unei instruciuni (Z-zero, N-negativ, P/ pozitiv, C-Carry,
V-overflow/underflow, <, >, = etc). n acest registru pot fi cuprini i biii care indic starea sistemului: validare
ntreruperilor, validare timere interne, user/sistem etc. Acest registru mpreun cu PC i cu altele, definind starea
sistemului, sunt referite prin PROGRAM STAUS WORD, PSW. La schimbarea contextului se salveaz PSW care
, apoi, se reface la restabilirea contextului.
La procesoarele actuale organizarea anterioar a registrelor se reduce doar la dou bnci:
1. Banca registrelor generale GPR (General Purpose Register)
2. Banca registrelor de control.
Fa de organizarea anterioar banca de registre de adresare a fost inclus n registrele de date i n registrele de
control.

Registrele (de utilizare ) generale, GPR. Pentru coninuturile acestor registre generale sunt permise
aceleai operaii, fie c sunt cuvinte DATA, fie c sunt cuvinte ADRES. Registrele generale sunt vizibile pentru
programator. Dar i n cadrul bncii de registre generale pot exista anumite registre care sunt dedicate acestea sunt
fie asignate prin convenie, fie dedicate prin cablare. De exemplu la MIPS prin convenie sunt urmtoarele
asignri: $gp $28 ; $sp $29 ; $fp $30 ; $ra $31. Operaiile crora li se pot asigna prin cablare (hard)
registre sunt: Call Return (registrul Stack Pointer, SP); user/program; realizarea unor adresri frecvente, realizarea
salturilor, operator zero ($zero) etc.

Registrele de control. Aceste registre sunt destinate ca suport pentru controlul anumitor componete ale
procesorului sau regimuri de funcionare, deoarece acestea sunt foarte numeroase rezult c i registrele de control
corespunztoare sunt n numr mare dar i foarte diferite. Sumar, astfel de registre de control ar putea fi pentru:
controlul i protecia lucrului cu memoria, cu memoria cache, cu TLB (Translation-Look-aside-Buffer), regimul
de ntreruperi, depanare i diagnosticare etc. Un registru de control cu lungimea doar de civa bii este registrul
pentru configurarea sistemului, biii acestuia, prin nscriere la nceput configuraiei sistemului, indic prezena n
sistem a unor dispozitive externe: coprocesor matematic, unitate pentru managementul memorie (MMU), circuit
pentru ntreruperi vectorizate, DMA etc. n general, se zice c arhitectul pentru fiecare nou funciune introdus
mai adaug un registru de control!

Registre auxiliare. Aceste registre auxiliare, uneori vizibile alteori transparente pentru programator, sunt
suport temporar pentru operaiile realizate de procesor, pentru compilator sau pentru sistemul de operare.
Multe operaii din procesor, ntre dou stri, necesit o stocare temporar care are mai mult rol electric sau de
temporizare dect logic. De exemplu, la prezentarea schemei de principiu a cii de date sunt prezente registrele
MAR (Memory Address Register) i MDR (Memory Data Register) care au rolul electric, de buffer, ntre calea de
date i exterior.
Uneori compilatorul sau mai ales sistemul de operare ( regimul kernel) necesit anumite stocri pentru
faze intermediare, n consecin pentru aceste siuaii sunt necesare registre suport. De exemplu, la procesorul
MIPS, prin convenie sunt dedicate sistemului de operare $k0 $26, $k1 $27, iar pentru compilator/asamblor $at
$1.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


158

EXEMPLUL 3.5.
A. Organizarea tip fereast a registrelor interne. Acest mod de organizare, introdus inial la procesoarele RISC1
i RISC 2 ( Berkeley Univerity, prof. Patterson), iar apoi continuat n procesoarele SPARC i IA-64, intete spre
creterea vitezei la schimbarea contextului procesorului. Situaiile de schimbarea contextului sunt : Call-Return,
ntreruperi interne/externe, comutarea proceselor; se estimeaz ca schimbarea contextelor ncarc procesorul
(regia- timpul consumat de procesor pentru schimbarea contextelor) cu pn la 40%.
O problem care trebuie rezolvat la schimbarea cotextului, pentru Call-Return, este transferul parametrilor, iar
rezolvarea depinde de numrul parametilor transferai; numr care variaz n funcie de tipul de program dup
cum este prezentat n tabelul urmtor
Frecvena n programe de tipul:
Procedura apelat prezint: Compilator, Intrepretor, Programe numerice de
Procesare de texte. dimensiune mic.
> 3 argumente (parametrii) 0-7% 0-5%
> 5 argumente (parametrii) 0-3% 0%
> 8 cuvinte care sunt argumente i scalari locali 1-20 % 0-6%
>12 cuvinte care sunt argumente i scalari locali 1-6% 0-3%

Organizarea de tip fereastr necesit un numr mare de registre (registre multiple) n setul de registre interioare
ale procesorului, n cazul din acest exemplu sunt n total 138. Pentru a explica organizarea i funcionarea
registrelor multiple din procesor se consider o nlnuire de subrutine prin apelare A B C D ....Y,
apoi prin rentoarcere Y ...D C B A. Fiecrei subrutine i se repartizeaz o fereastr (banc) de de 32
registre, din care 10 registre R0-R9 sunt comune pentru toate ferestrele succesive registre globale conine date
globale pentru program, iar celelalte 22 de registre sunt asignate n modul urmtor:
1. 6 registre de intrare (superioare), R26-R31, aceste registre sunt comune cu cele 6 registre de ieire
(inferioare) ale subrutinei apelante, prin acestea se face transferul direct al parametrilor de la apelant la
apelat fr a se schimba fizic registrele (datele rmn n acelai registru), deci fr consum de timp la
schimbarea de context;
2. 10 registre locale, R16-R15, proprii ale subrutinei. Aceste registre sunt utilizate n exclusivitate de
subrutin, nu sunt multiplexate cu registrele de ieire (inferioare ) sau cu registrele de intrare (superioare)
de la cele dou subrutine adiacente;
3. 6 registre de ieire (inferioare), R10-R15, comune cu cele 6 registre de intrare (superioare) ale subrutinei
apelate i cruia i se transmit parametrii necesari, fr consum de timp, prin aceste registre comune.
O subrutin utilizeaz pentru procesarea proprie cele 10 registre locale, dar nainte de apelarea urmtoarei
subrutine nscrie parametrii transmii n cele ase registre de ieire (inferioare), la fel, nainte de rentoarcere n
subrutina apelant nscrie valorile calculate n cele ase registre de intrare (superioare). Prin aceast ferestruire,
cnd registrele de ieire ale subrutinei apelante sunt comune cu registrele de intrare de la subrutina apelat,
transferul de parametrii se face fr consum de timp, similar se realizeaz i rentoarcerea valorilor calculate de
subrutina apelat ctre subrutina apelant.
Pentru organizarea de tip fereastr apar unele dezavantaje:
timp de acces mai lung la registre ( datorit faptului c sunt mai multe registre realizate, de exemplu 138,
dect n cazul unei singure bnci de 32);
necesitatea unui decodificator suplimentar pentru ferestre;
creterea complexitii cii de control
consum mai mare pe suprafaa de Si.
La organizarea de tip fereastr trebuie analizate:
care este numrul de registre pentru o fereastr, respectiv alegereaa optim ntre numerele de registre din
cadrul unei ferestre n : registre de intrare, registre locale i registre de ieire;
determinarea numrului total de ferestre;
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
159

ferestre cu un numr fix, variabil sau combinat de numr de registre pe fereastr.

Organizarea de tip fereastr a registrelor interne.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


160

B. Organizarea circular a ferestrelor. Aceast organizare este un mod particular al organizrii anterioare,
obinut prin conectarea ultimei ferestre cu prima fereastr, formnd astfel un cerc ca n figura urmtoare ( fereastra
de nceput, w0, este alipit cu fereastra de sfrit, w7.

Statistic s-a constatat c o organizare fereastr a registrelor cu un numr relativ mic de ferestre satisface
marea majoritate a apelrilor nlnuite Call-Return, doar 1% de astfel de apelri necesit o nlnuire mai mare de
opt ferestre. Dac sunt mai multe apelri dect numrul total de ferestre, cnd apar astfel de situaii, ferestrele mai
vechi se nscriu n stiv.
Administrarea accesrii ferestrelor circulare are ca suport dou registre:
1. CWP Current Window Pointer, care conine adresa ferestrei cu care se lucreaz (curent);
2. SWP Save Window Pointer, care conine adresa ultimei ferestre (care trebuie salvat n stiv).

S presupunem c nlnuirea pn n prezent de subrutine a fost de cinci, pornind de la fereastra w0 pn la


fereastra w5 i acum se ruleaz subrutina curent care are alocat fereastra w5. Registrele din fereastra w5 sunt
adresate relativ la coninutul pointerului CWP la care se adaug un offest. Pointerul SWP indic fereastra w7.
Dac se apeleaz n contiunare o alt subrutin, cruia i corespunde fereastra w6, atunci subrutina curent ncarc
parametrii n registrele de ieire, w5 outs, care corespund cu registrele de intrare, w6 ins, ale ferestrei w6 , iar
pointerul CWP va fi nscris cu adresa ferestrei w6, CWP w6. Dac de la w6 se trece n contiunare (la o urmtoare
apelare de subrutin) la w7, atunci coninuturile celor doi pointeri ajung s coincid, CWP =SWP, ceea ce
genereaz o excepie. Generarea de excepie este motivat de faptul c dac w7, apeleaz n continuare o alt
subrutin (fereastra w0) atunci cnd se nscriu parametrii de transmis n w7 outs acetia se vor supranscrie peste w0
ins. n acest caz exceptia va rezolva: SWP w0; CWP w7, iar coninuturile w0 ins i w0 locals se nscriu n
stiv.
Conisdernd acum revenirea (RETURN), succesiv, de la w7 pn la w0 cnd din nou CWP =SWP se genereaz
o excepie; de aceast dat excepia va rezolva SWP w7; CWP w0, iar coninuturile w0 ins i w0 locals vor fi
refcute din stiv.
Rezult c o organizare circular de N ferestre poate conine un numr de N-1 subrutine activate.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


161

C. Organizarea registrelor n arhitectura IA-64

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


162

CAP 4. CALEA DE CONTROL

4.1 FUNCIA UNITII DE CONTROL

Divizarea procesorului n dou pri distincte: Calea de Date i Calea de Control (Unitatea de Control) nu
este o opiune numai sub aspect didactic ci este i o opiune din punct de vedere al proiectrii. La un procesor cu
set de instruciuni, din punct de vedere al organizrii i funcionrii, apar dou aciuni distincte, care trebuie privite
separat: secvenierea instruciunii i execuia instruciunii.
Secvenierea instruciunilor este aciunea realizat de Unitatea de Control (UC), prin care se selecteaz
instruciunea urmtoare ce trebuie executat, sau altfel spus, cum se trece la instruciunea urmtoare: 1. fie n
ordinea de cretere a adreselor n sensul de cretere al numerelor naturale (regul implicit, deci nu se mai
specific n instruciune); 2. fie dup o alt regul, care nu pstrez succesiunea de cretere a numerelor naturale
n accesarea adreselor i care trebuie specificat n instruciune n modul urmtor:
1. PC PC+k, k fiind pasul de aliniere a instruciunilor n memorie, (ADRESA) modulo k = 0;
2. PCAdres: fix | salt necondiionat
calculat => | salt necondiionat
introdus(vector) | Call/Return
| Excepii (hard, soft)

Dar secvenialiatea pentru realizarea traseului prin memorie (zona text), prin extragerea instruciunilor
(subciclul Fetch), supervizat de unitatea de control se contiun apoi i prin secvenierea etapelor n executarea
nstruciunilor (subciclul Execuie) n calea de date.
Execuia este aciunea efectuat n calea de date sub controlul cii de control pentru realizarea
funciei/operaiei specificate n codul instruciunii. Deoarece calea de date cu un repertoriu limitat de
componente (uniti funcionale (UF), bloc de registre, magistrale, buffere, shiftere) trebuie s execute ntreg
setul de instruciuni, calea de control pentru execuia fiecrui instruciuni alege:
1. componentele necesare din calea de date;
2. traseele dintre aceste componente;
3. succesiunea transferurilor pe traseele dintre componente nct s realizeze n hardware execuia
instruciunii.
Aceste selectri de componente, configurri de trasee i succesiuni de transferuri n calea de date se realizeaz
prin semnalele generate de unitatea de control (n urma decodificrii OPCODE i pe baza semnalelor primite din
calea de date).
_______________________________________________________________________________________
EXEMPLUL 4.1 Pentru o cale de date n care sunt trei registre (R1, R2, R3), o unitate funcional, UF i un
registru acumulator, A, cu transfer pe o singur magistral (Figura a) s se stabileasc configuraia traseelor i
punctele de aplicare a semnalelor de control.
Traseele ntre elementele componente i punctele de control corespunztoare pentru efectuarea transferulilor
sunt desenate n figura b. Traseele sau ales innd cont c fiecare registru trebuie s comunice (s aib ieire)
pe magistral i cu unitatea funcional (evident, cu dou sau trei magistrale transferurile se pt face mai uor i n
paralel). De asemenea, la unitatea funcional trebuie s poat fi adus informaia din fiecare element, iar
rezultatul s poat fi nscris n oricare element. Registrul acumulator trebuie s nscrie i s fie nscris din UF,
precum i de pe magistral. Rezult traseele i punctele de control din figura b. n fiecare punct de control, figura
c, semnalul de transmis este aplicat pe o poart AND mpreun cu semnalul de control, care trebuie generat de
unitatea de control. Deoarce la UF se aplic informaie de la mai multe surse, selectarea uneia dintre aceste
surse se realizeaz prin multiplexor. S-au mai introdus dou semnale de control c12 i c12 pentru programarea
operaiilor pe UF (n acest caz pentru patru operaii).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
163

_________________________________________________________________________________________

Semnalele de control generate de calea de control pentru coordonarea aciunilor din calea de date se supun
tripletului de actiuni : unde , cnd i cum.
Prin aciune de cum semnalele de control trebuie s configureze/selecteze cu elementele (magistrale, registre,
uniti funcionale) din calea de date un traseu nct s se poat modela hardware starea respectiv n execuia
instruciunii.
Prin aciune de unde semnalul de control trebuie s realizeze comanda ntr-un anumit punct din calea de date.
Prin aciune de cnd (n ce moment) semnalul de control trebuie s devin activ ntr-un anumit moment i s
fie activ pe o anumit durat.
Semnalele de control, n general, sunt sincrone cu semnal de ceas i pot fi:1. semnale de strob, care au o durat
scurt (impuls) servind realizarea unei aciuni, de exemplu o nscriere; 2. semnale active pe palier, care au durata
palierului de unu sau mai multe perioade de ceas i servesc n general pentru configurare de trasee.
Sinteza semnalelor de control are la baz o diagrama de stri (este o organigram de tip ASM - Algoritmic
State Machine, diagram FSM - Finite State Machine), care descrie grafic etapele pentru intrepretarea unei
instruciuni (Fetch + Execuie), un model generic fiind reprezentat n figura urmtoare. In aceast diagram de
stri se disting cele dou cicluri de Fetch i Execuie, fiecare dintre cicluri fiind constituit dintr-o etap sau mai
multe etape, cel de Fetch avnd o singur etap iar cel de Execuie patru etape ( Accesare operanzi, realizarea
operaiei, acces la memorie (pentru nscriere sau citire date) i nscrierea rezultatului produs de instruciune).
Fiecare etap la rndul su conine una sau mai multe stri, considernd c o stare este pe durate unui tact de ceas,
deci o etap se consum pe durate unei sau mai multe perioade de ceas (unele stri pot consuma mai multe
perioade de ceas).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


164

n fiecare stare se realizeaz o anumit funcie, Fi, iar pentru interpretarea instruciunii (Fetch + Execuie) se
realizeaz succesiunea de funcii F1, F2, F2, ...., Fi..... , i = 1,2,3,.....k corespunztore la cele k stri din diagrama,
pe intervalul de k ( sau mai multe) tacte de ceas. O funcie Fi se compune dintr-o serie de microoperaii (citirea
unui registru, nscrirea unui registru, transferul pe magistral, realizarea unei operaii pe UF etc) care ntr-un
limbaj de descriere RTL (Register Transfer Language) se exprim n felul urmtor:

Z f (X1, X2, ..., Xn)


n care: Z, X1, X2, ..., Xn sunt registre sau valori din aceste registre
f este microoperaia efectuat ( ncarc, citete, transfer, incrementeaz, adun, decodific etc)
indic sensul de transfer.
n fiecare stare i (deci pe durata a unui sau mai multor tacte de ceas) dintr-o etap se analizeaz care sunt
microperaiile necesare a se efectua n calea de date, respectiv care este setul de semnale de control {cij}, j = 1, 2,
3,..... necesare a fi generate de ctre calea de control; ntr-o stare i pot fi realizate n paralel microoperaiile f1, f2,
f3, . Folosind descrierea RTL se poate exprima funcia Fi, corespunztoare strii i cu relaia

if {cij} then Fi Fi = { Z f1 ( X1, X1, X1, .... X1) f2 ( X1, X1, X1, .... X1) ..............}

De exemplu, n diagrama de stri prezentat n figura urmtoare pentru instruciunea add $c, $a, $b ;
($c$a+$b), din etapa Realizare Operaie, realizat pe o singur stare (o perioad de ceas) este necesar a se
efectua dou microperaii n paralele:
1. citirea primului operand din registrul A i depunerea pe magistrala Ms1;
2. citirea celui de al doilea operand din registrul B i depunerea pe magistrala Ms2.
Deci pentru aceast etap unitatea de control trebuie s genereze setul de semnale de control {cij} astfel ca s se
realizeze funcia accesare operanzi F = { Ms1 $a Ms1 $a}.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


165

In figura urmtoare, ca exemplu, este prezentat diagrama de stri pentru microprocesorul MIPS, att ca
schem bloc (Fetch + Execuei (cu cele patru ramuri corespunztoare celor trei tipuri de instruciuni: R, I iJ, vezi
1.7.4.)) ct i detaliat cnd sunt reprerezentate toate strile pentru intrerpretarea celor trei tipuri de instruciuni. n
fiecare stare ( reprezentate prin cerculee) sunt specificate semnalele de control generate de unitatea de control.

Diagrama de stri, pentru intrepretarea instruciunilor, la microprocesorul MIPS

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


166

Unitatea de control poate fi implemnetat n dou variante:


1. Unitate de control cablat;
2. Unitate de control microprogramat.

4.2. UNITATEA DE CONTROL CABLAT

Unitatea de control cablat este, n fond, o structur de main cu algoritm de stare, ASM, a crui funcionare
realizeaz n hard (emuleaz) diagrama de stri a procesorului. Structura de baz a oricrul ASM se reduce la
schema Huffman de circuit secvenial prezentat n figura urmtoare. n aceast figur, de principiu, s-au introdus
text explicativ nct structura de principiu de circuit secveial s poat fi privit ca o unitate de control care
genereaz semnalele de control {cij}pentru o cale de date.

O structur de unitate de control care genereaz semnale pentru calea de date, realizat ca un ASM cu partea de
circuit combinaional pe baz de o matrice PLA, este reprezentat n figura urmtoare

Calculul logic al semnalele de control din calea de date, {cij}, al semnalului de ncrcarea a instruciunii n
registrului de instruciuni, IR i al semnalului pentru ncrcarea codurilor de condiii, n registrul cc, sunt realizate
pe cele dou niveluri logice din PLA; de asemnea se calculeaz i starea urmtoare pentru ASM. Cablarea
unitii de control se face prin programarea matricei PLA att pe nivelul de SI ct i pe nivelul de SAU. n figura
urmtoare este prezentat, ca exemplu, modul de programare a unei matrice PLA de tipul NOR-NOR pentru
generarea a patru semnale de control descrise de urmtoarele ecuaii. (Primul nivel, SI, este realizat pe o matrice
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
167

NOR aplicnd pe intrri variabilele negate, iar ieirile acestuia sunt intrrile nivelului SAU realizat tot pe o
matrice NOR, iar ieirile sunt apoi negate )
c1 x ( x )

c 2 x x yz ( x ) ( x y z)

c 3 yz ( y z)

c 4 x yz xyz ( x y z) ( x y z )

________________________________________________________________________________________

EXEMPLUL 4.2 Pentru o arhitectur pe baz de acumulator, din figura urmtoare, pentru care s-au figurat
punctele de control c1 , , c12 din calea de date, cu explicarea microoperaiilor corespunztoare precum i setul
de instruciuni care se pot executa, s se realizeze o unitate de control cablat.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


168

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


169

Pentru cele opt instruciuni alese care formeaz setul de instruciuni al procesorului i pentru elementele
componente din calea de date, urmrind toate transferurile necesare intrepretrii acestor instruciuni, se stabilesc
traseele necesare cu punctele de control i semnalele corespunztoare , n numr de 13, c0 , , c12
Se construiete diagrama de stri pentru intrepretarea setului de instruciuni, care cuprinde un ciclu FETCH
(comun tuturor instruciunilor) care se realizeaz pe trei stri, iar n ciclul de execuie se consum maxium trei
stri, deci ar fi necesare 6 tacte de ceas pentru ciclul instruciune. Dar, deoarece n ciclul FETCH exist totdeauna
un acces la memorie iar n cel de execuie pentru unele din instruciuni cum ar fi : LOAD, STORE, ADD, AND
exist totdeauna nc un acces la memorie, accesri care se consum pe dou perioade de ceas, rezult c
intrepretarea instruciunilor cele mai lente necesit 8 tacte, (3+1) pentru Fetch + (3+1) pentru Execuie, deci n
total 8 tacte.
Dup aceast analiz a diagramei de stri pentru intrepretarea instruciunilor (ciclicitate n opt tacte de ceas)
se alege pentru circuitul unitii de control o implementare pe baza unui generator de faze modulo 8 (fazele
realizate de un astfel de generator, 0 ....7 , sunt reprezentate n figur). Pentru subciclul FETCH: pe 0
MARPC, pe 1 i 2 Read Memory, pe 3 IR MDR i PCPC+1; 4 , 5 , 6 i 7 sunt consumate pentru
microoperaiile din subciclul de EXECUIE. Circuitul care calculeaz logic setul de semnale de control,
c1 , , c12 , care se aplic n calea de date are ca intrri:
1. cele opt faze de la generatorul de faze, 0 ....7 ;
2. cele opt semnalele Im, m= 0,7, obinute de la decodificaturul codului operaiei din instruciune
3. fanionul de condiie, AC = 0.

Ecuaia logic pentru un semnal de control cj (j=1,...12) este o sum logic a produselor dintre semnalul de
7
faz, i , cnd cj trebuie s fie activ i fiecare dintre semnalele de la decodificator active n acea faz i I m ,
0

avnd expresia
3 7
7 7 7 7 7
c j i i I m 0 1 2 3 4 I m 5 I m 6 I m 7 I m
i 0 4 m0 m 0 m0 m0 m0

De exemplu, semnalul c3 , care este semnalul de READ MEMORY, trebuie s fie activ n starea doi i trei
1 i 2 , cnd se extrage instruciunea din memorie i n starea ase i apte 5 i 6 , cnd se citete operandul
din memorie (pentru instruciunile LOAD, ADD, AND), s-a considerat c accesul la memorie consum dou
perioade de ceas, atunci din relaia anterioar rezult

c3 1 2 5 ILoad IAdd IAnd 6 ILoad IAdd IAnd


Aceast expresie logic se poate implementa pe un circuit cu dou niveluri logice ca o sum de produse.
______________________________________________________________________________________

4.3 UNITATEA DE CONTROL MICROPROGRAMAT

Ideea de microprogramare aparine prof. M.W. Wilkes, de la Cambridge Mathematical Laboratory, care n
1951 a implementat-o ca alternativ la complexitatea unei uniti de control (UC) cablat, n tehnologia de
realizare a unui procesor. De fapt, prin microprogramare prof Wilkes a construit pentru unitatea de control un
procesor (de control) care genereaz semnalele de control, semnale ce se aplic n calea de date a procesorului,
care execut instruciunile programului; apare , n acest fel, o recuren procesor n procesor, procesorul-
unitatea de control, UC, - care comand procesorul ce proceseaz programele. Similaritatea procesorului din
interiorul procesorului cu procesorul care execut programul i pe care l controleaz, a dus la preluarea

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


170

termenilor de la procesor i adaptarea lor pentru procesorul din interior prin adugarea prefixului micro, de
exemplu: microoperaie MO; microinstruciune I ; microcod; microprogram; microsubrutin; microprogram
counter PC; registru de microinstruciuni IR etc.
Pentru explicarea tehnicii de microprogramare, n realizarea unitii de control, se va utiliza reprezentarea din
figura urmtoare. n aceast figur este prezentat diagrama de stare pentru dou instruciuni, add i lw, n fiecare
stare att din ciclul Fetch + Decodificare ct i n strile din etapele (identificare operanzi, execuie, accesare
memorie, nscriere rezultate) ciclului de Execuie sunt figurate semnalel de control { cij }, necesare a fi generate de
unitate de control pentru a se asigura n calea de date intrepretarea instruciunii respective. Setul de semnale de
control { cij } generate ntr-o anumit stare i este format dintr-un numr de bii, care pot fi strni ntru-un cuvnt
binar, cuvnt care formeaz o microinstruciune, deci pentru realizarea comenzilor ntr-o anumit stare n calea de
date este necesar s se genereze aceast microinstruciune ( n exemplul din figur s-a considerat pentru
uniformizare i simplificare c microinstruciunile din fiecare stare sunt cuvinte cu lungimea de cinci biti
j=1,2,3,4,5). De exemplu, pentru realizarea etapei de Fetch + Decodificare a oricrei instruciuni sunt necesare
urmtoarele trei seturi succesive de semnale de control { c1j },{ c 2j },{ c3j }, adic de generarea succesiv a
urmtoarelor trei cuvinte microinstruciune 10110, 01110, 01010, (valorile biilor n aceste microintruciuni sunt
luate arbitrar), cuvinte care pot fi unite ntr-o microsubrutin, microsubrutina de interpretare a ciclului Fetch
+Decodificare comun pentru toate instruciunile din programul rulat de procesor (ciclul de fetch este standard).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


171

Pentru etapele din ciclul de execuie, ale instruciunii lw, este necesar a se genera de ctre unitatea de control
urmtoarele seturi de semnale de control : { c 7j }, { c8j }, { c9j }, { c10j }; adic succesiunea de cuvinte
microinstruciune 10101, 11101, 00011, 10011 care pot fi strnse n microsubrutina de execuie a instruciunii lw.
Aceste dou microsubrutine, Fetch+Decodificare i Execuie, sunt stocate n memoria procesorului interior
care constituie unitatea de control, memorie care este referit ca Memorie de control. Pentru interpretarea unei
instruciuni a procesorului, procesorul de control trebuie s extrag microinstruciune dup microinstruciune din
memoria de control (la fel cum realizeaz procesorul care execut instruciunile programului, extrage instruciune
dup instruciune dar din memoria sistemului), s depun microinstruciunea ntr-un microregistru de
microinstruciuni. Apoi, biii acestui microregistru se aplic n punctele din calea de date a procesorului, ca
semnale de control, pentru a comanda realizarea microoperaiilor ( selectare trasee, transferuri etc)
corespunztoare strii comandate de microinstruciunea respectiv. Deci pentru intrepretarea instruciunii
programului unitatea de control extrage succesiv din memoria de control microinstruciunile microsubrutinei
Fetch + Decodificare (care este comun pentru toate instruciunile), apoi se extrag succesiv microinstruciunile
microsubrutinei de Execuie (pentru fiecare instruciune din ISA corespunde o microsubrutin de execuie),de
exemplu, ale instruciunii lw, dup care se trece la execuia instruciunii urmtoare a programului prin rularea
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
172

aceleiai microsubrutine Fetch + Decodificare i a microsubrutinei de Exectuie corespunztoare instruciunii


respective; acest proces, de extragere i execuie de microinstruciuni din memoria de control, se repet pentru
fiecare instruciune din program rulat pe procesor.
Se pune ntrebarea cum se nlnuie ( se trece) de la microsubrutina Fetch +Decodificare la microsubrutina
specific execuiei instruciunii respective din programul de executat. Aceast trecere se realizeaz n modul
urmtor: n momentrul cnd s-au executat toate microinstruciunile microsubrutinei Fetch +Decodificare s-au
realizat deja toate microoperaiile care au efectuat aducerea instruciunii programului din memoria sistemului n
registrul de instruciuni al procesorului. Cmpul OPCODE al instruciunii programului, prezent acum n registrul
de instruciuni al procesorului, este convertit n adresa din memoria de control a primei microinstruciuni din
microsubrutina care va produce ciclul de execuie pentru instruciunea respectiv. Ultima microinstruciune din
microsubrutina Fetch +Decodificare este o microinstruciune de salt n memoria de control, adresa de salt este
tocmai adresa care s-a obinut din conversia OPCODE-ului instruciunii, deci n felul acesta microsubrutina de
Fetch +Decodificare se continu ( se leag) n memoria de control cu microsubrutina de Execuie.
Microsubrutina Execuie se termin obligatoriu cu o microinstruciune de salt necondiionat (jump) la adresa de
nceput a microsubrutinei Fetch +Decodificare, deci se reia ciclul n memoria de control, prin aceast rulare
ciclic n memoria de control, a microsubrutinei Fetch +Decodificare urmat de microsubrutina specific de
Execuie, se intrepreteaz instruciune dup instruciune din programul procesorului.
Microprogramul format din microsubrutina pentru ciclul Fetch + Decodificare mpreun cu setul de
microsubrutine de execuie, specifice fiecrei instruciuni, nscris n memoriea de control este referit prin termenul
de FIRMWARE. Firmware-ul odat nscris n memoria de control stabilete instruciunile procesorului, ISA;
eliminarea sau adugarea unei microsubrutine de execuie duce la eliminarea respectiv la adugarea unei
instruciuni n ISA. ns utilizarea unei memorii de Control de tip RAM (CRAM) face posibil modificarea uoar
a firmware-ului, deci a setului de instruciuni. Mai mult, prin schimbarea complet a firmware-ului se obine un
nou procesor, un alt ISA, deci se poate croi un alt procesor numai prin elaborarea unui alt firmware. Aceast
flexibilitate nu exist la o unitate de control cablat, n schimb dei procesoarele cablate nu mai pot fi modificate
au, n general, avantajul unor viteze de procesare mai ridicate dect cele obinute pe microprocesoarele
microprogramate. Viteza de procesare mai redus pe procesoarele cu unitate de control microprogramat rezult
din faptul c instructiunea din ISA este interpretat prin rularea unei succesiuni de microintruciuni din memoria
de control.
Formatul microinstruciunilor.
1. Formatul scurt cuprinde, n general, un numr de 20-30 bii n cuvntul microinstruciune, iar
codificarea este liniar, adic pentru comanda unui punct din calea de date corespunde un bit n cuvntul
microintruciune. O microinstruciune,I, de format scurt prin biii si, uzual, realizeaz o microopereie. Evident
cu o I de format scurt rezult microprograme lungi (un numr mare de microinstruciuni), mainile cu I de
format scurt sunt referite cu microprogramare pe vertical.

2. Formatul lung cuprinde, n general, un numr de 3-400 de bii n cuvntul microinstruciune care

este mprit n subcmpuri, pe fiecare cmp se realizeaz o codificare complet. Toate microoperaiile de
executat pentru o anumit component a procesorului sunt grupate a fi comandate prin coduri produse pe acelai
subcmp al microinstruciunii, cu condiia ca microoperaiile grupate s nu fie cu execuie paralal, adic s nu fie
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
173

executate simultan; dac dou microoperaii sunt cu execuie simultan (paralel) atunci se repartizeaz n
subcmpuri diferite, O I de format lung dup ce este extras din memoria de control i depus n microregistrul
de microinstruciuni, fiecare cmp al su este decodificat separat, iar ieirile active de la decodificatoare se aplic
n calea de date ca semnale de control. Avantajele microprogramrii cu uI de format lung sunt: vitez ridicat de
intrepretare (toate subcmpurile din microinstruciune pot comanda n paralel), microprograme scurte (o singur uI
poate intrepreta operaii complexe); microprogramarea cu instruciuni lungi este referit ca microprogramare pe
orizontal.
Organizarea de principiu pentru o unitate de control microprogramat este reprezentat n figura
urmtoare. Firmware-ul corespunztor interpretrii instruciunilor din ISA este stocat n memoria de control,
CM. Coninutul registrului microprogram counter, PC, se aplic la CM ca o adres i din locaia respectiv se
extrage microinstruciunea, I, i se depune n microregistrul de microinstruciuni, IR. Biii din I sunt grupai
n trei cmpuri:

1. Cmpul 1 compus din doi bii s1s2, care specific secvenialitatea n parcurgerea microprogramului n
modul urmtor:
s1s2 = 00, urmtoare I va fi extras de la adresa urmtoare, prin incrementare adresei, INCR 1 ,din
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
174

PC, PC PC+1;
s1s2 = 01, urmtoare I va fi impus din exteriorul unitii de control;
s1s2 = 10, urmtoare I se obine din OPCODE-ul instruciunii (la sfritul microsubrutinei Fetch
instruciunea programului este deja adus din memoria procesorului i depus n registrul de
instruciuni, IR. Subcmpul codul operaiei, OPCODE, din IR este converit n adresa de nceput din
CM, unde se afl microsubrutina pentru interpretarea ciclului Execuie al instruciunii, deci n CM se
efectueaz un salt necondiionat);
s1s2 = 11, urmtoare I se afl n CM la o adres care este specificat( ca un imediat) n
microinstruciunea din IR deci n CM, se efectuaeaz un salt necondiionat. (Un astfel de salt
necondiionat se efectueaz la sfritul fiecrei microsubrutine de execuie cnd se sare la prima
microinstruciune din microsubrutina Fetch)
Selectarea ntre aceste patru variante pentru adresa I urmtoare se realizeaz cu un grup de n MUX 4:1,
comandat de cuvntul s1s2.
2. Cmpul 2 conine toate semnalele de control,{cij}, care se aplic n calea de date pentru comenziile
efectuate de ctre I respectiv.
3. Cmpul 3 conine o adres de salt (imediat) n program, (s1s2 = 11).

Secvenialitatea execuiei micooperaiilor. Semnalele de control din microinstruciune comand


efectuarea anumitor microoperaii n calea de date, corespunztoare strii pentru care a fost conceput
microinstruciunea respectiv. Generarea/activarea semnalelor de control pentru execuia microoperaiile din
calea de date pot fi pe durata unui semnal de ceas (execuie monofazat) sau pe durata a mai multor semnale de
ceas (execuie polifazat).
1. Comanda cu semnal de ceas monofazat. Semnale de control din corpul microinstruciunii,{ cij }, sunt
activate i aplicate n calea de date pe durata unui semnal de ceas, toate microoperaiile, pentru starea i sunt
executate pe durata acelui semnal de ceas. Acest mod de executare a microoperaiilor se recomand pentru
microoperaii simple, de exemplu transferuri ntre registre, n general pentru microprogramare pe vertical.

3. Comanda cu semnal de ceas polifazat. La microprogramarea pe orizontal, biii de control din

corpul microinstruciunii sunt grupai i codificai pe subcmpuri (codificare complet i nu codificare liniar), n
general un subcmp corespunde pentru toate comenzile unui element din calea de date, iar comenzile
corespunztoare microoperaiilor din calea de date se obin prin decodificarea codurilor din aceste subcmpuri;

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


175

pot fi decodificate n paralel mai multe subcmpuri ale microinstruciunii, deci se pot executa microoperaii n
paralel (vezi Exemplul 4.4) . Pe fiecare faz a semnalului de ceas (polifazat) se genereaz semnale de control n
calea de date, similar ca la comanda monofazat, care pot corespunde unei stri din diagrama de stri a unitii de
control. De exemplu, pe organizarea polifazat din figura anterioar succesiune efecturii microoperaiilor pentru
realizarea operaiei (instruciunii) R1 f R1 , R 2 pot fi:
pe faza 1,{ cij } se execut microperaiile prin care se extrage din memorie instruciunea programului (fetch)
i se genereaz adresa microinstruciunii urmtoare ;
pe faza 1, { c(i 1)j }se execut microperaiile prin care extrag coninuturile registrelor R1 i R2 i se aplic
la unitatea funcional;
pe faza 1, { c(i 2)j }se execut microperaiile prin care rezultatul obinut n unitatea funcional se nscrie
ntr-un registru temporar (latch);
pe faza 1, { c(i 3)j } se execut microperaiile prin care rezultatul din registrul temporar este nscris n
registrul R1.
Microprogramarea modific rigiditatea dintre ISA i cablajul cii de control (existent la un procesor cu
UC cablat), introducnd ntre hard i soft (limbaajul de asamblare) un nivel intremediar- Firmware, obinndu-
se astfel o flexibilitate. Substituind microprogramul din CM se obine o alt main sau o mbuntire a celei
existente. EMULAREA unei maini reprezint simularea n hard (prin firmware) funcionarea unei maini (
adic nscrierea n CM a firmware-ului corespunztor).
Nanoprogramarea se obine prin introducerea a nc unui nivel de microprogramare ntre hard i CM,
deci un nivel de firmware care comand un alt nivel de firmware, de data aceasta recurena fiind un procesor
(nanoprocesor) care controleaz un alt procesor ( cel de control, nivelul de firmware, microprogamarea) care la
rndul su comand un alt procesor (microprocesorul care execut instruciunile programului), deci procesor
nanoprocesorul- n procesor unitatea de control microprogramat - n procesor- microprocesorul.
_________________________________________________________________________________________
EXEMPLUL 4.3. Pentru calea de date din Exemplul 4.2, pentru care s-a elaborat o cale de control cablat, s se
elaboraze o cale de control microprogramat.
Semnale de control rmn aceleai c0 c12 la care se mai adaug c13 ( PCIR(OPCODE)), prin care se
comand aplicarea la PC a unei adresei de salt m memoria de control. Aceast adres din memoria de control,
care corespunde nceputului microsubrutinei pentru intrepretarea ciclului de execuie, este obinut din
conversia OPCODE-ul nstruciunii din programul de executat.
Formatul microinstruciunii este un format scurt i are doar trei cmpuri:
cmpul pentru secvenialitate pe doi bii, s1s2 (00- adresa urmtoare, 01- adresa obinut din OPCODE-ul
instruciunii, 10- salt condiionat,11- salt necondiionat);
cmpul pentru adresa de salt (pe 6 bii, ntreg firmware nu depete 64 de microinstruciuni);
cmpul pentru biii de control, n total 14 semnale de control; pentru controlul microperaiilor din calea de
date este o codificare liniar n I, adic pentru fiecare punct de control corepunde un bit din I.
Rezult o microinstruciune cu lungimea de 22 bii. Setul de instruciuni cuprinde opt instruciuni:
LOAD Adres ; AC M[Adres]
STORE Adres ; M[Adres] AC
ADD Adres ; AC AC + M[Adres]
AND Adres ; AC AC M[Adres]
JUMP Adres ;PC Adres
JUMPZ Adres ; if AC =0 then PC Adres
COMP ; AC AC
RSHIFT ; AC AC 21
deci firmware-ul va conine opt microsubrutine de execuie, cte una pentru intrepretarea ciclului de execuie al
fiecrei instruciune, plus microsubrutina de fetch care este comun pentru toate cele opt instruciuni.
Analiznd pentru ciclul de fetch i pentru cele opt cicluri de execuie microoperaiile necesare din calea de
date, pentru realizarea acestor cicluri, se deduc care sunt semnalele de control ce trebuie activate deci biii activi
din fiecare microinstruciune (microinstruciunea este cu codificare liniar).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
176

Micooperaiile necesare i succesiunes acestora comandate de microsubrutina Fetch sunt:


Fetch: MARPC ; comandat de activarea c10 1 , s1s2 = 00
RED M ; comandat de activarea c3 1 , s1s2 = 00
PC PC+1, IRMDR(OPCODE); comandat de activarea c9 1 , c11 1 (aceste dou micooperaii
se efectueaz n paralel), s1s2 = 00
Go to IR ; comandat de activarea c13 1 , s1s2 = 01 (OPCODE transformat n adresa de nceput a
microsubrutinei de execuie se nscrie n IR).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


177

Rezult microsubrutina fetch compus din patru microinstruciuni, iar dup executarea acesteia, prin ultima
microinstruciune, se efectueaz salt la prima microinstruciune din una dintre microsubrutinele de execuie.
Pentru fiecare ciclu de executie al celor opt instruciuni din ISA, similar ca i la subrutina Fetch, se deduc care
sunt microoperaiile necesare i care este succesiunea lor, apoi biii cuvintele microoinstruciune apar evident prin
identificarea semnalelor de control ce trebuie activate pentru microoperaiile respective.
Flexibilitate oferit de microprogramarea unitii de control se poate evidenia prin urmtoarea exemplificare.
S presupunem c n ISA s-a omis includerea unei instruciuni, pe care s o denumim CLEAR, a crei funcie este
de a reseta toi biii cuvntului din acumulator (n lipsa unui semnal de control de RESETARE ACUMULATOR).
Resetarea acumulatorului (nscrierea cu zero) poate fi rezultatul urmtoarei operaii logice A A 0 .
Microoperaiile necesare a se realiza de ctre microsubrutina de execuie a instruciunii CLEAR, precum i biii
(semnalele de control) din microinstruciunile respective sunt prezentate n figura urmtoare

_________________________________________________________________________________________
_________________________________________________________________________________________
EXEMPLUL 4.4. Pentru calea de date reprezentat n figura urmtoare s se fac sinteza unei uniti de
control microprogramat.
Arhitectura acestui procesor este pe baz de acumulator (AC), ca i n Exemplul 4.3 diferena constnd n
faptul c aici exist i o banc de registre, deci apar aspecte de selectare a registrelor. Calea de date este organizat
pe dou magistrale: magiastrala surs - SBus i magistrala rezultat. n calea de date sunt urmtoarele componente:
unitate aritmetic i logic, ALU, poate fi comandat pentru 16 operaii aritmetice/ logice cu patru semnale
de control, c0 c3 ;
registrul acumulator, AC, comandat pentru nscriere cu rezultatul din ALU cu semnalul c13 1 ;
unitate de shiftare, SHIFTRE, cuvntul se poate deplasa stnga/dreapta logic sau aritmetic, rotaie
stnga/dreapta cu o poziie, este controlat de semnalele c8 c10 ;
blocul de 8 registre, Ri , 0 i 7, registrul R0 este utilizat ca program counter (PC), semnalele de control
pentru nscrierea registrelor sunt c17 c20 , corespunznd codurile c17c18c19c20 de la 0000 la 0111(codurile pn
la 1111 sunt pentru celelelte registre din calea e date);
registrul de instruciuni, IR, n care se depune instruciune de program adus din memorie, apoi
OPCODE- instruciunii este transferat (prin decodificare) n adresa microinstruciunii de nceput din
microsubrutina pentru ciclul de execuie al instruciunii. nscrierea sa se realizeaz prin cuvntul de
control c17c18c19c20 1000 ;
registrul buffer pentru adresarea memoriei, MAR (are rol numai electric nu i logic). nscrierea se
realizeaz prin cuvntul de control c17c18c19c20 1001.
registrul buffer de date de la/nspre memorie, MDR (are rol numai electric nu i logic). nscrierea se
realizeaz prin cuvntul de control c17c18c19c20 1010 ;
multiplexorul MUX prin care se selectez elementele din calea de date pentru nscrierea pe magistrala
SBus, selectarea se efectueaz prin semnalele de comand c0 , c1 , c2 , c3 ;
decodificatorul transferului codului obinut din OPCODE spre unitatea de control, aplicarea cuvntului
la intrarea sa se face prin cuvntul de control c17c18c19c20 1011;
semnalele de lucru cu memoria sunt: c11c12 10 pentru citire, MDRM[MAR] i c11c12 11 pentru
nscriere, M[MAR] MDR;
Unitatea de control microprogramat are o organizare similar cu organizarea de principiu prezentat anterior.
Formatul microinstruciuni este de 32 bii cu codificare pe cmpuri (un cmp este asignat pentru codificarea
comenziilor unui element din calea de date) i execuie polifazat (patru faze). Microsubrutina pentru ciclul Fetch
i cele pentru ciclurile execuie ale instruciunilor rezult din descrierea tuturor microoperiilor pentru efectuarea

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


178

ciclului respectiv, apoi prin asignarea pentru aceste microoperaii a unor valori de cod n cmpurile
microinstrciunii.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


179

Se va exemplifica pentru microsubrutina Fetch. Nu se va elabora instruciunile pentru ISA, cititorul poate s i
defineasc propriul su set de instruciuni pentru acest procesor.

Microsubrutina Fetch
operaiile efectuate n ciclul Fetch:
IR M[R0] ; R0 din banca de registre s-a asignat ca program counter, PC.
R0 R0 + 1 ;
descompunerea operaiilor n microoperaii sucesiune lor fiind validate cu fazele 1, 2, 3, 4,

Microsubrutin de execuie. Se consider, ca exemplu, o instruciune de nalt nivel, deplaseaz bloc, care
transfer un bloc de cuvinte dintr-o zon de memorie (surs) ntr-o alt zon de memorie (destinaie). nainte de
intrepretarea instruciunii deplaseaz bloc, adresa de nceput din zona de memorie surs, As, este ncrcat n
registrul (pointer) R2, adresa de nceput din zona de destinaie, Ad, este ncrcat n registrul (pointer) R3, iar
dimensiunea n a blocului de transferat a fost ncrcat n registrul (contor) R1. Transferul cuvnt dup cuvnt se
repet att timp ct este adevrat condiia R1 > 0 (contorul nu a ajuns la zero), deci o bucl DO-WHILE.
Considernd sintaxa instruciunii deplaseaz bloc, moveb R3 ,R2, R1 , programul se poate scrie astfel:

addi $R2, $zero, As ; $R2 As (adresa surs)


addi $R3, $zero, Ad ; $R3 Ad (adresa destinaie
addi $R1, $zero, n ; $R1 n (contor)
moveb R3 ,R2, R1 ; M[R3] M[R2] de [R1] ori

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


180

Microoperaiile pentru microsubrutina de execuie a instruciunii moveb R3 ,R2, R1 , sunt:

1. while R1 > 0 do begin 2. R1 R1 -1 ;


3. MAR R2 ;
4. R2 R2 + 1 ; executie n paralel
4. MDR M[MAR] ; executie n paralel
5. MAR R3 ;
6. R3 R3 +1 ; execuie n paralel
6. M[MAR] MDR ; execuie n paralel
end while

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


181

CAP 5. TEHNICI I STRUCTURI PENTRU CRETEREA


PERFORMANELOR

5.1 PROCESAREA DE TIP PIPELINE

5.1.1. Organizarea de principiu pentru un pipeline

Pentru oricare circuit logic conbinaional, CLC, se presupune c are la intrare un registru de intrare, care
conine variabilele de intrare, x0 , x1,..., xk 2 , xk 1 i la ieire un registru de ieire n care se vor nscrie valorile
calculate ale variabilelor de ieire y0 , y1 ,..., y p2 , y p1 , ca n figura a urmtoare. Considernd c timpul de calcul (de
propagare) pe CLC este pCLC , pe cele dou registre (considerate identice) timpul de set-up este SU , iar cel de
propagare este pR , rezult c frecvena maxim de ceas, f. min 1/ TCLK (min) , cu care se poate comanda aplicarea
variabilele de intrare respectiv se pot nscrie rezultatele la ieire, se calculeaz cu relaia
TCLK (min) pR pCLC SU

Cnd se nseriaz n circuite logice secveniale, ca n figura b, registrul de ieire al circuitului CLCi devenind
registrul de intrare al circuitului CLCi+1, se obine o structur de procesare de tip pipeline (conduct, l.engl.).
Valorile variabilelor de ieire , y0 , y1 ,..., y p2 , y p1 , se obin din variabilele de intrare, x0 , x1,..., xk 2 , xk 1 , prin
calcule succesive pe cele n circuite combinaionale componente din pipeline. Fiecare din cele n circuite
componente pot fi identice dar programabile (Mux, PLA), deci fiecare dintre acestea se programeaz conform
funciei logice, OPi, corspunztoar procesrii etapei i din pipeline.

Perioada minim a ceasului cu care se comand nscrierea registrelor pipe (dintre dou CLC-uri vecine), inclusiv
registrul de intrare i de ieire, se calculez cu relaia
CLK (min) pR max{ pCLC1, pCLC2 ,...., pCLCn} SU skew
skew - fiind timpul de defazaj al semnalului de ceas ntre primul i ultimul registru.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


182

Perioada minim a semnalului de ceas, este detreminat de circuitul component din pipe care are timpul de
propagare cel mai lung.
De la momentrul t0, al nscrierii unor valori pentru variabilele de intrare n registrul de intrare, R1, pn la
nscrierea valorilor calculate n registrul de ieire, n momentul t1 +nTCLK, se aplic n tacte de ceas, rezult c
propagarea prin pipeline (latena pipe-ului) este nTCLK. Dac dac acum se consider c pe fiecare impuls de
ceas se nscrie un set de valori pentru variabilele de intrare n registrul de intrare, R1, dup o intrzire egal cu
laenta pipe (nTCLK) se obine primul set de valori calculate pentru variabilele de ieire, apoi, n continuare pe
fiecare tact de ceas se obine cte un set de valori calculate pentru variabilele de ieire; deci pe fiecare tact se
aplic un set de valori pe intrare i se obine un set de valori calculate pe ieire.

Procesarea de tip pipeline - Noiuni fundamentale

Procesarea secvenial a instruciunilor (clasic, non-pipe), instruciune-dup-instruciune, este


reprezentat n figura urmtoare

Pentru o procesare secvenial, cu timpul de execuie instruciune Tinstr = TIF + TEX, pentru un program
de N instruciuni, timpul total consumat de procesor este egal cu
CPUtime = Ninstr CPI TCLK = Ninstr Tinstr
n care: CPI cicluri/(tacte de ceas consumate) pe instruciune
TCLK perioada semnalului de ceas
Tinstr = CPI TCLK
N 106 Ninstr 106 106 10-6 instr
MIPS instr Tinstr
-1
[ ]
CPU time Ninstr CPI TCLK CPI TCLK s s
Tinstr
instr

Procesarea de tip pipeline.Tehnica de procesare tip pipeline este o modalitate n excutarea instruciunilor
prin care fiecare instruciune este divizat n n pri (etape) distincte i executarea fiecrei etape se realizeaz n
acelai timp (n paralel, cu alte etape de la alte instruciuni). Ce mai simpl modalitate de procesare pipeline a
irului de instruciuni dintr-un program se obine cnd fiecare instruciune este divizat n cele dou pri, etapa
FETCH i etapa Execuie, iar n rularea programului se suprapune realizarea etapei execuie de la instruciunea i
cu efectuarea etapei fetch de la instruciune urmtoare, i+1, ca n figura urmtoare ; uzual TIF < TEX.

Dei timpul efectiv de execuie pentru o singur instruciune a crescut de la Tinstr = TIF + TEX la Tinstr = TEX +TEX
=2TEX timpul de execuie in pipe pentru o instruciune este mai mic, egal cu TEX, iar MIPSTEX -1
.
Trecnd de la divizarea instruciunii numai n cele dou etape fech i execuie la o divizare n mai multe
pri, de exemplu n n pri/etape/faze ( Tinstr/n pe o etap) atunci teoretic viteza de procesare n pipe ar crete de

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


183

n ori conform relaiei anterioare MIPS = Tinstr / n . Uzual, pentru procesarea pipe clasic, instruciunea este
1

divizat n cinci pri (etape/faze) cum este prezentat n figura urmtoare cu semnificaiile:
IF citirea din memorie a instruciunii i aducerea n procesor, Instruction Fetch;
ID accesarea i citirea operanzilor, decodificarea OPCODE-ului, Instruction Decoding;
EX realizarea operaiei specificat n Opcode, EXecution;
MEM citirea sau nscrirea datelor n memorie (dac este cazul), MEMory Access;
WB ncrierea rezultatului n registru, Write Back.

Divizarea instruciunii n faze care s duc la timpi de procesare egali pentru fiecare faz nu este totdeauna
posibil, totui la procesarea n pipe se aloc un timp egal pentru toate fazele, acel timp este egal cu timpul necesar
pentru procesarea fazei celei mai lungi. De exemplu, n divizarea anterioar, etapa ID i WB realizeaz citirea
respectiv nscrierea unor registre, acest timp de citire sau de nscrire este mai scurt dect timpul necesar pentru
celelalte faze (IF, EX, MEM). Citirea i nscrierea registrelor se poate realiza chiar ntr-o jumtate de perioad de
ceas, TCLK (n reprezentrile care urmeaz aceste dou faze sunt reprezentate doar pe jumtate din perioada de
ceas, pe prima jumtate a perioadei de ceas se poate nscrie un registru , iar citirea se poate realiza pe a doua
jumtate a perioadei de ceas). n figurile urmtoare este reprezentat, prin comparaie, procesarea de tip clasic
(secvenial) i procesare de tip pipeline pentru un segment de program de trei instruciuni, fiecare instruciune
divizat n cince etape. Pentru procesarea de tip pipe s-a considerat c deja pipe-ul este plin i pe fiecare tact intr
o instruciune i se genereaz rezultatul unei instruciuni procesate. Timpul necesar pentru procesarea secvenial
este de 3000ns iar pentru procesarea pipe rezult 1400ns.

Creterea (teoretic) de vitez la procesarea de tip pipe se poate determina n modul urmtore

Timpul de procesare non - pipe Ninstr n TCLK n Ninstr


Cresterea de viteza, CV
Timpul de procesare pipe n TCLK Ninstr 1TCLK n Ninstr 1
iar la limit cnd numrul de instruciuni, Ninstr, ale programului procesat rezult
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
184

n Ninstr
CV n
n Ninstr 1 N instr
deci o cretere de vitez de n ori pentru un pipe cu n etape/faze ( la o instruciune divizat n n pri). Prin
execuia de tip pipeline nu se micoreaz timpul de execuie al unei instruciuni, Tinstr, dimpotriv acesta crete
puin ( cu regia pipe-ului) n raport cu timpul de execuie non-pipe al unei instruciuni, ceea ce crete este numrul
de instruciuni ( n ) care se execut n unitatea de timp dup ce pipe-ul este umplut ( prin execuia n paralel de n
etape diferite de la n instruciuni diferite).
Strucurarea de unei ci de date pipelinezat. n figura urmtoare este reprezentat o cale de date, de tip
pipeline, cu cinci etape (specificate anterior).

ntre circuistica ( circuite de tip CLC) fiecrie etape din pipe sunt registre pipe notate cu abreviaiile etapelor
vecine ( IF/ID, ID/EX, EX/MEM, MEM/WB). La aplicarea unui impuls de ceas cuvntul rezultat prin procesarea
de la etapa anterioar se nscrie n registrul pipe i constituie semnalele de intrare n circuistica combinaionala a
etapei urmtoare pn la aplicare urmtorului impuls de ceas.
Alegerea numrului n de etape de pipe n calea de date depinde de:
raportul dintre timpul de acces la memorie supra timpului de acces la elementele din calea de date
arhitectura setului de instruciuni
frecvena semnalului de ceas.
Creterea de vitez, teoretic, rezult prin implemnetarea unei ci de date cu un numr n sporit de etape, acesta ar
duce la o cretere de vitez de n ori n raport cu o cale de date cu procesare non-pipe; o cale de date cu un n ridicat,
peste 10, caracterizeaz procesoarele referite superpipelinizate. De asemenea, creterea de vitez este
detreminat pe lng creterea numrului de etape i prin micorarea perioadei de ceas n care se efectuaz o
etap, adic odat cu cretere a frecvenei de ceas. Aceste dou modaliti, mrirea numrului de etape i creterea
frecvenei de ceas, teoretic, ar duce la creterea vitezei de procesare. Practic, prin aceste dou modaliti nu se
obine o cretere liniar nelimitat de vitez. De la anumite valori n sus ale numrului de etape n pipe, n, se
constat, dimpotriv, o stagnare (explicabil) a creterii de vitez, mai mult chiar o scdere; astfel un numr mai
mare de n=10 etape se intlnete mai rar, iar frecvena de ceas se pare c pentru majoritatea implementrilor nu va
mai depi 3-3,5 GHz (din cauza puterii disipate).

5.1.3 Procesarea n pipeline la procesorul MIPS

Calea de date la MIPS este organizat sub forma unui pipeline cu cinci etape: IF, ID, EX, MEM, WB n care
sunt procesate instruciunile de tipul: R, I i J, prezentate ca format n figura urmtoare. Fiecare etap se desfoar
pe durata unei perioade de ceas, TCLK. Se vor descrie n contiunare microoperaiile care se realizez n fiecare din
cele cinci etape.
1. Etapa IF (Instruction Fetch). Dup aplicarea primului impul de ceas, pe durata TCLK, coninutul registrului
program counter (PC) se aplic la memoria de instruciuni, se extrage instruciunea care urmeaz s fie procesat,
totodat pe sumatorul dedicat calculului adresei urmtoare, NPC (Next Program Counter) se realizeze sumarea
pentru detreminarea adresei intruciunii urmtoare NPC =PC +4 (Next Program Counter).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
185

Dup intervalul TCLK, se aplic al doilea impus de ceas, pe al crui front pozitiv n registrul pipe IF/ID (care poate
fi considerat ca echivalentul registrului de instruciuni, IR, dintr-o structur non-pipe)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


186

se nscriu urmtoarele dou cuvinte de 32 bii:


IF/ID Instruciunea citit din memorie;
IF/ID NPC = PC+4;
PC PC+4:
2. Etapa decodificare i citire operanzi, ID ( Instruction Decoding). Cmpul OPCODE (26-31) este aplicat la
unitatea de control pentru decodificare, simultan cu cititea operanzilor. Citirea operanzilor se poate realiza n
paralel cu decodificarea codului instruciuni deoarece instruciunea este cu cmpuri fixe, deci se pot citi din banca
de registre valorile celor doi operanzi surs; adresa (registrul) operandului A este specificat n cmpul 21-25; iar
ce a lui B este specificat n cmpul 16-20. Totodat se extrage din corpul instruciunii (chiar dac nu se va folosi,
adic nu este o instruciune cu Immediat) cmpul 0-15 care ar putea fi un Immediat i acestui cuvnt de 16 bii i
se extinde bitul de semn, obinndu-se un cuvnt de 32 bii. Deoarece n acest moment nu se cunoate, pentru c
OPCODE nu a fost nc decodificat, dac instruciunea este de tip R, care are numrul registrului destinatie, rd,
specificat n cmpul 11-15 sau dac instruciune este de tip I, care are numrul registrului destinaie, rt, specificat
n cmpul 16-20, se vor citi ambele cmpuri din corpul instruciunii i se vor trimite nainte ambele cmpuri cu
numerelor corespunztoare registrelor destinaie rd i rt.
Timpul de acces pentru citirea unui registru este chiar mai mic dect 1/2TCLK, de aceea se poate considera c
citirea registrelor a cror sdres a fost specificat n cuvntul instruciune se efectueaz n a doua jumtate din
perioada semnalului de ceas.
Prin decodificarea cmpului OPCODE, pe unitatea de control ( nefigurat n acest desen) se genereaz
urmtoarele 9 semnale de control, necesare comenziilor din urmtoarele etape:
Pentru etapa EX (patru semnale):
1. RegDst care aplicat multiplexorului din etapa EX selecteaz numrul unuia din cele dou registre
destinaie rd sau rt (n acel moment se cunoate tipul instruciunii deoarece OPCODE a fost
deja decodificat);
2. ALUOp1, 3. ALUOp2 acesti doi bii specific blocului ALU control, din etapa Execuie (mpreun cu
cmpul Function 6bii, poziiile 0-5 din corpul instruciunii) care este operaia care se va
efectua pe ALU pentru instruciune;
4. ALUSrs cu acest semnal n etapa de execuie se selecteaz pe un MUX 2:1 sursa celui de al doilea
operand (B) aplicat la ALU, care poate fi coninutul registrul surs rt (instruciuni de tip R) sau
este un Immediat (instrucinule de tip I sau J) extins la 32 bii. .
Pentru etapa MEM (trei semnale):
5. Branch acest semnal se genereaz cnd instruciunea este de salt condiionat, care n etapa MEM, n
conjuncie cu semnalul Zero, va comanda ncrcarea n program counter nu a adresei
urmtoare, PC+4, ci a adresei tint, PCadresa de salt;
6. MemRead; 7. MemWrite sunt semnalele care comand citirea sau nscrierea memoriei pentru
instruciunea lw respectiv instruciune sw (aceste instruciuni au un al doilea acces la memorie).
Pentru etapa MEM (trei semnale):
8. RegWrite cu acest semnal n etapa de WB se nscrie operandul rezultat n registrul destinaie (rd
sau rt) din banca de registre ( care este de fapt pentru registru este semnalul de Load);
9. MemtoReg selectez prin Mux 2:1 din etapa WB care este sursa pentru operandul rezultat: fie data
citit din memorie (pentru instruciunea lw) fie data produs de ALU, pentru o instruciune
de tip R.
La aplicarea celui de al treilea impuls de ceas n registrul ID/EX se nscrie un cuvnt de 147 bii compus din:
ID/EX RegDest (1bit)
ID/EX ALUOp1, ALUOp2 (2bii)
ID/EX ALUSrs (1bit)
ID/EX Branch (1bit)
ID/EX MemRead, MemWrite (2bii)
ID/EX RegWrite (1bit)
ID/EX MemtoReg (1bit)
ID/EX rs (32bii)
ID/EX rt (32 bii)
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
187

ID/EX Imm = I15 xxx I15 I0 , imediatul extins cu bitul de semn (32 bii)
16

ID/EX cmpul (16-20) al registrului rt (5bii)


ID/EX cmpul (11-15) al registrului rd (5bii)
ID/EX NPC, adresa instruciunii urmtoare (32 bii)
3. Etapa de Execuie. n acest etap, deoarece acum se cunoate tipul de instruciune, pe MUX2:1 se selecteaz
ntre rd ( dac a fost instruciune de tip R) sau rt ( dac a fost instruciune de tip I) cu semnalul RegDest, care este
registrul de destinaie corect pentru instruciune.
Selectarea operaiei efectuat de instruciune pe ALU este realizat de semnalele de control, generate de
circuitul combinaional ALU control la intrarea cruia se aplic semnalele: cmpul Funcion din instruciune
(6bii) i semnalele ALUOp1, ALUOp2 (2bii) produse de unitatea de control prin decodificarea OPCODE.
Operandul A aplicat la ALU este coninutul registrului rs. Operandul B se obine prin selectarea pe MUX 2:1,
comandat de semnalul ALUSrs, ntre coninutul registrului rt sau Immediatul extins la 32 de bii. Pentru
instruciunea sw coninutul registrului rt se va aplica pentru nscriere la memorie n etapa urmtoare.
Pentru instruciunile de branch pe circuitul sumator (diferit de ALU) se calculeaz adresa de salt prin sumarea
ntre NPC (= PC+4) i Immediatul extins la 32 de bii apoi shiftat cu dou poziii la stnga (multiplicat cu 4).
Totodat, pe ALU se generaz i semnalul Zero ( = 1 dac cei doi operanzi aplicai la ALU sunt egali sau =0 dac
cei doi operanzi nu sunt egali) care este condiia de validare a saltului n etapa MEM ( pentru beq sau bne).
La aplicarea celui de al patrulea impuls de ceas n registrul EX/MEM se nscrie un cuvnt de 107 bii
EX/MEM Branch (1bit)
EX/MEM MemRead, MemWrite (2bii)
EX/MEM RegWrite (1bit)
EX/MEM MemtoReg (1bit)
EX/MEM rt (32 bii)
EX/MEM NPC + I15 xxx I15 I0 22 (32 bii) $rs + I15 xxx I15 I0 22
16 16

EX/MEM ALU result, AopB, (32 bii)


EX/MEM rd/rt (5 bii)
EX/MEM Zero
4. Etapa de acces la memorie i salt, MEM. n aceast etap rezultatul de la ALU poate fi utilizat ca o adres
de access la memoria de date ($rs + I15 xxx I15 I0 22 ) pentru instruciunile lw sau sw, sau este transmis fr
16

nici o modificare spre etapa WB, ca rezultat pentru instruciuni aritmetice i logice. Pentru instruciunea sw
coninutul registrului rt se aplic la memoria de date pentru a fi nscris la adresa accesat (ALU result), iar pentru
instruciuna lw se citete memoria de date de la adresa accesat ( calculat pe ALU ). Semnalele de control pentru
nscrierea sau citirea memoriei de date sunt MemWrite respectiv MemRead.
Dac instruciunea este de salt condiionat (Branch = 1) i condiia de salt este realizat, Zero =1, atunci se
generaz semnalul PCSrc = 1 care comand MUX 2:1, figurat n etapa IF, prin care se selecteaz pentru adresa
instruciunii urmtoare adresa de salt calculat (PC NPC + I15 xxx I15 I0 22 , iar pentru PCSrc = 0 se
16

selecteaz adresa instruciunii urmtoare (PC NPC = PC +4).


La aplicarea celui de al cincilea impuls de ceas n registrul MEM/WB se nscrie un cuvnt de 71 bii
MEM/WB RegWrite (1bit)
MEM/WB MemtoReg (1bit)
MEM/WB M[ALUresult], pentru instruciunea lw (32 bii)
MEM/WB ALUresult, pentru instruciune de tip R (32bii)
MEM/WB rs/rt (5 bii)
5. Etapa de nscriere a rezultatului, WB (Write Back). n aceast etap se selecteaz rezultul, prin semnalul de
control MemtoReg pe MUX2:1, ntre o dat extras din memoria de date ( pentru instruciunea lw) sau o dat
produs n etapa de execuie, ALU result (pentru instruciuni de tip aritmetice sau logice), data selectat se nscrie
n banca de registre la registrul de adres rd/rt , sub aciunea semnalului de control RegWrite.
Registru rt M[ALUresult] sau Registru rd ALUresult
Timpul de acces pentru nscrierea/citirea unui registru este chiar mai mic dect 1/2TCLK, de aceea se poate
considera c nscrierea se efectueaz n etapa a cincea,WB, pe prima jumtate din perioada semnalului de ceas.
Deci dac nscrierea se efectueaz n prima jumtate a perioadei de ceas (corespunztor etapei WB), atunci pe
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
188

aceeai perioad de ceas (corespunztor etapei ID) n a doua jumtate se poate realiza i citirea registrului
respectiv.
n figura urmtoare n structura de pipeline, diferit fa de figura anterioar, este reprezentat i unitatea de
control cu semnalele generate i punctele n care aceste semnale de control sunt aplicate; apoi sunt reprezentate
numai generarea semnalelor de control i explicaiile aferente fiecrui semnal de control.

Generarea semnalelor de control n unitatea de control i specificarea aciunii fiecrui semnal de contol

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


189

5.1.4. Hazardul n pipeline

Creterea de vitez (CV) de n ori la o procesare ntr-un pipeline cu n etape, n raport cu o procesare de tip non-
pipeline, se poate atinge doar cnd toate instruciunile sunt independente (procesarea uneia nu depende de
celelalte, deci se pot procesa n paralel) se ajunge la performana de o instruciune pe tact, CPI =1 (se presupune
c n pipe fiecare etap necesit doar un tact).
Toate tehnicile de procesare pe maini pipelinizate sau pe maini superscalare se bazeaz pe identificarea
sau crearea de instruciuni independente , cu procesare paralel- ILP ( Instruction Level Parallel), n timp sau n
spaiu (paralelism temporal sau spaial).
Imposibilitatea de procesare n pipe instruciune dup instruciune, pe fiecare tact, se reflect prin apariia
situailor de hazard, adic a unor etape goale n pipe (stall) , ceea ce nseamn c se consum un tact sau mai
multe dar nu se efectueaz procesarea instruciunii n acea etap/etape. Aceste situaii de hazard sunt puternic
dependente de organizarea pipe-ului, un program poate fi afectat de apariia de hazard pe o organizare de pipe i
s nu fie afectat de apariie de hazard pe o alt organizare de pipe.
Obinerea unui flux continuu fr hazard n pipe este o problem fundamentat care se pune pentru
creterea performanei de vitez, att la mainile pipelinizate ct i la mainile superscalare. Creterea de vitez n
prezena hazardului n pipe este
n
CV n
1 numumul de etape goale n pipe
Situaiile de hazard, dup natura care le genereaz, pot fi de trei tipuri:
1. Hazardul structural
2. Hazardul de date
3. Hzardul de control

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


190

5.1.4.1. Hazardul structural

Hazardul structural refer acea situaie n pipe prin care se introduc etape goale n fluxul de procesare din
cauza lipsei de resurse. Uneori, se accept situaia de hazard structural (etape goale/stall) dac nlturarea sa, prin
adugare de resurse suplimentare, ar costa prea mult n raport cu creterea de performa (vezi legea lui Amdahl).
n figura urmtoare se exemplific o situaie de hazard prin forarea introducerii unui stall n pipe datorit faptului
c pe tactul 4 sunt concurente dou accesri la o memorie care este de tip singur port pe ieire.

n figura anterioar, dac arhitectura este de tip von Neuwmann ( i nu Harvard) sau memoria nu este dublu
port pe ieire atunci pe tactul 4 exist competiie la memorie ntre instruciunea lw pentru a citi data i
instruciunea i+3 pentru etapa IF. Rezolvarea acestei situaii de hazard se rezolv prin oprirea etapei IF pentru
instruciunea i+3, prin introducerea unei etape goale in pipe, adic ntre instruciunea i+2 i i+3 se introduce o
etap goal care se propag prin pipe de la intrare spre ieire (la fel ca o instruciune). Introducerea etapei goale n
pipe pe tactul 4 determin, efectiv, ca pentru procesarea instruciunii i+3 s se consume 2 tacte i nu un tact ca
pentru celelate instruciuni. Aplicnd relaia anterioar pentru calculul creterii de vitez, CV, rezult o valoare <n.
Evident, o alt rezolvare fr stall n pipe este prin ntroducerea a unei memorii de date separat ( arhitectur
Harvard) sau utilizarea unei memorii comune pentru instruciuni i date dar dublu port pe ieire, deci introducerea
de noi resurse hardware (care cost).

5.1.4.2. Hazardul de date

A. Hazardul de tip RAW (Read After Right). Aceast situaie de hazard apare n pipe cnd o instruciune care
produce DATA ( instruciune generatoare) nc nu a generat data pn la momentul n care acea dat este
necesar pentru o instruciune urmtoare (instruciune consumatoare), ceea ce impune ntroducerea de unu sau
mai multe stall-uri n fluxul de instruciuni din pipe; aceast situie de hazard RAW este reprezentat n figura
urmtoare (cele dou instruciuni i i j se consider ca fiind successive n program).

Instruciunea consumatoare (j) trebuie s citeasc data nscris de instruciunea generatoare (i), Figura a), dar
dac instruciunea generatoare nc nu a nscris data pn la momentul cnd cea consumatoare trebuie s citeasc
data respectiv apare situaia, figura b), adic cea consumatoare va citi data care exista seja n registru sau locaie
de memorie nainte de nscrierea de ctre instruciunea generatoare. n astfel de situaii, de hazard RAW, trebuie
oprit (prin tehnici hard sau soft) citirea datei de ctre instruciunea j pn cnd instruciunea i va nscrie data
respectiv produs. Dependena de date ntre cele dou instruciuni se datoreaz algoritmului programului care se

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


191

ruleaz i aceasat dependen fundamental nu poate fi eliminat doar, eventual, dac se modific algoritmul, pe
cnd hazardul n pipe depinde de organizarea cii de date.
n figura urmtoare a) pentru un segment de program sunt reprezentate prin sgei dependenele de date ntre
prima instruciune (generatoarea), add $2, $1, $3, care are ca destinaie registrul $2 i urmtoarele trei
instruciuni (consumatoare) care au unul sau ambele registre surs tot registrul $2. Aceast situaie de hazard
RAW este rezolvat n figura b) prin blocarea pipe-ului, oprirea introducereii de noi instruciuni ( noi etape IF) n
pipe pn cnd prima instruciune nscrie data (etapa WB) n registrul destinaie $2; dar aceasta rezolvare de
hazard prin blocare a impus introducerea de trei etape goale n pipe (stall), ceea ce este echivalent cu un consum
de 4 (1+3) tacte de ctre instruciune 2.

Segmental de program cu dependen de date prezentat anterior, pentru rezolvarea situaiei de hazard RAW, la
procesorul MIPS necesit nu trei stall-uri de introdus n pipe ci numai dou datorit unei particulariti a
organizrii pipe-ului. Aceast particularitate const n faptul c perioada semnalului de ceas , TCLK, este destul de
lung ( fixat de durata etapelor de access la memorie IF i MEM) nct n etapa de WB nscrierea registrului
destinaie, $2, se poate realiza pe durat primei jumti a perioadei de ceas, iar pentru citirea unui registru surs
din banca de registre, n care s-a nscris data, n etapa de ID este suficient doar a doua jumtate din perioada
semnalului de ceas (deci numrul de stall-uri se reduce de la 3 la 2).

Exploatnd aceast particularitate, se poate ca pe durata unei singure perioade a semnalului de ceas, n prima
jumtate de perioad se nscrie registrul destinaie de ctre instruciunea generatoare n prima jumtate a etapei
WB, iar instruciunea consumatoare citete registrul surs (registru care a fost destinaie la instruciunea
generatoare) doar n a doua jumtate a semnalului de ceas din etapa ID. n figura anterioar se execut etapa IF
pentru instruciunea consumatoare pe tactul 2, se trece apoi n etapa ID pe tactul 3 (cnd ar trebui s se citesc
registrul $2, dar la aplicarea tactului 4 rezultatele etapei a doua ale instruciunii consumatoare nu sunt
nscrise/transmise n registrul pipe ID/EX, ci rmn blocate n aceast etap, instruciunea nu mai avanseaz n
pipe i nici nu se execut etapa EX, n pipe apare o etap goal (un stall) pe tactul 4. Pe durata perioadei tactului 5
n prima jumtate instruciunea generatoare nscrie data n registrul destinaie $2, iar n a doua jumtate a perioadei
tactului de ceas instruciunea consumatoare citete registrul surs $2, deci efectiv etapa ID (de citire/aducere a
operanzilor) pentru instruciunea consumatoare este pe durata tactului 5, iar pe tactul 6 instruciunea este trecut n
etapa EX, n consecin pentru instruciunea consumatoare s-au consumat 3 tacte (1+2stall ). Pentru instruciunea
consumatoare etapa ID este efectuat doar pe durata tactului 5 i nu pe tactul 3 ( n figur etapa pe acest tact este
tears), pe tactele 3 i 4 instruciunea consumatoare nu a efectuat nici o operaie, ceea ce n pipe este echivalent
cu 2 stall-uri.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


192

Rezolvarea situaiei de hazard RAW n pipe se poate realiza fie prin hard fie prin soft, ceea ce se va exemplifica
pentru procesorul MIPS.
1. Rezolvarea situaiei de hazard RAW prin blocarea pipe-ului. Acest mod de rezolvare n hard se reduce la
blocarea pipe-ului pentru instruciunea consumatoare ( neavansare) n etapa ID, care trebuie s citesc data din
registrul destinaie al instruciunii generatoare, iar pentru instruciunea urmtoare ( dup cea consumatoare) nu se
realizeaz etapa IF, instruciunea generatoare de DATA i continu etapele n pipe, dar prin aceasta n pipe ntre
instruciunea generatoare i cea consumatoare apar etape goale. Acest mod de procesare cu blocarea pipe-ului este
exemplificat n figura urmtoare n care se proceseaz un program care realizeaz operaiile:
A= B+D
C= B+F
pentru care compilatorul a alocat registrele: A$t3; B$t1; C$t5; D$t2; F$t4

2. Rezolvarea situaiei de hazard RAW n sof prin rearanjarea instruciunilor de ctre compilator (Compiler
Scheduling). Prin aceast modalitate soft, compilatorul insereaz ntre instruciunea generatoare de DATA i cea
consumatoare de aceast DATA attea instruciuni cte etape de stall ar fi fost necesare prin metoda de rezolvare
prin blocarea de pipe. Aceste instruciuni de inserat sunt aduse din intregul progam, dar prin aceast inserare de
instruciuni nu trebuie s se modifice semantica programului, dac nu se gsesc suficiente instruciuni pentru
inserat atunci pentru completare se introduc instruciuni NOP. Pentru acelai segment de program utilizat n figura
anterioar, n figura urmtoare se exemplific tehnica de compiler scheduling

Ideal, ar fi fost ca s se gseasc la compilare, n program, nc cinci instruciuni pentru a fi inserate n locul
instruciunilo NOP, cum s-a gsit instruciune lw $t4, 8($t0) pentru poziia trei, I3.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


193

3. Eliminarea hazardului RAW (eliminare stall) prin forwarding. Tehnica de eliminare a etapelor de stall
introduse pentru eliminarea hazardului RAW se bazeaz pe observaia c DATA produs de instruciunea
generatoare este deja produs n momentul cnd instruciunea urmtoare (consumatoare) necesit DATA pentru
procesare, cum este prezentat n figura urmtoare.

Dac instruciunea generatoare este de tip R ( nu i lw) atunci data este produs n etapa EX, iar la
aplicarea tactului 4 aceast dat este nscris n registrul pipe EX/MEM deci este disponibil la inceputul perioadei
T4. Instruciunea urmtoare (consumatoare) necesit data la nceputul etapei EX, adic la nceputul perioadei de
tact 4, deci se poate trimite nainte (forwarding) data nscris n registrul pipe EX/MEM la una din intrrile ALU
nct etapa EX a instruciuni consumatoare s se poat realiza. Dar cum se poate determina hazardul de date RAW
ntre instruciuni? aceasta se realizeaz prin utilizarea a ase comparatoare n modul urmtor:
1. se compar numrul registrului destinaie al instruciunii din etapa EX cu numerele registrelor surs
ale instruciunii care este n etapa ID (dou comparatoare) ;
2. se compar numrul registrului destinaie al instruciunii din etapa MEM cu numerele registrelor
surs ale instruciunii care este n etapa ID(dou comparatoare);
3. se compar numrul registrului destinaie al instruciunii din etapa WB cu numerele registrelor
surs ale instruciunii care este n etapa ID(dou comparatoare).
Cnd exist o identitate ntre numerele registrelor comparate se genereaz semnalul care indic o situaie de
hazard i se trimite data deja calculat de instruciunea generatoare la nceputul etapei EX a instruciunii
consumatoare. De fapt, sunt necesare doar 4 comparatoare deoarece compararea ntre etapa WB cu etapa ID
(punctul 3 anterior. ) nu mai este necesar, pentru c data calculat se nscrie n registru destinaie pe prima
jumtate a perioadei de ceas, iar n a doua jumtate se poate citi registrul surs de ctre instruciunea consumatoare

.
Dac instruciunea generatoare este load, lw, atunci data este generat prin citirea memoriei la sfritul
etapei a patra, MEM, iar la aplicarea tactului al cincilea data este nscris n registrul pipe MEM/WB, dar aceast
dat nu mai poate fi utilizat de instruciunea urmtoare (consumatoare) deoarece durata pentru etapa EX a
acesteia, tactul patru, s-a ncheiat.

Rezult c mecanismul de forwarding nu mai poate elimina complet introducerea de stall n pipe, data nscris n
registrul pipe MEM/WB, obinut prin citirea memoriei de date, se poate totui trimite prin forwarding la una din
intrrile ALU necesar procesrii din instruciunea urmtoare (consumatoare) numai dac etapa EX a acestei
instruciuni a fost ntrziat cu un tact, instruciunea consumatoare a fost blocat n etapa ID, adic s-a introdus un
stall n pipe. nseamn c perechea instruciune lw urmat imediat de o instruciune consumatoare a datei extras
din memorie necesit totdeauna introducerea ntre cele dou instruciuni a unei etape goale sau o alt instruciune
adus din program.
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
194

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


195

n figura urmtoare este prezentat modul cum se mplementeaz metoda de eliminare a hazardului de tip
RAW cnd instruciunea generatoare este o instruciune load, n acest caz eliminarea hazardulului se reduce doar
la o singur etap goal in pipe.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


196

EXEMPLUL 5.1. Pentru segmentul de program dat:


1. s indice prin sgei ntre instruciuni apariia de hazard la procesarea n pipe;
2. s se rezolve situaiile de hazard prin introducere de stall-uri prin blocarea pipe-ului, ct este CPI?
3. s se rezolve situaiile de hazard prin metoda forwarding, ct este CPI?

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


197

5.1.4.3. Hazardul de nume.

Dependena de date impus de algoritmul problemei poate determina n pipe situaia de hazard RAW , de
asemnea lipsa de resurse n pipe poate determina situaia de hazard structural, ambele aceste tipuri de hazard
deterioreaz corectitudinea fluxul de date n program precum i succesiunea de execuie. Situaia de hazard de
nume apare n pipe cnd succesiunea valorilor nscrise n registre nu mai reflect succesiunea corect impus de
logica programului. Efectiv, situaia de hazard se reflect printr-o concuren a instruciunilor n utilizarea
registrelor pentru nscriere, n consecin n pipe este necesar a se introduce etape goale/stall. Exist dou situaii
de hazard de nume referite ca: 1. hazard de tip WAW (Write-After-Write); 2. Harazard de tip WAR (Write-After-
Read).
1. Hazardul WAW (dependen de ieire). Acest tip de hazard apare cnd instruciunile i i j (consecutive) au
ca destinaie acelai registru sau locaie de memorie, dar instruciunea j nscrie naintea instruciunii i. Soluia
pentru aceast situaie de hazard const n duplicarea de registre cum este reprezentat n figura urmtoare

2. Hazardul de tip WAR (antidependen). Acest tip de hazard apare cnd ordinea normal din program prin
care instruciunea i citete data din registrul R, iar apoi instruciunea j nscrie o alt data n acelai registru este
inversat, adic nti instruciunea j nscrie data n registrul R i apoi instruciunea i citete data din acel registru .
Soluia pentru aceast situaie de hazard, la fel ca i la hazardul WAW, const n duplicarea de registre cum este
reprezentat n figura urmtoare.

Denumirea de antidependen este corelat cu situaia de dependen normal de date la care prima
instruciune produce data i a doua instruciune utilizeaz acea valoare, pe cnd la hazardul WAR este tocmai
invers, adic a doua instruciune distruge (prin nscriere) data pe care prima instruciune ar trebui s o utilizeze.
Hzardul de nume nu poate apare la organizare de pipe n care toate instruciunile ISA au acelai format iar
procesarea instruciunilor n pipe necesit aceei durat ciclu instruciune, Tinstr, i se face strict n ordinea n care
acestea sunt n succesiunea din program. n schimb, hazardul de nume poate apare cnd n ISA exist mai multe
tipuri de formate de instruciuni sau chiar cnd exist un singur tip de format dar instruciunile sunt trimise spre
procesare sau sunt terminate de procesat n pipe n afara ordinii n raport cu succesiunea instruciunilor din traseul
parcurs n program (vezi mainile superscalare).
Hazardul de nume n pipe se rezolv prin duplicare de registre, mecanism care este referit ca redenumirea
registrelor (register renaming), ceea ce se va exemplifica n continuare pe urmtorul segment de program
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
198

I1: R1 R2/ R3 ; aceast ntruciune necesit un Tinstr mult mai lung dect instruciunile I2 i I3.
I2: R4 R1 +R5 ; RAW cu I1
I3: R5 R6 +R7 ; WAR cu I2
I4: R1 R8 +R9 ; WAW cu I1

ntre I1 i I2 exist hazard RAW, I2 trebuie s atepte pn I1 nscrie registrul destinaie R1. Pentru c I2
trebuie s atepte dup I1 (care are Tinstr lung) atunci i I3 trebuie s atepte pe I2 deoarece intre I2 i I3 apare un
hazard WAR, dac I3 este executat nainte de I2 atunci sursa acesteia R5 ar fi nscris de destinaia instruciunii
I3 care este tot R5. Dar nici I4 nu poate fi iniiat pentru procesare pn cnd nu este terminat I1, deoarece intre
I4 i I1 exist hazard WAW prin registrul R1. Aceste dependene pot fi rezolvate prin metoda de redenumire a
registrelor dup cum se va explica n continuare
Prin denumirea registrelor:
un registru destinaie Ri dintr-o instruciune, notat fr index alfabetic, este considerat ca un registru logic
conform instruciunii din program;
prin redenumire, oricare nou valoare creat de o instruciune avnd ca destinaie registrul logic Ri va fi de
fiecare dat nscris ntr-un alt registru fizic notat succesiv i cu index alfabetic Ria, Rib, Ric,.... printr-un
proces de redenumire dinamic ( aceste registre fizice obinute prin redenumire, sunt alocate dinamic de
procesor dintre registrele libere la acel moment, unele procesoare au un set de registre libere special pentru
operaia de redenumire);
oricare referire ntr-o instruciune la registrul logic Ri , ca registru surs, va fi dirijat ctre cea mai recent
(recent n sensul secvenei instruciunilor din program) nscriere specificat ctre registrul logic Ri, dar
efectuat ntr-un registru fizic Ria, Rib, Ric,....
Redenumind registrele n segmentul de program anterior se obine urmtorul program (se consider c toate
registrele nu au fost redenumite nainte n acest segment de program, deci nu au nici un index):
I1: R1a R2/ R3 ; se redenumete registrul logic R1, devine registrul fizic R1a
I2: R4a R1a + R5 ; se redenumete registrul logic R4, devine registrul fizic R4a
I3: R5a R6 +R7 ; se redenumete registrul logic R5, devine registrul fizic R5a
I4: R1b R8 + R9 ; se redenumete registrul logic R1 (a doua oar), devine registrul fizic R1b
Se consider, ca exemplificare, c redenumirea ncepe doar cu acest segment de program, adic cu
instruciunea I1, iar registrele fizice libere sunt n plus, peste cele din banca de registre i sunt: R32, R33, R34,
R35, ..... Prin redenumire segmentul de program devine
I1: R32 R2/ R3
I2: R33 R32 + R5
I3: R34 R6 + R7
I4: R35 R8 +R9
Destinaia pentru I1 este registrul logic R1, prin redenumire, valoarea se nscrie n registrul fizic R1a =R32.
Pentru I2 sursa este R1a = R32, iar destinaia la registrul logic R4, nscrierea este direcionat spre registrul fizic
R4a =R33.
nstruciunea I3 are ca destinaie pe R5, dar redenumit nscrierea este direcionat spre R5a = R34
Instruciunea I4 are ca destinaie registrul logic R1 , dar prin redenumire (a doua oar) nscrierea este direcionat
spre R1b = R35.
Prin redenumirea registrului destinaie R5 din I3 redirecionat n registrul fizic R5a dispare antidependana
(WAR) ntre I2 i I3, acum I3 poate fi lansat n execuie imediat(seoarece nscrie n R34) fr redenumire I3 ar fi
trebuit s atepte pn I1 ar fi fost procesat complet iar I2 ar fi fost lansat n procesare. De asemenea, prin
redenumire dispare dependena de ieire (WAW) ntre I1 i I4 ( I1 nscrie n R32 iar I4 nscrie n R35) deci I4
poate fi lansat n procesare imediat dup I3.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


199

5.1.4.4. Hazardul de control

Situaiile de harzad denumite de control sunt generate de instruciunile care provoac salt n program.
Programul este parcurs adres dup adres, n ordinea de cretere a numerelor naturale, doar n cadrul unui bloc
liniar. Un bloc liniar (bloc de baz) este o succesiune de instruciuni cuprins ntre dou instruciuni de salt, deci o
secvenialitate nentrerupt, n blocul liniar se intr prin prima instruciune care este o instruciune int de salt i
se iese din blocul liniar printr-o instruciune de salt. Hazardul de control contribuie cu cea mai mare pondere n
micorarea performanei de vitez a procesorului; statistic, ntre 4-7 instruciuni de program una este de salt.
Micorarea preformanei de vitez este determinat de penalizarea (preul) la salt datorit faptului c pentru
instruciunea de salt n etapa de fetch nc nu se cunoate dac saltul se realizeaz (TAKEN) sau nu se realizeaz
(NOT TAKE) pn n punctul de control/(decizie) al instruciunii de salt, n consecin toate instruciunile
urmtoare care au fost introduse n pipe, dup instruciunea de salt respectiv, pn la mometrul deciziei din
punctul de control sunt anulate sau nu, dup caz. Numrul de instruciuni , D, intrate n pipe dup instruciunea
de salt dar anulate, dac condiia de salt este adevarat, este msura penalizrii la salt, dup cum este prezentat n
figura urmtoare.

Pentru rezolvarea hazardului de control este necesar o informaie pe baza creia se decide, cu o anumit
probabililitate, dac saltul se execut sau nu, iar aceast decizie poate fi luat static (n etapa de compilare)sau
dinamic (pe durata procesrii instruciunii de salt) sau combinat.
A. Rezolvarea static a situaiei de hazard de control. Rezolvarea static se reduce la decizia care ia pentru
instruciunea de salt n etapa de compilare a programului i care poate fi: predicia c saltul se execut sau
predicia c saltul nu se execut.
Predicia (static) saltul nu se execut

Predicia (static) saltul se execut


ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
200

n exemplul urmtor se analilzeaz situaia de salt pentru MIPS cnd predicia static este c saltul nu se execut
(Not Taken) i cnd predicia este c saltul se execut (taken).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


201

n aceste analize de predicie la salt, pentru simplificare, s-a considerat c se cunoate adresa de salt, iar n
punctul de contol se obine doar validarea condiiei de salt. Dac s-ar fi considerat c i adresa de salt se
calculeaz (nu se cunoate anterior) atunci nu s-ar fi putut aduce instrucinea de la adresa int calculat (k) i
introdus imediat dup instruciunea de salt. n realitatea instruciunea de salt calculeaz att adresa de salt ct i
efectuarea validrii condiiei de salt, deci informaia complet pentru ambele este disponibil doar n punctul de
control. Oricum, aceast analiz pentru ambele componente ale instruciunii de salt condiionat ( adres int,
condiie de salt) trebuie fcut pentru fiecare procesor n parte n funcie de particularitile sale.
Dar care este informaia necesar compilatorului pe care se bazeaz luarea decizei/prediciei de taken sau not
taken? Mai trebuie specificat c o predicie asupra unei instruciuni nu este fix, odat pentru totdeauna.
Informaia necesar pe care se bazeaz predicia este de natur statistic, un exemplu de o astfel de statistic este
prezentat n tabelul urmtor[4].
_________________________________________________________________________________________
Tipul de % de instr. de: % branch % jump
Aplicaie branch,jump, (din care (din care % Call % Return
call, return % Taken) % direct)
_________________________________________________________________________________________
SPEC95int 20,4 14,9 (46) 1,1 (77) 2,2 2,1
Desktop 18,7 13 (39) 1,1 (92) 2,4 2,1

n general, saltul napoi este realizat cu o probabilitate foarte mare, prin faptul c acesta efectueaz saltul de la
sfrit de bucl, pe cnd saltul condiionat nainte este realizat cu o probabilitate mai mic.

O recomandare arhitectural care micoreaz penalizarea la salt (D) const n realizarea instruciunilor de salt
avnd punctului de control ntr-o etap ct mai la nceputul intrrii n pipe, n aceast modalitate numrul de
instruciuni care urmeaz n pipe dup instruciunea de salt este mai mic, deci n caz c aceste instruciuni trebuie
eliminate implicit penalizarea este mai redus. La MIPS aplicnd aceast recomandare, punctul de control de la
sfritul etapei a patra (nscrierea pe al cincilea impus de tact n registrul pipe MEM/WB) este mutat n etapa a
doua ID, deci penalizarea la salt se reduce de la D = 3 la D = 1. Pentru aceasta, dup cum rezult din figura
urmtoare, n etapa a doua se ntroduc un comparator (pentru detectarea condiiei = sau ) i un sumator ( pentru
calculul adresei instruciunii int, PC NPC + Imm x 4)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


202

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


203

B. Rezolvarea dinamic. Prin metodele dinamice de rezolvare a hazardului de control decizia dac
instruciunea de salt condiionat se execut sau nu (taken/not taken) este luat chiar n timpul rulrii instruciunii
respective, adic o predicie dinamic. Luarea deciziei se bazeaz pe informaia obinut din analiza efecturii i
a neefecturii salturilor anterioare ale instruciunii respective de salt ( adic istoria local a salturilor) i uneori i
a analizei efecturii i a neefecturii salturilor ale altor instruciuni de salt anterioare din programul care se
execut ( adic istoria global a salturilor). Structura de principiu pentru implementarea prediciei dinamice este
prezentat n figura urmtoare i este referit prin Bufferul intei de Salt, BTB (Branch Target Buffer).

Cmpurile bufferului intei de salt sunt:


Adresa instruciunii de salt. n acest cmp sunt nscrise adresele tuturor instruciunilor de salt din pagina
curent a programului. Cnd n etapa Fetch este accesat o instruciune n memoria I-cache, adresa
instruciunii respective se aplic n paralel i la BTB, care este o memorie cu accesare asociativ, deci adresa
respectiv din PC se compar simultan cu toate adresele instruciunilor de salt nscrise ; dac adresa
respectiv exist n acest cmp din BTB nseamn c pentru instruciunea care este n curs de aducere din
memoria I-cache n etapa Fetch se tie deja c este o instruciune de salt pentru care va trebui s se determine
adresa de salt ( care se extrage din cmpul int) i s se decid ( prin informaia din cmpul Predicie) dac
saltul se execut sau nu. Dac ieirea comparatorului este NU, iar dup decodificarea instruciunii aduse
rezult c este totui o instruciune de salt, dup execuia ei, sistemul de operare va nscrie (actualiza) n BTB
i adresa acestei instruciuni de salt ( care nu fuseser nscris n BTB);
cmpul status conine informaie referitoare la managementul BTB;
cmpul predicie conine predicia dac instruciunea adus n etapa Fetch se execut sau nu (taken/not taken).
Dup fiecare execuie a instruciunii de salt n acest cmp se renscrie cu, dup cum
instruciunea a efectuat sau nu saltul la adresa int i aceasta va constitui predicia de taken/not taken pentru
urmtoare accesare a acestei instruciuni. Informaia taken/not taken poate fi coninut ntr-un cuvnt de unu,
doi sau mai muli bii.
cmpul int conine informaie despre inta instruciunii de salt, aceast informaie despre int poate fi
stocat sub forma:
1. instruciunea de la adresa tin sau o succesiune de instruciuni ncepnd cu instruciunea de la adresa int;
2. adresa instruciunii int pentru saltul instruciunii de salt ;
3. cteva instruciuni ( de nceput) de la int plus adresele ctorva instruciuni urmtoare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


204

Predictorul pe un bit indic efectuarea saltului prin valoarea unui singur bit, dac valoarea bitului de predicie,
p, din cmpul predicie este nscris n p =1 indic pentru instruciunea care se extrage n etapa fetch c saltul se va
efectua, iar pentru p =0 c saltul nu se va efectua; valoarea bitului de predicie a fost nscris tot de aceast
instruciunea de salt, ultima dat cnd a fost executat. Dac la execuia prezent se gsete bitul de predicie p =
1 i saltul se efectueaz, instruciunea de salt, la terminare, renscrie bitul de predicie tot n valoarea 1, iar dac
saltul nu se efectueaz nscrie p = 0; invers, dac la execuia prezent se gsete bitul de predicie p = 0 i saltul
se efectueaz, instruciunea de salt la terminare nscrie bitul de predicie p = 1, iar dac saltul nu se efectueaz
renscrie p = 0. Rezult c instruciunea de salt nu modific valoarea bitului de predicie dac se comport ca i
data trecut i modific valoarea bitului de predicie dac se comport diferit fa de data trecut. Regula de
predicie se bazeaz pe supoziia c: dac saltul s-a efectuat ultima dat cnd s-a executat instruciunea de salt
atunci se va efectua i la execuia prezent, iar dac saltul nu s-a efectuat data trecut nu se va efectua nici de data
aceasta.
Acest tip de predictor pe un bit, n cmpul predicie, este simplu de implementat, dar are dezavantajul c pentru
buclele din program, care sunt foarte frecvente, predictorul indic greit de dou ori valoarea prediciei, prima data
la intrarea i a doua oar la ieirea din bucl, dup cum rezult din figura urmtoare. La prima intrare n bucl,

la sfritul primei iteraii evident c valoarea predictorului (pentru instruciunea de salt de la sfritul buclei) are
valoarea zero indicnd c saltul nu se face dar n realitate saltul se efectueaz, deci instruciunea de salt nscrie p =
1; dup parcurgerea ultimei iteraii se gsete p =1, dar saltul nu se mai face deoarece se iese din bucl, deci
instruciunea de salt nscrie p = 0 ; rezult n total dou greeli n predicia saltului n execuia buclei din program.
De fiecare dat cnd se vine i se iese din bucl se repet cele dou greeli.
Dezavantajul, prin apariia celor dou greeli de predicie la fiecare nceput i sfrit de executare a buclelor
de program, poate fi eliminat dac se realizeaz un predictor pe doi bii. De data aceasta cmpul predictor din
BTB, pentru cazul general, este structurat ca un numrtor reversibil cu saturaie de n bii. Un numrtor cu
saturaie numr n sens direct de la 000....00 (gol) pn la umplerea total (saturaie) 111.11, iar n continuare
strile urmtoare rmn tot la 111.11 fr a trece la 000....00, la numrarea n sens invers numr de la
111.....11 pn la golirea total (saturaie) 000....00, iar n continuare strile urmtoare rmn tot la 000....000
fr a trece la 111.....11. Pentru un numrtor cu saturaie modulo 2 n totdeauna instruciunea de salt efectueaz
saltul (Taken) cnd bitul cel mai semnificativ al numrtorului cu saturaie ( predictoru) are valoarea 1xx.....xx (
se situeaz n jumtatea superioar a intervalului de numrare) i nu efectueaz saltul (not Taken) cnd bitul cel
mai semnificativ are valoarea 0xx..xx ( se situeaz n jumtatea inferioar a intrevalului de numrare). Trecerea
dintre Taken i not Taken se realizeaz la jumtatea intrevalului de numrare.

Pentru un predictor cu doi bii, cu diagrama de stri reprezentat n figura anterioar, numrtorul cu saturaie
va indica faptul c saltul se efectueaz cnd are valoarea n jumtatea superioar a intrevalului de numrare, adic
pentru valorile 11 i 10, iar cnd are valoarea n jumtatea inferioar a intrevalului de numrare, adic pentru
valorile10 i 00, indic faptul c saltul nu se efectueaz. Rezult c numai dou greeli consecutive n efectuarea
saltului pot determina modificarea valorii prediciei, apare astfel un intreval de histerezis n funcionarea
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
205

predictorului. La predictoarele pe doi bii ntru-un BTB cu 4096 intrri exactitatea prediciei poate atinge o
probabilitate de peste 80%.
Pentru determinarea direcia de salt (Taken/not Taken) de la structurile de salt mai complexe, de exemplu cele
de la primitiva IF-THEN-ELSE, s-a observat c este afectat i de direciile de salt ale altor instruciuni de salt
executate anterior instruciunii de salt curent, altfel spus pe lng istoria local a instruciunii de salt curente
contribuie i istoria global a celorlante instruciuni de salt; Pe baza acestei observaii s-au realizat predictoare
corelative care cupleaz istoria local a instruciunii curente cu influiena istoriei global a instruciunilor de salt
anterioare.
Predictorul corelativ sau predictor pe dou niveluri i bazeaz predicia pe propria istorie a efecturii
salturilor la instruciunea curent (primul nivel, istoria local) i pe istoria efecturii salturilor de la ultimile k
instruciuni de salt (al doilea nivel, istoria global) parcurse n program nainte de a se ajunge la instruciunea de
salt curent. Exist multe variante de predictoare corelative [4], [7], cele mai sofisticate predictoare corelative
ridicnd exactitatea n determinarea predicie, de la 80 % pentru predictoarelor necorelative pe doi bii, pn la o
exactiate de predicie de peste 95% pentru programele cu numere intregi i peste 97% pentru aplicaiile stiinifice
(virgul flotant).

5.2 MICROPROCESOARE CU EXECUII MULTIPLE

Aceste organizri de P iniiaz ntr-un tact de ceas execuia mai multor intruciuni, deci realizeaz un CPI<1;
(Cycle Per Instruction), dar pentru a fi mai intuitiv n cuantificare de performan se utilizeaz inversul acestei
metrici, adic numrul de instruciuni pe tact IPC =1/CPI (Instruction Per Cycle). n acest capitol se vor prezenta
trei tipuri de organizare de P cu execuii multiple:
1. Microprocesorul superscalar;
2. Microprocesorul VLIW/EPIC
3. Microprocesorul vectorial

5.2.1. Microprocesoare superscalare

Timpul consumat de procesor pentru execuia unui numrde instruciuni, Ninstr, este exprimat de relaia

CPUtime = Ninstr CPI TCLK


iar pentru micorarea CPUtime se poate proceda, fie prin micorarea CPI, fie prin micorarea TCLK ori ambele
componente/factori simultan.
Pentru micorarea perioadei de ceas, TCLK, sau creterea frecvenei, fCLK , este necesar a se diviza instruciunea
n ct mai multe etape, nct procesarea din fiecare etap s poat fi efectuat ntr-o perioad de ceas mai redus,
aceast cale de implementare a dus la procesoare cu foarte multe etape n pipeline referite prin procesoare
superpipelinizate. Dar, tendina de cretere de frecven este restricionat de:
creterea de putere disipat n tehnologia CMOS, Pd = C V f
timpul de propagare prin registrele pipe.
Pentru micorarea numrului de tacte pe instruciune, CPI<1, adic mrirea numrul de instruciuni executate
pe cycle/ tact, IPC (Instruction Per Cycle) la valori mai mari de 1, IPC=1/CPI >1, este necesar ca la un anumit
moment, n aceeai etap de procesare, s fie procesate nu una ci mai multe instruciuni; procednd n aceast mod
se face trecerea de la procesorul scalar pipelinizat la procesorul superscalar. Daca pentru o structur clasic de
pipe cu cinci etape existena a mai multor instruciuni procesate n aceeai etap de procesare, de exemplu n IF,
ID, WB, se poate realiza relativ uor nu la fel se poate realiza i n etapa de procesare EX. Pentru procesarea mai
multor instruciuni simultan n etap EX sunt necesare mai multe uniti funcionale, dup cum rezult din figura
urmtoare. Unele uniti funcionale, cum sunt cele pentru: operaii ALU, load, store, branch, pot realiza operaia

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


206

respectiv ntr-un singur tact, dar altele cum sunt: nmulire, mprire sau operaiile n virgul flotant necesit
mai multe tacte pentru execuie.

Pentru a obine execuia tuturor instruciunilor i din etapa EX ntr-un singur tact pe instruciune trebuie ca,
pentru unele operaii, unitile funcionale respective s fie i acestea, la rndul, pipelinizate i, evident, aceste
pipe-uri de execuie s funcioneze full. Pentru ca fiecare unitate funcional pipelinizat s execute o
instruciune pe tact etapa de execuie EX a proceorului trebuie alimentat simultan cu mai multe instruciune, deci
i n etapa fetch trebuie aduse din I-cache mai multe instruciuni. Un procesor superscalar la care se aduc din I-
cache n etapa fetch m instruciuni este referit ca m-way superscalar. Transformrile descrise anterior, de la un
procesor scalar cu o pipelinizare clasic, pe cinci etape, la un m-way superscalar, impune modificarea structurrii
i n restul etapelor din pipe, nu numai n etapa de fetch. Teoretic, la un m-way superscalar la care s-a crescut de k
ori frecvena de ceas fa de unul scalar cu aceeai ISA se obine, teoretic, o cretere de vitez de k x m ori. Se
poate tinde spre aceast cretere teoretic de vitez, mk, doar la valori mici de m i k, pentru c la valori mari ale
acestora apar multe aspecte limitative datorit: funcionrii, proiectrii i tehnologiei.
Structurarea etapelor din pipe este reprezentat n figura urmtoare, pipe-ul fiind partajat n front-end i back-
end. Partea de front-end, care ar corespunde etapelor de IF i ID din pipelinizarea clasic, acum este compus din
etapele: fetch, decode, rename i dispatch, iar partea de back-end care ar corespunde etapelor de EX, MEM i WB
din pipelinizarea clasic, acum este compus din etapele: issue, execute i commit.
1. Instruction fetch. n aceast etap, similar ca la pipe-ul clasic, sunt extrase instruciunile din I-cache i depuse
ntr-un buffer de instruciuni, IB. Pentru un m-way superscalar sunt extrase i aduse simultan pn la m
instruciuni pe tact, dei unele estimri pentru valorile lui m sunt de 8 sau chiar 16 instruciuni extrase i
aduse pe tact, pentru implementrile curente nu s-a depit 6 intruciuni i nu exist tendina de a crete acest
numr. n aceast etap este de asemenea realizat predicia de salt pe baza unor variante de branch target
buffer, BTB, deci este o etap de fetch i predicie la salt.
2. Decoding.Instruciunile din IB sunt trecute n etapa de decodificare unde pot exista pn la m decodificatoare.
3. Renaming registre. Redenumirea registrelor este necesar pentru eliminarea situaiile de hazard de tip WAW
i WAR, cum s-a artat n seciunea 5.1.4.3 prin exemplul cu urmtorul segment de program.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


207

I1: R1 R2/ R3 ; aceast ntruciune necesit un Tinstr mai lung dect instruciunile I2 i I3, deci
; consum mai multe tacte.
I2: R4 R1 +R5 ; RAW cu I1
I3: R5 R6 +R7 ; WAR cu I2
I4: R1 R8 +R9 ; WAW cu I1

Utiliznd registrele libere R32, R33, R34, R35, ..... i prin redenumire, segmentul de program devine

I1: R32 R2/ R3 ; aceast nstruciune necesit un Tinstr mai lung dect instruciunile I2 i I3
I2: R33 R32 + R5 ; RAW cu I1
I3: R34 R6 + R7
I4: R35 R8 +R9
pentru care acum au disprut hazardurile de nume WAW i WAR (dar nu i hazardul fundamental RAW ntre I1 i
I2). Este foarte probabil ca rezultatele instruciunilor I3 i I4 s se obin naintea rezultatelor de la instruciunile
I1 i I2, ceea ce face ca valorile din registrele R34 i R35 s fie nscrise n registrele destinaie logice, R1 i R5,
nainte ca valorile din registrele R32 i R33 s fie nscrise n registrele destinaie logice R1 i respectiv R 4, deci
valoarea calculat n I1 se va nscrie n R1 peste valoarea calculat n I4. Valorile n registrele destinaie logice
trebuie s fie nscrise n ordinea n care sunt n program, adic trebuie s pstreze semnatica programului.

nscrierea rezultatelor n registrele logice, dup execuia instruciunilor, conform ordinii din program se
realizeaz cu ajutorul bufferului de reordonare, ROB (ReOrder Buffer) care este o structur FIFO (First In
First Out), adic o structur de registru de deplasare. Dup redenumire, fiecare instruciune, n ordinea n care se
afl n program, este ntrodus n coada (tail, ultima poziie) din ROB mpreun cu tuplul corespunztor. Tuplul
unei instruciuni din program nscris, ntr-o intrare din ROB, cuprinde urmtorii parametrii: flag, valoare, numele
registrului destinaie, tipul de instruciune, cu urmtoarele semnificaii:
flag un bit a crei valoarea 1 indic faptul c execuia instruciunii respective s-a terminat, acest flag se nscrie
cu valoarea 0 cnd o intruciune din etapa de redenumire este nscris/introdus n coada (tail) din ROB;
valoare valoarea calculat de instruciune;
numele registrului destinaie registrul Rd, n care se va nscrie valoarea calculat de instruciunea respectiv;
tipul de instruciune OP ( aritmetic, load, store, branch etc).
n urma redenumirii unei instruciuni tuplul corespunztor este introdus n intrarea din coada din ROB, cu valoare
0 pentru flag i fr valoarea calculat (NVC):
ROB(tail) = (0, NVC, Rd, OP)
Tail next (tail)

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


208

Dup execuia instruciunii n pipe, pentru a se putea realiza cuplarea ntre instruciunea redenumit i intrarea
aceleiai instruciuni in ROB, n etapa de redenumire, se ataeaz acelai index/tag att instruciunii redenumite
care intr n pipe pentru execuie ct i intrrii instruciunii respective n ROB. Cnd execuia instruciunii n pipe
este complet, n intrarea corespunztoare din ROB este nscris valoarea calculat a rezultatului (NVC) precum
i fanionul flag = 1.
4. Dispatch. n aceast etap instruciunile sunt dispecerizate/trimise spre partea de back-end din pipe.
Deoarece n etapa de redenumire au fost eliminate doar situaiile de hazard de nume (WAW i WAR) nu i
situaiile de hazard structural i de date, RAW, unele instruciunile nc nu pot fi trimise n back-end pn cnd nu
sunt eliminate i aceste situaii de hazard, care ar genera etape de stall. Pentru a nu introduce etape de stall n
pipe, dispecerizarea instruciunilor spre back-end se face nu n ordinea din program ci n afara ordinii (out-of-
order); dispeceriznd n afara ordinii, instruciunile care pot fi executate, nu trebuie s se atepte dispecerizarea
pn cnd pentru instruciunile din fa lor se rezolv hazardul RAW sau structural. n segmentul de program
anterior, deoarece I2 este n dependen RAW cu I1 i nu poate fi executat pn cnd I1 nscrie R1, deci I2
trebuie s atepte, atunci se trimit n back-end urmtoarele dou instruciuni, I3 i I4. O instruciune poate s fie
meninut n aceast etap i n cazul n care n back-end nc nu exist o unitate funcional liber pentru operaia
repectiv. Dispecerizarea se face spre etapa de issue din back-end.
5. Issue. nstruciunile dispecerizate n etapa anterioar sunt n aceast etap (issue) bufferate sub forma unei
cozi de ateptare situat naintea unitilor de execuie. Aceast coad de ateptare poate fi implementat ntr-un
singur buffer centralizat pentru toate unitile funcionale (instruction window) sau pot fi mai multe cozi de
ateptare n buffere separate situate n faa fiecrei uniti funcionale, aceste buffere fiind denumite staii de
rezervare (reservation station). Instruciunea prin dipecerizare este copiat n staia de rezervare corespunztoare
operaiei care trebuie efectuat. Instruciunea este meninut n staia de rezervare pn n momentul cnd
operanzii si sunt diponibili i unitatea funcional repectiv este liber pentru procesare ei. Operanzii instruciunii
care sunt deja diponibili n registre (din banca de registre) sunt imediat copiai n staia de rezervare, iar pentru
operanzi care nu sunt nc produi de ctre o alt unitate funcional se ateapt pn cnd aceti operanzi devin
disponibili. Cnd un operand este produs de o unitate funcional acel operand, chiar nainte de a fi nscris n
registrul su logic din banca de registre, dac este un operand ateptat de alte instruciuni, este trimis la toate
staile de rezervare unde este ateptat (forwarding) ca operand surs. Cnd instruciunea din staia de ateptare are
toi operanzii disponibili i unitatea funcional este liber este lansat (issue) spre execuie, dac exist
concuren ntre mai multe instruciuni pentru lansare (au deja operanzii surs diponibili) spre unitatea funcional
se va lansa instruciunea care este cea mai veche n staia de rezervare. n general, la mainile actuale numrul de
instruciuni lansate pe tact nu este mai mare de ase.
6. Execuie. n aceast etap, dup lansarea unei intruciuni din staia de rezervare spre unitatea funcional
respectiv, se realizeaz execuia instruciunii. Deoarece dispecerizarea se face n afara ordinii din program, la fel
i lansarea din staiile de lucru spre unitile funcionale, iar timpul de execuie nu este egal pentru toate
instruciunile, toate acestea determnin c i completarea/terminarea execuiei instruciunilor s fie n afara
ordinii.
7 Commitment. n aceast etap instruciunile care au fost terminate n afara ordinii sunt readuse/reordonate
pentru ca rezultatatele obinute s fie nscrise n registrele logice de destinaie/D-cache n succesiunea n care au
fost instruciunile n program. Reordonara fiecrei instruciuni executate se bazeaz pe ordinea pe care tuplul
instruciunii respective l are n ROB.n etapa de redenumire a operanziilor att instruciunea ct i tuplul introdus
n RO au primit acelai index/tag , deci pe baza acestuia, instruciunea dup ce a fost executat i tuplul pot fi
cuplate n etapa commit; reamintim c succesiunea/ordinea, de deplasare a tuplurilor , din ROB este
identic/copie cu succesiunea instruciunilor din program. Cnd instruciunea, Instri, a fost completat/executat
rezultatul/valoarea este nscris n cmpul NVC (valoarea=NVC ) din tuplul din ROB, la fel este nscris i
fanionul flag =1, indicnd c rezultatul poate fi nscris la destinaie. Dar nscriere rezultatului /valoarii n registrul
destinaie, Rdi, poate fi realizat numai cnd tuplul instruciunii, Instri, a ajuns n poziia de la ieirea din structura
FIFO (head), ceea ce formal se exprim:

If ((ROB(head) = Instri) and flag(ROB(head)))


then begin Rdi = rezultat ; head next (head) end

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


209

else repet acelai test n urmtorul ciclu

Procesoarele actuale cele mai performante sunt acestea de tip superscalar la care aranjarea instruciunilor
(scheduling) pentru procesare este out-of-order i care se realizeaz n timpul procesrii (dynamic pipeline
scheduling), pentru exemplificare n figura urmtoare este prezentat procesorul AMD Opteron X4 (Barcelona).
Aceste organizri de procesor implic o foarte complex parte de control, din acest cauz dezvoltare lor n
contiunare este pus sub semmnul ntrebrii deorece exist concuren prin apariia celor de tip multicore
( mutiprocessors on a chip, CMP), cu partea de control pentru un core relativ mai simpl.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


210

5.2.2. Microprocesoare de tip VLIW (Very Long Instruction Word)

Ideea procesorului cu instruciune lung are ca origine microprogramarea pe orizontal unde o


microinstruciune, prin lungimea sa de peste 400 bii i codificare pe cmpuri pentru diferite componete din cale
de date, poate comanda simultan diferite componente.
Prin procesul de complilare/asamblare instruciunile din program care pot fi executate n paralel sunt
selectate i joncionate ntr-o instruciune lung (un singur cuvnt). Aceste instruciuni lungi, realizate de
compliator, sunt stocate ca cuvinte distincte n memoria de programe. Plasarea intruciunii ntr-o anumit poziie
n cuvntul instruciune lung fixez deja unitatea funcional pe care acea instruciune va fi executat. O
structurare de principiu, pentru un P de tip WLIW cu patru uniti funcionale, este prezentat n figura urmtoare.

Dac n cuvntul lung este inclus i un cmp prin care se prezint (procesorului) explicit i informaie
despre procesarea paralel a instruciunilor din cuvntul lung denumirea este de arhitectur EPIC (Explicity
Parallel nstruction Computer).
Performanele acestor procesoare este esenial determinat de inteligena compilatoarelor. Prin
angajarea masiv a compilatorului n realizarea unui nalt grad de paralelism n execuie, n raport cu procesoarele
superscalare unde obinerea unui nalt grad de paralelism se realizeaz (n hard) prin rearanjarea dinamic a
instruciunilor n pipe, se pot obine procesoare care sunt mult mai simple (rearanjarea static a instruciunilor
fiind mai simplu de realizat dect rearanjarea dinamic). Cauzele care reduc obinerea unui grad ridicat de
paralelism (n execuie) la nivel de instruciune (ILP) sunt:
hazardul de date (RAW)i de nume (WAW, WAR);
hazardul de control;
latena memoriei.

Un exemplu de arhitectur WLIW (EPIC) este cea dezvoltat n cooperare de Intel i Helvett-Packard, referit
ARHITECTURA IA-64, realizat comercial de Intel prin procesoarele Itanium1 i Itanium 2 , prezentat n
continuare.
Cerine impuse arhitecturii IA-64
compatibilitate complet cu arhitectura IA-32;
scalabilitate pentru o familie de procesaoare (ntr-o gam larg de configuraii i implementri);
calculabilitate complet n lungimea de (operanzi) 64 bii.
Caracteristicile arhitecturii IA-64
explicitarea paralelismului la nivel de instruciune cod main, ILP (Instruction Level Parallelism);
suport (arhitectural) pentru compilator n realizarea explicitrii la nivel cod main, ILP, constnd din:
1.predicare complet (pentru toate instruciunile), 2.controlul execuilor speculative;
resurse hardware pentru execuia paralel: 1.128 registre generale ( de 64 bii), 2. 128 registre
floating point (de 82 bii), 3. 64 registre predicative (de 1 bit) , 4. 8 regitre pentru calcularea
salturilor (de 64 bii), 5. 128 registre suport pentru aplicaii ( de 64 bii).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


211

Formatul instruciunii

Formatul cuvntului (instruciune lung) Bundle (legtur, maldr, snop)

Deoarece un bundle n memorie ale lungimea de 16 byte (128bii), adresarea se realizeaz din 16 n 16
repectnd relaia ADRESA(modulo 16) = 0. Pentru o adresare corect cuvntul ADRESA are totdeauna ultimii
patru bii egali cu zero, adresele accesate succesiv sunt: xx..xx0000, xx.x(x+1)0000, xx.x(x+2)0000;
spaiul de adresare este de 64 bii ( 264 adrese ), cum este reprezentat n figura urmtoare

Organizarea procesorului IA-64 (posibilitate de scalare)

Aportul compilatorului

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


212

Procesoarele WLIW, respectiv arhitectura EPIC, au fost gndite ca o alternativ la procesoarele superscalare
care prin rezolvrile excesive de tip diamic n pipe au dus la foarte complexe implementri ale unitiilor de
control. Undeva, se repet istorie de la nceputul anilor 80 cnd ahitectura CISC (o solicitare puternic a hard-
ului hardul a intrat n soft) a fost nlocuit cu arhitectura RISC (o utilizare extensiv a soft-ului (compilatorului)
softul a intrat n hard); acum, la fel, se face o rezolvarea ct mai mult static, adic n etapa de compilare.
Compilatorul, n funcie de maparea care se poate realiza ntre tipul de instruciune i unitatea funcional, pe care
instruciunea se poate procesa, cum este prezentat n tabelul din figura urmtoare, analizeaz instruciunile din
codul surs al programului i selecteaz instruciunile care se pot grupa cte trei,

formnd cuvntul lung, un bundle. Dar prin aceast grupare, compilatorul totodat genereaz i o informaie
Template (cinci bii) prin care i comunic procesorului n funcie de poziia instruciunii(slot) n bundle pe ce
tip de unitate de procesare se va executa insstruciunea . Tipurile de coduri de template (cuvinte de cinci bii),
repectiv tipurile de unitile funcionale (I-integer, M-acces memorie, A- aritmetice, B-branch, F virgul flotant)
care sunt asignate pentru fiecare template sunt prezentate n tabelul urmtor.

Se extrag simultan din I-cache dou bundle ( 6 instruciuni, 6x16 bytes) i sunt trimise spre execuie. Din tabelul
anterior, cu codurile template, se observ c dup unele uniti funcionale, utilizate pentru acel template, este
introdus simbolul ; ; (split) . Simbol split limiteaz/separ pn la ce poziie (unde este plasat split-ul)
instruciunile din cele dou bundle introduse n execuie se pot procesa n parallel.
n figura urmtoare este exemplificat modul de procesare paralel pe Itanium. Pe tactul k se extrag din I-cache
dou bundele unul cu codul template 0 H iar cellat cu codul 10 H. Pentru toate cele ase instruciuni sunt
diaponibile uniti funcionale, deci toate cele ase instruciuni se pot procesa n paralel. Pe tactul k+1 se extrag
urmtoarele dou bundle cu codurile template 11H i 0H, dar n codul MIB(11H) exist i simbolul ; ; (split) ceea
ce nseamn c se execut n paralel doar primele trei instruciuni pe unitile funcionale M, I, B iar instruciunile
din al doilea bundle care necesit unitile funcionale M, I, I ateapt pn la tactul urmtor ( aceasta corespunde

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


213

primelor implemnetri ale procesorului Itanium). n tactul k+2 se proceseaz din nou n paralel dou bundle,
dintre care unul (MII, 0H) este cel amnat din tactul k+1.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


214

5.2.3 Procesoare vectoriale

Aceste tipuri de procesoere au fost concepute pentru lucrul cu vectori. n ultimii ani procesoarele vectoriale sunt
utilizate ca i coprocesoare pe lng un procesor n segmentul de aplicaii multimedia, pentru procesarea strim-
urilor de eantioane de date de tip imagine sau sunet; mai nou acest segment este acoperit din ce n ce mai mult de
noille coprocesoare de tip GPU.
Considerm un vector X = (X63, X62, X61, Xi, . X1, X0) care este o matrice unidimensional (coloan), cu 64
de componente, fiecare component fiind un numr n virgul flotant exprimat sub forma unui cuvnt de 32 de
bii, conform standardului IEEE754. Un registru registru vector n care se nscrie un astfel de vector, n virgul
flotant, are 64 de celule , iar fiecare celul are lungimea de 32 de bii, cum este reprezentat n figura urmtoare.

Tipurile de operaii effectuate cu vectori sunt sistematizate n urmtorul tabel:

OPERAIA EXEMPLE
Yi = f1 (Xi) f1 = cos Xi, X i , e X i (funcii transcendente)
Scalar = f2 (Xi) f2 = X i (intrare vector ieire scalar)
Zi = f3(Xi, Yi) f3 =Xi + Yi , Xi Yi, Xi Yi (intrare vector ieire vector)
Yi= f4(scalar,Xi) f4 = scalar x Xi (combinaie scalar-vector)

n
De exemplu, pentru nmulirea a dou matrici, Z = X x Y; pentru elementul rezultat, zij x ik y jk , se realizeaz
k 1
nti operaie de tip f3 (nmulire) apoi operaia de tip f2 (ieire scalar). De asemenea, reamintim efectuarea
operaiei de adunare/scdere in virgul flotant (pentru un vector cu componentele exprimate n virgul flotant),
se consider XE <YE


X Y Xs BX E Ys BYE Xs BX E YE Ys BYE
X Y Xs B XE
Ys BYE
X B
s
X E YE
Y B
s
YE

Pentru urmtoarele dou numere X Xs BX E 0,3 102 ; Y Ys BYs 0,2 103 (sub forma normalizat)


X Y 0,3 102-3 0,2 103 0,3 101 0,2 0,23 103 230

X Y 0,3 102-3 0,2 103 0,3 101 0,2 0,17 103 - 230

Etapele realizrii operaiei de adunare, pentru efectuarea acesteia n pipeline, sunt [C], [S], [A], [N]:
1. C compar exponenii, compar valoarea celor doi exponeni prin scderea valorii lor (XE YE);
2. S shiftare mantis, se obine prin deplasarea mantisei care are exponentul mai mic (XE <YE) spre
dreapta cu un numr de poziii egal cu diferena (XE YE);
3. A adunarea mantiselor;
4. N normalizarea rezultatului, se obine prin deplasarea mantisei rezultate cu un numr de poziii pn
cnd aceasta are prima cifr dup virgula zecimal diferit de zero, corespunztor se scade/crete
exponentul.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


215

Organizarea de principiu a unui procesor vectorizat cu o singur ALU pipelinizat. Cei doi operanzi
vector X iY sunt citii din memorie i depui n registrele vector de intrare, cum este reprezentat n figura
urmtoare (se considere vectori cu 64 de componente). Apoi, pe fiecare tact componentele de acelai rang Xi, Yi,
i = 0, 1, 2,..., 62, 63 din registrele de intrare sunt trimise la unitatea funcional pipelinizat (pe patru etape[C], [S],
[A], [N]). Dup primele patru tacte (latena pipe-ului) se obine la ieirea ALU, pe fiecare tact, cte o component
a vectorului rezultat Zi, i = 0, 1, 2,..., 62, 63 care este nscris n registrul vector de ieire.

.
Organizarea de principiu a unui procesor vectorial cu multiple ALU pipelinizate. Cu aceast
organizare, spre deosebire de organizarea anterioar cnd era o singur unitate funcional, fiind patru uniti
funcionale n paralel se trimit din registrele de intrare spre cele patru pipe-uri pe fiecare tact cte patru perechi de
componente vector, Xi, Yi; Xi+1, Yi+1; Xi+1, Yi+2; Xi+3, Yi+3, obinndu-se pe tact cte patru componente ale
vectorului rezultat Zi; Zi+1; Zi+2; Zi+3, cum este reprezentat n figura urmtoare.

_________________________________________________________________________________________
EXEPMLUL 5.2. Pe procesorul MIPS convenional s se realizeze procesarea buclei DAXPY, de asemenea s
se proceseze i pe procesorul MIPS extins vectorial.

Pentru procesarea de tip vectorial, foarte frecvent, este ntlnit expresia DAXPY(vezi f4 i f3 din tabelul
anterioar )

Y = a X +Y; (DAXPY- Double precision aX plus Y)


ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
216

n care: X, Y vectori (n acest caz fiecare cu 64 componente/cuvinte), fiecare cuvnt cu lungimea


2 x 32bii = 64 bii (dubl precizie d simbol n mnemonicul instruciunii);
a scalar, dubl precizie (2 x 32bii = 64 bii).
Extensia procesorului MIPS la un procesor MIPS vectorial necesit introducerea de registre vector, cum este
prezentat n organizrile anterioare, plus adugarea n ISA a unor instruciuni vectoriale, care vor avea n opcode
literea v, de exemplu:
addv.d adun doi vectori n dubl precizie;
addvs.d adun la toate componentele vectorului un scalar, n dubl precizie;
lv, sv load, store un vector ( toate componentele, n acest caz 64 de cuvinte fiecare de 64 bii).

Adresa de nceput din memorie pentru vectorul X este n registrul $s0, pentru vectorul Y n registrul $s1, iar
adresa din memorie pentru scalarul a este A.

Codul DAXPY pentru MIPS convenional:

l.d $f0, A($zero) ; se ncarc scalarul a n registrul floating-point $f0


addiu $r4, $s0, 512 ; stabilete adresa limit superioar pentru componentele vectorului X
Bucl: l.d $f2, 0($s0) ; ncarc n $f2 componenta X(i)
mul.d $f2, $f2, $f0 ; aX(i)
l.d $f4, 0($s1) ; ncarc n $f4 componenta Y(i)
add.d $f4, $f4, $f2 ; aX(i) + Y(i)
s.d $f4, 0($s1) ; nscrie n memorie aX(i) + Y(i)
addiu $s0, $s0, 8 ; adresa urmtoare din memorie pentru componenta X(i)
addiu $s1, $s1, 8 ; adresa urmtoare din memorie pentru componenta Y(i)
subu $t0, $r4, $s0 ; calculeaz diferena pn la limita superioar
bne $t0, $zero, Bucl ; dac nu s-a atins limita superior proceseaz componenta urmtoare

Codul DAXPY pentru MIPS extins vectorial:

l.d $f0, A($zero) ; se ncarc scalarul a n registrul floating-point $f0


lv $v1, 0($s0) ; n reg. vector $v1 se ncarc toate cele 64 de componente ale vect. X
mulvs.d $v2, $v1, $f0 ; $v2 aX
lv $v3, 0($s1) ; n reg. vector $v1 se ncarc toate cele 64 de componente ale vect. Y
addv.d $v4, $v2, $v3 ; $v4 aX + Y
sv $v4, 0($s1) ; nscrie rezultatul n memorie

Comparnd cele dou programe rezult:


programul pe procesorul convenional aduce (fetch) din memorie aprope 600 de instruciuni, pe cnd la
varianta extins vectorial sunt aduse din memorie doar ase instruciuni, deci diferen de transfer pe magistral.
Aceasta rezult deoarece varianta clasic itereaz n bucl de 64 de ori; din fiecare iteraie ultimile patru
instruciuni (addiu, addiu, subu, bne) constituie regia buclei, nu realizeaz efectiv calculul pentru DAXPY.
n programul vectorial operaiile de calcul, care se efectueaz prin cele dou instruciuni
mulvs.d $v2, $v1, $f0 ; $v2 aX i addv.d $v4, $v2, $v3 ; $v4 aX + Y, curg nentrerupt de 64 de
ori fr a se efectua 64 de iteraii n bucl. Mai mult, n programul convenional trebuie introduse stall-uri ntre
instruciunea a patra (mul.d $f2, $f2, $f0 ) i a asea (add.d $f4, $f4, $f2), la fel ntre a asea (add.d $f4, $f4,
$f2) i a aptea (s.d $f4, 0($s1), deoarece exist hazard RAW. n programul vectorial o dependena de tip RAW
introduce stall-uri doar pentru prima component a vectorului, dup care celelalte componente ale vectorului curg
continuu n pipe, deci stall-uri pe un vector n raport cu un stall-uri pe interaie la procesarea convenional; n
acest exemplu sunt cam de 64 ori mai puine stall-uri la procesarea vectorial n raport cu cea convenional.
Totui, pentru progamul vectorial trebuie considerat i timpul de ncrcare din memorie n registrele de intrare a
celor doi vectori; pentru o ncrcare paralel a vectorilor cu o componet pe tact sunt necesare 64 tacte.
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
217

5.3 SISTEME MULTIPROCESOR

Visul, din totdeauna, al arhitecilor din domeniul calculatoarelor a fost s realizeze calculatoare prin integrarea de
procesoare, de preferat simple, astfel nct s se obin un calculator scalabil care s ofere performane i pre la
cerere. Pn n prezent, dezvoltarea calculatoarelor a fost evolutiv i s-a bazat aproape exclusiv pe procesarea
secvenial, iar organizarea realizat pe baz de monoprocesor (arhitectura de tip von Neumann) este organizare
de tip serie. Performanele de vitez ale procesoarelor s-au bazat n primul rnd pe paralelismul la nivel de
instruciune, ILP, prin pipelinizare: sub form de execuie out-of-order la organizrile superscalare ( rearanjare
dinamic), prin rearanjare static la procesoarele VLIW (EPIC) sau, ntr-un fel, prin procesarea vectorial.
Sistemele multiprocesor necesit schimbarea modului de abordare deoarece prin existena a n procesoare
rezult o organizare paralel, iar pentru acestea softul este concurenial (n general, programare paralel).
Sistemele multiprocesor cnd nu sunt realizate cu procesoare discrete ci sunt pe singur chip, n care sunt
integate procesoarele componente, sunt referite ca procesoare multicore (multicore processors) sau CMP (Chip
MultiProcessors). Procesarea pe sisteme multiprocesor poate fi realizat n urmtoarele dou variante:
1. procesarea paralel de program de progam independente (job-level parallelism sau process-
level parallelism, TLP- Task Level Parallelism) cnd pe fiecare procesor component sunt executate
programe sau pri de progam independente;
2. procesarea paralel a unui program ( parallel processing program, DLP- Data-Level Parallelism)
cnd date ale aceluiai program sunt procesate n paralel (simultan) pe mai multe procesoare componente.

Domeniul sistemelor multiprocesor, a fost explorat pn n prezent mai mult sub forma unor abordri
experimentale, dar cu certitudine acesta este domeniul care va deveni norm n viitor, i care, poate, va duce la o
dezvoltare revolutiv. Pentru sistemele multiprocesor suportul tehnologic, conform legii lui Moore, exist, dar mai
trebuie ca i componenta de programare paralel s devin curent. Aspectele care sunt nc deficitare n
elaborarea de soft concurenial, prin care s fie utilizate din plin cele n procesoare ale sistemulului, sunt:
repartizarea sarcinilor pe fiecare procesor;
ncrcarea echilibrat a procesoarelor;
sincronizarea sarcinilor;
comunicarea ntre procesoare (sarcini).
S-ar crede, i s-ar dori, ca creterea performanei de vitez, CV (speed-up), s fie liniar cu creterea numrului
de procesoare din sistem, dar n realitatea aceast cretere este mult subliniar. Pentru oricare program
cu execuie paralel exist i un anumit segment de execuie secvenial i de sincronizare. Presupunem c pentru
execuia acelui program pe un singur procesor segmentul care se execut secvenial necesit un timp s, iar
segmentul n care exist potenialul de execuie paralel, dar acum se execur secvenial pe un singur procesoar,
necesit un timp p. Conform legii lui Amdahl, dac timpul total de execuie al programului pe un singur procesor
este T1 = s + p, iar timpul total de execuie pe un sistem multiprocesor cu n procesoare este T2 = s + p/n, atunci
rezult creterea de vitez egal cu
T s p
CVn 1
T2 s p / n

Aceast relaie arat c pentru sistemele multiprocesor creterea de vitez nu este o dependen liniar funcie
de creterea numrului n de procesoare componente, ci este o dependen subliniar; s-ar obine o dependen
liniar, CVn n , numai cnd ntreg programul poate fi procesat n paralel, adic nu exist segmentul secvenial, s
= 0. Dac n aceast relaie se normalizeaz timpul la timpul de execuie serial pe un sistem monoprocesor, T1
= s + p = 1, adic se consider procesarea secvenial pe monoprocesor ca unitate, iar numrul de procesoare este
foarte mare (n) atunci maximul creterii de vitez (n raport cu unitatea, monoprocesorul) este
1 1
CV
p s
s

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
218

De exemplu, dac intervalul de timp din program pentru procesarea secvenial din timpul total de execuie al
ntregului program pe monoprocesor este s =0,2 (20%), atunci creterea maxim de vitez poate atinge valoarea
1/0,2 =5, cnd (n). n figura urmtoare este reprezentat grafic dependena creterii de vitez, CV, n funcie de
numrul n de procesoare din sistem, cnd s = 20%; panta pentru CV se reduce mult cnd n este mai mare de 6-7
procesoare. De exemplu, pentru a atinge un CV = 4 sunt necesare 16 procesoare, cu 64 de procesoare se obine CV
= 4,7, iar pentru 128 de procesoare creterea de vitez atinge doar valoarea de 4,85 (<5). Aceste rezultate se
obin doar cnd toate accesrile la memorie cache sunt cu succes i mprirea segmentului p, de procesare paralel
din program, pe fiecare procesor se face n pri egale cu p/n (ncrcare echilibrat), ceea ce n realitate se
realizeaz greu. S presupunem c segmentul de procesare paralel ( consum un timp p pe un uniprocesor) este
executat de 100 procesoare, dar unuia dintre procesoare i se aloc nu 1% (0,01p) din sarcin ci 2% (0,02p), deci
fiecare dintre celelalte 99 de procesoare va procesa un timp egal cu (1p-0,02p)/99 = 0,98p /99 = 0,009899p.
Timpul ct procesorul mai ncrcat va mai procesa, dup ce procesarea paralel s-a terminat pe celelalte 99 de
procesoare, va fi egal cu 0,02p 0,009899p = 0,010101p, iar acest timp este, de fapt, un timp de procesare serial
care se nsumeaz cu timpul serial s al progamului, rezultnd un timp total de procesare secvenial mai lung
(s+0,010101p)!, deci o cretere de vitez mai mic.
Creterea de vitez prin adugarea de resurse (procesoare) reflect creterea de performan a sistemului Adar
nu reflect i eficiena utilizrii acestor resurse. Se poat introduce a metric i pentru eficien, Eficienn, sub
forma
Eficienan = CVn/n

a crei reprezentare grafic, n funcie de numrul de procesoare, este suprapus peste reprezentarea creterii de
vitez n figura urmtoare. Astfel se poate corela creterea de vitez cu valoarea eficienei obinute prin adugarea
de procesoare n sistem, de exemplu: pentru patru procesoare creterea de vitez este de 2,5 iar eficiena obinut
pe procesor este de 0,6; pentru 16 procesoare creterea de vitez este de 4 iar eficiena obinut pe procesor este de
0,25; iar pentru 64 de procesoare creterea de vitez este de 4,7 iar eficiena obinut pe procesor este de 0,075.
Rezult c prin adugarea de procesoare eficiena pe fiecare procesor scade.

Exist o clasificare a organizrii calculatoarelor, introdus de M. Flynn n 1966, n funcie de numrul de


instruciuni din fluxul de instruciuni i de numrul de date din fluxul de date procesate, care se repatizeaz la
elementele de procesare, PE(Preocessing Element); astfel pot fi identificate urmtoarele patru organizri cu
reprezentarea din Figura urmtoare:
Single Instruction, Single Data (SISD);
Single Instruction, Multiple Data (SIMD);
Multiple Instruction, Single Data (MISD);
Multiple Instruction, Multiple Data (MIMD).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


219

Organizarea SISD, o singur instruciune i o singur data, corespunde organizrii convenionale de uniprocesor.
MISD, un stream de instruciuni i o singur dat, nu afost construit, nu are aplicaie comercial.
SIMD, aceeai instruciune este aplicat la mai multe PE-uri opernd asupra mai multor strimuri de date, deci se
exploateaz paralelismul la nivel de date, DLP ( Data-Level Parallelism), aceeai operaie se execut simultan pe
fiecare PE, dar cu alte date. Fiecare PE are memoria sa (de date), iar controlul calculatorului acceseaz o memorie
de instruciuni comun de unde acceseaz (fetch) i dispecerizeaz o singur instuciune la toate PE-uile
componente. Aceast organizare acoper arhitecturile: vectorilale, superscalare cu extensie spre set de isntruciuni
multimedia i perocesoarele GPU.
MIMD, fiecarui PE i se aplic propriul strim de instruciuni care opreaz asupra propriului strim de date, deci un
paralelism la nivel de task. MIMD-ul este mai flexibil i mai general aplicabil dect SIMD-ul, dar, evident, mai
scump. MIMD-ul poate realiza si procesri de tipul paralelismului la nivel de date, specific organizrilor de tip
SIMD, dar necesit soft ( de regie) suplimentar.
Acest taxonomie, n principiu, are n primul rnd o utilitate didactic, pentru c n practic sistemele cu
procesoare multiple sunt o hibridizare ntre organizrile SISD, SIMD i MIMD.
.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


220

5.3.1. Calculatoare de tip SIMD

Organizarea SIMD tipic const ntr-o singur unitate de control i n elemente de procesare, PE ( Processing
Unit/Element). Unitatea de control realizeaz fetch, decodificarea i transmiterea aceleeai instruciuni, pentru a
fi executat, la toate cele n elemente de procesare, care sunt CPU-uri dar fr unitate de control, referite i ca
procesoare matriceale. Sincronizarea execuiei pe toate PE-urile se realizeaz prin transmisia aceleeai

instruciuni de ctre unitatea de control; fiecare PE avnd propriile sale registre i propria sa memorie de date (nu
i de program!). Motivaia iniial pentru organizarea de tip SIMD a fost reducerea costului unitilor de control
pentru toate elementele de procesare, de asemenea reducerea dimensiunii memoriei de program, deoarece este
necesar un singur program pentru toate elementele de procesare. Calculatoarele de tip SIMD sunt potrivite pentru
structurile de date identice, care pot fi procesate n paralel, cum ar fi bucle for n structurile matriceale. n tipul de
organizare SIMD se ncadreaz foarte bine procesoarele vectoriale, aceeai instruciune opereaz identic asupra
tuturor componentelor unui vector.
n clasa de SIMD pot fi ncadrate i procesoarele superscalare, crora li s-a exins ISA cu instruciuni pentru
pocesare multimedia. Prin procesare multimedia se nelege crearea, codificarea i decodificarea, procesarea,
vizualizarea i transmiterea informaiei digitale multimedia pentru: audio, imagini, video, i grafic. Pentru
eantioanele de semnal audio (codificate pe 8 sau 16 bii) sau pentru pixelii unei imagini (codificai pe 4 cuvinte
cu lungimea de 8 bii pentru cele trei culori fudamentale RGB(Red, Green, Blue) plus tansparena) rezult
streamuri data cu urmtoarele particulariti :
1. fiecare cuvnt data din stream este limitat ca lungime (de exemplu 8 bii);
2. volum mare de astfel de date, iar asupra fiecrei cuvnt data se aplic aceeai operaie.
Cuvintele data de tip multimedia pot fi mpachetate ntr-un cuvnt mai lung, de exemplu, opt astfel de date de un
byte se formeaz un cuvnt lung de 64 bii. Mai mult, unitile funcionale din unitile de procesare pot fi
divizate pentru a realiza, n paralel, aceeai operaie pentru fiecare cuvnt data din cuvntul lung, de exemplu o
unitate aritmetic ce realizeaz adunare pentru dou cuvinte de 64 de bii este partajat pentru a efectua n paralel
8 adunrii a opt perechi de operanzi de un byte. Pentru astfel de procesri multimedia, ncepnd cu anii 90, ISA
procesoarelor superscalare a fost extins, n acest scop, cu seturi de instruciuni specifice (aceast extensie uneori
cuprinde mai mult de o sut de instruciuni !). De exemplu, pentru arhitectura x86 ncepnd cu Pentium II s-au
introdus 57 instruciuni referite MMX ( Multimedia Extension), apoi nc 13 instruciuni pentru Pentium III,
referite SSE (Streaming SIMD Extension), iar la Pentium 4 s-a ajuns, n total, la 144 instructiuni referite SSE2,
dar n 2004 s-a mai adugat nc 13 instruciuni, referite acum, toate instruciunile extinse, prin abreviaia SSE3.
n 2010 s-a introdus extensia multimedia Advance Vector Extention, AVX, care lucrez cu cuvinte multimedia
mpachetate n lungimi de 256 bii ; AVX include posibilitatea, pentru viitor, la lungimi de 512 i 1024 bii.
De asemenea, i procesoarele GPU pot fi considerate ca fiind o variant de SIMD

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


221

5.3.2. Calculatoare de tip MIMD

Organizarea de tip MIMD este cea mai general, mai multe procesoare, fiecare cu propriui cache, opereaz n
paralele n mod asincron. O distincie ntre organizrile de tip MIMD se poate face n funcie de accesul
procesoarelor la memorie i de modul de comunicare ntre ele:
1. cu un spaiu de adresare comun (shared-memory) tuturor procesoarelor i comunicare prin instruciuni
load-store (SMP);
2. cu spaii de adresare independente i comunicare prin transfer de mesaje (Clustere)

1. Organizarea de tip SMP (Shared Memory multiProcesors), cu o reprezentare de principiu ca n figura


urmtoare, prezint un singur spaiu (comun) de adresare, dar care este partajat pentru fiecare procesor. Toate
cele n procesoare plus memoria principal sunt conectate mpreun prin intermediul unei magistrale, n unele
implementri poate exista i o magistral de control, de exemplu pentru sincronizare.

Uzual, toate procesoarele sunt identice, dar pot fi i diferite dac au aceeai ISA. Schimbul de date ntre
procesoare este realizat prin intermediul memoriei principale cu instruciunile de tip load-store. Deoarece timpul
de acces al tuturor procesoarelor la memoria principal partajat este acelai (uniform), aceast organizare mai
este referit i prin abreviaia UMA ( Uniform Memory Acces).
Organizarea de tip UMA, incluznd un numr nu prea mare de procesoare identice, a constituit prima structur
pe baza cria s-a implementat primele microprocesoare multicore.
Deoarce memoria principal este comun pentru toate procesoarele, la un moment dat, poate apare
inconsistena datelor ntre diferitele cache-uri, ceea ce este referit prin coerena cache. Pentru explicarea apariiei
incoerenei ntre datele dintre diferitele cache-uri se va considera, n figura urmtoare, o structur UMA din trei
procesoare, n care s-a reprezentat doar cele trei memorii cache (C1,C2,C3) corespunztoare procesoarelor P1, P2,
P3 i memoria principal.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


222

Iniial toate cele trei cache-uri, C1, C2, C3, sunt goale. Apoi procesorul P1 acceseaz variabila A (de valoare A),
care nefiind n cache (miss) este adus i nscris n cache C1. De asemenea procesorul P2 citete variabila A, dar
fiind miss n cache C2 va citi aceast valoare, fie din memorie, fie din cache C1, depinde de protocolul de
coeren, i o va nscrie n C2. n acest moment C1, C2 i memoria principal au cte o copie corect a valorii
variabilei A, Figura a). Apoi, procesorul P3 nscrie n C3 pentru variabila A valoarea nou produs A1, dar
deoarece aceast variabil nu a fost adus nc n cache apare evenimentul de miss la nscriere, pentru care se pot
genera urmtoarele dou cazuri. Primul caz, procesorul pe lng nscrierea valorii A1 n C3 va trimite valoarea
A1 la C1, C2 i memoria principal, deci toate cache-urile i memoria principal au o copie valid pentru variabila
A, Figura b); acest protocol de up-datare este similar cu tehnica de nscriere write-through de la un monoprocesor
cu memoria cache. Al doilea caz, procesorul P3 printr-un protocol de invalidare nscriere trimite un mesaj de
invalidare la C1, C2 i memoria principal, deci n acest moment copia valid A1, pentru valoarea variabilei A, se
afl doar n C3, ceea ce este similar cu tehnica writeback de la un monoprocesor cu memoria cache. Iat c, n
acest caz n sistem exist dou valori pentru variabila A, valoarea A1 n C3 i valoarea A n C1, C2 i memoria
principal, deci cache-urile nu sunt consistente! ceea ce este reprezentat n Figura c). Pentru astfel de sisteme
multiprocesor care partajeaz o magistral comun, pentru rezolvarea situaiile de incoeren cache, este
implementat snoopy protocol. Pe baza acestui protocol, toate mesajele transmise pe magistrala comun partajat
sunt interceptate i ascultate de ctre controllerele cache ale tuturor procesoarelor, i, n consecin, se acioneaz
dup cum n cache-ul respectiv exist sau nu o copie corect a valorii datei care a fost procesat.
Utlizarea partajat a unei singure magistrale comune pentru oganizrile multiprocesor de tip UMA prezint
urmtoarele avantaje: simplitate, cost redus, uurin n utilizare, precum i posibilitatea implementrii unui
protocol simplu de coeren cache snoopy protocol. Dar pe de alt parte, magistrala comun partajat are i
urmtoarele limitri: restricionri de natur electric (lungime, ncrcare), numr redus de dispozitive care se pot
conecta, scalabilitatea redus i posibilitatea apariiei de strangulri datorit concurenei dispozitivelor conectate;
toate acestea au ca i consecin direct reducerea vitezei de transfer. n consecin, pentru eliminarea acestor
limitri se substituie comunicare pe magistral cu o comunicare pe o reea de intreconectare.
Organizare pe baza unei reele de intreconectare. Pentru unele organizri de multiprocesoare memoria
principal (comun) existent la organizarea de tip UMA este repartizat, ca memorii locale, la fiecare din
procesoarele din sistem, iar conectarea se realizeaz printr-o reea de interconectare, cum este reprezentat n figura
urmtoare.Toate memorile locale sunt parteal aceluiai spaiu de adresare! n aceast organizare, cu memorii
locale, dac la execuia unei instruciunii de tip load-store apare o situaie de miss la propriul cache, atunci primul
acces se realizeaz la memoria local a procesorululi respectiv, dar dac i acest acces este miss se continu cu
acces, prin reeaua de interconactare, la memoriile de la celelelate procesoare. Evident c n funcie de calea de
acces pentru un procesor, la locul unde se afl sursa (n cache-ul sau memoria local proprie sau n memoriile
locale de la celelalte procesoare), depind i timpii de acces, care nu sunt egali, de unde i denumirea pentru
aceast organizare cu abreviaia NUMA ( NonUniform Memory Acces).

2. Organizare de tip message passing. Alternativ la organizarea de tip SMP este cea n care fiecare procesor
are propriul su spaiu de adresare, o organizare clasic pentru un astfel de multiprocesor este prezentat n figura
urmtoare. Procesoarele comunic ntre ele, nu printr-un spaiu de memorie comun/partajat, ci prin trimiterea i
primirea de mesaje, de unde i denumirea de organizare de tip message passing. Fiecare procesor component are
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
223

rutin de trimis mesaje i rutin de recepionat mesaje. Dac procesorul emitor necesit confirmarea c un mesaj
a ajuns la destinaie, procesorul receptor trimire o confirmare la procesorul emitor. Programarea pentru acest tip
de organizare ridic anumite dificulti, deoarece orice comunicare n program, de tip message passing, trebuie
identificat n avans de programator. Astfel de organizri sunt recomandate pentru procesarea paralel de
programe independente (job-level parallelism) sau aplicaii cu mic transfer de comunicaie ntre procesoare, cum
ar fi: cutare Web, servere mail sau servere de fiiere.

O variant foarte curent, de organizare de tip message passing, o constituie clusterele. Un cluster este, n
general, o colecie de calculatoare obtenabile comercial, conectate ntre ele prin I/O pe baza unei reele locale
(LAN) standard de switch-uri i cabluri, care pentru sarcini ce nu necesit comunicaii intensive ntre calculatoare
ofer un raport cost/performan mult mai bun dect organizrile cu memorie partajat
Organizarea de tip cluster n rapoart cu organizarea de tip SMP prezint urmtoarele dezavantaje:
costul administrrii unui cluster compus din n maini este aproximativ acelai cu cel al administrrii a n
maini independente, pe cnd costul de administrare unei organizri cu memorie partajat de n procesoare
este aproximativ egal cu cel al administrrii unei singure maini;
deoarece conectarea calculatoarelor ntr-un cluster se face prin I/O al fiecrui calculator, pe baza unei
reele standard, pe cnd procesoarele ntr-un SMP sunt legate printr-o reea de interconectare, rezult
pentru clustere o mai redus performa de comunicare;
deoarece un cluster este compus din n maini independente necesit n memorii i n copii de sisteme de
operare, pe cnd o organizare SMP necesit doar o singur memorie partajat i o singur copie de
sistem de operare.
n schimb:
pentru un cluster, care este format din maini independente conectate ntr-o reea local, este mai uor ca
o main s fie izolat dect un procesor n SMP;
este mult mai uor de realizat exstensia unui cluster dect a unui sistem SMP.
Din organizrile de tip cluster, foarte populare n anii 90 au rezultat: centrele de date , supercalculatoarele i
WSC [1].

Centre de date (datacenter) sunt o colecie (cluster) de maini i produse software, centralizat, pentru
necesitile IT ale unei firme. Prin aceast centralizare, de suport hard i soft, se asigur o eficien i protecie
pentru necsitile IT.
Supercalculatoare, HPC ( High Performance Computers), sunt un cluster de milioane de procesoare de vitez
ridicat, conectate printr-o reea rapid de comunicare ntre noduri, care realizeaz aplicaii de calcul cu o larg
comunicaii ntre nodui i la o frecven foate ridicat. Uzual, utilizarea nu este de programe n paralel ci de
programe stiinifice lungi i independente care pot ocupa intevale chiar i sptmni, fr un schimb cu reele din
exterior. Astfel de HPC cost de ordinul sute de milioane de dolari.(vazi Clase (de aplicaii) pentru calculatoare n
cursul introductiv).

WSC ( Warehous Scale Computers), sunt componentele fundamentale pentru seviciul Internet ( search,
online maps, online shoping, email services etc) i Cloud Computing ( Software as a Service- SaaS). Un WSC
trebuie privit ca un singur (cluster) calculator compus dintr-un numr mare ( 50 000- 100 000) de servere
concentrate ntr-o singur hal cu o puternic reea electric de alimentare ( zeci-sute de MW) i o infrastructu de
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
224

rcire (costul pentru un WSC este peste $150 000 000). S-ar putea considera un WSC ca un datacenter extins la o
scar foarte mare, n principiu da, dar ntr-un WSC exist o uniformitate a echipamentelor hardware (servere) chiar
i a soft-ului pe cnd ntr-un datacenter exist o neuniformitate a echipamentelor hardware i soft-ului utilizat. n
imaginile urmtoare, pentu Un WSC Google sunt prerentate: 6.21- fotografia serverului; 6.19- seciune prin
containerul cu servere; 6.20- circulaia aerului de rcire prin container; iar ultima reprezint imaginea halei n care
sunt plaste 45 containere.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


225

La adresa http://research.google.com/pubs/HardwareandArchitecture.html se poate vizualiza un film de prezentare


a unui WSC Google.
Pentu Personal Mobile Device, PMD, organizarile de tip SIMD par a fi mai atractive dect cele de tip MIMD,
argumentele n favoarea SIMD sunt:
1. Extensia aplicaiilor actuale cu paralelism la nivel de date, DLP (Data-Level Parallelism) de la domeniul
tiinific, puternic bazat pe calcul matricial, i la domeniul multimedia pentru procesare de sunet i imagine.
2. Din punct de vedere al eficienei energetice este mai avantajos lansarea unei singure instruciuni care
efectuez aceeai operaie asupra asupra mai multor date dect aducerea i executarea a cte unei instuciuni
pentru fiecare dat.
3. i, poate cel mai important, programatorul continu s gndesc secvenial, dar se obine cretere de vitez
prin operaii paralele asupra datelor.

5.3.2. Reele de intreconectare multiprocessor

Conectarea procesoarelor n organizarea de tip UMA, de regul, este realizat pe o magistral comun
partajat, ceea ce impune ca la un moment dat doar un singur procesor s comunice pe magistral. Pentru alte
organizri i un numr ridicat de procesoare conectarea acestora se realizeaz prin intremediul unei reele de
interconectare. O reea de intreconectare se reprezint printr-un graf n care (n figurile urmtoare): un arc
reprezint o legtur/cale de comunicaie, un nod (reprezentat ca un punct) este constituit dintr-un switch, iar
perchea procesor memorie, P-M, este reprezentat ca un ptrat plin. De la un switch (nod) legturile sunt la
perechea P-M i la alte switch-uri, cum este reprezentat n Figura a.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


226

Performana unei reele de intreconectare se apreciaz dup:


latena pentru transmiterea i recepia unui mesaj, cnd reeaua nu este ncrcat;
throughput, numrul maxim de mesaje ntr-o perioad dat de timp;
ntrzierea cauzat de concurena pe o anumit legtur;
variaia de performan n funcie de tipul de mesaj transmis;
tolerana la defecte (sistemul s poat opera n prezena defectrii unor componente);
puterea disipat pe reea.

Costul impementrii unei reele pe chip este funcie de:


numrul de swtch-uri;
numrul de ci conectate la un switch;
limea unei legturi (nr de bii);
lungimea unei legturi pe suprafaa de siliciu.

O simpl topologie de reea de intreconectare este prezentat n Figura b (anterioar), care s-a obinut prin
conectarea mpreun a unei succesiuni de noduri, realiznd configuraia inel (ring). Configuraia ring ar prea
similar cu o magistral ale crui capete au fost unite. n reeaua ring spre deosebire de o magistral, n care la un
moment dat doar un singur procesor comunic pe magistral, pot exista simultan mai multe transferuri.
Transferurile n ring nu totdeuna se realizeaz ntre dou noduri vecine, mesajul ca s ajung la nodul final trebuie
s treac prin mai multe noduri ntlnite pe traseu.
n extrema opus fa de simpla topologie de reea ring se situeaz reeaua cu conectivitate total, care
implementeaz legturi bidirecionale de la fiecrui procesor cu oricare din celelalte (n-1) procesoare din sistem;
numrul total de legturi bidirecionale este egal cu n(n-1)/2.
ntre costul sczut oferit de configuraia ring i performanele obinute cu reeaua cu conectivitate total,
exist n literatura de specialitate foarte multe variante de reele de conectare. Performaele unei reele de conectare
depinde de natura comunicaiilor necesare n procesarea paralel a programelor pe sistemul multiprocesor
respectiv. n continuare sunt prezentate urmtoarele variante de reele de intrerconectare:

1. reeaua 2-D, cu 16 noduri;


2. reeaua cub, cu dimensiunea n = 3;
3. reea matrice (crossbar);
4. reeaua omega.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


227

ncheiem subcapitolul de sisteme mutiprocesor cu urmtoarele conceptualizri despre soft i hard. Hadrware-ul
poate funciona serial (uniprocesor) sau paralel (multiprocesor), iar software-ul poate opera secvenial sau
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
228

concurent. Cu aceste variantele de funcionare pentru hard i soft rezult urmtoarele patru combinaii
exemplificate n tabelul urmtor

Software
Secvenial Concurent
Serial Un program n Matlab, de nmulire a Sistem de operare ( de exemplu Vista)
dou matrice, rulat pe un procesor rulat pe un procesor clasic, de exemplu
Hardware clasic, de exemplu Intel Pentium 4 Intel Pentium 4
Paralel Un program n Matlab, de nmulire a Sistem de operare ( de exemplu Vista)
dou matrice, rulat pe un procesor rulat pe un procesor multicore , de
multicore, de exemplu Intel Xeon exemplu Intel Xeon e5345(patru cores)
e5345 (patru cores)

Cum va evolua arhitectura i organizarea microprocesorului n urmtorii ani? nc greu de spus, dar cu
siguran direcia n dezvoltarea sa va fi realizarea unui suport pentru procesarea paralel. Ori, pentru aceast
dezvoltare oraganizarea procesorului va fi, probabil, de tipul multiprocesor/multicore, cluster sau
multiprocesor de multiprocesoare (veri procesoare grafice). Un mod de organizare pentru un astfel de viitor
multiprocesor ar putea fi ca cel din figura urmtoare [9]. Sarcina de procesare n procesor este divizat n
realizarea de calcule complexe (complex computing) i realizarea de calcul intensiv (intense computing).
Suportul hardware pentru complex parallel computation este o reea Coarse-Grain Multi-Cell Processor,
scalabil de 2-8 core (de exemplu superscalare); iar pentru calcule intensive o a doua reea Fine-Grain Many-Cell
Processor, scalabil format din 64-4096 elemente de procesare, PE.

5.4 PROCESAREA DE TIP MULTITHEAED

Proces. Definiie (cea mai frecvent) a noiunii de proces ( uneori referit task) este: un program n execuie.
Execuia unui proces necesit alocarea unor resurse: cuanta de timp alocat pentru execuie (TCPU), registre,
memorie (spaiul alocat), fiiere, I/O etc; aceste resurse i sunt alocate procesului de ctre sistemul de operare

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


229

atunci cnd procesul este creat; fiecare proces are propriile sale resurse, care nu se mpart cu alt proces. Strile pe
care le parcurge un proces, sub supervizarea sistemului de operare, sunt prezentate n organigrama urmtoare:

Un proces n starea de execuie (ruleaz pe CPU) poate fi substituit cu un alt proces, aceast
substituire/comutare este referit prin sintagma schimbarea contextului. La schimbarea contextului este necesar
salvarea acelor resurse ale procesului prezent (coninutul registrelor, registrul de stare, PC, SP, care sunt necesare
la reluarea procesului) , iar n CPU este introdus contextul noului proces. Procesele interacionaz ntre ele numai
explicit, dac sistemul are un mecanism de comunicare ntre procese. Schimbarea contextului este o operaie
consumatoare de timp, se consum de ordinul sutelor sau chiar mii de tacte.
Thread (fir, a, a nira mrgele, engl.). Un tread n execuie este cea mai mic unitate din program care
poate fi procesat independent, care poate fi planificat de sistemul de operare. Mai concret, succesiunea de
instruciuni a unui program poate fi divizat n pri de succesiuni de instruciuni de dimensiuni mai mici, care pot
fi executate independent una de alta, aceste pri sunt referite prin termenul de thread (fir de execuie). Thread-ul
rezult n urma unei ramificaii (fork) a programului n dou sau mai multe taskuri concurente. ntr-un proces pot
exista multiple thread-uri, resursele procesului sunt mprite ntre thread-uri, pe cnd ntre diferite procese nu se
mpart resursele.
Programele n execuie pot fi divizate n thread-uri, uneori de ordinul sutelor, de exmplu n sarcinile unui
server fiecare aplicaie utilizator poate fi considerat ca fiind unul sau mai multe thread-uri. Recent procesarea de
tip threading este introdus i pentru domeniul embedded chiar i pentru smartphone (ca suport pentru rularea
simultan a mai multor aplicaii).
Logic, unui thread n cadrul procesorului i se aloc urmtoarele resurse: un PC, un SP i un set de registre
proprii, cum este prezentat n Figura urmtoare, restul de resurse ale procesorului sunt disponibile/partajate pentru
celelalte thread-uri ale procesului; memoria procesului, utilizat de un thread, poate fi uor partajat prin
mecanismul de memorie virtual, care suport multiprogramare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


230

Comunicare:
Comunicarea intre procese este costisitoare (necesit comutare de contexte);
Comunicarea intre thread-uri este ieftin (utilizez memoria comun alocat procesului)
Securitate:
Un proces nu poate corupe un alt proces;
Un thread poate nscrie (corupe) memoria utlizat de ctre un alt thread.
Comparaie tread-proces:
Un proces este o unitate de alocare, necesit: resurse, privilegii etc.
Un tread este o unitate de execuie, necesit: PC, SP i registre;
Fiecare proces are unul sau mai multe thread-uri;
Fiecare thead aparine unui proces.

Modul de principiu de transformare/(completare) a unui pipeline de la un procesor clasic, nct s poat procesa
thread-uri, este schiat n figura urmtoare. Se observ posibilitatea de a se selecta, n etapa Fetch, thread-ul
necesar (PCi, i =0, 1, 2, 3) prin intremediul unui MUX 4:1 i de asemenea, n etapa ID, selectarea setului de
registre alocat thread-ului respectiv ( IDi, i= 0, 1, 2, 3).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


231

Paralelismul la nivel de instruciune, ILP, ntr-un program este limitat, de aceea pentru procesarea n pipeline nu
se pot gsi ntodeauna instruciuni succesive independente, ceea ce impune introducerea de etape goale (stall) n
fluxul procesrii, cum este reprezentat n Figura a) urmtoare. Soluia? s se exploateze un paralelism de

granulaie mai grosier (coarse-grained parallelism) adic un paralelism la nivel de thread, TLP (Tread-Level
Parallelism). Aceasta nseamn execuie concurent de instruciuni de la diferite tread-uri, fie ntreesute n acelai
pipeline , fie n paralel pe pipeline-uri diferite. Controlul procesorului comut de la un thread la altul, comutare
care se poate realiza n mult mai mai puine tacte de ceas, chiar zero, dect comutarea proceselor, deoarece nu
este nevoie de schimbare de context. De exemplu, n Figur a) anterioar, procesarea segmentului de instruciuni
din thread-ul T1 impune introducerea de ase stall-uri n pipe, dar aceste stall-uri sunt eliminate dac controlul
procesorulul selecteaz pe fiecare tact o instruciunea de la unul din cele patru thread-uri (T1, T2, T3, T4) ale
programului, cum este reprezentat n Figura b) anterioar, n acest exemplu comutarea de la thread la thread se
face cu zero tacte consumate.
Modaliti de comutarea thread-urilor. Exist patru modaliti/tehnici de comutare a thread-urilor
implementabile pe procesoarele cu execuie multithread.
1. Multithreding ntreptruns (intreleaved multithreading), referit i prin termenul de multithreading de
granulaie fin (fine-grained multithreading). Pentru realizarea unei ntreptrunderi este necesar s existe,
evident, cel puin dou thread-uri, atunci pe fiecare tact de ceas procesorul poate execut o instruciune de la
un alt thread; uzual, thread-urile se comut printr-o parcurgere circular (round robin), de exemplu T1, T2,
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
232

T3, T4, T1, T2,...pentru patru thread-uri, evident, srind acel thread care este n stall n momentul cnd este
rndul su. Pentru a se realiza o ntreptrundere de granulaie fin procesorul trebuie s poat comuta la alt
thread la fiecare tact de ceas. Dezavantajul multithreadingului ntreptruns const n prelungirea executrii
individuale a unui thread, pentru c executarea unui thread, care dei este disponibil de a fi executat
fr etape de stall, este este prelungit cu timpul de executarea de instruciuni din celelate thread-uri.
Aceast tehnic este eficient la procesoarele scalare pipelinizate i la cele de tip VLIW.
2. Multithreading cu blocare (blocked multithreading), referit i prin termenul de multithreading de granulaie
grosier (coarse-grained multithreading). Spre deosebire de granulaia fin unde exist comutaie ntre tread-
uri de la tact la tact, la granulaia grosier se execut succesiv instruciunile dintr-un singur thread pn
cnd n thread-ul respectiv apare un eveniment care ar introduce foarte multe stall-uri (lungi), cum ar fi
pagin lips ce necesit 10-20 de tacte dac se face un acces la L2 cache sau chiar sute de tacte dac accesul
se contiun spre memoria principl. Numai la apariia unui eveniment cu stall-uri lungi acel thread este
blocat i procesorul comut la un alt thread, la un eveniment doar cu puine stall-uri (scurte), de exemplu
RAW, procesarea rmne n cadrul thread-ului respectiv. Dezavantajul principal al multithreadingului cu
blocare const n micorarea vitezei de procesare datorat evenimentelor cu stall-uri scurte din cadrul thred-
ului. Nu se comut la un alt thread la fiecare stall scurt aprut, deoarece la comutare pipe-ul trebui golit i
apoi umplut cu instruciunile doar din noul thred, ceea ce necesit un timp de umplere a pipe-ului (latena
pipe) destul de lung, timp mult mai lung dect se consum cu stall-urile scurte din thead ul care are aceste
stall-uri. Aceast tehnic este eficient la procesoarele scalare pipelinizate i la cele de tip VLIW.
3. Multithreadingul simultan, SMT ( Simultaneous Multithreading). Acest mod de comutare presupune
existena a mai multor uniti de execuie, adic un procesor cu execuii multiple (superscalar). Pot fi
lansate n execuie, n acelai tact, mai multe threaduri, Tread-Level Parallelism, ct i mai multe
instruciuni din acelai thread, Instruction Level Paralellism.
4. Multithreading pe chip multiprocesor (Chip Multiprocessor Threading). Fiecrui core, al unui procesor
multicore, i se repartizeaz cte un thread.

Procesarea de tip multithread. Modalitile de comutare a thread-urilor prezentate anterior se vor


exemplifica pe urmtoarele organizri de microprocesoare studiate:
1. Procesoare scalare pipelinizate, Figura urmtoare. n Figura a) este prezentat un procesor scalar pipelinizat
clasic, pe care rulez doar un program (thread-ul A); dup dou instruciuni ntroduse n pipe, pe tactul 3, apare o
situaie de hazard care se rezolv cu trei etape de stall, tactele 3, 4, 5, dup care se reia procesare tot din thread-ul
A pe tactul 6.
Figura b) corespunde unei maini scalare pipelinizat multithreading, pe care se proceseaz patru thread-uri
(A, B, C, D) n modul ntreptruns (multithreading cu granulaie fin), care, evident, trebuie s aib, fa de o
main scalar pipelinizat clasic, patru PC i patru SP precum i patru seturi de registre, pentru fiecare thread un
set de registre. Pe fiecare tact se introduce, n mod circular A, B, C, D. A, B,.... de la cele patru thread-uri, cte o
instruciune; dac unul din thread-uri este n starea de stall, atunci se introduce n pipe pentru acel thread o etap
goal. Dac hardul este capabil s comute pe fiecare tact, i thread-urile nu prezint etape de stall, atunci se
proceseaz cu pipe-ul full.
Procesarea de tip multithreading cu blocare (multithreading cu granulaie grosier) este prezentat n Figura c).
Se intoduc n pipe instruciuni doar de la un singur thread, n acest caz de la thread-ul A, pe tactele 1 i 2 ( dup
care acest thread trebuie blocat), apoi pe tactul 5 se comut la instruciuni numai de la thread-ul B. Deoarece pipe-
ul trebuie nti golit de thread-ul A i apoi umplut cu instruciunile de la thread-ul B tactele de neprocesare pot fi
destul de numeroase (n desen s-au considerat numai dou, tactele 3 i 4, n realitate pot fi mult mai multe tacte).
Comutarea de la thread-ul A la B s-a realizat pentru c thread-ul A s-a blocat deoarece pe tactul 3 a ntmpinat ,
probabil, un eveniment de page fault (acces la L2 cache).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


233

2.Procesoare cu execuii multiple. n figura urmtoare sunt prezentate variante de procesare multithread pe
procesoarele superscalare i pe procesoarele de tip VLIW. Pentru ambele tipuri de procesoare se consider c
prezint patru uniti funcionale, deci se pot lansa n paralel, doar de la acelai thread, maximum patru
instruciuni, evident, numai dac aceste instruciuni sunt independete (parallelism la nivel de instruciune, ILP). n
reprezentrile dreptunghiulare, pe orizontal, sunt reprezentate sloturile mainii (unitai funcionale), adic
numrul maxim de instruciuni care, n acelai tact, pot fi lansate n execuie paralel (n acest caz Bandwidth = 4
instruciuni/tact); sloturile care nu pot fi acoperite cu instrucini n acelai tact sunt referite ca pierderi orizontale.
Pe vertical este reprezentat succesiunea de acoperire a sloturilor n fiecare tact aplicat; pot exist tacte n care nu
se acoper niciun slot, nu se lanseaz n execuie nicio instruciune din thread, din cele patru posibile, acestea sunt
referite ca pierderi verticale.
n Figura a) este prezentat maina superscalar, fr multithreading, se observ c apar att pierderi
orizontale (nu se gsesc n acelai tact suficiente instrucini din thread-ul A ca s acopere cele patru sloturi), dar
apar i pierderi verticale, adic sunt tacte n care nu se poate lansa n execuie nici o instruciune ( de exemplu pe
tactele 3 i 5). n Figura a), similar cu Figura a), este prezentat maina VLIW, fr multithreading, se observ c
apar att pierderi orizontale ct i verticale, dar spre deosebire de maina superscalar ( a)), de data aceasta,
pierderile pe orizontal sunt introduse prin instruciuni NOP, acestea fiind mpachetate n cuvntul lung de patru
instruciuni.
Figura b) i b), fiind patru theaduri A, B, C, D, aplicnd modalitatea de comutare prin multithreading
ntreptruns, att la maina superscalar ct i la maina VLIW, n fiecare tact sunt introduse n sloturi ct se poate
de multe instruciuni independente (pn la Bandwidth =4), din thread-ul repectiv. Procesarea prin aplicarea
multithreading cu blocare este prezentat n Figura c) i c). n fiecare tact sunt lansate n execuie pn la patru
instruciuni independente, dac se gsesc n thread, operaie care se continu i pe tactele urmtoare cu lansare
de instruciuni din acelai thread pn cnd apare un eveniment care induce o laten ( de exemplu, page fault,
acces la L2 cache). Evenimentul care induce o laten genereaz o blocare a thread-ului curent i o comutare la

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


234

un alt thread, comutare care poate fi cu sau fr pierdei pe vertical.

3. Procesoare cu multitreading simultan. n acest caz se lanseaz simultan n execuie un numr de


instruciuni egal cu patru (=Bandwidth), dac se gsesc astfel de instruciuni independente. Spre deosebire de
celelate dou tipuri de procesri anterioare, de data aceasta instruciunile lansate pot fi selectate nu numai dintr-un
singur thread ci simultan din toate thread-urile procesului, deci se exploateaz att pralelismul la nivel de
instruciune, ILP (din acelai thread) ct si paralelismul la nivel de thread, TLP (din thread-uri diferite).
Procesorul din Figura a) urmtoare este un superscalar cu Bandwidth = 8 (uniti funcionale, sloturi), deci se
pot lansa simultan n execuie pn la opt instruciuni/tact selectate din cele patru thread-uri ale procesului. Cele
opt sloturi pot fi acoperite cu instruciuni de la un singur thread, dac acesta prezint un ILP ridicat, sau se pot
acoperi cu instruciuni selectate din mai multe thread-uri.
Procesorul multicore din Figura b, are patru procesoare/core identice, fiecare core fiind un 2-way superscalar
(prezint dou uniti funcionale), iar fiecrui core i se repartizeaz cte un thread. Este mult mai uor s se
acopere cu instruciuni independente de la un thread sloturile unui core 2-way superscalar dect pentru unul 8-
way superscalar; rezult c perderile pe orizontal sunt mai mici la un procesor 4-core, fiecare core 2-way
superscalar, dect la un 8-way superscalar.
La procesoarele superscalare, n cursa de a crete performana de vitez, s-a ajuns n stadiul n care:
puterea disipat, datorat creterii frecvenei peste 3-3,5GHz, s nu poat fi suportat de chip;
multitudinea de resurse hardware (circuistic) de pe chip s fie subutilizate;
complexitatea prii de control necesit un efort prea ridicat n proiectare i chiar consum de arie.
Aceste aspecte au ndreptat atenia firmelor spre implementri sub form de procesoare multicore, cu core simple
care s nu aib dezavantajele amintite ale procesoarelor superscalare. S-ar prea c numrul de core pe chip se
dubleaz la o distan n timp de doi ani, ceea ce conexeaz cu legea lui Moore referitoare la densitatea de
componente intregrate pe chip. Numrul de core pe chip, tipul de core, modul lor de organizare i de
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
235

intreconectare, nct s rezulte procesoare performante, sunt nc aspecte care se cerceteaz. Oricum, se pare c
arhitectur de tip von Neumann, cu procesare secvenial, de tip uniprocesor, dup mai bine de 50 de ani va preda
tafeta procesoarelor de tip multicore. Dar, pentru impunerea procesoarelor multicore, nu hardware-ul este
componenta reluctant ci componenta de software nu este nc suficient dezvoltat, care ar trebuie fie s
modifice softul existent pentru o procesare paralel (parallel processing program), fie mai ales s genereze soft
paralel.

Suport pentru rescrierea programelor existent pentru o procesare paralel pe baz de thread-uri este programul
OpenMP (Open Multi-Processing), www.openmp.org. OpenMP este un API (Application Programming Intreface)
portabil, scalabil, pentru dezvoltare de aplicaii paralele pe platforme multiprocessor, SMP, programate n C/C++
i Fortran sub sistemele Unix& Windows NT.Progamatorul prin directivele de compilare croiete aplicaia
pentru parametrii sistemului multiprocesor. n fond, OpenMP este o metod de paralelizare a unui program
secvenial , prin ramificare (fork) ntr-un numr specificat de thread-uri (vezi componentele s i p din
introducerea de la subcapitolul 5.3), care apoi sunt alocate pe procesorul multicore sau pe sistemul
multiprocesor i rulate n paralel. Reprezentarea din figura urmtoare schieaz modul prin care dup un segment
de program secvenial (master thread) urmeaz un segment ce poate fi paralelizat, deci este divizat ntr-un
numr de thread-uri cu procesare paralel, iar la terminarea crora poate urma din nou un segment secvenial
(master thread) care n continuare iari poate fi ramificat n thread-uri.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


236

5.5 PROCESOARE GRAFICE

Unitatea de procesare grafic GPU (Graphical Processing Unit) exist n oricare PC, laptop, desktop sau staie
de lucru. Fundamental, GPU genereaz grafic 2D sau 3D, imagine sau video prin ntreptrunderea procesrii
grafice cu calculul paralel, realiznd ceea ce este referit cu termenul visual computing; astfel avnd aceste
faciliti GPU a devenit un procesor paralel programabil. GPU mpreun cu CPU formeaz un sistem heterogen, n
care GPU, ca i coprocesor, are rolul de a degreva procesorul, CPU, de toate sarcinile de procesare grafic.
n figura urmtoare sunt prezentate, sumar, dou stadii din evoluia componentei grafice a unui sistem; n
primul desen la nivelul anului 1990, iar n urmtoarele dou reprezentri sunt structurile de principiu pentru
implementrile, la nivelul anului 2008, ale firmelor Intel i AMD. Iniial, grafica pe un PC era realizat de un
controller VGA (Video Graphics Array) care era, n fond, un simplu controller pentru memoria (buffer) de
cadre/frame i generator pentru display, conectat la magistrala PCI (vezi structura urmtoare la nivelul 1990).
Actual, exist dou configuraii uzuale de conectarea GPU la sistemul procesor + memorie sistem:
configuraia pe baz de procesor Intel, GPU+ memoria local (GPU memory) este conectat la north-
bridge printr-o magistral PCIe.2 cu 16 lane-uri realiznd un bandwidt 16 GB/s (8GB n fiecare
direcie); la urmtoarea generaie GPU i north bridge vor fi intregrate mpreun;
configuraia pe baz de procesor AMD, GPU+ memoria local (GPU memory) este conectat la
chipset (south bridge) printr-o magistral PCe.2 cu 16 lane-uri realiznd un bandwidt 16 GB/s
(8GB n fiecare direcie); la urmtoarea generaie GPU i chipset vor fi intregrate mpreun;
CPU i GPU au fiecare acces la memoria celuilalt, evident cu un bandwidth mai mic dect prin accesul direct
la memoria proprie. Exist i o variant de low-cost, UMA (Unified Memory Architectures), cu o singur memorie
comun, memoria sistemului, dar n aceast variant accesul GPU la memoria sistem se realizeaz cu un
bandwidth mult mai mic dect accesul la o memori proprie; sau, n opziie, exist i varianta de nalt
performan, n care sunt n sistem 2 4 GPU-uri n paralel. CPU+GPU formez un sistem heterogen, CPU
adecvat pentru procesare secvenial/serial, iar GPU eficient pentru grafic i calcul paralel.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


237

Imagine plac video Nvidia, Quadro (SGI VPro VR3)

Sarcina unui GPU n sistem este generarea componetei grafice, ceea ce presupune o procesare rapid i masiv
de date, o sumar estimare rezult din urmtorul calcul simplu. Pentru un ecran cu dimensiuea de 2560x1600
pixeli, cu o frecven de nscrire de 24 cadre(frame)/s, la o frecven de clock de 1 GHz, procesorul trebuie s

calculeze un pixel la fiecare 10 tacte de ceas, 109 tacte/s : 2560x1600x24 pixel/s 10tacte/pixel , iar la o
frecven de nscriere de 60 cadre (frame)/s trebuie s calculeze un pixel la fiecare 4 tacte de clock.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


238

Dac iniial GPU avea ca utilitate numai programare de grafic pe baza unei unei API (Application Programing
Interface) dedicate pentru grafic, mai nou pe baza platformei CUDA sunt rezolvate i sarcini de calcul paralel
masiv utiliznd limbajele C, C++, Fortran, OpenCL, DirectComput i altele. Aceste noi procesoare de tip
GPU Computing sunt referite prin abreviaia GPGPU (General-Purpose computation on GPU).
Imaginea unei plci de baz n care este introdus cardul (GeForce) pentru componenta grafic a sistemului este
prezentat n figura urmtoare

1. Noiuni de procesarea grafic 3-D


Obiectul procesrii grafice 3D const n transforamarea unui obiect n imagine sa plan 2D pentru a fi
reprezentat pe ecran. Stucturarea unui astfel de sistem pentru procesare grafic este reprezentat n Figura a).
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
239

Pentru reprezentarea imaginii pe ecran trebuie nti ca obiectul s fie descris, utiliznd un software de modelare
3D, ntr-un model de reprezentare a formei obiectului respectiv. Soft-ul de interfa, API (Application
Programming Interface) din acest sistem de procesare, larg utilizat actual, de facto standard, este reprezentat de
platformele OpenGL (Open Graphics Library, iniiat de Silicon Graphics) i Direct3D (iniiat de Microsoft).
Structurarea logic (simplificat) a etapelor de procesare grafic pe care se bazeaz aceste platforme, care
realizeaz o procesare de tip pipeline, este redat n figura b). Acest pipeline pentru procesare grafic, referit ca
rendering (redare, generare) pipeline, este compus din etape/componente fiecare avnd o funcie specific.
Rendering este procesul de generarea unei imagini, cu ajutorul unui program de calculator, pornind de la un
model. Modelul este descrierea ntr-un limbaj a unui obiect tridimensional sau o structur de date. Imaginea
obinut, conform acestui pipeline de procesare, poate fi o imagine digital sau o imagine grafic pe ecran.
Transformrile realizate n etapele din pipeline sunt prezentate (simplificat ) n Figura c)

Modelul de reprezentare (descrierea scenei) al unei forme se bazeaz pe primitive geometrice de reprezentare
care sunt: punctul, linia dreap i triunghiul. Triunghiul este forma geometric plan cea mai simpl care poate fi
realizat doar din trei linii drepte. Cu aceast form simpl triunghi se poate compune modelul 3D
triunghiularizat pentru reprezentarea oricrei forme spaiale a unui obiect, utiliznd un numr mai mic sau mai
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
240

mare de triunghiuri, n funcie de acurateea cu care se dorete reprezentarea obiectului respectiv. n figururile
urmtoare sunt exemplificate modelele compuse din triunghiuri a trei obiecte: cub, sfer i un ceainic.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


241

Fiecare vrf al triunghiului vertex (punct vertical) este caracterizat prin patru coordonate (x, y, z) i distana
w a vertex-ului fa de camer (ochi). Valorile acestor coordonate (x, y, z, w) pot fi exprimate ca numere n
simpl precizie n virgul flotant, sub forma unui cuvnt binar de 32 bii (n standardul IEEE-754). n
reprezentarea sub forma unui cadru din srm, pentru ceainicul din figura anterioar, fiecare triunghi component
are propriile-i cordonate ale vrfurilor (vertex-urilor).
Prin transformrile/ procesarea vertex-urilor, de forma V = f(V), pentru toate triunghiurile, care compun un
obiect 3D, modelul obiectului respectiv poate fi deplasat, poate fi rotit, scalat etc. Aceste transformri au o
exprimare sub forma unor ecuaii matriceale, de exemplu pentru o translaie cu distana t i o rotaie cu unghiul
ecuaia este umtoarea:

x' cos - sin 0 x t x



y' sin cos 0 y t y
z' 0 1 z t z
0

Dac modelul triunghiularizat al ceainicului din figur este compus din 10 000 de triunghiuri, rezult c modelul
su de pe ecran pentru un cadru necesit 30 000 de transformri de vertex-uri, ceea ce nsemn calculul a 120 000
de cordonate (x, y, z, w), fiecare coordonat fiind un cuvnt de 32 bii (precizie simpl n IEEE 754).
Progragramele care operez asupra datelor grafice ( vertex, pixel, fragment) n limbajul procesrilor grafice sunt
referite ca programe shader (shader programs).
Dac vertex-urile au culori diferite, aceasta nseamn c exist un gradient cu o variaie continu la trecerea
dintre culorile de pe suprafaa triunghiului. Mai realistic, pentru informaia de mbinare a culorilor se pot
considera surse de lumin, n consecin rezult o iluminarea combinat a un vertex de ctre aceste surse.

Programul vertex shader calculeaz pentru modelul triungiularizat al obiectului: poziiile vertex-urilor,
orientarea, culoarea i transparena genernd un ir de data vertex sub forma unui ir de numere n virgul
flotant.
Apoi un program geometric shader ( procesare primitive) opereaz asupra irului de data vertex (produs de
vertex shader, care conine informaia despre vertex-uri i conectivitatea acestora) genernd, pentru formatul 2D
(plan) al screen-ului, primitive geometrice (puncte, linii, triunghiuri).
Imaginea obiectului pe ecran se obine din proiecia acestor primitive pe ecran, imagine ce se compune din
pixeli, deci toate aceste primitive trebuie s fie convertite n pixeli (rasterizare) De fapt se realizeaz fragmente
de pixeli ca n figura urmtoare

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


242

De ce se lucrez cu fragmente de pixel? pentru c n culoarea unui pixel se combin culorile din mai multe
triunghiuri vecine, a se vedea nuanele i reflexiile pentru ceainicul reprezentat n figura urmtoare. Apoi urmeaz
procesarea fragmentelor cu programul pixel shader. Operaia de determinare a culorii i tansparanei unui pixel
este referit ca fragment shader. Pentru fiecare pixel sunt calculate componentele de culoare ( R; G, B) i
componenta de transaparen alpha, adic opacitatea: valoarea 1 corespunde unui pixel complet opac, iar valoarea
0 pentru un pixel complet transparent. Mai nou, cele patru componete (R, G, B, apha) sunt reprezentate ca numere
flotante n simpl precizie, pe cuvinte de 32 bii, conform standardului IEEE 754. Anterior, cele patru componente
erau reprezentate ca numere ntregi pe cuvinte de 8 bii

Se poate introduce apoi, tot printr-o operaei de shader, i o component artistica, adic maparea unei texturi
pentru fiecare fragment de pixeli sau pentru un pixel, operaie referit ca texturare (texture), ca n figura
urmtoare.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


243

Toate operaiile necesare procesrii grafice 3-D, descrise anterior, sunt efectuate pipelinizat (rendering pipeline)
cu implementare n soft sau cu implemntare n hard. Schematic, aceast procesare pe un GPU este reprezentat n
imaginea urmtoare

2. Cuda

Foarte mult din procesrile efectuate n etapele pipe-lui graphic, prezentat anterior, se reduc la
calcule/transformri de matrice de dimensiuni ridicate, care prezint un grad masiv de paralelism. Se va
exemplifica gradul nalt de paralelism care apare la nmulirea a dou matrice ptrate A i B de dimensiune NA i
NB, rezultnd matricea produs C de dimensiune NC ; se consider c dimensiunile (widths) sunt NA = NB = NC. Un
termen produs, Cij al matricei rezultat C se calculeaz ca sum a tuturor produselor dintre elementele
coespunztoare din linia i a matricei A cu elementele corespunztoare din coloana j a matricei B, conform
modului reprezentat n figura urmtoare, cu relaia

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


244

Cij Ai0 B0j Ai1 B1j Ai N A 2 B N A 2 j Ai N A 1 B N B 1 j constituie un thread

Fiecare termen produs Cij se obine prin N operaii de nmulire i N operaii de adunare (acumulri succesive).
Pentru matrice ptrate cu dimensiunea NA = NB = 1000 se obin 1 000 000 termeni Cij, fiecare necesitnd 1000
de multiplicri i 1000 de acumulri succesive efectuate asupra termenilor/coeficienilor matricelor, (de exemplu
cu o instruciune de tipul multiply and add aplicat asupra a 1000 de perechi de date), fiecare termen rezultat
poate fi calculat independent de ceilali, n program constituind un thread, deci posibilitatea de efectuare a
1 000 000 de segmente de program ( grid de thread-uri) procesate n paralel. Fiecare thread execut acelai
program ( aceleai instruciuni) dar cu date diferite, deci masivul paralelism de thread-uri este de fapt un SPMD
(Single-Program Multiple-Data) ce poate fi efectuat pe o organizare multiprocesor de tip SIMD.

Structura programului de aplicaie


Pentru elaborarea de aplicaii pe un sistem eterogen, format din CPU (host)+GPU(coprocesor, device), firma
Nvidia a elaborat platforma CUDA (Compute Unified Device Architecture) care este o platform hardware i
software pentru aplicaii de calcul paralel accesibile prin limbaje standard (extinse) C, C++, Fortran, OpenCL
(Open Computing Language), DirectComput i altele. (Recomandm pentru CUDA cursul
http://courses.engr.illinois.edu/ece498/al/textbook/).
CUDA este o soluie elegant pentru problema exprimrii paralelismului n majoritatea algoritmilor. n acest
sens CUDA unific toate formele de paralelism ( multithreading, MIMD, SIMD i chiar ILP) ntr-un paralelism
elementar sub forma unei primitive de programare- CUDA Thread; compilatorul i hardware genernd sute de
astfel de CUDA Thread. n consecin, modelul de progamare CUDA se poate fi privit ca Single Instruction,
Multiple Thread (SIMT). Dei materialul din aceast prezentare se bazeaz pe CUDA i pe procesorul GPU -
NVIDIA, aceleai idei sunt baza i pentru procesoarele GPU produse de alte firme precum i n limbajul de
programare OpenCL
Un program dezvoltat pe aceast platform conine una sau mai multe pri a cror execuie se repartizeaz
ntre CPU (host) i GPU (device); partea care conine paralelism redus sau deloc se implementeaz n cod C/C++
pentru host, iar partea care este bogat n paralelism masiv n cod C/C++ dialect pentru device.
n figura urmtoare este prezentat o structur de program care conine dou segmente de program de
procesare serial (CPU Serial Code) alternnd cu dou segmente de program de procesare paralel (GPU Parallel
Kernel, repectiv grid 0 i grid 1). Funcia kernel (KernelA <<< nBIk, Ntid >>>arg) cnd este ntlnit n program
prin execuia sa genereaz un grid de thread-uri, adic se repet aceeai succesiune de instruciuni (thread) de un
numr foarte mare de ori (n exemplul dat anterior 1 000 de thread-uri), care sunt executate n paralel pe un
numr oarecare de procesoare (PE, Processing Element) disponibile. Fiecare thread execut aceeai funcie kernel

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


245

.
Programul de aplicaie supus compilatorului NVIDIA C Compiler (NVCC), vezi figura urmtoare, este separat
pe cele dou tipuri de componente/segmente de program. Segmentele de cod serial sunt compilate cu
compilatoare standard (gcc) i rulate pe procesorul host, CPU . Segmentele de paralelism masiv, gridurile (de
threaduri) generate de funciile kernel sunt transalatate de NVCC n codul ISA al GPU n dou etape: nti din
C/C++ ntr-un cod intermediar al unei maini virtuale PTX (Parallel Thread eXecution), care are un pseudo-
limbaj (intermediar) de asamblare, apoi din acest cod intremediar PTX n codul propriu GPU, instruciunile ISA.

Pentru dezvoltarea programelor n CUDA, s-a realizat sistemul de dezvoltate denumit NVIDIA NEXUS, orientat
pentru aplicaii de sisteme eterogene, CPU+GPU; Mai mult, pentru a se uura etapa de elaborare a aplicaiilor
pentru sisteme eterogene, sitemul Nexus a fost integrat n platforma Microsoft Visual Studio, ceea ce ofer
procesului de dezvoltare al aplicaiilor pentru CPU+GPU aceeai uurin ca i cea n dezvoltare de aplicii
pentru sisteme CPU

Ierathizarea thread-urilor
Thread-urile generate de execuia unei funcii kernel, uzual n numr de mii sau chiar milioane, sunt organizate
pe dou niveluri: la nivel de grid i la nivel de bloc.
Un grid este compus dintr-un numr de blocuri (dimGrid), blocurile grid-ului respectnd o stucturare matriceal,
dimensiunile dup cele trei direcii fiind specificate prin gridDim.x, gridDim.y i gidDim.z. n general,
dimensiunile gridDim.x i gridDim.y pot fi ntre 0 i 65 536, iar gidDim.z =1, adic o matrice numai dup dou
dimensiuni. Dimensiunile grid-ului se specific la lansarea n execuie a funciei kernel n felul urmtor
dim3 dimGrid( gridDim.x, gridDim.x, 1)
n cadrul matricei unui grid, coordonatele unui bloc se exprim: block(blockId.x, blockId.y) n care indicii
blockId.x, blockId.y pot avea valori ntre 0 i griDim.x -1 respectiv ntre 0 i griDim.y -1.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


246

La nivel de bloc, fiecare bloc conine acelai numr de threaduri structurate matriceal tridimensional, fiecare
thread avnd valorile de coordonate : trheadId.x dup x, trheadId.y dup y i trheadId.z dup z. Dimensiunile
dup cele trei direcii se determin n funcie de numrul de threaduri din bloc, dimBlock, (dimensiunea blocului)
care se specific la lansarea n execuie a funciei kernel n felul urmtor
dim3 dimBlock(trheadId.x, trheadId.y, trheadId.z)
De exemplu, dac paramentrul dimBlock, specificat la lansarea funciei kernel, este de 512 threaduri, structurri
dup cele trei direcii pot fi de forma : (512, 1, 1); (8, 16, 2); (16, 16, 2), dar nu (32, 32, 1) deoarece 32x32x1 =
1024 >512 threduri!
Crearea unei organizri de threaduri la lansarea unei funcii kernel se exprim astfel:
dim3 dimGrid( gridDim.x, gridDim.x, 1)
dim3 dimBlock(threadId.x, threadId.y, threadId.z)
KernelFunction <<< dimGrid, dimBlock>>>(...);

<<< dimGrid, dimBlock>>> specific numrul total de threaduri


(=[ nr blocuri (dimGrid) x nr. threaduri ntr-un bloc (dimBlock)]) dintr-un grid care
se execut la apelarea funciei kernel.

n exemplul de program, din figura anterioar, sunt dou apelri de funcie kernel care genereaz grid1 i
grid2. Grid 1 este creat prin lansarea funcie kernel de forma:
dim3 dimGrid(2, 2, 1)
dim3 dimBlock(4, 2, 2)
KernelFunction <<< dimGrid, dimBlock>>>(...);

Grid 1 este organizat matriceal 2x2x1 blocuri, iar block(1,0) este expandat n partea de jos a figurii avnd o
organizare de 4x2x2, adic 16 treaduri/bloc; n total grid 1 are dimensiunea 4 blocuri x 16 threaduri/bloc = 64
threaduri. ( Figura nu deteliez i pentru grid 2).

3. Arhitectura procesorulul grafic

Arhitectura unui sistem multiprocesor eterogen, CPU+GPU, este prezentat n figura urmtoare. Placa grafic
este conectat la sistem printr-o conexiune PCIe x16 (8+8)GB/s. GPU necesit un schimb masiv de date cu
memoria local de pe placa grafic, deci magistrala spre memoria sa trebuie s asigure un Bandwidth foarte
ridicat (> 100GB/s) n consecin se realizeaz cu o lime, w, de cel puin ase canale fiecare de 64 bii (w=
6x64= 384 bii). n figura urmtoare este figurat pe placa grafic posibilitatea de conectare prin 12 canale la
ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace
247

memoria DRAM, aceste circuite de memorie sunt de tipul DDR3 (Double Data Rate 3) sau GDDR5 (Graphics
DDR5).

Arhitectura i organizrea unui GPU se va prezenta printr-o exemplificare pe un produs comercial foarte
cunoscut, procesorul grafic GTX 480 al firmei Nvidia [1]. Firma Nvidia a introdus:
1. 2006 arhitectura G80
2. 2008 GT200( a doua revizie pentru arhitectura G80)
3. 2011 arhitectura Fermi (GF100) este implemntat pe un chip cu 3 miliarde ( 3 109 ) de tranzistoare

Layoutul acestui procesor este prezentat n figura urmtoare a). De fapt, n general, un GPU este un
multiprocesor compus din mai multe multithreaded SIMD procesoare, organizare scalabil n funcie de
performanele cerute. Acest procesoar grafic conine 16 multithreaded SIMD procesoare, sunt cele 16
dreptunghiuri verticale poziionate sub i deasupra memoriei cache L2. n partea dreapt este poziionat
planificatorul/programatorul/schedulerul blocurilor de threaduri (Thread Block Scheduler), Giga Thread. Rolul
acestui scheduler n cadrul GPU este de a selecta, dintr-un grid, blocurile de threaduri i a le repartiza la un
anumit multithreaded SIMD procesor ( la o analogie cu o procesarea clasic un bloc de threaduri ar corespunde
unei iteraii dintr-o bucl, iar gridul ar corespunde buclei compuse din toate aceste iteraii). Pe prile laterale ale
layoutului sunt 6 portui pentru memoriile GDDR5, fiecare cu o lime de 64 bii ( n total 6x64 = 384 bii,
capacitate de memorie fiind de 6GB). Host (CPU) interface este portul spre magistrala PCIe x16 ci, care asigur
un bandwidth de 8 GB/s spre host (CPU).
La rndul su mutihreaded SIMD procesor are o organizare de tipul SIMD, Figura b), cuprinznd n structura
sa multe elemente de procesare, PE ( processing element, vezi 5.3.1), numite n acest context thread
procesor/SIMD lane. n acest exemplu sunt 32 de SIMD lane formnd dou grupuri de cte 16, deci GTX 480
conine 512 SIMD lane (16 multithreaded SIMD procesor x 32 SIMD lane).

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


248

Un multithreaded SIMD procesor are oganizarea sa urmtoarele componente:


- 32 de procesoae SIMD lane, grupate n dou coloane de cte 16
- 16 uniti de procesae de tip load/store ( pentu lucrul cu memoria)
- 4 uniti pentu procesarea funciilor speciale ( , 1/ , , cos, sin, log(a)/ log 2 etc)
- dou blocuri care selecteaz (SIMD thread scheduler) i dipecerizeaz instruciunile spre unitile de
procesare (sunt selectate dou theaduri de instruciuni SIMD i trimise simultan, cte unul la 16 SIMD
uniti).
- 32 728 de registre de 32 bii ( se poate privi c fiecrui SIMD lane i se poate asigna 64 registre cu 32 celule
fiecare de 32 bii, pentru simpl precizie; sau 32 registre cu 32 elemente fiecare de 64 bii, pentru dubl
precizie).La GTX 480 capacitatea registrelor depete capacitatea memoriei cache ( L1+l2)!

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


249

Elementul de procesare, procesorul SIMD lane, este un procesor cu dou uniti funcionale pipelinizate, una
pentru floiting-point, cealalt pentru ntregi, plus un bloc care dipecerizeaz instruciuni la cele dou uniti
pipeline.
Managementul i lansarea paralel a threadurilor nu este efectuat de cte aplicaie sau de ctre sistemul de
operare ci este realizat prin hard de ctre GPU, pe care exist dou niveluri de schedulere: cel de blocuri din
cadrul unui grid i cel de threaduri din cadrul unui bloc. Pe primul nivel, exist un scheduler pentru blocuri de
threaduri (thread block scheduler, GigaThread) care selectez i asignez dintr-un grid blocurile de threaduri spre
mutihreaded SIMD procesor. Pe al doilea nivel, fiecare multithreaded SIMD procesor are unul sau dou
schedulere pentru threaduri (SIMD Thread Scheduler) care, din blocurile deja asignate acelui mutihreaded SIMD
procesor, selecteaz i dispecerizeaz threaduri de instruciuni spre elementele de procesare (SIMD lane). n
scopul uurrii sarcinii schedulerului pentru threaduri, CUDA impune ca blocurile de thread-uri s fie executate
independent i n orice ordine. n figura urmtoare se exemplific aceast modalitale de selectare, din cadrul unui
bloc de thearduri care a fost asignat acestui mutihreaded SIMD procesor, a threadului de instruciuni SIMD i
lansarea asincron spre execuie a instruciunilor la toate SIMD lane ale acestui multihreaded SIMD procesor.
Deoarece threadurile de instruciuni SIMD sunt independente, thread scheduler poate selecta un alt SIMD thread
n fiecare moment.

Ideea n abordarea aplicaiilor specifice pentru GPU se bazeaz pe presupunerea c aplicaile produc foarte
multe threaduri de instruciuni independente, astfel c SIMD thread scheduler poate oricnd alege oricare thread
de instruciuni care este gata, fr a fi legat de executarea instruciunii umtoare din prezentul thread. n
consecin, exist o abunden de threaduri care pot fi selectate pentu execuie nct se poate ascunde att latena
memoriei ct i asigurarea creterii eficienei utilizrii permanente a multithreaded SIMD processor. n intervalul
de timp cnd un thread este n ateptare, datorit latenei memoriei, pot fi rulate multe alte threaduri diponibile
pn cnd threadul respectiv devine disponibil, cum este schiat cu thread 1 n figura urmtoare, astfel c pipeline-
urile elementelor de procesare, SIMD line, pot fi meninute pline prin alimentare cu threaduri.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


250

Pentu GTX 480 n scopul creterii efiecienei utilizrii hardului ale unui multithead SIMD procesor, cele 32 de
SIMD line formeaz dou grupuri de cte 16, pentru fiecare grup exist cte un scheduler de threaduri) i cte o
unitate de dispecerizare. Schedulerul selecteaz dintr-un thread de instruciuni SIMD o instruciune i o lanseaz
spre toate cele 16 SIMD lane ale unui grup, sau dac este cazul spre grupul de 16 load/store sau spre gupul de 4
uniti de funcii speciale, deci se lanseaz simultan dou instruciuni spre execuie (pentru c sunt dou SIMD
thread scheduler) spre cele 16 SIMD lane. Deoarece o instruciune SIMD are o lime de 32 (de date asupra crora
opereaz) aceasta este executat nti pentru primele 16 date pe grupul de 16 SIMD lane, apoi restul de 16 date
tot pe acelai gup, deci sunt necesare dou tacte pentru execuia complet a instuciunii. Astfel un thread de
instruciuni SIMD este selectat la fiecare dou tacte de ceas (se proceseaz complet n paralel dou instruciuni pe
dou tacte). Deoarece threadurile sunt independente nu este necesar s se verifice dependena de date n streamul
de instruciuni.
Pentru c acum se cunoate structurarea gridbloc de threaduri (thread block) thread precum i organizarea
GPU, exemplificm: calculul nmulirii a dou matrice coloan B[i] i C[i]; i = 0, 1, 2, .8191 prin care se
obine matricea coloan A[i] = B[i] * A[i] tot de 8192 elemente. Gndit n maniera clasic aceast nmulire ar
necesita o bucl pentru care corpul buclei se itereaz, pentru nmulirea B[i] * A[i], de 8192 ori. Structurarea n
CUDA este: bucla pentru cele 8192 nmuliri formeaz un grid din care se structureaz n 16 thread block (corpul
buclei) fiecare coninnd 512 elemente, iar fiecare din cele thread blockuri compus din 16 SIMD threaduri de
instruciuni, un thread conine o singur instruciune SIMD care execut/nmulete simultan 32 de elemente
(16x32 = 512). Acest structurere GridThread Block (SIMD)Thread(instruciuni) este reprezentat n figura
urmtoare.

Particulariznd pentru GTX 480 care are 16 multitreaded SIMD procesor, la fiecare se asigneaz cte unul dinte
cele 16 Thread Block. Pe unul din cele dou grupuri de 16 SIMD lane, ale unui multithread SIMD procesor, se
lanseaz o instruciune (pentru 32 de date) dintr-un SIMD Thread de instruciuni (n acest caz SIMD Thread este
format dintr-o singur instruciune, cea de nmulire) care se execut pe dou tacte, deci 2 instruciuni executate pe
dou tacte (fiind dou grupuri de 16 SIMD lane). Fiind 16 SIMD Thread de instruciuni ntr-un Thread Block
rezult c blocul de instruciuni necesit 16 tacte pe un multithread SIMD procesor, i pentru c n GTX 480
sunt 16 multitreaded SIMD procesor, produsul a dou matrice de 8192 de elemnete este calculat n 16 tacte.

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


251

Diferena ntre arhitectura CPU i GPU, vezi figura urmtoare, i evident ntre performanele de vitez de
calcul rezid n filozofia care st la baza proiectrii lor. Proiectarea CPU este optimizat pentru obinerea de
performan n procesarea secvenial. Aceasta se bazeaz pe un sistem de control sofisticat de execuie nct s
fie exploatat paralelismul la nivel de instruciune, ILP. De asemenea, pentru reducerea latenei memoriei s-a
devoltat un sistem complicat pe dou sau chiar trei niveluri de memorie cache. Dar nici ILP nici memoria cache
nu a dus la performane spectaculoase.
n schimb proiectarea GPU este de a optimiza execuia masiv de threaduri. Astfel n timp ce unele threaduri
sunt n ateptare datorit latenei memoriei sunt suficiente alte threaduri care pot fi procesate asigurnd un pipe
ful fr a fi nevoie de un sistem sofisticat pentru control execuiei. De asemenea, memoria cache de dimensiune
redus este necesar doar pentru a ajuta bandwidth, pentru ca nu toate threadurile s acceseze memoria DRAM. n
consecin, deoarece spaiul ocupat de cache este foarte redus, zestrea disponibil de suprafa pe siliciu, pentru a
implementa sute de PE (elemente de procesare) ct i pentru a dezvolta calculul n virgul flotant, este mult mai
mare!

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


252

OARE CND VA FI POSIBIL?

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace


253

ARHITECTURA I ORGANIZAREA MICROPROCESOARELOR Gh. Toace

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