Sunteți pe pagina 1din 12

5. MODELUL ARHITECTURAL VON NEUMANN.

COMPONENTE DE BAZ. PRINCIPIILE


PROCESRII INSTRUCIUNILOR

5.1. COMPONENTELE DE BAZ ALE MODELULUI


ARHITECTURAL VON NEUMANN
n anii '40, matematicianul John von Neumann [Wik] analizeaz
starea de fapt a calculatoarelor i scrie n 1945 un raport intitulat First
Draft of a Report on the EDVAC (Prima schi a unui raport despre
EDVAC Electronic Discrete Variable Automatic Computer), n care
sugereaz o arhitectura revoluionar care s transpun n realitate
(implementeaz fizic) maina universal de calcul Turing. n aceast
arhitectur, programul nu mai este reprezentat de felul n care sunt cuplate
unitile funcionale, ci este stocat n memorie, fiind descris folosind un
limbaj numit cod-main. n cod-main, operaiile de executat sunt
codificate sub forma unor numere numite instruciuni. El a recomandat
sistemul binar pentru memorarea datelor i a propus instruciuni de control a
acestora. Programul de executat este descris printr-un ir de instruciuni,
care se execut consecutiv. Von Neumann a introdus ideea gruprii
instruciunilor n subrutine care s fie apelate repetat. Subrutinele des
folosite nu trebuiau reprogramate pentru fiecare nou program ci puteau fi
pstrate n biblioteci i citite din memorie atunci cnd erau necesare. Pe
lng unitile funcionale care execut operaii aritmetice, calculatorul mai
are o unitate de control, care citete secvenial instruciunile programului i
care trimite semnale ntre unitile funcionale pentru a executa aceste
instruciuni. Rezultatele intermediare sunt stocate n memorie. Aceast
arhitectur se numete von Neumann. Marea majoritate a calculatoarelor
din ziua de azi sunt bazate pe aceast arhitectur; noiunea de limbajmain, i cea nrudit, de limbaj de programare, folosite pentru descrierea
programelor, sunt concepte foarte naturale pentru toi cei care manipuleaz
calculatoarele. Von Neumann propune calculatorul s fie vzut ca sistem
de procesare a informaiei (bazat pe procesor CPU), adic un mecanism
care direcioneaz dar i realizeaz procesarea informaiei

105
105

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

(interacioneaz cu instruciuni i date preluate de la intrare i produce


rezultate la ieire).
Cunotinele anterior dobndite (o bogat colecie de circuite logice
combinaionale i secveniale) vor permite implementarea i funcionarea
logico-fizic a modelului arhitectural von Neumann. Figura 5.1 ilustreaz
structura de baz a calculatorului (arhitecturii de procesare) propus de von
Neumann pentru execuia programelor.
Se disting cinci componente principale:

Memoria: reine att instruciuni ct i date.

Unitatea de procesare: execut instruciunile din programe.

Unitatea de control: parcurge secvenial i


interpreteaz
instruciunile, controlnd fluxul de execuie al programelor.
Unitatea de intrare date (Input): permite introducerea datelor din
exterior n memoria calculatorului.
Unitatea de ieire (Output): produce rezultatul generat de program
pentru utilizator.

and
non-comercial

Figura 5.1. Modelul arhitectural von Neumann

Memoria are dou caracteristici importante: capacitatea (este de dorit


a fi ct mai mare) i timpul de acces (este de dorit a fi ct mai mic),
parametrii cu tendine antagoniste. Practic, cu ct capacitatea memoriei
crete, cu att scade timpul de acces la memorie i se ieftinete preul per
unitate de octet memorat. Creterea decalajului dintre viteza procesoarelor i
timpul de acces la memorie impune introducerea unui sistem ierarhic de
memorie, pentru a nu face simit la nivelul performanei globale a
sistemului ncetineala cu care se acceseaz memoria [Vin00].
Fiecare locaie de memorie este caracterizat de adres i coninut.
Adresa reprezint o secven binar (pattern de bii) care identific n mod

106
106

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

