Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Documenti analoghi
Testi di Esercizi e Quesiti 1

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Informatica Teorica. Macchine a registri

Esercitazione 2 di verifica

Tipi di Bus. Bus sincrono. Comunicazioni nell elaboratore (e oltre) Bus sincroni e asincroni Standard commerciali (PCI,SCSI,USB)

Architettura di un calcolatore: introduzione

CALCOLATORI ELETTRONICI 15 aprile 2014

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Seconda v2.0

L unità di elaborazione pipeline L unità Pipelining

Calcolatori Elettronici

Architettura degli elaboratori (A)

Hazard sul controllo. Sommario

CPU. Maurizio Palesi

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Lezione n.19 Processori RISC e CISC

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

CALCOLATORI ELETTRONICI 31 marzo 2015

MODELLO DLX IN UNISIM

Aggiornato il 18 giugno Questa affermazione richiede una precisazione. A parità di altre condizioni, l eliminazione dello stadio ME allunga la

Calcolatori Elettronici

Macchina di von Neumann

Architettura del calcolatore

Architettura del Set di Istruzioni (ISA)

Caratteristiche di un PC

Calcolatori Elettronici. La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo

Capitolo Acquisizione dati con PC

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

Integer Java Virtual Machine (IJVM)

Lezione 7 Sommatori e Moltiplicatori

PARTE III MACCHINE A REGISTRI

Architettura di tipo registro-registro (load/store)

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Lezione n.9. Introduzione al linguaggio macchina

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

La macchina programmata Instruction Set Architecture (1)

Calcolatori Elettronici B a.a. 2006/2007

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.

Von Neumann. John Von Neumann ( )

CALCOLATORI ELETTRONICI 29 giugno 2010

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

La Macchina Virtuale

Università degli Studi G. d'annunzio C.L. Economia e Informatica per l'impresa. Sistemi Operativi e Reti A.A. 2014/2015 prof.

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Elementi di Architettura e Sistemi Operativi

I Bistabili. Maurizio Palesi. Maurizio Palesi 1

Programmazione dello Z80

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Introduzione. Un calcolatore digitale è costituito da un sistema interconnesso dei seguenti dispositivi:

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico-

Architettura di un sistema di calcolo

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Lezione E5. Sistemi embedded e real-time

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

Introduzione alle macchine a stati (non definitivo)

Calcolo numerico e programmazione Architettura dei calcolatori

INFORMATICA 1 L. Mezzalira

Calcolatori Elettronici

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

FONDAMENTI di INFORMATICA L. Mezzalira

Microelettronica. Architettura del processore ARM. Stefano Salvatori. Università degli Studi Roma Tre. Microelettronica

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Sistemi Web per il turismo - lezione 3 -

Architettura dei Calcolatori Parte Operativa e Parte Controllo

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Aumentare il parallelismo a livello di istruzione (2)

Esame di INFORMATICA

CALCOLATORI ELETTRONICI 29 giugno 2011

Fondamenti di informatica: un po di storia

La gestione dell I/O (Cap. 5, Tanenbaum)

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

Il Processore: i registri

Realizzazione del controllo

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

L architettura di riferimento

Trasformazioni del codice sorgente. Programmazione di qualità per sistemi embedded

Corso di Laurea in Matematica

ESERCIZI DEL CORSO DI INFORMATICA

Metodi Software per ottenere ILP

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

PG5 Starter Training Applicazione File System Daniel Ernst EN Stefano Peracchi IT

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Calcolatori Elettronici

L architettura del calcolatore (Prima parte)

Esercitazione sulle CPU pipeline

Corso di Laurea in Informatica Architetture degli Elaboratori

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Aumentare il parallelismo a livello di istruzione (1)

Parte II.2 Elaboratore

8 Microcontrollori PIC

Compito Sistemi Informativi LA. Tempo concesso : 90 minuti 28 Giugno 05 Nome: Cognome: Matricola: Esercizio 1

L Assembler Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

Lezione 3: Architettura del calcolatore

Schedulazione dinamica. Elettronica dei Calcolatori 1

Calcolatori Elettronici

Transcript:

Architettura degli Elaboratori A.A. 2013 2014 Quarto Appello 14 gennaio 2015 Riportare su tutti i fogli consegnati Nome, Cognome, Numero di matricola e Corso di appartenenza. Risultati e il calendario degli orali verranno pubblicati via web appena disponibili. Domanda 1 Si consideri un unità firmware U dotata di una memoria interna A da 64K posizioni che riceve da un altra unità U in richieste per l esecuzione delle operazioni esterne: memorizzazione nella posizione J della memoria A del valore X; lettura del valore alla posizione J della memoria A; ricerca del valore X nella memoria e restituzione dell indice della prima occorrenza di X in A o del valore (-1) in caso X non sia presente in A; sostituzione del valore della posizione J della memoria col massimo fra il vecchio valore ed X e restituzione del minimo fra i due valori. I valori J (16 bit) e X (32 bit) sono passati da U in. Il valore dell indice di X in A (della posizione J della memoria) viene restituito mediante il registro JOUT (XOUT). L interazione fra U in e U è a domanda risposta. Si fornisca il microprogramma della unità U nei due casi: utilizzando variabili di condizionamento complesse senza l utilizzo di variabili di condizionamento complesse Avendo cura di minimizzare il numero di micro istruzioni eseguite per implementare le operazioni esterne, si fornisca un raffronto del tempo medio di esecuzione delle operazioni esterne (da considerarsi equiprobabili) nei due casi e si discuta l impatto dell eventuale utilizzo di una memoria a doppia porta. Domanda 2 Si compili il seguente pseudo codice in assembler D-RISC: for(i=0;i<n;i++) { x[i] = a[i]*b[i]; y[i] = a[i]+1; b[i] = b[i]-1; } e se ne fornisca un analisi delle cause di degrado delle prestazioni su un processore pipeline con unità di esecuzione slave per le moltiplicazioni intere da 4 stadi. Si fornisca quindi un codice che ottimizza l efficienza. Domanda 3 Stimare la differenza del tempo di esecuzione di un trasferimento di un blocco di dati da una unità di I/O alla memoria centrale quando la periferica supporti memory mapped I/O ma non DMA; la periferica supporti sia memory mapped I/O che DMA.

Domanda 1 La prima versione del codice fa uso di variabili di condizionamento complesse per la realizzazione della terza e della quarta operazione esterna: 0. // attendi una richiesta di operazione (RDY, OP0, OP1, segno(x A[J]),zero(X-A[J])=0--_) nop, 0; // prima operazione esterna: memorizza il valore in ingresso (=100--) X A[J], reset RDY set ACK, 0; // seconda operazione esterna, leggi il valore richiesto (=101--) A[J] XOUT, reset RDY, set ACK, 0; // terza operazione: se non è il primo elemento, salta al ciclo di ricerca in [1,63] (=110-0) 1 C, 1; // se è il primo elemento restituisci l indice 0 e termina operazione esterna (=110-1) 0 OUTJ, reset RDY, set ACK, 0; // quarta operazione: si conclude immediatamente // se l elemento in ingresso è il maggiore memorizzalo e restituisci il vecchio valore (=1110-) X A[J], A[J] XOUT, reset RDY, set ACK, 0; // altrimenti restituisci il valore in ingresso e lascia immutata la memoria (=1111-) X XOUT, reset RDY, set ACK, 0 1. // ciclo di confronto: se trovo l elemento alla posizione corrente, ne restituisco l indice (C0,zero(X-A[C])=01) C JOUT, reset RDY, set ACK, 0; // se non lo trovo, proseguo (=00) C+1 C, 1; // se sono arrivato in fondo senza trovarlo, restituisco -1 (=1-) (-1) JOUT, reset RDY, set ACK, 0 Tutte le operazioni esterne, tranne la terza, vengono concluse con la sola micro istruzione 0. Per la terza operazione esterna è necessario eseguire un ciclo che scorre tutte le posizioni della memoria, se il valore cercato non c è, o la parte di memoria fino alla sua prima occorrenza. La realizzazione della PO richiede necessariamente l utilizzo di una memoria a doppia porta (un indirizzo da J e un indirizzo da C). Si potrebbe implementare il programma utilizzando una memoria con un solo indirizzo (memoria standard), a patto di trasferire, nella prima micro istruzione J in C e utilizzare poi una seconda micro istruzione per completare le operazioni esterne uno, due e tre. Questo non avrebbe però soddisfatto il vincolo di utilizzare il minimo numero di micro istruzioni per l implementazione delle operazioni esterne (2 invece di 1). PC Il micro programma ha due micro istruzioni (stato interno della PC da 1 bit) e 6 variabili di condizionamento (6 ingressi per la PC). Dunque T PC e T PC hanno al più 7 ingressi (1 livello AND). Nel micro programma ci sono 10 frasi, quindi ciascuna delle variabili di controllo ( e ) e la variabile che

