I have some questions about the resources shared among logical cores on Skylake processors. I found the Intel manual here: https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimiza...
On page 36, Table 2-5 demonstrates that the ITLB is dynamically partitioned, while all other levels of TLBs are fixed partitioned. As far as I know on Sandy Bridge, the configurations are the opposite, where "the ITLB is partitioned 50/50 statically under HT, DTLB and shared TLB are partitioned on demand, not necessarily 50/50" (https://software.intel.com/en-us/forums/intel-moderncode-for-parallel-architectures/topic/281287).
According to my experiment on I7-6700k (skylake), it is inline with Sandy Bridge. For a brief explanation, I used cpuid to query the number of TLB entries. While HT is enabled, 64/64/1536 entries are available for ITLB/DTLB/STLB respectively; while HT is disabled, 128/64/1536 entries are available.
This really confuses me. Thanks
- Parallel Computing
On Sandy Bridge (and other CPU models beginning at least since Nehalem), only 64 ITLB entries were available with HT disabled. There is more information about TLB changes for Skylake at https://en.wikichip.org/wiki/intel/microarchitectures/skylake . This seems to agree with your finding that the partitioning of TLB other than ITLB wasn't changed, although there are several changes in associativity.
I guess you are talking about Skylake client CPU.