Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Informatica per la comunicazione, Appunti di Fondamenti di informatica

Appunti del corso di Informatica per la comunicazione (anno 2024/2025) svolto con il prof. Dondi integrati alle slide del corso e agli esercizi (con relativi diagrammi) svolti in classe. Consigliati per l'esame (Voto 30).

Tipologia: Appunti

2023/2024

In vendita dal 04/07/2025

mrstomlinson
mrstomlinson 🇮🇹

4.7

(3)

20 documenti

1 / 60

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica per la comunicazione
17/02
Termine informatica -> nel mondo anglosassone si usa il termine computer science.
“Informatica” deriva dal francese informatique: disciplina che si occupa dell’elaborazione
automatica di simboli (INFORMAZIONE)
oElaborazione perché l’informatica studia sistemi che sono in grado, più o meno
autonomamente, di elaborare determinate informazioni
oAutomatica di simboli perché l’informazione che gli elaboratori, che i computer
elaborano, è codificata in simboli
Il processo con cui si è arrivato agli elaboratori automatici è stato lugo e tortuoso, ma è
sempre stato un obbiettivo importante per l’umanità. Le ragioni che hanno spinto i
ricercatori a sviluppare questi metodi sono diversi vantaggi:
oTempi di elaborazione -> le macchine sono più veloci delle persone
oAffidabilità -> anche le macchine hanno mal funzionamenti, ma in genere sono più
affidabili delle persone
oElaborazione operazioni meccaniche -> le azioni che le macchine svolgono sono
ripetitive e non creative, si possono quindi automatizzare
Altra espressione utilizzata quando l’informatica incontra le tecnologie della
telecomunicazione -> Information & Communication Technology: abbiamo sistemi che non
servono solo a elaborare, ma anche a scambiare e trasferire dati da un punto all’altro.
Sviluppo dei sistemi automatici di elaborazione
Tentativi di costruire modelli automatici per il calcolo risalgono all’antichità (uno dei primi
tentativi è l’abaco): regolo calcolatore, stepped reckoner, pascalina -> nel XVII secolo per il
calcolo aritmetico.
I primi sviluppi interessanti si hanno nell’’800, e tre sono i momenti principali:
1. Progettazione, solo dal punto di vista teorico, del primo elaboratore con unità di
memoria (vengono memorizzati determinati dati) e unità di calcolo da parte di
Charles Babbage
2. Scrittura dei primi programmi grazie a A. King Lovelace, la prima programmatrice (in
generale, non solo donna)
3. G. Boole inventa un tipo di algebra chiamata booleana -> algebra che usa solo due
valori: ad esempio, vero o falso, uno e zero -> tutto quello che viene studiato può
avere solo due valori
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c

Anteprima parziale del testo

Scarica Informatica per la comunicazione e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

Informatica per la comunicazione 17/ Termine informatica -> nel mondo anglosassone si usa il termine computer science. “Informatica” deriva dal francese informatique : disciplina che si occupa dell’elaborazione automatica di simboli (INFORMAZIONE) o Elaborazione perché l’informatica studia sistemi che sono in grado, più o meno autonomamente, di elaborare determinate informazioni o Automatica di simboli perché l’informazione che gli elaboratori, che i computer elaborano, è codificata in simboli Il processo con cui si è arrivato agli elaboratori automatici è stato lugo e tortuoso, ma è sempre stato un obbiettivo importante per l’umanità. Le ragioni che hanno spinto i ricercatori a sviluppare questi metodi sono diversi vantaggi: o Tempi di elaborazione -> le macchine sono più veloci delle persone o Affidabilità -> anche le macchine hanno mal funzionamenti, ma in genere sono più affidabili delle persone o Elaborazione operazioni meccaniche -> le azioni che le macchine svolgono sono ripetitive e non creative, si possono quindi automatizzare Altra espressione utilizzata quando l’informatica incontra le tecnologie della telecomunicazione -> Information & Communication Technology : abbiamo sistemi che non servono solo a elaborare, ma anche a scambiare e trasferire dati da un punto all’altro. Sviluppo dei sistemi automatici di elaborazione Tentativi di costruire modelli automatici per il calcolo risalgono all’antichità (uno dei primi tentativi è l’abaco): regolo calcolatore, stepped reckoner, pascalina -> nel XVII secolo per il calcolo aritmetico. I primi sviluppi interessanti si hanno nell’’800, e tre sono i momenti principali:

  1. Progettazione, solo dal punto di vista teorico, del primo elaboratore con unità di memoria (vengono memorizzati determinati dati) e unità di calcolo da parte di Charles Babbage
  2. Scrittura dei primi programmi grazie a A. King Lovelace, la prima programmatrice (in generale, non solo donna)
  3. G. Boole inventa un tipo di algebra chiamata booleana -> algebra che usa solo due valori: ad esempio, vero o falso, uno e zero -> tutto quello che viene studiato può avere solo due valori

I momenti fondamentali della nascita dell’informatica li abbiamo nel ‘900, momento in cui vengono realizzati degli elaboratori.

  1. Il primo contributo è ancora teorico e venne proposto da Alan Turing che, nel 1936, propone un modello teorico. Turing in questo periodo sta studiando i limiti degli elaboratori automatici. Per dare una risposta a questo tema inventa un modello di elaboratore automatico ( macchina di Turing )
  2. K. Zuse nel 1941 crea il primo elaboratore funzionante che chiama Z1. Questo contributo non si diffonde molto
  3. EDVAC (Electronic Discrete Variable Automatic Computer) -> progetto realizzato negli USA da un gruppo di persone. All’interno di questo gruppo c’è un matematico, John Von Neumann. Insieme alla macchina viene costruito il suo schema, vengono quindi individuate le componenti principali che compongono la macchina. Siccome Von Neumann è il più celebre del gruppo, la macchina viene chiamata macchina di Von Neumann e, in un certo senso, si ispira alla macchina di Turing Altri momenti importanti nello sviluppo degli elaboratori o Anni ’50: introduzione di transistor o Anni ’60: produzione dei primi microprocessori, basati su circuiti integrati o Anni ’70: personal computer o Anni ’80: interfaccia grafica, legata alla disciplina che studia le modalità di interazione tra l’utente e i dispostivi Alan Turing Turing (1912-1954), matematico inglese, diede un contributo fondamentale alla nascita dell’informatica. È considerato il padre dell’informatica. Durante la Seconda guerra mondiale diede un contributo fondamentale anche all’ambito della criptografia, decifrando codici e costruendo sistemi automatici in grado di decifrarli. Macchina di Turing Nel 1936 Turing pensa ad un modello teorico che noi chiamiamo macchina di Turing. Lavora in un contesto in cui si cerca di capire se esistono limiti agli elaboratori automatici, introducendo il modello per l’elaborazione automatica dell’informazione. Immagina di automatizzare il processo di una persona che svolge delle operazioni su carta e, per farlo, introduce questa macchina. La macchina è costituita da: o un alfabeto, che comprende, fatto di simboli o un nastro diviso in tante parti, le celle: ogni cella può contenere un simbolo dell’alfabeto. Immagina che questo nastro sia biinfinito (infinito sia a dx che a sx)

certo insieme di dati, di trasformare questi dati, calcolare una soluzione. Il modo in cui risolviamo il problema (ci sono tante possibilità per risolverlo) si chiama algoritmo : indica quali sono le operazioni che dobbiamo fare per calcolare la soluzione di un problema. Il termine algoritmo deriva da un matematico persiano, al-Khwārizmī, il primo a formalizzare questo tipo di elaborazione. L’obiettivo dell’algoritmo è descrivere come facciamo a risolvere un problema.? L’algoritmo definisce la sequenza di istruzioni per elaborare i dati di input e produrre la soluzione (output) -> ad esempio, algoritmo per l’elevamento a potenza. Per essere davvero un algoritmo ci devono essere determinate proprietà: o finitezza -> è finito, non deve andare avanti all’infinito o eseguibilità -> devono esistere delle istruzioni di base che compongono la sequenza di base dell’algoritmo o correttezza -> l’algoritmo calcola davvero la soluzione giusta del problema o determinismo -> dato un certo valore input, l’algoritmo costruisce sempre la stessa risposta al problema Il concetto di algoritmo è legato a: o programma: algoritmo scritto in linguaggio comprensibile a un computer o processo: programma in esecuzione Nel momento in cui ho un algoritmo, da questo algoritmo possono discendere tanti programmi e ogni programma, quando in esecuzione, avrà tanti processi. Diagrammi di flusso Il loro scopo è descrivere gli algoritmi. Elementi costitutivi dei diagrammi di flusso: o Blocchi -> rappresentati con forme geometriche e rappresentano le fasi di un algoritmo o Linee di flusso -> collegano le fasi e descrivono il flusso dell’elaborazione nell’algoritmo, come l’elaborazione passa da un blocco a un altro Blocco di inizio e fine Blocchi di forma ovale che rappresentano l’inizio e la fine di un algoritmo. C’è un solo blocco di inizio (per garantire il determinismo), ma possono esserci più blocchi fine. Nel blocco inizio le frecce escono, in quello fine arrivano. Blocco operazione

