Skip to main content

4. Scratch、描述符和内存

每个 lane 的 scratch 是私有字节数组,基址由 scratch_lo/hi CSR 提供,u63 是当前帧偏移。编译器以 16-byte 对齐分配 spill 和局部数组,驱动按段元数据分配总 scratch。越界 scratch 访问按 bounds_checked 规则处理并可陷阱。

描述符指针必须满足 udesc4/udesc8 对齐。buffer、sampler 和 image 的 descriptor set 由入口的 u2–u9 和根表解析;全零 descriptor 是 null。null/OOB load 返回全零并可返回 residency code,store/atomic 被丢弃。非一致 descriptor index 必须由编译器用 waterfall(逐 index 设置 EXEC、访问后恢复)实现,以避免不同 lane 观察到不同 descriptor。