11 / 20 · 概念
擴展至 N×N 並計算完成邊緣
將空間尺寸 N 與歸約長度 K 分別參數化。
單元可免費閱讀,註冊課程即可儲存學習進度。
區分空間尺寸與歸約長度
N×N PE 網格產生一個 N×N 輸出分塊。K 是歸約維度,不一定等於 N。N=3、K=5 時,A 為 3×5,B 為 5×3,C 為 3×3。九個 PE 各消費五項,執行四十五次 MAC。N 決定接線與錯時;K 決定累加位元寬度、項目計數與注入期間。
沿用既定慣例:clear 在 E0 前完成,輸入在 E_t 前穩定,MAC 與暫存器轉送於該邊緣發生,且沒有額外乘法器管線。A(i,k) 在 k+i 注入,移動 j 跳。B(k,j) 在 k+j 注入,移動 i 跳。兩者於 k+i+j 抵達 PE(i,j)。
最後一個 PE 在 E_(K+2N−3) 之後完成。包含 E0 計數,共 K+2N−2 個 advance 邊緣。N=K=2 時,最後邊緣編號為三,總數為四。N=3、K=5 時,最後編號為八,總數為九。
將連線與計數器參數化
欄零的 PE,其 A 輸入來自邊界;其他欄則來自左鄰的已暫存 A 輸出。B 對上邊界與上鄰採用類似規則。valid 與 job/k 標籤使用相同連線,全網格共用 clear 與 advance。
要求 N≥1、K≥1、AW≥2W。儲存零到 K 的 count 需要 max(1,ceil(log2(K+1))) 位元。儲存零到 K−1 的 k 標籤需要 max(1,ceil(log2 K)) 位元。K 為二的冪次時,兩種寬度不同;K=1 時避免零寬度宣告。
最後邊界注入發生於 E_(K+N−2),之後有 N−1 個排空邊緣。運算計數不含初始化、記憶體載入與輸出傳輸。有 P 個暫停邊緣時,經過的實體邊緣變為 K+2N−2+P。額外管線級需要新的時序分析。
自己試試看
N=4、K=3 時,求 PE(2,1) 的第一與最後 MAC 邊緣、網格最後邊緣、運算邊緣數,以及兩次暫停下的實體邊緣數。
查看解說
PE(2,1) 在 E3 消費 k0,在 E5 消費 k2。網格於 E8 後完成,需要 E0..E8 共九個 advance 邊緣。兩次暫停使實體邊緣為十一個,不含初始化與輸出傳輸。