안녕하세요.
ARMv8 아키텍처인 Cortex-A57의 L1 데이터 캐시의 그림에서 cache line이 6 bit라고 되어 있는데, 제가 보기에는 16 bit인 것 같아서요. 혹시 cache line이 6 bit인 이유를 알 수 있을까요?? 만약 cache line이 6 bit가 아니라면 cache capacity도 다시 계산해야 할 것 같습니다.
그림에서 4개의 way를 사용하지만 실제 Cortex-A57 스펙은 L1 데이터 캐시에 2개의 way를 사용합니다.
조금 더 설명을 드리면 L1 캐시 사이즈가 16K(64바이트 캐시 라인을 가진 256개 row) 이며 이러한 것이 2 way로 이루어져 32K가 만들어집니다.
각각의 way는 hw가 항상 full associate 검색을 하므로 주소를 지정할 필요가 없습니다.
결국 주소 비트들과 하나의 16K 캐시 단면(way)만 매치합니다.
각 단면의 주소는 주소 비트들 중 다음과 같은 2개로 그룹을 사용하여 지정할 수 있습니다.
– y축으로 255개의 index set을 지정하기 위해 8개의 비트를 사용합니다.
– x축으로 64개의 byte를 지정하기 위해 6개의 비트를 사용합니다.
안녕하세요.
ARMv8 아키텍처인 Cortex-A57의 L1 데이터 캐시의 그림에서 cache line이 6 bit라고 되어 있는데, 제가 보기에는 16 bit인 것 같아서요. 혹시 cache line이 6 bit인 이유를 알 수 있을까요?? 만약 cache line이 6 bit가 아니라면 cache capacity도 다시 계산해야 할 것 같습니다.
안녕하세요? 그림이 혼동될 수 있어 설명을 더 추가하였습니다.
그림에서 4개의 way를 사용하지만 실제 Cortex-A57 스펙은 L1 데이터 캐시에 2개의 way를 사용합니다.
조금 더 설명을 드리면 L1 캐시 사이즈가 16K(64바이트 캐시 라인을 가진 256개 row) 이며 이러한 것이 2 way로 이루어져 32K가 만들어집니다.
각각의 way는 hw가 항상 full associate 검색을 하므로 주소를 지정할 필요가 없습니다.
결국 주소 비트들과 하나의 16K 캐시 단면(way)만 매치합니다.
각 단면의 주소는 주소 비트들 중 다음과 같은 2개로 그룹을 사용하여 지정할 수 있습니다.
– y축으로 255개의 index set을 지정하기 위해 8개의 비트를 사용합니다.
– x축으로 64개의 byte를 지정하기 위해 6개의 비트를 사용합니다.
감사합니다.