ComputerScience/컴퓨터 구조
[컴퓨터 구조] 메모리와 캐시 메모리
ruu++
2024. 8. 30. 20:04
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글이라는 것을 알립니다!!.
1. RAM
- 램은 컴퓨터가 꺼지면 데이터가 날라가는
휘발성 저장 장치입니다. - CPU는 보조기억장치에 접근하지 못합니다. 그래서 RAM이 보조기억장치에서 복사하여 저장한 뒤 실행합니다.

1.1 RAM의 용량과 성능
- RAM의 용량이 크다면 여러 프로그램을 동시에 실행하는데 유리합니다.
- 램이 작다면 보조기억 장치에 여러번 가져와야 하지만, 램이 크다면 한번에 많이 복사해서 가져올 수 있습니다.
1.2 RAM의 종류
1.2.1 DRAM
- Dynamic RAM의 줄임말입니다. 동적인 메모리를 뜻하며, 데이터가 동적으로 변하고 사라지는 RAM을 뜻합니다.
- DRAM은 일정 시간이 지나면 데이터가 점차 사라집니다.
1.2.2 SRAM
- Static RAM의 줄임말입니다. 저장된 데이터가 변하지 않는 RAM 입니다.
- DRAM과 다르게 시간이 지나도 데이터가 사라지지 않습니다.
- 그렇지만 다른 RAM과 마찬가지로 전원이 공급되지 않으면 데이터는 손실됩니다.
1.2.3 SDRAM
- 클럭 신호와 동기화된 발전된 형태의 DRAM입니다.
- 클럭 타이밍에 맞춰 CPU와 정보를 주고 받습니다
1.2.4 DDR SDRAM
- 현대에서 가장 많이 사용하는 컴퓨터 RAM입니다.
- 대역폭을 넓혀 속도를 빠르게 만든 SDRAM 입니다.
2. 메모리의 주소 공간

2.1.1 물리주소
- 메모리 하드웨어에 저장된 주소를 의미합니다.
- 각 프로그램의 실제 실행되는 메모리 주소의 범위를 뜻하기도 합니다. 게임 3000~ 4999번지, 브라우저 5000번지 ~ 6499번지라고 볼 수 있습니다.
2.1.2 논리주소
- CPU와 실행 중인 프로그램이 사용하는 주소입니다.
- 프로그램 내부의 주소입니다. 물리 주소에서 떨어진 정도를 표현합니다. 만약 게임 프로그램의 시작 점이 3000번지고 브라우저의 시작 점이 5000번지라고 가정했을 때, 둘 다 논리 주소 100을 가질 수 있습니다. 논리 주소 100은 3000번지, 5000번지에서 떨어진 정도를 뜻합니다. 즉, 3100과 5100을 말합니다.
2.1.3 물리 주소와 논리 주소가 존재하는 이유
메모리의 저장된 정보를 시시각각 변하며, 실행중인 프로그램도 시시각각 변합니다. 결국 프로그램은 실행 때마다 적재되는 주소가 달라질 수 있습니다. 2000번지에 적재된 프로그램을 다시 실행하면 3500번에 적재될 수 있다는 이야기입니다.
2.2 MMU
- 실제 메모리에 담을 때
논리 주소를 물리 주소로 변환하는 작업이 필요합니다. - 해당 작업을 MMU(Memory Management Unit) 라는 하드웨어에서 관리합니다.
2.2.1 MMU의 동작
- 베이스 레지스터에
물리주소의 시작번지를 저장합니다. - 적재된 프로그램의 데이터에 베이스 레지스터 + 논리주소를 더한 값으로 주소에 접근할 수 있습니다.
2.2.2 메모리 보호 기법
- 한계 레지스터: 논리 주소가 다른 프로그램의 메모리에 접근하는 것을 막기 위해서
프로그램 논리 레지스터의 범위 값을 지정해줍니다. - 프로그램 내에서 가질 수 있는 논리 주소의 범위는
베이스 레지스터 + 한계 레지스터 미만입니다. - 한계 레지스터보다 높은 범위로 접근하면
인터럽트(트랩) 을 발생시켜 중단합니다.
만약 인터넷 브라우저의 물리 주소가 2000~ 2999번지 이며, 논리주소 1100을 삭제하라고 하면 게임 프로그램의 3100 번지가 삭제되는 문제가 발생할 수 있습니다. 이 것을 대비하기 위한게 한계 레지스터 입니다.
3. 캐시 메모리
- CPU와 메모리 사이에 위치합니다.
- 레지스터보다
용량이 크고메모리보다 빠른 SRAM 기반의 저장 장치입니다.
3.1 저장 장치 계층 구조

- 피라미드 아래로 갈수록 느리며, 용량이 크고 싼 장치들입니다.
3.2 캐시 메모리 종류

캐시메모리는 L1 캐시, L2 캐시, L3 캐시가 있습니다.
- L1: CPU에서 가장 가까운 캐시
- L2: 그 다음 가까운 캐시
- L3: 그 다음으로 가까운 캐시 입니다.
용량은 L3, L2, L1 순으로 크고 속도는 L1, L2, L3 순으로 빠르며, 가격은 L3, L2, L1 순으로 비싸집니다.
3.3 캐시 히트와 캐시 미스
3.3.1 캐시 히트
- CPU가 사용할 법한 데이터를 예측해서 캐시 메모리에 저장합니다.
- 캐시 메모리가 CPU에서 활용된 경우를
캐시 히트라고 합니다.
3.3.2 캐시 미스
- 반대로 사용할 법한 데이터를 예측해서 저장했지만 예측이 틀려 직접 메모리에 접근해서 데이터를 가져오는 경우를
캐시 미스라고 합니다.
3.3.3 캐시 적중률
- 캐시가 히트되는 비율을 캐시 적중률 이라고 합니다.
공식 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)입니다.
3.4 참조 지역성의 원리
- 참조 지역성의 원리는 CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리입니다.
3.4.1 최근에 접근했던 메모리 공간에 다시 접근하려는 경향
- 변수에 값을 저장하면 언제든 다시 변수에 저장된 값을 사용할 수 있습니다.
- 해당 변수는 여러번 사용될 수 있습니다.
- 이런 경우 CPU는 변수가 저장된 공간은 여러번 다시 접근할 수 있습니다.
- 최근에 접근했던 메모리 공간에 다시 접근하려는 경향을
시간 지역성이라고 합니다.
3.4.2 접근한 메모리 공간 근처를 접근하려는 경향
- 하나에 프로그램은 여러 기능과 관련된 데이터가 모여 메모리에 저장됩니다.
- 만약 워드프로세서의 프로그램을 실행한다면 그 안에 동작하면 기능과 관련 데이터 근처를 집중적으로 접근할 것입니다. 이처럼 접근한 메모리 공간 근처를 접근하려는 경향을
공간 지역성라고 합니다.