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 가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리

  1. 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다. -> 이러한 경향을 시간 지역성이라 부른다.

  • 프로그래밍에서 변수에 값을 저장하고 나면, 언제든 변수에 다시 접근하여 변수에 저장된 값을 사용할 수 있는데, 이는 변수가 저장된 공간을 언제든 다시 참조할 수 있다는 것을 의미한다.

  • 변수가 저장된 값은 일반적으로 한 번만 사용 되지 않고 프로그램이 실행되는 동안 여러 번 사용된다.

  1. 접근한 메모리 공간 근처를 접근하려는 경향이 있다. -> 이러한 경향을 공간 지역성이라 부른다.

  • 보통 CPU 가 실행하려는 프로그램은 관련 데이터들끼리 한데 모여 있다.

Last updated