Struttura di un Microcalcolatore
Sistemi Elettronici
Programmabili
Sistemi Elettronici Programmabili
4-1
Definizione di Calcolatore
• Un calcolatore moderno è una macchina elettronica (quanto
meno, in modo prevalente).
• È in grado di eseguire calcoli in modo automatico:
– prende in ingresso informazioni in formato digitale (o numerico)
– elabora le informazioni secondo le regole stabilite da una lista
predefinita di istruzioni macchina
– manda in uscita i risultati dell’elaborazione, come informazioni
in formato digitale
• La lista di istruzioni macchina che guida tutto quanto il
processo è il programma, e si trova nella memoria.
Sistemi Elettronici Programmabili
4-2
Unità (Sistemi) del Calcolatore
• Processore, per eseguire il programma, costituito da:
– unità aritmetica-logica (data path), per eseguire calcoli
– unità di controllo (control path), per controllarne l’esecuzione
• Unità di ingresso-uscita (o di input-output, I/O), per introdurre
dati ed emettere risultati, costituito da:
– una o più unità di solo ingresso (tastiera, mouse, ecc)
– una o più unità di sola uscita (video, stampante, ecc)
– una o più unità di ingresso e uscita (varie …)
• Unità di memoria, per contenere e conservare informazioni
(dati e programmi), costituito da:
– memoria cache – contiene dati e programmi in esecuzione
– memoria centrale – contiene dati e programmi in esecuzione
– memoria di massa – archivio di dati e programmi persistenti
• Sistema di collegamento: bus
Sistemi Elettronici Programmabili
4-3
Schema a blocchi
Sistemi Elettronici Programmabili
4-4
Micro (Processore, Calcolatore, Controllore)
CPU
Program
Memory
Data
Memory
IO
IO
Peripheral
Peripheral
μprocessore
μcalcolatore
μcontrollore
Sistemi Elettronici Programmabili
4-5
Processore e Memoria
• Processore e memoria sono i due sistemi
fondamentali del calcolatore (e sempre
necessariamente presenti).
• Il processore contiene svariati registri interni,
per comunicare con la memoria:
–
–
–
–
prelevare le istruzioni del programma
leggere da memoria i dati da elaborare
contenere i dati in elaborazione
scrivere in memoria i risultati dei calcoli
Sistemi Elettronici Programmabili
4-6
Istruzione e Dato
• L’elemento di informazione minimo trattato dal
calcolatore è la parola:
– parola: sequenza di bit 0 o 1 (p. es. 8, 16, 32 o 64 bit)
• Sia il dato (intero, carattere, ecc) sia l’istruzione
macchina sono codificati in parole, secondo varie
rappresentazioni.
• Dati e istruzioni complessi sono codificati mediante
sequenze di più parole.
• Il processore elabora parole e la memoria contiene
parole (e anche il sistema di I/O scambia parole).
Sistemi Elettronici Programmabili
4-7
Registri del Processore
• Contatore di programma (program counter, PC):
– punta all’istruzione da prelevare ed eseguire
• Registro di istruzione (instruction register, IR):
– contiene l’istruzione correntemente in esecuzione
(l’istruzione è codificata in forma numerica)
• Registri di uso generale o banco di registri (register
file, R0 – Rn1):
– contengono dati (e indirizzi) correntemente in uso
• Registro di indirizzo di memoria (memory address
register, MAR) e registro dei dati di memoria
(memory data register, MDR):
– servono per leggere e scrivere la memoria
Sistemi Elettronici Programmabili
4-8
Processore e Memoria
Collegamenti tra unità funzionali
e alcuni elementi strutturali interni.
Sistemi Elettronici Programmabili
4-9
Collegamento tra Unità - Bus
• Le unità funzionali fondamentali del calcolatore si
scambiano informazioni (istruzioni e dati) mediante
un organo di collegamento: il bus.
• Il bus è un fascio di fili che trasportano bit, cioè
informazioni (parole) codificate in forma binaria,
come sequenze di bit.
• Il calcolatore contiene un bus, e spesso più di uno con
funzioni più o meno specializzate.
Sistemi Elettronici Programmabili
4-10
Memoria Primaria
• La memoria primaria è destinata a contenere il
programma in esecuzione e i dati da elaborare.
• È formata da memoria cache e centrale, ed entrambe
sono sempre memorie elettroniche.
• La memoria cache, piccola e veloce, contiene la parti
attive di programma e i rispettivi dati, ed è
strettamente legata al processore.
• La memoria centrale, più grande e lenta, contiene il
resto del programma corrente e dei dati, ed è meno
legata al processore.
Sistemi Elettronici Programmabili
4-11
Ingresso e Uscita
• Il calcolatore dispone di un complesso di unità
funzionali per scambiare informazioni (dati e anche
programmi) con le unità di periferia (o periferiche).
• Per esempio: tastiera, video, puntatore (mouse),
stampante, sensori vari, attuatori vari, ecc.
• Le interfacce che collegano il calcolatore alle
periferiche vanno sotto il nome generico di porte (di
ingresso, uscita o entrambe, secondo i casi).
• Il sistema di ingresso-uscita (I/O) è molto vario, da
forme minimali a molto estese.
Sistemi Elettronici Programmabili
4-12
Architetture Interne dei Microprocessori
Sistemi Elettronici Programmabili
4-13
Relazioni tra bit, byte e word
Sistemi Elettronici Programmabili
4-14
Ruolo del Sistema Operativo
• Normalmente il calcolatore è equipaggiato con un
sistema operativo (SO).
• Il SO è un complesso di programmi che danno al
calcolatore funzionalità minimali:
– caricare e attivare uno o più programmi
– gestire le unità funzionali di memoria e I/O
– permettere l’esecuzione simultanea di due o più programmi
(processi): concorrenza
– permettere la compresenza di più utenti
– garantire affidabilità e sicurezza del calcolatore.
Sistemi Elettronici Programmabili
4-15
CARATTERISTICHE HARDWARE
• Lunghezza di parola
• Velocità
– Cicli macchina
– Clock
• Architettura
– Singolo bus
– Triplo bus
• Caratteristiche elettriche
– Alimentazione
– Dissipazione di potenza
Sistemi Elettronici Programmabili
4-16
CARATTERISTICHE SOFTWARE
• Set di istruzioni
– Architettura
– Gruppi
• Modi di indirizzamento
– Inerente
– Immediato
– Diretto
– Indiretto
– Implicito
– indicizzato
Sistemi Elettronici Programmabili
4-17
Il microcalcolatore
ADD (n-1)
ADD (n)
Decoder
nCS0
nOE
CPU
Flash
nWE
nOE
nWE
nCS1
nOE
RAM
nWE
Data
Sistemi Elettronici Programmabili
4-18
Microprocessore
DATA[DW:0]
Data
Register
Index
Register 0
Index
Register 1
Program
Caunter
General
Register 0
Mode
Register
Accumulator
General
Register 1
Stack Pointer
General
Register 2
Instruction
Decoder
ALU
Internal
Controls
Index
Register n
Address Logic
ADD[AW:0]
General
Register n
Address
Register H
Instruction
Register
Status
Sequencer
Address
Register L
CTRL
Interrupt
Control Unit
DMA Controls
Sistemi Elettronici Programmabili
4-19
Aritmetic Logic Unit - ALU
SEL
+
AND
IN1
ALU
IN2
XOR
OUT
Shift
Test
Sistemi Elettronici Programmabili
4-20
Program Sequencer
Decoder
Controls
Fetch
IN
(Decoder)
ALU
State
Logic
Output
Logic
OUT
(Controls)
CLK
Sistemi Elettronici Programmabili
4-21
Registers
Load
CLR
INC
OUT
IN
0
In
Load
Clear
Inc
General
Purpose
Register
0
CLK
0
CLK
1
Sistemi Elettronici Programmabili
0
4-22
ARCHITETTURA DEL SET
DATA BUS
ADD BUS
DATA REG
ADD REG
MBR
MAR
CON
TRO
L
CON
TRO
L
UN
I
T
UNI
T
R1
R2
ACC
ALU
Rn
ALU
Basata sull’accumulatore
Basata sui registri
Sistemi Elettronici Programmabili
4-23
Gruppi di istruzioni
•
•
•
•
•
•
•
Caricamento (MOV, LD, ST)
Aritmetiche (ADD, SUB,INC, DEC)
Logiche (AND, OR)
Salto condizionato o incondizionato (JMP)
Controllo (NOP, HALT)
Scorrimento (SR, SL, RR, RL)
Set e reset di bit
Sistemi Elettronici Programmabili
4-24
Linguaggi descrittivi
Register Transfer Instruction Set Register Transfer
Instructions basate
LD x
AC M[x]
sull’accumulatore
STO x
M[x] AC
ADD x
ACAC+ M[x]
SUB x
AC AC- M[x]
AND x
AC AC ^ M[x]
OR x
AC AC u M[x]
Sistemi Elettronici Programmabili
4-25
Esempio
w=x-y+z
Instructions
Initially
AC
?
M[100] M[101] M[102] M[103]
5
3
7
12
LD 100
5
5
3
7
12
SUB 101
2
5
3
7
12
ADD 102
9
5
3
7
12
STO 103
9
5
3
7
9
Sistemi Elettronici Programmabili
4-26
Set basato su AC/su registri
(Esempio scambio contenuto di due posizioni di memoria)
Posizioni x e y
Codice C++: temp = x
x =y
y = temp
Basato su AC
LD x
STO temp
LD y
STO x
LD temp
STO y
Basato su registri
LD R1 , x
LD R2, y
STO R1, y
STO R2, x
Sistemi Elettronici Programmabili
4-27
Struttura delle Istruzioni
Istruzione
PB
OPC
PRM 0
BA-1
BA
BA+1
PRM n-1
BA+1+i
BA+n+1
OPC:
OPerative Code è il codice che individua l’operazione da compiere
PB:
Pre Byte serve ad estendere il numero di operazioni individuate
dall’OPC. Il PB deve essere di diverso da qualsiasi OPC
PRM: PaRaMeter possono essere codici, dati o indirizzi di memoria
necessari al completamento dell’istruzione
BA:
Base Address indirizzo iniziale dell’istruzione in memoria
Sistemi Elettronici Programmabili
4-28
Estensione del set di istruzioni (OPC esteso)
OPC[7:0]
256 operazioni differenti
Per incrementare il numero di operazioni è possibile assegnare
all’OPC un numero maggiore di bit
OPC[15:0]
65535 operazioni differenti
Maggiore occupazione di memoria
(ogni istruzione occupa un byte in più)
Esecuzione più lenta
(ogni istruzione richiede un accesso aggiuntivo in memoria)
Esempi basati su opcode a 4 bit e indirizzi a 16 bit
Sistemi Elettronici Programmabili
4-29
Indirizzamento Inerente
L’operazione è completamente
specificata dal codice operativo e non
sono necessari parametri
Fetch
PC
Struttura dell’istruzione:
OPC
Execute
Sistemi Elettronici Programmabili
4-30
Indirizzamento Immediato
I parametri necessari all’esecuzione
sono inclusi nell’istruzione
Fetch
PC
Data
PC
Struttura dell’istruzione:
OPC
Data
Execute
Sistemi Elettronici Programmabili
4-31
Gestione Memoria
0x(00)00
Page 0x00
Es. ST7
LD A, 0F
Indirizzamento Diretto Corto
Page 0x01
LD A, 010F
Indirizzamento Diretto Lungo
Page 0x02
Es. Paging
0x(00)FF
0x0100
0x01FF
0x0200
0x02FF
0xFF00
SP 00
Set Page
LD A, 0F
Indirizzamento Diretto (Corto)
SP 01
Set Page
LD A, 0F
Indirizzamento Diretto (Corto)
Page 0xFF
0xFFFF
Sistemi Elettronici Programmabili
4-32
Indirizzamento Diretto
I parametri necessari all’esecuzione sono nella
locazione di memoria specificata nell’istruzione
BA
OPC
BA+1
ADD H
BA+2
ADD L
ADD
Dato
Struttura dell’istruzione:
OPC
ADD H
ADD L
ADD = {ADD H, ADD L}
Sistemi Elettronici Programmabili
4-33
Indirizzamento Diretto
Fetch
AR L
AR H
ADD H
ADD L
PC
BA
OPC
BA+1
ADD H
BA+2
ADD L
ADD
Dato
PC
PC
Data
AR
ADD = {ADD H, ADD L}
Execute
Sistemi Elettronici Programmabili
4-34
Indirizzamento Indiretto
I parametri necessari per l’esecuzione
sono nell’indirizzo di memoria
individuato dal “puntatore” specificato
nell’istruzione
BA
OPC
BA+1
PADD H
BA+2
PADD L
Struttura dell’istruzione:
ADD H
OPC
PADD H
PADD L
PADD
ADD L
Dato
ADD
ADD = {ADD H, ADD L}
Sistemi Elettronici Programmabili
4-35
Indirizzamento Diretto Indicizzato
I parametri necessari all’esecuzione
sono nella locazione di memoria
individuata a partire dall’indirizzo
specificato nell’istruzione modificato
con l’offset dato dal Registro Indice
codificato nell’OPC
OPC
IRi OFFSET
BADD H
+
BADD L
Struttura dell’istruzione:
OPC
BADD H
BADD L
ADD
Dato
ADD = {ADD H, ADD L}
Sistemi Elettronici Programmabili
4-36
Condizioni & Salti
Test
Condizione 0 = False
----------------------if(Condizione 0) Azione 0
Azione 0
else if(Condizione 1) Azione 1
-----------------------
Salto
-----------------------
else Azione 2
Test
Condizione 1 = False
-----------------------
Azione 1
-----------------------
Salto
--------------------------------------------Azione 2
while(Condizione) Azione
---------------------------------------------
for(Inizializzazione; Condizione; Azione) Azione
Sistemi Elettronici Programmabili
4-37
Salti
 Incondizionati
Quando viene incontrata una istruzione di
salto incondizionato il PC viene aggiornato
con il nuovo valore e l’esecuzione del
programma salta alla locazione specificata.
 Assoluti
Il salto è subordinato al verificarsi della
condizione specificata. Se la condizione
non è verificata il PC continua a scandire le
istruzioni secondo il loro ordine in
memoria.
 Relativi
Il PC salta direttamente alla locazione
specificata nell’istruzione di salto.
 Condizionati
Il PC salta ad una locazione calcolata in
base al valore corrente del PC.
Sistemi Elettronici Programmabili
4-38
Salto Assoluto Diretto
NextPC
OPC
Il nuovo valore del PC è specificato
nell’istruzione di salto.
OPC
Jump
Struttura dell’istruzione:
PC
Jump
PC H
PC H
PC L
PC L
OPC
OPC
PC = {PC H, PC L}
Sistemi Elettronici Programmabili
4-39
Salto Relativo Diretto
NextPC
Il salto è calcolato relativamente al
valore corrente del PC che viene
modificato del valore dell’Offset che
può essere negativo o positivo.
OPC
OPC
Jump
Struttura dell’istruzione:
Offset
Jump
+
PC
Offset
PC
OPC
OPC
OPC
PC = {PC H, PC L}
Sistemi Elettronici Programmabili
4-40
Altri Salti
 Indiretto Assoluto
 Indiretto Relativo
Sistemi Elettronici Programmabili
4-41
Ciclo Tipico di Lettura in Memoria
Sistemi Elettronici Programmabili
4-42
Scarica

Lucidi4__-_uCalcolatori_08