Dentro un Sistema Digitale

Posted in Elettronica (facile) per MusicistiNotizie e Aggiornamenti

Tra le due grandi guerre dello scorso secolo si concentrarono gli studi che portarono alla definizione delle architetture di base degli odierni computer digitali. Il concetto fondamentale deriva dalla possibilità di memorizzare dati e istruzioni con la stessa modalità (sia concettuale che fisica).

Si partiva dal concetto (matematico) di Algoritmo. Un algoritmo è un insieme finito di passi che produce risultati a partire da un insieme di dati di ingresso.

Tra i pionieri di queste ricerche citiamo il matematico inglese Alan Turing che, con la sua Macchina di Turing definì un sistema teorico (realizzabile in pratica) in grado di eseguire tutte le classi di algoritmi note all’epoca.

Altro nome di rilievo è l’ungherese John Von Neumann che introdusse l’architettura alla base dei moderni calcolatori.

In questa (architettura di Von Neumann) si riconoscono i componenti fondamentali a cui abbiamo ormai fatto l’abitudine:

  • Central Processing Unit (CPU): è il cuore del computer e contiene i circuiti che servono per eseguire le operazioni matematiche (Arithmetic, Logic Unit  -ALU) e le funzioni di controllo dei sistema (Control Unit)
  • Memoria Centrale: insieme dei dispositivi che contengono dati e programmi in corso di elaborazione
  • Memoria di Massa: insieme dei dispositivi che contengono archivi di dati e programmi
  • Periferiche: insieme dei dispositivi che consentono l’interazione uomo-macchina (mouse, tastiera, monitor, dispositivi audio, ecc)

Rispetto alla versione originale, l’attuale architettura dei calcolatori include il concetto di Bus che è una sorta di autostrada digitale su cui passano tutti i flussi di dati e istruzioni che vengono poi instradati in modo opportuno sui dispositivi di pertinenza.

Il System Bus include Control Bus (per le istruzioni e i controlli), Address Bus (per gli indirizzi) e Data Bus (per i dati).

A partire dagli studi di Turing e Von Neumann si realizzarono sistemi di calcolo sempre più sofisticati ma di dimensioni e costi non proponibili per la vasta diffusione che viviamo adesso.

La mossa definitiva per lo sviluppo di calcolatori di uso personale (Personal Computer o PC) fu l’invenzione del Microprocessore che dobbiamo al fisico italiano Federico Faggin che sviluppò sia l’architettura tecnica che il processo realizzativo che portarono alla produzione del chip 4004 di Intel.

Successivamente Faggin fondò la sua azienda (la Zilog) che rilasciò il famigerato chip Z80 che ebbe una grande fortuna negli anni ’70 e ’80.

Grazie a Faggin, basta una mother board (scheda madre) su cui inserire la (o le) CPU, la memoria centrale, i chip che funzionano da driver per le periferiche e i controller per la memoria di massa e il gioco è fatto.

La Memoria Centrale è realizzata con circuiti integrati a semiconduttore. Si utilizza la memoria RAM (Random Access Memory) per caricare dati e programmi in corso di utilizzo da parte della CPU.

La RAM ha tempi di accesso abbastanza veloci ed è di tipo volatile (si cancella se manca l’alimentazione). Esistono memorie che non si cancellano che sono definite Read Only Memory (ROM) queste, ancora a semiconduttore, servono a memorizzare (tra l’altro) i codici di avvio del computer che servono a far partire in modo ordinato tutti i suoi componenti.

Il BIOS (Basic Input Output System) è scritto in una ROM.

Una memoria di quantità molto limitata ma di accesso molto veloce è contenuta dentro la CPU. Si chiama Cache e si utilizza pre-caricando i dati di prossimo utilizzo da parte della CPU in modo da accelerare al massimo la loro elaborazione. I dati della cache vengono poi (grazie alla Control Unit) scambiati in modo opportuno con la memoria centrale per eseguire i vari passi dell’algoritmo in esecuzione.

La Memoria di Massa è stata fino a poco tempo fa realizzata esclusivamente su supporti magnetici di vario tipo. Si partiva con strutture meccaniche di nuclei magnetici che venivano orientati (fisicamente) in base allo stato da memorizzare. Poi è stata la volta dei nastri e, infine, dei dischi che potevano essere flessibili (Floppy Disk) o rigidi (Hard Disk).

Anche qui il progresso ha portato a novità grazie allo sviluppo delle memorie Flash. Queste sono ROM che possono essere cancellate e riscritte grazie ad opportuni comandi elettrici. Gli hard disk a stato solido (Solid State Disk o SSD) sono realizzati con questa tecnologia (che è la stessa degli stickers USB).

Il bus di sistema non è direttamente accessibile all’esterno e, per questo scopo, sono disponibili varie soluzioni. Tra queste le più utilizzate in questo periodo sono Universal Serial Bus (USB) e Thunderbolt. Questi bus hanno velocità di trasporto dei dati inferiori rispetto al bus di sistema ma specifiche tecniche dedicate alla trasmissione e ricezione di dati al di fuori dell’ecosistema PC.

L’architettura di Von Neumann ha il difetto di utilizzare la stessa memoria per memorizzare sia i dati che i programmi. Sono necessari quindi due accessi per prelevare, in successione, prima l’istruzione e poi i dati da elaborare con questa.

Con l’architettura Harward si risolve questo problema e si da lo spunto alla realizzazione di dispositivi utilizzati quando la quantità di calcoli è rilevante come, ad esempio, per applicazioni audio e video.

Anche in questo caso l’introduzione della memoria Cache velocizza ulteriormente i processi come brevemente indicato in figura:

Questi dispositivi sono denominati Digital Signal Processor (DSP) e sono contenuti nelle interfacce audio di mercato. Il diffusissimo chip Sharc di Analog Devices è un classico esempio di DSP.

Tutti i componenti di cui abbiamo parlato, per funzionare in modo coordinato, hanno necessità di un programma che li gestisca. Questo programma è denominato Sistema Operativo. Questo sottintende a tutte le operazioni di base dei computer.

Gestione dei programmi, gestione dei file, configurazione dei componenti hardware e software, coordinamento degli accessi alle risorse, gestione della comunicazione con l’esterno, gestione delle periferiche e tante altre cose sono appannaggio del sistema operativo.

I più diffusi sistemi operativi per utilizzo personale sono i notissimi:

  • Apple Mac OS – per computer Apple
  • Apple iOS – per device mobili Apple
  • Microsoft Windows – per computer con tecnologia Microsoft
  • Android – per device mobili con tecnologia Google

Su scala industriale sono molto utilizzati:

  • UNIX
  • Linux (versione Open Source di UNIX)
  • Microsoft Windows Server

Molti altri sistemi operativi sono disponibili (o lo sono stati) ma quelli elencati sono i più diffusi attualmente.

Il compito di tradurre in istruzioni comprensibili ai computer i passi stabiliti dagli algoritmi è demandato ai Programmi (o applicazioni).

Questi sono costituiti da un insieme (che può diventare anche molto grande) di istruzioni scritte in linguaggi specializzati in base alla tipologia di applicazioni che si vogliono realizzare. Questi linguaggi si chiamano Linguaggi di Programmazione (programming language). Ne esistono molti e sono stati concepiti per le ragioni più varie e impossibili da descrivere in un articolo. Ne cito alcuni solo a scopo indicativo:

  • C e C++ per applicazioni in tempo reale (quali quelle musicali)
  • BASIC e Pascal per scopi didattici
  • Java e php per applicazioni web
  • SQL per la gestione dei data base

Attraverso i linguaggi di programmazione si strutturano gli algoritmi e si scrivono i programmi che definiscono tutte le funzioni richieste dalla applicazione. Al temine della codifica si procede ad una operazione definita Compilazione. Questa fa sì che il codice venga tradotto in un linguaggio di basso livello (linguaggio macchina) che è direttamente interpretabile dalla CPU.

Il programma così elaborato viene detto codice eseguibile ed è subito pronto per essere lanciato dal sistema operativo e diventare, ad esempio, la vostra DAW o il vostro video game preferiti.

Grazie ai linguaggi di programmazione, un computer (o una rete di questi) può assumere, almeno logicamente, le funzioni più disparate. Grazie alla possibilità di scrivere programmi si ha a disposizione una quantità limitata solo dalla fantasia di macchine virtuali capaci di risolvere (o simulare) tutti i problemi che si riesce a definire in modo sufficientemente formalizzato.

Per accelerare le elaborazioni in campo musicale è possibile espandere le capacità elaborative del PC inserendo acceleratori dotati di DSP. Questi consentono, da un lato di evitare che la CPU debba dedicare risorse alla elaborazione audio, dall’altro, di avere strumenti molto sofisticati a supporto del processo creativo.

Gli indirizzi di sviluppo attuali, anche in campo musicale, portano sempre di più verso il supporto alla collaborazione.

Ormai è abbastanza normale lavorare da sedi diverse su progetti musicali anche molto complessi. Lo sviluppo delle tecnologie di comunicazione (il 5G che ormai è alle porte) rende alla portata anche la collaborazione remota in tempo reale. Staremo a vedere…

Sono un ingegnere elettronico con la passione per la musica ed il suono. Mi sono avvicinato alla musica da autodidatta (salvo una breve parentesi alla University of the Blues di Dallas) e ho suonato nei peggiori locali italiani (con casuali puntate all'estero).
Ho costruito la mia prima radio FM appena finita la terza media. Ho continuato con amplificatori a valvole e transistor fino ad arrivare alla produzione di circuiti integrati.
Collaboro da anni con varie riviste (cartacee e web) di musica nelle quali mi occupo di recensioni di strumenti musicali e sistemi per l'elaborazione del suono. Trovate le mie pubblicazioni su Accordo (accordo.it), la rivista Chitarre (dal 2010 al 2015) e su Audio Central Magazine (audiocentralmagazine.com).
Produco musica da un po' nello NTFC Studio che serve sostanzialmente per le produzioni di NTFC Band.

There are no reviews yet.

Lascia un commento

Scopri di più nei nostri reparti

Start typing and press Enter to search

Shopping Cart