What's the difference between SOC and CPU?
SOC die differs from typical CPU die in Intel's chiplet design.
 
What the purpose of "DieIndex"?
We want to have an indication to which exactly die given protocol instance is referring to (in example in multi socket/multi PCH designs).
 
Have you considered to use data fields such as "CONST CHAR8 * DieName, Stepping, Sku" instead of the methods?
Yes, but there might be a configuration where chipset id is going to be changed during the boot. By using methods, we ensure that returned value is correct in every call.

Regards,
Maciej