Architettura (computer)

concetto informatico
(Reindirizzamento da Architettura informatica)

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.

Schema di un IBM compatibile, con Chipset (northbridge southbridge), CPU e flashROM

Definizione

modifica

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

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
 
Chip con porte logiche

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

Macchine combinatorie

modifica
  Lo stesso argomento in dettaglio: Circuito combinatorio.
 
Astrazione dall'hardware al software

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:

Macchine sequenziali

modifica
  Lo stesso argomento in dettaglio: Circuito sequenziale.

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

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
 
I componenti di desktop libre

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

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:

  1. ^ 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.
  2. ^ 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.
  3. ^ Peter Stahlknecht, Ulrich Hasenkamp: Einführung in die Wirtschaftsinformatik. 11. Auflage, Springer, Berlin 2005, ISBN 3-540-01183-8.

Voci correlate

modifica

Altri progetti

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica