fondamenti teorici e programmazione
TRANSCRIPT
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)