Domanda:
Gli FPGA sono potenti quanto il numero di porte che hanno?
Thomas O
2010-10-30 16:45:42 UTC
view on stackexchange narkive permalink

Diciamo che ho un FPGA da 1 milione di gate. Ho trovato alcuni processori su OpenCores che richiedono solo 50k gate. Quindi sarebbe possibile realizzare, diciamo, un processore a 8 core con un simile FPGA? O ci sono limiti agli FPGA quando si tratta di implementare cose massicciamente parallele?

Mi dispiace se suona nuovo, ma sono un principiante agli FPGA.

Sei risposte:
Saar Drimer
2011-01-14 18:52:45 UTC
view on stackexchange narkive permalink

Fondamentalmente stai facendo due domande:

- "Gli FPGA sono potenti quanto il numero di gate che hanno?"

In realtà direi che la risposta è "no". La dimensione ti dice quanto sono "grandi", ma non quanto sono "potenti", perché:

  1. "potenti" è molto soggettivo alla tua applicazione finale.
  2. "potente" è tipicamente più associato al nodo tecnologico che alla dimensione del dado (un piccolo dispositivo della generazione attuale può avere le stesse dimensioni di uno di una generazione precedente - sono ugualmente "potenti"?)
  3. ol >

    - Parafrasando: "Posso dividere il numero di" porte "richieste per il numero di" porte "totali e ottenere il numero di core che potrei inserire nel dispositivo?"

    La risposta anche a questo è "no". Questo perché gli FPGA hanno un instradamento limitato, il che significa che:

    1. Anche se potrebbero esserci abbastanza risorse logiche sul chip, il software non sarà in grado di instradare così tanti core, soprattutto se ci sono sovraccarico di connettività.
    2. Il design, nel complesso, è probabile che non soddisfi le prestazioni di temporizzazione del singolo core.

    Un altro problema è come gestire I / O - ci sarà abbastanza larghezza di banda e numero di I / O per fornire / leggere dati da quella quantità di core?

    (BTW, stiamo cercando di avviare un sito SE dedicato agli FPGA ... considera di supportarlo ... http://area51.stackexchange.com/proposals/20632/programmable-logic-and-fpga-design?referrer=YmxhQ2OJUo-FAaI1gMp5oQ2)

mikeselectricstuff
2010-10-30 17:10:22 UTC
view on stackexchange narkive permalink

Sì in linea di principio. Anche se vuoi che parlino tra loro, potrebbe usare molta più logica per l'arbitrato, la commutazione del bus ecc. E quando si eseguono bus attorno all'FPGA, molte porte e capacità di connessione potrebbero essere utilizzate per il routing.

Yann Vernier
2010-10-31 02:10:06 UTC
view on stackexchange narkive permalink

Scoprirai che i conteggi dei gate sono a malapena stime, piuttosto che semplici fatti sugli FPGA. Guardando più da vicino, i conteggi dei gate pubblicizzati includeranno cose come l'utilizzo di porzioni di RAM a blocchi per la logica, e la logica che sintetizzi non sarà ridotta a un singolo tipo di gate standard come se stessi costruendo con nient'altro che porte NAND a 2 ingressi, poiché i blocchi logici sono un po 'più complessi, in genere presentano LUT con 4 o più ingressi per ogni registro.

Quindi la vera domanda è quanto efficientemente il software di sintesi possa mappare il tuo progetto specifico al tuo chip specifico. Probabilmente puoi realizzare facilmente un processore a 8 core, se i core e, cosa altrettanto importante, le loro interconnessioni, si adattano abbastanza bene al chip. È del tutto possibile che un progetto fallisca per mancanza di instradamento del segnale piuttosto che per mancanza di logica.

ajs410
2010-11-02 00:46:17 UTC
view on stackexchange narkive permalink

Oltre alle periferiche on-die (che possono fare una grande differenza in termini di "potenza" con cose come Block RAM, moltiplicatori incorporati, ecc.) e velocità di clock / "chiusura temporale", un altro fattore limitante degli FPGA è abbastanza spesso il conteggio dei pin.

Certo, puoi mettere 8 core in un FPGA, ma poi devi far sì che quegli 8 core parlino con il mondo esterno. A peggiorare le cose, una volta superate le poche centinaia di pin, è necessario utilizzare un pacchetto BGA, per il quale è molto più difficile progettare un PCB.

davidcary
2011-01-16 02:22:52 UTC
view on stackexchange narkive permalink

Sì, gli FPGA sono eccellenti per l'implementazione di cose massicciamente parallele. Molte persone hanno messo 8 o più CPU su un FPGA - non è semplicemente "in linea di principio".

Controlla l'immagine della planimetria nell'articolo "Progettazione FPGA di un sistema a 24 processori su chip con rete su chip" di Zhoukun WANG e Omar HAMMAMI.

Questa planimetria rende abbastanza ovvio che quel particolare FPGA è praticamente pieno I 24 core della CPU - ognuno una CPU MicroBlaze a 32 bit con 32 KByte totali di istruzioni locali e memoria dati - riempiono circa la metà dell'FPGA (attorno al perimetro). L'instradamento tra i core della CPU e i 4 core indipendenti bus esterni praticamente riempiono tutto il resto dell'FPGA (i bus esterni sono larghi 64 bit di dati ciascuno più alcuni segnali di controllo, ognuno dei quali porta a un modulo di memoria DDR2 indipendente).

(Questo particolare IC include anche due hard core CPU PowerPC 405 oltre al tessuto FPGA: Zhoukun e Omar apparentemente non si sono preoccupati di usarli).

Come altri er persone qui hanno sottolineato, dividere "numero di porte in un FPGA" per "numero di porte in una CPU" è eccessivamente ottimistico. In questo caso, 142.128 LUT su un FPGA Xilinx Virtex-4 FX140 diviso per circa 1000 LUT richieste per un MicroBlaze di dimensioni minime fornisce (ottimisticamente) 142 CPU per chip. Quindi sei deluso dal fatto che apparentemente "solo" 24 CPU si adattano a quel fabric FPGA (senza contare i due hard core PowerPC 405 al di fuori del fabric FPGA su quell'IC)?

Un FPGA da 1 milione di gate diviso per una CPU da 50k gate fornisce (ottimisticamente) 20 CPU per chip. Penso che sarai fortunato a spremere anche 4 CPU su quell'FPGA.

"È incredibile quello che si può spremere su queste parti se si progetta con attenzione l'architettura della macchina per sfruttare le risorse FPGA. Al contrario, in un recente EE Times c'era un articolo molto interessante di un collega di VAutomation che faceva 6502 virtuali in VHDL, sintetizzandoli poi in architetture FPGA arbitrarie. Sebbene sia stato utilizzato solo il design 6502 circa 4000 "porte ASIC" non si adattavano perfettamente a un XC4010, un cosiddetto FPGA "10.000 gate". Il fatto che un RISC a doppia emissione a 32 bit dovrebbe adattarsi, e un 6502 a 4 MHz no, afferma molto sulla sintesi VHDL rispetto al posizionamento manuale, sulle architetture legacy rispetto a quelle personalizzate, e forse anche qualcosa su CISC contro RISC. .. "- Jan Gray

L'articolo Wikipedia:" soft processor " contiene ulteriori informazioni su come impacchettare più CPU su una singola FPGA.

Strano che un 6502 usasse 4000 "porte ASIC" quando la parte reale aveva circa 5000 transistor.
Connor Wolf
2010-10-31 12:03:15 UTC
view on stackexchange narkive permalink

Sì, più o meno.

Oltre alle differenze nelle periferiche on-die (RAM, buffer di I / O, ecc ...), devi anche considerare il fatto che diversi FPGA sono classificati per diversi velocità di clock.

Potresti avere due FPGA da 500k gate, ma se uno ha un clock massimo di 50 MHz e l'altro arriva fino a 1 GHz, uno è chiaramente più potente dell'altro.

Ora, generalmente non è così semplice nel mondo reale, poiché gli FPGA sono più limitati dai ritardi di propagazione rispetto alla pura velocità di clock, ma dispositivi diversi hanno unità logiche più veloci o più lente, che cambiano la complessità della logica senza dover per utilizzare il buffering sincrono o incontrare problemi di metastabilità.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...