Come scoprire se un microprocessore è abbastanza potente


9

Tutti sanno che è facile sviluppare una prova di concetto per un dispositivo incorporato su un rasbperry pi o persino su un PC, anche se quando si tratta di scegliere un microprocessore per il tuo prodotto, è difficile essere sicuri che la tua scelta consentirà al tuo concetto di funzionare in modo ottimale.

Al momento ho un progetto di streaming multimediale che funziona con successo su Raspberry Pi, anche se Pi è troppo grosso e voluminoso per essere corretto come dispositivo finale. Inoltre si afferma che il dispositivo finale è personalizzato. Sto facendo fatica a trovare fiducia nei processori che posso usare.

Qual è un buon processo per scoprire se un processore è abbastanza potente per eseguire la mia applicazione?

Fondamentalmente i miei requisiti sono:

  • Host USB o stack TCP / IP incorporato per funzionamento WiFi
  • Protocollo multimediale I2S / PCM
  • I2C per configurazione periferica

Trovare chip con queste proprietà è molto, molto semplicemente. Onestamente non potrebbe essere più semplice. Il problema è riuscire a capire se il chip è abbastanza veloce, elaborativo e operativo.

Ho guardato un po 'l'LPC4337 e penso che sarebbe adatto anche se l'ambiente di sviluppo mi sta dando un bel po' di problemi, per questo motivo mi sto ancora guardando in giro, il che mi ha portato al CC3200 di Texas Instruments , anche se quel controller funziona solo a 80 MHz e non sono sicuro che sarà abbastanza forte per lo streaming multimediale in tempo reale.

Quali sono alcuni passaggi per assicurarsi che un processore sia abbastanza veloce per la mia applicazione? Come faccio a sapere se un processore da 80 MHz sarà abbastanza buono o ho bisogno di qualcosa nell'ordine di 204 MHz o anche superiore?


1
Penso che dovrai fornire anche i requisiti di alimentazione.
Kolosy,

Questo non risponde alla tua domanda, ma potresti considerare la nuova famiglia di microcontrollori PIC32MZ , che ha il doppio di Flash (2 MB) e tre volte più RAM (512 KB), insieme a host USB 2.0, I²S e cinque I²C moduli allo stesso prezzo dell'LPC4337. L'IDE (MPLAB X) e il compilatore sono liberi di provare, ma dopo un periodo di prova devi pagare per il compilatore ottimizzato se ne vuoi uno (il compilatore GCC non ottimizzato rimane libero). Microchip ha librerie esenti da royalty per gli stack USB e TCP / IP.
Tcrosley,

2
Penso che ad alcuni potrebbe mancare il punto della domanda. Non sto cercando una raccomandazione di parti. È semplice assicurarsi che ci sia spazio sufficiente sul chip o che siano presenti le periferiche appropriate. Sono più alla ricerca di parametri e passaggi di elaborazione come guida per assicurarmi di selezionare un processore abbastanza potente. Come nella sua velocità.
Funkyguy,

Se non riesci a capire cosa ti serve dalle specifiche, puoi semplicemente ordinare campioni e prototipo?
Roger Rowland,

@RogerRowland Potrei, anche se è un processo molto lungo. Sicuramente c'è un modo per trovare le specifiche minime per un programma
Funkyguy,

Risposte:


5

Dipende da quanto devi essere fiducioso. Lavoro nel settore spaziale e questo è generalmente ottenuto attraverso ciò che chiamiamo "budget CPU, RAM, ROM". Un budget, sia che si tratti di un costo di massa di massa o di qualsiasi altra cosa, sta suddividendo il processo in articoli gestibili che è possibile quantificare e sommare tutti per ottenere la domanda complessiva. Quindi prendi un fattore di sicurezza che dipende dalla maturità del tuo progetto, diminuendo con il tempo per tenere conto della crescita della domanda. All'inizio si basa fortemente sull'esperienza e poi viene perfezionato nel tempo man mano che le tecnologie vengono selezionate.

  • La ROM è relativamente semplice. Sai quanto uno stack / libreria / driver occupa all'incirca la memoria ROM: o dato dall'autore, oppure puoi compilarlo senza caricarlo. Quella cifra può cambiare molto ogni volta che cambi il codice a causa delle ottimizzazioni del compilatore.
  • La RAM è molto più complicata. Alcuni strumenti in ambienti di sviluppo integrati specializzati offrono stime di runtime e posso vedere come farlo, ma non sono a conoscenza di alcun strumento generico - diciamo, fornito da GCC (qualcuno lo sa altrimenti?). Purtroppo suona come se fosse il conteggio degli elementi più grandi o più allocati del tuo codice (tenendo conto della durata delle variabili).
  • La CPU è più complessa in quanto, a seconda dell'architettura (CISC o RISC), i MIPS (milioni di istruzioni al secondo, proporzionali alla frequenza di clock della CPU) potrebbero o non potrebbero essere rappresentativi. Perché se hai il codice a portata di mano, puoi suddividere la sezione più critica in istruzioni e calcolare i MIPS richiesti dal tempo richiesto. Qualsiasi interruzione non disabile DOVREBBE essere considerata innescata a quel punto - la legge di Murphy e tutto il resto.

