• Tidak ada hasil yang ditemukan

그림 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

를 사용하지 않는 실제 캐시에서의 캐시 요구 량을 구하지 못한 채로 캐시 분할을 하였다

.