the translation lookaside buffer
/ abbr. TLB, say "T-L-B" /
Picture looking up the same few phone numbers all day in a thick phone book. Flipping the book each time is slow, so you jot your most-used numbers on a small sticky note beside the phone and glance at that first. The TRANSLATION LOOKASIDE BUFFER is exactly that sticky note for memory: a tiny, very fast hardware cache that remembers the most recently used (page number -> frame number) translations, so the CPU usually does not have to flip through the in-memory page table at all.
More precisely, the TLB is a small, fully (or highly) associative hardware cache, typically holding only dozens to a few hundred entries. Each entry stores a page number together with its frame number. On every memory access, the hardware presents the page number to the TLB and ALL entries are compared at once (associative search) in a single cycle. If the page is present — a TLB HIT — the frame number comes straight out and the slow page table is skipped. If it is absent — a TLB MISS — the hardware (or the OS) walks the page table in memory, gets the frame, and loads that translation into the TLB for next time, usually evicting some old entry. Because real programs touch the same pages repeatedly (locality of reference), a small TLB catches the great majority of accesses.
The TLB matters more than almost any other single structure in paging, because without it every memory reference would pay at least one extra memory access to read the page table — effectively doubling memory latency. With a high hit rate the average translation cost falls to nearly nothing. The honest caveats: the TLB is part of the CPU's per-process context, so it must be handled on a context switch (flushed, or tagged with address-space identifiers, otherwise one process would read another's translations); and its small size means programs with poor locality, or huge working sets spread over many pages, can suffer 'TLB thrashing' where misses dominate — one reason huge pages exist.
A program loops over a small array on page 7 a million times. The first access misses the TLB and walks the page table to learn page 7 -> frame 22, storing it in the TLB. The next 999,999 accesses all hit the TLB and get frame 22 instantly, never touching the page table again.
Locality makes a tiny TLB pay off: one miss to learn a translation, then a flood of fast hits.
Without a TLB, every reference through an in-memory page table would take at least two memory accesses. The TLB belongs to the per-process context, so a context switch must flush it or use address-space identifiers, or one process would read another's stale translations.