DISPENSE DI CALCOLATORI ELETTRONICI 1

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "DISPENSE DI CALCOLATORI ELETTRONICI 1"

Transcript

1 UNIVERSITÀ DEGLI STUDI DI SIENA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA MODULO PROFESSIONALIZZANTE "TECNOLOGIE PER IL KNOWLEDGE MANAGEMENT" A.A. 2005/2006 DISPENSE DI CALCOLATORI ELETTRONICI 1

2 Hanno collaborato alla stesura delle dispense: Sara Belloni Paolo Bennati Riccardo Brogi Elena Caini Saverio Carito Matteo Carletti Ilaria Castelli Ludovico Ciacci Paolo Cini Manuela Cippitelli Elena Clementi Matteo Collini Andrea Corsi Andrea Corsoni Luca Daveri Mauro De Biasi Lucia Di Noi Alessandra Di Tella Pierluigi Failla Valentina Fambrini Samuele Forconi Lucia Gentili Roberto Giorgi Annamaria Giovannoni Francesco Gnarra Ciro Guariglia Mirko Leommanni Michele Moramarco Riccardo Nieto Giacomo Novembri Davide Pallassini Carlo Alberto Pascucci Erik Peruzzi Gabriele Petri Marcello Piliego Nicola Pisu Claudio Rocchi Laura Romano Francesco Russo Fabrizio Simi Carlo Snickars Martina Tiribocchi Andrea Tommasi Francesco Vivi Matilda Xheladini Matteo Zampi La dispensa e' rilasciata per uso dei soli studenti del Corso di Calcolatori Elettronici 1 del Corso di Laurea di Ingegneria Informatica della Facoltà di Ingegneria Università degli Studi di Siena Copyright notice All figures from Computer Organization and Design: The Hardware/Software Approach, Second Edition, by David Patterson and John Hennessy, are copyrighted material. (COPYRIGHT 1998 MORGAN KAUFMANN PUBLISHERS, INC. ALL RIGHTS RESERVED.) Figures may be reproduced only for classroom or personal educational use in conjunction with the book and only when the above copyright line is included. They may not be otherwise reproduced, distributed, or incorporated into other works without the prior written consent of the publisher.

3 INDICE Lezione 1: Lezione 2: Lezione 3: Lezione 4: Lezione 5: Lezione 6: Lezione 7: Lezione 8: Lezione 9: Lezione 10: Lezione 11: Lezione 12: Lezione 13: Lezione 14: Lezione 15: Lezione 16: Lezione 17: Lezione 18: Lezione 19: Lezione 20: Introduzione Assembly MIPS (parte prima) Assembly MIPS (parte seconda) Valutazione delle prestazioni (parte prima) Valutazione delle prestazioni (parte seconda) Valutazione delle prestazioni (parte terza) Standard IEEE-754 per le operazioni floating point Assembly MIPS Interrupt Implementazione di semplice CPU MIPS BUS BUS PCI, SCSI e USB Tecniche di pilotaggio dei dispositivi I/O Esempi di dispositivi di I/O: il timer e la porta seriale Hard disk Introduzione al sottosistema di memoria Introduzione alla memoria cache (parte prima) Introduzione alla memoria cache (parte seconda) Memoria virtuale Pipeline

4

5 LEZIONE 1 Introduzione

6

7 1.1 INTRODUZIONE Queste dispense sono state raccolte con lo scopo di fornire un riferimento sintetico alla materia trattata nel Corso di Calcolatori Elettronici 1 presso la Facolta di Ingegneria dell Universita di Siena. Per gli approfondimenti (molti!) alla materia si rimanda ai Testi di Riferimento del corso [1], [2], [3], [4], [5], [6], [7] e ai Riferimenti Bibliografici posti al termine di ognuna delle venti lezioni. Gli argomenti di una lezione vengono tipicamente trattati in circa due ore. Accompagnano il materiale didattico del corso, gli esercizi proposti nelle prove di esame e i simulatori architetturali (disponibili sul sito web del corso [8]) Prerequisiti del Corso Per affrontare il corso di Calcolatori Elettronici 1 è opportuno aver acquisito alcune conoscenze di base dai corsi precedenti, con particolare riferimento a: struttura base della macchina (macchina di Von Neumann, ciclo fetch-execute); lettura e scrittura di programmi C; passi per eseguire il programma (compilazione, collegamento, caricamento, esecuzione); progetto logico di un circuito (componenti logici, macchine a stati finiti,). 1.2 STRUTTURA DEL CORSO I tre principali obiettivi che il corso si propone di raggiungere sono: imparare a misurare e analizzare le prestazioni di un Calcolatore; capire l architettura di un Calcolatore; individuare possibili ottimizzazioni per migliorare le potenzialità di un Calcolatore Analisi delle prestazioni Per poter valutare la bontà di un Calcolatore è necessario innanzitutto mettersi d accordo su come misurarne le prestazioni relativamente allo scopo che si vuole adibire a quella macchina. L obiettivo della prima parte del corso è quindi quello di analizzare i fattori che influenzano le prestazioni, capire come effettuare un analisi quantitativa di essi e discutere di come questi siano influenzati dall architettura scelta. Gli argomenti affrontati in questa prima parte sono: definizione software della macchina (lezioni 2,3); metriche e benchmark per la valutazione delle prestazioni (lezioni 4,5,6); influenza dei criteri prestazionali sulla definizione software (lezioni 7,8,9) Analisi dell architettura Per comprendere l architettura dei moderni Calcolatori si analizzera l organizzazione interna dei principali elementi della macchina cosi come sono oggi realizzati: processore, memoria, sottosistema di input/output (I/O). I principali argomenti trattati in questa parte sono: struttura del processore: parte di controllo e datapath (lezione 10); reti di interconnessione e interfacciamento (lezioni 11,12); sottosistema di Input/Output (lezioni 13,14,15); memoria (lezione 16) Meccanismi architetturali per il miglioramento delle performance Parti accessorie del Calcolatore ma ormai quasi universlamente utilizzate sono: memoria cache (lezioni 17,18); memoria virtuale (lezione 19); pipeline (lezione 20). 1.1

8 1.3 EVOLUZIONE DEI CALCOLATORI La legge di Moore Il forte sviluppo dei Calcolatori Elettronici dipende in gran parte dai progressi della Tecnologia Elettronica e in particolare dei Circuiti Integrati la cui capacita, in termini di numero di transistor e quindi di funzionalita ha seguito per oltre 40 anni la Legge di Moore: Il numero di transistor su singolo chip raddoppia ogni 18 mesi Nel 1965, Gordon Moore (che successivamente nel 1968 fondo con R. Noyce la ditta Intel) osservo l evoluzione dell industria elettronica nei 6 anni precedenti ( ) e gli sembro ragionevole una proiezione [9] secondo cui il numero di componenti a minimo costo in un circuito integrato sarebbe raddoppiato ogni 12 mesi; questa supposizione si rivelò corretta al 90% fino al Osservando invece, il numero di transistor nei processori Intel da meta del 1971 (anno di introduzione del processore 4004, con 2300 transistor) a fine del 2000 (anno di introduzione del processore Pentium-4, con 43 milioni di transistor) si puo osservare un raddoppio dei transistor solo ogni 24 mesi (in parte questo è contemplato in [9]). Altri (non Moore) hanno fatto si che quella formulata sopra sia la versione popolarmente acclamata della Legge di Moore. Pent 4 Pent III Pent II Pent Pro Pent. Migliaia di Transistor SL Figura 1.1: La legge di Moore. A prescindere dalle diverse interpretazioni, resta comunque il dato di fatto di uno stupefacente incremento, che non ha eguali in nessun altro settore industriale. Simili incrementi si possono altresi registare per altri componenti dell Architettura del Calcolatore: Processore: Porte logiche: +30%/anno Velocità clock: +20%/anno Memoria: Dimensione: +60%/anno Velocità: +9%/anno Costo per bit: +25%/anno I/O (Disco): Dimensione: +60%/anno I tipi di Calcolatori Elettronici Si puo dire che agli inizi del terzo millennio le tipologie di Calcolatori esistenti sono sostanzialmente tre (v. anche figura 1.2): Sistemi Desktop (principalmente analizzati in questo corso); Sistemi Server (Network of Workstation, Supercomputer, Parallel Computers); Sistemi Embedded (dai telefonini ai palmari e ai sistemi di controllo industriale). 1.2

