Prove d'esame assegnate nel 1997
1
23/2/95
Progetto di un banco di memoria per il Pentium
2
28/1/97
Interfacciamento del DLX con l'Interrupt Controller 8259
3
25/2/97
Progetto di interfaccia generica configurabile (stile PCI)
4
10/5/97
Progetto di un meccanismo di accesso esclusivo a una risorsa condivisa
5
11/6/97
Calcolo delle prestazioni di un sistema con memoria cache e memoria virtuale
6
10/7/97
Progetto di un sistema equipaggiato con un riconoscitore programmabile di una sequenza di caratteri
7
5/9/97
Progetto di un router basato su trasferimenti fly-by in DMA (CPU 8086)
8
10/10/97
Progetto di un router basato su Pentium e DMA con interfacce di input/output interconnesse a banchi diversi del bus dati
9
13/12/97
Progetto di un server basato su trasferimenti fly-by in DMA (CPU 8086)

Progetto di un banco di memoria per il Pentium

Prova Scritta del 23 Febbraio 1995 (L-Z)

1) Si progetti un banco di memoria per il processore PENTIUM con le seguenti caratteristiche:

Si richiede:

  1. Il progetto dell'hardware.
  2. La verifica che il sistema funzioni a 50 Mhz.
  3. Il calcolo del numero di stati di wait (ciclo singolo e ciclo burst).
  4. Il disegno delle forme d'onda dei segnali di controllo nel caso di cicli singoli e cicli burst

 (Punti 21)

2) Si esegua uno dei due esercizi seguenti:

- Esercizio 2.1)

- Esercizio 2.2)

Si descriva la dinamica della pipeline del DLX nell'esecuzione del seguente codice (Punti 5)

  ADD R3,R0,R0
  BEQZ R3, ALFA
BETA: ADD R5,R6,R6
ALFA: SUB R9,R10,R11
  SUB R12,R13,R14

Si disegni la pipeline utilizzata indicando in particolare i blocchi interessati alla gestione dell'istruzione di branch e si valuti la massima frequenza di funzionamento della pipeline (Punti 7).

 

Interfacciamento del DLX con l'Interrupt Controller 8259

Prova scritta del 28 gennaio 1997 (L-Z)

Si riprogetti la pipeline a 5 stadi del DLX in modo da realizzare la gestione delle interruzioni generate da un 8259. A tal fine il DLX dispone dei seguenti segnali di comunicazione con l'8259: INT, INTA# e D[0:7].
La nuova pipeline del DLX dovrà gestire:

  1. il trasferimento del controllo alla routine di servizio
  2. il ritorno al programma interrotto.
Valgono le seguenti ipotesi:
Si devono soddisfare le seguenti specifiche di progetto:
Si richiede:
Si suggerisce di campionare il segnale esterno INT nello stadio ID.

Progetto di interfaccia generica configurabile

Prova scritta del 25 febbraio 1997 (L-Z)

Si vuol dotare un sistema a microprocessore basato su Pentium a 66Mhz, con clock a 50Mhz di un flessibile meccanismo di indirizzamento dei dispositivi periferici cosi' concepito:

  1. ogni periferica ha parallelismo 8 e puo' essere mappata sia I/O sia in MEM;
  2. sono programmabili l'indirizzo iniziale in I/O e l'indirizzo fisico iniziale in MEM di ogni periferica;.
  3. e' programmabile da 1 a 128 (solamente secondo le potenze di 2) il numero di byte che la periferica occupa nello spazio di indirizzamento; si suppone che l'indirizzo iniziale sia "allineato" (es. una periferica che occupa un byte puo' essere allocata ovunque, mentre una periferica che occupa 32 byte puo' essere allocata a indirizzi multipli di 20H);
  4. e' programmabile il numero di stati di wait associato alla periferica;
  5. sono previste al piu' 8 periferiche, identificate con i numeri da 0 a 7.

Per realizzare questo meccanismo di indirizzamento e' necessario associare a ogni periferica alcuni registri di configurazione; ad essi e' possibile accedere (in lettura ed in scrittura) attraverso due indirizzi di I/O, CONF_ADD equ 0CF8H e CONF_DATA equ 0CFCH. CONF_ADD contiene l'identificatore della periferica e del relativo registro di configurazione (2 byte), mentre CONF_DATA contiene il dato di 4 byte (numero di stati wait o numero di byte occupati o indirizzo in mem o indirizzo in I/O ).

A titolo di esempio e per maggiore chiarezza si riporta di seguito il codice per la programmazione del parametro PARAM_ID della periferica PERIF_ID:

  mov dx, 0CF8H ; indirizzo a cui inviare l'identificatore dell'agente da configurare
  mov al, PERIF_ID  
  mov ah, PARAM_ID  
  out dx, ax ; seleziona il registro da programmare
  mov eax, DATO_DI_CONFIG  
  mov dx,0CFCH ; indirizzo a cui inviare i dati di configurazione
  out dx, eax ; output del dato di configurazione di 4 byte

Si esegua il progetto del sistema nell'ipotesi di gestire 3 82C55 mediante il meccanismo suindicato. Si evidenzino in particolare:

(punti 27)

Si supponga che i tre 82C55 vengano mappati in memoria agli stessi indirizzi lineari in modo da poter essere utilizzati da tre task A, B e C che condividono il codice (ogni task dispone di un 82C55 privato). Si indichi il contenuto di tutte le strutture dati di sistema (TSS, IDT, PT, PD, etc.) che consentono di ottenere il funzionamento desiderato (punti 6)

 

Progetto di un meccanismo di accesso esclusivo a una risorsa condivisa

Prova scritta del 10 maggio 1997 (L-Z)

N sistemi a microprocessore si (0 < i < n) dotati ciascuno di interrupt controller accedono in modo mutuamente esclusivo a una risorsa condivisa (es. un canale radio gestito a divisione di tempo). L'accesso alla risorsa da parte di un sistema si avviene quando sono contemporaneamente verificate le seguenti due condizioni:

  •   Condizione 1: in ingresso a si vi e' una richiesta pendente (il verificarsi di una richiesta viene segnalato da un segnale ri tramite un impulso asincrono della durata di pochi nsec.; si fanno le due ipotesi che le richieste siano gestite a interrupt e che su ogni sistema si le richieste arrivino sufficientemente distanziate da non provocare errori di overrun).

      Condizione 2: il sistema si e' autorizzato ad accedere alla risorsa condivisa; in assenza di richieste l'autorizzazione viene continuamente e circolarmente trasferita dal sistema si al sistema s(i+1) mod n alla frequenza di 200 KHz. L'autorizzazione viene invece trattenuta presso il sistema si durante tutto il periodo di servizio della richiesta (accesso alla risorsa condivisa).

  • Fa parte della risorsa condivisa un display di una cifra a sette segmenti gestito come segue: il display, inizialmente spento, visualizza l'indice i del sistema si che per ultimo ha completato il servizio di una richiesta (dunque ogni sistema si al termine della routine di servizio accederà al display...).

    Si supponga che n sia uguale a 3 e che i sistemi si siano realizzati con Pentium con clock a 50 MHz, bus non in pipeline, funzionamento in protected mode, un solo task per CPU, impaginazione disabilitata.

    Si chiede:

    1. il progetto hardware della logica di generazione della richiesta di servizio a si e di trasferimento a valle dell'autorizzazione; le parole di controllo dell'8259 (punti 13)
    2. il progetto dell'hardware e della routine software di controllo del display (punti 8)
    3. il calcolo della max latenza di servizio di una richiesta nell'ipotesi che la durata massima di una routine di servizio sia di 500 microsec. (punti 3)
    4. la stima del tempo di esecuzione, del numero di cicli di bus e del numero di periodi di clock necessari per gestire una richiesta nelle seguenti ipotesi (punti 6):
    1. Memoria principale caratterizzata da (r-b-w) = (4-2-4).
    2. Latenza nel servizio di un interrupt : 25 Clock a cui vanno aggiunti i tempi di accesso al bus dovuti ai cicli INTA ed alle miss.
    3. Tempo di esecuzione della istruzione IRET: 10 Clock a cui vanno aggiunti i tempi di accesso al bus dovuti alle miss.
    4. Tempo di esecuzione di una istruzione di I/O: 20 Clock.
    5. Stack sempre in cache, codice e dati cacheable, politica write-back, codice e dati da ricaricare in cache ad ogni interrupt.
    6. Miss sugli accessi a GDT, IDT e LDT.
    7. Codice di servizio delle richieste composto da un loop di 80 istruzioni di 4 byte ripetuto 48 volte; non ci sono alee RAW, WAW, AGI e, ad esclusione delle situazioni di miss, ogni istruzione resta un solo clock in ogni stadio della pipeline
    8. Nel loop ci sono 16 letture e 4 scritture in memoria; le letture sono tutte a variabili ad indirizzi crescenti distanziate di almeno 32 byte, mentre le scritture sono su variabili appena lette.

     

    Calcolo delle prestazioni di un sistema con memoria cache e memoria virtuale

    Prova scritta dell'11 giugno 1997 (L-Z)

    In un sistema basato su Pentium un vettore ALFA di 16 Double Words è memorizzato all’inizio di un segmento dati allocato all’indirizzo lineare 8020 0000 H e all’indirizzo fisico 1 0000 H; si scriva la routine assembler che calcola la somma degli elementi del vettore e si supponga di allocarla all’indirizzo lineare 9000 0000H (indirizzo fisico 2 4000H) (punti 3)

    Si supponga di mettere in esecuzione la routine partendo dalla situazione di cache e TLB invalidi.

    Gestione a interrupt di risorse, alcune delle quali condivise con altri sistemi

    Due sistemi a microprocessore, s0 ed s1 , dotati ciascuno di interrupt controller accedono in modo mutuamente esclusivo a una risorsa condivisa. L'accesso alla risorsa da parte di un sistema si avviene quando sono contemporaneamente verificate le seguenti due condizioni:

  •   Condizione 1: in ingresso a si vi e' una richiesta pendente; sono possibili due tipi di richiesta: una richiesta "interna" da parte del sistema stesso che "prenota" l’accesso alla risorsa non appena ne ha bisogno, e una richiesta "esterna" il cui verificarsi viene segnalato da un segnale ri tramite un impulso asincrono della durata di pochi nsec.; si fanno le ipotesi che le due richieste siano gestite a interrupt e che su ogni sistema si le richieste di uno stesso tipo arrivino sufficientemente distanziate da non provocare errori di overrun.

      Condizione 2: il sistema si e' autorizzato ad accedere alla risorsa condivisa; in assenza di richieste l'autorizzazione viene continuamente e circolarmente trasferita dal sistema si al sistema s(i+1) mod 2 alla frequenza di 100 KHz. L'autorizzazione viene invece trattenuta presso il sistema si durante tutto il periodo di servizio di una richiesta (accesso alla risorsa condivisa).

  • Si supponga che i sistemi si siano realizzati con Pentium con clock a 50 MHz, bus non in pipeline, funzionamento in protected mode, un solo task per CPU, impaginazione disabilitata.

    1. Nell’ipotesi che all’8259 arrivino altre richieste di interrupt locali di priorità più bassa e non soggette al vincolo dell’autorizzazione, si esegua il progetto hardware della logica di generazione delle due richieste di servizio a si e di trasferimento dell’autorizzazione (punti 10).
    2. Si scrivano le parole di programmazione dell’8259 per ciò che riguarda l’inizializzazione ed il funzionamento a regime e si descriva il meccanismo hardware/software di prenotazione dell’accesso alla risorsa condivisa (punti 3).

     

    Riconoscimento di una sequenza di caratteri programmabile

    Prova scritta del 10 luglio 1997 (L-Z)

    Un sistema con DMA e 8086 gestisce una periferica di ingresso da 8 bit ad elevate prestazioni in grado di generare dati a frequenza fino a 100 kHz. La disponibilità di un dato è segnalata da un impulso attivo basso della durata di 500 ns (STROBE). Il numero di byte da trasferire in memoria è costante e pari a 60 K (indirizzo iniziale 10000H); il primo dato da trasferire in memoria è quello che segue una sequenza programmabile di 3 byte. Si progetti l’hardware del sistema e si indichino le parole di programmazione del DMA avendo cura di fare le seguenti ipotesi sulla periferica di ingresso:

    (punti 24)

    Si ipotizzi che il sistema disponga di una cache di primo livello con stato MESI e con linee di 16 byte. Si supponga che il DMA possa eseguire transazioni di lettura e scrittura tutte di dimensione costante pari a 20 linee con indirizzo iniziale allineato alla linea.

    1. Si indichi quali sono le transizioni dello stato MESI per cicli di DMA read e per cicli di DMA write.
    2. In entrambi i casi si calcoli il numero minimo ed il tipo di cicli di bus necessari ad assicurare la coerenza dei dati nel caso di 3 linee invalide, 4 modified, 5 exclusive e 8 shared.
    3. Nel contesto considerato si indichi quale modifica si può apportare al meccanismo di gestione del protocollo MESI del Pentium e perché.

    (punti 9)

    Progetto di un router basato su trasferimenti fly-by in DMA

    Prova scritta del 5 settembre 1997 (L-Z)

    Un sistema con DMA e 8086 dispone di quattro 8255, di cui 3 sono configurati in modo 0 output, mentre uno e’ configurato in modo 1 input (solo porta A). Il sistema funziona da router secondo la seguente modalità: l’8255 in input riceve con continuità pacchetti di due byte, di cui il primo (detto indirizzo di destinazione) individua la porta di output a cui è destinato il secondo. Le porte di uscita sono numerate da 0 a 8 e la corrispondenza fra l’indirizzo (cioe’ il primo byte del pacchetto) e la porta selezionata deve essere programmabile, ad esclusione degli indirizzi FD, FE ed FF che prevedono invece sempre la selezione simultanea rispettivamente delle tre terne di porte (0,3,6), (1,4,7), (2,5,8). Si suggerisce di utilizzare una RAM per memorizzare la corrispondenza tra indirizzo e porta selezionata (tabella di routing). Tutti i trasferimenti devono essere effettuati in DMA (fly-by).

    Si esegua il progetto dell’hardware, si indichino le parole di controllo del DMAC e si indichi come viene programmata la tabella di routing, in particolare agli indirizzi FD, FE, FF. (punti 27)

    Si disegni la forwarding unit che, nella pipeline del DLX, consente specificamente di minimizzare gli stalli dovuti ad alea di dato nelle situazioni in cui una istruzione di store segue una load. (punti 4)

    In tali situazioni (Store che segue una Load) si distinguano i casi di alea di dato possibili e si indichi il numero di stalli associato a ciascuno di essi. (punti 2)

     

    Progetto di un router basato su Pentium e DMA con periferiche interfacciate a banchi diversi del bus dati

    Prova scritta del 10 ottobre 1997

    Un sistema basato sul processore PENTIUM a 66 MHz con clock a 50 MHz dispone di 512 KB di EPROM e 256 KB di RAM con tempi di accesso rispettivamente di 100 ns e 80 ns. Tutta la memoria e' definita "non cacheable", ne' si vogliono sfruttare cicli di bus in pipeline.

    Il sistema dispone di un DMA controller 8237, di due 8255 e di un 8274. Gli 8255 hanno le porte A in modo 1 in input e le porte B in modo 0 output. L'8274 ha entrambi i canali programmati in modo asincrono 8 bit, 19200 bauds, no parity, 1 stop bit. I dispositivi periferici sono tutti interfacciati direttamente al bus locale del Pentium, ciascuno su un byte diverso.

    Il sistema deve funzionare nel seguente modo:

    1. Si progetti il sistema con tutti i dispositivi che si ritengono necessari e si individuino le varie parole di controllo.
    2. Si indichi qual e' la massima frequenza di arrivo dei dati sulle porte B degli 8255 che garantisce il regolare funzionamento del sistema.
    3. Si indichi inoltre a parole quali modifiche e' necessario apportare al progetto se si desidera togliere i vincoli di memoria non cacheable e di inibizione dei cicli in pipeline.

    (Punti 33)

    Progetto di un server basato su trasferimenti fly-by in DMA (CPU 8086)

    Prova scritta del 13 dicembre 1997 (L-Z)

    Un sistema basato su microprocessore 8086 a 10 MHz, DMAC e controllore di linee seriali 8274 funziona da "servitore di richieste" secondo la seguente descrizione a parole:

    La soluzione deve includere le memorie in quantità sufficiente per il corretto funzionamento del sistema (si utilizzino RAM da 128 K e 80 nsec di tacc, ed EPROM o FLASH da 64 K e 100 nsec di tacc. La linea seriale deve funzionare a 19.200 baud. (punti 26)

    Quesito aggiuntivo: si studi un meccanismo che consenta di rimuovere l'ipotesi di alternanza tra richiesta e servizio; il meccanismo deve solamente gestire l'eccezione di "ricevimento di nuova richiesta prima del completamento del servizio della richiesta precedente"; non e' necessario mettere in coda richieste che non possono essere servite immediatamente.

    Secondo esercizio:

    Un sistema basato su un processore con bus dati da 64 bit, linee cache di 32 byte e clock a 50 MHz rinfresca continuamente una RAM da 1 Mbyte. Si suppone che un ciclo di scrittura/lettura singolo richieda 100 nsec e che un ciclo di scrittura/lettura burst richieda 280 nsec.; si suppone inoltre che il micro esegua l'operazione di rinfresco con istruzioni di scrittura di un solo byte alla volta (es: mov [ebx][edi], al). Nell'ipotesi di riservare a questa attivita' di refresh il 50% della banda del bus, si calcoli qual e' il numero max. di operazioni di refresh al sec., nei seguenti casi:

    1. memoria non cacheable
    2. memoria cacheable, inizialmente invalida gestita con politica di Write Around/Write Through
    3. memoria cacheable inizialmente invalida gestita con politica di Write Allocate/Write Back
    4. memoria gestita secondo il modello detto "write-combining" così definito: memoria non cacheable con scritture che non vanno direttamente sul bus ma vanno su un buffer interno di 32 byte detto Write Combining Buffer (WCB); di qui i dati vengono trasferiti in memoria con cicli di Write Back quando il WCB è pieno.

    (punti 7)