Università Politecnica delle Marche

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università Politecnica delle Marche"

Transcript

1 Università Politecnica delle Marche Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e dell Automazione Studi e sperimentazioni su processori ad architettura ARM: Relatore: Prof. Aldo Franco Dragoni Tesi di Laurea di: Anno Accademico

2 Sommario 1. INTRODUZIONE OBIETTIVI HARDWARE E SOFTWARE STRUTTURA DELL ELABORATO SISTEMI EMBEDDED E ARM SISTEMI EMBEDDED EVOLUZIONE DI ARM LA DIFFUSIONE DI ARM I partners di ARM Ltd I principali prodotti sul mercato ARCHITETTURA ARM LA LOGICA RISC LA PIPELINE ORGANIZZAZIONE DELLA CACHE GESTIONE DELLA MEMORIA Organizzazione della memoria Traduzione degli indirizzi di memoria virtuale Controllo dell accesso TIPI DI DATI DI ARM TIPI DI OPERAZIONI Codici di condizione MODI DI INDIRIZZAMENTO DI ARM Indirizzamento load/store Indirizzamento di istruzioni di processamento dati Istruzioni di salto Indirizzamento load/store multiplo IL PROCESSORE ARM Organizzazione del processore Modi del processore Organizzazione dei registri Registri a uso generale Registri di stato del programma Gestione degli Interrupt MARVELL KIRKWOOD 88F CARATTERISTICHE DELLA SCHEDA Componenti di sistema Schema a blocchi dell hardware

3 2 Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: 5. SET DI ISTRUZIONI THUMB (MANUALE PARTE 1) INTRODUZIONE AL SET DI ISTRUZIONI THUMB Attivare lo stato Thumb ECCEZIONI CODIFICA DEL SET ISTRUZIONI Istruzioni varie ISTRUZIONI DI SALTO Salto condizionato Salto incondizionato Salto con scambio ISTRUZIONI DATA-PROCESSING Istruzioni che operano sui registri bassi Istruzioni che operano sui registri alti Formati ISTRUZIONI LOAD AND STORE REGISTER Formati ISTRUZIONI LOAD AND STORE MULTIPLE Formati Esempi ISTRUZIONI PER LA GENERAZIONE DI ECCEZIONI Codifica delle istruzioni SPAZIO INDEFINITO DELLE ISTRUZIONI ISTRUZIONI THUMB (MANUALE PARTE 2) LISTA IN ORDINE ALFABETICO DELLE ISTRUZIONI THUMB Note generali ADC ADD(1) ADD(2) ADD(3) ADD(4) ADD(5) ADD(6) ADD(7) AND ASR(1) ASR(2) B(1) B(2) BIC BKPT... 70

4 BL, BLX(1) BLX(2) BX CMN CMP(1) CMP(2) CMP(3) CPS CPY EOR LDMIA LDR(1) LDR(2) LDR(3) LDR(4) LDRB(1) LDRB(2) LDRH(1) LDRH(2) LDRSB LDRSH LSL(1) LSL(2) LSR(1) LSR(2) MOV(1) MOV(2) MOV(3) MUL MVN NEG ORR POP PUSH REV REV REVSH ROR SBC SETEND

5 4 Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: STMIA STR(1) STR(2) STR(3) STRB(1) STRB(2) STRH(1) STRH(2) SUB(1) SUB(2) SUB(3) SUB(4) SWI SXTB SXTH TST UXTB UXTH ISTRUZIONI THUMB E VERSIONE ARCHITETTURA TEST IMPOSTAZIONI TEST PROGRAMMA TEST: FATTORIALE Codice C Codice Assembler Arm Thumb Thumb con ottimizzazione O Thumb con ottimizzazione O Thumb con ottimizzazione O Tempi di esecuzione PROGRAMMA TEST: FATTORI PRIMI Codice C Codice Assembler Arm Thumb Thumb con ottimizzazione O Thumb con ottimizzazione O Thumb con ottimizzazione O Tempi di esecuzione PROGRAMMA TEST: SERIE DI FIBONACCI

6 Codice C Codice Assembler Arm Thumb Thumb con ottimizzazione O Thumb con ottimizzazione O Thumb con ottimizzazione O Tempi di esecuzione CONCLUSIONI BIBLIOGRAFIA E SITOGRAFIA

7 1. Introduzione Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: In questa tesi andrò a descrivere il funzionamento dell architettura dei processori ARM, soffermandomi soprattutto sulla parte che riguarda. La scelta di questo argomento è dettata dalla grade espansione, negli ultimi tempi, di questa particolare architettura, adatta per sistemi embedded e per dispositivi portatili, entrambi in grande crescita. Nella stragrande maggioranza dei cellulari (smartphone), in molti televisori, nei dispositivi di rete, nelle centraline delle automobili e in molti altri dispositivi sono presenti processori con questa architettura Obiettivi L obiettivo principale è quello di creare un manuale completo, in italiano, sull architettura ARMv5TE, per poi poterlo sfruttare in futuro per sperimentazioni e studi sul processore disponibile in laboratorio con questa architettura. Come è possibile dedurre dal titolo, mi sono occupato della parte del manuale che parla del set di istruzioni Thumb. Un altro obiettivo è sicuramente quello di studiare questo particolare tipo di architettura che sfrutta set di istruzioni RISC (Reduced Instruction Set Computer). Dopo aver completato la parte di manuale e studiato l architettura, il terzo obiettivo è quello di fare dei test con dei programmi compilati appositamente con istruzioni del set Thumb sul processore disponibile in laboratorio e valutarne i risultati Hardware e Software L hardware utilizzato è un dispositivo embedded, uno Sheevaplug computer, nel quale sono presenti alcune porte di I/O ed è dotato del processore Marvell Kirkwood 88F6281 basato sull architettura ARMv5TE. Nel dispositivo gira un sistema operativo Linux Debian. Per fare i test ho scritto dei semplici programmi in C e li ho compilati con il compilatore da linea di comando nella shell di Linux. Il compilatore che ho scelto è Sourcery G++ Lite for ARM GNU/Linux Struttura dell elaborato Dopo questa introduzione, l elaborato è costituito da una prima parte in cui si parla in generale dei sistemi SoC (System on a Chip) e in particolare di quelli che utilizzano l architettura ARM. Poi c è una descrizione dell architettura ARM in generale, nella quale si parla della logica RISC, della pipeline e dell organizzazione e gestione delle risorse del processore. Nel quarto capitolo si parla della scheda disponibile in laboratorio che monta il processore con architettura ARM (Marvell Kirkwood 88F6281). Nel quinto capitolo vengono riportati i programmi di test e i risultati ottenuti. Infine nel sesto capitolo ho allegato la parte di manuale sulle istruzioni Thumb. 6

8 2. Sistemi embedded e ARM L architettura ARM ha origine da principi di progetto di tipo RISC e viene utilizzata in sistemi embedded. Vedremo più avanti in dettaglio l architettura RISC dell ARM. In questo paragrafo si spiegherà il concetto di sistema embedded, per poi rivolgersi ai sistemi ARM Sistemi embedded Quando parliamo di un sistema ebedded ci riferiamo all utilizzo di elettronica e software all interno di un prodotto, in contrapposizione a sistemi a utilizzo generale (general-purpose), come i desktop o i portatili. Una definizione di sistema embedded è la seguente: Una combinazione di hardware e software, ed eventualmente di altre componenti meccaniche, progettata per assolvere ad un compito specifico. In molti casi i sistemi embedded sono parte di un sistema o di un prodotto più grande, come nel caso del sistema ABS di un automobile. Tabella 2.1 Esempi di sistemi embedded e loro mercato Mercato Automobilistico Elettronica di consumo Controllo industriale Medicina Office automation Dispositivo Sistema di accensione Controllo del motore Sistema frenante Televisione digitale e analogica DVD, videoregistratori, decoder Dispositivi palmari (PDA) Elettrodomestici (frigoriferi, tostapane, microonde) Giochi Telefoni, cellulari, cercapersone Macchine fotografiche GPS Robotica e sistemi di controllo per la produzione industriale Sensori Pompe a infusione Macchine per dialisi Dispositivi protesici Monitor cardiaci Fax Fotocopiatrici Stampanti Monitor Scanner 7

9 I sistemi embedded sono di gran lunga più diffusi dei computer general-purpose, perché vengono utilizzati in una vastissima gamma di applicazioni (Tabella 2.1). Tali sistemi possono avere una grande varietà di requisiti e vincoli, come nei casi seguenti: sistemi piccoli e grandi implicano vincoli differenti in termini di costi di produzione, e quindi necessità diverse per quanto riguarda ottimizzazione e riutilizzo; sono soggetti a vincoli molto restrittivi e a combinazioni diverse di requisiti di qualità, ad esempio in termini di sicurezza, affidabilità, risposta in tempo reale, flessibilità e rispetto delle normative vigenti; tempo di vita da breve a lungo; diverse combinazioni ambientali in termini di radiazioni, vibrazioni e umidità, solo per citare alcuni esempi; Figura 2.1 Possibile organizzazione di un sistema embedded. differenti caratteristiche delle applicazioni, che possono essere statiche o dinamiche, lente o veloci, rivolte al calcolo o ad un utilizzo intensivo dell interfaccia, e/o combinazioni di queste; diversi modelli di computazione (solitamente chiamati sistemi ibridi) che variano da sistemi a eventi discreti a sistemi con dinamiche a tempo continuo. 8

10 Spesso i sistemi embedded sono strettamente relazionati al contesto di utilizzo. Questo può dare origine a vincoli di real-time imposti dalla necessità di interagire con il contesto. I vincoli, come la velocità di movimento, la precisione delle misurazioni e il periodo di tempo richiesti impongono una precisa temporizzazione delle operazioni da eseguire. Se più attività devono essere svolte simultaneamente, i vincoli real-time saranno più restrittivi. La figura 2.1 mostra in termini generali l organizzazione di un sistema embedded. Oltre a processore e memoria vi è un certo numero di elementi che normalmente non sono utilizzati nei computer desktop o portatili: una varietà di interfacce che permette al sistema di misurare, manipolare e interagire con l ambiente esterno; l interfaccia con l utente può essere molto semplice, come una spia lampeggiante, ma anche molto complicata, come una vista robotica in tempo reale; la porta per la diagnostica è utilizzabile per esaminare il sistema che viene controllato, non solo per la diagnosi del computer; dispositivi logici programmabili (FPGA, Field Programmable Gate Array), specifici per applicazioni (ASIC, Application Specific Integrated Circuit) o hardware non digitale sono utilizzabili per migliorare prestazioni e sicurezza; il software ha spesso funzionalità prefissate ed è specifico per una data applicazione Evoluzione di ARM ARM è una famiglia di microprocessori e microcontrollori di tipo RISC, progettati da ARM Inc. di Cambridge (Inghilterra). ARM progetta processori e architetture multicore e da in licenza i progetti ad aziende esterne che li producono. I chip ARM sono processori ad alta velocità famosi per le piccole dimensioni e la bassa potenza richiesta. Gli ARM vengono usati in maniera massiccia in computer palmari (PDA) e altri dispositivi portatili, inclusi videogiochi, telefoni e un ampia varietà di prodotti di consumo. Ad esempio i ben noti dispositivi Apple iphone e ipod contengono dei chip ARM. L architettura ARM è probabilmente la più diffusa nei sistemi embedded e dunque i chip ARM sono anche i processori più diffusi al mondo. Le origini della tecnologia ARM vanno ricondotte alla inglese Acorn Computers. All inizio degli anni 80 Acorn stipulò un accordo con British Broadcasting Corporation (BBC) per lo sviluppo di un nuovo microprocessore per il progetto BBC Computer Literacy. Il successo di questo accordo permise alla Acorn di continuare nello sviluppo e progettare il primo processore RISC commerciale, l Acorn RISC Machine (ARM). La prima versione, ARM1, divenne operativa nel 1985 e fu utilizzata per ricerche interne e sviluppo, oltre ad essere utilizzata come coprocessore nel progetto per la BBC. Sempre nel 1985, Acorn rilasciò l ARM2, un processore delle stesse dimensioni del precedente, ma più veloce e con più funzioni. Ulteriori migliorie furono realizzate con il processore ARM3 (1989). Durante questo periodo Acorn affidò alla società VLSI Technology la fabbricazione dei suoi chip. VLSI poteva commercializzare i chip, ed ebbe un grande successo nel convincere altre aziende a montare processori ARM nei loro prodotti, in particolare come processori embedded. Il progetto ARM andava incontro alla domanda commerciale di processori per applicazioni embedded ad alte prestazioni, bassi consumi, piccole dimensioni e costi contenuti, ma ulteriori sviluppi andavano oltre le capacità di Acorn. Fu così creata una nuova società, la ARM Ltd., che vedeva la partecipazione di Acorn, VLSI e Apple Computer. Acorn RISC Machine fu rinominata Advanced RISC Machine (La società abbandonò la denominazione Advanced RISC Machine alla fine degli anni 90. Al giorno d oggi tale architettura è conosciuta semplicemente come ARM). Il primo 9

