본문 바로가기
CS/컴퓨터 구조

[Chapter 5.7 컴퓨터 구조 및 설계] 메모리 계층을 위한 공통 구조

by 베어 그릴스 2022. 7. 31.
본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson, 존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다.

 

메모리 계층은 어떤 계층이든 상당 부분 공통점을 갖는다.

 

메모리 계층의 어떤 두 계층 간에도 적용될 수 있는 4가지 질문을 알아보도록 하자.

 

1. 블록을 상위 계층 어디에 위치시킬 수 있는가?


메모리 계층 구조에서 상위 수준에 블록을 위치시키기 위해서는 직접 사상, 집합 연관, 완전 연관 등과 같은 방식을 사용할 수 있다.

 

연관 정도를 늘릴 수록, 고정된 캐시의 크기에서 나타낼 수 있는 블록의 수(인덱스)가 감소하였지만, 그만큼 한 집합에 많은 블록이 있으므로 miss rate가 줄게 되었다.

방식 집합의 수 집합 당 블록 수
직접 사상 캐시의 블록 수 1
집합 사상 캐시 내의 블록 수/ 연관 정도 연관 정도
완전 연관 1 캐시 내 블록 수

연관 정도에 따라 miss rate가 감소한다.

 

 

2. 블록을 어떻게 찾는가?


블록을 어떻게 찾느냐는 블록 배치 방식에 의존한다. 

방식 위치 파악 방법 비교 횟수
직접 사상 인덱스 1
집합 사상 집합 인덱스, 집합 내 모든 원소 비교 연관 정도
완전 연관 모든 엔트리 검색 캐시의 크기

 

즉, 캐시 실패율을 낮추는 대신 검색 비용을 늘릴 것인가, 캐시 실패율을 포기하고 검색 비용을 얻을 것인가 사이에서 좋은 타협점을 찾아야 한다.

 

3. 캐시 실패 시 어느 블록을 교체 시키는가?


캐시가 꽉 차있고, 원하는 데이터가 없는 경우 캐시의 데이터 중 어떤 것을 대체하고 새로운 것을 가져와야한다.

 

  • 직접 사상 - 가져오려는 데이터가 올 수 있는 엔트리가 한 곳으로 고정되어있기 때문에 해당하는 곳에는 블록이 하나 밖에 없기 때문에 해당 블록을 교체할 수 밖에 없다.
  • 집홥연관,완전 연관 - 가져오려는 데이터가 올 수 있는 곳이 연관의 정도와 같기 때문에 만약 집합이 꽉 차있다면, 그 중 하나를 선택해서 대체 하여야 한다.
    • 임의 선택 - 집합 내의 블록 중 아무거나 random 하게 대체 시킨다.
    • LRU - 참조 비트를 사용해 가장 최근에 안쓰인 블록을 대체 시킨다.

 

4. 쓰기 시에 어떤 일이 발생하는가?


  • 즉시 쓰기 - 정보가 캐시 내의 블록과 계층의 하위 수준의 블록 양쪽에 쓰임과 동시에 저장된다. 즉, 캐시에 빠른 속도로 다 쓴 이후에도 하위 계층에 쓰이는 시간 동안 기다려야한다.
  • 나중 쓰기 -  정보가 캐시 내의 블록에 쓰임과 동시에 저장된다. 수정된 블록은 교체될 때만 하위 수준으로 저장된다.

 

나중 쓰기의 장점

  • 각각의 워드는 프로세서에 의해 메인 메모리가 아닌 캐시가 받아들일 수 있는 속도로 쓰인다.
  • 다수의 쓰기가 행해진 블록을 계층의 하위 계층에 한번만 쓰면 된다.
  • 블록들이 하위 수준에 쓰일 때, 전체 블록을 한꺼번에 쓰기 때문에 높은 대역폭을 효과적으로 사용할 수 있다.

즉시 쓰기의 장점

  • 실패가 발생해도 하위 수준에 블록을 쓸 필요가 없으므로 간단하고 비용이 적게 든다.
  • 즉시 쓰기는 나중 쓰기보다 구현이 간ㄴ단하다. 하지만 실제적으로 즉시 쓰기 캐시는 쓰기 버퍼를 요구한다.

 

쓰기 실패의 종류


  • Compulsory misses(필수 실패) - 캐시에 존재하지 않았던 블록에 대한 첫번째 접근에 의한 실패
  • Capacity misses(용량 실패) - 캐시의 한정된 크기 때문에 일어난다. 캐시의 블록이 대체되고 다시 접근하는 방식으로 해결된다.
  • Conflict misses(대립 실패) - 집합 연관이나 직접 사상 캐시에서 다수의 블록들이 하나의 집합에 대해 경쟁을 벌일 때 발생하는 캐시 실패이다.