1. Introducere
Un sistem de tip embedded sau ncastrat este un sistem comandat de un
microprocesor, microcontroler sau de un DSP (Digital Signal Processor procesor
dedicat procesrii digitale a semnalelor). Aceast parte electronic, ce are drept nucleu un
procesor (microprocesor, microcontroler sau DSP), este inclus, ncastrat (embedded) ca
subsistem a unui dispozitiv mult mai complex, dispozitiv care poate s includ i alte
componente hardware sau pri mecanice. Un astfel de sistem este proiectat s execute
un numr finit de funcii, de multe ori avnd diferite constrngeri n executarea acestor
funcii; constrngeri legate de resursele disponibile sau de tip temporal (rezolvarea unor
sarcini ntr-un interval de timp bine stabilit).
n concluzie, spunem c un sistem embedded este un dispozitiv ce are cel puin un
procesor n structura sa.
Diferenele existente ntre un calculator de uz general i un dispozitiv de tip
embedded sunt prezentate n tabelul de mai jos.
Tabel 1. Diferenele existente ntre un calculator de uz general i un sistem embedded
Calculatoare de uz general
1
Dispozitive embedded
Pot efectua sarcini diverse (divertisment,
calcule matematice, comunicaii etc.) atta
timp ct exist o aplicaie (program
software) i resursele necesare efectrii ei.
Efectueaz o sarcin sau un numr de
sarcini predefinite.
Nu implic constrngeri de procesare sau
prelucrare a datelor de timp real.
Constrngerile existente in doar de fluena
comunicrii, prezentrii informaiilor ctre
un utilizator (de confortul acestuia).
O bun parte din aceste sisteme necesit
performane de timp real pentru asigurarea
siguranei i funciilor echipamentelor n
care sunt incluse.
Toate calculatoarele personale au o
arhitectur ce respect un anumit standard.
Dispozitivele embedded nu respect nici un
standard (fiind de altfel de o diversitate rar
ntlnit). Arhitectura acestora este
specific: sarcinii pe care trebuie s o
ndeplineasc i mediului de lucru.
n cea mai mare parte a lor sunt sisteme
independente.
n cea mai mare parte a lor sunt pri
componente a unui sistem mult mai
complex.
Dezvoltarea programelor se poate realiza
pe acelai sistem pe care vor rula.
Dezvoltarea aplicaiei software ce va rula
pe aceste dispozitive este realizat pe alte
calculatoare.
1
de exemplu un calculator personal
2
Dispozitive mecanice de tipul hardisk
(HDD) stocheaz programele software i
sistemul de operare. HDD ofer
deasemenea capaciti suplimentare de
stocare pentru diversele necesiti ale
utilizatorului.
Stocarea se realizeaz pe medii SSSD
(solid state storage devices) gen memorii
flash. Aceste dispositive nu au pri
mecanice n micare iar capacitatea lor
medie de stocare este net inferioar HDD.
Constrngerile de consum a acestor sisteme
nu sunt foarte limitative, din acest motiv
consumul este mult mai mare ca al
sistemelor embedded.
Funcie de aplicaia specifica n care aceste
sisteme sunt utilizate constrngerile de
consum pot fi extrem de dure, existnd
familii ntregi care sunt optimizate doar
pentru un consum redus. n genere
consumul dispozitivelor embedded este
mult mai mic dect al calculatoarelor de uz
general.
2. Considerentehardwareasuprasistemelorembedded
2.1. Arhitecturi
Unul dintre conceptele fundamentale ce definesc un procesor este acela al arhitecturii
acestuia. n cadrul procesului de dezvoltare conceptual i ulterior de implementare fizic
a unui sistem embedded primul pas const, de altfel, n alegerea arhitecturii procesorului,
ulterior aceast alegere ne va influena ntregul lan decizional. n continuare ceea ce este
cu adevrat interesant este s definim noiunea de arhitectur i s observm influenele
pe care aceasta le are asupra performanelor diferitelor procesoare.
Arhitectura unui microprocesor precizeaz conceptele fundamentale ce stau la baza
construciei interne a acestuia, definind structura care susine i care se afl n spatele
modului de manipulare i calcul a datelor de exemplu, ncrcarea/stocarea din/n
memorie, adunare, scdere, nmulire i mprirea diferitelor valori.
La ora actual exist un numr foarte mare de arhitecturi. Cteva dintre acestea sunt
urmtoarele:
1. IA-32 (Intel Architecture 32-bit) cunoscut publicului larg sub denumirea x86,
x86-32 sau i386 este arhitectura utilizat i impus de ctre compania Intel. IA-32
este o arhitectur pe 32 de bii de tipul von Neuman, implementat pentru prima
dat pe microprocesorul 80386. Aceast arhitectur a fost extins i pentru
structuri pe 64 de bii, IA-64, pstrndu-se ns compatibilitatea cu IA-32. IA-64 a
fost implementat pentru prima dat n cadrul familiei de microporcesoare
Itanium. O prezentare n detaliu a procesoarelor ce au la baz aceast arhitectur
va fi realizat n subcapitolul 2.2. Unitatea central de procesare. n principal
aceste procesoare sunt dedicate pieii calculatoarelor personale avnd prea puine
legturi cu piaa sistemelor embedded.
ncepnd cu familia de procesoare Atom, compania Intel i face simit
prezena i pe piaa sistemelor embedded. Aceast famile de procesoare are la
3
baz arhitecturile IA-32
2
i/sau IA-64
3
fiind capabile s ruleze la tensiuni de
operare foarte mici de aici rezultnd i consumul redus de energie, una din
cerinele fundamentale ce caracterizeaz o clas larg de dispozitive embedded. n
principal, familia de procesoare Atom a fost lansat pentru a contrabalansa oferta
existent a concurenilor pe piaa sistemelor optimizate pentru cureni i costuri
sczute (de exemplu: familia Geode produs de AMD sau ARM).
2. ARM (Advanced RISC Machines) este o arhitectur RISC pe 32 de bii i a fost
dezvoltat de Compania ARM Holdings plc din Cambridge, Marea Britanie. Dac
procesoarele bazate pe arhitectura x86 domin piaa calculatoarelor personale,
procesoarele bazate pe arhitectura de tip ARM domin n totalitate piaa bunurilor
la larg consum fiind nglobate n telefoanele mobile, media playere, PDA-uri,
console de jocuri, rutere i n nenumrate periferice ale calculatoarelor personale
precum plci video, hardisk-uri etc.
Arhitectura ARM este cea mai utilizat din punct de vedere a numrului de
procesoare produse, ce o au la baz, i utilizate n diferite aplicaii. Astfel n anul
2006 s-a estimat c n jur de 98% din telefoanele mobile au n componen cel
puin un procesor bazat pe o arhitectur de tip ARM [Krazit, 2006]. n timp ce n
anul 2009 aproximativ 90% din piaa procesoarelor embedded erau bazate pe o
arhitectur de tip ARM [Wikipedia, 2011].
Un alt avantaj fundamental al procesoarelor bazate pe arhitectura ARM este dat
de consumul redus al acestor procesoare. Acest consum redus este generat n
principal de simplitatea arhitecturii. Arhitectura ARM a cunoscut n timp un
numr mare de versiuni. Versiunea 2 a arhitecturii (depit la ora actual),
ARMv2, a stat la baza microprocesorul ARM2 produs n 1986. Acest
microprocesor a fost considerat cel mai simplu microprocesor pe 32 de bii, avnd
n componen n jur de 30.000 de tranzistoare. Pentru comparaie procesorul
produs de Intel 80386 n anul 1986 ngloba 275.000 de tranzistoare. Simplitatea
arhitecturii ARM a generat un consum foarte sczut; performanele acestui
microprocesor au fost superioare microprocesorului 80286 produs de compania
Intel. Continund-ui evoluia aceast arhitectur i-a pstrat simplitatea
4
,
simplitate generatoare a acestor consumuri reduse. Aceast simplicitate a
arhitecturii a fost generat de ne utilizarea microcodului n rularea instruciunilor
limbajului de asamblare.
Dintre versiunile cele mai de succes ale arhitecturii ARM putem aminti:
ARMv5TE ce st la baza procesoarelor de tipul PXA27x, procesoare ce
fac din gama cunoscute sub numele comercial Xscale. Aceast clas de
microprocesoare include o serie de familii distincte: IXP (dedicate lucrului
n reea), IXC (dedicate sistemelor de control aviatice), IOP (procesoare de
tipul I/0), PXA (procesoare de aplicaii generale) i CE (Consumer
Electronics procesoare pentru bunurile de larg consum).
ARMv6 ce st la baza CPU de tipul ARM1136J(F)-S ce este folosit drept
2
Cele din seriile: Atom Z5xx, Atom Z6xx i Atom N2xx.
3
Cele din seriile: Atom 2xx, 3xx, N4xx, D4xx i D5xx.
4
De exemplu, microprocesorul ARM6, bazat pe urmtoarea versiune a acetei arhitecturi (ARMv3), era
realizat cu ajutorul a doar 35.000 de tranzistoare.
4
nucleu pentru microprocesoarele:
Qualcomm MSM7200A (folosit, de exemplu, n telefonul HTC
Touch Diamond2);
Freescale MXC300-30 (Nokia E63, Nokia E71, Nokia 5800, Nokia
E51, Nokia E75, Nokia N97, Nokia N81);
Qualcomm MSM7201A (HTC Dream, HTC Magic, Motorola Z6,
HTC Hero);
OMAP24x (folosit n telefoanele Nokia E90, Nokia N93, Nokia
N95, Nokia N82);
etc.
ARMv6KZ ce st la baza procesorului ARM1176JZ(F)-S cu ajutorul
cruia s-au construit dispozitive precum: Apple iPhone, Apple iPod touch,
Motorola RIZR Z10, NVIDIA GoForce 6100 etc.
ARMv7-A ce st la baza CPU de tipul Cortex-A8. Cu ajutorul acestui
microprocesor au fost realizate o serie larg de dispozitive de succes
precum: Apple iPod touch (dispozitivele aparinnd celei de a treia
generaie), Apple iPhone 3GS, Palm Pre, Samsung i8910, Sony Ericsson
Satio, Nokia N900. Acest CPU este utilizat drept nucleu pentru
procesoarele:
din seria OMAP3xxx produs de compania Texas Instruments. De
exemplu pe baza SoC-ului OMAP3430 construindu-se primul
telefon scos pe pia, Motorola MILESTONE, ce a rulat sistemul de
operare Android 2.0; tot acest procesor a fost utilizat i n telefoanele
Motorola Droid i Palm Pre.
FreeScale i.MX51-SoC;
Apple A4, acest procesor a fost utilizat pentru prima dat n tableta
iPad produs de compania Apple. Ulterior a fost inclus n cea de a
patra generaie de iPhone i iPod Touch precum i n cea de a doua
generaie de Apple TV;
Chiar i Qualcomm Snapdragon are multe similariti cu
procesoarele din familia Cortex-A8 (de exemplu acelaii set de
instrucini comun cu arhitectura ARMv7-A) dar a fost reproiectat
aproape total de firma Qualcomm rezultnd performane superioare
n cadrul instruciunilor multimedia de tip SIMD.
De asemenea aceeai arhitectur ARMv7-A st i la baza CPU de tipul
Cortex-A9, procesor dezvoltat specific pentru a conlucra cu mai multe
nuclee similare de acelai tip. O arhitectur care include pn la 4 astfel de
procesoare este denumit Cortex-A9 MPCore. Aceste procesoare se
gsesc n SoC precum:
OMAP4430
5
/4440 produse de TI sau
n procesoarele din clasa Orion care au i ele 2 nuclee Cortex-A9 la
1.0GHz.
5
Dou nuclee de tipul Cortex-A9 la 1 GHz
5
3. MIPS (Microprocessor without I nterlocked Pipeline Stages) este o arhitectur de
tip RISC ce a stat la baza dezvoltrii unei ntregi familii de microprocesoare pe 32
sau pe 64 bii. Aceast arhitectur a fost dezvoltat de compania American MIPS
Technologies. La ora actual exist o serie larg de versiuni ale arhitecturii MIPS
(MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32, and MIPS64).
Iniial microprocesoarele bazate pe arhitectura MIPS au fost destinate pieii
calculatoarelor personale intrnd n direct competiie cu arhitectura de tip IA-32,
reuind la un moment dat s o depeasc n performane. Dar lansarea de ctre
Intel a unor noi versiuni de procesoare Pentium cu performane superioare i
pierderea suportului oferit de ctre compania Microsoft pentru procesoarele
bazate pe aceast arhitectur (ultimul sistem de operare care a mai fost compatibil
cu arhitectura MIPS a fost sistemul de operare Windows NT versiunea 4.0) a
determinat retragerea companiei i implicit a arhitecturii de pe piaa
calculatoarelor personale de uz general i ndreptarea atenie companiei
productoare ctre piaa sistemelor i a aplicaiilor de tip embedded.
4. SH sau SuperH a fost la origine o arhitectur de tip RISC pe 32 de bii dezvoltat
de compania Hitachi care ulterior prin versiunea arhitectural SH5 a migrat ctre
64 de bii. In acest moment sunt produse o serie larg de microprocesoare pe baza
arhitecturii SH de ctre compania japonez Renesas Technology (companie
deinut de firmele Hitachi i Mitsubishi). Versiunile SH2, SH2A, SH3, SH4 i
SH4A ale arhitecturii SuperH sunt n continuare active i implementate n diferite
tipuri de procesoare.
5. PowerPC (Power Performance Computing sau Performance Optimization With
Enhanced RISC Performance Chip) a fost dezvoltat n anul 1991 de un consoriu
format din trei companii Apple, IBM i Motorola. Aceast arhitectur a fost
dezvoltat iniial pentru piaa calculatoarelor personale, iar ulterior s-a impus n
pe segmentul de pia al sistemelor embedded i a sistemelor de foarte nalt
performan
6
. De asemenea, aceste procesoare sunt utilizate la consolele de jocuri
Nintendo GameCube i Wii precum i la Xbox 360 produs de Microsoft.
PowerPC este o arhitectur de tip RISC pe 32 sau pe 64 de bii ce are la baz
arhitectura Power dezvoltat de compania IBM. Aceste microprocesoare pot
opera cu numere cu virgula mobil n simpl sau dubl precizie.
Diferitele sisteme de operare sunt proiectate s lucreze cu diferite familii de
microprocesoare caracterizate de diferite arhitecturi i de diferite versiuni ale acestora. De
exemplu, sistemul de operare Windows CE suport urmtoarele arhitecturi x86, ARM
(doar versiunea ARMv4I), SuperH (doar versiunea SH4 pn la Windows CE 6.0 R2) i
MIPS (versiunile MIPSII i MIPSIV) n timp ce ultimul sistem de operare de la
Microsoft, Windows 7, suport doar arhitecturile IA-32 i IA-64.
Fcnd o analiz comparat a produselor existente, se observ c la ora actual
arhitectura ARM domin piaa telefoanelor mobile n timp ce compania Intel prin
arhitecturile IA-32 i IA-64 domin piaa calculatoarelor personale (PC). Lupta ntre cele
6
Firma BAE SYSTEMS Platform Solutions a implementat pentru avionul de vntoare F-35 Lightning II
(avion din generaia a cincea multirol de tip stealth) produs de Lockheed Martin sistemul electronic de
comand i control ce are drept nucleu un procesor dual core dezvoltat pe baza unei arhitecturi de tip
PowerPC. Acest procesor a fost construit de firma Freescale.
6
dou arhitecturi se duce acum pe segmentul de pia rmas ntre zona calculatoarelor
personale i cea a telefoanelor mobile, zon ocupat de smartbook-uri (bazate n principal
pe arhitecturi de tip ARM) i netbook-uri (ce utilizeaz procesoarele produse de Intel).
Tabel 2. Comparaie ntre cele dou tipuri de sisteme susinute de cele dou arhitecturi
dominante pe piaa procesoarelor [Clarke, 2009]
Netbook bazate pe
procesoare ce utilizeaz o
arhitectur de tipul x86
Smartbook - bazate pe
procesoare ce utilizeaz
arhitecturi de tip ARM
Pre Mai mult de 200 USD Mai puin de 200 USD
Sisteme de operare Windows compatibile Linux sau Chrome
Autonomie acumulatori 3.5 ore Cel puin 8 ore
Conform afirmaiilor fcute de compania Intel n anul 2009 94% din piaa sistemelor
netbook/smartbook avea la baz procesoare bazate pe arhitectura x86. Dar conform unor
analize realizate n anul 2009 evoluia sistemelor ce utilizeaz procesoare cu arhitecturi
ARM se va schimba, ajungndu-se ca n anul 2012 procesoarele cu arhitectura de tip
ARM s domine 55% din piaa sistemelor netbook i smartbook, vezi Tabelul 3.
Tabel 3. Analiz predicitiv a evoluiei pieii sistemelor netbook/smartbook [Clarke,
2009]
Netbook bazate pe procesoare ce
utilizeaz o arhitectur de tipul x86
Smartbook - bazate pe procesoare
ce utilizeaz arhitecturi
de tip ARM
2009 22.1 milioane uniti 1.4 milioane uniti
2010 31.1 milioane uniti 7.8 milioane uniti
2012 43.2 milioane uniti 52.9 milioane uniti
Arhitectura unui procesor nu este un lucru fizic, ea este o descriere a conceptelor
fundamentale ce stau la baza funcionrii unui CPU. Dup cum am vzut anterior fiecare
arhitectur are diferite versiuni, de exemplu arhitectura ARM are 7 versiuni (ARMv1,
ARMv2, ..., ARMv6, ARMv7). Iar de cele mai multe ori este posibil ca o anumit
versiune a unei arhitecturi s aib alte subversiuni. Astfel, versiunea 7 a arhitecturii ARM
are urmtoarele subversiuni:
1. A (cunoscut sub numele de ARMv7-A) a fost realizat pentru sisteme de
operare sofisticate bazate pe utilizarea tehnicilor de tip memorie virtual. Pe
baza acestei versiuni (ARMv7-A) au fost realizate urmtoarele procesoare
sau CPU (Central Processing Unit):
7
a. Cortex-A8 este un procesor pe 32 de bii proiectat special pentru a
obine cele mai bune performane avnd consumul cel mai redus
7
.
b. ARM Cortex-A9 Single Core Processor
c. ARM Cortex-A9 MPCore
2. R (ARMv7-R) a fost proiectat dedicat pentru procesoarele de tip embedded
de timp real (real-time systems). Utilizndu-se aceast versiune a arhitecturii
ARM au fost construite urmtoarele procesoare:
a. Cortex-R4 i
b. Cortex-R4F.
Aceste procesoare sunt dedicate de asemenea aplicaiilor de tip embedded
comerciale ce vor fi produse n volume mari (hard disk-uri, imprimante,
modemuri wireless etc.).
Figura 2.1. Schema bloc a microprocesorului OMAP3530 produs de Texas Instruments
3. M (ARMv7-M) - arhitectur optimizat pentru diferitele tipuri de
7
Consumul acestui procesor este mai mic de 300 mW lucrnd la frecvene ce ncep de la 600MHz
ajungnd i depind 1GHz.
8
microcontrolere. Aceast versiune este dedicat n special aplicaiilor ce
urmresc minimizarea costurilor (low-cost applications). Aceast familie
include urmtoarele procesoare:
a. Cortex-M0 procesor de mici dimensiuni i consum redus (este
considerat procesorul cu consumul cel mai redus construit utilizndu-
se o arhitectur ARM);
b. Cortex-M1 este proiectat special spre a fi inclus n FPGA-uri;
c. Cortex-M3 este proiectat special pentru a obine maximum de
performan cu costuri minime.
n concluzie, implementarea unei anumite versiuni a unei anumite arhiteturi este
chiar procesorul sau CPU. Din punct de vedere a proiectantului dup alegerea
arhitecturii alegerea CPU este cel de al doile pas. Funcie de cerinele impuse sistemului
(de exemplu: consum, cost redus, necesitatea existenei unui sistem de operare sau/i
rularea unor aplicaii de tip real-time) se va alege procesorul sau CPU (de exemplu pentru
arhitectura ARM putem alege Cortex-M0 sau Cortex-A8 sau Cortex-R4F).
Figura 2.2. Legturile existente ntre arhitecturi, CPU, SoC i plcile electronice
Productorii de circuite i microprocesoare nglobeaz ulterior procesorul (CPU) ntr-
un SoC (System on a Chip). SoC
8
nglobeaz pe lng CPU i o serie de circuite logice
8
De multe ori termenul SoC este utilizat greit n legtur cu dispozitivele embedded de tip
microcontroler, deoarece i acestea nglobeaz un CPU mpreun cu un numr larg de periferice care
asigur autonomia acestor dispozitive (numrul de componente externe suport este foarte mic).
Microcontrolerele sunt, n mod firesc, asimilate n familia sistemelor de tip SCS (single chip systems)
chiar dac uneori aceast realitate nu este n totalitate valabil.
Termenul SoC este folosit n direct legtur cu CPU puternice capabile s susin sisteme pe
operare ce necesit existena unei memorii externe foarte mare memorii ce nu por fi nglobate ntr-un
sistem de tip SoC n principal datorit: costurilor prohibitive i a dificultilor tehnologice. Cu toate
acestea, sistemele SoC necesit existena unui numr considerabil de dispozitive periferice externe, mult
mai multe i mai complexe dect n cazul microcontrolerelor.
Teoretic vorbind utilizarea termenului SoC n legtur cu microcontrolerele nu este corect dar
este utilizat.
Plac electronic
OMAP35x
Evaluation Module
BeagleBoard
CPU Arhitecturi
IA-32
MIPS
SH
ARM
PowerPC
Cortex A8
SoC
Qualcomm 7x00
Texas Instruments
OMAP2430
ARM1136J(F)-S
Freescale
i.MX515
Texas Instruments
OMAP3530
Samsung
S5PC100
9
proiectate s susin funcionarea CPU mpreun cu o serie de dispozitive periferice
(porturi de comunicaie paralele sau seriale, convertoare ADC sau DAC, circuite suport i
drivere pentru elemente de afiare LCD etc.). Toate acestea sunt nglobate ntr-un SoC,
deci ntr-un singur circuit electronic toate acestea sunt realizate pentru reducerea
costurilor dar i pentru optimizarea la maximum a performanelor sistemului global.
Figura 2.3. Schema bloc a microprocesorului i.MX515 produs de Freescale
De exemplu, CPU-ul Cortex-A8 este nglobat ntr-o serie larg de microprocesoare de
tip SoC precum: OMAP3530 produs compania Texas Instruments, i.MX515 produs de
compania Freescale, S5PC100 produs de compania Samsung etc. Pentru o analiz
comparativ a acestor microprocesoare de tip SoC, a arhitecturii lor interne vezi Figura
2.1, Figura 2.3 i Figura 2.4.
Ulterior aceste microprocesoare de tip SoC sunt nglobate pe diferite plci electronice
devenind astfel un sistem de sine stttor. Aceste plci electronice (board) sunt cunoscute
sub numele de plci de dezvoltare sau, de exemplu, plci de baz (mainboard) n lumea
calculatoarelor personale.
2.2. Unitatea central de procesare
Unitatea central de procesare (CPU - Central Processing Unit) sau procesorul este
acea parte a unui sistem de calcul responsabil cu execuia instruciunilor unui anumit
program sau a mai multor programe ce acceseaz concurenial resursele CPU. Dup cum
s-a prezentat anterior, CPU-ul este, de asemenea, implementarea unei versiuni specifice a
unei anumite arhitecturi. Programele ce sunt rulate pe un CPU sunt scrise de un
programator i au un anumit scop bine definit. Unitatea central de procesare controleaz
10
de asemenea toate aciunile efectuate de celelalte componente ale calculatorului,
controlnd deci ntregul sistem. ncepnd cu primul calculator de uz general ENIAC
9
i
urmrind evoluia calculatoarelor i a tehnicii de calcul, unitatea central de procesare,
CPU, a cunoscut i suferit o serie larg de transformri i modificri.
Figura 2.4. Schema bloc a microprocesorului S5PC100 produs de compania Samsung
Anterior, CPU-urile erau realizate utilizndu-se diferite circuite integrate i
componente discrete fiind, uneori, o sum de mai multe circuite imprimate realizate cu
aceste componente. La ora actual microprocesoarele, ce sunt uniti centrale de
procesare, nglobeaz ntr-un singur circuit toate aceste componente.
n acest moment, structura de baz a unitilor centrale de procesare moderne, a
microprocesoarelor, este format din:
Unitatea de control determin funcia i rolul fiecrei instruciuni, citind i
decodificnd codul acestora coordonnd funcionarea CPU. Unitatea de
control este la rndul ei format din mai multe blocuri individuale. n
continuare le prezentm pe cele mai importante:
Unitatea de predicie a salturilor (branch predictor) ncearc s
determine ce informaie urmeaz a fi utilizat de unitatea/unitile de
execuie n vederea aducerii acesteia n memoria intern a CPU
anterior utilizrii acesteia de ctre unitatea de execuie. Este
considerat de multe ori bloc distinct, vezi Figura 2.6, sau parte
integrant a unitii de control - vezi Figura 2.5.
9
ENIAC (Electronic Numerical Integrator And Computer) - calculator ce coninea 17.468 tuburi
electronice, 7.200 diode, 1.500 relee, 70.000 rezistoare, 10.000 condensatoare, avnd n jur de 5
milioane de lipituri realizate manual. ENIAC cntrea n jur de 27 de tone.
11
Microcodul este un program al CPU ce este rulat n momentul
execuiei fiecrei instruciuni main (o instruciune a codului scris
n limbajul de asamblare). Pentru execuia acestui cod este necesar
existena unei memorii ROM foarte rapide, vezi Figura 2.5 i
Figura 2.6, i a unui bloc de translatare, traducere a instruciunilor
main n secvene operative de comenzi pe care circuitele hardware
ale CPU s le neleag i s le proceseze. Acest microcod este
utilizat deasemenea n implementarea unor instruciuni complexe,
compuse din mai muli pai de execuie, fr ns a crete n mod
inutil complexitatea hardware a CPU-ului.
Blocul de distribuie (dispatcher) al datelor este utilizat n cazul
CPU ce conin mai multe uniti de execuie. Are rolul de a distribui
datele ctre unitile de procesare corecte.
Unitatea de procesare partea principal a CPU dedicat execuiei
instruciunilor efectueaz toate operaiile i calculele necesare. Ea este
partea cea mai rapid a CPU-ului. Aceast unitate poate fi format din mai
multe uniti de execuie individuale:
Figura 2.5. O schem bloc simplificat a unei uniti centrale de procesare
Unitatea de calcul n virgul mobil (FPU Floating Point Unit)
realizeaz toate operaiile matematice n reprezentri reale, deci n
virgul mobil (floating point).
M
e
m
o
r
i
e
c
a
c
h
e
L
1
I
n
s
t
r
u
c
i
u
n
u
n
i
M
e
m
o
r
i
e
c
a
c
h
e
L
1
d
a
t
e
Unitate de
control
ALU
FPU
Regitri
Memorie cache L2
Unitatea de intrare/ieire
12
Unitatea logic i aritmetic (ALU - Arithmetic and Logic Unit)
realizeaz toate calculele aritmetice (adunare, scdere, nmulire i
mprire
10
), funciile logice (i, sau, sau exclusiv etc.) i operaii de
rotire a datelor. ALU opereaz doar n reprezentri ale tipurilor de
date de tip ntregi (integer).
Memoria cache primar numit i memoria L1 este situat ct mai
aproape de unitatea de execuie (fiind integrat n CPU). Aceast memorie
este o memorie SRAM de vitez (cu timpi de acces
11
foarte mici) mult mai
rapid dect memoria extern a calculatorului. Ea este mprit n dou
regiuni diferite
12
(vezi Figura 2.5): memoria de date i memoria de
instruciuni. Necesitatea utilizrii acestei memorii a fost generat n
principal de viteza de lucru foarte mare a procesorului comparativ cu ratele
mici i foarte mici de transfer a datelor cu mediile externe de stocare
(memorie RAM sau hard disk).
Conceptul fundamental care st la baza memoriei de tip cache este de a
determina CPU-ul s preia i s prelucreze date doar din memoriile cache
interne (memorii rapide) i nu din memoria RAM extern (mult mai lent).
Circuitele suport ale memoriilor cache copie din memoria RAM extern
datele i programul necesar i caut s ghiceasc ce va fi necesar n
viitorul imediat, aducnd aceste informaii n memoriile corespondente
(L1D sau L1P).
Memoria cache secundar sau de nivel 2 (denumit L2 Cachesau Level 2
Cache) este de asemenea o memorie SRAM, localizat pe acelai cip cu
CPU. L2 este o memorie tampon ntre procesor i memoria extern RAM.
Ea este o memorie mai rapid dect memoria RAM extern dar este mai
lent dect memoria cache L1 comparativ cu aceasta timpii de laten nu
mai sunt foarte apropiai de zero.
Bus-ul de date conecteaz ntregul sistem la memoria extern i la toate
celelalte componente ale calculatorului.
Am precizat anterior c necesitatea introducerii memoriilor cache interne a fost
generat de discrepana existent ntre vitezele de prelucrare/preluare a CPU fa de ratele
de transfer a mediilor de stocare externe. Pentru a face doar o simpl comparaie s
analizm urmtoarele date:
Dac lum n calcul un HDD foarte rapid, de exemplu SATA-300 vom obine o
vitez maxim de transfer de 300 Moctei/s;
Pentru o memorie DDR2-800, care este accesat pe 64 bii (vezi Figura 2.6) vom
obine o vitez de transfer de 6400 Moctei/s. n schimb dac se utilizeaz o
tehnic de tip dual canal (dual channel mode) de accesare a memoriei vom obine
o vitez de 12800 Moctei/s. n schimb, problema fundamental a memoriilor nu
este rata de transfer ci timpul de laten (cu ct o memorie ntrzie prezentarea
10
Nu toate procesoarele au uniti ALU ce suport operaiile matematice de tip nmulire sau mprire -
n principal datorit complexitii ridicate a blocurilor ce susin aceste funcii.
11
Sinonim cu laten.
12
Aceast divizare a memoriei cache L1 este una din cele mai importante mbuntiri a procesoarelor din
familia Pentium fa de familia anterioar 486.
13
datelor atunci cnd acestea sunt cerute). De exemplu, dac o memorie are CL
(CAS Latency) de 3, acest fapt semnific c memoria va ntoarce data cerut dup
3 cicli (impulsuri de tact) fa de momentul cererii. n tot acest interval de timp
CPU va trebui s atepte. Deci teoretic ar trebui s mprim viteza de transfer la
3. Cu toate acestea performanele nu scad att de dramatic deoarece memoriile
lucreaz n mod normal ntr-un mod de lucru de tip burst mode (dup prima
accesare care este ntrziat cu CL datele vor fi preluate la fiecare puls de tact,
dac se acceseaz locaii consecutive din aceeai pagin);
Un CPU ce ruleaz intern la 2 GHz i care are bus-urile interne pe 64 de bii va
avea o vitez de transfer a datelor de 16 Goctei/s. Dar, dac lum n calcul c
bus-urile de date ntre memoria L2 i memoria L1 pot fi de 128 (ca la un AMD
standard) sau de 256 (ca la un Intel) bii atunci vom obine viteze mult mai mari:
32 Goctei/s sau 64 Goctei/s.
Figura 2.6. Schema bloc a unui procesor Pentium [Pentium, 2011]
n cadrul unitilor de procesare moderne sunt nglobate mai multe uniti de
execuie. Aceste uniti de execuie sunt proiectate pentru a rula n paralel, iar o astfel de
14
arhitectur poart numele de arhitectur suprascalar
13
. De exemplu, n cazul utilizrii
a patru uniti de execuie, teoretic, se pot executa pn la patru instruciuni n paralel
obinndu-se astfel o cretere cu 4 a vitezei de lucru. n mod ideal, un CPU cu n uniti de
execuie ar trebui sa ofere o viteza de prelucrare de n ori mai mare dect un sistem cu o
singur unitate de execuie. Dar, n realitate, consumul suplimentar de resurse necesar
pentru coordonarea activitii unitilor de execuie i soluionarea competiiei pentru
resurse comune (date, magistrale de informaii, rezolvat oarecum parial prin utilizarea
pipeline-urilor) nu permite atingerea acestui deziderat. n plus i programul rulat trebuie
dezvoltat de o aa natur astfel nct s permit o rulare n paralel a mai multor
instruciuni.
Figura 2.7. Schema bloc simplificat a unui procesor Pentium
O alt caracteristic a acestor uniti de execuie este dat de faptul c acestea nu sunt
identice, ele sunt specializate pe un anumit gen de operaii (de exemplu, numere ntregi
unitatea de execuie ALU , sau numere n virgul mobil unitatea de execuie FPU).
13
De exemplu, procesoarele de tip Pentium 4 au cinci uniti de execuie care lucreaz n paralel
15
n final, putem concluziona c prin intermediul unei astfel de abordri, similar cu
cea anterioar, se obine o cretere substanial a performanelor global ale
microprocesorului. De exemplu, n Figura 2.6 se observ c procesoarele Pentium au
dou uniti ALU i o singur unitate FPU.
Aceeai schema bloc a unui procesor Pentium prezentat n Figura 2.6 este
reprezentat puin mai schematizat n Figura 2.7.
Din punct de vedere a funcionrii, n momentul n care CPU va dori s preia o nou
instruciune acesta o va cuta pentru prima dat n memoria cache de instruciuni L1,
dac o gsete (memory hit) o va prelua i va lucra cu ea. n schimb, dac nu o gsete
(memory miss), va continua cutarea instruciunii respective n memoria L2, dac nici
aici nu exist n final o va prelua direct din memoria RAM a sistemului. Avnd
instruciunea cutat, blocul decodor de instruciuni va determina imediat paii necesari
executrii instruciunii respective. Utiliznd microcodul asociat fiecrei instruciuni
unitatea de control va determina toi paii intermediari necesari executrii instruciunii i
va lansa secvenele de comenzi individuale necesare finalizrii acestor instruciuni ctre
unitile de execuie.
n memoria cache L1D se stocheaz datele ce sunt procesate. Dac citirea datelor,
incluznd toate mecanismele implicate, nu ridic nici o problem conceptual, n schimb
scrierea acestora n memoria cache i sincronizarea memoriei L1D cu memoria RAM a
sistemului se poate realiza prin dou mecanisme diferite: write-back i write-through.
Prin intermediul metodei write-back
14
modificrile fcute n memoria cache nu sunt
copiate imediat n memoria RAM extern. Scrierea datelor este realizat n memoria
RAM doar atunci cnd este absolut nevoie, de exemplu cnd zona ocupat i procesat
anterior este necesar pentru stocarea unor noi date. n contrast n cadrul metodei write-
through o dat cu scrierea datelor n memoria cache sunt scrise simultan i n memoria
RAM. Datorit mecanismelor ce guverneaz aceste metode, de cele mai multe ori metoda
write-back determin obinerea unor performane mai bune (a unei viteze mai mari) dect
atunci cnd se utilizeaz metoda write-through. Aceste performane sunt superioare
datorit minimizrii numrului de scrieri n memoria RAM exterioar a sistemului.
2.3. Utilizarea tehnicilor de tip pipeline n procesoare
Introducere
Tehnicile de pipelining sunt metode de cretere a performantei globale a unui
procesor prin utilizarea paralelismului existent la nivelul fiecrei instruciuni prin
suprapunerea proceselor de execuie a instruciunilor. n acest mod se obine o cretere a
vitezei de execuie a instruciunilor fr a crete viteza de lucru a procesorului. Tehnica
de tip pipelining, de altfel la fel ca i utilizarea arhitecturilor scalare, este o tehnic
transparent programatorului, acesta ne fiind obligat s in cont de acestea n scrierea
programelor. Cu toate acestea, o scriere a programelor, ce are n vedere existena acestor
tehnologii nglobate n procesor, poate determina o maximizare a performanelor ce se
obin cu aceste CPU-uri.
14
Aceast metod a fost folosit n clasa procesoarelor Intel ncepnd cu procesorul 80486.
16
Etapele execuiei unei instruciuni
O instruciune, n limbaj de asamblare, const dintr-o secven de octei (1-4 octei).
Dintre octeii unei instruciuni cel puin unul reprezint codul de instruciune (care spune
ce operaii realizeaz respectiva instruciune) iar restul sunt utilizai pentru a coda
regitrii ce stocheaz date, datele sau adresele datelor ce vor fi prelucrate i/sau locul
unde vor fi stocate. O instruciune are o durat de execuie cunoscut sub numele de ciclu
instruciune. Funcie de tipul procesorului, de complexitatea instruciunii durata unui
ciclu de instruciune poate varia sau o instruciune poate fi compus din mai multe cicluri
main.
Pentru utilizarea tehnologiei de tip pipeline un ciclu instruciune este descompus ntr-
un numr fix de segmente (stage). Fiecare segment reprezentnd un subproces elementar
n care se descompune procesul de execuie a unei instruciuni.
n general, execuia oricrei instruciunii se poate descompune n urmtoarele
subprocese sau segmente mai simple:
1. IF - instruction fetch (citirea codului fiecrei instruciuni, extragerea
instruciunii din memoria L1P, L2 sau RAM),
2. ID - instruction decoding (nelegerea, decodificarea codului instruciunii n
urma acestui proces CPU va ti exact ce are de fcut),
3. OF - operand fetch (extragerea operandului, preluarea acestuia i stocare n unul
din regitri interni ai CPU),
4. EX - execution (executia operaiei prin folosirea unuia din unitile de execuie
de care CPU dispune),
5. WB - write-back (rezultatul obinut n urma procesrii de ctre una din unitile
de execuie este salvat n memorie).
I nstr
1
IF ID OF EX WB
I nstr
2
IF ID OF EX WB
I nstr
3
IF ID OF EX WB
Tact 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Figura 2.8. Modalitatea de execuie a trei instruciuni pe un CPU
ce nu utilizeaz tehnica de tip pipelining
Tehnica utilizrii pipline-urilor
n continuare vom presupune c durata unui segment este egal cu perioada ceasului
CPU presupunere adevrat n cea mai mare parte a situaiilor. Din Figura 2.8 se
observ c n cazul unui CPU ce nu utilizeaz tehnica de tip pipeline pentru execuia unei
secvene de 3 instruciuni sunt necesare 15 tacturi. n general acest mod de lucru este
specific microcontrolerelor de generaii mai vechi care datorit simplitii constructive
(generatoare de costuri reduse) nu au nglobate n CPU tehnici de tip pipelining. Cu toate
17
acestea microcontrolerele ce fac parte din generaii recente nglobeaz intern tehnica de
tip pipeline
15
.
Figura 2.9. Structura unui pipeline ce corespunde etapelor de descompunere a unei
instruciuni anterior prezentate
Una dintre metodele cele mai directe de a evita execuia secvenial prezentat n
Figura 2.8 este aceea de a ncepe unele din subprocesele necesare execuiei unei
instruciuni (de exemplu IF i ID) nainte ca instruciunea anterioar (care se afl, de
exemplu, n etapa OF) s-i fi terminat execuia. O astfel de aciune se poate realiza n
principal deoarece circuitele de procesare interne CPU ce se ocup diferitele segmente ale
unei instruciuni sunt independente, unele de altele, i nu necesit accesul la aceleai
resurse (de cele mai multe ori).
n Figura 2.9 se prezint structura unui pipeline static care corespunde descompunerii
anterioare a unei instruciuni n cele 5 subprocese.
I nstr
1
IF ID OF EX WB
I nstr
2
IF ID OF EX WB
I nstr
3
IF ID OF EX WB
I nstr
4
IF ID OF EX WB
I nstr
5
IF ID OF EX WB
Tact 1 2 3 4 5 6 7 8 9
Figura 2.10. Modalitatea de execuie simultan a unui numr de instruciuni pe un CPU
ce utilizeaz un pipeline cu o adncime de 5
n Figura 2.10 se prezint funcionarea schematic a unui pipeline ce are o adncime
de 5 subprocese i o singur unitate de execuie. Din aceast figur se observ c cel
puin teoretic un astfel de pipeline poate susine execuia unui instruciuni n fiecare ciclu
sau perioad procesor.
15
De exemplu, microcontrolerele produse de Atmel i Microchip, AVR respectiv PIC nglobeaz un
pipeline de dou segmente (stages).
Iesire
C
i
r
c
u
i
t
P
r
o
c
e
s
a
r
e
I
F
L
a
t
c
h Intrare
C
i
r
c
u
i
t
P
r
o
c
e
s
a
r
e
I
D
L
a
t
c
h
C
i
r
c
u
i
t
P
r
o
c
e
s
a
r
e
W
B
L
a
t
c
h
...
Semnal
clock
Starea pipeline-ului la
al 5-lea tact
18
Pentru mbuntirea n continuare a performanelor, a vitezei de execuie, se
utilizeaz arhitecturi suprascalare, arhitecturi ce au mai multe uniti de execuie. Pentru
arhitecturile suprascalare pipeline-ul trebuie s fie de o dimensiune mult mai mare
16
comparativ cu arhitecturile subscalare. Unul din blocurile fundamentale ale unei structuri
suprascalare este blocul de distribuie (dispatcher), nglobat n unitatea de control, ce are
rolul de a determina ce instruciuni pot fi executate n paralel, pe ce uniti de execuie i
care instruciuni nu pot fi executate n paralel.
I nstr
1
IF ID OF EX WB
I nstr
2
IF ID OF EX WB
I nsr
3
IF ID OF EX WB
I nstr
4
IF ID OF EX WB
I nstr
5
IF ID OF EX WB
I nstr
6
IF ID OF EX WB
I nstr
7
IF ID OF EX WB
I nstr
8
IF ID OF EX WB
I nstr
9
IF ID OF EX WB
I nstr
10
IF ID OF EX WB
Tact 1 2 3 4 5 6 7 8 9
Figura 2.11. Modalitatea de execuie simultan a unui numr de instruciuni pe un CPU
suprascalar ce utilizeaz un pipeline cu o adncime de 10
Dac dou instruciuni pot fi executate n paralel i sunt disponibile uniti de
execuie atunci acestea sunt procesate n paralel. n acest mod, teoretic, numrul de
instruciuni ce pot fi executate n paralel este egal nu numrul unitilor de execuie
disponibile.
Funcie de eficiena blocului de distribuie (dispatcher) a instruciunilor, a capacitii
acestuia de a umple ntr-un mod eficient, corect i la timp pipeline-ul, astfel nct ct
mai multe din unitile de execuie s fie utilizate, va rezulta un numr mai mic sau mai
mare de instruciuni ce pot fi executate n paralel. Pentru pipeline-ul prezentat n Figura
2.11 un maximum de dou instruciuni pe ciclu pot fi executate, avnd la dispoziie dou
uniti de execuie.
Pipeline-uri dinamice
16
n cadrul procesoarelor produse de compania Intel, familia de procesoare Pentium 4 are implementat n
CPU o structur de tip pipeline cu 20 segmente. Noile ediii revizuite ale procesoarelor Intel cu nume de
cod Prescott (scos pe pia pe data de 1 februarie 2004), Prescott 2M (n prima parte a anului 2005,
arhitectur IA-64) i Cedar Mill (5 ianuarie 2006, cu o arhitectur IA-64) nglobeaz pipeline-uri cu 31
de segmente. Comparativ DSP-urile produse de compania Texas Instruments accept ntre 7 i 11
subprocese simultan n cadrul familiei TMS320C6200 i ntre 7-16 subprocese n cadrul familiei de
DSP-uri TMS320C6700.
Starea pipeline-ului la
al 5-lea tact
19
Structura unui pipeline dinamic este prezentat n Figura 2.12. ntr-un astfel de
pipeline structura lui se poate schimba/modifica n timp ce datele l parcurg. De exemplu,
o anumit instruciune are nevoie doar de subprocesele 1, 2 i 3 n timp ce o alta are
nevoie de doar subprocesele 1 i 3. Prin aceast schimbare a arhitecturii pipeline-ului se
obine caracterul dinamic al acestuia. Dezavantajul major al acestor pipeline-uri dinamice
este dat de complexitatea circuitelor de control a structurii pipeline-ului.
Figura 2.12. O posibil structur unui pipeline dinamic
Probleme ce apar n cazul CPU ce utilizeaz pipeline-uri
Exist mai multe probleme ce pot apare n cazul utilizrii tehnicilor de tip pipelining.
Aceste dificulti n utilizarea pipeline-urilor sunt generate n principal de:
1. necesitatea furnizrii rapide i corecte de instruciuni la intrarea pipeline-ului
(problem costisitoare din punctul de vedere al ariei chipului necesar
ndeplinirii corecte a acestui deziderat),
2. strangularea (bottleneck) a unui subproces datorit volumului de lucru
afectat unui segment al instruciunii,
3. probleme denumite generic a emiterii instruciunii (issuing) deci, a
existenei unei instruciunii disponibile, dar care nu poate fi executata datorit
unui anumit tip de hazard: structural, al datelor sau al controlului
programului.
Problemele de tip hazard structural sunt generate de imposibilitatea utilizrii unor
anumite resurse ale CPU care sunt blocate de alte activiti n derulare. De cele mai multe
ori aceste probleme sunt rezolvate prin implementarea hardware a unui numr mai mare
de uniti de execuie i/sau registre.
I nstr
1
IF ID OF EX WB
I nstr
2
IF ID OF EX WB
Tact 1 2 3 4 5 6
Figura 2.13. Repartizarea n pipeline a instruciunilor
Hazard creat de date este generat de dependena unei instruciuni de o instruciune
anterioara, de rezultatul obinute de la aceast instruciune anterioar. De exemplu, dac
dorim s executm urmtoarea structur de cod:
L
a
t
c
h
L
a
t
c
h
L
a
t
c
h
20
I nstr
1
: ADD R2, R3, R1 R1 = R2 + R3
I nstr
2
: ADD R1, R4, R5 R5 = R1 + R4
pe un procesor ce are un pipeline, vom obine o repartizare a subproceselor necesare
executrii acestor dou instruciuni conform cu Figura 2.13. Din Figura 2.13 se
observ c n momentul n care cea de a doua instruciune execut procesul operand fetch
(OF), n ciclul 4, i dorete s preia datele din registrele R1 i R4 prima instruciune nu a
finalizat operaia de adunare, prin stocarea rezultatului, operaie care se va realiza abia n
ciclul 5 imediat urmtor.
Pentru rezolvarea acestei probleme se introduc n mod forat un anumit numr de
ntrzieri ce au drept scop blocarea (stalled) execuiei celei de a doua instruciuni. Exist
dou soluii posibile ce sunt prezentate n Figura 2.14 i Figura 2.15.
I nstr
1
IF ID OF EX WB
I nstr
2
IF ID - - OF EX WB
Tact 1 2 3 4 5 6 7 8
Figura 2.14. Prima modalitate de rezolvare a problemei
Introducerea ntrzierilor se realizeaz cu ajutorul unui bloc denumit pipeline
interlocks. Acest bloc hardware analizeaz n mod continuu fluxul de date i detecteaz
independena unei instruciuni de precedenta i, ulterior, ntrzie instruciunile
interdependente pn la soluionarea conflictului existent.
I nstr
1
IF ID OF EX WB
I nstr
2
- - IF ID OF EX WB
Tact 1 2 3 4 5 6 7 8
Figura 2.15. Cea de a doua modalitate de rezolvare a problemei
O alt modalitate de rezolvare a unei astfel de probleme este de rearanja codul astfel
nct aceste interdependene s nu mai aib loc. Aranjarea codului poate fi fcut de ctre
compilator sau de ctre procesor. Astfel urmtoarea structur de comenzi:
I nstr
1
: ADD R2, R3, R1 R1 = R2 + R3
I nstr
2
: ADD R1, R4, R5 R5 = R1 + R4
I nstr
3
: INC R8 R8 = R8 + 1
I nstr
4
: ADD R6, R6, R7 R7 = R6 + R6
poate fi aranjat sub forma:
I nstr
1
: ADD R2, R3, R1 R1 = R2 + R3
I nstr
3
: INC R8 R8 = R8 + 1
I nstr
4
: ADD R6, R6, R7 R7 = R6 + R6
I nstr
2
: ADD R1, R4, R5 R5 = R1 + R4
21
n cadrul pipeline-ului noua structur de comenzi se prezint ca n Figura 2.16. n cazul
n care, de exemplu, compilatorul nu gsete o situaie optim de rearanjare a codului
astfel nct problema interdependenei ntre instruciuni s dispar, la executarea
subproceselor n pipeline, va introduce o serie de instruciuni de tip nop (no operation)
pentru rezolvarea problemei.
I nstr
1
IF ID OF EX WB
I nstr
3
IF ID OF EX WB
I nstr
4
IF ID OF EX WB
I nstr
2
IF ID OF EX WB
Tact 1 2 3 4 5 6 7 8
Figura 2.16. Structura pipeline-ului dup rearanjarea codului
n cadrul procesoarelor moderne codul (format din instruciunile) nu este executat
secvenial n ordinea n care a fost scris de programator ci intr-o alt ordine pentru a
scoate maximul de performanta din procesor. Procedeul se cheam Out of Order
Execution (OOE). Acest procedeu implica rearanjarea codului compilat (daca este
posibil), executarea lui si apoi scrierea rezultatelor n memorie n ordinea codului original
pentru a nu denatura scopul original al programului. Pentru orice programator i pentru
orice utilizator, procedeul este unul transparent. Numai CPU tie ordinea exacta in care s-
au executat instruciunile.
n afar de problemele de hazard ce in de datele ce intr ntr-un pipeline, de
interdependena instruciunilor, exist i alte probleme ce apar datorit modalitilor de
scriere/citire a datelor. Aceste probleme se mpart n trei mari clase: RAW (read after
write), WAR ( write after read) i WAW (write after write).
Hazardul WAR a fost prezentat anterior n Figura 2.13. Din punct de vedere teoretic
prima instruciune trebuie s scrie date ntr-un anumit registru, iar cea de a doua, ulterior,
trebuie s citeasc acest registru, dar datorit pipeline-ului sau a reordonrii
instruciunilor scrierea se produce ulterior citirii.
n situaia problemelor de tip WAW prima instruciune trebuie s scrie date ntr-un
registru, iar ulterior o a doua instruciune trebuie s scrie date n acelai registru. n
realitate cea de a doua instruciune este cea care scrie prima.
Hazardul de tip RAW (read after write) apare atunci cnd dou instruciuni
consecutive trebuie s acceseze o resurs comun, de exemplu un registru, astfel nct
prima instruciune s citeasc datele iar ulterior cea de a doua s scrie noi date n resursa
comun. Cu toate acestea scrierea are loc naintea citirii determinnd o afectare a ordinii
normale i fireti a programului ce genereaz rezultate imprevizibile.
Ultima clas de probleme, pe care o studiem n acest subcapitol, este dat de hazardul
rezultat n urma evoluiei programului. O instruciune care modific liniaritatea
programului (secvenierea acestuia) poate genera o modificare a fluxului instruciunilor, a
inexistenei datelor corecte n memoriile cache ale CPU (L1 sau L2) i de aici o
imposibilitate de umplere la capacitatea maxim a pipeline-ului. Acest fapt poate genera
n cea mai nefavorabil situaie o execuie a programului similar cu cea din Figura 2.8.
22
De aici reiese importana unitii de predicie a salturilor (branch predictor) care are rolul
de a identifica aceste discontinuiti existente n codul programului i de a ncrca n
mod corect instruciunile necesare astfel nct pipeline-urile s fie ncrcate la maxim
pentru atingerea performanelor maxime ale CPU.
Funcie de abordarea pe care compania productoare o prefer toate aceste hazarde
pot fi gestionate n dou moduri distincte. n prima abordare procesoarele pot gestiona
toate aceste hazarde (ca n cazul companiei Intel). Aceast metod implic existena unui
hardware suplimentar necesar n analiza fluxurilor de date i n aplicarea tehnicilor de
corecie. n cea de a doua metod compilatorul i asamblorul genereaz codul de o aa
natur astfel nct aceste probleme s nu apar. n aceast situaie CPU ndeplinete mai
puine sarcini i este mai simplu arhitectural. Aceast simplitate arhitectural determin
de asemenea i un consum mult mai redus.
2.4. Arhitecturi de tip Very long instruction word (VLIW)
Comparativ cu arhitecturile suprascalare n care fiecare instruciune execut o singur
operaie, n CPU-urile de tipul VLIW o singur instruciune include mai multe operaii,
numrul acestor operaii este egal cu numrul unitilor de execuie pe care CPU le
deine. Din acest motiv numrul biilor ce codeaz o instruciune este foarte mare (de cele
mai multe ori este mai mare de 64 de bii).
n cazul DSP-urilor din familia TMS320C6000 o instruciune are 256 de bii. Aceste
procesoare, din aceast familie, au 8 uniti de execuie (fiecare unitate putnd procesa
date reprezentate pe 32 de bii). O instruciune conine 8 operaii distincte i se executa
ntr-un singur ciclu main.
Tratarea interdependenelor ntre instruciuni, a hazardelor de orice natur, a salturilor
condiionate sau nu, nu sunt realizate n unitile de procesare, ce unt caracterizate de
arhitecturi de tipul VLIW. Toate aceste probleme sunt tratate de ctre compilatoare i nu
de componente hardware a CPU.
Deci, n cazul arhitecturilor VLIW compilatorul este cel care reorganizeaz
programul original mpachetnd ntr-o singur instruciune mai multe instruciuni
independente. Aceste instruciuni sunt alocate unitilor de execuie n conformitate
strict cu poziia lor n instruciunea multipl.
Dezavantajul fundamental n utilizarea acestor procesoare este dat de paralelismul
limitat al aplicaiilor. Acest paralelism determin ca unitile de execuie s nu fie ocupate
permanent problem care apare frecvent i la modelul superscalar de CPU. Din acest motiv
utilitatea practic a acestor procesoare se remarc mai ales n cazul aplicaiilor ce prelucreaz
digital diferite semnale (aplicaii multimedia, imagistic medical etc.). Un alt dezavantaj
este dat de faptul c procesorul VLIW i compilatorul asociat trebuie s fie ntr-o simbioz
perfect, nemaiputnd exista compatibilitatea n jos existent n familia Intel (cod
dezvoltat pentru un procesor sau o clas de procesoare mai btrn(e) s ruleze pe
versiunile mai noi ale arhitecturii).
n implementri comerciale procesoarele VLIW sunt mai rare dect cele superscalare. De
exemplu, compania Analog Devices produce familia SHARC
17
de DSP-uri bazate pe
aceast arhitectur, n timp ce compania Texas Instruments produce familia C6000 de
17
Super Harvard Architecture Single-Chip Computer
23
DSP-uri ce utilizeaz de asemenea arhitectura VLIW.
Modelele de arhitecturi superscalar i VLIW nu sunt exclusive (numai superscalar sau
numai VLIW), n implementrile reale se ntlnesc adesea procesoare hibride, ce urmresc s
optimizeze raportul performan pre. Un astfel de exemplu este arhitectura procesoarelor IA-
64
18
(existent n procesoarele de tip Itanium) de tip EPIC
19
, arhitectur ce a evoluat i are ca
baz arhitectura VLIW i a nglobat multe din conceptele arhitecturii de tip superscalar.
2.5. Arhitecturi CISC i RISC
Alte abordri arhitecturale, n afara celei de tip VLIW prezentat anterior, ce au
influenat profund lumea sistemelor de calcul sunt cele cunoscute sub numele de CISC
(complex instruction set computers) i RISC (reduced instruction set computers).
n anii `70 o dat cu scderea continu a preului prii hardware a sistemelor de calul
i cu creterea preurilor produselor software s-a lansat ideea mutrii complexitii de la
nivelul aplicaiilor software ctre nivelul hardware a sistemului ideea fundamental ce
st n spatele arhitecturii de tip CISC. n acest mod un programator nu mai era obligat s
scrie o anumit structur repetitiv de comenzi de fiecare dat cnd era necesar, deoarece
aceast structur era implementat la nivelul hardware a CPU printr-o singur
instruciune main complex ce executa toi aceti pai. Prin aceast abordare setul de
instruciuni al CPU-ului era foarte puternic i se apropia de cel al limbajelor de nivel
nalt. Pentru ca aceste instruciuni s fie executate era necesar existena unui microcod
(stocat n interiorul CPU-ului ntr-o memorie de tip ROM, vezi Figura 2.6 i Figura 2.7),
a unor subrutine ce erau executate i asociate cu fiecare instruciune a CPU-ului. Aceste
instruciuni complexe erau anterior decodate (activitate care consuma un anumit numr
de tacte, numr direct proporional cu complexitate instruciunii) i ulterior microcodul
asociat fiecrei instruciuni complexe era executat.
Imediat s-a cutat creterea vitezei de execuie a CPU-ului. Pentru atingerea acestui
obiectiv s-a urmrit identificarea acelui set de instruciuni cel mai utilizat i ulterior
optimizarea acestuia, n vederea obinerii vitezei maxime de execuie, chiar dac restul de
instruciuni se executau puin mai greu. n final s-a observat c n medie ntr-un CPU
20% din instruciuni execut 80% din ntregul program i n plus utilizndu-se doar o
colecie de instruciuni simple acelai program se poate executa mai repede dect
utiliznd un set complex de instruciuni. Aceste dou observaii au determinat proiectarea
i implementarea unor arhitecturi de tip RISC (reduced instruction set computers)
caracterizate de un set mic de instruciuni simple. n final s-a ajuns la consensul ca cea
mai mare parte a instruciunilor de tip RISC s se execute ntr-un singur ciclu
main. Astfel, multe din instruciunile main a unui CPU de tip RISC (deci vorbim
despre instruciunile limbajului de asamblare al CPU-ului) sunt chiar microinstruciunile
unui procesor de tip CISC.
Dezvoltarea primului CPU cu arhitectur RISC a fost realizat la Berkeley n anul
1980 de o echip condus de profesorul David Patterson. Primul procesor de tip RISC,
cunoscut sub numele de arhitectur RISC-I, a fost finalizat n anul 1982 avnd un set de
doar 32 de instruciuni. Procesorul bazat pe arhitectura RISC-II a fost finalizat n 1983
18
Arhitectura IA-64 a fost dezvoltat de firmele Hewlett-Packard i Intel
19
Explicitly Parallel Instruction Computing
24
avnd 39 de instruciuni i fiind de 3 ori mai rapid dect predecesorul sau. La ora actual
toate CPU-urile de tip RISC au la baz conceptele dezvoltate i implementate n
procesorul RISC-II.
Actualmente marea majoritate a CPU-urilor sunt de tip RISC. Astfel, arhitecturi
precum Alpha, ARC, ARM, AVR, MIPS, PA-RISC, PowerPC, SuperH i SPARC sunt
de tip RISC.
Arhitectura x86 produs de compania Intel este una de tip CISC, n principal deoarece
setul de instruciuni este unul de tip complex. Cu toate acestea, intern aceste procesoare
sunt de tip RISC ce emuleaz arhitectura de tip CISC pentru a asigura compatibilitatea cu
primele modele de procesoare care erau n totalitate de tip CISC. Alte instruciuni precum
cele de tipul MMX
20
nu au n spate nici un cod de execuie de tip microcod, aceste
instruciuni fiind implementate direct hardware.
De asemenea, se observ actualmente c setul de instruciuni RISC devine din ce n
ce mai mare, tinznd din ce n ce mai mult s fie similar cu cel de tip CISC.
Utilizarea arhitecturii de tip RISC, n unele cazuri, determin mbuntiri ale
performanelor procesoarelor de pn la 10 ori. Aa, de exemplu, este cazul C
ATtiny13A
21
produs de compania Atmel. Acesta este un microcontroler AVR pe 8 bii
ce are la baz o arhitectur RISC mbuntit.
2.6. Arhitecturi Von Neumann i Harvard
Funcia principal a unui CPU este de a citi codul unei instruciuni, de a o decodifica,
i de a executa instruciunea. Pentru citirea instruciunilor, citirea datelor i scrierea
datelor (vzute aici ca subprocese necesare executrii unei instruciuni) sunt necesare
anumite medii de stocare de tip RAM (random-access memory), flash sau ROM (read-
only memory).
Arhitectura von Neumann presupune proiectarea sistemului de calcul de o aa natur
astfel nct s fie compus, la un nivel grosier de descriere, dintr-o unitate de procesare i
o memorie, vezi Figura 2.17Figura 2.17(a). Memoria stocheaz att programul ce
trebuie rulat ct i datele necesare sau generate de acest program. Aceast arhitectur a
fost denumit dup numele matematicianului John von Neumann ce a propus-o.
Actualmente, aceast arhitectur s-a impus ca standard. Datorit vitezei de transfer
limitat a datelor ntre CPU (capabil s ating viteze foarte mari de procesare) i memoria
exterioar (memorie lent) a fost necesar gsirea altor soluii practice. n plus, n ultimii
ani viteza de lucru a procesoarelor a crescut mult mai repede dect viteza de acces a
memoriilor externe. Aceste cauze au dus la gsirea unor tehnici software (de minimizare
a numrului de accesri a memoriei externe) sau hardware (de mbuntire a ratelor de
transfer) de cretere a vitezei de transfer a datelor.
20
Acest acronim are mai multe semnificaii (semnificaii diferite funcie de sursa citat): MultiMedia
eXtension, Multiple Math eXtension, or Matrix Math eXtension. Iniial acest set de instruciuni a fost
folosit pentru mbuntirea capabilitilor de prelucrare a graficii 2D i 3D de ctre procesor.
Actualmente, o dat cu dezvoltarea explosiv a plcilor grafice, acest set de instruciuni este oarecum
redundant i mai puin folosit.
21
The resulting architecture is more code efficient while achieving throughputs up to ten times faster
than conventional CISC microcontrollers [ATtiny13A, 2011]
25
Arhitectura Harvard a fost dezvoltat, ulterior arhitecturii von Neumann, n ideea
mbuntirii performanelor, a vitezei de acces ctre informaiile stocate n memoria
extern. Conceptul fundamental al acestei arhitecturi este acela de a separa memoria
program i memoria de date. Numele acestei arhitecturi a fost dat de calculatorul Harvard
Mark I
22
, produs de firma IBM pentru universitatea Harvard, calculator ce implementa
pentru prima dat aceast arhitectur.
Figura 2.17. O reprezentare schematic a arhitecturilor (a). von Neumann i (b). Harvard
n cadrul arhitecturii Harvard datorit existenei a dou zone separate de memorie
viteza de transfer poate fi crescut prin accesri simultane a codului instruciunii (situat n
memoria program) i a datelor (plasate n memoria de date). n plus, n timp ce
procesorul execut instruciunea codul urmtoarei instruciuni poate fi ncrcat. Un alt
avantaj este dat de posibilitatea de a avea limi diferite pentru date (de exemplu 8 bii) i
instruciuni (de exemplu 12 bii, vezi Figura 2.17(b).)
23
. n situaia unui microcontroler
pe 8 bii caracterizat de o arhitectur von Neumann att datele ct i instruciunile n mod
obligatoriu au acelai numr de bii.
Arhitectura Harvard modificat mbin arhitecturile von Neumann i Harvard n
vederea mbuntirii performanelor sistemului global. Sistemul global utilizeaz
arhitectura von Neumann, vezi Figura 2.17(a), n timp ce procesorul are dou memorii
cache diferite (vezi Figura 2.5, Figura 2.6 i Figura 2.7): pentru instruciuni i pentru
date. Deci, arhitectura intern a procesorului este de tip Harvard n timp cea extern este
de tip von Neumann.
Dezavantajul arhitecturii Harvard este dat de existena a 2 bus-uri de date i adrese
diferite implicnd existena a mai multe trasee i pini ai microprocesorului.
Foarte multe procesoare ce utilizeaz arhitectura ARM sunt de tip Harward. Din
22
n cadrul acestui calculator instruciunile erau stocate pe o band magnetic (24 de bii) n timp ce
datele pe un suport electo-mecanic (23 de digii).
23
Un exemplu relevant n acest sens este dat de microcontrolerele PIC pe 8 bii (produse de compania
Microchip) ce au o lime a cuvintelor de date de 8 bii n timp ce limea cuvintelor instruciune poate
fi de 12, 14 sau 16 bii n conformitate cu subfamilia din care face parte.
CPU
Memoria de
date i
program
Adrese
Date
(a).
8 bii
CPU
Memoria
program
Adrese
Date
Adrese
Date
Memoria
de date
(b).
8 bii
12 bii
26
familia microcontrolerelor, familia de circuite PIC produse de compania Microchip
Technology, i familia AVR produs de compania Atmel utilizeaz aceast arhitectur.
De asemenea, ntreaga familie de DSP-uri (TMS320Cxxxx) produs de firma Texas
Instrument are la baz o arhitectur de tip Harvard.
2.7. Diferenele existente ntre microprocesoare, DSP i microcontrolere
Microprocesoarele (P) de uz general
24
, P, ce stau la baza calculatoarelor personale
(de uz general), sunt utilizate n special n situaia n care sunt necesare capaciti mari de
stocare a datelor (memorie RAM i HDD). Aceste calculatoare personale sunt
caracterizate n general de utilizarea unor sisteme de operare complexe care pot fi sau nu
sisteme de operare de timp real (Real Time Operating System RTOS). O descriere a
acestor P a fost realizat pe larg n unul din capitolele anterioare.
Microcontrolerele (C) sunt circuite care nglobeaz n acelai cip pe lng CPU i o
serie larg de periferice, avnd de cele mai multe ori un set redus de instruciuni,
comparativ cu P i DSP-urile. De cele mai multe ori un microcontroler nglobeaz o
palet larg de perifericele (ADC, DAC, porturi seriale RS232, I2C, SPI, CAN etc. ,
porturi paralele, numrtoare, sistemul de ntreruperi etc.), memoria (program i cea de
date), oscilatorul etc. i sunt capabile n implementrile practice s aib un numr minim
de componente suport externe. C lucreaz la frecvene inferioare P i DSP-urilor,
avnd n general putere de procesare redus, ele fiind de altfel dedicate sistemelor
embedded ce necesit costuri i dimensiuni reduse.
Un DSP (digital signal processor) este un microprocesor ce are aceleai caracteristici
principale i componente ca i acesta. Diferena ntre un DSP i un microprocesor const
n faptul c cea mai mare parte a componentelor unui DSP-ului sunt puin modificate
astfel nct acesta s fie capabil s execute procesri numerice de semnal la o vitez
superioar unui P, ndeplinind totodat cerinele de lucru n timp real impuse de o
anumit aplicaie.
n continuare se vor prezenta puncte comune i elemente ce difereniaz
microprocesoarele, DSP-urile i microcontrolerele. Actualmente este din ce n ce mai
dificil de a pune o grani foarte exact ntre toate aceste dispozitive. Din ce n ce mai
mult productori mprumut tehnici utilizate i specifice unui anumite familii (P, C ,
DSP) pentru sporirea performanelor propriei familii de dispozitive.
Registrul acumulator
Dac analizm ecuaiile matematice a celor mai utilizai algoritmi dedicai diferitelor
procesri de semnale se observ ntre aceti algoritmi o similitudine formal, vezi
Tabelul 2. Din relaiile prezentate n Tabelul 2 se observ c toi aceti algoritmi
realizeaz o operaie de sumare a unui anumit numr de termeni de tip produs. Din aceste
observaii rezult c este necesar s avem regitri capabili s stocheze aceste rezultate (n
unele situaii sumele prezentate n Tabelul 2 pot depi 1000 de termeni).
n cadrul diferitelor tipuri de uniti centrale de procesare (CPU) s-a stabilit convenia
24
Cele mai cunoscute familii de microprocesoare sunt cele produse de companiile Intel i AMD.
27
ca n urma unei operaii matematice rezultatul s se salveze ntr-un registru special numit
registrul acumulator
25
. Dac n cazul calculatoarelor de uz general
26
registrul acumulator
are acelai numr de bii (numr de bii egal cu limea bus-ului de date al procesorului
27
)
ca orice alt registru de uz general, n cazul DSP-urilor acestea au implementate registre
acumulatoarea cu un numr de bii mult mai mare, capabile s stocheze rezultatele unor
operaii numerice de procesare a semnalelor similare cu cele prezentate n Tabelul 2.
Tabel 2. Algoritmi clasici utilizai n prelucrarea semnalelor
Algoritm Ecuaie
Filtru FIR y|n] = o
k
x|n -k]
N
k=0
Filtru IIR y|n] = o
k
x|n -k] +
N
k=0
b
k
y|n -k]
M
k=1
Convoluie y|n] = x|k]b|n -k]
N
k=0
Transformata Fourier Discret X|n] = x|k]c
-]
2n
N
nk
N-1
k=0
Transformata cosinus discreta F(u) = o|u] |x]cos _
n(2x +1)
2N
u_
N-1
x=0
De exemplu, DSP-urile pe 16 bii n virgul fix ADSP-21xx i ADSP-219x produse
de compania Analog Devices au nglobate un acumulator pe 40 de bii, n timp ce familia
de DSP-uri ADSP-21xxx (SHARC) au un acumulator pe 80 de bii aceast ultim
familie de DSP-uri susine calcule matematice pe 32-bit n virgul fix n timp ce
calculele matematice n virgul mobil sunt efectuate pe 32 i 40 bii. n mod similar,
familia de DSP-uri 56300 produs de Frescale are nglobat un acumulator pe 56 de bii n
timp ce bus-ul este pe 24 de bii. n timp ce, DSP-urile familiei TMS320C67x, produse de
compania Texas Instruments, au dou bancuri de registre pe 32 de bii, fiecare banc
incluznd un numr de 32 de regitri. n cadrul acestei familii n cazul unei nmuliri a
dou numere n virgul mobil reprezentate pe 32 de bii, rezultatul este stocat n dou
registre pe 32 de bii alturate.
25
AX, EAX (in cadrul familiei Intel), ACC or A (pentru microcontrolerele din cadrul familiei 8051), W
register (working register pentru familia de microcontrolere produsa de Microchip) etc.
26
n cazul unei operaii de nmulire de tipul MUL ECX (operaie realizat pe un microprocesor din clasa
Pentium, se realizeaz nmulirea coninutului registrului pe 32 de bii ECX cu coninutul registrului
EAX) rezultatul final, pe 64 de bii, se va gsi mprit ntre registrele EAX i EDX.
27
De exemplu, pentru familia Pentium acest numr este egal cu 32.
28
Instruciuni de tipul MAC
Din Tabelul 2 se observ c anterior stocrii rezultatului sunt necesare efectuarea
unui numr de nmuliri i de adunri consecutive, operaii denumite MAC (multiply
accumulate). Din acest motiv productorii microprocesoarele de tip DSP au optimizat
aceast operaie implementnd-o hardware ntr-o unitate specializat. Cele mai multe
procesoare de tipul DSP efectueaz aceast nmulire i adunare ntr-un singur ciclu
main. Pentru a realiza acest deziderat multiplicatorul i circuitul care realizeaz
adunarea sunt implementate n circuite realizate exclusiv combinaional.
Astfel de uniti, de tip MAC, exist n cadrul familiei TMS320C55x (produs de
Texas Instruments), a familiei ST100 (STMicroelectronics
28
), ADSP-21xx (Analog
Devices) etc. Mai mult, n cadrul aceluiai DSP existnd implementate chiar dou astfel
de uniti. n schimb alte familii, precum familia TMS320C6000, nu au implementate o
astfel de unitate (MAC). Familia TMS320C6000 realizeaz operaiile de tip MAC prin
nmuliri i adunri succesive. n mod normal aceste 2 operaii ar necesita 2 cicluri
main, dar datorit structurii de tip pipeline existente, aceste operaii sunt executate n
mod aparent ntr-un singur ciclu main. Primele dispozitive ce aveau implementate
uniti de execuie de tip MAC au fost DSP-urile, dar actualmente multe din procesoarele
de uz general au nglobate astfel de uniti
29
.
Multiplicare hardware versus microcod
n momentul realizrii unui operaii de tip MAC ce utilizeaz numere reprezentate n
virgul mobil
30
, n mod implicit, sunt necesare rotunjiri ale valorilor implicate. Exist
dou abordri ale acestei probleme. n prima metod, se execut dou rotunjiri succesive
a operanzilor utilizai i respectiv a rezultatului. Prima rotunjire are loc asupra produsului
operanzilor de intrare ctre alte valori intermediare dar de o precizie mai mare dect
precizia final utilizat i suportat de CPU. Ulterior dup efectuarea tuturor calculelor
rezultatul mai este rotunjit nc o dat ctre precizia normal, de lucru suportat de CPU.
De exemplu, dac unitatea MAC trebuie s realizeze la un anumit moment de timp
operaia a + b c, n primul pas rezultatul produsului b c va fi rotunjit, la un anumit
numr de bii semnificativi, iar ulterior acest numr rezultant va fi adunat cu a iar acest
ultim rezultat va fi din nou rotunjit la un anumit numr de bii semnificativi. Aceast
modalitate de lucru este specific celor mai multe procesoare de tip DSP. n cea de a
doua abordare, iniial se realizeaz toate calculele ntr-o precizie superioar iar, n final,
are loc rotunjirea (deci doar la sfrit) aceast rotunjire fiind aplicat doar rezultatului
(adic numrului a + b c). Aceast ultim metod este cunoscut sub numele de fused
multiply-add (FMA) sau fused multiply-accumulate (FMAC). Avantajul unitilor de
28
Anterior SGS Microelettronica, Italia
29
De exemplu, microprocesoarele ce utilizeaz o arhitectur de tip SH3 (produse de compania Renesas
Technology), precum microprocesorul SH7708, au o singur unitate de tip MAC. Aceast unitate de
execuie poate multiplica 2 operanzi pe 32 de bii, stoca rezultatul n memorie sub forma unui numr pe
32 de bii i, ulterior, aduna acest produs la valoarea existent n registrul acumulator. Acumulatorul
fiind un registru pe 42 de bii.
30
Numerele reprezentate n virgul mobil sunt caracterizate de 2 perechi de numere, mantisa (notat n
continuare cu n) i exponentul (notat cu e), ambele numere fiind de tip ntreg cu semn. Utiliznd aceste
valori orice numr real se scrie sub forma: n 2
e
.
29
execuie de tip FMAC este dat de uurina n implementare a unor funcii precum
radicalul sau exponentul.
La ora actual exist un numr mic de microprocesoare ce au nglobate uniti de tip
FMAC. Dintre acestea putem aminti microprocesoarele de tipul Itanium (produs de Intel)
sau familia Loongson, SPARC64 i SPARC64 II (produse de Fujitsu). Compania AMD a
anunat nglobarea unitilor de execuie FMAC n procesoarele sale n anul 2011 n timp
ce compania Intel va utiliza din nou aceste module n procesoarele Pentium din clasa
Haswell de abia n anul 2012.
DMA-ul
Exist dou modaliti de transfer a datelor ntre diferitele periferice i memorie sau
ntre diferitele zone de memorie. Prima modalitate de transfer a datelor este realizat de
CPU, iar cea de a doua este realizat de DMA (direct memory access).
n cadrul microprocesoarelor de tip DSP datorit lucrului intensiv cu date de diferite
tipuri (de exemplu cu eantioane diferitelor semnale, cu imagini etc. sau cu diferite
rezultate obinute n urma procesrii acestor date) s-a impus necesitatea transferului rapid
al informaiilor ntre diferite periferice i memorie sau ntre anumite zone de memorie n
background (n timpul n care CPU-ul DSP-ului realizeaz prelucrri asupra altor
informaii). Deci, utiliznd aceste uniti de tip DMA datele vor fi mutate dintr-un loc n
altul fr intervenia CPU-ului. CPU-ul va configura doar la nceput DMA-ul. Din
motivele enunate anterior, cele mai multe dintre DSP au nglobate intern diferite sisteme
de tip DMA precum EDMA (Enhanced DMA, utilizat n principal pentru transferul de
date ntre un periferic i memorie), QDMA (Quick DMA utilizat n principal pentru
transferul de date, de blocuri de date, n cadrul memoriei externe) sau IDMA (I ntrernal
DMA) toate aceste tipuri de DMA cu un numr mare i foarte mare de canale. De
exemplu, procesoarele din familia TMS320C67xx nglobeaz controlere de tip EDMA cu
16 canale n timp ce DSP-urile din familiile TMS320C64xx i TMS320DM64xx au 64 de
canale ce pot fi utilizate pentru transferuri de tip DMA. n plus, DSP-urile din familia
TMS320DMx+ mai au nglobat n CPU o unitate de tip DMA cu dou canale, unitate
numit IDMA, capabil s transfere date intern ntre memoria cache program L1 (L1P),
memoria cache date L1 (L1D), memoria cache L2 (L2) i zona de configurare a
perifericelor externe.
Calculatoarele de uz general, bazate pe procesoare de tip Intel, utilizau la nceputuri
un singur controler DMA (de tipul Intel 8237) ce ngloba doar 4 canale. Ulterior, datorit
necesitilor practice, a mai fost introdus un controler DMA de acelai tip (Intel 8237).
Primul canal al celui de al doilea DMA este utilizat n cascadarea unitilor DMA. Din
acest motiv un PC are doar 7 canale DMA disponibile. Pentru pstrarea compatibilitii
cu sistemele anterioare aceast arhitectur s-a pstrat
31
i a suferit modificri minore de-a
lungul timpului. Aceste modificri au fost necesare n principal pentru a ine pasul cu
evoluia capacitilor de stocare a memoriilor de tip RAM, deci a existenei unui: spaiu
de memorie mult mai amplu din care i n care trebuiau stocate datele i a numrului de
bii transferai ntr-un singur ciclu.
31
Utilizarea a dou uniti DMA, fiecare cu cte 4 canale, s-a utilizat pentru prima dat ncepnd cu
microprocesorul 80286 n anul 1982. Acest procesor a fost primul din familia Intel capabil s ruleze
toate aplicaiile scrise pentru predecesorul su.
30
n general exist: (a) dou tipuri de transfer; transfer de tip flyby i fetch-and-deposit
(calculatoarele personale pe arhitectur Intel accept doar primul tip de transfer),
[Harvey, 1991], i (b) trei moduri distincte de lucru a controlerelor DMA, [Harvey,
1991]: de tip element, bloc i la cerere.
Transferul DMA de tip flyby
32
(cunoscut i sub numele de transfer de tip un singur
ciclu, single-cycle, sau de o singur adres, single-address) este realizat printr-o singur
acces la bus-ul sistemului n care se realizeaz simultan att citirea sursei ct i scrierea
destinaiei. Datorit acestui singur acces, acest transfer este unul foarte eficient
comparativ cu metoda fetch-and-deposit care presupune dou cicluri de acces la bus-ul
sistemului (n primul pas se preia data ce se stocheaz local n controlerul DMA iar
ulterior informaia este scris n destinaia aleas). n transferul de tip flyby (existent att
n sistemele cu bus ISA sau EISA) dispozitivul ce dorete s realizeze transferul de date
prin DMA depune o cere ctre controlerul DMA. Controlerul DMA preia controlul bus-
ului de date al sistemului, de la procesor, i genereaz o anumit adres surs sau
destinaie (stocat anterior n controlerul DMA) n conformitate cu sensul transferului.
Ulterior generrii adresei, controlerul DMA trimite napoi ctre dispozitiv un semnal de
acceptare a transferului. Ca urmare a acestui accept dispozitivul va citi datele de pe bus
sau i va pune propriile date. Acest tip de transfer este similar cu un ciclu de citire sau
scriere a unei locaii de memorie de ctre CPU, cu diferena c de aceast dat controlerul
DMA controleaz bus-ul de adrese al sistemului precum i liniile de comand i control
n timp ce dispozitivul citete sau scrie datele. Dezavantajul acestui mod de lucru este dat
de imposibilitatea transferului de date ntre oricare dou locaii de memorie (imposibil
modul de lucru: sursa s fie o locaie de memorie iar destinaia s fie o alt locaie de
memorie). Pentru a implementa un transfer de tip memorie-memorie se utilizeaz dou
canale DMA [Harvey, 1991].
Figura 2.18. Transferul DMA de tip flyby
ntr-un calculator personal construit n jurul unei arhitecturi Intel toate cele trei
32
Capabil s asigure viteze maxime de transfer de 33 Moctei/secund (mod de operare burst pe 32 de
bii).
31
moduri de lucru utilizeaz tipul de transfer DMA flayby. n modul de lucru de tip element
(single transfer mode) controlerul DMA transfer doar o singur valoare. n modurile de
lucru bloc (block) i la cerere (demnad) controlerul DMA transfer multiple elemente
atunci cnd controlerul DMA a preluat controlul bus-ul sistemului de la procesor. n
modul bloc de date controlerul DMA transfer ntregul bloc de date ct mai rapid
(lungimea blocului este stocat ntr-un registru intern controlerului DMA) n urma unei
singure cereri DMA lansat de dispozitiv. n modul de lucru la cerere transferul are loc
doar atta timp ct dispozitivul extern lanseaz cereri ctre controlerul DMA.
Comparnd controlerele de tip DMA (existente n PC) cu cele de tip EDMA
(existente n DSP-uri) vom observa c acestea din urm furnizeaz o flexibilitate sporit
n transferul diferitelor tipuri de date. Pentru a susine aceast idee se vor prezenta doar
dou faciliti foarte importante a acestor controlere EDMA modurile de lucru de tip
nlnuit (chaining) i legtur (linking).
Comparativ cu primele subfamilii de dispozitive de tip C620x/C670x, ce aparin
familiei C6xxx, a cror arhitectur a controlerului DMA este de tip registru, noile
subfamilii au o arhitectur a controlerului DMA de tip memorie RAM. Deosebirea
fundamental ntre aceste dou tipuri de arhitecturi const n locul de depozitare a setului
de parametri utilizai n configurarea controlerului DMA. n cadrul familiei C6xxx aceste
zone de memorie variaz de la capaciti de stocare a unui numr de maximum 85 de
grupuri de parametri (2 Koctei de RAM) pn la maximum 213 grupuri de parametri (5
Koctei de RAM).
Memoria cache
Un alt avantaj al CPU de tip DSP este dat de flexibilitatea utilizrii memoriei interne,
locale a CPU (L1 sau L2) drept memorie cache sau drept memorie RAM (prin maparea
acestei memorii cache n spaiul extern al memoriei RAM). De exemplu, dac analizm
foaia de catalog a unui DSP de tipul TMS320C64x vom gsi urmtoarele informaii:
L1P (program)
o 32 Kbytes configurable: Memory-mapped (default after reset) or direct-mapped
cache 32bytes cache line
L1D (data)
o 32 Kbytes configurable: Memory-mapped (default after reset) or 2-way set
associative cache 64bytes cache line
o 48K bytes memory-mapped
L2 (program and data)
o 64Kbytes configurable: Memory-mapped (default after reset) or 2-way set
associative cache128bytes cache line
o 32Kbytes memory-mapped
o 16Kbytes ROM
Dac analizm funcionarea memoriei L1D observm c dup resetarea sistemului
ntreaga cantitate de memorie intern de tip L1D va fi map-at i utilizat drept memorie
RAM. Funcie de setrile interne ale DSP-ului se pot aloca 4 Koctei, 8 Koctei, 16
Koctei sau 32 de Koctei drept memorie cache intern de tip L1D, vezi Figura
2.19.Chiar n situaia n care se aloc 32 Kbii drept memorie intern cache, 48 Koctei
vor rmne n continuare map-ai n spaiul memoriei RAM.
Posibilitate utilizrii memoriei cache interne de tip program (L1P) sau date (L1D) sau
32
a memoriei L2 pentru a fi map-at n spaiul memoriei de date sau program externe este o
facilitate foarte important oferit de familia de DSP-uri produse de firma Texas
Instruments. S presupunem o aplicaie tipic de tip procesare de semnale. n primul pas
se achiziioneaz semnalele, ulterior vectorii de date se proceseaz de ctre DSP i, n
ultimuil pas, rezultatele sunt trimise, de exemplu, ctre un convertor DAC.
Figura 2.19. Modaliti de configurare a memoriei L1D interne a DSP-ului
Deoarece ntr-un microprocesor de tip RISC memoria cache este interna iar
manipularea ei este transparent utilizatorului (nu este sub controlul lui, a programului
dezvoltat de el CPU-ul o utilizeaz pentru creterea performanelor proprii dar o face
independent de voina utilizatorului) pentru stocarea datelor obinute de la un dispozitiv
extern (de exemplu un ADC) putem folosi doar memoria RAM, extern a sistemului.
Figura 2.20. Transferul datelor i procesarea lor ntr-un microprocesor RISC clasic
RAM 0
RAM 1
RAM 2
RAM 3
0 K
4 K
8 K
16 K
32 K
RAM 4
(48 Koct.)
CACHE 0
RAM 1
RAM 2
RAM 3
RAM 4
(48 Koct.)
CACHE 0
CACHE 1
RAM 2
RAM 3
RAM 4
(48 Koct.)
CACHE 0
CACHE 1
CACHE 2
RAM 3
RAM 4
(48 Koct.)
CACHE 0
CACHE 1
CACHE 2
CACHE 3
RAM 4
(48 Koct.)
SoC
CPU
Memorie
extern
RAM
Echipament
periferic (de ex.
ADC/DAC)
EMIF
Port
EDMA
L1D
cache
Unitatea
de control
i de
procesare
a datelor
Buffer de date
(1)
(2)
(3)
(4)
(5)
(6)
33
ntr-un astfel de sistem fluxul de date este similar cu cel prezentat n Figura 2.20. n
primul pas pentru a nu ncrca procesorul inutil cu achiziionarea datelor acestea sun
preluate, aduse cu ajutorul unui DMA (care poate fi sau nu nglobat n interiorul SoC) n
memoria RAM, extern a sistemului, pasul (1). Dup achiziionarea tuturor datelor CPU
ncepe procesarea lor, la prima citire sau atunci cnd sistemul de predicie identific
corect calea pe care programul o urmeaz, datele sun aduse n memoria cache intern
procesorului, pasul (2). Procesorul ncepe prelucrarea lor conform algoritmului utilizat (a
programului), paii (3) i (4). Datele vor fi rescrise n memoria RAM extern prin unul
din mecanismele pe care le utilizeaz write-back sau write-through opiunea (5). n
final, dup finalizarea procesrii digitale a ntregului vector de date acestea vor fi trimise,
prin intermediul unui circuit de tip DMA, ctre echipamentul periferic destinatar, de
exemplu un circuit DAC.
n cazul DSP-urilor de la firma Texas Instruments datorit posibilitii map-rii
memoriei cache interne n spaiul memoriei RAM externe (cu pstrarea performanelor
unei memorii de tip L1D adic laten egal aproape cu zero) fluxul de date este similar
cu cel din Figura 2.21. n afara faptului c memoria RAM extern (mult mai lent) nu
mai intervine de loc n stocarea datelor, c fluxul de date este mult simplificat se ofer
posibilitatea stocrii datelor obinute de la dispozitivele periferice direct n memoria
cache intern (memorie foarte iute) i, mai mult, zone de cod critice sau diferitele
variabile
33
utilizate foarte des pot s fie stocate intern n memoria cache.
Figura 2.21. Transferul datelor i procesarea lor ntr-un DSP din familia TMS320Cxxxx
O abordare oarecum similar cu cea prezentat anterior se gsete n cadrul familiei
de procesoare ARM ce au intern o memorie de tip TCM (Tightly-Coupled Memory). n
33
Utilizarea lui register din limbajul C determin ca o anumit variabil s fie stocat ntr-un registru al
procesorului obinndu-se astfel o cretere a vitezei de execuie a codului. Dar, numrul de regitri pe
care un procesor i are este limitat. n schimb cantitatea de memorie cache este mult, mult mai mare
permind astfel ca un numr mult mai mare de variabile s fie stocate i manipulate foarte rapid
determinnd astfel creterea performanelor globale ale aplicaiei.
SoC
CPU
Memorie
extern
RAM
Echipament
periferic
(de ex. ADC)
EMIF
Port
EDMA
L1D
cache
Unitatea
de control
i de
procesare
a datelor
Memorie cache map-at
ca memorie RAM
(1)
(2)
(3)
(4)
34
aceasta memorie rapid, intern procesorului se pot plasa date i pri din programe,
performanele obinute sunt similare cu acelea obinute atunci cnd codul sau datele sunt
n memora cache a procesorului. Singura diferen ntre aceste memorii (TCM i cache)
este dat de posibilitatea controlului direct, a plasrii voliionale de ctre programator a
codului i/sau a datelor n memoria TCM comparativ cu modalitatea transparent
programatorului (ne aflat sub controlul acestuia) de aducere automat a informaiilor
necesare blocurilor interne procesorului.
Faciliti specifice de adresare a memoriei.
Cea mai mare parte a microprocesoarelor de uz general pot executa algoritmi specifici
procesrilor digitale de semnale, deci algoritmi specifici dispozitivelor de tip DSP, fr
prea mari probleme. Dar aceste dispozitive de tip P nu sunt potrivite pentru acest gen de
activiti, n principal datorit costurilor existente i a puterii consumate
34
. ntotdeauna n
momentul alegerii unor astfel de dispozitive trebuie s punem n balan puterea
consumata (de exemplu trebuie s avem n vedere att consumul unui DSP dar i acela a
unui microprocesor Pentium de tipul simplu sau dual core) ct i costurile dispozitivelor
n sine (ct cost un DSP i ct cost un P din familia Intel).
34
De exemplu, puterea consumat de ctre un DSP se poate situa n domeniul 10-100 mW. DSP-ul
TMS320C5510 consum doar 80 mW la o frecven de 160 MHz oferind o putere de calcul de 320
MIPS.
35
Bibliografie
[ATtiny13A, 2011] Compania Atmel, documentaia tehnic a microcontrolerului
ATtiny13A, http://www.atmel.com/dyn/resources/prod_documents/doc8126.pdf,
link valid ianuarie 2011
[Pentium, 2011] Compania Intel, documentaia tehnic a procesorului Pentium,
www.intel.com/design/pentium/datashts/24199710.pdf, link valid februarie 2011
[Krazit, 2006] Tom Krazit, ARMed for the living room, aprilie 2006, document online la
adresa: http://news.cnet.com/ARMed-for-the-living-room/2100-1006_3-
6056729.html, link valid ianuarie 2011
[Wikipedia, 2011] Wikipedia - the free encyclopedia, ARM architecture,
http://en.wikipedia.org/wiki/ARM_architecture, link valid ianuarie 2011
[Clarke, 2009] Peter Clarke, ARM will overtake Intel in netbooks, smartbooks, says
analyst, articol online:
http://www.industrialcontroldesignline.com/showArticle.jhtml?articleID=22030
0319, septembrie 2009
[Harvey, 1991] A. F. Harvey and Data Acquisition Division Staff, DMA Fundamentals
on Various PC Platforms, National Instruments, Application Note 011, 1991
[Musah, 2008] A. Musah, A. Dykstra, Power-Management Techniques for OMAP35x
Applications Processors, Not de aplicaie SPRT495, Texas Instruments,
septembrie 2008, document online pe site-ul web al firmei Texas Instruments:
http://focus.ti.com/lit/an/sprt495/sprt495.pdf
[Intel, 2009] Intel, Microprocessor Quick Reference Guide, noiembrie 2009,
http://www.intel.com/pressroom/kits/quickreffam.htm
[Gouraud, 1971] H Gouraud, Continuous shading of curved surfaces, IEEE Transactions
on Computers, vol. C-20, pp. 623-629, 1971
[Phong, 1975] B. T. Phong, Illumination for Computer Generated Pictures,
Communications of the ACM, vol. 18, nr. 6, pp. 311-317, 1975