APPROFONDIMENTO DELLE NOZIONI DI BASE SULLA CAM-8

Strutturalmente la CAM-8 e' costituita da una griglia tridimensionale di moduli connessi ad anello in ogni direzione (toro tridimensionale). Ogni modulo contiene le risorse necessarie alla gestione di una parte (detta SETTORE) dello spazio in cui si svolge la simulazione.
In altre parole un modulo e' un sistema di calcolo completo e indipendente che puo' lavorare da solo opure in collaborazione con altri moduli.
La struttura base e' detta BOX ed e' costituita da 8 moduli. In pratica si tratta di una motherboard con otto slot per altrettante schede modulo, la motherboard gestisce il supporto meccanico ed elettrico, le comunicazioni tra moduli e tra moduli e computer di controllo (Host ) tramite un bus dedicato (indicato con TBUS); dispone infine di un FrameGrabber con relativo ingresso per telecamera, e di una scheda VGA per controlare direttamente un monitor grafico.
Disponendo di piu' di un box e' possibile collegarli tra loro per realizzare una macchina piu' grande. La versione attualmente disponibile nel laboratorio di dipartimento e' costituita da un solo box ad otto moduli.

La CAM-8 realizza le proprie elaborazioni tramite il modello degli Automi Cellulari. Di conseguenza considera lo spazio di simulazione suddiviso in una griglia regolare di celle. Nella attuale versione ogni cella e' costituita da 16 bit di memoria, ordinati con indici da 0 a 15.
Raggruppando idealmente tutti i bit (di ogni cella) che hanno lo stesso indice si ottiene un Layer. Nel caso intuitivo di uno spazio bidimensionale si puo' identificare un layer con un piano avente un solo bit per ogni cella. Nel complesso vi saranno quindi 16 piani (layer).
I 16 layer sono indipendenti tra loro e possono essere traslati l'uno rispetto all'altro tramite un comando detto KICK.
Mediante una operazione di kick una cella alle coordinate (x,y) ha la possibilita' di osservare il contenuto di uno o piu' layer di un'altra cella posta alle coordinate (n,m).
Nella documentazione relativa a questa fondamentale operazione si fa riferimento al modello dei piani in scorrimento (rispetto alla griglia delle celle fissa). In realta' questa rappresentazione puo' creare della confusione, nel corso di una operazione di kick non vi e' infatti nulla che si sposti fisicamente ma semplicemente viene svolto un opportuno indirizzamento nella memoria che contiene le celle (modificando degli opportuni registri indice).
Questo significa che la velocita' con la quale la cella (x,y) puo' accedere al contenuto della cella (x+1,y), per esempio, e' identico al tempo occorrente per osservare la cella (x+1000,y).
Cio' che e' importante ricordare e' che per ogni cella si hanno a disposizione unicamente 16 bit. Di conseguenza se in un certo momento si richiede di poter accedere ad uno o piu' bit di un'altra cella e' necessario dedicare un uguale numero di layer (tra i 16 dati) per "trasportare" l'informazione desiderata.

Per esempio:
Supponiamo di avere una immagine a 4 bit per ogni pixel. Supponiamo poi che in un certo passo della elaborazione si debba confrontare ogni pixel dell'immagine con il pixel ad esso adiacente verso destra e verso sinistra.
Sia l'immagine conservata nei layer 8,9,10 e 11; le operazioni per realizzare il confronto sono le seguenti:

SCHEMA DEI LAYER

  1. Ogni cella deve fare due copie del pixel che conserva (per esempio puo' dedicare i layer da 0 a 3 per la prima copia e quelli da 4 a 7 per la seconda).

  2. Tramite il comando kick si deve impostare uno scorrimento a sinistra dei layer da 0 a 3 e verso destra dei layer da 4 a 7 (o viceversa; non vi sono vincoli di movimento imposti dalla macchina. Essi devono pero' essere coerenti con la definizione della LUT di confronto).

  3. Utilizzare i 12 bit, da 0 a 11, quale stato della cella e porli come ingresso ad una LUT appositamente realizzata per il confronto.

Il terzo passaggio e' un elemento chiave per comprendere l'architettura CAM. Si ricordi che un Automa Cellulare e' costituito da una uniforme distribuzione nello spazio di un unico Automa a Stati Finiti, e che un qualunque A.S.F. e' caratterizzato da uno stato di partenza (o attuale), da una serie di regole di transizione, da una serie di stati intermedi, ed eventualmente da uno o piu' stati di arrivo.

Nella CAM lo stato di ogni cella e' determinato dal valore dei suoi 16 bit. In virtu' del rigido determinismo delle regole dell'A.S.F. la CAM prima di iniziare l'elaborazione crea una tabella di look-up (detta appunto Look-Up Table, e indicata con la sigla LUT) nella quale si fa corrispondere ogni combinazione di 16 bit (stato della cella) con il nuovo valore che deve assumere la cella stessa.
Il quarto passaggio e' quindi realizzato come segue: Serialmente ogni modulo scansiona le celle del suo settore e per ognuna di esse compone un indirizzo a 16 bit mediante alcuni bit della cella stessa ed altri di celle diverse (prelevati in accordo con i kick impostati). Con tale indirizzo accede alla LUT e da essa ricava i nuovi 16 bit con i quali viene riscritta l'intera cella (viene riscritta la cella si badi bene, i kick non hanno alcuna funzione in questa fase).

Ricapitolando: per ogni bit di una cella (o meglio per ogni layer nello spazio) esiste un registro, i 16 registri complessivamente indicano il modo di composizione dell'indirizzo con il quale accedere alla LUT. Per esempio considerando la generica cella (x,y) si puo' ottenere un indirizzo utilizzando il primo bit della cella a destra (x+1,y), il secondo e il terzo dalla cella (x.y-3), il quarto dalla cella (x,y+10) e i restanti dodici dalla cella stessa (x,y). Questi 16 bit, letti nell'ordine indicato, identificano una riga della LUT che contiene i nuovi 16 bit della cella (x,y).


Retrocedi
Continua con la parte seguente