Guardiamo dentro un computer

STRUTTURA DI UN COMPUTER

Dentro il case di un computer è contenuta l’unità di elaborazione, nota come CPU (sigla che deriva dall’inglese Central Processing Unit). La CPU viene anche chiamata microprocessore. La CPU si trova su una scheda elettronica chiamata scheda madre o motherboard, che contiene altri dispositivi, indispensabili nella fase di elaborazione

LA CPU

– Regola il funzionamento del computer

– E' in grado di eseguire istruzioni semplici

– Realizza la funzionalità desiderata attraverso l'esecuzione di un programma, composto da un insieme di istruzioni semplici

Le Memorie

La scheda madre contiene, oltre alla CPU, la memoria cache, la memoria RAM, la memoria ROM e le schede di espansione che, grazie ad essa, sono messe in comunicazione tra di loro e con le periferiche.

Le memorie di un computer possono essere suddivise in:

-memorie centrali o principali (main memory)

-memorie di massa

-memorie USB

I dati contenuti in esse vengono misurati in byte. Ogni byte corrisponde circa ad un carattere, ed è formato da 8 bit.

La memoria centrale

Si tratta di un dispositivo elettronico che contiene un numero limitato di informazioni, e si divide in memoria RAM, ROM e cache.

RAM: Random Access Memory (Memoria ad accesso casuale); La memoria RAM contiene i dati e i programmi in corso di esecuzione. La RAM

- è volatile cioè mantiene i dati memorizzati solo fino a quando non si spegne l’alimentazione;

- è una memoria di lavoro: perché consente di memorizzare tutti i dati mentre lavoriamo

- è ad accesso casuale

 

ROM: Read-only memory (Memoria di solo lettura); contiene solo i programmi che fa accendere il computer, ed è chiamata in genere ROM BIOS.

-Memoria cache: svolge il compito di memorizzazione dei dati temporanei.

Le dimensioni della RAM sono legate alle continue evoluzioni tecnologiche, e ad ogni nuova versione si ha quasi sempre un raddoppio della memoria precedente e si misura in GByte, mentre la cache e la ROM sono di dimensioni più piccole.

Le memorie di massa

Le memorie di massa hanno lo scopo di conservare i programmi e i dati in modo permanente. Le memorie di massa più diffuse sono interne al case, tra cui l’hard disk, ma ne esistono anche esterne, perché possono essere collegate al computer: tra le memorie esterne ricordiamo il floppy disck, blu-ray-disc.

Le memorie USB

Le memorie USB (Universal Serial Bus) sono presenti da pochi anni sul mercato, ma sono diventate molto diffuse. Sono: portatili e hanno alte capacità di memoria anche dell’ordine delle centinaia di GByte.

 

Interfacce di Input/Output

– Sono utilizzate dalla CPU per interagire con l'esterno

Bus di sistema

– Insieme di linee elettriche che connettono CPU, Memoria e I/O

CPU, Memorie e Bus

La connessione tra CPU e RAM (ROM) avviene tramite le linee elettriche del BUS

• Le linee del BUS sono tutte digitali (valore “0” o “1”)

• La CPU, per scrivere sulla memoria, deve:

– Comunicare l'indirizzo di memoria a cui scrivere

– Comunicare il dato che vuole scrivere

– Inviare il comando di scrittura

• La CPU, per leggere dalla memoria, deve:

– Comunicare alla memoria l'indirizzo che intende leggere

– Inviare il comando di lettura

– “Prelevare” il dato dalla memoria

IBUS sono di tre tipi:
-ADDRESS BUS
-DATA BUS
-CONTROL BUS

Questi bus sono in grado di trasportare contemporaneamente un certo numero di bit.

 

