Comment savoir si un microprocesseur est suffisamment puissant


9

Tout le monde sait qu'il est facile de développer une preuve de concept pour un appareil embarqué sur un rasbperry pi ou même un PC, bien qu'il s'agisse de choisir un microprocesseur pour votre produit, il est difficile d'être sûr que votre choix permettra à votre concept de fonctionner de manière optimale.

J'ai actuellement un projet de streaming multimédia qui fonctionne avec succès sur le Raspberry Pi, bien que le Pi soit beaucoup trop gros et encombrant pour qu'il soit approprié en tant qu'appareil final. Il est également indiqué que le périphérique final est personnalisé. J'ai du mal à trouver confiance dans les processeurs que je peux utiliser.

Quel est le bon processus pour savoir si un processeur est suffisamment puissant pour exécuter mon application?

Fondamentalement, mes exigences sont les suivantes:

  • Hôte USB ou pile TCP / IP intégrée pour le fonctionnement WiFi
  • Protocole multimédia I2S / PCM
  • I2C pour la configuration périphérique

Trouver des puces avec ces propriétés est très très simple. Honnêtement, cela ne pourrait pas être plus simple. Le problème est de savoir si la puce est suffisamment rapide, au niveau du traitement et du fonctionnement.

J'ai beaucoup regardé le LPC4337 et je pense qu'il conviendrait bien que l'environnement de développement me pose pas mal de problèmes, c'est pourquoi je continue de regarder autour de moi, ce qui m'a conduit au CC3200 de Texas Instruments , bien que ce contrôleur ne fonctionne qu'à 80 MHz et je ne sais pas si ce sera assez fort pour le streaming multimédia en temps réel.

Quelles sont les étapes pour s'assurer qu'un processeur est suffisamment rapide pour mon application? Comme comment savoir si un processeur à 80 MHz sera suffisant ou ai-je besoin de quelque chose de l'ordre de 204 MHz ou même plus?


1
Je pense que vous devrez également fournir des exigences d'alimentation.
kolosy

Cela ne répond pas à votre question, mais vous pourriez envisager de regarder la nouvelle famille de microcontrôleurs PIC32MZ , qui ont deux fois plus de Flash (2 Mo) et trois fois plus de RAM (512 Ko), ainsi qu'un hôte USB 2.0, I²S et cinq I²C modules pour le même prix que le LPC4337. L'IDE (MPLAB X) et le compilateur sont libres d'essayer, mais après une période d'essai, vous devez payer pour le compilateur optimisé si vous en voulez un (le compilateur GCC non optimisé reste gratuit). Microchip dispose de bibliothèques libres de droits pour les piles USB et TCP / IP.
tcrosley

2
Je pense que certains peuvent manquer le point de la question. Je ne cherche pas une recommandation de pièces. Il est simple de s'assurer qu'il y a suffisamment d'espace sur la puce ou que les périphériques appropriés sont là. Je suis plus à la recherche de paramètres et d'étapes de traitement comme guide pour m'assurer de sélectionner un processeur suffisamment puissant. Comme dans sa vitesse.
Funkyguy

Si vous ne pouvez pas dire ce dont vous avez besoin dans les spécifications, pouvez-vous simplement commander des échantillons et un prototype?
Roger Rowland

@RogerRowland Je pourrais bien que ce soit un processus très long. Certes, il existe un moyen de trouver les spécifications minimales pour un programme
Funkyguy

Réponses:


5

Cela dépend de la confiance que vous devez avoir. Je travaille dans l'industrie spatiale et cela se fait généralement via ce que nous appelons les "budgets CPU, RAM, ROM". Un budget, qu'il s'agisse de la masse énergétique ou de toute autre chose, décompose votre processus en éléments gérables que vous pouvez quantifier et résumer tous pour obtenir la demande globale. Vous prenez alors un facteur de sécurité qui dépend de la maturité de votre projet, diminuant avec le temps pour tenir compte de la croissance de la demande. Au début, il s'appuie fortement sur l'expérience, puis s'affine au fil du temps à mesure que les technologies sont sélectionnées.

  • La ROM est relativement facile. Vous savez combien une pile / bibliothèque / pilote prend approximativement en mémoire ROM: soit donnée par l'auteur, soit vous pouvez la compiler sans la télécharger. Ce chiffre peut changer beaucoup à chaque fois que vous changez votre code à cause des optimisations du compilateur.
  • La RAM est beaucoup plus délicate. Certains outils dans des environnements de développement intégrés spécialisés vous donnent des estimations d'exécution , et je peux voir comment cela pourrait être fait, mais je ne connais aucun outil générique - disons, fourni par GCC (quelqu'un sait le contraire?). Malheureusement, il semble que cela soit dû au comptage des éléments les plus grands ou les plus alloués de votre code (en tenant compte de la durée de vie des variables).
  • Le processeur est plus complexe en ce que, selon l'architecture (CISC ou RISC), les MIPS (millions d'instructions par seconde, proportionnelles à la fréquence d'horloge du processeur) peuvent ou non être représentatifs. Parce que si vous avez le code à portée de main, vous pouvez décomposer la section la plus critique en instructions et calculer le MIPS requis à partir de l'exigence de temps. Toute interruption non désactivée DEVRAIT être considérée comme déclenchée à ce stade - la loi de Murphy et tout cela.

