Hi Markus,
das ist ziemlich erstaunlich, denn die taktbereinigte Integer-Performance eines Cortex-M7 ist 2.14 DMIPS/MHz, während ein ARM6 nur auf 0.65 DMIPS/MHz kommt. Das ist ein Faktor von 3.3 - zumindest im Dhrystone-Benchmark.
Zudem ist auch die originale King-Engine schon in C, so daß anders als bei Langs Engines hier nicht der Übergang von Assembler nach C negativ zu Buche schlägt. Außerdem haben C-Compiler in den 90ern noch nicht so gut optimiert wie heute.
Eine mögliche Erklärung wäre, daß die Instruction-Pipeline beim M7 mit sechs Stufen doppelt so lang ist wie die beim ARM6 mit nur drei Stufen. Andererseits haben Schach-Engines oftmals überdurchschnittlich viele Verzweigungen im Code. Die Sprungvorhersage leidet hierbei darunter, daß es gerade um die feine Unterscheidung zwischen verschiedenen, realistischen Möglichkeiten geht, und nicht um das Abfangen seltener Fehlerzustände.
Grüße zurück, Rasmus
Quellen:
ARM, Cortex-M7
Wikipedia, ARM-Architectures
Wikichip, ARM-Architectures