ARHITECTURAMICROPROCESOARELOR ARHITECTURAMICROPROCESOARELOR

CristianAVRAM CristianAVRAM
criavram@gmail.com
2
Introducere în arhitectura microprocesoarelor cu explicarea noƜiunilor
privind :
¯Setul deinstrucƜiuni;
¯Aritmetica în procesor Ɣistructuracĉii dedate;
¯Calea decontrol;
¯Memorie dedateƔimemorie deprogram;
¯Structurile detip pipeline;
¯Semnalele deinterfaƜare alemicroprocesorului;
¯Sistemul deîntreruperi.
Familiarizarea culimbajul deasamblare Ɣirealizareaunorprogramesimple
OBIECTIVECURS OBIECTIVECURS
3
· Unmicroprocesoresteounitatecentralĉdeprelucrare(UCP)integratĉîntrͲunsingur
chip
· EsteparteintegrantĉatutrorcalculatoarelorƔisistemelordecalculactuale
• Uncalculator esteomaƔinĉ deprelucrare automatĉ a datelor cefuncƜioneazĉ sub
controlul unei listede instrucƜiuni (program)stocate în memoria principalĉ a
calculatorului.
• Uncalculator este ocombinaƜiederesursefizice(hardware)Ɣiprograme(software)
• Uncalculator conƜine:UCP+Memorie+I/O
· MicroprocesorulesteentitateafizicĉmenitĉsĉinterpretezeƔisĉexecutecomenzile
existenteînprogramuldestinatuneiaplicaƜii.
CEESTEUNMICROPROCESOR? CEESTEUNMICROPROCESOR?
4
· Unsistem decalcul reprezintĉ omaƔinĉ automatĉ destinatĉ prelucrĉrii informaƜiilor
(în3faze)
Ͳ transformareainformaƜiei(semnale)întrͲunformatcompatibilcuunitateadecalcul;
Ͳ prelucrareainternĉadatelor;
Ͳ transformareadatelorfurnizateînsemnalenecesareaplicaƜiei.
· Pentruaasiguraflexibilitateasistemuluidecalculcele3faze vorfiasiguratede
elementediferite:uncalculator+periferice.
• Organizare calculator:
– UCP(cĉi dedateƔicontrol)
– Memoria principalĉ
– InterfeƜe sausistemul deintrareͲieƔire (legĉtura cu dispozitivele externe– periferice)
• Perifericele calculatorului includ
– Dispozitive deintrare (tastaturĉ,mouse,memorii secundare)
– Dispozitive deieƔire (display,difuzoare,memorii secundare, imprimantĉ)
ORGANIZAREAUNUISISTEMDECALCUL ORGANIZAREAUNUISISTEMDECALCUL
5
· Intern,uncalculator prelucreazĉ maimulte fluxuri deinformaƜie : datele numerice Ɣi
instrucƜiunile programului.
· Dupĉmodul deprelucrare al acestor fluxuri informaƜionale calculatoarele sepot
clasifica în:
Ͳ maƔinidetipSISD (SingleInstructionSingleData)– arhitecturisecvenƜiale (von
Neumann,Harvard);
Ͳ arhitecturiparalelecu2saumaimulteunitĉƜicentraleceprelucreazĉsimultan
maimultefluxurideinformaƜie:maƔiniSIMD (SingleInstructionMultipleData)Ɣi
MIMD (MultipleInstructionMultipleData).
FLUXURI FLUXURIINFORMA INFORMAf fIONALE IONALE
6
· Microprocesoarele suntutilizateîngeneralpentruaplicaƜiideînaltĉperformanƜĉ de
procesare.
· SuntutilizatecaUCPpentrucalculatoaredeuzgeneral(GPC)
· MicroprocesoarelenecesitĉexternmemorieƔiinterfeƜeIO
· MicroprocesoarelesuntutilizateînPCͲuri,staƜiidelucru,servere,unde
compatibilitateasoftware,performanƜa,generalitateaƔiflexibilitateasunt
importante.
· Microprocesor=Flexibilitate
FLUXURI FLUXURIINFORMA INFORMAf fIONALE IONALE
· Microcontrollerele suntproiectatepentruaseobƜineodimensiuneredusĉachipͲ
ului,micƔorareacosturilorƔiincludereadespaƜiudememorieƔiIOpechip.
· Microcontrollerelesuntadesea“specializatepeaplicaƜii” îndaunaflexibilitĉƜii.
· UnmicrocontrollerconƜinepeunacelaƔichip:UCP,Memorie,IO
· Microcontroller=Specializare
MICROPROCESOARE MICROPROCESOARE
8
· Dezvoltarearapidĉîndomeniusebazeazĉpedouĉcaracteristiciprincipale:
– dezvoltareatehnologieisemiconductoareutilizatĉlaconstrucƜiamicroprocesoarelor
– inovaƜiiînorganizareaƔiproiectareacalculatoarelor
· Anii1960– calculatoaremari.AplicaƜiiletipiceincludeauprocesĉridedateînafaceri
ƔicalculeƔtiinƜifice
· Anii1970
– apariƜia minicalculatorului: laboratoareƔtiinƜifice, utilizatori multipli care partajeazĉresursele
delaterminaleindependente
– microprocesorul:îmbunĉtĉƜiriîntehnologiacircuitelorintegrate,costredus,producƜieîn
numĉrmare,rĉspândireînmulteaplicaƜiidecalculnumeric
· Generalizarea limbajelor de programare de nivel înalt (HLL) + translatoare a înlĉturat
nevoiacompatibilitĉƜiiprogramelorlaniveldecodobiect
· Creareadesistemedeoperarestandardizate,independentedeproducĉtor,careau
scĉzutcosturileƔiriscuriledeutilizareanoilorarhitecturi
SCURTISTORIC SCURTISTORIC
9
• Anii1980:apariƜiaarhitecturilorRISC(ReducedInstructionSetComputer).
– MaƔinileRISCaupermisdezvoltareaparalelismuluilaniveldeinstrucƜiune(iniƜial
prinpipeliningiarapoiprinlansareamultiplĉdeinstrucƜiuni)Ɣiutilizareamemoriilor
cache.
– ApariƜia calculatoarelor desktop construite pe bazĉde microprocesor (personal
computers,workstations).
• Anii1990:
–rĉspândirealegĉturiiInternetƔiatehnicilorWorldWideWeb
– dispozitivedecalculportabil(PDA,notebook)
–electronicĉdigitalĉdelargconsum
SCURTISTORIC SCURTISTORIC
10
· 1971– PrimulmicroprocesorproiectatpentruaplicaƜiidecontrol(Intel4004,2300
tranzistoare).
· 8biƜisecvenƜial:Intel8080(1974),MotorolaMC6800(1974),ZilogZͲ80(1976)
· Microcontrollere:Ͳ μP6502(1975bazatpeMC6800,Hobbycomputers:Commodore,
Apple,Ataris),Intel8048(1976– familiaIntelMCSͲ48),Intel8051
· 16biƜi:Ͳ Intel8086(1978),Ͳ MotorolaMC68000(1979)
· anii’80:instructionpipelining,cache
· 1980Ͳ InteliAPX43232biƜi;1984Ͳ MotorolaMC68020,32biƜi,pipelinecu5etaje;
1987Ͳ ZilogZͲ280,16ͲbiƜi;1990Ͳ Intel80960– RISC
· PowerPC604(‘95),Pentium(‘94):arhitecturisuperscalare,execuƜiebazatĉpemai
multeunitĉƜipipelineƔimaimulteunitĉƜiaritmetice
MICROPROCESOARE MICROPROCESOARE
11
• anii’90:
– 1995Ͳ Intel133MHzPentium
– 1996Ͳ IntelPentiumII
– 1999Ͳ IntelPentiumIIIla500MHz
• RISC
• Multiprocesoare– SoC(SystemonChip)
• VLIW(verylargeinstructionword)–uncompilatorplanificĉinstrucƜiunile(static)
– spredeosebiredeplanificareadinamicĉdelaprocesoarelesuperscalare
• DinceîncemaimultefuncƜiiimplementatehardware:acceleratoaregrafice,extensii
deinstrucƜiuniMMX
• SistemeEmbeddedͲ 90%dinmicroprocesoareleproduseînprezent:
microcontrollere,DSP,procesoaremedia,procesoaregrafice,procesoarede
comunicaƜiietc.
MICROPROCESOARE MICROPROCESOARE
12
× FrecvenƜedeceasmaimaride2GHz
× Procesoaredeputeremicĉ(aplicaƜiimobile)
× MicroͲarhitecturisuperscalare(maimulteinstrucƜiunilansateînparalel)
× SIMD(SingleInstructionStreamMultipleDataStream):operaƜiisimilareefectuateîn
paralelpeseturidiferitededate
× FuncƜiideprelucrareDSP:MMX,3D,graficĉ,sunet
× Nucleeprocesormultiplepeunchip
× Memoriecachepe2Ͳ3niveluri
× ............................
MICROPROCESOARE MICROPROCESOARE– – secolulXXI secolulXXI
13
PiaƜamicroprocesoarelorsͲadezvoltatpetreidirecƜiimari:
• Desktop
– Exemple:PC,staƜiidelucru
– Metrici:latenƜĉ(graficĉƔisistemdeIO)
• Servere–furnizeazĉserviciidefiƔiereƔicalcul
–Exemple:serverWeb,serverbazĉdedate,serverLAN
– Metrici:throughput,fiabilitate,scalabilitate
• SistemeEmbedded(sistemecuprocesorînglobat)
–Exemple:telefoncelular,PDA,cuptorcumicrounde,camerĉvideodigitalĉ
–Metrici:complexitate,putereredusĉ,latenƜĉ
PiaƜaembeddedesteceamaimare!
• ProcesorEmbedded=UnprocesorprogramabilacĉruiinterfaƜĉdeprogramarenu
esteaccesibilĉutilizatoruluifinalƔicarerealizeazĉunsetrestrânsdefuncƜiuni
dedicateaplicaƜieispecifice.
MICROPROCESOARE MICROPROCESOARE– – secolulXXI secolulXXI
14
O PerformanƜaunuimicroprocesoredeterminatĉdecapacitateadeaprelucradate.
CreƔtereacapacitĉƜiideprelucrareserealizeazĉpemaimultecĉi:
× Tehnologicĉ
· densitateadeintegrare
· vitezadeprelucrareadatelor(frecvenƜadetact)
· reducereaputeriiconsumate(controluldimanicalconsumului,scĉderea
frevenƜei)
· vitezaƔicapacitateamemoriei+înlocuireaHDDcumemoriiexternepesiliciu
× Arhitecturĉ
· pipeline
· ierarhizareamemoriei– memoriacache (maimulteniveluridecacheîninteriorul
chipuluiͲprocesor)
· gamadereprezentareinternĉadatelor
· arhitecturasetuluisetuluideinstrucƜiuni
· arhitecturĉmultiͲcoreƔiarhitecturiparalele
× Firmware (softwareîncorporat)
· gestiuneamemoriei
· mecanismemultitasking
· memoriavirtualĉ
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
15
DENSITATEADEINTEGRARE DENSITATEADEINTEGRARE
· CreƔterea numĉrului detranzistoare/chip
– PentiumIII Ͳ 7,5milioaneCMOS0,18um
– PentiumIV Ͳ 42demilioane
– procesoare actuale Ͳ peste 1miliard detranzistoare/chip
– memorii Ͳ peste 64Ͳ512miliarde
· VitezadeprelucareadatelordepindedevitezadecomutaƜieatranzistoarelorHMOS
dincompunereamicroprocesoarelor
· VitezadecomutaƜieestedirectproporƜionalĉculĉƜimeaporƜiitranzistoarelor
· ÎncepândcuPentiumIIIseimplementeazĉtehnologia0,18μmcualimentarela1,6Vcc
ceeacepermitedepĉƔireabariereide1GHzpentrufrecvenƜadetact
· Din2002seimplementeazĉtehnologia0,13μm(L
GATE
=70nm,H
OXID
=1,5nmcu
alimentarela1,3Vcc)folositĉlamicroprocesoareleactuale
· Cutoateacestea,estegreusĉseechivalezecreƔtereanumĉruluidetranzistoare
/chipcucreƔtereaperformanƜeiprocesoarelor
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
16
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
FRECVEN FRECVENf fADECEAS ADECEAS
· Cucâtsuntmaimulteimpulsuri/secundĉcuatâtmaimareestenumĉruldeoperaƜii
cesepoateexecuta
· CucâtfrecvenƜaestemaimarecuatâtcreƔteputereaconsumatĉ(comutaƜie)
· CreƔtereafrecvenƜeiimpunedecimijloacededisipareacĉlduriiprocesorului
· ProcesoaremultiͲcore(maimultenucleecelucreazĉînparalel)
· Intelacalculatcĉscĉdereacu20%afrecvenƜeipentruunnucleuconducelascĉderea
lajumĉtateaputeriiconsumateƔidoarla13%pierdereadeperformanƜĉ
· Dacĉseîmpartsarciniledeprelucrareîntre2nucleecelucreazĉlaofrecvenƜĉredusĉ
la80%,seobƜineoperformanƜĉmaimarecu73%pentruaceeaƔiputereconsumatĉ
· Dispareacĉlduriiestemaibunĉ(douĉnoduriînlocdeunul)
· TendinƜaactualĉ:oprireacreƔteriifrecvenƜeideceas+arhitecturimultiͲcore
17
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
PIPELINE PIPELINE
· ExecutareainstrucƜiunilorsefaceîn4Ͳ5faze:
÷ citireinstrucƜiune
÷ decodificareinstrucƜiune
÷ citireoperanddinmemorie(dacĉesetcazul)Ͳ fetch
÷ execuƜieinstrucƜiune
÷ salvarerezultateînmemorie(dacĉestecazul)
· Oarhitecturĉpipeline presupuneimplementareaunorblocuristructuralecepermit
execuƜiasimultanĉ,înparalel,atutroracestorfaze
· Seimplementeazĉîncepândcumicroprocesoareleevoluate(Pentium);la8086
execuƜiasefĉceapseudoͲsecvenƜial(douĉunitĉƜifuncƜionalecepermitaducerea
instrucƜiunilordinmemorieînavansͲ prefetch)
· ÎnprezentseutilizeazĉarhitecturiparaleleƔimultiͲcore avansate
18
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
MEMORIACACHE MEMORIACACHE
· Memoriacacheesteozonĉdememoriefoarterapidĉîncaresememoreazĉ
instrucƜiuniƔidatecucaremicroprocesorulopereazĉînmodcurent– ultimele
instrucƜiuniexecutate
· AceastĉmemorielucreazĉfĉrĉstĉrideaƔteptare,înritmulmicroprocesoruluifiindde
aproximativ10orimairapidĉdecâtmemoriaRAM
· Seorganizeazĉpeniveleierarhice:
÷ memoriacachelevel1 –esteintegratĉînchipulprocesorului(aparela80x486,
primulprocesorcapabilsĉsuporteinterfeƜegraficedetipWindows)
÷ memoriacachelevel2 –externĉmicroprocesorului,asigurĉinterfaƜacumemoria
RAM
÷ înprezentsedispunmaimulteniveluridecacheîninteriorulprocesorului
÷ seimplementeazĉspaƜiidiferitedememoriecachepentruinstrucƜiuniƔidate:
IͲcache ƔiDͲcache
19
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
REGISTRELEINTERNEALEMICROPROCESORULUI REGISTRELEINTERNEALEMICROPROCESORULUI
· GamadereprezentareinternĉadateloresteuncriteriudecisivînmĉrireacapacitĉƜii
deprelucrare
· AceastacreƔteodatĉcumĉrirearegistrelorinternealemicroprocesoruluiƔia
magistraleiinternededate:80x386esteprimulmicroprocesorpe32debiƜi
· Procesoareactuale:registreƔimagistralededatepe64debiƜisaumaimult
COMPLEXITATEASETULUIDEINSTRUC COMPLEXITATEASETULUIDEINSTRUCf fIUNI IUNI
· CISC(ComplexInstructionSetComputer)
· RISC(ReducedInstructionSetComputer)
20
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
FIRMWARE FIRMWARE– – SOFTWARE SOFTWAREÎ ÎNCORPORAT NCORPORAT
· OaltĉdirecƜiepentrucreƔtereacapacitĉƜiideprelucrareamicroprocesoareloreste
înglobareaderesursealesistemuluideoperaredirectînchip(câtmaimultsoft
implemetatîninteriorulmicroprocesorului)
· Ex:
· modululdegestiuneamemoriei(MMU)
· implementareamecanismelormultitasking
· gestionareamemorieivirtualedirectdecĉtrechip(la80x286gestiunea
memorieivirtualeerafĉcutĉdeSOpringrijaprogramatorului)
21
EVOLU EVOLUf fIAMICROPROCESOARELOR IAMICROPROCESOARELOR
DualͲcore
IAͲ32
Dual DualͲ Ͳcore core
IA IAͲ Ͳ32 32
Madison
IAͲ64
Madison Madison
IA IAͲ Ͳ64 64
Deerfield
IAͲ64
Deerfield Deerfield
IA IAͲ Ͳ64 64
P
e
r
f
o
r
m
a
n
P
e
r
f
o
r
m
a
n
Ɯ Ɯ
ĉ ĉ
’ ’02 02 ’ ’00 00 ’ ’01 01
.25 .25μ μ .18 .18μ μ .13 .13μ μ
.
.
.
.
.
.
’ ’03 03
Itanium
IAͲ64
Itanium Itanium
IA IAͲ Ͳ64 64
Pentium®III Xeon™
Pentium Pentium® ®III III Xeon Xeon™ ™
’ ’98 98 ’ ’99 99
Pentium® IIXeon
TM
Processor
Pentium Pentium® ® II IIXeon Xeon
TM TM
Processor Processor
Pentium® IV
Pentium Pentium® ® IV IV
McKinley
McKinley McKinley
800MHz 800MHz 1,5GHz 1,5GHz
3GHz 3GHz
450MHz 450MHz
22
MICROPROCESOARE(IERI MICROPROCESOARE(IERI– – AZI AZI– – MAINE) MAINE)
An Clock
(MHz)
Tz/chip(x10
6
)
Tehnologie
Registre/
Memorie
Arhitecturĉ Procesoare
Intel
1978 10 16b/20M Scalarĉ 8086
1985 32b/4G Scalarĉ 80386
1993 66Ͳ233 3,1/0,6um 32b/4G Pipeline Pentium
1997 450 7/0,25 32b/4G Superpipeline,MMX PentiumII
1989 32b/4G Scalarĉ,FPUîncorporat 80486
1995 200 5,5/0,35um 32b/4G SuperpipelineP6 PentiumPro
1999 1000 8,2/0,25um 32b/4G Superpipeline,MMX PentiumIII
2001 1500 42/0,18um 32b/4G NetBurst PentiumIV
2004 3000 42/0,18um 64b/4G HyperͲthreading PentiumIV
2006 /0,13um 64b/70TB Multicore,hyperthreading Core2ͲDuo
2009 /0,13um 64biƜi/70TB
Nehalem,multiͲcore (4) Ɣi
hyperͲthreading
IntelI5,I7
(8MͲL3)
ARHITECTURADECALCULATOR ARHITECTURADECALCULATOR
24
ARHITECTURADECALCULATOR ARHITECTURADECALCULATOR
Arhitecturadecalculatorinclude:
1.Arhitecturasetuluideinstruc ArhitecturasetuluideinstrucƜ Ɯiuni iuniͲ Ͳ ISA ISA (InstructionSetArchitecture)
· InterfaƜĉîntrehardwareƔisoftware.
· ISAincludetotcetrebuiesĉcunoascĉunprogramatorpentruaprogramalanivel
fizicmaƔina.
· ISApermitecadouĉmaƔinidiferite(implementare,costuriƔiperformanƜe
diferite)sĉrulezeaceleaƔiprograme.
2.Implementare Implementare,cudouĉcomponente :
· Organizarea includeaspecteledenivelînaltaleproiectului,cumarfi :
÷ organizareasistemuluidememorie
÷ structuramagistralelor
÷ organizareainternĉaUCP
DouĉmaƔinipotaveaorganizĉridiferite,daracelaƔiISA.
· HardwaresereferĉlaaspectelespecificedeimplementarealemaƔinii(proiectul
dedetaliuallogicii,tehnologiasemiconductoareutilizatĉ,tipuldecapsulĉ,etc.)
25
ORGANIZAREAGENERALAUNUICALCULATORUNI ORGANIZAREAGENERALAUNUICALCULATORUNIͲ ͲPROCESOR PROCESOR
26
ORGANIZAREAGENERALAUNUICALCULATORUNI ORGANIZAREAGENERALAUNUICALCULATORUNIͲ ͲPROCESOR PROCESOR
FluxuldeinformaƜiiestecontrolatdeUCPpedouĉcĉi:
• caledecontrol – (“creierul”procesorului).Semnaleledecontrolspuncĉiidedate,
memorieiƔisistemuluideintrare/ieƔirecesĉfacĉ,conforminstrucƜiunilorunui
program.
• calededate – (“muƔchii”procesorului).CaleadedaterealizeazĉoperaƜiiaritmetice/
logiceƔidetransfer
27
ORGANIZAREAGENERALAUNUIMICROPROCESOR ORGANIZAREAGENERALAUNUIMICROPROCESOR
28
MAGISTRALASISTEM MAGISTRALASISTEM
· PrincipaleleunitĉƜicomponentealesistemului(procesor,memorieprincipalĉ,
moduledeI/O)suntinterconectatepentruaschimbainformaƜiidedateƔicontrol
· CaleadecomunicareîntredouĉsaumaimulteunitĉƜiestenumitĉmagistralĉ(bus)
· MagistralaconƜineliniielectricecaretransferĉinformaƜiacodificatĉînbinarprin
intermediulunorsemnaleelectrice(niveluridetensiune)
· Omagistralĉlacaresuntconectateprincipalelecomponentealecalculatorului
(procesor,memorieprincipalĉ,moduledeI/O)estenumitĉmagistralĉsistem
29
MAGISTRALASISTEM MAGISTRALASISTEM
· Magistralaesteuncanaldecomunicarepartajatîntimp:doarundispozitivpoate
transmitedatepemagistralĉlaunmomentdat.Pentrucacelelaltedispozitivesĉnu
alterezedatelevehiculate,toatedispozitivelesuntconectatelamagistralĉprin
intermediulunorcircuite3Ͳstate.
· PentruaînlĉturasupraîncĉrcareacanaluluidecomunicaƜie,ƔiacreƔteperformanƜele
acestuia,seconstruieƔteoierarhiedemaimultemagistraleinterconectate.
· Elementecheielaproiectareamagistralelor:
– arbitrare
– sincronizare
– lĉrgimeamagistralelor(numĉrdebiƜitransmiƔiînparalel)
30
MAGISTRALASISTEM MAGISTRALASISTEM
31
IERARHIEDEMAGISTRALEMULTIPLE IERARHIEDEMAGISTRALEMULTIPLE
• Cucâtsuntmaimultedispozitiveconectatelaomagistralĉ,cuatâtmaimareeste
lungimea acesteia
• Cucâtsuntmaimultedispozitiveconectatelaomagistralĉ,cuatâtmaimarevafi
întârziereaprodusĉlatransmisiadatelor
• DispozitiveleconectatelaomagistralĉauvitezemultdiferitedefuncƜionare
– ComparaƜivitezaprocesorului(UCP)cuaunuiechipamentperiferic
• Magistralaunicĉconducelascĉdereavitezeimedii atransmiteriiinformaƜiilor
32
MAGISTRALEMULTIPLE MAGISTRALEMULTIPLE
ͲStructurĉtradiƜionalĉtipicĉͲ
33
MAGISTRALEMULTIPLE MAGISTRALEMULTIPLE
ͲStructurĉdeînaltĉperformanƜĉͲ
34
MAGISTRALESINCRONE MAGISTRALESINCRONE
· MagistralelesincroneincludoliniedeCLOCK(controlatĉdeunoscilatorcucuarƜ)
întreliniilemagistraleidecontrol.FrecvenƜetipicesunt:5,66,133,266,333,400,
600,800MHz
· Toatetransferurilepemagistralĉdureazĉunnumĉrîntregdeciclurideceas,numite
ciclurimagistralĉ.
· Avantaje:
÷ vitezamaredetransfer
÷ logicĉsuplimentarĉfoartesimplĉ
· DezavantajulconstĉînfaptulcĉpentrutransferurilecaresͲarputeafacemairapid
decâtintervalulcorespunzĉtorunuinumĉrîntregdeciclurimagistralĉ,protocolul
trebuiepĉstrat(timpprestabilitdetransfer)
35
MAGISTRALEASINCRONE MAGISTRALEASINCRONE
· MultedispozitivedeI/Onupotaccepta/generadatelaoratĉmare(ex.unprocesor
Pentiumpoatefurnizauneiimprimantecâtevasutedemilioanedecaracterepe
secundĉcenupotfiimprimatelaaceastĉvitezĉ;tastaturafurnizeazĉdatelaviteza
dereacƜieumanĉ;etc.)
· Calculatoareleaunevoiedeprotocoaledetransferdedatepentruanulimitaviteza
deexecuƜielaceaadispozitivelorperiferice,lente:handshaking
· Implementareaacestuimecanismlanivelfizic:
÷ porturidestare Ɣiporturidecontrol încomponenƜadispozitivelorde
intrare/ieƔire
÷ controlleredeîntrerupere pentrutratareacererilordispozitiveloresterne
36
MAGISTRALEASINCRONE MAGISTRALEASINCRONEͲ Ͳ HANDSHAKING HANDSHAKING
37
TIPURIPRINCIPALEDEARHITECTURI TIPURIPRINCIPALEDEARHITECTURI
× ArhitecturavonNeumann –osingurĉmemoriepentruinstrucƜiuniƔidate
× ArhitecturaHarvard (DSP,MC)– memoriiseparatepentruinstrucƜiuniƔidate
38
ARHITECTURAVONNEUMANN(1945) ARHITECTURAVONNEUMANN(1945)
· DateleƔiinstrucƜiunile suntstocateînaceeaƔimemorieprincipalĉ (conceptulde
“programstocat”);
· ConƜinutulmemorieiesteadresabillaniveldelocaƜie (fĉrĉaseconsiderace
informaƜieestestocatĉ:datesaucod);
· InstrucƜiunile suntexecutatesecvenƜial (unacâteunaînordinealocaƜiilordememorie
încaresuntstocate)cuexcepƜiafaptuluicândacestlucruesteprecizatexplicitîncod.
· CalculatorulconƜineurmĉtoarelesubsisteme:
÷ unitatedecontrol
÷ unitatearitmeticĉƔilogicĉ(ALU)
÷ sistemI/O
÷ memorie
· CalculatoarelecuarhitecturĉvonNeumannsuntcalculatoaredeuzgeneral.Elepot
rezolvadiverseproblemeînfuncƜiedeprogramulexecutat
39
ARHITECTURAVONNEUMANN ARHITECTURAVONNEUMANN– –reprezentarestructuralĉ reprezentarestructuralĉ
ͲarhitecturĉdeuzgeneralsecvenƜialĉͲ
40
REPREZENTAREACICLULUIDEINSTRUC REPREZENTAREACICLULUIDEINSTRUCf fIUNE IUNE
· Pentrurulareaprogramului,UCPareo
funcƜionareciclicĉlafiecareinstrucƜiune
executatĉ
· Circuiteleelectronicealeunuicalculator
recunoscƔiexecutĉdoarunsetlimitatde
instrucƜiunielementare,codificateînformĉ
binarĉ
· InstrucƜiunilerecunoscutesuntrareorimai
complicatedecât:
÷ adunĉdouĉnumere
÷ verificĉdacĉunnumĉresteegalcu
zero
÷ copiazĉdatedintrͲozonĉamemoriei
calculatoruluiînaltĉzonĉ.
41
UNITATEADECONTROL(UC) UNITATEADECONTROL(UC)
· Unitateadecontrol(UC)este“creierul”procesorului
· UCcontroleazĉƔisincronizeazĉtoateelementeledininteriorulUCPƔiinterfeƜele
cĉtrecaleadedateexternĉ.
42
UNITATEAARITMETIC UNITATEAARITMETICb bILOGIC ILOGIC(UAL)+REGISTRE (UAL)+REGISTRE
· UnitateaaritmeticĉƔilogicĉ(ALU),realizeazĉoperaƜiilogice sauaritmetice cu
operanziiadresaƜideUC
· Înaintedeprelucrare,operanziisestocheazĉîntrunsetderegistredeuzgeneral,
folositecamemorietemporarĉ
· RegistrelereprezintĉomemorielocalĉUCP,defoartemarevitezĉ
· SetulderegistredeuzgeneralpoatefifolositînsĉƔipentrusalvareadiferitelor
informaƜiiprivindadresareamemorieiprincipale.
· ÎnfuncƜiederezultatuloperaƜiilorefectuate,ALUseteazĉanumiƜiindicatoride
condiƜii (indicatoridestare,fanioane,flagͲuri)
43
MEMORIAPRINCIPAL MEMORIAPRINCIPAL
· MemoriaprincipalĉserveƔtela
stocareadatelorƔiinstrucƜiunilor
excecutatedeUAL
· StocareadatelorƔiinstrucƜiunilor
sefacelalocaƜiidememorie
consecutiveadresabiledirect
44
SISTEMULDEINTRARE/IE SISTEMULDEINTRARE/IEb bIRE IRE
· SistemuldeI/OconƜinelocaƜiiadresabile(portͲuri)princarecalculatorulfaceschimb
deinformaƜieculumeaexternĉ.SistemulconƜinecircuitepentrufuncƜiile:
÷ schimbareformatdate(serial/paralel)
÷ stocaretemporarĉdedate(latch)
÷ verificareacorectitudiniidatelortransferate
÷ sincronizareîntreperifericƔiUCP(datoritĉdiferenƜelormaridevitezĉde
funcƜionare)
÷ logicĉdedecodificare
45
PERIFERICE PERIFERICE
· Dispozitive(periferice)deintrare – recepƜioneazĉinformaƜiadinmediulextern(prin
diverƔisenzori)subformĉdesemnaleelectriceƔiotransformĉcanaturĉfizicĉƔi
formatdereprezentareў compatibilitatecuniveluriledetensiunerecunoscutede
calculator(cavaloribinare).
· Dispozitive(periferice)deieƔire – operaƜieinversĉdispozitivelordeintrare.
PrelucreazĉdateledincalculatorƔiletransformĉîninformaƜieacceptabilĉla
dispozitivuldeieƔire.
46
REPREZENTAREAFUNC REPREZENTAREAFUNCf fIONALAUNUICALCULATOR IONALAUNUICALCULATOR
· UncalculatorpoatefidescrisƔiprinfuncƜiileͲ operaƜiilepecarelepuneladispoziƜia
utilizatorului
· CircuiteleelectronicealeunuicalculatorrecunoscƔiexecutĉdoarunsetlimitatde
instrucƜiunielementare,codificateînformĉbinarĉ
· InstrucƜiunilerecunoscutesuntrareorimaicomplicatedecât:
÷ adunĉdouĉnumere
÷ verificĉdacĉunnumĉresteegalcuzero
÷ copiazĉdatedintrͲozonĉamemorieicalculatoruluiînaltĉzonĉ
47
LIMBAJULMA LIMBAJULMAb bIN IN– – LIMBAJULDEASAMBLARE/PROGRAMARE LIMBAJULDEASAMBLARE/PROGRAMARE
· InstrucƜiunile elementare, recunoscute de un procesor formeazĉlimbajul maƔinĉ
(codmaƔinĉ) alprocesorului
· NotaƜie:limbajL
0
cecorespundemaƔiniifiziceM
0
.
· ProgramatorulscrieprogramelesaleîntrͲunlimbajL
1
,formatdininstrucƜiuni
simbolice(succesiunidelitereƔicifre),maiapropiatdelimbajuluman
· PentruaputeaexecutaacestprogrampemaƔinaM
0
fiecareinstrucƜiunedinL
1
a
programuluitrebuietranslatatĉ îninstrucƜiunidinlimbajulL
0
· DeexempluprogramatorulpoatescrieînL
1
instrucƜiunea:
addal,6
iarprogramuldetranslatarevagenerasuccesiuneabinarĉ,corespunzĉtoareluiL
0
:
0000010000000110
48
MA MAb bINIVIRTUALE INIVIRTUALE
· FuncƜional,sepoatespunecĉlimbajulL1corespundeuneimaƔinivirtuale
programabilenumitĉM1.Numeleacestuilimbajsimbolicdeprogramareeste“limbaj
deasamblare”,iarprogramuldetranslatareestenumit“asamblor”.
· Translatarea:
÷ totprogramulscrisînL1estetransformatînprogramscrisînL0(executabil),iarprogramul
înL1esteabandonat.
÷ programulînL0esteîncĉrcatînmemoriacalculatoruluiƔiexecutat
· Exempledeprogrametranslator:compilator,asamblor.
· Interpretorul esteunprogramînL0careruleazĉpeM0ƔicarepreiainstrucƜiunile
programuluiînL1capedatedeintrare.
· InterpretorulciteƔteƔidecodificĉfiecareinstrucƜiunedinL1Ɣiapoitreceimediatla
execuƜiaacesteia.Lainterpretarenusegenereazĉunprogramexecutabilcala
translatare
· Limbajedeprogramaremaiapropiatedelimbajuluman:L2,L3,...(pentrumaƔini
virtualeM2,M3,...)– suntnumitelimbajedenivelînalt(C,C++).
49
CALCULATOR=SUCCESIUNEDEMA CALCULATOR=SUCCESIUNEDEMAb bINIVIRTUALE INIVIRTUALE
Niveluln:ProgrameleînLnpotsãfie
interpretatedeuninterpretorceruleazãpe
omaƔinãdenivelinferior,saupotsãfie
translatatecãtrelimbajulmaƔinãalunei
maƔiniinferioare
Nivelul2:ProgrameleînL2potfiinterpretatede
uninterpretorceruleazĉpeomaƔinĉM1
sauM0saupotfitranslatateînL1sauL0
Nivelul1:ProgrameleînL1potfiinterpretatede
uninterpretorceruleazĉpeomaƔinĉM0sau
potfitranslatateînL0
Nivelul0:ProgrameleînL0potfiexecutate
directdecĉtrecircuiteleelectronice
numerice
50
IERARHIEDEMA IERARHIEDEMAb bINIVIRTUALELAUNGPCMICROPROGRAMAT INIVIRTUALELAUNGPCMICROPROGRAMAT
51
SOFTWARE SOFTWARE
52
NOTE NOTE
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE(UCP) (UCP)
54
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
¯ StructuraunitĉƜiicentraledeprelucrare
¯ CicluriledefuncƜionareaunuiprocesor
¯ UnitateaaritmeticĉƔilogicĉ.StructurĉƔifuncƜionare
¯ Unitateadecontrol.CircuituldedecodificareƔisemneleledecontrol
¯ Magistraleleinternealeprocesorului
¯ ExecuƜiainstrucƜiunilorƔimecanismepipeline
55
FUNC FUNCf fIEPROCESOR IEPROCESOR
· UnitateaCentralĉdePrelucrare(UCP UCP)acalculatoruluinumericesteostructurĉde
procesordeuzgeneral,cusetdeinstrucƜiuni
· Încadrulunuisistemdecalcul,(micro)procesorulUCPareresponsabilitateageneralĉ
deinterpretare interpretare Ɣi execu execuƜ Ɯie ie ainstrucƜiunilorunuiprogram(secvenƜĉdeinstrucƜiuni
stocatĉînmemoriaprincipalĉ)
· ÎnaccepƜiuneaclasicĉ(vonNeumann)aunuisistemdecalcul,maƔinaconƜineo
singurĉUCP.Unastfeldecalculatorestenumituniprocesor,pentruaͲldeosebide
calculatoarelemultiprocesor,careconƜindouĉsaumaimulteUCP
56
COMPONENTELEUNUISISTEMDECALCUL COMPONENTELEUNUISISTEMDECALCUL
· Modelulclasicdecaclulator(vonNeumann)cuprinde:
· Unitateadecontrol(UC)
· UnitateaaritmeticĉƔilogicĉ(UAL)
· Memoria(M)
· Dsipozitivedeintrare(DI)
· DispozitivedeieƔire(DO)
M
UC
D
I
D
O
UAL
Date de
intrare +
program
Date de
ieúire
UCP=UC+UAL
Unitatea centralĉ deprelucrare
57
STRUCTURAGENERALAUCP STRUCTURAGENERALAUCP
· · Unitatea Unitatea de deComand Comandĉ ĉ (UC) (UC) Ͳ circuitlogicsecvenƜial responsabil pentru:
× Citirea instrucƜiunilor dinmemorie
× Decodificarea instrucƜiunilor
× Generarea desemnale decontrolpentru execuƜia instrucƜiunilor
· · Unitatea Unitatea Aritmetico AritmeticoͲ ͲL Logic ogicĉ ĉ (UAL) (UAL) Ͳ circuitlogiccombinaƜional ceefectueazĉ operaƜii
aritmetice Ɣilogice:
× Aritmetice:+,Ͳ,/,*,mod,comparare
× Logice:bI,SAU,NU,
× Deplĉsari/rotaƜiistânga/dreapta
· · Registre Registre
÷ Registre generale (RG):pentru pĉstrarea temporarĉ adatelor
÷ Registre speciale (RS) : deadresare,destareƔicontrol
58
STRUCTURAGENERALAUCP STRUCTURAGENERALAUCP
UCP UCP
Unitatea de Control
+
Registre Speciale
Registre Generale
R1 Rn
Magistrala
sistem
R2

UAL UAL
Indicatori
decondiƜii
Comenzi
interne
procesorului
Comenzi
externe
InstrucƜiuniƔi
semnalede
stareexterne
Intraredate IeƔiredate
59
EXECU EXECUf fIAINSTRUC IAINSTRUCf fIUNILOR IUNILOR
· UCPareofuncƜionareciclicĉ– fiecareinstrucƜiuneesteexecutatĉîntrͲosecvenƜĉde
etape– faze deexecuƜie:
× citire codinstrucƜiune (instructionfetch IF IF)
× decodificare instrucƜiune (instructiondecodingDec Dec)
× citire operand(operanzi)(datafetch DF DF)
× execuƜie operaƜie (executionEx Ex)
× scriere rezultat (writebackWB WB)
· Cicluri detransfer:
÷ ciclu decitire instrucƜiune
÷ ciclu decitire operand(opƜional)
÷ ciclu descriere rezultat (opƜional)
C durata unei instrucƜiuni este determinatĉ denumĉrul decicluri caretrebuie sĉ
seexecute
60
CICLURIDEFUNC CICLURIDEFUNCf fIONARE IONARE
· · Cicluinstruc CicluinstrucƜ Ɯiune iune:SecvenƜadeoperaƜiinecesarepentruadresarea,aducereaƔi
execuƜiauneiinstrucƜiuni.
÷ UncicluinstrucƜiuneconƜinemaimulteciclurimaƔinĉ
· · Cicluma CiclumaƔ Ɣinĉ inĉ:intervaluldetimpnecesarpentruterminareauneioperaƜii
intermediare(citirememorie,scrierememorie,citireportI/O,scriereI/O)
÷ CicluldefetchinstrucƜiune =primulciclumaƔinĉaloricĉruicicluinstrucƜiune
÷ DeobiceiunciclumaƔinĉimplicĉuntransferalprocesoruluicuexteriorul
÷ UnciclumaƔinĉconƜineunasaumaimultestĉriUCP(perioadedeceas)
· · Stare Stare (timpdeciclualUCP) (timpdeciclualUCP)
÷ EstetimpulUCP(t
UCP
)necesarpentruexecutareauneioperaƜiielementareƔi
binedefinite(esteinversulfrecvenƜeilacarelucreazĉprocesorul)
÷ OoperaƜieelementarĉ(microͲoperaƜie)sereferĉdeobiceilauntransferîntre
douĉregistre
÷ StareaesteunitateadetimpdebazĉpentrumĉsurareadurateiactivitĉƜilorUCP
÷ t
UCP
=durata celei mai lungi cĉiînUCP(suma intârzierilor produse încircuitele
combinaƜionale carealcĉtuiesc calea unui semnal)
61
FUNC FUNCf fIONAREACICLICAPROCESORULUI IONAREACICLICAPROCESORULUI
62
STRUCTURAUNEIUCPELEMENTARE STRUCTURAUNEIUCPELEMENTARE
63
FUNC FUNCf fIONAREAUNEIUCPELEMENTARE IONAREAUNEIUCPELEMENTARE
64
PERFEC PERFECf fIONAREAUCPELEMENTARE IONAREAUCPELEMENTARE
PrincipaleletipurideextindereînorganizareaUCPelementarĉsunturmĉtoarele:
· IntroducereaunorregistrespecialedestareƔicontrol:
÷ Registrudestare(registrudeindicatori)
÷ Indicatoriidestare(flags flags)potfitestaƜiprinprogram(deex.SaltcondiƜionat)
÷ Indicatoridecontrolsauregistredecontrol
· Introducereaunorregistresuplimentaredeadresare,pentrustocareƔimanipulare:
÷ Operanzi
÷ InformaƜiipentruadresare
÷ Adeseasefolosescregistrepentrumoduricomplexedeadresare(indexatĉ,
bazatĉ,cubazĉƔiindex)
÷ Dacĉregistreleinterneauutilizaregeneralĉ(stocare,adresare,operaƜiide
prelucrareetc.)maƔinasespunecĉareorganizarepebazĉderegistredeuz
general
65
PERFEC PERFECf fIONAREAUCPELEMENTARE IONAREAUCPELEMENTARE
· ExtindereafuncƜiiloroferitedeunitateaaritmeticĉ unitateaaritmeticĉ :
÷ OperaƜiideînmulƜireƔiîmpĉrƜireînvirgulĉfixĉ
÷ OperaƜiicunumereînvirgulĉmobilĉ(numerereale)
· Introducereadesuporthardware(logicĉplusregistredeadresarespecializate)
pentruimplementareamemorieistivĉ memorieistivĉ :
÷ EsteostructurĉdedateaccesibilĉpeprincipiulLIFO(lastͲinfirstͲout)
÷ Stivaimplementatĉînmemoriaprincipalĉecontrolatĉprinregistruldeadresare
alUCPnumitStackPointer(SP)ceindicĉînpermanenƜĉadresavîrfuluistivei
· IntroducereafacilitĉƜilorpentruprelucrareaparalelĉ prelucrareaparalelĉadouĉsaumaimultor
instrucƜiuni:
÷ Unitatedecontrolorganizatĉcaunpipelinecukniveluriceeacepermite
prelucrareaparalelĉakinstrucƜiuniaflateîndiferitefazedeexecuƜie
÷ OrganizareaunitĉƜiiaritmeticecaoconductĉdeexecuƜie(pipelinearitmetic)cu
ketaje
÷ AdĉugareadekunitĉƜiALUpentruprelucrareaînparaleladatelor
66
STRUCTURAUNEIUCPTIPICE STRUCTURAUNEIUCPTIPICE
67
SETTIPICDEINDICATORIDECONDI SETTIPICDEINDICATORIDECONDIf fII II
· IndicatoriidecondiƜiereprezintĉunsetdebistabilicealcĉtuiescregistruldestareal
procesorului
· SuntsetaƜi/resetaƜidecĉtreUALînfuncƜiederezultatulultimeioperaƜiiaritmetice
saulogiceefecutateƔisuntfolosiƜipentrucomandaexecuƜieiulterioareaprocesului
× SignFlag SF SF Ͳ Semnrezultat
× ZeroFlag ZF ZF Ͳ Rezultatnul(toƜibiƜiipe0)
× ParityFlag PF PF ͲNumĉrpardebiƜipe1
× OverflowFlag OF OF ͲDepĉƔire!
× CarryFlag CF CF Ͳ Transport
× AuxiliarzFlag AF AF Ͳ Transportauxiliar
68
OVERFLOWFLAG OVERFLOWFLAG
· PentrubituldesemndedoreƔteutilizareaaceleeaƔiecuaƜiicaƔipentruceilalƜibiƜi
69
OVERFLOWFLAG OVERFLOWFLAG
70
NOTE NOTE
71
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
UNITATEAARITMETIC UNITATEAARITMETICƔ ƔiLOGIC iLOGIC
72
UNITATEAARITMETICO UNITATEAARITMETICOͲ ͲLOGIC LOGIC
· · Ac Ac– – Registruacumulator Registruacumulator
÷ pĉstreazĉunoperandƔi
rezultatuloperaƜiei
· · R R – Registrupentrualdoilea
operand
· · RS RS – – registrudestare (FLAGS) (FLAGS)
· · Codulopera CoduloperaƜ Ɯieiestegeneratde ieiestegeneratde
cĉtreunitateadecontrol cĉtreunitateadecontrolƔ Ɣi i
comandĉ comandĉƔ Ɣiarerolulselec iarerolulselecƜ Ɯiei iei
circuitelorlogicepentruexecu circuitelorlogicepentruexecuƜ Ɯia ia
opera operaƜ Ɯieidesemnate iei desemnate
R
Ac
UAL
n
n
n
n
n
Cod
OperaĠie
RS
73
SUMATORPEUNBIT SUMATORPEUNBIT
C
i
C
o
A
i
B
i
S
i
· S
i
= A
i
B
i
C
i
· C
o
= A
i
* B
i
+ C
i
* (A
i
B
i
)
74
SUMATORPEUNNBI SUMATORPEUNNBIf fI I
E
n-1
S
n-1
B
n-1
A
n-1
C
n-1
C
n-2
E
1
S
1
B
1
A
1
C
1
C
0
E
0
S
0
B
0
A
0
C
-1
75
OPERA OPERAf fIEDEADUNARECUOPERANZI IEDEADUNARECUOPERANZIÎ ÎN2REGISTRE N2REGISTRE
E
0
D
0
E
1
D
1
A
1
E
n-1
D
n-1
A
n-1
A
0
B
0
B
1
B
n-1
CKB
Ad
CKA
Pas OperaĠie Comenzi
1
btergeregistrulA
ÎnscrieregistrulBі D(operand)
Ad =0,CKA =ʿ, CKB =ʿ (impuls – 1
L
)
2
TransferBї A
ÎnscrieregistrulBі D(al2Ͳleaoperand)
Ad =1,CKA =ʿ,CKB=ʿ
3 Aі A+B Ad =1,CKA =ʿ,CKB=_(0
L
)
76
CIRCUITDEADUNARE CIRCUITDEADUNAREb bISCDERE ISCDEREÎ ÎNCOMPLEMENTFA NCOMPLEMENTFAf fDE DE2 2
· PentruoperaƜiadescĉdere,secomplementeazĉaldoileaoperandƔiseexecutĉ
operaƜiadeadunare
E
0
D
0
E
1
D
1
A
1
E
n-1
D
n-1
A
n-1
A
0
B
0
B
1
B
n-1
CLKB
CLKA
Ad / Sc
C
0
C
1
C
n-1
77
UNITATELOGICPE UNITATELOGICPE2BI 2BIf fI I
MUX 4:1
C
i-1
A
i-1
Cod
operaĠie
1
B
i-1
MUX 4:1
C
i
A
i
1
B
i
78
ALGORITMPENTRUOPERA ALGORITMPENTRUOPERAf fIADE IADEÎ ÎNMUL NMULf fIRE IRE
1100 * 12 *
1010 10
0000
1100
0000
1100
1111000 = 78H = 120
00000000 Acumulator (AC)
“0” ĺ 0000000 0 Depl. dr.
“1” ĺ 1100 Adunare
0001100 0 Produs parĠial
000110 00 Depl. dr.
“0” ĺ 00011 000 Depl. dr.
“1” ĺ 1100 Adunare
1111 000 Produs final
79
IMPLEMENTAREAOPERA IMPLEMENTAREAOPERAf fIEIDE IEIDEÎ ÎNMUL NMULf fIE IE
E (n+1)
Dispozitivde
comandĉ
Deplasare
X
Q
0
Q
1
Q
n-1
. . .
B
0
B
1
B
n-1
. . .
B
S
A
0
A
1
A
n-1
. . .
A
S
Q
S
Y
btergere
Scriere
Scriere
Test
Deplasare
Scriere
80
ALGORITMDE ALGORITMDEÎ ÎNMUL NMULf fIRE IRE
1. Înscriere operanzii în registre B ĸ X, Q ĸ Y, úterge acumulatorul A ĸ 0
2. Complementareoperanzidacĉsemnulestenegativ„í„
3. TestQ
0
– Q
0
= 0, deplasare dreapta A úi Q
– Q
0
=1,adunareA=B+AúideplasaredreaptaAúiQ
4. Serepetĉpasul3pânĉcândY
nͲ1
ajungeînQ
0
.Dupĉultimaeventualĉadunarenu
semaifacedeplasare
5. A
S
=B
S
+Q
S
6. ComplementarerezultatdacĉA
S
=1
81
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
UNITATEAdeCOMAND UNITATEAdeCOMANDƔ Ɣi i
CONTROL CONTROL
82
UNITATEADECONTROL UNITATEADECONTROL
UC
GF
CK
RI
DI + BCC
PC (IP)
RS
(flags)
Comenzi
Adresa
InstrucƜiune
Este creierul calculatorului Ɣise compune din :
· Generatorul desemnaluluidetactCK
· Generatorul fazelordeexecuƜie GF
· Unitatea dedecodificare instrucƜiuni (DI)Ɣi
blocul decomandĉ Ɣicontrol(BCC)
÷ interpreteazĉinstrucƜiunile Ɣigenereazĉ
semnalele decomandĉ necesare pentru
execuƜia lor
· Registrul deinstrucƜiuni RI
÷ pĉstreazĉ instrucƜiunea curentĉ
· ContoruldeprogramPC
÷ pĉstreazĉ adresa instrucƜiunii urmĉtoare
· Registrul destareprogramRS
83
UNITATEADECONTROL UNITATEADECONTROL
Unitateadecontrol(UC) Ͳgenereazĉsemnaledecontrolcĉtrecaleadedate
¬ RolulUCaunuimicroprocesorcerecunoaƔteunsetdeinstrucƜiuni,estesĉaducĉ
instrucƜiunile codificatebinardinmemoriaprincipalĉ(externĉprocesorului)Ɣisĉ
transmitĉsemnaledecontrol cĉtrecaleadedateƔicĉtrememorieƔisubͲsistemulde
I/O,înscopulexecutĉriiinstrucƜiunilor
¬ SemnaleledecontrolselecteazĉlafiecaremomentfuncƜiadeexecutatdecĉtre
caleadedateƔiselecteazĉtraseulspecificaldatelorprinunitĉƜilefuncƜionale
¬ Conformsemnaleloremise,unitateadecontrol(UC)face,periodic,oreconfigurare
dinpunctdevederelogicaunitĉƜiideprelucrare,astfelîncâtaceastasĉexecuteun
setimpusde(micro)operaƜii.
84
FUNC FUNCf fIILEPRINCIPALEALEUC IILEPRINCIPALEALEUC
· · Secven SecvenƜ Ɯiereainstruc iereainstrucƜ Ɯiunilor iunilor
÷ sereferĉlamanieraîncarecontrolulprocesoruluiestetransferatdelao
instrucƜiunelaalta,prinordineadegenerareaadreselorcĉtrememoria
principalĉacalculatorului.
· · Interpretareainstruc InterpretareainstrucƜ Ɯiunilor iunilor
÷ sereferĉlamodulîncareUCdecodificĉcodulfiecĉreiinstrucƜiuniƔila
modalitateadegenerareasemnalelordecontrolcĉtrecaleadedate,pentrua
comandaexecuƜiainstrucƜiunilor.
85
SECVEN SECVENf fIEREAINSTRUC IEREAINSTRUCf fIUNILOR IUNILOR
· InstrucƜiunile sunt selectate pentru execuƜie în ordinea dictatĉde UC (secvenƜiere)
dupĉinterpretareacoduluiinstrucƜiuniicurenteƔiasemnalelordereacƜiedin
exterior
· InformaƜiedesecvenƜiere=?
÷ DacĉfiecareinstrucƜiunearconƜineadresaurmĉtoareiinstrucƜiunicetrebuie
adusĉdinmemorie¬ lungimemareacoduluiinstrucƜiunii
· CelemaimulteinstrucƜiunidintrͲunprogramauunsuccesorunic
÷ InstrucƜiuneaI
i
arecaunicsuccesorinstrucƜiuneaI
i+1
÷ Stocare I
i
în locaƜia de adresĉA ¬ stocare I
i+1
în locaƜia de adresĉA+1 ce
urmeazĉimediatdupĉA
86
SECVEN SECVENf fIEREAINSTRUC IEREAINSTRUCf fIUNILOR IUNILOR
· Adresa instrucƜiunii urmĉtoare poate fi calculatĉprin incrementare !
· AdresaestestocatĉîntrͲunregistruͲnumĉrĉtordeadresealinstrucƜiunilornumit
“contordeprogram”,notatpescurtPC
· AdresainstrucƜiuniiurmĉtoaresecalculeazĉprinoperaƜia:
PCі PC+c
undecreprezintĉnumĉruldecuvintedememoriepecareseîntindeinstrucƜiunea
curentĉ
· Laramificare(instrucƜiunidesalt,sautratareaevenimentelordeîntrerupere)adresa
urmĉtaoreiinstrucƜiuniesteneͲconsecutivĉ
· Încazuluneiramificĉri,registruldeadresarePCseîncarcĉdirectcuadresalacarese
facesaltul
PCі X
· AdresaX esteconƜinutĉîncodulinstrucƜiuniideramifiare
87
INTERPRETAREAINSTRUC INTERPRETAREAINSTRUCf fIUNILOR IUNILOR
· FiecĉreiinstrucƜiuniinterpretatedeUC,îicorespundeosuccesiunedecomenzi
emisedeUC,conformalgoritmuluidoritdeproiectantulUC
· ComportareaUCdinpunctuldevederealsemnalelordecontrolgenerate(cafuncƜie
Ɣicasuccesiuneîntimp)pentrucomandaoperaƜiilorsepoatedescrieprin:
÷ TabeledetranziƜieastĉrilor
÷ Organigrame
÷ Limbajededescrierehardware
÷ CombinaƜiialemetodelordemaisus
· ExistĉdouĉmetodedeproiectareƔiimplementareaUC:
÷ Unitatedecontrolcablatĉ
÷ Unitatedecontrolmicroprogramatĉ
88
UNITATEADECONTROLCABLAT UNITATEADECONTROLCABLAT
· Unitateadecontrolcablatĉ esteunautomatsecvenƜialproiectatƔiconstruitpentru
generareaunuisetspecific ƔiîntrͲosecvenƜĉfixĉ desemnaledecontrol
÷ Odatĉproiectatĉ,algoritmuldecontrolnumaipoatefimodificatdecâtprin
reproiectareaîntregiistructuri
÷ ImplementareasepoatefaceprinconstrucƜiihardwaredetipPLA(programmed
logicarray)
· Avantaje aletehniciicablate:
÷ dimensiunimicialeUC
÷ vitezĉmaredeoperare
· Controlulcablatestefolositpentruprocesoarecarerecunoscun setregulatƔirelativ
redusdeinstrucƜiuni (deobiceiinstrucƜiunicuformatdelungimefixĉ)–
implementareaunuisetcomplexdeinstrucƜiuni(cala8086)estedificilĉ
89
CONTROLULCABLAT CONTROLULCABLAT– –SCHEMBLOC SCHEMBLOC
· Unitateadecontrolcablatĉesteunautomatcecuprinde:
– registruldememorareastĉriicurente
– registruldeinstrucƜiuni,carememoreazĉcoduloperaƜiei
– logicĉdecontrol(deobiceicombinaƜionalĉ)
90
UNITATEADECONTROLMICROPROGRAMAT UNITATEADECONTROLMICROPROGRAMAT
· Launitateadecontrolmicroprogramatĉ semnaleledecontrolsuntincluseîncuvinte
binaresuccesive(microinstrucƜiuni)stocateîntrͲomemoriedemarevitezĉ,inclusaîn
UC,numitĉmemoriedecontrol
– Implementareaalgoritmuluidecontrolsefaceprinprogramarea conƜinutului
memorieidecontrol
– FiecĉreiinstrucƜiunirecunoscutedeprocesorîicorespundeosecvenƜĉde
microoperaƜiigenerateprincitireauneisecvenƜedemicroinstrucƜiunidin
memoriadecontrol(secvenƜĉdemicroinstrucƜiuninumitĉmicroprogram)
– MicroprogrameleconƜinuteînmemoriadecontrolformeazĉuninterpretor al
setuluideinstrucƜiunirecunoscutdeprocesor
91
CONTROLULMICROPROGRAMAT CONTROLULMICROPROGRAMAT
· FiecarebitdintrͲomicroinstrucƜiunereprezintĉocomandĉelementarĉcaremerge:
÷ Directlaoresursĉcomandatĉ(registru,sauCLC),sau
÷ EsteprelucratĉîmpreunĉcualteinformaƜii(pentrudecodificareƔisincronizare)
pentrucaapoisĉsecomanderesursafizicĉ.
· FiecarecoddeinstrucƜiunecititƔidecodificatproducesaltullaoadresĉdinmemoria
decontrolundesegĉseƔtemicroprogramulasociatexecuƜieiaceleiinstrucƜiuni
· Principaleleavantaje:
÷ setuldeinstrucƜiunipoatefiuƔorschimbatprinschimbareamicroprogramelor
÷ dacĉestenevoie,permitemodificareadinamicĉ(întimpulrulĉriiprogramelor)a
setuluideinstrucƜiunirecunoscutdeUCprinrescriereamemorieidecontrol
÷ permitereducereacosturilorgeneraledeproiectareƔiconstrucƜieaUC
÷ reducereadimensiunilormicroprogramelor
· Dezavantajelemicrocodului:
– Vitezaredusĉdelucru,dependentĉdetehnologiaderealizareamemoriilor
– Gabaritulmare(suprafaƜĉmareocupatĉpechip)
92
CONTROLULMICROPROGRAMAT CONTROLULMICROPROGRAMAT
93
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
MAGISTRALAINTERN MAGISTRALAINTERN. .
SEMNALELEdeCONTROL SEMNALELEdeCONTROL
94
MAGISTRALEEXTERNE MAGISTRALEEXTERNE
· Magistraladedate
· Magistraladeadrese
· Magistraladecontrol
95
MAGISTRALADEADRESE MAGISTRALADEADRESE
· Liniideadresĉ,cetransmitdoarsemnaledeieƔiredinmicroprocesor
· EsteomagistralĉunidirecƜionalĉ
· LiniiledepeaceastĉmagistralĉsefolosescpentruadresarealocaƜiilordememorieƔi
aporturilordeintrareͲieƔire.
· IeƔirileʅPspremagistralaexternĉdeadresepottreceînstareadeînaltĉimpedanƜĉ
(HiZ)laocerereexternĉ,cândUCPcedeazĉcontrolulmagistralelorcĉtrealt
dispozitiv
· Deobiceivalorilebinarecelemaisemnificative(cupondereabinarĉmaximĉ)din
adresĉsefolosescpentruselectareablocurilordememorie
96
LOGICDEADRESARE LOGICDEADRESAREb bIDECODIFICAREMEMORIE IDECODIFICAREMEMORIE
97
MAGISTRALADEDATE MAGISTRALADEDATE
· Lĉrgimeamagistraleidedateestedeobiceimultipludeoctet(d=8,16,32,64...)
· CeledliniialemagistraleidedatesuntbidirecƜionale
· LiniileauposibilitateadetrecereînstareadeînaltĉimpedanƜĉ(HiZ)
· · MAGISTRALAINTERNaprocesoruluitrebuiesĉtransfereDATE MAGISTRALAINTERNaprocesoruluitrebuiesĉtransfereDATEƔ ƔiADRESE iADRESE
· · Magistralamultiplexatĉ Magistralamultiplexatĉ întimp–implementatĉlauneleuP pentrueconomiedepini
– Este folositĉatât ca magistralĉde adrese câtƔi pentru transferul datelor
– ÎnprimulciclumaƔinĉalfiecĉreiinstrucƜiunipemagistraladedatesepot
transmiteinformaƜiideadresĉsauinformaƜiidecontrol
– Laprocesorul8086piniaimagistraleidedatesuntmultiplexaƜipentruase
puteatransmiteƔiinformaƜiedeadresĉ(adresĉvalidatĉdesemnaluldecontrol
ALE(AddressLatchEnable)carecomandĉstocareaadreseiîntrͲunregistru
extern
98
MAGISTRALADECONTROL MAGISTRALADECONTROL
1. SemnaledecontrolƔisincronizarepentrutransferuridedate cumemoriaƔi
dispozitiveledeI/O;
2. SemnaledecontrolƔisincronizareacererilordecedareacontrolului
magistralelor;
3. SemnaledecontrolƔisincronizarecuevenimenteexternecegenereazĉcereride
întrerupere;
4. Semnaleindicatoaredestare;
5. Semnaleutilitare,cumarfireset,clock,alimentarecutensiune;
6. Semnalediverse,specificetipurilordemicroprocesoareƔiscopuluipentrucareau
fostproiectate.Deexemplu:
– intrĉritestabileprinsoftware
– intrĉripentrucomandaactivitĉƜiipascupasaUCP
– intrĉripentrusemnalizareaunorerori
– intrĉri/ieƔiripentrulucrulînsistemmultiͲprocesoretc.
99
SEMNALEDECONTROLPENTRUTRANSFERULDATELOR SEMNALEDECONTROLPENTRUTRANSFERULDATELOR
· Rol:permitprocesoruluicontrolulƔisincronizareatransferurilorpemagistralade
date,cumemoriaƔidispozitiveledeIO
· Setminim:
– RD ReaD– citirededatedinmemorie/registruport
– WR WRite– scrieredateînmemorie/registruport
– R/W Launelemicroprocesoareexistĉunsingursemnaldecontrolal
sensuluidetransferaldatelorpemagistralĉ(ceselecteazĉoperaƜia
doritĉfuncƜiedenivelullogic)
– AS AddressStrobe–semnaldevalidareaadreseiplasatĉpemagistrala
deadrese
– READY SemnalprincarememoriasaudispozitivuldeI/Osemnaleazĉ
procesoruluicĉpoatetrasmite/recepƜionadate
100
CICLUDEMAGISTRALTIPIC CICLUDEMAGISTRALTIPIC(CITIRE) (CITIRE)
· CicluldemagistralĉesteunevenimentasincronceîncepecuapariƜiaadresiunei
locaƜiidememorie(portI/O)urmatĉdeemitereaunorsemnaledecontrol
· Echipamentulselectatacceptĉdatadepemagistaladedate(cicludescriere)sau
plaseazĉdatepemagistralĉ(cicludecitire)
CK
Adresĉ
AS
RD
READY
Date
UCP Memorie
RD
AS
READY
ADR
Date
101
SEMNALEDECONTROLPENTRUTRANSFERURIDMA SEMNALEDECONTROLPENTRUTRANSFERURIDMA
· Problemacererii/cedĉriicontroluluimagistralei – altedispozitivedetipmaster(alte
procesoare,controllere)ceauposibilitateadetransferaldatelordirectcumemoria
principalĉ(transferDMA– DirectMemoryAcces)
· Setminim:
– BR BusRequest– cereredeaccesƔicontrolalmagistralelorsistemului
– BG BusGrant–confirmareacedĉriicontroluluimagistralelor
· Înurmacedĉriicontroluluimagistralelor,UCPtreceieƔirilesalecĉtremagistralelede
date,adreseƔiopartedinceledecontrolînstaredeînaltĉimpedanƜĉ(HiZ)
· UCPprevĉzutcuaceastĉperechedesemnalesondeazĉdeobiceisemnaluldecerere,
detipBR,lasfârƔitulfiecĉruiciclumaƔinĉƔicedeazĉcontrolulmagistralelorcâtmai
curândposibil,cuexcepƜiaunorcazurispecialeîncareoperaƜiilenupotfiîntrerupte
· Întârziereamaximĉcucareesteservitĉocereredeacceslacontrolulmagistralelor
estedeciunciclumaƔinĉ
· Încazulmaimultorcererideacordareacontroluluimagistralelor,analizaprioritĉƜilor
sefacedeobiceicuuncircuitdearbitrarecentralizatĉacererilordemagistralĉ.
102
SEMNALEDESINCRONIZAREACERERILORDE SEMNALEDESINCRONIZAREACERERILORDEÎ ÎNTRERUPERE NTRERUPERE
· Semnaleleaurolulsincronizĉriievenimentelorexternecumicroprocesorul
· Cerereadeîntrerupereprovenitĉdinexteriorestedeobiceiocereredeserviciidin
parteadispozitivelordeintrare/ieƔire
· Existĉdouĉtipuridecererideîntreruperehardware(iniƜiateprinsemnalelectricde
întrerupere):
– întreruperimascabile
– întreruperinemascabile
· Unsetminimdesemnalepentrumanevrareacererilordeîntreruperecuprinde:
– INT INTerrupt – cereredeîntrerupere
– NMI NonͲMascableInterrupt – cereredeîntreruperenemascabilĉ
– INTA INTeruptAcknoledge–confirmareaacceptĉriiîntreruperii
103
SEMNALEDEUTILITARE SEMNALEDEUTILITARE
Q Q RESET RESET
· SemnaluldetipRESETesteprezentlatoatemicroprocesoareleƔieladuceconƜinutul
registrelormicroprocesoruluiîntrͲostareprefixatĉprinproiectare
· Înaceastĉstarepredeterminatĉcontoruldeprogram(PC)seiniƜializeazĉlaovaloare
fixĉ(deobiceilazero),iarîntreruperilemascabilesuntinvalidate
– Restartaremicroprocesor
– PowerͲonReset(Resetarelaalimentareacircuitului)
Q Q CLOCK CLOCK
· SemnaluldeceasarerolulsincronizĉriituturoroperaƜiilordinsistem
· SemnaluldeceasestefurnizatdeuncircuitdeceasspecialsincronizatcufrecvenƜa
unuioscilatorcuquartz
· Laprocesoareleactuale,aceastĉfrecvenƜĉestemultiplicatĉdeunnumĉrdeori
104
CIRCUITULDECEAS CIRCUITULDECEAS
· Circuituldeceasintel8084 aparƜinândfamilieix86necesitĉconectareaexternĉa
unuicristaldequartz(f
QuartZ
=14,28MHz)Ɣiareroluldeagenera:
– Semnaledesincronizare:
• CK(Clock) furnizatprocesorului(f
CK
=f
QuartZ
/3=4,76MHz)
• PCK(PeripheralClock) furnizatcircuitelorexterne(f
PCK
=f
CK
/2=2,38MHz)
– SemnaluldeRESET pt.iniƜializareaprocesorului(printrͲuncircuittriggerSchmitt)
respectivpowerͲonreset (deiniƜializaredupĉpornireatensiuniidealimentare
semnaluldecomandĉdureazĉcelpuƜin50deperioadedetact)
– Semnalepentruinserareastĉrilordeasteptare încicluldemagistralĉ
RDY1
RDY2
RES READY
RESET
CK
PCK
CK
RESET
READY
X1
X2
8086 8284
105
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
PIPELINING PIPELINING
PARALELISM PARALELISMî înEXECU nEXECUf fIA IA
INSTRUC INSTRUCf fIUNILORprinTEHNICIPIPELINE IUNILORprinTEHNICIPIPELINE
106
PIPELINE PIPELINEͲ Ͳ INT INTR RODUCERE ODUCERE
· · Pipelining PipeliningesteotehnicĉdeintroducereaparalelismuluiînexecuƜiainstrucƜiunilor
· · Pipeline Pipeline =conductĉdeexecuƜie
· SerealizeazĉprinîmpĉrƜireacicluluideexecuƜiealuneiinstrucƜiuniînmaimultefaze
deprelucrare,iarexecuƜiasefaceînparalelpentrumaimulteinstrucƜiunicarese
aflĉînfazediferitedeprelucrare
· Fiecareetaj/segmentalconducteicompleteazĉopartedinoperaƜiilenecesareîn
execuƜiainstrucƜiunii
· Etajeleconducteisuntconectateunuldupĉcelĉlaltpentruarealizao“bandĉ” de
execuƜieainstrucƜiunilor
· TehnicadetippipelinepoatefiaplicatĉatâtpentruexecuƜiainstrucƜiunilorcâtƔi
pentrucircuitelearitmeticedeprelucrare
– Pipelinearitmetic
– PipelinedeinstrucƜiuni
107
PRINCIPIULPIPELINING.CICLUMA PRINCIPIULPIPELINING.CICLUMAb bINALCONDUCTEI INALCONDUCTEI
· Tehnicapipelineconducelaoreducereatimpuluideexecu oreducereatimpuluideexecuƜ Ɯiemediupentruo iemediupentruo
instruc instrucƜ Ɯiune iune
· TimpulnecesarpentrudeplasareauneiinstrucƜiunicuunetajîninteriorulconductei
constituieuncicluma ciclumaƔ Ɣinĉalconductei inĉalconductei
· LungimeacicluluimaƔinĉalinstrucƜiuniiestedeterminatĉdetimpulcerutpentru
prelucrareaîncelmailentsegmentdinconductĉ
· UnciclumaƔinĉalconducteiesteegalcuunulsaumaimulteciclurideceasprocesor,
darobiectivuloricĉreimaƔiniceimplementeazĉaceastĉtehnicĉestesĉseajungĉla
omediedeoinstrucƜiuneexecutatĉpecicludeceasprocesor
· CeamaisimplĉcaledeaînƜelegeprincipiulconducteiestesĉimaginĉmfiecareetaj
cafiindformatdintrͲunregistruurmatdeuncircuitcombinaƜionaldeprelucrare
108
CONDUCTCU CONDUCTCU4ETAJE 4ETAJE– –SCHEMDEPRINCIPIU SCHEMDEPRINCIPIU
· RegistrelestocheazĉdateledeintrarepentruCLCpeduratanecesarĉcasubͲoperaƜia
corespunzĉtoaresegmentuluisĉfieterminatĉƔirezultatelesĉaparĉcorectlaieƔirea
circuituluicombinaƜional
· Dacĉîncĉrcarearegistrelorcudateledelaetajulanteriorsefacesincroncuun
impulsdeceas,perioadaceasuluitrebuiesĉfiesuficientdemareastfelcacelmai
lentdintreetajesĉtermineprelucrarea
109
CONDUCTDEINSTRUC CONDUCTDEINSTRUCf fIUNI IUNI
Considerĉmoconductĉdeinstruc conductĉdeinstrucƜ Ɯiuni iuniformatĉdin5etaje:
· · IF(InstructionFetch) IF(InstructionFetch) – instrucƜiuneaadresatĉprinregistrulcontorprogramPC
esteadusĉdinmemorieînregistruldeinstrucƜiuni(RI)iarregistrulPCeste
incrementatpentruaadresaurmĉtoareainstrucƜiune
· · ID(InstructionDecode) ID(InstructionDecode) – instrucƜiuneaestedecodificatĉiaroperanziisunt
încĉrcaƜiînregistreledeintrarealeUAL
· · EX(Execution) EX(Execution) –executĉoperaƜiacurentĉƔiplaseazĉrezultatulînregistul
acumulator(registruldeieƔireimplicit).ConƜinutulregistrelordepindedeoperaƜia
executatĉ:
÷ operaƜiearitmeticĉ/logicĉ(registruͲregistru):rezultatulînregistrulAcc
÷ referinƜĉlamemorie(scriere/citire):regAccconƜineoadresĉefectivĉde
memorie
÷ saltînprogram:UALcalculeazĉadresadesaltƔioplaseazĉînregistrulAcc
110
CONDUCTDEINSTRUC CONDUCTDEINSTRUCf fIUNI IUNI
· · MA(MemoryAccess) MA(MemoryAccess) – acceslamemorie(citire/scriere)
÷ operaƜiadecitirememorie:datelesuntcititedinmemoriedelaadresadin
registrulAccƔiplasatînregistrultemporardeintraredate
÷ operaƜiadescrierememorie:dateledinregistrultemporardeieƔiredatesunt
transferateînmemoriadedate(DͲcache)
· · WB(WriteBack) WB(WriteBack) – scriererezultatînregistreleprocesoruluiƔiseexecutĉîn
cazuloperaƜiilorregistruͲregistru.
÷ operaƜieregistruͲregistru:conƜinutulregistruluideieƔirealUAL(Acc)este
transferatînregistrulrezultat(deex.unuldintreregistrelegeneraleale
procesorului)
111
CONDUCTDEINSTRUC CONDUCTDEINSTRUCf fIUNI IUNI
· · Execu ExecuƜ Ɯiesecven iesecvenƜ Ɯialĉ ialĉ
÷ suntnecesare5
perioadedeceas
pentruexecuƜiaunei
instrucƜiuni
÷ Arhitecturiscalare
· · Execu ExecuƜ Ɯiepipeline iepipeline
÷ încazulideal,se
executĉoinstrucƜiune
lafiecareperioadĉde
ceas
÷ Arhitecturipipeline
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
Instr.i1
Instr.i2
Instr.i3
Instr.i4
Instr.i5
Perioade
deceas
InstrucƜiunea1 InstrucƜiunea2
CicluUCPcurent
112
CRE CREb bTEREA TEREAÎ ÎNVITEZ NVITEZ
· Conductĉcuketaje ƔininstrucƜiuni deexecutat
T
CK
timpuldeciclualconductei
k× T
CK
timpulnecesarpentruumplereaconductei
T
P
=(k+nо1)× T
CK
timpultotalpentruexecuƜiacelorninstrucƜiuni
· PentruunprogramcuninstrucƜiuni,fĉrĉpipeline(cuexecuƜiesecvenƜialĉ)timpul
mediutotaldeexecuƜievafiegalcu:
T=n× T
mediu
T
mediu
timpmediunecesarpentruexecuƜiauneiinstrucƜiuni
· CreƔtereaînvitezĉdatoritĉfolosiriiconducteipoateficalculatĉcaraportîntrecele
douĉvaloridetimpconsiderândn>>k–1 ƔipresupunândT
mediu
= k× T
CK
· CreƔtereaînvitezĉtindelanumĉruldeetajealconductei
( )
÷ ÷
mediu mediu
CK CK
n×T T
S= k
k+n - 1 xT T
113
ORGANIZAREACIIDEDATE ORGANIZAREACIIDEDATEÎ ÎNTR NTRͲ ͲUNPROCESORRISCELEMENTAR UNPROCESORRISCELEMENTAR
Main Memory
Pipeline
Decode &
Control
ALU
D: Linii de date
PC: Program Counter
A: Linii de adresă
I-cache D-cache
D D A A
Instruction
Fetch
PC
MMU MMU
Register
File
Magistrală Rezultat
Magistrală Operand B
Magistrală Operand A
114
ARHITECTURPIPELINE ARHITECTURPIPELINE
E E
M
U
X
P
C
MEM
InstrucƜiuni
IͲCACHE
P
C
P
C
R
I
U
A
L
R
e
g

I
n
1
U
A
L
R
e
g

I
n
2
R
e
g
i
s
t
r
u

I
m
e
d
i
a
t
B
l
o
c
R
E
G
I
S
T
R
E
R
E
G
I
S
T
R
E
D
E
C
M
U
X
M
U
X
U

A

L
U

A

L
U
A
L
R
e
g

O
u
t
R
e
g
i
s
t
r
u

C
o
n
d
i
Ɯ
i
i
Zero?
+4
MEM
Date
DͲCACHE
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

R
e
z
u
l
t
a
t
M
U
X
IF(FetchInstrucƜiune) ID(Decodificare) EX(ExecuƜie) MA(AccesMemorie) WB
R
e
g
i
s
t
r
e

I
F
/
I
D
A
d
r
e
s
ĉ

i
n
s
t
r
u
c
Ɯ
i
u
n
i

d
e

s
a
l
t
Scriere în registru
SelectoroperaƜie
regͲreg/regͲmem
A
d
r
e
s
a
r
e

r
e
g
i
s
t
r
e
115
SURSEDECONFLICT(HAZARD) SURSEDECONFLICT(HAZARD)
· CreƔtereaînvitezĉegalĉcunumĉruldeetajealconductei(k)estedoarolimitĉ
teoreticĉ,pentrucĉ:
– pemĉsuracreƔteriinumĉruluideetajediferenƜeleîntreT
mediu
Ɣik·T
CK
semĉresc
– cucâtcreƔtenumĉruldeetajecuatâtmaigreuestesĉechilibrezetimpiide
execuƜiepefiecareetaj
· ÎnplusaparproblemedecarenusͲaƜinutcontînrelaƜiacalcul:
– salturileînprogram
– dependenƜadedateinterͲinstrucƜiuni
– dependenƜaderesurselehardwareinterͲinstrucƜiuni
– acesteelementecreeazĉceeacesenumeƔtehazardulstructuriidetipconductĉ
· Sursedeconflict(hazard):
– Conflictederesurse Ͳ hazardstructural
– DependenƜadatelor Ͳhazarddedate
– Ramificĉrile Ͳ hazarddecontrol
116
HAZARDULDEDATE HAZARDULDEDATE
· DependenƜadatelor(hazarddedate) sereferĉlainstrucƜiunicarefolosescca
operanzirezultatealeinstrucƜiuniloranterioaredinconductĉ
– instrucƜiunileanterioareîncĉnuaufostcompletexecutate
– rezultatulnuestedisponibil
· Hazarduldedateseînlĉturĉfieprin:
– metodehardware:multiplicarearegistrelor(bypass)
– metodesoftware:prinreͲordonareainstrucƜiunilordinprogram
IF ID EX WB
IF ID EX
IF ID EX
IF
movAX,5
movBX,AX
subCX,2
monDX,CX
WB
WB
ID EX WB
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
117
HAZARDULDECONTROL HAZARDULDECONTROL
· Hazarddecontrol estecauzatdeinstrucƜiuniledesaltînprogram(ramificĉri)
– stivatrebuiegolitĉƔireͲînceputprocesuldeexecuƜiealinstrucƜiunilordelaadresadesalt
· metodelederezolvareîncearcĉsĉmenƜinĉconductaplinĉlafiecareimpulsdeceas:
– prinpredicƜiasalturilor
– prininstrucƜiunidesaltîntârziat
IF ID EX
IF EX WB
ID EX WB
IF ID EX MA WB
jeET1
abbAX,BX
subCX,3
ET1:mov[1234],AX
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
.

.

.
ID
IF
118
HAZARDULSTRUCTURAL HAZARDULSTRUCTURAL
· Conflictederesurse(hazardstructural) produsedeaccesullaaceleaƔiresursedin
douĉetajediferitealeconductei
– Deexempluaccesulsimultanadouĉetajelamemoriaprincipalĉ,unuldinaccesepentru
aducereacoduluiuneiinstrucƜiuni,iarcelĉlaltpentruaccesareaoperanzilor
· AcesteconflicteserezolvĉprinmĉrireanumĉruluideunitĉƜifuncƜionale(de
exempluUALmultiple)ƔiprinutilizareadespaƜiiseparatedememoriepentrudateƔi
instrucƜiuni
IF ID EX MA WB
movAX,5
mov[1234],AX
T
1
T
2
T
3
T
4
T
5
IF ID EX WB
119
PIPELINEARITMETIC PIPELINEARITMETIC
· Exempludepipelinearitmetic
pentruadunarea/scĉdereaîn
virgulĉmobilĉ
X=Ax2
a
Y=Bx2
b
120
ARHITECTURPIPELINE ARHITECTURPIPELINE
E E
M
U
X
P
C
MEM
InstrucƜiuni
IͲCACHE
P
C
P
C
R
I
U
A
L
R
e
g

I
n
1
U
A
L
R
e
g

I
n
2
R
e
g
i
s
t
r
u

I
m
e
d
i
a
t
B
l
o
c
R
E
G
I
S
T
R
E
R
E
G
I
S
T
R
E
D
E
C
M
U
X
M
U
X
U

A

L
U

A

L
U
A
L
R
e
g

O
u
t
R
e
g
i
s
t
r
u

C
o
n
d
i
Ɯ
i
i
Zero?
+4
MEM
Date
DͲCACHE
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

R
e
z
u
l
t
a
t
M
U
X
IF(FetchInstrucƜiune) ID(Decodificare) EX(ExecuƜie) MA(AccesMemorie) WB
R
e
g
i
s
t
r
e

I
F
/
I
D
A
d
r
e
s
ĉ

i
n
s
t
r
u
c
Ɯ
i
u
n
i

d
e

s
a
l
t
Scriere în registru
SelectoroperaƜie
regͲreg/regͲmem
A
d
r
e
s
a
r
e

r
e
g
i
s
t
r
e
ARHITECTURADE ARHITECTURADEMICROPROCESO MICROPROCESOR R
122
ARHITECTURAMICROPROCESORULUI ARHITECTURAMICROPROCESORULUI
¯ Arhitecturamicroprocesoruluiintel8086
¯ Registrelemicroproccesorului8086
¯ Cicluriledemagistralĉ.SemnaleledecomandĉƔicontrol
¯ Magistralainternĉmultiplexatĉ
¯ Arhitecturievoluate.Paralelism
123
ARHITECTURAMICROPROCESORULUI ARHITECTURAMICROPROCESORULUI
ARHITECTURAMICROPROCESORULUI8086 ARHITECTURAMICROPROCESORULUI8086
124
MICROPROCESORULINTEL8086 MICROPROCESORULINTEL8086Ͳ Ͳ caracteristiciprincipale caracteristiciprincipale
E magistraladedatede16biƜi;
E magistraladeadresede20biƜi(1MBdememorieadresabilĉdirect);
E adresaresegmentatĉamemoriei;
E 4registredeuzgeneralpe16biƜiadresabiledirectsaupeocteƜi;
E 4registredesegmentpe16biƜi;
E 2registreindexpe16biƜi;
E unsistemfoarteflexibildeadresareamemoriei(7moduri);
E sistemdeîntreruperihardwareƔisoftware;
E posibilitateafuncƜionĉriiînsistememultiprocesor;
E posibilitateaefectuĉriioperaƜiiloraritmetice(inclusivînmulƜireƔiîmpĉrƜire)Ɣi
operaƜiilogice;
E frecvenƜĉdetact6MHz.
125
ARHITECTURAINTEL8086 ARHITECTURAINTEL8086
126
μ μPINTEL8086 PINTEL8086– –UNIT UNITf fIFUNC IFUNCf fIONALE IONALE
× UnitateadeexecuƜie (EU– ExecutionUnit)
× UnitateadeinterfaƜĉcumagistrala (BIU– BusInterfaceUnit)
· BIUƔiEUopereazĉ asincronƔiformeazĉ unmecanismunitardeaduceresiexecuƜiea
uneiinstrucƜiuni.
· Procesarea“paralelĉ” acelordouĉunitĉƜifuncƜionaleasigurĉ creƔtereavitezeide
lucruamicroprocesorului prinsuprapunereaetapeideaducereauneiinstrucƜiunidin
memorie(prefetch)cuetapadeexecuƜieainstrucƜiuniiprecedente(magistrala
sistemesteutilizatĉ maieficeint).
127
μ μPi8086 Pi8086– – UNITATEADEINTERFA UNITATEADEINTERFAf fCUMAGISTRALA CUMAGISTRALA
× × Unitateadeinterfa UnitateadeinterfaƜ Ɯĉcumagistrala ĉcumagistrala (BIU– BusInterfaceUnit)
· BIUexecutĉtoatecicluriledemagistralĉ (“READ”,“WRITE”,“INTA”)fielacererea EU
saupentruumplereauneicozideinstrucƜiuni (QFIFO)
· QFIFOesteomemoriedetipFirstInFirstOut cu6cuvinte (6registrex1octet)
· BIUexecutĉnoicicluri“FETCH” înintervalelecâtEUnusolicitĉmagistralamfiind
posibilĉaducereaînavans(prefetch)amax6octeƜidin programul executat din
locaƜiidememorieadiacente(procesareserialĉaprogramului)
· Dacĉ EUexecutĉ oinstrucƜiune cetransferĉ controlul programului spre onouĉ
adresĉ,BIUreseteazĉ coada Ɣiorealimenteazĉ cu 6octeƜiîncepând delaaceastĉ
nouĉ adresĉ
· Dacĉ QFIFO esteplinĉ ƔiEUnusolicitĉ transferuri pe magistralĉ, apar cicluri în
aƔteptare (exemplu:T1T2T3T4TITI...TITIT1T2T3T4...TI=Idle State)
· BIUgenereazĉadresafizicĉ pe 20debiƜi
128
μ μPi8086 Pi8086– – UNITATEADEEXECU UNITATEADEEXECUf fIE IE
× × Unitateadeexecu UnitateadeexecuƜ Ɯie ie (EU– ExecutionUnit)
· EUobƜinecoduridelaBIU(aƔteaptĉdacĉQFIFOestevidĉ Ͳ doarîncazul
instrucƜiunilordesaltînprogram)
· EUdecodificĉ ƔiexecutĉinstrucƜiunile,respectivproceseazĉdatelecuexcepƜia
calculelorcomplexeefectuatedecoprocesorulmatematici8087
· EUlucreazĉ cuadreseƔidatepe8/16biƜi
· EUactualizeazĉflagͲurile (indicactoriidecondiƜie)
· EUcalculeazĉadreseleefective (pe16biƜi)aleoperanzilorconformmoduluide
adresarespecificatîncoduloperaƜieidininstrucƜiune
· EUfurnizeazĉadreseleefectiveƔidatelecĉtreBIU
· ExecuƜiainstrucƜiunilorarelabazĉprincipiulmicroprogramĉrii:toatecodurile
operaƜiilorcepotfiexecutatedeEUsuntmemorateîntrͲomemoriedetipROMdin
interiorulUCP.
129
× × Registreledeuzgeneral Registreledeuzgeneral (MainRegisters)
· RGsuntlocaƜii dememorie carestocheazĉ datele pe careEU leproceseazĉ laun
momentdat Ɣitrebuie sĉ fieînconcordanƜĉ cu magistrala internĉ aprocesorului
(M
DATE
=k*R
UCP
). Ex.Pentium: busintern pe 64biƜi,reg. pe32biƜi
· Suntregistrepe16biƜiadresabiledirectsaupeoctet
× Registreindex pe16biƜi:
SI(SourceIndex),DI(DestinationIndex),BP(BasePointer),SP (StackPointer)
× Registrulindicatorilordestare Ɣidecontrolalprocesului(decondiƜii)Ͳ FLAGS
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE
15 8 7 0
AH AL AX (accumulator)
BH BL BX (base)
CH CL CX (counter)
DH DL DX (data)
130
× × Registredeuzgeneral Registredeuzgeneral (MainRegisters) (MainRegisters)
· AX operaƜiiaritmetice(×),(/)pe16biƜiƔioperaƜiideI/Ope16biƜi
AL aritmeticĉzecimalĉpe8biƜiƔiconversiidecod
AH operaƜiiaritmetice(×)Ɣi(/)pe8biƜi;
· BX conversiidecodƔicaregistrudebazĉdeadrese (adresarebazatĉ);
· CX operaƜiicuƔiruri,curoldecontordecicluri;
CL deplasĉri(stânga,dreapta–cuunnumĉrdepaƔidaƜidevaloarealuiCL);
· DX operaƜiiaritmetice(×),(/)pe16biƜiƔicaregistrudeadresareindirectĉa
porturilordeintrare– ieƔire(I/O);
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IEͲ Ͳutilizĉri utilizĉri
131
× × Registreindex RegistreindexƔ Ɣipointer ipointer pe16bi pe16biƜ Ɯi i
· SP implicitîntoateoperaƜiilecustiva(conƜineadresavârfuluistivei);
· BP implicitînoperaƜiilecustiva(conƜineadresadebazĉasegmentuluidestivĉ);
· SI operaƜiileasupraƔirurilordedate(specificĉadresasursei);
· DI operaƜiileasupraƔirurilordedate(specificĉadresadestinaƜiei).
÷ Registrelepointer(BP,SP)suntfolositepentruapĉstradeplasamentulrelativlabaza
registrelordesegmentînoperaƜiiledeacceslamemorie.
÷ SP(registrulindicatordestivĉ) esteînpermanenƜĉdecrementatfĉrĉintervenƜia
programului)Ɣiindicĉadresavârfuluistivei (ultimalocaƜiedememorieimplicatĉîntrͲ
ooperaƜiecustiva)relativlabazasegmentuluidestivĉ
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IEͲ Ͳutilizĉri utilizĉri
132
FLAGSRegister FLAGSRegister– – Registruldestare Registruldestare
· CF CarryFlag depĉƔirearitmeticĉ(transport)
· PF ParityFlag paritate(rezultatuloperaƜieiareunnumĉrpardebiƜisetaƜi)
· AF AuxiliaryFlag transportîntrebitul3Ɣi4
· ZF ZeroFlag rezultatnullaultimaoperaƜiearitmeticĉsaulogicĉ
· SF SignFlag bitdesemn(iavaloareaMSBlaoperaaƜiilecunumerecusemn)
· TF TripFlag TF=1determinĉUCPsĉlucrezeînmodulpascupas –se
genereazĉcâteoîntrerupereinternĉdupĉfiecareinstrucƜiune
· IF InterruptFlag mascĉpentruînteruperiexternemascabile
(IF=1– validareîntreuperi;IF=0– invalidareîntreruperi)
· DF DirectionFlag indicĉdirecƜiadeplasĉriiadreseilaoperaƜiilecuƔiruri
(autodecrementarearegistrelorSI,DIdacĉDF=1respectiv
autoincrementareadacĉDF=0)
· OF OverflowFlag indicatordedepĉƔirearitmeticĉ:sͲapierdutMSBalrezultatului
datoritĉfaptuluicĉvaloareaacestuiaadepĉƔitcapacitateade
reprezentarealocaƜieidestinaƜie
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IEͲ Ͳutilizĉri utilizĉri
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bit
- - - - O D I T S Z - A - P - C Flag
133
REGISTRELEUNIT REGISTRELEUNITf fII II DEINTERF DEINTERFA Af fCUMAGISTRALA CUMAGISTRALA
Registresegment Registresegment
CS CodeSegment
DS DataSegment
SS StackSegment
ES ExtraSegment
Registrulcontordeprogram Registrulcontordeprogram
IP
Instruction
Pointer
· ConƜineadresa relativĉ (offsetͲul)în segmentul decod
curent(relativ laCS) ainstrucƜiuniicurente
·BIUactualizeazĉvaloareaînscrisĉînIPdupĉfiecare
operaƜiedefetch
· În cazul unei instrucƜiuni desalt interͲsegment,IPeste
salvat în vârful stivei (împreunĉ cu CS) Ɣiapoi încĉrcat cu
adresa relativĉ în segmentul decod ainstrucƜiunii Ɯintĉ
· Registrepe16biƜiї spaƜiudeadresarede64kB
·OferĉsuportpentruimplementareaunuispaƜiude
memoriede1MB
· ConƜinadreseledebazĉalesegmentelorlogicedecod,
date,stivĉƔiextrasegment
· Doar4segmenteactivelaunmomentdat
134
SEMNALELEEXTERNEALEMICROPROCESORULUIi8086 SEMNALELEEXTERNEALEMICROPROCESORULUIi8086
135
SEMNALELEEXTERNEALEMICROPROCESORULUIi8086 SEMNALELEEXTERNEALEMICROPROCESORULUIi8086
136
SEMNALELEEXTERNEALEMICROPROCESORULUIi8086 SEMNALELEEXTERNEALEMICROPROCESORULUIi8086
137
· CicluldemagistralĉalBIU esteunevenimentasincron ceîncepeodatĉcuapariƜia
adreseiuneilocaƜiidememoriesauaunuiportdeI/Ourmatĉdeunsemnalde
controldecitire/scriere
· Echipamentulselectat(MEM/port)acceptĉdatadepemagistraladedatepedurata
cicluluidescrieresauplaseazĉdatapemagistralĉîntimpulcicluluidecitire.
· Laterminareacicluluidemagistralĉechipamentulrespectivmemoreazĉdatascirsĉ
prinintermediulunorcircuitedetiplatch– buffere– sau,încazulcicluluidecitire,îƔi
trececircuiteledeieƔireînstaredeînaltĉimpedanƜĉ(HiZ)
· Microprocesorul8086foloseƔteaceeaƔimagistralĉinternĉpentrutransferuldatelor
Ɣiadreselor
· CircuiteledememoriesauporturiledeI/Oaunevoiedeoadresĉstabilĉpetoatĉ
duratacicluluidemagistralĉ
CICLULDEMAGISTRALALBIU CICLULDEMAGISTRALALBIU
138
· Considerĉmuncicluldemagistralĉde4perioadedetactT
1
÷T
4
cueventualelestĉri
deaƔteptare(T
w
)
· Integritateadatelortransferatepemagistralainternĉamicroprocesoruluiimpuneca
aceastasĉfiedemultiplexatĉîntimppeduratacicluluidemagistralĉ
· pedurataT
1
informaƜiadeadresĉesteplasatĉpemagistralĉiarmicroprocesorul
activeazĉĉsemnalulALE carevaasiguramemorareaadreseiîncircuiteLATCH(ex.
8282Ͳ neinversorsqu8283Ͳ inversor)
· CircuiteleLATCHaurorluldeamenƜinepeliniilemagistraleideadreseneiveluride
tensiunestabilepetoatĉduratacilculuidemagistralĉT
1
÷T
w
÷T
4
(inclusivînperioadele
încarepemagistraladeadrese/dateAD
15
÷AD
0
vorfitransferatedate)
· Deasemenea,magistraladedateestebufferatĉprincircuite8286/8287pentrua
evitacaunechipamentexternsĉacceseweaccidentaldatepemagistrala
multiplexatĉƔisĉcompromitĉastfeladresapeperioadaT
1
MAGISTRALAMULTIPLEXATA MAGISTRALAMULTIPLEXATAu uP8086 P8086
139
CICLUDEMAGISTRAL CICLUDEMAGISTRAL– – ACCESMEMORIE(CITIRE/SCRIERE) ACCESMEMORIE(CITIRE/SCRIERE)
140
MAGISTRALADEADRESEDEMULTIPLEXAT MAGISTRALADEADRESEDEMULTIPLEXATb bIDEMAGISTRALADATEBUFFERAT IDEMAGISTRALADATEBUFFERAT
8086
AD
15
÷AD
0
ALE
A
19
÷A
16
BHE
8282/83
8282/83
8282/83
8282/83
8282/83
DT/R DEN
EN
T
EN
T
A
D
1
5
÷
A
D
0
Magistralade
adreseexternĉ
(20debiƜi)
Magistralade
dateexternĉ
(16biƜi)
A
19
÷A
16
4
16
8
8
8
8
4
A
19
÷A
16
A
15
÷A
8
A
7
÷A
0
D
15
÷D
8
D
7
÷D
0
141
· Procesor pe 16biƜi
· 16semnale dedate,24semnale deadresĉ (spaƜiu deadresare 16MB)
· Moduri delucru:realƔiprotejat
u uPi80286 Pi80286
Unitatea deadresare
Unitatea deinterfaƜare
Amplif.date
Magistrala
Amplif adrese
externĉ
Controlmag.
Unitatea deexecuƜie
Unitatea deinstrucƜiuni
Coada Decod.
deinstr. instr.
142
· Procesor pe 32biƜi,32semnale dedate,32semnale deadrese (spaƜiu deadresare
4GB)
· Registre generale extinse la32biƜi
· 2registre segmentsuplimentare
· Modprotejat perfectat
u uPi80386 Pi80386
Unitatea de Unitatea de
segmentare paginare
Unitatea de Unitatea de
execuƜie interfaƜare
Unitatea de Unitatea de
decodificare preînc.instr.
143
· Integreazĉ:
÷ procesor
÷ + coprocesor matematic(FPU– FloatPointUnit)
÷ + unitateademanagementamemoriei(MMU– MemoryManagementUnit)
· Faciliteaza utilizarea memoriei cache
· Perfectarea modului protejat
u uPi80486 Pi80486
Unitatea de Unitatea de
segmentare paginare
Procesor
virgulĉ fixĉ Unitate Unitate
cache interf.
Procesor mag.
v.mobilĉ
Decodificare Preîncĉrcare
instrucƜiuni instrucƜiuni
144
NOTE NOTE
145
ARHITECTURAMICROPROCESORULUI ARHITECTURAMICROPROCESORULUI
ARHITECTURIPENTIUM ARHITECTURIPENTIUM
146
· Douĉ linii deprocesare pipeline:UƔiV
· Magistrala externĉ dedatepe 64biƜi(deƔieste procesor pe 32biƜi)
· Versiuni:
– Pentium – arhitecturĉ cu2linii pipeline
– PentiumPro
– PentiumII – arhitecturĉ superscalarĉ P6
– PentiumIII
– PentiumIV – arhitecturĉ NetBurst
u uPPENTIUM PPENTIUM
147
· PentiumPro
– Arhitecturĉ superscalarĉ P6
– ExecuƜie dinamicĉ ainstrucƜiunilor:
• Analiza fluxurilor dedate
• PredicƜia salturilor
• ExecuƜia speculativĉ ainstrucƜiunilor
· PentiumII
– Tehnologia MMX:
• Componentĉ pt.datemultimedia
• ExecuƜie paralelĉ tipSIMD
• 57instrucƜiuni noi MMX
· PentiumIII
– Tehnologia SSE2
• Executie paralelĉ SIMDpt.operaƜiileînvirgulĉflotantĉ
• Pentru graficĉ 2D/3D
MAGISTRALAMULTIPLEXATA MAGISTRALAMULTIPLEXATAu uP8086 P8086
148
· 3 unitĉƜi autonome :
– UnitateadecitireƔidecodificareinstrucƜiuni
• citeƔtedinmemorieƔidecodificĉ3instrucƜiuni/perioadadeceas
• asigurĉpredicƜiasalturilorprinintermediulunuiblocdememorarea
adreselordesalt
– UnitateadedispecizareƔiexecuƜieprezintĉunitĉƜideexecuƜiespecifice:
• execuƜieoperaƜiicunumereîntregi
• execuƜieoperaƜiicunumerereale(învirgulĉflotantĉ– FPU)
• execuƜiedatemultimedia(MMX)
– Unitateaderetragere
• refaceordineanormalĉarezultatelordupĉexexcƜiaparalelĉainstrucƜiunilor
• asigurĉinterfaƜacumemoriacachededatepentruscrierea/citireadatelor
ARHITECTURASUPERSCALARP ARHITECTURASUPERSCALARP6 6
149
· Noustandarddemagistralĉ– MagistralaP6
– magistrala lucreazĉ în modsincron,cumemorarea semnalelor pe frontul
crescĉtor alsemnalului deceas
– transferul dedateserealizeazĉ pe bazĉ detranzacƜii caresepotdesfĉƔura în
paralel
– existĉ suport pentru conectarea mai multor procesoare pe aceeaƔi magistralĉ
– sunt favorizate transferurile pe blocuri dedate
– existĉ implementate aunormecanisme dedetecƜie Ɣi corecƜie aerorilor
– existĉ suport pentru verificarea ƔimenƜinerea consistenƜei memoriilor cache
– seutilizeazĉ otehnologie detransmitere asemnalelor caregaranteazĉ
nealterarea semnalelor chiar Ɣi lafrecvenƜemari
ARHITECTURASUPERSCALARP ARHITECTURASUPERSCALARP6 6
150
ARHITECTURASUPERSCALARP ARHITECTURASUPERSCALARP6 6
Unitateade Unitateade
extragere extragereƔ Ɣi i
decodificare decodificare
instruc instrucƜ Ɯiuni iuni
L1IͲCache
L1DͲCache
UnitateadeinterfaƜareamagistralei(BIU)
L2Cache
Unitateade Unitateade
dispecizare dispecizareƔ Ɣi i
execu execuƜ Ɯie ie
Unitateade Unitateade
retragere retragere
RezervordeinstrucƜiuni
Magistrala sistem
Load Store Fetch
Blocul Blocul
de de
registre registre
151
· · Pentium PentiumIII III
– apareîn1999la450MHz(tehnologie0.25microni)Ͳ Katmai
– 2niveluricachede32kB
– versiuneaCoppermine– tehnologie0.18um
· · PentiumI PentiumIV V
– apareîn2000subnumeledecodWillamette
– arhitecturĉpe32debiƜiceopereazĉlaofrecvenƜĉdeceasde1,5MHz
– 42milioanedetranzistoareîntehnologie0.18microni
– – tehnologiehyper tehnologiehyperͲ Ͳpipeline pipeline cu20deetaje(exceptândetajeleIFƔiID)
– cachenivel1de12kB
– memorieIͲCachedetipTraceCache TraceCache(stocaredimanicĉainstrucƜiunilor)
– cachenivel2de256kB
– versiuneaFoster(2001)laofrecvenƜĉd2GHzprezintĉcachelevel3Ɣisuport
DDRͲSDRAM
– versiuneaNorthwood– întehnologie0.13 tehnologie0.13u um m introducenoulsocket478
PROCESOAREPENTIUM PROCESOAREPENTIUM
152
· implementareauneiarhitecturihyper hyperͲ Ͳpipelinecu20 pipelinecu20 defazedeprocesarea defazedeprocesarea
instruc instrucƜ Ɯiunilor iunilor,dublufaƜĉdevariantaP6
· · cre creƔ Ɣtereade4oriafrecven tereade4oriafrecvenƜ Ɯeimagistralei eimagistralei sistem,careastfelajungela400MHz 400MHz;prin
utilizareatehnologiei"quadpump"seasigurĉoratĉdetransferde3,2GocteƜi/s
· · dublareavitezeideexecu dublareavitezeideexecuƜ Ɯiea ieaUAL UAL,ceeacepermiteefectuareaadouĉoperaƜii
aritmeticeƔilogicesimplepefiecareperioadĉdeceas;defaptunitateaaritmeticoͲ
logicĉlucreazĉcuunsemnaldeceascarearefrecvenƜadublĉfaƜĉdefrecvenƜa
procesorului
· utilizareauneimemoriicachedefoartemarevitezĉ memoriicachedefoartemarevitezĉ (eng.AdvancedTransferCache),
carelaofrecvenƜĉde2GHzasigurĉoratĉdetransferde64GocteƜi/s
· extindereatehnologieiMMX(eng.SSEͲStreamingSIMDExtension)prinadĉugareaa
144instrucƜiuniSIMDnoiƔiextinderealĉƜimiidatelorprelucratela128biƜi(16octeƜi
prelucraƜiînparalel)
· îmbunĉtĉƜireacu30%arateidepredic 30%arateidepredicƜ Ɯie ie asalturilorînspecialdatoritĉextinderii
ferestreideanalizĉ;procesorulPentium4menƜineînliniadeexecuƜiepânĉla126de
instrucƜiuniƔiutilizeazĉ4KocteƜipentrumemorareaadreselordesalt(BTBͲ Branch
TargetBuffer)
ARHITECTURANETBURST ARHITECTURANETBURST– – PENTIUMIV PENTIUMIV
153
ARHITECTURANETBURST ARHITECTURANETBURST– – PENTIUMIV PENTIUMIV
L1IͲCache(TraceCache)
BTB– PredicƜiesalturi
BIU
Decodificactor
Alocarereg.alias
L2Cache
CozideaƔteptare
microoperaƜii
Planificatoare
Registrepentruîntregi RegistreFPU
UAL UAL UAL UAL UAL UAL UAL UAL UGA UGA UGA UGA UAL UALͲ ͲF F UAL UALͲ ͲF F
L1DͲCache
ROM
Extragere Ɣi
decodificare
instrucƜiuni
Planificare Ɣi
execuƜie
instrucƜiuni
154
• Scop:
– reducerea timpului deexecuƜie sublimita impusĉ detehnologie
• DificultaƜi:
– descompunerea problemei insecvenƜeexecutabile inparalel
– sincronizarea Ɯntre taskuri paralele
• Tipuri deparalelism:
– SISD– singleinstructionsingledata
• arhitecturĉ scalarĉ (neparalelĉ)
– SIMD– singleinstructionmultipledata
• arhitecturĉ cumai multe UAL
• paralelism dedate
– MISD– multipleinstructionsingledata–
• arhitecturĉ pipeline
– MIMD– multipleinstructionmultipledata–
• arhitecturĉ paralelĉ propriuͲzisĉ
• mai multe procesoare executĉ înparalel secvenƜediferite deprogram
ARHITECTURIPARALELE ARHITECTURIPARALELE
155
ARHITECTURIPARALELE ARHITECTURIPARALELE
.
.
. M
P C M
.
.
.
M
.
.
.
SI
MI
SD MD
.
.
. M
.
.
.
C
C
C
C
C
C
P
P
P
P
P
P
P
I D
156
• • A Arhitecturi rhitecturi func funcƜ Ɯional ionalͲ Ͳparalele paralele
– DLP(Data LevelParallelism)
• paralelism lanivel dedate– UALmultiple
– ILP(InstructionLevelParallelism)
• paralelism lanivel deinstrucƜiuni:
» arhitecturi pipeline
» VLIWͲ verylargeinstructionword
– TLP(ThreadLevelParallelism)
• paralelism lanivel defiredeexecuƜie/taskuri:
» arhitecturi multiͲcore
» arhitecturi multiprocesor
» supercalculatoare – calculatoare paralele
– PLP(ProcessLevelParallelism)
• paralelism lanivel deprocese:
– arhitecturi paralele,sisteme distribuite,GRID,cloud
ARHITECTURIPARALELE ARHITECTURIPARALELE
157
· Memorie partajatĉ Ͳ SharedͲMemory:
– spaƜiu liniar si globaldeadrese
– variante:
• UMAͲ UniformMemoryAccess
– timp uniformdeacces lamemorie
• NUMAͲ NonͲUniformMemoryAccess
– timp deacces estefuncƜiedeadresa dememorie
• COMAͲ CacheOnlyMemoryArchitecture
• SymmetricMultiprocessor:
SharedͲMemory+SharedI/O
· Memorie privatĉ Ͳ PrivateͲMemory:
– multe adrese/memorii locale,privatepentru fiecare procesor
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEIÎ ÎNARHITECTURILEPARALELE NARHITECTURILEPARALELE
158
· Toate procesoarele (P)auacces directlatoate modulele dememorie (M)
· Mecanism rapidƔisimplu decomunicaƜie
· Probleme potapĉrea laaccesul simultan lamediul decomunicaƜie (magistralĉ)sau la
acelaƔimodul dememorie
ARHITECTURICUMEMORIEPARTAJAT ARHITECTURICUMEMORIEPARTAJAT
P
ReĠea de interconectare
Memorie
...
P P
159
COMUNICA COMUNICAf fIEPRINMEMORIAPARTAJAT IEPRINMEMORIAPARTAJAT
SpaĠiu virtual de adrese SpaĠiu fizic de adrese
P
3
P
2
P
1
local
comun
store
load
Schimb de date úi sincronizare prin operaĠii
Load and Store Operations
X:
X:
X:
160
· Procesoarele auacces directnumai lamemoriile proprii (locale)
· ComunicaƜia între procesoare sefaceprin schimb demesaje
ARHITECTRACUMEMORIEPRIVAT ARHITECTRACUMEMORIEPRIVAT
ReĠea de interconectare
...
M
P
M
P
M
P
161
Schimb dedateƔisincronizare prin operaƜiiSend+Receive
Procedura decomunicaƜie:
» construirea antetului (header)
» copierea datelor înbufferul emitentului
» transmiterea datelor
» copierea datelor dinbufferul deintrare alreceptorului
ARHITECTRACUMEMORIEPRIVAT ARHITECTRACUMEMORIEPRIVAT
local
x:
local
y:
Procesor P Procesor Q
Send(x,Q) Rec(y,P)
Rendez-vous
162
NOTE NOTE
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
164
ORGANIZAREAMEMORIEIPRINCIPALE ORGANIZAREAMEMORIEIPRINCIPALE
¯ Sistemuldememorie.Ierarhizareamemoriei
¯ Proiectareamodulelordememorie
± MemoriinonvolatileƔimemoriivolatilecuaccesaleator
± Celuledememorie.Circuitedememorie
± StructuramemorieiRAMstaticeƔidinamice
± Exempledeproiectare
¯ Organizareamemorieiprincipale
± ConvenƜiidestocareadatelorînmemorie
± OrganizareadatelorînmemorieƔialiniereavariabilelor
± Segmentareamemoriei
± Adresareamemorieiînmodulreal
± Adresareamemorieiînmodulprotejat
± OrganizareaƔioperareamemorieistivĉ
¯ MemoriaCache
165
SISTEMULDEMEMORIE SISTEMULDEMEMORIE
• Dispozitiveledememorareauroluldeastoca informaƜianumericĉ(programe,date
iniƜiale,rezultateintermediareƔifinale)cuposibilitateacainformaƜianumericĉsĉ
poatĉfiaccesatĉ printrͲoadresa,pentruaficititĉ sauscrisĉ
• Sistemuldememoriealcalculatorului=dispozitiveledestocare ainformaƜiei+
algoritmiidecontrolalmemoriei(implementaƜifieînsoftwarefieînhardware)
• LaproiectareaƔiconstrucƜiaunuisistemdememorie,sefaceuncompromis,alcĉrui
obiectivsĉseobƜinĉ:
– ovitezĉdeaccesmedie câtmaimare
– încondiƜiileunuicosttotalminim
166
SISTEMULDEMEMORIE SISTEMULDEMEMORIE– – principiiderealizare principiiderealizare
· InformaƜiastocatĉestedistribuitĉ peovarietatededispozitivedememorie
(dispozitivecuraportcost/performanƜĉƔicaracteristicifizicefoartediferite)
· TransferuldeinformaƜii întrediferitelenivelurialememorieisedesfĉƔoarĉ
transparent pentruutilizator(sarcinasistemuluideoperare)prinmetodede alocare
dinamicĉ aspaƜiuluidisponibildememorie,pentruoutilizarecâtmaieficientĉ.
· Realizareaconceptelormemorieivirtuale pentruaeliberaprogrameleutilizatorde
funcƜiaadministrĉriispaƜiuluidememorieƔipentruafaceprogramelerelativ
independentedeconfiguraƜiadatĉamemorieifizice.
· CreƔterealĉrgimiidebandĉ asistemuluidememorieƔiasigurareaunormecanisme
deprotecƜie
167
LOCALIZAREAREFERIN LOCALIZAREAREFERINf fELORLAMEMORIE ELORLAMEMORIE
· Lamajoritateaprogramelorrulatesemanifestĉ“localizareareferinƜelorlamemorie” :
DoaromicĉporƜiuneamemorieiesteaccesatĉlaunmomentdat.
· LocalizareareferinƜeloresteocaracteristicĉaprogramelorcesemanifestĉînceamai
mareparteatimpuluilarulareaprogramelor.
· localizaretemporalĉareferinƜelor:dacĉprogramulfaceacceslaocelulĉdememorie
lamomentult,estefoarteprobabilcaprogramulsĉfacĉdinnouacceslaaceeaƔi
celulĉlamomentult+ѐ
· localizarespaƜialĉareferinƜelor:dacĉlamomentultprogramulfaceacceslaocelulĉ
dememoriedeadresĉX,estefoarteprobabilcalamomentult+ѐprogramulsĉfacĉ
acceslaceluladeadresĉX+ɸ
· ÎnvirtutealocalizĉriireferinƜelor,sistemuldememoriepĉstreazĉcelemairecent
accesatedateînmemoriaceamairapidĉ(MEMORIACACHE)
168
ORGANIZAREAIERARHICAMEMORIEI ORGANIZAREAIERARHICAMEMORIEI
Memorie
cacheL2
UCP UCP
Registre
interne
Memorie
principalĉ
RAM
Memorie
virtualĉ
Memorie
auxiliarĉ
(externĉ)
HDD
I/O
capacitate
cost, viteză de acces
Acces direct Acces indirect
Memorie
cacheL1
169
ORGANIZAREAIERARHICAMEMORIEI ORGANIZAREAIERARHICAMEMORIEI
SistemeledememoriemultiͲnivel,cuposibilitateadescriereͲcitiretrebuiesĉ satisfacĉ
douĉproprietĉƜiprivindinformaƜiastocatĉ:
· proprietatea de incluziune : informaƜiile care se gĉsesc pe un anumit nivel de
memoriesevorgĉsiƔipeniveluldememorieinferior(M1c M2c ...c Mn)
· proprietateadecoerenƜĉ : informaƜiaexistentĉlaoanumitĉadresĉînspaƜiul de
memorietrebuiesĉfieaceeaƔi,indiferentde niveluldememoriepecareseaflĉ.
170
ORGANIZAREAIERARHICAMEMORIEI ORGANIZAREAIERARHICAMEMORIEI
Proprietateadeincluziune
· EsteposibilcaoinformaƜieexistentĉpenivelulM
i+1
sĉnusegĉseascĉpenivelul
M
i
,darsĉfieaccesatĉ(cerutĉ)penivelulidememorie.Înacestcaz(evenimentul
estenumit"wordmiss")cuvântulnecesarafiaccesattrebuieaduspeunnivelde
memoriesuperior(depeniveluli+1,peniveluli).Încazcontrarevenimentulse
numeƔte"wordhit".
ProprietateadecoerenƜĉ
· Dacĉuncuvântestemodificatpeniveluli,atuncivatrebuimodificatƔipenivelul
i+1Ɣipetoatenivelurileinferioare.
· CoerenƜanivelurilordememoriesepoateobƜinefieprinpropagareavalorii
modificatespretoateniveleleinferioare("writeͲthrough"),sauprinactualizarea
nivelurilorinferioareînmomentulînlocuiriiinformaƜieidepenivelulcurent
("writeͲback").
171
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
CIRCUITEDEMEMORIE CIRCUITEDEMEMORIE
STRUCTUR STRUCTURb bINO INOf fIUNIPROIECTARE IUNIPROIECTARE
172
CIRCUITEDEMEMORIE CIRCUITEDEMEMORIE
• Celula dememorie
– Circuit digitalcarememoreazĉ unbit deinformaƜie (ex:bistabil JKͲMS,3TͲCell)
• LocaƜia dememorie (cuvânt dememorie)
– Setdecelule elementare dememorie careseacceseazĉ simultan
– Unitatea elementarĉ deadresare (1,4,8,16,32biƜi)
– Fiecare locaƜie areasocitatĉ oadresĉ
• Circuitdememorie =SetdelocaƜiidememorie
– Capacitatea memoriei = numĉrul totaldelocaƜii(adrese)
bk . . . b1 b0
locaĠie
linii
coloane
0 1 2 . . c-1
0
1
2
.
.
l-1
Structură
matricială
(k matrici)
celulă
173
TIPURIDECIRCUITEDEMEMORIE TIPURIDECIRCUITEDEMEMORIE
Q MemoriiROM(ReadOnlyMemory)
– menƜininformaƜiaƔidupĉdecuplareatensiuniidealimentare
– potfiprogramate(PROM,EPROM,EEPROM,Flash)
Q MemoriiRAM(RandomAccessMemory)
· · MemoriiRAMstatice(SRAM) MemoriiRAMstatice(SRAM)
÷ setdecircuitebistabile(ex.JKͲMS)cepĉstreazĉinfrormaƜiapedurata
alimentĉriicuenergie
÷ suntconstruitederegulĉîntehnologiebipolarĉsauunipolarĉ¬sunt
memoriirapidedardecapacitatemicĉ/unitatedecostƔiconsumridicat
÷ suntrealizatecuadresareunisaubiͲdimensionalĉ
· · MemoriiRAMdinamice(DRAM) MemoriiRAMdinamice(DRAM)
÷ celuledememorie3T(tranzistoareCMOS)cepierdconƜinutulîntimp
(perioadadedescĉrcareacapacitĉƜiiGrilĉͲSursĉatranzistoruluiCMOS)
÷ vitezĉmediedarconsumredusdeenergiesicapacitĉƜimari/unitateadecost
÷ densitatedeintegrareridicatĉ
174
MEMORIANONVOLATILROM MEMORIANONVOLATILROM– – READONLYMEMORY READONLYMEMORY
DEC
ADR
Amplificatoare date la
citire si programare
A0
A1
An
Logica
de
control
CS
PROG
OE
Dk Dk-1 D1 D0
ADR
DATE
Adresa valida
Date valide
t
ACC
T
CICLU
t
OE
t
CS
t
OH
CS
OE
WL
DL
T
ROM
WL
DL
T
PROM
Vcc
~
F
WL
DL
T1
EPROM
PL
T2
175
SRAMCUADRESAREUNIDIMENSIONAL SRAMCUADRESAREUNIDIMENSIONAL
ID
k-1
CS
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
ID
1
ID
0
OD
k-1
OD
1
OD
0
R/W
DEC
ADR
A
0
A
1
A
n-1
176
SRAMCUADRESAREBIDIMENSIONAL SRAMCUADRESAREBIDIMENSIONAL
• CircuitdememorieSRAM cudimensiunea8kB
– 13liniideadresĉ(2
13
=8k)partajatede2decodificatoaredeadresĉ(DCDliniiƔiDCD
coloanemacestadinurmĉrealizatprintrͲunblocde8MUX/DMUX)
– celuleledememoriesuntbistabilicepastreazĉinformaƜiapeduratadealimentare
177
MEMORIARAMDINAMIC MEMORIARAMDINAMIC(DRAM) (DRAM)
• Celula elementara dememorie este uncondensator CMOScereƜineinformaƜiasub
formasarciniielectricestocate
• EstevorbadecapacitateajoncƜiuniigrilĉͲsursĉ
• Condensatorulsedescarcĉ intimp ¬ pierdereainformaƜiei
WL/R
DL
T3
WL/W
C C
T1
T2
• Pentru apreveni pierderea sarcinii,
informaƜia trebuie reîmprospĉtatĉ dintimp
în timp Ͳ condensatoarele trebuie
reîncĉrcate cuinformaƜia stocatĉ anterior
¬ funcƜionare dinamicĉ, ce presupune
încĉrcarea periodicĉ acondensatoarelor
interne
• ¬ 3cicluridefuncƜionare:
– cicluldecitire
– cicluldescriere
– cicluldereîmprospĉtare
178
CARACTERISTICIDRAMCONVEN CARACTERISTICIDRAMCONVENf fIONAL IONAL
· Prezintĉ cea mai maredensitate deintegrare dintre tehnologiile adecvate memoriei
principale Ɣi totodatĉ prezintĉ cel mai mic costpe bit
· Matricea dememorie este pĉtratĉ (m × m iar m =2
n/2
Ͳ1,unden estedimensiunea
magistraleideadrese)
· SefoloseƔte oschemĉ deadresare bidimensionalĉ (DCDlinii Ɣi DCDcoloane – MUX/
DEMUX)
· SefoloseƔte multiplexarea biƜilor pentru adresele delinie Ɣi adresele decoloanĉ.
Adresa furnizatĉ dispozitivului de memorie sefaceprintrͲunnumĉr delinii egal cu
jumĉtate dinnumĉrul totaldebiƜi deadresĉ ¬ numĉr mai mic de pini lacapsulĉ
* Deexemplu:
÷ pentru 2
22
celule =4Mbit cumatrice de2048x 2048celule ¬ numĉrul depini
deadresĉ aicapsuleidmemorie este 11Ɣi nu 22
÷ atenƜie:magistraladeadreseasistemuluirĉmânepe22debiƜi
179
MEMORIARAMDINAMIC MEMORIARAMDINAMIC(DRAM) (DRAM)ASINCRON ASINCRON
DEC
Adr
linie
MUX / DMUX
2
n/2
-1:1 / 1: 2
n/2
-1
A0
A1
An/2-1
D
in
Registru
adresă
linie
Registru
adresă
coloană n/2
0 1 2 . . 2
n/2
-1
0
1
2
.
.
2
n/2
-1
n/2
n/2
RAS
CAS
D
out
WE
Amplificatoare R/W
+
Buffer I/O
180
CICLURILEDEACCESLAMEMORIADRAM CICLURILEDEACCESLAMEMORIADRAM
Adrese Adrese
RAS RAS
CAS CAS
WR WR
Date Date
Adr.Linie Adr.Linie Adr. Co Adr. Coloană loană
Date Date
Adr.Linie Adr.Linie Adr. Co Adr. Coloană loană
Date Date
T_ras T_ras- -cas cas
T_acces T_acces
T_ciclu_citire T_ciclu_citire
T_cas T_cas
T_ras T_ras- -cas cas
T_acces T_acces
T_ciclu_scriere T_ciclu_scriere
T_cas T_cas
Adrese Adrese
RAS RAS
CAS CAS
WR WR
Adr.Linie Adr.Linie
T_ciclu_refresh T_ciclu_refresh
· Amplificatoarele R/W sunt circuite care
genereazĉ nivel logic0sau 1pornind dela
tensiunea depe condensatorul tranzistorului
CMOS(celula)selectat
· Decâte ori seselecteazĉ olinie,acelaƔi circuit
amplificator faceƔi reîmprospĉtarea(reînscrierea
tuturor condensatoarelor depe linia respectivĉ)
181
PROIECTAREAUNUIMODULDEMEMORIE PROIECTAREAUNUIMODULDEMEMORIE
· Structurageneralĉaunuimoduldememorie:
Adrese
Date
SelecƜii
A
m
p
.

a
d
r
e
s
e
A
m
p
.

d
a
t
e
Matricea de
circuite de
memorie
Circ.decontrol
D
e
c
SelecƜie
modul
Comenzi
182
CERIN CERINf fEDEPROIECTAREMODULSRAM EDEPROIECTAREMODULSRAM
· Tipulmemoriei :SRAM
· Capacitateamemoriei :1MB
· Organizareainternĉ :pe16biƜicuaccesdirectpeoctet
· Magistralafolositĉ :ISA
÷ 24liniideadresĉ
÷ 16liniidedate
÷ Semnaledecomandĉ:MRDC(citirememorie)ƔiMWTC(scrierememorie)
· Circuitedememoriefolosite :64kB
· Aresadeînceput :C00000h
÷ pentrumapareaspaƜiuluidememoriede1MBînspaƜiultotaldelocaƜii
adresabileprinmagistralaISA(16MB)
· NecesitateafolosiriiamplificatoarelordeadresĉƔidatesefacepentruasigurarea
nivelurilorcorectedetensiunepemagistrale
183
SUBMODULDEMEMORIEPE16BI SUBMODULDEMEMORIEPE16BIf fIACCESABILPEOCTET IACCESABILPEOCTET
· PentruasepermiteaccesareamemorieipeoctetƔicuvânt,fiecaresubmodulde
memorieesterealizatdin2circuitedememoriede64kB(celedisponibile)folosinduͲ
sedouĉsemnaledeselecƜie:
÷ CSL– ChipSelectLow
÷ CSH– ChipSelectHigh
· SemnaleledeselecƜieoctetLow/HighseobƜindepeliniamagistraleideadresĉA
0
Ɣi
BHE(ByteHighEnable)
· PentruadresarealocaƜiilordememoriedincircuitelede64kBsefolosesc15liniide
adresĉ(A
1
...A
16
):2
15
=64k
· PrininterconectareamaimultorsubmoduledememoriesevaobƜineomatricede
memoriededimensiueadoritĉ
· Bloculdedecodificare trebuie sĉ genereze semnale deselecƜie pentru submodule Ɣi
pentru modulul dememorie luat caîntreg;decodificarea sefacepe baza semnalelor
deadresĉ si decomandĉ
184
SUBMODULULDEMEMORIEPE16BI SUBMODULULDEMEMORIEPE16BIf fI I
D
0
D
1
D
7
D
8
D
9
D
15
Magistrala
dedate
Magistrala
deadrese
A
1
– A
16
MWR
CS
i
A
0
BHE
CSL
i
CSH
i
D
0
D
1
D
7
D
8
D
9
D
15
CS
WR
CS
WR
A
0
A
1
A
15
A
0
A
1
A
15
Submoduli
128kB
64Kx16biƜi
64k*8
64k*8
185
CONSTRUIREAMATRICIIDEMEMORIEDE1MB CONSTRUIREAMATRICIIDEMEMORIEDE1MB
A
0
- A
16
64K
*16
64K
*16
64K
*16

D
0
- D
15
BHE\
CS
0
\
MWR\
CS
1
\
CS
7
\
512K*16=1M*8
BHE\
CS\
MWR\
BHE\
CS\
MWR\
BHE\
CS\
MWR\
186
PROIECTAREAUNIT PROIECTAREAUNITf fIIDEDECODIFICARE IIDEDECODIFICAREb bICOMAND ICOMAND
A A Q Q0 0
B B Q Q1 1
C C Q Q2 2
74LS138 74LS138
(D (DCD CD) )
E1 E1\ \
E2 E2\ \ Q Q7 7
E3 E3
A23
A22
A21
A20
A19
A18
A17
Adresa de început :
C00000h
(110000...0b)
CS7\
CS2\
CS1\
CS0\
CS\
MRD\
MWR\
Circuit de comandă Circuit de comandă
Decodificator Decodificator
187
CERIN CERINf fEDEPROIECTAREMODULDRAM EDEPROIECTAREMODULDRAM
· Tipul memoriei : DRAM asincron
· Capacitateamemoriei :16MB
· Organizareainternĉ :pe16biƜicuposibilitateadresarepeoctet
· Caracteristicilemagistralei
÷ 28liniideadresĉ
÷ 16liniidedate
÷ Semnaledecomandĉ:MRDC(citirememorie),MWTC(scrierememorie)Ɣi
Refresh(ptreînprospĉtare)
· Circuitedememoriefolosite :1MB
· Aresadeînceput :D000000h
÷ pentrumapareaspaƜiuluidememoriede16MBînspaƜiultotaldelocaƜii
adresabileprinmagistralĉ(256MB)
188
SUBMODULDEMEMORIEPE16BI SUBMODULDEMEMORIEPE16BIf fIACCESABILPEOCTET IACCESABILPEOCTET
· Proiectarea memoriilor dinamice este înprincipiu similarĉ cuproiectarea memoriilor
statice,cuurmatoarele amendamente:
– trebuie sĉ seadauge unmecanism dereîmprospatare periodicĉ amemoriei
– adresele trebuie multiplexate (generarea secventialĉ pe aceleaƔisemnale a
adresei delinie si aadresei decoloanĉ)
– trebuie sĉ segenereze semnale devalidare aadresei delinie (RAS\ Ͳ RowAddress
Select)Ɣiaadresei decoloanĉ (CAS\ Ͳ ColumnAddressSelect)
– selecƜia circuitelor sefacecusemnalele RAS\ si CAS\
· Pentru circuitele RAMdinamice,multiplexarea întimp aadreselor afost necesarĉ
pentru areducenumĉrul depini ai circuitului dememorie Ɣiimplicitadimensiunii
acesteia (datĉfiindcapacitatearelativmareamemoriilordinamice).Astfel,adresava
fitransmisĉcircuituluidememoriesecvenƜialprinacƜiuneacelordouĉtipurise
semnaledeselecƜieRASƔiCAS
· Reîmprospatarea sefacesimultan lanivelul unei linii întregi dinmatricea dememorie
189
SCHEMABLOCULUIDEMEMORIEDRAM SCHEMABLOCULUIDEMEMORIEDRAM
Circuitde
control
DEC
MUX
ADR
Adrese linii/coloane Adrese linii/coloane
A A
9 9
÷ ÷A A
0 0
Mag. de adrese A Mag. de adrese A
27 27
÷ ÷A A
0 0
Mag. de date D Mag. de date D
15 15
÷ ÷D D
0 0
Mag. de control Mag. de control
Circuitul de Circuitul de
memorie memorie
CAS0 CAS0
CAS1 CAS1
CAS7 CAS7
RAS RAS
MW/R MW/R
Submodul1
2×1MB
Submodul2
2×1MB
Submodul7
2×1MB
Adr_Sel Adr_Sel
A A
20 20
÷ ÷A A
1 1
A A
27 27
÷ ÷A A
21 21
D D
15 15
÷ ÷D D
0 0
A A
0 0
A A
0 0
190
SUBMODULULDEMEMORIEDE2MB SUBMODULULDEMEMORIEDE2MB
A0 A0 D0 D0
A1 A1 D1 D1
1M 1M× ×8biti 8biti
A9 A9 D7 D7
CAS CAS\ \
RAS RAS\ \
WR WR\ \
A0 A0 D0 D0
A1 A1 D1 D1
1M 1M× ×8bit 8biti i
A9 A9 D7 D7
CAS CAS\ \
RAS RAS\ \
WR WR\ \
D15 D15
D9 D9
D8 D8
D7 D7
D1 D1
D0 D0
RAS RAS\ \
CASi CASi\ \
BHE BHE\ \
MWR MWR\ \
A0 A0
Adrese linii/coloane Adrese linii/coloane
A0 A0÷ ÷9 9
Magistrala de Magistrala de
date date
Submodulul i Submodulul i
1M 1M× ×16bi 16biĠ Ġi = 2Mo i = 2Mo
191
UNITATEADEDECODIFICARE UNITATEADEDECODIFICAREb bICOMAND ICOMAND
A A Q Q0 0
B B Q Q1 1
C C Q Q2 2
74LS138 74LS138
E1 E1\ \
E2 E2\ \ Q Q7 7
E3 E3
A27 A27
A26 A26
A25 A25
A24 A24
A23 A23
A22 A22
A21 A21
CAS7 CAS7\ \
CAS2 CAS2\ \
CAS1 CAS1\ \
CAS0 CAS0\ \
Refresh Refresh\ \
MWR MWR\ \
MRD MRD\ \
Sel_Modul Sel_Modul\ \
RAS RAS\ \
CAS CAS\ \
Adr_Sel Adr_Sel
Circuit de comandă Circuit de comandă
Decodificator Decodificator + +
Linie de Linie de î întârziere ntârziere
Adresa de început :
D000000h
(110100...0b)
Adr_Sel areroluldeaselectadepe
magistraladedatesistemdecada
low/highcesevaconectapeintrĉrilede
adresĉalecircuituluidememorie.
Acestsemnaltrebuiesĉpreceadĉ
semnaluldeactivareaadreseide
coloanĉ(CAS)
192
MODULULDEMULTIPLEXAREADRESE MODULULDEMULTIPLEXAREADRESEb bIAMPLIFICAREDATE IAMPLIFICAREDATE
10 10× ×MUX2:1 MUX2:1
Amp
buffer
Amp
buffer
Amp
buffer
S SA A10 10
S SA2 A2
S SA1 A1
S SA A20 20
S SA A1 12 2
S SA A1 11 1
I0 I0
I1 I1
Q Q
A A9 9
A A1 1
A A0 0
SD7 SD7
SD1 SD1
SD0 SD0
SD15 SD15
SD9 SD9
SD8 SD8 Adr_Sel Adr_Sel
D7 D7
D1 D1
D0 D0
D15 D15
D9 D9
D8 D8
S SA A0 0
SBHE SBHE\ \
MRDC MRDC\ \
MWRC MWRC\ \
A A0 0
BHE BHE\ \
MRD MRD\ \
MWR MWR\ \
MRD MRD\ \
CS CS\ \
193
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
MEMORIAPRINCIPAL MEMORIAPRINCIPAL
194
ORGANIZAREALOGICAMEMORIEIPRINCIPALE ORGANIZAREALOGICAMEMORIEIPRINCIPALE
ORGANIZAREALOGICAMEMORIEIPRINCIPALE ORGANIZAREALOGICAMEMORIEIPRINCIPALE(MP) (MP)
sereferĉla:
¯ModalitateadestocareadatelorƔiinstrucƜiunilor
¯AliniereainformaƜieiînmemorie
¯Segmentareamemoriei
¯ModuriledeaccesladateƔiinstrucƜiuni
195
MEMORIAPRINCIPAL MEMORIAPRINCIPAL
MEMORIAPRINCIPAL MEMORIAPRINCIPAL esteunspaƜiudememoriecuaccesaleator(RAM–Random
AccessMemory)adresabildirectdecĉtremicroprocesor.Capacitatea acestuispaƜiu
dememorie (înocteƜi)depindededimensiuneamagistraleideadrese :
| |
| |
2
MA bits
MP bytes =
Microprocesorul intel8086
· Poateaccessadirect1MB (2
20
)de
memorielaadresele0÷ FFFFFh(MA
pe20debiƜi)
· Memoriaesteadresabilĉpeoctet
00000
FFFFF
1MB
7 0
00002
00003
FFFFE
FFFFD
00001
Memoria
principalĉ
octet
196
LOCA LOCAf fIIDEMEMORIESPECIALE IIDEMEMORIESPECIALE
Microprocesorul intel8086dispunedeoseriedelocaƜiidememoriespecialesituatela
adresele0– 07Fh(128octeƜi)ƔiFFFF0h– FFFFFFh(16octeƜi):
· Rezervatedefirmĉpentrudezvoltĉriulterioare
· Dedicate pentruînteruperi Ɣipornirea
sistemuluidupĉreset
· TVI– TabelavectorilordeînterupereconƜine
adreselerutinelordetratareaîntreruperilor
· RESET – SpaƜiudememoriececonƜine
instrucƜiunileceseexecutĉlarepornirea
sistemuluiprincomanda“reset”
00000
FFFFF
7 0
00014
0007F
octet
FFFFC
FFFFB
FFFF0
00013
TVI
rezervat
rezervat
RESET
128octeƜi
16octeƜi
Disponibil
197
CONVEN CONVENf fIIDESTOCARE IIDESTOCAREb bIADRESAREAINFORMA IADRESAREAINFORMAf fIEI IEIÎ ÎNMP NMP
· Tipuridedatememorate:
÷ 8biƜi(octet/byte)
÷ 16biƜi(cuvânt/word)
÷ 32biƜi(doublesaupointeri)
· StocareainformaƜiei(dateƔiinstrucƜiuni)înmemoriesefaceînlocaƜii
adiacentedememoriesituatelaadresesuccesive
· DupĉmodulîncaresestocheazĉînmemoriaprincipalĉinformaƜiileMULTIͲ
OCTETexistĉdouĉconvenƜii:
· LittleEndian (convenƜiaIntel)
· BigEndian(convenƜiaMotorola)
198
CONVEN CONVENf fIIDESTOCARE IIDESTOCAREb bIADRESARE IADRESAREͲ Ͳ INFORMA INFORMAf fIEMULTI IEMULTIͲ ͲOCTET OCTET
LittleEndian (convenƜiaIntel)
· Stocarea înmemoriesefaceînordine,delaoctetulcelmaipuƜinsemnificativ(adresa
micĉ)cĉtreoctetulcelmaisemnificativstocatlaadresaceamaimare
· Adresarea informaƜiei
multioctetsefaceprin
lansareaadreseiceluimai
puƜinsemnificativoctet
Exempludestocareînmemorie
aunuicuvântdublude32de
biƜi(valorilenumericeau
fostscrieînhexazecimal)
3F
45
5C
01
Datastocatĉ
începânddela
adresa“A” este:
3F045C01
Memoria
principalĉ
A+3:
A+2:
A+1:
A:
Celmai
puƜin
semnificativ
octet
Celmai
semnificativ
octet
199
SELEC SELECf fIAHARDWAREAMEMORIEI IAHARDWAREAMEMORIEI
CONSTRUIREAUNEIMEMORII
ADRESABILEPEOCTET
· Omemoriedecapacitatemare
impunefolosireamaimultor
blocuridememorieselectate
prinintermediulunui
decodificatordeadresĉ
· Exemplu:
256kBdememoriecucircuite
de64kB
256k=2
18
¬ 18biƜipentru
magistraladeadrese
200
ADRESAREAMEMORIEIPECUVÂNT ADRESAREAMEMORIEIPECUVÂNT
CONSTRUIREAUNEIMEMORIIADRESABILEPECUVÂNT
128kB=2x64kB Mag.Date– 16biƜi;Mag.Adrese– 16biƜi
201
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEIÎ ÎNMEMORIE NMEMORIE
· LegatdeconvenƜiadestocareînmemorieainformaƜiilor(instrucƜiuni,date,adrese)
trebuiemenƜionatcĉlaunelemicroprocesoareaccesullaobiectemaimaridecâtun
octetsepoatefacedoardacĉinformaƜiaesteALINIAT
· AliniereainformaƜieiiaîncalculdouĉmĉrimi:dimensiuneaobiectuluistocat(D
OB
)Ɣi
dimensiuneamagistraleidedate(D
MagDate
)
· Aliniereasereferĉlafaptulcĉaccesullaunobiectstocatînmemoriesefaceprin
specificareaadreseiA aprimuluioctetocupat,undeadresaArespectĉecuaƜia:
A modulo D
MagDate
=0
· Deexemplu,dacĉmagistraladedateestepe32debiƜi(4octeƜi),toateadresele
divizibilecu4desemneazĉlocaƜiidememoriealiniate,indiferentdedimensiunea
obiectuluistocat
202
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEIÎ ÎNMEMORIE NMEMORIE
203
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEIÎ ÎNMEMORIE NMEMORIE
· Lamicroprocesoareleactuale,asamblorulatribuieautomattuturordateloradrese
aliniate,indiferentdenumĉruldeocteƜiocupatdeacestea
· Avantaj:seminimizeazĉtimpuldeaccesladateledinmemorie
· Dezavantaj :risculdeocupareaunuispaƜiudememoriemaimaredecâtcelnecesar.
Optimizareamemorieiocupaterevineprogramatorului
Ex. C ASM
charc; DBc
floatf; DDf
spaƜiudememorieocupat 8octeƜi
spaƜiudememorieutil 5octeƜi
204
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEIÎ ÎNMEMORIE NMEMORIEͲ Ͳ i8086 i8086
· Lamicroprocesoruli8086nuexistĉrestricƜii privindplasareadatelorînmemorie(ele
potfistocateoriundeînmemorie,înlocaƜiialiniatesaunealiniate)
· Magistraladedatepe16biƜi¬ Amodulo2=0pentruadreselepare(datealiniate)
· ÎnfuncƜiedeplasareadatelorlaadresepare(aliniate) sauimpare(nealiniate),UCPva
executaautomatnumĉruldeciclurinecesarpentrucitirea/scrierealor
· Avantaj :optimizareamemorieiocupate(stocaredensĉaprogramuluiînmemorie).
AcestlucruafostimpuslaprimelegeneraƜiidemicroprocesoaredatoritĉpreƜului
marealmemorieidemarecapacitate
· Dezavantaj :UCPvaexecutaunnumĉrdubludecicluridemagistralĉ pentruaccesul
ladatelenealiniate(stocatelaadreseimpare)
205
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEIÎ ÎNMEMORIE NMEMORIEͲ Ͳ i8086 i8086
.data
var1 db5
var2 db7
var3 db‘A’
var4 dw12
Variabilavar4este
nealiniatĉfiind
stocatĉlaadresa
imparĉ1FA13h
(deplasament=3)
Variabilĉ
stocatĉ
var4
‘A’
var2
var1
Adresĉ
HEX
1FA14h
1FA13h
1FA12h
1FA11h
1FA10h
7 0
Memoriaprincipalĉ
Bazĉ
segmentdedate
05
07
41
0C
00
206
ORGANIZAREAHARDWAREAMEMORIEI ORGANIZAREAHARDWAREAMEMORIEI– – I8086 I8086
· SpaƜiuldememoriede1MBestedivizathardwareîn2zonea512kB
· Cele2blocuripotfiselectateseparatsausimultanƔiîncarcĉpemagistraladedate
(16biƜi)câteunoctet:
· lowerbank D7...D0
· upperbank D15...D8
· A19...A1 –selecteazĉsimultanolocaƜiedememoriede1octetînlower
bankƔiupperbank
· A0 –selecteazĉbankulinferior
· BHE –selecteazĉbankulsuperior
BHE A0 AcĠiune
0 0 ambii octeĠi pe magistrala de date
0 1 selectează octetul H (adresă impară)
1 0 selectează octetul L (adresă pară)
1 1 niciun octet selectat
207
ORGANIZAREAHARDWAREAMEMORIEI ORGANIZAREAHARDWAREAMEMORIEI– – I8086 I8086
BankH
512kx8
ADR
Data
CS
BHE
D15: D8
D7: D0
A0
BankL
512kx8
ADR
Data
CS
D15: D0
Magistraladedate
Magistraladeadrese
8
8
16
19 19
A19: A1
208
ACCESULLAOVARIABILWORDNEALINIAT ACCESULLAOVARIABILWORDNEALINIAT
BHE
D15: D8
D7: D0
A0
D15: D0
8
8
16
19 19
A19: A1
000C2 000C3
000C4
XL
XH
Ciclumagistralĉ A19...A0 A0 BHE D15...D0
H
L
L
H
i– adresavariabileiXpe
magistraladeadrese
000C3h
XLpeliniileD15...D0
alemagistraleidedate
i+1–adresaeste
incermentatĉ
000C4h
XHpeliniileD7...D0
alemagistraleidedate
209
SEGMENTAREAMEMORIEI SEGMENTAREAMEMORIEI– – i8086 i8086
· 20debiƜideadresĉechivaleazĉcu1MBmemorieadresabilĉdarsetulderegistre
interne al microprocesoruluii8086estepe16biƜi putândcodificaadreseîndomeniul
0h...FFFFhîntrͲunspaƜiumaximde64kB
· SpaƜiuldememoriede1MBeste“împĉrƜit” însegmentede64kB,adresabilecu
ajutorulregistrelorpe16biƜi
· SEGMENTELEsuntunitĉƜilogicedememoriecontinuĉ,independenteƔiadresabileîn
modseparat
· SegmentelepotfiƔisuprapuse(potexistaoinfinitate)dartrebuieavutĉînvedere
integritateadatelorconƜinute
· SegmentelepotfiplasateoriundeînmemoriecurespectarealocaƜiilordememorie
speciale
210
SEGMENTAREAMEMORIEI SEGMENTAREAMEMORIEI– – i8086 i8086
· Segmentelesuntdefiniteînmodunicprinadresadesegment(AS) adresadesegment(AS) – unîntregfĉrĉ
semn,pe16biƜi,multiplude4,ceidentificĉadresabazeisegmentului(conƜinutĉîn
registrulsegmentalmicrorprocesorului)
· Lai8086,BIUconƜine4registresegment(CS,DS,SS,ES)¬ maxim4segmente
adresabileînmodcurent (segmentuldecod,date,stivaƔiextrasegmentuldedate)
Segmentdedate
Segmentdecod
Segmentdestivĉ
Extrasegment
SS
ES
DS
CS
UCP
RAM
Registresegment
211
ADRESAEFECTIV ADRESAEFECTIV(AE) (AE)
· Lamicroprocesoarelecumemoriasegmentatĉ,adresaefectivĉ(AE)rezultĉcaun
întregfĉrĉsemn,pe16biƜi,cereprezintĉdeplasamentul(offsetͲul) –adresarelativĉ
aoperanduluifaƜĉdeînceputulsegmentuluiîncareseaflĉ
· AdresaefectivĉaoperanzilorinstrucƜiunilorestecalculatĉdecĉtreUnitateade
execuƜie(EU) aUCP
· InstrucƜiunile –suntextrasedinsegmentuldecodiarAEestedatĉderegistrul IP
(InstructionPointer)referitƔicaPC(ProgramCounter)
· OperaƜiilecustivĉ suntexecutateînsegmentuldestivĉcurentiardeplasamentule
datderegistrulindicatordestivĉSP(StackPointer)
212
ADRESAFIZIC ADRESAFIZIC(AF) (AF)
· Adresafizicĉ(AF)rezultĉcaunîntregfĉrĉsemn,pe20debiƜi,ceidentificĉînmod
unicolocaƜiedememoriedinRAM
· AdresafizicĉaoperanzilordatelorestegeneratĉdecĉtreUnitateadeinterfaƜĉcu
magistrala (BIU)aUCP
· Intel8086:Adresafizicĉ(AF)seobƜinedinadresaefectiva(AE)lacareseadaugĉ
adresadesegment(AS)înmulƜitĉcu16,caînecuaƜia:
AF=ASx2
4
+AE
· Cualtecuvinte,adresafizicĉ(AF) seobƜineprindeplasareaadreseisegment(AS)cu4
biƜisprestângaƔiadunareadeplasamentului(AE)
· Înconcluzie,pentruadresareaunuioctetdememoriesefolosescdouĉentitĉƜipe16
biƜi(oadresĉsegmentconƜinutĉonligatoriuîntrͲunregistrusegment)Ɣiun
deplasament.SevorbeƔtedeadrese(pointeri)pe32debiƜideƔiadresafizicĉse
codificĉpe20debiƜi
213
FORMAREAADRESEIFIZIC FORMAREAADRESEIFIZIC(AF) (AF)
· Oadresĉcompletĉestecodificatĉintern
printrͲun pointer pe 32debiƜi
· SpecificareaunuipointerfoloseƔtenotaƜia
SEGMENT:OFFSET(AS:AE)
· Ex: DS:5678 sau1234:5678
AF=179B8h
AS 0000
AE
AF
19 430
19 0
15 0
Adr.efectivĉ(offset)
Adr.segment
Adr.fizicĉ
1 2 3 4 0
5 6 7 8
1 7 9 B 8
214
ADRESAREAMEMORIEI ADRESAREAMEMORIEI– – MODULREAL MODULREAL
1234
RegistrulDS
5678
Deplasamentul
Segmentulde
date64kB
Memoria
principalĉ
12340
179B8
:
2233F
00000
E
<<4
x16
1MB
215
MEMORAREAPOINTERILOR MEMORAREAPOINTERILOR
· Oadresĉcompletĉpe32debiƜiestememoratĉcudeplasamentullaadresemiciƔicu
adresasegmentlaadresemari
· Asocierea(segment:offset – adresĉfizicĉ)nuestebiunivocĉ(perechile1234:5678 Ɣi
1235:5668reprezintĉaceeaƔiadresĉfizicĉ)
Deplasament
Adresasegment
Segmentul
decod64kB
Memoria
principalĉ
56
00000
FFFFF
78
34
12
216
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEIÎ ÎNMODULREAL(8086) NMODULREAL(8086)
· SpaƜiulmaximdeadresareeste1Mo
· Unsegmenttrebuiesĉînceapĉlaoadresamultiplude16
· Unsegmentaremaxim64kB
· SegmentelesepotsuprapuneparƜialsautotal
· AceeaƔilocaƜiefizicĉsepoateexprimaprinmaimultevariantedeperechideadrese
(segment:offset)
· ExistĉpuƜineposibilitĉƜideprotejareazonelordememorie
· OriceprogrampoateadresaoricelocaƜiedememorie,neputânduͲseimpune
restricƜii(lucrunedoritîntrͲunsistemmultitasking)
· Limitĉri :spaƜiullimitatdeadresareƔiposibilitĉƜileredusedeprotecƜie
217
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEIÎ ÎNMODULPROTEJAT NMODULPROTEJAT
· ÎnmodulprotejatcalcululadreseisefacelafelprinadresĉdesegmentƔi
deplasament,darcuuneleamendamente :
× Unregistrusegmentpĉstreazĉunselectordesegment Ɣinuadresadeînceputa
segmentului
× Selectorulesteunindicatorcarearatĉloculundeseaflĉostructurĉdedatecare
descrieunsegmentƔicarepoartĉnumelededescriptordesegment
× UndescriptordesegmentconƜine:
— adresasegmentului(pe32debiƜi)
— lungimeasegmentului(pe20debiƜi)
— indicatoripentrudeterminareadrepturilordeacces,tipulƔimoduldeutilizarea
segmentului
× Adresadeoffsetseexprimĉpe32debiƜi
218
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEIÎ ÎNMODULPROTEJAT NMODULPROTEJAT
Oferĉunmecanismcomplexdealocare mecanismcomplexdealocareƔ Ɣideprotec ideprotecƜ Ɯieazonelordememorie ieazonelordememorie
· SpaƜiulmaximdeadresarealmemorieiseextindela4GocteƜi(4G=2
32
)
· Unsegmentareolungimevariabilĉ:dela1octetla4Gocteti
· Sedefinesc4niveledeprotecƜie
– nivelul0:celmaiprioritar,alocatnucleuluiSO
– nivelul1:rutinedesistem
– nivelul2:extensiilesistemuluideoperare
– nivelul3:programeutilizator
· UnsegmentesteaccesibilnumaitaskuluialocatƔieventualsistemuluideoperare
· Anumitesegmentepotfiblocatelascriere(ex:segmenteledecod)
219
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEIÎ ÎNMODULPROTEJAT NMODULPROTEJAT
· Este implemetat începând cu microprocecsorul x386
· OferĉsuportulnecesarpentruimplementareaunuisistemdeoperaremultitaskingƔi
multiͲutilizator,prin:
– managementulmemoriei(segmentareƔipaginare)
– managementulîntreruperilor
– managementultaskurilor
· AsigurĉuncontrolmaibunalfiabilitaƜii,prinmecanismededetecƜieaerorilorde
acces:
– tentativadeacceslaozonadememorienealocatĉtaskului
– tentativadescriereintrͲozonĉnepermisĉ
– lipsaniveluluideprioritatesolicitat
220
ADRESAREAMEMORIEI ADRESAREAMEMORIEI– – MODULPROTEJAT MODULPROTEJAT
Selector Offset
Adr.fizicĉ
15031 0
Memoria
4GB
Adresĉsegment
310
Lungime
Acces
0
Descriptordesegment
221
MEMORIASTIV MEMORIASTIV
· Memoriastivĉ(“stackmemory”)esteostructurĉdedatespecialĉcelucreazĉpe
principiulLIFO (LastInFirstOut=ultimulintratͲ primulieƔit)
÷ FiecarecuvântnouintrodusînstivĉseaƔeazĉ“peste” cuvinteanterioare
÷ Stivase“umple” delaadresemarilaadresemici(contrarcelorlaltorsegmente
dememorie)
÷ Extragereaarticolelordinstivĉsesefaceîncepânddela“vârfulstivei” (ultimul
articolintrodus)
· SubsistemuldeîntreruperisalveazĉautomatînstivĉƔirestaureazĉautomatdinstivĉ
adresadeîntoarcerelaprogramulîntrerupt
222
ROLULMEMORIEISTIV ROLULMEMORIEISTIV
· Memoriastivĉesteutilizatĉcamemoriedestocaretemporarĉ:
÷ sistemuldeîntreruperi
÷ tehniciledeapelareaprocedurilor (subrutinelor)
÷ stocaretemporarĉƔiregĉsirerapidĉadatelor (rezultateintermediare,sau
parametritransmiƔicĉtreproceduri)
· Metodedeimplementareamemorieistivĉ
÷ stivĉhardwareimplementatĉcuregistreinterne–vitezĉmare/capacitatemicĉ
destocare
÷ stivĉsoftwareimplementatĉîncadrulmemorieiprincipale,întrͲozonĉcu
dimensiunesatisfĉcĉtoarepentruaplicaƜie(segmentdestivĉ)–vitezĉredusĉ/
capacitatemaredestocare
223
STIVAHARDWARE(STIVADEREGISTRE) STIVAHARDWARE(STIVADEREGISTRE)
224
STIVAHARDWARE(STIVADEREGISTRE) STIVAHARDWARE(STIVADEREGISTRE)
Adâncime4cuvintepe8biƜi(4registrepeoctet)
225
SEGMENTULDESTIV SEGMENTULDESTIV(STIVA) (STIVA)
· GestiuneainformaƜiilordinstivĉesterealizatĉcuajutorulpointeruluidestivĉ(stack
pointerͲ SS:SP)carememoreazĉîntotdeaunainformaƜiadeadresareavârfuluistivei
(topofstack) în2registre:
÷ RegistrulIndicatordeStivĉ(SPͲ StackPointer)
÷ Registrulsegmentuluidestivĉ(SSͲ StackSegment)
· Dimensiuneastiveiestestabilitĉdeprogramator;nuaredimensiunifixe,cu
respectareaeventualelorrestricƜii(lai8086dimenisuneamaximĉasegmentuluide
stivĉeste64kB)
· LaînscriereaunuiarticolînstivĉsespunecĉstivacreƔte – seumplestivaƔise
actualizeazĉconƜinutuluiregistruluiSP(cuadresaefectivĉaultimuluiarticolînscrisîn
stivĉ)
· ConvenƜii decreƔtereastivei:
÷ creƔterecĉtreadresemici(convenƜiaIntel)
÷ creƔterecĉtreadresemari(convenƜiaMotorola)
226
SEGMENTULDESTIV SEGMENTULDESTIV(STIVA) (STIVA)
· ValoareainiƜialĉaconƜinutuluiluiSPsenumeƔteadresadebazĉastivei (bazastivei)
–anuseconfundacubazasegmentuluidestivĉ
· TransferulîntreUCPƔistivaconstruitĉînmemoriaprincipalĉsepoatefaceîndouĉ
moduri:
÷ automat (decĉtreunitateadecontrol),princodificareaanumitorintrucƜiuni
÷ prininstrucƜiunispeciale pentrutransfercustiva(PUSH ƔiPOP)
· ÎntreUCPƔistivĉnusepottransferadatepeoctet
· InstrucƜiunilePUSHƔiPOPacceptĉdoaroperanzipe16Ɣi32debiƜiiarpointerul
vârfuluistiveisedecrementeazĉ(push),respectivincremeneatĉ(pop) cuvaloarea2
227
Î ÎNCRCAREASTIVEI NCRCAREASTIVEIͲ Ͳ PUSH PUSH
· ValoareainiƜialĉaconƜinutuluiluiSPsenumeƔteadresadebazĉastivei (baza
stivei)–anuseconfundacubazasegmentuluidestivĉ
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
00FE0h
00FE6h
00FE5h
SS
00FFFh
SP
SP
SS
Stivĉ
32octeƜi
Stivĉ
32octeƜi
Stivĉ
ocupatĉ
Stivĉ
liberĉ
Vârfulstivei
Bazastivei
Bazasegmentului
destivĉ
PUSHAX
[SS:SP] =AX
SP=SP– 2
228
EXTRAGEAREADINSTIV EXTRAGEAREADINSTIVͲ Ͳ POP POP
· ExtragereauneivaloridinstivĉnuƔtergeconƜinutul locaƜieidememorierepectivecidoar
modificĉpoiteruldestivĉcarevaadresalocaƜiadememoriesuperioarĉ
· TotuƔi,nutrebuieîncercatĉaccesareauneilocaƜiidinstivĉdeundeovaloareafostextrasĉ
cuPOP(SOƔialteaplicaƜiipotfolosizonadestivĉrĉmasĉ“liberĉ”)
· Laurmĉtoareascriereînstivĉvecheavaloareestepierdutĉ(memorieesterescrisĉ)
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
SP
SS
Stivĉ
32octeƜi
00FE0h
00FE6h
00FE5h
SS
00FFFh
SP
Stivĉ
32octeƜi
Stivĉ
ocupatĉ
Stivĉ
liberĉ
Vârfulstivei
Bazastivei
Bazasegmentului
destivĉ
POPAX
AX=[SS:SP]
SP=SP+2
229
ACCESAREADATELORDINSTIVFREXTRAGEREALOR ACCESAREADATELORDINSTIVFREXTRAGEREALOR
· Este posibilĉfolosind mecanismul de adresare indexatĉimplementat în cazul
microprocesoarelordinfamilia80x86
· Pointeruldestivĉestemodificatcontinuu(offsetulvaloriidoritetrebuiecunoscut)
· Stivarĉmânenemodificatĉdupĉaccesareadatelor
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
SP
SS
Stivĉ
32octeƜi
Vârfulstivei
Bazastivei
Bazasegmentului
destivĉ
PUSHAX
PUSHBX
MOVAX,[SP+2]
valoare
BX
00FE2h
00FE1h
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
SP
SS
Stivĉ
32octeƜi
valoare
BX
00FE2h
00FE1h
230
ALOCAREADINAMICAMEMORIEI ALOCAREADINAMICAMEMORIEI.SEGMENTULHEAP .SEGMENTULHEAP
· AplicaƜiilecomplexefolosescresursedememorieînsemnateƔinecesitĉalocareaƔi
eliberareamemorieiînmoddinamic
· Alocareadinamicĉesteposibilĉînlimbajeledeprogranaredenivelînalt
÷ C :malloc– free
÷ C++ :new– delete
÷ Pascal :new– dispose
· RutineledealocaredinamicĉamemorieioferĉurmĉtoarelefacilitĉƜi:
÷ PermitprogramatoruluisĉdecidĉcâtspaƜiudestocaresevaalocaaplicaƜiei
÷ AlocareaacestuispaƜiudememoriesefacedinamicpeparcursulexecuƜiei
programului
÷ Eliminareadezavantajuluiocupĉriimemorieidecĉtredatecenusuntfolosite
÷ CedareacontroluluispaƜiuluidememoriecĉtresistemuldeoperare
231
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
MEMORIACACHE MEMORIACACHE
232
MEMORIACACHE MEMORIACACHE
SRAM DRAM SDRAM Memoria
virtualĉHDD
CACHE
Capacitate Micĉ
1Ͳ64ko
Medie
256Ͳ2Go
Medie
256Ͳ4Go
Mic
5Ͳ10ns
Mediu
Micĉ
2koͲ2Mo
Timp de
acce
Mic
1Ͳ10ns
Mediu
15Ͳ70ns
Mare
100GoͲ1To
Mare
1Ͳ10ms
F.micĉ
0.5Ͳ5ns
Cost/
koctet
Mare Mediu Mic Mare
· Problemĉ:viteza redusĉ deacces lamemoria principalĉ (dispozitivele de memorie
suntmai lente decât microprocesorul)
– Seconsiderĉ cĉ unsistem funcƜioneazĉ ineficient,cumulte stĉri deaƔteptare
pentru procesor,dacĉ viteza procesorului este mai maredecel puƜin 3ori faƜĉ de
viteza cucaresetransmitdatele pe magistrala comunĉ cumemoria
233
ROLULMEMORIEICACHE ROLULMEMORIEICACHE
· · Memoriilecache(tampon) Memoriilecache(tampon) suntfolositepentrustocareaunorfragmentedeprogram,
dateƔirezultateintermediare,frecventfolositedecĉtreprocesor (pastreazĉ copii ale
unor zone– linii – dinmemoria internĉ)
· Memoria cachenu este vizibilĉ programatorului; prezenƜamemorieicachevafi
vizibilĉpentruutilizatornumaiprinsporireavitezeidelucrulaexecuƜiaprogramelor
· Transferul unorzonedecodsaudateîntrememoriaprincipalĉƔimemoriacachese
realizeazĉautomat,prinhardware,fĉrĉintervenƜiautilizatorului subcontrolul
UnitaƜiidemamagement amemoriei (MMU)
· Ideea debazĉ:aduce mai aproape deprocesor zonele dememorie cu probabilitate
mai maredeutilizare înviitorul apropiat
· MemoriacacheesteamplasatĉîntreprocesorƔimemoriaprincipalĉ
234
STRUCTURLOGICCACHE STRUCTURLOGICCACHEb bIMEMORIAPRINCIPALE IMEMORIAPRINCIPALE
Bloc
Tag
Numĉr
Linie
Cache
LungimeBloc
(Kcuvinte)
Lungime
cuvânt
Adresĉ
memorie
Bloc0
(Kcuvinte)
BlocMͲ1
235
ROLULMEMORIEICACHE ROLULMEMORIEICACHE
· Utilizareauneimemoriicache,demarevitezĉ,încaresepotstocaatâtinstrucƜiuni,
câtƔidate,frecventfolosite,arecascopprincipalobƜinereauneivalorimicipentru
timpulmediudeaccesalUCPlamemorie
· Existĉmaimulteniveluridecache:
÷ NivelL1 –memoriecacheinternĉUCP(deordinulsutelordeKBytes)
÷ NivelL2–memoriecacheexternĉ(deordinulMbytes)
÷ ...
· Indiferentdevariantadeprocesor,dimensiuneamemorieicacheseîncadreazĉcaƔi
capacitateîntreazeceaƔiamiapartedincapacitateamemorieiprincipale
· IdeeadelacaresͲaplecatînintroducereamemorieicacheestebazatĉpe
proprietateaprogramelordeafolosireferinƜelocalizate(90%dintimp seexecutĉ
10%dinprogram)
236
FUNC FUNCf fIONAREAMEMORIEICACHE IONAREAMEMORIEICACHE
· AtuncicândUCPlanseazĉoadresĉpentruafaceacceslamemoriaprincipalĉse
examineazĉmaiîntâiconƜinutulmemorieicache
· DacainformaƜiaadresatĉestegĉsitĉîncacheseciteƔtedecĉtreprocesor–spunem
cĉsͲaprodusunaccesreuƔitlacache(saupescurtoreuƔitĉ,"cachehit cachehit")
· DacĉinformaƜiaadresatĉnuestegĉsitĉîncacheseacceseazĉmemoriaprincipalĉ
pentrucitireainformaƜiei–spunemcĉsͲaprodusoratare("cachemiss cachemiss")
· Accesullacacheestecontrolatdirectdeprocesor
· AccesullamemoriaprincipalĉsefacedeobiceisubcontrolulunitĉƜiidecomandĉa
memorieicache
· TransferulîntrememoriaprincipalĉƔicachenusefaceînsĉlaniveldecuvântcila
niveldeblocdecuvinte,bloccarecuprindeƔicuvântuladresatdeUCPƔinegĉsitîn
cache
· PerformanƜamemorieicacheesteadeseamĉsuratĉcantitativprinaƔaͲnumitulraport
dereuƔitĉ("hitratio hitratio",notathr hr)
237
HITRATIO HITRATIOb bITIMPULDEACCESLAMEMORIE ITIMPULDEACCESLAMEMORIE
· ValoareahrsecalculeazĉcaraportîntrenumĉrultotaldereuƔiteƔinumĉrultotalde
accesĉrilamemorie(ratĉri+reuƔite)
· Hitratiosemĉsoarĉdeobiceiprinrulareaunorprogramedetestreprezentative
pentruclasedeprograme
· Tipicvaloarealuihrestecuprinsĉînintervalul0,9<hr<1
· TimpulmediudeacceslaomemorieseîmbunĉtĉƜeƔteconsiderabildacĉseutilizeazĉ
memoriecache
· Deexempludacĉtimpuldeacceslamemoriacacheestede10ns,iarlamemoria
principalĉde100ns,iarhr=0,9(din10accesĉrinouĉsuntreuƔite)rezultĉuntimp
deaccesmediude19ns:
9 10 100
19
10
acm
t ns
+
= =
238
ORGANIZAREAMEMORIEICACHE ORGANIZAREAMEMORIEICACHE
· UnalgoritmspecialdeanticipareaduceînmemoriacachesecvenƜeledeprogram
careurmeazĉlogicuneiinstrucƜiunidejaexecutate
· Factoruldesuccesalmemorieicacheestelegatdedimensiunea,organizareaƔide
eficienƜaalgoritmuluideînlocuireainformaƜieidincache
· DinpunctuldevederealstructuriiƔiorganizĉriimemorieicacheexistĉ3tehnici
principalenumitetehnicidemapare tehnicidemapare:
– – mapareasociativĉ mapareasociativĉ
– – maparedirectĉ maparedirectĉ
– – mapareasociativĉpeseturi mapareasociativĉpeseturi
239
MAPAREAASOCIATIV MAPAREAASOCIATIV
· Organizareamemorieicachecaomemorieasociativĉ(adresabilĉprinconƜinut)
conducelavitezaƔiflexibilitateaceamaibunĉ
· PentrucĉomemorieasociativĉestescumpĉƔiareungradmicdeintegrare,metoda
estedestulderarutilizatĉƔidoarpentruimplementareaunormemoriidemici
dimensiuni
· ÎncadrulmemorieiasociativecefuncƜioneazĉcamemoriecachesestocheazĉatât
adreselecâtƔiconƜinutul(datele)unorlocaƜiidinmemoriaprincipalĉ
· ÎnacestfeloricelocaƜiedincachepoatememoraoricarecuvântdinmemoria
principalĉ
· LalansareauneiadresedecĉtreUCPaceastasecomparĉcutoate adresele
memorateînmatriceadeadreseamemorieicacheasociative.Dacĉcompararea
combinaƜionalĉconducelaoreuƔitĉ,datacorespunzĉtoareaparelaieƔireƔiseînscrie
înregistruldedate(pentruoperaƜiadecitire)
240
MAPAREAASOCIATIV MAPAREAASOCIATIV
· Dacĉseproduceoratare,sefaceacceslamemoriaprincipalĉpentruaducereaunui
blocdedatecepoatefistocatoriundeînmemoriacacheasociativĉ
· Dacĉmemoriacacheesteplinĉ,trebuiealesunmodprincaresĉseelimine
informaƜiacenumaiestenecesarĉ
· Pentrudeciziesefolosescalgoritmideînlocuire:
– OprocedurĉsimplĉestedetipFIFO(algoritmpebazĉde“vârstaîncache” =
primulintratprimulieƔit
– LRU(LeastRecentlyUsed)
– înlocuirealeatoare
– LFU(LeastFrequentlyUsed).
241
ALGORITMIDE ALGORITMIDEÎ ÎNLOCUIRE NLOCUIRE
• FIFO ͲEsteunalgoritmpebazĉde“vârstaîncache” =primulintratprimulieƔit
– ProceduraFIFOesteimplementatĉcaotehnicĉdetamponcircular(numitĉƔi
roundͲrobin)
– OprocedurĉuƔordeimplementat
• LRU (LeastRecentlyUsed)– SeînlocuieƔtebloculdincachecareestecelmaivechiƔi
lacarenusͲafĉcutaccesdecelmailungtimp
– PentruomapareasociatĉcudouĉseturiestefoarteuƔordeimplementat
– FiecarelinieconƜineunUSEbit.Cândsefacereferirelaliniebituldeutilizare
estesetatpe1,altfelelrĉmânepe0.Cândseaduceunblocîncachesevapune
înliniacubituldeutilizarecuvaloarea0.Estedeobiceiceamaieficientĉmetodĉ
deînlocuire
• LFU (LeastFrequentlyUsed)– înlocuieƔteblocullacaresͲaufĉcutcelemaipuƜine
referiri
– Seimplementeazĉcuajutorulunorcontoareasociatefiecĉreilinii.
• Înlocuirealeatoare – conducelaperformanƜe(hr)mairedusedecâtLRUƔiLFU,dar
esteextremdeuƔordeimplementat
242
MAPAREAASOCIATIV MAPAREAASOCIATIV
243
MAPAREADIRECT MAPAREADIRECT
· Mapareadirectĉ estreosoluƜiemaiieftinĉpentrucĉpermiteimplementareacucu
ajutorulunormemoriiRAMstatice
· LamapareadirectĉadresadeabiƜiestelogicîmpĉrƜitĉîndouĉcâmpuri:
– – index index (celmaipuƜinsemnificativ),caredinpunctdevederelogicpoatefiprivitca
fiindformatdinaltedouĉcâmpuri:bloc bloc Ɣi cuvânt cuvânt
– Ɣirespectivetichetĉ etichetĉ
244
MAPAREADIRECT MAPAREADIRECT
· NumĉruldebiƜipentruindex(kbiƜi)determinĉdimensiuneamemorieicache(2
k
cuvinteadresabileprinindex),valoareasaconstituindadresapentrumemoriacache
· ÎncachesestocheazĉnunumaidatacorespunzĉtoareciƔieticheta(formatĉdinaͲk
biƜi)asociatĉdatei
· Deasemenea,lângĉetichetĉmaipotfiînscriseƔialteinformaƜiicumarfi:
– bitceindicĉdacĉdatelesuntvalidesaulocaƜiaeprivitĉcafiindgoalĉ
– bitdeprotecƜielascrierealocaƜiei(protecƜialascriereesteutilĉatuncicând
datelesereferĉlarutinealesistemuluideoperare)
245
MAPAREADIRECT MAPAREADIRECT
· LacitirecâmpuletichetĉaladreseidememoriedelaUCPestecomparatcueticheta
cuvântuluigĉsitîncacheƔiavândaceeaƔiadresĉdeindexcuadresadememorie
· Dacĉetichetelesepotrivesc,sͲaprodusunevenimentdereuƔitĉ(cachehit)
· Potexista2
aͲk
cuvintecuacelaƔiindex,decistocabileînaceeaƔiliniedememorie
cache
· DacĉseacceseazĉrepetatdouĉsaumaimulteadresecuacelaƔiindex(distanƜaîntre
douĉasemeneaadresesuccesiveeste2
k
)factoruldereuƔitĉscademult
· Moduldemaparedirectĉpoatefiexprimatanaliticca:
i=jmodulom
unde
i =numĉrullinieidincache;
j =numĉrulbloculuidinmemoriaprincipalĉ;
m =numĉrultotaldeliniiîncache
246
MAPAREADIRECT MAPAREADIRECT
· Tips:
– Laratareseaduceunîntregblocdecuvinte,cuaceeaƔiadresĉdebloc
– Blocurilesuntalesecudimensiuneaputerealuidoi
– Încachesestocheazĉosingurĉdatĉetichetaunuibloc,pentrucĉeaesteaceeaƔi
pentrutoatecuvinteleblocului
· Înexemplulurmĉtor:
– Adresĉdememoriede32debiƜi
– Etichetĉpe8biƜi
– Adresĉdeblocpe20debiƜi
– Adresĉdecuvântîncadrulblocului,pe4biƜi
247
MAPAREADIRECT MAPAREADIRECT
248
POLITICIDESCRIERE POLITICIDESCRIERE
• Înaintedeînlocuireaunuiblocdincachetrebuieverificatdacĉafostmodificatdoar
încache(pĉstrareacoerenƜeidatelor)
– Writethrough.scrierecupropagarecĉtrenivelurileinferioaredememorie,notatĉpescurt
WT
• Esteceamaisimplĉtehnicĉ,daresteconsumatoaredetimp
– Writeback,scriereprinactualizareanivelurilorinferioareînmomentulînlocuirii(eliminĉrii)
informaƜieidincache,notatĉpescurtWB
• Scrierilesefacdoarîncache,Ɣiseactualizeazĉunbit(Updatebit,sauDirtybit)asociat
linieidincache.
– WriteͲthroughwithbufferedwrite– acelaƔiprincipiucalaWT,daradresaƔidataasociatĉ
scrisĉsestocheazĉîntrͲuntampondescrieredemarevitezĉ
• Scriereaînmemoriaprincipalĉseefectueazĉindependentdeprocesor
• Rezultĉovitezĉmare,darunhardwaresuplimentar.
• Încazulunuievenimentdetipwritemissseutilizeazĉ:
– Writeallocate(numitƔifetchonwrite)– Bloculesteîncĉrcatîncachedupĉevenimentulde
ratare(similarcuratarealacitire).
– NoͲwriteallocate(numitƔiwritearound)– BloculestemodificatdoarpenivelulinferiorƔi
nuesteîncĉrcatîncache.
ARHITECTURASETULUIDEINSTRUC ARHITECTURASETULUIDEINSTRUCf fIUNI IUNI
250
ARHITECTURASETULUIDEINSTRUC ARHITECTURASETULUIDEINSTRUCf fIUNI(ISA) IUNI(ISA)
¯ ¯ Tipurideinstruc TipurideinstrucƜ Ɯiuni iuni
¯ ¯ Moduriledeadresare Moduriledeadresare
¯ ¯ Complexitatea ComplexitateaƔ Ɣicaracteristicilesetuluideinstruc icaracteristicilesetuluideinstrucƜ Ɯiuni iuni
¯ ¯ Formatulsetuluideinstruc FormatulsetuluideinstrucƜ Ɯiuni iuni
¯ ¯ Implementareahardwareainstruc ImplementareahardwareainstrucƜ Ɯiunilor iunilor
¯ ¯ Codificareaoperanzilorlafamiliadeprocesoare80x86 Codificareaoperanzilorlafamiliadeprocesoare80x86
251
ARHITECTURASETULUIDEINSTRUC ARHITECTURASETULUIDEINSTRUCf fIUNI IUNI
· · Arhitecturasetuluideinstruc ArhitecturasetuluideinstrucƜ Ɯiuni iunispecificĉunuiprocesorcuprinde:
× SetuldeinstrucƜiuni (instrucƜiunispecificelanivelmaƔinĉ)recunoscutede
procesor– codmaƔinĉ
× TipuloperaƜiilor carepotfiefectuatedesetuldeinstrucƜiuni
× Tipurilededate carepotfimanipulatecuacesteinstrucƜiuni(prelucratedeUAL)
× ContextulƔi modul încareacesteinstrucƜiuniopereazĉ
× Moduldeadresare aoperanzilorinstrucƜiunilor
252
INTERFA INTERFAf fA AÎ ÎNTREHARDWARE NTREHARDWAREb bISOFTWARE ISOFTWARE
Q Q ISA ISAesteocomponentĉamaƔiniidecalcul,vizibilĉprogramatoruluilaniveldelimbaj
deasamblare,componentĉcarerealizeazĉinterfaƜaîntresoftwareƔihardware
253
CARACTERISTICIALEISA CARACTERISTICIALEISA
· Regularitate(ortogonalitate)
aceastĉcaracteristicĉimpunecafiecareinstrucƜiunedinISAsĉpoatĉoperacuorice
tipdedate,conƜinuteînoricareregistrusauoricarelocaƜiedememorie,Ɣisĉpoatĉfi
adresateprinoricaremoddeadresare
· Completitudine
aceastĉcerinƜĉarimpunecasetuldeinstrucƜiunisĉcuprindĉtotsetuldeoperatori
disponibiliîntrͲunlimbaj
254
TIPURIDEINSTRUC TIPURIDEINSTRUCf fIUNI IUNI
· SetuldeinstrucƜiunireprezintĉtotalitateaoperaƜiilor(aritmeticeƔilogicemcu
registre,deacceslamemorie,etc.)pecarelepoateexecutaun microprocesor
· · CLASIFICARE CLASIFICARE
× InstrucƜiuniaritmetice
× InstrucƜiunilogice
× InstrucƜiunipentrutransferulinformaƜiei
× InstrucƜiunipentrudeplasareaƔirotireadatelor
× InstrucƜiunideramificare(pentrucontrolulsecvenƜeideprogram)
× InstrucƜiunipentrucontrolulprocesorului
255
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
· AsigurĉoperaƜiilearitmeticeasupraoperanzilor
· AfecteazĉindicatoriidecondiƜii
· UnsettipicdeinstrucƜiuniaritmeticeesterezumatîncontinuare(exemplepentru
Intel80x86):
× Adunare ADDD,S
× Adunarecuconsiderareatransportului ADCD,S
× Scĉdere SUBD,S
× Scĉderecuconsiderareaîmprumutului SBBD,S
× Incrementare INCD
× Decrementare DECD
× Realizarecodcomplementar(C2) NEGD
× Comparare CMPD,S
· Notĉ: ExistĉoseriederestricƜiiprivindnaturaopreranzilordestinaƜie/sursĉ
256
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
× ÎnmulƜire(fĉrĉsemn) MULS
× ÎnmulƜire(cusemn) IMULS
× ÎmpĉrƜire(fĉrĉsemn) DIVS
× ÎmpĉrƜire(cusemn) IDIVS
× Ajustarezecimalĉ DAA(DupĉadunareînNBCD)
DAS(DupĉscĉdereînNBCD)
· Notĉ:DeîmpĉrƜitulsaudeînmulƜitulsegĉsescimplicitînregistreleacumulatorƔi
eventualDX.DinaceastĉcauzĉlaI8086existĉunsinguroperand.LaprocesoareIntel
pe32debiƜi(delaI80386),operaƜiadeînmulƜirecusemnaîntregilorpoateaveaƔi
formacudoisautreioperanzi,cazîncaresepotfolosiƔialteregistregenerale,decât
AXƔiDX.
257
INSTRUC INSTRUCf fIUNILOGICE IUNILOGICE
· AsigurĉoperaƜiilelogicecuoperanziispecificaƜi
· AfecteazĉindicatoriidecondiƜii
· Unsettipicesterezumatîncontinuare(exemplepentruIntel80x86):
× bIlogic ANDD,S
× SAUlogic ORD,S
× SAUͲExclusiv XORD,S
× Complement(NU) NOTD
× Testlogic TESTD,S
× PrelucrareƔitestarepebit(dela386insus,lamicrocontrollere)
258
INSTRUC INSTRUCf fIUNIPENTRUTRANSFERULINFORMA IUNIPENTRUTRANSFERULINFORMAf fIEI IEI
· Realizeazĉtransferul(copierea) informaƜieiîntreregistre,întreregistreƔimemorie,
sauîntreregistreƔiporturideI/O(dinsursĉîndestinaƜie)
· ÎngeneralnuafecteazĉvalorileindicatorilordecondiƜii
· Potficlasificatein:
× InstrucƜiunidetransferdeuzgeneral
× InstrucƜiunidetransfercustiva
× InstrucƜiunipentrutransferuladreselor(pointeri)
× InstrucƜiunidetransferI/O.
· PentrumicroprocesoarelecareauporturiledeI/OmapateînspaƜiuldeadresede
memorienuexistĉinstrucƜiunispecializatedetransferdeI/O
259
INSTRUC INSTRUCf fIUNIPENTRUTRANSFERULINFORMA IUNIPENTRUTRANSFERULINFORMAf fIEI IEIͲ Ͳ EX.8086 EX.8086
· Transferdeuzgeneral MOVD,S ;Dі S
XCHGD,S ;Dў S
· Transfercustiva PUSHS/POPD
PUSHF/POPF
· Transferuladreselor LEAr16,adr ;(r16)і ad
LDSr16,adr ;r16Lowі [DS:adr]
;r16Highі [DS:(adr+1)]
;DSLowі [DS:(adr+2)]
;DSHighі [DS:(adr+3)]
· TransferdeI/O INAL,adr ;ALі adr(port)
INAX,adr ;ALі adr(port),16biƜi
INAL,DX ;ALі (DX)
OUTadr,AL
OUTDX,AL
260
INSTRUC INSTRUCf fIUNIPENTRUDEPLASAREA IUNIPENTRUDEPLASAREAb bIROTIREADATELOR IROTIREADATELOR
· InstrucƜiunilepropriuͲzisededeplasarepotfiasociate
÷ instrucƜiunilorlogice,încazulîncaredeplasareaseefectueazĉînscopulizolĉrii
unorbiƜidintrͲuncuvânt(pentruatestasauprelucraaceibiƜi),sau
÷ instrucƜiuniloraritmetice(înmulƜire/împĉrƜirecuputerialelui2);încazul
deplasĉriloraritmeticeseconservĉbituldesemnaloperanduluideplasat
· OperaƜiilededeplasarepotfi:
÷ deplasĉriînchise(rotaƜiistânga/dreapta)
÷ deplasĉrideschise(stânga/dreapta)
· LatoateoperaƜiilededeplasare,seinfluenƜeazĉƔivaloareaindicatoruluidetransport
(Carry)
· Deplasĉrileînchise(rotirile)suntdoardetiplogic.
261
INSTRUC INSTRUCf fIUNIPENTRUDEPLASAREA IUNIPENTRUDEPLASAREAb bIROTIREADATELOR IROTIREADATELOR
SALD,1
SHLD,1
SARD,1
SHRD,1
ROLD,1
RCLD,1
RORD,1
RCRD,1
262
INSTRUC INSTRUCf fIUNIDERAMIFICARE(CONTROLULPROGRAMULUI) IUNIDERAMIFICARE(CONTROLULPROGRAMULUI)
· DeterminĉmodificareasecvenƜeiliniare,normale,deexecuƜieaunuiprogram,în
funcƜiedecondiƜiileîncaresͲaterminatexecuƜiauneiinstrucƜiuniprecedente
· SeasigurĉastfelramificaƜiileînprogram Ɣiimplementareadiferitelorstructuride
controlspecificatedeunanumitalgoritm.
· AcesteinstrucƜiuninuafecteazĉstareaindicatorilordecondiƜii,daruneledin
instrucƜiuniledesaltsuntinfluenƜatedevaloareaconƜinutaînindicatori.
· InstrucƜiunilederamificare(salt) potfi:
÷ NecondiƜionate (apeldeprocedurĉ (CALLop),salturiabsolute (JMPop),revenire
dinprocedurĉ /return(RET))
÷ CondiƜionate (JccͲ Jumpifcondition=TRUE),apeluricondiƜionaledeproceduri
(CALLifcondition=TRUE)sau“repetĉpânĉcândcondiƜie=TRUE”)
· ExemplificĉripentruI8086:JMPop,CALLop,RET,Jccop
263
INSTRUC INSTRUCf fIUNIDERAMIFICARE(i8086) IUNIDERAMIFICARE(i8086)
· MnemonicelefolosesciniƜialeproveninddela:
Above,Below,Equal,Not,Greater,Less,Carry,Zero,Overflow,Parity(PEven,POdd),
Sign
· TabelpentrutestareacondiƜieilascĉdereaadouĉnumereA– B :
264
INSTRUC INSTRUCf fIUNIPENTRUCONTROLULPROCESULUI IUNIPENTRUCONTROLULPROCESULUI
· ControleazĉanumitefuncƜiialeprocesorului,ceacƜioneazĉfieprinintermediulunor
indicatoridecontrol(sauregistredecontrol),fieprinintroducereaunorstĉrisau
semnalenecesarepentrusincronizareacuevenimenteleexterne
CMC reset
CLC resetează flag transport
STC set
NOP nicio operaĠie (delay)
CLD reset
STD set
CLI resetează flag întreruperi
STI setează flag întreruperi
HLT opreúte
WAIT aúteaptă
ESC esc
LOCK blo
265
FORMATULGENERALALUNEIINSTRUC FORMATULGENERALALUNEIINSTRUCf fIUNI IUNI
· InstrucƜiunilesereprezintĉînmemoriaprincipalĉcaocteƜisuccesivi(unulsaumai
mulƜiocteƜiînfuncƜiedetipuldeprocesor)
· ScopulfiecĉreiinstrucƜiunirecunoscutedeprocesorestesĉspecifice:
÷ operaƜiacetrebuieexecutatĉdehardware
÷ operanziiutilizaƜi
÷ loculundesestocheazĉrezultatuloperaƜiei
· Tipurideoperanzi :
÷ Registre
÷ Adresedememorie
÷ Dateimediate(constantenumerice)
CodoperaƜie Operand1 Operand2 Operand3
266
FORMATULGENERALALUNEIINSTRUC FORMATULGENERALALUNEIINSTRUCf fIUNI IUNI
· InstrucƜiuneaesteinterpretatĉcaa =a +b
÷ apoatefiunregistrusauoadresĉdememorie
÷ bpoatefiregistru,adresĉdememoriesauconstantĉ(datĉimediatĉ)
÷ a Ɣib nupotfisimultanadresedememorie
· ExistĉinstrucƜiunicuoadresĉ(carelasĉoperanduldestinaƜie/sursĉ1implicit)
· ExistĉinstrucƜiunicuzeroadreseîncareambiioperanzisuntimpliciƜiƔispecificaƜiîn
coduloperaƜiei
· SetuldeinstrucƜiunialmicroprocesorului8086areoarhitecturĉdetipregistruͲ
memorie,dubluͲadresĉ(maximdoioperanzi)
opera operaƜ Ɯie ie operanzi operanzi
add add
destina destinaƜ Ɯie ieƔ Ɣi i
sursĉ sursĉ1 1
sursĉ sursĉ2 2
a a, , b b
267
NUMRDEADRESEEXPLICITE NUMRDEADRESEEXPLICITE
· ProcesoarelemoderneƔiceleRISCau,spredeosebirede8086,unsetdeinstrucƜiuni
cepermitefolosireaa3adreseexplicite
268
CLASIFICARE CLASIFICARE
· ConformlegĉturiidintreorganizareaUCP ƔinumĉruldeadresepeinstrucƜiune,vom
puteaîncadracelemaimulteprocesoareîntrͲunadinurmĉtoareletreicategorii:
÷ organizarepebazĉderegistruacumulator(Ac) lacarepentrumajoritatea
operaƜiilorunuldintreoperanzisegĉseƔteimplicitînacumulator.Deasemenea
rezultatuloperaƜieise”acumuleazĉ” înacestregistrucufuncƜiespecialĉ.
÷ organizarepebazĉderegistredeutilizaregenerala(RG) lacareoperanziisunt
explicitlocalizaƜifieînregistreleinternedeuzgeneral(fĉrĉrestricƜii),fieîn
registrelesegmentƔicledinlocaƜiilememorieiprincipale(cuanumiterestricƜii).
÷ organizaredetipstivĉ(ST) lacareoperanziisegĉsescimplicitînvârfulstiveiƔitot
aicisestocheazĉrezultatul.Existĉuneleprocesoaredetipstivĉcarefolosesc
douĉstive:unapentruoperaƜiiasupradatelorƔialtapentruoperaƜiiasupra
adreselor.
269
EXEMPLUDEINSTRUC EXEMPLUDEINSTRUCf fIUNI IUNI
Tiporganizare FormatinstrucƜiune Comentariu
AC
addx
addr
Acі Ac+x
Acі Ac+[x]
Acі Ac+r
RG
addr1,r2,r3
addr1,r2
addr1,x
r1і r2+r3
r1і r1+r2
r1і r1+[x]
ST
pushx
add
VSі [x]
Aduceprimele2valoridinstivĉ,le
adunĉƔistocheazĉrezultatulîn“VS”
· NotaƜii:
· r– conƜinutulregistrului
· Ac– registrulacumulator
· x–adresĉdememorie
· [x]– conƜinutuldelaadresax
· VS– vârfulstivei(SS:SP)
270
EXEMPLUDEOPERA EXEMPLUDEOPERAf fIE: IE:x=a*(b+c) x=a*(b+c)
· InstrucƜiunicudouĉadrese:
movr,b ;rі b
addr,c ;rі r+c
mulr,a ;rі r*a
movx,r ;[x]і r
· InstrucƜiunicustiva
pusha ;VSі a(fieadr,adresacurentĉavârfuluistivei)
pushb ;VSі b(laadresaadrͲ2)
pushc ;VSі c(laadresaadrͲ4)
add ;VSі b+c(stocatlaadresaadrͲ2)
mul ;VSі a*(b+c)(stocatlaadresaadr)
popx ;[x]і VS(vârfulstiveivaaveaadresaadr+1,adicĉvafilapoziƜia
adresatĉînaintedeapelulinstrucƜiuniipusha)
271
METODEDEACCESPENTRUINSTRUC METODEDEACCESPENTRUINSTRUCf fIUNI IUNI
· · SECVENTIAL SECVENTIAL :seciteƔte instrucƜiunea delaadresa urmĉtoare
» PC = PC + lungimea_instrucƜiunii_curente
» ex:instrucƜiuni aritmetice si logice
· · DIRECT DIRECT :seciteƔte instrucƜiunea delaadresa specificatĉ îninstrucƜiunea curentĉ
» PC =adresa_directĉ
» ex:instrucƜiuni desalt,apel derutine
· · RELATIV RELATIV :seciteƔte instrucƜiunea delaoadresĉ relativĉ faƜĉ deadresa curentĉ
(deplasamentul poate fi pozitiv sau negativ)
» PC =PC + deplasament
» ex:instrucƜiuni desalt,apel derutine
· · INDIRECT INDIRECT : instrucƜiunea curentĉ specificĉ adresa adresei instrucƜiunii urmĉtoare
272
MODURILEDEADRESARE MODURILEDEADRESARE
· Sereferĉlamodulîncare,înformatulinstrucƜiunii,sespecificĉ adresa unuioperand
deprelucrat,adresadestocarearezultatului operaƜiei,sauadresaurmĉtoarei
instrucƜiuni
· Operanzii :
÷ imediaƜi(constantedefinitepeunulsaudoiocteƜi)
÷ înregistreinterneUCP
÷ înmemorie(înlocaƜiispecificateprinadresalor)
÷ înregistreportdeI/O(definitedeoadresĉunicĉdeport)
273
MODURILEDEADRESARE MODURILEDEADRESARE
· Încazulunuiprogramexecutabil,valoareaoperanzilorestecalculatĉîntreimomente
diferite,înfuncƜiedetipulacestora:
÷ înmomentulcompilĉrii/asamblĉriiprogramuluisursĉpentruoperanziiimediaƜi
÷ înmomentulîncĉrcĉriiînmemoriaprincipalĉ pentruadresareadirectĉla
memorie
÷ înmomentulexecuƜiei pentruoperanziiadresaƜiînregistre sauadresaƜiindirect
274
MODURILEDEADRESARE MODURILEDEADRESARE
· PentrufiecaremoddeadresareUCcalculeazĉoadresĉefectivĉ(AE) aoperandului
· Lamicroprocesoarelecumemoriasegmentatĉ,AErezultĉcaunîntregfĉrĉsemnce
reprezintĉdeplasamentul(adresarelativĉaoperandului)faƜĉdeînceputul
segmentuluiîncareseaflĉ
· Intel8086–memoriesegmentatĉ(registresegmentCS,DS,SS,ES)
· Intel8086:Adresafizicĉ(AF) seobƜinedinadresaefectiva(AE)lacareseadaugĉ
adresadesegment(AS) înmulƜitĉcu16,caînecuaƜia:
AF =AS x2
4
+AE
275
MODURILEDEADRESARE MODURILEDEADRESARE
TIPURILEDEMODURIDEADRESARE TIPURILEDEMODURIDEADRESARE
× Adresareimediatĉ
× Adresaredirectĉ
× Adresaredirectĉlaregistru
× Adresaredirectĉlamemorie(absolutĉ)
× Adresareindirectĉprinregistre
× Adresareindexatĉsaubazatĉ
× AdresareindexatĉƔibazatĉ
× Adresarerelativĉ
276
ADRESAREIMEDIAT ADRESAREIMEDIAT
· OperandulapareexpilcitîninstrucƜiunecadatĉimediatĉ(constantĉnumericĉ)–
valoarealuiestefixĉ
· NunecesitĉutilizareadespaƜiudememoriesuplimentarînRAM
· Flexibilitatelimitatĉ;instrucƜiuneapoatelucracuosingurĉvaloare
· Lungimeaconstanteiesteînacordcucelĉlaltoperand
addal,0FFh
movax,3A70h
moval,5
movax,5
adr
adr+3
Memoria
principalĉ
adr+2
adr+1
Cod_Op
Data(low)
{Data(high)}
CodoperaƜie Datĉimediatĉ
Formatul
instrucƜiunii
277
ADRESAREIMEDIAT ADRESAREIMEDIAT– – EXEMPLU EXEMPLU
· înainte:
BX=xxxxh
· dupĉ:
BX=0005h
MOVBX,5
IP BB
0005
Memoriade
program
00
05
IP+1
IP+2
BX
278
ADRESAREDIRECT ADRESAREDIRECT
· ADRESAREADIRECTLAREGISTRUeste,deregulĉimplicitĉ(adresaregistruluieste
codificatĉîncoduloperaƜiei– la8086,pe3biƜi)
· Adresaefectivĉaoperanduluiesteînscrisĉînregistru
· EsteoinstrucƜiunescurtĉ(nunecesitĉoperanziexpliciƜi)
· Timpdeaccesfoartemic;nunecesitĉcicludetransferpemagistralĉ
addal,bl
movax,cx
divbl
MOVDS,AX
adr
adr+3
Memoriade
program
adr+2
adr+1
Cod_Op
extensie cod
CodoperaƜie
Formatul
instrucƜiunii
1234
1234 AX
DS
8E
D8
279
ADRESAREDIRECTLAMEMORIE ADRESAREDIRECTLAMEMORIE(ABSOLU (ABSOLUT T) )
DS
AF
COD_OP
AS
DEPLASAMENT
InstrucƜiune
OPERAND
AE
· · Adresareadirectĉlamemorie Adresareadirectĉlamemorie poatefiabsolutĉ sauexplictĉ
· AdresaefectivĉaoperanduluiesteconƜinutĉîninstrucƜiunecadeplasamentîn
segmentuldedatecurent
· AdresareadirectĉlamemoriefoloseƔteimplicitregistrulDS
· PrezintĉavantajulcĉsepoatemodificaconƜinutullocaƜieidememoriealcĉreioffset
econƜinutîninstrucƜiune(valoareaoperanduluinuestefixĉ)
· Laadresareadirectĉexplictĉ,operandulinstrucƜiuniiconƜinepointerulcĉtrevariabila
dinmemorieadresatĉ
280
ADRESAREDIRECTLAMEMORIE ADRESAREDIRECTLAMEMORIE
.data
sirdb‘adr.abs.’
valdw26
.code
movBX,val
add CX,[100]
movAX,[ES:0F16]
;DefineƔteînsegmentuldedateovariabilĉpecuvânt
;PuneînBXconƜinutullocaƜieidememorieadresatede
variabilaVAL.Laasamblare,expresiaVALvafiînlocuitĉ
cuovaloareegalĉcudeplasamentul(AE)încadrul
segmentuluidedatecurent
;Deplasamentexplicitîncadrulsegmentuluidedatecurent
;AdresareexplictĉauneilocaƜiidinextraͲsegmentulde
date
281
ADRESAREABSOLUT ADRESAREABSOLUTͲ Ͳ EXEMPLU EXEMPLU
· înainte:
BX=xxxxh
val=001Ah
· dupĉ:
BX=001Ah
val=001Ah
CS:IP 8B
001A Memoria
principalĉ
1E
08
CS:(IP+1)
CS:(IP+2)
BX
1A
00
DS:0008
DS:0009
MOVBX,VAL
Segmentuldecod
Segmentul de date
00 CS:(IP+3)
codoperaƜie
deplasament(operand)
AS DS
AF
AE
282
ADRESAREINDIRECT ADRESAREINDIRECT
· InstrucƜiuneaconƜine,caoperand,oadresĉ(înmemorie sauregistre)lacarese
gĉseƔteAEadatelorcucarevaoperainstrucƜiunealaexecuƜiasa
· Încazuladresĉriiindirecteprinregistre adresĉriiindirecteprinregistre,instrucƜiuneacodificĉadresaunuiregistru
internalUCPceconƜineAEaoperanduluidinmemorie
· Registrefolosite:BX,SI,DI
· Registrudesegmentimplicit:DS
DS
AF
AS
BX/SI/DI
InstrucƜiune
OPERAND
AE
COD_OP
283
ADRESAREINDIRECT ADRESAREINDIRECT
movAX,[BX]
xchgBX,[SI]
add byte ptr [SI],2
add[SI],2
;PuneînmemorieconƜinutullocaƜieidememoriedela
adresaefectivĉdatĉdeBX
;InterschimbĉconƜinutulregistruluiBXcuconƜinutuldin
locaƜiadememoriecudeplasamentuldatdeSI
;Adunĉvaloarea2laoctetulaflatlaadresadatĉdeSI
;InstrucƜiuneincorectĉ;poatefiinterpretatĉca“adunĉ2la
octetuldelaadresadatĉdeSI” sau“adunĉ2lacuvântul
delaadresadatĉdeSI”.Asamblorulvageneraunmesaj
deeroare.
284
ADRESAREINDIRECTPRINREGISTRE ADRESAREINDIRECTPRINREGISTRE
· înaintedeexecuƜie:
BX=A1B2h
SI=100h
mem(100h)=1234h
· dupĉexecuƜie:
BX=1234h
SI=100h
mem(100h)=A1B2h
CS:IP 87
A1B2/1234 Memoria
principalĉ
1C CS:(IP+1)
BX
34/B2
12/A1
DS:0100
DS:0101
XCHGBX,[SI]
AS DS
AF
AE
0100 SI
285
ADRESAREAINDEXAT ADRESAREAINDEXAT
· AEaoperanduluisedeterminĉadunândconƜinutulunuiregistruindex(SI,DI) saua
unuiregistrudebazĉ(BX,BP) cuun“deplasament”(constantĉnumericĉpe8sau16
biƜispecificatĉîncuvântuldeinstrucƜiune)
· PrinmodificareaconƜinutuluiregistruluiindex(ex,incrementare)aceeaƔiinstrucƜiune
poateadresalocaƜiidememoriediferite
· · ADRESAREINDEXAT ADRESAREINDEXAT :SI,DI/registrudesegmentimplicit:DS
· · ADRESAREBAZAT ADRESAREBAZAT :BX,BP/registrudesegmentimplicit:DS,respectivSS
DS/SS
AF
AS
SI/DI/BX/BP
InstrucƜiune
OPERAND
AE
COD_OP “deplasament”
286
ADRESAREAINDEXAT ADRESAREAINDEXAT
· Adresareaindexatĉesteutilĉpentruareferielementeleunuitabeldevalori (vector)
· Adresadeînceputatabelului esteconƜinutĉîncodulinstrucƜiunii(operand)
· Deplasamentulelementului relativlaînceputultabeluluiestedeterminatprintrͲun
indice,conƜinutînregistrulindex
· Ex:implementareauneibucledeprogramceadreseazĉînmodsuccesivelementele
unuivectorpentruadeterminasumalorprinsimplaincrementarearegistruluiindex
· NumĉrulderegistreindexdintrͲunprocesorindicĉnumĉruldetablouripotenƜiale
caresepotadresaînmemorie,iarmĉrimeadeplasamentuluideterminĉdimensiunea
maximĉatabloului.
· NumĉrulregistrelorindexesteuncriteriudeperformanƜĉpentrumicroprocesoare
287
ADRESAREAINDEXAT ADRESAREAINDEXAT
.data
var1dw1
var2dw2
TABdw10dup(0)
.code
movSI,6
movAX,5E2h
movTAB[SI],AX
mov[SI+TAB],AX
movoffsetTAB,BX
mov[BX+6],AX
movAX,[BX]
movAX,[BP]
;DefineƔteuntabloude10elemente
;Încarcĉregistrulindexcuindiceleelementuluicese
doreƔteafiaccesat
;MutĉînAXal7Ͳleaelementdintabel
;InstrucƜiuneechivalentĉ
;SeîncarcĉînBXdeplasamentulluiTABdupĉcarese
foloseƔteadresareabazatĉpentruaaccesaal7Ͳlea
elementdintablou;acesteinstrucƜiuniauacelaƔiefect
caƔivarianteleprecedente
;Adresareindirectĉ
;Adresarebazatĉcudeplasamentnul
288
ADRESAREINDEXAT ADRESAREINDEXAT
· înainte:
AX=05E2h
SI=0005h
TAB[7]=0000h
· dupĉ:
AX=05E2h
SI=0005h
TAB[7]=05E2h
MOVTAB[SI],AX
CS:IP 89
05E2
Memoria
principalĉ
44 CS:(IP+1)
AX
00
ͼ
ͼ
ͼ
DS:0004
DS:000A
AS DS
AF
AE
0005 SI
04
CS:(IP+2)
E2
05 DS:000B
TAB[0]
289
ADRESAREAINDEXAT ADRESAREAINDEXATb bIBAZAT IBAZAT
· AEesteformatĉprinadunareaconƜinutuluiunuiregistrudebazĉ(BX,BP),cucelal
unuiregistruindex(SI,DI) Ɣicuun“deplasament”(constantĉnumericĉpe8sau16
biƜispecificatĉîncuvântuldeinstrucƜiune)
· Registreledesegmentimplicitesunt:
· DS,dacĉsefoloseƔtecaregistrudebazĉBX
· SS,dacĉsefoloseƔteBPîncombinaƜiecuSisauDI
DS/SS
AF
AS
BX/BP
InstrucƜiune
OPERAND
AE
COD_OP “deplasament”
SI/DI
290
ADRESAREINDEXAT ADRESAREINDEXATb bIBAZAT IBAZAT
· iniƜial :
AX=xxxxh
BX=0100h
SI=0018h
MEM=2FB9h
· final:
AX=2FB9h
BX=0100h
SI=0018h
MEM=2FB9h
movax,[bx][si]
movax,[bx][si][7]
movax,[bx+si+7]
movax,[bp+di].7
CS:IP 8B
05E2
Memoria
principalĉ
40 CS:(IP+1)
AX
00
ͼ
ͼ
ͼ
DS:0000
DS:011F
AS
AF
DS
AE
0100
SI
07
CS:(IP+2)
B9
2F DS:0120
0018
BX
291
ADRESAREAEXPLICIT ADRESAREAEXPLICIT
· Uzual,acestmoddeadresaresefoloseƔtelaimplementareainstrucƜiunilordesalt
relativînprogram.
· Adresarerelativĉlacontoruldeprogram,PC(IP):AE=[PC+d]
· Operandulesteoconstantĉ(pozitivĉsaunegativĉ)– “offset” – reprezentând
diferenƜaîntreadresainstrucƜiuniicurenteƔiainstrucƜiuniiurmĉtoare
· OperandulnuesteexplicitîncuvântuldeinstrucƜiuneciestecalculatdecĉtre
programulasamblor
CS
AF
AS
InstrucƜiune
OPERAND
AE
COD_OP “offset”
IP
d(±)
AE=[IP+d]
292
AD ADRE RESARERELATIV SARERELATIV
CS:(IP+0)
CS:(IP+1)
CS:(IP+2)
CS:(IP+3)
CS:(IP+4)
CS:(IP+5)
CS:(IP+6)
CS:(IP+7)
CS:(IP+8)
CS:(IP+9)
CS:(IP+10)
CS:(IP+11)
CS:(IP+12)
CS:(IP+13) C3
Memoriade
program
IPі IP+5
saltpozitivcu+5
8B
F6
EB
00
10
0F
05
7E
00
20
83
DB
8B movbx,ax
TST:cmpbx,20h
jleERR
addbx,10h
jmpTST
ERR:movax,bx
saltnegativcuͲ10(F6h)
IPі IP+5
293
AD ADRE RESAREAEXPLICIT SAREAEXPLICIT
· Toatemoduriledeadresarefolosescunregistrudesegmentimplicitpentrucalculul
adreseiefective:
· DS,întoatemoduriledeadrsearecenuimplicĉregistrulBP
· SS,înmoduriledeadresareceimplicĉregistrulBP
· Registrulimplictpoatefimodificatprinfolosireaprefixelor(desegment) prefixelor(desegment)
· Unprefix prefix esteunoctetplasatînainteacoduluiinstrucƜiuniicemodificamodulimplicit
deexecuƜieainstrucƜiuniicurente
InstrucƜiune
COD_OP OPERANZI PREFIX
SintaxĉinstrucƜiune CodificareinstrucƜiune
movax,[bx+7] 8B4707
movax,es:[bx+7] 268B4707
294
MODURIDEADRESAREPE32DEBI MODURIDEADRESAREPE32DEBIf fI I
ADRESAREBAZAT ADRESAREBAZATb bIINDEXATCUFACTORDESCAL IINDEXATCUFACTORDESCALb bIDEPLASAMENT IDEPLASAMENT
· AdresaefectivĉaoperanduluiesteformatĉdinconƜinutulunuiregistrudebazĉla
careseadaugĉconƜinutulunuiregistruindexînmulƜitcuunfactordescalĉ,lacarese
poateadaugaundeplasament
· Factoruldescalĉ efoarteutillaparcurgereatablourilordedatepe2sau4octeƜi,
permiƜândcaindicelelogicaltablouluisĉcoincidĉcuconƜinutulregistruluiindex
· Factoruldescalĉecodificatpe2biƜi(cuvalorileposibile0,1,2sau4)încadrul
octetuluiSIB(ScaledIndexByte) dincuvântuldeinstrucƜiune
· Exemple:
MOVEAX,[EDI*4][EBX+10h]
MOVECX,[EDI*2][EBP]
MOVEAX,TAB[ESI*4][EBX+10h] ;EDIvaconƜineindiceleelementuluidintrͲun
tabloudedate“double”
MOVEDX,TAB[ESI][EBX+5] ;pentruadresareaelementuluik,ESI=4*k
295
MODURIDEADRESAREPE32DEBI MODURIDEADRESAREPE32DEBIf fI I
ADRESAREBAZAT ADRESAREBAZATb bIINDEXATCUFACTORDESCAL IINDEXATCUFACTORDESCALb bIDEPLASAMENT IDEPLASAMENT
· Înacestcaz,adresasegmentnumaiesteconƜinutulregistruluidesegmentciadresa
debazĉconƜinutĉîndescriptoruldesegmentacĉruiadresĉedatĉderegistrul
selectordesgment
Adresadebazĉ
AF AS
EBX/EBP
InstrucƜiune
OPERAND
AE
COD_OP SIB
ESI/EDI
“deplasament”
296
ADRESAREPE32DEBI ADRESAREPE32DEBIf fI(MODPROTEJAT) I(MODPROTEJAT)
297
ARHITECTURARISC ARHITECTURARISC– – REDUCEDINSTRUCTIONSETCOMPUTER REDUCEDINSTRUCTIONSETCOMPUTER
· ObservaƜii :
– statisticile aratĉ cadeƔiprocesorul aremulte tipuri deinstrucƜiuni, programatorii
obiƔnuiesc sĉ foloseascĉ unsetlimitat deinstrucƜiuni simple
– unsetcuinstrucƜiuni complexe necesitĉ oUCPdecomplexitatehardware
ridicatĉ,ce lucreazĉ laofrecvenƜĉ mai scazutĉ
– creƔterea decomplexitate datoritĉ setului extins deinstrucƜiuni nu sejustificĉ în
cele mai multe cazuri
· Ideea :
– sĉ sesimplifice lamaximumUCPƔiimplicitsetul deinstrucƜiuni astfel încat
procesorul sĉ lucreze laofrecvenƜĉ deceas cât mai mare
· Principiu RISC:
– sacrificĉ totpentru vitezĉ
– programatorul sĉlucreze mai mult dar programul rezultat sa fiemai eficient din
punct devedere altimpului deexecuƜie
298
COMPARA COMPARAf fIE IECISC CISC / / RISC RISC
C Complex omplex I Instruction nstructionS Set etC Computer omputer
· SͲauimpusîntrͲunmomentcând
memoriaeralentĉƔifoartescumpĉ
· InstrucƜiunicuoperanziînmemorie
· Densitatemareacoduluiînmemorie
· Formatdelungimevariabilĉpentru
instrucƜiuni
· Unitatedecontrolmicroprogramatĉ
(microͲcodatĉ)flexibilĉ
· Setcomplex(extins)deinstrucƜiuniƔi
multemodurideadresare
· InstrucƜiunicomplexe
R Reduced educedI Instruction nstructionS Set etC Computer omputer
· Sereferĉlacomplexitatea
instrucƜiunilor,NUlanumĉrullor
· AcceslamemorielimitatƔilent
· Densitatemicĉacodului(programul
ocupĉmaimultspaƜiudememorie)
· Formatdelungimefixĉpentru
instrucƜiuni
· Unitatedecontrolsimplĉimplementatĉ
subformĉcablatĉ
· RelativpuƜinetipurideinstrucƜiuniƔi
puƜinemodurideadresare
· InstrucƜiunisimple
299
COMPARA COMPARAf fIE IECISC CISC / / RISC RISC
C Complex omplex I Instruction nstructionS Set etC Computer omputer
· Necesitĉfolosireaunorcircuitelogice
complexepentruimplementare
· Implementeazĉtehnicipipeline
rudimentare
· Unnumĉrrelativmicderegistreîn
interiorulUCP
· ExistainstrucƜiunicomplexedemare
eficienƜĉ,daruneoriacesteasuntrar
utilizatedecĉtrecompilatoare
R Reduced educedI Instruction nstructionS Set etC Computer omputer
· Hardwaresimplificatї tehnicide
pipelineing(execuƜiaînparalela
operaƜiilor)maiuƔordeimplementat
· ExecuƜiainstrucƜiunilorîntrͲunsingur
cicluprintehnicipipelineeficiente
· Unnumĉrrelativmarederegistreîn
interiorulUCP
· Utilizareacompilatoarelor
optimizatoareͲ pentruaoptimiza
performanƜelecoduluiobiect.
300
RISC/CISC RISC/CISC– – AVANTAJE AVANTAJEb bIDEZAVANTAJE IDEZAVANTAJE
· · RISC RISC
E frecvenƜamai maredelucru
E mai multe instrucƜiuni executate în
unitatea detimp
E obligĉ programatorul sĉ lucreze eficient
E programexecutabil mai scurt (timp Ɣi
spaƜiu)
· · CISC CISC
E uƔordeprogramat,timp mai scurt
pentru programare
E compilatoarele delimbaje denivel înalt
sescriu mai usor
E potfi implementate uƔorstructuri
complexe dedatesi deprogram
· · RISC RISC
E dificil deprogramat lanivel de
asamblare,timp mai lungpentru
dezvoltarea unei aplicaƜii
· · CISC CISC
E timp deexecuƜie mai marepentru
programe
E codmai lung
E unitate centralĉ mai complexĉ,care
consumĉ mai mult
C Concluzie:
– combinarea celor 2tehnici incadrul aceluiaƔi procesor:
+arhitectura Pentium:RISCîninterior,CISCînexterior
301
CODIFICAREAINSTRUC CODIFICAREAINSTRUCf fIUNILOR IUNILOR
· CodificareainstrucƜiunilorpresupuneasocierealorcuuncodnumericunic codnumericunic numit
uneoriƔi“cuvântdeinstrucƜiune”
· Codificareaaminstruc minstrucƜ Ɯiuni iuniimplicĉdeciimplementareaunorcoduripelungimede
n=log n=log
2 2
(m)bi (m)biƜ Ɯi i
· PrincipaleleaspecteînproiectareaarhitecturiiunuisetdeinstrucƜiuni:
÷ Implementareahardware
÷ LungimeainstrucƜiunilor
÷ FlexibilitateasetuluideinstrucƜiuni
302
IMPLEMENTAREAHARDWAREAINSTRUC IMPLEMENTAREAHARDWAREAINSTRUCf fIUNILOR IUNILOR
· CodificareainstrucƜiunilornecesitĉimplementarehardware implementarehardware :ex.decodificatoare
pentruselecƜiaƔicomandacircuitelorcombinaƜionalecerealizeazĉfuncƜiileƔi
operaƜiiledorite
· Unsetdeminstruc minstrucƜ Ɯiuni iuniimplicĉcoduripelungimeden=log n=log
2 2
(m)bi (m)biƜ Ɯi i(oinstrucƜiune
peoctetpoatecodificapânala256instrucƜiunidiferite)
· DivizareacoduluiinstrucƜiuniiînsub subͲ Ͳcoduri coduri– – instruc instrucƜ Ɯiunile iunile suntgrupatepefamilii
(tipurideoperaƜiiefectuate)pentrusimplificareacircuitisticiideimplementare
hardware
· · MOVAX,BX MOVAX,BX ƔiMOVCX,DX MOVCX,DX suntinstrucƜiunidiferitedarambeletransferĉdateîntre
registreleprocesorului.DiferenƜaconstĉînoperanziisursĉƔidestinaƜie
Câmpcodificare
instrucƜiune
Câmpcodificare
operanzi
CuvântdeisntrucƜiune
303
IMPLEMENTAREAHARDWAREAINSTRUC IMPLEMENTAREAHARDWAREAINSTRUCf fIUNILOR IUNILOR
· · Exempludeimplementarehardwareacircuituluidedecodificarea Exempludeimplementarehardwareacircuituluidedecodificarea unuisetde8 unuisetde8
instruc instrucƜ Ɯiuni iuni
· SpecificaƜiilesetuluideinstrucƜiuni :
÷ 8instrucƜiuni:MOV,ADD,SUB,MUL,DIV,AND,OR,XOR
÷ fiecareinstrucƜiuneacceptĉ2operanzi:sursĉƔidestinaƜie
÷ operandulsursĉdesemneazĉ4entitĉƜi:registreleAX,BX,CX,DX
÷ operanduldestinaƜiedesemneazĉ4entitĉƜi:registreleAX,BX,CX,DX
· ConfiguraƜiacircuituluidedecodificare :
÷ undecodificatorcu3liniideadresĉpentrudecodificareacleloroptinstrucƜiuni
÷ douĉdecodificatoare2/4pentruselecƜiaregistrelorsursĉƔidestinaƜie
÷ necesitĉuncodpe7biƜi
304
IMPLEMENTAREAHARDWAREAINSTRUC IMPLEMENTAREAHARDWAREAINSTRUCf fIUNILOR IUNILOR
0 0 0 0 0 0 1
A B C
Q
0
Q
1
Q
2
Q
3
Q
4
Q
5
Q
6
Q
7
B
A Q
0
Q
1
Q
2
Q
3
D
E
C
O
D
E
R
3/8
DECODER
2/4
B
A Q
0
Q
1
Q
2
Q
3
DECODER
2/4
U
A
L
MOV
ADD
SUB
MUL
DIV
AND
OR
XOR
AX
R
e
g
i
s
t
r
e

i
n
t
e
r
n
e

U
C
P
BX
CX
DX
AX
BX
CX
DX
M
a
g
i
s
t
r
a
l
a

i
n
t
e
r
n
ĉ

U
C
P
SelecƜie
registru
SelecƜiecircuitisticĉ
pt.execuƜie
operaƜie
CodinstrucƜiune(Cod_operaƜie:Operanzi)
305
LUNGIMEAINSTRUC LUNGIMEAINSTRUCf fIUNILORVS.COMPLEXITATE IUNILORVS.COMPLEXITATE
· LungimeauneiinstrucƜiunitrebuiesĉfieunmultipluîntreg(nuneapĉratpar)al
unitĉƜiideadresareamemoriei
· ProcesoareleRISCacceseazĉmemoriaînbocuride32sau64debiƜiaƔaîncât
codificareainstrucƜiunilorsevafacepeminimk*32debiƜi(cuk,numĉrîntreg)
· 8086poateaccesamemoriapeoctetї n=k*8
· Tipic,instrucƜiunileprocesorului8086auolungimedela1la16octeƜi
· UnaldoileafactorcecondiƜioneazĉlungineainstrucƜiunilorestedimensiunea
operanzilor
· LaarhitecturileRISCtoƜioperanziisuntconƜinuƜiexplictîncodulinstrucƜiunii.Aceste
arhitecturiutilizeazĉinstrucƜiunidelungimefixĉ cepermitodecodificaremaiuƔoarĉ
înstructuridetippipeline
· ArhitecturileCISC(8086)implementeazĉinstrucƜiunidelungimevariabilĉ,ceeace
permiteoptimizareaacestora(astfel,instrucƜiunilefrecventevorficodificatepeun
numĉrmaimicdeocteƜi).Încontrapartidĉ,tehnicilepipelinesuntdificilde
implementatƔi,caurmare,rudimentare
306
FORMATULUNEIINSTRUC FORMATULUNEIINSTRUCf fIUNI80x86 IUNI80x86
PREFIX PREFIX
[0Ͳ4octeƜi]
modificĉmodul
deexecuƜiea
uneiinstrucƜiuni
standard
CODOPERA CODOPERAf fIE IE
[1Ͳ2octeƜi]– implict0Fh
defineƔteoperaƜiarealizatĉla
execuƜiainstrucƜiunii(dacĉestepe
2octeƜi,primulreprezintĉprefixul
deextensieacodului)
MOD MODͲ ͲREG REGͲ ͲR/M R/M
[1octet]Ͳ opƜional
specificĉmoduldeadresareƔi
dimensiuneaoperanzilor
(doarlainstrucƜiunilece
folosesccaoperanziregistre
saumemoria)
SIB SIB
[1octet]Ͳ opƜional
doarlainstrucƜiunile
cefolosescmodulde
adresareindexatĉƔi
bazatĉ
DEPLASAMENT DEPLASAMENT
[0,1,2sau4octeƜi]
specificĉdeplasamentul
pentrucalculadresei
efectiveaoperanzilordin
memorie
DATIMEDIAT DATIMEDIAT
[0,1,2sau4octeƜi]
esteoconstantĉ
numericĉpentru
instrucƜiunilecu
operanziimediaƜi
307
CODIFICAREAINSTRUC CODIFICAREAINSTRUCf fIUNIILA80x86 IUNIILA80x86
· 8086executĉoperaƜiicodificatepe1sau2octeƜi:
· · codopera codoperaƜ Ɯiestandard iestandard –1octetcepermitecodificareaunuisetdepânĉla256 de
operaƜiidiferite(clasedeinstrucƜiuni)
· · codopera codoperaƜ Ɯieextins ieextins – 1octetstandard+1octetdeprefix (implicit0Fh)cepermite
extensiasetuluideinstrucƜiunilaunnumĉrde512 clase
· Ex: CoduloperaƜieideadunareADD ADD
0 0 0 0 0 0 d s
ADDopcode
d– directionbit
d=0:destinaƜiaestelocaƜiede
sauregistru(fc.deR/M)
d=1:destinaƜiaesteunregistru
s– sizebit
s=0:operanzipe8biƜi
s=1:operanzipe16/32biƜi
308
CODIFICAREAOPERANZILORLA80x86 CODIFICAREAOPERANZILORLA80x86
· Octetul “mod modͲ Ͳreg regͲ Ͳr/m r/m” ” specificĉmoduldeadresare
· CâmpulREGcodificĉunuldintreregistreleUCPcepoatefisursĉsaudestinaƜieîn
funcƜiedebituldedirecƜie(d d)dincoduloperaƜiei;registrulesteadresatpeoctetsau
cuvântfuncƜiededimensiuneaoperanzilor(specificatĉdebituls s dincoduloperaƜiei)
· CâmpulMODspecificĉnoduldeadresare
· CâmpulR/M (împreunĉcuMOD)specificĉtipulceluideͲaldoileaoperandal
instrucƜiunii(registrusaulocaƜiedememorie)Ɣimoduldeadresareaacestuia
MOD REG R/M
00 adresareindirectĉ
01 adresareindexatĉ8Ͳbitoffset
10 adresareindexatĉ16Ͳbitoffset
11 adresaredirectĉlaregistru
000 AL/AX
001 CL/CX
010 DL/DX
011 BL/BX
100 AH/SP
101 CH/BP
110 DH/SI
111 BH/DI
309
CODIFICAREAOPERANZILORLA80x86 CODIFICAREAOPERANZILORLA80x86
· Octetul “SIB SIB” ” – ScaledIndexByteefolositîncazulmoduluideadresarebazatĉƔi
indexatĉcufactordescalĉspecificmoduluiprotejatlaprocesoarelepe32debiƜi
· CâmpulINDEXspecificĉregistrulindexfolosit
· CâmpulBAZspecificĉregistruldebazĉ
· CâmpulFACTORspecificĉunfactordemultiplicareavaloriiconƜinutĉînregistrul
index(poateluavalorile0,1,2sau4)
FACTOR INDEX BAZ
310
EXEMPLEDECODIFICAREAOPERA EXEMPLEDECODIFICAREAOPERAf fIEIDEADUNARE IEIDEADUNARE
0 0 0 0 0 0 0 0
ADDCL,AL=00C1hsau 02C8h
1 1 0 0 0 0 0 1
CodOperaƜie ModͲ RegͲ R/M
0 0 0 0 0 0 1 1
ADDAX,BX=03C3h
1 1 0 0 0 0 1 1
CodOperaƜie ModͲ RegͲ R/M
0 0 0 0 0 0 1 1
ADDAX,[SI+9]=034609h
0 1 0 0 0 1 1 0
CodOperaƜie ModͲ RegͲ R/M
0 0 0 0 1 0 0 1
Deplasament
1 0 0 0 0 0 0 0
ADDBL,10=80C30Ah
1 1 0 0 0 0 1 1
CodOperaƜie ModͲ RegͲ R/M
0 0 0 0 1 0 1 0
Datĉimediatĉ
Î ÎNTRERUPERI NTRERUPERIb bIEXCEP IEXCEPf fII II
312
Î ÎNTREUPERI NTREUPERIb bIEXCEP IEXCEPf fII II
¯ Apeluldeprocedurĉ.Utilizareastiveiînapeluriledeprocedurĉ
¯ Rolulîntreruperilor.Tipurideînterupere
¯ ExcepƜii(înteruperisoftware)
¯ Cererideîntrerupere.TransefruldedatedelainterfeƜeleI/O
¯ IdentificareaƔivectorizareaîntreruperilor
¯ Controleruldeîntreruperi
¯ SecvenƜadetratareauneiînteruperi
¯ Redirectareaîntreuperilorsoftware
¯ Programareaînteruperilorhardware
313
APELULDEPROCEDUR APELULDEPROCEDUR
· Oprocedurĉ esteosecvenƜĉdeinstrucƜiuniapelatĉîntrͲunpunctalalteia,executatĉ,
dupĉcarearelocrevenireaînsecvenƜaapelantĉ,laadresaimediaturmĉtoareceleiîn
caresͲafĉcutapelarea
· Laapeluldeprocedurĉunitateadecontrolsalveazĉautomatînstivĉ adresade
revenire conƜinutĉînregistruluicontordeprogram(CS:IP)
· DupĉsalvaresefaceîncĉrcareaPC(IP)cuadresalacaresefacesaltul (adresaunde
începeprocedura)
· ProceduraseterminĉcuoinstrucƜiunedesaltdetipRET (RETurn)princarese
produceîncĉrcareaautomatĉaPCcuadresaderevenirelaprogramulîntrerupt
· Altesalvĉri/restaurĉrialevariabilelorcontextuluiîntreruptsevorefectuadecĉtre
programatorîncadrulprocedurii,prinintermediulunorinstrucƜiunideînscriere/
extrageredinstivĉ(atenƜieLIFO):PUSH,POP
314
APELULDEPROCEDUR APELULDEPROCEDUR
PP PROC1 PROC2
;instrPP b:
b+1:
pushAX
pushBX
c:
c+1
pushAX
pushDX
.
.
.
;instrP1 ;instrP2
a: CALL PROC1
.
.
.
.
.
.
a+3: instrPP_nxt bb: CALL PROC2 ;instrP2
.
.
.
bb+3: instrP1_nxt
.
.
.
end bb+4:
bb+5:
popBX
popAX
RET cc:
popDX
popAX
RET
t
2
ї
t
0
ї
t
1
ї
t
4
ї
t
3
ї
315
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
xͲ1:
xͲ2:
xͲ3:
xͲ4:
xͲ5:
xͲ6:
xͲ7:
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x
PC=a
316
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2 :
xͲ3:
xͲ4:
xͲ5:
xͲ6:
xͲ7:
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2
PC=a b
317
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4 :
xͲ5:
xͲ6:
xͲ7:
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4 ...
PC=a b b+1 ...
318
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4 :
xͲ5:
xͲ6:
xͲ7:
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4
PC=a b b+1...bb
319
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4:
xͲ5:
xͲ6 :
xͲ7:
AL
AH
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6
PC=a b b+1...bbc
320
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4:
xͲ5:
xͲ6:
xͲ7: DL
DH
AL
AH
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=xͲ8:
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8 ...
PC=a b b+1...bbc c+1 ...
321
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4:
xͲ5:
xͲ6 :
xͲ7:
AL
AH
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6
PC=a b b+1...bbc c+1...cc
322
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4 :
xͲ5:
xͲ6:
xͲ7:
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6 xͲ4
PC=a b b+1...bbc c+1...cccc+1
323
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4 :
xͲ5:
xͲ6:
xͲ7:
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6 xͲ4xͲ4
PC=a b b+1...bbc c+1...cccc+1cc+2
324
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2:
xͲ3:
xͲ4 :
xͲ5:
xͲ6:
xͲ7:
BL
BH
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6 xͲ4xͲ4xͲ4
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1
325
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
xͲ1:
xͲ2 :
xͲ3:
xͲ4:
xͲ5:
xͲ6:
xͲ7:
AL
AH
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6 xͲ4xͲ4xͲ4xͲ2
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2
326
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
xͲ1:
xͲ2:
xͲ3:
xͲ4:
xͲ5:
xͲ6:
xͲ7:
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6 xͲ4xͲ4xͲ4xͲ2 x
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2bb+3
327
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
xͲ1:
xͲ2:
xͲ3:
xͲ4:
xͲ5:
xͲ6:
xͲ7:
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6 xͲ4xͲ4xͲ4xͲ2 x x
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2bb+3bb+4
328
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
xͲ1:
xͲ2:
xͲ3:
xͲ4:
xͲ5:
xͲ6:
xͲ7:
· PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
· Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
· Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x xͲ2xͲ4...xͲ4xͲ6xͲ8...xͲ6 xͲ4xͲ4xͲ4xͲ2 x xx
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2bb+3bb+4a+1
329
Î ÎNTRERUPEREAUNUIPROGRAM NTRERUPEREAUNUIPROGRAM
· În timpul rulĉrii programelor pot apĉrea unele evenimente neobiƔnuite (excepƜii) sau
semnaleexterneprovenitededispozitivedeI/O
· Acesteevenimentepotconducelasuspendareatemporarĉ aprogramuluiaflat
curentînexecuƜie
· ToateevenimenteleprodusedecondiƜiineobiƔnuite/neaƔteptatepentruprogramul
curentînexecuƜiesuntnumitelamodulgeneral"î întreruperi ntreruperi“
· FiecĉreiîntreruperiîiesteasociatuncodnumitƔitipsau nivelalîntreruperii
· Procesorul8086acceptĉ256nivelurideîntrerupere
· ÎntreruperileproducîntrerupereaprogramuluiƔideviereacĉtreorutinĉspecialĉde
tratareaevenimentului"întreruptor“numitĉrutinĉdetratare rutinĉdetratare aînreruperii(RTI)
· MecanismulprincaresefaceacesttransfercĉtreRTIestedetipapeldeprocedurĉ
· DupĉexecuƜiarutineirespective,programulrevinelaexecuƜiainstrucƜiunilor
programuluiiniƜialdinpunctulîncaresͲaprodusevenimentul
330
TIPURIDE TIPURIDEÎ ÎNTRERUPERI NTRERUPERI
Cereride Cereri de î întrerupere ntrerupere
· suntevenimentegeneratedinexteriorulUCP carecertratare
· suntsemnaleelectriceaplicatelaintrĉridedicatealemicroprocesorului(INT,NMI)
fiind astfel numiteƔiîntreruperihardware
· suntasincrone cuprogramulrulat(decivorfiarbitratefiedeuncontrolerde
întreruperifiedeînsuƔiprocesor)
· sursedeîntreruperi :
– echipamenteperiferice carecerserviciidelaUCP(cereredetransferdedate,
sauinformĉricuprivirelastareaperifericului)–mouse,tastaturĉ,HDD,reƜea
– circuitespecializate pentrusupraveghereafuncƜionĉriinormaleacomponentelor
hardware(eroaredeparitatelacitireamemoriei,eroaredeparitatepe
magistralĉ,cĉdereaiminentĉatensiuniidealimentareetc.)
331
TIPURIDE TIPURIDEÎ ÎNTRERUPERI NTRERUPERI
Î Înteruperisoftware nteruperisoftware
· evenimenteleîntreruptoare(carecertratare)suntgeneratedeinstrucƜiunile
programuluirulat
· folosite pentru apelul unor funcƜiialesistemului deoperare – apeluri sistem (INT
21H) – saualesistemuluideintrare– ieƔire (întreruperiBIOS)
· suntdecisincrone cuprogramulcevafiîntrerupt
· producdevieri/capcane("traps")
Excep ExcepƜ Ɯii ii
· indicĉsituaƜiideexcepƜiecumarfi:
– întâlnireaunorinstrucƜiunidecontrolilegale înprogramulutilizator;
– încercareadeviolareasistemuluideprotecƜie ainformaƜiilordinmemorie;
– condiƜiiaritmeticespeciale(depĉƔiri,împĉrƜirelazero);
– încercareadeaaccesaunsegment/paginĉde informaƜie (instrucƜiuni,date)
nerezidentĉ înmemoriaprincipalĉ.
332
CLASIFICAREEXCEP CLASIFICAREEXCEPf fII(INTEL) II(INTEL)
DupĉmoduldemanifestareƔitratareaexcepƜiilor,Intel împarteexcepƜiileîn
urmĉtoarelecategorii:
÷ devieri('traps')
Odevierepoatefitratatĉdoardupĉ terminareacicluluideinstrucƜiunecurent.Dupĉ
trataredevierile producreluareaprogramuluiîntreruptîncepândcuinstrucƜiunea
urmĉtoare.
÷ erori('faults')
SuntexcepƜiicesuntdetectatefieînaintede începutulexecuƜieiinstrucƜiunii,fieîn
timpulexecuƜieiacestora. DacĉerorilesedetecteazĉîntimpulexecuƜieiunei
instrucƜiuni, dupĉtratareaerorii,reluareaprogramuluisevafaceîncepândcu
instrucƜiuneaîntreruptĉ.
÷ eƔecuriͲterminĉrianormale('abort')
Producabandonarea procesului.EƔecurilesuntutilizatepentruatrataerorisevere
cumsuntvaloriilegaleƔi/sauinconsecventeîntabelele sistemuluisaueroride
hardware,accesullalocaƜiidememorienepermise...
333
SISTEMULDE SISTEMULDEÎ ÎNTRERUPERIALFAMILIEIDEPROCESOAREINTELX86 NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86
Întreruperi interne (software – generate prin instrucƜiuni speciale) :
– INTn întreruperesoftwaredetipn– vectordeîntreruperelaadresa4*n
– INTO INTerruptonOverflow – întreruperedenivel4generatĉcândapare
depĉƔire(OF=1)
– DIV/IDIV întreruperedetip0generatĉcânddestinaƜiaspecificatĉîn
instrucƜiunepentruamemoracâtulîmpĉrƜiriinuaredimensiunea
necesarĉ(prioritatemaximĉ)
– TF=1 întreruperedetip1(execuƜiepascupas)– uPgenereazĉautomat
câteoîntreruperedupĉfiecareinstrucƜiune(depanareaprogramelor)
– INT3 “breakpoint” – întrerupereexecuƜiprogramîntrͲunpunct
predefinitpentruaefectuaanumiteprocesĉrispeciale(depanare)
334
SISTEMULDE SISTEMULDEÎ ÎNTRERUPERIALFAMILIEIDEPROCESOAREINTELX86 NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86
Întreruperi externe (hardware)–8086prezintĉ2intrĉripentrucererideîntrerupere:
· NMI(NonͲMaskableInterrupt) – întreruperenemascabilĉ(nedezactivabilĉ)utilizatĉ
pentruasemnalaapariƜiaunuieveniment“catastrofal” :
– cĉdereatensiuniidealimentare
– erorideacceslamemorie
– erorideparitatepemagistralĉ
· INT(INTerrupt) – cereredeîntreruperemascabilĉ(dezactivabilĉ)
– provenitĉdeladispozitiveexterne(tastaturĉ,mouse,porturi,etc.)
– suntîntreruperihardwarecontrolatedeuncircuitspecializat(controlerde
întreruperi– intel8259A)careacceptĉ8cererideîntrerupere
– validarea/invalidarea întreruperilor sefaceprinindicatoruldecondiƜieIF
(InterruptFlag)folosindinstrucƜiunispecifice:
• STI (SeT Interrupt) – IF = 1– validare
• CLI (CLearInterrupt) – IF = 0– invalidare (mascare)
335
SISTEMULDE SISTEMULDEÎ ÎNTRERUPERIALFAMILIEIDEPROCESOAREINTELX86 NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86
Nivel Tipintrerupere Semnal Controller Cauza intreruperii
00h interna Ͳ Ͳ impartire cuzero
01h interna executie pascupas
02h interna NMI intrerupere nemascabila
03h interna breakpoint
04h interna depasire (overflow)
05h software tiparire ecran
06h interna rezervat
07h interna rezervat
08h externa (hardware) IRQ0 1 ceas sistem
09h externa (hardware) IRQ1 1 tastatura
0Ah externa (hardware) IRQ2 1 cascadare controlor 2
0Bh externa (hardware) IRQ3 1 COM2(portserial)
0Ch externa (hardware) IRQ4 1 COM1(portserial)
0Dh externa (hardware) IRQ5 1 LPT2(imprimanta)
0Eh externa (hardware) IRQ6 1 controlor dediscflexibil
0Fh externa (hardware) IRQ7 1 LPT1(imprimanta)
10h software interfata video
11h software det.configuratie sistem
12h software det.dimensiune memorie
13h software interfata dedisc
14h software interfata seriala
15h software servicii extinse
16h software interfata detastatura
17h software interfata deimprimanta
18h software saltROMͲBasic
19h software incarcator (Bootstrap)
1Ah software ceas detimp real
1Bh software apasare CTRL/C
1C software ladispozitia utilizatorului
1D poantor tabela deparametri video
1E poantor tabela deparametri disc
1F poantor tabela decaractere grafice
20h software terminare program
21h software apeluri sistem (DOS)
25Ͳ26h software citire/scriere fizica disc
27h software TSR
33h software suport mouse
70h externa (hardware) IRQ8 2 ceas detimp real
71h externa (hardware) IRQ9 2 redirectare IRQ2
72h externa (hardware) IRQ10 2 liber
73h externa (hardware) IRQ11 2 liber
74h externa (hardware) IRQ12 2 liber
75h externa (hardware) IRQ13 2 coprocesor aritmetic
76h externa (hardware) IRQ14 2 controlor discfix
77h externa (hardware) IRQ15 2 liber
336
TABELAVECTORILORDE TABELAVECTORILORDEÎ ÎNTRERUPERE NTRERUPERE
· esteunsetde256devectoride
întrerupere(VI)conƜinândfiecare
adresauneirutinedetratareRTI
· TVIocupĉprimulkBdinmemoria
principalĉînspaƜiuldeadresefizice
0h...003FFh
· fiecarevectordeîntrerupereocupĉ4
octeƜi(pointerCS:IP)
Deplasament
Adresasegment
TVI TVI
1F 1F
00000h
003FFh
A5 A5
35 35
A1 A1
CS
IP
adresaVI
n
=4xn
adresaRTI
n
=AF(CS:IP)
· TVI (tabelavectorilordeînrerupere)asigurĉlegĉturadintretipul/nivelulîntreruperii
Ɣirutinadetratareasociatĉ(procedurĉdetipfar)
337
TRATAREAUNEI TRATAREAUNEIÎ ÎNTERUPERISOFTWAREDENIVELN NTERUPERISOFTWAREDENIVELN
0
*4
Memoriaprincipalĉ
Rutinadeîntrerupere
Tabeladeîntreruperi(TVI)
(256deintrĉri× 4octeƜi)
Program
INT INT n
1kB
<adr_seg>:<offset>
1MB
338
TRATAREAUNEI TRATAREAUNEIÎ ÎNTERUPERI NTERUPERI
UCPrĉspunde laocerere deîntrerupere (hardwaresau software)Ɣi trateazĉ
evenimentul ce aprodus întreruperea în paƔi succesivi carepotfi rezumaƜi astfel :
1. UCPsalveazĉ în stivĉ conƜinutul registrului destareprogram (indicatoriidecondiƜie)
2. UCPidentificĉ sursa ce aprodus întreruperea :
÷ Identificare prin intrare separatĉ acererilor deîntrerupere hardware (INT,NMI)
÷ Identificare printrͲo informaƜie furnizatĉ deevenimentul întreruptor
÷ Identificare prin testarea bistabililordecondiƜie
÷ IndentificareprinconƜinutulinstrucƜiuniicaregenereazĉîntrerupereasoftware
3. UCPsalveazĉ înstivĉadresa derevenire laprogramul întrerupt – adresa instrucƜiunii
urmĉtoareceurmaafiexecutatĉ(conƜinutulregistrelorCSƔiIP)
4. UCPcalculeazĉ adresa unde segĉseƔte RTI (<nivel_intrerupere>*4)
5. SeîncarcĉregistreleCS:IPcuadresarutineideîntrerupere dintabeladeîntreruperi
delaadresacalculatĉlapasulanterior
6. Seexecutĉsalt laRTIƔi execuƜie
7. Revenire laprogramul întrerupt prin restaurareadinstivĉa contorului de program
339
ORDINEADEPRIORITATE
· Încazulîntreruperilormultiple,simultanesausuccesive,subsistemuldeîntreruperi
trebuiesĉrealizezeunarbitrajservindîntotdeaunacererilecuprioritatemaimare
· SistemuldearbitrarepermitecaoRTIsĉfieîntreruptĉdecerereprioritarĉ
· ArbitrareapoateficontrolatĉdirectdecĉtreUCP(întreruperiBIOS)sauuncontroler
deîntreruperiextern(întreruperimascabile)
· Controlerul deîntreruperi8259A deserveƔtecereriledeîntrerupereînfuncƜiede
prioritatea prioritatea acestora:
I. INTn – întreruperileinterne(oricareîntrerupereinternĉ,exceptândINT1sunt
prioritarefaƜĉdeoriceîntrerupereexternĉ)
i. întrerupereadetip0(Diviziunecu0–prioritatemaximĉ)
ii. întrerupereadetip3(Breakpoint)
iii. întrerupereadetip4(Overflow–depĉƔiredecapacitate)
iv. întreruperilesoftwaredetipn(înordineacrescĉtoarealuin> 5)
II. NMI (tip2 – întrerupereaexternĉnemascabilĉ)
III. IRQi(InterruptReQuest) – întreruperiexternemascabile.Prioritateaacestoraeste
stabilitĉprinvectorizareasistemuluideîntreruperi(vectorizareaserealizeazĉprin
moduldeconectareadispozitivelorinteruptoarelaintrĉrilecontroleruluide
întreruperi8259A)
IV. INT1 – întrerupereainternĉdetip1(execuƜiepascupas)
340
SISTEMVECTORIZATDE SISTEMVECTORIZATDEÎ ÎNTRERUPERI NTRERUPERI
INT
INTA
NMI
8086
INTR
8259A
IRQ0
IRQ1
IRQ2
IRQ7
.
.
.
INTA
INTR
8259A
IRQ0
IRQ1
IRQ2
IRQ7
.
.
.
INTA
InterfaƜĉI/O
(ceassistem)
InterfaƜĉI/O
(tastatura)
IRQ2
IRQ3
IRQ4
IRQ9
.
.
.
IRQ14
IRQ0
IRQ1
D15:D0
341
STRUCTURAINTERNACONTROLERULUIDE STRUCTURAINTERNACONTROLERULUIDEÎ ÎNTRERUPERI NTRERUPERI
· IMR –InterruptMaskRegister(mascareaselectivĉacererilordeîntrerupere)
· IRR –InterruptRequestRegister(memoreazĉcereriledeîntr.semnalizatepeIRQi)
· ISR – InterruptServiceRegister(mem.nivelulînteruperilorîncursdedeservire)
· CMP –ComparatoruldeprioritĉƜi(comparĉprioritateaîntreruperiicurentecuceaîncursde
deservire)
Logicade
conectare
magistralĉ
INTR
i8259A i8259A
IRQ0
IRQ1
IRQ7
.
.
.
Blocde
cascadare
Buffer
Date
Dispozitivdecomandĉ
ISR CMP IRR
IMR
INTA
CAS0..2
RD
WR
A0
CS
D0..7
342
SECVENfADEDESERVIREAUNEI CERERIDE ÎNTRERUPERE
1. InterfaƜagenereazĉ o întrerupere prin activarea unui semnal IRQi cĉtre controller
2. Controllerul verificĉ dacĉ întreruperea este permisĉ Ɣinu este alta mai prioritarĉ în
cursdedeservire
3. Dacĉ întreruperea este permisĉ segenereazĉ oîntrerupere cĉtre procesor prin
activarea semnalului INTR
4. Dupĉ terminarea instrucƜiunii curente,Procesorul genereazĉ douĉ cicluri INTApt.
identificarea sursei deîntrerupere
5. Pe aldoilea ciclu controlerul pune pe liniile dedatealemagistralei vectorul
întreruperii curente
6. Procesorul foloƔeste vectorul caindexînTabela deîntreruperi pentru aciti adresa
Rutinei deîntrerupere
7. Procesorul salveazĉ pe stivĉ adresa derevenire Ɣistarea dupĉ carefaceunsaltla
Rutina deîntrerupere
8. LasfarƔitul rutinei deîntrerupere procesorul dĉ ocomandĉ cĉtre controlerpentru
încheierea întreruperii curente (EOI)
9. Laexecutia instrucƜiunii IRET(revenire dinrutina deîntrerupere)procesorul ia din
stivĉ adresa derevenire Ɣifacesaltlaaceastĉ adresa,continuând programul întrerupt
343
SCHEMDEACTIVAREA SCHEMDEACTIVAREAÎ ÎNTRERUPERILORVECTORIZATE NTRERUPERILORVECTORIZATE
344
RUTINADETRATAREAUNEI RUTINADETRATAREAUNEIÎ ÎNTRERUPERI NTRERUPERI
· RTIsedefineƔtecaoprocedurĉdetipfar
· RTIsevaîncheiacuinstrucƜiuneaIRETcare,pelângĉCSƔiIPrefaceƔiconƜinutul
registruluiindicactorilordecondiƜie(flagurile)
RUT_INTPROCFAR RUT_INTPROCFAR
;salvare ;salvareî înstivĉ nstivĉ:flaguri :flaguriƔ Ɣiregistreutilizate iregistreutilizateî încadrulsubrutinei ncadrulsubrutinei
;c ;corpulrutineidetratare orpulrutineidetratare
;r ;refacereregistredinstivĉ efacereregistredinstivĉ
IRET IRET
RUT_INTENDP RUT_INTENDP
· OrutinĉdetratarefacepartedintrͲunprogramcareoinstaleazĉ:
÷ salveazĉadresavechiirutine (ex.funcƜia35haint21h)
÷ instaleazĉnouarutinĉ (ex.funcƜia25haint21h)
· Programuldeinstalare sepoateterminaîn2moduri:
÷ prineliberareamemorieiƔistergerearutinei(înaintedecedareacontrolului
trebuiesarefacĉvectoruldeîntreruperecuadresavechiirutine)
÷ rutinadetratarerĉmânerezindentĉînmemorie– programnumitTSR
(TermianteandStayResident)
345
INSTALAREAUNEIRUTINEDETRATARE INSTALAREAUNEIRUTINEDETRATARE
· FuncƜia35haîntreruperii21h
÷ salveazĉvectoruldeîntrerupereiniƜial(aderesavechiirutinedetratare)
÷ cere: AH 35h
AL numĉrulîntreruperii
÷ returneazĉ:ES:BX adresarutineideîntrerupere
· FuncƜia25haîntreruperii21h
÷ instaleazĉorutinĉdeîntrerupere(repoziâionareavectoruluideîntrerupere)
÷ cere: AH 25h
AL numĉrulîntreruperii
DS:DX adresadeînceputarutineidetratarecareseinstaleazĉ
· FuncƜia31haîntreruperii21h
÷ salveazĉvectoruldeîntrerupereiniƜial(aderesavechiirutinedetratare)
÷ cere: AH 31h
AL niveluldeeroare
DX dimensiuneaspaƜiuluidememoriecevaramânerezident
(seexprimĉînparagrafeacâte16octeƜi)
346
INSTALAREAMANUALAUNEIRUTINEDETRATARE INSTALAREAMANUALAUNEIRUTINEDETRATARE
· SefaceprinmodificareaintrĉriiTVI (vectoruluideîntrerupere)corespunzĉtoare
subrutineisistemdetratareaîntreruperiirespectivecuadresanoiirutinedefinitede
utilizator
· Exemplu:DeturnareaîntreruperiideceasIRQ0(nivel8)datĉdeNumĉrĉtorul0al
ceasuluiprogramabil8253caregenereazĉ~ 18întreruperi/sec.
cli ;activeazĉîntreruperilemascabile
xor AX,AX
mov ES,AX
mov AX,ES:[0024H] ;salveazĉadresarutineioriginaledinVIdela
mov int8_old_off,AX; adresa0000:0024
mov AX,ES:[0026H]
mov int8_old_seg,AX
mov AX,OFFSETint8_new ;adresanoiirutinedetratare(int8_new)
mov ES:[0024H],AX ;rescrievectoruldeîntreruperedelaadresa
mov ES:[0026H],CS ; 0000:0024cuadresarutineiint8_new
sti ;dezactiveazĉîntreruperilemascabile
347
REDIRECATREAUNEI REDIRECATREAUNEIÎ ÎNTRERUPERI NTRERUPERI
VECT DW 2DUP(?) ;aici sesalveazĉ vechiul vectorde întrerupere
MOV AH,35h ;35hͲfuncƜiesistem pentru salvarea vectorului deîntrerupere
MOV AL,n ;n– nivelul deîntrerupere redirectat
INT 21h ; apelul funcƜiei sistem returneazĉ în ES:BXadresa rutinei delanivelul n
MOV VECT,BX ;salvare adresĉ offset
MOV BX,ES
MOV VECT+2,BX ;salvare adresĉ segment
MOV AX,SEGRUT_INT
MOV DS,AX ; DS<Ͳ adresa desegmentanoii rutine de tratare aîntreruperii
MOV DX,OFFSETRUT_INT ;DX<Ͳ adresa deoffsetanoii rutine deîntrerupere
MOV AH,25h ; 25hͲ funcƜia descriere vector;în DS:DXsepune adresa rutinei deîntrer.
MOV AL,n ; n– nivel deîntrerupere
INT 21h ; apelul funcƜiei sistem
;PROGRAM
MOV AX,VECT+2 ;refacerea adresei
MOV DS,AX
MOV DX,VECT
MOV AH,25h ;funcƜia descriere vector deîntrerupere
MOV AL,n ;n– nivel întrerupere
INT 21h ;înscrierea vechiului vectorîn tabela deintrerupere
348
PROGRAMAREAUNEI PROGRAMAREAUNEIÎ ÎNTRERUPERIHARDWARE NTRERUPERIHARDWARE
INTA00EQU 20H ;adresa portului 0dincontrolorul deîntreruperi
INTA01EQU 21H ;adresa portului 1dincontrolorul deîntreruperi
EOI EQU 20h ;comanda deincheiere intrerupere
MASCA EQU 11011111B ;mascĉ pentru validarea intrĉrii nr.5
MASCA1EQU 00100000B ;mascĉ pentru invalidarea intrĉrii nr.5
………..
;initializare întrerupere
CLI ;invalidarea întreruperilor mascabile
MOV AX,SEGRUT_INT
MOV DS,AX
MOV DX,OFFSETRUT_INT
MOV AH,25h ;25hͲ funcƜia descriere vector
MOV AL,5+8 ;5+8=nivel deîntrerupere programat;adresa debazĉ aprimului
; controlerdeîntreruperi este 8
INT 21h ;apel defuncƜie sistem
MOV DX,INTA01
IN AL,DX ;citire registru demascĉ
AND AL,MASCA ;Ɣterge bitmascĉ pt.întreruperea 5
OUT DX,AL ;validare intrare deîntrerupere
STI ;validare întreruperi mascabile
……….
;program
………
349
PROGRAMAREAUNEI PROGRAMAREAUNEIÎ ÎNTRERUPERIHARDWARE NTRERUPERIHARDWARE
;sfîrƔit program
CLI
MOV DX,INTA01
IN AL,DX ;citire registru demascĉ
OR AL,MASCA1 ;seteazĉ bitul mascĉ pt.întreruperea 5
OUT DX,AL ;invalidarea intrĉrii deîntrerupere
STI
…….
;rutina detratare aîntreruperii
RUT_INTPROCFAR ;noua rutina detratare aintreruperii
PUSHr ;salvarea registrelor utilizate incadrul rutinei
STI ;validare întreruperi
………..
;corpul rutinei
………..
;sfîrƔitul rutinei
MOV DX,INTA00
MOV AL,EOI
OUT DX,AL ;comandĉ desfîrƔit întrerupere
POP r ;refacere registre salvate
IRET
RUT_INT ENDP
350
NOTE NOTE
INTERFE INTERFEf fE E– – SISTEMULDEI/O SISTEMULDEI/O
352
Î ÎNTREUPERI NTREUPERIb bIEXCEP IEXCEPf fII II
¯ CircuitedeinterfaƜĉI/OƔiporturi
¯ Moduridetransferadatelor
± Transferprinprogram
± Transferprinîntreruperi
± TransferDMA(prinaccesdirectlamemorie)
¯ ControlerulDMA
¯ TipurideinterfeƜeƔicontrolerespecializate
± InterfaƜaserialĉasincronĉ
± InterfaƜaparalelĉ.HandͲShaking
± Ceasulprogramabil(RTC– RealTimeClock)
353
CIRCUITEDEINTERFA CIRCUITEDEINTERFAf f
· SubsistemuldeintrareͲieƔire(I/O)alunuicalculatorasigurĉcaleadecomunicaƜiea
informaƜiilorîntrecalculatorƔimediulextern(logicĉexternĉcarenulucreazĉdirect
cuUCP)
· Prinintermediulacestuisubsistem,utilizatorulintroduceprogrameleƔidateledorite
înmemoriacalculatorului,pentruprelucrare,Ɣitotcuajutorulsĉurezultatelese
înregistreazĉ,sauseafiƔeazĉînexterior
· LegĉturaîntreUCPƔidispozitiveledeI/O(dispozitiveleperiferice)sefaceprin
intermediulunorcircuitedeinterfaƜĉdeI/O
· CircuiteledeinterfaƜĉI/Oasigurĉ,dinpunctdevederehardware,schimbulcorectde
date
· CircuiteledeinterfaƜĉsecupleazĉlamagistralelecalculatoruluiƔielesuntadresabile
lanivelderegistruͲportdeintrareͲieƔire
· Prinport înƜelegemaiciunregistru,cuadresĉspecificĉ(deregulĉmapatĉînspaƜiul
deadresealmemorieiprincipale),princarecalculatorulrealizeazĉschimbde
informaƜiecuexteriorul;fieculegeinformaƜia,iarportulesteportdeintrare(PI),fie
transmiteinformaƜialaunportdeieƔire(PO)
354
CIRCUITEDEINTERFA CIRCUITEDEINTERFAf f
355
CIRCUITEDEINTERFA CIRCUITEDEINTERFAf f
· Rol :adaptarea particularitĉƜilorfuncƜionale,electrice ƔiinformaƜionale aleunui
dispozitiv periferic deintrare/ieƔire lacerinƜele unui anumit sistem decalcul
(adaptarea laomagistralĉasistemului)
· Ce seadapteazĉ:
– Semnale electrice
– SecvenƜadetransmisie si recepƜie adatelor
– Ritmul/viteza/frecvenƜadetransfer– interfaƜaeste unbuffertemporar dedate
· Unele circuite deinterfaƜĉ sunt incluse în circuitele specializate de controlale
perifericelor (“controlere deinterfaƜĉ”)
– controlerul unitĉƜii dedisc,controleazĉ operaƜiile fizice efectuate dediscul
magnetic, curespectareaunor specificaƜii standardizate deinterfaƜare
– Standardul IDE ("IntegratedDriveElectronics")arealizat transferarea funcƜiilor
decontrolcĉtre mecanismul discului hard
356
NECESITATEAINTERFE NECESITATEAINTERFEf fELORI/O ELORI/O
Principalele diferenƜe între UCPƔi periferice,careimpun folosirea circuitelor deinterfaƜĉ,
constau în urmĉtoarele :
× perifericele sunt dispozitive acĉror funcƜionare sebazeazĉ pe diferite tehnologii
(electromecanice,electromagnetice, electronice).Deaceea trebuie sĉ existe
dispozitive deconversie conversie a avalorilor valorilor semnalului semnalului,pentru oadaptare dinpunct de
vedere electriccucalculatorul
× × viteza viteza detransfera detransferadatelor datelor este mult mai scĉzutĉ laperiferice faƜĉ deUCP.Pentru
transferul dedateîntre periferice Ɣi UCPsau memorie trebuie deci sĉ existe
mecanisme desincronizare
× × codurile codurile Ɣ Ɣi i formatele formatele datelor datelor în echipamentele periferice potfi diferite faƜĉ de
codurile Ɣi formatele folosite în UCPƔi memorie
× existĉ ovarietate varietate de deperiferice periferice,cumoduri defuncƜionare diferite Ɣi deaceea acestea
trebuie controlate adecvat,pentru anu perturba celelalte periferice conectate laUCP
357
SCHEMADEPRINCIPIUAUNEIINTERFE SCHEMADEPRINCIPIUAUNEIINTERFEf fEDEINTRARE EDEINTRAREͲ Ͳ IE IEb bIRE IRE
Magistrala deadrese
Magistrala dedate
Magistrala de comenzi
Disp.decomandĉ
DEC R. CTRL R. Stare Reg. Ieúire
Reg. intrare
IOR
IOW
Adaptor desemnale
Echipament periferic
358
PORTURI PORTURI
· · Porturile PorturilesuntcĉidecomunicareîntreprocesorƔidispozitiveleperifericeidentificate
prinadreseunice
· Porturilesuntregistre cutransferparalelpe8/16biƜi(la8086)
· Dpdvalprocesorului8086,porturilesuntvĉzutecaceluledememorieîntrͲunspaƜiu
deadresepe16biƜiaccesabilepeoctet/cuvânt(numĉrulmaximdeporturi=2
16
)
· Procesorulselecteazĉunportpunândpemagistralĉadresacorespunzĉtoareportului.
AcestarecunoaƔteadresaƔitransferĉdatelepemagistraladedatelaurmĉtorul
impulsdetact
· OinterfaƜĉdeintrare/ieƔireocupĉareasociatemaimulteadresedeport,
consecutive,porninddelaoadresĉdebazĉ
· OinterfaƜĉI/Oprezintĉ3tipuriprincipaledeporturi:
÷ ÷ Porturidestare Porturidestare :accesateînmodulcitire– procesorulciteƔtestarea
dispozitivuluideintrare/ieƔire
÷ ÷ Porturidecontrol Porturidecontrol :Procesorulscrieocomenzipentrusetareaparametrilorde
funcƜionareaperifericului
÷ ÷ Porturidedate Porturidedate :pentruscrierea/citireadatelordelaperiferic
359
MODURIDETRANSFER MODURIDETRANSFER
· FuncƜia principalĉ aunei interfeƜe estet transferul ransferul dedate dedate
· Moduri detransfer:
– – Transfer Transferprin prin program program – transfer iniƜiat Ɣi controlat în totalitate de
programul rulat deUCP prinintermediulunorinstrucƜiunispecifice;
– – Transfer Transferprin prin î întreruperi ntreruperi – transferuleste controlat deUCPca rĉspuns lao
cerere deîntrerupere externĉ,careiniƜiazĉ transferul;
– – Transfer Transferprin prin acces acces directla directlamemorie memorie (DMA (DMA – – DirectMemoryAccess) DirectMemoryAccess) – transferul
estecontrolatdeuncircuitcontrolerDMA(carepreiacontrolul magistralelor
sistemului),iariniƜiereatransferuluiestefĉcutĉfiedeocereredetransferdela
unperiferic,fielainiƜiativaprogramuluirulatdeUCP.
· Diferite gradedeimplicare aprocesorului principal
· Alegerea modului detransferoptim :
– Viteza detransfer
– Complexitatea transferului
– RestricƜiidetimp si decost
360
TRANSFERPRINPROGRAM TRANSFERPRINPROGRAM
· Laacest tipdetransfer,toate transferurile seiniƜiazĉ Ɣi secontroleazĉ prin program
prinintermediulunorinstrucƜiunideintrare/ieƔire
· Transferul deI/Oprin programpoate fi :
– direct,transfer(citirea sau scrierea unui anumit portdictate de program)
– prin interogarea succesivĉ aporturilor deI/O(polling),pentru determinarea
cerinƜelor detransferspecifice(seinterogheazĉportuldestare)
· InstrucƜiunideintrare/ieƔirepentruporturi:
IN IN – citeƔtedatedelaport
INdest,port
÷ dest: registreleAX,AL
÷ port: constantĉînintervalul0÷ 255sauregistrulDX
OUT OUT – scriedatelaport
OUTport,dest
÷ dest: registreleAX,AL
÷ port: constantĉînintervalul0÷ 255sauregistrulDX
361
TRANSFERULPRINPROGRAM TRANSFERULPRINPROGRAM– – EXEMPLU EXEMPLU
buf DB 100DUP(?)
lbuf EQU $Ͳbuf ;lungimea bufferului
adrport EQU 300h ;adresĉ portdeintrare (date)
adrstare EQU 301h ;adresĉ registru destare
masca EQU 01h ;mascĉ pentru bitul D0
;iniƜializare transfer
mov si,offsetbuf ;iniƜializare pointer memorie
mov dx,adrport ;iniƜializare adresĉ port
mov cx,lbuf ;iniƜializare contor
;transferdedate
et1:inc dx
in al,dx ;citire portdeintrare
and al,masca ;testare bitdestare
jnz et3 ;testare bitdestaresetat
et2:dec dx ;adresĉ portdeintrare
in al,dx ;citire port
mov [si],al ;memorare datĉ
inc si ;avans poantor
loop et1 ;buclare (testare încheiere transfer)
…….
362
TRANSFERPRIN TRANSFERPRINÎ ÎNTRERUPERI NTRERUPERI
· · Î Întreruperea ntreruperea :eveniment externprocesorului (independentdeprogramul rulat) –
semnalelectricgeneratdeechipamentece potlansa cereri deservicii (cereri de
întrerupere)
– Deservirea unei întreruperi :prin execuƜia unei rutine rutine de deî întrerupere ntrerupere
– – Tabela Tabela de deî întreruperi ntreruperi :conƜine adresele rutinelor detratare aîntreruperilor
– Generareavectoruluideîntreruperesefacefiedirectdecĉtredispozitivul
întreruptor(princircuituldeinterfaƜĉ),fiecentralizat,pentrutoateîntreruperile
mascabile,decĉtreundispozitivspecialnumitcontrollerde controllerdeî întreruperi ntreruperi
· · Avantajele Avantajele sistemului deîntreruperi sunt urmĉtoarele :
÷ permite sincronizarea procesorului cuevenimente externe;
÷ elibereazĉ procesorul desarcina testĉrii periodice aperifericelor, sarcinĉ
consumatoare detimp (procesorul poate efectua alte operaƜiiînparalel cu
transferul);
÷ prezintĉ ovitezĉ derĉspuns mai mare decât transferul prin program;
÷ posibilitatea detratare ierarhizatĉ acererilor deîntrerupere simultane sau
succesive prinarbitrareaprioritĉƜilor.
363
TRANSFERPRINACCESDIRECLAMEMORIE(DMA) TRANSFERPRINACCESDIRECLAMEMORIE(DMA)
· Transferulprinaccesdirectlamemorie(DMA accesdirectlamemorie(DMAͲ Ͳ DirectMemoryAccess DirectMemoryAccess)esteexecutat
directîntrememoriaprincipalĉƔidispozitivulperiferic,fĉrĉcadatelesĉmaitreacĉ
prinUCP
· · Avantaje Avantaje :
÷ Vitezadetransfer prinDMAesteceamaimare,dinceletreimoduridetransfer
÷ TransferulprinDMAesteutillatransferareablocurilormaridedate între
memoriaprincipalĉƔiperiferice
÷ EsteuntransferfolositînaplicaƜiidegenul:transfercudiscurilemagnetice,
transfercuplĉciperifericececonƜinconvertoareADsauDArapideetc.
· TransferulprinDMAseefectueazĉsubcomandaunuicircuitcontrolerDMA controlerDMA,care
controleazĉtemporarmagistralelesistemului
· DeobiceicircuitelecontrolerDMApotgestionatransferuricumaimulteperiferice
simultan,pentrufiecareperifericexistând(interncontrollerului)uncanalDMA canalDMA
· UncicluDMA cicluDMAreprezintĉtransferulunuicuvântdedatedinsauînmemorie
364
TRANSFERDMA TRANSFERDMA
Memoriaprincipalĉ Memoriaprincipalĉ
UCP UCP
Controler Controler
DMA DMA
Interfa InterfaƜ ƜĉI ĉI/O /O
DACK DRQ
cerereDMA
acceptareDMA
RD WR
WR RD
BusRequest
(HOLD)
BusGrant
(HLDA)
transfer
direct
Adrese
Date
365
TRANSFERDMA TRANSFERDMA
· IniƜiereatransferuluisefacedecĉtreperiferic(prinintermediulinterfeƜei)care
efectueazĉocereredetransferprinaccesDMA sprecircuitulcontrolerdeDMA
(DMAC)
· AcestasolicitĉdelaUCPcontrolulmagistralelorprinsemnaluldecereredecontrola
magistralelor,BR(BusRequest)sau HOLD
· LasfârƔitulcicluluimaƔinĉcurentUCPcedeazĉcontrolulmagistralelor,îƔitrece
ieƔirilecĉtreacesteaînHiZ (staredeînaltĉimpedanƜĉ)Ɣiinformeazĉdespreaceasta
prinsemnalulacordareacontroluluimagistralelor,BG(BusGrant)sau HLDA(HoLD
Acknoledge)
· CircuitulcontrolerDMACfurnizeazĉadresele pemagistraladeadrese,preiacontrolul
semnalelordescriere(WR)Ɣicitire(RD)Ɣitrimitecĉtreperifericsemnalulde
acceptareatransferuluiprinDMA
· CânddispozitivulI/OprimeƔteacestsemnaldeacceptare,puneuncuvântpe
magistraladedate(pentruscriereînmemoriaprincipalĉ)sauciteƔteuncuvântdepe
magistraladedate(pentrucitiredinmemoriaprincipalĉ)
366
CICLUDETRANSFERDMA CICLUDETRANSFERDMA
Adrese Adr UCP Adresĉ DMA Adr.UCP
Date UCP Date DMA
DRQ
HOLD
HLDA
DACK
MRD
\
IOW
\
367
SCHEMAINTERNACONTROLERULUIDMAi SCHEMAINTERNACONTROLERULUIDMAi8237 8237
IOR\ Decrem. Inc./Decr. Amp
IOW\ adr. A0-3
MRD\ Bloc
MWT\ de Adr. Contor Adr Contor
c-dă de de curentă curent Amp
CS\ bază bază adr. A4-7
AdrStb
AEN
RDY
CLK R. scriere R citire
EOP Amp D0-7
date
DRQ0-3
Bloc R c-dă R stare
DACK0-3
arbitrare
HOLD cereri R măúti R temp
HLDA DMA
R cereri R mod
368
CARACTERISTICILECONTROLERULUIDMAI8237 CARACTERISTICILECONTROLERULUIDMAI8237
· Poate deservi 4periferice independente (are4canale DMA)
· Viteza detransfermaximĉ este de1,6MocteƜi/s
· Mai multe controlerepotfi conectate în “cascadĉ” pentru amĉri numĉrul decanale
DMAdisponibile
· Dimensiunea maximĉ ablocului dedatetransferat este de64Ko
· Poate efectua transferdetipmemorieͲmemorie
· Suportĉmai multe moduri detransfer :
– Transfersingular
– Transferpe bloc(burst)
– TransfercuautoiniƜializare
– TransfermemorieͲmemorie
369
TIPURIDEINTERFE TIPURIDEINTERFEf fE Eb bICIRCUITEDECONTROLSPECIALIZATE ICIRCUITEDECONTROLSPECIALIZATE
· Controlerpentru interfa interfaƜ Ɯa aparalel paralelĉ ĉ
– PIO– parallelI/O:I8255
· Controlerpentru interfa interfaƜ Ɯaserial aserialĉ ĉ
– SIO– serialI/O,sau USART– universalserialasynchronous receiverand
transmitter:I8251
· Controlerpentru contorizare/temporizare – “ceasuldetimpreal”
– RTC– RealTimeCounter/timerController:I8253
· Controlerpentru interfaƜafloppy:I8272
· ControlerDMA:I8237
· Controlerdeîntreruperi:I8259A
370
INTERFA INTERFAf fASERIALASINCRON ASERIALASINCRON
· USART(Universal Serial Asynchronous Receiver andTransmitter)estefolsitĉpentru
transmisiadatelorladistanƜĉpeunnumĉrrestrânsdeconexiunielectrice(2Ͳ3)
· Transmisiasefacebitcubit(vitzĉdetrasnfermaimicĉdecâtlaPIO)
· ErorimaipuƜine(nuaparproblemedesincronizare)ї distanƜedetransfermaimari
· EmiƜĉtorulƔireceptorullucreazĉlaaceeaƔifrecvenƜĉ– ratadeserializareadatelor
(baud)
· Controlerpentru interfa interfaƜ Ɯaserial aserialĉ ĉ I Intel ntel8251 8251
· Diversestandardedetransmisiserialĉ:RS232,RS485,etc...
DTE DCE
MODEM
Retea telefonica
RS232
RS232
Semnale analogice modulate
Calculator
DCE
371
STANDARDULRS232 STANDARDULRS232
· Codificarea informaƜiilor:niveluri detensiune – MAX232(conversie232ͲTTL/CMOS)
– “0” – (+3..+15V)deobicei 12V
– “1” – (Ͳ3..Ͳ15V)deobicei Ͳ12V
· Mediu decomunicaƜie:fireelectrice (si telefonice)
· Sincronizarea:prin bitdestart,stopsi ratĉ prestabilitĉ:300,600,1200,...19200Bauds
· DetecƜia erorilor:prin bitdeparitate
· Controlul hardwarealfluxului dedate sefaceprinperechi desemnale decontrol:
÷ DSRͲDTR– Datasetready,DataTerminalReady
÷ RTSͲCTS– RequesttoSend– ClearToSend
· DistanƜamaximĉ detransmisie :100m
semnal
serial
Pauză 5,6,7,8 biĠi de date Pauză
Start 0 Paritate 1,2 biĠi Stop
372
INTERFA INTERFAf fASERIALINTEL ASERIALINTEL8251 8251
· Porturi:
÷ RegistruldedateTX/RX :adreseCOM1/COM2=3F8h/2F8h
÷ LowBaudGeneratorLBG :3F8h/2F8h
÷ HighBaudGeneratorHBG :3F9h/2F9h
÷ RegistruldestareRSL :3FBh/2FBh
÷ RegistruldecontrolRCL :3FDh/2FDh
RCL
÷ c7 :DLAB(controleazĉBAUD)
÷ c6 :forƜeazĉ0
L
petransmisie
÷ c5
÷ c4 :activeazĉverificareparitate
÷ c3
÷ c2 :numĉrulbiƜilordestop
÷ c1
÷ c0 :lungimecuvântdedate
RSL
÷ s7 :0
L
÷ s6 :portliberpentrutransmisie
÷ s5 :portulegatasĉaccepte
÷ s4 caracteruldepeliniadedate
÷ s3 :eroareîncadrare
÷ s2 :eroaredeparitate
÷ s1 :eroaredesincronizare
÷ s0 :caracterrecepƜionatdacĉ1
L
373
PROGRAMAREAPORTULUISERIALCOM1 PROGRAMAREAPORTULUISERIALCOM1
;initializari adrese portserial
COM2_D EQU 03F8h ;adresa registru date RX/TX
COM2_C EQU 03FBh ;registrul decontrol
COM2_S EQU 03FDh ;registrul destare
COM2_L EQU 03F8h ;adresa LBG
COM2_H EQU 03F9h ;adresa HBG
;initializarecomunicatie
mov dx,COM2_C
mov al,80h
out dx,al ;seseteaza DLAB
mov dx,COM2_L
mov al,0Ch
out dx,al
mov dx,COM2_H
mov al,0
out dx,al ;BaudRate=9600
mov dx,COM2_C
mov al,3 ;8biti date,fara paritate,1bitdestop
out dx,al
;procedura dereceptie caracter
RXprocfar
cir: mov dx,COM2_S
inal,dx
andal,1
jz cir
mov dx,COM2_D
inal,dx
ret
RXendp
;procedura detrasmisie caracter
TXprocfar
cor: mov dx,COM2_S
inal,dx
andal,20h
jz cor
mov dx,COM2_D
mov al,ah
outdx,al
ret
TXendp
374
INTERFA INTERFAf fAPARALEL APARALEL
• Transferul serealizeazĉ prin mai multe linii:
– Linii dedate (ex:8)– pentru datele propriuͲzise
– Linii decontrol – pentru sincronizarea si controlul fluxului dedate
• Caracteristici:
– Viteza mai mare
– Distante micidatoritĉproblemelordesincronizare
– Transfer(deobicei)unidirecƜional
• Tipuri detransferparalel:
– a)fĉrĉ semnale decontrol
– b)protocolasincron fĉrĉ confirmare
– c)protocolasincron cuconfirmare (hand handͲ Ͳ shaking shaking)
375
TIPURIDETRANSFERPARALEL TIPURIDETRANSFERPARALEL
a)F Fĉrĉ ĉrĉ semnale semnale decontrol decontrol
Ͳ sefolosesc numai semnale dedate
Ͳ sepoate citi starea unor semnale digitale sau sepotcomanda semnale digitale
Ͳ nu sepottransfera secvenƜededate– nu existĉ semnale decontrol
Ͳ exemple:testarea stĉrii unor senzori,comanda unor elemente deacƜionare
b)P Protocol rotocol asincron asincron fĉrĉ fĉrĉ confirmare confirmare
Ͳ sefoloseƔte unsemnal decontrolemis fiedetransmiƜĉtor fiedereceptor
Ͳ sepottransmite secvenƜededate
Ͳ viteza detransfereste controlatĉ deunitatea caregenereazĉ semnalul decontrol
Ͳ nu existĉ semnal dereacƜie (confirmare)dinpartea unitaƜiipartenere;viteza trebuie
sa fiesuficient demicĉ pentru aacoperi toate intârzierile posibile
Date Date
RDY RQ
Datĉ validĉ Datĉ validĉ
376
HAND HANDͲ ͲSHAKING SHAKING
c)P Protocol rotocol asincron asincron cu cuconfirmare confirmare (hand (handͲ Ͳ shaking) shaking)
Ͳ 2semnale de control:unul emis detransmiƜĉtor Ɣiunul derĉspuns delareceptor
Ͳ transmisie cu“feedͲback” (reacƜie)
Ͳ sepoate adapta mult mai uƔorlaviteza delucru aambelor unitaƜicomunicante;
rezultĉovitezĉdetransfer mai mare
Ͳ potsĉ aparĉ situaƜiideeroare,încazul necorelĉrii semnalelor decontrol
Corect Eroare
Eroare
Data Datĉ validĉ Data Datĉ validĉ
RDY RDY
ACK ACK
(a) (b)
Data Data1 Data2
RDY
ACK
(c)
377
HAND HANDͲ ͲSHAKING SHAKING
c)P Protocol rotocol asincron asincron cu cuconfirmare confirmare (hand (handͲ Ͳ shaking),cu shaking),cuintercondi intercondiƜ Ɯionare ionare î între ntre semnalele semnalele
decontrol decontrol
Ͳ rezolvĉ problema corectitudinii transferului
Ͳ activarea si dezactivarea celor 2semnale decontrolsefaceintercondiƜionat
Data
RDY
ACK
378
CONTROLLERULi8255 CONTROLLERULi8255– – INTERFA INTERFAf fAPARALEL APARALEL
· 3porturidedate(A,BƔiC)
· Moduridelucru:intraredate/ieƔiredate/transferbidirecƜional
· RegistrulCsepoatedivizaîn2pentruadeservisemnaledecontrolregistrelorAƔiB
Port PA0 - 7
Control A
grup A
Amp
D0 -7 date ½ PC4 - 7
C
½ PC0 - 3
RD \ C
WR \ Bloc Control
A0 de grup B
A1 control Port
CS \ B PB0 - 7
379
CEASURIPROGRAMABILE(RTC CEASURIPROGRAMABILE(RTC– – REALTIMECLOCK) REALTIMECLOCK)
· Utilizate pentru:
– contorizarea unor evenimente externe
– generarea unor semnale de o anumitĉ frecvenƜĉ prin divizarea unui semnal de
ceascuunnumĉrprogramabil
– întîrzierea unor semnale (monostabil)
– generarea unor întreruperi periodice sau dupĉ unanumit timp delaapariƜia unui
eveniment
– declanƔarea periodicĉ aunor cicluri dereînprospĉtare amemoriei
– generarea unor semnale sonore deavarie ladifuzorul sistemului
· Controlerspecializat:Intel8253
380
CONTROLERULCEASULUIPROGRAMABILINTEL8253 CONTROLERULCEASULUIPROGRAMABILINTEL8253
· Intel8253 – circuitVLSIcu3numĉrĉtoareprogramabile pe 16biƜi ¬divizarecu
maxim65535
· i8253ocupĉunnumĉrde4adreseI/OdeciconƜiendpdvfuncƜional4porturide
intrare/ieƔire,sensultransferuluifĉcânduͲseprinsemnaledecontrol
Amp
date
Bloc
de
cͲdĉ
Numĉrĉtor
0
Numĉrĉtor
1
Numĉrĉtor
2
Reg.
control
Out0
D0-7 Clk0
Gate0
Out1
RD\ Clk1
WR\ Gate1
CS\
A0,1 Out2
Clk2
Gate2
381
CONTROLERULCEASULUIPROGRAMABILINTEL8253 CONTROLERULCEASULUIPROGRAMABILINTEL8253
· NUM2estedisponibilpentruafiprogranmatdecĉtreutilizator– poatealimenta
difuzorulsistemuluicusemnaleaudioîngamadefrecvenƜĉ:
f=f
in
/2÷ f
in
/2
16
[595kHz÷ 18,15Hz]
f
in
=f
PCLK
/2=1,19MHz
· ActivareasaublocareaaccesuluilaNUM2sefaceprinprogramareaportuluiparalel
programabil8255,cuadresa0061h.AcestaesteunregistruparalelaicaruibiƜi1Ɣi0
comandĉrespectiv:
÷ Bitul1–setat,blocheazĉieƔireanumĉrĉtorului2prinintermediuluneiporƜibI
÷ Bitul0–setat,inhibĉnumĉrarea(intrareaGate2)
382
CONTROLERULCEASULUIPROGRAMABILINTEL8253 CONTROLERULCEASULUIPROGRAMABILINTEL8253
8255 8255
8253 8253
8259A
CLK0
CLK
PCLK
X1 X2
8284
8086
(UCP)
CLK1
CLK2
Gate2
Out0
Out1
Out2
IRQ0
AJF FTJ
÷2
Port
061h
Bit0
Bit1
f
PCLK
f
IN
INTR
INT
383
APLICA APLICAf fIECEASPROGRAMABIL IECEASPROGRAMABIL
Q Deturnareaîntreruperiidetastaturĉ(IRQ1–09h)pentrugenerareaunuisunetla
apĉsareauneitaste
1. Scriereanoiirutinedetratare
· sescrieoprocedurĉprincareseprogrameazĉceasulprogramabil
· programareanumĉrĉtorului2alceasuluiprogramabil8253pentrupornire/
opriresunet
· programareatonuluisunetuluiƔigeneraresemnalsonor
2. Instalareanoiirutinedetratare
· salvareaRTIoriginaleasistemului
· modificareaintrĉriiTVIcorespunzĉtoaresubrutineisistemdetratarea
întreruperiicuadresanoiisubrutinedefinitedeutilizator
· alocareaspaƜiuluirezidentînmemorienecesarpentrurutinadetratare
384
PROGRAMAREACEASULUIPROGRAMABIL8253 PROGRAMAREACEASULUIPROGRAMABIL8253
· IniƜializareceasprogramabil8253Ͳ RTC(RealTimeClock)
Porturifolosite– registrepe8biƜi:
÷ Registruldecontrol :adresa043h
÷ Registruldedate :adresa042h
C
7
C
6
C
5
C
4
C
3
C
2
C
1
C
0 RC043h:
selecƜie
numĉrĉtor:
10– NUM2
citire/scriere
octetlow
apoihigh
setaremoddenumĉrare
ex:modul3denumĉrare
(*11)– generatorde
impulsuri
dreptunghiulare
numĉrare
binarĉ
385
PROGRAMAREACEASULUIPROGRAMABIL8253 PROGRAMAREACEASULUIPROGRAMABIL8253
· InstrucƜiunidepornire/opriresunet
in AL,61h ;citeƔtestareportparalelprogramabil8255
or AL,3 ;seteazĉultimii2biƜi(porniresunet)
out 61h,AL ;porneƔtesunet
÷ pentruoprireasunetuluisereseteazĉbiƜii0Ɣi1aiportului61h
÷ ptcasunetulsĉfieperceptibilseinsereazĉopauzĉ(ex.buclĉvidĉ)
· ProgramareaNumĉrĉtorului2pentrugenerareaunuisunetcufrecvenƜade500Hz
mov AX,0952 ;tonsunet(500Hz)
out 42h,AL
mov AL,AH
out 42h,AL ;încĉrcareportdedateRTCcucei2octeƜiailuiAXsuccesiv
1.193.180
2386 952
500
in
div
out
f
N h
f
= = = =
386
RTI
STRUCTURAPROGRAMULUI STRUCTURAPROGRAMULUI
.code
int9_offset DW0
int9_s eg DW0 ;sedefinescînsegmentuldecod
int9PROCfar
pushf ;salveareflaguriînstivĉ
calldword ptr cs:int9_o ;apelvecheasubrutinĉaînteruperiidetastaturĉ
;salveareregistreînstivĉ
;definiƜieRTIpentruîntrerupereadetastaturĉ
;refacereregistredinstivĉ
int9ENDP
sfarsit EQUthisbyte ;determinĉspaƜiuldememorienecesarpentruRTI
main:
;salvareadresavechiirutine
;instalarenouarutinĉdetratareaînteruperiidetastaturĉ
mov dx,offset sfarsit+16+100h ;alocarespaƜiurezidentînmemorie
mov cl,4 ; necesarsubrutineidetratare
shr dx,cl
mov ax,3100h ;terminareaprogramuluicupĉstrarearezidentĉ
int 21h ; înmemorie arutineiîntreruperii
endmain
PROGRAMAREAMICROPROCESOARELOR PROGRAMAREAMICROPROCESOARELOR
388
PROGRAMAREAMICROPROCECSOARELOR PROGRAMAREAMICROPROCECSOARELOR
¯ DezvoltareauneiaplicaƜiiînlimbajdeasamblare
¯ TipurideinstrucƜiuni.Sintaxĉ
¯ ProceduriƔimacroinstrucƜiuni.Elaborareadeprogramemodulare
¯ Accesullaresurselesistemului.FuncƜiisistem
¯ TratareaƔiinstalareaîntreruperilor
¯ ProgramareaporturilordeintrareͲieƔire
389
DECE DECE"PROGRAMAREIN "PROGRAMAREINASAMBLARE ASAMBLARE" " ? ?
Q estemateriedeexamen(ƔichiardereͲexaminare)...
Q vreƜisascrieƜiprogrameeficiente(dinpunctdevederealtimpuluideexecuƜieƔial
spaƜiuluidememoriealocat)
Q oferĉunînaltgraddelibertateînprogarmare
Q oferĉaccestdirectlaresurselesistemului
Q ajutĉlascriereaƔioptimitareaprogramelorînlimbajeledenivelînalt
Q vreƜisaintelegeƜimodulîncarefuncƜioneazĉuncalculator
390
ETAPELEDEELABORAREAUNEIAPLICA ETAPELEDEELABORAREAUNEIAPLICAf fII IIÎ ÎNLIMBAJULDEASAMBLARE NLIMBAJULDEASAMBLARE
· Etapelecreĉriiunuiprogramexecutabilînlimbajuldeasamblare
Etapa Intrare Program IeƔire
Editarea Periferice(tastaturĉ) Editordetext myFile.asm
Asamblarea myFile.asm
TASM.EXE(Borland)
MASM32 (Microsoft)
myFile.obj
myFile.map
LinkͲeditarea myFile.obj TLINK.EXE myFie.exe
Depanarea myFile.exe TD.EXE myFie.exe
391
CREAREAUNUIEXECUTABIL CREAREAUNUIEXECUTABILÎ ÎNLIMBAJULDEASAMBLARE NLIMBAJULDEASAMBLARE
· Etapelecreĉriiunuiprogramexecutabilînlimbajuldeasamblare
Editorde
text
Asamblor
Interpretator
(Linker)
Debugger
(dezasamblare)
SO
(execuƜie)
myFile.asm myFile.obj myFile.exe
myFile.asm
.modelsmall
.stack100h
.code
main:
mov ah,01h
int 21h
MOVAH,4Ch
INT21h
endmain
myFile.map
Start Stop Length NameClass
00000H 00007H 00008H _TEXTCODE
00010H 00010H 00000H _DATADATA
00010H 0010FH 00100H STACKSTACK
Programentrypointat0000:0000
lkFile1.obj
lkFile2.obj
392
ETAPELEDECREAREAPROGRAMELOREXECUTABILE ETAPELEDECREAREAPROGRAMELOREXECUTABILE
Q Q ASAMBLAREA(COMPLITAREA) ASAMBLAREA(COMPLITAREA)
÷ detectareaerorilordesintaxĉ
÷ rezervareaspaƜiuluidememorienecesartipurilordedateutilizate
÷ interpretareainstrucƜiunilorƔimacroinstrucƜiunilorscriseînlimbajdeasamblare
ƔigenerareainstrucƜiunilorcorespunzĉtoareîncodmaƔinĉ
÷ interpretareaexpersiiloraritmetice,aconstantelordincodulsursĉ
Q Q EDITAREADELEGTURI EDITAREADELEGTURI(LINK (LINKͲ ͲEDITARE) EDITARE)
÷ adĉugareademoduleobiectdinaltebibliotecialeSOsaualtorprograme
÷ completareaƔitranslatareaadreselorfaƜĉdeînceputulprogramului
÷ creareafiƔieruluiexecutabil
Q Q LANSAREA LANSAREAÎ ÎNEXECU NEXECUf fIE IE
÷ SOîncarcĉprogramulînmemoriaprincipalĉƔipredĉcontrolul
÷ seexecutĉinstrucƜiuniledinprogramîncepândcuceadelaadresaceamaimicĉ
393
UTILITAREPENTRUCREAREAUNUIEXECUTABIL UTILITAREPENTRUCREAREAUNUIEXECUTABIL
· SetareacĉiiprogramuluiasamblorînfiƔierulbatchAUTOEXEC.BAT
SETPATH=C:\TASM\BIN SETPATH=C:\MASM32\BIN
C:\Cale\...\td myFile{.exe} C:\Cale\...\td myFile{.exe}
· Dezasamblareaprogramului
executabil
PosibilprinmodificareafiƔierelor
.batchpentruasamblarea
instrucƜiunilorpe16biƜi
Ͳ · ComenziinterfaƜĉgraficĉ
C:\Cale\...\link16 myFile{.obj} C:\Cale\...\tlink myFile{.obj}
· Editarea de legĉturi cu SO
(foloseƔtefiƔierulobiect)
C:\Cale\...\ml/c myFile.asm C:\Cale\...\tasm myFile{.asm}
· AsamblareafiƔieruluisursĉ
myFile.asm
MicrosoftMacroAssembler
(MASM32)
BorlandTurboAssembler(TASM) AcƜiune
AnumitefuncƜiisistemnusunt
implementate
InterfaƜĉgarficĉcuvizualizarea
registrelor,memorieiƔialanƜului
deexecuƜieainstrucƜiunilor
· EMU8086 (Emulator specific
microprocesorului 8086) –
Asamblorintegrat
394
REGISTRE,MEMORIE REGISTRE,MEMORIE
· Intern,uncalculator prelucreazĉ maimulte fluxuri deinformaƜie : datele numerice Ɣi
instrucƜiunile programului ƔiconƜineunulsaumaimultemicroprocecsoare
· Unmicroprocesor=unitatecentralĉdeprelucrare(UCP)integratĉîntrͲunsingurchip
· Pentru amanipuladatele,microprocesorulfoloseƔte:
+ + Registre Registre їstocheazĉdatele(variabile,adrese)cucaremicroprocesorullucreazĉla
unmomentdat
– registre generale pentruoperaƜiiaritmeticeƔilogiceƔicalcululadreselorefective:
• (8biƜi)AH, AL, BH, BL, CH, CL, DH, DL
• (16biƜi)AX,BX, CX, DX,SI, DI, SP,BP
• (32biƜi)EAX,EBX, ECX, EDX,ESI, EDI, ESP,EBP
÷ registrespecialefolositepentruadresareadatelordinmemorie:
• CS,DS,ES,SS,IP,Flags,FS,GS
+ + Memoria Memoriaprincipalĉ(integratĉînRAM– RandomAccessMemory)
395
REGISTRE,MEMORIE REGISTRE,MEMORIE
DatelestocateînMEMORIAPRINCIPAL MEMORIAPRINCIPALsuntgrupatĉînsegmentespecificefuncƜieipe
careoîndeplinesc(informaƜieipecareoconƜin):
· InstrucƜiuni ї segmentuldecod
÷ directadresabileprinregistrulCSƔiIP
· Variabileї segmentuldedate
÷ directadresabileprinregistrulimplicitDS sauexplicitES
÷ ÷ constantele constantele suntdateimediate dateimediate;acesteasuntevaluatelaasamblareƔisunt
conƜinuteîncodulinstrucƜiunii,NUînmemoriadedate
· Datetemporare їsegmentuldestivĉ
÷ accesate prin instrucƜiuni detransfer cu stiva
396
ADRESAREADATELOR ADRESAREADATELORÎ ÎNCADRULUNUISEGMENT NCADRULUNUISEGMENT
Pentruadresareamemoriei,procesorulare
nevoiederegistre;dimensiunearegistruluidĉ
dimensiuneadespaƜiuluidememorieadresabil
Selectoruldesegmentesteovaloare
conƜinutĉîntrͲunregistrudesegment
Registrulsegmentpoatefiimplicitsau
desemnatînmodexplictîninstrucƜiune
InstrucƜiunileƔidatelesuntmemoratela
locaƜiisuccesiveîncepânddelaadresemici
397
ARHITECTURAPROCESORULUIi8086 ARHITECTURAPROCESORULUIi8086
398
μ μPINTEL8086 PINTEL8086– –UNIT UNITf fIFUNC IFUNCf fIONALE IONALE
pescurt...
× × Unitateadeinterfa UnitateadeinterfaƜ Ɯĉcumagistrala ĉcumagistrala (BIU BIU – BusInterfaceUnit)
· BIUexecutĉtoatecicluriledemagistralĉ (“READ”,“WRITE”,“INTA”)fielacererea EU
saupentruumplereauneicozideinstrucƜiuni (QFIFO)
· BIUgenereazĉadresafizicĉ pe 20debiƜi alocaƜieidememorieundesegĉseƔtedata
sauinstrucƜiuneacesevaaccesa
× × Unitateadeexecu UnitateadeexecuƜ Ɯie ie (EU EU – ExecutionUnit)
· PebazacodurilorprimitedelaBIU(cititedincoadadeinstrucƜiuni),EUdecodificĉ Ɣi
executĉinstrucƜiunile,respectivproceseazĉdatelecuexcepƜiacalculelorcomplexe
efectuatedecoprocesorulmatematici8087
· EUcalculeazĉadreseleefective (pe16biƜi)aleoperanzilorconformmoduluide
adresarespecificatîncoduloperaƜieidininstrucƜiune
399
REGISTRE,MEMORIE REGISTRE,MEMORIE
Segmentdedate
Segmentdecod
Segmentdestivĉ
Extrasegment
UCP
Memoria
principalĉ
Registre
segment
Registregenerale
400
× Registreledeuzgeneral (MainRegisters)
· RGsuntlocaƜii dememorie,interneUCP carestocheazĉ datele pe careEU le
proceseazĉ launmomentdat Ɣitrebuie sĉ fieînconcordanƜĉ cu magistrala internĉ a
procesorului (M
DATE
=k*R
UCP
). Ex.Pentium: busintern pe 64biƜi,reg. pe32biƜi
· Suntregistrepe16biƜiadresabiledirectsaupeoctet
× RegistreindexƔiregistrepointer pe16biƜi:
SI(SourceIndex),DI(DestinationIndex),BP(BasePointer),SP (StackPointer)
× Registrulindicatorilordestare Ɣidecontrolalprocesului(decondiƜii)Ͳ FLAGS
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE
15 8 7 0
AH AL AX (accumulator)
BH BL BX (base)
CH CL CX (counter)
DH DL DX (data)
401
FLAGSRegister FLAGSRegister– – Registruldestare Registruldestare
· CF CarryFlag depĉƔirearitmeticĉ(transport)
· PF ParityFlag paritate(rezultatuloperaƜieiareunnumĉrpardebiƜisetaƜi)
· AF AuxiliaryFlag transportîntrebitul3Ɣi4
· ZF ZeroFlag rezultatnullaultimaoperaƜiearitmeticĉsaulogicĉ
· SF SignFlag bitdesemn(iavaloareaMSBlaoperaaƜiilecunumerecusemn)
· TF TripFlag TF=1determinĉUCPsĉlucrezeînmodulpascupas –se
genereazĉcâteoîntrerupereinternĉdupĉfiecareinstrucƜiune
· IF InterruptFlag mascĉpentruînteruperiexternemascabile
(IF=1– validareîntreuperi;IF=0– invalidareîntreruperi)
· DF DirectionFlag indicĉdirecƜiadeplasĉriiadreseilaoperaƜiilecuƔiruri
(autodecrementarearegistrelorSI,DIdacĉDF=1respectiv
autoincrementareadacĉDF=0)
· OF OverflowFlag indicatordedepĉƔirearitmeticĉ:sͲapierdutMSBalrezultatului
datoritĉfaptuluicĉvaloareaacestuiaadepĉƔitcapacitateade
reprezentarealocaƜieidestinaƜie
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IEͲ Ͳutilizĉri utilizĉri
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bit
- - - - O D I T S Z - A - P - C Flag
402
REGISTRELEUNIT REGISTRELEUNITf fII II DEINTERF DEINTERFA Af fCUMAGISTRALA CUMAGISTRALA
Registresegment Registresegment
CS CodeSegment
DS DataSegment
SS StackSegment
ES ExtraSegment
Registrulcontordeprogram Registrulcontordeprogram
IP
Instruction
Pointer
· ConƜineadresa relativĉ (offsetͲul)în segmentul decod
curent(relativ laCS) ainstrucƜiuniicurente
·BIUactualizeazĉvaloareaînscrisĉînIPdupĉfiecare
operaƜiedefetch
· În cazul unei instrucƜiuni desalt interͲsegment,IPeste
salvat în vârful stivei (împreunĉ cu CS) Ɣiapoi încĉrcat cu
adresa relativĉ în segmentul decod ainstrucƜiunii Ɯintĉ
· Registrepe16biƜiї spaƜiudeadresarede64kB
·OferĉsuportpentruimplementareaunuispaƜiude
memoriede1MB
· ConƜinadreseledebazĉalesegmentelorlogicedecod,
date,stivĉƔiextrasegment
· Doar4segmenteactivelaunmomentdat
403
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILOR
{ETICHET:} MNEMONIC MNEMONIC {OPERAND1, {OPERAND2}} {;COMENTARIU}
LABLE1: MOVAX,BX ;copiazĉconƜinutulluiBXînAX
Identificatordeadresĉ
(maxim31decaractere)
INSTRUCfIUNE
Ignoratdeasamblor
(nugenereazĉcodmaƔinĉ)
LABLE2 : JMP LABLE1 ; trece la execuƜia instrucƜiunii marcacte
;deetichetaLABLE1–aceastaindicĉ
;adresaurmĉtoareiinstrucƜiuniexecutate
Saltînprogram:
· InstrucƜiunileexecutatede8086acceptĉmaximdoioperanzi(0,1,sau2)
· Operanziisedespartprinvirgulĉ
· MnemonicaesteuncuvântrezervatcesimbolizezĉoinstrucƜiune
404
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILORͲ Ͳ OPERANZI OPERANZI
· · Operand Operand –câmpceindicĉuntermenaloperaƜiei(indicĉloculƔimodulderegĉsireal
operandului– moduldeadresare)
· Operanzii unei instrucƜiuni trebuie sa fiedeaceeaƔilungime:octet,cuvânt,dubluͲ
cuvant (exceptii:operaƜiideinmulƜiresi impĉrƜire)
· O instrucƜiune poate conƜine cel mult unoperand detiplocaƜie dememorie
÷ formatul instructiunilor x86permite exprimarea adresei unei singure locaƜiide
memorie
÷ pentru ooperatie aritmeticĉsau logicĉ între douĉ variabile (locaƜiidememorie)
unul dintre operanzi trebuie sa setransfere temporar întrͲunregistru intern
÷ aceastĉ restricƜie favorizeazĉ operaƜiile pe registre – pt.creƔterea eficienƜei de
execuƜie
405
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILORͲ Ͳ OPERANZI OPERANZI
· Registre :AX,BX,...,AH,BH,...,AL,BL,...,SI,DI,CS,DS,SS,ES
· Variabile :<nume_VAR>
· Constante :<nume_CONST>
· Adrese :[<registru>],[<adr_explicitĉ>],[<adr_port_I/O>]
· Dateimediate :<numĉr>,<expresie>
Ͳ unnumĉrsau oexpresie aritmeticoͲlogicĉ caresepoate evalua inmomentul
compilarii ƔiesteconƜinutĉîncodulinstrucƜiunii;sepoate exprima inzecimal,
hexazecimal (indicativul H)sau binar (indicativul B)
Ͳ lungimeaconstanteiesteînacordculungimeaceluilaltoperand
· Expresiiaritmetice:<nume_VAR><OPERATOR_ARITM><numĉr>
Ͳcaoperatoriaritmeticiseacceptĉoperatorii+,Ͳ,*,/
Ͳ expresiaaritmeticĉ nuseexecutĉ;eaesteevaluatĉlamomentulasamblĉriiiarcodul
maƔinĉvaconƜinedejavaloarearezultatului
406
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILORͲ Ͳ OPERANZI OPERANZI
• LocaƜiidememorie (variabile)
– expresie careexprimĉ adresa unei locaƜiidememorie deoanumitĉ lungime
(oricevariabilĉesteinterpretatĉdeasamblorcaolocaƜiedememoriedeundese
vaextrageovaloarenumericĉ)
– lungimea variabilei:
• înacord cualdoilea operand(dacĉ existĉ)
• sededucedindeclaraƜia numelui devariabilĉ
• seindicĉ înmodexplicit('byte','word','dword')
– adresa variabilei:
• adresa desegment:
– specificatĉ înmodimplicit – conƜinutul registrului DS
– exprimatĉ înmodexplicit:<reg_segment>:<variabila>
ex:CS:Var1,ES:[100h]
• adresa deoffset Ͳ adresa relativĉ încadrul segmentului
407
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILORͲ Ͳ OPERANZI OPERANZI
• Adresa deoffset
– adresa poate sa fiepe 16biƜi(modul real)sau pe 32biƜi(modul protejat)
– exprimabilĉ înmai multe moduri:
• adresĉ fizicĉ: valoare concretĉ deadresa
– [ <adresa_offset> ], ex:MOVAX,[100h]
– [<reg_baza>+ <reg_index> + <deplasament> ]
ex:MOVAX,[BX+SI+100h]
• adresĉ simbolicĉ:Ͳ nume simbolic dat unei variabile
– VAR1,TEXT,VAR+5
– VAR[BX],VAR[BX+SI]
<reg_bazĉ> =BX|BP
<reg_index> = SI|DI
408
REGULISINTACTICE REGULISINTACTICE
· olinie deprogrampoate conƜine maximoinstrucƜiune (mnemonicĉ +operanzi)sau o
directivĉ
· asamblorulnufacedistincƜieîntreliterelemariƔimici
· olinie poate conƜine:
– nici oentitate deinstrucƜiune (câmp)– linie goalĉ
– numai etichetĉ
– numai comentariu
– combinaƜiideetichetĉ,instrucƜiune,directivĉ si comentariu
· uncomentariu începe cu';'Ɣiseîncheie lasfârƔitul liniei
· separareacâmpurilorsefacecuunnumĉrarbitrardecaractere<sp>sau<tab>
· oinstrucƜiune x86poate conƜine maxim2câmpuri deoperanzi:
– operand1– indicĉ destinaƜia sau rezultatuloperaƜieiaritmeticoͲlogice sau primul
termen alunei operaƜiiunare sau binare
– operand2– indicĉ sursa sau aldoilea termen alunei operaƜiibinare
409
REGULISINTACTICE REGULISINTACTICE
NOP (÷ XCHGAX,AX)
• instrucƜiune fĉrĉ operanzi
MOVSB
• instrucƜiune cuoperanzi impliciƜi
MULCL
• instrucƜiune cuprimul operandimplicit(AX=AL*CL)
MOVAX,BX
• AX– destinaƜia ,BXsursa transferului
INCSI
• SI– termenul incrementat si destinaƜia rezultatului
ADDCX,DX
• CX– primul termen alsumei si destinaƜia rezultatului,DX– aldoilea termen
ADDAX,BX,CX
• instrucƜiune incorectĉ,prea mulƜioperanzi
410
DIRECTIVE DIRECTIVE SAUPSEUDOINSTRUC SAUPSEUDOINSTRUCf fIUNI IUNI
· SuntinstrucƜiunipentruprogramulasamblorexecutatelaasamblare pentruexecuƜia
unorfuncƜiispecifice(alocarememorie,iniƜializareadrese,...)
· Directivelenugenereazĉcodexecutabil (nuaucorespondentîncodulmaƔinĉ
rezultat)
DB,DW,DD ї defineƔtedateƔispecificĉdimensiuneamemorieialocate
MAXEQU 100 ї atribuieunnumesimbolicuneiconstantesauƔir
TABDB10DUP (?)ї declaraƜiirepetitivededate(iniƜializatesaunu)
IF expresie ї instrucƜiunedeasamblarecondiƜionatĉ :
;setinst1 permiteignorareauneiporƜiunidincodulsursĉ,funcƜiede
ELSE ocondiƜiecareseevalueazĉlaasamblare(dacĉ
;setinst2 expresiaesteadevĉratĉ,seasambleazĉsetul1de
ENDIF instrucƜiuniƔidoaracesteasevorexecuta)
411
DIRECTIVE DIRECTIVE SAUPSEUDOINSTRUC SAUPSEUDOINSTRUCf fIUNI IUNI
.8086 їactiveazĉdoarsetuldeinstrucƜiunipe16biƜispecificlui
8086(programulvafiasamblatînacestmod)
.MODELSMALL їselecteazĉmodeluldememorie
.STACK100h ї defineƔtedimensiuneasegmentuluidestivĉ (înocteƜi)
.DATA ї deschideunsegmentdedateƔiînchidesegmentuldeschis
anteriorƔiîiasociazĉoadresĉdeînceputdisponibilĉprin
expresiaglobalĉ@data
.CODE ї deschideunsegmentdecodƔiînchidesegmentuldeschis
END їmarcheazĉsfârƔitullogicalunuiprogramƔiesteobligatorie
întoateprogramelescriseînlimbajdeasamblare;punctul(adresa)
deînceputalprogramuluiesteevaluatĉdeasamblorprinapelul
acesteidirectiveurmatĉdeoetichetĉcemarcheazĉînceputul
coduluiexecutabil; toateinstrucƜiunileceurmeazĉdirectiveisunt
ignoratelaasamblare
412
MODELULDEMEMORIE MODELULDEMEMORIE
· TINY :toatesegmentele(date,cod,stivĉ)suntgenerateînacelaƔi
spaƜiudemaxim64kBiartoatesalturileƔiapelurilede
procedurĉsuntdetipNEAR.Programe.COM
· SMALL :dateleƔistivaînacelaƔisegment+unsegmentdecod(max
64kB).SalturileƔiapeluriledeprocedurĉsuntimplicitdetip
NEAR
· MEDIUM :unsegmentdedate+stivĉƔimaimultesegmentedecod.
SalturileƔiapeluriledeprocedurĉsuntimplicitdetipFAR
· COMPACT :unsegmentdecod+unsegmentdedate+unsegmentde
stivĉ.SalturileƔiapeluriledeprocedurĉsuntimplicitdetip
NEAR
· LARGE :atâtdatelecâtƔicodulgeneratpotdepĉƜi64kB(segmente
multiplededateƔicod)
· HUGE :lafelcamodulcompactdarstructurilecompactededate
(gentablou)potdepĉƜi64kB
413
OPERATORI OPERATORI
· OFFSET :furnizeazĉoffsetul(adresaefectivĉ)asociatuneivariabilesau
etichete;înmodsimilar,operatorulSEGfunizeazĉadresade
segmentasociatĉ
movBx, OFFSETvar
· LENGTH :întoarcenumĉruldeelementedefiniteîntrͲovariabilĉƔiNU
dimensiuenaeiînocteƜi(seaplicĉtablourilordedate)
· SIZE :întoarcedimensiuneaînocteƜiauneivariabile
· THIS :creeazĉunoperandcareareasociateoadresĉdesegmentƔiun
offsetidenticecucontorulcurentdelocaƜii
alfaEQUTHIS word
· PTR :operatorulpointerarecaefectschimbareatipuluivariabilei
saueticheteicĉreiaiseaplicĉ;esteobligatoriuatuncicândse
folosescreferinƜeanonimelamemorie (dincarenusepoate
deducetipuloperandului)
addAL,bytePTR [BX]
414
DECLARA DECLARAf fII IIb bIDEFINI IDEFINIf fIIDEDATE IIDEDATE
Sintaxa: NUME_VARDIRECTIVAVALOARE1{,VALOARE2,…}
· Variabile
contor1DB50 ;definebyte –alocĉmemoriepentruunoctetƔiiniƜializeazĉdatade
;lalocaƜiarespectivĉlavaloarea50(înzecimal)
contor2DB1011b ;iniƜializareînbinar
· VariabileneiniƜializate
rezultat1DW? ;defineword
· Vectori
vect1DW1000h,1020h,1030h\ ;caracterul‘\’ esteseparatordelinie
,1040h,1050h,1060h ;valoriiniƜializateînhexazecimal
vect2DW10DUP(?) ;alocĉunspaƜiudememoriepentru10cuvinte
· Caractere ƔiƔiruridecaractere
car1DB‘X’
sir1DB“TastaƜiuncaracter”,0Dh,0Ah,‘$’ ;linienouĉ
;caracterul‘$’ terminatordeƔir
415
DEFINIREASTRUCTURILORDEDATE DEFINIREASTRUCTURILORDEDATE
Nume_StructuraSTUCT STUCT
nume_membru<definiƜie_date>
Nume_StructuraENDS ENDS
Ex: ELEVSTRUCT
nume db20dup(?)
pren db20dup(?)
note db10dup(?)
med db?
COMPLEXENDS
· StructurilereprezintĉcolecƜiidedate
plasatesuccesivprintrͲunnume
sintacticunic
· Ostructurĉesteinterpretatĉcauntip
noudedateceintervineîndefiniƜii
concrete:
studELEV<‘Ionescu’,’Ion’, ,>
· PrincipalulavantajͲ accesullamembri
întrͲoformĉasemĉnĉtoareLNÎ :
movAX,9
movstud.note[0],AX
416
SEGMENTULDEDATE SEGMENTULDEDATE
· Însegmentuldedate,începândcuoffsetul0000h,suntînƔiruitedatele,octetcu
octet,laadresesuccesive
· VariabilelemultiͲoctetsestocheazĉcuoctetul“LOW”laadresainferioarĉ
· Directiva .dataseexecutĉdecĉtreasamblorpentruatribuirea adresei de începuta
segmentuluidedate
Program Memorie– segmentuldedate
.data adresĉ conƜinut(HEX)
var4 DB ‘12345’ DS:0004 3132333435
var1 DB 25 DS:0000 25
var2 DB 10011101b DS:0001 AE
var3 DW 1A53h DS:0002 531A
var5 DB ‘a’ DS:0009 61
417
SEGMENTULDECOD SEGMENTULDECOD
· ÎnsegmentuldecodsedefinescinstrucƜiunileprogramului
· SegmentuldecodpoateconƜinedefiniƜiidedate
· Directiva .codeseexecutĉdecĉtreasamblorpentrudeschidereasegmentuluicod(Ɣi
închidereaceluidedate,presupunândcĉacestaafostdeschisînainte)
· AdresainiƜialĉainstrucƜiunilorprogramuluiexecutabiledeterminatĉdeasamblor
prindirectivaENDcefacereferinƜĉlaoetichetĉdeînceputdeprogram
· Oriceprogramtrebuiesaaibĉunnumeunicdeidentificare
· UnprogramseincheieobligatoriucudirectivaEND
· directivaENDsefolosƔteosingurĉdatĉînprogram;pentruproceduri,ENDP
.code
numeProg:
;...instrucƜiunileprogramului
END numeProg
418
INI INIf fIALIZAREAREGISTRELOR IALIZAREAREGISTRELOR
Ini IniƜ ƜializarearegistrelorCS ializarearegistrelorCSƔ ƔiIP iIP
· RegistreleCSƔiIPsuntiniƜializateautomatdecĉtre sistemuldeoperareDOS la
încĉrcareaprogramuluiînmemorie,chiarînaintedeexecuƜialui;directivaENDindicĉ
asambloruluicarevafiadresainiƜialĉcesevaîncĉrcaînCS
· DirectivaENDeurmatĉdeoetichetĉcaremarcheazĉpunctuldeundesedĉcontrolul
programuluidupĉîncĉrcare
× start:
;instrucƜiuni
END start;specificĉadresadeînceputacoduluiprinreferinƜalaetichetĉ
· RegistrulIPesteiniƜializatderegulĉcu0(adresaefectivĉaprimeiinstrucƜiuni)sauo
valoareiniƜialĉnenulĉprinfolosireadirectiveiORG (Origin)
· DirectivaORG iniƜializeazĉcontoruldelocaƜii($)carecontroleazĉoffsetul,în
segmentulcurent,deundeseasambleazĉinstrucƜiunile(saudatele)
× ORG100h ;asambleazĉlaoffsetul100h(dupĉ256deocteƜi)
419
INI INIf fIALIZAREAREGISTRELOR IALIZAREAREGISTRELOR
Ini IniƜ ƜializarearegistrelorSS ializarearegistrelorSSƔ ƔiSP iSP
· RegistrulSS esteiniƜializatautomatdecĉtre sistemuldeoperareDOS laîncĉrcarea
programuluiînmemoriecuadresadefinitĉdeultimadirectivĉdedeschiderea
segmentuluidestivĉ
· Directiva.stack <dim> poatespecificadeasemeneaƔidimensiuneastivei înocteƜi
· RegistrulSP esteiniƜializatcuvaloareadatĉdedimensiuneatotalĉastivei
× .STACK100h ;defineƔteostivĉde256octeƜi
· RegistrulSSpoatefiredefinitprinprogramlaoaltĉvaloare
420
INI INIf fIALIZAREAREGISTRELOR IALIZAREAREGISTRELOR
Ini IniƜ ƜializarearegistrelorDS ializarearegistrelorDSƔ ƔiES iES
· RegistreleES ƔiDS trebuieiniƜializateexplicitdeprogramator înaintedefolosirea
vreunuioperand
· Asamblorulcalculeazĉdimensiuneasegmentuluidedate pebazamodeluluide
memorieƔiadatelordefiniteînprogram
· LocaƜia segmentuluidedate înmemorie(adresainiƜialĉ)estedeterminatĉtotde
asamblor(prindirectiva.data)Ɣidatĉdeexpresia@DATA
· @datafiindoadresĉ(datĉimediatĉ),instrucƜiuneaMOVnupermiteîncĉrcacreaei
directînregistrulDS:
× MOVAX, @DATA
MOVDS,AX
421
CLASIFICAREAINSTRUC CLASIFICAREAINSTRUCf fIUNILORDUPOPERA IUNILORDUPOPERAf fIAEFECTUAT IAEFECTUAT
— InstrucƜiuni detransfer : mov,lea,les,push,pop,pushf,popf
— InstrucƜiuni deconversie : cbw,cwd,xlat
— InstrucƜiuni aritmetice :
add,incsub,dec,cmp,neg,mul,imul,div,idiv
— InstrucƜiuni logice,derotaƜie,deplasare (shift)Ɣipe bit :
and,or,xor,not,shl,shr,rcl,rcr
— InstrucƜiuni deIntrare/IeƔire(I/O) : in,out
— InstrucƜiuni pe siruri: movs,stos,lods
— InstrucƜiuni decontrolalfluxului deprogram :
jmp,call,ret,salturi condiƜionate
— InstrucƜiunidecontrolalprocesorului :clc,stc,cli,sti,wait,nop
422
INSTRUC INSTRUCf fIUNIDETRANSFERGENERALE IUNIDETRANSFERGENERALE
MOVDest,Sursa MOVDest,Sursa ;(Sursa) ;(Sursa)ї ї (Dest) (Dest)
· Unuldinoperanzi(destinaƜiasausursa)esteobligatoriuregistrudeuzgeneral
· Operanziinupotaveadimensiunidiferite
· RegistrulCSnupoateapĉreacadestinaƜieiarregistrulIPnupoatefifolosit
· Nusuntpermisetransferurile:
÷ Memorie– Memorie
÷ Memorie– Dateimediate
÷ Memorie– Registrusegmentdedate
· DA MOVAX,[BX] MOVAX,BX MOVbyteptr[BX+10],7
· NU MOVAL,BX MOV[BX],[SI] MOVCS,AX
XCHGDest,Sursa XCHGDest,Sursa ;(Sursa) ;(Sursa)ў ў (Dest) (Dest)
· AceleaƔirestricƜii
· Ex: XCHG[1234h],BX
423
INSTRUC INSTRUCf fIUNIDETRANSFERDEADRESE IUNIDETRANSFERDEADRESE
LEA LEA Reg16 Reg16, ,AE AE ; ;AE AE ї ї ( (Reg16 Reg16) )
· LoadEffectiveAddress – încarcĉînregistruldestinaƜieadresaefectivĉavariabilei
sursĉ(poatefiƔioetichetĉ)
· LEAsefoloseƔtepentruîncĉrcareareistrelordebazĉsegmentcuadresaefectivĉa
unoroperanzidinmemoire,pentruadresĉriulterioare
· InstrucƜiunileurmĉtoaresuntechivalenteînsĉMOVestemaieficientĉ(necesitĉun
numĉrdeciclurimagistralĉmaimicpentruexecuƜie)
· Ex: varDB7,5,3,1
MOV DX,OFFSETvar
LEA DX,var
LDS/LES LDS/LES Ͳ Ͳ LoadData/ExtraSegment LoadData/ExtraSegment
· Încarcĉregistrudeuzgeneralsauregistrusegmentdedatesauextrasegment
· · LES LES DI,var DI,var ;ES:[DI] vaconƜineadresavariabileivar
424
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
· InstrucƜiunilearitmeticeaurezultatuldepusîntrͲunuldinoperanzi(primul)careeste
obligatoriuunregistru
· ModificĉvalorilebistabililordecondiƜie:CF,AF,ZF,SF,PF,OF
ADD Adunare addD,S
(S)+(D)ї (D)
Carryї (CF)
Toate
Flagurile
ADC Addwithcarry adcD,S
(S)+(D)+(CF)ї (D)
Carryї (CF)
Toate
Flagurile
INC Incrementare incD (D)+1ї (D)
Toatemai
puƜinCF
SUB Scadere subD,S
(D)– (S)ї (D)
Borrowї (CF)
Toate
Flagurile
SBB
Subtractwith
borrow
sbbD,S (D)– (S)– (CF)ї (D)
Toate
Flagurile
CMP Comparare cmpReg16,S
(Reg16),(S)nemodificatZF
=1dacĉ(Reg16)=(S)CF=
1dacĉ(Reg16)<(S)
Toate
Flagurile
425
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
· OperaƜiiledeînmulƜireƔiîmpĉrƜire(cusaufĉrĉsemn)auunsinguroperand(registru
saulocaƜiedememorie)iarrezultatulestememoratînregistreimplicite
· ÎnmulƜireaafecteazĉdoarflagurileCFƔiOF(suntsetatedacĉextensiaacumulatorului
estenenulĉ)
· OperaƜiledeîmpĉrƜire(cusaufĉrĉsemn)nuafecteazĉflagurile
MULOp
IMULOp
DeînmulƜit
(implicit)
ÎnmulƜitor(operand) Rezultat
Byte*Byte AL Registrusauadresĉ (AH:AL)і (AL)*(Op)
Word*Word AX Registrusauadresĉ (DX:AX)і (AX)*(Op)
DIVOp
IDIVOp
DeîmpĉrƜit
(implicit)
Divizor(operand) Cât:Rest
Word/Byte AX Registrusauadresĉ
(AL)і (AX)/(Op)
(AH)і AXmod(Op)
Word/Word DX:AX Registrusauadresĉ AX:DX
426
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
Exemple ObservaƜii
ADDAX,25h
ADCAL,BL
ADD[1234h],[00F5h]–esteincorectĉ
.data
alfa DB10h
beta DW200h
.code
MOVAL,alfa
MOVAH,0
MULbeta
MUL05h–esteincorectĉ
(variantelenoidemicroprocesoareacceptĉcaoperandƔidate
imediate)
MOVAX,1000
MOVBL,2
DIVBL
CâtuloperaƜieieste500
Cumoperandulestepeoctet,rezultatulsevamemoraînAL,
doarcavaloareanusepoatereprezentapeoctet
AparedepĉƔire(overflow)Ɣisegenereazĉoîntreruperede
nivel0.RutinaafectatĉacesteiaopreƔteexecuƜiaprogramului
ƔiafiƔeazĉunmesajdeeroarelaconsolĉ
427
INSTRUC INSTRUCf fIUNIDE IUNIDEÎ ÎNTRERUPERE NTRERUPEREͲ Ͳ INT INT
· Sintaxa: INT INT <nivel_int> <nivel_int>
· SemnificaƜie:apelulprinprogramauneirutinesoftwaredetratareauneiîntreruperi
· <nivel_int>=0...255 Ͳ estenivelul(tipul)întreruperiiapelate
· Adresarutineiestepĉstratĉîntabelavectorilordeîntrerupere(TVI)
· TVIconƜine256deintrĉri(adreseͲ pointer)pentrucele256deniveluriacceptatede
unporcesorx86
· ModdeexecuƜie :
÷ sesalveazĉînstivĉregistruldestareprogram(indicatoriidecondiƜie)
÷ sesalveazĉînstivĉCSƔiIP(adresaurmĉtoareiinstrucƜiunidinprogram)
÷ secopiazĉînCS:IPadresarutineideîntreruperedintabeladeîntreruperide
laadresareprezentatĉde4octeƜidelaadresadatĉdeexpresia:
<nivel_intrerupere>*4
÷ seexecutĉinstrucƜiunilerutineidetratare
÷ serevinelaexecuƜiaprogramuluiprincipal
428
INSTRUC INSTRUCf fIUNIDE IUNIDEÎ ÎNTRERUPERE NTRERUPEREͲ Ͳ INT INT
0
*4
Memoriaprincipalĉ
Rutinadeîntrerupere
Tabeladeîntreruperi(TVI)
(256deintrĉrix4octeƜi)
Program
INT INT n
1kB
<adr_seg>:<offset>
1MB
429
FUNC FUNCf fIISISTEM IISISTEM
· SubrutinealesistemuluideoperareDOS sausistemuluideI/OBIOS disponibile
programatouluiprinintermediulinstrucƜiuniiINT(caregenereazĉoîntrerupere
software)
· INTXXh esteinstrucƜiuneapropriuͲzisĉcareapeleazĉrutinadetratare
corespunzĉtoare
· ÎnaintedeapelulinstrucƜiuniifuncƜiasistemestedefinitĉprinîncĉrcareaunorregiste
dedicate
· RegistrulAH conƜinetotdeaunaidentificatorulfuncƜieiexecutate(rutinade
întrerupereîncepeprinidentificareavaloriidinacestregistru)
Ex:
· FuncƜiapentruterminareaprogramului:elibereazĉmemoriaocupatĉdeprogramƔi
predĉcontrolulsistemuluideoperare(funcƜia4Caînteruperii21h)
MOV AX,4C00h
INT 21h
430
PROTOTIPULUNUIPROGRAM PROTOTIPULUNUIPROGRAMÎ ÎNLIMBAJDEASAMBLARE NLIMBAJDEASAMBLARE
.model SMALL ; specificĉmodelul de memorie
.stack100h ;stivĉde256octeƜi
.data ;începutsegmentdedate
..... ;declaraƜiidevariabile
.code ;începutsegmentdecod
start: ;etichetĉdeînceputaprogramului
mov ax,@data
mov ds,ax ;initializare DS
...... ;instrucƜiunialeprogramului
mov ax,4C00h ;revenire însistemul deoperare
int 21h
endstart ; sfârƔitprogram
431
PRIMULMEUPROGRAM PRIMULMEUPROGRAM
;IniƜializeazĉregistrulsegmentdedate
;FuncƜiesistempentruafiƔarealaconsoladeieƔire
;AfiƔeazĉmesajuldelaadresaconƜinutĉînregistrulDX
;FuncƜiadeterminareaprogramului–elibereazĉmemoria
ocupatĉdeprogramƔipredĉcontrolulsistemuluideoperare
P.1 P.1
432
TEMEDELABORATOR TEMEDELABORATOR– – L1 L1
P.2 P.2– – StudiulexecuƜieioperaƜiiloraritmetice
· SĉsescrieunprogramcaresĉexecuteoperaƜiiaritmeticecunumerepe8Ɣi16biƜi
· SevastudiamoduldeexecuƜiealoperaƜiilordeadunare,scĉdere,înmulƜireƔi
împĉrƜire(testaredepĉƔire)
· SevorvizualizaregistreleimplicateînoperaƜiileefectuate
· Se va vizualiza modul în care sunt afectate flagurile
P.3 P.3– – Adudareanumerelorpe32debiƜi
· Sĉsescrieunprogrampentruadunareaadouĉnumerepe32debiƜi
· Variabileledeintraresedefinescînhexazecimalînfelulurmĉtor:
var1dw1234h,5678h ;declararept.numĉul12345678h(32debiƜi)
· AtenƜielaTransport!
433
INSTRUC INSTRUCf fIUNIDETRANSFERCUSTIVA IUNIDETRANSFERCUSTIVA
PUSH PUSH opnd opnd ;SS:SP ;SS:SPі і (opnd) (opnd) SP SPі і SP SPͲ Ͳ 2 2
POP POP opnd opnd ;(opnd) ;(opnd)і і SS:SP SS:SP SP SPі і SP+2 SP+2
· · opnd opnd–Reg16,Registrusegment,Datĉimediatĉ,LocaƜiedememoriesauReg32(la
microprocesorelepe32debiƜi)
· Nupotfirealizatetrasnsferuricustivapeoctet
pushAX – instrucƜiunecorectĉ
pushAH – instrucƜiuneincorectĉ
· StocareadatelorînstivĉrespectĉconvenƜia“LittleEndian” (octetul“LOW”laadresa
micĉ)
pushAX – AHlaadresaSPͲ1
– ALlaadresaSPͲ2
· · pushf,popf pushf,popf –transferĉflaguriîn/dinstivĉ
· · pusha,popa pusha,popa –transferĉtoateregistrele
434
INSTRUC INSTRUCf fIUNILOGICE IUNILOGICE
AND,OR,XOR,NOT AND,OR,XOR,NOT
– OperaƜiilogice pe bit
– Sintaxa: <operator> <operand1>,<operand2>
– SemnificaƜia:<operand1> = <operand1> <operator> <operand2>
– <operand1/2>:=<reg
8/16
>|<mem
8/16
>|<val_imediatĉ>
– Exemple:
andax,bx mov al,10101111b
orax,33h andal,00100000b
notvar1 ; înalvomavea: 00100000b
xor si,si
435
UTILIZAREAINSTRUC UTILIZAREAINSTRUCf fIUNILOR/OPERATORILORLOGICI IUNILOR/OPERATORILORLOGICI
· pentru extragerea unui bitsau aunui grup debiƜidintrͲunsetdevalori logice
ex: masca EQU101b
and AL,masca ;înAL sepĉstreazĉ biƜiiD0ƔiD2iarrestul vor fi 0
· pentru aseta/reseta unbitsau unsetdebiƜi
ex: masca1EQU80h
or AL,masca1 ;D7va fi setat (valoare 1)
masca2 EQU7fh
and AL,masca2 ;D7va fi resetat (valoare 0)
· pentru extragerea unui bitsau aunui grup debiƜidintrͲunsetdevalori logice
TEST TEST
– sintaxa:TEST <operand1>,<operand2>
– executĉ unSI logicfĉrĉ amemora rezultatul
– sefoloseƔtedoarpentrupoziƜionareaindicatorilordecondiƜii
436
INSTRUC INSTRUCf fIUNIDECONVERSIE IUNIDECONVERSIE
XLAT XLAT
· Sintaxa :XLAT
– instrucƜiuneanuianiciunoperand,acƜioneazĉasupraunuitabeldeconversie
· SemnificaƜia :
– “traduce” uncodpe baza unui tabel deconversie (LookͲuptable);
– adresa tabelului trebuie sa seîncarce înprealabil in BX
AL = [BX+AL]
· Util pentru :
– conversii decod (ex.zecimalў codhexa)
– calcule rapide pe bazĉ derezultate precalculate (ex:inmulƜire,impĉrƜire),în
cazulunoroperaƜiiaritmeticerepetativeîncadrulprogramului(XLATseexecutĉ
mairapiddecâtoperaƜiilearitmetice)
· AlteinstrucƜiunideconversie:
– CBW (ConvertBytetoWord),CWB– operandimplicitînregistrulAX
437
EXEMPLU EXEMPLU– – CONVERSIEZECIMAL CONVERSIEZECIMALї ї COD CODHEXA HEXA
.data
TABELA DB‘123456789ABCDEF’
codhex DB‘??h’
.code
MOV AL,198 ;numĉrzecimaldeconvertit
LEA BX,TABELA
AND AL,0FH ;sereƜincei4biƜiLOWdinAL
XLAT
MOV codhex[1],AL ;codhex=‘?6h’
MOV CL,4
SHR AL,CL ;sedeplaseazĉALspreadreaptacu4poziƜii
XLAT
MOV codhex[0],AL ;codhex=‘C6h’ (codulHEXA allui198)
Temĉ:P4.Criptareaunuimesajtextintrodusdelatastaturĉ
438
INSTRUC INSTRUCf fIUNIDECONTROLALPROGRAMULUI IUNIDECONTROLALPROGRAMULUI– – SALTNECONDI SALTNECONDIf fIONAT IONAT
· · JMP<eticheta>|<REG>|<var_pointer> JMP<eticheta>|<REG>|<var_pointer> IP IPі і IP+disp IP+disp
8/16 8/16
– executĉ transferulexecuƜieilaoaltĉadresĉîncadrulprogramului
– saltulseexecutĉprininiƜializareaconƜinutuluiregistruluiIPcuonouĉvaloare
datĉdeundeplasamentpe8sau16biƜi(disp)evaluatlaasamblare
– distanƜaƔiadresasaltuluisuntcalculatedeasamblor
– pentruamarcaƜintasaltuluisepreferĉutilizareaetichetelor(definiteprin “:” sau
prin numedeproceduri)
– salturilenecondiƜionatenusuntagreateînprogramareastructuratĉ
– valoareadeplasamentuluipoatefipozitivĉ(saltînainte)saunegativĉ(saltînapoi)
– tipuridesalt:
• saltintrasegment(deplasamentpe8/16biƜi)datprinetichetĉsauregistru
• saltintersegmentdatprintrͲovariabilĉpointerͲ <adr_seg:offset>(CS:IP)
JMPET1 ;saltînainte
...
ET1: ...
JMPET1 ;saltînapoi
439
INSTRUC INSTRUCf fIUNIDECONTROLALPROGRAMULUI IUNIDECONTROLALPROGRAMULUI– – SALTCONDI SALTCONDIf fIONAT IONAT
· · Jcc<eticheta> Jcc<eticheta> IP IPі і IP+disp IP+disp
8 8
– executĉ saltdacĉesteîndeplinitĉcondiƜia“cc”
– condiƜiaestedatĉdstareaunuiasaumaimultorindicatoridecondiƜie(flaguri):
CF,ZF,SF,OF,PF
– pentruaceeaƔicondiƜiepotexistamnemonicidiferite(ex:JZ,JE)
– <eticheta>setraduceprintrͲodistanƜĉrelativĉpe8biƜi(la8086salturilepotfi
doarînintervalulͲ128...127Ɣisenumesc“salturiscurte”)
CMP AX,BX
JE egal
...
egal:
TEST AL,101
JNZ et1
et1:
ADD AX,[BX]
JO eroare
.......
eroare:
440
INSTRUC INSTRUCf fIUNIDECONTROLALPROGRAMULUI IUNIDECONTROLALPROGRAMULUI– – SALTCONDI SALTCONDIf fIONAT IONAT
Instr. Conditia Alias
JC CF=1 JB,JNAE
JNC CF=0 JNB,JAE
JZ ZF=1 JE
JNZ ZF=0
JS SF=1
JNS SF=0
JO OF=1 JPE
JNO OF=0 JP
JP PF=1 JPO
JNP PF=0 JNP
Instr. Conditie Indicatori Alias
JG > SF=OF sau ZF=0 JNLE
JGE >= SF=OF JNL
JL < SF!=OF JNGE
JLE <= SF!=OF sau ZF=1 JNG
JE = ZF=1 JZ
JNE != ZF=0 JNZ
441
CONTROLULPROGRAMULUI CONTROLULPROGRAMULUI– – INSTRUC INSTRUCf fIUNIDEBUCLARE IUNIDEBUCLARE
· · JCXZ,JECXZ JCXZ,JECXZ ͲsaltdacĉCX(respectivECX)este0
÷ sefoloseƔteînainteauneiinstrucƜiunidebuclare(LOOP),pentruapreîntâmpina
execuƜiade65.535deoriabuclei,încazulîncareCX=0
· · LOOP<eticheta> LOOP<eticheta> Ͳ instrucƜiunedebuclare
– ceface: CXіCXͲ1
dacĉ(CX!=0)“saltla<eticheta>(repetĉinstrucƜiuniledinbuclĉ)”
altfel“continuĉcuinstrucƜiuneaurmĉtoare”
– CXestefolositimplicitpentrucontorizareaciclurilorexecutate
· · LOOPZ/LOOPE<eticheta> LOOPZ/LOOPE<eticheta> Ͳ instrucƜiunidebuclare
– semnificaƜia: CXіCXͲ1
dacĉ(CX!=0)Ɣi(ZF=1)“saltla<eticheta>”
altfel“continuĉcuinstrucƜiuneaurmĉtoare”
· · LOOPNZ/LOOPNE<eticheta> LOOPNZ/LOOPNE<eticheta> Ͳ instrucƜiunidebuclare
– semnificaƜia: CXіCXͲ1
dacĉ(CX!=0)Ɣi(ZF=1)“saltla<eticheta>”
altfel“continuĉcuinstrucƜiuneaurmĉtoare”
442
EXEMPLU EXEMPLU– – CALCULULSUMEIELEMENTELORUNUIVECTOR CALCULULSUMEIELEMENTELORUNUIVECTOR
;varianta1 :
MOV CX,LENGTHvector
LEA SI,vector
MOV AL,0
bucla:
ADD AL,[SI]
INC SI
LOOP bucla
;varianta2 :
MOV CX,LENGTHvector
LEA SI,0
MOV AL,0
bucla:
ADD AL,vector[SI]
INC SI
LOOP bucla
.data
vector DB1,2,3,4,5,6,7,8,9,10
443
PROGRAMAREAMICROPROCECSOARELOR PROGRAMAREAMICROPROCECSOARELOR
± Macrouri
± Administrareaprogramelormari
± Apelullaresurselesistemuluidecalcul
± ScriereaprocedurilorƔirutinelordetratare
± Optimizareaprogramelor
TEHNICIDEPROGRAMARE TEHNICIDEPROGRAMARE
444
MACROINSTRUC MACROINSTRUCf fIUNI IUNI
· FormeprescurtatedescriereaunorsecvenƜedeprogramcareserepetĉ
· Sintaxa:
nume_macro nume_macro MACRO MACRO { {par1, par1, { {par2, par2, ...}} ...}}
<secven <secvenƜ Ɯĉdeinstruc ĉdeinstrucƜ Ɯiuni> iuni>
ENDM ENDM
Exemplu: macroinstruc macroinstrucƜ Ɯiunedetransferdirect iunedetransferdirect
· definiremacroinstrucƜiune
m_movmacroDest,Sursa
movax,Source
movDest,ax
endm
· apeldemacroinstrucƜiuneînprogramulprincipal
m_movx,y
445
MACROINSTRUC MACROINSTRUCf fIUNIvs.PROCEDURI IUNIvs.PROCEDURI
Macrouri Macrouri
· lafiecareapelsegenereazĉîntreaga
secvenƜĉdeinstrucƜiuni
· nusuntnecesareinstrucƜiunideapel
(CALL)Ɣidereveniredinrutina(RET)
· nusefoloseƔtestiva
· transferuldeparametrisefacedirect
prinspecificareanumelui
· execuƜiemaieficientĉfaƜĉdeapelul
deproceduri
· potficreate“instrucƜiuni” noi
Proceduri Proceduri
· osingurĉcopiepentrumaimulte
apeluri
· sefolosescinstrucƜiunideapelside
revenire
· seutilizeazastivalaapelsila
revenire
· transferuldeparametrisefaceprin
registresaustivĉ
446
ADMINISTRAREAPROGRAMELORMARI ADMINISTRAREAPROGRAMELORMARI
· Programelemarisescriumodular
· CreareafiƔieruluiexecutabilsefaceîndouĉetape:
÷ seasambleazĉseparatfiecaremoduldeprogram
÷ selinkͲediteazĉîmpreunĉfiƔiereleobiectrezultate
Moduleprogram
myPp.asm myPp.asm
programulprincipalalaplicaƜiei
Asamblor
Interpretator
(Linker)
myPp.obj myPp.obj
myPp.exe myPp.exe
linkmyProg.objio.obj
lkFile1.obj
lkFile2.obj
io.h io.h
÷ declaraƜiidedate,structuri
÷ declaraƜiideproceduri
÷ definiƜiidemacroinstrucƜiuni
io.asm io.asm
÷ definiƜiideproceduri
Biblioteci
SistemdeOperare
io.obj io.obj
447
ADMINISTRAREAPROGRAMELORMARI ADMINISTRAREAPROGRAMELORMARI
· Legareamodulelordeprogramnecesitĉfolosireaunordirectivespecifice:
÷ Directiva INCLUDE INCLUDE (INCLUDEnume_fisier) (INCLUDEnume_fisier)
÷ Directivele PUBLIC,EXTERN,EXTRN PUBLIC,EXTERN,EXTRN
÷ ÷ PUBLICnume_proc1,{nume_proc2,...} PUBLICnume_proc1,{nume_proc2,...}
÷ ÷ EXTERNnume_proc1:tip,{nume_proc2:tip,...} EXTERNnume_proc1:tip,{nume_proc2:tip,...}
myPp.asm myPp.asm
includeio.h
;altedirective
;instrucƜiuniprog.principal
;apelprocecdura:
callproc2
;apelmacroinstrucƜiune
macro1
io.h io.h
externproc1:far
externproc2:far
;declaraƜiidedate
;declaraƜiimacrouri
macro1macro
;instrucƜiuni
callproc1
endm
io.asm io.asm
publicproc1
publicproc2
proc1procfar
;instrucƜiuni
endp
proc2procfar
;instrucƜiuni
endp
448
ACCESULLARESURSELEUNUISISTEM ACCESULLARESURSELEUNUISISTEM
· Resurseleunuisistemdecalcul:
– hardware:
• registre,indicatoaredecondiƜie(flaguri)
• memorie
• interfeƜeƔidispozitivedeintrare/ieƔire
• sistemuldeîntreruperi
• ceasdetimpreal,altetimere
– software:
• sistemuldefiƔiere
• gestiuneataskurilor
• gestiuneacomunicaƜieiƔiserviciidesincronizare,etc.
449
NIVELURILEDEACCESLARESURSE NIVELURILEDEACCESLARESURSE
MH
BIOS
DOS
LNI+BIB.
AplicaƜii
Comenzispecifice
FuncƜii predefinite
FuncƜii sistem (INT 21h)
RutinedeîntrerupereBIOS:
INT10h,13h,16h,....
InstrucƜiuniIN/OUT
450
ACCESULLANIVELULMA ACCESULLANIVELULMAb bINIIHARDWARE INIIHARDWARE
· SefaceprininstrucƜiunidescrire/citiredelaporturileinterfeƜelordeintrare/ieƔire
aledispozitivelorhardzarealesistemului(IN/OUT)
· Exemplu:Tipĉrireaunuitextlaimprimantĉ
.data
text db“hello world”
ltext equ$Ͳtext
port equ378h
port_c equ37ah
port_s equ379h
strob equ00000001b
busy equ10000000b
ack equ01000000b
cmd_init equ 00000001b
.code
start:movax,data
movds,ax
movsi,offsettext
movcx,ltext
movdx,port_c
moval,cmd_init
out dx,al
movdx,port_s
et1: inal,dx
testal,busy ;activpe1
jzet1
moval,[si]
incsi
movdx,port
outdx,al
movdx,port_c
moval,cmd_init
;seforteaza0pestrob
andal,NOTstrob
outdx,al
movdx,port_s
et2:inal,dx
testal,ack;activpe0
jnzet2
movdx,port_c
moval,cmd_init
;seforteaza1pestrob
oral,stb
outdx,al
movdx,port_s
loopet1
movax,4c00h
int21h
endstart
451
ACCESULLARESURSEPRIN ACCESULLARESURSEPRINÎ ÎNTRERUPERIBIOS NTRERUPERIBIOS
· Existĉdouĉtipurideîntreruperi:
– întreruperihardware – semnaleelectricegeneratedeinterfeƜelaapariƜiaunui
eveniment(ex:recepƜiaunuicaracter,citireaunuisectordedisc,eroarede
transmisiepeunportserial,etc.)
– întreruperisoftware – “porƜideacces” laresurseprinrutine(funcƜii)BIOS
• fiecaretipderesursĉ(interfaƜa)arerezervatunniveldeîntrerupere
• seapeleazĉprininstrucƜiuneaINTn (unencorespundeniveluluiîntreruperii
asociatinterfeƜeirespective)
• laapelulacesteiîntreruperiseexecutĉorutinĉdetratarespecificĉ
sistemuluideintrare/ieƔire
• transferuldedateîntreresurseƔiprogramsefacepriintermediulregistrelor
procesorului
· redirectare – toateîntreruperileBIOSpotfiredirectate
– obiectiv:rescriereaunorfuncƜiialeS.O.referitorlaoanumitĉresursĉ
– modderealizare:seînlocuieƔteîntabelavectorilordeîntreruperiadresarutinei
vechicuadresanoiirutinedetratare(cevaconƜinenouldriveralresursei);la
terminareaaplicaƜieiserefacevecheaadresĉ
452
CITIREAUNUISECTORDEDISCPRIN CITIREAUNUISECTORDEDISCPRINÎ ÎNTRERUPEREBIOS NTRERUPEREBIOS
.data
buf db512dup(?)
.code
start:
movax,@data
movds,ax
moves,ax
;initializareparametriideapel
movah,02 ;funcƜiadecitire
moval,1 ;nr.desectoare
movcl,5 ;nrsector
movch,0 ;nr.pista
movdl,0 ;nr.disc
movdh,0 ;nr.cap
movbx,offsetbuf
int13h
jc err
....
err: ;codpt.eroare
endstart
Rutina deînterupere BIOSͲ INT13h
453
IMPRIMAREAUNUITEXTLAIMPRIMANT IMPRIMAREAUNUITEXTLAIMPRIMANT
.model small
.stack16
.data
msg db 'Helloworld!',0dh,0ah,'Ͳ directprintingͲ',0dh,0ah,'$'
MSG_LENdw $ͲmsgͲ1
.code ;defineste segmentul decod
mov ax,@data
mov ds,ax
call print
print procnear
mov ah,01h ;Serviciul 01="Initializeaza portul deimprimanta"
mov dx,00h ;Portul deimprimanta 0
int 17h ;Apel deintrerupere initializare port
mov si,offsetmsg ;Incarca AEamesajului inSI
mov cx,MSG_LEN ;Incarca inCXlungimea sirului
again: mov ah,00h ;Functia 00="Imprimacaracter"
mov al,byteptr [si] ;caracter detrimis pusinAL
int 17h ;Apel rutina imprimare caracter
cmp ah,01h ;Caracter neimprimat Ͳ AH=1
jnz next
jmp exit
next:inc si ;adresa urmatorului caracter
loop again ;Trimite caracterul urmator laimprimanta
exit:ret
print endp
end
Rutina deînterupere BIOSͲ INT17h
454
ACCESULRESURSEPRINAPELURISISTEM(SYSTEMCALLS) ACCESULRESURSEPRINAPELURISISTEM(SYSTEMCALLS)
· Sefolosescconceptemaiabstracte:
– fiƔierͲ pt.accesulladispozitiveledestocare
– canalͲ pt.dispozitiveledetransmisieadatelor
– dispozitivstandarddeintrare
– dispozitivstandarddeieƔire
· Moduldeacces:
– seseteazĉanumiƜiparametriînregistreleprocesorului
– indicativulfuncƜieisistemapelate seîncarcĉîntotdeaunaînregistrulAH
– seconstruiescanumitestructuridedatept.acces(handler)
– seapeleazĉîntrerupereaINT21h
– setesteazĉcorectitudineaefectuĉriioperaƜiei
– datelesunttransferateîntreprogramƔiresurselesistemuluiprinintermediul
registrelorgeneralealeprocesorului
455
EXEMPLEDEFUNC EXEMPLEDEFUNCf fIISISTEM IISISTEM
· 01h Ͳ citireatastaturiicuecou
· 02h Ͳ afiƔareaunuicaracter
· 05h Ͳ tipĉrireaunuicaracter
· 08h Ͳcitireatastaturiifĉrĉecou
· 09h Ͳ afiƔareaunuiƔirdecaracterelaconsoladeieƔire(ecran)
· 14h Ͳ citireasecvenƜialĉcuFCB
· 15h Ͳ scriereasecvenƜialĉcuFCB
· 3Fh Ͳ citireaunuifiƔier
· 40h Ͳ scriereaunuifiƔier
· 31h Ͳ revenireaînprocesulpĉrintecupĉstrareaalocĉriimemoriei
· 4Ch Ͳ revenireaînsistemuldeoperare
456
EXEMPLEDEFUNC EXEMPLEDEFUNCf fIISISTEM IISISTEM
;Tiparireaunuicaracter
moval,“x”
movah,05h
int21h
;Citireaunuicaracterdeladisp.deintrarestandard
movah,01h
int21h
;înALvafimemoratcodulasciialcaracteruluicitit
;IeƔireadintrͲunprocescupĉstrareaalocĉriimemoriei
movah,31h
moval,cod_retur
movdx,dimensiune
int21h
;dimensiuneamemorieirezervatesedĉînparagrafede16octeƜi
REPREZENTAREABINARAINFORMA REPREZENTAREABINARAINFORMAf fIEI IEI
458
PROGRAMAREAMICROPROCECSOARELOR PROGRAMAREAMICROPROCECSOARELOR
¯ ReprezentareabinarĉainformaƜiei
¯ SistemedenumeraƜieƔiregulideconversie
¯ Reprezentareanumerelorcusemn
¯ Coduridereprezentare.Coddirect.Codinvers(C1)
¯ CodulcomplementfaƜĉde2(C2)
¯ Reprezentareanumerelorreale.Virgulĉfixĉ
¯ Reprezentareaînvirgulĉflotantĉ
459
TI TIPURIDEINFORMA PURIDEINFORMAf fIIREPREZENTATEINTERN IIREPREZENTATEINTERN
· Datenumerice:valoriîntregi,fracƜionare,numerereale,pozitivesaunegative
÷ valorinumericefolositecaoperanzinumericiîncalcule
÷ valorinumericecarereprezintĉoperaƜiicodificateînbinar(instrucƜiuni)sau
valoribinarececodificĉadrese.
· Datealfanumerice:caractere,text
÷ caractere,textƔisemnegraficefolositedeobiceipentrulegĉturaculumea
exterioarĉ(afiƔare,tipĉrire,introduceredate,etc.)
· Datelogice(booleane)
· Datemultimedia:audio,imagine,video
460
REPREZENTAREABINARAINFORMA REPREZENTAREABINARAINFORMAf fIEI IEI
· ÎnsistemelenumericedecalculactualeinformaƜiavehiculatĉ,indiferentcĉ
reprezintĉinstrucƜiuni(specificeprocesorului),adresesauoperanzi,estedetipbinar
· ReprezentareasefaceprincodificareainformaƜiilor
· CodificareainformaƜiilorsefacefolosindsistemedenumeraƜie :
÷ setdesimboluri
÷ setderegulidereprezentare
÷ baza=numĉruldesimbolurifolosite
· Princodificare,sefaceocorespondenƜĉîntreelementeleuneimulƜimideinformaƜii
cuNelementeƔielementelemulƜimiibinareB={0,1},astfelîncâtfiecĉruielement
informaƜionalsĉͲicorespundĉosecvenƜĉdeelementedinmulƜimeabinarĉ
· PentruacodificaceleNelementealemulƜimiiIestenecesarĉosecvenƜĉdenbiƜi,
relaƜiaîntrenƔiNfiind:
Nч 2n
461
SISTEMEDENUMERA SISTEMEDENUMERAf fIE IE
· Regulidereprezentare:
X
b
ї x
m
x
mͲ1
x
mͲ2
....x
0•
x
Ͳ1
x
Ͳ2
....x
Ͳn
× 0ч x
i
<b,i=Ͳn..m
× x
m
!=0,x
Ͳn
!=0
× X
b
=x
m
*b
m
+x
mͲ1
*b
mͲ1
+....x
0
*b
0
+x
Ͳ1
*b
Ͳ1
+ x
Ͳ2
*b
Ͳ2
...x
Ͳn
*b
Ͳn
· Tipuri:
÷ sistemulbinar(b=2):puƜinereguli,multecifre
÷ sistemulzecimal(b=10):multereguli,maipuƜinecifre
÷ sistemulhexazecimal(b=16):sistemintermediarîntrebinarƔizecimal
· Regulideconversie(ex.binar– hexazecimal):
1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0
2 B A C
462
CONVERSIIBINAR CONVERSIIBINAR– – ZECIMAL ZECIMAL– – HEXAZECIMAL HEXAZECIMAL
· Regulideconversie:
463
CONVERSIANUMERELORRA CONVERSIANUMERELORRAf fIONALE IONALE
· ConversiapĉrƜiiîntregiserealizeazĉprindivizaresuccesivĉcunouabazĉ
exempludinbaza10înbaza2:
3030
10
=11110
2
0,480,48
10
=0,0111...
2
150 0,960
71 1,831
31 1,661
11 1,321
· ConversiaparƜiifracƜionareserealizeazĉprinînmulƜiresuccesivĉcunouabazĉ
atenƜie !!! conversianuesteprecisĉ(univocĉ)
464
REPREZENTAREADATELORNUMERICE REPREZENTAREADATELORNUMERICE
· ModuldereprezentareadatelenumericeîntrͲuncalculatorareinfluenƜĉdirectĉƔi
depindedirectde:
» structuraUCP
» dimensiunearegistrelordeuzgenerallocale
» dimensiuneamagistraleiinterne
» complexitateaunitĉƜiideexecuƜie
· ÎnfuncƜiedepoziƜiavirgulei,reprezentĉrilepotfi:
» reprezentareînvirgulĉfixĉ :pentrunumereîntregisausubunitare
» reprezentareînvirgulĉmobilĉ :pentrunumerereale
• VirgulanusereprezintĉfizicnicĉieriînregistrelecalculatoruluidarpoziƜiasaeste
cunoscutĉ(stabilitĉ)pentrufiecaredintremoduriledereprezentare
465
VIRGULAFIX VIRGULAFIX– –VIRGULMOBIL VIRGULMOBIL
· Reprezentareaînvirgulĉfixĉ virgulĉfixĉestefolositĉdetoatecalculatoarelenumericedeuz
general
÷ Majoritateaprocesoarelordeuzgenerallucreazĉcunumereîntregiînvirgulĉ
fixĉ,datoritĉavantajelorînceeacepriveƔtestructurahardwareacircuitelor
pentruoperaƜiiaritmeticeƔilogice
÷ Reprezentareaînvirgulĉfixĉcunumeresubunitareareavantajedinpunctulde
vederealoperaƜiilordeînmulƜire,pentrucĉaceastĉoperaƜienuvaducela
depĉƔireacapacitĉƜiidereprezentarepentruprodus
· Reprezentareaînvirgulĉmobilĉ virgulĉmobilĉ sefacepentrunumerereale
÷ NutoatecalculatoareleconƜinînsĉsuportulhardwarenecesarpentruaritmetica
învirgulĉmobilĉ(8086arenevoiedecoprocesorulmatematic8087)
÷ OperaƜiilecunumereînvirgulĉmobilĉsepotefectuapeprocesoareînvirgulĉ
fixĉ,prinemulare(interpretare)cuajutorulunorprogramedeemulare
466
FORMATEBINAREDEREPREZENTAREADATELORNUMERICE FORMATEBINAREDEREPREZENTAREADATELORNUMERICE
· Bit(binarydigit):
÷ unitateaelementarĉdeinformaƜie
÷ stareaunuibistabilsauauneiceluleelementaredememorie
· Octet(byte) – grupde8biƜi :
÷ unitateaelementarĉdeadresarelacelemaimultecalculatoareactuale
÷ poatereprezenta:ovaloarenumericĉ,uncaracter(codASCII)
÷ bitul7– MSB(celmaisemnifiativbit)
÷ bitul0– LSB(celmaipuƜinsemnificativbit)
· Cuvânt(word)– 16biƜi:
÷ folositpentrureprezentareaîntregilor
· DubluͲcuvânt(doubleword)– 32debiƜi:
÷ reprezentareanumerelorînvirgulĉfixĉsauînvirgulĉflotantĉsimplĉprecizie
· CuadrupluͲcuvânt(quadͲword)– 64debiƜi:
÷ numereînvirgulĉfixĉsauînvirgulĉflotantĉdublĉprecizie
467
FORMATEBINAREDEREPREZENTAREADATELORNUMERICE FORMATEBINAREDEREPREZENTAREADATELORNUMERICE
· Cuvânt(word)– 16biƜi:
÷ folositpentrureprezentareaîntregilor,simplĉprecizie
· DubluͲcuvânt(doubleword)– 32debiƜi:
÷ folositpentrureprezentareanumerelorînvirgulĉfixĉ(dublĉprecizielasistemele
pe16biƜi)sauînvirgulĉflotantĉ
· CuadrupluͲcuvânt(quadͲword)– 64debiƜi:
÷ folositpentrureprezentareanumerelorînvirgulĉfixĉ(dublĉprecizielasistemele
pe32biƜi)sauînvirgulĉflotantĉ
· Formateextinse– 80debiƜi:
÷ folositpentrureprezentareanumerelorînvirgulĉflotantĉdublĉprecizie
468
REPREZENTAREANUMERELORCUSEMN REPREZENTAREANUMERELORCUSEMN
· Sefolosesctreitipuridecoduribinare:
÷ coddirect (numitƔicodmĉrime/modulƔisemn,notatpescurtMS MS)
÷ codinvers (numitƔicodcomplementfaƜĉde1,notatpescurtC1 C1)
÷ codcomplementar (numitƔicodcomplementfa codcomplementfaƜ Ɯĉde ĉde2 2,notatpescurtC2 C2)
· Pentrutoateceletreitipuridecodurireprezentareanumerelorpozitiveesteidenticĉ
· ÎndescriereacodurilorvomconsideracĉtoatecuvinteleaulungimeadenbiƜi
469
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNMRIME NMRIMEb bISEMN ISEMN
· Codare:
÷ MSBeste1pentrunumerenegative 10000110:Ͳ6
÷ MSBeste0pentrunumerepozitive 00000110:6
÷ restulbiƜilorcodificĉmodulul(mĉrimea)numĉruluiƔiesteacelaƔipentrunumere
pozitiveƔinegative
· Domeniudereprezentare:
÷ numereîntregi: Ͳ(2
nͲ1
Ͳ1)ч Nч 2
nͲ1
Ͳ1
÷ numeresubunitare: Ͳ(1Ͳ2
nͲ1
)ч Nч 1Ͳ2
nͲ1
· Dezavantaje :
÷ AlgoritmirelativcomplecƔipentruuneleoperaƜiiaritmetice(adunareƔiscĉdere)
÷ Existĉdouĉreprezentĉripentrunumĉrulzero:
00000...0 Ɣi 10000...0
470
C1 C1– – CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE1 1
· Codare:
÷ pentrunumerenegativesecomplementeazĉtoƜibiƜiidinreprezentareaMS,iar
bituldesemneste1
÷ formulĉdecalculparteîntreagĉ: (N)
C1
=2
8
Ͳ |N| Ͳ 1
· Exemplu:
÷ N=6 ї 00000110
÷ N=Ͳ6 ї 11111001
· AcelaƔidomeniudereprezentarecaîncazulcoduluidirect
· Avantaje:
÷ codarefoartesimplĉ
÷ domeniusimetricalnumerelorreprezentate
· Dezavantaje:
÷ algoritmirelativcomplecƔipentruoperaƜiilearitmeticeelementare
÷ reprezentaredublĉpentrunumĉrulzero:
00000...0Ɣi 11111...1
471
C2 C2– – CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE2 2
· Codificare:Pentrunumerelenegative,codulsepoatededuceîntreimoduri:
· ExempluN=Ͳ6 :
C1 11111001+
1
11111010
· Domeniudereprezentare:
÷ numereîntregi: Ͳ(2
nͲ1
Ͳ1)ч Nч 2
nͲ1
Ͳ1
÷ numeresubunitare: Ͳ1ч Nч 1Ͳ2
nͲ1
parteaîntreagĉ parteafrancƜionarĉ
÷ din(N)
C1
(N)
C2
=(N)
C1
+1 (N
f
)
C2
=(N
f
)
C1
+1/(2
nͲ1
)
÷ din|N| (N)
C2
=2
n
Ͳ |N| (N)
C2
=2
n
Ͳ |N
f
|
÷ Folosind reprezentarea modulului numĉrului negativ, secomplementeazĉ
toƜibiƜiimaipuƜinprimulbit1porninddelaLSB.
472
C2 C2– – CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE2 2
· ReprezentareaîncodcomplementaranumerelornegativesͲageneralizatla
procesoareleactuale,datoritĉavantajelor avantajelorurmĉtoare:
» Scĉdereaunuinumĉrdinaltnumĉresteechivalentĉmatematiccuadunarea
complementuluidedoiascĉzĉtoruluiladescĉzut(seimplementeazĉdoar
operaƜiadeadunare)
» CodificareaînC2printrͲuncircuitelectronicestefoarteuƔorderealizat
» C2areosingurĉreprezentarepentruzero(000...0),(rezultĉuncodînplus,la
acelaƔinumĉrdebiƜi,pentrureprezentareaaltuinumĉr)
» UnîntregînreprezentareaC2poatefiuƔorextinslaunformatmaimare(numĉr
maimaredebiƜi)fĉrĉschimbareavaloriisale–estenecesardoarcabitulde
semnsĉfierepetatîntoatepoziƜiilebinaredeordinsuperior(extensiedesemn)
16b: snnnnnnnnnnnnnnn
32b: ssssssssssssssss snnnnnnnnnnnnnnn
· Principaluldezavantaj dezavantaj alcoduluicomplementarîlconstituiealgoritmiipentru
înmulƜireƔiîmpĉrƜire,maicomplecƔidecâtceicorespunzĉtoricoduluiMS
473
C2 C2– – CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE2 2
· Exempledecoduripe8biƜipentrunumerecusemn:
· OperaƜiiaritmeticeinC2:
– adunare Ͳ7+4
Ͳ711111001+
400000100
Ͳ311111101
– scĉdere Ͳ7Ͳ 4
Ͳ711111001Ͳ Ͳ711111001+
400000100 Ͳ411111100
Ͳ1311110101
N MS C1 C2
6
Ͳ6
00000110 00000110 00000110
10000110 11111001 11111010
474
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
· SefoloseƔtepentrustocareaƔiprelucrareanumerelorreale încalculator
· DenumireaprovinedelafaptulcĉvirgulanuareopoziƜiefixĉfaƜĉdeƔiruldebiƜice
reprezintĉvaloareanumĉrului
· PoziƜiavirguleisepoatemodificafiecasĉpermitĉefectuareadeoperaƜiiaritmeticeƔi
logicecunumerereale,fiepentrureprezentareastandardizatĉ,învirgulĉmobilĉ,a
numerelorreale
· Reprezentarenumĉrreal:
N= Mx B
E
– – M M = =mantisa mantisa,reprezentatĉcaunnumĉrbinarsubunitarcusemn;
– – E E = =exponentul exponentul,reprezentatcaunnumĉrîntregcusemn;
– – B B = =baza baza,este2sauoputerealui2
475
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
· Reprezentareanumerelorîncalculatorsefaceprincuvintebinareculungimeegalĉ
culungimearegistrelordestocare
· Preciziadereprezentareaunuinumĉrrealestedatĉînprimulrânddenumĉrulde
biƜifolosiƜipentrureprezentareaMantisei
· DomeniulmaximdereprezentareestedeterminatdevaloareaadoptatĉpentruBazĉ
ƔidenumĉruldebiƜifolosiƜipentruareprezentaExponentul
· Bazanuestereprezentatĉîncalculatorulnumeric,darseƜinecontdevaloareaei
atuncicândseefectueazĉoperaƜiiaritmetice
· LaunanumitcalculatornumericvaloareabazeiesteaceeaƔipentrutoatenumerele
realereprezentate
· Spredeosebiredenumereleîntregi,numerelerealesereprezintĉcuoanumitĉ
aproximaƜieîncalculator,determinatĉdenumĉruldebiƜi.Eroareadereprezentare
depindededistanƜadintredouĉnumeresuccesivereprezentabilecuceinbiƜi
476
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
· PentrureprezentareamantiseinumerelorînvirgulĉmobilĉsefoloseƔteforma forma
normalizatĉ normalizatĉ încare,pentrureprezentareaînmĉrimeƔisemn,primapoziƜiebinarĉ
dupĉvirgulĉestediferitĉdezero
· Normalizarearestrângemĉrimeavaloriiabsoluteamantiseibinareladomeniul:
½ч M < 1
· NormalizareaînbinaresteuƔordefĉcut,prindeplasareamantiseicĉtredreaptasau
stângaƔiincrementarearespectivdecrementareacorespunzĉtoareaexponentului
· Deexemplu,numĉrulcumantisanormalizatĉ0.11011000× 2
10
poatefiscris:
0.11011000× 2
10
=0.011011000× 2
11
=0.0011011000× 2
12
477
SCARADEREPREZENTAREANUMERELORREALE SCARADEREPREZENTAREANUMERELORREALE
· Reprezentareaînvirgulĉflotantĉestediscretĉ;numodeleazĉcompletƔicontinuu
mulƜimeanumerelorreale
· Reprezentaresimplĉprecizie(32debiƜi):
÷ ÷ 1 1 bitdesemn bitdesemn
÷ ÷ 8 8 bi biƜ Ɯiexponent iexponent
÷ ÷ 23bi 23biƜ Ɯimantisĉ imantisĉ
· Limiteledereprezentareanumerelorrealepe32debiƜi(simplĉprecizie):


-N
max
-N
min
0 N
min
N
max
í N
min
=о 0,1000...0 x 2
Ͳ127
+N
max
=+0,1111...1x2
+127
exponent
pe8biƜi
23debiƜi‘1’
mĉrime
1bitde
semn
22debiƜi‘0’
mĉrime
478
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
· DacĉînurmaefectuĉriioperaƜieiaritmeticerezultatule [ͲN
MAX
,+N
MAX
]sespunecĉsͲ
aprodusodepĉƔireacapacitĉƜiidereprezentare
· ProgramulîncareseproducedepĉƔireaseîntrerupe,iarevenimentulestetratatdeo
rutinĉ(deservireacazuluideexcepƜie"depĉƔire"),carevatransmiteunmesajcĉtre
utilizator
· Dacaînsĉrezultatulseîncadreazĉînintervalulcunumerepreamicipentruafi
reprezentatecumantisenormalizate[ͲN
MIN
,+N
MIN
]numĉrulesteaproximat,de
obicei,cuzero
· Reprezentarealuizeropuneuneleprobleme,pentrucĉmantisapoaterezultazero
(nenormalizatĉ)darexponentulsĉupoateaveaoricevaloare
· Dinpunctuldevedereacircuitelorcaretesteazĉdacĉunnumĉresteegalcuzero,ar
fiavantajoscasĉavemaceeaƔireprezentarepentrunumĉril0calaîntregi
(succesiunenumaidebiƜi0întoatecâmpurile:semn,exponent,mantisĉ)
· Valoareazeroesteconsideratĉaficeacarecorespundelaexponentulmaximnegativ
(Ͳ127înexempluldemaisus)
479
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
· Deasemenea,puneproblemedereprezentarefaptulcĉestenecesarsĉsereprezinte
douĉsemnepentrufiecarenumĉr(semnulmantiseiƔisemnulexponentului)
· Ocalederezolvareaproblemeireprezentĉriinumĉruluizeroestefolosirea
exponentuluideplasat exponentuluideplasat (saucaracteristicĉ caracteristicĉ,notatĉîncontinuarecuC)cuvaloarea
constantĉK :
· Deplasarea,pentrureprezentarepe8biƜiaexponentuluisepoatefacecu
C C = =E E + +K K , K =127(2
nͲ1
Ͳ1)
· Astfelcĉvaloareacaracteristicii seîncadreazĉînintervalul[0,254]
Caracteristica Caracteristica Mantisa Mantisa S S
3130 2423 0
480
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
· DacĉmantisaestereprezentatĉîncoddirectƔiestenormalizatĉ,primulbit al
acesteiaeste1pentrutoatenumerele
· Acestprimbitpoatesĉnumaifiereprezentat(bitascuns,"hiddenbit“ Ͳ HB)
· Caurmare,înformatulpe32debiƜi,mantisapoatefireprezentatĉpe24debiƜi(23
biƜireprezentaƜiefectiv+1HB)preciziadereprezentarecrescânddedouĉori
· Deasemenea,faptulcĉbitul1esteascuns,permitenumerelorpozitivefoartemici
(+0,1*2
Ͳ127
,reprezentatcuHB)sĉaibĉnumaizerouripetoƜicei32debiƜi,deci
reprezentareanumĉruluizeroesteidenticĉcuceadelareprezentareaîntregilor,
putânduͲsefolosiaceleaƔitipuridecircuitededetecƜiearezultatuluinul
· Caurmare,laefectuareaoperaƜieidenormalizare,virgulamobilĉestemutatĉpânĉ
cândînstângasasegĉseƔteunbit1,iarceilalƜibiƜisegĉsescîndreaptavirgulei
481
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
· FormatuldereprezentareînvirgulĉmobilĉestabilitprinstandardulIEEE754,apĉrut
în1980Ɣicompletatulterior:
– 32biƜi(simplĉprecizie)– reallung (float)
– 64biƜi(dublĉprecizie)– reallung(double)
· Înoricaredintreformate,standardulimpunefolosirea
E exponentuluideplasat
E formanormalizatĉpentrumantisĉ
E bitulascuns
E bazaBesteconsideratĉafiegalĉcu2
· Bitulascunsnusereprezintĉînformatulbinarînvirgulĉmobilĉ,dardevaloareasase
Ɯinecontatuncicândselucreazĉcunumerele(unitĉƜilearitmeticeƔilogiceƜincont
debitulascuns)
482
REPREZENTAREANUMERELOR REPREZENTAREANUMERELORÎ ÎNVIRGULMOBIL NVIRGULMOBIL
41C80000h=01000001110010000...0 =1,52625× 2
4
=25
C F S
caracteristica : C=83h=E+127¬ E=4
mantisa : M=1F=1100100000...0= 1 × 1 +
1 × 0,5 +
0 × 0,25 +
0 × 0,125 +
1 × 0,0625+
0 × 0,03125+...
1,52625
6,1875=1,546875× 2
2
=01000000110001100...0 =40C60000h
C F S
caracteristica : E=2¬ C=E+127=129=81h
mantisa : M=1,546875(sescadsuccesivvalorilelui1/2
m
,cum=23Ͳn,unde
n esterangulbinaralmantisei;seia1acoloundescĉdereaeste
posibilĉƔi0 înrestpentruconstruireamantisei)
483
CODULALFANUMERIC CODULALFANUMERICͲ Ͳ ASCII ASCII
· SuntcoduricarestabilescocorespondenƜaîntremulƜimeaformatĉdinlitere,cifreƔi
semnespeciale,denumiteîngeneralcaractereƔimulƜimeabinarĉB={0,1}.
· Celmaiutilizatcodalfanumericfolositînprezent,estecodulASCII(American
StandardCodeforInformationInterchange)
· IniƜialafostuncodde7biƜi,¬ 2
7
caractere. În prezent se foloseƔte codul ASCII
extins,cu8biƜi,apelatadeseadoarprinnumeledecod“ASCII”
· Primele32decaractereASCIIcodificĉcoduridecontrol Ɣisuntutilizatepentrua
transmitediferitecaracteredecontrolprivindmesaje
· AceastapentrucĉASCIIafostdezvoltatiniƜialpentrutransmisiadatelor(deexemplu
caracteruldecontrol^D,EOT=EndOfTransmission,esteutilizatpentruaindica
sfârƔitulunuifluxdedate)
· Înafaracodurilordecontrol,existĉcoduripentru64litereƔicifreƔi196caracterede
control,semnedepunctuaƜie,caracteregraficeƔialtecaractere
484
CODULALFANUMERIC CODULALFANUMERICͲ Ͳ ASCII ASCII
· ScopulprincipalalcoduluiASCIIestereprezentareatextului
– Dateledetiptextsunt,deregulĉ,referitecadatedetipASCII
– OsecvenƜadecaracterereprezentateprincodurilelorASCII,enumitĉƔirde
caractere("string")
– birulpoatesafievid(niciuncaracter)saupoatecuprindeofrazĉ,paragraf,sau
chiarunblocîntregdecaractere(deaceealungimeaƔiruluitrebuiecunoscutĉ)
· Exemple
– literemari : ‘A’ – 41h,‘B’ – 42h,‘C’ – 43h,...
– literemici: ‘a’ – 61h,‘b’ – 62h,‘c’ – 63h,...
– cifre: ‘0’ – 30h,‘1’ – 31h,‘2’ – 32h,...
– altele: spaƜiu– 20h,tab– 09h,LF– 0Ah,CR– 0Dh,...
· CodificareaASCIIfaciliteazĉconversiidegenul:
– cifrĉzecimalĉў codalfanumeric:adunare/scĉdere30h saubIlogic0Fh
– literemariў literemici:set/resetbit5 (1– literemici,0– literemari)

CE ESTE UN MICROPROCESOR ?

Un microprocesor este o unitate central de prelucrare (UCP) integrat într un singur chip Este parte integrant a tutror calculatoarelor i sistemelor de calcul actuale • Un calculator este o ma in de prelucrare automat a datelor ce func ioneaz sub controlul unei liste de instruc iuni (program) stocate în memoria principal a calculatorului. Un calculator este o combina ie de resurse fizice (hardware) i programe (software) Un calculator con ine: UCP + Memorie + I/O Microprocesorul este entitatea fizic menit s interpreteze i s execute comenzile existente în programul destinat unei aplica ii.

• •

3

ORGANIZAREA UNUI SISTEM DE CALCUL
Un sistem de calcul reprezint o ma in automat destinat prelucr rii informa iilor (în 3 faze)
transformarea informa iei (semnale) într un format compatibil cu unitatea de calcul; prelucrarea intern a datelor; transformarea datelor furnizate în semnale necesare aplica iei.

Pentru a asigura flexibilitatea sistemului de calcul cele 3 faze vor fi asigurate de elemente diferite: un calculator + periferice. • Organizare calculator:
– UCP (c i de date i control) – Memoria principal – Interfe e sau sistemul de intrare ie ire (leg tura cu dispozitivele externe – periferice)

Perifericele calculatorului includ
– Dispozitive de intrare (tastatur , mouse, memorii secundare) – Dispozitive de ie ire (display, difuzoare, memorii secundare, imprimant )

4

FLUXURI INFORMA IONALE

Intern, un calculator prelucreaz mai multe fluxuri de informa ie : datele numerice i instruc iunile programului. Dup modul de prelucrare al acestor fluxuri informa ionale calculatoarele se pot clasifica în: ma ini de tip SISD (Single Instruction Single Data) – arhitecturi secven iale (von Neumann, Harvard); arhitecturi paralele cu 2 sau mai multe unit i centrale ce prelucreaz simultan mai multe fluxuri de informa ie: ma ini SIMD (Single Instruction Multiple Data) i MIMD (Multiple Instruction Multiple Data).

5

FLUXURI INFORMA IONALE
Microprocesoarele sunt utilizate în general pentru aplica ii de înalt performan procesare. Sunt utilizate ca UCP pentru calculatoare de uz general (GPC) Microprocesoarele necesit extern memorie i interfe e IO Microprocesoarele sunt utilizate în PC uri, sta ii de lucru, servere, unde compatibilitatea software, performan a, generalitatea i flexibilitatea sunt importante. Microprocesor = Flexibilitate de

Microcontrollerele sunt proiectate pentru a se ob ine o dimensiune redus a chip ului, mic orarea costurilor i includerea de spa iu de memorie i IO pe chip. Microcontrollerele sunt adesea “specializate pe aplica ii” în dauna flexibilit ii. Un microcontroller con ine pe un acela i chip: UCP, Memorie, IO Microcontroller = Specializare

6

MICROPROCESOARE

SCURT ISTORIC
Dezvoltarea rapid în domeniu se bazeaz pe dou caracteristici principale:
– dezvoltarea tehnologiei semiconductoare utilizat la construc ia microprocesoarelor – inova ii în organizarea i proiectarea calculatoarelor

Anii 1960 – calculatoare mari. Aplica iile tipice includeau proces ri de date în afaceri i calcule tiin ifice Anii 1970
– apari ia minicalculatorului: laboratoare tiin ifice, utilizatori multipli care partajeaz resursele de la terminale independente – microprocesorul : îmbun t iri în tehnologia circuitelor integrate, cost redus, produc ie în num r mare, r spândire în multe aplica ii de calcul numeric

Generalizarea limbajelor de programare de nivel înalt (HLL) + translatoare a înl turat nevoia compatibilit ii programelor la nivel de cod obiect Crearea de sisteme de operare standardizate, independente de produc tor, care au sc zut costurile i riscurile de utilizare a noilor arhitecturi

8

2300 tranzistoare). 1990 Intel 80960 – RISC PowerPC604 (‘95). Pentium (‘94): arhitecturi superscalare. 32 bi i. Ataris).SCURT ISTORIC • Anii 1980: apari ia arhitecturilor RISC (Reduced Instruction Set Computer). Hobby computers: Commodore. workstations). 16 bi i. Zilog Z 80 (1976) Microcontrollere: μP 6502 (1975 bazat pe MC6800. Motorola MC68000 (1979) anii ’80: instruction pipelining. cache 1980 Intel iAPX 432 32 bi i. notebook) – electronic digital de larg consum • 9 MICROPROCESOARE 1971 – Primul microprocesor proiectat pentru aplica ii de control (Intel 4004. Apple. – Ma inile RISC au permis dezvoltarea paralelismului la nivel de instruc iune (ini ial prin pipelining iar apoi prin lansarea multipl de instruc iuni) i utilizarea memoriilor cache. Intel 8048 (1976 – familia Intel MCS 48). pipeline cu 5 etaje. execu ie bazat pe mai multe unit i pipeline i mai multe unit i aritmetice 10 . 8 bi i secven ial: Intel 8080 (1974). 1987 Zilog Z 280. Anii 1990: – r spândirea leg turii Internet i a tehnicilor World Wide Web – dispozitive de calcul portabil (PDA. 1984 Motorola MC68020. Motorola MC6800 (1974). – Apari ia calculatoarelor desktop construite pe baz de microprocesor (personal computers. Intel 8051 16 bi i: Intel 8086 (1978).

......... 12 ........MICROPROCESOARE • anii ’90: – 1995 Intel 133MHz Pentium – 1996 Intel Pentium II – 1999 Intel Pentium III la 500MHz • • • • • RISC Multiprocesoare – SoC (System on Chip) VLIW (very large instruction word) – un compilator planific instruc iunile (static) – spre deosebire de planificarea dinamic de la procesoarele superscalare Din ce în ce mai multe func ii implementate hardware: acceleratoare grafice.. 3D.. extensii de instruc iuni MMX Sisteme Embedded 90% din microprocesoarele produse în prezent: microcontrollere. procesoare media.... DSP.. 11 MICROPROCESOARE – secolul XXI Frecven e de ceas mai mari de 2 GHz Procesoare de putere mic (aplica ii mobile) Micro arhitecturi superscalare (mai multe instruc iuni lansate în paralel) SIMD (Single Instruction Stream Multiple Data Stream): opera ii similare efectuate în paralel pe seturi diferite de date Func ii de prelucrare DSP: MMX. grafic .. sunet Nuclee procesor multiple pe un chip Memorie cache pe 2 3 niveluri ... procesoare grafice... procesoare de comunica ii etc.

server LAN – Metrici: throughput. cuptor cu microunde.MICROPROCESOARE – secolul XXI Pia a microprocesoarelor s a dezvoltat pe trei direc ii mari: • Desktop – Exemple: PC. server baz de date. camer video digital – Metrici: complexitate. PDA. 13 PERFORMAN A MICROPROCESOARELOR Performan a unui microprocesor e determinat de capacitatea de a prelucra date. Cre terea capacit ii de prelucrare se realizeaz pe mai multe c i : Tehnologic densitatea de integrare viteza de prelucrare a datelor (frecven a de tact) reducerea puterii consumate (controlul dimanic al consumului. sta ii de lucru – Metrici: laten (grafic i sistem de IO) • Servere – furnizeaz servicii de fi iere i calcul – Exemple : server Web. sc derea freven ei) viteza i capacitatea memoriei + înlocuirea HDD cu memorii externe pe siliciu Arhitectur pipeline ierarhizarea memoriei – memoria cache (mai multe niveluri de cache în interiorul chipului procesor) gama de reprezentare intern a datelor arhitectura setului setului de instruc iuni arhitectur multi core i arhitecturi paralele Firmware (software încorporat) gestiunea memoriei mecanisme multitasking memoria virtual 14 . fiabilitate. putere redus . scalabilitate • Sisteme Embedded (sisteme cu procesor înglobat) – Exemple: telefon celular. laten Pia a embedded este cea mai mare ! • Procesor Embedded = Un procesor programabil a c rui interfa de programare nu este accesibil utilizatorului final i care realizeaz un set restrâns de func iuni dedicate aplica iei specifice.

13μm (LGATE = 70nm. HOXID = 1.5 milioane CMOS 0.3Vcc) folosit la microprocesoarele actuale Cu toate acestea.PERFORMAN A MICROPROCESOARELOR DENSITATEA DE INTEGRARE Cre terea num rului de tranzistoare/chip – Pentium III 7. este greu s se echivaleze cre terea num rului de tranzistoare /chip cu cre terea performan ei procesoarelor 15 PERFORMAN A MICROPROCESOARELOR FRECVEN A DE CEAS Cu cât sunt mai multe impulsuri /secund cu atât mai mare este num rul de opera ii ce se poate executa Cu cât frecven a este mai mare cu atât cre te puterea consumat (comuta ie) Cre terea frecven ei impune deci mijloace de disipare a c ldurii procesorului Procesoare multi core (mai multe nuclee ce lucreaz în paralel) Intel a calculat c sc derea cu 20% a frecven ei pentru un nucleu conduce la sc derea la jum tate a puterii consumate i doar la 13% pierderea de performan Dac se împart sarcinile de prelucrare între 2 nuclee ce lucreaz la o frecven redus la 80%.18μm cu alimentare la 1.5nm cu alimentare la 1. se ob ine o performan mai mare cu 73% pentru aceea i putere consumat Disparea c ldurii este mai bun (dou noduri în loc de unul) Tendin a actual : oprirea cre terii frecven ei de ceas + arhitecturi multi core 16 .18 m – Pentium IV 42 de milioane – procesoare actuale peste 1 miliard de tranzistoare/chip – memorii peste 64 512 miliarde Viteza de prelucare a datelor depinde de viteza de comuta ie a tranzistoarelor HMOS din compunerea microprocesoarelor Viteza de comuta ie este direct propor ional cu l imea por ii tranzistoarelor Începând cu Pentium III se implementeaz tehnologia 0.6Vcc ceea ce permite dep irea barierei de 1GHz pentru frecven a de tact Din 2002 se implementeaz tehnologia 0.

în ritmul microprocesorului fiind de aproximativ 10 ori mai rapid decât memoria RAM Se organizeaz pe nivele ierarhice : memoria cache level 1 – este integrat în chipul procesorului (apare la 80x486. a tutror acestor faze Se implementeaz începând cu microprocesoarele evoluate (Pentium). în paralel.PERFORMAN A MICROPROCESOARELOR PIPELINE Executarea instruc iunilor se face în 4 5 faze : citire instruc iune decodificare instruc iune citire operand din memorie (dac eset cazul) fetch execu ie instruc iune salvare rezultate în memorie (dac este cazul) O arhitectur pipeline presupune implementarea unor blocuri structurale ce permit execu ia simultan . asigur interfa a cu memoria RAM în prezent se dispun mai multe niveluri de cache în interiorul procesorului se implementeaz spa ii diferite de memorie cache pentru instruc iuni i date : I cache i D cache 18 . la 8086 execu ia se f cea pseudo secven ial (dou unit i func ionale ce permit aducerea instruc iunilor din memorie în avans prefetch) În prezent se utilizeaz arhitecturi paralele i multi core avansate 17 PERFORMAN A MICROPROCESOARELOR MEMORIA CACHE Memoria cache este o zon de memorie foarte rapid în care se memoreaz instruc iuni i date cu care microprocesorul opereaz în mod curent – ultimele instruc iuni executate Aceast memorie lucreaz f r st ri de a teptare. primul procesor capabil s suporte interfe e grafice de tip Windows) memoria cache level 2 – extern microprocesorului.

PERFORMAN A MICROPROCESOARELOR REGISTRELE INTERNE ALE MICROPROCESORULUI Gama de reprezentare intern a datelor este un criteriu decisiv în m rirea capacit ii de prelucrare Aceasta cre te odat cu m rirea registrelor interne ale microprocesorului i a magistralei interne de date : 80x386 este primul microprocesor pe 32 de bi i Procesoare actuale : registre i magistrale de date pe 64 de bi i sau mai mult COMPLEXITATEA SETULUI DE INSTRUC IUNI CISC (Complex Instruction Set Computer) RISC (Reduced Instruction Set Computer) 19 PERFORMAN A MICROPROCESOARELOR FIRMWARE – SOFTWARE ÎNCORPORAT O alt direc ie pentru cre terea capacit ii de prelucrare a microprocesoarelor este înglobarea de resurse ale sistemului de operare direct în chip (cât mai mult soft implemetat în interiorul microprocesorului) Ex: modulul de gestiune a memoriei (MMU) implementarea mecanismelor multitasking gestionarea memoriei virtuale direct de c tre chip (la 80x286 gestiunea memoriei virtuale era f cut de SO prin grija programatorului) 20 .

25μ ’99 ’00 .18μ ’01 ’02 .13μ .6 m 5. Dual core Dual core IA 32 IA 32 MICROPROCESOARE (IERI – AZI – MAINE) An Clock Tz/chip (x106) (MHz) Tehnologie Registre/ Memorie Arhitectur Procesoare Intel 1978 1985 1989 1993 1995 1997 1999 2001 2004 2006 2009 10 16b/20M 32b/4G 32b/4G Scalar Scalar Scalar . hyperthreading Nehalem.13 m 32b/4G 32b/4G 32b/4G 32b/4G 32b/4G 64b/4G 64b/70TB /0.18 m 42/0.25 m 42/0.5/0.35 m 7/0. I7 (8M L3) 22 66 233 200 450 1000 1500 3000 3.18μ .EVOLU IA MICROPROCESOARELOR 450MHz 800MHz 1.5GHz 3GHz Madison Madison IA 64 IA 64 McKinley McKinley Performan Itanium Itanium IA 64 IA 64 Pentium® IV Pentium® IV Pentium® Pentium®III Xeon™ Pentium® Xeon™ Pentium®III Xeon™ Pentium® IIIIXeonTM Pentium® XeonTM Pentium® Processor Processor ’98 .2/0.13μ ’03 21 Deerfield Deerfield IA 64 IA 64 . multi core (4) i hyper threading 8086 80386 80486 Pentium Pentium Pro Pentium II Pentium III Pentium IV Pentium IV Core 2 Duo Intel I5...13 m 64 bi i/70TB . MMX Superpipeline.18 m /0. MMX NetBurst Hyper threading Multicore.25μ .25 8.1/0. FPU încorporat Pipeline Superpipeline P6 Superpipeline.

tehnologia semiconductoare utilizat . cum ar fi : organizarea sistemului de memorie structura magistralelor organizarea intern a UCP Dou ma ini pot avea organiz ri diferite. dar acela i ISA. etc. Arhitectura setului de instruc iuni ISA (Instruction Set Architecture) Interfa între hardware i software. Implementare. Hardware se refer la aspectele specifice de implementare ale ma inii (proiectul de detaliu al logicii. cu dou componente : Implementare Organizarea include aspectele de nivel înalt ale proiectului. tipul de capsul . ISA include tot ce trebuie s cunoasc un programator pentru a programa la nivel fizic ma ina.ARHITECTURA DE CALCULATOR ARHITECTURA DE CALCULATOR Arhitectura de calculator include: 1. ISA permite ca dou ma ini diferite (implementare. costuri i performan e diferite) s ruleze acelea i programe. 2.) 24 .

memoriei i sistemului de intrare/ie ire ce s fac . • cale de date – (“mu chii” procesorului). Semnalele de control spun c ii de date. Calea de date realizeaz opera ii aritmetice / logice i de transfer 26 . conform instruc iunilor unui program.ORGANIZAREA GENERAL A UNUI CALCULATOR UNI PROCESOR 25 ORGANIZAREA GENERAL A UNUI CALCULATOR UNI PROCESOR Fluxul de informa ii este controlat de UCP pe dou c i: • cale de control – (“creierul” procesorului).

memorie principal . module de I/O) este numit magistral sistem 28 .ORGANIZAREA GENERAL A UNUI MICROPROCESOR 27 MAGISTRALA SISTEM Principalele unit i componente ale sistemului (procesor. module de I/O) sunt interconectate pentru a schimba informa ii de date i control Calea de comunicare între dou sau mai multe unit i este numit magistral (bus) Magistrala con ine linii electrice care transfer informa ia codificat în binar prin intermediul unor semnale electrice (niveluri de tensiune) O magistral la care sunt conectate principalele componente ale calculatorului (procesor. memorie principal .

se construie te o ierarhie de mai multe magistrale interconectate. toate dispozitivele sunt conectate la magistral prin intermediul unor circuite 3 state. Elemente cheie la proiectarea magistralelor: – arbitrare – sincronizare – l rgimea magistralelor (num r de bi i transmi i în paralel) 29 MAGISTRALA SISTEM 30 .MAGISTRALA SISTEM Magistrala este un canal de comunicare partajat în timp : doar un dispozitiv poate transmite date pe magistral la un moment dat. Pentru a înl tura supraînc rcarea canalului de comunica ie. i a cre te performan ele acestuia. Pentru ca celelalte dispozitive s nu altereze datele vehiculate.

IERARHIE DE MAGISTRALE MULTIPLE • Cu cât sunt mai multe dispozitive conectate la o magistral . cu atât mai mare este lungimea acesteia • Cu cât sunt mai multe dispozitive conectate la o magistral . cu atât mai mare va fi întârzierea produs la transmisia datelor • Dispozitivele conectate la o magistral au viteze mult diferite de func ionare – Compara i viteza procesorului (UCP) cu a unui echipament periferic • Magistrala unic conduce la sc derea vitezei medii a transmiterii informa iilor 31 MAGISTRALE MULTIPLE Structur tradi ional tipic 32 .

Avantaje : viteza mare de transfer logic suplimentar foarte simpl Dezavantajul const în faptul c pentru transferurile care s ar putea face mai rapid decât intervalul corespunz tor unui num r întreg de cicluri magistral . 800 MHz Toate transferurile pe magistral dureaz un num r întreg de cicluri de ceas. protocolul trebuie p strat (timp prestabilit de transfer) 34 . numite cicluri magistral . 333.MAGISTRALE MULTIPLE Structur de înalt performan 33 MAGISTRALE SINCRONE Magistralele sincrone includ o linie de CLOCK (controlat de un oscilator cu cuar ) între liniile magistralei de control. 400. 133. 66. 266. Frecven e tipice sunt : 5. 600.

tastatura furnizeaz date la viteza de reac ie uman . un procesor Pentium poate furniza unei imprimante câteva sute de milioane de caractere pe secund ce nu pot fi imprimate la aceast vitez .) Calculatoarele au nevoie de protocoale de transfer de date pentru a nu limita viteza de execu ie la cea a dispozitivelor periferice. lente : handshaking Implementarea acestui mecanism la nivel fizic : porturi de stare i porturi de control în componen a dispozitivelor de intrare/ie ire controllere de întrerupere pentru tratarea cererilor dispozitivelor esterne 35 MAGISTRALE ASINCRONE HANDSHAKING 36 . etc.MAGISTRALE ASINCRONE Multe dispozitive de I/O nu pot accepta/genera date la o rat mare (ex.

Calculatorul con ine urm toarele subsisteme: unitate de control unitate aritmetic i logic (ALU) sistem I/O memorie Calculatoarele cu arhitectur von Neumann sunt calculatoare de uz general. Con inutul memoriei este adresabil la nivel de loca ie (f r a se considera ce informa ie este stocat : date sau cod). Ele pot rezolva diverse probleme în func ie de programul executat 38 .TIPURI PRINCIPALE DE ARHITECTURI Arhitectura von Neumann – o singur memorie pentru instruc iuni i date Arhitectura Harvard (DSP. MC) – memorii separate pentru instruc iuni i date 37 ARHITECTURA VON NEUMANN (1945) Datele i instruc iunile sunt stocate în aceea i memorie principal (conceptul de “program stocat”). Instruc iunile sunt executate secven ial (una câte una în ordinea loca iilor de memorie în care sunt stocate) cu excep ia faptului când acest lucru este precizat explicit în cod.

40 . codificate în form binar Instruc iunile recunoscute sunt rareori mai complicate decât: adun dou numere verific dac un num r este egal cu zero copiaz date dintr o zon a memoriei calculatorului în alt zon .ARHITECTURA VON NEUMANN – reprezentare structural arhitectur de uz general secven ial 39 REPREZENTAREA CICLULUI DE INSTRUC IUNE Pentru rularea programului. UCP are o func ionare ciclic la fiecare instruc iune executat Circuitele electronice ale unui calculator recunosc i execut doar un set limitat de instruc iuni elementare.

UNITATEA DE CONTROL (UC) Unitatea de control (UC) este “creierul” procesorului UC controleaz i sincronizeaz toate elementele din interiorul UCP i interfe ele c tre calea de date extern . ALU seteaz anumi i indicatori de condi ii (indicatori de stare. fanioane. folosite ca memorie temporar Registrele reprezint o memorie local UCP. În func ie de rezultatul opera iilor efectuate. de foarte mare vitez Setul de registre de uz general poate fi folosit îns i pentru salvarea diferitelor informa ii privind adresarea memoriei principale. 41 UNITATEA ARITMETIC I LOGIC (UAL) + REGISTRE Unitatea aritmetic i logic (ALU). flag uri) 42 . realizeaz opera ii logice sau aritmetice cu operanzii adresa i de UC Înainte de prelucrare. operanzii se stocheaz întrun set de registre de uz general.

MEMORIA PRINCIPAL Memoria principal serve te la stocarea datelor i instruc iunilor excecutate de UAL Stocarea datelor i instruc iunilor se face la loca ii de memorie consecutive adresabile direct 43 SISTEMUL DE INTRARE/ IE IRE Sistemul de I/O con ine loca ii adresabile (port uri) prin care calculatorul face schimb de informa ie cu lumea extern . Sistemul con ine circuite pentru func iile: schimbare format date (serial / paralel) stocare temporar de date (latch) verificare a corectitudinii datelor transferate sincronizare între periferic i UCP (datorit diferen elor mari de vitez de func ionare) logic de decodificare 44 .

codificate în form binar Instruc iunile recunoscute sunt rareori mai complicate decât: adun dou numere verific dac un num r este egal cu zero copiaz date dintr o zon a memoriei calculatorului în alt zon 46 . 45 REPREZENTAREA FUNC IONAL A UNUI CALCULATOR Un calculator poate fi descris i prin func iile opera iile pe care le pune la dispozi ia utilizatorului Circuitele electronice ale unui calculator recunosc i execut doar un set limitat de instruc iuni elementare.PERIFERICE Dispozitive (periferice) de intrare – recep ioneaz informa ia din mediul extern (prin diver i senzori) sub form de semnale electrice i o transform ca natur fizic i format de reprezentare compatibilitate cu nivelurile de tensiune recunoscute de calculator (ca valori binare). Dispozitive (periferice) de ie ire – opera ie invers dispozitivelor de intrare. Prelucreaz datele din calculator i le transform în informa ie acceptabil la dispozitivul de ie ire.

. La interpretare nu se genereaz un program executabil ca la translatare Limbaje de programare mai apropiate de limbajul uman: L2. Programatorul scrie programele sale într un limbaj L1. corespunz toare lui L0 : 0000 0100 0000 0110 47 MA INI VIRTUALE Func ional.. L3. Interpretorul este un program în L0 care ruleaz pe M0 i care preia instruc iunile programului în L1 ca pe date de intrare. (pentru ma ini virtuale M2. Translatarea: tot programul scris în L1 este transformat în program scris în L0 (executabil).C++). asamblor.LIMBAJUL MA IN – LIMBAJUL DE ASAMBLARE/PROGRAMARE Instruc iunile elementare.. Interpretorul cite te i decodific fiecare instruc iune din L1 i apoi trece imediat la execu ia acesteia. Numele acestui limbaj simbolic de programare este “limbaj de asamblare”. mai apropiat de limbajul uman Pentru a putea executa acest program pe ma ina M0 fiecare instruc iune din L1 a programului trebuie translatat în instruc iuni din limbajul L0 De exemplu programatorul poate scrie în L1 instruc iunea: add al. M3. format din instruc iuni simbolice (succesiuni de litere i cifre). programul în L0 este înc rcat în memoria calculatorului i executat Exemple de programe translator: compilator.) – sunt numite limbaje de nivel înalt (C. ..6 iar programul de translatare va genera succesiunea binar . recunoscute de un procesor formeaz limbajul ma in (cod ma in ) al procesorului Nota ie: limbaj L0 ce corespunde ma inii fizice M0. iar programul în L1 este abandonat. iar programul de translatare este numit “asamblor”. se poate spune c limbajul L1 corespunde unei ma ini virtuale programabile numit M1.. 48 .

CALCULATOR = SUCCESIUNE DE MA INI VIRTUALE Nivelul n : Programele în Ln pot sã fie interpretate de un interpretor ce ruleazã pe o ma inã de nivel inferior. sau pot sã fie translatate cãtre limbajul ma inã al unei ma ini inferioare Nivelul 2 : Programele în L2 pot fi interpretate de un interpretor ce ruleaz pe o ma in M1 sau M0 sau pot fi translatate în L1 sau L0 Nivelul 1 : Programele în L1 pot fi interpretate de un interpretor ce ruleaz pe o ma in M0 sau pot fi translatate în L0 Nivelul 0 : Programele în L0 pot fi executate direct de c tre circuitele electronice numerice 49 IERARHIE DE MA INI VIRTUALE LA UN GPC MICROPROGRAMAT 50 .

SOFTWARE 51 NOTE 52 .

Circuitul de decodificare i semnelele de control Magistralele interne ale procesorului Execu ia instruc iunilor i mecanisme pipeline 54 . Structur i func ionare Unitatea de control.UNITATEA CENTRAL DE PRELUCRARE (UCP) UNITATEA CENTRAL DE PRELUCRARE Structura unit ii centrale de prelucrare Ciclurile de func ionare a unui procesor Unitatea aritmetic i logic .

FUNC IE PROCESOR Unitatea Central de Prelucrare (UCP a calculatorului numeric este o structur de UCP) procesor de uz general. (micro)procesorul UCP are responsabilitatea general de interpretare i execu ie a instruc iunilor unui program (secven de instruc iuni stocat în memoria principal ) În accep iunea clasic (von Neumann) a unui sistem de calcul. cu set de instruc iuni În cadrul unui sistem de calcul. care con in dou sau mai multe UCP 55 COMPONENTELE UNUI SISTEM DE CALCUL Modelul clasic de caclulator (von Neumann) cuprinde : Unitatea de control (UC) Unitatea aritmetic i logic (UAL) Memoria (M) Dsipozitive de intrare (DI) Dispozitive de ie ire (DO) M Date de intrare + program D I UC UAL D O UCP=UC+UAL Date de ie ire Unitatea central de prelucrare 56 . Un astfel de calculator este numit uniprocesor. pentru a l deosebi de calculatoarele multiprocesor. ma ina con ine o singur UCP.

mod.*. SAU./. NU.STRUCTURA GENERAL A UCP Unitatea de Comand (UC) circuit logic secven ial responsabil pentru: Citirea instruc iunilor din memorie Decodificarea instruc iunilor Generarea de semnale de control pentru execu ia instruc iunilor Unitatea Aritmetico Logic (UAL) circuit logic combina ional ce efectueaz opera ii aritmetice i logice: Aritmetice: +. de stare i control 57 STRUCTURA GENERAL A UCP UCP Instruc iuni i semnale de stare externe Comenzi interne procesorului UAL Unitatea de Control + Registre Speciale Comenzi externe Indicatori de condi ii Intrare date Registre Generale R1 R2 Ie ire date … Rn Magistrala sistem 58 . Depl sari/rota ii stânga/dreapta Registre Registre generale (RG) : pentru p strarea temporar a datelor Registre speciale (RS) : de adresare. . comparare Logice: I.

citire port I/O. aducerea i execu ia unei instruc iuni.EXECU IA INSTRUC IUNILOR UCP are o func ionare ciclic – fiecare instruc iune este executat într o secven etape – faze de execu ie: citire cod instruc iune (instruction fetch IF) IF decodificare instruc iune (instruction decoding Dec) Dec citire operand (operanzi) (data fetch DF) DF execu ie opera ie (execution Ex) Ex scriere rezultat (write back WB) WB Cicluri de transfer: ciclu de citire instruc iune ciclu de citire operand (op ional) ciclu de scriere rezultat (op ional) durata unei instruc iuni este determinat de num rul de cicluri care trebuie s se execute de 59 CICLURI DE FUNC IONARE Ciclu instruc iune : Secven a de opera ii necesare pentru adresarea. Un ciclu instruc iune con ine mai multe cicluri ma in Ciclu ma in : intervalul de timp necesar pentru terminarea unei opera ii intermediare (citire memorie. scriere memorie. scriere I/O) Ciclul de fetch instruc iune = primul ciclu ma in al oric rui ciclu instruc iune De obicei un ciclu ma in implic un transfer al procesorului cu exteriorul Un ciclu ma in con ine una sau mai multe st ri UCP (perioade de ceas) Stare (timp de ciclu al UCP) Este timpul UCP (tUCP) necesar pentru executarea unei opera ii elementare i bine definite (este inversul frecven ei la care lucreaz procesorul) O opera ie elementar (micro opera ie) se refer de obicei la un transfer între dou registre Starea este unitatea de timp de baz pentru m surarea duratei activit ilor UCP tUCP = durata celei mai lungi c i în UCP (suma intârzierilor produse în circuitele combina ionale care alc tuiesc calea unui semnal) 60 .

FUNC IONAREA CICLIC A PROCESORULUI 61 STRUCTURA UNEI UCP ELEMENTARE 62 .

pentru stocare i manipulare : Operanzi Informa ii pentru adresare Adesea se folosesc registre pentru moduri complexe de adresare (indexat .FUNC IONAREA UNEI UCP ELEMENTARE 63 PERFEC IONAREA UCP ELEMENTARE Principalele tipuri de extindere în organizarea UCP elementar sunt urm toarele : Introducerea unor registre speciale de stare i control: Registru de stare (registru de indicatori) Indicatorii de stare (flags pot fi testa i prin program (de ex. opera ii de prelucrare etc. Salt condi ionat) flags) Indicatori de control sau registre de control Introducerea unor registre suplimentare de adresare.) ma ina se spune c are organizare pe baz de registre de uz general 64 . cu baz i index) Dac registrele interne au utilizare general (stocare. bazat . adresare.

PERFEC IONAREA UCP ELEMENTARE Extinderea func iilor oferite de unitatea aritmetic : Opera ii de înmul ire i împ r ire în virgul fix Opera ii cu numere în virgul mobil (numere reale) Introducerea de suport hardware (logic plus registre de adresare specializate) pentru implementarea memoriei stiv : Este o structur de date accesibil pe principiul LIFO (last in first out) Stiva implementat în memoria principal e controlat prin registrul de adresare al UCP numit Stack Pointer (SP) ce indic în permanen adresa vîrfului stivei Introducerea facilit ilor pentru prelucrarea paralel a dou sau mai multor instruc iuni : Unitate de control organizat ca un pipeline cu k niveluri ceea ce permite prelucrarea paralel a k instruc iuni aflate în diferite faze de execu ie Organizarea unit ii aritmetice ca o conduct de execu ie (pipeline aritmetic) cu k etaje Ad ugarea de k unit i ALU pentru prelucrarea în paralel a datelor 65 STRUCTURA UNEI UCP TIPICE 66 .

SET TIPIC DE INDICATORI DE CONDI II Indicatorii de condi ie reprezint un set de bistabili ce alc tuiesc registrul de stare al procesorului Sunt seta i/ reseta i de c tre UAL în func ie de rezultatul ultimei opera ii aritmetice sau logice efecutate i sunt folosi i pentru comanda execu iei ulterioare a procesului Sign Flag Zero Flag Parity Flag Overflow Flag Carry Flag Auxiliarz Flag SF ZF PF OF CF AF Semn rezultat Rezultat nul (to i bi ii pe 0) Num r par de bi i pe 1 Dep ire ! Transport Transport auxiliar 67 OVERFLOW FLAG Pentru bitul de semn de dore te utilizarea aceleea i ecua ii ca i pentru ceilal i bi i 68 .

OVERFLOW FLAG 69 NOTE 70 .

UNITATEA CENTRAL DE PRELUCRARE UNITATEA ARITMETIC i LOGIC 71 UNITATEA ARITMETICO LOGIC Ac – Registru acumulator p streaz un operand i rezultatul opera iei R – Registru pentru al doilea operand RS – registru de stare (FLAGS) Codul opera iei este generat de c tre unitatea de control i comand i are rolul selec iei circuitelor logice pentru execu ia opera iei desemnate n R n n Ac n Cod Opera ie UAL n RS 72 .

SUMATOR PE UN BIT Si = Ai Bi Ci Co = Ai * Bi + Ci * (Ai Bi) Ci Ai Bi Si Co 73 SUMATOR PE UN N BI I Bn-1 An-1 B1 A1 B0 A0 Cn-1 n-1 Cn-2 C1 1 C0 0 C-1 Sn-1 S1 S0 74 .

CKA = . CKB = Ad = 1. CKB = Ad = 1. CKA = . CKB = _ (0L) D0 B0 CKB (impuls – 1L) n-1 1 0 Ad A n-1 A1 A0 CKA 75 CIRCUIT DE ADUNARE I SC DERE ÎN COMPLEMENT FA Pentru opera ia de sc dere. CKA = . se complementeaz al doilea operand i se execut opera ia de adunare Dn-1 Bn-1 D1 B1 D0 B0 DE 2 CLKB Ad / Sc Cn-1 n-1 C1 1 C0 0 A n-1 A1 A0 CLKA 76 .OPERA IE DE ADUNARE CU OPERANZI ÎN 2 REGISTRE Pas 1 2 3 Opera ie terge registrul A Înscrie registrul B Transfer B A Înscrie registrul B A A+B Dn-1 Bn-1 D1 B1 Comenzi D (operand) D (al 2 lea operand) Ad = 0.

dr. Adunare Produs par ial Depl. dr. Adunare Produs final 78 .UNITATE LOGIC PE 2 BI I Ai 1 Bi 1 Ai-1 Bi-1 MUX 4:1 MUX 4:1 Cod opera ie Ci Ci-1 77 ALGORITM PENTRU OPERA IA DE ÎNMUL IRE 1100 * 12 * 1010 10 0000 1100 0000 1100 1111000 = 78H = 120 “0” “1” “0” “1” 00000000 0000000 0 1100 0001100 0 000110 00 00011 000 1100 1111 000 Acumulator (AC) Depl. dr. Depl.

terge acumulatorul A 0 Complementare operanzi dac semnul este negativ „ „ Test Q0 – Q0 = 0. 4. 2.. A1 A0 Scriere . 6.. Dup ultima eventual adunare nu se mai face deplasare AS = BS + QS Complementare rezultat dac AS = 1 80 . Înscriere operanzii în registre B X. 3. deplasare dreapta A i Q – Q0 = 1.. Q Y. B1 B0 (n+1) QS Q n-1 AS An-1 .IMPLEMENTAREA OPERA IEI DE ÎNMUL IE X BS Bn-1 . Q1 Y Q0 Deplasare tergere Scriere Dispozitiv de comand Test Deplasare Scriere 79 ALGORITM DE ÎNMUL IRE 1.. adunare A = B + A i deplasare dreapta A i Q Se repet pasul 3 pân când Yn 1 ajunge în Q0. 5...

UNITATEA CENTRAL DE PRELUCRARE UNITATEA de COMAND CONTROL i 81 UNITATEA DE CONTROL Este creierul calculatorului i se compune din : UC Generatorul de semnalului de tact CK Generatorul fazelor de execu ie GF Unitatea de decodificare instruc iuni (DI) i blocul de comand i control (BCC) interpreteaz instruc iunile i genereaz semnalele de comand necesare pentru execu ia lor Registrul de instruc iuni RI p streaz instruc iunea curent Contorul de program PC p streaz adresa instruc iunii urm toare Registrul de stare program RS Adresa CK PC (IP) Instruc iune GF RI DI + BCC RS (flags) Comenzi 82 .

Interpretarea instruc iunilor se refer la modul în care UC decodific codul fiec rei instruc iuni i la modalitatea de generare a semnalelor de control c tre calea de date. 83 FUNC IILE PRINCIPALE ALE UC Secven ierea instruc iunilor se refer la maniera în care controlul procesorului este transferat de la o instruc iune la alta. în scopul execut rii instruc iunilor Semnalele de control selecteaz la fiecare moment func ia de executat de c tre calea de date i selecteaz traseul specific al datelor prin unit ile func ionale Conform semnalelor emise. prin ordinea de generare a adreselor c tre memoria principal a calculatorului. 84 . o reconfigurare din punct de vedere logic a unit ii de prelucrare. unitatea de control (UC) face. astfel încât aceasta s execute un set impus de (micro)opera ii. pentru a comanda execu ia instruc iunilor. este s aduc instruc iunile codificate binar din memoria principal (extern procesorului) i s transmit semnale de control c tre calea de date i c tre memorie i sub sistemul de I/O. periodic.UNITATEA DE CONTROL Unitatea de control (UC) genereaz semnale de control c tre calea de date Rolul UC a unui microprocesor ce recunoa te un set de instruc iuni.

SECVEN IEREA INSTRUC IUNILOR Instruc iunile sunt selectate pentru execu ie în ordinea dictat de UC (secven iere) dup interpretarea codului instruc iunii curente i a semnalelor de reac ie din exterior Informa ie de secven iere = ? Dac fiecare instruc iune ar con ine adresa urm toarei instruc iuni ce trebuie adus din memorie lungime mare a codului instruc iunii Cele mai multe instruc iuni dintr un program au un succesor unic Instruc iunea Ii are ca unic succesor instruc iunea Ii+1 Stocare Ii în loca ia de adres A stocare Ii+1 în loca ia de adres A+1 ce urmeaz imediat dup A 85 SECVEN IEREA INSTRUC IUNILOR Adresa instruc iunii urm toare poate fi calculat prin incrementare ! Adresa este stocat într un registru num r tor de adrese al instruc iunilor numit “contor de program”. notat pe scurt PC Adresa instruc iunii urm toare se calculeaz prin opera ia: PC PC + c unde c reprezint num rul de cuvinte de memorie pe care se întinde instruc iunea curent La ramificare (instruc iuni de salt. registrul de adresare PC se încarc direct cu adresa la care se face saltul PC X Adresa X este con inut în codul instruc iunii de ramifiare 86 . sau tratare a evenimentelor de întrerupere) adresa urm taorei instruc iuni este ne consecutiv În cazul unei ramific ri.

îi corespunde o succesiune de comenzi emise de UC. algoritmul de control nu mai poate fi modificat decât prin reproiectarea întregii structuri Implementarea se poate face prin construc ii hardware de tip PLA (programmed logic array) Avantaje ale tehnicii cablate : dimensiuni mici ale UC vitez mare de operare Controlul cablat este folosit pentru procesoare care recunosc un set regulat i relativ redus de instruc iuni (de obicei instruc iuni cu format de lungime fix ) – implementarea unui set complex de instruc iuni (ca la 8086) este dificil 88 .INTERPRETAREA INSTRUC IUNILOR Fiec rei instruc iuni interpretate de UC. conform algoritmului dorit de proiectantul UC Comportarea UC din punctul de vedere al semnalelor de control generate (ca func ie i ca succesiune în timp) pentru comanda opera iilor se poate descrie prin : Tabele de tranzi ie a st rilor Organigrame Limbaje de descriere hardware Combina ii ale metodelor de mai sus Exist dou metode de proiectare i implementare a UC : Unitate de control cablat Unitate de control microprogramat 87 UNITATEA DE CONTROL CABLAT Unitatea de control cablat este un automat secven ial proiectat i construit pentru generarea unui set specific i într o secven fix de semnale de control Odat proiectat .

care memoreaz codul opera iei – logic de control (de obicei combina ional ) 89 UNITATEA DE CONTROL MICROPROGRAMAT La unitatea de control microprogramat semnalele de control sunt incluse în cuvinte binare succesive (microinstruc iuni) stocate într o memorie de mare vitez . numit memorie de control – Implementarea algoritmului de control se face prin programarea con inutului memoriei de control – Fiec rei instruc iuni recunoscute de procesor îi corespunde o secven de microopera ii generate prin citirea unei secven e de microinstruc iuni din memoria de control (secven de microinstruc iuni numit microprogram) – Microprogramele con inute în memoria de control formeaz un interpretor al setului de instruc iuni recunoscut de procesor 90 .CONTROLUL CABLAT – SCHEM BLOC Unitatea de control cablat este un automat ce cuprinde : – registrul de memorare a st rii curente – registrul de instruc iuni. inclusa în UC.

dependent de tehnologia de realizare a memoriilor – Gabaritul mare (suprafa mare ocupat pe chip) 91 CONTROLUL MICROPROGRAMAT 92 . permite modificarea dinamic (în timpul rul rii programelor) a setului de instruc iuni recunoscut de UC prin rescrierea memoriei de control permite reducerea costurilor generale de proiectare i construc ie a UC reducerea dimensiunilor microprogramelor Dezavantajele microcodului : – Viteza redus de lucru. sau CLC).CONTROLUL MICROPROGRAMAT Fiecare bit dintr o microinstruc iune reprezint o comand elementar care merge: Direct la o resurs comandat (registru. Fiecare cod de instruc iune citit i decodificat produce saltul la o adres din memoria de control unde se g se te microprogramul asociat execu iei acelei instruc iuni Principalele avantaje: setul de instruc iuni poate fi u or schimbat prin schimbarea microprogramelor dac este nevoie. sau Este prelucrat împreun cu alte informa ii (pentru decodificare i sincronizare) pentru ca apoi s se comande resursa fizic .

SEMNALELE de CONTROL 93 MAGISTRALE EXTERNE Magistrala de date Magistrala de adrese Magistrala de control 94 .UNITATEA CENTRAL DE PRELUCRARE MAGISTRALA INTERN .

Ie irile P spre magistrala extern de adrese pot trece în starea de înalt impedan (HiZ) la o cerere extern . când UCP cedeaz controlul magistralelor c tre alt dispozitiv De obicei valorile binare cele mai semnificative (cu ponderea binar maxim ) din adres se folosesc pentru selectarea blocurilor de memorie 95 LOGIC DE ADRESARE I DECODIFICARE MEMORIE 96 . ce transmit doar semnale de ie ire din microprocesor Este o magistral unidirec ional Liniile de pe aceast magistral se folosesc pentru adresarea loca iilor de memorie i a porturilor de intrare ie ire.MAGISTRALA DE ADRESE Linii de adres .

De exemplu: – intr ri testabile prin software – intr ri pentru comanda activit ii pas cu pas a UCP – intr ri pentru semnalizarea unor erori – intr ri / ie iri pentru lucrul în sistem multi procesor etc. Semnale de control i sincronizare cu evenimente externe ce genereaz cereri de întrerupere. 32. 16. Semnale de control i sincronizare a cererilor de cedare a controlului magistralelor. Semnale diverse. Semnale indicatoare de stare. 2. specifice tipurilor de microprocesoare i scopului pentru care au fost proiectate.. clock. 5.) Cele d linii ale magistralei de date sunt bidirec ionale Liniile au posibilitatea de trecere în starea de înalt impedan (HiZ) MAGISTRALA INTERN a procesorului trebuie s transfere DATE i ADRESE Magistrala multiplexat în timp – implementat la unele P pentru economie de pini – Este folosit atât ca magistral de adrese cât i pentru transferul datelor – În primul ciclu ma in al fiec rei instruc iuni pe magistrala de date se pot transmite informa ii de adres sau informa ii de control – La procesorul 8086 pini ai magistralei de date sunt multiplexa i pentru a se putea transmite i informa ie de adres (adres validat de semnalul de control ALE (Address Latch Enable) care comand stocarea adresei într un registru extern 97 MAGISTRALA DE CONTROL 1. 4. cum ar fi reset. 3.. 64. 98 . Semnale de control i sincronizare pentru transferuri de date cu memoria i dispozitivele de I/O. 6. Semnale utilitare. alimentare cu tensiune.MAGISTRALA DE DATE L rgimea magistralei de date este de obicei multiplu de octet (d = 8.

cu memoria i dispozitivele de IO Set minim : – RD – WR – R/W ReaD – citire de date din memorie/registru port WRite – scriere date în memorie/registru port La unele microprocesoare exist un singur semnal de control al sensului de transfer al datelor pe magistral (ce selecteaz opera ia dorit func ie de nivelul logic) Address Strobe – semnal de validare a adresei plasat pe magistrala de adrese Semnal prin care memoria sau dispozitivul de I/O semnaleaz procesorului c poate trasmite/recep iona date – AS – READY 99 CICLU DE MAGISTRAL TIPIC (CITIRE) Ciclul de magistral este un eveniment asincron ce începe cu apari ia adresi unei loca ii de memorie (port I/O) urmat de emiterea unor semnale de control Echipamentul selectat accept data de pe magistala de date (ciclu de scriere) sau plaseaz date pe magistral (ciclu de citire) ADR CK Date UCP RD AS READY READY Date Memorie Adres AS RD 100 .SEMNALE DE CONTROL PENTRU TRANSFERUL DATELOR Rol: permit procesorului controlul i sincronizarea transferurilor pe magistrala de date.

controllere) ce au posibilitatea de transfer al datelor direct cu memoria principal (transfer DMA – Direct Memory Acces) Set minim : – BR Bus Request – cerere de acces i control al magistralelor sistemului – BG Bus Grant – confirmare a ced rii controlului magistralelor În urma ced rii controlului magistralelor.SEMNALE DE CONTROL PENTRU TRANSFERURI DMA Problema cererii/ced rii controlului magistralei – alte dispozitive de tip master (alte procesoare. de tip BR. adrese i o parte din cele de control în stare de înalt impedan (HiZ) UCP prev zut cu aceast pereche de semnale sondeaz de obicei semnalul de cerere. la sfâr itul fiec rui ciclu ma in i cedeaz controlul magistralelor cât mai curând posibil. 101 SEMNALE DE SINCRONIZARE A CERERILOR DE ÎNTRERUPERE Semnalele au rolul sincroniz rii evenimentelor externe cu microprocesorul Cererea de întrerupere provenit din exterior este de obicei o cerere de servicii din partea dispozitivelor de intrare/ie ire Exist dou tipuri de cereri de întrerupere hardware (ini iate prin semnal electric de întrerupere) : – întreruperi mascabile – întreruperi nemascabile Un set minim de semnale pentru manevrarea cererilor de întrerupere cuprinde: – INT INTerrupt – cerere de întrerupere – NMI Non Mascable Interrupt – cerere de întrerupere nemascabil – INTA INTerupt Acknoledge – confirmarea accept rii întreruperii 102 . cu excep ia unor cazuri speciale în care opera iile nu pot fi întrerupte Întârzierea maxim cu care este servit o cerere de acces la controlul magistralelor este deci un ciclu ma in În cazul mai multor cereri de acordare a controlului magistralelor. analiza priorit ilor se face de obicei cu un circuit de arbitrare centralizat a cererilor de magistral . UCP trece ie irile sale c tre magistralele de date.

28 MHz) i are rolul de a genera : – Semnale de sincronizare : • CK (Clock) furnizat procesorului (fCK = fQuartZ/3 = 4.SEMNALE DE UTILITARE RESET Semnalul de tip RESET este prezent la toate microprocesoarele i el aduce con inutul registrelor microprocesorului într o stare prefixat prin proiectare În aceast stare predeterminat contorul de program (PC) se ini ializeaz la o valoare fix (de obicei la zero).76 MHz) • PCK (Peripheral Clock) furnizat circuitelor externe (fPCK = fCK/2 = 2.38 MHz) – Semnalul de RESET pt. aceast frecven este multiplicat de un num r de ori 103 CIRCUITUL DE CEAS Circuitul de ceas intel 8084 apar inând familiei x86 necesit conectarea extern a unui cristal de quartz (fQuartZ = 14. iar întreruperile mascabile sunt invalidate – Restartare microprocesor – Power on Reset (Resetare la alimentarea circuitului) CLOCK Semnalul de ceas are rolul sincroniz rii tuturor opera iilor din sistem Semnalul de ceas este furnizat de un circuit de ceas special sincronizat cu frecven a unui oscilator cu quartz La procesoarele actuale. ini ializarea procesorului (printr un circuit trigger Schmitt) respectiv power on reset (de ini ializare dup pornirea tensiunii de alimentare semnalul de comand dureaz cel pu in 50 de perioade de tact) – Semnale pentru inserarea st rilor de asteptare în ciclul de magistral X1 8284 CK CK RESET READY RESET READY PCK 8086 X2 RES RDY1 RDY2 104 .

UNITATEA CENTRAL DE PRELUCRARE PIPELINING PARALELISM în EXECU IA INSTRUC IUNILOR prin TEHNICI PIPELINE 105 PIPELINE INTRODUCERE Pipelining este o tehnic de introducere a paralelismului în execu ia instruc iunilor Pipeline = conduct de execu ie Se realizeaz prin împ r irea ciclului de execu ie al unei instruc iuni în mai multe faze de prelucrare. iar execu ia se face în paralel pentru mai multe instruc iuni care se afl în faze diferite de prelucrare Fiecare etaj / segment al conductei completeaz o parte din opera iile necesare în execu ia instruc iunii Etajele conductei sunt conectate unul dup cel lalt pentru a realiza o “band ” de execu ie a instruc iunilor Tehnica de tip pipeline poate fi aplicat atât pentru execu ia instruc iunilor cât i pentru circuitele aritmetice de prelucrare – Pipeline aritmetic – Pipeline de instruc iuni 106 .

perioada ceasului trebuie s fie suficient de mare astfel ca cel mai lent dintre etaje s termine prelucrarea 108 .PRINCIPIUL PIPELINING. dar obiectivul oric rei ma ini ce implementeaz aceast tehnic este s se ajung la o medie de o instruc iune executat pe ciclu de ceas procesor Cea mai simpl cale de a în elege principiul conductei este s imagin m fiecare etaj ca fiind format dintr un registru urmat de un circuit combina ional de prelucrare 107 CONDUCT CU 4 ETAJE – SCHEM DE PRINCIPIU Registrele stocheaz datele de intrare pentru CLC pe durata necesar ca sub opera ia corespunz toare segmentului s fie terminat i rezultatele s apar corect la ie irea circuitului combina ional Dac înc rcarea registrelor cu datele de la etajul anterior se face sincron cu un impuls de ceas. CICLU MA IN AL CONDUCTEI Tehnica pipeline conduce la o reducere a timpului de execu ie mediu pentru o instruc iune Timpul necesar pentru deplasarea unei instruc iuni cu un etaj în interiorul conductei constituie un ciclu ma in al conductei Lungimea ciclului ma in al instruc iunii este determinat de timpul cerut pentru prelucrarea în cel mai lent segment din conduct Un ciclu ma in al conductei este egal cu unul sau mai multe cicluri de ceas procesor.

opera ie registru registru : con inutul registrului de ie ire al UAL (Acc) este transferat în registrul rezultat (de ex. unul dintre registrele generale ale procesorului) 110 .CONDUCT DE INSTRUC IUNI Consider m o conduct de instruc iuni format din 5 etaje : IF (Instruction Fetch) – instruc iunea adresat prin registrul contor program PC este adus din memorie în registrul de instruc iuni (RI) iar registrul PC este incrementat pentru a adresa urm toarea instruc iune ID (Instruction Decode) – instruc iunea este decodificat iar operanzii sunt înc rca i în registrele de intrare ale UAL EX (Execution) – execut opera ia curent i plaseaz rezultatul în registul acumulator (registrul de ie ire implicit). Con inutul registrelor depinde de opera ia executat : opera ie aritmetic /logic (registru registru) : rezultatul în registrul Acc referin la memorie (scriere/citire) : reg Acc con ine o adres efectiv de memorie salt în program : UAL calculeaz adresa de salt i o plaseaz în registrul Acc 109 CONDUCT DE INSTRUC IUNI MA (Memory Access) – acces la memorie (citire/scriere) opera ia de citire memorie : datele sunt citite din memorie de la adresa din registrul Acc i plasat în registrul temporar de intrare date opera ia de scriere memorie : datele din registrul temporar de ie ire date sunt transferate în memoria de date (D cache) WB (Write Back) – scriere rezultat în registrele procesorului i se execut în cazul opera iilor registru registru.

i1 Instr.CONDUCT DE INSTRUC IUNI Instruc iunea 1 Instruc iunea 2 IF Perioade de ceas ID EX MA WB IF T2 T3 T4 T5 T6 ID EX MA WB T7 T8 T9 T10 T1 Execu ie secven ial sunt necesare 5 perioade de ceas pentru execu ia unei instruc iuni Arhitecturi scalare Execu ie pipeline în cazul ideal. i2 Instr.1 xTCK Tmediu TCK k Cre terea în vitez tinde la num rul de etaje al conductei 112 . f r pipeline (cu execu ie secven ial ) timpul mediu total de execu ie va fi egal cu: Tmediu timp mediu necesar pentru execu ia unei instruc iuni T = n × Tmediu Cre terea în vitez datorit folosirii conductei poate fi calculat ca raport între cele dou valori de timp considerând n >> k–1 i presupunând Tmediu = k × TCK S= n×Tmediu k+n . i4 Instr. se execut o instruc iune la fiecare perioad de ceas Arhitecturi pipeline Instr. i3 Instr. i5 IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB IF ID EX MA WB Ciclu UCP curent 111 CRE TEREA ÎN VITEZ Conduct cu k etaje i n instruc iuni de executat TCK timpul de ciclu al conductei k × TCK timpul necesar pentru umplerea conductei TP = (k+n 1) × TCK timpul total pentru execu ia celor n instruc iuni Pentru un program cu n instruc iuni.

ORGANIZAREA C II DE DATE ÎNTR UN PROCESOR RISC ELEMENTAR Pipeline Decode & Control Register File ALU Magistral Rezultat PC Magistral Operand B Instruction Fetch Magistral Operand A MMU MMU A: Linii de adres I-cache D-cache D: Linii de date PC: Program Counter D A Main Memory D A 113 ARHITECTUR PIPELINE Adres instruc iuni de salt Registru Condi ii PC Zero? Selector opera ie reg reg / reg mem PC +4 DEC MEM Instruc iuni I CACHE IF (Fetch Instruc iune) MUX PC RI Adresare registre Registre IF/ID MUX UAL Reg In1 ID (Decodificare) Bloc REGISTRE Registru Date UAL Reg Out MEM Date D CACHE U A L U A L UAL Reg In2 Registru Imediat MUX EX (Execu ie) MUX Registru Date Scriere în registru MA (Acces Memorie) Registru Rezultat WB 114 .

CX IF ID EX WB IF ID EX WB IF ID EX WB IF ID EX WB 116 .5 mov BX. pentru c : – pe m sura cre terii num rului de etaje diferen ele între Tmediu i k·TCK se m resc – cu cât cre te num rul de etaje cu atât mai greu este s echilibreze timpii de execu ie pe fiecare etaj În plus apar probleme de care nu s a inut cont în rela ia calcul : – salturile în program – dependen a de date inter instruc iuni – dependen a de resursele hardware inter instruc iuni – aceste elemente creeaz ceea ce se nume te hazardul structurii de tip conduct Surse de conflict (hazard): – Conflicte de resurse hazard structural – Dependen a datelor hazard de date – Ramific rile hazard de control 115 HAZARDUL DE DATE Dependen a datelor (hazard de date) se refer la instruc iuni care folosesc ca operanzi rezultate ale instruc iunilor anterioare din conduct – instruc iunile anterioare înc nu au fost complet executate – rezultatul nu este disponibil Hazardul de date se înl tur fie prin : – metode hardware : multiplicarea registrelor (bypass) – metode software : prin re ordonarea instruc iunilor din program T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 mov AX.SURSE DE CONFLICT (HAZARD) Cre terea în vitez egal cu num rul de etaje al conductei (k) este doar o limit teoretic .2 mon DX.AX sub CX.

BX sub CX.5 ..AX mov AX. iar cel lalt pentru accesarea operanzilor Aceste conflicte se rezolv prin m rirea num rului de unit i func ionale (de exemplu UAL multiple) i prin utilizarea de spa ii separate de memorie pentru date i instruc iuni T1 T2 T3 T4 T5 mov [1234].. IF ID EX MA WB 117 HAZARDUL STRUCTURAL IF ID EX MA WB IF ID EX WB 118 .3 IF ID EX IF ID EX WB IF ID EX WB ET1: mov [1234].AX Conflicte de resurse (hazard structural) produse de accesul la acelea i resurse din dou etaje diferite ale conductei – De exemplu accesul simultan a dou etaje la memoria principal . unul din accese pentru aducerea codului unei instruc iuni.HAZARDUL DE CONTROL Hazard de control este cauzat de instruc iunile de salt în program (ramific ri) – stiva trebuie golit i re început procesul de execu ie al instruc iunilor de la adresa de salt metodele de rezolvare încearc s men in conducta plin la fiecare impuls de ceas : – prin predic ia salturilor – prin instruc iuni de salt întârziat T1 T2 T3 T4 T5 T6 T7 T8 je ET1 abb AX.

PIPELINE ARITMETIC Exemplu de pipeline aritmetic pentru adunarea/sc derea în virgul mobil X = A x 2a Y = B x 2b 119 ARHITECTUR PIPELINE Adres instruc iuni de salt Registru Condi ii PC Zero? Selector opera ie reg reg / reg mem PC +4 DEC MEM Instruc iuni I CACHE IF (Fetch Instruc iune) MUX PC RI Adresare registre Registre IF/ID MUX UAL Reg In1 ID (Decodificare) Bloc REGISTRE Registru Date UAL Reg Out MEM Date D CACHE U A L U A L UAL Reg In2 Registru Imediat MUX EX (Execu ie) MUX Registru Date Scriere în registru MA (Acces Memorie) Registru Rezultat WB 120 .

Semnalele de comand Magistrala intern multiplexat Arhitecturi evoluate. Paralelism i control 122 .ARHITECTURA DE MICROPROCESOR ARHITECTURA MICROPROCESORULUI Arhitectura microprocesorului intel 8086 Registrele microproccesorului 8086 Ciclurile de magistral .

posibilitatea func ion rii în sisteme multiprocesor. frecven de tact 6MHz.ARHITECTURA MICROPROCESORULUI ARHITECTURA MICROPROCESORULUI 8086 123 MICROPROCESORUL INTEL 8086 caracteristici principale magistrala de date de 16 bi i. 4 registre de uz general pe 16 bi i adresabile direct sau pe octe i. 124 . posibilitatea efectu rii opera iilor aritmetice (inclusiv înmul ire i împ r ire) i opera ii logice. adresare segmentat a memoriei. un sistem foarte flexibil de adresare a memoriei (7 moduri). sistem de întreruperi hardware i software. magistrala de adrese de 20 bi i (1MB de memorie adresabil direct). 2 registre index pe 16 bi i. 4 registre de segment pe 16 bi i.

Procesarea “paralel ” a celor dou unit i func ionale asigur cre terea vitezei de lucru a microprocesorului prin suprapunerea etapei de aducere a unei instruc iuni din memorie (prefetch) cu etapa de execu ie a instruc iunii precedente (magistrala sistem este utilizat mai eficeint).ARHITECTURA INTEL 8086 125 μP INTEL 8086 – UNIT I FUNC IONALE Unitatea de execu ie (EU – Execution Unit) Unitatea de interfa cu magistrala (BIU – Bus Interface Unit) BIU i EU opereaz asincron i formeaz un mecanism unitar de aducere si execu ie a unei instruc iuni. 126 .

TI TI T1 T2 T3 T4 . BIU reseteaz coada i o realimenteaz cu 6 octe i începând de la aceast nou adres Dac QFIFO este plin i EU nu solicit transferuri pe magistral . 128 . “WRITE”.. TI = Idle State) BIU genereaz adresa fizic pe 20 de bi i 127 μP i8086 – UNITATEA DE EXECU IE Unitatea de execu ie (EU – Execution Unit) EU ob ine coduri de la BIU (a teapt dac QFIFO este vid doar în cazul instruc iunilor de salt în program) EU decodific i execut instruc iunile.μP i8086 – UNITATEA DE INTERFA CU MAGISTRALA Unitatea de interfa cu magistrala (BIU – Bus Interface Unit) BIU execut toate ciclurile de magistral (“READ”. apar cicluri în a teptare (exemplu: T1 T2 T3 T4 TI TI . “INTA”) fie la cererea EU sau pentru umplerea unei cozi de instruc iuni (QFIFO) QFIFO este o memorie de tip First In First Out cu 6 cuvinte (6 registre x 1 octet) BIU execut noi cicluri “FETCH” în intervalele cât EU nu solicit magistralam fiind posibil aducerea în avans (prefetch) a max 6 octe i din programul executat din loca ii de memorie adiacente (procesare serial a programului) Dac EU execut o instruc iune ce transfer controlul programului spre o nou adres .... respectiv proceseaz datele cu excep ia calculelor complexe efectuate de coprocesorul matematic i8087 EU lucreaz cu adrese i date pe 8/16 bi i EU actualizeaz flag urile (indicactorii de condi ie) EU calculeaz adresele efective (pe 16 bi i) ale operanzilor conform modului de adresare specificat în codul opera iei din instruc iune EU furnizeaz adresele efective i datele c tre BIU Execu ia instruc iunilor are la baz principiul microprogram rii : toate codurile opera iilor ce pot fi executate de EU sunt memorate într o memorie de tip ROM din interiorul UCP.

deplas ri (stânga. pe 32bi i Sunt registre pe 16 bi i adresabile direct sau pe octet Registre index pe 16 bi i : SI (Source Index). BP (Base Pointer). 130 . opera ii aritmetice (×). dreapta – cu un num r de pa i da i de valoarea lui CL). (/) pe 16 bi i i opera ii de I/O pe 16 bi i aritmetic zecimal pe 8 bi i i conversii de cod opera ii aritmetice (×) i (/) pe 8 bi i. opera ii cu iruri. DI (Destination Index). conversii de cod i ca registru de baz de adrese (adresare bazat ). cu rol de contor de cicluri. Ex. reg. Pentium: bus intern pe 64bi i.REGISTRELE UNIT Registrele de uz general (Main Registers) 15 AH BH CH DH 8 7 AL BL CL DL 0 II DE EXECU IE AX (accumulator) BX (base) CX (counter) DX (data) RG sunt loca ii de memorie care stocheaz datele pe care EU le proceseaz la un moment dat i trebuie s fie în concordan cu magistrala intern a procesorului (MDATE = k*RUCP). (/) pe 16 bi i i ca registru de adresare indirect a porturilor de intrare – ie ire (I/O). SP (Stack Pointer) Registrul indicatorilor de stare i de control al procesului (de condi ii) FLAGS 129 REGISTRELE UNIT II DE EXECU IE utiliz ri Registre de uz general (Main Registers) AX AL AH BX CX CL DX opera ii aritmetice (×).

SP (registrul indicator de stiv ) este în permanen decrementat f r interven ia programului) i indic adresa vârfului stivei (ultima loca ie de memorie implicat într o opera ie cu stiva) relativ la baza segmentului de stiv 131 REGISTRELE UNIT FLAGS Register – Registrul de stare 15 14 13 12 11 O 10 D 9 I 8 T 7 S 6 Z 5 4 A 3 - II DE EXECU IE utiliz ri 2 P 1 - 0 C Bit Flag CF PF AF ZF SF TF IF DF Carry Flag Parity Flag Auxiliary Flag Zero Flag Sign Flag Trip Flag Interrupt Flag Direction Flag OF Overflow Flag dep ire aritmetic (transport) paritate (rezultatul opera iei are un num r par de bi i seta i) transport între bitul 3 i 4 rezultat nul la ultima opera ie aritmetic sau logic bit de semn (ia valoarea MSB la operaa iile cu numere cu semn) TF=1 determin UCP s lucreze în modul pas cu pas – se genereaz câte o întrerupere intern dup fiecare instruc iune masc pentru înteruperi externe mascabile (IF=1 – validare întreuperi. opera iile asupra irurilor de date (specific adresa sursei).REGISTRELE UNIT II DE EXECU IE utiliz ri Registre index i pointer pe 16 bi i SP BP SI DI implicit în toate opera iile cu stiva (con ine adresa vârfului stivei). implicit în opera iile cu stiva (con ine adresa de baz a segmentului de stiv ). SP) sunt folosite pentru a p stra deplasamentul relativ la baza registrelor de segment în opera iile de acces la memorie. Registrele pointer (BP. opera iile asupra irurilor de date (specific adresa destina iei). IF=0 – invalidare întreruperi) indic direc ia deplas rii adresei la opera iile cu iruri (autodecrementarea registrelor SI. DI dac DF = 1 respectiv autoincrementarea dac DF = 0) indicator de dep ire aritmetic : s a pierdut MSB al rezultatului datorit faptului c valoarea acestuia a dep it capacitatea de reprezentare a loca iei destina ie 132 .

date. stiv i extrasegment Doar 4 segmente active la un moment dat Registrul contor de program Con ine adresa relativ (offset ul) în segmentul de cod curent (relativ la CS) a instruc iunii curente BIU actualizeaz valoarea înscris în IP dup fiecare opera ie de fetch În cazul unei instruc iuni de salt inter segment. IP este salvat în vârful stivei (împreun cu CS) i apoi înc rcat cu adresa relativ în segmentul de cod a instruc iunii int 133 IP Instruction Pointer SEMNALELE EXTERNE ALE MICROPROCESORULUI i8086 134 .REGISTRELE UNIT Registre segment CS DS SS ES Code Segment Data Segment Stack Segment Extra Segment II DE INTERFA CU MAGISTRALA Registre pe 16 bi i spa iu de adresare de 64kB Ofer suport pentru implementarea unui spa iu de memorie de 1MB Con in adresele de baz ale segmentelor logice de cod.

SEMNALELE EXTERNE ALE MICROPROCESORULUI i8086 135 SEMNALELE EXTERNE ALE MICROPROCESORULUI i8086 136 .

8282 neinversor squ 8283 inversor) Circuitele LATCH au rorlul de a men ine pe liniile magistralei de adrese neiveluri de tensiune stabile pe toat durata cilcului de magistral T1÷Tw÷T4 (inclusiv în perioadele în care pe magistrala de adrese/date AD15÷AD0 vor fi transferate date) De asemenea. î i trece circuitele de ie ire în stare de înalt impedan (HiZ) Microprocesorul 8086 folose te aceea i magistral intern pentru transferul datelor i adreselor Circuitele de memorie sau porturile de I/O au nevoie de o adres stabil pe toat durata ciclului de magistral 137 MAGISTRALA MULTIPLEXAT A P 8086 Consider m un ciclul de magistral de 4 perioade de tact T1÷T4 cu eventualele st ri de a teptare (Tw) Integritatea datelor transferate pe magistrala intern a microprocesorului impune ca aceasta s fie demultiplexat în timp pe durata ciclului de magistral pe durata T1 informa ia de adres este plasat pe magistral iar microprocesorul activeaz semnalul ALE care va asigura memorarea adresei în circuite LATCH (ex.CICLUL DE MAGISTRAL AL BIU Ciclul de magistral al BIU este un eveniment asincron ce începe odat cu apari ia adresei unei loca ii de memorie sau a unui port de I/O urmat de un semnal de control de citire/scriere Echipamentul selectat (MEM/port) accept data de pe magistrala de date pe durata ciclului de scriere sau plaseaz data pe magistral în timpul ciclului de citire. magistrala de date este bufferat prin circuite 8286/8287 pentru a evita ca un echipament extern s accesewe accidental date pe magistrala multiplexat i s compromit astfel adresa pe perioada T1 138 . în cazul ciclului de citire. La terminarea ciclului de magistral echipamentul respectiv memoreaz data scirs prin intermediul unor circuite de tip latch – buffere – sau.

CICLU DE MAGISTRAL – ACCES MEMORIE (CITIRE/SCRIERE) 139 MAGISTRALA DE ADRESE DEMULTIPLEXAT 8086 A19÷A16 4 16 I DE MAGISTRALA DATE BUFFERAT A19÷A16 4 BHE A19÷A16 AD15÷AD0 ALE 8282/83 8282/83 A15÷A8 8 Magistrala de adrese extern (20 de bi i) 8282/83 DT/R DEN AD15÷AD0 A7÷A0 8 8282/83 EN T EN T 8282/83 D15÷D8 8 Magistrala de date extern (16 bi i) D7÷D0 8 140 .

P i80286
Procesor pe 16 bi i 16 semnale de date, 24 semnale de adres (spa iu de adresare 16MB) Moduri de lucru: real i protejat

Unitatea de adresare

Unitatea de interfa are Amplif. date Amplif adrese Control mag.

Magistrala extern

Coada Decod. de instr. instr. Unitatea de instruc iuni Unitatea de execu ie
141

P i80386
Procesor pe 32 bi i, 32 semnale de date, 32 semnale de adrese (spa iu de adresare 4GB) Registre generale extinse la 32 bi i 2 registre segment suplimentare Mod protejat perfectat

Unitatea de segmentare Unitatea de execu ie Unitatea de decodificare

Unitatea de paginare Unitatea de interfa are Unitatea de preînc. instr.

142

P i80486
Integreaz : procesor + coprocesor matematic (FPU – Float Point Unit) + unitatea de management a memoriei (MMU – Memory Management Unit) Faciliteaza utilizarea memoriei cache Perfectarea modului protejat
Unitatea de segmentare Procesor virgul fix Procesor v. mobil Decodificare instruc iuni Preînc rcare instruc iuni Unitatea de paginare Unitate cache Unitate interf. mag.

143

NOTE

144

ARHITECTURA MICROPROCESORULUI

ARHITECTURI PENTIUM

145

P PENTIUM

Dou linii de procesare pipeline: U i V Magistrala extern de date pe 64 bi i (de i este procesor pe 32 bi i) Versiuni: – Pentium – arhitectur cu 2 linii pipeline – Pentium Pro – Pentium II – arhitectur superscalar P6 – Pentium III – Pentium IV – arhitectur NetBurst

146

MAGISTRALA MULTIPLEXAT A P 8086
Pentium Pro – Arhitectur superscalar P6 – Execu ie dinamic a instruc iunilor: • Analiza fluxurilor de date • Predic ia salturilor • Execu ia speculativ a instruc iunilor Pentium II – Tehnologia MMX: • Component pt. date multimedia • Execu ie paralel tip SIMD • 57 instruc iuni noi MMX Pentium III – Tehnologia SSE2 • Executie paralel SIMD pt. opera iile în virgul flotant • Pentru grafic 2D/3D
147

ARHITECTURA SUPERSCALAR P6

3 unit i autonome : – Unitatea de citire i decodificare instruc iuni • cite te din memorie i decodific 3 instruc iuni/ perioada de ceas • asigur predic ia salturilor prin intermediul unui bloc de memorare a adreselor de salt – Unitatea de dispecizare i execu ie prezint unit i de execu ie specifice : • execu ie opera ii cu numere întregi • execu ie opera ii cu numere reale (în virgul flotant – FPU) • execu ie date multimedia (MMX) – Unitatea de retragere • reface ordinea normal a rezultatelor dup exexc ia paralel a instruc iunilor • asigur interfa a cu memoria cache de date pentru scrierea/citirea datelor

148

ARHITECTURA SUPERSCALAR P6 Nou standard de magistral – Magistrala P6 – magistrala lucreaz în mod sincron. cu memorarea semnalelor pe frontul cresc tor al semnalului de ceas – transferul de date se realizeaz pe baz de tranzac ii care se pot desf ura în paralel – exist suport pentru conectarea mai multor procesoare pe aceea i magistral – sunt favorizate transferurile pe blocuri de date – exist implementate a unor mecanisme de detec ie i corec ie a erorilor – exist suport pentru verificarea i men inerea consisten ei memoriilor cache – se utilizeaz o tehnologie de transmitere a semnalelor care garanteaz nealterarea semnalelor chiar i la frecven e mari 149 ARHITECTURA SUPERSCALAR P6 Magistrala sistem L2 Cache Unitatea de interfa are a magistralei (BIU) L1 D Cache Load Unitatea de dispecizare i execu ie Store Unitatea de retragere L1 I Cache Fetch Unitatea de extragere i decodificare instruc iuni Rezervor de instruc iuni Blocul de registre 150 .

care astfel ajunge la 400MHz.18 microni – tehnologie hyper pipeline cu 20 de etaje (exceptând etajele IF i ID) – cache nivel 1 de 12kB – memorie I Cache de tip Trace Cache (stocare dimanic a instruc iunilor) – cache nivel 2 de 256 kB – versiunea Foster (2001) la o frecven d 2GHz prezint cache level 3 i suport DDR SDRAM – versiunea Northwood – în tehnologie 0.25 microni) Katmai – 2 niveluri cache de 32 kB – versiunea Coppermine – tehnologie 0.5MHz – 42 milioane de tranzistoare în tehnologie 0. SSE Streaming SIMD Extension) prin ad ugarea a 144 instruc iuni SIMD noi i extinderea l imii datelor prelucrate la 128 bi i (16 octe i prelucra i în paralel) îmbun t irea cu 30% a ratei de predic ie a salturilor în special datorit extinderii ferestrei de analiz . ceea ce permite efectuarea a dou opera ii UAL aritmetice i logice simple pe fiecare perioad de ceas. prin 400MHz utilizarea tehnologiei "quad pump" se asigur o rat de transfer de 3.18 m Pentium IV IV – apare în 2000 sub numele de cod Willamette – arhitectur pe 32 de bi i ce opereaz la o frecven de ceas de 1.PROCESOARE PENTIUM Pentium III – apare în 1999 la 450MHz (tehnologie 0. care la o frecven de 2GHz asigur o rat de transfer de 64Gocte i/s extinderea tehnologiei MMX (eng.2Gocte i/s dublarea vitezei de execu ie a UAL. procesorul Pentium 4 men ine în linia de execu ie pân la 126 de instruc iuni i utilizeaz 4Kocte i pentru memorarea adreselor de salt (BTB Branch Target Buffer) 152 . Advanced Transfer Cache).13 m introduce noul socket 478 151 ARHITECTURA NETBURST – PENTIUM IV implementarea unei arhitecturi hyper pipeline cu 20 de faze de procesare a instruc iunilor. de fapt unitatea aritmetico logic lucreaz cu un semnal de ceas care are frecven a dubl fa de frecven a procesorului utilizarea unei memorii cache de foarte mare vitez (eng. dublu fa de varianta P6 iunilor cre terea de 4 ori a frecven ei magistralei sistem.

alias Cozi de a teptare microopera ii ROM Planificatoare Planificare i execu ie instruc iuni Registre FPU UAL F UAL F UAL Registre pentru întregi UAL UAL UAL UGA UGA L1 D Cache 153 ARHITECTURI PARALELE • • Scop: – reducerea timpului de execu ie sub limita impus de tehnologie Dificulta i: – descompunerea problemei in secven e executabile in paralel – sincronizarea ntre taskuri paralele Tipuri de paralelism: – SISD – single instruction single data • arhitectur scalar (neparalel ) – SIMD – single instruction multiple data • arhitectur cu mai multe UAL • paralelism de date – MISD – multiple instruction single data – • arhitectur pipeline – MIMD – multiple instruction multiple data – • arhitectur paralel propriu zis • mai multe procesoare execut în paralel secven e diferite de program 154 • .ARHITECTURA NETBURST – PENTIUM IV L2 Cache BIU BTB – Predic ie salturi Extragere i decodificare instruc iuni Decodificactor L1 I Cache (Trace Cache) Alocare reg.

C P P . . C P . . . . P M C MI C . . . . . sisteme distribuite. . P M 155 ARHITECTURI PARALELE • Arhitecturi func ional paralele – DLP (Data Level Parallelism) • paralelism la nivel de date – UAL multiple – ILP (Instruction Level Parallelism) • paralelism la nivel de instruc iuni: » arhitecturi pipeline » VLIW very large instruction word – TLP (Thread Level Parallelism) • paralelism la nivel de fire de execu ie/taskuri: » arhitecturi multi core » arhitecturi multiprocesor » supercalculatoare – calculatoare paralele – PLP (Process Level Parallelism) • paralelism la nivel de procese: – arhitecturi paralele. P C M . GRID. .ARHITECTURI PARALELE SD SI MD P C I P D M C . cloud 156 .

private pentru fiecare procesor 157 ARHITECTURI CU MEMORIE PARTAJAT Toate procesoarele (P) au acces direct la toate modulele de memorie (M) Mecanism rapid i simplu de comunica ie Probleme pot ap rea la accesul simultan la mediul de comunica ie (magistral ) sau la acela i modul de memorie P P ...ORGANIZAREA MEMORIEI ÎN ARHITECTURILE PARALELE Memorie partajat Shared Memory: – spa iu liniar si global de adrese – variante: • UMA Uniform Memory Access – timp uniform de acces la memorie • NUMA Non Uniform Memory Access – timp de acces este func ie de adresa de memorie • COMA Cache Only Memory Architecture • Symmetric Multiprocessor: Shared Memory + Shared I/O Memorie privat Private Memory: – multe adrese/memorii locale. P Re ea de interconectare Memorie 158 .

COMUNICA IE PRIN MEMORIA PARTAJAT Spa iu virtual de adrese Spa iu fizic de adrese P1 comun local P2 X: load X: P3 X: store Schimb de date i sincronizare prin opera ii Load and Store Operations 159 ARHITECTRA CU MEMORIE PRIVAT Procesoarele au acces direct numai la memoriile proprii (locale) Comunica ia între procesoare se face prin schimb de mesaje P M P M .. P M Re ea de interconectare 160 ..

Q) Rec(y.P) y: Procesor Q local 161 NOTE 162 .ARHITECTRA CU MEMORIE PRIVAT Schimb de date i sincronizare prin opera ii Send + Receive Procedura de comunica ie: » construirea antetului (header) » copierea datelor în bufferul emitentului » transmiterea datelor » copierea datelor din bufferul de intrare al receptorului Procesor P local Rendez-vous x: Send(x.

Ierarhizarea memoriei Proiectarea modulelor de memorie Memorii nonvolatile i memorii volatile cu acces aleator Celule de memorie.ORGANIZAREA MEMORIEI ORGANIZAREA MEMORIEI PRINCIPALE Sistemul de memorie. Circuite de memorie Structura memoriei RAM statice i dinamice Exemple de proiectare Organizarea memoriei principale Conven ii de stocare a datelor în memorie Organizarea datelor în memorie i alinierea variabilelor Segmentarea memoriei Adresarea memoriei în modul real Adresarea memoriei în modul protejat Organizarea i operarea memoriei stiv Memoria Cache 164 .

pentru a fi citit sau scris • Sistemul de memorie al calculatorului = dispozitivele de stocare a informa iei + algoritmii de control al memoriei (implementa i fie în software fie în hardware) • La proiectarea i construc ia unui sistem de memorie.SISTEMUL DE MEMORIE • Dispozitivele de memorare au rolul de a stoca informa ia numeric (programe. Realizarea conceptelor memoriei virtuale pentru a elibera programele utilizator de func ia administr rii spa iului de memorie i pentru a face programele relativ independente de configura ia dat a memoriei fizice. al c rui obiectiv s se ob in : – o vitez de acces medie cât mai mare – în condi iile unui cost total minim 165 SISTEMUL DE MEMORIE – principii de realizare Informa ia stocat este distribuit pe o varietate de dispozitive de memorie (dispozitive cu raport cost / performan i caracteristici fizice foarte diferite) Transferul de informa ii între diferitele niveluri ale memoriei se desf oar transparent pentru utilizator (sarcina sistemului de operare) prin metode de alocare dinamic a spa iului disponibil de memorie. Cre terea l rgimii de band a sistemului de memorie i asigurarea unor mecanisme de protec ie 166 . date ini iale. pentru o utilizare cât mai eficient . se face un compromis. rezultate intermediare i finale) cu posibilitatea ca informa ia numeric s poat fi accesat printr o adresa.

localizare temporal a referin elor: dac programul face acces la o celul de memorie la momentul t. sistemul de memorie p streaz cele mai recent accesate date în memoria cea mai rapid (MEMORIA CACHE) 167 ORGANIZAREA IERARHIC A MEMORIEI Acces direct Acces indirect UCP Registre interne Memorie virtual I/O Memorie principal RAM Memorie auxiliar (extern ) HDD Memorie cache L1 Memorie cache L2 capacitate cost. vitez de acces 168 . este foarte probabil ca programul s fac din nou acces la aceea i celul la momentul t + localizare spa ial a referin elor: dac la momentul t programul face acces la o celul de memorie de adres X.LOCALIZAREA REFERIN ELOR LA MEMORIE La majoritatea programelor rulate se manifest “localizarea referin elor la memorie” : Doar o mic por iune a memoriei este accesat la un moment dat. Localizarea referin elor este o caracteristic a programelor ce se manifest în cea mai mare parte a timpului la rularea programelor. este foarte probabil ca la momentul t + programul s fac acces la celula de adres X + În virtutea localiz rii referin elor.

atunci va trebui modificat i pe nivelul i+1 i pe toate nivelurile inferioare... Mn ) proprietatea de coeren : informa ia existent la o anumit adres în spa iul de memorie trebuie s fie aceea i. În acest caz (evenimentul este numit "word miss") cuvântul necesar a fi accesat trebuie adus pe un nivel de memorie superior (de pe nivelul i+1. cu posibilitatea de scriere citire trebuie s satisfac dou propriet i privind informa ia stocat : proprietatea de incluziune : informa iile care se g sesc pe un anumit nivel de memorie se vor g si i pe nivelul de memorie inferior (M1 M2 . Proprietatea de coeren Dac un cuvânt este modificat pe nivelul i.ORGANIZAREA IERARHIC A MEMORIEI Sistemele de memorie multi nivel. 170 . 169 ORGANIZAREA IERARHIC A MEMORIEI Proprietatea de incluziune Este posibil ca o informa ie existent pe nivelul Mi+1 s nu se g seasc pe nivelul Mi. dar s fie accesat (cerut ) pe nivelul i de memorie. În caz contrar evenimentul se nume te "word hit". Coeren a nivelurilor de memorie se poate ob ine fie prin propagarea valorii modificate spre toate nivelele inferioare ("write through"). pe nivelul i). indiferent de nivelul de memorie pe care se afl . sau prin actualizarea nivelurilor inferioare în momentul înlocuirii informa iei de pe nivelul curent ("write back").

8. 32 bi i) – Fiecare loca ie are asocitat o adres • Circuit de memorie = Set de loca ii de memorie – Capacitatea memoriei = num rul total de loca ii (adrese) Structur matricial (k matrici) loca ie bk . 3T Cell) • Loca ia de memorie (cuvânt de memorie) – Set de celule elementare de memorie care se acceseaz simultan – Unitatea elementar de adresare (1. c-1 coloane 172 . .16.. .ORGANIZAREA MEMORIEI CIRCUITE DE MEMORIE STRUCTUR I NO IUNI PROIECTARE 171 CIRCUITE DE MEMORIE • Celula de memorie – Circuit digital care memoreaz un bit de informa ie (ex: bistabil JK MS. 4. l-1 linii celul 0 1 2 .. b1 b0 0 1 2 .

Flash) Memorii RAM (Random Access Memory) Memorii RAM statice (SRAM) set de circuite bistabile (ex. EEPROM.TIPURI DE CIRCUITE DE MEMORIE Memorii ROM (Read Only Memory) – men in informa ia i dup decuplarea tensiunii de alimentare – pot fi programate (PROM. EPROM. JK MS) ce p streaz infrorma ia pe durata aliment rii cu energie sunt construite de regul în tehnologie bipolar sau unipolar sunt memorii rapide dar de capacitate mic /unitate de cost i consum ridicat sunt realizate cu adresare uni sau bi dimensional Memorii RAM dinamice (DRAM) celule de memorie 3T (tranzistoare CMOS) ce pierd con inutul în timp (perioada de desc rcare a capacit ii Gril Surs a tranzistorului CMOS) vitez medie dar consum redus de energie si capacit i mari/unitatea de cost densitate de integrare ridicat 173 MEMORIA NONVOLATIL ROM – READ ONLY MEMORY A0 A1 DEC ADR ADR CS OE DATE CS PROG OE Logica de control Amplificatoare date la citire si programare tOE Adresa valida tCS An Date valide tACC TCICLU tOH Dk T Dk-1 D1 D0 WL WL T DL ROM PROM Vcc F WL T1 PL DL EPROM T2 DL 174 .

SRAM CU ADRESARE UNIDIMENSIONAL ID k-1 ID 1 D C Q D C Q ID 0 D C Q A0 A1 D DEC ADR C Q D C Q D C Q An-1 D C Q D C Q D C Q CS R/W OD OD OD k-1 1 0 175 SRAM CU ADRESARE BIDIMENSIONAL • Circuit de memorie SRAM cu dimensiunea 8kB – 13 linii de adres (213 = 8k) partajate de 2 decodificatoare de adres (DCD linii i DCD coloanem acesta din urm realizat printr un bloc de 8 MUX/DMUX) – celulele de memorie sunt bistabili ce pastreaz informa ia pe durata de alimentare 176 .

ce presupune înc rcarea periodic a condensatoarelor interne • 3 cicluri de func ionare: – ciclul de citire – ciclul de scriere – ciclul de reîmprosp tare T1 T2 T3 C DL 177 CARACTERISTICI DRAM CONVEN IONAL Prezint cea mai mare densitate de integrare dintre tehnologiile adecvate memoriei principale i totodat prezint cel mai mic cost pe bit Matricea de memorie este p trat (m × m iar m = 2n/2 1. Adresa furnizat dispozitivului de memorie se face printr un num r de linii egal cu jum tate din num rul total de bi i de adres num r mai mic de pini la capsul * De exemplu: pentru 222 celule = 4 Mbit cu matrice de 2048 x 2048 celule num rul de pini de adres ai capsulei d memorie este 11 i nu 22 aten ie: magistrala de adrese a sistemului r mâne pe 22 de bi i 178 . unde n este dimensiunea magistralei de adrese) Se folose te o schem de adresare bidimensional (DCD linii i DCD coloane – MUX/ DEMUX) Se folose te multiplexarea bi ilor pentru adresele de linie i adresele de coloan .MEMORIA RAM DINAMIC (DRAM) • • • • Celula elementara de memorie este un condensator CMOS ce re ine informa ia sub forma sarcinii electrice stocate Este vorba de capacitatea jonc iunii gril surs Condensatorul se descarc in timp pierderea informa iei WL/W WL/R Pentru a preveni pierderea sarcinii. informa ia trebuie reîmprosp tat din timp în timp condensatoarele trebuie reînc rcate cu informa ia stocat anterior func ionare dinamic .

Coloan Coloan Adr.Linie Adr. . Coloan Coloan T_ciclu_scriere Adrese RAS CAS WR Adr. acela i circuit amplificator face i reîmprosp tarea (reînscrierea tuturor condensatoarelor de pe linia respectiv ) 180 . .Linie T_ciclu_refresh Amplificatoarele R/W sunt circuite care genereaz nivel logic 0 sau 1 pornind de la tensiunea de pe condensatorul tranzistorului CMOS (celula) selectat De câte ori se selecteaz o linie. n/2 -1 A0 A1 An/2-1 n/2 Registru adres coloan n/2 MUX / DMUX 2n/2-1:1 / 1: 2n/2-1 WE CAS Amplificatoare R/W + Buffer I/O Dout Din 179 CICLURILE DE ACCES LA MEMORIA DRAM Adrese RAS CAS WR Date T_ras-cas T_rasT_cas T_acces T_ciclu_citire T_acces Date T_ras-cas T_rasT_cas Date Adr.Linie Adr. 2n/2-1 0 1 RAS Registru adres linie n/2 DEC Adr linie 2 2 .MEMORIA RAM DINAMIC (DRAM) ASINCRON 0 1 2 .

PROIECTAREA UNUI MODUL DE MEMORIE Structura general a unui modul de memorie : Selec ii Amp. date Date Selec ie modul Dec Circ. adrese Adrese Matricea de circuite de memorie Amp. de control Comenzi 181 CERIN E DE PROIECTARE MODUL SRAM Tipul memoriei : SRAM Capacitatea memoriei : 1 MB Organizarea intern : pe 16 bi i cu acces direct pe octet Magistrala folosit : ISA 24 linii de adres 16 linii de date Semnale de comand : MRDC (citire memorie) i MWTC (scriere memorie) Circuite de memorie folosite : 64kB Aresa de început : C00000h pentru maparea spa iului de memorie de 1MB în spa iul total de loca ii adresabile prin magistrala ISA (16MB) Necesitatea folosirii amplificatoarelor de adres i date se face pentru asigurarea nivelurilor corecte de tensiune pe magistrale 182 .

decodificarea se face pe baza semnalelor de adres si de comand 183 SUBMODULUL DE MEMORIE PE 16 BI I Magistrala de adrese A1 – A16 A0 A1 D0 D1 D0 D1 MWR 64k*8 A15 CS D7 WR A0 A1 D8 D9 D7 D8 D9 Magistrala de date 64k*8 A15 D15 CS WR CSi A0 BHE D15 CSLi CSHi Submodul i 128kB 64K x 16 bi i 184 .SUBMODUL DE MEMORIE PE 16 BI I ACCESABIL PE OCTET Pentru a se permite accesarea memoriei pe octet i cuvânt... fiecare submodul de memorie este realizat din 2 circuite de memorie de 64kB (cele disponibile) folosindu se dou semnale de selec ie : CSL – Chip Select Low CSH – Chip Select High Semnalele de selec ie octet Low/High se ob in de pe linia magistralei de adres A0 i BHE (Byte High Enable) Pentru adresarea loca iilor de memorie din circuitele de 64kB se folosesc 15 linii de adres (A1 . A16) : 215 = 64k Prin interconectarea mai multor submodule de memorie se va ob ine o matrice de memorie de dimensiuea dorit Blocul de decodificare trebuie s genereze semnale de selec ie pentru submodule i pentru modulul de memorie luat ca întreg.

.A16 BHE\ CS0\ MWR\ D0 ..D15 64K *16 CS1\ BHE\ CS\ MWR\ CS7\ BHE\ CS\ MWR\ PROIECTAREA UNIT … 64K *16 512K*16=1M*8 185 II DE DECODIFICARE I COMAND A17 A18 A19 A20 A B C Q0 Q1 Q2 74LS138 (DCD) (DCD) CS0\ CS1\ CS2\ Adresa de început : C00000h (110000.0b) A21 A22 A23 E1\ E1\ E2\ E2\ E3 Q7 CS7\ Decodificator MRD\ MWR\ CS\ Circuit de comand 186 .CONSTRUIREA MATRICII DE MEMORIE DE 1MB 64K *16 BHE\ CS\ MWR\ A0 .

Astfel.CERIN E DE PROIECTARE MODUL DRAM Tipul memoriei : DRAM asincron Capacitatea memoriei : 16 MB Organizarea intern : pe 16 bi i cu posibilitate adresare pe octet Caracteristicile magistralei 28 linii de adres 16 linii de date Semnale de comand : MRDC (citire memorie). multiplexarea în timp a adreselor a fost necesar pentru a reduce num rul de pini ai circuitului de memorie i implicit a dimensiunii acesteia (dat fiind capacitatea relativ mare a memoriilor dinamice). adresa va fi transmis circuitului de memorie secven ial prin ac iunea celor dou tipuri se semnale de selec ie RAS i CAS Reîmprospatarea se face simultan la nivelul unei linii întregi din matricea de memorie 188 . cu urmatoarele amendamente: – trebuie s se adauge un mecanism de reîmprospatare periodic a memoriei – adresele trebuie multiplexate (generarea secvential pe acelea i semnale a adresei de linie si a adresei de coloan ) – trebuie s se genereze semnale de validare a adresei de linie (RAS\ Row Address Select) i a adresei de coloan (CAS\ Column Address Select) – selec ia circuitelor se face cu semnalele RAS\ si CAS\ Pentru circuitele RAM dinamice. MWTC (scriere memorie) i Refresh (pt reînprosp tare) Circuite de memorie folosite : 1MB Aresa de început : D000000h pentru maparea spa iului de memorie de 16MB în spa iul total de loca ii adresabile prin magistral (256MB) 187 SUBMODUL DE MEMORIE PE 16 BI I ACCESABIL PE OCTET Proiectarea memoriilor dinamice este în principiu similar cu proiectarea memoriilor statice.

de control A20÷A1 MUX ADR Adr_Sel Adrese linii/coloane A9÷A0 Circuitul de memorie CAS0 Submodul 1 2×1MB Submodul 2 2×1MB CAS1 A27÷A21 A0 DEC A0 Circuit de control RAS CAS7 MW/R Submodul 7 2×1MB D15÷D0 189 SUBMODULUL DE MEMORIE DE 2MB A0 Adrese linii/coloane A0÷9 A0÷ A1 A9 CAS\ CAS\ RAS\ RAS\ MWR\ MWR\ WR\ WR\ A0 A1 A9 CAS\ CAS\ RAS\ RAS\ CASi\ CASi\ A0 Submodulul i 1M×16bi i = 2Mo 1M× RAS\ RAS\ WR\ WR\ D0 D1 D7 D8 D9 D15 Magistrala de date D0 D1 D7 D0 D1 D7 1M×8biti 1M× 1M×8biti 1M× 8biti BHE\ BHE\ 190 . de adrese A27÷A0 Mag.SCHEMA BLOCULUI DE MEMORIE DRAM Mag. de date D15÷D0 Mag.

UNITATEA DE DECODIFICARE I COMAND A21 A22 A B C Q0 Q1 Q2 CAS0\ CAS0\ CAS1\ CAS1\ CAS2\ CAS2\ Adresa de început : D000000h (110100.0b) A23 A24 A25 A26 A27 74LS138 E1\ E1\ E2\ E2\ E3 Q7 CAS7\ CAS7\ Decodificator + Sel_Modul\ Sel_Modul\ MRD\ MRD\ MWR\ MWR\ RAS\ RAS\ Refresh\ Refresh\ Adr_Sel are rolul de a selecta de pe magistrala de date sistem decada low/high ce se va conecta pe intr rile de adres ale circuitului de memorie... Acest semnal trebuie s precead semnalul de activare a adresei de coloan (CAS) Linie de întârziere Adr_Sel CAS\ CAS\ Circuit de comand 191 MODULUL DE MULTIPLEXARE ADRESE I AMPLIFICARE DATE 10×MUX2:1 10× SA1 SA2 SD0 D0 D1 SD1 I0 SA10 SA11 SA12 A0 A1 Q A9 SD7 Amp buffer D7 I1 SA20 Adr_Sel SA0 SBHE\ SBHE\ MRDC\ MRDC\ MWRC\ MWRC\ A0 BHE\ BHE\ SD15 SD8 SD9 D8 D9 Amp buffer MRD\ MRD\ MWR\ MWR\ MRD\ MRD\ CS\ CS\ Amp buffer D15 192 .

ORGANIZAREA MEMORIEI MEMORIA PRINCIPAL 193 ORGANIZAREA LOGIC A MEMORIEI PRINCIPALE ORGANIZAREA LOGIC A MEMORIEI PRINCIPALE (MP) se refer la : Modalitatea de stocare a datelor i instruc iunilor Alinierea informa iei în memorie Segmentarea memoriei Modurile de acces la date i instruc iuni 194 .

MEMORIA PRINCIPAL MEMORIA PRINCIPAL este un spa iu de memorie cu acces aleator (RAM – Random Access Memory) adresabil direct de c tre microprocesor. Capacitatea acestui spa iu de memorie (în octe i) depinde de dimensiunea magistralei de adrese : MP bytes 7 0 2 MA bits FFFFF FFFFE FFFFD octet Memoria principal Microprocesorul intel 8086 Poate accessa direct 1MB (220) de memorie la adresele 0 FFFFFh (MA pe 20 de bi i) Memoria este adresabil pe octet 1MB 00003 00002 00001 00000 195 LOCA II DE MEMORIE SPECIALE Microprocesorul intel 8086 dispune de o serie de loca ii de memorie speciale situate la adresele 0 – 07Fh (128 octe i) i FFFF0h – FFFFFFh (16 octe i) : FFFFF FFFFC FFFFB FFFF0 octet 7 0 rezervat 16 octe i RESET Rezervate de firm pentru dezvolt ri ulterioare Dedicate pentru înteruperi i pornirea sistemului dup reset TVI – Tabela vectorilor de înterupere con ine adresele rutinelor de tratare a întreruperilor RESET – Spa iu de memorie ce con ine instruc iunile ce se execut la repornirea sistemului prin comanda “reset” Disponibil 0007F 00014 00013 00000 rezervat 128 octe i TVI 196 .

de la octetul cel mai pu in semnificativ (adresa mic ) c tre octetul cel mai semnificativ stocat la adresa cea mai mare Adresarea informa iei multioctet se face prin lansarea adresei celui mai pu in semnificativ octet Data stocat începând de la adresa “A” este: A+3: A+2: 3F 45 5C 01 Cel mai semnificativ octet Exemplu de stocare în memorie a unui cuvânt dublu de 32 de bi i (valorile numerice au fost scrie în hexazecimal) 3F045C01 A+1: A: Memoria principal Cel mai pu in semnificativ octet 198 .CONVEN II DE STOCARE I ADRESARE A INFORMA IEI ÎN MP Tipuri de date memorate : 8 bi i (octet/byte) 16 bi i (cuvânt/word) 32 bi i (double sau pointeri) Stocarea informa iei (date i instruc iuni) în memorie se face în loca ii adiacente de memorie situate la adrese succesive Dup modul în care se stocheaz în memoria principal informa iile MULTI OCTET exist dou conven ii: Little Endian (conven ia Intel) Big Endian (conven ia Motorola) 197 CONVEN II DE STOCARE I ADRESARE INFORMA IE MULTI OCTET Little Endian (conven ia Intel) Stocarea în memorie se face în ordine.

Mag.SELEC IA HARDWARE A MEMORIEI CONSTRUIREA UNEI MEMORII ADRESABILE PE OCTET O memorie de capacitate mare impune folosirea mai multor blocuri de memorie selectate prin intermediul unui decodificator de adres Exemplu : 256kB de memorie cu circuite de 64kB 256k = 218 18 bi i pentru magistrala de adrese 199 ADRESAREA MEMORIEI PE CUVÂNT CONSTRUIREA UNEI MEMORII ADRESABILE PE CUVÂNT 128kB = 2x64kB Mag. Adrese – 16bi i 200 . Date – 16bi i .

date. unde adresa A respect ecua ia: A modulo DMagDate = 0 De exemplu. indiferent de dimensiunea obiectului stocat 201 ALINIEREA INFORMA IEI ÎN MEMORIE 202 . adrese) trebuie men ionat c la unele microprocesoare accesul la obiecte mai mari decât un octet se poate face doar dac informa ia este ALINIAT Alinierea informa iei ia în calcul dou m rimi : dimensiunea obiectului stocat (DOB) i dimensiunea magistralei de date (DMagDate) Alinierea se refer la faptul c accesul la un obiect stocat în memorie se face prin specificarea adresei A a primului octet ocupat.ALINIEREA INFORMA IEI ÎN MEMORIE Legat de conven ia de stocare în memorie a informa iilor (instruc iuni. dac magistrala de date este pe 32 de bi i (4 octe i). toate adresele divizibile cu 4 desemneaz loca ii de memorie aliniate.

asamblorul atribuie automat tuturor datelor adrese aliniate. în loca ii aliniate sau nealiniate) Magistrala de date pe 16 bi i A modulo 2 = 0 pentru adresele pare (date aliniate) În func ie de plasarea datelor la adrese pare (aliniate) sau impare (nealiniate). indiferent de num rul de octe i ocupat de acestea Avantaj : se minimizeaz timpul de acces la datele din memorie Dezavantaj : riscul de ocupare a unui spa iu de memorie mai mare decât cel necesar. float f. UCP va executa automat num rul de cicluri necesar pentru citirea/scrierea lor Avantaj : optimizarea memoriei ocupate (stocare dens a programului în memorie).ALINIEREA INFORMA IEI ÎN MEMORIE La microprocesoarele actuale. Optimizarea memoriei ocupate revine programatorului Ex. 8 octe i 5 octe i ASM DB c DD f spa iu de memorie ocupat spa iu de memorie util 203 ALINIEREA INFORMA IEI ÎN MEMORIE i8086 La microprocesorul i8086 nu exist restric ii privind plasarea datelor în memorie (ele pot fi stocate oriunde în memorie. Acest lucru a fost impus la primele genera ii de microprocesoare datorit pre ului mare al memoriei de mare capacitate Dezavantaj : UCP va executa un num r dublu de cicluri de magistral pentru accesul la datele nealiniate (stocate la adrese impare) 204 . C char c.

A1 – selecteaz simultan o loca ie de memorie de 1 octet în lower bank i upper bank A0 – selecteaz bankul inferior BHE – selecteaz bankul superior BHE 0 0 1 1 A0 0 1 0 1 Ac iune ambii octe i pe magistrala de date selecteaz octetul H (adres impar ) selecteaz octetul L (adres par ) niciun octet selectat 206 . D0 upper bank D15 .data var1 var2 var3 var4 db db db dw 5 7 ‘A’ 12 Variabil stocat 7 0 Adres HEX 00 Variabila var4 este nealiniat fiind stocat la adresa impar 1FA13h (deplasament = 3) var4 ‘A’ var2 var1 Baz segment de date Memoria principal 0C 41 07 05 1FA14h 1FA13h 1FA12h 1FA11h 1FA10h 205 ORGANIZAREA HARDWARE A MEMORIEI – I8086 Spa iul de memorie de 1MB este divizat hardware în 2 zone a 512kB Cele 2 blocuri pot fi selectate separat sau simultan i încarc pe magistrala de date (16 bi i) câte un octet : lower bank D7 .... D8 A19 ....ALINIEREA INFORMA IEI ÎN MEMORIE i8086 .

D0 XL pe liniile D15..D0 ale magistralei de date XH pe liniile D7. A0 000C3h 000C4h 16 A0 H L BHE L H 8 D7 : D0 D15 .....ORGANIZAREA HARDWARE A MEMORIEI – I8086 Magistrala de adrese A19 : A1 A0 BHE 19 ADR CS 19 ADR CS Bank H 512k x8 Data 8 D15 : D8 D15 : D0 16 Magistrala de date Bank L 512k x8 Data 8 D7 : D0 207 ACCESUL LA O VARIABIL WORD NEALINIAT A19 : A1 A0 BHE 19 000C3 XL 19 000C4 000C2 XH 8 D15 : D8 D15 : D0 Ciclu magistral i – adresa variabilei X pe magistrala de adrese i+1 – adresa este incermentat A19 ....D0 ale magistralei de date 208 .

date. SS. pe 16 bi i. ce identific adresa bazei segmentului (con inut în registrul segment al microrprocesorului) maxim 4 segmente La i8086.FFFFh într un spa iu maxim de 64kB Spa iul de memorie de 1MB este “împ r it” în segmente de 64kB. multiplu de 4.SEGMENTAREA MEMORIEI – i8086 20 de bi i de adres echivaleaz cu 1MB memorie adresabil dar setul de registre interne al microprocesorului i8086 este pe 16 bi i putând codifica adrese în domeniul 0h. stiva i extrasegmentul de date) RAM Segment de stiv UCP Registre segment SS ES DS CS Segment de cod Extrasegment Segment de date 210 . independente i adresabile în mod separat Segmentele pot fi i suprapuse (pot exista o infinitate) dar trebuie avut în vedere integritatea datelor con inute Segmentele pot fi plasate oriunde în memorie cu respectarea loca iilor de memorie speciale 209 SEGMENTAREA MEMORIEI – i8086 Segmentele sunt definite în mod unic prin adresa de segment (AS) – un întreg f r semn.. ES) adresabile în mod curent (segmentul de cod.. BIU con ine 4 registre segment (CS. adresabile cu ajutorul registrelor pe 16 bi i SEGMENTELE sunt unit i logice de memorie continu . DS.

ca în ecua ia: AF = AS x 24 + AE Cu alte cuvinte. adresa efectiv (AE) rezult ca un întreg f r semn. pe 16 bi i. Se vorbe te de adrese (pointeri) pe 32 de bi i de i adresa fizic se codific pe 20 de bi i 212 . pe 20 de bi i. pentru adresarea unui octet de memorie se folosesc dou entit i pe 16 bi i (o adres segment con inut onligatoriu într un registru segment) i un deplasament. adresa fizic (AF) se ob ine prin deplasarea adresei segment (AS) cu 4 bi i spre stânga i adunarea deplasamentului (AE) În concluzie. ce reprezint deplasamentul (offset ul) – adresa relativ a operandului fa de începutul segmentului în care se afl Adresa efectiv a operanzilor instruc iunilor este calculat de c tre Unitatea de execu ie (EU) a UCP Instruc iunile – sunt extrase din segmentul de cod iar AE este dat de registrul IP (Instruction Pointer) referit i ca PC (Program Counter) Opera iile cu stiv sunt executate în segmentul de stiv curent iar deplasamentul e dat de registrul indicator de stiv SP (Stack Pointer) 211 ADRESA FIZIC (AF) Adresa fizic (AF) rezult ca un întreg f r semn.ADRESA EFECTIV (AE) La microprocesoarele cu memoria segmentat . ce identific în mod unic o loca ie de memorie din RAM Adresa fizic a operanzilor datelor este generat de c tre Unitatea de interfa cu magistrala (BIU) a UCP Intel 8086: Adresa fizic (AF) se ob ine din adresa efectiva (AE) la care se adaug adresa de segment (AS) înmul it cu 16.

fizic 1 7 213 ADRESAREA MEMORIEI – MODUL REAL Registrul DS 1234 <<4 x16 Deplasamentul : 5678 Memoria principal 1MB 2233F 179B8 12340 00000 Segmentul de date 64kB 214 . segment Adr. efectiv (offset) Adr.FORMAREA ADRESEI FIZIC (AF) 19 43 0 AS 15 0000 0 AE 19 0 O adres complet este codificat intern printr un pointer pe 32 de bi i Specificarea unui pointer folose te nota ia SEGMENT:OFFSET (AS:AE) Ex: DS:5678 sau 1234:5678 AF = 179B8h AF 1 2 5 3 6 9 4 7 B 0 8 8 Adr.

MEMORAREA POINTERILOR
O adres complet pe 32 de bi i este memorat cu deplasamentul la adrese mici i cu adresa segment la adrese mari Asocierea (segment:offset – adres fizic ) nu este biunivoc (perechile 1234:5678 i 1235:5668 reprezint aceea i adres fizic ) FFFFF
Memoria principal

Adresa segment Deplasament

12 34 56 78

Segmentul de cod 64kB

00000
215

ORGANIZAREA MEMORIEI ÎN MODUL REAL (8086)

Spa iul maxim de adresare este 1Mo Un segment trebuie s înceap la o adresa multiplu de 16 Un segment are maxim 64kB Segmentele se pot suprapune par ial sau total Aceea i loca ie fizic se poate exprima prin mai multe variante de perechi de adrese (segment:offset) Exist pu ine posibilit i de protejare a zonelor de memorie Orice program poate adresa orice loca ie de memorie, neputându se impune restric ii (lucru nedorit într un sistem multitasking) Limit ri : spa iul limitat de adresare i posibilit ile reduse de protec ie

216

ORGANIZAREA MEMORIEI ÎN MODUL PROTEJAT

În modul protejat calculul adresei se face la fel prin adres de segment i deplasament, dar cu unele amendamente : Un registru segment p streaz un selector de segment i nu adresa de început a segmentului Selectorul este un indicator care arat locul unde se afl o structur de date care descrie un segment i care poart numele de descriptor de segment Un descriptor de segment con ine: — adresa segmentului (pe 32 de bi i) — lungimea segmentului (pe 20 de bi i) — indicatori pentru determinarea drepturilor de acces, tipul i modul de utilizare a segmentului Adresa de offset se exprim pe 32 de bi i

217

ORGANIZAREA MEMORIEI ÎN MODUL PROTEJAT

Ofer un mecanism complex de alocare i de protec ie a zonelor de memorie Spa iul maxim de adresare al memoriei se extinde la 4Gocte i (4G = 232) Un segment are o lungime variabil : de la 1 octet la 4Gocteti Se definesc 4 nivele de protec ie – nivelul 0 : cel mai prioritar, alocat nucleului SO – nivelul 1 : rutine de sistem – nivelul 2 : extensiile sistemului de operare – nivelul 3 : programe utilizator Un segment este accesibil numai taskului alocat i eventual sistemului de operare Anumite segmente pot fi blocate la scriere (ex: segmentele de cod)

218

ORGANIZAREA MEMORIEI ÎN MODUL PROTEJAT

Este implemetat începând cu microprocecsorul x386 Ofer suportul necesar pentru implementarea unui sistem de operare multitasking i multi utilizator, prin: – managementul memoriei (segmentare i paginare) – managementul întreruperilor – managementul taskurilor Asigur un control mai bun al fiabilita ii, prin mecanisme de detec ie a erorilor de acces: – tentativa de acces la o zona de memorie nealocat taskului – tentativa de scriere intr o zon nepermis – lipsa nivelului de prioritate solicitat

219

ADRESAREA MEMORIEI – MODUL PROTEJAT

Memoria 15 Selector 0 31 Offset 0 4GB

31 Adres segment Lungime Acces

0

Adr. fizic

0

Descriptor de segment

220

MEMORIA STIV

Memoria stiv (“stack memory”) este o structur de date special ce lucreaz pe principiul LIFO (Last In First Out = ultimul intrat primul ie it) Fiecare cuvânt nou introdus în stiv se a eaz “peste” cuvinte anterioare Stiva se “umple” de la adrese mari la adrese mici (contrar celorlaltor segmente de memorie) Extragerea articolelor din stiv se se face începând de la “vârful stivei” (ultimul articol introdus) Subsistemul de întreruperi salveaz automat în stiv adresa de întoarcere la programul întrerupt i restaureaz automat din stiv

221

ROLUL MEMORIEI STIV

Memoria stiv este utilizat ca memorie de stocare temporar : sistemul de întreruperi tehnicile de apelare a procedurilor (subrutinelor) stocare temporar i reg sire rapid a datelor (rezultate intermediare, sau parametri transmi i c tre proceduri) Metode de implementare a memoriei stiv stiv hardware implementat cu registre interne – vitez mare / capacitate mic de stocare stiv software implementat în cadrul memoriei principale, într o zon cu dimensiune satisf c toare pentru aplica ie (segment de stiv ) – vitez redus / capacitate mare de stocare

222

STIVA HARDWARE (STIVA DE REGISTRE) 223 STIVA HARDWARE (STIVA DE REGISTRE) Adâncime 4 cuvinte pe 8 bi i (4 registre pe octet) 224 .

SEGMENTUL DE STIV (STIVA) Gestiunea informa iilor din stiv este realizat cu ajutorul pointerului de stiv (stack pointer SS:SP) care memoreaz întotdeauna informa ia de adresare a vârfului stivei (top of stack) în 2 registre : Registrul Indicator de Stiv (SP Stack Pointer) Registrul segmentului de stiv (SS Stack Segment) Dimensiunea stivei este stabilit de programator. nu are dimensiuni fixe. respectiv incremeneat (pop) cu valoarea 2 226 . prin codificarea anumitor intruc iuni prin instruc iuni speciale pentru transfer cu stiva (PUSH i POP) Între UCP i stiv nu se pot transfera date pe octet Instruc iunile PUSH i POP accept doar operanzi pe 16 i 32 de bi i iar pointerul vârfului stivei se decrementeaz (push). cu respectarea eventualelor restric ii (la i8086 dimenisunea maxim a segmentului de stiv este 64kB) La înscrierea unui articol în stiv se spune c stiva cre te – se umple stiva i se actualizeaz con inutului registrului SP (cu adresa efectiv a ultimului articol înscris în stiv ) Conven ii de cre tere a stivei: cre tere c tre adrese mici (conven ia Intel) cre tere c tre adrese mari (conven ia Motorola) 225 SEGMENTUL DE STIV (STIVA) Valoarea ini ial a con inutului lui SP se nume te adresa de baz a stivei (baza stivei) – a nu se confunda cu baza segmentului de stiv Transferul între UCP i stiva construit în memoria principal se poate face în dou moduri: automat (de c tre unitatea de control).

nu trebuie încercat accesarea unei loca ii din stiv de unde o valoare a fost extras cu POP (SO i alte aplica ii pot folosi zona de stiv r mas “liber ”) La urm toarea scriere în stiv vechea valoare este pierdut (memorie este rescris ) Baza stivei Stiv 32 octe i 00FFFh Vârful stivei POP POP AX AX = [SS:SP] SP = SP + 2 Stiv 32 octe i 00FFFh Stiv ocupat valoare AX SP 00FE6h 00FE5h 00FE4h 00FE3h SP Stiv liber 00FE6h 00FE5h SS Baza segmentului de stiv 00FE0h SS 00FE0h 228 .ÎNC RCAREA STIVEI PUSH Valoarea ini ial a con inutului lui SP se nume te adresa de baz a stivei (baza stivei) – a nu se confunda cu baza segmentului de stiv PUSH AX 00FFFh Vârful stivei Stiv ocupat Baza stivei Stiv 32 octe i [SS:SP] = AX SP = SP – 2 Stiv 32 octe i 00FFFh SP Stiv liber 00FE6h 00FE5h valoare AX SP 00FE6h 00FE5h 00FE4h 00FE3h SS Baza segmentului de stiv 00FE0h SS 00FE0h 227 EXTRAGEAREA DIN STIV Extragerea unei valori din stiv nu terge con inutul loca iei de memorie repective ci doar modific poiterul de stiv care va adresa loca ia de memorie superioar Totu i.

[SP+2] Stiv 32 octe i 00FFFh valoare AX valoare BX SP SS Baza segmentului de stiv 00FE6h 00FE5h 00FE4h 00FE3h 00FE2h 00FE1h 00FE0h valoare AX valoare BX SP SS 00FE6h 00FE5h 00FE4h 00FE3h 00FE2h 00FE1h 00FE0h 229 ALOCAREA DINAMIC A MEMORIEI. SEGMENTUL HEAP Aplica iile complexe folosesc resurse de memorie însemnate i necesit alocarea i eliberarea memoriei în mod dinamic Alocarea dinamic este posibil în limbajele de progranare de nivel înalt C : malloc – free C++ : new – delete Pascal : new – dispose Rutinele de alocare dinamic a memoriei ofer urm toarele facilit i : Permit programatorului s decid cât spa iu de stocare se va aloca aplica iei Alocarea acestui spa iu de memorie se face dinamic pe parcursul execu iei programului Eliminarea dezavantajului ocup rii memoriei de c tre date ce nu sunt folosite Cedarea controlului spa iului de memorie c tre sistemul de operare 230 .ACCESAREA DATELOR DIN STIV F R EXTRAGEREA LOR Este posibil folosind mecanismul de adresare indexat implementat în cazul microprocesoarelor din familia 80x86 Pointerul de stiv este modificat continuu (offsetul valorii dorite trebuie cunoscut) Stiva r mâne nemodificat dup accesarea datelor Baza stivei Stiv 32 octe i 00FFFh Vârful stivei PUSH AX PUSH BX MOV AX.

mic 0.ORGANIZAREA MEMORIEI MEMORIA CACHE 231 MEMORIA CACHE Problem : viteza redus de acces la memoria principal (dispozitivele de memorie sunt mai lente decât microprocesorul) – Se consider c un sistem func ioneaz ineficient.5 5ns Mare 232 . cu multe st ri de a teptare pentru procesor. dac viteza procesorului este mai mare de cel pu in 3 ori fa de viteza cu care se transmit datele pe magistrala comun cu memoria SRAM Capacitate Timp de acce Cost/ koctet Mic 1 64ko Mic 1 10ns Mare DRAM Medie 256 2Go Mediu 15 70ns Mediu SDRAM Medie 256 4Go Mic 5 10ns Mediu Memoria CACHE virtual HDD Mare 100Go 1To Mare 1 10ms Mic Mic 2ko 2Mo F.

frecvent folosite de c tre procesor (pastreaz copii ale unor zone – linii – din memoria intern ) Memoria cache nu este vizibil programatorului.ROLUL MEMORIEI CACHE Memoriile cache (tampon) sunt folosite pentru stocarea unor fragmente de program. f r interven ia utilizatorului sub controlul Unita ii de mamagement a memoriei (MMU) Ideea de baz : aduce mai aproape de procesor zonele de memorie cu probabilitate mai mare de utilizare în viitorul apropiat Memoria cache este amplasat între procesor i memoria principal 233 STRUCTUR LOGIC CACHE I MEMORIA PRINCIPALE Adres memorie Num r Linie Cache Bloc 0 (K cuvinte) Tag Bloc Lungime Bloc (K cuvinte) Lungime cuvânt Bloc M 1 234 . prin hardware. date i rezultate intermediare. prezen a memoriei cache va fi vizibil pentru utilizator numai prin sporirea vitezei de lucru la execu ia programelor Transferul unor zone de cod sau date între memoria principal i memoria cache se realizeaz automat.

"cache hit") Dac informa ia adresat nu este g sit în cache se acceseaz memoria principal pentru citirea informa iei – spunem c s a produs o ratare ("cache miss") cache miss Accesul la cache este controlat direct de procesor Accesul la memoria principal se face de obicei sub controlul unit ii de comand a memoriei cache Transferul între memoria principal i cache nu se face îns la nivel de cuvânt ci la nivel de bloc de cuvinte. dimensiunea memoriei cache se încadreaz ca i capacitate între a zecea i a mia parte din capacitatea memoriei principale Ideea de la care s a plecat în introducerea memoriei cache este bazat pe proprietatea programelor de a folosi referin e localizate (90% din timp se execut 10% din program) 235 FUNC IONAREA MEMORIEI CACHE Atunci când UCP lanseaz o adres pentru a face acces la memoria principal se examineaz mai întâi con inutul memoriei cache Daca informa ia adresat este g sit în cache se cite te de c tre procesor – spunem cache hit c s a produs un acces reu it la cache (sau pe scurt o reu it . în care se pot stoca atât instruc iuni. de mare vitez . frecvent folosite.. Indiferent de varianta de procesor. notat hr) hit ratio hr 236 . are ca scop principal ob inerea unei valori mici pentru timpul mediu de acces al UCP la memorie Exist mai multe niveluri de cache: Nivel L1 – memorie cache intern UCP (de ordinul sutelor de KBytes) Nivel L2 – memorie cache extern (de ordinul Mbytes) . cât i date.ROLUL MEMORIEI CACHE Utilizarea unei memorii cache. bloc care cuprinde i cuvântul adresat de UCP i neg sit în cache Performan a memoriei cache este adesea m surat cantitativ prin a a numitul raport de reu it ("hit ratio"..

organizarea i de eficien a algoritmului de înlocuire a informa iei din cache Din punctul de vedere al structurii i organiz rii memoriei cache exist 3 tehnici principale numite tehnici de mapare: mapare – mapare asociativ – mapare direct – mapare asociativ pe seturi 238 . iar hr = 0.9 < hr < 1 Timpul mediu de acces la o memorie se îmbun t e te considerabil dac se utilizeaz memorie cache De exemplu dac timpul de acces la memoria cache este de 10 ns. iar la memoria principal de 100 ns.9 (din 10 acces ri nou sunt reu ite) rezult un timp de acces mediu de 19 ns : tacm 9 10 100 10 19ns 237 ORGANIZAREA MEMORIEI CACHE Un algoritm special de anticipare aduce în memoria cache secven ele de program care urmeaz logic unei instruc iuni deja executate Factorul de succes al memoriei cache este legat de dimensiunea.HIT RATIO I TIMPUL DE ACCES LA MEMORIE Valoarea hr se calculeaz ca raport între num rul total de reu ite i num rul total de acces ri la memorie (rat ri + reu ite) Hit ratio se m soar de obicei prin rularea unor programe de test reprezentative pentru clase de programe Tipic valoarea lui hr este cuprins în intervalul 0.

MAPAREA ASOCIATIV Organizarea memoriei cache ca o memorie asociativ (adresabil prin con inut) conduce la viteza i flexibilitatea cea mai bun Pentru c o memorie asociativ este scump i are un grad mic de integrare. metoda este destul de rar utilizat i doar pentru implementarea unor memorii de mici dimensiuni În cadrul memoriei asociative ce func ioneaz ca memorie cache se stocheaz atât adresele cât i con inutul (datele) unor loca ii din memoria principal În acest fel orice loca ie din cache poate memora oricare cuvânt din memoria principal La lansarea unei adrese de c tre UCP aceasta se compar cu toate adresele memorate în matricea de adrese a memoriei cache asociative. trebuie ales un mod prin care s se elimine informa ia ce nu mai este necesar Pentru decizie se folosesc algoritmi de înlocuire: – O procedur simpl este de tip FIFO (algoritm pe baz de “vârsta în cache” = primul intrat primul ie it – LRU (Least Recently Used) – înlocuire aleatoare – LFU (Least Frequently Used). se face acces la memoria principal pentru aducerea unui bloc de date ce poate fi stocat oriunde în memoria cache asociativ Dac memoria cache este plin . 240 . data corespunz toare apare la ie ire i se înscrie în registrul de date (pentru opera ia de citire) 239 MAPAREA ASOCIATIV Dac se produce o ratare. Dac compararea combina ional conduce la o reu it .

Este de obicei cea mai eficient metod de înlocuire • LFU (Least Frequently Used) – înlocuie te blocul la care s au f cut cele mai pu ine referiri – Se implementeaz cu ajutorul unor contoare asociate fiec rei linii. • Înlocuire aleatoare – conduce la performan e (hr) mai reduse decât LRU i LFU.ALGORITMI DE ÎNLOCUIRE • FIFO Este un algoritm pe baz de “vârsta în cache” = primul intrat primul ie it – Procedura FIFO este implementat ca o tehnic de tampon circular (numit i round robin) – O procedur u or de implementat • LRU (Least Recently Used) – Se înlocuie te blocul din cache care este cel mai vechi i la care nu s a f cut acces de cel mai lung timp – Pentru o mapare asociat cu dou seturi este foarte u or de implementat – Fiecare linie con ine un USE bit. Când se aduce un bloc în cache se va pune în linia cu bitul de utilizare cu valoarea 0. Când se face referire la linie bitul de utilizare este setat pe 1. dar este extrem de u or de implementat 241 MAPAREA ASOCIATIV 242 . altfel el r mâne pe 0.

lâng etichet mai pot fi înscrise i alte informa ii cum ar fi: – bit ce indic dac datele sunt valide sau loca ia e privit ca fiind goal – bit de protec ie la scriere a loca iei (protec ia la scriere este util atunci când datele se refer la rutine ale sistemului de operare) 244 . care din punct de vedere logic poate fi privit ca fiind format din alte dou câmpuri: bloc i cuvânt – i respectiv etichet 243 MAPAREA DIRECT Num rul de bi i pentru index (k bi i) determin dimensiunea memoriei cache (2k cuvinte adresabile prin index).MAPAREA DIRECT Maparea direct estre o solu ie mai ieftin pentru c permite implementarea cu cu ajutorul unor memorii RAM statice La maparea direct adresa de a bi i este logic împ r it în dou câmpuri : – index (cel mai pu in semnificativ). valoarea sa constituind adresa pentru memoria cache În cache se stocheaz nu numai data corespunz toare ci i eticheta (format din a k bi i) asociat datei De asemenea.

pe 4 bi i 246 . = num rul total de linii în cache 245 MAPAREA DIRECT Tips: – La ratare se aduce un întreg bloc de cuvinte. deci stocabile în aceea i linie de memorie cache Dac se acceseaz repetat dou sau mai multe adrese cu acela i index (distan a între dou asemenea adrese succesive este 2k) factorul de reu it scade mult Modul de mapare direct poate fi exprimat analitic ca: i = j modulo m unde i j m = num rul liniei din cache. s a produs un eveniment de reu it (cache hit) Pot exista 2a k cuvinte cu acela i index. pentru c ea este aceea i pentru toate cuvintele blocului În exemplul urm tor: – Adres de memorie de 32 de bi i – Etichet pe 8 bi i – Adres de bloc pe 20 de bi i – Adres de cuvânt în cadrul blocului.MAPAREA DIRECT La citire câmpul etichet al adresei de memorie de la UCP este comparat cu eticheta cuvântului g sit în cache i având aceea i adres de index cu adresa de memorie Dac etichetele se potrivesc. cu aceea i adres de bloc – Blocurile sunt alese cu dimensiunea putere a lui doi – În cache se stocheaz o singur dat eticheta unui bloc. = num rul blocului din memoria principal .

scriere prin actualizarea nivelurilor inferioare în momentul înlocuirii (elimin rii) informa iei din cache. sau Dirty bit) asociat liniei din cache. dar un hardware suplimentar. – No write allocate (numit i write around) – Blocul este modificat doar pe nivelul inferior i nu este înc rcat în cache. dar adresa idata asociat scris se stocheaz într un tampon de scriere de mare vitez • Scrierea în memoria principal se efectueaz independent de procesor • Rezult o vitez mare. • În cazul unui eveniment de tip write miss se utilizeaz : – Write allocate (numit i fetch on write) – Blocul este înc rcat în cache dup evenimentul de ratare (similar cu ratarea la citire). notat pe scurt WB • Scrierile se fac doar în cache.MAPAREA DIRECT 247 POLITICI DE SCRIERE • Înainte de înlocuirea unui bloc din cache trebuie verificat dac a fost modificat doar în cache (p strarea coeren ei datelor) – Write through. notat pe scurt WT • Este cea mai simpl tehnic . i se actualizeaz un bit (Update bit. dar este consumatoare de timp – Write back. 248 . – Write through with buffered write – acela i principiu ca la WT. scriere cu propagare c tre nivelurile inferioare de memorie.

ARHITECTURA SETULUI DE INSTRUC IUNI ARHITECTURA SETULUI DE INSTRUC IUNI (ISA) Tipuri de instruc iuni Modurile de adresare Complexitatea i caracteristicile setului de instruc iuni Formatul setului de instruc iuni Implementarea hardware a instruc iunilor Codificarea operanzilor la familia de procesoare 80x86 250 .

component care realizeaz interfa a între software i hardware 252 .ARHITECTURA SETULUI DE INSTRUC IUNI Arhitectura setului de instruc iuni specific unui procesor cuprinde: Setul de instruc iuni (instruc iuni specifice la nivel ma in ) recunoscute de procesor – cod ma in Tipul opera iilor care pot fi efectuate de setul de instruc iuni Tipurile de date care pot fi manipulate cu aceste instruc iuni (prelucrate de UAL) Contextul i modul în care aceste instruc iuni opereaz Modul de adresare a operanzilor instruc iunilor 251 INTERFA A ÎNTRE HARDWARE I SOFTWARE ISA este o component a ma inii de calcul. vizibil programatorului la nivel de limbaj de asamblare.

con inute în oricare registru sau oricare loca ie de memorie.) pe care le poate executa un microprocesor CLASIFICARE Instruc iuni aritmetice Instruc iuni logice Instruc iuni pentru transferul informa iei Instruc iuni pentru deplasarea i rotirea datelor Instruc iuni de ramificare (pentru controlul secven ei de program) Instruc iuni pentru controlul procesorului 254 . i s poat fi adresate prin oricare mod de adresare Completitudine aceast cerin ar impune ca setul de instruc iuni s cuprind tot setul de operatori disponibili într un limbaj 253 TIPURI DE INSTRUC IUNI Setul de instruc iuni reprezint totalitatea opera iilor (aritmetice i logicem cu registre.CARACTERISTICI ALE ISA Regularitate (ortogonalitate) aceast caracteristic impune ca fiecare instruc iune din ISA s poat opera cu orice tip de date. de acces la memorie. etc.

S Not : Exist o serie de restric ii privind natura opreranzilor destina ie/surs 255 INSTRUC IUNI ARITMETICE Înmul ire (f r semn) Înmul ire (cu semn) Împ r ire (f r semn) Împ r ire (cu semn) Ajustare zecimal MUL S IMUL S DIV S IDIV S DAA (Dup adunare în NBCD) DAS (Dup sc dere în NBCD) Not : Deîmp r itul sau deînmul itul se g sesc implicit în registrele acumulator i eventual DX. decât AX i DX. Din aceast cauz la I8086 exist un singur operand. caz în care se pot folosi i alte registre generale. opera ia de înmul ire cu semn a întregilor poate avea i forma cu doi sau trei operanzi. La procesoare Intel pe 32 de bi i (de la I80386).S Sc dere SUB D. 256 .S Adunare cu considerarea transportului ADC D.S Sc dere cu considerarea împrumutului SBB D.INSTRUC IUNI ARITMETICE Asigur opera iile aritmetice asupra operanzilor Afecteaz indicatorii de condi ii Un set tipic de instruc iuni aritmetice este rezumat în continuare (exemple pentru Intel 80x86) : Adunare ADD D.S Incrementare INC D Decrementare DEC D Realizare cod complementar (C2) NEG D Comparare CMP D.

Pentru microprocesoarele care au porturile de I/O mapate în spa iul de adrese de memorie nu exist instruc iuni specializate de transfer de I/O 258 . sau între registre i porturi de I/O (din surs în destina ie) În general nu afecteaz valorile indicatorilor de condi ii Pot fi clasificate in: Instruc iuni de transfer de uz general Instruc iuni de transfer cu stiva Instruc iuni pentru transferul adreselor (pointeri) Instruc iuni de transfer I/O.S Complement (NU) NOT D Test logic TEST D.S Prelucrare i testare pe bit (de la 386 in sus.S SAU Exclusiv XOR D. la microcontrollere) 257 INSTRUC IUNI PENTRU TRANSFERUL INFORMA IEI Realizeaz transferul (copierea) informa iei între registre.S SAU logic OR D. între registre i memorie.INSTRUC IUNI LOGICE Asigur opera iile logice cu operanzii specifica i Afecteaz indicatorii de condi ii Un set tipic este rezumat în continuare (exemple pentru Intel 80x86) : I logic AND D.

adr LDS r16.adr . 16 bi i IN AL. AL (DX) OUT adr.adr . 260 . în cazul deplas rilor aritmetice se conserv bitul de semn al operandului deplasat Opera iile de deplasare pot fi: deplas ri închise (rota ii stânga / dreapta) deplas ri deschise (stânga / dreapta) La toate opera iile de deplasare. DSHigh [DS:(adr+3)] IN AL.DX .INSTRUC IUNI PENTRU TRANSFERUL INFORMA IEI EX. în cazul în care deplasarea se efectueaz în scopul izol rii unor bi i dintr un cuvânt (pentru a testa sau prelucra acei bi i). r16Low [DS:adr] . AL adr (port).AL OUT DX.adr . sau instruc iunilor aritmetice (înmul ire / împ r ire cu puteri ale lui 2).AL 259 INSTRUC IUNI PENTRU DEPLASAREA I ROTIREA DATELOR Instruc iunile propriu zise de deplasare pot fi asociate instruc iunilor logice. DSLow [DS:(adr+2)] . 8086 Transfer de uz general Transfer cu stiva Transferul adreselor MOV D. r16High [DS:(adr+1)] .D S S Transfer de I/O . se influen eaz i valoarea indicatorului de transport (Carry) Deplas rile închise (rotirile) sunt doar de tip logic. AL adr (port) IN AX.D . (r16) ad .S XCHG D.S PUSH S / POP D PUSHF / POPF LEA r16.

1 SAR D.1 RCL D.1 SHL D.1 ROR D. în func ie de condi iile în care s a terminat execu ia unei instruc iuni precedente Se asigur astfel ramifica iile în program i implementarea diferitelor structuri de control specificate de un anumit algoritm. revenire din procedur / return (RET)) Condi ionate (Jcc Jump if condition = TRUE). Instruc iunile de ramificare (salt) pot fi: Necondi ionate (apel de procedur (CALL op). de execu ie a unui program.1 SHR D. normale. apeluri condi ionale de proceduri (CALL if condition = TRUE) sau “repet pân când condi ie = TRUE”) Exemplific ri pentru I8086: JMP op.1 261 INSTRUC IUNI DE RAMIFICARE (CONTROLUL PROGRAMULUI) Determin modificarea secven ei liniare. CALL op. Jcc op 262 . Aceste instruc iuni nu afecteaz starea indicatorilor de condi ii.INSTRUC IUNI PENTRU DEPLASAREA I ROTIREA DATELOR SAL D.1 ROL D. RET. dar unele din instruc iunile de salt sunt influen ate de valoarea con inuta în indicatori.1 RCR D. salturi absolute (JMP op).

fie prin introducerea unor st ri sau semnale necesare pentru sincronizarea cu evenimentele externe CMC CLC STC NOP CLD STD reset reseteaz flag transport set nicio opera ie (delay) reset set CLI STI HLT WAIT ESC LOCK reseteaz flag întreruperi seteaz flag întreruperi opre te a teapt esc blo 264 . Below.INSTRUC IUNI DE RAMIFICARE (i8086) Mnemonicele folosesc ini iale provenind de la : Above. Equal. Carry. Not. Overflow. ce ac ioneaz fie prin intermediul unor indicatori de control (sau registre de control). Zero. Greater. Parity (PEven. POdd). Less. Sign Tabel pentru testarea condi iei la sc derea a dou numere A – B : 263 INSTRUC IUNI PENTRU CONTROLUL PROCESULUI Controleaz anumite func ii ale procesorului.

FORMATUL GENERAL AL UNEI INSTRUC IUNI Cod opera ie Operand 1 Operand 2 Operand 3 Instruc iunile se reprezint în memoria principal ca octe i succesivi (unul sau mai mul i octe i în func ie de tipul de procesor) Scopul fiec rei instruc iuni recunoscute de procesor este s specifice : opera ia ce trebuie executat de hardware operanzii utiliza i locul unde se stocheaz rezultatul opera iei Tipuri de operanzi : Registre Adrese de memorie Date imediate (constante numerice) 265 FORMATUL GENERAL AL UNEI INSTRUC IUNI Setul de instruc iuni al microprocesorului 8086 are o arhitectur de tip registru memorie. dublu adres (maxim doi operanzi) opera ie add a. adres de memorie sau constant (dat imediat ) a i b nu pot fi simultan adrese de memorie Exist instruc iuni cu o adres (care las operandul destina ie/surs 1 implicit) Exist instruc iuni cu zero adrese în care ambii operanzi sunt implici i i specifica i în codul opera iei 266 . destina ie i surs 1 operanzi b surs 2 Instruc iunea este interpretat ca a = a + b a poate fi un registru sau o adres de memorie b poate fi registru.

Exist unele procesoare de tip stiv care folosesc dou stive: una pentru opera ii asupra datelor i alta pentru opera ii asupra adreselor. organizare de tip stiv (ST) la care operanzii se g sesc implicit în vârful stivei i tot aici se stocheaz rezultatul. organizare pe baz de registre de utilizare generala (RG) la care operanzii sunt explicit localiza i fie în registrele interne de uz general (f r restric ii). un set de instruc iuni ce permite folosirea a 3 adrese explicite 267 CLASIFICARE Conform leg turii dintre organizarea UCP i num rul de adrese pe instruc iune. vom putea încadra cele mai multe procesoare într una din urm toarele trei categorii: organizare pe baz de registru acumulator (Ac) la care pentru majoritatea opera iilor unul dintre operanzi se g se te implicit în acumulator.NUM R DE ADRESE EXPLICITE Procesoarele moderne i cele RISC au. spre deosebire de 8086. 268 . fie în registrele segment i cle din loca iile memoriei principale (cu anumite restric ii). De asemenea rezultatul opera iei se ”acumuleaz ” în acest registru cu func ie special .

c .r b add r. VS a (fie adr.r3 add r1.x push x add Ac Ac Ac r1 r1 r1 VS Comentariu Ac + x Ac + [x] Ac + r r2 + r3 r1 + r2 r1 + [x] [x] RG ST Aduce primele 2 valori din stiv .b .r2. VS a*(b+c) (stocat la adresa adr) pop x . VS c (la adresa adr 4) add .r r*a mov x. adresa curent a vârfului stivei) push b .r . [x] VS (vârful stivei va avea adresa adr+1.a . VS b+c (stocat la adresa adr 2) mul .EXEMPLU DE INSTRUC IUNI Tip organizare AC Format instruc iune add x add r add r1. le adun i stocheaz rezultatul în “VS” Nota ii : r – con inutul registrului Ac – registrul acumulator x – adres de memorie [x] – con inutul de la adresa x VS – vârful stivei (SS:SP) 269 EXEMPLU DE OPERA IE : x = a*(b+c) Instruc iuni cu dou adrese : mov r.r2 add r1. adic va fi la pozi ia adresat înainte de apelul instruc iunii push a) 270 . [x] r Instruc iuni cu stiva push a .r r+c mul r. VS b (la adresa adr 2) push c .

METODE DE ACCES PENTRU INSTRUC IUNI SECVENTIAL : se cite te instruc iunea de la adresa urm toare » PC = PC + lungimea_instruc iunii_curente » ex: instruc iuni aritmetice si logice DIRECT : se cite te instruc iunea de la adresa specificat în instruc iunea curent » PC = adresa_direct » ex: instruc iuni de salt. adresa de stocare a rezultatului opera iei. sau adresa urm toarei instruc iuni Operanzii : imedia i (constante definite pe unul sau doi octe i) în registre interne UCP în memorie (în loca ii specificate prin adresa lor) în registre port de I/O (definite de o adres unic de port) 272 . apel de rutine INDIRECT : instruc iunea curent specific adresa adresei instruc iunii urm toare 271 MODURILE DE ADRESARE Se refer la modul în care. în formatul instruc iunii. se specific adresa unui operand de prelucrat. apel de rutine RELATIV : se cite te instruc iunea de la o adres relativ fa de adresa curent (deplasamentul poate fi pozitiv sau negativ) » PC = PC + deplasament » ex: instruc iuni de salt.

în func ie de tipul acestora : în momentul compil rii / asambl rii programului surs pentru operanzii imedia i în momentul înc rc rii în memoria principal pentru adresarea direct la memorie în momentul execu iei pentru operanzii adresa i în registre sau adresa i indirect 273 MODURILE DE ADRESARE Pentru fiecare mod de adresare UC calculeaz o adres efectiv (AE) a operandului La microprocesoarele cu memoria segmentat . valoarea operanzilor este calculat în trei momente diferite. ca în ecua ia: AF = AS x 24 + AE 274 .MODURILE DE ADRESARE În cazul unui program executabil. ES) Intel 8086: Adresa fizic (AF) se ob ine din adresa efectiva (AE) la care se adaug adresa de segment (AS) înmul it cu 16. AE rezult ca un întreg f r semn ce reprezint deplasamentul (adresa relativ a operandului) fa de începutul segmentului în care se afl Intel 8086 – memorie segmentat (registre segment CS. SS. DS.

5 Data (low) Cod_Op 276 .3A70h mov al.5 mov ax.MODURILE DE ADRESARE TIPURILE DE MODURI DE ADRESARE Adresare imediat Adresare direct Adresare direct la registru Adresare direct la memorie (absolut ) Adresare indirect prin registre Adresare indexat sau bazat Adresare indexat i bazat Adresare relativ 275 ADRESARE IMEDIAT Operandul apare expilcit în instruc iune ca dat imediat (constant numeric ) – valoarea lui este fix Nu necesit utilizarea de spa iu de memorie suplimentar în RAM Flexibilitate limitat . instruc iunea poate lucra cu o singur valoare Lungimea constantei este în acord cu cel lalt operand Formatul instruc iunii Cod opera ie Dat imediat adr+3 {Data (high)} adr+2 adr+1 adr Memoria principal add al.0FFh mov ax.

AX 1234 1234 AX DS extensie cod Cod_Op adr+2 adr+1 adr 278 . nu necesit ciclu de transfer pe magistral Formatul instruc iunii Cod opera ie adr+3 Memoria de program D8 8E add al.ADRESARE IMEDIAT – EXEMPLU Memoria de program BX 0005 MOV BX. pe 3 bi i) Adresa efectiv a operandului este înscris în registru Este o instruc iune scurt (nu necesit operanzi explici i) Timp de acces foarte mic.cx div bl MOV DS. de regul implicit (adresa registrului este codificat în codul opera iei – la 8086.5 înainte : BX = xxxxh dup : BX = 0005h 05 00 BB IP+2 IP+1 IP 277 ADRESARE DIRECT ADRESAREA DIRECT LA REGISTRU este.bl mov ax.

operandul instruc iunii con ine pointerul c tre variabila din memorie adresat 279 AF OPERAND ADRESARE DIRECT LA MEMORIE .[100] mov AX. La asamblare.val .data sir db ‘adr. Define te în segmentul de date o variabil pe cuvânt .ADRESARE DIRECT LA MEMORIE (ABSOLUT ) Adresarea direct la memorie poate fi absolut sau explict Adresa efectiv a operandului este con inut în instruc iune ca deplasament în segmentul de date curent Adresarea direct la memorie folose te implicit registrul DS Prezint avantajul c se poate modifica con inutul loca iei de memorie al c rei offset e con inut în instruc iune (valoarea operandului nu este fix ) Instruc iune COD_OP DEPLASAMENT AE AS DS La adresarea direct explict . Deplasament explicit în cadrul segmentului de date curent .code mov BX. Pune în BX con inutul loca iei de memorie adresate de variabila VAL.’ val dw 26 . Adresare explict a unei loca ii din extra segmentul de date add CX. expresia VAL va fi înlocuit cu o valoare egal cu deplasamentul (AE) în cadrul segmentului de date curent .[ES:0F16] 280 .abs.

DI Registru de segment implicit : DS Instruc iune COD_OP BX / SI / DI AE AS DS 282 AF OPERAND .ADRESARE ABSOLUT înainte : BX = xxxxh val = 001Ah dup : BX = 001Ah val = 001Ah DS EXEMPLU BX 001A Memoria principal Segmentul de date 00 AF AS AE deplasament (operand) cod opera ie DS:0009 DS:0008 1A 00 08 1E 8B CS:(IP+3) CS:(IP+2) CS:(IP+1) CS:IP Segmentul de cod MOV BX. ca operand. SI. instruc iunea codific adresa unui registru registre intern al UCP ce con ine AE a operandului din memorie Registre folosite : BX. o adres (în memorie sau registre) la care se g se te AE a datelor cu care va opera instruc iunea la execu ia sa În cazul adres rii indirecte prin registre.VAL 281 ADRESARE INDIRECT Instruc iunea con ine.

Adun valoarea 2 la octetul aflat la adresa dat de SI .[SI] add byte ptr [SI].ADRESARE INDIRECT mov AX. poate fi interpretat ca “adun 2 la octetul de la adresa dat de SI” sau “adun 2 la cuvântul de la adresa dat de SI”. xchg BX. Asamblorul va genera un mesaj de eroare.2 283 ADRESARE INDIRECT PRIN REGISTRE BX A1B2 / 1234 Memoria principal 12 / A1 DS AS AE înainte de execu ie : BX = A1B2h SI = 100h mem(100h) = 1234h dup execu ie : BX = 1234h SI = 100h mem(100h) = A1B2h SI 0100 1C 87 XCHG BX.2 add [SI].[SI] 34 / B2 AF DS:0101 DS:0100 CS:(IP+1) CS:IP 284 . Interschimb con inutul registrului BX cu con inutul din loca ia de memorie cu deplasamentul dat de SI .[BX] . Instruc iune incorect . Pune în memorie con inutul loca iei de memorie de la adresa efectiv dat de BX .

DI / registru de segment implicit : DS ADRESARE BAZAT : BX. iar m rimea deplasamentului determin dimensiunea maxim a tabloului. Num rul registrelor index este un criteriu de performan pentru microprocesoare 286 . DI) sau a unui registru de baz (BX. respectiv SS Instruc iune COD_OP “deplasament” SI / DI / BX / BP AE AS DS / SS AF OPERAND 285 ADRESAREA INDEXAT Adresarea indexat este util pentru a referi elementele unui tabel de valori (vector) Adresa de început a tabelului este con inut în codul instruc iunii (operand) Deplasamentul elementului relativ la începutul tabelului este determinat printr un indice. BP / registru de segment implicit : DS.ADRESAREA INDEXAT AE a operandului se determin adunând con inutul unui registru index (SI. BP) cu un “deplasament” (constant numeric pe 8 sau 16 bi i specificat în cuvântul de instruc iune) Prin modificarea con inutului registrului index (ex. incrementare) aceea i instruc iune poate adresa loca ii de memorie diferite ADRESARE INDEXAT : SI. con inut în registrul index Ex: implementarea unei bucle de program ce adreseaz în mod succesiv elementele unui vector pentru a determina suma lor prin simpla incrementare a registrului index Num rul de registre index dintr un procesor indic num rul de tablouri poten iale care se pot adresa în memorie.

6 mov AX.AX AX DS AS AF înainte : AX = 05E2h SI = 0005h TAB[7] = 0000h dup : AX = 05E2h SI = 0005h TAB[7] = 05E2h TAB[0] Memoria principal 05E2 05 E2 00 DS:000B DS:000A DS:0004 AE 04 44 SI 0005 89 CS:(IP+2) CS:(IP+1) CS:IP 288 . Mut în AX al 7 lea element din tabel .[BP] ADRESARE INDEXAT MOV TAB[SI]. Se încarc în BX deplasamentul lui TAB dup care se folose te adresarea bazat pentru a accesa al 7 lea element din tablou. Adresare bazat cu deplasament nul 287 mov AX. Instruc iune echivalent . aceste instruc iuni au acela i efect ca i variantele precedente . Define te un tablou de 10 elemente .5E2h mov TAB[SI].[BX] mov AX.code mov SI. Adresare indirect .BX mov [BX+6]. Încarc registrul index cu indicele elementului ce se dore te a fi accesat .ADRESAREA INDEXAT .data var1 dw 1 var2 dw 2 TAB dw 10 dup(0) .AX mov [SI+TAB].AX mov offset TAB.AX .

DI) i cu un “deplasament” (constant numeric pe 8 sau 16 bi i specificat în cuvântul de instruc iune) Registrele de segment implicite sunt : DS.[bx+si+7] ax. cu cel al unui registru index (SI.7 DS AS AF ini ial : AX = xxxxh BX = 0100h SI = 0018h MEM = 2FB9h final : AX = 2FB9h BX = 0100h SI = 0018h MEM = 2FB9h AE I BAZAT Memoria principal AX 05E2 2F B9 00 DS:0120 DS:011F DS:0000 07 BX 0100 0018 SI 40 8B CS:(IP+2) CS:(IP+1) CS:IP 290 . BP).[bx][si] ax. dac se folose te BP în combina ie cu Si sau DI Instruc iune BX / BP COD_OP SI / DI “deplasament” AE AS DS / SS AF OPERAND 289 ADRESARE INDEXAT mov mov mov mov ax.[bp+di].[bx][si][7] ax. dac se folose te ca registru de baz BX SS.ADRESAREA INDEXAT I BAZAT AE este format prin adunarea con inutului unui registru de baz (BX.

PC (IP) : AE = [PC+d] Operandul este o constant (pozitiv sau negativ ) – “offset” – reprezentând diferen a între adresa instruc iunii curente i a instruc iunii urm toare Operandul nu este explicit în cuvântul de instruc iune ci este calculat de c tre programul asamblor Instruc iune COD_OP “offset” d( ) IP AE AS CS AE = [IP+d] AF OPERAND 291 ADRESARE RELATIV Memoria de program mov bx. Adresare relativ la contorul de program. acest mod de adresare se folose te la implementarea instruc iunilor de salt relativ în program.bx CS:(IP+0) CS:(IP+1) CS:(IP+2) CS:(IP+3) CS:(IP+4) CS:(IP+5) CS:(IP+6) CS:(IP+7) CS:(IP+8) CS:(IP+9) CS:(IP+10) CS:(IP+11) CS:(IP+12) CS:(IP+13) 8B DB 83 20 00 7E 05 0F 10 00 EB F6 8B C3 salt negativ cu 10 (F6h) IP IP+5 IP IP+5 salt pozitiv cu +5 292 .20h jle ERR add bx.10h jmp TST ERR: mov ax.ADRESAREA EXPLICIT Uzual.ax TST: cmp bx.

ADRESAREA EXPLICIT
Toate modurile de adresare folosesc un registru de segment implicit pentru calculul adresei efective :
DS, în toate modurile de adrseare ce nu implic registrul BP SS, în modurile de adresare ce implic registrul BP

Registrul implict poate fi modificat prin folosirea prefixelor (de segment) Un prefix este un octet plasat înaintea codului instruc iunii ce modifica modul implicit de execu ie a instruc iunii curente Sintax instruc iune mov ax,[bx+7] mov ax,es:[bx+7] Instruc iune PREFIX COD_OP OPERANZI Codificare instruc iune 8B 47 07 26 8B 47 07

293

MODURI DE ADRESARE PE 32 DE BI I
ADRESARE BAZAT I INDEXAT CU FACTOR DE SCAL I DEPLASAMENT

Adresa efectiv a operandului este format din con inutul unui registru de baz la care se adaug con inutul unui registru index înmul it cu un factor de scal , la care se poate adauga un deplasament Factorul de scal e foarte util la parcurgerea tablourilor de date pe 2 sau 4 octe i, permi ând ca indicele logic al tabloului s coincid cu con inutul registrului index Factorul de scal e codificat pe 2 bi i (cu valorile posibile 0, 1, 2 sau 4) în cadrul octetului SIB (Scaled Index Byte) din cuvântul de instruc iune Exemple : MOV EAX, [EDI*4] [EBX+10h] MOV ECX, [EDI*2] [EBP] MOV EAX, TAB[ESI*4] [EBX+10h] ; EDI va con ine indicele elementului dintr un tablou de date “double” MOV EDX, TAB[ESI] [EBX+5] ; pentru adresarea elementului k, ESI = 4*k
294

MODURI DE ADRESARE PE 32 DE BI I
ADRESARE BAZAT I INDEXAT CU FACTOR DE SCAL I DEPLASAMENT În acest caz, adresa segment nu mai este con inutul registrului de segment ci adresa de baz con inut în descriptorul de segment a c rui adres e dat de registrul selector de sgment Instruc iune COD_OP EBX / EBP ESI / EDI

SIB

“deplasament”

AE Adresa de baz AS AF OPERAND
295

ADRESARE PE 32 DE BI I (MOD PROTEJAT)

296

ARHITECTURA RISC – REDUCED INSTRUCTION SET COMPUTER
Observa ii : – statisticile arat ca de i procesorul are multe tipuri de instruc iuni, programatorii obi nuiesc s foloseasc un set limitat de instruc iuni simple – un set cu instruc iuni complexe necesit o UCP de complexitate hardware ridicat , ce lucreaz la o frecven mai scazut – cre terea de complexitate datorit setului extins de instruc iuni nu se justific în cele mai multe cazuri Ideea : – s se simplifice la maximum UCP i implicit setul de instruc iuni astfel încat procesorul s lucreze la o frecven de ceas cât mai mare Principiu RISC : – sacrific tot pentru vitez – programatorul s lucreze mai mult dar programul rezultat sa fie mai eficient din punct de vedere al timpului de execu ie

297

COMPARA IE CISC / RISC

Complex Instruction Set Computer S au impus într un moment când memoria era lent i foarte scump Instruc iuni cu operanzi în memorie Densitate mare a codului în memorie Format de lungime variabil pentru instruc iuni Unitate de control microprogramat (micro codat ) flexibil Set complex (extins) de instruc iuni i multe moduri de adresare Instruc iuni complexe

Reduced Instruction Set Computer Se refer la complexitatea instruc iunilor, NU la num rul lor Acces la memorie limitat i lent Densitate mic a codului (programul ocup mai mult spa iu de memorie) Format de lungime fix pentru instruc iuni Unitate de control simpl implementat sub form cablat Relativ pu ine tipuri de instruc iuni i pu ine moduri de adresare Instruc iuni simple

298

COMPARA IE CISC / RISC

Complex Instruction Set Computer Necesit folosirea unor circuite logice complexe pentru implementare Implementeaz tehnici pipeline rudimentare Un num r relativ mic de registre în interiorul UCP Exista instruc iuni complexe de mare eficien , dar uneori acestea sunt rar utilizate de c tre compilatoare

Reduced Instruction Set Computer Hardware simplificat tehnici de pipelineing (execu ia în paralel a opera iilor) mai u or de implementat Execu ia instruc iunilor într un singur ciclu prin tehnici pipeline eficiente Un num r relativ mare de registre în interiorul UCP Utilizarea compilatoarelor optimizatoare pentru a optimiza performan ele codului obiect.

299

RISC/CISC – AVANTAJE I DEZAVANTAJE
RISC frecven a mai mare de lucru mai multe instruc iuni executate în unitatea de timp oblig programatorul s lucreze eficient program executabil mai scurt (timp i spa iu) CISC u or de programat, timp mai scurt pentru programare compilatoarele de limbaje de nivel înalt se scriu mai usor pot fi implementate u or structuri complexe de date si de program CISC timp de execu ie mai mare pentru programe cod mai lung unitate central mai complex , care consum mai mult RISC dificil de programat la nivel de asamblare, timp mai lung pentru dezvoltarea unei aplica ii

Concluzie: – combinarea celor 2 tehnici in cadrul aceluia i procesor: arhitectura Pentium: RISC în interior, CISC în exterior
300

Diferen a const în operanzii surs i destina ie Cuvânt de isntruc iune Câmp codificare instruc iune Câmp codificare operanzi 302 . decodificatoare pentru selec ia i comanda circuitelor combina ionale ce realizeaz func iile i opera iile dorite Un set de m instruc iuni implic coduri pe lungime de n=log2(m) bi i (o instruc iune pe octet poate codifica pâna la 256 instruc iuni diferite) Divizarea codului instruc iunii în sub coduri – instruc iunile sunt grupate pe familii (tipuri de opera ii efectuate) pentru simplificarea circuitisticii de implementare hardware MOV AX.DX sunt instruc iuni diferite dar ambele transfer date între registrele procesorului.CODIFICAREA INSTRUC IUNILOR Codificarea instruc iunilor presupune asocierea lor cu un cod numeric unic numit uneori i “cuvânt de instruc iune” Codificarea a m instruc iuni implic deci implementarea unor coduri pe lungime de n=log2(m) bi i Principalele aspecte în proiectarea arhitecturii unui set de instruc iuni : Implementarea hardware Lungimea instruc iunilor Flexibilitatea setului de instruc iuni 301 IMPLEMENTAREA HARDWARE A INSTRUC IUNILOR Codificarea instruc iunilor necesit implementare hardware : ex.BX i MOV CX.

DIV.IMPLEMENTAREA HARDWARE A INSTRUC IUNILOR Exemplu de implementare hardware a circuitului de decodificare a unui set de 8 instruc iuni Specifica iile setului de instruc iuni : 8 instruc iuni : MOV. ADD. OR. DX Configura ia circuitului de decodificare : un decodificator cu 3 linii de adres pentru decodificarea clelor opt instruc iuni dou decodificatoare 2/4 pentru selec ia registrelor surs i destina ie necesit un cod pe 7 bi i 303 IMPLEMENTAREA HARDWARE A INSTRUC IUNILOR Cod instruc iune (Cod_opera ie : Operanzi) 0 Selec ie circuitistic pt. BX. AND. CX. BX. SUB. MUL. XOR fiecare instruc iune accept 2 operanzi : surs i destina ie operandul surs desemneaz 4 entit i : registrele AX. execu ie opera ie C B A MOV ADD SUB MUL DIV AND OR XOR 0 0 0 0 0 1 AX Selec ie registru A B Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2/4 DECODER A B Q0 Q1 BX Q2 CX DX Q3 Registre interne UCP Magistrala intern UCP 3/8 2/4 DECODER Q0 Q1 Q2 Q3 AX BX CX DX DECODER UAL 304 . CX. DX operandul destina ie desemneaz 4 entit i : registrele AX.

1. Aceste arhitecturi utilizeaz instruc iuni de lungime fix ce permit o decodificare mai u oar în structuri de tip pipeline Arhitecturile CISC (8086) implementeaz instruc iuni de lungime variabil . COMPLEXITATE Lungimea unei instruc iuni trebuie s fie un multiplu întreg (nu neap rat par) al unit ii de adresare a memoriei Procesoarele RISC acceseaz memoria în bocuri de 32 sau 64 de bi i a a încât codificarea instruc iunilor se va face pe minim k*32 de bi i (cu k. ceea ce permite optimizarea acestora (astfel. instruc iunile procesorului 8086 au o lungime de la 1 la 16 octe i Un al doilea factor ce condi ioneaz lunginea instruc iunilor este dimensiunea operanzilor La arhitecturile RISC to i operanzii sunt con inu i explict în codul instruc iunii. tehnicile pipeline sunt dificil de implementat i. rudimentare 305 FORMATUL UNEI INSTRUC IUNI 80x86 COD OPERA IE [ 1 2 octe i ] – implict 0Fh define te opera ia realizat la execu ia instruc iunii (dac este pe 2 octe i. 1. În contrapartid . ca urmare.LUNGIMEA INSTRUC IUNILOR VS. primul reprezint prefixul de extensie a codului) SIB [ 1 octet ] op ional doar la instruc iunile ce folosesc modul de adresare indexat i bazat DAT IMEDIAT [ 0. 2 sau 4 octe i ] este o constant numeric pentru instruc iunile cu operanzi imedia i PREFIX [ 0 4 octe i ] modific modul de execu ie a unei instruc iuni standard MOD REG R/M [ 1 octet ] op ional specific modul de adresare i dimensiunea operanzilor (doar la instruc iunile ce folosesc ca operanzi registre sau memoria) DEPLASAMENT [ 0. num r întreg) 8086 poate accesa memoria pe octet n = k*8 Tipic. 2 sau 4 octe i ] specific deplasamentul pentru calcul adresei efective a operanzilor din memorie 306 . instruc iunile frecvente vor fi codificate pe un num r mai mic de octe i).

registrul este adresat pe octet sau d cuvânt func ie de dimensiunea operanzilor (specificat de bitul s din codul opera iei) Câmpul MOD specific nodul de adresare Câmpul R/M (împreun cu MOD) specific tipul celui de al doilea operand al instruc iunii (registru sau loca ie de memorie) i modul de adresare a acestuia MOD REG R/M 00 01 10 11 adresare indirect adresare indexat 8 bit offset adresare indexat 16 bit offset adresare direct la registru 000 001 010 011 100 101 110 111 AL/AX CL/CX DL/DX BL/BX AH/SP CH/BP DH/SI BH/DI 308 .CODIFICAREA INSTRUC IUNII LA 80x86 8086 execut opera ii codificate pe 1 sau 2 octe i : cod opera ie standard – 1 octet ce permite codificarea unui set de pân la 256 de opera ii diferite (clase de instruc iuni) cod opera ie extins – 1 octet standard + 1 octet de prefix (implicit 0Fh) ce permite extensia setului de instruc iuni la un num r de 512 clase Ex : Codul opera iei de adunare ADD ADD opcode 0 0 0 0 0 0 d s d – direction bit d = 0 : destina ia este loca ie de sau registru (fc. de R/M) d = 1 : destina ia este un registru s – size bit s = 0 : operanzi pe 8 bi i s = 1 : operanzi pe 16 / 32 bi i 307 CODIFICAREA OPERANZILOR LA 80x86 Octetul “mod reg r/m” specific modul de adresare mod r/m” Câmpul REG codific unul dintre registrele UCP ce poate fi surs sau destina ie în func ie de bitul de direc ie (d) din codul opera iei.

CODIFICAREA OPERANZILOR LA 80x86
Octetul “SIB” – Scaled Index Byte e folosit în cazul modului de adresare bazat i SIB” indexat cu factor de scal specific modului protejat la procesoarele pe 32 de bi i FACTOR INDEX

BAZ

Câmpul INDEX specific registrul index folosit Câmpul BAZ specific registrul de baz Câmpul FACTOR specific un factor de multiplicare a valorii con inut în registrul index (poate lua valorile 0, 1, 2 sau 4)

309

EXEMPLE DE CODIFICARE A OPERA IEI DE ADUNARE
Cod Opera ie 0 0 0 0 0 0 0 0 Mod Reg R/M 1 1 0 0 0 0 0 1

ADD CL,AL = 00 C1 h sau 02 C8 h Cod Opera ie 0 0 0 0 0 0 1 1 ADD AX,BX = 03 C3 h Cod Opera ie 0 0 0 0 0 0 1 1 ADD AX,[SI+9] = 03 46 09 h Cod Opera ie 1 0 0 0 0 0 0 0 ADD BL,10 = 80 C3 0A h
310

Mod Reg

R/M

1 1 0 0 0 0 1 1

Mod Reg R/M 0 1 0 0 0 1 1 0

Deplasament 0 0 0 0 1 0 0 1

Mod Reg R/M 1 1 0 0 0 0 1 1

Dat imediat 0 0 0 0 1 0 1 0

ÎNTRERUPERI I EXCEP II

ÎNTREUPERI I EXCEP II

Apelul de procedur . Utilizarea stivei în apelurile de procedur Rolul întreruperilor. Tipuri de înterupere Excep ii (înteruperi software) Cereri de întrerupere. Transefrul de date de la interfe ele I/O Identificarea i vectorizarea întreruperilor Controlerul de întreruperi Secven a de tratare a unei înteruperi Redirectarea întreuperilor software Programarea înteruperilor hardware

312

APELUL DE PROCEDUR

O procedur este o secven de instruc iuni apelat într un punct al alteia, executat , dup care are loc revenirea în secven a apelant , la adresa imediat urm toare celei în care s a f cut apelarea La apelul de procedur unitatea de control salveaz automat în stiv adresa de revenire con inut în registrului contor de program (CS:IP) Dup salvare se face înc rcarea PC (IP) cu adresa la care se face saltul (adresa unde începe procedura) Procedura se termin cu o instruc iune de salt de tip RET (RETurn) prin care se produce înc rcarea automat a PC cu adresa de revenire la programul întrerupt Alte salv ri /restaur ri ale variabilelor contextului întrerupt se vor efectua de c tre programator în cadrul procedurii, prin intermediul unor instruc iuni de înscriere / extragere din stiv (aten ie LIFO) : PUSH, POP

313

APELUL DE PROCEDUR

PP ; instrPP

PROC1 b: push AX b+1: push BX t1 ; instrP1 t2

PROC2 c: push AX c+1 push DX ; instrP2

...

...

...

t0 t4

a: CALL PROC1 a+3: instrPP_nxt

bb: CALL PROC2 t3 bb+3: instrP1_nxt bb+4: pop BX bb+5: pop AX RET

; instrP2

...

end

...

pop DX pop AX cc: RET

314

APELUL DE PROCEDUR
SP = PC = x a

adresa :
PP start: ... a: call Proc1 <iPp_nxt> ... end start Proc1 b: push AX push BX ... bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX ... cc: pop DX pop AX ret

MP (Stiva)

SP =

x: x 1: x 2: x 3: x 4: x 5: x 6: x 7:
315

APELUL DE PROCEDUR
SP = PC = x a x2 b

adresa :
PP start: ... a: call Proc1 <iPp_nxt> ... end start Proc1 b: push AX push BX ... bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX ... cc: pop DX pop AX ret

MP (Stiva) AH AL

x: x 1: SP = x 2 : x 3: x 4: x 5: x 6: x 7:

316

. cc: pop DX pop AX ret MP (Stiva) AH AL BH BL x: x 1: x 2: x 3: SP = x 4 : x 5: x 6: x 7: 317 APELUL DE PROCEDUR SP = PC = x a x2 b x 4 ..... cc: pop DX pop AX ret MP (Stiva) AH AL BH BL x: x 1: x 2: x 3: SP = x 4 : x 5: x 6: x 7: 318 ... b+1 ... bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX . a: call Proc1 <iPp_nxt> . end start Proc1 b: push AX push BX . adresa : PP start: .APELUL DE PROCEDUR SP = PC = x a x2 b x 4 ... x 4 b+1 ........ end start Proc1 b: push AX push BX ... a: call Proc1 <iPp_nxt> ..... bb adresa : PP start: . bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX .

. end start Proc1 b: push AX push BX . a: call Proc1 <iPp_nxt> . bb x6 c x 8 . bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX ..... adresa : PP start: ...... x 4 b+1 .... end start Proc1 b: push AX push BX ... cc: pop DX pop AX ret MP (Stiva) AH AL BH BL AH AL DH DL 320 x: x 1: x 2: x 3: x 4: x 5: x 6: x 7: SP = x 8 : . bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX .APELUL DE PROCEDUR SP = PC = x a x2 b x 4 . c+1 .. cc: pop DX pop AX ret MP (Stiva) AH AL BH BL AH AL x: x 1: x 2: x 3: x 4: x 5: SP = x 6 : x 7: 319 APELUL DE PROCEDUR SP = PC = x a x2 b x 4 .. bb x6 c adresa : PP start: ... a: call Proc1 <iPp_nxt> ........ x 4 b+1 ...

. bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX ......... cc adresa : PP start: .. x 6 c+1 ....... x 4 b+1 .... x 4 b+1 . bb x6 c x 8 .. end start Proc1 b: push AX push BX . cc: pop DX pop AX ret MP (Stiva) AH AL BH BL AH AL x: x 1: x 2: x 3: x 4: x 5: SP = x 6 : x 7: 321 APELUL DE PROCEDUR SP = PC = x a x2 b x 4 .. cc cc+1 adresa : PP start: ... end start Proc1 b: push AX push BX . bb x6 c x 8 .APELUL DE PROCEDUR SP = PC = x a x2 b x 4 ... a: call Proc1 <iPp_nxt> . a: call Proc1 <iPp_nxt> ....... x 6 x4 c+1 . cc: pop DX pop AX ret MP (Stiva) AH AL BH BL x: x 1: x 2: x 3: SP = x 4 : x 5: x 6: x 7: 322 .. bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX .

.. x 6 x4 x4 c+1 . x 4 b+1 .. cc: pop DX pop AX ret MP (Stiva) AH AL BH BL x: x 1: x 2: x 3: SP = x 4 : x 5: x 6: x 7: 324 ..APELUL DE PROCEDUR SP = PC = x a x2 b x 4 .. bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX .. cc: pop DX pop AX ret MP (Stiva) AH AL BH BL x: x 1: x 2: x 3: SP = x 4 : x 5: x 6: x 7: 323 APELUL DE PROCEDUR SP = PC = x a x2 b x 4 ... end start Proc1 b: push AX push BX ......... a: call Proc1 <iPp_nxt> . bb x6 c x 8 ... bb x6 c x 8 .. a: call Proc1 <iPp_nxt> ... end start Proc1 b: push AX push BX . cc cc+1 cc+2 bb+1 adresa : PP start: . cc cc+1 cc+2 adresa : PP start: . bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX .... x 4 b+1 .... x 6 x4 x4 x4 c+1 ......

... x 4 b+1 .... x 4 b+1 ... x 6 x4 x4 x4 x2 c+1 .... bb x6 c x 8 . a: call Proc1 <iPp_nxt> ..... bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX .. cc cc+1 cc+2 bb+1 bb+2 adresa : PP start: ...APELUL DE PROCEDUR SP = PC = x a x2 b x 4 .. x 6 x4 x4 x4 x2 x c+1 . bb x6 c x 8 .... cc cc+1 cc+2 bb+1 bb+2 bb+3 adresa : PP start: ..... cc: pop DX pop AX ret MP (Stiva) AH AL x: x 1: SP = x 2 : x 3: x 4: x 5: x 6: x 7: 325 APELUL DE PROCEDUR SP = PC = x a x2 b x 4 ... cc: pop DX pop AX ret MP (Stiva) SP = x: x 1: x 2: x 3: x 4: x 5: x 6: x 7: 326 .. end start Proc1 b: push AX push BX . end start Proc1 b: push AX push BX . bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX .... a: call Proc1 <iPp_nxt> .

bb x6 c x 8 ... cc cc+1 cc+2 bb+1 bb+2 bb+3 bb+4 a+1 adresa : PP start: ........ bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX ... cc: pop DX pop AX ret MP (Stiva) SP = x: x 1: x 2: x 3: x 4: x 5: x 6: x 7: 327 APELUL DE PROCEDUR SP = PC = x a x2 b x 4 .. cc: pop DX pop AX ret MP (Stiva) SP = x: x 1: x 2: x 3: x 4: x 5: x 6: x 7: 328 . a: call Proc1 <iPp_nxt> .. x 6 x4 x4 x4 x2 x x c+1 .APELUL DE PROCEDUR SP = PC = x a x2 b x 4 .. a: call Proc1 <iPp_nxt> ......... end start Proc1 b: push AX push BX .. end start Proc1 b: push AX push BX .. x 4 b+1 .. bb: call Proc2 <iP1_nxt> pop BX pop AX ret Proc2 c: push AX push DX ..... cc cc+1 cc+2 bb+1 bb+2 bb+3 bb+4 adresa : PP start: . x 4 b+1 ... x 6 x4 x4 x4 x2 x x x c+1 .. bb x6 c x 8 .

eroare de paritate pe magistral .) 330 . re ea – circuite specializate pentru supravegherea func ion rii normale a componentelor hardware (eroare de paritate la citirea memoriei. tastatur . NMI) fiind astfel numite i întreruperi hardware sunt asincrone cu programul rulat (deci vor fi arbitrate fie de un controler de întreruperi fie de însu i procesor) surse de întreruperi : – echipamente periferice care cer servicii de la UCP (cerere de transfer de date.ÎNTRERUPEREA UNUI PROGRAM În timpul rul rii programelor pot ap rea unele evenimente neobi nuite (excep ii) sau semnale externe provenite de dispozitive de I/O Aceste evenimente pot conduce la suspendarea temporar a programului aflat curent în execu ie Toate evenimentele produse de condi ii neobi nuite /nea teptate pentru programul curent în execu ie sunt numite la modul general "întreruperi“ î ntreruperi Fiec rei întreruperi îi este asociat un cod numit i tip sau nivel al întreruperii Procesorul 8086 accept 256 niveluri de întrerupere Întreruperile produc întreruperea programului i devierea c tre o rutin special de tratare a evenimentului "întreruptor“ numit rutin de tratare a înreruperii (RTI) Mecanismul prin care se face acest transfer c tre RTI este de tip apel de procedur Dup execu ia rutinei respective. HDD. c derea iminent a tensiunii de alimentare etc. sau inform ri cu privire la starea perifericului) – mouse. programul revine la execu ia instruc iunilor programului ini ial din punctul în care s a produs evenimentul 329 TIPURI DE ÎNTRERUPERI Cereri de întrerupere sunt evenimente generate din exteriorul UCP care cer tratare sunt semnale electrice aplicate la intr ri dedicate ale microprocesorului (INT.

– încercarea de violare a sistemului de protec ie a informa iilor din memorie.. Dup tratare devierile produc reluarea programului întrerupt începând cu instruc iunea urm toare. reluarea programului se va face începând cu instruc iunea întrerupt .. fie în timpul execu iei acestora. împ r ire la zero). – încercarea de a accesa un segment / pagin de informa ie (instruc iuni. Intel împarte excep iile în urm toarele categorii: devieri ('traps') O deviere poate fi tratat doar dup terminarea ciclului de instruc iune curent.TIPURI DE ÎNTRERUPERI Înteruperi software evenimentele întreruptoare (care cer tratare) sunt generate de instruc iunile programului rulat folosite pentru apelul unor func ii ale sistemului de operare – apeluri sistem (INT 21H) – sau ale sistemului de intrare – ie ire (întreruperi BIOS) sunt deci sincrone cu programul ce va fi întrerupt produc devieri / capcane ("traps") Excep ii indic situa ii de excep ie cum ar fi: – întâlnirea unor instruc iuni de control ilegale în programul utilizator. dup tratarea erorii. E ecurile sunt utilizate pentru a trata erori severe cum sunt valori ilegale i / sau inconsecvente în tabelele sistemului sau erori de hardware. date) nerezident în memoria principal . 332 . – condi ii aritmetice speciale (dep iri. e ecuri termin ri anormale ('abort') Produc abandonarea procesului. 331 CLASIFICARE EXCEP II (INTEL) Dup modul de manifestare i tratare a excep iilor. Dac erorile se detecteaz în timpul execu iei unei instruc iuni. erori ('faults') Sunt excep ii ce sunt detectate fie înainte de începutul execu iei instruc iunii. accesul la loca ii de memorie nepermise.

SISTEMUL DE ÎNTRERUPERI AL FAMILIEI DE PROCESOARE INTEL X86 Întreruperi interne (software – generate prin instruc iuni speciale) : – INT n – INTO – DIV/IDIV întrerupere software de tip n – vector de întrerupere la adresa 4*n INTerrupt on Overflow – întrerupere de nivel 4 generat când apare dep ire (OF = 1) întrerupere de tip 0 generat când destina ia specificat în instruc iune pentru a memora câtul împ r irii nu are dimensiunea necesar (prioritate maxim ) întrerupere de tip 1 (execu ie pas cu pas) – P genereaz automat câte o întrerupere dup fiecare instruc iune (depanarea programelor) “breakpoint” – întrerupere execu i program într un punct predefinit pentru a efectua anumite proces ri speciale (depanare) – TF = 1 – INT 3 333 SISTEMUL DE ÎNTRERUPERI AL FAMILIEI DE PROCESOARE INTEL X86 Întreruperi externe (hardware ) – 8086 prezint 2 intr ri pentru cereri de întrerupere : NMI (Non Maskable Interrupt) – întrerupere nemascabil (nedezactivabil ) utilizat pentru a semnala apari ia unui eveniment “catastrofal” : – c derea tensiunii de alimentare – erori de acces la memorie – erori de paritate pe magistral INT (INTerrupt) – cerere de întrerupere mascabil (dezactivabil ) – provenit de la dispozitive externe (tastatur . mouse. etc. porturi.) – sunt întreruperi hardware controlate de un circuit specializat (controler de întreruperi – intel 8259A) care accept 8 cereri de întrerupere – validarea/invalidarea întreruperilor se face prin indicatorul de condi ie IF (Interrupt Flag) folosind instruc iuni specifice : • STI (SeT Interrupt) – IF = 1 – validare – IF = 0 – invalidare (mascare) • CLI (CLear Interrupt) 334 .

. dimensiune memorie interfata de disc interfata seriala servicii extinse 16h 17h 18h 19h 1Ah 1Bh 1C 1D 1E 1F 20h 21h software software software software software software software poantor poantor poantor software software interfata de tastatura interfata de imprimanta salt ROM Basic incarcator (Bootstrap) ceas de timp real apasare CTRL/C la dispozitia utilizatorului tabela de parametri video tabela de parametri disc tabela de caractere grafice terminare program apeluri sistem (DOS) citire/scriere fizica disc TSR suport mouse IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 2 2 2 2 2 2 2 2 ceas de timp real redirectare IRQ2 liber liber liber coprocesor aritmetic controlor disc fix liber 25 26h software 27h 33h 70h 71h 72h 73h 74h 75h 76h 77h software software externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) 335 TABELA VECTORILOR DE ÎNTRERUPERE TVI (tabela vectorilor de înrerupere) asigur leg tura dintre tipul/ nivelul întreruperii i rutina de tratare asociat (procedur de tip far) este un set de 256 de vectori de întrerupere (VI) con inând fiecare adresa unei rutine de tratare RTI TVI ocup primul kB din memoria principal în spa iul de adrese fizice 0h .SISTEMUL DE ÎNTRERUPERI AL FAMILIEI DE PROCESOARE INTEL X86 Nivel 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h Tip intrerupere interna interna interna interna interna software interna interna externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) externa (hardware) software software software software software software IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 1 1 1 1 1 1 1 1 NMI Semnal Controller Cauza intreruperii impartire cu zero executie pas cu pas intrerupere nemascabila breakpoint depasire (overflow) tiparire ecran rezervat rezervat ceas sistem tastatura cascadare controlor 2 COM2 (port serial) COM1 (port serial) LPT2 (imprimanta) controlor de disc flexibil LPT1 (imprimanta) interfata video det. 003FFh fiecare vector de întrerupere ocup 4 octe i (pointer CS:IP) 003FFh TVI Adresa segment Deplasament A1 35 1F A5 CS IP adresa RTIn = AF (CS:IP) adresa VIn = 4 x n 336 00000h .. configuratie sistem det.

NMI) Identificare printr o informa ie furnizat de evenimentul întreruptor Identificare prin testarea bistabililor de condi ie Indentificare prin con inutul instruc iunii care genereaz întreruperea software UCP salveaz în stiv adresa de revenire la programul întrerupt – adresa instruc iunii urm toare ce urma a fi executat (con inutul registrelor CS i IP) UCP calculeaz adresa unde se g se te RTI (<nivel_intrerupere>*4) Se încarc registrele CS:IP cu adresa rutinei de întrerupere din tabela de întreruperi de la adresa calculat la pasul anterior Se execut salt la RTI i execu ie Revenire la programul întrerupt prin restaurarea din stiv a contorului de program 338 1. 2. 5. 3. 7. 4. . 6.TRATAREA UNEI ÎNTERUPERI SOFTWARE DE NIVEL N Memoria principal 1 MB Program INT n Rutina de întrerupere 1 kB *4 <adr_seg> : <offset> 0 Tabela de întreruperi (TVI) (256 de intr ri × 4 octe i) 337 TRATAREA UNEI ÎNTERUPERI UCP r spunde la o cerere de întrerupere (hardware sau software) i trateaz evenimentul ce a produs întreruperea în pa i succesivi care pot fi rezuma i astfel : UCP salveaz în stiv con inutul registrului de stare program (indicatorii de condi ie) UCP identific sursa ce a produs întreruperea : Identificare prin intrare separat a cererilor de întrerupere hardware (INT.

NMI (tip 2 – întreruperea extern nemascabil ) III. IRQi (Interrupt ReQuest) – întreruperi externe mascabile.ORDINEA DE PRIORITATE În cazul întreruperilor multiple. INT n – întreruperile interne (oricare întrerupere intern . Prioritatea acestora este stabilit prin vectorizarea sistemului de întreruperi (vectorizarea se realizeaz prin modul de conectare a dispozitivelor interuptoare la intr rile controlerului de întreruperi 8259A) IV.. subsistemul de întreruperi trebuie s realizeze un arbitraj servind întotdeauna cererile cu prioritate mai mare Sistemul de arbitrare permite ca o RTI s fie întrerupt de cerere prioritar Arbitrarea poate fi controlat direct de c tre UCP (întreruperi BIOS) sau un controler de întreruperi extern (întreruperi mascabile) Controlerul de întreruperi 8259A deserve te cererile de întrerupere în func ie de prioritatea acestora : I. simultane sau succesive. întreruperea de tip 3 (Breakpoint) iii.. IRQ14 INTR INTA IRQ0 IRQ1 8259A IRQ0 IRQ1 IRQ2 IRQ7 . INT 1 – întreruperea intern de tip 1 (execu ie pas cu pas) 339 SISTEM VECTORIZAT DE ÎNTRERUPERI Interfa I/O (ceas sistem) 8086 D15 : D0 Interfa I/O (tastatura) 8259A NMI INT INTA INTR INTA IRQ0 IRQ1 IRQ2 IRQ7 . întreruperea de tip 4 (Overflow – dep ire de capacitate) iv.. 340 ... întreruperile software de tip n (în ordinea cresc toare a lui n 5) II. IRQ2 IRQ3 IRQ4 IRQ9 .. exceptând INT 1 sunt prioritare fa de orice întrerupere extern ) i. întreruperea de tip 0 (Diviziune cu 0 – prioritate maxim ) ii.

Procesorul salveaz pe stiv adresa de revenire i starea dup care face un salt la Rutina de întrerupere 8..2 RD WR A0 CS Bloc de cascadare Logica de conectare magistral ISR Dispozitiv de comand CMP D 0.STRUCTURA INTERN A CONTROLERULUI DE ÎNTRERUPERI INTA INTR IRR IRQ0 IRQ1 IRQ7 . Procesorul genereaz dou cicluri INTA pt.. La executia instruc iunii IRET (revenire din rutina de întrerupere) procesorul ia din stiv adresa de revenire i face salt la aceast adresa.. continuând programul întrerupt 342 . Dup terminarea instruc iunii curente. Dac întreruperea este permis se genereaz o întrerupere c tre procesor prin activarea semnalului INTR 4. CAS 0. identificarea sursei de întrerupere 5. Interfa a genereaz o întrerupere prin activarea unui semnal IRQi c tre controller 2. La sfar itul rutinei de întrerupere procesorul d o comand c tre controler pentru încheierea întreruperii curente (EOI) 9. nivelul înteruperilor în curs de deservire) – Comparatorul de priorit i (compar prioritatea întreruperii curente cu cea în curs de deservire) 341 SECVEN A DE DESERVIRE A UNEI CERERI DE ÎNTRERUPERE 1.7 Buffer Date IMR i8259A IMR IRR ISR CMP – Interrupt Mask Register (mascarea selectiv a cererilor de întrerupere) – Interrupt Request Register (memoreaz cererile de într. Controllerul verific dac întreruperea este permis i nu este alta mai prioritar în curs de deservire 3.. Pe al doilea ciclu controlerul pune pe liniile de date ale magistralei vectorul întreruperii curente 6. Procesorul folo este vectorul ca index în Tabela de întreruperi pentru a citi adresa Rutinei de întrerupere 7. semnalizate pe IRQi) – Interrupt Service Register (mem.

salvare în stiv : flaguri i registre utilizate în cadrul subrutinei . refacere registre din stiv refacere IRET RUT_INT ENDP O rutin de tratare face parte dintr un program care o instaleaz : salveaz adresa vechii rutine (ex. pe lâng CS i IP reface i con inutul registrului indicactorilor de condi ie (flagurile) RUT_INT PROC FAR . corpul rutinei de tratare corpul .SCHEM DE ACTIVARE A ÎNTRERUPERILOR VECTORIZATE 343 RUTINA DE TRATARE A UNEI ÎNTRERUPERI RTI se define te ca o procedur de tip far RTI se va încheia cu instruc iunea IRET care. func ia 35h a int 21h) instaleaz noua rutin (ex. func ia 25h a int 21h) Programul de instalare se poate termina în 2 moduri : prin eliberarea memoriei i stergerea rutinei (înainte de cedarea controlului trebuie sa refac vectorul de întrerupere cu adresa vechii rutine) rutina de tratare r mâne rezindent în memorie – program numit TSR (Termiante and Stay Resident) 344 .

AX AX. AX . activeaz întreruperile mascabile AX. AX AX. ES:[0024H] . OFFSET int8_new . CS . rescrie vectorul de întrerupere de la adresa ES:[0026H]. adresa noii rutine de tratare (int8_new) ES:[0024H]. cli xor mov mov mov mov mov mov mov mov sti . ES:[0026H] int8_old_seg. AX . adresa 0000:0024 AX.INSTALAREA UNEI RUTINE DE TRATARE Func ia 35h a întreruperii 21h salveaz vectorul de întrerupere ini ial (aderesa vechii rutine de tratare) cere: AH 35h AL num rul întreruperii returneaz :ES:BX adresa rutinei de întrerupere Func ia 25h a întreruperii 21h instaleaz o rutin de întrerupere (repoziâionarea vectorului de întrerupere) cere: AH 25h AL num rul întreruperii DS:DX adresa de început a rutinei de tratare care se instaleaz Func ia 31h a întreruperii 21h salveaz vectorul de întrerupere ini ial (aderesa vechii rutine de tratare) cere: AH 31h AL nivelul de eroare DX dimensiunea spa iului de memorie ce va ramâne rezident (se exprim în paragrafe a câte 16 octe i) 345 INSTALAREA MANUAL A UNEI RUTINE DE TRATARE Se face prin modificarea intr rii TVI (vectorului de întrerupere) corespunz toare subrutinei sistem de tratare a întreruperii respective cu adresa noii rutine definite de utilizator Exemplu: Deturnarea întreruperii de ceas IRQ0 (nivel 8) dat de Num r torul 0 al ceasului programabil 8253 care genereaz 18 întreruperi/sec. dezactiveaz întreruperile mascabile 346 . 0000:0024 cu adresa rutinei int8_new . salveaz adresa rutinei originale din VI de la int8_old_off. AX ES.

5 . n – nivel de întrerupere . 25h MOV AL. program ……… . salvare adres segment . . 5 . 25h MOV AL. OFFSET RUT_INT MOV AH.. 25h func ia de scriere vector. BX MOV BX. în DS:DX se pune adresa rutinei de întrer. AX MOV DX. VECT+2 MOV DS. BX MOV AX. SEG RUT_INT MOV DS. 5+8 INT 21h MOV DX. comanda de incheiere intrerupere . . adresa portului 0 din controlorul de întreruperi . AX MOV DX. . DS < adresa de segment a noii rutine de tratare a întreruperii . PROGRAM MOV AX. validare intrare de întrerupere . masc pentru invalidarea intr rii nr. initializare întrerupere CLI MOV AX. MASCA OUT DX. SEG RUT_INT MOV DS. n – nivel întrerupere . controler de întreruperi este 8 . 25h func ia de scriere vector . apel de func ie sistem . ES MOV VECT+2. validare întreruperi mascabile 348 . 35h MOV AL.AL STI ……….n INT 21h . INTA01 IN AL.n INT 21h .DX AND AL. adresa portului 1 din controlorul de întreruperi . masc pentru validarea intr rii nr. înscrierea vechiului vector în tabela de intrerupere 347 PROGRAMAREA UNEI ÎNTRERUPERI HARDWARE INTA00 EQU 20H INTA01 EQU 21H EOI EQU 20h MASCA EQU 11011111B MASCA1 EQU 00100000B ………. apelul func iei sistem . întreruperea 5 . VECT MOV AH. DX < adresa de offset a noii rutine de întrerupere . 35h func ie sistem pentru salvarea vectorului de întrerupere . citire registru de masc . n – nivelul de întrerupere redirectat . apelul func iei sistem returneaz în ES:BX adresa rutinei de la nivelul n . 25h MOV AL. refacerea adresei . invalidarea întreruperilor mascabile . aici se salveaz vechiul vector de întrerupere . func ia de scriere vector de întrerupere . AX MOV DX. 5+8= nivel de întrerupere programat. salvare adres offset . terge bit masc pt. n INT 21h MOV VECT.REDIRECATREA UNEI ÎNTRERUPERI VECT DW 2 DUP(?) MOV AH. adresa de baz a primului . OFFSET RUT_INT MOV AH.

rutina de tratare a întreruperii RUT_INT PROC FAR . .DX . seteaz bitul masc pt.EOI OUT DX. întreruperea 5 OUT DX. invalidarea intr rii de întrerupere STI ……. refacere registre salvate IRET RUT_INT ENDP 349 NOTE 350 . corpul rutinei ………. .sfîr itul rutinei MOV DX. comand de sfîr it întrerupere POP r . noua rutina de tratare a intreruperii PUSH r .PROGRAMAREA UNEI ÎNTRERUPERI HARDWARE . sfîr it program CLI MOV DX. INTA00 MOV AL.. MASCA1 .AL . citire registru de masc OR AL. INTA01 IN AL. validare întreruperi ………. salvarea registrelor utilizate in cadrul rutinei STI .. . AL .

Hand Shaking Ceasul programabil (RTC – Real Time Clock) 352 .INTERFE E – SISTEMUL DE I/O ÎNTREUPERI I EXCEP II Circuite de interfa I/O i porturi Moduri de transfer a datelor Transfer prin program Transfer prin întreruperi Transfer DMA (prin acces direct la memorie) Controlerul DMA Tipuri de interfe e i controlere specializate Interfa a serial asincron Interfa a paralel .

sau se afi eaz în exterior Leg tura între UCP i dispozitivele de I/O (dispozitivele periferice) se face prin intermediul unor circuite de interfa de I/O Circuitele de interfa I/O asigur . iar portul este port de intrare (PI). prin care calculatorul realizeaz schimb de informa ie cu exteriorul. fie transmite informa ia la un port de ie ire (PO) 353 CIRCUITE DE INTERFA 354 . fie culege informa ia. pentru prelucrare. schimbul corect de date Circuitele de interfa se cupleaz la magistralele calculatorului i ele sunt adresabile la nivel de registru port de intrare ie ire Prin port în elegem aici un registru.CIRCUITE DE INTERFA Subsistemul de intrare ie ire (I/O) al unui calculator asigur calea de comunica ie a informa iilor între calculator i mediul extern (logic extern care nu lucreaz direct cu UCP) Prin intermediul acestui subsistem. cu adres specific (de regul mapat în spa iul de adrese al memoriei principale). i tot cu ajutorul s u rezultatele se înregistreaz . utilizatorul introduce programele i datele dorite în memoria calculatorului. din punct de vedere hardware.

pentru a nu perturba celelalte periferice conectate la UCP 356 .CIRCUITE DE INTERFA Rol : adaptarea particularit ilor func ionale. cu respectarea unor specifica ii standardizate de interfa are – Standardul IDE ("Integrated Drive Electronics") a realizat transferarea func iilor de control c tre mecanismul discului hard 355 NECESITATEA INTERFE ELOR I/O Principalele diferen e între UCP i periferice. De aceea trebuie s existe dispozitive de conversie a valorilor semnalului. constau în urm toarele : perifericele sunt dispozitive a c ror func ionare se bazeaz pe diferite tehnologii (electromecanice. Pentru transferul de date între periferice i UCP sau memorie trebuie deci s existe mecanisme de sincronizare codurile i formatele datelor în echipamentele periferice pot fi diferite fa de codurile i formatele folosite în UCP i memorie exist o varietate de periferice. electromagnetice. electrice i informa ionale ale unui dispozitiv periferic de intrare/ie ire la cerin ele unui anumit sistem de calcul (adaptarea la o magistral a sistemului) Ce se adapteaz : – Semnale electrice – Secven a de transmisie si recep ie a datelor – Ritmul/viteza/frecven a de transfer – interfa a este un buffer temporar de date Unele circuite de interfa sunt incluse în circuitele specializate de control ale perifericelor (“controlere de interfa ”) – controlerul unit ii de disc. controleaz opera iile fizice efectuate de discul magnetic. pentru o adaptare din punct de semnalului vedere electric cu calculatorul viteza de transfer a datelor este mult mai sc zut la periferice fa de UCP. cu moduri de func ionare diferite i de aceea acestea periferice trebuie controlate adecvat. care impun folosirea circuitelor de interfa . electronice).

Stare Reg. pornind de la o adres de baz O interfa I/O prezint 3 tipuri principale de porturi : Porturi de stare : accesate în modul citire – procesorul cite te starea dispozitivului de intrare/ie ire Porturi de control : Procesorul scrie o comenzi pentru setarea parametrilor de func ionare a perifericului Porturi de date : pentru scrierea/citirea datelor de la periferic 358 . Acesta recunoa te adresa i transfer datele pe magistrala de date la urm torul impuls de tact O interfa de intrare/ie ire ocup are asociate mai multe adrese de port. consecutive. porturile sunt v zute ca celule de memorie într un spa iu de adrese pe 16 bi i accesabile pe octet/ cuvânt (num rul maxim de porturi = 216) Procesorul selecteaz un port punând pe magistral adresa corespunz toare portului. intrare Adaptor de semnale Echipament periferic 357 PORTURI Porturile sunt c i de comunicare între procesor i dispozitivele periferice identificate prin adrese unice Porturile sunt registre cu transfer paralel pe 8/16 bi i (la 8086) Dpdv al procesorului 8086. de comand DEC IOR IOW R. CTRL R.SCHEMA DE PRINCIPIU A UNEI INTERFE E DE INTRARE IE IRE Magistrala de adrese Magistrala de date Magistrala de comenzi Disp. Ie ire Reg.

transfer (citirea sau scrierea unui anumit port dictate de program) – prin interogarea succesiv a porturilor de I/O (polling). AL port : constant în intervalul 0 255 sau registrul DX 360 . AL port : constant în intervalul 0 255 sau registrul DX OUT – scrie date la port OUT port. fie la ini iativa programului rulat de UCP.MODURI DE TRANSFER Func ia principal a unei interfe e este transferul de date Moduri de transfer: – Transfer prin program – transfer ini iat i controlat în totalitate de programul rulat de UCP prin intermediul unor instruc iuni specifice. care ini iaz transferul.dest dest : registrele AX.port dest : registrele AX. Diferite grade de implicare a procesorului principal Alegerea modului de transfer optim : – Viteza de transfer – Complexitatea transferului – Restric ii de timp si de cost 359 TRANSFER PRIN PROGRAM La acest tip de transfer. iar ini ierea transferului este f cut fie de o cerere de transfer de la un periferic. – Transfer prin întreruperi – transferul este controlat de UCP ca r spuns la o cerere de întrerupere extern . toate transferurile se ini iaz i se controleaz prin program prin intermediul unor instruc iuni de intrare/ie ire Transferul de I/O prin program poate fi : – direct. – Transfer prin acces direct la memorie (DMA – Direct Memory Access) – transferul este controlat de un circuit controler DMA (care preia controlul magistralelor sistemului). pentru determinarea cerin elor de transfer specifice (se interogheaz portul de stare) Instruc iuni de intrare/ie ire pentru porturi : IN – cite te date de la port IN dest.

offset buf . fie centralizat. adres port de intrare (date) adrstare EQU 301h . buclare (testare încheiere transfer) ……. sarcin consumatoare de timp (procesorul poate efectua alte opera ii în paralel cu transferul). transfer de date et1:inc dx in al. al .TRANSFERUL PRIN PROGRAM – EXEMPLU buf DB 100 DUP(?) lbuf EQU $ buf . adrport . testare bit de stare jnz et3 . ini ializare pointer memorie mov dx. ini ializare transfer mov si. lbuf . elibereaz procesorul de sarcina test rii periodice a perifericelor. ini ializare contor . masc pentru bitul D0 . de c tre un dispozitiv special numit controller de întreruperi Avantajele sistemului de întreruperi sunt urm toarele : permite sincronizarea procesorului cu evenimente externe. masca . pentru toate întreruperile mascabile. adres registru de stare masca EQU 01h . adres port de intrare in al. testare bit de stare setat et2:dec dx . avans poantor loop et1 . lungimea bufferului adrport EQU 300h . citire port de intrare and al. memorare dat inc si . 361 TRANSFER PRIN ÎNTRERUPERI Întreruperea : eveniment extern procesorului (independent de programul rulat) – semnal electric generat de echipamente ce pot lansa cereri de servicii (cereri de întrerupere) – Deservirea unei întreruperi : prin execu ia unei rutine de întrerupere – Tabela de întreruperi : con ine adresele rutinelor de tratare a întreruperilor – Generarea vectorului de întrerupere se face fie direct de c tre dispozitivul întreruptor (prin circuitul de interfa ). citire port mov [si]. posibilitatea de tratare ierarhizat a cererilor de întrerupere simultane sau succesive prin arbitrarea priorit ilor. 362 . prezint o vitez de r spuns mai mare decât transferul prin program. dx . ini ializare adres port mov cx. dx .

TRANSFER PRIN ACCES DIREC LA MEMORIE (DMA) Transferul prin acces direct la memorie (DMA Direct Memory Access) este executat Access direct între memoria principal i dispozitivul periferic. care DMA controleaz temporar magistralele sistemului De obicei circuitele controler DMA pot gestiona transferuri cu mai multe periferice simultan. pentru fiecare periferic existând (intern controllerului) un canal DMA Un ciclu DMA reprezint transferul unui cuvânt de date din sau în memorie 363 TRANSFER DMA Memoria principal WR RD transfer direct Adrese Date WR RD Bus Request (HOLD) Bus Grant (HLDA) UCP Controler DMA DACK DRQ cerere DMA acceptare DMA Interfa I/O I/O 364 . din cele trei moduri de transfer Transferul prin DMA este util la transferarea blocurilor mari de date între memoria principal i periferice Este un transfer folosit în aplica ii de genul: transfer cu discurile magnetice. f r ca datele s mai treac prin UCP Avantaje : Viteza de transfer prin DMA este cea mai mare. Transferul prin DMA se efectueaz sub comanda unui circuit controler DMA. transfer cu pl ci periferice ce con in convertoare AD sau DA rapide etc.

BR (Bus Request) sau HOLD La sfâr itul ciclului ma in curent UCP cedeaz controlul magistralelor.TRANSFER DMA Ini ierea transferului se face de c tre periferic (prin intermediul interfe ei) care efectueaz o cerere de transfer prin acces DMA spre circuitul controler de DMA (DMAC) Acesta solicit de la UCP controlul magistralelor prin semnalul de cerere de control a magistralelor. preia controlul semnalelor de scriere (WR) i citire (RD) i trimite c tre periferic semnalul de acceptare a transferului prin DMA Când dispozitivul I/O prime te acest semnal de acceptare. UCP 366 . î i trece ie irile c tre acestea în HiZ (stare de înalt impedan ) i informeaz despre aceasta prin semnalul acordare a controlului magistralelor. pune un cuvânt pe magistrala de date (pentru scriere în memoria principal ) sau cite te un cuvânt de pe magistrala de date (pentru citire din memoria principal ) 365 CICLU DE TRANSFER DMA Adrese Date DRQ HOLD HLDA DACK MRD \ IOW \ Adr UCP UCP Adres DMA Date DMA Adr. BG (Bus Grant) sau HLDA (HoLD Acknoledge) Circuitul controler DMAC furnizeaz adresele pe magistrala de adrese.

A4-7 R./Decr.6Mocte i/s Mai multe controlere pot fi conectate în “cascad ” pentru a m ri num rul de canale DMA disponibile Dimensiunea maxim a blocului de date transferat este de 64Ko Poate efectua transfer de tip memorie memorie Suport mai multe moduri de transfer : – Transfer singular – Transfer pe bloc (burst) – Transfer cu autoini ializare – Transfer memorie memorie 368 . Amp adr. Contor de de baz baz Adr Contor curent curent Amp adr. scriere R citire Amp date D0-7 HOLD HLDA Bloc arbitrare cereri DMA R c -d R m ti R cereri R stare R temp R mod 367 CARACTERISTICILE CONTROLERULUI DMA I8237 Poate deservi 4 periferice independente (are 4 canale DMA) Viteza de transfer maxim este de 1. Bloc de c-d Inc.SCHEMA INTERN A CONTROLERULUI DMA i8237 IOR\ IOW\ MRD\ MWT\ CS\ AdrStb AEN RDY CLK EOP DRQ0-3 DACK0-3 Decrem. A0-3 Adr.

DTE RS232 MODEM Semnale analogice modulate DCE Retea telefonica DCE RS232 Calculator 370 .TIPURI DE INTERFE E I CIRCUITE DE CONTROL SPECIALIZATE Controler pentru interfa a paralel – PIO – parallel I/O: I8255 Controler pentru interfa a serial – SIO – serial I/O. sau USART – universal serial asynchronous receiver and transmitter: I8251 Controler pentru contorizare/temporizare – “ceasul de timp real” – RTC – Real Time Counter/timer Controller: I8253 Controler pentru interfa a floppy: I8272 Controler DMA: I8237 Controler de întreruperi: I8259A 369 INTERFA A SERIAL ASINCRON USART (Universal Serial Asynchronous Receiver and Transmitter) este folsit pentru transmisia datelor la distan pe un num r restrâns de conexiuni electrice (2 3) Transmisia se face bit cu bit (vitz de trasnfer mai mic decât la PIO) Erori mai pu ine (nu apar probleme de sincronizare) distan e de transfer mai mari Emi torul i receptorul lucreaz la aceea i frecven – rata de serializare a datelor (baud) Controler pentru interfa a serial Intel 8251 Diverse standarde de transmisi serial : RS232.. RS485. etc..

6.2 bi i Stop 371 INTERFA A SERIAL INTEL 8251 Porturi : Registrul de date TX/RX Low Baud Generator LBG High Baud Generator HBG Registrul de stare RSL Registrul de control RCL RCL c7 c6 c5 c4 c3 c2 c1 c0 : DLAB (controleaz BAUD) : for eaz 0L pe transmisie : activeaz verificare paritate : num rul bi ilor de stop : lungime cuvânt de date : adrese COM1/COM2 = 3F8h/2F8h : 3F8h/2F8h : 3F9h/2F9h : 3FBh/2FBh : 3FDh/2FDh RSL s7 s6 s5 s4 s3 s2 s1 s0 : 0L : port liber pentru transmisie : portul e gata s accepte caracterul de pe linia de date : eroare încadrare : eroare de paritate : eroare de sincronizare : caracter recep ionat dac 1L 372 .STANDARDUL RS232 Codificarea informa iilor: niveluri de tensiune – MAX232 (conversie 232 TTL/CMOS) – “0” – (+3. Data Terminal Ready RTS CTS – Request to Send – Clear To Send Distan a maxim de transmisie : 100 m semnal serial Pauz Start 0 5..8 bi i de date Paritate Pauz 1..+15V) de obicei 12V – “1” – ( 3.600... 19200 Bauds Detec ia erorilor: prin bit de paritate Controlul hardware al fluxului de date se face prin perechi de semnale de control: DSR DTR – Dataset ready.7. stop si rat prestabilit : 300. 15V) de obicei 12V Mediu de comunica ie: fire electrice (si telefonice) Sincronizarea: prin bit de start.1200..

al . procedura de trasmisie caracter TX proc far cor: mov dx.1 jz cir mov dx.80h out dx.20h jz cor mov dx. procedura de receptie caracter RX proc far cir: mov dx.COM2_L mov al.COM2_C mov al.COM2_S in al.al . fara paritate.PROGRAMAREA PORTULUI SERIAL COM1 .dx and al.0Ch out dx.al . se seteaza DLAB mov dx. Baud Rate = 9600 mov dx.3 . initializari adrese port serial COM2_D EQU 03F8h .al ret TX endp 373 INTERFA A PARALEL • Transferul se realizeaz prin mai multe linii: – Linii de date (ex: 8) – pentru datele propriu zise – Linii de control – pentru sincronizarea si controlul fluxului de date • Caracteristici: – Viteza mai mare – Distante mici datorit problemelor de sincronizare – Transfer (de obicei) unidirec ional • Tipuri de transfer paralel: – a) f r semnale de control – b) protocol asincron f r confirmare – c) protocol asincron cu confirmare (hand shaking) hand shaking 374 . adresa HBG . adresa registru date RX/TX COM2_C EQU 03FBh .COM2_S in al.al mov dx.COM2_D in al. initializare comunicatie mov dx.ah out dx.COM2_C mov al.dx and al. adresa LBG COM2_H EQU 03F9h . 8 biti date.COM2_D mov al.COM2_H mov al.0 out dx. 1 bit de stop out dx. registrul de stare COM2_L EQU 03F8h . registrul de control COM2_S EQU 03FDh .dx ret RX endp .

viteza trebuie sa fie suficient de mic pentru a acoperi toate intârzierile posibile Date RDY Dat valid Date RQ 375 Dat valid HAND SHAKING c) Protocol asincron cu confirmare (hand shaking) 2 semnale de control: unul emis de transmi tor i unul de r spuns de la receptor transmisie cu “feed back” (reac ie) se poate adapta mult mai u or la viteza de lucru a ambelor unita i comunicante.TIPURI DE TRANSFER PARALEL a) F r semnale de control se folosesc numai semnale de date se poate citi starea unor semnale digitale sau se pot comanda semnale digitale nu se pot transfera secven e de date – nu exist semnale de control exemple: testarea st rii unor senzori. în cazul necorel rii semnalelor de control Data RDY ACK (a) Dat valid Data RDY ACK Dat valid Corect Data 1 Data 2 (b) Eroare Data RDY ACK (c) Eroare 376 . comanda unor elemente de ac ionare b) Protocol asincron f r confirmare se folose te un semnal de control emis fie de transmi tor fie de receptor se pot transmite secven e de date viteza de transfer este controlat de unitatea care genereaz semnalul de control nu exist semnal de reac ie (confirmare) din partea unita ii partenere. rezult o vitez de transfer mai mare pot s apar situa ii de eroare.

7 PC4 . B i C) Moduri de lucru : intrare date / ie ire date / transfer bidirec ional Registrul C se poate diviza în 2 pentru a deservi semnale de control registrelor A i B Port Control grup A Amp D0 -7 date ½ C ½ RD \ WR \ A0 A1 CS \ Bloc de control Control grup B Port B C A PA0 .7 378 .7 PC0 .HAND SHAKING c) Protocol asincron cu confirmare (hand shaking). cu intercondi ionare între semnalele de control rezolv problema corectitudinii transferului activarea si dezactivarea celor 2 semnale de control se face intercondi ionat Data RDY ACK 377 CONTROLLERUL i8255 – INTERFA A PARALEL 3 porturi de date (A.3 PB0 .

sensul transferului f cându se prin semnale de control Out0 Clk0 Gate0 Out1 Clk1 Gate1 Out2 Clk2 Gate2 D0-7 Amp date Num r tor 0 RD\ WR\ CS\ A0.CEASURI PROGRAMABILE (RTC – REAL TIME CLOCK) Utilizate pentru: – contorizarea unor evenimente externe – generarea unor semnale de o anumit frecven prin divizarea unui semnal de ceas cu un num r programabil – întîrzierea unor semnale (monostabil) – generarea unor întreruperi periodice sau dup un anumit timp de la apari ia unui eveniment – declan area periodic a unor cicluri de reînprosp tare a memoriei – generarea unor semnale sonore de avarie la difuzorul sistemului Controler specializat: Intel 8253 379 CONTROLERUL CEASULUI PROGRAMABIL INTEL 8253 Intel 8253 – circuit VLSI cu 3 num r toare programabile pe 16 bi i divizare cu maxim 65535 i8253 ocup un num r de 4 adrese I/O deci con ien dpdv func ional 4 porturi de intrare/ie ire. control Num r tor 2 380 .1 Bloc de cd Num r tor 1 Reg.

cu adresa 0061h.CONTROLERUL CEASULUI PROGRAMABIL INTEL 8253 NUM2 este disponibil pentru a fi progranmat de c tre utilizator – poate alimenta difuzorul sistemului cu semnale audio în gama de frecven : f = fin/2 fin/216 [ 595kHz fin = fPCLK/2 = 1.15Hz] Activarea sau blocarea accesului la NUM2 se face prin programarea portului paralel programabil 8255. blocheaz ie irea num r torului 2 prin intermediul unei por i I Bitul 0 – setat. inhib num rarea (intrarea Gate2) 381 CONTROLERUL CEASULUI PROGRAMABIL INTEL 8253 8086 (UCP) X1 X2 CLK INT 8259A INTR IRQ0 8284 PCLK fPCLK 8253 CLK0 Out0 Out1 Out2 2 8255 Port 061h fIN CLK1 CLK2 Gate2 AJF FTJ Bit1 Bit0 382 .19 MHz 18. Acesta este un registru paralel ai carui bi i 1 i 0 comand respectiv : Bitul 1 – setat.

Scrierea noii rutine de tratare se scrie o procedur prin care se programeaz ceasul programabil programarea num r torului 2 al ceasului programabil 8253 pentru pornire/ oprire sunet programarea tonului sunetului i generare semnal sonor 2.APLICA IE CEAS PROGRAMABIL Deturnarea întreruperii de tastatur (IRQ1 – 09h) pentru generarea unui sunet la ap sarea unei taste 1. Instalarea noii rutine de tratare salvarea RTI originale a sistemului modificarea intr rii TVI corespunz toare subrutinei sistem de tratare a întreruperii cu adresa noii subrutine definite de utilizator alocarea spa iului rezident în memorie necesar pentru rutina de tratare 383 PROGRAMAREA CEASULUI PROGRAMABIL 8253 Ini ializare ceas programabil 8253 RTC (Real Time Clock) Porturi folosite – registre pe 8 bi i : Registrul de control : adresa 043h Registrul de date : adresa 042h num rare binar RC 043h : C7 C6 C5 C4 C3 C2 C1 C0 selec ie num r tor : 10 – NUM 2 citire/scriere octet low apoi high setare mod de num rare ex: modul 3 de num rare (*11) – generator de impulsuri dreptunghiulare 384 .

apel vechea subrutin a înteruperii de tastatur . 0952 . alocare spa iu rezident în memorie mov cl. în memorie a rutinei întreruperii end main 386 . bucl vid ) Programarea Num r torului 2 pentru generarea unui sunet cu frecven a de 500Hz mov AX. 61h .4 . AL . 3 . salveare registre în stiv . defini ie RTI pentru întreruperea de tastatur .193. porne te sunet pentru oprirea sunetului se reseteaz bi ii 0 i 1 ai portului 61h pt ca sunetul s fie perceptibil se insereaz o pauz (ex. se definesc în segmentul de cod int9 PROC far RTI pushf . determin spa iul de memorie necesar pentru RTI main: . instalare noua rutin de tratare a înteruperii de tastatur mov dx. cite te stare port paralel programabil 8255 or AL. AL mov AL. terminarea programului cu p strarea rezident int 21h . salvare adresa vechii rutine .3100h . AL .offset sfarsit+16+100h . ton sunet (500 Hz) out 42h. seteaz ultimii 2 bi i (pornire sunet) out 61h.cl mov ax. necesar subrutinei de tratare shr dx.code int9_offset DW 0 int9_s eg DW 0 . AH out 42h. refacere registre din stiv int9 ENDP sfarsit EQU this byte . înc rcare port de date RTC cu cei 2 octe i ai lui AX succesiv Ndiv fin fout 1.180 500 2386 952h 385 STRUCTURA PROGRAMULUI .PROGRAMAREA CEASULUI PROGRAMABIL 8253 Instruc iuni de pornire/oprire sunet in AL. salveare flaguri în stiv call dword ptr cs:int9_o .

Sintax Proceduri i macroinstruc iuni. Elaborarea de programe modulare Accesul la resursele sistemului.PROGRAMAREA MICROPROCESOARELOR PROGRAMAREA MICROPROCECSOARELOR Dezvoltarea unei aplica ii în limbaj de asamblare Tipuri de instruc iuni. Func ii sistem Tratarea i instalarea întreruperilor Programarea porturilor de intrare ie ire 388 .

obj myFile.asm myFile.EXE Ie ire myFile.asm myFile. vre i sa scrie i programe eficiente (din punct de vedere al timpului de execu ie i al spa iului de memorie alocat) ofer un înalt grad de libertate în progarmare ofer accest direct la resursele sistemului ajut la scrierea i optimitarea programelor în limbajele de nivel înalt vre i sa intelege i modul în care func ioneaz un calculator 389 ETAPELE DE ELABORARE A UNEI APLICA II ÎN LIMBAJUL DE ASAMBLARE Etapele cre rii unui program executabil în limbajul de asamblare Etapa Editarea Asamblarea Link editarea Depanarea Intrare Periferice (tastatur ) myFile.map myFie.DE CE "PROGRAMARE IN ASAMBLARE" ? este materie de examen ( i chiar de re examinare).exe 390 .EXE TD.exe myFie.exe Program Editor de text TASM.obj myFile.EXE (Borland) MASM32 (Microsoft) TLINK...

a constantelor din codul surs EDITAREA DE LEG TURI (LINK EDITARE) ad ugarea de module obiect din alte biblioteci ale SO sau altor programe completarea i translatarea adreselor fa crearea fi ierului executabil LANSAREA ÎN EXECU IE SO încarc programul în memoria principal i pred controlul se execut instruc iunile din program începând cu cea de la adresa cea mai mic 392 de începutul programului .asm .obj lkFile2.map Start Stop Length Name 00000H 00007H 00008H _TEXT 00010H 00010H 00000H _DATA 00010H 0010FH 00100H STACK Program entry point at 0000:0000 Class CODE DATA STACK 391 ETAPELE DE CREARE A PROGRAMELOR EXECUTABILE ASAMBLAREA (COMPLITAREA) detectarea erorilor de sintax rezervarea spa iului de memorie necesar tipurilor de date utilizate interpretarea instruc iunilor i macroinstruc iunilor scrise în limbaj de asamblare i generarea instruc iunilor corespunz toare în cod ma in interpretarea expersiilor aritmetice.code main: mov ah.exe Debugger (dezasamblare) SO (execu ie) myFile.obj Interpretator (Linker) myFile.stack 100h .model small .obj Editor de text myFile.4Ch INT 21h end main myFile.asm Asamblor myFile.01h int 21h MOV AH.CREAREA UNUI EXECUTABIL ÎN LIMBAJUL DE ASAMBLARE Etapele cre rii unui program executabil în limbajul de asamblare lkFile1.

\ml /c myFile. EDI. SI.\tasm myFile{. ECX. BL. ESI. BP • (32 bi i) EAX. Flags.asm C:\Cale\... GS Memoria principal (integrat în RAM – Random Access Memory) 394 . microprocesorul folose te : Registre stocheaz datele (variabile.. DI. IP. CH.\link16 myFile{. MEMORIE Intern.asm Editarea de leg turi cu SO (folose te fi ierul obiect) Dezasamblarea programului executabil Comenzi interfa grafic Borland Turbo Assembler (TASM) C:\Cale\. DX. BX. FS.. DH. EDX.asm} C:\Cale\.BAT SET PATH = C:\TASM\BIN SET PATH = C:\MASM32\BIN Ac iune Asamblarea fi ierului surs myFile..\td myFile{... DL • (16 bi i) AX.\tlink myFile{. AL. SS. BH.obj} C:\Cale\. CL.exe} Posibil prin modificarea fi ierelor . un calculator prelucreaz mai multe fluxuri de informa ie : datele numerice i instruc iunile programului i con ine unul sau mai multe microprocecsoare Un microprocesor = unitate central de prelucrare (UCP) integrat într un singur chip Pentru a manipula datele.. SP.. ES. CX. memoriei i a lan ului Asamblor integrat de execu ie a instruc iunilor 393 REGISTRE. DS. adrese) cu care microprocesorul lucreaz la un moment dat – registre generale pentru opera ii aritmetice i logice i calculul adreselor efective: • (8 bi i) AH. ESP.. EBP registre speciale folosite pentru adresarea datelor din memorie: • CS..obj} C:\Cale\.exe} Microsoft Macro Assembler (MASM32) C:\Cale\.batch pentru asamblarea instruc iunilor pe 16 bi i Anumite func ii sistem nu sunt implementate EMU8086 (Emulator specific Interfa garfic cu vizualizarea microprocesorului 8086) – registrelor. EBX.\td myFile{.UTILITARE PENTRU CREAREA UNUI EXECUTABIL Setarea c ii programului asamblor în fi ierul batch AUTOEXEC..

procesorul are nevoie de registre. MEMORIE Datele stocate în MEMORIA PRINCIPAL sunt grupat în segmente specifice func iei pe care o îndeplinesc (informa iei pe care o con in) : Instruc iuni segmentul de cod direct adresabile prin registrul CS i IP Variabile segmentul de date direct adresabile prin registrul implicit DS sau explicit ES constantele sunt date imediate.REGISTRE. acestea sunt evaluate la asamblare i sunt imediate con inute în codul instruc iunii. NU în memoria de date Date temporare segmentul de stiv accesate prin instruc iuni de transfer cu stiva 395 ADRESAREA DATELOR ÎN CADRUL UNUI SEGMENT Pentru adresarea memoriei. dimensiunea registrului d dimensiunea de spa iului de memorie adresabil Selectorul de segment este o valoare con inut într un registru de segment Registrul segment poate fi implicit sau desemnat în mod explict în instruc iune Instruc iunile i datele sunt memorate la loca ii succesive începând de la adrese mici 396 .

“WRITE”. respectiv proceseaz datele cu excep ia calculelor complexe efectuate de coprocesorul matematic i8087 EU calculeaz adresele efective (pe 16 bi i) ale operanzilor conform modului de adresare specificat în codul opera iei din instruc iune 398 . Unitatea de interfa cu magistrala (BIU – Bus Interface Unit) BIU BIU execut toate ciclurile de magistral (“READ”. “INTA”) fie la cererea EU sau pentru umplerea unei cozi de instruc iuni (QFIFO) BIU genereaz adresa fizic pe 20 de bi i a loca iei de memorie unde se g se te data sau instruc iunea ce se va accesa Unitatea de execu ie (EU – Execution Unit) EU Pe baza codurilor primite de la BIU (citite din coada de instruc iuni).ARHITECTURA PROCESORULUI i8086 397 μP INTEL 8086 – UNIT I FUNC IONALE pe scurt. EU decodific i execut instruc iunile...

MEMORIE Registre generale UCP Memoria principal Segment de stiv Extrasegment Segment de date Registre segment Segment de cod 399 REGISTRELE UNIT Registrele de uz general (Main Registers) 15 AH BH CH DH 8 7 AL BL CL DL 0 II DE EXECU IE AX (accumulator) BX (base) CX (counter) DX (data) RG sunt loca ii de memorie. reg. Pentium: bus intern pe 64bi i. pe 32bi i Sunt registre pe 16 bi i adresabile direct sau pe octet Registre index i registre pointer pe 16 bi i : SI (Source Index). interne UCP care stocheaz datele pe care EU le proceseaz la un moment dat i trebuie s fie în concordan cu magistrala intern a procesorului (MDATE = k*RUCP).REGISTRE. DI (Destination Index). Ex. SP (Stack Pointer) Registrul indicatorilor de stare i de control al procesului (de condi ii) FLAGS 400 . BP (Base Pointer).

date. IP este salvat în vârful stivei (împreun cu CS) i apoi înc rcat cu adresa relativ în segmentul de cod a instruc iunii int 402 IP Instruction Pointer . IF=0 – invalidare întreruperi) indic direc ia deplas rii adresei la opera iile cu iruri (autodecrementarea registrelor SI.REGISTRELE UNIT FLAGS Register – Registrul de stare 15 14 13 12 11 O 10 D 9 I 8 T 7 S 6 Z 5 4 A 3 - II DE EXECU IE utiliz ri 2 P 1 - 0 C Bit Flag CF PF AF ZF SF TF IF DF Carry Flag Parity Flag Auxiliary Flag Zero Flag Sign Flag Trip Flag Interrupt Flag Direction Flag OF Overflow Flag dep ire aritmetic (transport) paritate (rezultatul opera iei are un num r par de bi i seta i) transport între bitul 3 i 4 rezultat nul la ultima opera ie aritmetic sau logic bit de semn (ia valoarea MSB la operaa iile cu numere cu semn) TF=1 determin UCP s lucreze în modul pas cu pas – se genereaz câte o întrerupere intern dup fiecare instruc iune masc pentru înteruperi externe mascabile (IF=1 – validare întreuperi. stiv i extrasegment Doar 4 segmente active la un moment dat Registrul contor de program Con ine adresa relativ (offset ul) în segmentul de cod curent (relativ la CS) a instruc iunii curente BIU actualizeaz valoarea înscris în IP dup fiecare opera ie de fetch În cazul unei instruc iuni de salt inter segment. DI dac DF = 1 respectiv autoincrementarea dac DF = 0) indicator de dep ire aritmetic : s a pierdut MSB al rezultatului datorit faptului c valoarea acestuia a dep it capacitatea de reprezentare a loca iei destina ie 401 REGISTRELE UNIT Registre segment CS DS SS ES Code Segment Data Segment Stack Segment Extra Segment II DE INTERFA CU MAGISTRALA Registre pe 16 bi i spa iu de adresare de 64kB Ofer suport pentru implementarea unui spa iu de memorie de 1MB Con in adresele de baz ale segmentelor logice de cod.

BX Salt în program : LABLE2 : JMP LABLE1 . 1. dublu cuvant (exceptii: opera ii de inmul ire si imp r ire) O instruc iune poate con ine cel mult un operand de tip loca ie de memorie formatul instructiunilor x86 permite exprimarea adresei unei singure loca ii de memorie pentru o operatie aritmetic sau logic între dou variabile (loca ii de memorie) unul dintre operanzi trebuie sa se transfere temporar într un registru intern aceast restric ie favorizeaz opera iile pe registre – pt. adresa urm toarei instruc iuni executate Instruc iunile executate de 8086 accept maxim doi operanzi (0. copiaz con inutul lui BX în AX . sau 2) Operanzii se despart prin virgul Mnemonica este un cuvânt rezervat ce simbolizez o instruc iune 403 SINTAXA INSTRUC IUNILOR OPERANZI Operand – câmp ce indic un termen al opera iei (indic locul i modul de reg sire al operandului – modul de adresare) Operanzii unei instruc iuni trebuie sa fie de aceea i lungime: octet. de eticheta LABLE1 – aceasta indic . cre terea eficien ei de execu ie 404 . trece la execu ia instruc iunii marcacte . COMENTARIU} Identificator de adres (maxim 31 de caractere) INSTRUC IUNE Ignorat de asamblor (nu genereaz cod ma in ) LABLE1 : MOV AX. {OPERAND2}} {.SINTAXA INSTRUC IUNILOR {ETICHET :} MNEMONIC {OPERAND1. cuvânt.

.. se poate exprima in zecimal. BH... SI..... AL. 'word'. / expresia aritmetic nu se execut .SINTAXA INSTRUC IUNILOR OPERANZI Registre : AX. hexazecimal (indicativul H) sau binar (indicativul B) lungimea constantei este în acord cu lungimea celuilalt operand Expresii aritmetice : <nume_VAR> <OPERATOR_ARITM> <num r> ca operatori aritmetici se accept operatorii +. ES: [100h] • adresa de offset adresa relativ în cadrul segmentului 406 . .. ES Variabile : <nume_VAR> Constante : <nume_CONST> Adrese : [<registru>]. AH.. [<adr_explicit >]. ea este evaluat la momentul asambl rii iar codul ma in va con ine deja valoarea rezultatului 405 SINTAXA INSTRUC IUNILOR OPERANZI • Loca ii de memorie (variabile) – expresie care exprim adresa unei loca ii de memorie de o anumit lungime (orice variabil este interpretat de asamblor ca o loca ie de memorie de unde se va extrage o valoare numeric ) – lungimea variabilei: • în acord cu al doilea operand (dac exist ) • se deduce din declara ia numelui de variabil • se indic în mod explicit ('byte'. SS.. BX. *. DI. <expresie> un num r sau o expresie aritmetico logic care se poate evalua in momentul compilarii i este con inut în codul instruc iunii. BL.. [<adr_port_I/O>] Date imediate : <num r>. DS. 'dword') – adresa variabilei: • adresa de segment: – specificat în mod implicit – con inutul registrului DS – exprimat în mod explicit: <reg_segment>:<variabila> ex: CS: Var1. CS.

[100h] – [ <reg_baza> + <reg_index> + <deplasament> ] ex: MOV AX.SINTAXA INSTRUC IUNILOR OPERANZI • Adresa de offset – adresa poate sa fie pe 16 bi i (modul real) sau pe 32 bi i (modul protejat) – exprimabil în mai multe moduri: • adres fizic : valoare concret de adresa – [ <adresa_offset> ]. VAR+5 – VAR[BX].' i se încheie la sfâr itul liniei separarea câmpurilor se face cu un num r arbitrar de caractere <sp> sau <tab> o instruc iune x86 poate con ine maxim 2 câmpuri de operanzi: – operand1 – indic destina ia sau rezultatul opera iei aritmetico logice sau primul termen al unei opera ii unare sau binare – operand2 – indic sursa sau al doilea termen al unei opera ii binare 408 . ex: MOV AX. VAR[BX+SI] <reg_baz > = BX|BP <reg_index> = SI|DI 407 REGULI SINTACTICE o linie de program poate con ine maxim o instruc iune (mnemonic + operanzi) sau o directiv asamblorul nu face distinc ie între literele mari i mici o linie poate con ine: – nici o entitate de instruc iune (câmp) – linie goal – numai etichet – numai comentariu – combina ii de etichet . instruc iune. TEXT. [BX+SI+100h] • adres simbolic : nume simbolic dat unei variabile – VAR1. directiv si comentariu un comentariu începe cu '.

BX. set inst 1 ELSE ... func ie de o condi ie care se evalueaz la asamblare (dac expresia este adev rat . se asambleaz setul 1 de instruc iuni i doar acestea se vor executa) 410 . set inst 2 ENDIF define te date i specific dimensiunea memoriei alocate atribuie un nume simbolic unei constante sau ir declara ii repetitive de date (ini ializate sau nu) instruc iune de asamblare condi ionat : permite ignorarea unei por iuni din codul surs .) Directivele nu genereaz cod executabil (nu au corespondent în codul ma in rezultat) DB. prea mul i operanzi 409 DIRECTIVE SAU PSEUDOINSTRUC IUNI Sunt instruc iuni pentru programul asamblor executate la asamblare pentru execu ia unor func ii specifice (alocare memorie. ini ializare adrese. DX – al doilea termen ADD AX.AX ) • instruc iune f r operanzi MOVSB • instruc iune cu operanzi implici i MUL CL • instruc iune cu primul operand implicit (AX=AL*CL) MOV AX. DW.DX • CX – primul termen al sumei si destina ia rezultatului. BX sursa transferului INC SI • SI – termenul incrementat si destina ia rezultatului ADD CX.CX • instruc iune incorect . BX • AX – destina ia .REGULI SINTACTICE NOP ( XCHG AX.. DD MAX EQU 100 TAB DB 10 DUP (?) IF expresie .

CODE END activeaz doar setul de instruc iuni pe 16 bi i specific lui 8086 (programul va fi asamblat în acest mod) selecteaz modelul de memorie define te dimensiunea segmentului de stiv (în octe i) deschide un segment de date i închide segmentul deschis anterior i îi asociaz o adres de început disponibil prin expresia global @data deschide un segment de cod i închide segmentul deschis marcheaz sfâr itul logic al unui program i este obligatorie în toate programele scrise în limbaj de asamblare.DIRECTIVE SAU PSEUDOINSTRUC IUNI .8086 . punctul (adresa) de început al programului este evaluat de asamblor prin apelul acestei directive urmat de o etichet ce marcheaz începutul codului executabil. cod. Salturile i apelurile de procedur sunt implicit de tip NEAR : atât datele cât i codul generat pot dep i 64kB (segmente multiple de date i cod) : la fel ca modul compact dar structurile compacte de date (gen tablou) pot dep i 64kB SMALL MEDIUM COMPACT LARGE HUGE 412 . Salturile i apelurile de procedur sunt implicit de tip FAR : un segment de cod + un segment de date + un segment de stiv .DATA .MODEL SMALL .COM : datele i stiva în acela i segment + un segment de cod (max 64kB). stiv ) sunt generate în acela i spa iu de maxim 64kB iar toate salturile i apelurile de procedur sunt de tip NEAR. Salturile i apelurile de procedur sunt implicit de tip NEAR : un segment de date + stiv i mai multe segmente de cod. toate instruc iunile ce urmeaz directivei sunt ignorate la asamblare 411 MODELUL DE MEMORIE TINY : toate segmentele (date. Programe .STACK 100h .

linie nou . byte PTR [BX] 413 DECLARA II I DEFINI II DE DATE Sintaxa : NUME_VAR DIRECTIVA VALOARE1 {. aloc un spa iu de memorie pentru 10 cuvinte Caractere i iruri de caractere car1 DB ‘X’ sir1 DB “Tasta i un caracter”. define byte – aloc memorie pentru un octet i ini ializeaz data de . este obligatoriu atunci când se folosesc referin e anonime la memorie (din care nu se poate deduce tipul operandului) add AL. valori ini ializate în hexazecimal vect2 DW 10 DUP (?) . 1060h . 1040h. define word Vectori vect1 DW 1000h. 0Ah. ‘$’ . 0Dh. ini ializare în binar Variabile neini ializate rezultat1 DW ? . VALOARE2 . caracterul ‘$’ terminator de ir 414 . 1020h. 1030h \ . caracterul ‘\’ este separator de linie . OFFSET var LENGTH : întoarce num rul de elemente definite într o variabil i NU dimensiuena ei în octe i (se aplic tablourilor de date) SIZE : întoarce dimensiunea în octe i a unei variabile THIS : creeaz un operand care are asociate o adres de segment i un offset identice cu contorul curent de loca ii alfa EQU THIS word PTR : operatorul pointer are ca efect schimbarea tipului variabilei sau etichetei c reia i se aplic .…} Variabile contor1 DB 50 .OPERATORI OFFSET : furnizeaz offsetul (adresa efectiv ) asociat unei variabile sau etichete. la loca ia respectiv la valoarea 50 (în zecimal) contor2 DB 1011b . în mod similar. 1050h. operatorul SEG funizeaz adresa de segment asociat mov Bx.

începând cu offsetul 0000h.’Ion’. 9 mov stud.> Principalul avantaj accesul la membri într o form asem n toare LNÎ : mov AX. octet cu octet.data var1 var2 var3 var4 var5 DB DB DW DB DB 25 10011101b 1A53h ‘12345’ ‘a’ Memorie – segmentul de date adres DS:0000 DS:0001 DS:0002 DS:0004 DS:0009 25 AE 53 1A 31 32 33 34 35 61 con inut (HEX) 416 .note[0]. AX Ex: ELEV STRUCT nume db 20 dup (?) pren db 20 dup (?) note db 10 dup (?) med db ? COMPLEX ENDS 415 SEGMENTUL DE DATE În segmentul de date. . sunt în iruite datele.data se execut de c tre asamblor pentru atribuirea adresei de început a segmentului de date Program .DEFINIREA STRUCTURILOR DE DATE Nume_Structura STUCT nume_membru <defini ie_date> Nume_Structura ENDS Structurile reprezint colec ii de date plasate succesiv printr un nume sintactic unic O structur este interpretat ca un tip nou de date ce intervine în defini ii concrete : stud ELEV <‘Ionescu’. la adrese succesive Variabilele multi octet se stocheaz cu octetul “LOW” la adresa inferioar Directiva .

. pentru proceduri. în segmentul curent. ENDP . instruc iuni END start . specific adresa de început a codului prin referin a la etichet Registrul IP este ini ializat de regul cu 0 (adresa efectiv a primei instruc iuni) sau o valoare ini ial nenul prin folosirea directivei ORG (Origin) Directiva ORG ini ializeaz contorul de loca ii ($) care controleaz offsetul. chiar înainte de execu ia lui. . asambleaz la offsetul 100h (dup 256 de octe i) 418 .code se execut de c tre asamblor pentru deschiderea segmentului cod ( i închiderea celui de date. directiva END indic asamblorului care va fi adresa ini ial ce se va înc rca în CS Directiva END e urmat de o etichet care marcheaz punctul de unde se d controlul programului dup înc rcare start : .code numeProg : .SEGMENTUL DE COD În segmentul de cod se definesc instruc iunile programului Segmentul de cod poate con ine defini ii de date Directiva . presupunând c acesta a fost deschis înainte) Adresa ini ial a instruc iunilor programului executabil e determinat de asamblor prin directiva END ce face referin la o etichet de început de program Orice program trebuie sa aib un nume unic de identificare Un program se incheie obligatoriu cu directiva END directiva END se folos te o singur dat în program.. instruc iunile programului END numeProg 417 INI IALIZAREA REGISTRELOR Ini ializarea registrelor CS i IP Registrele CS i IP sunt ini ializate automat de c tre sistemul de operare DOS la înc rcarea programului în memorie. de unde se asambleaz instruc iunile (sau datele) ORG 100h .

data) i dat de expresia @DATA @data fiind o adres (dat imediat ). @DATA MOV DS.stack <dim> poate specifica de asemenea i dimensiunea stivei în octe i Registrul SP este ini ializat cu valoarea dat de dimensiunea total a stivei . instruc iunea MOV nu permite înc rcacrea ei direct în registrul DS : MOV AX.INI IALIZAREA REGISTRELOR Ini ializarea registrelor SS i SP Registrul SS este ini ializat automat de c tre sistemul de operare DOS la înc rcarea programului în memorie cu adresa definit de ultima directiv de deschidere a segmentului de stiv Directiva .STACK 100h . define te o stiv de 256 octe i Registrul SS poate fi redefinit prin program la o alt valoare 419 INI IALIZAREA REGISTRELOR Ini ializarea registrelor DS i ES Registrele ES i DS trebuie ini ializate explicit de programator înainte de folosirea vreunui operand Asamblorul calculeaz dimensiunea segmentului de date pe baza modelului de memorie i a datelor definite în program Loca ia segmentului de date în memorie (adresa ini ial ) este determinat tot de asamblor (prin directiva . AX 420 .

shl. sti. dec.BX 422 . Sursa MOV AX. mul. push. Sursa . xlat — Instruc iuni aritmetice : add.BX Dest. les . call.7 MOV CS. idiv — Instruc iuni logice. ret. de rota ie.CLASIFICAREA INSTRUC IUNILOR DUP OPERA IA EFECTUAT — Instruc iuni de transfer : mov. inc sub. nop 421 INSTRUC IUNI DE TRANSFER GENERALE MOV Dest. cli. lea.BX MOV [BX]. xor. not. div. (Sursa) (Dest) Unul din operanzi (destina ia sau sursa) este obligatoriu registru de uz general Operanzii nu pot avea dimensiuni diferite Registrul CS nu poate ap rea ca destina ie iar registrul IP nu poate fi folosit Nu sunt permise transferurile : Memorie – Memorie Memorie – Date imediate Memorie – Registru segment de date DA NU XCHG MOV AX. shr. out movs. salturi condi ionate — Instruc iuni de control al procesorului : clc. cwd. imul.AX Acelea i restric ii Ex : XCHG [1234h]. lods — Instruc iuni pe siruri : — Instruc iuni de control al fluxului de program : jmp. popf — Instruc iuni de conversie : cbw. pop.[BX] MOV AL. pushf. neg. rcr — Instruc iuni de Intrare/Ie ire (I/O) : in. stc. deplasare (shift) i pe bit : and. cmp. or.[SI] . stos. (Sursa) (Dest) MOV byte ptr [BX+10]. wait. rcl.

AF. AE Reg16.S inc D sub D. SF.var LDS / LES Load Data / Extra Segment Încarc registru de uz general sau registru segment de date sau extrasegment LES DI.3. AE (Reg16) Reg16) Load Effective Address – încarc în registrul destina ie adresa efectiv a variabilei surs (poate fi i o etichet ) LEA se folose te pentru înc rcarea reistrelor de baz segment cu adresa efectiv a unor operanzi din memoire. ZF.S sbb D.1 MOV DX.OFFSET var LEA DX.S cmp Reg16. (S) nemodificat ZF Toate = 1 dac (Reg16) = (S) CF = Flagurile 1 dac (Reg16) < (S) 424 . pentru adres ri ulterioare Instruc iunile urm toare sunt echivalente îns MOV este mai eficient (necesit un num r de cicluri magistral mai mic pentru execu ie) Ex : var DB 7.5. PF.S adc D.var . ES:[DI] va con ine adresa variabilei var 423 INSTRUC IUNI ARITMETICE Instruc iunile aritmetice au rezultatul depus într unul din operanzi (primul) care este obligatoriu un registru Modific valorile bistabililor de condi ie : CF. .S (S) + (D) (D) Carry (CF) (S) + (D) + (CF) Carry (CF) (D) + 1 (D) – (S) Borrow (D) (D) (CF) (D) (D) Toate Flagurile Toate Flagurile Toate mai pu in CF Toate Flagurile Toate Flagurile (D) – (S) – (CF) (Reg16). OF ADD ADC INC SUB SBB CMP Adunare Add with carry Incrementare Scadere Subtract with borrow Comparare add D.INSTRUC IUNI DE TRANSFER DE ADRESE LEA Reg16.

alfa MOV AH.0 MUL beta Observa ii ADD [1234h].1000 MOV BL.code MOV AL.25h ADC AL.data alfa DB 10h beta DW 200h .[00F5h] – este incorect MUL 05h – este incorect (variantele noi de microprocesoare accept ca operand i date imediate) MOV AX. doar ca valoarea nu se poate reprezenta pe octet Apare dep ire (overflow) i se genereaz o întrerupere de nivel 0.INSTRUC IUNI ARITMETICE Opera iile de înmul ire i împ r ire (cu sau f r semn) au un singur operand (registru sau loca ie de memorie) iar rezultatul este memorat în registre implicite Înmul irea afecteaz doar flagurile CF i OF (sunt setate dac extensia acumulatorului este nenul ) Opera ile de împ r ire (cu sau f r semn) nu afecteaz flagurile MUL Op IMUL Op Byte * Byte Word * Word DIV Op IDIV Op Word / Byte Word / Word Deînmul it (implicit) AL AX Deîmp r it (implicit) AX DX : AX Înmul itor (operand) Registru sau adres Registru sau adres Divizor (operand) (AL) (AH) Rezultat (AH : AL) (DX : AX) (AL) * (Op) (AX) * (Op) Cât : Rest (AX) / (Op) AX mod (Op) AX : DX 425 Registru sau adres Registru sau adres INSTRUC IUNI ARITMETICE Exemple ADD AX. Rutina afectat acesteia opre te execu ia programului i afi eaz un mesaj de eroare la consol 426 .2 DIV BL Câtul opera iei este 500 Cum operandul este pe octet. rezultatul se va memora în AL.BL .

..INSTRUC IUNI DE ÎNTRERUPERE INT Sintaxa : INT <nivel_int> Semnifica ie : apelul prin program a unei rutine software de tratare a unei întreruperi <nivel_int> = 0.255 este nivelul (tipul) întreruperii apelate Adresa rutinei este p strat în tabela vectorilor de întrerupere (TVI) TVI con ine 256 de intr ri (adrese pointer) pentru cele 256 de niveluri acceptate de un porcesor x86 Mod de execu ie : se salveaz în stiv registrul de stare program (indicatorii de condi ie) se salveaz în stiv CS i IP (adresa urm toarei instruc iuni din program) se copiaz în CS:IP adresa rutinei de întrerupere din tabela de întreruperi de la adresa reprezentat de 4 octe i de la adresa dat de expresia : <nivel_intrerupere>*4 se execut instruc iunile rutinei de tratare se revine la execu ia programului principal 427 INSTRUC IUNI DE ÎNTRERUPERE INT Memoria principal 1 MB Program INT n Rutina de întrerupere 1 kB *4 <adr_seg> : <offset> 0 Tabela de întreruperi (TVI) (256 de intr ri x 4 octe i) 428 .

specific modelul de memorie ...stack 100h . mov ax.FUNC II SISTEM Subrutine ale sistemului de operare DOS sau sistemului de I/O BIOS disponibile programatoului prin intermediul instruc iunii INT (care genereaz o întrerupere software) INT XXh este instruc iunea propriu zis care apeleaz rutina de tratare corespunz toare Înainte de apelul instruc iunii func ia sistem este definit prin înc rcarea unor registe dedicate Registrul AH con ine totdeauna identificatorul func iei executate (rutina de întrerupere începe prin identificarea valorii din acest registru) Ex : Func ia pentru terminarea programului : elibereaz memoria ocupat de program i pred controlul sistemului de operare (func ia 4C a înteruperii 21h) MOV INT AX. . instruc iuni ale programului .. initializare DS . declara ii de variabile ..... 4C00h 21h 429 PROTOTIPUL UNUI PROGRAM ÎN LIMBAJ DE ASAMBLARE . ax . 4C00h int 21h end start .model SMALL ... sfâr it program 430 . etichet de început a programului . început segment de cod .code start: mov ax.data . revenire în sistemul de operare . început segment de date . stiv de 256 octe i . @data mov ds.

Afi eaz mesajul de la adresa con inut în registrul DX . înmul ire i împ r ire (testare dep ire) Se vor vizualiza registrele implicate în opera iile efectuate Se va vizualiza modul în care sunt afectate flagurile P. declarare pt. Func ia de terminare a programului – elibereaz memoria ocupat de program i pred controlul sistemului de operare 431 TEME DE LABORATOR – L1 P. 5678h .2 – Studiul execu iei opera iilor aritmetice S se scrie un program care s execute opera ii aritmetice cu numere pe 8 i 16 bi i Se va studia modul de execu ie al opera iilor de adunare. Func ie sistem pentru afi area la consola de ie ire . num ul 12345678h (32 de bi i) Aten ie la Transport ! 432 .PRIMUL MEU PROGRAM P. Ini ializeaz registrul segment de date .3 – Adudarea numerelor pe 32 de bi i S se scrie un program pentru adunarea a dou numere pe 32 de bi i Variabilele de intrare se definesc în hexazecimal în felul urm tor : var1 dw 1234h. sc dere.1 .

popa – transfer flaguri în/din stiv – transfer toate registrele 433 INSTRUC IUNI LOGICE AND. SS:SP (opnd) . Registru segment. 00100000b .INSTRUC IUNI DE TRANSFER CU STIVA PUSH POP opnd opnd . Dat imediat . popf pusha. XOR.10101111b and al. OR. Loca ie de memorie sau Reg32 (la microprocesorele pe 32 de bi i) Nu pot fi realizate trasnsferuri cu stiva pe octet push AX – instruc iune corect push AH – instruc iune incorect Stocarea datelor în stiv respect conven ia “Little Endian” (octetul “LOW” la adresa mic ) push AX – AH la adresa SP 1 – AL la adresa SP 2 pushf.si mov al. în al vom avea : 00100000b 434 . NOT – – – – Opera ii logice pe bit Sintaxa: <operator> <operand1>.<operand2> Semnifica ia: <operand1> = <operand1> <operator> <operand2> <operand1/2> := <reg8/16>|<mem8/16>|<val_imediat > – Exemple: and ax. bx or ax. (opnd) SS:SP SP SP SP 2 SP + 2 opnd – Reg16. 33h not var1 xor si.

<operand2> – execut un SI logic f r a memora rezultatul – se folose te doar pentru pozi ionarea indicatorilor de condi ii 435 INSTRUC IUNI DE CONVERSIE XLAT Sintaxa : XLAT – instruc iunea nu ia nici un operand. masca2 . masca . ac ioneaz asupra unui tabel de conversie Semnifica ia : – “traduce” un cod pe baza unui tabel de conversie (Look up table). zecimal cod hexa) – calcule rapide pe baz de rezultate precalculate (ex: inmul ire.UTILIZAREA INSTRUC IUNILOR/OPERATORILOR LOGICI pentru extragerea unui bit sau a unui grup de bi i dintr un set de valori logice ex: masca EQU 101b and AL. – adresa tabelului trebuie sa se încarce în prealabil in BX AL = [BX+AL] Util pentru : – conversii de cod (ex. CWB – operand implicit în registrul AX 436 . în cazul unor opera ii aritmetice repetative în cadrul programului (XLAT se execut mai rapid decât opera iile aritmetice) Alte instruc iuni de conversie : – CBW (Convert Byte to Word). D7 va fi resetat (valoare 0) pentru extragerea unui bit sau a unui grup de bi i dintr un set de valori logice TEST – sintaxa: TEST <operand1>. D7 va fi setat (valoare 1) masca2 EQU 7fh and AL. masca1 . imp r ire). în AL se p streaz bi ii D0 i D2 iar restul vor fi 0 pentru a seta/reseta un bit sau un set de bi i ex: masca1 EQU 80h or AL.

TABELA AL. Criptarea unui mesaj text introdus de la tastatur 437 INSTRUC IUNI DE CONTROL AL PROGRAMULUI – SALT NECONDI IONAT JMP <eticheta> | <REG> | <var_pointer> IP IP + disp8/16 – execut transferul execu iei la o alt adres în cadrul programului – saltul se execut prin ini ializarea con inutului registrului IP cu o nou valoare dat de un deplasament pe 8 sau 16 bi i (disp) evaluat la asamblare – distan a i adresa saltului sunt calculate de asamblor – pentru a marca inta saltului se prefer utilizarea etichetelor (definite prin “:” sau prin nume de proceduri) – salturile necondi ionate nu sunt agreate în programarea structurat – valoarea deplasamentului poate fi pozitiv (salt înainte) sau negativ (salt înapoi) – tipuri de salt : • salt intrasegment (deplasament pe 8/16 bi i) dat prin etichet sau registru • salt intersegment dat printr o variabil pointer <adr_seg : offset> (CS:IP) JMP ET1 .AL . num r zecimal de convertit .198 BX..EXEMPLU – CONVERSIE ZECIMAL .CL codhex[0].AL CL.data TABELA DB ‘123456789ABCDEF’ codhex DB ‘??h’ .4 AL. codhex = ‘C6h’ (codul HEXA al lui 198) Tem : P4. se re in cei 4 bi i LOW din AL . . ET1 : JMP ET1 .. se deplaseaz AL sprea dreapta cu 4 pozi ii .. codhex = ‘?6h’ COD HEXA . salt înapoi 438 .0FH codhex[1].code MOV LEA AND XLAT MOV MOV SHR XLAT MOV AL.. salt înainte .

JNAE JNB. JG JGE JL JLE Conditie > >= < <= = != Indicatori SF=OF SF=OF SF!=OF SF!=OF ZF=1 ZF=0 sau ZF=1 sau ZF=0 Alias JNLE JNL JNGE JNG JZ JNZ JPE JP JPO JNP JE JNE 440 . JE) – <eticheta> se traduce printr o distan relativ pe 8 bi i (la 8086 salturile pot fi doar în intervalul 128 .. SF. 127 i se numesc “salturi scurte”) CMP JE .INSTRUC IUNI DE CONTROL AL PROGRAMULUI – SALT CONDI IONAT Jcc – – <eticheta> IP IP + disp8 execut salt dac este îndeplinit condi ia “cc” condi ia este dat d starea unuia sau mai multor indicatori de condi ie (flaguri) : CF.101 et1 ADD JO .BX egal eroare : AL... egal : TEST JNZ et1 : 439 AX. PF – pentru aceea i condi ie pot exista mnemonici diferite (ex: JZ.JAE JE Instr. ZF.... JC JNC JZ JNZ JS JNS JO JNO JP JNP Conditia CF=1 CF=0 ZF=1 ZF=0 SF=1 SF=0 OF=1 OF=0 PF=1 PF=0 Alias JB. OF.[BX] eroare INSTRUC IUNI DE CONTROL AL PROGRAMULUI – SALT CONDI IONAT Instr.. AX....

data vector DB 1.7.2.0 MOV AL.vector MOV AL. JECXZ salt dac CX (respectiv ECX) este 0 se folose te înaintea unei instruc iuni de buclare (LOOP).8.5.[SI] INC SI LOOP bucla .vector[SI] INC SI LOOP bucla 442 . în cazul în care CX=0 LOOP <eticheta> instruc iune de buclare – ce face : CX CX 1 dac (CX != 0) “salt la <eticheta> (repet instruc iunile din bucl )” altfel “continu cu instruc iunea urm toare” – CX este folosit implicit pentru contorizarea ciclurilor executate LOOPZ/LOOPE <eticheta> instruc iuni de buclare – semnifica ia : CX CX 1 dac (CX != 0) i (ZF = 1) “salt la <eticheta>” altfel “continu cu instruc iunea urm toare” LOOPNZ/LOOPNE <eticheta> instruc iuni de buclare CX CX 1 – semnifica ia : dac (CX != 0) i (ZF = 1) “salt la <eticheta>” altfel “continu cu instruc iunea urm toare” 441 EXEMPLU – CALCULUL SUMEI ELEMENTELOR UNUI VECTOR . LENGTH vector LEA SI. varianta 1 : MOV CX.0 bucla: ADD AL.3.0 bucla: ADD AL.9. varianta 2 : MOV CX. pentru a preîntâmpina execu ia de 65.535 de ori a buclei. LENGTH vector LEA SI.CONTROLUL PROGRAMULUI – INSTRUC IUNI DE BUCLARE JCXZ.4.10 .6.

. ax endm apel de macroinstruc iune în programul principal m_mov x.}} <secven de instruc iuni> ENDM macroinstruc iune de transfer direct Exemplu : definire macroinstruc iune m_mov macro Dest.y 444 . {par2.PROGRAMAREA MICROPROCECSOARELOR TEHNICI DE PROGRAMARE Macrouri Administrarea programelor mari Apelul la resursele sistemului de calcul Scrierea procedurilor i rutinelor de tratare Optimizarea programelor 443 MACROINSTRUC IUNI Forme prescurtate de scriere a unor secven e de program care se repet Sintaxa: nume_macro MACRO { par1.. . Sursa mov ax. Source mov Dest.

asm programul principal al aplica iei link myProg.obj myPp.h declara ii de date.obj Biblioteci Sistem de Operare io. PROCEDURI Macrouri la fiecare apel se genereaz întreaga secven de instruc iuni nu sunt necesare instruc iuni de apel (CALL) i de revenire din rutina (RET) nu se folose te stiva transferul de parametri se face direct prin specificarea numelui execu ie mai eficient fa de apelul de proceduri pot fi create “instruc iuni” noi Proceduri o singur copie pentru mai multe apeluri se folosesc instruc iuni de apel si de revenire se utilizeaza stiva la apel si la revenire transferul de parametri se face prin registre sau stiv 445 ADMINISTRAREA PROGRAMELOR MARI Programele mari se scriu modular Crearea fi ierului executabil se face în dou etape : se asambleaz separat fiecare modul de program se link editeaz împreun fi ierele obiect rezultate Module program myPp.obj Asamblor io.asm defini ii de proceduri 446 .obj lkFile2.MACROINSTRUC IUNI vs.obj Interpretator (Linker) myPp.exe io.obj io. structuri declara ii de proceduri defini ii de macroinstruc iuni lkFile1.

. instruc iuni prog. principal . instruc iuni endp 447 ACCESUL LA RESURSELE UNUI SISTEM Resursele unui sistem de calcul: – hardware: • registre. declara ii macrouri macro1 macro . etc. declara ii de date . 448 . EXTRN PUBLIC nume_proc1.asm public proc1 public proc2 proc1 proc far . alte directive .ADMINISTRAREA PROGRAMELOR MARI Legarea modulelor de program necesit folosirea unor directive specifice : Directiva INCLUDE (INCLUDE nume_fisier) Directivele PUBLIC.. instruc iuni call proc1 endm io.. EXTERN. {nume_proc2:tip.h extern proc1:far extern proc2:far .h . apel macroinstruc iune macro1 io. {nume_proc2. instruc iuni endp proc2 proc far ..} myPp. apel procecdura : call proc2 . indicatoare de condi ie (flaguri) • memorie • interfe e i dispozitive de intrare/ie ire • sistemul de întreruperi • ceas de timp real.asm include io.} EXTERN nume_proc1:tip... alte timere – software: • sistemul de fi iere • gestiunea taskurilor • gestiunea comunica iei i servicii de sincronizare.

port out dx. al mov dx. NOT strob out dx..cmd_init .[si] inc si mov dx. port_s et2: in al. al mov dx. 4c00h int 21h end start 450 . se forteaza 1 pe strob or al. ltext mov dx. al mov dx.code start: mov ax. offset text mov cx.NIVELURILE DE ACCES LA RESURSE Comenzi specifice Func ii predefinite Aplica ii LNI + BIB. cmd_init out dx.data text db “hello world” ltext equ $ text port equ 378h port_c equ 37ah port_s equ 379h strob equ 00000001b busy equ 10000000b ack equ 01000000b cmd_init equ 00000001b . busy . data mov ds. stb out dx. dx test al. se forteaza 0 pe strob and al. port_s et1: in al. ax mov si. port_c mov al. DOS BIOS MH Func ii sistem (INT 21h) Rutine de întrerupere BIOS : INT 10h. ack . port_s loop et1 mov ax. cmd_init . . dx test al. 16h... al mov dx. activ pe 0 jnz et2 mov dx.port_c mov al. port_c mov al. Instruc iuni IN/OUT 449 ACCESUL LA NIVELUL MA INII HARDWARE Se face prin instruc iuni de scrire/citire de la porturile interfe elor de intrare/ie ire ale dispozitivelor hardzare ale sistemului (IN/OUT) Exemplu : Tip rirea unui text la imprimant . 13h. activ pe 1 jz et1 mov al.

nr. de sectoare 452 . func ia de citire mov al. ax mov es. nr. 5 . la terminarea aplica iei se reface vechea adres 451 CITIREA UNUI SECTOR DE DISC PRIN ÎNTRERUPERE BIOS Rutina de înterupere BIOS INT 13h . 0 .. nr sector mov ch. citirea unui sector de disc. cap mov bx. cod pt. etc. 0 . offset buf int 13h jc err . 0 . 02 . referitor la o anumit resurs – mod de realizare: se înlocuie te în tabela vectorilor de întreruperi adresa rutinei vechi cu adresa noii rutine de tratare (ce va con ine noul driver al resursei).data buf mov cl. err: .code start: mov ax. eroare de transmisie pe un port serial. ax . 1 .) – întreruperi software – “por i de acces” la resurse prin rutine (func ii) BIOS • fiecare tip de resurs (interfa a) are rezervat un nivel de întrerupere • se apeleaz prin instruc iunea INT n (une n corespunde nivelului întreruperii asociat interfe ei respective) • la apelul acestei întreruperi se execut o rutin de tratare specific sistemului de intrare/ie ire • transferul de date între resurse i program se face pri intermediul registrelor procesorului redirectare – toate întreruperile BIOS pot fi redirectate – obiectiv: rescrierea unor func ii ale S. nr. pista mov dl..ACCESUL LA RESURSE PRIN ÎNTRERUPERI BIOS Exist dou tipuri de întreruperi: – întreruperi hardware – semnale electrice generate de interfe e la apari ia unui eveniment (ex: recep ia unui caracter. disc mov dh.O. eroare end start db 512 dup(?) . nr. @data mov ds..initializare parametrii de apel mov ah.

Incarca in CX lungimea sirului again: mov ah. Caracter neimprimat AH=1 jnz next jmp exit next: inc si . byte ptr [si] .data msg db 'Hello world!'. offset msg .IMPRIMAREA UNUI TEXT LA IMPRIMANT . caracter de trimis pus in AL int 17h . Apel de intrerupere initializare port mov si. 01h .ax call print print proc near mov ah. 00h . adresa urmatorului caracter loop again . 01h .stack 16 . Apel rutina imprimare caracter cmp ah.0ah. dispozitivele de transmisie a datelor – dispozitiv standard de intrare – dispozitiv standard de ie ire Modul de acces : – se seteaz anumi i parametri în registrele procesorului – indicativul func iei sistem apelate se încarc întotdeauna în registrul AH – se construiesc anumite structuri de date pt.' direct printing '.0ah. Incarca AE a mesajului in SI mov cx. Serviciul 01 = "Initializeaza portul de imprimanta" mov dx.@data mov ds.model small Rutina de înterupere BIOS INT 17h .code . accesul la dispozitivele de stocare – canal pt.0dh.'$' MSG_LEN dw $ msg 1 .MSG_LEN . Trimite caracterul urmator la imprimanta exit: ret print endp end 453 ACCESUL RESURSE PRIN APELURI SISTEM (SYSTEM CALLS) Se folosesc concepte mai abstracte : – fi ier pt. defineste segmentul de cod mov ax. Functia 00 = "Imprima caracter" mov al. 00h . acces (handler) – se apeleaz întreruperea INT 21h – se testeaz corectitudinea efectu rii opera iei – datele sunt transferate între program i resursele sistemului prin intermediul registrelor generale ale procesorului 454 .0dh. Portul de imprimanta 0 int 17h .

Ie irea dintr un proces cu p strarea aloc rii memoriei mov ah. 05h int 21h . “x” mov ah. 01h int 21h . Citirea unui caracter de la disp. de intrare standard mov ah. dimensiune int 21h .EXEMPLE DE FUNC II SISTEM 01h 02h 05h 08h 09h 14h 15h 3Fh 40h 31h 4Ch citirea tastaturii cu ecou afi area unui caracter tip rirea unui caracter citirea tastaturii f r ecou afi area unui ir de caractere la consola de ie ire (ecran) citirea secven ial cu FCB scrierea secven ial cu FCB citirea unui fi ier scrierea unui fi ier revenirea în procesul p rinte cu p strarea aloc rii memoriei revenirea în sistemul de operare 455 EXEMPLE DE FUNC II SISTEM . Tiparirea unui caracter mov al. în AL va fi memorat codul ascii al caracterului citit . cod_retur mov dx. dimensiunea memoriei rezervate se d în paragrafe de 16 octe i 456 . 31h mov al.

REPREZENTAREA BINAR A INFORMA IEI PROGRAMAREA MICROPROCECSOARELOR Reprezentarea binar a informa iei Sisteme de numera ie i reguli de conversie Reprezentarea numerelor cu semn Coduri de reprezentare. Cod direct. Cod invers (C1) Codul complement fa de 2 (C2) Reprezentarea numerelor reale. Virgul fix Reprezentarea în virgul flotant 458 .

pozitive sau negative valori numerice folosite ca operanzi numerici în calcule valori numerice care reprezint opera ii codificate în binar (instruc iuni) sau valori binare ce codific adrese. tip rire. video 459 REPREZENTAREA BINAR A INFORMA IEI În sistemele numerice de calcul actuale informa ia vehiculat . imagine. se face o coresponden între elementele unei mul imi de informa ii cu N elemente i elementele mul imii binare B={0.) Date logice (booleane) Date multimedia : audio. etc. text caractere. adrese sau operanzi. Date alfanumerice : caractere. astfel încât fiec rui element informa ional s i corespund o secven de elemente din mul imea binar Pentru a codifica cele N elemente ale mul imii I este necesar o secven de n bi i. indiferent c reprezint instruc iuni (specifice procesorului). rela ia între n i N fiind : N 2n 460 . frac ionare.TIPURI DE INFORMA II REPREZENTATE INTERN Date numerice : valori întregi. text i semne grafice folosite de obicei pentru leg tura cu lumea exterioar (afi are. este de tip binar Reprezentarea se face prin codificarea informa iilor Codificarea informa iilor se face folosind sisteme de numera ie : set de simboluri set de reguli de reprezentare baza = num rul de simboluri folosite Prin codificare.1}. numere reale. introducere date.

.. binar – hexazecimal) : 0 0 2 1 0 1 0 B 1 1 1 0 A 1 0 1 1 C 461 0 0 CONVERSII BINAR – ZECIMAL – HEXAZECIMAL Reguli de conversie : 462 .. x0*b0 + x 1*b 1 + x 2*b 2. x0 • x 1 x 2. mai pu ine cifre sistemul hexazecimal (b = 16) : sistem intermediar între binar i zecimal Reguli de conversie (ex... x n*b n Tipuri : sistemul binar (b = 2) : pu ine reguli... x n!= 0 Xb = xm*bm + xm 1*bm 1 + .SISTEME DE NUMERA IE Reguli de reprezentare : Xb xm xm 1 xm 2 . i= n .. m xm!= 0. x n 0 xi < b. multe cifre sistemul zecimal (b = 10) : multe reguli.....

32 0.96 1.83 1.4810 = 0.66 1.0111..CONVERSIA NUMERELOR RA IONALE Conversia p r ii întregi se realizeaz prin divizare succesiv cu noua baz exemplu din baza 10 în baza 2 : 30 15 7 3 1 3010 = 111102 0 1 1 1 0. reprezent rile pot fi: » reprezentare în virgul fix : pentru numere întregi sau subunitare » reprezentare în virgul mobil : pentru numere reale • Virgula nu se reprezint fizic nic ieri în registrele calculatorului dar pozi ia sa este cunoscut (stabilit ) pentru fiecare dintre modurile de reprezentare 464 ..48 0.2 0 1 1 1 Conversia par ii frac ionare se realizeaz prin înmul ire succesiv cu noua baz aten ie !!! conversia nu este precis (univoc ) 463 REPREZENTAREA DATELOR NUMERICE Modul de reprezentare a datele numerice într un calculator are influen direct i depinde direct de : » structura UCP » dimensiunea registrelor de uz general locale » dimensiunea magistralei interne » complexitatea unit ii de execu ie În func ie de pozi ia virgulei.

pentru c aceast opera ie nu va duce la dep irea capacit ii de reprezentare pentru produs Reprezentarea în virgul mobil se face pentru numere reale Nu toate calculatoarele con in îns suportul hardware necesar pentru aritmetica în virgul mobil (8086 are nevoie de coprocesorul matematic 8087) Opera iile cu numere în virgul mobil se pot efectua pe procesoare în virgul fix .VIRGULA FIX – VIRGUL MOBIL Reprezentarea în virgul fix este folosit de toate calculatoarele numerice de uz general Majoritatea procesoarelor de uz general lucreaz cu numere întregi în virgul fix . prin emulare (interpretare) cu ajutorul unor programe de emulare 465 FORMATE BINARE DE REPREZENTARE A DATELOR NUMERICE Bit (binary digit) : unitatea elementar de informa ie starea unui bistabil sau a unei celule elementare de memorie Octet (byte) – grup de 8 bi i : unitatea elementar de adresare la cele mai multe calculatoare actuale poate reprezenta: o valoare numeric . datorit avantajelor în ceea ce prive te structura hardware a circuitelor pentru opera ii aritmetice i logice Reprezentarea în virgul fix cu numere subunitare are avantaje din punctul de vedere al opera iilor de înmul ire. un caracter (cod ASCII) bitul 7 – MSB (cel mai semnifiativ bit) bitul 0 – LSB (cel mai pu in semnificativ bit) Cuvânt (word) – 16 bi i : folosit pentru reprezentarea întregilor Dublu cuvânt (double word) – 32 de bi i : reprezentarea numerelor în virgul fix sau în virgul flotant simpl precizie Cuadruplu cuvânt (quad word) – 64 de bi i : numere în virgul fix sau în virgul flotant dubl precizie 466 .

FORMATE BINARE DE REPREZENTARE A DATELOR NUMERICE Cuvânt (word) – 16 bi i : folosit pentru reprezentarea întregilor. notat pe scurt MS) MS cod invers (numit i cod complement fa de 1. notat pe scurt C2) C2 Pentru toate cele trei tipuri de coduri reprezentarea numerelor pozitive este identic În descrierea codurilor vom considera c toate cuvintele au lungimea de n bi i 468 . notat pe scurt C1) C1 cod complementar (numit i cod complement fa de 2. simpl precizie Dublu cuvânt (double word) – 32 de bi i : folosit pentru reprezentarea numerelor în virgul fix (dubl precizie la sistemele pe 16 bi i) sau în virgul flotant Cuadruplu cuvânt (quad word) – 64 de bi i : folosit pentru reprezentarea numerelor în virgul fix (dubl precizie la sistemele pe 32 bi i) sau în virgul flotant Formate extinse – 80 de bi i : folosit pentru reprezentarea numerelor în virgul flotant dubl precizie 467 REPREZENTAREA NUMERELOR CU SEMN Se folosesc trei tipuri de coduri binare : cod direct (numit i cod m rime/modul i semn.

iar bitul de semn este 1 formul de calcul parte întreag : (N)C1 = 28 |N| 1 Exemplu : N=6 0000 0110 N= 6 1111 1001 Acela i domeniu de reprezentare ca în cazul codului direct Avantaje : codare foarte simpl domeniu simetric al numerelor reprezentate Dezavantaje : algoritmi relativ complec i pentru opera iile aritmetice elementare reprezentare dubl pentru num rul zero : 00000....REPREZENTAREA NUMERELOR ÎN M RIME I SEMN Codare : MSB este 1 pentru numere negative 1000 0110 : 6 MSB este 0 pentru numere pozitive 0000 0110 : 6 restul bi ilor codific modulul (m rimea) num rului i este acela i pentru numere pozitive i negative Domeniu de reprezentare : numere întregi : (2n 1 1) N 2n 1 1 numere subunitare : (1 2n 1) N 1 2n 1 Dezavantaje : Algoritmi relativ complec i pentru unele opera ii aritmetice (adunare i sc dere) Exist dou reprezent ri pentru num rul zero : 00000..0 469 C1 – COD COMPLEMENT FA DE 1 Codare : pentru numere negative se complementeaz to i bi ii din reprezentarea MS..1 470 ..0 i 10000...0 i 11111.

mai complec i decât cei corespunz tori codului MS 472 . la acela i num r de bi i. codul se poate deduce în trei moduri : partea întreag din (N)C1 din |N| (N)C2 = (N)C1 + 1 (N)C2 = 2n |N| partea franc ionar (Nf)C2 = (Nf)C1 + 1/(2n 1) (N)C2 = 2n |Nf| DE 2 Folosind reprezentarea modulului num rului negativ. pentru reprezentarea altui num r) » Un întreg în reprezentarea C2 poate fi u or extins la un format mai mare (num r mai mare de bi i) f r schimbarea valorii sale – este necesar doar ca bitul de semn s fie repetat în toate pozi iile binare de ordin superior (extensie de semn) 16b: snnn nnnn nnnn nnnn 32b: ssss ssss ssss ssss snnn nnnn nnnn nnnn Principalul dezavantaj al codului complementar îl constituie algoritmii pentru înmul ire i împ r ire.0). Exemplu N = 6 : C1 1111 1001 + 1 1111 1010 Domeniu de reprezentare : numere întregi : (2n 1 1) N 2n 1 1 numere subunitare : 1 N 1 2n 1 471 C2 – COD COMPLEMENT FA DE 2 Reprezentarea în cod complementar a numerelor negative s a generalizat la procesoarele actuale. se complementeaz to i bi ii mai pu in primul bit 1 pornind de la LSB. datorit avantajelor urm toare : » Sc derea unui num r din alt num r este echivalent matematic cu adunarea complementului de doi a sc z torului la desc zut (se implementeaz doar opera ia de adunare) » Codificarea în C2 printr un circuit electronic este foarte u or de realizat » C2 are o singur reprezentare pentru zero (000. (rezult un cod în plus..C2 – COD COMPLEMENT FA Codificare : Pentru numerele negative..

este 2 sau o putere a lui 2 baza 474 . a numerelor reale Reprezentare num r real: N=MxBE – M = mantisa. reprezentat ca un num r binar subunitar cu semn. exponentul – B = baza. fie pentru reprezentarea standardizat . mantisa – E = exponentul.C2 – COD COMPLEMENT FA Exemple de coduri pe 8 bi i pentru numere cu semn : N 6 6 MS 0000 0110 1000 0110 C1 0000 0110 1111 1001 C2 0000 0110 1111 1010 DE 2 Opera ii aritmetice in C2: – adunare 7+4 7 1111 1001 + 4 0000 0100 3 1111 1101 – sc dere 7 4 7 1111 1001 7 1111 1001 + 4 0000 0100 4 1111 1100 13 1111 0101 473 REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL Se folose te pentru stocarea i prelucrarea numerelor reale în calculator Denumirea provine de la faptul c virgula nu are o pozi ie fix fa de irul de bi i ce reprezint valoarea num rului Pozi ia virgulei se poate modifica fie ca s permit efectuarea de opera ii aritmetice i logice cu numere reale. reprezentat ca un num r întreg cu semn. în virgul mobil .

pentru reprezentarea în m rime i semn. determinat de num rul de bi i. numerele reale se reprezint cu o anumit aproxima ie în calculator. num rul cu mantisa normalizat 0. prin deplasarea mantisei c tre dreapta sau stânga i incrementarea respectiv decrementarea corespunz toare a exponentului De exemplu.11011000 × 210 = 0.0011011000 × 212 476 .11011000 × 210 poate fi scris : 0. Eroarea de reprezentare depinde de distan a dintre dou numere succesive reprezentabile cu cei n bi i 475 REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL Pentru reprezentarea mantisei numerelor în virgul mobil se folose te forma normalizat în care.REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL Reprezentarea numerelor în calculator se face prin cuvinte binare cu lungime egal cu lungimea registrelor de stocare Precizia de reprezentare a unui num r real este dat în primul rând de num rul de bi i folosi i pentru reprezentarea Mantisei Domeniul maxim de reprezentare este determinat de valoarea adoptat pentru Baz i de num rul de bi i folosi i pentru a reprezenta Exponentul Baza nu este reprezentat în calculatorul numeric. dar se ine cont de valoarea ei atunci când se efectueaz opera ii aritmetice La un anumit calculator numeric valoarea bazei este aceea i pentru toate numerele reale reprezentate Spre deosebire de numerele întregi.011011000 × 211 = 0. prima pozi ie binar dup virgul este diferit de zero Normalizarea restrânge m rimea valorii absolute a mantisei binare la domeniul : ½ M<1 Normalizarea în binar este u or de f cut.

exponent.1000.1111.0 x 2 127 + Nmax = + 0. mantis ) Valoarea zero este considerat a fi cea care corespunde la exponentul maxim negativ ( 127 în exemplul de mai sus) 478 . care va transmite un mesaj c tre utilizator Daca îns rezultatul se încadreaz în intervalul cu numere prea mici pentru a fi reprezentate cu mantise normalizate [ NMIN. de obicei. +NMAX] se spune c s a produs o dep ire a capacit ii de reprezentare Programul în care se produce dep irea se întrerupe.. ar fi avantajos ca s avem aceea i reprezentare pentru num ril 0 ca la întregi (succesiune numai de bi i 0 în toate câmpurile: semn..1 x 2+127 1 bit de semn + exponent pe 8 bi i 23 de bi i ‘1’ m rime 477 22 de bi i ‘0’ m rime REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL Dac în urma efectu rii opera iei aritmetice rezultatul [ NMAX. cu zero Reprezentarea lui zero pune unele probleme.SCARA DE REPREZENTARE A NUMERELOR REALE Reprezentarea în virgul flotant este discret . pentru c mantisa poate rezulta zero (nenormalizat ) dar exponentul s u poate avea orice valoare Din punctul de vedere a circuitelor care testeaz dac un num r este egal cu zero. nu modeleaz complet i continuu mul imea numerelor reale Reprezentare simpl precizie (32 de bi i) : 1 bit de semn 8 bi i exponent 23 bi i mantis Limitele de reprezentare a numerelor reale pe 32 de bi i (simpl precizie) : -Nmax -Nmin 0 Nmin Nmax Nmin = 0. iar evenimentul este tratat de o rutin (de servire a cazului de excep ie "dep ire")... +NMIN] num rul este aproximat.

"hidden bit“ HB) Ca urmare. virgula mobil este mutat pân când în stânga sa se g se te un bit 1. primul bit al acesteia este 1 pentru toate numerele Acest prim bit poate s nu mai fie reprezentat (bit ascuns. 254] 31 30 S Caracteristica 24 23 Mantisa 0 479 REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL Dac mantisa este reprezentat în cod direct i este normalizat .1 * 2 127. iar ceilal i bi i se g sesc în dreapta virgulei 480 . K = 127 (2n 1 1) Astfel c valoarea caracteristicii se încadreaz în intervalul [0. permite numerelor pozitive foarte mici (+0. faptul c bitul 1 este ascuns. deci reprezentarea num rului zero este identic cu cea de la reprezentarea întregilor. notat în continuare cu C) cu valoarea constant K : Deplasarea. mantisa poate fi reprezentat pe 24 de bi i (23 bi i reprezenta i efectiv + 1 HB) precizia de reprezentare crescând de dou ori De asemenea. putându se folosi acelea i tipuri de circuite de detec ie a rezultatului nul Ca urmare. pune probleme de reprezentare faptul c este necesar s se reprezinte dou semne pentru fiecare num r (semnul mantisei i semnul exponentului) O cale de rezolvare a problemei reprezent rii num rului zero este folosirea exponentului deplasat (sau caracteristic . la efectuarea opera iei de normalizare. pentru reprezentare pe 8 bi i a exponentului se poate face cu C=E+K. în formatul pe 32 de bi i.REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL De asemenea. reprezentat cu HB) s aib numai zerouri pe to i cei 32 de bi i.

..03125 + .25 + 0 × 0.52625 6. 1.52625 × 24 = 25 S C F caracteristica : mantisa : C = 83h = E+127 E = 4 M = 1F = 1100100000 .REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL Formatul de reprezentare în virgul mobil e stabilit prin standardul IEEE 754.0625 + 0 × 0.125 + 1 × 0..5 + 0 × 0. 0 = 1 × 1 + 1 × 0.. 0 = 40C60000h S C F caracteristica : E = 2 C = E+127 = 129 = 81h mantisa : M = 1.546875 (se scad succesiv valorile lui 1/2m. unde n este rangul binar al mantisei..1875 = 1. dar de valoarea sa se ine cont atunci când se lucreaz cu numerele (unit ile aritmetice i logice in cont de bitul ascuns) 481 REPREZENTAREA NUMERELOR ÎN VIRGUL MOBIL 41C80000h = 01000001110010000 . standardul impune folosirea exponentului deplasat forma normalizat pentru mantis bitul ascuns baza B este considerat a fi egal cu 2 Bitul ascuns nu se reprezint în formatul binar în virgul mobil .. ap rut în 1980 i completat ulterior : – 32 bi i (simpl precizie) – real lung (float) – 64 bi i (dubl precizie) – real lung (double) În oricare dintre formate. se ia 1 acolo unde sc derea este posibil i 0 în rest pentru construirea mantisei) 482 ... cu m=23 n.546875 × 22 = 01000000110001100 . 0 = 1.

.1}. . Codificarea ASCII faciliteaz conversii de genul : – cifr zecimal cod alfanumeric : adunare/sc dere 30h sau I logic 0Fh – litere mari litere mici : set/reset bit 5 (1 – litere mici. – altele : spa iu – 20h. Cel mai utilizat cod alfanumeric folosit în prezent.. este utilizat pentru a indica sfâr itul unui flux de date) În afara codurilor de control. 27 caractere. paragraf. – cifre : ‘0’ – 30h. denumite în general caractere i mul imea binar B = {0. În prezent se folose te codul ASCII extins.. referite ca date de tip ASCII – O secven a de caractere reprezentate prin codurile lor ASCII. cu 8 bi i. exist coduri pentru 64 litere i cifre i 196 caractere de control. 0 – litere mari) 484 . semne de punctua ie. cifre i semne speciale. tab – 09h. LF – 0Ah. . ‘2’ – 32h.. ‘B’ – 42h. apelat adesea doar prin numele de cod “ASCII” Primele 32 de caractere ASCII codific coduri de control i sunt utilizate pentru a transmite diferite caractere de control privind mesaje Aceasta pentru c ASCII a fost dezvoltat ini ial pentru transmisia datelor (de exemplu caracterul de control ^D.CODUL ALFANUMERIC ASCII Sunt coduri care stabilesc o coresponden a între mul imea format din litere. sau chiar un bloc întreg de caractere (de aceea lungimea irului trebuie cunoscut ) Exemple – litere mari : ‘A’ – 41h. ‘c’ – 63h. CR – 0Dh.. caractere grafice i alte caractere 483 CODUL ALFANUMERIC ASCII Scopul principal al codului ASCII este reprezentarea textului – Datele de tip text sunt. – litere mici : ‘a’ – 61h. ‘C’ – 43h. de regul . . e numit ir de caractere ("string") – irul poate sa fie vid (niciun caracter) sau poate cuprinde o fraz ... . EOT = End Of Transmission.. ‘1’ – 31h. ‘b’ – 62h. este codul ASCII (American Standard Code for Information Interchange) Ini ial a fost un cod de 7 bi i.

Sign up to vote on this title
UsefulNot useful