Macchine Astratte. Luca Abeni. February 22, 2017

Documenti analoghi
Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Macchine Astratte. Definizione e tipi di implementazione

ARCHITETTURA DI UN ELABORATORE

ARCHITETTURA DI UN ELABORATORE

Interpreti e compilatori La macchina di Von Neumann

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Sistemi di Elaborazione delle Informazioni

Elementi di informatica

Traduzione ed Interpretazione. Queste sconosciute

Architettura degli Elaboratori - 1

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O

Macchine astratte, linguaggi, interpretazione, compilazione

Traduzione ed Interpretazione

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2

ARCHITETTURA DI UN ELABORATORE

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Elementi di informatica

Architettura di un elaboratore. Il modello di von Neumann

Il processore. Istituzionii di Informatica -- Rossano Gaeta

INFORMATICA GENERALE

Architettura di una CPU

Corso di Linguaggi di Programmazione + Laboratorio

Macchina di Riferimento: argomenti

Macchina di von Neumann/Turing

Organizzata secondo il modello della macchina di von Neumann definita nei tardi anni 40 all Institute for Advanced Study di Princeton.

La Programmazione. Programmare Macchine Astratte Compilazione / Interpretazione Java. Laboratorio di Programmazione - Luca Tesei

Struttura del calcolatore

Lezione 15. L elaboratore Elettronico

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

ARCHITETTURA DI UN ELABORATORE

Lezione 1: L hardware

Sommario FONDAMENTI DI INFORMATICA. Architettura di Von Neumann. Algoritmi e programmi ESERCITAZIONE PYTHON ARCHITETTURA DEI CALCOLATORI

Componenti di un processore

Capitolo 5 Elementi architetturali di base

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Elementi di base del calcolatore

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Componenti principali

Argomenti. Processori microprogrammati. Architetture CISC Architetture RISC. » Pipeline» Architetture superscalari

Architettura hardware

2. Architettura di un calcolatore

Architettura degli Elaboratori

Architettura dei Calcolatori elettronici

6: Macchina di Von Neumann

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

Architettura di un calcolatore e ciclo macchina. Appunti per la classe 3 Dinf

Interpreti e compilatori La macchina di Von Neumann

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Struttura di un elaboratore

Architettura dei calcolatori

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

HSA HSA HARDWARE SYSTEM ARCHITECTURE. Livelli. Livello assemblativo. Livello di. Sistema Operativo. Livello di. linguaggio macchina.

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Note sull architettura del calcolatore

Introduzione all'architettura dei Calcolatori

Il modello di Von Neumann

L architettura del calcolatore

Architettura di un computer

Il linguaggio di programmazione Python

Corso di Informatica

Architettura di un calcolatore

Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio

Introduzione al funzionamento di un calcolatore elettronico

Macchina Astratta: struttura e realizzazione.

Architettura di Von Neumann

Corso di Fondamenti di Informatica Elementi di Architettura

Il Processore: l unità di controllo

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Componenti e connessioni. Capitolo 3

Richiami sull architettura del processore MIPS a 32 bit

Architettura di un calcolatore

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Linguaggi, compilatori e interpreti

Come funzionano i computer

Architettura degli elaboratori - CPU multiciclo A.A. 2016/17. Architettura degli elaboratori

Architettura dei Calcolatori. Macchina di von Neumann /2. Macchina di von Neumann /1. Architettura dei Calcolatori

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo

Architettura di un processore basato su registri generali.

Il modello di von Neumann

Sistemi e reti CPU Concetti di base

Architettura dei calcolatori

Architettura del calcolatore

Architettura di Von Neumann. Memoria centrale. Memoria centrale (o RAM)

Architettura del Calcolatore. Danilo Ardagna Politecnico di Milano

ARCHITETTURA DI UN ELABORATORE. Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

La CPU a singolo ciclo

Il processore: unità di elaborazione

Architettura dei Calcolatori Elettronici

Macchina di von Neumann

Architettura del calcolatore

HARDWARE 1.4a: (Processore)

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

Linguaggi di alto livello, compilatori e interpreti

Elementi di Architettura

Transcript:

Macchine Astratte February 22, 2017

Architettura dei Calcolatori - 1 Un computer è composto almeno da: Un processore (CPU) Esegue le istruzioni macchina Per fare questo, può muovere dati da/verso la memoria Una memoria centrale (RAM) Memorizza dati e programmi (sequenze di istruzioni macchina) Veloce, ma volatile Una Memoria di massa Più lenta della RAM, ma persistente Alcune periferiche di ingresso/uscita (I/O device)

Architettura dei Calcolatori - 2 I vari componenti di un computer (una o più CPU, RAM, I/O device,...) sono connessi fra loro tramite un bus Esempio: bus di sistema Composto da una serie di collegamenti elettrici Usato per trasmettere istruzioni macchina e dati fra CPU e RAM Usato per Input o Output di dati dai device da memoria di massa

Architettura di Von Neumann I/O Devices RAM Tastiera Schermo Disco Bus CPU CPU Memoria che contiene sia dati che istruzioni Bus che collega CPU a memoria e dispositivi di ingresso / uscita

Il Processore Preleva le istruzioni macchina dalla memoria e le esegue Esecuzione: può aver bisogno di modificare locazioni di memoria (leggere / scrivere dati) Parte operativa e parte di controllo Parte di controllo: preleva ed esegue le istruzioni Parte operativa (Arithmetic Logic Unit - ALU): esegue le istruzioni (aritmetiche e logiche) CPU moderne hanno anche una parte floating point (FPU) ed altro... Contiene internamente dei registri Visibili od invisibili al programmatore

Registri del Processore Invisibili (non acceduti direttamente da istruzioni macchina): Address Register (AR): indirizzo da accedere sul bus Data Register (DR): dato da scrivere / dato letto Visibili (menzionati dalle istruzioni macchina): Program Counter (PC): indirizzo della prossima istruzione macchina da eseguire (AKA IP - Instruction Pointer) Status Register (SR): insieme di flag relativi al risultato di operazioni ALU o allo stato della macchina (AKA F - Flag register) Alcuni registri dati ed indirizzi

Esecuzione di un Istruzione Lettura istruzione da eseguire (fetch) Copia PC in AR Trasferisci dato (indirizzato da AR) da RAM a DR Salva DR in un registro invisibile Incrementa PC Decodifica istruzione: interpreta l istruzione Esecuzione istruzione: esegui l istruzione decodificata Se è necessario caricare dati da memoria, setta AR, leggi DR, etc... Se è necessario salvare dati in memoria, setta AR, scrivi DR, etc... Si può modificare PC (jump, etc...)

La Memoria Centrale Modello di Von Neumann la stessa memoria può contenere dati o istruzioni Acceduta tramite bus Insieme di celle (o locazioni) di 8 bit l una Accesso alla memoria: Caricamento indirizzo da accedere nel registro AR In caso di scrittura, caricamento del dato da scrivere nel registro DR Segnalazione (sul bus) dell operazione da eseguire (lettura / scrittura) in caso di lettura, il dato letto si trova ora in DR

Esempio di CPU Control Unit PC, IR,... Registers ALU AR DR Bus Esempio chiaramente semplificato CPU moderne: struttura più complicata Pipeline Parallelizzazione...

Esecuzione di un Programma Fetch Decode Load Data Execute Save Data CPU: esegue ciclicamente sempre le stesse operazioni Esecuzione prevalentemente sequenziale di istruzioni macchina Macchina progettata per eseguire un proprio linguaggio Linguaggio Macchina (LM)

Macchine Fisiche... Computer: macchina (fisica) progettata per eseguire programmi Ogni macchina esegue programmi scritti in un suo linguaggio Stretta relazione fra macchina e linguaggio Ogni macchina ha un proprio linguaggio che è in grado di capire ed eseguire Lo stesso linguaggio può essere capito da più macchine diverse Esecuzione di un programma: ciclo (infinito) fetch/decode/load/execute/save CPU: implementazione in hw del ciclo Algoritmo (interprete) che è in grado di capire ed eseguire un suo linguaggio macchina

...E Macchine Astratte! L algoritmo che esegue un programma non deve necessariamente essere implementato in hw... Implementazione software: Macchina Astratta Insieme di algoritmi e strutture dati che permettono di memorizzare ed eseguire programmi Come per macchine fisiche (CPU), ad ogni macchina astratta è associato un suo linguaggio M L : macchina astratta che capisce ed esegue il linguaggio L L è il linguaggio macchina di M L Programma: sequenza di istruzioni in L M L è un possibile modo per descrivere L

Funzionamento di una Macchina Astratta Per eseguire un programma scritto in L, M L deve: 1. Eseguire operazioni elementari In hw, ALU 2. Controllare il flusso di esecuzione Esecuzione non solo sequenziale (salti, cicli, etc...) In hw, gestione PC 3. Trasferire dati da / a memoria Modalità di indirizzamento,... 4. Gestire la memoria Allocazione dinamica, gestione stack, memoria dati / programmi, etc...

Esempio di Macchina Astratta Start Fetch Decode Load Data Ciclo di esecuzione: simile a CPU...... Ma implementato in sw! Op 1 Op 2 Op n Halt Save Data Stop

Implementazione di un Linguaggio M L capisce il suo linguaggio macchina L Un solo linguaggio macchina per macchina astratta L è capito/eseguito da varie (infinite) macchine astratte Possono differire per implementazione, strutture dati, etc... Implementazione di un linguaggio L: realizzazione di una macchina astratta M L in grado di eseguire programmi scritti in tale linguaggio Implementazione hw, sw o firmware

Implementazione Software Implementiamo in software M L (esegue programmi scritti in L) Il software esegue su una Macchina Ospite Mo Lo (con linguaggio macchina Lo) Due tipologie di soluzione: interpretativa e compilativa Interprete: programma scritto in Lo che capisce ed esegue L Implementa il ciclo fetch/decode/load/exec/save Compilatore: programma che capisce traduce altri programmi da L a Lo

