CALCOLATORI ELETTRONICI II

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Informatica Generale Marzia Buscemi
Meccanismi di IPC Problemi classici di IPC
Interfacciamento Processore – dispositivi di I/O
Interfacciamento Processore – dispositivi di I/O
La struttura fisica e logica di un elaboratore
Gestione Input Output A. Ferrari.
Definizione e tipi di implementazione
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory.
Esercizio Temperatura Un processore è interfacciato a due periferiche di input che indicano il numero di autovetture passate nelle due direzioni di un.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Esercizio Semaforo Un processore è interfacciato a due periferiche di input che indicano il numero di autovetture passate nelle due direzioni di un incrocio.
CALCOLATORI ELETTRONICI
Gerarchie di priorità per la gestione delle interruzioni
Dal busy-wait allinterrupt. Costo aggiuntivo del busy-wait in un sistema di I/O 2. CDROM player (20X)=> trasferisce dati al processore in blocchi da 8.
Macchina a stati finiti DMAC 1.I/O dalla memoria al disco in modalità Burst 2.I/O dalla memoria al disco in modalità Burst Stealing 3.I/O dal disco alla.
Interfaccia del Timer1 I/O AB I/O DB I/O CB Dec SELECT START IRQ SCO R Q S Q STATUS STARTDEV COMPLETE CLEAR IVN CPU IACK IN IACK OUT IRQ IOWR REG COUNTER.
Esercizio Esame Un processore PD32 è interfacciato a due periferiche di input A e B, e ad un DMAC il quale puo’ gestire trasferimento di dati da B verso.
Il processore PD32.
Dal busy-wait allinterrupt Tecniche di interazione con periferiche di I/O finora studiate sono: Polling Busy-waiting Entrambe nella categoria sincrona.
Il processore PD32 Set Istruzioni.
Gestione delle subroutine
Esercizio Temperatura Una stanza e monitorata da 4 sensori di temperatura, i quali sono pilotati da un PD32. Questultimo controlla costantemente che il.
1 Interfacciamento Processore – dispositivi di I/O.
Criticità sui dati (esempio da fare on line)
L. Servoli - Corso Fisica dei Dispositivi Elettronici 1 Uno scheduler deve avere implementate almeno le seguenti funzionalità: 1) Inizializzatore: preparazione.
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
ARCHITETTURA DEL CALCOLATORE
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Strutture di controllo in C -- Flow Chart --
Architettura dell’elaboratore
Contatore: esempio di circuito sequenziale
INPUT / OUTPUT. Connessione tra componenti CPU RAM DischiMonitor StampanteTastieraMouse BUS = Interfacce o Controller.
TECNICHE DI INPUT/OUTPUT
CALCOLATORI ELETTRONICI II
L' ARCHITETTURA DI VON NEUMANN
Introduzione al linguaggio assemby del microprocessore a parte
Esercizio Temperatura Una stanza e monitorata da 4 sensori di temperatura, i quali sono pilotati da un PD32. Questultimo controlla costantemente che il.
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
Alcune Istruzioni per la gestione dellI/O (Classe 7) Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato. Per la.
Sistemi di elaborazione e trasmissione delle informazioni
Sia TAPE una periferica di gestione di nastri magnetici in grado di acquisire/fornire dati a 8 bit, e sia CD una periferica di masterizzazione in grado.
Unità centrale di processo
Struttura di un SO Menu Struttura SO Algoritmo Programma Processo
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Calcolatori Elettronici Il Processore
Sistemi Elettronici Programmabili: Riepilogo 1 Sistemi digitali : Riepilogo Sistemi Elettronici Programmabili.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Gestione dei dispositivi di I/O:
Sistemi Elettronici Programmabili
MICROPROCESSORI Un processore è un circuito integrato in grado di effettuare operazioni di calcolo o di elaborazione dell'informazione Il circuito contiene.
L’esecuzione dei programmi
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
STRUTTURA DELL’ELABORATORE
Esercizio Semaforo Un processore è interfacciato a due periferiche di input che indicano il numero di autovetture passate nelle due direzioni di un incrocio.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
Il modello di Von Neumann
Transcript della presentazione:

CALCOLATORI ELETTRONICI II BUS I/O PD32 POLLING / BUSY WAITING PROGETTAZIONE INTERFACCE INPUT / OUTPUT

I/OBus PD32 I/O Address bus fatto da 8 bit Quante periferiche possiamo collegare al massimo?????

Istruzioni I/O PD32 Classe 7 Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato. Per la destinazione D1 sono ammessi tutti i tipi di indirizzamento tranne quello con registro e immediato.

