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. 블록을 이동시키는 데 필요한 전송 시간이다.
메모리 시스템을 변경시키지 않는 한 블록 크기가 늘어날수록 전송시간 - 따라서 실패 손실 - 이 증가한다.
게다가 실패율의 향상도 블록의 크기가 증가함에 따라 감소하기 시작한다.
결과적으로 실패 손실의 증가가 실패율 감소를 압도하게 되고 캐시의 성능 또한 감소하게 된다.
물론 큰 블록을 보다 효율적으로 전송할 수 있게 메모리를 설계한다면, 블록의 크기를 크게 할 수 있고 캐시의 성능 또한 더 개선할 수 있다.