You are on page 1of 97

Universitatea “ Alexandru Ioan Cuza “

Facultatea de Informatică
Departamentul de Învăţămînt la Distanţă

Adrian Buburuzan

PRACTICĂ HARDWARE

2005 – 2006
Iaşi
Adresa autorului: Universitatea “Al. I. Cuza“
Facultatea de informatică
Str. Berhelot 16
700483 – Iaşi, Romania
E-mail: bubu@info.uaic.ro

ii
Prefaţă

În ziua de azi calculatoarele în general şi în particular calculatoarele personale


(PC) constitue unul din principalele mijloace prin care societatea contemporană a reuşit
să atingă obiective şi performanţe în ştiinţă şi în industrie care nu ar fi fost posibile fără
existenţa lor.
Noţiunile prezentate în materialul de faţă vor să constitue un ajutor în înţelegerea
modului de construcţie a acestor calculatoare şi prin aceasta lansează o invitaţie la o
folosire mai eficace a acestora prin adoptarea unor parametrii mai optimi de setare şi
exploatare în practica cotidiană. Noţiunile generale de la disciplina de „ Arhitectura
calculatoarelor „ sunt particularizate la această arhitectură de calculatoare personale
cunoscute şi sub numele de calculatoare compatibile IBM ( după firma care a
implementat prima dată acest tip de arhitectură ) .
Fiecare capitol caută să competeze tabloul general al unui calculator cu concepte
particulare specifice acestor calculatoare PC . Această arhitectură va continua să existe şi
în următorii ani şi va continua să se dezvolte prin apariţia unor componente mai
performante ( procesoare ,memorii , noi dispozitive de intrare-ieşire etc ) precum şi de
standarde de transmisie a datelor mai rapide .

Iaşi, decembrie 2005


ing. Adrian Buburuzan

1
Cuprins

Prefaţă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Cap.1 Arhitectura sistemelor de calcul . . . . . . . . . . . . . . . . 9
1.1 Arhitectura generalizată von Neumann . . . . . . . . . . . 9
1.2 Evoluţia şi tendinţe în domeniul arhitecturii interne . . . . . . 12
Cap.2 Componentele hard ale unui calculator personal ( PC ) . . . . . . . 17
2.1 Nivele de acces ale hardware-lui . . . . . . . . . . . . . . 17
2.2 Componentele de bază ale unui PC . . . . . . . . . . . . . 20
2.3 Succesorii PC-ului original . . . . . . . . . . . . . . . . 31
Cap.3 Arhitectura internă a procesoarelor din famila Intel pe 16 biţi . . . . 33
3.1 Unitaţile interne ale procesorului Intel 8088 . . . . . . . . . .33
3.2 Regiştrii procesorului Intel 8088 . . . . . . . . . . . . . . 34
Cap.4 Noţiuni despre funcţionarea şi adresarea datelor la procesoarele
Intel 8088 . . . . . 45
4.1 Funcţionarea procesorului la nivel de magistrală . . . . . . . . 45
4.2 Moduri de adresare la procesorul Intel 8088 . . . . . . . . . . 47
4.3 Codificarea internă a instrucţiunilor . . . . . . . . . . . . . 51
4.4 Stiva . . . . . . . . . . . . . . . . . . . . . . . . . 52
Cap.5 Întreruperi . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.1 Întreruperi hardware şi software . . . . . . . . . . . . . . 55
5.2 Procesoare CISC şi RISC . . . . . . . . . . . . . . . . 62
Cap.6 Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.1 Generalităţi . . . . . . . . . . . . . . . . . . . . . . 65
6.2 Alocarea memoriei la sistemul de operare DOS . . . . . . . . 67
6.3 Memoria video . . . . . . . . . . . . . . . . . . . . 70
6.4 Memoria cache . . . . . . . . . . . . . . . . . . . . 74
Cap.7 Sistemul de I / O . . . . . . . . . . . . . . . . . . . . . . . 79
7.1 Port de intrare . . . . . . . . . . . . . . . . . . . . . 79
7.2 Port de ieşire . . . . . . . . . . . . . . . . . . . . . 81
7.3 Comunicaţii seriale . . . . . . . . . . . . . . . . . . . 84
7.4 Controlul mişcării unui motor pas cu pas . . . . . . . . . . 85
Cap.8 Multimedia . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.1 Elemente de bază ale sunetului în format digital . . . . . . 88
8.2 Prelucrări ale sunetului în format digital. Plăci de sunet. . . . . 91
8.3 Prelucrări video . . . . . . . . . . . . . . . . . . . . 93
8.4 Consideraţii finale . . . . . . . . . . . . . . . . . . 93
Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2
INTRODUCERE

O scurta istorie a calculatoarelor

O data cu dezvoltarea societatii umane s-a ivit nevoia sa se pastreze o urma a


numerelor care erau implicate în comertul care a inceput sa se dezvolte. Degetele de la
mâna, nodurile pe o sfoara, betisoarele, pietricelele si alte asemenea elemente au fost
folosite în scopul memorarii acestor numere. Abacul a fost primul echipament rudimentar
de calcul si se pare ca este originar din China dar a fost gasit si in alte culturi antice.
Acest simplu "echipament" care foloseste bile si sârme pentru a reprezenta numerele si a
face calcule este folosit si astazi.

Oameni si contributia lor


Despre un prim echipament de calcul s-au gasit surse care nominalizeaza pe un
profesor de astronomie, Wilhem Schickard din Turbingen, Germania, care a desenat o
ingenioasa masina de adunat, scazut, si chiar, pentru numere mai, mici, de înmultit si
împartit. Înainte ca proiectul sa fi fost terminat, atelierul a ars împreuna cu masina în
constructie iar autorul a murit înainte sa construiasca un model nou.
Un mester mecanic a recreat mai târziu dupa schitele dintr-o scrisoare acest
instrument, însa într-o varianta simplificata. Poate daca inventia initiala s-ar fi pastrat,
alta ar fi fost istoria calculatoarelor!
Un pas înainte s-a facut prin descoperirea de catre scotianul John Napier în jurul
anului 1600 a logaritmilor care permiteau ca operatiile de înmultire si împartire sa fie
transformate în adunari si scaderi.
Folosind aceasta proprietate, Robert Bissaker inventeaza rigla de calcul care a fost
folosita pâna în anii 1970 în calculele ingineresti unde nu se cerea o precizie de multe
zecimale.
Blaise Pascal matematician si filozof francez a inventat primul calculator numeric
care putea sa adune si sa scada numere.Totusi, acest echipament se pare ca nu era la fel
de evoluat cum a fost masina construita de Schickard. "Pascalina" cum a fost denumita,
reusea sa aduca o economie de timp fata de calculele manuale. Principiul ei se pastreaza

3
si astazi la instrumentele mecanice de contorizat cum ar fi contorul electric, kilometrajul
la automobile etc..
Un limbaj de programare Pascal, a fost menit sa poarte numele lui, drept
recunoastere a contributiei avute în evolutia calculatoarelor.
Mai târziu, (1673), în Germania matematicianul Leibnitz- care împreuna cu
Newton au creat calculul diferential- creaza o masina mecanica care efectua toate cele
patru operatii aritmetice, dar aceasta nu a fost folosita pe scara larga datorita
complicatiilor ce interveneau în constructia sa.
Francezul Jacquard, în 1808 construieste o masina automata cu cartele perforate
ce era folosita la razboaiele de tesut. Inventia lui Jacquard a aratat ca datele trebuie sa fie
codate pe cartele; cartelele trebuie sa fie unite într-un lant pentru a crea o serie de
instructiuni si aceste instructiuni pot automatiza tesutul razboiului. Instructiunile
programabile s-au dovedit a fi un concept de mare importanta în calculatoarele moderne.
Anul 1822 aduce o noua masina de calcul prin englezul Charles Babbage.
Calculatorul avea o memorie mecanica pentru a memora rezultatele.
Datorita alocatiilor asigurate de catre guvern Babbage continua cercetarile si
propune o noua masina "analitica" de calcul, la care intrarea datelor s-ar fi facut prin
cartele perforate iar masina ar fi putut sa-si schimbe procedurile de operare. Ar fi fost
necesare 6 masini de abur pentru punerea în miscare si ar fi ocupat un spatiu de marimea
unui teren de fortbal putând sa calculeze tabele matematice si logaritmi!Masina
bineînteles ca nu a fost construita niciodata dar conceptul ei l mecanic a fost un
predecesor predecesor al calculatoarelor electronice moderne.
Babbage a avut un partener, Augusta Ada, contesa de Lovelace si fiica poetului
Lord Byron care i-a înteles ideile si a recunoscut valoarea acestora. In 1840 aceasta scrie,
o serie de articole stiintifice care prezinta aceste idei noi comunitatii stiintifice. Ea
sugereaza chiar folosirea sistemului binar pentru memorare în locul sistemului zecimal.
Totodata ea este considerata si "primul programator" din cauza ca a inclus si repetarea
automata a unor serii de calcule în functionarea masinii analitice folosirea buclelor de
program fiind si astazi un lucru curent folosit de catre programatori.
In 1850, George Boole, matematician englez realizeaza ca probleme matematice
complexe pot fi rezolvate prin reducere la o serie de raspunsuri pozitive si negative.

4
Sistemul binar care foloseste 1 pentru afirmatie si 0 pentru negatie poate fi folosit; în
acest caz aceasta teorie de logica Boole devenind fundamentala pentru proiectarea
circuitelor dintr-un calculator.
In anii 1880, dr. Herman Hollerich construieste primul perforator electromecanic
de cartele folosind cartela cu 80 de coloane. Folosind acest sistem de cartele s-a realizat
primul recensamânt mecanizat al populatiei în anul 1890, în 1/4 din timpul cât se realiza
pâna atunci. Cartelele perforate folosite în calculatoarele numerice din anii 1970 se
numeau cartele Hollerich si erau identice cu cele din secolul trecut.
Urmeaza o perioada de cîtiva zeci de ani in care nu se remarca nimic spectacular
în domeniul calculatoarelor. Abia în 1927 la Massachusetts Institte of Technology (MIT),
Bush si echipa sa construiesc o masina electromecanica care rezolva ecuatii diferentiale
simple.
George Stibitz, cercetator matematician la Bell Telephone Laboratory intuieste ca
logica Boole furnizeaza un limbaj natural pentru circuitele electromecanice. Masina
creata de el folosind baterii, becuri, sârme controla fluxul de electricitate prin DA sau NU
(ON sau OFF). Numita calculator complex numeric masina aduna numere binare. Tot el
împreuna cu un coleg, Samuel Williams demonstreaza cum folosind acest echipament si
un teletype poate transmite rezultatele calculelelor la distanta de 250 mile.
John Atanasoff si Clifford Berry construiesc în 1931 un calculator de uz general
numit ABC (Atanasoff, Berry Computer) pentru rezolvarea ecuatiilor algebrice. Când
Atanasoff contacteaza firma IBM care se ocupa de productia de masini de scris în scopul
eventual al producerii de calculatoare de acest gen, compania IBM spune ca nu va fi
niciodata interesata de masini de calcul electronice!!
Konrad Zuse in 1941 construieste în Germania un prim calculator electronic care
foloseste logica binara cu toate ca nu auzise de G. Boolle. Pentru cresterea vitezei
propune folosirea tuburilor electronice în locul releelor electromecanice. Hitler îi refuza o
subventie de la stat în scopul terminarii proiectului. motivând ca razboiul va fi terminat
inaintea finalizarii masinii.
Englezii construiesc in 1943 o masina care era capabila sa prelucreze peste 25.000
caractere pe secunda. Cercetarile sunt facute sub conducerea matematicianului de geniu
Turing si în constructia ei sunt folosite tuburi electronice asa cum propusese germanul

5
Zuse. Scopul acesteia era descifrarea mesajelor criptate cu masinile Enigma folosite de
germani în al II-lea razboi mondial.
In 1950 Alan Turing construieste "Automatic Computing Engine ACE) care este
considerat unul din primele calculatoare programabile.
In SUA matematicianul Howard Aiken construieste un calculator programabil
similar cu cel mecanic propus de Babbige numit MARK I. In constructia sa sunt folosite
relee electromecanice.Calculele cu numere de 23 de cifre necesitau 3 secunde si calcule
manuale de 6 luni puteau fi facute într-o zi. Calculatorul a fost folosit pentru calculul
tabelelor balistice de catre militari.
Alti doi americani, John Mauchly si Prosper Eckert construiesc un calculator
numit ENIAC care printre cele 100.000 componente electronice folosea 17.484 de tuburi
electronice. ENIAC opera în sistemul zecimal, folosea cartele perforate dar era extrem de
dificil de schimbat programul ,acesta fiind cablat manual cu ajutorul sârmelor.
Constructia sa a fost terminata dupa sfârsitul razboiului si a fost folosita în calculelele
pentru prognoza vremii., tunelele aerodinamice, tabele balistice si studiul razelor
cosmice. Chiar inainte de terminarea constructiei sale cei doi constructori si-au dat seama
ca ENIAC nu este perfect si au început proiectarea succesorului numit EDVAC care a
fost terminat in 1949. Acesta folosea instructiunile memorate (programul în memorie) si
folosea sistemul binar.
Dezvoltarea calculatoarelor care foloseau conceptul de program memorat a fost
revendicat de mai multi inventatori dar pâna la urma paternitatea ideii a fost atribuita lui
John von Neumann, matematician de geniu care prin articolele si lucrarile sale legate de
proiectul calculatorului. EDVAC a fundamentat aceasta idee.
In anii 1949 la Universitatea Harward se pun bazele dezvoltarii memoriilor pe
miezuri de
ferita de catre Wang. Se pune astfel la dispozitia calculatoarelor un raport de memorie
mai ieftin si de dimensiuni mai mari pentru programe mai complexe.
Manchly si Eckert în 1951 îsi înfiinteaza propria companie care va produce
primul calculator comercial numit UNIVAC. Pâna atunci calculatoarele erau folosite doar
pentru aplicatii militare sau stiintifice .

6
In anul 1954 compania General Electric folosea un calculator pentru facturarea
consumului de energie electrica al abonatilor. Alte companii existente ca Honeywell sau
IBM realizeaza potentialul comercial al calculatoarelor si trec la realizarea propriilor
calculatoare pe care sa le ofere la vânzare.
Marina Statelor Unite realizeaza în anii 1950-1952 primul simulator de zbor
folosind un calculator ce efectua 50.000 de operatii pe secunda. Deasemeni tot un astfel
de calculator era folosit la supravegherea spatiului aerian.
Alte inovatii apar în anii "50. Astfel Jack Kilby si Robert Noyce descopera
posibilitatea obtinerii circuitelor integrate pe un "chip" de siliciu. Aceste descoperiri vor
fi introduse în 1962 în productie iar în 1964 în calculatoare. IBM"System 360 este
primul calculator care foloseste circuite integrate.
Miniaturizarea componentelor dezvoltata de diferiti inovatori va duce la succesul
comercial al calculatoarelor. Apare si primul minicomputer produs de compania DEK si
cunoscut sub numele de PDP-1. Având dimensiuni mai modeste putea fi cumparat si
folosit de companii mai mici care nu-si puteau permite achizitionarea unuia din categoria
numita "mainframe".
Aceste calculatoare încep sa devina din ce în ce mai mari si puternice. Astfel
amintim calculatorul ILLIAC IV care intra în categoria supercomputerelor precum si
seria de calculatoare CRAY dezvoltate în 1976 de catre Seymour Cray, despre care se
spune ca un exemplar si-a platit costul în prima ora de functionare când aplicatia care rula
a descoperit pe una din fotografiile de satelit un zacamânt de petrol în valoare de câteva
zeci de milioane de dolari.
Progrese se fac si în domeniul limbajelor de programare, începând din anul 1950.
Un grup de ingineri de la IBM dezvolta primul limbaj de programare orientat pe
probleme algebrice numit FORTRAN (Formula Translator). In anul 1959 apare limbajul
COBOL destinat afacerilor. Apar si alte limbaje precum BASIC, PASCAL,C, C++ etc..
În 1970 firma Intel creaza un chip de memorie care putea memora 1 kilobit de
informatie. Un cercetator tot de la Intel, Ted Hof reuseste sa proiecteze si integreaza pe
un singur circuit primul microprocesor pe 4 biti numit Intel 4004, ceea ce va duce la
constructia primelor calculatoare numite "home computers" cum ar fi Commodore sau
Apple.

7
Evolutia tehnologica a calculatoarelor
Calculatoarele s-au schimbat de-a lungul timpului; si-au crescut viteza, puterea si
eficienta. Aceste schimbari au dus la încluderea calculatoarelor în generatii functie de
specificul lor.
Generatia I (1951-1959) - folosea sute de tuburi electronice, benzi magnetice
pentru memorie externa si cartele perforate pentru intrarea datelor iar operatorii umani
aveau rolul de a aseza o serie de comutatoare pe pozitiile 0 sau 1 conform schemelor
cerute de program. Se folosea limbajul masina si de asamblare în programarea lor. Ca
exemplu, din aceasta categorie este calculatorul UNIVAC I.
Generatia II. (1959-1965) - este caracteristica prin folosirea tranzistoarelor si
elementelor semiconductoare pentru realizarea logicii calculatorului, memorie interna pe
miezuri magnetice, banda magnetica dar si diskul magnetic care este introdus ca memorie
externa. Cartelele magnetice ca suport pentru datele de intrare, cartele perforate si hârtie
cu suport pentru datele de iesire, încep sa fie folosite limbaje de nivel înalt în programele
lor _FORTRAN, COBOL, BASIC - operatorii manevrau cartelele perforate. Ca exemplu,
poate fi folosit calculatorul Honeywell 200.
Generatia III. (1965-1971) - foloseste circuitele integrate ca elemente logice, se
impune folosirea discului magnetic ca memorie externa, monitoare si tastaturi pentru
intrarea si iesirea datelor, primele sisteme de operare complete care reduc la minimum
interventia operatorilor umani , se introduce conceptul de "familie de calculatoare" ce
permite adaptarea mai usoara a unui calculator la necesitatile beneficiarului prin
extinderea si actualizarea echipamentului si softului. Exemplu tipic este IBM System
360.
Generatia a IV-a (1971 - prezent) - introduc circuitele cu grad mare de integrare
care pot contine sute de mii si milioane de tranzistoare, se introduc microcalculatoarele si
microprocesoarele ca Intel 386, 486, Pentium iar gama de aplicatii cuprinde aproape tot
spectrul afacerilor si cercetarii stiintifice .
Pentru viitor se prevede dezvoltarea calculatoarelor pe baza inteligentei artificiale,
sistemele expert fiind deja în uz si se spera sa se ajunga la adevaratele calculatoare care
pot "gândi".

8
Cap1. ARHITECTURA SISTEMELOR DE CALCUL

O posibilă clasificare a sistemelor de calcul se poate face după modul în care se


face prelucrarea informaţiei. După acest criteriu putem avea:
a. sisteme cu un singur procesor atunci când se foloseşte o singură unitate
centrală de prelucrare (se foloseşte prescurtarea CPU – Central Processing
Unit).
b. sisteme multiprocesor atunci când în scopul creşterii vitezei de prelucrare se
adaugă încă un procesor, de exemplu coprocesorul matematic sau se cuplează
mai multe procesoare identice care pe lângă creşterea vitezei măresc
fiabilitatea sistemului, sarcinile unui procesor defectat fiind automat preluate
de un alt procesor.
c. reţele de calculatoare care formează sisteme informaţionale distribuite pe
distanţe mari şi au un caracter aparte din punctul de vedere a proiectării şi
funcţionării.

