SISTEMI EMBEDDED SVILUPPATI TRAMITE EDK: IMPLEMENTAZIONE ED ANALISI DELLE PRESTAZIONI DEL MECCANISMO DI DMA SUL BUS OPB

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "SISTEMI EMBEDDED SVILUPPATI TRAMITE EDK: IMPLEMENTAZIONE ED ANALISI DELLE PRESTAZIONI DEL MECCANISMO DI DMA SUL BUS OPB"

Transcript

1 POLITECNICO DI MILANO FACOLTÁ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA SISTEMI EMBEDDED SVILUPPATI TRAMITE EDK: IMPLEMENTAZIONE ED ANALISI DELLE PRESTAZIONI DEL MECCANISMO DI DMA SUL BUS OPB Relatore: Correlatore: Prof. Francesco BRUSCHI Ing. Marco Domenico SANTAMBROGIO Tesi di Laurea di: Riccardo Tornese Matricola n Paolo Somaglia Matricola n ANNO ACCADEMICO

2

3 Indice Introduzione 1 1 Premesse: concetti e strumenti FPGA EDK: Embedded Development Kit Componenti e Infrastruttura di comunicazione IP-Core I bus Il bus OPB Il trasferimento dei dati I/O a controllo di programma Polling I/O segnalato tramite interrupt Panoramica sul DMA Le varianti Implementazione Gli IP-Core coinvolti Il controllore centralizzato DMA FIFO Il motore DMA Distribuito incluso nell IPIF Drivers i

4 4.3 La gestione degli interrupt OPB Interrupt Controller La ricezione degli interrupt da parte del MicroBlaze La ricezione degli interrupt da parte del PowerPC Le architetture realizzate Architettura con MicroBlaze Architettura con PowerPC Prestazioni Costo in termini di area Analisi prestazionale Modello di interpretazione dei tempi software Modello di interpretazione dei tempi DMA Alcuni cenni sui grafici logaritmici Trasferimento tra due RAM Trasferimento da o verso un IP-Core custom con motore DMA I rapporti di prestazione Conclusioni e Sviluppi futuri Conclusioni Sviluppi futuri Bibliografia 98

5 Elenco delle figure 1.1 CLB in una FPGA della famiglia Virtex-II Pro Schema di uno slice Look-up table come 4 bit di input Schermata principale di Xilinx Platform Studio 8.1i Toolbar di XPS 8.1i Struttura dell IPIF Schema alternativo dell IPIF fornito dalla Xilinx in [13] Schema della tecnologia CoreConnect Ciclo di lettura in modalità DMA fly-by Tipologia DMA fetch-and-deposit Configurazione a bus condiviso Configurazione a bus semicondiviso Esempio di trasferimento burst Esempio di trasferimento cycle stealing DMA Control Register DMA Status Register Interrupt Status Register Interrupt Enable Register Automa a stati finiti di un operazione DMA semplice Funzionalità di DMA e di Packet FIFO dell IPIF Schema di una FIFO Xilinx Struttura del modulo DMA integrato nell IPIF iii

6 4.9 Ruolo e struttura di un device driver Struttura dei registri ISR, IPR, IER, IAR, SIE e CIE Struttura del registro IVR Struttura del registro MER Comportamento del MicroBlaze a fronte di un Interrupt Porte IRQ del PowerPC Schema a blocchi dell architettura basata su MicroBlaze Schema a blocchi dell architettura basata su PowerPC Modello per un intervallo temporale riportato nella colonna Software Modello per un intervallo della colonna CDMA o DDMA Sequenza di trasferimenti hardware normale e burst Grafico logaritmico dei dati in tabella Grafico logaritmico dei dati in tabella Grafico logaritmico dei dati in tabella Grafico logaritmico dei dati in tabella Grafico logaritmico dei dati in tabella Grafico logaritmico dei dati in tabella Grafico logaritmico dei dati in tabella Grafico logaritmico dei dati in tabella Ulteriore test del DMA distribuito, da FIFO a SDRAM, su Micro- Blaze Variazione dei rapporti di prestazione

7 Elenco delle tabelle 4.1 Registri per ogni canale DMA dell IPIF Occupazione dei dispositivi DMA Tempi di trasferimento da SDRAM a BRAM a confronto Tempi di trasferimento da BRAM a SDRAM a confronto Tempi di trasferimento da BRAM a BRAM a confronto Tempi di trasferimento da SDRAM a FIFO a confronto Tempi di trasferimento da BRAM a FIFO a confronto Tempi di trasferimento da FIFO a SDRAM a confronto Tempi di trasferimento da FIFO a BRAM a confronto Tempi di trasferimento da FIFO a FIFO a confronto Ulteriore test del DMA distribuito, da FIFO a SDRAM, su Micro- Blaze v

8

9 Introduzione Lo scopo di questo lavoro di tesi è un analisi quantitativa dell incremento di prestazioni che il meccanismo del DMA introduce all interno di un sistema embedded realizzato con il tool di sviluppo Embedded Development Kit, o EDK, prodotto dalla Xilinx. Verrà inoltre presentata la metodologia di implementazione di tale meccanismo, in modo da conferire dei riferimenti concreti alla trattazione. Il nostro è un contributo al costante lavoro che il gruppo D.R.E.S.D., acronimo di Dynamic Reconfigurability in Embedded System Design, porta avanti nel Laboratorio di Microarchitetture del Politecnico di Milano. Tale gruppo si occupa di svolgere lavoro di ricerca su tutto ciò che concerne la progettazione di sistemi embedded dinamicamente riconfigurabili. Nel seguito si farà maggiore chiarezza sulla rapporto che questo lavoro ha con tale gruppo. Per sistema embedded si intende un qualsiasi dispositivo elettronico o sistema informatico completamente integrato in un sistema più ampio, che viene da esso controllato. Viene tipicamente progettato per svolgere un unica e ben determinata funzionalità, il che si indica anche con il termine special-purpose. I sistemi embedded, grazie alle loro elevate prestazioni ed ai loro bassi consumi, sono largamente usati sia nell ambito di sistemi monoprocessore come telefoni cellulari, fotocamere digitali o elettrodomestici in generale, sia per sistemi multiprocessore come server aziendali o grandi calcolatori utilizzati in attività di ricerca avanzata. Most engineering designs can be viewed as systems, i.e. as collections of several components whose combined operation provides useful services. [...] Most examples of systems today are either electronic in nature or contain an electronic system for monitoring 1

10 Introduzione and control. A digital system may be providing a service as a selfcontained unit, or as part of a larger system. [...] Systems that fall in this second category are commonly referred to as embedded systems. ([19]) Such systems, which use a computer to perform a specific function, but are neither used nor perceived as a computer, are generally known as embedded systems ([20]) Il termine special-purpose viene anche usato per distinguere tali sistemi da quelli general purpose, categoria della quale il comune PC è l esempio più noto, nel quale un sistema operativo supporta l espletamento, su richiesta, di una gamma vastissima di funzioni. La scarsa flessibilità dei sistemi embedded è proprio uno dei motivi che portano alla ricerca di soluzioni innovative volte a migliorare la capacità di tali sistemi di riconfigurarsi, ossia di mutare la proprio funzionalità nel tempo. Perchè ciò sia possibile, è necessario che il dispositivo permetta fisicamente tale processo. Un sistema embedded può essere implementato su diverse famiglie di circuiti elettronici, a seconda delle potenzialità che essi offrono e dalle esigenze del progettista; tali esigenze sono legate, oltre appunto alla riconfigurabilità, all abbassamento dei tempi e dei costi di produzione, dei consumi e dell ingombro sul dispositivo. I dispositivi che sono maggiormente soddisfacenti, sotto i punti di vista appena elencati, sono senza dubbio le FPGA, acronimo di Field Programmable Gate Array, che permettono di abbassare drasticamente il time-to-market di un dispositivo proprio grazie alla possibilità di riconfigurarle: a differenza degli ASIC (Application Specific Integrated Circuit, la famiglia di dispositivi che in questo senso le FPGA stanno soppiantando), infatti, gli immancabili quanto frequenti ritocchi che un dispositivo in fase di prototipazione necessita non costringono più alla realizzazione di una nuova versione hardware, ma si sfruttano dei particolari software, generalmente rilasciati dal produttore della FPGA (o da quello della board che monta l FPGA stessa). Questi programmi mappano il sistema hardware in un bitstream di configurazione della stessa FPGA, che permette di testare il nuovo sistema su una configurazione hardware rimasta immutata. Il sistema embedded realizzato con tali software viene anche indicato con il nome di architettura, per cui nel seguito questi due termini verranno usati co- 2

11 Introduzione me sinonimi. Il processo di riconfigurazione maggiormente degno di nota è senza dubbio quello di riconfigurabilità dinamica parziale, che consiste nella possibilità di riprogrammare alcuni moduli del sistema senza per questo dover interrompere il suo funzionamento. Gli ASIC, d altro canto, risultano più convenienti quando il circuito, progettato e testato, è pronto per essere lanciato sul mercato e si prevede di non doverne più modificare le funzionalità. Ecco che quindi si può chiarire la posizione che questo lavoro occupa all interno del lavoro del gruppo D.R.E.S.D.: pur non occupandosi direttamente di riconfigurabilità, dà un valido aiuto nella progettazione di sistemi embedded indicando i vantaggi prestazionali introdotti dal DMA nel sistema, ed illustrando le modalità con le quali introdurre tale meccanismo in un architettura. Si fa notare, inoltre, che dai documenti [15], [16], [17], [18] risulta che gli sviluppi futuri di alcuni importanti progetti del gruppo si fondano proprio sull introduzione del DMA nei sistemi sviluppati, forte dell incremento di prestazioni che generalmente tale scelta produce. Per essere più precisi, nel capitolo 1 verranno presentati gli strumenti sui quali abbiamo lavorato. Nel capitolo 2 verranno spiegate nel dettaglio l infrastruttura di comunicazione e le modalità di trasferimento dei dati che nel corso degli anni sono state ideate. Nel capitolo 3 verrà approfondito il concetto di DMA e verranno illustrate le diverse varianti a livello teorico. Nel capitolo 4 l attenzione sarà rivolta all implementazione che la Xilinx mette a disposizione della tecnologia DMA, insieme ad una serie di considerazioni riguardo l effettivo utilizzo in EDK, con lo scopo di colmale alcune lacune della documentazione ufficiale. Nel capitolo 5 analizzeremo i risultati ottenuti dai test per valutare l aumento di prestazioni che il DMA produce nei sistemi realizzati. Infine il capitolo 6 conterrà le conclusioni a cui siamo giunti al termine del nostro lavoro, insieme ad alcuni suoi sviluppi futuri. 3

12

13 Capitolo 1 Premesse: concetti e strumenti Questo capitolo elenca e descrive gli strumenti che sono stati utilizzati nel presente lavoro di tesi. Questo si è svolto essenzialmente in due fasi, la prima di progettazione e implementazione del sistema attraverso il tool di sviluppo Embedded Development Kit, o EDK, prodotto dalla Xilinx, mentre la seconda di analisi delle prestazioni del sistema, per la quale è stato evidentemente necessario rendere tale sistema, o architettura, operativo su un dispositivo riconfigurabile. Per questo è stata adoperata una FPGA appartenente alla famiglia Virtex-II Pro, prodotta anch essa dalla Xilinx, montata su una Avnet Virtex-II Pro Development Board. 1.1 FPGA Le FPGA, Field Programmable Gate Array, sono dei circuiti integrati, appartenenti alla famiglia dei PLD (Programmable Logic Device), che possono essere programmati un numero indefinito di volte durante il loro ciclo di vita. La loro versatilità e semplicità di utilizzo le rendono sempre più utilizzate per realizzare prototipi e sistemi in grado di evolversi e adattarsi durante l uso, sottraendo una notevole fetta di mercato agli ASIC. L espansione nel mercato delle FPGA a discapito degli ASIC si motiva indagando sulle caratteristiche intrinseche di questi due dispositivi e sulle loro principali differenze: i dispositivi ASIC risultano più veloci (anche se la differenza va via via diminuendo) e più efficienti (in quanto 5

14 CAPITOLO 1. Premesse: concetti e strumenti. utilizzando le FPGA si ha sempre un certo spreco di silicio), in quanto l hardware è costruito ad hoc per la funzione che il dispositivo stesso è chiamato ad implementare; a favore delle FPGA, invece, gioca il fatto che forniscono la possibilità di essere riprogrammate più volte e quindi non sono vincolate a svolgere una specifica funzione ma quella che il suo utente preferisce. Partendo da questi presupposti si intuisce come la prototipazione di dispositivi nuovi, o l aggiornamento di sistemi per i quali non possono essere escluse variazioni nel funzionamento, richieda dei costi elevati se si utilizzano dei dispositivi ASIC poichè si presenta il bisogno di utilizzare più integrati. I costi si riducono sensibilmente se si utilizzano le FP- GA visto che la loro logica interna è realizzata caricando, di volta in volta, i dati di configurazione presenti su una memoria esterna all integrato, i quali possono essere cambiati a seconda delle esigenze. Tale configurazione, per essere più precisi, è proprio la descrizione del sistema embedded che verrà mappato sulla FPGA stessa, espressa in termini di diversi linguaggi, come per esempio il C o il C++ se stiamo parlando del codice che verrà eseguito dal processore del sistema, oppure VHDL, se stiamo parlando dei singoli IP-Core o dell intera architettura, oppure altri, anche propri del software di sviluppo che stiamo utilizzando per creare il sistema stesso. L aspetto di maggior attinenza con il presente lavoro di tesi è la struttura interna della FPGA, in quanto si parlerà di costo di occupazione d area, misurata in termini degli elementi costitutivi della FPGA stessa. Essi sono i CLB, acronimo inglese di blocchi logici riconfigurabili e gli IOB o blocchi di Input/Ouput, che permettono la comunicazione dei blocchi riconfigurabili con l esterno. Tali blocchi sono connessi tra loro attraverso una opportuna infrastruttura di comunicazione; si noti però che non si tratta di quella mappata, che si usa nel sistema embedded, come lo standard CoreConnect, ma di un insieme di interconnessioni fisiche stampate sul silicio. La figura 1.1 mostra la struttura di un CLB in una FPGA della famiglia Virtex- II Pro. Essi costituiscono le componenti logiche fondamentali di una FPGA, grazie alle quali si implementano circuiti logici sia sincroni che sequenziali. Come la stessa figura mostra, ogni CLB è formata da quattro slices, le quali sono rag- 6

15 CAPITOLO 1. Premesse: concetti e strumenti. Figura 1.1: CLB in una FPGA della famiglia Virtex-II Pro gruppate a coppie e connesse fra di loro. Una slice è un elemento di logica la cui struttura generica viene rappresentata in figura 1.2; osservandola, si evince che una slice è a sua volta formata da elementi di logica ancora più semplici, tra i quali si annoverano le LUTs, acronimo di Look-Up Table. Una LUT è composta da quattro segnali in input e genera un bit di uscita, si può quindi ottenere qualunque funzione a quattro bit, che consente l implementazione delle più svariate funzioni logiche. Dopo vari studi sulle FPGA, si è deciso di realizzarle con LUT a 4 bit in ingresso, poichè rappresentano un buon compromesso tra LUT con troppi ingressi e LUT con pochi. Le prime sono molto utili nello sviluppo di funzioni logiche complesse, ma poco sfruttate per le funzioni logiche più semplici. Le ultime invece, quelle con meno di quattro ingressi risultano molto limitative per la realizzazione di funzioni logiche complesse. Per svolgere il presente lavoro di tesi è stata utilizzata la board Virtex-II Pro Development Board, prodotta dalla Avnet, che monta una FPGA XC2VP20 con package ff8896 e speedgrade -5. Oltre ad essa, tale board include 32MB di SDRAM, 2MB di SRAM, 16MB di memoria Intel StrataFlash, un PHY (circuito integrato, o suo blocco funzionale, che si occupa della conversione analogicodigitale dei segnali) Ethernet 10/100/1000Mbit/s ed una porta seriale. Quest ultima è stata da noi usata a scopo principalmente di debug, mentre ci siamo serviti della SDRAM per effettuare i nostri tests. Esiste anche un hard-processor IBM PowerPC405 montato all interno della FPGA (per la verità, tale FPGA ne include due, dei quali uno non è stato usato in questo lavoro), che quindi si può usare 7

16 CAPITOLO 1. Premesse: concetti e strumenti. Figura 1.2: Schema di uno slice Figura 1.3: Look-up table come 4 bit di input direttamente senza che la FPGA debba usare degli elementi di logica per mappare il processore del sistema; esiste tuttavia anche questa possibilità, tramite la quale si possono sfruttare le potenzialità del MicroBlaze, che è appunto un softprocessor. I nostri tests sono stati svolti, come sarà esposto in seguito, su sistemi 8

17 CAPITOLO 1. Premesse: concetti e strumenti. sia contenenti un PowerPC che contenenti un MicroBlaze. Infine, la board mette a disposizione anche una FPGA della famiglia Spartan-II; non è però stata utilizzata in questo lavoro. La scelta degli strumenti sopra descritti è stata guidata non tanto dalla board in sè, quanto dalla FPGA, che è di media grandezza; i sistemi realizzati per questo lavoro di tesi, infatti, necessitano non tanto di particolari componenti offerti dalla board, quanto di una buona capienza della FPGA ospite, che è stata appunto trovata nella XC2VP20. È quindi da notare che le architetture descritte nel seguito non sono strettamente legate alla board o alla FPGA, anche se non si possono definire portabili nel senso stretto della parola. Piuttosto, avendo a disposizione il tool di sviluppo adeguato, con un pò di attenzione si riesce senza problemi a ricreare su qualsiasi FPGA tali architetture, essendo formate da componenti molto comuni quali memorie, IP-Core custom (che sono per definizione portabili), processori e bus standard. 1.2 EDK: Embedded Development Kit EDK, Embedded Development Kit, è un ambiente di sviluppo fornito dalla Xilinx che permette di realizzare sistemi, mappabili su una FPGA, che comprendano dispositivi elettronici offerti dalla scheda su cui la FPGA stessa è montata. La struttura della scheda è definita in un file particolare di tipo xbd, acronimo di Xilinx Board Description. L ambiente di progettazione è Xilinx Platform Studio, o XPS, con il quale si possono realizzare architetture partendo dalla descrizione dei vari componenti scritta in un linguaggio di descrizione dell hardware, e controllarle tramite software durante l esecuzione. In questo ambiente di sviluppo l utente ha accesso a diversi file ed opzioni che configurano l architettura in questione, anche se rispetto alle precedenti versioni si può contare sull aiuto di scorciatoie, non sempre del tutto intuitive, che permettano di evitare di ritoccare l architettura per mezzo di modifiche in vari file di testo. Si può invece usare un editor grafico, descritto nel seguito, o un wizard chiamato Base System Builder (o BSB), ma esso non si presta, come la Xilinx avverte, alla produzione di architetture sofi- 9

18 CAPITOLO 1. Premesse: concetti e strumenti. sticate direttamente, ma solo di architetture base da espandere poi manualmente. L estensione caratteristica di un progetto realizzato con XPS è.xmp, e solitamente nome del file è system.xmp. La versione da noi utilizzata è la 8.1i, e si noti che non è possibile ricreare con versioni precedenti le architetture presentate nel seguito, perchè il controllore DMA non è disponibile in tali versioni, e non abbiamo elementi per stabilire se il supporto al DMA integrato nell IPIF funzioni correttamente anche in versioni precedenti, per il semplice fatto che non abbiamo effettuato prove in tal senso. L interfaccia grafica di Platform Studio è quella di figura 1.4. Figura 1.4: Schermata principale di Xilinx Platform Studio 8.1i In essa, il pannello di controllo è contrassegnato dalla lettera A; quando viene aperto un progetto, in tale zona appaiono tre segnalibri che aprono, rispettivamente, le viste Project, Applications e IP Catalog. Scegliendo il primo, viene mostrato l elenco dei file di sistema, quali ad esempio: Il file Microprocessor Hardware Specification (.MHS), che contiene i parametri fisici per ogni IP-Core, quali le connessioni fisiche tra le porte e gli indirizzi associati (generalmente, base e high address); 10

19 CAPITOLO 1. Premesse: concetti e strumenti. Il file Microprocessor Software Specification (.MSS), che contiene i parametri software di ogni IP-Core, quali per esempio i riferimenti ai loro drivers ed alle loro routine di interrupt (in quest ultimo caso, il riferimento è il nome della routine, che deve essere definita o nel driver stesso dell IP-Core, o nel codice dell applicazione principale); Il file User Constraints File (.UCF), dove vengono definite le corrispondenze tra pin logici e fisici, definendo così i vincoli di area dell architettura. Cliccando sul secondo segnalibro, invece, viene fornito l elenco delle componenti software del sistema, ovvero i file.c eseguiti dal processore e i file di intestazione che essi includono. Infine, il terzo segnalibro è associato alla lista degli IP-Core che XPS mette a disposizione per costruire l architettura desiderata; l aggiunta di tali IP-Cores avviene attraverso una semplice operazione di drag-and-drop del nome del componente sul frame indicato in figura 1.4 con la lettera B, che contiene appunto l editor grafico delle caratteristiche del sistema. In tale editor è possibile visualizzare e modificare la connessione degli IP-Core ai vari bus, la connessione diretta tra le porte dei vari IP-Core, e la divisione dello spazio di indirizzamento per ogni dispositivo. Infine, la zona C è la console. In essa vengono visualizzati i logs del compilatore e i messaggi prodotti dall applicazione principale. Figura 1.5: Toolbar di XPS 8.1i Si passa ora a descrivere la Figura 1.5, che riporta un particolare della barra di XPS. In essa sono presenti i comandi che compongono il flusso di creazione di un architettura, e da sinistra si ha: Generate Netlist: è il processo di traduzione della descrizione HDL nei componenti hardware e nelle interconnessioni tra essi. Questa operazione è svolta tramite lo strumento software di sintesi XST, Xilinx Synthetizer. Generate bitstream: utilizza la rete di interconnessioni, creata dalla fase di sintesi, per generare il bitstream per la configurazione della FPGA utilizza- 11

20 CAPITOLO 1. Premesse: concetti e strumenti. ta, ovvero il file con estensione BIT. Inizialmente viene eseguita l operazione di map a partire dal file NGD, ovvero viene confrontata la descrizione del sistema sintetizzato con le librerie fornite che descrivono il dispositivo. Successivamente viene eseguita un operazione di place and route, che effettivamente permette di tradurre la netlist nei blocchi logici presenti sulla FPGA. Create or Import Peripheral: non riguarda il flusso di creazione di un architettura, ma permette di inserire nel progetto un IP-Core preesistente oppure un IP-Core che si sta per realizzare. Open Software Platfor Settings dialog: apre un editor grafico delle informazioni contenute nel file MSS. Generate Libraries and Drivers (o LibGen): genera e compila le librerie necessarie alla compilazione nei driver. Questa procedura legge il file MDD che contiene appunto la lista delle librerie necessarie alla compilazione dei driver del componente importato in EDK e la lista dei file sorgenti che, al momento della creazione delle librerie, verranno copiati all interno della cartella corrispondente al componente nella struttura delle cartelle del processore. Quindi passa a compilare i file, utilizzando lo strumento Compile Program Sources, ed esegue il file TCL. Build All User Applications: Utilizza il compilatore GCC, GNU C Compiler, per compilare i file che contengono il codice che deve essere eseguito dal processore. Generate Linker Script: visualizza le informazioni del linker. In particolare, vengono indicate dimensione e posizione del codice eseguibile e dei dati che esso necessita, dello stack e dello heap, e dei vettori di interrupt; inoltre vengono specificati dimensione e base address di tutte le memorie dell architettura. Launch Platform Studio SDK: apre il Software Development Kit, che offre una interfaccia molto più amichevole, rispetto al semplice editor di te- 12

21 CAPITOLO 1. Premesse: concetti e strumenti. sto messo a disposizione da XPS, per la scrittura della parte software del sistema. Update bitstream: permette di unire il software generato, sia i driver che l eseguibile, e l hardware, rappresentato dal file BIT creato in fase di Generate Bitstream, realizzando così l inizializzazione della memoria. Questa operazione crea in uscita un ulteriore file BIT, download.bit, che rappresenta effettivamente l architettura da implementare sulla FPGA. Download: effettua il download su FPGA, tramite il protocollo di comunicazione JTAG su connessione via cavo parallelo, della configurazione presente nel file download.bit. 13

22

23 Capitolo 2 Componenti e Infrastruttura di comunicazione Un sistema, per definizione, è formato da più componenti. In un sistema informatico la reciproca comunicazione dei suddetti componenti è di importanza cruciale, in quanto uno degli obiettivi di tale sistema è la gestione e l elaborazione dei dati. Un sistema embedded non fa chiaramente eccezione, ed in questo capitolo verranno descritte le modalità con le quali vengono scambiati i dati al suo interno, dopo aver chiarito la natura degli elementi costituenti il sistema, o IP-Core. Verrà dunque presentata l infrastruttura di comunicazione che verrà utilizzata nelle architetture realizzate, cioè lo standard IBM CoreConnect, per poi passare alle tecnologie di scambio di dati che offre la letteratura dei sistemi informativi. Verranno elencati i vantaggi e gli svantaggi di ognuna delle tecniche a disposizione, per poi passare, nel capitolo successivo, alla trattazione del DMA. 2.1 IP-Core I sistemi embedded non si basano sulla connessione reciproca di componenti fisicamente esistenti, come i calcolatori general-purpose, ma piuttosto sono progettati, attraverso appositi software, partendo dalla descrizione dei suoi componenti hardware. Tali componenti sono detti IP-Core, che sta per Intellectual Property 15

24 CAPITOLO 2. Componenti e Infrastruttura di comunicazione Core. Un IP-Core è dunque un blocco logico, di cui esiste solo la descrizione espressa in linguaggi appositi di descrizione dell hardware, come ad esempio il VHDL (Very-high-speed integrated circuit Hardware Description Language). Ciò lo rende standard e quindi riusabile. Un IP-Core deve essere connesso ad uno o più bus dell architettura per poter essere operativo, il che significa che l IP-Core deve contenere, oltre alla logica che implementa la sua funzionalità, anche una parte di interfacciamento ad un particolare bus. Questa deve tener conto di tutto il protocollo di segnali che governano il bus stesso, e spesso, sebbene esistano architetture bus standard quali il Core- Connect, descritto nel seguito, realizzarla non è un impresa facile. La Xilinx ha ideato una tecnica per snellire tale operazione, introducendo delle interfacce standard per i bus più spesso utilizzati, in modo tale che il progettista dell IP-Core non debba gestire direttamente il protocollo del bus, ma solo un insieme semplificato di segnali. Tale insieme di segnali prende il nome di protocollo IPIC, acronimo di Intellectual Property InterConnect. Il protocollo IPIC regola la comunicazione tra la logica dell IP-Core, che poi è la porzione che viene customizzata dal progettista, e il modulo di interfacciamento che viene denominato IPIF, il cui nome esteso è Intellectual Property InterFace. In figura 2.1 viene riportato lo schema di quanto appena descritto; si noti che la fonte di tale figura è la documentazione Xilinx dell IPIF, in particolare il documento [4], ma in tal sede la nomenclatura è diversa: la Xilinx infatti chiama IP-Core ciò per tutto il presente testo verrà chiamato user logic, e device ciò qui viene chiamato IP-Core. La figura 2.1 è stata quindi adattata alla trattazione. Come si può vedere, l IPIF è a tutti gli effetti un blocco di logica, al quale, in fase di instanziazione con l apposita procedura guidata di XPS, possono essere aggiunte o tolte funzionalità, visibili in figura 2.1 e tra le quali ricordiamo: Un modulo di reset; Un modulo di interfacciamento master e/o slave al bus; Un insieme di registri accessibili sia dalla user logic sia dall esterno, per 16

25 CAPITOLO 2. Componenti e Infrastruttura di comunicazione Figura 2.1: Struttura dell IPIF esempio tramite indirizzamento dal codice eseguibile principale, o da altri IP-Core; Un modulo di gestione ed inoltro degli interrupt invocati via hardware dalla user logic stessa; Un modulo di memoria ad accesso FIFO, ottimizzato con lo sdoppiamento della logica di gestione in lettura (Read FIFO) ed in scrittura (Write FIFO); Un modulo DMA, che comprende un motore DMA di tipo distribuito, descritto nel seguito, ed uno slave DMA che gestisce il relativo handshake, la cui esistenza, documentata in modo quasi nullo (vedere documenti [2] e la figura 2.2), emerge anche da alcuni dati sperimentali. 17

26 The Xilinx IPIF CAPITOLO 2. Componenti e Infrastruttura di comunicazione IP Interface PLB/OPB Bus Master Interface Slave SRAM I/F Customer IP Slave Control Re. I/F Slave DMA Handshake I/F DMA Engine Slave FIFO I/F Figura 2.2: Schema alternativo dell IPIF fornito dalla Xilinx in [13] The IP interface enables customers to easily integrate their own custom application specific value-added IP into CoreConnect based systems 2.2 I bus 27 Un bus è un componente di un sistema elettronico dedicato alla trasmissione dei segnali, in modo da garantire la comunicazione tra le varie parti del sistema stesso. E tipicamente condiviso e può essere sincrono o asincrono, arbitrato o no. Consta tipicamente di tre parti indipendenti, dedicate ognuna ad una tipologia di dati che vi possono transitare: Bus Dati; Bus indirizzi; Bus di controllo. Le comunicazioni attraverso un bus avvengono secondo un protocollo, e nella nomenclatura classica una sessione operativa viene chiamata ciclo (per esempio, ciclo di lettura e di scrittura, per indicare rispettivamente l operazione di lettura e di scrittura di un dato che avviene tra due dispositivi collegati appunto dal bus), senza nessun riferimento ai cicli di clock del sistema. Nel seguito, quando si parlerà di ciclo, sarà con questa accezione, salvo quando specificato. 18

27 CAPITOLO 2. Componenti e Infrastruttura di comunicazione Nel nostro lavoro di tesi verranno sviluppate architetture che come infrastruttura di comunicazione si appoggiano sulla tecnologia CoreConnect proposta da IBM. Tale tecnologia prevede l interconnessione degli IP-Core di un sistema attraverso un insieme di tre bus (Processor Local Bus o PLB, On-chip Peripheral Bus o OPB, Device Control Register Bus o DCR), di cui due arbitrati, ed un bridge tra PLB ed OPB. I tre bus hanno differenti caratteristiche a livello di struttura interna e di segnali che ne governano la comunicazione, e sono quindi destinati ad usi differenti. Ecco una breve descrizione delle parti appena elencate: Il bus PLB Il PLB è un bus sincrono ed arbitrato ed è, insieme all OPB, il mezzo principale per il trasferimento di dati tra IP-Cores all interno dell infrastruttura CoreConnect. Ha prestazioni migliori rispetto al bus OPB, il che lo rendono, come dice il suo stesso nome, il più adatto alla connessione del processore e dei componenti del sistema che necessitano di bassa latenza e grande larghezza di banda, come le memorie cache (dati ed istruzioni) dello stesso processore. Le prestazioni del PLB sono ottimizzate dalla sua capacità di propagare la comunicazione in modalità pipeline, in modo da ridurre il tempo di latenza che intercorre, per esempio, tra due operazioni di lettura e/o scrittura, o tra una richiesta di bus ed il relativo grant, eccetera. Secondo lo standard, esistono implementazioni di questo bus a 32, 64 e, in tempi più recenti, anche a 128 bit. Il bus OPB Il bus OPB è un bus rivolto alla comunicazione dati tra IP-Cores di medie prestazioni, come per esempio i dispositivi di I/O. La sua presenza è molto importante, in quanto permette il load-balancing del sistema; è evidente che le elevate prestazioni del PLB non verrebbero sfruttate appieno se tutte le periferiche del sistema dovessero comunicare attraverso di esso. Le caratteristiche del bus OPB sono, tra le altre, il protocollo di comunicazione completamente sincrono che viene propagato sia sulle linee di indirizzo, che su quelle dati, il supporto alle comunicazioni burst (una modalità secondo la quale il master non rilascia il bus per molti cicli di clock, durante i quali non deve più essere ripetuto l handshake), alla presenza di più di un master 19

28 CAPITOLO 2. Componenti e Infrastruttura di comunicazione sul bus, ed alla comunicazione in parole da uno, due o quattro bytes. È un bus arbitrato come il PLB. Il Bus DCR Il bus DCR è un bus totalmente diverso dai primi due. In primo luogo, come già affermato, non è pensato per ospitare una comunicazione dati, ma, come dice il nome stesso, di controllo. È tipicamente il bus con le peggiori prestazioni, ma d altro canto il suo scopo è quello di propagare il traffico da e verso i registri di configurazione dei dispositivi, in particolare di quelli meno veloci. È un bus sincrono ed il vantaggio che apporta è una connettività totale, concorrente e con limitato costo in termini di silicio tra tutti i componenti del sistema. OPB to PLB Bridge Secondo lo standard, il bridge tra OPB e PLB è bidirezionale ed ha come unica limitazione il rapporto tra le frequenze di clock dei due bus, che deve essere una potenza intera di due, quindi f ck,plb = 2 H f ck,opb con H intero non negativo. Spesso nelle architetture su FPGA si prende K=0, in modo da rendere i due bus isocroni. Arbitri di PLB e OPB Gli arbitri di PLB e OPB, gli unici bus di CoreConnect arbitrati, sono logicamente simili ad un multiplexer che ha come ingressi i segnali provenienti da tutti i master connessi al bus. La selezione da parte dell arbitro è governata dal protocollo di bus request/grant; in altre parole, tra tutti i segnali in ingresso, l arbitro porrà in uscita, e quindi sul bus, il segnale proveniente dall unico master a cui in quel momento è stato permesso, attraverso un preventivo grant, di accedere al bus stesso. Una tipica architettura conforme allo standard CoreConnect è rappresentata in figura 2.3. In generale, affinché un trasferimento abbia inizio, una periferica master deve alzare un segnale di richiesta del bus, al quale l arbitro potrà assegnare il grant. Se questo si verifica, l IP-Core che ora ha ottenuto il controllo del bus, per mezzo del segnale di indirizzamento, attiva la periferica slave e tramite la linea dati effettua il trasferimento. La periferica slave non può dare inizio ad un trasferimento, 20

29 CAPITOLO 2. Componenti e Infrastruttura di comunicazione Figura 2.3: Schema della tecnologia CoreConnect può solo inviare e ricevere i dati sul segnale apposito ed eventualmente interagire con la periferica master usando altri segnali. Questo è il concetto alla base del trasferimento master-slave, anche se ogni bus ha i suoi particolari protocolli. Le architetture sviluppate nel presente lavoro di tesi non fanno uso del bus DCR, mentre il bus PLB è presente ma non ha una grande influenza sulla metodologia di implementazione del DMA; è quindi l OPB il cuore dei sistemi realizzati, al che viene proposto un approfondimento Il bus OPB Lo standard CoreConnect prevede che gli IP-Core master comunichino sul bus OPB attraverso un insieme di segnali diverso da quello finalizzato all utilizzo da parte degli IP-Core OPB-slave. Verranno ora presentati questi segnali; si noti che gli IP-Core con connessione di tipo master-slave sul bus fanno uso di entrambi gli insiemi di segnali elencati. Segnali in ingresso agli IP-Core master: Clk : segnale di clock cui l IP-Core si sincronizza Rst : segnale di reset 21

30 CAPITOLO 2. Componenti e Infrastruttura di comunicazione Dbus[0:31] : dati da leggere da slave errack : notifica la presenza di errori da parte dell IP-Core slave MGrant : segnale proveniente dal bus arbiter che indica la disponibilità del bus retry : richiesta di terminare la trasmissione da parte dell IP-Core slave timeout : notifica di timeout da parte del bus arbiter xferack : notifica di completa trasmissione ( o ricezione ) dei dati da parte dell IP-Core slave Segnali in uscita dagli IP-Core master: Abus[0:31] : indirizzo dell IP-Core slave BE[0:3] : vettore di segnali di validazione dei byte sul DBus buslock : blocca lo stato del bus arbiter, quindi impedisce agli altri master di accedere al bus Dbus[0:31] : dati da scrivere su slave request : richiede all arbiter l uso del bus RNW : se a 1 indica lettura da slave, altrimenti scrittura su slave select : indica l utilizzo del bus da parte del master che lo attiva seqaddr : indica che il prossimo indirizzo su cui scrivere o da cui leggere sarà quello successivo all indirizzo corrente. Segnali in ingresso agli IP-Core slave: Clk : segnale di clock cui l IP-Core si sincronizza Rst : segnale di reset 22

31 CAPITOLO 2. Componenti e Infrastruttura di comunicazione Abus[0:31] : indirizzo dell IP-Core slave BE[0:3] : vettore di segnali di validazione dei byte sul DBus Dbus[0:31] : dati da leggere da master RNW : se a 1 indica lettura scrittura su master, altrimenti lettura da master select : indica l utilizzo del bus da parte del master che lo attiva seqaddr : indica che il prossimo indirizzo su cui scrivere o da cui leggere sarà quello successivo all indirizzo corrente. Segnali in uscita dagli IP-Core slave: Dbus[0:31] : dati da leggere da scrivere su master errack : notifica la presenza di errori retry : richiesta di terminare la trasmissione xferack : notifica di completa trasmissione (o ricezione) dei dati toutsup : prolunga il tempo di timeout Affinché il trasferimento possa cominciare, l IP-Coe master deve alzare il segnale request che la collega direttamente con il bus arbiter. Questo decide se garantirle l utilizzo del bus tramite il segnale MGrant. Una volta ottenuto il possesso del bus, l IP-Core master alza il segnale select che indica l inizio del trasferimento. Può inoltre alzare il segnale di lock che blocca lo stato dell arbiter impedendo agli altri master di richiedere l uso del bus. Durante lo stesso ciclo di clock scrive sull Abus l indirizzo dell IP-Core slave da attivare. Se l operazione è di lettura, il segnale RNW sarà alto e l IP-Core slave manderà i dati sul DBus in uscita mentre l IP-Core master li leggerà quello in lettura. Se l operazione è di scrittura, RNW sarà basso e l IP-Core master scriverà su DBus in uscita e quella slave leggerà dal DBus in ingresso. I segnali BE abilitano i relativi byte del DBus. Se un segnale di BE è basso, il relativo byte sul DBus verrà ignorato. Quando l IP-Core slave 23

32 CAPITOLO 2. Componenti e Infrastruttura di comunicazione avrà letto o scritto i dati alzerà il segnale xferack. A questo punto il master può rilasciare l uso del bus abbassando select ed eventualmente buslock e la transizione termina. Per diminuire i tempi di trasmissione dei dati, è possibile inviare i dati su una serie di indirizzi sequenziali senza dovere ripetere le procedure precedenti su ogni dato. Questo è possibile grazie al sengale seqaddr che, usato con il segnale di lock alto, permette allo slave di trasmettere i dati in sequenza e di poter calcolare l indirizzo dati senza dover leggere dall Abus. E così possibile diminuire i tempi di latenza ed avere un trasferimento di tipo burst, in cui, cioè, si trasmette un unità di dato per ogni ciclo di clock. Gli altri segnali sono usati per gestire gli errori. In particolare timeout è usato da bus per notificare al master il timeout di risposta dell IP-Core slave. Se questa non può rispondere entro il tempo previsto, può alzare il segnale toutsup che blocca il timer del timeout impedendone l avvio. Se invece c è il rischio che si verifichi una situazione di deadlock o l IP-Core slave non è momentaneamente in grado di completare il trasferimento, questa può alzare il segnale retry, che richiede al master la terminazione del trasferimento. Il segnale errorack, infine, è alzato dall IP-Core slave per indicare un errore nel trasferimento. Le prime versioni di questo bus prevedevano IP-Core, che chiameremo legacy devices, con la possibilità di trasferire dati di dimensione diversa da quella del bus dati stesso. Dalla versione 2.0 sono supportate anche le byte-enable devices, che usano cioè un vettore di segnali, chiamati BE (Byte Enable), che settano la validità del relativo byte sul bus dati. Questo segnale dovrà restare constante per tutto il trasferimento e non sarà, quindi, possibile modificare la dimensione del dato. CoreConnect prevede anche l utilizzo di preriferiche miste e l interazione di perfiriche di tipo diverso tramite apposite interfacce. Questa varietà di soluzioni, tuttavia, aumenta la complessità del sistema e può portare ad una perdita di prestazioni. Con l intento di semplificare il sistema ed ottimizzare le prestazioni, Xilinx usa nei propri IP-Core solo un sottoinsieme dei segnali disponibili su OPB. In particolare tutti i device Xilinx sono di tipo byte-enable. 24

33 CAPITOLO 2. Componenti e Infrastruttura di comunicazione 2.3 Il trasferimento dei dati Nei sistemi informativi un problema di cruciale importanza è quello dello scambio dei dati. Lo scenario tipico è quello nel quale un dispositivo del sistema possiede dei dati, o ne conosce l ubicazione, e si vuole fare in modo che quei dati vengano trasferiti ad un altro dispositivo. Il problema è significativo in quanto, come già accennato sopra, in generale in un sistema di calcolo non tutti i dispositivi conoscono la totalità del sistema nel quale sono inseriti; per esempio, il processore sa indirizzare solo la memoria centrale, ed una periferica spesso conosce solo la sua struttura interna e le interfacce di cui dispone. In una tipica architettura di calcolo, tutte le periferiche, qualunque sia la loro funzione, posseggono un supporto di memoria che viene incluso nello spazio di indirizzamento del processore; in questo modo, il processore non sa distinguere a quale dispositivo appartenga un certo indirizzo, ed è solo a carico del programmatore gestire bene questa situazione. Esiste anche un altra soluzione, ossia quella nella quale tali porzioni di memoria interne alle periferiche vengono accedute dal processore attraverso particolari istruzioni dedicate, ma non è il caso di soffermarsi più di tanto su tale tecnica, in quanto la prima descritta è anche quella che viene utilizzata di default nel tool di sviluppo EDK, e quindi anche nel nostro elaborato di tesi. In questo modo dunque la differenza tra i dispositivi di I/O e la memoria vera e propria si fa più sfumata se si parla di trasferimento di dati; in qualunque modo la periferica sia venuta in possesso di dati, si tratta in entrambi i casi di comandarla, comunicando tramite la finestra di indirizzi a lei dedicata nello spazio complessivo, in modo tale che la sua richiesta di trasferimento venga soddisfatta. Nel seguito pertanto utilizzeremo i vocaboli trasferimento e I/O come sinonimi, intendendo per entrambi lo scambio di dati attraverso l interfaccia di una singola periferica del sistema, e non tra il sistema e l ambiente esterno. Esistono diverse soluzioni al problema di trasferimento di dati, le quali si applicano sia agli impianti informatici, in cui le entità in gioco sono i dispositivi fisici (detti appunto dispositivi di I/O) sia ai sistemi embedded costituiti dall interconnessione di IP-Core. Una stessa tecnica di I/O può essere implementata sui due tipi di sistema con modalità differenti, come verrà specificato meglio più avanti. Le principali soluzioni di gestione del trasferimento 25

34 CAPITOLO 2. Componenti e Infrastruttura di comunicazione dei dati sono: 1. I/O a controllo di programma 2. Polling 3. Interruzioni o interrupt 4. Direct Memory Access (DMA) Verranno ora presentate le prime tre soluzioni, per poi dedicare una trattazione più approfondita della quarta, che riportiamo nel capitolo I/O a controllo di programma La tecnica di I/O detta programmata, o a controllo di programma, prevede che il processore sia l unico gestore e supervisore di tutte le operazioni di I/O. Più precisamente, quando questo incontra nel codice una istruzione di I/O, inizializza il trasferimento presso la periferica indirizzata, e non esegue più nessun altra istruzione fino al suo completamento. Il tempo speso in questo modo, per ogni operazione di I/O, viene indicato con il termine ciclo di busy waiting. È evidente che è una soluzione inaccettabile dal punto di vista prestazionale per due motivi: prima di tutto il processore, che è un unità di calcolo, viene sprecato per eseguire un operazione lunga e ripetitiva; inoltre, si crea una dipendenza delle prestazioni complessive dalle prestazioni della singola periferica coinvolta nel trasferimento, per cui periferiche particolarmente povere in termini di transfer data rate bloccano la computazione per periodi di tempo più prolungati. D altra parte, è la tecnica di maggior semplicità implementativa. 2.5 Polling Il termine polling ha in informatica il significato di campionamento sincrono di un certo contenuto informativo attuato da un cliente su uno o più centri di servizio. In questo contesto viene usato per indicare la tecnica secondo la quale il processore 26

35 CAPITOLO 2. Componenti e Infrastruttura di comunicazione legge, ad intervalli predefiniti, il registro di stato delle varie periferiche; è solo, quindi, tramite l aggiornamento continuo del proprio registro di stato che la periferica comunica con il processore, il quale in questo modo viene a conoscenza, tra le altre cose, di eventuali bisogni di operazioni di I/O, delle modalità con cui effettuarle, di errori o di completamenti con successo. Il polling è considerato un leggero miglioramento della tecnica precedentemente illustrata, in quanto durante il ciclo di busy waiting in cui il processore è in attesa di una periferica, è possibile fare polling dello stato di una qualsiasi delle altre, anche se in effetti è l unica operazione che si può effettuare in quell intervallo di tempo. Rimangono quindi i problemi di cui sopra, con alcune differenze: infatti, da una parte si registra un notevole miglioramento delle prestazioni delle operazioni di I/O su periferiche lente (mentre si attende il completamento di quella, si possono soddisfare molte altre richieste da parte di periferiche più veloci), dall altra si assiste ad un peggioramento dovuto all overhead introdotto dalle continue richieste della CPU sui registri di stato delle periferiche (che evidentemente hanno luogo anche quando nessuna periferica ha richieste di I/O pendenti). 2.6 I/O segnalato tramite interrupt Con la parola interrupt si intende un trasferimento automatico di informazioni di controllo generato da una periferica e diretto verso l unità centrale di calcolo, in risposta ad un evento che richiede un intervento da parte di quest ultima. Nell ambito delle operazioni di I/O, e non solo, questo implica che il processore può svincolarsi dalla supervisione diretta della singola operazione, delegandone la responsabilità alla periferica stessa, limitandosi a dargli il compito di avvertirlo del completamento e dell insorgere di eventuali errori. Nel frattempo il processore può portare a compimento altri task, fermo restando che alcune risorse potrebbero essere occupate dalla periferica attiva nello stesso istante (per esempio, ci potrebbe essere una contesa per l accesso ad un bus). In concomitanza con l interruzione, la CPU cambia il contesto di esecuzione per eseguire una Routine di Interrupt (nel seguito abbreviata con IR) preventivamente associata all evento, per 27

36 CAPITOLO 2. Componenti e Infrastruttura di comunicazione poi tornare all esecuzione normale. Rispetto alle due tecniche precedentemente descritte, questa presenta una maggiore complessità implementativa; per contro, apporta un miglioramento delle prestazioni tanto più grande quanto maggiore è il tempo di esecuzione dell operazione da parte della periferica rispetto al tempo che il processore impiega a programmarla e a gestire il successivo interrupt. In genere, con l I/O guidato dagli interrupt l operazione di I/O complessiva è di fatto divisa in tante piccole sottp-operazioni, per ciascuna delle quali bisogna quindi gestire l interrupt associato (pensiamo per esempio ad una tastiera, per ogni tasto premuto dall utente viene generato un interrupt); questo è un fattore limitante delle prestazioni. Si ottengono dunque migliori risultati combinando l uso delle interruzioni con tecniche più performanti, come ad esempio quella ad accesso diretto della memoria, esposta nel seguito; in questo modo non si effettua la divisione in sotto-operazioni, riducendo drasticamente il numero di interrupt da gestire. La sequenza di operazioni che governano il processo sopra descritto viene denominata Protocollo di interrupt, del quale un esempio generico è il seguente: 1. La CPU programma una periferica in modo tale che esegua certe operazioni (non necessariamente di I/O); avviata l esecuzione, l unità di calcolo può dedicarsi ad altre elaborazioni; 2. La periferica e la CPU lavorano contemporaneamente; 3. La periferica segnala al processore l evento di terminazione (o di errore) dell operazione precentemente settata (interrupt request); 4. Il processore risponde con un segnale di interrupt acknowledge. 5. Il processore finisce di eseguire l operazione corrente (se ne esiste una) e salva lo stato corrente della computazione (tipicamente in registri quali il Program Counter (PC) ed il Program Status Word (PSW), rispettivamente l indice dell ultima istruzione eseguita e lo stato del programma in esecuzione); 6. Il processore salta ad eseguire un appropriata routine di interrupt (IR). Il binding tra interrupt e IR era stato stabilito in uno dei seguenti due modi: 28

37 CAPITOLO 2. Componenti e Infrastruttura di comunicazione Auto Vectoring Interrupt Scheme: durante il ciclo di acknowledge dell interrupt, il controller dell interrupt, che in questo caso deve esistere, invia al processore tutto o parte dell indirizzo di memoria della IR; Hard Vector Interrupt Scheme: si associa la IR alla porta fisica del processore, o del controllore di interrupt, alla quale l interrupt giunge, o più semplicemente se ne invoca una sola per tutti. 7. Terminata l esecuzione della IR, vengono ricaricate le informazioni di stato e l esecuzione riprende normalmente. 29

38

39 Capitolo 3 Panoramica sul DMA Lo scopo di questo capitolo è presentare una panoramica sulla tecnica di accesso diretto alla memoria, focalizzando la trattazione sulle sue specifiche, più che sulle sue implementazioni, rendendo così il discorso platform-indipendent. Verranno descritti tutti gli aspetti di questa tecnica, in modo sia da favorire la comprensione dei contenuti a venire, sia da offrire un termine di paragone rispetto all implementazione che la Xilinx ha realizzato di questa tecnica, per la quale si rimanda al capitolo successivo. La tecnica di accesso diretto alla memoria coinvolge questi attori: Il promotore del processo, ossia il dispositivo, non necessariamente master sul bus, che effettua la richiesta di servizio DMA; L esecutore del processo, chiamato generalmente Controller, che soddisfa la richiesta di cui sopra; La CPU, che in generale può corrispondere, come in questo lavoro di tesi, al promotore oppure no; La sorgente dei dati; La destinazione dei dati. Come già accennato prima, tra i due tipi di memoria solo quella centrale è integralmente indirizzabile, e quindi accessibile direttamente dal processore; molti 31

40 CAPITOLO 3. Panoramica sul DMA calcolatori, inoltre, adottano la soluzione cosiddetta di I/O mappato in memoria : ciò significa che, all interno di ogni periferica di acquisizione, esiste una limitata quantità di memoria indirizzabile dal processore. Questa tecnica si ritrova anche nei sistemi embedded sviluppati con XPS, in quanto gli IP-Core occupano area su FPGA che in parte include la logica necessaria all implementazione della loro funzionalità, e in parte include tipicamente registri ai quali viene associato un indirizzo di memoria. Tale caratteristica implica che, quando si farà riferimento alla sorgente ed alla destinazione dei dati, o più genericamente di memoria, non faremo riferimento necessariamente alla memoria centrale, ma genericamente a una zona indirizzabile dal processore. In generale, la richiesta di servizio DMA del promotore consiste in un ordine del tipo sposta K bytes dalla locazione di memoria X alla locazione Y, alla quale il controller risponde senza chiedere aiuto al processore. Nel seguito useremo diversi nomi per descrivere temporalmente lo svolgimento delle sessioni DMA: Con ciclo, o ciclo di bus, intenderemo un operazione atomica che avviene sul bus, che si svolge secondo la modalità classica di ottenimento del controllo, posizionamento di dati, ricezione eventuale di una risposta e rilascio del bus; Con sessione si intenderà la transazione completa, partendo dalla richiesta da parte del promotore, passando per l handshake DMA, fino ad arrivare al punto in cui il controllore smette di prendere in considerazione la richiesta stessa (sia che essa sia andata a buon fine, sia che sia stata abortita); L intervento del processore si riduce quindi sensibilmente, anche se lui stesso è il promotore, nel qual caso si fa carico dell overhead di inizializzazione del processo; inoltre, in ogni caso, la CPU deve comunque venire a conoscenza dell esito dell operazione (con un apposito I/O per mezzo di una delle altre tecniche, sopra elencate). La tecnica di accesso diretto alla memoria realizza quindi pienamente, all interno di un sistema informatico, il disaccoppiamento tra le attività di computazione e di trasferimento dei dati, così diverse da consentire una maggiore efficienza se implementate separatamente. Come già accennato prima, mentre in ge- 32

41 CAPITOLO 3. Panoramica sul DMA nerale la computazione si svolge attraverso una sequenza di istruzioni in qualche modo diverse l una dall altra (a meno di architetture SIMD, acronimo di Single Instruction Multiple Data, di calcolo vettoriale), il trasferimento di dati è invece effettuato in modo diametralmente opposto: l istruzione è grossomodo la stessa (sposta il dato X dalla locazione A alla locazione B) e viene ripetuta numerose volte. È ragionevole dunque sfruttare questa diversità, evitando di delegare alla CPU entrambi i compiti, ma focalizzare essa sulla computazione, e lasciare ad altri dispositivi dedicati il compito di trasferire i dati, permettendo quindi un ottimizzazione ad hoc. I vantaggi che il DMA introduce rispetto alle precedenti tecniche sono: Il trasferimento è completamente gestito via hardware, il che lo rende sia più veloce della gestione dell I/O a livello di programma, sia più adatto agli I/O di acquisizione, in quanto la latenza di un dispositivo hardware è minore della latenza di un sistema basato sugli interrupt; Il DMA alleggerisce il carico di lavoro del processore ancor più degli interrupt usati da soli, soprattutto se l operazione richiederebbe un gran numero di interrupt (come l input da tastiera); ad ognuno di questi, infatti, corrisponde un cambio di contesto per l esecuzione della IR associata, il che rallenta l esecuzione dell applicazione. Il DMA, invece, si prende carico dell intera operazione di trasferimento, invocando un unico interrupt alla fine. L unico svantaggio è che il controllore DMA è un componente dedicato, che nel caso di dispositivi fisici introduce un costo di acquisto e di manutenzione, mentre nel caso degli IP-Core introduce lavoro di sviluppo e di manutenzione del codice VHDL del componente e costo in termini di area sul sistema mappato su FPGA. 3.1 Le varianti Sebbene le linee generali secondo le quali si svolge un trasferimento in modalità DMA si possano riassumere in poche righe, esistono in realtà molti modi in cui 33

42 CAPITOLO 3. Panoramica sul DMA una sessione DMA può venire intrapresa. Tali varianti si distinguono in base ad alcune caratteristiche: 1. Tipologia del trasferimento: Fly-by mode. Viene anche chiamata modalità singolo ciclo-singolo indirizzo: una richiesta fly-by DMA è tipicamente costituita dalla specifica di una locazione di memoria centrale da cui ricevere (o su cui mandare) i dati. Una volta ottenuto il controllo del bus, pertanto, il controllore effettua delle richieste alla memoria in cui esso si limita a specificare l indirizzo; nel caso in cui la richiesta è di lettura, la memoria pone sul bus dati il dato richiesto ed il promotore lo acquisisce, nel caso invece di una scrittura è il promotore a mettere, uno dopo l altro, i dati sull apposito bus, mentre il controllore effettua scritture sulla memoria di quegli stessi dati, gestendo solo gli scambi di indirizzi. Evidentemente ogni transazione richiede un unico ciclo di bus, da qui il nome della modalità, ed è quindi l opzione più efficiente; per contro, non supporta trasferimenti in cui sorgente e destinazione coincidono. Controllore DMA «Leggi dalla Sorgente» Sorgente dei dati Destinazione dei dati Data Bus 32 Address Bus 32 Figura 3.1: Ciclo di lettura in modalità DMA fly-by. Fetch-and-deposit mode. Viene anche definita modalità doppio ciclodoppio indirizzo, ad indicare che, a differenza della modalità fly-by, 34

43 CAPITOLO 3. Panoramica sul DMA Trasferimento dati doppio qui il dato impiega due cicli di bus ad essere trasferito, perchè il controllore, dopo averlo letto dalla sorgente, lo salva in un registro temporaneo al suo interno e solo nel ciclo successivo lo scrive sulla destinazione. È una modalità poco efficiente, ma assume senso quando si Si usano due indirizzi e due accessi per trasferire devono effettuare trasferimenti impossibili con il fly-by, come quello dalla periferica (o memoria) a un altra locazione di da memoria a memoria, o quando sorgente e destinazione si trovano Consuma 2 CICLI di bus Utilizza un buffer temporaneo interno al controller su bus di diversa dimensione: grazie al salvataggio interno, il controller può modificare la dimensione del dato salvato prima di inviarlo sul secondo bus. Periferica Address bus Controller DMA MEMORIA Data bus Figura 3.2: Tipologia DMA fetch-and-deposit 2. Modalità del trasferimento: Roberto Giorgi, Universita di Siena, C106L13, Slide 46 Modalità singola. Delle tre opzioni è quella più lenta, in quanto il controllore trasferisce, per ogni ciclo, solo un dato (la cui grandezza corrisponde alla larghezza del bus su cui si sposta). Introduce un grande overhead dovuto al gran numero di handshakes richiesti. Modalità blocco. È un miglioramento rispetto al caso precedente: i dati sono spostati per blocchi. Un esempio tipico di applicazione è quello di una sessione DMA promossa da un disco fisso. 35

44 CAPITOLO 3. Panoramica sul DMA Modalità a richiesta. É l opzione dalle performances più elevate delle tre, poichè il controllore non perde il controllo del bus finchè i dati non sono stati completamente trasferiti. Lo svantaggio è che le altre periferiche connesse allo stesso bus possano rimanere inattive per lungo tempo, il che è particolarmente critico se è il processore a rimanere a lungo senza accesso al bus. È da dire però che un simile inconveniente è facilmente ovviato, per esempio con una accurata progettazione architetturale che popoli la cache del processore prima di una sessione DMA a richiesta sul suo stesso bus, in modo che non gli manchino i dati su cui lavorare; più semplicemente, si può risolvere tale inconveniente collegando processore e controllore DMA su due bus separati. 3. Disposizione logica del centro di servizio: Organizzazione centralizzata. Esistono uno o più centri di servizio dedicati ai trasferimenti DMA, che devono avere almeno l interfaccia master sul bus, al contrario delle periferiche che però devono essere almeno slave. In una tale configurazione, le prestazioni decrescono all aumentare del numero di periferiche che necessitano dei servizi DMA, a parità di numero di canali del controllore. Organizzazione distribuita. La logica di gestione dell accesso diretto alla memoria è integrata nella periferica stessa. Ciò, in primo luogo, fa scomparire il pericolo di colli di bottiglia, ma d altro canto il controllore integrato non è tipicamente progettato per rispondere a richieste esterne (è dunque difficilmente l unico controllore DMA presente nel sistema), e necessita di una interfaccia master al bus. È quindi una soluzione dispendiosa dal punto di vista del costo dei dispositivi (anche in termini di area sul chip per i sistemi embedded), ma può portare a grandi miglioramenti prestazionali se applicato a dispositivi che fanno un uso massiccio di trasferimenti DMA, che rischierebbero 36

45 CAPITOLO 3. Panoramica sul DMA quindi di intasare il controllore centralizzato; si osservi inoltre che un controllore integrato funziona, per costruzione, in modalità fly-by. 4. Modalità di programmazione del controllore: DMA semplice. In questa modalità, il promotore programma il controllore una sola volta; in altre parole, una volta che al controllore vengono specificati un indirizzo sorgente e destinazione, uno spiazzamento di memoria ed eventualmente altri parametri opzionali, dipendenti dall implementazione del controllore stesso, il promotore non può fare altro che avviare il trasferimento ed aspettare che esso sia finito per poterne inizializzare un successivo. DMA Scatter/Gather. La modalità scatter gather permette al promotore di programmare sul controllore un numero arbitrariamente grande di operazioni di I/O, tutte in una volta. Questo, generalmente, viene eseguito passando al controllore (che deve supportare questa modalità) il puntatore alla cima di una lista puntata, i cui nodi sono delle strutture che contengono, ognuna, almeno gli stessi dati che vengono specificati quando si programma una sessione DMA semplice. Alla fine di ognuna, il controllore passa automaticamente alla sessione successiva attraverso il puntatore alla struttura successiva nella lista, e così via. L operazione termina quando si conclude l operazione descritta dall ultimo nodo della lista. 5. Natura delle periferiche coinvolte nel trasferimento: Modalità a incremento di indirizzo. La modalità ad incremento di indirizzo permette di produrre una copia speculare di un insieme di dati, situati in una locazione sorgente di memoria, in un altra di destinazione. Per ogni dato di n byte trasferito, il controllore incrementa sia l indirizzo di sorgente che quello di destinazione della quantità n, per poi usare i nuovi valori così ottenuti per il trasferimento del dato successivo; 37

46 CAPITOLO 3. Panoramica sul DMA Modalità senza incremento o a serratura. La modalità a serratura, più famosa con il termine inglese keyhole, prende il nome dal keyhole register. Un keyhole register è una coppia di registri fisici, un registro dati (DR) e un registro indirizzi (AR). Quest ultimo contiene indirizzi compresi in un spazio di indirizzamento ben definito. Una scrittura o una lettura sul DR comporta un accesso all AR, al quale segue una reale scrittura (o lettura, rispettivamente) sulla locazione di memoria situata all indirizzo appena letto. Infine, l AR viene incrementato. Un accesso casuale allo spazio di indirizzamento in cui l AR assume valori è consentito solo a patto che l AR stesso sia accessibile in scrittura dall esterno. Tipiche strutture che seguono questa implementazione sono le FIFO, per le quali questa modalità è pensata: l idea è infatti quella di non incrementare l indirizzo corrispondente a tale struttura durante il trasferimento DMA, perchè la sua logica già provvede a risolvere l indirizzo reale sul quale verrà effettuata l azione richiesta. 6. Posizione e ruolo reciproci di CPU e controllore DMA: Configurazione a bus condiviso. In questo modo, rappresentato in figura 3.3, processore e controller si contendono il bus, in misura tanto maggiore quanto più massiccio è l uso che entrambi i dispositivi fanno del bus stesso. Processore DMA I/O I/O Memoria Bus di sistema Bus di I/O Figura 3.3: Configurazione a bus condiviso Processore DMA Memoria Configurazione a bus semicondiviso. In questa configurazione, visibile in figura 3.4, il controller è collegato a più bus diversi (minimo 2), di cui uno solo è lo stesso del processore. I trasferimenti DMA risultanti nel caso in cui sorgente e destinazione siano collegati a bus I/O I/O I/O I/O 38

