Von Neumann. John Von Neumann (1903-1957)



Documenti analoghi
CPU. Maurizio Palesi

Architettura del calcolatore

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

Architettura hw. La memoria e la cpu

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

Struttura del calcolatore

C. P. U. MEMORIA CENTRALE

Architettura hardware

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

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

Esame di INFORMATICA

Il Processore: i registri

L architettura di riferimento

Architettura dei calcolatori

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

Laboratorio di Informatica

Dispensa di Informatica I.1

Architettura di un calcolatore

Introduzione all'architettura dei Calcolatori

Funzionalità di un calcolatore

Ing. Paolo Domenici PREFAZIONE

Parte II.2 Elaboratore

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Lezione 3: Architettura del calcolatore

La Macchina Virtuale

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

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

L architettura del calcolatore (Prima parte)

Lezione n.19 Processori RISC e CISC

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

Lezione n.9. Introduzione al linguaggio macchina

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

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

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

ARCHITETTURA DELL ELABORATORE

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Testi di Esercizi e Quesiti 1

Linguaggi di programmazione

Architettura di un calcolatore: introduzione

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

La macchina programmata Instruction Set Architecture (1)

La macchina di Von Neumann

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

FONDAMENTI di INFORMATICA L. Mezzalira

Calcolo numerico e programmazione Architettura dei calcolatori

Informazione analogica e digitale

Architettura degli elaboratori (A)

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

introduzione I MICROCONTROLLORI

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Descrizione di un algoritmo

RETI E SISTEMI INFORMATIVI

L unità di elaborazione pipeline L unità Pipelining

INFORMATICA 1 L. Mezzalira

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

Vari tipi di computer

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

SISTEMI DI NUMERAZIONE E CODICI

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

I sistemi di elaborazione

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

4. Operazioni aritmetiche con i numeri binari

UNITÀ DI ELABORAZIONE (CPU) UNITÀ DI ELABORAZIONE (CPU) Opcode OpCode Operazione

Calcolatori Elettronici A a.a. 2008/2009

Memoria Secondaria o di Massa

Sistema operativo: Gestione della memoria

Informatica - A.A. 2010/11

Programma ARCHITETTURA DI UN ELABORATORE MACCHINA DI VON NEUMANN CPU & MEMORIA UNITÀ DI ELABORAZIONE (CPU) Questa settimana:

INFORMATICA E COMPUTER : INTRODUZIONE

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

Programmazione dello Z80

Algebra Booleana ed Espressioni Booleane

Calcolatori Elettronici

I componenti di un Sistema di elaborazione. CPU (central process unit)

Architettura di un computer

Architettura di un Elaboratore

4 3 4 = 4 x x x 10 0 aaa

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Hazard sul controllo. Sommario

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

Corso di Informatica

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

L Assembler Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Corso di Sistemi di Elaborazione delle informazioni

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico-

La Macchina RAM Shepherdson e Sturgis (1963)

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Gestione della memoria centrale

Realizzazione del controllo

Rappresentazione delle informazioni

Arduino: Programmazione

Transcript:

Linguaggio macchina

Von Neumann John Von Neumann (1903-1957) Inventore dell EDVAC (Electronic Discrete Variables AutomaFc Computer), la prima macchina digitale programmabile tramite un soiware basata su quella che poi sarà definita l architenura di Von Neumann

Macchina di Von Neumann È il modello secondo il quale è organizzata la maggior parte dei moderni elaboratori ComponenF della macchina di Von Neumann:

Il modello di Von Neumann: CPU La CPU o unità centrale di elaborazione è cosftuita dai circuif elenronici capaci di leggere (dalla memoria centrale), decodificare (interpretare) ed eseguire (impartendo gli opportuni comandi alle varie parf del sistema) le istruzioni di un programma, una alla volta L esecuzione delle istruzioni può comportare operazioni di elaborazione di daf (per esempio, operazioni aritmefche) o di trasferimento di daf (per esempio dalla memoria centrale all interfaccia di una periferica)

Il modello di Von Neumann: memoria centrale La memoria centrale confene le istruzioni di un programma e i daf necessari alla sua esecuzione Le periferiche sono le apparecchiature che consentono all elaboratore di scambiare informazioni con il mondo esterno, mediante operazioni di ingresso (verso l elaboratore) e uscita (verso l esterno)

Il modello di Von Neumann: periferiche Vengono considerate appartenenf alla macchina di Von Neumann solo interfacce verso le periferiche, mentre le periferiche sono considerate componenf separaf Nel modello di Von Neumann anche le memorie di massa sono incluse tra le periferiche, in quanto funzionalmente analoghe a queste ulfme, dal punto di vista dell interazione con l elaboratore

Il modello di Von Neumann: bus Il bus di sistema assicura l interconnessione tra gli elemenf della macchina di Von Neumann: tux i trasferimenf di daf avvengono anraverso il bus Il bus mene in collegamento logico i due elemenf coinvolf nel trasferimento, in funzione dell operazione da eseguire, mentre il collegamento fisico è sempre presente

Il modello di Von Neumann Le fasi di elaborazione si succedono in modo sincrono rispeno alla cadenza imposta da un orologio di sistema (clock) L unità di controllo, contenuta dentro la CPU, durante ogni intervallo di tempo coordina le axvità che vengono svolte dentro la stessa CPU o negli altri elemenf del sistema Il limite più evidente del modello di Von Neumann è la rigida sequenzialità del suo funzionamento Le evoluzioni di questo modello prevedono per lo più l introduzione di forme di parallelismo nella esecuzione delle axvità di elaborazione

Funzionamento della macchina di Von Neumann: le istruzioni DaF e istruzioni di programma sono codificate in forma binaria, mediante sequenze finite di bit Un istruzione codificata si compone di due parf: il codice operafvo e uno o più operandi Il codice operafvo individua, secondo una convenzione dipendente dalla specifica macchina, l istruzione da eseguire Per ogni macchina esistono tanf codici operafvi differenf quante sono le istruzioni presenf nell insieme (set) delle istruzioni che la macchina è in grado di interpretare ed eseguire

Funzionamento della macchina di Von Neumann: le istruzioni Gli operandi contengono, in una forma codificata dipendente dalla specifica macchina, le informazioni necessarie a reperire i daf sui quali l istruzione deve operare Il linguaggio macchina è quindi strenamente legato all architenura della macchina

Funzionamento della macchina di Von Neumann: la memoria centrale ConceNualmente la memoria centrale può essere vista come una sequenza di celle: ogni cella di memoria confene una parola o word Le parole di un elaboratore hanno tune la stessa lunghezza, mentre elaboratori differenf possono avere parole di lunghezza differente Valori Fpici della lunghezza di parola: 8/16/32/64 bit SchemaFcamente la memoria può essere rappresentata come una tabella

Funzionamento della macchina di Von Neumann: la CPU La figura mostra i componenf funzionali della CPU e le loro interconnessioni Unità di controllo (CU): è responsabile del prelievo delle istruzioni dalla memoria centrale, della loro decodifica e dell invio di segnali di controllo che danno luogo alle operazioni necessarie per l esecuzione dell istruzione decodificata

Funzionamento della macchina di Von Neumann: la CPU Orologio di sistema (clock): sincronizza le operazioni rispeno ad una certa frequenza

Funzionamento della macchina di Von Neumann: la CPU Unità aritmefco- logica (ALU): effenua le operazioni aritmefche e logiche (eventualmente) richieste per l esecuzione dell istruzione

Funzionamento della macchina di Von Neumann: la CPU La CPU confene inoltre diversi registri. I principali sono: Registro daf (DR), lungo H bit Registro indirizzi (AR), lungo K bit Registro istruzione corrente (CIR), lungo H bit: confene in ogni istante l istruzione in esecuzione Contatore di programma (PC), lungo K bit: confene l indirizzo della successiva istruzione da eseguire Registro interruzioni (INTR), confene informazioni sullo stato di funzionamento delle periferiche Registri contenenf operandi e risultato delle operazioni aritmefco- logiche (per esempio A e B) Registri di lavoro, contenenf daf ed istruzioni di uso frequente, oppure risultaf intermedi

Funzionamento della macchina di Von Neumann: la CPU Registro di stato (SR), confene indicazioni relafve al risultato delle operazioni effenuate dalla ALU. Tra queste: Bit di carry o riporto (indica la presenza di un riporto) Bit di zero (è 1 se c è valore nullo in A) Bit di segno (è il segno del risultato di un operazione) Bit di overflow (è 1 quando il risultato dell ulfma operazione aritmefca supera il massimo valore rappresentabile, cioè 2 H se H è la lunghezza di A) Le moderne ALU sono in grado di eseguire operazioni molto sofisfcate oltre ovviamente le operazioni algebriche e logiche