11 prodotto offerto dalla nuova società fu ARM6, una versione migliorata di ARM3. In seguito, la società introdusse diverse nuova famiglie di processori, con sempre più numerose funzionalità e migliori prestazioni. La Tabella 2.2 mostra alcune caratteristiche delle diverse famiglie di architetture ARM. I numeri della tabella sono solamente indicativi; i valori reali variano a seconda delle differenti implementazioni. Tabella 2.2 Evoluzione di ARM Famiglia Funzionalità rilevanti Cache MIPS MHz ARM1 32-bit RISC No ARM2 Istruzioni di moltiplicazione e scambio; unità No 7 12 MHz di gestione della memoria, grafica e processore I/O integrati ARM3 Primo utilizzo della cache del processore 4 KB unificata MHz ARM6 Primo a supportare indirizzi a 32 bit; unità 4 KB unificata MHz floating point (virgola mobile) ARM7 SoC (System on a Chip) integrato 8 KB unificata MHz ARM8 Pipeline a 5 stadi; predizione statica dei salti 8 KB unificata MHz ARM9 16 KB / 16 KB MHz ARM9E Istruzioni DSP migliorate 16 KB / 16 KB MHz ARM10E Pipeline a 6 stadi 32 KB / 32 KB ARM11 Pipeline a 9 stadi Variabile MHz Cortex Pipeline superscalare a 13 stadi Variabile GHz XScale Processore per le applicazioni: pipeline a 7 stadi 32 KB / 32 KB L1 512 KB L ,25 GHz Figura 2.2 Evoluzione delle famiglie di processori 10

12 Conformemente a quanto descritto sul sito web di ARM (arm.com), i processori ARM sono progettati per soddisfare tre diverse categorie di sistemi: sistemi embedded real-time: sistemi di memorizzazione, comparto automobilistico e industriale, applicazioni di rete; piattaforme applicative: dispositivi che utilizzano sistemi operativi come Linux, Palm OS, Symbian OS, e Windows CE per applicazioni wireless e di intrattenimento digitale; applicazioni per la sicurezza: smart card, SIM card e terminali Bancomat La diffusione di ARM Come abbiamo già detto i processori con architettura ARM sono i più diffusi al mondo grazie al rapporto qualità-costo davvero eccellente. Abbiamo anche detto che ARM realizza i progetti delle varie architetture e poi le cede in licenza ai produttori, andiamo quindi a vedere i prteners di ARM Ltd. e i principali prodotti sul mercato che utilizzano questi processori I partners di ARM Ltd. Di seguito la lista dei principali membri della ARM Connected Community. Tabella 2.3 Licenze della famiglia di processori Cortex Processor Cortex-A15 Cortex-A9 Cortex-A8 Cortex-A5 Cortex-R4(F) Cortex-M4 Cortex-M3 Cortex-M0 Selection of Public Licensees Texas Instruments, ST-Ericsson, nvidia, Samsung Electronics Broadcom Corporation, NEC Electronics, nvidia, STMicroelectronics, Texas Instruments, Toshiba, Mindspeed Technologies Broadcom Corporation, Freescale Semiconductor, Matsushita, Samsung Electronics, STMicroelectronics, Texas Instruments, PMC-Sierra, 3Dlabs Cambridge Silicon Radio Broadcom Corporation, Texas Instruments, Toshiba, Infineon NXP, STMicroelectronics, Texas Instruments, Freescale Accent Srl, Actel Corporation, Broadcom Corporation, Cypress Semiconductor, Ember, Energy Micro, Fujitsu, NXP, Fuzhou Rockchip Electronics CO. Ltd., STMicroelectronics, Texas Instruments, Toshiba, Zilog, Austriamicrosystems, Chungbuk Technopark, NXP, Triad Semiconductor, Melfas 11

13 Tabella 2.4 Licenze della famiglia di processori ARM11 Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Processor ARM11 MPCore ARM1176JZ(F)-S ARM1156T2(F)- S ARM1136J(F)-S Public Licensees Intel Corporation, NEC Electronics, Netronome, NVIDIA, PMC Sierra, Renesas, Sarnoff Broadcom Corporation, Infineon Technologies AG, Matsushita, NEC Electronics,NXP,Renesas, Sunplus, Texas Instruments, Toshiba Comsys, LSI Logic, NEC Electronics Accent, Broadcom Corporation, Ceroma, esilicon Corporation, Freescale Semiconductor,LSI Logic, Matsushita, Mindspeed, NEC Electronics, Qualcomm, Renesas,STMicroelectronics, Texas Instruments, Toshiba Tabella 2.5 Licenze della famiglia di processori ARM9 Accent Alcatel Alchip All Winner Technology (Holding) Ltd Altera Analog Devices Inc. ARCA Atheros Communications Atmel Corporation Austriamicrosystems Avago Technologies Avalink Incorporated Beken Corporation Broadcom Corporation Cambridge Silicon Radio Capital Semiconductor Ltd Chongqing Chongyou IT Cirrus Logic Conexant Systems Inc. Datang Microelectronics Technology esilicon Corporation Faraday TechFocus Enhancements Freescale Semiconductor Fujitsu GCT Semiconductor Global Unichip Corporation Huawei Technologies ICP Infineon Technologies AG Ironkey Incorporated Kawasaki Microelectronics Key ASIC Leadcore Technology Co Ltd LSI Logic Marvell Semiconductor Mediatek Inc Micrel Mindspeed Technologies Inc. Moschip Semiconductor Mtekvision NationZ Technologies Inc NEC Electronics Neo Magic Corporation NXP Nuvoton Technology Corporation NVidia Corporation OKI Panasonic Parrot PulseLink Qualcomm Quanta Computer Inc Renesas Technology RF Micro Devices Rohm Samsung Electronics Sandisk Sanyo Electric Co Ltd Shanghai Jade Technologies Sharp Corporation Sierra Wireless SA Skyworks Solutions Inc. Socle Technology Corp Sony STMicroelectronics Standard Microsystems Telechips Texas Instruments Toshiba TSMC Verisilicon Wisair Zoran Corporation 12

14 I principali prodotti sul mercato Motorola Atrix 4G Nvidia Tegra2 (dual-core Cortex-A9) LG Optimus Quantum Qualcomm QSD8650 (ARMv7 instruction set) GREE Water-Cooled Centrifugal Chiller (condizionatore indusatriale) NXP LPC21xx MCU(ARM7TDMI) Sony Ericsson Xperia Play Qualcomm QSD8550 ARMv7 Motorola Xoom Nvidia Tegra 2 (Cortex-A9) Itron OpenWay CENTRON Smart Meter (misuratore consumo energetico) Accent ASMgrid Platform - Integrated ARM Cortex-M3 Web Tube (Samsung Smart TV) Samsung (Cortex-A8) Olivetti Olipad 100 Nvidia Tegra 2 (Cortex-A9) 13

15 Apple ipod Nano Dual ARM7TDMI HP Deskjet 5940 ARM946E-S 14

16 3. Architettura ARM Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: L architettura ARM si è evoluta a un punto tale che supporta implementazioni su un ampio spettro di punti di prestazioni. Sono stati prodotti più di due miliardi di pezzi, il che stabilisce l architettura come quella dominante in vari segmenti di mercato. La semplicità dell architettura dei processori ARM ha portato nel corso del tempo a implementazioni sempre più piccole, queste implementazioni permettono ai dispositivi un consumo energetico molto basso. Dimensioni, prestazioni e consumi molto bassi rimangono punti chiave nello sviluppo dell architettura ARM. La maggior parte delle versioni dell architettura supporta due tipi di set di istruzioni: un set codificato a 32 bit che viene chiamato ARM instructions set e un set codificato a 16 bit chiamato Thumb instructions set. Entrambi sono Reduced Instruction Set Computer (RISC) e comprendo le caratteristiche tipiche delle architetture RISC La logica RISC A differenza di come è specificato nella definizione (Reduced Instruction Set Computer), RISC non significa tanto avere a che fare con meno istruzioni, ma bensì con una architettura circuitale che sia molto semplice nel consentire di ottenere maggiore compattezza, velocità di operazione ed esecuzione delle istruzioni in un singolo colpo di clock. La lunghezza delle istruzioni viene mantenuta costante in modo da garantire una prevedibilità nei tempi di esecuzione delle istruzioni. La semplice filosofia che sta dietro l architettura RISC è riassunta dalla figura 3.1. Abbiamo una unità centrale, il processore, che è la parte intelligente del sistema. Un insieme di registri consente di movimentare i dati all interno della CPU. I dati e le istruzioni vengono caricati dalla memoria. Non si possono eseguire dunque operazioni dirette sui dati in memoria, ma solo tra registri interni. Le principali caratteristiche delle architetture RISC sono: Figura 3.1 Filosofia architettura RISC un file di registro grande e uniforme; un architettura load/store, poiché le operazioni sui dati avvengono nei registri interni al processore e non direttamente in memoria; modalità di indirizzamento semplice, con tutti gli indirizzi determinati solamente dal contenuto dei registri e dei campi delle istruzioni; campi delle istruzioni uniformi e di lunghezza fissa, per semplificare la decodifica dell istruzione. In più l architettura ARM, fornisce: modalità di indirizzamento con auto-incremento e auto-decremento per ottimizzare i cicli; istruzioni di load e store multiplo per massimizzare il throughput dei dati; 15

