Il parallelismo, ossia fare più operazioni contemporaneamente , permette di migliorare le prestazioni senza
modificare la frequenza di clock. Il parallelismo può essere
parallelismo a livello delle istruzioni attraverso:
architetture pipeline e superscalari
o
parallelismo a livello di processori attraverso
Multiprocessori
o Multicomputer
o
2.1 A RCHITETTURA PIPELINE
Organizza la CPU come una “catena di montaggio”
¤ la CPU viene suddivisa in stadi, ognuno dedicat all’esecuzione di un compito specifico
¤ l’esecuzione di una istruzione richiede il passaggio attraverso tutti o alcuni degli stadi della pipeline
¤ in un certo istante, ogni stadio esegue la parte di istruzione di sua “competenza”
¤ in un certo istante esistono diverse istruzioni contemporaneamente in esecuzione, una per stadio.
Esempio a 5 stadi
¨ S1. lettura istruzioni dalla memoria e loro caricamento in un apposito buffer
¨ S2. decodifica dell’istruzione per determinarne il tipo e gli operandi richiesti
¨ S3. individuazione e recupero degli operandi dai registri o dalla memoria
¨ S4. esecuzione dell’istruzione
¨ S5. invio dei risultati all’apposito registro. 2
Internal
2.2 M ULTIPROCESSORE
diverse CPU condividono una memoria comune
le CPU devono coordinarsi per accedere alla memoria
esistono diversi schemi di collegamento tra CPU e memoria
2.3 M ULTICOMPUTER
si utilizzano più calcolatori, ognuno dotato di unamemoria privata
comunicazione tra CPU basata su scambio di messaggi in una rete che può essere
Specializzata (Massive Parallel Processing)
o Di uso comune (cluster)
o Internet (grid/cloud)
o
3. MEMORIA
La memoria serve a immagazzinare dati e programmi all’interno del computer. Il
processore può Scrivere un numero in una cella di memoria Leggere un numero da una
cella di memoria
La memoria è suddivisa in celle o locazioni di memoria, ognuna delle quali ha un
indirizzo attraverso il quale avviene l’accesso da parte del processore . Ogni cella
contiene un numero predefinito di bit. l’indirizzo deve avere una lunghezza prefissata,
limitando tale lunghezza, limito anche il numero di indirizzi che posso esprimere
Ad esempio Le architetture a 32 bit hanno un limite massimo di memoria RAM
indirizzabile
indirizzo 32 bit => 2^32 celle = 4 GB
Per poter indirizzare (e quindi avere disponibile) più memoria si usano le architetture a 64bit
Quindi Il numero di celle indirizzabili è detto spazio di indirizzamento
Esistono due tipi di memoria
3.1 MEMORIA PRIMARIA
veloce ma costosa. È costituita da chip di memoria realizzati con la stessa tecnologia (al silicio) utilizzata per la CPU
ed è suddivisa in due parti, con funzionalità distinte cioè : 3
la memoria di sola lettura (ROM, Read-Only Memory) che Conserva i dati e i programmi in
essa memorizzati anche quando il computer viene spento .è una memoria non volatile
contiene i programmi necessari all’avvio del computer,
programmi che devono essere sempre disponibili
la memoria ad accesso casuale (significa che il tempo per accedere ad un dato non dipende
dalla sua posizione nella memoria) (RAM, Random Access Memory) una memoria che
consente la lettura e la scrittura dei dati e dei programmi in essa contenuti e contiene dati in
fase di modifica o programmi che non devono essere sempre disponibili. La differenziamo dal
fatto che perde i dati quando si spegne il computer (viene definita come supporto di tipo
volatile)
Il principio di localita’: la memoria cache ¨ Località spaziale: quando si accede all’indirizzo A, è molto probabile che gli
accessi successivi richiedano celle vicine ad A. ¨ Località temporale: quando si accede all’indirizzo A, è molto probabile
che gli accessi richiedano di nuovo la cella A. ¨ cache: memoria che consenta accessi estremamente veloci su blocchi
utilizzati di recente ¤ veloce ma molto costosa, quindi piccola
3.2 M EMORIA SECONDARIA
è un supporto di memoria non volatile e rispetto alla memoria primaria è circa 100 volte meno costosa ma è molto più
lenta (per ciò che concerne tempi di accesso in lettura/scrittura). I programmi e dati risiedono nella memoria
secondaria e vengono caricati nella RAM quando necessario e possono tornare in memoria secondaria aggiornati
quando richiesto.
Per quanto riguarda la gerarchia di memoria
4. DISPOSITIVI PERIFERICI DI ITERAZIONE
L’interazione fra l’utente umano ed il computer avviene mediante i cosiddetti dispositivi periferici di Input/Output
(dispositivi di I/O). Le operazioni di I/O si possono effettuare in 3 modalita’:
Controllo da programma= Si utilizzano cicli di codice (polling) che esaminano periodicamente lo stato
dell’interfaccia hardware su cui leggere/scrivere fino a completamento dell’operazione.
Interrupt= il dispositivo periferico è in grado di notificare alla CPU il completamento di una operazione
“richiamando la sua attenzione” attraverso una interruzione del flusso di esecuzione.
Direct Memory Access (DMA) uno specifico componente hardware (DMA controller), si occupa del trasferimento di
ogni dato in I/O. La CPU imposta il DMA con l’indirizzo e la quantità di dati da trasferire e il trasferimento avviene senza
l’intervento della CPU. 4
DAL 4 ottobre PROGRAMMARE
1. ALGORITMO
Come abiamo gia visto prima di programmare è necessario avere ben ciaro e realizzare l’algoritmo.
La descrizione dell’algoritmo può avvenire in molteplici modi:
In un linguaggio naturale
In linguaggio matematico
In un linguaggio di programmazione (vedremo!)
In un linguaggio specifico del contesto applicativo
In “pseudocodice”, un linguaggio artificiale simile a molti linguaggi di programmazione
In una forma mista di tutte le precedenti
2. DIAGRAMMI DI FLUSSO
Un modo di realizzare l’algoritmo è per via grafica grazie l’utilizzo dei diagrammi di flusso. I simboli che vengono usati
sono i seguenti
Esempio: roblema: Avendo depositato ventimila euro in un conto bancario che produce il 5% di interessi
all’anno, capitalizzati annualmente, quanti anni occorrono affinché il saldo del conto arrivi al doppio della cifra
iniziale?
Per prima cosa scrivo l’algoritmo in linguaggio naturale
o Dopodichè lo scrivo come diagramma di flusso (aggiungi foto)
o
Il metodo di soluzione proposto
è non ambiguo infatti fornisce precise istruzioni su cosa bisogna fare ad ogni passaggio e su quale
o deve essere il passaggio successivo 1
è eseguibile infatti ciascun passaggio può essere eseguito concretamente (se, ad esempio, il metodo
o di soluzione dicesse che il tasso di interesse da usare al punto 4 è variabile in dipendenza da fattori
economici futuri, il metodo non sarebbe eseguibile…)
arriva a conclusione in un tempo finito infatti ad ogni passo il saldo aumenta di almeno mille euro,
o quindi al massimo in 20 passi arriva al termine
3. PROGRAMMAZIONE
Partendo dal presupposto che Un computer è una macchina che
¤ memorizza dati (numeri, parole, immagini, suoni...)
¤ interagisce con dispositivi (schermo, tastiera, mouse...)
¤ esegue programmi
La programmazione è la disciplina che ha per oggetto la definizione, progettazione e codifica diprogrammi per
calcolatore.
COSA SONO I PROGRAMMI? : I programmi sono implementazioni di algoritmi in un qualche linguaggio di
programmazione inteso come sequenza di istruzioni che il computer esegue e di decisioni che il computer
prende per svolgere una certa attività tutto in modo totalmente non ambiguo. ¨ Un programma è corretto se
presenta
¤ Correttezza sintattica
¤ Correttezza semantica
¤ Correttezza della soluzione
COME E FATTO UN PROGRAMMA? Le istruzioni di cui sono composti i programmi sono molto elementari e
di tre tipi ( Istruzioni imperative ad esempio
leggere un numero da una posizione della memoria
sommare due numeri
accendere un punto rosso in una data posizione dello schermo
Istruzioni condizionali (che prendono decisioni) ad esempio
se un dato è negativo, proseguire il programma con l’istruzione presente a un
determinato indirizzo anziché con la successiva
Cicli (iterazioni): ripeti un blocco di istruzioni finche’ una data condizione diventa falsa
Tali istruzioni vengono svolte ad altissime velocità dalla CPU
PERCHE IMPARARE A PROGRAMMARE? Essendo il computer una macchina estremamente versatile la
programmazione mi permette di far fare al computer tutto ciò che voglio.
4. LINGUAGGIO DI PROGRAMMAZIONE
4.1 LINGUAGGIO A BASSO LIVELLO
Il linguaggio del computer è ad istruzioni macchina costituto da una serie di istruzioni elementari eseguite da un
computer (cioè dalla sua CPU). L’insieme di istruzioni macchina (instruction set) è specifico di una particolare CPU
Esempio di descrizione di alcune istruzioni macchina: se devo dire al pc carica in un registro il valore contenuto nella
posizione di memoria 40. carica in un altro registro il valore 100. se il primo valore è maggiore del secondo, prosegui
con l’istruzione contenuta nella posizione di memoria 240, altrimenti con l’istruzione che segue quella attuale.
2
Internal
La codifica delle istruzioni macchina avviene sotto forma di configurazioni di bit conservate in memoria (che possono
essere interpretate come numeri interi). Le precedenti istruzioni diventano 21 40 16 100 163 240
Le istruzioni macchina possono essere
trasferimento dati, tra i registri e la memoria principale
LOAD (verso un registro), STORE (verso la memoria
o
operazioni aritmetiche e logiche, eseguite dalla ALU
ritmetiche: ADD, SUB , MUL, DIV
o logiche: AND, OR, NOT
o
salti, per alterare il flusso di esecuzione sequenziale (viene modificato il Program Counter)
Incondizionato (JUMP) : salta in ogni caso
o condizionato: salta solo se un certo valore è zero (JZ) o se è maggiore di zero (JGZ)
o
Per eseguire un programma in un computer è necessario scrivere all’interno della memoria primaria le configurazioni
di bit corrispondenti alle istruzioni macchina del programma. Essendo questo impossibie si utilizzano gli
Assemblatori cioè programmi che permettono di scrivere il programma mediante dei nomi abbreviati (codici
mnemonici) per le istruzioni macchina che sono più facili da ricordare per il programmatore rispetto i vari codici
binari poi traduce il programma in configurazioni di bit. linguaggi espressi con codici mnemonici si dicono linguaggi
assembly (uno diverso per ogni CPU) ed esiste corrispondenza biunivoca fra insieme
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti di teoria per Informatica (domande prima metà)
-
Storia dell'arte. Da metà 700 a metà 900
-
Appunti Storia Contemporanea metà 900'
-
Riassunto prima metà del semestre