Formato istruzioni I/O Per l’operando dev sono ammessi solo due modi di indirizzamento: diretto con registro ed assoluto. Per la codifica di questo campo sono usati i campi I/O e k. Il campo I/O può assumere solo due valori: 01 => indica che il contenuto di k è l’indirizzo del device 10 => indica che l’indirizzo del device è contenuto nel registro generale specificato dai primi 3 bit del campo k Poichè i campi modo sorgente e sorgente sono inutilizzati, la sorgente S viene specificata nei campi modo destinazione e destinazione. CLASSE 111 TIPO k I/O s ----- ----- MODO DEST 31 29 28 24 23 16 15 14 13 12 11 9 8 6 5 3 2 0

Interazione con le periferiche Esistono due tipologie di interazione con le periferiche: Sincrona Asincrona In questa parte faremo focus sull’interazione sincrona, successivamente verrà analizzata anche quella asincrona.

Interazione Sincrona Come tutte le comuni interazioni sincrone, il software si preoccupa di testare direttamente lo stato della periferica. L’architettura deve quindi dare la possibilità al processore di poter sapere in ogni istante la situazione attuale della periferica. Le tecniche più usare di interazione sincrona sono: Busy Waiting Polling sei pronta?? si /no periferica 1 pd32

Busy Waiting Loop: Salta a “Loop” se la periferica non è pronta Idea che sta dietro all’implementazione del busy waiting: Loop: Salta a “Loop” se la periferica non è pronta Si rimane in attesa attiva che la periferica abbia terminato. La CPU è impegnata al 100% in questo controllo.

Busy Waiting / Implementazione Implementazone del busy waiting in assembly pd32: Aspetta: JNR Device, Aspetta L’istruzione JNR (Jump Not Ready) salta all’etichetta “Aspetta” se Device non è pronto, altrimenti se Device è Ready passiamo alle istruzioni successive.

verifica circolare se ogni DEVICE è pronto ad interagire Polling verifica circolare se ogni DEVICE è pronto ad interagire PD32 I/O AB I/O DB I/O CB DEV 1 DEV 2 DEV 3 DEV 4

Polling / Implementazione Implementazone del polling in assembly pd32: POLL1: JR D1, Op_Dev_1 POLL2: JR D2, Op_Dev_2 POLL3: JR D3, Op_Dev_3 JMP POLL1 Ciclicamente il software interroga le periferiche per sapere se qualcuna è pronta ad interagire. Altrimenti va avanti fino a che non arriva alla fine delle periferiche da controllare e con una jmp non condizionata torna sulla prima da controllare.

Polling vs Busy Waiting Che succede se nell’implementazione del polling esiste solo una periferica da interrogare?? Il busy waiting può essere interpretato come caso particolare del polling. POLL1: JR D1, Op_Dev_1 POLL2: JR D2, Op_Dev_2 POLL3: JR D3, Op_Dev_3 JMP POLL1

Progettazione Periferiche Progettiamo la nostra interfaccia hardware con lo scopo di fornire i componenti e le interconnessioni di supporto alla “semantica” della periferica (ovvero cosa deve fare la periferica). Si deve poter leggere e/o scrivere sulla periferica Si deve poter selezionare la periferica tra tutte quelle collegate al bus Si deve poter interrogare la periferica per sapere se ha completato il suo lavoro Si deve poter avviare la periferica

Classico protocollo alto livello In maniera molto astratta si dovranno eseguire almeno queste operazioni per interagire con le periferiche: Aspettare che la periferica sia disponibile Avviare la periferica Scrivere / Leggere i dati d’interesse

I/O programmato – PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE Interfaccia di Input I/O programmato – PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE PD32 I/O AB I/O DB I/O CB I/O RD START WAIT READY “0” STARTD O.C. SELECT R Q REG STATUS S Q COMPLETE STARTDEV SCA SCO

Interfaccia di Input / Impl Aspettare finché la periferica DeviceIn non è disponibile Avvio la periferica così che possa produrre informazioni Aspetto la sua terminazione Leggo il risultati scquisiti. Aspetta1: JNR DeviceIN, Aspetta1 START DeviceIN Aspetta2: JNR DeviceIN, Aspetta2 INB DeviceIN, R0 Cosa implementa?? Busy Waiting / Polling??

I/O programmato – PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE Interfaccia di Output I/O programmato – PROTOCOLLO DI HANDSHAKING IMPLEMENTATO A SOFTWARE PD32 I/O AB I/O DB I/O CB I/O WR START READY DEC STARTD O.C. SELECT R Q REG STATUS S Q COMPLETE STARTDEV SCA SCO

Interfaccia di Output / Impl Aspettare finché la periferica DeviceOut non è disponibile Scrivi il dato sul registro di interfaccia Avverto la periferica che può considerare un nuovo dato. Aspetto la sua terminazione Aspetta1: JNR DeviceOUT, Aspetta 1 OUT R0, DeviceOUT START DeviceOUT Aspetta2: JNR DeviceOUT, Aspetta2 Cosa implementa?? Busy Waiting / Polling??

