Informatica Teorica. Macchine a registri



Похожие документы
PARTE III MACCHINE A REGISTRI

Fondamenti dell informatica

Macchine a registri RAM (Random Access Machines)

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Elaborazione dell informazione

La Macchina RAM Shepherdson e Sturgis (1963)

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Architettura hardware

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

Sistemi di Elaborazione delle Informazioni

Il linguaggio macchina

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura dei computer

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.

Architettura degli Elaboratori

Architettura dei computer

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Architettura del calcolatore (Seconda parte)

Componenti e connessioni. Capitolo 3

Il processore: unità di controllo

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

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

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

Componenti principali

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

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Programmazione in linguaggio assembly per architetture Intel 8088

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

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

Architettura del Calcolatore

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

Транскрипт:

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

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

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 1.000.000 1.000.000 critica il costo per accedere ad una cella di memoria è indipendente dal numero di celle 3

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

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

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 12 14 x 13 15 b 16 b RAM 0 1 2 2 0 3 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 12 15 x 13 16 0 17 0 6

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

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

memoria della RAM i mem[i] 1 0 01 1 1 1 00 1 01. nastro 1 della MT $ $ 1 $ 1 1 $ $ 1 0 0 $ 1 0 0 1 $ $ 1 0 1 $ 1 0 $ $ 1 0 0 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

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

memoria della RAM i mem[i] 1 0 01 1 1 1 00 1 01. nastro 1 della MT $ $ 1 $ 1 1 $ $ 1 0 0 $ 1 0 0 1 $ $ 1 0 1 $ 1 0 $ $ 1 0 0 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] 1 0 01 1 1 1 00 1 01. nastro 1 della MT $ $ 1 $ 1 1 $ $ 1 0 0 $ 1 0 0 1 $ $ 1 0 1 $ 1 0 $ $ 1 0 0 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

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] 1 0 01 1 1 1 00 1 01. nastro 1 della MT $ $ 1 $ 1 1 $ $ 1 0 0 $ 1 0 0 1 $ $ 1 0 1 $ 1 0 $ $ 1 0 0 0 $ 1 $ $ T = T1 + T2 + T3 +T4 + T5 + T6 + T7 + T8 24 12

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