Rewind:用条件分支构建确定性时钟
A Clock Made of Branches

在构建 Rewind 这个确定性虚拟机时,我意识到宿主机的墙钟时间不可靠,因为系统负载和中断会导致时间测量波动。为了解决这个问题,Rewind 引入了两种时钟模式:exit time 和 counter time。前者在系统调用退出时推进,后者则基于 CPU 执行的条件分支数量来计时。通过实验发现,条件分支计数器能更准确地反映程序的实际执行进度,且不受外部中断干扰。这种机制让虚拟机内的时间流逝更加真实,从而更有效地复现那些只在真实硬件上才会出现的并发 bug。
有人说时间是幻觉,我说它只是一个 jnz 计数器。