Sunteți pe pagina 1din 38

CAPITOLUL 1

Introducere

1.1 Scurt istoric


n jurul anului 3000 .e.n., pe valea Tigrului i Eufratului se utiliza tblia cu
pietricele (o tbli de argil pe care erau spate anuri, n care erau aezate pietricele). Prin
deplasarea pietricelelor de-a lungul anurilor, numratul devenea semiautomat.
Ideea de a guri pietricelele i de a nira mrgeluele obinute n grupuri de cte 10
a condus la creterea substanial a vitezei de calcul. Calculatorul cu mrgelue nirate a
fost denumit abac.
n anul 1642, la vrsta de 19 ani, Blaise Pascal a construit o main de adunat n care
grupul de 10 mrgelue din structura abacului era nlocuit de o roti dinat cu 10 dini
(cte un dinte pentru fiecare cifr zecimal).
n anul 1694, Gottfried Wilhelm Leibnitz a perfecionat maina de adunat astfel
nct aceasta s poat efectua i operaii de nmultire; maina lui Leibnitz nu mai opera n
sistemul zecimal ci n sistemul binar.
n anul 1823, Charles Babbage a conceput Analytical Engine, primul dispozitiv
programabil, care nu a fost niciodat funcional deoarece tehnologia de fabricaie a prilor
componente era insuficient dezvoltat la acea vreme. Componentele principale ale mainii
Analytical Engine erau: dispozitivul de introducere (bazat pe cartele perforate),
dispozitivul de memorare a numerelor n vederea prelucrrii (magazia), dispozitivul de
calcul (moara), dispozitivul de control i dispozitivul de ieire. Prin urmare, multe dintre
componentele i conceptele care au stat la baza proiectului Analytical Engine au rmas
valabile i pentru calculatoarele de astzi. Alturi de Babbage a lucrat i Ada Augusta,
contes de Lovelace, care ar putea fi considerat primul programator. Ea a sesizat
necesitatea utilizrii structurilor de selecie repetitive i a variabilelor index. Mult mai
trziu, n anul 1979, n cinstea ei va fi denumit limbajul de programare Ada.
n anul 1872, E. Barbour realizeaz prima main de calcul cu imprimant iar n
anul 1892, W. Burroughs construiete o main de calcul (de birou) perfecionat.
n anul 1912, F. Baldwin i J. Monroe ncep producia de mas a mainilor mecanice
cu 4 operaii aritmetice iar n anul 1930 ncepe producia mainilor electromecanice de
calcul, capabile s efectueze operaii matematice precum: adunare, scdere, nmulire,
mprire, rdcin ptrat, etc.
Primul calculator electromecanic programabil a fost Z1 construit de germanul
Konrad Zuse n apartamentul prinilor si, ntre anii 1936-1938. Z1 avea o memorie de 64
cuvinte pe 22 bii, era programat cu ajutorul unui cititor de band de hrtie perforat

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


(periferic de intrare) i livra rezultatele tot pe hrtie perforat (utiliznd ca periferic de
ieire perforatorul de band).
Primul calculator electronic digital a fost ABC (Atanasoff-Berry Computer)
construit de ctre profesorul John Vincent Atanasoff mpreun cu studentul Cliff Berry
ntre anii 1937-1942 la Iowa State College (astzi Iowa State University).
n anul 1943 ncepe construcia calculatorului ENIAC (Electronic Numerical
Integrator And Computer) proiectat la Moore School de ctre John Mauchly i J. Presper
Eckert, sprijinii fiind de ctre John von Neumann i ali colaboratori.
n anul 1944 la Harvard era lansat calculatorul electromecanic Mark I care avea la
baz o serie de idei ale lui Howard Aiken i care era destinat calculului unor tabele
complexe pentru armata american (U. S. Navy). La nceputul anului 1945, cnd Mark I a
fost oprit pentru reparaii, Grace Hopper (unul dintre cei trei programatori care lucrau pe
Mark I) nota c un oarece prins ntr-un releu a cauzat probabil defeciunea. ncepnd cu
acea zi Hopper a introdus i utilizat termenul debugging pentru a defini activitatea de
depistare a defectelor prin proceduri specifice de testare.
n 1946 se finalizeaz construcia calculatorului ENIAC. Dei proiectul ENIAC a
durat doar trei ani, la inaugurare ENIAC era tehnologic nvechit. Probabil din acest motiv,
nainte de finalizarea construciei calculatorului ENIAC, inventatorii acestuia au decis s
lanseze proiectul unui calculator mai modern, EDVAC (Electronic Discrete Variable
Automatic Computer). n direct legtur cu calculatorul EDVAC, n anul 1945 (30 iunie)
von Neumann introducea conceptul calculatorului cu program memorat, ntr-o lucrare
intitulat Prima schi de raport asupra calculatorului EDVAC, lucrare care nu a fost
niciodat publicat official dar care a avut un impact major (introducea structura von
Neumann pe care o referim i astzi).
Programarea calculatorului ENIAC presupunea recablarea unor conexiuni; o ultim
versiune a acestei maini elimina acest inconvenient. Cu cteva ore nainte de inaugurare,
pentru a da o imagine mai impresionant calculatorului n faa reporterilor, unul dintre
membrii echipei de proiectare (probabil Eckert) a fixat sfere translucide deasupra
beculeelor (jumti de mingi de ping pong). ENIAC a fost brevetat (ulterior) de ctre
Oficiul de Patente al Statelor Unite ca fiind primul calculator electronic.
La construcia calculatorului ENIAC au fost utilizate aproximativ 18000 de tuburi
electronice cu vid iar calculatorul cntrea aproximativ 50 de tone. S menionm c dup
27 de ani de la inaugurarea calculatorului ENIAC, la 19 octombrie 1973, judectorul
federal Earl R. Larson pronun sentina prin care invalideaz patentul acordat de ctre
Oficiul de Patente al Statelor Unite lui Eckert i Maucly, pentru ENIAC. Prin aceeai
sentin, Atanasoff este recunoscut ca fiind inventatorul primului calculator electronic
digital (calculatorul ABC). Pentru c Eckert i Maucly n-au fcut niciodat recurs la
sentina pronunat n favoarea lui Atanasoff, cred c este potrivit s considerm c ABC a
fost primul calculator electronic digital. Totui, pentru c ABC nu a fost niciodat complet
funcional, se poate considera c primul calculator electronic digital funcional a fost
ENIAC.
n 1947 John Bardeen, Walter Brattain i William Shockley de la Bell Labs
finalizeaz cercetrile i inventeaz tranzistorul. Pentru aceast invenie, n anul 1956, cei
trei au primit premiul Nobel pentru fizic. ncepnd cu 1948, echipe de cercettori din toat
lumea lucrau la aa zisa main cu program memorat (stoted program computer).
Calculatorul EDSAC produs n Anglia este considerat a fi primul calculator
electronic cu program memorat. EDSAC a fcut primele calcule la 6 mai 1949 i a fost
calculatorul pe care a rulat primul joc graphic de calculator.

CAPITOLUL 1 - Introducere
n urmtorii 5 ani progresele realizate n domeniul calculatoarelor s-au datorat n
principal guvernelor i armatelor, care au finanat cele mai multe proiecte. Calculatorul
UNIVAC construit de compania Remington-Rand i livrat ctre Census Bureau n 1951 a
cauzat pierderi financiare foarte mari constructorului. n anul urmtor (1952) Grace
Hopper, care pe atunci era angajat al companiei Ramington-Rand, propunea reutilizarea
software-ului (reusable software); se referea la segmente de cod care puteau fi extrase i
asamblate, n acord cu anumite directive (instruciuni), ntr-un limbaj de nivel mai nalt
(higher level language). Astfel s-a nscut conceptul compilrii. Hopper va revizui acest
concept timp de 20 de ani i ideile sale au fost implementate n toate calculatoarele
moderne. CBS a utilizat unul dintre cele 46 calculatoare UNIVAC produse, pentru predicia
rezultatului alegerilor prezideniale din Statele Unite, din anul 1952. Rezultatul estimrii nu
a fost transmis la radio timp de trei ore deoarece cei implicai nu au avut ncredere n
predicia calculatorului (care n final s-a dovedit corect).
n anul 1953 IBM lanseaz sistemul 701, primul calculator cu succes comercial
incontestabil. n 1956 este lansat limbajul FORTRAN (propus nc din 1954; construcia
compilatorului a durat aproape 3 ani). Dou alte limbaje, LISP i COBOL, sunt lansate n
1957 i respectiv 1958. ALGOL i BASIC sunt de asemenea limbaje din prima generaie;
dei n-a fost niciodat larg utilizat, ALGOL reprezint baza pe care s-au construit multe
dintre limbajele actuale.
O dat cu lansarea n anul 1958 de ctre Control Data a sistemului CDC1604, primul
calculator electronic construit cu tranzistori, se nate o nou generaie de calculatoare.
Echipa de dezvoltare a proiectului CDC1604 era condus de renumitul cerecettor Seymour
Cray. Tot n 1958, doi cercettori (Jack Kilby i John Noyce) care lucrau independent,
lanseaz circuitele integrate.
n 1961 Fairchild Semiconductor produce primul circuit integrat. Dup 10 ani toate
calculatoarele utilizau circuite integrate n loc de tranzistori. Tot n 1961 este creat limbajul
de programare FORTRAN IV.
n 1962 calculatorul Atlas proiectat la universitatea din Manchester devine
operaional; n acest sistem se gseau multe dintre inovaiile arhitecturale prezente i n
sistemele de calcul actuale: procesarea instruciunilor cu suprapunere de faze (pipelineing),
paginarea memoriei, memoria virtual (denumit iniial one level store).
La 7 aprilie 1964 IBM lanseaz sistemul 360 care, pe lng faptul c reprezenta o
minune a tehnicii, a beneficiat i de o strategie inovatoare de business dar i de o
orientare preponderent ctre business: IBM garanta compatibilitatea n jos i respectiv n
sus a noului sistem reducnd astfel riscul beneficiarului de a investi ntr-o tehnologie
nvechit. Unitatea central a sistemului 360 era microprogramat i unul dintre motivele
cele mai importante pentru utilizarea microprogramrii a fost acela de a emula, ntr-o
manier mai eficient, vechile sisteme IBM, pe noul 360. Asigurarea utilizatorilor privind
trecerea direct a programelor de aplicaii de pe vechile sisteme pe noile sisteme mai
performante (compatibilitatea n jos) a constituit o tehnic managerial extrem de valoroas
lansat de ctre IBM.
Tot n 1964, la Dartmouth University, John Kemeny i Thomas Kurtz dezvolt
limbajul BASIC (Beginners All-purpose Symbolic Instruction Language).
Dup aproximativ un an, MIT revine n top prin introducerea unei reele care partaja
resurse i care utiliza primul minicalculator (minicalculatorul PDP-8 produs de compania
DEC); era o reea care gestiona liniile telefonice. Bell Labs i General Electric au fost actori
importani n acest proiect.
n 1968 Robert Noyce i Gordon Moore, nemulumii de activitatea pe care o
desfurau la Fairchild Semiconductor, fondeaz Intel Corporation.

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


n 1969 compania AT&T Bell Laboratories, nu foarte mulumit de direcia n care
evolua proiectul MIT, dezvolt propriul sistem de operare, UNIX; foarte discret era lansat
unul dintre principalii precursori ai sistemelor actuale de internet.
Primul calculator personal este considerat Kenback-1 care a fost lansat sub form de
kit (set de piese electronice pe care utilizatorul urma s le asambleze pentru a obine
calculatorul) n anul 1971 i care costa 750$. Kenback-1 utiliza o serie de switch-uri pentru
introducerea datelor n calculator i respectiv o serie de beculee pentru a afia datele de
ieire (rezultatele). Primul calculator vndut ca i produs final (nu sub form de kit) a fost
calculatorul Micral; Micral era construit n jurul unui microprocesor Intel 8008 i era
vndut n anul 1973 la preul de 1750$.
n anul 1971 Niklaus Wirth inventeaz limbajul de programare Pascal i tot n 1971,
la 15 noiembrie, Intel lanseaz pe pia primul microprocesor, 4004. Prima ediie a
sistemului de operare UNIX este lansat pe pia la 11 martie 1971 i tot n 1971 apare i
prima ediie a Unix PROGRAMMER'S MANUAL scris de K. Thompson i D. M.
Ritchie.
Tot n 1971 IBM realizeaz primul program de recunoatere a vorbirii capabil s
recunoasc aproximativ 5000 de cuvinte din limba englez.
n 1972 Dennis Ritchie de la Bell Labs inventeaz limbajul de programare C i tot n
1972 este lansat limbajul de programare FORTRAN 66.
Tot n 1972, Ray Tomlinson introduce reeua de e-mail, primul sistem de transmitere
de mesaje capabil s transmit mesaje oricrui utilizator din cadrul unei reele de
calculatoare.
n 1973 Vinton Cerf i Robert Kahn proiecteaz TCP (Transmission Control
Protocol). Dup cinci ani (1978), Danny Cohen, David Reed, i John Shoch subdivizeaz
TCP n dou protocoale distincte (care opereaz pe nivele diferite) rezultnd astfel TCP/IP
(Transmission Control Protocol / Internet Protocol). IP utilizeaz adrese de pachete i
permite fiecrui calculator conectat la internet s forward-eze un anumit pachet altui
calculator care este cu un pas (sau mai muli pai) mai aproape de destinatarul pachetului.
TCP asigur corectitudinea transmisiei (verific erorile de transmitere i emite cereri de
retransmisie dac detecteaz erori); suplimentar TCP recompune (la destinatar) n ordinea
corect pachetele din cadrul unui mesaj
Dei nu a fost niciodat vndut, calculatorul Alto lansat de compania Xerox n anul
1974 este considerat primul sistem de tip workstation. Alto era un sistem revoluionar
pentru acea perioad deoarece coninea un calculator complet operaional, un display i un
mouse. Alto opera ca multe dintre calculatoarele de astzi: utiliza ferestre, meniuri i iconuri pentru interfaarea cu sistemul de operare.
Tot n 1974 Intel lanseaz microprocesorul 8080 (pe 8 bii) care va deveni practic un
standard n industria calculatoarelor; dup 2 ani (n 1976), Intel va lansa microprocesorul
8086 (pe 16 bii).
n anul 1975 Ed Roberts, o dat cu lansarea calculatorului Altair 8800 care dispunea
de o memorie de un kilobyte i care era vndut sub form de kit, introduce i sintagma
personal computer. Bill Gates, Paul Allen, i Monte Davidoff scriu primul compilator de
BASIC pentru aceast main (Altair BASIC). n acelai an, Bill Gates renun la Harvard
pentru a fonda Microsoft mpreun cu Paul Allen.
n 1976 Microsoft lanseaz o versiune mbuntit a limbajului BASIC. n acelai
an (1976) Steve Wozniak proiecteaz primul calculator din familia Apple, Apple I. Mai
apoi, Steve Wozniak mpreun cu Steve Jobs nfiineaz compania Apple Computers. Tot
n 1976 Intel lanseaz microprocesorul 8086 (pe 16 bii).

CAPITOLUL 1 - Introducere
n urmtorii ani calculatoarele personale explodeaz pe piaa american. Se
nfiineaz foarte multe companii implicate puternic n producia de hardware i respectiv
software destinat calculatoarelor personale. ncepnd cu 1977 calculatoarele personale
ncep s fie vndute i n magazine. Urmeaz o perioad cu multiple perfecionri
arhitecturale i tehnologice care au fcut ca preul i dimensiunea calculatorului personal s
scad continuu iar putera de calcul a acestuia s creasc sistematic.
n 1977 Apple Computers lanseaz calculatorul Apple II, primul calculator personal
cu monitor color iar n iunie 1978 Apple lanseaz Apple DOS 3.1, primul sistem de operare
destinat calculatoarelor Apple. Tot n 1978 Microsoft lanseaz o nou versiune a limbajului
COBOL.
n 1979 Intel lanseaz microprocesorul 8088 (1 iulie), Oracle (fondat n acelai an)
lanseaz prima versiune comercial a SQL i limbajul de progtramare DoD-1 este oficial
transformat n Ada. Tot n 1979 este lansat microprocesorul Motorola 68000 (care ulterior
va fi ales ca procesor pentru calculatoarele Apple Macintosh) i tot n 1979 DEC (Digital
Equipment Corporation) lanseaz sistemul de operare (multi-user-multitasking) VMS
(Virtual Memory System) dedicat calculatoarelor VAX i Alpha (produse de ctre DEC).
n 1980 IBM angajeaz pe Paul Allen i Bill Gates pentru a crea un sistem de
operare destinat unui nou calculator personal (care urma s fie lansat pe pia de ctre
IBM). Cei doi cumpr un sistem de operare simpu produs de Seattle Computer Products i
folosesc acest sistem ca ablon. IBM permite celor doi s pstreze drepturile de
comercializare a noului produs, denumit DOS (Disk Operating System). Tot n 1980 IBM
contracteaz Microsoft pentru dezvoltarea unor noi versiuni de BASIC, FORTRAN,
COBOL i PASCAL destinate calculatoarelor personale ce urmau a fi produse de IBM.
Astfel, dup o perioad de ezitri (abia n 1981), IBM va lansa pe pia primul IBM
Personal Computer, care rula sistemul de operare MS-DOS (Microsoft Disk Operating
System) i care a avut un pre de start de 1565 $.
n anul 1981 Xerox lanseaz staia grafic Star, calculator care va influena puternic
evoluia ulterioar a calculatoarelor Lisa i Mcintosh produse dup 1981 de Apple, precum
i evoluia sistemelor de operare Microsoft Windows. Tot n 1981 Adam Osborne lanseaz
Osborne I, primul calculator portabil de succes, care cntrea aproximariv 11 Kg.
n anul 1982:
Intel lanseaz procesorul 80286 (la 1 februarie).
WordPerfect Corporation lanseaz WordPerfect 1.0 care va deveni unul dintre
cele mai populare programe de procesare de text de pe pia.
Rod Canion i ali ingineri de la Texas Instruments fondeaz Compaq Computer
Corporation, companie care va produce prima clon a calculatorului IBM PC
(calculatorul portabil Compaq lansat n 1983) i care va deveni cel mai mare
challenger pe piaa corporativ pentru IBM.
Este lansat Calculatorul Commodore 64, cu 64 KB de memorie RAM, cu
Microsoft BASIC i cu un pre care a czut de la 600$ i s-a stabilizat la 200$,
devenind cel mai bine vndut calculator din toate timpurile.
Microsoft lanseaz sistemul de operare MS-DOS versiunea 1.25
Apple Computer devine prima companie productoare de calculatoare care
incaseaz 1 miliard de dolari pe an din vnzri
Rich Skrenta, un elev de liceu n vrst de 15 ani, creaz primul virus de
calculator cunoscut sub numele de The Elk Cloner.

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


n anul 1983:
La 8 martie IBM lanseaz calculatorul personal XT (eXtended Technology). XT
reprezenta de fapt o alt denumire pentru calculatorul IBM 5160, primul
calculator IBM care coninea un hard disk de 10 MB (opional 20 MB), o unitate
de floppy de 5 1/4", pn la 640 KB de memorie RAM, utiliza procesorul Intel
8088, avea un slot ISA pe 8 bii i un port serial.
Compaq lanseaz Compaq Portable, primul calculator 100% compatibil IBMPC.
Microsoft lanseaz sistemul de operare MS-DOS 2.0 n luna martie i anun
Microsoft Windows n luna noiembrie.
n anul 1984:
IBM lanseaz modelul AT (Advanced Technology); modelul de baz coninea un
procesor Intel80286, 256 KB (opional 512 KB) de memorie RAM, o unitate de
hard disk de 20 MB i o unitate de floppy disk de 1,2 MB. Prin urmare, marea
diferen ntre modelul AT i modelul XT era dat de procesorul utilizat.
Apple Computers lanseaz calculatorul Apple Macintosh, cu interfa grafic
pentru utilizatori; n 6 luni sunt vndute peste 100.000 de calculatoare.
Microsoft lanseaz sistemele de operare MS-DOS 3.0 pentru calculatoarele IBMPC AT i respectiv MS-DOS 3.1 pentru reele.
Este lansat calculatorul Tandy 1000 care devine cel mai bine vndut calculator n
anul 1984.
n anul 1985:
Microsoft i IBM ncep colaborarea pentru noua generaie de sisteme de operare
(OS/2).
Intel lanseaz microprocesorul 80386 n luna octombrie.
Microsoft lanseaz, n luna noiembrie, sistemul de operare Windows 1.0 (vndut
iniial cu 100$)
n anul 1986:
Compaq lanseaz primul calculator PC bazat pe procesorul Intel 80386.
Microsoft este listat la burs, aciune care l face pe Bill Gates unul dintre cei
mai tineri miliardari ai lumii.
Microsoft lanseaz sistemul de operare MS-DOS 3.2 (n luna aprilie).
IBM lanseaz primul laptop, compatibil PC, care cntrea aproximativ 5,5 Kg.
n anul 1987:
CompuServe introduce standardul GIF pentru imagini.
IBM lanseaz calculatorul personal PS/2 (cu grafic mbuntit, cu unitate de
floppy de 3,5 inch, cu port paralel bidirecional pe 8 bii) i tot IBM introduce
standardul VGA (Video Graphics Array) pentru monitoare color (16 culori
afiabile simultan, rezoluie 640480 pixeli).
Microsoft lanseaz sistemele de operare MS-DOS 3.3 (n luna aprilie) i
Windows 2.0 (pe 9 decembrie).
Sun lanseaz procesorul SPARC.

CAPITOLUL 1 - Introducere
n anul 1988:
Friedrich Reintzer descoper cristalele lichide utilizate astzi la construcia
monitoarelor LCD (Liquid Crystal Displays).
Este introdus protocolul SNMP (Simple Network Management Protocol),
protocol de tip interogare-rspuns-comand care pemite examinarea i
modificarea parametrilor de configurare afereni dispozitivelor de interconectare
(repetoare, router-e, switch-uri brdge-uri) din reelele LAN i respectiv WAN.
Microsoft lanseaz sistemele de operare MS-DOS 4.0 (n luna iulie) i MS-DOS
4.1 (n luna noiembrie).
Motorola lanseaz microprocesorul 88000 (procesor RISC pe 32 de bii utilizat
de Apple la construcia calculatorului Power PC).
Intel lanseaz microprocesorul 80386SX.
n anul 1989 Intel lanseaz microprocesorul 80486DX care coninea peste un milion de
tranzistoare i care era dotat cu resurse pentru multitasking.
n anul 1990:
Tim Berners-Lee, care lucra mpreun cu Robert Cailliau la CERN, propune un
sistem hypertext care va reprezenta un prim pas ctre internetul de astzi.
Microsoft lanseaz sistemul de operare Windows 3.0, o versiune de Windows
complet nou i care a fost vndut n peste 3 milioane de copii n primul an. Tot
Microsoft, la capitolul vnzri, depete cifra de un miliard de dolari pe an,
devenind prima companie care atinge acest prag.
Microsoft i IBM decid s nceteze colaborarea privind dezvoltarea sistemelor de
operare.
IBM lanseaz XGA (eXtended Graphics Array), standard video cu 256 culori
(simultane) i rezoluia de 1024768 pixeli.
Intel lanseaz microprocesorul 80386SL, proiectat pentru consum mic de putere
(low power) i care va fi utilizat n multe calculatoare portabile.
Este lansat prima main de cutare (Archie), scris de Alan Emtage, Bill
Heelan i Mike Parker de la McGill University din Montreal, Canada
n anul 1991:
Tim Berners-Lee lanseaz WWW (World Wide Web) ctre marele public (la 6
august). WWW reprezint o interfa grafic pentru internet, care furnizeaz un
mediu extrem de bogat de documente ( coninnd text, fiiere grafice, fiiere
multimedia, etc.), cu legturi ntre ele i care sunt puse la dispoziia utilizatorilor
de internet.
AMD lanseaz microprocesorul AM386 (n luna martie).
Intel lanseaz (n aprilie) microprocesorul 80486SX, n ideea de a oferi
productorilor de calculatoare un procesor mai ieftin (258$).
Linus Torvald lanseaz sistemul de operare LINUX.
Este lansat limbajul de programare FORTRAN 90.
Cosecvent deciziei anterioare de a nu mai dezvolta sisteme de operare n
colaborare cu IBM, Microsoft schimb denumirea OS/2 n Windows NT.
Microsoft lanseaz sistemul de operare MS-DOS 5.0 (n luna iunie).

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


n anul 1992:
Microsoft lanseaz sistemul de operare Windows 3.1 care va fi vndut n peste
un milion de copii n primele dou luni de dup lansare.
Intel lanseaz (la 2 martie) microprocesorul 80486DX2 care avea o opiune de
dublare a frecvenei semnalului de tact, ceea ce conducea la o vitez semnificativ
mai mare de operare.
IBM lanseaz ThinkPad, primul notebook care dispunea de un ecran TFT (Thin
Film Transistor = display cu cristale lichide de tip active matrix) color de 10,4
inch i de TrackPoint (mouse implementat sub forma unui mic joystik izometric
plasat pe tastatur ntre tastele "G", "H" i "B").
SQL Access Group lanseaz ODBC (Open Database Connectivity).
n anul 1993:
Microsoft lanseaz Windows NT 3.1, Microsoft Office 4.0 i MS-DOS 6.0.
Intel lanseaz (la 22 martie) microprocesorul Pentium care incorpora peste 3,2
milioane de tranzistoare, avea o frecven a semnalului de tact de 60 MHz i
costa 878$.
IBM, Motorola i Apple lanseaz microprocesorul PowerPC care va fi ulterior
utilizat n construcia calculatoarelor Apple Power Mac.
n anul 1994:
Microsoft lanseaz sistemele de operare Windows 95 -versiunea beta, MS-DOS
6.22, Windows 3.11 i Windows NT 3.5.
Intel lanseaz (la 7 martie) a doua generaie de procesoare Intel Pentium.
Un profesor de matematic descoper, la procesorul Pentium, unul dintre cele
mai faimoase bug-uri hardware (rezultate incorecte generate de unitatea de
virgul flotant pentru anumite configuraii ale operanzilor). Erorile erau
prezente la procesoarele Pentium cu frecvene de tact egale sau mai mici de 100
MHz; erorile nu mai erau prezente la procesoarele cu frecvene de tact egale sau
mai mari de 120 MHz. Compania Intel a fost determinat s retrag i s
nlocuiasc milioane de procesoare.
David Filo i Jerry Yang lanseaz (n luna aprilie) YAHOO (Yet Another
Hierarchical Officious Oracle!).
n anul 1995:
Este lansat primul software de tip VoIP (Vocaltec) care permitea utilizatorilor
finali s fac apeluri prin voce (voice calls) pe Internet
Microsoft lanseaz Windows NT 3.51 (n data de 30 mai), Internet Explorer 1.0
(n august) i Windows 95 care n primele 4 zile s-a vndut n peste 1 milion de
exemplare.
Sun lanseaz limbajul de programare Java i LiveScript este redenumit
JavaScript.
Intel lanseaz (n noiembrie) procesorul Intel Pentium Pro.
Larry Page i Sergey Brin dezvolt PageRank (aplicaie de sortare a paginilor
web printr-un algoritm care acord fiecrei pagini o pondere numeric). Ulterior
PageRank va fi incorporat n motorul de cutare Google pentru sortarea
(ierarhizarea) rezultatelor cutrilor efectuate de ctre utilizatori.

CAPITOLUL 1 - Introducere
n anul 1996:
Google este fondat i lansat oficial (la 7 septembrie) de ctre Sergey Brin i
Larry Page.
Microsoft lanseaz Windows NT 4.0 (la 29 iulie), Internet Explorer 3.0 (n
august) i Microsoft Windows CE 1.0 (ca soluie de sistem de operare portabil).
Intel lanseaz procesorul P6.
n anul 1997:
Microsoft lanseaz Internet Explorer 3.0 pentru calculatoarele Apple Macintosh
(la 7 ianuarie), Internet Explorer 4.0 (n septembrie) i Microsoft Office 97 .
Intel lanseaz procesorul MMX (MultiMedia eXtension); cu cele 57 instruciuni
noi, introduse pentru creterea vitezei de procesare a aplicaiilor grafice i
respectiv multimedia, MMX-ul este acum inclus n toate procesoarele Intel i
AMD (Advanced Micro Devices). Tot n 1997 (la 7 mai), Intel lanseaz
procesorul Pentium II.

n anul 1998:
Microsoft lanseaz sistemul de operare Microsoft Windows 98 (la 25 iunie).
Intel lanseaz procesorul Celeron.
Este lansat sistemul de management al bazelor de date relaionale MySQL, care
va deveni o alternativ foarte popular (open source i free) n raport cu alte
soluii SQL.
n anul 1999:
Microsoft lanseaz Windows CE 3.0 i Internet Explorer 5.0 (la 18 martie).
Intel lanseaz procesorul Pentium III (la 26 februarie).
n anul 2000:
Microsoft lanseaz, la 17 februarie, sistemele de operare Windows 2000
(urmtoarea versiune de Windows NT anunat nc din anul 1998) i Windows
Millenium (la 19 iunie). Tot n luna iunie, Microsoft lanseaz ctre marele public
C# iar la 9 noiembrie lanseaz DirectX.
Jack St. Clair Kilby de la Texas Instruments (cel care a conceput i a construit
primul circuit integrat) primete premiul Nobel pentru fizic.
n anul 2001:
Linus Torvalds lanseaz Linux Kernel (cod surs), versiunea 2.4 (la 4 ianuarie).
Microsoft lanseaz Internet Explorer 6.0 (la 27 august), Microsoft Windows XP
(la 25 octombrie) i Microsoft Windows XP 64-Bit Edition pentru sistemele
bazate pe procesoare Itanium.
Apple lansaez iPod -ul.
n anul 2002:
Apple lanseaz sistemul de operare Mac OS X 10.2.
Microsoft lanseaz DirectX 9 (la 19 decembrie).

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


n anul 2003:
Intel lanseaz procesorul Pentium M (Pentium Mobile) destinat calculatoarelor
portabile.
Microsoft lanseaz Windows Server 2003, Windows XP 64-Bit Edition pentru
sistemele Itanium 2 (la 28 martie) i Windows XP Media Center Edition 2003 (la
18 decmbrie).
n anul 2004:
Microsoft lanseaz Windows XP Media Center Edition 2005 (la 12 octombrie).
Mozilla lanseaz Firefox 1.0 (o alternativ din ce n ce mai credibil la Internet
Explorer 6.0).
n anul 2005 Microsoft lanseaz sistemul de operare Windows XP Professional 64 Edition
(la 24 aprilie) i tot Microsoft anun c urmtorul sistem de operare (cu numele de cod
"Longhorn") se va numi Windows Vista.
n anul 2006:
Intel lanseaz (la 5 ianuarie) procesorul Intel Core (succesorul procesorului
Pentium M), procesorul dual Core 2 Duo (la 27 iulie) i procesorul dual Core 2
Extreme (la 29 iulie).
Microsoft lanseaz (la 30 noiembrie) sistemul de operare Windows Vista (ctre
corporaii).
n anul 2007:
Microsoft lanseaz (la 30 ianuarie) Microsoft Windows Vista i Office 2007
(ctre marele public).
Apple lanseaz Apple iPhone (la 29 iunie).
n anul 2008 (la 28 august) Apple lanseaz o nou versiune pentru calculatoarele iMac.
Tot n 2008 (la 19 februarie), cnd Toshiba anun oficial c renun la fabricarea
unitilor HD-DVD (High Definition Digital Versatile Disk), se ncheie n favoarea lui BD
(Blu-ray Disk) rzboiul pe tema formatului dintre BD i HD-DVD. BD a fost lansat la 4
ianuarie 2006 de un consoriu de companii (Dell, Hitachi, Hewlett Packard, LG, Mitsubishi,
Panasonic, Sony, TDK, Apple, Philips, Sony, Sun) i este o unitate de disc optic cu
capacitatea de 25 GB. HD-DVD a fost tot o unitate optic, cu capacitatea de 15 GB, lansat
la 31 martie 2006 de un alt consoriu (Toshiba i NEC), n ideea de a nlocui unitatea
clasic de DVD.
n aprilie 2009, General Electric anun inventarea discului holografic cu capacitatea
de 500 GB. Discul holografic va avea un format similar DVD-ului, astfel c noile cititoare
care vor fi create pentru discul holografic vor putea citi i formatele DVD i Blue-Ray. Se
estimeaz c discul holografic va fi lansat n cursul anului 2011.
Privind retrospectiv spectaculoasa evoluie a calculatoarelor electronice, am putea
defini ase generaii (tabelul 1.1):

10

CAPITOLUL 1 - Introducere

Generaii

Limbaje de
Programare

Caracteristici Tehnologice

Performane

-tuburi electronice cu vid


-un singur dispozitiv de memorare
(tambur magnetic) de capacitate
(19371957) mic i cu timp de acces mare

-vitez de calcul:
104 operaii/sec.
-memorie: 2 KB

-diode i tranzistoare
Generaia II -memorie intern cu inele de ferit
-memorie extern: tambur, disc sau
band magnetic
(19581963) -uniti de virgul flotant
-regitre de index

-limbaje de nivel nalt:


-vitez de calcul:
Fortran (1956)
2105 operaii/sec.
Algol (1958)
-memorie: 32 KB
Cobol (1959)

Generaia I

-circuite integrate
Generaia III -memorie intern semiconductoare
-memorie extern: discuri magnetice
-microprogramarea, ca tehnic de
(19641982) proiectare a procesoarelor complexe
-memoria virtual

Generaia IV -circuite integrate pe scar larg


(VLSI)
-discuri optice
(19821990) -dezvoltarea reelelor de calculatoare

Generaia V -circuite integrate pe scar ultra larg


(ULSI)
-revitalizarea arhitecturilor paralele
(dup 1990) -dezvoltarea sistemelor multiprocesor

-vitez de calcul:
5106 operaii/sec.
-memorie: 2 MB

Programare n:
-cod main
-limbaje de asamblare

-sisteme de operare
evoluate cu "time
sharing" (UNIX)
-limbaje de nivel nalt:
Pascal (1971)
C (1972)

-limbaje orientate
obiect (C++)
-vitez de calcul:
3107 operaii/sec. -limbaje funcionale
(LISP)
-limbaje de programare
-memorie: 16 MB
logic (Prolog)
-vitez de calcul:
1012 operaii/sec.
-memorie: 256 MB

- limbaje concurente
-sisteme software cu
inteligen artificial

Ce caracteristici vor avea calculatoarele din generaia VI ?


Probabil vor avea performane asemntoare cu cele ale calculatorului HAL9000, din
romanul lui Arthur C. Clarke, "2001: A Space Odyssey". HAL9000 putea ntreine
conversaii cu operatorii umani, putea accepta intrri vizuale, putea nva din propria
Generaia VI
experien. HAL9000 reprezint o ficiune dar calculatoarele din generaia VI vor avea
cu siguran capabilitiule lui HAL9000; vor emula inteligena i raionamentul uman,
vor dispune de interfee inteligente pentru comunicarea ct mai natural (verbal i
vizual) cu operatorul uman, vor fi capabile s nvee i s acumuleze experien.
Tabelul 1.1 Evoluia calculatoarelor electronice - o clasificare n ase generaii

11

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


1.2 Structura calculatorului numeric
Un sistem de calcul (fig. 1.1.) conine trei blocuri eseniale n structura sa:
1. Procesorul (P) denumit uneori i unitate central (UC).
2. Memoria Principal (MP) denumit uneori i memorie central (MC) sau
intern (MI).
3. Blocul de intrare-ieire (I/E).

Fig. 1.1 Schema bloc a calculatorului numeric.


Fiecare dintre unitile evideniate n fig. 1.1. este capabil s execute anumite lucrri
specifice din cadrul sarcinii globale ce revine ntregului sistem:

Procesorul citete i execut secvenial, una cte una, instruciunile unui program
stocat n MP.

MP memoreaz i ine la dispoziia procesorului instruciuni (programe), date,


rezultate.

Blocul I/E conine interfee de intrare-ieire dedicate diverselor echipamente


periferice conectate la sistem (EPI/EPE/EPI/E echipamente periferice de
intrare/ieire/intrare-ieire). Fiecare periferic va avea propria interfa I/E (I/O
controller).
Principalele echipamente periferice care apar n configuraia unui sistem de
calcul sunt:
EPI: tastatur, mouse, scanner, unitate CD-ROM (echipamente periferice
de intrare).
EPE: imprimant, display (echipamente periferice de ieire).
EPI/E: disc hard, disc floppy, unitate CD-writer (echipamente periferice de
intrare-ieire).

12

CAPITOLUL 1 - Introducere
1.2.1 Procesorul
Procesorul execut n manier secvenial (una cte una) instruciunile unui program stocat
n memorie (MP). Pentru procesarea unei instruciuni procesorul parcurge (n timp) dou
faze succesive:
1.

Fetch-ul instruciunii (extragerea insruciunii din memorie i ncrcarea acesteia


n procesor, ntr-un registru special denumit Instruction Register). Imediat dup
ncrcarea instruciunii n Instruction Register (IR), aceasta va fi decodificat.

2.

Execuia instruciunii (numai dup decodificarea instruciunii procesorul afl


efectiv despre ce instruciune este vorba i evident va putea trece la execuia
acesteia).

Prin urmare, un program este format dintr-o succesiune de instruciuni. nainte de a fi lansat
n execuie, programul trebuie ncrcat n memoria principal (MP). De aici programul va
putea fi executat, secvenial (instruciune cu instruciune) i pentru fiecare instruciune
procesorul parcurge (n timp) cele dou faze succesive: fetch i respectiv execuie. Dup
execuia instruciunii curente, procesorul trece ntotdeauna la fetch-ul instruciunii
urmtoare. Execuia programului se ncheie o dat cu execuia ultimei sale instruciuni.
1.2.2 Memoria Principal
Memoria Principal este implementat fizic cu circuite RAM. Sistemele actuale utilizeaz
circuite de tip RAM-dinamic deoarece celula de memorie RAM-dinamic are o structur
foarte simpl, ceea ce permite realizarea unor circuite de memorie de capacitate mare.
Capacitatea mare de memorare a circuitelor RAM-dinamic i preul relativ sczut per bit
memorat reprezint avantaje nete care contrabalanseaz dezavantajul reprezentat de
necesitatea regenerrii periodice a informaiilor memorate.
Din punctul de vedere al structurii sale logice, MP trebuie privit ca o stiv de locaii
de memorie (fig. 1.2.) n care se depoziteaz informaii. Un grup de m celule asociate
formeaz o locaie de m bii; m este de regul o putere a lui 2. De exemplu, ntr-un IBMPC care are unitatea central implementat cu un procesor INTEL Pentium (procesor pe 32
bii), locaiile de memorie (MP) vor fi pe 32 bii (m=32).
Fiecare celul memoreaz un bit. O locaie format din m celule memoreaz un
cuvnt de m bii. Fiecrei locaii i este asociat o adres prin intermediul creia procesorul
poate accesa locaia respectiv pentru scriere sau citire.
Asupra unei locaii de memorie procesorul poate executa dou operaii:
a) READ (citire);
b) WRITE (scriere).
Ambele operaii comport dou etape succesive:
1. Selecia locaiei. Procesorul emite spre MP adresa locaiei ce urmeaz a fi
accesat, iar la nivelul MP adresa este decodificat i locaia respectiv
selectat.

13

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


2. Transferul propriu-zis de date. Pentru citire procesorul va activa o comand de
tip read memory prin care datele coninute n locaia accesat vor fi citite i
ncrcate n procesor (ntr-un registru). Pentru scriere procesorul va activa un
semnal de comand de tip write memory i, suplimentar, va transmite spre
MP i datele de scris. Acestea vor fi memorate (scrise) n locaia selectat.

Fig. 1.2 Organizarea logic a memoriei principale

Observaie: Unitatea adresabil n memorie este de regul octetul (BYTE-ul). n


consecin, fiecare octet va avea asignat propria-i adres i pentru octei succesivi
adresele cresc din 1 n 1. Dac, de exemplu, memoria este organizat n locaii de 32 bii
(deoarece calculatorul este construit n jurul unui procesor pe 32 bii) atunci, fiecare
locaie va conine 4 octei i pentru o succesiune de locaii adiacente adresele vor crete
din 4 n 4. n cazul IBM-PC, de exemplu, 2 octei consecutivi formeaz un WORD (16 bii)
i 4 octei consecutivi formeaz un DWORD (double word=32 bii). Instruciunile pot referi
operanzi pe BYTE (8 bii), pe WORD (16 bii) sau pe DWORD (32 bii). Prin urmare,
pentru octei (BYTES) succesivi adresele cresc din 1 n 1, pentru WORD-uri succesive
adresele cresc din 2 n 2 iar pentru DWORD-uri succesive adresele cresc din 4 n 4.

14

CAPITOLUL 1 - Introducere
1.3 Formatul Instruciunii
1.3.1 O argumentaie logic din care rezult diverse formate
Codul unei instruciuni este reprezentat de un cuvnt binar de o anumita lungime. La
procesoarele RISC se utilizeaz de regul formatul de lungime fix (lungimea codului este
aceeai pentru toate instruciunile) n timp ce la procesoarele CISC se ajunge de regul la
format de lungime variabil (lungimea codului poate s difere de la o instruciune la alta).
Formatul de lungime fix conduce la o simplificare a decodificatorului instruciunii
(avantaj). Formatul de lungime variabil revendic un decodificator mai complex ceea ce
conduce la creterea semnificativ a timpului de decodificare a codului instruciunii. Prin
urmare, formatul de lungime variabil prezint dezavantaje (n raport cu formatul de
lungime fix) dar trebuie neles c lungimea variabil reprezint o consecin inevitabil n
cazul arhitecturilor CISC, nu o caracteristic dorit.
Un program este constituit dintr-o succesiune de instruciuni. nainte de lansarea n
execuie, programul (codul obiect) trebuie ncrcat n memoria intern a calculatorului.
Doar dup ncrcare, programul poate fi lansat n execuie ncepnd cu prima sa
instruciune. Instruciunile programului, reprezentate n cod main, sunt stocate n locaii
succesive de memorie, succesiunea locaiilor corespunznd n general ordinii n care
instruciunile vor fi procesate. Adic, instruciunea ce urmeaz a se procesa se afl n
locaia de memorie imediat urmtoare (la adresa imediat urmtoare). Exceptie de la aceast
regul apare doar la instruciunile de salt.
Timpul n care o instruciune este procesat complet se numete ciclul instruciunii.
Ciclul instruciunii cuprinde dou faze (subcicluri) majore:
faza de fetch instruciune (instruction fetch).
faza de execuie (execution)
n faza de fetch, codul instruciunii este citit (extras) din memorie i ncrcat n procesor
ntr-un registru special numit registrul instruciunii (IR - Instruction Register). Ieirile
bistabililor ce compun registrul IR sunt aplicate pe intrrile decodificatorului instruciunii.
Prin decodificarea codului, unitatea de control a procesorului afl ce instruciune trebuie
s fie executat.
n faza de execuie se execut efectiv operaia specificat (operaiile specificate) de
instruciune. La ncheierea fazei de execuie aferent instruciunii curente se trece la faza de
fetch aferent instruciunii urmtoare. n aceast manier, instruciunile programului sunt
procesate secvenial, una cte una.
O instruciune extras din memorie i ncrcat n procesor pentru a fi decodificat i
executat, trebuie s furnizeze unitii de control urmtoarele informaii:
ce operaie trebuie aplicat operanzilor (operandului, dac instruciunea are un
singur operand)
adresele locaiilor de memorie unde se gsesc cei doi operanzi (adresa locaiei
unde se gsete operandul dac instruciunea are un singur operand)
adresa locaiei de memorie unde trebuie depus rezultatul
adresa locaiei de memorie de unde trebuie extras codul urmtoarei instruciuni de
executat (pentru a putea realiza fetch-ul urmtoarei instruciuni)

15

ORGANIZAREA I PROIECTAREA CALCULATOARELOR

Toate aceste informaii trebuie s fie codificate (integrate) n codul instruciunii. Pe baza
acestui raionament rezult formatul cu patru adrese (figura 1.3)

Fig 1.3 Formatul cu patru adrese


n cazul formatului cu patru adrese, n codul instruciunii apar cinci cmpuri:
OPCODE OPeration CODE (codul operaiei). n acest cmp de bii se codific
operaia pe care trebuie s o efectueze instruciunea: adunare, scdere, OR (operaia
logic SAU), AND (operaia logic SI), deplasare (logic sau aritmetic, la dreapta sau
la stnga), salt la o anumit adres, etc.
n urmtoarele patru cmpuri sunt memorate patru adrese:
adresele celor doi operanzi (in cazul instruciunilor cu un singur operand se va
utiliza doar adresa operandului 1, adresa operandului 2 va fi ignorat deoarece
este nenecesar).
adresa rezultatului cu ajutorul creia se va selecta locaia de memorie unde va
fi depus rezultatul.
adresa urmtoarei instruciuni cu ajutorul creia se va selecta locaia de
memorie de unde va fi extras codul urmtoarei instruciuni de executat (n
faza de fetch a urmoarei instruciuni din cadrul programului).
Marele dezavataj al formatului cu patru adrese este lungimea sa excesiv (datorit celor
patru adrese codul instruciunii se extinde pe un numr mare de bii). Din acest motiv
formatul cu patru adrese nu este utilizat n practic, el avnd o relevan exclusiv teoretic.
Simplificarea formatului se poate realiza prin reducerea numrului de adrese din
componena codului instruciunii. Prima simplificare se poate face prin eliminarea cmpului
Adresa4 i o uoar ajustare a semnificaiei cmpului Adresa3.
Se pleac de la observaia c instruciunile unui program sunt memorate le adrese
succesive de memorie iar succesiunea n care instruciunile sunt extrase din memorie pentru
a fi executate coincide n general cu succesiunea locaiilor n care (adreselor la care) acestea
sunt memorate. Cu alte cuvinte, urmtoarea instruciune de procesat se gsete n locaia (la
adresa) urmtoare. Din acest motiv, pentru a o localiza se poate folosi un registru
(numrtor) numit Program Counter (PC) sau Instruction Pointer (IP), implementat n
procesor. n timpul execuiei instruciunii curente, registrul PC este automat incrementat.
Prin incrementare, n PC, se obine adresa urmtoarei instruciuni; n momentul n care faza
de execuie a instruciunii curente se ncheie, procesorul adreseaz memoria cu adresa din

16

CAPITOLUL 1 - Introducere
PC i activeaz o comand de citire din memorie. Prin urmare, va fi citit (extras) din
memorie i ncrcat n procesor codul urmtoarei instruciuni (faza fetch instruciune).
S mai notm c, dac codul instruciunii se ntinde pe k octei, atunci incrementarea
registrului PC trebuie fcut cu constanta k:
PCPC+k
Dac inainte de incrementare n PC se afl adresa instruciunii curente, dup incrementare
n PC vom avea dresa instruciunii utmtoare.
Introducnd n structura procesorului registrul PC care, n timpul procesrii
instruciunilor unui program, va furniza ntotdeauna adresa urmtoarei instruciuni de extras
din memorie, se poate recurge la formatul cu trei adrese (figura 1.4).

Fig 1.4 Formatul cu trei adrese


Semnificaia generic a unei astfel de instruciuni ar fi: Extrage operanzii de la primele
dou adrese, execut operaia i depune rezultatul la Adresa3 i treci la fetch-ul
urmtoarei instruciuni din cadrul programului utiliznd adresa furnizat de registrul PC.
Excepie de la aceast semnificaie generic s-ar face doar n cazul unei instruciuni
de salt. De exemplu, instruciunea JE (Jump if Equal) ar avea urmtoarea semnificaie:
Compar operanzii extrai de la primele dou adrese, dac sunt egali extrage
instruciunea de la Adresa3 (execut saltul) iar dac nu, extrage secvenial urmtoarea
instruciune, utiliznd adresa furnizat de registrul PC (nu executa saltul deoarece condiia
de salt nu este ndeplinit). Formatul cu trei adrese, cu anumite particularizri, se
utilizeaz de regul la procesoarele RISC.
Numrul de adrese poate fi n continuare redus dac se ia decizia ca adresa
rezultatului s fie identic cu adresa operandului 2. Rezult astfel formatul cu dou adrese
(figura 1.5).

Fig 1.5 Formatul cu dou adrese

17

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


Semnificaia generic a unei astfel de instruciuni ar fi: Extrage operanzii de la primele
dou adrese, execut operaia i depune rezultatul la Adresa2 (nlocuind al doilea
operand) i treci la fetch-ul urmtoarei instruciuni din cadrul programului utiliznd
adresa furnizat de registrul PC. Inconvenientul care apare ar fi acela c, prin depunerea
rezultatului, operandul 2 se pierde; inconvenientul s-ar face resimit doar n situaia n care
operandul 2 ar fi necesar n continuare n cadrul programului, pentru operaii ulterioare.
n cazul formatului cu dou adrese, semnificaia instruciunii JE ar fi: Testeaz
operandul de la Adresa1, dac este zero extrage instruciunea de la Adresa2 (execut
saltul) iar dac nu, extrage secvenial urmtoarea instruciune, utiliznd adresa furnizat
de registrul PC (nu executa saltul deoarece condiia de salt nu este ndeplinit).
Inconvenientul pierderii operandului 2 (prin depunerea rezultatului), poate fi evitat
dac, n structura procesorului se introduce un registru special numit acumulator (A), care
s aib rolul de a memora rezultatele (rezultatul nu se mai depune la Adresa2 ci n
acumulator). Semnificaia generic a instruciunii cu dou adrese devine n acest caz:
Extrage operanzii de la primele dou adrese, execut operaia i depune rezultatul n
registrul A i treci la fetch-ul urmtoarei instruciuni din cadrul programului utiliznd
adresa furnizat de registrul PC. Evident c n setul de instruciuni aferent unui astfel de
procesor, va trebui s existe i o instruciune ST A (STore A) care ar putea avea
semnificaia: Memoreaz coninutul registrului A la Adresa1 (cmpul Adresa2 nefiind
utilizat n cazul acestei instruciuni). Instruciunea ST A va permite, atunci cnd se
dorete, eliberarea registrului A (transferul rezultatului din acumulator ntr-o locaie de
memorie).
n cazul utilizrii registrului A, semnificaia instruciunii de ramificaie (JE) ar putea
fi: Compar operandul de la Adresa1 cu coninutul registrului A, dac sunt egali extrage
instruciunea de la Adresa2 (execut saltul) iar dac nu, extrage secvenial urmtoarea
instruciune, utiliznd adresa furnizat de registrul PC (nu executa saltul deoarece condiia
de salt nu este ndeplinit). Formatul cu dou adrese, cu anumite particularizri, se
utilizeaz de regul la procesoarele CISC.
n cazul procesoarelor orientate pe acumulator (procesoarele care conin intern un
registru acumulator), este posibil i formatul cu o singur adres (figura 1.6).

Fig 1.6 Formatul cu o adres


Semnificaia generic a unei astfel de instruciuni ar fi: Extrage primul operand de
la Adres1, al doilea din registrul A, execut operaia i depune rezultatul n A (nlocuind al
doilea operand) i treci la fetch-ul urmtoarei instruciuni din cadrul programului utiliznd
adresa furnizat de registrul PC. Evident c i n acest caz este necesar ca n setul de
instruciuni al procesorului s existe nstruciunea ST A care va permite, atunci cnd se
dorete, eliberarea registrului A (transferul rezultatului din acumulator ntr-o locaie de
memorie).

18

CAPITOLUL 1 - Introducere
n cazul formatului cu o singur adres, semnificaia instruciunii de ramificaie (JE)
ar putea fi: Testeaz coninutul registrului A, dac este zero extrage instruciunea de la
Adresa1 (execut saltul) iar dac nu, extrage secvenial urmtoarea instruciune, utiliznd
adresa furnizat de registrul PC (nu executa saltul deoarece condiia de salt nu este
ndeplinit).
Formatul cu o singur adres l mai regsim astzi doar la procesoarele foarte simle,
orientate pe acumulator i cu set redus de instruciuni (microcontrolere simple).
1.3.2 Formatul instruciunii la procesoarele CISC
Procesoarele actuale conin n structura lor, un numr de registre de lucru (registre interne),
numite registre generale. Numrul de registre generale reprezint de regul o putere a lui 2.
Prin urmare, gsim astzi procesoare cu 8, 16, 32, 64 sau chiar 128 registre generale. Spre
deosebire de procesorul care nu dispune de registre generale, caz n care operanzii
instruciunii pot fi memorai doar n locaii de memorie, n cazul unui procesor bazat pe
registre generale, operanzii instruciunii pot fi memorai fie n locaii de memorie fie n
registre generale. Prin urmare, n cazul procesorului bazat pe registre generale, o
instruciune cu doi operanzi ar putea avea ambii operanzi n memorie, ambii operanzi n
registre sau un operand n memorie i cellalt n registru. Aceast flexibilitate (relativ la
localizarea operanzilor) o regsim implementat la procesoarele CISC. Remintin i faptul
c la procesoarele CISC se utilizeaz de regul formatul cu dou adrese.
n cazul procesoarelor CISC (orientate desigur pe registre generale), adresa unui
operand se specific (n codul instruciunii) cu ajutorul a dou cmpuri, mod de adresare i
respectiv registru (registrul general utilizat pentru localizarea operandului). Pentru a
clarifica modul de localizare a operandului, redm n figura 1.7 formatul cu dou adrese
pentru un procesor CISC.

Fig 1.7 Formatul cu dou adrese utilizat la procesoarele CISC


Semnificaia cmpului OPCODE este cunoscut. Celelalte patru cmpuri au urmtoarele
semnificaii:
MAS mod adresare surs (mod de adresare operand surs)
MAD mod adresare destinaie (mod de adresare operand destinaie)
RS registrul surs (registrul general utilizat pentru localizarea
operandului surs)
RD registrul destinaie (registrul general utilizat pentru localizarea
operandului destinaie)

19

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


S presupunem c procesorul CISC n discuie are 16 registre generale (R0R15) i
opereaz cu patru moduri de adresare. n cmpul RS (RD) se codific de fapt adresa
registrului general utilizat pentru localizarea operandului surs (destinaie). Avnd n
vedere c procesorul CISC exemplificat conine 16 registre generale, nsemn c adresa
4
unui registru trebuie codificat pe patru bii (2 =16). Prin urmare, cmpurile RS i
respectiv RD vor fi cmpuri de 4 bii.
n tabelul 1.2 sunt exemplificate patru moduri de adresare (cele mai uzuale).

MAS/MAD
Mod de
(exemplu de
adresare
codificare)
Imediat

00

Direct

01

Indirect

10

Indexat

11

Localizarea
operandului

Instruciuni cu doi operanzi


(exemplificare n limbaj de asamblare)

LD R0,4
;R04
(ncarc constanta 4 n regiustrul R0)
ADD R5,R3
;R5R5+R3
Operand n registru
(adun R3 cu R5 i depune rezultatul n R5)
MOV R2,(R6)
;R2 LocMem
Operand n memorie
R6
la adresa specificat
(ncarc n R2 coninutul locaiei de memorie
de registru
adresat de R6)
AND R4,6(R7)
;R4R4 LocMem
R7 + 6
Operand n memorie
(operaia logic SI ntre R4 i coninutul locaiei de
la adresa dat de
memorie adresat de R7+6, cu depunerea
registru plus index
rezultatului n R4)
Operand de tip
constant

Tabelul 1.2 Moduri de adresare i exemple de instruciuni cu doi operanzi


Pentru a codifica patru moduri de adresare sunt necesari doi bii. Prin urmare, la
procesorul CISC exemplificat, cmpurile MAS i respectiv MAD sunt cmpuri de doi bii.
Pe prima coloan din tabelul 1.2 sunt redate denumirile celor patru moduri de adresare iar
pe coloana a doua (MAS/MAD) se propune un mod de codificare a celor patru moduri de
adresare. Pe a treia coloan se expliciteaz localizarea operandului iar pe ultima coloan
sunt redate, n limbaj de asamblare, exemple de instruciuni care utilizeaz diferite moduri
de adresare. Pentru aceste exemple am adoptat convenia (uzual n limbajul de asamblare):
primul operand specificat (n mnemonica instruciunii) este operandul destinaie iar cel deal doilea este operandul surs.
n cazul instruciunii LD R0,4 operandul surs este constanta 4, ceea ce implic
MAS=00 (mod de adresare imediat la surs) iar operandul destinaie esta registrul R0, ceea
ce implic MAD=01 (mod de adresare direct la destinaie).
n cazul instruciunii ADD R5,R3 operandul surs este registrul R3, ceea ce implic
MAS=01 iar operandul destinaie esta registrul R5, ceea ce implic MAD=01 (mod de
adresare direct att la surs ct i la destinaie).

20

CAPITOLUL 1 - Introducere
n cazul instruciunii MOV R2,(R6) operandul surs este coninutul locaiei de
memorie adresat de registrul R6 ( LocMem
), ceea ce implic MAS=10 (mod de
R6
adresare indirect la surs) iar operandul destinaie este registrul R2 ceea ce implic
MAD=01 (mod de adresare direct la destinaie).
n sfrit, n cazul instruciunii AND R4,6(R7) operandul surs este coninutul
locaiei de memorie selectat de adresa obinut prin adunarea indexului (care are valoarea
), ceea ce implic
6 n acest exemplu) la coninutul registrului R7 ( LocMem
R7 + 6
MAS=11 (mod de adresare indexat la surs) iar operandul destinaie esta registrul R4, ceea
ce implic MAD=01 (mod de adresare direct la destinaie).
S notm c modul de adresare imediat poate fi utilizat doar la operandul surs; o
constant poate fi specificat ca operand surs dar nu poate fi specificat ca operand
destinaie. Prin urmare, un cod de instruciune cu mod de adresare imediat la destinaie va fi
cod ilegal (instruciune ilegal).
S presupunem c proiectantul a rezervat patru bii pentru cmpul OPCODE i c a
codificat instruciunile (cu ajutorul cmpului OPCODE) ca n tabelul 1.3.

OPCODE

Instruciune

0000

LD dest, src

0001

ADD dest,src

0010

AND dest,src

0011
.......
.......

MOV dest, src


.......
.......

Tabelul 1.3 Exemplu de codificarea a instruciunilor


innd cont c MAS i respectiv MAD sunt cmpuri de doi bii (procesorul CISC
exemplificat opereaz cu patru moduri de adresare), cmpurile RS i respectiv RD sunt
cmpuri de patru bii (procesorul CISC exemplificat are 16 registre generale) i c formatul
de instruciune utilizat este cel cu dou adrese (figura 1.7), rezult c instruciunile acestui
procesor CISC vor fi codificate pe 16 bii (OPCODE+MAS+RS+MAD+RD=
=4+2+4+2+4=16 bii). n aceste condiii, codul main (codul binar) aferent instruciunii
MOV R2,(R6) ar fi: 00111001100100102 (OPCODE=0011, MAS=10, RS=0110,
MAD=01, RD=0010).
Codul main aferent instruciunii LD R0,4 ar fi: 000000XXXX0100002
(OPCODE=0000, MAS=00, RS=XXXX, MAD=01, RD=0000). Cmpul RS este
neutilizat n acest caz deoarece operandul surs este o constant (mod de adresare imediat
la surs). Prin urmare, cei patru bii din componena cmpului RS pot lua orice valoare
(RS=XXXX). Pe de alt parte, constanta 4 (operandul surs) nu a fost codificat n cei 16
bii ce compun codul instruciunii. O soluie ar fi ca, pentru aceast instruciune, s
recurgem la extensia codului de la 16 la 32 de bii. n primul cuvnt de 16 bii se codific

21

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


codul propriu-zis al instruciunii (000000XXXX0100002) iar n al doilea cuvnt de 16 bii
se codific constanta 4 (00000000000001002). Prin urmare, codul main aferent
instruciunii LD R0,4 va ocupa dou locaii succesive n memorie (figura 1.8). Iat cum, la
CISC, se ajunge la formatul de lungime variabil !

Fig 1.8 Codificarea instruciunii LD R0,4 n memorie


n mod similar se poate codifica instruciunea AND R4, 6(R7) unde avem de-a face
din nou cu o constant (constanta 6). Chiar dac constanta va fi utilizat ca index i nu ca
operand imediat, din punctul de vedere al codificrii binare, tot o constant rmne.
Adresm cititorului invitaia de a face i alte exerciii de codificare.
Formatul din figura 1.7 l vom regsi la multe procesoare CISC, acest format fiind
valabil pentru instruciunile cu doi operanzi. n setul de instruciuni aferent procesorului
exist i alte tipuri de instruciuni, cum ar fi: instruciuni cu un singur operand, instruciuni
fr operanzi, etc. Pentru instruciunile cu un singur operand, n formatul instruciunii se va
codifica o singur adres (adresa operandului destinaie). Acest format este redat n figura
1.9.

Fig 1.9 Formatul instruciunilor cu un singur operand, utilizat la procesoarele CISC

22

CAPITOLUL 1 - Introducere
Formatul instruciunilor cu un singur operand (figura 1.9) se obine opernd o
simplificare n formatul instructiunilor cu doi operanzi (figura 1.7): se elimin cmpurile
MAS i RS (se elimin adresa operandului surs). Cmpurile MAD i RD vor specifica nu
numai adresa unicului operand specificat de instruciune (operandul destinaie) ci i adresa
rezultatului. n tabelul 1.4 sunt exemplificate cteva instruciuni cu un singur operand.

Mod de MAD
adresare

Localizarea
operandului

Direct

01

Operand n registru

Indirect

10

Operand n memorie
la adresa specificat
de registru

11

Operand n memorie
la adresa specificat
de registru plus un
index

Indexat

Instruciuni cu un singur operand


(exemplificare n limbajul de asamblare)
NEG R5 ;R5 R 5
(negare bit cu bit a coninutului registrului R5)
LocMem
-1
DEC (R6) ; LocMem
R6
R6
(decrementarea coninutului locaiei de memorie de la
adresa dat de registrul R6)
LocMem
+1
INC 6(R7) ; LocMem
R7 + 6
R7 + 6
(incrementarea coninutului locaiei de memorie de la
adresa R7+6)

Tabelul 1.4 Moduri de adresare i exemple de instruciuni cu un singur operand


Instrucunile exemplificate n tabelul 1.4 opereaz cu trei moduri de adresare: direct,
indirect i indexat. Precizarea pe care am fcut-o la instruciunile cu doi operanzi rmne
valabil i pentru instruciunile cu un singur operand: modul de adresare imediat nu poate fi
utilizat la operandul destinaie deoarece o constant nu poate fi specificat ca operand
destinaie. Prin urmare, un cod de instruciune cu mod de adresare imediat la destinaie va fi
considerat cod ilegal (instruciune ilegal).
Pentru instruciunile fr operanzi codul instruciunii se simplific i mai mult
deoarece, n codul unei asemenea instruciuni, nu mai trebuie specificat nici-o adres. Prin
urmare, formatul instruciunii fr operanzi va conine doar cmpul OPCODE (figura
1.10).

Fig 1.10 Formatul instruciunilor fr operanzi, utilizat la procesoarele CISC


Instruciunile de control, de exemplu, sunt instruciuni fr operanzi. Astfel de instruciuni
regsim la toate procesoarele:
HALT ;oprire. Aceast intruciune blocheaz tactul procesorului.

23

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


EI
DI
NOP

;validare ntreruperi (Enable Interrupts). Aceast instruciune


valideaz ;ntreruperile externe.
;invalidare ntreruperi (Disable Interrupts). Aceast instruciune
invalideaz ;ntreruperile externe.
;nici o operaie (No OPeration). Aceast instruciune care nu face
nici-o ;operaie poate fi utilizat la proiectarea rutinelor de
ntrziere (delay). Este ;util de asemenea compilatoarelor cu
reorganizare care, dupa translatarea ;programului surs n cod
obiect, parcurg o a doua faz de optimizare a ;codului obiect,
reordonnd instruciunile din cadrul acestuia. Scopul acestei
;reordonri, care se face astfel nct s nu afecteze logica
programului, este ;acela de a minimiza timpul global de execuie
a aplicaiei. Optimizarea ;vizeaz desigur procesoarele moderne
care opereaz cu suprapunere de faze ;(paralelism la nivelul
instruciunii).

Observaie:
Cele trei formate de instruciune prezentate n figurile 1.7, 1.9 i 1.10 sunt principalele
formate utilizate la procesoarele CISC. Aceste formate acoper trei clase importante de
instruciuni: instruciunile cu doi operanzi, instruciunile cu un operand i instruciunile
fr operanzi. n setul de instruciuni exist i instruciuni mai speciale cum ar fi
instruciunile de salt. Instruciunile de salt sunt de dou tipuri: salturi directe i respectiv
salturi indirecte. Salturile directe fac saltul la o adres codificat explicit n codul
instruciunii. Codul main aferent unei asemenea instruciuni conine deci o constant,
interpretat ca adres de salt. Se poate prin urmare recurge la aceeai extensie a codului
pe dou cuvinte succesive (ca n figura 1.8); primul cuvnt va conine codul propriu-zis iar
al doilea va conine adresa de salt. Salturile indirecte fac salt la o adres coninut ntr-un
anumit registru (indirectare prin registru). Aceste instruciuni folosesc prin urmare modul
de adresare indirect. Pentru codificarea salturilor indirecte s-ar putea deci recurge la
formatul din figura 1.9 n cadrul cruia s-ar acepta doar modurile de adresare care
conduc efectiv la indirectare: modul indirect i respectiv indexat.
1.3.3 Formatul instruciunii la procesoarele RISC
Procesoarele RISC se subordoneaz conceptului set minimal de instruciuni. Prin urmare,
setul de instruciuni aferent procesorului RISC conine foarte puine instruciuni i toate
instruciunile sunt simple. Cu alte cuvinte, setul RISC conine doar instruciuni
indispensabile compilatorului (fr de care compilatorul nu poate rezolva translatarea
aplicaiei, din limbajul de nivel nalt n cod main). Pe lng conceptul setului minimal,
evitarea instruciunilor complexe este un alt scop important al arhitecturii RISC. Consecina
imediat este evident simplificarea structurii unitii de control. Spre deosebire de unitatea
de control aferent procesorului CISC care are o structur complex i care este de regul
microprogramat, unitatea de control aferent procesorului RISC are o structur simpl i
se implementeaz de regul n variant cablat.
Dat fiind faptul c, n arhitectura RISC, singurele instruciuni care pot specifica
operanzi n memorie sunt instrucunile load i respectiv store, procesorul RISC se mai
numete i main load-store. Toate celelalte instruciuni pot specifica operanzi locai
exclusiv n registre. Un operand aflat ntr-o locaie de memorie poate fi ncrcat ntr-un
registru general cu ajutorul instruciunii load. Instruciunea store realizeaz operaia

24

CAPITOLUL 1 - Introducere
invers: transfer (memoreaz) coninutul unui registru general ntr-o locaie de memorie.
Prin urmare, cu ajutorul instruciunilor load i store se pot efectua transferurile (de date)
procesor-memorie. Celelalte instruciuni (instruciunile non-load-store) opereaz strict pe
registre (preiau operanzii din registre i depun rezultatul n registru). Cu alte cuvinte,
instruciunile non-load-store opereaz cu un singur mod de adresare: modul direct. Din
acest motiv cmpurile MAS i respectiv MAD (cmpurile mod de adresare) nu mai sunt
necesare i vor fi eliminate din formatul instruciunii RISC.
Biii economisii prin eliminarea cmpurilor MAS i respectiv MAD pot fi alocai
celei de-a treia adrese de registru. Iat de ce la RISC se utilizeaz de regul formatul cu trei
adrese (figura 1.11). Pentru c n formatul redat n figura 1.11 sunt codificate trei adrese de
registru, acest format este denumit adesea formatul R-R-R (formatul registru-registruregistru).
Cea de-a treia adres confer o flexibilitate suplimentar relativ la localizarea celor
doi operanzi i respectiv rezultatului (operanzii sunt preluai din dou registre iar rezultatul
va fi depus ntr-un al treilea registru). Cu alte cuvinte, depunerea rezultatului nu mai
conduce inevitabil la pierderea unuia dintre operanzi.

Fig 1.11 Formatul R-R-R, utilizat la procesoarele RISC


Setul de instruciuni main trebuie s confere programatorului (compilatorului) i
posibilitatea de a specifica operanzi de tip constant (operanzi imediai). Aceast cerin nu
ine cont de tipul procesorului, RISC sau CISC. Prin urmare i la RISC trebuie s existe
instruciuni n care unul dintre cei doi operanzi (de exemplu operandul surs 2) s fie o
constant i nu coninutul unui registru. Aceast cerin conduce la cel de-al doilea format
uzual la procesoarele RISC: formatul R-R-I (formatul registru-registru-imediat sau
formatul registru-registru-constant). Acest format este redat n figura 1.12.

Fig 1.12 Formatul R-R-I, utilizat la procesoarele RISC


Fiecare instruciune din clasa R-R-R are o instruciune corespondent n clasa R-R-I.
De exemplu, corespondenta instruciunii ADD Ri,Rj,Rk (RiRj+Rk) din clasa R-R-R, este

25

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


instruciunea ADD Ri,Rj,CT (RiRj+CT) din clasa R-R-I. Notaia CT semnific operand
de tip constant, precizat prin valoare. n tabelul 1.5 sunt redate exemple de instruciuni din
clasele R-R-R i respectiv R-R-I.

Clasa

R-R-R

R-R-I

Instruciune

Operaie efectuat

ADD R1, R7,R5

R1R7+R5 (adunare)

AND R6, R0,R4

R6R0R4 (SI logic)

XOR R3,R9,R2

R3R9 R2 (SAU exclusiv)

ADD R1, R7,24

R1R7+24 (adunare)

AND R6, R0,8

R6R08 (SI logic)

XOR R3,R9,152

R3R9 152 (SAU exclusiv)

Tabelul 1.5 Exemple de instruciuni RISC din clasele R-R-R i R-R-I


n setul de instruciuni aferent procesorului RISC exist i alte tipuri de instruciuni:
instruciuni cu un singur operand, instruciuni fr operanzi, instruciuni load-store,
instruciuni de salt, etc. Formatele aferente acestor tipuri de instruciuni se pot obine
pornind de la formatele R-R-R sau R-R-I, dup caz. Pentru a obine aceste formate, n
principiu, trebuie operate simplificri n formatele R-R-R i respectiv R-R-I n sensul c
anumite cmpuri rmn fr semnificaie i prin urmare nu vor fi utilizate (nu vor avea
relevan n faza de execuie a instruciunii).
Pentru instruciunile cu un singur operand rmne valabil formatul R-R-R doar c
adresa RS2 devine nenecesar (nu va fi utilizat) iar la instruciunile fr operanzi va fi
utilizat doar cmpul OPCODE (toate cele trei adrese devin nenecesare).
Instruciunile load i store controleaz transferurile procesor-memorie (tabelul 1.6).
Locaia de memorie implicat n transfer reprezint operandul surs la instruciunea load
(load din memorie n registru) i respectiv operandul destinaie la instruciunea store (store
registru n memorie). Pe de alt parte, un operand aflat n memorie poate fi adresat fie
indirect, fie indexat (vezi exemplele prezentate n tabelul 1.6).
Analiznd instruciunile exemplificate n tabelul 1.6, constatm c n codul unei
instruciuni load (store), pe lng OPCODE, trebuie codificate urmtoarele informaii:
adresele a dou registre generale: registrul de date i respectiv registrul de adres
(registrul utilizat n transferul de date i respectiv registrul utilizat pentru adresarea
locaiei de memorie).
o constant care va fi utilizat ca index, dac pentru adresarea locaiei de memorie se
utilizeaz modul indexat; dac se utilizeaz modul indirect constanta devine zero.
O soluie posibil pentru codificarea instruciunilor load i respectiv store este redat n
figura 1.13.

26

CAPITOLUL 1 - Introducere

Mod de
adresare

Instruciune

Operaie efectuat
R2 LocMem

LD R2,(R6)
indirect
ST (R3),R1

LD R7,16(R5)
indexat
ST 124(R4),R0

R6

(ncarc n R2 coninutul locaiei de memorie adresat


de R6)
R1
LocMem
R3
(memoreaz registrul R1 n locaia de memorie
adresat de R3)
R7 LocMem
R5 +16
(ncarc n R7 coninutul locaiei de memorie de la
adresa R5+16)
R0
LocMem
R 4 +124
(memoreaz registrul R0 n locaia de memorie de la
adresa R4+124)

Tabelul 1.6 Exemple de instruciuni load i store

Fig 1.13 Formatul load/store, utilizat la procesoarele RISC

27

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


Dac comparm formatul load cu formatul store (figura 1.13) i mai departe,
cu formatul R-R-I din figura 1.12 constatm c, din punct de vedere structural, sunt identice
(cmpurile din structura celor trei formate sunt identice; diferene apar doar la nivelul
semnificaiei anumitor cmpuri). Prin urmare, pentru instruciunile load i respectiv store se
utiliz de fapt formatul R-R-I din figura 1.12.
Pentru un procesor RISC pe 32 de bii, dotat cu 32 registre generale, formatele R-RR i R-R-I ar putea fi particularizate ca n figura 1.14.

Fig 1.14 Formatele R-R-R i R-R-I particularizate pentru un procesor RISC


pe 32 bii, dotat cu 32 registre generale
Dac procesorul are 32 registre generale atunci adresa unui registru trebuie codificat pe 5
5
bii (2 =32). Prin urmare, cmpurile RD, RS1 i RS2 vor fi cmpuri de 5 bii. mpreun,
cele trei cmpuri vor ocupa 15 bii i dac alturm i cmpul OPCODE, devine evident
faptul c instruciunea nu poate fi codificat pe 16 bii. Vom recurge deci la un format pe
32 de bii care se potrivete de altfel i cu dimensiunea registrelor i respectiv locaiilor de
memorie (registre i respectiv locaii de memorie pe 32 bii deoarece procesorul este pe 32
de bii). Pe de alt parte, n formatul R-R-I trebuie s codificm o constant (operandul
imediat). Cum tot formatul are lungimea de 32 de bii, devine evident c nu putem codifica
o constant de aceeai lungime. Urmtoarea variant de codificare ce trebuie ncercat ar fi
cea care utilizeaz constante pe 16 bii. Aceast soluie prezint anumite avantaje deoarece
din dou constante pe 16 bii, prin concatenare, se poate obine uor o constant pe 32 de
bii. Dac adoptm aceast soluie, cmpurile Destinaie, Sursa 1 i Sursa 2 din formatul
R-R-I (figura 1.14) nsumeaz 5+5+16=26 bii. Prin urmare, pentru cmpul OPCODE
rmn disponibili 32-26=6 bii. Un OPCODE pe 6 bii permite codificarea a 64 de
instruciuni ceea ce s-ar putea s fie suficient deoarece arhitectura RISC presupune set
minimal de instruciuni.
Trecerea de la formatul R-R-I la formatul R-R-R (figura 1.14), presupune nlocuirea
constantei (codificat pe 16 bii) cu cmpul RS2 (codificat pe 5 bii). Prin urmare, n
formatul R-R-R vor rmne 11 bii (cei mai puin semnificativi) neutilizai. De altfel, aceti
bii reprezint o rezerv pentru eventuala extensie a setulti de instruciuni. Astfel, pentru

28

CAPITOLUL 1 - Introducere
instruciunile din clasa R-R-R, biii 3126 reprezint zona OPCODE iar biii 100 ar putea
reprezenta o zon de SUBOPCODE. O combinaie din cmpul OPCODE ar putea
specifica o clas de instruciuni (de exemplu, instruciuni aritmetice) iar diversele
combinaii din SUBOPCODE ar putea specifica diverse instruciuni n cadrul clasei
respective. n aceast situaie, cmpul SUBOPCODE ar fi aplicat direct pe intrrile de
control aferente unitii ALU pentru a selecta funcia (operaia) ce va fi efectuat.
n paragrafele 1.3.2 i 1.3.3 am realizat o scurt introducere n problematica
formatului instruciunii utilizat la procesoarele CISC i respectiv RISC. Definirea setului de
instruciuni aferent unui procesor reprezint o problem de proiectare i n cadrul acestei
probleme trebuie stabilite formatele aferente tuturor tipurilor (claselor) de instruciuni din
cadrul setului vizat. Proiectarea i optimizarea setului de instruciuni reprezint prin urmare
o problem de proiectare complex; n paragrafele 1.3.2 i 1.3.3 am realizat doar o succint
incursiune n filozofiile CISC i respectiv RISC (din perspectiva formatului instruciunii).
1.4 Ierarhizarea memoriei
Toate informaiile (programe i respectiv date) procesate de ctre calculator sunt stocate n
memorie. Orice aplicaie soft (program) produce rezultate (date) care vor fi stocate tot n
memorie de unde, prin intermediul unor echipamente periferice de ieire, vor putea fi
livrate utilizatorului.
Software-ul procesat de calculator se mparte n dou clase mari:
soft de baz
soft de aplicaii
n clasa soft de aplicaii regsim toate programele dedicate rezolvrii (automate) de
probleme, din cele mai diverse domenii de activitate. Exist aplicaii utilizate n domeniul
tiinific care permit cercettorilor s fac investigaii i experimente tiinifice extrem de
complexe, exist aplicaii utilizate n domeniul economic care permit gestiunea eficient a
resurselor unei companii, exist aplicaii utilizate n domeniul ingineriei prin care se
eficientizeaz activitatea de proiectare, exist aplicaii utilizate n domeniul financiar care
permit gestiunea resurselor financiare ale unei bnci, exist multiple aplicaii de uz general
i multiple aplicaii dedicate; toate acestea conduc la inconfortabila concluzie c societatea
de astzi este puternic dependent de calculator.
n clasa soft de baz regsim sistemele de operare, compilatoarele, mediile de
programare, etc. Softul de baz face posibil procesarea programelor de aplicatii. Mediile
de programare permit programatorilor sa scrie programe de aplicatii. Compilatoarele
translateaza n cod main (format executabil), programele de aplicatii (programele surs)
scrise de ctre programatori n limbaje de nivel nalt. Sistemul de operare (SO) gestioneaz
toate resursele hardware ale calculatorului .Pentru a putea fi executat, SO aloc fiecrui
program de aplicaie dou resurse importante: timp procesor i spaiu de memorie. SO
gestioneaz de asemenea i operaiile de intrare-ieire (operaiile de transfer cu
perifericele). SO este n fond un pachet de programe i fiecare periferic are, n cadrul
acestui pachet, un program special numit driver (driver de disc, driver de imprimant,
driver de tastatur, driver de display, etc). Driver-ul asociat unui periferic controleaz toate
transferurile de date pe care calculatorul le poate iniia pe perifericul respectiv. Programele
de aplicaii pot iniia operaii de intrare-ieire (operaii de transfer cu perifericele) prin
intermediul unor instruciuni dedicate. n realitate, aceste instruciuni iniiaz nite

29

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


ntreruperi soft prin care se lanseaz n executie driver-ele de periferice. n aceast manier,
se suspend temporar un program de aplicaie i se lanseaz n execuie un handler (din
componena sistemului de operare!). Handler-ul va executa operaia de intrare-ieire
solicitat de ctre programul de aplicaie (operaia de transfer cu perifericul) i se va ncheia
cu o revenire n programul de aplicaie anterior suspendat. Prin urmare, dup efectuarea
operaiei de intrare-ieire programul de aplicaie va fi reluat (exact din locul din care a fost
suspendat) i va fi continuat.
Privit de la nivelul sistemului de operare, memoria unui calculator are o structur
ierarhizat pe trei nivele:
Nivelul 1 este reprezentat de registrele generale implementate n interiorul
procesorului; este prin urmare o memorie de foarte mic capacitate (8, 16, 32 sau
64 de registre) dar de vitez foarte mare (accesul la un registru implementat n
interiorul procesorului este foarte rapid).
Nivelul 2 este reprezentat de memoria intern, denumit uneori i memorie
principal sau memorie central. Memoria intern este implementat cu circuite
speciale de memorie RAM (Random Access Memory), cele mai utilizate fiind
circuitele RAM-dinamic. Capacitatea memoriei principale este relativ mare dar,
comparativ cu nivelul 1, viteza este mult mai mic (timpul de acces la o locatie de
memorie principal este semnificativ mai mare dect timpul de acces la un
registru).
Nivelul 3 este reprezentat de memoria extern denumit i memorie secundar.
Acest nivel este implementat fizic sub forma unor echipamente periferice de
memorare, cel mai important fiind discul. Memoria extern are o capacitate
2
3
semnificativ mai mare dect memoria intern (aproximativ de 10 10 ori mai
4
5
mare) dar i o vitez semnificativ mai mic (aproximativ de 10 10 ori mai
mic).
Spre deosebire de nivelele 1 i respectiv 2 care sunt volatile, memoria extern are marele
avantaj c este nevolatil (nu-i pierde coninutul n momentul decuplrii calculatorului de
la sursa de energie electric). Este motivul pentru care toate programele i respectiv datele
sunt stocate n memoria extern (pe disc). Procesorul nu poate ns accesa direct informaii
n memoria extern. Prin urmare, dac se dorete lansarea n execuie a unui program,
acesta trebuie n prealabil transferat din memoria extern n memoria intern (de pe disc n
RAM). Aceste transferuri opereaz pe blocuri mari de informaie numite fiiere i se fac n
regim DMA (Direct Memory Access). Unitatea de informaie transferabil ntre RAM i
disc este fiierul deoarece informaia stocat n memoria extern (pe disc) este organizat n
fiiere, fiierele fiind de dou tipuri: de cod i respectiv de date.
Locaiile de memorie intern (precum i registrele generale) pot fi accesate direct de
ctre procesor. O locaie de memorie intern va fi accesat de procesor fie pentru a citi
informaia memorat n locaia respectiv, fie pentru a scrie o nou informaie n locaia
respectiv. Unitatea adresabil n memoria intern este octetul (byte-ul). Prin urmare
unitatea minim transferabil ntre memoria intern i procesor este octetul. Dac, de
exemplu, procesorul opereaz pe 32 de bii atunci i locaiile memoriei interne vor fi pe 32
de bii. Prin urmare, printr-un singur acces la memorie procesorul va putea citi sau scrie un
cuvnt (o locaie) de 32 de bii. n setul de instruciuni al procesorului vor exista

30

CAPITOLUL 1 - Introducere
instruciuni care opereaz pe cuvnt (32 de bii) dar i instruciuni care opereaz pe octet (8
bii).
Prin accese succesive la memoria intern vor fi extrase din memorie instruciunile
unui program, n timpul execuiei acestuia. Dup fetch-ul i execuia instruciunii curente se
trece la fetch-ul i execuia instruciunii urmtoare.
1.5 Registrele generale
Aa cum s-a artat la 1.3.2 i 1.3.3, registrele generale sunt implementate n procesor i
reprezint memoria de pe nivelul 1. n faza de compilare a unui program, pe lng
translatarea acestuia din limbajul de nivel nalt n cod main, compilatorul va face i
alocarea memoriei pentru variabilele definite n program. Pentru a optimiza alocarea
memoriei, compilatorul analizeaz frecvena utilizrii diverselor variabile pe parcursul
execuiei programului. Variabilele cele mai frecvent utilizate vor fi alocate n registre
(nivelul 1). Dup epuizarea registrelor se vor face alocri n locaii de memorie (nivelul 2).
innd cont de faptul c accesul la un registru este mult mai rapid dect accesul la o locaie
de memorie, prin acest sistem de alocare se urmrete minimizarea timpului de procesare a
programului.
Procesoarele CISC sunt de regul dotate cu un set mai redus de registre generale (8,
16 sau 32 registre) n timp ce procesoarele RISC sunt de regul dotate cu un set mai extins
de registre (32, 64 sau chiar 128). Lungimea registrului general corespunde structurii
procesorului; un procesor pe 32 de bii va avea registre pe 32 de bii, ALU pe 32 de bii,
busuri interne pe 32 de bii, etc.
Un registru pe n bii este format din n bistabili asociai. Se utilizeaz bistabili D sau
bistabili J-K. Bistabilii D au avantajul c necesit o singur linie de intrare date per bit
memorat (intrarea D), n timp ce bistabilii J-K revendic dou linii de intrare per bit
memorat (intrrile J i K).
Un registru pe 8 bii implementat cu bistabili D este prezentat n figura 1.15.

Fig 1.15 Registru pe 8 bii implementat cu bistabili D

31

ORGANIZAREA I PROIECTAREA CALCULATOARELOR

Semnificaia notaiilor utilizate n figura 1.15 este urmtoarea:


DI7-0
DO7-0

-liniile de intrare date n registrul R


-liniile de ieire date din registrul R

RESET
-comanda de tergere registru, activ pe 0 (R0)
LdR (PmR) -load register (primete registru); comanda de ncrcare (scriere) a
datelor de intrare DI7-0 n registrul R.
PdR
-pred registru; comanda de citire a coninutului registrului R pe
ieirile de date DO7-0. Aceast comand emite coninutul registrului
pe liniile de ieire date DO7-0.
Prin urmare, dou operaii sunt posibile n registrul R:

Scriere: datele de inrare DI7-0 sunt ncrcate (memorate) n R prin activarea


comenzii LdR (PmR).

Citire: coninutul registrului R este citit (emis) pe ieirile de date DO7-0 prin
activarea comenzii PdR.

Dac 2 astfel de registre se integreaz ntr-o structur (plan) de memorie cu 2 locaii pe 8


bii i dac acestui plan de memorie static rapid (register file) i se asociaz un
n
decodificator de adrese cu n intrri i 2 ieiri, fiecare iere selectnd o locaie din plan (un
n
registru), se obine un set de 2 registre generale pe 8 bii; vezi structura din figura 1.16
(elaborat pentru cazul particular n=3 i respectiv registre pe 32 de bii i nu pe 8 bii),
structur ce va fi explicat n cele ce urmeaz).
1.5.1 Registre generale implementate n structuri uniport
Considerm un set de 8 registre generale pe 32 de bii (particularizare). Acest set poate fi
implementat ntr-o structur de memorie (static rapid) uniport de forma celei din figura
1.16. Semnificaia notaiilor utilizate n figura 1.16 este urmtoarea:
-intrrile de adres; selecteaz registrul general
A2-0
DEC 3:8 -decodificator de adrese
DI31-0
-intrrile de date
DO31-0 -ieirile de date
WRITE (PmRG) -comanda de scriere (primete RG); cu un impuls n 1 pe
intrarea WRITE se face scriere n registrul general selectat de adresa
prezent pe intrrile A2-0.
-linia de selecie a locaiei i din planul de memorie M (linia de selecie a
SELi
registrului Ri).
M
-plan de memorie static rapid cu dimensiunea de 8 locaii a cte 32 bii.
Fiecare locaie reprezint un registru general. Aceast plan de memorie

32

CAPITOLUL 1 - Introducere
implementat cu bistabili D funcioneaz conform schemei de principiu
din figura 1.17.

Fig 1.16 Structura uniport aferent unui set de 8 registre generale pe 32 bii
Pentru simplificare, n figura 1.17 sunt reprezentate doar locaiile i-1, i i respectiv i+1 din
planul M (doar trei registre: Ri-1, Ri i Ri+1), selectate de liniile SELi-1, SELi, i respectiv
SELi+1. n total exist 8 astfel de locaii n planul M (8 registre), fiecare fiind compus din
32 de bistabili asociai (registre pe 32 bii).
n planul M din figura 1.16 (detaliat n figura 1.17) sunt posibile dou operaii:

Citirea coninutului registrului Ri:


Adresa de valoare i aplicat pe intrrile de adres A2-0 va activa (n 1) doar linia
de selecie SELi; celelalte linii de selecie rmn inactive (n 0). Cu SELi=1 se
valideaz ntreg setul de 32 pori SI (notate cu * n figura 1.17) situate pe ieirile
Q aferente celor 32 de bistabili ce compun locaia i (registrul Ri). Coninutul
registrului Ri se va propaga prin cele 32 pori SI menionate i mai departe prin
cele 32 de pori SAU (care reunesc printr-o funcie SAU ieirile tuturor celor 8
registre), devenind disponibil pe ieirile de date DO31-0.

