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.

Slides:



Advertisements
Presentazioni simili
Interfacciamento Processore – dispositivi di I/O
Advertisements

Interfacciamento Processore – dispositivi di I/O
Procedure In assembler.
Gestione Input Output A. Ferrari.
Strutture dati lineari
Perché le interruzioni?
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.
Interfaccia del file system
Sincronizzazione di processi
Esercizio Temperatura Un processore è interfacciato a due periferiche di input che indicano il numero di autovetture passate nelle due direzioni di un.
File.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
CALCOLATORI ELETTRONICI II
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.
Schema di principio del SCA di una MMU Memory Management Unit
Dal busy-wait allinterrupt Tecniche di interazione con periferiche di I/O finora studiate sono: Polling Busy-waiting Entrambe nella categoria sincrona.
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.
Struttura dei sistemi operativi (panoramica)
Il Linguaggio Macchina
ARCHITETTURA DEL CALCOLATORE
Istruzioni per il Controllo del Processore
Gestione della memoria logica e fisica degli elaboratori x86
1 Prof. Marco Mezzalama CICLO DI BUS CON DATA BUS A 32 BIT (ciclo scrittura con wait) Verifica Segnale di READY: nel primo caso La memoria NON è pronta,
Ingresso/Uscita u Materiale in: –Queste trasparenze, non basta il testo! –Tanenbaum 2.4.1, 5.6.4, 5.6.5,
Distributed File System Service Dario Agostinone.
File I record.
CALCOLATORI ELETTRONICI II
ELETTRONICA DIGITALE (II Parte)
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Esercizio Temperatura Una stanza e monitorata da 4 sensori di temperatura, i quali sono pilotati da un PD32. Questultimo controlla costantemente che il.
I vettore interruzioni
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.
GESTIONE INTERRUPT CPU INTEL 8086
Introduzione al linguaggio assembly del microprocessore a parte
BUS DI CPU M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Sistemi di elaborazione e trasmissione delle informazioni
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Luca Orrù 1 Input/Output. 2 SOMMARIO Organizzazione di sistema Trasferimento dati; Gestione I/O.
Architettura di una CPU
Politecnico di Milano © Domenico Barretta Processi concorrenti in Unix Docente Domenico Barretta Politecnico di Milano
Architettura dei Sistemi Operativi
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Sistemi Elettronici Programmabili
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
L’esecuzione dei programmi
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Esercizi.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda Interfaccia verso il bus.
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Esercizio Semaforo Un processore è interfacciato a due periferiche di input che indicano il numero di autovetture passate nelle due direzioni di un incrocio.
Presentazione di sistemi Ambrosio Federica Anna Esposito 3C inf.
Il modello di Von Neumann
Comunicazione Seriale Prof. Antonino Mazzeo Corso di Laurea Specialistica in Ingegneria Informatica.
Il BUS è un elemento fondamentale dei computer che ha lo scopo di collegare elettricamente i dispositivi, le periferiche e le memorie con il microprocessore,
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Z iLOG 80 Calcolatori Elettronici Bartolomeo Bajic.
Macchina a stati finiti DMAC
Transcript della presentazione:

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 di acquisire dati a 8/16/32 bit. TAPE è indirizzabile tramite 32 bit ed è visibile ad un DMAC interfacciato al processore PD32. CD è anchessa indirizzabile tramite 32 bit e visibile allo stesso DMAC. Il DMAC deve poter supportare operazioni di trasferimento dati da TAPE verso CD. La programmazione di DMAC per il trasferimento avviene tramite una opportuna routine di inizializzazione che utilizza 4 informazioni memorizzate in un buffer di memoria di 13 byte ad indirizzo 0AAAh. Dei 13 byte, il primo identifica il codice operativo per il trasferimento (ovvero se il trasferimento verso CD deve avvenire al byte, alla word o alla longword), i rimanenti byte, a gruppi di quattro identificano rispettivamente: lindirizzo di TAPE, lindirizzo di CD e la quantità di byte coinvolti nel trasferimento. Si ipotizzi che al termine del trasferimento il DMAC avverte il processore tramite interruzione. Progettare: il SCA dellinterfaccia tra DMAC e PD32; il software di attivazione per il trasferimento e di gestione dellinterruzione di DMAC.

