Informatica Teorica. Macchine a registri
|
|
|
- Annunciata Pagani
- 9 anni fa
- Просмотров:
Транскрипт
1 Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire istruzioni memoria RAM (Random Access Memory) 2 1
2 Random Access Machine memoria costituita da un numero arbitrario di celle (registri) indirizzabili direttamente (RAM) una cella può contenere un intero positivo di un numero qualunque di cifre la cella zero viene chiamata anche accumulatore e ha un ruolo speciale programma sequenza di istruzioni CI = contatore istruzioni cablato nella macchina input programma output 3 Macchine a registri repertorio istruzioni LOAD STORE ADD SUB MULT DIV READ WRITE JUMP JGTZ JZERO HALT =valore registro *registro registro *registro =valore registro *registro =valore registro *registro =valore registro *registro =valore registro *registro registro *registro =valore registro *registro etichetta etichetta etichetta etichetta carica il valore nell accumulatore memorizza l accumulatore nel registro somma all accumulatore sottrae all accumulatore moltiplica l accumulatore divide l accumulatore legge dall input nel registro scrive in output salto non condizionato salto condizionato all accumulatore > 0 salto condizionato all accumulatore = 0 termina la computazione gli operandi (valori, registri, etichette) sono tutti interi *registro realizza l indirizzamento indiretto l indice del registro su cui operare è contenuto nel registro passato come operando 2
3 Macchine a registri programma il programma non è contenuto in memoria ma è cablato nella macchina esempio: programma per il calcolo di x y READ 1 lettura di x dal nastro di ingresso nel registro 1 READ 2 lettura di y dal nastro di ingresso nel registro 2 LOAD =1 STORE 3 inizializzazione del risultato (registro 3) con 1 5 LOAD 2 copio il registro 2 nell accumulatore JZERO 14 fine ciclo while? LOAD 1 MULT 3 moltiplico il risultato per il registro 1 STORE 3 LOAD 2 SUB =1 decremento il registro 2 STORE 2 JUMP 5 14 WRITE 3 stampa del risultato HALT queste 9 istruzioni costituiscono un ciclo 5 Modelli di costo per RAM: costi uniformi modello a costi uniformi: costo unitario per l esecuzione di ogni istruzione esempio eseguire il programma per calcolare x y costa O(y) poiché le 9 istruzioni del ciclo vengono eseguite y volte critica calcolare costa quanto calcolare critica il costo per accedere ad una cella di memoria è indipendente dal numero di celle 3
4 Modelli di costo per RAM: costi logaritmici modello a costi logaritmici definiamo la funzione l(n) l(n) = 1 se n=0 l(n) = log n = int(log n) + 1 se n>0 l elaborazione di un intero n ha costo l(n) l accesso al registro i ha costo l(i) il salto all etichetta e ha costo l(e) Modelli di costo per RAM esempio: valutazione di costo con modello a costi logaritmici READ 1 l(1)+l(x) O(log x) READ 2 l(2)+l(y) O(log y) LOAD =1 l(1) O(1) STORE 3 l(3)+l(1) O(1) 5 LOAD 2 l(2)+l(y) O(log y) JZERO 14 l(y) O(log y) LOAD 1 l(1)+l(x) O(log x) MULT 3 l(3)+l(x)+l(x y ) O(log x + y log x) STORE 3 l(3)+l(x y ) O(y log x) LOAD 2 l(2)+l(y) O(log y) SUB =1 l(1)+l(y) O(log y) STORE 2 l(2)+l(y) O(log y) JUMP 5 1 O(1) 14 WRITE 3 l(3)+l(x y ) O(y log x) HALT 1 O(1) la porzione di codice dentro la cornice viene eseguita O(y) volte costo di esecuzione: O(y 2 log x) queste 9 istruzioni costituiscono un ciclo 8 4
5 Modelli di costo per RAM osservazione: in pratica in situazioni in cui non si debbano fare operazioni aritmetiche ed in cui le dimensioni della memoria sono prefissate i due modelli coincidono osservazione: la presenza di operazioni aritmetiche con precisione infinita impone l uso di modelli di calcolo analoghi al modello a costi logaritmici critica: nel modello a costi logaritmici la moltiplicazione dovrebbe costare di più della addizione; allo stato attuale non esiste un algoritmo che calcoli la moltiplicazione tra 2 interi ad n bit in meno di n log n 9 RAM e calcolabilità una funzione f: N n N è calcolabile da una RAM se esiste un programma P tale che: se f(x 1,...,x n )=y P, attivato con x 1,...,x n sul nastro di input, termina con y sul nastro di output se f(x 1,...,x n ) non è definita P non termina 5
6 teorema MT e RAM sia M=<Σ={1},b,K,q 0,F,δ> una MT con nastro seminfinito che computa q 0 x * q F y esiste una RAM che se ha la stringa x nelle celle 2,..., x +1, al termine della computazione ha la stringa y nelle celle 2,..., y +1 inoltre la RAM simula T passi di M in tempo O(T log T) nel modello a costi logaritmici MT e RAM: dimostrazione stabiliamo una corrispondenza tra la cella i del nastro di M e la cella i+1 della memoria della RAM M 1 b 2 x 1 3 x 2 4 x 3 5 x 4 6 x 5 7 x 6 8 x 7 9 x 8 x 9 x 12 x 13 x x b 16 b RAM x 1 4 x 2 5 x 3 6 x 4 7 x 5 usiamo la cella 1 della RAM per rappresentare la posizione della testina di M all inizio la cella 1 contiene il valore 2, che è la posizione iniziale della testina di M P contiene una sequenza di istruzioni per ogni stato di M analogamente alle MT elementari 8 x 6 9 x 7 x 8 x 9 12 x 13 x 14 x x
7 Dimostrazione (MT RAM) esempio: se δ(q 1,b)=<q 2,1,d> e δ(q 1,1)=<q 3,b,s> scrittura di un 1 sul nastro allora P contiene... q 1 LOAD *1 acquisizione del contenuto del nastro JGTZ q1' lettura di un 1 o di uno 0? LOAD =1 STORE *1 scrittura di uno 0 sul nastro 13 Dimostrazione (MT RAM) ogni passo di M è simulato da al più 8 istruzioni ognuna con costo O(log maxmem) maxmem è il max numero di celle usate da M se M esegue T passi allora maxmem T+1 costo complessivo O(T log T) 14 7
8 teorema RAM e MT data una RAM con programma P che calcola la funzione f esiste una MT M tale che se f(x 1,...,x n )=y e sul nastro di input sono memorizzati in binario gli interi x 1,...,x n la macchina M termina con la rappresentazione binaria di y sul nastro di output se f(x 1,...,x n ) non è definita M non termina se la computazione della RAM ha costo T nel modello a costi logaritmici allora M la simula in O(p(T)) passi p(t) è un polinomio in T dimostrazione la dimostrazione è costruttiva M ha cinque nastri: uno di input, uno di output e tre nastri di lavoro dei tre nastri di lavoro il nastro 1 memorizza in binario i dati contenuti nella memoria della RAM (accumulatore escluso) preceduti dal proprio indirizzo, rappresentato in binario il nastro 2 rappresenta il contenuto dell accumulatore il nastro 3 è usato come memoria temporanea per il funzionamento di M 8
9 memoria della RAM i mem[i] nastro 1 della MT $ $ 1 $ 1 1 $ $ $ $ $ $ 1 0 $ $ $ 1 $ $ 17 per ogni istruzione del programma della RAM, M ha un insieme di stati per emulare le sue operazioni istruzioni di salto (JUMP, JGTZ, JZERO, HALT) si controlla se il contenuto dell accumulatore verifica le condizioni di salto si gestiscono i corrispondenti cambiamenti di stato 18 9
10 istruzioni che non modificano il contenuto della memoria (LOAD, ADD, SUB, MULT, DIV, WRITE) si cerca sul nastro 1 la cella di memoria che contiene l operando si esegue l operazione prevista aggiornando il valore dell accumulatore (nastro 2) istruzioni che modificano il contenuto della memoria (STORE, READ) si trascrive sul nastro 3 il contenuto del nastro 1 per tutto ciò che è a destra della cella di memoria da modificare si esegue l operazione si ricopia sul nastro 1 il contenuto del nastro 3 a destra della cella modificata 19 analisi di complessità ogni sequenza di transizioni relativa ad un operazione di RAM costa ad M, nel caso peggiore, un tempo polinomiale nell ordine della massima lunghezza lungmax del nastro 1 quindi se la RAM opera con costo totale T la MT M opera in tempo O(T p(lungmax))
11 memoria della RAM i mem[i] nastro 1 della MT $ $ 1 $ 1 1 $ $ $ $ $ $ 1 0 $ $ $ 1 $ $ ogni sequenza di transizioni relativa ad un operazione di RAM costa ad M, nel caso peggiore, un tempo polinomiale nell ordine della massima lunghezza lungmax del nastro 1 21 memoria della RAM i mem[i] nastro 1 della MT $ $ 1 $ 1 1 $ $ $ $ $ $ 1 0 $ $ $ 1 $ $ ogni sequenza di transizioni relativa ad un operazione di RAM costa ad M, nel caso peggiore, un tempo polinomiale nell ordine della massima lunghezza lungmax del nastro 1 quindi se la RAM opera con costo totale T la MT M opera in tempo O(T p(lungmax)) infatti con costo T la RAM ha eseguito al più T istruzioni 22
12 nel modello a costi logaritmici se sul nastro 1 è presente l indirizzo i la RAM ha acceduto almeno in M l indirizzo i occupa sul una volta alla cella di indirizzo i nastro 1 proprio log i celle e quindi ha pagato almeno una volta log i se sul nastro 1 compare il contenuto della cella i la RAM ha pagato almeno una volta log(mem[i]) in M mem[i] occupa su nastro 1 proprio log(mem[i]) celle quindi lungmax T quindi il costo totale è O(T p(lungmax)) = O(T p(t)) memoria della RAM i mem[i] nastro 1 della MT $ $ 1 $ 1 1 $ $ $ $ $ $ 1 0 $ $ $ 1 $ $ T = T1 + T2 + T3 +T4 + T5 + T6 + T7 + T
13 Conclusioni tutto ciò che è calcolabile con una MT è calcolabile anche con una RAM e viceversa osservazione una MT ed una RAM con modello a costi logaritmici possono simularsi a vicenda in tempo polinomiale per stabilire se un problema ammette una soluzione calcolabile in tempo polinomiale possiamo indifferentemente far riferimento ad una MT o ad una RAM a costi logaritmici 25 tesi di Church-Turing i vari modelli di calcolo introdotti per definire la computabilità hanno al più lo stesso potere computazionale delle MT 13
PARTE III MACCHINE A REGISTRI
PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson
Fondamenti dell informatica
Fondamenti dell informatica Macchine a registri Rosario Culmone [email protected] 9/4/2008 UNICAM - p. 1/24 Modello di calcolo basato sui calcolatori Le macchine a registri (RAM: Random Access
Macchine a registri RAM (Random Access Machines)
Macchine a registri RAM (Random Access Machines) Introdotte da Shepherdson e Sturgis nel 1963 per sviluppare la teoria della calcolabilità con un modello astratto di un reale calcolatore (macchina di von
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali 1 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann,
Elaborazione dell informazione
Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione
La Macchina RAM Shepherdson e Sturgis (1963)
La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni
Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD
Macchine RAM API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD 2 Macchina RAM 3 Esercizio Si consideri il linguaggio definito da: L = wcw R w a, b } 1. Codificare un programma RAM per il riconoscimento
Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni
Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da
Architettura hardware
Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche
3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni
Sistemi di Elaborazione delle Informazioni
SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 Programma del corso Informatica di
Il linguaggio macchina
Università degli Studi di Palermo Facoltà di Ingegneria Il linguaggio macchina Edoardo Ardizzone & Ignazio Infantino Appunti per il corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Informatica
Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione
Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina
Architettura dei computer
Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale (memoria centrale, RAM) la memoria secondaria i dispositivi di input/output La
Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo
Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Marco Liverani ([email protected])
Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.
Algoritmi e Strutture Dati Macchina RAM Nastro di ingresso Modelli di calcolo e metodologie di analisi Contatore istruzioni Programm a Accumulatore Unità centrale M[0] M[1] Nastro di uscita Basato su materiale
Architettura degli Elaboratori
Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni
Architettura dei computer
Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale la memoria secondaria i dispositivi di input/output 1 Fornisce la capacità di
Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.
Fondamenti di Informatica Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a. 2011-2012 Algoritmo L algoritmo è una sequenza finita di istruzioni, mediante le quali un qualunque operatore
Architettura del calcolatore (Seconda parte)
Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly
Componenti e connessioni. Capitolo 3
Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura
Il processore: unità di controllo
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
Architettura di un calcolatore e ciclo macchina. Appunti per la classe 3 Dinf
Architettura di un calcolatore e ciclo macchina Appunti per la classe 3 Dinf Il Sistema di Elaborazione Computer Hardware Software 2 Hardware Struttura fisica del calcolatore formata dai circuiti elettronici
Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni
Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria
STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER
1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER Un computer e una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono
Componenti principali
Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria
ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!
ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! MACCHINA DI VON NEUMANN! UNITÀ FUNZIONALI fondamentali! Processore
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo
Programmazione in linguaggio assembly per architetture Intel 8088
Programmazione in linguaggio assembly per architetture Intel 8088 Marco Di Felice 1 Università of Bologna Dipartimento di Scienze dell Informazione Corso di Architettura degli Elaboratori mail: [email protected]
Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori
Programma del corso Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Cos è un Calcolatore? Un computer (calcolatore) è una macchina
Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd
Fondamenti d Informatica: Le Macchine di Turing Barbara Re, Phd Agenda } Introdurremo } il formalismo delle Macchine di Turing nelle varie versioni } la nozione di calcolabilità e di decidibilità 2 La
Architettura del Calcolatore
Giuseppe Manco Lezione 3 17 Ottobre 2003 Architettura del calcolatore Il calcolatore è uno strumento programmabile per la rappresentazione, la memorizzazione e l elaborazione delle informazioni un calcolatore
ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI
ELEMENTI DI PROGRAMMAZIONE a.a. 22/3 MACCHINE, ALGORITMI, PROGRAMMI Andrea Prevete, UNINA2 23 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a stati finiti)... macchine di
