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
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
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
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
Macchine combinatorie
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
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
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
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
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
Voci correlate
Altri progetti
Collegamenti esterni
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.