Progettare architetture per calcolatori elettronici

Progettare architetture per calcolatori elettronici

Progettare architetture per calcolatori elettronici

Il progettista di architetture di calcolatori elettronici è colui che progetta macchine per eseguire programmi. Esso sceglie perciò l’insieme delle istruzioni eseguibili sul calcolatore, l’organizzazione funzionale delle risorse disponibili, il progetto logico del calcolatore e la sua realizzazione; quest’ultima, a sua volta, include il progetto dei circuiti integrati (IC), dei loro contenitori, dell’alimentazione e del raffreddamento. Al fine di ottenere un progetto complessivo ottimizzato della macchina, risulta  dunque necessaria una familiarità con una ampia gamma di tecnologie, dai compilatori ai sistemi operativi, dal progetto logico alla realizzazione.

Il termine “architettura del calcolatore” include dunque molto più del progetto dell’insieme di istruzioni. Al contrario, parlando di “architettura dell’insieme di istruzioni” ci riferiamo specificamente all’insieme di istruzioni realmente visibile al programmatore: tale insieme di istruzioni serve come legame tra il software e l’hardware.

La realizzazione di una macchina ha, in generale, due componenti:

  • organizzazione: comprende gli aspetti di progetto di più alto livello, come il sistema di memoria, la struttura del bus ed il progetto interno della CPU (Central Processing Unit);
  • hardware: con questo termine ci si riferisce generalmente al progetto logico dettagliato della macchina ed alla tecnologia con cui è stato realmente realizzato.

Requisiti funzionali per calcolatori elettronici

Un progettista di architetture di calcolatori elettronici deve effettuare il suo progetto in modo da soddisfare gli obbiettivi prefissi su tre differenti aspetti:

  • requisiti funzionali;
  • prezzo;
  • prestazioni.

Per quanto riguarda i requisiti funzionali, può trattarsi semplicemente di caratteristiche specifiche imposte dal mercato: ad esempio, le applicazioni software determinano come la macchina sarà usata e quindi spesso guidano la scelta di determinati requisiti funzionali; se una gran parte del software viene concepita per una certa architettura dell’insieme di istruzioni, sarà tale architettura ad essere considerata quasi come predefinita dal progettista. Una semplice considerazione, in quest’ottica, è la seguente: il fatto che la maggior parte dei  moderni  sistemi  operativi usino memoria virtuale e meccanismi di protezione costituisce un requisito funzionale che il progettista dovrà garantire, fornendo un supporto minimo a tali funzionalità, senza il quale la macchina non sarebbe nemmeno avviabile; successivamente, ogni hardware aggiuntivo a tale soglia può essere valutato da un punto di vista costo/prestazioni.

Bilancio software e hardware

Una volta  stabilito  un  insieme  di  requisiti funzionali, il progettista deve cercare di ottimizzare il progetto complessivo della macchina, sulla base di opportuni parametri. I parametri più comuni sono senz’altro il costo e le prestazioni. Altri parametri, più specifici dei vari ambienti di lavoro, sono ad esempio l’affidabilità e la tolleranza ai guasti (che sono fondamentali negli ambienti transazionali).

L’obbiettivo dell’ottimizzazione del rapporto costo/prestazioni sarà quello maggiormente “inseguito” nei nostri discorsi. Sostanzialmente, si tratterà sempre  di individuare il punto migliore in cui realizzare determinati requisiti funzionali. Subentra a questo punto la questione generale della scelta se realizzare una data caratteristica tramite l’hardware e tramite il  software:

  • la realizzazione via software è facile da progettare, semplice da aggiornare e con minore costo degli errori;
  • la realizzazione via hardware ha invece il grosso vantaggio di garantire migliori prestazioni, anche se non sempre (infatti, un algoritmo realizzato  via software può essere migliore di un algoritmo mediocre realizzato in hardware), mentre invece il costo degli errori è decisamente più alto (una cosa è modificare la riga di un programma e ben altra cosa è riparare o sostituire integralmente un intero circuito).

Possiamo perciò affermare che un giusto bilancio tra hardware e software conduce sicuramente ad ottenere la macchina migliore per l’applicazione di interesse.

A questo possiamo aggiungere che, talvolta, un requisito specifico può rendere necessaria l’introduzione di un supporto hardware. Ad esempio, una macchina concepita per applicazioni scientifiche, in cui si faccia uso intensivo di calcoli in virgola mobile, richiederà quasi sicuramente hardware dedicato per le operazioni in virgola mobile: in questo caso, il problema non è tanto di funzionalità, quanto di prestazioni. Si tenga anche presente che il trattamento software della virgola mobile     è comunque possibile, ma sicuramente più lento di quello via hardware.

Dovendo scegliere tra due progetti, un fattore di giudizio è importante è anche la complessità di progetto. Infatti, i progetti complessi richiedono tempo per essere completati e immessi sul mercato, il che implica che essi, per poter  essere  competitivi ed attrarre gli utenti, debbano avere alte prestazioni.  In  generale,  risulta più semplice controllare la complessità del software che non dell’hardware, dato che il software è più facilmente “leggibile” e quindi modificabile, per cui un progettista potrebbe esplicitamente trasferire talune funzionalità dall’hardware al software. A fronte di questo, d’altra parte, la scelta dell’architettura dell’insieme di istruzioni e la scelta dell’organizzazione influenzano la complessità non solo dei sistemi operativi e dei compilatori, ma anche della realizzazione della  macchina.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *