Using ATTiny84's USI to drive shift registers.

Right now, I'm driving the shift register by toggling having my code enable/disable the clck pin on the shift registers. To achieve the rate I desire, I'm eating up most of the processing time on my 8MHz ATTiny. I'm going to try hooking it up to a 20MHz external crystal, but that is beside the point. If I can offload some of this serial communication, I think I can achieve the rate I want with out the xtal.

I found a tutorial ( which uses the SPI feature of the ATMega168, but the registers don't exist in the ATTiny84's datasheet. My guess is that the USI is practically the same thing, but I don't really know enough about either to translate in my head from one terminology to the other.

Does anyone have any insight that would help?

Thanks, Daniel.