Blocco a forma di rettangolo in cui scrivo l’operazione svolta. Arriva una freccia (o più) al blocco e ne esce una sola. Blocco di input e output La fase di input ha un parallelogramma come forma, la fase di output un “foglio” -> hanno quindi forme leggermente diverse. Nel primo blocco leggiamo un dato, nel secondo blocco quel valore lo restituiamo a qualcuno. Esempio: somma di due numeri -> Dall’inizio abbiamo la prima lettura (numero 1), poi abbiamo la seconda fase di lettura (numero 2). Si fa poi la somma ottenendo il risultato e lo restituiamo in output -> processo lineare. L’algoritmo deve avere la capacità di memorizzare dati. Un dato è una quantità di informazione memorizzabile ed elaborabile con una singola operazione. Il modo per memorizzare i dati è la variabile : contenitori di dati, spazio su un dispositivo di memoria. La variabile ha due caratteristiche: il nome (ad esempio, X) e il valore (ad esempio, 100). Il nome è fisso, il valore può cambiare. Variabili associate ad un tipo (il tipo di dati che contengono): o Int: numeri interi o String: stringhe di caratteri (frasi, parole) o Boolean: valori booleani; valori logici vero e falso Il valore contenuto in una variabile può essere modificato con un assegnamento. Nome <- < espressione > Esempio : a x assegno il valore 11

Un dato è un valore che possiamo modificare con un’unica operazione. Ci sono però alcuni casi in cui avere solo dei dati di questo tipo è limitante: ho bisogno di dati strutturati, ovvero che hanno una struttura (come quella di una tabella) che sono collegati tra di loro. Dati strutturati (immaginare una tabella): dati collegati per il tipo di informazione rappresentata. Il dato è costituito da tante parti, ma il nome è solo uno: bisogna capire come far riferimento alle singole parti (ad esempio, la tabella degli studenti totali di UNIBG e le singole parti sono studente1, studente2, eccetera). La variabile strutturata è utilizzata per memorizzare un dato strutturato. I dati strutturati sono di due tipi: o Vettore: sequenza lineare di celle o Matrice: tabella di celle Anche alle variabili strutturate associamo un nome: in questo caso x. Bisogna anche specificare il nome delle singole parti: uso il nome della variabile e al pedice in basso metto l’indice. Anche nel caso della matrice bisogna dare un nome: il nome della variabile (in questo caso x) e al pedice l’indice della riga e della colonna. Esercizio: scrivere un algoritmo che calcola la differenza tra il numero x e il numero y (da leggere in input)

Esempio lettura di 2 dati in input : scrittura di un vettore. Nella prima cella il primo numero; nella seconda cella il secondo numero; nella terza cella la somma tra i due numeri. 20/ Blocco di controllo per definire due strutture di controllo: istruzioni condizionali e iterazioni. Il blocco, dal punto di vista grafico, è rappresentato da un rombo. Arriva una (o più) freccia e ne escono più di una, creando dei percorsi: di sx e di dx. Tramite i blocchi di controllo possiamo iniziare a creare delle alternative. Si sceglie il percorso di dx o di sx in base a cosa c’è scritto all’interno del blocco di controllo, ovvero una condizione. All’interno dei blocchi di controllo facciamo dei confronti o tra il valore di una variabile e un numero o tra due variabili. Possiamo fare due confronti: numerici o tra stringhe, ovvero controlliamo che due stringhe sono uguali. Quando facciamo un confronto, l’esito della condizione può avere due possibilità: vero o falso (valore booleano). Operatori di confronto:

  • uguaglianza tra due valori che si scrive con due uguali (es. x = = y) -> è vera se hanno lo stesso contenuto: se x e y valgono 5 è vero; se x vale 3 e y vale 5 è falso. Se x e y contengono “promosso” è vero; se x contiene “promosso” e y contiene “assente” è falso.
  • disuguaglianza che controlla se due valori sono diversi (es. x! =y). Se x vale 3 e y vale 5 è vero; se x vale 3 e y vale 3 è falso.
  • < verifica se il primo valore è minore del secondo valore e > se è maggiore. X < y -> se x = 3 e y= 5 allore è vero; se x = 5 e y= 5 allora è falso. In modo analogo minore uguale (<=), maggiore uguale (>=) Operazioni logiche che cambiano i valori logici e altre operazioni che servono per combinare più confronti. Le operazioni logiche sono minimale perché tutti i possibili casi possiamo ricostruirli usando un numero minimale di operazione: Numero: una variabile -> il diagramma dovrà verificare se il contenuto è maggiore di 0.

