Struttura e funzionamento di un microprocessore
Campi di utilizzo dei mP Dai primi calcolatori alle attuali applicazioni
Contenuti ENIAC: il primo computer elettrico Lo schema di Von Neumann EDVAC Nuovi computer con componenti elettronici a semiconduttore: APPLE II Campi di applicazione dei microprocessori Dal mondo analogico al PC Memorie a semiconduttore: RAM e ROM
ENIAC: primo computer elettrico L’ENIAC (electric numerical integrator analyzer and computer) fu costruito tra il 1943 e il 1945 dall’esercito statunitense per calcolare la traiettoria delle prime armi atomiche. Costruito da più di 17000 valvole a vuoto, Eniac eseguiva 5000 operazioni al secondo, risolvendo un problema medio in circa 2 secondi, ma richiedendo due giorni per la preparazione. Pesava 30 tonnellate era lungo 30 m alto 2,5 m. Assorbiva 200 Kw di potenza.
Lo schema di Von Neumann RAM (Memoria Centrale) RAM Unità di Calcolo INPUT OUTPUT Memorie Ausiliarie Una delle innovazioni introdotte fu la RAM (Random Access Memory) cioè la memoria centrale o memoria di lavoro (allora memoria a nuclei magnetici), una memoria elettronica interna all’elaboratore destinata a contenere il programma. RAM L’idea fu quella di memorizzare all’interno del computer, non solo i dati ma anche il programma che li doveva elaborare.
RAM (Memoria Centrale) il calcolatore (macchina per calcolare) elaboratore (macch. per il trattamento delle informazioni) diventa Elaboratore RAM (Memoria Centrale) Unità di Calcolo INPUT OUTPUT Memorie Ausiliarie
EDVAC EDVAC ideato da VON NEUMANN Primo diagramma di flusso ideato da Von Neumann per l’EDVAC
Nuovi computer con componenti elettronici a semiconduttore Con l’avvento dei transistor a semicondutore (Bell labs 1947) L’IBM nel 1954 realizzò il primo computer a transistor, e anche il primo messo in commercio. Ne furono vendute 120 unità. Nel 1958 la TEXAS INSTRUMENTS costruì il primo circuito integrato, consentendo la costruzione dei microprocessori, e di computer sempre più piccoli e potenti, ma sempre dai costi non accessibili a tutti limitandone così la vendita, e quindi la produzione. Solamente nel 1975 fu costruito il primo prototipo di PC l’ALTAIR 8800 della MITS il processore era l’INTEL 8080 e aveva 256 byte di RAM. Costava 367 dollari.
APPLE II Il trionfo del software Realizzato nel 1976, fu il primo vero PC commerciale, che sancì il successo del calcolo elettronico grazie ai software a lui dedicati. In particolare venne realizzato il primo foglio elettronico (Visicalc) Ma intanto l’IBM realizza il suo primo PC cercando di accontentare le richieste di mercato: basso prezzo e possibilità di aggiornare i componenti e il software. Non brevettò il PC, consentendo ai concorrenti di copiarne la struttura. Questa fu l’idea di mercato vincente, perché la maggior parte dei PC erano così compatibili con i componenti IBM,e i creatori di software si basarono sul loro hardware, tra questi c’era la Microsoft. Nasce l’era del software, che deciderà il futuro dei PC.
CAMPI DI APPLICAZIONE DEI MICROPROCESSORI
logica di funzionamento Architettura e logica di funzionamento
Contenuti Blocchi di un sistema a mP Architettura a BUS CPU CPU Disp. di I/O Memoria Blocchi di un sistema a mP Memoria Architettura a BUS BUS Suddivisione del BUS ALU UC Architettura interna del mP Prelievo (fetch) ed esecuzione (execute) di istruzioni in memoria
Blocchi componenti un sistema a mP CPU (mP) CPU Esegue operazioni (ALU) ALU REG Prende decisioni (UC) UC Memorizza temp. dati (Registri) Memoria Conserva Istruzioni e Dati Memoria 00110101 00110101 sotto forma di parole binarie 0000h accessibili mediante un indirizzo Dispositivi di I/O Consentono lo scambio informazioni con il mondo esterno
Architettura a BUS CPU Dispositivi di Memoria I/O BUS Il BUS di collegamento consente lo scambio di informazioni: dalla memoria verso il microprocessore (LETTURA da Memoria) dai dispositivi di I/O verso il microprocessore (LETTURA da I/O) dal microprocessore verso la memoria (SCRITTURA su Memoria) dal microprocessore verso i dispositivi di I/O (SCRITTURA su I/O) CPU Memoria Dispositivi di I/O 00110101 00110101 00110101 BUS SCRITTURA su Mem LETTURA da Mem LETTURA da I/O SCRITTURA su I/O
Suddivisione del BUS CPU Dispositivi di Memoria I/O Dal punto di vista funzionale il BUS di collegamento può essere suddiviso in: CPU BUS INDIRIZZI BUS CONTROLLI Memoria Dispositivi di I/O BUS DATI
Architettura interna del Microprocessore CPU ALU UC REG Architettura interna del Microprocessore BUS INTERNO Reg. istruzioni Reg. di Stato Registri di uso generale CPU Accumulatore Decodificatore di istruzioni ALU Reg. temporaneo Stack Pointer Unità di controllo e temporizzazione …… Program Counter Buffer Dati Buffer Indirizzi RESET CLOCK BUS CONTROLLI BUS DATI BUS INDIRIZZI
Prelievo istruz. dalla mem. ( fetch ) e loro esecuzione (execute) Memoria Reg. istruzioni 00001100 ADD A,B A 0000h 00001100 0001h 11000011 11000011 INC A CPU 11010000 00001000 11010000 00001000 11010001 Decodificatore di istruzioni PROG ADD A,B INC A + +1 ALU B Unità di controllo e temporizzazione 11001000 11001000 …… Program Counter 0002h 0001h 0001h 0000h 0000h 1 1 DATI
logica di funzionamento del MICROPROCESSORE 8088 INTEL Architettura e logica di funzionamento del MICROPROCESSORE 8088 INTEL
Contenuti Il circuito integrato I registri Architettura interna AD[0:7] A [8:19] WR# RD# IO/M# CPU Il circuito integrato I registri Architettura interna La segmentazione degli indirizzi AX EXTRA SEGMENT STACK SEGMENT DATA SEGMENT CODE SEGMENT
Circuito integrato: segnali per il controllo della memoria e delle periferiche AD[0:7]: linee del BUS DATI multiplexate con le prime 8 linee del BUS INDIRIZZI A[8:19]: le rimanenti 12 linee del BUS INDIRIZZI WR#: segnale di scrittura RD#: segnale di lettura IO/M#: segnale di attivazione periferica I/O o memoria AD[0:7] A [8:19] CPU WR RD IO/M
Circuito integrato: segnali per la separazione DATI/INDIRIZZI ALE: indica la presenza degli indirizzi sulle linee AD[0:7] DEN#: indica la presenza di un dato valido sulle linee AD[0:7] DT/R#: indica la direzione dei dati AD[0:7] ALE A [8:19] WR DEN RD DT/R IO/M
I Registri di uso generale AX registro ACCUMULATORE BX registro BASE CX registro CONTATORE DX registro DATI Possono essere divisi in due byte (es.:AL e AH), dando luogo a un set possibile di 8 registri a 8 bit L = LOW (BASSO) H = HIGH (ALTO) AX AH AL
UTILIZZO dei registri di uso generale Operazioni aritmetiche a 8 o a 16 bit Operazioni logiche Trasferimento dati Funzioni specifiche ( es.: AX è coinvolto nelle operazioni di Input/Output dei dati, BX è usato come puntatore nell’indirizzamento della memoria)
Status Register (Registro di Stato) Memorizza lo stato del processore dopo ogni operazione Ogni singolo bit viene modificato singolarmente 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 x STATUS REGISTER OF O F DF IF I F TF SF S F ZF Z F AF PF CF C F Overflow 0: l’ultima operazione non ha avuto overflow 1:l’ultima operazione ha avuto overflow Flag Interrupt 0: Interrupt abilitato 1: Interrupt non abilitato Flag Sign 0: il risultato dell’ultima operazione è positivo 1: il risultato dell’ultima operazione è negativo Flag Zero 0: il risultato dell’ultima operazione non è nullo 1: il risultato dell’ultima operazione è nullo Flag Carry 0: il risultato dell’ultima operazione non ha generato riporto 1: il risultato dell’ultima operazione ha generato riporto Flag
Architettura interna Registri di segmento INTERFACCIA BUS BIU AD[O:7] A[8:19] DT/R# DEN# ALE Registri di segmento CS INTA# DS INTERFACCIA BUS SS RD# ES WR# Program counter Logica di Controllo IP CK BIU VCC MN/MX# RESET BUS INTERNO (16 bit) CODA (4 byte) INTR NMI READY Registri di uso generale AH AL GND BH BL CH CL ALU DH DL Registri indice SI DI STATUS REGISTER Registri Puntatori SP BP EU
I Segmenti (1) Un segmento è un’area di memoria di 64 Kilobyte (216 byte) 01001111 b ………… 10101010 b 11001110 b 0FFFF h FFFF 00000 h 0000
I Segmenti (2) 1FFFF h 10000 h 30000 h 3FFFF h 60000 h 6FFFF h 80000 h 8FFFF h FFFFFh 00000h Contemporaneamente la CPU 8088 può utilizzare al massimo 4 segmenti (256 Kilobyte): CODE SEGMENT: contiene il codice (programma) DATA SEGMENT: contiene i dati (iniziali e i risultati) STACK SEGMENT: contiene lo stack, magazzino temporaneo di dati e indirizzi EXTRA SEGMENT: è un ampliamento del Data Segment EXTRA SEGMENT FFFF 64K 0000 STACK SEGMENT FFFF 64K 0000 DATA SEGMENT FFFF 64K 0000 CODE SEGMENT FFFF 64K 0000
Posizione dei segmenti I segmenti possono essere: Disgiunti Adiacenti Coincidenti Sovrapposti EXTRA SEGMENT STACK SEGMENT DATA SEGMENT CODE SEGMENT
Indirizzi fisici e indirizzi segmentati Indirizzo segmentato: usato dal programmatore Offset o spiazzamento 1000 1000 : 2345 2345 Indirizzo di base del segmento + 12345 INDIRIZZO FISICO Indirizzo fisico: usato dal microprocessore