La Macchina RAM Shepherdson e Sturgis (1963)

Похожие документы
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

La macchina universale

Tipologie di macchine di Turing

Architettura hardware

Varianti Macchine di Turing

Esercizio su MT. Svolgimento

Informatica Teorica. Macchine a registri

PARTE III MACCHINE A REGISTRI

I sistemi di numerazione

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Von Neumann. John Von Neumann ( )

Le Macchine di Turing

L interesse nella macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing

Ing. Paolo Domenici PREFAZIONE

Prelievo di un istruzione. Istruzioni macchina. Tipi di istruzioni. Registri principali della CPU e loro ruolo

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Il Processore: i registri

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Nozione di algoritmo. Gabriella Trucco

Le parole dell informatica: modello di calcolo, complessità e trattabilità

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Complessità Computazionale

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

Testi di Esercizi e Quesiti 1

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

2) Codici univocamente decifrabili e codici a prefisso.

CPU. Maurizio Palesi

Programmazione dinamica

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Operazioni di input e output in Fortran 90

Architettura di un Elaboratore

Esame di INFORMATICA

Calcolo numerico e programmazione Architettura dei calcolatori

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

CRITERI DI CONVERGENZA PER LE SERIE. lim a n = 0. (1) s n+1 = s n + a n+1. (2) CRITERI PER LE SERIE A TERMINI NON NEGATIVI

Architettura di un computer

Lezione n.9. Introduzione al linguaggio macchina

Introduzione al MATLAB c Parte 2

Intorni Fissato un punto sull' asse reale, si definisce intorno del punto, un intervallo aperto contenente e tutto contenuto in

1.4b: Hardware. (Memoria Centrale)

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

Equazioni non lineari

un nastro di carta prolungabile a piacere e suddiviso in celle vuote o contenenti al più un unico carattere;

Introduzione. Informatica B. Daniele Loiacono

Rappresentazione dei numeri in un calcolatore

Matematica generale CTF

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Fondamenti dell informatica

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Architettura del calcolatore

C. P. U. MEMORIA CENTRALE

Crittografia. Primalità e Fattorizzazione. Corso di Laurea Specialistica. in Informatica

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Capitolo 7: Teoria generale della calcolabilitá

LABORATORIO DI SISTEMI

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Strutturazione logica dei dati: i file

Matlab: Strutture di Controllo. Informatica B

La memoria centrale (RAM)

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Algoritmi e strutture dati. Codici di Huffman

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

Architettura di un calcolatore

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:

Utilizzo delle formule in Excel

Le macchine di Turing

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Funzioni. Il modello console. Interfaccia in modalità console

E naturale chiedersi alcune cose sulla media campionaria x n

L utility Unix awk [Aho-Weinberger-Kernighan]

EQUAZIONI DIFFERENZIALI. 1. Trovare tutte le soluzioni delle equazioni differenziali: (a) x = x 2 log t (d) x = e t x log x (e) y = y2 5y+6

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Lezione n.19 Processori RISC e CISC

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Dispense del corso di Logica a.a. 2015/16: Problemi di primo livello. V. M. Abrusci

Rendering air show e verifica della sincronizzazione

Strumenti e metodi per la redazione della carta del pericolo da fenomeni torrentizi

Elementi di teoria dei segnali /b

Algoritmi di Ricerca. Esempi di programmi Java

Elementi di Informatica e Programmazione

Gestione della Memoria

Fondamenti di Informatica 2

Architettura dei calcolatori II parte Memorie

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6

Транскрипт:

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 CODOP =x x è operando immediato CODOP x L operando si trova memorizzato in M[x] (Indirizzamento diretto) LDA x M [x] op CODOP *x L operando si trova memorizzato in M [ M[x] ] (Indirizzamento indiretto) M [y] op LDA *x M [x] y CODOP label Essendo label una stringa alfanumerica si introduce la funzione b(label) che!! associa un numero intero ad una label.

