Documente Academic
Documente Profesional
Documente Cultură
Introducere
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.
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.
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).
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).
10
CAPITOLUL 1 - Introducere
Generaii
Limbaje de
Programare
Caracteristici Tehnologice
Performane
-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
Generaia I
-circuite integrate
Generaia III -memorie intern semiconductoare
-memorie extern: discuri magnetice
-microprogramarea, ca tehnic de
(19641982) proiectare a procesoarelor complexe
-memoria virtual
-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
11
Procesorul citete i execut secvenial, una cte una, instruciunile unui program
stocat n MP.
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.
2.
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
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
Toate aceste informaii trebuie s fie codificate (integrate) n codul instruciunii. Pe baza
acestui raionament rezult formatul cu patru adrese (figura 1.3)
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).
17
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.
19
MAS/MAD
Mod de
(exemplu de
adresare
codificare)
Imediat
00
Direct
01
Indirect
10
Indexat
11
Localizarea
operandului
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
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
.......
.......
21
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
23
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.
25
Clasa
R-R-R
R-R-I
Instruciune
Operaie efectuat
R1R7+R5 (adunare)
XOR R3,R9,R2
R1R7+24 (adunare)
XOR R3,R9,152
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
27
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
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.
31
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:
Citire: coninutul registrului R este citit (emis) pe ieirile de date DO7-0 prin
activarea comenzii PdR.
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:
33
34
CAPITOLUL 1 - Introducere
35
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
38