METODOLOGIA DI PROGETTO PER LA TRADUZIONE DI SPECIFICHE AD ALTO LIVELLO IN VHDL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "METODOLOGIA DI PROGETTO PER LA TRADUZIONE DI SPECIFICHE AD ALTO LIVELLO IN VHDL"

Transcript

1 POLITECNICO DI MILANO FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA METODOLOGIA DI PROGETTO PER LA TRADUZIONE DI SPECIFICHE AD ALTO LIVELLO IN VHDL Relatore: Correlatore: Prof. Fabrizio FERRANDI Ing. Marco Domenico SANTAMBROGIO Tesi di Laurea di: Paola MUSSIDA Matricola n Marco LOSITO Matricola n ANNO ACCADEMICO

2 Alle nostre care Famiglie

3 Indice Introduzione 1 1 Stato dell Arte Le Macchine a Stati Finiti Macchine di Mealy Macchine di Moore Macchine a Stati Finiti con Datapath Diagrammi ASM Blocchi Grafi e Cammino Critico I Grafi: Notazione e Nomenclatura Gli Activity Networks Il Cammino Critico Metodologia Introduzione Preliminari Prima Fase: Traduzione dell algoritmo di partenza in un diagramma ASM State box Decision box Condition box Macrostrutture ii

4 2.3.5 Blocchi ASM, o ASM blocks Seconda Fase: Traduzione del diagramma ASM in specifica VHDL sintetizzabile Traduzione da state box a VHDL Traduzione da decision box a VHDL Traduzione da Condition Box a VHDL Testing della periferica, scrittura del driver e integrazione della periferica Caso di Studio: Il Cammino Critico Aree Applicative Strumenti Fasi del Progetto Studio del Problema Formalizzazione del Codice C ASM VHDL e Verifica Integrazione Verifica e Conclusioni 74 A Diagrammi ASM 78 Ringraziamenti 82 Bibliografia 84

5 Elenco delle figure 1.1 Una macchina Sequenziale generica (di Mealy o di Moore) Macchina a stati finiti rappresentata tramite un diagramma degli stati Calcolo della parità tramite una Macchina di Moore Schema di Finite State Machine with Datapath Esempio di blocchi di un diagramma ASM Ciclo costituito da un solo blocco Esempio generico di grafo non diretto Esempio di grafo orientato o diretto Esempio di grafo orientato con un ciclo Esempio di grafo aciclico e orientato (DAG) Livelli dell ordinamento topologico di un grafo Esempio di grafo Activity Networks Grafo diretto e aciclico con pesi sugli archi e cammino critico Frammento di algoritmo relativo al calcolo del tempo minimo Frammento di algoritmo relativo al calcolo del tempo massimo Algoritmo relativo al calcolo del cammino critico Flusso della Metodologia Proposta Due possibili alternative nella creazione di State box Livelli di operazioni effettuate Esempio di traduzione del costrutto: finchè condizione ripeti Esempio di traduzione di ciclo Esempio di blocco generico iv

6 2.7 Esempio di blocco Flusso di sviluppo del progetto Porzione di codice C relativo al calcolo del tempo minimo Parte del codice relativa all acquisizione del grafo da file codice in cui si evidenzia la gestione dello scheduling Frammento di codice in cui vengono settati il nodo origine e quello finale Dettaglio del codice sul calcolo del tempo minimo Frammento di codice in cui viene determinato il sotografo critico Diagrammi della parte di codice relativa al calcolo del percorso minimo e massimo Esempio di codice C dell algoritmo che viene tradotto in diagrammi ASM Esempi di box derivanti dalla traduzione del codice di Figura Esempio di uno stato della FSM, derivante dalla traduzione del codice di Figura Foto della Virtex-II Pro Evaluation Board Verifica tramite strumenti software Integrazione dell IP core in una architettura A.1 Diagramma ASM che descrive l algoritmo che calcola TMax e TMin di un DAG A.2 Diagramma ASM che descrive l algoritmo che ricava da TMax e TMin il sottografo critco di un DAG A.3 Diagramma ASM che descrive l algoritmo che trova i percorsi critici dato un sottografo critico

7 Elenco delle tabelle 1.1 Tipi fondamentali di box in un diagramma ASM, con esempio Condition Box, con esempio Attività del progetto in esempio Matrice di adiacenza del grafo di Figura 1.12, derivante dalla Tabella Tipi di box in un diagramma ASM con esempio Lo spostamento di una box da un blocco all altro. In questo modo la state box diventa una condition box Esempio di dichiarazione del grafo, affiancato dalla rappresentazione del grafo stesso Esempio di traduzione di state box Esempio di traduzione di decision box Esempio di traduzione di condition box vi

8 Introduzione L obiettivo principale è giungere ad un chiaro metodo che mira a semplificare e formalizzare il passaggio da un algoritmo ad una specifica Very high speed integrated circuits Hardware Description Language (VHDL). Tale ricerca è stimolata dalla volontà di applicare teorie affermate per creare una metodologia nuova riguardante alcune fasi dello sviluppo hardware. Nel primo capitolo vengono mostrate le basi teoriche che rappresentano le fondamenta del metodo esposto. Si prendono in analisi alcune teorie esistenti riguardanti il design digitale ed inoltre vengono fornite tutte le conoscenze necessarie alla comprensione della metodologia proposta e del caso di studio presentato. Una volta fornite queste basi, nel capitolo 2 si propone una nuova metodologia di traduzione da specifiche ad alto livello in VHDL. Nel corso del capitolo si illustra dettagliatamente la metodologia proposta, analizzandola fase per fase, partendo dalla specifica ad alto livello fino ad arrivare alla specifica VHDL. Nella descrizione fornita vengono mostrati singolarmente il modo di operare e le motivazioni delle scelte effettuate. Nel 3 o capitolo si presenta la reale implementazione in hardware, tramite l applicazione della metodologia proposta, di un IP core dedicato al calcolo del cammino critico in un grafo. Nel capitolo, partendo da una specifica iniziale in C, si cerca di approfondire l aspetto implementativo della metodologia, illustrando in dettaglio le fasi della traduzione in VHDL per la creazione di un IP core. L obiettivo è quello di illustrare in modo più dettagliato la metodologia tramite l analisi critica di tutte le scelte implementative effettuate per lo specifico caso di studio. I risultati riportati nel Capitolo 4 mostrano una metodologia snella, che facen- 1

9 Introduzione do uso di nozioni semplici, permette uno sviluppo lineare e rapido di descrizioni VHDL. Vengono presentati i test effettuati sull implementazione risultante dal caso di studio e, basandosi sul loro esito, si valida la metodologia. Si accennano quindi possibili lavori futuri derivanti dal lavoro svolto. 2

10 Capitolo 1 Stato dell Arte Il presente capitolo mira a fornire tutte le informazioni e le conoscenze di base utili alla lettura ed alla comprensione di questo lavoro di tesi. Principalmente la descrizione si articola su tre sezioni. La prima di queste, relativa alle macchine a stati finiti, Finite State Machines o FSM, ed alle macchine a stati finiti con datapath, Finite State Machines with Datapath o FSMD, rappresenta la base per la seconda, riguardante i diagrammi Algoritmic State Machine o ASM, presentati in [2]. Infine l ultima di queste è dedicata alla presentazione delle definizioni utili alla comprensione del caso di studio. 3

11 1.1 Le Macchine a Stati Finiti CAPITOLO 1. STATO DELL ARTE Una macchina, o automa, a stati finiti, è un semplice modello operazionale che permette di risolvere una certa gamma di problemi 1 e per questo rappresenta una delle basi teoriche fondamentali della metodologia proposta in questa tesi. Poichè le FSM sono particolarmente affini a quello che sarà il risultato definitivo in hardware, esse diventano una delle strutture fondamentali descritte nella specifica VHDL risultante. Le FSM sono definite tramite una tripletta < Q, I, δ > dove: Q è un insieme finito di stati q 0, q 1, q 2, q 3,... ; I è un insieme finito di ingressi i 0, i 1, i 2,... detto alfabeto; δ è una funzione (parziale), detta funzione di transizione, che permette di calcolare lo stato prossimo dallo stato corrente e dall ingresso. Q I Q. Uno schema per una generica macchina sequenziale è illustrato in Figura 1.1. Figura 1.1: Una macchina Sequenziale generica (di Mealy o di Moore). Un utile rappresentazione delle FSM è il così detto diagramma degli stati 2 [3],[4]. Un diagramma degli stati è un grafo orientato che specifica gli stati, rappresentati come nodi, e la funzione di transizione tra essi, rappresentata dagli archi, 1 Per un analisi dei problemi risolvibili tramite una FSM si veda [1]. 2 Si noti, che questa rappresentazione grafica è soltanto una delle molteplici utilizzate per le FSM. Come ulteriori esempi di rappresentazioni molto utilizzate si citano: le tabelle degli stati, 4

12 CAPITOLO 1. STATO DELL ARTE Figura 1.2: Macchina a stati finiti rappresentata tramite un diagramma degli stati. di una FSM. Ogni arco ha un etichetta corrispondente all ingresso cui é associata la transizione tra gli stati congiunti dall arco. Un esempio di FSM rappresentata tramite grafo è visibile in Figura 1.2. Esistono in letteratura varie estensioni alla definizione di FSM proposta in precedenza, ma si è deciso di adottare da qui in poi le macchine definite dalla sestupla < Q, I, U, δ, λ, q 0 >. Queste differiscono dalla precedente definizione per l aggiunta opzionale di uno stato iniziale 3 q 0 rappresentante lo stato in cui si trova la macchina al partire dell esecuzione, di un insieme di simboli U detto alfabeto di uscita e di una funzione parziale λ detta funzione di uscita. Queste estensioni vengono aggiunte per far sì che la FSM possa rappresentare due differenti macchine, semanticamente equivalenti tra loro, ma che differiscono per la funzione di uscita λ. Si tratta della macchina di Mealy e della macchina di Moore 4, che vengono descritte nei due paragrafi seguenti. le tabelle delle transizioni, e le tabelle delle eccitazioni. Per una trattazione più approfondita si vedano [3] e [4]. 3 Detto anche stato di reset. 4 Una macchina di Mealy può sempre essere trasformata in una macchina di Moore, e viceversa 5

13 CAPITOLO 1. STATO DELL ARTE Macchine di Mealy Nella macchina di Mealy, l uscita U in un determinato istante, dipende sia dallo stato corrente, sia dell ingresso. Cioè λ è definita come: λ : Q I U (1.1) Questa macchina viene rappresentata nel diagramma degli stati precedentemente descritto inserendo lo stato iniziale q 0 e l uscita. Il primo viene indicato con un arco entrante recante l etichetta reset, mentre le uscite sono rappresentate accodando il testo dell uscita al testo dell ingresso sugli archi che le determinano Macchine di Moore A differenza della macchina di Mealy, nella macchina di Moore, l uscita dipende unicamente dallo stato corrente, cioè λ è definita come: λ : Q U (1.2) La rappresentazione delle macchine di Moore nel diagramma degli stati aggiunge alla descrizione di una FSM lo stato iniziale q 0, proprio come nel caso della macchina di Mealy. L uscita è invece indicata nello stato che la provoca. Un esempio di grafo di questo tipo è illustrato dalla Figura 1.3. Figura 1.3: Calcolo della parità tramite una Macchina di Moore. 6

14 CAPITOLO 1. STATO DELL ARTE. L ampia letteratura riguardante la formalizzazione degli automi [1], che affonda le sue basi nella logica matematica, è stata estesa tramite un datapath dagli studi di Daniel D. Gajski [2] Macchine a Stati Finiti con Datapath Il trattamento di informazione tramite le semplici FSM può incontrare varie difficoltà dovute alla specifica natura di queste macchine. Per esempio, non vi è altra memoria se non i registri di stato (come si può vedere dalla Figura 1.1), per cui è difficile memorizzare dati in grande quantità. Inoltre, è difficile capire come far compiere operazioni matematiche all automa tramite le sole transizioni. Per ovviare a questi ed altri problemi il modello delle FSM viene esteso 5 tramite un datapath. Si giunge dunque alle macchine a stati finiti con datapath. L estensione in questione prevede di aggiungere un datapath, inclusivo di registri, il cui contenuto viene elaborato e confrontato da una logica combinatoria. Formalmente la FSMD è quindi definita [2] come una FSM, cui si aggiungono: Un insieme di variabili V, che definisce lo stato del datapath, specificando tutti i valori di tutte le variabili. Expr(V ) = K V {(e i e j ) e i, e j Expr, dove è un operatore accettabile} (abbiamo definito le espressioni computabili dal datapath sui dati dei suoi registri) STAT = {stat k = e i e j e i, e j Expr(V ), dove è un comparatore valido, ossia { <, >,,, =, }}. In pratica abbiamo definito i confronti eseguibili dal datapath sui dati contenuti nei suoi registri, detti segnali di stato. Si è dunque definito un formalismo che permette implicitamente di specificare macchine nelle quali una FSM controlla le operazioni da eseguire su una 5 Ciò è dovuto a Gajski. Si veda [2] 7

15 CAPITOLO 1. STATO DELL ARTE Figura 1.4: Schema di Finite State Machine with Datapath. memoria. Si noti che le operazioni eseguite sui dati non vengono descritte nel dettaglio. Questo tipo di progettazione, detta anche register transfert design, non si concentra infatti sui dettagli del design logico, bensì sulla funzionalità. Detto questo è possibile suddividere la FSMD, nelle sue due componenti principali: il controllore ed il datapah (si veda Figura 1.4), per ognuna delle quali si separano gli ingressi dalle uscite e le funzioni δ e λ tra le due componenti. Formalmente questa suddivisione è operata nel seguente modo: I = I c I d, dove I c sono gli ingressi del controllore e I d sono gli ingressi del datapath. U = U c U d, dove U c sono le uscite del controllore e U d sono le uscite del datapath Data la funzione i stato prossimo λ: (Q x V) x I Q V otteniamo λ c : Q I c STAT Q, dove STAT sono i Segnali di Stato λ d : Q V I d V ( ed λ d := λ Di : V I d V : V j = e j V j V, e j Expr(V I d )) Data la funzione di uscita δ: 8

16 CAPITOLO 1. STATO DELL ARTE δ c : Q I c STAT O c δ d : Q V I d O d Questa macchina è stata quindi divisa in due parti distinte, datapth e controllore. Il datapath opera, a richiesta del controllore, operazioni aritmetiche o logiche sui dati contenuti nei registri. Quando calcola funzioni, scegliendole in base ai segnali di controllo, sfrutta una parte di logica (multiplexers e demultiplexers rispettivamente MUX e DEMUX) che gli permette di leggere e scrivere nel registro corretto. Quando invece opera confronti su variabili, utilizzando sempre multiplexers, compara i dati corretti e segnala il risultato al controllore. Il controllore invece comanda il datapath mediante segnali di controllo, ricevendo risposte tramite i segnali di stato. In sintesi il controllore istruisce il datapath sulle operazioni da effettuare sui dati, calcolando mediante una FSM quali operazioni sono opportune. Si fa notare che è possibile utilizzare architetture con più di un controllore e datapath, e che è anche possibile riscrivere il controllo in dati e viceversa, ovvero la distinzione Dati/Controllo è sempre opzionale. Fissata questa formalizzazione, si necessita di un metodo descrittivo per le FSMD. La descrizione di algoritmi tramite ASM è la soluzione a questa necessità Diagrammi ASM Gli Algoritmic State Machine charts (o diagrammi ASM) sono uno strumento capace di descrivere il design register transfert, astraendo dalla suddivisione in controllore e datapath. Una volta creato un diagramma ASM, partendo da un algoritmo è poi possibile estrarre da questo un cosiddetto diagramma a blocchi, che permette di separare controllore e datapath, ed individuare gli stati del primo. Un diagramma ASM fa uso di due fondamentali tipi di box 6, più uno opzionale, connessi da frecce, che rappresentano il flusso di esecuzione. 6 Viene utilizzato il termine box in quanto il termine blocco può creare confusione con i blocchi del block diagram 9

17 CAPITOLO 1. STATO DELL ARTE Tipo di Box Rappresentazione della Box State Decision Tabella 1.1: Tipi fondamentali di box in un diagramma ASM, con esempio I due tipi fondamentali di box sono le state box e le decision box, illustrate in Tabella 1.1. Le state box eseguono incondizionatamente una o più operazioni. Sono rappresentate da un rettangolo contenente le istruzioni da eseguire, dal quale esce una ed una sola freccia, in quanto la box da eseguire successivamente è fissata. E permesso eseguire un numero arbitrario di operazioni contemporanee, a patto di rispettare la regola dell assegnamento singolo, ossia: Un registro può essere assegnato soltanto una volta in una stessa state box. Le decision box 7 servono a scegliere quale box sarà eseguita successivamente basandosi sull ingresso e sullo stato presente. Queste box si rappresentano come un rombo, all interno del qual è presente il TEST da eseguire, con due frecce etichettate con T ed F che rappresentano i possibili risultati del test. É possibile utilizzare solamente lo stato e l ingresso presente al ciclo corrente. Oltre alla rappresentazione riportata in Tabella1.1, che equivale ad un test a risultato binario, sono (più raramente) utilizzate anche decision box che rappresentano il costrutto CASE, per cui hanno più di due frecce uscenti. In questo caso, la box è rappresentata tramite un esagono. Nel presente lavoro di tesi non si farà però uso di decision box a più uscite. 7 La notazione alternativa conditional, riportata da alcuni testi, non sarà utilizzata in quanto crea confusione con le conditional output box. 10

18 CAPITOLO 1. STATO DELL ARTE Le due box descritte fin ora sono quelle necessarie e sufficienti a descrivere correttamente una macchina di Moore. Le macchine di Mealy invece, fanno uso di un uscita condizionata, ovvero possono eseguire o no operazioni in un certo stato in base all ingresso della macchina (e non solo allo stato stesso). Per supplire a questa mancanza, i diagrammi ASM introducono le cosiddette conditional output box, o condition box, rappresentate in Tabella 1.2. Tipo di Box Rappresentazione della Box Condition Tabella 1.2: Condition Box, con esempio In queste box, a cui si applica la stessa restrizione dell assegnamento singolo valida per le state box, le istruzioni vengono eseguite soltanto nel caso si trovino nel ramo di uscita attivo della decision box 8 presente 9 nello stesso stato. Sono rappresentate tramite un rettangolo dagli angoli smussati, con una ed una sola freccia di uscita. La box iniziale e quella finale di un diagramma ASM formalmente non vengono indicate con nessuna notazione particolare, infatti si possono dedurre dal contenuto delle box e dalla topologia del grafo, in quanto l esecuzione in genere viene rappresentata come un fluire discontinuo dall alto verso il basso. La box iniziale può essere indicata tramite una freccia entrante portante l etichetta reset, ma nella definizione di Gajski questa è omessa introducendo una decision box nella quale viene testato il valore di una variabile Start. Nel caso il test dia esito negativo si rimane in questa stessa box, che è anche quella in cui si giunge al termine dell esecuzione. Sebbene questa rappresentazione sia utile per la successiva traduzione in quanto è più aderente al VHDL, per non appesantire troppo i diagrammi presenti, e per renderli più facilmente leggibili, si userà un altra 8 Nel caso si tratti di un albero di decision box, si richiede che la conditional sia a valle di un cammino che abbia tutti gli archi attivi 9 Una decision box, come vedremo nel Capitolo 2 può esistere solo se l ultima box prima di quella in questione è una decision box 11

19 CAPITOLO 1. STATO DELL ARTE notazione. La box iniziale sarà indicata dalla freccia portante l etichetta reset, mentre lo stato finale sarà indicato tramite un cerchio contenente una. Visto che si è operata questa scelta in modo arbitrario, si consiglia, una volta compresa la metodologia di traduzione, di adottare la notazione di Gajski. Per maggiori dettagli sulla notazione formale si rimanda in ogni caso a [2] Blocchi Una volta terminato il disegno del diagramma ASM e possibile tracciare attorno alle box dei blocchi, altrimenti detti blocks, rappresentati da rettangoli tratteggiati, che permettono innanzitutto di distinguere la parte di controllo dalla parte di datapath, e secondariamente individuano esattamente gli stati del controllore. Grazie a queste caratteristiche i blocchi facilitano la traduzione del diagramma ASM in VHDL. Il tracciamento dei blcchi porta ad un grafo che è talvolta chiamato block diagram. Figura 1.5: Esempio di blocchi di un diagramma ASM. 12

20 CAPITOLO 1. STATO DELL ARTE Quest operazione è sottoposta ad alcuni vincoli, che fanno sì che la suddivisione in blocchi abbia senso. Il grafo deve rappresentare un unico stato prossimo dato uno stato, ed un insieme di condizioni. Ogni percorso, definito dalla rete di Conditional box, deve portare ad un altro stato. Da notare che, in base alla seconda condizione si giunge alla regola: Non è possibile avere retroazione all interno di un blocco. Ciò significa che non si possono avere cicli all interno di un blocco, anche se si possono avere cicli costituiti da un blocco solo, come nell esempio di Figura 1.6. Figura 1.6: Porzione del diagramma ASM costituita da un ciclo, costruito mediante un solo blocco. 13

21 CAPITOLO 1. STATO DELL ARTE In base alle regole appena enunciate è possibile raggruppare una o più box all interno di un blocco. Questi blocchi individuano esattamente gli stati della FSM inclusa nel controllore. Definito questo è possibile individuare in modo semplice la distinzione tra controllore e datapath. Questo procedimento sarà discusso nel dettaglio nel Capitolo 3. Seguono cenni di teoria dei grafi, necessari alla comprensione di vari argomenti trattati nel presente elaborato di tesi. 1.2 Grafi e Cammino Critico Per comprendere il concetto di cammino critico è utile chiarire l idea di grafo, più precisamente si vuole specificare perché sia necessario, per il calcolo del Critical Path, l avere un grafo aciclico, orientato, che abbia un unico nodo iniziale ed un unico nodo finale. Seguono pertanto le definizioni su cui si baserà la trattazione del caso di studio (Capitolo 4). Saranno inoltre presentate due differenti teorie che si basano sui grafi: quella della lettereratura tradizionale e quella relativa agli activity netkorks. Poichè il caso di studio si basa principalmente sulla seconda, si è preferito sviluppare e approfondire maggiormente questo argomento, anche supportandolo tramite un esempio I Grafi: Notazione e Nomenclatura Un grafo, ad esempio quello mostrato in Figura 1.7, è costituito da un insieme di nodi (rappresentati come cerchi) collegati da archi (linee che congiungono i nodi). Se il grafo è orientato, ogni arco è descritto come una freccia che collega il nodo di origine al successivo. Più formalmente: 14

22 CAPITOLO 1. STATO DELL ARTE Un grafo, G = (N; A), è una coppia di insiemi: N è un insieme finito e non vuoto di elementi, A è un insieme finito di coppie di elementi distinti di N. N è detto insieme dei nodi (o vertici), e usualmente viene indicato mediante i primi n = N numeri naturali : N = { 1, 2,..., n}. L insieme A, detto insieme degli archi, è in generale indicato con A = { a 1, a 2,..., a m } ( m = A ); ogni arco individua una coppia di nodi, definiti adiacenti. Considerando n come numero dei nodi e m come numero degli archi, vale la relazione: 0 m < n 2 Figura 1.7: Esempio generico di grafo indiretto. 15

23 CAPITOLO 1. STATO DELL ARTE Una sequenza di nodi n 1, n 2, n 3,..., n n forma un cammino di lunghezza n 1 10 se esistono gli archi da v i a v i+1 per 1 i < n. Un cammino è semplice se tutti i vertici che lo costituiscono sono distinti. Ci sono molti tipi di grafi, contradistinti da particolari caratteristiche, in generale un grafo è : sparso se ha pochi archi; denso se ha molti archi; completo se ha tutti i possibili archi; diretto o orientato (Figura 1.8 e Figura 1.9) Un grafo orientato, anche detto diretto (D-Graph), viene definito come una coppia di insiemi: D = (N; A), ove N rappresenta l insieme dei nodi ed A quello degli archi fra due vertici per cui vale: A = (x, y) x, y N indiretto se non è diretto Figura 1.7); aciclico se non contiene cicli; aciclico-diretto o DAG (illustrato in Figura 1.10 e descritto in seguito). In un grafo orientato un cammino n 1, n 2,..., n n costituisce un ciclo se n 1 e n 1 = n n. Il ciclo è semplice se n 2,..., n n sono distinti, mentre si tratta di un autoanello se n = 1. Per un esempio di grafo con ciclo semplice si veda la Figura 1.9, in cui è evidenziato il ciclo fra i nodi recanti etichette A, C, e B. Si definisce un sottografo S = (N S, A S ) di un grafo G = (N, A) quando gli insiemi dei vertici e degli archi archi sono inclusi, rispettivamente, nell insieme dei vertici e degli archi del grafo G ( N S N A S A ) e tutti i vertici di ogni lato presente in A S si trovano in N S. 10 Si osservi che la lunghezza del cammino equivale, più semplicemente, al numero dei nodi coinvolti 16