9 Mainframe Vector Supercomputer Massively Parallel Processors Minicomputer Portable Computers Networks of Workstations/PCs Figura 1.2: Computer Food Chain. Altre tipologie introdotte agli albori dell introduzione dei Calcolatori a programma memorizzato sono ormai scomparse (Mainframe, MiniComputer) o prevalentemente confluite (Vector Supercomputer, Massively Parallel Processor) in altre tipologie. 1.4 ARCHITETTURA DI UN CALCOLATORE DESKTOP Un Calcolatore di tipo desktop può essere visto come un elettrodomestico componibile. Al suo interno sono presenti infatti molti componenti che consentono di mettere in piedi l intera macchina in maniera abbastanza semplice e modulare. Una tipica organizzazione di un Calcolatore Desktop e riportata in Figura 1.3. Tale organizzazione si discosta pochissimo dall originaria impostazione presentata da Von Neumann [10] nel CPU Cache Bus Memoria Adattatore (bridge) Dispostivi di I/O: Disco Display Tastiera Controller Scheda di rete INTERNET Figura 1.3: Organizzazione a blocchi. 1.3

10 1.4.1 Limiti dovuti alla dimensione del chip Sabbene sia teoricamente conveniente avere chip grossi per ottenere un numero elevato di transistor (e quindi di funzionalita ) sullo stesso, cio non viene attuato nella realta perche il costo di un chip è proporzionale a circa il cubo della sua area. E infatti possibile calcolare il costo del chip (o die ) con la seguente formula: C DIE = N C DIE WAFER Y WAFER dove: C DIE = Costo del die C WAFER = Costo del wafer N DIE = Numero di die in un wafer Y WAFER = Yield o Resa del wafer (numero die per unita di sup.) Il numero di die all interno di un wafer e la resa del wafer stesso dipendono dall area del die, come si vede dalle seguenti formule: 2 D π WAFER DWAFER AWAFER N 2 π 1 DIE = NTEST YWAFER = A 2 A A 1+ F A 2 DIE DIE dove: D WAFER = Diametro del wafer A DIE = Area del die = π(d WAFER /2) 2 A WAFER = Area del wafer N TEST = Numero di die usati per test F = Difetti per unita di superfice DIE ( ) Limiti dovuti al consumo di potenza Il consumo di potenza di un calcolatore elettronico è un altro degli aspetti fondamentali che limita il numero di componenti che e possibile integrare sul chip. Inolre, questo problema risulta essere maggiormente pressante con l avvento di CPU sempre più complesse. Il consumo di potenza è influenzato dalla densità con cui sono costruiti i chip; chip più densi, che significano quindi sistemi più complessi, richiedono un maggiore consumo di potenza per unità di superficie. Per un Calcolatore Desktop il limite a braccio che viene utilizzato per la potenza totale dissipata (Total Dissipated Power o TDP) e intorno ai 100W. DIE 1.5 DEFINIZIONE DI ARCHITETTURA DI UN CALCOLATORE L Architettura di un Calcolatore e...l insieme dell insieme degli attributi visibili al programmatore, ovvero la struttura concettuale e il comportamento funzionale, distinti dall organizzazione del flusso dei dati e del controllo, dagli elementi logici e dall implementazione fisica (tradotto dalla definizione originale che compare in [12]). Per definire un architettura si dovrà specificare come organizzare i dispositivi di memorizzazione, definire quali siano i tipi di dato e le strutture dati, stabilire l insieme delle istruzioni ed il loro formato, fissare un metodo di indirizzamento della memoria e di accesso ai dati e alle istruzioni ed, infine, essere in grado di gestire le eccezioni. In altri termini, l Architettura del Calcolatore e l interfaccia tra cio che viene fornito dall Hardware e cio che viene richiesto dal Software. 1.4

