Wäre eigentlich ein 128Bit CPU schneller als 64bit?


27.02.2021, 07:14

Ich selber habe einen Computer mit einem Intel Xeon Preozessor mit einer 64Bit Architektur, der bis zu 3,3GHz erreichen kann mit 16 Physischen Kernen.

Mein Arbeitsspeicher beträgt 32GB bei DDR3 Geschwindigkeit.

Und meine Festplatte ist eine Samsung Evo 1TB SSD (Verbunden mit SATA 3.0)

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Es kommt stark auf die Aufgaben an. Wenn du rein mit 32 Bit Ganzzahlen rechnest macht es so keinen Unterschied sofern der Compiler bzw fie CPU Intern dass dann nicht wieder auf 64Bit hinoptimiert.

64Bit Rechenoperationen sind aber natürlich auf einem 64Bit System schneller weil die in einem Zyklus gerechnet werden können. 32Bit müssen dann auf 2 Zyklen geteilt werden.

Ein Wechsel auf 128Bit ist eher eine Frage der Notwendigkeit und der Chipgröße. Eine 128 Bit CPU würde breitere Register benötigen, einen größeren Cache eine größere Alu und auch die anderen Hardwaremodule würden zum Teil größer werden, was natürlich mehr Chipfläche bedeutet und eine größere Komplexität. Für die meisten Anwendungen ist aber auch die Geschwindigkeit bei 32Bit beit weitem ausreichend und man macht das eher so, dass man der CPU andere Erweiterungen gibt die eben dann zB intern in breiteren Registern arbeiten oder bestimmte aufgaben beschleunigen.

Auch auf herkömmlichen CPUs gibts entsprechende Erweiterungen die man Nutzen kann zB die Möglichkeit in begrenzter weise Vektoroperationen sogenannte SIMD Operationen durchzuführen. Gibt dazu einige C++ Libs die das abstrahieren oder im Extremfall auch einen Teil der Operationen in die GPU auszulagern.

Man muss natürlich sein Programm so schreiben, dass es diese Operationen auch nutzt. Kompilate die auf Intel und AMD Cpus laufen machen das selten, aber ein Programm welches speziell an eine CPU angepasst ist kann einige Operationen um vieles Beschleunigen.


MarcelHD40 
Beitragsersteller
 27.02.2021, 08:28

Am Ende habe ich nur noch Bahnhof verstanden.

Worauf ich hinas wollte ist dass:

Viele sagen ja immer dass es keine 128 Bit CPUs gibt, weil 16 Exabyte Arbeitsspeicher ist weit mehr als ausreichend. Hier nimmt man aber auch nur die Adressierungsgröße von Ram als ein Grund warum das unnötig ist. Ob nun mehr Bits auch mehr Geschwidigkeit bedeuten wird nicht gesagt auch wenn man weit weg vom Armbeitsspeicher Limit ist?

Weil wenn ich ich Program habe, das bei 64 Bit schneller ist als bei 32Bit, obwohl seine 60MB Ram Speicher weit weg davon sind um überhaupt das 4GB limmit zu erreichen, aber trozdem Deutlich mehr Leistung beitet unabhängig der Anzahl der CPu Kernen weil ich das ganze auch auf einem Kern laufen lassen kann, das dass selbe bewirkt, nur halt in langsameren Rückmeldewerten von "ms".

Deswegen frage ich mich ob dann nicht ein 128Bit Prozessor mit einem 128Betriebssystem sogar noch schneller ist als die "9ms" von 64bit?

0
PeterKremsner  27.02.2021, 09:33
@MarcelHD40

Wie gesagt ein 128Bit Prozessor macht keinen Sinn.

Du kannst auch auf modernen Prozessoren die Erweiterungen nutzen um dein Programm zu beschleunigen.

Wenn du dein Programm optimierst um zB parallele Rechenoperationen mit den SIMD Operationen zu rechnen und einen teil auf die Grafikkarte auslagerst bist du auch auf einem 32Bit System schneller als deine 9ms.

Du nutzt in deinem Programm den Prozessor hald einfach bei weitem nicht komplett aus, weil du dein Programm auch nicht darauf hin optimiert hast.

Welche Geschwindigkeit du erreichst hängt ganz davon ab wie du dein Programm schreibst und wenn dein Programm auf einer 128Bit CPU auch nur 64Bit Rechenoperationen nutzt hast du keine Beschleunigung.

0
MarcelHD40 
Beitragsersteller
 02.03.2021, 07:16
@PeterKremsner

Ich verstehs irgendwie immer noch nicht. Kannst du da so ein Video verlinken was das kurz und einfach erklärt?

0
PeterKremsner  02.03.2021, 21:10
@MarcelHD40

Ehrlichgesagt kenne ich kein Video dazu.

Du kannst nur mal die Wikiartikel zu Prozessorerweiterungen lesen zB die

https://en.m.wikipedia.org/wiki/SIMD

Implementiert wird das mit dieser Erweiterung

https://en.m.wikipedia.org/wiki/Streaming_SIMD_Extensions

Wie man hier nachlesen kann unterstützen Intel CPUs also Berechnungen bis zu 128Bit.

Allerdings musst du als Programmierer auch explizit sagen, dass du diese 128Bit Berechnungen verwenden willst. Dein Programm verwendet idr ja nur 32Bit oder 64Bit Berechnungen aber wenn du kompliziertere Berechnungen hast, verwendest du diese Erweiterungen.

0

Naja, der Unterschied ist wohl eher dass moderne CPUs für 64 Bit optimiert werden. 32 bit hat nur eine Nebenrolle und ist entsprechend langsamer, weil nicht optimiert.

64 bit (also, x86-64)ist ja nichtmal das schnellste was aktuelle CPUs so können. Aktuelle CPUs haben avx2, avx512, sse 4 usw.. die sind im richtigen Anwendungsfall um einiges schneller. Avx512 heißt so weil, du hast es vermutet, das ein 512 Bit Befehlssatz ist.


MarcelHD40 
Beitragsersteller
 27.02.2021, 07:17

Worauf ich hinaus möchte ist, ob das nicht daran liegen kann das die Bits ebenfalls zur Geschwidigkeit beitragen unabhängig vom Arbeitsspeicher?

0
jort93  27.02.2021, 07:22
@MarcelHD40

Ja.

Wie gesagt, moderne Prozessoren können nicht nur 64 Bit. Die können heutzutage bis zu 512 Bit. Und das ist in vielen Anwendungen schneller.

Aber, in deinem Fall liegt es er daran dass neue Prozessoren oft schlecht in 32 bit Anwendungen sind.

0
jort93  27.02.2021, 07:28
@MarcelHD40

Das ist von Stackexchange geklaut und schlecht übersetzt.

https://electronics.stackexchange.com/questions/42784/why-are-there-no-256-bit-or-512-bit-microprocessors/42788

"In fact Intel's Sandy Bridge and Ivy Bridge processors do just that, they have 256bit SIMD registers and can do two arithmetic operations and one memory operation per cycle on them. So one could justify calling them 256bit, or even 768bit processors, if one was a sneaky marketer wanting to bend regularly used terms."

Naja, und aktuelle haben 512 Bit, wie gesagt.(das ist aus 2012)

Nicht alle Register sind 512 Bit, das ist klar, aber ein paar. Und das ist ausreichend für den Leistungsschub den man sich erwünscht. 512 Bit Avx ist viel schneller als reguläres 64 Bit in vielen Anwendungen.

1
PeterKremsner  27.02.2021, 08:01
@jort93

Natürlich muss man seine Anwendung auch so Programmieren und Kompilieren, dass diese Instructions genutzt werden können ;)

0
MarcelHD40 
Beitragsersteller
 27.02.2021, 08:18
@jort93

Ich kann immer noch nciht verstehen woher man diese unnormalen Bits Angaben herbekommt? Ich kenne nur von heutigen CPUs, das diese entweder bei alten 32bit, oder bei heutigen 64Bit haben. Viele sagen bereits das 128Bit absolut übertrieben wäre weil 64Bit für 16 Exabyte ausreicht, aber du kommst mir hier gleich mit 512Bit WTF? Ich habe noch nie von sowas gehört und weiß nicht ob wir hier noch von Haushalts Computer CPUs reden oder was das soll?

Worauf ich hinaus wollte ist:

Viele sagen ja immer dass es keine 128 Bit CPUs gibt, weil 16 Exabyte Arbeitsspeicher ist weit mehr als ausreichend.