Quanto sopra è estremamente difficile da determinare con precisione quando gli scheduler entrano in funzione, non appena si hanno thread (a meno che i thread non siano allocati manualmente ai core) e i sistemi operativi. Dovrebbe essere gestibile per semplici codici di microcontrollore, ma ne vale la pena per la tua applicazione?

Questa è solo la mia partecipazione: anche se progetto sistemi integrati, non sono stato responsabile di quei budget particolari (che sono input per me), e in realtà sono molto interessato a conoscere le storie degli esperti al riguardo.

Addendum: con i sistemi in tempo reale, di solito è più semplice valutare l'adeguatezza del sistema all'attività attraverso il tempo di campionamento massimo che dipende dalla latenza / ritardi nella trasmissione delle informazioni attraverso il flusso di lavoro e dal tempo massimo impiegato da ciascuno campione di attività.


avrdudepuò fornire stime della quantità di RAM utilizzata dalle variabili globali, ma è necessario eseguirla con l'opzione di esecuzione a secco poiché è fondamentalmente uno strumento di caricamento.
Felixphew,

1
La parte più difficile da stimare dell'IMO è l'utilizzo dello stack e dell'heap. Il nostro attuale sistema embedded (sistema operativo proprietario), in esecuzione su un PIC32, in genere ha oltre 25 attività in esecuzione, molte delle quali necessitano di un paio di K di heap o più quando sono attive. Ne hai molti di quelli in corso, oltre a un uso pesante dello stack e puoi presto essere a corto di RAM. Ho appena scritto una routine ricorsiva circa una settimana fa e ho dovuto fare molta attenzione all'utilizzo dello stack variabile locale (no array ecc.)
tcrosley,

Interessante, grazie. Stimate la quantità di RAM allocata dal vostro codice (analisi del codice o strumento particolare) o la misurate in fase di esecuzione? Mi sembra che MIPS sia un po 'più difficile da stimare perché non può essere stimato dall'analisi del codice senza scomporlo in istruzioni, a differenza dell'utilizzo della RAM (possibile, non facile). I thread rendono l'attività incredibilmente più difficile, ma sembra che l'analisi della CPU richieda ancora più passaggi - è semplicemente un problema in generale. Cosa ne pensi?
Mister Mystère,

2

Ho intenzione di semplificare la tua domanda a "Come scoprire se un microprocessore è abbastanza veloce "?
È necessario identificare il processo / procedura che richiede il tempo di esecuzione più rapido. Se il tuo processore è in grado di eseguire le istruzioni richieste in un determinato momento o meno, è abbastanza veloce.
Vediamo un esempio: il requisito più rapido è elaborare una perdita di interruzione di corrente ; ciò richiede l'esecuzione di 10.000 istruzioni in 10 millisecondi. Avrai bisogno di una CPU con almeno 1 MIP. Per convertirlo in "MHz", è necessario conoscere il numero di cicli di clock per istruzione (cci). Supponiamo che sia 10 cci, la tua CPU dovrebbe funzionare a 10 MHz o più veloce.


0

Se stai cercando di ridurre il costo della distinta base, a volte quei produttori di Shenzhen hanno delle offerte sorprendenti. Un esempio: Allwinner A10 ha più potenza computazionale e opzioni di connessione rispetto a Raspberry Pi, ma probabilmente sarà più economico se utilizzato nella progettazione. Se stai osservando lo stesso costo del Pi, l'Allwinner A31s è 6-8 volte più potente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.