본문 바로가기

CS/OS

캐시 메모리 에 대한 탐구/캐시 메모리 - 사좋배 공유

1.Cache Memory

빠른 CPU, 느린 memory

프로그램을 CPU 혼자서 수행하는 것이 아니라 메모리도 같이 참여한다. 암달의 법칙을 통해서 CPU 혼자 개선되어야 할 문제가 아니라 메모리도 여기 빨라야 한다는 것도 알게 되었다.

그래서 우리는 메모리에게 아래 3가지 바라는 점을 적어 보았다.

 

1). 빠른 속도 : 캐시 메모리는 일반 메모리보다 빠르다.. 하지만 4GB를 캐시 메모리로 사용하면 가격이 많이 나간다

2). 큰 용량 : 메모리의 용량을 키우면 좋지만 역시 가격이 많이나간다.

3). 저렴한것을 원한다.

 

가격을 비교적 저렴하면서도 속도와 용량을 만족할 수 있게 현대 컴퓨터는 다음과 같은 구조를 갖는다.

 

용량의 Cache< Main Memory < HDD 순이며 속도는 역순이다.

CPU와 메인 메모리 사이에 캐시 메모리를 두어 CPU가 요청하는 것은 빠른 캐시 메모리에서 바로 전달을 해주면서 개선하였다. 그리고 HDD(SDD)의 일부분을 가상메모리로 사용하여 메모리의 부족한 용량을 확장 시켜주며 가격은 메인 메모리 전체를 캐시로 바꾸는 것, 메인메모리의 용량을 키우는 것보다 저렴한 고개 맞춤 서비스가 완성되었다. 이러한 성능 개선의 비결은 참조의 지역성이라는 성질 덕분에 발생한다.

 

Locality of Reference(참조의 지역성)

커피를 자주 마시는 여자친구가 있다. 센스 있는 남자 친구라면 데이트 코스에 꼭 카페를 들려 여자친구와 커피를 마시는 시간을 갖을 것이다. 그리고 카페에서 커피랑 먹으면 맛있는 케이크도 함께 주문하여 건내 줄 것이다. 이처럼 참조의 지역성은 CPU가 한번 참조한 데이터는 다시 참조할 가능성이 높고 주변의 데이터 역시 참조될 가능성이 높다는 이론이다. 따라서 자주 쓰는 데이터를 캐시에 두고 데이터를전달할 때 미리 다음에 받을 데이터 까지 빠른 저장장치에 둔다면 컴퓨터의 성능이 좋아진다.

그리고 비싼 캐시 메모리의 용량이 굳이 크지 않아도 되니까 가격도 비교적 저렴해지는 효과도 발생한다.

 

2.Mapping Function

CPU가 메모리 주소를 사용하여메모리로 데이터를 받을려고 한다. 하지만 CPU가 쓰는 주소는 가상 메모리 주소로 메모리 입장에서는 외계어다.

따라서 중간에 메모리 관리장치(MMU)가 가운데에서 번역을 하여 메모리가 알수 있게 물리 주소로 변환을 해준다.

그리고 캐시에 해당 주소에 대한 데이터가 있는지 확인을 하는데 캐시에 데이터를 저장하는 방식에 따라 물리주소를 다르게 해석을 할 수있다.