24 CAPITOLO 1. STATO DELL ARTE Figura 1.8: Esempio di un generico grafo orientato (o diretto). Un grafo aciclico e orientato, D-A-Graph (DAG), come quello mostrato in Figura 1.10, è un grafo diretto in cui non esistono autoanelli o cicli, per cui partendo da qualsiasi nodo non è mai possibile ritornare sullo stesso dopo un numero arbitrario di passi [12]. Qualsiasi tipo di grafo può esser rappresentato in vari modi. La rappresentazione tramite matrice di adiacenza di un grafo è costituita da un array bidimensionale N N, dove N rappresenta il numero dei nodi del grafo. Ogni elemento dell array contiene un valore booleano che indica se l arco (x, y) 11 appartiene al grafo. Dato un DAG ed un suo nodo, detto nodo origine, è possibile calcolare il cosiddetto Topological Sort o ordinamento topologico. L ordinamento topologico è un modo di creare una partizione all interno dell insieme dei nodi. I sottoinsiemi creati nell insieme dei nodi rappresentano quelli che vengono definiti livelli del grafo. Il numero del livello a cui appartiene un nodo è la massima distanza in 11 Questa notazione indica un arco generico, specificando la coppia corrispondente al nodo di partenza x ed il nodo di arrivo y 17

25 CAPITOLO 1. STATO DELL ARTE Figura 1.9: Esempio di un generico grafo orientato contenente un ciclo semplice. archi del nodo in questione dal nodo origine. Più approfonditamente, come si può osservare in Figura 1.11 l unico nodo appartenente al livello 0 è il nodo di origine, i nodi appartenenti al livello 1 sono i nodi che sono figli del nodo origine, e non sono figli di nessuna altro nodo. Appartengono al livello 2 i nodi figli di nodi appartenenti solamente ai livelli 0 ed 1, cioè che hanno almeno un padre appartenente al livello 1, un numero arbitrario anche nullo di padri del livello 0, e nessun padre appartenente ad altri livelli. Appartengono al livello 3 i nodi con almeno un padre appartenente al livello 2, un numero arbitrario di padri appartenenti ai livelli 0 ed 1, e nessun padre appartenente ad altri livelli. Tale procedimento può essere ripetuto per tutti i nodi del grafo, ossia un nodo appartiene al livello x se e solo se: ha almeno un padre al livello x Per una trattazione più formale si veda [1]. 18

26 CAPITOLO 1. STATO DELL ARTE Figura 1.10: Esempio di un generico grafo aciclico e orientato (DAG). non ha padri a livelli superiori o uguali ad x Questa visione dei grafi, frequentemente utilizzata nella progettazione hardware, considera gli archi senza peso di percorrenza, ma solo come unione dei nodi ed è solo una delle possibili visioni che si hanno dei grafi stessi, a seconda degli usi previsti Gli Activity Networks Un altro punto di vista, sviluppato soprattutto nell ambito della ricerca operativa, ma molto frequente anche nella gestione aziendale, prevede di assegnare i valori delle attività agli archi che congiungono i nodi. I nodi rappresentano quindi degli stadi intermedi (fatta eccezione per il nodo iniziale e quello finale) che servono esclusivamente a definire le precedenze. Considerando ad esempio gli Activity Networks 13, si ottiene il grafo delle precedenze delle attività, in cui: 13 Gli Activity Networks sono grafi, utilizzati in economia, nei quali gli archi rappresentano le attività da compiere per concludere un progetto. I nodi si chiamano eventi e rappresentano l inizio o la fine di una attività. L inizio del progetto coincide col nodo iniziale, mentre la fine con il nodo finale. 19

27 CAPITOLO 1. STATO DELL ARTE Figura 1.11: Esempio di livelli del grafo ordinati secondo un ordinamento topologico. I vertici rappresentano eventi, cioè istanti in cui accade qualcosa (es. inizio o fine di un attività); Gli archi rappresentano le attività del progetto; Gli archi tratteggiati rappresentano attività fittizie, cioè di durata nulla (con peso zero, ndr) che vengono introdotte per rappresentare delle precedenze; Il vertice iniziale indica l inizio del progetto, il vertice terminale, la fine. Si consideri ad esempio un progetto definito da quattordici attività (da A a P), le cui durate sono definite nella Tabella 1.3, insieme alle relazioni di precedenza tra le varie attività stesse. 20

28 CAPITOLO 1. STATO DELL ARTE Attività Durata Predecessori A 1 - B 3 - C 1 - D 3 A E 5 B F 10 B G 1 C H 2 C I 3 H L 5 D, E M 1 D, E N 5 F, G O 5 I P 7 L, O Tabella 1.3: Attività del progetto in esempio Utilizzando le convenzioni degli Activity Networks, è possibile disegnare il grafo delle precedenze fra attività, come mostrato in Figura 1.12, appunto partendo dalla tabella in esame. Questa nuova rappresentazione rende un ampia visione d insieme ed è facilmente comprensibile. Si osserva infatti che il nodo 0 è iniziale, il nodo 9 è finale e rappresenta la conclusione del progetto, da cui deriva che l ultima attività completata sarà appunto la P, mentre è necessario svolgere innanzitutto le attività A, B e C che possono esser eseguite anche contemporaneamente, in quanto sono del tutto indipendenti fra loro. 21

29 CAPITOLO 1. STATO DELL ARTE Figura 1.12: Esempio di un Activity Networks, corrispondente ai valori della Tabella 1.3. Infine, dal grafo (così come dalla tabella delle precedenze) è comunque possibile visualizzare la matrice delle adiacenze 14, Tabella 1.4, per gli activity networks. A differenza della tradizionale matrice di adiacenza, ogni elemento dell array non contiene un valore booleano, bensi il reale peso dell arco sotteso fra i due nodi corrispondenti. Si usa poi uno speciale carattere (nell esempio è : - ) per indicare l assenza degli archi. L importanza degli Activity Networks, soprattutto nel campo gestionale-manageriale, risulta molto evidente anche per la relazione di questi con le tecniche di programmazione applicate ai progetti per la gestione dei tempi, come i diagrammi di Gantt e Pert. 14 La matrice di adiacenza è solo una delle possibilità di rappresentare un grafo. È nota infatti anche la lista di adiacenza, in cui ad ogni nodo viene associata la lista dei successori, per un grafo diretto. Questa risulta comunque più efficiente per grafi sparsi, in quanto memorizza solo gli archi realmente occupati. 22

30 CAPITOLO 1. STATO DELL ARTE Tabella 1.4: Matrice di adiacenza del grafo di Figura 1.12, derivante dalla Tabella 1.4 Il diagramma di Gantt è uno strumento di scheduling e di controllo, in cui vengono rappresentate le attività che costituiscono il progetto attraverso delle barre aventi lunghezza proporzionale alla durata della singola attività. Queste attività vengono disposte parallelamente all asse orizzontale, il quale rappresenta il calendario di progetto. Il diagramma di Pert è invece una tecnica di modello reticolare che consente di costruire un modello operativo di un progetto e cerca di sopperire alle lacune del diagramma di Gantt. La conversione di un progetto in un diagramma di Pert si basa sulla stesura dell elenco delle attività, ordinato con criteri di precedenza sulla loro analisi a seconda che precedano o seguano immediatamente un determinato lavoro oppure che possano avvenire in parallelo. In quanto modello reticolare, il diagramma di Pert esplicita quindi le relazioni di interdipendenza fra le operazioni elementari, solitamente basandosi sulla tipologia 15 Finish to Start per cui 15 Le relazioni di dipendenza precedenza possono essere di quattro differenti tipologie: Finish to Start, Finish to Finish, Start to Start e Start to Finish, in cui il primo termine si riferisce all attività 23

31 CAPITOLO 1. STATO DELL ARTE l attività di partenza deve finire prima di iniziare quella di arrivo. In particolare il diagramma di Pert evidenzia tutti gli eventi e le attività, posti in sequenza logica e visualizzati tramite una rete, e permette di focalizzare gli sforzi principali e di valutare l effetto di eventuali cambiamenti sul progetto. Nel diagramma di Pert, proprio come negli Activity Network, i rami (o linee) rappresentano le attività, mentre i nodi (o cerchi) gli eventi. [10] Il Cammino Critico La ricerca del percorso massimo è un problema che è stato ampiamente studiato, insieme al suo duale, nell ambito della ricerca operativa, ed è disponibile un ampia trattazione teorica con la rispettiva documentazione. Il cammino critico, o Critical Path è l insieme dei nodi critici (cioè quei nodi che vincolano il tempo di esecuzione 16 ) che costituiscono uno dei possibili percorsi di un grafo. Esso viene spesso utilizzato per determinare la durata minima di un progetto. Visto che al completamento del progetto, tutte le attività devono esser state eseguite, nel rispetto delle precedenze, ogni cammino dal nodo di inizio del progetto al nodo di fine determina una durata al di sotto della quale il progetto non può essere completato. Il metodo del cammino critico individua quindi il cammino più lungo del grafo, cioè che possiede la più alta sommatoria dei pesi degli archi. Per calcolare il cammino critico si richiede in genere la precondizione che il grafo in esame non contenga cicli nè autoanelli, in quanto gli algoritmi di analisi su tali grafi potrebbero non terminare mai, così come è necessario che ogni grafo sia caratterizzato da un solo inizio e da una sola fine, congiunte in modo sequenziale attraverso vari cammini fra i nodi intermedi 17. Questi cammini posdi partenza, mentre il secondo a quella di arrivo. 16 Per una definizione più rigorosa di cosa sia un nodo critico si faccia riferimento al paragrafo successivo. 17 Teoricamente è possibile separare un grafo con più uscite e/o ingressi in più grafi distinti e successivamente calcolare il cammino critico dei sottografi risultanti, oppure aggiungere due nodi al grafo per unire eventuali inizi o fini multiple, ma queste possibilità, in modo conforme con gli 24

32 CAPITOLO 1. STATO DELL ARTE sono essere fra i più svariati, ma è sempre possibile suddividere l intero grafo in livelli. Ogni nodo può quindi essere eseguito se e solo se sono state risolte tutte le sue precedenze e il nodo terminale sarà l ultimo ad esser svolto. Queste precedenze forniscono anche un idea del tempo di esecuzione: i nodi di un livello (ad eccezione del nodo radice) possono cominciare la loro esecuzione solamente se sono stati completati tutti i loro padri, ossia tutti i nodi che li precedono, situati nei livelli precedenti. In Figura 1.13 è illustrato il grafo aciclico e orientato di Figura 1.10, a cui vengono aggiunti i pesi sugli archi e su cui viene evidenziato il cammino critico. Figura 1.13: Grafo aciclico e orientato (Figura 1.10) a cui sono stati aggiunti i pesi sugli archi e su cui è evidenziato il camino critico. È innanzitutto necessario precisare che ogni grafo deve avere almeno un nodo critico, tre, se si contano anche il nodo di inizio ed il nodo di fine, e può anche avere tutti i nodi critici. Dualmente, esiste almeno un cammino critico per ogni grafo, ma la cardinalità può esser anche maggiore, fino al caso limite di grafi nei quali ogni percorso dall inizio alla fine è critico, Viene per questo motivo individuato il sottografo costituito esclusivamente dai nodi critici, cosicchè sia possibile activity list, non verranno analizzate. 25

33 CAPITOLO 1. STATO DELL ARTE estrarre successivamente tutti i percorsi. Data un attività, per ridurre il tempo di esecuzione, ovvero per aumentare le prestazioni di ogni rete basata su grafi, è necessario individuare il percorso più lento, chiamato appunto percorso critico, in quanto solo diminuendo il tempo di esecuzione del cammino critico diminuisce il tempo di esecuzione dell intero grafo. 26

34 CAPITOLO 1. STATO DELL ARTE Ricerca del Cammino Critico I nodi critici, ossia i nodi che appartengono al sottografo critico, sono tutti quei nodi in cui il tempo massimo di esecuzione coincide con il tempo minimo. Risulta quindi necessario determinare entrambi i tempi di esecuzione per ogni nodo. Lo scheduling è l operazione che determina l istante in cui parte l esecuzione delle attività in un dato grafo diretto. Più formalmente, dato un grafo orientato D=(N; A), la soluzione del problema del calcolo del valore di scheduling richiede che il tempo d inizio di un operazione t i sia almeno lungo quanto il tempo di inizio t j di ognuno dei suoi predecessori diretti, più il suo ritardo di esecuzione, così come mostra la seguente relazione: t i t j + d i j, i, j (n i, n j ) N in cui t i è il tempo del nodo che rappresenta l evento inizio di una determinata attività, t j rappresenta il tempo necessario affinché sia teminata l esecuzione dell attività precedente, mentre d i j indica la durata dell attività intermedia che congiunge i due vertici i e j presi in analisi. Il metodo per la ricerca del sottografo critico opera in due fasi: nella prima si etichettano i vertici a partire dal nodo di origine, seguendo la direzione delle precedenze, per individuare l istante minimo di ogni evento, quindi l istante minimo di inizio di ogi attività, da qui detto come TMIN (Tempo Minimo); nella seconda fase si etichettano i vertici a partire dalla fine del progetto, seguendo gli archi nel verso opposto delle precedenze, per determinare l istante massimo di accadimento di ogni evento, cioè l istante massimo di completamento delle attività, da qui TMAX (Tempo Massimo). Entrambe le fasi etichettano quindi i nodi che rappresentano il termine di un attività o l inizio di quella successiva, assegnando ad ognuno due valori: sia il tempo minimo che quello massimo. In altri termini, il tempo minimo indica il tempo necessario che permette l inizio dell attività, al di sotto del quale non è possibile scendere in quanto non sono state ancora risolte tutte le precedenze. Esso viene determinato dal seguente algorimo (Figura 1.14): 27

35 CAPITOLO 1. STATO DELL ARTE Figura 1.14: Frammento di algoritmo relativo al calcolo del tempo minimo nella ricerca del cammino critico. Il tempo massimo, che rappresenta il problema duale, determina invece il massimo intervallo di tempo dopo di cui non può più cominciare l attività senza creare ritardi nel progetto stesso. L algoritmo relativo al tempo massimo è il seguente (Figura 1.15): Figura 1.15: Frammento di algoritmo relativo al calcolo del tempo massimo nella ricerca del cammino critico. Si definisce mobilità di un nodo l intervallo di tempo derivato dalla differenza fra il tempo massimo e il tempo minimo. Un attività può incominciare in un qualsiasi istante compreso nell intervallo di tempo fra il tempo minimo che la caratterizza e il rispettivo tempo massimo, quindi per tutto l arco di tempo definito dalla mobilità, senza che venga modificata la durata del progetto. Quando la 28

36 CAPITOLO 1. STATO DELL ARTE mobilità è nulla, ossia quando i due valori TMin e TMax coincidono, si tratta di un attività il cui nodo che indica l evento iniziale è critico. 29

37 CAPITOLO 1. STATO DELL ARTE Algoritmo CPM ( N, A, n 0, n N, d, tmin, tmax, LC) ingresso: grafo DAG=(N, A); nodo origine n 0 ; nodo finale n N ; durate d i j 0, (i, j) A; uscita: istanti minimo e massimo di accadimento di ogni evento; lista contenente i nodi critici LC; Figura 1.16: Algoritmo relativo al calcolo del cammino critico. 30

38 Capitolo 2 Metodologia Nel presente capitolo si presenta dettagliatamente la metodologia proposta, suddividendo le operazioni da compiere in due fasi distinte. Le fasi vengono quindi analizzate mostrando come, partendo dalla specifica ad alto livello ed utilizzando la prima, sia possibile tradurre la specifica stessa in un diagramma ASM, e come applicando la seconda fase sul diagramma ASM ottenuto si operi una traduzione per giungere fino alla descrizione VHDL. Quest analisi viene compiuta mostrando approfonditamente il modo di operare e le specifiche scelte metodologiche. 2.1 Introduzione Sfruttando studi di Gajski[2] si è sviluppata una metodologia che cerca di formalizzare e semplificare lo sviluppo di Sistemi Embedded. Attraverso la metodologia trattata si divide lo sviluppo di un IP core nelle due seguenti fasi: Traduzione dell algoritmo dal linguaggio di alto livello in un diagramma ASM; 31

39 CAPITOLO 2. METODOLOGIA Traduzione del diagramma ASM in VHDL. La linea di demarcazione tra le due fasi è piuttosto netta, ciò significa che, una volta tracciato il diagramma ASM e passati alla seconda fase, non è più necessario tornare sui propri passi e modificare l algoritmo di partenza. Questo a patto di non aver compiuto sostanziali errori durante la definizione dell algoritmo di alto livello o nella prima fase di traduzione. Il flusso di progetto proposto, che è una versione semplificata e riadattata del flusso a cascata di sviluppo del software, è chiarito dalla Figura Preliminari La creazione di un IP core parte da una specifica 1 del problema da risolvere, sulla quale sia stata fatta una analisi di fattibilità. Questa fase esula dalle tematiche del presente testo, e pertanto non verrà affrontata. Si può dire quindi che la base per l applicazione della metodologia è una definizione di qualche tipo dell algoritmo da tradurre. I requisiti per questo algoritmo è che sia corretto e definito in modo preciso e possibilmente formale. Queste necessità sono dovute al fatto che una cattiva definizione(o ancor peggio l utilizzo di un algoritmo scorretto), se diagnosticata in modo tardivo, porta ad un grave costo in termini di tempo di sviluppo. Per avere buone probabilità di soddisfare le caratteristiche richieste si consiglia di definire l algoritmo tramite un linguaggio di programmazione a propria scelta. Si è infatti rilevato che questo, formalizzando l algoritmo, facilita lievemente l applicazione della metodologia. I diagrammi ASM rappresentano un passaggio fondamentale intermedio della 1 Per quanto riguarda la formalizzazione di specifiche si rimanda ai testi di informatica teorica[1]. 32

40 CAPITOLO 2. METODOLOGIA Figura 2.1: Flusso della metodologia di traduzione proposta nel presente elaborato. 33

41 CAPITOLO 2. METODOLOGIA metodologia, situandosi tra la specifica in linguaggio di alto livello, o ancor peggio in pseudocodice o linguaggio naturale e il livello della descrizione in VHDL. La traduzione di un algoritmo corretto, preciso e ben formalizzato è un operazione semplice che permette di costruire diagrammi ASM partendo direttamente dallo (pseudo)codice dell algoritmo dato. 2.3 Prima Fase: Traduzione dell algoritmo di partenza in un diagramma ASM Rileggendo sequenzialmente il codice ed analizzandolo in un ottica di basso livello si incontrano sempre tre tipi di strutture, chiamate ASM box: state box; decision box; condition box. Esempi di ASM box riportati in Tabella 2.1. Le ASM box illustrate, che sono strutture sufficienti a descrivere qualunque algoritmo computabile, corrispondono nei diagrammi ASM ad altrettante box. Quindi la semplice ma delicata fase di stesura del diagramma ASM equivale ad una approfondita analisi dell algoritmo, la quale riconosca queste box all interno dell algoritmo. E cioè necessario analizzare lo (pseudo)codice di partenza, e trasformarlo in una rete composta unicamente dalle semplicissime tre ASM box rappresentate in Tabella 2.1. I tre paragrafi presentati di seguito spiegano come tradurre strutture algoritmiche in ASM box State box Una qualunque parte di codice che esegua operazioni o assegnamenti, e non includa alcun test o confronto (come { <, >,,, =, })fa uso delle state box. È dunque semplice inserire le istruzioni presenti nell algoritmo nel diagramma 34

42 CAPITOLO 2. METODOLOGIA Tipo di Box Rappresentazione della Box State Decision Condition Tabella 2.1: Tipi di box in un diagramma ASM con esempio ASM, in quanto l unico vincolo presente è la regola dell Assegnamento Singolo, che riportiamo: Un registro può essere assegnato soltanto una volta in una stessa state box. È da notare comunque che, per quanto si possa scrivere un qualunque numero di istruzioni da eseguire contemporaneamente in una state box, è spesso sconsigliabile inserirne un numero eccessivo. Infatti spesso inserire state box comprendenti molte istruzioni, magari ciascuna composta di molte operazioni elementari 2 nel diagramma ASM può generare alcuni poblemi di traduzione in seguito. Questo può essere ovviato nella seconda fase proposta dalla metodologia (che fornisce un metodo per tradurre il diagramma ASM in VHDL) riadattando leggermente il diagramma ASM dividere le istruzioni presenti in una sola box tra più box distinte. Nonostante questo è possibile eliminare il problema a monte suddividendo in modo critico le istruzioni nelle state box. Bisogna quindi ricordare che esistono 2 Operazioni elementari possono essere, ad esempio, +,,,, oppure il valore assoluto 35

43 CAPITOLO 2. METODOLOGIA vincoli non stretti a ciò che è consigliabile inserire in un singolo state box, dettati da considerazioni riguardanti l hardware che viene in seguito prodotto. Eseguire n operazioni semplici in parallelo richiede che sia disponibile fisicamente l hardware necessario ad eseguire n operazioni. Questo aumenta le prestazioni temporali del dispositivo (si ha un tempo di esecuzione n volte inferiore al tempo necessario ad eseguire le n operazioni in serie) ma spesso, per diminuire l area necessaria a realizzare il dispositivo (e quindi il suo costo di produzione), si preferisce utilizzare n volte lo stesso hardware. Eseguire invece istruzioni complesse, come ad esempio il calcolo di una espressione composta da molti operatori algebrici (oltre a necessitare dello spazio necessario ad implementare tutte le operazioni in hardware), fa sì che il tempo necessario ad eseguire l operazione sia pari al tempo di esecuzione del percorso critico del grafo corrispondente all espressione algebrica. Volendo implementare in uno state box le seguenti istruzioni, e ponendo per semplicità il costo (temporale e spaziale) dell implementazione di ogni operatore pari ad 1 a = (b 5) + (c/(d e)) h = 3 + b otteniamo il diagramma in Figura 2.2 (riquadro A), cui corrispondono le seguenti caratteristiche: Un tempo di esecuzione pari a 3 (cioè il numero di livelli del grafo che rappresenta l equazione più complessa).(si veda Figura 2.3) Un costo spaziale pari a 5, cioè pari al numero di operatori utilizzati:, +, /,, +. Scorporando invece lo state Box in più state box semplici, come mostrato nel riquadro B della Figura 2.2 Possiamo avere: un tempo di esecuzione pari a 5 (cioè pari al numero di operazioni elementari da eseguire). 36

44 CAPITOLO 2. METODOLOGIA Figura 2.2: Due delle possibili alternative nella creazione di State box. Un costo spaziale pari a 3, cioè pari al numero di operatori differenti utilizzati (+,,/ ), infatti si ipotizza di riutilizzare gli operatori. In conclusione, per quanto inserire istruzioni dell algoritmo di partenza nelle state box possa sembrare estremamente semplice, per generare un diagramma ASM eccellente è necessario saper guardare oltre la traduzione meccanica, tenendo conto delle problematiche della futura implementazione in hardware. Questo può significare anche mettere mano ad alcune scelte precedenti, cioè potrebbe essere necessario rivedere leggermente la specifica di alto livello, per adattarla Decision box Le strutture algoritmiche che comprendono test generano decision box. Portiamo come esempio due strutture, tra le più comuni nella descrizione di algoritmi: la struttura se condizione allora... altrimenti... e la struttura finchè condizione ripeti.... se condizione allora... altrimenti... Facendo riferimento alla seconda riga in Tabella 2.1, dove è presentata una decision box, si può notare che è immediato tradurre un costrutto se condizione 37

45 CAPITOLO 2. METODOLOGIA Figura 2.3: Livelli di operazioni effettuate.... allora in una condition box. Infatti l esempio riportato è la traduzione in diagrammi ASM dello pseudocodice seguente: se (jncnr>0) allora "segui il ramo in basso" altrimenti "segui il ramo a destra" end se finchè condizione ripeti... Se la traduzione del costrutto se condizione... allora è banale, anche volendo tradurre la porzione di pseudocodice seguente, corrispondente ad un costrutto finchè condizione ripeti... non si incontrano comunque grandi difficoltà. Infatti: finchè (z=0) codice end finchè ripeti viene tradotto nella parte di diagrammi ASM in Figura