L’ADDRESS BUS (Bus di indirizzo) (unidirezionale, da CPU verso l'esterno, normalmente 32 bit) sono le linee dove la CPU pone l’indirizzo
DATA BUS (Bus dei Dati) (Bidirezionale ad 8 bit quelli meno recenti): sono le linee  per il transito dei dati dalla CPU a Memoria e viceversa. Il numero di bit trasportati dal bus dati è un elemento usato per identificare le caratteristiche di una CPU, unitamente alla sua velocità espressa in Giga Hertz.Uno dei più recenti microprocessori ha un bus dati di 64 bit, cioè è in gradi di trasportare contemporaneamente ben 64 simboli binari.
CONTROL BUS (Bus di controllo) (bidirezionale, linee per attivare le funzionalità di lettura/scrittura da memoria e I/O): sono le linee dove la CPU invia i comandi di lettura/scrittura.
Vi sono anche i BUS esterni, che collegano la CPU alla memoria RAM e alle periferiche. I più noti sono: ISA, AGP, PCI express.

 

Quante linee hanno i bus?

 

Linee dati: 8;  con 8 bit si possono avere da  [0, 28 -1] = [0, 255] combinazioni
Linee di controllo: almeno 2, MEMR, MEMW

– (in realtà le linee di controllo sono molte)

Linee indirizzi: non c'è un vincolo, ma il loro numero influenza la dimensione massima della memoria

•  8 linee indirizzi: 2^8 = 256 byte

•  16 linee indirizzi: 2^16 = 65536 byte = 64KB

•  32 linee indirizzi: 2^32 = 4294967296 byte = 4 GB

• Le CPU dei moderni PC hanno 32 linee di indirizzi

 

La struttura interna di un computer segue lo schema generale della macchina di Von Neumann.

Un Personal Computer (che abbrevieremo con PC) è costituito da un'unità centrale, posta in un contenitore metallico detto CASE, e da una serie di componenti esterni che sono connessi per mezzo dei cavi all'unità centrale.

Dai dispositivi di ingresso(ad esempio la tastiera o il mouse) vengono prelevate le istruzioni, che attraverso la CPU vengono elaborate.
La CPU (Central Processing Unity) è il cuore del computer e ad esso è affidato il controllo di tutta la macchina.
Le istruzioni vengono inviate dalla CPU alla ALU (Aritmetic Logic Unity) per essere elaborate.
La ALU esegue tutte le operazioni e i dati o i risultati attraverso la CPU vengono inviati in memoria o prelevate dalla memoria.
A questo punto sempre la CPU invia i dati ai dispositivi di uscita (ad esempio lo schermo o la stampante) per comunicarli al mondo esterno.

Programmi o applicativi

L'informatica è l'insieme di apparecchiature e tecniche che consentono l'eleborazione automatica di dati e informazioni; cioè l'insieme delle conoscenze teoriche e pratiche che sono alla base di tale attività.

Intendiamo con Hardware tutto ciò che nel personal computer ha peso, è soggetto cioè alla legge di gravità;

con software tutto ciò che non ha peso, che costituisce quindi il contenuto informativo del sistema.

Una parte importante del software del sistema è costiuita dai programmi o applicativi: si tratta cioè di segmenti di codici che, eseguiti in sequenza, consentono di realizzare le operazioni per le quali siamo soliti utilizzare il PC (Personal Computer).

Un programma è una sequenza ordinata di istruzioni elementari, ciascuna delle quali determina la realizzazione di un'operazione elementare.

Come creare una presentazione con Power Point

Linguaggi di programmazione

I linguaggi di programmazione possono essere classificati come linguaggio ad alto livello, basso livello e linguaggio macchina.

 

Linguaggio ad alto livello

E' un linguaggio molto vicino all’uomo in quanto molte istruzioni sono la traduzione letterale dall’inglese della funzione che compiono. Ad esempio in Turbo C per stampare la frase HELLO WORLD basta scrivere la frase tra due virgolette e dentro una parentesi tonda preceduta da printf che vuol dire stampa e terminante con un punto e virgola che vuol dire che l’istruzione è finita.
Esempio:
printf(“HELLO WORLD”);
questa istruzione visualizzerà sullo schermo la frase HELLO WORLD.

Linguaggio a basso livello

E' un linguaggio intermedio nel senso che è più vicino alla macchina e non all’uomo. E’ conosciuto anche come linguaggio assembler ed è tipico di un microprocessore nel senso che ogni microprocessore ha un suo linguaggio assembler. Ad esempio alcune istruzioni del linguaggio a basso livello del microprocessore 8086 sono le seguenti:

a 100
MOV AL,3
MOV AH,5
ADD AL,AH
INT 3

Questo piccolo programma esegue la somma del contenuto del registro AL che vale 3 con il contenuto del registro AH che vale 5 e trasferisce il risultato della somma cioè il numero 8 nel registro AL.
In questo piccolo esempio si può notare che la somma tra due numeri viene eseguita come somma tra i contenuti dei registri.

Linguaggio macchina

E' il solo linguaggio che la macchina conosce, ed è una successione di zeri e di uni. In pratica nessun programmatore programma in linguaggio macchina.

HARDWARE E SOFTWARE

Il software rappresenta genericamente, l’insieme di programmi che consentono di gestire e utilizzare il computer stesso. Senza il software il computer sarebbe solo un ammasso di plastica e di metallo. Il software è dunque tutto ciò che è “soffice” e che non si può toccare.
Il software comprende:
• I sistemi operativi
• Le utility, o programmi di utilità (aggiungono funzioni di controllo a quelle di un programma o di un sistema operativo);
• I programmi per sviluppare altri programmi (compilatori, interpreti, ambienti di sviluppo e programmi di supporto per il programmatore);
• I programmi applicativi e quelli realizzati dall’utente
• I Tool (strumenti software) e più in generale, i pacchetti OPT (Office Productivity Tool)

Le categorie di software sono:
• Software di base o di sistema
• Software applicativo
Il software di base è costituito dall’insieme dei programmi che permettono di utilizzare e gestire il computer stesso.
Il software applicativo è l’insieme di tutti i programmi orientati alla soluzione di problemi specifici all’interno di particolare settori. Essi sono forniti dalla casa costruttrice del computer, oppure possono essere acquistati da aziende specializzate nella produzione.

Con il termine di HARDWARE si intende tutto ciò che nel Personal Computer ha peso, cioè i suoi componenti fisici.

Con il termine SOFTWARE si intende tutto ciò che non ha alcun peso, che costituisce quindi il contenuto informativo del sistema.

Un PROGRAMMA è una struttura ordinata di istruzioni, ciascuna delle quali realizza un'operazione elementare.

Il software viene distinto in software di base e software applicativo.
La differenzatra i due tipi di software è fondamentale:

il SISTEMA OPERATIVO fornisce tutte le informazioni e svolge tutte le attività utili a far funzionare il computer, mentre il SOFTWARE APPLICATIVO, appoggiandosi su quello di sistema, consente all'utente di eseguire particolari attività impartendo le proprie istruzioni.

Entrambi i tipi di software sono continuamente aggiornati e migliorati dai produttori: ogni loro nuovo lancio sul mercato rappresenta la nuova versione , o release, che in genere si distingue dalla precedente grazie ad un numero progressivo.

Ad esempio il sistema operativo della Microsoft, cioè Windows, è iniziato con:
Windows 95,
Windows 97,
Windows 2000,
per poi passare a Windows XP, Windows Vista e adesso l'ultima versione nata nel 2010, Windows 7.

Windows 7 cerca in tutti i modi di venirci incontro, offrendoci sempre più modi per ottenere un determinato risultato: da un lato conserva tutti i metodi ereditati dal mondo di Windows XP e Windows Vista, ma dall'altro offre tanti nuovi piccoli e grandi strumenti che, complessivamente, aumentano drasticamente la rapidità di azione.

Algoritmo

Prima di iniziare un programma bisogna eseguire il suo algoritmo o pseudocodifica e successivamente il suo Flow-Chart.

Un algoritmo è un insieme di istruzioni che conducono a risolvere un determinato problema, non necessariamente di natura matematica.

Esempio:

Vogliamo scrivere l'algoritmo che ci permette di calcolare la somma C=A+B

 

Algoritmo della somma:

- Inizio

-Inserire il  numero A

-Leggere il numero A

-Inserire il numero B

-Leggere il numero B

-Calcolare la somma tra A e B

- Assegnare il risultato della somma alla variabile C

-Stampare il risultato

Fine

 

ALGORITMO

Esempio di problema generico:

“ Dato un distributore automatico e un gettone, prelevare una bibita”.

La sequenza delle operazioni che portano al completamento dell’obiettivo è la seguente:

Inizio:

1) Verificare che il distributore sia in funzione (luce verde accesa);

2) In caso positivo, inserire il gettone nell’apposita fessura;

3) Selezionare una bibita tra quelle che presentano una luce rossa (distributore pieno);

4) Attendere la discesa della bottiglia;

5) Prelevare la bottiglia.

Fine

Questo è uno dei tanti problemi rappresentabili attraverso una sequenza ordinata di operazioni elementari.

Il Flow-Chart

Il Flow-Chart è la riproduzione dell'algoritmo di un problema tramite dei simboli:

- Il cerchio viene utilizzato per iniziare o finire il programma

- Il rettangolo per elaborare le istruzioni

- Il rombo per eseguire un controlllo o una selezione

-Il parallelogramma per le istruzioni di I/O

Struttura sequenziale

La struttura sequenziale svolge le operazioni una di seguito all’altra:

esempio:

Inizio

1) esegui istruzione 1

2) esegui istruzione 2

3) esegui istruzione 3

4) ………………….

5) Esegui istruzione n

Fine 

Struttura di selezione binaria

Struttura di selezione multipla

Modello di Von Neuman e modello di Harvard

 ESCAPE='HTML'
 ESCAPE='HTML'

ARCHITETTURA DI HARVARD

La struttura interna di un computer segue di solito lo schema generale della macchina di Von Neumann dove la memoria dati e la memoria dei programmi erano in un' unica memoria. Negli anni questo modello si è evoluto ed oggi  i computer più moderni che funzionano con il modello di HARVARD.

In un'architettura Harvard le memorie per i dati e per le istruzioni possono essere anche differenti, con tecnologia d'implementazione e timing diversi, in particolare in alcuni sistemi l'ampiezza degli indirizzi o la larghezza di parola delle istruzioni è superiore a quella dei dati, e in altri sistemi i programmi sono memorizzati in una memoria a sola lettura (ROM) mentre i dati sono normalmente in una memoria a lettura-scrittura (RAM).

In un'architettura classica di von Neumann la CPU legge le istruzioni e i dati dalla memoria utilizzando lo stesso bus, quindi quando la CPU carica un'istruzione non può contemporaneamente caricare anche un dato. In un'architettura di Harvard il processore è in grado di accedere in modo indipendente a dati e istruzioni dato che questi sono separati e memorizzati in memorie separate.

Un'architettura Harvard quindi può eseguire più compiti in parallelo dato che può parallelizzare le operazioni di lettura e scrittura della memoria. All'aumento di velocità si contrappone la presenza di circuiti più complessi all'interno del processore.

L'architettura di Von Neumann utilizza la medesima memoria sia per i dati che per le istruzioni.

Questa architettura:

-E' utilizzata di solito per processori general prupose

- Prevede un BUS UNICO tra CPU e memoria

- RAM (DATA MEMORY) e PROGRAM MEMORY devono quindi condividere lo stesso BUS, e quindi sia i dati che le istruzioni dei programmi devono avere la stessa lunghezza.

 Tutto ciò crea un COLLO DI BOTTIGLIA : il fatto di dover condividere un bus unico fa sì che per completare una istruzione siano necessari 2 accessi in memoria ( uno in RAM e uno in Program Memory) per cui si ha:

                                        

                                               una istruzione ogni 2 cicli di macchina.

 

GESTIONE DELLA MEMORIA CON L'ARCHITETTURA DI HARVARD

L'architettura di HARVARD si differenzia da quella di VON NEUMANN perchè la memoria dati è separata dalla memoria di programmi, cioè separa i dati dalle istruzioni. Tutto questo è ben noto al programmatore.

Questa architettura:

- E' utilizzata di solito per processori RISC (cioè con processori che hanno un ridotto numero di istruzioni), come ad esempio i PIC (Peripherical Interface Control)

- Prevede 2 BUS separati tra CPU, Program Memory e Data Memory

- RAM (Data Memory) e ROM ( Program Memory) possono avere parole di lunghezza diversa

Esempio: Alcuni PIC possono avere una RAM di 8 bit e una ROM di 12, 14 o 16 bit.

La CPU può effettuare un accesso in RAM e uno in ROM contemporaneamente e sfruttando tecniche di pipeline si può arrivare ad eseguire :

                                            

                                           una istruzione ogni ciclo macchina.

 ESCAPE='HTML'

Confronto tra architettura di Von Neumann e architettura Harvard

L'architettura di Von Neumann (o architettura Princeton) ha quindi:

-Vantaggio: flessibilità

-Svantaggio: lentezza, scarso parallelismo.

- Adatta per architetture general purpose

invece

l'architettura Harvard ha:

-Vantaggio: velocità, maggiore parallelismo negli accessi.

- Sicuramente più adatta a macchine RISC (ridotti set di istruzioni) e ad applicazioni Embedded

- Svantaggio: maggiori risorse ( Più memorie e più canali di comunicazioni).