Das Ende eines Grundsatzes

Auch so könnte man ein Fazit aus den Benchmarks ziehen, welche die ct in ihren aktuellen Heft veröffentlicht. Sie hat Prozessoren von AMD und Intel unterschiedliche Benchmarks laufen lassen und auch die Prozessoren waren bunt gemischt – vom 35 Euro Exemplar bis zum neuen 950 Euro iCore i7 Haswell-EP Flagschiff.

Ich hatte jahrelang als Grundsatz beim Rechnerkauf bei allem auf die Mitte zu achten. Also bei Arbeitsspeicher, Prozessor, Festplattengröße. Damit bin ich immer gut gefahren. Man kann das auch gut begründen. Bei Festplatten ist es so, dass wenn man mehr Geld ausgibt, die Kapazität zuerst überproportional ansteigt, um dann stark abzuflachen. Bei Arbeitsspeicher bedeuten zu wenig, dass der Rechne rstark ausgebremst wird, weil viel auf die Festplatte ausgelagert ist, ist er zu groß wird er eventuell gar niemals vollständig genutzt. Bei Prozessoren gab es lange Zeit auch die Beziehung dass die Leistung jenseits der billigsten Exemplare zuerst stark anstieg und man bei den teuren Exemplaren extrem viel drauf zahlt für wenig Mehrleistung.

Wenn man das richtige Benchmark nimmt, findet man das auch noch in der ct bestätigt, so erreicht ein Celeron J1900 (35 Euro) 5% der Leistung eines ICore i7 5960X (950 Euro) – zumindest im Linpack Benchmark. Man kann aber auch mal sehen, wie schnell der Prozessor bei Benchmarks mit real existierenden Anwendungsprogrammen ist so der Office PC Mark 8 oder Sysmark 2014. Da kommt er Celeron schon auf 50-60% der Leistung des genannten iCore Prozessors. Der in etwa gleich teure Celeron G1840 erreicht sogar 80%. Wie diese enorme Diskrepanz?

Nun wir verdanken sie Intel, die seit dem Pentium MMX ihre Prozessoren vor allem auf SIMD Anweisungen getrimmt haben. Alle neuen Befehle, die mit SSE (1-4) und AVX (1-2) einzogen, waren Fleißkommaoperationen die mehrere Werte auf einmal bearbeiten (Single Instruktion, Multiple Data). Das hat den Vorteil, dass schon der Befehl Parallelität vorsieht man so also mehrere Rechenwerke gleichzeitig beschäftigen kann. Die Register wurden so auf 256 Bit erweitert, die dann bis zu 8 einfach genaue Zahlen aufnehmen. Bei AVX gibt es eine Instruktion, die in einem Takt eine Addition und Multiplikation durchführt. Wird diese eingesetzt dann erreicht ein ICore Prozessor pro Takt und Kern bei einfacher Genauigkeit 16 FLOPS, mithin erreicht der iCore 5960 rund 768 GFlops Spitze, Ansonsten sind es bei AVX immerhin noch 8 FLOPS pro Takt.  Während der Celeron ohne AVX nur auf 48 GFlops kommt – dass ist so ziemlich genau das Verhältnis bei Linpack, dieses Programm war schon früher bekannt bei Vektorrechnern nahe an der theoretischen Peakperformance zu liegen.

Leider gibt es zwei Einschränkungen: Ohne Unterstützung von AVX sinkt die Performance auf ein Achtel bis ein Sechzehntel ab. Das kann gegeben sein weil die Instruktionen nicht verwendet werden (sehr oft bei Standardsoftware die nicht für jede CPU neu kompiliert wird) oder sie zwar genutzt werden, aber es nur wenige Fälle gibt, wo man sie einsetzen kann.

Die meiste Software die ein Durchschnittsbenutzer nutzt verarbeitet Ganzzahlen. Dazu gehören Browser aber auch Office und bei Ganzzahlen unterscheiden sich teurer iCore und billiger Celeron kaum. Beide haben die gleiche Anzahl von Rechenwerken. Wenn der iCore schneller ist, dann nur weil sein Takt höher und der Cache größer ist. Auch bei den Encodierung und Bildbearbeitung hat man es oft mit Ganzzahlen zu tun, schließlich sind die Farben von Bildpunkten, Helligkeit und Kontrast ganze Zahlen. Hier kann ein iCore seine vielen Kerne ins Rennen werfen, denn diese Operationen sind gut paralellisierbar.

Ein weiterer Punkt wird vom Autor schon in einigen Artikeln beklagt. Das es seit 2005 Mehrkernprozessoren gibt, aber die meisten Anwendungen Single-Threaded sind, also nur einen Kern ausnützen. Man sieht Journalisten sind keine Programmierer. Es gibt Dinge die kann man parallelisieren und Dinge die kann man nicht parallelisieren. Das erste ist möglich wenn man mehr als einen Benutzer bedienen muss wie dies der Fall bei einem Web Server, Datenbankserver kurzum bei einem Server an sich ist (die meistens mehr als einen Client sprich Nutzer „bedienen“). Es ist auch gegeben, wenn man wie im Supercomputerbereich eine Aufgabe hat die eine Berechnung für viele Elemente in identischer Weise durchführen muss. Das ist bei allen Problemen des Supercomputing der Fall egal ob sie das Teilchenverfahren, Finitive Elemente oder das Differenzverfahren einsetzt.

