La macchina di Von Neumann Architettura di un computer n n Architettura organizzata secondo il modello della macchina di von Neumann definita nei tardi anni ‘40 all’Institute for Advanced Study di Princeton. È costituita da quattro elementi funzionali fondamentali: n n n n Unità centrale di elaborazione (CPU); Memoria Centrale; Periferiche (I/O); Bus di sistema. CPU MEMORIA CENTRALE Architettura computer Bus di sistema PERIFERICHE Prof. Paolo Michelini Elementi base n n n n n A fianco di Von Neumann l'elaboratore IAS di Princeton o macchina di Von Neumann, ultimata nel 1952. Nella parte bassa dell'elaboratore si puo' vedere una fila di tubi catodici (CRT) utilizzati come memoria. Nel 1955 tali memorie vengono sostituite da quelle a nuclei di ferrite. Architettura computer Central Processing Unit (CPU) La CPU contiene i dispositivi elettronici in grado di acquisire, interpretare ed eseguire le istruzioni di ogni programma, trasformando i dati. Le istruzioni vengono eseguite in sequenza. Dati ed istruzioni vengono trasferiti da (e verso) la memoria centrale. La memoria centrale contiene sia le istruzioni che i dati (informazioni necessarie per eseguire un programma). Ha dimensioni limitate ed è volatile (cioè le informazioni memorizzate vengono perse allo spegnimento del computer). SR PC Il bus di sistema collega questi elementi funzionali. Fornisce il supporto fisico per la trasmissione dei dati tra i vari elementi. Prof. Paolo Michelini A B INTR Le periferiche consentono uno scambio di informazioni fra l’elaboratore e l’esterno (ingresso/uscita, memoria secondaria). In particolare, la memoria secondaria (o memoria di massa) viene utilizzata per memorizzare grandi quantità di informazioni in modo persistente. Ha dimensioni elevate, ma l’accesso è meno rapido, rispetto alla memoria centrale. Architettura computer Prof. Paolo Michelini ALU IR DR Architettura computer CU AR Clock Prof. Paolo Michelini 1 Registri principali Elementi della CPU n n l’unità aritmetico-logica (Arithmetic Logic Unit, ALU) esegue le operazioni aritmetiche e logiche richieste per l’esecuzione delle istruzioni; n n l’unità di controllo (Control Unit, CU), controlla e coordina l’attività della CPU. In particolare, è responsabile del prelievo, della decodifica delle istruzioni e dell’invio dei segnali di controllo per effettuare i passi per l’esecuzione di un’istruzione; n il clock (orologio) “cadenza” le operazioni elementari, permettendo il sincronismo delle operazioni; n vari registri (ad esempio, A, B, PC, SR, etc.). Un registro è una locazione utilizzata per memorizzare dati, istruzioni, o indirizzi all’interno della CPU. L’accesso ai registri è molto veloce. n n n n n Nei moderni sistemi di elaborazione la CPU è realizzata da un unico circuito integrato (chip): il microprocessore. Architettura computer Prof. Paolo Michelini DR (Data register o registro dati): viene utilizzato per trasferire dati da e verso la memoria centrale. AR (Address Register o registro indirizzi): viene utilizzato per memorizzare l’indirizzo della cella corrente nella memoria centrale (la sorgente/destinazione del trasferimento di dati). PC (Program Counter), registro “contatore” del programma. Contiene l’indirizzo della prossima istruzione da eseguire. IR (Instruction Register), registro istruzione corrente. Contiene, istante per istante, l’istruzione che è attualmente in esecuzione. A, B: Registri accumulatori o di lavoro. Contengono operandi e risultati delle operazioni svolte dalle ALU. INTR (Interrupt Register o registro interruzioni): legato alla richiesta di operazioni dalle periferiche di I/O. SR (Status Register o registro di stato), i cui bit forniscono informazioni sul risultato dell’ultima operazione eseguita dalla ALU (overflow, zero, carry, segno). Architettura computer ALU (Atithmetic Logic Unit) n n n n Esegue le operazioni aritmetiche, logiche ed altre manipolazioni (es: scorrimento) sui dati. Opera su alcuni registri specifici chiamati accumulatori (es: A, B) e modifica i bit del registro Status Register (SR). Gli accumulatori contengono il valore degli operandi ed il risultato finale dell’operazione. I bit dello SR o flag permettono di capire l’esito dell’operazione (es: overflow, risultato positivo o negativo, ecc.) Architettura computer Prof. Paolo Michelini Prof. Paolo Michelini CU (Control Unit) n Sovraintende a tutte le attivita’ della CPU, imponendo la corretta sequenzializzazione delle operazioni da svolgere. In particolare: n n n Fetch L’unità di controllo ha il compito di reperire dalla memoria centrale le istruzioni di un programma (fetch) da eseguire (il cui indirizzo è nel registro PC). Le istruzioni sono organizzate in memoria in sequenza. Decodifica La CU interpreta l’istruzione che e’ stata caricata con il fetch. Execute La CU manda in esecuzione (execute) l’istruzione trovata (che è stata caricata nel registro IR). Architettura computer Prof. Paolo Michelini 2 Le memorie cache n Si dividono in n n n Le CPU sul mercato (2002) n Cache di primo livello o L1 interna alla CPU (es: 32 kB). Cache di secondo livello o L2, (es: 64,128, 256, 512KB, 1 MB) e' esterna al processore. La cache è una memoria speciale della CPU e, a differenza della memoria centrale, è più piccola e più veloce. Funziona come un buffer e contiene la copia delle istruzioni e dei dati che vengono maggiormente utilizzati. La sua funzione e’ di velocizzare eventuali accessi successivi sugli stessi dati appena ricercati. Architettura computer Prof. Paolo Michelini n n n Architettura computer n n n Intel: P4 3.2 GHz, 800MHz 32 bit system bus, 8 kB L1 cache, 512-KB L2 Cache, mPGA-478, 55 milioni di transistor; AMD: Athlon 3200+, 400 MHz 32 bit system bus, 128 kB L1 cache, 256 kB L2 cache, SockA, 54.3 milioni di transistor; Motorola: PowerPC 7457, 1.3 GHz, 133 MHz 64 bit system bus, 512 kB L2 cache, 483 CBGA Prof. Paolo Michelini La memoria centrale Le CPU sul mercato (2003) n Intel: P4 2.8 GHz, 533MHz 32 bit system bus, 8 kB L1 cache, 512-KB L2 Cache, mPGA-478, 42 milioni di transistor; AMD: Athlon 2600+, 266 MHz 32 bit system bus, 128 kB L1 cache, 256 kB L2 cache, SockA, 37 milioni di transistor; Motorola: PowerPC 7455, 1 GHz, 133 MHz 64 bit system bus, 256 kB L2 cache, 483 CBGA Digital: Alpha EV68 1.25GHz, 16 MB L2 cache, 64 bit system bus n n n E’ chiamata anche RAM (Random Access Memory) ed e’ volatile (tutte le informazioni vengono perse allo spegnimento). Contiene i dati e le istruzioni relative al programma in esecuzione. La CPU scambia informazioni solo con la memoria centrale E’ strutturata come una sequenza di celle (dette parole o word) di dimensione prefissata (es: 8, 16, 32, 64 bit) Ogni parola e’ univocamente identificata dal suo indirizzo 0 1 2 word n Architettura computer Prof. Paolo Michelini Architettura computer Prof. Paolo Michelini 3 Indirizzamento della memoria n n L’indirizzamento di una cella di memoria e’ fatta attraverso il registro di idirizzi (AR) Se AR dispone di k bit, saranno indirizzabili 2k celle (0..2k-1) n n n n La memoria e’ realizzata con dispositivi a semiconduttore. Il tempo di accesso ad una memoria e’ dell’ordine della decina di nanosecondi. Capacita’ n Possono essere n n n Il valore della cella indirizzato da AR viene in n n Es: k=10 -> celle indirizzabili = 210 = 1024 Caratteristiche delle memorie Lettura (R): copiato nel registro dati Scrittura (W): scaricato dal registro dati n Le operazioni (R/W) vengono coordinate dalla Control Unit 0 1 2 AR 0000000011 n n Word=16 bit 0110100010101101 W n 0110100010101101 R DR n Valori tipici: 32, 64, 128, 256, 512 MB Dinamiche (DRAM): hanno bisogno di un segnale di refreh, dell’ordine di millisecondi,per mantenere le informazioni in esse contenute. Statiche (SRAM): piu’ veloci delle precedenti, ma piu’ costose. Normalmente utilizzate per le memorie cache. SDRAM (Synchronous DRAM): permettono di diminuire i tempi di attesa del processore durante la ricerca dei dati. Permettono inoltre un acesso multiplo su locazioni differenti in memoria. RDRAM (RAMBUS DRAM): create per gestire una grande quantita’ di informazioni per i processori di nuova generazione (gigabit/s). Sono ottimizzate per accessi sequenziali ai dati. DDR SDRAM (Double Data Rate SDRAM): evoluzione della SDRAM con velocita’ doppia alla stessa. n Architettura computer Prof. Paolo Michelini Architettura computer Moduli di memoria n n n Altre memorie n SIMM (Single Inline Memory module) n Moduli a 30 o 72 piedini (pin) Normalmente montate in coppia per aumentare la capacita’ di trasferimento n ROM (Read Only Memory) n n DIMM (Dual Inline Memory Module) n n Moduli a 168 pin Attualmente i piu’ utilizzati con velocita’ e capacita’ maggiore delle precedenti n DIMM Prof. Paolo Michelini n Non volatili: mantengono le informazioni anche senza alimentazione (es: programma di inizializzazione dei computer o boot) PROM (Programmable ROM) Permottono di essere programmate dall’utente tramite dei dispositivi particolari (programmatori di ROM) EPROM (Erasable PROM) n Architettura computer Prof. Paolo Michelini Possono essere riscritte piu’ volte, cancellando il loro contenuto con raggi ultravioletti. Il software contenute in queste memorie e’ normalmente chiamato firmware Architettura computer Prof. Paolo Michelini 4 Bus di sistema Bus di sistema n PERIFERICHE n n n Data bus n Address bus Command bus Architettura computer n Prof. Paolo Michelini Esempi di bus Bus dati (Data bus): bidirezionale. Utilizzato dalla CPU per trasmettere dati dalla memoria al registro dati e viceversa o verso le interfacce di I/O. Bus indirizzi (Address bus): unidirezionale. Viene utilizzato dalla CPU per trasmettere il contenuto del registro indirizzi alla memoria o alle intefacce di I/O per selezionare il dispositivo da usare. Bus comandi (Command bus): unidirezionale. Permette alla CPU di inviare alla memoria o all’I/O i segnali di comando/consenso fra le varie unita’ (es: lettura o scrittura). Le uniche istruzioni che possono accedere direttamente alla memoria centrale, sono quelle che trasferiscono i dati da e verso i registri. Tutte le altre operano solo su registri. Se la dimensione (numero di bit) del bus dati è uguale alla dimensione della parola, si può trasferire in parallelo un intero dato. Altrimenti occorrono più trasferimenti. Architettura computer Prof. Paolo Michelini Esempio di operazione della CPU +1 I piu’ comuni sono: n n n Memoria (a 8 bit) Bus controllo Circuiti di controllo Bus controllo Registro istruzioni (8 bit) Registro A Registro B Sommatore Architettura computer CU PC (16 bit) ISA = Industry Standard Architecture (obsoleto) EISA = Enhanced ISA (max 33 MB/s) PCI = Peripheral Component Interconnect (max 64 bit a 66 MHz = 528 MB/s di trasferimento dati) Prof. Paolo Michelini Z (8 bit) W (8bit) n Architettura computer Buffer indirizzi MEMORIA CENTRALE Buffer dati CPU E’ composto da un insieme di linee lungo le quali viene trasferita l’informazione. Collega due unità funzionali alla volta: una trasmette e l’altra riceve (master-slave). Il trasferimento avviene sotto il controllo della CPU (Control Unit). Bus indirizzi 16 bit 3E 0 20 1 27 2 03 3 C6 3A 4 10 20 76 5 6 7 8 Bus dati 8 bit ALU Prof. Paolo Michelini 5 Esempio di operazione della CPU n Le istruzioni contenute in memoria normalmente consistono di Esempio di operazione della CPU n n Codice operativo (operation code): serve ad attivare un’azione opportuna (es: somma, input/output, ecc.) Operandi (operands): contiene gli indirizzi degli operandi o gli operandi stessi coinvolti nell’operazione (talvolta sottointesi) n n I fetch n n n n n Architettura computer Prof. Paolo Michelini Architettura computer Esempio di operazione della CPU n I esecuzione n n n n III fase n II fetch n Viene eseguita l’istruzione all’indirizzo 2 (27H ) che richiede di muovere nel registro B il dato 03H che segue il codice operativo (PC =3). PC diventa 4. Istruzione all4 (C6H) richiede di sommare il contenuto di A e B e mettere il risultato in A. Architettura computer La CU da indicazione alla ALU di eseguire la somma. Prof. Paolo Michelini L’istruzione all’indirizzo 5 (3AH) richiede di acquisire l’indirizzo dell’operando. Il fetch dell’indirizzo e’ fatta in 2 passi. n n n n II esecuzione n Prof. Paolo Michelini Esempio di operazione della CPU n Il dato nel buffer dati viene spostato nel registro A della ALU. Il contenuto del PC viene spostato nel buffer indirizzi e viene comandata una lettura in memoria (lettura della cella 0 = 3EH) Il dato viene spostato nel registro istruzione Il PC viene incrementato e diventa = 1 Il codice del registro istruzione viene decodificato come: muovi nel registro A il dato che segue il codice operativo. Il PC viene spostato nel buffer indirizzi e viene ordinata la lettura della cella corrispondente. Il valore 20H viene spostato nel buffer dati. Il PC viene incrementato e diviene = 2 n Architettura computer Viene letto il valore all’indirizzo 6 (10H) e messo in W e quello 7 (20H) in Z Il contenuto di W e Z viene interpretato come un unico indirizzo a 16 bit (1020H) Il contenuto di A viene messo nel buffer dati. Viene ordinata una scrittura del dato (23H = 20H + 03H ) nell’indirizzo (1020H) L’istruzione all’indirizzo 8 (76H) ordina l’halt della macchina Prof. Paolo Michelini 6 Linguaggio assembly n Linguaggio assembly Programmare in formato binario o esadecimale e’ molto difficoltoso. Sono stati cosi’ creati i linguaggi assembly, che utilizzano una codifica simbolica per le operazioni appena descritte. Questi linguaggi sono dipendenti dal tipo di processore usato, non sono quindi portabili fra macchine con CPU diverse. n La traduzione del precedente programma in pseudo-linguaggio assembly potrebbe essere: LD A,20H load A con il valore 20H LD B,03H load B con il valore 03H ADD A,B somma A e B e metti il risultato in A LD (1020H),A sposta il contenuto di A all’indirizzo 1020H HALT Architettura computer Prof. Paolo Michelini Architettura computer Prof. Paolo Michelini 7