Altifigence Academy

19 / 24 · 概念

在清空和复位期间保持事务计数

区分取消与交付,并使有效状态和预期队列一致。

取消是明确的设计事件

复位将控制返回已知状态;清空取消指定的尚未完成工作。只清除数据不够。如果 valid 仍为高,零可能变成虚假事务。valid 为零的旧数据位则无害。应清除相应的所有权状态:单槽缓冲的 full、FIFO 的 count 和指针,或 FSM 状态和结果 valid。

本课程的同步单时钟约定规定,两端在复位时钟沿都不进行接收或交付,并在该沿取消全部未完成工作。只复位一端,而另一端将旧 valid 计为交付,会违反约定。记录复位范围和 ready 策略。复位后的新输入属于新的事务区间。

事件accepteddeliveredcanceledoutstanding
接收 A,B,C3003
交付 A3102
清空 B,C3120
接收 D4121
交付 D4220

存在取消时,应使用 accepted-delivered-canceled=outstanding。每个未交付事务恰好取消一次。参考队列也必须移除已取消的工作,同时检查没有陈旧结果进入新区间。

外部存储器请求可能在内部清空之后仍然存在。应使用代际标识区分迟到响应,或等待旧请求完成后再重新开始。过早复用较小的代际字段,可能把旧响应误认为当前响应。综合项目没有外部延迟响应,只取消内部缓冲。

选择性清空可以保留早于分支的工作,移除较年轻的错误路径操作。这需要明确的顺序和提交规则。无效工作不得更新存储或参与转发。测试空闲、停顿、已满以及可能同时传送时的复位。仅测试启动复位,无法覆盖未完成工作取消。

自己试试

接收五个事务、交付两个,再清空剩余三个。然后接收两个、交付一个。求累计 accepted、delivered、canceled 和 outstanding。

阅读解释

Accepted=7、delivered=3、canceled=3、outstanding=1。计数关系为 7-3-3=1。被取消的数据项不是成功交付。

你的选择适用于此浏览器,可随时在页脚更改。