47 CAPITOLO 3. Panoramica sul DMA Processore DMA I/O I/O Memoria diversi, pur essendo forzatamente in modalità fetch-and-deposit, rubano al processore un solo ciclo di bus, a meno di modalità blocco o a richiesta che occupano il bus per un tempo maggiore; Bus di sistema Processore DMA Memoria Bus di I/O I/O I/O I/O I/O Figura 3.4: Configurazione a bus semicondiviso Configurazione a bus dedicato. In questa configurazione, sebbene esista un minimo overhead temporale di programmazione del controllore da parte del processore, dovendo passare per il bridge tra i due bus, il controller non disturba minimamente il processore, sempre che il processore, nel tempo in cui il controllore tiene occupato il suo bus, non ne abbia bisogno a sua volta. Un esempio di tale configurazione è l architettura descritta nel capitolo 4, che vede il processore collegato solo al bus PLB ed il controllore DMA collegato invece solo all OPB. Le opzioni per ogni caratteristica sono in mutua esclusione solo tra loro; sono quindi ammissibili tutte le possibili varianti ottenute combinando la scelta di una e una sola opzione per ogni caratteristica elencata. Si noti che un qualsiasi controllore DMA reale, anche i meno moderni, supportano diversi canali, ad ognuno dei quali corrisponde logicamente un controllore vero e proprio, nel senso appena descritto, che possono essere programmati in modo concorrente e che devono essere abilitati dal processore. La politica con la quale viene scelto l ordine di esecuzione delle sessioni programmate sui vari canali dipende invece dall implementazione. Una classificazione che la letteratura riporta in modo piuttosto discorde, e che non rientra nella mutua esclusione con le categorie sopra elencate, è la seguente: 39

48 CAPITOLO 3. Panoramica sul DMA DMA burst. Con questo termine viene indicato un generico trasferimento DMA che trasferisca più dati alla volta senza un handshake intermedio. Come si può intuire, questa definizione si adatta sia alla modalità blocco DMA Transfer (3) che a quella a richiesta, sopra descritte; la letteratura è discorde in merito. Molti controllori DMA reali, come quello implementato dalla Xilinx, adottano come burst una modalità a blocchi di 64 byte. La figura 3.5 riporta un Burst or block mode esempio di trasferimento burst con due sessioni in modalità a richiesta. 1 block (multiple chars) CPU DMA CPU DMA initialization interrupt initialization interrupt Figura 3.5: Esempio di trasferimento burst DMA cycle stealing. Si parla di cycle stealing quando il trasferimento è DMA Transfer (2) diviso in piccoli blocchi, e quindi il processore, così come tutti gli altri dispositivi master sul bus, non vengono interrotti per lunghi periodi di tempo dall operazione DMA. La divisione del trasferimento in piccole unità nuoce Cycle stealing mode alle prestazioni del DMA. 1 char 1 char 1 char CPU DMA DMA DMA CPU CPU CPU initialization interrupt Figura 3.6: Esempio di trasferimento cycle stealing 40

49 CAPITOLO 3. Panoramica sul DMA DMA trasparente: la trasparenza è riferita al processore, infatti il DMA trasparente si ha quando si fa in modo che il controllore DMA effettui trasferimenti quando il bus non è usato dal processore; questo evidentemente necessita di appositi meccanismi di sincronizzazione. Sebbene non ci sia rallentamento della CPU, l operazione DMA trasparente impiega molto tempo a completarsi. 41

50

51 Capitolo 4 Implementazione In questo capitolo verrà descritta la metodologia di implementazione del DMA in un sistema embedded creato con XPS. Verranno presentate anche le architetture realizzate che, come già anticipato, saranno basate una su un processore fisico IBM PowerPC405, l altra su un soft-processor MicroBlaze. Per cominciare verranno descritti nel dettaglio i dispositivi necessari per poter implementare il DMA, soprattutto l opb central dma che è di nuova introduzione in EDK 8.1i. Successivamente si spiegherà la gestione degli interrupt, che è di grande aiuto nel migliorare le prestazioni complessive del sistema, e dei drivers degli IP-Core. Infine, verranno descritte le architetture realizzate. 4.1 Gli IP-Core coinvolti Gli IP-Core che devono essere aggiunti per avvalersi di trasferimenti DMA nel sistema sono il controllore centralizzato DMA, nel caso si scelga la soluzione centralizzata, mentre un IP-Core dotato di un IPIF in cui sia incluso il motore DMA se si preferisce quella distribuita. Ovviamente sono ammissibili entrambi in un architettura, realizzando così una soluzione ibrida. Nel presente lavoro di tesi si affronta anche il trasferimento dati da e verso FIFO, quindi verrà descritto anche il modulo che, all interno dell IPIF, realizza tale struttura. 43

52 Capitolo 4. Implementazione del DMA Il controllore centralizzato DMA Il controllore centralizzato DMA è messo a disposizione in XPS 8.1i tramite un IP-Core chiamato opb central dma, che permette di effettuare trasferimenti DMA in modalità semplice tra IP-Cores connessi al bus OPB. Supporta trasferimenti di tipo burst, la modalità di trasferimento a serratura, e permette di trasferire dati in blocchi da uno, due (halfword) e quattro (word) bytes. Al momento, non c è purtroppo facoltà di scelta del bus a cui connettere il controllore centralizzato, poichè XPS 8.1i non mette a disposizione un controllore su PLB; abbiamo dunque scelto di realizzare il DMA solo su OPB al fine di poter operare un confronto di prestazioni più realistico tra la soluzione centralizzata e quella distribuita. Il controllore offre alcuni registri hardware, accessibili dal codice eseguibile principale, tra i quali: SA (che sta per Source Address), da : contiene l indirizzo da cui ha inizio la zona di memoria che contiene i dati da trasferire; DA (che sta per Destination Address), da : contiene l indirizzo di partenza della zona di memoria su cui scrivere i dati; LENGTH, da : contiene la dimensione, espressa in byte, dell insieme di dati da da trasferire. DMACR (o DMA Control Register, da ): da come risulta in figura 4.1, contiene alcuni sotto-registri: DMA Control Register (DMACR) SINC Figure 4: DMACR OPB Central DMA Controller DSIZE DINC Figura 4.1: DMA Control Register Table 6: DMA Control Register (DMACR) - Address offset 0x4 Bits Name Description Reset Value 0 SINC Source Increment 1 SINC (o Source Increment): contiene un valore booleano che indica Increment the source address by DSIZE for each data transfer on the bus. The source address can be set to not increment for use with keyhole address devices such as FIFOs. 0 Do not increment the source address (allowed only if DSIZE = 4) 1 Increment the source address 1 DINC Destination Increment 44 Increment the destination address by DSIZE for each data transfer on the bus. The destination address can be set to not increment for use with keyhole address devices such as FIFOs. 0 Do not increment the destination address (allowed only if DSIZE = 4) 1 Increment the destination address 2:27 Reserved 28:31 DSIZE DMA Transfer Data Size Sets the size of the data used in each data transfer on the bus Byte l attivazione o meno della modalità a incremento di indirizzo sul lato della sorgente dei dati: in altre parole, se SINC è settato a uno,

53 Capitolo 4. Implementazione del DMA allora dopo il trasferimento di ogni blocco, l indirizzo corrente della sorgente viene incrementato di una quantità pari a DSIZE. Si noti che la disattivazione di tale modalità è possibile solo se il trasferimento sta avvenendo tramite blocchi da 4 bytes. DINC (o Destination Increment): valgono per questo registro le stesse considerazioni fatte per il SINC, con l unica differenza che, evidentemente, qui l incremento viene attivato sull indirizzo corrente della destinazione dei dati. DSIZE, da 4 bit; contiene il numero di byte che compongono ogni blocco del trasferimento. Gli unici valori ammissibili, come già anticipato, sono solo 1, 2 e 4. DMASR (o DMA Status Register): contiene alcuni registri, disposti come da figura 4.2: DMABSY (DMA busy) contiene un valore booleano che indica se il dispositivo è occupato oppure no, DBE (DMA Bus Error) indica se è occorso un errore sul bus durante il trasferimento, DBT (DMA Bus Timeout) indica se il dispositivo è andato in timeout durante una operazione non ben sincronizzata sul bus. Si osserva che la tecnica di usare registri di stato è tipica del polling, anche se con una adeguata sincronizzazione con OPB Central DMA Controller gli interrupt si può leggere il valore dei registri di stato solo quando serve. DMA Control Register (DMACR) SINC Figure 4: DMACR DSIZE DINC Figura 4.2: DMA Status Register Table 6: DMA Control Register (DMACR) - Address offset 0x4 Bits Name Description Reset Value 0 SINC Source Increment 1 ISR (o Interrupt Status Register): gli unici bit validi sono gli ultimi due: il penultimo indica se è avvenuto un errore sul bus, mentre l ultimo se è Increment the source address by DSIZE for each data transfer on the bus. The source address can be set to not increment for use with keyhole address devices such as FIFOs. 0 Do not increment the source address (allowed only if DSIZE = 4) 1 Increment the source address 1 DINC Destination Increment Increment the destination address by DSIZE for each data transfer on the bus. The destination address can be set to not increment for use with keyhole address devices such as FIFOs. 0 Do not increment the destination 45 address (allowed only if DSIZE = 4) 1 Increment the destination address 2:27 Reserved 28:31 DSIZE DMA Transfer Data Size Sets the size of the data used in each data transfer on the bus Byte 0010 Halfword (two bytes) 0100 Word (four bytes) Other values of DSIZE are invalid avvenuto un timeout. La differenza con il registro DMASR è solo formale: mentre quello è un registro di stato, che quindi rivela eventuali stati di errore, questo è un registro di stato degli interrupt, come dice il nome stesso;

54 OPB Central DMA Controller Table 10: DMA Status Register (DMASR) (Continued)- Address offset 0x14 OPB Central DMA Controller Bits Name Description Reset Value Table 210: DMA DBT Status Register DMA (DMASR) Bus Timeout (Continued)- Address offset 0x14 0 Bits 2 Name DBT 0 No DMA Bus Timeout 1 DMA DMA Bus Bus Timeout Timeout Description Reset Value 0 3:31 Reserved 0 No DMA Bus Timeout 1 DMA Bus Timeout Capitolo Interrupt Status 4. Implementazione Register (ISR) del DMA 3:31 Reserved Interrupt Status Register (ISR) Figure 9: ISR Figura 4.3: Interrupt Status Register Figure 9: ISR Table 11: Interrupt Status Register (ISR) - Address offset 0x2C 10 DS472 December 1, 2005 Product Specification DE DE 30 DD 31 Bits Name Description Reset Value IER (o Interrupt Enable Register): valido solo sugli ultimi 2 bit, deve es- confrontato DE Name DMA conerror l ISR: se il bit Description i-esimo dell IER è a 1, allora Reset 0se Value il bit Table 0:29 11: Interrupt Reserved Status Register (ISR) - Address offset 0x2C Bits 30sere 0:29 Reserved 0 DMA error has not occurred i-esimo dell ISR1 DMA è a error 1 has sioccurred è anche alzato segnale di interrupt dalla porta 30 DE DMA Error 0 31DMADDInterrupt DMA 0 dell opb DMA Done error has central not occurred dma. Se l ISR ha il bit i-esimo settato 0 ma 01 DMA operation error has occurred is not done 31 DD 1 DMA DMA Done operation is done 0 0 DMA operation is not done Interrupt Enable Register (IER) 1 DMA operation is done l IER ha quel bit a 0, allora l interrupt è disabilitato, il segnale corrispondente viene inibito e quindi l unico modo per accorgersi di tale richiesta di interrupt sarebbe quella di fare polling sull ISR. Interrupt Enable Register (IER) Figure 10: IER Figure 10: IER Table 12: Interrupt Enable Register (IER) - Address offset 0x30 DEIE DEIE 30DDIE 31 Bits Name Description Reset Value Table 0:29 12: Interrupt Reserved Enable Register (IER) - Address offset 0x30 Bits Name Description Reset Value 0:29 Reserved Figura 4.4: Interrupt Enable Register 10 DS472 December 1, 2005 Product Specification DD DDIE Ecco come i registri appena descritti vengono coinvolti in una operazione DMA, schematizzata in figura 4.5: L operazione comincia quando il registro LENG- TH viene scritto; ciò azzera i registri di errore del controllore e setta ad uno il registro di busy. Si entra dunque in un ciclo in cui, ad ogni iterazione, si copia nella locazione di memoria DA il contenuto della locazione di memoria indicata dal registro SA; il trasferimento avviene un blocco per ciclo, la cui grandezza è letta dal registro DSIZE. Ad ogni iterazione vengono incrementati sia l indirizzo di sorgente che quello di destinazione, operando quindi una copia speculare delle due zone di memoria, a meno che SINC e/o DINC siano posti a 0. In tal caso si avrebbe una modalità a serratura. Nella figura, le parentesi angolari racchiudono un evento, che fa scattare la transizione dell automa; il resto è una sintassi pseudo-c. 46

55 Capitolo 4. Implementazione del DMA IDLE DMASR.DMABSY = 0; DMASR.DMABSY = 1; DMASR.DBE = 0; DMASR.DBT = 1; LENGTH == 0 BUSY *SA = *DA; <bus error> <bus timeout> If (<bus error>) DMASR.DBE = 1; else DMASR.DBT = 1; If (LENGTH > 3) adj = DSIZE; else adj = LENGTH; LENGTH -= adj; If (DMACR.SINC) SA+=adj; If (DMACR.DINC) DA+=adj; Figura 4.5: Automa a stati finiti di un operazione DMA semplice FIFO Una FIFO è una struttura dati il cui nome è dovuto all espressione inglese First In First Out; essa consiste in uno spazio di memorizzazione accessibile non direttamente, ma tramite delle particolari istruzioni, che per semplicità possiamo chiamare aggiungi() e togli(), il cui significato è intuitivo, che gestiscono il suo contenuto. L ordine con cui gli elementi vengono rimossi dalla FIFO, tramite invocazioni di togli(), è lo stesso con il quale erano stati preventivamente inseriti 47

56 Capitolo 4. Implementazione del DMA atraverso la aggiungi(). Le informazioni di stato di una FIFO sono lo stato di pieno e vuoto (valori booleani) ed il numero di elementi che essa contiene (valore intero non negativo e non superiore alla dimensione della FIFO). È possibile aggiungere elementi solo a FIFO non piene, e toglierne a FIFO non vuote. L IPIF mette a disposizione un modulo VHDL, in essa integrato, che realizza una struttura dati ad accesso FIFO, che a sua volta si appoggia su un modulo di memoria BRAM. Questo componente dunque incapsula una BRAM con la logica necessaria a realizzare una FIFO. In realtà, il componente che l IPIF mette a disposizione è una Packet FIFO (nel seguito abbreviata in PFIFO), che quindi offre funzionalità rivolte alla comunicazione a pacchetti, tipica per esempio degli IP-Core di rete come un PHY Ethernet; questo non è il nostro caso, in quanto il DMA semplice, che noi qui trattiamo, vede il flusso di dati come unico, mentre è il DMA Scatter Gather ad avere il supporto ai pacchetti. In particolare, il volume di dati trasferito in modalità DMA semplice è gestito dalla PFIFO come un pacchetto unico. In qualità di servizio offerto dall interfaccia standard tra IP-Core e bus, la PFI- FO non è pensata per costituire un IP-Core a sè stante, ma per offrire un buffer di dati all user logic dell IP-Core, ossia la logica personalizzata dell IP-Core complessivo. Questo è ben evidente in Figura 4.6: il buffer disaccoppia il trasferimento di dati da e verso l user logic, il che è importante soprattutto quando i dati vengono spostati con grande velocità, ed il DMA è proprio uno di questi casi. La PFIFO è quindi accessibile sia dal VHDL del componente che dall esterno della user logic, ossia sia dagli IP-Core in grado di raggiungere il bus a cui è connesso il componente che comprende la PFIFO, sia dal software principale. Da noi la PFIFO è stata però usata solo da software. Una PFIFO è in realtà composta da due FIFO, i cui nomi sono ispirati all unica azione consentita dall esterno dell IP-Core che le include. Una è la FIFO di scrittura, il cui nome verrà abbreviato con il termine WrFIFO, mentre l altra è quella di lettura (o RdFIFO), che quindi permette, dall esterno, unicamente operazioni di lettura. Le due FIFO sono in realtà due interfacce della stessa porzione di memoria: la RdFIFO è l interfaccia che gestisce il flusso di dati uscente dalla 48