Un set di istruzioni LDA = x M[] & x LDA x M[] & M[x] LDA *x M[] & M[M[x]] ADD =x M[] & M[] + x ADD x M[] & M[] + M[x] ADD *x M[] & M[] + M[M[x]] STO x M[x] & M[] STO *x M[M[x]] & M[] SUB =x M[] & M[] - x SUB x M[] & M[] - M[x] SUB *x M[] & M[] - M[M[x]] READ x M[x]& valore in input READ *x M[M[x]]& valore in input WRITE = x Stampa in uscita x WRITE x Stampa in uscita M[x] WRITE *x Stampa in uscita M[M[x]] JMP label JSP label JSZ label PC & b(label) if M[] > PC & b(label) else PC& PC+ if M[] = PC & b(label) else PC& PC+ HLT Fine della computazione Si osservi che per ogni istruzione che non sia dì salto o l istruzione di HLT si ha sempre PC& PC +

Esempio di programma sulla RAM READ READ 2 loop: LDA SUB 2 JSZ halt LDA! SUB 2 JSP via LDA STO 3 LDA 2 STO LDA 3 STO 2 via: LDA SUB 2 STO JMP loop halt: WRITE HLT Start a, b a = b a < b a = a - b T T MCD di due numeri interi a Stop a b

Valutazione della complessità computazionale nella RAM Criterio del costo uniforme - Si fa l assunzione che ciascuna istruzione richieda una unità di tempo - Ciascuna locazione di memoria, compreso l accumulatore, richieda una unità di spazio Il modello a costi uniformi è giudicato come poco realistico in quanto: - il costo di esecuzione di una istruzione risulta indipendente dalla dimensione del dato - l accesso ad un registro di memoria risulta unitario indipendentemente dal numero dei registri accessibili. In altre parole il criterio del costo uniforme non potrebbe modellare valutazioni di complessità per dati arbitrariamente grandi e per occupazioni di memoria anch esse arbitrariamente grandi, in quanto suppone che sia possibile accedere ad una quantità di informazione illimitata in un tempo limitato.

Valutazione della complessità computazionale nella RAM Criterio del costo logaritmico - Si fa l assunzione che il tempo richiesto per eseguire l istruzione sia proporzionale alla lunghezza degli operandi. Si introduce la funzione l (n) definita come l (n) = if n = then else - log 2 n - + per valutare il costo di una istruzione si considerano i seguenti contributi. l elaborazione di un operando ha un costo l (n) 2. l accesso ad un registro i viene valutato come l (i) - Si applica la medesima filosofia per l occupazione di spazio Sia m l indirizzo più alto del registro di memoria cui si fa accesso durante l esecuzione del programma e sia M i il valore assoluto più grande immagazinato allora: m! i l (M i ) definisce la complessità spaziale logaritmica

LDA = x l(x) LDA x l(x) + l(m[x] ) LDA *x l(x) + l(m[x] ) + l(m[m[x]]) STO x l (M[]) + l(x) STO *x l (M[]) + l(x) + l(m[x] ) Costi logaritmici ADD =x l (M[]) + l(x) ADD x l (M[]) + l(x) + l(m[x] ) ADD *x l (M[]) + l(x) + l(m[x] ) + l(m[m[x]]) READ x l(val) + l(x) READ *x l(val) + l(x) + l(m[x] ) WRITE = x l(x) WRITE x l(x) + l(m[x] ) WRITE *x l(x) + l(m[x] ) + l(m[m[x]]) JMP label JSP label l (M[]) JSZ label l (M[]) HLT

Valutazione della complessità dell algoritmo per il MCD Una digressione sulla teoria dei numeri Si consideri la successione di Fibonacci 2 3 5 8 3 2 34 55... Si dimostra che l n-esimo numero della successione può essere calcolato come F =! n / #5 dove! =.6833989 n se si considera b = F ed a = F si può ricavare una relazione tra n e a (oppure b) n+ n+2 a = F n+2 =! n+2 / #5 n = log! (a #5 ) - 2 Si fa uso del seguente risultato (Teorema di G. Lamè): siano a e b tali che a > b> e sia n ", se a e b sono due numeri di Fibonacci tali che a = F n+2 e b = F n+ allora l applicazione del metodo di Euclide per il calcolo del MCD richiede n divisioni e rappresenta il caso peggiore.