unic o locaie de memorie. Coninutul reprezint valoarea (patternul de


bii) stocat la respectiva adres. Numrul total de locaii de memorie
disponibile formeaz spaiul de adrese. Calculatoarele LC-2 i LC-3 dispun
16
de un spaiu de adrese de 2 locaii (magistrala de adrese este pe 16 bii).
Uzual, calculatoarele actuale sunt dotate cu o memorie principal (central)
32
de tip RAM de capacitate 1 GByte (2 adrese, la fiecare adres existnd un
cuvnt de 8 bii). Adresabilitatea constituie numrul de octei de date
(cuvnt de memorie word) disponibili la o anumit adres i utilizai de
ctre unitatea de procesare. n mod frecvent, o instruciune trebuie s scrie
sau s citeasc un ntreg cuvnt (word) la fiecare acces n memorie.
Accesarea memoriei se realizeaz prin intermediul celor doi regitrii MAR
i MDR. MAR (registrul de adres al memoriei) este ncrcat cu valoarea
adresei de la care sau la care se va citi sau scrie din / n memorie. Valoarea
din MAR va fi depus pe decodificatorul de adrese al memoriei. Pentru
instruciunile care citesc date din memorie (de tip load) coninutul memoriei
se ncarc n MDR (registrul de date al memoriei). Pentru instruciunile de
scriere n memorie (de tip store), n MDR se nscrie valoarea ce va fi stocat
n memorie la activarea semnalului WriteEnable.
Pentru o mai bun nelegere a noiunilor de adres de memorie i
respectiv coninutul memoriei, se consider urmtorul exemplu: fie o
3
memorie de tipul (2 x3-bii) a crei locaii sunt numerotate de la adresa
0002 la 1112. n aceast memorie la adresa 1102 se afl cuvntul 0002 iar la
adresa 0002 se afl cuvntul de date 0012. Se reamintete c, adresele sunt
unice (nu pot exista dou locaii distincte caracterizate de aceeai adres).
ns, coninuturile a dou sau mai multe locaii pot coincide.
Adresa
0002
0012
0102
0112
1002
1012
1102
1112

Coninut
0012

0002

Unitatea de procesare reprezint motorul de execuie al programului.


Este compus din mai multe uniti, fiecare ndeplinind o anumit funcie
complex (de la adunri, scderi la nmuliri, mpriri, extrageri de rdcin
ptrat, etc). O unitate de procesare minimal conine o unitate aritmetico-

107
107

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

logic (ALU) i un set de regitrii de uz general. Numrul de bii ai datei


cu care opereaz unitatea de procesare se numete dimensiunea cuvntului
de date (word size) al mainii (arhitecturii). ALU realizeaz operaiile
aritmetico-logice de baz (adunare / scdere / AND / NOT) n general pe
ntregul cuvnt de date (word) dar uneori i pe subdiviziuni ale acestuia
(octet, bit). Procesorul MIPS are cuvntul de date pe 32 de bii dar
instruciunile acestuia pot opera i pe octet (byte), semicuvnt (halfword).
Cuvntul de date la LC-2 este pe 16 bii, la Intel Pentium IV pe 32 de bii, la
Intel Itanium, PowerPC i Alpha Compaq pe 64 de bii. Procesoarele din
sistemele dedicate (telefoane celulare, maini de splat, frigidere,
copiatoare, imprimante, etc) necesit cuvinte de date pe doar 8 bii. Valorile
cu care opereaz unitatea aritmetico-logic sunt stocate n zone de memorie
de capacitate foarte redus i caracterizate de vitez de operare
(citire/scriere/deplasare/rotire) foarte ridicat regitrii procesorului. LC-2
deine 8 regitrii (R0R7) fiecare pe 16 bii, arhitectura Alpha ISA deine 32
de regitrii fiecare pe 64 de bii, procesoarele MIPS R2000, R3000 dein 32
de regitrii pe 32 de bii fiecare (MIPS R16000 are 64 regitrii care pot lucra
cu date att pe 64 ct i pe 32 de bii).
Unitatea de control coordoneaz toate aciunile necesare pentru
execuia instruciunilor: extrage (instruction fetch) din memorie (sau din
cache-ul de instruciuni) instruciunea, o decodific (decode), preia
operanzii corespunztori din regitrii sau memorie (operand fetch) i o
execut (execute). Folosete doi regitrii de interfa cu memoria: PC
(program counter) n alte arhitecturi poart denumirea de instruction
pointer, reine adresa urmtoarei instruciuni care va fi adus din memorie i
IR (instruction register) pstreaz instruciunea curent care se execut.
Unitile de intrare / ieire sunt cunoscute sub numele generic de
dispozitive periferice nu din cauz c sunt mai puin importante pentru
procesor ci datorit poziiei acestor dispozitive fa de CPU. n cazul
calculatorului (simulatorului) LC-3 (LC-2) dispozitivul de intrare l
reprezint tastatura cu regitrii de interfa (KBDR de date i KBSR de
stare) iar dispozitivul de ieire este monitorul cu regitrii de interfa
(CRTDR de date i CRTSR de stare). Evident c exist o varietate de
dispozitive de intrare (mouse, scanere digitale, stick-uri USB, dischete, etc)
i de ieire (imprimante, ecrane cu cristale lichide, harddisk).

108
108

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

5.2. PRINCIPIILE PROCESRII INSTRUCIUNILOR


Ideea central a modelului de procesare propus de von Neumann
evideniaz faptul c att instruciunile ct i datele sunt memorate ca i
secvene de bii, n memoria calculatorului, programul fiind executat
succesiv (pascupas) cte o instruciune la un moment dat n funcie de
direcia indicat de unitatea de control.

Figura 5.2. Calculatorul LC-3 vzut ca un model de procesare von Neumann


[Pal07]

109
109

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

Dup cum se poate observa n figura 5.2, nucleul central (inima) al


unitii de control l reprezint un automat cu numr finit de stri care
stabilete starea i ieirea automatului i a circuitelor logice conform cu
fiecare tip de instruciune (selecia regitrilor surs/destinaie, tipul
operaiei: cu registru surs sau cu valoare imediat, tipul instruciunii: de
salt necondiionat sau apel de subrutin, etc). Procesul este controlat de ctre
ceasul sistemului. Automatul cu numr finit de stri efectueaz cte o
tranziie (ciclu main) la fiecare impuls de tact (perioada de tact este
1
egal cu inversul frecvenei procesorului TCLK =
).
f CLK

5.2.1. CICLUL INSTRUCIUNII


Vzut din exterior instruciunea reprezint unitatea atomic
(fundamental) a unui program. Cu toate acestea instruciunea este divizat
pe cmpuri de ctre unitatea de control i interpretat permindu-se apoi
execuia ei. n cadrul procesoarelor RISC (MIPS, Alpha, PowerPC)
formatul instruciunilor este de lungime fix (uzual 32 de bii). Fiecare
instruciune este caracterizat de dou cmpuri de baz:
Codul operaiei (opcode): specific operaia ce se va executa.
Operanzii: sursa respectiv destinaia instruciunii.
Setul de instruciuni al calculatorului, formatul acestora, setul de
regitri, tipurile de date utilizate i modurile de adresare (mecanismul prin
care calculatorul / procesorul localizeaz operanzii) constituie arhitectura
setului de instruciuni (ISA).
Succesiunea de etape prin care trece instruciunea de la aducerea ei din
memorie pn la ncheierea execuiei sale se numete ciclul instruciunii.
Von Neumann a propus ase etape (faze de procesare ale instruciunii):
Fetch: aduce instruciunea din memorie de la adresa dat de registrul
PC i o depune n registrul instruciunii (IR). Chiar i aceast etap poate
fi divizat n subetape:
o (1) Coninutul registrului PC se depune n MAR (MAR (PC)).
o (2) Automat PC-ul este incrementat pentru a pointa spre adresa
urmtoarei instruciuni (PC (PC) + 1).
o (3) Se citete instruciunea din memorie odat cu accesarea semnalului
READ (MDR Mem[MAR]).
o (4) Instruciunea se depune din registrul de date al memoriei n IR (IR
(MDR)).

Dac subetapele (1), (2) i (4) necesit un singur ciclu de tact (operaii
foarte rapide de transfer sau adunare), subetapa (3) poate dura mai mult
n funcie de decalajul n timp dintre timpul de acces la memorie i viteza
procesorului.
Decode: este identificat operaia ce va avea loc i sunt stabilii operanzii
(regitrii surs i cel destinaie). Opcode-ul este depus pe intrarea unui
decodificator care va decide secvena de evenimente solicitate de
instruciunea n cauz.
Evaluate address: n cazul instruciunilor cu operand n memorie este
calculat adresa acestuia (cunoscut sub numele de adres efectiv
effective address).
Fetch operands: sunt determinai operanzii surs pentru execuia
instruciunilor fie din setul de regitrii generali ai procesorului fie din
memorie. Regitrii surs vor deveni operanzi de intrare pentru unitatea
aritmetico-logic sau pentru memorie. Pentru operandul stocat n
memorie este folosit adresa efectiv (EA), calculat la pasul anterior
(evaluate address).

Execute: se execut operaia codificat n instruciune. De