indica il prossimo stato interno, avranno al massimo 10 uno nella corrispondente colonna della tabella di verità T PC. Tuttavia, se assumiamo che colonne con più di 8 uno possono essere codificate come negazione della codifica degli zero, possiamo concludere che anche il livello OR di T PC e T PC sarà costituito da un singolo livello di porte. Dunque T PC e T PC costeranno 2t p. PO Per T PO dobbiamo considerare t a + t alu. Occorrono due ALU distinte per la realizzazione delle variabili di condizionamento della prima micro istruzione (che prendono in ingresso l uscita di indirizzo J di A) e per la variabile di condizionamento della seconda micro istruzione (che prende in ingresso l uscita di inidirizzo C di A). Per T PO dobbiamo invece considerare i tempi spesi nelle diverse frasi del micro codice: Nella prima micro istruzione, la frase A[J] XOUT prevede una lettura in memoria seguita da una scrittura in un registro con un commutatore all ingresso (t a + t k). Nelle altre frasi, o si scrive l uscita di una ALU in un registro passando da un commutatore (t alu+t k) o si scrive un valore in memoria (senza passare da commutatori, dunque in t a). Dunque possiamo concludere che il massimo T PO vale (t a + t k) e è relativo a frasi con variabili di condizionamento complesso, dunque: = t a + t alu + max{ 2t p, 2t p + t a + t k } + t p = 2t a + t alu + t k + 3t p In caso non volessimo utilizzare variabili di condizionamento complesse, il codice dovrebbe essere leggeremente diverso: per la terza operazione esterna, in particolare, dovremmo produrre il valore di zero(x-a[j]) in un registro da testare poi in una micro istruzione successiva e per la quarta dovremmo fare lo stesso per il segno(x-a[j]). Il microcodice potrebbe essere il seguente: 0. (RDY, OP0, OP1 = 0--) nop, 0; (=100) X A[J], reset RDY, set ACK 0; (=101)A[J] XOUT, reset RDY, set ACK, 0; (=110) 0 C, zero(x-a[0]) Z, 1; (=111) segno(x-a[j]) S, 2 1. (C0,Z=00) C+1 C, zero(x-a[c]) Z, 1; (=01) C JOUT, reset RDY, set ACK, 0; (=1-) (-1) JOUT, reset RDY, set ACK, 0; 2. (S=0) X A[J], A[J] XOUT, reset RDY, set ACK, 0; (=1) X XOUT, reset RDY, set ACK, 0 Per la PC valgono considerazioni analoghe al caso precedente e possiamo senz altro dire che il ritardo di T PC e T PC sarà di 2t p.

Per la PO, T PO è 0 e T PO sarà dato determinato dal massimo fra il tempo richiesto per la A[J] XOUT (t k + t a + t k, il primo commutatore è per gli indirizzi, il secondo per la scrittura nel registro) e per la segno(x- A[J]) (t k + t a + t alu) dunque presumibilmente (t k + t a + t alu). Il calcolo del ciclo di clock porterà dunque a = 0 + max {2 t p, 2t p + t k + t a + t alu} + t p =t a + t alu + t k + 3t p Che risulta leggermente inferiore a quello calcolato nel caso di utilizzo delle variabili di condizionamento complesse. Tuttavia, in questo caso il tempo medio di esecuzione conta 2 per la quarta operazione esterna invece che 1. Tutte le altre operazioni esterne richiedono invece lo stesso numero di micro istruzioni. Quindi nel computo del tempo medio di esecuzione il caso di utilizzo di variabili di condizionamento complesse guadagna 1/4 (1 ciclo in un quarto dei casi corrispondenti alla quarta operazione esterna, pari a 2t a + t alu + t k + 3t p) ma perde un ta per ognuno dei cicli richiesti per le altre operazioni esterne per un totale di (¼ + ¼ + ¼(64K))t a = t a/2 + 16K t a. Questo ci porta a concludere che la seconda soluzione è senz altro più efficiente. Domanda 2 La compilazione del codice secondo le regole viste a lezione produce il codice (non ottimizzato): 1 CLEAR Ri 2 loop: LOAD RbaseA, Ri, Rai 3 LOAD RbaseB, Ri, Rbi 4 MUL Rai, Rbi, Rtemp 5 STORE RbaseX, Ri, Rtemp 6 ADD Rai, #1, Rai 7 STORE RbaseY, Ri, Rai 8 SUB Rbi, #1, Rbi 9 STORE RbaseB, Ri, Rbi 10 INC Ri 11 IF< Ri, RN, loop 12 end: END Vi sono dipendenze logiche fra la 4 e la 5, fra la 6 e la 7, fra la 8 e la 9 e infine fra la 10 e la 11, tutte di distanza 1. Tuttavia, non vi è alcuna dipendenza fra i risultati, come si evince dal grafo (data flow) delle dipendenze:

