cap1 carte

38
CAPITOLUL 1 Introducere 1.1 Scurt istoric În jurul anului 3000 î.e.n., pe valea Tigrului şi Eufratului se utiliza tăbliŃa cu pietricele (o tăbliŃă de argilă pe care erau săpate şanŃuri, în care erau aşezate pietricele). Prin deplasarea pietricelelor de-a lungul şanŃurilor, număratul devenea semiautomat. Ideea de a găuri pietricelele şi de a înşira mărgeluŃele obŃinute în grupuri de câte 10 a condus la creşterea substanŃială a vitezei de calcul. “Calculatorul cu mărgeluŃe înşirate” a fost denumit abac. În anul 1642, la vârsta de 19 ani, Blaise Pascal a construit o maşină de adunat în care grupul de 10 mărgeluŃe din structura abacului era înlocuit de o rotiŃă dinŃată cu 10 dinŃi (câte un dinte pentru fiecare cifră zecimală). În anul 1694, Gottfried Wilhelm Leibnitz a perfecŃionat maşina de adunat astfel încât aceasta să poată efectua şi operaŃii de înmultire; maşina 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ă funcŃional deoarece tehnologia de fabricaŃie a părŃilor componente era insuficient dezvoltată la acea vreme. Componentele principale ale maşinii Analytical Engine” erau: dispozitivul de introducere (bazat pe cartele perforate), dispozitivul de memorare a numerelor în vederea prelucrării (“magazia”), dispozitivul de calcul (“moara”), dispozitivul de control şi dispozitivul de ieşire. Prin urmare, multe dintre componentele şi conceptele care au stat la baza proiectului Analytical Engine” au rămas valabile şi pentru calculatoarele de astăzi. Alături de Babbage a lucrat şi Ada Augusta, contesă de Lovelace, care ar putea fi considerată primul programator. Ea a sesizat necesitatea utilizării structurilor de selecŃie repetitive şi a variabilelor index. Mult mai târziu, în anul 1979, în cinstea ei va fi denumit limbajul de programare Ada. În anul 1872, E. Barbour realizează prima maşină de calcul cu imprimantă iar în anul 1892, W. Burroughs construieşte o maşină de calcul (de birou) perfecŃionată. În anul 1912, F. Baldwin şi J. Monroe încep producŃia de masă a maşinilor mecanice cu 4 operaŃii aritmetice iar în anul 1930 începe producŃia maşinilor electromecanice de calcul, capabile să efectueze operaŃii matematice precum: adunare, scădere, înmulŃire, împărŃire, rădăcină pătrată, etc. Primul calculator electromecanic programabil a fost Z1 construit de germanul Konrad Zuse în apartamentul părinŃilor săi, între anii 1936-1938. Z1 avea o memorie de 64 cuvinte pe 22 biŃi, era programat cu ajutorul unui cititor de bandă de hârtie perforată

Upload: nick-popa

Post on 04-Oct-2015

27 views

Category:

Documents


1 download

DESCRIPTION

Numeric Computers