Valutazione della complessità dell algoritmo per il MCD cont. Start MCD di due numeri interi a, b Esempio: a = 34 = F 9 a = b T a Stop b = 2 = F 8 n = 7 a < b T a b a = a - b 34 3 2 2 2 3 8 3 3 8 5 8 8 5 3 5 5 3 2 3 3 2 2 2 2 3 4 5 6 7

Ripetizioni $ READ READ 2 $ loop: LDA n+ SUB 2 n+ JSZ halt n+ LDA$ n SUB 2 n JSP via n LDA n- STO 3 n- LDA 2 n- STO n- LDA 3 n- STO 2 n- via: LDA n SUB 2 n STO n JMP loop n halt: WRITE HLT T(n) = 3(n+)+6(n-)+7n+4= 6n+ T(n) = 6[log! (a #5 )] - 3 Valutazione con costi uniformi n Start a, b a = b n a < b a = a - b T T n- MCD di due numeri interi a a b n- poiché a > b e n = log! (a #5 ) - 2 si ha O(log(a)) Stop

Valutazione con costi logaritmici Ripetizioni $ READ l() + l(a) READ 2 l(2) + l(b) loop: LDA n+ l() + l(m[]) SUB 2 n+ l(m[]) + l(2)+l(m[2]) "+2 l(a) JSZ halt n+ l(m[]) l(a) LDA$ n l() + l(m[]) SUB 2 n l(m[]) + l(2)+l(m[2]) "+2 l(a) JSP via n l(m[]) l(a) LDA n- l() + l(m[]) STO 3 n- l(m[]) + l(3) LDA 2 n- l(2)+l(m[2]) STO n- l(m[]) + l() LDA 3 n- l(3)+l(m[3]) STO 2 n- l(m[]) + l(2) via: LDA n l() + l(m[]) SUB 2 n l(m[]) + l(2)+l(m[2]) "+2 l(a) STO n l(m[]) + l() JMP loop n halt: WRITE l() + l(m[]) HLT si fa l ipotesi che l accesso a un registro sia costante es: "=2 inoltre a > b per cui si normalizza a l(a) pertanto T(n) = 8 n l(a) + l(a) + 27 n - O(log 2 (a))

Equivalenza dei modelli di calcolo (MT # RAM) Teorema. Una Macchina di Turing multinastro con complessità temporale T può essere simulata da una macchina RAM con complessità O(T) secondo il criterio del costo uniforme e O(T log(t)) secondo il criterio del costo logaritmico. La chiave della dimostrazione è l isomorfismo tra il nastro della MT e la memoria della RAM supposto che nelle celle della MT vi sia un digit / e che si faccia coincidere la cella i-esima del nastro della MT con il registro di memoria i+-esimo della RAM. Il registro della RAM indicherà l attuale posizione della testina di lettura/ scrittura della MT (inizializzata a 2). Se ad esempio la MT prevede le seguenti due transizioni " (p,) (q,,d) e " (p, ) (p,,s) il seguente frammento implementa le due transizioni: p LOAD * Carica il valore della prima cella del nastro nell accumulatore JSP p poiché nel nostro caso il valore è si va in sequenza LOAD = STORE * cambia il valore da ad nella cella puntata dal registro LOAD ADD = STORE spostamento a destra della testina di lettura/scrittura JUMP q vai allo stato q p LOAD SUB = STORE spostamento a sinistra della testina di lettura/scrittura JUMP p... 2 3 4 5 2 RAM... M T

Equivalenza dei modelli di calcolo (MT # RAM) La macchina RAM riesce a simulare una transizione della MT in al più 8 istruzioni perché tante sono le istruzioni necessarie per realizzare transizioni in cui tutti gli elementi vengono variati. p LOAD * Ciascuna istruzione della RAM ha un costo che è al più O(log i max) dove i max indica il massimo numero di celle usate dalla MT quindi se la MT effettua T passi il costo complessivo del programma sulla RAM è O(T logt). Si osservi che nel caso si consideri il costo uniforme, non misurando l accesso alla memoria in termini logaritmici il costo complessivo è evidentemente O(T) JSP p LOAD = STORE * LOAD ADD = STORE JUMP q p LOAD SUB = STORE JUMP p...

Equivalenza dei modelli di calcolo (RAM # MT) Teorema: Si consideri un linguagio L accettato da una RAM con complessità temporale T secondo il criterio del costo logaritmico. E allora possibile costruire una macchina di Turing Multinastro che riconosce L in un tempo O(T 2 ). Oltre a due nastri TI e To che contengono l input e l output della Macchina RAM ci sono altri tre nastri che codificano: - T la memoria della RAM secondo la seguente convenzione: sia {i j j=,...k} l insieme degli indici tali che in un dato istante M[i j ] risulti inizializzato, il nastro T viene rappresentato come: T... $ $ $ M[i ] $ $... $ $ $ M[i k ] $ $... i dove il carattere $ viene usato come separatore, ed i simboli ij e M[ij ] vengono codificati in binario. - T2 contiene l accumulatore M[] codificato in binario - T3 viene usato come memoria temporanea. i k

Equivalenza dei modelli di calcolo (RAM # MT) Simulazione di alcune istruzioni significative della macchina RAM sulla MT. LOAD h - si cerca sul nastro T la sequenza $$ h $ M[h] $$ a partire dal margine sinistro del nastro se non viene trovata la macchina va in errore. - si copia il valore M[h] sul nastro T2 [l accumulatore] STORE h. si cerca sul nastro T la sequenza $$ h $ M[h] $$ se la ricerca fallisce vuol dire che ci troviamo in uno dei seguenti due casi: a) i k < h [indirizzamento ad un punto della memoria non ancora acceduto] $ in questo caso si memorizza la sequenza h $ M[] $$ al limite destro di T b) esiste un j < k tale che ij < h < ij+ [indirizzamento ad un punto della memoria non ancora acceduto] in questo caso: - si copia la porzione di T alla destra di ij $ M[ij] $ $ in T3 $ - si memorizza la sequenza h $ M[] $$ alla destra di i j $ M[i j ] $ $ - si memorizza il contenuto di T 3 alla destra di h $ M[] $$ 2. altrimenti si è trovato sul nastro un j tale che ij = h allora - si copia la porzione di T alla destra di h $ M[h] $ $ in T3 - si memorizza M[] $ $ alla destra di h $ in T $ - si copia il contenuto di T 3 alla destra di h $ M[] $ $ in T 3

Equivalenza dei modelli di calcolo (RAM # MT) Per quanto riguarda la valutazione dei costi in questo caso c è una notevole differenza qualora si consideri il costo logaritmico ed il costo uniforme. Nel caso del costo logaritmico, essendo questa una valutazione più accurata, se la macchina RAM lavora in un tempo T la MT lavora in un tempo O(T 2 ). Si ha infatti che la lunghezza del nastro T della MT avrà una lunghezza massima limitata da tmax ciò significa che nel caso peggiore ogni istruzione della RAM, simulata sulla MT, necessita di accedere a tutto il nastro. D altra parte ogni istruzione della RAM necessita di impiegare almeno un log(i) per l accesso all indirizzo del dato e log M[i] per l accesso al dato. Pertanto la MT deve pagare lo stesso tempo T della macchina RAM per l accesso ai dati più un fattore tmax < T per l esecuzione dell istruzione, da qui la valutazione O(T 2 ). Questo ragionamento non è valido se si valuta la RAM con costi uniformi, infatti una macchina a costi uniformi può valutare numeri 2 2n in un tempo O(n) [cioé calcola un numero di taglia esponenziale in un tempo lineare], mentre una MT richiederà 2 n celle per memorizzarli e leggerli, quindi necessiterà di almeno O(2 n ) passi per poterli calcolare. Ne consegue che le due complessità non sono polinomialmente correlate.

Equivalenza dei modelli di calcolo La macchina RAM con costi logaritmici e la macchina di Turing multinastro sono correlate polinomialmente. Se la complessità di un modello è O(T) la complessità dell altro è O(P. T) dove P è una funzione polinomiale Tutti i modelli computazionali adottando ipotesi ragionevoli per le misure di costo, hanno funzioni di complessità spaziale e temporale correlate polinomialmente. (Quest ultimo enunciato è considerato il corrispettivo della tesi di Church per la complessità computazionale).