Un model de arhitectură pentru un sistem de calcul care este folosita în analiza şi


proiectarea sistemelor de calcul a fost introdusă de savantul american John von Neumann
ca rezultat al participării sale la construcţia în anii 1944 – 1945 a calculatorului ENIAC în
S.U.A. Aceasta este cunoscută în literatura de specialitate ca arhitectura von Neumann.

1.1 Arhitectura generalizată von Neumann

După cum se observă în figura 1.1., un sistem de calcul este format din 3 unităţi
de prelucrare care sunt conectate între ele prin 3 căi (numite bus-uri) separate de transfer
a informaţiei.
Vom analiza pe scurt scopul acestor elemente.
A. Unitatea centrală de prelucrare (CPU – Central Processing Unit) are rolul de
a extrage instrucţiunile (care sunt de fapt comenzile programului ca adună, scade, verifică
semnul rezultatului, etc.) memorate într-un dispozitiv de stocare numit memorie,

9
Lumea

Externa

fig 1.1

de a decodifica aceste instrucţiuni şi apoi de a prelucra datele care sunt cerute de


instrucţiuni. Rezultatele acestor prelucrări pot fi depozitate într-un registru intern al C.P.
U., să fie depus într-o locaţie de memorie sau trimis la un dispozitiv de intrare / ieşire
(I/O – input/output).
Se observă că execuţia unei instrucţiuni presupune execuţia următoarei secvenţe
de acţiuni:
a. Depunerea pe busul de adresă a unei informaţii care localizează adresa de
memorie ce conţine câmpul de cod al instrucţiunii (secvenţa de ADRESARE).
b. Citirea codului instrucţiunii şi depunerea acestuia într-un registru intern al
decodificatorului de instrucţiuni. Această informaţie este vehiculată pe busul
de date (secvenţa de LECTURĂ).
Deobicei aceste doua secvenţe sunt reunite in una singura numita secvenţa de
FETCH.

10
c. Decodificarea codului instrucţiunii în urma căreia CPU va cunoaşte ce
instrucţiune are de executat şi ca urmare pregăteşte modulele ce vor participa
la instrucţiunea respectivă (secvenţa DECODIFICARE)
d. Execuţia efectivă a operaţiei specificate de de instrucţiune (adunare, scădere,
salt, etc.) – secvenţa de EXECUŢIE.
Se continuă cu extragerea instrucţiunii următoare şi trecerea ei prin secvenţele
amintite ş.a.m.d.
Sincronizarea operaţiilor amintite se realizează prin generarea unui set de
informaţii pe magistrala de comenzi.
B. Unitatea de memorie în cadrul arhitecturii von Neumann are rolul de a stoca
instrucţiunile pentru CPU, precum şi datele asupra cărora vor opera instrucţiunile
(operanzii ). Aceste instrucţiuni trebuie să fie memorate anterior începerii desfăşurării
programului de prelucrare. Deasemeni unele date se vor memora anterior pornirii
prelucrării iar rezultatele prelucrării se memorează în timpul execuţiei programului.
Această memorie, realizată în diverse tehnologii de-a lungul evoluţiei calculatoarelor
constituie suportul fizic necesar desfăşurării operaţiilor executate de CPU.
Informaţia în memorie este stocată la aşa-numitele adrese. Pentru accesarea unei
informaţii din memorie se furnizează acesteia adresa acelei informaţii iar circuitele de
control al memoriei vor furniza conţinutul adresei care reprezintă informaţia cerută.
Similar şi la scrierea în memorie.
Tehnologic, dispozitivele de memorie pot reţine informaţia
¾ numai când sunt alimentate electric şi avem de-a face cu aşa-zisa memorie
volatilă
¾ atunci când nu sunt alimentate electric formând memoria nevolatilă şi care
este folosită în mod special la stocarea programelor pentru iniţializarea
calculatorului şi stocării sistemului de operare.
C. Dispozitivele de intrare – ieşire I/O (input/output) permit transferul
informaţiei între CPU, memorie şi lumea externă.
Funcţional, aceste dispozitive de I/O pot fi adresate (apelate) de către CPU similar
ca şi memoria ele dispunând de asemeni de câte un set de adrese. În mod clasic, schimbul
de informaţii cu exteriorul se face sub controlul CPU dar există tehnici care vor fi

11
amintite mai târziu atunci când accesul la memorie se poate face şi fără intervenţia CPU
(aşa-numitele transferuri DMA – Direct Memory Access).
D. Busul de date este acea cale care leagă cele 3 blocuri funcţionale (o parte a sa
poate să iasă şi în exteriorul sistemului) şi pe care se vehiculează datele propriu-zise
(numere sau caractere) sau instrucţiunile programului.
E. Busul de adrese este calea pe care sunt transmise de CPU adresele către
memorie când se face o operaţie de citire sau scriere cu memoria sau se vehiculează
adresele dispozitivului de I/O în cazul unui transfer cu un periferic.
F. Busul de comenzi vehiculează semnalele de comandă şi control către toate
aceste blocuri şi care permit o sincronizare armonioasă a funcţionării sistemului de
calcul.
Arhitectura de tipul von Neumann a fost o inovaţie în logica maşinilor de calcul
care s-au construit până atunci prin faptul că sistemul trebuia să aibă o cantitate de
memorie, similar cu creierul uman, în care să fie stocate atât datele cât şi instrucţiunile de
prelucrare (programul). Acest principiu al memoriei a reprezentat unul din fundamentele
arhitecturale ale calculatoarelor. Era vorba chiar de pogramele stocate în memorie şi nu
numai a datelor.
Notă: A început să apară din ce în ce mai clar care este aplicabilitatea memoriei.
Datele numerice puteau fi tratate ca şi valori atribuite unor locaţii specifice ale memoriei.
Aceste locaţii erau asemănate cu nişte cutii poştale care aveau aplicate etichete
numerotate de exemplu 1. O astfel de locaţie putea conţine o variabilă sau o instrucţiune.
A devenit posibil ca datele stocate la o anumită adresă să se schimbe în decursul
calculului ca urmare a paşilor anteriori. În acest mod numerele stocate în meorie au
devenit simboluri ale cantităţilor şi nu neapărat valori numerice, în acelaşi fel cum
algebra permite manipularea simbolurilor x şi y fără a le specifica valorile !
Calculatoarele ulterioare şi mai târziu microprocesoarele au implementat această
arhitectură care a devenit un standard.

1.2. Evoluţia şi tendinţe în domeniul arhitecturii interne


Această arhitectură internă a fost dezvoltată în mai multe direcţii rezultând
sisteme de calcul cu posibilităţi noi şi adaptate noilor cerinţe cerute de societate. Pentru a

12
vedea aceste noi direcţii ne vom folosi de o clasificare a sistemelor după
arhitectura internă propusă de cercetătorul Flynn:
1. SISD (Single Instruction Single Data – o instrucţiune o dată) sunt
sistemele uzuale cu un singur microprocesor. Aici se încadrează microprocesoarele
clasice cu arhitectură von Neumann pe 8, 16, 32, 64 biţi cu funcţionare ciclică – preluare
instrucţiune, execuţie instrucţiune (rezultă prelucrarea datelor) ş.a.m.d.
Tot în această categorie trebuie introdusă şi aşa-numitele procesoare de semnal
DSP (Digital Signal Processors) folosite actual de exemplu în plăcile de sunet, telefonie
mobilă, etc.
2. SIMD (Single Instruction Multiple Data – o instrucţiune cu mai multe
date) sunt sistemele cu microprocesoare matriceale, la care operaţiile aritmetice se
execută în paralel pentru fiecare element al matricei, operaţia necesitând o singură
instrucţiune (se mai numesc şi sisteme de procesare vectorială). În principiu SIMD arată
ca în figura 1.2.
Eficienţa SIMD-urilor se dovedeşte a fi ridicată în cazul unor programe cu
paralelisme de date masive puse în evidenţă de exemplu de anumite bucle de programe.
Exemplu de folosire a acestui tip de arhitectura este familia procesoarelor Intel Pentium
MMX (Multi-Media eXtension) care are la baza o arhitectura SIMD. Aceasta familie de
procesoare cuprinde un set de 57 de instructiuni noi ,4 noi tipuri de date si un set nou de
registrii destinat accelerarii executiei aplicatiilor multimedia. (grafica 2D si 3D,video
,procesare de imagini si sunete stereo ) .Aplicatiile multimedia impun manipularea unor
date de dimensiuni mici (8 sau 16 biti) in parallel pentru cele 3 canale de culoare sau cele
2 canale de sunet stereo cu aceiasi instructiune dar date diferite pe aceste canale
multimedia.
3. MISD (Multiple Instruction Single Data – mai multe instrucţiuni cu o
dată) .
Sunt sistemele care folosesc microprocesoare pipeline (conductă), metodă
folosită de către procesoarele recente (Pentium sau echivalente). La un astfel de
microprocesor de exemplu în paralel se execută instrucţiunea n, se decodifică
instrucţiunea n+1 şi se aduce în memorie instrucţiunea n+2. Această arhitectură a fost
inspirată de banda de montaj a produselor industriale ( automobile , televizoare , etc )

13
ALU 1 ALU 2 ALU n

Mem 1 Mem 2 Mem n

Retea interconectare ( R C )

Fig. 1.2.

Amintim tot aici şi aşa – numita arhitectură Harward în care zonele de memorie
pentru instrucţiuni au căi de adrese şi date distincte faţă de zonele de memorie destinate
datelor rezultând astfel o creştere a vitezei.
Celebrele supercomputere Cray a anilor 1970 foloseau de asemenea arhitectura
MISD. Procesoarele Pentium MMX .Pentium Pro, Pentium 2 si urmatoarele au
impementate o structura de tip MISD cu 2 benzi de asamblare (Pentium MMX) sau 3
benzi de asamblare (Pentium Pro si urmatoarele din serie) care fac sa poata fii executate
doua sau trei instructiuni in paralel intr-un impuls de ceas.

4. MIMD (Multiple Instruction Multiple Data – mai multe instrucţiuni, mai


multe date) sunt acele sisteme în care se încadrează atât supercalculatoarele cu
procesoare dedicate cât şi sistemele multiprocesoare (vezi fig. 1.3).
Să mai subliniem faptul că aceste reţele de interconectare (RC) pot implementa de la
simpla arhitectură de sistem multiprocesor (SM) pe BUS COMUN (uniBUS – când

14
Mem 1 Mem 2 Mem 3

Retea interconectare ( R C )

P1 P2 P3

Fig. 1.3

numai un procesor are acces la BUS celelalte aşteptând eliberarea busului) până la
arhitecturi complexe de tip CROSSBAR care permite accesul simultan al tuturor
microprocesoarelor la modulele de memorie globală cu condiţia să nu existe două
microprocesoare care să acceseze simultan acelaşi modul de memorie globală.
Exemplu: - firma DEC a produs un sistem având 16 procesoare PDP11/40
interconectate crossbar.
Pentru astfel de arhitecturi paralele cum se numesc acestea (MIMD) există şi
sisteme de operare care asigură rularea în paralel a diferitelor procese. Astfel avem
sisteme de operare (SO)
a) master – slave la care funcţiile SO sunt ataşate unui microprocesor distinct –
master – iar restul microprocesoarelor – numite slave – accesează aceste
funcţii indirect prin intermediul unui microprocesor master.

15
b) divizat – nu există un microprocesor evidenţiat, fiecare microprocesor având
funcţiile de sistem separat plasate în memorie.
c) flotant – când funcţiile SO sunt plasate în memoria comună putând fi accesate
de oricare microprocesor al sistemului, astfel ele “plutesc” de la un
microprocesor la altul.
Tot în cadrul acestei ultime categorii trebuie amintite aşa – numitele transputere
care sunt de fapt microcalculatoare integrate într-un singur circuit, cu proprie memorie şi
reţea de conectare punct cu punct cu alte transputere din aceeaşi categorie. Cu acestea se
pot construi maşini SIMD sau MIMD folosindu-se limbaje de programare specifice
proceselor paralele (ex. ORCAM), precum şi algoritmi paraleli.

Întrebări la cap. 1
1. Care sunt unitaţile de prelucrare într-o arhitectură de tip von Neumann ?
2. Care sunt busurile(magistralele) specifice unei arhitecturi de tip von Neumann?
3. Care sunt secvenţele de execuţie ale unei instrucţini ţn CPU din cadrul unei
arhitecturi tip von Neumann ?
4. Cum este accesată informaţia din memorie la o arhitectura de calcul von
Neumann ?
5. Cum sunt accesate dispozivele de intrare/ieşire la o arhitectura von Neumann?
6. Ce informaţie este stocată în memoria sistemelor cu arhitectură von Neumann ?
7.Cum se clasifică sistemele de calcul în funcţie de arhitectura internă după
recomandările cercetătorului Flynn ?
8. La ce sisteme de calcul se referă arhitectura de tip SISD ?
9. La ce sisteme de calcul se referă arhitectura de tip SIMD ?
10. Unde este aplicată tipul de arhitectură SIMD la procesoarele de tip INTEL ?
11. Desenaşi o schemă bloc de arhitectură de tip SIMD .
12. Care este principiul dupa care funcţionează o arhitectură de tip MISD ?
13. Unde găsim implementată arhitectura de tip MISD în procesoarele de INTEL?
14. Care sisteme intră în arhitectura de tip MIMD ?
15. Desenaţi o schemă bloc de arhitectură de tip MIMD .
16. Ce fel de sisteme de operare există pentru sistemele de tip MIMD ?

16
Cap. 2 COMPONENTELE HARD ALE UNUI CALCULATOR
PERSONAL (PERSONAL COMPUTER –PC)

2.1 Nivele de acces a hardware-ului

Calculatoarele personale (PC) fac parte din categoria calculatoarelor construite


conform arhitecturii von Neumann prezentată în capitolul anterior. După cum se cunoaşte
în cadrul acesta al prelucrării datelor intervin două componente:
¾ partea de echipament care efectiv efectuează calculul numită harware (partea “tare”,
solidă care se vede !)
¾ partea de program care furnizează instrucţiunile echipamentului, algoritmul după care
se face prelucrarea numită software (partea “moale”, inteligenţa care conduce
hardware-ul).

fig. 2.1

17
În principiu deci programul care conţine instrucţiunile de prelucrat (software-ul)
trebuie să aibă acces la echipamentul de calcul (harware-ul) pentru ca să se obţină
rezultatul cerut. După cum se observă din fig. 2.1. în cadrul PC-ului nu este neapărat
nevoie ca acest acces să se facă în mod direct din cadrul programului de aplicaţie.

Astfel programul nu va scrie de exemplu direct în circuitele cartelei video pentru


afişarea unor caractere pe ecran maniera uzuală fiind aceea de a utiliza un intermediar
care oferă servicii specializate. Aceşti intermediari pot fi BIOS (Basic Input Output
System) sau sistemul de operare (DOS-ul – Disk Operation System) care sunt interfeţe de
programe (soft) create pentru a administra partea de echipament (hardware).
Marele avantaj pentru program este că el nu este obligat să “se murdărească pe
mâini” fiindcă el nu intră în contact direct cu electronica. El se mulţumeşte să apeleze un
subprogram din BIOS care are ca sarcină lucrul cerut, de exemplu, dacă o tastă a
tastaturii a fost apăsată să indice despre care este vorba. Apelul unui subprogram
(subrutină) este mult mai uşor de scris decât de a administra direct echipamentul. Mai
există însă un avantaj. Interfeţele BIOS şi DOS permit sa se izoleze programele de
aplicatie de caracteristicile fizice ale echipamentului nefiindu-i necesar, de exemplu,
programului de aplicaţie să ştie ce interfaţă grafică are sistemul.
După cum se vede în figura 2.1. BIOS-ul poate fi considerat un strat situat
deasupra echipamentului. El permite să se aibă acces la cartela video, memorie, discuri,
discheta, claviatura, interfeţe serie şi paralelă precum şi la aşa-zisa memorie CMOS.
Acest program care conţine BIOS-ul se găseşte înscris într-o memorie de tip ROM (Read
Only Memory) şi este disponibil în orice moment.
La fel ca şi BIOS-ul, DOS-ul care este sistemul de operare al sistemului ne
propune deasemenea un număr de funcţii care permit accesul la echipamente. Aceste
funcţii au totuşi un caracter diferit decât cele oferite de BIOS căci ele privesc hardware-ul
din punct de vedere logic.si nu fizic. Astfel, dacă BIOS-ul prezintă funcţii pentru discul
dur la nivel de piste şi sectoare, DOS-ul se situează la nivelul fişierelor şi
subdirectoarelor.
Din figura 2.2. putem sesiza încă un avantaj al acestui mod de acces al hardware-
ului când aceeaşi aplicaţie lucrează pe 2 sisteme PC diferite care nu au aceleaşi

18
Fig. 2.2.

caracteristici fizice. Prin faptul că cele două interfeţe sunt standardizate ele vor
face ca aplicaţia să funcţioneze perfect pe ambele sisteme.
Dacă BIOS-ul asigură o interfaţă standard către DOS pentru echipamente care
diferă în funcţie de calculator, sistemul DOS la rândul său este “învelişul” în care pot fi
executate alte programe incluzând aici şi medii de operare ca Windows-ul.
Se pune întrebarea pentru programator care dintre aceste niveluri trebuie ales în
programarea unei aplicaţii. De exemplu dacă se doreşte să se traseze cercuri şi linii în
mod grafic cercetând funcţiile BIOS sau DOS vom constata că nu există asemenea
funcţii. Trebuie atunci să accesăm printr-un program scris corespunzător placa grafică sau
să recurgem la o bibliotecă specializată în acest domeniu.
Dacă funcţiile BIOS şi DOS îşi dispută favoarea de a fi alese de programator
atunci pentru lucrul cu fişiere, lucrul cu nivelul DOS este inevitabil . Pentru a formata o
dischetă sau a scrie caractere pe ecran se va face apel la BIOS. Experienţa şi cunoaşterea
funcţiilor oferite de BIOS sau DOS pot să ne ajute la luarea unor decizii corecte. În unele
cazuri viteze de execuţie poate fi un incovenient major al funcţiilor DOS şi BIOS
deoarece cu cât se trece prin mai multe niveluri intermediare cu atât se încetineşte
execuţia funcţiei cerute. Dacă viteza este un factor important s-ar putea să fie nevoie să
renunţăm la funcţiile DOS sau BIOS şi să se scrie programe ce comandă direct
echipamentul. Un exemplu în acest sens sunt unele programe de grafică sub DOS care au

19
programe de comandă directă a plăcii video (programe numite DRIVER) care fac ca
afişajul să se facă rapid şi eventual dacă se caută să se afişeze un fenomen în mişcare
acesta să apară fără întreruperi sau mişcări sacadate. Trebuie să remarcăm tot aici că noile
sisteme de operare (Windows NT, Windows 98) nu permit o programare directă a
echipamentelor, numai sistemul de operare fiind cel care are un control direct asupra
acestora în scopul protejării acestora de eventualele comenzi greşite sau programe cu
scopuri distructive (viruşi, ştergerea discului, etc).
Înainte de a vedea cum se pot apela funcţiile DOS sau BIOS, sau eventual cum
comandă direct hardware-ul, vom arunca o privire asupra componentelor unui PC.

2.2 Componentele de bază ale unui PC

Ideea de a oferi un calculator disponibil pe birou nu a fost nouă şi nu a putut fi


realizabilă decât de firme de anvergură ca IBM. IBM a avut în plan un calculator numit
System 23/Data Master dar acesta era echipat cu un procesor Intel 8085 pe 8 biţi, o
componentă depăşită atunci când deja apăruseră microprocesoare pe 16 biţi. S-a pus
problema fabricării rapide a unei maşini noi şi revoluţionare care să folosească aceste
componente noi.

Procesorul
Primii reprezentanţi ai noii clase de microprocesoare pe 16 biţi au fost
procesoarele 8086 şi 8088 de la Intel. Amândouă puteau adresa nu numai 64 ko de
memorie (216) ci 1 Mo (220). Echipa care a lucrat în acest proiect avea deja experienţa în
proiectarea unor sisteme cu circuite auxiliare, construite tot de firma Intel aşa că, pe lângă
procesorul 8088 au fost alese o gamă de circuite Intel care să întregească proiectul final.
Procesorul 8088 era un procesor pe 16 biţi intern dar în exterior comunica pe 8 biţi
adaptându-se foarte bine la ceea ce deja era proiectat şi verificat la proiectul anterior
System23.
Acest bus exterior pe 8 biţi de pe placa de bază (placa mamă) lega
microprocesorul (µP) de circuitele auxiliare de memorie şi de plăcile de extensie aflate în
conectoare după cum se vede în figura 2.3.

20
Fig. 2.3.
Busul
Dacă IBM s-a străduit să facă din acest calculator un sistem deschis publicând
toate aspectele tehnice legate de el, documentarea semnalelor care se vehiculează pe bus
a fost neglijată. Mulţi utilizatori au început să-şi doteze calculatoarele cu extensii
fabricate de IBM dar de asemenea şi de alţi furnizori care au pus la punct propriile plăci
de extensii compatibile cu busul proiectat de IBM, uneori la preţuri mult mai mici şi cu
performanţe chiar mai bune decât cele de la IBM contribuind la succesul calculatorului
PC.
Funcţionarea busului PC
Busul în fond nu este altceva decât un cablu cu 62 de linii care permit să treacă
datele de la procesor la memorie şi invers. Este de fapt o autostradă care traversează PC,
cu regulile impuse de procesor. După cum se cunoaşte din schema ataşată arhitecturii von
Neumann avem între aceste 62 de linii, linii care formează busul de adrese, busul de date
precum şi semnale de sincronizare şi comandă care aparţin busului de control. La origine
busul de adrese avea 20 de linii cu care era posibil să se adreseze 1 Mo de memorie.

21
Datele propriu-zise nu sunt emise pe busul de adrese ci pe cel de date, care la început
avea 8 linii (8088) ceea ce nu autoriza decât transmisia numai a unui octet odată, fiind
nevoie de 2 cicli pentru transmisia a 16 biţi cât era lungimea cuvântului.
Toate plăcile de extensie aflate în conectori “ascultă” busul. La emisia unui
semnal de către microprocesor (µP) trebuie să se găsească o cartelă care să fie “vizată”
(adresată). În acest moment toate celelalte extensii se decuplează momentan de la bus şi
se vor branşa (cupla) din nou la următorul ciclu “sperând” că ele vor fi cele vizate.
Cartela adresată apare ca fiind unica în legătură directă cu microprocesorul şi are loc
operaţia cerută de acesta.
Cunoscând aceste amănunte ne putem explica de ce uneori la cuplarea unei noi
cartele pe extensie apar probleme de “conflict” între cartela nou cuplată şi cele existente
deja în calculator ( din cauză că probabil acelaşi domeniu de adresă este revendicat de
două cartele). Problema se rezolvă reconfigurând noua cartelă din microîntrerupătoarele
situate pe ea ca să răspundă la o altă adresă de intrare ieşire sau eventual la o altă
întrerupere. Dacă se folosesc cartele noi care răspund standardului “Plug and Play” şi
apare acest conflict problema se rezolvă reconfigurând cartela cu ajutorul programelor
“driver” livrate odată cu cartela pe disketă, CD sau căutând aceste programe pe Internet
la site-ul producătorului (dacă există acces).
În evoluţia PC au existat mai multe standarde pentru această magistrală, numită
bus:
1. ISA
2. MCA
3. EISA
4. Magistrală locala
5. PCI
6. PC MCIA

Vom spune câteva cuvinte despre fiecare.


1. Busul ISA (Industry Standard Architecture) a fost prima magistrală folosită la
construcţia calculatoarelor PC şi chiar astăzi, după aproape 20 de ani de la
apariţia PC, există soclurile de tip ISA pe plăcile calculatoarelor. Există 2

22
versiuni de magistrală ISA: magistrala mai veche care avea 8 biţi de date şi
mai nouă cu 16 biţi pe busul de date. Ambele funcţionează la 8 MHz. Prima a
fost folosită la primele PC cu 8088 şi avea 20 de linii de adresare (220 = 1 Mo)
şi 1 Mo de memorie adresabil magistrale pe 16 biţi a fost folosită la
microprocesoare noi (µP) ca Intel 80286 cu 24 de linii de adresă (224 = 16M
octeţi) cu 16 Mo de memorie adresabilă.
2. Busul MCA sau MicroChannel Architecture s-a folosit de firma IBM la
calculatoarele PC dotate cu procesoare 386 pe 32 de biţi. Ea a dorit să
înlocuiască magistrala ISA în noul standard pe 32 de biţi dar faptul că firma
IBM a cerut drepturi de autor exagerate firmelor terţe care doreau să
construiască după noul standard au făcut ca să se dezvolte magistrala EISA.
Trebuie remarcat la această magistrală aşa-numita tehnică “bus mastering”,
care permite unei plăci să preia controlul magistralei iar acest control este
arbitrat într-un punct central care asigură accesul tuturor dispozitivelor după o
prioritate stabilită anterior.
3. Busul EISA (Extended Industry Standard Architecture) a fost răspunsul
constructorilor de plăci de extensii la apariţia magistralei MCA de la IBM. Ea
a apărut ca o dezvoltare a magistralei ISA, furnizând conectori cu 32 de biţi
pentru sistemele 386DX sau următoarele. Şi aici s-a folosit sistemul bus
mastering de la busul MCA cu avantajele sale în mărirea vitezei de transfer a
datelor.
4. Magistrala locală a apărut atunci când vitezele µP au crescut de exemplu la 66
MHz, iar magistralele continuau să lucreze la 8 MHz, producând o ştrangulare
a transferului de date între procesorul rapid şi dispozitivele periferice legate de
o magistrală lentă.
Ideea a fost de a muta unele dispozitive de I/O care cereau viteză mare (placă
grafică, disc dur) într-un loc unde să poată beneficia de viteza sporită a µP.
Acest lucru s-a făcut conform fig. 2.4. alături de memoria imediată (cache),
această dispunere devenind cunoscută ca magistrala locală
Cel mai cunoscut standard pentru bus local a fost cel numit VESA Local Bus
sau VL-Bus care a oferit accesul direct la magistrala procesorului. Ea a fost

23
Fig. 2.4.

valabilă numai la familia 486 pentru µP din familia Pentium impunându-se


standardul PCI.
5. Busul PCI (Peripheral Component Interconnnected Bus) a reproiectat
magistrala tradiţională prin intercalarea unei alte magistrale între CPU şi
magistrala I/O existentă prin intermediul unor circuite bridge (punţi) după
cum se vede în fig. 2.5.
Pe magistrala PCI informaţiile se transferă la 33 MHz şi aceasta s-a mărit la
66 MHz şi chiar 100 MHz la sistemele mai noi.

6. Busul PCMCIA este un standard ce s-a impus pentru calculatoarele portabile


de tip Laptop şi notebook. Sunt folosite plăci de extensii de mărimea cărţilor
de credit (credit card size). Trebuie remarcat aici că deoarece standardul fiind
vag respectat de producător, s-ar putea ca unele extensii de la un producător să
nu funcţioneze în alte calculatoare.
În final trebuie să remarcăm că în prezent la calculatoarele din noua generaţie,
busul (ISA, PCI, etc.) suportă aşa-zisa specificaţie “Plug-and-Play” (PnP) care
permite o configurare automată a dispozitivelor hardware ataşate PC cu condiţia
ca şi aceste plăci de pe extensie să fie compatibile PnP. Un utilizator

24
Fig. 2.5.

poate ataşa calculatorului un nou echipament (ex: placă de sunet sau placă de
fax) şi să înceapă să lucreze fără ca să mai configureze manual aceste noi
echipamente ataşate. Această tehnologie PnP este implementată în harware
precum şi în sistemul de operare (Windows95, Windows98) şi suportă
software ca drivere sau BIOS.

C. Circuite auxiliare
Procesorul este înconjurat de mici circuite complementare numite şi “controlere”,
comandând o serie de dispozitive în locul controlului direct a acestora de către µP
şi eliberând astfel µP de la o parte de muncă.
Vom descrie pe scurt principalele circuite auxiliare care completează schema
generală a unui PC specificând şi tipul de circuit folosit de IBM la origine, în primul PC.

25
Controlerul DMA (8237)
Prescurtarea DMA provine de la Direct Memory Access, un acronim care descrie
o tehnică specială de transfer de date.
Folosind această tehnică, datele furnizate de un periferic (de exemplu un disc dur
sau o dischetă) sunt canalizate direct către memorie. În condiţii de funcţionare clasice, µP
intervine în cadrul fiecărui transfer de octet sau cuvânt înainte ca acesta să fie trimis către
memorie. Această tehnică în ultimul timp se foloseşte mai puţin datorită creşterii vitezei
µP.
Un controler de tip DMA se foloseşte în calculatoare pentru reînprospătarea
memoriei RAM (Random Access Memory). Această memorie este formată din celule
care îşi pierd informaţia în câteva fracţiuni de secundă dacă aceasta nu este reîncărcată.
Tocmai acest rol este preluat de un controler DMA descărcând µP de o sarcină căre ar
ocupa timp.
Controlerul de întrerupere (8259)
Controlerul de întrerupere joacă un rol central în comanda unor periferice precum
claviatura, discul dur sau interfaţa serie. În teorie o tastatură ar trebui tot timpul interogată
de către µP pentru ca o tastă apăsată să fie luată în considerare imediat. Dar această
“supraveghere permanentă ” (“polling”) consumă resurse importante fiindcă în cea mai
mare parte a timpului nu ar servi decât să se constate că nu s-a întâmplat nimic.
Pentru rezolvarea acestei probleme s-a ales o altă cale. Procesorul nu mai
interoghează perifericul ci tocmai perifericul este cel care semnalizează procesorului
atunci când are de tratat o informaţie. Acest mecanism se numeşte întrerupere
hardware. Ca urmare, procesorul îşi întrerupe programul în curs de execuţie (fig. 2.6.) şi
declanşează un program numit rutină de întrerupere, aflată de obicei în memoria BIOS şi
care are rolul de a rezolva cererea primită.
Când această subrutină îşi îndeplineşte rolul, procesorul îşi reia execuţia
programului din locul unde a fost întrerupt. Se observă că procesorul nu intervine decât
numai când este nevoie de el. Aceste cereri de întrerupere care pot proveni de la diferite
echipamente (exemplul nostru a fost tastatura) nu sunt trimise direct procesorului, mai
mult, aceste cereri pot interveni simultan iar procesorul nu este capabil să trateze decât o

26
singură întrerupere. Pentru a gestiona cererele de intrerupere şi eventual prioritatea lor
există un circuit special numit controler de întrerupere.

Fig. 2.6

Într-un PC mai nou pot exista până la 15 întreruperi şi modul lor de acţiune va fi
studiat într-un capitol viitor.
Circuitul de ceas
Dacă se compară µP cu un creier, ceasul poate fi considerat inima sistemului
informatic. Această inimă a bătut la primele PC cu un tact de 14,3 MHz iar viteza lui a
crescut la generaţiile următoare ajungând la valori de 500 MHz ! Această frecvenţă este
divizată şi folosiţă de circuitele periferice la o scară la care acestea lucrează.
Circuitul temporizator (8253)
Acest circuit numit şi “timer” posedă mai multe canale care pot fi legate la
periferice diferite şi perioada impulsurilor generate de acesta se poate programa. Un canal
de exemplu este legat la difuzor iar altul la controlerul de întrerupere. Acesta din urmă
face să se declanşeze aşa-zisa “întrerupere de ceas” care face să “avanseze” ora .
Controlerul de ecran
Controlerul de ecran nu face parte din circuitele de pe placa de bază ca celelalte circuite
descrise până acum, ci el este o cartelă de extensie care ocupă un conector.

27
La origine acest controler a fost un circuit de tipul Motorola 6845 care constituie
inima unei plăci grafice monocrom sau color produsă de IBM. Aceste plăci au dispărut,
locul lor fiind luat de plăci de tipul EGA, VGA, SVGA care posedă controlere puternice
şi mult mai evoluate.
Controlerul de dischetă (765)
Circuitul a fost produs de compania NEC şi este cunoscut sub numele de NEC
765 care la fel ca şi cel de ecran se afla pe o placă de extensie. Similar ca şi cel de ecran,
µP nu se adresează direct acestuia ci prin intermediul nivelului BIOS. Actualmente se
găseşte integrat pe placa de bază.
Coprocesorul aritmetic (8087, 80287, 80387)
La început calculatoarele PC mai avem în apropierea soclului pentru µP încă un
soclu care putea fi ocupat de către un procesor special numit şi coprocesor aritmetic şi
care avea rolul de a efectua calculele în virgulă mobilă. Acest coprocesor a fost adaptat
diferitelor µP care au fost dezvoltate de firma Intel având denumiri care diferă cu o
unitate de cel al procesorului (8087, etc).
Totuşi coprocesoarele nu au cunoscut niciodată un succes deosebit datorită
preţului practicat pentru achiziţionarea lor. Începând cu procesorul 486DX acesta a fost
integrat pe acelaşi chip cu procesorul însuşi, formând în final un singur circuit, numit
simplu“procesor”. singură întrerupere. Pentru a gestiona cererele de intrerupere şi
eventual prioritatea lor există un circuit special numit controler de întrerupere.
Aceste circuite auxiliare care la primele PC se găseau pe placa de bază şi se
prezentau cu circuite independente odată cu dezvoltarea tehnologiei de integrare s-au
grupat în două sau chiar într-un singur circuit integrat. Aceste circuite sunt cunoscute cu
denumirea de “CHIPSET” şi sunt produse pe lângă Intel şi de alte firme producătoare de
chipuri pentru placa de bază. De obicei în oferta unui calculator când se prezintă
caracteristicile plăcii de bază se specifica şi tipul de chipset folosit. Această denumire la
firma Intel cuprinde litera X şi sunt cunoscute chipseturile LX, TX, BX, etc fiecare din
ele având unele îmbunătăţiri faţă de precedentele şi putând fi folosite în combinaţie cu un
anumit tip de procesor.

28
Fig . 2.7

D. Organizarea memoriei
În momentul apariţiei PC era echipat cu 16 Ko de memorie care putea fi extinsă
până la 64K pe placa de bază. IBM a furnizat şi plăci de extensie de memorie care cuplate
în conectori puteau mări memoria disponibilă peste limita de 64K, maxim la 256K
capacitate totală (3 plăci de 64K fiecare plus 64K pe placa de bază), un număr considerat
gigantic la acea epocă.
Dezvoltatorii PC au prevăzut o evoluţie a sa şi au permis o extensie posibilă până

29
la 640K limita care a fost în realitate foarte repede atinsă. Cum procesorul 8088
(şi 8086) puteau adresa până la 1M spaţiul rămas peste cei 640K a fost atrribuit pentru
memoria ecran, o memorie specială numită BIOS şi eventual pentru unele extensii
viitoare.
În tabelul de mai jos se dă structura memoriei unui PC original, această memorie
de 1Moctet fiind decupată în 16 segmente de 64K fiecare.
Comentând această organizare observăm că primele 10 segmente sunt folosite
pentru memoria RAM adică memoria dinamică cu proprietatea de a fi scrisă şi ştearsă

Bloc Adresă Conţinut


15 F0000-FFFFF BIOS
14 E0000-EFFFF liber pentru memorie ROM
13 D0000-DFF liber pentru ROM
12 C0000-CF.. ROM suplimentar
11 B0000 memorie RAM pentru ecran
10 A RAM ecran suplimentar
9 9 RAM 576K – 640K
8 8 RAM 512K – 576K
7 7 ….
6 6 ….
5 5 ….
4 4 ….
3 3 …..
2 2 ….
1 10000-1FFFF RAM 64K – 128K
0 00000-0FFFF RAM 0K – 64K

(read/write) în care se memorează programele ce se execută. Segmentul 0 are un rol mai


special în el fiind memorate şi unele rutine cruciale ale sistemului de operare.
Segmentele A şi B sunt rezervate pentru memoria video (monocrom sau color) şi
pot fi ocupate în întregime cu adrese efective sau să fie numai parţial ocupate pentru plăci

30
monocrom sau color cu rezoluţie scăzută.
Segmentele C, D, E pot conţine memorie ROM (Read Only Memory) pentru
unele echipamente cum ar fi discul dur, placă de reţea, etc. sau deasemeni să rămână
neocupate.
În ultimul segment (F) se găseşte aşa-zisa memorie BIOS (Basic Input Output
System) care este o memorie de tip ROM (Read Only Memory) care la primele PC
conţinea şi un interpreter BASIC !
Hardware PC nu este legat de o organizare specifică a memoriei dar fără să
dorească IBM a fixat regulile şi pentru ceilalţi constructori de PC care trebuie să respecte
această configuraţie de memorie pentru ca softul ce rulează pe PC-ul lor să fie compatibil
cu cel de pe celelalte.

2.3 Succesorii PC –lui original


Calculatorul IBM – PC nu a pus sfârşit dezvoltării microinformaticii dar a fixat
câteva principii care sunt valabile până în zilele noastre: funcţionarea BIOS-ului,
organizarea memoriei şi colaborarea între µP şi circuitele auxiliare.
Dacă primul PC a apărut în 1981, în 1983 la acesta se ataşează un disc dur de
10M, noul calculator numindu-se XT. Restul componentelor nu au fost afectate,
instalându-se numai un BIOS suplimentar în segmentul C de memorie ce conţinea
subrutinele pentru discul dur.
Calculatorul AT este introdus în 1984 numele provenind de la “Advanced
Technology”.
Vechiul procesor 8088 de la Intel a fost abandonat în favoarea ultimului produs la
acea oră, µP 80286. Busul de date a rămas pe 16 biţi dar liniile de adresă au crescut de la
20 la 24 putându-se adresa 16M de memorie. Discul dur s-a mărit la 20M discheta de
1,2M, ceasul de timp real cu acumulator sau baterie electrica ,numărul mărit de de
întreruperi hard şi noi funcţii BIOS introduse sunt numai câteva din îmbunătăţirile
introduse care fac să justifice numele de tehnologie avansată.
Unele din noile inovaţii introduse în construcţia sa nu au putut fi încă folosite
(modul de lucru protejat) decât mai târziu la introducerea lui 80386 şi sistemul de operare
Windows.

31
PS/2. Odată lansat AT, IBM a căutat un nou standard şi introduce un nou bus,
busul MCA (Micro Channel) dar păstrarea secretă a specificaţiilor de bus au făcut ca
interesul pentru această serie de sisteme să fie redus mai ales că plăcile de extensie ISA
nu puteau să funcţioneze pe un astfel de sistem.
În fapt PS/2 anunţă începutul sfârşitului dominaţiei pentru IBM pe piaţa PC.
După AT: mai multe standarde
Tot mai mulţi fabricanţi încep să ofere microcalculatoare mai ieftine şi mai
performante. Astfel o societate precum Compaq produce primul AT bazat pe procesorul
80386 produs de Intel după 80286. În continuare apar procesoare noi ca 80486DX care
conţine şi procesorul matematic înglobat în cip şi se construiesc calculatoare PC care
toate bineînţeles sunt compatibile ca cele anterioare. Apariţia procesoarelor din seria
Pentium (586, 686, etc) fac ca performanţele PC să urce la cote care nici nu se
întrezăreau la apariţia primelor PC, urmând să vedem ce surprize ne rezervă viitorul !

Întrebări la cap. 2
1. Care sunt nivelele de acces ale aplicaţiilor (software) la echipament ( hardware)
într-un calculator de tip PC ?
2. Care este deosebirea dintre funcţiile de acces la hardware oferite de BIOS si SO
(sistemul de operare , DOS de exemplu) ?
3. Ce avantaj oferă existenţa nivelelor intermediare de acces la hardware de tip
BIOS sau sistem de operare (DOS) ?
4. Care sunt elementele principale aflate pe placa de bază a unui calculator PC ?
5. Ce standarde de magistrală ( bus ) cunoaşteţi în evoluţia calculatorului PC ?
6. La ce se referă specificaţia „Plug & Play „ din construcţia calculatorului PC ?
7. Ce circuite auxiliare intră în construcţia unui PC ?
8. Care este principiul după care funcţionează tehnica DMA (Direct Memory
Access ) la un calculator PC ?
9. Care este rolul circuitului auxiliar controler de întreruperi ( i 8259 ) ?
10. Ce sunt circuitele „CHIPSET” aflate pe placa de bază a plăcilor din noile
generaţii de PC ?
11.Care au fost succesorii calculatorului PC original ?

32
Cap. 3 ARHITECTURA INTERNĂ A MICROPROCESOARELOR
DIN FAMILIA INTEL PE 16 BIŢI

3.1 Unitaţile interne ale procesorului Intel 8088

În general când se vorbeşte despre un microprocesor (µP) se înţelege că acesta


reprezintă CPU (Central Procesing Unit) din arhitectura generalizată von Neumann. După
ce s-au construit primele µP pe 8 biţi s-a căutat ca puterea de calcul a acestora să se
mărească prin creşterea numărului de biţi prelucraţi trecându-se la prelucrări pe 16 biţi.
Totodată s-au făcut unele inovaţii în cadrul arhitecturii interne care au dus la o creştere a
vitezei de prelucrare.
Dacă la µP anterioarea unitatea de prelucrare lucra strict după schema ciclică
descrisă la arhitectura von Neumann de extragee a instrucţiunii, decodificare, execuţie
ş.a.m.d. la această serie nouă de µP unitatea de prelucrare este divizată în două unităţi
(vezi fig. 3.1.):

Fig. 3.1.

¾ unitatea de execuţie (Execution Unit – EU)

33
¾ unitatea de interfaţă cu magistrală (Bus Interface Unit – BIU)
După cum se observă cele două unităţi sunt legate între ele cu o conductă
(pipeline) prin care sunt transferate instrucţiunile extrase din memoria program de către
BIU spre EU care are numai rolul de a executa instrucţiunile extrase de BIU, EU neavând
nici o legătură cu magistrala sistemului. În timp ce EU îşi îndeplineşte sarcina , BIU
extrage noi instrucţiuni pe care le organizează într-o coadă de aşteptare (queue). La
terminarea execuţiei unei instrucţiuni EU are la dispoziţie deja o nouă instrucţiune din
coada de aşteptare menţinută de BIU. Cele două unităţi EU şi BIU lucrează deci în
paralel existând momente de sincronizare şi aşteptare între ele atunci când coada de
instructiuni este goală ceea ce se întâmplă însă foarte rar.
Funcţionarea paralelă a celor două unităţi BIU şi EU este transparentă
utilizatorului. Această arhitectură se mai numeşte şi arhitectură cu prelucrare secvenţial –
paralelă “pipeline”.
O schemă bloc a unei structuri de µP elaborat având ca bază aceasta arhitectură
este dată în fig. 3.2. ca fiind caracteristică µP INTEL din seria X86 (8086, 8088, 386).

Unitatea de execuţie EU conţine o unitate logico – aritmetică ALU de 16 biţi,


registrul indicatorilor condiţionali (FR), registru operatorilor şi regiştrii generali. Toate
registrele şi canalele EU sunt pe 16 biţi.
BIU conţine indicatorul de instrucţiuni IP (Instruction Pointer), registrele de
segmente, un bloc de control al magistralei şi de generare de adrese şi o memorie

. organizată sub forma unei cozi în care sunt depuse instrucţiunile extrase
(Instruction Queue).
După cum se cunoaşte informaţia care se vehiculează în calculator se găseşte sub
formă binară ca şiruri de 0 şi 1. Convenim în continuare să notăm această informaţie
binară după schema din fig. 3.3.

3.2 Regiştrii procesorului Intel 8088


Vom detalia în continuare blocurile de regiştri arătând şi rolul unora dintre aceştia
în cursul execuţiei programului. Avem următoarele categorii de regiştri pe 16 biţi:

34
1. regiştri generali; 4. registrul inicatori stare şi control
2. regiştri de segment;
3. registru pointer de instrucţiune;

Fig. 3.2

35
Fig. 3.3.

1. Regiştrii generali sunt în număr de 8 şi sunt împărţiţi în două seturi a câte 4 regiştri:
¾ regiştrii de date AX, BX, CX, DX;
¾ regiştrii de pointer şi de index SP, BP, SI, DI (fig. 3.4.)

Fig. 3.4.

Grupul regiştrilor de date poate fi adresat şi pe jumătate de registru (adică pe


octet) având octetul inferior (Acumulator LOW) şi octetul superior (Acumulator HIGH).
La fel şi ceilalţi trei. Deci fiecare registru de date poate fi folosit ca registru general de

36
date pe 16 biţi sau două registre generale de 8 biţi. Regiştrii de pointer şi index pot fi
folosiţi numai pe 16 biţi şi participă la majoritatea operaţiilor aritmetice şi logice.
Diferite instrucţiuni utilizează regiştrii generali în mod implicit astfel:
¾ AX – înmulţiri şi împărţiri pe cuvânt, operaţii de intrare / ieşire pe cuvânt
¾ AL – înmulţiri, împărţiri pe octet şi operaţii de intrare/ieşire pe octet
¾ AH – înmulţire şi împărţire pe octet
¾ BX – translatări
¾ CX – operaţii cu şiruri şi bucle
¾ CL – deplasări şi rotaţii
¾ DX – înmulţiri, împărţiri, operaţii indirecte de intrare ieşire
¾ SP – operaţii cu stiva (offset)
¾ SI, DI – operaţii cu şiruri

Registrul BP este folosit în mod curent pentru adresarea datelor din segmentul de stivă.
2. Regiştrii de segment permit programatorului posibilitatea localizării unui operand
aflat în spaţiul de memorie de 1M în spaţiul de memorie cu adresele 00000h÷ FFFFFh.
Acest spaţiu de 1 Moctet de memorie ce poate fi adresat de µP 8086 este “văzut” ca un
grup de segmente.
Un segment este o unitate logică de memorie care poate avea cel mult 64 Kocteţi
(locaţii contigue). Fiecărui segment i se atribuie o adresă de bază care este adresa locaţiei
de început a segmentului. Valoarea acestei adrese se află memorată într-un registru de
segment. Există 4 regiştri segment conform figurii 3.5. şi ei se găsesc localizaţi în BIU.

După cum se observă din fig. 3.6. în memorie pot exista, în funcţie de poziţia lor
relativă segmente adiacente, parţial suprapuse sau suprapuse complet si disjuncte.
Deci fiecare aplicaţie (program aflat în memorie) are la dispoziţie un spaţiu de
64K pentru codul instrucţiunilor (segmentul de cod) 64 kocteţi pentru stivă (segment de
stivă) şi 128 Kocteţi pentru date (segmentul de date şi extra segmentul).
Unele aplicaţii pot însă gestiona un spaţiu de memorie mult mai mare făcând
gestionarea segmentelor după propriile necesităţi.

37
Această împărţire a memoriei în segmente de 64K provine din faptul că µP pe 8
biţi anterioare gestionau un spaţiu de numai 64K. Proiectanţii de la Intel au căutat ca şi
noile µP pe 16 biţi să folosească eventual programe scrise pentru µP anterioare adoptând
această soluţie a segmentului făcând însă mai grea înţelegerea adresării memoriei faţă de
alte µP de aceeaşi clasă ca Motorola 68000 care permit o adresare liniară a memoriei.

Fig. 3.5.

Fig. 3.6

38
Generarea adresei fizice.
Fiecare locaţie de memorie are două tipuri de adresă:
¾ fizică;
¾ logică.
Adresa fizică este o valoare formată din 20 biţi care identifică unic fiecare locaţie
din spaţiul de adresare. Adresa fizică se găsesşte în domeniul 00000h÷ FFFFFh şi se mai
numeşte adresă absolută.
Pentru a nu depinde de locul unde se află codul în memorie folosesc aşa – zisele
adrese logice şi nu fizice.
Adresa logică constă dintr-o valoare de bază de segment şi o valoare de
deplasament (offset). Pentru orice locaţie de memorie, valoarea de bază a segmentului
este adresa primului octet al segmentului care conţine locaţia. Această adresă este
exprimată în paragrafe (paragraful fiind o unitate de 16 biţi) iar deplasamentul (offset)
este distanţa în octeţi de la începutul segmentului până la locaţia respectivă. Adresa de
bază şi deplasamentul sunt valori pe 16 biţi fără semn.
Mai multe adrese logice pot localiza aceeaşi locaţie fizică dacă se află în
segmente diferite după cum se observă din figura 3.7.
BIU generează totdeauna o adresă fizică dintr-o adresă logică după mecanismul
prezentat în fig. 3.8.
Se observă că în principiu, calculul adresei fizice se face prin deplasarea bazei
segmentului (conţinută într-un registru segment) cu 4 poziţii spre stânga (ceea ce
echivalează cu o înmulţire cu 16) şi adunarea valorii deplasamentului.
BIU obţine adresa logică a unei locaţii de memorie diferit în funcţie de modul de
referinţă a memoriei. Înstrucţiunile sunt întotdeauna încărcate din segmentul de cod
curent iar registrul IP conţine deplasamentul instrucţiunii următoare faţă de începutul
segmentului. Operaţiile cu stiva operează, în segmentul de stivă curent iar registrul SP
conţine deplasamentul faţă de vârful stivei. Variabilele se găsesc de obicei în segmentul
de date iar deplasamentul este dat după modul de adresare specificat în instrucţiune.
Rezultatul este aşa – numita adresă efectivă despre care vom mai vorbi la prezentarea
modurilor de adresare.

39
Operandul sursă al unei instrucţiuni pe şiruri se presupune a fi în segmentul de
date curent iar SI va furniza deplasamentul. Operandul destinaţie la operaţiile pe şiruri se
află întotdeauna în extrasegment, iar deplasamentul este furnizat de DI.
Acestea sunt atributele segmentelor în mod implicit. Unele din aceste atribuţii pot
fi schimbate. Figura 3.9. prezintă grafic cele expuse anterior.

Fig. 3.7.

Fig. 3.8.

40
.
Fig. 3.9.

Cod relocabil dinamic. Faptul că memoria µP8086 sau 8088 este segmentată
face posibilă scrierea de programe care sunt independente de poziţia lor în memorie adică
sunt relocabile dinamic. Aceste programe trebuie însă să îndeplinească o sumă de
condiţii. Dacă aceste condiţii sunt îndeplinite, programul poate să fie mutat oriunde în
memorie. După cum se observă în fig. 3.10, un astfel de program a fost făcut să ocupe o
zonă contiguă de memorie lăsând spaţiu nefragmentat şi pentru alte aplicaţii. De
asemenea, acest fapt este important atunci când programul este inactiv în memorie
sistemul de operare mută programul pe disc şi când se doreşte să fie adus din nou în

41
Fig. 3.10.

memorie zona în care a fost prima dată e ocupată de un alt program.Se schimbă
valorile registrelor de segment şi programul poate rula din altă zonă de memorie.
3. Pointerul de instrucţiuni (IP) este un registru pe 16 biţi actualizat de BIU şi conţine
deplasamentul (offsetul) instrucţiunii următoare faţă de începutul segmentului de cod
curent.
Programele nu au acces direct la el dar există instrucţiuni care îl modifică şi îl
încarcă sau îl descarcă de pe stivă.
4. Registrul de stare şi control (Flags register) conţine 6 indicatori de stare şi 3
indicatori de control fiind notaţi conform fig. 3.11.
Cei 6 indicatori de stare EU îi poziţionează pentru a reflecta anumite stări ale unei
operaţii aritmetice sau logice. Un anumit set de instrucţiuni permit modificarea execuţiei

42
Fig. 3.11.

unui program în funcţie de starea acestor indicatori – cum ar fi instrucţiunile de


salt condiţionat. Indicatorii de stare reflectă următoarele condiţii:
¾ C (Carry) reflectă transportul în exterior a bitului cel mai semnificativ al rezultatului
operaţiilor aritmetice.
¾ P (paritate) este poziţionat dacă rezultatul are paritate pară (conţine un număr par de
biţi de 1)
¾ A (carry auxiliar) este poziţionat dacă a avut loc un transfer de la semioctetul inferior
la semioctetul superior al rezultatului şi este folosit în aritmetica zecimală.
¾ Z (zero) poziţionat dacă rezultatul operaţiei a fost zero.
¾ S (semn) este poziţionat dacă cel mai semnificativ bit al rezultatului este 1 (1 – număr
negativ)
¾ O (depaşire) poziţionat când dimensiunea rezultatului depăşeşte capacitatea locaţiei
de destinaţie şi a fost pierdut un bit.
Pentru controlarea unor operaţii a procesorului pot fi modificaţi (de
program) trei indicatori de control:

¾ D dacă este poziţionat pe 1 operaţiile pe şiruri se vor decrementa;


¾ I poziţionat pe 1 permite CPU să recunoască cererile de întrerupere externe
mascabile;
¾ T (trap) poziţionat pe 1 trece CPU în execuţia de pas cu pas în scopul depanării
programului instrucţiune cu instrucţiune.
Având la dispoziţie aceste informaţii schema generală a CPU 8086 se poate
detalia şi în fig. 3.12. prezentăm schema internă completă a unui µP Intel 8086.
Întrebări la cap. 3
1. Care sunt unităţile de prelucrare ăn care este divizată CPU Intel pe 16 biţi
(micro P Intel 8088 , etc ) ?

43
Fig. 3.12.

2. Care este avantajul divizării CPU în două unităţi de prelucrare independente la


micro P Intel 8088 ?
3. Care este alcătuirea EU ( unitatea de execuţie ) a micro P Intel 8088 ?
4. Din ce este compusă unitatea BIU ( Bus Interface Unit ) la microP Intel 8088?
5. Care sunt regiştrii generali ai microP Intel 8088 ?
6. Care sunt regiştrii de pointer şi index ai microP Intel 8088 ?
7. Ce este un segment de memorie ?
8. Care sunt regiştrii de segment ai microP Intel 8088 ?
9. Ce este o adresă fizică de memorie ?
10. Din ce este formată o adresă logică de memorie ?
11. Cum se calculează adresa fizică de memorie din adresa logică de memorie ?
12. Care sunt segmentele de memorie aferente unui program aflat în memorie ?
13. Ce se înţelege prin cod relocabil dinamic ?
14. Numiţi 3 indicatori de stare şi măcar 1 de control din registrul de stare şi
control ai micro P Intel 8088 ?

44
Cap. 4 NOTIUNI DESPRE FUNCŢIONAREA ŞI ADRESAREA
DATELOR LA µP PE 16 BITI

4.1 Funcţionare µP la nivel de magistrală

După cum s-a văzut pe placa de bază a calculatorului PC există un circuit de ceas
(clock) care generează un semnal de o anumită frecvenţă - 14,3 Mhz PC original şi peste
100 Mhz la cele actuale- care serveşte pentru execuţia sincronizată a operaţiilor din
interiorul µP şi efectuarea transferurilor între diferite blocuri la nivelul magistralei
externe.
In timpul funcţionării activitatea µP poate fi descompusă în secvenţe de
microoperaţii care formează aşa numiţii ciclii maşină. Funcţie de natura operaţiei care se
execută putem avea 5 tipuri de ciclii maşină :
1. Lectură(read). atunci când se citesc date din memorie sau de la dispozitivekle de i/o;
2. Scriere (write) când datele se inscriu in locaţii de memorie sau intr-un dispozitiv de
ilo;
3. Recunoaştere întrerupere în cazul generării unei intreruperi pe care µP o identifică;
4. Oprire (halt) atunci când µP este oprit până la primirea unei intreruperi sau;
5. Arbitrare magistrală când sistemul de calcule este prevăzut cu mai multe µP care pot
avea acces la o magistrală comună.
Toate aceste opearţii sunt descrise cu lux de amănunte în foile de catalog ale
firmelor ce produc µP. Vom exemplifica un astfel de ciclu de lecturi într-un mod
simplificat căutând să vedem ce semnale se vehiculează.
După cum se observă în fig.4.1. semnalul reprezentat la t=0 este "0" logic, la t=2
incepe să crească spre 1 logic, la t=3 deja este "1" logic se menţine 2 ns şi apoi "cade"
inapoi la "0" logic.
Aceasta este o diagramă de semnal. In cazul acesta este diagrama de ceasului
(clock-ului). În timpul unui ciclu de citire apar mai multe semnale care au o funcţionare
sincronizată, reprezentarea lor făcându-se pe verticală. Fig.4.2. reprezintă diagrama unui
ciclu de citire.

45
Fig.4.1.

Fig.4.2.

În starea T1 se furnizează un semnal AS care face ca informaţia de adresă obţinută


din adresa de segment + adrese offset să fie stabilă pe busul de adrese A0 - A19 astfel că

46
memoria are timp până în starea T3 să selecteze această adresă. In starea T3 semnalul RD
(dela Read) face ca informaţia furnizată de memorie sau de la dresa selectată să fie deja
prezentă pe busul e date D0 - D15 de unde este memorată de procesor într-un registru (AX
cel mai adesea.).
In realitate apar mult mai multe semnale care duc la citirea memoriei. Pentru
celelalte cazuri există câte o diagramă la fel ca aceasta dar distribuţia in timp a
semnalelor va fi specifică fiecărui tip de ciclu.

4.2 Moduri de adresare la 8088

Programul care se execută se găseşte memorat in segmentul de cod. După cum am


văzut intr-un capitol anterior când se incarcă o instrucţiune din memorie adresa acestuia
este furnizată de CS ca adresă de bază şi IP (pointerul de instrucţiuni) ca: deplasament. In
mod normal conţinutul lui IP este incrementat pe măsură ce instrucţiunile se execută
astfel ca totdeauna să fie deja selectată instrucţiunea care urmează. Instrucţiunile de salt
necondiţionat sau apel proceduri pot însă modifica IP sau IP şi CS, modificându-se astfel
ordinea secvenţială de execuţie a instrucţiunilor.

