Altifigence Academy

19 / 24 · 概念

在清除與重設中維持交易計數

區分取消與交付,並將有效狀態與預期佇列對齊。

取消是明確的設計事件

重設將控制返回已知狀態;flush 取消指定的尚未完成工作。只清除資料並不足夠。valid 若仍為高,零可能變成假交易。valid 為零的舊資料位元則無害。清除適當的所有權狀態:單槽緩衝器的 full、FIFO 的 count 與指標,或 FSM 狀態與結果 valid。

我們的同步單時脈契約,規定兩端在重設邊緣不接受也不交付,並在該邊緣取消所有尚未完成的工作。只重設一端,另一端卻將舊 valid 計為交付,便違反此約定。記錄重設範圍與 ready 策略。重設後的新輸入屬於新的交易區間。

事件accepteddeliveredcanceledoutstanding
接受 A,B,C3003
交付 A3102
清除 B,C3120
接受 D4121
交付 D4220

有取消時,使用 accepted-delivered-canceled=outstanding。每筆尚未交付交易恰好取消一次。參考佇列也必須移除已取消工作,同時檢查過期結果不會進入新區間。

外部記憶體請求可能在內部 flush 後仍存在。以世代識別區分遲到回應,或等待舊請求完成再重新開始。過早重用小型世代欄位,可能將舊回應誤認為當前回應。我們的總整實作沒有外部延遲回應,只取消內部緩衝器。

選擇性清除可能保留比分支舊的工作,移除較新的錯誤路徑操作。這需要明確順序與提交規則。無效工作不得更新儲存或參與轉送。測試空、停頓、滿,以及可能同時傳輸期間的重設。只有啟動重設,不會測到尚未完成工作的取消。

自己試試看

接受五筆、交付兩筆,再清除剩餘三筆。接著接受兩筆並交付一筆。求累計 accepted、delivered、canceled 與 outstanding。

查看解說

Accepted=7、delivered=3、canceled=3、outstanding=1。計數關係為 7-3-3=1。已取消項目不是成功交付。

此選擇適用於本瀏覽器,隨時可從頁尾變更。