11 Un termine vicino ma distinto e Microarchitettura, che viene usato per definire le risorse ed i metodi per implementare una data Architettura [13] di un Calcolatore ovvero la Microarchitettrura e l implementazione di una Architettura e fornisce a sua volta la specifica da utilizzare per il progetto logico (e successivamente elettrico e fisico). 1.6 RIFERIMENTI BIBLIOGRAFICI [1] D.A. Patterson, J.L. Hennessy, "Struttura e Progetto dei Calcolatori" 2a edizione ITALIANA (traduzione della 3a edizione inglese), Zanichelli, Luglio 2006, ISBN [2] G. Bucci, "Architettura dei Calcolatori Elettronici", McGraw-Hill, 2001, ISBN X. [3] P. Corsini, G. Frosini, "Architettura dei calcolatori", McGraw Hill, 1997, ISBN [4] A. S. Tanenbaum, "Structured computer organization", 4th ed., Prentice-Hall International, 1999, ISBN [5] V.P. Heuring, "Computer Systems Design and Architecture" 2ed, Pearson/Prentice Hall, 2004, ISBN [6] S. Furber, "ARM System-on-chip architecture", 2ed, Pearson/Addison Wesley, 2000, ISBN [7] W. Stallings, "Architettura e organizzazione dei calcolatori", Jackson Libri, 2000, ISBN [8] Sito Web del Corso. [9] G. E. Moore, Cramming more components onto integrated circuits, Electronics Magazine (1965) (ftp://download.intel.com/museum/moores_law/articles-press_releases/gordon_moore_1965_article.pdf). [10] J. von Neumann, First Draft of a Report on the EDVAC (anche disponibile al sito: [11] Intel, Microprocessor Quick Reference Guide, [12] G. M. Amdahl, G.A. Blaauw, F.P. Brooks, (1964), Architecture of the IBM System/360, IBM J. Research and Development 8. Reprinted (2000) loc.cit ( [13] B. Shriver and B. Smith. The Anatomy of a High-Performance Microprocessor, A Systems Perspective. IEEE Computer Society Press, July

12

13 LEZIONE 2 Assembly MIPS (parte prima).

14

15 2.1 INTRODUZIONE I calcolatori, per loro natura, comprendono segnali composti da due soli elementi, che rappresentano lo stato di on e off, identificati nei numeri 0 e 1 e il linguaggio formato da questo alfabeto è detto linguaggio macchina. I programmatori anziché il linguaggio macchina utilizzano il linguaggio assembly che associa alle sequenze binarie del linguaggio macchina una rappresentazione simbolica più comprensibile. Tutti i comandi che vengono impartiti ai calcolatori sono detti istruzioni, ossia sequenze di 0 e 1 che il calcolatore è in grado di comprendere. Un programma assemblatore traduce la notazione simbolica, quindi in linguaggio assembly, di un istruzione, nella corrispondente notazione binaria, ovvero in linguaggio macchina. Ad esempio: add $so, $s1, $s2 (linguaggio assembly MIPS) (linguaggio macchina MIPS) L istruzione nell esempio dice al calcolatore di sommare due numeri. Il linguaggio macchina ha una diretta implementazione in termini circuitali. Sopra al linguaggio assembly si costruiscono dei linguaggi ad alto livello che includono delle istruzioni più vicine al linguaggio naturale in quanto permettono la programmatore di non specificare certi tipi di dettagli implementativi della macchina ed inoltre sono più flessibili rispetto all assembly. Alcuni dei più famosi linguaggi ad alto livello sono il Java, il C++, il C e il Pascal. I programmi che utilizzano tali linguaggi si chiamano compilatori e consentono al programmatore di scrivere espressioni del tipo: C = A + B; (linguaggio ad alto livello C) che il compilatore tradurrà in istruzione assembly add $so, $s1, $s2. Dove la variabile A è associata al contenuto del registro $s1, la variabile B a quello del registro $s2 e la variabile C al registro $s ISTRUZIONI ASSEMBLY Per poter gestire l hardware di un calcolatore bisogna saper parlare il suo linguaggio; le parole del linguaggio del calcolatore si chiamano istruzioni e il vocabolario è il set di istruzioni. Il set di istruzioni prescelto proviene dal processore MIPS, usato fra gli altri da NEC, Nintendo, Sylicon Graphics e Sony. L architettura dei processori MIPS appartiene alla famiglia delle architetture RISC (Reduced Instruction Set Computer) sviluppate dal 1980 in poi. I principali obiettivi delle architetture RISC sono la semplificazione della progettazione dell'hardware e del compilatore, la massimizzazione delle prestazioni e la minimizzazione dei costi. Gli operandi delle istruzioni non possono essere variabili in memoria ma devono essere scelti fra i registri interni al microprocessore. Fanno eccezione solo le istruzioni load e store che fanno riferimento a variabili in memoria. Un processore possiede un numero limitato di registri ad esempio il processore MIPS possiede 32 registri composti da 32-bit (word). In tutti i casi in cui è possibile i registri sono associati alle variabili di un programma dal compilatore. Inoltre se i registri non fossero sufficienti per rappresentare le variabili che vogliamo, possiamo ricorrere alla memoria, ma questo metodo non si usa sempre dato che 2.1

16 l accesso alla memoria è più lento di quello ai registri, argomento che sarà affrontato in dettaglio nella lezione 16. Per identificare i registri si usano nomi simbolici preceduti da $, ad esempio: $s0, $s1 oppure possono essere anche indicati direttamente mediante il loro numero (0,, 31) preceduto sempre da $. I nomi simbolici e i numeri per i registri vengono assegnati attraverso questa convenzione: Tabella 2.1: Convenzione per i registri MIPS Numero registro Uso Nome 0 Valore costante 0 $zero 2-3 Valore dei risultati e valutazione di espressione $v0-$v1 4-7 Parametri $a0-$a Variabili temporanee $to-$t Variabili salvate $s0-$s Altre variabili temporanee $t8-$t Riservato al kernel $k0-$k1 28 Global pointer $gp 29 Stack pointer $sp 30 Frame pointer $fp 31 Indirizzo di ritorno $ra Le istruzioni del linguaggio assembly MIPS possono essere divise nelle seguenti categorie: Istruzioni ARITMETICO-LOGICHE Istruzioni LOAD and STORE (trasferimento da/verso memoria) Istruzioni di salto condizionato e non condizionato per il controllo del flusso di programma Il linguaggio assembly fornisce anche delle pseudoistruzioni che costituiscono un modo più comodo per scrivere istruzioni assembly o brevi sequenze di istruzioni assembly. Queste sono istruzioni fornite dall assembler ma non implementate in hardware. Ad esempio: move $t0, $t1 esiste solo in assembly in quanto l assemblatore traduce usando add $t0, $t1, $zero Nel registro t0 viene messo il risultato della somma del contenuto di t1 e di zero, ovvero viene spostato il contenuto di t1 in t Istruzioni aritmetiche In MIPS, un istruzione aritmetico-logica possiede tre operandi che sono sempre e solo registri: i due registri contenenti i valori da elaborare (registri sorgente) e il registro contenente il risultato (registro destinazione). L ordine degli operandi è fisso: prima il registro contenente il risultato dell operazione e poi i due operandi. Istruzione add L istruzione add serve per sommare il contenuto di due registri sorgente s1 e s2 e mettere il risultato in s0. 2.2

17 Esempio: Codice C: R = A + B Codice MIPS: add $s0, $s1, $s2 Dove la variabile R è associata al registro $s0, la variabile A al registro $s1 e la variabile B a $s2. Nella traduzione da linguaggio ad alto livello a linguaggio assembly, le variabili sono associate ai registri dal compilatore Quando dobbiamo svolgere operazioni con un numero di operandi maggiore di tre queste possono essere effettuate scomponendole in operazioni più semplici, in quanto ciascuna delle istruzioni MIPS può eseguire una sola operazione. Ad esempio, per eseguire la somma delle variabili B, C, D ed E nella variabile A servono tre istruzioni: Codice C: A = B + C + D + E Codice MIPS: add $t0, $s1, $s2 add $t0, $t0, $s3 add $s0, $t0, $s4 # il registro $t0 contiene B+C # il registro $t0 contiene B+C+D # il registro $s0 contiene B+C+D+E Dove la variabile A è associata al registro $s0, la variabile B al registro $s1, la variabile C a $s2, la variabile D a $s3 e la variabile E a $s4. Il registro $t0 è utilizzato per memorizzare temporaneamente il risultato. Istruzione sub L istruzione sub serve per sottrarre il contenuto di due registri sorgente s1 e s2 e mette il risultato in s0. Esempio: Codice C: R = A - B Codice MIPS: sub $s0,$s1, $s2 Dove la variabile R è associata al registro $s0, la variabile A al registro $s1 e la variabile B a $s Istruzioni di trasferimento Gli operandi delle istruzioni aritmetiche devono risiedere nei registri che, come abbiamo già detto, nel nostro processore MIPS sono 32. Se abbiamo programmi i cui dati richiedono più di 32 registri, ovvero hanno moltissime variabili, alcuni di questi risiedono nella memoria. L allocazione in memoria di alcune variabili è detto spilling (riversamento). A questo proposito servono specifiche istruzioni atte a trasferire i dati dalla memoria ai registri e viceversa; queste possono solo leggere o scrivere un operando ma non possono eseguire nessuna operazione su di esso. Le operazioni base di questo tipo sono due la load e la store rispettivamente. Breve richiamo sulla struttura della memoria La memoria può essere vista come un unico grande array uni-dimensionale con gli indirizzi che rappresentano l indice del vettore a partire da 0. Dato che i byte, composti da 8 bit, sono utilizzati da molti programmi, la maggior parte delle architetture indirizza il singolo byte ma per ragioni di efficienza i microprocessori trasferiscono più byte in un colpo solo (come ad 2.3

18 esempio un microprocessore a 32 bit). Quindi dato che i programmi utilizzano l indirizzamento al byte e le istruzioni sono a 32 bit (quindi comprendono 4 byte) il loro indirizzo è sempre a multipli di quattro, così parole adiacenti hanno indirizzi che differiscono di un fattore di quattro. All interno di una parola i byte possono essere ordinati facendo corrispondere all indirizzo al byte (es. 0x ) il byte più significativo di una parola a 4 byte; si parla in questo caso di disposizione big-endian (v. figura 2.1). Se invece si fa corrispondere all indirizzo al byte (es. 0x ) il byte meno significativo si parla di disposizione littleendian (v. figura 2.1). Vogliamo andare alla parola 0 con questa sequenza di byte numerati da 0 a 3 le due disposizioni sono: Disposizione big-endian Disposizione little-endian Fgura 2.1: Disposizione dei bit per big-endian e little-endian. Nel caso big-endian la memorizzazione inizia dal byte più significativo per finire col meno significativo; nel caso little-endian la memorizzazione inizia dal byte meno significativo per finire col più significativo. Istruzione load L istruzione LOAD serve per trasferire un dato dalla memoria in un registro. Il nome convenzionale di questa istruzione nel linguaggio MIPS è lw, che significa load word (carica una parola). L istruzione lw ha tre argomenti: il registro di destinazione in cui caricare la parola letta dalla memoria, una costante che rappresenta l offset (o spiazzamento) e un registro sorgente che contiene il valore dell indirizzo base da sommare alla costante. Quindi l indirizzo effettivo della parola di memoria da caricare nel registro di destinazione viene calcolato sommando un valore base, contenuto nel registro sorgente e un offset direttamente specificato all interno dell istruzione. $s 3 (BASE) 4*k (OFFSET) Esempio: Codice C: g = h + A[8] Codice MIPS: lw $t0, 32($s3) add $s1, $s2, $t0 Figura 2.2: Schema di funzionamento dell istruzione di LOAD. # il registro $t0 assume il valore A[8] # g = h + A[8] 2.4

