본문 바로가기
컴퓨터구조

컴퓨터구조 17주차

by mokhwasomssi 2021. 4. 12.

4/5 월 ~ 4/11 일 : 4시간 11분

 

그동안의 기록을 고려했을 때,

컴구만 쭉 공부하는 건 능률이 좋지 않은 것 같아 다른 과목들과 병행해서 공부하려고 함.

이렇게 주차별로 정리하는 건 이제 힘들 것 같고 중요한 내용이나 포인트가 있을 때 따로 포스팅 할 것이다. 

 

396p - 398p

 

책 설명이 별로 안좋은거 같다. 설명은 많은데 뭔가 큰 그림이 안그려져.

유튜브 강의랑 병행해서 보는 중.


4/7 수 : 2시간 6분
396p - 397p

 

예제 : 캐시 내의 비트

16 KiB의 데이터와 4워드 블록을 갖는 직접 사상 캐시의 구현에 필요한 전체 비트 수는 얼마인가? 단 32비트 주소를 가정하라.

 

답 : 

4워드 블록을 갖는 직접 사상 캐시 → 2^10개의 블록을 갖는다.

 

각 블록은

1. 4x32=128비트의 데이터

2. (32-10-2-2)개 비트의 태그

3. 1 비트의 유효 비트

 

따라서 전체 캐시의 크기는

2^10 x (4 x 32 + (32 - 10 -2 - 2) + 1) = 2^10 x 147 = 18.4 KiB

 

다시 말해서 16 KiB 데이터를 저장하기 위해 18.4 KiB 캐시가 필요하다.

이 캐시에서 캐시의 전체 비트 수는 데이터에 필요한 저장 공간에 비해 약 1.15배 더 크다.


예제 : 다수의 워드를 갖는 캐시 블록에의 주소 사상

16바이트의 블록 크기와 64개 블록으로 구성된 캐시를 고려하자.

바이트 주소 1200이 사상되는 블록 번호는 무엇인가?

 

답 : 

블록은 다음과 같이 구할 수 있다. 

(블록 주소) modulo (캐시 내 블록 수)

 

여기에서 블록 주소는 다음과 같이 구할 수 있다.

바이트 주소 / 블록당 바이트 수

 

이 블록 주소는 다음 두 주소 사이의 모든 주소를 포함하는 블록임을 주목하라

(바이트 주소/ 블록당 바이트 수) x 블록당 바이트 수

~ (바이트 주소/ 블록당 바이트 수) x 블록당 바이트 + (블록당 바이트 수 -1)

 

블록당 바이트 수는 16이므로 바이트 주소 1200은 다음의 블록 주소를 갖는다.

1200 / 16 = 75

 

이는 캐시 블록 번호 (75 modulo 64) = 11에 사상된다.

실제로 이 블록은 1200번지와 1215번지 사이의 모든 바이트를 갖게 된다.


4/9 금 : 2시간 5분 
397p - 398p

 

캐시 이해가 잘 안가...

도서관에서 빌린 책에 캐시 관련된 내용있길래 읽었음.

 

크기가 큰 블록의 공간적 지역성은 실패율을 감소시킨다. 이 때 대개 실패율은 줄어든다.

블록 하나가 캐시 크기의 상당 부분을 차지하도록 블록을 크게 만들면 실패율이 올라갈 수도 있다. 

 

왜냐하면 캐시 내에 존재할 수 있는 전체 블록의 수가 작아져서 블록들 간에 상호 충돌이 생길 수 있기 때문이다.

결과적으로 블록 내의 많은 워드들이 접근되기도 전에 그 블록이 캐시로부터 방출될 수도 있다.

 

블록 크기가 매우 클 경우에는 블록 내 워드 간의 공간적 지역성이 감소하게 된다. 


블록 크기를 늘리는 것과 연관되는 더 심각한 문제는 실패에 따르는 비용이 증가하는 것이다. 

실패 손실은 메모리 계층구조의 다음 하위 계층에서 블록을 가져오고 캐시에 적재하는 데 걸리는 시간에 의해 결정된다. 

 

블록을 가져오는 데 걸리는 시간은 두 부분으로 나누어진다. 

1. 첫 번째 워드를 찾는 데 걸리는 접근 지연과

2. 블록을 이동시키는 데 필요한 전송 시간이다. 

 

메모리 시스템을 변경시키지 않는 한 블록 크기가 늘어날수록 전송시간 - 따라서 실패 손실 - 이 증가한다. 

게다가 실패율의 향상도 블록의 크기가 증가함에 따라 감소하기 시작한다. 

 

결과적으로 실패 손실의 증가가 실패율 감소를 압도하게 되고 캐시의 성능 또한 감소하게 된다. 

 

물론 큰 블록을 보다 효율적으로 전송할 수 있게 메모리를 설계한다면, 블록의 크기를 크게 할 수 있고 캐시의 성능 또한 더 개선할 수 있다.