Debug手记:处理器中断响应Bug
Bug仿真波形如下:
图中观察可以发现,当中断信号到来时,处理器中中断响应组件并未按照期待完成当前指令后将ISP地址填充至PC
可能的bug来源:
1.下一条指令选择器中对等待状态的处理,我们可以考虑让中断来时强行跳转至ISP,但这样不符合我们对处理器行为的期待
2.中断握手流程未考虑到等待状态
查询代码可发现处理器中断处理流程如下:
当复位时清除ISP标志int_service
当中断来临(INT=1且ISP标志=0),保存现场(PC+1/A0A1A2),ISP标志置位
将PC置为ISP地址(在PC_NEXT处实现)
如果返回,清除中断标志位并从RET/RTA寄存器中弹出PC+1/A0A1A2(未在此展示)
看到这里,这里修改代码,通过在进入ISP前检查WAIT状态,仿真故障不再复现
可见,在WAIT状态结束后,正常跳转进入ISP
有奖竞猜:这段中断处理流程的描述中,还有一个Bug,欢迎在评论区中竞猜指出,答对有奖
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |