Estratto del documento

Architettura degli elaboratori

Indice

  • 1. Introduzione
  • Approccio strutturale
  • Linguaggi: livelli e macchine virtuali.
  • Attuali macchine multilivello.
  • Evoluzione delle macchine multilivello
  • Tipologie di computer
  • Tipologie di computer
  • Computer usa e getta
  • Microcontrollori
  • Computer per giocare
  • Personal computer
  • Server
  • Cluster di Workstation
  • Mainframe
  • 3. Livello logico-digitale
  • Porte logiche e algebra di Boole
  • Porte logiche
  • Equivalenza di circuiti
  • Circuiti logici digitali elementari
  • Circuiti integrati
  • Reti combinatorie
  • Multiplexer (Demultiplexer)
  • Decodificatori
  • Sommatori: Half/Full adder
  • ALU a 1 bit
  • Clock
  • Latch SR Temporizzato
  • Latch D Temporizzato
  • Flip-Flop
  • Registri
  • Organizzazione della memoria
  • Chip di memoria
  • Tipologie di memoria
  • CPU Il modello di Von Neumann
  • Bus del calcolatore
  • Omnibus
  • Ampiezza del bus
  • Temporizzazione del bus
  • Bus sincroni
  • Bus asincroni
  • Arbitraggio del bus
  • Operazioni sul bus
  • Bus ISA
  • Bus PCI
  • Bus PCI-E
  • Bus USB
  • Un esempio di architettura: i7

Approccio strutturale

Un calcolatore digitale è una macchina che può risolvere problemi eseguendo le istruzioni che le vengono assegnate.

Con il termine programma si intende una sequenza d’istruzioni che descrive come portare a termine un dato compito. I circuiti elettronici di un qualsiasi computer possono riconoscere ed eseguire direttamente soltanto un insieme limitato d’istruzioni semplici in cui tutti i programmi devono essere convertiti prima di poter essere eseguiti.

L’insieme di queste istruzioni primitive forma un linguaggio, chiamato linguaggio macchina, attraverso il quale è possibile comunicare con il computer.

Nel corso del tempo, questa semplice osservazione ha portato a strutturare i computer come una serie di livelli di astrazione, ciascuno dei quali è costruito sulla base di quello sottostante. In questo modo la complessità è gestibile più agevolmente e i computer possono essere progettati in modo sistematico e organizzato. Chiamiamo approccio strutturale questo modo di concepire l’architettura dei computer.

Esiste una gran differenza tra ciò che è adatto agli utenti e ciò che lo è per i computer. Gli utenti vogliono fare X, ma i computer possono fare soltanto Y: ciò genera un problema.

1.1.1 Linguaggi, livelli e macchine virtuali

Il problema può essere affrontato in due modi distinti: entrambi prevedono la definizione di un nuovo insieme d’istruzioni che sia più comodo da utilizzare rispetto a quanto non lo siano le istruzioni macchina predefinite. Considerate globalmente, anche queste nuove istruzioni formano un linguaggio, che chiamiamo L I, allo stesso modo in cui le istruzioni macchina formavano a loro volta un linguaggio, che chiamiamo LO. I due approcci differiscono nel modo in cui i programmi scritti in LI possono essere eseguiti da un computer, in grado di eseguire soltanto quelli scritti nel proprio linguaggio macchina, LO.

  • Un metodo per eseguire un programma scritto in LI consiste nel sostituire, in una fase iniziale, ogni sua istruzione con un’equivalente sequenza di istruzioni in LO. Il programma che ne risulta è costituito interamente da istruzioni di LO e può essere eseguito dal computer al posto del programma LI originale. Questa tecnica è chiamata traduzione.
  • L’altra tecnica consiste invece nello scrivere un programma in LO che accetta come dati d’ingresso programmi in LI; tale programma li esegue esaminando un’istruzione alla volta e sostituendola direttamente con l’equivalente sequenza di istruzioni LO. Questa tecnica, che non richiede la generazione preventiva di un nuovo programma LO, è chiamata interpretazione e il programma che la esegue è detto interprete.

La traduzione e l’interpretazione sono simili. In entrambi i metodi il computer può trattare istruzioni in L1 eseguendo le equivalenti sequenze di istruzioni LO. La differenza è che, nel caso della traduzione, il programma LI viene, all’inizio, convertito interamente in un programma LO. Il programma LI può quindi essere gettato via, mentre il programma LO viene caricato nella memoria del computer per essere eseguito. Durante l’esecuzione il computer ha il controllo del nuovo programma LO. Nell’interpretazione ciascuna istruzione LI viene esaminata e decodificata, e quindi eseguita direttamente senza generare alcun programma tradotto. In questo caso il computer ha il controllo del programma interprete, mentre il programma LI è visto come un insieme di dati. Entrambi i metodi, oltre a una sempre più frequente combinazione dei due, sono ampiamente utilizzati.

Invece di ragionare in termini di traduzione e interpretazione, spesso è più semplice immaginare l’esistenza di un ipotetico computer o macchina virtuale, il cui linguaggio macchina sia LI. Chiamiamo questa macchina virtuale MI.

Per rendere la traduzione o l’interpretazione utilizzabili in pratica, i linguaggi LO e LI non devono essere “troppo” diversi fra loro.

L’approccio più ovvio consiste nell’inventare un nuovo insieme d’istruzioni che sia, rispetto a LI, maggiormente orientato agli utenti piuttosto che alle macchine. Anche questo terzo insieme forma a sua volta un linguaggio, che chiamiamo L2 (e la cui corrispondente macchina virtuale sarà M2).

La definizione di una serie di linguaggi, ciascuno dei quali più pratico da utilizzare rispetto al precedente, può continuare indefinitamente finché non se ne ottenga uno sufficientemente adeguato. Ciascun linguaggio utilizza il precedente come base; un computer che usa questa tecnica può quindi essere immaginato come una serie di strati o livelli.

1.1.2 Attuali macchine multilivello

  • Per completezza occorre dire che esiste un ulteriore livello al di sotto di quello che noi consideriamo livello 0. Questo livello è chiamato livello dei dispositivi. A questo livello i progettisti hanno a che fare con i singoli transistor, gli elementi primitivi nella progettazione dei computer.
  • Gli oggetti che analizzeremo nel livello logico digitale, sono le porte (gate), costruite utilizzando transistor. Ciascuna porta è costituita da una manciata di transistor, ed è dotata di uno o più input e calcola in output una funzione di essi. Combinando più porte logiche si possono creare memorie da 1 bit; registri (16/32/64 bit). Si possono combinare le porte logiche per creare il motore computazionale principale.
  • Subito dopo troviamo il livello di microarchitettura. Qui vi è una memoria locale, formata da un gruppo di registri, e un circuito chiamato ALU (Arithmetic Logic Unit, unità aritmetico-logica), capace di effettuare semplici operazioni aritmetiche. I registri sono connessi alla ALU per formare un percorso dati lungo il quale questi ultimi si spostano. In alcune macchine le operazioni del percorso dati sono controllate da un programma chiamato microprogramma (interprete per le istruzioni del livello 2), mentre su altre il percorso dati è controllato direttamente dall’hardware.
  • Il livello 2 è costituito da quello che chiamiamo il livello ISA (Instruction Set Architecture Level, livello di architettura dell’insieme d’istruzioni).
  • Il livello successivo è generalmente un livello ibrido. La maggior parte delle istruzioni nel suo linguaggio fa parte anche del livello ISA. Vi è un insieme di nuove istruzioni, una diversa organizzazione della memoria e la capacità di eseguire programmi in modo concorrente, oltre a varie altre funzionalità. Nel corso del libro ci si riferirà a questo livello come al livello macchina del sistema operativo.
  • Il livello 4, quello del linguaggio assemblativo, fornisce ai programmatori un modo per scrivere programmi per i livelli 1, 2 e 3 in una forma meno difficoltosa rispetto a quella dei linguaggi delle rispettive macchine virtuali. I programmi in linguaggio assemblativo sono inizialmente tradotti nei linguaggi dei livelli 1, 2 o 3 e successivamente interpretati dall’appropriata macchina virtuale o reale. Il programma che esegue la traduzione è chiamato assemblatore.
  • Il livello 5 consiste generalmente di linguaggi, spesso chiamati linguaggi ad alto livello, definiti per essere utilizzati dai programmatori di applicazioni. I programmi scritti in questi linguaggi sono generalmente tradotti al livello 3 o al livello 4 da un traduttore detto compilatore; in casi meno frequenti è anche possibile che essi siano interpretati.

