Frage

Ich habe vor kurzem gebeten worden, um die MIPS produziert (Millionen Instruktionen pro Sekunde) für einen Algorithmus, den wir entwickelt haben. Der Algorithmus wird durch einen Satz von C-artigen Funktionen ausgesetzt ist. Wir haben den Code auf einem Dell Axim üben die Leistung unter verschiedenen Eingabe der Benchmark.

Diese Frage kam von unseren Hardware-Herstellern, aber ich bin vor allem ein HL-Software-Entwickler, so bin ich nicht sicher, wie auf die Anforderung zu reagieren. Vielleicht hat jemand mit ähnlichen HW / SW-Hintergrund kann helfen ...

  1. Da unser Algorithmus nicht in Echtzeit ist, ich glaube nicht, dass wir es als MIPS quantifizieren müssen. Ist es möglich, die Gesamtzahl der Montageanleitung einfach zu zitieren?

  2. Wenn 1 wahr ist, wie Sie dies tun (dh., Wie die Anzahl der Montageanleitung messen) entweder allgemein oder speziell für ARM / XScale?

  3. Kann 2 auf einem WM-Gerät oder über den Device Emulator in VS2005 vorgesehen durchgeführt werden?

  4. Kann 3 automatisiert werden?

Vielen Dank für Ihre Hilfe. Charles


Vielen Dank für Ihre Hilfe. Ich denke, S.Lott den Nagel getroffen. Und als ein Follow-up, ich habe jetzt mehr Fragen.

5 Jeder Vorschlag, wie man über die Messung MIPS gehen? Ich habe gehört, einige ein empfehlen unseren Algorithmus ausgeführt wird und es gegen Dhrystone / Whetstone Benchmark Vergleich MIS zu berechnen.

6 Da der Algorithmus muss nicht in Echtzeit ausgeführt wird, ist MIPS wirklich eine sinnvolle Maßnahme? (ZB. Faktorielles (N)) Was sind andere Wege, um die Menge Verarbeitungsanforderungen? (Ich habe bereits die Laufzeit-Performance gemessen, aber es war keine befriedigende Antwort.)

7 Schließlich gehe ich davon aus MIPS ist eine grobe Schätzung und wäre dep. auf Compiler, Optimierungseinstellungen, etc?

War es hilfreich?

Lösung

Ich wette, dass die Hardware-Anbieter ist zu fragen, wie viele MIPS Sie benötigen.

Wie in „Haben Sie benötigen einen 1.000 MIPS-Prozessor oder einen 2.000 MIPS-Prozessor?“

Was wird vom Management in übersetzt: „Wie viele MIPS?“

Hardware bietet MIPS. Software verbraucht MIPS.

Sie haben zwei Freiheitsgrade.

  • Der inhärente MIPS-Angebot des Prozessors.

  • Die Anzahl der Sekunden, in denen verbrauchen Sie, dass viele MIPS.

Wenn der Prozessor nicht genug MIPS hat, wird Ihr Algorithmus „langsam“ sein.

, wenn der Prozessor genügend MIPS hat, wird Ihr Algorithmus „schnell“ sein.

I „schnell“ und „langsam“ in Anführungszeichen gesetzt, weil Sie eine Leistungsanforderung haben müssen „schnell genug, um die Leistungsanforderung zu erfüllen“, um zu bestimmen oder „zu langsam, um die Leistungsanforderung zu erfüllen.“

Auf einem 2.000 MIPS-Prozessor, könnten Sie eine annehmbar 2 Sekunden dauern. Aber auf einem 1.000 MIPS-Prozessor diese explodiert auf eine nicht akzeptables 4 Sekunden.


Wie viele MIPS brauchen Sie?

  1. die offiziellen MIPS für Ihren Prozessor übernehmen. Siehe http://en.wikipedia.org/wiki/Instructions_per_second

  2. Führen Sie Ihren Algorithmus auf einige Daten.

  3. Messen Sie die genaue Laufzeit. Im Durchschnitt eine Reihe von Proben Unsicherheit zu reduzieren.

  4. Bericht. 3 Sekunden auf einem 750 MIPS-Prozessor sind - gut - 3 Sekunden bei 750 MIPS. MIPS ist eine Rate. Es ist Zeit. Die Entfernung ist das Produkt der Geschwindigkeit * Zeit. 3 Sekunden bei 750 MIPS beträgt 750 * 3 Millionen Instruktionen.

Beachten Sie Rate (in Instruktionen pro Sekunde) * Zeit (in Sekunden) gibt Ihnen Anweisungen.

Sie nicht sagen, dass es 3 * 750 MIPS. Es ist nicht; es ist 2250 Millionen Instruktionen.

Andere Tipps

