We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Dear Supporters, In IHI0050G CHI.G spec Chapter B13.9.3, Addr field width of SNP Flit is defined as Req_Addr_Width - 3, Meantime the Req_Addr_Width allowed range defined as 44 to 52. In IHI0098A CHI C2C spec Chapter B4.2.6, Addr field width of SNP message is defined as 48.
So my question is, when Req_addr_width in CHI been defined as 52, then Addr width of SNP will be defined as 49, but there are only 48 valid bit width in C2C SNP message, How is address transfer implemented from Addr in CHI SNP Flit to C2C SNP message?
Best Regards
Hi Ben,
Just got another question for SNP Address, so when the 48-bit Addr field remapping from C2C SNP message to CHI SNP Flit, since CHI SNP Flit will have 49-bit Addr width when Req_addr_width in CHI been defined as 52, What is the expected remapping behavior?
Best Regards.
Hi Lingfan, this would be:
OnChip.SNP.Addr[48:0] = {C2C.Snoop.Addr[47:0], 1'b0}
I see, So for scenarios where CHI Addr field less than 49-bit (e.g., 48-bit or 47-bit CHI SNP Addr), remapping behavior would be:
49-bit CHI SNP Addr: OnChip.SNP.Addr[48:0] = {C2C.Snoop.Addr[47:0], 1'b0}
48-bit CHI SNP Addr: OnChip.SNP.Addr[47:0] = C2C.Snoop.Addr[47:0]
47-bit CHI SNP Addr: OnChip.SNP.Addr[46:0] = C2C.Snoop.Addr[46:0]
Is that my understanding correct?
There may be some misunderstandings in my previous reply.
My current understanding is as follows:
For Req_Addr_Width = 52, SNP Addr width defined as Req_Addr_width – 3 = 49,
So the mapping between CHI <-> C2C would be:
CHI SNP -> C2C Snoop: C2C.Snoop.Addr[47:0] = CHI.SNP.Addr[48:1];
C2C Snoop -> CHI SNP: CHI.SNP.Addr[48:0] = {C2C.Snoop.Addr[47:0],1’b0];
So For Req_Addr_Width = 51, SNP Addr width defined as 51 – 3 = 48,
CHI SNP -> C2C Snoop: C2C.Snoop.Addr[47:0] = {1’b0,CHI.SNP.Addr[47:1]};
C2C Snoop -> CHI SNP: CHI.SNP.Addr[47:0] = {C2C.Snoop.Addr[46:0],1’b0];
Then For Req_Addr_Width = 50, SNP Addr width defined as 50 – 3 = 47,
CHI SNP -> C2C Snoop: C2C.Snoop.Addr[46:0] = {2’b0,CHI.SNP.Addr[46:1]};
C2C Snoop -> CHI SNP: CHI.SNP.Addr[46:0] = {C2C.Snoop.Addr[45:0],1’b0];
Please help me to confirm whether these mapping relationships are correct or not.
I‘m looking forward to your reply.
Hi Lingfan,
Yes, your calculations look correct to me.
Kind regards,
Ben