Welche Mining-Leistung können wir ungefähr von den Intel SHA-Erweiterungen der kommenden Skylake-Prozessorarchitektur erwarten?

Intel wird seine neue x86 -SkyLake-Mikroarchitektur voraussichtlich im 3. Quartal 2015 veröffentlichen. Neben anderen interessanten Funktionen wird es SHA-Erweiterungen einführen , die eine Hardwarebeschleunigung der Secure-Hash-Algorithmus-Familie ermöglichen, einschließlich SHA256, wie es von Bitcoin verwendet wird.

In Bezug auf die SHA-Crunching-Geschwindigkeit ist es allgemein bekannt, dass:

CPU < GPU < FPGA < ASIC

Aber wo passen diese neuen Erweiterungen in diese Reihe? Und wie viele Größenordnungen an Geschwindigkeitsunterschied können wir im Vergleich zu den oben genannten Hardwareoptionen erwarten?

Wäre es sinnvoll zu vergleichen, inwieweit Intels vorhandene AES-Erweiterungen AES-Funktionen im Vergleich zu reinem Software-AES beschleunigen?

BEARBEITEN : Nachdem ich mehr über diese Art von CPU-Anweisungen für spezielle Zwecke gelesen habe, stelle ich fest, dass sie die Dinge höchstwahrscheinlich beschleunigen werden, um nur um ein Vielfaches schneller zu sein als die Software-Basislinie. nicht mehrere Größenordnungen schneller, wie es ASICs oder sogar FPGAs sind. Trotzdem könnte die Frage eine interessante Referenz sein, also lasse ich es.

Antworten (1)

Versuchen wir mal eine grobe Schätzung.

Intels Artikel Intel SHA Extensions enthält einige Details zu diesen Anweisungen sowie Beispielcode. Das Hauptmerkmal ist die sha256rnds2Anweisung, die zwei Runden von SHA256 von den 64 Runden durchführt, die zum Hashen eines 64-Byte-Blocks erforderlich sind. Ein Bitcoin-Header ist 80 Byte lang, das sind also 2 Blöcke, und da der Mining-Algorithmus SHA256D ist, müssen wir ihn zweimal machen. Wir müssen also sha256rnds2128 Mal ausführen, um einen Bitcoin-Hash auszuführen.

Ich bin kein Experte für moderne CPU-Architekturen, aber ich würde vermuten, dass eine komplexe Anweisung wie diese mehr als einen Taktzyklus dauern würde. Nehmen wir jedoch großzügig an, dass dies nicht der Fall ist. Da jede Runde von den Ausgaben der vorherigen abhängt, müssen diese Runden wahrscheinlich seriell (auf jedem Kern) ausgeführt werden, sodass nicht viel Parallelisierung durchgeführt werden kann. Aber nehmen wir großzügig an, dass es Ressourcen gibt, die gemeinsam genutzt werden können, sodass die CPU zwei sha256rnds2Befehle pro Taktzyklus ausführen kann. Nehmen wir auch großzügig an, dass der gesamte Hilfscode, der für die Einrichtung benötigt wird, sha256rnds2per Pipeline übertragen werden kann und keine zusätzlichen Taktzyklen erfordert. Es dauert also 64 Taktzyklen, um einen Bitcoin-Hash auszuführen.

Nun, wie schnell können wir die Uhr laufen lassen, und was noch wichtiger ist, wie viel Strom würde verbraucht werden? Da der Stromverbrauch von größter Bedeutung ist, nehmen wir an, dass wir eine mobile CPU verwenden möchten. Der Wikipedia-Artikel zu Skylake schlägt vor, dass das SKL-Y-1-Modell 2 Kerne und eine Thermal Design Power (TDP) von 4 W haben wird. Nehmen wir an, dass die TDP den tatsächlichen Stromverbrauch für unsere Mining-Anwendung darstellt, und lassen Sie uns außerdem die Leistung vernachlässigen Verbrauch aller anderen Komponenten unserer Maschine (Speicher, Stromversorgung usw.). Zu Taktraten gibt es keine Angaben, aber Intels aktuelle Core-M - Prozessoren haben einen Basistakt von bis zu 1,2 GHz, mit „Turbo“ bis zu 2,9 GHz. Nehmen wir an, dieses neue Skylake-Gerät könnte dauerhaft mit 3 GHz laufen.

Unsere gesamte Hash-Rate ist also

 3x10^9 clocks/sec / 64 clocks/hash * 2 cores =  93.75 MHash/sec

Bei einer Leistungsaufnahme von 4 W ergibt dies eine Effizienz von 23,4 MHash/J .

Zum Vergleich: Laut dem Mining-Hardware-Vergleich von bitcoin.it sind aktuelle ASIC-Miner in der Lage, 1000-2000 MHash/J zu produzieren.

Fazit:

Selbst unter extrem optimistischen Annahmen über die Mining-Leistung der Skylake-Prozessoren sind moderne ASIC-Geräte immer noch 40-80-mal effizienter.

Aufgrund des Midstate müssen Sie beim ersten Aufruf nur 16 Bytes hashen. Sie müssen beim zweiten Aufruf nur 32 Bytes hashen, da Sie den Hash hashen. Sie brauchen also nur sha256rnds2 64 Mal. Nicht, dass es natürlich wichtig wäre.
@ Nick: Guter Punkt. Ich werde versuchen, bei Gelegenheit zu bearbeiten.
Unter der Annahme, dass Intel die in diesem Patent beschriebene Implementierung verwendet, beträgt das Befehlstiming 3 Zyklen pro Ausführung von sha256rnds2.
Vermutlich werden die SHA-Anweisungen in ihrer Leistung der von AESENC/AESDEC etwas ähnlich sein, wenn sie in einem Skylake-Nachfolger auftauchen ( derzeit nur in Goldmont , das eine geringe Leistung mit begrenzter Ausführungsfunktion außerhalb der Reihenfolge hat. Agner Fog listet AESENC nicht auf Timings für Silvermont, leider, obwohl es AES-NI unterstützt ).
Wie auch immer, AESENC von SKL hat eine Latenz von 4c, die mit einem Durchsatz pro 1c in die Pipeline geleitet wird . Um dies für eine SHA-Anweisung mit diesen Timings zu nutzen, arbeiten Sie einfach an 4 SHA-Hashes parallel, sodass Sie vier sha256rnds2Anweisungen in der Luft halten, wodurch der SHA-Durchsatz anstelle der Latenz beeinträchtigt wird . Dies sollte sogar bei Goldmont funktionieren, vorausgesetzt, seine sha256rnds2Ausführungseinheit verfügt über eine ähnliche Pipeline. (Möglicherweise nicht: Die ersten CPUs, die PCLMULUDQ implementierten, verwendeten Mikrocode, und erst bei Broadwell war es bis auf 1 uop heruntergefahren.)
Mit gut abgestimmtem Code können Sie Port0 in einem Kern wahrscheinlich mit einem Thread sättigen, sodass Hyperthreading nicht hilft. (Es sei denn, es gibt andere Teile des Codes, die ebenfalls Zeit in Anspruch nehmen und bei etwas anderem einen Engpass verursachen könnten.) Übrigens, Goldmont TDP = 10 W für das Desktop-Modell (2,0 - 2,5 GHz) oder 6 W für das Mobiltelefon mit demselben maximalen Turbo. Ich würde vermuten, dass eine Schleife, die SHA256-Hashes ausführt, keine maximale Wärme erzeugt und möglicherweise mit maximalem Turbo läuft, während sie unter 6 W bleibt. Also könnten Ihre Zahlen vielleicht innerhalb eines Faktors von 2 oder so liegen?
@PeterCordes: Danke für die Info. Seitdem ich dies geschrieben habe, hat sich die ASIC-Mining-Effizienz um den Faktor 5 verbessert.