Memcopy benchmarking demo
Introduction
This application, internally called as AUTOSAR benchmarking application is used for benchmarking several KPIs such as:
I-cache miss
D-cache miss
memory copy performance on different cores
with options such as XIP, non-XIP
ability to run software on other cores
run with CCS or SBL etc.
Supported Combinations
Parameter |
Value |
|---|---|
CPU + OS |
mcu-r5fss0-0 freertos |
CPU + OS |
r5fss0-0 freertos |
Toolchain |
ti-arm-clang |
Boards |
am62dx-evm |
Example folder |
examples/kernel/freertos/memcpy_benchmark/ |
Steps to Run the Example
When using CCS projects to build, import the CCS project for the required combination and build it using the CCS project menu (see Using SDK with CCS Projects).
When using makefiles to build, note the required combination and build using make command (see Using SDK with Makefiles)
Launch a CCS debug session and run the executable, see CCS Launch, Load and Run
See Also
Sample Output
Shown below is a sample output when the benchmark application is run,
mcu r5f core:
Memcpy Benchmarking for MSRAM memory:
Filling up the gBuffers
Sanity checking for PMU counters
Inst Cache Miss: 1
Inst Cache Access: 0
Number of instructions: 39
Data Cache Miss: 0
Created MasterTask
Created all 15 slaveTasks
Master_task
Master_task -- start sending
MemCopy Size : 0
Exec Time in Usec : 1000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 969
Instruction Cache Access : 764
Number of Instructions Executed : 389860
Data Cache Miss : 969
InstructionCacheMiss/sec : 969000
Instructions/sec : 389860000
DataCacheMiss/sec : 764000
MemCopy Size : 50
Exec Time in Usec : 1000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 956
Instruction Cache Access : 850
Number of Instructions Executed : 593379
Data Cache Miss : 956
InstructionCacheMiss/sec : 956000
Instructions/sec : 593379000
DataCacheMiss/sec : 850000
MemCopy Size : 100
Exec Time in Usec : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 910
Instruction Cache Access : 747
Number of Instructions Executed : 728511
Data Cache Miss : 910
InstructionCacheMiss/sec : 455000
Instructions/sec : 364255500
DataCacheMiss/sec : 373500
MemCopy Size : 200
Exec Time in Usec : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 983
Instruction Cache Access : 841
Number of Instructions Executed : 1082113
Data Cache Miss : 983
InstructionCacheMiss/sec : 491500
Instructions/sec : 541056500
DataCacheMiss/sec : 420500
MemCopy Size : 500
Exec Time in Usec : 4000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 822
Instruction Cache Access : 855
Number of Instructions Executed : 1949171
Data Cache Miss : 822
InstructionCacheMiss/sec : 205500
Instructions/sec : 487292750
DataCacheMiss/sec : 213750
MemCopy Size : 750
Exec Time in Usec : 5000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 907
Instruction Cache Access : 1004
Number of Instructions Executed : 2983315
Data Cache Miss : 907
InstructionCacheMiss/sec : 181400
Instructions/sec : 596663000
DataCacheMiss/sec : 200800
MemCopy Size : 1000
Exec Time in Usec : 5000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 819
Instruction Cache Access : 1231
Number of Instructions Executed : 3334291
Data Cache Miss : 819
InstructionCacheMiss/sec : 163800
Instructions/sec : 666858200
DataCacheMiss/sec : 246200
MemCopy Size : 1250
Exec Time in Usec : 5000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 786
Instruction Cache Access : 1512
Number of Instructions Executed : 3982721
Data Cache Miss : 786
InstructionCacheMiss/sec : 157200
Instructions/sec : 796544200
DataCacheMiss/sec : 302400
MemCopy Size : 1500
Exec Time in Usec : 7000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 898
Instruction Cache Access : 1960
Number of Instructions Executed : 4981020
Data Cache Miss : 898
InstructionCacheMiss/sec : 128285
Instructions/sec : 711574285
DataCacheMiss/sec : 280000
MemCopy Size : 2048
Exec Time in Usec : 12000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1160
Instruction Cache Access : 3928
Number of Instructions Executed : 8555920
Data Cache Miss : 1160
InstructionCacheMiss/sec : 96666
Instructions/sec : 712993333
DataCacheMiss/sec : 327333
All tests have passed!!
Memcpy Benchmarking for DDR memory:
Filling up the gBuffers
Sanity checking for PMU counters
Inst Cache Miss: 1
Inst Cache Access: 0
Number of instructions: 39
Data Cache Miss: 0
Created MasterTask
Created all 15 slaveTasks
Master_task
Master_task -- start sending
MemCopy Size : 0
Exec Time in Usec : 1000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1147
Instruction Cache Access : 909
Number of Instructions Executed : 399352
Data Cache Miss : 1147
InstructionCacheMiss/sec : 1147000
Instructions/sec : 399352000
DataCacheMiss/sec : 909000
MemCopy Size : 50
Exec Time in Usec : 1000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1051
Instruction Cache Access : 784
Number of Instructions Executed : 556188
Data Cache Miss : 1051
InstructionCacheMiss/sec : 1051000
Instructions/sec : 556188000
DataCacheMiss/sec : 784000
MemCopy Size : 100
Exec Time in Usec : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1001
Instruction Cache Access : 849
Number of Instructions Executed : 801227
Data Cache Miss : 1001
InstructionCacheMiss/sec : 500499
Instructions/sec : 400613500
DataCacheMiss/sec : 424500
MemCopy Size : 200
Exec Time in Usec : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 952
Instruction Cache Access : 977
Number of Instructions Executed : 1065900
Data Cache Miss : 952
InstructionCacheMiss/sec : 476000
Instructions/sec : 532950000
DataCacheMiss/sec : 488500
MemCopy Size : 500
Exec Time in Usec : 4000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1080
Instruction Cache Access : 1235
Number of Instructions Executed : 2262393
Data Cache Miss : 1080
InstructionCacheMiss/sec : 270000
Instructions/sec : 565598250
DataCacheMiss/sec : 308750
MemCopy Size : 750
Exec Time in Usec : 4000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 985
Instruction Cache Access : 1282
Number of Instructions Executed : 2952018
Data Cache Miss : 985
InstructionCacheMiss/sec : 246250
Instructions/sec : 738004500
DataCacheMiss/sec : 320500
MemCopy Size : 1000
Exec Time in Usec : 6000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1049
Instruction Cache Access : 1572
Number of Instructions Executed : 3635131
Data Cache Miss : 1049
InstructionCacheMiss/sec : 174833
Instructions/sec : 605855166
DataCacheMiss/sec : 262000
MemCopy Size : 1250
Exec Time in Usec : 7000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 897
Instruction Cache Access : 2080
Number of Instructions Executed : 4755039
Data Cache Miss : 897
InstructionCacheMiss/sec : 128142
Instructions/sec : 679291285
DataCacheMiss/sec : 297142
MemCopy Size : 1500
Exec Time in Usec : 7000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 888
Instruction Cache Access : 2167
Number of Instructions Executed : 5439723
Data Cache Miss : 888
InstructionCacheMiss/sec : 126857
Instructions/sec : 777103285
DataCacheMiss/sec : 309571
MemCopy Size : 2048
Exec Time in Usec : 10000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 913
Instruction Cache Access : 3412
Number of Instructions Executed : 7196748
Data Cache Miss : 913
InstructionCacheMiss/sec : 91300
Instructions/sec : 719674800
DataCacheMiss/sec : 341200
All tests have passed!!
r5f core:
Memcpy Benchmarking for MSRAM memory:
Filling up the gBuffers
Sanity checking for PMU counters
Inst Cache Miss: 0
Inst Cache Access: 39
Number of Instructions: 53
Data Cache Miss: 0
Created MasterTask
Created all 15 slaveTasks
Master_task
Master_task -- start sending
MemCopy Size : 0
Exec Time in Usec : 1372
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1271
Instruction Cache Access : 398370
Number of Instructions Executed : 398384
Data Cache Miss : 857
InstructionCacheMiss/sec : 926384
Instructions/sec : 290367346
DataCacheMiss/sec : 624635
MemCopy Size : 50
Exec Time in Usec : 1633
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1230
Instruction Cache Access : 601931
Number of Instructions Executed : 601945
Data Cache Miss : 892
InstructionCacheMiss/sec : 753214
Instructions/sec : 368612982
DataCacheMiss/sec : 546233
MemCopy Size : 100
Exec Time in Usec : 1731
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1026
Instruction Cache Access : 736499
Number of Instructions Executed : 736513
Data Cache Miss : 803
InstructionCacheMiss/sec : 592720
Instructions/sec : 425484113
DataCacheMiss/sec : 463893
MemCopy Size : 200
Exec Time in Usec : 2224
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1214
Instruction Cache Access : 1090533
Number of Instructions Executed : 1090547
Data Cache Miss : 916
InstructionCacheMiss/sec : 545863
Instructions/sec : 490353866
DataCacheMiss/sec : 411870
MemCopy Size : 500
Exec Time in Usec : 3267
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 980
Instruction Cache Access : 1956962
Number of Instructions Executed : 1956976
Data Cache Miss : 1278
InstructionCacheMiss/sec : 299969
Instructions/sec : 599013161
DataCacheMiss/sec : 391184
MemCopy Size : 750
Exec Time in Usec : 4600
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1105
Instruction Cache Access : 2991423
Number of Instructions Executed : 2991437
Data Cache Miss : 1480
InstructionCacheMiss/sec : 240217
Instructions/sec : 650312391
DataCacheMiss/sec : 321739
MemCopy Size : 1000
Exec Time in Usec : 4997
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 952
Instruction Cache Access : 3342099
Number of Instructions Executed : 3342113
Data Cache Miss : 1452
InstructionCacheMiss/sec : 190514
Instructions/sec : 668823894
DataCacheMiss/sec : 290574
MemCopy Size : 1250
Exec Time in Usec : 5795
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 892
Instruction Cache Access : 3990559
Number of Instructions Executed : 3990573
Data Cache Miss : 1625
InstructionCacheMiss/sec : 153925
Instructions/sec : 688623468
DataCacheMiss/sec : 280414
MemCopy Size : 1500
Exec Time in Usec : 7204
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1118
Instruction Cache Access : 4989094
Number of Instructions Executed : 4989108
Data Cache Miss : 2839
InstructionCacheMiss/sec : 155191
Instructions/sec : 692546918
DataCacheMiss/sec : 394086
MemCopy Size : 2048
Exec Time in Usec : 11856
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1421
Instruction Cache Access : 8564404
Number of Instructions Executed : 8564418
Data Cache Miss : 4233
InstructionCacheMiss/sec : 119854
Instructions/sec : 722369939
DataCacheMiss/sec : 357034
All tests have passed!!
Memcpy Benchmarking for DDR memory:
Filling up the gBuffers
Sanity checking for PMU counters
Inst Cache Miss: 0
Inst Cache Access: 39
Number of Instructions: 53
Data Cache Miss: 0
Created MasterTask
Created all 15 slaveTasks
Master_task
Master_task -- start sending
MemCopy Size : 0
Exec Time in Usec : 1478
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1236
Instruction Cache Access : 407329
Number of Instructions Executed : 407343
Data Cache Miss : 955
InstructionCacheMiss/sec : 836265
Instructions/sec : 275604194
DataCacheMiss/sec : 646143
MemCopy Size : 50
Exec Time in Usec : 1598
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1134
Instruction Cache Access : 563776
Number of Instructions Executed : 563790
Data Cache Miss : 809
InstructionCacheMiss/sec : 709637
Instructions/sec : 352809762
DataCacheMiss/sec : 506257
MemCopy Size : 100
Exec Time in Usec : 1918
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1148
Instruction Cache Access : 808769
Number of Instructions Executed : 808783
Data Cache Miss : 841
InstructionCacheMiss/sec : 598540
Instructions/sec : 421680396
DataCacheMiss/sec : 438477
MemCopy Size : 200
Exec Time in Usec : 2259
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1148
Instruction Cache Access : 1073508
Number of Instructions Executed : 1073522
Data Cache Miss : 904
InstructionCacheMiss/sec : 508189
Instructions/sec : 475220008
DataCacheMiss/sec : 400177
MemCopy Size : 500
Exec Time in Usec : 3822
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1197
Instruction Cache Access : 2270043
Number of Instructions Executed : 2270057
Data Cache Miss : 1593
InstructionCacheMiss/sec : 313186
Instructions/sec : 593944793
DataCacheMiss/sec : 416797
MemCopy Size : 750
Exec Time in Usec : 4635
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1066
Instruction Cache Access : 2959640
Number of Instructions Executed : 2959654
Data Cache Miss : 1605
InstructionCacheMiss/sec : 229989
Instructions/sec : 638544552
DataCacheMiss/sec : 346278
MemCopy Size : 1000
Exec Time in Usec : 5487
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1100
Instruction Cache Access : 3642493
Number of Instructions Executed : 3642507
Data Cache Miss : 1752
InstructionCacheMiss/sec : 200473
Instructions/sec : 663843083
DataCacheMiss/sec : 319300
MemCopy Size : 1250
Exec Time in Usec : 6905
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1091
Instruction Cache Access : 4762435
Number of Instructions Executed : 4762449
Data Cache Miss : 1922
InstructionCacheMiss/sec : 158001
Instructions/sec : 689710209
DataCacheMiss/sec : 278349
MemCopy Size : 1500
Exec Time in Usec : 7796
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1018
Instruction Cache Access : 5446929
Number of Instructions Executed : 5446943
Data Cache Miss : 2808
InstructionCacheMiss/sec : 130579
Instructions/sec : 698684325
DataCacheMiss/sec : 360184
MemCopy Size : 2048
Exec Time in Usec : 10037
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1038
Instruction Cache Access : 7203928
Number of Instructions Executed : 7203942
Data Cache Miss : 3398
InstructionCacheMiss/sec : 103417
Instructions/sec : 717738567
DataCacheMiss/sec : 338547
All tests have passed!!