Funzionamento della macchina di Von Neumann: la CPU L unità di controllo, dopo aver disposto il caricamento di A e B con i due operandi, invia alla ALU il codice relafvo all operazione da eseguire Al termine dell esecuzione dell operazione, che impegna un certo numero di periodi di clock, il registro A è caricato col risultato, mentre il registro B ha un contenuto non definito (tranne che per la divisione intera, per la quale B confene il resto)

Come si esegue un programma Un programma (sequenza di istruzioni in linguaggio macchina ricaricabile) viene caricato in memoria centrale Si alloca lo spazio per i daf necessari al programma La CPU estrae le istruzioni e daf dalla memoria centrale, le decodifica e le esegue uflizzando registri interni (accesso veloce) L esecuzione può comportare il trasferimento di daf in input e output tra memoria centrale e periferiche anraverso il bus di sistema

Programma in linguaggio macchina Le istruzioni sono codificate in bit ed inserite insieme agli altri daf nella memoria centrale istruzione= operazione di base sui registri e sulla RAM Un programma è una sequenza di istruzioni codificate Un programma viene interpretato sequenzialmente anraverso il registro PC che idenffica la prossima istruzione da eseguire Per rappresentare le cella della memoria (RAM) si usa la notazione M[i]= contenuto della cella con indirizzo i

Il linguaggio macchina È scrino in binario PermeNe di allocare memoria ConFene un set di istruzioni di base L istruzione può avere formato: Senza operando Ad 1 operando A più operandi

Esempio di linguaggio Codice operafvo a 3 bit (8 combinazioni), 5 bit per indirizzo 000 nop 001 stop 010 add (indirizzo) + (registro accumulatore) 011 jump 100 write 101 read 110 load carica (indirizzo) in accumulatore 111 store mene (accumulatore) in (indirizzo)

Ciclo macchina per l esecuzione di un istruzione Si compone sempre di tre fasi: 1. Fase di fetch 2. Fase di decodifica 3. Fase di esecuzione Supponiamo di aver caricato le istruzioni nella memoria a parfre dalla cella con indirizzo 0

Esecuzione tramite ciclo di fetch Inizializzazione: memoria 0 del registro PC Ciclo di fetch: 1. Recupera il valore nella cella con indirizzo PC nella RAM e lo memorizza nel registro RIC (registro istruzione corrente) 2. Somma 1 al valore contenuto in PC e lo memorizza in PC 3. Decodifica il valore contenuto in RIC (estrae il codice operazione e il parametro) 4. Esegue l istruzione 5. Torna al punto 1 a meno che l istruzione non sia quella di fine programma

Fase di decodifica Vediamo che succede su RIC Esempio: codice operafvo di 3 bit 000 nop 001 stop 010 add 011 jump 100 write 101 read 110 load 111 store Viene riconosciuta e selezionata l istruzione da eseguire

Fase di esecuzione Esempio RIC: 010 00011 00011 è l indirizzo dell addendo che viene sommato al contenuto del registro A della ALU. Occorre quindi: Trasferire il contenuto di 00011 in R1 LeNura Inviare registro daf all ALU Dare il comando di somma Il risultato rimane in A Esempio RIC: 011 00001 Questa è l istruzione di trasferimento del controllo (salto) incondizionato all istruzione di indirizzo 00001 del programma in esecuzione. Quindi occorre trasferire il contenuto di 00001 in PC

Osservazioni Il ciclo di fetch permene di eseguire programmi in modo sequenziale incrementando PC di 1 Prima istruzione RIC=M[0] Incremento PC Istruzioni seguenf RIC=M[1]. Ecc. Posso onenere dei cicli cambiando il valore di PC tramite l istruzione PC=

Linguaggio Assembly Un linguaggio simbolico molto vicino al linguaggio binario (macchina) ma più comodo I codici operafvi binari sono sosftuif da codici simbolici, ad esempio ADD Esistono direxve per riservare celle di memoria Al posto degli indirizzi è possibile uflizzare efchene simboliche C è una corrispondenza uno a uno fra i due linguaggi L assembler quindi dipende dalla macchina

C - assembly main(){int x, y; x=10; y=x;} SET r1, 10 imposta in r1 il valore 10 STORE X, r1 salva il contenuto di r1 in X LOAD r1,x carica la variabile X in r1 STORE Y, r1 salva r1 nella variabile Y

For e while for (i=10;i>0; i- - ){ //loop1 body} SET r0, 0 SET r1, 10 r1 per i SET r2, 1 r2 il valore da sonrarre LOOP1TOP: loop1 body SUB r1, r1, r2 sonrae 1 da r1 CMP r1, r0 JMP NEQ, LOOP1TOP confnua fino a che r1=0 LOOP1END: while (x!=20){ //loop2 body} SET r2, 10 r2 condizione di terminazione LOOP2TOP: LOAD r1, X carica x CMP r1, r2 JMP EQ, LOOP2END se uguale esci loop2 body JUMP LOOP2TOP LOOP2END:

IF if (x== 10) { //then part1} else { //else part 1} LOAD r1,x carica x in r1 SET r2, 10 set r2 a 10 CMP r1,r2 JMP NEQ, ELSE1 if r1<<r2, jump a else altrimenf fa then part 1 JUMP END1 salta oltre else ELSE1: else part 1 END1:

Il programma assemblatore Determina gli indirizzi corrispondenf alle varie efchene simboliche e costruisce la tabella dei simboli Istruzione per istruzione sosftuisce la codifica binaria al codice operafvo e alle efchene. La codifica binaria dei numeri seguirà la convenzione della macchina (ad esempio modulo e segno etc.) Il programma in codice binario è quindi caricato in memoria per l esecuzione A questo punto occorre assegnare al PC l indirizzo della cella contenente la prima istruzione eseguibile

Codifica singola istruzione: Esercizio Codici operafvi istruzioni: 0001: ADD sorgente (op1), des3nazione (op2) - ovvero somma quanto indicato da sorgente con il valore indicato in desfnazione e lo salva in desfnazione; ad es ADD R1, R2 significa somma ad R2 il valore di R1. 0110: LOAD sorgente (op1), des3nazione (op2) - ovvero carica quanto indicato da sorgente in desfnazione; ad es LOAD 0001, R1 significa carica in R1 il valore 1. 0111: STORE sorgente (op1), des3nazione (op2) - ovvero salva quanto indicato da sorgente in desfnazione; ad es STORE R1, 0001 significa salva nell indirizzo di memoria 1 il valore contenuto in R1.

Esercizio Modalità di riferimento degli operandi (vale sia per operando 1 che per operando 2): 00: registro 01: indirizzo di memoria 10: valore immediato Dato il codice Assembler di un frammento di programma definire la corrispondente codifica in linguaggio macchina

Esercizio LOAD 34, R1 (dove 34 rappresenta un valore numerico) LOAD 2, R2 (dove 2 rappresenta un valore numerico) ADD R1, R2

Soluzione 0110-10- 100010-00- 000001 0110-10- 000010-00- 000010 0001-00- 000001-00- 000010

Esercizio LOAD 2, R1 (dove 2 rappresenta un valore numerico) ADD 2, R1 (dove 2 rappresenta un valore numerico) STORE R1, 4 (dove 4 rappresenta un indirizzo di memoria)

Soluzione 0110-10- 000010-00- 000001 0001-10- 000010-00- 000001 0111-00- 000001-01- 000100

Esercizio LOAD 4, R1 (dove 4 rappresenta un valore numerico) ADD R1, R2 STORE R2, 7 (dove 7 rappresenta un indirizzo di memoria)

Soluzione 0110-10- 000100-00- 000001 0001-00- 000001-00- 000010 0111-00- 000010-01- 000111

Esercizio Dato il frammento in linguaggio macchina 0110-10- 000001-00- 000010 0001-10- 000010-00- 000010 0111-00- 000010-01- 000110 Al termine dell esecuzione delle tre istruzioni che valori assumono il registro R2 e la cella di memoria di indirizzo 6?

Soluzione Per prima cosa scriviamo le istruzioni in linguaggio assembler LOAD 1, R2 (dove 1 rappresenta un valore numerico) ADD 2, R2 (dove 2 rappresenta un valore numerico) STORE R2, 6 (dove 6 rappresenta un indirizzo di memoria) Sia R2 che la cella di memoria di indirizzo 6 alla fine dell esecuzione delle tre istruzioni contengono il valore 3

Esercizio Dato il frammento in linguaggio macchina e dato che il registro R2 confene il valore numerico binario 000011 0110-10- 000001-00- 000001 0001-00- 000001-00- 000010 0111-00- 000010-01- 000100 Al termine dell esecuzione delle istruzioni quali valori assumono il registro R2 e la cella di memoria di indirizzo 4?

Soluzione Scriviamo il codice assembler corrispondente LOAD 1, R1 (dove 1 rappresenta un valore numerico) ADD R1, R2 STORE R2, 4 (dove 4 rappresenta un indirizzo di memoria) Sia R2 che la cella di memoria di indirizzo 4 alla fine dell esecuzione contengono il valore 4