Di conseguenza le operazioni si possono eseguire in un ordine arbitrario, purchè i calcoli avvengano prima delle rispettive STORE. Si noti che il riassegnamento a b[i] non altera il parallelismo espresso dal grafo, in quanto la moltiplicazione opera sui valori correnti di a[i] e b[i] nei registri Rai e Rbi, e non sui valori modificati da scrivere in memoria. Tranne casi particolari, questo parallelismo non si sarebbe avuto se le 5 e 7 fossero state istruzioni INCR e DECR. Applicando il modello dei costi, poiché non ci sono dipendenze EU-EU che impattano sulla latenza delle dipendenze IU-EU, il tempo di servizio per istruzione è dato da: T = (1 + λ)t + d 1 t (L Q1 + 1 k 1 + L pipe 1 ) + 3 d 2 t (L Q2 + 1 k 2 + L pipe 2 ) = 20 t = 2t 10 ε = 1 2 L esecuzione del codice (non ottimizzato) sul processore pipeline può essere schematizzata come segue: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 IM CLEARLD LD MUL ST ADD ST SUB ST INC IF END LD IU CLEARLD LD LD MUL ST ST AD ST ST SUB ST ST INC IF IF END LD DM LD LD ST ST ST LD Eum CLEAR LD LD MUL ADD SUB INC LD EU* MUL MUL MUL MUL da cui si evince che un T = 20t/10 = 2t (al netto della prima bolla legata all inizializzazione del registro indice) e quindi un efficienza pari al 50%, come già calcolato col modello analitico. Il problema maggiore è legato alla MUL e nell ottimizzare il codice vi si porrà particolare attenzione. Possiamo anticipare le operazioni che producono i risultati da memorizzare con le store prima di effetture le store. Inoltre, visto che la MUL determina un bolla lunga, possiamo utilizzare lo slot del salto ritardato per la fine del ciclo per eseguire questa STORE. Possiamo anche anticipare la Ri, in modo da eliminare l effetto dalla dipendenza della INC sulla IF, avendo cura di utilizzare per le STORE (che a questo punto risultano successive alla INC Ri, registri base decrementati di 1. Tuttavia, l anticipo della INC Ri determina dipendenze EU-IU fra la INC Ri anticipata e le STORE. Per minimizzarne l effetto possiamo anticipare la INC rispetto alle altre operazioni aritmetiche. Questo però re-introduce una piccola bolla perché al momento di eseguire la prima STORE, il risultato da memorizzare non è ancora pronto sulla EU. Il codice risultante sarà quindi: 1 CLEAR Ri 2 loop: LOAD RbaseA, Ri, Rai 3 LOAD RbaseB, Ri, Rbi 4 INC Ri 5 MUL Rai, Rbi, Rtemp 6 ADD Rai, #1, Rai 7 SUB Rbi, #1, Rbi 8 STORE RbaseY, Ri, Rai

9 STORE RbaseB, Ri, Rbi 10 IF< Ri, RN, loop, delayed 11 STORE RbaseX, Ri, Rtemp 12 end: END Rimane una sola dipendenza logica, indotta dalla 5 sulla 7 (k = 2, d k = 1/10, N Qk = 2, L pipe-k = 0). Lo stesso effetto (una bolla ampia t) si sarebbe ottenuto scambiando la 4 con la 5(dipendenza indotta dalla ADD su a[i]), oppure anticipando una operazione rispetto alla MUL (in tal caso rimarrebbe una bolla ampia t a causa della dipendenza indotta dalla MUL). Dunque: T = t + d k (L Qk + 1 k + L pipe k ) = 11 10 t = 1.1 t ε = 10 11 = 0.91 La simulazione mostra lo stesso risultato: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 IM LD LD INC MUL ADD SUB ST ST IF ST LD IU LD LD INC MUL ADD SUB ST ST ST IF ST LD DM LD LD ST ST ST LD Eum LD LD INC MUL ADD SUB LD EU* MUL MUL MUL MUL T = 11t / 10 = t ed efficienza pari al 91%. E da tener presente che stiamo eseguendo un programma che effettua tre operazioni di store in 10 cicli. L architettura del sottosistema di memoria non è specificata, dunque dovremmo anche dire che, in presenza di politica write-through il sottosistema di memoria deve permettere l esecuzione di una STORE ogni 10t/3 senza rallentamenti. Domanda 3 L esecuzione di una copia fra unità di I/O e memoria centrale quando sia o non sia presente il supporto DMA differisce sostanzialmente nel tempo speso, sul processore, per realizzare il trasferimento: se non vi è supporto DMA, il processore esegue un ciclo di LOAD+STORE il cui effetto è quello di leggere in un registro una locazione della memoria interna della periferica (utilizzando il MM I/O) e di portare tale valore in memoria. Il costo per ognuno dei trasferimenti è quindi pari al fetch + esecuzione di almeno due istruzioni (senza considerare il controllo delle iterazioni) in aggiunta al tempo di trasferimento dalla memoria interna della periferica alla memoria principale. se è presente il supporto per il DMA, il tempo speso a livello di processore è nullo, ma ovviamente si deve comunque attendere un trasferimento da memoria interna della unità di I/O a memoria principale per ognuna delle parole del blocco. Va notato che, qualora il trasferimento avvenisse sotto il controllo del processore, la scrittura avviene in cache (ed eventualmente in memoria principale se la cache è gestita mediante politiche

write-through), mentre utilizzando il DMA normalmente la scrittura avviene in memoria principale e una successiva lettura dei valori causa fault in cache.