Kíváncsi leszek a 64 bites rendszerre váltás kapcsán szerzett tapasztalataidra.
Jelfeldolgozás terén nekem elsőre tetszett a váltás gondolata, mert több NEON regisztert kapok, ráadásul az AArch64 NEON-ja támogatja a double-t. Valójában AArch64 utasításkészlet esetén enyhe lassulást tapasztaltam. Okát keresve a memóriához jutottam, amire Rpi3 esetén figyelni kell.
Tesztem: for() ciklusban integeres memóriabirizgálás.
mem[(i<<4) & memlimit]++
Raspberry3:
3,4 nsec 32 kB alatt
6,6 nsec 512 kB alatt
62 nsec 512 kB felett <---- 512 kB felett erősen belassul. Vesd össze a legalsó tesztemmel.
Konkurenciával összevetve (Odroid-C2):
2,7 nsec 32 kB alatt
5,3 nsec 512 kB alatt
44 nsec 512 kB felett <---- 512 kB felett erősen belassul ez is.
És összevetettem az x86 architektúrával: i5-3337U laptop
0,8 nsec 32 kB alatt
2,4 nsec 256 kB alatt
3,4 nsec 4096 kB alatt <----- 8-szor nagyobb méretű cache
6,6 nsec 4 MB felett <----- felette sincs az ARM-nál tapasztalható erőteljes belassulás
Afenti tesztek lineár olvasásnál nem okoznak ekkora eltérést, de amint össze-vissza kell adatok után kapirgálni (esetemben FFT-nél bukott ki), rögtön kijönnek ezek az architektúrabeli különbségek.
Ha gyors lesz valamikor a RAM elérés, akkor majd tempó terén is előnyös lehet a 64 bites utasításkészlet.