17 Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: esecuzione condizionata per quasi tutte le istruzioni per massimizzare il throughput di esecuzione. I miglioramenti all architettura RISC di base, permettono ai processori ARM di raggiungere un buon bilanciamento tra alte prestazioni, dimensioni del codice, basso consumo e grandezza del chip La pipeline Nei RISC ogni istruzione è organizzata in modo che le azioni vengano svolte seguendo sempre una medesima successione, eventualmente lasciano un buco, o NOP, se quel particolare passo non serve. Questo fa si che si possa evitare di aspettare che un istruzione sia completamente eseguita, prima di iniziare la successiva. Mentre un istruzione è in corso di esecuzione, se ne potrebbe iniziare un altra. Questo approccio si dice organizzazione a pipeline. Nell ARM7 classicamente si adotta una pipeline a 3 livelli: Figura 3.2 Organizzazione pipeline L organizzazione a pipeline deve essere realizzata all atto della realizzazione hardware del dispositivo. Può dare buoni benefici, occorre però fare attenzione perché l organizzazione a pipeline può portare a colli di bottiglia, se non accuratamente progettata Organizzazione della cache L organizzazione della cache nei processori ARM ha seguito l evoluzione dell architettura della famiglia ARM, rispecchiando la continua ricerca di prestazioni che è la forza motrice dei progettisti di processori. La Tabella 3.1 mostra questa evoluzione. Il modello ARM7 utilizzava una cache unificata, mentre tutti i modelli seguenti utilizzano una cache per le istruzioni e una per i dati. Tutti i progetti ARM utilizzano cache set-associative, con diversi gradi di associatività e dimensioni di linea. Gli ARM con cache dotati di MMU (Memory Management Unit) utilizzano una cache logica nelle famiglie da ARM7 a ARM10, inclusi i processori Intel StrongARM e Intel Xscale. La famiglia ARM11 utilizza una cache fisica. La differenza tra cache logica e cache fisica è illustrata in figura

18 Tabella 3.1 Caratteristiche della cache di ARM Core Tipo di cache Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Dimensione della cache (KB) Dimensione della linea di cache (parole) Associatività Locazione Dimensione del buffer di scrittura (parole) ARM720T Unificata vie Logica 8 ARM920T Separata 16/16 D/I 8 64 vie Logica 16 ARM926EJ-S Separata 4-128/4-128 D/I 8 4 vie Logica 16 ARM1022E Separata 16/16 D/I 8 64 vie Logica 16 ARM1026EJ-S Separata 4-128/4-128 D/I 8 4 vie Logica 8 Intel Separata 16/16 D/I 4 32 vie Logica 32 StrongARM Intel Xscale Separata 32/32 D/I 8 32 vie Logica 32 ARM1136JF-S Separata 4-64/4-64 D/I 8 4 vie Fisica 32 Un interessante funzionalità dell architettura ARM è l utilizzo di un piccolo buffer di scrittura FIFO (First In First Out) per migliorare le prestazioni di scrittura in memoria. Il buffer di scrittura è interposto tra la cache e la memoria principale e consiste in un insieme di indirizzi e un insieme di dati. Il buffer è piccolo rispetto alla cache e può immagazzinare fino a quattro indirizzi. Tipicamente il buffer di scrittura è abilitato per tutta la memoria principale, anche se può essere selettivamente disabilitato a livello di pagina. La figura 3.4 mostra le relazioni tra buffer di scrittura, cache e memoria principale. Figura 3.4 Organizzazione della cache di ARM e del buffer di scrittura Figura 3.3 Cache fisica e logica Vediamo come funziona il buffer di scrittura. Quando il processore scrive in una zona abilitata all utilizzo del buffer, il dato è posto nel buffer ad una velocità pari a quella del processore e il processore continua la sua esecuzione. La scrittura ha luogo quando il dato presente nella cache è ricopiato nella memoria principale. Il dato da scrivere viene trasferito dalla cache al buffer di scrittura. Il buffer di scrittura realizza quindi la scrittura esterna in parallelo. Se il buffer di scrittura è pieno (sia perché è stato raggiunto il massimo numero di parole nel buffer, sia perché non ci sono più posizioni per nuovi indirizzi) il processore viene bloccato finché non c è spazio sufficiente nel buffer. Mentre vengono eseguite operazioni che non 17

19 coinvolgono scritture, il buffer di scrittura continua a scrivere sulla memoria principale fino a quando si svuota completamente. I dati scritti nel buffer di scrittura non sono disponibili per la lettura nella cache fino a quando non sono stati trasferiti dal buffer alla memoria centrale. Questa è la ragione principale per cui il buffer è così piccolo. Anche in questo modo, a meno che una grande porzione di programma esegua operazioni di scrittura, il buffer di scrittura riesce a migliorare le prestazioni Gestione della memoria ARM offre un architettura di memoria virtuale versatile adattabile alle esigenze dei progettisti di sistemi embedded Organizzazione della memoria La figura 3.5 fornisce una visione d insieme dell hardware di gestione della memoria in ARM. Il dispositivo di traduzione della memoria virtuale utilizza uno o due livelli di tabelle per la traduzione da indirizzi virtuali a indirizzi fisici. Il buffer TLB (Translation Lookaside Buffer) è una cache di voci della tabella delle pagine recenti. Se una voce è disponibile nel buffer TLB l indirizzo fisico per un operazione di lettura o scrittura è mandato alla memoria principale direttamente dal TLB. I dati vengono scambiati tra la memoria principale e il processore attraverso la cache. Se si utilizza una organizzazione logica della cache (Figura 3.3a) il processore ARM, in caso di miss, passa l indirizzo alla cache ma anche al TLB. Se si utilizza un organizzazione fisica della cache (Figura 3.3b) tocca al TLB passare l indirizzo fisico alla cache. Figura 3.5 Il sistema di memoria ARM. Le voci della tabella di traduzione includono anche i bit di controllo di accesso, che determinano se un dato processo può accadere a una data porzione di memoria. Se l accesso viene negato, il dispositivo di controllo di accesso invia un segnale di insuccesso al processore ARM. 18

20 Traduzione degli indirizzi di memoria virtuale Il processore ARM supporta l accesso alla memoria basto su sezioni o su pagine: Supersezioni (opzionale): consistono in blocchi di memoria principale da 16 MB Sezioni: consistono in blocchi di memoria principale da 1 MB Pagine grandi: consistono in blocchi di memoria principale da 64 KB Pagine piccole: consistono in blocchi di memoria principale da 4 KB Il supporto di sezioni e supersezioni permette di indirizzare una grande porzione di memoria utilizzando un unica voce nel TLB. Meccanismi aggiuntivi di controllo di accesso vengono estesi alle pagine piccole e sottopagine di 1 KB e dalle pagine grandi a sottopagine di 16 KB. La tabella di traduzione presente nella memoria principale ha due livelli: Tabella di primo livello: mantiene le traduzioni di sezioni e sottosezioni e i puntatori alla tabella di secondo livello Tabella di secondo livello: mantiene la traduzione di pagine piccole e grandi L unità di gestione della memoria (MMU) traduce indirizzi virtuali generati dal processore in indirizzi fisici per l accesso alla memoria principale; inoltre, ricava e controlla i permessi di accesso. La traduzione viene effettuata in seguito ad un miss di TLB e inizia da un fetch di primo livello. Un indirizzamento a sezione richiede soltanto fetch di primo livello, mentre un indirizzamento a pagine richiede anche fetch di secondo livello. Figura 3.6 Traduzione di indirizzi di memoria virtuale per pagine piccole in ARM. La figura 3.6 mostra il processo di traduzione di indirizzi di secondo livello per pagine piccole. È presente una tabella delle pagine di livello 1 (L1) con 4K entry di 32 bit. Ogni entry di L1 punta a 19

21 una tabella delle pagine di livello 2 (L2) con 255 entry di 32 bit. Ogni entry di L2 punta ad una pagina di 4 KB nella memoria principale. L indirizzo virtuale di 32 bit è interpretato come segue. I 12 bit più significativi sono un indice nella tabella L1. I successivi 8 bit sono un indice nella tabella L2 appropriata. I primi 12 bit meno significativi indicano un byte della pagina appropriata in memoria centrale. Per le pagine grandi viene utilizzata una procedura di lookup a due pagine simile a questa. Per le sezioni e le supersezioni è richiesta la ricerca nella sola tabella di pagina L Controllo dell accesso In ogni entry sono presenti due bit chiamati AP che controllano l accesso di un dato processo ad una regione di memoria. Un area di memoria può essere marcata come non accessibile, accessibile in sola lettura o in lettura e scrittura. Inoltre l area di memoria può essere designata per soli accessi privilegiati, riservata al sistema operativo e non disponibile per le applicazioni. ARM utilizza anche il concetto di dominio, una collezione di sezioni e/o pagine con permessi particolari di accesso. L architettura ARM prevede 16 domini. L impiego di domini permette a più processori di utilizzare la stessa tabella di traduzione e contemporaneamente mantenere alcune protezioni gli uni dagli altri. Ogni entry di tabella delle pagine e ogni entry TLB contengono un campo che specifica a quale dominio appartiene un entry. Un campo di 2 bit nel registro Domain Access Control controlla l accesso a ogni dominio. Ogni campo permette di abilitare o disabilitare molto rapidamente l accesso a un intero dominio in modo che intere aree di memoria possano essere trasferite dentro e fuori la memoria virtuale in maniera molto efficiente. Ci sono due tipi di accesso al dominio: Client: utenti dei domini (che eseguono programmi e accedono ai dati) che devono osservare i permessi di accesso alle singole sezioni e/o pagine che compongono il dominio Manager: controllano il comportamento del dominio (le pagine e le sezioni correnti nel dominio e l accesso al dominio) ed evitano i permessi di accesso per le entry in tale dominio Un programma può essere un client di certi domini, un manager di altri e non avere accesso ai rimanenti. Ciò permette una protezione molto difficile della memoria per programmi che accedono a diverse risorse di memoria Tipi di dati di ARM L ARM può trattare tipi di dato da 8 bit (byte), da 16 bit (mezza parola) e da 32 bit (parola). In genere, l accesso alla mezza parola deve essere allineato alla mezza parola, mentre gli accessi di parola devono essere allineati alla parola. In caso di accesso non allineato, l architettura prevede tre alternative: Caso di deault: - L indirizzo viene considerato troncato, i bit di indirizzo *1:0+ corrispondono a zero per gli accessi di parola e il bit di indirizzo [0] corrisponde a zero per gli accessi di mezza parola. - Le istruzioni ARM di caricamento della singola parola prevedono, dal punto di vista dell architettura, di traslare a destra dei dati allineati alla parola uno, due o tre byte a seconda del valore dei due bit di indirizzo meno significativi, trasferiti da un indirizzo non allineato. Controllo di allineamento: se è definito un bit di controllo appropriato, un segnale indica un errore di allineamento dovuto a un tentativo di accesso non allineato. 20