Logica dellinterfaccia del DMAC per le interruzioni I/O AB I/O DB I/O CB Decoder SELECT START STARTD O.C. IRQ SCO DMAC R Q S Q STATUS STARTDEV COMPLETE CLEAR IVN CPU IACK IN IACK OUT IRQ

PD32 DB CB I/O DB I/O CB I/O AB MEMORIA SELECT I/O WR CAR-CD INC WC I/O WR SCO DMAC DECR TC AB IRQ I/O WR INC SCO TAPE IND PRONTO DATA SCO CD ADDRESS DATO PRONTO ADDRESS TEMP DATA START DATO/IND SCRITTO CAR-TAPE

PD32 DB CB I/O DB I/O CB I/O AB MEMORIA SELECT SCO DMAC AB IRQ I/O WR WORD LENGTH INC SCO TAPE WORD LENGTH

INIT: PUSH R0 PUSH R1 MOVL ARRAY, R0 MOVB (R0), R1 OUTB R1, W_LENGTH MOVL 1(R0),R1 OUTL R1, CAR_TAPE MOVL 5(R0),R1 OUTL R1, CAR_CD MOVL 9(R0),R1 OUTL R1, WC START DMAC POP R1 POP R0 RET DRIVER 1,500h CLEAR DMAC RTI

Due processori si scambiano messaggi tramite un buffer di memoria condiviso, costituito di 32 registri da 32 bit ciascuno. Il buffer di memoria condiviso è visto da entrambi i processori come una periferica. I processori possono essere sia produttori che consumatori di messaggi. Un processore può memorizzare un messaggio solo se il buffer è vuoto (ovvero il consumatore del vecchio messaggio lha già letto). A tal fine si ipotizzi di utilizzare un flip/flop che indica se il buffer è pieno o vuoto. Il processore che scrive il messaggio avverte laltro dellavvenuta scrittura tramite un interrupt. Quando il processore consumatore ha letto il messaggio setta opportunamente il flip/flop associato al buffer. Progettare il buffer di memoria con le relative interfacce verso i due processori. Il software per la scrittura e lettura dei dati dal buffer e lhandshaking tra i due processori. Si supponga che in fase di accensione del sistema il flip/flop di handshaking venga inizializzato opportunamente per indicare che il buffer è vuoto e che non si verifichino conflitti tra i processori nellaccesso al flip/flop associato al buffer.

Banco Registri R0R0 I/O DB I/O CB I/O AB I/O WR CPU 1 I/O DB I/O CB I/O AB CPU 2 I/O WR I/O RD SELECT SELECT0 I/O RD … SELECT1 SELECTi SELECT32

I/O DB I/O CB CPU1 I/O WR I/O AB FULL F/F SELECT S Q R Q FULL SET From CPU2 RESET From CPU2 SET RESET TO CPU2 I/O RD

Logica per la gestione delle interruzioni I/O AB I/O DB I/O CB Decoder START GEN_IRQ O.C. IRQ S Q R Q STATUS CLEAR IVN CPU1 IACK IN IACK OUT IRQ R Q S Q DIR GEN_IRQ FROM CPU2 CLEAR FROM CPU2

Software: Algoritmo/Strutture Dati Scritture: –la specifica indica che il processore che esegue una lettura deve resettare il F/F FULL: dal momento che non è richiesto lutilizzo di interruzioni per la notifica dellavvenuta lettura allaltro PD32, questultimo dovrà testare in busy wait lo stato del F/F FULL prima di poter avviare una scrittura. Questo rende di fatto la subroutine di scrittura bloccante: ritorna solo dopo aver trasferito i dati alla periferica.

Software: Algoritmo/Strutture Dati Letture: –la specifica indica che il processore PD1 che esegue una scrittura deve notificare il processore PD2 tramite un IRQ: Per il relativo driver (su PD2) è possibile pertanto acquisire immediatamente i dati dalla periferica. Tali dati dovranno essere consumati on demand da qualche applicazione in esecuzione su PD2. Pertanto dobbiamo prevedere un buffer in memoria sul quale il driver vada a scaricare i dati acquisiti dalla periferica: –coda con puntatore allinizio e alla fine: READ_QUEUE –quando viene ricevuto un IRQ, il driver accoda il messaggio nel buffer. –Il buffer è svuotato dalla subroutine di livello applicazione per la lettura, che ritorna il messaggio in cima alla coda (se presente) e lo rimuove dalla coda.

