Microelettronica Corso introduttivo di progettazione di sistemi embedded

Documenti analoghi
Microelettronica Corso introduttivo di progettazione di sistemi embedded

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Il processore minimo MU0. S. Salvatori - Microelettronica marzo 2019 (50)

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Microelettronica. Introduzione al progetto di un microprocessore. Stefano Salvatori. Università degli Studi Roma Tre.

Instruzione Opcode Effetto

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Architettura dell elaboratore

Architettura dell elaboratore

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Calcolatore: sottosistemi

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Capitolo 5 Elementi architetturali di base

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura del processore e esecuzione delle istruzioni

Architettura del Calcolatore

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Componenti di un processore

Architettura dei computer

Architettura del Calcolatore

Sistemi e reti CPU Concetti di base

Architettura dei computer

Architettura del. Calcolatori (1) Calcolatori (2) L architettura di Von Neumann. CPU RAM Memoria I/O. secondaria. bus

FONDAMENTI DI INFORMATICA Lezione n. 10

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

Ciclo del Processore. Memoria

Architettura dei Calcolatori Elettronici

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche

(a) INTRODUZIONE ALLE ARCHITETTURE E ALLA SIMULAZIONE VERILOG DI PROCESSORI

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

FONDAMENTI DI INFORMATICA Lezione n. 10

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Struttura di un elaboratore

Ciclo del Processore. Memoria

Formato delle istruzioni Tipi di istruzione Modi di indirizzamento CISC vs RISC Pipeline Note sui RISC

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Il Processore: l unità di controllo

Architettura dei calcolatori

Terza lezione 21 ottobre 2016

Fondamenti di Informatica A. A / 1 9

Architettura di un elaboratore

Architettura del calcolatore (Seconda parte)

Sistemi di Elaborazione delle Informazioni

Elementi di informatica

architettura degli elaboratori Alberto Ferrari Alberto Ferrari Informatica e Laboratorio di Programmazione

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O

Architettura di un calcolatore: introduzione

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

Architettura dell elaboratore

Microelettronica. Note su RISC. Stefano Salvatori. Università degli Studi Roma Tre. Università degli Studi Roma Tre

Architettura di von Neumann

Architettura hardware

Il processore - CPU (CENTRAL PROCESSING UNIT)

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Ogni CPU è in grado di eseguire un insieme limitato di istruzioni macchina codificate in binario secondo il seguente schema generale.

DEC PDP8, III Generazione, '65-'75

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Architettura di un calcolatore: primi cenni introduttivi

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

Elementi di Architettura

Componenti principali

Cenni sull architettura del calcolatore

Macchina di Riferimento: argomenti

Architettura. Argomenti. Modello di Von Neumann. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Antonio Coronato. Modello di Von Neumann

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

Esercitazione 11. Control-Unit. Data-Path

Capitolo 2. Elaborazione dei dati. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Un quadro della situazione. Lezione 28 Il Processore: unità di controllo (2) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Architettura degli Elaboratori

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

Tecniche della Programmazione, , Parte1

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2

6: Macchina di Von Neumann

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Macchina di von Neumann/Turing

Il Processore. Informatica di Base -- R.Gaeta 27

Il processore: unità di elaborazione

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Abilità Informatiche e Telematiche

Architettura degli Elaboratori

Architettura di un calcolatore e ciclo macchina. Appunti per la classe 3 Dinf

I registri A, B, T contengono dati su cui è possibile eseguire operazioni elementari da parte dell ALU;

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Transcript:

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 > 10 9 transistor S. Salvatori - Microelettronica marzo 2017 (6 di 70)

Legge di Moore Microprocessor Transistor Counts 1971-2011 & Moore's Law 2,600,000,000 1,000,000,000 Six-Core Core i7 Six-Core Xeon 7400 Dual-Core Itanium 2 AMD K10 Itanium 2 with 9MB cache POWER6 Itanium 2 AMD K10 16-Core SPARC T3 Core 2 Duo Cell 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) 100,000,000 AMD K8 Pentium 4 Barton Atom Transistor count 10,000,000 1,000,000 100,000 68000 curve shows transistor count doubling every two years 80286 80386 80186 80486 AMD K5 Pentium AMD K7 AMD K6-III AMD K6 Pentium III Pentium II Il numero di transistor integrati in un chip raddoppia ogni anno 8086 8088 10,000 8080 8085 6800 Z80 6809 2,300 4004 8008 RCA 1802 MOS 6502 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 2,600,000,000 1,000,000,000 Six-Core Core i7 Six-Core Xeon 7400 Dual-Core Itanium 2 AMD K10 Itanium 2 with 9MB cache POWER6 Itanium 2 AMD K10 Core 2 Duo Cell 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) Transistor count 100,000,000 10,000,000 1,000,000 100,000 68000 8086 curve shows transistor count doubling every two years 80286 8088 80386 80186 80486 Pentium 4 AMD K5 Pentium AMD K7 AMD K6-III AMD K6 Pentium III Pentium II AMD K8 Barton 10 9 Atom AMD K10 Itanium 2 with 9MB cache POWER6 Itanium 2 Six-Core Core i7 Six-Core Xeon 7400 Dual-Core Itanium 2 AMD K10 16-Core SPARC T3 Core 2 Duo Cell 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) 10,000 2,300 8085 6800 6809 8080 Z80 8008 MOS 6502 4004 RCA 1802 Pentium 4 1971 1980 1990 2000 2011 AMD K8 Barton Atom Date of introduction S. Salvatori - 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..FF 16 instructions registers address data processor instructions and data memory 00..00 16 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 T cond F cond T F condizione sequenza ciclo while S. Salvatori - Microelettronica marzo 2017 (12 di 70)

Esempio Addizione tra due numeri somma In A In B input C A + B assegnazione Out C output end S. Salvatori - Microelettronica marzo 2017 (13 di 70)

Esempio Massimo tra due numeri max In A, B T A > B F confronto max A max B Out max end S. Salvatori - Microelettronica marzo 2017 (14 di 70)

max Esempio Ricerca massimo (-1 per uscire) max 0 A 0 A!= -1 T In A F T max A A > max F Out max S. Salvatori - Microelettronica end 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 T F 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 T F i = 3600000; while(i>0) {... i ; } Ciclo while equivalente 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 Assegnazione iniziale T Condizione per rimanere nel ciclo i i - 1 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 T funzione F 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: Acquisire lo stato di un ingresso; evento Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; IN = 0 T F Aspetta che l'input esca dallo stato basso 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 T F Inizio test fine test Inizio nuovo test return 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: Acquisire lo stato di un ingresso; evento Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; IN = 0 T F Aspetta che l'input esca dallo stato basso Una uscita deve diventare alta ogni 4 eventi. Qui c'è stato il fronte positivo IN = 1 F T Aspetta che l'input torni nello stato basso return S. Salvatori - Microelettronica marzo 2017 (28 di 70)

4 eventi start Specifiche: true end 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. T out 0 e 0 e < 4 T F evento IN = 0 T F evento IN = 1 F e e + 1 T out 1 return S. Salvatori - Microelettronica marzo 2017 (29 di 70)

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 registers processor address instructions and data instructions 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) FF..FF 16 00..00 16 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 AI BUS ESTERNI MAR MDR IR SR FUNZ REG ALU R0 R1 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..6 S. Salvatori - Microelettronica marzo 2017 (36 di 70)

Esempio di processore minimo Per il più semplice processore prevediamo per l'istruzione un formato a 16 bit; Nei 16 bit sono inclusi l'opcode a 4 bit e un campo d'indirizzo a 12 bit: 4 bits opcode 12 bits S istruzioni a 16 bit I dati sono a 16 bit (ALU) 12 bit d indirizzo -> 4096x16 = 8 kbyte di spazio di memoria S. Salvatori - Microelettronica marzo 2017 (37 di 70)

Il set di istruzioni è anch'esso minimo: Istruzione Opcode Effetto LDA S 0000 ACC := mem 16 [S] STO S 0001 mem 16 [S] := ACC ADD S 0010 ACC := ACC + mem 16 [S] SUB S 0011 ACC := ACC - mem 16 [S] JMP S 0100 PC := S JGE S 0101 if ACC >= 0 PC := S JNE S 0110 if ACC!=0 PC := S STP 0111 stop S. Salvatori - Microelettronica marzo 2017 (38 di 70)

Il progetto della logica è divisibile in due passi fondamentali: datapath tutti gli elementi che lavorano su parole (acc., PC, ALU, IR) fanno parte del datapath per questi elementi si usa uno stile di progetto di tipo Register Transfer level (RTL), basato su registri, MUX, logica di controllo tutto ciò che non è incluso nel datapath, farà parte della logica di decodifica/controllo il progetto si basa su FSM (Finite State Machine) S. Salvatori - Microelettronica marzo 2017 (39 di 70)

