Christoph M. schrieb:
Markus K. schrieb:
Der S3 sollte 16 MAC pro Kern und Takt können. Das sind bei 2 Kernen und
240MHz 2x2x16x240MHz = 15,4 GOPS.
Die Rechnung klingt interessant, aber ich melde mal deutliche Zweifel
an.
Der S3 müsste den 128Bit (8*8Bit)SIMD Befehl inclusive Befehl lesen,
Daten lesen und Rückschreiben in einem Zyklus und das mit zwei Kernen,
können.
Du schreibst oben "der ESP32-S3 die SIMD Befehle mit load/store hat". Das habe ich so interpretiert, dass die SIMD-Befehle das selber können. Wenn das nicht so ist, macht das natürlich einen großen Unterschied.
Prinzipiell haben Befehle und Daten getrennte Busse und sollten daher parallel gehen.
Da könnte der Speicher eine Bremse sein, der den Durchsatz gar
nicht erlaubt oder sich die zwei Kerne den Zugriff gegenseitig
blockieren.
Ich bin davon ausgegangen, das eine Dual-Kern CPU unabhängige Caches für die beiden Cores hat. Ich habe aber gerade ins TRM geschaut und da steht, dass es bei gleichzeitigen Zugriffen einen Arbiter gibt. Das finde ich jetzt enttäuschend.
Außerdem besteht die Berechnung eines neueronalen Netzes aus
mehren Befehlen als der MAC/Load/Store Befehl und die dürften dann die
durchschnittliche Performance deutlich senken. Ich glaube für ein
zuverlässiges Ergebnis bräuchte man einen konkreten Benchmark.
Klar, aber das ist ja immer so. Auch die NPUs können nicht alles in Hardware und wenn die 300 MACs parallel kann, dann muss man die ja auch erstmal vollbekommen, also das Netz muss so beschaffen sein, dass das geht.
Insgesamt scheint der S3 aber deutlich weiter vom theoretischen Maximum entfernt zu sein, als ich gedacht hatte.