Einige Hinweise:

  1. MIPS wird oft als allgemeine „Kapazität“ Maß für Prozessoren, vor allem in dem weichen Echtzeit- / Embedded-Bereich eingesetzt, wo Sie wollen, um sicherzustellen, dass Sie nicht über einen Prozessor mit Arbeit überlastet werden. Beachten Sie, dass dies Instruktionen pro Sekunde, da die Zeit sehr wichtig ist!

  2. MIPS auf diese Weise verwendet wird, ist ganz unwissenschaftlich.

  3. MIPS auf diese Weise verwendet wird, ist nach wie vor oft die beste Näherung es für die Auslegung eines Systems ist und die Geschwindigkeit des Prozessors zu bestimmen. Es könnte gut von 25% aus, aber egal ...

  4. Counting MIPS erfordert einen Prozessor, der zu nah ist, was Sie verwenden. Der richtige Befehlssatz ist offensichtlich entscheidend, den tatsächlichen Befehlsstrom vom eigentlichen Compiler in Gebrauch zu erfassen.

Sie können in keiner Weise diese annähernd auf einem PC. Sie müssen eines der wenigen Werkzeuge bringen, dieses Recht zu tun:

  1. Verwenden Sie einen Befehlssatz-Simulator für das Ziel archicture wie Qemu, ARM eigene Werkzeuge, Synopsys, CoWare, Virtutech oder VaST. Diese sind schnell, aber können Anweisungen zählen ziemlich gut, und den richtigen Befehlssatz unterstützen. Abgesehen von den extensiven Einsatz von teueren Anweisungen wie integer divide (und bitte keine Floating-Point), neigen dazu, diese Zahlen sinnvollerweise nahe zu sein.

  2. einen Taktzyklus präzisen Simulator für Ihren Zielprozessor Suchen (oder etwas in der Nähe), was ziemlich gute Schätzung der Pipeline-Effekte gibt usw. Wieder einmal bekommt es von ARM oder aus Carbon-SoCDesigner.

  3. Holen Sie sich eine Entwicklungs-Board für die Prozessorfamilie Sie zielen, oder eine ARM nahe daran entwerfen und Profil gibt die Anwendung. Sie benötigen keine ARM9 verwenden für einen ARM11 zu profilieren, sondern ein ARM11 könnte eine gute Näherung für ein ARM Cortex-A8 / A9 zum Beispiel.

  4. sein

MIPS wird in der Regel verwendet, um die Fähigkeit eines Prozessors zu messen.

Algorithmen in der Regel entweder:

  1. eine gewisse Zeit (wenn es auf einem bestimmten Prozessor ausgeführt wird)
  2. eine bestimmte Anzahl von Befehlen (abhängig von der Architektur)

einen Algorithmus in Bezug auf die Instruktionen pro Sekunde beschreiben würde wie eine seltsame Maßnahme erscheinen, aber ich weiß natürlich nicht, was Ihr Algorithmus der Fall ist.

mit einem sinnvollen Maße zu kommen, würde ich vorschlagen, dass Sie einen Test einrichten, die Sie die durchschnittliche Zeit für Ihren Algorithmus genommen messen kann abzuschließen. Anzahl der Montageanleitung wäre eine vernünftige Maßnahme, aber es kann schwierig sein, sie zu zählen! Ihre beste Wette ist so etwas wie dieser (Pseudo-Code):

const num_trials = 1000000
start_time = timer()
for (i = 1 to num_trials)
{
    runAlgorithm(randomData)
}
time_taken = timer() - start_time
average_time = time_taken / num_trials

MIPS ist ein Maß für die CPU-Geschwindigkeit, nicht Algorithmus Leistung. Ich kann nur die irgendwo entlang der Strecke übernehmen, jemand etwas verwirrt ist. Was versuchen sie heraus zu finden? Das einzige wahrscheinliche Szenario ich denken kann, ist sie versucht, um zu ermitteln, wie schnell ein Prozessor die sie benötigen, um Sie Ihr Programm zufriedenstellend auszuführen.

Da Sie einen Algorithmus in Anzahl von Befehlen messen können (was ohne Zweifel wird an den Eingangsdaten abhängen, so ist dies nicht trivial), müssen Sie dann ein gewisses Maß an Zeit, um MIPS zu bekommen - zum Beispiel , sagt: „ich kann es 1000-mal pro Sekunde aufgerufen werden muß“. Wenn Ihr Algorithmus 1000 Anweisungen für diesen speziellen Fall ist, werden Sie am Ende mit:

1000 instructions / (1/1000) seconds = 1000000 instructions per second = 1 MIPS.

Ich denke immer noch, das ist eine wirklich seltsame Art und Weise zu versuchen, die Dinge zu tun, so dass Sie um Klärung bitten mögen. Wie für Ihre speziellen Fragen, werde ich, dass jemand besser vertraut mit Visual Studio verlassen.

Denken Sie auch daran, dass verschiedene Compiler und Compiler-Optionen einen großen Unterschied machen. Die gleiche Quellcode kann auf vielen verschiedenen Geschwindigkeiten läuft. Anstatt also den 2mips Prozessor kaufen können Sie in der Lage sein, den 1 / 2mips Prozessor zu verwenden, und eine Compiler-Option verwenden. Oder verbringen Sie das Geld für einen besseren Compiler und verwenden Sie den billigeren Prozessor.

Benchmarking ist bestenfalls fehlerhaft. Als Hobby habe ich die gleiche Dhrystone (und Wetzstein) Code auf verschiedenen Compilern von verschiedenen Anbietern für die gleiche Hardware und die Zahlen waren alle über den Ort, um Größenordnungen zu kompilieren. Gleiches Quellcode gleicher Prozessor, Dhrystone nicht mehr bedeuten als eine Sache, nicht sinnvoll als Grundlage. Worauf es ankommt, in das Benchmarking ist, wie schnell sich Ihr Algorithmus laufen, es wäre besser, so schnell oder schneller als es muss. Abhängig davon, wie nah an der Ziellinie Sie für viele Slop erlauben werden. Schon früh am wahrscheinlich 5 oder 10 oder 100-mal schneller sein wollen laufen, als Sie brauchen, damit Sie am Ende des Projektes zumindest etwas schneller sind als Sie sein müssen.

Ich bin damit einverstanden mit dem, was ich denke, S. Lott sagt, das ist alles, Vertrieb und Marketing und Management zu sprechen. , derjenige zu sein, dass das Management zwischen einem Felsen und dem harten Platz gesetzt hat dann, was Sie tun müssen, ist, sie bekommen den schnellsten Prozessor und besten Werkzeuge zu kaufen, die sie bereit sind, auf der Grundlage der bunten Tortendiagramme und Grafiken zu verbringen, dass Sie gehen zu aus der Luft als Rechtfertigung erzeugen. Wenn am Ende der Straße doesnt es durchaus Leistung gerecht zu werden, dann könnte man zu Stackoverflow zurück, aber zum gleichen Zeit-Management wird eine andere Werkzeugkette um fast jeden Preis oder Swap-Prozessoren und Respin das Board zu kaufen gezwungen werden. Bis dahin sollten Sie wissen, wie nah an das Ziel Sie sind, benötigen wir 1,0 und wir sind bei 1,25, wenn wir den Prozessor kaufen, die doppelt so schnell ist wie die, die wir gekauft, wir sollten es machen.

Unabhängig davon, ob Sie diese Art von Dingen automatisieren oder simulieren sie an den Werkzeugen hängen, manchmal ja, manchmal nein. Ich bin nicht vertraut mit den Werkzeugen Sie sprechen so kann ich nicht direkt mit ihnen sprechen.

Diese Antwort nicht beabsichtigt ist, die Frage direkt zu beantworten, aber zusätzlichen Kontext zu schaffen, um, warum diese Frage gestellt wird.

MIPS für einen Algorithmus ist nur relevant für Algorithmen, die auf ein Ereignis innerhalb der geforderten Zeit reagieren müssen.

Betrachten wir zum Beispiel eine Steuerung entwickelt, um die Windgeschwindigkeit zu erfassen und das Stellglied innerhalb einer Sekunde bewegen, wenn die Windgeschwindigkeit über 25 Meilen / Stunde durchquert. Lassen Sie uns sagen, dass es 1000 Anweisungen nimmt die Windgeschwindigkeit an der Schwelle zu berechnen und zu vergleichen. Die MIPS-Anforderung für diesen Algorithmus ist 1 Kilo Instruktionen pro Sekunde (KIPs). Wenn der Controller auf 1 MIPS-Prozessor basiert, können wir bequem sagen, dass es mehr Saft in der Steuerung ist, um andere Funktionen hinzuzufügen.

Welche anderen Funktionen können auf dem Controller hinzugefügt werden? Das hängt von dem MIPS der Funktion / Algorithmus hinzugefügt werden. Wenn es eine andere Funktion, die 100.000 Anweisungen muss innerhalb einer Sekunde (das heißt 100 KIPs) durchgeführt werden, können wir immer noch diese neue Funktion unterbringen und haben noch Raum für weitere Funktionen hinzuzufügen.

Für eine erste Abschätzung ein Benchmark auf dem PC kann nützlich sein.

Bevor Sie jedoch auf ein bestimmtes Gerät und Taktfrequenz verpflichten sollten Sie einen Entwickler Bord (oder ein PDA?) Für die ARM-Zielarchitektur und Benchmark es dort.

Es gibt viele Faktoren, die die Geschwindigkeit auf dem heutigen Maschinen beeinflussen (Caching, Pipelines, verschiedene Befehlssätze, ...) so Ihr Benchmarks auf einem PC kann weg sein w.r.t. die ARM.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top