19 In cui la variabile g è associata al registro $s1, la variabile h al registro $s2, A a $s3 (registro base), 8 rappresenta il nono elemento del vettore di indirizzamento a 32 bit, ossia l offset 8 4=32. Istruzione store L istruzione STORE è la complementare della load, infatti serve per trasferire il contenuto di un registro verso la memoria. Il nome convenzionale in linguaggio MIPS è sw, che significa store word (memorizza una parola). Il suo formato è analogo a quello della load: per primo viene messo il nome del registro che contiene il dato da trasferire in memoria, poi l offset e in fine il registro base. Nell istruzione store il registro destinazione è l ultimo operando. Esempio: Codice C: A[12] = h + A[8] Codice MIPS: lw $t0, 32($s3) # il registro t0 assume il valore A[8] add $t0, $s2, $t0 # il registro $t0 assume il valore h + A[8] sw $t0, 48($s3) # memorizza h + A[8] in A[12] In cui la variabile h è associata al registro $s2, A a $s3 (registro base), 8 rappresenta il nono elemento del vettore di indirizzamento a 32 bit, ossia l offset 8 4=32, ugualmente 12 che ha un offset di 12 4= Istruzioni di salto condizionato e non condizionato Le istruzioni di salto condizionato e non condizionato sono rese necessarie dalla struttura del calcolatore. L'unità di controllo fa funzionare l elaboratore che da quando viene acceso a quando viene spento esegue di continuo il ciclo di prelievo / decodifica / esecuzione (fetch / decode / execute ), la cui struttura è schematizzata nella seguente tabella. Tabella 2.2: Il ciclo Fecth-Decode-Execute. Passo 1. Carica un'istruzione dalla memoria puntata da un registro speciale chiamato program counter (PC), e la assegna a un registro interno chiamato IR. Passo 2. Cambia PC con l'indirizzo successivo in memoria (PC=PC+4). Passo 3. Determina il tipo di istruzione appena caricata nel registro delle istruzioni in base al suo opcode (Codice Operativo). Passo 4. Si chiede se l'istruzione utilizza una parola in memoria. In tal caso determina l effettivo indirizzo dell operando in memoria (base + offset). Passo 5. Se necessario, carica la parola residente in memoria in un registro della cpu. Passo 6. Esegue l'istruzione. Passo 7. Torna all'inizio, al 1 passo, ed esegue la prossima istruzione. Il ciclo descritto in tabella può essere così sintetizzato: Operazione di FETCH 2.5

20 Passi 1 2 Operazione di DECODE Passo 3 Operazione di EXECUTE Passo 4, 5, 6. Istruzioni particolari possono alterare il prelievo delle istruzioni da celle consecutive come ad esempio le istruzioni di salto. Le istruzioni di salto condizionato e non condizionato prendono il nome anche di istruzioni di decisione in quanto alterano il flusso principale del programma, ovvero cambiano la prossima istruzione da eseguire. Le istruzioni di salto condizionato utilizzano un campo offset di 16 bit (con segno); possono quindi saltare a una locazione posta nell intervallo [ ; 2 15 ]. Le istruzioni di salto incondizionato contengono invece un campo di 26 bit per specificare l indirizzo, anche se il calcolo dell indirizzo effettivo è diverso a seconda del tipo di istruzione, come vedremo nel capitolo 2. I salti condizionati si dividono in beq (branch if equal), bne (branch if not equal) e slt (set on less than) mentre quelli incondizionati vengono effettuati con l istruzione j (jump) e jal (jump and link). Istruzioni di salto condizionato Le istruzioni di salto sono effettuate attraverso le operazioni di branch che cambiano il flusso del programma creando diramazioni. L istruzione beq trasferisce il flusso di controllo (PC) all istruzione etichettata con Label se e, solo se, il valore contenuto nel registro t0 è uguale al valore del registro t1: beq $t0, $t1, Label Esempio: Codice C: if (i= =j) f = g + h; f =f i; Codice MIPS: beq $s3, $s4, L1 # va a L1 se i = j add $s0, $s1, $s2 # f = g + h ( si salta se i = j ) L1: sub $s0, $s0, $s3 # f = f i ( eseguita sempre) Dove la variabile i è associata al registro $s3, la variabile j al registro $s4, la variabile f a $s0, la variabile g a $s1 e la variabile h a $s2. L istruzione bne indirizza all istruzione etichettata con Label se e, solo se, il valore contenuto nel registro t0 non è uguale al valore del registro t1. bne $t0, $t1, Label E opportuno chiedersi a questo punto quale istruzione utilizzare nel caso vogliamo fare confronti di disuguaglianza ( <,, >, ) fra due variabili. A questo proposito viene utilizzata l istruzione slt che serve per verificare se la variabile corrispondente al registro s0 è minore della variabile corrispondente al registro s1. Il registro t0 diventa uguale a 1 se s0 < s1 0 altrimenti. Quindi il test finale è realizzato da un istruzione bne che confronta i registri t0 e zero, oppure da un istruzione beq che confronta i registri t0 e la costante

21 slt $t0, $s0, $s1 Esempio: Codice C: if A<B; then C=1; else C=0; Codice MIPS: slt $t0, $s1, $s2 La variabile A è associata al registro $s1, la variabile B a $s2, e la variabile C a $t0. Istruzioni di salto non condizionato L istruzione di salto non condizionato è j ed indica all elaboratore di eseguire sempre il salto; l indirizzo di destinazione del salto è un indirizzo assoluto di memoria. Esempio: Codice C: if (i = = j) f = g + h; else f = g h; Codice MIPS: beq $s3, $s4, L1 # va a L1 se i = j L1:add $s0, $s1, $s2 # f = g + h ( si salta se i = j ) bne $s3, $s4, L2 # va a L2 se i j L2: sub $s0, $s1, $s2 # f = g -h j esci # vai a esci La variabile i è associata al registro $s3, la variabile j al registro $s4, la variabile f al registro $s0, e le variabili g e h rispettivamente a $s1 e $s2. L istruzione di salto non condizionato jal richiede un analisi più approfondita che sarà affrontata nella lezione Esempi di programmi assembly Implementazione ciclo while Codice C: while (A[i]==k) i=i+j; Codice MIPS: Ciclo: add $t1, $s3, $s3 # il registro temporaneo $t1 è uguale a 2 i add $t1, $t1, $t1 # il registro temporaneo $t1 è uguale a 4 i add $t1, St1, $s6 # $t1 è uguale all indirizzo di A[i] lw $t0, 0($t1) #il registro temporaneo $t0 è uguale a A[i] bne $t0, $s5, esci # vai ad esci se A[i]=k add $s3, $s3, $s4 # i=i+j j ciclo # vai a ciclo Esci: Si assuma che le variabili i, j e k corrispondano ai registri $s3, $s4 e $s5 rispettivamente e che $s6 contenga l indirizzo di base del vettore A. Implementazione ciclo do while Codice C: do 2.7