o Se x = 101 e y = 102 è VERO Disgiunzione (I) è vera se almeno uno dei valori a cui è applicata è vero (sarebbe or in inglese). Tramite i blocchi di controllo possiamo costruire delle strutture non lineari ma che hanno delle alternative. Le due strutture di controllo che possiamo creare: o Diramazione: ho due alternative e seguo una in base a ciò che c’è scritto nel blocco di controllo o Iterazione (ciclo): c’è un processo che viene ripetuto un certo numero di volte e, quindi, si crea una struttura ciclica che si ripete finché succede qualcosa Diramazione -> la condizione è vero o falso; se la condizione è vera seguiamo una strada e se è falsa ne seguiamo una alternativa. Esempio : scriviamo un algoritmo che o Legge due numeri o Restituisce il numero massimo Esempio : (X>=100) I (x<y) o Se x = 101 è VERO o Se x = 101 e y = 102 è VERO o Se x = 99 e y = 102 è VERO o Se x =99 e y = 2 è FALSO Esempio : scriviamo un algoritmo che legge un numero in ingesso o Se n<100, stampa in output “n<100” o Se n>=100, stampa in output “n>=100”

Esempio : Diramazione: massimo tra tre numeri. Scriviamo un algoritmo che legge tre numeri e restituisce il numero massimo. 24/ Esempio : bilancio di un’azienda o Se bilancio >= 0, attivo o Se bilancio < 0, passivo Esempio : calcoliamo l’IVA di un prodotto o Se costo > 100, IVA 20% o Se costo <= 100, IVA 10%

Esempio per calcolare 2 x : scrivere un algoritmo che, usando sol le operazioni aritmetiche di base, legga un dato x e calcoli 2x. Questi (↑) erano i blocchi che precedono l’iterazione. All’interno dell’iterazione bisogna fare le moltiplicazioni per 2 x volte. Quando la condizione sarà vera si faranno due operazioni:

  1. Ogni volta che faccio l’iterazione moltiplico p x 2
  2. Siccome devo trenare traccia delle moltiplicazioni, ogni volta tolgo 1 valore da x (se x era 3, ad esempio, diventa 2) Esempio : scrittura di un algoritmo che legge un numero e lo memorizza nella variabile n; stampa n volte il testo “informatica”. Se nel blocco operazione ci fosse stato n <- n+1 stamperebbe all’infinito, creando un ciclo infinito. -> (mancano blocchi di inizio e fine). Ho il blocco input e memorizzo il numero che l’utente legge nella variabile x. C’è bisogno del blocco operazione per memorizzare 22…2. C’è bisogno di un’altra variabile (p) e nel blocco operazione ho la variabile p a cui assegno il valore 1 (per correttezza per evitare problemi nei calcoli).

Alla variabile p aggiorno il suo contenuto e contiene 2 x p. Alla variabile x assegno il valore x – 1. All’interno del rombo bisogna scrivere x >=1. Esempio di iterazione per calcolare xy^ -> invece di fare 2222 si fa xxxx y volte. I vettori sono sequenze di celle -> esercizio : dobbiamo leggere 10 numeri in input e ogni cella contiene un vettore. Seconda alternativa per risolvere l’esercizio con la variabile “i”. Ogni volta che si fa una moltiplicazione aggiungo 1. Mi fermo quando i raggiunge x. Ho una variabile p a cui assegno 1. Ho l’iterazione, il blocco di controllo. La variabile y è quella che mi dice quante volte devo fare l’iterazione, per questo nella condizione scrivo y>=1. Faccio poi due operazioni: o ogni volta che faccio l’iterazione tolgo 1 a y o il contenuto della variabile p lo moltiplico per x