22 Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Accesso non allineato: in questo caso il processore utilizza uno o più accessi di memoria per generare il trasferimento richiesto di byte adiacenti, in modo trasparente al programmatore. Per tutti e tre i tipi di dati (byte, mezza parola e parola) è possibile un interpretazione senza segno, in cui il valore rappresenta un intero senza segno, non negativo. I tre tipi di dato possono essere utilizzati per interi con segno in complemento a due. La maggior parte delle implementazioni per ARM non fornisce hardware in virgola mobile, a vantaggio di spazio e potenza. Se in tali processori dovesse rendersi necessaria un aritmetica in virgola mobile, questa dovrà essere realizzata dal software. L ARM può prevedere un coprocessore opzionale in virgola mobile per i tipi di dato in virgola mobile a precisione singola e doppia definiti nello standard IEEE Tipi di operazioni L architettura ARM mette a disposizione un ampio repertorio di tipi di operazioni: Istruzioni di load e store: nell architettura ARM unicamente le istruzioni di load e store accedono alle locazioni di memoria. Le istruzioni aritmetiche e logiche vengono eseguite sui registri e i valori immediati sono codificati nell istruzione. Questa è una caratteristica della progettazione RISC. L architettura ARM ha due tipi generici di istruzione che spostano il valore di un registro, o di due, da e verso la memoria: (1) carica o registra una parola di 32 bit oppure un byte a 8 bit senza segno e (2) carica o registra una mezza parola di 16 bit senza segno e carica ed estende il segno di una mezza parola a 16 bit oppure di un byte ad 8 bit. Istruzioni di salto: ARM supporta un istruzione di salto condizionato in avanti o indietro fino a 32 MB. Dal momento che il program counter è uno dei registri generici (R15), si può ottenere un salto anche scrivendo un valore in R15. È possibile eseguire una chiamata di procedura tramite una variante dell istruzione di salto standard. Oltre a eseguire un salto, l istruzione BL, di salto con link (Branch with Link), scrive l indirizzo dell istruzione successiva al salto (indirizzo di ritorno) nel registro LR (R14). I salti vengono determinati da un campo di condizione a 4 bit nell istruzione. Istruzioni di processamento dati: tale categoria include istruzioni logiche (AND, OR, XOR), la somma e la sottrazione, e istruzioni di verifica e di confronto. Istruzioni di moltiplicazione: le istruzioni di moltiplicazione di interi operano su parole e mezze parole e possono produrre risultati normali o lunghi: ad esempio, un istruzione di moltiplicazione che utilizza due operandi a 32 bit e produce un risultato a 64 bit. Istruzioni parallele di somma e sottrazione: oltre alle normali istruzioni dei due tipi precedenti, c è un insieme di istruzioni parallele di somma e sottrazione nelle quali parti degli operandi vengono elaborate in parallelo. Ad esempio, ADD16 somma le parti alte delle mezze parole di due registri per formare la parte alta della mezza parola del risultato e somma le parti basse delle mezze parole degli stessi due registri per formare la parte bassa della mezza parola del risultato. Queste istruzioni sono utili nelle applicazioni grafiche, come le istruzioni MMX della famiglia x86. Istruzioni di estensione: ci sono varie istruzioni per spacchettare i dati, che grazie al segno oppure allo zero possono estendere i byte in mezze parole o parole e le mezze parole in parole. Istruzioni di accesso al registro di stato: ARM offre la capacità di leggere, oltre che di scrivere, porzioni del registro di stato. 21

23 Codici di condizione Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: L architettura ARM definisce quattro flag di condizione memorizzati nel registro di stato del programma: N, Z, C e V (Negative, Zero, Carry e overflow). I quattro flag citati costituiscono un codice di condizione in ARM. La tabella 3.2 mostra le combinazioni delle condizioni, previste per l esecuzione condizionale. Due inconsueti aspetti dell utilizzo dei codici di condizione in ARM sono: 1. Tutte le istruzioni, non solo quelle di salto condizionato, includono un campo codice di condizione. Quindi, virtualmente, tutte le istruzioni potrebbero essere eseguite in modalità condizionale. Ogni combinazione delle impostazioni di flag, fatta eccezione per 1110 e 1111, in un campo del codice di condizione dell istruzione significa che quell istruzione sarà eseguita solo se si verifica la condizione richiesta. 2. Tutte le istruzioni di elaborazione dati (aritmetiche e logiche) includono un bit S, quindi in caso di aggiornamento dell istruzione la condizione genera un segnale. Tabella 3.2 Condizioni di ARM per l esecuzione condizionale delle istruzioni Codice Simbolo Condizione da verificare Commenti 0000 EQ Z = 1 Uguale 0001 NE Z = 0 Diverso 0010 CS/HS C = 1 Imposta riporto/senza segno più alto o uguale 0011 CC/LO C = 0 Cancella riporto/senza segno più basso 0100 MI N = 1 Meno/negativo 0101 PL N = 0 Più/positivo oppure zero 0110 VS V = 1 Overflow 0111 VC V = 0 No overflow 1000 HI C = 1 AND Z = 0 Senza segno più alto 1001 LS C = 0 OR Z = 1 Senza segno più basso oppure uguale 1010 GE N = V [(N = 1 AND V = 1) OR (N = 0 AND V = 0)] Con segno maggiore o uguale 1011 LT N V [(N = 1 AND V = 0) OR (N = 0 AND V = 1)] Con segno minore 1100 GT (Z = 0) AND (N = V) Con segno maggiore 1101 LE (Z = 1) OR (N V) Con segno minore o uguale 1110 AL - Sempre (non condizionato) Questa istruzione può essere eseguita solo in modalità non condizionata L utilizzo dell esecuzione condizionale e dell impostazione condizionale per i flag di condizione è di aiuto alla progettazione di programmi più corti, che utilizzano meno memoria. D altro canto, tutte le istruzioni includono 4 bit per il codice condizionale. Si ha quindi un compromesso con il fatto che non tutti i bit delle istruzioni a 32 bit sono utilizzabili per codice operativo e operandi. Tale compromesso può essere considerato ragionevole, proprio perché ARM è un architettura RISC che si affida pesantemente all indirizzamento dei registri. 22

24 3.7. Modi di indirizzamento di ARM A differenza delle CISC, le macchine RISC utilizzano in genere modi di indirizzamento semplici e relativamente diretti. L architettura ARM si discosta un po da questa tradizione, offrendo un insieme piuttosto ricco di modi di indirizzamento. Tali modi vengono classificati in maniera più conveniente in relazione al tipo di istruzione Indirizzamento load/store Le istruzioni di load e store sono le uniche che fanno riferimento alla memoria, in modo indiretto, tramite un registro base sommato a uno spiazzamento. Figura 3.7 Metodi di indicizzazione di ARM 23

25 Le alternative di indicizzazione sono le seguenti tre (Figura 3.7): Spiazzamento (offset). Questo indirizzamento non prevede indicizzazione. Lo spiazzamento viene sommato o sottratto al valore del registro base per formare l indirizzo di memoria. La figura 3.7 mostra un esempio di questo metodo con l istruzione STRB r0, *r1, #12+, che è l istruzione di memorizzazione di un byte. In questo caso l indirizzo di base è nel registro r1 e lo spiazzamento è il valore immediato 12. L indirizzo risultante (base più spiazzamento) è la locazione di memoria in cui registrare il byte meno significativo di r0. Preindicizzazione (preindex). L indirizzo di memoria è formato come nel caso precedente, ma viene riscritto anche nel registro base. In altre parole, il valore del registro base viene incrementato o decrementato del valore dello spiazzamento. La figura 3.7b illustra questo metodo con l istruzione STRB r0, *r1, #12+!. Il punto esclamativo sta proprio a indicare la preindicizzazione. Postindicizzazione (postindex). L indirizzo di memoria è il valore del registro base. Uno spiazzamento viene aggiunto o sottratto al valore del registro base. La figura 3.7c illustra questo metodo con l istruzione STRB r0, *r1+, #12. Si noti come ciò a cui ARM fa riferimento come registro base si comporta poi da registro indice per la preindicizzazione e la postindicizzazione. Il valore di spiazzamento può essere sia un valore immediato contenuto nell istruzione sia il valore di un altro registro. Se il valore di spiazzamento è un registro, è disponibile un altra caratteristica utile: l indirizzamento di registro scalare. Il valore nel registro di spiazzamento viene scalato da uno degli operatori di shift: shift logico a sinistra, shift logico a destra, shift aritmetico a destra, rotazione verso destra oppure rotazione estesa verso destra (che include il bit di riporto nella rotazione). L entità di uno shift è specificata come valore immediato nell istruzione Indirizzamento di istruzioni di processamento dati Queste istruzioni possono utilizzare l indirizzamento con registro o quello immediato. Nel primo caso, il valore di uno degli operandi può essere scalato utilizzando uno degli operatori di shift definiti nel paragrafo precedente Istruzioni di salto Per queste istruzioni esiste solo l indirizzamento immediato. L istruzione di salto contiene un valore a 24 bit. Per il calcolo degli indirizzi il valore viene spostato a sinistra di 2 bit, in modo che l indirizzo sia allineato come una parola. In questo modo, la gamma degli indirizzi effettivi raggiungibili si estende a ±32 MB dal program counter Indirizzamento load/store multiplo Le istruzioni di caricamento multiplo portano dati dalla memoria a un sottoinsieme dei registri a uso generale (o a tutti). Le istruzioni di store multiplo memorizzano i dati di un sottoinsieme dei registri a uso generale (o di tutti). La lista dei registri da caricare e salvare viene specificata in un campo a 16 bit dell istruzione dove ogni bit corrisponde a uno dei 16 registri. Queste modalità di indirizzamento producono una sequenza di indirizzi di memoria. Il registro numericamente più basso viene salvato all indirizzo di memoria più basso, mentre il registro numericamente più alto verrà salvato all indirizzo più alto. I quattro tipi di indirizzamento utilizzati, rappresentati nella figura 3.8, sono: incremento successivo, incremento antecedente, decremento successivo e decremento antecedente. Un registro base specifica un indirizzo di memoria principale da dove i valori vengono prelevati oppure nei quali vengono salvati, in locazioni di parola ascendenti 24

26 (incremento) oppure discendenti (decremento). Tale incremento, o decremento, ha inizio prima oppure dopo il primo accesso alla memoria. Figura 3.8 Indirizzamento load/store multiplo in ARM Queste istruzioni sono utili per caricamenti o salvataggi in blocco, per le operazioni sulla pila e per le sequenze di uscita dalle procedure Il processore ARM ARM è essenzialmente un sistema RISC con le seguenti caratteristiche degne di nota. Una piccola schiera di registri uniformi, più di quelli che ci sono in alcuni sistemi RISC, ma meno di quelli che si trovano in molti sistemi CISC. Un modello load/store di elaborazione dati nel quale le istruzioni lavorano sugli operandi nei registri e non direttamente in memoria. Tutti i dati devono essere caricati nei registri prima di poter essere elaborati. Il risultato può essere utilizzato per ulteriori operazioni oppure essere salvato in memoria. Un set standard di istruzioni a 32 bit e un set di istruzioni Thumb a 16 bit. Per rendere ogni istruzione di elaborazione dati più flessibile è possibile preprocessare uno dei registri sorgente con uno shift o una rotazione. Per utilizzare in maniera più efficiente questa funzionalità esiste un unità aritmetico logica (ALU) separata e un unità shifter. Pochi modi di indirizzamento, determinati dai registri e dai campi dell istruzione. Non sono utilizzati indirizzamenti indiretti o indicizzati che coinvolgono valori in memoria. Per migliorare l esecuzione dei cicli nei programmi sono utilizzate modalità di auto incremento e auto decremento dell indirizzo. L esecuzione condizionale delle istruzioni riduce il numero delle istruzioni di salto condizionato, migliorando quindi l efficienza della pipeline, perché gli svuotamenti della pipeline vengono ridotti Organizzazione del processore L organizzazione del processore ARM varia notevolmente da un implementazione all altra, in particolare quando è basata su diverse versioni dell architettura ARM. È tuttavia utile presentare una versione generica e semplificata dell organizzazione, illustrata nella figura 3.9. Le frecce indicano il flusso dei dati. Ogni riquadro rappresenta un unità funzionale hardware o un unità di memorizzazione. 25

27 I dati vengono scambiati tra il processore e la memoria esterna attraverso il bus dati. Il valore trasferito può essere sia un dato (istruzione di load/store) sia il fetch di un istruzione. Le istruzioni prelevate passano attraverso un decodificatore prima di essere eseguite, sotto il controllo di un unità apposita. Quest ultima include la pipeline logica e fornisce i segnali di controllo (non mostrati nella figura) a tutte le unità hardware del processore. I dati vengono messi nel banco dei registri (a 32 bit). I byte e le mezze parole trattate come numeri in complemento a due sono estesi a 32 bit. Le istruzioni di elaborazione dei dati di ARM hanno tipicamente due registri sorgente, Rn e Rm, e un registro destinazione (o risultato), Rd. I valori dei registri sorgente vengono dati in pasto alla ALU o a un unità separata per le moltiplicazioni che usa registri aggiuntivi per l accumulo di risultati parziali. Il processore ARM incorpora anche un unità hardware che può shiftare o ruotare il valore di Rm prima che venga immesso nella ALU. Quest ultima operazione viene eseguita nei limiti del tempo di esecuzione dell istruzione e aumenta la potenza e la flessibilità di molte operazioni di processamento dati. Figura 3.9 Organizzazione semplificata di ARM 26

