Comment calculer MIPS pour un algorithme pour processeur ARM
J'ai été invité récemment à produit le MIPS (millions d'instructions par seconde) pour un algorithme que nous avons développé. L'algorithme est exposée par un ensemble de fonctions de style C. Nous avons exercer le code sur un Dell Axim de comparer les performances en vertu d'entrée différentes.
Cette question est venue de notre fournisseur de matériel, mais je suis surtout un HL développeur de logiciel, donc je ne suis pas sûr de la façon de répondre à la demande. Peut-être que quelqu'un ayant les mêmes HW/SW arrière-plan peut aider...
- Depuis notre algorithme n'est pas en temps réel, je ne pense pas que nous avons besoin de les quantifier que MIPS. Est-il possible de simplement d'indiquer le nombre total d'instructions de montage?
- Si 1 est vrai, comment faites-vous cela (c'est à dire. comment mesurer le nombre d'instructions de montage), soit en général ou spécifiquement pour les BRAS/XScale?
- Peut 2 être effectuée sur un WM appareil ou via l'Émulateur de Périphérique fourni dans VS2005?
- Pouvez 3 être automatisé?
Merci beaucoup pour votre aide.
Charles
Merci à tous pour votre aide. Je pense que S. Lott a frappé le clou. Et comme suite, j'ai maintenant plus de questions.
5 Toute suggestion sur la façon d'aller sur la mesure de MIPS? J'ai entendu certains suggèrent l'exécution de notre algorithme et de le comparer à Dhrystone/Meule de référence pour calculer le SIG.
6, étant donné que l'algorithme n'a pas besoin d'être exécuté en temps réel, est MIPS vraiment une mesure utile? (eg. factorielle(N)) Quels sont les autres moyens de la quantité des exigences de traitement? (J'ai déjà mesuré les performances d'exécution, mais ce n'était pas une réponse satisfaisante.)
7 Enfin, je suppose MIPS est une estimation grossière et serait dep. sur le compilateur, l'optimisation des paramètres, etc?
C'est clairement non.
Il est MIPs pas MIPS. Vérifier l'ingénierie des pubs.
Le mips la balise est pour l'architecture MIPS, veuillez lire la description avant d'ajouter la balise. Si tu veux dire d'un million d'opérations par seconde alors s'il vous plaît supprimer et ajouter la bonne balise
OriginalL'auteur Charles | 2009-03-24
Vous devez vous connecter pour publier un commentaire.
Je parie que votre fournisseur de matériel demande combien de MIPS vous avez besoin.
Comme dans "avez-vous besoin d'un maximum de 1000 MIPS processeur ou 2 000 processeur MIPS?"
Qui se traduit par la gestion "Combien de MIPS?"
Offres de matériel MIPS. Le logiciel consomme MIPS.
Vous avez deux degrés de liberté.
Le processeur inhérente MIPS offre.
Le nombre de secondes pendant lesquelles vous ne consommez que de nombreux MIPS.
Si le processeur n'a pas assez de MIPS, votre algorithme va être "lent".
si le processeur a assez de MIPS, votre algorithme sera "rapide".
J'ai mis "rapide" et "lent" entre guillemets parce que vous avez besoin d'avoir une exigence de performance pour déterminer "assez rapide pour répondre à l'exigence de rendement" ou "trop lente pour répondre à l'exigence de rendement."
Sur 2 000 MIPS processeur, vous pouvez prendre un acceptable 2 secondes. Mais sur 1 000 processeur MIPS cela explose de façon inacceptable les 4 secondes.
Combien de MIPS avez-vous besoin?
Obtenir le officiel MIPS pour votre processeur. Voir http://en.wikipedia.org/wiki/Instructions_per_second
Exécuter votre algorithme sur des données.
Mesurer l'exact moment de l'exécution. La moyenne d'un tas d'échantillons pour réduire l'incertitude.
Rapport. 3 secondes sur un 750 processeur MIPS est -- bien -- 3 secondes à 750 MIPS. MIPS est un taux. Le temps est le temps. La Distance est le produit de taux * de temps. 3 secondes à 750 MIPS est de 750*3 millions d'instructions.
Souviens de Taux (en d'Instructions par seconde) * Temps (en secondes) vous donne des Instructions.
Ne dis pas que c'est 3*750 MIPS. Il n'est pas; il est de 2 250 Millions d'Instructions.
OriginalL'auteur S.Lott
Quelques remarques:
MIPS est souvent utilisé comme un général de la "capacité" mesure pour les transformateurs, en particulier dans le doux temps réel/embarqué champ où vous voulez vous assurer de ne pas surcharger un processeur avec le travail. Notez que c'EST d'instructions par seconde, le temps est très important!
MIPS utilisées dans ce mode est assez peu scientifique.
MIPS utilisées dans ce mode est encore souvent la meilleure approximation, il est pour le dimensionnement d'un système et la détermination de la vitesse du processeur. Il pourrait bien être une erreur de 25%, mais jamais l'esprit...
Comptage MIPS nécessite un processeur qui est proche de ce que vous êtes en utilisant. Le droit à l'instruction est évidemment crucial, pour capturer l'instruction elle-même flux de la réalité du compilateur utilisé.
Vous ne pouvez en aucune façon d'approcher cette sur un PC. Vous devez mettre en évidence l'un des quelques outils pour faire de ce droit:
Utiliser une instruction set simulator pour la cible archicture comme Qemu, BRAS outils propres, Synopsys, CoWare, Virtutech, ou Vaste. Ceux-ci sont rapides mais peut compter instructions assez bien, et à soutenir le droit du jeu d'instructions. Interdiction d'utilisation extensive de cher des instructions comme division d'entier (et n'hésitez pas à virgule flottante), ces chiffres ont tendance à être utilement à proximité.
Trouver une horloge de cycle précis simulateur pour votre processeur cible (ou quelque chose d'approchant), qui donnera assez bonne estimation de pipeline effets etc. Une fois de plus, l'obtenir à partir du BRAS ou de Carbone SoCDesigner.
Obtenir une carte de développement pour le processeur de la famille que vous visez, ou un BRAS proche de la conception, de profil et de la demande. Vous n'utilisez pas un ARM9 à profil pour un ARM11, mais un ARM11 pourrait être une bonne approximation pour un ARM Cortex-A8/A9 par exemple.
OriginalL'auteur jakobengblom2
MIPS est généralement utilisé pour mesurer la capacité d'un processeur.
Algorithmes prennent généralement soit:
Décrire un algorithme en termes d'instructions par seconde sembler étrange, une mesure, mais bien sûr, je ne sais pas ce que votre algorithme.
À venir avec une mesure intéressante, je voudrais vous suggérer de mettre en place un test qui permet de mesurer le temps moyen pour votre algorithme pour terminer. Nombre d'instructions de montage serait une mesure raisonnable, mais il peut être difficile de les compter! Votre meilleur pari est quelque chose comme ceci (pseudo-code):
Hmm, juste assez. Gotta love vague de demandes de la direction!
OriginalL'auteur e.James
MIPS sont une mesure de la vitesse du CPU, pas de l'algorithme de la performance. Je ne peux que supposer la quelque part le long de la ligne, quelqu'un est un peu confus. Quels sont-ils à essayer de trouver? Le seul scénario le plus probable, je pense qu'ils essaient pour vous aider à déterminer la vitesse d'un processeur dont ils ont besoin de vous donner d'exécuter votre programme de manière satisfaisante.
Puisque vous pouvez mesurer un algorithme en nombre d'instructions (qui est sans aucun doute va dépendre de l'entrée de données, donc c'est non-trivial), vous avez alors besoin d'une mesure de temps afin d'obtenir MIPS -- par exemple, dire "j'ai besoin de l'invoquer 1000 fois par seconde". Si votre algorithme est de 1000 instructions pour ce cas particulier, vous vous retrouverez avec:
Je pense toujours que c'est vraiment une drôle de façon d'essayer de faire des choses, de sorte que vous pouvez demander des éclaircissements. Pour vos questions spécifiques, je vais laisser ça à quelqu'un de plus familiarisé avec Visual Studio.
OriginalL'auteur rmeador
Aussi se rappeler que les différents compilateurs et les options du compilateur faire une ÉNORME différence. La même source code peut fonctionner à différentes vitesses. Donc au lieu d'acheter les 2mips processeur que vous pouvez être en mesure d'utiliser le 1/2mips processeur et l'utilisation d'une option de compilation. Ou de dépenser de l'argent sur un meilleur compilateur et de l'utiliser le moins cher du processeur.
Benchmarking est imparfait, au mieux. Comme un hobby que j'ai utilisé pour compiler le même dhrystone (et pierre) code sur différents compilateurs de divers fournisseurs pour le même matériel et les chiffres étaient tous sur la place, les ordres de grandeur. Même le code source même processeur, dhrystone na pas dire une chose, pas utile comme base de référence. Ce qui compte dans l'analyse comparative est à quelle vitesse est-ce que VOTRE algorithme exécuté, il se doit d'être aussi rapide ou plus rapide qu'il en a besoin. Selon la façon dont près de la ligne d'arrivée, vous permettent beaucoup de pâtée. Tôt sur probablement voulez être courir 5 ou 10 ou 100 fois plus rapide que vous avez besoin de sorte que, à la fin du projet, vous êtes au moins un peu plus rapide que vous avez besoin pour être.
Je suis d'accord avec ce que je pense, S. Lott est en train de dire, c'est toutes les ventes et le marketing et la gestion de parler. D'être celui que la direction a mis entre le marteau et l'enclume puis ce que vous devez faire est d'obtenir à acheter le processeur le plus rapide et le meilleur des outils qu'ils sont prêts à dépenser basé sur les couleurs des diagrammes et des graphiques que vous allez générer de l'air mince comme justification. Si près de la fin de la route, il ne marche pas tout à fait obtenir des résultats, alors vous pourriez revenir à stackoverflow, mais en même temps, la gestion va être obligé d'acheter un autre ensemble d'outils à presque n'importe quel prix ou de swap de processeurs et respin le conseil d'administration. Par ensuite, vous devez savoir comment près de la cible que vous êtes, nous avons besoin de 1.0 et nous sommes à 1,25, si nous achetons le processeur est deux fois plus rapide que celui que nous avons acheté nous devrions le faire.
Si oui ou non vous pouvez automatiser ces sortes de choses ou de simulation dépend des outils, parfois oui, parfois non. Je ne suis pas familier avec les outils dont vous parlez, donc je ne peux pas parler directement.
OriginalL'auteur old_timer
Cette réponse n'est pas destiné à répondre à la question directement, mais de fournir un contexte supplémentaire autour de pourquoi cette question, on pose.
MIPS pour un algorithme n'est pertinente que pour les algorithmes qui en ont besoin pour répondre à un événement dans le temps requis.
Prenons l'exemple d'un contrôleur conçu pour détecter la vitesse du vent et de déplacer l'actionneur dans une seconde lorsque la vitesse du vent dépasse 25 km /heure. Disons qu'il prend 1000 instructions pour calculer et comparer la vitesse du vent contre le seuil. Le MIPS exigence de cet algorithme est de 1 Kilo d'Instructions Par Seconde (KIPs). Si le contrôleur est basé sur 1 processeur MIPS, nous pouvons aisément dire qu'il n'y a plus de jus dans le contrôleur afin d'ajouter d'autres fonctions.
Ce que d'autres fonctions peuvent être ajoutées sur le contrôleur? Cela dépend de la MIPS de la fonction/l'algorithme être ajouté. Si il y a une autre fonction qui a besoin de 100 000 instructions à être effectuée en moins d'une seconde (c'est à dire 100 KIPs), nous pouvons encore accueillir cette nouvelle fonction et avoir encore un peu de place pour d'autres fonctions à ajouter.
OriginalL'auteur Saravanakumar Tiruthani
Pour une première estimation d'un indice de référence sur le PC peut être utile.
Toutefois, avant de vous engager à un dispositif spécifique, et la fréquence de l'horloge, vous devriez obtenir un développeur (ou de certains PDA?) pour le BRAS de l'architecture cible et de référence.
Il y a beaucoup de facteurs qui influencent la vitesse sur les machines actuelles (mise en cache, les pipelines, les différents ensembles d'instructions, ...) afin que vos repères sur un PC peut être moyen de sortir de w.r.t. le BRAS.
OriginalL'auteur starblue