46 CAPITOLO 2. METODOLOGIA Figura 2.4: Esempio di traduzione del costrutto: finchè condizione ripeti.... Risulta chiaro che osservando l algoritmo, ed inserendo una decision box, ogni qual volta si incontra un test, si può costruire la struttura del grafo ASM Condition box Le condition box sono un particolare tipo di state box, le quali sono inserite in cascata a decision box. Quindi condition e state box ricoprono lo stesso ruolo, e le condition box sono opzionali. Le condition box sono necessarie per avere una corrispondenza forte tra diagrammi ASM e macchine di Mealy ed inoltre, come sarà spiegato successivamente, servono a ridurre il numero degli stati del controllore 3. Se non vengono usate mai conditional box, la macchina risultante sarà una macchina a stati di Moore, altrimenti, se ne è presente almeno uno, risulterà una macchina a stati di Mealy 4. In generale, volendo descrivere un algoritmo con una macchina di Mealy, è consigliabile inserire in una condition box le istruzioni che nell algoritmo ad alto 3 Come detto nel Capitolo 1, i blocchi che vengono successivamente tracciati nel diagramma ASM rappresentano gli stati del controllore 4 Ogni macchina di Mealy, può essere trasformata in una di Moore (e viceversa). Risulta quindi di semplice comprensione il fatto che si possa fare a meno di utilizzare conditional box per la descrizione di un qualsiasi algoritmo 39

47 CAPITOLO 2. METODOLOGIA livello seguono una decision box, in quanto questo facilita l applicazione delle fasi successive descritte nel presente capitolo. 40

48 CAPITOLO 2. METODOLOGIA Viene illustrato brevemente un esempio di come tradurre alcune strutture (che verranno chiamate d ora in poi macrostrutture), presenti in descrizioni in alto livello di algoritmi, le quali generano nel diagramma AMS reti composte da un discreto numero di box Macrostrutture Per mostrare in modo più approfondito la traduzione, si descrive dettagliatamente come tradurre una struttura comunemente usata nella descrizione di algoritmi (sia tramite linguaggi di programmazione sia in descrizioni meno formali, come lo pseudocodice): il ciclo per i da a a b ripeti... (in vari linguaggi viene chiamato for). Una struttura di questo tipo (considerando a e b costanti) necessita di: Un variabile (o registro) per memorizzare il valore dell indice i Un assegnamento del valore a ad i all inizio dell esecuzione, da tradurre in una state box. Un confronto da eseguirsi ogni ciclo per controllare il che il valore i sia tra gli estremi a e b, da tradurre in una decision box. Un operatore di incremento (++) che modifichi il valore di i, da tradurre in una state box. Inserendo questi elementi in maniera opportuna si ottiene il diagramma ASM di Figura Blocchi ASM, o ASM blocks Una volta creato il diagramma ASM posizionando le varie box in modo corretto, è necessario passare ad una successiva fase nella quale si opera una partizione dell insieme delle box, raggruppando le box in blocchi (o blocks). Questi blocchi, dotati di una struttura generale fissa illustrata in seguito, permettono di individuare gli stati del controllore. 41

49 CAPITOLO 2. METODOLOGIA Figura 2.5: Esempio di traduzione di ciclo. La struttura dei blocchi Come illustrato in Figura 2.6, la prima box che può presentarsi in un blocco, è una state box. La presenza di una state box all ingresso di un blocco è opzionale, e non vi può mai esserne più di una in ogni blocco. 5 Collegata alla freccia uscente dalla state box (se presente), o come prima box (nel caso non vi sia una state box) vi può essere una decision box. Questa può essere seguita in cascata da una rete di altre decision box. In uscita alla la rete di decision box(se presente), per ognuna delle frecce uscenti dalla rete può esserci una ed una sola condition box. Queste erano le regole di disposizione delle box per un blocco valido, oltre a queste, esiste una regola che riguarda le frecce. Non possono esserci frecce che entrano nel blocco se non nella prima box. In base a questo non può esserci retroazione all interno di una box, cioè una 5 Se infatti ne fosse presente più di una si potrebbero avere più assegnamenti concorrenti alla stessa variabile, il che non è consentito, in quanto lo stato della variabile assegnata in questa situazione sarebbe sconosciuto. 42

50 CAPITOLO 2. METODOLOGIA Figura 2.6: Esempio di blocco generico freccia che parte da una Box del blocco deve necessariamente uscire dal blocco stesso 6. In base a queste regole, e cercando di diminuire il più possibile il numero dei blocchi (per diminuire la complessità del controllore), è possibile individuare tutti i blocchi di un diagramma ASM. Come esempio di blocco si veda Figura 2.7, per un esempio di diagrammi ASM in cui sono stati individuati i blocchi, si veda l Appendice. È da notare che in questa fase è possibile decidere, per alcune configurazioni di grafo, se incorporare una state box in un blocco precedente (come ordine di esecuzione), trasformandola in una condition box, o viceversa. Questo spostamento è illustrato nella Tabella 2.2 Effettuate le operazioni descritte nella Sezione precedente si ha un diagramma (il diagramma ASM), che descrive in modo facilmente interpretabile l algoritmo 6 Al massimo può rientrare nella prima box del blocco 43

51 CAPITOLO 2. METODOLOGIA Figura 2.7: Esempio di blocco costituito da tre box, corrispondente allo stato S3 dal quale si è partiti. Nonostante la sua semplicità, si vedrà in questa sezione come il diagramma ASM comprenda nella sua descrizione alcuni dettagli dai quali si può facilmente dedurre la specifica VHDL. 2.4 Seconda Fase: Traduzione del diagramma ASM in specifica VHDL sintetizzabile Una volta creato il diagramma ASM è necessario analizzarlo e comprendere come verrà implementata la rete logica che lo realizza. Il diagramma ASM, corrisponde ad una rete composta da tre parti fondamentali. Un controllore, che gestisce lo stato corrente, include le decision box e calcola lo stato prossimo in base allo stato corrente e agli ingressi. Un processo, che cambia lo stato presente nello stato prossimo. Uno o più processi 7 che eseguono le computazioni necessarie, ed implementano gli state ed i decision box. 7 Questi processi rappresentano il datapath. 44

52 CAPITOLO 2. METODOLOGIA Tabella 2.2: Lo spostamento di una box da un blocco all altro. In questo modo la state box diventa una condition box Traduzione da state box a VHDL Ogni state box viene tradotta in una rete logica combinatoria che fa parte di un processo (o costituisce lei stessa un processo) e viene eseguita solo e soltanto in funzione dello stato corrente. La descrizione VHDL avrà quindi una struttura fissa di questo tipo: Datapath1 : process (clk) begin if (clk event AND clk= 1 ) then case current_state is when Q0 => <codice> when Q1 => 45

53 CAPITOLO 2. METODOLOGIA <codice> when others => <codice> end case; end if; end process Datapath1; Processo che esegue a seconda dello stato corrente, le istruzioni contenute nella state box opportuna. Questo processo controlla le operazioni da effettuare a seconda dei vari stati. È possibile inizialmente creare un numero di processi pari al numero di variabili utilizzate. Così si ha un processo per ogni variabile che si occupa degli assegnamenti ad essa. Non c è mai pericolo di assegnamenti concorrenti alla stessa variabile perché gli assegnamenti sono tutti all interno dei rami di un case basato sullo stato del controllore. In seguito si può ottimizzare il codice scritto in tre modi differenti. Due o più variabili potrebbero essere usate in intervalli di tempo disgiunti. In questo caso è possibile assegnare alla stessa memoria variabili diverse, avendo l accortezza di ricordare che queste zone di memoria avranno un contenuto con un significato diverso a seconda dell istante di tempo in cui sono lette. Questa ottimizzazione, che viene effettuata talvolta anche nella programmazione software, è detta register sharing, ed è stata utilizzata nel caso di studio. Osservando i diagrammi ASM in Appendice B si può notare che nel calcolo di Tmax la variabile i, viene utilizzata con due significati diversi negli stati da S1 ad S8 e da S9 a S11. Una ulteriore ottimizzazione si può attuare nel caso alcuni dei processi effettuino operazioni solamente durante parte degli stati del controllore. Se gli stati in cui due o più processi operano sono disgiunti, è possibile unirli in un unico processo. Questo è utile a ridurre il numero dei processi, ma può anche ridurre 46

54 CAPITOLO 2. METODOLOGIA il la dimensione della parte combinatoria se si riescono a raggruppare processi che eseguono la stessa operazione su variabili diverse. In questo caso lo strumento di sintesi dovrebbe istanziare una sola copia della rete necessaria a svolgere il calcolo in questione, e dei multiplexers per scegliere le variabili su cui operare. Questo permette di ridurre drastiacamente la dimensione della rete logica risultante, e provoca solamente un modesto calo di prestazioni temporali dovuto alla presenza del multiplexer in serie alla logica operazionale Traduzione da decision box a VHDL Le decision box, che corrispondono ad un test, sono incluse nel controllore. I due effetti possibili di queste box sono: possono decidere lo stato prossimo e/o attivare o meno alcune conditional box. In ogni caso la Decision Box serve a decidere quale tra due o più percorsi intraprendere in un diagramma ASM (ovvero: quale sequenza di operazioni eseguire successivamente). Per la precisione una decision box, a differenza delle altre box, oltre ad avere una o più frecce entranti, ha più di una freccia uscente. Le decision box descrivono indirettamente il controllore della FSMD. Il controllore è un ottimo esempio di FSM, ed è composto da due processi. Il più semplice dei due, è di questo tipo: refresh_state : process (clk,reset, start_in) begin if (clk event AND clk= 1 ) then if (reset = 1 ) then current_state<= RESETstate; elsif (start_in = 1 ) then current_state <= STARTstate; else current_state <= next_state; end if; 47

55 CAPITOLO 2. METODOLOGIA end if; end process refresh_state; Processo che aggiorna lo stato di una FSMD. Questo processo fa sì che la macchina a stati del controllore rimanga in uno stato di reset fino all invio di un segnale di start (start in), dopodichè fa eseguire alla macchina ad ogni ciclo di clock la transizione da uno stato allo stato successivo. A decidere quale sia lo stato successivo è l altra parte del controllore. Si ricordi che i segnali che il controllore invia al datapath dipendono unicamente dallo stato corrente (se non vi sono conditional box) e dai segnali di enable che il controllore setta per pilotare le porzioni di codice derivanti dai condition box. L altro processo del controllore ha una struttura del tipo: 48

56 CAPITOLO 2. METODOLOGIA controller : process(...) begin enable_1 <= 0 ; enable_2 <= 0 ; enable_3 <= 0 ; case current_state is when Q0 => next_state <= Q2; when Q1 => if i = 0 then enable_1 <= 1 ; next_state <= Q2; else next_state <= Q0; end if; [...] when Q2 => if A = 0 then next_state <= Q2; else next_state <= Q0; end if; end case; end process controller; Specifica VHDL di un controllore. 49

57 CAPITOLO 2. METODOLOGIA Questa parte di codice, a seconda dello stato e della configurazione delle variabili, calcola lo stato prossimo ed i valori di enable per pilotarle; alcune di queste frecce possono giungere in una conditional box, che viene dunque eseguita. Per tradurre tutto questo in VHDL, sempre che si voglia far uso delle conditional box, si può semplicemente far alzare un flag di del controllore quando l uscita della decision box porta nella conditional. Scrivendo poi il processo corrispondente alla condition box, è sufficiente inserire all esecuzione la clausola di avere il corrispondente flag di enable alto (ed inserirlo nella sensitivity list). Il processo controllore è costituito da un costrutto case che, in base allo stato corrente, sceglie quali test 8 eseguire, ed in base ai risultati dei test sceglie lo stato prossimo. Inoltre, sempre in base ai risultati delle decision box, sceglie se e quali condition box attivare e per far sì che vengano eseguite alza i segnali di enable Traduzione da Condition Box a VHDL La traduzione delle condition box, come accennato, è assai simile a quella delle state box, solo che esse vengono eseguite non solo in base allo stato corrente, ma anche in base al segnale (flag) di enable corrispondente. In questo modo si ottiene proprio ciò che si cercava di implementare: delle istruzioni eseguite in base al risultato di un test. Segue un esempio di processo di una condition box. Sum_a_b : process (clk) begin if (clk event AND clk= 1 ) then case current_state is when Q0 => sum <= 0; when Q1 => 8 corrispondenti alle decision box 50

