Hi,
AM437x L2 cache performance running QNX is much lower than Linux, please find the memperf utility test, running on Linux and QNX below:
Am437x - Linux |
AM437x – QNX 650/660 |
Speed is MB/s size cpy C->C set C read C ---- -------- -------- -------- 16 83.31 275.15 121.46 32 475.01 495.56 213.95 64 838.76 896.47 226.31 128 1256.69 1490.99 277.24 256 1816.52 2477.88 296.45 512 1384.02 1583.52 306.32 1024 1139.99 1283.98 311.68 2048 855.11 994.45 314.79 4096 814.10 881.34 316.17 8192 773.33 799.84 316.47 16384 705.63 717.44 315.73 32768 635.63 660.97 308.94 65536 646.98 652.32 295.30 131072 637.49 648.60 290.84 262144 534.84 642.05 284.35 524288 339.25 640.94 261.00 1048576 307.94 640.81 251.47 2097152 306.26 640.76 250.08 4194304 305.51 640.07 249.42
|
Speed is MB/s size cpy C->C set C read C ---- -------- -------- -------- 16 39.2 44.74 14.63 32 73.62 82.87 19.78 64 147.2 132.53 20.17 128 290.09 331.9 21.74 256 412.56 500.17 22.41 512 507.6 1028.03 22.76 1024 517.47 1610.82 22.94 2048 579.79 2263.21 23.03 4096 616.7 2839.19 23.08 8192 636.9 3246.89 23.1 16384 647.1 3480.68 23.11 32768 651.1 3642.84 23.12 65536 644.05 3716.08 23.12 131072 517.1 3738.43 23.1 262144 202.44 2421.82 22.43 524288 189.58 802.77 20.04 1048576 188.46 701.79 19.49 2097152 187.69 668.28 19.44 4194304 187.57 649.68 19.46 |
Based
Based on the values above do you have any suggestions on where to look?
Few Questions:
-> Are there any security settings that would prevent L1 or L2 cached reads from working. Note that L1/L2 cached writes work OK.
-> Are there any clock settings that would prevent L1 or L2 cached reads from working? Again L1/L2 cached writes work OK.
Notes:
- Same board is used to test QNX and Linux.
- QNX 650 and 660 test values are the same.
-The A9 clock is set to 1GHz on both tests.
-The cache mappings flags are the same in the systems (Linux and QNX) values below:
- reg0_cache_id (0x48242000):
410000C9
- reg0_cache_type (0x48242004)
1E140140
- Control register (base + 0x100 = 0x48242100):
Read at address 0x48242100 (0xb6f05100): 0x00000001
- Auxiliary Control Register(0x48242104):
Read at address 0x48242104 (0xb6f05104): 0x7E030000
- reg_data_ram_control (0x4824210C):
Read at address 0x4824210C (0xb6fcd10c): 0x00000110
- eg12_addr_filtering_start (0x48242C00):
Read at address 0x48242C00 (0xb6f01c00): 0x00000001
- reg12_addr_filtering_end (0x48242C04):
Read at address 0x48242C04 (0xb6f7bc04): 0x80000000
- reg15_prefetch_ctrl (0x48242F60):
Read at address 0x48242F60 (0xb6f66f60): 0x30000000
Thanks.