Software: Algoritmo/Strutture Dati Letture: Coda con puntatore allinizio e alla fine: READ_QUEUE Puntatore al primo elemento: QHEAD Puntatore allultimo elemento: QTAIL Politica di inserimento: FIFO Inserimento: Aggiungo un elemento in fondo alla coda: QTAIL=QTAIL+ELEM_SIZE Lettura: Estraggo il primo elemento dalla CODA: QHEAD=QHEAD+ELEM_SIZE NOTA: Nel codice assembly useremo delle variabili per memorizzare QHEAD e QTAIL.

Subroutine di Scrittura (pseudo-codice) WHILE (FULL) { NOP; } set FULL_FLAG; for (i=0; i<32; i++) { out dev[i], buf[i]; } start dev;

Scrittura ; SUBROUTINE CHE IN R0 ACCETTA LINDIRIZZO IN RAM DA CUI PRELEVARE I DATI DA SCRIVERE SULLA PERIFERICA WRITE: PUSH R1 PUSH R2 PUSH R3 BW: INB Full,R1 ; LEGGO IL F/F FULL CMPL #0,R1 JNZ BW ;devo accodare dati outb #1, Full MOVL #32,R2 MOVL #REG1,R3 W:MOVL (R0)+,R1; LEGGE IL PRIMO DATO DAI PARAMETRI DI INGRESSO ; E LO COPIA IN R1 OUTL R1,R3 ; TRASFERISCE IL DATO VERSO REG_i, IL CUI INDIRIZZO E IN R3 ADDB #1,R3 ; Assumiamo che i registri della periferica abbiano indirizzi contigui SUBL #1,R2 ; JNZ W START DEV; GENERA INTERRUZIONE POP R3 POP R2 POP R1 RET

Lettura: subroutine di livello applicazione SUBROUTINE boolean READ(memory_address) /* input: lindirizzo di partenza allinterno del quale memorizzare le 32 longwords output: 1) se non ci sono messaggi nel buffer, ritorna 0 2) se ci sono messaggi nel buffer, memorizza 32 longwords nel buffer e ritorna 1*/ if (READ_BUF_FULL==0) //no data to read return 0; else { copia primo messaggio in memory_address; aggiorna puntatore alla testa della coda; return 1; }

Lettura: subroutine di livello applicazione SUBROUTINE boolean READ(memory_address) /* input: R0: indirizzo a partire dal quale memorizzare le 32 longwords output: R1 1) se non ci sono messaggi nel buffer, ritorna 0 2) se ci sono messaggi nel buffer, memorizza 32 longwords nel buffer e ritorna 1*/ PUSH R0 PUSH R2 MOVL QHEAD, R1 CMPL QTAIL,R1 JZ NO_DATA ; HEAD=TAIL= EMPTY QUEUE COPY:;COPY FROM DEVICE TO RAM MOVL #32,R2 MOVL (R1)+,(R0)+ SUBL #1, R2 JNZ COPY ADDL #128, QHEAD; Rimuovo lelemento in testa MOVL #1,R1 JMP END NO_DATA: MOVL #0,R1 END: POP R2 POP R0 RET

Lettura: Driver Driver //attivato dopo una scrittura dallaltro processore Read from device and add a new element to READ_BUF Update READ_BUFs tail pointer (+32*4) clear dev rti

Lettura: Driver DRIVER 1,500h //attivato dopo una scrittura dallaltro processore PUSH R0 PUSH R1 PUSH R2 PUSH R3 MOVL QTAIL,R0 MOVL #32, R2; contatore MOVL #REG1, R3; in R3 memorizziamo lindirizzo delli-esimo registro L:INL R3, R1; acquisisce dalli-esimo registro in R1 MOVL R1, (R0)+ ADDB #1,R3 ; Assumiamo che i registri della periferica abbiano indirizzi contigui SUBL #1,R2 JNZ L ;Alluscita dal ciclo R0 punta alla longword che segue lultimo elemento memorizzato MOVL R0, QTAIL; Aggiorna il puntatore allultimo elem. della coda CLEAR DEV POP R3 POP R2 POP R1 POP R0 RTI