WFAA trackback pointer
在 TALCO-WFAA 中,traceback pointer 的形式和 TALCO-XDrop 类似,都是每个格子存一个很小的离散标签/位域,用来记录这个格子的最远 offset 是通过哪种状态和操作得到的。
但因为底层算法是 WFA-Adapt,它的递推状态和 X-Drop 不同,所以指针编码的内容也不同。
1. WFA-Adapt 的状态
WFA-Adapt 支持 affine gap,每个格子 需要维护多个状态:
| 状态 | 含义 |
|---|---|
| 或 | 匹配/错配状态 |
| 插入状态( 中有 gap) | |
| 删除状态( 中有 gap) |
递推公式(论文中的 (4)–(7))大致是:
最终每个格子存的是 ,也就是匹配延伸后的最远 offset。
2. traceback pointer 需要记录什么?
回溯时,从某个格子 出发,需要知道:
- 是从 、 还是 来的?
- 如果是从 来的, 是从 打开 gap,还是从 延长 gap?
- 如果是从 来的, 是从 打开 gap,还是从 延长 gap?
这些信息决定了回溯时:
- 如果来自 ,则这一步是匹配或错配;
- 如果来自 且是打开,则这一步是插入,并且前一步在 ;
- 如果来自 且是延长,则这一步是插入,并且前一步还在 ;
- 同理。
因此,每个格子的 traceback pointer 需要编码:
- X 的来源状态:、、 三选一,约 2 bits;
- 如果来自 I:打开还是延长,1 bit;
- 如果来自 D:打开还是延长,1 bit。
所以,和 TALCO-XDrop 类似,TALCO-WFAA 的 traceback pointer 也是 几个 bit 的位域,概念上是 3–4 bits 左右。具体位宽论文没有明确给出,但结构和 TALCO-XDrop 的 4-bit 指针非常相似,只是状态名称和转移规则换成了 WFA 的 affine gap 递推。
3. 存储形式
在 TALCO-WFAA 硬件中:
- Phase 1 的 compute 模块计算每个格子的 offset 和 traceback pointer;
- 指针存到 SRAM;
- 每个格子对应一个指针,按对角线和分数索引;
- Phase 2 中不再存 traceback pointer,而是用 convergence pointer 替代,convergence pointer 是一个整数,指向 marker 上的格子,需要 位。
所以,TALCO-WFAA 的 traceback pointer 就是:
每个三角矩阵格子一个紧凑的位域标签,编码该格子的最远 offset 是通过错配、插入、删除中的哪一种,以及 gap 是打开还是延长得到的。
它和 TALCO-XDrop 的 4-bit 指针在本质上相同:都是用来在回溯时决定下一步往哪个状态走。