58 CAPITOLO 2. METODOLOGIA if enable_1 = 1 then Sum <= a + b; Else Sum <= 0; end if; when others => sum <= 0; end case; end if; end process Sum_a_b; Esempio di traduzione di condition box in VHDL Testing della periferica, scrittura del driver e integrazione della periferica La metodologia proposta mira alla stesura di una specifica VHDL facilmente sintetizzabile da strumenti software automatici. Una volta giunti a questo, la metodologia non prosegue oltre: le procedure per la simulazione tramite software dell IP core ottenuto, quelle per la scrittura del relativo driver, ed infine quelle per l integrazione, sono operazioni che esulano dagli scopi della presente tesi. Lasciamo ad altri la trattazione di questi argomenti, che oltre ad essere fuori tema, se inseriti nel presente elaborato, lo vincolerebbero agli specifici strumenti utilizzati. 51

59 Capitolo 3 Caso di Studio: Il Cammino Critico Nel corso di questo capitolo si presenta, tramite l applicazione della metodologia proposta nel Capitolo 2, la reale implementazione in hardware di un IP core dedicato al calcolo del cammino critico in un grafo. Nel capitolo, partendo da una specifica iniziale in C, si cerca di approfondire l aspetto implementativo della metodologia, illustrando in dettaglio le fasi della traduzione in VHDL per la creazione di un IP core. L obiettivo è quello di illustrare in modo più dettagliato la metodologia tramite l analisi critica di tutte le scelte implementative effettuate per lo specifico caso di studio In Figura (Figura 3.1) si mostrano le fasi principali che caratterizzano il progetto relativo al calcolo del camino critico su un grafo aciclico e orientato. Nel seguito si presenteranno le aree aplicative, gli strumenti utilizzati e le scelte che hanno caratterizzato ogni fase del progetto stesso, al fine di fornire un ulteriore supporto alla spiegazione della metodologia proposta. 52

60 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.1: Flusso di sviluppo del progetto del calcolo del cammino critico. 3.1 Aree Applicative Come validazione della metodologia proposta si è scelto di creare una periferica per il calcolo del cammino critico. Il problema del calcolo del percorso critico è di interesse generale, e trova applicazione in un vasto numero di aree, tra cui molti problemi di ricerca operativa. Durante lo sviluppo dell IP core, si è scelto di concentrarsi principalmente in due aree applicative: una legata agli activity networks, e l altra riguardante lo sviluppo hardware. Più in dettaglio, è stata approfondita la possibilià di sviluppare il progetto per applicazioni in ambito di gestione dei progetti e per l ottimizzazione 53

61 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO di reti logiche. Per quanto riguarda la prima area si procede utilizzando la convenzione degli Activity Networks, i quali rappresentano uno dei principali strumenti utilizzati nella pianificazione di qualsiasi genere di progetto, specialmente di carattere gestionalemanageriale. Per quanto riguarda invece l ottimizzazione di una rete logica, che è una fase importante della realizzazione della stessa, si deve tener conto di due principali problematiche: le prestazioni del dispositivo e il suo costo in termini di area occupata. I due parametri indicatori fondamentali per quanto riguarda le prestazioni dipendono direttamente dal cammino critico e sono il tempo impiegato dalla rete per elaborare gli ingressi (nel caso di una rete combinatoria), o le frequenze (nel caso di una rete sequenziale). Il costo del dispositivo in termini di area occupata, a parità di processo realizzativo e tecnologia utilizzata, è normalmente valutato nel numero di porte logiche, in quanto da questo dipende l area del chip. L ottimizzazione delle prestazioni di una rete combinatoria mira a ridurre il tempo in cui i segnali in ingresso alla rete stessa vengono posti in uscita, in seguito alla computazione avvenuta. Questo tempo è pari al tempo impiegato dal percorso della rete logica che viene completato nel tempo maggiore. Infatti non ha senso aspettarsi il risultato in un tempo minore, in quanto l uscita (o le uscite) è il risultato dato dall intera rete. Quindi, per ridurre il tempo di esecuzione, ovvero per aumentare le prestazioni di ogni rete combinatoria, è necessario individuare il percorso più lento, ossia il cammino critico. Una volta individuato, si può poi procedere a ridurre il suo tempo di esecuzione, detto tempo critico o critical time, che è pari alla durata della computazione della rete. L implementazione tramite FPGA di algoritmi di ricerca del cammino critico, oltre a produrre un dispositivo embedded che può risolvere questo algoritmo (il quale è computazionalmente costoso per reti estese) in tempi brevi, può rientrare anche nell area applicativa della Riconfigurazione Dinamica delle FPGA [5] stesse. 54

62 3.2 Strumenti CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Il progetto è stato svolto principalmente nel laboratorio di Microarchitetture del Dipartimento di Elettronica e Informazione presso il Politecnico di Milano. Questo ha consentito l uso di vari strumenti, soprattutto per quando riguarda la traduzione del codice C in VHDL tramite i diagrammi ASM e la conseguente integrazione in un archittettura. Si è scelto come linguaggio base per la specifica iniziale, un linguaggio di alto livello: il C. Questo è stato utilizzato per la traduzione formale delle specifiche iniziali, con l obiettivo di rendere l elaborazione successiva il più semplice possibile. Si è deciso di utilizzare il linguaggio C poichè si è visto che opportune scelte implementative possono facilitare (fino quasi a render automatica) la successiva formazione dei diagrammi ASM. Per quanto riguarda l implementazione della specifica nel linguaggio C si è fatto uso dei seguenti strumenti: kwrite come editor di testo; gcc 3 per la compilazione; Doxygen per la documentazione. Dopo la scrittura del codice C si sono prodotti alcuni diagrammi, che descrivono l algoritmo implementato. Come presentato nel Capitolo 2, i diagrammi ASM sono dei diagrammi a sé stanti, che non richiedono quindi un particolare software per lo sviluppo. Essi vengono progettati manualmente, partendo da un linguaggio di alto livello, come proposto nella metodologia in esame. Per questo motivo, in questa fase della progettazione è stato utilizzato solo uno strumento per disegnare grafi, schemi, diagrammi, etc.: Dia Nella fase successiva, che parte dai diagrammi ASM e giunge alla descrizione in VHDL, per la traduzione del diagramma in un linguaggio di descrizione hardware, che nel caso in esame è il VHDL, si è utilizzato un ambiente integrato di 55

63 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO sviluppo hardware che mette a disposizione svariati strumenti utili per la progettazione di IP core. Si tratta di un prodotto della Xilinx ed è l Integrated Software Environment (Xilinx ISE). La verifica della specifica VHDL è stata effettuata mediante l uso di un software simulatore che consente di verificare il corretto funzionamento del codice stesso, in modo da rispettare le specifiche richieste. Per questa fase è stato utilizzato ModelSim che ha consentito una visualizzazione delle uscite sia tramite i valori finali, ma soprattutto come propagazione dei segnali durante tutta la simulazione effettuata. Infine, per l introduzione dell IP core in un architettura è necessario utilizzare un software che permetta di manipolare architetture hardware. Per il caso di studio si è utilizzato quello fornito dalla Xilinx: l Embedded Development Kit (Xilinx EDK), indispensabile quindi per integrare l IP core (o gli IP core, a seconda del progetto) sviluppato precedentemente in VHDL in un architettura. L EDK si occupa anche della gestione dei drivers, che consentono la gestione dell IP core stesso e che solitamente sono sviluppati in C. 3.3 Fasi del Progetto Il presente paragrafo fornisce una dettagliata descrizione del flusso presentato nella Figura 3.1. Si illustrano quindi nel dettaglio le fasi in cui si articola il progetto Studio del Problema Una volta scelto di affrontare il problema del calcolo del cammino critico si sono fatte delle valutazioni generali sull algoritmo. Ci si domanda innanzitutto se il problema di computare il cammino critico di un grafo sia ben posto. Natural- 56

64 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO mente, come già è stato specificato, le caratteristiche richieste normalmente ai grafi per la ricerca del cammino critico riguardano l orientamento degli archi e l assenza di cicli, e per queste tipologie di grafi il problema in esame è deciso, infatti esistono algoritmi in grado di risolverlo. È necessario inoltre considerare che si tratta di un algoritmo caratterizzato da un elevata complessità, sia temporale sia spaziale 1. Per quanto riguarda la complessità spaziale si passa ad analizzare la dimensione del grafo: l ideale sarebbe riuscire a garantire il corretto funzionamento dell IP core per grafi il più estesi possibile. Però, in vista della futura traduzione in VHDL, la dimensione del grafo stesso è un parametro critico. Infatti, se a livello software le limitazioni relative all occupazione di memoria hanno già un importanza ragguardevole, a livello hardware diventano ancor più rilevanti. Infatti, per operare sul grafo è necessario disporre della matrice delle adiacenze, che per quanto concerne gli Activity Networks, racchiude tutte le informazioni caratterizzanti il grafo: gli archi presenti, la loro durata, etc... Se da una parte la matrice delle adiacenze consente di conoscere ed effettuare tutto quanto possibile del grafo, il suo principale difetto risiede però nell occupazione di memoria. Come già è stato illustrato, si tratta di una matrice quadrata, la cui occupazione di memoria è proporzionale al quadrato del numero di nodi Formalizzazione del Codice C Nelle prime 210 righe di codice è stata sviluppata la parte relativa alla dichiarazione, acquisizione, inizializzazione e visualizzazione della matrice di adiacenza del grafo fornito. Segue la parte più interessante e relativa al vero calcolo del tempo minimo e massimo, che viene brevemente riassunta nelle seguenti linee. Riassunto Generale dell Algoritmo Più in dettaglio il ciclo esterno scorre un array, quello di scheduling, ed individua il nodo che deve esser schedulato, appunto. Per quanto concerne la parte di algoritmo relativa al tempo minimo, il nodo che deve esser schedulato è individuato 1 Per la definizione di decidibilità e di complessità si rimanda a [1]. 57

65 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO sull array in base alla posizione che contiene lo 0. Infatti è necessario siano stati analizzati tutti i predecessori del nodo che verrà schedulato; e questo è rappresentato nell algoritmo come un array contenente il numero dei predecessori da analizzare per ogni nodo (si tratta di una notazione posizionale). Partendo dalla radice quindi bisogna schedularla e decrementare in modo unitario il numero dei predecessori corrispondente ai suoi successori. Detto questo, il passo successivo consiste nel cercare a il nodo da schedulare e settare a 1 il valore del nodo in analisi nell array stesso (il che significa che il nodo è stato schedulato). L array tmin e gli array di scheduling vengono tenuti sempre nella memoria dell hardware permettendo libero accesso alla periferica. A questo punto ci si occupa dello scheduling vero e proprio e viene analizzata, per ogni successore, la somma del costo del cammino che lo congiunge a questo e il valore già presente relativo al successore in esame. Nel caso venga trovato un valore minore si aggiorna il tmin. Dopo aver considerato tutti i successori del nodo, questo è da ritenersi schedulato deve quindi essere trovato un nuovo nodo da schedulare ed analizzare. La parte relativa al calcolo del tempo massimo è, come già precedentemente detto, completamente duale, quindi presenta solo lievissime differenze nell implementazione. Nella Figura seguente ( 3.2) è riportato il codice in cui si ricava il tempo minimo: Analisi Dettagliata dell Algoritmo Sviluppato in C Nella parte iniziale vengono impostate le strutture su cui si opera successivamente e viene riempita la matrice delle adiacenze, partendo da un grafo contenuto in un files ( 3.1) secondo le seguenti convenzioni: la prima riga contiene il numero dei nodi e il numero degli archi, separati da uno spazio segue un numero di righe pari al numero degli archi presenti nel grafo. Ognuna di queste contiene rispettivamente tre numeri (ancora separati da spazi) che indicano il nodo di partenza dell arco, il nodo di arrivo e la durata. 58

66 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.2: Porzione di codice C relativo al calcolo del tempo minimo. Nella Tabella ( 3.1) viene riportato un grafo con il relativo file che la rappresenta. La scelta di non passare l intera matrice è motivata dalla ricerca di un metodo più breve e meno impegnativo per l utente, ipotizzando di lavorare solitamente con grafi sparsi, senza quindi troppi archi, ma si posticipa la gestione dell interazione con l utente solo in un secondo momento, dando la precedenza al cuore del codice. Vengono quindi inizializzati tutti i valori necessari allo scheduling, come il numero dei genitori di ogni nodo per il successivo calcolo del tempo minimo oppure, dualmente, il numero dei figli di ogni nodo per il calcolo del tempo massimo. Questo consente di verificare che siano risolte tutte le dipendenze di ogni nodo prima che venga analizzato. Infatti, ogni volta che si analizza un vertice del 59

