sistemi
Organizzazione dei di calcolo
Indice
Calcolatori elettronici
Modello di Von Neuman
Scheda Madre
CPU Registri
Data path
Formato delle Istruzioni
CISC vs RISC
Esecuzione delle istruzioni
Interruzioni
Trap
Interrupt
Dispositivi di I/O
Tecniche di I/O
Hard Disk
RAID
SSD
Dischi ottici
Scheda Video
Scheda Audio
Stampanti
Sistemi Embedded
Parallelismo a livello di istruzioni e di processore
La legge di Moore
Pipeline
Architettura Superscalare
Trattamento dei Salti
Categorie di calcolatori con Tassonomia di Flynn
Multiprocessore
Multicomputer
SMP
Organizzazione dei sistemi di calcolo
Calcolatori elettronici
I calcolatori elettronici si possono classificare tenendo presente:
• la potenza di calcolo e la loro capacità di memorizzazione
• l’ambiente e lo scopo per cui sono utilizzati
In generale si distinguono:
personal computer: usati come elaboratori di testo, Internet, banche dati, strumenti da ufficio ecc.
workstation: usati per il calcolo e la programmazione, per la grafica avanzata e la ricerca
mainframe: grandi aziende, banche, gestione di complesse reti di computer e di apparecchiature, applicazioni gestionali
network computer: computer collegati in rete condividendo dati (dischi) e altre risorse. I “terminali” sono postazioni
prive di capacità di elaborazione, dotate solo di monitor e tastiera e collegate ad un computer centrale di cui sfruttano la
CPU e la memoria.
Architettura dei calcolatori e dei dispositivi di Input/Output
L’architettura (o schema di progettazione) di calcolatori elettronici su cui si basano i moderni PC è un’estensione
dell’architettura ideata dal matematico John Von Neumann.
L’architettura di Von-Neumann (estesa) comprende:
• CPU
• ROM
• RAM
• Dispositivi di I/O:
o Monitor
o Hard Disk
o Drive CD/DVD
o Stampanti
• BUS
Scheda Madre
In un calcolatore, la scheda madre raccoglie la circuiteria elettronica di interfaccia fra le componenti principali, tra
queste e i bus di espansione e le interfacce verso l’esterno. E’ responsabile della trasmissione e temporizzazione
corretta dei segnali.
I principali componenti montati sulla motherboard sono:
o Processore
o RAM
o ROM(BIOS)
o Scheda video, audio
I principali componenti connessi tramite cavi sono:
o hard disk
o Lettore DVD
o Alimentatore
o Slot USB, ecc.
CPU
La CPU esegue le istruzioni di un programma (che deve essere presente in memoria RAM/ROM/cache).
Durante l’esecuzione, la CPU legge o scrive dati dalla/nella memoria; il risultato dell’esecuzione dipende dal dato su cui
opera e dallo stato interno della CPU stessa, che tiene traccia delle operazioni.
Elementi fondamentali:
Registri: locazioni di memoria interne alla CPU, molto veloci. Il valore complessivo di tutti i registri della CPU costituisce
lo stato in cui essa si trova in un determinato istante.
ALU (Arithmetic Logic Unit): esegue le operazioni logiche e aritmetiche
Unità di controllo (CU): preleva dalla memoria le istruzioni, le decodifica, se occorre preleva i dati necessari, esegui
l’istruzione ed eventualmente memorizza il risultato salvandolo in memoria o in un registro.
I registri del processore possono essere:
visibili all’utente:
• disponibili per tutti i programmi
• permettono di ridurre gli accessi alla memoria principale
• tipicamente sono:
o dati ▪ general purpose
▪ dedicati (ad uno scopo)
o indirizzi (es index register, segment pointer, stack pointer)
o codici di condizione (flag – parzialmente visibili)
di stato e di controllo:
• memorizzano l’esito delle operazioni
• solo alcuni programmi possono averne accesso in modalità di controllo o di sistema operativo
Scambio dati con la memoria:
MAR (Memory Address Register): indirizzo di riferimento alla memoria
MDR (Memory Data Register): dati provenienti/da inviare alla memoria
Scambio di dati con i moduli di I/O:
I/O AR (Input Output Address Register): specifica dispositivo di I/O
I/O BR (Input Output Buffer Register): contiene i dati da scambiare col dispositivo
Esecuzione delle istruzioni:
PC (Program counter): indirizzo della successiva istruzione da eseguire (è un puntatore)
IR (Instruction Register): istruzione corrente
Controllo dell’esecuzione:
PSW (Program Status Word) informazioni di stato (abilitazione/disabilitazione di interrupt, bit selezione SU o
utente); alcune info sono specifiche per un SO
Data path in una macchina di Von Neumann
La figura mostra com’è organizzata internamente una parte, chiamata percorso dati (data path), di una tipica CPU di
Von Neumann; essa è composta dai registri (generalmente da 1 a 32), dalla ALU (Arithmetic Logic Unit, “unità
aritmetico-logica”) e da alcuni bus che connettono fra loro le diverse parti. I registri alimentano due registri di input
della ALU (indicati nella figura con le lettere A e B) che mantengono i dati d’ingresso della ALU mentre questa è
occupata nell’esecuzione di alcune computazioni. Il percorso dati riveste una grande importanza in tutte le macchine e
nel corso del libro lo tratteremo in m odo approfondito. La ALU esegue alcune semplici operazioni sui suoi input, come
addizioni e sottrazioni, e genera un risultato che viene memorizzato in un suo apposito registro di output. Questo valore
può essere successivamente immagazzinato in uno dei registri della CPU che, volendo, può essere copiato in memoria in
un secondo momento.
La maggior parte delle istruzioni può essere divisa in due categorie principali: le istruzioni registro-memoria e quelle
registro-registro. Le “parole” sono le unità di dati che vengono spostate tra la memoria e i registri; una parola potrebbe
essere un intero. Il processo che consiste nel portare i due operandi attraverso la ALU e nel memorizzare il risultato è
chiamato ciclo del percorso dati e rappresenta il cuore della maggior parte delle CPU. Con buona approssimazione si
può dire che definisca che cosa sia in grado di fare una macchina; inoltre più veloce è il ciclo del percorso dati, maggiore
risulta la velocità del calcolatore.
I processori possono implementare al loro interno più unità di esecuzione per eseguire più operazioni
contemporaneamente. Questo approccio incrementa le prestazioni delle CPU ma ne complica l’esecuzione: per poter
eseguire in modo efficiente più operazioni in parallelo la CPU deve poter organizzare le istruzioni.
La possibilità di disporre di più CPU permette al sistema operativo di far eseguire in parallelo più programmi
aumentando notevolmente le prestazioni (multi threading).
ISTRUZIONI
Un programma è una sequenza di istruzioni.
Un’istruzione è un comando; eventualmente opera su dati.
Tipi di istruzioni:
• trasferimento:
o processore - memoria (e viceversa)
o processore - modulo I/O (e viceversa)
• elaborazione dati (operazioni logico-aritmetiche)
• controllo (modifica della sequenza di esecuzione)
Un’istruzione può anche essere una combinazione delle precedenti possibilità. Il set di istruzioni (ISA) dipende dal
processore.
Formato delle istruzioni (esempi)
8 bit: codice operativo 4 bit: n registro 20 bit: indirizzo parola RAM
Trasferimento registri <-> RAM
Operazioni aritmetiche (somma, differenza, moltiplicazione e divisione utilizzando i registri come operandi)
Confronto: paragona il contenuto di 2 registri R e R e:
i j
• se R < R mette -1 nel registro RC
i j
• se R = R mette 0 in RC
i j
• se R > R mette 1 in RC
i j
GAP semantico
Un linguaggio di alto livello deve essere compilato affinché possa essere eseguito da un calcolatore. La differenza tra il
linguaggio di alto livello e il linguaggio macchina rappresenta il GAP semantico.
Ci sono quindi due possibili interpretazioni della questione:
• avere un’architettura molto complessa che includa un numero elevato di istruzioni e modi di indirizzamento e
che includa anche istruzioni molto vicine a quelle presenti nel linguaggio di alto livello (CISC – Complex
Instruction Set Computer)
Esempi di sistemi basati su architettura CISC sono System/360, VAX, PDP-11, la famiglia Motorola 68000,
l'architettura x86 di Intel e AMD.
• semplificare il set di istruzioni e adeguarlo alla necessità dell’utente (RISC - Redox). L’architettura RISC è anche
detta load-store poiché solo queste due istruzioni permettono di operare sulla memoria, in contrasto con
l’architettura CISC.
Ampiamente utilizzata nei processori MIPS (Console portatili) e ARM (Smartphone).
Esecuzione dell'istruzione
La CPU esegue ogni istruzione compiendo una serie di piccoli passi che, in linea generale, possono essere descritti nel
seguente modo:
1. prelevare la successiva istruzione dalla memoria per portarla nell’IR
2. modificare il PC per farlo puntare all’istruzione seguente
3. determinare il tipo dell’istruzione appena prelevata
4. se l’istruzione usa una parola in memoria, determinare dove si trova
5. se necessario, prelevare la parola per portarla in un registro della C PU
6. eseguire l’istruzione
7. tornare al punto 1 per iniziare l’esecuzione dell’istruzione successiva.
Spesso ci si riferisce a questa sequenza di passi con il termine di ciclo esecutivo delle istruzioni, o ciclo di prelievo-
decodifica-esecuzione. Essa ha un’importanza centrale nel funzionamento di qualsiasi calcolatore.
L’esecuzione di un’istruzione attraverso le seguenti fasi:
1. INSTRUCTION FETCH: (acquisizione dell’istruzione): il processore preleva l’istruzione dalla memoria, specificata
dal registro PC e la carica nell’IR; incrementa il valore del PC
2. INSTRUCTION DECODE: (decodifica dell’istruzione): dall’istruzione prelevata viene determinata quale
operazione debba essere eseguita e come ottenere gli operandi mediante la conoscenza dei codici operativi
(operazione svolta dalla Control Unit)
3. INSTRUCTION EXECUTE: (esecuzione dell’istruzione): viene eseguita la computazione richiesta
4. MEMORY ACCESS: nel caso in cui l’istruzione richieda un accesso alla memoria, questa fase sostituisce o segue
la precedente
5. WRITE BACK: il risultato viene scritto in memoria.
Interruzioni
Le interruzioni sono dei segnali che consentono di interrompere la normale elaborazione del processore.
La loro funzione principale è di migliorare l’efficienza dell’elaborazione: quando viene richiesta un’operazione di I/O, il
processore può continuare con l’elaborazione. Quando l’operazione termina, il dispositivo segnala l’evento al processore
con un segnale di interruzione.
Le interruzioni possono essere di due tipi:
- interrupt: generate da un dispositivo hardware;
- trap: generate da un programma in esecuzione.
Vi sono diverse classi di interruzione:
• Programma: derivanti da un errore di esecuzione (overflow, divisione per 0, …)
• Timer: operazioni pianificate
• I/O
• Errore hardware (ad esempio caduta di tensione).
TRAP:
Una trap è una chiamata di procedura automatica effettuata quando si verificano condizioni causate da un programma.
Ne è un esempio l’overflow: se il risultato di un’operazione aritmetica eccede il più grande numero rappresentabile, si
verifica una trap, ovvero il controllo del flusso viene interrotto e riprende da una locazione di memoria prefissata, invece
di proseguire in sequenza. In tale locazione di memoria si trova l’indirizzo per un salto ad una procedura detta gestore di
trap, che svolge azioni appropriate come ad esempio la stampa di un messaggio di errore.
Il concetto chiave delle trap è che sono fatte scattare da condizioni eccezionali causate dal programma e sono rilevate
dall’hardware o dal microprogramma.
La verifica potrebbe anche essere inserita nel programma dal programmatore, ma significherebbe inserire un controllo
dopo ogni operazio
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.
-
Organizzazione sanitaria
-
Organizzazione aziendale
-
Organizzazione aziendale
-
Organizzazione dei sistemi informativi