Marco Tarini - Università dell'Insubria A.A. 2016/17 Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate Astrazione e Macchine Virtuali parte 2: in un tipico calcolatore Architettura degli elaboratori I livelli nei moderni calcolatori 6. 5. 4. 3. 2. 1. 0. -1. -2. … Livello delle applicazioni specifiche Livello dei linguaggi applicativi Livello del linguaggio assemblatore Livello del sistema operativo Livello dell’Instruction Set (ISA) Livello della microarchitettura Livello logico ... Livello dei dispositivi ... ... (fisica dello stato solido) ... Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 1 Marco Tarini - Università dell'Insubria A.A. 2016/17 Livello dei dispositivi Transistor che formano i circuiti elettronici di cui è composto un calcolatore. Raggiunge un livello di dettaglio che viene in genere trascurato nella progettazione dei calcolatori. A un livello ancor più basso ci si occupa della fisica dello stato solido (es silicio drogato, come semiconduttore) Architettura degli elaboratori Livello 0: la logica digitale La macchina è formata da porte logiche. Ogni porta riceve in ingresso dei segnali binari (cioè segnali che possono essere 0 o 1) e calcola una semplice funzione (AND, OR, ...). Alcune porte, collegate opportunamente, possono formare una memoria di un bit (bistabile). Combinando N memorie di un bit si può formare un registro capace di memorizzare un numero binario (non più grande di 2N-1). Combinando le porte si realizzano i circuiti che eseguono task come fare operazioni aritmetiche fra numeri leggere dalla memoria etc Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 2 Marco Tarini - Università dell'Insubria A.A. 2016/17 Livello 1: la microarchitettura Livello 1 Livello 0 Microarchitettura Logica digitale Esecuzione diretta (Hardware) Architettura degli elaboratori Livello 1: la microarchitettura Elaborazione – Data Path registri general purpose come memoria locale; Arithmetic Logic Unit (ALU) capace di eseguire semplici operazioni aritmetico-logiche; Elementi di connessione tra registri e ALU. Controllo registri dedicati al controllo (PC, IR, ...); Unità di controllo – Control Unit che può microprogrammata o cablata. Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 3 Marco Tarini - Università dell'Insubria A.A. 2016/17 Control Unit: cablata o microprogrammata? Control Unit Microprogrammata il funzionamento del Data Path viene controllato da un programma chiamato microprogramma; si tratta di un interprete delle istruzioni di livello 2; era la soluzione più diffusa in passato, tanto che il termine µprogrammazione era a volte sinonimo di µ-architettura. Control Unit Cablata il funzionamento del Data Path viene controllato direttamente tramite dispositivi hardware; la sequenza di operazioni associate alle istruzioni di livello 2 non viene generata da un interprete ma viene gestita direttamente via hardware. Architettura degli elaboratori Livello 2: Instruction Set Architecture Livello 2 Instruction Set Interpretazione (microprogramma) Livello 1 Microarchitettura Livello 0 Logica digitale o esecuzione diretta (hardware) Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 4 Marco Tarini - Università dell'Insubria A.A. 2016/17 Livello 2: Instruction Set Architecture Insieme delle istruzioni che possono essere comprese dalla µ-architettura (la µ-architettura agisce da interprete dell’Instruction Set). È il livello cui si fa riferimento quando si descrive il “linguaggio macchina” di un calcolatore. la sintassi di ciascuna di queste istruzioni è costituita da sequenze di 0 e 1 (codifica binaria) Architettura degli elaboratori Livello 3: il sistema operativo Livello 3 Sistema operativo Livello 2 Instruction Set Livello 1 Microarchitettura Livello 0 Logica digitale Interpretazione parziale Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 5 Marco Tarini - Università dell'Insubria A.A. 2016/17 Livello 3: il sistema operativo Il linguaggio di questo livello: comprende molte istruzioni che si trovano già al livello 2; comprende anche un insieme di istruzioni aggiuntive; ha una diversa organizzazione della memoria; esegue più programmi contemporaneamente. La traduzione è ibrida Le nuove funzionalità sono eseguite da un interprete che viene definito “Sistema operativo”. Le istruzioni identiche a quelle del livello 2 vengono eseguite direttamente dalla microarchitettura. Architettura degli elaboratori Livelli bassi (1, 2, 3) vs livelli alti (4, 5) I livelli bassi supportano il funzionamento dei compilatori e degli interpreti utilizzati ai livelli alti: Livelli bassi ⇔ programmazione di sistema Livelli alti ⇔ programmazione di applicazioni Per migliorare le prestazioni: i livelli 2 e 3 vengono sempre interpretati; i livelli 4 e 5 vengono spesso compilati. Per questioni di efficienza e di “usabilità”: i linguaggi dei livelli 2 e 3 sono in codifica binaria; i linguaggi dei livelli 4 e 5 sono testuali (simbolici) cioè composti da parole hanno un senso per l’uomo. Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 6 Marco Tarini - Università dell'Insubria A.A. 2016/17 Livello 4: il linguaggio assemblatore Livello 4 Linguaggio assemblatore Traduzione (assemblatore) Livello 3 Sistema operativo Livello 2 Instruction Set Livello 1 Microarchitettura Livello 0 Logica digitale Architettura degli elaboratori Livello 4: il linguaggio assemblatore Rappresentazione simbolica di uno dei livelli sottostanti. I linguaggi binari dei livelli “bassi” sono difficili da usare per un programmatore (... errori di “trascrizione” ...). A ogni istruzione del linguaggio assemblatore corrisponde una istruzione del linguaggio macchina. I programmi in linguaggio assemblatore vengono tradotti in un linguaggio di livello inferiore e poi eseguiti. Il programma che esegue la traduzione si chiama assemblatore. Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 7 Marco Tarini - Università dell'Insubria A.A. 2016/17 Livello 5: i linguaggi applicativi Livello 5 Linguaggi applicativi Livello 4 Linguaggio assemblatore Livello 3 Sistema operativo Livello 2 Instruction Set Livello 1 Microarchitettura Livello 0 Logica digitale Traduzione (compilatore) Architettura degli elaboratori Livello 5: i linguaggi applicativi Linguaggi di alto livello come C, C++, Java, Ada, LISP, Prolog, ... Sono utilizzati per la realizzazione di programmi applicativi. Il più delle volte la traduzione è affidata a un compilatore, mentre in alcuni casi si usa un interprete (e.g. Java) I linguaggi ad alto livello non fanno parte degli scopi di questo corso. Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 8 Marco Tarini - Università dell'Insubria A.A. 2016/17 Livello 6: le applicazioni Livello 6 Applicazioni specifiche Livello 5 Linguaggi applicativi Livello 4 Linguaggio assemblatore Livello 3 Sistema operativo Livello 2 Instruction Set Livello 1 Microarchitettura Livello 0 Logica digitale Design e sviluppo Architettura degli elaboratori Livello 6 e oltre: applicazioni specifiche Es: adobe photoshop, microsoft word, microsoft powerpoint, libreoffice calc, google chorme, final cut pro, blender, unity, etc, etc, etc Spesso attraverso molti livelli intermedi: librerie, SDK, drivers… (niente di questo fa parte degli scopi di questo corso) Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 9 Marco Tarini - Università dell'Insubria A.A. 2016/17 I livelli: uno schema riassuntivo Livello 5 Livello 4 Linguaggi Applicativi Traduzione (compilatore) Linguaggio Assemblatore Traduzione (assemblatore) Livello 3 Sistema operativo Interpretazione parziale (sistema operativo) Livello 2 Instruction Set Livello 1 Microarchitettura Livello 0 Logica digitale Interpretazione (microprogramma) o esecuzione diretta (hardware) Esecuzione diretta (Hardware) Architettura degli elaboratori I livelli: sommario I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sul livello precedente. Ogni livello rappresenta una diversa astrazione con strutture dati e funzionalità diverse. L’insieme di tipi di dati, operazioni e caratteristiche di ogni livello prende il nome di ARCHITETTURA. La descrizione dell’architettura di un livello presenta l’insieme delle caratteristiche visibili all’utente di quel livello (e.g. ad un programmatore di applicazioni interessa sapere quanta è la memoria disponibile) Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 10 Marco Tarini - Università dell'Insubria A.A. 2016/17 I livelli: alcuni Principi generali Livelli alti: linguaggi potenti ed espressivi linguaggi più «vicini all’uomo» sintassi delle istruzioni: intuitiva macchine virtuali più cross platform (cross.browser, cross OS, …) Livelli bassi: linguaggi dai comandi semplici linguaggi più «a misura di macchina» pochi tipi di istruzione base sintassi delle istruzioni: spesso non intuitiva (non è fatta per noi umani) semantica delle istruzioni: molto semplice (quindi serviranno più istruzioni per fare le stesse cose) Livello più basso: esecutore hardware (macchina fisica) Architettura degli elaboratori Nota: Hardware vs. Software Hardware: oggetti tangibili che compongono un calcolatore (circuiti elettronici, memoria, dispositivi di I/O, ...). Software: programmi, indipendentemente dal supporto su cui sono memorizzati (HD, RAM, CD, ...). Hardware e software sono logicamente equivalenti qualsiasi operazione effettuata dal software può essere inglobata nell’hardware (“hardware = software pietrificato”); qualsiasi istruzione eseguita dall’hardware può essere simulata dal software; la decisione di realizzare una funzione in hardware o in software dipende da parametri quali il costo, la velocità, l’affidabilità, la frequenza di variazione, ... Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 11 Marco Tarini - Università dell'Insubria A.A. 2016/17 Nelle parole di un famoso web-comic… https://xkcd.com/676/ Architettura degli elaboratori Architettura degli elaboratori - Astrazione e Macchine Virtuali (Pt 1) 12