Con architettura hardware si intende l'insieme dei criteri di progetto in base ai quali è progettato e realizzato un computer, oppure un dispositivo facente parte di esso. Per estensione, descrivere l'architettura di un dispositivo significa, in particolare, elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali.
Definizione
[modifica | modifica wikitesto]Gene Amdahl, Gerrit A. Blaauw e Frederick P. Brooks introdussero il termine "architettura" nel 1964[1][2] per distinguere le caratteristiche comuni di tutti i modelli IBM System/360 dalle loro versioni molto diverse in termini di tecnologia, capacità e velocità operativa. Questa comunanza aveva lo scopo di rendere più facile la sostituzione di parti e programmi del computer quando le esigenze dei clienti cambiavano.
Si trattava quindi di un'astrazione simile al concetto matematico di struttura algebrica. In essa, ad esempio, l'aritmetica è astratta dalle regole di sequenza e di scambio degli operandi o di risoluzione delle parentesi, in modo da applicarsi a vari insiemi e combinazioni di base, come i numeri naturali con l'addizione o gli insiemi con l'unione.
Gli autori hanno evitato la parola astrazione tentando una definizione per enumerazione in una nota a piè di pagina: “Il termine architettura viene qui utilizzato per descrivere gli attributi di un sistema visti dal programmatore, cioè la struttura concettuale e il comportamento funzionale, distinti dall'organizzazione del flusso di dati e dei controlli, dalla progettazione logica e dall'implementazione fisica”.
Autori successivi come Peter Stahlknecht e Ulrich Hasenkamp[3] hanno specificato, integrato e modificato questo elenco, perdendo di vista l'aspetto dei punti in comune e dell'astrazione. Di conseguenza, l'espressione "architettura dei computer" perse il suo carattere essenziale e divenne una parola d'ordine sofisticata per progetti arbitrari.
Descrizione
[modifica | modifica wikitesto]I soggetti che si occupano di architettura dei calcolatori hanno il compito di costruire sistemi di elaborazione di diversa complessità (da una semplice scheda elettronica a un complesso sistema con grossa potenza di calcolo) mettendo insieme questi componenti elementari.
È anche importante sottolineare la differenza che intercorre tra elettronica e architettura dei calcolatori: l'elettronico ha il compito di costruire circuiti veloci ed efficienti, si occupa quindi di migliorare i "mattoni", i componenti elementari del sistema; l'architetto dei calcolatori ha invece il compito di ottenere le migliori prestazioni possibili (in termini di potenza di calcolo, costi in termini economici) assemblando in maniera efficiente i componenti elementari.
Elementi base
[modifica | modifica wikitesto]I "mattoni" che costituiscono un sistema di calcolo sono:
Mettendo insieme le porte logiche, che sono tipicamente circuiti realizzati con diverse tecnologie elettroniche (CMOS, TTL, ECL) è possibile costruire le cosiddette macchine elementari che si dividono in macchine combinatorie e macchine sequenziali.
Tipologia
[modifica | modifica wikitesto]Macchine combinatorie
[modifica | modifica wikitesto]I circuiti (o macchine) combinatori possono essere modellati matematicamente con funzioni booleane di variabili booleane del tipo dove è il vettore delle uscite del sistema e è il vettore degli ingressi; come si nota dall'argomento della funzione , i circuiti combinatori non sono dotati di stato, sono sistemi adinamici e quindi l'uscita del sistema in un istante dipende solo dall'ingresso applicato al sistema nello stesso istante e non dagli ingressi precedentemente applicati (supponendo per semplicità che non ci siano ritardi di propagazione tra ingresso e uscita).
Le macchine combinatorie elementari sono le seguenti:
- multiplexer
- demultiplexer
- decodificatori
- sommatori, divisori, moltiplicatori
Macchine sequenziali
[modifica | modifica wikitesto]Le macchine sequenziali invece sono sistemi del tipo dove è il vettore delle uscite, è il vettore degli ingressi e è il vettore degli stati. Quindi una macchina sequenziale è un sistema dinamico, la cui uscita in un generico istante dipende sia dall'ingresso sia dallo stato del sistema in quell'istante.
Le macchine sequenziali fondamentali sono:
Processori e sistemi
[modifica | modifica wikitesto]Interconnessioni di reti logiche sotto forma di circuiti integrati danno vita a sistemi elettronici di elaborazione più complessi (es. programmable logic device e microcontrollori) fino ad arrivare ai processori. Il termine architettura viene dunque usato in riferimento alla configurazione di quest'ultimi (architettura x86, CISC, RISC, SPARC, 32-bit, 64-bit, pipeline, ecc...) e, quando si parla di prodotti di consumo, si usa in contrapposizione alla parola software: le soluzioni hardware risolvono le loro funzionalità sotto forma di dispositivo dedicato, quelle software sono soluzioni sviluppate sotto forma di programmi eseguibili che possono essere caricati su dispositivi general purpose.
A livello più esteso il termine architettura si riferisce all'architettura logica del computer nel suo intero comprendendo processore, memoria, registri e collegamenti tra loro, scheda madre, schede di espansione, case o cabinet ecc...(architettura di von Neumann, architettura Harvard, architettura di un processore basato su registri generali ecc..). Nell'ambito dei sistemi informatici diffuse sono invece le architetture hardware n-tier, mentre nelle grandi realtà si parla di architettura telematica.
Architettura software
[modifica | modifica wikitesto]L'architettura software è l'organizzazione fondamentale di un sistema, definita dai suoi componenti, dalle relazioni reciproche tra i componenti e con l'ambiente, e i principi che ne governano la progettazione e l'evoluzione. Questa definizione deriva dallo standard IEEE 1471-2000. Al pari delle architetture hardware, descrivere l'architettura software di un sistema significa elencarne le sottoparti costituenti ed illustrarne i rapporti interfunzionali. Più precisamente, l'architettura software include l'insieme delle decisioni significative sull'organizzazione di un sistema software. L'implementazione di architetture software complesse spesso dà vita a piattaforme software.
Nelle grandi realtà l'architettura software è parte dell'architettura telematica. Nell'ambito delle reti informatiche un esempio di architetture software sono le architetture di rete a strati, mentre nelle applicazioni web sono diffuse le architetture software multi-tier.
Applicazione
[modifica | modifica wikitesto]Come l'architetto di un edificio definisce i principi e gli obiettivi di un progetto di costruzione come base per i piani del progettista, così anche l'architetto informatico definisce l'architettura del computer come base per le specifiche di progettazione.
Il termine viene utilizzato per diversi significati:
- L'architettura del set di istruzioni: la progettazione dell'architettura del processore di un computer e del suo set di istruzioni e tecniche come il parallelismo SIMD e MIMD;
- architettura hardware più generale e completa, come il cluster computing e le architetture NUMA;
- un'accezione meno formale si riferisce alla descrizione dei requisiti (soprattutto di velocità e connettività) o delle implementazioni progettuali dei vari componenti di un computer (come la memoria, la scheda madre, le periferiche elettroniche o, più in generale, il processore principale).
Note
[modifica | modifica wikitesto]- ^ Gene M. Amdahl, Gerrit A. Blaauw, Fred P. Brooks: Architecture of the IBM System /360. In: IBM Journal of Research and Development, vol. 8, n. 2, aprile 1964.
- ^ Tuttavia, Richard Case, una delle figure di spicco nello sviluppo dell'architettura IBM 360/370, spiegò in un'intervista del 1987 che il termine “architettura” era già stato usato in precedenza, durante lo sviluppo della serie IBM 8000, un progetto non realizzato. (Si veda: (EN) David Gifford, Alfred Spector, Case Study: IBM’S SYSTEM/360-370 ARCHITECTURE (PDF), su Communications of the ACM, 1987-04, p. 293.
- ^ Peter Stahlknecht, Ulrich Hasenkamp: Einführung in die Wirtschaftsinformatik. 11. Auflage, Springer, Berlin 2005, ISBN 3-540-01183-8.
Voci correlate
[modifica | modifica wikitesto]- Architettura dei calcolatori
- Architettura delle reti di elaboratori
- Architettura Harvard
- Architettura master-slave
- Architettura di von Neumann
- Architettura di un processore basato su registri generali
- Computer
- Evoluzione dell'architettura dei computer
- Microarchitettura
- Sistema informatico
Altri progetti
[modifica | modifica wikitesto]- Wikizionario contiene il lemma di dizionario «architettura»
- Wikiversità contiene risorse sull'architettura
Collegamenti esterni
[modifica | modifica wikitesto]- architettura, su sapere.it, De Agostini.
- (EN) Denis Howe, architecture, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- Architettura, in Grande Dizionario di Italiano, Garzanti Linguistica.