天天看點

Rocket - tilelink - RegionReplicator

https://mp.weixin.qq.com/s/XZVCdt50tM6lavchGm9GRg

  簡單介紹RegionReplicator的實作。   ​

Rocket - tilelink - RegionReplicator

​   1. 基本介紹   根據mask把某一個區域複制成多個區域。複制的數目是mask中比特1的數目的2次幂。   2. RegionReplicator   1) 類參數   ​

Rocket - tilelink - RegionReplicator

​ mask是掩碼,其中的比特1對應的位: a. 在待複制的區域位址的基址中應當為0; b. 在待複制的區域位址的掩碼中應當為0; 如此,根據這些位值的變化,就可以複制出多個區域。   2) diplomacy node   diplomacy node用于與上下遊節點連接配接。   這裡是一個擴充卡節點,主要對向下傳遞的參數進行适配進行适配: ​

Rocket - tilelink - RegionReplicator

​   a. ids   mask中值為1的位,取值為0或1,然後各個位進行組合所得值的集合;   b. managerFn   把下遊節點的manager參數中的每一個位址集合都使用mask進行擴充。 如此向上遊節點顯示的manager參數就從之前的單個區域擴充成了多個區域。   3) lazy module   實作RegionReplicator的内部邏輯: ​

Rocket - tilelink - RegionReplicator

​   1) 成對的輸入邊和輸出邊   ​

Rocket - tilelink - RegionReplicator

​   2) 預設直連   ​

Rocket - tilelink - RegionReplicator

​   3) 适配請求的位址   ​

Rocket - tilelink - RegionReplicator

​ in.a.bits.address是擴充之後的位址,把其中掩碼位對應位的值清0,即可得到擴充前的位址。然後使用這個擴充前的位址向下遊節點發起請求。   4) 不支援Cache   ​

Rocket - tilelink - RegionReplicator

​   這個判斷是要求regionType從UNCACHED/UNCACHEABLE/PUT_EFFECTS/GET_EFFECTS中取值: ​

Rocket - tilelink - RegionReplicator

​   3. HasRegionReplicatorParams   包含一個replicatorMask作為複制時使用的掩碼: ​

Rocket - tilelink - RegionReplicator

​  

轉載于:https://www.cnblogs.com/wjcdx/p/11460969.html