Microelettronica Corso introduttivo di progettazione di sistemi embedded Elementi per il progetto di un microprocessore prof. Stefano Salvatori A.A. 2016/2017 Eccetto dove diversamente specificato, i contenuti di questo documento sono rilasciati sotto Licenza Creative Commons Attribuzione 3.0 Italia. S. Salvatori - Microelettronica – marzo 2017 – (1 di 70) Sommario ● Evoluzione della tecnologia ● L'esecuzione di una istruzione – Programmazione strutturata ● Architettura e organizzazione di un microprocessore ● Progetto di un processore minimo ● – livello datapath – sintesi FSM Note sul progetto di un set di istruzioni – formato – tipi – modi di indirizzamento S. Salvatori - Microelettronica – marzo 2017 – (2 di 70) Intel 4004 2300 transistor S. Salvatori - Microelettronica – marzo 2017 – (3 di 70) La tecnologia di oggi S. Salvatori - Microelettronica – marzo 2017 – (4 di 70) Livelli di interconnessione S. Salvatori - Microelettronica – marzo 2017 – (5 di 70) Un processore di oggi > 109 transistor S. Salvatori - Microelettronica – marzo 2017 – (6 di 70) Legge di Moore Microprocessor Transistor Counts 1971-2011 & Moore's Law 16-Core SPARC T3 Six-Core Core i7 Six-Core Xeon 7400 2,600,000,000 Dual-Core Itanium 2 AMD K10 POWER6 Itanium 2 with 9MB cache AMD K10 1,000,000,000 AMD K8 Barton Pentium 4 Transistor count 8-core POWER7 Quad-core z196 Quad-Core Itanium Tukwila 8-Core Xeon Nehalem-EX Six-Core Opteron 2400 Core i7 (Quad) Core 2 Duo Cell Itanium 2 100,000,000 10-Core Xeon Westmere-EX curve shows transistor count doubling every two years 10,000,000 Atom AMD K7 AMD K6-III AMD K6 Pentium III Pentium II Il numero di transistor integrati in un chip raddoppia ogni anno AMD K5 Pentium 80486 1,000,000 80386 80286 100,000 68000 8088 8086 8085 6800 10,000 6809 Z80 8080 MOS 6502 8008 2,300 4004 80186 RCA 1802 1971 1980 1990 2000 2011 Date of introduction S. Salvatori - Microelettronica – marzo 2017 – (7 di 70) Legge di Moore Microprocessor Transistor Counts 1971-2011 & Moore's Law 16-Core SPARC T3 sor Transistor Counts 1971-2011 & Moore's Law Six-Core Core i7 Six-Core Xeon 7400 2,600,000,000 Dual-Core Itanium 2 AMD K10 POWER6 Itanium 2 with 9MB cache AMD K10 1,000,000,000 AMD K8 Barton Transistor count Pentium 4 Pentium 80486 80386 80286 100,000 68000 8085 6800 9 Dual-Core Itanium 2 AMD K10 POWER6 Itanium 2 with 9MB cache AMD K10 80186 6809 10-Core Xeon Westmere-EX 8-core POWER7 Quad-core z196 Quad-Core Itanium Tukwila 8-Core Xeon Nehalem-EX Six-Core Opteron 2400 Core i7 (Quad) Core 2 Duo Cell Itanium 2 AMD K8 Z80 8080 MOS 6502 8008 4004 10 8088 8086 10,000 Six-Core Core i7 Six-Core Xeon 7400 AMD K6 Pentium III Pentium II AMD K5 1,000,000 16-Core SPARC T3 Atom AMD K7 AMD K6-III curve shows transistor count doubling every two years 10,000,000 2,300 8-core POWER7 Quad-core z196 Quad-Core Itanium Tukwila 8-Core Xeon Nehalem-EX Six-Core Opteron 2400 Core i7 (Quad) Core 2 Duo Cell Itanium 2 100,000,000 10-Core Xeon Westmere-EX RCA 1802 Pentium 4 1971 1980 1990 curve shows transistor Date of introduction count doubling every two years Barton Atom 2011 2000 AMD K7 AMD K6-III S. AMD K6 Pentium III Salvatori Pentium II- Microelettronica – marzo 2017 – (8 di 70) Come lavora un processore: cenni sulla programmazione strutturata S. Salvatori - Microelettronica – marzo 2017 – (9 di 70) Il processore come macchina programmabile ● Un processore è un sistema elettronico in grado di eseguire un programma FF..FF16 instructions registers address data processor instructions and data memory 00..0016 S. Salvatori - Microelettronica – marzo 2017 – (10 di 70) Descrizione di un algoritmo input/output istruzione blocco di istruzioni condizione inizio/fine connessione S. Salvatori - Microelettronica – marzo 2017 – (11 di 70) Programmazione strutturata cond T cond F F T condizione sequenza ciclo while S. Salvatori - Microelettronica – marzo 2017 – (12 di 70) Esempio somma Addizione tra due numeri In A input In B C ←A+ B Out C assegnazione output end S. Salvatori - Microelettronica – marzo 2017 – (13 di 70) Esempio max Massimo tra due numeri In A , B T A>B max ← A F confronto max ← B Out max end S. Salvatori - Microelettronica – marzo 2017 – (14 di 70) max Esempio max ← 0 A←0 Ricerca massimo (-1 per uscire) A != -1 F T In A T A > max F max ← A Out max end S. Salvatori - Microelettronica – marzo 2017 – (15 di 70) Esercizi 1. Disegnare la struttura del ciclo for; 2. Disegnare la struttura del diagramma di flusso che descrive il lavoro svolto da un microcontrollore; 3. Disegnare il diagramma di flusso del lavoro svolto da un sistema a uC che risponda alle seguenti specifiche: • • • Acquisisca lo stato di un ingresso; Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; Una uscita deve diventare alta ogni 4 eventi. S. Salvatori - Microelettronica – marzo 2017 – (16 di 70) Esercizi 1. Disegnare la struttura del ciclo for; 2. Disegnare la struttura del diagramma di flusso che descrive il lavoro svolto da un microcontrollore; 3. Disegnare il diagramma di flusso del lavoro svolto da un sistema a uC che risponda alle seguenti specifiche: • • • Acquisisca lo stato di un ingresso; Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; Una uscita deve diventare alta ogni 4 eventi. S. Salvatori - Microelettronica – marzo 2017 – (17 di 70) Ciclo for i ← iniz cond. i F T modif. i S. Salvatori - Microelettronica – marzo 2017 – (18 di 70) Ciclo for i ← iniz cond T F cond. i F T modif. i ciclo while S. Salvatori - Microelettronica – marzo 2017 – (19 di 70) Ciclo for: esempio for(i = 3600000 ; i>0; i­­) { ... } I ← 3600000 i>0 F T i = 3600000; while(i>0) Ciclo while { equivalente ... i­­; } i←i-1 S. Salvatori - Microelettronica – marzo 2017 – (20 di 70) Ciclo for: esempio blocco di istruzione eseguite ad ogni ciclo for(i = 3600000 ; i>0; i­­) { ... } I ← 3600000 i>0 F T Assegnazione iniziale i←i-1 Condizione per rimanere nel ciclo Operazione di aggiornamento alla fine di un ciclo S. Salvatori - Microelettronica – marzo 2017 – (21 di 70) Esercizi 1. Disegnare la struttura del ciclo for; 2. Disegnare la struttura del diagramma di flusso che descrive il lavoro svolto da un microcontrollore; 3. Disegnare il diagramma di flusso del lavoro svolto da un sistema a uC che risponda alle seguenti specifiche: • • • Acquisisca lo stato di un ingresso; Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; Una uscita deve diventare alta ogni 4 eventi. S. Salvatori - Microelettronica – marzo 2017 – (22 di 70) Ciclo per un uC start iniziallizz. Ciclo infinito true F T funzione end S. Salvatori - Microelettronica – marzo 2017 – (23 di 70) Ciclo per un uC ... //istruzioni di inizializzazione while(1) { ... //istruzioni eseguite dal // uC durante il suo lavoro } start iniziallizz. true F T funzione end S. Salvatori - Microelettronica – marzo 2017 – (24 di 70) Esercizi 1. Disegnare la struttura del ciclo for; 2. Disegnare la struttura del diagramma di flusso che descrive il lavoro svolto da un microcontrollore; 3. Disegnare il diagramma di flusso del lavoro svolto da un sistema a uC che risponda alle seguenti specifiche: • • • Acquisisca lo stato di un ingresso; Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; Una uscita deve diventare alta ogni 4 eventi. S. Salvatori - Microelettronica – marzo 2017 – (25 di 70) “4 eventi” Specifiche: • • • evento Acquisire lo stato di un ingresso; Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; IN = 0 F Aspetta che l'input “esca” dallo stato basso T Una uscita deve diventare alta ogni 4 eventi. return Qui c'è stato il fronte positivo Att.ne: che succede se rientro “troppo presto”? S. Salvatori - Microelettronica – marzo 2017 – (26 di 70) “4 eventi” evento IN = 0 fine “test” F T return Inizio “test” Inizio nuovo “test” IN: Così uscirei subito ma in realtà non c'è stato il nuovo fronte positivo S. Salvatori - Microelettronica – marzo 2017 – (27 di 70) “4 eventi” Specifiche: • • • evento Acquisire lo stato di un ingresso; Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; IN = 0 F Aspetta che l'input “esca” dallo stato basso T Qui c'è stato il fronte positivo Una uscita deve diventare alta ogni 4 eventi. IN = 1 T F Aspetta che l'input torni nello stato basso return S. Salvatori - Microelettronica – marzo 2017 – (28 di 70) • • • “4 eventi” start Specifiche: true Acquisire lo stato di un ingresso; Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; Una uscita deve diventare alta ogni 4 eventi. end T out ← 0 e←0 e<4 evento F IN = 0 F T T evento IN = 1 e←e+1 out ← 1 T return S. Salvatori - Microelettronica – marzo 2017 – (29 di 70) F Architettura e organizzazione di un microprocessore S. Salvatori - Microelettronica – marzo 2017 – (30 di 70) Architettura e organizzazione di un uP ● ● ● ● Un computer general purpose consiste in un sistema denominato: computer digitale con programma memorizzato La tecnologia microelettronica ha consentito di integrare milioni di MOS su un solo chip dando luogo alla nascita di sistemi ultraveloci e di complessità sempre più alta Il progresso nel campo dei uP non si è avuto solo grazie al progresso tecnologico Allo sviluppo hanno certamente contribuito le capacità degli ingegneri in grado di definire sia l'architettura che l'organizzazione di un microcomputer S. Salvatori - Microelettronica – marzo 2017 – (31 di 70) Architettura e organizzazione di un uP ● ● Architettura: descrive il computer dal punto di vista dell'utente ● Set delle istruzioni ● Registri disponibili ● Gestione della memoria ● Gestione delle eccezioni … Organizzazione: descrive come è implementata l'architettura ● Struttura della pipeline ● Chache ● Soluzioni hardware ... S. Salvatori - Microelettronica – marzo 2017 – (32 di 70) Programma memorizzato ● Un processore è un automa che esegue istruzioni scritte nella memoria programma FF..FF16 instructions registers address data processor instructions and data memory dati e programma sono immagazzinati nella stessa memoria le istruzioni sono trattate come i dati (questo può anche portare a un codice che si auto-modifica) 00..0016 Lo stato del sistema è determinato dai valori memorizzati in locazioni di memoria e in registri interni al uP ogni istruzione definisce le modalità di cambiamento dei dati e quindi dello stato essendo programmabili, i uP risultano dispositivi universali, potendo eseguire qualunque algoritmo S. Salvatori - Microelettronica – marzo 2017 – (33 di 70) Astrazione nella progettazione ● ● ● ● I uP sono dispositivi che integrano milioni di MOS che operano a velocità elevatissima. I dispositivi commutano milioni di volte al secondo. Il sistema deve operare in modo ripetibile e controllato per non cadere in uno stato imprevisto (collasso). Come può essere progettato un sistema tanto complesso? – → livelli di astrazione che abbiamo visto S. Salvatori - Microelettronica – marzo 2017 – (34 di 70) Elementi fondamentali di una CPU incrementer PC ... DECODER MAR AI BUS ESTERNI IR MDR R0 REG FUNZ SR R1 ALU BANCO DI REGISTRI Rn REG S. Salvatori - Microelettronica – marzo 2017 – (35 di 70) Il processore minimo ● Il tipo più semplice di processore prevederà: • un PC, Program Counter, per puntare all’istruzione da eseguire • un IR, Instruction Register, che mantiene il codice dell’istruzione da eseguire • un registro, Accumulatore, in grado di immagazzinare il dato su cui lavorare in un certo istante • una ALU, Arithmetic Logic Unit, in grado di eseguire operazioni elementari • una unità di decodifica e controllo che imposterà le azioni in funzione dell’istruzione MU0..6 S. Salvatori - Microelettronica – marzo 2017 – (36 di 70)