Diskussion:Instructions per Cycle
Titel
[Quelltext bearbeiten]Irgendwie absurd, dass der Artikel einen englischen Titel, aber der englische Artikel zum gleichen Lemma einen anderen Titel hat, oder? Wie heisst denn das nun wirklich? --Supaari bla!bla! 03:18, 26. Jun 2005 (CEST)
- OK, jetzt haben sich die englischen Wikipedians anscheinend nach uns gerichtet ;) --Supaari bla!bla! 20:38, 19. Okt. 2006 (CEST)
Pipelining
[Quelltext bearbeiten]Ich finde die Aussage irreführend, dass die Aussagekraft der IPC durch Pipelining verzerrt würde: es ist ja so, dass durch Pipelining wie durch jede andere architekonische Maßnahme einfach eine bessere IPC erreicht wird. --Timmterim 11:39, 17. Okt. 2006 (CEST)
- Das Pipelining erhöht zwar die IPC aber die entstandene Zahl kann dann nicht mehr direkt mit der gleichen Maschine ohne Pipelining verglichen werden. Führt man z.B. Maschinencode, in dem jeder zweite Befehl ein Sprungbefehl ist, auf diesen zwei Maschinen aus, dann wird dieser auf beiden mit genau der gleichen IPC-Anzahl ausgeführt. Also macht schon das Pipelining alleine es schwierig, die Rechenleistung von Maschinen nur anhand der IPC zu vergleichen.--Supaari bla!bla! 20:50, 19. Okt. 2006 (CEST)
Dass CPI sich als Maß für den Leistungsvergleich zweier Rechner nur sehr bedingt (gar nicht) eignet - einverstanden. Das hängt aber daran, dass diese beiden Rechner unter Umständen sehr verschiedene Ressourcen haben: Der eine könnte eine Einheit für Fleißkommaoperationen haben, der andere nicht; einer könnte Division in Software machen, etc. So könnte der mit der besseren Ausstattung trotz schlechterer CPI schneller sein. Das hat aber jetzt mit Pipelining nichts zu tun: Pipelining spielt in die Berechnung der CPI mit rein, macht die CPI gerade mit aus. --Timmterim 17:31, 26. Okt. 2006 (CEST)
- Was meinst Du jetzt mit CPI? Cycles per Instruction? Also das hätte mit Pipelining nix mehr zu tun. Wenn wir wieder von Instructions per cycle (IPC) reden, dann habe ich ein Beispiel, wo Pipelining die Vergleichbarkeit verzerrt:
- Prozessor A arbeitet mit 1000 MHz und hat IPC = 1. Er hat kein Pipelining eingebaut.
- Prozessor B arbeitet mit 250 MHz und hat IPC = 4, wenn kein Sprungbefehl im Code vorhanden ist.
- führt man jetzt Programm X ohne Sprungbefehle auf beiden Prozessoren aus, so wird das Programm auf Prozessor A genauso schnell ausgeführt, wie auf Prozessor B. Nimmt man aber ein Programm Y, was viele Sprungbefehle drin hat, so wird es auf Prozessor A immernoch mit IPC = 1 ausgeführt, auf Prozessor B aber im Durchschnitt z.B. nur noch mit IPC = 3. Programm Y wird also auf Prozessor A schneller ausgeführt, da er eine Million Instruktionen in einer Sekunde abarbeitet. Prozessor B schafft bei diesem Programm aber nur 3 x 250000 = 750000 Instruktionen in einer Sekunde, ist also langsamer. Das Pipelining hat also verhindert, dass man die beiden Prozessoren sinnvoll anhand der IPC-Zahl und der Taktfrequenz miteinander vergleichen kann. --Supaari bla!bla! 20:47, 31. Okt. 2006 (CET)
- Möööp *g*
- Die Pipeline ist nun wirklich nicht das Problem - mit einer guten Branch Prediction schon zweimal nichtund dieser hat eine Trefferquote von 100% wenn z.B. auf Intel ECX als Zählregister mit der Endbedingung 0 gewählt wird. Der IPC-Wert wird vielmehr durch vorhandene Caches und deren Größe beeinflusst Dein Programm X kommt spätestens dann ins schleudern wenn es aufgrund seiner Linerarität die Chachegrenzen verlässt und die CPU nur noch mit der Geschwindigkeit des Buses arbeiten kann, weil die Cache-Hit Rate allmählich gegen 0 wandert. Dann ist das gleiche Programm in der X-Form mit Sprungbefehlen besser, sofern sich diese innerhalb der durch den Cache abgedeckten Codeabschnitt beruht.
- Des weiteren wird der IPC Wert auch davon beinflußt welche Operationen und in welcher Reihenfolge diese verwendet werden. Immer wieder schaffen es Spezialisten die Geschwindigkeit ihrer Maschinencodes durch Datenabhängigkeiten auszubremsen. Fakt ist: Ein echter IPC Wert kann für einzelne Befehle, nicht jedoch als diskrete Rechnung für ein Programm angegeben werden. Im Gegensatz zu der Messproblematik welche in Verbindung mit Caches, der Befehlsfolge und der Datnabnhängigkeit entsteht, ist der Einfluss der Pipeline auf den IPC Wert fast bedeutungslos!
- Der IPC Wert ist im Gegensatz zum CPI Wert bedeutungslos und nur für Werbezwecke interessant.
Huch. Ok, da sind mir die beiden wohl durcheinander geraten. Das lag jetzt daran, dass man von CPI auf IPC geleitet wird. --Timmterim 20:29, 9. Nov. 2006 (CET)
Beispiele
[Quelltext bearbeiten]Bitte mehr Beispiele! Welchen IPC-Wert hat denn zum Beispiel ein aktueller Pentium-Prozessor, wie haben sich diese Werte mit der Entwicklung verbessert/verändert? 195.135.137.107 17:46, 11. Jul. 2007 (CEST)
- Viele Beispiele findest du hier: https://en.wikipedia.org/wiki/Instructions_per_second#Millions_of_instructions_per_second_(MIPS) --185.151.64.164 06:54, 6. Jun. 2019 (CEST)
Werte
[Quelltext bearbeiten]Die Werte im Artikel kommen mir komisch vor. Ich glaube es handelt sich da um Benchmarkergebnisse, nicht um das theoretische Maximum, weil das ist ülicherweise kein komischer Dezimalwert wie 0,43 oder 10,6, sondern ein ganzzahliger Wert wie 16 oder der Kehrwert einer ganzen Zahl(z.B. 1/3 oder dezimal 0,33...). --MrBurns (Diskussion) 21:48, 10. Nov. 2018 (CET)
Warum sollte die/der IPC eine Ganzzahl sein? 0,43 MIPS/MHz bedeutet [bei einem Takt von 1 MHz kann die CPU 430.000 Ganzzahloperationen pro Sekunde durchführen.] Ein Pentium 1 hat ca. 1,8 MIPS/MHz, d.h. er leistet 1.800.000 Ganzzahloperationen pro Sekunde, WENN man ihn mit 1 MHz betreibt. Man wählt 1 MHz, damit alle CPUs ein identisches Kriterium haben. Die Beispiele sind keine Benchmarkergebnisse, sondern Werte, welche den technischen Spezifikationen des jeweiligen Prozessors entnommen sind, ggf. auf 1 MHz umgerechnet, wenn eine CPU nicht mit diesem Takt verfügbar ist. --185.151.64.164 14:16, 30. Jan. 2019 (CET)
- Warum sollte die/der IPC eine Ganzzahl sein? - Der theoretische Wert sollte ein Ganzzahlwert sein, weil die CPU eine gewisse fixe Zeit braucht um die einfachste Instruktion außer sowas wie NOOP oder HLT (i.d.R. ist das die Integer-Addition) durchzuführen. Durch Parallelisierung kann der IPC-Wert aber auch eine Zahl >1 sein. Generell sollte sie aber als Ganzzahl oder Bruch nicht zu großer ganzer Zahlen darstellbar sein. Moderne CPUs brauchen für eine Addition nur mehr einen Taktzyklus, daher sollten es dann wirklich ganze Zahlen sein, entsprechend der Anzahl der Additionen, die ein Kern gleichzeitig durchführen kann. Werte wie 10,6 kommen i.d.R. zustande, wenn man die tatsächlich mit Benchmark-Anwendungen erzielte Performance angibt statt den theoretischen Maximalwert. Diese Werte sind immer geringer, da man Dinge wie Speicherzugriffe und Interrupts (z.B. für Eingabe und Ausgabe) nie ganz vermeiden kann. --MrBurns (Diskussion) 03:06, 4. Jun. 2019 (CEST)
Ich habe eben nochmal die englischen Artikel zu "Instructions per second" und "Instructions per cycle" gelesen und denke, dass die Autoren den einen oder anderen Aspekt durcheinander bringen bzw. falsch erklären. Z.B. werden Ganzzahl -und Gleitkommaoperationen gleichbehandelt. Letztlich kann man aus beiden Artikel resumieren, dass sie das selbe beschreiben, was u.a. an den Zahlen erkennt, welche beim "IPC-Artikel" lediglich gerundete Werte aus dem "IPS-Artikel" sind. Die Quellenlage ist außerdem sehr chaotisch. Die Quellen beschreiben zwar CPUs, gehen jedoch nicht auf das eigentliche Thema IPC bzw. IPS ein. Für mich lesen sich die Artikel, wie Halbwissen. Da mich diese Themen interessieren, werde ich die Artikel selbst überarbeiten, zumindest die deutschsprachigen. Ich kann allerdings noch nicht sagen, wann ich die Zeit dazu finde. --185.151.64.164 09:35, 31. Jan. 2019 (CET)