Documente Academic
Documente Profesional
Documente Cultură
Asc PDF
Asc PDF
ArhitecturaSistemelor
deCalcul
[suportdecurs]
Lect.univ.dr.HoreaOros
[]
[LucrareareprezintsuportuldecurspentrudisciplinaArhitecturaSistemelordeCalcul
dinplanuldenvmntalstudenilordelaspecializrileInformaticanulI.]
Cuprins
1. Introducere ................................................................................................................. 5
Scurtistorieaevoluieisistemelordecalcul ............................................................ 5
ModelulvonNeumann .................................................................................................. 7
ModelulSystemBus(magistralsistem) .................................................................... 7
Nivelurialemainilordecalcul .................................................................................... 8
Unsistemdecalcultipic ............................................................................................. 12
Supercalculatoare ........................................................................................................ 13
Concluzii ....................................................................................................................... 14
2. Reprezentareadatelor ............................................................................................. 15
Introducere .................................................................................................................. 15
Reprezentareanumerelornvirgulfix .................................................................. 15
Reprezentareanumerelornvirgulmobil............................................................. 24
Coduridecaractere ..................................................................................................... 34
Concluzii ....................................................................................................................... 37
3. Logicadigital .......................................................................................................... 39
Logiccombinaional ................................................................................................ 39
Tabeledeadevr ......................................................................................................... 40
Porilogice ................................................................................................................... 41
Algebrboolean ......................................................................................................... 43
Formasumdeproduseidiagramelogice.............................................................. 45
Formaprodusdesume ............................................................................................... 47
Componentedigitale ................................................................................................... 48
Logicsecvenial ....................................................................................................... 58
Flipflop ........................................................................................................................ 58
Mainicunumrfinitdestri .................................................................................... 58
4. Aritmetic ................................................................................................................. 59
Introducere .................................................................................................................. 59
Adunareaiscdereanumerelornvirgulfix ....................................................... 59
nmulireaimprireanumerelornvirgulfix .................................................. 65
Aritmeticnvirgulmobil ....................................................................................... 70
Studiudecaz:AritmeticaBCD .................................................................................... 71
Concluzie ...................................................................................................................... 75
5. Arhitecturasetuluideinstruciuni ......................................................................... 76
Introducere .................................................................................................................. 76
Componentelehardwarealearhitecturiisetuluideinstruciuni(ASI) .................. 76
ARCARISCComputer ........................................................................................... 82
Pseudooperaii ........................................................................................................... 89
Exempledeprogramenlimbajdeasamblare ......................................................... 89
Variaiinarhitecturilesistemelordecalculinmoduldeadresare .................... 90
Accesareadatelornmemoriemodurideadresare .............................................. 92
Linkeditareasubrutineloristiv ............................................................................ 93
Intrareieirenlimbajdeasamblare ........................................................................ 98
StudiudecazASIpentruMainaVirtualJava .................................................... 100
Concluzie .................................................................................................................... 101
6. Limbajeimain................................................................................................... 102
Introducere ................................................................................................................ 102
Procesuldecompilare............................................................................................... 102
Procesuldeasamblare .............................................................................................. 108
Linkeditareincrcare ........................................................................................... 115
Unexempludeprogramare ...................................................................................... 119
Macrouri ..................................................................................................................... 120
Concluzii ..................................................................................................................... 122
7. Comunicaii............................................................................................................. 124
Modemuri ................................................................................................................... 124
Mediidetransmisie ................................................................................................... 126
Arhitecturidereea:LAN.......................................................................................... 129
Eroridecomunicaieicoduricorectoaredeerori................................................ 133
Arhitecturidereea:Internet ................................................................................... 141
Concluzii ..................................................................................................................... 147
1. Introducere
Arhitectura calculatoarelor (AC) se ocup cu comportamentul funcional al
sistemelor de calcul aa cum este vzut de programator. Aici sunt incluse aspecte
cum ar fi: dimensiunea tipurilor de date (de ex. folosirea a 16 cifre binare pentru
reprezentareaunuintreg)itipuriledeoperaiicesuntpermise(deex.adunarea,
scdereaiapeluldesubrutine).
Organizarea calculatoarelor se ocup cu relaiile structurale care nu sunt vizibile
programatorului,cumarfiinterfeelecudispozitiveleperiferice,frecvenadeceasi
tehnologiileutilizatepentrumemorie.
nacestcursvomdiscutaattdesprearhitecturctidespreorganizare,termenul
arhitecturvaincludeattarhitecturactiorganizareasistemelordecalcul.
Scurtistorieaevoluieisistemelordecalcul
nc din secolul XVI existau mecanisme mecanice
pentru controlul unor operaii complexe de
exemplu cilindrii care se roteau ntro cutie
muzical i produceau melodii. Mainile ce
efectuaucalculeauaprutnsecolulurmtor.
Blaise Pascal (16321662) a creat un calculator
mecanicpentrualajutapetatlsu,careseocupa
cu strngerea taxelor, la efectuarea calculelor.
CalculatorulluiPascalsenumeaPascaline.
Urmtorulpasimportantnevoluiasistemelordecalculsafcutdupunsecoln
timpul celui deal doilea rzboi mondial cnd submarinele germane produceau
AliailorpagubesemnificativenAtlantic.Acestesubmarineprimeauordineledela
baze din Germania criptat. Criptarea se realiza cu ajutorul unei maini de calcul
numiteENIGMAprodusdeSiemensAG.Procesuldecriptareeracunoscutdemult
timp dar decriptarea mesajelor, fr cunoaterea codului secret folosit la criptare,
eraooperaiefoartedificil.AlanTuring(19121954)ialioamenidetiindin
Anglia au reuit s sparg codurile produse de ENIGMA. Turing a transformat
criptografiadintroartpracticatdeoameniobinuiipentruadescifralimbivechi
de mult disprute (hieroglifele egiptenilor) ntro ramur a matematicii. Turing a
creatomaindedecriptarenumitColossus.ImplicarealuiTuringnacestproiect
nu este foarte bine documentat datorit confidenialitii care a planat asupra
acestuiproiect.
ModelulvonNeumann
Calculatoarele digitale convenionale au o baz comun care i este atribuit lui
vonNeumann.ModelulvonNeumannconstncincicomponentemajorelafelcan
figur. Unitatea de intrare furnizeaz instruciuni i date sistemului, care sunt
stocateulteriornUnitateadeMemorie.Instruciunileidatelesuntprocesatede
UnitateaAritmeticiLogic(ULA)subcontrolulUnitiideControl.Rezultatele
sunt trimise la Unitatea de Ieire. ULA i UC poart denumirea generic de CPU
(UnitateCentraldeProcesare).
Programul stocat este cel mai important aspect al modelului von Neumann. Un
program este stocat n memoria calculatorului mpreun cu datele ce sunt
procesate. nainte de apariia calculatoarelor cu program stocat, programele erau
stocate pe medii externe cum ar fi cartele perforate. n calculatorul cu program
stocatprogramulpoatefimanipulatcaicumarreprezentadate.Aceastaadusla
apariiacompilatoarelorisistemelordeoperareifaceposibilmareaversatilitate
acalculatoarelormoderne.
ModelulSystemBus(magistralsistem)
CalculatoarelemodernesebazeazpemodelulvonNeumann.Totuiacestmodela
fostorganizat(restructurat,simplificat)ntrunaltmodelianumemodelulSystem
Bus. Acest model mparte sistemul de calcul n trei subuniti: CPU, Memorie i
IntrareIeire. Aceast mbuntire a modelului von Neumann combin ULA i
unitatea de control ntro singur unitate funcional (CPU Central Processing
Unit).Intrareaiieireasuntcombinatedeasemeneantrosingurunitate.
Caracteristica principal a modelului System Bus este comunicarea ntre diferitele
componente care se face printro cale numit magistral sistem, format din
magistrala de date (care transport informaia transmis), magistrala de adrese
(careidentificundeestetrimisinformaia)imagistraladecontrol(caredescrie
aspecte ce in de modul n care este trimis informaia). Exist de asemenea i
7
Fizic,magistralelesuntformatedincoleciidefiregrupatepefuncii.Omagistral
de32debiiare32defireseparate,fiecaretransmindunbitdedate.Magistrala
sistemesteungrupdemagistraleindividualeclasificatedupfunciilelor.
Magistrala de data transport datele ntre diferitele componente ale sistemului.
Unele sisteme au magistrale de date separate pentru transportul datelor la/de la
procesor(datainidataout).Magistralele,celmaifrecvent,transportdatelentr
unsingursenslaunmomentdat.
Dacmagistralatrebuiepartajatdediferiteleentiticarecomunic,atunciaceste
entiti trebuie s aib adrese distincte. n unele sisteme de calcul toate adresele
sunt adrese de memorie indiferent dac fac parte din memoria calculatorului sau
sunt dispozitive de I/E. Pe de alt parte, unele sisteme au adrese separate pentru
adreseledeintrareieirealedispozitivelordeI/E.
Oadresdememorie,saulocaie,identificlocaiadememorielacaresuntstocate
datele.ntimpuluneioperaiidecitiresauscrieredememorie,adresademagistral
conine adresa locaiei de memorie de la care se vor citi datele sau la care se vor
scriedatele.TermeniicitirerespectivscrieresereferlaCPUcarecitetedatele
din memorie i scrie datele n memorie. Dac datele se citesc din memorie atunci
magistraladedateconinevaloareacititdelaadresadememorierespectiv.Dac
datele se scriu n memorie atunci magistrala de date conine valoarea care se va
scrienmemorie.
Magistraladecontrolcoordoneazaccesullamagistraladedateilamagistralade
adreseidirecioneazdatelesprediferitecomponente.
Nivelurialemainilordecalcul
Lafelcaoricesistemcomplex,uncalculatorpoatefiprivitdinmaimulteperspective
sauniveluridelanivelulcelmaidesus,nivelulutilizatorpnlanivelulcelmaide
jos, nivelul circuitelor integrate. Fiecare nivel reprezint o abstractizare a
calculatorului.Probabil c succesul calculatoarelor se datoreaz i gradului la care
aceste niveluri de abstractizare sunt separate (independente) unele de altele. Un
utilizatorcareruleazoaplicaiedetehnoredactarepeuncalculatornutrebuies
8
Nivelul de sus
Nivelul de jos
Nivelutilizatorsaunivelulprogramelordeaplicaie
9
Nivelullimbajelordenivelnalt
Este nivelul cu care interacioneaz cei care programeaz ntrun limbaj de nivel
nalt (Pascal, C, C++,Java, C#).Programatorul vede doar limbajul i nu detaliile de
niveljos.Programatorulvedetipurilededate,instruciunilelimbajuluidenivelnalt
darnuvedeexactcumsuntimplementateaceledateiinstruciunilanivelmain.
Compilatorulestecelcarefaceasociereantretipurilededateiinstruciuniledela
nivelullimbajuluideprogramareihardwareulmainii.Programelescrisentrun
limbajdenivelnaltpotfirecompilatepediferitemainiiprobabilcvorrulafr
probleme(spunemcprogramelesursscrisenacestelimbajedeprogramaresunt
portabile). Aceast compatibilitate poart numele de compatibilitate la nivel de
codsur.Acestnivelnuareolegturfoartemarecumainapropriuzispentru
care este translatat codul surs. Compilatorul transform codul surs n
instruciunimain.
Nivelullimbajuluideasamblare/limbajuluimain
Limbajulmainseocupcuproblemeledehardwarecumarfiregistreitransferul
de date ntre acetia. Colecia de instruciuni main pentru un anumit calculator
poartnumeledesetdeinstruciunialmainii.Codulmainesteformatdoardin
cifrebinare.Programareafolosinddoarcifrebinareestefoartedificilaacprintre
primele programe de calculator care au fost create a fost asamblorul care
transformmnemonicedelimbajobinuite cumarfiMOVE, ADD,SUB nsecvena
corespunztoare n limbaj main (cod main). Acest limbaj n care exist
corespondeneunulauncucodulmainsenumetelimbajdeasamblare.
Ca rezultat al acestei separri a nivelurilor putem avea maini ce difer n
implementarea de nivel jos dar care au acelai set (sau subset sau superset) de
instruciuni.AceastaapermisIBMsproiectezeseriaIBM360caregarantafaptul
c programele vechi ruleaz pe sisteme noi (compatibilitate n sus). Acest tip de
compatibilitateestecunoscutsubnumeledecompatibilitatebinardeoarececodul
binarruleaznemodificatpeoricaremembrualfamilieidesisteme.Acestaafostn
marepartemotivulpentrusuccesulserieiIBM360.
Intel a accentuat aceast compatibilitate la nivel binar. Programele scrise pentru
procesorul 8086 rulau nemodificate i pe 80186, 80286, 80386, 80486, Pentium.
Existialtefamiliideprocesoarecareauunaltsetdeinstruciuniincompatibilecu
familiidiferite.Transportulprogramelorpeaceleprocesoarenuesteunproceslafel
desimplu.
Nivelulcontrol
Unitateadecontrolesteceacareefectueaztransferuldedatentreregistre.Pentru
aceasta folosete semnale de control care transfer datele dintrun registru ntr
10
Nivelulunitilorfuncionale
Transferuldedatentreregistreialteoperaiiimplementatedeunitateadecontrol
transferdatenidinunitilefuncionale(registreinterneaCPU,ULA,memoria
principal). Unitile funcionale execut operaiile eseniale pentru sistemul de
calcul.
Nivelulporilorlogiceialtranzistorilor
Nivelul cel mai de jos este nivelul porilor logice i nivelul tranzistorilor. La acest
nivelncsevedefuncionalitateadelanivelurile superioare.Unitilefuncionale
sunt construite din pori logice iar porile logice sunt construite din tranzistori.
Porile logice implementeaz operaiile logice la nivelul cel mai de jos, operaii pe
caresebazeazfuncionalitateacalculatorului.Lanivelulcelmaidejoscalculatorul
este format din tranzistori dar la acest nivel funcionarea calculatorului este
exprimat n termeni de tensiuni ale curentului electric (voltaj), propagarea
semnalului,efectecuanticetoatefiindlaunnivelfoartejos.
Interaciuneadintreniveluri
Uneori separarea dintre niveluriestefoartevag. Onou arhitectur poate avea o
implementarecompletpentruinstruciunicunumerenvirgulmobil,pecndo
alt implementare mai minimalist poate avea doar implementarea operaiilor cu
numere ntregi. Instruciunile cu numere reale sunt nlocuite cu secvene de
instruciuninlimbajmaincareimit(emuleaz)instruciunilecunumerereale.
Aa se ntmpl cu microprocesoarele care au ca opiune coprocesorul matematic
pentruoperaiilecunumerereale.Instruciunileceemuleazoperaiilecunumere
reale sunt stocate n ROM (ReadOnly Memory). Nivelul limbaj de asamblare i
nivelurile superioare privesc ambele implementri identic singura diferen fiind
vitezadeexecuie.Oriceemularefuncioneazmaincet.Sepoateemulantregulset
11
Perspectivaprogramatoruluiarhitecturasetdeinstruciuni
Programatorulnlimbajdeasamblareestepreocupatdelimbajuldeasamblareide
unitile funcionale ale sistemului de calcul. Colecia de mulimi de instruciuni i
uniti funcionale se numete arhitectura set de instruciuni (Instruction Set
ArchitectureISA)asistemuluidecalcul.
Perspectivaarhitectuluidesistemedecalcul
Arhitectuldesistemedecalcultrebuiesaiboperspectivasuprasistemuluidela
toate nivelurile. Arhitectul care se concentreaz pe proiectarea calculatorului este
preocupat de cerinele de performan i este constrns de costuri. Performana
poatefispecificatprinvitezadeexecuie,capacitateadestocaresaualiparametri.
Costul poate fi reflectat n bani, dimensiune, greutate sau consum de energie.
Designul propus de un arhitect de sisteme de calcul trebuie s ncerce s ating
elurile de performan i n acelai timp s respecte constrngerile de buget.
Aceasta necesit de multe ori compromisuri ntre diferitele niveluri ale sistemului
decalcul.
Unsistemdecalcultipic
Calculatoarelemoderneauevoluatdelamontrianilor50,60lacalculatoaremult
maimiciimaiperformante.Cutoateinovaiiletehnologiceaprutentretimp,cele
cinci uniti de baz din modelul von Neumann se pot identifica i astzi n
calculatoarelemoderne.
Unitateadeintrare:tastatur,mouse.
Unitatedeieire:monitor,imprimant.
Unitateaaritmeticilogiciunitateadecontrol=CPU
Unitateadememorie:RAM,harddisk,discheta,CDROM.
12
Nucleulunuicalculatormodernesteconinutpeplacadebaz.Placadebazconine
circuite integrate, sloturi pentru plci de extensie i cabluri pentru conectarea
acestora.
Supercalculatoare
Unuldinmotivelepentrucaresupercalculatoareledisparesteprogresultehnologic
ndomeniulcalculatoarelorceeacefacecasistemeledecalculobinuitesatingo
putere de calcul ce reprezint o fraciune important din puterea de calcul a
supercalculatoarelor,launprefoartemicceilpermiteaproapeoricine.Raportul
pre/performan pentru calculatoarele desktop este foarte bun datorit
comercializrii acestor calculatoare pe scar larg. Supercalculatoarele nu se pot
vindencantitifoartemariaacacesteaauunraportpre/performanmare.
13
Concluzii
AC se ocup cu acele aspecte ale sistemelor de calcul ce sunt vizibile pentru
programator,ntimpceorganizareacalculatoarelorseocupcuaspectelecesuntla
un nivel fizic i nu sunt foarte vizibile pentru programator. Dea lungul timpului
programatoriitrebuiausseocupedefiecareaspectalcalculatoruluiBabbagecu
dispozitivemecanice,ENIACcucabluriiconectori.Pemsurcecalculatoareleau
devenit mai sofisticate, conceptul de nivel al mainii a devenit tot mai important,
permind calculatoarelor s aib comportament extern respectiv intern foarte
diferit, gestionnd complexitatea prin intermediul nivelurilor stratificate. Cea mai
important inovaie care face posibil aceasta este programul stocat, care este
ncarnatnmodelulvonNeumann.ModelulvonNeumannestecelpecarelvedem
nziuadeastzincalculatoareleconvenionale.
14
2. Reprezentareadatelor
Introducere
Lanceputurileapariieicalculatoarelorexistauoseriedemiturinceeaceprivete
calculatoarele.Unmiteracuncalculatoresteomainuriadecalculat.Chiari
la vremea respectiv calculatoarele puteau face mult mai mult dect nite calcule.
Un alt mit era c un calculator poate face orice. Astzi tim c exist clase de
probleme care sunt de nerezolvat chiar i pentru cele mai performante
calculatoarele create dup modelul von Neumann. Adevrul n legtura cu
calculatoareleesteundevapelajumtateadistaneidintreceledoumituri.
Noisuntemfamiliarizaicuoperaiialecalculatoruluicenusuntaritmetice:grafic,
audio sau chiar micarea mouseului. Indiferent de tipul de informaie ce este
prelucrat de calculator, informaia trebuie reprezentat sub form de 0 i 1.
Aceasta ridic imediat problema reprezentrii informaiei respective n calculator
(codificareadatelorencoding).Oriceinformaietrebuiereprezentatntrunmod
sistematic,neambiguu.
Noi folosim n mod curent reprezentarea zecimal pentru numere pentru c este
reprezentarea pe care o cunoatem cel mai bine, dar folosirea informaiei binare
pentru transmiterea datelor sa folosit nc nainte de apariia calculatoarelor sub
formacoduluiMorse.
n continuarea vom prezenta cteva din cele mai simple moduri de codificare a
informaiei: reprezentarea numerelor n virgul fix cu semn i fr semn,
reprezentarea numerelor reale (n virgul mobil) i reprezentarea caracterelor.
Vomvedeacntotdeaunaexistmaimultemodurincarepotficodificatedatele,
fiecaremodfiindutilntrunanumitcontext.
Vom vedea c deciziile n legtur cu numrul de bii pe care o arhitectur
particularifolosetepentrureprezentareaunorntregi(deexemplu32debii)au
oconsecinimportantasupranumruluidevaloricepotfireprezentateiasupra
operaiilorcesepotefectua.Sumaadouvalorintregireprezentatepe32debiis
arputeasnusepoatreprezentape32debiiceeaceducelaocondiienumit
depire(overflow).
Reprezentareanumerelornvirgulfix
ntrunsistemdenumeraiecuvirgulfix,fiecarenumrareacelainumrdecifre
iar punctul zecimal este ntotdeauna n aceeai poziie. De exemplu 0.23, 5.12,
9.11.nacesteexemplefiecarenumreformatdintreicifreiarpunctulzecimaleste
poziionat dup prima cifr. n sistemul de numeraie binar putem scrie de
asemenea astfel de numere: 11.10, 01.10 i 00.11. Diferena dintre reprezentarea
numerelor cu virgul fix pe hrtie respectiv n calculator este c n calculator
punctulzecimalnusescrienicierielseconsidercseaflantroanumitpoziie.
Sespunecpunctulzecimalseafldoarnminteaprogramatorului.
15
Intervaliprecizielanumerelecuvirgulfix
O reprezentare cu virgul fix poate fi caracterizat prin intervalul de valori
reprezentabile(adicdistanadintrecelmaimicicelmaimarenumr)iprecizia
(adic distana dintre dou numere consecutive). Pentru exemplu zecimal de mai
sus (cutrei cifre) intervalul este [0.00, 9.99]iar precizia este 0.01.Eroare n acest
cazestedindiferenadintredounumereconsecutive.Astfeleroareaeste0.01/2
= 0.005. Astfel, putem reprezenta orice numr din intervalul [0.00, 9.99] cu o
preciziede0.005.
Putem observa c exist un compromis ntre interval i precizie. Dac lum
intervalul [000, 999] se pot reprezenta numere dintrun interval mai mare dar i
eroarea este mai mare. De asemenea dac considerm intervalul [.000, .999]
eroareaeste.001.
n fiecare din cele trei cazuri numrul de numere reprezentabile este 1000,
indiferentundepunempunctulzecimal.
Intervalulnuesteobligatoriusnceapcu0.Unsistemzecimaldereprezentarea
numerelorcudoucifrepoateaveaintervalul[00,99]sauintervalul[50,+49]sau
[99,0].Desprereprezentareanumerelornegativevomdiscutamaimultntrunalt
paragraf.
Intervalul i precizia sunt dou aspecte importante n arhitectura calculatoarelor
pentrucambelesuntfiniten implementareaarhitecturii darinfiniten realitate,
aacutilizatorultrebuiesfiecontientdelimitrinmomentulncarencearcs
reprezinteinformaieexternntroformintern.
Axiomaasociativitiidinalgebrnuestentotdeaunavalabiln
reprezentareadatelor
timdelaalgebrc(a+b)+c=a+(b+c).Aceastaesteaxiomaasociativitii.
Dacconsidermunsistemnvirgulfixcuosingurcifrzecimalintervalulde
valoricepoatefi reprezentateste[9,9].Dacconsiderm a=7,b=4ic=3atunci
vom constata c a + (b+c) = 7+(4+ 3) = 7+1=8 ceea cea este corect i (a+b)+c =
(7+4)+(3)=11+3,dar11nuesteovaloarereprezentabilnacestsistemaacva
fi trunchiat la 1 i rezultatul final va fi 2 ceea ce este greit. Aadar, chiar dac
rezultatulfinalcorect(8)poatefireprezentatdacntruncalculintermediarapare
odepirerezultatulfinalnuvamaificorect.
Pentru a rezolva aceast problem nu se poate face nimic practic cu excepia
detectriidepiriiiainformriiutilizatoruluideapariiaei.
Bazedenumeraie
n aceast seciune vom vedea cum se lucreaz cu baze de numeraie diferite,
concentrnduneateniaasuprabazelor2(binar),8(octal)i16(hexazecimal).
16
Valoare =
n 1
b k
i = m
Valoarecifreidinpoziiaiestedatdebi.Avemncifrelaparteantreagimcifrela
parteazecimal.
Exemplu: s se evalueze numrul (541.25)10, unde indicele 10 reprezint baza.
Avem,n=3,m=2ik=10.
5x102+4x101+1x100+2x101+5x102=(500)10+(40)10+(1)10+(2/10)10+
(5/100)10=(541.25)10
Putemconsideraunaltexemplunbaza2(1010.01)2unde,n=4,m=2ik=2:
1 x 23 +0x 22 + 1x 21 + 0 x 20 + 0 x 21 + 1 x 22 = (8)10 + (0)10 + (2)10 + (0)10 +
(0/2)10+(1/4)10
Deaicirezultomodalitatedeconversiedintrobazarbitrarnbaza10folosind
metodapolinomial.
naceastmodalitatedereprezentareanumerelornbaza2introducemnoiunile
de bit cel mai semnificativ (bitul din stnga prin convenie) respectiv bit cel mai
puinsemnificativ(bituldindreaptaprinconvenie).
Conversiintrebaze
Am vzut cum se face conversia din baza 2 n baza 10 (metoda polinomial).
Conversiainversdinbaza10nbaza2estepuinmaicomplicat.Ceamaisimpl
metoddeconversieestesconvertimparteantreagiparteazecimalseparat.
Deexempluvremsconvertim23.375dinbaza10nbaza2.
Conversia prii ntregi se face prin mpriri succesive la baza n care se face
conversia i prin reinerea resturilor (metoda resturilor). Primul rest obinut
reprezintcifraceamaipuinsemnificativanumruluintregconvertit.Laadou
mpriredempritulestectuldelamprireaprecedent.Procesulsecontinu
pnseobinectulzero.
17
Putemconvertioricenumrdinbaza10noricealtbazprinmpririsuccesivela
bazancaresefaceconversia.
Conversia prii fracionare se face prin metoda nmulirii. Partea fracionar este
mai mic dect 1 iar prin nmulirea cu 2 rezultatul va fi mai mic dect 2 aa c
partea ntreag a acestui rezultat va fi chiar cifra cea mai semnificativ a prii
fracionare a numrului n baza 2. La pasul urmtor se nmulete cu 2 partea
fracionar a rezultatului obinut la pasul precedent i aa mai departe pn
obinemparteafracionar0saupncndobinemnumruldecifredorit.
Multiplicatorulestebazancaresefaceconversia.
Rezultatulfinalvafi(23.375)10=(10111.011)2
Fraciiperiodice
Cu toate c aceast metod de conversie funcioneaz pentru orice baze, se poate
ntmplacassepiardopartedinprecizientimpulconversiei.Nutoatefraciile
neperiodice din baza 10 au o reprezentarea neperiodic n baza 2. De exemplu
(0.2)10=(0.(0011))2.Aadar0.2dinbaza10esteofracieperiodicnbaza2.
18
Decesentmplaceasta?Ofracieneperiodicdinbaza10sepoatereprezentasub
formai/10k=i/(5kx2k)=j/2k,undej=i/5k.Aadar5ktrebuiesfieunfactoralluii.
Reprezentarebinarreprezentarezecimal
Majoritatea calculatoarelor folosesc intern baza 2 pentru reprezentarea datelor i
operaiiloraritmetice.Totuiexistunelecalculatoarecarefolosescinternbaza10
pentrureprezentareadateloraacnusuferdeproblemaconversiilorprezentat
maisus.Metodafolosiriiinterneabazei10nuestenumaipentruevitareaerorilor
ce pot aprea la conversii ci i pentru a evita procesul de conversie la unitile de
intrareaiieire,procespentrucaresealocdestuldemulttimp.
Reprezentrinbinar,octalihexazecimal
Numerelebinarereflectreprezentareainternefectivanumerelornmajoritatea
sistemelor de calcul. Totui aceast modalitatea de scriere a numerelor are
dezavantajul c numerele folosesc mult mai multe cifre dect n alte baze de
numeraie.Numerelenbaza2sereprezintcairurilungide0i1.Bazele8i16
se folosesc mult mai des pentru scrierea i afiarea numerelor din reprezentarea
intern pentru c aceste dou numere reprezint puteri ale lui 2 i conversia din
baza2nacestebazesepoatefacefoarterepedeifoartesimpluprintrunprocedeu
pe care l vom descrie n continuare. Exist o serie de avantaje practice pentru
reprezentareanumerelornacestedoubaze.
Cifrele bazei8sunt{0, 1,, 7}iarcifrelebazei16sunt{0,1,,9,A, B,C,D,E,F}
undeAesteocifrcarecorespundevaloriizecimale10,Blui11,,Flui15.
2
3
4
5
6
7
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Dintabelsevedecavemnevoiede3biipentruareprezentaoricecifrdinbaza8
ide4biipentruareprezentaoricecifrdinbaza16.ngeneralestenevoiedek
biipentruareprezentatoatecifrelebazei2k.
Pentruaconvertiunnumrdinbaza2nbaza8cremgrupedecte3cifrebinare
ncepnddelapunctulzecimalsprestngainspredreapta.Dacultimagrupnu
estecompletseadaugzero.Fiecareastfeldetripletseconvertetedirectnbaza
8,ncifracorespunztoare.
Deexemplu:
(10110)2=(010)2(110)2=(2)8(6)8=(26)8.
Pentruaconvertinbaza16seprocedeazanalognumaicnlocdegrupedecte3
cifrebinaresecreeazgrupedecte4cifre.
Exemplu:
(10110110)2=(1011)2(0110)2=(B)16(6)16=(B6)16.
Pentruaconvertiunnumrdintrobazxntroaltbazy(undexiysuntdiferite
de10)primadatsefaceconversiadinbazaxnbaza10(prinmetodapolinomial)
iarmaiapoidinbaza10nbazayprinmetodampririipentruparteantreagi
prinmetodanmuliriipentruparteazecimal.
Operaiilearitmeticealecalculatorului
Vom prezenta modul n care se efectueaz adunrile binare pentru c aceast
operaie este important n reprezentarea numerelor binare cu semn. Adunarea
binarsefacesimilarcumodulncarefacemadunareazecimal,aacumseveden
figur:
20
Numerecusemnnvirgulfix
Cele patru moduri de reprezentare a numerelor cu semn n virgul fix sunt:
magnitudinecusemn,complementfadeunu,complementfadedoiinotaiacu
exces. Vom prezenta fiecare din aceste moduri de reprezentare folosind numere
ntregipentruexemple.Dealungulprezentriisepoateconsultatabeluldemaijos
ncareaparreprezentriletuturornumerelorpetreibiintoatecelepatrumoduri.
Zecimal Fr Magn.
Comp.1 Comp.2 Exces4
semn cusemn
7
111
6
110
5
101
4
100
3
011
011
011
011
111
2
010
010
010
010
110
1
001
001
001
001
101
+0
000
000
000
000
100
0
100
111
000
100
1
101
110
111
011
21
110
111
101
100
110
101
100
010
001
000
1. Magnitudinecusemn
Este cea mai familiar reprezentare pentru noi ntruct o folosim la
reprezentareanumerelornbaza10.Semnulplussauminusnstnganumrului
indicdacnumrulestepozitivsaunegativ(+1210sau1210).nreprezentarea
magnitudine cu semn n baza 2, cel mai semnificativ bit este folosit ca bit de
semn. Bitul 0 semnific numr pozitiv, iar bitul 1 semnific numr negativ.
Restulbiilorreprezintvaloareaabsolutanumrului.
Exempludereprezentarepe8bii:
(+12)10=(00001100)2
(12)10=(10001100)2
Numrulnegativseformeazprinsimplaschimbareabituluidesemndin0n1.
Pentruzeroexistdoureprezentri(zeropozitivizeronegativ):(00000000)2,
(10000000)2
Pe8biiexist256secvenebinarediferite,iardinacesteadoar255reprezint
numeredistinctepentruc+0i0reprezintacelainumr.
2. Complementfadeunu
Operaia complement fa de unu este foarte simplu de efectuat: se convertesc
toibiiidin0n1idin1n0.Dacbitulcelmaisemnificativeste0numrul
este pozitiv, dac este 1 numrul este negativ, la fel ca i la reprezentarea
magnitudinecusemn.Aceastoperaiedeschimbareabiilordin0n1idin0
n 1 poart numele de complementare. Aici avem urmtoarele reprezentri
pentruvaloriledinexempluprecedent,totpe8bii:
(+12)10=(00001100)2
(12)10=(11110011)2
i aici avem tot dou reprezentri pentru zero aa c numrul de numere
distinctereprezentabilepe8biiestetot255.Acestmoddereprezentarenueste
foarte des folosit datorit faptului c este greu de efectuat operaia de
comparaieatuncicndexistdoureprezentripentruzero.
3. Complementfadedoi
Seformeazntrunmodasemntorcucomplementulfadeunudarnplusse
maiadun1.Dacrezultuncarryoutdelacelmaisemnificativbitatunciacel
bit se ignor. i n aceast reprezentare dac bitul cel mai semnificativ este 0
avemdeafacecuunnumrpozitiv,iardaceste1avemdeafacecuunnumr
negativ. Avantajul acestui mod de reprezentare este c aici nu avem dou
reprezentripentru0.
(+0)10=(00000000)2
22
Reprezentareazecimalcodificatbinar(BCDBinaryCodedDecimal)
Numerele pot fi reprezentate folosind baza 10 dar codificarea s se fac n baza 2
astfelnctfiecarecifrdinbaza10ocuppatrupoziiibinare.Aceastasenumete
codificare BCD. Exist 10 cifre i 16 secvene binare diferite de lungime 4 aa c
rezultatulestec6secvenesuntnefolosite.nfigursuntpatrucifrezecimaleaa
cavem104=10000secvenedebiivalidecutoatecexist216=65536secvene
debiidistinctepe16bii.
Cu toate c unele secvene de bii sunt nefolosite, formatul BCD este folosit n
calculatoare i aplicaii de bussines. n aceast reprezentare sunt mai puine
probleme n reprezentarea fraciilor neperiodice n baza 10 (fracii ce nu au o
reprezentareneperiodicnbaza2).Nuestenevoiedeasefaceconversialaintrare
dinbaza10nbaza2inicilaieiredinbaza2nbaza10.
Efectuarea operaiilor aritmetice asupra numerelor BCD cu semn nu este foarte
evident. Cu toate c suntem obinuii s folosim pentru baza 10 reprezentarea
magnitudine cu semn, n sistemele de calcul se folosete o alt metod pentru
reprezentareanumerelornbaza10.nsistemuldenumeraiecomplementfade
9,numerelepozitivesuntreprezentatenBCDdarcifraceamaidinstngaestemai
micdect5pentrunumerepozitiveimaimaresauegaldect5pentrunumerele
negative.Numrulnegativncomplementfade9seformeazprinscdereadin9
a fiecrei cifre. De exemplu, numrul +301 din baza 10 este reprezentat ca 0301
(saumaisimplu301)attncomplementfade9cticomplementfade10,aa
cumsevedenfigurademaisuslapunctula).Complementulfade9negativallui
este 9698 ceea ce se obine prin scderea din 9 a fiecrei cifre lui 0301 (figur
punctulb)).
Complementulfade10negativseobineadunndvaloare1lacomplementulfa
de 9 negativ, prin urmare reprezentarea n complement fa de 10 a lui 301 este
9698 +1 = 9699 (figur punctul c)). Pentru acest exemplu, intervalul de numere
pozitivecesepotreprezentaeste[0,4999]iarnumerelenegativesunt[5000,9999].
Reprezentareanumerelornvirgulmobil
nreprezentareanumerelorcuvirgulfixnumruldecifredinparteastng,
respectivdinparteadreaptapunctuluizecimalestefixat.nvirgulfixenevoie
demultecifrepentruareprezentaunintervaldevaloricaresaiboimportan
practic.Deexemplu,uncalculatorcarepoatereprezentanumerepnlauntrilion
24
Intervaliprecizienreprezentareanumerelornvirgulmobil
Reprezentareanvirgulmobilpermitereprezentareaunuiintervalmultmaimare
denumerecuunnumrmaimicdecifreprinseparareacifrelorfolositepentru
preciziedecifrelefolositepentruinterval.
Exemplu:Reprezentareanvirgulmobilnbaza10anumruluiluiAvogadro:
+6,023x1023.
Aici,intervalulestereprezentatdeoputerealui10iarpreciziaestereprezentatde
numrulnvirgulfix6,023.nacestcontextnumrulnvirgulfixsenumete
mantissausignificandalnumrului.Astfel,unnumrnvirgulmobilpoatefi
caracterizatprintruntripletdenumere:semn,exponentimantis.
Intervalulestedeterminatnprimulrnddenumruldecifredinexponent(aicise
folosescdou)idebazafolosit(aiciestebaza10)iarpreciziaestedeterminatn
primulrnddenumruldecifredinmantis(aicisuntpatru).Astfel,totnumrul
poatefireprezentatprinsemniasecifre,doupentruexponentipatrupentru
mantis.nfigurademaijosesteprezentatmodulncaretripletulsemn,exponenti
mantisarputeafiformatatncalculator.
Aceastmodalitatedegrupareacelortreielementevomvedeacesteutiln
momentulncaresecompardounumerereprezentatenvirgulmobil.Punctul
zecimalnuestestocatpentrucacestantotdeaunaestenaceeaipoziiencadrul
mantisei(punctulzecimalestedoarnminteaprogramatorului).
Dacavemnevoiedeunintervalmaimareisuntemdispuissacrificmpentru
aceastaprecizia,atunciputemfolosidoartreicifrepentrumantisiarpentru
25
Normalizareibitulascuns
Oproblemlareprezentareanumerelornvirgulmobilestecacelainumr
poatefireprezentatnmaimultemoduri,ceeacefacecaoperaiiledecomparaiei
celearitmeticesfiedificile.
Deexemplu:
3584.1x100=3.5841x103=.35841x104.
Pentruaevitaaceastproblemareprezentriimultiple,numerelenvirgulfix
suntpstratenformanormalizat.Punctulzecimalestedeplasatlastngasaula
dreaptaastfelnctsfienstngaceleimaisemnificativecifre,iarexponentuleste
ajustatnconsecin.nexempluldemaisusultimaformanumruluiesteforma
normalizat.Numrulzeronupoatefireprezentatastfel,aacpentruzeroseface
oexcepie:toatecifreledinmantissuntegalecu0.
Dacmantisaestereprezentatnbaza2atuncievidentvomaveacifraceamai
semnificativanumrului1(cifraceamaidinstnga).Majoritateaformatelorn
virgulmobil(inclusivIEEE754)nusalveazacestbit.Aceastcifrnutrebuie
stocatpentrucsesubnelegecesteacolo.Consecinaestecavemunbit
suplimentarpentruprecizie.Acestbitcelmaisemnificativsenumetebitulascuns.
Deexemplu,dacmantisanformnormalizateste.11010,atunciesuficientsse
stocheze1010.Bitulcelmaisemnificativ(dinstnga)estetrunchiat.
Reprezentareanumerelornvirgulmobilncalculator
Vomproiectaunformatsimpludestocareanumerelornvirgulmobilpentrua
ilustrafactoriiimportanicareintervin.Pentrumantisvomfolosioreprezentaren
magnitudinecusemn,cuunbitpentrusemnitreicifrehexazecimalepentru
mantis.Exponentulvafireprezentatcanumrpe3biinexces4cubaza16.
Formanormalizatanumruluiarepunctulzecimalnstngacelortreicifre
hexazecimale.Biiivorficombinainfelulurmtor:bituldesemnestebituldin
stnga,urmatde3biipentruexponent,urmaideceletreicifrehexazecimaleale
mantisei.Bazaipunctulzecimalnuvorfistocatenaceastform.
Motivulpentrucareamalesaceastreprezentareestecassepoatefectuacu
uurinoperaiiledecomparaienformampachetat(egalitate,inegalitate,mai
micsauegal,maimaresauegal).
26
Bitul de
semn
Trei bii
pentru
exponent
Punctul zecimal
Pentrualreprezentape(358)10nacestformatprocedmnfelulurmtor:
Primulpasesteconvertireanumruluinvirgulfixdinbazaoriginalntrun
numrnvirgulfixnbazaint.Conversianumruluidinbaza10nbaza16se
faceastfel:
Ctul
Restul
358/16
=
22
6
22/16=
1
6
1/16 =
0
Astfel,(358)10=(166)16.Urmtorulpasesteconvertireanumruluinvirgulfixn
numrnvirgulmobil:
(166)16=(166.)16x160.(Expresia160nesugereazfaptulcavemdeafacecubaza
16,pecndnumrul16trebuieinterpretatnbaza10defapt(160)10=(100)16).
Urmtorulpasestenormalizareanumrului:
(166.)16x160=(.166)16x163.
Ultimulpasestecompletareabiilornumrului.Numrulestepozitivaacpunem
bitul0cabitdesemn.Exponentuleste3,darlreprezentmnexces4,aac
secvenadebiipentruexponentsecalculeaznfelulurmtor:
011(+3)10
Exces4
+100(+4)10
Exponentexces4=111
nfinal,fiecarecifrnbaza16estereprezentatnbinarca:1=0001,6=0110,
6=0110.Secvenadebiivafi:
0 1
Bitul de
semn (+)
0
3
Exponentul
6
Partea zecimal
27
0 1
Bitul de
semn (+)
0
3
Exponentul
Partea zecimal
Dacbiiilipssuntinterpretaicafiind0,atunciaceastsecvendebiireprezint
(.164x163)16.
Aceastmetoddetrunchiereproduceoeroareneuniform,dinmomentcevalorile
00,01,10,11sunttoatetratateca0,aaceroareaestenintervalul[0,(.003)16].
Indiferentceformatfolosimpentrureprezentareanumerelornvirgulmobil,acel
formattrebuiecunoscutdetoiceicarevorsstochezerespectivsobinvalorile
reprezentate.IEEE(InstituteofElectricalandElectronicsEngineers),astandardizat
formateledereprezentarenvirgulmobil.StandardulIEEE754pentru
reprezentareanumerelornvirgulmobilestestandarduluniversalacceptati
folosit.Aceststandardlvomprezentantrunparagrafulterior.
28
Erorinreprezentareanumerelornvirgulmobil
Faptulcpreciziafinitintroduceerorinseamncartrebuisanalizmctde
mareesteaceaeroare(prineroarenelegemdistanadintredounumere
consecutivereprezentabile),idaceroareaesteacceptabilpentruaplicaia
noastr.Deexemplu,osurspotenialdeeroriestereprezentareanumruluiun
milioncanumrrealnvirgulmobiliscdereadineldeunmiliondeoriavalorii
1.Lasfritpoatesrmntotunmiliondaceroareaestemaimaredect1.
Pentruacaracterizaeroarea,intervalulipreciziafolosimurmtoarelenotaii:
b
baza
s
numruldecifresemnificativealepriifracionare
M
celmaimareexponent
m
celmaimicexponent
Numruldecifresemnificativealepriifracionareestereprezentatdes,ceeace
estediferitdenumruldebiidinparteafracionardacbazaestediferitde2(de
ex.nbaza16enevoiede4biipentrureprezentareafiecreicifre).Dacbazaeste
2katuncienevoiedekbiipentrureprezentareafiecreicifre.Folosireaunuibit1
ascunsmretevaloarealuiscu1cutoatecnumretenumruldenumere
reprezentabile.nexemplulprecedent,existtreicifresemnificativelapartea
fracionaranumruluinbaza16iexist12biiceformeazceletreicifre.Exist
treibiinexponentulreprezentatnexces4,ceeacepermitereprezentareaoricrui
exponentdinintervalul[22,221].Pentruacestcaz,b=16,s=3,M=3im=4.
nreprezentareanumerelornvirgulmobilsuntcincicaracteristicipecarele
lumnconsiderare:numruldenumerereprezentabile,numerelecuceamaimare
respectivceamaimicmantisidimensiuneaceleimaimarirespectivaceleimai
micidiferenedintredounumeresuccesive.
Numruldenumerereprezentabilepoatefideterminatdupformulademaijos:
Bituldesemnpoateluadouvalori(A).Numrultotaldeexponeniesteindicatla
poziia(B).Nutoatesecveneledebiisuntvalidentoatereprezentrile.
StandardulIEEE754pentrureprezentareanumerelorrealenvirgulmobil,are
celmaimicexponent126cutoatecexponentul,fiindreprezentatpe8bii,poate
29
Seobservcntre0iprimulnumrreprezentabilesteodistandestuldemare;
aceastasentmplpentrucreprezentareanormalizatnusuportsecvenede
biicecorespundnumerelordintrezeroiprimulnumrreprezentabil.
Celmaimicnumrreprezentabilestecelpentrucareexponentulipartea
fracionaraucelemaimicivalori.Celmaimicexponenteste2iceamaimic
partefracionarnormalizateste(.100)2.Celmaimicnumrreprezentabilestebm
xb1=bm1=221=1/8.
Celmaimarenumrreprezentabilestecelpentrucareexponentulipartea
fracionaraucelemaimarivalori.Ceamaimarepartefracionaresteceapentru
caretoibiiisuntegalicu1,adicnumrcareestecu23maimicdect1,din
momentcearetreicifrelaparteafracionar.Celmaimarenumrreprezentabil
estebMx(1bs)=21x(123)=7/4.
30
2x((Mm)+1)x(b1)xbs1+1=2x(1(2)+1)x(21)x231+1=33.
Seobservcdifereneledintredounumeresuccesivesuntmicipentrunumere
miciisuntmaripentrunumerelemari.Eroarearelativesteaproximativaceeai
pentrutoatenumerele.Dacfacemraportuldintrediferenadintredounumere
mariiunnumrmarerespectivraportuldintrediferenadintredounumeremici
iunnumrmicvomobservacrapoartelesuntaceleai.
Distan mare
Numr mare
Distan mic
Numr mic
Aicisafolositreprezentareapentruunnumrmic,nloculreprezentriipentru
celmaimicnumrdeoarecediferenadintrezeroiprimulnumrreprezentabil
esteuncazparticular.
Exemplu:
Sseconverteasc(9.375x102)10nbaza2notaietiinific.Rezultatultrebuies
aibformax.yyx2z.
Primadatconvertimnumruldinreprezentareanvirgulmobilnreprezentarea
nvirgulfixprinmutareapunctuluizecimalcudoupoziiiladreaptaiobinem:
0.09375.Maiapoiconvertimnumruldinbazazecereprezentarevirgulfixn
baza2reprezentarevirgulfixprinmetodanmulirii:
31
Astfel(.09375)10=(.00011)2.
Lasfritconvertimnumruldinreprezentareanvirgulmobilnforma
normalizatnbaza2:.00011=.00011x20=1.1x24.
StandardulIEEE754pentrureprezentareanvirgulmobil
Existnumeroasemoduridereprezentareanumerelornvirgulmobil,oparte
dinacesteafiindtrecutedejanrevist.Fiecarereprezentarearepropriile
caracteristicinceeacepriveteintervalul,preciziainumruldenumere
reprezentabile.Pentruambuntiportabilitateasoftwareuluiipentruaasigura
ouniformitateaacalculelorcunumerereprezentatenvirgulmobil,afost
dezvoltatstandardulIEEE754pentrureprezentareanumerelorbinarenvirgul
mobil(n1985).Toatearhitecturilenoiofersuportpentruaceststandard.
StandardulIEEE754,aacumlvomdescriencontinuare,trebuiesfiesuportatde
sistemuldecalculinudentreghardwareul.Aadarsepoatefolosiocombinaie
hardwaresoftwarepentruarespectastandardul.
Existdouformateprincipalenaceststandard:preciziesimplipreciziedubl.
nfigurademaijosseprezintschematicceledouformate:
Formatulnsimplprecizieocup32debii,iarformatulndublprecizieocup64
debii.
Bituldesemnestebitulcelmaisemnificativ(bituldinstnga).Urmeazexponentul
pe8biireprezentatnexces127pentrucaresecveneledebii00000000
respectiv11111111suntrezervatepentrucazurispeciale.Pentruformatulndubl
precizieexponentulsereprezintpe11biinexces1023.Urmeazpartea
fracionarreprezentatpe23debiiiexistunbitascunsnstngapunctului
zecimalaacrezultuntotalde24debiipentrusignificand.Laformatulndubl
32
Exempleledela(a)la(h)suntexempledenumerereprezentatecuformatulprecizie
simpl,iarexemplu(i)estereprezentareaunuinumrnpreciziedubl.
33
OimplementareaIEEE754trebuiesfurnizezecelpuinpreciziesimpl,celelalte
formatesuntopionale.Rezultatuloricreioperaiicunumerenvirgulmobil
trebuiesfiecorectpnlajumtatedebitdinbitulcelmaipuinsemnificatival
priifracionare.Aceastanseamncntimpuloperaiilortrebuiereinuiciva
biisuplimentaripentruprecizie(numiibiigard)itrebuiesfieometod
potrivitpentrurotunjirearezultatuluiintermediarlanumruldebiialfraciei.
ExistpatrumoduriderotunjirenstandardulIEEE754.Unuldinmoduri
rotunjetensprezero,altulnspreinfinitiaraltulrotunjetenspreminusinfinit.
Modulimplicitrotunjetelacelmaiapropiatnumrreprezentabil.njumtatedin
cazurirotunjireasevafacelanumrulpentrucarecifraceamaipuinsemnificativ
estepar.Deexemplu,1.01101serotunjetela1.0110pecnd1.01111se
rotunjetela1.1000.
Coduridecaractere
SetuldecaractereASCII
ASCII=American StandardCodeforInformationInterchangeeste prezentatn
figurademaijos.
Este un cod pe apte bii ceea ce permite reprezentarea a 27=128 de caractere
diferite. Poziiile de la 00 la 1F i poziia 7F sunt caractere speciale de control
34
folositepentrutransmisii,controlultipririiialtescopuricarenuaulegturcu
textul obinuit. Restul caracterelor sunt toate caractere afiabile: litere, cifre,
semne de punctuaie, spaiu. Cifrele de la 0 la 9 apar una dup alta, la fel i
literele mari, respectiv mici. Aceast organizare simplific manipularea
caracterelor.Pentruaschimbareprezentareauneicifrenvaloareaeinumeric
trebuiesscdemdincodulcifreivaloareahexazecimal(30)16.Pentruaobine
codullitereimiciatuncicndtimcodullitereimaricorespunztoaretrebuies
adunm la codul literei mici valoarea hexazecimal (20)16. Caracterul care
reprezint litera A are codul (41)16, iar caracterul care reprezint litera a are
codul(61)16.
SetuldecaractereEBCDIC
Problema cu setul de caractere ASCII este c pot fi reprezentate doar 128 de
caractere,ceeaceesteolimitaredestuldedrasticpentrumultetastaturicare
au multe alte caractere n plus fa de literele mari i mici. Codul EBCDIC
(ExtendedBinaryCodedDecimalInterchangeCode)esteuncodpe8biifolosit
intenspecalculatoaremainframeIBM.
CodulASCIIsereprezintpe7biidarsestocheazpe8(uncaracter/byte).De
cele mai multe ori se adaug un bit suplimentar de regul n poziia cea mai
semnificativ o octetului. Prin urmare folosirea codului EBCDIC nu necesit n
realitatea mai muli bii. n schimb la transmiterea serial a datelor bitul
suplimentar are un impact mai mare. n figura de mai jos prezentm codul
35
Codul de
caractere
EBCDIC
EBCDIC este un
cod pe 8 bii
SetuldecaractereUnicode
Codurile de caractere ASCII i EBCDIC suport setul de caractere Latin. Pe
lngacestsetdecaracterececoninelitereledelaalazexistoseriedealte
seturidecaracterendiferitelimbi(chinez,japonez,arabetc.)Evidentcnu
se poate face o asociere simpl, unulaunu, de la codul ASCII la orice set de
caractereaacsacreatunstandardpentrucaractereuniversalnumitUnicode
caresuportmajoritateacaracterelordincelemaiimportantelimbi.
Unicode este un standard n permanent dezvoltare. Se schimb pe msur ce
noi seturi de caractere sunt introduse i pe msur ce seturile de caractere
existenteevolueazireprezentarealorseperfecioneaz.
Unicode a fost creat pentru a permite schimbul, procesarea i afiarea textelor
scrise n diferite limbi i n diferite discipline tehnice din lumea modern. De
asemeneasuporttexteclasiceiistoricedinmultelimbiscrise.
StandardulUnicodefolosete16biipentrureprezentareacaracterelorinanul
2005aajunslaversiunea4.
Unicode atribuie un numr unic pentru fiecare caracter, este independent de
platform,independentdeaplicaie,independentdelimb.
Fundamental, un calculator lucreaz numai cu numere. Pentru a stoca n memorie
litere sau alte semne, este necesar ca fiecrui caracter si fie asignat un numr.
nainte de inventarea Unicodeului, au existat sute de sisteme diferite de codare
pentruasignareaacestornumere.Dar,niciunuldintreacesteanuafostsatisfctor,
36
Pentrumaimultedetaliiconsultaisitulwww.unicode.org
Concluzii
Datele n calculator sunt reprezentate sub form de bii ce pot fi recunoscui i
interpretai n diferite moduri: ca ntregi, ca numere n virgul fix, ca numere n
virgulmobilsaucaicaractere.CoduriledecaracterecumsuntASCII,EBCDICi
Unicodeaudimensiunifiniteipotfireprezentatentotalitatepeunnumrfinitde
bii.Numruldebiifolosiipentrureprezentareanumerelorestedeasemeneafinit
ceea ce nseamncputemreprezentadoarosubmulimeanumerelorreale(mai
exactraionale).Aceastaducelanoiuniledeinterval,precizieieroare.Intervalul
defineteceamaimiciceamaimarevaloarecepoatefireprezentat.Acestedou
valorisuntdeterminatedebazainumruldebiiaiexponentuluireprezentriin
virgul mobil. Precizia este determinat de numrul de bii folosii n
37
38
3. Logicadigital
n acest capitol vom trece n revist cteva principii de baz ale logicii digitale,
principii ce pot fi aplicate n proiectarea calculatoarelor digitale. La nceput vom
discutadesprelogiccombinaional,ncaredeciziilelogiceseiaudoarnfunciede
combinaii ale intrrilor. Dup care, vom trece n revist logica secvenial n care
deciziileseiaunfunciedeintrrilecurenteiintrrilemaivechi.Prinnelegerea
acestorprincipiidebazvomputeaproiectacircuitelogicecuajutorulcrorasepot
construicalculatoarecomplete.Vomncepecuparteafundamentalacalculatorului
digital,unitateacombinaionallogic.
Logiccombinaional
O unitate combinaional logic (UCL) transform o mulime de intrri ntro alt
mulimedeieiriconformuneiasauamaimultorfuncii.IeirileUCLsuntcalculate
strict ca funcie a intrrilor, iar ieirile sunt actualizate imediat ce intrrile se
schimb.UnmodeldebazpentruUCLestedatnfigurademaijos.
Omulimedeintrrii0in,vordeterminacaUCLsproducomulimedeieiri
conformfunciilorf0,f1,,fm.ntrunUCLnuexistunfeedbackdelaieirenspre
intrare.
IntrrileiieirileunuiUCLaudereguldouvalori:highilow.Cndvalorilesunt
luatedintromulimefinit,circuitelecarelefolosescsuntnumitedigitale.Un
circuitdigitalelectronicprimeteintrriifurnizeazieirincare0voli(0V)se
considercafiindvaloarealow,iar+5Vesteconsideratvaloareahigh.Aceast
convenienuestefolositpestetot:circuiteledevitezmarefolosescderegul
voltajemaijoase;unelecircuitealecalculatoareloropereazndomeniulanalog,n
caresuntpermiseocontinuitatedevalori.Oaplicaiencarecircuiteleanalogicear
fimaipotriviteestesimulareazborurilor,dinmomentcecircuiteleanalogice
aproximeazmaiexactmecanicaunuiavion,fadecircuiteleanalogice.
Cutoatecmajoritateacalculatoarelordigitalesuntbinare,existicircuitemulti
valoare.Unmediudetransmisiecapabilstransmitmaimultdedouvaloripoate
fimaieficientlatransmitereainformaieidectunmediucaretransmitedoardou
valori.Uncircuitdigitalmultivaloareestediferitfadeuncircuitanalogprinaceea
cuncircuitmultivaloarepoateluaovaloareadintromulimefinit,pecndun
circuitanalogicpoateluaoinfinitatedevalori.Utilizareacircuitelormultivaloare
39
Tabeledeadevr
n1854GeorgeBooleapublicatolucrareimportantnlegturcuoalgebr
pentrureprezentarealogicii.Booleerainteresatnscoatereanevidena
matematiciigndiriiiadezvoltatoreprezentareainformaieifactualecumarfi:
UaestedeschissauUanuestedeschis.AlgebraluiBooleafostdezvoltat
maidepartedeClaudeShannonnformapecareofolosimastzi.nalgebra
Boolean,presupunemexistenaunuipostulatdebazianumecovariabil
binariaosingurvaloarecarepoatefi0sau1.Aceastvaloarecorespunde
voltajelorde0respectiv+5menionatemaisus.Atribuireasepoatefaceinordine
invers.Pentruanelegecomportamentulcircuitelordigitale,putemabstractiza
corespondenafiziccuvoltajeisconsidermdoarvalorilesimbolice0i1.
OcontribuieimportantaluiBooleafosttabeleledeadevr,careprezintrelaii
ntrunformattabelar.SconsidermocamerncaresuntdountreruptoareA
iB,cecontroleazunbecZ.Unntreruptorpoatefisusaltuljossauambele
ntreruptoarepotfisus,respectivjos.Cndunsingurntreruptorestesusbecul
esteaprins.Cndambelentreruptoaresuntsussaujosbeculestestins.
Sepoateconstruiotabeldeadevrcareenumertoatevalorileposibilepecarele
potaveaceledountreruptoare,aacumsevedenfigurademaisus.ntabel,un
ntreruptorprimetevaloarea0dacestejosivaloarea1dacestesus.Beculeste
aprinsatuncicndvaloarealuiZeste1.
ntrotabeldeadevr,toatecombinaiileposibiledevariabilebinaredelaintrare
suntenumerateiovaloarecorespunztoarede0sau1esteatribuitfiecrei
combinaii.ntabeladeadevrdinfigurademaisus,ieireaZdepindedevariabilele
dinintrareAiB.Pentrufiecarecombinaiedevariabiledinintrareexistdou
valoripecareZlepoateavea:0i1.Putemalegeoaltconfiguraiepentru
ntreruptoare,ncarebeculesteaprinsdoaratuncicndambelentreruptoare
suntsussaujos,situaiencaretabeladeadevrsetransformn:
40
Porilogice
Dac enumerm toate atribuirile de setri posibile pentru ntreruptoare cu dou
intrrivomobine16atribuiriprezentatentabeluldemaijos:
AcestefunciisenumescfunciilogiceBooleene.Opartedinfunciiaunume
speciale.FunciaANDproducevaloarea1doarcndAiBauvaloarea1,pecnd
funciaORproducevaloarea1(true)atuncicndcelpuinunadinvalorileluiAsau
Beste1.Vomconsideracvaloareauneifunciiestefalseatuncicndarevaloarea
0.ExistifunciileFalseiTrue.Semnul+ntroexpresieBooleansemnificOR
logicinuimplicadunareaaritmetic.Juxtapunereaadouvariabile,deex.AB,
semnificoperaiaANDlogicntreceledouvariabile.
FunciileAiBnufacaltcevadectsrepetevalorileluiArespectivBdinintrare,pe
cndfunciile A i B ,complementeazvalorileluiAiB,producnd0atuncicnd
41
nfigurademaisusporileANDiORsecomportexactaacumamdescris.Buffer
ulnufacealtcevadectscopiezeintrareanieire.Cutoatecbufferulnuareo
semnificaielogic,elareunrolpracticimportantianumeaceladeamplificator,
permindunuisingursemnalscontrolezemaimulteporilogice.PoartaNOT
(numitiinvertor)complementeazintrarea.Cerculeuldinvrfultriunghiului
denotoperaiadecomplementare.
TotnfigurademaisussuntprezentateporilelogiceNAND,NOR,XORiXNOR,
mpreuncutablaoperaiei.
Simbolurilelogicedinfigurademaisussuntdoarformeledebaz,existndoserie
devariantecaresuntfolositeadesea.Deexempluputemaveaporilogicecumai
multdedouintrriaacumsevedenfigurademaijos(a).
42
Cerculeuldenotcomplementareidupcumsevede(b)poatefiplasatnunumai
la ieire ci i la intrare pentru a complementa intrarea. n funcie de tehnologia
folosit , unele pori logice pot produce dou ieiri complementate. Simbolul logic
corespunztor pentru aceast situaie prezint ambele ieiri, aa cum se vede n
figurademaisus(c).
Algebrboolean
ntabeluldemaijossuntprezentatectevaproprietialealgebreiBooleenecepot
fi aplicate expresiilor booleene logice. Postulatele (cunoscute sub numele de
postulateleluiHuntington)suntaxiomelealgebreiBooleene,aacnuaunevoiede
demonstraie. Teoremele pot fi demonstrate folosind postulatele. Fiecare relaie
prezentat are att o form AND ct i o form OR datorit principiului dualitii.
FormadualseobineprininterschimbarealuiANDcuOR.
43
FigurademaisusprezintechivalenauneiporiORcuopoartNAND,echivalen
lacaresepoateajungeculegealuiDeMorgan.
44
Formasumdeproduseidiagramelogice
Acumvomimplementaofunciemaicomplexdectsimpleleporilogiceianume
funciamajoritatecutreiintrridescrisdetabeladeadevrdemaijos.
Minterm
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
Index
0
1
2
3
4
5
6
7
1
00
0-side
1-side
Funciamajoritate(carepoateprimilaintrareunnumrimpardevalori)are
valoare1(true)atuncicndmaimultdejumtatedinintrrisunt1ivaloarea0n
cazcontrar,aacumesteilustratcuajutorulbalaneidinfigur.Aceastaesteo
operaieobinuitfolositnanumiteaplicaiiatuncicndieirilemaimultor
circuiteidenticecareopereazasupraaceloraidate,suntcomparateicelmai
marenumrdevalorisimilaredeterminieirea(poateficonsideratovotare).
Dinmomentceniciunadinporilelogiceprezentatepnacumnuimplementeaz
funciamajoritatenmoddirect,vomtransformafunciantroecuaieANDORcu
douniveluriiarmaiapoivomimplementafunciafolosindporilogicedin
mulimea{AND,OR,NOT}.Vorfidouniveluripentrucunniveldevariabile
asupracroraseaplicoperaiaANDvafiurmatdeunaltnivellacareseaplic
operaiaOR.Ecuaiabooleancaredescriefunciamajoritatearevaloareatruede
fiecaredatcndFestetruentabeladeadevr.
Omodalitatedeareprezentaecuaiilelogiceestefolosireaformeisumdeproduse,
cepoatefidefinitcaocoleciedeexpresiiformateprinoperaiaORifiecare
termenalexpresieiesteformatdinvariabileasupracroraseaplicoperaiaAND.
Ecuaialogicbooleancareexprimfunciamajoritateeste:
F = ABC + A BC + ABC + ABC
Semnul'+'semnificORiarjuxtapunereaAND.
45
nfiguresteprezentatmoduldereprezentareasituaieicndesteconexiune
respectivcndaceastalipsete,modcareesteprezentatinfigurademaijos.
Atuncicndunprodusconineexactoinstanafiecreivariabile,ntroanumit
form,complementatsaunu,acestasenumetemintermen.Unmintermenare
valoarea1pentruosingurliniedintabeladeadevradic,unnumrminimde
termeni(unul)vafacefunciatrue.Caalternativ,funciaesteuneoriscriscasum
logicpesteintrriletrue.Ecuaiapentrufunciamajoritatepoatefirescrissub
forma: F = 3,5,6,7 .
AceastformestepotrivitpentruformacanonicaecuaieiBooleene,care
coninedoarmintermeni.
46
Formaprodusdesume
Caduallaformasumdeproduse,oecuaieBooleanpoatefireprezentatnforma
produsdesume.Oastfeldeecuaieconineocoleciedevariabileasupracrorase
aplicoperaiaORiarasuprarezultateleoperaiilorORseaplicoperaieAND.O
metoddeaobineformaprodusdesumeestedeapornidelacomplementul
formeisumdeproduseideaaplicateoremaDeMorgan.Deexemplu,dacne
referimdinnoulatabeladeadevrafuncieimajoritate,complementulseobine
prinselectareatermenilorcareproduc0leieire,aacumsevedenecuaiademai
jos.
F = A BC + ABC + ABC + ABC
Complementareaambelorprivaducela: F = ABC + ABC + ABC + ABC ,iarprin
aplicareateoremeiDeMorgannforma W + X + Y + Z = W X Y Z vomobine:
F = ( ABC )( ABC )( ABC )( A BC ) .AplicnddinnouteoremaDeMorgannforma:
WXYZ = W + X + Y + Z vomobine:
F = ( A + B + C )( A + B + C )( A + B + C )( A + B + C )
Aceastultimecuaieestenformaprodusdesumeiconinepatrumaxtermeni,
ncarefiecarevariabilapareosingurdatnformacomplementatsaunu.Un
maxtermen,deex.(A+B+C),arevaloarea0pentruosingurliniedintabelade
adevr.Adic,estetruepentrunumrulmaximdeliniidintabeladeadevrfrase
reducelafunciatrivialcarearevaloareatruentotdeauna.Oecuaiecareeste
formatnumaidinmaxtermeninformaprodusdesume,sespunecestenforma
canonicprodusdesume.UncircuitORANDcareimplementeazecuaiaeste
prezentatnfigurademaijos:
FormaORANDestelogicechivalentcuformaANDOR.
47
Unmotivpentruutilizareformeiprodusdesumefadeformasumdeproduse
esteacelacaceastaarputeaducelaoecuaieBooleanmaimic.Oecuaie
Booleanmaimicimplicuncircuitmaisimplu.
Contoruldepoartaesteomsuracomplexitiiunuicircuitiseobineprin
numrareatuturorporilorlogice.Contoruldeintrripoartesteoaltmsur
pentrucomplexitateaunuicircuitiseobineprinnumrareatuturorintrrilorn
toateporilelogicecealctuiesccircuitul.
Componentedigitale
Circuitele digitale de nivel nalt sunt create de regul cu ajutorul unor colecii de
porilogicenumitecomponenteinucuporilogicesimple.Aceastapermitecantr
o anumit msur gradul de complexitate al circuitului s fie abstractizat i de
asemenea se simplific procesul de modelare a comportamentului circuitelor i
procesul de caracterizare a performanelor acestora. Aici vom prezenta cteva din
celemaiuzualecircuite.
Nivelurideintegrare
Pn acum neam concentrat atenia asupra circuitelor logice combinaionale. Din
moment ce am prezentat doar pori logice individuale nseamn c am lucrat la
nivelul de integrare la scal mic (small scale integration SSI), n care exist 10
pnla100decomponente/chip.(Aicitermenuldecomponentareunaltneles
i anume se refer la tranzistori i alte elemente discrete). Cu toate c uneori n
practicenevoieslucrmlaacestniveldeintegrarejos,deobiceipentrucircuitele
cu performane ridicate, microelectronica ne permite s lucrm la un nivel de
integraremultmaimare.nniveluldeintegraremedie(mediumscaleintegration
MSI)peunchipaparntre100i1000decomponente.nniveluldeintegraremare
(large scale integration LSI) avem un numr cuprins ntre 1000 i 10000 de
componente iar n nivelul de integrare foarte mare (very large scale integration
VLSI) avem peste 10000 de componente. Nu exist nite limite foarte fixe pentru
diferitelenivelurideintegrare,daresteimportantsfacemaceastdistinciepentru
comparareacomplexitiirelativeacircuitelor.
Multiplexor
Un multiplexor (MUX) este o component care conecteaz o serie de intrri la o
singurieire.OdiagramblocitabeladeadevrcorespunztoarepentruunMUX
4la1suntprezentatemaijos.
48
IeireaFvaaveavaloareaintrriiselectatedeliniiledecontrolAiB.Deexemplu,
dacAB=00,atuncivaloareadepeliniaD0(0sau1)vaaprealaF.CircuitulAND
ORcorespunztoresteprezentatnfigurademaijos:
AtuncicndseproiecteazcircuitecefolosescMUX,sefoloseteformaabstractizat
(cutia neagr) n locul formei detaliate din figura de mai sus. Astfel putem
abstractizaopartedindetaliiatuncicndproiectmcircuitecomplexe.
MUXpoatefifolositpentru aimplementafunciiBooleene. nfigurademaijosun
MUX8la1implementeazfunciamajoritate.
49
Datele de intrare sunt luate direct din tabela de adevr a funciei majoritate, iar
datele de intrare pentru control sunt atribuite variabilelor A, B i C. MUX
implementeazfunciamajoritateprintransmitereaunui1delaintrareafiecrui
mintermenlaieire.Intrarea0marcheazporiunidinMUXcarenusuntnecesare
pentru implementarea funciei, iar rezultatul o serie de pori logice rmn
neutilizate. Cu toate c poriuni din MUX sunt aproape ntotdeauna neutilizate n
implementarea funciilor Booleene, multiplexoarele sunt folosite pe scar larg
pentru c ele simplific procesul de proiectare, iar modularitatea lor simplific
implementarea.
Ca un alt exemplu, s considerm implementarea unei funcii de trei variabile
folosind un MUX 4la1. n figura de mai jos este prezentat o tabel de adevr cu
treivariabileiunMUX4la1careimplementeazfunciaF.Vompermitecadatele
deintraresfieluatedinmulimea{0,1,C, C }iargrupareaseobineaacumeste
prezentatntabeladeadevr.AtuncicndAB=00,F=0,indiferentdevaloarealui
C.CndAB=01,F=1,indiferentdevaloarealuiC.CndAB=10,F=CiarcndAB=
11,F= C .AstfelputemimplementaofunciecutreivariabilefolosindunMUXcu
douvariabile.
50
Demultiplexor
Demultiplexorul (DEMUX) este opusul multiplexorului. O diagram bloc pentru un
demultiplexor1la4itabeladeadevrcorespunztoaresuntprezentatenfigura
demaijos.
UnDEMUXtrimitesinguraintrare,D,laundinieiriFi,confirmvalorilorintrrilor
decontrol.CircuitulcorespunztorunDEMUXesteprezentatnfigurademaijos:
Rolul unui DEMUX este de a transmite date de la o singur intrare la mai multe
ieiri, de ex. chemare celui mai apropiat lift prin simpla apsare a unui buton.
DEMUXnuestefolositderegullaimplementareafunciilorBooleene,cutoatecse
poatefaceiacestlucru.
Decodor
Un decodor transform o codificare logic ntro locaia spaial. Exact una din
ieirile decodorului este high (valoarea logic 1), fiind determinat de configuraia
51
intrrilordecontrol.Odiagramblociotabeldeadevrpentruundecodor2la4
suntprezentatenfigurademaijos.
Diagramlogicasociatcareimplementeazdecodorulesteprezentatnfigurade
maijos:
Undecodorpoatefifolositpentruacontrolaaltecircuite,daruneorinuestepotrivit
pentru activarea altor circuite. Din acest motiv, adugm o intrare de activare
decodorului,caredetermintoatecatoateieirilesfie0dacesteaplicatlaintrare
un0.(ntreunDEMUXiundecodercuintrarea1existoechivalenlogic).
Oaplicaiepentrudecodorestelatranslatareaadreselordememorienlocaiifizice.
DecodoarelepotfifolositeilaimplementareafunciilorBooleene.Dinmomentce
fiecare linie de la ieire corespunde unui alt mintermen, o funcie poate fi
implementat prin efectuarea operaiei OR logic asupra ieirilor ce corespund
mintermenilorrealiaifunciei.Deexemplu,nfigurademaijos,undecodor3la8
implementeazfunciamajoritate.Ieirileneutilizatermndeconectate.
52
Encodercuprioritate
Unencodertransformomulimedeintrrintrocodificarebinaripoatefiprivit
caopusulunuidecoder.Unencodercuprioritateesteuntipdeencoder,lacareeste
impus o ordine n valorile de intrare. O diagram bloc i tabela de adevr
corespunztoare este prezentat n figura de mai jos pentru un encoder cu
prioritate4la2.
OschemdeprioritateesteimpusasupraintrrilorncareAiareoprioritatemai
mare dect Ai+1. Ieire, format din doi bii, poate lua valorile 00,01, 10 sau 11 n
funciedecareintrrisuntactive(auvaloarealogic1)ideprioritatealorrelativ.
Cndnuesteactivniciointrare,ieireavaaveaovaloareaimplicitncareA0are
prioritate(F0F1=00).
Encoderulcuprioritateestefolositcaarbitrupentrudiferitedispozitivecefolosesc
aceleairesurse.Diagramaunuicircuitcereprezintunencodercuprioritate4la2
esteprezentatnfigurademaijos.
53
Tablourilogiceprogramabile
Un tablou logic programabil (progammable logic array PLA) este o component
formatdintromatriceANDconfigurabilurmatdeomatriceORconfigurabil.n
figurademaijosesteprezentatunPLAcutreiintrriidouieiri.Celetreiintrri
A,BiCicomplementelelorsuntdisponibilelaintrrilefiecreiadinceleoptpori
AND care genereaz 8 termeni (fiecare termen fiind un produs). Ieirile porilor
ANDsuntdisponibilelaintrareafiecreiporiORcaregenereazfunciileF0iF1.
Osiguran(engl.fuse)programabilesteplasatnfiecarepunctdeintersecien
matricile AND i OR. Matricile sunt configurate pentru diferite funcii prin
54
dezactivareasiguranelor.Atuncicndosiguranestedezactivatlaointrarentr
o poart AND, poarta AND se comport ca i cum intrarea este ntotdeauna 1.
Analog,ointraredezactivatlaopoartORnPLAsecomportcaicumintrarea
estentotdeauna0.
CaexempludeutilizareaPLA,vomimplementafunciamajoritatefolosindunPLA
3x2 (trei variabile de intrare x dou ieiri). n figura de mai jos este prezentat n
modsimplificatPLAulcorespunztor.
CeleaseintrrinfiecarepoartANDaicisuntreprezentateprintrosingurlinie
iarceleoptintrrinfiecaredinceledouporiORsuntreprezentatedeasemenea
printro singur linie (pentru simplitate). Cercurile din punctele de intersecia a
liniilorindicloculncaresuntfcuteconexiunile.Dinfigurseobservcfuncia
majoritateesteimplementatfolosinddoarjumtatedinPLA,cealaltjumtatefiind
disponibilpentruimplementareaalteifuncii.
PLAurilesuntcomponentelecelemaidesfolositencadrulcircuitelordigitale.Un
avantaj al utilizrii PLAurilor este c au doar cteva intrri i cteva ieiri, iar
numrul porilor logice dintre intrri i ieiri este mare. Este important
minimizareanumruluideconexiunilalimiteleunuicircuitpentruamodularizaun
sistemncomponentediscretecaresuntproiectateiimplementateseparat.
Un PLA se poate reprezenta ca o cutie neagr aa cum se vede mai jos (pentru a
respectaprincipiulmodularitii).
55
Exemplu:sumatorcupropagaredetransport
Ca un exemplu al modului n care un PLA este folosit la proiectarea circuitelor
digitale vom considera n continuare un circuit care adun dou numere binare.
Adunareabinarseefectueazsimilarcumodulncareefectumadunareazecimal
aacumsevedenfigurademaijos.
Tabeladeadevrdemaisusdescrieunelementnumitsumatorcomplet,prezentat
schematicnfigurademaisus.Unsumatorincomplet(engl.halfadder)arputeafi
56
folositpentruadunareacelormaipuinsemnificativibii,pentrucnaceapoziie
nu avem carryin. Un sumator incomplet adun doi bii i produce o sum i un
transport(carryout).
Putem nlnui patru sumatori complei pentru a forma un sumator suficient de
mare pentru adunarea unor numere reprezentate pe 4 bii. Schema unui astfel de
circuitesteprezentatnfigurademaijos.
Sumatoruldinparteadreaptareuncarryinegalcuzero.
Se poate observa c o anumit sum nu poate fi calculat pn cnd nu a fost
calculat transportul de la sumatorul complet precedent. Circuitul se numete
sumator cu propagare de transport pentru c valorile corecte pentru bitul de
transportsepropagprincircuitdeladreaptalastnga.Cutoateccircuitulparea
fiparalele,nrealitatebiiisumsuntcalculaiserialdeladreaptalastnga.Acesta
esteundezavantajimportantalcircuitului.
O modalitate de a proiecta sumatori complei este utilizarea unui tablou logic
programabil.
57
Logicsecvenial
Flipflop
Mainicunumrfinitdestri
58
4. Aritmetic
Introducere
Dupceamprezentatmoduldereprezentareanumerelorncalculatorvomtrecen
revistcelepatruoperaiifundamentalecepotfiefectuatecuacestenumere:
adunarea,scderea,nmulireaimprirea.Primadatvomprezentamoduln
careacesteoperaiiseefectueazasupranumerelorreprezentatenvirgulfixiar
maiapoiasupranumerelorreprezentatenvirgulmobil.
Adunareaiscdereanumerelornvirgulfix
Vomtrecenrevistadunareiscdereaattanumerelorcusemnctia
numerelorfrsemn.Nevomconcentramaimultpenumerelereprezentaten
complementfadedoidatoritfaptuluicaceastreprezentareestefolosit
aproapenexclusivitatensistemelemodernedecalcul.Vomtrecenrevisti
operaiileefectuatecunumerereprezentatencomplementfadeunu(acesteaau
oimportanndomeniicumarfireelistica)inBCD(importantepentru
calculatoareledebuzunar).
Adunareaiscdereancomplementfade2
Vomprezentaadunareanumerelorcusemnreprezentatencomplementfadedoi.
nmodimplicitvomprezentaiscdereapebazaprincipiului:
ab=a+(b).
Putem obine opusul unui numr prin complementarea lui (i adunarea lui 1 dac
reprezentarea este n complement fa de doi). Acest fapt este important pentru
hardwarentructnuenevoiedecreareadehardwarespecializatpentruoperaiile
descdere.
Vommodificainterpretareapecareodmrezultateloroperaiilordeadunareatunci
cndadunmdounumerereprezentatencomplementfadedoi.Pentruaceasta
vomconsiderafigurademaijos:
59
00001010(+10)10
+00010111(+23)10
00100001(+33)10
00000101(+5)10
+11111110(2)10
Elimin(1)00000011(+3)10
11111111(1)10
+11111100(4)10
Elimin(1)11111011(5)10
60
Depire
Atuncicndadunmdounumeremaricuacelaisemnpoatesaparsituaiade
depire, adic rezultatul nu se poate reprezenta pe numrul de bii folosii n
reprezentare. De exemplu numerele (+80)10 i (+50)10 reprezentate pe opt bii n
complementfadedoi.Rezultatulartrebuisfie(+130)10dar,aacumvedemmai
jos,rezultatuleste(126)10.
01010000(+80)10
+00110010(+50)10
10000010(126)10
Celmaimarenumrcesepoatereprezentape8biincomplementfade2este
127 aa c este evident c 130 nu poate fi reprezentat. Rezultatul interpretat ca
numrfrsemnpe8biiestentradevr130.
n general, dac se adun dou numere cu semn opus, atunci nu poate s apar
depire. Motivul intuitiv pentru acest rezultat este c valoarea absolut a
rezultatului nu poate fi mai mare dect valoare absolut a operandului mai mare
(celpozitiv).Aadar,putemdadefiniiadepiriilacomplementfade2:
Dacnumerelecareseadunauacelaisemnirezultatularesemnopus,atunciare
locdepireirezultatulnuestecorect.Dacnumereleceseadunausemneopuse
atunci nu apare niciodat depire. O metod alternativ de depistare a depirii
este:dactransportulnbitulcelmaisemnificativdiferdetransportulceiesedela
bitulcelmaisemnificativatunciinumaiatunciavemdepire.
Dacunnumrpozitivsescadedintrunnumrnegativirezultatulestepozitiv,sau
dac un numr negativ se scade dintrun numr pozitiv i rezultatul este negativ,
atunciavemdepire.Dacnumerelecesescadauacelaisemnatuncinuvaapare
niciodatdepire.
Implementareahardwareaunorsumatoriiaunorscztori
nfigurademaijosesteprezentatunsumatorcupropagaredetransportdepatru
bii.
61
DounumereAiBseadundeladreaptalastnga,crendosumiuntransport
lafiecarepoziiebinarreprezentatprintrunsumatorcomplet.Sumatoruleste
modelatdupmodulncareefectumoperaiedeadunarenormal.
nfigurademaijospatrusumatoricupropagaredetransportsuntnlnuiipentru
acreaunsumatorpe16bii.Sumatorulcompletdinparteadreaptarecatransport
deintrarevaloareazero.
Scdereanumerelorbinaresefacentrunmodsimilarcuadunarea.Putemscdea
unnumrdintraltulprinefectuareaoperaieintrocoloanlaunmomentdat,
sczndcifreledesczutuluibidincifrelescztoruluiai,pemsurcemergemdela
dreaptalastnga.Lafelcainscdereazecimal,dacdesczutulestemaimare
dectscztorulsaudacesteunmprumutdelaocifrprecedentatunci
mprumutultrebuiessepropagelaurmtorulbitsemnificativ.Figurademaijos
prezinttabeladeadevriuncircuitpentruscdere.
62
Scztoricompleipotfinlnuiipentruaformascztoricumprumutnacelai
modcaisumatoriicomplei.nfigurademaijosesteprezentatunscztorcu
mprumutpepatrubiiformatdinpatruscztoricomplei:
Ometodalternativpentruaimplementascdereaestedeaformacomplementul
fadedoinegataldesczutuluiisladunmlascztor.Circuituldemaijos
efectueazattadunareactiscdereaunornumerereprezentatepepatrubiin
complementfadedoiprinpermitereacaintrrilebisfiecomplementateatunci
cndvremsfacemscdere.
63
Adunareiscderencomplementfadeunu
Reprezentareancomplementfadeununusemaifolosetenziuadeastziprea
multncalculatoarelemodernedarsafolositcndvalaprimelecalculatoare.
Adunareancomplementfadeunuestetratatdiferitdeadunareancomplement
fadedoi:transportulcareieselapoziiabituluicelmaisemnificativnueste
eliminat,ciesteadunatnapoilapoziiabituluicelmaipuinsemnificativaacumse
vedenfigurademaijos:
64
Pentruavizualizamaibinemotivulpentrucareenevoiedeendarroundcarry
prinexaminareacerculuinumerelorreprezentatepe3biincomplementfade
unu.
nacestcercsuntdoupoziiipentruzero.Atuncicndadunmdounumere,
traversmatt+0cti0,aactrebuiescompensmfaptulczeroesteparcurs
dedouori.Endarroundcarryavanseazrezultatulcuopoziiepentruaceast
situaie.
nmulireaimprireanumerelornvirgulfix
nmulireaimprireanumerelorreprezentatenvirgulfixpoatefiefectuatcu
operaiideadunare,scdereideplasare.ncontinuarevomprezentametode
pentruefectuareaacestoroperaiiattpentrunumerefrsemnctipentrucele
cusemn.
nmulireanumerelorfrsemn
nmulireanumerelorbinarefrsemnsefacentrunmodsimilarcumodulncare
facemoperaiecucreionulpehrtie.nfigurademaijosprezentmmodulncarese
realizeazacestprocespentrudointregifrsemn:
Fiecarebitalmultiplicatoruluidetermindacmultiplicandul,deplasatnmod
corespunztorsprestngaesteadunatlarezultatulfinal.Dacnmulimdou
65
numerefrsemnreprezentatepenbiirezultatulvaavealungimeade2nbii.n
figurademaisusnmulireaadoioperanzipepatrubiivaproduceunrezultatpe
optbii.Dacnmulimdounumerecusemnreprezentatepenbii,rezultatulseva
reprezentapemaxim2(n1)+1=2n1bii.
Maijosprezentmschemapentruoimplementarehardwarepentrunmulirea
ntregilorpe4bii,ncareesteunsumatorpepatrubii,ounitatedecontrol,trei
registredepatrubiiiunregistrudeunbitpentrutransport.
Pentruanmulidounumere,multiplicandulesteplasatnregistrulM,
multiplicatorulesteplasatnregistrulQiarregistreAiCseseteazlazero.n
timpulnmulirii,bitulcelmaipuinsemnificativalmultiplicatoruluidetermin
dacmultiplicandulesteadunatlaproduslafiecarepas.Dupcemultiplicanduleste
adunatlaprodus,multiplicatoruliregistrulAsuntdeplasateladreaptasimultan.
Figurademaijosprezintprocesuldenmulire.
66
IniialCiAauvaloareazero,iarMiQconinmultiplicandulrespectiv
multiplicatorul.BitulcelmaidindreaptaalluiQeste1,aacmultipicatorulMeste
adunatlaprodusnregistrulA.RegistreAiQformeazprodusulpe8bii,darn
registrulAseadunmultiplicandul.DupceMesteadunatlaA,registreAiQsunt
deplasailadreapta.DinmomentceAiQsuntlegaipentruaformaprodusulde8
bii,bitulcelmaidindreaptaalluiAestedeplasatnbitulcelmaidinstnga(celmai
semnificativ)alluiQ.BitulcelmaidindreaptaalluiQesteeliminat,Cestedeplasat
nbitulcelmaisemnificativalluiAiCdevinezero.
Procesulcontinupentrutoibiiidinmultiplicator.Laadouaiteraie,bitulcelmai
dindreaptaalluiQestedinnou1,aacmultiplicandulesteadunatlaAi
combinaiaC/A/Qestedeplasatladreapta.Laultimaiteraie,bitulcelmaidin
dreaptaalluiQeste1aacMesteadunatlaAicombinaieC/A/Qestedeplasat
ladreapta.ProdusulesteconinutnregistreAiQ,ncareAconineparteaceamai
semnificativiarQconineparteaceamaipuinsemnificativ.
mprireanumerelorfrsemn
Lamprireabinar,ncercmsscdemmpritoruldindemprit,folosind
numrulminimdebiindemprit.Dinfigurademaijosreiesec(11)2nuncape
n0sau01,darncapen011.
mprireabinarncalculatorpoatefirezolvatsimilar,numaicsingurulmodn
careputemsdecidemdacmpritorulncapendempritestedeaface
efectivoperaiadescdereisverificmdacrezultatulestenegativ.Dac
rezultatulestenegativatunciscdereatrebuieanulatprinadunareanapoia
mpritorului.
nfigurademaijosprezentmschemaunuidivizorserialpentrunumerepepatru
bii.
67
Aiciavemunsumatorde5bii,ounitatedecontrol,unregistrude4biipentru
dempritulQidouregistrede5biipentrumpritorulMrespectivpentru
restulA.Registrede5biisuntfolosiipentruAiMnloculunorregistrede4bii,
datoritfaptuluicenevoiedeunbitsuplimentarcaresindicesemnulrezultatului
intermediar.Cutoatecaceastmetoddemprireestepentrunumerefrsemn,
estefolositioperaiadescdereaacputemobineirezultatenegative,iar
bitulsuplimentarestepentrubituldesemn.
Pentruampridounumerepe4bii,dempritulesteplasatnregistrulQ,
mpritorulesteplasatnregistrulMiarregistrulAibitulcelmaisemnificatival
luiMsuntsetatelazero.BitulcelmaisemnificativalluiAdetermindac
mpritorulesteadunatladempritlafiecarepas.Aceastaestenecesarpentrua
restauradempritulatuncicndrezultatulestenegativ.Cndrezultatuleste
pozitiv,celmaipuinsemnificativbitalluiQestesetatla1,ceeaceindicfaptulc
mpritorulncapendemprit.
nfigurademaijosesteprezentatprocesuldemprire.
68
nmulireaimprireanumerelorcusemn
Dacaplicmmetodeledenmulireimpriredescrisepentrunumerefrsemn
lanumerecusemn,vomntmpinauneleprobleme.Considermnmulirealui1cu
1folosindoreprezentarepe4biiaacumestenfigurademaijos:
Aritmeticnvirgulmobil
Operaiile aritmetice cu numere reprezentate n virgul mobil pot fi efectuate
folosindmetodeledescrisepentrunumerelereprezentatenvirgul fix,cucteva
ajustri.ncontinuarevomprezentamodulncaresefacacesteoperaiinbaza2i
baza10.
Adunareaiscdereanumerelornvirgulmobil
Aritmetica pentru numerele reale difer de aritmetic pentru ntregi ntruct
trebuietratatattexponentulctimantisaoperanzilor.Lafelcailaaritmetican
baza 10 utiliznd notaie tiinific, exponenii operanzilor trebuie s fie egalizai
pentru adunare i scdere. Prile fracionare sunt apoi adunate sau sczute iar
rezultatulsenormalizeaz.
Acestprocesdeajustareapriifracionareirotunjireapoateducelapierdereade
precizienrezultat.Sconsidermadunareaadounumererealefrsemn(.101x
23+.111x24)ncareparteafracionararetreicifresemnificative.Primadatvom
ajusta exponentul mai mic pentru a fi egal cu cel mai mare i vom modifica n
consecinparteafracionar.Astfelvomavea:.101x23=.010x24,pierzndastfel
.001x23dinprecizienacestproces.Sumacarerezulteste:
(.010+.111)x24=1.001x24=.1001x25
iarrotunjindla3cifresemnificativeavem:.100x25,pierzndnc.001x24din
precizie.
Numerele reale au o structur complicat (mantisa este pstrat n reprezentare
magnitudine cu semn, exponentul este reprezentat n exces iar bitul de semn este
separat)daraceaststructurpermiterealizareaoperaiilordecomparaie(<,>,=)
fr a fi necesar despachetarea numrului. naintea unei operaii de adunare,
numrul trebuie despachetat din reprezentarea intern (IEEE754): exponentul i
mantisatrebuieextrase,trebuieefectuateoperaiileiarmaiapoirezultatultrebuie
renormalizatirotunjitiarsecvenadebiiesterempachetatnformatulintern.
Lacompararebituldesemnestecelmaiimportantiprinurmareestebitulcelmai
semnificativ n formatul IEEE754. Dup aceea cel mai important n compararea a
dounumererealeesteexponentul,dinmomentceomodificarede1nexponent
schimbnumrulcuunfactorde2(nbaza2),pecndoschimbare1chiarin
cel mai semnificativ bit al prii fracionare va avea un efect mai mic asupra
numrului.
Pentruainecontdebituldesemn,fraciilereprezentaten magnitudinecusemn
sunt reprezentate ca ntregi i sunt convertite n complement fa de 2. Dup
operaia de adunare sau scdere n complement fa de 2, apare nevoia de a
normalizarezultatulideaajustabituldesemn.Rezultatulestemaiapoiconvertit
napoinformamagnitudinecusemn.
70
nmulireaimprireanumerelornvirgulmobil
nmulireaimprireanumerelorreprezentatenvirgulmobilsefacesimilarcu
adunarea i scderea numerelor reprezentate n virgul mobil, cu excepia c
semnul, exponentul i mantisa rezultatului pot fi calculate separat. Dac operanzii
auacelaisemn,atuncisemnulrezultatuluiestepozitiv.Semnediferitevorproduce
semnul rezultatului negativ. Exponentul rezultatului nainte de normalizare se
obine prin adunarea exponenilor operanzilor surs la nmulire i prin scderea
lorlamprire.Seefectueazoperaiadoritiurmeaznormalizarea.
Sconsidermcfolosimfraciipe3biipentruaefectuaoperaianbaza2:(+.101
x 22) x (.110 x 23). Semnul operanzilor difer, ceea ce nseamn c semnul
rezultatuluivafinegativ.Efectumnmulireaacadunmexponeniiirezultatul
va fi 2+ 3 = 1. nmulim partea fracionar, ceea ce ne d .01111. Normalizarea
produsuluiireinereaadoar3biivaproduce.111x22.
Un alt exemplu, (+.110 x 25) / (+.100 x 24). Operanzii au acelai semn, cea ce
nseamncrezultatulvaaveasemnpozitiv.Scdemexponeniiiobinem54=1.
mprimfraciile,ceeacesepoatefacenmaimultemoduri. Dactratmfraciile
ca ntregi fr semn, atunci vom avea 110/100 = 1 rest 10. Ceea ce dorim este o
secvencontigudebiicereprezintfracianlocdevaloriseparatepentructi
rest, aa c putem scala dempritul la stnga cu dou poziii, ceea ce ne d:
11000/100 = 110. Dup aceea deplasm rezultatul la dreapta cu dou poziii i
obinem1.10.nconcluzie,rezultatulmpririilui(+.110x25)la(+.100x24)este
(+1.10x21).Dupnormalizare,rezultatulfinaleste:(+.110x21).
Studiudecaz:AritmeticaBCD
Aritmeticancalculatoareledebuzunarsefacenbaza10,nlocdebaza2.Aceste
calculatoare trebuie s fie mici i ieftine aa c numerele se reprezint n BCD
folosindpatrubiipentrufiecarecifrzecimal.Reprezentareanbaza2arnecesita
conversii de baze pentru care e nevoie de resurse destul de mari. O unitatea
aritmeticilogicde4biipoatefaceoperaiilearitmeticeserial,cifrcucifr.
lnxilogx,funciitrigonometriceialtefuncii,toatefolosindaritmeticanbaza10.
Calculatorul putea afia 10 cifre semnificative dar toate calculele se fcea folosind
12 cifre, ultimele dou cifre (cele mai puin semnificative) fiind folosite pentru
trunchieriieroriderotunjire.Cutoatecacestcalculatornziuadeastzipareo
relicv,metodelearitmeticesuntncrelevante.
ncontinuarevomprezentatehnicilegeneralepentruefectuareaadunriiiscderii
nvirgulfiximobilfolosindBCD.
AdunareiscdereBCD
Sconsidermadunareanumerelor(+255)10i(+63)10reprezentatenBCD.
FiecarecifrBCDocuppatrubiiiadunareaseefectueazcifrcucifr(nubitcu
bit), de la dreapta la stnga, aa cum am face n modobinuit. Rezultatul (+318)10
esteprodustotnformatBCD.
Scderea n BCD se efectueaz similar cu modul n care se efectueaz scderea n
complement fa de doi (se adun opusul desczutului) cu excepia faptului c se
folosetecomplementfade10nlocdecomplementfade2.
Laefectuareaoperaiei(255+(63)=192)10,formmcomplementulfade9allui
63dupcareadunm1pentruaobinecomplementulfade10.
Adunareasepoateacumefectuaaacumesteprezentatnfigurademaijos:
72
UnsumatorcompletBCDtrebuiesadunedoucifreBCDiuntransportitrebuie
s produc o cifr BCD ca rezultat al adunrii i un transport la ieire, toate
reprezentatenexces3.nfigurademaijosesteprezentatunastfeldesumatorcare
folosetesumatoarecompletencomplementfadedoi.
73
CifreleBCDreprezentatenexces3suntadunatencelepatrusumatoarecomplete
n complement fa de doi din partea superioar. Din moment ce fiecare operand
este reprezentat n exces 3, rezultatul este n exces 6. Pentru a stoca rezultatul n
exces3,trebuiesscdem3dinrezultat.Caoalternativputemaduna13larezultat
pentruc163=16+13ntroreprezentarepepatrubii,eliminndtransportul
care iese de la bitul cel mai semnificativ. n figura de mai sus am folosit aceast
ultimalternativ,unde1310=11012esteadunatlarezultat.Aceastafuncioneaz
doardacnuavemtransport.Cndavemtransport,atuncitrebuiesmaiscdem10
(sau s adunm 6) din rezultat i s producem un transport. Aici am adunat 310 =
00112ceeaceareacelaiefectcuadunarea(6+13)%16=3.
Pentru a efectua scderi BCD, putem crea un scztor n complement fa de 10
folosindscztoricomplein baza10.Caoalternativputemcrea complementul
fade10negativaldesczutuluiisaplicmooperaiedeadunareBCD.nfigura
de mai jos prezentm calculul (2134 = 13)10 folosind aceast ultim metod de
scderepentrunumereformatedinpatrucifre.
Complementulfade10negativallui34esteadunatla21,ceeacened9987n
complementfade10,ceeaceeste(13)10nmagnitudinecusemn.
AdunareaiscdereaBCDanumerelornvirgulmobil
S considerm o reprezentare n virgul mobil n baza 10 cu exponentul
reprezentatpedoucifrenmagnitudinecusemnimantisareprezentatpe8cifre
n magnitudine cu semn. Un exemplu de ceea ce vede utilizatorul ar putea fi:
.37100000x1012,careestenformanormalizat.
Uncalculatorfoloseteinternoreprezentarencomplementfade10attpentru
exponent ct i pentru partea fracionar. Pentru exemplul de mai sus
74
Bituldesemn: 1
Exponentul:
01101011
Fracia:
011010100100001100110011001100110011
Estereprezentatnexces3,cudoucifrepentruexponentnexces50.
Pentruaadunadounumerenaceastareprezentare,trebuiesparcurgemaceeai
pai ca i pentru reprezentarea n baza 2 a numerelor reprezentate n virgul
mobil. Vom ajusta exponentul i partea fracionar a operandului mai mic pn
cnd exponenii ambilor operanzi sunt egali. Dac diferena dintre exponeni este
attdemarenctparteafracionaraoperanduluimaimicestedeplasatcompletla
dreapta atunci operandul mai mic este tratat ca zero. Dup ajustarea prii
fracionare mai mici, convertim unul sau ambii operanzi din reprezentarea n
magnitudine cu semn n complement fa de 10 n funcie de operaia pe care o
facem:adunaresauscdereinfunciedesemnuloperanzilor.
Concluzie
Aritmeticancalculatoarepoatefiefectuatexactlafelcumprocedmatuncicnd
efectumadunarezecimalcucreionulpehrtie,lundncalculbazadenumeraie.
Reprezentareancomplementfade2saucomplementfade10sefolosetede
regulpentruntregi,iarreprezentareanmagnitudinecusemnsefolosetede
regulpentrufraciidatoritdificultiimanipulriifraciilorpozitiveinegative
ntromanieruniform.
Sepoatembuntiperformanaoperaiiloraritmeticeprinfolosireaunoralgoritmi
specializai.
75
5. Arhitecturasetuluideinstruciuni
Introducere
n continuare vom trece n revist un subiect important pentru arhitectura
calculatoarelorianume:limbajulnelesdehardwareulsistemuluidecalculnumit
limbajmain.Desprelimbajulmainsediscutderegulntermeniilimbajului
deasamblareasociat,careesteechivalentdinpunctdevederefuncionallimbajului
maincorespunztor,cuexcepiafaptuluiclimbajuldeasamblarefolosetenume
intuitivecumarfi:Move,Add,Jumpnloculcuvintelorbinarealelimbajuluimain.
(Programatoriinelegmultmaisimpluinstruciunideforma"Addr0,r1,r2"dect
secvenedegenul0110101110101101.)
Pentruadescrielimbajuldeasamblareiprogramarenlimbajdeasamblare,vom
folosi ca model arhitectural maina ARC, care este o simplificare a arhitecturii
SPARCdelaSUN.
Componentelehardwarealearhitecturiisetuluideinstruciuni(ASI)
ASI a unui sistem de calcul prezint programatorului n limbaj de asamblare o
viziune asupra sistemului de calcul care include tot hardwareul accesibil
programatorului i instruciunile care manipuleaz datele n hardware. n
continuare vom prezenta componentele hardware aa cum sunt vzute de
programatorulnlimbajdeasamblare.
ModelulMagistralsistem
Memoria
Este format dintro colecie de registre numerotate consecutiv (adresai), fiecare
registru poate stoca n mod normal un octet. Fiecare registru are o adres numit
locaie de memorie. Termenii bit respectiv byte (octet) au acelai neles pentru
oricearhitecturnschimbtermenulcuvntdepindedeprocesor.Dimensiunitipice
pentru un cuvnt sunt: 16, 32, 64 sau 128 bii, cel mai des n ziua de astzi, n
sistemeledecalculactualefolosindusecuvintede32debii.
ntrunsistemdecalculncareadresareasefacelaniveldeoctet,celmaimicobiect
cepoatefireferitnmemorieesteoctetul,cutoatecexistinstruciunicarecitesc
iscriucuvinteformatedinmaimulioctei.Cuvinteleformatedinmaimulioctei
suntstocatecasecvenedeocteiisuntadresate prinoctetulcuvntuluicareare
77
adresaceamaimic.Majoritateasistemeloractualeauinstruciunicarepotaccesa
octei,jumtidecuvnt,cuvinteicuvntdublu.
Atunci cnd se folosesc cuvinte formate din mai muli octei, exist dou variante
pentru stocare octeilor n memorie: cel mai semnificativ octet la adresa cea mai
mic,adicbigendian,saucelmaipuinsemnificativoctetlaadresaceamaimic,
adiclittleendian.
Exemple pentru cele dou variante sunt date n figura de mai jos n care sunt
prezentatecuvinteformatedinpatruoctei:
Octeiintruncuvntformatdinmaimuliocteisuntstocailaadreseconsecutive
aacumsevedenfigurademaisus.Dacavemdeafacecumemorieadresabilla
niveldeoctetfiecareoctetpoatefiadresatprinadresaluispecific.Cuvntulformat
din patru octei se acceseaz prin referenierea adresei octetului cu cea mai mic
adres (x n figur). Aceasta este valabil indiferent dac varianta de stocare este
littleendiansaubigendian.
ncontinuarevomfolosimemoriaprezentatnfigurademaijos.
adresare este mprit pentru arhitectura noastr n regiuni distincte care sunt
folositepentrusistemuldeoperare,pentruintrareieire,programulutilizator,stiva
sistemului,care formeazhartamemorieiaacumesteprezentatnfigur.Harta
memorieidiferdelaoimplementarelaalta,acestafiindunuldinmotivelepentru
care un program compilat pentru acelai tip de procesor sar putea s nu fie
compatibildelaunsistemlaaltul.
Primii 2048 de octei sunt rezervai pentru sistemul de operare. Spaiu utilizator
este locul n care se ncarc programele i poate crete de la poziia 2048 pn
ntlnete stiva sistem. Stiva sistem ncepe la locaia 2314 i poate crete nspre
adrese mai mici. Spaiul de adresare de la 231 la 2321 este rezervat pentru
dispozitivele de intrareieire. Din moment ce dispozitivele de intrareieire sunt
tratatecalocaiidememorie,comenzileobinuitedecitireiscrierenmemoriepot
fifolositepentrucitireaiscriereadispozitivelor.
Trebuiefcutdistinciantreadresidate.Oadresare32debiiiaruncuvnt
estetot32debiidarnusuntacelailucru.Oadresesteunpointerlaolocaiede
memorie care conine date. O adres de memorie de n bii poate specifica 2n
elementeaacdimensiuneamemorieicepoatefiaccesatdepindedenumrulde
biirezervaipentruadresedememoriecepotfiplasatedeprocesorpemagistrala
deadrese.
Microprocesorul
Microprocesorul este format dintro seciune de date care conine registre i
Unitatea Aritmetic i Logic (UAL) i o seciune de control care interpreteaz
instruciunileiefectueaztransferulntreregistreaacumesteprezentatnfigura
demaijos.
SeciuneadedatesemainumeteDatapath.
Unitateadecontrolesteresponsabildeexecutareainstruciunilorprogramului,ce
sunt stocate n memorie principal. (Vom considera c instruciunile sunt
interpretate una cte una). Exist dou registre care formeaz interfaa ntre
unitatea de control i unitatea de date, numite Program Counter (PC contor
program) i Instruction Register (IR registru instruciune). PC conine adresa
79
instruciuniicareseexecut.InstruciuneaindicatdePCesteextrasdinmemorie
i este stocat n IR unde este interpretat. Paii pe care i efectueaz unitatea de
controllaexecuiaunuiprogramsunt:
1. Extragedinmemorieurmtoareinstruciunecesevaexecuta
2. Decodificcoduloperaiei
3. Citeteoperandul(operanzii)dinmemorie,dacexist
4. Executinstruciuneaistocheazrezultatul
5. Saltlapasul1.
Acestaesteciclulextragereexecuie.
repede,nasamblare.nplus,sarputeasnuexistecompilatoarepentruanumite
procesoare speciale sau compilatoarele s nu poat fi folosite pentru a efectua
anumiteoperaiispeciale.nacestecazuri,programatorulestenevoitsrecurgdin
noulalimbajuldeasamblare.
Limbajeledeprogramaredenivelnaltnepermitsignormarhitecturasistemului
de calcul int. Pe de alt parte, la nivel limbaj main, arhitectura este cel mai
importantaspectdecaretrebuieinutcont.
ARCARISCComputer
n continuare vom prezenta un model arhitectural bazat pe arhitectura SPARC
(Scalable Processor Architecture) dezvoltat de SUN la mijlocul anilor 60.
Arhitectura SPARC a devenit popular datorit naturii sale deschise: definiia
completaarhitecturiiSPARCafostfcutpublicn1992.Noi,vomprezentadoar
osubmulimeaSPARC,pecareovomnumiARC(ARISCComputer).
MemoriaARC
ARC este o main pe 32 de bii cu memoria adresabil la nivel de octet. Poate
manipula tipuri de date de 32 de bii, dar toate datele sunt stocate n memorie ca
octeiiaradresaunuicuvntde32debiiesetadresabituluicareseafllaadresa
cea mai mic. Memoria este mprit n mai multe zone aa cum prezentat harta
memorieintrofigurprecedent.Zonelememorieisunt:zonarezervatsistemului
de operare, zona rezervat programelor utilizator, stiva sistem i zona pentru
operaiideintrareieire.
ARCul are mai multe tipuri de date (octet, jumtate de cuvnt, cuvnt). Fiecare
ntregestestocatnmemoriecapatruocteinformatbigendian,aacoctetulcel
maisemnificativestelaadresaceamaimic.
SetuldeinstruciuniARC
ProcesorulARCare:
32deregistrede32debiipentruuzgeneral,precumiregistrelePCiIR.
Registrul PSR (Processor Status Register) care conine informaii despre
starea procesorului, inclusiv informaii despre operaiile aritmetice. Indicatorii
aritmetici din PSR se numesc coduri condiionale. Acestea specific dac o
anumit operaie aritmetic a generat valoarea zero (z), valoare negativ (n),
transport din UAL (c) i depire (v). Bitul v este setat atunci cnd rezultatul
operaieiaritmeticeestepreamarepentruaputeafitratatdeUAL.
Toateinstruciunileaudimensiuneadeuncuvnt(32debii).
ARC este o main de calcul de tip ncrcarestocare: singurele operaii de
acceslamemoriepermisesuntceledencrcareauneivaloridinmemorientr
un registru i stocarea unei valori dintrun registru ntro locaie de memorie.
Toate operaiile aritmetice opereaz asupra unor valori ce sunt coninute n
82
registre iar rezultatul este plasat tot ntrun registru. Arhitectura SPARC are
aproximativ 200 de instruciuni. Pentru ARC vom considera doar 15 cele mai
importante. Acestea sunt prezentate n tabelul de mai jos mpreun cu
mnemoniceleasociate(numelecarereprezintinstruciunea).
Memorie
Logic
Aritmetic
Control
Mnemonic neles
ld
st
sethi
andcc
orcc
orncc
srl
addcc
call
jmpl
be
bneg
bcs
bvs
ba
ncarcunregistrudinmemorie
Stocheazunregistrunmemorie
ncarcceimaisemnificativi22debiiaiunuiregistru
ANDlogicpebii
SAUlogicpebii
NORlogicpebii
Deplasareladreapta(logic)
Adunare
Apeldesubrutin
Saltilegtur(returndinapeldesubrutin)
Ramificarencazdeegalitate
Ramificaredacenegativ
Ramificaredacexisttransport
Ramificaredacaparedepire
Ramificarentotdeauna
Instruciunileld(load)ist(store)transferuncuvntntrememorieiunuldin
registreleARC.AcesteasuntsingureleinstruciunicarepotaccesamemorianARC.
Instruciunea sethi seteaz cei mai semnificativi 22 de bii ai unui registru cu o
constant pe 22 de bii coninut n instruciune. Este folosit pentru a construi o
constantpe32debiintrunregistru,mpreuncuoaltinstruciunecareseteaz
cei10biimaipuinsemnificativiairegistrului.
Instruciunileandcc,orcc,ornccefectueazoperaiileAND,OR,NORpebiiasupra
operanzilor lor. Unul din cei doi operanzi surs trebuie s fie ntrun registru.
Rezultatul este stocat ntrun registru. Sufixul cc indic faptul c dup terminarea
operaiei biii cod condiie din PSR sunt actualizai pentru a reflecta rezultatul
operaiei.Bitulzestesetatdacrezultatulestezero,bitulnestesetatdaccelmai
semnificativbitalrezultatuluieste1,iarcivsuntsetailazero.
Instruciunile call i jmpl formeaz o pereche de instruciuni folosite la apelul i
ntoarcereadintrosubrutin.Instruciuneajmplestefolositipentruatransfera
controluluneialtepriaprogramului.
Ultimele cinci instruciuni provoac o ramificare n execuia programului. Aceste
instruciuni verific anumii bii din PSR i execut ramificarea n funcie de
valoarea acestora. Aceste instruciuni sunt folosite pentru implementarea unor
instruciuni din cadrul limbajelor de nivel nalt cum sunt: goto, ifthenelse, do
while.
83
FormatulinstruciunilornlimbajdeasamblareARC
Fiecarelimbajdeasamblarearepropriasintax.PentruARCformatulvafi:
Etichet
Mnemonic
Operand
surs
Operand
destinaie
Comentariu
Avempatrucmpuri:oetichetopional,uncmppentruopcod(coduloperaiei),
unul sau mai multe cmpuri care specific operanzii surs i destinaie, un
comentariu(opional).Limbajulfacedistincientreliterelemariimici.
ArhitecturaARCconine32deregistreetichetate%r0%r31,fiecareavnd32de
bii. Exist un registru de 32 de bii PSR (Processor State Register) care descrie
stareacurentaprocesoruluiiunregistrude32debiiPC(ProgramCounter),care
ineevidenainstruciuniicareseexecut.Figurademaijosprezintacesteregistre.
Registrele%r14i%r15suntfolosiicapointerstiv(%sp)iregistrulink.
Operanzii instruciunilor n limbaj de asamblare sunt separai prin virgule iar
operandul destinaie apare ntotdeauna ultimul. Baza implicit pentru operaiile
aritmetice este baza 10. Dac valorile sunt precedate de 0x sau se termin cu H
atunciseconsiderafinbaza16.Instruciunea:
addcc%r1,12,%r3
are ca efect adunarea valorii din registrul %r1 cu constanta 12 iar rezultatul este
plasatnregistrul%r13.
FormatulinstruciunilorARC
Formatul instruciunilor definete modul n care cmpurile de bii ale
instruciunilorsuntcreatedectreasambloricumsuntinterpretatedeunitateade
84
control a ARC. Arhitectura ARC are doar cteva formate de instruciuni i anume
cinci:
Fiecareinstruciuneareomnemoniccumarfildiunopcod.Cmpulde5biird
identificregistrulintsausurspentruoperaie.
FormatuldatelorpentruARC
ARC suport 12 formate diferite pentru date aa cum sunt prezentate n figura de
maijos.
ARC nu face distincie ntre ntregi cu semn sau fr semn. Acetia sunt stocai i
manipulaicantregincomplementfadedoi.Ceeacevariazesteinterpretarea
lor.
DescriereainstruciunilorARC
ncontinuarereferireaconinutuluiuneilocaiidememorie(pentruldsaust)este
indicatprin"ld[x],%r1"cearecaefectcopiereaconinutuluilocaieixnregistrul
%r1.Oreferinlaadresauneilocaiidememoriesespecificdirect,frparanteze
drepte "call sub_r", ceea ce va apela subrutina sub_r. Doar ld i st pot accesa
memoria, prin urmare sunt singurele instruciuni la care se folosesc parantezele
drepte.Cndutilizmregistrentotdeaunaseacceseazconinutuliniciodatnuse
iaadresaacestoraaacnuenevoiesfiepusnumeleunuiregistruntreparanteze
drepte.
85
Instruciunea:ld
Descriere: ncarc un registru cu o valoare din memoria principal. Adresa de
memorie trebuie s fie la nceputul unui cuvnt (s fie divizibil cu 4). Adresa se
calculeaz prin adunarea coninutului registrului din cmpul rs1 cu coninutul
registruluidincmpulrs2saucuvaloareacmpuluisimm13.
Exemple:
ld[x],%r1
ld[x],%r0,%r1
ld%r0+x,%r1
neles:copiazconinutullocaieidememoriexnregistrul%r1.
Instruciunea:st
Descriere: stocheaz coninutul unui registru n memorie. Adresa de memorie
trebuie s fie divizibil cu 4. Adresa se calculeaz prin adunarea coninutului
registruluidincmpulrs1cuconinutulregistruluidincmpulrs2saucuvaloarea
cmpuluisimm13.Cmpulrdestefolositpentruregistrulsurs.
Exemple:st%r1,[x]
neles:Copiazconinutulregistrului%r1nlocaiadememoriex.
Instruciunea:sethi
86
Instruciunea:andcc
Descriere: I logic pe bii ntre operanzii surs iar rezultatul este salvat n
operanduldestinaie.Coduriledecondiiesuntsetateconformrezultatului.
Exemple:andcc%r1,%r2,%r3
neles: se efectueaz operaiaIlogic ntrevalorile din %r1 i %r2 iar rezultatul
estesalvatn%r3.
Instruciunea:orcc
Descriere: SAU logic pe bii ntre operanzii surs iar rezultatul este salvat n
operanduldestinaie.Coduriledecondiiesuntsetateconformrezultatului.
Exemple:orcc%r1,1,%r1
neles:seteazcelmaisemnificativbitallui%r1la1.
Instruciunea:orncc
Descriere: NOR logic pe bii ntre operanzii surs iar rezultatul este salvat n
operanduldestinaie.Coduriledecondiiesuntsetateconformrezultatului.
Exemple:orncc%r1,%r0,%r1
neles:Complementeaz%r1.
Instruciunea:srl
Descriere: deplaseaz un registru la dreapta cu 031 bii. Biii din partea dreapt
voraveavaloarea0.
Exemple:srl%r1,3,%r2
neles:deplaseaz%r1ladreaptacutreibiiistocheazrezultatuln%r2.
Instruciunea:addcc
Descriere: adun operanzii surs i stocheaz rezultatul n operandul destinaie
folosindaritmeticancomplementfade2.
Exemple:addcc%r1,5,%r1
neles:Adun5la%r1.
Instruciunea:call
Descriere:apeleazosubrutinistocheazadresainstruciuniicurente(undeeste
stocatapelul)n%r15,ceeacearecaefectooperaiedeapelilegtur.ncodul
asamblat, cmpul disp30 din formatul de apel va conine deplasamentul pe 30 de
biidinadresainstruciuniicall.
87
Exemple:callsub_r
neles:Apeleazosubrutincarencepelalocaiasub_r.
Instruciunea:jmpl
Descriere:saltilink(ntoareceredinsubrutin).Saltlaonouadresistocarea
adresei instruciunii curente (unde este plasat instruciunea jmpl) n registrul
destinaie.
Exemple:jmpl%r15+4,%r0
neles:ntoarceredinsubrutin.ValoarearegistruluiPCpentruinstruciuneacalla
fost salvat iniial n %r15 aa c adresa de ntoarcere ar trebui calculat din
instruciunea care urmeaz apelului, la %r15+4. Adresa curent este eliminat n
%r0.
Instruciunea:be
Descriere:Daccoduldecondiiezeste1,atunciramificlaadresacalculatprin
adunarea valorii 4 x disp22 din formatul instruciunii de ramificare la adresa
instruciuniicurente.Daccoduldecondiiezeste0,atuncicontrolulestetransferat
lainstruciuneaurmtoare.
Exemple:beetichet
neles:Ramificlaetichetdaccoduldecondiiezeste1.
Instruciunea:bneg
Descriere: Dac codul de condiie n este 1, atunci ramific execuia la adresa
calculatprinadunareavalorii4xdisp22dinformatulinstruciuniideramificarela
adresa instruciunii curente. Dac codul de condiie n este 0, atunci controlul este
transferatlainstruciuneaurmtoare.
Exemple:bnegetichet
neles:Ramificlaetichetdaccoduldecondiieneste1.
Instruciunea:bcs
Descriere: Dac codul de condiie c este 1, atunci ramific execuia la adresa
calculatprinadunareavalorii4xdisp22dinformatulinstruciuniideramificarela
adresa instruciunii curente. Dac codul de condiie c este 0, atunci controlul este
transferatlainstruciuneaurmtoare.
Exemple:bcsetichet
neles:Ramificexecuiaprogramuluilaetichetdaccoduldecondiieceste1.
Instruciunea:bvs
Descriere: Dac codul de condiie v este 1, atunci ramific execuia la adresa
calculatprinadunareavalorii4xdisp22dinformatulinstruciuniideramificarela
88
adresa instruciunii curente. Dac codul de condiie v este 0, atunci controlul este
transferatlainstruciuneaurmtoare.
Exemple:bvsetichet
neles:Ramificexecuiaprogramuluilaetichetdaccoduldecondiieveste1.
Instruciunea:ba
Descriere: Ramific execuia la adresa calculat prin adunarea valorii 4 x disp22
dinformatulinstruciuniideramificarelaadresainstruciuniicurente.
Exemple:baetichet
neles:Ramificexecuiaprogramuluilaetichetindiferentdevaloarecodurilorde
condiie.
Pseudooperaii
PelnginstruciunileARCsuportatedearhitectur,existipseudooperaiicare
nureprezintopcoduri.Acesteasuntinstruciunipentruasamblorpentruaefectua
unele aciuni la asamblare. O list cu pseudooperaii i exemple de utilizare a lor
esteprezentatnlistademaijos.
Spredeosebiredeopcoduricaresuntspecificesistemului decalcul,tipulinatura
pseudooperaiilor sunt specifice unui anumit asamblor, deoarece acestea sunt
executatedeasamblor.
Exempledeprogramenlimbajdeasamblare
Procesuldescriereaunuiprogramnlimbajdeasamblareestesimilarcuprocesul
descriereaunuiprogramntrunlimbajdeprogramaredenivelnalt, cuexcepia
89
faptuluicmultedetaliicesuntabstractizatenlimbajeledenivelnalt,nlimbajele
deasamblaretrebuiescriseexplicit.
Program:Adunareaadointregi(15+9)
Program:Sumaunuitabloudentregi
Variaiinarhitecturilesistemelordecalculinmoduldeadresare
ARCesteuncalculatordetipncrcare/salvare.Programelescrisepentruastfelde
sisteme se execut de regul mai repede, datorit reducerii traficului dintre
procesorimemorieprinncrcareaoperanzilornprocesorosingurdatiprin
90
stocarearezultatelordoarcndcalcululestencheiat.Mrireadimensiuniimemoriei
programuluiesteunprecaremeritpltit.
DacARCulpoatefaceoperaiiaritmeticeilogicedoarcuoperanzicareseafln
registre,trebuietiutfaptulcunelesistemedecalculaveauinstruciuniiaritmetice
careefectuauoperaiilearitmeticefolosindtrei,dousauoadresdememorie.
SconsidermmodulncareesteevaluatexpresiaA=B*C+Ddefiecaredincele
treitipurideinstruciuni.nexempleledemaijosatuncicndnereferimlavariabila
A va nsemna operandul a crui adres este A. Pentru a efectua statisticile de
performan pentru fragmentele de cod de mai jos vom face urmtoarele
presupuneri:
Adreseleicuvintelesuntde16bii
Opcodurilesuntde8bii
Operanziiiopcodurilesuntmutatedininmemoriecteuncuvnt.
Vom calcula att dimensiunea programului, n octei ct i traficul de memorie
inndcontdeacestevalori.
Traficul de memorie are dou componente: codul propriuzis, care trebuie extras
dinmemorieincrcatnprocesorpentruafiexecutativalorileoperanziicare
trebuie mutai n procesor pentru a fi efectuate calculele, iar rezultatul trebuie
mutat napoi n memorie la ncheierea calculelor. Astfel putem vedea
compromisurile ntre dimensiunea programelor i traficul de memorie oferit de
diferiteleclasedeinstruciuni.
Instruciunicutreiadrese
ExpresiaA=B*C+Dpoateficodificatastfel:
multB,C,A
addD,A,A
Instruciunicudouadrese
Expresiademaisuspoateficodificatastfel:
loadB,A
multC,A
addD,A
Dimensiuneaprogramuluiesteacum3x(1+2+2)=15octei.Traficuldememorie
este(5+4)+(5+6)+(5+6)=31octei.Lafiecareinstruciunesunt5octeipentru
91
ncrcareainstruciunii.Laprimainstruciunemaisunt4octeipentruvariabile,iar
laultimeledouinstruciunisuntcte6octei(cu2maimultdectlaprima)pentru
cambiioperanzitrebuiencrcainCPU.SalvarearezultatuluidinCPUnmemorie
sefacelafiecaredinceletreiinstruciuniceeacenecesit2octei.
Instruciunicuoadressauinstruciuniacumulator
O instruciuni cu o adres folosete un singur registru al procesorului, numit
acumulator. Acumulatorul conine un operand aritmetic i servete i ca int
pentrurezultatuluneioperaiiaritmetice.Acestformat nuesteobinuitnziuade
astzidarerafolositfrecventmaidemultcndprocesoareleaveauregistrepuinei
eraufolositepentrumaimultescopuri.Acesteregistreauroluldeastocatemporar
unuldinoperanziirezultatul.Expresiademaisussepoareexprimaastfel:
loadB
multC
addD
storeA
Fiecareinstruciuneare1+2=3octeiaacdimensiuneaprogramuluieste4x3=
12octei.Traficuldememoriepentrufiecareinstruciuneeste3+2=5octeiaac
traficultotaldememorieeste4x5=20deoctei.
Registrespeciale
Pe lng registrele generale, majoritatea arhitecturilor moderne includ i alte
registrededicateunorscopurispeciale.Deexemplu:
Registre pentru index de memorie: registrele SI (Source Index) i DI
(Destination Index) de la Inter 80x86. Acestea sunt folosite pentru a indica
nceputulsausfritulunuitabloudinmemorie.
Registre pentru virgul mobil: multe procesoare au registre speciale i
instruciunicareseocupdenumerelereprezentatenvirgulmobil.
Registrepentrutratareatimpuluiisincronizareaoperaiilor.
Registrepentrusuportulsistemelordeoperare.
Registrecarepotfiaccesatedoarprininstruciuniprivilegiate.
Accesareadatelornmemoriemodurideadresare
Pnacumamvzutpatrumoduridecalculareaadreseiuneivaloridinmemorie:
1. ovaloareaconstant,cunoscutlaasamblare,
2. coninutulunuiregistru,
3. sumaadouregistre,
4. sumadintreunregistruioconstant.
Tabeluldemaijosdnumeacestormoduride adresareiprezintctevamoduri
suplimentare:
92
Linkeditareasubrutineloristiv
O subrutin, numit i funcie sau procedur, este o secven de instruciuni care
este invocat ca i cum ar fi o singur instruciuni vzut de la un nivel superior.
Atuncicndunprogramapeleazosubrutin,controlulexecuieiestetransferatde
la program la subrutin, care execut o secven de instruciuni dup care se
ntoarce la instruciunea din program imediat urmtoare instruciunii de apel.
Existmaimultemodalitideatransmiteargumentelarutinaapelatidinrutina
apelat, modaliti care se numesc convenii de apel. Procesul de transmitere a
argumentelorntrerutinesenumetelinkeditareasubrutinelor.
Oconveniedeapelesteplasareaargumentelornregistre.Coduldemaijosncarc
dou argumente n registrele %r1 i %r2, apeleaz subrutina add_1 i salveaz
rezultatulnregistrul%r3naintedeasentoarcecujmpl.
93
Pseduoperaia.dwbdinrutinaapelantstabiletezonapentrulegturadatelorcare
are dimensiunea de 3 cuvinte la adresa x, x+4 i x+8. Rutina apelant ncarc cele
douargumentelaxix+4,apeleazsubrutinaadd_2dinmemoriedelaadresax+8
iiarezultatultransmisdinadd_2delalocaiadememoriex+8.Adresazoneipentru
legturadatelor,x,estetransmisrutineiadd_2nregistrul%r5.
Instruciuneasethitrebuiesaibcaoperandsursoconstantastfelcasamblorul
recunoateconstruciasethiilnlocuietepexcuadresalui.Instruciuneasrlce
urmeaz mut adresa lui x n cei mai puin semnificativi 22 de bii ai lui %r5, din
momentcesethiplaseazoperandulncei22debiidinstngaairegistruluiint.O
alternativpentruncrcareaadreseiluixn%r5arfisfolosimolocaiedestocare
pentruadresaluixisfolosiminstruciunealdpentruancrcaadresan%r5.
Subrutina add_2 citete cei doi operanzi din zona pentru legtura datelor de la
locaiile %r5 i %r5 + 4, i plaseaz rezultatul n zona pentru legtura datelor la
locaia %r5 + 8 nainte de a se termina. Folosind zona pentru legtura datelor,
putemtransmiteintoarcedinsubrutineblocurideoricedimensiunefracopia
94
maimultdeunregistru.Recursivitateapoatecomplicalucrurilepentrucorutin
care se autoapeleaz va avea nevoie de mai multe zone pentru legtura datelor.
Zonelepentrulegturadatelorauavantajulcdimensiunealorpoatefinelimitat,
darauidezavantajulcdimensiuneaacesteizonetrebuiesfiecunoscutnfaza
deasamblare.
Oatreiaconveniedeapelestefolosireastivei.Ideeaestecrutinaapelantpune
toateargumentele(saupointerilaargumente,dacobiectelededatesuntmari)peo
stivdetipultimulintratprimulieit.Rutinaapelatscoatedinstivargumentele
transmiseipunenstivvalorilepecarelentoarce.Rutinaapelantscoatevalorile
ntoarse din stiv i i continu execuia. Un registru al procesorului numit stack
pointer(pointerdestiv),conineadresavrfuluistivei.Multesistemedecalculau
instruciunipushipopcaredecrementeaziincrementeazautomatpointerulde
stivpemsurceobiectelesuntplasatenstivrespectivsuntscoasedinstiv.
Un avantaj al folosirii stivei este c aceasta poate crete i descrete dup nevoi,
ceeaceducelaposibilitateaimbricriinelimitateaapelurilordesubrutinefrafi
nevoie s se declare dimensiunea stivei la asamblare. Mai jos dm un exemplu de
utilizareastivei:
Registrul%r14areroluldepointerdestiv(%sp)careesteiniializatdesistemul
de operare nainte de execuia rutinei apelante. Rutina apelant plaseaz
argumentele(%r1i%r2)pestivdecrementndpointeruldestiv(semut%spla
urmtorulcuvntliberdeasuprastivei)istocndfiecareargumentpenoulvrfal
stivei.Subrutinaadd_3esteapelat,ceeacevadeterminascoatereaargumentelorei
dinstiv,efectuareaoperaieideadunare,istocareavaloriicalculatenvrfulstivei
nainte de ntoarcerea n rutina apelant. Rutina apelant scoate argumentul din
vrfulstiveiiicontinuexecuia.
Pentrufiecareconveniedeapel,estefolositinstruciuneacall,caresalveazPCul
(ProgramCounter)curentn%r15.Cndosubrutinsetermin,trebuiesntoarc
controlullainstruciuneacareurmeazapelului,instruciunecareestelauncuvnt
(patru octei) distan de contorul program (PC) salvat. Astfel, instruciunea jmpl
%r15 + 4, %r0 termin apelul. Dac rutina apelat, apeleaz la rndul ei o alt
95
96
spaiuldinstivrezervatargumentelorpecareleaprimit,ipunenstivvaloarea
dereturn(fig..e).Controlulestentorslarutinaapelantprininstruciuneajmpl,i
rutina apelant este responsabil pentru luarea valorii ntoarse din stiv i
decrementarea pointerului de stiv la poziia la care a fost nainte de apel (fig. f).
Rutinafunc_2estemaiapoiexecutat,iprocesuldeconstruireastackframeului
rencepe(fig.g).Dinmomentcefunc_2apeleazfunc_1naintedeasetermina,vor
fistackframeattpentrufunc_2ctipentrufunc_1nacelaitimp(fig.h).nfinal
pointeruldestivvafilapoziiainiial(fig.ik).
Intrareieirenlimbajdeasamblare
Vom trece n revist modul n care un program n limbaj de asamblare poate
comunica cu exteriorul (activitile de intrareieire). O modalitatea de tratare a
comunicaiei cu dispozitivele de intrareieire este folosirea unor instruciuni
speciale,icuomagistraldeintrareieirespecialrezervatpentruacestscop.O
metod alternativ de interaciune cu dispozitivele de intrareieire este prin
folosirea memoriei asociat I/E, n care dispozitivele ocup seciuni din spaiul de
adresareundenuavemmemorieobinuit.Dispozitivelesuntaccesatecaicumar
filocaiidememorie,aacnuenevoiedetratareadispozitivelordeintrareieire
cuinstruciuninoi.
CaunexempludememorieasociatI/E,sconsidermhartamemorieipentruARC
dinfigurademaijos:
Aici vedem dou regiuni noi de memorie, pentru dou module video i pentru un
dispozitivtouchscreen.Untouchscreenpoatefidedoutipuri:fotonicielectric.O
ilustrareaversiuniifotoniceesteprezentatnfigurademaijos:
98
99
StudiudecazASIpentruMainaVirtualJava
JavaesteunlimbajdeprogramaredenivelnaltdezvoltatdeSunMicrosystems.Un
aspectesenialalJavaesteccodulbinarJavaesteindependentdeplatform,ceea
ce nseamn c acelai cod compilat va rula fr modificri pe orice sistem care
suport Maina Virtual Java (MVJ). MVJ este modul n care Java realizeaz
independena de platform: o specificare standard a MVJ este implementat cu
mulimea de instruciuni native ale sistemului pe care ruleaz iar codul compilat
JavapoaterulanoricemediuMVJ.
ProgramelescrisenlimbajecumsuntC,C++suntcompilatedirectncodnativale
arhitecturiiintiacesteanusuntportabilepeplatformediferitefrrecompilarea
codului surs. Limbajele interpretate, cum sunt Perl, Tcl, AppleScript sunt
independente de platform dar se execut mult mai ncet (de 100200 de ori mai
ncet) dect un limbaj compilat. Programele Java sunt compilate ntro form
intermediar numit bytecode, care se execut mult mai ncet dect un program
compilat n limbaj nativ dar, chiar i cu acest inconvenient, faptul c este
independent de platform l plaseaz naintea altor limbaje pentrumulte tipuri de
aplicaii.
nfigurademaijosdmprogramulJavacareadunnumerele15i9ibytecodeul
ncareafostcompilat.BytecodeulestenumitifiierclassJava.
100
Concluzie
Am prezentat arhitectura setului de instruciuni pentru un sistemul ARC i am
trecut n revist unele proprieti generale ale ASI. n proiectarea unui set de
instruciuni, trebuie pstrat un echilibru ntre performana sistemului i
caracteristiciletehnologieincareesteimplementatprocesorul.Interaciuneantre
procesorimemorieesteunpunctimportant.
Cnd se face un acces la memorie, modul n care este calculat adresa este numit
moduldeadresareamemoriei.
Amtrecutnrevistmaimultecomponentealesistemuluidecalculcarejoacunrol
important n execuia programelor. Am vzut c programele sunt secvene de
instruciunicarefacpartedinsetuldeinstruciunialprocesorului.
101
6. Limbajeimain
Introducere
ncontinuareavomtrecenrevistprocesuldeasamblare,linkeditareincrcare
aunuiprogram.Vomprezentalegturadintrelimbajeledeprogramareisistemul
decalcul.
Prima dat vom discuta despre compilare, procesul de traducere a programului
scris ntrun limbaj de programare de nivel nalt ntrun program, echivalent
funcional,scrisnlimbajdeasamblare.Dupaceasta,vomdiscutadespreprocesul
de asamblare adic, traducerea programului din asamblare ntrun program
echivalent funcional n limbaj main. Vom prezenta linkeditarea, procesul de
legare mpreun a modulelor asamblate separat ntrun singur program i
ncrcarea,procesuldemutareaprogramuluinmemorieipregtirealuipentru
execuie. Vom prezenta folosirea macrourilor n limbaj de asamblare, care pot fi
privite ca proceduri n limbaj de asamblare, cu excepia faptului c acestea sunt
plasate inline, n programul n limbaj de asamblare n fiecare loc n care sunt
apelate.
Procesuldecompilare
Procesuldetransformareaunuiprogramdinlimbajdeasamblarenlimbajmain
estefoartesimplupentrucexistocorespondenunulaunantreinstruciunile
din limbaj de asamblare i instruciunile binare din codul main. Limbajele de
programaredenivelnaltreprezintoproblemmultmaicomplex.
Paiicompilrii
Sconsidermoinstruciunesimpldeatribuire:
A=B+4;
Analizanumelor:asociereanumelorAiBcuanumitevariabiledinprogram
iasocierealormaideparteculocaiidememorieparticulareundesevorlocaliza
variabilelelaexecuie.
Analiza tipurilor: determinarea tipurilor tuturor unitilor de date. n
exempluldemaisus,variabileleAiBiconstanta4vorfirecunoscutecafiind
detipintnunelelimbaje.Analizanumeloriatipurilorsemainumeteanaliz
semantic:determinareanelesuluicomponentelorprogram.
Maparea de aciune i generarea de cod: asocierea instruciunilor
programului cu secvenele corespunztoare din limbaj de asamblare. n
instruciuneademaisussecvenelenlimbajdeasamblarepotfi:
!Instructiuneadeatribuire
ld[B],%r0,%r1!variabilaBesteincarcatainregistru
add%r1,4,%r2!calculeazavaloareexpresiei
st%r2,%r0,[A]!efectueazaatribuirea
Existpaisuplimentaripecarecompilatorultrebuiesiefectueze:alocarea
de variabile registrelor, urmrirea utilizrii registrelor i optimizarea
programului.
Specificaiileasocierilorcompilatorului
Atunci cnd se creeaz un compilator, trebuie incluse n el informaii despre
arhitecturasetuluideinstruciunipentrucareestecreat.(ASIulpecareseexecut
compilatorul nu trebuie s fie identic cu ASIul pentru care genereaz cod, proces
numitcrosscompilare).Aceastincluderesemainumetespecificaredeasociere
pentrucompilator.Deexemplu,celcarescriecompilatorultrebuiesdecidcums
asociezevariabileleiconstanteledetipuridiferitenresurselesistemuluidecalcul.
Aceasta ar putea fi o funcie att a sistemului ct de calcul ct i a limbajului de
programaredenivelnalt.nlimbajulC,ntregii(int)potfide16sau32debiipe
cndnJavantotdeaunatipulintare32debii.
Cel care scrie compilatorul trebuie s in cont de particularitile i limitrile
sistemului de calcul atunci cnd asociaz construciile din limbajul de programare
denivelnaltlainstruciunisausecvenedeinstruciuninlimbajdeasamblare.De
exemplu, setul de instruciuni ARC necesit ca toi operanzii aritmetici s fie
constante imediate sau variabile registru. De aceea, compilatorul trebuie s
generezecodpentruncrcareatuturorvariabilelornregistrenaintedeaseputea
oriceinstruciunearitmetic.Acestaestemotivulpentruinstruciunea:
ld[B],%r1
dinexempluldemaisus.
Noivomprezentaasociereaconstruciilordinlimbajeledenivelnaltnechivalentul
lor n limbaj de asamblare, ignornd detaliile ce in de analiza sintactic i
semantic.
103
Modulncarecompilatorulasociazceletreiclasedeinstruciunincod
nasamblare
Vomprezentandetaliuasociereacelortreiclasedeinstruciunimicareadatelor,
aritmeticeicontrolulfluxuluidinlimbajeledeprogramaredenivelnaltnlimbaj
deasamblare.ndiscuiaiexempleleceurmeazvomfolosilimbajulC.Cutoatec
limbajul este un limbaj de programare de nivel nalt, sintaxa i semantica lui este
destuldeaproapedeconcepteledinlimbajdeasamblare.
n exemplele de pn acum sa presupus c variabilele pot fi accesate direct prin
numele lor, nume ce este asociat unei locaii de memorie ce este cunoscut la
asamblare.nexemplulprecedent,A=B+4,sepresupunecvariabileleAiBau
adrese ce sunt cunoscute atunci cnd instruciunea este compilat. n C doar
variabilele globale statice, au adrese ce sunt cunoscute la compilare. Variabilele
declaratenfunciisaunblocuricenusuntdeclarateexplicitstaticsauglobal,sunt
create la intrarea n funcie sau n bloc i dispar atunci cnd funcia sau blocul se
termin. Aceste variabile se numesc locale, sau automatice n C. n majoritatea
programelorvariabilelelocalesuntmultmaidesfolositedectvariabileleglobale.
Avnd n vedere acest caracter efemer al variabilelor locale, o modalitate natural
dealeimplementaesteostivdetipultimulintratprimulieit.Variabilelestocate
n stiv se creeaz la apelul funciei i dispar cnd funcia se termin. Dac n
capitolulprecedentamfolositpointeruldestiv%sppentruaaccesastackframeul,
aici vom folosi un al registru %fp (frame pointer) pentru a accesa stiva pe durata
execuiei funciei. Motivul este c variabilele temporare pot fi puse i scoase din
stivnpermanenpedurataexecuieifunciei,ceeaceducelamodificareaoffset
uluidintre%spielementeledinstiv.Folosirealui%fpvapermitecompilatorului
sfoloseascunoffsetconstantntre%fpivaloareastocatpestiv,carermne
fixatpeduratadeviaaframeuluistivei.Adresareacubaz(basedaddresing)este
folosit pentru a accesa variabilele de pe stiv. De exemplu, o variabil ARC
localizatla12octeisub%fppoatefincrcatn%r1prininstruciunea
ld%fp,12,%r1
sau,sfoloseasconotaieobinuit:
ld[%fp12],%r1
Folosireaadresriicubazpermitecaaritmeticaadresei(adunconinutullui%fo
la 12) s fieefectuat ntro singurinstruciune. Adresarea cu baz este att de
obinuit nct toate seturile de instruciuni conin acest mod de adresare. Unele
mulimi de instruciuni conin moduri de adresare mai complicate pentru a putea
accesastructuridedatecomplexecesuntstocatepestiv.
104
Variabilelecesuntstocatepestivauadresedememoriecesuntcunoscutedeabia
laexecuie.Adreselelordelamomentulcompilriisuntcunoscutecaoffseturidela
%fp. De abia la intrarea n funcie se tie care este adresa de memorie exact a
valorii.Astfel,cutoatecadreselevariabilelordepestivcumeste[%fp12]sunt
multmaiobinuitedectadreseledevariabileglobalecumesteA,vompresupunen
continuare c sunt folosite variabilele globale pentru c este mai uor de neles
relaiadintrenumelevariabilelordinlimbajeledenivelnaltiadresaacumeste
specificatnlimbajdeasamblare.
n continuarea vom prezenta cele trei clase de instruciuni: micarea datelor,
aritmeticeicontrolulexecuieiprogramelor.
Micareadatelor
Pelngvariabilelescalaresimple,majoritatealimbajelordeprogramarefurnizeaz
diferitetipuridestructuridedatemaicomplexe,inclusivstructurilefixe(structn
C)itablourile.
Unexempludestructurestereprezentareaunuipunctdinspaiultridimensional,
carearetreicoordonatentregix,y,z.Oastfeldestructursepoatedeclaraastfel:
structpoint
{
intx:
inty;
intz;
};
Oinstanaacesteistructurisedefineteastfel:
structpointpt;
Definindpunctulpt,programatorulpoaterefericomponenteleindividualealeluipt
prinnotaiapt.x,caresereferlacomponentaxastructurii.Compilatorulvapunen
memorieaceaststructurcatreilocaiidememorieconsecutive.
Adresa de memorie a structurii este cea mai mic valoare sau adresa de baz a
structurii, aa c componenta x va fi localizat la adresa pt, componenta y va fi
localizatlaadresapt+4iarcomponentazlaadresapt+8.Aadar,componentaya
structuriiptsencarcnregistrul%r1prininstruciunea:
ld[pt+4],%r1 !%r1<y
intA[10];
105
Aceastdefiniievaproduceocoleciede10ntregiindexaidela0la9.
Componenteleuneistructuritrebuienumiteexplicitcndsescrieprogramul,deex.
pt.z.Referinecumarfipt.i,undeiesteovariabilacreinumenuestedeterminat
pnlaexecuienusuntpermise.Latablouri,indexulpoateficalculatlaexecuie.De
exemplu,programatorulpoatespecificaunelementaltablouluiprinA[i],undeieste
ovariabilacreivaloare estecalculat la execuiei care poateluaoricevaloare
cuprins ntre 0 i 9. Dac n C indexul primului element al tabloului este
ntotdeauna 0, n alte limbaje de programare exist o flexibilitate mai mare. De
exemplu,nPascalsepoatedeclarauntablouastfel:
A:array[10..10]ofinteger
ncazulacestacalcululindecilorlaexecuieestemaicomplicat.Expresiageneral
pentrucalcululadresamainaunuielementaltablouluiestedatde:
AdresElement=BAZA+(INDEXSTART)*DIMENSIUNE
undeBAZAesteadresadenceputatabloului,INDEXesteindexulelementuluidorit,
START este primul index pentru tablou iar SIZE este dimensiunea unui element
individualnoctei.Astfel,elementul5dintablouldeclaratnPascaldemaisusare
adresaA+(5(10))*4=A+60.nlimbajuldeasamblareARC,dacpresupunemc
BASE este n %r2, INDEX este n %r3, START este n %r4 i presupunnd c SIZE
este4,codulpentruncrcareauneivaloriatablouluinmemorieeste:
ld%r3,%r4,
sll%r6,2,
ld[A+%r6],%r1
!%r6<INDEXSTART
!%r6<%r6*4
!%r1<valoareadintablou
(sllesteoperaiashiftleftlogicaldeplasarelastngalogic).Pentruaaccesaun
elementaltablouluiestenevoiedetreiinstruciuni,iardacSIZEnuesteputerea
lui 2 atunci e nevoie chiar de mai multe. n C, START fiind 0, se economisete o
instruciune main pentru accesarea unui element al tabloului. Aceasta duce la o
eficien mai mare a programelor care efectueaz accesri intense la elementele
unuitablou(programetiinificeideinginerie).
Instruciuniaritmetice
La instruciunile aritmetice pot s apar unele complicaii n mainile
ncrcare/stocare cum este maina ARC i mainile comerciale RISC. Indiferent de
numrul de registre cu care este dotat o main, exist posibilitatea ca un
compilator s ntlneasc o instruciune aritmetic ce necesit mai multe registre
dect sunt disponibile. n acest caz, compilatorul trebuie s stocheze variabilele
temporar pe stiv. Compilatoarele folosesc tehnici sofisticate pentru a decide care
registresuntdisponibile,folosindotehnicdinteoriagrafurilornumitcolorarea
106
registrelor,ipentruadecidecndnumaiestenevoiedeoanumitvaloaredintr
unregistru.
Controlulexecuieiprogramului
Majoritatea arhitecturilor de seturi de instruciuni folosesc ramificri condiionate
i indicatorii aritmetici ai procesorului pentru a implementa structurilor pentru
controlul execuiei programului. n continuare vom prezenta cele mai importante
instruciunipentrucontrolulexecuiei.
Cea mai trivial instruciune este instruciunea goto, goto Etichet, care este
implementatprininstruciuneaderamificarenecondiionatba(branchalways).
InstruciuneaifelsearenlimbajulCsintaxa:
if(expr)instr1.elseinstr2.
Compilatorul va evalua expresia logic expr, i va executa una din cele dou
instruciuni n funcie de valoarea de adevr a expresiei. Dac presupunem c
expresia este %r1 == %r2 i introducem instruciunea bne (branch if not equal)
atuncicodulpentruimplementareainstruciuniiifelseeste:
subcc%r1,%r2,%r0
bneOver
!codulinstruciunii1
baEnd
Over:!codulinstruciunii2
End:
Instruciuneawhile,arenlimbajulCsintaxa:
while(expr)instr;
while(%r1==%r2)%r3=%r3+1;
sepoateimplementaeficientnasamblareastfel:
baTest
True:add%r3,1,%r3
107
BeTrue;
Instruciuneadowhileare,nlimbajulC,sintaxa:
doinstruciunewhile(expresie)
Instruciuneaforare,nlimbajulC,sintaxa:
for(expr1;expr2;expr3)instruciune;
expr1;
while(expr2){
instruciune;
expr3;
}
Instruciuneaforseimplementeaznasamblarelafelcaiinstruciuneawhilecuo
singurmodificare:seadaugcodulpentruexpr1iexpr3.
Procesuldeasamblare
Procesuldetraducereaprogramuluidinlimbajdeasamblarenlimbajmaineste
numit proces de asamblare. Procesul de asamblare este unul direct i simplu, din
moment ce exist o coresponden unulaunu ntre instruciunile n asamblare i
instruciunile main. Spre deosebire, la compilare o instruciune din limbajul de
programare de nivel nalt poate fi tradus n limbaj de asamblare n mai multe
moduriechivalentedinpunctdevederecomputaional.
Chiar dac asamblarea se face direct, totui este grea i supus erorilor dac este
fcutdeopersoan.Defapt,asamblorulafostprimulsoftwarecreatdupinvenia
calculatoruluielectronicdigital.
Asambloareleaucelpuinurmtoarelefuncii:
Permit programatorului s specifice locaiile de la execuie ale datelor i
programelor. (de cele mai multe ori programatorul nu specific o locaie de
pornireabsolutpentruunprogram,deoareceprogramulvafimutat,relocatde
ctrelinkeditorsaudencrctoraacumvomvedeamaitrziu).
Furnizeaz mnemonici n limbaj de asamblare pentru toate instruciunile
main i modurile de adresare i traduc instruciunile valide din asamblare n
echivalentullorbinardinlimbajmain.
108
Oferprogramatoruluiposibilitateadeainiializadateledinmemorienainte
deexecuiaprogramului.
Permit utilizarea de etichete simbolice pentru reprezentarea adreselor i a
constantelor.
Furnizeaz programatorului posibilitatea de a specifica adresa de pornire a
programului, dac exist una. (dac modulul asamblat este o procedur sau
funcieatuncinuarfioadresdepornire).
Furnizeazunanumitgraddearitmeticlamomentulasamblrii.
Includ mecanisme ce permit variabilelor s fie definite ntrun program n
limbajdeasamblareisfiefolositentrunaltprogramasamblatseparat.
Furnizeazsuportpentruexpansiunearutinelormacro,adic,rutinecarepot
fidefiniteosingurdatiinstaniatemaiapoidecteorienevoie.
nprocesuldeasamblareaacestuiprogramvomfolosiformatelepentruinstruciuni
dinfigurademaijos:
109
Asamblareiasambloarendoipai
Majoritateaasambloarelortrecpesteprogramulnlimbajdeasamblarededouori
i de aceea se numesc asambloare n doi pai. La primul pas se determin adresa
tuturorelementelordedateiinstruciunilormainiseselecteazinstruciunile
maincesevorproducepentrufiecareinstruciunenasamblare(laacestpasnu
segenereazcodulmain).
Adresele datelor i instruciunilor sunt determinate prin folosirea unui analog la
nivel de asamblare pentru contorul program, numit contor de locaie. Contorul de
locaieineevidenainstruciuniicurentesauadatelorpemsurceseefectueaz
compilarea. De regul este iniializat la zero la nceputul primului pas i este
incrementat cu dimensiunea fiecrei instruciuni. Pseudooperaia .org determin
contorul de locaie s fie setat la o valoare specificat de instruciunea .org. Dac
asamblorulntlneteinstruciunea
.org1000
va seta contorul de locaie la 1000, iar instruciunea urmtoare sau datele vor fi
asamblate la acea adres. n timpul primului pas, asamblorul efectueaz orice
aritmetic de la momentul asamblrii i insereaz definiiile tuturor etichetelor i
valorilorconstantentrotabel,numittabeladesimboluri.
Motivulprincipalpentruexistenaceluidealdoileapasestedeapermiteutilizarea
n program a simbolurilor, nainte de a fi definite, ceea ce se numete refereniere
nainte(engl.forwardreferencing).Dupacestprimpas,asamblorulaidentificatia
introdusntabeladesimboluritoatesimbolurile,intimpulceluidealdoileapas
se va genera codul main, prin inserarea valorilor simbolurilor valori care sunt
cunoscutealacestaldoileapas.
Acum vom asambla manual programul de mai sus. Cnd asamblorul ntlnete
primainstruciune:
ld[x],%r1
Cmpul rs1 identific registrul, %r0 n acest caz, care este adunat cu cmpul
simm13pentruaformaadresaoperanduluisurs.Urmeazbituli.Bituliestefolosit
pentruafacedistinciantreprimulformatdeinstruciunedememorie(i=0)icel
dealdoilea(i=1).Deaceeabituliestesetatlavaloarea1.Cmpulsimm13specific
adresaeticheteix,careaparelacincicuvintedupprimainstruciune.Dinmoment
ce prima instruciune apare la adresa 2048 i din moment ce fiecare cuvnt este
format din patru octei, adresa lui x este la 5 x 4 = 20 de octei dup nceputul
programului.Adresaluixvafi2048+20=2068,caresereprezintprinsecvenade
13bii:010000010100.Aceastsecvenintrncmpulde13biisimm13.
Prinurmareprimalinieaprogramuluivafiasamblatastfel:
11
op
00001 00000000000 1
rd
op3
rs1
0100000010100
i
simm13
11
op
00010 00000000000 1
rd
op3
rs1
0100000011000
i
simm13
Procesuldeasamblarecontinupncndtoatecele8liniisuntasamblate:
ld [x], %r1
ld [y], %r2
addcc %r1,%r2,%r3
st %r3, [z]
15
Asamblorulciteteinstruciunileunacteunaigenereazcodmainpentruele.O
problem care poate s apar, aa cum sa menionat, este referenierea nainte a
unorsimboluri.nsecvenademaijos:
111
la ntlnirea instruciunii call, asamblorul nu tie care este locaia lui sub_r din
momentceetichetasub_rncnuafostntlnitdeasamblor.Aac,referinaeste
includ n tabela de simboluri i este marcat ca fiind nerezolvat. Referina va fi
rezolvatdoarmaitrziucndestentlnitnprogram.
Asamblareitabeladesimboluri
Tabeladesimboluriestecreatlaparcurgereapentruprimadataprogramului(la
unasamblorndoipai).Unsimbolesteorioetichet,oriunnumesimboliccarese
referlaovaloarefolositntimpulprocesuluideasamblare.
Pentru a vedea cum opereaz un asamblor n doi pai, s considerm asamblarea
coduluidemaijos:
Crearea tabelei de
simboluri
Asamblorulntlneteinstruciunea.org2048.Aceastavadeterminacaasamblorul
s seteze contorul de locaie la valoarea 2048 i asamblarea continu de la acea
adres.Primainstruciuneeste:
a_start.equ3000
112
ld[length],%r1
esteasamblatlaadresaspecificatdecontoruldelocaie,2048.Contoruldelocaie
esteincrementatcudimensiuneauneiinstruciuni,adic4octei,la2052.Cndeste
ntlnit simbolul length, asamblorul nc nu a vzut definiia lui. n tabela de
simboluri se creeaz o poziie pentru length, care este primete iniial valoarea
nedefinitaacumsevedenfigurademaisus(a).
Asamblorulntlneteinstruciunea:
ld[address],%r2
careesteasamblatlaadresa2052iseintroducentabeladesimbolurisimbolul
address a crui valoare se seteaz din nou la nedefinit. Contorul de locaii este
mritcu4la2056.Instruciuneaandccesteasamblatlaadresa2056,iarcontorul
de locaie este mrit cu 4 octei, la 2060. Urmtorul simbol care este ntlnit este
loop, care este introdus n tabela de simboluri cu valoarea 2060 valoarea
contoruluidelocaie.Urmtorulsimbolntlnitestedone,simbolceesteintrodusn
tabeladesimbolurifrovaloaredinmomentcenuestencdefinit.
Primulpasalasamblriicontinuisimbolurilenerezolvate:length,address,idone
primesc valorile 2092, 2096 respectiv 2088. Eticheta a este introdus n tabela de
simboluri cu valoarea 3000. Eticheta done apare la locaia 2088 deoarece sunt 10
instruciuni (40 de octei) ntre nceputul programului i done. Adresele pentru
restul etichetelor sunt calculate ntrun mod similar. Dac mai rmn etichete
nedefinitelasfritulprimuluipas,atuncinseamncexistoeroarenprogrami
asamblorul va semnala care este simbolul nedefinit i va opri procesul de
asamblare.
Dupcreareatabeleidesimbolurincepealdoileapasalasamblrii.Programuleste
parcurs nc o dat de la instruciunea .begin, dar de data asta se genereaz cod
obiect.Primainstruciunentlnitcedetermingenerareadecodesteldlalocaia
2048.Dintabeladesimbolurisevedecporiuneadeadreseainstruciuniildeste
2092 pentru adresa lui length aa c se genereaz cod de dimensiune egal cu un
cuvntfolosindformatulMemoryaacumsevedenfigurademaijos.
113
Aldoileapascontinulafelpncndsetranslateaztotcodul.
Sarcinilefinalealeasamblorului
Dupterminareaasamblriiseadauglamodululasamblatinformaiesuplimentar
cevafifolositdelinkeditoriasamblor.
Numele modulului i dimensiunea. Dac modelul de execuie implic
segmente de memorie pentru cod, date i stiv atunci trebuie precizate
dimensiunileiidentitilediferitelorsegmente.
Adresa simbolului de start, dac este definit n modul. Majoritatea
asambloarelorilimbajelordenivelnaltfurnizeazoetichetrezervatspecial
cepermitprogramatoruluisspecificeloculncareprogramultrebuiesnceap
execuia. De exemplu, n C este funcia main(). Eticheta main este un semnal
pentruasamblorcexecuiatrebuiesnceapnacelloc.
Informaie despre simbolurile globale i externe. Linkeditorul va trebui s
tie adresa simbolurilor globale definite n modul i exportate de modul, i va
trebui s tie ce simboluri rmn nedefinite n modul deoarece acestea sunt
definitecaglobalenaltemodule.
Informaie despre rutinele de bibliotec care sunt refereniate de modul.
Unele biblioteci conin funcionalitate ce apare de multe ori cum ar fi funcie
matematicesaualtefunciispecializate.
Valorileconstantelorcetrebuiencrcatenmemorie.Unelencrctoarecer
cainiializareadatelorsfiespecificatseparatdecodulbinar.
114
Informaiederelocare.Cndlinkeditorulesteinvocatmajoritateamodulelor
ce trebuie linkeditate vor trebui relocate n momentul cnd modulele sunt
concatenate.
Localizareaprogramelornmemorie
Pn acum am presupus c programele sunt localizate n memorie la o adres ce
este specificat de pseudooperaia .org. Aceasta sar putea s fie n regul pentru
programare de sisteme, atunci cnd programatorul are un motiv bine ntemeiat
pentru ca programul s se afle la acea locaie de memorie dar, de regul,
programatorulnuesteinteresatdelocalizareaprogramuluinmemorie.Atuncicnd
programareasamblatesaucompilateseparatsuntlegate,estedificilsaupoatechiar
imposibil pentru un programator s tie cu exactitate unde va fi localizat fiecare
modul dup linkeditare. Din acest motiv majoritatea adreselor sunt specificate ca
fiindrelocabilenmemorie,cuexcepiaunoradreseparticularecumarfiadresele
de intrareieire, care sunt fixate la locaii de memorie absolute. Asamblorul este
responsabilpentrumarcaresimbolurilorcafiindrelocabile.Dacunanumitsimbol
este relocabil sau nu depinde att de limbajul de asamblare ct i de conveniile
sistemului de operare. Informaia de relocare este inclus n modulul asamblat
pentruafifolositdelinkeditorsaudencrctor.
Linkeditareincrcare
Majoritatea aplicaiilor vor fi formate dintro serie de module compilate sau
asamblateseparat.Acestemodulepotfigeneratedediferitelimbajedeprogramare
saupotfiprezententrunmodulfurnizatcaparteamediuluipentrudezvoltareade
aplicaiisauasistemuluideoperare.Fiecaremodultrebuiesfurnizezeinformaia
pe care am prezentato mai sus, pentru ca s poat fi legate mpreun pentru
ncrcareiexecuie.
Un linkeditor, este un program care combin programele asamblate separat
(numite module obiect) ntrun singur program, numit modul ncrcabil. Link
editorul rezolv referinele globale externe i relocheaz adresele de memorie n
modulele separate. Modulul ncrcabil poate fi ncrcat n memorie de ctre
ncrctor,carelarndulsupoatemodificaadreseledacprogramulestencrcat
laolocaiediferitdelocaiadencrcarefolositdelinkeditor.
TehnicaDLL(DynamicLinkLibrary)dinWindows,prezentsubdiferiteformein
alte sisteme de operare, amn linkeditarea unor componente pn cnd este
nevoiedeelelaexecuie.
Linkeditare
n procesul de combinare a modulelor asamblate sau compilate separat ntrun
modulncrcabil,linkeditorultrebuies:
115
Rezolvereferinelelaadresecaresuntexternemodulelorpemsurcesunt
linkeditate.
Relocheze fiecare modul prin combinarea lor caplacap. n timpul acestui
proces de relocare multe adrese din modul trebuie s fie schimbate pentru a
reflectanoualorlocaie.
Specificesimboluldepornirealmodululuincrcabil.
Dacmodululdememorieincludemaimultdeunsegmentdememorie,link
editorultrebuiesspecificeidentitileiconinutuldiferitelorsegmente.
Rezolvareareferinelorexterne
Pentru rezolvarea referinelor externe linkeditorul trebuie s fac distincie ntre
numele simbolurilor locale (folosite n cadrul unui singur modul surs) i numele
simbolurilorglobale(folositenmaimultdeunmodul).Aceastaserealizeazprin
folosirea pseudooperaiilor .global i .extern n timpul asamblrii. Pseudooperaia
.global indic asamblorului s marcheze simbolul ca fiind disponibil altor module
obiectntimpulfazeidelinkeditare.Pseudooperaia.externidentificoetichetce
este folosit ntrun modul dar este definit ntraltul. Astfel, .global este folosit n
modululncaresimbolulestedefiniti.externestefolositnfiecaremodulcarese
referlasimbol.Doareticheteledeadresepotfiglobalesauexterne:nuaraveasens
s marcm un simbol .equ ca fiind global sau extern, din moment ce .equ este o
pseudooperaie care este folosit doar n timpul procesului de asamblare, iar
procesuldeasamblareestencheiatnmomentulncarencepelinkeditarea.
Toate etichetele referite dintrun program referite din alte programe, vor avea o
liniedeforma:
.globalsimbol1,simbol2,
Toate celelalte etichete sunt locale, ceea ce nseamn c aceeai etichet poate fi
folositnmaimultdeunmodulsursfrconfuziedinmomentceetichetelelocale
nusuntfolositedupceprocesuldeasamblaresetermin.Unmodulcesereferla
simboluri definite ntrun alt modul trebuie s declare acele simboluri folosind
forma:
.externsimbol1,simbol2,
Unexempludeutilizaree.globali.externestedatnfigurademaijos:
116
Fiecaremodulesteasamblatseparatnmoduleobiect,fiecarecupropriatabelde
simboluri,aacumsevedenfigurademaijos:
Relocare
nceledouprogramedemaisus,att maincti subauaceeaiadresdepornire
2048.Esteevidentcelenupotocupaaceeaiadresdememorie.Dacceledou
module sunt asamblate separat, asamblorul nu are cum s detecteze aceast
problem. Pentru a rezolva problema, asamblorul marcheaz ca relocabile
simbolurileacroradressepoateschimbantimpulprocesuluidelinkeditare,aa
cumsevedentabeleledemaisus.Ideeaestecunprogramasamblatlaadresade
start2048poatefincrcatlaadresa3000,attatimpcttoatereferinelelaadrese
relocabile din program sunt mrite 20002048 = 952. Relocarea se face de ctre
linkeditoraacadreselerelocabilesuntmodificatecuaceeaivaloarecucaresa
modificat originea de ncrcare. Adresele absolute sau nonrelocabile (cum ar fi
adresaceamaimareposibilpentrustiv2314)rmnlafelindiferentdeoriginea
lacaresencrcprogramul.
Asamblorulesteresponsabilpentrudeterminareaetichetelorrelocabileatuncicnd
construietetabeladesimboluri.Nuaresenscaoetichetexternsfierelocabil,
117
dinmomentceetichetaestedefinitntrunaltmodul,aacnsubnuareniciun
simbolrelocabilntabeladesimboluripentruprogramul main,darsubestemarcat
ca relocabil n biblioteca de subrutine. Asamblorul trebuie s identifice cod n
modululobiectcetrebuiesfiemodificatcarezultatalrelocrii.Numereleabsolute,
cumarficonstantele(marcatecu.equ,sauceleceaparnlocaiidememorie,cumar
ficoninutullui xi y,careeste105i92)nusuntrelocabile.Locaiiledememorie
poziionaterelativlaoinstruciune.org,cumarfi xi y(nuconinutullui xi y!)de
obiceisuntrelocabile.Referinelelalocaiifixe,cumarfirutinelegraficerezidente
permanentcaresuntnglobatenhardwaredinfabricaie,nusuntrelocabile.Toat
informaiadecareestenevoiepentruarelocaunmodulestestocatntrundicionar
derelocareconinutnfiierulasamblati,astfelestedisponibillinkeditorului.
ncrcare
ncrctorul este un program care plaseaz modulul n memoria principal.
Conceptual, sarcina ncrctorului nu este dificil. Trebuie s ncarce diferitele
segmentedememoriecuvalorilepotriviteisiniializezeanumiteregistre,cumar
fi%sp(stackpointer)i%pc(programcounter),lavaloriiniiale.
Dac exist un singur modul de ncrcare ce se execut la un moment dat, atunci
acestmodelfuncioneazbine.Totui,nsistemeledeoperaremodernemaimulte
programe sunt rezidente n memorie la un moment dat i asamblorul sau link
editorulnupoatetilaceadresesevorgsiacesteprograme.ncrctorultrebuie
srelochezeacestemodulelancrcareprinadugareaunuioffsetcoduluirelocabil
din modul. Acest tip de ncrctor (loader) se numete ncrctor cu relocare.
ncrctorul cu relocare nu repet doar sarcina linkeditorului. Linkeditorul
combin mai multe module obiect ntrun singur modul de ncrcare, pe cnd
loaderul doar modific adresele relocabile dintrun singur modul de ncrcare
astfel ca mai multe programe s poat rezida n memorie simultan. Un loader cu
legare (linking loader) efectueaz att procesul de linkeditare ct i procesul de
ncrcare: rezolv referinele externe, relocheaz modulele obiect i le ncarc n
memorie.
Fiierulexecutabillegatconineinformaiinantetcedescriuundetrebuiencrcat,
adresa de start i eventual informaiile de relocare, i punctele de intrare pentru
rutinelecaretrebuiesfiedisponibileextern.
DLL(DynamicLinkLibrarie)
Conceptul de bibliotec cu legare dinamic are numeroase trsturi atractive.
Rutinele folosite n mod obinuit, cum ar fi cele pentru gestiunea memoriei sau
pachetelegraficetrebuiesexistentrunsingurloc,bibliotecaDLL.Aceastaducela
programe de dimensiuni mai mici ntruct programele nu trebuie s aib propria
copie a codului din DLL. Toate programele partajeaz acelai cod, chiar i atunci
cndruleazsimultan.
118
Unexempludeprogramare
Sconsidermproblemaadunriiadounumerepe64debiifolosindlimbajulde
asamblare ARC. Putem stoca numerele pe 64 de bii n dou cuvinte de memorie
distincte i s adunm separat cele dou perechi de cuvinte. Dac se genereaz
transportlaadunareacelordoucuvintemaipuinsemnificative,atuncitransportul
esteadunatlacuvntulmaisemnificativalrezultatului.
nfigurademaijosavemoposibilsoluielaaceastproblem.
Operanziipe64debiiAi Bsuntstocainmemorienformatulbigendian,ncare
cei mai semnificativi 32 de bii sunt stocai la adresa de memorie mai mic.
ProgramulncepeprinncrcareacuvintelorluiAn%r1(cuvntulmaisemnificativ)
in %r2(cuvntulmaipuinsemnificativ).Celedoucuvintealelui Bsencarcn
%r3i %r4.Subrutina add_64esteapelat,careadun Acu Biplaseazcuvntulmai
semnificativ al rezultatului n registrul %r5 iar cuvntul mai puin semnificativ n
%r6.Rezultatulde64debiisestocheaznCiprogramulsetermin.
Subrutina add_64 ncepe prin a aduna cele dou cuvinte mai puin semnificative.
Dacnusegenereaztransport,atuncicuvintelemaisemnificativesuntadunatei
rutina se termin. Dac se genereaz transport atunci acesta trebuie adunat la
cuvntul mai semnificativ al rezultatului. Dac nu se genereaz transport la
adunareacuvintelormaisemnificative,atuncitransportuldelacuvntulmaipuin
semnificativ al rezultatului este doar adunat la cuvntul mai semnificativ al
rezultatului i rutina se termin. Dac, se genereaz transport la adunarea
cuvintelor mai semnificative, atunci cnd transportul de la cuvntul mai puin
semnificativ este adunat la cuvntul mai semnificativ, starea final a codurilor de
condiievorartacnuavemtransportcareiesedincuvntulmaisemnificativ,ceea
ce este greit. Codul de condiie pentru transport este refcut prin plasarea unui
numrmaren%r7iadunareacuelnsui.
119
Macrouri
Dac se folosete o convenie de apel bazat de stiv, atunci un anumit numr de
registrevorfiintroduseiscoasedepestivnmodfrecventntimpulapelurilori
ntoarcerilor din subrutine. Pentru a pune pe stiv registrul %r15 al ARC, trebuie
primadatsdecrementmpointeruldestiv(careesten%r14)iardupaceeas
copiem %r15 n locaia de memoria indicat de %r14, aa cum prezentm n
secvenademaijos:
addcc%r14,4,%r14 !decrementareapointeruluidestiv
st%r15,%r14
!sepune%r15pestiv
Onotaiemaicompactpentrurealizareaaceluiaiefecteste:
120
Pelinia.macroprimulsimbolestenumeremacrourlui(push),iarrestulsimbolurilor
sunt argumentele liniei de comand folosite n macro. Exist un singur argument
pentru macroul push, i anume arg1. Aceasta corespunde lui %r15 n instruciunea
push %r15 sau lui %r1 n instruciunea push %r1. Argumentul este legat de arg1 n
timpulprocesuluideasamblare.
Potfifolosiiiparametriformalisuplimentari,separaiprinvirgul:
.macronumearg1,arg2,arg3,
iarmacroulestemaiapoiapelatcuacelainumrdeparametriactuali.
nume%r1,%r2,%r3,
Corpul macroului urmeaz dup pseudooperaia .macro. Orice comenzi pot urma,
inclusiv alte macrouri, sau chiar i apeluri la acelai macro, ceea ce duce la o
dezvoltarerecursivlaasamblare.Parametricareaparnlinia.macropotfinlocui
orice text din corpul macroului, aa c aceti parametri pot fi folosii pentru
etichete,instruciunisauoperanzi.
n timpul macroexpansiunii parametri formali sunt nlocuii cu parametri actuali
folosind o substituie simpl textual. Astfel, macroul push poate fi apelat att cu
argumentedememoriecticuregistre.
push%r1
sau
pushfoo
Dac argumentul lui .if este true, atunci codul care urmeaz pn la .endif este
asamblat.Dac argumentul este false atunci codul dintre .if i .endif este ignorat de
ctreasamblor.Operatoriicondiionalipentrupsedudooperaia.ifpotfioricaredin
mulimea{<,=,>,>=,<=,}.
n figura de mai jos este prezentat o macrodefiniie recursiv i extinderea ei n
timpulprocesuluideasamblare.
Concluzii
Unlimbajdeprogramaredenivelnalt,cumsuntCsauPascalpermitcaarhitectura
sistemuluidecalculdelanivelurileinferioaresfietratatlamodulabstract.Pede
alt parte, un program n limbaj de asamblare are o form care este foarte
dependent de arhitectur. Arhitectura setului de instruciuni este vizibil
programatorului, care este responsabil de modul n care sunt folosite registrele i
linkeditarea subrutinelor. O parte din complexitatea programrii n limbaj de
asamblareestegestionatprinfolosireademacrouri,carediferdesubrutinesau
122
123
7. Comunicaii
Comunicaiaesteprocesuldetransferareainformaieidelaosurslaodestinaie.
Sistemeledecomunicaieacoperdistaneledintrecalculatoareiimplicsistemul
public de telefonie, radio i televiziune. Sistemele de comunicaie pe arie larg au
devenit foarte complexe, transminduse combinaii de voce, date i video prin
firele de comunicaie, fibre optice, radio i microunde. Rutele de comunicaie trec
attprinpmntctiprinap,underadioisatelii.Datelecepornesccasemnal
analogicdevocepotficonvertitenfluxuridedatedigitalepentruorutareeficient
pestedistanemariisuntconvertiteladestinaienapoinsemnalanalog,frca
ceicecomunicscontientizezeacestfapt.
n continuare ne vom concentra asupra comunicaiilor ntre entiti localizate la
distane cuprinse ntre civa metri pn la un kilometru (LAN Local Area
Network) i entiti localizate la o distan mult mai mare (WAN Wide Area
Network),unexemplutipicfiindchiarreeauaInternet.
Modemuri
Oamenii comunic prin linii telefonice prin care semnalul sonor este convertit n
semnale electrice, ce sunt transmise la destinatar, unde sunt convertite napoi n
sunet. Aceasta nu nseamn c oamenii trebuie ntotdeauna s vorbeasc i s
ascultepentruaputeacomunicaprinliniiletelefonice.Acestmediudecomunicaie
poate transmite i informaia nonauditiv ce este transformat ntro form
auditiv.
n figura de mai jos prezentm o configuraie n care dou calculatoare comunic
prin linia telefonic prin utilizarea de modemuri (prescurtare de la modulator
demodulator).
Modemultransformsemnalulelectricdelacalculatorntroformauditivpentru
afitransmisiefectueazoperaiainversladestinaie.Modemurilesuntfolosite
doar pe liniile de comunicaie telefonice i n alte sisteme cum ar fi CATV
(transmisiadedateprinreeleledecabluTV).
Comunicaia prin modem pe liniile telefonice este efectuat ntrun mod serial, n
care biii au o codificare potrivit pentru mediul de transmisie. Exist numeroase
scheme de modulare folosite n comunicaie, ce reprezint codificri ale datelor n
mediuldecomunicaie.nfigurademaijossuntprezentatetreiformeobinuitede
modulare.
124
125
Mediidetransmisie
ntrunmediunchis,calculatoarelepotfiinterconectatendiferitemoduri.Pentru
sistemeleaflateladistansepoatefolositsistemulpublicdetelefonie.Utilizatorii
se pot conecta la sistemul detelefonie cu modemuri ce convertesc biii n sunete.
Oameniipotauzifrecvenedepnla20KHzdarpotemitesunetedepnla4KHz,
ceeaceesteaproximativlimeadebandpecareolinietelefonicotransmite.Un
semnal analog (vocea) care este aproximat cu un semnal digital trebuie s fie
eantionatcelpuindedouoriperciclu(pentruacaptavalorilemariimici),aa
coratdeeantionarede8KHzestenecesarpentruadigitizaoliniecetransmite
voce. La 8 bii/eantion, se obine o rat de 8bii/ciclu x 8 KHz = 64 Kbit/s. Un
eantion la fiecare 8 este folosit pentru administrarea liniei telefonice, aa c rata
maximposibilestede56Kbit/s.
Osecvenbinartransmisesteconvertitnvalorimari/mici,darfluctuaiilesunt
atenuateidistorsionatelafrecvenemariipedistanelungi.nfigurademaijos
esteprezentataceastproblemaeantionrii.
Fluctuaia ideal
Fluctuaia transmis
La receptor
Secvena binar 01011001 este reprezentat printro fluctuaie ideal, care este
aproximat de fluctuaia transmis. Fluctuaia ideal conine discontinuiti, care
sunt dificil de produs la fluctuaii reale. Frecvenele nalte sunt atenuate mai mult
dect frecvenele joase n majoritatea mediilor i frecvene diferite se propag la
rate diferite, ceea ce duce la distorsiuni ale fluctuaiilor pe msur ce se propag.
Graduldedistorsiunevariazcumediuldetransmisie.
126
Liniideschisecudoufire
Celmaisimplumediudecomunicaieesteoperechedefirecetransportsemnalul
respectiv GND (ground). Firele emit radiaii electromagnetice i preiau zgomot n
cantiti diferite pentru cele dou linii, ceea ce distorsioneaz semnalul. Viteza i
distanalacaresepoatetransmitesemnalulsuntlimitate(19.2KHzrespectiv50m).
Liniitorsadatenpereche
Dacsersucescperechiledefiredeschiseatuncizgomotulexternvaafectaambele
fire la fel. n felul acesta poate crete att viteza ct i distana la care poate fi
transmissemnalul(1Mbpsrespectiv100m).
Cablucoaxial
Pentru viteze i distane mai mari (10Mbps, sute de metri) firul de semnal este
plasatininteriorulluiGNDnmodcoaxialcu unizolatorntre ele.Ideeaestedea
formaunscutpentruliniadincentrucareoprotejeazdeinterfereneleexternei
depierderiledesemnaldatorateradiaiilorelectromagnetice.
Fibroptic
Comunicaiaopticesteimunlainterfereneelectromagnetice isuportolime
debandmultmaimare. Lafiecare capte nevoiedeoconversie optoelectronic,
ceeaceestedisponibilpnlacivaGbps(folosinddiodelaser).Fibraopticconst
dintrunmiezoptic,unnveliopticiunizolatordeplastic.
Exist mai multe tipuri de fibre optice cu capabiliti i performane diferite:
multimodesteppedindexfiber,multimodegradedindexfiber,singlemodefible.
127
Satelii
Sateliii de comunicaie ce orbiteaz n jurul Pmntului sunt folosii atunci cnd
este nevoie de a transmite semnalul pe o distan foarte mare cu costuri mai mici
dectliniiledecomunicaieterestre(maiieftinidectfibreleoptice).
ncomunicaiaprinsateliimicroundelesunttransmisedelasollasatelit,undeun
transponderceacoperoanumitbanddefrecveneretransmitesemnalullaoalt
zondepePmntaflatnariadeacoperireasatelitului.
Un satelit are o serie de transpondere. O arie de acoperire mai mic nseamn c
semnalul transmis este mai puternic i c antenele receptoare pot fi mai mici.
Aceasta este tipic la sateliii ce transmit semnal TV. Sateliii folosii pentru
transmitereasemnaluluiTVsuntplasaipeorbitejoase(aprox.700Km)aaceste
nevoie de o zon mai mic de colectare a semnalului, pe cnd sateliii plasai pe
orbite geosincrone (aprox. 23000 mile deasupra Pmntului) unde fora
gravitaionalaPmntuluiiforacentrifugsuntnechilibru,aacsateliiipar
staionarideasupraPmntului,orbitalorfiinddeasupraecuatorului.Pentruaceti
sateliiestenevoiedeantenemultmaimarindreptatenspreecuator.
Pentru comunicaie n ambele sensuri cu sateliii, exist o ntrziere tolerabil.
Uplinkul este mai lent dect downlinkul. Aceasta se potrivete cu modul de
operarealunuiutilizatorobinuitalInternetului,deoarecemaipuinde10%din
traficuldeInternetestetransmisdelautilizatornspreafaripeste90%dintrafic
esteadusdeutilizatordinInternet.Vitezadecomunicaieestelimitatdec(viteza
luminiinvid), care esteaproximativ300000km/s.pentruodistande23000 de
mile ntrzierea este de 100ms pn la satelit i nc 100ms napoi i n plus mai
apareintrziereadeprocesare.
Microundeterestre
Legturile terestre prin microunde sunt utile pe distane de pn la 50Km atunci
cnd trebuie transmis semnalul n zone greu accesibile dar sunt afectate de
turbulenelemeteorologice.
Radio
nreeleleradiocelulare,ostaieradioesteplasatnmijloculcelulei,carederegul
arediametrulmaimicde20dekm.Obandrestricionatdefrecveneestefolosit
n cadrul celulei, pentru comunicaia ntre dispozitivele celulare i staie. Celulele
nvecinatefolosescoaltbanddefrecvene,aacnuexistconfuzielagraniele
dintre celuleatunci cndunutilizatortrecedelao celullaaltantimp ce esten
micare.nacestesituaiideregularelocoschimbaredefrecven.
128
Arhitecturidereea:LAN
Un LAN (Local Area Network) este un mediu de comunicaie care interconecteaz
calculatoarentrogeograficlimitatlacelmultcivakilometri.UnLANpermite
unui set de calculatoare i alte dispozitive s partajeze resurse comune cum ar fi:
date,aplicaiisoftware,imprimanteidispozitivedestocare.
Un LAN este format din hardware, software i protocoale. Hardwareul const din
cabluri i circuite de interfa. Softwareul de regul este integrat n sistemul de
operareiesteresponsabilpentruconectareaunuiutilizatorlareea.Protocoalele
sunt mulimi de reguli care guverneaz formatul, sincronizarea, secvena i
controlulerorilor.Protocoalelesuntimportantepentruasigurareafaptuluicdatele
suntmpachetatepentruafitrimisepereeaisuntextrasedinreeanmodcorect.
Datele sunt descompuse n elemente; fiecrui element i se adaug un antet care
conine informaii despre anumii parametri cum ar fi destinaia, sursa, biii de
protecie mpotriva erorilor i o marc de timp. Datele sunt combinate cu antetul
pentru a forma pachete ce sunt trimise n reea. Receptorul recurge la procesul
inversdeextragereadatelordinpachete.
Procesul de comunicaie prin reea este de regul efectuat ntro ierarhie de pai,
fiecareavndpropriulprotocol.Paiitrebuieefectuainordinepentrutransmisiei
ordineinverspentrurecepie.Aceastaducelanoiuneadestivdeprotocoale,ceea
ceizoleazprotocolulfolositncadrulierarhiei.
ModelulOSI
Modelul OSI (Open System Interconnection) este un set de protocoale stabilite de
ISO(InternationalStandardOrganization)nncercareadeadefiniiastandardiza
comunicaiadedate.ModelulOSIafostnlocuitdemodelulInternetTCP/IPdarin
ziua de astzi influeneaz comunicaia prin reea, n principal n industria
telecomunicaiilor.
n modelul OSI procesul de comunicaie este mprit n apte niveluri: aplicaie,
prezentare, sesiune, transport, reea, legtur de date i fizic aa cum se vede n
figurademaijos.
129
ModululOSInudosingurdefiniierelativlamodulncarearelocefectivprocesul
de comunicaie a datelor. Modelul OSI servete ca referin pentru modul n care
acest proces al trebuie mprit i ce protocoale ar trebuie folosite la fiecarenivel.
Conceptulestecafurnizoriide echipamentepotselectaunprotocolpentru fiecare
nivel asigurnd n acelai timp compatibilitate cu echipamente de la ali furnizori
carefolosescalteprotocoale.
Nivelul cel mai de sus n modelul OSI este nivelul aplicaie, care furnizeaz o
interfacepermiteaplicaiilorscomuniceunacualtaprinreea.Ofersuportde
nivelnaltpentruaplicaiicareinteracioneazprinreea,cumarfiserviciidebaze
de date pentru programe ce acceseaz baze de date prin reea, tratarea mesajelor
pentru programele de email i manipularea fiierelor pentru programele de
transferdefiiere.
Nivelulprezentareasigurcinformaiaesteprezentataplicaiilordecomunicaie
ntrunformatcomun.Aceastaenecesardeoarecesistemediferitepotfolosiintern
formate diferite de date. De exemplu, unele sisteme folosesc formatul intern big
endian pe cnd altele folosesc littleendian. Funcia nivelului prezentare este de a
izolaaplicaiadeacestediferene.
Nivelulsesiunestabileteiterminsesiuniledecomunicaientreprocese.Nivelul
sesiune este responsabil pentru meninerea integritii comunicaiilor chiar i
atuncicndniveluriledemaijospierddate.Deasemeneasincronizeazschimbuli
stabilete puncte de referin pentru continuarea unui proces de comunicaie
ntrerupt.
Nivelultransportasigurtransmisiasigurdelasursladestinaie.Alocresursede
comunicaie astfel ca datele s fie transmise rapid i eficient. Nivelul sesiune face
cereri nivelul transport, care ordoneaz cererile i face compromisuri ntre vitez,
cost i capacitate. De exemplu, transmisia poate fi mprit n mai multe pachete,
caresunttransmise prinmaimultereele pentruaobineuntimpdecomunicaie
mai mic. Pachetele pot ajunge la destinaie ntro ordine aleatoare, iar nivelul
transport este responsabil ca nivelul sesiune s primeasc pachetele n aceeai
ordinencareaufosttrimise.Nivelultransportfurnizeazcorectareadeeroridela
surs la destinaie i furnizeaz controlul fluxului (adic, asigur c vitezele
expeditoruluiireceptoruluisuntegale).
Nivelulreearuteaz dateleprin sistemeintermediareisubreele.Spredeosebire
de nivelurile superioare, nivelul reea ine cont de topologia de reea, care
reprezint conectivitatea dintre diferitele componente de reea. Nivelul reea
informeaznivelultransportdestareaconexiunilorpotenialeiexistentedinreea
nceeacepriveteviteza,fiabilitateaidisponibilitatea.Nivelulreeaestederegul
implementatcuroutere,careconecteazdiferitereelecefolosescacelaiprotocol
detransport.
Nivelullegturdedategestioneazconexiuniledirectedintrecomponentelereelei.
Acest nivel este mprit n LLC (logical link control), care este independent de
topologia de reea i MAC (media acces control) care este specific topologiei. n
130
Topologii
Existtreitopologiiimportantepentrureelelocaleaacumsevedenfigurademai
jos:
Cemaisimplestetopologiabus(a).Componentelesuntconectatelaomagistral
sistemprinlegarealorlasingurulcablusau,ncazulreelelorfrfir(wireless),prin
emitereadesemnalentrunmediucomun.Avantajulacestuitipdetopologieestec
fiecare component poate comunica direct cu orice alt component de pe
magistral i este relativ simplu s se adauge alte componente n reea. Controlul
este distribuit componentelor, i nu exist o anumit component cu rol de
intermediar,ceeacereducecosturileiniialepentruacesttipdereea.Dezavantajele
acestei topologii sunt: lungimea cablului de la magistral la componentele reelei;
pentruaadugaonoucomponentnreeaestenecesarntrerupereamagistralei,
ceeaceducelantrerupereantregiireele.Unexempludereeabazatpebuseste
Ethernet.
Topologia inel (b) folosete un singur cablu, pentru care capetele sunt legate.
Pachetele sunt transmise prin inel i trec prin fiecare component a reelei pn
cnd ajung la destinaie. La destinaie, pachetele sunt extrase din reea i nu mai
sunttransmisemaideparteprininel.Dacpachetulajungenapoilasistemulcarel
a iniiat, atunci nseamn c transmisia a euat, pachetul este oprit i poate fi
ncercat o nou transmisie. Un exemplu de LAN cu topologie inel este IBM token
ring.
ntopologiastea,fiecarecomponentesteconectatlaunhubcentral,carearerolul
deintermediarpentrutoatecomunicaiileprinreea.ntroconfiguraiesimplhub
ul primete datele de la o component i le trimite mai departe la toate celelalte
componente,lsndnseamacomponentelorindividualesdeterminedacdatele
131
lesuntadresate.ntroconfiguraiemaisofisticat,hubulrecepioneazdateleile
trimitedoardestinatarului.
Un avantaj al topologiei stea este c majoritate serviciilor de reea, modificrile,
cablarea se face la hubul central. Dezavantajul este c dac se defecteaz hubul
atuncitoatreeauaseoprete.Unaltdezavantajestectopologiasteanecesitmai
mult cablu pentru a conecta componentele reelei. Un exemplu de topologie stea
esteARCnet.
Transmisiadatelor
Comunicaia n cadrul unui calculator este sincronizat de un ceas, i transmisia
biilor este semnalat de voltaje joase/nalte ce sunt eantionate la momentul
determinatdecea.Aceastschemestesimpldarnufuncioneazpedistanemai
mari, aa cum este un LAN. Problema este c un ir lung de bii nu se poate
sincroniza cu exactitate att cu ceasul sistemului emitor ct i cu cel al
receptorului.DistaneledintrunLANsuntpreamaripentruamenineattunceas
globalctiovitezfoartemare.nreelelocalesefoloseteosincronizareceeste
inclusndatelecesetransmit.
La nivelul cel mai de jos al transmisiei se aplic aceast sincronizare. Al nivelul
urmtor fluxul de date este descompus n pachete i cadre (engl. frame) ce sunt
transmise prin reea ntro ordine aleatoare. Nivelul legtur de date este
responsabil pentru descompunerea fluxului de date n pachete, transformarea
pachetelorncadreiinjectareacadrelornreea.Cndrecepioneazcadre,nivelul
legturdedateextragepacheteleileasambleazntrunformatcepoatefiutilizat
de nivelul superior (nivelul reea). Dimensiunea pachetelor de date este de regul
civa KB i necesit cteva microsecunde s fie transmise la viteze i distane
obinuite.
Ethernet este una din cele mai populare reele bazate pe bus. Ethernet folosete
CSMA/CD (Carrier Sense Multiple Access with Collision Detection) pentru
transmisie. Cu aceast tehnologie, atunci cnd o component de reea vrea s
transmitdate,primadatateaptuncarrier.Dacexistpelinieuncarrier,care
este plasat de un dispozitiv ce transmite date, atunci nu va transmite nimic i va
atepta o anumit perioad de timp (de regul aleatoare). Perioada aleatoare este
important pentru a evita deadlockurile (situaiile fr ieire) n care
componentele care ncearc s trimit date pe bus ascult i ateapt n mod
sincron. Dac pe bus nu exist trafic, atunci poate ncepe transmisia prin plasarea
unui carrier mpreun cu datele. Surs de asemenea monitorizeaz busul pentru
coliziuni,situaiecareapareatuncicnddousaumaimultecomponentetransmit
date simultan. O coliziune este detectat atunci cnd sunt prezeni mai muli
carrieri. Coliziunile pot apare ntro reea ca rezultat al timpului finit necesar
semnalului pentru a traversa lungimea magistralei. Propagarea semnalului pe
magistralestelimitatdevitezaluminiipelungimeamagistralei,lungimecepoate
fipnla500demetripentruoreeaEthernettipic.Atuncicndauloccoliziuni,
132
Bridge,router,gateway
Pemsurce crete dimensiune reelelor acestea pot fi divizate nreelemaimici
interconectate.Subreelelemaimiciopereazindependentunadealtaipotfolosi
protocoaleitopologiidiferite.
Dac toate subreelele folosesc aceeai topologie i aceleai protocoale, atunci
reeaua poate fi extins folosind repeatere. Un repeater amplific semnalul pe
reea, semnal ce se atenueaz pe msur ce strbate reeaua. Subreelele nu sunt
independententotalitatedeoarecefiecaresubreeavedetottraficuldepecelelalte
subreele. O reea ce folosete doar repeatere nu se poate extinde foarte mult.
Repeaterele amplific nu numai semnalul ci i zgomotul de pe fir ceea ce va
determina n final dominarea semnalului de ctre zgomot dac se folosesc prea
multerepeatere.
Unbridgenunumaicamplificsemnalul,acestarestaureaznivelurileindividuale
ale semnalului la valorile logice 0 i 1, ceea ce previne acumularea zgomotului.
Bridgeurile auunanumit nivelde inteligen i pot interpretaadreseledestinaie
ale pachetelor i le pot transmite la reeaua pentru care sunt adresate. Astfel,
traficul n reea poate fi redus, din moment ce metoda alternativ ar fi trimiterea
pachetelorlafiecaresubreea(aacumsentmplncazulfolosiriirepeaterelor).
Cu toate c bridgeurile au un anumit nivel de inteligen n sensul c analizeaz
pacheteleprimiteileruteazpebazaadreseidedestinaie,acesteanuincontde
protocol. Un router lucreaz la un nivel mai nalt. Routerul conecteaz de regul
reeleseparatelogiccarefolosescacelaiprotocoldetransport.
Un gateway translateaz pachete pn la nivelul aplicaie din modelul OSI
(nivelurile 4 pn la 7). Gatewayurile conecteaz reele diferite prin efectuarea
conversiilordeprotocol,conversiinformatulmesajelorialtefunciidenivelnalt.
Eroridecomunicaieicoduricorectoaredeerori
Atuncicndarelococomunicaientresistemedecalculsauchiarincadrulunui
sistemdecalculexistoanumitprobabilitatecadatelesfierecepionateeronat
datorit zgomotului din canalul de comunicaie. Reprezentrile pentru date
133
Definirearateideerorilaniveldebit
Existnumeroasemodurincarepotapareerorincadrulsistemeloriarerorilepot
lua diferite forme. Vom presupune c probabilitatea ca un bit recepionat s fie
eronatesteindependentdeprobabilitateacabiiinvecinaisfieeronai.nacest
cazputemdefiniratadeerorilaniveldebitcafiindprobabilitateacaunanumitbit
sfieeronat.Evidentcacestaesteunnumrfoartemic,deregulestemaimicde
1012pentrufibraoptic.Astanseamncdoarunuldin1012biivorfieronai.n
reeleleradiounuldin100depachetepotconineerori.
n cadrul unui sistem rata de erori este mai mic dect 1018. Un procesor de 500
MHz care prelucreaz 32 de bii la fiecare ciclul de ceas va avea un numr de
erori/secundegalcu1018erori/bitx500x106cuvinte/secundx32bii/cuvnt=
1.6x1018erori/secund,adicaproximativunbiteronatladoianidezile.
Pedealtparteunfluxdebiidelaoliniedecomunicaieserialdeunmilionde
bii/secundcuoratdeeroride1010,vaaveaunnumrdeeroriegalcu1x106x
1010sau104erori/secundadic,aproximativ10eroripezi.
Detectareaicorectareaerorilor
Unadincelemaisimpleimaivechimetodededetectareaerorilorfolosetebitul
deparitate(safolositncadrulsistemelordetelegraf).
134
Bitul de
paritate
Caracter ASCII pe 7
bii
Caracter
Unbitdeparitateseadauglafiecarecaracteretransmisastfelnctnumruldebii
egalicu1nfiecarecaractersfieparsauimpar,nfunciedeparitateaaleas.n
exemplul nostru de transmitere a caracterului ASCII b, 1100010, presupunem c
dorim s folosim paritate par i atunci vom aduga un bit 1 pentru a face par
numruldebiiegalicu1,rezultndsecvenadebii11100010pentrutransmitere.
Bitul de paritate se poate aduga la nceput sau la sfrit n funcie de convenia
aleas.Receptorulpoateexaminasecvenadebii,idacnumruldebiiegalicu1
este par, atunci poate considera c a recepionat caracterul fr erori. (Aceast
metod nu mai este de nici un folos dac probabilitatea ca doi bii s se modifice
estedestuldemare.nacestcaztrebuiefolositealtemetodeaacumvomvedean
continuare).
CoduriHamming
Dac se adaugbiisuplimentarila date,atuncieste posibilnunumais detectm
erori,darislecorectm.Uneledincelemaipopularecoduricorectoaredeerori
se bazeaz pe munca lui Richard Hamming de la Bell Telephone Laboratories
(LucentTechnology).
Putem detecta un singur bit eronat ntrun cod ASCII prin adugarea unui bit
redundant.Distana Hamming definete distana logic dintre dou cuvinte valide,
ca msura numrului de cifre binare care diferntrecele dou cuvinte. Dac se
modificunsingurbitntruncaracterASCII,atuncisecvenadebiicerezulteste
un alt caracter ASCII. Distana Hamming corespunztoare pentru acest cod este 1.
DacrecodificmtabelaASCIIastfelnctdistanaHammingsfie2,atuncitrebuie
modificaidoibiipentruaconvertiuncaracterASCIIvalidntraltul.Astfelputem
detecta un singur bit eronat deoarece caracterul invalid va fi ntre dou caractere
valide.
OmodalitateadeanregistrauncaracterASCIIpentruodistanHammingde2este
deaatribuiunbitdeparitate,careiavaloarea0sau1pentruafacenumruldebii
egali cu 1 din codificarea caracterului par sau impar. Dac folosim paritate par,
atuncibituldeparitatepentrucaracterulaeste1deoarecesecvenadebiipentru
acestcaracterconine3biiegalicu1:1100001.Bituldeparitatepentrucaracterul
c este 0, ceea ce va duce la secvena de bii recodificat: 01100011. Dac folosim
135
paritatea impar, atunci biii de paritate vor lua valoarea opus: 0 pentru a i 1
pentruc.
TabelulASCIIrecodificatareacum256depoziii,dincarejumtate(celecareauun
numrimpardebiiegalicu1)reprezintcaractereinvalide.Dacesterecepionat
un caracter invalid, atunci receptorul tie c a avut loc o eroare i poate cere
retransmitereacaracterului.
Retransmiterea nu este ntotdeauna practic iar pentru aceste cazuri ar fi util nu
numaissepoatdetectaeroriledarsseicorecteze.Folosireabituluideparitate
vadetectaeroareadarnuvalocalizapoziiabituluieronat.Dacesterecepionat
secvena de bii 11100011 ntrun sistem care folosete paritate par, atunci
eroarea este detectat pentru c paritatea cuvntului este impar. Nu exist
suficientinformaiepentruadeterminadoarcuajutorulbituluideparitatecarea
fostcaracterultransmis(chiaribituldeparitatepoatefieronat).
Pentru a construi un cod corector de erori capabil s detecteze i s corecteze
cuvinte ce conin un singur bit eronat, trebuie s adugm mai mult redundan
prinextindereanumruluidebiidincuvnt.Deexemplu,sconsidermsecvena
de bii pentru caracterul a 1100001. Dac vrem s detectm i s corectm un
singur bit eronat care poate s apar n orice poziie n cadrul cuvntului, atunci
trebuiesatribuimnc7secvenedebiicaracteruluiasecvenencareunsingur
bit este modificat fa de secvena binar corespunztoare lui a: 0100001,
1000001, 1110001, 1101001, 1100101, 1100011, 1100000. Putem face acelai
lucru i pentru celelalte caractere, dar trebuie s facem n aa fel nct nici o
secven de bii s nu fie comun la mai mult de un caracter ASCII; altfel nu vom
avealadispoziieunmoddedeterminareneambiguuasecveneibinareoriginale.
Oproblemcufolosirearedundaneinacestfelestecatribuim8secvenedebii
fiecrui caracter: una pentru caracterul original i nc apte pentru secvenele de
bii nvecinate eronate. Din moment ce avem 128 de caractere ASCII i 8 secvene
pentru fiecare caracter, nseamn c putem recodifica 128/8 = 16 caractere dac
folosimdoarcei7biipentrureprezentareacaracterelor.
Pentruarecodifica toatecaractereleASCII,trebuies adugmbiideredundan
suplimentari (numii bii de verificare). Acum trebuie s determinm de ci bii
avemnevoie.Daccuvintelecevremslerecodificmsuntdekbiiifolosimrbii
deverificareatunciarelocurmtoarearelaie:
2kx(k+r+1)<=2k+rechivalentcu,k+r+1<=2r
Argumentaia pentru aceast relaie este c pentru fiecare din cele 2k cuvinte
originale,existsecvenedekbiincareunsingurbitesteeronat,plussecvenede
rbiincareunbitdeverificareesteeronat,plussecvenaoriginalcorect.Aac
codulnostrucorectordeerorivaaveantotal2kx(k+r+1)secvenedebii.Pentru
aputeareprezentatoateacestesecvenedebiiavemnevoiedek+rbii,astfelcse
vor putea genera 2k + r secvene binare, numr care este mai mare sau egal dect
136
numruldesecvenebinaredincodulcorectordeerori.Pentruk=7vomobiner=
4aacvomavea11biinreprezentareacuvintelordincodulcorectordeerori.
Acum vom vedea cumputem recodifica tabela ASCIIntrun cod pe11 bii.Scopul
estedeaatribuibiiiredundanicuvntuluioriginalastfelnctoricebiteronats
poatfiidentificat.Omodalitatedeafaceaceastatribuireesteprezentatnfigura
demaijos:
Biii de verificare
Poziiile
verificate
Fiecaredincei11biiareunindexdela1la11,iarreprezentareabinarpe4biia
ntregilor de la 1 la 11 este prezentat lng fiecare index. Cu aceste atribuire,
fiecare din cele 11 linii sunt diferite (nu exist dou linii n care biii 1 s fie n
aceeaipoziie).
Citind n jos fiecare din cele patru coloane, bitul 1 ne spune c poziia verificat
(careaparencoloanadindreapta)vafiinclusntrungrupcaretrebuiesformeze
paritatepar.Deexemplu,bituldeverificareC8acoperungrupde4biinpoziiile
8, 9, 10 i 11, care trebuie s formeze paritate par.Dac aceast proprietate este
satisfcutatuncicndcuvntulde11biiestetransmis,daroeroaredetransmisie
produceoparitateaimparlareceptor,atuncireceptorulvaticesteoeroarela
unadinpoziiile8,9,10sau11.Poziiaexactpoatefideterminatprinexaminarea
celorlalibiideverificare,aacumvomvedea.
Fiecare bit din cuvntul codificat de 11 bii, care include biii de verificare, este
atribuit unei combinaii unice a celor patru bii de verificare C1, C2, C4 i C8.
Combinaiilesuntcalculatecareprezentarebinarapoziieibituluiceesteverificat,
ncepnddelapoziia1.C1esteastfelnpoziia1,C2estenpoziia2,C4npoziia
4iC8npoziia8.biiideverificarepotaparenoricepoziii,darderegulaparn
poziii ce corespund puterilor lui 2 pentru a simplifica procesul de localizare a
erorilor.AcestcodsenumeteSEC(SingleErrorCorrectingcode).
Din moment ce poziia fiecrui bit egal cu 1 n fiecare din combinaie de bii de
verificare este unic, putem localiza o eroare prin observarea unui bit de eroare
eronat.Dacconsidermconfiguraiadinfigurademaijos:
137
Poziia bitului
Biii de verificare
valorilebiilordeverificaresuntdeterminatenconformitateacutabelulprecedent.
Bitul de verificare C1 = 0 creeaz paritate par pentru grupul de bii {1, 3, 5, 7, 9,
11}.Membriacestuigrupsuntluaidinpoziiilecareauvaloarea1ncoloanaC1din
tabel.BituldeverificareC2=1creeazparitateparpentrugrupuldebii{2,3,6,7,
10,11}.BituldeverificareC4=0creeazparitateparpentrugrupuldebii{4,5,6,
7}. Bitul de verificare C8 = 0 creeaz paritate par pentru grupul de bii {8, 9, 10,
11}.
Caoalternativlacutareantruntabelalbiilordeparitate,ngeneral,bitulnal
cuvntuluicodificatesteverificatdebiiideverificaredinpoziiileb1,b2,,bj,astfel
nctb1+b2++bj=n.Deexemplu,bitul7esteverificatdebiiidinpoziiile1,2i
4pentruc1+2+4=7.
Acum s presupunem c receptorul primete secvena de bii 10010111001.
Presupunem c sa folosit codul SEC descris mai sus pentru caractere ASCII i
ntrebarea este ce caracter a fost trimis. Prima dat calculm paritatea pentru
fiecarebitdeverificareaacumsevedenfigurademaijos:
Poziia erorii
Poziia biilor
Biii de verificare
Paritate
impar
par
impar
par
138
Cod
valid
Cod
valid
Pentrucuvintededimensiunimaimarecubulareuncorespondentnumithipercub.
Celedoucuvintevalidesuntplasatenvrfuriopusealecubului.Oriceeroaredeun
singur bit va localiza un cuvnt eronat pe un alt vrf al cubului. Fiecare cuvnt
eronat are un cuvnt valid cel mai apropiat, ceea ce face posibil corectarea unui
singureerori.
CodifiareSECDED
Dac considerm acum c exist dou erori, atunci putem vedea c codul SEC
funcioneaz pentru dubl detectarea de erori (DDE) dar nu i pentru dubl
corectaredeerori(DCE).AceastasenumetecodificareSECDDE(engl.SECDED
SEC double error detection). Din moment ce cuvintele valide sunt desprite de o
distanHammingegalcu3,dou erorivorfi localizauncuvnt eronatpecub i
astfelpotfidetectatedouerori.Cuvntulvalidoriginalnsnupoatefideterminat
n mod neambiguu. Pentru a corecta dou erori, trebuie ntreinut o distan
Hammingegalcu5.ngeneraltrebuientreinutodistanHammingegalcup+
1pentruadetectaperoriiodistanHammingde2p+1pentruacorectaperori.
Verificareverticalaredundanei
Codul SEC este folosit pentru detectarea i corectarea unui singur bit eronat. Biii
redundani sunt adugai la fiecare cuvnt, fi fiecare cuvnt rezultat este tratat
independent. Schema de recodificare se mai numete verificare orizontal sau
longitudinalaredundaneideoarecelungimeacuvntuluiseextindecunumrulde
biiredundani.
O abordare alternativ este de a folosi verificare vertical a redundanei n care o
sum de verificare a cuvntului este adugat la sfritul unui grup de cuvinte
transmise. n acest caz, paritatea este calculat coloan cu coloan, formnd un
cuvntceconinesumadeverificare,cuvntceesteadugatmesajului.Cuvntulcu
suma de verificare este calculat i transmis de expeditor i este recalculat i
comparatcucuvntulceconinesumadeverificarerecepionatdectrereceptor.
Dac se detecteaz o eroare, atunci receptorul trebuie s cear retransmiterea
cuvntuluidinmomentcenuexistsuficientredundanpentruaidentificapoziia
eronat.
139
Verificareciclicaredundanei(CyclicRedundancyCheckingCRC)
CRCesteoschemmaiputernicdedetectareicorectareaerorilorcareopereaz
nprezenaunorbursterrors,carencepisetermincuunbiteronat,cuzerosau
mai muli bii intermediari eronai. Biii eronai de la capete sunt inclui n burst
error.DaclungimeaunuibursterroresteB,atuncitrebuiesfieBsaumaimulibii
corecintremaimultebursterrors.
CRCfolosetecoduripolinomiale,ncareuncadrudedatecetrebuietransmiseste
mprit cu un polinom iar restul mpririi este adugat cadrului de date ca o
secven de verificare a cadrului (engl.Frame CheckSequence FCS), numit cifre
CRC. Dup recepionarea cadrului, receptorul face aceleai calcule, folosind acelai
polinom, i dac restul mpririi este identic cu cel recepionat atunci nu exist
eroridetectabile.Potexistaerorinedetectabile,iarscopullacreareaunuicodCRC
estedeaselectaunpolinomcareacopercelemaiprobabileeroripentruunanumit
model.
Abordarea este de a lua un mesaj de k bii ce trebuie transmis, M(x), la care se
adaug n bii 0, unde n este gradul polinomului generator, G(x), cu k > n. Forma
extins a lui M(x) este mprit la G(x) folosind aritmetic modulo 2 (n care
transportulimprumutulsuntignorate),iarrestulmpririiR(x),carenuaremai
multdenbii,formeazcifreleCRCpentruM(x).
Caexemplu,sconsidermctrebuietransmiscadrul:
M(x)=1101011011
G(x)=1xx4+0xx3+0xx2+1xx1+1x0.
G(x)aregraduln=4iexistn+1=5coeficieni.CifreleCRCsuntcalculateaacum
esteprezentatnfigurademaijos:
Ctul este eliminat
la calculul CRC
original
G(x), de grad
n=4
n = 4 zerouri
140
DacntimpultransmisieiT(x)=M(x)+R(x)sealtereazreceptorultrebuiespoat
determinaaceasta.ReceptorulmpartecadrulprimitG(x)itoatebursterrorscare
nulincludpeG(x)cafactorvorfiinterceptatepentrucrestulvafidiferitdezero.
Atta timp ct biii 1 din 10011 nu coincid cu poziiile erorilor din cadrul
recepionat, toate erorile vor fi interceptate. Un cod polinomial de grad n va
interceptatoatebursterrorsdelungimemaimicsauegalcun.
Polinoamecaredaurezultatebunenceeaceprivetedetectareerorilorsunt:
CRC16=x16+x15+x2+1
CRCCCITT=x16+x12+x5+1
CRC32=x32+x26+x23+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
Arhitecturidereea:Internet
La nceputurile erei informatice sistemele de calcul erau centralizate i conineau
toateresurselenecesare.Dateleerautransferatentresistemedecalculdiferiteprin
diferitemedii(carteleperforate,benzimagnetice,discurimagnetice).
Pemsurceacrescutnumrulsistemelordecalculiarcosturilesaunclinatmai
mult dinspre hardware nspre servicii, a devenit rentabil din punct de vedere
economicconectareadirectacalculatoarelorastfelnctsfieposibilpartajarea
resurselor. Despre asta e vorba cnd vorbim despre reele. Am prezentat deja
reelelelocalencontextulcelorapteniveluridinmodelulOSI.ncontinuarevom
prezenta aspecte arhitecturale ale reelelor de calculatoare n contextul modelului
Internet.
ModelulInternet
n sistemele de telecomunicaii pot fi mai multe surse i mai multe destinaii. Un
exemplu pentru aceast form de comunicaie este o reea telefonic. Pentru ca
fiecare telefon s poat fi apelat de la orice alt telefon trebuie s existe o cale, un
canal,ntrefiecaresursidestinaie.DacexistunmiliondetelefoanenlocaiaA
iunmiliondetelefoanenlocaiaBatuncinumruldecanaledintrelocaiaAiB
trebuie s fie un milion x un milion. Din fericire nu toi cei din locaia A vor s
comunice cu toi cei din locaia B aa c un numr mult mai mic de canale este
suficient,canalecesuntpartajate.Pedealtpartetrebuiesfiecelpuinoliniedela
fiecaretelefondinlocaiaAlasediulcentralalcompanieidetelefoaneitrebuies
fiesuficienteliniintresediilecentraledinAiBpentruaputeagestionanumrul
maximdeconversaiisimultane.
Unnumrmicdeconexiunifizice(nfunciedetipuldemediudetransmisiefibr
opticsaufiretradiionale),estenecesarpentrucaconectalocaiileAiBdeoarece
nusevantmplaniciodatcasimultantoiceidinlocaiaAsapelezepecinevadin
locaia B. Capacitatea de transfer de informaie a conexiunilor (numit lime de
band) este partajat de toi utilizatorii astfel c se realizeaz o reducere
141
NivelurilensuitadeprotocoaleTCP/IP
Uninternet (cuimic) esteocolecie dereele interconectate.Internet (cuimare)
este probabil celmai cunoscut internet, care folosete protocolulTCP/IP i adrese
IP. Cele apte niveluri din modelul OSI au fost simplificate ntro oarecare msur
pentru modelul Internet, model care are doar patru niveluri, aa cum se vede n
figurademaijos.
La nivelul cel mai de jos este nivelul Legtur format din subnivelurile MAC
(MediumAccessControl)iPHY(Fizic).NivelulLegturrezolvdisputelepentru
mediul de comunicaie atunci cnd mai multe dispozitive ncearc s transmit,
gestioneaz gruparea logic a biilor n cadre de date i implementeaz protecia
mpotrivaerorilor.
Nivelul legtur este responsabil pentru transmiterea unui cadru de bii de la o
main la o alta main legat direct de ea. Aceasta funcioneaz bine ntre dou
procese aflate pe maini diferite care coopereaz. Pentru ca mai multe procese s
partajeze acelai mediu de comunicaie este nevoie de un protocol care s
coordonezedeplasaredatelordelaunproceslaaltul.Aceastaesteresponsabilitatea
niveluluiReea,careesteimplementatcuprotocolulIP(InternetProtocol).
NivelulReease ocupcu comunicaiade launpunct la altul.NivelulTransportse
ocupcucomunicaiaendtoend,ncarepotfimaimultepuncteintermediarentre
transmitor i receptor. Nivelul Transport se ocup cu retransmisia (n cazul
erorilor sau a pachetelor abandonate datorit congestionrii mediului de
comunicaie), secveniere (pachetele pot recepionate ntro ordine diferit de cea
de la transmisie), controlul fluxului, protecie mpotriva erorilor (nivelul Legtur
nu face suficient n acest sens). n Internet nivelul Transport este implementat cu
protocolulTCP(TransmissionControlProtocol).CombinaiaTCP/IPlanivelulReea
i Transport este suita de protocoale dominante n Internet. La nivelul Legtur i
Aplicaiepotfifolositeoricealteprotocoale.PentrunivelulTransportiReeaexist
ialtetipurideprotocoale.
142
La nivelul Aplicaie, un proces poate efectua schimb de date cuorice alt proces de
altundevadinInternetistratezeconexiuneacaicumarfiunfiierpesistemul
local, citind i scriind octei cu apeluri sistem obinuite. De regul aceste operaii
sunt implementate prin socketuri, care sunt ci de comunicaie spre reea prin
sistemuldeoperare.
AdreseInternet
Fiecare interfa pe Internet are o adres IP unic. Versiunea 4 a protocolului IP,
numit IPv4, este folosit nc pe scar larg dar este nlocuit de IPv6, care
folosete adrese de 4 ori mai mari dect IPv4 i are o serie de mbuntiri i
simplificri.UnexempludeadresIPv4nformacupuncteestedatmaijos:
165.230.140.67
10100101.11100110.10001100.01000011
Bitulcelmaidinstnga(celmaisemnificativ)determinclasadeadres.Figurade
maijosprezintcelecinciclasedeadresedinIPv4.
Clasa A are 7 bii pentru identificare reelei (ID) i 24 de bii pentru ID hostului.
Astfelpotficelmult27reeledeclasAfiecaredinelecu224hosturi.Opartedin
acesteadresesuntrezervate,aacnumruldeadresecepotfiatribuitehosturilor
estemaimicdectnumrultotaldeadreseposibile.
AdreseledeclasBfolosesc14biipentruidentificatoruldereeai16biipentru
identificatorulhosturilor.AdreseledeclasaCfolosesc21debiipentruIDulreelei
143
Porturi
Un port este mijlocul prin care un proces se deschide spre exterior. Un numr de
portidentificprocesulsursiunaltnumrdeportidentificprocesuldestinaie.
Unportidentificunpunctdeintrarenreeapentruunproces.Porturiledela0la
1023suntporturibinecunoscutepentruprocesesever.Deexemplu,portultelnet
este23.PeunsistemUnix,comanda:
%telnetfs.uoradea.ro23
ncapsulare
Dateledinreeasuntncapsulatepemsurcetrecprinniveluriledereeaaacum
sevedenfigurademaijos:
Dateleutilizatorsunttrimisenreeafolosindapelurisistempentrucitireiscriere
similare cu cele folosite la accesarea fiierelor. Nivelul Aplicaie trimite datele
144
DNS(DomainNameSystem)
DNS este o baz de date distribuit care asociaz nume de host i adrese IP i
furnizeaz informaii pentru rutarea email. De exemplu adresa simbolic
www.uoradea.ro este asociat cu adresa IP 193.231.135.12. Mai multe nume pot fi
asociate cu aceeai adres IP. DNS este responsabil pentru interaciunea cu
programecareaunevoiedeacesteasociere.
Fiecare domeniu (cum ar fi uoradea.ro) are propria baz de date cu informaii i
ruleazunserverpecarealtesistemedinInternetlpotinteroga.AccesullaDNSse
face printrun resolver, care este integrat n rutinele de bibliotec, rutine ce sunt
linkeditatenprogrameleceacceseazreeaua.
NIC(NetworkInformationCenter)esteorganizaiacaregestioneazdomeniiletop
levelidelegautoritateapentrudomeniiledinnivelulurmtor(nivelul2).ncadrul
unei zone, un administrator local ntreine baza de date pentru serverul de nume.
Trebuiesexisteunserverdenumeprimar,careincarcbazadedatedintrun
fiieriserveredenumesecundare,careiiauinformaiadelaserverulprimar.Se
foloseteuncache,astfelnctointerogarecareprovoaccontactareaaltorservere
nuvamainecesitacontactareaulterioaraacelorservere.
WorldWideWeb
WWWesteformatdinproceseclient(browsereleWeb)iservereWebcareruleaz
http (HyperText Transfer Protocol) la nivelul Aplicaie al Internet. Ceea ce trebuie
tiuestecWWW!=Internet.WWWesteoaplicaiecreatpentruInternet.
n 1989, Tim BernersLee de la CERN (laboratorul european pentru fizica
particulelor) a dezvoltat un Web bazat pe text, pentru schimbul de documente
tehniceprintrecolegi.nfebruarie1993,NCSA(NationalCenterforSupercomputing
Applications) din cadrul Universitii Illinois a lansat o versiune grafic a
browserului Web Mosaic precum i un server http, ambele gratuite i de atunci
WWWaexplodatiaajunslaceeacetimastzi.
145
Bridge,routeriswitch
Un hub este un punct de conexiune central pentru sisteme de calcul. Un hub se
numetebridgeatuncicndunsistemdecalculesteunalthub.Unhubdoarcopiaz
pacheteledepeointerfadereeapetoatecelelalte,aacumsenfigurademaijos
(a):
Pachetelenesortateintrnparteastngiiessortatenpartedreaptdupadresa
dedesetinaie.
Concluzii
Comunicaia implic transferul informaiei ntre sisteme. Ca o regul, datele sunt
transmiseserialdeoareceexistontotdeaunaontrzierelatransferuldedateprin
reeleledemarevitez.Totuischemeledemodularepermitcodificareamaimultor
bii ntro singur unitate de transfer. Alegerea schemei de modulare influeneaz
apariia erorilor la transferul de informaie. Detecia i corecia erorilor sunt
posibileprin redundan,ceeacepresupuneexistenamaimultor secvenedebii
dectnumrulmaximdesecvenedebiivalide.Dacosecvendebiinuareun
singurcuvntvalidcelmaiapropiat,atuncidetectareaeroriiesteposibildarnui
corectarea.Dacfiecaresecvendebiipoateficreatdintrosingursecvende
biivalidatuncicorectareaeroriiesteposibil.
ReeleleLANgestioneazcomplexitateafolosindniveluricesuntbazatepemodelul
OSI. Reelele locale sunt conectate la reele WAN, n principal reeaua Internet.
Reeaua Internet se bazeaz pe suita de protocoale TCP/IP. Datele utilizator sunt
ncapsulate la nivelurile Aplicaie, Transport, Reea iLegtur i sunt trimise prin
Internet i decapsulate la destinaie. n drumul lor nspre destinaie, datele
traverseazoseriedemediidetransmisie,caredifernlimedebandidistana
maximlacaresepottransferadatele.
147