La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

In grado di effettuare molte azioni elementari indipendenti automa universale generatore di sequenze riconoscitore di sequenze circuiti sequenziali sommatore.

Presentazioni simili


Presentazione sul tema: "In grado di effettuare molte azioni elementari indipendenti automa universale generatore di sequenze riconoscitore di sequenze circuiti sequenziali sommatore."— Transcript della presentazione:

1 in grado di effettuare molte azioni elementari indipendenti automa universale generatore di sequenze riconoscitore di sequenze circuiti sequenziali sommatore sottrattore circuiti combinatori in grado di eseguire una sequenza di azioni elementari automa universale programmabile ESECUZIONE l’automa legge la prima istruzione del programma, la esegue, poi legge la seconda, la esegue, e così via PROGRAMMAZIONE Il programmatore riporta le istruzioni che il calcolatore dovrà eseguire, in un programma calcolatore

2 STORIA 1936-1939 John V. Atanasoff inventore del calcolatore 1946 IBM realizza il MARK I 1946 Moore School dela University of Pennsylvania (Eckert e Mauckly) ENIAC 1946 John von Neumann (e altri) calcolatore automatico La CPU (Central Process Unit) è suddivisa in parte operativa (Data Path) parte di controllo (Control Path) Per tutto il tempo che rimane alimentata, la CPU esegue alternativamente due fasi: fetch per caricare l’istruzione da eseguire execute per eseguire l’istruzione appena caricata

3 CPU tastiera mouse floppy hard disk I/O xx xx xx xx O U T P U T I N P U T video stampante floppy hard disk xx xx xx xx DB xx Architettura di von Neumann 1. L’interfaccia di I/O

4 xxxx xx Architettura di von Neumann 2. Address Bus e Data Bus

5 xx IR xxxx xx xx AL ALU xxxx T xxxx SI Architettura di von Neumann 3. La CPU

6 xx IR xxxx xx xx 0400 0400 - 0FFF RAM 0401 0402 0403 :::: 04FF xx xx xx :: xx xx AL ALU xxxx T xxxx SI R/W x Architettura di von Neumann 4. La memoria dati

7 xx tastiera mouse floppy hard disk xxxx R/W 0100 IP xx IR xx 0400 0400 - 0FFF RAM CPU 0401 0402 0403 :::: 04FF xx xx xx :: xx ROM BE 0100 0100 - 03FF 0101 0102 0103 :::: 03FF 00 01 B0 :: xx I/O xx xx xx xx [81] [80] [83] [82] O U T P U T 8 0 - F F [01] [00] [03] [02] I N P U T 0 0 - 7 F x AB DB xx AL ALU xxxx T xxxx SI video stampante floppy hard disk xx xx xx xx Architettura di von Neumann 5. La memoria programmi

8 moduloCPU { while (true){ fetch(); execute(); } moduloCPU { while (true){ fetch(); execute(); } fetch(void) { AB=ip; RW=READ; dato=DB; ir=dato; AB=NULL; ip++; } fetch(void) { AB=ip; RW=READ; dato=DB; ir=dato; AB=NULL; ip++; } execute(void) { unsigned char dato; unsigned int indirizzo; switch(ir) { case NOP : wait(1); break; case INC_AL : al++; break; :::: } execute(void) { unsigned char dato; unsigned int indirizzo; switch(ir) { case NOP : wait(1); break; case INC_AL : al++; break; :::: } fino a che la CPU viene alimentata effettua alternativamente le due fasi emette il valore del registro IP nell’Address Bus specifica che l’operazione è una lettura legge il codice operativo nel Data Bus e lo pone nell’Instruction Register svuota l’Address Bus incrementa IP variabili di appoggio per ogni tipo di istruzione

9 moduloIO { unsigned char dato; static unsigned char io[RangeIoMax-RangeIoMin]; while (true){ while ((AB =RangeIOmin)) { if (RW==READ) { dato=io[AB-RangeIOmin]; DB=dato; } else { dato=DB; io[AB-RangeIOmin]=dato; } moduloIO { unsigned char dato; static unsigned char io[RangeIoMax-RangeIoMin]; while (true){ while ((AB =RangeIOmin)) { if (RW==READ) { dato=io[AB-RangeIOmin]; DB=dato; } else { dato=DB; io[AB-RangeIOmin]=dato; }

10 moduloRAM { unsigned char dato; static unsigned char ram[RangeRamMax-RangeRamMin]; while (true){ while ((AB =RangeRamMin)) { if (RW==READ) { dato=ram[AB-RangeRamMin]; DB=dato; } else { dato=DB; ram[AB-RangeRamMin]=dato; } moduloRAM { unsigned char dato; static unsigned char ram[RangeRamMax-RangeRamMin]; while (true){ while ((AB =RangeRamMin)) { if (RW==READ) { dato=ram[AB-RangeRamMin]; DB=dato; } else { dato=DB; ram[AB-RangeRamMin]=dato; }

11 moduloROM { unsigned char dato; static unsigned char rom[RangeRomMax-RangeRomMin]; while (true){ while ((AB =RangeMemMin)) { dato=rom[AB-RangeRomMin]; DB=dato; } moduloROM { unsigned char dato; static unsigned char rom[RangeRomMax-RangeRomMin]; while (true){ while ((AB =RangeMemMin)) { dato=rom[AB-RangeRomMin]; DB=dato; }

12 CPU: registro Instruction Pointer IP, registro generale AL (8 bit), registro indice SI (16 bit), registri interni IR e T, ALU RAM: capacità di 3072 celle di memoria da 1 byte ciascuna, da 0400 a 0FFF ROM: capacità di 768 celle di memoria da 1 byte, da 0100 a 03FF I/O: 128 indirizzi di input, da 00 a 7F, e 128 indirizzi di output, da 80 a FF analizziamo il seguente esempio di programma: 0100BE 00 01MOV SI,0100 0103B0 00MOV AL,00 010588 84 00 05MOV [SI+0500],AL 01094EDEC SI 010A75 F9JNZ 0105 010CCD 20INT 20


Scaricare ppt "In grado di effettuare molte azioni elementari indipendenti automa universale generatore di sequenze riconoscitore di sequenze circuiti sequenziali sommatore."

Presentazioni simili


Annunci Google