RE: [PATCH 1/3] riscv: optimized memcpy
From: David Laight <hidden>
Date: 2021-06-15 13:18:40
Also in:
linux-riscv, lkml
From: David Laight <hidden>
Date: 2021-06-15 13:18:40
Also in:
linux-riscv, lkml
From: Bin Meng
Sent: 15 June 2021 14:09 On Tue, Jun 15, 2021 at 4:57 PM David Laight [off-list ref] wrote:quoted
...
quoted
I'm surprised that the C loop:quoted
+ for (; count >= bytes_long; count -= bytes_long) + *d.ulong++ = *s.ulong++;ends up being faster than the ASM 'read lots' - 'write lots' loop.I believe that's because the assembly version has some unaligned access cases, which end up being trap-n-emulated in the OpenSBI firmware, and that is a big overhead.
Ah, that would make sense since the asm user copy code was broken for misaligned copies. I suspect memcpy() was broken the same way. I'm surprised IP_NET_ALIGN isn't set to 2 to try to avoid all these misaligned copies in the network stack. Although avoiding 8n+4 aligned data is rather harder. Misaligned copies are just best avoided - really even on x86. The 'real fun' is when the access crosses TLB boundaries. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)