APPUNTI DI ARCHITETTURA DEGLI ELABORATORI Il computer è un sistema digitale per l’elaborazione di dati, una macchina programmabile, cioè in grado di ricevere ordini dall’esterno e di eseguirli. In termini molto generali si può definire un computer come un dispositivo che: 1. riceve dati dall’esterno (input, cioè «messi dentro», ossia «in ingresso») 2. li memorizza e li elabora 3. comunica i risultati dell’elaborazione (output, cioè «messi fuori», ossia «in uscita»). Elaborare (in inglese to process) un’informazione significa trasformarla in un’altra informazione: per esempio, si può elaborare un insieme di numeri (input) trasformandolo in un grafico (output). I dati sono sequenze di bit, e il computer li elabora mediante un grande numero di operazioni molto semplici (somme, differenze e confronti logici tra numeri) che il computer sa eseguire in modo particolarmente rapido e affidabile. L’hardware Il computer è formato da dispositivi elettronici e meccanici che nell’insieme costituiscono l’hardware. Il loro funzionamento è controllato da opportuni programmi che costituiscono il software. Dell’hardware fanno parte gli apparecchi elettrici, elettronici e meccanici necessari per l’ingresso, l’uscita e l’elaborazione dei dati. Il microprocessore che esegue calcoli è un componente hardware, come pure il ventilatore che evita il surriscaldamento dei circuiti integrati. Il software Il software organizza il funzionamento dell’hardware. L’hardware del computer, per svolgere il proprio compito, deve ricevere istruzioni precise su come interagire con il mondo esterno e su come elaborare, cioè trasformare, i dati ricevuti. Queste istruzioni sono fornite da programmi che descrivono in dettaglio tutte le operazioni che il computer deve eseguire. Tali programmi costituiscono il software, di cui riparleremo in dettaglio più avanti. I computer in commercio contengono già il software detto sistema operativo (come per esempio Microsoft Windows o gnu/Linux), che è essenziale per il funzionamento dell’hardware. Esistono poi moltissimi altri programmi che fanno parte del software applicativo (come per esempio Microsoft Office o OpenOffice); questi programmi ci consentono cioè di utilizzare il computer per applicazioni specifiche come scrivere una lettera, preparare una presentazione, comporre un brano musicale e così via. L’interno di un calcolatore I computer hanno in comune un modello fondamentale di elaboratore detto modello di Von Neumann, ideato nel 1946 da John Von Neumann. Tale modello presenta le seguenti unità: - CPU (Central Processing Unit, unità centrale di elaborazione), composta da ALU e CU o CU (Control Unit, unità di controllo): presiede a tutte le operazioni, interpretando le istruzioni prelevate dalla memoria e controllandone l’esecuzione attraverso l’invio di appositi segnali alle altre unità; o ALU (Arithmetic Logic Unit, unità aritmetico-logica): è dedicata alla esecuzione delle operazioni aritmetiche e logiche; - Memoria Centrale (Main Memory): nella memoria centrale avviene la registrazione sia dei dati che delle istruzioni del programma in esecuzione - Unità di input: dalle unità di ingresso si acquisiscono dati/programmi da trasferire in memoria - Unità di output: unità di uscita sulle quali vengono trasferiti i dati elaborati Tutte le unità appena descritte comunicano tra di loro attraverso il bus. Descriviamo in dettaglio le varie componenti: CPU L’unità centrale di elaborazione, chiamata comunemente processore, può considerarsi il cervello del computer. E’ un circuito integrato che contiene due componenti: l’unità aritmetico logica (ALU) e l’unità di controllo (CU). La ALU svolge operazioni aritmetiche (come sottrazioni o addizioni) e operazioni logiche (come il confronto del valore di due dati). La CU dirige il processo di elaborazione dei dati: Interpreta le istruzioni e le trasferisce dalla RAM alla CPU Indica alla ALU quale operazione eseguire in ogni momento Traferisce i dati elaborati dalla ALU alla RAM Il processore conserva i dati su cui sta operando in registri la cui capacità determina il numero di bit che il processore può trattare simultaneamente. Tale numero prende il nome di parola (un multiplo del byte) che nei computer odierni è a 64 bit. Le istruzioni sono espresse in linguaggio macchina, codice interpretato dall’unità di controllo. Ogni elaborazione complessa è suddivisa in operazioni più elementari effettuate durante un ciclo di istruzione. Le fasi di un ciclo di istruzione sono: Fetching (Prelievo di un’istruzione): la CU mette sul bus indirizzi l’indirizzo dell’ istruzione da prelevare dalla memoria principale. La RAM invia alla CPU l’istruzione richiesta sul bus dati. Deconding (Decodifica dell’istruzione): L’unità di controllo decodifica l’istruzione ricevuta per passarla alla ALU. che compie le operazioni necessarie. Executing (Esecuzione dell’istruzione): la ALU esegue le operazioni richieste. Un’istruzione della CPU è descritta da una sequenza binaria di lunghezza variabile, di solito da 1 a 8 byte. Ciascun processore ha un particolare insieme di istruzioni che è capace di eseguire, stabilito dai programmatori della casa costruttrice del processore. Ciclo di clock Ogni computer è dotato di un orologio interno detto orologio di sistema (System clock) che garantisce la sincronizzazione tra la CPU e gli altri dispositivi. Il clock è un circuito che cambia fra il valore zero e il valore uno e viceversa. Si definisce ciclo di clock il tempo trascorso fra due variazioni di clock. Il ciclo deve svolgersi in un tempo tale da consentire a tutti i circuiti interessati il completamento corretto dell'operazione effettuata. Si chiama frequenza di clock il numero di clock nell'unità di tempo (al secondo). Maggiore sarà la frequenza e maggiori sono le operazioni che si possono fare nello stesso tempo. La frequenza viene misurata in Hertz: numero di cicli al secondo. Le moderne CPU sono molto veloci e, per misurare la frequenza, vengono utilizzati multipli dell'unità di misura, così si parla di Mhz (megahertz ovvero milioni di cicli al secondo) o Ghz (gigahertz ovvero miliardi di operazioni al secondo). Ad esempio, un calcolatore con frequenza di clock di 1GHz possiede un ciclo clock di durata 1/1GHz = 10-9 sec = 1 nsec Relazione tra istruzioni e cicli di clock: Alcune istruzioni, per essere completate, necessitano di più cicli di clock. Ad esempio per le istruzioni di salto possono essere necessari 5 cicli di clock, per le istruzioni di calcolo in virgola mobile 16 cicli di clock). Le porte di input/output Le porte sono degli alloggiamenti, di solito posti sul retro del pc, in cui vengono inseriti i cavi delle periferiche per collegarle alla scheda madre. Le principali sono: o Porte seriali: la porta seriale viene utilizzata per collegare dispositivi che non richiedono un flusso di dati molto veloce; nella porta seriale i dati vengono inviati un bit alla volta: i bit viaggiano in serie, l’uno dopo l’altro, sullo stesso filo; per trasmettere un byte, sono necessari otto invii. La porta seriale consente il transito dei dati in entrambe le direzioni, sia dal computer alla periferica che viceversa. Le porte seriali sono identificate dalla sigla RS232. E’ tipicamente usata per la connessione di mouse ma anche nel caso di collegamenti con periferiche attive, come modem, scanner, penne ottiche. o Porte PS/2: la porta PS/2 serve per il collegamento del mouse e della tastiera; utilizzata come alternativa alla porta seriale, prende il nome dal fatto di essere stata utilizzata per la prima volta sull'IBM PS/2. o Porte parallele: la porta parallela è adatta per qualunque dispositivo che richieda un flusso di dati più veloce rispetto alla capacità della porta seriale; nella porta parallela i dati vengono trasmessi un byte alla volta poiché i bit viaggiano parallelamente su otto fili. La porta parallela consente il transito in una sola direzione, dal computer alla periferica; si usava principalmente per collegare al computer le stampanti, ma oggi sono sempre meno usate, sostituite dalle porte USB. o Porte USB (Universal serial bus): la porta USB è adatta per connettere al computer qualunque tipo di dispositivo purché compatibile col collegamento USB; è un’evoluzione della porta seriale, infatti, il metodo di invio e ricezione dei dati è di tipo seriale e o o o o o o bidirezionale, ma ad alta velocità (480 Mbps per la versione 2.0 e fino a 4,8 Gbps della versione 3.0). Oltre alla velocità, i pregi che fanno delle USB le porte più diffuse oggi sono: o la comodità: l’inserimento degli spinotti è molto semplice (altri tipi di porte richiedono invece di inserirli con cura, orientandoli in modo particolare o avvitandoli) o si possono collegare e scollegare “a caldo” (cioè a computer acceso) apparecchiature che vengono automaticamente riconosciute (funzione plug&play) dal computer acceso o la versatilità: consentono di collegare al computer dispositivi periferici di ogni tipo (come stampanti, modem, dischi rimovibili, lettori multi-mediali, mouse, tastiera, fotocamere digitali) o l’alimentazione: con le porte USB si può anche trasferire potenza elettrica dal computer alle periferiche. A una singola porta USB si possono collegare fino a 127 dispositivi contemporaneamente; perciò spesso tornano utili gli hub, che sono dispositivi con uscite USB multiple. Porte SCSI (Small Computer System Interface): la porta SCSI è una porta ad altissime prestazioni solitamente utilizzata per il collegamento di periferiche veloci come memorie di massa, scanner, schede di acquisizione. E’ stata progettata per realizzare il trasferimento dei dati in modalità parallela. Attualmente la versione Ultra-640 SCSI ha un trasfert rate pari a 640 MByte/s e consente il collegamento di 16 dispositivi al massimo, ma non il collegamento a caldo. Attualmente si trova solo su workstation, server e periferiche di fascia alta. Porta a Infrarossi (IrDA, Infrared Data Association): è una porta seriale senza fili che funziona attraverso raggi infrarossi, come i telecomandi dei televisori. E’ bidirezionale e la velocità di trasmissione riesce a raggiungere in qualche dispositivo, i 16 Mbps. La velocità più diffusa è 4Mbps; il trasferimento dei dati è possibile solo se le porte “si vedono” e la loro distanza non supera i 2-3 metri. Porta Bluetooth: consente di collegare diversi dispositivi (ad esempio cellulari, stampanti, notebook o computer desktop dotati della stessa tecnologia) ad una distanza di 10 metri senza fili e ad una velocità di 1 Mbps in maniera totalmente sicura ed affidabile. Rappresenta una valida alternativa alla tecnologia a raggi infrarossi in quanto i dispositivi non devono essere necessariamente orientati tra di loro per poter funzionare in maniera corretta. Porte di rete: collegano il computer alla rete locale o a un router. Lo standard è la presa RJ45. Porte FireWire (IEEE 1394): la porta Firewire consente il collegamento al computer di periferiche ad alta velocità. E’ più veloce della USB ma meno diffusa perché brevettata dalla Apple (quindi richiede un pagamento ai detentori del brevetto); si usa in particolare nei dispositivi di acquisizione audio e video, con il vantaggio di poter collegare direttamente tra loro le periferiche senza passare per il computer. Sviluppata da Apple, è presente su tutti i computer Mac e su un numero crescente di nuovi PC. La velocità di trasferimento dati di una connessione Firewire può arrivare a 800Mbps. Il Firewire supporta il collegamento a caldo. Porta video: viene utilizzata per connettere il monitor al computer. o Porta HDMI (High Definition Multimedia Interface): standard per l’interfaccia di segnali audio-video creato nel 2002 dai principali produttori di elettronica, tra cui Sony. Panasonic, Toshiba, Hitachi). Attualmente siamo alla versione HDMI 2.0 con una velocità di 18 Gbps. Molti computer moderni, specie di tipo portatile (notebook) sono privi di porte seriali e talvolta anche della porta parallela. Volendo collegare un dispositivo che necessiti di una di queste porte, si può ovviare al problema impiegando appositi adattatori, da connettersi a una porta USB: essi ricreano, all'altro estremo del cavo, la porta desiderata (seriale, parallela, bluetooth, infrarossi). Naturalmente se ne può usare più di uno, per disporre di diverse porte aggiuntive. SERIALE PARALLELA BLUETOOTH INFRAROSSI USB 1.1 SCSI 1 SCSI 2 FIREWIRE (IEEE 1394) ULTRA SCSI ULTRA 2 SCSI FIREWIRE 400 USB 2.0 FIREWIRE 800 ULTRA 3 SCSI Velocità porte (in MB/s) ULTRA SCSI 320 USB 3 ULTRA SCSI 640 0 100 200 300 400 500 600 700