The nonce field of a block header is 4 bytes, so the max nonce is: 4,294,967,295. That could be computed in a few seconds with a reasonable rig (solo mining) or much quicker on large pools. What happens at that point? I assume you'd change the timestamp and start over, but on extremely powerful pools, I'm sure it's feasible to compute all 4,294,967,295 nonces for every second of the timestamp, so what happens in that eventuality?
Changing the timestamp is one way, but the more scalable method is to change the "extraNonce" field of the generation transaction, which changes the block header's Merkle root.