Your problem is that you need to find some asynchronous storage or transmission method. For example in barebones avr, writing to the spi data register initiates a transfer, but you can do other things while you wait ~8 clocks for it to send. Interleaving like this can go quite a long way on 8 bit hardware.
In Arduino, there may be a lot of safety checking and blocking going on. Other chips (eg ARM) can do things like DMA where you can route data from eg a serial port straight into something else.