CS/컴퓨터 구조

[컴퓨터 구조](18)[공간 지역성과 캐시]

황올뱀 2025. 2. 12. 18:50

지역성: 프로그램은 최근에 사용한 주소와 같거나 비슷한 데이터나 명령어를 사용하려는 경향

  • 시간 지역성: 최근에 참조된 데이터는 가까운 미래에 다시 참조될 가능성이 높다
  • 공간 지역성: 어떤 메모리 위치에서 참조된다면 그 주변 메모리를 참조할 가능성이 높다
    예)2x2 int 배열 arr가 있을 때,
    int sum1(*arr){ //행 우선
    	int i, j;
    	int sum = 0;
    	for (i=0; i<2;i++){
        	for (j=0;j<2;j++)
            	sum += arr[i][j];
      }
    
    int sum2(*arr){ //열 우선
    	int i, j;
    	int sum = 0;
    	for (j=0; j<2;j++){
    		for (i=0;i<2;i++)
    			sum += arr[i][j];
    		}
    	}
     이때 sum1은 순차적으로 메모리를 참조 (arr+4*i+j에서 j가 더 자주 바뀜)
    sum2는 왔다갔다 메모리 참조 (arr+4i+j에서 i가 더 자주 바뀜)
    따라서 지역성이 좋은 것은 sum1이고, 실제로 성능도 sum1이 더 좋다.

(컴퓨터 구조 7 참고)
캐시 메모리: 주기억장치보다 빠르게 엑세스 할 수 있는 저장 장치(더 작고 더 빠르고 더 비싸다)
미리 주기억장치에서 쓸만한 데이터들을 읽고 저장해놓음
SRAM기반 저장장치이다
L1, L2, L3 등 보통 한 CPU에 여러개의 캐시가 있다 (그 중 L1이 제일 빠름)

캐시 메모리의 동작: 지역성에 따라 CPU가 쓸만한 것들을 주기억장치에서 찾아와 저장해놓고

  • 만약 CPU가 요청하는 것이 캐시에 있다면?(hit): CPU에게 바로 준다.
  • CPU가 요청하는 것이 캐시에 없다면?(miss): 얼른 요청하는 데이터를 메인 메모리에서 캐시로, 다시 캐시에서 CPU로 데이터 전달
    • 캐시 miss의 종류
      • cold 미스/compulsory 미스: 캐시가 비어있음
      • 충돌 미스: 한 캣에 여러개의 데이터가 들어있음 (충돌해서 이전 데이터 덮어써짐)
      • 용량 미스: 프로그램에 필요한 데이터가 캐시 용량보다 큼
728x90
반응형