Wie die Berechnung von MIPS für einen Algorithmus für die ARM-Prozessor
Bin ich gebeten worden, vor kurzem produziert die MIPS (Millionen Instruktionen pro Sekunde) für einen Algorithmus, den wir entwickelt haben. Der Algorithmus ausgesetzt ist, durch einen Satz von C-Funktionen. Wir haben die übung, den code auf einem Dell Axim benchmark die Leistungsfähigkeit unter unterschiedlichen input.
Diese Frage kam von unseren hardware-Lieferanten, aber ich bin meist ein HL, software-Entwickler, so bin ich nicht sicher, wie Sie um die Anfrage zu beantworten. Vielleicht hat jemand mit ähnlichen HW - /SW-hintergrund kann helfen...
-
Da unser Algorithmus ist nicht Echtzeit, ich denke nicht, dass wir brauchen, um zu quantifizieren, wie MIPS. Ist es möglich, nennen Sie einfach die Gesamtzahl der Montageanleitung?
-
Wenn 1 wahr ist, wie kann Sie dies tun (ie. wie Messen Sie die Anzahl der Montageanleitung) entweder im Allgemeinen oder speziell für ARM/XScale?
-
Können 2 durchgeführt werden, die auf einem WM-Gerät oder über den Device Emulator in VS2005?
-
Können 3 automatisiert werden?
Vielen Dank für deine Hilfe.
Charles
Vielen Dank für Ihre Hilfe. Ich denke, dass S. Lott trifft den Nagel. Und als follow-up, ich habe jetzt mehr Fragen.
5 Jeder Vorschlag auf, wie man über die Messung von MIPS? Ich habe gehört, man schlage vor, läuft unser Algorithmus und vergleicht diese mit Dhrystone/Whetstone-benchmark zu berechnen MIS.
6 Da der Algorithmus muss nicht in Echtzeit laufen, ist MIPS wirklich eine sinnvolle Maßnahme? (zB. fakultaet(N)), Was sind andere Möglichkeiten, um die Menge der Anforderungen an die Verarbeitung? (Habe ich schon gemessen, die Laufzeit-performance, aber es war keine befriedigende Antwort.)
7 Schließlich, ich nehme an MIPS ist eine grobe Schätzung und würde dep. auf compiler-Optimierung Einstellungen, etc?
- Dies ist eine lange gedreht, aber haben Sie vielleicht möchten, dass Sie konvertieren Sie Ihre Algorithmus auf die MIPS-instruction set statt? en.wikipedia.org/wiki/MIPS_architecture
- Das ist definitiv keine.
- Es ist MIPs nicht MIPS. Überprüfen Sie die engineering-Kneipen.
- mips - tag ist für die MIPS-Architektur, Lesen Sie bitte die Beschreibung vor dem hinzufügen von Tags. Wenn du meinst, Millionen Operationen pro Sekunde, dann entfernen Sie es bitte und fügen Sie den korrekten tag
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Wette, dass Ihr hardware-Hersteller ist zu Fragen, wie viele MIPS, die Sie benötigen.
Als in "brauchen Sie einen 1.000 MIPS Prozessor oder ein 2.000 MIPS Prozessor?"
Denen übersetzt wird, die vom management in "Wie viele MIPS?"
Hardware mit MIPS. Software verbraucht MIPS.
Haben Sie zwei Freiheitsgrade.
Den Prozessor innewohnende MIPS bietet.
Die Anzahl der Sekunden, in denen Sie konsumieren, dass viele MIPS.
Wenn der Prozessor nicht genügend MIPS, Ihre Algorithmus wird "langsam".
wenn der Prozessor hat genug MIPS, Ihre Algorithmus "fast".
Lege ich "schnell" und "langsam" in Anführungszeichen, weil Sie benötigen, um einen performance-Anforderung, um zu bestimmen, "schnell genug, um die performance-Anforderung" oder "zu langsam zu treffen, die die performance-Anforderung."
Auf einer 2.000-MIPS-Prozessor, könnten Sie nehmen eine akzeptable 2 Sekunden. Aber auf einer 1.000 MIPS-Prozessor, dieser explodiert zu einem inakzeptablen 4 Sekunden.
Wie viele MIPS benötigen Sie?
Holen Sie sich die offizielle MIPS für Ihren Prozessor. Sehen http://en.wikipedia.org/wiki/Instructions_per_second
Führen Ihren Algorithmus auf einige Daten.
Messen Sie die exakte Laufzeit. Durchschnitt einer Reihe von Proben, die Unsicherheit verringern.
Bericht. 3 Sekunden auf eine 750-MIPS-Prozessor ist -- gut -- 3 Sekunden bei 750 MIPS. MIPS ist eine rate. Zeit ist Zeit. Distanz ist das Produkt der rate * Zeit. 3 Sekunden bei 750 MIPS ist 750*3 Millionen Anweisungen.
Denken Sie daran Rate (in Instruktionen pro Sekunde) * Zeit (in Sekunden) gibt Ihnen Anweisungen.
Nicht sagen, dass es 3*750 MIPS. Es ist nicht; es ist 2250 Millionen Anweisungen.
Einige Hinweise:
MIPS wird oft als eine Allgemeine "Kapazität" Maßnahme für Prozessoren, insbesondere in der soft-real-time/embedded-Bereich, wo Sie wollen, um sicherzustellen, dass Sie nicht überlastet werden, ein Prozessor mit der Arbeit. Beachten Sie, dass diese Anweisungen pro Sekunde, die Zeit ist sehr wichtig!!!!
MIPS in diesem Mode ist ziemlich unwissenschaftlich.
MIPS in diesem Mode ist oft noch die beste Näherung ist es für die Auslegung eines Systems und die Bestimmung der Geschwindigkeit des Prozessors. Es könnte gut sein, die-off von 25%, aber egal...
Zählen MIPS erfordert einen Prozessor, der in der Nähe, was Sie verwenden. Die richtige Anleitung ist natürlich von entscheidender Bedeutung, um zu erfassen die tatsächliche instruction stream von der eigentlichen compiler im Einsatz.
Können Sie nicht in irgendeiner Weise annähernd diese auf einem PC. Sie brauchen, um sich eines der wenigen Instrumente, dies zu tun rechts:
Verwenden Sie eine instruction-set simulator für den Ziel-archicture wie Qemu, ARM-eigene tools, Synopsys, CoWare, Virtutech, oder Große. Diese sind schnell, aber zählen kann Anweisungen sehr gut, und unterstützt die richtige Befehlssatz. Abgesehen von umfangreichen Einsatz von teuren Anleitungen, wie integer divide (und bitte keine floating-point), diese zahlen tendenziell sinnvoll schließen.
Finden Sie einen clock-cycle-accurate-simulator für Ihre Ziel-Prozessor (oder etwas enger), die geben ziemlich gute Schätzung der pipeline-Effekte etc. Wieder einmal, erhalten Sie es vom ARM oder aus Carbon SoCDesigner.
Holen Sie sich ein Entwicklungs-board für den Prozessor-Familie, die Sie sind targeting, oder ein ARM, um es zu schließen design und Profil-die Anwendung gibt. Sie verwenden nicht ein ARM9-Profil für einen ARM11, sondern ein ARM11 wäre eine gute Näherung für einen ARM Cortex-A8/A9 zum Beispiel.
MIPS ist in der Regel verwendet, um zu Messen die Fähigkeit eines Prozessors.
Algorithmen nehmen gewöhnlich entweder:
Beschreibung eines Algorithmus in Bezug auf Anweisungen pro Sekunde scheint wie eine seltsame Maßnahme, aber natürlich weiß ich nicht, was dein Algorithmus macht.
Kommen, die eine sinnvolle Maßnahme, ich würde vorschlagen, dass Sie einen test ermöglicht die Messung der Durchschnittliche Zeitaufwand für den Algorithmus zu vervollständigen. Anzahl der bauanleitung wäre eine vernünftige Maßnahme, aber es kann schwierig sein, Sie zu zählen! Ihre beste Wette ist, so etwas wie dieses (pseudo-code):
MIPS ist ein Maß für die CPU-Geschwindigkeit, nicht der Algorithmus-Leistung. Ich kann nur davon ausgehen, das irgendwo entlang der Linie, jemand ist leicht verwirrt. Was versuchen Sie herauszufinden? Die einzige wahrscheinlich, die ich mir denken kann ist, Sie versuchen zu helfen, Sie bestimmen, wie schnell ein Prozessor die Sie benötigen, um Ihnen zu laufen, Ihr Programm zufriedenstellend.
Da Messen Sie einen Algorithmus in der Anzahl der Anweisungen (die ist kein Zweifel, hängt von der input-Daten, so ist dies nicht trivial ist), dann brauchen Sie eine gewisse Zeit, um zu bekommen, MIPS -- zum Beispiel, sagen, "ich brauche, um es aufzurufen 1000 mal pro Sekunde". Wenn Ihr Algorithmus ist 1000 Anweisungen für diesen speziellen Fall, werden Sie am Ende mit:
Ich immer noch denke, das ist eine wirklich seltsame Art und Weise zu versuchen, Dinge zu tun, so möchten Sie vielleicht Fragen Sie nach Klärung. Für deine speziellen Fragen, werde ich verlassen, dass jemand mehr vertraut mit Visual Studio.
Denken Sie auch daran, dass verschiedene Compiler und compiler-Optionen einen GROßEN Unterschied machen. Der gleiche source-code kann an vielen verschiedenen Geschwindigkeiten. Also statt der Kauf der 2mips Prozessor, den Sie verwenden möglicherweise die 1/2mips Prozessor und verwenden eine compiler-option. Oder verbringen Sie das Geld auf einen besseren compiler und verwenden, die billiger Prozessor.
Benchmarking ist fehlerhaft, am besten. Als hobby habe ich verwendet, um zu kompilieren die gleiche dhrystone (und Wetzstein) - code auf verschiedene Compiler von verschiedenen Herstellern für die gleiche hardware und die zahlen waren alle über den Ort, in Größenordnungen. Gleichen Quellcode gleichen Prozessor, dhrystone nicht bedeuten, eine Sache, nicht sinnvoll, da eine baseline. Was zählt in benchmarking ist es, wie schnell ist IHR Algorithmus ausgeführt werden, es musste besser sein als schnell oder schneller als es muss. Je nachdem, wie nahe an der Ziellinie sind Sie damit für jede Menge slop. Früh auf wahrscheinlich ausgeführt werden sollen, 5 oder 10 oder 100 mal schneller, als Sie brauchen, so dass am Ende des Projektes sind Sie zumindest etwas schneller als Sie sein müssen.
Ich Stimme mit dem, was ich denke, S. Lott ist zu sagen, das ist für alle Vertriebs-und marketing-und management sprechen. Dass die ein, dass das management hat zwischen einem Felsen und harten Stelle dann, was Sie tun müssen, ist, Sie zu kaufen, den schnellsten Prozessor und die besten Werkzeuge, die Sie bereit sind, zu verbringen, auf der Grundlage der bunte Tortendiagramme und Grafiken, die Sie gehen zu erzeugen, aus der Luft, als eine Rechtfertigung. Wenn in der Nähe des Ende der Straße, die es nicht ganz erfüllen die Leistung, dann könnte man die Rückkehr zu stackoverflow, aber zur gleichen Zeit, das management wird gezwungen, zu kaufen eine andere toolchain um fast jeden Preis, oder swap-Prozessoren und respin der Vorstand. Dann sollten Sie wissen, wie nah Sie dem Ziel sind, müssen wir die 1.0, und wir sind bei 1,25, wenn wir kaufen, der Prozessor ist doppelt so schnell wie die, die wir gekauft haben, wir sollten es machen.
Ob oder nicht, können Sie automatisieren diese Art von Dingen, oder simulieren Sie hängt von den Werkzeugen, manchmal ja, manchmal Nein. Ich bin nicht vertraut mit den tools, die Sie so reden, kann ich nicht sprechen direkt zu Ihnen.
Diese Antwort ist bestimmt nicht die Antwort die Frage nicht direkt, sondern bieten zusätzlichen Kontext herum, warum diese Frage wird gebeten.
MIPS für einen Algorithmus ist nur relevant für algorithmen, die reagieren müssen, um ein Ereignis innerhalb der geforderten Zeit.
Betrachten Sie zum Beispiel eine Steuerung entwickelt, um zu erkennen, Windgeschwindigkeit und bewegen Sie den Antrieb innerhalb einer Sekunde auf, wenn die Windgeschwindigkeit überschreitet die 25 Meilen /Stunde. Lassen Sie uns sagen, dauert es 1000 Anleitungen zur Berechnung und vergleichen Sie die Windgeschwindigkeit gegen die Schwelle. Die MIPS-Voraussetzung für diesen Algorithmus ist 1 Kilo Instructions Per Second (KIPs). Wenn der controller basiert auf 1-MIPS-Prozessor, wir können bequem sagen, dass es mehr Saft in den controller zum hinzufügen von anderen Funktionen.
Welche anderen Funktionen können Hinzugefügt werden, auf dem controller? Das hängt von der MIPS-auf die Funktion/Algorithmus Hinzugefügt werden. Wenn es eine andere Funktion, die Bedürfnisse von 100.000 Anweisungen durchgeführt werden, innerhalb einer Sekunde (also 100 KIPs), können wir immer noch Platz für diese neue Funktion und noch etwas Platz für weitere Funktionen hinzufügen.
Für eine erste Schätzung der benchmark auf dem PC nützlich sein können.
Jedoch, bevor Sie sich für ein bestimmtes Gerät, und die Takt-Frequenz sollten Sie ein Entwickler-board (oder ein PDA?) für die ARM-Ziel-Architektur und den benchmark dort.
Es gibt eine Menge von Faktoren, die die Geschwindigkeit auf den heutigen Maschinen (caching, Rohrleitungen, verschiedene Befehlssätze, ...), sodass Ihre benchmarks auf einem PC kann Weg w.r.t. den ARM.