Better L4 and array storage design
This commit is contained in:
@@ -151,6 +151,24 @@ L4 缓存器是一个纯软件实现的**线程本地数据缓存层**,
|
||||
- 所在热度级别
|
||||
- 单链表的 next 指针
|
||||
|
||||
### 3.5 并发模型
|
||||
|
||||
L4 采用「**部分并发**」设计:
|
||||
|
||||
| 操作 | 执行者 | 并发性 |
|
||||
|---|---|---|
|
||||
| Lookup(Swiss Table 读) | 各工作线程 | ✅ 完全并行 |
|
||||
| Load(Slab分配+插入) | L4 服务线程 | 串行(单消费者) |
|
||||
| Evict(逐出+可选写回) | L4 服务线程 | 串行 |
|
||||
| Flush(dirty批量写回) | MatrixParallelWrap | 计算任务结束后单次执行 |
|
||||
|
||||
**Swiss Table 并发读安全保证**:服务线程插入时遵守严格写顺序:
|
||||
先写 key/value,`sfence`,再写控制字节,确保工作线程
|
||||
读到控制字节时 key/value 已完整可见。
|
||||
|
||||
**热度更新简化**:热度仅在 Load 时由服务线程设置,
|
||||
Lookup 命中时不修改热度,确保 Lookup 路径零写操作。
|
||||
|
||||
---
|
||||
|
||||
## 4. 操作流程
|
||||
|
||||
Reference in New Issue
Block a user