Cache – 구성 타입

 

Cache – 구성 타입

캐시 구성 타입에 대해 이해를 하려면 캐시의 구성에 대해서는 미리 알고 있어야 한다. 다음과 같은 단어에 대해 미리 학습이되어 있는 것으로 가정한다.

  • Tag
  • Index Set
  • Cache line
  • Valid bit
  • Dirty Bit
  • Way set-associative

 

다음 그림은 ARMv8 아키텍처인 Cortex-A57의 L1 데이터 캐시를 보여준다.

  • Cache line으로 6비트 즉 64바이트를 사용함을 알 수 있다.
  • Index Set은 8비트이므로 256개의 Row를 지정할 수 있다.
  • Way는 아래 그림에서 겹쳐 보이는 캐시 단면들이다. 4개로 구성되어 있다.
  • 캐시 사이즈
    • 4 way * 128 set * 64 bytes = 32KB
    • Valid bit, Dirty bit, Tagged bit들은 캐시 사이즈 계산에 포함되지 않는다.
  • 캐시 타입은 PIPT 또는 non-aliasing VIPT로 사용된다.

 

캐시 구성 타입

ARMv8 아키텍처의 경우 데이터 및 통합 캐시에는 PIPT 캐시 타입을 사용한다. 명령 캐시의 경우는 다음 중 하나를 선택하여 구성할 수 있다.

  • PIPT
  • VPIPT
  • VIPT
  • IVIPT

 

다음과 같이 캐시 인덱스와 태그를 관리하는 4가지 구성 타입의 캐시가 있다. 각각의 장단점을 알아본다.

1) VIVT(Virtually Indexed Virtually Tagged)

장점

  • fast and low power

단점

  • 가상주소가 태스크별로 겹치므로 태스크 전환 시마다 TLB 캐시를 flush 해야 한다.
  • 최근 cpu에서 거의 사용하지 않는다.

 

ASID and VMID tagged VIVT instruction cache

ARMv7에서는 VIVT 캐시를 명령 캐시에 채용하고 약간 변형하여 사용하는 방법도 있다.

장점

  • VMID, ASID를 추가하여 태스크 전환 시 TLB 캐시를 flush 하지 않고, 필요 시에만 flush를 하므로 유지보수가 줄어듦.

단점

  • 다음과 같은 경우에 약간의 유지 보수를 필요로 한다.
    •  명령이 바뀌는 경우
    • MMU on/off에만 유지보수
    • TTBRn, TTBCR, VTTBR, VTCR등이 바뀌는 경우

 

2) VIPT(Virtually Indexed Physically Tagged)

장점

  • 가상주소가 겹쳐도 물리메모리가 태그되어 비교되므로 MMU 주소변환에서 자유롭다. (완전히 자유롭진 않다)

단점

  • power overhead

 

IVIPT extension

ARMv7 이상의 아키텍처에 명령 캐시만 VIPT로 구현되는 확장 옵션이 있다.

장점

  • 추가된 내용으로 유지보수가 간편해진다.

단점

  • 프로세서간 호환을 위해서는 이 옵션을 사용하면 안된다.

 

3) PIPT(Physically Indexed Physically Tagged)

장점

  • MMU 주소변환에서 완전히 자유롭다.(free synonym)

단점

  • delay and power overhead

 

VPIPT(VMID-aware PIPT)

ARMv8.2 아키텍처에 추가된 타입으로 명령 캐시에 사용할 수 있다.

장점

  • 추가된 내용으로 유지보수가 간편해진다.

단점

  • 프로세서간 호환을 위해서는 이 옵션을 사용하면 안된다.

 

4) PIVT(Physically Indexed Virtually Tagged)

cpu 아키텍처에서 사용하지 않는 타입이다.

 

L1 캐시 + L2 캐시

대부분의 ARM 아키텍처에서 가장 많이 사용하는 캐시 조합 형태와 하이퍼 바이저를 사용하여 두 개의 MMU를 사용하는 상황도 알아본다.

 

L1:VIPT+PIPT, L2:PIPT

  • cpu 마다 크기가 작은 L1 명령 캐시와 데이터 캐시를 배치하고, 크기가 큰 L2 캐시는 통합하여 메모리 직전에 배치한다.
  • L1 명령 캐시에 중간 빠른 VIPT를 채용하고, L1 데이터 캐시와 L2 캐시에는 PIPT를 사용한다.
    • ARMv8.2 아키텍처는 L1 명령 캐시에 VPIPT를 지원한다.

 

하이퍼바이저

다음 그림은 하이퍼바이저를 사용하여 MMU가 한 번 더 변환되는 상태의 주소 변환을 보여준다.

 

참고

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다