Abbiamo un vettore composto da 10 celle (da v 0 a v 9 -> tabella a dx). Per trovare il valore massimo confronto i valori nella tabella e individuo una variabile max. Dopo aver messo il blocco inizio bisogna definire i valori delle due variabili: o i <- 0 o max <- v 0 (un valore qualunque del vettore v) Costruiamo poi l’iterazione, mettendo il blocco controllo (rombo) e imposto i due casi: il caso in cui la condizione è falsa e il caso in cui è vera. L’idea è che, quando faccio l’iterazione, ogni volta, controllo il contenuto di ogni cella -> mi fermo quando finiscono le celle. La condizione è quindi i <=9. Quando l’iterazione si concentra su una cella bisogna confrontarla con il massimo: ci sono quindi delle diramazioni -> si ha un altro rombo: bisogna capire se il massimo letto fino a questo punto è cambiato o no. Scrivo quindi vi > max. o Se la condizione è vera, in vi ho letto un numero più grande di tutti gli altri e aggiorno il blocco o Se è falsa non devo aggiornare nulla e metto il blocco di output: devo restituire max e fine  In entrambi i casi devo passare alla cella successiva, aumentando di 1 (i <- i + 1) Esercizio : scrivere un algoritmo per determinare la somma dei primi 5 numeri > 10 di un vettore. Ho un vettore e devo leggere le varie celle (tabella): 1 19– si 8 - no 2 11 - si 0- no 1-no 3 22-si 4 23- si V 0 12 V 1 10 V 2 19 è il max V 3 16 V 4 V 5 V 6 V 7 V 8 V 9

1-no 5 11- si Ho 3 variabili: i , t , h -> tutte con valore 0 (i <-0). La condizione può essere vera o falsa: o Per vedere se è vera devo leggere vi e vedere se è maggiore di 10. Anche questa diramazione può essere vera o falsa

  • Nel primo blocco operazione la variabile h diventa h + vi
  • t <- t+ in entrambi i casi scrivo i <- i+ o se è falsa devo restituire il blocco h Architettura dell’elaboratore Gli elaboratori vengono chiamati sistemi di elaborazione -> elaborazione perché elaborano per risolvere problemi. Il fatto che sono sistemi è importante perché si intende che quei dispostivi sono costituiti da tante componenti che svolgono diverse funzioni. Siccome abbiamo tante componenti che lavorano a cose diverse, abbiamo la necessità di prevedere un funzionamento coordinato. Ci rifacciamo al modello dell’ architettura di Von Neumann : definisce le componenti principali degli elaboratori (architettura definita all’interno del progetto EDVAC nel 1944). Caratteristiche dell’architettura di Von Neumann: o descrizione di un elaboratore universale -> risolve problemi di diverso tipo o elaboratori costruiti secondo l’architettura Turing equivalenti , ma queste risolvono i problemi più velocemente o dati e istruzioni sono memorizzati nello stesso dispositivo senza distinzioni o utilizzo dell’aritmetica binaria: numeri rappresentati come sequenze di 0 e 1 Architettura di Von Neumann rappresentata graficamente: PROCESSORE -> elabora e processa i dati (CPU). È l’unica unità di elaborazione/ che fa i calcoli. Il processore ha bisogno di un’alta componente: la memoria , che serve a memorizzare e contenere istruzioni e dati (2 tipologie di informazione) ed è divisa in celle, ognuna associata ad un indirizzo univoco (si può vedere come un vettore). INTERFACCIA INPUT/OUTPUT -> interfaccia con esterno (schermo, fotocamera, eccetera). Usiamo per dare comandi o per visualizzare un certo contenuto (monitor, stampante, ecc..). Quattro componenti. Le prime 3 devono scambiarsi dei dati grazie al bus di sistema: una linea che permette il passaggio di dati.