28 Modi del processore Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: È abbastanza comune che un processore supporti un numero ridotto di modi di utilizzo. Ad esempio, molti sistemi operativi utilizzano soltanto due modi: un modo utente e un modo kernel, dove quest ultimo è usato per l esecuzione di software di sistema dotato di privilegi. Contrariamente a quanto detto, la flessibilità dell architettura ARM permette ai sistemi operativi di utilizzare varie politiche di protezione. L architettura ARM supporta sette modi di esecuzione. La maggior parte dei programmi applicativi viene eseguita in modo utente (user mode). In questa modalità il programma in esecuzione non può accedere alle risorse protette del sistema e non può cambiare il modo, se non sollevando un eccezione. I restanti sei modi di utilizzo sono detti privilegiati. Questi modi sono utilizzati per eseguire software di sistema. I principali vantaggi nel definire così tanti modi privilegiati differenti sono due: 1. il sistema operativo può adattare l utilizzo del software di sistema a svariate circostanze; 2. alcuni registri vengono dedicati all utilizzo in ogni modo privilegiato, permettendo così rapidi cambi di contesto. I modi eccezione hanno accesso completo alle risorse di sistema e possono cambiare modo liberamente. Cinque dei sei modi privilegiati sono conosciuti come modi eccezione. È possibile entrare in queste modalità d uso quando si verifica una specifica eccezione. Ognuna di queste modalità ha dei registri dedicati che sostituiscono alcuni dei registri del modo utente e che sono utilizzati per evitare di compromettere informazioni di stato del modo utente quando si verifica un eccezione. I modi eccezione sono i seguenti. Modo supervisore (supervisor mode): il modo in cui opera di solito il sistema operativo. Si entra in questo modo quando il processore incontra un istruzione di interruzione software. Le interruzioni software sono un modo standard per invocare un servizio del sistema operativo sui processori ARM. Modo abort (abort mode): vi si entra in risposta a errori di memoria. Modo indefinito (undefined mode): vi si entra quando il processore tenta di eseguire un istruzione che non è supportata né dall unità principale intera né da uno dei coprocessori. Modo interrupt veloce (fast interrupt mode): vi si entra ogni volta che il processore riceve un segnale di interrupt dalla sorgente designata di interrupt veloce. Un interrupt veloce non può essere interrotto, ma può interrompere un normale interrupt. Modo interrupt: vi si entra quando il processore riceve un segnale di interrupt da una sorgente di interrupt (diversa dalla sorgente di interrupt veloce). Un interrupt può essere interrotto soltanto da un interrupt veloce. Il modo privilegiato che resta è il modo sistema (system mode). Questo modo utilizza gli stessi registri del modo utente e non è accessibile tramite alcuna eccezione. Il modo sistema è utilizzato per eseguire alcuni task privilegiati del sistema operativo. I task nel modo sistema possono essere interrotti da ognuno dei cinque modi eccezione Organizzazione dei registri La figura 3.10 illustra i registri ARM visibili all utente. Il processore ARM ha 37 registri da 32 bit in torale, classificati come segue: 31 registri definiti nel manuale come registri a uso generale, anche se alcuni, come il program counter, hanno compiti specifici; 27

29 sei registri di stato del programma. Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: I registri sono sistemati in banchi parzialmente sovrapposti. Il modo del processore determina quale banco è disponibile. Sono sempre disponibili 16 registri numerati e uno o due registri di stato del programma, per un totale di 17 o 18 registri visibili al software. La figura 3.10 va letta come segue: i registri da R0 a R7, il registro R15 (il program counter) e il registro di stato corrente del programma (CPSR) sono visibili e condivisi da tutti i modi; i registri da R8 a R12 sono condivisi da tutti i modi eccetto quello di interrupt veloce, che ha i suoi registri dedicati da R8_fiq a R12_fiq; tutti i modi eccezione hanno la propria versione dei registri R13 e R14; tutti i modi eccezione hanno un registro di stato del programma salvato (CPSR). Figura 3.10 Organizzazione dei registri in ARM Registri a uso generale Il registro R13 è normalmente usato come Stack Pointer ed è anche chiamato SP. Poiché ogni modo eccezione ha il suo registro R13, ogni modo eccezione può avere il suo stack dedicato. Il registro R14 è noto come registro link (LR) e viene utilizzato per mantenere gli indirizzi di ritorno da procedure e dal modo eccezione. Il registro R15 è il Program Counter (PC). 28

30 Registri di stato del programma Il registro CPSR è accessibile in tutti i modi del processore. Ogni modo del processore ha il suo registro SPSR dedicato, utilizzato per preservare il valore di CPSR quando si verifica l eccezione associata. I 16 bit più significativi di CPSR contengono dei flag visibili in modo utente, utilizzabili per condizionare il funzionamento del programma (Figura 3.11). I flag sono i seguenti. Flag di codice di condizione: i flag N, Z, C e V visti precedentemente. Flag Q: usato per indicare il verificarsi di un overflow e/o la saturazione in alcune istruzioni SIMD-oriented. Bit J: indica l utilizzo di speciali istruzioni a 8 bit, dette istruzioni Jazelle. Bit GE [3:0]: le istruzioni SIMD utilizzano i bit [19:16] come flag di maggiore o uguale (GE) per byte singoli o mezze parole del risultato. I 16 bit meno significativi di CPSR contengono flag di controllo di sistema che possono essere modificati soltanto quando il processore è in modo privilegiato. I campi sono i seguenti. Bit E: controlla il tipo di endian per i dati di load e store; viene ignorato per il fetch delle istruzioni. Bit di disabilitazione degli interrupt: il bit A, quando vale 1, disabilita gli abort per dati imprecisi; il bit I, quando vale 1, disabilita gli interrupt IRQ; il bit F, quando vale 1, disabilita gli interrupt FIQ. Bit T: indica se le istruzione devono essere interpretate come normali istruzioni o come istruzioni Thumb. Bit di modo: indicano il modo del processore Gestione degli Interrupt Come ogni processore il processore ARM possiede una funzione che gli permette di interrompere il programma in esecuzione per gestire condizioni di eccezione. Le eccezioni vengono generate da sorgenti interne o esterne per consentire al precessore la gestione di un evento. Lo stato del processore un attimo prima che si occupi dell eccezione viene di norma preservato in modo che l esecuzione del programma originale possa riprendere una volta che la routine di gestione dell eccezione è completata. È possibile che si presentino più eccezioni contemporaneamente. L architettura ARM ne supporta sette tipi. La tabella 3.3 elenca i tipi di eccezione e i modi di processore che vengono utilizzati per affrontare questi tipi. Quando si verifica un eccezione, viene forzata l esecuzione a partire da un indirizzo di memoria fissato dipendente dal tipo di eccezione. Questi indirizzi fissi sono chiamati vettore di eccezione. Se ci sono più interruzioni in attesa, queste vengono gestite in ordine di priorità. La tabella 3.3 elenca le eccezioni in ordine di priorità, dalla più alta alla più bassa. Quando si verifica un eccezione il processore blocca l esecuzione dell istruzione che segue quella corrente. Lo stato del processore viene salvato nel registro SPSR corrispondente al tipo di eccezione, in modo che l esecuzione del programma originale possa riprendere una volta che la routine di gestione dell eccezione è completata. L indirizzo dell istruzione che il processore stava per eseguire viene messo nel registro link del modo di processore appropriato. Per il ritorno dopo la gestione dell eccezione il registro SPSR viene spostato nel registro CPSR e il contenuto di R14 viene trasferito nel PC. 29

31 Tabella 3.3 Vettori di interrupt ARM Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Tipo di eccezione Modo Indirizzo normale Descrizione di entrata Reset Supervisore 0x Si verifica quando il sistema viene inizializzato. Abort di dati Abort 0x Si verifica quando si accede ad un indirizzo di memoria non valido, come nei casi in cui l indirizzo fisico di memoria non esiste o non si hanno i necessari permessi per accedere all indirizzo. FIQ (Interrupt veloce) FIQ 0x C Si verifica quando un dispositivo esterno attiva il pin FIQ del processore. Un interrupt non può essere interrotto se non da un interrupt veloce. FIQ è progettato per supportare trasferimento dati e applicazioni su canali e ha un numero di registri privati sufficiente a eliminare il bisogno di salvare i registri, permettendo in questo modo di minimizzare l overhead del cambio di contesto. L interrupt veloce non può essere interrotto. IRQ (Interrupt) IRQ 0x Si verifica quando un dispositivo esterno attiva il pin IRQ del processore. Un interrupt può essere interrotto soltanto da un interrupt veloce. Abort di prefetch Abort 0x C Si verifica quando un tentativo di fetch di un istruzione genera un errore di memoria. L eccezione viene sollevata quando l istruzione entra nello stadio di esecuzione della pipeline. Istruzioni indefinite Indefinito 0x Si verifica quando un istruzione che non fa parte del set di istruzioni raggiunge lo stadio di esecuzione della pipeline. Interrupt software Supervisore 0x È generalmente utilizzata per permettere a programmi in modalità utente di invocare il sistema operativo. Il programma utente esegue un interruzione SWI con un argomento che identifica la funzione che l utente vuole realizzare. 30

32 4. Marvell Kirkwood 88F6281 Come processore di test per provare i programmi compilati con le istruzioni Thumb, è stato usato un dispositivo presente in laboratorio che monta un processore con architettura ARM. Il dispositivo è uno Sheevaplug, cioè un plug computer progettato per consentire funzionalità di calcolo standard nel minor spazio possibile. Un plug computer è un piccolo server per l utilizzo in casa o in ufficio. Comparati al PC, i plug computer hanno costi minori, minori consumi, spesso non hanno la scheda video e sono pensati per stare accesi continuamente. Infatti i plug computer sono spesso racchiusi nei trasformatori stessi che convertono la corrente, il termine plug si riferisce al fatto che appaiono della stessa forma dei dispositivi plug and play. Il plug computer disponibile in laboratorio monta il processore Marvell Kirkwood aka Feroceon 88F6281 basato su architettura ARMv5TE 4.1. Caratteristiche della scheda Nella tabella 4.1 sono elencate le caratteristiche della scheda. Tabella 4.1 Caratteristiche del plug computer Caratteristiche Forma compatta del prodotto finale Piattaforma Open Source Alte prestazioni a bassi consumi Processore di classe GHz Benefici Adatto per test e prove iniziali Riduzione dei tempi di produzione Disponibile a basso costo per ogni sviluppatore interessato Disponibili diverse distribuzioni Linux Supporto della Community Ideale per applicazioni sempre attive Facilità di porting del software senza modifiche Esegue più applicazioni contemporaneamente Risposte veloci alle applicazioni interattive Accesso rapido ai dispositivi di memoria connessi via USB Componenti di sistema Sheeva CPU Core - Velocità di clock 1.2 GHz - Cache L1: 16 KB istruzioni + 16 KB dati - Cache L2: 256 KB Memoria - Ram: DDR2 400 MHz, bus 16 bit, 512 MB - Rom: NAND Flash Controller, bus 8 bit, 512 MB, boot diretto Alimentazione - Input: V AC/50-60 Hz 20 W Max. - Output: 5 V DC/3.0 A Max. Interfaccia di sviluppo 31