Progetto a livello di datapath S. Salvatori - Microelettronica marzo 2017 (40 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (41 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (42 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (43 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (44 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (45 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (46 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (47 di 70)

datapath? 12 16 S. Salvatori - Microelettronica marzo 2017 (48 di 70)

datapath l esecuzione dell istruzione prevede un un numero di di cicli di di clock pari agli agli accessi in in memoria necessari 2 accessi 1 accesso Instruzione Opcode Effetto LDA S 0000 ACC := mem 16 [S] STO S 0001 mem 16 [S] := ACC ADD S 0010 ACC := ACC + mem 16 [S] SUB S 0011 ACC := ACC - mem 16 [S] JMP S 0100 PC := S JGE S 0101 if ACC >= 0 PC := S JNE S 0110 if ACC!=0 PC := S STP 0111 stop S. Salvatori - Microelettronica marzo 2017 (49 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (50 di 70)

datapath 12 L'incremento del PC può essere svolto dalla stessa ALU (più avanti i dettagli) 16 S. Salvatori - Microelettronica marzo 2017 (51 di 70)

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (52 di 70)

datapath design assunto che l istruzione sia stata caricata, il progetto a livello di datapath prevede due passi fondamentali: 1. accesso all operando in memoria esce l indirizzo da IR l operando e l'accumulatore giungono alla ALU il risultato fornito dalla ALU è caricato nell accumulatore stesso oppure il contenuto dell accumulatore è scritto in memoria 2. fetch della nuova istruzione (PC o IR12 hanno l indirizzo della locazione per la nuova istruzione) il contenuto è incrementato dalla ALU il nuovo valore è salvato in PC Comunque: inizializzazione (il processore deve iniziare da uno stato noto) input di RESET per esempio: azzerata l uscita della ALU, caricarne poi il valore in PC S. Salvatori - Microelettronica marzo 2017 (53 di 70)

Progetto a livello RTL (Register Transfer Level) S. Salvatori - Microelettronica marzo 2017 (54 di 70)

Organizzazione RTL memory memory MEMrq MEMrq RnW RnW IRce IRce buffer per la connessione su data-bus Segnali di selezione Segnali di controllo IR IR PC PC Asel PCce Asel PCce ALUfs ALU ALUfs B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz Bsel Bsel 0 mux 0 mux 1 1 opcode opcode ACCoe ACCoe segnali di abilitazione per i registri Stabiliamo che il dato venga caricato nel registro in corrispondenza del fronte negativo di clock S. Salvatori - Microelettronica marzo 2017 (55 di 70)

Progetto della logica di controllo Decodifica dell'istruzione corrente; Generare i segnali di controllo all'interno del datapath; È intuibile che il progetto preveda quello di una FSM: la rappresentazione mediante il diagramma degli stati è superflua vi sono solo due stati: Fetch e Execute solo 1 bit di stato Progetto FSM S. Salvatori - Microelettronica marzo 2017 (56 di 70)

Progetto della FSM Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz memory memory MEMrq RnW MEMrq RnW IR IR PC PC PCce PCce Bsel Bsel 0 mux 0 mux 1 1 IRce IRce ALU B ALU A B A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe Bit di stato Ex/ft: execute = 0 fetch = 1 tabella degli stati: input output instruction Op-code Ex/ft ACC15 Reset ACCz Bsel PCce ACCoe Asel ACCce IRce ALUfs MEMrq EX/ft R/nW S. Salvatori - Microelettronica marzo 2017 (57 di 70)

FSM: istruzione LDA S memory memory Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz MEMrq RnW MEMrq RnW IR IR PC PC PCce PCce IRce IRce ALU B ALU A B A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe fase di execute preparo memorizz. nell accumulatore Bsel Bsel 0 mux 0 mux 1 1 instruction input Op-code Ex/ft ACC15 Reset ACCz Asel LDA S 0000 0 0 x x output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW 1 1 1 0 0 0 = B 1 1 1 La prossima è il fetch dell'istruzione succ. S. Salvatori - Microelettronica marzo 2017 (58 di 70)

FSM: istruzione LDA S memory memory Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz MEMrq RnW MEMrq RnW IR IR PC PC PCce PCce Bsel Bsel 0 mux 0 mux 1 1 IRce IRce ALU B ALU A B A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe fase di fetch della successiva PC <- PC+1 instruction input Op-code Ex/ft ACC15 Reset ACCz Asel LDA S 0000 0 1 x x output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW 0 0 0 1 1 0 1 1 0 B+1 preparo memorizzazione dell istruzione S. Salvatori - Microelettronica marzo 2017 (59 di 70)

FSM: istruzione STO S memory memory MEMrq RnW MEMrq RnW IRce IRce Asel Asel PCce PCce IR IR PC PC opcode opcode ACCoe ACCoe R / W ALUfs ALU ALUfs B ALU A B A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz Bsel Bsel 0 mux 0 mux 1 1 preparo memorizz. in memoria instruction input Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW STO S 0001 0 0 x x 1 x 0 0 0 1 x 1 0 1 STO S 0001 0 1 x x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (60 di 70)

FSM: istruzione ADD S memory memory MEMrq RnW MEMrq RnW IRce IRce Asel Asel PCce PCce IR IR PC PC opcode opcode ACCoe ACCoe ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz ALU B ALU A B A ACCce ACCce ACC ACC Bsel Bsel 0 mux 0 mux 1 1 instruction input Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW ADD S 0010 0 0 x x 1 1 1 0 0 0 A+B 1 1 1 ADD S 0010 0 1 x x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (61 di 70)

FSM: istruzione SUB S memory memory MEMrq RnW MEMrq RnW IRce IRce Asel Asel PCce PCce IR IR PC PC opcode opcode ACCoe ACCoe ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz ALU B ALU A B A ACCce ACCce ACC ACC Bsel Bsel 0 mux 0 mux 1 1 instruction input Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW SUB S 0011 0 0 x x 1 1 1 0 0 0 A-B 1 1 1 SUB S 0011 0 1 x x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (62 di 70)

FSM: istruzione JMP S memory memory MEMrq RnW MEMrq RnW IRce IRce Asel Asel PCce PCce IR IR PC PC opcode opcode ACCoe ACCoe ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz ALU B ALU A B A ACCce ACCce ACC ACC Bsel Bsel 0 mux 0 mux 1 1 instruction input Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW JMP S 0100 0 x x x 1 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (63 di 70)

FSM: istruzione JGE S memory memory MEMrq RnW MEMrq RnW IRce IRce Asel Asel PCce PCce IR IR PC PC opcode opcode ACCoe ACCoe ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz ALU B ALU A B A ACCce ACCce ACC ACC Bsel Bsel 0 mux 0 mux 1 1 instruction input Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW JGE S 0101 0 x x 0 1 0 0 1 1 0 B+1 1 1 0 JGE S 0101 0 x x 1 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (64 di 70)

FSM: istruzione JNE S memory memory MEMrq RnW MEMrq RnW IRce IRce Asel Asel PCce PCce IR IR PC PC opcode opcode ACCoe ACCoe ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz ALU B ALU A B A ACCce ACCce ACC ACC Bsel Bsel 0 mux 0 mux 1 1 instruction input Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW JNE S 0110 0 x 0 x 1 0 0 1 1 0 B+1 1 1 0 JNE S 0110 0 x 1 x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (65 di 70)

FSM: istruzione STP memory memory MEMrq RnW MEMrq RnW IRce IRce Asel Asel PCce PCce IR IR PC PC opcode opcode ACCoe ACCoe ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz ALU B ALU A B A ACCce ACCce ACC ACC Bsel Bsel 0 mux 0 mux 1 1 instruction input STP 0111 Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW 0 x x x 1 x 0 0 0 0 x 0 1 0 S. Salvatori - Microelettronica marzo 2017 (66 di 70)

FSM: RESET Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz memory memory MEMrq RnW MEMrq RnW IR IR PC PC PCce PCce IRce IRce ALU B ALU A B A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe N.B.: in PC e ACC viene memorizzato 0 (per tutti i periodi di clock in cui RST è alto). RST CLK Bsel Bsel 0 mux 0 mux 1 1 instruction input - - - xxxx Op-code Ex/ft ACC15 Reset ACCz Asel output Bsel PCce ACCoe ACCce IRce ALUfs MEMrq EX/ft R/nW 1 x x x 0 0 1 1 1 0 = 0 1 1 0 S. Salvatori - Microelettronica marzo 2017 (67 di 70)

FSM: sintesi memory memory IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC Asel PCce Asel PCce ALUfs ALU ALUfs B ALU A B A ACCce ACCce ACC[15] ACC[15] ACCz ACCz Bsel Bsel 0 mux 1 0 mux 1 ACC ACC opcode opcode ACCoe ACCoe organizzazione RTL fetch dell istruzione corrente e incremento di PC => coincidono S. Salvatori - Microelettronica marzo 2017 (68 di 70)

Sviluppi futuri per il MUn Aumentare il numero di linee di indirizzo; Aumentare i modi di indirizzamento; Consentire il salvataggio di PC (subroutines); Aggiungere altri registri interni; inserire linee di interrupt; S. Salvatori - Microelettronica marzo 2017 (69 di 70)

Prossimamente Note sul progetto di un processore Formato delle istruzioni Tipi di istruzione Domande Modi di indirizzamento CISC vs RISC Pipeline Note sui RISC stefano.salvatori@uniroma3.it S. Salvatori - Microelettronica marzo 2017 (70 di 70)

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 > 10 9 transistor S. Salvatori - Microelettronica marzo 2017 (6 di 70)

Legge di Moore Microprocessor Transistor Counts 1971-2011 & Moore's Law 16-Core SPARC T3 2,600,000,000 1,000,000,000 Itanium 2 Six-Core Core i7 Six-Core Xeon 7400 Dual-Core Itanium 2 AMD K10 Itanium 2 with 9MB cache POWER6 AMD K10 Core 2 Duo Cell 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) 100,000,000 AMD K8 Pentium 4 Barton Atom Transistor count 10,000,000 1,000,000 100,000 68000 curve shows transistor count doubling every two years 80286 80386 80186 80486 AMD K5 Pentium AMD K7 AMD K6-III AMD K6 Pentium III Pentium II Il numero di transistor integrati in un chip raddoppia ogni anno 8086 8088 10,000 8080 8085 6800 Z80 6809 2,300 8008 MOS 6502 4004 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 Transistor count 2,600,000,000 1,000,000,000 100,000,000 10,000,000 1,000,000 100,000 68000 8086 curve shows transistor count doubling every two years 80286 8088 80386 80186 80486 Pentium 4 AMD K5 Pentium Itanium 2 AMD K7 AMD K6-III AMD K6 Pentium III Pentium II Six-Core Core i7 Six-Core Xeon 7400 Dual-Core Itanium 2 AMD K10 Itanium 2 with 9MB cache POWER6 AMD K10 AMD K8 Barton 10 9 Core 2 Duo Cell Atom 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) Six-Core Core i7 Six-Core Xeon 7400 Dual-Core Itanium 2 AMD K10 Itanium 2 with 9MB cache POWER6 Itanium 2 AMD K10 16-Core SPARC T3 Core 2 Duo Cell 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) 10,000 2,300 8085 6800 6809 8080 Z80 8008 MOS 6502 4004 RCA 1802 Pentium 4 1971 1980 1990 2000 2011 AMD K8 Barton Atom Date of introduction S. Salvatori - 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..FF 16 instructions registers address data processor instructions and data memory 00..00 16 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) Gli Elementi fondamentali che servono per rappresentare i diagrammi di flusso sono quelli di figura. Con questi e poche strutture possiamo descrivere algoritmi anche complessi.

Programmazione strutturata T cond F cond T F condizione sequenza ciclo while S. Salvatori - Microelettronica marzo 2017 (12 di 70) Le strutture sono: sequenza Condizione Ciclo Ci atteniamo a queste tre per descrivere algoritmi che possano tradursi facilmente nel linguaggio C.

Esempio Addizione tra due numeri somma In A In B input C A + B assegnazione Out C output end S. Salvatori - Microelettronica marzo 2017 (13 di 70)

Esempio Massimo tra due numeri max In A, B T A > B F confronto max A max B Out max end S. Salvatori - Microelettronica marzo 2017 (14 di 70)

max Esempio Ricerca massimo (-1 per uscire) max 0 A 0 A!= -1 T In A F T max A A > max F Out max S. Salvatori - Microelettronica end 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) Si deve sottolineare che il ciclo for è un ciclo while in cui si inizializza una variabile, si stabilisce la condizione per restare nel ciclo e si scrive nel corpo del ciclo l'operazione logicomatematico che modifica il valore della variabile scelta andando da un ciclo al successivo.

Ciclo for i iniz cond T F cond. i T F modif. i ciclo while S. Salvatori - Microelettronica marzo 2017 (19 di 70) Si deve sottolineare che il ciclo for è un ciclo while in cui si inizializza una variabile, si stabilisce la condizione per restare nel ciclo e si scrive nel corpo del ciclo l'operazione logicomatematico che modifica il valore della variabile scelta andando da un ciclo al successivo.

Ciclo for: esempio for(i = 3600000 ; i>0; i ) {... } I 3600000 i > 0 T F i = 3600000; while(i>0) {... i ; } Ciclo while equivalente i i - 1 S. Salvatori - Microelettronica marzo 2017 (20 di 70) Questa è la sntassi per il ciclo for in C che il compilatore comunque tradurrà come nel caso del ciclo while equivalente

Ciclo for: esempio blocco di istruzione eseguite ad ogni ciclo for(i = 3600000 ; i>0; i ) {... } I 3600000 i > 0 F Assegnazione iniziale T Condizione per rimanere nel ciclo i i - 1 Operazione di aggiornamento alla fine di un ciclo S. Salvatori - Microelettronica marzo 2017 (21 di 70) Questa è la sntassi per il ciclo for in C che il compilatore comunque tradurrà come nel caso del ciclo while equivalente

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 T funzione F end S. Salvatori - Microelettronica marzo 2017 (23 di 70) Il diagramma di flusso di un uc prevede: Una fase di inizializzazione del sistema (in pratica la ISR del reset, l'inizializzazione dell'oscillatore, l'inizializzazione delle periferiche...) Si entra poi nel cosiddetto ciclo infinito: un while in cui la condizione è sempre vera.

Ciclo per un uc... //istruzioni di inizializzazione while(1) {... //istruzioni eseguite dal // uc durante il suo lavoro } start iniziallizz. true T funzione F end S. Salvatori - Microelettronica marzo 2017 (24 di 70) Il diagramma di flusso di un uc prevede: Una fase di inizializzazione del sistema (in pratica la ISR del reset, l'inizializzazione dell'oscillatore, l'inizializzazione delle periferiche...) Si entra poi nel cosiddetto ciclo infinito: un while in cui la condizione è sempre vera.

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: Acquisire lo stato di un ingresso; evento Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; IN = 0 T F Aspetta che l'input esca dallo stato basso 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 T F Inizio test fine test Inizio nuovo test return 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: Acquisire lo stato di un ingresso; evento Ogni volta che l'ingresso passa dallo stato logico basso a quello alto si genera un evento; IN = 0 T F Aspetta che l'input esca dallo stato basso Una uscita deve diventare alta ogni 4 eventi. Qui c'è stato il fronte positivo IN = 1 F T Aspetta che l'input torni nello stato basso return S. Salvatori - Microelettronica marzo 2017 (28 di 70)

4 eventi start Specifiche: true end 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. T out 0 e 0 e < 4 T F evento IN = 0 T F evento e e + 1 IN = 1 T F out 1 return S. Salvatori - Microelettronica marzo 2017 (29 di 70)

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 registers processor address instructions and data instructions 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) FF..FF 16 00..00 16 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 AI BUS ESTERNI MAR MDR IR SR FUNZ REG ALU REG R0 R1 Rn BANCO DI REGISTRI S. Salvatori - Microelettronica marzo 2017 (35 di 70) Gli elementi fondamentali di una CPU sono rappresentati in questa figura. Vediamo nel seguito quali sono gli elementi minimi per costruire un cosiddetto processore minimo.

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..6 S. Salvatori - Microelettronica marzo 2017 (36 di 70) Saranno necessari almeno: - un contatore di programma, cioè un registro che consenta di puntare all'istruzione che deve essere eseguita. In esso è quindi contenuto l'indirizzo dell'istruzione da eseguire; - un registro che consenta di memorizzare il codice dell'istruzione che il processore deve eseguire e il contenuto deve giungere al decoder che preparerà il datapath (vedi dopo) perché l'istruzione venga eseguita; - un registro accumulatore che filtri uno degli operandi della ALU ed eviti il problema della corsa critica; - ovviamente, una ALU che consenta di eseguire un certo numero di operazioni di calcolo, logiche e aritmetiche, e che definisce in pratica la capacità di calcolo del processore; - un decoder che controllerà, in base al codice dell'istruzione corrente, il flusso dei dati all'interno del processore che deve essere attuato per l'esecuzione dell'istruzione stessa.

Esempio di processore minimo Per il più semplice processore prevediamo per l'istruzione un formato a 16 bit; Nei 16 bit sono inclusi l'opcode a 4 bit e un campo d'indirizzo a 12 bit: 4 bits opcode 12 bits S istruzioni a 16 bit I dati sono a 16 bit (ALU) 12 bit d indirizzo -> 4096x16 = 8 kbyte di spazio di memoria S. Salvatori - Microelettronica marzo 2017 (37 di 70) Nel nostro esempio, tratto dal Furber, prevediamo istruzioni da 16 bit: 4 bit rappresentano il codice dell'istruzione, gli altri 12 l'indirizzo del dato su cui l'istruzione deve lavorare. I dati saranno anche essi a 16 bit. Prevedendo 12 bit di indirizzo per pescare i dati, il bus degli indirizzi del nostro sistema sarà da 12 bit: quindi una capacità della memoria pari a 8 kbyte. Nota: prevediamo istruzioni a 1 indirizzo: nell'istruzione abbiamo tutte le informazioni per l'operazione da svolgere e l'indicazione di dove pescare o trascrivere un dato. Non abbiamo quindi bisogno di accedere nuovamente alla memoria programma per eseguire correttamente l'istruzione. In pratica, allora, ad ogni ciclo il program counter viene incrementato di una sola unità.

Il set di istruzioni è anch'esso minimo: Istruzione Opcode Effetto LDA S 0000 ACC := mem 16 [S] STO S 0001 mem 16 [S] := ACC ADD S 0010 ACC := ACC + mem 16 [S] SUB S 0011 ACC := ACC - mem 16 [S] JMP S 0100 PC := S JGE S 0101 if ACC >= 0 PC := S JNE S 0110 if ACC!=0 PC := S STP 0111 stop S. Salvatori - Microelettronica marzo 2017 (38 di 70) Per prima cosa definiamo un set di istruzioni minimo: - istruzioni per leggere o scrivere un in memoria; - istruzioni di addizione e sottrazione; - istruzioni di salto; - istruzione di stop. Nota: le istruzioni elencate sono 8, mentre per l'op-code sono stati riservati 4 bit, con i quali sarebbe possibile definire 16 istruzioni. Perché si è scelto un numero inferiore di istruzioni?

Il progetto della logica è divisibile in due passi fondamentali: datapath tutti gli elementi che lavorano su parole (acc., PC, ALU, IR) fanno parte del datapath per questi elementi si usa uno stile di progetto di tipo Register Transfer level (RTL), basato su registri, MUX, logica di controllo tutto ciò che non è incluso nel datapath, farà parte della logica di decodifica/controllo il progetto si basa su FSM (Finite State Machine) S. Salvatori - Microelettronica marzo 2017 (39 di 70) Dopo aver stabilito un set per le istruzioni, nel progettare un processore dobbiamo seguire due passi fondamentali: - datapath: gli elementi necessari perché all'interno del processore i dati vengano convogliati negli elementi giusti perché la singola istruzione possa essere eseguita; - progetto della logica di decodifica e controllo. Tutto ciò che non può essere progettato a livello di datapath rientra in questa fase. In pratica si progetterà una FSM in cui lo svolgimento dei singoli passi elementari porta all'esecuzione della particolare istruzione.

Progetto a livello di datapath S. Salvatori - Microelettronica marzo 2017 (40 di 70) Vediamo la prima fase: il progetto del processore a livello di datapath.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (41 di 70) Il nostro processore dovrà essere interfacciato alla memoria esterna con i due bus, di indirizzo e di dati. Questi due bus viaggeranno ovviamente anche all'interno della CPU. Nel nostro caso abbiamo un bus degli indirizzi da 12 bit e uno per i dati da 16 bit.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (42 di 70) Il primo elemento che inseriamo è il registro che memorizza il codice dell'istruzione, IR. Quindi il suo ingresso sarà collegato al bus dati. Come detto prima, dei 16 bit 4 si riferiscono al codice dell'istruzione e quindi queste 4 linee andranno verso il circuito di decodifica e controllo. Gli altri 12 bit rappresentano l'indirizzo del dato oppure dell'istruzione nel caso di salti e quindi andranno verso il bus degli indirizzi.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (43 di 70) Elemento fondamentale da collegare è la ALU. A questa dovranno arrivare i due operandi di ingresso e fornirà il risultato in uscita.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (44 di 70) Uno dei due operandi verrà direttamente dalla memoria e quindi dal data bus. Infatti il formato dell'istruzione prevede 12 bit per l'indirizzo dell'operando. Questo indirizzo è posto da IR e la memoria fornirà il dato che così potrà giungere alla ALU.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (45 di 70) Il secondo operando verrà dall'accumulatore interno alla CPU.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (46 di 70) Il risultato che la ALU fornisce arriverà all'ingresso dello stesso accumulatore. In questo modo si evita il problema della corsa critica: solo quando arriva il segnale di clock che abilita la scrittura nell'accumulatore il suo valore di uscita potrà cambiare. Invece durante tutto il periodo di clock l'uscita dell'accumulatore è stabile e così sarà pure l'operando per la ALU che avrà tutto il periodo di clock per assestare il suo risultato.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (47 di 70) Ovviamente se il risultato deve essere scritto in memoria l'uscita dell'accumulatore dovrà pure giungere sul data bus. L'istruzione di store memorizzerà all'indirizzo di memoria voluto il risultato.

datapath? 12 16 S. Salvatori - Microelettronica marzo 2017 (48 di 70) Infine abbiamo il program counter. Esso deve essere incrementato ad ogni ciclo in modo da puntare all'istruzione successiva. Avremo quindi bisogno di ulteriore hardware per gestire PC? Per rispondere a questa domanda torniamo al set delle istruzioni e vediamo di capire di cosa abbiamo effettivamente bisogno.

datapath l esecuzione dell istruzione prevede un un numero di di cicli di di clock pari agli agli accessi in in memoria necessari 2 accessi 1 accesso Instruzione Opcode Effetto LDA S 0000 ACC := mem 16 [S] STO S 0001 mem 16 [S] := ACC ADD S 0010 ACC := ACC + mem 16 [S] SUB S 0011 ACC := ACC - mem 16 [S] JMP S 0100 PC := S JGE S 0101 if ACC >= 0 PC := S JNE S 0110 if ACC!=0 PC := S STP 0111 stop S. Salvatori - Microelettronica marzo 2017 (49 di 70) Le istruzioni di processing sono svolte in due cicli di clock perché sono necessari due accessi alla memoria: uno per il fetch dell'istruzione, l'altro per acquisire l'operando. Quelle di salto e di stop sono svolte in un ciclo soltanto. Nelle istruzioni di elaborazione, quindi, uno dei cicli vedrà impegnata la ALU per il calcolo. Viceversa per i salti non si ha alcun calcolo.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (50 di 70) Per prima cosa indichiamo che il contenuto di PC deve arrivare, ovviamente, all'address bus, dovendo con esso puntare all'istruzione da eseguire.

datapath 12 L'incremento del PC può essere svolto dalla stessa ALU (più avanti i dettagli) 16 S. Salvatori - Microelettronica marzo 2017 (51 di 70) Come detto la ALU viene impegnata in uno soltanto dei due cicli di clock per le istruzioni di elaborazione e non è impegnata per le istruzioni di salto: possiamo risparmiare hardware usando la stessa ALU per incrementare il contenuto di PC! Per fare questo e linee di indirizzo devono giungere alla ALU. Questa eseguirà l'operazione di incremento e il risultato sarà memorizzato in PC.

datapath 12 16 S. Salvatori - Microelettronica marzo 2017 (52 di 70) In definitiva, è questo lo schema del nostro processore minimo a livello di datapath.

datapath design assunto che l istruzione sia stata caricata, il progetto a livello di datapath prevede due passi fondamentali: 1. accesso all operando in memoria esce l indirizzo da IR l operando e l'accumulatore giungono alla ALU il risultato fornito dalla ALU è caricato nell accumulatore stesso oppure il contenuto dell accumulatore è scritto in memoria 2. fetch della nuova istruzione (PC o IR12 hanno l indirizzo della locazione per la nuova istruzione) il contenuto è incrementato dalla ALU il nuovo valore è salvato in PC Comunque: inizializzazione (il processore deve iniziare da uno stato noto) input di RESET per esempio: azzerata l uscita della ALU, caricarne poi il valore in PC S. Salvatori - Microelettronica marzo 2017 (53 di 70) Per concludere questa prima fase del progetto e quindi pensare a quali debbano essere i passi di progetto da seguire successivamente, vediamo come deve lavorare il nostro processore: 1. l'istruzione è memorizzare in IR. L'indirizzo dell'operando arriva all'address bus. Il decoder ha preparato i diversi componenti in modo che anche l'altro operando giunga alla ALU e questa svolga la particolare operazione; 2. una nuova istruzione deve essere prelevata dalla memoria. L'indirizzo dell'istruzione da prelevare è in PC (o nel campo a 12 bit di IR per i salti) e giunge all'address bus. Nello stesso periodo questo indirizzo giunge alla ALU che è predisposta per incrementarlo. Alla fine del ciclo il valore incrementato viene memorizzato in PC. Da non trascurare la condizione di reset, cioè, come qualunque macchina sequenziale, ci deve essere uno stato ben definitivo per la partenza del sistema.

Progetto a livello RTL (Register Transfer Level) S. Salvatori - Microelettronica marzo 2017 (54 di 70) Il passo di progetto successivo riguarda la definizione dello schema completo di tutti i registri e MUX necessari, nonché della macchina a stati finiti che regolerà il funzionamento per ogni singola istruzione.

Organizzazione RTL memory memory MEMrq MEMrq RnW RnW IRce IRce buffer per la connessione su data-bus Segnali di selezione Segnali di controllo IR IR PC PC Asel PCce Asel PCce ALUfs ALU ALUfs B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz Bsel Bsel 0 mux 0 mux 1 1 opcode opcode ACCoe ACCoe segnali di abilitazione per i registri Stabiliamo che il dato venga caricato nel registro in corrispondenza del fronte negativo di clock S. Salvatori - Microelettronica marzo 2017 (55 di 70) Cominciamo traducendo i diversi blocchi con i corrispondenti registri. Ognuno di questi avrà un ingresso di clock con cui stabilire l'istante in cui viene memorizzato il dato di ingresso e anche un segnale di abilitazione: se il registro non è abilitato, malgrado giunga il segnale di clock in esso rimane memorizzato il valore precedente. Si nota anche che sono necessari dei MUX. Per esempio, al bus degli indirizzi può giungere l'uscita di IR o quella di PC. In questo caso, allora, serve un MUX che eviti il conflitto tra le due uscite. Il segnale Asel sarà utilizzato per stabilire quale indirizzo deve effettivamente giungere sul bus. Inoltre il secondo operando della ALU può venire dal data bus o dal bus degli indirizzi. Con il segnale Bsel stabiliamo quale debba essere tale connessione. Infine, sul data bus potrà essere connessa la memoria oppure il dato d'uscita dell'accumulatore. Poiché la memoria è un dispositivo esterno, occorre predisporre un buffer che consenta di porre in alta impedenza le uscite dell'accumulatore per evitare il conflitto con la RAM.

Progetto della logica di controllo Decodifica dell'istruzione corrente; Generare i segnali di controllo all'interno del datapath; È intuibile che il progetto preveda quello di una FSM: la rappresentazione mediante il diagramma degli stati è superflua vi sono solo due stati: Fetch e Execute solo 1 bit di stato Progetto FSM S. Salvatori - Microelettronica marzo 2017 (56 di 70) La logica di controllo dovrà: - decodificare il codice dell'istruzione (op-code contenuto in IR) circuito combinatorio...; - generare i segnali di controllo opportuni per il datapath in modo che per ogni istruzione il processore svolga i passi elementari che portino alla esecuzione dell'ustruzione stessa. Si intuisce che il progetto sarà relativo a quello di una macchina a stati finiti. Sono necessari solo due stati: fetch e execute 1 bit di stato.

Progetto della FSM Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz memory memory IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce Bsel Bsel 0 mux 0 mux 1 1 ALU B ALU A B A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe Bit di stato Ex/ft: execute = 0 fetch = 1 tabella degli stati: input output instruction Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW S. Salvatori - Microelettronica marzo 2017 (57 di 70) Per il bit di stato stabiliamo che: '0': fase di execute '1': fase di fetch. Cominciamo a costruire la tabella degli stati con i possibili ingressi e tutte le uscite di controllo che la FSM deve generare.

FSM: istruzione LDA S Asel Asel ALUfs ALUfs memory memory IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz opcode opcode ACCoe ACCoe fase di execute preparo memorizz. nell accumulatore Bsel Bsel 0 mux 0 mux 1 1 instruction input Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW LDA S 0000 0 0 x x output 1 1 1 0 0 0 = B 1 1 1 La prossima è il fetch dell'istruzione succ. S. Salvatori - Microelettronica marzo 2017 (58 di 70) LOAD S: Istruzione di lettura del contenuto di una locazione di memoria all'indirizzo S con caricamento nell'accumulatore. Il datapath da preparare è quello di figura: L'indirizzo S da IR deve andare nell'address bus; La memoria rilascerà il dato sul data bus (avendo abilitato MEMrq); Il data bus deve essere letto e quindi lo si deve fare giungere alla ALU (operando B); Questa è programmata per copiare l'operando B, così arriva all'ingresso dell'accumulatore.

FSM: istruzione LDA S Asel Asel ALUfs ALUfs memory memory IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz Bsel Bsel 0 mux 0 mux 1 1 opcode opcode ACCoe ACCoe fase di fetch della successiva PC <- PC+1 instruction input Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW LDA S 0000 0 1 x x output 0 0 0 1 1 0 1 1 0 B+1 preparo memorizzazione dell istruzione S. Salvatori - Microelettronica marzo 2017 (59 di 70) Alla fine del ciclo di clock precedente il dato d'uscita dalla ALU è memorizzato nell'accumulatore. Inizia un nuovo ciclo di clock nel quale è possibile preprare il fetch per l'istruzione successiva. Il contenuto di PC viene convogliato sull'address bus; Lo stesso address bus è collegato come operando B alla ALU che viene programmata per fare l'incremnto. Il PC è abilitato per memorizzare il valore che esce dalla ALU. IR viene abilitata. Quando finisce questo periodo di clock, il dato (istruzione successiva) sul data bus è memorizzato in IR. PC memorizza invece PC+1. Si può passare alla fase di execute dell'istruzione con il ciclo di clock successivo.

FSM: istruzione STO S memory memory Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce Bsel Bsel 0 mux 0 mux 1 1 ALU B B ALU A A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe R / W preparo memorizz. in memoria instruction input output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW STO S 0001 0 0 x x 1 x 0 0 0 1 x 1 0 1 STO S 0001 0 1 x x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (60 di 70) L'istruzione duale alla precedente riguarda lo store di un dato: il contenuto dell'accumulatore deve essere scritto nella locazione di memoria all'indirizzo S. Il datapath e i segnali della FSM possono essere verificati per esercizio.

FSM: istruzione ADD S memory memory Asel Asel ALUfs ALUfs IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz opcode opcode ACCoe ACCoe Bsel Bsel 0 mux 0 mux 1 1 instruction input output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW ADD S 0010 0 0 x x 1 1 1 0 0 0 A+B 1 1 1 ADD S 0010 0 1 x x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (61 di 70) Anche le istruzioni di data processing possono essere risolte come esercizio.

FSM: istruzione SUB S memory memory Asel Asel ALUfs ALUfs IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz opcode opcode ACCoe ACCoe Bsel Bsel 0 mux 0 mux 1 1 instruction input output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW SUB S 0011 0 0 x x 1 1 1 0 0 0 A-B 1 1 1 SUB S 0011 0 1 x x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (62 di 70)

FSM: istruzione JMP S memory memory Asel Asel ALUfs ALUfs IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz opcode opcode ACCoe ACCoe Bsel Bsel 0 mux 0 mux 1 1 instruction input output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW JMP S 0100 0 x x x 1 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (63 di 70)

FSM: istruzione JGE S memory memory Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B B ALU A A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe Bsel Bsel 0 mux 0 mux 1 1 instruction input output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW JGE S 0101 0 x x 0 1 0 0 1 1 0 B+1 1 1 0 JGE S 0101 0 x x 1 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (64 di 70)

FSM: istruzione JNE S memory memory Asel Asel ALUfs ALUfs ACC[15] ACC[15] ACCz ACCz IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B B ALU A A ACCce ACCce ACC ACC opcode opcode ACCoe ACCoe Bsel Bsel 0 mux 0 mux 1 1 instruction input output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW JNE S 0110 0 x 0 x 1 0 0 1 1 0 B+1 1 1 0 JNE S 0110 0 x 1 x 0 0 0 1 1 0 B+1 1 1 0 S. Salvatori - Microelettronica marzo 2017 (65 di 70)

FSM: istruzione STP memory memory Asel Asel ALUfs ALUfs IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz opcode opcode ACCoe ACCoe Bsel Bsel 0 mux 0 mux 1 1 instruction input STP 0111 output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW 0 x x x 1 x 0 0 0 0 x 0 1 0 S. Salvatori - Microelettronica marzo 2017 (66 di 70)

FSM: RESET Asel Asel ALUfs ALUfs memory memory IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC PCce PCce ALU B ALU B A A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz opcode opcode ACCoe ACCoe N.B.: in PC e ACC viene memorizzato 0 (per tutti i periodi di clock in cui RST è alto). RST CLK Bsel Bsel 0 mux 0 mux 1 1 instruction input - - - xxxx output Op-code Ex/ft ACC15 Bsel PCce ACCoe MEMrq EX/ft Reset ACCz Asel ACCce IRce ALUfs R/nW 1 x x x 0 0 1 1 1 0 = 0 1 1 0 S. Salvatori - Microelettronica marzo 2017 (67 di 70) Se è attivato il segnale di reset vengono azzerati sia il contenuto di PC che dell'accumulatore. Infatti i due segnali di abilitazione sono alti per entrambi. La ALU è usata per far uscire il valore 0. Il valore di PC (che sarà stato azzerato) esce sul bus indirizzi e così la memoria pone sul data bus il codice della prima istruzione che si trova all'indirizzo 0. Il prossimo stato è quello di execute. Nota: durante il prossimo ciclo verrà eseguita l'istruzione. Se questa è di data processing o di load/store, la ALU sarà impegnata e quindi il contenuto di PC non cambierà. All'ulteriore ciclo di clock quindi uscirà nuovamente l'indirizzo 0 da PC perché non è stato incrementato. Quindi l'istruzione viene in pratica eseguita due volte. Diverso è il caso in cui l'istruzione è di salto: in PC andrà a finire l'indirizzo del salto così al prossimo ciclo di clock uscirà l'indirizzo della istruzione che si trova al salto e la ALU è usta per incrementare PC stesso (vedi JMP).

FSM: sintesi memory memory IRce MEMrq RnW IRce MEMrq RnW IR IR PC PC Asel PCce Asel PCce ALUfs ALU ALUfs B ALU A B A ACCce ACCce ACC[15] ACC[15] ACC ACCz ACC ACCz opcode opcode ACCoe ACCoe Bsel Bsel 0 mux 1 0 mux 1 organizzazione RTL fetch dell istruzione corrente e incremento di PC => coincidono S. Salvatori - Microelettronica marzo 2017 (68 di 70)

Sviluppi futuri per il MUn Aumentare il numero di linee di indirizzo; Aumentare i modi di indirizzamento; Consentire il salvataggio di PC (subroutines); Aggiungere altri registri interni; inserire linee di interrupt; S. Salvatori - Microelettronica marzo 2017 (69 di 70)

Prossimamente Note sul progetto di un processore Formato delle istruzioni Tipi di istruzione Domande Modi di indirizzamento CISC vs RISC Pipeline Note sui RISC stefano.salvatori@uniroma3.it S. Salvatori - Microelettronica marzo 2017 (70 di 70)