Hardware Memory Path: From Virtual Address to DRAM, MMIO, and DMA
An interactive map of what can happen after a user instruction touches memory: translation, TLBs, caches, page walks, DRAM, MMIO, PCIe, IOMMU, and DMA.
11 Jun 2026Computer Internals Notes1 min readmedium confidence
Article details
Status
Building Publicly
Subcategory
Memory Path
Last reviewed
26 Aug 2026
This is a teaching map for the path from a user instruction to the machinery that may satisfy the memory access.
The point is to see which structure owns progress at each step.
Memory Sequence
Architecture Model
Demo order: finish the instruction-side fetch and walk, then launch the data-side load path.
Split first-level TLBs with a shared translation fallback tier.
control or request issueaddress translation pathdata return pathactive component for this stepinstalled context or dormant structure
Step 1 / 5
How This Flow Works
Core 0 RIP starts an instruction-side ITLB miss
Core 0 begins at `RIP=0x0000000000001234`: the instruction fetch misses in `ITLB`, walks from `CR3`, pulls the RAM-backed code line into `L1I`, and only then does the decoded `mov rax, [0x0000000000004567]` hand the operand address into the register-side load path.
This frame is still on the instruction side. Core 0 is using `RIP` to fetch and translate the code page before the later data-side load can even exist, so the highlighted walk and fills belong to the code bytes, not yet to the operand payload.
The active walker, `L1I`, shared cache, and DRAM nodes show the instruction line moving upward into the core. Only after decode does the address-generation path hand `0x0000000000004567` into the register block for the later `DTLB` and `L1D` sequence.
Example`RIP = 0x0000000000001234`; `ITLB = miss`
CaveatInstruction bytes and payload bytes are separate flows even when one assembly line triggers both.
Architecture Effect
Parallel workVIPT can start the VA-indexed set probe while the DTLB resolves the PFN.
Serial gateThe PA tag still gates whether the early set probe can retire the load.
This selected model changes the order of cache-index, tag-check, and translation work.