xmos / xcore_iot

Other
29 stars 39 forks source link

burn.h does not consume MIPS as intended #491

Closed ed-xmos closed 1 year ago

ed-xmos commented 2 years ago

In the burn utility found dotted around the SDK + deps, typically used for constraining the MIPS on a different core to simulate a loaded tile, the use of XS1_SR_QUEUE_MASK causes the burn to not actually consume MIPS.

void burn(void) { SETSR(XS1_SR_QUEUE_MASK | XS1_SR_FAST_MASK); for(;;); }

This means that for many tests including IO modules (especially where 7 other cores are put into burn) the performance we actually get is likely much below what is being tested. I found this due to an unexpected drop in performance when deploying the UART under the RTOS - https://xmosjira.atlassian.net/wiki/spaces/~870418189/pages/3597303865/UART+Rx+performance+issues

Using drystone MIPS:

There are 22 instances of SETSR(XS1_SR_QUEUE_MASK | XS1_SR_FAST_MASK), most of them being in the HIL tests in fwk_io.

xmos-jmccarthy commented 1 year ago

Was closed in #503