그림 3.1 LRU 스택 처리
그림
3.1
은 보조 태그 디렉토리를 사용해 캐시 요구량을 측정하는 예이 다.
왼쪽에는4
웨이 크기의 보조 태그 디렉토리와 각 블록마다 대응되는 카운터가 하나씩 있다.
보조 태그 디렉토리는 메모리 요청을 보고LRU
교체 정책을 사용해 태그 정보를 유지한다.
태그 디렉토리에 적중이 일어 날 때마다 대응하는 카운터가1
씩 증가한다.
프로그램의 실행이 끝난 후 오른쪽 그림과 같은 카운터 결과가 있을 때,
할당된 캐시 사이즈에 따른 캐시 적중과 캐시 적중 실패의 수를 알 수 있다.
캐시 사이즈가1
일때는CTR POS 0
만큼 적중하고 나머지 캐시 접근은 적중 실패한다.
캐시 사이즈가
2
일때는CTR POS 0 + CTR POS 1
만큼 적중하고 나머지 캐시 접근은 적중 실패한다
.
이런 방식으로 카운터를 하나씩 더하면서 캐시 사이즈 에 따른 적중의 수를 알 수 있다.
맨 오른쪽 그림은 반대로 캐시 사이즈 에 따른 적중 실패의 그림이다.
캐시 사이즈가 늘면서 적중 실패가 감소 하는 모습을 볼 수 있다.
보조 태그 디렉토리가 스택에 해당하며
,
이렇게 스택을 가지고 캐시 요 구량을 알아내는 작업을 스택 처리(stack processing)
라고 한다.
위 예에서 처럼LRU
교체 정책을 가지고 스택 처리를 하는 작업을LRU
스택 처리 라고 한다[MGS+70].
하지만
UCP
는LRU
교체 정책만을 사용하고 있으며LRU
교체 정책은 캐시 용량보다 큰 워킹셋을 가질 때 한계를 보인다.
공유 캐시에서는 여러 코어가 캐시 공간을 나누어 사용하기 때문에 캐시 용량보다 큰 워킹셋 을 가질 가능성이 크다
.
따라서UCP
가 큰 워킹셋에 특화된 교체정책까지 사용할 수 있다면 성능향상이 있으리라고 예측할 수 있다.
캐시 공간보다 큰 워킹셋을 위한 교체 정책으로 동적 삽입
(DIP,
Dynaic Insertion Policy)
교체 정책이 있다[QJP+07].
캐시보다 큰 워킹셋이 있을 경우
LRU
교체 정책은 짧은 시간 안에 사용될 블록을 계속 희 생시키기 때문에 많은 캐시 적중 실패가 일어난다.
동적 삽입 정책은 위 와 같은 경우 새로운 블록을 캐시에 삽입할 때MRU
위치가 아닌LRU
위치로 삽입시키거나 우회함으로써 기존 캐시에 있는 블록을 보존하였다.
또한 작은 확률도MRU
위치로 삽입하게 하여 워킹셋의 변화에도 적응하 게 하였다.
하지만 동적 삽입은 단일 코어를 위한 교체 정책이기 때문에 다중 코어를 위한 고려가 없다.
TADIP(Thread-aware DIP)
은 동적 삽입 기법을 다중 코어로 확장 시킨 것이다
.
코어 별로 서로 특성이 다른 워킹셋을 가지기 때문에 다중 코 어에서는 기존 동적 삽입 방법을 이용하면 성능 저하가 있다. TADIP
은 각각 코어별로 워킹셋을 보존할지 결정하여 성능을 향상시켰다[JHQ+08].
하지만
TADIP
은 캐시의 공간 분할에 대한 고려가 없기 때문에 서로 다른 코어의 블록들이 경쟁하여 성능에 나쁜 영향을 끼칠 수 있다
.
PIPP(Promotion Insertion Pseudo Partitioning)
는 캐시 공간을 분할하기 위해 웨이 단위로 캐시를 나누지 않고 새로운 블록을 삽입할 위치를 조정 하여 캐시를 분할하였다.
또한 캐시 적중이 일어난 블록을MRU
위치로 이동하지 않고 한 칸만MRU
방향으로 이동하는 방법을 사용하였다[XL09]. PIPP
는 캐시 분할과 워킹셋의 크기 모두를 고려하였다.
하지만LRU
스택 처리를 사용하여LRU
교체 정책을 사용했을 시의 캐시 요구 량을 구하였기 때문에, LRU
를 사용하지 않는 실제 캐시에서의 캐시 요구 량을 구하지 못한 채로 캐시 분할을 하였다.
Dalam dokumen
저작자표시-비영리-변경금지 2.0 대한민국 이용자는 ... - S-Space
(Halaman 83-87)