6. 메모리와 캐시메모리
1. RAM 의 특징과 종류
RAM 의 특징
휘발성 저장장치 -> CPU 는 보조기억장치에 직접 접근하지 못한다. 그래서 일반적으로 보조기억장치에 보관할 대상을 저장하고, 메모리에 실행할 대상을 저장한다.
RAM 의 용량과 성능
CPU 가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM 으로 가져와야 할 텐데, RAM 용량이 적다면, 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어진다.
용량이 충분히 크다면, 메모리에 많은 데이터를 가져와 미리 RAM 에 저장할 수 있다. -> 많은 프로그램을 동시에 실행시키기에 유리하다.
RAM 의 종류
DRAM(Dynamic RAM)
DRAM 은 시간이 지나면, 저장된 데이터가 점차 사라지는 RAM 이다.
DRAM 은 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장) 해야 한다.
이런 단점에도 불구하고, 우리가 일반적으로 사용하는 RAM 은 DRAM 이다. -> 소비전력이 비교적 낮고, 저렴하고, 집적도가 높다. -> 대용량으로 설계가 용이
SRAM(Static RAM)
SRAM 은 시간이 지나도 저장된 데이터가 사라지지 않는다.
SRAM 은 DRAM 보다 일반적으로 속도도 더 빠르다.
이런 장점에도 불구하고 우리가 일반적으로 사용하는 RAM 은 DRAM 이다. -> 소비전력이 높고, 비싸고, 집적도가 낮다. -> 때문에, 대용량으로 만들 필요는 없지만 속도가 빨라야 하는 저장장치인 캐시 메모리에서 사용된다.
SDRAM(Synchronous Dynamic RAM)
클럭 신호와 동기화 된, 발전된 형태의 DRAM 이다. -> 클럭 타이밍에 맞춰 CPU 와 정보를 주고받을 수 있음을 의미한다.
DDR SDRAM(Double Data Rate SDRAM)
최근 가장 흔하게 사용되는 RAM으로 대역폭을 넓혀 속도를 빠르게 만든 SDRAM 이다. -> 대역폭 : 데이터를 주고받는 길이 너비(대역폭이 넓을수록 주고 받을 수 있는 데이터의 수가 많다)
2. 메모리의 주소 공간
메모리의 주소는 2개의 종류가 있다.(물리 주소, 논리 주소)
물리 주소와 논리 주소
CPU 와 메모리에 저장되어 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못한다. -> 메모리에 저장된 정보는 시시각각 변하기 때문이다.
물리 주소 : 실제로 저장된 하드웨어 상의 주소를 의미한다.
논리 주소 : CPU 와 실행 중인 프로그램이 사용하는 주소를 의미한다.
프로그램마다 같은 논리 주소가 얼마든지 있을 수 있다. -> 말 그대로 절대적인 주소가 아닌, 논리 주소이기 때문이다.
CPU 는 이 논리 주소를 받아들이고, 해석하고, 연산한다.
정리하면, 메모리가 사용하는 주소는 하드웨어 상의 실제 주소인 물리 주소이고, CPU 와 실행 중인 프로그램이 사용하는 주소는 각각에 프로그램에 부여된 논리 주소이다.
하지만, CPU 가 이해하는 주소가 논리 주소라고는 해도, CPU 가 메모리와 상호작용 하려면, 논리 주소와 물리 주소 간의 변환이 이루어져야 한다. (주소 변환이 이루어지지 않는다면, CPU 와 메모리는 서로 이해할 수 없는 주소 체계를 가지고 각자 다른 이야기만 할 뿐 결코 상호작용할 수 없다.
메모리 관리 장치(Memory Management Unit)
CPU 와 주소 버스 사이에 위치해 있으며, 논리 주소와 물리 주소 간의 변환을 담당한다. -> 베이스 레지스터 값에 논리 주소를 연산해 물리 주소에 접근한다.
3. 캐시 메모리
저장 장치 계층 구조
일반적으로 저장 장치는 아래의 명제를 따른다.
'CPU 와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.'
'속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.'
즉, 낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도는 감수해야 하고, 빠른 메모리를 원한다면 작은 용량과 비싼 가격을 감수해야 한다.
컴퓨터가 사용하는 저장 장치들은 CPU 에 얼마나 가까운가 를 기준으로 계층적으로 나타낼 수 있다. -> 이를 저장 장치 계층 구조라고 부른다.
캐시 메모리
CPU 의 연산속도가 아무리 빨라도, 메모리에 접근하는 속도가 그에 따라가지 못한다면 CPU 의 발전은 아무 소용이 없다..
캐시 메모리는 CPU 와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치이다.
캐시 메모리는 CPU 의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생했다. -> CPU 가 매번 메모리를 왔다 갔다 하는 것은 오래 걸리니, 메모리에서 CPU 가 사용할 일부분의 데이터를 미리 캐시 메모리로 가져와 사용한다.
컴퓨터 내부에는 여러 개의 캐시 메모리가 존재하며 코어와 가까운 순서대로 L1, L2, L3 캐시 라고 부른다. -> 일반적으로L1,L2 는 코어 내에 위치하고, L3 는 코어 외부에 존재한다.
참조 지역성 원리
캐시 메모리는 메모리보다 용량이 작습니다. 때문에 메모리의 모든 내용을 가져다 저장할 수는 없습니다. 그렇다면 캐시 메모리에는 무엇을 저장해야 하는가?
보조기억장치는 전원이 꺼져도 기억할 대상을 저장하고, 메모리는 실행 중인 대상을 저장한다면, 캐시 메모리는 CPU 가 사용할 법한 대상을 예측하여 저장한다. -> 캐시 히트 : 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU 에 활용될 때 -> 캐시 미스 : 자주 사용될 것으로 예측해 캐시 메모리를 저장했지만, 예측이 틀려 메모리에서 필요한데이터를 직접 가져와야 하는 경우
우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85~95% 이상이다. -> 캐시 메모리의 이점을 제대로 활용하기 위해서는 캐시 적중률을 높여야만 한다.
참조 지역성 원리 : CPU 가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다. -> 이러한 경향을 시간 지역성이라 부른다.
프로그래밍에서 변수에 값을 저장하고 나면, 언제든 변수에 다시 접근하여 변수에 저장된 값을 사용할 수 있는데, 이는 변수가 저장된 공간을 언제든 다시 참조할 수 있다는 것을 의미한다.
변수가 저장된 값은 일반적으로 한 번만 사용 되지 않고 프로그램이 실행되는 동안 여러 번 사용된다.
접근한 메모리 공간 근처를 접근하려는 경향이 있다. -> 이러한 경향을 공간 지역성이라 부른다.
보통 CPU 가 실행하려는 프로그램은 관련 데이터들끼리 한데 모여 있다.
Last updated