Adresarea datelor
Datele din memorie care formează operanzii instrucţiunilor pot fi adresate in mai
multe moduri. Aceşti operanzi pot fi conţinuţi în regiştrii, în memorie, în instrucţiuni sau
porturi de I/O. Operaţiile care implică date numai din regiştrii sunt rapide nefiind nevoie
de acces la magistrală pentru acces la memorie.
Pentru aflarea adresei operandului se folosesc denumirea de adresă segment (AS)
pentru adrese de inceput a segmentului in care se află operandul şi adresă efectivă (AE)
pentru deplasaamentul operandului in cadrul segmentului .

AF (adresă fizică) se calculeaza conform mecanismului


AS + 10h * AE = AF

47
Adresa efectivă este calculată de către unitatea de execuţie (EU) şi furnizată
unităţii de legături cu magistrala (BIU) care va calcula adresa de segment după algoritmul
de mai sus .
Registrii folosiţi şi modul de adresare (memorie sau registru) sunt codificate in
cadrul instrucţiuni.
Vom avea următoarele tipuri de adresare:

1.Adresare imediată
În acest caz operandul apare chiar in instrucţiune:
Ex: mov ax,1
Această instrucţiune va imiţializa reg. AX cu 1.

2.Adresare directă
AE este obţinut prin furnizarea de către instrucţiune a unui deplasament in
interiorul segmentului curent (in interiorul segmentului de date de obicei).
Ex. add bx, [200]
Aceastră instrucţiune adună la reg. BX conţinutul locaţiei de la adresa efectivă
200.din segmentul de date. Schema după care se execută este dată in fig. 4.3.

Fig. 4.3.

3.Adresare indirectă (rin registrii) Ae este furnizată de registrii BX, SI sau DI iar
registrul segment implicit este bineinţeles DS după schema din fig.4.4.

48
Ex. mov ax, [bx]
Conţinutul adresei de memorie de la adresa dată de BX este transferat in ax.
Observăm că BX,Si,DI conţin adrese şi nu valori numerice.

Fig. 4.4.

4. Adresare bazată sau indexată


AE se obţine adunând la unul din registrii de bază (BX sau BP) sau index (SI sau
DI) un deplasament constant după scheme din fig.4.5.

Fig.4.5.

Ex. mov ax, 5 [bx]

49
La conţinutul adresei de bază din bx se adună deplasamentul S şi se obţine
offsetul operandului. Aceste tipuri de adresare se pot folosi când avem structuri de date
care pot fi localizate in diferite locuri din memorie.Reg. de bază va conţine adresa de
inceput a structurii iar deplasamentul va furniza adresa elementelor din structură.

5 . Adresare bazată şi indexată


Este cea mai complexă şi se face după schema din fig.4.6.

Fig.4.6.
Ex. mov ax,[bx +si +7]
Aceasta din urmă combină celelalte anterioare fiind cea mai complexă permiţând
adresarea cu 2 indecsi (conţinuturile reg. de baza şi indecşi).
In cele arătate anterior, de obicei registrul segment implicit este cel de date
presupunând că se adresează operanzi de calcul obişnuiţi în afara cazului când se
fooloseşte BP când reg. de segment mplicit este SS. Dacă nu se doreşte folosirea
implicită a reg. de segment atunci în instrucţiune se va preciza explicit despre care reg. de
segment este vorba cum ar fi în instrucţiunea următoare:
mov bx, ds: [bp + 7]

Dacă nu precizam DS implicit se folosea SS fiind vorba de BP care lucrează cu


SS in mod implicit.

50
4.3 Codificarea internă a instrucţiunilor

Instrucţiunile µP8088 se pot intinde pe 1 până la 6 octeţi. Codificarea conţine


codul instrucţiunii (tipul operaţiei - adunare, scădere, salt, etc) modul de adresare (cu
registru sau cu memoria) deplasamentul operandului sau adresa efectivă cu adresarea
directă), date imediate, pe 8 sau 16 biţi. Formatul unei instrucţiuni de INC - incrementare
registru-pe 1 octet este prezentat în fig. 4.7.

..
Fig. 4.7.
unde OP cade ocupă 5 biţi şi dă codul operaţiei de incrementare iar cei 3 octeţi din
câmpul REG specifică unul din registrii general, pointer sau index

Fig.4.8. arată codificarea efectiv a instrucţiunii INC BP


Mai există o formă a instrucţiunii care poate incrementa şi orice cuvant de
memorie pe lângă registri şi ea se scrie pe 2 octeţi. Nu vom intra în amănunte spunând
numai că cei 16 biţi au câmpuri bine precizate pentru a indica exact modul de adresare şi
regiştrii care intervin în calcul adresei.
Amănunte se găsesc în tabelele ce conţin setul de instrucţiuni ai procesorului

51
4.4 Stiva (Stack)
O zonă specială de memorie este folosită de programe atunci când se execută
subprograme sau se transmit parametrii de la un program cu altul.
Această zonă poartă numele de stivă (stack în engleză). fiindcă funcţionarea ei
este asemănătoare cu cea a unei stive fizice de obiecte. Vonm trata aici succint stiva
numită LIFO (Last Input First Output). In acest tip de stivă datele au voie să fie depuse
numai prin partea superioară astfel că ceea ce am depus ultima dată (Last input) va fi
disponibil fiind deasupra stivei şi va putea fi scos eventual (First Output).
Stiva este folosită implicit în mecanismul de apel al procedurilor

Fig. 4.9.

52
. Fig.4.9. ilustrează un astfel de caz. Atunci când s-a ajuns cu pointerul de instrucţiuni la
adresa 1000 se execută un apel la procedura PROC care se găseşte în memorie la adresa
3000. Când se termină de executat procedura trebuie să ne întoarcem inapoi la prima
instrucţiune de după instrucţiunea de apel procedură (1001 în cazul nostru). Deci, adresa
1001 trebuie să fie memorata undeva pentru ca la revenirea din procedură să reluăm
programul din acel loc.
Stiva se foloseşte pentru a memora această adresă de revenire. Microprocesorul
este proiectat astfel incât automat la execuţia unui apel de procedură (CALL) salveze in
stivă următoarea adresa de memorie care contine instructiunea urmatoare din secventa (
de fapt continutul registrului IP). Când se intâlneşte in subrutină instrucţiunea de
RETURN (revenire din subprogram) tot automat µP ia din vârful stivei adresa găsită şi o
incarcă in registrul IP (pointerul de instrucţiuni) executând apoi, instrucţiunea găsită la
această adresă (adică instrucţiunea de la adresa 1001).
Putem defini stiva ca un concept abstract de structură de date asupra cărora
operează instrucţiuni special proiectate in acest scop.
O zonă de stivă este caracterizată de o adresă curentă numită adresa vârfului stivei
(top stack) şi care la µP 8088 este adresată prin registrul SP (stack pointer - indicator de
stivă). Registrul de segment SS (Stack Segment) va indica adresa de inceput a
segmentului de stiva in memoria sistemului. Deci si pentru stiva este alocata implicit o
zona de 64 Kocteti (lungimea standard a unui segment ! ). Operaţiile de bază cu stiva
sunt PUSH (depune un cuvânt in stivă) sau POP (extrage un cuvânt din stivă)..
La µP 8088 cuvintele transferate in stivă sunt de 16 biţi. (2 octeţi adica un cuvint )
deci adresa curentă a vârfului stivei se va incrementa sau decrementa cu 2. Fig.4.10.
prezintă modul de acţiune a unei operaţii de PUSH.
Se observă că stiva "creşte" in jos pe măsură ce se depun date in ea. Mărimea maximă a
ei este de 64k. Pot exista mai multe stive definite la un moment dat dar numai una este
activă.
Stiva este folosită explicit la salvări sau refaceri de date, transmiterea parametrilor
către proceduri etc. Implicit se foloseşte in cazul apelurilor de procedură. Deasemenea
programele care permit definirea si folosirea functiilor recursive folosesc stiva pentru
memorarea valorilor inermediare a parametrilor si valorilor funcţiilor.

53
Fig.4.10.

Întrebări la cap. 4
1. Care sunt ciclii de maşină pentru un micro P Intel 8088 ?
2. Ce moduri de adresare cunoaşteţi la micro P Intel 8088 ?
3. Daţi exemplu de adresare imediată la microP Intel 8088 ?
4. Daţi exemplu de adresare directă la microP Intel 8088 ?
5. Daţi exemplu de adresare indirectă la microP Intel 8088 ?
6. Daţi exempu de adresare bazată sau indexată ?
7. Ce este stiva ?
8. După ce principiu funcţionează stiva implementată la microP Intel 8088 ?
9. La ce serveşte stiva implementată la microP Intel 8088 ?
10. Ce instrucţiuni (operaţii) se pot folosi cu stiva la microP Intel 8088 ?

54
Cap.5 INTRERUPERI

Unul din marile avantaje ale unui calculator faţă de orice altă maşină creată de om
este aceea că un calculator este capabil să răspundă la un număr mare de sarcini
imprevizibile. Cheia acestor posibilităţi o constitie ceea ce numim “intreruperi”.
Cu ajutorul lor calculatorul poate intrerupe o sarcină pe care o execută şi să o
comute pe o alta ca răspuns la intreruperea intervenită (cum ar fi de exemplu apăsarea
unei taste sau primirea unui fax prin modem !). Acest mecanism face ca sistemul de
calcul să fie foarte flexibil permiţând un răspuns imediat la un eveniment extern prin
intreruperea sarcinii curente şi reluarea acestei sarcini după ce s-au rezolvat cerinţele
impuse de acest eveniment extern.Noţiunea de intrerupere presupune intreruperea
programului in curs de execuţie şi transferul controlului la o anumită rutină de
tratare a intreruperii, rutină numită “rutină de gestiune a intreruperii”.Mecanismul
după care se face acest transfer este in esenţă de tip apel de procedură, ceea ce inseamnă
că se revine in programul intrerupt din locul unde acesta a rămas după ce s-a terminat
rutina de intrerupere. Acest mecanism a fost explicat succint in cap.2. in cadrul
paragrafului “controlerul de intrerupere”. În continuare vom dezvolta acest subiect
prezentînd noi aspecte .
5.1 Intreruperi hardware şi software
Clasificarea intreruperilor se poate face după mai multe criterii. Una din aceste

Fig.5.1

55
clasificari este prezentată în fig.5.1.
Intreruperile software apar in urma execuţiei de către µP a unor instrucţiuni cum
ar fi INT, INT , DIV, IDIV, softul fiind deci cauza lor.
Intreruperile hardware externe sunt provocate de semnale electrice care in ultima
instanţă sunt aplicate pe intrările INT şi NMI ale µP.
Intreruperile hardware interne apar ca urmare a unor condiţii speciale ale
procesorului (cum ar fi execuţia pas cu pas in cazul depanării programelor).
Intreruperile externe dezactivabile se aplică pe intrarea INT şi sunt luate in
cosiderare numai dacă bistabilul IF (intrerupt Flag) din registrul indicatorilor de condiţie
= 1.
Intreruperile externe nedezactivabile au loc la aplicarea unui semnal
corespunzător pe intrarea NMI (Non Mascable Interrupt) şi sunt luate in considerare
intotdeauna (ex: căderea tensiunii de alimentare).

Intreruperi hardware dezactivabile

Aceste intreruperi sunt controlate de unul (la PC original) sau mai multe circuite
specializate (la AT şi celelalte calculatoare) numite controler de intreruperi de tipul Intel
8259. Acest circuit are menirea de a culege cereri de intrerupere de la mai multe
dispozitive, să stabilească eventual o prioritate dacă există mai multe cereri de intrerupere
simultane şi în final să transmită un semnal de intrerupere pe pinul INT al µP şi un
semnal de identificare a dispozitivului periferic care a făcut cererea.
Fig.5.2. ilustrează a schemei de intreruperi a µP 8088 folosită în calcutoarele PC.
La calculatoarele care au urmat PC (AT, 386, etc) se folosesc asemenea
controlere de intrerupere legate in cascadă după cum se observă din figura 5.2.
Dacă la una din liniile IRQ0 - IRQ7 (IRQ = intrerupt Request) şi liniile IRQ8 -
IRQ15 pentru AT se primeşte o intrerupere de la un dispozitiv periferic (s-a apăsat o
tastă, pe interfaţă serială legată la modem a sosit un fax, trebuie să se facă un ciclu de
refresh la
memorie, etc.) acest semnal este analizat de controlerul 8259 şi in final acesta va genera o

56
Fig. 5.2
intrerupere pe linia INT către µP. Dacă in µP bistabilul IF = 1 (adică intreruperile
hardware externe, sunt activate), µP va trimite inapoi controlerului un semnal INTA
(interrupt Acknowlege-recunoastere intrerupere) prin care il anunţă că intreruperea este
recunoscută şi acceptată. In continuare, controlerul de intrerupere va depune pe busul de
date un octet care va identifica typul intrerupere (nivelul intreruperii). Controlerul de
intrerupere 8259 având 8 intrări pentru intreruperi de la echipamente va putea să trimită 8
valori diferite, fiecare indentificând unic una din cele 8 intrări. Se mai spune că
controlerul poate furniza 8 vectori de intreruperi identificaţi prin octetul typ iar sistemul
de intrerupere la µP 8088 este un sistem de intrerupere vectorizat.
Cum cu un octet (8 biti) se pot efectua 256 de combinaţii diferite vor putea exista
256 de valori diferite ale octetului typ de intrerupere. Deci intr-un sistem cu µP 8088 pot
exista maxim 256 de nivele de intrerupere diferite. Pentru fiecare nivel (valoare a
octetului typ) se poate asocia o procedură (rutină sau subprogram) de deservire a
intreruperii respective. Deci maxim 256 de proceduri.

57
Adresele acestor rutine sunt trecute intr-o aşa zisă tabelă de intrerupere care se
află memorată in memorie RAM in primii 1024 de octeţi (1 octet). Datorită faptului că
fiecare rutină de intrerupere se poate afla in segmente diferite pentru a identifica adresa
unei rutine trebuie să-i furnizăm adresa de segment (CS) (2 octeţi) şi adresa ofssetului
(IP) (încă 2 octeţi) deci o adresă va ocupa 4 octeţi. Cum sunt 256 de posibile intreruperi
256 x 4 = 1024 octeţi = 1K.
Se observă deci că apelul este de tip FAR adică salt intersegment. In fig. 5.3. se dă
o reprezentare a modului in care este ocupată memoria sistemului cu tabela aceasta de
adrese. Deoarece fiecare grupă de 2 cuvinte (4 octeţi) desemnează o adresă de memorie
unde se găseăşte rutina pentru o intrerupere tabela se mai numeşte “tabela vectorilor de
întreruperi”.
Amplasarea se realizează in funcţie de octetul typ care dă nivelul de intrerupere.

Fig.5.3.
Am văzut că acest octet poate lua 256 de valori.
Octetul typ *4 va furniza adresa din memorie unde se găseşte vectorul de
intrerupere (adresa rutinei de intrerupere) pentru nivelul furnizat de octetul typ.
La apariţia unei intreruperi in µP au loc următoarele acţiuni:
• se salvează in stivă registrele FLAGS, CS şi IP in această ordine.
• se sterg bistabilii IF şi TF (adică se blochează execuţia unei alte intreruperi in timpul

58
execuţiei programului pentru intreruperea in curs iar TF blochează execuţia pas cu pas a
rutinei de intrerupere).
• se furnizează µP un octet (8 biţi in gama 0 - 255) numit şi octet typ care identifică
nivelul asociat întreruperii.
• se execută salt indirect intersegment la adresa de început a rutinei detratare a
intreruperii folosind tabela de întreruperi de unde se incepe executia programul
corespunzător rutinei de tratare a intreruperii.
Fiecare componentă a calculatoruluii care poate să aibă nevoie de µP la un
moment dat are propriul său nivel de întrerupere. Tastatura, ceasul intern, unităţile de
disc, imprimantele, placa de reţea etc., toate acestea au fiecare un nivel de întrerupere
rezervat. La apăsarea unei taste se generează intreruperea de tastaură, de 18 ori pe
secundă CPU este oprit derularea programului şi se derulează o rutină de ceas care
actualizează ceasul intern, discul trimite o intrerupere când este terminat un transfer iar
imprimanta când nu are hârtie, placa de reţea când primeşte un pachet de date, adresat ei,
etc. Deci observăm că activitatea µP se desfăşoară intr-o veşnică posibilitate de a fi,
“intreruptă“ de altcineva care are mai mare nevoie de µP decât aplicaţia ce ruleazâ.
Interesant este că intreruperile nu au făcut parte din conceptul primelor
calculatoare. La inceput calculatoarele au fost folosite fără acest mecanism de
intrerupere. Astăzi este greu de imaginat un calculator fără sistem de intreruperi
implementat in cadrul sau hard si soft.
Conceptul de intrerupere s-a dovedit atât de eficient şi util incât a fost adaptat la o
mare varietate de alte necesităţi ale calculatorului. Pe lângă intreruperile hardware despre
care tocmai am vorbit există şi intreruperi care sunt generate in interiorul CPU ca urmare
a faptului că s-a intamplat ceva ce nu are sens- de exemplu s-a incercat o impărţire prin
zero. In acest caz se generează o intrerupere internă de excepţie.

Intreruperi software
Această categorie de intreruperi nu apare pe neaşteptate ca cele hardware descrise
anterior. Ideea care stă la baza intreruperilor s-a dovedit atât de eficientă şi productivă
incât acestea, (intreruperile) au inceput să fie utilizate in cadru programator pentru a
solicita servicii executate de alte programe din calculator. Acest tip de intreruperi se

59
numesc intreruperi soft. După cum am văzut, atunci când se construieste un PC există
un set de programe interne integrate continuate intr-o memorie ROM (Read Only
Memory) şi care formează aşa zisul BIOS. Dacă programele de aplicaţii au nevoie de
funcţii oferite de BIOS modul de apelare a acestora il constituie intreruperile soft.
Serviciile BIOS sunt puse la dispozitia programului de aplicaţie prin execuţia
unei instrucţiuni de intrerupere soft de tipul INT n unde n reprezintă nivelul de
intrerupere solicitat. Intreruperile soft funcţionează la fel ca şi celelalte tipuri de
intrerupere cu o singură diferenţă. Ele nu sunt declanşate de un eveniment neaşteptat sau
aleatoriu ci sunt produse intenţionat de către program cu un anumit scop.
Sistemul de operare DOS care a fost primul SO implementat pentru PC foloseşte
de asemenea intreruperi software pentru apelul unor funcţii necesare derulării
programelor de aplicaţie sub directul său control.
Aceste funcţii BIOS sau DOS apelate prin intermediul intreruperiolor software
sunt tratate de către procesor ca subprograme care după ce se termină redau controlul
programului apelant.
Programul care face apel la o funcţie DOS sau BIOS nu are nevoie să cunoască
adresa de memorie a subrutinei corespunzătoare ci este suficient sa indice numărul
intreruperii alocate acelei funcţii şi eventual parametrii auxiliari, necesari funcţiei. Aceste
intreruperi sunt standardizate. Astfel de exemplu, serviciile şi funcţiile DOS sunt
asigurate toate cu ajutorul intreruperii 21H.
Literatura şi documentaţia descriu aceste funcţii şi modul lor de apel.
Vom mai face câteva observaţii asupra modului de funcţionare a intreruperilor
intr-un PC.
Ultima instrucţiune dintr-o subrutină de intreruperi este instrucţiunea IRET
(interrupt Return) care are rolul de a restaura in ordine inversă ceea ce a fost salvat in
stivă adică IP, CS şi registrul Flags redând controlul programului principal.
Dacă rutină de intreruperi lucrează cu registrii procesorului şi distruge valorile
conţinute in acestea, revine in grija programatorului ca acest conţinut registrilor distruşi
să fie eventual salvaţi explicit in stivă prin instrucţiuni de tip PUSH la inceputul
subrutinei de intrerupere iar la sfârşit, inainte de terminare să fie refăcuţi aceşti regi0tri