22 g = g+a[i]; i=i+j; while (i!=h) Codice MIPS: Ciclo: add $t1, $s3, $s3 # il registro temporaneo $t1 è uguale a 2 i add $t1, $t1, $t1 # il registro temporaneo $t1 è uguale a 4 i add $t1, St1, $s5 # $t1 è uguale all indirizzo di A[i] lw $t0, 0($t1) # il registro temporaneo $t0 è uguale a A[i] add $s1, $s1, $t0 # g=g+a[i] add $s3, $s3, $s4 # i=i+j bne $s3, $s2, ciclo # se i h vai a ciclo Si suppone che le variabili g e h siano associate a $s1 e $s2, i e j associate a $s3, $s4 e che $s5 contenga l indirizzo di base di A. 2.3 LINGUAGGIO MACCHINA Tutte le istruzioni MIPS hanno la stessa dimensione (32 bit). I 32 bit hanno un significato diverso a seconda del formato (o tipo) di istruzione. Tutte le istruzioni scritte dal programmatore in linguaggio assembly vengono passate al calcolatore come una sequenza finita di bit scritta in base 2. Il tipo di istruzione è riconosciuto in base al valore dei 6 bit più significativi che compongono il codice operativo (OPCODE, OP) mentre i rimanenti 26 bit sono suddivisi diversamente in base al formato in cui l istruzione è scritta. Esistono tre tipi di formati: Tipo R (register) Tipo I (immediate) Tipo J (jump) Formato di tipo R Con il formato di tipo R vengono descritte le funzioni aritmetico-logiche. A ciascuno dei campi delle istruzioni MIPS viene associato un nome, per poter fare più agevolmente gli opportuni riferimenti. opcode rs rt rd shamt funct 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit Ogni campo in cui è suddivisa l istruzione ha un preciso significato: Op (opcode) identifica il tipo di operazione è chiamato anche codice operativo Rs primo operando sorgente Rt secondo operando sorgente Rd registro di destinazione che contiene il risultato dell operazione Shamt questo termine contiene il valore dello scorrimento (shift amount che verrà discussa successivamente) Funct funzione. Seleziona una variante specifica dell operazione base descritta nel campo op, è chiamato codice funzione. Esempio: 2.8

23 Add $t0, $s1, $s Esempio istruzione formato R: Nome campo Op Rs Rt Rd Shamt Funct Dimensione 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit Add $s1,$s2,$s Formato di tipo I Il formato di tipo I nasce dall esigenza di specificare operandi immediati (costanti) direttamente nelle istruzioni. In generale servirebbero 32 bit ma fortunatamente nella maggioranza dei software le costanti utilizzate sono piccole, quindi con 16 bit si risolve già la stragrande maggioranza dei casi. Infatti quando si vuole rappresentare un istruzione di trasferimento con il formato R possono nascere dei problemi in quanto questa necessita di campi di dimensioni maggiori rispetto a quelli sopra specificati. Ad esempio l istruzione load deve specificare due registri e una costante; se la costante dovesse essere specificata in uno dei campi da cinque bit, sarebbe limitata al valore di 2 5, cioè 32, ma poiché questa serve per indirizzare all interno di vettori di grandi dimensioni spesso assume valori maggiori. Per far rimanere la lunghezza delle istruzioni sempre di 32 bit il compromesso è quello di creare formati diversi per le diverse istruzioni. Per le istruzioni di trasferimento utilizziamo il tipo I che ha la seguente struttura: opcode rs rt address 6 bits 5 bits 5bits 16 bits In questo caso i campi hanno il seguente significato: opcode identifica il tipo di istruzione rs indica il registro base rt indica il registro destinazione dell istruzione di caricamento address riporta lo costante (in alcuni casi offset) 2.9

24 Esempio: lw $t0, 32($s3) Esempio istruzione formato I: Nome campo Op Rs Rt Address Dimensione 6 bit 5 bit 5 bit 16 bit Lw $t0, 32($s3) Con il formato I oltre che alle istruzioni di trasferimento vengono descritte anche tutte le istruzioni con operandi immediati e operazioni di salto condizionato. Quest ultime possono avere un offset maggiore dei 16 bit, che consente il formato I, quindi una valida alternativa consiste nello specificare un registro il cui valore deve essere sommato all indirizzo di salto permettendo così di raggiungere 32 bit. Il registro da usare è il program counter che contiene l indirizzo dell istruzione corrente e quindi può saltare fino a una distanza di ± 2 15 istruzioni rispetto alle istruzioni in esecuzione. Siccome in quasi tutti i cicli e i costrutti di if, in cui i salti condizionati vengono usati, l etichetta a cui salto è tipicamente un numero di istruzioni minore di 2 16 parole, il program counter è la scelta ideale Formato di tipo J Il terzo tipo di formato di istruzioni (formato J) è il formato usato per le istruzioni di salto incondizionato. Op Address 6 bit 26 bit In questo caso i campi hanno il seguente significato: Op indica il tipo di operazione Address riporta una parte (26 bit su 32) dell indirizzo assoluto di destinazione del salto L assemblatore sostituisce l etichetta con i 28 bit meno significativi traslati a destra di 2 (divisione per 4 per calcolare l indirizzo di parola) per ottenere 26 bit; in pratica elimina i due zero finali e si amplia lo spazio di salto tra zero e 2 28 byte (ossia 2 26 word). I 26 bit del campo indirizzo rappresentano un indirizzo di parola. Quindi corrispondono a un indirizzo di byte composto da 28 bit; poiché il registro PC è composto da 32 bit si verifica che l istruzione jump rimpiazza solo i 28 bit meno significati del PC lasciando inalterati i rimanenti quattro bit più significativi. 2.10

25 Nome campo Op Address Dimensione 6 bit 26 bit j

26

27 LEZIONE 3 Assembly MIPS (parte seconda)

28

29 3.1 LA MOLTIPLICAZIONE Come è noto effettuando l operazione di moltiplicazione tra due numeri binari rappresentati su n bit, in generale sono necessari 2n bit per rappresentare il risultato [1]. Nel MIPS tutti i registri utilizzati hanno una dimensione di 32 bit; moltiplicando il contenuto di due registri da 32 bit per rappresentare correttamente il risultato sono quindi necessari 64 bit. Il risultato della moltiplicazione viene posto sempre in due registri dedicati (special porpouse) da 32 bit ciascuno, denominati Hi e Lo in grado di contenere il prodotto su 64 bit. L istruzione MIPS per effettuare la moltiplicazione è mult (multiply). Esempio: mult $2, $3 #calcola il prodotto tra il contenuto dei registri $2 e $3 e il risultato si trova nei registri Hi e Lo. In particolare il registro Hi contiene i 32 bit più significativi del prodotto, Lo i 32 bit meno significativi (Figura 3.1). $2 mult HI LO $3 32 bit 64 bit Figura 3.1. L istruzione mult. Per eseguire la moltiplicazione tra numeri senza segno possiamo utilizzare multu (multiply unsigned). Il prodotto inserito nei registri Hi e Lo può essere recuperato con le istruzioni mfhi (move from hi) e mflo (move from lo). Esempio: mfhi $4 #trasferisce nel registro $4 il contenuto di Hi. mfhi $5 #trasferisce nel registro $5 il contenuto di Lo (Figura 3.2). HI LO $4 $5 Figura 3.2. Le istruzioni mfhi e mflo. 3.1

30 3.2 LA DIVISIONE LA DIVISIONE TRA DUE NUMERI PUÒ ESSERE EFFETTUATA IN MIPS UTILIZZANDO L ISTRUZIONE DIV (DIVIDE). Dividendo e divisore sono contenuti in registri da 32 bit e, analogamente a quanto accade per la moltiplicazione, dopo l esecuzione dell istruzione div il risultato della divisione si trova in due registri Hi e Lo che contengono rispettivamente il resto e il quoziente. Esempio: div $2,$3 #effettua la divisione tra il contenuto del registro $2 e il contenuto del registro $3; il quoziente si trova nel registro Lo, il resto nel registro Hi (Figura 3.3). $2 % HI $4 / 32 bit 32 bit LO Figura 3.3. L istruzione div. Il contenuto dei registri Hi e Lo può essere recuperato in modo analogo a quanto abbiamo visto per la moltiplicazione. 3.3 LE COSTANTI L utilizzo delle costanti ricorre spesso nelle operazioni usate comunemente in MIPS [1]. Utilizzando le sole istruzioni che abbiamo incontrato fino ad adesso tutte le volte che abbiamo bisogno di una piccola costante dovremmo fare un ulteriore accesso alla memoria. La costante zero viene utilizzata molto frequentemente, quindi ad essa è addirittura riservato un registro indicato con $zero. Per evitare ulteriori accessi alla memoria possiamo inserire le costanti direttamente nelle istruzioni e velocizzare così la loro esecuzione. Per inserire le costanti all interno dell istruzione è necessario utilizzare il formato-i (vedi capitolo 2); come abbiamo già visto in questo tipo di formato sono disponibili 16 bit per memorizzare la costante. Istruzioni che contengono costanti al loro interno vengono dette immediate. Esempio: addi $t1, $t1, 5 #addizione immediata tra in contenuto di $t1 e la costante

