1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/* Author: sappho192 Date: Jan 20, 2015 This program checks the CPU cache and its size in Windows Referred the code from https://github.com/NickStrupat/CacheLineSize */ #include <iostream> using std::cout; using std::endl; #include <stdlib.h> #include <windows.h> int main(void) { BYTE level = 0; DWORD bufferSize = 0; SYSTEM_LOGICAL_PROCESSOR_INFORMATION * buffer = 0; GetLogicalProcessorInformation(0, &bufferSize); buffer = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION *) malloc(bufferSize); GetLogicalProcessorInformation(&buffer[0], &bufferSize); /* Actual code */ BYTE cacheSpecies[5] = {0,}; // To check L1 ~ L4 cache for( DWORD i = 0; i != bufferSize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); i++) { BYTE currentLevel = buffer[i].Cache.Level; if(cacheSpecies[currentLevel] != currentLevel) // To avoid already checked cache level { cout << "CPU has L" << (int)buffer[i].Cache.Level << " Cache" << endl; cacheSpecies[currentLevel] = currentLevel; // Prohibit redundancy } } free(buffer); return 0; } |
Windows 운영체제를 쓰고 있다면 위와 같은 코드를 작성하여 알아낼 수 있습니다. 제 코드에서는 L1, L2, L3 캐시의 존재 여부를 출력해줍니다.
더 자세한 정보를 출력시키고 싶다면 MSDN인 [이곳]과 [이곳]에서 어떤 정보를 더 알아낼 수 있는지 확인하실 수 있습니다.
요샌 L3까진 기본이죠? ^^