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 sono 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 pane 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 tradoni 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 marco 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 RF1D (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 vidcegiochi 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 dì queste schede, ì

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