31 A questa istruzione corrisponde il seguente codice macchina: op rs rt immediate bit 5 bit 5 bit 16 bit Figura 3.4. Esempio di istruzione addi. Altri esempi di istruzioni immediate sono: slti $t0, $s0, 3 #confronto tra il contenuto di $s0 e la costante 3; andi $s0, $s1, 10 #and logico tra $s1 e 10; ori $s0, $s1, 4 #or logico tra $s1 e 4. Se le costanti assumono valori elevati e non possono essere rappresentate su 16 bit possiamo caricare costanti di 32 bit nei registri utilizzando la combinazione di due diverse istruzioni. Esempio: Vogliamo caricare la costante corrispondente al codice binario Usiamo le istruzioni lui e ori: lui $t0, #load upper immediate carica i 16 bit più significativi della costante nel registro $t0 e mette a zero i 16 bit meno significativi; ori $t0, #or immediate permette di caricare i 16 bit meno significativi della costante nel registro lasciando inalterati i 16 bit più significativi. $t lui $t ori Figura 3.5. Le istruzioni lui e ori. 3.3

32 3.4 ISTRUZIONI PER LA MANIPOLAZIONE DI STRINGHE Nella maggior parte dei calcolatori i caratteri vengono rappresentati su 8 bit (1 byte) attraverso la codifica ASCII [1]. Poiché l elaborazione dei caratteri è un operazione ricorrente, il MIPS prevede due istruzioni per trattare i byte: lb (load byte) che preleva dalla memoria un byte e lo salva negli 8 bit meno significativi di un registro, e sb (store byte) che prende gli 8 bit meno significativi di un registro e li mette in memoria. Esempio: Supponiamo di avere in memoria una word di 32 bit memorizzata a partire dall indirizzo che si trova in $4; ricordando che una variabile di tipo char occupa 1byte, utilizzando lb e sb otteniamo: $ 0 1 a n a n-1 a n-2 a n-3 a 1 a 0 Figura 3.6. Le istruzioni lb e sb. Solitamente i caratteri sono raggruppati in stringhe. Una stringa può essere rappresentata in vari modi: 1) la lunghezza della stringa può essere indicata dal primo elemento; N Stringa 2) alla stringa possono essere associate due variabili: una che contiene la stringa stessa, e una variabile di appoggio che ne contiene la lunghezza; Stringa N 3) l ultimo elemento della stringa può essere un carattere particolare che ne indica la fine. Stringa 0 Il linguaggio C utilizza quest ultimo metodo utilizzando come carattere di fine stringa un byte di valore

33 3.5 ISTRUZIONI LOGICHE Tabella 3.1. Le istruzioni logiche. Istruzione Esempio Significato Commento Formato and and $1, $2, $3 $1 = $2 & $3 AND logico R or or $1, $2, $3 $1 = $2 $3 OR logico R xor xor $1, $2, $3 $1 = $2 $3 XOR logico R nor nor $1, $2, $3 $1 = ~($2 $3) NOR logico R and immediate andi $1, $2, 10 $1 = $2 & 10 AND logico con costante I or immediate ori $1, $2, 10 $1 = $2 10 Or logico con constante I xor immediate xori $1, $2, 10 $1 = ~$2 & ~10 XOR logico con costante I shift left logical sll $1, $2, 10 $1 = $2 << 10 Shift logico sx di una quantità costante I shift right logical srl $1, $2, 10 $1 = $2 >> 10 Shift logico dx di una quantità costante I shift right arithm. sra $1, $2, 10 $1 = $2 >> 10 Shift aritmetico dx di una quantità costante shift left logical sllv $1, $2, $3 $1 = $2 << $3 Shift logico sx di una quantità variabile R shift right logical srlv $1, $2, $3 $1 = $2 >> $3 Shift logico dx di una quantità variabile R shift right arithm. srav $1, $2, $3 $1 = $2 >> $3 Shiftr aritmetico dx di una quantità variabile I R Lo shift logico (destro/sinistro) coinvolge tutti i bit, mentre lo shift aritmetico lascia inalterato il bit più significativo. Esempio: srl $1, $1, 1 #effettua lo shift logico a destra (1 posizione) del contenuto del registro $1; il bit meno significativo si perde. $ 0 1 a n a n-1 a n-2 a n-3 a 1 a 0 Figura 3.7. Funzionamento dello shift logico a destra. In generale shiftando verso destra di n posizioni, vengono persi gli n bit meno significativi. Esempio: sll $1,$1,1 #effettua lo shift logico a sinistra (1posizione) del contenuto del registro $1; il bit più significativo viene perso. 3.5

34 $ 1 a n a n-1 a n-2 a n-3 a 1 a 0 0 Figura 3.8. Funzionamento dello shift logico a sinistra. Effettuando lo shift logico a sinistra di n posizioni, gli n meno significativi vengono posti a zero, mentre gli n bit più significativi si perdono. Esempio: sra $1,$1,1 #effettua lo shift aritmetico a destra (1 posizione) del contenuto del registro $1, lasciando inalterato il bit più significativo; anche in questo caso il bit meno significativo si perde. $ 1 a n a n-1 a n-2 a n-3 a 1 a 0 Figura 3.9. Funzionamento dello shift aritmetico a destra. Lo shift aritmetico a sinistra non viene utilizzato, perchè coincide con lo shift logico (sll). 3.6 ISTRUZIONI CHE TRADUCONO I PUNTATORI DEL C Analizziamo un semplice programma C che fa uso di puntatori e il codice MIPS corrispondente. Supponiamo che alle variabili siano associati i seguenti registri: z $7, p $8, c $9. typedef struct tabletag { int i; char *cp, c; }table; table z[20] ; table *p ; char c ; Il programma C definisce la struttura " table" i cui campi sono: un intero (32 bit), un puntatore a char (32 bit) e un char (8 bit). Un elemento di tipo table occupa quindi in totale 9 byte. p= &z[4] addi $1, $7, 36 #calcola l indirizzo di z[4] (base + offset) sw $1, 0($8) #salva l indirizzo calcolato c= p->c ; lb $2, 8($8) #preleva il campo c (1 byte) dalla struttura puntata da p sb $2, 0($9) #salva il campo prelevato nel registro corrispondente a c

35 3.7 MODI DI INDIRIZZAMENTO MIPS I diversi modi con cui si può esprimere un indirizzo di memoria vengono chiamati modi di indirizzamento [1][7]. Elenchiamo di seguito i modi di indirizzamento utilizzati in MIPS. Nel seguito indicheremo con A l indirizzo effettivo di memoria a cui ci riferiamo poiché, come vedremo, questo può essere diverso dall indirizzo che troviamo nell istruzione. Il modo in cui A viene calcolato differenzia un modo di indirizzamento dall altro Register Addressing Nel Register Addressing (indirizzamento tramite registro) gli operandi si trovano nei registri; questo modo di indirizzamento è usato dalle istruzioni in formato-r. L indirizzo effettivo è dato da: A = $(rs) dove rs indica il numero del registro all interno del set di registri. op rs rt rd shamt funct Figura Register addressing. Registro Istruzioni: add, addu, sub, subu, mult, multu, div, divu, and, or, sll, slt, sltu, mfhi, mflo, jr Immediate Addressing Nel modo di indirizzamento immediato l operando è una costante specificata nell istruzione, come abbiamo già visto nel paragrafo dedicato alle costanti. Il modo di indirizzamento immediato è utilizzato nelle istruzioni in formato-i. In questo caso l indirizzo effettivo sarà quindi uguale a quello scritto nel campo address dell istruzione in formato-i: A = I (dove I è il contenuto del campo address) op rs rt immediate Figura Immediate addressing. Istruzioni: addi, addiu, andi, ori, slti, sltiu, lui Base Addressing Nell indirizzamento tramite base, l operando si trova in una locazione di memoria individuata dalla somma del contenuto di un registro e di una costante specificata nell istruzione. L indirizzo effettivo è: 3.7

