分块与页映射Block / page mapping
把逻辑地址或序列块映射到独立分配的物理块。
- 核心约束
- 映射与块的生命周期、引用关系必须一致。
- 适用问题
- 控制连续分配要求、共享块和碎片。
- 边界与取舍
- 存在映射元数据、块内碎片及特定执行内核要求。
常见操作#
h 为映射层级,b 为页 / 块大小;硬件页表与应用层块表是不同实现。
| 操作 | 时间成本 | 条件与说明 |
|---|---|---|
| 通过多级页表翻译地址 | 未命中缓存时 次层级访问 | TLB、页表缓存和大页会改变实际访存次数;缺页处理不在此界内。 |
| 通过已建立块表定位数据 | 先按块号查表,再加块内偏移;表本身可直接索引。 | |
| 分配 / 回收 / 复制块 | 元数据维护 + 可能的数据搬运 | 复制 b 字节块至少要处理相应数据;共享块写入前可能需要写时复制。 |
时间与空间#
- 时间成本
- 翻译、分配、缺页与搬运分别核算
- 空间成本
- 映射表 + 已分配块 + 未用尾部空间
分块使逻辑连续与物理连续分离;分配粒度越大,映射项越少,但尾部浪费可能更多。
工程中的应用#
3 个案例 · 附源码把上下文身份编码进块哈希,让重复请求共享已经计算的 KV cache。
附源码片段 · 缓存与复用
将逻辑连续的 token 缓存映射到分散的物理块,减轻显存碎片与重复存储。
附源码片段 · 内存管理
vLLM V1 每轮分配 token 预算,先继续运行中的请求,再尝试接纳等待者;KV 块不足时抢占请求,把它放回等待队列。
附源码片段 · 调度与资源分配