Im ersten Fall steht jeder Thread für einen Benutzer, im zweiten für einen Ausschnitt des Problems. Dagegen sind Benutzer die alleine vor dem PC arbeiten eine Spezies die weder mehrfach vorkommt, noch mehrere parallele Aufgaben initiiert. Wer Surft ruft eine Seite auf und die muss der Browser von oben nach unten rendern, parallel kann er wenig machen, weil die Elemente voneinander abhängen. Auch JavaScript nutzt nur einen Thread. Er kann lediglich mehrere Seiten parallel verarbeiten oder vorrausschauend den Links folgen und die nächsten Seiten ebenfalls laden und vorbereiten. Ähnliches bei der Textverarbeitung da die Benutzeraktionen kaum vorhersehbar sind kann man da wenig parallel machen. Allenfalls eine Rechtschreibprüfung und Seitenformatierung kann parallel im Hintergrund laufen. Natürlich gibt es auch im PC Bereich gut paralellisierbare aufgaben wie Bild- oder Video Bearbeitung. Doch diese auch für die ct‘ genutzten Benchmarks (häufig eingesetzt wird z.B. der Cinebench) hat bei den meisten Leuten kaum Bedeutung, weil die selten Tausende von Fotos bearbeiten oder mehrere Stunden am Tag Videos transkodieren (zum Ansehen, also dekodieren reicht selbst ein schwachbrüstiger Atom aus).

Eas bleibt? Für den Notmalnutzer spielt die Integer Performance eines Threads die wichtigste Rolle, die hängt wenn man die Atoms mal außen vor lässt bei den meisten Prozessoren primär von der Taktfrequenz ab, sekundär dann noch von der Cachegröße und Geschwindigkeit. Hier gibt es keine großen Unterschiede, selbst billige Prozessoren erreichen über 2,5 GHz, die teuerste aber auch nur knapp über 4 GHz. Für 50% mehr Performance muss man aber ein vielfaches des Preises zahlen. Damit lohnt sich bei Prozessoren die Mittelklasse fast kaum noch. Ein Einstiegsprozessor mit möglichst hohem Takt ist dann die beste Wahl. Das gesparte Geld kann man in eine SSD stecken – eine kleine mit 128 GByte reicht meistens aus, wenn man eine Festplatte noch zusätzlich hat (dann muss man eventuell einige Programme eben auf der Festplatte installieren, der Pfad ist ja bei der Installation leicht auswählbar). Die 70 Euro die das heute kosten sind meist auch der Preisunterschied zwischen einem Einstiegs- und Mittelklasseprozessor.

7 thoughts on “Das Ende eines Grundsatzes

  1. Bei Spielen ist das entscheidende Teil die Grafikkarte. Die meisten Spiele nutzen nur wenige Prozessorkerne. Da ist es sinnvoll, einen möglichst hoch getakteten Prozessor mit wenigen Kernen zu nehmen. Das dabei eingesparte Geld ist dann für eine bessere Grafikkarte besser angelegt.

    Recht ungünstig sind dagegen Komplettrechner. Die werden meist nach dem Grundsatz „alle Teile in der gleichen Preisklasse“ zusammengestellt, ohne zu fragen wofür die Kisten eigentlich gebraucht werden. Je nach Anwendung sind dann einige Teile überdimensioniert, und andere werden zum Engpaß.

  2. Vermutlich sind die beiden größten Anwendergruppen Spieler und Büroanwendungsnutzer. Für letztere reicht eigentlich schon länger ein Rechner vom unteren Teil des Performancespektrums, einfach weil diese Aufgaben nicht wirklich rechenintensiv sind, und für Spieler kann es nie genug sein, wobei aber wie Elendsoft schon richtig bemerkt hat, die Grafikkarte wichtiger als alles andere ist. Leider werden in Benchmarks die Entwickler immer vernachlässigt, oder findet man was darüber im aktuellen c’t Benchmark? Ich müsste demnächst mal einen neuen PC anschaffen, und am wichtigsten ist da die Compilergeschwindigkeit. Bisher hatte ich auch immer den Grundsatz mit dem Mittelmaß, aber das muss ich wohl doch langsam mal überdenken.

  3. Beim Compilieren ist u.A. eine SSD interessant, da viele Dateien gelesen werden müssen und auch viele Zwischenergebnisse gespeichert werden müssen.

  4. SSDs sind immer interessant weil der Rechner deutlich schneller hochfährt, Programme deutlich schneller starten und wenn die Auslagerung auf die SSD stattfindet teilweise auch Programme deutlich beschleunigt werden können.

  5. > Wer Surft ruft eine Seite auf und die muss der Browser von oben nach unten
    > rendern, parallel kann er wenig machen, weil die Elemente voneinander abhängen.
    Also mein Browser hat schon mal über 30Threads auch wenn nur eine Seite offen ist. Da geht eine ganze menge Parallel. ´
    Images, CSS, JS wird alles gleichzeitig geladen. Das Parsen der Resourcen( CSS, HTML, JS) und Encoding der Images kann gleichzeitig gemacht werden. Video können in nächsten Thread darstellt werden. Dann wird auch teilweise noch Ton abgespielt. Und im Hintergrund läuft ein Virenscanner Updatesuche.

    Wenn man will, kann man also selbst in Browser genug gleichzeitig machen.

  6. Mein Browser hat auch 30 Threads – wenn keine Seite offen ist und bei mehr Seiten steigen die kaum noch an. Die Frage ist natürlich was der geschwindigkeitsbestimmende Schritt ist und das ist nicht das lesen von HTML und CSS, sondern der Seitenaufbau.

  7. Beim Compilieren helfen viele Kerne, wenn man den Make-Aufruf (via Option „-j N“) parallelisiert. Problem bei Intel ist halt, dass es „echte“ vier Kerne Hyperthreading erst mit den teuren i7 gibt. Bei AMD gibt es Vielkerner deutlich preisgünstiger. Dafür ist dort die Spitzenperformance aber schlechter.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.