36 A = I + <contenuto del registro indicato in rs> Il registro da utilizzare viene indicato nell istruzione stessa. Questo modo di indirizzamento è usato per esempio nelle istruzioni lw e sw, in cui l indirizzo degli operandi è dato dalla somma tra l indirizzo di base e l offset; per esempio lw $t0 32($s2) indica che l indirizzo di base è contenuto nel registro $s2 e l offset da sommare è 32 (contenuto nel campo address). L offset è rappresentato in complemento a due (e varia tra e 32767). op rs rt address Memoria Registro + byte halfword word Figura Base addressing. Istruzioni: lw, lh, lb, lbu, sw, sh, sb PC-relative Addressing (base + index) Il modo di indirizzamento relativo al program counter è stato introdotto per ovviare ad un problema relativo all istruzione di salto condizionato (Branch). L istruzione Branch fa uso del formato-i, riservando quindi 16 bit al campo indirizzo. In base a questa considerazione nessun programma potrebbe avere una lunghezza superiore a 2 16 poiché in caso contrario l indirizzo a cui si deve saltare nella Branch non potrebbe essere contenuto nel campo di 16 bit. Poiché questa condizione è molto restrittiva possiamo usare un alternativa che consiste nell utilizzo di un registro il cui valore deve essere sommato all indirizzo specificato nell istruzione di salto. A questo scopo viene utilizzato il registro PC (program counter) che contiene l indirizzo dell istruzione corrente. Solitamente nei salti condizionati ci si sposta ad istruzioni vicine; utilizzando il PC siamo in grado di spostarci fino ad una distanza di ±2 15 istruzioni rispetto all istruzione corrente. Solitamente si fa in modo che il PC punti all istruzione successiva a quella in esecuzione; ricordando che le istruzioni sono tutte a 32 bit e quindi si trovano in memoria ad indirizzi sempre multipli di 4, l istruzione successiva a quella in esecuzione si trova all indirizzo PC+4. Quindi l indirizzo effettivo di salto sarà dato da: A = PC I = PC *I dove I è il contenuto del campo address dell istruzione (che può essere positivo o negativo) e rappresenta la distanza dell indirizzo a cui si deve saltare in termini di word. L indirizzo PCrelative indica cioè il numero di parole che separano l istruzione successiva a quella corrente 3.8

37 dall istruzione a cui si salta. Nell espressione I rappresenta questa stessa distanza in termini di byte. Poiché I è rappresentato su 16 bit, I sarà rappresentato su 18 bit, quindi il campo effettivo in cui possiamo spostarci sarà op rs rt address PC + 4 x 4 + Memoria Word Figura PC-relative addressing. Istruzioni: beq, bne Pseudodirect Addressing Se dobbiamo effettuare salti su un campo più ampio di 2 18 possiamo utilizzare l istruzione Jump. Consideriamo quindi l istruzione di salto non condizionato Jump: essa utilizza il formato-j in cui 6 bit vengono impiegati per il codice operativo e i restanti 26 per il campo indirizzo. Il modo di indirizzamento pseudo-diretto viene utilizzato per impiegare al meglio i 26 bit riservati all indirizzo. In questo caso l indirizzo effettivo di salto è dato da: A = (PC <31 28>, 0 <27...0> ) + I = (PC <31 28>, 0 <27...0> ) + 4*I Anche in questo caso il campo address viene in pratica esteso di 2 bit, poiché I è rappresentato su 28 bit. L ampiezza massima del salto sarà quindi L indirizzo effettivo viene ottenuto concatenando I con i 4 bit più significativi del program counter. op address bit Memoria PC 32 bit Memoria Word 4 bit Figura Pseudodirect addressing. Istruzioni: j,jal. 3.9

38 3.8 LINGUAGGIO ASSEMBLY E LINGUAGGIO MACCHINA Il linguaggio Assembly fornisce una rappresentazione simbolica della codifica binaria usata dal calcolatore, detta linguaggio macchina; l Assembly è più semplice da leggere e da scrivere rispetto al linguaggio macchina poiché utilizza simboli invece di bit [reference 1]. Inoltre l Assembly permette di utilizzare pseudoistruzioni, ovvero istruzioni che non fanno propriamente parte del linguaggio simbolico, ma che facilitano la scrittura dei programmi. Come abbiamo visto nel corso della trattazione, vi sono differenze tra le istruzioni scritte in Assembly e le corrispondenti stringhe di bit in linguaggio macchina. Esempio: Analizziamo l istruzione add e il relativo codice macchina. add $t2, $t0, $t1 op rs rt rd shamt funct Figura Codice macchina relativo all istruzione add. In Assembly la destinazione è il primo operando, mentre in linguaggio macchina si trova nel quarto campo; a livello di linguaggio macchina l istruzione add viene rappresentata con il codice operativo 0 e il codice funzione 32. Un vantaggio che l Assembly offre rispetto ai linguaggi di alto livello è la possibilità di velocizzare l esecuzione e minimizzare l occupazione di memoria dei programmi. In quest ottica di ottimizzazione delle prestazioni è quindi importante sapere quali sono le istruzioni reali che si nascondono dietro al linguaggio simbolico Assembly. 3.9 CONVENZIONI PER I REGISTRI MIPS Tabella 3.2. I registri MIPS. 0 zero costante 0 16 s0 variabili salvate quando 1 at riservata all'assemblatore si richiamano procedure 2 v0 valori dei risultati e 23 s7 3 v1 valutazione di espressioni 24 t8 altre variabili temporanee 4 a0 parametri utilizzati nella 25 t9 5 a1 chiamata delle procedure 26 k0 riservati al sistema operativo 6 a2 27 k1 7 a3 28 gp global pointer 8 t0 variabili temporanee 29 sp stack pointer 30 fp frame pointer 15 t7 31 ra indirizzo di ritorno 3.10

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

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici ISA di riferimento: MIPS Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello funzionale Livello logico Livello circuitale Livello del layout istruzioni macchina, ISA Reti logiche:

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

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

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

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

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

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

Dettagli

L architettura del calcolatore (Prima parte)

L architettura del calcolatore (Prima parte) L architettura del calcolatore (Prima parte) Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Calcolatore astratto e reale Concetto astratto

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

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

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1 La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori

Dettagli

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4 ARCHITETTURE MICROPROGRAMMATE. 1 Necessità di un architettura microprogrammata 1 Cos è un architettura microprogrammata? 4 Struttura di una microistruzione. 5 Esempi di microprogrammi 9 Esempio 1 9 Esempio

Dettagli

Manualino minimale MIPS

Manualino minimale MIPS Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Manualino minimale MIPS Marco Tarini Operazioni aritmetiche Nome Comando completo Esempio Sintassi (es) Significato Semantica

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

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

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

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

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore Il processore Architettura dell elaboratore Il processore La esegue istruzioni in linguaggio macchina In modo sequenziale e ciclico (ciclo macchina o ciclo ) Effettuando operazioni di lettura delle istruzioni

Dettagli

La macchina programmata Instruction Set Architecture (1)

La macchina programmata Instruction Set Architecture (1) Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione Istruzioni macchina Outline Componenti di un

