Estratto del documento

Architettura degli elaboratori

Nota: Per risolvere i problemi che via via sorgeranno nel corso useremo il principio di “Astrazione/Implementazione”, cioè risolveremo problemi via via più difficili basandosi sulle risoluzioni di problemi più semplici affrontati in precedenza.

Un esempio di un’architettura a 6 livelli

  • Livello 5: livello di linguaggio orientato al problema
    • Traduzione (Compilatore)
  • Livello 4: livello di linguaggio assemblativo
    • Traduzione (Assemblatore)
  • Livello 3: livello macchina del sistema operativo
    • Interpretazione (Sistema Operativo)
  • Livello 2: livello architettura dell’insieme di istruzioni
    • Interpretazione (Microprogramma) o Esecuzione Diretta
  • Livello 1: livello microarchitettura
    • Hardware
  • Livello 0: livello logico-digitale
    • Livello 0 – Logico-Digitale

Livello 0 – Logico-Digitale

È composto da:

  • Porte Logiche: danno un risultato preciso (0 o 1), sono i blocchi fondamentali di tutti gli elaboratori
  • Circuiti Combinatori: sono circuiti che danno una determinata risposta (0 o 1) a seconda degli input considerati
  • Circuiti Sequenziali: eseguono operazioni semplici come lettura/scrittura (es. Memoria)

Livello 1 – Microarchitettura

Governa il flusso di dati fra i vari componenti del livello logico-digitale. Può essere sia hardware che software a seconda dei casi.

Livello 2 - ISA (Instruction Set Architecture)

Insieme di istruzioni eseguibili dalla microarchitettura.

Livello ¾ – Sistema Operativo/Linguaggio Assemblativo

Livelli “Ibridi”: non sono rigidamente separati come i livelli precedenti.

  • Sistema Operativo: offre servizi di gestione delle risorse
  • Assemblativo: permette la programmazione dei livelli sottostanti

Livello 5 – Linguaggio orientato al problema

Ai giorni nostri abbiamo un fenomeno denominato: “Ubiquitous Computing”, ovvero la presenza di un elaboratore in moltissimi oggetti di uso quotidiano (es. microonde o giocattoli) e in tutti gli oggetti che usano l’architettura dei computer per svolgere un lavoro.

Per misurare le velocità degli elaboratori usiamo 2 principali denominazioni:

  • MIPS = Milioni di Operazioni al Secondo
  • GFLOPS = Miliardi di operazioni Floating-point (virgola mobile) per secondo

Esempi

  • Oggetti usa e getta (cartoline ecc.), RFID, sistemi “embedded” (sistema di controllo freni) → alcuni MIPS
  • Smartphone e tablet → 1000 a 10000 MIPS
  • Console → 100 a 250 GFLOPS (in particolare GPU Graphics Processing Unit)
  • PC → 50 a 100 GFLOPS (in particolare CPU)
  • Server → 100 GFLOPS a 10 TFLOPS (CPU+GPU)
  • Cluster → 200 GFLOPS a 20 TFLOPS (CPU+GPU)
  • Supercalcolatori → 100 TFLOPS a 20 PFLOPS

Organizzazione degli elaboratori

  • Memoria Unit
  • Unità Aritmetico-di Logica
  • Controllo

Nell’architettura di Von Neumann il calcolatore è composto da: processore/i, memoria e dispositivi di input/output. La struttura dei calcolatori usa un'organizzazione “Bus Oriented”: un insieme di connessioni elettriche parallele utilizzate per trasporto di informazioni da un componente all’altro.

Monitor CPU Memoria Controller Schermo Controller Tastiera ecc.

  • BUS → Usa la memoria per dati e programmi
  • Dati e programmi sono comunicati entrambi tramite il Bus Dati. La CPU comunica con il Bus Indirizzi per organizzare il traffico

CPU è composta da:

  • ALU (Arithmetic Logic Unit): esegue operazioni matematiche e operazioni di selezione (AND, OR, ECC.)
  • Unità di Controllo: legge ed interpreta le istruzioni prendendole dalla memoria
  • Registri: memorizzano i risultati temporanei e le informazioni necessarie al funzionamento del compito assegnato. Possono essere di due tipi:
    • General Pourpuse: per salvare le informazioni di passaggi intermedi
    • Registri Speciali: usati per specifici scopi dalla CPU (es. Instruction Pointer)
  • Instruction Register (IR): salva l’istruzione utilizzata in un preciso momento
  • Memory Address Register (MAR): Conserva indirizzi di memoria utilizzato in un preciso momento
  • Program Status Word (PSW): Registro di 1 bit che dice se le ultime operazioni sono state svolte con successo.

