Fondamenti Teorici e Programmazione

Preview:

Citation preview

FondamentiTeoricieProgrammazione

ModuloAArchitetturadeicalcolatori

Ioanna Miliou,Ph.D.

Architetturadeicalcolatori

Inuncomputerpossiamodis8nguerequa;rounitàfunzionali:• ilprocessore(CPU)• lamemoriaprincipale(memoriacentraleoRAM)• lamemoriasecondaria(memoriadimassaomemoriaperiferica)• idispositividiinput/output

ArchitetturadivonNeumann

Ilprocessore (dettoancheCPU,ovvero,CentralProcessingUnit)èil“cervellodelcalcolatore”chehaunodeiruolipiùimportanti.Coordinaleattivitàdituttelecomponentidelcalcolatore,interpretandoedeseguendoleistruzionidelprogrammacorrenteper:

• iltrasferimentodeidati• lacomunicazioneconleperiferiche• ilcalcoloveroeproprio

Processore

Processore

Ilprocessoreforniscelacapacitàdielaborazionedelleinformazionicontenutenellamemoriaprincipale.• L’elaborazioneavvieneinaccordoasequenzediistruzioni(istruzionimacchina)• Illinguaggioincuisiscrivonoquesteistruzionivienechiamatolinguaggiomacchina• Programma:specificaunivocadiunaseriedioperazionichel’elaboratoredevesvolgere• Ècostituitodaunasequenzaordinatadiistruzionimacchina• Ilruolodelprocessoreèquellodieseguireprogrammiinlinguaggiomacchina

ProcessoreHaleseguenti3componentiprincipali:• unitàlogico-aritmetica(ALU):effettuaicalcoli• unitàdicontrollo:coordinamentoditutteleoperazioni

• registri:celledimemoriaadaccessomoltoveloce,permemorizzareivalorisucuieffettuareilcalcoloegliindirizzi,dellelocazionidimemoriaincuisonomemorizzatiidatieleistruzionidelprogrammainesecuzione

Alfineditrasformareidatiininformazioniutilizzabili,ilprocessoreeseguiràilcicloFetch-Decode-Execute (FDE)continuo.Eseguendoquestociclo,ilprocessorerecuperaidatidallamemoriaprimaria.Quindi,idativerrannodecodificatiedeseguiticomeinformazioniutilizzabili.

Memoriaprincipale

• Forniscelacapacitàdi“memorizzare”leinformazioni.• Èunasequenzadicelledimemoria(detteparole),tuttedellastessadimensione• Ognicellaècostituitadaunasequenzadibit• Ilnumeroh dibitdiunacelladimemoriadipendedall’elaboratore,edèunmultiplodi8:8,16,32,64• Ognicelladimemoriaèidentificatainmodounivocodalsuoindirizzo• Ilnumerok dibitnecessariperl’indirizzodipendedalnumerodicelledimemoria

k bit2k celle

Memoriaprincipale

Caratteristicheprincipali:• Puòesseresialetta chescritta• scritturadistruttiva• letturanondistruttiva

• Altavelocitàdiaccesso• Èvolatile (siperdeilcontenutoquandosispegneilcalcolatore)

Dimensionedellamemoria:misuratainbyte (1byte=8bit)• Kilobyte=210 ~103 byte• Megabyte=220 ~106 byte• Gigabyte=230 ~109 byte• Terabyte=240 ~1012 byte

UnaltronomeperlamemoriaprincipaleèmemoriaRAM(RandomAccessMemory)cheindicacheiltempodiaccessoadunacellaèlostessoindipendentementedallaposizionedellacella

Memoriasecondaria

Caratteristicheprincipali:• Nonèvolatile (nonsiperdeilcontenutoquandosispegneilcalcolatore)• Hacapacitàmaggioredellamemoriacentrale• Iltempodiaccessoèlentorispettoallamemoriacentrale• Ilaccessoèsequenziale enoncasuale

Tipidimemoriasecondaria:• Dischimagnetici(harddisk,floppydisk)• Dischiottici(CD,CD-ROM,DVD,Blu-ray)• Nastrimagnetici(streamingtape)• Flashmemory(chiaviUSB)

Lamemoriasecondaria,chiamataanchememoriadimassaomemoriaperiferica,èun'unitàchesiaggiungeallamemoriaprincipaleperaccrescernelecapacitàdimemorizzazione.

Memoriasecondaria

• Tuttiidatieiprogrammisonomemorizzatidellamemoriasecondaria quandoilcalcolatoreèspento• All’accensioneilprogrammadiavviamento(bootstrap)vienecaricatonellaRAMedeseguito• Questoprovocailcaricamentoel’esecuzionedelKernel delsistemaoperativoesuccessivamentedelleprimitivedisistemaedelleapplicazionidicuisirichiedel’esecuzione• Inogniistantec’èunprogrammainesecuzione,equestoèmemorizzatonellaRAM

Tipididispositiviinput:• Tastiera• Mouse• Scanner• Webcam• Microfono• Macchinafotograficadigitale

Tipididispositivioutput:• Stampante• Monitor• Altoparlanti• Cuffie

Dispositividiinput/output(I/O)• Èl’hardwarecheproducedataechemostraleinformazioni agliutentifinali.• Datacheappenasiproduconodaidispositiviinputvannomandatiallamemoriaprincipale.• Itipidiinformazionichepossonoesserevisualizzatidaidispositividioutputsonovideo,testo,immagine,animazione eaudio.Leinformazionivisualizzatepossonoessereditiposoftcopy ohardcopy.

IlBus(Binary UnitSystem)

• Problema:comesipuòcollegarelevariecomponenti(fisicamenteseparate)diuncalcolatore,adesempio,processoreememoriacentrale?

• Problema:comefailprocessoreatrasmettereallaRAMibitchecodificanol’indirizzodiunaparola,ilcontenutodiunregistro,etc.?

• Problema:comefalaRAMatrasmetterealprocessoreibitchesonocontenutiinunaparoladimemoria?

• Collegareognicomponenteatuttelealtre(costososehomoltecomponentiseparate)• Usareununicocollegamentocondiviso

Busdisistema:insiemedicollegamenti(solitamenteinrame)checonnettetuttiicomponentidiun’architettura

Esempio

• Digiti laparolaSAYAneltuoprogrammadielaborazionetestiusandolatuatastiera (dispositivodiinput).

• IdatiS, A,YeApasserannoallaRAM (memoriaprincipale).Sarannotenutilìtemporaneamente.Aquestopunto,sesispegneilcalcolatore,idatiscompariranno.

• Ilprocessore recupera(fetch)idatidallaRAM.Quindidecodificherà(decode)edeseguirà(execute)idatiperessereinformazioniutilizzabili.

• LeinformazioniverrannoinviateallaRAMedopoverrannovisualizzatesulmonitor ostampateutilizzandolastampante(dispositividioutput)inbasealleproprieesigenze.

• Sesalvileinformazioni,sarannoconservatepermanentementeneltuoharddisk(memoriasecondaria).Quindi,leinformazioninonscomparirannonemmenosespegniilcalcolatore.

SistemaOperativo• Ilprogrammaèsempreestremamentecomplicato,perfortunaperòmolteoperazionisonoricorrenti:• Letturaememorizzazionedelprogrammainmemoria:trasferimentodallamemoriasecondariaallaRAM

• gestionedellamemoriasecondaria(filesystem)• gestionedeidispositividiI/Operlastampaeletturadeidati• gestionedellacomunicazioneconaltridispositivi• esecuzionedeiprogrammi(scheduling deiprocessi,multitasking)

• Pertuttequesteoperazioniesistonodellefunzioni lacuidescrizione(programma)èdefinitaunavoltapertuttenellamacchina,nelleprimitivedelsistemaoperativochevengonoinvocatetuttelevoltecheservono

• I modernisistemioperativisonodotatidiun’interfacciagraficacheagevolal’interazioneconl’utente,cheprevedonol’usodifinestre,barreemenudicomandidivariotipo

ProgrammaIlcalcolatoredevecapirequellocheglivienedettoedevesaperfareciòcheglivienechiesto• Problema

• Interagireconlamacchinamedianteunlinguaggiopiùvicinoagliumani

• Soluzione• Linguaggidialtolivello• Traduttori/Compilatori/Interpreti

• Ilprogrammatore sioccupadi• Progettareunalgoritmoefficaceperlarisoluzionediunproblemadato• Tradurrequestoalgoritmoinistruzionieseguibilidauncomputermedianteunlinguaggiodiprogrammazione

LinguaggiodiprogrammazioneUnlinguaggiodiprogrammazioneèunlinguaggioartificialepercomunicareconlemacchine• Linguaggidialtolivello(viciniall’utente)

• Vgenerazione:linguaggididescrizionedeiproblemiorientatiallarisoluzioneautomatica

• IVgenerazione:linguaggiperspecificiambitiapplicativi(ades.MATLAB)

• IIIgenerazione:linguaggiimperativieproceduralidiusogenerale

• Linguaggidibassolivello(viciniall’hardware)• IIgenerazione:linguaggiassemblativi(usodicodici

mnemoniciperleistruzioni)• Igenerazione:linguaggimacchina(sequenzedibit)

LinguaggioMacchina

• Glicalcolatoricomprendonoinmanieradirettasoloistruzioniinbinario• Illinguaggiomacchinaèdirettamenteeseguibiledalcalcolatore-Senzanessunatraduzione• Eseguitoinmanieramoltoefficiente• Difficiledaprogrammarepergliumani• Nonportabile(impossibilitàdieseguirlo sumacchineconarchitetturediverse)• Soggettoaderrori• Difficiledamodificare

LinguaggidiProgrammazionediAltoLivello

• UsanoparoleEnglish-like (Esempi:if,for,while,...),notazionematematicaepunteggiaturaperscrivereprogrammi• Sonopiùviciniailinguaggiumani• Ilprogrammatorepuòastrarredaidettaglilegatiall’architetturaedesprimereiproprialgoritmiinmodosemplice• Ilprogrammaprimadiessereeseguitodeveesseretradotto inlinguaggiomacchina

Traduttore• Latraduzionevieneeffettuatadauncompilatore,uninterprete,ounacombinazionedientrambi

TraduttoreUnprogrammacheconverte ilcodicediprogrammiscrittiinundatolinguaggiodiprogrammazione(sorgenti) nellacorrispondenterappresentazioneinlinguaggiomacchina(eseguibili)

TipidiTraduttore• Compilatore• Interprete

Compilatore• Traduttoreperlinguaggidialtolivello• Sioccupaditradurre unprogrammascrittoinunlinguaggiodialtolivellonelcorrispondenteprogrammascrittoinlinguaggiomacchina• Crea(compila)uninsiemediistruzioniinlinguaggiomacchinaperciascunaistruzionescrittainunlinguaggiodialtolivello• Accettainingressol’interoprogramma(istruzionichelocompongono)eproduceinuscitalarappresentazionedell’interoprogrammainlinguaggiomacchina

Interprete

• Traduttoreperlinguaggidialtolivello• Traduceedeseguedirettamente ciascunaistruzionedelprogrammasorgente• Prendeun’istruzionediunprogrammascrittoinunlinguaggiodialtolivelloelatraducenellerelativeistruzioniinlinguaggiomacchina• Esegueimmediatamentelerisultantiistruzioniinlinguaggiomacchina

Compilatorevs.Interprete

• Compilazione• Pro:applicazionipiùveloci• Contro:maggiorlavoronelprocessodimessaapuntoemanutenzione

• Interpretazione• Pro:consentetempidisviluppopiùcontenuti• Contro:produceprogrammimenoefficienti

Javascript

• Javascript èunodei linguaggidiprogrammazioneadaltolivello• Èun linguaggiodiscripting orientatoaglioggetti eaglieventi• Comunementeutilizzatonella programmazioneWeb latoclient perlacreazione,in sitiweb e applicazioniweb,dieffettidinamici interattivitramite funzionidi scriptinvocateda eventi innescatialorovoltainvarimodidall'utentesulla paginaweb inuso• Èun linguaggiointerpretato:ilcodicenonviene compilato,mainterpretato(inJavaScript latoclient,l'interpreteèinclusonelbrowserchesistautilizzando)

Recommended