Dettagli

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

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

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Calcolatore: sottosistemi Processore o CPU (Central Processing

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 tipo registro-registro (load/store)

Architettura di tipo registro-registro (load/store) Caratteristiche principali dell architettura del processore MIPS E un architettura RISC (Reduced Instruction Set Computer) Esegue soltanto istruzioni con un ciclo base ridotto, cioè costituito da poche

Dettagli

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

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello): Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande

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 linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin ORGANIZZAZIONE DEL CALCOLATORE:

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

Introduzione all'architettura dei Calcolatori

Introduzione all'architettura dei Calcolatori Introduzione all'architettura dei Calcolatori Introduzione Che cos è un calcolatore? Come funziona un calcolatore? è possibile rispondere a queste domande in molti modi, ciascuno relativo a un diverso

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

Architettura di un calcolatore: introduzione

Architettura di un calcolatore: introduzione Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Hazard sul controllo. Sommario

Hazard sul controllo. Sommario Hazard sul controllo Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Università degli Studi di Milano Riferimento al Patterson: 4.7, 4.8 1/28 Sommario Riorganizzazione

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

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann Elementi di Informatica e Programmazione Architettura del calcolatore (prima parte) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Problema:

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Architettura dei calcolatori e sistemi operativi Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Sommario Il processo di assemblaggio Il collegatore (linker) 2 Assemblatore: traduzione

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

Calcolo numerico e programmazione Architettura dei calcolatori

Calcolo numerico e programmazione Architettura dei calcolatori Calcolo numerico e programmazione Architettura dei calcolatori Tullio Facchinetti 30 marzo 2012 08:57 http://robot.unipv.it/toolleeo Il calcolatore tre funzionalità essenziali:

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

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

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica prof. ing. Corrado Santoro Schema a blocchi di una CPU Arithmetic Logic Unit Control Unit Register File BUS Control

Dettagli

CALCOLATORI ELETTRONICI

CALCOLATORI ELETTRONICI CALCOLATORI ELETTRONICI Giuseppe Coldani Tel. 0382 985678 e-mail: giuseppe.coldani@unipv.it giuseppe.coldani@tin.it orario delle lezioni: Mercoledì 14.00-18.00 orario di ricevimento: su appuntamento 1

Dettagli

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica Il presente esame scritto deve essere svolto in forma individuale in un tempo massimo di 60 minuti dalla sua

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

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

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo

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

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

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata Lezione n.6 Unità di controllo microprogrammata 1 Sommario Unità di controllo microprogrammata Ottimizzazione, per ottimizzare lo spazio di memoria occupato Il moltiplicatore binario Esempio di architettura

Dettagli

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

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 3 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

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

Dettagli

Lezione 8. La macchina universale

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

Dettagli

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Istruzioni Significato add $t1, $t2, $t3 $t1 = $t2 + $t3 sub $t1, $t2, $t3 $t1 = $t2 - $t3 mult $t1, $t2 Hi,Lo = $t1*$t2 div

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

INFORMATICA 1 L. Mezzalira

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

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

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

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

Dettagli

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati Il Livello LogicoDigitale i Blocchi funzionali combinatori Circuiti integrati Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati

Dettagli

Il Processore: i registri

Il Processore: i registri Il Processore: i registri Il processore contiene al suo interno un certo numero di registri (unità di memoria estremamente veloci) Le dimensioni di un registro sono di pochi byte (4, 8) I registri contengono

Dettagli

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.

Dettagli

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

PROVA INTRACORSO TRACCIA A Pagina 1 di 6 PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento

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

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

Più processori uguale più velocità?

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

Dettagli

La Macchina Virtuale

La Macchina Virtuale Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2008/2009 Docente: ing. Salvatore

Dettagli

Informatica - A.A. 2010/11

Informatica - A.A. 2010/11 Ripasso lezione precedente Facoltà di Medicina Veterinaria Corso di laurea in Tutela e benessere animale Corso Integrato: Matematica, Statistica e Informatica Modulo: Informatica Esercizio: Convertire

Dettagli

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch. Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE Comunicazione importante dalla prossima settimana, la lezione del venerdì si terrà: dalle 15:00 alle 17.15 in aula 311 l orario

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

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

Dettagli

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

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

Von Neumann. John Von Neumann (1903-1957)

Von Neumann. John Von Neumann (1903-1957) Linguaggio macchina Von Neumann John Von Neumann (1903-1957) Inventore dell EDVAC (Electronic Discrete Variables AutomaFc Computer), la prima macchina digitale programmabile tramite un soiware basata su

Dettagli

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio

Dettagli

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

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

Dettagli

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler Indice Linguaggio ad alto livello, linguagio assembler e linguaggio macchina Il linguaggio assembler MIPS: istruzioni aritmetiche, di trasferimento dati e di salto Conversione linguaggio assembler in linguaggio

Dettagli

Laboratorio di Informatica di Base Archivi e Basi di Dati

Laboratorio di Informatica di Base Archivi e Basi di Dati Laboratorio di Informatica di Base Archivi e Basi di Dati Introduzione La memorizzazione dei dati è un aspetto molto importante dell informatica Oggi, mediante i computer, è possibile memorizzare e modificare

Dettagli

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

Calcolatori Elettronici. La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo Calcolatori Elettronici La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo La pipeline CRITICITÀ SUI DATI Calcolatori Elettronici - Pipeline (2) - Slide 2 L. Tarantino

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici La Pipeline Superpipeline Pipeline superscalare Schedulazione dinamica della pipeline Processori reali: l architettura Intel e la pipeline dell AMD Opteron X4 Ricapitolando Con

Dettagli

Organizzazione della memoria

Organizzazione della memoria Memorizzazione dati La fase di codifica permette di esprimere qualsiasi informazione (numeri, testo, immagini, ecc) come stringhe di bit: Es: di immagine 00001001100110010010001100110010011001010010100010

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

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

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

Dettagli

Gestione della memoria centrale

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

Dettagli

CALCOLATORI ELETTRONICI 31 marzo 2015

CALCOLATORI ELETTRONICI 31 marzo 2015 CALCOLATORI ELETTRONICI 31 marzo 2015 NOME: COGNOME: MATR: Scrivere nome, cognome e matricola chiaramente in caratteri maiuscoli a stampa 1. Tradurre in linguaggio assembly MIPS il seguente frammento di

Dettagli

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

La codifica delle informazioni

La codifica delle informazioni La codifica delle informazioni Bit e byte Come già visto l elaboratore è in grado di rappresentare informazioni al proprio interno solo utilizzando cifre binarie (bit) che solitamente vengono manipolate

Dettagli

Lezione 3: Architettura del calcolatore

Lezione 3: Architettura del calcolatore Lezione 3: Architettura del calcolatore Architettura di Von Neumann BUS, CPU e Memoria centrale Ciclo di esecuzione delle istruzioni Architettura del calcolatore Il calcolatore è: uno strumento programmabile

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica I componenti di un Sistema di elaborazione. Memoria centrale Memorizza : istruzioni dati In forma BINARIA : 10001010101000110101... È costituita da una serie di CHIP disposti su una scheda elettronica

Dettagli

ARCHITETTURA DELL ELABORATORE

ARCHITETTURA DELL ELABORATORE 1 ISTITUTO DI ISTRUZIONE SUPERIORE ANGIOY ARCHITETTURA DELL ELABORATORE Prof. G. Ciaschetti 1. Tipi di computer Nella vita di tutti giorni, abbiamo a che fare con tanti tipi di computer, da piccoli o piccolissimi

Dettagli

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

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

Dettagli

CALCOLATORI ELETTRONICI 29 giugno 2011

CALCOLATORI ELETTRONICI 29 giugno 2011 CALCOLATORI ELETTRONICI 29 giugno 2011 NOME: COGNOME: MATR: Scrivere chiaramente in caratteri maiuscoli a stampa 1. Si implementi per mezzo di una PLA la funzione combinatoria (a 3 ingressi e due uscite)

Dettagli

Strutturazione logica dei dati: i file

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

Dettagli