67 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Grafo File di Inizializzazione Tabella 3.1: Esempio di dichiarazione del grafo, affiancato dalla rappresentazione del grafo stesso. grafo, viene decrementato ogni contatore relativo al nodo a cui collegato, sia in quanto padre (tmin) che in quanto figlio (tmax). In seguito, vengono analizzati i nodi in cui il contatore ha valore nullo, ossia per cui sono state risolte tutte le precedenze. I nodi iniziali a partire dai quali vengono calcolati il tempo massimo e il tempo minimo sono rispettivamente, il nodo iniziale e quello finale, precedentemente individuati come i nodi caratterizzati da valori nulli subito in seguito all inizializzazione della matrice 3.5. Nel dettaglio, l analisi di ogni nodo è costituita dalle seguenti operazioni: si scorrono tutti i nodi e fra questi vengono scelti quelli in relazione con il nodo in esame, a cui sono collegati quindi, tramite un arco; 60

68 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.3: Parte del codice relativa all acquisizione del grafo da file. Figura 3.4: codice in cui si evidenzia la gestione dello scheduling. si valuta la condizione caratteristica per il calcolo del tempo richiesto, che nel caso si tratti di tempo minimo è la seguente: t i t j + d i j, i, j (n i,n j ) N. Se la condizione è verificata, allora avviene la sostituzione; ad ogni modo viene decrementato il contatore del nodo scelto e si passa ciclicamente all analisi di un altro vertice che è in relazione al nodo considerato in partenza. Infine, dopo che sono stati individuati sia il tempo minimo che quello massimo, in modo del tutto indipendente, vengono confrontati i due valori di ogni nodo Figura 3.5: Frammento di codice in cui vengono settati il nodo origine e quello finale. 61

69 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.6: Dettaglio del codice sul calcolo del tempo minimo. al fine di individuare i vertici critici che appartengono quindi al sottografo critico: Figura 3.7 Figura 3.7: Frammento di codice in cui viene determinato il sotografo critico. A questo punto, è necessario individuare tutti i possibili percorsi effettuabili dai nodi che appartengono al sottografo critico. In quanto si tratta di una parte molto complessa, ma poco attinente allo studio della metodologia, si rimanda il lettore particolarmente interessato all appendice del volume, in cui si trova tutto il codice C generato e documentato con Doxygen ASM Alcune scelte effettuate in funzione di una futura traduzione durante la fase di sviluppo dell algoritmo in C, possono semplificare la stesura dei diagrammi ASM. Ad esempio, frammentando il codice in alcune parti distinte ed indipendenti si aiuta pesantemente questa stesura, in quanto risulta ben visibile la possibilità di 62

70 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO scelta relativa a quali di questi frammenti di codice vadano effettivamente reimplementati in hardware. Ciò ha permesso di far calcolare TMAX e TMIN dallo stesso hardware, riutilizzando la maggior parte della logica. Osservando infatti i diagrammi ASM dei due frammenti di codice (Figura 3.8), relativi al calcolo del tempo minimo e di quello massimo, è facilmente osservabile come questi due si assomiglino e siano addirittura identici in molte parti. Seguendo quanto proposto si sono creati quattro distinti ASM. Due di questi rappresentano gli algoritmi per il calcolo di tmin e di tmax, come mostra la Figura 3.8, mentre gli altri due rappresentano il calcolo del sottografo critico (ovvero di nodi ed archi critici) ed il calcolo di tutti i cammini critici. La creazione di questi grafi, attraverso l uso del programma Dia è avvenuta in due fasi distinte. In un primo momento si è percorso tutto il codice precedentemente scritto e, si sono trascritte le istruzioni C utilizzando le tre box dei diagrammi ASM, della Figura 2.1. Una volta eseguita questa prima fase, si è cercato di raggruppare le box in blocchi, al fine di individuare in modo univoco gli stati del controllore della FSMD. Raggruppate le box si sono ottenuti i grafi di tmin e di tmax, visibili rispettivamente nelle Figure 3.8,. Un esempio significativo di questo lavoro di traduzione è osservabile nelle seguenti Figure 3.9 e 3.10: Partendo dal codice C dell algoritmo presentato in Figura 3.9 si sono estratti il secondo ed il terzo dei Box in Figura 3.10 Una volta disegnati i tre box si è evidenziato come, applicando le regole descritte nel Capitolo 2, possano essere raggruppati a formare un unico blocco. Questo blocco corrisponde esattamente con lo stao S4 del controllore, come mostrato in Figura Questo significa, tra le altre cose, che è possibile eseguire i tre Box in un unico ciclo di clock dell IP core. Una volta effettuate tali operazioni per tutto il sorgente C, e sviluppati i diagrammi ASM, è possibile passare alla fase successiva della metodologia, ovvero alla traduzione dei diagrammi ASM in VHDL. 63

71 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.8: Diagrammi della parte di codice relativa al calcolo del percorso minimo e massimo. 64

72 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.9: Esempio di codice C dell algoritmo che viene tradotto in diagrammi ASM. Figura 3.10: Esempi di box derivanti dalla traduzione del codice di Figura VHDL e Verifica Dopo aver formalizzato l algoritmo a partire da un sorgente C e volendolo trasferire su una periferica hardware si è applicata la metodologia per ottenere un diagramma ASM. Dopo aver scelto di utilizzare una scheda dotata di una FPGA si è passati alla fase successiva della metodologia: la traduzione da diagrammi ASM a VHDL. Problematiche Affrontate Prima della Trasformazione del diagramma ASM in una descrizione VHDL Prima di iniziare a realizzare la specifica in VHDL si è analizzato a fondo il diagramma ASM, per poter riflettere sulle possibili scelte implementative. Si è così presentata la non banale scelta relativa a quali parti di codice andassero trasferite 65

73 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.11: Esempio di uno stato della FSM, derivante dalla traduzione del codice di Figura 3.9. a livello hardware e quali sarebbero diventate software e quindi driver delle periferiche. Le prime, descritte in VHDL permettono di sintetizzare una rete logica con vantaggi relativi alla velocità di esecuzione. Le parti rimaste in C vengono poi eseguite dal processore presente nella FPGA, sia esso un MicroBlaze o un PPC 405, e costituiscono il driver della periferica descritta in VHDL. La differenza tra hardware e software è che la parte implementata in hardware è estremamente più efficiente in termini di prestazioni temporali della stessa implementazione in software, ma la quantità di codice trasferibile in hardware è, ad esempio, limitata dalle disponibilità fisiche della FPGA presente sulla scheda utilizzata. Si pensi, ad esempio, la sola rappresentazione in memoria del grafo, mediante matrice di adiacenza, può occupare una porzione consistente dello spazio fisico presente nell FPGA a disposizione. Per questi motivi il primo passo verso la traduzione hardware è stato quello di decidere quali parti implementare e in che modo andassero sviluppate e tradotte. Posto questo, bisogna rendere indipendente il calcolo di TMAX e TMIN, per poter quindi avere aperta la strada a due scelte differenti. Nel caso l FPGA 66

74 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO sia in grado di contenere due periferiche differenti, una volta implementate si sviluppa un driver che le sfrutti entrambe in contemporanea (cioè in parallelo). Questo è vantaggioso in quanto permette di ottimizzare il tempo di esecuzione, che diventa pari al tempo di esecuzione maggiore tra le due periferiche, anzichè la somma dei tempi di esecuzione delle due periferiche. Nel caso invece risulti impossibile implementare due periferiche, a causa di limitazioni della FPGA, si crea una periferica unica in grado di calcolare TMIN o TMAX a seconda di un flag in ingresso. Questo minimizza lo spazio occupato dall intera struttura, ma rende impossibile la parallelizzazione, quindi peggiora le prestazioni temporali. Così sono stati leggermente modificati i diagrammi ASM in modo da dividere il calcolo di TMIN dal calcolo di TMAX. Ignorando la parte di acquisizione dati e l inizializzazione, si sono ottenuti due grafi indipendenti per il calcolo di TMIN e TMAX, e altri due grafi per il calcolo rispettivamente del sottografo critico e dei cammini critici. Dopo aver individuato i nodi che costituiscono uno o più cammini critici, mediante gli algoritmi tmin e tmax si ottiene un sottografo critico il quale è dimensionalmente molto minore del grafo di partenza. Questo significa che esso richiederebbe uno sforzo computazionale di analisi decisamente inferiore se si trattasse di matrici allocabili dinamicamente (discorso valido invece per l implementazione puramente software), e quindi si è scelto di svolgere il passaggio successivo (ovvero l individuazione dei veri e propri cammini critici) interamente via software. Se invece si decidesse di implementarlo in hardware bisognerebbe considerare che non è possibile stabilire a priori un upper bound alla dimensione del sottografo critico se non pari alla dimensione del grafo di partenza. Scelto quindi di non tradurre in VHDL i due grafi riguardanti il sottografo critico ed i percorsi critici, ci si è concentrati sul calcolo di TMIN e TMAX. Posto di avere alcune limitazioni, come quella relativa a fissare a priori le dimensioni massime del grafo, risulta ad ogni modo ovvio quanto sia preferibile trasferire in hardware le sezioni di programma che richiedono uno sforzo computazionale maggiore; a tal fine è opportuno valutare la complessità delle singole 67

75 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO porzioni di codice per effettuare una scelta oculata. prima di procedere, compiere ai seguenti passi: È stato quindi necessario, approfondire le nostre conoscenze riguardo il linguaggio VHDL imparare l utilizzo degli strumenti ISE e EDK di Xilinx per poter utilizzare la scheda Avnet del laboratorio di Microarchitetture del Politecnico studiare il diagramma ASM per individuare le parti per le quali la descrizione VHDL avrebbe portato vantaggi significativi Per questo, in seguito ad un analisi critica del codice scritto precedentemente e con un idea, seppur approssimativa, di come fosse il vero e proprio ambiente di lavoro, si è cercato di individuare gli scenari più interessanti per lo sviluppo. Le teorie più significative proposte inizialmente sono due, più una possibile alternativa prevista per un eventuale implementazione futura. Entrambe escludono comunque la gestione dell acquisizione degli ingressi e dell inizializzazione, scelte lasciate volutamente alla fine della realizzazione generale. Analisi delle Scelte Implementative Come accennato nel paragrafo precedente, la miglior soluzione auspicabile prevede la totale conversione del codice in hardware, con la conseguente riduzione dei tempi di elaborazione 2. Obiettivo ambizioso, che richiede però delle restrizioni relative ai grafi (ad esempio limitando il numero dei nodi del grafo) ed ingenti problematiche nella fase di sintesi, considerando la complessità del codice a confronto con le capacità della scheda. Sfruttando la possibilità di riutilizzare i componenti 3 all interno dell FPGA (svolgendo cioè in modo sequenziale tmin e tmax), ma soprattutto introducendo 2 In realtà non si tratta di una certezza matematica. Un interessante studio previsto prevede infatti il confronto fra l algoritmo progettato in software e quello implementato anche a livello hardware, come in questo caso 3 Grazie all uso dei diagrammi ASMè stato possibile riutilizzare alcune porzioni di rete logica 68

76 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Figura 3.12: Foto della Virtex-II Pro Evaluation Board. l uso di una Block-RAM, BRAM, per la memorizzazione della struttura dati del grafo, e possibile implementare l intero algoritmo in hardware. Si e quindi giunti ad una rete che svolge in modo completamente hardware tutto l algoritmo fino al calcolo di TMIN ed TMAX compresi. Esempi di Traduzione in VHDL Un esempio di come si sia operato per la traduzione dei diagrammi ASM in una specifica VHDL, e presente nelle Figure seguente 3.2, 3.3 e 3.4. Tabella 3.2: Esempio di traduzione di state box La state box mostrata in Figura 3.2, composta da due istruzioni da eseguirsi simultaneamente, viene tradotta in due processi distinti. Entrambi, se la FSM si trova nello stato corretto, eseguono l assegnamento indicato. Altrimenti i registri 69

77 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO corrispondenti mantengono il valore presente senza modificarlo. Tabella 3.3: Esempio di traduzione di decision box Come mostrato nel Capitolo 2 le decision box, una volta tradotte, fanno parte del controllore di una macchina a stati finiti. Nel caso specifico, una decision box, viene tradotta in una condizione della FSM del controllore che decide lo stato prossimo (cioè implementa la funzione di transizione) in base all esito del test effettuato. Tabella 3.4: Esempio di traduzione di condition box Infine, è stata posta la condition box, di figura 3.4. Si vuole che effettui l assegnamento solo se la decision box che la precede ha dato esito positivo. In questo caso dunque si fa alzare al controllore un segnale (enable S4) e il processo che segue l assegnamento verifica il valore dell enable stesso per effettuare o meno l operazione. In caso contrario viene mantenuto nel registro il valore precedente. Si è scelto di presentare un solo esempio di traduzione per ogni tipo di box, in quanto si ritiene che ogni caso sia poi a sè stante, ma una rappresentazione faciliti molto la comprensione. Resta ad ogni modo possibile vedere i grafi e l intero codice in appendice per osservare come si sia operato in questa fase di traduzione. 70

78 CAPITOLO 3. CASO DI STUDIO: IL CAMMINO CRITICO Verifica E possibile verificare che la descrizione VHDL implementi effettivamente l algoritmo voluto, simulando il comportamento della rete logica descritta. Questo avviene tramite l uso di simulatori software. Nel nostro progetto in particolare è stato utilizzato il programma Modelsim, che ha permesso di verificare la corretta progettazione del modulo hardware. Segue in Figura 3.13 un immagine di una simulazione effettuata durante la fase di sviluppo, a testimonianza del funzionamento del modulo descritto in VHDL. Figura 3.13: Verifica tramite strumenti software Integrazione L ultima fase del progetto consiste nella realizzazione fisica dell IP core, a partire dal linguaggio VHDL precedentemente scritto. Questa fase, che comprende la creazione di un driver in linguaggio C per utilizzare la periferica, è un oper- 71

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010 elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre

Dettagli

Macchine sequenziali

Macchine sequenziali Corso di Calcolatori Elettronici I A.A. 2010-2011 Macchine sequenziali Lezione 14 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Automa a Stati Finiti (ASF) E una prima astrazione di

Dettagli

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007 Sommario Macchine a stati finiti M. Favalli 5th June 27 4 Sommario () 5th June 27 / 35 () 5th June 27 2 / 35 4 Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante: Sommario Macchine a stati finiti M. Favalli Engineering Department in Ferrara 4 Sommario (ENDIF) Analisiesintesideicircuitidigitali / 35 (ENDIF) Analisiesintesideicircuitidigitali 2 / 35 4 Le macchine

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO Macchine a stati finiti 1 G. MARSELLA UNIVERSITÀ DEL SALENTO Introduzione Al più alto livello di astrazione il progetto logico impiega un modello, la cosiddetta macchina a stati finiti, per descrivere

Dettagli

Consideriamo due polinomi

Consideriamo due polinomi Capitolo 3 Il luogo delle radici Consideriamo due polinomi N(z) = (z z 1 )(z z 2 )... (z z m ) D(z) = (z p 1 )(z p 2 )... (z p n ) della variabile complessa z con m < n. Nelle problematiche connesse al

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Laurea Specialistica in Informatica

Laurea Specialistica in Informatica Corso di Laurea in FISICA Laurea Specialistica in Informatica Fisica dell informazione 1 Elementi di Architettura degli elaboratori Prof. Luca Gammaitoni Informazioni sul corso: www.fisica.unipg unipg.it/gammaitoni/fisinfoit/gammaitoni/fisinfo

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Sviluppo di processi per l automatizzazione del testing per applicazioni Android

Sviluppo di processi per l automatizzazione del testing per applicazioni Android tesi di laurea Sviluppo di processi per l automatizzazione del testing per applicazioni Anno Accademico 2011/2012 relatori Ch.mo prof. Porfirio Tramontana candidato Enrico Solimeo Matr. 534002361 Contesto:

Dettagli

Reti sequenziali sincrone

Reti sequenziali sincrone Reti sequenziali sincrone Un approccio strutturato (7.1-7.3, 7.5-7.6) Modelli di reti sincrone Analisi di reti sincrone Descrizioni e sintesi di reti sequenziali sincrone Sintesi con flip-flop D, DE, T

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R

Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R Studio di funzione Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R : allo scopo di determinarne le caratteristiche principali.

Dettagli

Creare diagrammi di Gantt con Visio 2003

Creare diagrammi di Gantt con Visio 2003 Creare diagrammi di Gantt con Visio 2003 La fase di pianificazione di un progetto è sicuramente molto delicata e alquanto complessa, in quanto bisogna riuscire a definire una scomposizione del progetto

Dettagli

Le tecniche di scheduling (1)

Le tecniche di scheduling (1) Le tecniche di scheduling (1) Sono la base di tutto il processo di pianificazione, e fornisco al management gli elementi per decidere come utilizzare le risorse per raggiungere gli obiettivi di costo e

Dettagli

Corso di. Dott.ssa Donatella Cocca

Corso di. Dott.ssa Donatella Cocca Corso di Statistica medica e applicata Dott.ssa Donatella Cocca 1 a Lezione Cos'è la statistica? Come in tutta la ricerca scientifica sperimentale, anche nelle scienze mediche e biologiche è indispensabile

Dettagli

Il controllo della visualizzazione

Il controllo della visualizzazione Capitolo 3 Il controllo della visualizzazione Per disegnare in modo preciso è necessario regolare continuamente l inquadratura in modo da vedere la parte di disegno che interessa. Saper utilizzare gli

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

Luigi Piroddi piroddi@elet.polimi.it

Luigi Piroddi piroddi@elet.polimi.it Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI FUNZIONI ELEMENTARI - ESERCIZI SVOLTI 1) Determinare il dominio delle seguenti funzioni di variabile reale: (a) f(x) = x 4 (c) f(x) = 4 x x + (b) f(x) = log( x + x) (d) f(x) = 1 4 x 5 x + 6 ) Data la funzione

Dettagli

LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB

LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB UNIVERSITÀ DEGLI STUDI DI PADOVA FACOLTÀ DI LETTERE E FILOSOFIA CORSO DI LAUREA MAGISTRALE IN STRATEGIE DI COMUNICAZIONE LA PROGETTAZIONE DI UN NUOVO STRUMENTO PER IL WEB LA PROPOSTA DI UN MODELLO MIRATO

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 PROGETTAZIONE DI UNA BASE DI DATI Raccolta e Analisi dei requisiti Progettazione concettuale Schema concettuale Progettazione logica

Dettagli

Capitolo 25: Lo scambio nel mercato delle assicurazioni

Capitolo 25: Lo scambio nel mercato delle assicurazioni Capitolo 25: Lo scambio nel mercato delle assicurazioni 25.1: Introduzione In questo capitolo la teoria economica discussa nei capitoli 23 e 24 viene applicata all analisi dello scambio del rischio nel

Dettagli

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

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Introduzione all Information Retrieval

Introduzione all Information Retrieval Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione presentato in questo file trova la seq. a costo minimo per

Dettagli

Sistemi Web! per il turismo! - lezione 3 -

Sistemi Web! per il turismo! - lezione 3 - Sistemi Web per il turismo - lezione 3 - I computer sono in grado di eseguire molte operazioni, e di risolvere un gran numero di problemi. E arrivato il momento di delineare esplicitamente il campo di

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

Introduzione. Informatica B. Daniele Loiacono

Introduzione. Informatica B. Daniele Loiacono Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione

Dettagli

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme 1. L insieme R. Per lo svolgimento del corso risulta particolarmente utile considerare l insieme R = R {, + }, detto anche retta reale estesa, che si ottiene aggiungendo all insieme dei numeri reali R

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Il calendario di Windows Vista

Il calendario di Windows Vista Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0. EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la

Dettagli

Project Planning. Politecnico di Milano. Progetto di Ingegneria del Software 2. 15 novembre 2011. Elisabetta Di Nitto Raffaela Mirandola

Project Planning. Politecnico di Milano. Progetto di Ingegneria del Software 2. 15 novembre 2011. Elisabetta Di Nitto Raffaela Mirandola Politecnico di Milano Progetto di Ingegneria del Software 2 Project Planning Autori: Claudia Foglieni Giovanni Matteo Fumarola Massimo Maggi Professori: Elisabetta Di Nitto Raffaela Mirandola 15 novembre

Dettagli

Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9

Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9 Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9 Lezione 11: valutazione costi diagramma di PERT Prof.ssa R. Folgieri email: folgieri@dico.unimi.it folgieri@mtcube.com 1 Da ricordare:

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani Ricerca Operativa Esercizi sul metodo del simplesso Luigi De Giovanni, Laura Brentegani 1 1) Risolvere il seguente problema di programmazione lineare. ma + + 3 s.t. 2 + + 2 + 2 + 3 5 2 + 2 + 6,, 0 Soluzione.

Dettagli

Analisi di una Rete Sociale

Analisi di una Rete Sociale 2012 Analisi di una Rete Sociale Alessandro Lovati Matricola 626053 Comunicazione Digitale ord. F47 26/01/2012 Indice : 1. Obiettivo del progetto 2. Realizzazione 3. Analisi dei risultati 3.1. Numero di

Dettagli

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA SCUOLA PRIMARIA DI CORTE FRANCA MATEMATICA CLASSE QUINTA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA L ALUNNO SVILUPPA UN ATTEGGIAMENTO POSITIVO RISPETTO ALLA MATEMATICA,

Dettagli

Nota interpretativa. La definizione delle imprese di dimensione minori ai fini dell applicazione dei principi di revisione internazionali

Nota interpretativa. La definizione delle imprese di dimensione minori ai fini dell applicazione dei principi di revisione internazionali Nota interpretativa La definizione delle imprese di dimensione minori ai fini dell applicazione dei principi di revisione internazionali Febbraio 2012 1 Mandato 2008-2012 Area di delega Consigliere Delegato

Dettagli

ISTRUZIONI PER LA GESTIONE BUDGET

ISTRUZIONI PER LA GESTIONE BUDGET ISTRUZIONI PER LA GESTIONE BUDGET 1) OPERAZIONI PRELIMINARI PER LA GESTIONE BUDGET...1 2) INSERIMENTO E GESTIONE BUDGET PER LA PREVISIONE...4 3) STAMPA DIFFERENZE CAPITOLI/BUDGET.10 4) ANNULLAMENTO BUDGET

Dettagli

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI Un utilizzatore a valle di sostanze chimiche dovrebbe informare i propri fornitori riguardo al suo utilizzo delle sostanze (come tali o all

Dettagli

La distribuzione Normale. La distribuzione Normale

La distribuzione Normale. La distribuzione Normale La Distribuzione Normale o Gaussiana è la distribuzione più importante ed utilizzata in tutta la statistica La curva delle frequenze della distribuzione Normale ha una forma caratteristica, simile ad una

Dettagli

IL SISTEMA INFORMATIVO

IL SISTEMA INFORMATIVO LEZIONE 15 DAL MODELLO DELLE CONDIZIONI DI EQUILIBRIO AL MODELLO CONTABILE RIPRESA DEL CONCETTO DI SISTEMA AZIENDALE = COMPLESSO DI ELEMENTI MATERIALI E NO CHE DIPENDONO RECIPROCAMENTE GLI UNI DAGLI ALTRI

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

Algoritmi. Maurizio Palesi. Maurizio Palesi 1 Algoritmi Maurizio Palesi Maurizio Palesi 1 Cos è Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Un algoritmo è un metodo per la soluzione

Dettagli

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE 1. Proporzionalità diretta e proporzionalità inversa Analizziamo le seguenti formule Peso Lordo = Peso Netto + Tara Ricavo = Utile + Costo Rata = Importo + Interesse

Dettagli

Informatica per le discipline umanistiche 2 lezione 14

Informatica per le discipline umanistiche 2 lezione 14 Informatica per le discipline umanistiche 2 lezione 14 Torniamo ai concetti base dellʼinformatica. Abbiamo sinora affrontato diversi problemi: avere unʼidentità online, cercare pagine Web, commentare il

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente Funzioni In matematica, una funzione f da X in Y consiste in: 1. un insieme X detto dominio di f 2. un insieme Y detto codominio di f 3. una legge che ad ogni elemento x in X associa uno ed un solo elemento

Dettagli

Tecniche di Simulazione: Introduzione. N. Del Buono:

Tecniche di Simulazione: Introduzione. N. Del Buono: Tecniche di Simulazione: Introduzione N. Del Buono: 2 Che cosa è la simulazione La SIMULAZIONE dovrebbe essere considerata una forma di COGNIZIONE (COGNIZIONE qualunque azione o processo per acquisire

Dettagli

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere. UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d

Dettagli

Gestione Turni. Introduzione

Gestione Turni. Introduzione Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4) FAQ INVIO DOMANDE CIGO CON FLUSSO XML Cosa serve per inviare una domanda CIGO con il flusso XML? (pag. 2) Come si prepara una domanda in formato XML? (pag. 3) Che differenza c è tra una richiesta XML ed

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli