Arm e Fpga insieme

PROCESSORI –

I dispositivi Zynq-7000 di Xilinx uniscono nello stesso chip un processore Arm Cortex-A9 MPCore e una notevole quantità di logica programmabile di ultima generazione. La famiglia si rivolge alle applicazioni embedded di fascia alta.

Xilinx ha scelto l'espressione Extensible Processing Platform per indicare una nuova categoria di dispositivi che integra nello stesso chip un microprocessore e un Fpga. La scelta della società di San Jose è caduta su un processore Arm a doppio core, il Cortex-A9 MPCore, e su un tessuto Fpga di ultima generazione, realizzato in tecnologia 28 nanometri. Com'è noto, l'idea di integrare un processore sullo stesso chip dell'Fpga non è nuova; varie soluzioni di questo tipo, comprendenti processori in forma “soft” oppure “hard”, vengono offerte da tempo sia dalla stessa Xilinx sia dal suo principale concorrente. La novità dei nuovi dispositivi - battezzati Zynq-7000 - sta nelle modalità di integrazione: il collegamento tra i due blocchi, infatti, è ottenuto tramite nove interfacce Amba4 Advanced Extensible Interface e numerosi segnali di controllo (ad esempio Dma e interrupt), equivalenti a oltre tremila connessioni che consentono di trasferire grandi quantità di dati ad alta velocità: la banda disponibile è di circa 100 gigabit. L'architettura complessiva del dispositivo, inoltre, assegna al processore un ruolo prioritario (è “processor-centric”, nel linguaggio di Xilinx); in particolare, il processore effettua il “boot” del sistema operativo all'accensione o al reset e successivamente provvede a configurare la parte Fpga secondo necessità. Questa soluzione consente di sviluppare il software per il processore nello stesso modo e con gli stessi strumenti utilizzati normalmente. La parte Fpga viene così posta a completo servizio del processore e può essere utilizzata per aggiungere periferiche o acceleratori, offrendo flessibilità nella ripartizione hardware-software e facilitando lo sviluppo di soluzioni espandibili nel corso del tempo. I quattro chip della famiglia Zynq-7000 si rivolgono in primo luogo alle applicazioni embedded di fascia alta, ad esempio sistemi di videosorveglianza, sistemi di assistenza alla guida, automazione di fabbrica, controllo motori, telecamere professionali, stazioni di telefonia cellulare ecc.

Il processore Arm Cortex-A9 MPCore
Il processore prescelto da Xilinx, Arm Cortex-A9 MPCore, offre di per sé prestazioni elevate: è composto di due Cpu con clock fino a 800 megahertz, ciascuna delle quali corrisponde a un Cortex-A9 dotato di co-processore Neon (un'architettura specializzata nell'elaborazione di audio, video e grafica) e di un'unità a virgola mobile a doppia precisione. Il Cortex-A9 è una macrocella Arm ad alte prestazioni e basso consumo dotata di un sottosistema cache L1 che fornisce complete funzionalità di memoria virtuale. Il processore implementa l'architettura Armv7 ed esegue istruzioni Arm a 32 bit, istruzioni Thumb a 16 e 32 bit e bytecode Java a 8 bit in stato Jazelle. Il sistema di elaborazione comprende inoltre una Snoop Control Unit, un controllore di cache di livello 2, Sram integrata sul chip, timer/contatori, Dma, registri per il controllo di sistema e un sistema Arm CoreSight. Per il debug, il processore comprende un Embedded Trace Buffer, un Instrumentation Trace Macrocell e un modulo Cross Trigger realizzati da Arm. Include inoltre un Axi Monitor e un modulo Fabric Trace realizzati da Xilinx. Il processore Arm - implementato completamente in forma “hardwired” - è infine dotato di numerose periferiche, tra cui controllori di memoria, interfacce Can, Usb, Gigabit Ethernet, SD-Sdio, Uart, convertitori analogico-digitale ecc.

La parte Fpga
La famiglia Zynq comprende quattro dispositivi che condividono lo stesso processore Arm e si differenziano per le dimensioni della parte Fpga, così da favorire lo sviluppo di soluzioni “scalabili” per realizzare versioni diverse dello stesso sistema. Anche la parte Fpga offre prestazioni elevate, poiché - come si è detto - è fabbricata in tecnologia 28 nanometri e quindi condivide tutte le innovazioni introdotte da Xilinx con l'ultima generazione dei propri prodotti. I due dispositivi più piccoli della famiglia, Zynq-7010 e Zynq-7020, sono basati sugli Fpga Xilinx della serie Artix-7 e offrono rispettivamente 430.000 e 1,3 milioni di gate Asic (30K e 85K celle logiche), con prestazioni Dsp di picco pari rispettivamente a 58 Gmac e 158 Gmac. I due dispositivi più grandi, Zynq-7030 e Zynq-7040, sono basati sugli Fpga Xilinx della serie Kintex-7 e offrono rispettivamente 1,9 e 3,5 milioni di gate Asic (125K e 235K celle logiche), con prestazioni DSP di picco pari rispettivamente a 480 e 912 Gmac. Questi ultimi due chip sono inoltre dotati di transceiver che possono operare fino a oltre 10 Gbps. Tutti i dispositivi Zynq comprendono anche un'interfaccia di conversione analogico-digitale composta da due Adc con risoluzione di 12 bit e velocità di campionamento di 1 Msps, oltre a sensori e canali di ingresso analogici.

L'integrazione tra Arm e Fpga
Al di là delle prestazioni offerte dal processore Arm e dalla parte Fpga, l'aspetto più innovativo dei dispositivi Zynq consiste - come si è detto - nelle modalità di integrazione tra i due blocchi. Le interfacce Amba (Advanced Microcontroller Bus Architecture) del tipo Advanced Extensible Interface consentono infatti al processore di caricare nella logica programmabile una singola configurazione, oppure di scegliere dinamicamente tra diverse configurazioni a seconda delle necessità, o ancora di effettuare riconfigurazioni parziali. L'interconnessione tra i due blocchi è pressoché trasparente per l'utilizzatore. Il collegamento tra dispositivi master e dispositivi slave, attraverso l'interfaccia Axi, è gestito assegnando a ogni slave una certa gamma di indirizzi. Più master possono accedere a più slave contemporaneamente e ciascuna interconnessione Axi risolve le contese tramite un meccanismo di arbitraggio a due livelli. Come si vedrà meglio in seguito, le particolari modalità di integrazione tra Arm e Fpga hanno effetti anche sul flusso di sviluppo del software.

La programmazione
La scelta di una soluzione “processor-centric” consente di adottare un approccio di programmazione che Xilinx definisce “software-centric”. Le due parti del software - il programma per il processore e la configurazione dell'Fpga - possono essere sviluppate in parallelo, con la possibilità per ciascun programmatore di continuare a utilizzare gli strumenti e i linguaggi che gli sono più famigliari: generalmente C o C++ per il blocco Arm, Vhdl per la logica programmabile. Gli sviluppatori software potranno quindi usare l'ambiente Eclipse, il Xilinx Platform Studio Software Development Kit, l'Arm Development Studio 5 e la Arm RealView Development Suite, oltre a compilatori, debugger e applicativi realizzati dalle aziende che fanno parte degli “ecosistemi” di Arm e di Xilinx. Vastissima, inoltre, l'offerta di blocchi IP pronti per l'uso. Lo sviluppo parallelo consente una maggiore flessibilità nella ripartizione delle funzioni tra i due blocchi. Lo spostamento di funzioni da un blocco all'altro è facilitato dall'interfaccia Amba, grazie alla quale la gli acceleratori e le periferiche realizzate in logica programmabile appaiono allo sviluppatore software come spazio di memoria indirizzabile.

Pubblica i tuoi commenti