Bug 217069

Summary: Performance: memcpy slower in Xscale vs ARM
Product: Base System Reporter: Alexandre martins <alexandre.martins>
Component: armAssignee: freebsd-arm (Nobody) <freebsd-arm>
Status: Closed Overcome By Events    
Severity: Affects Only Me CC: thj
Priority: ---    
Version: CURRENT   
Hardware: arm   
OS: Any   

Description Alexandre martins 2017-02-13 13:23:27 UTC
Hello,

During the development for our new platform, armada380 based, I see that the "standard" version of memmove/memcpy is faster than the "xscale" one.

For that, I just remove the _ARM_ARCH_5E define into the file sys/arm/arm/support.S.

There is the results:

Block size: 2048
memcpy (Kernel ARM)                  :   1028.7 MB/s
memmove (Kernel ARM)               :    616.5 MB/s
memcpy (Kernel xscale)               :    920.1 MB/s
memmove (Kernel xscale)            :    618.8 MB/s

Block size: 128
memcpy (Kernel ARM)                  :   1018.5 MB/s
memmove (Kernel ARM)               :    668.4 MB/s
memcpy (Kernel xscale)               :    825.9 MB/s
memmove (Kernel xscale)            :    668.6 MB/s

Block size: 64
memcpy (Kernel ARM)                  :    892.9 MB/s
memmove (Kernel ARM)               :    667.2 MB/s
memcpy (Kernel xscale)               :    721.2 MB/s
memmove (Kernel xscale)            :    668.2 MB/s

Block size: 32
memcpy (Kernel ARM)                  :    620.6 MB/s
memmove (Kernel ARM)               :    634.6 MB/s
memcpy (Kernel xscale)               :    504.9 MB/s
memmove (Kernel xscale)            :    634.5 MB/s

Block size: 16
memcpy (Kernel ARM)                  :    471.8 MB/s
memmove (Kernel ARM)               :    464.5 MB/s
memcpy (Kernel xscale)               :    254.5 MB/s
memmove (Kernel xscale)            :    464.7 MB/s

Please note that the userland suffer the same problem, and the standard "ARM" is a little bit more efficient.

I'm available to test any point you want.

Best regards

Alexandre Martins
Comment 1 Tom Jones freebsd_committer freebsd_triage 2020-07-11 17:57:50 UTC
FreeBSD dropped support for ARMv5 on the 2020/01/02 this commit is a good place to start reading from 

https://lists.freebsd.org/pipermail/svn-src-all/2020-January/191927.html