L’insieme dei tipi di dati, delle operazioni e delle funzionalità di ciascun livello è chiamato architettura. Questa tratta gli aspetti visibili agli utenti di quel determinato livello. Fanno quindi parte dell’architettura le caratteristiche che un programmatore può vedere. Lo studio di come progettare le parti di un computer visibili ai programmatori è chiamato architettura degli elaboratori.

1.1.3 Evoluzione delle macchine multilivello

I programmi scritti in un vero linguaggio macchina (livello 1) possono essere eseguiti direttamente dai circuiti del computer (livello 0), senza far ricorso ad alcuna traduzione o interpretazione.

Questi circuiti formano, insieme alla memoria e ai dispositivi di input/output, l’hardware del computer. L’hardware consiste di oggetti tangibili. Al contrario, il software consiste di algoritmi e delle loro rappresentazioni per i computer.

Nel corso del tempo, man mano che i computer si sono evoluti, questo confine si è però sfocato: hardware e software sono logicamente equivalenti.

  • Invenzione della microprogrammazione: da 2 a 3 livelli – microprogramma che interpreta ISA: hardware più semplice.
  • Invenzione del sistema operativo: un programma chiamato sistema operativo era tenuto costantemente nel computer. Il programmatore forniva, insieme al proprio programma, alcune schede di controllo che venivano lette ed eseguite dal sistema operativo: automatizzava il compito dell’operatore (caricare schede, selezionare programma ecc.) Negli anni successivi, i sistemi operativi divennero sempre più sofisticati finché non cominciarono ad assumere l’aspetto di un nuovo livello. Alcune queste istruzioni erano identiche a quelle del livello ISA, ma altre, in particolare le istruzioni di input/output, erano completamente diverse. Le nuove istruzioni erano spesso conosciute come macro del sistema operativo o chiamate al supervisore; oggi si usa generalmente il termine chiamate di sistema.
  • Migrazione delle funzionalità verso il microcodice: i progettisti capirono che avrebbero potuto aggiungere nuove istruzioni semplicemente estendendo il microprogramma. In altre parole avrebbero potuto aggiungere “hardware” (nuove istruzioni macchina) per mezzo della programmazione.
  • Eliminazione della microprogrammazione: le dimensioni dei microprogrammi aumentarono così tanto che cominciarono a divenire via via più lenti. A un certo punto alcuni ricercatori compresero che le macchine potevano essere accelerate eliminando il microprogramma, riducendo considerevolmente l’insieme delle istruzioni e facendo in modo che quelle rimanenti venissero eseguite direttamente.

Il software di oggi potrebbe essere l’hardware di domani e viceversa.

1.3 Tipologie di computer

1.3.1 Forze tecnologiche ed economiche

L’industria dei computer avanza più velocemente di tutte le altre. La principale forza trainante è la capacità, che i produttori di circuiti hanno, di integrare di giorno in giorno sempre più transistor all’interno dei chip.

Legge di Moore: il numero di transistor raddoppia ogni 18 mesi.

La legge di Moore ha creato quello che gli economisti chiamano un ciclo virtuoso. Gli avanzamenti tecnologici (transistor/chip) portano a prodotti migliori e allo stesso tempo più economici. Prezzi inferiori portano a loro volta alla creazione di nuove applicazioni. Nuove applicazioni creano nuovi mercati e fanno sorgere nuove società che cercano di trarne vantaggio. L’esistenza di tutte queste società genera competizione, che, a sua volta, crea la domanda economica per avere tecnologie migliori grazie a cui sconfiggere la concorrenza.

1.3.3 Computer usa e getta

Probabilmente il più importante sviluppo nell’area di questi tipi di computer è rappresentato dai chip RFID (Radio Frequency Identification, “identificazione a radiofrequenza”). Oggi è possibile costruire, per pochi centesimi, chip RFID senza batteria, larghi meno di 0,5 mm, caratterizzati da un numero a 128 bit predefinito e univoco e contenenti al loro interno un piccolo radiotrasmettitore. Quando ricevono impulsi radio da un’antenna esterna i chip RFID si caricano grazie al segnale entrante sufficientemente a lungo da riuscire a ritrasmettere all'antenna il proprio numero identificativo. Anche se questi chip sono piccoli, le loro possibili implicazioni non lo sono affatto.

  • Eliminare il codice a barre dai prodotti.
  • L’identificazione di veicoli.
  • La gestione dei bagagli delle compagnie aeree, sistemi di consegna.
  • Inserire tali chip nelle banconote.

1.3.4 Microcontrollori

I computer integrati in un dispositivo, a volte chiamati microcontrollori, lo comandano e ne gestiscono l’interfaccia utente. I microcontrollori sono presenti in un gran numero di apparecchi molto diversi fra loro.

  • Elettrodomestici.
  • Dispositivi per la comunicazione.
  • Apparecchi per l’intrattenimento.
  • Periferiche del computer.
  • Dispositivi per le immagini.
  • Armi ecc.

I microcontrollori sono invece sistemi completi, anche se di piccole dimensioni. Ciascun microcontrollore è dotato di un processore, di una memoria e di capacità di I/O.

Generalmente i microcontrollori possono essere di due tipi: a uso generale, o specifico per un’applicazione.

1.3.5 Computer per giocare

A un gradino più in alto si trovano i videogiochi. Si tratta di normali computer dotati di speciali capacità grafiche e sonore, ma poco espandibili e forniti di software limitato. Anche se di solito le console hanno interfacce USB e FireWire, gli utenti non possono espanderle attraverso schede aggiuntive. Inoltre, e forse questo è l’aspetto più importante, le console sono attentamente ottimizzate per un particolare tipo di applicazioni, come i videogiochi 3D fortemente interattivi e con audio stereo di alta qualità. Tutto il resto è secondario.

1.3.6 Personal computer

Continuando a salire i gradini della scala degli elaboratori arriviamo ai personal computer, cioè quelle macchine a cui perlopiù si pensa quando si sente pronunciare il termine “computer”. Essi comprendono i modelli desktop e quelli portatili. Sono dotati di sistemi operativi sofisticati, hanno molte possibilità di espansione e dispongono di un’ampia gamma di software disponibile. Il cuore di ogni personal computer è costituito da una scheda di circuiti stampati che contiene la CPU, la memoria, vari dispositivi di I/O (come un chip audio e talvolta un modem), oltre alle interfacce per tastiera, mouse, disco, rete e ad alcuni slot di espansione. La Figura 1.10 mostra un’immagine di una di queste schede, i computer portatili sono fondamentalmente dei PC realizzati in dimensioni ridotte. Usano le stesse componenti hardware, seppur costruite in dimensioni inferiori, e possono eseguire lo stesso software dei PC da scrivania. Un altro tipo di macchina strettamente collegato al personal computer è il PDA.

1.3.7 Server

Spesso vengono impiegate versioni potenziate dei personal computer o delle workstation come server di rete, sia per reti locali (di solito all’interno

Anteprima
Vedrai una selezione di 11 pagine su 46
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 1 Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 2
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 6
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 11
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 16
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 21
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 26
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 31
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 36
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 41
Anteprima di 11 pagg. su 46.
Scarica il documento per vederlo tutto.
Introduzione all'architettura dei calcolatori  - Algebra di Boole, livello logico digitale i7 Pag. 46
1 su 46
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 gian_fri99 di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e sistemi operativi 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 Bari o del prof Pirlo Giuseppe.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community