Ce qui précède est extrêmement difficile à déterminer avec précision quand les planificateurs démarrent, dès que vous avez des threads (sauf si les threads sont alloués manuellement aux cœurs) et les systèmes d'exploitation. Il devrait être gérable pour de simples codes de microcontrôleur, mais cela en vaut-il la peine pour votre application?

Ce n'est que ma participation: même si je conçois des systèmes intégrés, je n'ai pas été responsable de ces budgets particuliers (qui sont des intrants pour moi), et je suis vraiment très intéressé de connaître les témoignages d'experts à ce sujet.

Addendum: Avec les systèmes en temps réel, il est généralement plus facile d'évaluer l'adéquation du système à la tâche via le temps d'échantillonnage maximal qui dépend de la latence / des retards dans la transmission des informations tout au long du flux de travail, et le temps maximal pris par chacun échantillon de tâche.


avrdudepeut fournir des estimations de la quantité de RAM consommée par les variables globales, mais vous devez l'exécuter avec l'option d'exécution à sec, car il s'agit fondamentalement d'un outil de téléchargement.
felixphew

1
La partie la plus difficile à estimer IMO est l'utilisation de la pile et du tas. Notre système embarqué actuel (OS propriétaire), fonctionnant sur un PIC32, a généralement plus de 25 tâches en cours d'exécution, beaucoup d'entre elles nécessitant un couple K de tas ou plus lorsqu'elles sont actives. Vous en avez plusieurs, plus une utilisation intensive de la pile et vous serez bientôt sur le point de manquer de RAM. Je viens d'écrire une routine récursive il y a environ une semaine et j'ai dû faire très attention à l'utilisation de la pile de variables locales (pas de tableaux, etc.)
tcrosley

Intéressant, merci. Estimez-vous la quantité de RAM allouée par votre code (analyse de code ou outil particulier), ou la mesurez-vous à l'exécution? Il me semble que MIPS est un peu plus difficile à estimer car il ne peut pas être estimé à partir de l'analyse du code sans le décomposer en instructions, contrairement à l'utilisation de la RAM (possible, pas facile). Les threads rendent la tâche incroyablement plus difficile, mais il semble que l'analyse du processeur nécessite encore plus d'étapes - c'est tout simplement moins un problème en général. Qu'est-ce que tu penses?
Monsieur Mystère

2

Je vais simplifier votre question en: "Comment savoir si un microprocesseur est assez rapide "?
Vous devez identifier le processus / la procédure qui nécessite le temps d'exécution le plus rapide. Si votre processeur peut exécuter les instructions requises dans le délai imparti, ou moins, il est assez rapide.
Regardons un exemple: Votre exigence la plus rapide est de traiter une coupure de courant ; cela nécessite 10 000 instructions à exécuter en 10 millisecondes. Vous aurez besoin d'un CPU avec au moins 1 MIP. Pour convertir cela en "MHz", vous devez connaître le nombre de cycles d'horloge par instruction (cci). Supposons qu'il soit de 10 cci, votre processeur devrait fonctionner à 10 MHz, ou plus rapidement.


0

Si vous cherchez à réduire le coût de la nomenclature, les fabricants de Shenzhen ont parfois des offres surprenantes. Un exemple: Allwinner A10 a plus de puissance de calcul et d'options de connexion que Raspberry Pi mais sera probablement moins cher s'il est utilisé dans votre conception. Si vous recherchez le même coût que le Pi, l'Allwinner A31 est 6-8 fois plus puissant.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.