57 Peripheral Bus IP Interface Packet FIFO (v1.23e) R The RdPFIFO is used to buffer data from the IP that needs to be sent to the Host Bus. Both Packet FIFO designs utilize a single synchronous clock domain for the input and output sides of the modules. Capitolo 4. Implementazione del DMA IP Block Receive Data Status to DMA Read Packet FIFO IPIF Local Bus DMA & S/G Master Attachment Slave Attachment OPB Bus Status to DMA Transmit Data Write Packet FIFO Address Decode OPB IPIF (simplified) Figura Figure 4.6: Funzionalità 1: Packet FIFO di DMA Usage e di with Packet Arbitrary FIFO dell IPIF IP. user logic, mentre la WrFIFO gestisce quello nel senso opposto. Risulta chiaro This simplifies the design and reduces LUT count as compared to an asynchronous dual clock implementation. quindi che: FIFO ew Letture della PFIFO dall esterno della user logic devono essere eseguite sulla RdFIFO; Features Two independent Letture della functions PFIFOare dalla provided: user logic the Read devono PFIFO essere (for eseguite host bus receive sulla WrFIFO; data buffering) and the Write PFIFO (for host bus transmit data buffering). User controlled Scritture features della PFIFO that include dall esterno parameters della for: user logic vanno effettuate sulla - Supports Spartan-II, Spartan-IIE, Spartan-3, Virtex, Virtex-II, Virtex-II WrFIFO; Pro, and Virtex-E - Setting FIFO data width. Scritture della PFIFO dalla user logic vanno effettuate sulla RdFIFO. - Setting FIFO data depth (words). La - ricezione Inclusion/Omission e la trasmissione of Packet dei mode dati, support. per entrambe le FIFO, sono sincronizzate sullo stesso dominio di clock, il che semplifica il componente e permette un - Setting IPIF Data Bus width. - Inclusion/Omission of Vacancy calculation for write port. risparmio - Selecting di LUTs Target rispetto FPGA family all implementazione type. asincrona. - L implementazione Inclusion/Omission of della Module PFIFO Identification da parteregister. di Xilinx offre anche la funzionalità di "FIFO marking, like" status a cuioutputs è associato of AlmostFull, il registrofull, di Mark AlmostEmpty, (uno perand la WrFIFO Empty in addition ed uno per to true la Occupancy and Vacancy outputs. Host bus interface provides applicable status as a RdFIFO). read accessible EssoStatus viene Register. aggiornato ogni volta che viene effettuata l omonima operazione, Write and eread contiene Ports ilsynchronized riferimento ad to una a common certa cella clock all interno source (synchronous della PFIFO, operation). che si 49 DS415 August 20, Product Specification

58 Capitolo 4. Implementazione del DMA vuole appunto marcare. Quella, così come le successive, viene protetta da lettura e scrittura, ed i calcoli di vacancy e occupation vengono eseguiti nuovamente tenendo conto del nuovo mark. A questo punto si hanno tre possibilità: ripetere l operazione di mark su una nuova cella, cambiando quindi il contenuto del registro di mark; togliere il mark tramite l operazione Release, oppure eseguire una sorta di Undo, tramite l operazione Restore, che riporta la PFIFO allo stato immediatamente precedente all ultima operazione di Mark. La PFIFO senza Mark si comporta come una normale PFIFO sincrona. Per quanto riguarda il calcolo dello spazio occupato e di quello libero, si ricorda per prima cosa come funziona tale conteggio per le normali strutture dati FIFO, facendo riferimento al puntatore alla posizione corrente in lettura nella FIFO con il termine abbreviato RdPtr, mentre il corrispondente puntatore di scrittura con WrPtr. In tutte le FIFO, l avanzamento del RdPtr è vincolato in ogni istante dalla posizione del WrPtr, nel senso che non lo può mai superare; è valido anche il viceversa, tranne quando la FIFO è vuota. Il numero di letture valide (che fanno cioè avanzare di una posizione di RdPtr) che, in un dato istante, sono ammissibili consecutivamente senza effettuare scritture intermedie, viene chiamato Occupancy; il numero di scritture valide (cioè tali da far avanzare di una posizione il WrPtr) che, in un dato istante, sono ammissibili consecutivamente senza effettuare letture intermedie, viene detto Vacancy. Quando si introduce il Mark, si aggiunge complessità al calcolo in quanto nè il RdPtr nè il WrPtr possono sorpassare il Mark; le definizioni di occupancy e vacancy rimangono valide, il che fa dedurre che la dimensione della FIFO non è più diviso in due parti (occupancy + vacancy = size), ma in tre, in quanto, a seconda della posizione in cui si trova il mark rispetto a RdPtr e WrPtr, si può avere: Vacancy nomark = Vacancy Mark + S pazioprotetto se il Mark non è situato nello spazio successivo al RdPtr e precedente al WrPtr; Occupancy nomark = Occupancy Mark +S pazioprotetto se il Mark si trova tra RdPtr e WrPtr. Oltre ai valori di vacancy ed occupancy, entrambe le FIFO mettono a disposizione altri valori, costantemente aggiornati e memorizzati su registri: 50

59 Capitolo 4. Implementazione del DMA AlmostEmpty, a 1 se e solo se la FIFO contiene un solo elemento; Empty, a 1 se la FIFO è vuota; AlmostFull, a 1 se e solo se la FIFO è in uno stato tale per cui, aggiungendo un altro elemento, sarebbe completamente piena; Full, a 1 se la FIFO è piena. La RdFIFO offre la visibilità dei registri Empty, AlmostEmpty e Occupancy all interfaccia con il bus, mentre permette di accedere agli altri tre (Full, AlmostFull e Vacancy) solo alla user logic dell IP-Core locale; l opposto vale per la WrFIFO. Accesso 16 words E/F AE/AF Dead lock Scaling Occupancy/Vacancy Count SR (1 word) Major Version Minor Version Revision Letter Block ID Block Type RST/MIR (1 word) Figura 4.7: Schema di una FIFO Xilinx Sia la WrFIFO che la RdFIFO hanno una struttura come quella rappresentata in figura 4.7, hanno cioè un registro di sola lettura di 4 parole che contiene le informazioni di Identificazione del Modulo (MIR significa infatti Module Identification Register), al cui indirizzo, se viene effettuata una scrittura del valore 0xA, si provoca il reset della FIFO. Inoltre, hanno un registro di stato ampio una parola, memorizzato nella parola adiacente al MIR, che contiene i sottoregistri (con riferimento alla figura): E/F, cioè il bit di Empty (se è una RdFIFO) o di Full (se è una WrFIFO); 51

60 Capitolo 4. Implementazione del DMA AE/AF, cioè il bit di AlmostEmpty (se è una RdFIFO) o di AlmostFull (se è una WrFIFO); DeadLock, cioè il bit che appunto indica se è avvenuto il dead lock; tale condizione si verifica quando il pacchetto che si sta tentando di scrivere sulla PFIFO ha una dimensione che supera le sue dimensioni totali. In questo caso, dunque, sia il bit di Full che di Empty vengono settati a 1, e solo con un reset di può far tornare la FIFO in uno stato funzionale, cioè nel quale sia possibile scrivere e leggere dati. Scaling, che indica se il valore della vacancy e/o della occupancy, per essere comunicato, ha bisogno di un numero di bit maggiore di quelli che formano il bus al quale la FIFO stessa (quindi, l IPIF che la contiene) è connessa. In tal caso, il bit di scaling è settato a 1. L esatta formula per la conversione di tali valori, in un numero minore di bit tale da poter quindi essere trasmessi sul bus, la si può trovare nel documento [DS415]; Valore di Occupancy (se è una RdFIFO) o di Vacancy (se è una WrFIFO). Adiacente al registro di stato si colloca lo spazio di indirizzamento di accesso alla FIFO. È ovvio che non è un accesso diretto, in quando è la logica della FIFO a gestire gli accessi, ma la Xilinx ha preferito non dotare le sue FIFO di un unico indirizzo al quale essere costretti a mandare tutte le scritture e le letture a tali moduli. Questo perchè limitare il registro di scrittura (o lettura) ad un singolo indirizzo impedirebbe l utilizzo del trasferimento di tipo burst che su OPB è disponibile solo attivando il segnale seqaddr. Affinché si possa trasferire su FIFO con la massima velocità possibile, i registri di lettura e scrittura hanno dimensione almeno pari a quella del più lungo trasferimento burst che il bus possa permettere. Rimane assodato il fatto che, in ogni caso, un dato precede l altro (nell ordinamento First-In First-Out) se temporalmente è stato scritto prima; non fa quindi differenza quale indirizzo, nel range di estensione dello spazio di indirizzamento di accesso alla FIFO, viene scelto per la scrittura del dato. Infine, il valore di 16 parole indicato in figura non viene esplicitato nella documentazione relativa, ma è frutto di una semplice prova effettuata su un istanza di FIFO. Non possiamo dire 52

61 Capitolo 4. Implementazione del DMA quindi se tale valore è fisso o se dipende dall architettura nella quale la PFIFO è inserita, per esempio a causa di una diversa dimensione del bus. D altro canto, tale valore conferma il fatto che una transazione DMA burst, attraverso i dispositivi DMA correntemente offerti dalla Xilinx, sia costituita da 64 byte, in quanto le 16 parole sono formate da 4 byte l una Il motore DMA Distribuito incluso nell IPIF Per avvalersi del meccanismo del DMA distribuito, un IP-Core deve avere l IPIF come interfaccia con il bus, ed avere integrato in essa il modulo che la Xilinx mette a disposizione per tale scopo, ossia quello genericamente chiamato DMA. Come si può vedere dalla figura 4.8, tale modulo non solo comprende il DMA engine, ossia quello che attivamente opera un trasferimento DMA, ma anche il modulo di handshake, che gestisce gli handshake di una richiesta DMA proveniente dall esterno, comportandosi in tal modo da slave. La documentazione Xilinx è estremamente povera su questo argomento, il che non avrebbe nemmeno fatto sospettare che esistesse un handhake DMA. I nostri test sulla FIFO però ci hanno indotto a pensare in questo modo, ed in [2] abbiamo trovato conferma di questo. Si noti che tale handshake necessita del modulo apposito solo quando una FIFO è coinvolta nel trasferimento, in quanto il traffico relativo all handshake, se non gestito, verrebbe incluso nella FIFO stessa. Se invece i dati vengono scambiati per esempio tra registri, il traffico relativo all handshake non rimane memorizzato, in quanto viene sovrascritto dalla sessione DMA vera e propria che ne consegue. Questa differenza è dovuta, evidentemente, alla diversa logica che governa la memorizzazione dei dati sui registri piuttosto che su strutture dati di tipo FIFO. Una volta inserito il modulo DMA nell IPIF, l IP-Core viene dotato di alcuni registri di stato che permettono di configurare il modulo stesso e di effettuare trasferimenti DMA semplice e Scatter Gather. Noi ci siamo trattato solo il primo tipo. In tabella 4.1 vengono elencati i registri che servono per l implementazione del DMA semplice distribuito, per ogni canale. Sono gli stessi che si usano per il DMA centralizzato, per cui si rimanda alla sezione per una descrizione 53

62 Capitolo 4. Implementazione del DMA Nome Significato Indirizzo Permessi RST Channel Reset chan base + 0x0 Write only MIR Module Identification Register chan base + 0x0 Read only DMACR DMA Control Register chan base + 0x4 Read/Write SA Source Address chan base + 0x8 Read/Write DA Destination Address chan base + 0xC Read/Write LENGTH DMA Length. chan base + 0x10 Read/Write DMASR DMA Status Register chan base + 0x14 Read ISR Interrupt Status Register chan base + 0x2C Read/TOW IER Interrupt Enable Register chan base + 0x30 Read/Write Tabella 4.1: Registri per ogni canale DMA dell IPIF più dettagliata di ognuno. Ogni canale dispone di uno spazio di memoria dedicato nell IP-Core, il cui indirizzo di base è indicato in tabella con chan base, in cui sono memorizzati i registri ad esso relativi. Con TOW, in tabella, si intende un particolare permesso di scrittura che lascia immutati i bit del registro in cui si cerca di scrivere uno 0, mentre fa commutare i bit sui quali si sta cercando di scrivere un 1. La sigla significa infatti Toggle On Write. Il motore DMA distribuito dell IPIF, al momento, è costituito da due canali indipendenti di DMA, contro l unico canale messo a disposizione dal controllore centralizzato opb central dma. Si osserva che questo non influisce sulle prestazioni, in quanto i due canali condividono il bus, quindi non possono essere considerati a tutti gli effetti concorrenti. L unico beneficio è che la programmazione dei due canali può avvenire in modo indipendente. Si osserva inoltre che il campo DSIZE del registro DMACR, nel caso distribuito, non è accessibile; il motore integrato nell IPIF, infatti, permette solo trasferimenti in blocchi di 4 byte. 4.2 Drivers Il driver di un dispositivo hardware è un insieme di procedure software che permette all utente del sistema di pilotarlo. Esso si può vedere come diviso in due 54

63 Capitolo 4. Implementazione del DMA BUS user_logic IPIF Interfaccia Master I/F Slave SRAM I/F Slave del registro di controllo I/F Slave del modulo DMA handshake Motore DMA I/F FIFO Slave Figura 4.8: Struttura del modulo DMA integrato nell IPIF strati: uno strato software ad alto livello in grado di supportare applicazioni utente capaci di accedere alla funzionalità di I/O in modo indipendente dall hardware; uno strato software a più basso livello, il Device Driver stesso, progettato per incapsulare tutte le operazioni strettamente correlate all hardware, ed in grado di comunicare con lo strato superiore tramite un interfaccia standard. La Xilinx, per implementare tale divisione in strati, ha scelto di creare tre livelli di astrazione, schematizzati in figura 4.9. L architettura dei device driver serve a garantire la portabilità su diversi processori, sistemi operativi e tool di sviluppo. L architettura stratificata fornisce integrazione con: Real Time Operating System, RTOS (livello 2); Device driver di alto livello portabili su SO e processori (livello 1); Device driver di basso livello per semplici casi d uso (livello 0). 55

64 Capitolo 4. Implementazione del DMA Applicazione Utente Adattatore per RTOS (lv.2) Device Driver Driver di alto livello (lv.1) IP-Core (Hardware) Driver di basso livello (lv.2) Figura 4.9: Ruolo e struttura di un device driver Nel seguito verranno descritti brevemente i 3 livelli, per ulteriori approfondimenti si rimanda al documento [21]: Livello 0: Driver di basso livello I device driver di basso livello presenti in questo strato sono implementati come macro e funzioni, la cui portabilità è garantita dal linguaggio in cui sono scritte, cioè l ANSI C. Secondo una specifica convenzione utilizzata da Xilinx nelle librerie proprietarie, le funzioni sviluppate per i driver di livello 0 si trovano nel file nomeip l.c, dove con nomeip si indica il nome di un generico IP-Core. I relativi header si trovano invece nel file nomeip l.h, dove il suffisso l sta proprio ad indicare che il driver è di basso livello. Ovviamente le funzioni messe a disposizione dai Device Driver devono essere importate, come delle vere e proprie librerie, per poter essere utilizzate all interno dell applicazione. Livello 1: Driver di alto livello I device driver di alto livello presenti in questo strato sono implementati come macro e funzioni, anch esse in ANSI C, e sono sintetizzati per permettere allo sviluppatore di utilizzare tutte le caratteristiche della board a disposizione. In particolare questi driver sono indipendenti dal SO e dal processore, il che li rende altamente portabili. Le funzioni implementate per il driver di livello 1 si trovano nel file nomeip.c, i rispettivi prototipi nel file nomeip.h. 56

65 Capitolo 4. Implementazione del DMA Livello 2: Adattatore per RTOS Questo livello è caratterizzato da adattatori per i device driver; tali dispositivi permettono di convertire un interfaccia driver di livello 1 in un interfaccia che soddisfi le richieste degli schemi di un device driver per RTOS. Per ogni RTOS è necessario un unico adattatore: ciò comporta la perdita di portabilità dei driver di questo livello. Le funzioni implementate per il driver di livello 2 si trovano nel file nomeip adapter.c, i rispettivi prototipi nel file nomeip adapter.h. 4.3 La gestione degli interrupt Gli interrupt, come già affermato nel capitolo 2, sono un ottimo mezzo per scambiare informazioni di stato tra dispositivi in concomitanza di eventi. È quindi consigliabile avvalersi di questa tecnica, se si vogliono migliorare le prestazioni del sistema, e visto che questo è proprio tra gli obiettivi del presente lavoro di tesi, proponiamo una trattazione approfondita del controllore di interrupt, con interfaccia su OPB, offerto da XPS, nonchè una spiegazione esaustiva di come entrambi i processori considerati reagiscono alle interruzioni OPB Interrupt Controller L OPB Interrupt Controller (nel seguito abbreviato con la dicitura OPB INTC) è un componente fornito da Xilinx per il controllo degli interrupt provenienti da un numero di periferiche pari al massimo alla larghezza del bus a cui è connesso, che, come dice il nome, è l OPB; la Xilinx mette a disposizione in XPS anche un DCR Interrupt Controller, ma il suo utilizzo in questo lavoro di tesi avrebbe comportato l inserimento nelle architetture di tale bus solo per quel componente; inoltre, tale operazione avrebbe portato ad alcune complicazioni relative alla sincronizzazione dei dispositivi sul bus DCR con il resto del sistema. Si consiglia la lettura del documento [10] se si cercano maggiori informazioni al riguardo. L OPB INTC supporta alcune interessanti funzionalità quali gestione della priorità delle richieste degli interrupt e la compatibilità con implementazioni dell OPB a 32 ma anche 57

66 Figure Top x-ref 5 OPB Interrupt Controller (v1.00c) Table 1: IntC Registers and Base Address Offsets Capitolo 4. Implementazione del DMA Register Name Abbreviation OPB Offset Clear Interrupt Enable Bits CIE 20 (14h) Interrupt Vector Register IVR 24 (18h) a 16 e 8 Master bit. Enable Inoltre, Register con l OPB INTC è possibilemer rilevare segnali 28 (1Ch) di interrupt sul Interrupt Status Register (ISR) fronte di salita e di discesa del clock del sistema, nonchè sui livelli alto e basso. When read, the contents of this register indicate the presence or absence of an active interrupt signal Come regardless il controllore of the state of the DMA, interrupt anche enable bits. il Each controllore bit in this register degli that interrupt is set to a 1 indicates va configurato an active interrupt signal on the corresponding interrupt input. Bits that are 0 are not active. tramite il settaggio o la lettura di registri, che per la precisione sono otto, sei dei The ISR register is writable by software until the Hardware Interrupt Enable (HIE) bit in the MER has been set. Once that bit has been set, software can no longer write to the ISR. Given these restrictions, when this register is written to, any data bits that are set to 1 will activate the corresponding interrupt, just as if a hardware input became active. Data bits that are zero have no effect. quali (i primi sei dell elenco sotto riportato) hanno una struttura del tipo riportato in figura Osservandola, si capisce che ognuno di quei sei registri è composto This allows software to generate interrupts for test purposes until the HIE bit has been set. Once HIE are fewer interrupt inputs than the width of the data bus, writing a 1 to a non-existing interrupt input da un numero has been set di(enabling bit uguale the hardware allainterrupt larghezza inputs), del then bus writing sul to this quale register l OPB does nothing. INTC If there è connesso, e la does numerazione nothing and reading degli it will interrupt return zero. (a The numero Interrupt Status piùregister basso(isr) corrisponde shown in the priorità più following diagram and the bits are described in Table 2. alta) è decrescente da sinistra verso destra. INTn INTn-2 INTn-4 INT w-2 w-1 INTn-1 INTn-3 INTn-5 - INT1 Interrupt_status_register.eps Figure 5: Interrupt Status Register (ISR) Figura 4.10: Struttura dei registri ISR, IPR, IER, IAR, SIE e CIE Table 2: Interrupt Status Register Bits Name Description Reset Value Ecco la descrizione degli otto registri accessibili via software, con le dovute limitazioni, messi a disposizione dall OPB INTC. La numerazione degli interrupt 0 to (w 1) INTn INT0 (n w 1) where w is DB width segue quella riportata in figura Interrupt Input n Interrupt Input 0 0 Read Not active; Write No action 1 Read Active; Write SW interrupt Interrupt Pending Register (IPR) This is an optional register in the simple IntC and can be parameterized out of an implementation. Reading the contents of this register indicates the presence or absence of an active interrupt signal that is also enabled. 1. ISR, o Interrupt Status Register, situato ad un offset di 0x0 dal Base Address. È un registro di stato che indica se l i-esimo interrupt è attivato. È Each bit in this register is the logical AND of the bits in the ISR and the IER. If there are fewer interrupt inputs than the width of the data bus, reading a non-existing interrupt input will return zero. The sempre accessibile in lettura via software, e quando il bit HIE del MER è a 0 è addirittura accessibile in scrittura (per generare interrupt via software, magari a scopo di testing); 10 DS473 December 1, 2005 Product Specification 2. IER, o Interrupt Enable Register, situato ad un offset di 0x8 dal Base Address. Se l i-esimo interrupt ha il corrispondente bit sull IER settato a 1, significa che è abilitato (non per forza attivo però); se invece è 0 significa che l interrupt è inibito. Si noti che per fare clearing di un interrupt non si deve settare a 0 l IER, come per esempio si deve fare con il registro IAR; infatti, il segnale di interrupt i-esimo è messo semplicemente in AND logico con il corrispettivo bit dell IER, il che implica che se l interrupt i-esimo si era attivato mentre il bit i-esimo dell IER era a 0, e successivamente questo 0 58

67 Capitolo 4. Implementazione del DMA torna attivo, in quell istante l interrupt, che prima era inibito, torna visibile (nell ipotesi verosimile che nel frattempo non si avesse effettuato il suo clearing) ed è quindi come se la richiesta di interruzione fosse stata generata in quel momento; 3. IPR, o Interrupt Pending Register, situato ad un offset di 0x4 dal Base Address. È un registro opzionale, contiene essenzialmente l AND logico, bit a bit, dei registri IER e ISR. Assume importanza in quanto, se l interrupt i-esimo ha il corrispondente bit a 1, significa che è esso attivo ed abilitato: non si cade quindi nell equivoco che si avrebbe per esempio leggendo il solo ISR, che segnala gli interrupt attivi ma magari non abilitati, che quindi non risultano avere una routine di interrupt definita che li gestisca, dando luogo a comportamenti eccezionali del sistema; 4. IAR, o Interrupt Acknowledge Register, situato ad un offset di 0xC dal Base Address. È un registro accessibile in sola scrittura, ed ha un effetto utile solo se si scrive un 1; l interrupt i-esimo, ricevuta la scrittura di quell 1, subisce il clearing, cioè viene cancellato dalla lista degli interrupt ancora in attesa di essere serviti dal processore; in pratica, la conseguenza della scrittura di un 1 sull i-esimo interrupt è l azzeramento dei rispettivi bit sui registri ISR e IPR (sempre che l interrupt i-esimo sia abilitato), mentre la scrittura di uno 0 non produce alcun effetto; 5. SIE, o Set Interrupt Enable Bits, situato ad un offset di 0x10 dal Base Address. È un registro di supporto che permette una più efficiente scrittura del registro IER. Un bit posto a 1 in questo registro, infatti, comporta la scrittura dello stesso valore nella posizione corrispondente del registro IER, garantendo il risparmio di una lettura del registro IER; 6. CIE, o Clear Interrupt Enable Bits, situato ad un offset di 0x14 dal Base Address. Valgono le stesse considerazioni fatte per il registro SIE, ma stavolta l operazione ottimizzata è l azzeramento dell i-esimo interrupt, a fronte della scrittura di un 1 sullo stesso bit del CIE; 59

68 Figure Top x-ref 11 Figure Top x-ref 12 Capitolo 4. Implementazione del DMA OPB Interrupt Controller (v1.00c) Interrupt Vector Register (IVR) 7. IVR, o Interrupt Vector Register, situato ad un offset di 0x18 dal Base Address. The IVR Éis a un read-only registro register opzionale and contains the che ordinal contiene value of the il highest valore priority, ordinale enabled, dell interrupt active interrupt input. INT0 (always the LSB) is the highest priority interrupt input and each successive che input attualmente to the left has a correspondingly è abilitato, lower attivo interrupt e di priority. maggior priorità, cioè il primo che If no interrupt inputs are active then the IVR will contain all ones. The is optional in the simple IntC deve venir servito. Se nessun interrupt è attivo l IVR contiene tutti 1, il che and can be parameterized out of the implementation. The Interrupt Vector Register (IVR) is shown in the following diagram and described in Table 8. costituisce evidentemente un valore privo di significato; 0 w-1 Interrupt Vector Number interrupt_vector_register.eps Figure 11: Interrupt Vector Register (IVR) Figura 4.11: Struttura del registro IVR Table 8: Interrupt Vector Register Bits Name Description Reset Value 0 to (w 1) Interrupt Vector Number Master Enable Register (MER) Ordinal of highest priority, enabled, active interrupt input all ones 8. MER, o Master Enable Register, situato ad un offset di 0x1C dal Base Address. È un registro accessibile sia in lettura che in scrittura, del quale solo This is a two bit, read / write register. The two bits are mapped to the two least significant bits of the location. gli ultimi due bit sono significativi; eventuali scritture sugli altri bit non sortiscono effetti, mentre le letture su di essi restituiscono 0. Il penultimo bit è The least significant bit contains the Master Enable (ME) bit and the next bit contains the Hardware Interrupt Enable (HIE) bit. il ME, o Master Enable, in AND logico con la porta IRQ dell OPB INTC da collegarsi alla porta Interrupt del processore, dalla quale si pone in ascolto Writing a 1 to the ME bit enables the IRQ output signal. Writing a 0 to the ME bit disables the IRQ output, effectively masking all interrupt inputs. di richieste di interruzione. In pratica, abilita o disabilita la totalità degli The HIE bit is a write once bit. At reset this bit is reset to zero, allowing software to write to the ISR to generate interrupts for testing purposes, and disabling any hardware interrupt inputs. interrupt gestiti dal controller. L ultimo bit è invece il già citato HIE, scrivi- Writing a one to this bit enables the hardware interrupt inputs and disables software generated inputs. bile Writing unaa one volta also disables sola con any further un 1changes e azzerabile to this bit until solo the resettando device has been l intero reset. OPB INTC; come già anticipato, la scrittura di un 1 disabilita la generazione di interrupt Writing ones or zeros to any other bit location does nothing. When read, this register will reflect the state of the ME and HIE bits. OPB Interrupt Controller (v1.00c) All other bits will read as zeros. The Master Enable Register (MER) is shown in the following diagram and is described in Table 9. via software. Si noti che invece, con HIE a 0, sono gli interrupt hardware ad essere inibiti, a favore appunto di quelli prodotti tramite software. HIE ME w-2 w-1 Reserved master_enable_register.eps 14 DS473 December 1, 2005 Figure 12: Master Enable Register (MER) Product Specification Figura 4.12: Struttura del registro MER Table 9: Master Enable Register Bits Name Description Reset Value L OPB INTC non ha una logica particolarmente complicata: ha W porte in entrata 0 to (w 3) Unused Not used 0 (W, come già detto, corrisponde alla larghezza del bus a cui è connesso il control- Hardware Interrupt Enable 0 Read SW interrupts enabled ler stesso) (w ed 2) un uscita costituita HIE dall OR Write no effect logico dei suoi W ingressi. 0 È evidente 1 Read HW interrupts enabled Write Enable HW interrupts (w 1) ME Programming the IntC Master IRQ Enable 0 IRQ disabled all interrupts disabled 1 IRQ enabled all interrupts enabled This section provides an overview of software initialization and communication with an IntC. Terminology 60 The number of interrupt inputs that an IntC has is set by the C_NUM_INTR_INPUTS generic described in Table 12. The first input is always Int0 and is mapped to the LSB of the registers (except IVR and MER). 0

69 Capitolo 4. Implementazione del DMA quindi che un interrupt, recepito dal processore, potrebbe essere stato prodotto da più di una sorgente abilitata in tal senso. La risoluzione dell autore avviene, ad esempio, leggendo il registro IVR (o anche IPR), dal quale risulta qual è l IP-Core che ha maggior priorità nella coda di servizio, nell ipotesi che abbia una richiesta pendente. Successivamente, un apposito ack dal processore al controllore indica a quest ultimo che tale richiesta è stata gestita, e così via. I drivers software di più basso livello del controllore di interrupt su OPB comprendono le seguenti funzioni, XIntc DeviceInterruptHandler(void) Questa è la routine di interrupt predefinita dell OPB INTC, che si occupa di risolvere la sorgente dell interrupt che è stato ricevuto; presuppone che sia stata preventivamente inizializzata la tabella dei vettori di interrupt. Questa funzione è definita nel file xintc l.c; XIntc mmasterenable(interrupt Controller Base Address) Questa macro, definita nel file Xintc l.h, abilita tutti gli interrupt presenti nel Master Enable Register dell interrupt controller; è necessario invocarla perchè, dopo l inizializzazione del dispositivo (o dopo il suo reset), nessun interrupt è attivo; XIntc menableintr (BaseAddress, EnableMask) Questa macro, definita nel file Xintc l.h, permette di decidere quale interrupt attivare, specificando una maschera i cui bit hanno lo stesso ordine dei bit memorizzati nei registri ISR e IER (cioè, l LSB corrisponde all interrupt di massima priorità); XIntc SetIntrSvcOption(Xuint32 BaseAddress, int Option) Specificando il Base Address dell OPB INTC come primo parametro, questa funzione accetta come secondo parametro solo una delle seguenti costanti: XIN SVC SGL ISR OPTION, che imposta il controller in modo che, ad ogni interruzione ricevuta, venga invocata solo la routine ad esso associata; XIN SVC ALL ISRS OPTION, che imposta il controller in modo che, 61

70 Capitolo 4. Implementazione del DMA ad ogni interruzione ricevuta, vengano invocate tutte le IR degli interrupt che al momento si trovano in stato di pending. XIntc RegisterHandler(Xuint32 BA, int Id, XInterruptHandler hdlr, void *CBR) I quattro parametri che questa funzione accetta sono: 1. BA: il Base Address dell OPB INTC; 2. Id: L interrupt ID, cioè l identificatore numerico, della entry nella tabella del vettore di interrupt, relativo all interrupt a cui si sta associando la IR; 3. hdlr: La IR associata all Id passato come secondo parametro; 4. *CBR: l argomento da passare al Handler come parametro La ricezione degli interrupt da parte del MicroBlaze Il soft-processor MicroBlaze fornito da Xilinx è dotato di un unico ingresso di interrupt, denominato esattamente Interrupt. Il processore risponde alle segnalazioni di interruzione soltanto se il bit Interrupt Enable (IE) nel Machine Status Register (MSR) risulta abilitato. Per la scrittura di tale bit, XPS mette a disposizione alcune funzioni che fanno parte del Board Support Package (BSP), un insieme di moduli software di bassissimo livello che appunto sono pensati per accedere a servizi direttamente offerti dal processore. Suddette funzioni sono: void microblaze enable interrupts(void) per settare a 1 il bit IE dell MSR; void microblaze disable interrupts(void) per settare a 0 il bit IE dell MSR; La figura 4.13 mostra il comportamento del MicroBlaze a fronte di un interrupt: 1. Avviene l interrupt: vengono salvati il PC su un registro e le informazioni sullo stato del programma sullo stack; 2. Viene risolta l IR associata a quell interrupt, tramite l invocazione di un apposita funzione (per esempio la XIntc DeviceInterruptHandler(void) dell OPB INTC) e viene effettuato il salto all indirizzo di partenza di tale IR; 62