33

ORGANIZAREA I PROIECTAREA CALCULATOARELOR

Scrierea unor noi informaii n registrul Ri:


Ca la citire, adresa de valoare i aplicat pe intrrile de adres A2-0 va activa (n
1) doar linia de selecie SELi; celelalte linii de selecie rmn inactive (n 0).
Suplimentar, data de scris n registrul Ri (un cuvnt de 32 bii) se aplic pe
intrrile de date DI31-0. Avnd cei 32 de bii de date ce urmeaz a fi scrii n
registrul Ri, prezeni i stabili pe intrrile DI31-0, se activeaz comanda WRITE
(PmRG).
Prin urmare, selecia locaiei i (registrului Ri) se face, ca i n cazul citirii, cu
SELi=1. Cu SELi=1 nseamn c doar poarta SI notat cu ** n figura 1.17 va fi
validat. Drept consecin, impulsul de scriere aplicat pe intrarea WRITE se va
propaga doar prin poarta SI menionat, transformndu-se n impuls de tact pentru
toi cei 32 de bistabili ce compun locaia i (registrul Ri). Ca urmare, data prezent
pe intrrile DI31-0 va fi scris n locaia i (n registrul Ri).

Fig 1.17 Structura planului de memorie M

34

CAPITOLUL 1 - Introducere

1.5.2 Registre generale implementate n structuri multiport


Din punctul de vedere al performanelor, implementarea registrelor generale ntr-o structur
uniport prezint anumite dezavantaje. Structura uniport utilizeaz o singur surs de
adresare, att pentru operaiile de citire ct si pentru cele de scriere (dispune de un singur
set de intrri de adres). Prin urmare, ntr-o anumit perioad de tact procesor, un singur
registru poate fi, fie scris, fie citit.
Procesoarele moderne prezint un grad nalt de paralelism n execuia operaiilor
interne. Pentru a susine acest paralelism, setul de registre generale trebuie s permit
accese multiple la registrele din componena sa, n aceeai perioad de tact (accese
concurente). De exemplu, n faza de execuie a instruciunii ADD R3, R1, R2 (format cu
trei adrese, vezi 1.3!), se execut operaia R3R1+R2. Pentru a efectua aceast operaie
ntr-o singur perioad de tact procesor, setul de registre trebuie s permit trei accese
simultane:
-citire R1 (operand 1)
-citire R2 (operand 2)
-scriere R3 (rezultat)
Aceste trei accese simultane nu sunt posibile n structura uniport dar devin posibile n cazul
implementrii registrelor generale ntr-o structur multiport (n cazul exemplificat vor fi
necesare 2 porturi de citire i unul de scriere). Implementarea celor 8 registre generale (pe
32 bii) ntr-o structur multiport, cu dou porturi de citire i unul de scriere, este prezentat
n fiura 1.18. n aceast figur s-au utilizat urmtoarele notaii:
AS2-0
DI31-0

-adres scriere; selecteaz registrul general ce va fi scris.


-intrrile de date; pe aceste linii se aplic informaia ce urmeaz
a fi scris n registrul selectat cu adresa AS2-0.
AC2AAC0A -adres de citire aferent portului A; selecteaz registrul ce va fi
citit pe portul A.
DO31ADO0A -ieirile de date aferente portului A; pe aceste ieiri se va obine
cuvntul de 32 bii citit din registrul selectat cu adresa
AC2AAC0A.
AC2BAC0B -adres de citire aferent portului B; selecteaz registrul ce va fi
citit pe portul B.
DO31BDO0B -ieirile de date aferente portului B; pe aceste ieiri se va obine
cuvntul de 32 bii citit din registrul selectat cu adresa
AC2BAC0B.
PmRi
-primete Ri; comanda de scriere n registrul Ri.

35

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


Pentru efectuarea operaiei R3R1+R2, se vor realiza trei accese simultane la setul de
registre generale din figura 1.18:
R1 citit pe portul A (AC2AAC0A=0012)
R2 citit pe portul B (AC2BAC0B=0102)
R3 scris pe portul de scriere (AS2-0=0112)
Ne putem imagina faptul c, n structura procesorului, datele DO31ADO0A (operandul1)
i datele DO31BDO0B (operandul 2) sunt aplicate pe cele dou intrri ale unitii ALU
(Arithmetic and Logic Unit), c pentru unitatea ALU se activeaz comanda SUM (de
adunare) i c rezultatul obinut pe iedirea unitii ALU este aplicat pe intrrile de date
DI31-0 aferente portului de scriere din figura 1.10, activnd suplimentar i comanda WRITE.
Dac cele trei seturi de adrese din figura 1.18 sunt setate pe valorile precizate mai sus, este
evident c efectuarea operaiei R3R1+R2, ntr-o singur perioad de tact procesor,
devine posibil (pe structura multiport).

Fig 1.18 Structura multiport aferent unui set de 8 registre generale pe 32 bii

36

CAPITOLUL 1 - Introducere

Observaie:
Pentru a satisface gradul nalt de paralelism intern impus procesoarelor moderne, setul de
registre generale se implementeaz de regul cu mai multe porturi. De exemplu,
microprocesorul RISC Motorola 88110 conine dou seturi a cte 32 registre generale:
R31R0 -registre generale pentru numere ntregi pe 32 bii (virgul fix)
X31X0 -registre generale pentru numere reprezentate n virgul flotant (pe 80
bii)
Ambele seturi de registre au cte 8 porturi: 6 porturi de citire i 2 porturi de scriere.
1.6 Memoria intern
Memoria intern se mai numete i memorie principal sau memorie central. Dup
cum am precizat la 1.4, memoria intern reprezint nivelul 2 din structura ierarhizat a
memoriei. Acest nivel se implementeaz cu circuite integrate specializate (circuite de
memorie). Cele mai utilizate circuite sunt circuitele RAM-dinamic. Celula de memorare
RAM-dinamic are o structur foarte simpl (o simpl jonciune implementat n tehnologie
MOS care funcioneaz ca un condensator). Dac condensatorul este ncrcat (jonciunea
este ncrcat) cu o sarcin electric Q, semnificativ diferit de zero, spunem c celula
memoreaz un bit de valoare 1; dac condensatorul este descrcat (Q=0), spunem c
celula memoreaz un bit de valoare 0.
Structura extrem de simpl a celulei RAM-dinamic va conduce la o densitate mare
de celule pe unitatea de suprafa (n pastila de siliciu) i prin urmare se obin circuite de
memorie de capacitate foarte mare. Acesta este marele avantaj al tehnologiei RAMdinamic.
Principalul dezavantaj al tehnologiei RAM-dinamic este reprezentat de necesitatea
regenerrii periodice a informaiilor. Condensatorul (jonciunea MOS), din punct de vedere
electric, nu poate fi izolat perfect fa de linia de bit asociat (prin intermediul creia se
scrie sau se citete celula). Prin urmare, apar curenii de fug care conduc la un efect
nedorit: o celul ncrcat cu o sarcin Q semnificativ diferit de zero (care memoreaz
1) va fi afectat, n timp, de un proces de descrcare a sarcinii Q iar dac sarcina Q scade
la un nivel apropiat de zero, celula va trece din 1 n 0. Pentru a evita aceast trecere din
1 n 0, este necesar regenerarea periodic a informaiilor. Practic, toate celulele care
memoreaz 1 trebuie rencrcate cu sarcin Q la intervale regulate de timp. Prin
rencrcare cu sarcin Q, trebuie s nelegem rencrcarea condensatorului (jonciunii
MOS) cu Q la valoarea maxim.
Memoria intern a calculatorului conine i un plan de memori ROM (Read-Only
Memory) de capacitate mic. La calculatorul IBM-PC n acest plan de ROM este ars
BIOS-ul (Basic Input-Output System).
De ce ar fi necesar un plan de ROM ? Pentru c, la punerea sub tensiune a
calculatorului, n RAM nu exist informaie util. Memoria RAM este volatil iar la
punerea sub tensiune, n RAM acioneaz hazardul (anumite celule se seteaz pe 1 iar
altele pe 0).
Procesorul nu tie altceva dect s proceseze instruciuni (s execute programe).
Imediat dup punerea sub tensiune, n RAM nu exist nici-un program. Prin urmere,

37

ORGANIZAREA I PROIECTAREA CALCULATOARELOR


calculatorul nu-si poate ncepe activitatea dect prin execuia unui program din ROM
(dintr-un plan de memorie nevolatil). Practic, la punerea sub tensiune a calculatorului, din
sursa de alimentare, se genereaz un semnal de iniializare (RESET), similar celui activat
din butonul RESET de pe panoul frontal. Semnalul RESET va iniializa procesorul i
celelalte blocuri hardware. Pe lng multe altele, iniializarea procesorului nseamn i
ncrcarea n registrul PC (Program Counter) a unei constante (adresa unei locaii din
planul de ROM). La aceast adres se va afla codul primei instruciuni pe care procesorul,
dup punerea calculatorului sub tensiune, o va extrage i o va executa. Iniializarea i
restartarea sistemului de calcul decurg analog atunci cnd resetarea acestuia este realizat
de ctre operator, prin acionarea butonului RESET.

38

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