Skip to main content
386 did have a TLB. INVLPG was new in 486, so in 386 you just reloaded CR3.
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27

(With paging disabled, physical address = linear address. Paging is disabled in real/unreal mode, and is optional in protected mode. Mandatory for long mode. With paging enabled, 32-bit or 64-bit linear addresses are virtual, translated to physical by the page tables, and in 486 and later, by the TLB which is an actual cache of page-table entries (PTEs).)

(With paging disabled, physical address = linear address. Paging is disabled in real/unreal mode, and is optional in protected mode. Mandatory for long mode. With paging enabled, 32-bit or 64-bit linear addresses are virtual, translated to physical by the page tables, and in 486 and later, by the TLB which is an actual cache of page-table entries (PTEs).)

(With paging disabled, physical address = linear address. Paging is disabled in real/unreal mode, and is optional in protected mode. Mandatory for long mode. With paging enabled, 32-bit or 64-bit linear addresses are virtual, translated to physical by the page tables and the TLB which is an actual cache of page-table entries (PTEs).)

added 34 characters in body
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27

Many people (including Intel's documentation) call this a "descriptor cache", but it's not just a cache. It's guaranteed to keep its state, never reloading from a GDT entry that might have changed. Nothing ever invalidates it, only writes a new value. And its value doesn't always come from a descriptor.

Many people call this a "descriptor cache", but it's not just a cache. It's guaranteed to keep its state, never reloading from a GDT entry that might have changed. Nothing ever invalidates it, only writes a new value. And its value doesn't always come from a descriptor.

Many people (including Intel's documentation) call this a "descriptor cache", but it's not just a cache. It's guaranteed to keep its state, never reloading from a GDT entry that might have changed. Nothing ever invalidates it, only writes a new value. And its value doesn't always come from a descriptor.

386 did have a TLB, apparently.
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27

(With paging disabled, physical address = linear address. Paging is disabled in real/unreal mode, and is optional in protected mode. Mandatory for long mode. With paging enabled, 32-bit or 64-bit linear addresses are virtual, translated to physical by the page tables, and in 486 and later, by the TLB which is an actual cache of page-table entries (PTEs). Apparently 386 didn't have a TLB, so every memory access became 3 DRAM accesses when paging was enabled!)

(With paging disabled, physical address = linear address. Paging is disabled in real/unreal mode, and is optional in protected mode. Mandatory for long mode. With paging enabled, 32-bit or 64-bit linear addresses are virtual, translated to physical by the page tables, and in 486 and later, by the TLB which is an actual cache of page-table entries (PTEs). Apparently 386 didn't have a TLB, so every memory access became 3 DRAM accesses when paging was enabled!)

(With paging disabled, physical address = linear address. Paging is disabled in real/unreal mode, and is optional in protected mode. Mandatory for long mode. With paging enabled, 32-bit or 64-bit linear addresses are virtual, translated to physical by the page tables, and in 486 and later, by the TLB which is an actual cache of page-table entries (PTEs).)

Mod Moved Comments To Chat
added 247 characters in body
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading
Having a "descriptor cache" was new with 286, not 386.
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading
added 213 characters in body
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading
Incorporate comments. And ROM only at the top of 4GiB wouldn't allow access to static data or enabling interrupts while still in (un)real mode.
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading
added 54 characters in body
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading
Apparently talking about CS.base for 8086 sounded wrong to some readers.
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading
added 1647 characters in body
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading
Source Link
Peter Cordes
  • 3.6k
  • 18
  • 27
Loading