SIMD-0645: JIT-Intrinsic für 128-Bit-Multiplikation mit 75 Prozent weniger Compute
SIMD-0645 „SVM JIT Intrinsics“ von Dean Little und Claire Fan ist ein offener Vorschlag im Repository der Solana Improvement Documents; der Pull Request wurde am 13. Oktober aktualisiert. Er führt eine Operation ein, sol_multi3, für die überlaufende Multiplikation zweier vorzeichenloser 128-Bit-Werte.
Das Problem. BPF hat für viele breite Arithmetik- und Vektoroperationen keine nativen Befehle; Programme bilden sie mit langen Befehlsfolgen nach, auch wenn die Host-CPU dasselbe in einem Schritt könnte. SBPF v2 bot breite Multiplikation über Solana-spezifische Befehle, LMUL64 und UHMUL64, die aber abgekündigt sind, weil sie nicht zum Upstream-eBPF-Befehlssatz gehören.
Der Ansatz. Statt eines neuen Befehls ist sol_multi3 ein statischer Aufruf: Opcode 0x85 mit dem Immediate murmur32("sol_multi3"), also 0xDB0F6D13 – derselbe Mechanismus, mit dem statische Syscalls erkannt werden. Beim Laden eines Programms gilt ein statischer Aufruf mit diesem Wert als die Multiplikation; alle anderen statischen Aufrufe laufen wie bisher. Eine virtuelle Maschine kann den Aufruf dann per JIT in native breite Multiplikation auf x86-64 übersetzen. Die Registerkonvention entspricht der __multi3-BPF-ABI: Operanden in r1–r4 als untere und obere Hälften, Ergebnis unten in r0 und oben in r2, modulo 2^128.

Die Zahlen. Die Autoren haben die Operation in der virtuellen Maschine sbpf prototypisch umgesetzt. Bei 10.000 u128-Multiplikationen verbrauchte die JIT-Variante rund 75 Prozent weniger Compute – 110.000 statt 450.000 Compute Units – und lief in Echtzeit etwa doppelt so schnell.
Warum es zählt. Programme, die u128-Werte multiplizieren, würden für dasselbe Ergebnis weniger Compute Units zahlen, ohne ihre Logik zu ändern. Der Vorschlag versteht die Technik zudem als Muster: Dieselbe JIT-Übersetzung ließe sich später auf SIMD- und andere hostspezifische Befehle anwenden.
Status. Das SIMD ist ein Entwurf, das Feature-Gate noch nicht vergeben; im Netz ändert sich nichts, bis es angenommen und aktiviert ist.
Quelle: Solana Improvement Documents, SIMD-0645 „SVM JIT Intrinsics“ — https://github.com/solana-foundation/solana-improvement-documents/pull/645