exemplu, pentru instruciunile aritmetico-logice se adun/scade etc.,
cei doi
operanzi (registru cu registru sau registru cu valoare imediat). Dac
instruciunea este de ramificaie (modific fluxul de control al
programului) atunci registru PC este actualizat cu o nou valoare adresa
destinaie a instruciunii de salt. Pentru instruciunile de transfer cu
memoria (load / store) n aceast faz nu se face nimic.

Store results: scrie rezultatul instruciunii n destinaia


corespunztoare (n registru sau n memorie). Adresa efectiv anterior
calculat va indica de unde se aduce rezultatul sau unde se scrie n
memorie.
O observaie care rezult se refer la faptul c nu toate instruciunile
necesit toate cele 6 faze de procesare. Pentru instruciunile care folosesc
doar regitrii (formatul R-tip la instruciunile procesoarelor RISC) faza
Evaluate Address poate fi srit (skip). Pentru instruciunile cu referire la
memorie (formatul I-tip la instruciunile procesoarelor RISC cu mod de
adresare indirect registru i nu indexat) poate fi evitat faza Execute. De
asemenea, nu toate fazele de procesare necesit acelai numr de perioade
de tact.

111
111

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

dying
Figura 5.3 Ciclul instruciunii n concepia lui von Neumann

Dup cum se poate observa n figura 5.3 unitatea de control repet


ciclul instruciunii pentru toate instruciunile din program, ghidat de
valoarea registrului PC. ntruct valoarea acestuia este incrementat pe
durata fazei fetch sau este actualizat de instruciunile de ramificaie i
control pe durata fazei execute rezult c n fiecare moment se cunoate
adresa urmtoarei instruciuni. La fel ca i n cazul structurilor de date cu
legturi (liste, arbori), cunoscnd adresa primei instruciuni se poate trece la
execuia ntregului program.
Dei nu toate tipurile de instruciuni necesit toate cele ase faze de
procesare i, n ciuda tehnicilor avansate de execuie din cadrul
4
procesoarelor pipeline superscalare care presupun pn la 20 i chiar 31 de
nivele pipeline de procesare (vezi Intel Pentium 4 versiunile Northwood i
Prescott), fazele de procesare propuse de von Neumann (v.N) au rmas
4

Tehnica de procesare pipeline reprezint o tehnic de procesare paralel a informaiei prin


care un proces secvenial este divizat n subprocese, fiecare subproces fiind executat ntr-un
segment special dedicat i care opereaz n paralel cu celelalte segmente. Fiecare segment
execut o procesare parial a informaiei. Rezultatul obinut n segmentul i este transmis n
tactul urmtor spre procesare segmentului (i+1). Rezultatul final este obinut numai dup ce
informaia a parcurs toate segmentele, la ieirea ultimului segment. Denumirea de pipeline
provine de la analogia cu o band industrial de asamblare. Este caracteristic acestor tehnici
faptul c diversele procese se pot afla n diferite faze de prelucrare n cadrul diverselor
segmente, simultan.

112
112

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

actuale i n ziua de azi. Din punct de vedere al performanei sistemelor de


calcul, evoluia de la modelul de procesare propus de von Neumann la cele
actuale const n urmtorul fapt: modelul iniial (v.N) presupunea c
instruciunile sunt executate secvenial, una cte una; doar dup ce o
instruciune aflat n curs de execuie a efectuat faza store result o alta poate
efectua faza fetch. Procesoarele moderne presupun un paralelism att
temporal de tip pipeline (mai multe faze de procesare aferente unor
instruciuni diferite executate n acelai timp) ct i unul spaial de tip
superscalar (mai multe uniti de execuie aferente aceleai faze de
procesare).

5.2.2. TIPURI DE INSTRUCIUNI


Calculatorul (simulatorul) LC-3 deine un set de 16 instruciuni, astfel
nct cmpul opcode este codificat pe 4 bii. De asemenea, zona temporar
de stocare din cadrul unitii de procesare (regitrii procesorului) const din
8 locaii (R0-R7). Codificarea operanzilor (surs, destinaie) n corpul
instrucii se face pe 3 bii per operand. Se disting trei mari categorii de
instruciuni [Patt03]:
z Operaionale (instruciuni de procesare a datelor aritmeticologice)

Figura 5.4. Exemplu de instruciune de adunare la calculatorul LC-3

Semantica instruciunii din figura 5.4 este urmtoarea: ADD R6, R2, R6
sau Adun coninutul registrului R2 la coninutul registrului R6 i
stocheaz rezultatul n registrul R6.
z

Instruciuni de transfer date (transfer de date ntre memorie i


regitrii procesorului)
Pentru exemplificare se consider instruciunea LDR (ncarc o dat de
la o locaie de memorie ntr-un registru al procesorului). Adresa de memorie
se determin printr-o adunare dintre un registru de baz i un deplasament
(offset). Este ntlnit n cazul instruciunilor din programele de nivel nalt
care prelucreaz structuri de date omogene (vectori, matrici).

113
113

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

Figura 5.5. Exemplu de instruciune de aducere din memorie la calculatorul LC-3

Semantica instruciunii din figura 5.5 este urmtoarea: LDR R2, 6(R3)
sau Adun valoarea 6 la coninutul registrului R3 pentru a forma
adresa de memorie. ncarc data din memorie de la adresa calculat n
registrul R2.
z

De Control (Instruciuni de ramificaie sau modificare a fluxului


de execuie al programului). n cadrul acestei categorii se ncadreaz
instruciunile de salt condiionat, necondiionat, indirecte, de apel de
subrutine.
Teorema lui Bhm-Jacopini afirm c orice program (de nivel nalt)
poate fi descris folosind structuri secveniale, alternative i repetitive. Astfel,
dac nu apare n cadrul programului nici o structur alternativ (if/else,
switch/case) sau repetitiv (repeat, while, for) n faza FETCH unitatea de
control aduce cte o instruciune de la adresa dat de PC i i incrementeaz
apoi valoarea acestuia. Instruciunile de ramificaie din programele
asamblare poart numele de jump-uri (salturi) sau branch-uri. Jump-urile
sunt necondiionate (modific ntotdeauna PC-ul) iar branch-urile sunt
condiionate (modific PC-ul doar dac o condiie logic este ndeplinit,
spre exemplu dac coninutul unui registru este egal cu 0). Pentru aceste
instruciuni pe durata fazei EXECUTE este actualizat PC-ul cu adresa
destinaie a saltului.
Pentru exemplificare se consider instruciunea JMPR (ncarc PC-ul
cu valoarea obinut prin adugarea unui offset la coninutul unui registru al
procesorului. Valoarea care se ncarc n PC reprezint adresa instruciunii
de la care se continu procesarea).

Figura 5.6. Exemplu de instruciune de salt necondiionat la calculatorul LC-3

Semantica instruciunii din figura 5.6 este urmtoarea: JMPR R3, #6


sau Adun valoarea 6 la coninutul registrului R3 i ncarc rezultatul
obinut n registrul PC.

114
114

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

5.2.3. CEASUL PROCESORULUI


Motorul ntregii activiti de procesare a instruciunilor l reprezint
semnalul de ceas. Ceasul sistemului este semnalul care ine unitatea de
control n micare. La fiecare impuls de tact (ceas) unitatea de control
tranziteaz la urmtorul ciclu main (urmtoarea instruciune sau
urmtoarea faz din instruciunea curent) vezi figura 5.7.

Figura 5.7. Ciclul instruciunii vzut ca un automat cu numr finit de stri


\

Circuitul generator de semnal de tact este bazat pe un cristal de cuar


oscilator, care genereaz secvene regulate de nivele logice 0 i 1.
Perioada de tact se determin ntre dou fronturi ascendente ale semnalului
de ceas (vezi figura 5.8b).

Oprirea sistemului de calcul


Programele utilizator se ncheie prin transferarea controlului
sistemului de operare (cea mai important aplicaie software care ruleaz pe
un sistem de calcul i care are printre funciile sale pe cea de gestionare a
procesorului i a celorlalte resurse hardware). n continuare, sistemul de
operare intr ntr-o bucl de ateptare pn cnd este lansat o nou
aplicaie utilizator. n tot acest timp, unitatea de control este activ i
parcurge ciclul instruciunii aferent instruciunilor componente programelor
utilizator sau a celor aparinnd sistemului de operare. Oprirea sistemului de
calcul presupune oprirea unitii de control, deci anularea semnalului de tact
care reprezint pulsul sistemului. Acest lucru se realizeaz printr-o
operaie de SI logic cu un generator de semnal 0- logic (vezi figura 5.8a.
Generatorul de semnal 0 este un bistabil de tip R-S pe a crui intrri R i
S se seteaz valorile 0 i 1 (R=0 i S=1).

115
115

Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software

Figura 5.8. Oprirea sistemului de calcul

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