Hello,
I've modified a few of the existing codes and retained two for trials, results are in :
Code: Select all
High speed, 50MB sequential read/write, 512 bytes EP, 0x00 interval, -O3, F765 :
- ST original : 7.130MB/s (1 buffer 64 blocks synchronous) / 6.081 MB/s (1 buffer 64 blocks synchronous)
- ST original : 6.711MB/s (1 buffer 32 blocks synchronous) / 4.194 MB/s (1 buffer 32 blocks synchronous)
- dsigma modified : 5.872 MB/s (1 buffer 32 blocks synchronous) / 3.894 MB/s (2 buffers 32 blocks read-ahead )
- dsigma original : 1.048 MB/s (1 buffer 01 block synchronous) / 2.516 MB/s (2 buffers 16 blocks read-ahead )
- barthess modified : 7.969 MB/s (1 buffer 64 blocks synchronous) / 6.710 MB/s (1 buffer 64 blocks synchronous)
- barthess modified : 7.550 MB/s (1 buffer 32 blocks synchronous) / 4.613 MB/s (1 buffer 32 blocks synchronous)
- barthess modified : 6.291 MB/s (1 buffer 16 blocks synchronous) / 2.516 MB/s (1 buffer 16 blocks synchronous)
- barthess modified : 8.388 MB/s (2 buffers 32 blocks read-ahead ) / 6.082 MB/s (2 buffers 32 blocks read-ahead )
- barthess modified : 7.131 MB/s (2 buffers 16 blocks read-ahead ) / 2,936 MB/s (2 buffers 16 blocks read-ahead )
Then I tried both modified barthess in Full Speed with PLLN/4 to see if read-ahead had more importance for smaller hardware :
Code: Select all
Full speed, 50MB sequential read/write, 64 bytes EP, 0x00 interval, -O3, F765 PLLN/4 :
- barthess modified : 0.838 MB/s (1 buffer 16 blocks synchronous) / 0.838 MB/s (1 buffer 16 blocks synchronous)
- barthess modified : 1.048 MB/s (2 buffers 08 blocks read-ahead ) / 0.838 MB/s (2 buffers 08 blocks read-ahead )
Synchronous is :
Code: Select all
while() {
synchronous_bulk_read(buffer);
synchronous_usb_write(buffer);
}
Read-ahead is :
Code: Select all
synchronous_bulk_read(buffer[i]);
while() {
asynchronous_usb_write(buffer[i]);
synchronous_bulk_read(buffer[i+1]);
asynchronous_usb_wait_completion();
i++;
}