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 |
wkup-r5fss0-0 freertos |
Toolchain |
ti-arm-clang |
Board |
am62px-sk |
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 : 1007
Instruction Cache Access : 769
Number of Instructions Executed : 389890
Data Cache Miss : 1007
InstructionCacheMiss/sec : 1006999
Instructions/sec : 389890000
DataCacheMiss/sec : 769000
MemCopy Size : 50
Exec Time in Usec : 1000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 968
Instruction Cache Access : 809
Number of Instructions Executed : 593390
Data Cache Miss : 968
InstructionCacheMiss/sec : 968000
Instructions/sec : 593390000
DataCacheMiss/sec : 809000
MemCopy Size : 100
Exec Time in Usec : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 917
Instruction Cache Access : 969
Number of Instructions Executed : 755184
Data Cache Miss : 917
InstructionCacheMiss/sec : 458500
Instructions/sec : 377592000
DataCacheMiss/sec : 484500
MemCopy Size : 200
Exec Time in Usec : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1122
Instruction Cache Access : 1251
Number of Instructions Executed : 1135437
Data Cache Miss : 1122
InstructionCacheMiss/sec : 561000
Instructions/sec : 567718500
DataCacheMiss/sec : 625500
MemCopy Size : 500
Exec Time in Usec : 3000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 900
Instruction Cache Access : 1285
Number of Instructions Executed : 2002335
Data Cache Miss : 900
InstructionCacheMiss/sec : 300000
Instructions/sec : 667445000
DataCacheMiss/sec : 428333
MemCopy Size : 750
Exec Time in Usec : 5000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1017
Instruction Cache Access : 1623
Number of Instructions Executed : 2952423
Data Cache Miss : 1017
InstructionCacheMiss/sec : 203400
Instructions/sec : 590484600
DataCacheMiss/sec : 324600
MemCopy Size : 1000
Exec Time in Usec : 5000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1156
Instruction Cache Access : 2385
Number of Instructions Executed : 3467601
Data Cache Miss : 1156
InstructionCacheMiss/sec : 231200
Instructions/sec : 693520200
DataCacheMiss/sec : 477000
MemCopy Size : 1250
Exec Time in Usec : 6000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1082
Instruction Cache Access : 2643
Number of Instructions Executed : 3839319
Data Cache Miss : 1082
InstructionCacheMiss/sec : 180333
Instructions/sec : 639886500
DataCacheMiss/sec : 440500
MemCopy Size : 1500
Exec Time in Usec : 8000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1461
Instruction Cache Access : 4058
Number of Instructions Executed : 5525335
Data Cache Miss : 1461
InstructionCacheMiss/sec : 182625
Instructions/sec : 690666875
DataCacheMiss/sec : 507250
MemCopy Size : 2048
Exec Time in Usec : 12000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1847
Instruction Cache Access : 6671
Number of Instructions Executed : 8573229
Data Cache Miss : 1847
InstructionCacheMiss/sec : 153916
Instructions/sec : 714435750
DataCacheMiss/sec : 555916
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 : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1329
Instruction Cache Access : 1268
Number of Instructions Executed : 427512
Data Cache Miss : 1329
InstructionCacheMiss/sec : 664500
Instructions/sec : 213756000
DataCacheMiss/sec : 634000
MemCopy Size : 50
Exec Time in Usec : 1000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1119
Instruction Cache Access : 1080
Number of Instructions Executed : 577012
Data Cache Miss : 1119
InstructionCacheMiss/sec : 1119000
Instructions/sec : 577012000
DataCacheMiss/sec : 1080000
MemCopy Size : 100
Exec Time in Usec : 2000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1031
Instruction Cache Access : 849
Number of Instructions Executed : 824925
Data Cache Miss : 1031
InstructionCacheMiss/sec : 515499
Instructions/sec : 412462500
DataCacheMiss/sec : 424500
MemCopy Size : 200
Exec Time in Usec : 3000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1221
Instruction Cache Access : 1249
Number of Instructions Executed : 1092852
Data Cache Miss : 1221
InstructionCacheMiss/sec : 407000
Instructions/sec : 364284000
DataCacheMiss/sec : 416333
MemCopy Size : 500
Exec Time in Usec : 4000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1774
Instruction Cache Access : 2465
Number of Instructions Executed : 2196190
Data Cache Miss : 1774
InstructionCacheMiss/sec : 443500
Instructions/sec : 549047500
DataCacheMiss/sec : 616250
MemCopy Size : 750
Exec Time in Usec : 6000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2157
Instruction Cache Access : 3188
Number of Instructions Executed : 3376415
Data Cache Miss : 2157
InstructionCacheMiss/sec : 359500
Instructions/sec : 562735833
DataCacheMiss/sec : 531333
MemCopy Size : 1000
Exec Time in Usec : 7000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2140
Instruction Cache Access : 3848
Number of Instructions Executed : 3822753
Data Cache Miss : 2140
InstructionCacheMiss/sec : 305714
Instructions/sec : 546107571
DataCacheMiss/sec : 549714
MemCopy Size : 1250
Exec Time in Usec : 7000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1611
Instruction Cache Access : 3491
Number of Instructions Executed : 4862341
Data Cache Miss : 1611
InstructionCacheMiss/sec : 230142
Instructions/sec : 694620142
DataCacheMiss/sec : 498714
MemCopy Size : 1500
Exec Time in Usec : 9000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2191
Instruction Cache Access : 4338
Number of Instructions Executed : 5407615
Data Cache Miss : 2191
InstructionCacheMiss/sec : 243444
Instructions/sec : 600846111
DataCacheMiss/sec : 482000
MemCopy Size : 2048
Exec Time in Usec : 11000
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2485
Instruction Cache Access : 6828
Number of Instructions Executed : 7091380
Data Cache Miss : 2485
InstructionCacheMiss/sec : 225909
Instructions/sec : 644670909
DataCacheMiss/sec : 620727
All tests have passed!!
wkup-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 : 1362
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1121
Instruction Cache Access : 892
Number of Instructions Executed : 398224
Data Cache Miss : 1121
InstructionCacheMiss/sec : 823054
Instructions/sec : 292381791
DataCacheMiss/sec : 654919
MemCopy Size : 50
Exec Time in Usec : 1643
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1261
Instruction Cache Access : 940
Number of Instructions Executed : 602242
Data Cache Miss : 1261
InstructionCacheMiss/sec : 767498
Instructions/sec : 366550213
DataCacheMiss/sec : 572124
MemCopy Size : 100
Exec Time in Usec : 1732
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1026
Instruction Cache Access : 803
Number of Instructions Executed : 736510
Data Cache Miss : 1026
InstructionCacheMiss/sec : 592378
Instructions/sec : 425236720
DataCacheMiss/sec : 463625
MemCopy Size : 200
Exec Time in Usec : 2219
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1188
Instruction Cache Access : 934
Number of Instructions Executed : 1090461
Data Cache Miss : 1188
InstructionCacheMiss/sec : 535376
Instructions/sec : 491420009
DataCacheMiss/sec : 420910
MemCopy Size : 500
Exec Time in Usec : 3383
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1173
Instruction Cache Access : 1237
Number of Instructions Executed : 1984290
Data Cache Miss : 1173
InstructionCacheMiss/sec : 346733
Instructions/sec : 586547443
DataCacheMiss/sec : 365651
MemCopy Size : 750
Exec Time in Usec : 5290
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2058
Instruction Cache Access : 2973
Number of Instructions Executed : 3127838
Data Cache Miss : 2058
InstructionCacheMiss/sec : 389035
Instructions/sec : 591273724
DataCacheMiss/sec : 562003
MemCopy Size : 1000
Exec Time in Usec : 5559
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1807
Instruction Cache Access : 2678
Number of Instructions Executed : 3454512
Data Cache Miss : 1807
InstructionCacheMiss/sec : 325058
Instructions/sec : 621426875
DataCacheMiss/sec : 481741
MemCopy Size : 1250
Exec Time in Usec : 6219
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1546
Instruction Cache Access : 2502
Number of Instructions Executed : 4075249
Data Cache Miss : 1546
InstructionCacheMiss/sec : 248593
Instructions/sec : 655290078
DataCacheMiss/sec : 402315
MemCopy Size : 1500
Exec Time in Usec : 8106
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2456
Instruction Cache Access : 4173
Number of Instructions Executed : 5180228
Data Cache Miss : 2456
InstructionCacheMiss/sec : 302985
Instructions/sec : 639060942
DataCacheMiss/sec : 514803
MemCopy Size : 2048
Exec Time in Usec : 13563
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 3837
Instruction Cache Access : 8611
Number of Instructions Executed : 8891953
Data Cache Miss : 3837
InstructionCacheMiss/sec : 282902
Instructions/sec : 655603701
DataCacheMiss/sec : 634889
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 : 1634
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1344
Instruction Cache Access : 1219
Number of Instructions Executed : 434602
Data Cache Miss : 1344
InstructionCacheMiss/sec : 822521
Instructions/sec : 265974296
DataCacheMiss/sec : 746022
MemCopy Size : 50
Exec Time in Usec : 1919
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1511
Instruction Cache Access : 1338
Number of Instructions Executed : 618342
Data Cache Miss : 1511
InstructionCacheMiss/sec : 787389
Instructions/sec : 322220948
DataCacheMiss/sec : 697238
MemCopy Size : 100
Exec Time in Usec : 1934
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1111
Instruction Cache Access : 858
Number of Instructions Executed : 808785
Data Cache Miss : 1111
InstructionCacheMiss/sec : 574457
Instructions/sec : 418192864
DataCacheMiss/sec : 443640
MemCopy Size : 200
Exec Time in Usec : 2607
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1560
Instruction Cache Access : 1530
Number of Instructions Executed : 1131344
Data Cache Miss : 1560
InstructionCacheMiss/sec : 598388
Instructions/sec : 433963943
DataCacheMiss/sec : 586881
MemCopy Size : 500
Exec Time in Usec : 4109
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1561
Instruction Cache Access : 1687
Number of Instructions Executed : 2324631
Data Cache Miss : 1561
InstructionCacheMiss/sec : 379897
Instructions/sec : 565741299
DataCacheMiss/sec : 410562
MemCopy Size : 750
Exec Time in Usec : 4962
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1463
Instruction Cache Access : 2142
Number of Instructions Executed : 3014239
Data Cache Miss : 1463
InstructionCacheMiss/sec : 294840
Instructions/sec : 607464530
DataCacheMiss/sec : 431680
MemCopy Size : 1000
Exec Time in Usec : 6407
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2136
Instruction Cache Access : 3446
Number of Instructions Executed : 3806191
Data Cache Miss : 2136
InstructionCacheMiss/sec : 333385
Instructions/sec : 594067582
DataCacheMiss/sec : 537849
MemCopy Size : 1250
Exec Time in Usec : 8043
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 2463
Instruction Cache Access : 4382
Number of Instructions Executed : 4956686
Data Cache Miss : 2463
InstructionCacheMiss/sec : 306229
Instructions/sec : 616273281
DataCacheMiss/sec : 544821
MemCopy Size : 1500
Exec Time in Usec : 8529
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 1996
Instruction Cache Access : 3493
Number of Instructions Executed : 5586480
Data Cache Miss : 1996
InstructionCacheMiss/sec : 234025
Instructions/sec : 654998241
DataCacheMiss/sec : 409543
MemCopy Size : 2048
Exec Time in Usec : 11827
Iteration : 1
Task Calls : 500
Instruction Cache Miss : 3322
Instruction Cache Access : 7329
Number of Instructions Executed : 7504336
Data Cache Miss : 3322
InstructionCacheMiss/sec : 280882
Instructions/sec : 634508835
DataCacheMiss/sec : 619683
All tests have passed!!