C#でCPUのキャッシュ情報を表示する

キャッシュ情報を読み込み表示してみましょう。

using System.Runtime.Intrinsics.X86;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int ecx, nExIds;
            uint id = (uint)0x80000006;

            (nExIds, _, _, _) = X86Base.CpuId(int.MinValue, 0);
            if ((uint)nExIds >= id)
            {
                (_, _, ecx, _) = X86Base.CpuId((int)id, 0);
                var nCacheLineSize = ecx & 0xff;
                var nL2Associativity = (ecx >> 12) & 0xf;
                var nCacheSizeK = (ecx >> 16) & 0xffff;

                Console.WriteLine("Cache Line Size  = {0}", nCacheLineSize);
                Console.WriteLine("L2 Associativity = {0}", nL2Associativity);
                Console.WriteLine("Cache Size       = {0} [Kb]", nCacheSizeK);
            }
        }
    }
}

CPU brand string: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHzで実行した例: