Architettura di un computer La macchina di Von Neumann 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: Unità centrale di elaborazione (CPU); Memoria Centrale; Periferiche (I/O); Bus di sistema. Bus di sistema CPU MEMORIA CENTRALE PERIFERICHE 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. Elementi base 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). PC INTR SR A B ALU 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. IR CU Il bus di sistema collega questi elementi funzionali. Fornisce il supporto fisico per la trasmissione dei dati tra i vari elementi. DR AR Clock
Elementi della CPU Registri principali l unità aritmetico-logica (Arithmetic Logic Unit, ALU) esegue le operazioni aritmetiche e logiche richieste per l esecuzione delle istruzioni; l unitàdicontrollo (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; il clock (orologio) cadenza le operazioni elementari, permettendo il sincronismo delle operazioni; 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. Nei moderni sistemi di elaborazione la CPU è realizzata da un unico circuito integrato (chip): il microprocessore. 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). ALU (Atithmetic Logic Unit) CU (Control Unit) 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.) Sovraintende a tutte le attivita della CPU, imponendo la corretta sequenzializzazione delle operazioni da svolgere. In particolare: 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).
Le memorie cache Le CPU sul mercato (2002) Si dividono in 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. 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 Le CPU sul mercato (2003) La memoria centrale 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 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
Indirizzamento della memoria Caratteristiche delle memorie L indirizzamento di una cella di memoria e fatta attraverso il registro di idirizzi (AR) Se AR dispone di k bit, saranno indirizzabili 2 k celle (0..2 k-1 ) Es: k=10 -> celle indirizzabili = 2 10 = 1024 Il valore della cella indirizzato da AR viene in Lettura (R): copiato nel registro dati Scrittura (W): scaricato dal registro dati Le operazioni (R/W) vengono coordinate dalla Control Unit AR 0000000011 0 1 2 n Word=16 bit 0110100010101101 W R 0110100010101101 DR La memoria e realizzata con dispositivi a semiconduttore. Il tempo di accesso ad una memoria e dell ordine della decina di nanosecondi. Capacita Valori tipici: 32, 64, 128, 256, 512 MB Possono essere 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. Moduli di memoria SIMM (Single Inline Memory module) Moduli a 30 o 72 piedini (pin) Normalmente montate in coppia per aumentare la capacita di trasferimento DIMM (Dual Inline Memory Module) Moduli a 168 pin Attualmente i piu utilizzati con velocita e capacita maggiore delle precedenti DIMM Altre memorie ROM (Read Only Memory) 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) Possono essere riscritte piu volte, cancellando il loro contenuto con raggi ultravioletti. Il software contenute in queste memorie e normalmente chiamato firmware
Bus di sistema Bus di sistema Data bus CPU MEMORIA CENTRALE Address bus PERIFERICHE 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 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. Command bus 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. Esempi di bus I piu comuni sono: 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) Bus controllo Circuiti di controllo Registro istruzioni (8 bit) Registro A Registro B +1 PC (16 bit) Z (8 bit) W (8bit) CU Buffer dati Buffer indirizzi Bus controllo Bus indirizzi 16 bit Bus dati 8 bit Memoria (a 8 bit) 3E 20 27 03 C6 3A 10 20 76 0 1 2 3 4 5 6 7 8 Sommatore ALU
Le istruzioni contenute in memoria normalmente consistono di 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) I fetch Il contenuto del PC viene spostato nel buffer indirizzi e viene comandata una lettura in memoria (lettura della cella 0 = 3E H ) 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 20 H viene spostato nel buffer dati. Il PC viene incrementato e diviene = 2 I esecuzione Il dato nel buffer dati viene spostato nel registro A della ALU. II fetch Viene eseguita l istruzione all indirizzo 2 (27 H ) che richiede di muovere nel registro B il dato 03 H che segue il codice operativo (PC =3). PC diventa 4. Istruzione all4 (C6 H ) richiede di sommare il contenuto di A e B e mettere il risultato in A. II esecuzione La CU da indicazione alla ALU di eseguire la somma. III fase L istruzione all indirizzo 5 (3A H ) richiede di acquisire l indirizzo dell operando. Il fetch dell indirizzo e fatta in 2 passi. Viene letto il valore all indirizzo 6 (10 H ) e messo in W e quello 7 (20 H ) in Z Il contenuto di W e Z viene interpretato come un unico indirizzo a 16 bit (1020 H ) Il contenuto di A viene messo nel buffer dati. Viene ordinata una scrittura del dato (23 H = 20 H + 03 H ) nell indirizzo (1020 H ) L istruzione all indirizzo 8 (76 H ) ordina l halt della macchina
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. Linguaggio assembly La traduzione del precedente programma in pseudo-linguaggio assembly potrebbe essere: LD A,20 H load A con il valore 20 H LD B,03 H load B con il valore 03 H ADD A,B somma A e B e metti il risultato in A LD (1020 H ),A sposta il contenuto di A all indirizzo HALT 1020 H