I just noticed an odd thing while performing some RAM speed measurements on the N810. For some reason IO operations on the RAM is very much slower in kernel-space than in user-space which seems to suggest that cacheing is disabled in kernel-space. The same does not seem to be true on the N900.
In kernel-space, I get the following read/copy speeds:
The times are for copying/reading 1MB 20 times.
memcpy: 517 ms => 40 563 kB/s
Raw byte copy (ldrb, strb): 1344 ms => 15 603 kB/s
Raw read, 1 byte (ldrb): 590 ms => 35 544 kB/s
Raw read, 4 bytes (ldr): 297 ms => 70 611 kB/s
Raw read, 8 bytes (ldm, 2 regs): 47 ms => 446 202 kB/s
Raw read, 16 bytes (ldm, 4 regs): 32 ms => 655 360 kB/s
Raw read, 32 bytes (ldm, 8 regs): 23 ms => 911 805 kB/s
All these speeds look very low compared to what is usually achievable in RAM.
In user-space, I instead got the following speeds:
memcpy: 171 ms => 122 640 kB/s
Raw byte copy (ldrb, strb): 558 ms => 37 583 kB/s
Raw read, 1 byte (ldrb): 246 ms => 85 250 kB/s
Raw read, 4 bytes (ldr): 129 ms => 162 569 kB/s
Raw read, 8 bytes (ldm, 2 regs): 27 ms => 776 722 kB/s
Raw read, 16 bytes (ldm, 4 regs): 14 ms => 1 497 965 kB/s
Raw read, 32 bytes (ldm, 8 regs): 11 ms => 1 906 501 kB/s
These values are more what I would expect when doing pure RAM IO operations. The only way to explain the difference between user- and kernel-space that I can see is that the cache is for some reason disabled in kernel-space on the N810.
Has anyone else noticed this? Or does anyone know if the cache is disabled for the RAM in kernel-space on the N810? I have tried recompiling the kernel while making sure that both the D- and I-caches are enabled, but I still get the same results.
I just noticed an odd thing while performing some RAM speed measurements on the N810. For some reason IO operations on the RAM is very much slower in kernel-space than in user-space which seems to suggest that cacheing is disabled in kernel-space. The same does not seem to be true on the N900.
In kernel-space, I get the following read/copy speeds:
The times are for copying/reading 1MB 20 times.
memcpy: 517 ms => 40 563 kB/s
Raw byte copy (ldrb, strb): 1344 ms => 15 603 kB/s
Raw read, 1 byte (ldrb): 590 ms => 35 544 kB/s
Raw read, 4 bytes (ldr): 297 ms => 70 611 kB/s
Raw read, 8 bytes (ldm, 2 regs): 47 ms => 446 202 kB/s
Raw read, 16 bytes (ldm, 4 regs): 32 ms => 655 360 kB/s
Raw read, 32 bytes (ldm, 8 regs): 23 ms => 911 805 kB/s
All these speeds look very low compared to what is usually achievable in RAM.
In user-space, I instead got the following speeds:
memcpy: 171 ms => 122 640 kB/s
Raw byte copy (ldrb, strb): 558 ms => 37 583 kB/s
Raw read, 1 byte (ldrb): 246 ms => 85 250 kB/s
Raw read, 4 bytes (ldr): 129 ms => 162 569 kB/s
Raw read, 8 bytes (ldm, 2 regs): 27 ms => 776 722 kB/s
Raw read, 16 bytes (ldm, 4 regs): 14 ms => 1 497 965 kB/s
Raw read, 32 bytes (ldm, 8 regs): 11 ms => 1 906 501 kB/s
These values are more what I would expect when doing pure RAM IO operations. The only way to explain the difference between user- and kernel-space that I can see is that the cache is for some reason disabled in kernel-space on the N810.
Has anyone else noticed this? Or does anyone know if the cache is disabled for the RAM in kernel-space on the N810? I have tried recompiling the kernel while making sure that both the D- and I-caches are enabled, but I still get the same results.
Best regards,
//Leo