Sunteți pe pagina 1din 92

Cap.1.

Introducere

1.1.Arhitectura clasică deja a unui sistem cu microprocessor


Orice sistem cu microprocesor are 2 componente pe placa de bază(matherboard):
➢ Nucleu sistemului: procesor + memorie RAM/ROM +memorie CACHE +
Circuit DMA legate pe o magistrală de sistem;
➢ Porturi de intrare/ieșire: Port RS232/USB, port Ethernet, periferice cum ar fi
placa video, HDD. CD/DVD, etc.
Magistrala
de sistem
Memoria

chache ROM

µP RAM

DMA
Nucleul sistemului

RS232 HDD

Port Paralel CD/ DVD(unitate optica)

USB

Placa Video

Placa de retea
etc…..
Porturi de Intrare/Ieşire

Fig.1.1.Arhitectura generală a oricărui


sistem cu microprocesor
Elementul central al unui sistem cu microprocesor este magistrala sistemului la
care se leaga toate elementele componente. Pe lângă procesor, o altă componentă
foarte importantă este reprezentată de :
− Memoria RAM [Random Acces Memory]-poate fi citită și scrisă
− Memoria ROM [Read Only Memory]- poate fi numai citită nu și scrisă
− Circuitul DMA(Direct Memory Acces) transferă direct în memorie unele date
de la un port de intrare fără a mai trece prin procesor. Prin acest mecanism se
1
degrevează procesorul de anumite sarcini simple (fără prelucrare) castigându-
se astfel timp prețios în execuţia programelor.
− Memoria CACHE - este un concept implementat pentru obținerea unor timpi
de execuție mult mai mici, acest circuit este de tip RAM și este plasat foarte
aproape (conectat direct la un port al procesorului, deci se elimină conectatre
prin magistrală) poate fi chiar în aceeași capsulă cu microprocesorul. În acest
fel, când trebuie executată o instructiune a unui program, se aduce din memoria
RAM, în interiorul procesorului (în buffere de memorie speciale), nu doar
instrucțiunea, ci un întreg bloc de program, numit pagină, de 4 KO
(dimensiunea poate fi configurată). Acest mecanism se face în speranța că și
următoarele instructiuni care urmează să fie executate se află în acest bloc de 4
Kocteți și astfel se elimină timpi de acces prin magistrala sistemului la
memoria RAM. Dacă urmează să se execute o instrucțiune dintr-o altă pagină
(de 4 Kocteți), pagina curentă se transferă în memorie CACHE pentru o
eventuală execuție ulterioară (fără acces pe magistrală) și se aduce noua pagină
în bufferele corespunzătoare procesorului. TREBUIE cunoscute, măcar
principial aceste mecanisme implementate în arhitectura sistemului, pentru a
realiza în mod optim o anumită aplicație software.
Chiar dacă părerile pot fi împărțite în funcție de o anumită arhitectură hardware,
totuși Procesorul, Memoria ROM, Memoria RAM, Circuitul DMA, Memoria
CACHE, formează nucleul sistemului.

Celelalte componente sunt practic porturile de Intrare/Iesire SERIALE


/PARALELE ce realizează practic, legătura cu exteriorul sistemului. Astfel, celelalte
componente prezentate în Fig.1.1. (HDD, RS232, port parallel, placa video, placă de
reţea, etc….) sunt legate la magistrala de sistem ca porturi de Intrare-Ieşire.
Procesoarele se impart in două mari categorii:

• CISC (Complex Instruction Set Computer) - procesoare cu set complet de


instrucţiuni, sunt procesoare care se găsesc de obicei într-un calculator PC.
Acestea sunt procesoare mari, în sensul că procesează un număr mare și
complet de instrucţiuni. În mod evident şi schema lor electonică internă are
foarte multe componente electronice. Principial vorbind, fiecare instrucțiune la
nivel de limbaj de asamblare specific procesorului, are în background o
anumită arhitectură fizică, adică are asociată o anumită bucățică de
componente electronice. Acest lucru înseamnă că, la un procesor complex,
există multe componente electronice, ceea ce conduce la faptul că se încălzesc
mai mult (într-un PC actual se poate observa suprapus fizic peste processor un
radiator de aluminiu peste care se pune un ventilator, iar la sisteme de tip
servere întâlnim chiar răcire cu freon). Unul dintre dezavantajele acestei
arhitecturi, conform teoriei fiabilității, multe componente țn același sistem
înseamnă fiabilitate mai redusă.
• RISC (Reduced Instruction Set Computer) - procesoare cu set redus de
instrucţiuni. Aceste procesoare sunt în principiu dedicate penttru realizarea
unor anumite task-uri precise (programatorul de la maşina de spalat, routere,
2
etc…). Datorită faptului că au un set redus de instrucţiuni, schema lor internă
are mai puține componente electronice, ceea ce duce la o încălzire mai redusă
şi totodată o fiabilitate mai mare. Practic, se spune că sunt capabile să
prelucreze mai puţine instrucţiuni, dar într-un mod mult mai sigur decat tipul
anterior de procesoare CISC.

De exemplu, multe din arhitecturile de procesoare actuale sunt de fapt


procesoare CISC peste RISC (de la prima generație de Intel I7 în sus). Acest lucru
însemnă că schema electronică a fost simplificată, ceea ce a dus la transformarea într-
o arhitectură de processor RISC după care, completarea cu instrucţiuni pană la nivelul
de processor CISC, s-a realizat prin emulare SOFTWARE (o parte din instrucţiuni
din setul complet CISC sunt realizate prin program care este stocat chiar în processor,
astfel fiind posibil să se realizeze o nouă versiune de procesor mai performantă decât
cea anterioară doarece problemele de disipare termică s-au rezolvat prin simplificarea
schemei electronice).
OBS: Se pare că și procesoarele actuale au o componentă virtuală în arhitectura lor
hardware, după cum și sistemele de control automat adaugă procesului fizic o
componentă virtuală (soluția de control), ce transformă procesul inițial într-un alt
proces, eventual mai performant.

1.2.Arhitectura memoriei unui sistem cu microprocesor


După cum a fost prezentat anterior, în centrul arhitecturii unui sistem cu
microprocessor avem ansamblul format din processor și memorie care reprezintă
nucleul sistemului. Procesorul “vede” memoria ca o scuccesiune de octeţi (byte), iar
fiecare octet are asociat un număr de ordine, ce reprezintă adresa acelui octet. Faptul
ca procesorul extrage din memorie un anumit octet pentru a-l decodifica şi executa,
înseamnă că procesorul numără toţi octeţi până la acel octet, adică spunem că
procesorul adresează octetul respectiv din memorie.
La alimentarea cu tensiune a unui sitem cu microprocesor procesorul nu ştie
decât să se ducă (printr-un mecanism hardware) la adresă zero, adică la primul octet
din memorie pe care îl extrage, îl decodifică şi îl execută. Aceste instrucţiuni de la
adrese mici sunt o colecţie de programe numite BIOS (Basic Input/Output Sistem)
pentru procesoare mari și program MONITOR pentru microcontrplere. Această
colecție de programe, prin rulare de către procesor/microcontroler, îl ajută de fapt pe
acesta să “ştie” ce componente are în sistem și la cea adresă sunt mapate în memorie,
dacă are sau cât este de mare este hardisk-ul, memoria RAM, CD-ROM, etc…
Colectia de programe BIOS/MONITOR este memorată fizic în circuite de
memorie de tip ROM (Read Only Memory-memorie care teoretic poate fi numai
citită). Ultima instrucţiune din această colecţie reprezintă:
➢ Comandă de încărcare a Sistemului de Operare de pe HDD în memoria de tip
RAM pentru sisteme cu microprocesor ce sunt gestionate de SO - Sisteme de
Operare. După încărcarea în memoria RAM a SO, sau a unei părți consistente
din acesta, controlul sistemului cu microprocesor este preluat de SO și vom
putea rula diverse aplicații.

3
➢ Ultima comandă dintr-un set de comenzi care gestionează funcționalitatea de
bază a unui sistem cu microcontroler. Deși nu are SO, acesta permite operații
destul de primitive, cum ar fi încărcarea programului în memorie, lansarea în
execuție a programului, etc.
După cum se vede din Fig.1.2, după încărcarea sistemului de operare în RAM mai
rămâne o zonă liberă folosită pentru programele utilizator. Când spunem că extragem
octeţi din memoria RAM practic procesorul preia octeţi şi îi copiază în registre
interne.
adrese octeti

0
1 BIOS ROM
2
3
μP
SO

M.cache
e RAM Memoria
CS-seg.cod
Prg. Incarcat in
Programe internă
DS-seg.date utilizator
memorie care
este rulat SS-seg.stiva
ES-seg.date

Mem. HDD
Virtuală

Restul din HDD-ul principal unde este


implementată memoria virtuală

HDD2

CD/DVD Memoria
Externă

Flash memory-stick

……..alte unităţi de stocare

Fig.1.2.Arhitectura memoriei unui sistem cu microprocesor

OBS: Procesorul poate executa direct doar instrucțiuni din memoria RAM(…adică
memoria internă, mai precis memoria din nucleul sistemului), ceea ce înseamnă că
tot blocul de program ce se execută la un moment de timp trebuie să fie în circuitul
de memorie RAM.

4
Dacă registrele interne ale unui processor sunt pe 8 biţi atunci procesorul
poatre număra/adresa până la 256 de octeţi(28).
Dacă registrele interne ale procesorului sunt pe 16 biţi procesorul poate
număra/adresa 64535 octeţi = 64 KO (216 Octeţi=64Kilo Octeţi)
Dacă registrele sunt pe 32 de biţi procesorul poate accesa 4GO(232
Octeţi=4Giga Octeţi).
Datorită faptului că procesoarele actuale au registrele chiar de la 64 de biţi în
sus, pot accesa/adresa memorie foarte mare, de ordinul TeraOcteţi. Totuși, deoarece
circuitele uzuale de memorie RAM sunt abia în jurul valorii de 4 GO, s-a încercat
implementarea unui mecanism în care procesorul să îşi folosească această capacitate.
Acest mecanism este implementat ca memorie virtuală ce este realizată fizic pe o
zonă de pe harddisk (dispozitiv care nu face parte din memoria internă), în felul
acesta procesorul fiind “păcălit” că ar avea la dispoziție o zonă de memorie mult mai
mare, ca memorie internă. Cum orice program ce rulează trebuie obligatoriu să fie
încărcat în totalitate în memoria internă, se crează posibilitatea de a lansa în execuție
programe mari, sau chiar mai multe programe simultan, ce ocupă o zonă de memorie
mai mare decât capacitatea circuitului fizic RAM. Mai mult, se știe că procesorul
rulează efectiv doar cod din circuitul fizic de memorie RAM. Astfel, pentru a se
putea executa efectiv cod, Sistemul de Operare (SO) aduce în mod dinamic din
memoria virtuală (HDD) în memoria RAM segmente de cod independente, sau chiar
pagini independente (de dimensiune 4 KO). Gestiunea memorie virtuale și comutarea
a ceea ce se execută în memoria RAM, este realizată de către SO.
Datorită acestei “pacăleli” cu memoria virtuală, pot fi rulate de către processor
la un anumit timp mult mai multe programe ce depăşesc ca dimensiune memoria
fizică RAM şi sunt stocate în memoria virtuală (deci pe HDD). Totusi, in realitate,
procesorul nu rulează decât instructiuni care sunt stocate în afara memoriei RAM, şi
astfel, deși există programe lansate in execuție și stocate în memoria virtuală (deci pe
HDD), pentru a fi rulate, acestea trebuie transferate în memoria RAM.
Bineânțeles că aceste transferuri ocupă timp, dar este preţul plătit pentru a avea
lansate in execuție mai multe programe și totodată programe de dimensiune mare.
Segmentarea memoriei (impartirea programului in zone distincte) pentru cod si
pentru date, a mai fost încă odata imparțită in zone mai mici (pagini) de dimensiuni
de 4Kocteti, practic mecanismul numindu-se paginare. Într-un sistem fără paginare și
numai cu segmentare, un segment al programului ce este rulat trebuie obligatoriu sa
îcapă în memoria RAM disponibilă. Acolo unde pe lângă segmentare apare si
mecanismul de paginare, atunci tot segmentul poate fi în memoria virtuală, dar numai
pagina ce include in sectiunea sa, datele vehiculate sau codul ce urmează să se
execute, trebuie adusă in memoria RAM.
Practic memoria ROM, circuitul RAM, şi Memoria Virtuală formează
memoria internă a microprocesorului. Celelalte dispozitive de stocare : - restul de
harddisk, CD-ROM, memory-stick, DVD-ROM, etc… reprezintă memoria externă a
microprocesorului.
Obs:
➢ Un program care este rulat de către microprocessor trebuie să se regăsească în
totalitate în memoria internă.
5
➢ În cadrul programelor actuale, un OCTET (de date sau cod) are mai multe
adrese care conduc la adresa fizică unde este plasat efectiv în memoria RAM:
• Adresa de segment – este adresa fizică unde începe segmentul respectiv
(segment de date, de cod, de stivă)
• Adresa de off-set în cadrul segmentului – relativ la începutul
segmentului, numărătoarea/adresarea octeților începe de la valoarea “0”,
dacă nu se folosește paginarea.
• Adresa de pagină - este adresa fizică în cadrul segmentului (de off-set)
unde începe pagina respectivă
• Adresa de off-set în cadrul paginii – relativ la începutul paginii,
numărătoarea/adresarea octeților începe de la valoarea “0”
Astfel un octet din memoria internă, are adresa formată din concatenarea
următoarelor adrese:
Adresa_FIZICĂ=>
Adresa_SEGMENT @ Adresa_PAGINĂ @ Adresa_OFFSET_Pagină
Operatorul @ poate fi o simplă adunare, dar poate fi și compunere mai complexă a
adeselor, în conformitate cu arhitectura nucleului de sistem cu microprocesor
respectiv. Faptul că adresarea se referențiază față de începutul segmentului și
eventual al paginii, segmentele, respectiv paginile pot fi plasate oricum în memoria
RAM.

1.3.Fazele pe care trebuie sa le parcurgă un program pentru a ajunge executabil


Dezvoltarea unei aplicații software trebuie să treacă prin etapele prezentate în
Fig.1.3. pentru a putea ajunge la formatul ce poate fi înțeles de un procesor (cod-
mașină).

Fisier cod sursa


Editor text.exe nume.aaa
De exemplu: notepad.exe aaa-extensie

Asamblor/Compilator.exe Fisier cod obiect


De exemplu: tasm.exe nume.obj
(de la Borland C)

Linkeditor.exe Fisier cod executabil


De exemplu: tlink.exe nume.exe
(de la Borland C)

Fig.1.3.Fazele prin care trece un program pentru ajunge în format executabil

6
Aceste transformări sunt realizate de către niște programe utilitare executabile,
dezvoltate de obicei de firmele producătoare de procesoare și de către firmele care
furnizează mediile de dezvoltare (limbaje de nivel superior):
➢ Editor de text
➢ Compilator/Asamblor
➢ Linkeditor
Programul utilitar executabil numit compilator realizează traducerea octet cu
octet a fisierului cod sursă (fişier ce conține instrucțiunile programului scris de către
programator) in limbajul cod maşină.
Fisierul cod obiect obtinut nu poate să fie rulat de către procesor deoarece nu
are formatul binar pe care il recunoaste procesorul. Acum intervine un alt program
executabil numit linkeditor (editorul de legături) care leagă acest fișier cod obiect cu
alte fisiere cod obiect din bibliotecile de funcţii, cu alte programe realizate mai vechi,
astfel încât, în final să se obțină fișierul cod executabil. Acesta are un format binar
care poate fi executat de catre processor. Acest format binar nu poate fi modificat,
daca vrem sa imbunatăţim programul.
Ca regulă, atunci cand se cumpară un program de la o firmă de soft, eu
recomand să se ceară fișierul cod obiect, fiind astfel posibil, ca ulterior, acest fișier să
fie prelucrat împreună cu alte fișiere ce reprezinta modificari, după care să fie
Linkeditate împreună. Se obține astfel un nou program, ce reprezinta o variantă nouă
de aplicație, ce include practic aplicația veche nemodificată (...poate între timp firma
de software a dat faliment).
O altă recomandare ar fi, dacă lucrați la Cernavodă (centrala nucleară)
programul cumpărat trebuie să fie la nivel de cod sursă pentru a avea controlul total a
ceea ce se întâmplă în codul respectiv.
Cea mai ieftină variantă este să cumpărați codul executabil, dar nu aveți control
a ceea ce face programul și pt. orice modificare trebuie să apelați la firma de
software. Acest lucru nu este rău, dar dacă între timp firma a dat faliment, lucrurile
sunt greu de gestionat....

7
Cap.2. Evolutia arhitecturilor de sisteme cu µP (un mic istoric care introduce
evoluția tehnologiilor de implementare)

Evoluţia în timp a arhitecturii sistemelor cu microprocesoare este utilă


pentru a întelege mai bine modul dedicat al sistemelor actuale şi în principal
sistemele numite generic „calculatoare de proces” sau „sisteme de calcul
industriale”.

>>În anul 1979 este realizat, de firma Intel, primul µP de 16 biţi (8086).
Acesta a păstrat resursele procesoarelor anterioare, pentru a păstra compatibilitatea
cu softul deja scris pentru ele, dar arhitectura sa internă conţine 2 unităţi ce
lucrează în paralel:
-unitatea de executie EU (Execution Unit), care realizează prelucrarea
efectivă a datelor.
-unitatea de interfaţă cu magistrala BIU (Bus Interface Unit) care realizează
comunicaţia cu lumea externă.
Odată cu acest procesor este produs şi procesorul 8088, cu aceeaşi structură
cu 8086, dar care comunică în exterior printr-o magistrală de 8 biţi, şi nu de 16 biţi
ca la 8086. Aparent, acesta ar trebui să lucreze cu o viteză de 2 ori mai mică decât
8086, deoarece trebuie să execute 2 accese la memorie, faţă de 8086 care va
executa un singur acces. Lucrurile nu se întâmplă astfel, deorece unitatea BIU
gestionează o memorie de tip coadă în care se găsesc, aproape în permanenţă,
următorii 6 octeţi ai instrucţiunilor ce urmeză să se execute. Singurele momente în
care coada trebuie iniţializată, şi deci EU trebuie să aştepte efectiv citirea unei
instrucţiuni, sunt cele ce urmează după execuţia unei instrucţiuni de salt. În acest
mod, diferenţa de viteză dintre 8086 şi 8088 este doar de 20%.
Aceste procesoare au introdus noţiunea de segmentare a memoriei (doar în
„modul real”), adică registrele de 16 biti sunt folosite ca indici de adresă într-un
segment fizic de memorie cu mărimea de 64KØ. Procesorul putea realiza 330.000
op/s la o frecvenţă de 4,77 MHz, și putea avea acces, printr-un mecanism
hardware, la 1MØ de memorie.

Odată cu acest procesor apare şi conceptul de coprocesor, care este un


procesor dedicat, legat direct pe magistrala microprocesorului principal şi care
extinde domeniul funcţiilor realizate. Cel mai important coprocesor realizat atunci
de Intel este 8087 care realizează calcule in virgulă mobilă.
În anul 1981, firma IBM produce primul calculator IBM PC (personal
computer) bazat pe procesoarele 8086.
Impactul mare al acestui calculator s-a datorat faptului că firma a publicat
schemele acestui calculator şi un listing al BIOS-ului. În acest mod, multe firme au
realizat echipamente compatibile IBM.

>>În 1982 sunt realizate procesoarele 80186 şi 80286. Primul este de fapt un
8086 mai rapid, prevăzut cu o serie de circuite auxiliare pentru a realiza
1
calculatoare compatibile IBM PC/XT (External Technology). Începând din anii
`80, termenul de microprocessor a fost substituit cu cel de procesor datorită
complexitătii din ce in ce mai mari a acestor cipuri.
În schimb, procesorul 80286 reprezintă o etapa nouă în arhitectura
procesoarelor, deoarece o serie de concepte clasice din domeniul calculatoarelor
mari (mainframe) au fost transferate la acesta: multiprelucrare şi multiacces, care
utilizează mecanisme pentru gestiunea memoriei virtuale şi pentru protecţia
memoriei atribuite unui proces(task). Spaţiul de memorie fizică este şi el mărit de
la 1MØ la 16 MØ.
Odată cu procesorul 80286 a apărut termenul de ”mod protejat ”. Acest mod
nou de lucru, utilizează conţinutul registrului segment (nu ca adresa de bază a
segmentului, ca in modul real) ci ca un selector(index) într-o tabelă a
descriptorilor de segment. Un descriptor de segment conţine adresa fizică de bază
a segmentului (pe 24 de biti, oferind deci un spatiu de memorie de 16MØ).
Mecanismele de protecţie a memoriei cuprind:
- verificarea limitei adresabile a unui segment;
- segmente ce pot fi doar citite;
- segmente ce pot fi doar executate;
- opţiuni – drepturi de acces intr-un segment;
- 4 niveluri de protecţie a codului sistemului de operare faţă de programele
de aplicaţie şi cele utilizator;
- mecanisme de comutare de task-uri şi tabele descriptori locali, care
permit sistemului de operare să protejeze aplicaţiile sau programele unele
faţă de altele;

În 1983 este realizat si primul mediu de programare, constituit dintr-un


editor si compilator aflate în interacţiune, adică Turbo Pascal, de către firma
Borland.

>>Primul procesor pe 32 de biţi al firmei Intel apare în 1986 şi este numit


80386. Acesta poate accesa un spaţiu de adrese de 4GØ pentru un singur segment,
ajungând până la 64TØ de memorie virtuală. Procesorul posedă aceleaşi facilităţi
ca 80286, dar dispune suplimentar, de memorii interne rapide, fiind totuşi
compatibil cu predecesorii săi. Toti urmaşii săi, de la 80486 până la Pentium 4, se
bazează în principiu pe aceeaşi arhitectură. Procesorul 80386 a introdus registre pe
32 de biţi pentru folosirea lor atât la operanzi, cât şi pentru adrese. De fapt ultimii
16 biţi din registrele pe 32 reprezintă registrele de 16 biti, corespunzătoare
procesoarelor precedente, pentru a asigura o compatibiltate totală cu acestea. Setul
de instrucţiuni de bază a fost îmbogaţit cu noi instrucţiuni. La acest procesor apare
conceptul de paginare, pentru adresarea memoriei, cu pagini de dimensiune fizică
de 4 KØ, care oferă o metodă de implementare a memoriei virtuale mai bună decât
segmentarea.

2
În plus, posibilitatea de a defini segmente de lungime egală cu spaţiul de
adresare, împreună cu mecanismul de paginare, permit crearea unui spaţiu de
adrese liniar protejat, mod folosit intens de sistemele de operare UNIX.
Pe langă acestea, s-au dezvoltat în arhitectura procesoarelor, tehnici de
procesare (prelucrare) paralelă. Astfel, dacă la 8086 erau doar 2 unităţi
funcţionale care lucrau în paralel, 80286 – 4 unităţi funcţionale, iar 386 conţine 6
unităţi funcţionale ce lucrează în paralel.
Cele 6 unităţi sunt:
- Unitatea de interfaţa cu magistrala BIU(Bus Interface Unit);
- Unitatea de citire în avans a intstrucţiunii (Code Prefetch Unit), care ia
codul obiect al instrucţiunii din memorie şi îl depune într-o coadă de 16
biţi;
- Unitatea de decodificare a instrucţiunii, care decodifică codul obiect din
coadă de instrucţiuni în microcod;
- Unitatea de execuţie;
- Unitatea de translatare a adreselor (Segment Unit), care translatează
adresele logice, în adrese liniare şi realizează verificările de protecţie;
- Unitatea de paginare (Paging Unit), care translatează adresele liniare în
adrese fizice şi realizează verificările de protecţie legate de pagini.
Aceasta unitate mai conţine o memorie cache cu informaţii de lucru
pentru cel mult 32 de pagini, cele mai recent accesate.
Coprocesorul matematic asociat, 80387 este şi el îmbunătăţit, adăugându-se
noi operaţii cum ar fi funcţiile trigonometrice.

>>O variantă îmbunătăţită a acestui procesor este 80486, produs în 1989,


care este la fel cu 386, dar include în aceeaşi capsulă (chip) şi coprocesorul
matematic, fiind de cel putin 2 ori mai rapid decât 386 la aceeaşi frecvenţă. La
acest procesor s-a dezvoltat paralelismul execuţiei prin expandarea unităţilor de
decodificare a instrucţiunilor şi de execuţie într-o bandă de asamblare(pipeline) cu
5 nivele, în care unitatea fiecarui nivel operează în paralel faţă de celelalte,
putându-se executa, în acest mod, 5 operaţii în paralel. Fiecare nivel din banda de
asamblare îşi realizează sarcina corespunzătoare pentru execuţia unei instrucţiuni
pe durata unui impuls de ceas. În plus faţă de 386, procesorul 486 are o memorie
cache internă de date şi de instrucţiuni de 8KØ, pentru a mari procentul
instrucţiunilor care se pot executa la viteză maximă.
Tot la nivelul acestui procesor încep să se încorporeze caracteristici pentru
reducerea consumului sau pentru controlul sistemului, care sunt specializate
pentru sistemele portabile, alimentate la baterii.
Dacă la primele procesoare din familia Intel X86 s-a utilizat o arhitectură
complexă denumita arhitectură CISC (Complex Instruction Set Computer),
ulterior, începând cu procesorul 486, prin utilizarea conceptului de banda de
asamblare(pipeline), arhitectura acestor procesoare “se apropie” de o arhitectură
RISC (Reduced Instruction Set Computer).

3
Cercetările şi testele au arătat că o suită de instrucţiuni simple se poate
executa mai rapid decât o instrucţiune complexă, iar diminuarea numărului de
comenzi şi a complexităţii lor permite reducerea spaţiului utilizat de acestea în
procesor, având ca şi consecinţă creşterea vitezei de lucru. Arhitectura RISC a fost
dezvoltată inițial, la nivel de concept, începând cu anii `70, iar setul de instrucţiuni
într-o variantă RISC, constă doar în instrucţiuni simple, cu moduri de adresare
evident limitate. Ideea de bază a fost ca, în locul unei sumedenii de operaţii,
procesorul să ofere un set restrâns de operaţii, pe care le poate executa foarte rapid.
Cele mai multe instrucţiuni se execută într-un singur ciclu. Arhitectura hardware a
următorului procesor Pentium este de tip RISC. Pe langă setul redus de
instrucţiuni, procesoarele RISC mai oferă următoarele avantaje:
- operaţii cu registre mari și multe, minimizând astfel necesarul de acces la
memorie;
- memorie cache integrata pe chip, evitându-se lucrul cu memoria;
- un modul pipeline, pentru a permite procesarea mai multor instrucţiuni
într-un ciclu.

Dezavantajele procesoarelor RISC este că, procesând un set mai mare de


registre, operaţiile de multitasking (eventual multiprelucrare) necesită comutări de
multe registre.
OBS: Procesorul Intel 486, în primele versiuni a fost ultimul procesor cu schema
electronică proiectată/dimensionată corespunzător pentru funcțiunile realizate. Ca
atare nu se încălzea și avea o fiabilitate foarte bună în funcționare. Acesta a fost
momentul în care s-a demonstrat că tehnologia cu siliciu și-a atins limitele și chiar
se vorbea de procesoare biologice (simplu: în loc de siliciu….bacterii). Totuși,
capacitatea de prelucrare a continuat să crească, în prima fază doar prin
creșterea frecvenței de lucru (ce a condus la viteză de prelucrare mai mare), dar
procesoarele se încălzeau cu efecte de distrugere evidente. Astfel s-au atașat
radiatoare de aluminiu capsulei procesorului, după aceea pe radiatoare s-au
montat ventilatoare pentru a mării transferul termic, ajungându-se la momentul
actual chiar la răcire cu freon (în cazul unor servere complexe).

>>Ulterior, firma Intel a produs, în anul 1994, şi un procesor pe 64 biţi,


denumit Pentium, tocmai pentru a-l deosebi de procesoarele cu aceeaşi structură
produse de alte firme. La acest procesor s-a adăugat o a 2-a bandă de asamblare
pentru a se obţine performanţe superioare (cele 2 benzi de asamblare, numite U şi
V, pot lucra în paralel, executând 2 instrucţiuni pe un impuls de ceas). De
asemenea, a fost dublată şi memoria cache internă, având câte un cache pentru date
şi unul pentru cod, fiecare de câte 8KØ.
Pentru a se îmbunătaţii performanţa execuţiei ramificaţiilor din programe s-a
implementat conceptul de predicţie a salturilor(branch prediction), introducându-
se o tabelă pentru memorarea adreselor cele mai probabile la care se fac salturile
(BTB – Branch Target Buffer). Registrele principale au ramas tot de 32 de biţi, dar
căile interne de date au fost făcute pe 128 sau 256 biţi, cu o magistrală externă de
4
64 de biţi. Procesorul Pentium are încorporat un controller de întreruperi
programabil avansat (APIC – Advanced Programable Intrerupt Controller) folosit
în sistemele multiprocesor. Dacă prima versiune de Pentium necesita 5V pentru
alimentare, cea de-a doua era alimentată cu 2,9 - 3,5V şi conţinea o tehnologie de
tip Power Management, care permitea procesorului să intre în starea de ”stand-by ”
în momentele când nu era folosit, consumând astfel mai puţina putere.
Ulterior, în 1995, a apărut o variantă îmbunătăţită (prin mărirea
paralelismului) a procesorului Pentium: Pentium Pro, care are o arhitectură
superscalară pe 3 căi, adică poate executa 3 instrucţiuni în paralel, deci într-un
impuls de tact. Acest procesor suporta o execuţie dinamică a codului: analiza
fluxului de microcod, execuţia ”out of order” a instrucţiunii, predicţia salturilor,
execuţia speculativă; 3 unităţi de decodificare a instrucţiunilor lucrează în paralel
la decodificarea codului obiect într-o secvenţă de micro-operaţii. Aceste micro-
operaţii sunt depuse (dacă nu apar dependenţe între ele) într-un tampon de
instrucţiuni (instruction pool) de unde pot fi executate în paralel, în orice ordine,
de către cele 5 unităţi de executie (2 întregi, 2 FPU, şi una de interfată cu
memoria. Unitatea de retragere/extragere (retirement unit) extrage apoi micro-
operaţiile finalizate, în ordinea lor specificată de program, ţinând cont şi de salturi.
Puterea procesorului Pentium Pro este marită şi de memoria cache: are cele
2 memorii cache interne de nivel L1 de căte 8KØ, dar în plus are un cache de nivel
2→ L2 de 256 KØ, tot intern, cuplat la CPU printr-o magistrală dedicată de 64 biţi.
Dacă cache-urile L1 sunt dual port, cache-ul L2 suportă până la 4 accese
concurente. Magistrala externă de date este orientată pe tranzacţie, adică fiecare
acces este tratat ca o cerere şi un răspuns, distinct, permiţând un număr mare de
cereri în timpul în care se aşteaptă un răspuns. Acest paralelism în accesul datelor,
împreună cu paralelismul execuţiei, oferă o arhitectură fără blocare, în care
procesorul este folosit la capacitatea lui maximă şi performanţele sunt mult
îmbunătaţite. Magistrala de adrese este pe 36 de biţi, oferind un spaţiu de adrese de
64 GØ.
• arhitectură superscalară - conceptul de superscalarizare se referă
la procesoare superscalare, acestea folosindu-se de paralelism la nivel de
arhitectură, și pot executa un număr mare de instrucțiuni într-un singur ciclu.
Modul în care un procesor superscalar funcționează este prin implementarea
mai multor unități logice de execuție pentru realizarea ciclului instrucțiune.
În acest mod etapele pipeline se suprapun mărind viteza de execuție a unui
număr mare de instrucțiuni. Un procesor superscalar aduce din memorie mai
multe instrucțiuni simultan, putând anticipa salturile condiționate și astfel să
nu întâmpine întreruperi la nivel de flux de execuție instrucțiuni. Acest lucru
este posibil prin folosirea de memorie rapidă de mici dimensiuni (memorie
cache), ce conține instrucțiunile executate cel mai recent, astfel reducându-
se întârzierile cauzate de accesul la memoria principală (accesată mult mai
lentă în comparație cu memoria cache).
• execuţia ”out of order” a unei instrucţiunii se realizează prin divizarea
acesteia în unități atomice de execuție (microcod), care se vor executa pe
5
liniile de asamblare în paralel și în orice ordine, evident în contextul în care
se ține cont și de interacțiunile dintre rezultatele parțiale obținute.
• “predicţia salturilor” (Branch Prediction) - este o tehnică pipeline prin care
se dorește optimizarea structurii pipeline prin evitarea reinițializării acesteia
dacă în procesul de încărcare a instrucțiunilor program s-a produs o eroare.
Salturile sunt de două feluri:
❖ Salturi condiționate - încărcarea instrucțiunii se realizează doar după
calcularea adresei la care se va face saltul, și trebuie evaluată în
prealabil condiția de salt;
❖ Salturi necondiționate - cărora le trebuie calculată doar adresa la care
se va realiza saltul;
Execuția instrucțiunilor unui program necesită cunoașterea adresei de salt și
evaluarea condiției de salt, în lipsa acestor informații pipeline-ul poate
aștepta sau încărca o instrucțiune de țintă posibilă, pentru ca în momentul în
care cele două informații devin cunoscute (sunt calculate) să poată decide
reinițializarea întreagii structuri. Reinițializarea pipeline-ului se realizează
doar dacă instrucțiunile încărcate sunt eronate. În acest mod de funcționare
performanța structurii pipeline scade, aici intervenind predicția salturilor,
ajutând la atenuarea scăderii de performanță. Predicția salturilor se bazează
pe păstrarea informațiilor despre fiecare salt, dacă a fost efectuat sau nu, și
ce decizie a fost luată pentru saltul respectiv. Această monitorizare a
salturilor anteriaoare se face prin intermediul unei memorii tampon numită
BTB (Branch Target Buffer), în care se păstrează informațiile privind
adresele instrucțiunilor țintă pentru fiecare salt și informația necesară
realizării fiecărei predicții.
RECOMANDARE: În dezvoltarea unei aplicații trebuie construită decizia astfel
încât să ajutăm mecanismul de predicție a salturilor.
if (conditie)
{
Bloc program 1;
}
else
{
Bloc program 2;
}
Blocul program 1 este bine să fie executat în cea mai mare parte a timpului de
funcționare normală a aplicației, adică conditie trebuie să aibă valoarea adevărat
într-o funcționare normală/uzuală a procesului controlat.
De ex. o implementare recomandată este:
if (Temperatura<=2000 grade)
{
Bloc program 1;//Control, reglare, funcționare normala
}
else
6
{
Bloc program 2;//Alarma/Avarie - ”Oprire de urgență !!! ”
}
De ex. o implementare NE-recomandată este:
if (Temperatura>2000 grade)
{
Bloc program 1;// Alarma/Avarie - ”Oprire de urgență !!!”
}
else
{
Bloc program 2;//Control, reglare, funcționare Normala
}
Mecanismul de predictie a salturilor va memora daca în ultimele IF-uri condiția a
fost adevărată și va decodifica și pe cât posibil executa deja Blocul program 1,
astfel încât să fie deja pregătit când s-a evaluat condiția. Daca nu ținem cont de
acestă regulă, și condiția este falsă, va trebui să fie reîncărcat Blocul program 2,
decodificat, etc. ceea ce înseamnă timpi suplimentari.
• “execuția speculativă” - este o tehnică de optimizare a execuției
instrucțiunilor prin care se efectuează anumite operații înainte de a se ști
sigur dacă acele instrucțiuni vor fi executate sau nu. Deși tehnica nu pare
naturală, ideea acesteia este de a realiza anumite operații în avans astfel încât
în momentul în care execuția unei instrucțiuni invocă acea operație, să aibă
deja disponibil rezultatul, iar procesul de execuție să nu fie încetinit prin
așteptarea execuției acelei operații. Acestă tehnică este folosită și în cadrul
predicției salturilor. Arhitectura hardware implică existența unui procesor
sau a unei unități logice aflate în stare de așteptare folosită pentru realizarea
operațiilor mentionate, în avans.

>>O altă variantă a fost Pentium MMX, apărut în 1997, care cuprinde un set
de 57 de noi instrucţiuni, 4 noi tipuri de date şi un nou set de registre, pentru a
extinde performanţele multimedia şi de comunicaţie. Tehnologia MMX (Multi –
Media-Extension) are la bază o arhitectură SIMD (Single Instruction Multiple
Data) care permite extinderea aplicaţiilor multimedia: grafică 2D, 3D, video,
procesare de imagini-sunet. Această tehnologie folosește algoritmi de calcul
intensivi (calcule multe și complexe) asupra unor siruri de date simple.
Elementele noi care au apărut faţă de vechiul Pentium (fără MMX) sunt:
memorie tampon L1 dublată la 32 KØ, algoritm de predicţie pentru salturi (execuţie
speculativă îmbunătaţită), structura pipeline îmbunătăţită şi evident suportul
MMX.
Mediile de lucru grafice şi aplicaţiile multimedia complexe impun cerinţe
deosebit de severe în privinţa puterii de calcul a procesorului. Una din căile de
îmbunătăţire a performanţei procesorului, este realizarea unor îmbunătăţiri ale
arhitecurii interne. În acest scop au fost identificate rutinele cele mai costisitoare,
din punct de vedere al timpului de execuţie, şi s-au identificat o serie de asemănări
7
între aplicaţii: algoritmii sunt deosebit de complecşi, cer o putere de calcul ridicată
şi se aplică repetitiv pentru zone de date diferite; majoritatea operaţiilor sunt de tip
aritmetic şi logic; ele se execută în paralel şi manipulează în buclă date relativ mici
(tipic 16 biţi audio si 8 biţi grafică). Din acest motiv s-au introdus noi registre,
asemanătoare cu cele de la DSP-uri (Digital Signal Procesor – procesor de semnale
numerice (digitale)), s-au definit tipuri de date specifice şi instrucţiuni
suplimentare aferente, care să manipuleze aceste date.
Unele aplicaţii, scrise special pentru aceste procesoare puteau să-si măreasca
viteza de lucru cu pânâ la 200%, dar numărul acestora era destul de mic la vremea
respectiva, astfel că în realitate, cresterea performanţei globale pentru Pentium
MMX a fost doar 20%, indiferent dacă erau sau nu folosite facilitaţile respective.
În principal, creşterea de performanţă s-a datorat măririi cache-ului intern, creşterii
eficienţei algoritmului de predicţie a salturilor, precum şi a benzii de asamblare. In
ciuda afirmatiilor făcute de Intel, instrucţiunile MMX nu au reprezentat un salt
important din punct de vedere tehnologic, ci doar comercial.

>>Următorul procesor, Pentium II, moşteneşte benzile de asamblare de la


Pentium Pro şi cele 2 magistrale independente (cea cu memorie principală şi cea cu
nivelul L2 de cache). Modificările importante aduse în logica internă sunt: memoria
cache de nivel L1 care are o capacitate dublă şi instrucţiunile MMX pe care le
poate prelucra procesorul. Deci, Pentium II este un Pentium Pro caruia i s-a ataşat
o unitate MMX. Spre deosebire de procesoarele anterioare care aveau forma
patrată care se inserau într-un soclu (socket), Pentium II este în formă ”slot”, fiind
inserat într-un cartuş, numit SECC – Single Edge Contact Cartridge. Dacă Pentium
I a adus viteză şi performanţă sub mediul Windows 95, Pentium II a extins
facilităţile şi posibilităţile calculatorului pentru aplicaţii cum ar fi: jocuri 3D,
recunoaştere vocală, prelucrări audio-video.

>>În 1999 este lansat un nou membru al familiei, procesorul Pentium III
care se bazează pe arhitecturile procesoarelor Pentium Pro şi Pentium II. El adaugă
setului de instrucţiuni existent încă 70 de noi instrucţiuni, care se adresează
unităţilor funcţional existente şi noi, unităţi în virgulă mobilă SIMD (Single
Instruction, Multiple Data), care permitea realizări de operaţii aritmetice şi logice
asupra unor valori în virgulă mobilă, simplă precizie (32 de biti), împachetate în
cuvinte de 128 biţi, denumită SSE (Streaming SIMD Extension). Aceste
instrucţiuni sporesc viteza aplicaţiilor multimedia, dacă există o colaborare cu
suportul software. O versiune mai ieftină a acestui procesor a fost Celeron, care
avea cache L1 de 64 KØ, iar cache L2 de 128 KØ, care era destinat calculatoarelor
ieftine, având performanţe cu 20-40 % mai slabe decât Pentium III.

>>Procesorul Pentium 4, apărut în 2001, extinde modelul de calcul SIMD


pentru a prelucra şi date în virgulă mobilă de dublă precizie, precum şi întregi,
împachetate în cuvinte de 128 de biti. În acest scop sunt adaugate şi 144 de noi
instrucţiuni pentru noile tipuri de date. Pe langă aceasta, Pentium 4 este prima
8
implementare a unei noi microarhitecturi: Intel Netburst, care include suport
Multiprocesor şi tehnologie Hyper – Threading, precum şi tehnologie super banda
de asamblare, pentru a putea opera până la viteze de 10 GHz. Arhitectura poate
executa instrucţiunile dinamic, în orice ordine. Pentium 4 are destul de puţine
elemente comune cu Pentium II, deci se poate spune că s-a ajuns la generaţia a
şaptea. Dacă pâna la acest procesor toţi membrii generaţiei sale P6 aveau memoria
cache L1 de 32 KØ (16 pentru date şi 16 pentru instrucţiuni) acum cele 2
componente sunt separate, cache-ul pentru date are numai 8 KØ iar cel pentru
instrucţiuni a fost schimbat complet, devenind aşa – numitul ”trace cache” cu 12
KØ de micro – operaţii. Banda de asamblare a fost extinsa pana 20 de etape
(stagii), faţă de Pentium II, III, care avea 12.

>>Procesorul Intel Itanium, apărut tot în 2001, este primul dintr-o noua
familie bazată pe arhitectura Itanium, ISA (Itanium Instruction Set Arhitecture),
care este proiectată pentru a satisface cerinţele staţiilor de lucru şi a serverelor de
mare performanţă. Aceasta arhitectură se bazeaza pe RISC si CISC (mai precis este
o arhitectură CISC peste RISC), prin combinarea pe scară largă a resurselor
microprocesorului şi compilatoarele inteligente care permit explicit execuţie
paralelă, predictivă si speculativă.
Altfel spus, procesorul utilizează conceptele de proiectare EPIC (Explicty
Parallel Instruction Computing) pentru o cuplare mai strânsa între hardware şi
software. Resursele sale mari se combină cu predicţia şi speculaţia pentru a valida
optimizarea pentru aplicaţii de mare performanţă ce ruleaza pe Windows XP
(editia de 64 de biţi) sau Linux. Procesorul a fost conceput pentru a suporta sisteme
foarte mari, inclusiv cele care utilizează câteva mii de procesoare. Faţă de
procesoarele anterioare, posedă şi nivelul L3 cache, care poate avea 2 sau 4 MØ, şi
care este asociativă, cu o dimensiune a liniei de 64 KØ.
Resursele sale constau din 4 unităţi întregi , 4 unităţi multimedia, 2 unităţi de
încărcare/măsurare, 3 unităţi de ramificare, 2 unităţi în virgulă mobilă de precizie
extinsă şi 2 unităţi suplimentare în virgulă mobilă de simplă precizie. Unităţile în
virgulă mobilă pot opera la 3 Gflops (pentru precizie extinsă) şi 6 Gflops (pentru
dublă precizie). Procesorul poate citi, transmite, executa şi extrage 6 instrucţiuni la
fiecare ciclu de ceas procesor. [flops=floating-point operation per second]
Arhitectura Itanium este cea mai seminificativă şi avansată, de la procesorul
Intel 386, prezentă la acel moment. În 2002 a a apărut urmaşul acestui procesor
Itanium 2 care mareşte performanţa procesorului anterior de 1,5 → 2 ori, prin
extinderea semnificativă a performanţei peste sisteme bazate pe RISC, pentru
aplicaţii foarte mari.
Creşterea frecvenţei procesoarelor este principalul mijloc de extindere a
performanţelor alături de îmbunătăţirea arhitecturii. Astfel, dacă primul PC avea
frecvenţa de 4,77 MHz, în continuare acesta a evoluat rapid: 33 MHz(1991), 400
MHz(1998), peste 3GHz(2002).
Procesoarele următoare se caracterizează şi prin imbunătăţirea şi extinderea
arhitecturii RISC, completată corespunzator cu partea sofware.
9
>>Procesoarele actuale, cum ar fi I5, I7, Intel Atom, sunt în principal
realizate în tehnologia “CISC peste RISC”. Acest lucru se traduce prin realizarea
unui nucleu hardware de tip RISC, cu schemă electronică simplificată, care se
încălzesc mai puțin, etc. iar extensia către arhitectura CISC se emulează software.

Concluzie: Deși tehnologia pe siliciu și-a atins limite cu mulți ani în urmă,
procesoarele au continuat și continuă să se extindă folosind diverse artificii
tehnice/tehnologii:
✓Creștere forțată a frecvenței cu dezavantajele corespunzătoare:
✓Adăugarea mai multor nuclee în aceeași capsulă de procesor (multicore);
✓CISC peste RISC;
Emularea software (CISC peste RISC), alături de tehnologia circuitelor FPGA
(Field Programmable Gate Array....va fi descrisă într-un capitol viitor) va permite
pe viitor dezvoltări fabuloase, pe care azi, poate, nici nu ni le imaginăm.

Termenul de „arhitectura calculatoarelor” este de cele mai multe ori


utilizat cu semnificaţia simplă de organizarea şi proiectarea calculatoarelor. În
practică, într-un sistem de calcul (sistem cu µP) există mai multe arhitecturi
distincte, fiecare fiind definită de o legătură între diferitele niveluri ale aplicaţiei.
În figura de mai jos este prezentată o schemă abstractă a unui sistem de
calcul, unde cele mai simple operaţii sau funcţii sunt plasate în partea inferioară,
iar cele mai complexe operaţii, dependente de utilizatori, ocupă nivelurile
superioare. Fiecare nivel foloseşte funcţiile furnizate de nivelul anterior.

10
Practic, o arhitectură este legătura sau interfaţa între 2 module funcţionale.
Ea poate fi definită ca o vedere funcţională a sistemului printr-o interfaţă pentru
utilizator care se situează deasupra nivelului respectiv. În principiu, un utilizator
care se plasează pe un anumit nivel este interesat numai de detaliile de
implementare de la nivelul imediat inferior.
Arhitectura globală este interfaţa între întregul sistem de calcul şi lumea
exterioară care este numită arhitectura sistemului. Undeva, mai jos, este interfaţa
între procesorul de aplicaţie şi limbajul de programare de nivel înalt. Această
denumire defineşte arhitectura limbajului de programare. De obicei, programatorul
se plasează pe acest nivel. În continuare, este interfaţa între limbajul de programare
şi diferite funcţii de administrare a resurselor, în timpul execuţiei, care sunt
furnizate de către sistemul de operare. Acest nivel este definit ca arhitectura
sistemelor de operare.
Următoarea interfaţă este deosebit de importantă, deoarece ea defineşte
limita dintre hardware şi software. Acesta este nivelul elementar, la care
instrucţiunile recunoscute de calculator sunt decodificate şi executate.
Celelalte 2 niveluri inferioare de arhitecturi (microcod şi la nivel de porti)
definesc în detaliu alte funcţii primitive, dar care nu sunt interesante pentru cei mai
mulţi dintre programatori decât în cadrul unor aplicaţii de timp real.
În general, termenul de arhitectura calculatoarelor defineşte graniţa dinte
hardware si software. Arhitectura este nivelul sistemelor cu microprocesor ce este
văzut de un programator în limbaj de asamblare sau de unul care scrie un
compilator.
O separare pe orizontala a componentelor permite definirea de sisteme
multiprocesor sau distribuite.

Sisteme distribuite

11
Cap.3. Sisteme pentru procesarea numerică a semnalelor

Din punct de vedere al domeniului de utilizare microprocesoarele se împart în 3 mari


categorii:
a) microprocesoare de uz general;
b) microcontrolere;
c) DSP-uri.

Microprocesoarele de uz general conţin în chip (circuitul integrat) doar procesorul


central (CPU) şi necesită circuite suplimentare pentru memoria program, memoria de date,
porturi I/O. Ele sunt utilizate, în general, în aplicaţii de mare performanţă unde costul, mărimea
și mai ales consumul energetic nu sunt criterii de selecţie critice. Chip-ul microprocesorului,
având întreaga funcţie dedicată pentru CPU, are spaţiu disponibil pentru mai multe circuite în
vederea creşterii vitezei de execuţie, dar totodata necesită circuite de memorie si porturi I/O
externe.

Microcontrolerele sunt procesoare dedicate aplicaţiilor de conducere şi monitorizare,


proiectate astfel încât să se minimizeze numărul total de circuite (pe chip) şi mai ales costul prin
includerea memoriei şi porturilor I/O în aceeași capsulă cu CPU. Uneori microcontrolerul are
resurse suficiente pe chip astfel încât acesta este singurul circuit necesar pentru realizarea unei
aplicatii hardware. Terminologia “un calculator intr-un chip” este descrierea cea mai bună
facută pentru microcontrolere.

DSP-urile sunt microprocesoare proiectate într-o construcție specială pentru a realiza


procesarea dedicată a semnalelor numerice. Ultimii 40 de ani au arătat că există două domenii
mari în care calculatoarele sunt extrem de capabile (eficiente):
➢ manipularea datelor (procesarea informației şi managementul bazelor de date)
➢ calcule matematice (utile în ştiinţă, inginerie şi procesarea semnalelor numerice).
Toate microprocesoarele pot realiza ambele sarcini; totuşi, este dificil (scump) să se realizeze un
dispozitiv care să fie optimizat pentru ambele sarcini. Diverse considerente tehnice şi de
marketing au făcut ca microprocesoarele tradiţionale, ca de exemplu PENTIUM, să fie
direcţionate în primul rând spre manipularea datelor. DSP-urile sunt proiectate special pentru a
realiza calcule matematice complexe, într-un timp foarte scurt, necesare în procesarea semnalelor
numerice.

3.1. Tehnologii de procesare numerica a semnalelor

DSP -> Digital Signal Processing (Prelucrari numerice de semnale) – set de tehnici de
procesare a semnalelor
DSP -> Digital Signal Processor (Procesoare digitale de semnale) – echipament hardware
dedicat pentru procesarea semnalelor
Analogic sau numeric?
➢ procesarea informaţiei în format numeric oferă o serie întreagă de avantaje:
− flexibilitate: un sistem de prelucrare numerică a semnalelor poate fi adaptat
pentru implementarea a mai multor tipuri de aplicaţii. Modificările sunt în marea

1
majoritate a cazurilor doar de natură software, cu adaptari minime legate de
hardware.
− reproductibilitate: o aplicaţie în tehnologie DSP rulează identic pe orice
dispozitiv. De exemplu un filtru FIR în tehnologie DSP nu îşi modifică funcţia de
transfer la transpunerea de pe un procesor pe altul;
− fiabilitate: performanţele unui sistem DSP se degradează foarte puțin în Timp
(…cel puțin așa se dorește);
− complexitate: un sistem DSP permite implementarea de algoritmi complecşi de
procesare pe un acelaşi chip de mică putere.
➢ principalele dezavantaje ale procesării în format numeric:
− viteza de procesare este limitată de frecvenţa de eşantionare şi de echipamentele
periferice conectate în circuit
− algoritmii DSP operează pe un număr predefinit de biţi cu o precizie şi o gamă
dinamică limitată, iar erori aritmetice pot apărea ca urmare a procesării numerice
− reprezentarea informaţiei analogice în format digital, ceea ce inseamna o pierdere
de informatie (analogică) între 2 perioade de eșantionare.
− presupune utilizarea unei operaţii de cuantizare ce este la rândul său o sursă de
erori (erori de cuantizare)
Procesoare numerice de semnale sunt microprocesoare proiectate pentru procesarea secvenţială a
semnalelor în format digital. Procesarea numerică a semnalelor a devenit atractivă încă din anii
1960, odată cu introducerea tehnicilor digitale. Ulterior a devenit o alternativă în procesarea
semnalelor, pe măsură ce structurile digitale hardware au evoluat, au devenit mai rapide, mai
uşor de utilizat, mai ieftine şi tot mai răspândite pe piaţă.
Încă din 1979, firma Intel a introdus primul DSP (2920) care avea o arhitectură şi un set
de instrucţiuni special adaptate pentru aplicaţii de procesare numerică a semnalelor. Astăzi, piaţa
producătorilor de DSP-uri şi de soluţii pentru DSP-uri este extrem de aglomerată, oferta este
foarte diversificată, iar preţul (mai corect spus, raportul preţ / performanţă) este tot mai mic.
Dacă iniţial DSP-ul a apărut ca o cerinţă a pieţii, acum, performanţele DSP-urilor oferite
au făcut ca domeniile de aplicare practic să explodeze. Preţul în scădere, suportul hardware şi
software oferit ca fiind tot mai complex şi puterea de procesare tot mai mare, au făcut ca
utilizarea DSP-urilor în tot mai multe aplicaţii să devină un fapt obişnuit: modemuri de mare
viteză, telefoane fără fir sau celulare, playere audio sau video, camere digitale - sunt produse a
căror funcţionare se bazează aproape exclusiv pe prelucrarea numerică a semnalelor.
Un semnal este definit ca o cantitate fizică dependentă de timp, pentru informații de
poziţie, presiune, temperatură, etc. (de exemplu, tensiunea de ieşire furnizată de către un
microfon este strâns legată de presiunea acustică a sunetului ca funcţie de timp). Obiectivele
urmărite în procesarea semnalelor sunt acelea de a transmite mai departe sau de a memora
semnale, de a îmbunătăţi anumite componente ale unui semnal şi de a extrage informaţiile utile
transportate de semnale.
În aplicaţiile practice, majoritatea dintre semnalele întâlnite sunt analogice, deci prezente
la fiecare moment de timp şi având amplitudini diferite. Pentru a prelucra, astfel de semnale
continue în timp folosind DSP-uri, este necesar ca acestea să fie eşantionate şi cuantizate pentru
a produce o secvenţă numerică. Ăceastă secvenţă discretă în timp, cu o amplitudine de valoare
tot discretă, reprezentată pe un număr finit de biţi, poartă numele de semnal digital.
Exemplu:
- muzica înregistrată pe o casetă audio - semnal continuu;
- muzica înregistrată pe un CD - semnal digital.

