When doing high-performance computing, you need to worry about the CPU cache line size in order to avoid issues like false sharing. But how can you determine the processor's cache size?
GetLogicalProcessorInformation function will give you characteristics of the logical processors in use by the system. You can walk the
SYSTEM_LOGICAL_PROCESSOR_INFORMATION returned by the function looking for entries of type
RelationCache. Each such entry contains a
ProcessorMask which tells you which processor(s) the entry applies to, and in the
CACHE_DESCRIPTOR, it tells you what type of cache is being described and how big the cache line is for that cache.
Windows 7 adds the function
GetLogicalProcessorInformationEx which does the
RelationCache filtering for you.