fondamenti teorici e programmazione

22
Fondamenti Teorici e Programmazione Modulo A Architettura dei calcolatori Ioanna Miliou, Ph.D.

Upload: others

Post on 16-Oct-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fondamenti Teorici e Programmazione

FondamentiTeoricieProgrammazione

ModuloAArchitetturadeicalcolatori

Ioanna Miliou,Ph.D.

Page 2: Fondamenti Teorici e Programmazione

Architetturadeicalcolatori

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

ArchitetturadivonNeumann

Page 3: Fondamenti Teorici e Programmazione

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

• iltrasferimentodeidati• lacomunicazioneconleperiferiche• ilcalcoloveroeproprio

Processore

Page 4: Fondamenti Teorici e Programmazione

Processore

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

Page 5: Fondamenti Teorici e Programmazione

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

• registri:celledimemoriaadaccessomoltoveloce,permemorizzareivalorisucuieffettuareilcalcoloegliindirizzi,dellelocazionidimemoriaincuisonomemorizzatiidatieleistruzionidelprogrammainesecuzione

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

Page 6: Fondamenti Teorici e Programmazione

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

Page 7: Fondamenti Teorici e Programmazione

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

Page 8: Fondamenti Teorici e Programmazione

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.

Page 9: Fondamenti Teorici e Programmazione

Memoriasecondaria

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

Page 10: Fondamenti Teorici e Programmazione

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.

Page 11: Fondamenti Teorici e Programmazione

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

Page 12: Fondamenti Teorici e Programmazione

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.

Page 13: Fondamenti Teorici e Programmazione

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

Page 14: Fondamenti Teorici e Programmazione

ProgrammaIlcalcolatoredevecapirequellocheglivienedettoedevesaperfareciòcheglivienechiesto• Problema

• Interagireconlamacchinamedianteunlinguaggiopiùvicinoagliumani

• Soluzione• Linguaggidialtolivello• Traduttori/Compilatori/Interpreti

• Ilprogrammatore sioccupadi• Progettareunalgoritmoefficaceperlarisoluzionediunproblemadato• Tradurrequestoalgoritmoinistruzionieseguibilidauncomputermedianteunlinguaggiodiprogrammazione

Page 15: Fondamenti Teorici e Programmazione

LinguaggiodiprogrammazioneUnlinguaggiodiprogrammazioneèunlinguaggioartificialepercomunicareconlemacchine• Linguaggidialtolivello(viciniall’utente)

• Vgenerazione:linguaggididescrizionedeiproblemiorientatiallarisoluzioneautomatica

• IVgenerazione:linguaggiperspecificiambitiapplicativi(ades.MATLAB)

• IIIgenerazione:linguaggiimperativieproceduralidiusogenerale

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

mnemoniciperleistruzioni)• Igenerazione:linguaggimacchina(sequenzedibit)

Page 16: Fondamenti Teorici e Programmazione

LinguaggioMacchina

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

Page 17: Fondamenti Teorici e Programmazione

LinguaggidiProgrammazionediAltoLivello

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

Traduttore• Latraduzionevieneeffettuatadauncompilatore,uninterprete,ounacombinazionedientrambi

Page 18: Fondamenti Teorici e Programmazione

TraduttoreUnprogrammacheconverte ilcodicediprogrammiscrittiinundatolinguaggiodiprogrammazione(sorgenti) nellacorrispondenterappresentazioneinlinguaggiomacchina(eseguibili)

TipidiTraduttore• Compilatore• Interprete

Page 19: Fondamenti Teorici e Programmazione

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

Page 20: Fondamenti Teorici e Programmazione

Interprete

• Traduttoreperlinguaggidialtolivello• Traduceedeseguedirettamente ciascunaistruzionedelprogrammasorgente• Prendeun’istruzionediunprogrammascrittoinunlinguaggiodialtolivelloelatraducenellerelativeistruzioniinlinguaggiomacchina• Esegueimmediatamentelerisultantiistruzioniinlinguaggiomacchina

Page 21: Fondamenti Teorici e Programmazione

Compilatorevs.Interprete

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

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

Page 22: Fondamenti Teorici e Programmazione

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)