최신의 프로세서들은 대부분 집합 연관 캐시(Set-associative cache)를 가지고 있습니다. 집합 연관 캐시는 캐시를 다수의 캐시 집합(Cache Set)으로 나누어 관리하며, 캐시 집합은 다시 캐시 웨이(Cache Ways) 또는 캐시 라인(Cache Line)으로 나누어서 관리합니다. 일단 간단한 캐시의 구조부터 보시지요. ^^;;; Michael Schwarz의 논문 Software-based Side-Channel Attacks and Defenses in Restricted Environments에서 가져온 그림입니다.

간단한 캐시의 구조 - 출처:Software-based Side-Channel Attacks and Defenses in Restricted Environments 

위의 그림은 워드(word)가 1바이트인 캐시라고 보시면 됩니다. 그림에 따르면 워드가 1바이트이므로 물리 메모리 주소(Physical Address)의 하위 b 비트가 데이터가 저장되는 위치를 나타내는데 사용될 수 있습니다. 그리고 그 상위의 n 비트는 캐시 집합(Cache set)을 선택하는 용도로 사용되고, 현재 그림에는 2의 n승만큼의 캐시 집합이 존재하는 상태입니다. 마지막으로 상위의 남은 비트는 해시 함수를 통해 어떤 값으로 바뀌는데 이를 태그(Tag)라고 합니다. 태그는 캐시의 웨이 영역에 저장되며, 캐시 교체(Cache Replacement)를 수행할 때 태그 정보와 함께 캐시에 접근한 시간, 횟수 등의 정보를 같이 활용하게 됩니다.

그럼 좋은 하루 되세요 ^^

+ Recent posts