Implement`adv.push_smtset` and `adv.push_smtget`
- 主要语言
- Rust
- 星标
- 772
- 派生
- 352
- 平均合并
- 1 天 7 小时
- 30 天内合并 PR
- 84
描述
Prior to #1215, these instructions worked with the `TieredSmt`. They are currently not used in the `smt` implementation, but could be useful to improve performance.
_Originally posted by @bobbinth in https://github.com/0xPolygonMiden/miden-vm/pull/1215#discussion_r1468429893_
>I would keep them here but remove comments. The reason is that using these instructions we can optimize the implementation further. The way to do it is to pre-load advice info onto the advice stack here so that MASM code needs to do fewer `adv.push_mapvaln` operations (and associated stack manipulations). We can also use this to put binary flags onto the advice stack to flatten control flow a bit.
>
>My rough guess is that by using these techniques we could probably reduce cycle count of `smt::set` by 10% - 20%. The case of `smt::get` is not clear - savings there will probably be pretty small. But we can determine this and act accordingly in another PR.
>
>So, let's create an issue for this.
贡献指南
调研方向
The issue references PR #1215 and the TieredSmt. Start by reviewing that PR's changes to understand the current smt implementation and the removed adv.push_smtset/get instructions. Examine the MASM code for smt::set and smt::get to identify where adv.push_mapvaln operations and stack manipulations occur. The goal is to re-implement these instructions to pre-load advice info, potentially reducing cycle count. Determine the exact performance impact and the required changes to the advice stack handling.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- rust
- 领域
- backend, performance
- Issue 类型
- 功能
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100