Chapter 6. 메모리와 캐시 메모리
요약
RAM의 종류에 따른 특징을 알 수 있었고, CPU가 메모리의 프로그램을 어떻게 읽어들이는지 이해할 수 있었다.
내용 정리
06-1. RAM의 특징과 종류
RAM과 보조기억장치
RAM은 휘발성 저장 장치이다.
- 휘발성 저장 장치(volatile memory): 전원을 끄면 저장된 내용이 사라지는 저장 장치
하드디스크나 SSD 등 보조기억장치는 비휘발성 저장 장치이다.
- 비휘발성 저장 장치(non-volatile memory): 전원이 꺼져도 저장된 내용이 유지되는 저장 장치
한편 CPU는 보조기억장치에 직접 접근하지 못한다.
- 따라서 보조기억장치에는 "보관할 대상"을 저장하고, RAM에는 "실행할 대상"을 저장한다.
RAM의 용량
- RAM 용량이 작으면 보조기억장치에 자주 접근해야 하기 때문에 프로그램 실행시간이 길어진다.
- 달리 말하면, RAM 용량이 클 때는 미리 많은 데이터를 RAM에 저장할 수 있기 때문에 보조기억장치에 접근하는 횟수가 줄어든다. 즉, 많은 프로그램을 동시에 빨리 실행하는데 유리하다.
- 한편 RAM 용량이 일정 수준 이상 증가한 이후에는 속도가 용량 증가폭에 비례해 증가하지는 않는다.
RAM의 종류
DRAM(Dynamic RAM)
- 저장된 데이터가 동적으로 변하는 RAM으로 시간이 지나면 데이터가 점차 사라진다.
- 데이터 소멸을 막기 위해서는 일정 주기로 데이터를 다시 저장(재활성화) 해야한다.
- 일반적으로 사용하는 메모리이며 아래의 장점이 있다.
- 소비 전력이 비교적 낮다
- 저렴하다
- 집적도가 높아 대용량으로 설계하기 유리하다.
SRAM(Static RAM)
- 저장된 데이터가 변하지 않는 RAM으로 시간이 지나도 데이터가 유지된다.
- 데이터를 재활성화할 필요가 없다.
- 아래의 장단점으로 캐시 메모리에 주로 사용된다.
- 캐시메모리: 적은 용량이더라도 속도가 빠른게 중요한 저장 장치
- 장점
- DRAM보다 일반적으로 속도가 더 빠르다.
- 단점
- 집적도가 낮다.
- 소비 전력이 크다.
- 가이 더 비싸다.
DRAM과 SRAM 특징 비교
DRAM | SRAM | |
재충전 | 필요 O | 필요 X |
속도 | 느림 | 빠름 |
가격 | 저렴함 | 비쌈 |
집적도 | 높음 | 낮음 |
소비 전력 | 적음 | 높음 |
사용 용도 | 주기억장치(RAM) | 캐시 메모리 |
SDRAM(Synchronous Dynamic RAM)
- DRAM에서 발전된 형태로 클럭 신호와 동기화 돼 있다.
- 클럭에 맞춰 동작하며, 클럭마다 CPU와 정보를 주고 받는 DRAM이다.
DDR SDRAM(Double Data Rate SDRAM)
- 대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다.
- 대역폭(data rate): 데이터를 주고 받는 길의 너비
- 한 클럭에 두 번씩 CPU와 데이터를 주고 받을 수 있어 단일 SDRAM에 비해 속도가 두배가량 빠르다.
- 대역폭 크기에 따라 다른 이름으로 불리기도 한다. 대역폭 수가 늘어날수록 이전 메모리에 비해 2배 넓은 대역폭을 가진다. (DDR4 => SDR보다 2^4배의 대역폭 => 16배)
- SDR SDRAM(Single Data Rate SDRAM): 한 클럭당 하나씩 데이터를 주고 받는 SDRAM
- DDR SDRAM: SDR SDRAM보다 대역폭이 2배 높은 SDRAM
- DDR2 SDRAM
- DDR3 SDRAM
- DDR4 SDRAM: 현재 많이 사용중인 메모리 칩셋으로 SDR SDRAM보다 16배 넓은 대역폭을 가진다.
- DDR5 SDRAM: 가장 최신에 나온 메모리 칩셋으로 DDR4 SDRAM보다 2배, SDR SDRAM에 비해 32배 넓은 대역폭을 가진다.
06-2. 메모리의 주소공간
주소의 한계
CPU는 메모리에서 실행 중인 모든 프로그램들이 메모리 어느 위치에 저장 돼 있는지 알기 어렵다.
- 메모리에 저장된 정보는 시시각각 변하기 때문
- 따라서 CPU가 프로그램을 이해하는 주소와 메모리 실제 주소에는 차이가 있다.
물리 주소와 논리 주소
컴퓨터에서 사용하는 주소는 물리 주소와 논리 주소 두가지가 존재한다.
- 물리 주소(physical address): 정보가 실제로 저장된 하드웨어 상의 주소로 메모리가 사용한다.
- 논리 주소(logical address): 실행 중인 프로그램 각각에게 부여된 주소로 CPU가 프로그램의 실행 위치를 파악할 때 사용한다.
- CPU는 모든 프로그램들의 물리 주소를 이해할 필요가 없다. 각 프로그램은 0번지부터 시작하는 프로그램 내의 주소가 존재한다.
- 즉, 프로그램마다 같은 논리주소가 존재할 수 있다.
논리 주소와 물리 주소의 변환
메모리 관리 장치(Memory Management Unit, MMU): 논리 주소와 물리 주소간 변환을 해주는 장치
- CPU와 주소 버스 사이에 위치한다.
- CPU가 발생 시킨 논리 주소와 베이스 레지스터 값을 더해서 물리 주소로 변환한다.
- ex> 프로그램 A를 실행할 때, 베이스 레지스터에 15000이 저장돼 있고, CPU가 논리주소 100번지 데이터 삭제를 명령하면 MMU는 15000과 100을 더한 15100번지의 데이터를 삭제하게 된다.
베이스 레지스터: 프로그램의 가장 작은 물리 주소를 저장한다.
- 즉, 프로그램이 시작하는 첫 물리 주소를 저장한다.
- 프로그램 논리 주소 0번지의 물리적 위치를 의미한다.
논리 주소: 프로그램의 시작점으로부터 떨어진 거리를 표시한다.
메모리 보호 기법
프로그램 A를 실행할 때, CPU는 프로그램 A의 논리 주소 영역을 벗어나는 곳에 명령을 내려서는 안된다.
- ex> 인터넷 브라우저 논리 주소 영역이 0 ~ 900번지인데, CPU가 인터넷 브라우저 1300번지의 데이터를 삭제하라고 명령하는 경우
- 논리 주소 영역을 벗어난 곳에 명령을 실행하면 다른 프로그램의 영역을 침범해 데이터 손상을 발생시킬 수 있다.
- 따라서 논리 주소 범위를 벗어나는 명령어 실행을 방지하고, 실행 중인 프로그램이 다른 프로그램 영향을 받지 않도록 보호할 방법이 필요하다.
한계 레지스터
- 논리 주소의 최대 크기를 저장하는 레지스터
- CPU 명령이 프로그램 주소 범위를 벗어나는 경우를 방지하는 장치이다.
- CPU가 접근하는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안된다.
- 프로그램 물리 주소의 범위는 베이스 레지스터 값 ~ (베이스 레지스터 값 + 한계 레지스터 값)이 된다.
보호 과정
- CPU는 명령어 실행 전 항상 접근하려는 논리 주소가 한계 레지스터보다 작은지 검사한다.
- CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 할 때는 인터럽트(트랩)을 발생시켜 프로그램 실행을 중단한다.
- 즉, 실행 중인 프로그램의 독립적 실행 공간을 형성하고, 그 범위를 넘거나 침범받지 않도록 보호한다.
06-3. 캐시메모리
저장 장치 계층 구조
저장 장치는 일반적으로 아래의 명제를 따른다.
- CPU와 가까울수록 저장 장치의 속도는 빠르다. 반대로 멀수록 저장 장치는 느리다.
- 속도가 빠른 저장 장치일수록 용량이 작고 가격이 비싸다.
- 저장 장치의 장단점이 명확하기 때문에 컴퓨터는 다양한 저장 장치를 사용한다.
저장 장치는 RAM과 보조 저장 장치 외에도 캐시 메모리가 사용된다.
캐시 메모리
캐시 메모리(cash memory)
- CPU와 메모리 사이에 위치한 저장 장치로 SRAM 기반이다.
- 레지스터 보다 용량이 크며, 메모리보다 빠르다.
- CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이려고 사용된다.
- CPU에서 사용도리 데이터를 미리 캐시 메모리로 가져와 활용한다.
캐시 메모리의 종류
- CPU(코어)와 가까운 순대로 여러 개의 캐시 메모리가 계층을 구성한다.
- L1 (level 1) 캐시: 코어와 가장 가까운 캐시 메모리
- L2 (level 2) 캐시
- L3 (level 3) 캐시
- 일반적으로 L1과 L2는 코어 내부에, L3는 코어 외부에 존재한다.
캐시 메모리별 특징
- L1과 L2 캐시는 코어마다 고유한 캐시 메모리로 할당됨
- L3 캐시는 여러 코어가 하나의 L3를 공유하는 형태로 사용됨
항목 | 비교 |
용량 | L1 < L2 < L3 |
속도 | L1 > L2 > L3 |
가격 | L1 > L2 > L3 |
분리형 캐시(split cache)
- 분리형 캐시: L1 캐시의 접근 속도를 조금이라도 더 빨리 하기 위해 L1 캐시를 아래와 같이 분리하는 것을 의미
- L1I 캐시(Level 1 Instruction): 명령어만을 저장하는 캐시
- L1D 캐시(Level 1 Data): 데이터만 저장하는 캐시
저장 장치 계층 구조(memory hierarchy)
- 컴퓨터가 사용하는 저장 장치들이 "CPU에서 얼마나 가까운가"를 기준으로 계층적으로 나타낸 것
- 여기서 memory는 RAM이 아닌 일반적인 저장 장치를 의미한다.
- 상위 계층으로 갈수록 CPU와 저장 장치간 거리가 가깝고, 하위 계층으로 갈수록 멀어진다.
- 상위 계층과 하위 계층을 이루는 저장 장치의 특징들을 각각 이해하고 차이를 구분할 수 있어야 한다.
참조 지역성 원리
- 캐시 메모리는 CPU가 사용할 법한 대상을 예측해서 저장한다.
예측한 것을 맞췄는지, 틀렸는지에 따라 아래 용어가 사용된다.
- 캐시 히트(cache hit): 자주 사용될 것으로 예측해서 캐시 메모리에 저장한 데이터가 CPU에서 사용된 경우
- 캐시 미스(cache miss): 캐시 메모리에 저장했지만 예측이 틀려 CPU가 메모리에서 필요한 데이터를 가져오는 경우
- 캐시 미스가 자주 발생하면 CPU가 필요한 데이터를 메모리에서 가져오는 경우가 많아지기 때문에 성능이 떨어진다.
- 캐시 적중률(cache hit ratio): 캐시가 히트되는 비율
- 캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
- 일반적으로 컴퓨터의 캐시 적중률은 대략 85~ 95% 이상이다.
- 캐시 메모리의 이점을 제대로 활용하기 위해서는 캐시 적중률을 높이는 것이 중요하다.
- 캐시메모리는 참조 지역성의 원리에 입각해 CPU가 사용할 데이터를 예측한다.
참조 지역성의 원리(locality of reference, principle of locality)
- CPU가 주로 메모리에 접근하는 경향을 바탕으로 만들어진 원리로 아래와 같다.
- CPU는 최근에 접근한 메모리 공간에 다시 접근하는 경향이 있다.
- CPU는 접근한 메모리 공간 근처를 접근하는 경향이 있다.
1. 최근에 접근했던 메모리 공간에 다시 접근하는 경향
- 시간 지역성(temporal locality): 최근에 접근했던 메모리 공간에 다시 접근하려는 경향
- 프로그래밍에서 변수를 저장하고, 변수를 자주 참조하듯이, CPU 역시 최근에 접근한 메모리 공간을 여러번 참조하는 경향이 있다.
2. 접근한 메모리 공간 근처를 접근하는 경향
- 공간 지역성(spatial locality): 접근한 메모리 공간 근처를 접근하는 경향
- 프로그램을 실행하는데 필요한 데이터는 보통 메모리 근처에 모여있는 경향이 있다.
주요 Point
- DRAM(Dynamic RAM) - RAM 메모리에서 자주 쓰인다.
- SRAM(Static RAM) - RAM 메모리에서 자주 쓰인다.
- 레지스터와 캐시메모리의 차이
- 대역폭에 따라 SDR, DDR, DDR2, DDR3, DDR4
'Study > 컴퓨터공학' 카테고리의 다른 글
[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 8 입출력장치 (2) | 2022.11.24 |
---|---|
[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 7 보조기억장치 (0) | 2022.11.20 |
[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 5 CPU 성능 향상 기법 (0) | 2022.11.07 |
[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 CPU의 작동 원리 (0) | 2022.11.02 |
[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 3 명령어 (2) | 2022.10.28 |