Unità di controllo

Condividi

Il Microblaze, si presenta come una architettura Harward dotata di quattro bus principali separati, un set d’istruzioni Risc molto snello, con istruzioni uniformi e ortogonali da 32 bit ognuna, un BUS dati a 32 bit e 32 registri della medesima dimensione. Come si può vedere in figura, partendo dai blocchi fondamentali, indicati in bianco, e in funzione delle specifiche esigenze, il “core” si espande con i blocchi, indicati in grigio nella figura, che possono man mano essere aggiunti per adattarlo alle particolari prestazioni richieste, senza dover ritoccare l’intero sistema.
In particolare i moduli che possono essere successivamente connessi sono i seguenti:

  • una MMU derivata dal modello Power PC 405, che può supportare “kernel”, come quello di Linux, che ne esigono la presenza per il controllo della memoria virtuale,
  • una cache dedicata ai salti, associata a un sistema di previsione, per limitare il calo delle prestazioni dovute alle possibili condizioni di stallo della pipeline nei “branch”,
  • due memorie cache, una per le istruzioni e una per i dati, dimensionabili, ognuna, da 64 a 64K byte a scelta del progettista, e connesse con un BUS separato,
  • fino a 16 canali di interfacciamento in input/output, gestibili tramite link seriali (FSL), con un meccanismo simile a una FIFO, accessibili direttamente con istruzioni dedicate, per la realizzazione di coprocessori dedicati, con bassa latenza nel trasferimento dei dati,
  • moltiplicazione e supporto alla divisione implementati in hardware,
  • Floating Point Unit a singola precisione compatibile con standard IEEE 754,
  • Barrell shifter, per la realizzazione di shift multipli in un solo ciclo macchina.

Nell’applicazione che presentiamo, sono state selezionate soltanto le seguenti risorse basilari:

  • i due doppi bus, istuzioni/dati, per l’accesso simultaneo alla memoria locale interna e alle periferiche, ovvero il BUS LMB, con 32kB di memoria interna accessibile con un solo ciclo di clock, e il bus PLB per l’accesso alla memoria esterna e alle periferiche,
  • Floating Point Unit, moltiplicatore e divisore hardware, barrel shifter.

 

Le motivazioni alla scelta fatta

Quali sono i vantaggi dell’impiego di una simile architettura?
Innanzitutto il robot nasce per uno scopo didattico, quindi deve essere aperto, in modo che gruppi di studenti diversi possono pensare simultaneamente alla realizzazione delle diverse periferiche di controllo di sensori e attuatori, controllandone completamente le funzionalità, il progetto e la verifica;

Nel dimensionamento delle prestazioni, una FPGA offre costantemente la possibilità di scegliere la strada ottimale, in termini di efficienza di elaborazione, tra la realizzazione in hardware e quella in software di ogni funzione, eliminando tutti gli eventuali colli di bottiglia. Per esempio nel nostro caso è stato scelto un “tick” base di 10 millisecondi e, al massimo, in questo intervallo di tempo tutta la ricca dotazione di sensori deve essere stata letta e tutti gli attuattori devono essere aggiornati con i valori coerenti alle condizioni di controllo decise dal programma. Lo stesso hardware deve essere riadattabile alle specifiche condizioni sperimentali che si vogliono affrontare di anno in anno in eventuali corsi didattici differenti, recuperando interamente le parti più costose per riutilizzarle in differenti esperienze.