Aber was sich niemand gefragt hat ist ob Bits nicht auch noch für etwas anderes gut sind als für die Kapazität des Arbeitsspeichers?

Weil wenn ich ich Program habe, das bei 64 Bit schneller ist als bei 32Bit, obwohl seine 60MB Ram Speicher weit weg davon sind um überhaupt das 4GB limmit zu erreichen, aber trozdem Deutlich mehr Leistung beitet unabhängig der Anzahl der CPu Kernen weil ich das ganze auch auf einem Kern laufen lassen kann, das dass selbe bewirkt, nur halt in langsameren Rückmeldewerten von "ms".

Deswegen frage ich mich ob dann nicht ein 128Bit Prozessor mit einem 128Betriebssystem sogar noch schneller ist als die "9ms" von 64bit?

0
jort93  27.02.2021, 08:26
@MarcelHD40

Wir reden von Haushalts CPUs.Meine CPU unterstützt Avx2(also 256 Bit) und dann benutze ich nahezu täglich für Stockfish 13.

64 Bit beschreibt nicht nur wie viel RAM eine CPU ansprechen kann. Das ist die breite der Register. Ein Register bei x86-64 kann 64 Bit an Daten halten.

Nun unterstützen nahezu alle modernen CPUs avx2. Das bedeutet dass sie einige Register haben die 256 Bit an Daten speichern könnten. Das würde bedeuten dass du mit avx 2 auch 256 Bit Speicheradressen ansprechen könntest wenn du Lust hättest.

Man könnte moderne CPUs durchaus als 256 Bit bewerben, wenn man Lust hätte.

Die meisten Register(General purpose Register) bei aktuellen CPUs sind 64 Bit, einfach weil das für die meisten Zwecke ausreicht, aber wir sind schon lange nicht mehr bei nur rein 64 Bit.

Das wäre aber natürlich denkbar alle Register zu vergrößern.

0
MarcelHD40 
Beitragsersteller
 27.02.2021, 08:31
@jort93

Wie schaut eigentlich mit Windows 10 aus? ist die 64Bit Version für dieses avx optimiert? Und wenn nicht bremmst dann das Betriebssystem das ganze dann nicht wieder auf 64bit runter, wenn es selber nur auf maximal 64bit laufen kann?

0
jort93  27.02.2021, 08:51
@MarcelHD40

Ich glaube dein Problem liegt darin dass du denkst dass 64 Bit bedeutet dass der Prozessor nur 64 Bit kann, und alles in 64 Bit läuft.

Das ist aber nicht der Fall. Viel ist eben auch 16 Bit, 32 bit, 128 bit oder mehr.

64 Bit stellt nur eine Art Basis dar. Eine gängige Größe der für vieles gebraucht wird.

Es macht wenig Sinn diese Basis auszubauen aktuell, aber avx usw. Wird verbreiteter werden.

Es macht keinen Sinn nur 128 Bit Register zu haben oder so. Aktuell hast du eben am meisten 64 Bit Register, einige 128 Bit und 256 Bit Register und damit ist man gut bedient. Du kannst dir großen Register dafür große Datenmengen nutzen, und die kleinen für kleinere. Wir werden immer auch kleine Datenmengen brauchen, und für den Zweck wird 64 Bit noch lange reichen.

0
jort93  27.02.2021, 08:54
@MarcelHD40

Und sowas ist viel schneller.

Beim neuen Stockfish 13 ist das 256 Bit Avx2 rund 10 mal so schnell wie das einfache 64 Bit.

Sie werden Avx 512, bmi2 usw. Weiter ausbauen und neue Entwicklen. Aber 64 Bit als Basis ergibt schon Sinn.

0
MarcelHD40 
Beitragsersteller
 27.02.2021, 10:47
@jort93

Heißt das dass ich deutlich schneller als 9ms Erreichen könnte oder ist das etwas was Unity garnicht unterstützt?

0
jort93  27.02.2021, 10:51
@MarcelHD40

Das kommt auf die genaue Aufgabenstellung an.

So etwas bringt am meisten bei großen Aufgaben. Bei Stockfish 12 war der Unterschied nur rund 10%-20%, aber bei Stockfish 13 ist Avx2 fast 10 mal schneller. Stockfish 13 nutzt ein NNUE, was quasi ein neurales Netzwerk ist welches auf der cpu laufen kann(normalerweise laufen die auf Grafikkarten).

0