• Tidak ada hasil yang ditemukan

희생 블록 전달 조절을 위한 하드웨어

시간 간격마다 캐시 적중

,

캐시 적중 실패

,

캐시 블록 교체 정보를 이용하 여 를 새로 계산한다

.

캐시 적중에 실패하고 보조 태그 디렉토리에 적중했을 경우

,

적중한 블록의 거리값을 저장소에 저장한다

.

희생 블록이 생길 때마다 그 희생블록의 보조 태그 디렉토리에서의 거리 값인 을 저장소에서 읽어온 후 미리 계산된

와 비교한다

.

값이 작은 경우에만 해 당 캐시로 전달한다

.

자세한 알고리즘은

“2.3.6

희생 블록 전달 조절 동 작

에서 설명한다

.

그림 2.13 set 표본

그림

2.13

set

표본 방법이 적용된 캐시의 그림이다

.

예를 위해

16

개 의

set

만을 넣었다

.

모든 캐시의

set

에 보조 태그 디렉토리가 설치된 것이 아니라

0

, 5

, 10,

15

번의

4

set

에만 보조 태그 디렉토리가 설치되 어 과도하게 칩 면적을 차지하는 것을 막았다

.

본 논문에서는

32

개의

set

마다

1

개의 태그 디렉토리를 사용되었다

.

결국 태그 디렉토리가 붙은

set

의 희생 블록의 정보만이 저장 된다

.

그렇기 때문에 태그 디렉토리가 없는

set

의 희생 블록이 생겼을 경 우

,

태그 디렉토리가 붙은

set

의  를 사용할 수 밖에 없 다

.

응용 프로그램 특성상

2

의 배수인 동일한 주소 차이

(stride)

를 가지고 캐시를 접근 하는 경우가 많다

.

이런 경우 캐시

set

을 동일한

set

간격을 두고 접근하게 되며

,

이 간격이 보조 태그 디렉토리가 있는

set

과 겹칠 수 도 있다

.

이 경우 해당 메모리 주소열의 정보만이 보조 태그 디렉토리를 통해 저장되므로

,

그 정보가 캐시를 대표하는 정보를 저장하고 있다고 보 기 힘들다

.

이런 단점을 제거하기 위해

32

개의

set

마다

1

개의 보조 태그 디렉토리를 두되

,

그 위치를

32

개의

set

중에 일정하게 두지 않는다

.

본 논문에서는 처음

32

개의

set

중에는 첫 번째

set

에 보조 태그 디렉토리를

장착했으며

,

다음

32

개의

set

중에는 두 번째

set

에 장착하는 방식으로 보 조 태그 디렉토리 사이의

set

수를

2

의 배수인

32

가 아닌

33

으로 하였다

.

캐시의 각 블록에는 기본 태그와 데이터 정보 뿐 아니라

8

비트의 프로 그램 카운터

(PC, Program Counter)

해시

(hash)

값을 저장한다

.

프로그램 카운터 해시 값은 해당 블록을 접근한 프로그램 카운터의 해시 값이다

.

이 해시 값은 값을 저장소로부터 읽어오기 위해 사용한 다

.

보조 태그 디렉토리가 설치되어 있는

set

의 블록일 경우 희생되어 보 조 태그 디렉토리로 삽입될 때 이 프로그램 카운터 해시 값 또한 같이 이 동한다

.

나중에 보조 태그 디렉토리에서 적중이 일어나  

값을 저장소에 저장할 때 사용한다

.

캐시의 각 블록에는

1

비트의 전달 신호

(flag)

또한 저장한다

.

이 신호 값은 현재 가지고 있는 블록이 다른 블록으로부터 전달된 희생 블록인지 표시한다

.

이 전달 신호가 필요한 이유는 다른 캐시 조각으로 받은 블록 을 다시 전달하지 않기 위함이다

.

또한 다른 캐시 조각으로 받은 블록이 보조 태그 디렉토리에 삽입되지 않게 하기 위해 쓰인다

.

따라서

1MB, 1024 set, 16 way

의 캐시 조각

4

개로 구성된 전용캐시에

,

각 캐시 블록은

9

비트가 추가되며

,

더해지는 총 공간 비용

(space overhead)

72KB

이다

.

보조 태그 디렉토리는 대응되는

set

에서 희생되어 나온 블록을 삽입한 다

.

각 블록마다

16

비트의 태그와

8

비트의 프로그램 카운터 해시로 이루 어진다

.

각각의

set

에 대응되는 보조 태그 디렉토리가 저장할 수 있는 블 록의 수는

48

개이다

.

따라서 보조 태그 디렉토리로 인한 공간 비용은

18KB

이다

.

다음으로

,

을 저장할 공간이 필요하다

.

본 논문에서는 이 공간을 거리 테이블

(distance table)

이라고 명명하였다

.

거리 테이블은

 × 개의 칸으로 이루어진

2

차원

SRAM

구조이며

,

각 칸은

6

비트의 거리 값이다

.

각 차원은 프로그램 카운터 해시 값과 블록 주소의 해시 값 으로 접근하며

,

다음과 같은

XOR

함수를 사용하여

8

비트 해시 값을 구하 였다

.

   ⊕  ⊕  ⊕  

    ⊕  ⊕  ⊕  

따라서 거리 테이블의 총 공간 비용은

192KB

이다

.

그림 2.14 희생 블록 전달 조절 기법의 추가 하드웨어

그림

2.14

는 앞서 설명한 희생 블록 전달 조절 기법을 위한 구조들을 종합한 그림이다

.

이 그림은 하나의 코어에 해당하는 구조들만 표현했으

,

다른 코어에 해당하는

1

단계 캐시와

2

단계 캐시 조각은 동일하기 때 문에 생략하였다

.

아래 표

2.1

은 희생 블록 전달 기법으로 인한 추가 하드웨어 공간 비용 을 정리한 표이다

.

캐시 블록당 추가 용량

,

보조 태그 디렉토리와 거리 테 이블 모두 합쳐서

282KB

의 용량을 차지한다

. 4MB

캐시의 용량은 데이터

4MB

와 태그

128KB

이며

,

추가로 캐시 구현에 따라 사용 비트

(dirty bit),

코어 번호

(core number),

일관성 비트

(coherence bit), LRU

비트 등이 블 록마다 삽입된다

.

따라서 희생 블록 전달 조절에 따른 성능 향상을 생각 한다면

,

캐시 전체의 용량에 비해 희생 블록 전달 비용에 따른 공간 비용 은 크지 않다고 할 수 있다

.

종류 용량

캐시 블록당 추가 용량  ×  ×  ×   

보조 태그 디렉토리  ×  ×  ×   

거리 테이블  ×  ×   

총합    

표 2.1 추가 하드웨어의 공간 비용

여기까지 공간적인 비용을 고려해 보았다

.

하지만 공간적인 비용 뿐 아 니라 시간적인 비용 또한 고려해야 한다

.

거리 테이블은 희생 블록이 발 생한 경우에만 접근되며

,

캐시에서 적중 실패하고 보조 태그 디렉토리에 서 적중한 경우에만 수정된다

.

심지어 보조 태그 디렉토리는 표본

set

에서 만 캐시에서 적중 실패 했을 경우에만 접근하고 변경된다

.

위에서 설명한 희생 블록 전달 조절 알고리즘은 수백 사이클이 걸리는 메모리 접근과 겹 치며 보다 짧은 시간이 걸리기 때문에

,

임계 경로

(critical path)

에 영향을 주지 않으며 또한 캐시 접근 시간에도 영향을 주지 않는다

.

On_Hit function::