Interfaccia di Output / Impl Aspettare finché la periferica DeviceOut non è disponibile Scrivi il dato sul registro di interfaccia Avverto la periferica che può considerare un nuovo dato. Aspetto la sua terminazione Aspetta1: JNR DeviceOUT, Aspetta 1 OUT R0, DeviceOUT START DeviceOUT Aspetta2: JNR DeviceOUT, Aspetta2

Esercizio Busy Waiting Dato questo frammento di codice implementante il codice di una funzione chiamante, definire la subroutine IN_AD1 che legge 100 dati dalla periferica di input con indirizzo AD1 e li memorizza in un vettore a partire dall’indirizzo 1280. Si noti che i dati sono già nei registi R0 ed R1 … MOVL #100, R0 ; numero di dati da acquisire MOVL #1200, R1 ; ind.dell’area di memoria JSR IN_AD1

Soluzione Busy Waiting … MOVL #100, R0 ; numero di dati da acquisire MOVL #DATI, R1 ; ind.dell’area di memoria JSR IN_AD1 IN_AD1: PUSH R0 ; salv. registri usati PUSH R1 PUSH R2 IN_1: JNR AD1, IN_1 ; attende che AD1 sia pronto IN_2: START AD1 ;avvia l’acquisizione di un dato IN_3: JNR AD1, IN_3 ; attende che il dato sia stato prodotto INW AD1, R2 ; prelievo del dato e…. MOVW R2, (R1)+ ; … suo trasferimento in memoria SUBL #1, R0 ; decremento del contatore JNZ IN_2 ; acquisizione di un altro dato se non si è azzerato ; il contatore POP R2 ; ripristino dei registri usati POP R1 ; POP R0 ; RET ; ritorno al programma chiamante

Esercizio Polling Dato questo frammento di codice implementante il codice di una funzione chiamante, definire la subroutine IN_AD1 che legge 100 dati da quattro periferiche di input con indirizzo AD1, AD2, AD3, AD4 e li memorizza in un vettore a partire dall’indirizzo 1280. I 100 dati possono essere letti non necessariamente rispettando l’ordine delle periferiche, ovvero 25 da AD1, 25 da AD2……. Si noti che i dati sono già nei registi R0 ed R1 … MOVL #100, R0 ; numero di dati da acquisire MOVL #1200, R1 ; ind.dell’area di memoria JSR IN_AD1

Soluzione Polling IN_AD1: PUSH R0 ; salv. registri usati PUSH R1 POLL1: JR AD1, IN_1 ; attende che AD1 sia pronto POLL2: JR AD2, IN_2 POLL3: JR AD3, IN_3 POLL4: JR AD4, IN_4 JMP POLL1 … IN_i: START ADi ; avvia l’acquisizione di un dato WAIT: JNR ADi, WAIT ; attende che il dato sia stato prodotto INW ADi, R2 ; prelievo del dato e…. MOVW R2, (R1)+ ; … suo trasferimento in memoria SUBL #1, R0 ; decremento del contatore JZ EXIT JMP POLL_i+1 ; continua a interrogare le altre periferiche EXIT: POP R2 ; ripristino dei registri usati POP R1 ; POP R0 ; RET ; ritorno al programma chiamante

Esercizio Una stanza e’ monitorata da 4 sensori di temperatura, i quali sono pilotati da un PD32. Quest’ultimo controlla costantemente che il valor medio della temperatura rilevata nella stanza sia compreso tra i valori [Tmin-Tmax]. Nel caso in cui il valor medio della temperatura non cada in tale intervallo, il microprocessore inviera’ un segnale di allarme su un’apposita periferica, detta ALARM. Il segnale d’allarme utilizzato e’ il valore 1 codificato con 8 bit. Se la temperatura ritorna all’interno dell’intervallo [Tmin-Tmax], la CPU invia sulla periferica ALARM il valore 0. I sensori ritornano la temperatura misurata come un numero intero ad 8 bit, usando i decimi di gradi Celsius come unita’ di misura. Scrivere il codice assembly per il controllo dei sensori di temperatura e della periferica di allarme.

Macchina a stati finiti newTemp, T_media NON in [Tmin-Tmax]/ - newTemp,T_media NON in [Tmin-Tmax] / Alarm_ON T_media in [Tmin-Tmax] T_media fuori da [Tmin-Tmax] newTemp, T_media in [Tmin-Tmax] / - newTemp,T_media in [Tmin-Tmax] / Alarm_OFF Legenda per le transizioni: Input, Condizione / Output

Diagramma di flusso Polling T_media=Ts1=Ts2=Ts3=Ts4= = (Tmin+Tmax)/2 Stato=IN_RANGE controlla dev.succ Polling dev i ready? NO SI Input da dev_i: new_T_si Stato=OUT Stato=IN Ricalcola media: T_media=T_media+(new_T_si-old_T_si)/4 SI SI T_media in_range? Stato = IN Stato = OUT SI NO NO NO OUTPUT: ALARM OFF OUTPUT: ALARM ON