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 – Rn1): – 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 ACAC+ 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