1 task, like http server task, can run on just 1 core at the same time, so even if you would like to perform parallel reading from sd card/flash to have 2 tasks running, it is not possible, because you just have to know in front what file to process and have data prepared
The OP did not mandate the ESP HTTP task. I could use Lwip direct pbuf (& Lwip's own http server) which I have done before on a coop low latency loop. Lots faster.
- 1 task, like http server task, can run on just 1 core at the same time, so even if you would like to perform parallel reading from sd card/flash to have 2 tasks running, it is not possible, because you just have to know in front what file to process and have data prepared
That's what I said. File selection & so latency will kill more than bps. But you could avoid with a monolithic website or to a lesser extent a coop loop.
even if you would like to cache files in PSRAM, which is limited to about 4MB, you still have about 40-80MHz SPI to read/write PSRAM,
Not sure what your point is:
(1) I can serve >>>GB @ close to 100Mbps using (say) 32KB of RAM e.g. double buffering (producer/consumer pattern). If its a calculated output then SPI does not come into this. If static/file serve then see below....
On an Mx or a processor with a circular DMA request buffer I can keep that stream going. I think the ESP only has a single DMA request so then I have latency on each request, see below.
Doubt with with ESP-IDF though. I would guess 20uS gap between packets (UDP because TCP will not get anywhere near 100Mbps because of ACK & buffer constraints) so 40uS every 12Mbp maybe 400uS in a second down time? Lets say 1mS. You would have to work really really hard on the drivers though.
(2) Regarding serving a 3MB website then sure the website would be in flash but @80MHz and QSPI I could buffer into DRAM from core 2 etc.
Those math has nothing to do with real life.
The maths is correct (no figure given on latency granted). You just need to think how to apply & then be prepared to do a lot of typing. I have done iNET-X streams on Mx processors and faced similar hurdles. But I used Lwip on cooperative schedule & maybe the Mx DMA channels were a little better than ESP!
I think we are agreed that he is not going to get anywhere near 100Mbps without serious effort though (& also 100Mbps is impossible without a DMA request circular buffer (avoids latency between req1 & req2) which IJDK if the ESP has)!
& I also believe that IDF CAN should be fixed.