60
prin instrucţiuni POP corespunzătoare. Astfel programul care a fost intrerupt i-şi reia
lucrul cu valorile care erau in acel moment in registrii procesorului.
După cum am văzut imediat ce s-a declanşat o intrerupere indicatorul IF este
trecut pe 0 ceea ce inseamnă că intreruperile hard care pot surveni in acel moment sunt
dezactivate. De aceea este bine ca să se folosească cât mai repede o instrucţiune de tip
STI (set intrerupt) care “armează“ (activează) din nou sistemul de intreruperi - bineinţeles
dacă programul rutinei de intrerupere nu execută o porţiune in care nu are voie să fie
intrerupta.
Tabela vectorilor de intreruperi după cum am văzut este plasată in memoria RAM (deci
cea in care se poate sterge şi inscrie altă valoare !). Aceasta face ca eventual adresele
rezervate in ea pentru desemnarea subrutinelor de intreruperi să fie schimbate chiar de
unele programe şi eventual utilizatorii să-şi scrie propriile programe pentru tratarea unei
intreruperi sau mai multe. Este exact ceea ce fac aşa zisele programe TSR,(Terminate and
Stay Residente) care se instalează in memorie şi rămân instalate până la o comandă
explicită pentru eliberarea memoriei. Acestea modifică adresa rutinei de tastatură din
tabelă, filtrând toate caracterele care se introduc la tastatură. Atunci când combinatia de
taste pentru activare este identificată in şirul de caractere introduse la tastatură programul
din memorie, care “dormita” este activat şi îşi execută sarcina pentru care a fost scris. La
scrierea unor asemenea programe trebuie cunoscută bine arhitectura şi sistemul de
operare existând pericolul ca eventual sistemul să se blocheze.
Această poartă de intrare in sistemul de operare prin intermediul intreruperilor
este folosită şi de unele programe “răuvoitoare” cum ar fi “viruşii” , ” cal trojan” ,etc.
Aceste programe se zice că “fură“ o intrerupere adică işi introduc in tabela de intrerupere
in locul adresei normale -pentru apelul intreruperii de disc dur sau pentru un alt
echipament- propria lor adresă de apel!. La declanşarea normală a intreruperii de disc se
lanseaza acest program “pirat” care poate eventual poate cauza o formatare a discului
dur -ceea ce poate avea un efect catastrofal asupra integrităţii datelor in PC-sau o alta
activitate cu caracter nociv pentru executia normala a progrsamului. Pe cât de puternic
este sistemul de intreruperi in activitatea unui pocesor pe atât de mare poate fi pericolul
folosirii necorespunzătoare a acestuia de către persoane rău intenţionate.
Sistemele de operare mai noi (Windows NT, Windows2000, WindowsXP,Linux,

61
OS/2) limitează accesul la partea de hard tocmai din această cauză. Programele de
aplicaţie lucrează pe procesoarele noi intr-un mod “utilizator” in care nu pot accesa direct
hardul .Accesul la hardware se face numai prin intremediul sist. de operare si eventual
trebuie sa ai drepturi de administrator sau sau root -procesorul in acest caz este trecut din
modul utilizator in modul system cu acces la toate functiile – pentru ca să de poată accesa
funcţiile speciale ale echipamentelor. În felul acesta orice incercare care ar putea sa
produca daune in sistem si ar veni din partea unui utilizator obisnuit sau rau intentionat
este blocata şi sistemul devine mai sigur in exploatare .

5.2 Procesoare CISC şi RISC

Procesoarele Intel din seria x86 fac parte din aşa zisele procesoare CISC
(Complex Instruction Set Computer - calculator cu set complex de instrucţiuni).
Acestea sunt procesoare la care setul de instrucţiuni cuprinde un număr mare de
operaţii implementate. Totodată acestea se pot executa cu operanzi a căror adresă poate
cere timp până se calculează şi după aceea se execută instrucţiunea propriu-zisă. S-a
văzut incă incepând chiar de la calculatoarele mari (mainframe) a anilor 1950 că, execuţia
operaţiilor simple cu operanzi in registrii iau mai puţin timp de calcul. In plus odată cu
dezvoltarea softului de aplicaţii şi prin studii statistice efectuate de companii ca IBM s-a
demonstrat că instrucţiunile complexe din procesoarele CISC sunt rareori folosite
preferându-se folosirea a câtorva instrucţiuni simple in locul uneia mai complexă. Astfel
10% din setul de instrucţiuni a unui procesor CISC stă la bază a peste 90% din totalul
codului generat de un compilator ca PASCAL-ul. Cercetările s-au indreptat spre
proiectarea unor procesoare cu instrucţiuni mai puţine, cu mulţi registri şi memorie
imediată in care să fie reţinute datele temporare precum şi cu viteză mai mare. Astfel aşa
zisele procesoare RISC (Reduced Instruction Set Computer - Calculator cu Set Redus de
instrucţiuni).
Acestea s-au dezvoltat imediat ce tehnologia a permis obţinerea de memorie
ieftină.
Simplitatea setului de instrucţini, modul de adresare mai simplu care necesită un
singur acces la memorie principală intr-un sungur impuls de ceas şi execuţia

62
instrucţiunilor in structuri de tip pipeline au permis proiectarea unor unităţi de execuţia
superscalare care permit execuţia mai multor instrucţiuni simultan. Aceasta au dus la
succesul structurilor de tip RISC, care s-au impus alături de cele mai vechi de tip CISC.
In ultimii 15 ani nu s-au mai proiectat noi structuri CISC.
Simplitatea structurilor RISC, nevoia mai puţină de siliciu şi deci posibilitatea de
integrare pe cip a unor memorii şi unităţi de execuţie multiple au făcut ca acestea să fie
mai performante decât cele de tip CISC.
Procesoarele noi din seria X86 folosesc în structura lor tehnici RISC ele însă
păstrând vechea structură CISC. Acest set de instrucţiuni complex face ca softul mai
vechi să fie completibil şi pe cele actuale. Dacă doriţi un calculator cu procesor RISC s-ar
putea să nu beneficiaţi de tot softul care s-a scris. pentru procesoarele CISC de pe PC.
Procesoare reprezentative de tip RISC sunt “SPARC” “MIP” şi “ALPHA RISC”.
Sistemul de operare mai nou Windows NT poate lucra multiplatformă adică pe
procesoare CISC şi RISC pe când Windows ‘98 este disponibil numai pe platformă CISC
adică x86.
Vom aminti aici şi ceva despre procesoarele DSP (Digital Sygnal Processor).
După cum spune şi numele - (Procesor de Semnal Digital)acestea sunt proiectate special
pentru a controla semnalele analogice intâlnite în lumea reală şi care au fost convertite în
semnale numerice (digitale). Se folosesc pentru sinteza sunetelor , modemuri, comprimari
de semnale video şi audio, acceleratoare grafice 2D şi 3D precum şi prelucrări video. In
ele sunt integrate tehnologii avansate de prelucrare ,specifice procesoarelor moderne -
arhitecturi SIMD sau MISD - . Viitorul cu toate aplicaţiile sale multimedia vor face ca
acestea să ocupe un loc important în viitoarele arhitecturi de calculatoare si sisteme de
calcul ptr. calculatoarele “ de acasa” !

Întrebări la cap. 5

1. La ce se referă noţiunea de întrerupere la un sistem PC ?


2. Daţi un mod de clasificare a întreruperilor într-un sistem PC .
3. Cînd vorbim de întreruperi software la un sistem de calcul PC ?
4. De cine sunt provocate întreruperile hardware externe la un calculator PC ?

63
5. Cine provoaca întreruperile hardware interne la un PC ?
6. Care este rolul unui controler de întreruperi de tipul i 8259 ?
7. Cine permite să fie acceptate întreruperile hardware externe 8să fie active ) ?
8. Care este scopul octetului typ trimis de controlerul de întreruperi la acceptarea
unei întreruperi externe ?
9. Câte nivele de întrerupere pot exista într+un sistem PC şi de ce atâtea ?
10. Unde se găseşte plasată tabela vectorilor de întrerupere la un PC ?
11. Cum se determină adresa în tabelă a vectorului de întrerupere ptr un nivel dat
de întrerupere ? ( de exemplu întreruperea 21h) .
12. Cine provoacă întreruperile software într-un PC ?
13. La ce sunt folosite întreruperile software ?
14. În noile sisteme de operare (bazate pe tehnologia NT ) este permis
utilizatorului accesul la gestiunea întreruperilor ?
15. Ce sunt procesoarele de tip CISC ?
16. .Ce sunt procesoarele de tip RISC ?
17. Ce sunt procesoarele DSP ?

64
Cap. 6 MEMORIA

6.1. Generalităţi

După cum am văzut în cadrul arhitecturii von Neumann emoria constituie unul
din elementele de bază ale structurii unui sistem de calcul, rolul ei fiins acela de a
memora în primul rând programul şi datele care se prelucrează. La început, primele
calculatoare dispuneau de puţină memorie şi era nevoie de multă inventivitate din
parteaprogramatorilor ca aceasta să ajungă pentru programele care tindeau să devină tot
mai lungi. Odată ce tehnologia a oferit posibilitatea ca aceasta să poată fi obţinută la un
preţ acceptabil, ea s-a diversificat apărând mai multe tipuri de memorie într-un calculator,
fiecare din acestea având locul şi rolul ei bine stabilit. Memoria unui calculator PC
cuprinde în principal două tipuri:
A) Memorie RAM
B) Memorie ROM

A) Memoria RAM
Numele acesteia provine de la denumirea ei în engleză: Random Access Memory.
Informaţia care se găseşte stocată în ea la diferite adrese (cod de program sau date) poate
fi citită sau înscrisă cu o nouă informaţie. Se spune că suportă atât operaţii de citire (read)
cât şi operaţii de scriere (write). Informaţia elementară care se memorează este o
informaţie binară de 0 sau 1 iar circuitul fizic elementar care poate memora această
informaţie se numeşte bistabil (are două stări stabile cărora li se asociază valoarea 0 sau
1). Dacă aceşti bistabili sunt alcătuiţi din doi tranzistori se spune că memoria RAM este
de tip static deoarece informaţia odată înscrisă se păstrează nealterată până eventual la
oprirea calculatorului când se pierde.
Pentru o celulă de memorie s-a reuşit să se folosească numai un singur tranzistor
(deci densitatea de informaţie memorată va fi dublă faţă de cea anterioară), acest tip de
memorie numindu-se de tip dinamic. Aceşti tranzistori pot să-şi piardă sarcina electrică
pe care o înmagazinează (deci informaţia memorată în ultima instanţă) şi atunci este

65
nevoie de o operaţie de reîmprospătare permanentă (refresh) care se face cu ajutorul unor
circuite concepute în acest scop (un refresh la minimum 2 ms).
Aceste blocuri de memorie RAM au în general o organizare matriceală după cum
se vede în fig. 6.1. Dacă la început aveau forma unor circuite integrate distincte, odată cu
evoluţia tehnologiei aceste cipuri au fost plasate pe plăcuţe de memorie cu 30, 72, 162,
etc picioare şi capacitatea lor a crescut de la 256K, 1M, 2M, 4M, 8M, 16M, 32M , 64M,
128M, 256M sau in viitor mai mult. În unele publicaţii se poate întâlni şi termenul de
DRAM (Dynamic Random Access Memory – memorie dinamică cu acces aleator) care
precizează că este de tip dinamic şi cu unele denumiri ca SIMM (Small Inline Memory
Modules ), DIMM,DDRAM etc.

Fig. 6.1.

B)Memoria ROM
Această memorie nu suportă decât citirea datelor din ea (ROM – Read Only
Memory – memorie numai pentru citire) şi la fel ca şi memoria RAM, capacitatea ei a

66
crescut odată cu evoluţia tehnologiei de la circuite de 1K la 2K, 4K 8K, 16K, 32K, 64K,
etc.Dacă informaţia care este înscrisă într-un modul se mai poate şterge şi reîncărca, se
spune că avem de-a face cu ROM-uri programabile( până la 50 – 100 de reînscrieri). La
primele tipuri de memorii ROM ştergerea se face cu lumină ultravioletă printr-o fereastră
de cuarţ plasată deasupra chipului avînd memrie de tip EPROM. Dacă ştergerea se face
electric avem EEPROM (Electrical EPROM).Aceasta ştergere şi reînscriere a informaţiei
se făcea in dispoyitive speciale numite programatoare de ROMuri . În momentul de faţă
ştergerea şi reprogramarea se face strict electric , crcuitul rămîne pe placa unde este
montat folosindu+se aşa zisa memotie ROM de tip flash. Acest tip de memorie poate fi
şters şi reprogramat de cîteva mii de ori .
Memoria ROM se foloseşte în PC pentru memorarea programelor BIOS – Basic
Input Output System – despre care s-a mai amintit.

6.2. Alocarea memoriei la sistemul de operare DOS

În figura 6.2. se preyintă o hartă a memoriei în care se recunosc unele segmente


care au fost prezentate într-un capitol anterior. Se observă că pentru programele de
aplicaţie sunt disponibili 640K de memorie. În realitate nu toţi aceşti octeţi sunt
disponibili.
Din figura 6.3. se observă că atât sistemul de operare DOS cât şi BIOS-ul
calculatorului foloseşte o parte din memoria RAM disponibilă pentru memorarea unor
date necesare bunei lor funcţionări. Pentru asigurarea portabilităţii programelor (adică
pentru ca programele să poată rula pe orice tip de calculator PC) sub sistemul de operare
DOS proiectanţii DOS-ului recomandă dezvoltarea unor apeluri de funcţii cu structura
din fig. 6.3. Astfel programul utilizator va apela o serie de funcţii ale sistemului de
operare care la rândul său accesează funcţii specifice echipamentului hardware existent
cu ajutorul funcţiilor BIOS specifice.
După cum am văzut, pentru simplificarea apelurilor funcţiile BIOS respectiv DOS,
acestea sunt apelate cu instrucţiuni de tip INT n adică întreruperi software de nivel n. Pe
lângă furnizarea lui n în instrucţiunea propriu-zisă se mai furnizează în plus şi informaţii

67
suplimentare prin octeţi specifici plasaţi în preambulul apelului într-un registru (AX de
obicei) sau chiar mai mulţi regiştri.

Fig. 6.2.

Fig. 6.3.

68
Astfel de exemplu funcţia
INT 10H
oferă o varietate de servicii BIOS pentru gestionarea ecranului. Trebuie avut grijă ca
înainte de apelul acestei funcţii în registrul AH să se încarce un octet care să specifice
servicul video apelat.DE exemplu , 00H va selecta modul video, 01H va stabili
dimensiunea şi forma cursorului, 02H va stabili poziţia cursorului ş.a.m.d.
Există mai multe funcţii BIOS care pot fi apelate în acelaşi mod ca cel descris
anterior.
Dacă avem nevoie de anumite servicii asigurate de către sistemul de operare
DOS, apelarea acestora se face cu int 21H care este specifică acestui sistem de operare. În
prealabil se va încărca:
¾ registrul AH cu numărul funcţiei;
¾ registrul AL cu numărul subfuncţiei;
¾ dacă este necesar se încarcă şi ceilalţi regiştri cu date;
¾ se apelează INT 21H
De exemplu, dacă se doreşte ca un program să se termine şi să predea controlul
procesului părinte se poate folosi funcţia 4CH cu următoarea secvenţă simplă :
mov ah, 4ch
int 21h
Ea este folosită în mod curent la terminarea programelor scrise în limbaj de
asamblare pentru redarea controlului către sistemul de operare DOS (cunoscută şi sub
numele de funcţia EXIT).
Figura 6.4. schiţează care sunt componentele principale ale BIOS – ului şi
eventual rolul jucat de acestea.
În momentul pornirii singurul program care poate fi apelat este cel din memoria
ROM şi anume modulul BIOS de pornire (boot la rece !). Acesta are rolul de a face un
test scurt al sistemului pentru aflarea configuraţiei existente (POST – Power On Self Test
– autotestul de pornire), iniţializează anumite echipamente şi trece la încărcarea
SO – DOS de pe disk sau de pe disketă. Pe lângă această funcţie tot în BIOS sunt
memorate programele de întreruperi hard precum şi serviciile BIOS oferite tot prin apelul
unor întreruperi BIOS.

69
Fig. 6.4.
Se obsevă ca tot în BIOS sunt memorate rutinele de tratare a întreruperilor apelate prin
declanşarea întreruperilor corespunzătoare precum şi serviciile ( serviciile video de
exemplu ,etc) .

6.3 Memoria video

Una din cele mai importante interfeţe dintre utilizator şi PC o constituie monitorul
calculatorului.Dacă la început ecranul calculatoarelor afişa numai caractere
monocrome odată cu dezvoltarea procesoarelor şi sistemul video care asigură afişarea a
trecut prin transformări majore fiind capabil ca pe lângă caractere să apară şi grafice,
eventual în culori iar sistemele Windows fac din această interfaţă grafică modul principal
de dialog şi comandă!Observăm în figura 6.5. că elementele principale ale sistemului de
afişare sunt echipamentul de afişare (CRT – Cathodic Ray Tube – monitorul propriu-zis)
adaptorul video (sau controler) şi memoria video. Putem să definim ca memorie video
zona de memorie accesată simultan de procesor şi de controlerul video care la ieşire
este capabilă să producă o secvenţă serială sincronă de informaţii capabile să comande
un dispozitiv de tip CRT.

70
Fig. 6.5.

Această memorie într-o primă aproximaţie poate fi văzută ca un registru uriaş de


deplasare ce conţine în el memorată imaginea. Un punct de pe ecran se numeşte pixel.
Acest punct poate avea anumite caracteristici (atribute) cum ar fi culoarea sa,
clipitor,video invers , etc.
După cum se observă din figura 6.6. imaginea care trebuie afişată este stocată
într-un ecran virtual din memoria video. Controlerul video generează un rastru mişcând
fasciculul de electroni de la stânga la dreapta şi de sus în josul ecranului, similar cu cititul
unei pagini. La sfârşitul unei linii orizontale fascicolul este stins şi mutat la începutul
liniei următoare baleind linia ş.a.m.d. Această baleiere poartă numele şi de rastru.
Prentru fiecare poziţie a unui pixel din rastru datele de afişat sunt citite din
ecranul virtual aflat în emoria video. Aceste date sunt aplicate la intrările unor circuite
DAC (Digital Analog Convertor) care le convertesc în nivele de tensiune pentru cele trei
culori primare RGB (Red, Green, Blue) folosite în televiziunea color. După terminarea
unui cadru fascicolul se reîntoarce în stânga sus şi reîncepe un nou cadru, ş.a.m.d.
Un astfel de tip de afişaj se mai numeşte şi afişaj APA (All Points Addressable).
Noi am reprezentat un rastru cu 640 de puncte pe linie şi 480 de colane (640 x
480).
Pentru ca imaginea să nu aibă efect de pâlpâire se impune ca numărul de cadre pe
secundă (frecvenţă de reîmprospătare) a ecranului să fie mai mare de 50 Hz.

71
Fig. 6.6

Toate ecranele actuale sunt echipamente APA dar vom găsi şi calculatoare mai
vechi care funcţionează cu standarde mai vechi cu definiţii şi caracteristici mai slabe.
Au existat mai multe tipuri de controlere video:
¾ MDA (Monochrome Dispozitiv Adaptor) construită de IBM în 1981 odată cu
primul PC. Nu avem posibilităţi grafice putând afişa numai caractere ASCII
standard;
¾ Hercules care a rezolvat problema îmbinării textului cu grafica pe acelaşi
ecran. Placa monocromă HGC (Hercule Graphic Card) putea afişa 720 x 348
puncte monocolor pe ecran.
¾ CGA (Color Graphic Adaptor) produsă de IBM ce putea ajunge la 640 x 200
puncte cu 16 culori simultan;
¾ EGA (Enhanced Graphic Adaptor) cu rezoluţie de 640 x 350 puncte
¾ VGA (Video Graphic Array) cu 640 x 480 puncte şi 256 culori cu un rastru
similar prezentării noastre;
¾ SVGA (Super Video Graphic Array) cu 1024 x 780 puncte afişabile
Toate plăcile dinntr-o serie pot în general lucra cu programe scrise pentru seriile
anterioare. Noi am prezentat modul de funcţionare aşa-zis grafic al acestor plăci dar mai

72
există un mod de funcţionare numit caracter. În acest mod se consideră că memoria
conţine coduri de caractere ASCII şi nu puncte direct afişabile iar un circuit special
numit generator de caractere livrează pixele din codul ASCII citit.
Vom mai reveni la placa de tip APA insistând puţin şi asupra afişajului de culoare
al punctelor. Un monitor color poate afişa peste 16 milioane de culori, dar adaptorul
video limitează această cifră. Dacă utilizăm pentru fiecare pixel câte un octet pentru a
memora caracteristicile sale de culoare putem avea 256 (2**8) de culori. Dacă extindem
pentru un pixel la 2 octeţi memoria, atunci sunt posibile 65536 de culori, iar dacă pentru
fiecare culoare fundamentală (RGB) se rezervă un octet (deci 3 octeţi pe pixel) depăşim
16 milioane .
În terminologia PC – urilor modul de afisare cu 1 octet rezervat pentru un pixel
se numeşte pseudo – color, cu 2 octeţi HIGH color şi cu 3 octeţi – true color.
Pentru ca din informaţia numerică să se obţină un nivel de tensiune analogic
corespunzător în adaptoarele video se utilizează convertoarele numeric – analogice
(DAC). Acestea sunt de obicei pe 8 biţi şi câte unul pentru fiecare culoare fundamentală.
Deci am fi în stare să afişăm peste 16 milioane de culori dar de obicei informaţia de
culoare pentru aplicaţii grafice nepretenţioase este cuprinsă pe un octet – deci numai 256
de culori la un moment dat din cele 16 milioane posibile. Cele 256 de culori alese pentru
afişare din domeniul de 16 milioane formează aşa – zisa paletă de culori iar conversia de
la 8 biţi la 24 biţi se face în adaptorul video printr-o memorie numită CLUT (Color
Look – Up Table – Tabel de selecţie al culorii). Figura 6.7. prezintă funcţionarea paletei
de culori.
Valoarea pe 8 biţi a octetului este considerată o adresă în tabela CLUT care va
selecţiona cuvântul de 3 octeţi corespunzător ce va genera culoarea. Dacă se doreşte
schimbarea paletei se vor memora alte valori în tabela CLUT pentru acelaiasi adresa.
În final trebuie să amintim că plăcile grafice actuale pot avea o memorie video mai mare
decât cea alocată în harta memoriei. Dar numai o singură pagină se afişează la un
moment dat. Pagina afişată este selectată cu un registru intern. Deasemeni au apărut plăci
cu aşa-numite acceleratoare video (AGP) care sunt folosite şi pentru grafica în 2
dimensiuni (2D) sau 3 dimensiuni ( 3D.). Controlerele video au integrate unităţi cu

73
instrucţiuni grafice speciale pentru prelucrarea şi sinteza imaginilor procesorului
revenindu-i numai sarcina de a apela aceste funcţii integrate în controler.

Fig. 6.7.

6.4. Memoria CACHE

Dacă vom privi harta de alocare a memoriei vom observa că acest tip de memorie
nu apare şi în realitate µP şi PC poate funcţiona foarte bine şi dacă aceasta nu există.
Memoria CACHE este mai curând un principiu decât un dispozitiv! Există foarte multe
tipuri de CACHE, unele construite din dispozitive hardware specializate, altele nu sunt
decât programe ! Toate însă au la bază aceeaşi idee: de a aduce mai aproape ceea ce se
foloseşte mai des şi a lăsa mai departe lucrurile folosite mai rar ! Astfel se poate folosi
rapid ceea ce este deja aproape . Fiind vorba de memorie ,cache – ul este o memorie mai
rapidă decît memoria RAM şi care este interpusă între memoria RAM lentă şi µP.

74
Fig. 6.8
După cum se observă din figura 6.8 între memoria RAM a µP şi µP s-a interpus o
memorie mai mică dar cu un timp de acces mult mai mic în ordin de mărime. Atunci când
µP face un acces la memorie caută mai întâi dacă nu cumva adresa cautata se găseşte în
memoria cache. Dacă găseşte informaţia nu se mai face apel la meoria RAM şi se trece
mai departe. Se spune că s-a realizat un “hit” (s-a nimerit)!.
Dacă informaţia nu exista se face un apel la memorie (am avut un rateu – un
“miss”). Din memorie nu se aduce numai informaţia cerută ci o “felie” mai mare şi cu
informaţiile conţinute adiacent adresei. Astfel că dacă la un nou apel se cere informaţia
următoarei adresei aceasta şi altele se află deja în cache . Cunoscând principiul vom căuta
să dăm unele exemple de cache hard sau soft luate din activitatea curentă a unui utilizator
de PC şi care poate la o primă privire scapă neobservate că ar avea legătură cu tehnica de
cache !
1. Cache – ul de disk. Orice SO de operare( mai putin MS – DOS !)
funcţionează şi cu un cache activ pentru disk, cache care memorează o
porţiune de disk ce conţine programe ale SO şi este localizat în memoria
principală RAM (fig. 6.9)

75
Fig. 6.9.

Pentru sistemul DOS firma Symantec (producătoarea programelor din seria Norton )
oferă un program cache numit smart – drive care asigură schema de mai sus şi care
măreşte viteza de lucru de cîteva ori ,mai ales cînd se foloseşte intens discul.
2.Cache – ul procesorului. Dacă se analizează viteza ultimelor µP şi cea a memoriei
RAM vom vedea că există diferenţe între acestea de aproape un ordin de mărime. Din
aceste motive se introduce o memorie cache intermediară care măreşte viteza sistemului
cu 100%-400% în funcţie de tipul aplicaţiei. Chiar mai mult, la ultimele tipuri de µP (de
la Pentium în sus) pe pastila de siliciu a procesorului este integrat un cache intern cu timp
de acces egal cu cel al procesorului numit cache level 1 spre deosebire de cel intern
numit cache level 2.

Fig. 6.10

76
` 3. DNS (Domain Name Server) de pe reţeaua Internet sunt nişte cache software
care reţin adrese şi IP asociate pentru creşterea eficacităţii de căutare a unor site-uri.La o
revenire a utilizatorului pe aceste situri exista deja memorate corespondenţele adresa -IP
care se foloseste fara sa se apeleze din nou serverul DNS initial.
4. Clienţii WWW cum ar fi Netscape sau Internet Explorer memorează într-un
cache soft siturile deja vizitate şi eventual paginile deja citite pentru ca la o
comandă Back să se ia informaţia citită din cache şi nu se face un apel de a
descarca din nou o pagina deja citita! .
5. Memoria virtuală.
¾ Memoria virtuală este un mecanism prezent în orice SO modern. Cu ajutorul
acestui mecanism se pot executa programe mai mari decât ar încăpea în
memoria RAM. Ideea este de a ţine programele pe disk sub forma unor blocuri
de 1 – 8K (4K la Pentium) numite pagini şi de a aduce în RAM numai acelor
pagini care se execută !
¾ Astfel are loc tot timpul o alocare de noi blocuri în memorie şi transferarea unor
blocuri vechi înapoi pe disk, operaţie numită swap – ing. Identificarea paginilor în
RAM sau disk este asigurată de MMU (Memory Management Unit), o unitate nouă
introdusă la procesoarele 386 si cele care au urmat ,pe lângă cele cunoscute deja de

Fig. 6.11

77
noi (EU si BIU) care gestionează o tabelă de pagini în care se găsesc trecute paginile
active – cele ce sunt efectiv în RAM – timpul de când s-a făcut apel la o pagină etc., date
necesare în operaţia de swapping.
Sistemele de operare începând cu Windows 3.1. au implementat aceste
mecanisme de memorie virtuală care asigură programelor rulate sub acestea o memorie
“RAM” limitată doar de capacitatea alocata pe disc pentru spatial de swap.

Întrebãri la cap. 6

1. Care sunt tipurile principale de memorie din dotarea unui calculator PC ?


2. Care este elementul fizic care permite memorarea informaţiei binare in PC ?
3. Cum este organizată funcţional o memorie Ram într+un PC ?
4. Pentru ce este utilă memoria ROM într-un PC ?
5. Programele de aplicaţie folosesc tot spaţiul de 1 M memorie disponibil sub
sistemul de operare DOS ?
6. Care sunt componentele principale ale BIOS-ului unui PC ?
7. Care sunt elementele principale ale sistemului de afişare într+un PC ?
8. Ce este memoria video şi de cine este ea accesată ?
9. Numiţi 3 tipuri de controlere video din scara de evoluţie a acestora ?
10. În cîte moduri poate funcţiona o placă video ?
11. Câte culori pot fi ataşate unui pixel de pe ecran ?
12. Ce avantaj oferă folosirea unei tabele de culori ( CLUT) în controlerele
grafice ?
13. Cine face conversia octeţilor de culoare în tensiuni electrice de comandă
pentru tubul catodic al ecranului ( CRT ) ?
14. Ce se înţelege pri memorie cache la un calculator PC ?
15. Daţi cîteva exemple de memorie cache hard sau soft întâlnite în practica PC ?
16. Care este principiul memoriei virtuale dintr-un PC , privită prin prisma
principiului de memorie cache ?

78
Cap.7 SISTEMUL DE I/O

Desemnăm prin sistemul de I/O (input/output – intrare/ieşire) un set de module


funcţionale care permit vehicularea informaţiei între CPU, memorie şi lumea reală după
cum se vede în figura 7.1.

Fig. 7.1.
Sistemul de intrare - ieşire este dotat cu o serie de echipamente care vor permite
informaţiilor să fie fie citite de către sistem -intrarea de date – fie să părăsească sistemul
şi să fie folosite în afara acestuia -ieşirea de date - . Unele dintre acestea se găsesc în mod
standard pe oricare sistem iar altele pot să fie adăugate ulterior folosindu+se de
posibilităţile de conectare din exterior sau folosind extensiile libere existente pe placa de
bază a sistemului.

7.1. Port de intrare

Vom furniza în fig. 7.2. o schemă de intrare a unui octet în sistemul de calcul
Acest octet va fi furnizat sub forma poziţiei unor microîntrerupătoare (switch – uri) care
se pot găsi pe poziţia OFF (“0” logic) (legătură făcută la “0”) fie pe poziţia ON (lăsată “în
aer” = 1 logic). Este o situaţie foarte des întâlnită când CPU are de citit configurarea unui
echipament periferic acesta furnizându-i octetul prin poziţia unor switch-uri sau
“jumpere” aflate pe placa de baza sau placa de extensie (controlerul propriuzis ).

79
Fig. 7.2.

Aşa cum pentru a selecta o informaţie din memorie se selectează o adresă de


memorie mai întâi şi apoi se face citirea şi în cazul dispozitivelor de I/O fiecărui set de un
echipamente le este rezervată o adresă unică sau set de adrese care le diferenţiază de
alte dispozitive de I/O. Aceste adrese sunt cunoscute ca adrese de porturi I/O. În
momentul când CPU generează comanda de citire a portului nostru, semnalul de adresă
va fi decodificat de către decodificatorul de adresă porturi şi va activa intrarea SEL a unui
singur circuit de intrare-ieşire -- circuitul vizat - . În acest moment poziţia switch-urilor
va fi memorată în cele 8 circuite bistabile ale circuitului 244 şi totdată va fi disponibilă la
ieşire OUT0, …, OUT7 care sunt legate la busul de date ale µP. Eventual registrul AX
(mai precis AL din acesta) va putea astfel memora octetul care a fost programat la
switch-uri şi apoi să-l prelucreze conform programului. Se zice că a fost citit un octet la
un port de intrare.
Pentru citirea informaţiilor de la un port de intrare se foloseşte o instrucţiune de
intrare date de tipul INP ( INPut ) . Forma cea mai simplă a unei astfel de instrucţiuni este
INP al , adresa port adică octetul aflat la adresa port va fi citit şi transferat

80
în registrul al ( octetul inferior al registrului general ax ).
Dacă spaţiul de adresare pentru memorie este 1M (2**20) spaţiul de adrese pentru
porturi de I/O cuprinde 64K (2**16).Procesorul va executa un ciclu de citire similar cu
cel de la memorie numai că de data aceasta nu va fi selecţionată o locaţie de memorie ci
un port de intrare.

7.2 Port de ieşire

În fig. 7.3. am reprezentat un circuit integrat cu indicativul 374 care are 8 circuite
bistabile similar cu circuitul 244 folosit anterior. De data aceasta intrările acestui circuit
sunt cuplate la busul de date a sistemului iar ieşirile vor avea cuplate diode luminoase
(LED) care vor furniza prin indicaţie luminoasă octetul furnizat de sistem. Similar ca în
exemplul anterior la selecţia adresei portului de ieşire dorit, semnalul SEL va face ca
starea liniilor de pe busul de date să fie memorată în cei 8 bistabili ai circuitului. Totodată
starea acestora se va regăsi la ieşirile Q0, …, Q7 ce va face ca unele LED-uri să se aprindă
sau nu după cum în bistabili este memorat “0” sau “1” şi deci octetul va putea fi
“vizualizat” prin starea aprinsa sau stinsa a LED-urilor.

Fig. 7.3.
În cazul trimiterii unui octet către un port de ieşire( operaţie de ieşire date) se
foloseşte o instrucţiune de tip OUT (OUTput ). Astfel dacă dorim să trimitem un octet din

81
registrul al de la procesor la portul cu adresa adresa-port forma instrucţiunii va fi
următoarea: OUT adresa-port ,al . Un asemenea port de ieşire se foloseşte în
calculator şi la furnizarea datelor către imprimantă. Este vorba de portul de imprimantă
cunoscut şi sub numele de LPT1 sau LPT2 (de la Line PrinTer). Acesta mai posedă în
plus şi alte linii decât cele de date numite şi linii de stare şi control.
E bine de ştiut că un echipament de intrare-ieşire nu are asociată o singura adresă,
adresa registrului de intrare –ieşire . Există cel putin 3 regiştrii asociaţi unui port:
1.-registrul propriuzis al portului în care se depune octetul sau se citeşte octetul
2.-registrul de comandă în care se trimit octeţi cu rolul de a comanda
echipamentul de intrare –ieşire
3.-registrul de stare a portului care indicş starea unor parametrii ai
echipamentului
Astfel la o imprimantă portul de comandă primeşte comenzi pentru avansul
hîrtiei,salt la pagină nouă, trecerea în mod grafic ,resetare etc. Prin citirea octetului din
portul de stare calculatorul poate afla dacă imprimanta este on-line, există hîrtie ,există
cerneală sau toner ,etc. La adresa portului propriuyis se vor trimite codurile ascii ai
octeţilor de tiparit sausecvenşele de biţi pentru tipărire grafică .
Handshaking.
În fig. 7.4. am reprezentat interfaţa dintre calculator şi o imprimantă cuplată la
portul LPT1. Portul LPT mai este cunoscut şi sub numele de port paralel datorită faptului
că transferul informaţiei (octeţilor) se face simultan la nivelul celor 8 ranguri ale unui
octet, existând câte o linie separată pentru fiecare, notate D0,…, D7.
Unele dispozitive de I/O acceptă informaţia mai încet decât poate transmite µP.
Deci această informaţie trebuie să fie temporizată pentru ca imprimanta să poată tipări
caracterul transmis şi abia după aceea să recepţioneze următorul caracter. În acest caz una
din metodele folosite se numeşte handshaking şi foloseşte încă 2 semnale în plus faţă de
cele de date pentru ca să se asigure o sincronizare perfectă între calculator şi imprimantă.
Mai întâi datele D0,…, D7 sunt plasate pe liniile de date corespunzătoare de către
µP şi se transmite către printer semnalul STB (Strobe) care îl înştiinţează că pe liniile
D0,…, D7 este un caracter disponibil. Printerul începe să tipărească caracterul recepţionat
şi simultan plasează pe linia BUSY un semnal egal “1” care atenţionează µP că este

82
Fig. 7.4.

ocupat încă cu tipărirea caracterului. µP poate determina dacă printerul este în


stare să primească un nou caracter sau nu prin testarea liniei BUSY. Atât timp cât acesta
este “1” µP nu va transmite un nou caracter. Imediat ce semnalul de pe linia BUSY
devine egal cu “0” µP poate încărca liniile D0,…, D7 cu un nou caracter pentru tipărit
ştiind că cel anterior a fost tipărit. Acest proces de interogare poartă denumirea de
“handshaking” şi este o tehnică curent folosită în transmiterea de date între echipamente
cu viteze şi caracteristici diferite şi care trebuie să comunice.
După cum am amintit în cadrul calculatoarelor IBM – PC există un asemenea port
care funcţionează în modul descris anterior. Acest mod de funcţionare se mai numeşte şi
mod SPP (Standard Parallel Port), şi rata maximă de transfer a acestuia era de 150
Kb/sec. Ulterior IBM a dezvoltat o interfaţă care permitea un transfer bidirecţional al
octeţilor permiţând cuplarea şi a altor echipamente la el (scannere, unităţi de disk sau
CD-romuri externe, etc) şi această nouă normă s-a numit port EPP (Extended Parallel
Port) adică port paralel îmbunătăţit. S-au mai adăugat unele îmbunătăţiri şi la această
normă obţinându-se un port paralel cu capabilităţi extinse (ECP).
Am specificat aceste lucruri deoarece unele imprimante moderne (Laser sau cu jet
de cerneală) nu mai funcţionează cu portul paralel în modul SPP ci acesta trebuie
configurat pe mod EPP sau ECP protocolul de transfer mai cuprinzand şi transferul unor
comenzi pe lângă cel al caracterelor , specific numai la SPP.

83
7.3. Comunicaţii seriale

În calculatorul IBM – PC sunt prevăzute de obicei două porturi de comunicaţie serială


(COM) care folosesc protocoale de transmisie asincronă de tip start/stop cunoscute sub
numele de COM1 şi COM2. In general pe unul din acestea se conectează echipamentul
numit mouse folosit ca echipament standard în SO Windows. Celălalt poate fi folosit la
cuplarea cu un alt calculator în scopul transferului de date – sau la el se poate conecta un
modem extern folosit pentru conexiune la distanţă prin reţeaua telefonică cu un calculator
ce oferă servicii INTERNET.
Observăm deci că aceste transmisii seriale ocupă un loc important într-un
calculator modern şi vom trata pe scurt modul de funcţionare a unei astfel de transmisii.
Spre deosebire de transmisiile paralele când existau linii separate de transmisie
pentru fiecare rang al octetului transmisia serială cere existenţa numai a două linii. În
acest caz cei 8 biţi care formează un octet sunt transmisii secvenţial în 8 intervale de timp
diferite. Diagrama din fig. 7.6. reprezintă forma unui semnal serial aşa cum ar apare ea
dacă ar fi vizualizată la un osciloscop.Se observă că octetul de transmis este încadrat de
biţi auxiliari necesari pentru sincronizare sau control. Astfel transmiterea unui octet
începe cu un bit de start, se continuă cu cei 8 biţi ai octetului începând cu rangul cel mai
mic, urmează un bit de control (paritate) şi se termină cu un bit de STOP.

Fig. 7.5.

. Din cei 11 biţi transmişi numai 8 reprezintă informaţia utilă. De obicei o


interfaţă serială are atât posibilitatea de a transmite un octet (emisie) cât şi de a recepţiona

84
(recepţie). Fig. 7.7. reprezintă cel mai simplu mod de a conecta 2 calculatoare cu ajutorul
a 3 fire şi folosind interfeţele seriale COM.

Fig. 7.6.

Semnalul de emisie Tx de la PC1 este primit de al doilea PC pe piciorul Rx de


recepţie iar de la Tx de la PC2 la fel se leagă la recepţia Tx de la PC1. Astfel se pot
transmite date (fişiere, etc) sau se cupleaza intr-o reţea serială cele doua calculatoare PC
cu o investiţie minimă !
În prezent s-a pus la punct un nou tip de bus serial numit USB (Universal Serial
Bus) care permite conectarea în lanţ a mai multor echipamente prevăzute cu acest tip nou
de interfaţă asigurându-se totdată şi o eventuală alimentare a unor asemenea echipamente
care nu au sursă proprie de alimentare. Calculatoarele noi au asemenea mufe iar
programele din BIOS cuprind subrutinele necesare controlului unui astfel de bus. Se pare
că în viitor acesta va fi standardul dominant cel prezentat anterior rămânând totuşi pentru
scopuri secundare si pentru compatibilitate cu sistemele vechi !

7.4. Controlul mişcării unui motor pas cu pas

Motoarele pas cu pas sunt echipamente care s-au impus în tehnica de calcul odată
cu apariţia tehnicilor de comandă numerică.
După cum se observă din fig. 7.7. cel mai simplu motor pas cu pas constă din mai
multe bobine dispuse pe un suport magnetic cilindric care formează polii motorului şi un
magnet permanent ca rotor.

85
Fig. 7.7

Fig. 7.8 arată modul de comandă a unui astfel de motor, cele 3 faze ale motorului
sunt comandate de un registru cu 3 biţi.
Va fi alimentată cu tensiune faza al cărei bit este 1. Rotorul se va deplasa între
polii fazei alimentate. Deplasarea bitului de 1 pe celelalte poziţii ale registruloui într-un
sens sau altul cu un anumit tact va duce şi la deplasarea rotorului, pas cu pas în sens orar
sau antiorar.Astfel de motoare se folosesc în unităţile de disk magnetic (poziţionarea
capetelor de citire/scriere), diskete magnetice, imprimante, CD-rom, scanere, sateliţi
artificiali (pozitionarea antenolor parabolice de receptie si transmisie catre statia de la
sol)etc. pentru 0 poziţionarea precisă şi sub comanda unui procesor.
Observăm că această tehnică numerică de comandă şi control a pătruns în tehnică
în toate domeniile înlocuind metodele analogice mai vechi şi mai puţin precise. Se pare
că viitorul este al acestor sisteme numerice , tehnica analogica rămânând numai acolo
unde precizia nu constituie un deziderat major.

Întrebãri la cap. 7

1. Care este rolul echipamentelor de intrare / ieşire ( input – output) ?

86
2. Prin ce se identifică diferitele dispozitive de intrare-ieşire într-un PC ?

Fig. 7.8

3. Ce instrucţine se foloseşte pentru a citi date de la un port de intrare ?


4. Care e numarul de adrese de porturi disponibile într-un sistem PC ?
5. Ce instrucţiune se foloseşte pentru a trimite date spre exteriorul PC folosindu-
se un port de ieşire ?
6. Care sunt regiştrii asociaţi unui port de intrare sau ieşire ?
7. Cînd este utilizată o conexiune de tip „ handshaking” la cuplarea a doua
dispozitive ?
8. Care sunt semnalele auxiliare de control la o legătură „handshaking” ?
9. Ce biţi auxiliari apar în informaţia transmisă serial pe lîngă octetul de date ? t
10. Care credeţi că este modul cel mai simplu de a cupla 2 PC pentru a transmite
date ?
11. Cum se obţine mişcarea de rotaţie la un motor pas cu pas cuplat la un sistem
PC ?

87
Cap.8 MULTIMEDIA

Fenomenul de "multimedia" PC poate să aibă mai multe interpretări. Noi vom


accepta să numim prin acest termen un set de tehnologii care fac posibilă existenţa
aplicaţiilor de tip "multimedia" cum ar fi: grafică PC, imagini şi animaţie 2D şi 3D,
video, redare directă a imaginilor inregistrate şi comprimate, precum şi aplicaţiile legate
de sunet (inregistrarea şi redarea sunetului, precum şi sinteza vorbirii). Alături de aceste
tehnologii trebuie să amintim şi o serie de tehnologii suport pentru multimedia cum ar fi
CD-ROM, reţele locale şi tehnologii de comprimare/decomprimare a datelor. Acest
domeniu s-a dezvoltat odată cu creşterea performanţelor µP de a prelucra in timp real
fluxul de date dintr-o astfel de aplicaţie.
Vom căuta să explicăm aceste noţiuni legate de multimedia făcând apel la câteva
aplicaţii multimedia importante, principiile enunţate putând fi extinse şi la celelalte
netrecute în revistă la noi.
Unele din cele mai folosite aplicaţii M (multimedia) folosite pe calculator sunt
jocurile care solicită animaţie, specifică 3D in timp real, redare video, intrări de date din
partea jucătorilor şi redarea de sunet inregistrat sau sintetizat. Educaţia şi instruirea sunt
alte aplicaţii multimedia care pot solicita aceleaşi mijloace ca şi jocurile. Prezentările
făcute cu PC îşi găsesc utilizarea din ce în ce mai mult în ultimul timp.
Videoconferinţele folosesc metode cuprinse in aces capitol. Simulările, realitatea virtuală
şi comanda calculatorului cu ajutorul vocii completează multitudinea de aplicaţii legate
de această tehnologie cunoscută sub numele de M.

8.1 Elemente de bază ale sunetului în format digital

După cum se ştie sunetul reprezintă o oscilaţie care variază continuu în


amplitudine - ceea ce determină nivelul sonor - sau în frecvenţă - ceea ce va determina
tonul sunetului. In sistemele analogice, acest sunet era ampliifcat în sisteme electronice -
cu tuburi sau tranzistoare - rezultând o tensiune sau curent variabil şi in final se aplică
unui difuzor care avea rolul de a-l transforma din nou intr-un sunet perceput de ureche.

88
Transformările pe care le suferea sunetul in lungul acestui lanţ erau cele aplicate acestor
oscilaţii electrice.
Dacă dorim ca acest sunet să fie eventual prelucrat intr-un calculator acesta va
trebui să transforme mai intâi informatia analogică - variaţia unei tensiuni- in informaţie
digitală - şiruri de numere care reprezintă variaţia tensiunii iniţiale-. Această transformare
se face cu ajutorul uni dispozitiv numit convertor analogic - digital (ADC).
După ce acest sunet se va prezenta ca o secvenţă digitală calculatorul va putea să
prelucreze această informaţie după algoritmul cerut iar rezultatul obţinut va fi semnalul
digital care va fi reconvertit in sunet de un convertor digital - analogie (DAC).
Fig.8.1. redă acest şir de transformări.

Fig. 8.1

Dispozitivul numit de noi ADC va transforma semnalul analogic in digital prin


eşantionarea amplitudinii semnalului cu o anumită frecvenţă. Totul apare ca şi cum s-ar
realiza nişte instantanee digitale ( “fotografii !“) ale semnalului analogic cu o frecvenţă
foarte mare. Cu cât vor fi mai multe eşantioane intr-o secundă şi acestea mai precis
aproximate cu atât semnalul digital rezultat va fi mai fidel celui analogic original. In fig.
8.2. am reprezentat o oscilaţie sonoră sinusoidală care va fi eşantionată la momentele de
timp redate in fig.8.2.b, în fig.8.2.c. rezultând eşantioanele de amplitudine ale sinusoidei
initiale. Deci eşantionarea constituie prima operaţie care are loc asupra unui semnal
analogic .Aceste eşntioane sunt transformate tot in ADC in numere care vor putea fi
prelucrate de către calculator. Digitizarea eşantioanelor este a doua operaţie care are loc
pentru a obţine semnalul sub forma numerică şi să poată fii prelucrat de catre calculator.
Apare evident că semnalul reconstituit de fig.8.2.c. va fi mai fidel cu cel din 8.2.a.
cu cât frecvenţă de eşantionare va fi mai mare şi cu cât se vor folosi mai mulţi biţi pentru
reprezentarea numerică a amplitudinii unui eşantion.

89
Fig. 8.2.
Urechea umană poate sesiza semnale audio in domeniul 20-20000 Hz. O teoremă
din teoria analizei semnalelor arată că frecvenţa de eşantionare trebuie să fie mai mare
decât dublul frecvenţei cele mai mari( deci 40.000 Hz in cazul nostru).
O altă problemă este pe căţi biţi reprezentăm dimensiunea eşantionului. Dacă
folosim un octet adică 256 de valori (28=256 - cum am folosit la placa grafică pentru a
reprezenta maximum de 256 culori pe ecran) vom avea maximum 256 nivele de
amplitudine. La redare ele vor reda in mod grosier sunetul original. Dacă pentru
reprezentarea amplitudinii unui eşantion vom folosi 2 octeţi (216=65,536 valori) acest
număr mare de nivele va aproxima cu fidelitate acceptabilă semnalul original.
Având aceste noţiuni despre semnalul digital putem spune că de exemplu
semnalul telefonic digital are o frecvenţă de eşantionare de 8.000 Hz. şi se foloseşte un
octet (8 biţi) pentru reprezentarea amplitudinii lui urmărindu-se inţelegerea mesajului in

90
primul rând şi nu chestiuni legate de fidelitatea sa . La inregistrarea digitală a sunetului pe
CD se foloseşte o frecvenţă de 44.100 Hz şi 2 octeţi (16 biţi) pentru fiecare eşantion.
Dacă se inregistrează şi un semnal stereo se vor folosi incă 2 octeţi pentru al doilea canal.
Cunoscând aceste date se poate calcula rata de date pe minut pentru fiecare semnal digital
prezentat. Dacă la cel telefonic se ajunge la aproximaţia 50 kocteţi /minut la cel pentru
CD la peste 10 M/minut.
Putem să ne facem o imagine la ce fel de rate de informaţii lucrează circuitele sau
plăcile de sunet actuale. Dacă funcţiile blocurilor ADC şi DAC sunt combinate intr-
un singur circuit acesta se va numi CODEC (COdare - DEC odare).
Pe lângă funcţia de conversie aceste circuite mai pot şi comprima sau decomprima
date audio digitale.
In concluzie, deci sunetele in calculator sunt reprezentate in final ca fişiere care se
bucură de toate proprietăţile şi posibilităţile de prelucrare specifice acestora.:
comprimare, decomprimare, prelucrare numerică, etc.
Dacă extindem noţiunile la domeniul video unde, informaţia vizuală apare tot ca
un semnal electric oscilant, tot ceea ce s-a spus la sunet rămâne valabil si aici dar cu alte
rate de eşantionare

8.2 Prelucrări ale sunetului digital. Plăci de sunet

Odată ce sunetul a fost convertit in formă digitală el poate fi prelucrat pentru a se


creea tot felul de efecte ca reverberaţii, ecouri, distorsiuni controlate, etc..Calculele
necesare acestora sunt făcute in procesoare specializate numite DSP (Digital Signal
Processing) Tot acestea pot asigura şi sinteza sunetului sau a muzicii precum şi funcţiile
de comprimare şi decomprimare. Cercetările făcute în domeniul sintezei sunetelor au
permis generarea acestora din insumarea mai multor semnale sinusoidale cu frecvenţe
diferite.Un capitol din matematicile speciale se ocupă cu analiza armonică a semnalelor .
Foosindu-se rezultatele acestor analize s-a reusit sinteza sunetului prin modularea de
frecvenţă (FM).

91
Toate acestea au dus la apariţia aşa ziselor "plăci de sunet" care reprezintă un
element important al posibilităţilor M legate de sunet. Fig.8.3. reprezintă schema unei
astfel de plăci de sunet, prezenţă curentă în calculatoarele actuale.

fig. 8.3.

Ea a fost creată prima data de firma "CREATIVE LABS" si mai este cunoscută si
cu numele de "Sound Blaster".Aceste placi se cuplează normal pe un conector de extensie
al magistralei ISA sau PCI şi cuprind unele blocuri deja amintite. In plus observăm un
bloc MIXER care poate accepta intrări analogice de la ,microfon. linie audio sau difuzor
PC si care pot fi controlate individual. De asemeni blocul MIDI (Musical Instrument
Digital Interface) primeşte comenzi pentru selectarea şi generarea unor sunete de
instrumente muzicale sau efecte audio -tremolo, reverberaţie,cor, etc- .
Din analiza modului în care urechea percepe sunetele şi folosinu-se de unele
“imperfecţiuni “ ale acesteia s-a imaginat o metodă de prelucrare şi comprimare a
fluxului de date digitale aferente sunetului prelucrat care duce la fişiere de pînă la 10 ori

92
mai mici faţă de cele originale în care nu se face aceasta prelucrare digitala a semnalului
sonor. Astfel odată cu apariţia procesoarelor mai puternice din seria Pentium Pro a apărut
şi tehnologia MP3 disponibilă pe platforma PC .Aceasta a dus la răspîndirea unor
accesorii independente – playere de mp3-uri!- care se pot conecta la pc , se descarca
melodiile în acest format şi apoi se poate reproduce sunetul independent de PC!

8.3 Prelucrări digitale video

După cum am amintit deja prelucrarea semnalelor video preluate de camere


digitale sau semnalul TV urmează aceleaşi principii ca cele de sunet numai că la o altă
rată de viteză şi cantitate de informaţii pe secundă !. Semnalul video transformat în
semnal digital poate fi comprimat pentru ca să ocupe un spaţiu mai mic la stocare sau in
procesul de transmitere. La redare se intâmplă procesele inverse. In plus aici apar unele
elemente noi. Astfel s-au imaginat metode specifice de comprimare care ţin cont de faptul
că conţinutul imaginii de la un cadru la altul se schimbă foarte puţin transmiţându-se
eventual numai schimbările survenite şi păstrând ca bază un cadru iniţial. Este ceea ce fac
metode cunoscute sub numele de MPEG care a cunoscut o dezvoltare în stadarde de tipul
mpeg2, mpeg4 sau mai recent mpeg6.Aceste metode se folosesc pentru înregistrarea
digitala a secvenţelor video de la camere video sau TV şi apoi redarea acestui conţinut
video printr-o prelucrare inversă . Pentru imagini statice sunt cunoscute fişierele cu
extensia * . JPG ce provin din folosirea metodei JPEG de comprimare a imaginilor .
Noile camere foto digitale se conectează la PC pe o interfaţă de tip USB sau direct la o
imprimantă şi pot transfera aceste imagini sub forma de fişiere de tip jpg. Sateliţii de
comunicaţii destinaţi transmisiilor TV digitale folosesc de asmenea aceste tehnici de
conversie şi comprimare digitală - standardul DVB ( Digital Video Broadcasting)-. Şi
televiziunea terestră trece la televiziunea de tip digital – standardul DVB-T adica DVB
terestru!- existînd deja zone în Europa în care se renunţa la sistemul clasic analogic iar
pînă in anul 2010 practic acest sistem să fie singurul existent în anumite ţări .

8.4 Consideraţii finale


În general tehnologia Multimedia lucrează cu volum mare de date. Ca mediu ideal

93
de stocare de la inceput in acest domeniu s-a impus CD-ROM cu capacitatea sa de peste
600MB sau 700 MB. În urrma evoluţiei tehnologiilor in domeniul stocării optice a
informaţiilor au apărut standarde noi cum ar fi videodiscurile (DVD) cu capacităţi de 4G
sau 8G dar aici există mai multe standarde .
Deasemeni s-a pus problema transmisiilor digitale pentru utilizatorii obişnuiţi şi
acestea se fac in mod curent cu echipamente numite MODEM-uri (Modulation -
DEModulation) care folosesc din plin tehnica digitală pentru transmiterea datelor.
Conectarea acum acestora la cablul de TV a dus la creşterea vitezei de transfer iar
furnizorul de cablu devine şi furnizor de servicii Internet!
Datorită faptului că reţelele telefonice curente (numite şi reţele comutate)
limitează viteza de transfer a datelor la valori care nu fac posibilă transmisii multimedia
de calitate atenţia s-a indreptat spre echipamente cu fibre optice , sateliţi sau reţele locale
rapide care permit un flux crescut de date. Cei care dispun o legătură directă la
INTERNET se pot bucura de existenţa de posturi de radio digitale care transmit in
reteaua Internet . Se speră că viitorul va apartine asa ziselor autostrăzi multimedia pe care
vor fi vehiculate filmele şi muzica la cerere !

Întrebãri la cap. 8

1. Pentru ca un PC sã poatã prelucra sunete (semnale analogice )cum trebuie sã


se prezinte acestea ?
2. Care sunt operaţiile prin care un semnal analogic este transformat într-o
secvenţă digitală ?
3. Pentru ca semnalul digital să redea cât mai fidel semnalul analogic din care
provine ce măsuri se impun la conversia semnalului analogic ?
4. Care este funcţia unui circuit de tip CODEC într-o placă de sunet pentru PC ?
5. Ce standarde cunoaşteţi pentru obţinerea de fişiere digitale comprimate în
domeniul sunetului sau imaginii ?

94
Bibliografie

[1] Peter Norton- “Secrete PC “


Ed. TEORA 1996

[2] Scott Mueller- “PC-Depanare şi Modernizare “ ed . 1 sau 2


Ed. TEORA 1995

[3] Gh. Muscă - “Programare în limbaj de asamblare “


Ed. TEORA 1996

[4} Octavian Căpaţînă- „Proiectare cu microcalculatoare integrate”


Ed. DACIA 1992

[5] Vlad Caprariu s.a. “Sistemul de operare DOS. Funcţii sistem”


Ed. Romanian Software Comp. 1991

[6] “ La bible PC . Programmation systeme “ 3-ieme edition


Ed. Micro Application 1996

[7] Documentaţie INTEL Cataloag 1988-1995

95

You might also like