La CPU esegue le istruzioni con uno schema Fetch – Decode – Execute. Che analizzata più a fondo può essere divisa in 7 passaggi principali:

  1. Contenuto del Program Counter viene posto sul Memory Address Register e viene letto l’indirizzo corrispondente
  2. Il contenuto in memoria all’indirizzo indicato dal MAR viene scritto sul Memory Data Register attraverso il bus dati
  3. Il contenuto del MDR viene copiato sull’Instruction Register e viene decodificato
  4. L’istruzione passa in esecuzione sull’ALU
  5. Se ci sono operandi da prelevare da memoria si collocano in registri (usando come prima MAR e MDR)
  6. Terminata l’esecuzione il risultato va su un registro destinazione; se bisogna scrivere in memoria il valore calcolato si usano MAR/MDR attivando linea scrivi
  7. Si ritorna al punto 1 dopo aver aggiornato il valore di Program Counter

Quindi 1-2 corrispondono a Fetch, 3 a Decode, 4-5-6 a Execute.

L’unità di controllo è un circuito hardware compatibile con un insieme di istruzioni, però se l’insieme di istruzioni è troppo grande risulta troppo costoso da realizzare, perciò per risolvere questo problema si è iniziato a permettere una (micro)programmazione della CPU, questo metodo permette di eseguire istruzioni di tipi diverse sfruttando gli stessi componenti e cambiando solamente il comportamento della CPU (correzione errori, aggiunta di nuove istruzioni, ecc.).

Il Data Path è la parte di CPU che comprende: la ALU, l’input e l’output (solitamente registri). Il flusso dei dati dai registri all’ALU è governato da un “clock”, cioè un “ciclo” di data path. Il clock è misurato in Hertz (Hz) (1GHz = 1 miliardo di operazioni al secondo). Il clock è regolato in base a motivazioni sia del tipo fisico, sia dalla complessità delle operazioni che deve eseguire la CPU. Una volta che si è fissata la durata del ciclo di un clock possiamo sempre aumentare la velocità dell’elaboratore aumentando il parallelismo.

Perciò esistono due principali tipologie di architetture:

  • CISC (Complex Instruction Set Computer): permette agli elaboratori di compiere operazioni complesse, tuttavia il processore ne risente diventando sempre più complesso e di difficile gestione
  • RISC (Reduced Instruction Set Computer): gli elaboratori possono evitare di compiere azioni complesse rendendone più semplice e veloce la gestione e possibilmente evitando il più possibile la microprogrammazione

Proprio per quest’ultima tipologia di macchina la microarchitettura può essere implementata sia software che hardware.

Metodi per velocizzare la CPU

  • Pipeline: Permette di eseguire contemporaneamente più cicli Fetch-Decode-Execute, usando ognuno differenti parti della CPU per dividere le fasi. Il vantaggio è che richiede poche risorse in più, perciò è anche poco costoso da implementare.
  • Multicore: All’interno della CPU si replicano unità di controllo e ALU quasi per intero (che cooperano e velocizzano lo svolgimento di programmi).
  • Parallelismo:
    • Array Computer: Molti processori che eseguono la stessa istruzione su diversi flussi di dati (quindi SIMD).
    • Multiprocessore: Molti processori anche diversi che condividono la stessa memoria, ma non necessariamente eseguono la stessa istruzione (quindi MISD).
    • Multicomputer: Molti computer che non condividono una memoria e che comunicano attraverso lo scambio di messaggi (quindi MIMD).

Memorie

Le memorie sono le componenti del calcolatore in grado di conservare informazioni, e sono strutturate a piramide.

  • Volatile: informazione memorizzata fin quando il calcolatore è alimentato
    • Registro
    • Cache
    • Memoria Principale
  • Persistente: l’informazione rimane memorizzata anche quando il calcolatore non è alimentato
    • Dischi Magnetici e SSD
    • Dischi Ottici
    • Nastri