Sub (sottrazione) 0110 1001 Processori con codifiche identiche: compatibili. Per riuscire a costruire programmi abbastanza generali sono stati costruiti dei linguaggi formali (non linguaggio macchina): linguaggi di programmazione -> permettono la scrittura di programmi eseguibili da una macchina. I linguaggi di programmazione di alto livello (i più usati) definiscono operazioni più complesse delle istruzioni primitive e sono più simili ai comportamenti naturali. Problema: la macchina potrebbe non capire il linguaggio di programmazione di alto livello, è quindi necessario ci sia un processo di traduzione. Ci sono diversi tipi di traduttori, ad esempio il compilatore: traduce da un linguaggio di alto livello ad un linguaggio di macchina. Abbiamo il codice sorgente che il compilatore legge e traduce e da lì genera il codice eseguibile (traduzione di un programma scritto in alto livello a linguaggio macchina). 27/ La CPU è costituita da transistor. Ogni transistor può avere un segnale in uscita: o Tensione alta (circa 3,3 V) o Tensione bassa È importante che siano due perché l’aritmetica dei computer è binaria. Nello sviluppo delle CPU la quantità di transistor continua ad aumentare: più sono, più il potere di calcolo e memorizzazione migliore. Un ingegnere, Moore, formula una legge (legge di Moore): se noi guardiamo la produzione di CPU, quello che succede è che la quantità di transistor su una CPU raddoppia circa ogni due anni. La CPU, per funzionare, ha bisogno di avere delle piccole memorie, dei registri per la memorizzazione di istruzione e dati: o IR ( Instruction Register ) o PC ( Program Counter ) o PSW ( Process Status Word ) La CPU è suddivisa in 2 parti fondamentali: o ALU -> fa un certo tipo di istruzioni o Unità di controllo -> è la componente che controlla il ciclo macchina e la fase di elaborazione o Queste due componenti comunicano tra di loro ALU (Arithmetic Logic Unit) -> svolge tutte le elaborazioni logiche e aritmetiche o Operazioni aritmetiche: somma, sottrazione, moltiplicazione, divisione o Operazioni logiche; confronto di due dati -> =,<,>, AND, OR L’ALU è inoltre dotata di alcuni registri per la memorizzazione dei dati di input/output.

Unità di controllo -> coordina il funzionamento della CPU e trasferisce i dati dalla memoria. Ci sono due registri fondamentali dell’unità di controllo: o PC: registro contatore delle istruzioni. Al suo interno memorizza un indirizzo di una cella di memoria che al suo interno contiene un’istruzione che deve essere eseguita o IR: contiene una copia dell’istruzione da eseguire che è stata letta accedendo alla memoria. La CPU scrive una copia del codice dell’istruzione nel registro IR La CPU esegue 4 fasi in modo ciclico (ciclo macchina o ciclo CPU):

  1. Lettura
  2. Decodifica
  3. Esecuzione
  4. Scrittura Fase di lettura (la più importante perché fa capire il funzionamento della macchina): inizia il ciclo e la prima cosa che la CPU fa è andare a dare all’unità di controllo il comando di leggere quello che c’è scritto nel registro contatore (PC) -> c’è scritto un indirizzo di una cella di memoria. Comunica tramite i bus indirizzi alla memoria che vuole leggere quello che c’è scritto dentro il PC. L’informazione ricevuta dalla CPU e copiati nel registro si chiama IR. Se noi non cambiamo il contenuto del registro PC, al prossimo ciclo macchina continua a fare la stessa operazione.
  5. unità di controllo legge in PC l’indirizzo di memoria contente l’istruzione da eseguire
  6. contenuto di PC inviato alla memoria (bus indirizzi)
  7. memoria trasferisce il contenuto della cella all’indirizzo inviato (bus dati)
  8. dato inviato copiato in IR
  9. contenuto del PC viene incrementato (istruzione successiva) Fase di decodifica : le istruzioni hanno diverse parti. Hanno una prima parte (prefisso) che è il codice dell’istruzione. La prima cosa che viene fatta in questa fase è individuare la prima parte. Le altre parti sono invece i dati necessari per quell’istruzione; vengono quindi individuate le parti che specificano gli operandi. Fase di esecuzione : esecuzione dell’istruzione, in genere da parte della ALU. Va distinta che operazione viene fatta. Fase di scrittura : il risultato viene scritto in un registro interno alla CPU o nella memoria centrale. Non sempre questa fase di scrittura c’è. Esempio di funzionamento della CPU: (slide da 27 blocco 5) La velocità di elaborazione della CPU dipende dalla frequenza dei cicli macchina, dagli impulsi che l’orologio di sistema (clock) invia. Viene espressa in hertz, anche se attualmente si usano i gigahertz (GHz).