2
Practic, semnalele digitale pot fi memorate pe diferite medii de stocare un timp nedefinit fără a
pierde din informaţii (exemplu: discuri magnetice, discuri optice, etc.). Pe de altă parte,
semnalele analogice memorate se deteriorează în timp şi nu mai pot fi readuse complet la
formele iniţiale.
Teoria procesării numerice a semnalelor se bazează pe semnale şi sisteme discrete în
timp, ceea ce permite o manipulare mai uşoară din punct de vedere matematic. Semnalele
discrete pot fi obţinute prin eşantionare (fără cuantizare) a semnalelor analogice. Semnalele
discrete sunt prezente în fiecare moment discret de timp şi pot avea orice amplitudine. Ele
necesită un număr infinit de biţi pentru reprezentarea fiecărui eşantion, ceea ce nu se poate
realiza fizic în structuri digitale. Mai mult, cea mai mare parte a algoritmilor de procesare
numerică a semnalelor au fost iniţial dezvoltaţi folosind calculatoare de uz general, pentru care
viteza de modificare şi testare a algoritmilor era mai importantă decât cea de execuţie a
algoritmilor. Pentru a utiliza aceşti algoritmi în aplicaţiile actuale folosind cuvinte numerice de
lungime finită, trebuie avute în vedere hardware-ul folosit, viteza de execuţie şi complexitatea
algoritmilor. Datele reale (eşantionate) obţinute într-o aplicaţie trebuie utilizate astfel încât să se
realizeze o rafinare a algoritmului.
Aşa cum se poate vedea în Fig.3.1, sistemele de procesare numerică a semnalelor
utilizează un DSP şi o structură hardware digitală, precum şi două convertoare, unul analog-
numeric (ADC - Analog-to-Digital Converter) şi unul numeric-analogic (DAC - Digital-to-
Analog Converter) pentru a înlocui dispozitivele analogice standard, precum: amplificatoare,
modulatoare şi filtre.

Fig.3.1.

Semnalul analogic ce trebuie procesat este mai întâi eşantionat şi codificat într-un semnal digital
în formă binară prin blocul ADC. Procesorul DSP realizează operaţii matematice bazate pe un
anumit algoritm de prelucrare numerică a semnalelor, implementat în software. Semnalul digital
obţinut la ieşire poate fi convertit înapoi în formă analogică prin blocul DAC. De asemenea, un
procesor DSP poate prelucra şi semnale digitale primite la intrare de la alte structuri numerice şi
poate furniza în exterior comenzi digitale către alte sisteme. În unele aplicaţii, un sistem DSP
poate crea intern semnale digitale. De exemplu, se poate sintetiza o pereche de semnale
sinusoidale (dial tones - tonuri de apel) pentru apeluri telefonice.
Algoritmii de tip DSP pot fi implementaţi pe o mare varietate de structuri digitale,
folosind limbaje de programare diverse (de exemplu: C, C++). Unele structuri DSP pot fi
realizate prin sisteme logice programabile sau neprogramabile, microprocesoare şi
microcontrolere de uz general şi prin procesoare numerice de semnal de uz general. De exemplu,
este posibil să se integreze sisteme DSP bazate pe algoritmi sofisticaţi, ca de exemplu algoritmii
de codare şi decodare video, pe un singur cip VLSI (Very Large Scale Integration - cu Integrare
pe Scară Foarte Largă). Totuşi, soluţiile hardware sunt orientate către rezolvarea unor aplicaţii
specifice. Astfel de soluţii sunt mai rapide şi de mai mici dimensiuni decât soluţiile

3
programabile, însâ necesită un timp mult mai mare pentru proiectare, un cost ridicat pentru
dezvoltare şi sunt dificil de modificat sau upgradat (actualizat).
Procesorul “programabil” poate fi programat pentru o multitudine de task-uri (sarcini). Se
utilizează pentru sisteme complexe şi care sunt prea dificil de realizat pe seama circuitelor
neprogramabile, pentru produse care ncesită un timp de dezvoltare foarte scurt şi un cost de
punere la punct scăzut, sisteme care trebuie upgradate periodic, pe baza unor noi algoritmi şi
standarde. Totuși, pentru o sarcină specifică, procesorul este mai lent decât cip-ul VLSI care ar
realiza acelaşi task.
Microprocesoarele şi microcontrolerele de uz general sunt astfel concepute încât să poată
realiza procesări în forme extrem de generale, folosind o arhitectură von Neumann, la care există
un spaţiu unitar de memorie, atât pentru instrucţiuni, cât şi pentru date. Prin contrast, o
arhitectură Harvard separă spaţiul de memorie în memoria program şi memoria de date, astfel
încât ambele să poată fi accesate simultan. Cea mai mare parte a DSP-urilor utilizează o
arhitectură Harvard modificată şi sunt optimizate pentru a efectua operaţii repetate de înmulţire
şi sumare care accesează în mod secvenţial datele stocate în locaţii consecutive ale memoriei.
Sistemele de tip DSP au înlocuit în mare parte sistemele de procesare analogică şi au
permis extinderea considerabilă a ariei aplicaţiilor. Principalul avantaj al DSP-urilor este
programabilitatea lor. Un sistem DSP permite utilizatorului să modifice task-urile prin scrierea
unui nou cod în memoria sistemului. De asemenea, permite actualizarea parametrilor sistemului
pe baza unor noi algoritmi pentru o mai bună adaptare la mediul în continuă schimbare.
Sistemele DSP se bucură de performanţe deosebite întrucât atât memoria, cât şi procesorul, sunt
practic independente de temperatură şi pot reacţiona corect în diferite medii externe pe întreaga
durată de viaţă a produsului. Mai mult, un acelaşi algoritm DSP poate fi transpus în diverse
limbaje şi poate fi rulat pe diferite arhitecturi hardware cu aceleaşi rezultate. Costul sistemelor
DSP este în continuă scădere, în timp ce performanţele continuă să crească de la o generaţie la
alta. Puterea consumată de către un DSP a scăzut spectaculos de la o generaţie la următoarea,
astfel încât astăzi dispozitivele realizate se pretează foarte bine a fi incluse în structuri portabile.
În plus, unele operaţii complexe de procesare a semnalelor nici nu mai pot fi implementate pe
baza tehnicilor analogice.
În paralel cu avantajele oferite de tehnologiile hardware digitale, s-au dezvoltat cercetări
pentru îmbunătăţirea algoritmilor de lucru şi pentru a extinde aria de aplicabilitate. În ce priveşte
creşterea performanţelor algoritmilor de operare, aceştia au în vedere şi scăderea complexităţii
sistemului, ceea ce a permis dezvoltarea unor noi tehnici DSP, precum filtrarea adaptivă pentru
mediu necunoscut sau variabil în timp şi algoritmi rapizi, precum transformarea Fourier rapidă
(FFT - Fast Fourier Transform) pentru calculul transformatelor Fourier discrete.
Pe măsură ce arhitecturile DSP au evoluat, iar performanţele algoritmilor au crescut, şi
cerinţele de procesare au devenit tot mai mari, ceea ce a determinat dezvoltarea unor sisteme cu
performanţe superioare care includ algoritmi de calcul tot mai sofisticaţi pentru noile generaţii de
aplicaţii. În aceste aplicaţii, factorii cheie care asigură creşterea duratei de aplicabilitate ale
sistemelor DSP proiectate sunt flexibilitatea şi upgradabilitatea (posibilitatea de dezvoltare /
modernizare pe structura existentă). Multe dintre standardele industriale în domeniul DSP-urilor
şi a sistemelor DSP sunt încă în faza de dezvoltare, ele trebuind să rămână compatibile cu alte
standarde (de exemplu, cu cele din domeniul structurilor numerice, a circuitelor integrate, pentru
reprezentarea algoritmilor, etc.). Un bun exemplu este cel al telefoniei celulare, pentru care
standardele au trecut foarte rapid prin mai multe generaţii: 2G, 2.5G, 3G, 4G și se pregătește
4
asiduu 5G. În noile proiecte se includ cu precădere procesoare DSP programabile care asigură
mai multe moduri de operare şi posibilitatea upgradării ulterioare.

3.2 Sisteme DSP


De obicei, sistemele DSP sunt incluse în sisteme mai largi cu rolul specializat de a realiza
operaţii de procesare numerică a semnalelor, permiţând astfel întregului sistem să execute task-
uri mai generale. De exemplu, un procesor DSP este utilizat în cadrul unui modem pentru
controlul transmisiei de date, iar întreg ansamblul constituie sistemul DSP al unui calculator.
Destul de des, acest tip de sistem DSP rulează doar o singură aplicaţie (specifică) şi nu poate fi
programat de către utilizator. De fapt, utilizatorul nici nu are nevoie să ştie că un astfel de
procesor (de exemplu, un procesor DSP care este inclus în sistemul de control al hard-disk-ului
pentru controlul motorului şi a poziţionării capului de citire) este parte componentă a
calculatorului.
Rezultatele cercetărilor actuale în domeniul DSP-urilor s-au orientat tot mai mult spre
soluţiile complete care să înglobeze algoritmi, software şi hardware într-un sistem unitar.
Software-ul este în fond un program care controlează un set de resurse de calcul hardware pentru
a implementa un algoritm, în timp ce hardware-ul constă din blocuri de calcul specifice.
Dezvoltarea software-ului poate fi fie independentă de procesor, fie specifică unui anumit
dispozitiv. Deoarece dezvoltarea software-ului a devenit o cheltuială mai însemnată decât
dezvoltarea hardware-ului în principalele sisteme DSP, proiectarea independentă de procesor are
avantajul portabilităţii softului obţinut pe diferite procesoare şi abilitatea de a migra uşor către
noile procesoare, mai performante şi mai complexe, care vor apare în viitor.
În cadrul proiectării independente de procesor, limbajele de nivel înalt, precum C sau
C++, sunt preferate şi sunt disponibile pentru majoritatea procesoarelor DSP. Programele scrise
în C sunt mai uşor şi mai rapid de scris şi ele pot fi portate de la un procesor la altul prin simpla
recompilare a codului sursă, folosind un compilator C specific noului procesor. Această
portabilitate este foarte importantă, mai ales când algoritmul va fi implementat pe mai multe
procesoare diferite. Soft-ul dependent de procesor este realizat prin limbaje de asamblare care
reflectă arhitectura unui anumit procesor. Deşi codul de asamblare rulează mai rapid şi necesită
mai puţină memorie, el este mai greu de scris şi trebuie rescris pentru fiecare tip de procesor.
Totuşi, limbajul C rămâne metoda preferată de implementare, atât timp cât poate asigura o viteză
de rulare suficient de bună pentru un anumit procesor şi pentru o aplicaţie dată.
În aplicaţiile în care viteza de procesare şi nivelul resurselor de memorie reprezintă
elemente cheie, soluţia este una de compromis care utilizează limbajul de asamblare pentru
implementarea secţiunilor critice şi limbajul C pentru restul codului. Programarea combinată C -
Asamblare reprezintă un compromis bun între uşurinţa codificării şi eficienţa implementării. În
mod constant, eficienţa compilatoarelor C se îmbunătăţeşte continuu şi există multe biblioteci de
funcții DSP scrise în limbaj de asamblare optimizat, ce permit utilizatorului să dezvolte cu
uşurinţă programe eficiente în cod combinat.
Majoritatea sistemelor DSP trebuie să lucreze în timp real. Într-o aplicaţie de timp real cu
DSP, un eşantion (sau un grup de eşantioane, numite cadru, sau bloc) este aplicat la intrarea
sistemului. Acesta trebuie să realizeze procesarea ieşirii asociate unui eşantion al semnalului
aplicat la intrare într-un timp care nu trebuie să depăşească durata eşantionului (sau blocului). De
exemplu, în procesarea eşantioanelor, este posibil ca fiecare eşantion este procesat în paralel cu
sosirea la intrare a următorului eşantion. În prelucrarea pe blocuri, ca în cazul FFT, N eşantioane
5
sunt grupate formând un bloc, iar procesarea blocului se poate efectua numai după achiziţia
tuturor celor N eşantioane. De aceea, procesarea în timp real pe blocuri implică întârzieri mai
mari decât procesarea pe eşantioane.
Majoritatea algoritmilor şi aplicaţiilor DSP se dezvoltă şi se verifică pe calculatoare de uz
general, fără constrângeri privind timpul de execuţie, mărimea memoriei, ori costul sistemului.
Definitivarea unei aplicaţii practice trebuie condusă spre o proiectare globală care să asigure
algoritmi performanţi, software eficient şi resurse hardware optime. De exemplu, un algoritm
poate fi implementat fie prin hard, fie prin soft, alegând astfel între viteză şi flexibilitate. De
asemenea, un algoritm poate fi modificat astfel încât să se adapteze mai bine la o structură
hardware / software existentă. Hardware-ul poate fi conceput specific pentru un algoritm dat, sau
se poate urmări minimizarea costului pe durata dezvoltării şi utilizării. Toate aceste variante
trebuie avute în vedere în dezvoltarea unei anumite aplicaţii.
Proiectarea unui sistem DSP implică o cunoaştere bună a problemei ce trebuie rezolvată
şi a tuturor cerinţelor necesare. De obicei se lucrează în echipă: inginer de hardware, inginer de
sistem, proiectant de soft şi specialist în testarea structurii. Analiza şi proiectarea unui algoritm
DSP eficient care să utilizeze resurse hard şi soft optime este o muncă complexă, care se bazează
cel puţin în faza de proiectare pe unelte soft performante. Se poate utiliza de exemplu MATLAB
şi SIMULINK, cu toolboxurile aferente de la firma MathWorks.

Aplicaţii ale DSP-urilor:


Datorită performanţelor în timp real şi a capacităţii mari de prelucrare, procesoarele de
semnal sunt utilizate astăzi într-o gamă foarte variată de aplicaţii. Tehnicile DSP tind să
înlocuiască metodele clasice de procesare analogică a semnalelor în multe domenii. Procesarea
numerică a semnalelor a devenit o tehnică standard în multe domenii, printre care:
telecomunicaţiile, analiza şi prelucrarea semnalelor biomedicale, controlul numeric, procesarea
vorbirii şi a semnalelor audio / video, instrumentaţia numerică, tehnicile radar, sonar, etc. Câteva
exemple de aplicaţii în care se utilizează procesarea numerică a semnalelor sunt prezentate în
continuare.

Prelucrare de semnale (procese): Filtrare digitală, Convoluţie şi corelaţie, Transformări Hilbert,


Transformări Fourier rapide, Filtrare adaptivă, Generare de semnale, Ferestre de timp.

Grafică şi prelucrări de imagine: Transformări 3D / Renderizare, Recunoaştere de forme,


Transmisie / Compresie de imagini, Îmbunătăţirea calitativă a imaginilor, Scanare coduri de
bare, Staţii de lucru grafice, Animaţie / Hărţi digitale, Vedere artificială, Camere digitale.

Instrumentaţie: Analiza spectrală, Generare de funcţii, Potrivire de şabloane, Simulări seismice,


Filtrare digitală.

Recunoaştere vocală: Scrisoare vocală (Voice Mail), Recunoaştere după voce, Verificare
amprentă vocală, Îmbunătăţirea vorbirii, Sinteza vocală, Controlul incintelor acustice, Conversia
text / vorbire (Text-to-Speech), Videoconferinţe, Protocoale de transfer voce pe Internet (Voice
Over Internet).

6
Comandă şi control: Automatizări, Controlul discului, Comandă servo, Comanda roboţilor,
Imprimante laser, Comanda motoarelor, Filtre Kalman.

Aplicaţii industriale: Comanda numerică, Robotică, Securitatea accesului, Monitorizarea


surselor de putere, Inspecţie vizuală, CAM (Computer-Aided Manufacturing).

Procesare audio: Codificare şi decodificare (codec), Generatoare de efecte, Sintetizare de sunet


tridimensional, Procesare de sunet spaţial (Surround-Sound).

Transporturi: Controlul activ al zgomotului şi al vibraţiilor, Securitatea comunicaţiilor,


Controlul adaptiv al rulării, Sisteme anti-coliziune, GPS (Global Positioning System), Comanda
vocală a autovehicolelor, Radio digital, Sisteme audio / video pentru transporturi.

Comunicaţii: Securitatea comunicaţiilor, Detecţie, Codificare şi decodificare, Radiouri software,


Sintetizatoare de unde.

Telecomunicaţii: Suprimarea ecoului, Transcodere, Multiplexarea canalelor, Modemuri, Codare


/ decodare, Criptare date, Comunicaţii în spectru larg, Egalizatoare adaptive, FAX, Telefonie
celulară, Telefoane inteligente, Interpolare, Videoconferinţe, Sisteme de comunicaţii personale
(PCS - Personal Communication System), PDA-uri (Personal Digital Assistants), etc.

Aplicaţii militare: Securitatea comunicaţiilor, Procesare de semnale radar, Procesare sonar,


Procesare imagini, Instrumente de navigaţie, Ghidare rachete, Modemuri în radiofrecvenţă.

Domeniul medical: Echipamente de diagnostic, Proteze, Echipamente cu ultrasunete, Proteze


auditive, Monitorizare pacienţi.

Bunuri de larg consum: Detectoare de radar (anti-radar), Instrumente de putere, Audio/TV


digitale, Sintetizatoare muzicale, Jucării inteligente, Roboţi telefonici, Produse educaţionale,
Pagere, PDA-uri, etc.

Acestă sumară trecere în revistă a domeniilor şi a aplicaţiilor în care procesarea numerică


a semnalelor şi-a găsit o largă aplicabilitate nu este nici pe departe completă. Mai mult, aria de
utilizare a DSP-urilor se lărgeşte odată cu trecerea timpului. Aici s-au evidenţiat doar aplicaţiile
în care aportul utilizării procesoarelor numerice de semnal a fost unul revoluţionar. Se poate
observa şi că domeniul procesării numerice a semnalelor este unul interdisciplinar, bazându-se
pe noile descoperiri din diverse alte domenii.

3.3 Familia TMS320


Poziţia dominantă, unanim recunoscută, a firmei Texas Instruments (TI) nu este
întâmplătoare. În 1982, când a lansat primul său procesor de semnal digital, TMS32010, Texas
Instruments era pionier în domeniu. Astăzi, această familie conţine atât procesoare în virgulă
fixă, cât şi în virgulă mobilă. Procesoarele pe 16 biţi în virgulă fixă sunt cuprinse în generaţiile:
TMS320C2000 (cu reprezentanţii C24x şi C28x), C5000 (C54x şi C55x) şi C6000 (C62x şi
C64x). Procesoarele pe 32 biţi în virgulă mobilă sunt cuprinse în generaţiile: C3x, C4x şi C7x.
7
Procesoarele din aceeaşi generaţie ale familiei TMS320 au aceeaşi arhitectură de bază, dar
posedă configuraţii diferite ale memoriei pe cip şi a perifericelor.
Urmând o strategie orientată spre utilizator şi spre cerinţele sale, TI a ajuns să realizeze şi
să ofere cea mai largă linie de procesoare DSP de uz general într-un singur cip şi să aibă cea
mai extinsă reţea de utilizatori experimentaţi. Aceasta se datorează nu numai aplicării celor mai
avansate tehnologii şi arhitecturi, ci, în primul rând, suportului eficient şi complex creat şi oferit
pentru fiecare processor DSP, care cuprinde:
• sisteme de dezvoltare hardware şi software de înaltă calitate;
• asistenţă tehnică permanentă (telefonic, sau direct la utilizator);
• buletine de informaţii, ghiduri de utilizare, cărţi;
• mii de pagini de note de aplicaţii;
• un volum impresionant de cod sursă oferit gratuit.
Toate acestea sunt completate cu produse şi servicii oferite în domeniul prelucrărilor
numerice de semnal cu procesoare TI de către peste sute de alte firme (third-party). De
asemenea, se poate observa faptul că la realizarea setului de instrucţiuni au contribuit şi
specialişti din domeniul calculului numeric, deoarece se regăsesc instrucţiuni care sunt necesare
unor proceduri de calcul standard.
Familiile de procesoare se caracterizează şi printr-un grad ridicat în ceea ce priveşte
paralelismul operaţiilor aritmetice şi al celor de transfer. Procesoarele dispun de magistrale
multiple care permit calculul paralel, încât pot exista situaţii în care structurile de calcul
realizează peste 11 operaţii în acelaşi timp.
O altă caracteristică întâlnită la aceste procesoare se referă la faptul că starea perifericelor
poate fi cunoscută în orice moment, iar sincronizarea activităţii acestora se poate programa în
prealabil.
Arhitectura TMS32010 şi setul de instrucţiuni a fost proiectat pentru a maximiza puterea
de calcul şi flexibilitatea printr-o tehnologie de integrare la o frecvenţă a ceasului de 5MHz,
1982. Astăzi, unul dintre cele mai rapide procesoare al familiei, C64x, dispune de o viteză de
execuţie de până la 1GHz, ca urmare a îmbunătăţirilor tehnologice şi ale arhitecturii
implementate şi a unor cicluri de ceas mai rapide. Îmbunătăţirile aduse arhitecturii pentru a o
face independentă de viteza ceasului se bazează pe multiple unităţi de calcul de tip înmulţire-
adunare (MAC - Multiply-Add Computation), pe o intensivă implementare a operaţiilor paralele,
pe o memorie mai mare şi mai rapidă cu magistrale interne multiple şi pe introducerea unor
instrucţiuni şi motoare hardware mai puternice şi mai bine adaptate implementării unor algoritmi
DSP de utilitate generală.
Am văzut chiar din Fig.3.1. că un sistem DSP necesită pe lângă procesor şi de două tipuri
de convertoare: unul analog-numeric şi unul numeric-analogic. Fig.3.2. arată modul în care se
constituie un sistem DSP în jurul procesorului TMS320.

8
Fig.3.2. Arhitectura nucleului pentru procesoarele TMS320

Cele două blocuri externe principale necesare sunt memoria (de program şi/sau de date)
şi perifericele. De obicei, procesoarele DSP dispun de o mică memorie cache on-chip, o memorie
de program de tip ROM, memorie RAM şi periferice. Perifericele precum convertoarele A/N şi
N/A pot fi conectate fie la magistrala de date, utilizând adrese dedicate (specifice), fie la interfaţa
serială, dacă cipul dispune de porturi seriale.
În aplicaţiile DSP, procesorul este interfaţat cu lumea externă pentru a efectua transfer de
date. Sunt disponibile mai multe tipuri de dispozitive comerciale de tip I/O. Aceste dispozitive
I/O sunt selectate şi validate prin semnale de control decodificate din magistrala de adrese (biţii
inferiori) şi prin linii de control specifice. Un semnal de control suplimentar este necesar pentru a
distinge între adresarea memoriei şi adresare I/O. Sarcina software-ului este de a stabili adresa
corectă a dispozitivului extern şi de a activa linia de control a transferului I/O.

3.4 Arhitectura generală a procesoarelor DSP


Aşa cum s-a văzut în Fig.3.1, procesorul DSP realizează funcţiile esenţiale de prelucrare
a semnalelor. Dezvoltarea unui sistem DSP eficient se bazează pe: arhitecturile hard şi soft ale
procesorului DSP, transferul datelor, capacităţile sale aritmetice, configuraţiile posibile ale
memoriei, structurile I/O, programabilitatea şi setul de instrucţiuni al procesorului. Arhitectura
procesorului şi algoritmul DSP folosit trebuie să fie complementare. Pentru unele aplicaţii,
algoritmul este dat şi trebuie ales cel mai potrivit procesor care să-l realizeze. Pentru altele,
procesorul disponibil este cunoscut şi sarcina proiectării este de a dezvolta algoritmi eficienţi
care să satisfacă cerinţele aplicaţiei. Scopul este de a dezvolta un algoritm DSP astfel încât să se
utilizeze un minim de resurse ale procesorului, lăsând astfel neutilizate resurse pentru
îmbunătăţiri şi dezvoltări ulterioare.

3.4.1 Introducere
Marea majoritate a procesoarelor DSP sunt proiectate să realizeze operaţii repetitive de
tip MAC (multiply-add computation), precum filtrarea răspunsului la impuls finit (FIR - Finite-
Impulse Response), definită prin relaţia:

9
Calculul ieşirii y(n) necesită parcurgerea următorilor paşi:
1. Aducerea a doi operanzi, bi şi x(n-i) din memorie
2. Înmulţirea lui bi cu x(n-i)
3. Adunarea rezultatului bi*x(n-i) la acumulator
4. Repetarea paşilor 1, 2 şi 3 pentru i=0,1,2,...,L-1
5. Transferul rezultatului y(n) din acumulator în memorie
6. Actualizarea indicatorilor (pointerilor) pentru bi şi x(n-i) şi repetarea paşilor de la 1 la
5 pentru următorul eşantion de intrare.
Arhitectura internă generală a unui procesor DSP este prezentată în Fig.3.3. Această structură
este optimizată pentru operaţiile de filtrare FIR descrise în relaţia (2.1). Marea majoritate a
procesoarelor DSP utilizează blocuri funcţionale similare, deşi interconectarea internă şi
operaţiile efectuate pot varia.
Prin comparaţie cu microprocesoarele de uz general, trăsătura specifică a DSP-urilor
constă în puternicul paralelism utilizat în vederea îmbunătăţirii vitezei de procesare. DSP-urile
dispun de unităţi speciale de prelucrare deservite prin magistrale specifice multiple, multe dintre
acestea putând lucra independent şi în mod complementar. Aşa cum se vede în Fig.3.3, unitatea
logico-aritmetică (ALU - Arithmetic Logic Unit) realizează adunarea, scăderea şi operaţii logice.
Registrul de deplasare este utilizat pentru scalarea datelor, iar multiplicatorul şi acumulatoarele
hardware realizează operaţii MAC. Generatoarele de adrese pentru date (DAGENs – Data
Address Generators) definesc adresele operanzilor utilizaţi în instrucţiuni. Cu aceste resurse
disponibile, procesorul DSP atinge o viteză ridicată de execuţie, realizând operaţiile în aceste
unităţi în mod simultan.
Majoritatea procesoarelor DSP utilizează o arhitectură Harvard modificată, cu două sau
trei magistrale de memorie (una de program şi încă una sau două pentru date). Este facilitat astfel
accesul simultan la coeficienţii filtrului şi la semnalul de intrare în acelaşi ciclu de ceas. Totuşi,
utilizarea arhitecturii Harvard crează unele dificultăţi în scrierea programelor în C care utilizează
întreaga capacitate a structurii MAC şi a accesurilor repetate la memorie.

10
Fig.3.3. Arhitectura generală a unui procesor DSP

3.4.2 Operaţii efectuate de unitatea centrală


Se vor prezenta succint funcţiile principale ale unităţii centrale de prelucrare (CPU) a
procesoarelor DSP. Multe dintre aceste funcţii sunt comune cu cele ale microprocesoarelor de uz
general, cu excepţia unităţii/unităţilor MAC, a registrelor de deplasare, a blocurilor multiple de
memorie împreună cu magistralele care le deservesc şi a puternicelor generatoare de adrese
pentru date.

Multiplicarea cu acumulare
Operaţiile de înmulţire necesită mai multe cicluri de ceas într-un microprocesor sau
microcontroler, acolo unde ele sunt efectuate prin operaţii repetate de deplasare şi sumare. Pentru
a atinge viteza cerută de algoritmii DSP bazaţi pe multiple operaţii de înmulţire (vezi de exemplu
filtrarea FIR din relaţia (2.1)), procesoarele TMS320 utilizează un multiplicator hardware cu
operare paralelă, care poate înmulţi doi termeni (date) într-un singur ciclu de ceas. În acelaşi
timp, un sumator plasat imediat după multiplicator adună rezultatul înmulţirii anterioare la
conţinutul unui acumulator cu dublă-precizie. Unele procesoare, precum C55x, dispun de două
unităţi MAC şi 4 acumulatoare de 40 biţi. O serie de instrucţiuni specifice care pot realiza
înmulţirea, acumularea, deplasarea datelor şi operaţiile de actualizare a pointerilor (indicatorilor)
într-o singură instrucţiune sunt prevăzute pentru algoritmii de filtrare şi de corelare. Aceste
instrucţiuni se bazează pe arhitectura paralelă pentru a realiza o execuţie foarte rapidă.

11
Unitatea logico-aritmetică (ALU)
Operaţiile aritmetice de bază realizate de procesoarele DSP sunt adunarea, scăderea, etc.
Unitatea logică realizează operaţii logice booleene, precum AND, OR şi NOT, asupra biţilor
individuali ai unui cuvânt de date şi execută deplasări logice ale întregului cuvânt de date. Atât
blocul logic, cât şi cel aritmetic, sunt cuprinse de obicei într-o singură unitate ALU. Împărţirea
binară este de obicei implementată printr-o rutină software deoarece ea necesită o serie repetată
de operaţii de deplasare şi de scădere condiţionată.

Registrele de deplasare (shifter-ele)


Registrele de deplasare utilizate pentru operaţii de scalare sunt acţionate de instrucţiuni
specifice de deplasare. Shifter-ul poate fi utilizat pentru prescalarea unui operand din memoria
de date sau din acumulator înaintea unei operaţii ALU, sau pentru postscalarea valorii din
acumulator înaintea stocării rezultatului în memoria de date. În plus, shifter-ul realizează şi o
deplasare logică sau aritmetică a valorii din acumulator. De exemplu, shifter-ul lui
TMS320C5000 poate produce o deplasare spre stânga de la 0 până la 31 biţi şi o deplasare spre
dreapta de la 0 până la 32 biţi a datelor de intrare într-un singur ciclu.

Paralelismul
Instrucţiunile care controlează operaţiile efectuate de un procesor DSP necesită mai mulţi
paşi pentru a fi executate. Mai întâi, este generată adresa instrucţiunii, iar conţinutul locaţiei de
memorie program de la adresa indicată este citit şi decodificat. În funcţie de instrucţiunea
decodificată, unul sau mai mulţi operanzi sunt extraşi pentru a dispune de datele cerute de
instrucţiune. În sfârşit, rezultatul este stocat, iar adresa următoarei instrucţiuni este calculată.
Fiecare instrucţiune poate necesita mai multe cicluri de ceas pentru a executa mai mulţi paşi de
preextragere, decodificare, extragere operand, execuţie şi scriere a rezultatului. Aceşti paşi pot fi
executaţi succesiv în structuri paralele.

În concluzie, DSP-urile se bazează pe nuclee de arhitecturi standard de sisteme cu


microproceosre (CPU, RAM, ROM, DMA), dar diferența majoră este dată de modul de
organizare/arhitecturare specific unei aplicații sau unei familii de aplicații extrem de dedicată. În
acest context, elemente standard, cum ar fi de exemplu coprocesoare matematice sunt integrate
în mod dedicat în fiecare arhitectură de DSP, conform cu funcțiunile ce se doresc a fi
implementate.
În viziunea mea, un sistem de dezvoltare cu DSP poate fi văzut ca un sistem embedded
(sistem încorporat), care încapsulează, într-o arhitectură de sistem cu microprocesor, procesări
foarte complexe, spre deosebire de sistemele embedded în accepțiunea standard, ce încorporează
o soluție de control pentru un proces din lumea reală. Evident că și cu ajutorul DSP-urilor, pot fi
implementate soluții de control, transformându-se în sisteme embedded standard, numai că
performațele de prelucrare, ca timp real, ca viteză de prelucrare, complexitate de prelucrare sunt
greu de obținut cu o structură cu microcontroler. Mai nou, producătorii de microcontrolere încep
să introducă în nucleele hardware a acestora și blocuri minimale de tip DSP, dar tehnologia este
în plină dezvoltare. Această idee se gasește în produsele acestor firme sub denumirea sintetică a
familiilor de circuite de tipul “DSP-Microcontroler”. Ținând cont de posibilitățile de unificare
de tehnologii diferite la nivel de hardware, dar și de dezvoltare software, viitorul are multe de
oferit în această direcție.
12
În concluzie, abordarea la nivel profesional a unei aplicații de automatizare presupune într-o
primă fază alegerea arhitecturii hardware pe care va fi dezvoltată. În funcție de specificul
acesteia, trebuie ținut cont de următoarele aspecte legate de arhitectura principială a sistemului
de procesare:
➢ Sistem cu microprocesor:
• aplicație de complexitate mare,
• de dimensiune mare,
• contrângeri de timp real relaxate
De Exemplu: Sistemul DCS-Ovation al firmei Emerson ce controlează un grup energetic (9000
de puncte de măsură) de la Termocentrala Rovinari.
➢ Sistem cu DSP
• aplicație cu prelucrare foarte complexă,
• dimensiunea nu foarte mare,
• contrângeri de timp real foarte stricte
De Exemplu: Mentenanță predictivă pentru rulmenții unui motor electic de putere mare prin
prelucrarea semnalelor de vibrații. Practic se extrag din semnalele de vibrație Axiale, Verticale,
Orizontale informații de tip bilă spartă, carcasă interioară spartă, carcasă exterioră spartă,
rulment ne-uns, rulment cu vaselină în exces, grade de uzură, etc.
➢ Sistem cu microcontroler
• aplicație de complexitate mică,
• dimensiune mică,
• contrângeri de timp real stricte,
De Exemplu: Computerul de injecție la un automobil.

La toate acestea se adaugă o nouă tehnologie/arhitectură de sistem, bazată pe tehnologia


circuitelor FPGA (…va fi prezentată intr-un capitol viitor), care rezolvă cu adevărat și în mod
real o prelucrare complexă în timp real, ce este net superioară celor 3 tipuri de abordări
anterioare.

Observație: Aspectele prezentate sunt pur principiale și nu există o delimitare foarte clară între
tipurile de aplicații, dar o abordare profesională ar trebui să țină cont de acestea. Cum o soluție
de control automat nu este unică, așa și abordarea nu este unică. Astfel putem realiza aplicații
de baze de date cu microcontrolere, sau computer de injecție la un automobil cu calculatorul
PC, etc. aplicații ce pot chiar să funcționeze corespunzător. Asta nu înseamnă că am
arhitecturat cea mai bună soluție hardware pentru aplicația noastră, dar se poate...

13
Cap.4. Prezentarea principiului unor structuri distribuite şi ierarhizate
de achiziţie de date şi control bazate pe multiprelucrare
OBS: Introducerea din acest capitol se adresează mai mult studenților masteranzi
care nu au absolvit specializarea Automatică și Informatică Aplicată
La momentul actual începe să se încetăţenească ideea (puţin improprie) de
traductoare şi elemente de execuţie numerice. Schema-bloc principială este
prezentată în Fig.4.1. Ca idee, elementul sensibil este influenţat direct de către
mărimea fizică de proces. Semnalul respectiv este prelucrat de adaptorul analogic
şi după aceea este prelucrat de către un element de prelucrare numerică. Astfel,
informaţia despre mărimea fizică respectivă este tradusă direct într-o mărime
numerică ce este apoi transmisă blocului următor-> interfaţa hardware de proces.
Într-un mod asemănător stă lucrurile şi în cazul elementelor de execuţie.

Senzor Adaptor Element de Port


(Element de prelucrare de

Interfaţa hardware de proces


sensibil) semnal numerică comunicaţie

Traductor
Proces fizic Proces Proces Proces

Element de Adaptor Element de Port


acţionare analogic prelucrare de
fizic numerică comunicaţie

Element de Execuţie

Fig.4.1.Structura principială a unui traductor şi element de execuţie numeric

Datorită prezenţei “elementului de prelucrare numerică” la nivel de traductor


şi element de execuţie, se poate susţine ideea de traductor şi element de execuţie
numeric. Denumirea este puţin improprie, deoarece în general, blocul element de
prelucrare numerică se găseşte de obicei în nivelul superior, adică în interfaţa
hardware de proces. Totuşi, datorită faptului că elementul de prelucrare numerică
are ca funcţiuni principale cele legate de mărimea fizică măsurată sau acţionată, se
poate considera ca făcând parte din nivelul de jos, adică nivelul de proces. Având
această abordare, complementată de flexibilitatea unui element de prelucrare
numerică, se poate extinde noţiunea la traductor sau element de execuţie inteligent.
Termenul “inteligent” pentru sistemele tehnice este diferit ca şi conţinut faţă de
termenul inteligent pentru fiinţa umană.
La nivel de traductor, această extensie de limbaj se poate traduce prin
anumite funcţii implementate în aceste elemente de prelucrare numerică. De
exemplu, putem avea funcţii de autocalibrare, funcţii de liniarizare, funcţii de
1
memorare suplimentare, funcţii de reconfigurare a funcţionării, funcţii adaptive on-
line de lucru a traductorului, funcţii speciale(configurate corespunzător) de
alarmare şi protecţii.
La nivel de element de execuţie, elementul de prelucrare numerică poate
implementa funcţiuni diverse, în principiu de adaptare cât mai bună a informaţiei
primită de la interfaţa de proces. În acest sens este cunoscută de exemplu, bucla de
reglare locală pentru un ventil de reglare de capacitate mare, ca în Fig.4.4, unde
comanda primită de la interfaţa hardware de proces trebuie ajustată cu ajutorul unei
bucle de reglare locală cu scopul de a respecta valoarea cursei comandate cu cea
realizată.
Elementul de prelucrare numerică ataşat direct traductorului analogic stă la
baza unui nou concept, cel de protecţie numerică. O parte din vechile protecţii pe
principii pur analogice sunt înlocuite în anumite cazuri cu astfel de protecţii
numerice, care sunt preferate datorită flexibilităţii de implementare, dar şi faptului
că prelucrările de date sunt multiple, adică se pot face diagnoze nu numai asupra
mărimii fizice prelucrate efectiv, dar şi asupra contextului apariţiei defectului.
Structura unui astfel de sistem de protecţii numerice este prezentat în Fig.4.5.
Caracteristica unei astfel de abordări este faptul ca o parte din decizii sunt luate la
nivel jos(foarte aproape de nivelul senzorului) şi sunt transmise prioritar direct
elementului de execuţie şi abia după aceea mai departe către interfata hardware de
proces.
O problemă importantă care trebuie luată în calcul este timpul de răspuns al
unui astfel de traductor numeric(protecţie numerică), deoarece conversia A/N si
N/A poate introduce un timp suplimentar, care trebuie să se încadreze în
specificaţiile procesului(parametrului) respectiv. Prin anumite artificii hardware
sau software se pot respecta cerinţele de “timp real” pentru anumite aplicaţii, dar
pot exista aplicaţii ce nu se preteaza abordării prin protecţii numerice.

Comanda
*

Traductoare Element de Interfaţa


prelucrare hardware
0% Element numerică de proces
100% de
execuţie

Fig.4.3.Structură principială a unui sistem de


protecţii numerice

Fig.4.2.Element de execuţie inteligent

2
4.1.Arhitectura unui sistem de prelucrare numerică
La nivel de schemă-bloc, arhitectura principială a unui sistem de reglare
numerică(buclă de reglare numerică) ce funcţionează în timp real, este următoarea:
Referinta ALGORITM NUMERIC DE REGLARE
(sistem cu microprocesor)
Semnal numeric Limitare
Unitati ingineresti
Normare/Prelucrare 0...100% Denormare/Prelucrare
Semnal numeric
0...4095
CAN12 Demultiplexor numeric
Semnal analogic
Multiplexor analogic
CNA12 CNA12

Semnal analogic Semnal analogic


4...20mA 4...20mA
C.C.S. 0...10V C.C.S. C.A.D. 0...10V C.A.D
0.2...1barr 0.2...1barr

T1 Tn EE1 EEn
Marimi masurate Comenzi
Date preluate din proces Comenzi catre proces
PROCESUL REAL

Fig.4.4

unde elementele componente reprezintă:


T1,...,Tn –Traductoare
E1,...,En – Elemente de execuţie
C.C.S. – circuite de condiţionare de semnal(filtrare, liniarizare, izolare galvanica)
C.A.D. – circuite de adaptare a deciziilor
CAN12 – convertor analog/numeric pe 12 biti
CNA12 – convertor numeric/analogic pe 12 biti
OBS: în industrie, uzual sunt folosite conversii pe 12 biti(în domeniul
0...4095unităţi CAN/CNA=0...100%variaţie a mărimii convertite) si numai pentru
aplicatii speciale conversii pe un numar mai mare de biti
După cum se poate observa din structura de mai sus, implementarea unui
algoritm numeric de reglare are avantajul că are la dispoziţie toate datele
achiziţionate din proces în timp real, deoarece acest nivel este primul nivel după
traductor. Flexibilitatea unui astfel de structuri este dată de faptul că există
posibilitatea modificării algoritmului numeric(la nivel software) fară o modificare
hardware importantă, dacă cerinţele de control a procesului de modifică.

3
Blocurile “NORMARE/PRELUCRARE” şi
“DENORMARE/PRELUCRARE” reprezintă operaţia de transformare a
domeniului mărimii de ieşire din unităţi CAN şi CNA(adică din domeniul 0...4095
pe 12 biti) în unităţi inginereşti(de ex: 0..20000C; 0..380V), sau cel mai probabil în
domenii procentuale 0..100%.
Blocul limitare reprezintă blocul ce adaptează informaţia de ieşire din
algoritmul numeric la condiţiile reale ale procesului(rezultatul poate fi un număr şi
în interiorul sistemului cu microprocesor se pot reprezenta numere destul de mari
în comparaţie cu realitatea semnalului din proces).

4.2.Principiile unui sistem distribuit si ierarhizat


Având la bază microprocesorul, echipamentele numerice pentru conducerea
proceselor industriale au început iniţial să completeze, iar la ora actuală să
înlocuiască tot mai mult echipamentele analogice. Unul dintre avantajele acestor
echipamente numerice, pe lângă flexibilitatea legată de acţiunea de conducere a
proceselor, este şi faptul că se pot interconecta foarte uşor unul cu altul prin linii de
comunicaţie în construcţie industrială. Pornind de la acest lucru, pentru asigurarea
cerinţelor legate de siguranţa în funcţionare, creşterea fiabilităţii sistemului de
conducere, creşterea vitezei de prelucrare a informaţiilor din ce în ce mai
complexe, conducerea optimală a proceselor industriale, s-au construit sisteme
distribuite şi ierarhizate de conducere. Principiul care stă la baza acestui concept
este reliefat în Fig.4.5.

Distribuirea –prelucrării informaţiei

Sistem Ierarhizarea
distribuit şi prelucrării
ierarhizat informaţiei

Distribuirea -achiziţiei de date şi comenzilor către proces

Subproces 1 Subproces 2................................................................Subproces n


Proces tehnologic

Fig.4.5.Structura principială a unui Sistem Distribuit şi Ierarhizat


Împărţirea unui proces complex în subprocese(distribuirea) se realizează în
conformitate cu elementele grupate funcţional ale procesului, dar în primul rând
pentru a se respecta restricţiile de timp real. Prin prelucrarea în paralel de către mai
multe sisteme cu microprocesor(realizate chiar cu procesoare mai slabe) a
4
informaţiilor din proces, se obţine un timp total de prelucrare mai mic(se tinde
către respectarea restricţiei de timp real) şi totodată se obţine o reducere a
complexităţii echipamentului, ceea ce conduce la o fiabilitate mai mare pentru
echipamentele de automatizare în ansamblu. Sistemele distribuite sunt proiectate
pentru a menţine avantajele ambelor tendinţe oponente care au marcat în mod
alternativ evoluţia sistemelor de automatizare – centralizarea şi descentralizarea.
Sistemele de control distribuite reprezintă unul din cele mai profitabile
compromisuri între aceste două abordări.
Dezvoltarea fără precedent a unor sisteme de comunicaţie industriale cu o
fiabilitate foarte ridicată a generat posibilitatea de distribuţie a controlului, printr-o
împărţire a sarcinilor la mai multe procesoare ce prelucrează independent şi în
paralel informaţia provenită direct din proces(în timp real). Aceste avantaje au
condus la posibilitatea controlului în ansamblu al unui proces industrial complex-
mare ca un tot unitar. Sistemele de automatizare distribuite au apărut la graniţa
dintre două domenii aparent opuse din punctul de vedere a procesării de date:
sistemele de achiziţie de date şi reţelele de comunicaţii. În această idee(prelucrare
paralelă) se micşorează semnificativ timpul de execuţie la nivelul aplicaţiei, ceea
ce are rezultate semnificative în respectarea cu o mai mare siguranţă a cerinţelor de
timp real, specifice proceselor industriale reale.
Ierarhizarea algoritmilor de prelucrare a informaţiei pe verticală se
realizează în sensul că algoritmii complecşi(consumatori de timp) se depărtează de
conducerea directă a procesului, pe când algoritmii mai simpli sunt mai aproape de
nivelul conducerii directe a procesului. O posibilă structură distribuită şi ierarhizată
pe 5 nivele este prezentată în Fig.4.6.

Nivel 4 Sistem de calcul


Planificare Producţie central

Nivel 3
Sistem de calcul Coordonare şi Sistem de calcul
coordonator Conducere Producţie coordonator

Nivel 2
Sistem de calcul Sistem de calcul Supraveghere, Sistem de calcul Sistem de calcul
supervizor supervizor Supervizare Proces supervizor supervizor

Nivel 1
Sistem Sistem Sistem Reglare, Alarmare, Sistem Sistem
cu µP cu µP cu µP Protecţie cu µP cu µP

Traductoare şi Elem.de Execuţie Nivel 0 Traductoare şi Elem.de Execuţie


Nivel de Câmp
Subproces tehnologic 1 Subproces tehnologic n

Fig.4.6. Structură Distribuită şi Ierarhizată de conducere structurată pe 5 nivele

5
În cadrul acestei structuri se poate observa modularitatea ansamblului, în
care comunicaţia între echipamente de acelaşi nivel şi între nivele se realizează
prin magistrale specializate tocmai pentru a creşte viteza de vehiculare a
informaţiei. Prin această conducere distribuită se asigură o distribuţie a sarcinilor şi
totodată o specializare a echipamentelor sau programelor de conducere, ceea ce
permite prelucrarea în paralel a informaţiei, conducând la creşterea vitezei de lucru
a ansamblului. Deşi viteza de lucru a procesoarelor a ajuns să fie destul de mare,
adică timpi de prelucrare foarte mici, totuşi creşterea vitezei de prelucrare a
ansamblului ce formează un proces complex nu se mai poate face decât prin
prelucrarea distribuită şi realizarea în paralel a mai multor sarcini. Pentru realizarea
acestor cerinţe, odată cu dezvoltarea sistemelor numerice bazate pe o structură
monoprocesor sau multiprocesor, s-au dezvoltat arhitecturi de sisteme ierarhizate şi
distribuite cu mai multe sisteme de calcul grupate pe mai multe nivele ierarhice.
Fiecare nivel, conform detaliilor prezentate în lucrarea[83], realizează o
categorie de sarcini specifice şi totodată asigură specializarea nivelelor, atât ca
echipamente hardware cât şi ca programe de aplicaţie.
Nivelul 0: Reprezintă nivelul de bază ce corespunde echipamentelor de achiziţie şi
prelucrare primară a semnalelor(datelor) şi elementele de execuţie ce intervin
direct în instalaţia tehnologică. Aceste echipamente asigură informaţiile necesare
funcţionării celorlalte nivele şi transmit comenzile elaborate direct către instalaţia
tehnologică. De fiabilitatea şi precizia acestor elemente depinde funcţionarea
tuturor celorlalte nivele. Datorită faptului că aceste echipamente(traductoare şi
elemente de execuţie) sunt plasate în instalaţia tehnologică, acestea trebuie alese
astfel încât să îndeplinească următoarele cerinţe:
-să aibă o fiabilitate ridicată şi să fie adaptate condiţiilor de lucru specifice în
mediul industrial(umiditate, pericol de explozie, vibraţii, praf, temperatură ridicată,
câmpuri electromagnetice...)
-să fie dublate sau chiar triplate(eventual pe principii diferite de măsură)
traductoarele din punctele importante de măsură ale unui proces ce necesită cerinţe
mari de securitate în funcţionare.
-elementele de execuţie trebuie dotate şi cu elemente de măsură locală
independente pentru a ne asigura că o valoare a comenzii transmise a fost cu
adevărat realizată.
Nivelul 1: Reprezintă nivelul de conducere directă a procesului şi asigură funcţiuni
de reglare automată a parametrilor tehnologici prin bucle de reglare în circuit
închis sau deschis(comenzi secvenţiale) pe baza sarcinilor primite de la nivelele
superioare. Acesta este nivelul care trebuie să asigure conducerea în timp real al
procesului. Din această cauză se preferă controlul unui număr mic de bucle de
reglare cu o aceeaşi unitate cu microprocesor, astfel încât la apariţia unei
defecţiuni, funcţiunile sale să poată fi preluate de către operator(se poate trece pe
comandă manuală) sau de celelalte nivele superioare. Numărul mic de bucle de
reglare se datorează şi faptului că trebuie îndeplinite condiţiile de timp real.
O idee interesantă, este ideea de “Server flotant” într-un sistem distribuit.
Aceasta înseamnă, că pe un acelaşi nivel(şi de obicei pe Nivelul 1), pe lângă
coordonarea primită de la nivelele superioare, poate fi implementată şi o
6
coordonare pe orizontală între echipamentele distribuite, în sensul că, la un
moment dat, unul din procesoare poate prelua facilităţi de coordonare temporare,
atunci când are de executat taskuri mai lente, şi predă controlul coordonării altui
procesor de pe nivelul respectiv care se eliberează temporar de o prelucrare critică.
Astfel, aparent, pare că algoritmul de coordonare se mută permanent în reţeaua
respectivă, iar avantajele sunt semnificative, deoarece se evită comunicaţia cu
nivelul superior(care de obicei este mai lentă) şi se poate realiza în timp real ideea
funcţionării sistemului chiar în condiţiile în care apare o defectare a unei
componente distribuite.
Nivelele 2 şi 3: Prin aceste nivele se asigură procesului determinarea unor condiţii
optime de lucru, prezentând următoarele funcţiuni:
-conducerea optimă a procesului, în principiu bazată pe modele matematice ale
instalaţiilor în regim dinamic sau staţionar.
-se asigură condiţii de performanţă optimă pentru instalaţie în funcţie de restricţiile
globale existente la un moment de timp, sau apărute chiar pe parcursul funcţionării.
-se determină mărimile de referinţă pentru buclele de reglare şi se transmit
nivelului 1.
-se poate realiza conducerea adaptivă la nivel de bucle de reglare bazate pe
estimarea valorii parametrilor procesului, precum şi parametrii optimi ai legilor de
reglare pentru regulatoare şi transmiterea acestora către nivelul 1.
-coordonarea optimă a instalaţiilor tehnologice şi a secţiilor, bazată pe planul de
producţie, materii prime şi consumuri energetice.
-monitorizarea performanţelor instalaţiilor, rapoarte, statistici privind starea
utilajelor şi a reviziilor.
-detectarea şi localizarea defectelor în utilajele tehnologice, în echipamentele de
automatizare, sau în transmisia şi prelucrarea datelor. Detecţia se poate realiza fie
prin compararea valorilor măsurate cu nişte limite date, fie prin simularea
funcţionării bazată pe modelul matematic al instalaţiei şi compararea cu valorile
reale, eventual prin semnale de test trimise către instalaţie şi către echipamentele
de automatizare şi compararea răspunsului cu modelul cunoscut.
Nivelul 4: Acest nivel corespunde managementului tehnic al uzinei şi realizează
funcţiuni legate de gestiunea ansamblului de instalaţii ce prelucrează întregul flux
tehnologic al procesului.
În continuare, se va prezenta principiul arhitecturii de sistem distribuit şi
ierarhizat pe 5 nivele expus mai sus, implementat de către de firma Siemens în
cadrul conceptului propriu TIA(Totally Integrated Automation). După cum se
poate observa în Fig.4.17.[91], echipamentele de automatizare puse la dispoziţie de
firma Siemens oferă o puternică flexibilitate de configurare specifică unei anumite
aplicaţii, ceea ce oferă posibilitatea realizării unui sistem distribuit(pe orizontală)
în scopul realizării cerinţelor de timp real. Totodată, prin arhitecturile de reţele
industriale pe care le are la dispoziţie[11], permite configurarea unei aplicaţii de
automatizare complexă, având şi posibilitatea ierarhizării pe verticală a prelucrării
informaţiei. Conceptul TIA se referă la posibilitatea realizării cu echipamente
Siemens a tuturor nivelelor necesare unei arhitecturi de sistem de automatizare
ierarhizat şi distribuit. Această cerinţă a fost dezvoltată în idea realizării unei
7
configuraţii unitare, a unui efort minim de programare şi configurare, ceea ce se
traduce prin faptul că echipamente diferite, plasate pe diferite nivele ale sistemului
distribuit şi ierarhizat pot să comunice între ele(“să se înţeleagă”) în timp real şi
fără a realiza blocaje ce pot fi catastrofale în anumite situaţii. Această comunicaţie
între echipamente inteligente(echipamente bazate pe un nucleu cu microprocesor)
se realizează prin intermediul unor configuraţii de reţele industriale, cum ar fi:
-Industrial Ethernet(IEEE 802.3)-este un standard industrial bazat pe
standardul internaţional Ethernet putându-se construi o reţea puternică de
comunicaţii peste o arie extinsă geografic.
-Profinet(IEC 61158/61784)-arhitectura deschisă de standard industrial
Ethernet pentru automatizări, ce permite comunicaţii în timp real cu nivelul de
conducere directă a procesului şi totodată integrează şi nivelul de gestiune şi
planificare a producţiei.
-Industrial Wireless LAN(IEEE 802.11)-standard industrial pentru
comunicaţii wireless bazat pe standarde internaţionale.
-Profibus(IEC 61158/61784)-standard industrial pentru nivelul de câmp,
care este un lider mondial pentru sistemele de tip Fieldbus. Acest standard permite
comunicaţia între echipamente de pe nivelul de conducere directă a procesului,
având facilităţi de timp real şi siguranţa comunicaţiei.
-IO-Link-standard pentru conectarea traductoarelor şi elementelor de
execuţie inteligente din nivelul de câmp, cu nivelul superior.
Standardizarea protocoalelor de comunicaţie permite totodată inserarea în
arhitectura sistemului distribuit şi a altor echipamente NON-Siemens, de la
traductoare şi elemente de execuţie inteligente până la echipamente de calcul care
nu sunt în portofoliul Siemens. Aceasta înseamnă că arhitectura distribuită de
echipamente Siemens se încearcă a fi una deschisă(Open Arhitecture), şi nu una
proprietar care să fie specifică numai propriilor echipamente.

8
(Nivelul 4 Planificare)

(Nivelul 3 Organizare)

(Nivelul 2 Operare)

(Nivelul 1 Control Direct)

(Nivelul 0 de câmp)

Fig.4.7.Conceptul TIA(Totally Integrated Automation) 2016. Configurarea unei aplicaţii ierarhizată şi distribuită cu echipamente Siemens
9
4.3.Cloud Computing
4.3.1.Introducere
Conceptul de cloud computing a fost enunţat în anul 1961 de profesorul John
McCarthy, care a sugerat că o tehnologie de partajare temporală a resurselor unui
calculator ar putea duce la implementarea unui model de afaceri în care anumite
aplicaţii ar putea fi vândute ca servicii utilitare. Popularitatea acestei tehnologii a
crescut în ultimii ani, pe măsură ce o paradigmă computaţională a fost dezvoltată,
prin care se oferă acces mai multor departamente IT şi mai multor utilizatori la
server virtualizate.
Cloud computing este un concept global. Diferenţa între acest lucru şi noţiunea
de Internet global, este ca Internetul oferă globalizare doar legăturilor de
comunicare deja stabilite şi negociate, pe când cloud computing oferă acces la
resurse nelimitat. Deşi încă la începuturi, cloud computing devine foarte important
în contextul în care mediile IT actuale sunt nevoite să crească capacităţile sau să
adauge capacităţi noi în mod dinamic infrastructurilor existente, fără investiţii
majore în achiziţionarea de echipamente noi. Soluţia cloud computingului pentru
aceste necesităţi este o arhitectură care se axează pe utilizarea unui anumit serviciu
şi nu pe serviciu în sine.
Din punct de vedere topologic o soluţie cloud computing este compusă din mai
multe componente, fiecare cu un rol important în oferirea unei aplicaţii de tip
cloud:
➢ clienţi
➢ centrul de date
➢ servere distribuite

Internet

Centre de Date
Servere Distribuite
Clienți

Fig.4.8.Topologia cloud computing


Clienţii sunt dispozitivele prin care utilizatorii interacţionează cu informaţiile din
cloud. Printre caracteristicile importante ale clienţilor se numără:
➢ cost hardware scăzut
➢ securitatea datelor
➢ consum de putere redus.
Centrele de date reprezintă colecţia de servere pe care aplicaţia dorită este
găzduită. Din punct de vedere al infrastructurii există mai multe metode de
integrare. Aceasta este dependentă de aplicaţie şi modul în care providerul doreşte
să construiască soluţia cloud. Acesta reprezintă un avantaj al cloud computingului.
10
Virtualizarea completă este o tehnică prin care o instalare completă a unei
maşini este rulată în cadrul altei maşini. Rezultatul este un sistem în care tot
software-ul rulat pe server este localizat în cadrul maşinii virtuale. Virtualizarea
completă oferă avantaje cum ar fi partajarea unui sistem hardware între mai mulţi
utilizatori, izolarea mai multor utilizatori intre ei, precum și de controlul
programului, emularea hardwareului pe o altă maşină. Paravirtualizarea permite
mai multor sisteme de operare să ruleze pe un singur dispozitiv hardware în acelaşi
timp prin utilizarea eficientă a resurselor gazdei, cum ar fi procesor, memorie etc.
Paravirtualizarea este avantajoasă în cazul recuperării în urma unui dezastru,
migrare, administrarea capacităţii.
Termenul de serviciu este un concept care permite reutilizarea unor anumite
componente în cadrul infrastructurii unei companii. Printre caracteristicile unui
serviciu se numără scalabilitate, partajare de resurse, independenţa dispozitivelor
etc.

4.3.2.Evoluţie
Cloud computingul are ca predecesori arhitecturi de tip client-server şi peer-
to-peer. Tot conceptul este de fapt modalitatea prin care stocarea centralizată
facilitează colaborarea şi cum un grup de calculatoare lucrează împreună pentru a
mări puterea computaţională.

Arhitectura client-server
În acest tip de arhitectură toate aplicaţiile software şi datele se află în cadrul
unor servere. Pentru ca un utilizator să acceseze resursele respective era necesar ca
acesta să se conecteze la serverul respectiv, să obţină acces şi drepturile necesare şi
apoi să efectueze operaţiile dorite prin „închirierea” programului respectiv.
Utilizatorii se conectează prin intermediul unui terminal, care nu are multă
memorie, spaţiu de stocare sau putere de procesare. Este doar un dispozitiv care
permitea clientului să se conecteze la server. Accesul nu este imediat şi nici nu este
posibil ca mai mulţi utilizatori să acceseze aceeaşi resursă simultan.
Din această cauză arhitectura client-server, deşi similară cu cloud computing
prin stocarea centralizată, are ca diferenţă majoră lipsa de concentrare asupra
utilizatorului.
Partajarea resurselor
În cadrul arhitecturii client-server, serverul reprezenta o posibilitate de blocaj
în sistem, deoarece orice comunicare între clienţii reţelei trecea prin server. A
apărut astfel nevoia de conectare directă între clienţi. Arhitectura peer-to-peer
defineşte o topologie de reţea în care fiecare client are capabilităţi şi
responsabilităţi egale. Astfel, fiecare calculator este pe rând client şi server
permiţându-se astfel schimbul de resurse şi de servicii direct.
Controlul este descentralizat, conţinutul fiind dispersat printre calculatoare
diferite.
Cea mai notabilă implementare a acestei arhitecturi este Internetul în starea
iniţială. Mesajele erau propagate între calculatoare. În starea actuală, fiecare site de
11
pe Internet, este servit de un grup de calculatoare, iar vizitatorii folosesc softuri
client (navigatoare web) să îl acceseze. Aproape tot conţinutul este centralizat, tot
controlul este centralizat, iar clienţii nu au autonomie sau control asupra
procesului.

4.3.3. Arhitectura proceselor

Procesare de tip grid


Acest tip de arhitectură este cea mai uşor de integrat arhitectură care poate fi
migrată în cloud. O astfel de arhitectură solicită puternic procesorul, însă îşi
împarte procesele sale în bucăţi mai mici ce sunt executate izolat.

Fig.4.9. Arhitecura de tip grid


În Fig.4.9. este ilustrat procesul de comunicare din cadrul unei astfel de
arhitecturi. Mai întâi un server sau un grup de servere primeşte datele care
trebuiesc procesate, urmând să trimită mai departe mesajul unei cozi de aşteptare.
Alte servere monitorizează coada de mesaje şi aşteaptă ca alte seturi de date să
apară. Când un set de date noi apare, este procesat de primul server care observă
prezenţa setului respectiv şi apoi rezultatul este transmis înapoi în coada de mesaje.
Cele două componente pot opera independent. În cadrul cloud computingului nu
este necesar controlul unui server când nu există date de procesat. De asemenea
numărul de server poate fi scalat pentru a suporta numărul de seturi de date care
sunt destinate unei anumite aplicaţii. Deci, în loc să existe calculatoare fără
activitate, se poate stabili numărul lor dinamic în funcţie de necesităţi pentru a face
faţă unui număr mare de cereri. Acest tip de arhitectură este destinată unui număr
restrâns de pieţe, ştiinţifice, financiare sau altele de scară largă.
Procesare tranzacţională
Un sistem tranzacţional este un sistem în care una sau mai multe părţi ale
datelor de intrare sunt procesate împreună ca o tranzacţie unitară, stabilindu-se
conexiuni cu alte date aflate în sistem. Nucleul unui sistem tranzacţional este
reprezentat în general de o bază de date relaţională care administrează toate
legăturile care compun un sistem.

12
În Fig.4.10. este descrisă dispunerea unui sistem tranzacţional de
disponibilitate ridicată. În cadrul unui astfel de sistem, un server de aplicaţii
modelează datele stocate într-o bază de date şi le prezintă, prin intermediul unei
interfeţe afişate într-un navigator web, iar utilizatorul poate manipula datele
respective după cum doreşte. Majoritatea aplicaţiilor web implementează un astfel
de sistem tranzacţional. Pentru disponibilitate ridicată, componentele pot forma un
grup, iar nivelul logic de prezentare să fie ascuns în spatele unui load
balancer(sistem de planificare si încărcare a aplicațiilor).
Integrarea unui sistem tranzacţional într-un cloud este un proces mai complex
decât integrarea unei arhitecturi de tip grid. Una din cerinţele principale ale unui
astfel de sistem este ca media temporală de eroare a unui server virtual să fie mai
mică decât media temporală a hardware-ului suport. Numărul nodurilor fizice
determină media temporală de eroare, şi din cauza micşorării numărului de noduri
fizice din cloud, acea medie este mai mare pentru oricare nod dintr-un sistem cu
procesare tranzacţională.

Fig.4.10. Sistem tranzacţional


4.3.4. Infrastructura cloud-ului
Clouduri publice
Cloudurile publice sau hibride reprezintă tipul tradiţional de cloud computing,
în care resursele sunt alocate dinamic în funcţie de cerinţe prin intermediul
aplicaţiilor web. Aceste clouduri aparţin unor companii care monitorizează şi
taxează clienţii în funcţie de resursele folosite.

Clouduri comunitare
Cloudurile comunitare presupun împărţirea infrastructurii de cloud computing
între organizaţii din aceeaşi comunitate. Un exemplu ar putea fi toate organizaţiile
guvernamentale dintr-o regiune care pot împarţi o infrastructură pentru a
supraveghea şi administra datele persoanelor care locuiesc în acea regiune.

13
Clouduri private
În acest tip de cloud, infrastructura acestuia este dedicată unei singure
organizaţii, iar accesul persoanelor din afară companiei este strict interzis.
Cloudurile private pot fi de asemenea de două tipuri: clouduri găzduite local,
în clădirea organizaţiei respective şi clouduri găzduite extern într-o locaţie a unei
companii care oferă servicii de cloud computing.

Fig.4.11. Modele de implementare a cloudului

Componentele cloudului
Infrastructura este compusă din clienţi, reţea şi servicii. Un loc foarte important
îl ocupă şi securitatea.

Clienţi
Nivelul client reprezintă modalitatea de interacţiune cu cloudul. Există mai
multe tipuri de clienţi şi fiecare dintre acestea oferă o modalitate diferită de
comunicare cu cloudul. Modul de interacţiune este determinat de nevoile
contextuale şi de limitările pe care fiecare tip de client le prezintă.

Clienti mobili
Gama de clienţi mobili variază de la laptopuri la PDA-uri şi telefoane
inteligente, cum ar fi Iphone sau Blackberry. Posibilităţile de a rula o aplicaţie
robustă de dimensiuni mari pe un telefon mobil sunt momentan reduse, însă
utilizatorii care folosesc laptopuri se pot conecta la cloud şi să acceseze aplicaţii
care se vor comporta ca şi aplicaţii native.
Principalele probleme întâmpinate de clienţii mobili sunt conectivitatea şi
securitatea. Deoarece clienţii se vor conecta la cloud din locaţii diferite, aceştia nu
vor avea o conexiune optimizată şi astfel nu se pot aştepta la viteza egale cu cele
întâlnite la clienţii desktop. Însă nu toate aplicaţiile au nevoie de conexiuni foarte
bune pentru a transfera un volum mare de date(evident NU în timp-real), iar
posibilitatea de a crea aplicaţii de către toată lumea, deschide posibilitatea
dezvoltării unor aplicaţii croite pentru clienţii mobili. O a doua problemă este cea
de securitate, dar există şi un avantaj. Prin natura lor, clienţii mobili pot fi pierduţi
sau furaţi şi astfel datele stocate pe dispozitive sunt vulnerabile, însă daca datele

14
sunt stocate pe cloud şi utilizatorul manipulează doar fişierele de care a avut nevoie
la momentul respectiv, restul datelor vor fi protejate în cazul pierderii/furtului
dispozitivului.

Clienţi “thin”(cu resurse hardware puține)


Clienţii ”thin” reprezintă calculatoare fără hard diskuri, fără DVD-ROM ce pot
afișa/monitoriza doar ce este pe server. Aceşti clienţi se integrează cu un cloud
privat, în care majoritatea aplicaţiilor şi a serviciilor sunt orientate pe interacţiunea
cu cloudul prin accesarea serverelor virtuale. Avantajul acestor clienţi este că sunt
mult mai ieftini, mai uşori de întreţinut şi consumă mai puţină energie decât clienţii
thick.
De asemenea oferă un nivel de securitate ridicat, deoarece nici un fel de date
nu sunt stocate pe dispozitiv. Toate datele sunt stocate în centrele de date sau pe
cloud, astfel că o infiltrare fizică este imposibilă(vorbind pur teoretic).

Clienţi “thick” (cu resurse hardware mai consistente)


Reprezintă în acest motiv majoritatea clienţilor prezenţi, fiind folosiţi pentru
conectarea la cloud. Deşi unele aplicaţii pot fi portate pe cloud, există câteva
programe care trebuie să ruleze pe client. Aceste maşini se pot conecta la servere
virtualizate şi sunt soluţia pentru stocarea fişierelor pe client și pentru rularea unor
programe care nu există pe cloud.
Din punct de vedere al securităţii, aceşti clienţi sunt mai vulnerabili decât
clienţii thin şi mai apare problema de soliditate. Dacă un client thin nu mai
funcţionează, utilizatorul are posibilitatea de a schimba dispozitivul având la
dispoziţie mediul stocat pe cloud. În cazul în care un client thick nu mai
funcţionează, utilizatorul nu mai are posibilitatea de recreere a mediului pe care
lucra, deoarece o parte din date erau stocate și pe dispozitivul respectiv.
Virtualizare serverelor
Virtualizarea este metoda de a rula mai multe sisteme de operare virtuale şi
independente pe aceeaşi maşină fizică. Crearea şi administrarea maşinilor virtuale
poartă numele de virtualizarea platformei. Virtualizarea platformei are loc pe un
anumit calculator de către un program de control. Acest program creează un mediu
simulat care permite dispozitivului să utilizeze programe specifice platformei
simulate, programe ce poartă numele de programe musafire.
Aceste programe, care în multe cazuri reprezintă de fapt sisteme de operare
complete, rulează ca şi cum ar fi instalate fiecare pe un calculator separat. Deseori
mai mult de o maşină virtuală este emulată/simulată pe acelaşi dispozitiv, numărul
lor fiind limitat de resursele hardware ale calculatorului respectiv. Pentru a trata şi
cazul în care programele rulate pe maşinile simulate(emulate virtual) au nevoie de
dispozitivele periferice ale sistemului gazdă, platforma virtualizată trebuie să ofere
suport pentru aceste interfeţe. Tehnologia de virtualizare este o metodă de a reduce
majoritatea costurilor de achiziţie şi mentenanţă hardware, ce pot duce la economii
substanţiale pentru companie.

15
Procesare paralelă
Procesarea paralelă este realizată prin execuţia simultană a instrucţiunilor unui
program, care au fost alocate mai multor procesoare cu scopul de a micşora timpul
de execuţie al programului respectiv. Pentru a creşte performanţele, formele
iniţiale de procesare paralelă, permiteau execuţia întreţesută a mai multor programe
simultan.
Următoarea etapă în procesarea paralelă a fost multiprogramarea. Într-un astfel
de sistem, mai multe programe au dreptul de a utiliza exclusiv procesorul pentru un
anumit interval de timp. Această abordare este cunoscută sub numele de „round
robin” şi este unul din cel mai vechi, simplu şi mai des folosit algoritm de
planificare. De fiecare dată când un proces primeşte control asupra procesorului
are loc o schimbare de context, care induce o solicitare în plus în sistem. În acest
timp utilizatorul are impresia că programele sunt executate simultan. O problemă
caracteristică al acestui algoritm este competiţia pentru resurse.

Procesare vectorială
Următoarea etapă în evoluţia procesării paralele a fost introducerea procesării
multiple. În această abordare, două sau mai multe procesoare împart o slujbă
comună. Primele versiuni ale acestei metode au fost proiectate după principiul de
master-slave, în care procesorul master era responsabil pentru toate procesele din
sistem şi trimitea procesele slave-ului în funcţie de un prag prestabilit, conform
căruia procesele puteau fi mutate pentru a creşte performanţele.
Procesarea vectorială a fost dezvoltată pentru a creşte performanţele de
procesare printr-o funcţionare într-o manieră multitask. Au fost adăugate operaţii
matriciale pentru a permite unei singure instrucţiuni să manipuleze două şiruri de
numere care realizau operaţii aritmetice. Această abordare era avantajoasă în
aplicaţii în care datele erau reprezentate sub formă de vectorială sau matricială

Un exemplu de soluţie open source de cloud computing


Există o multitudine de soluţii open-source de cloud computing, și ca exemplu,
o soluție potrivită este cea oferită de platforma Eucalyptus. Aceasta se pretează
foarte bine în domeniul cercetării dar şi într-un mediu academic.
Eucalyptus este o infrastructură open-source, folosită pentru implementarea
„norilor” din proximitatea infrastructurilor corporative. Această platformă permite
integrarea „norilor” hibrizi şi privaţi destinaţi centrelor de date, fără să necesite o
configuraţie hardware suplimentară la sediile respective.
Integrând tehnologii Linux şi servicii web, care există în infrastructurile IT
existente, Eucalyptus permite clienţilor să creeze „nori” computaţionali adaptaţi
nevoilor specifice ale utilizatorilor. Pe lângă administrarea maşinilor virtuale,
tehnologia este capabilă de o virtualizare sigură atât a reţelei, cât şi a infrastructurii
de stocare din interiorul „norului”. Eucalyptus este compatibil cu mai multe
distribuţii de Linux, printre care se numără Ubuntu, RedHat, OpenSUSE, Debian,
Fedora, CentOS şi se poate integra alături de mai multe tehnologii de virtualizare.
Eucalyptus devine treptat standardul pentru cloud computing, oferind
eficientizare a costurilor şi scalabilitate infrastructurii, care împreună cu securitatea
16
şi controlul infrastructurii companiei client, fac din această platformă aproape o
necesitate în mediul IT din această perioadă.

Tehnologie
Eucalyptus a fost creat astfel încât să fie uşor de instalat şi cât mai maleabil la
reţeaua în care urmează să fie integrat. Cadrul software este unul foarte modular,
combinând diverse servicii web, care inter-operează folosind protocoale standard
de comunicare. Prin acest cadru platforma implementează maşini şi resurse de
stocare virtualizate care sunt interconectate prin intermediul unei reţele de nivel 2
OSI (Open System Interconnect) izolate.
Din perspectiva unei aplicaţii care rulează la nivelul client, interfaţa de
programare a aplicaţiei este compatibilă cu interfaţa AWS (Automatic Warning
System), existând suport atât pentru SOAP (Simple Object Access Protocol este o
specificatie de protocol pentru schimbul de informatii structurate în
implementările serviciilor web sau a rețelelor de calculatoare, cu scopul de a
induce extensibilitate, neutralitate și independență) cât şi pentru
REST(Representational State Transfer). Prin customizare se pot integra şi alte
interfeţe.
Fiecare componentă de nivel înalt a fost implementată ca un serviciu web
independent, având avantajul că fiecare serviciu web expune o interfaţă de
programare sub forma unui document WSDL(Web Services Definition Language),
care conţine atât operaţii care le poate efectua serviciul web respectiv, cât şi
structuri de date de intrare şi ieşire. De asemenea, se pot integra şi particularităţile
existente ale serviciului web, cum ar fi politicile pentru comunicare ce se sigură
între componente.
În Eucalyptus există patru componente de nivel înalt, fiecare cu interfaţa de
serviciu web propie:
• Controlerul de nod care se ocupă cu execuţia, administrarea şi terminarea
instanţelor de maşini virtuale de pe nodul de reţea pe care rulează.
• Controlerul de grup se ocupă cu acumularea de informaţii şi cu programarea
execuţiei maşinilor virtuale de pe anumite controlere de nod, dar şi cu
administrarea instanţei virtuale a reţelei.
• Controlerul de stocare (Walrus) este un serviciu de stocare/interogare, care
implementează interfaţa Amazon S3, oferind un mecanism pentru salvarea şi
accesarea imaginilor de maşini virtuale şi a datelor utilizatorilor.
• Controlerul de nor este punctul de intrare în nor pentru utilizatori şi
administrator. El interoghează agenţii administratori de noduri, ia decizii
legate de planificarea de nivel înalt şi implementează agenţii administratori
de noduri prin efectuarea de cereri către controlerii de grup.

17
Fig.4.12. Arhitecutra Eucalyptus

Controlerul de nod
Un controler de nod se execută pe fiecare nod desemnat pentru acomodarea
maşinilor virtuale. Un astfel de controler interoghează şi controlează software-ul
sistemului, ca răspuns la interogările şi comenzile de control primite de la
controlerul de grup.
Această entitate interoghează nodul pentru a afla informaţii legate de resursele
fizice ale nodului respectiv, cum ar fi numărul de procesoare, dimensiunea
memoriei, spaţiul pe disc, dar şi informaţii legate de starea instanţelor maşinilor
virtuale de pe nodul respectiv. Informaţiile colectate se vor propaga la controlerul
de grup ca răspuns la cereri de tip „describeResource” şi „describeInstances”.
Controlerele de grup administrează instanţele maşinilor virtuale de pe un nod
prin efectuarea de cereri „runInstance” şi „terminateInstance” către controlerul de
nod. După verficarea autorizaţiilor, deoarece doar un administrator al instanţei are
dreptul de a termina instanţa respectivă, şi după confirmarea disponibilităţilor
resurselor, controlerul de nod execută cererea. Pentru a porni o instanţă un
controler de nod efectuează o operaţie de copiere a imaginilor instanţei (kernelul,
sistemul de fişiere de root şi imaginea ramdisk), fie dintr-o sursă la distanţă, fie din
memoria cache locală, creând astfel o nouă intrare în reţeaua virtuală. Pentru a opri
o instanţă, controlerul de nod lansează o cerere către hipervizor de a termina
instanţa maşinii virtuale, acesta ştergând intrarea în reţeaua virtuală şi şterge
fişierele asociate cu instanţa respectivă.

Controlerul de grup
Această entitate se execută în general, pe o maşină din cluster care este
interconectată atât cu un controlerul de nod cât şi cu o maşină pe care rulează
controlerul de cloud. Multe din operaţiile controlerului de grup sunt similare cu
cele ale entităţii prezentate anterior, diferenţa fiind că se adresează mai multor
entităţi.
Controlerul de grup are trei funcţionalităţi:
• Planificare pe controlere de nod a rulării instanţelor primite

18
• Controlează acoperirea reţelei virtuale
• Adună seturi de statistici de la anumite controlere de nod.

Când un controler de grup primeşte un set de instanţe care trebuiesc rulate,


acesta contactează fiecare controler de nod şi atribuie instanţele respective
primului nod care are libere resursele necesare pentru rularea instanţelor.
Când această entitate primeşte o cerere de tip „describeRequest”, ea mai are la
dispoziţie şi o listă cu caracteristici ale resurselor. Pe baza acestei liste se
calculează câte instanţe identice poate rula simultan pe colecţia de controlere de
nod pe care le are în subordine, iar rezultatul este transmis controlerului de cloud.

Controlerul de stocare (Walrus)


Eucalyptus include un serviciu de stocare de date care mitighează (gestionează
o corelare a funcționării) tehnologii de servicii web şi care se poate interfaţa cu
Amazon S3. Walrus implementează REST, prin HTTP, dar şi interfeţe SOAP care
sunt compatibile cu Amazon S3. Walrus oferă două tipuri de funcţionalităţi:
• Utilizatorii care au acces la Eucalyptus pot folosi Walrus pentru a
tranzacţiona date înspre/dinspre cloud.
• Walrus se comportă ca un serviciu de stocare a instanţelor maşinilor virtuale.

Fig.4.13. Schemă logică pentru serverul de stocare


Walrus permite transferul serial de date simultan, oferind garanţia că o copie
consistentă a obiectului manipulat de utilizator va exista, chiar dacă se efectuează
operaţii simultane de citire/scriere pe aceeaşi instanţă a obiectului.
De asemenea Walrus acţionează ca un sistem de administrare a instanţelor
maşinilor virtuale. Kernelul, sistemul de fişiere de root şi imaginea ramdisk sunt
copiate pe Walrus prin utilitare E2 oferite de Amazon. Aceste utilitare realizează
compresii asupra imaginilor, le criptează în funţie de drepturile utilizatorului şi le
divizează în mai multe părţi descrise într-un fişier special. Această entitate
realizează şi verificarea şi decriptarea imaginilor încărcate de utilizatori. Când un
controler de nod efectuează o cerere a unei imagini de pe Walrus, înainte să o
instanţieze pe nod, trimite o cerere specifică care este autentificată după un set de
reguli interne. În urma acestei autentificări imaginile sunt verificate, decriptate şi
19
transferate. Ca o metodă de optimizare, datorată dimensiunii mari a imaginilor
maşinilor virtuale, Walrus menţine un cache cu imagini care au fost decriptate
anterior. Walrus este proiectat astfel încât să fie modular, astfel încât
autentificarea, tranzacţia şi stocarea subsistemelor pot fi customizate în funcţie de
nevoile contextuale.

Controlerul de nor
Resursele virtuale care compun cloudul Eucalyptus sunt administrate de
controlerul de cloud. Această entitate este o colecţie de servicii web care pot fi
grupate, în funcţie de atribuţii, în trei categorii:
• Servicii de resurse, care realizează arbitrarea alocării resurselor, permit
utilizatorilor să manipuleze proprietăţile maşinilor virtuale şi ale reţelei, şi
monitorizează atât componentele sistemului, cât şi resursele virtuale
• Serviciile de date controlează datele sistemului şi oferă un mediu
configurabil pentru utilizator prin care să se formuleze metode de alocare de
resurse
• Serviciile de interfaţă prezintă interfeţele prin care utilizatorul poate
interacţiona cu sistemul, având ca atribuţii autentificarea şi translaţia de
protocol.

Epilog:
După cum se poate observa din prezentarea acestui subcapitol, există o
multitudine de tehnologii specializate anumitor clase de aplicații. Din păcate,
pentru noi, ca ingineri automatiști, pare un păienjeniș de tehnologii software,
DAR, toate au la bază noțiuni standard, multiprelucrare, virtualizare,
controler de nod, controler de grup, etc....
Aceste tehnologii încep să coboare spre zona aplicațiilor de timp-real
specifice aplicațiilor de control abordate pentru procese din ce în ce mai
complexe. Conceptul de cloud computing este o componentă importantă
pentru abordările actuale din noul concept Industry 4.0.

4.4.Internet of Things (Internetul obiectelor)


4.4.1.Sistem de achizitie şi prelucrare complexă în timp real a unui numar mare de semnale
dinamice
Posibilităţile actuale în domeniul achiziției și prelucrării datelor în timp real sunt bazate
pe dezvoltarea unor puteri mari de calcul a sistemelor cu microprocesoare din prezent, pe
dezvoltarea unor unelte consistente la nivel software, la care se mai adaugă o standardizare
complexă a protocolelor de comunicaţie, testare, fiabilizare, validare. Astfel s-a ajuns la evoluţia
fără precedent a aplicaţiilor în direcţia lucrului în timp real şi prelucrărilor complexe. Tehnologia
folosirii circuitelor FPGA în conjuncţie cu diverse arhitecturi de microprocesoare, gestionate de
unelte software foarte dedicate, au condus la sisteme ce gestionează în timp real informaţia şi
evident obtinerea unei soluţii de control cu adevărat evoluată.
O pradigmă actuală și foarte la modă este noțiunea de sistem embedded(sistem
încapsulat), ceea ce se poate rezuma în următoarea frază:

20
După ce soluţia de control proiectată a fost testată şi validată, se trece la proiectarea
sistemului hardware care va încorpora într-un mod foarte dedicat numai soluţia respectivă.

Modalităţi de dezvoltare, testare şi validare a unei soluţii de control în domeniul automotive


Bazat pe aceste arhitecturi hardware flexibile şi unelte software, firma National
Instruments a reuşit să accelereze procesul de proiectare/prototipare, testare, validare a unei soluţii
de control în diverse domenii pe tot lanţul de proiectare, de la concepţie la producţie.
O primă etapă de proiectare a unei soluţii de control este RCP (Rapid Control
Prototyping) care presupune calibrarea unui algoritm de control pe procesul real. În acest fel se
ataşează procesului un sistem de calcul performant (calculator de proces) care va putea prelucra
diverse teste direct pe procesul real pentru a dezvolta o soluţie de control, după care se vor
dezvolta teste complexe pentru validarea acestei soluţii. Platformele deja specializate pentru
această activitate permit chiar translatarea soluţiei software validată, direct în codul maşină
specific unui anumit microcontroler folosit pentru realizarea sistemului de tip embedded care va
încapsula soluţia respectivă.
Datorită faptului că nu există 2 procese identice, este evident că motorul pe benzina de 1,4
L are o dinamică diferită faţă de motorul pe benzină de 1,9 L. Astfel sistemul de testare trebuie
reconfigurat pentru un nou model matematic în cadrul unui nou proiect. Flexibilitatea hardware şi
software a platformelor existente poate susţine cu succes acest lucru şi totodată poate da libertate
proiectantului în dezvoltare. În acest context, platforma dedicată pusă la dispoziţie de firma
National Instruments, NI Powertrain Controls încorporează în mediul de dezvoltare LabVIEW o
arhitectură reconfigurabilă la nivel hardware a sistemului de Intrări/Ieşiri. În acest moment, cel
puţin principial, este cea mai flexibilă platformă, în sensul că permite exercitarea unui control
total de către inginerii din domeniul automotive a aplicaţiei de prototipare şi testare, atât la nivel
hardware cât şi software.

Fig.4.14. Arhitectura sistemului pentru testare şi validare pentru ECU (Electronic Control Unit)

O altă etapă foarte importantă este testarea soluţiei hardware şi software proiectată, etapă
denumită Hardware In the Loop(HIL). Platforma cu arhitectură deschisă şi flexibilă bazată pe
echipamente National Instruments permite configurarea rapidă şi consistentă în funcţie de nevoile
unui proiect inovativ. Acest lucru permite realizarea celor mai complexe teste ale algoritmilor de

21
control deja implementaţi hardware, prin care se emulează, in timp real, condiţiile de funcţionare
a autoturismului. Arhitectura principială este prezentată în Fig.4.15.

Fig.4.15. Arhitectura principială HIL


Scăderea timpului de proiectare, testare, validare a soluţiei de control reprezintă un
parametru extrem de important în contextul creşterii productivităţii la nivel de proiectare.
Ca şi terminologie, sistemele embedded sunt de mare actualitate în domeniul industriei.
Practic, se conectează o arhitectură complexă de sisteme cu microprocesor(microcontrolere, DSP-
uri), de tip calculatoare de proces, la procesul real abordat. Astfel, prin analiza în timp real, se
prototipează software soluţia în conexiune directă cu procesul real, pe o tehnologie principială de
tip Software In the Loop (SIL). După testarea şi validarea soluţiei la nivel de algoritmică şi
evident funcţionalitate software se trece la proiectarea părţii hardware în care să se încapsuleze
doar soluţia respectivă.
Acesta este principiul unui sistem embedded, adică un sistem hardware care să încapsuleze
doar soluţia software validată. Bineânţeles că în continuare intervin specialiştii în testare a unităţii
hardware/software adică ECU (Electronic Control Unit) ce va trebui validată şi fiabilizată ca
unitate independentă, dezvoltând principii de abordare de tipul Hardware In the Loop (HIL).
Partea finală de tipul End-of-Line Test este deja etapa de validări finale ale funcţionalităţilor
procesului real coordonat chiar de unitatea ECU proiectată. După parcurgerea acestei etape se
trece deja la producţia de serie, care reprezintă momentul final la nivel de proiect.
Cel mai important rezultat din cadrul acestui lanţ de proiectare este obţinerea soluţiei de
control la nivel de model matematic sau de algoritm. Chiar se spune în comunitatea inginerilor
automatişti:
“Un inginer automatist nu-şi alege procesul,
ci trebuie să găsească o soluţie de conducere pentru procesul respectiv.”
În acest context, în Fig.4.16 se prezintă structura principială a unui sistem de conducere în
cazul general, structură valabilă în cele mai diverse domenii: inginerie, economic, social, militar,
învăţământ, sănătate, etc.

22
Criterii de Perturbatii
Program calitate
impus Mărimi de
Obiectul conducător Decizii Sistemul de
comandă Obiectul
(Dispozitivul de transmitere şi condus Mărimi de
conducere) aplicare a (instalaţia calitate
REGULATOR deciziilor Output
Comenzi
EE Marimi de automatizată)
IT
executie

Mărimi de
reacție Feed-back

Mărimi
Sistem
măsurate
informaţional
(traductoare)
TR
Alg.de conducere Partea fixă a sistemului de conducere
automată Fig.4.16.Structura unui sistem de conducere automată
Obiectul conducător, prin prelucrarea unui algoritm de conducere pe baza informaţiilor din
proces furnizate de traductor - TR, a mărimii de referinţă şi criterii de calitate impuse, elaborează
decizii care se transmit către elementele de execuţie - EE. Elementele de execuţie aplică aceste
decizii direct procesului sub formă de comenzi.
Deciziile de conducere au ca scop îndeplinirea de către obiectul condus a unui program
impus, în condiţiile îndeplinirii unor criterii de calitate, a satisfacerii unor restricţii de
funcţionare, în condiţiile în care asupra obiectului condus acţionează inevitabil o serie de
perturbaţii. Structura de mai sus este o structură de conducere în circuit închis >>Feed-Back<<
deoarece deciziile aplicate la un moment dat sunt dependente şi de efectul deciziilor anterioare
(reprezentat de mărimile de ieşire ca efect). Aceasta exprimă circuitul închis al informaţiilor prin
mărimile de reacţie: fenomenul de reacţie sau feed-back. Dacă lipseşte legătura de reacţie,
sistemul este în circuit deschis şi se numeşte sistem de comandă.
Un sistem de conducere în structura de mai sus se numeste sistem de conducere automată,
deoarece este capabil sa elaboreze decizii folosind mijloace proprii de informare. Totodată se
poate observa din Fig.4.16. că o parte a structurii de conducere automată reprezintă partea fixă,
iar cealaltă parte este reprezentată de algoritmul de conducere. Partea fixă este reprezentată de
procesul real împreună cu totalitatea traductoarelor şi elementelor de execuţie prezente la nivelul
instalaţiei tehnologice. Denumirea de “parte fixă”, provine din faptul că în activitatea de
proiectare a unei structuri de conducere, procesul real împreună cu elementele de execuţie şi
traductoarele sunt luate ca atare, rezultatul proiectării fiind algoritmul de conducere. Astfel,
algoritmul de conducere este de fapt o parte “variabilă”, în sensul că este o soluţie obţinută în
cadrul unei activităţi de proiectare.
Această soluţie de conducere proiectată pentru un proces real nu este unică şi astfel
proiectarea unei suluţii de conducere “mai bună” pentru acelaşi proces rămâne în continuare o
provocare actuală pentru inginerii automatişti. Datorită faptului că soluţia de control este de fapt
acel algoritm de conducere (“o funcţie matematică”), se poate spune că o structură de conducere
are şi o componentă virtuală în strânsă legătură cu componenta fizică a procesului. Astfel,
structura din Fig.4.17.a) se va transforma în blocul din Fig.4.17.b).

23
Criterii de
calitate Perturbații

Program
impus
Obiectul Sistemul de Mărimi de Obiectul
Decizii
conducător transmitere şi execuție condus
Alg. de control aplicare a (PROCES) Mărimi de
Alg(...) deciziilor IT(...) calitate
EE(...)

Mărimi de
reacție Feed-back Fig.4.17.a).
Mărimi Structura
măsurate unui sistem
(traductoare)
TR(...)
de conducere
automată

Alg.de conducere Partea fixă a sistemului de conducere


automată
Criterii Perturba
de tii Fig.4.17.b).Sc
calitate
hema bloc a
noului proces
Program automatizat
Componenta Componenta
impus Virtuală Reală Mărimi de
calitate
H(…)
Procesul
Automatizat
Conform celor prezentate, procesul automatizat este caracterizat de un model matematic H(…),
iar elementul de execuţie, instalaţia tehnologică şi traductorul, au modelele matematice de forma
EE(…), IT(…), TR(…), ce pot fi compuse în modelul matematic al părţii fixe sub forma:
PF (...) = EE(...)  IT (...)  TR(...) .
Astfel, procesul automatizat (procesul după implementarea structurii de conducere), va fi
caracterizat de un model matematic ce depinde de algoritmul de control şi partea fixă prin relaţia
generică:
 
 
H (...) = f  Alg(...), PF (...) (4.1)
 
 
Exemplificarea acestei relaţii se poate face intuitiv în Fig.3.5, unde se poate observa că procesul
“motorul Diesel” ce era implementat pe un autoturism cunoscut ARO, se transformă într-un alt
proces “motorul Diesel automatizat” ce este implementat pe o maşină Volkswagen TOUAREG
de exemplu. Deşi principiul constructiv este acelaşi (principiul Diesel), avem 2 procese total
diferite la nivelul performanţelor, ce diferă în principal prin Algoritmul de Conducere
implementat în computerul de injecţie la autoturismele actuale.

24
Fig.4.18.Evoluţia performanţelor proceselor
prin implementarea de soluţii de control avansate
Din relaţia generică (4.1), se poate obţine o altă relaţie generică:
 
 
Alg(...) = g  H (...), PF (...) (4.2)
 
 
Relaţia (4.2) exprimă principiul care stă la baza proiectării structurilor de conducere şi exprimă
ideea că Alg(...) -algoritmul de conducere proiectat depinde în mare măsură de ceea ce vrem să se
întâmple cu procesul, adică H (...) , şi cât de bine este cunoscut în realitate procesul PF (...) . Cum
presupunem că ştim ce vrem, adică H (...) este bine definit, problema care rămâne este gradul de
aproximare al părţii fixe (procesul real) cu un model matematic PF (...) . În funcţie de precizia de
modelare a procesului fizic real, Alg(...) -algoritmul de conducere poate influenţa performanţele
obţinute, mergând de la “ceva foarte bun”, până la “ceva foarte prost” sau chiar instabilitate.
De aceea, ca o concluzie foarte importantă, apare ideea că soluţia de automatizare NU ESTE
UNICĂ şi astfel poate fi îmbunătăţită în continuu în timp.

4.4.2.Tehnologii FPGA
Circuitele FPGA (Field Programmable Gate Array) sunt arii de elemente logice
independente, configurabile, interconectate printr-o reţea de rutare şi matrici de comutare
configurabile. Acestea sunt echipamente hardware ce permit de asemenea implementarea de
algoritmi de procesare numerică a semnalelor. Spre deosebire de DSP(Digital Signal Processor)
circuitele FPGA reprezintă soluţii hardware reconfigurabile.

25
Fig.4.19.Arhitectura FPGA

Date Date
de Algoritm.exe de
intrare ieșire

➢ Bloc de Memorie
➢ Configurare Logică Date Date
➢ Procesare Digitală de de
intrare ieșire
➢ Interconexiuni
programabile

➢ Bloc Intrări/Ieșiri
Date Task 1 Date
de de
intrare ieșire
Task 2

Fig.4.20.Arhitectura principială a circuitelor FPGA


comparativ cu
Arhitectura de sistem cu microprocesor

Avantajul principal al FPGA: viteză extrem de mare de procesare complexă pentru o anumită
aplicaţie +determinism la nivel de prelucrare.
Dezavantajul principal al FPGA: implementarea de algoritmi complecşi presupune utilizarea de
circuite FPGA de capacitate mare şi, implicit, consumuri mari de putere în comparaţie cu
implementarea pe procesoare DSP.

În acest context a apărut ideea unei tehnologii de tip SoPC (System on a Programable Chip),
care:
➢ permit dezvoltarea de aplicaţii folosind microprocesoare impreuna cu hardware
programabil realizat în tehnologie FPGA
➢ procesoarele pot fi “hardware” – circuite integrate sau “software” – implementate în
tehnologie FPGA pe aceeaşi arie logică programabilă ce implementează circuitele
hardware.

26
O astfel de tehnologie a fost implementată în urma cu 5 ani de firma National Instruments
pe Platforma NI PAC (Programable Automation Controller), ce se poate programa în mediul de
dezvoltare grafică LabVIEW, şi combină fiabilitatea şi robusteţea automatelor programabile
(PLC - Programmable Logic Controller), cu performanţele unui PC (Personal Computer), cu
flexibilitatea circuitelor FPGA (Field Programmable Gate Array)

Fig.4.21.a) PLC Siemens


Fig.4.22.b) NI PAC CompactRIO

Acest sistem are o construcţie robustă, ce permite plasarea acestuia în mediul industrial în
apropierea procesului fizic. Noutatea pe care o introduce este posibilitatea prelucrării complexe a
semnalelor achiziţionate la nivel hardware, fară a mai fi obligatorie transmitearea semnalului
achiziţionat la distanţă pentru a fi prelucrat de un sistem de calcul puternic. Astfel, rezultatele
prelucrării se obţin în timp real, ceea ce conduce la obţinerea de decizii complexe pentru proces,
tot în timp real.
Arhitectura sistemului prezentată în Fig.4.22. se bazează pe inserarea unui circuit FPGA
între arhitectura de sistem cu microprocesor NI-9074 şi sistemul de achiziţie. In general, o
arhitectură cu microprocesor, presupune o operaţie de extragere instrucţiune din memorie,
decodificare, prelucrare, depunere rezultate în memorie. In contrast, execuţia unei instructiuni la
nivelul unui circuit FPGA se realizează direct la nivel hardware, avînd cel mai mic timp de
prelucrare posibil. Totodată, la nivelul circuitului FPGA se realizează prelucrarea mai multor
canale de achiziţie simultan, ceea ce permite prelucrări de complexitate mare pentru informaţia
eşantionată din procesul real.
Cu tehnologia FPGA se pot dezvolta aplicaţii de achiziţie de date de viteză foarte mare,
procesarea complexă a datelor din proces în timp real, sincronizarea foarte precisă a aplicaţiei în
raport cu anumite evenimente, prelucrarea în paralel (practic simultan) a mai multor semnale
provenite de la senzori plasaţi în instalaţie. Pentru actiunile de control automat, algoritmii de
control avansat se pot rula direct în circuitul FPGA pentru a minimiza întârzierile şi a maximiza
viteza de baleere a buclelor de reglare. Soluţiile actuale de control avansat necesită prelucrări
matematice complexe dar şi execuţie în timp real, unde vine cu un sprijin important această
arhitectură.
Principalul avantaj al platformei este faptul că realizează o combinaţie a modularităţii
canalelor de Intrare/Ieşire, procesare real-time şi programare într-un mediu de dezvoltare de nivel
înalt cum este LabVIEW. Totodată, dezvoltarea aplicaţiei de prelucrare în timp real folosind un
mediu de dezvoltare de nivel superior (cum este mediul de dezvoltare LabVIEW), aduce o
creştere de productivitate la nivel software dar şi implementarea de prelucrări matematice
complexe.
Noutatea pe care o introduce este posibilitatea prelucrarii complexe a semnalului la acest
nivel fară a mai fi obligatorie transmitearea semnalului achiziţionat la distanţă, pentru a fi
27
prelucrat de un sistem de calcul puternic. Astfel rezultatele prelucrării se obţin în timp real, ceea
ce conduce la obţinerea de decizii complexe pentru instalaţie tot în timp real. Totodată se elimină
necesităţile de transmisie şi de stocare a unor mari cantităţi de date (eşantioanele semnalului de
vibraţie) pentru prelucrări complexe ce se vor realiza ulterior. Prelucrarea ulteriara a datelor
stocate evident nu se realizeaza în timp real.

Fig.4.22. Arhitectura PAC- Programmable Automation Controller

28
Organizarea unei aplicatii la nivel software se bazează pe realizarea unui proiect în mediul de
dezvoltare LabView, conform Fig.4.23. care ţine cont de configuraţia hardware.
Corespunzător circuitului FPGA avem fişierul FPGA.vi ce va fi compilat şi încărcat chiar
în circuitul FPGA. Prelucrările complexe ce pot fi făcute sunt: generare semnal, funcţii de
interpolare, control liniar şi neliniar, PID, lucrul cu matrice, funcţii trigonometrice, transformata
Z, transformata Fourier, diverse filtre, bucle temporizate, timere de timp real, funcţii de
comunicaţie, etc.
Fisierul RT.vi, corespunde procesorului ce lucrează în timp real la nivelul sistemului
CompactRIO, ce poate realiza operaţii complexe, specifice procesoarelor CISC. La nivelul
acestui procesor se realizează gestiunea rezultatelor prelucrării de timp real şi obţinerea unor
decizii corespunzătoare şi comunicarea cu un sistem de calcul de pe un nivel superior pentru
coordonare. Pe portul serial RS 232 se poate conecta şi un afisor ce poate afişa diverse informaţii
local.
Fisierul GUI.vi, este instrumentul virtual ce reprezintă aplicaţia rulată pe calculatorul
gazdă. Acesta poate realiza funcţiuni de prelucrare suplimentară a semnalelor eşantionate, a
rezultatelor primite de la sistemul NI CompactRIO, prelucrarea/prezentarea la nivelul unui
sistem SCADA/HMI a informaţiei, gestiunea unei baze de date.

La nivel de
calculator

Fig.4.23.Aplicatia
la nivel software
de achizitie si prelucrare
in timp real

La nivel de circuit FPGA

La nivel de procesor
cRIO
Cu ajutorul configuratorului on-line de la National Instruments se propune o arhitectura,
ca exemplu, ce poate achizitiona un numar mare de semnale de vibratii. Sistemul multicore NI
cRIO-9082 este prezentat în Fig.4.24. şi este organizat în jurul unui procesor dual-core Intel i7,
cu port de ieşire VGA pentru conectare terminale grafice. Sistemul utilizează opţional ca sisteme

29
de operare Microsoft Windows Embedded Standard 7 (WES7) sau LabVIEW Real-Time. În
configuratia propusă se pot insera 8 module de achiziţie vibraţii NI-9234 cu 4 canale fiecare,
ceea ce înseamnă un numar de 32 de semnale de vibraţii achiziţionate. Folosind extensia cu 14
sloturi, se pot insera încă 14 module de achiziţie vibraţii NI-9234 cu 4 canale fiecare, ceea ce
înseamnă 56 de semnale. În total, cu configuraţia propusă pot fi achiziţionate și prelucrate 88
semnale de vibraţii simultan. Noutatea introdusă de sistem este faptul că se obţin prelucrări de
semnale sincrone de vibraţii, ceea ce înseamnă informaţii deosebit de importante şi complete,
despre structura mecanică analizată.
Prelucrare Achiziţie şi Prelucrare

Off-Line On-Line şi Real-Time


Conexiune

la distanţă MXI Express Network

Fig.4.24. Sistemul de achizitie de vibraţii si prelucrare în timp real

La momentul actual, dezvoltarea echipamentelor hardware si software de achiziţie şi prelucrare a


atins un nivel extrem de înalt. Domeniul industrial valorifică din plin aceste evoluţii, iar
performanţa din domeniul auto, feroviar, naval şi aeronautic este vizibilă.
Soluţiile actuale sunt extrem de complexe la nivelul algoritmicii prin puterea mare de
prelucrare a procesoarelor actuale, dar, adevarata puterea provine din posibiltăţile de prelucrare
real-time extrem de complexe a unui volum mare de date. Astfel, având foarte multă informaţie
la dispoziţie în timp real, algoritmii implementaţi conduc la performanţe foarte mari în dinamica
de evolutie a proceselor conduse precum şi în siguranţa şi stabilitatea în funcţionare.
În continuare sunt prezentate diverse arhitecturi ale firmei National Instruments ce
realizează cu adevărat prelucrări real-time.

30
Fig.4.25. Sistemul NI CompactRIO

Fig.4.26.Arhitectura internă a sistemului NI CompactRIO

Fig.4.27.Capabilități ale sistemului NI CompactRIO

31
4.4.3.Principiul și aplicabilitatea IoT
În mare IoT(internetul obiectelor) se bazează pe faptul că toate echipamentele actuale din jurul
nostru se bazează pe câte un sistem cu microprocesor ce evident poate foarte ușor să comunice
cu celelalte, ca în Fig.4.28

Fig.4.28. IoT(imagine preluată de pe site-ul www.ni.com)

Dacă inițial ideea a fost valorificată masiv în aplicații de telefonie mobilă, domotică, etc. tendința
actuală(deja cu un procent mare de implementare) este trecerea spre sisteme industriale, mai
precis, aplicații de timp real valorificate de domeniului Automatică în toate domeniile tehnice
consacrate, ca în Fig.4.29

Fig.4.29. Smart Systems în toate domeniile tehnice consacrate


(imagine preluată de pe site-ul www.ni.com)

Termenul de “Smart”(inteligent) deși este specific doar sistemelor biologice, începe să capete
utilizare tot mai mare:
➢ Smart grid
➢ Smart City
➢ Smart Machines......etc.

32
Toate aceste abordări au în comun ideea de sistem cu procesor care poate comunica cu alte
procesoare din jurul lui.
Totuși, cu toate astea apare problema că nu pot fi prelucrate decât un procent foarte mic de date
din multitudinea de date existente în lumea reală. Practic procesoarele și unitățile de stocare sunt
inundate de volumul mare de date ce trebuie prelucrate. Evident că pe perioada de timp cât se
prelucrează, datele apărute sunt pierdute. În concluzie, cu toată puterea de prelucrare a
procesoarelor actuale nu pot fi prelucrate decât un procent în jurul a 5%.

Fig.4.30. Prelucrarea datelor din lumea reală


(imagine preluată NI-Days 2016)
Totuși, s-a încercat depășirea acestei probleme prin stocarea datelor achiziționate și ulterior
prelucrarea acestora. Cu toate astea procentul de prelucrare (evident off-Line) a crescut doar
undeva în jurul a 10%.

Fig.4.31. Prelucrarea datelor din lumea reală după stocarea acestora


(imagine preluată NI-Days 2016)
Totuși, ideea de conectare au unui circuit FPGA între sistemul de achiziție și procesorul de timp-
real a avut ca efect prelucrarea în timp real a datelor direct la sursa de apariție a lor, iar
rezultatele prelucrării au evident un număr mai mic de octeție ce pot fi vehiculați mai ușor în
spațiul IoT. De exemplu un semnal de vibrație are nevoie de 400.000Eșantioane/Secundă,
achiziție pe 12biți, ceea ce rezultă un număr de 800.000byte(octeți). Rezultatul unei prelucrări la
nivel FPGA poate fi “Sistemul mecanic analizat este OK” sau simplu “OK”, ceea ce înseamnă
cele 2 coduri ASCII, adică 2 Byte(octeți) ce pot fi vehiculați mult mai ușor în soațiul IoT. Astfel
pe baza inovației introdusă de firma National Instruments se poate ajunge la prelucrarea în jurul
procentului de 95% di datele din lumea reală.

Fig.4.32. Prelucrarea datelor din lumea reală folosind și tehnologia circuitelor


FPGA (imagine preluată NI-Days 2016)

33
Epilog:
Principiile IoT au migrat, la ora actuală, foarte mult spre zona industrială, ca aplicații de
timp-real și pot fi puse în evidență foarte multe exemple:
➢ Se cercetează și se lucrează intens în domeniul Automotive ca automobilele să
comunice între ele și să ia decizii. Ideea se extinde rapid în domeniul aviatic, mașini
agricole.....
➢ La nivelul unei fabrici utilajele se sincronizează între ele pentru a realiza diverse
prelucrări, așteptând unele după altele sau optimizând consumul de energie sau timpii
de prelucrare totali. De exemplu acolo unde pe o linie tehnologică sunt multe motoare
mari, ele pot fi pornite în cascada în momentul când produsul prelucrat a ajuns la
postul de lucru respectiv. pornirea simultană introduce armonici în sistemul energetic
cu costuri/pierderi imense

4.5.Conceptul firmei Siemens: Totally Integrated Automation

Noțiuni generale
Noțiunea de automatizări industriale a căpătat valențe greu de imaginat în urmă cu 10 ani.
Multitudinea de echipamente de procesare, traductoare și elemente de execuție existentă pe piață
conduce la o problemă foarte mare, legată de interoperabilitatea, conectarea și comunicarea
acestora. Totodată procesele abordate sunt din ce în ce mai complexe și au nevoie de informații
de la cele mai diverse traductoare. Chiar dacă s-a încercat o anumita standardizare de-a lungul
timpului, datorită evoluției exponențiale de echipamente din punct de vedere tehnic a fost
perpetuată acestă problemă. Conceptul TIA (Totally Integrated Automation) dezvoltat de firma
Siemens încearcă să rezolve acestă problemă. Astfel, Siemens încearcă să ofere echipamente la
nivel hardware, de la traductoare, elemente de execuție până la sisteme de calcul care să acopere
o plaja foarte largă de aplicații, dar care să comunice între ele într-un mod sigur, eficient, în
timp-real. La o primă vedere, acest lucru ar însemna că “te cam forțează să cumperi numai de la
ei”. Totuși, Siemens nu exclude ceilalți producători deoarece furnizează drivere software pentru
conectarea și a altor echipamente conform standardelor actuale, dar nu garantează(și nu au cum
să facă asta) eficiența unei comunicații cu echipamente NON-Siemens.
În general orice echipament Siemens este de cel mai multe ori cam de 10 ori mai scump
decât orice alt echipament similar produs de altă firmă. Totuși, prin abordarea unei aplicații
complexe de automatizare distribuită și ierarhizată folosind echipamente Siemens, prețul total
poate să fie chiar mai mic. Acest lucru de datorează chiar optimizărilor la nivel de eficență în
comunicații(rețele industriale), traductoare și elemente de execuție inteligente care se conectează
direct în rețea, optimizări la nivel de mentenanță (identificare de defecte funcționale),
ierarhizarea echipamentelor hardware pe nivelele consacrate ale sistemului ierarhizat, timp-real
global foarte bun, etc. Acest lucru se repercutează în eficiență și productivitate la nivelul
mediului industrial, deoarece se elimină timpi de staționare accidentală deoarece s-a blocat o
comunicație între 2 echipamente create de 2 furnizori diferiți. Totodată, în mediul industrial este
nevoie de o anumită flexibilitate în reconfigurarea unei aplicații în funcție de un nou produs care
se realizează. De exemplu în industria de autoobile se realizează un model nou la fiecare cîteva
luni.
Principalele avantaje ale implementării unei aplicații complexe mari bazată pe acest
principiu ar fi:
➢ Eficiență în proiectarea unei aplicații de control distribuită și ierarhizată cu avantaje de timp
scurt de realizare și costuri reduse
➢ Minimizarea timpilor de întreruperi în funcționarea procesului prin funcții de diagnosticare
integrate
➢ O mare flexibilitate prin sistemul de comunicație integrat

34
➢ Securitate la nivel de rețea și proces prin funcțiile de securitate integrate direct în
echipament
➢ Protecția personalului, a utilajelor și mediului prin funcțiile de securitate integrate
➢ Creșterea calității activității de control/reglare prin consistența datelor(Orice sistem de
control se bazează pe informații obținute de la anumiți senzori sau direct din rețea.
Informații necalibrate sau care nu sunt disponibile în timp real mai mult încurcă decât să
ajute un sistem de reglare)
➢ Performanțe de ansamblu mărite prin interoperabilitatea componentelor de sistem ce a fost
testată în prealabil de Siemens

Conform principiului că o arhitectură de sistem cu microprocesor, pentru a lucra în timp real,


este proiectată dedicat pentru anumite taskuri, la fel și în cazul echipamentelor Siemens partea
hardware și software este dimensionată optim pentru fiecare nivel din cele 5 consacrate ale unui
sistem distribuit și ierarhizat. La nivel de proces avem arhitectura din Fig.4.32., iar la nivel de
intreprinere arhitectura din Fig.4.33.

35
Fig.4.32. Sistemul distribuit și ierarhizat la nivel hardware pentru un proces industrial complex

36
Fig.4.33. Arhitectura de sistem distribuit și ierarhizat la nivel hardware

Valoarea adăugată pe care o introduce conceptul TIA se referă la următoarele aspecte:


➢ Inginerie integrată(procesare paralelă, scăderea complexității, up-gradarea în timp real a
datelor disponibile în sistemul distribuit și ierarhizat)
➢ Managementul datelor industriale(diagnoză de proces eficientă, reducerea timpilor de
staționare accidentală, utilizarea optimizată a resurselor, optimizarea consumurilor
energetice)
➢ Comunicații industriale(arhitectură de rețea flexibilă, instalare eficientă, extensie de
rețea simplă, ușor de adaptat la modernizări)
➢ Securitate industrială(Securitate integrată=securitatea instalației+securitatea
rețelei+integritatea întregului sistem)

37
➢ Siguranță integrată(protecția personalului, instalației și mediului>>>este implementată
pe rețele de comunicație standard și mai nou prin Wi-Fi)

Mediile de dezvoltare software ce gestionează componentele hardware distribuite și


ierarhizate sunt prezentate în Fig.4.34.

Fig.4.34. Arhitectura mediilor de dezvoltare software în TIA-Portal

✓ SIMATIC STEP 7 este cel mai cunoscut și mai folosit în lume mediu de dezvoltare
pentru automatizări industriale bazat pe echipamente de tip PLC(Programmable
Logic Controller, adică automate programabile pe Oltenește). Noul mediu de
dezvoltare disponibil în TIA portal prezintă funcționalități îmbunătățite în raport cu
noile arhitecturi de procesoare.
✓ SIMATIC WinCC este un mediu de dezvoltare pentru interfețe grafice legate de
procesul condus, dar are și funcționalități de dezvoltare sisteme SCADA(Supervisory
Control and Data Aquisition). Acest mediu de dezvoltare pune la dispoziție unelte
software puternice pentru creare aplicații HMI(Human Machine Interface) , integrare
și conectivitate cu diverse baze de date și sisteme de achiziție produse de Siemens
sau de alți furnizori.
✓ SINAMICS Startdrive este un mediu de configurare și integrare intuitivă a
convertizoarelor de frecvență în aplicațiile distribuite și ierarhizate.
✓ SIMOTION Scout TIA este un mediu de configurare, optimizare și control cu
precizie a mișcării(sunt de fapt servomotoare folosite la strunguri, linii flexibile de
fabricație)
✓ SIMOCODE este un mediu de dezvoltare pentru configurarea, monitorizarea,
protecția motoarelor prin mentenață predictivă, etc.

38
✓ Power distribution este un mediu de dezvoltare prin care se realizează gestiunea
furnizării de energie din stațiile electrice, protecții, interblocaje.

Epilog:
▪ Sistemele Siemens acoperă în lume cea mai mare paletă de domenii și aplicații, DAR
nu trebuie subestimat și alte firme ce pe anumite zone mai înguste din anumite
domenii au echipamente la fel sau chiar mai performante(ABB, Honeywell, Alley-
Brandley, Oron, Moeller-Eaton, Emerson, National Instruments, etc.).
▪ Prezentarea principială a sistemelor și conceptelor Siemens din acest capitol a fost
făcută în contextul în care astfel de echipamente se gasesc într-un procent semnificativ
în mediul industrial (chiar și din Oltenia): Heineken, Pirelli, Ford, Reno-Dacia Pitesti,
Stații de transformare Cez, Complexul Energetic Oltenia, Continental-producție
sisteme electronice, Stații de Epurare, Hidrocentrale, Platforme petroliere, etc.

4.6.Prezentarea sistemului Ovation-Control System al firmei Emerson


O componentă cheie a arhitecturii de sistem distribuit și ierarhizat al firmei Emerson este
sistemul de control distribuit Ovation ™ și sistemul SCADA(Supervisory Control and Data
Aquisition) ce oferă utilizatorilor niveluri ridicate de disponibilitate, fiabilitate și respectare a
mediului. Optimizat pentru industria de generare a energiei electrice și ape uzate, Ovation
încorporează cinci decenii de experiență de neegalat ale lui Emerson în controlul și gestionarea
acestor procese complexe. Principiul de abordare a sistemului distribuit în cadrul firmei Emerson
este puțin diferit, în sensul că datele achiziționate de la traductoarele și generate către elementele
de execuție inteligente au un punct comun reprezentat de calculatorul de proces central (format
din 2 sisteme într-o conexiune redundantă, adică un calculator gestionează datele și celălalt este
rezervă caldă). Totodată, la acest calculator de proces sunt conectate stațiile de configurare
proces și de inginerie de reglare automată(aici sunt gestionate și configurate buclele de relare,
arhitectura sistemului distribuit), stații operator proces, stații de gestiune inteligentă/mentenanță
echipamente, stații baze de date istoric, stații de configurare și control rețea, stații pentru sistemul
SCADA/HMI(Supervisory Control and Data Aquisition/Human Machine Interface). Partea de
echipamente de câmp este reprezentată în totalitate de traductoare și elemente de execuție
inteligente conectate într-o rețea industrială formată din majoritatea tipurilor standardizate de
rețea.

39
Fig.4.36. Arhitectura hardware a sistemului DCS Ovation

După cum se poate vedea din Fig.4.36. arhitectura sistemului distribuit dezvoltat de firma
Emerson seamănă cu arhitectura ISO/OSI de la rețelele standard pe care a îmbunătățit-o cu
nivele și structuri dedicate aplicațiilor abordate. Cu toate că este diferit punctul de vedere, totuși
aceleași principii sunt folosite ce diferă doar modul de abordare și evident detaliile de
implementare.

40
Fig.4.37. Principiul arhitecturii ierarhizată a sistemului DCS Ovation

Epilog:
❖ Conceptele prezentate în aceste subcapitole precum și firmele respective sunt oarecum
abordări de referință din domeniul automatizărilor, dar evident nu sunt singurele
firme....
❖ Firma Siemens s-a concentrat pe obținerea de echipamente foarte fiabile pentru
mediul industrial, pe care le oferă dezvoltatorilor de aplicații de automatizare. Practic
există “un catolog” de unde un inginer automatist poate să facă o configurație
hardware și software conform aplicației dorite.
❖ Firma Emerson dezvoltă soluții de aplicații, folosind, pe lângă echipamentele proprii,
orice echipamente furnizate de diverși. Mai mult decât atât, în funcție de soluția pe
care o abordează poate să proiecteze noi echipamente care nu sunt pe piață în acel
moment.
❖ O comparație puțin exagerată, dar care exprimă mai bine ideea:
✓ Siemens seamănă cu Microsoft, adică totul este pe câteva CD-uri de unde
utilizatorul instalează ce dorește să folosească.
✓ Emerson seamănă cu sistemele UNIX, unde utilizatorul merge la inginerii
specialiști care întreabă ce aplicație urmează să se implementeze și
configurează ei echipamentul hardware(sistemul PC) și sistemul de
operare(compilează corespunzător SO). Practic, firma Emerson preia aplicații
foarte complexe și caută soluții de abordare.

41
4.7.Industrie 4.0
Noțiunea de “Smart Industry” sau “Industrie 4.0”, înseamnă trecerea de la sisteme
embedded (sisteme încapsulate) la sisteme inteligente(cyber-phisical systems sau smart
embedded sistems) care comunică între ele pentru realizarea unui anumit task cu productivitate
mult mai mare. Mai simplu, Industrie 4.0 reprezintă cu adevărat o nouă revoluție industrială,
bazată pe noile tehnologii de tip IoT(Internet of Things), gestiunea globală a datelor prin stocarea
în Cloud și servicii inovative aplicate proceselor industriale. Totodată, Idustrie 4.0 reprezintă o
un compromis între “DESCENTRALIZARE” și “CENTRALIZARE” la nivel de producție
industrială, cu scopul generării de productivități la un nivel foarte înalt. Astfel instalațiile
industriale comunică între ele pentru realizarea unui anumit task.
Încapsularea între componenta virtuală a unui sistem de control(soluția de control) și a
procesului real/fizic conduc la un nou sistem mai performant. Mai mult, comunicarea între
instalațiile dintr-o fabrică conduc la noul concept de fabrică inteligentă(smart factory). Cum
orice sistem de control automat se bazează pe informație, prin comunicație smart(inteligentă) se
realizează accesul la acestă informație on-line și relativ în timp real, iar prin tehnologiile Cloud
se realizează accesul la informația off-line. Fuziunea acestei cantități mari de informație on-line
și off-line conduce la dezvoltarea unor soluții de control forte bine documentate ce coduc la
performanțe inimaginabile în urmă cu numai cățiva ani.
Pe scurt, paradigma industrie 4.0 poate fi percepută ca având la dispoziție posibilități
hardware imense(sisteme de achiziție, traductoare inteligente, elemente de execuție inteligente)
și o “inundație” de unelte software, se crează premisa dezvoltării unor soluții de control cu
adevărat “advanced”. Percepția este că rolul ideii de automatică/control/reglare este miezul
acestei paradigme. După cum se știe de la ingineria reglării automate, soluția de control nu este
unică și astfel rolul generației actuale de ingineri automatiști este de a găsi cea mai bună soluție
de decizie pentru procesul condus. Fără a greși, se poate spune că INDUSTRI4.0 =
AUTOMATICĂ în cea mai mare parte. Avem hardware, avem software, avem comunicație,
rămâne să vedem ce facem cu ele....
Industrie 1.0 este considerată prima revoluție industrială, generată de turbina cu abur, ce
a deschis calea unor dezvoltări tehnologice deosebite.

Fig.4.38. Industrie 1.0

42
Fig.4.39. Dezvoltări tehnologice deosebite în contextul Industrie 1.0
A doua revoluție industrială sau Industrie 2.0 este considerată descoperirea energiei electrice,
care din nou a fost motorul unor dezvoltări tehnologice deosebite.

Fig.4.40. Industrie 2.0

Fig.4.41. Dezvoltări tehnologice deosebite în contextul Industrie 2.0

A treia revoluție industrială sau Industrie 3.0 a fost generată de electronică și tehnologia
informației(IT) care a cunoscut o dezvoltare foarte mare în ultimii 20 de ani. Prin 1996 se vorbea
deja de atingerea limitei tehnologice în circuitele integrate cu siliciu(demonstrații matematice) și
chiar erau idei de a dezvolta procesoare biologice(în acestă idee au fost dezvoltate concepte de

43
rețele neuronale), se pare că evoluția nu a fost cea estimată. Totuși puterea de calcul a crescut
foarte mult prin evoluția conceptului de Tehnologia Informației, ce a permis concatenarea acelor
tehnologii limitate în tehnologii “multicore”. Avem astăzi procesoare quad-core, octo-core, etc.
Mai mult, procesoarele actuale sunt tehnologii CISC(Complete Set Instruction Set) peste
RISC(Reduced Set Instruction Set). Mai pe oltenește, nucleul procesoarelor actuale este RISC,
iar completarea cu instrucțiuni se face în mod emulat software. Se poate observa că acolo unde
tehnologia hardware a fost limitată s-a mers mai departe cu extinderea funcționalităților în mod
virtual, prin software.

Fig.4.42. Industrie 3.0

Fig.4.43. Dezvoltări tehnologice deosebite în contextul Industrie 3.0

44
Fig.4.44. Industrie 4.0

Epilog:
➢ În contextul celor expuse, Industrie 4.0 este o paradigmă deschisă de principii, care va
fi în perioada următoare direcția de abordare în mediul industrial și nu numai.
➢ Avem hardware, avem software, avem comunicație, rămâne să vedem cum le vom
valorifica pentru a adăuga tuturor echipamentelor industriale dar și funcționării
societății, apelativul “SMART”
➢ O soluție de control nu este nici hardware (cum ar spune inginerii hardware) nu este
nici software (cum ar spune IT-iștii), ci este o funcție matematică/algoritm pe care îl
descoperă/proiectează doar inginerii automatiști. Evident că soluția de control este
implementată și „pe” hardware, și „în” software. În acest context, automatica fără
celelalte meserii NU EXISTĂ, dar nici celelalte meserii NU SUNT COMPLETE în
ziua de azi fără să fie legate împreună de un inginer automatist.
➢ Dezvoltarea unei aplicații în direcția Industrie 4.0 înseamnă că inginerul automatist va
colabora cu: inginerii hardware, inginerii software, matematicieni, biologi, sociologi,
inginerii tehnologi (chimiști, energeticieni, mecanici, etc.)
➢ Fără a greși, se poate spune că INDUSTRI4.0 = AUTOMATICĂ în cea mai mare
parte, prin ideea proiectării unor soluții de control advanced (smart).
➢ Valabil pentru inginerii automatiști:

Chiar şi noi controlăm sistemul !


(……de reglare automată)

45
Cap.5.Sisteme programabile bazate pe circuite FPGA
Introducere
Sistemele încorporate (embedded systems) au devenit deja o direcție de bază în electronică și
automatică. Prin sistem încorporat se înţelege un sistem electronic digital de dimensiuni reduse, proiectat
pentru o aplicaţie specifică, lucrând sub incidenţa unor constrângeri de timp real. Termenul “încorporat”,
este o traducere aproximativă a mult mai cunoscutului şi acceptatului termen “embedded” din limba engleză
și se poate aplica unui sistem din mai multe puncte de vedere:
➢ Aceste sisteme electronice încorporează, din punct de vedere fizic, o soluție de control automat sau
un algoritm de prelucrare într-un produs efectiv, formând un tot unitar cu elementele electronice,
electrice şi mecanice cu care interacţionează.
➢ Dintr-o altă perspectivă, termenul se aplică adesea cu privire la sistemul de calcul ce formează
centrul sistemului digital: acesta nu este un procesor obişnuit, de tipul celor utilizate în
calculatoarele personale, ci încorporează pe un singur cip şi memorie de program, de date şi circuite
periferice. De obicei, aceste cipuri sunt microcontrolere (un calculator într-un chip) sau controlere
digitale de semnal (DSC – Digital Signal Controller). Acest din urmă termen este folosit recent
pentru desemnarea unor circuite complexe de tip microcontroler, dotate cu periferice puternice
(interfețe hardware de proces), al căror procesor este însă proiectat special pentru a realiza eficient
operaţii specifice domeniului prelucrării digitale de semnal. DSC-urile sunt aşadar o combinaţie
între microcontrolere şi procesoare digitale de semnal (DSP – Digital Signal Processor).
➢ O a treia accepţiune a termenului “încorporat” se referă la faptul că aceste sisteme sunt de obicei
bazate pe un procesor, iar acesta rulează un program ce execută sarcinile sistemului. Aşadar,
sistemul încorporat nu este reprezentat doar de circuitele hardware ce-l compun, ci încorporează şi
algoritmul software ce se execută pe el.

În acest context, circuitele FPGA (Field Programmable Gate Array) reprezintă la momentul actual
platforme pentru sisteme digitale complexe şi oferă elemente computaţionale din ce în ce mai sofisticate şi
mai numeroase. Termenul FPGA, tradus în româneşte prin matrice sau arie de porţi logice re-programabilă,
are o conotaţie mai mult istorică, pentru că dispozitivele FPGA nu mai sunt doar circuite reconfigurabile
ce pot implementa funcţii logice complexe, cum erau inițial la apariţia lor, când se utilizau doar ca logică
de legătură în sistemele cu procesor.
Acum, pe un circuit FPGA se integrează blocuri de memorie RAM (Random Access Memory) şi
multiplicatoare hardware sau chiar celule DSP bazate pe operaţia combinată înmulţire-acumulare (MAC –
Multiply-Accumulate). Pe lângă faptul că densitatea de integrare a dus la construirea de FPGA-uri cu
milioane de porţi logice echivalente, aceste elemente computaţionale avansate (pe un FPGA pot fi de la
câteva zeci la câteva mii de celule DSP) permit transformarea FPGA-ului într-o maşină de calcul cu putere
de procesare extrem de mare și cu timpi de execuție foarte mici. Aşadar, tehnologia circuitelor FPGA va
constitui pe viitor unitatea principală de procesare în structura unui sistem încorporat.
Aceasta se poate realiza prin implementarea algoritmului de control direct în hardware la nivel de circuit
FPGA, sau chiar mergând mai departe, prin abordarea unei variante oarecum clasică, adică în circuitul
FPGA se poate implementa chiar un procesor software, iar pe acesta va rula algoritmul software
implementat pentru o anumită aplicație.
Faptul că dispozitivele FPGA pot constitui maşini de calcul performante, a condus la interesul acordat
acestor dispozitive în domeniul controlului automat, ce necesită lucru în timp real, domeniu în care
algoritmii se pretează la paralelizare, iar timpul de calcul poate fi o componentă critică.
Deși sunt mai multe firme care dezvoltă circuite FPGA, există 2 mari companii importante și de referință
din industria electronică de top ce sunt producători de circuite FPGA: Altera şi Xilinx. Aceste firme au
dezvoltat adevărate familii de circuite FPGA, evidenţiindu-se faptul că aceste dispozitive nu mai sunt
simple arii de porţi logice interconectabile, ci integrează elemente complexe de procesare.
O concluzie importantă este faptul că dispozitivele FPGA actuale au “virtual” o putere de calcul
fantastică. Aceasta este “virtuală” deoarece trebuie folosită prin proiectarea unui adevărat sistem “software
în hardware” care să utilizeze resursele disponibile, altfel acestea ne-având însemnătate. Lucrurile stau la
fel cu un procesor capabil să execute un anumit număr de operaţii pe secundă: trebuie dezvoltat software-
ul care să facă acest lucru. Diferenţa este însă crucială: proiectarea de software pentru un procesor este un
domeniu matur, cunoscut, studiat de foarte mult timp şi stabilit în direcții de abordare clare. Proiectarea de
hardware pentru FPGA, deşi utilizând de foarte mult timp unelte şi metode “clasice”, cum ar fi limbaje low-
level de tip HDL(Hardware Description Language) şi proiectarea la nivel de transfer între registre, are parte
de o reinventare în ultimul timp prin introducerea unor metode şi unelte noi, la un nivel de abstractizare
mult mai înalt: limbaje de tip C sau scheme bloc în Matlab/Simulink, Labview-FPGA.
Se merge la momentul actual chiar la implementarea de procesoare software direct în circuite FPGA.
Prin procesor software se înţelege un procesor implementat în resursele de uz general ale unui FPGA. Au
existat chiar şi FPGA-uri ce conţineau procesoare hard, adică nuclee fixe, ne-reconfigurabile, dar capabile
să se interfaţeze uşor cu restul resurselor din FPGA.
O idee interesantă este dată de faptul că, la momentul actual, cele mai noi tipuri de procesoare sunt
dezvoltate/testate/emulate mai înainte pe dospozitive FPGA, înainte de a fi introduse în producția de serie.
Este normal că prototiparea unui procesor nou, implică proiectare și teste laborioase, ceea ce conduce la
faptul că primul procesor nou dintr-o familie, are costuri cu proiectarea de peste 1 milion de EU. Dacă s-a
omis un “gate”(o simplă poartă logică) în arhitectura acestuia, va trebui reluată validarea/testarea de la
capăt, cu aceleași costuri. De aceea, există deja consacrată practica actuală, ca procesoarele noi ce se
lansează pe piață, să fie inițial emulate într-un circuit FPGA în procesul de prototipare.

Evoluția dispozitivelor bazate pe tehnologia circuitelor FPGA


✓ Primul dispozitiv de tip FPGA a fost lansat de firma Xilinx în 1984. Acesta conţinea 64 de blocuri
logice interconectate printr-o matrice de conexiuni programabile, avea 58 de pini de intrare/ieşire şi
era implementat în tehnologie de 2μm, folosind în jur de 85000 de tranzistoare. Avantajul acestei
arhitecturi era scalabilitatea: odată cu îmbunătăţirea procesului de fabricaţie, mai multe elemente de
bază puteau fi integrate pe acelaşi cip, crescând posibilităţile oferite de acesta. Astfel, de-a lungul a
câtorva ani, producătorii de FPGA-uri au continuat să crească numărul de blocuri logice, numărul
nivelelor de interconectare şi numărul pinilor de intrare/ieşire. Astfel, perioada 1985 – 1991 poate
fi considerată perioada “copilăriei” dispozitivelor FPGA. Aceasta este caracterizată prin faptul că
FPGA-urile erau folosite ca logică de legătură în sisteme mai mari, iar programele software ce
implementau circuitele proiectate în FPGA erau relativ simple şi uşor de îmbunătăţit.
✓ În curând însă s-a dovedit că această abordare nu era suficientă: odată cu creşterea numărului de
blocuri logice, interconexiunile lungi şi complexe dintre ele deveneau factorul limitativ al
performanţelor dispozitivului. De aceea, având în vedere că tehnologia de fabricaţie permitea
integrarea a tot mai multor tranzistoare, a apărut ideea încorporării de hardware dedicat. Astfel, la
mijlocul anilor 1990 apar primele FPGA-uri cu blocuri de memorie RAM încorporate. Tot atunci
apar primele tehnici de creştere pe cip a frecvenţei de lucru, prin integrarea de circuite cu calare pe
fază (PLL – Phase Locked Loop) de multiplicare a frecvenţei. Astfel, perioada 1992 – 1999 poate
fi considerată o perioadă de expansiune a dispozitivelor FPGA. La începutul acestei perioade, multe
firme producătoare se retrag din domeniu (Plessey, Toshiba, Motorola, IBM) pentru că arhitecturile
propuse de ele nu fac faţă scalabilităţii permise de avansarea rapidă a tehnologiei de producţie. În
această perioadă, creşterea rapidă a complexităţii circuitelor pune presiune pe dezvoltarea de
software de sinteză automată care să permită proiectarea uşoară şi folosirea eficientă a resurselor
hardware. Totodată, FPGA-urile încep să fie folosite în aplicaţii tot mai complexe, în domeniul
comunicaţiilor şi calculelor aritmetice.
✓ Perioada 2000 – 2007 poate fi considerată perioada de acumulare a dispozitivelor FPGA, timp în
care se integrează din ce în ce mai multe şi mai sofisticate blocuri hardware: de la microprocesoare
la circuite de comunicaţie rapidă, de la funcţii aritmetice specializate la blocuri dedicate procesării
digitale de semnal (DSP - Digital Signal Processing), bazate pe multiplicatoare hardware şi
acumulatoare. În 2000 apare primul FPGA cu procesor hardware încorporat, bazat pe arhitectura
ARM. De asemenea, odată cu creşterea numărului de blocuri logice integrate, a apărut tendinţa
producătorilor de FPGA-uri de a dezvolta procesoare soft, implementabile economic în blocurile
logice din FPGA.
✓ În prezent, FPGA-urile au devenit adevărate platforme sistem: ambii mari producători de FPGA-uri
(Altera și Xilinx) îşi descriu dispozitivele complexe în astfel de termeni. De exemplu, familia Virtex
6 de la Xilinx este descrisă ca FPGA platformă. Familia Stratix IV de la Altera este comercializată
ca FPGA “high end”, capabilă să implementeze un întreg sistem pe un cip (SoC - System on a Chip).
Astfel, de la epoca blocurilor logice interconectate prin conexiuni programabile, s-a ajuns la
dispozitive configurabile complexe, capabile să implementeze un întreg sistem digital pe un cip,
sistem compus din mai multe procesoare hard sau soft, din motoare de procesare dedicate DSP,
coprocesoare matematice, periferice de control al memoriei sau de comunicaţie.
✓ Ce rezervă viitorul?... Se pare că începând din 2007 am intrat în perioada specializării foarte strictă
a sistemelor bazate pe circuitele FPGA: familii diverse de FPGA-uri, sunt bazate pe arhitecturi
diferite, ce oferă adevărate sisteme specializate pentru diferite tipuri de aplicaţii din diverse domenii,
cum ar fi criptare de date, automotive, avionică, automatizări industriale generale(bucle de
reglare), etc. De asemenea, programele software High-Level de sinteză s-au specializat pe aceste
domenii diferite de aplicaţii.

Elemente generale ale circuitelor FPGA actuale


Orice circuit FPGA dispune de un numar finit de elemente hardware predefinite cu interconexiuni
între ele programabile, ce pot realiza chiar o reconfigurare digitală a blocurilor I/O prin care interacționează
cu exteriorul. Arhitectura generală este prezentată în Fig.1. Specificațiile resurselor FPGA includ un număr
de blocuri logice configurabile, un număr de blocuri logice cu funcții fixe, cum ar fi multiplicatorii și blocuri
de memorie RAM încorporate. Dintre numeroasele specificații ale unui circuit FPGA, acestea sunt foarte
importante atunci când se selectează un FPGA pentru o anumită aplicație.
Fig.1. Arhitectura generală a unui circuit FPGA

După cum se poate observa în Fig.1, elementele funcționale de bază pentru un circuit FPGA sunt:
• Blocuri logice (Logic Blocks) ce sunt blocurile fizice elementare, implementate la nivelul circuitelor
FPGA. În principiu, acestea sunt porți logice fizice sau blocuri de memorie ce implementează
diverse funcții logice standard sau speciale. Mai mult, un anumit număr de blocuri elementare este
grupat din fabricație, sau mai bine-zis sunt optimizate legăturile, astfel încât să implementeze o
arhitectură dedicată de DSP(Digital Signal Procesor). Astfel grupul de blocuri poate fi folosit efectiv
ca un DSP sau ca blocuri elementare.
• Conexiunile programabile (Programmable Interconect), ce este reprezentată de așa numita matrice
programabilă de rutare care este configurată prin programare și realizează conexiunile între
blocurile hardware logice. Este echivalentul traseelor care leacă componentele electronice pe un
cablaj imprimat PCB(Printed Circuit Board). Frumusețea tehnică este că, în cazul circuitelor FPGA,
aceste conexiuni sunt programabile și astfel ne putem dezvolta diverse arhitecturi hardware….doar
prin programare (…fără pistolul de lipit).
• Blocurile de Intrare/Ieșire (I/O Blocks) sunt formate din grupuri de blocuri elementare conectate la
pinii de I/O astfel încât să relizeze conectări configurabile cu diverse circuite sau echipamente
exteriore (Traductoare sau Elemente de Execuție). La fel și aceste blocuri pot fi folosite/programate
ca blocuri compacte de prelucrare (pentru diverse funcții de condiționare de semnal) sau ca blocuri
elementare cu care să realizăm o multitudine de funcții logice de care are nevoie aplicația.
De reținut, dezvoltarea unei aplicații folosind programarea unui circuit FPGA, înseamnă de fapt să realizăm
efectiv (prin programare) conexiunile între blocurile logice elementare sau grupurile de blocuri dedicate(de
tip DSP). Practic, programarea unui circuit FPGA, este achivalentă simultan cu realizarea componentei
hardware și software din dezvoltarea unei aplicații standard cu microprocesor. Se mai spune chiar că, la
nivelul unui circuit FPGA, implementăm programul direct… hardware.

Fără a intra în detaliile de implementare arhitecturală, Blocurile Logice Configurabile (denumite și


CLB - configurable logic blocks) sunt unitatea logică de bază a unui FPGA. Standard sunt
referite/organizate ca felii logice (slice) la nivelul unui circuit FPGA, deoarece un semnal care apare la pinii
de intrare a circuitului trebuie să ajungă cumva (evident prelucrat) la pinii de ieșire.
➢ Blocurile CLB sunt alcătuite din două componente de bază:
o flip-flops (bistabile de tip Latch)
Flip-flop-urile sunt registre de deplasare binare utilizate pentru sincronizarea logicii și salvarea stărilor
logice între ciclurile de ceas dintr-un circuit FPGA. Pe fiecare cuantă de ceas, un flip-flop memorează
valoarea 1 sau 0 (TRUE sau FALSE) pe intrarea sa și menține această valoare constantă până la următoarea
cuanta de ceas, Fig.2.

Fig.2. flip-flops

o tabele de căutare (LUT- lookup tables).


O mare parte din logica unui CLB este implementată nu numai hardware (bloc de circuit fizic), ci și
folosind blocuri fizice foarte mici de memorie RAM sub formă de tabele, denumite LUT-uri (Lookup ables,
Fig.4.). Este ușor să ne imaginăm că numărul de porți de sistem dintr-un FPGA se referă la numărul de
porți NAND și porți NOR dintr-un anumit cip. Dar, în realitate, toată logica combinatorie de bază (AND,
OR, NAND, XOR), dar și funcții logice combinatoriale dedicate unei anumite prelucrări, este implementată
și ca tabele de adevăr în blocuri de memorie RAM, adică acele blocuri denumite LUT. După cum se știe, o
tabelă de adevăr este o listă predefinită de ieșiri pentru fiecare combinație de intrări.

Fig.3. LUT cu 4 intrari

Diferite familii FPGA diferă în modul în care flip-flop-urile și LUT-urile sunt ambalate împreună
la nivel hardware, adică trebuie să știm cum le vom putea conecta prin programare, folosind evident
matricea de rutare. Astfel este foarte important să înțelegem ce înseamnă aceste blocuri, cum pot fi legate
și cum sunt organizate.
De reținut, toate aceste detalii arhitecturale sunt descrise în fișierul datasheet.pdf ce contine toată
documentația aferentă circuitului FPGA ales.
De exemplu, banala funcție logică AND, prezentată în Fig.4, poate fi implementată fizic într-o
tabelă de memorie LUT, conform tabelei de adevăr din Fig.5.
Fig.4. Funcția logică AND

Fig.5. Tabela de adevăr a funcției logice AND


➢ Multiplicatoare si DSP-Slice
Sarcina, aparent simplă, de a înmulți două numere poate deveni extrem de intensivă/laborioasă în
resurse și complexă de implementat direct la nivelul unui circuit digital. Pentru a furniza un anumit cadru
de referință, în Fig.6 este prezintată schema hardware de implementare a unei inmulțiri pe 4 biți utilizând
logica combinatorie. Ne putem imagina ce inseamna să înmulțim două numere de 32 de biți și vom ajunge
la mai mult de 2000 de operații pentru o singură multiplicare. Din acest motiv, circuitele FPGA au circuite
speciale de multiplicare predefinite pentru a economisi/optimiza utilizarea componentelor de tip LUT și
flip-flop, în aplicații complexe de calcul matematic și procesare de semnal.

Fig.6. Înmulțirea a 2 numere pe 4 biți


folosind circuite digitale

Mulți algoritmi de procesare de semnal implică inmultiri cu numere mari si astfel, FPGA-urile cu
performanțe superioare, cum ar fi Xilinx Virtex-5 FPGA, au circuitele de multiplicare-acumulare
predefinite. Aceste blocuri de procesare pre-construite, sunt cunoscute și sub denumirea de DSP48 Slice,
ce integrează un rezultat de multiplicare pe 25 biți, adică realizeaza operatii in virgula fixa pe 18 biți, la
care se adaugă și circuite de insumare.
➢ Blocuri de memorie RAM
Resursele de memorie efectivă, sunt o altă specificație cheie de luat în considerare atunci când se
selecteaza un circuit FPGA. Memoria RAM definită de utilizator, încorporată pe întregul cip FPGA, este
utilă pentru stocarea seturilor de date sau transmiterea valorilor între task-uri executate în mod paralel sau
iterativ. În funcție de familia FPGA, se poate configura memoria RAM integrată în blocuri de 16 sau 36
kb. Există în continuare opțiunea de a implementa seturi de date de tip tablouri, folosind celule de tip flip-
flops, dar cu toate acestea, matricile mari devin rapid prea extinse pentru resursele logice FPGA. De
exemplu, o matrice de 100 de elemente de numere pe 32 de biți poate consuma mai mult de 30% din flip-
flop-uri într-un Virtex-II 1000 FPGA, sau poate ocupa mai puțin de 1% din blocul RAM încorporat.
Algoritmii de procesare a unui semnal digital trebuie adesea să țină evidența unui bloc mare de date sau a
coeficienților unei ecuații complexe și, fără o zonă de memorie consistentă disponibilă, multe funcții de
procesare pot să nu se încadreze în logica configurabilă a unui circuit FPGA.
De reținut, Execuția inerent paralelă la nivelul unui circuit FPGA, permite ca elemente independente de
logică hardware să fie coordonate/sincronizate cu semnale de ceas diferite. Trecerea datelor între o logică
care rulează componente la viteze diferite poate fi dificilă, iar memoria disponibilă poate fi utilizată pentru
a permite transferul folosind buffere de memorie FIFO (first-in-first-out).
În figura de mai jos se poate observa folosirea resurselor hardware ale circuitului FPGA, Xilinx
Kintex-7 7K325T, diponibil în sistemul prezentat la laborator, NI cRIO 9039, pentru aplicația de
achiziție/prelucrare vibrații. Detaliile de potrivire a algoritmilor de prelucrare peste arhitectura FPGA a fost
realizată automat de către mediul de dezvoltare Labview-FPGA, ceea ce ne-a scutit pe noi, ca programatori,
de această proiectare extrem de laborioasă.

Arhitectura resurselor folosite în urma compilării la nivel de Circuit FPGA

Instrumente de proiectare traditională FPGA


În primii 20 de ani de dezvoltare FPGA, limbajele de descriere hardware de tip HDL (Hardware
Description Languages), cele mai importante sunt:
o VHDL(mai precis VHSIC-HDL, Very High Speed Integrated Circuit Hardware Description
Language)
o Verilog(standardizat ca IEEE 1364), cu versiuni bazate pe instrucțiuni asemănătoare cu cele ale
limbajului C.
Aceste limbaje de tip HDL, au evoluat ca limbaje principale pentru proiectarea algoritmilor/aplicațiilor care
rulează pe circuite FPGA produse de toate firmele. Aceste limbaje Low-Level integrează unele dintre
beneficiile oferite de alte limbaje textuale(prezintă instrucțiuni text pentru programare) cu specificația că,
pe un circuit FPGA, practic “arhitecturăm” un circuit hardware. Sintaxa unor astfel de limbaje de
programare este hibridă (adică instrucțiunile se referă și la hardware și la software), ceea ce necesită
maparea sau conectarea semnalelor de la porturile I/O externe la semnale interne, care în cele din urmă sunt
conectate la blocurile de funcții care găzduiesc/implementează algoritmii. Aceste funcții, în mod teoretic se
execută secvențial și eventual pot face referință/apel la alte funcții din cadrul FPGA. Cu toate acestea,
adevărata natură paralelă a execuției fizice pentru Task-urile rulate pe un circuit FPGA, face greu de
vizualizat/gândit execuția într-un flux secvențial linie cu linie. Limbajele de tip HDL reflectă unele dintre
atributele altor limbaje textuale, dar diferă substanțial deoarece se bazează pe un model de flux de date, în
care Intrările și Ieșirile sunt conectate la o serie de blocuri funcționale prin semnale.
Pentru a verifica apoi logica creată de un programator de circuite FPGA, o practică obișnuită este
să se scrie biblioteci de testare în HDL pentru a incapsula proiectarea in arhitectura FPGA prin
asignarea/conectarea intrărilor și ieșirilor. Procesul de creare a bancului de test HDL și executarea simulării
necesită adesea mai mult timp decât crearea propriu-zisă a proiectului final FPGA HDL.
Odată ce ați creat un proiect FPGA utilizând HDL și a fost testat/validat, trebuie introdus într-un
instrument de compilare care să ia logica bazată pe text și, prin mai mulți pași complecsi, să sintetizeze
HDL-ul într-un fișier de configurare sau un flux de biți care conține informații despre modul în care
componentele ar trebui să fie conectate împreună. Un exemplu de cod scri în VHDL, este prezentat în Fig.6.

Fig.6. exemplu de cod scri în VHDL

Instrumente de proiectare a sintezei la nivel înalt


Apariția instrumentelor grafice de proiectare de nivel inalt, cum ar fi LabVIEW-FPGA, a eliminat
unele dintre obstacolele majore ale procesului tradițional de proiectare HDL. Mediul de programare
LabVIEW este potrivit pentru programarea FPGA, deoarece reprezintă în mod clar paralelismul și fluxul
de date, astfel încât utilizatorii care sunt atât experimentați, cât și fără experiență în procesele tradiționale
de proiectare FPGA, pot utiliza tehnologia FPGA în dezvoltarea de aplicații complexe.
În plus, pentru a nu se pierde aplicatii vechi, se poate utiliza LabVIEW pentru a integra VHDL
existent în proiectele noi, LabVIEW-FPGA. Deoarece LabVIEW-FPGA este extrem de integrat cu
hardware-ul, nu este nevoie să se rescrie codul în VHDL pentru a îndeplini constrângerile de timp sau de
resurse, așa cum poate fi cazul în multe generatoare de cod HDL. În Fig.7. este prezentat un task de achiziție
a unui semnal. dezvoltat în Labview-FPGA, comparativ cu același Task scris în VHDL. Se poate observa
avantajul că dezvoltarea de cod în VHDL este mult mai laborioasă. Mai mult, dezvoltarea de cod în
limbajele Low-Level VHDL și Verilog este echivalentă cu dezvoltarea de cod în limbajul de asamblare
pentru un sistem cu microprocesor. Dezvoltarea de cod în limbajele High-Level Labview sau Matlab pentru
FPGA, este echivalent cu dezvoltarea de cod în limbaje High-Level pentru programarea sistemelor cu
microprocesoare (Limbajul C, Phyton, Visual C, etc.). La fel cum pentru sistemele cu microprocesoare se
lucrează în cea mai mare parte cu limbaje de nivel superior (mult mai apropiate de gândirea umană), la fel
stă lucrurile în tendința programării circuitelor FPGA.

Care ar fi diferența?

➢ Pentru un sistem cu microprocesor:


o Limbajul de asamblare generează un cod sursă foarte mare, greu de scris și timp de dezvoltare a
aplicației foarte mare dar codul executabil este foarte mic și se execută foarte rapid
o Limbajul de nivel superior generează un cod sursă semnificativ mai mic, ușor de scris și timp de
dezvoltare a aplicației foarte mic dar codul executabil este foarte mare și se execută mai lent
OBS: Codul executabil obținut prin compilare dintr-un limbaj de nivel superior este mai mare deoarece
traducerea codului în limbajul cod mașină(executabil) nu se face optim. De aceea și timpul de execuție a
programului executabil este mai mare(conține multe instrucțiuni NOP-Not Operațion).

➢ Pentru un sistem cu FPGA:


o Limbajul de tip HDL generează un cod sursă foarte mare, greu de scris și timp de dezvoltare a
aplicației foarte mare dar codul executabil este foarte bine mapat peste circuitul FPGA și
folosește optim arhitectura FPGA. Efectul este că încape cod de dimensiune mult mai mare în
circuitul FPGA, cu posibilitate de prelucrare foarte complexă.
o Limbajul de nivel superior generează un cod sursă foarte mic, ușor de scris și timp de dezvoltare
a aplicației foarte mic dar codul executabil NU este foarte bine mapat peste circuitul FPGA și
NU folosește optim arhitectura FPGA în raport cu prelucrarea dorită. Efectul este că încape
cod de dimensiune mult mai mică în circuitul FPGA, cu posibilitate de prelucrare mai puțin
complexă.
Fig.7. Task dezvoltat în Labview-FPGA, comparativ cu același Task scris în VHDL

Descrierea pur principială a unor elemente din arhitectura circuitelor FPGA de la Xilinx
Compania Xilinx oferă deja mai multe familii principale de dispozitive FPGA: Spartan, Artix,
Virtex, și cea mai nouă Kintex. Fără a avea pretenția unei prezentări detaliate, în continuare se prezintă, ca
exemplu, câteva caracteristici arhitecturale principale ale acestor circuite.
Arhitectura familiei Spartan 6 se bazează pe felii logice (slice), grupate în mai multe blocuri logice
elementare configurabile (CLB – Configurable Logic Block). Fiecare CLB conţine 2 felii alăturate. Fiecare
felie conţine 4 LUT-uri, 8 bistabili şi logică complementară. Există 3 tipuri de felii logice în arhitectura
Spartan 6: SLICEM, SLICEL şi SLICEX.
Un sfert din feliile logice ale unui dispozitiv Spartan 6 sunt de tipul SLICEM. Fiecare din cele 4
LUT-uri ale unui SLICEM poate fi configurat ca un singur LUT cu 6 intrări şi o ieşire sau ca 2 LUT-uri cu
câte 5 intrări şi ieşiri independente. LUT-urile pot fi folosite şi ca memorie RAM distribuită de 64 de biţi,
configurată ca 64x1 sau 32x2, sau ca registre de deplasare: un registru de 32 de biţi (SRL32 – Shift Register
Logic) sau 2 registre de 16 biţi (SRL16). Ieşirea fiecărui LUT poate fi salvată într-un bistabil. Pentru operaţii
aritmetice, un lanţ de propagare a transportului de mare viteză leagă între ele feliile logice de pe aceeaşi
coloană din FPGA. Arhitectura unui slice de tip SLICEM al familie Spartan 6, este prezentată în Fig.8.
Fig.8. Arhitectura unui slice de tip SLICEM al familie Spartan 6

Încă un sfert din feliile logice (slice) ale unui dispozitiv Spartan 6 sunt de tipul SLICEL. Acestea au
aceeaşi structură ca şi SLICEM, cu excepţia posibilităţii de configurare ca memorie distribuită sau registru
de deplasare. Celelalte felii logice dintr-un Spartan 6 sunt de tipul SLICEX, care elimină din structura
SLICEL logica de generare a transportului şi multiplexoarele.
FPGA-urile Spartan 6 conţin şi blocuri de memorie RAM cu port dual de 18 kbiţi. Accesurile la
memorie sunt sincrone cu semnalul de tact. Fiecare port poate fi configurat ca 16Kx1, 8Kx2, 4Kx4, 2Kx8
(sau x9), 1Kx16 (sau x18), sau 512x32 (sau x36). Cele două porturi de acces la un bloc de memorie pot
avea lăţimi diferite. Configuraţiile x9, x18 şi x36 includ biţi de paritate. Fiecare bloc de RAM poate fi
configurat ca două jumătăţi de 9kbiţi independente.
Unele dispozitive ale familiei includ blocuri de control al memoriei externe (MCB – Memory
Controller Block), fiecare putându-se interfaţa la un cip de memorie DRAM de tipul DDR, DDR2, DDR3
sau LPDDR (Low Power DDR) şi putând atinge rate de transfer de 800 Mb/s.
Dispozitivele Spartan 6 dispun şi de blocuri dedicate operaţiilor DSP, numite DSP48A1. Fiecare
astfel de bloc este alcătuit dintr-un multiplicator dedicat 18x18, ce lucrează cu numere reprezentate în
complement faţă de 2, şi un acumulator de 48 de biţi şi poate opera la o frecvenţă de lucru de 250 MHz.
Arhitectura internă a unui DSP48A1 este prezentată în Fig.9.
Blocul DSP48A1 oferă posibilitatea folosirii registrelor interne pentru implementarea de pipeline-
uri. De asemenea, astfel de blocuri pot fi cascadate datorită multiplelor facilităţi de înlănţuire a propagării
transportului. Acumulatorul poate fi folosit şi pe post de numărător sincron, iar multiplicatorul poate fi
folosit pentru implementarea unui circuit de deplasare cu pas selectabil (barrel shifter).

Fig.9. Arhitectura internă a unui DSP48A1 al familiei Spartan 6

Dispozitivele familiei Spartan 6 dispun și de circuite speciale pentru generarea semnalelor de tact.
Acestea sunt numite blocuri de gestionare a tactului (CMT – Clock Management Tile) şi sunt alcătuite
fiecare din câte un circuit PLL şi două circuite digitale de gestionare a tactului (DCM – Digital Clock
Manager). Aceste componente pot fi conectate între ele prin trasee dedicate, dar pot opera şi independent.
Circuitul PLL poate fi folosit pentru sintetizarea frecvenţelor de tact şi filtrarea fluctuaţiilor semnalelor de
tact externe sau interne.
Unele circuite din familia Spartan 6, de exemplu sub-familia Spartan 6 LXT, conţin circuite dedicate
de transmisie/recepţie serială de mare viteză. Acestea suportă rate de transfer între 614 Mbps şi 3,125 Gbps.

Familia de dispozitive FPGA de înaltă performanţă a firmei Xilinx este numită Virtex 6. Comparativ
cu familia Spartan 6, şi familia Virtex 6 are la bază LUT-uri cu 6 intrări grupate în felii de tipul SLICEM
sau SLICEL, grupate la rândul lor în CLB-uri. Tipul SLICEX lipseşte de la familia Virtex 6.
Blocurile de memorie RAM ale circuitelor familiei Virtex 6 sunt de 36 kbiţi, cu accesare prin port
dual şi operare sincronă. Fiecare port poate fi configurat ca 32Kx1, 16Kx2, 8Kx4, 4Kx8 (sau x9), 2Kx16
(sau x18), 1Kx32 (sau x36), 512x64 (sau 72). Cele două porturi de acces ale aceluiaşi bloc pot avea lăţimi
diferite. Fiecare bloc poate fi împărţit în două blocuri complet independente de 18 kbiţi. Două blocuri de
36 kbiţi pot fi cascadate pentru a forma un bloc 64Kx1 fără altă logică suplimentară.
La familia Virtex 6, în jurul blocurilor de memorie RAM sunt implementate circuite logice de
control al accesului de tip FIFO. Acestea elimină nevoia ocupării de CLB-uri pentru implementarea
numărătoarelor de adrese, a comparatoarelor şi logicii de generare a indicatorilor de stare (flags) pentru
implementarea de tampoane de memorie FIFO. Logica FIFO dedicată poate opera sincron sau asincron, cu
tact dual, separat pentru citire şi scriere. În Fig.10, se prezintă schema-bloc, a unui bloc de memorie de tip
FIFO, dedicat al familiei Virtex 6.

Fig.10. Schema-bloc, a unui bloc de memorie de tip FIFO al familiei Virtex 6

Dispozitivele familiei Virtex 6 dispun de 200 până la 2000 de blocuri dedicate pentru operaţii DSP,
numite DSP48E1. Acestea sunt grupate câte două, împreună cu magistrale locale de interconectare pentru
optimizarea vitezei şi minimizarea puterii disipate. Arhitectura unui bloc DSP48E1 este prezentată în
Fig.11. Acesta este construit în jurul unui motor de multiplicare-acumulare, foarte folositor în aplicaţiile de
procesare de semnal. Pe lângă operaţia de multiplicare-acumulare (MACC – multiply-accumulate), blocul
DSP48E1 permite şi operaţii de multiplicare, multiplicare-adunare, adunare de 3 termeni, deplasare
multiplă,
Fig.11. Arhitectura unui bloc DSP48E1 al familiei Virtex 6

Metodologia de proiectare a unui sistem de control implementat în hardware pe FPGA


Dispozitivele FPGA permit proiectarea de arhitecturi hardware specializate, cu avantajul
flexibilităţii mediului programabil în care se realizează implementarea. Acest lucru oferă un grad de
libertate mare în proiectarea de sisteme de control numeric faţă de folosirea microprocesoarelor, deoarece
arhitectura hardware a sistemului de control nu e impusă a priori. De multe ori, însă, proiectarea acestei
arhitecturi este realizată intuitiv şi euristic şi nu este adaptată implementării de algoritmi din ce în ce mai
complecşi. Din acest motiv se impune folosirea unei metodologii de proiectare eficiente. O astfel de
metodologie se bazează pe trei principii majore:
❖ rafinarea algoritmului de control,
❖ modularitatea;
❖ potrivirea optimă între algoritmul ce trebuie implementat și arhitectura hardware aleasă.

Rafinarea algoritmului este un pas necesar în proiectarea sistemelor de control cu FPGA. Implementarea
operaţiilor aritmetice în virgulă mobilă este posibilă în FPGA, dar utilizarea resurselor nu este optimă în
acest caz, datorită arhitecturii de tip “matrice de celule logice”. Această “matrice de celule logice” este
foarte potrivită pentru implementarea de operaţii aritmetice simple de tipul sumator/scăzător pentru numere
reprezentate în complement faţă de 2, dar utilizarea reprezentării în virgulă mobilă implică structuri mult
mai complexe, cu căi multiple de date, logică de luare a deciziilor şi activare a anumitor căi, registre de
deplasare pentru normalizare, etc. Aceste structuri complexe consumă foarte multe resurse, în vreme ce
reprezentarea numerelor în virgulă fixă nu necesită niciun fel de resurse adiţionale faţă de reprezentarea
numerelor întregi în complement faţă de 2. Din aceste motive s-au formulat două direcţii de lucru:
1. Simplificarea computaţională: mai ales la începutul dezvoltării dispozitivelor FPGA, când
densitatea celulelor logice era limitată, au apărut algoritmi ce propuneau soluţii inteligente de
evitare a folosirii operatorilor a căror implementare necesita ocuparea unui procent semnificativ
din resursele disponibile (înmulţire, împărţire). În general, atunci când nu se folosesc astfel de
algoritmi speciali, simplificarea computaţională se poate obţine prin remodelarea algoritmului de
implementat pentru a reduce numărul operaţiilor ce trebuie realizate.
2. Folosirea unui format optimizat de reprezentare a numerelor în virgulă fixă: aşa cum s-a menţionat
mai sus, reprezentarea în virgulă fixă este foarte potrivită pentru implementare în FPGA, dar trebuie
găsit cel mai avantajos compromis între numărul de biţi ai fiecărei variabile de control şi respectarea
specificaţiilor de control, De exemplu, există un toolbox Matlab pentru analiza efectelor
implementării filtrelor digitale şi a sistemelor de control folosind reprezentarea numerică în virgula
fixă, ce permite optimizarea alegerii reprezentării.

Modularitatea este esențială pentru dezvoltarea sistemelor complexe. Acest principiu se bazează pe
conceptele de ierarhizare şi regularitate. Ierarhizarea împarte un sistem mare sau complex în entităţi mai
uşor realizabile denumite module. Regularitatea este direcţionată spre maximizarea reutilizării modulelor
deja proiectate. O bună modelare şi ierarhizare a unui sistem, precum şi folosirea de module deja existente,
poate reduce timpul de proiectare mult mai mult decât o stăpânire perfectă a uneltelor de proiectare. Un
modul poate fi definit ca un element al unei biblioteci, ce poate fi instanţiat direct, fără a trebui re-proiectat
sau modificat. Astfel, reutilizabilitatea constă în folosirea elementelor de bibliotecă cele mai potrivite
pentru o anumită aplicaţie. Modulele pot fi împărţite în biblioteci de diferite nivele de abstracţie,
Reutilizabilitatea poate fi întâlnită la nivel de descriere HDL, dar și pentru limbaje de dezvoltare de nivel
înalt.

Potrivirea optimă dintre algoritmul ce trebuie implementat şi structura hardware, mai ales atunci când
aceasta din urmă nu este fixată, este o problemă cheie. O metodologie de găsire a acestei potriviri optime
este metodologia AAA (sau A3 ). Prescurtarea AAA provine de la Algorithm Architecture Adequation, iar
termenul adequation are sensul de potrivire eficientă, nu sensul doar potrivirea suficientă. Atunci când
vorbim despre proiectare în FPGA, scopul metodologiei AAA este de a găsi o arhitectură hardware
optimizată pentru un anumit algoritm, respectând în acelaşi timp constrângerile de timp de execuţie şi arie
ocupată. Metodologia AAA se bazează pe modelarea algoritmilor cu ajutorul grafurilor, analiza pe graf a
paralelismului potenţial al algoritmului şi potrivirea acestuia pe paralelismul disponibil al arhitecturii
hardware alese.

Toate informaţiile prezentate în acest capitol au rolul de a evidenţia o mică parte principială din
extraordinarele posibilităţi oferite de circuitele FPGA actuale. Ele au caracter introductiv, iar documentația
completă se găsește disponibilă la firmele producătoare, aferentei fiecărei familii de circuite FPGA
abordată.
Din cele prezentate în această secţiune se pot extrage câteva concluzii:
✓ Dispozitivele FPGA au devenit într-adevăr platforme pentru implementarea de sisteme complexe în
întregime pe un singur cip. Chiar şi familiile cu preţ scăzut integrează destule componente pentru a
permite prelucrări destul de complexe.
✓ Dezvoltarea unei aplicații cu circuite FPGA, folosind limbaje Low-Level(de tip HDL), necesită studiul
în amănunt a arhitecturii pentru a putea “mapa” optim aplicația software peste partea hardware.
✓ Dezvoltarea unei aplicații cu circuite FPGA, folosind limbaje High-Level(de ex. Labview-FPGA),
este foarte simplă, deoarece nu ne mai interesează detaliile arhitecturale ale circuitului. Prețul plătit
pentru acest lucru este faptul că prelucrarea nu este implementată în mod optim în raport cu proiectul
gândit de noi. Mai precis, nu prea avem controlul total al implementării.
✓ Folosirea resurselor disponibile implică cunoştinţe din multe domenii conexe, de la procesare de
semnal la microcontrolere şi proiectare de software pentru sisteme încorporate, de la proiectare de
structuri digitale la descriere în limbaje HDL şi simulare a acestora. De aici presiunea foarte mare
asupra producătorilor de dispozitive FPGA pentru a aduce uneltele software de proiectare la un nivel
cât mai înalt, cât mai abstract, pentru a permite dezvoltarea cât mai rapidă de proiecte complexe. Se
pune chiar problema că, la ce bun o multitudine de resurse, dacă nimeni nu reuşeşte să le folosească în
întregime?

Ca o concluzie finală, dezvoltarea de aplicații de timp real, folosind sisteme FPGA, se pretează foarte
bine unui inginer electronist, deoarece, deși se folosește doar “tastatura” pentru implementare, sunt
necesare abilități și cunoștințe consistente în domeniul electronicii.

Totodată, datorită limbajelor de nivel înalt dezvoltate în ultimii ani, ideea folosirii circuitelor FPGA de
către un inginer automatist este foarte valoroasă. De toate detaliile de arhitecturare hardware se ocupă
mediul de dezvoltare, cum este de exemplu Labview, Matlab.

SUCCES !!!

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