33 - Tavola di sviluppo del sistema - Interfacce JTAG e Console via USB - Espansione SDIO - Supporto JTAG OpenOCD via USB Certificati UL/CE/FCC I/O Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: - 1 x Gigabit Ethernet - 1 x USB 2.0 collegamento dispositivi di memorizzazione - 1 x USB 2.0 collegamento a PC per sviluppo - AC/DC 5 V In Schema a blocchi dell hardware Figura 4.1 Schema a blocchi dell hardware 32

34 5. Set di Istruzioni Thumb (Manuale Parte 1) In questo capitolo si introduce e si descrive come il Thumb usa il Modello Programmatori ARM. Il capitolo contiene le seguenti sezioni: Introduzione al Thumb Instruction Set Codifica del Set istruzioni Istruzioni di salto Istruzioni Data-processing Istruzioni Load and Store Register Istruzioni Load and Store Multiple Istruzioni per la generazione di eccezioni Spazio indefinito delle istruzioni 33

35 5.1. Introduzione al set di istruzioni Thumb Il set delle istruzioni Thumb è un subset ricodificato del set di istruzioni ARM. Il Thumb è pensato per aumentare le performance delle implementazioni ARM che usano un bus dati a 16-bit o anche più piccolo e per permettere una densità di codice migliore di quella fornita dal set di istruzioni ARM. La variante T dell architettura ARMv5 incorpora entrambi i set di istruzioni, sia quello ARM a 32-bit che quello Thumb a 16-bit. Ogni istruzione Thumb è codificata in 16 bits. Il supporto al Thumb è obbligatorio in ARMv6. Il Thumb non altera il modello basilare della programmazione dell architettura ARM. Presenta solamente un accesso limitato a questo modello. Tutte le istruzioni data-processing del Thumb operano su valori a 32-bit, e indirizzi a 32-bit sono prodotti sia dalle istruzioni data-processing sia dal fetch dell istruzione. Quando il processore sta eseguendo le istruzioni Thumb, sono disponibili 8 registri generici, da R0 a R7, i quali sono gli stessi registri fisici da R0 a R7 di quando esegue le istruzioni ARM. Alcune istruzioni Thumb accedono anche al Program Counter (in ARM è il registro 15), al Link Register (in ARM è il registro 14) e allo Stack Pointer (in ARM è il registro 13). Le altre istruzioni permettono un accesso limitato ai registri ARM da 8 a 15, i quali sono detti high registers. Quando R15 viene letto, il bit[0] è zero e i bits[31:1] contengono il PC. Quando R15 viene scritto, il bit[0] viene ignorato e i bits[31:1] vengono scritti nel PC. A seconda di come è usato, il valore del PC o è l indirizzo dell istruzione più 4 oppure è sconosciuto. L esecuzione in Thumb è flaggata dal bit T (bit*5+) nel registro CSPR (Current State Program Register): T = 0 T = 1 Nella fase di fetch vengono prelevate istruzioni a 32-bit (il PC viene incrementato di 4) e sono eseguite come istruzioni ARM. Nella fase di fetch vengono prelevate istruzioni a 16-bit (il PC viene incrementato di 2) e sono eseguite come istruzioni Thumb. In ARMv6 le istruzioni Thumb forniscono un accesso limitato al CPSR con l istruzione CPS. Non c è un accesso diretto ai registri SPRS. Versioni precedenti non forniscono un accesso diretto al CPSR mentre nel set ARM le istruzioni MSR ed MRS lo permettono Attivare lo stato Thumb L esecuzione Thumb è normalmente attivata dall esecuzione dell istruzione ARM BX (Branch and Exchange). Questa istruzione salta ad un indirizzo memorizzato in un registro generico, e se il bit*0+ di questo registro è 1, l esecuzione Thumb parte dall istruzione puntata dall indirizzo contenuto nel registro. Se il bit*0+ è 0, continua l esecuzione ARM dall istruzione puntata dall indirizzo contenuto nel registro. Dalla versione ARMv5T le istruzioni BLX e LDR/LDM che caricano il PC possono essere usate in modo simile. L esecuzione Thumb può anche essere iniziata settando il bit T del registro SPSR ed eseguendo un istruzione ARM che ripristina il CPSR dal SPSR. Questo permette al sistema operativo di rieseguire un processo indipendentemente dal fatto che questo stia eseguendo un codice Thumb oppure ARM. Il risultato è imprevedibile se il bit T viene alterato direttamente scrivendo sul CPSR. 34

36 Eccezioni Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Le eccezioni generate durante l esecuzione Thumb passano all esecuzione ARM prima di eseguire il gestore delle eccezioni (la prima istruzione del quale si trova nel vettore hardware). Lo stato del bit T è mantenuto nel SPSR, e il registro LR (Link Register, R14) della modalità eccezione è settato in modo che l istruzione di ritorno all esecuzione normale funzioni correttamente, questo accade sempre quando si verifica un eccezione, non importa che l esecuzione sia ARM o Thumb. La tabella A6-1 elenca i valori del registro LR del modo Eccezione per le eccezioni generate durante l esecuzione Thumb. Tabella 5.1 Istruzioni di ritorno dalle Eccezioni Eccezione Valore di LR del modo Eccezione Istruzione di ritorno Reset Valore IMPREVEDIBILE - Undefined Indirizzo dell istruzione Undefined + 2 MOVS PC, R14 SWI Indirizzo dell istruzione SWI + 2 MOVS PC, R14 Prefetch Abort Indirizzo dell istruzione Prefetch Abort + 4 SUBS PC, R14, #4 Data Abort Indirizzo dell istruzione che ha generato l errore +8 SUBS PC, R14, #8 IRQ Indirizzo dell istruzione successiva da eseguire SUBS PC, R14, #4 FIQ Indirizzo dell istruzione successiva da eseguire SUBS PC, R14, # Note Per ogni eccezione, l istruzione di ritorno indicate dalla tabella A6-1 è la stessa istruzione richiesta se l esecuzione avvenisse durante l esecuzione ARM. Comunque i seguenti due tipi di eccezioni hanno un metodo di ritorno secondario, per il quale sono necessarie diverse istruzioni di ritorno a seconda che l eccezione avvenga durante l esecuzione ARM oppure Thumb: Per l eccezione Data Abort, il metodo di ritorno principale causa la ripresa dell esecuzione proprio dall istruzione che ha generato l eccezione, la quale viene rieseguita. È anche possibile ritornare all istruzione successiva a quella che ha generato l eccezione, usando l istruzione SUBS PC, R14, #4. Se questo tipo di ritorno è richiesto per un Data Abort causato da un istruzione Thumb, si usa SUBS PC, R14, #6 come istruzione di ritorno. Per l eccezione Undefined, il metodo principale di ritorno causa la ripresa dell esecuzione dall istruzione successiva a quella che ha generato l eccezione. È anche possibile ritornare all istruzione stesa che ha generato l eccezione usando SUBS PC, R14, #4. Se questo tipo di ritorno è richiesto per un Undefined causato da un istruzione Thumb si usa SUBS PC, R14, #2. Comunque, l uso principale di questo tipo di ritorno è per alcuni tipi di istruzioni coprocessore, e siccome non contiene alcuna istruzione coprocessore, è improbabile necessitare di questo metodo secondario di ritorno per istruzioni Thumb. Quando sono usati questi metodi secondari di ritorno, il codice che gestisce le eccezioni deve testare il bit T del registro SPSR per determinare quale delle due istruzioni di ritorno deve usare

37 5.2. Codifica del set istruzioni Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Nella figura 5.1 è riportata la codifica del set di istruzioni Thumb. Figura 5.1 Panorama della codifica del set di istruzioni Thumb 1. Il campo opc non può essere 11 in questa riga. Altre righe trattano il caso in cui il campo opc è Il campo cond non può essere 1110 o 1111 in questa riga. Altre righe trattano il caso in cui il campo cond è 1110 o La forma con L = 1 è IMPREVEDIBILE prima della versione ARMv5T. 4. Questa è un istruzione indefinita prima di ARMv5T. 36

38 Istruzioni varie La figura A6-2 elenca le istruzioni miste Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Figura 5.2 Istruzioni varie Thumb 1. Era un istruzione indefinita prima di ARMv5. 2. Erano istruzioni indefinite prima di ARMv Note Ogni istruzione con i bits[15:12] = 1011, e che non è illustrata in figura A6-2 è un istruzione indefinita

39 5.3. Istruzioni di salto Il Thumb supporta sei tipi di istruzioni di salto: Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: un salto condizionato che permette salti in avanti e all indietro fino a 256 bytes un salto incondizionato che permette salti in avanti o all indietro fino a 2 KB un salto con link (chiamata a una funzione) è supportato con una coppia di istruzioni che permettono salti in avanti e all indietro fino a 4 MB (-222 <= offset <= ) un salto con link e scambio usa una coppia di istruzioni, simili alle precedenti, ma in più passa all esecuzione di codice ARM un istruzione si salto e scambio salta ad un indirizzo in un registro e opzionalmente salta all esecuzione di codice ARM una seconda forma di istruzione di salto con link e scambio esegue una chiamata ad una subroutine il cui indirizzo è in un registro e opzionalmente passa all esecuzione di codice ARM La codifica di queste istruzioni è illustrata di seguito. B Salto condizionato <condizione> <indirizzo di destinazione> B Salto incondizionato <indirizzo di destinazione> BL <indirizzo di destinazione> ; Produce due istruzioni da 16-bit BLX <indirizzo di destinazione> ; Produce due istruzioni da 16-bit BX BLX Salto con scambio <Rm> <Rm> 38

40 5.4. Istruzioni Data-Processing Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Le istruzioni di processamento dei dati del set Thumb, sono un sottoinsieme di quelle del set ARM. Sono divise in due gruppi: il primo gruppo può operare solo sui registri bassi, r0-r7, il secondo può operare sui registri alti, r8-r15, oppure su entrambi Istruzioni che operano sui registri bassi Le istruzioni che operano sui registri bassi sono mostrate in Tabella A6-2. Alcune di queste istruzioni appaiono anche nella lista di istruzioni che operano sui registri alti. Quando operano sui registri bassi, tutte le istruzioni in questa tabella, eccetto CPY, modificano i flags di stato. Tabella 5.2 Istruzioni Data-Processing che operano sui registri bassi 39

41 Tabella 5.2 Istruzioni Data-Processing che operano sui registri bassi (continua) Per esempio: ADD R0, R4, R7 ; R0 = R4 + R7 SUB R6, R1, R2 ; R6 = R1 R2 ADD R0, #255 ; R0 = R ADD R1, R4, #4 ; R1 = R4 + 4 NEG R3, R1 ; R3 = 0 R1 AND R2, R5 ; R2 = R2 AND R5 EOR R1, R6 ; R1 = R1 EOR R6 CMP R2, R3 ; aggiorna il flag dopo R2 R3 CMP R7, #100 ; aggiorna il flag dopo R7 100 MOV R0, #200 ; R0 =

42 Istruzioni che operano sui registri alti Ci sono otto tipi di istruzioni data-processing che operano sui registri ARM dall 8 al 14 e sul PC come mostrato nella tabella A6-3. A parte cmp, le istruzioni nella tabella non cambiano i flag di stato. Tabella 5.3 Istruzioni Data-Processing che operano sui registri alti Per esempio: MOV R0, R12 ; R0 = R12 ADD R10, R1 ; R10 = R10 + R1 MOV PC, LR ; PC = R14 CMP R10, R11 ; aggiorna i flag dopo R10 R11 SUB SP, #12 ; incrementa lo stack pointer di 12 bytes ADD SP, #16 ; decrementa lo stack pointer di 16 bytes ADD R2, SP, #20 ; R2 = SP + 20 ADD R0, PC, #500 ; R0 = PC

43 Formati Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Le istruzioni data-processing usano i seguenti otto formati: Formato 1 Formato 2 Formato 3 Formato 4 Formato 5 Formato 6 42

44 Formato 7 Formato 8 43

45 5.5. Istruzioni Load and Store Register Il Thumb supporta otto tipi di istruzioni di lettura e scrittura sui registri. Sono disponibili due modi di indirizzamento di base. Questi permettono la lettura e la scrittura di parole (4 Bytes), mezze parole (2 Bytes) e bytes (1 Byte), e anche di mezze parole e bytes con segno: registro più registro registro più 5-bit immediato (non disponibile per le mezze parole e i bytes con segno) Se viene usato un offset immediato, viene scalato di 4 per l accesso ad una parola e di 2 per l accesso ad una mezza parola. In più, tre istruzioni speciali permettono: alle parole di essere caricate usando il PC come base con un offset immediato di 1 KB alle parole di essere caricate e salvate con lo stack pointer (R13) come base e un offset immediato di 1 KB Formati Le istruzioni di lettura e scrittura sui registri hanno i seguenti formati: Formato 1 Formato 2 Formato 3 Formato 4 44

46 Per esempio: LDR R4, [R2, #4] ; Carica la parola in R4 dall indirizzo R2 + 4 LDR R4, [R2, R1] ; Carica la parola in R4 dall indirizzo R2 + R1 STR R0, [R7, #0x7C] ; Scrive la parola da R0 all indirizzo R STRB R1, [R5, #31] ; Scrive il byte da R1 all indirizzo R STRH R4, [R2, R3] ; Scrive una mezza parola da R4 a R2 + R3 LDRH R3, [R6, R5] ; Carica una mezza parola in R3 da R6 + R5 LDRB R2, [R1, #5] ; Carica un byte in R2 da R1 + 5 LDR R6, [PC, #0x3FC] ; Carica R6 da PC + 0x3FC LDR R5, [SP, #64] ; Carica R5 da SP + 64 STR R4, [SP, #0x260] ; Carica R5 da SP + 0x260 45

47 5.6. Istruzioni Load and Store Multiple Il Thumb supporta quattro tipi di istruzioni di lettura e scrittura multipla: Due istruzioni, LDMIA e STMIA, sono progettate per supportare la copia di blocchi. Hanno un indirizzamento con post-incremento fisso da un registro di base. Le altre due istruzioni, PUSH e POP, hanno anche loro un modo di indirizzamento fisso. Implementano uno stack a cascata e lo stack pointer (R13) è usato come base. Tutte e quattro le istruzioni aggiornano il registro base dopo il trasferimento e tutte possono trasferire alcuni o tutti gli 8 registri. PUSH può anche impilare l indirizzo di ritorno, e POP può caricare il PC Formati Le istruzioni di lettura e scrittura multipla hanno I seguenti formati: Formato 1 Formato Esempi LDMIA R7!, {R0-R3,R5} ; Carica R0 in R3-R5 da R7, aggiunge 20 a R7 STMIA R0!, {R3, R4, R5} ; Scrive R3-R5 in R0, aggiunge 12 in R0 function PUSH {R0-R7, LR} ; push nello stack (R13) R0-R7 e ; l indirizzo di ritorno al ; codice del corpo della funzione POP {R0-R7, PC} ; ricarica R0-R7 dallo stack ; e il PC, e ritorna 46

48 5.7. Istruzioni per la generazione di eccezioni Il set di istruzioni Thumb fornisce due tipi di istruzione il quale scopo principale è di far verificare eccezione di processore: L istruzione Software Interrupt (SWI) è usata per causare un eccezione SWI (vedere Software Interrupt Exception). Questo è il meccanismo principale con il quale il codice Utente può fare chiamate al codice privilegiato del Sistema Operativo. L istruzione Breakpoint (BKPT) è usata per punti di rottura (breakpoints) software in ARMv5T e superiori. Il suo comportamento di default è quello di causare un eccezione di Prefetch Abort (vedere Prefetch Abort (fallimento di fetch dell istruzione da memoria)). Un programma monitor di debug che è stato preventivamente installato nel vettore Prefetch Abort può gestire questa eccezione. Se è presente nel sistema il debug hardware, è autorizzato a non tener conto del comportamento di default Codifica delle istruzioni In entrambe swi e bkpt, il campo immed_8 dell istruzione è ignorato dal processore ARM. I gestori delle interruzioni possono essere opzionalmente scritti per caricare l istruzione che ha causato l eccezione ed estrarre questi campi. Questo permette loro di essere usati per comunicare informazioni extra riguardo le chiamate al Sistema Operativo. 47

49 5.8. Spazio indefinito delle istruzioni Le seguenti istruzioni sono INDEFINITE nel set Thumb: In generale, queste istruzioni possono essere usate per estendere il set Thumb in futuro. Tuttavia, è sottointeso che un futuro gruppo di istruzioni non sarà usato in questa maniera: Usare una di queste istruzioni se si vuole usare un istruzione indefinita per scopi software, con il minimo rischio che un futuro hardware le tratterà come istruzioni definite. 48

50 6. Istruzioni Thumb (Manuale parte 2) Questo capitolo descrive la sintassi e l uso di ogni istruzione Thumb, nelle sezioni: Lista in ordine alfabetico delle istruzioni Thumb Istruzioni Thumb e versioni dell architettura 49

51 6.1. Lista in ordine alfabetico delle istruzioni Thumb Tutte le istruzioni Thumb sono presenti nelle seguenti pagine. Ogni descrizione mostra: la codifica dell istruzione la sintassi dell istruzione le versioni di ARM in cui l istruzione è valida le eccezioni che potrebbero verificarsi uno pseudocodice su come opera l istruzione note sull uso e casi speciali l equivalente codifica ARM Note generali Queste note spiegano il tipo di informazioni e abbreviazioni usate nelle pagine successive. Sintassi abbreviazioni Sono usate le seguenti abbreviazioni: immed_<n> È un valore immediato a <n>-bit. Per esempio, un valore a 8-bit immediato è rappresentato da: immed_8 signed_immed_<n> È un valore immediato con segno a <n>-bit. Per esempio, un valore con segno a 8-bit immediato è rappresentato da: immed_signed_8 Versione architettura Questa sezione descrive la versione dell architettura ARM con cui è associata l istruzione, non la versione del set di istruzioni Thumb. Ci sono tre versioni del set Thumb: THUMBv1 è usato nella variante T di ARMv4. THUMBv2 è usato nella variante T di ARMv5. THUMBv3 è usato in ARMv6 e superiori. Le istruzioni che sono descritte come presenti in tutte le varianti T sono presenti in THUMBv1, THUMBv2 e THUMBv3. Quelle che sono descritte come appartenenti alla variante T delle versioni 6 e superiori sono presenti solo nel THUMBv3. Sintassi e codifica ARM equivalenti Questa sezione mostra la sintassi e la codifica dell istruzione ARM equivalente. Quando non è disponibile un equivalente preciso, viene mostrata un istruzione simile e vengono spiegate le ragioni per cui non esiste l equivalente preciso. Una ragione comune per cui non ci sono istruzioni equivalenti è che queste leggono il valore del PC. Questo produce l indirizzo dell istruzione più N, dove N è 8 per le istruzioni ARM e 4 per le istruzioni Thumb. Questa differenza può essere spesso compensata con l aggiustamento di una costante immediata nell equivalente istruzione ARM. Nella codifica equivalente, i campi con nome e i vari bits devono essere riempiti con i corrispondenti campi e bits dell istruzione Thumb, o in alcuni casi con i valori derivati dall istruzione Thumb come descritto nel testo. I campi dell istruzione ARM sono normalmente della stessa lunghezza dei campi dell istruzione Thumb corrispondente, con una importante eccezione. I campi registro del Thumb sono lunghi normalmente 3 bits, dove invece i campi registro dell ARM sono di 4 bits. In questi casi, il campo registro del Thumb deve essere esteso con uno 0 nel bit più significativo quando va a sostituire il campo registro dell ARM, così che l istruzione ARM fa riferimento al registro corretto tra R0 e R7. 50

52 Informazioni sull uso L informazione sull uso è data per l istruzione Thumb solo se questa differisce significativamente dall uso della corrispondente istruzione ARM. Se questa sezione non compare bisogna andare a vedere la sezione informazioni sull uso della corrispondente istruzione ARM. 51

53 ADC ADC (Add with Carry) somma due valori e il flag Carry. Usare ADC per sintetizzare le addizioni multi-parola. ADC aggiorna i flag di stato, a seconda del risultato. Sintassi ADC <Rd>, <Rm> dove: <Rd> <Rm> Memorizza il primo valore dell addizione, ed è il registro di destinazione. Specifica il registro che contiene il secondo operando dell addizione. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = Rd + Rm + C Flag N Flag = Rd[31] Z Flag = if(rd == 0) {1} else {0} C Flag = CarryFrom(Rd + Rm + C Flag) V Flag = OverflowFrom(Rd + Rm + C Flag) // Flag Negative, se 1 è negativo, se 0 è positivo // Flag Zero // Flag Carry // Flag Overflow Sintassi e codifica equivalente ARM ADCS <Rd>, <Rd>, <Rm> 52

54 ADD(1) ADD(1) somma il valore di una piccola costante ad un registro e salva il risultato in un secondo registro. Aggiorna i flag di stato, a seconda del risultato. Sintassi ADD <Rd>, <Rn>, #<immed_3> dove: <Rd> Registro di destinazione. <Rn> Specifica il registro che contiene l operando dell addizione. <immed_3> Specifica un valore a 3-bit che viene aggiunto ad Rn. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = Rn + immed_3 N Flag = Rd[31] Z Flag = if(rd == 0) {1} else {0} C Flag = CarryFrom(Rn + immed_3) V Flag = OverflowFrom(Rn + immed_3) Sintassi e codifica equivalente ARM ADDS <Rd>, <Rn>, #<immed_3> 53

55 ADD(2) ADD(2) somma il valore di una grande costante ad un registro e salva il risultato nel registro stesso. Aggiorna i flag di stato, a seconda del risultato. Sintassi ADD <Rd>, #<immed_8> dove: <Rd> <immed_8> Contiene il primo operando dell addizione ed è il registro di destinazione. Specifica un valore a 8-bit che viene aggiunto ad Rd. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = Rd + immed_8 N Flag = Rd[31] Z Flag = if(rd == 0) {1} else {0} C Flag = CarryFrom(Rd + immed_8) V Flag = OverflowFrom(Rd + immed_8) Sintassi e codifica equivalente ARM ADDS <Rd>, <Rd>, #<immed_8> 54

56 ADD(3) ADD(3) somma il valore di un registro al valore di un secondo registro e salva il risultato in un terzo registro. Aggiorna i flag di stato, a seconda del risultato. Sintassi ADD <Rd>, <Rn>, <Rm> dove: <Rd> <Rn> <Rm> È il registro di destinazione del risultato della somma. È il registro che contiene il primo operando dell addizione. È il registro che contiene il secondo operando dell addizione. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = Rn + Rm N Flag = Rd[31] Z Flag = if(rd == 0) {1} else {0} C Flag = CarryFrom(Rn + Rm) V Flag = OverflowFrom(Rn + Rm) Sintassi e codifica equivalente ARM ADDS <Rd>, <Rn>, <Rm> 55

57 ADD(4) ADD(4) somma i valori di due registri, di cui uno o entrambi sono registri alti. Diversamente dalle istruzioni add che agiscono solo sui registri bassi, questa istruzione non cambia i flags. Sintassi ADD <Rd>, <Rm> dove: <Rd> <Rm> Specifica il registro contenente il primo valore, ed è anche il registro di destinazione. Può essere uno qualunque tra R0 e R15. Il numero del registro è codificato nell istruzione in H1 (bit più significativo) e in Rd (i restanti 3 bit). Specifica il registro contenente il secondo valore. Può essere uno qualunque tra R0 e R15. Il numero del registro è codificato nell istruzione da H2 (bit più significativo) e da Rm (restanti 3 bit). Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = Rd + Rm Note Se vengono specificati due registry bassi in Rd e Rm, il risultato è IMPREVEDIBILE. Sintassi e codifica equivalente ARM Un equivalente simile è: ADD <Rd>, <Rd>, <Rm> Ci sono lievi differenze quando l istruzione accede al PC, a causa delle differenti definizioni di PC durante l esecuzione del codice ARM e Thumb. 56

58 ADD(5) ADD(5) somma un valore immediato al PC e scrive l indirizzo relativo risultante in un registro di destinazione. Il valore immediato può essere un multiplo di 4 nel range tra 0 e I flags di stato non vengono modificati. Sintassi ADD <Rd>, PC, #<immed_8> * 4 dove: <Rd> PC <immed_8> È il registro di destinazione. Indica il Program Counter. Specifica un valore immediato ad 8 bit che viene moltiplicato per 4 e aggiunto al PC. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = (PC AND 0xFFFFFFFC) + (immed_8 * 4) Sintassi e codifica equivalente ARM Un equivalente simile è: ADD <Rd>, PC, #<immed_8> * 4 Le definizioni di PC differiscono tra i codici ARM e Thumb. Questo implica una differenza tra i risultati precisi delle istruzioni. 57

59 ADD(6) ADD(6) somma un valore immediato allo SP e scrive l indirizzo relativo risultante in un registro di destinazione. Il valore immediato può essere un multiplo di 4 nel range tra 0 e I flags di stato non vengono modificati. Sintassi ADD <Rd>, SP, #<immed_8> * 4 dove: <Rd> SP <immed_8> È il registro di destinazione. Indica lo Stack Pointer. Specifica un valore immediato ad 8 bit che viene moltiplicato per 4 e aggiunto al SP. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = SP + (immed_8 << 2) // l operatore << indica lo shift aritmetico a sinistra di n bit, che equivale a moltiplicare per 2 n. Sintassi e codifica equivalente ARM ADD <Rd>, SP, #<immed_8> * 4 58

60 ADD(7) ADD(7) incrementa lo SP di un valore a 7 bit moltiplicato per 4 (range tra 0 e 508). I flags di stato non vengono modificati. Sintassi ADD SP, #<immed_7> * 4 dove: SP <immed_7> Contiene il primo operando della somma ed è anche il registro di destinazione. Specifica un valore immediato a 7 bit che viene moltiplicato per 4 e aggiunto allo SP. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione SP = SP + (immed_7 << 2) // l operatore << indica lo shift aritmetico a sinistra di n bit, che equivale a moltiplicare per 2 n. Uso Per lo stack decrescente che usa il set Thumb, incrementare lo SP significa eliminare i dati all inizio dello stack. Note Questa istruzione può anche essere scritta in questo modo: add SP, SP, #<immed_7> * 4. Sintassi e codifica equivalente ARM ADD SP, SP, #<immed_7> * 4 59

61 AND AND (AND logico) esegue un AND bit a bit tra i valori dei due registri. Aggiorna i flag di stato, a seconda del risultato. Sintassi AND <Rd>, <Rm> dove: <Rd> Specifica il registro contenente il primo operando ed è anche il registro di destinazione. <Rm> Specifica il registro contenente il secondo operando. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione Rd = Rd AND Rm N Flag = Rd[31] Z Flag = if(rd == 0) {1} else {0} C Flag = non interessato V Flag = non interessato Sintassi e codifica equivalente ARM ANDS <Rd>, <Rd>, <Rm> 60

62 ASR(1) ASR (Arithmetic Shift Right) fornisce il valore con segno del contenuto di un registro diviso per una costante potenza del 2. Aggiorna i flag di stato, a seconda del risultato. Sintassi ASR <Rd>, <Rm>, #<immed_5> dove: <Rd> <Rm> <immed_5> Specifica il registro di destinazione. Specifica il registro contenente il valore che deve essere shiftato. Specifica il valore dello shift da 1 a 31. Lo shift da 1 a 31 è codificato direttamente in immed_5. Uno shift di 32 è codificato come immed_5 = 0. Versione architettura Tutte le varianti T Eccezioni Nessuna Operazione if (immed_5 == 0) C Flag = Rm[31] if (Rm[31] == 0 then) Rd = 0 else /* Rm[31] == 1 */ Rd = 0xFFFFFFFF else /* immed_5 > 0 */ C Flag = Rm[immed_5-1] Rd = Rm Arithmetic_Shift_Right immed_5 N Flag = Rd[31] Z Flag = if (Rd == 0) {1} else {0} V Flag = unaffected 61

63 Sintassi e codifica equivalente ARM MOVS <Rd>, <Rm>, asr #<immed_5> Studi e sperimentazioni su processori ad architettura ARM: Tesi di Laurea di: Shift Aritmetico destro Ogni bit dell operando è semplicemente spostato verso destra di un dato numero di bit, e le posizioni che rimangono vuote vengono riempite. Invece di riempirle con tutti zeri, come nello shift logico, il bit più significativo (MSB di solito rappresenta il segno nella rappresentazione binaria dei numeri) viene replicato per riempire tutte le posizioni rimaste vuote. Fare lo shift destro di n bits in un numero binario con segno in complemento a due, equivale a dividerlo per 2 n, con il risultato arrotondato per difetto. 62

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

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

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

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

Lezione E3. Architettura ARM - I. Sistemi embedded e real-time

Lezione E3. Architettura ARM - I. Sistemi embedded e real-time Lezione E3 Sistemi embedded e real-time 11 ottobre 2012 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 E3.1 Di cosa parliamo in questa lezione?

Dettagli

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

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad Principi di architetture dei calcolatori: l architettura ARM. Mariagiovanna Sami Che cosa è ARM In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline

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

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

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

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

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

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 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

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

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

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

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

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

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

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

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

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine. Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere

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

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

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

memoria virtuale protezione

memoria virtuale protezione Memoria Virtuale Le memorie cache forniscono un accesso veloce ai blocchi di memoria usati più di recente La memoria virtuale fornisce un accesso veloce ai dati sulle memorie di massa usati più di recente.

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

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

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

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

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1 IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

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

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

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

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

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

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

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

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

La memoria centrale (RAM)

La memoria centrale (RAM) La memoria centrale (RAM) Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione Memoria ad accesso casuale Tecnologia elettronica: Veloce ma volatile e costosa Due eccezioni R.O.M.

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

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

La memoria - generalità

La memoria - generalità Calcolatori Elettronici La memoria gerarchica Introduzione La memoria - generalità n Funzioni: Supporto alla CPU: deve fornire dati ed istruzioni il più rapidamente possibile Archiviazione: deve consentire

Dettagli

1.4a: Hardware (Processore)

1.4a: Hardware (Processore) 1.4a: Hardware (Processore) 2 23 nov 2011 Bibliografia Curtin, Foley, Sen, Morin Informatica di base, Mc Graw Hill Ediz. Fino alla III : cap. 3.8, 3.9 IV ediz.: cap. 2.6, 2.7 Questi lucidi 23 nov 2011

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. La memoria gerarchica La memoria virtuale

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale Calcolatori Elettronici La memoria gerarchica La memoria virtuale Come usare la memoria secondaria oltre che per conservare permanentemente dati e programmi Idea Tenere parte del codice in mem princ e

Dettagli

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione Gestione della memoria Paginazione Segmentazione Segmentazione con paginazione Modello di paginazione Il numero di pagina serve come indice per la tabella delle pagine. Questa contiene l indirizzo di base

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 dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore (CPU) la memoria principale (RAM) la memoria secondaria i dispositivi di input/output Il processore

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

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

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

Dettagli

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

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema La macchina di Von Neumann rchite(ura di un calcolatore us di sistema Collegamento Unità di Elaborazione (CPU) Memoria Centrale (MM) Esecuzione istruzioni Memoria di lavoro Interfaccia Periferica P 1 Interfaccia

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

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

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

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

Informatica. Rappresentazione dei numeri Numerazione binaria

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

Dettagli

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

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

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

L unità di elaborazione pipeline L unità Pipelining

L unità di elaborazione pipeline L unità Pipelining Struttura del processore L unità di elaborazione pipeline Corso ACSO prof. Cristina SILVANO Politecnico di Milano Incremento delle Per migliorare ulteriormente le si può: ridurre il periodo di clock aumentare

Dettagli

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

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

Dettagli

introduzione I MICROCONTROLLORI

introduzione I MICROCONTROLLORI introduzione I MICROCONTROLLORI Definizione Un microcontrollore è un dispositivo elettronico programmabile Può svolgere autonomamente diverse funzioni in base al programma in esso implementato Non è la

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

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

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

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

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

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

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

Il microprocessore 8086

Il microprocessore 8086 1 Il microprocessore 8086 LA CPU 8086 Il microprocessore 8086 fa parte della famiglia 80xxx della INTEL. Il capostipite di questa famiglia è stato l 8080, un microprocessore ad 8 bit che ha riscosso un

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

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

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

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Introduzione alla Virtualizzazione

Introduzione alla Virtualizzazione Introduzione alla Virtualizzazione Dott. Luca Tasquier E-mail: luca.tasquier@unina2.it Virtualizzazione - 1 La virtualizzazione è una tecnologia software che sta cambiando il metodo d utilizzo delle risorse

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

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

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

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

L architettura di riferimento

L architettura di riferimento Architetture degli elaboratori e delle reti Lezione 10 L architettura di riferimento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 10 1/27

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

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

Il sistema operativo TinyOS

Il sistema operativo TinyOS tesi di laurea Anno Accademico 2005/2006 relatore Ch.mo prof. Domenico Cotroneo candidato Giovanni Chierchia Matr. 534 / 804 ::. Obiettivi del lavoro di tesi Studio del sistema operativo TinyOS Studio

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

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

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

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

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

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento: martedì, 12.00-13.00. Dip. Di Matematica Modalità esame: scritto + tesina facoltativa 1

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

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

Tecniche per il progetto di sistemi elettronici tolleranti ai guasti

Tecniche per il progetto di sistemi elettronici tolleranti ai guasti Tecniche per il progetto di sistemi elettronici tolleranti ai guasti Fulvio Corno, Maurizio Rebaudengo, Matteo Sonza Reorda Politecnico di Torino Dipartimento di Automatica e Informatica Le tecniche di

Dettagli

Corso di Informatica

Corso di Informatica CdLS in Odontoiatria e Protesi Dentarie Corso di Informatica Prof. Crescenzio Gallo crescenzio.gallo@unifg.it La memoria principale 2 izzazione della memoria principale ria principale è organizzata come

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

4. Operazioni aritmetiche con i numeri binari

4. Operazioni aritmetiche con i numeri binari I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:

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

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1

Dettagli