https://mp.weixin.qq.com/s/XZVCdt50tM6lavchGm9GRg
簡單介紹RegionReplicator的實作。

1. 基本介紹 根據mask把某一個區域複制成多個區域。複制的數目是mask中比特1的數目的2次幂。 2. RegionReplicator 1) 類參數
mask是掩碼,其中的比特1對應的位: a. 在待複制的區域位址的基址中應當為0; b. 在待複制的區域位址的掩碼中應當為0; 如此,根據這些位值的變化,就可以複制出多個區域。 2) diplomacy node diplomacy node用于與上下遊節點連接配接。 這裡是一個擴充卡節點,主要對向下傳遞的參數進行适配進行适配:
a. ids mask中值為1的位,取值為0或1,然後各個位進行組合所得值的集合; b. managerFn 把下遊節點的manager參數中的每一個位址集合都使用mask進行擴充。 如此向上遊節點顯示的manager參數就從之前的單個區域擴充成了多個區域。 3) lazy module 實作RegionReplicator的内部邏輯:
1) 成對的輸入邊和輸出邊
2) 預設直連
3) 适配請求的位址
in.a.bits.address是擴充之後的位址,把其中掩碼位對應位的值清0,即可得到擴充前的位址。然後使用這個擴充前的位址向下遊節點發起請求。 4) 不支援Cache
這個判斷是要求regionType從UNCACHED/UNCACHEABLE/PUT_EFFECTS/GET_EFFECTS中取值:
3. HasRegionReplicatorParams 包含一個replicatorMask作為複制時使用的掩碼:
轉載于:https://www.cnblogs.com/wjcdx/p/11460969.html