La memoria è organizzata in celle, cioè sequenze di bit caratterizzato da un indirizzo specifico (1 Byte = 8 bit, 1 KB = 1024 bit). Solitamente i calcolatori (“Word”) lavorano su blocchi di dimensioni superiori ad 8 bit, ed esistono due modi per memorizzare valori nelle celle (di dimensione standard di 1 Byte): big endian o little endian. Big endian assegna gli indirizzi da sinistra verso destra mentre little endian da destra verso sinistra.

Spesso le memorie possono imbattersi in errori, sia durante operazioni di lettura che di scrittura, perciò usano metodi (codici) di rilevazione ed eventuale correzione di errore. Quindi se una parola è di m bit si aggiungono r bit di controllo ottenendo una “parola di codice” composta da n = m + r bit.

Per sviluppare molti codici per rilevazione e correzione di errore si utilizza la: “Distanza di Hamming” fra due sequenze di bit. Essa è il numero di bit per cui le due parole, senza errori, differiscono (es. 1001 e 1101 hanno distanza di Hamming = 1). Come regola generale per rilevare bit errati è necessario un codice con distanza di Hamming maggiore o uguale a d + 1 e per correggere bit errati occorre un codice con distanza di almeno 2d + 1.

Codice di bit di parità: solo per rilevazione di errori

  • Ha un unico bit di controllo (r = 1), il quale viene scelto in modo che il numero bit “1” nella parola di codice sia pari
  • Il codice ha distanza di Hamming pari a 2
  • Può essere utilizzato per rilevare singoli bit errati controllando se il numero di bit messi a 1 siano pari

Supponendo che un certo codice con m bit di dati e r bit di controllo sia in grado di correggere tutti i possibili errori su un singolo bit:

  1. Ciascuna delle parole di codice necessita 2^m + 1 parole ad essa dedicate (con n = m + r):
    • 1 per la parola di codice corretta
    • n per i possibili errori di un solo bit
  2. Dato che il numero totale di combinazioni di bit è 2^n, deve valere (2^m + 1) * 2^n ≤ 2^n da cui deriva n + 1 ≤ m + r

Detto questo possiamo affermare che il codice di Hamming è in grado di correggere tutti i possibili errori su un singolo bit usando il proprio numero minimo di bit di controllo che soddisfa la disequazione m + r + 1 ≤ 2^n.

Memoria CACHE

La memoria CACHE è una memoria molto veloce, ma poco capiente. Quando la CPU deve cercare una parola di codice innanzitutto la cerca nella CACHE se non la trova, allora va a cercare nella memoria, copiandola nella CACHE. Solitamente però la CPU mette nella CACHE anche le parole vicine a quella di cui ha bisogno principalmente perché con tutta probabilità avrà bisogno anche di esse.

Dischi Magnetici

Un Hard Disk (HD) è un meccanismo che immagazzina le informazioni sotto forma magnetica, ed è composto da:

  • Testina: magnetizza e legge lo stato di magnetizzazione della superficie del disco
  • Traccia: sequenza circolare di bit
  • Settore: porzione di traccia che contiene una quantità prefissata di bit (uguale per tutti i settori)

Memorie a Strato Solido

Le memorie a strato solido (SSD) sono memorie poco capienti, ma molto veloci ed interamente elettroniche, senza parti in movimento, perciò molto utilizzati per la realizzazione di portatili.

RAID (Redundant Array of Inexpensive Disks)

Essenzialmente sono una pila di Hard Disk che lavorano in parallelo, ultimamente rese molto affidabili anche in lettura.

Altre tipologie di dischi

A differenza degli HD i compact disk (CD) utilizzano un principio di lettura ottico quindi hanno un metodo di memorizzazione di dati diverso. La codifica dei bit viene divisa in fori (pits) e land (terre) dove le transizioni rappresentano i dati.

Anteprima
Vedrai una selezione di 6 pagine su 21
Architettura degli Elaboratori Pag. 1 Architettura degli Elaboratori Pag. 2
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 6
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 11
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 16
Anteprima di 6 pagg. su 21.
Scarica il documento per vederlo tutto.
Architettura degli Elaboratori Pag. 21
1 su 21
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher edoardofst di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Lanese Ivan.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community