Implementazione Puramente Interpretativa Dati in input Programma scritto in L Interprete per L Scritto in Lo Esecuzione Macchina Ospite Mo Dati in output Interprete: programma scritto in Lo (esegue su Mo Lo ) che capisce ed esegue programmi scritti in L Traduzione da Lo a L istruzione per istruzione

Implementazione Puramente Compilativa Dati in input Programma scritto in L Compilatore da L a Lo Programma scritto in Lo Dati in output Esecuzione Esecuzione Macchina Astratta Ma Macchina Ospite Mo Traduzione dell intero programma da L a Lo prima di eseguirlo Traduzione è effettuata da un apposito programma, il Compilatore Compilatore: non necessariamente scritto in Lo Può eseguire su una macchina astratta Ma diversa da Mo Lo Cross-compilazione!

Implementazione Ibrida Dati in input Programma scritto in L Compilatore da L a Li Programma Scritto in Li Interprete di Li scritto in Lo Dati in output Esecuzione Esecuzione Macchina Astratta Ma Macchina Ospite Mo Implementazione non puramente compilativa ne puramente interpretativa Compilatore traduce in un linguaggio intermedip Li Interprete (o altro) esegue su Mo Lo programma scritto in Li Java: compilatore bytecode, poi JVM C: compilatore generalmente genera codice che ha bisogno di SO e runtime per eseguire

Implementazioni Ibride - 2 Dipendentemente dalle differenze e similitudini fra Li ed Lo si parla di implementazioni prevalentemente compilative o interpretative Java: Li == bytecode molto diverso da linguaggio macchina Implementazione prevalentemente interpretativa Ma alcune JVM sono basate su compilatori!!! C: Li linguaggio macchina Ma non proprio identico: contiene chiamate a system call, funzioni di libreria,... Eccezione: compilatori freestanding (usati per compilare kernel)

Compilatori vs Interpreti Meglio compilare o interpretare? Dipende... Implementazione puramente interpretativa: Implementazione di M L poco efficiente...... Ma più flessibile e portabile! Debugging semplificato (interpretazione a run-time) Implementazione puramente compilativa: Implementazione di M L più efficiente...... Ma anche più complessa ( distanza fra L e L i /L o! Debugging generalmente più complesso In medio stat virtus...

In Pratica... Come detto, è talvolta difficile stabilire se un linguaggio è prevalentemente compilato o interpretato... Comunque, proviamo Linguaggi tipicamente implementati in modo compilativo: C, C++, FORTRAN, Pascal, ADA Linguaggi tipicamente implementati in modo interpretativo: LISP, ML, Perl, Postscript, Pascal, Prolog, Smalltalk, Java Siamo così sicuri riguardo a Java? E LISP?

Implementazione in Firmware Abbiamo visto come implementare macchine astratte in sw...... Mentre una CPU è un implementazione hw Esistono anche interpretazioni intermedie Esempio: CPU microprogrammate La macchina astratta che esegue il linguaggio macchina della CPU non è implementata in hw...... Ma è implementata da un microinterprete Ciclo fetch/decode/load/execute/save implementato usando microistruzioni invisibili a normali utenti Strutture dati e algoritmi MA realizzati da microprogrammi Alta velocitá, flessibilitá maggiore che hw puro

Definizioni Definizione più formale di interpreti e compilatori... Prima di tutto, programma come funzione Programma scritto in linguaggio L: P L : D D D: insieme dei dati di input ed output del programma P L (i) = o i D: input; o D: output Interpreti e compilatori sono anche loro programmi... Funzioni un po particolari, che ricevono in input altri programmi

Definizione di Interprete Interprete per linguaggio L scritto in linguaggio Lo Implementa macchina astratta M L su macchina astratta Mo Lo Funzione I Lo L : (Pr L D) D Pr L : insieme dei programmi P L scritti in linguaggio L i D,IL Lo (P L,i) = P L (i) Per qualsiasi input i, l interprete applicato a P L ed i ritorna lo stesso risultato ritornato da P L applicato ad i P L (i) è calcolata dalla macchina astratta M L, mentre IL Lo (P L,i) è calcolata dalla macchina astratta ospite Mo Lo

Definizione di Compilatore Compilatore da linguaggio L a linguaggio Lo (scritto in linguaggio La) Implementa M L su Mo Lo......trasformando programmi P L Pr L in programmi P Lo Pr Lo Funzione CL,Lo La : Pr L Pr Lo i D,PC Lo = CL,Lo(P La L ) PC Lo (i) = P L (i) Per qualsiasi input i, il programma compilato PC Lo = CL,Lo(P La L ) applicato ad i ritorna lo stesso risultato ritornato da P L applicato ad i P L (i): calcolata dalla macchina astratta M L ; PC Lo : calcolata dalla macchina ospite Mo Lo Compilatore CL,Lo(P La L ): calcolata da Ma