Ora che i principi fondamentali sono stati acquisiti si puo' integrare l'introduzione con alcune informazioni essenziali proposte in ordine sparso:


  1. Il processo di scansione delle celle da parte di un modulo prende il nome di STEP e nello stesso modo si indica (nei programmi) l'istruzione per avviarla. Lo step e' un processo unico e non interrompibile.

  2. La CAM-8 durante uno step non svolge nessuna operazione di calcolo, si limita unicamente a scorrere tutte le celle e per ognuna di esse formare un indirizzo a 16 bit con cui estrarre i nuovi 16 bit dalla LUT usandoli per riscrivere l'intera cella.

  3. La programmazione della CAM-8 si riduce quindi:
    • Alla definizione di quelle regole che permettono la composizione della LUT (cioe' le regole di transizione tra uno stato e l'altro);
    • Alla organizzazione dei layer (cioe' alla distribuzione delle informazioni in essi);
    • Alla corretta pianificazione delle operazioni di kick (per comporre adeguatamente gli indirizzi di accesso alla LUT in accordo con il significato attribuito ad ogni layer e con le regole dell'automa implementato).

    La definizione della LUT e' solitamente il passaggio piu' complesso.

  4. La LUT e' sempre intera, nel senso che se anche l'automa che si vuole implementare necessita di un solo layer la LUT e' comunque definita per tutti e 16 i bit di ogni cella.
    Cio' non costituisce un problema per il programmatore. Il meccanismo di costruzione della LUT e' infatti affidato al comando rule>table il quale interpreta le indicazioni del programmatore per la implementazione delle regole dell'ASF ed automaticamente gestisce il valore dei layer che non compaiono esplicitamente nelle regole indicate. In altre parole il programmatore puo' concentrarsi unicamente sui layer significativi per le regole che vuole implementare disinteressandosi completamente degli altri.
    Gli unici sostanziali effetti consistono nell'impossibilita' di frammentare la memoria dedicata alla conservazione della LUT, di conseguenza ogni volta che si vuole cambiare il gruppo di regole e' necessario ricaricare interamente la LUT, e nel rapido aumento dello spazio su disco occupato. Ogni LUT infatti viene creata e poi scaricata in un file, dato che ogni lut e' composta da 16 bit per ogni combinazione dei 16 bit della cella e' evidente che la LUT occupa 128 Kbyte.
    Ogni regola realizzata in ogni programma genera dunque un file di 128K.
    Ogni volta che si rende necessario l'utilizzo di una determinata regola viene caricato dal disco il file relativo e con esso viene riempita la memoria della LUT. Questa operazione e' molto frequente e quindi, per evitare che il sistema rimanga inattivo durante la lettura della LUT richiesta, sono disponibili due aree di memoria per altrettante LUT. In questo modo mentre si esegue una scansione dello spazio si puo' contemporaneamente leggere dal disco la LUT occorrente in seguito.

  5. La LUT e le operazioni di kick si intendono sempre applicate all'intero spazio uniformemente (eventualmente e' possibile eseguire scansioni parziali dello spazio).

  6. Normalmente lo spazio e' visto come una entita' unica. Di conseguenza una volta lanciato un passo di elaborazione (uno step) questo interessa tutte le celle senza possibilita' di interruzione (in questo senso pur essendo il modulo seriale si comporta come se fosse parallelo).

  7. All'interno di uno step non si puo' modificare la LUT e nemmeno i kick. E' pero' possibile farlo tra uno step e l'altro.

  8. Nella versione attuale uno step permette di aggiornare 25 Megacelle al secondo (per ogni modulo). Cio' significa che uno spazio di 512x512 pixel puo' essere aggiornato (da un singolo modulo) in meno di 1/60 di secondo. Tale velocita' permette il sincronismo con l'uscita della scheda VGA e quindi di visualizzare l'evoluzione della simulazione in tempo reale.

  9. E' possibile aggirare il limite di 16 bit/cella oppure frazionare la memoria in piu' spazi indipendenti. Si paga pero' con una riduzione delle prestazioni temporali.

  10. La macchina dispone di una larga serie di parametri di controllo che si autodefiniscono. Se non viene specificato un diverso valore da parte del programmatore tali parametri assicurano il piu' efficente utilizzo di tutte le parti disponibili.
    Per esempio: se nel programma non viene specificato il comando singlemodule viene suddiviso lo spazio di simulazione tra i moduli disponibili in modo da garantire la massima velocita' di elaborazione (si ricorda che i moduli lavorano in parallelo tra loro).


    Retrocedi
    Ritorna alla pagina principianti