I’m sure I have read a presentation somewhere where somebody implemented a Perlin Noise function in a vertex shader with more than 2 octaves of noise. I think it may have been 8 (!)
Have a look at http://graphics.cs.uiuc.edu/~jch/papers/papers.html . There is a paper ‘Perlin Noise Pixel Shaders’.
On Geforce boards the algorithm uses the registercombiners and multiple passes (a lot of!).
On SGI machines it uses PixelTransfer and Pixelmap, which aren’t HW-accelerated on Geforce boards (didn’t tested myself but the author tells so).