Register variables are a well-known way to get fast access (`register int i`). But why are registers on the top of hierarchy (registers, cache, main memory, secondary memory)? What are all the things that make accessing registers so fast?