71 Capitolo 4. Implementazione del DMA 3. Viene eseguita la IR; 4. Si ristabiliscono le condizioni precedenti al punto 1 e si continua l esecuzione del programma principale. MicroBlaze Software Exception/ Interrupt Management R + 4 0xXXXX_XXXX Xintc_DeviceInterruptHandler C Interrupt Request Occurs A. Save next instruction location (PC) in general purpose register 14. B. Save register information to stack 2. Jump to IRQ address 3. Execute interrupt handler code 4. Return to main program A. Restore register information B. Resume operation with PC value prior to IRQ 3 PC 1 Current Instruction IRQ 2 0x0000_0014 0x0000_0010 Jump to Xintc_DeviceInterruptHandler 0x0000_000C 0x0000_0008 0x0000_0004 0x0000_0000 XAPP778_12_ Figura 4.13: Comportamento delfigure MicroBlaze 12: MicroBlaze a fronte di un Interrupt Flow Functions used to manage MicroBlaze Interrupts void microblaze_enable_interrupts(void) This function enables interrupts 63 on the MicroBlaze system. When the MicroBlaze processor starts up, interrupts are disabled. Interrupts must be explicitly turned on using this function. void microblaze_disable_interrupts(void) This function disables interrupts on the MicroBlaze processor. This function may be called when entering a critical section of code where a context switch is undesirable. void microblaze_register_handler(xinterrupthandler Handler, void *DataPtr)

72 Capitolo 4. Implementazione del DMA La ricezione degli interrupt da parte del PowerPC Come già accennato, il PowerPC presenta due porte per la ricezione di segnali interrupt hardware, come si vede in Figura Figura 4.14: Porte IRQ del PowerPC La porta che riceve gli interrupt critici si chiama EICC405CRITINPUTIRQ, mentre l altra è la EICC405EXTINPUTIRQ. Anche il PowerPC ha alcune funzioni, offerte dal Board Support Package, che permettono di attivare e disattivare gli interrupt sul processore. Esse si trovano nel file xexception l.h e sono: void XExc Init(void) inizializza la tabella dei vettori di interrupt; void XExc RegisterHandler(Xuint8 ExId, XExceptionHandler hdlr, void *CBR) Il primo parametro di questa funzione è un intero codificato su 8 bit, ed è l identificatore della tipologia di eccezione (che in [10] viene usato come sinonimo di interrupt), hdlr è la IR ad essa associata e CBR è passato come argomento all handler al momento della sua invocazione; l ExId può assumere valori quali XEXC ID CRITICAL INT, se si vuole associare una IR ad un interrupt critico, oppure XEXC ID NON CRITICAL INT se si sta associando l handler ad un interrupt esterno rispetto all architettura. L insieme completo di costanti che esprimono valori dell ExId si trova nel file xexception l.h; void XExc RemoveHandler(Xuint8 ExceptionId) Cancella il binding precedentemente stabilito tra l ExceptionId, passato come parametro a questa funzione, e la funzione di gestione dell interrupt; 64

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

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

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Un sistema operativo è un insieme di programmi che consentono ad un utente di INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli

Dettagli

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

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

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

IRSplit. Istruzioni d uso 07/10-01 PC

IRSplit. Istruzioni d uso 07/10-01 PC 3456 IRSplit Istruzioni d uso 07/10-01 PC 2 IRSplit Istruzioni d uso Indice 1. Requisiti Hardware e Software 4 1.1 Requisiti Hardware 4 1.2 Requisiti Software 4 2. Installazione 4 3. Concetti fondamentali

Dettagli

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle

Dettagli

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC BMSO1001 Virtual Configurator Istruzioni d uso 02/10-01 PC 2 Virtual Configurator Istruzioni d uso Indice 1. Requisiti Hardware e Software 4 1.1 Requisiti Hardware 4 1.2 Requisiti Software 4 2. Concetti

Dettagli

MANUALE UTENTE Fiscali Free

MANUALE UTENTE Fiscali Free MANUALE UTENTE Fiscali Free Le informazioni contenute in questa pubblicazione sono soggette a modifiche da parte della ComputerNetRimini. Il software descritto in questa pubblicazione viene rilasciato

Dettagli

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

NAVIGAORA HOTSPOT. Manuale utente per la configurazione NAVIGAORA HOTSPOT Manuale utente per la configurazione NAVIGAORA Hotspot è l innovativo servizio che offre ai suoi clienti accesso ad Internet gratuito, in modo semplice e veloce, grazie al collegamento

Dettagli

2 Gli elementi del sistema di Gestione dei Flussi di Utenza

2 Gli elementi del sistema di Gestione dei Flussi di Utenza SISTEMA INFORMATIVO page 4 2 Gli elementi del sistema di Gestione dei Flussi di Utenza Il sistema è composto da vari elementi, software e hardware, quali la Gestione delle Code di attesa, la Gestione di

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

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)

Dettagli

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE Relatore: prof. Michele Moro Laureando: Marco Beggio Corso di laurea in Ingegneria Informatica Anno Accademico 2006-2007

Dettagli

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

INFORMATICA. Il Sistema Operativo. di Roberta Molinari INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo un po di definizioni Elaborazione: trattamento di di informazioni acquisite dall esterno per per restituire un un risultato Processore:

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1 Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ Versione 1.1 Autore Antonio Barbieri, antonio.barbieri@gmail.com Data inizio compilazione 11 maggio 2009 Data revisione 14 maggio 2009 Sommario

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO DI SISTEMI ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 1 LABORATORIO DI SISTEMI OGGETTO: Progettare e collaudare un circuito digitale capace di copiare le informazioni di una memoria PROM in

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

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

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 - parte II La memoria 1 La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso,

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:

Dettagli

Guida alla registrazione on-line di un DataLogger

Guida alla registrazione on-line di un DataLogger NovaProject s.r.l. Guida alla registrazione on-line di un DataLogger Revisione 3.0 3/08/2010 Partita IVA / Codice Fiscale: 03034090542 pag. 1 di 17 Contenuti Il presente documento è una guida all accesso

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

Esempio: aggiungere j

Esempio: aggiungere j Esempio: aggiungere j Eccezioni e interruzioni Il progetto del controllo del processore si complica a causa della necessità di considerare, durante l esecuzione delle istruzioni, il verificarsi di eventi

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

Studio Legale. Guida operativa

Studio Legale. Guida operativa Studio Legale Guida operativa Cliens Studio Legale Web Cliens Studio Legale Web è un nuovo strumento che consente all avvocato di consultare i dati presenti negli archivi Cliens del proprio studio, attraverso

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

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

Creare una Rete Locale Lezione n. 1

Creare una Rete Locale Lezione n. 1 Le Reti Locali Introduzione Le Reti Locali indicate anche come LAN (Local Area Network), sono il punto d appoggio su cui si fonda la collaborazione nel lavoro in qualunque realtà, sia essa un azienda,

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

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Dettagli

C. P. U. MEMORIA CENTRALE

C. P. U. MEMORIA CENTRALE C. P. U. INGRESSO MEMORIA CENTRALE USCITA UNITA DI MEMORIA DI MASSA La macchina di Von Neumann Negli anni 40 lo scienziato ungherese Von Neumann realizzò il primo calcolatore digitale con programma memorizzato

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

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

Hardware delle reti LAN

Hardware delle reti LAN Hardware delle reti LAN Le reti LAN utilizzano una struttura basata su cavi e concentratori che permette il trasferimento di informazioni. In un ottica di questo tipo, i computer che prendono parte allo

Dettagli

Visual basic base Lezione 01. L'ambiente di sviluppo

Visual basic base Lezione 01. L'ambiente di sviluppo L'ambiente di sviluppo L'ambiente di sviluppo Visual basic è un linguaggio di programmazione Microsoft. In questo corso prenderemo in considerazione, l'ultima versione. net di questo linguaggio. Microsoft

Dettagli

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali PowerPoint Come costruire una presentazione PowerPoint 1 Introduzione! PowerPoint è uno degli strumenti presenti nella suite Office di Microsoft! PowerPoint permette la realizzazione di presentazioni video

Dettagli

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 Vicenza, 3 giugno 2015 Gentile cliente, si ricorda che a partire dall aggiornamento PROFIS 2011.1 è stato automatizzato

Dettagli

Capitolo 4 Pianificazione e Sviluppo di Web Part

Capitolo 4 Pianificazione e Sviluppo di Web Part Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,

Dettagli

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Il Software e Il Sistema Operativo Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Cosa Impareremo Programmi e Processi Struttura del Sistema Operativo Sviluppo di Programmi I files e la loro

Dettagli

Struttura del calcolatore

Struttura del calcolatore Struttura del calcolatore Proprietà: Flessibilità: la stessa macchina può essere utilizzata per compiti differenti, nessuno dei quali è predefinito al momento della costruzione Velocità di elaborazione

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA) Il software Software Il software Il software è la sequenza di istruzioni che permettono ai computer di svolgere i loro compiti ed è quindi necessario per il funzionamento del calcolatore. Il software può

Dettagli

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate MODULO BASE Quanto segue deve essere rispettato se si vuole che le immagini presentate nei vari moduli corrispondano, con buona probabilità, a quanto apparirà nello schermo del proprio computer nel momento

Dettagli

Il web server Apache Lezione n. 3. Introduzione

Il web server Apache Lezione n. 3. Introduzione Procurarsi ed installare il web server Apache Introduzione In questa lezione cominciamo a fare un po di pratica facendo una serie di operazioni preliminari, necessarie per iniziare a lavorare. In particolar

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it Decreto Legislativo 196/2003 Codice in materia di protezione dei dati personali COOKIE POLICY La presente informativa è resa anche ai sensi dell art. 13 del D.Lgs 196/03 Codice in materia di protezione

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

Scenario di Progettazione

Scenario di Progettazione Appunti del 3 Ottobre 2008 Prof. Mario Bochicchio SCENARIO DI PROGETTAZIONE Scenario di Progettazione Il Committente mette a disposizione delle risorse e propone dei documenti che solitamente rappresentano

Dettagli

Manuale Utente MyFastPage

Manuale Utente MyFastPage Manuale MyFastPage Utente Elenco dei contenuti 1. Cosa è MyVoice Home?... 4 1.1. Introduzione... 5 2. Utilizzo del servizio... 6 2.1. Accesso... 6 2.2. Disconnessione... 7 2.3. Configurazione base Profilo

Dettagli

Sommario. Introduzione 1

Sommario. Introduzione 1 Sommario Introduzione 1 1 Il Telecontrollo 1.1 Introduzione... 4 1.2 Prestazioni di un sistema di Telecontrollo... 8 1.3 I mercati di riferimento... 10 1.3.1 Il Telecontrollo nella gestione dei processi

Dettagli

Installazione e caratteristiche generali 1

Installazione e caratteristiche generali 1 Installazione e caratteristiche generali 1 Introduzione SIGLA Ultimate e SIGLA Start Edition possono essere utilizzati solo se sono soddisfatti i seguenti prerequisiti: Microsoft.Net Framework 3.5 (consigliato

Dettagli

Invio SMS. DM Board ICS Invio SMS

Invio SMS. DM Board ICS Invio SMS Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove

Dettagli

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio Documento Tecnico Light CRM Descrizione delle funzionalità del servizio Prosa S.r.l. - www.prosa.com Versione documento: 1, del 11 Luglio 2006. Redatto da: Michela Michielan, michielan@prosa.com Revisionato

Dettagli

3. Introduzione all'internetworking

3. Introduzione all'internetworking 3. Introduzione all'internetworking Abbiamo visto i dettagli di due reti di comunicazione: ma ce ne sono decine di tipo diverso! Occorre poter far comunicare calcolatori che si trovano su reti di tecnologia

Dettagli

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore Contenuti Introduzione 1 Introduzione 2 3 4 5 71/104 Il Calcolatore Introduzione Un computer...... è una macchina in grado di 1 acquisire informazioni (input) dall esterno 2 manipolare tali informazioni

Dettagli

Manuale Helpdesk per utenti

Manuale Helpdesk per utenti Manuale Helpdesk per utenti Il giorno 1 Agosto 2009 partirà il nuovo sistema per l helpdesk on-line, ovvero uno strumento che permetterà agli utenti di sapere in ogni momento 1) quale tecnico CED ha in

Dettagli

Standard Nazionale di Comunicazione Mercato Gas

Standard Nazionale di Comunicazione Mercato Gas JULIA RETE s.u.r.l. - Società unipersonale a responsabilità limitata Soggetta a direzione e coordinamento del Comune di Giulianova Sede legale: 64021 Giulianova (TE) Corso Garibaldi, 119 Sede operativa:

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Sistema inoltro telematico domande di nulla osta, ricongiungimento e conversioni Manuale utente Versione 2 Data creazione 02/11/2007 12.14.00

Dettagli

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica Consiglio regionale della Toscana Regole per il corretto funzionamento della posta elettronica A cura dell Ufficio Informatica Maggio 2006 Indice 1. Regole di utilizzo della posta elettronica... 3 2. Controllo

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

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

File, Modifica, Visualizza, Strumenti, Messaggio

File, Modifica, Visualizza, Strumenti, Messaggio Guida installare account in Outlook Express Introduzione Questa guida riguarda di sicuro uno dei programmi maggiormente usati oggi: il client di posta elettronica. Tutti, ormai, siamo abituati a ricevere

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

Manuale NetSupport v.10.70.6 Liceo G. Cotta Marco Bolzon

Manuale NetSupport v.10.70.6 Liceo G. Cotta Marco Bolzon NOTE PRELIMINARI: 1. La versione analizzata è quella del laboratorio beta della sede S. Davide di Porto, ma il programma è presente anche nel laboratorio alfa (Porto) e nel laboratorio di informatica della

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

Stampe in rete Implementazione corretta

Stampe in rete Implementazione corretta NETWORK PRINT SERVERS Articolo Stampe in rete Implementazione corretta Created: June 3, 2005 Last updated: June 3, 2005 Rev:.0 INDICE INTRODUZIONE 3 INFRASTRUTTURA DELLE STAMPE IN RETE 3. Stampa peer-to-peer

Dettagli

Avvio di Internet ed esplorazione di pagine Web.

Avvio di Internet ed esplorazione di pagine Web. Incontro 1: Corso di aggiornamento sull uso di internet Avvio di Internet ed esplorazione di pagine Web. Istituto Alberghiero De Filippi Via Brambilla 15, 21100 Varese www.istitutodefilippi.it Tel: 0332-286367

Dettagli

Reti di Telecomunicazione Lezione 6

Reti di Telecomunicazione Lezione 6 Reti di Telecomunicazione Lezione 6 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Lo strato di applicazione protocolli Programma della lezione Applicazioni di rete client - server

Dettagli

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput Valutazione delle Prestazioni Architetture dei Calcolatori (Lettere A-I) Valutazione delle Prestazioni Prof. Francesco Lo Presti Misura/valutazione di un insieme di parametri quantitativi per caratterizzare

Dettagli

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Una tabella Pivot usa dati a due dimensioni per creare una tabella a tre dimensioni, cioè una tabella

Dettagli

Elettronica dei Sistemi Programmabili

Elettronica dei Sistemi Programmabili Elettronica dei Sistemi Programmabili Introduzione Stefano Salvatori Università degli Studi Roma Tre (stefano.salvatori@uniroma3.it) Università degli Studi Roma Tre Elettronica dei Sistemi Programmabili

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

Dettagli