Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Perché ?
• Acquisire conoscenze competenze e capacità
per scrivere consapevolmente software per:
•migliorare le prestazioni di un sistema
•premettere interoperabilità tra sistemi
•interfacciare sistemi software esistenti
•interfacciare hardware esistente
1
Informazioni generali sul corso
• Lezioni teoriche ed esercitazioni pratiche
• Prova scritta intermedia, progetto assembler e prova orale finale
• Testo adottato:
•William Stallings, "Architettura e organizzazione dei calcolatori. Progetto e
prestazioni (8ed)", Pearson Education Italia, ISBN: 978-8871925974
• Strumenti per sviluppo assembler:
• Arduino IDE: https://www.arduino.cc/en/software
• ATMEL Studio 7 per AVR: https://www.microchip.com/en-us/development-tools-
tools-and-software/microchip-studio-for-avr-and-sam-devices
• Approfondimenti:
•John Hennessy, David Patterson - Computer Architecture (6th Edition) - A
Quantitative Approach - Morgan Kaufmann 2017 - eBook ISBN: 9780128119068
Paperback ISBN: 9780128119051
• WEB: https://drive.google.com/drive/folders/1NJT5h6EGdK01pjGpJP8b0hZx_WVlohKW?usp=sharing
– AppuntiLezioni – Dispense integrative al libro di testo
– Slides – Pdf delle slides presentate a lezione
2
Cosa è un Computer
"Un computer digitale è una macchina in
grado di risolvere problemi eseguendo
istruzioni appositamente specificate"
3
Compilatori
Programma Programma Dati Risultati
COMPILATORE PROGRAMMA
OGGETTO
Sorgente Oggetto
Interpreti
PROGRAMMA SORGENTE
Dati Risultati
--------------------------------------
INTERPRETE
INTERPRETAZIONE
Livello 3
Livello 2
Livello 1
Livello 0
4
Sotto livelli di MV4:
• MV4.3 APPLICAZIONI TRANSAZIONALI
• MV4.2 GESTIONE DI TRANSAZIONI
• MV4.1 GESTIONE DI DATA BASE
• MV4.0 LINGUAGGI
Strutturazione a Moduli
Mi1
Mi2
STRUTTURA
DI
INTERAZIONE
Mij
5
Unità di Elaborazione
P.C. x Rete y
Combinatoria
condizioni comandi s s’
x P.O. y Buffer
clock
Modelli Matematici
Mealy
X Fs
Y(t) = Fy[X(t), S(t)]
S’
S(t+1) = Fs[X(t), S(t)] S buffer
Fy Y
Moore X Fs
Y(t) = Fy[S(t)] S’
S(t+1) = Fs[X(t), S(t)] S buffer
Fy Y
6
La Tecnologia Hardware – MV0
•Condiziona le prestazioni, il costo, l’architettura,
l’usabilità, l’affidabilità …
•Evolve rapidamente:
•valvole transistors IC LSI VLSI ULSI
•quadruplica le prestazioni ogni 3 anni
•Capacità di memoria
•Velocità del processore
I prodotti che compriamo oggi, domani saranno obsoleti
7
La legge di Moore
8
Diminuzione dei costi dei componenti
Volume di vendita
Raddoppiando il volume, diminuisce il costo di produzione
del 10%
Concorrenza
Stimolo per la ricerca e le ottimizzazioni.
MEMORIA PROCESSORE
9
Organizzazione di un Calcolatore
•PROCESSORE
FETCH DECODE EXECUTE
N.I.
•LINGUAGGIO PROCEDURALE
•Stabilisce a priori la sequenza delle operazioni
•Si basa sull’organizzazione lineare della memoria
10
Il Data Path nella Macchina di V. N.
Ciclo CPU:
1) FETCH
2) DECODE
3) SEARCH OP
4) LOAD OP
5) EXEC
6) Torna a 1
N.I.
11
Esecuzione delle Istruzioni (Esempio 2/2)
while (RUN) {
IR = memory[PC]; // Fetch istruzione, memorizzandola in IR
PC = PC + 1; // Prepara PC per Next Instruction (N.I.)
Opcode = get_Opcode(IR); // Decodifica tipo istruzione in Opcode
MAR = Search_Operand(1, IR, Opcode); // Search Operand 1:
// (-1 se non c’è operando 1)
if(MAR >=0) ALU_A = registry[MAR];
// Se operando esistente, fetch dati input
MAR = Search_Operand(2, IR, Opcode); // Search Operand 2:
// (-1 se non c’è operando 2)
if(MAR >=0) ALU_B = registry [MAR];
// Se operando esistente, fetch dati input
MAR = Search_Operand(3, IR, Opcode); // Search Operand Result:
// (-1 se non c’è operando 2)
AC = ALU_exec(Opcode, ALU_A, ALU_B); // Esegue istruzione
If(MAR >=0 registry [MAR] = AC // Store Result, se previsto
}
}
private static int get_Opcode(int istruzione) { … }
private static int Search_Operand (int N, int istruzione, int type) { … }
private static int ALUexec(int type, int data_A, int data_B) { … }
}
12
Evoluzione delle CPU
PRIME CPU con piccole e semplici istruzioni
Per avere CPU piu’ potenti:
Istruzioni piu’ potenti e complesse
Esecuzione piu’ rapida (FP, Autoincr., par. HW)
Sistemi piu’ costosi
Come mantenere la compatibilita’ anche con macchine
economiche (IBM)?
--> Interpretare le istruzioni complesse (Wilkes - 1951)
VANTAGGI DELL’INTERPRETAZIONE:
- poter correggere l’implementazione delle istruzioni
- aggiungere nuove istruzioni post-vendita
- progettazione strutturata istruzioni complesse
Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [25]
Successo microprogrammazione:
esempio 68000 vs Z8000
FATTORE CHIAVE:
- Control Stores ad altissima velocita’
13
Declino della microprogrammazione ?
Alla fine degli anni ‘70, quasi tutti i sistemi usavano la
microprogrammazione (punta massima = VAX)
Controcorrente erano i pionieri:
– ‘82 - Coke (IBM) con sistema sperimentale 801
– ‘82 - Patterson/Sequin (Berkley) con CPURISC I SPARC
– ‘84 - Hennessy (Stanford) con MIPS
Punti di forza:
– Pochi vincoli progettuali, non dovevano essere compatibili
– focus sulla “velocita’ di messa in esecuzione” (issue rate)
– poche istruzioni (50 = R.I.S.C. contro 300 = C.I.S.C)
– Istruzioni orientate al Data Path (direttamente su registri)
– Senza microprogrammazione esecuzione 10 volte piu’ veloce
dei CISC (velocita’ RAM Control Store)
Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [27]
14
Principi di progettazione RISC
I seguenti principi “RISC” sono stati ormai accettati:
• Istruzioni comuni eseguite direttamente in HW
• Iniziare più istruzioni possibili/secondo (issue rate)
• Ridondanza Unità funzionali piuttosto che tempo
esecuzione
• Rapidità di decodifica (istruzioni a lunghezza fissa)
• Memoria indirizzata solo da LOAD e STORE
• Disporre di molti registri (32)
• Parallelismo a livello di istruzioni ILP
Pipelining
15
Architetture Superscalari: Doppia Pipeline
Esempio i486:
•pipeline u = principale, esegue qualunque istruzione
•pipeline v = secondaria esegue solo istruzioni semplici su interi
se il compilatore riesce a riordinare le istruzioni
accoppiando istruzioni compatibili con u e v
raddoppio della velocità di esecuzione dei programmi
Architetture Superscalari
Unità Funzionali Multiple
16
Parallelismo a Livello di Processore:
Array Computer
Prestazioni 50 Mflops
17