캐시
RAM에서 미리 사용할 데이터들을 예측해서
CPU에 가까운 캐시에 저장해 둔다
따라서, 데이터를 찾을 때
바로 RAM에서 찾아보는 것이 아닌
캐시를 가서 확인해 보고
캐시에 있는 경우 (캐시 히트)에는 캐시에서 데이터를 찾아온다
캐시 예측 방식
- 시간 지역성
최근에 찾아본 데이터들을 다시 찾을 확률이 높다
- 공간 지역성
찾아본 데이터들 근처의 데이터를 찾을 확률이 높다
CPU의 캐시 활용 실제 코드 예시
#include <windows.h>
int32 buffer[10000][10000];
int main()
{
memset(buffer, 0, sizeof(buffer));
{
uint64 start = GetTickCount64();
int64 sum = 0;
for (int32 i = 0; i < 10000; i++)
{
for (int32 j = 0; j < 10000; j++)
{
sum += buffer[i][j];
}
}
uint64 end = GetTickCount64();
cout << "Elapsed Tick " << (end - start) << endl;
}
{
uint64 start = GetTickCount64();
int64 sum = 0;
for (int32 i = 0; i < 10000; i++)
{
for (int32 j = 0; j < 10000; j++)
{
sum += buffer[j][i];
}
}
uint64 end = GetTickCount64();
cout << "Elapsed Tick " << (end - start) << endl;
}
}
2차원 배열을 순서대로 탐색하는 코드와
띄엄띄엄 탐색하는 코드의 시간을 출력하는 위의 코드를 통해서
캐시 기능을 간접적으로 확인할 수 있다
'게임 서버' 카테고리의 다른 글
[게임서버 섹션2 Note] 메모리 모델 (0) | 2024.12.31 |
---|---|
[게임서버 섹션2 Note] CPU 파이프라인 (0) | 2024.12.30 |
[게임서버 섹션2 Note] Future (0) | 2024.12.30 |
[게임서버 섹션2 Note] Condition Variable (0) | 2024.12.30 |
[게임서버 섹션2 Note] Event (0) | 2024.12.30 |