GoForSmoke:
I see. And for those kind of things you seem to be right.
But people do use and sell internet shields and even run tiny servers on them.
Instead of packing loads of RAM in the MCU perhaps the answer is to run out a memory bus?
Rugged Circuits sells plug-in direct address external RAM boards for the Mega2560. I have one, it was $25.
For what you describe, aren't those things serial in nature, driven by ports?
You see, the controller has a certain amount of RAM but unlimited data can be streamed, bandwidth is the limit.
I wonder how far SPI RAM would go in certain apps? Or how big SPI RAM chips get and if they can chain?
Is 48MHz fast enough to keep up? That's a Teensy 3.1 on slow speed.
Streaming is an option for a lot of things, sure. But, taking the example I gave previously, look at a DHCP packet. It's a simple protocol, and rather trivial to implement, except the packets are actually relatively large -- hundreds of bytes, which isn't strictly necessary for the work accomplished, designed in for backward compatibility with legacy protocols that are rarely used anymore, and now just baggage. Nonetheless, required by the standard.
It would take about 1/4 of the 328's RAM to assemble a valid DHCP packet. Keep in mind, you're supposed to renew your lease periodically, so this memory would need to be available while your actual application is running, not just at start-up.
Another example... On my current project (using a Cortex M4F), I'm implementing remote access via telnet. I'd like to provide SSH as well, but can't -- the SSL layer requires a significant amount of memory per connection. It might be possible to squeeze in one encrypted session, but two would be pushing it. That makes it not really worth the trouble.
Using SPI for external memory means you reduce your bandwidth to (at best) 1/8th the access speed of normal memory just by nature of it being a serial protocol. In reality, there will be additional overhead. That might still be enough, technically, but it makes those high clock speeds quite a bit less useful, if most of your time is spent pumping data in and out. Likewise with SD, although with RAM, at least you're not wearing out the flash cells. Nor does it require significant additional code and RAM space to manage the storage.
As westfw said, it's easier on ARM, since at least that memory is just mapped to a specific region in the flat memory model -- it doesn't require any fancy instructions (and thus various acrobatics to pull off in C) -- but you still sacrifice significant pin real-estate. (In my specific case, I would have had to move from a 100-pin package to a 208-pin package to make it work.)
In essence, you can build a very minimal network-enabled device, especially when you offload buffering, socket and ARP tables, etc., to a specialized IC. That route is probably enough for "The Internet of Things" type of stuff, but it's only a glimmer of what it could be. No doubt, just too-high expectations on my part.