TRANSCRIPT

  • 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

    2

    (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

    3

    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

    4

    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 icon-uri 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

    5

    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

    6

    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 IBM-PC.

    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 IBM-PC 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

    7

    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

    8

    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

    9

    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

    10

    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):

  • CAPITOLUL 1 - Introducere

    11

    Generaii Caracteristici Tehnologice Performane Limbaje de Programare

    Generaia I

    (19371957)

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

    -vitez de calcul: 104 operaii/sec.

    -memorie: 2 KB

    Programare n: -cod main -limbaje de asamblare

    Generaia II

    (19581963)

    -diode i tranzistoare -memorie intern cu inele de ferit -memorie extern: tambur, disc sau band magnetic

    -uniti de virgul flotant -regitre de index

    -vitez de calcul: 2105 operaii/sec.

    -memorie: 32 KB

    -limbaje de nivel nalt: Fortran (1956) Algol (1958) Cobol (1959)

    Generaia III

    (19641982)

    -circuite integrate -memorie intern semiconductoare -memorie extern: discuri magnetice -microprogramarea, ca tehnic de proiectare a procesoarelor complexe

    -memoria virtual

    -vitez de calcul: 5106 operaii/sec.

    -memorie: 2 MB

    -sisteme de operare evoluate cu "time sharing" (UNIX)

    -limbaje de nivel nalt: Pascal (1971) C (1972)

    Generaia IV

    (19821990)

    -circuite integrate pe scar larg (VLSI)

    -discuri optice -dezvoltarea reelelor de calculatoare

    -vitez de calcul: 3107 operaii/sec.

    -memorie: 16 MB

    -limbaje orientate obiect (C++)

    -limbaje funcionale (LISP)

    -limbaje de programare logic (Prolog)

    Generaia V

    (dup 1990)

    -circuite integrate pe scar ultra larg (ULSI)

    -revitalizarea arhitecturilor paralele -dezvoltarea sistemelor multiprocesor

    -vitez de calcul: 1012 operaii/sec.

    -memorie: 256 MB

    - limbaje concurente -sisteme software cu inteligen artificial

    Generaia VI

    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 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

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    12

    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).

  • CAPITOLUL 1 - Introducere

    13

    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 IBM-PC 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.

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    14

    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.

  • CAPITOLUL 1 - Introducere

    15

    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)

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    16

    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

  • CAPITOLUL 1 - Introducere

    17

    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

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    18

    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).

  • CAPITOLUL 1 - Introducere

    19

    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)

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    20

    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 unui registru trebuie codificat pe patru bii (2

    4=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).

    Mod de adresare

    MAS/MAD (exemplu de codificare)

    Localizarea operandului

    Instruciuni cu doi operanzi (exemplificare n limbaj de asamblare)

    Imediat 00 Operand de tip constant

    LD R0,4 ;R04

    (ncarc constanta 4 n regiustrul R0)

    Direct 01 Operand n registru ADD R5,R3 ;R5R5+R3

    (adun R3 cu R5 i depune rezultatul n R5)

    Indirect 10 Operand n memorie la adresa specificat de registru

    MOV R2,(R6) ;R26R

    LocMem

    (ncarc n R2 coninutul locaiei de memorie

    adresat de R6)

    Indexat 11 Operand n memorie la adresa dat de registru plus index

    AND R4,6(R7) ;R4R4 6RLocMem

    7+

    (operaia logic SI ntre R4 i coninutul locaiei de

    memorie adresat de R7+6, cu depunerea

    rezultatului n R4)

    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 de-al 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).

  • CAPITOLUL 1 - Introducere

    21

    n cazul instruciunii MOV R2,(R6) operandul surs este coninutul locaiei de memorie adresat de registrul R6 (

    6RLocMem ), ceea ce implic MAS=10 (mod de

    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 6 n acest exemplu) la coninutul registrului R7 ( 6RLocMem 7+

    ), ceea ce implic

    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

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    22

    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

  • CAPITOLUL 1 - Introducere

    23

    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 adresare

    MAD

    Localizarea operandului

    Instruciuni cu un singur operand (exemplificare n limbajul de asamblare)

    Direct 01 Operand n registru NEG R5 ;R5 5R

    (negare bit cu bit a coninutului registrului R5)

    Indirect 10 Operand n memorie la adresa specificat de registru

    DEC (R6) ;6R

    LocMem 6R

    LocMem -1

    (decrementarea coninutului locaiei de memorie de la

    adresa dat de registrul R6)

    Indexat 11

    Operand n memorie la adresa specificat de registru plus un index

    INC 6(R7) ;6R

    LocMem7+

    6R

    LocMem7+

    +1

    (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.

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    24

    EI ;validare ntreruperi (Enable Interrupts). Aceast instruciune valideaz ;ntreruperile externe.

    DI ;invalidare ntreruperi (Disable Interrupts). Aceast instruciune invalideaz ;ntreruperile externe.

    NOP ;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

  • CAPITOLUL 1 - Introducere

    25

    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-registru-registru).

    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

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    26

    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 Instruciune Operaie efectuat

    ADD R1, R7,R5 R1R7+R5 (adunare)

    AND R6, R0,R4 R6R0R4 (SI logic) R-R-R

    XOR R3,R9,R2 R3R9R2 (SAU exclusiv)

    ADD R1, R7,24 R1R7+24 (adunare)

    AND R6, R0,8 R6R08 (SI logic) R-R-I

    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.

  • CAPITOLUL 1 - Introducere

    27

    Mod de adresare

    Instruciune Operaie efectuat

    LD R2,(R6)

    R26R

    LocMem

    (ncarc n R2 coninutul locaiei de memorie adresat

    de R6) indirect

    ST (R3),R1 3R

    LocMem R1

    (memoreaz registrul R1 n locaia de memorie

    adresat de R3)

    LD R7,16(R5)

    R7 16RLocMem 5+

    (ncarc n R7 coninutul locaiei de memorie de la

    adresa R5+16) indexat

    ST 124(R4),R0 124R

    LocMem4+

    R0

    (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

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    28

    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-R-R 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 bii (2

    5=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

  • CAPITOLUL 1 - Introducere

    29

    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

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    30

    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 semnificativ mai mare dect memoria intern (aproximativ de 10

    210

    3 ori mai

    mare) dar i o vitez semnificativ mai mic (aproximativ de 10410

    5 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

  • CAPITOLUL 1 - Introducere

    31

    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

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    32

    Semnificaia notaiilor utilizate n figura 1.15 este urmtoarea:

    DI7-0 -liniile de intrare date n registrul R

    DO7-0 -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 2n astfel de registre se integreaz ntr-o structur (plan) de memorie cu 2

    n locaii pe 8

    bii i dac acestui plan de memorie static rapid (register file) i se asociaz un decodificator de adrese cu n intrri i 2

    n ieiri, fiecare iere selectnd o locaie din plan (un

    registru), se obine un set de 2n 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:

    A2-0 -intrrile de adres; selecteaz registrul general 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.

    SELi -linia de selecie a locaiei i din planul de memorie M (linia de selecie a

    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

  • CAPITOLUL 1 - Introducere

    33

    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.

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    34

    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

  • CAPITOLUL 1 - Introducere

    35

    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 -adres scriere; selecteaz registrul general ce va fi scris.

    DI31-0 -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.

  • ORGANIZAREA I PROIECTAREA CALCULATOARELOR

    36

    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

  • CAPITOLUL 1 - Introducere

    37

    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 RAM-dinamic.