Chapter 06 메모리와 캐시 메모리
1. RAM의 특징과 종류
Key Word: 휘발성 저장장치 / 비휘발성 저장 장치 / DRAM / SRAM / SDRAM / DDR SDRAM
01장
주기억장치: RAM(메모리) / ROM
RAM의 특징
- 실행할 프로그램의 명령어, 데이터가 저장
- 전원 끄면 RAM에 저장된 명령어와 데이터 모두 날아감
휘발성 저장 장치(volatile memory)
전원을 끄면 저장된 내용이 사라지는 저장 장치
비휘발성 저장 장치(non-volatile memory)
- 전원이 꺼져도 저장된 내용이 유지되는 저장 장치
- 보조기억장치
- ex. 하드 디스크, SSD, CD-ROM, USB 메모리
- CPU는 보조기억장치에 직접 접근 X
- 보관할 대상 -> 보조기억장치인 비휘발성 저장 장치
- 실행할 대상 -> 휘발성 저장 장치인 RAM
=> CPU가 실행하고 싶은 프로그램이 보조기억장치에 있음
-> RAM으로 복사하여 저장한 뒤 실행
RAM의 용량과 성능
- RAM의 용량 ↓ -> 보조기억장치에서 실행할 프로그램을 가져오는 일 ↑ -> 실행 시간 ↑
- RAM의 용량 ↑ -> 보조기억장치에서 ↑ 데이터 가져와 미리 RAM에 저장 O
=> ↑ 프로그램 동시에 빠르게 실행하는 데 유리
보조기억장치: 책장 / RAM: 책상
-> 책상 크다면 책장으로부터 책 ↑ 가져와 여러 권 동시에 읽을 수 있음
=> 책 가지러 왔다 갔다 하는 시간 ↓
But, RAM의 용량 필요 이상으로 ↑ -> 비례하여 프로그램 실행 속도 ↑ (X)
운영체제가 지원 O -> RAM 용량 ↓ -> 보조기억장치를 RAM의 보조 저장공간으로 활용
ex. RAM에 프로그램 A만, 프로그램 B 작동 -> 보조기억장치에 프로그램 A 잠시 내려두고 프로그램 B 실행
RAM의 종류
레지스터(SRAM), 시스템 메모리(DRAM)
DRAM(Dynamic(동적) RAM)
- 저장된 데이터가 동적으로 변하는(사라지는) RAM
- 시간이 지나면 저장된 데이터가 점차 사라지는 RAM
- => 데이터의 소멸 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야 함
- 일반적으로 메모리로써 사용하는 RAM
- (+) 소비 전력 비교적 ↓, 저렴, 집적도 ↑ -> 대용량으로 설계하기 용이
집적도 ↑: 더 작고 빽빽하게 만들 수 있다
SRAM(Static(정적) RAM)
- 저장된 데이터가 변하지 않는 RAM
- 시간이 지나도 저장된 데이터가 사라지지 X
But, 비휘발성 메모리 X, 전원 공급 X -> 저장된 내용 날아감 - 주기적으로 데이터 재활성화할 필요 X
- DRAM보다 일반적으로 속도 ↑(최소 10배 이상 차이)
- 메모리가 아닌 대용량으로 만들어질 필요 X 속도 빨라야 하는 저장 장치
- ex. 캐시 메모리
DRAM | SRAM | |
재충전 | 필요 O | 필요 X |
속도 | ↓ | ↑ |
가격 | 저렴함 | 비쌈 |
집적도 | ↑ | ↓ |
소비 전력 | ↓ | ↑ |
사용 용도 | 주기억장치(RAM) | 캐시 메모리 |
SDRAM(Synchronous DRAM)
- SRAM + DRAM (X) => SRAM과 관계 X
- 클럭 신호와 동기화된, 발전된 형태의 DRAM
- 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있음
- 클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM
DDR SDRAM(Double Data Rate SDRAM) = SDR SDRAM(Single Data Rate SDRAM)
- 가장 흔히 사용되는 RAM
- 대역폭을 넓혀 속도를 빠르게 만든 SDRAM
대역폭(data rate): 데이터를 주고 받는 길의 너비 - 2배의 대역폭 -> 한 클럭당 2번씩 데이터를 CPU와 주고받을 수 있음 => 전송 속도 2배 빠름
- SDRAM: 한 클럭당 1번씩 데이터 주고받음
- DDR2 SDRAM
- DDR SDRAM보다 대역폭 2배 넓음
- SDR SDRAM보다 너비 4배 넓음
- DDR3 SDRAM
- DDR2 SDRAM보다 대역폭 2배 넓음
- SDR SDRAM보다 너비 8배 넓음
- DDR4 SDRAM
- 최근 사용하는 메모리
- SDR SDRAM보다 16배 넓은 대역폭
Q: RAM이 2개일 때 속도 어떻게 향상?
A: CPU와 메모리 연결할 때 선이 2개, 프로그램 1개가 쪼개져서 들어가야 속도가 2배될 조건 충족
선이 1개면 둘 중 1개 선택해서 1 실행 -> 2 실행 or 1 실행 1/2 -> 2 실행 1/2 이러면 속도 향상 X
2. 메모리의 주소 공간
물리 주소/ 논리 주소/ MMU/ 베이스 레지스터/ 한계 레지스터
메모리에 저장된 정보의 위치 -> 주소로 나타낼 수 있음
- 물리 주소: 메모리 하드웨어가 사용하는 주소
- 논리 주소: CPU, 실행 중인 프로그램이 사용하는 주소
물리 주소와 논리 주소
메모리에 저장된 정보 변경(적재, 삭제) = 실행마다 주소 달라짐
-> CPU와 실행 중인 프로그램은 메모리에 몇 번지에 무엇이 저장되어 있는지 다 알지 X
= 논리 주소와 물리 주소로 나눈 이유
물리 주소(physical address)
- 메모리가 사용
- 정보가 실제로 저장된 하드웨어상의 주소
논리 주소(logical address)
- CPU와 실행 중인 프로그램이 사용
- 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소
=> 물리 주소가 아닌 0번지부터 시작하는 자신만을 위한 논리 주소 가지고 있음
= 모든 프로그램은 자신이 0번지부터 시작한다고 생각
물리주소: 1개/ 논리주소: 프로그램마다 각각 가지고 있음
But, CPU가 메모리와 상호작용 -> 논리 주소와 물리 주소 간의 변환 필요
=> 메모리 관리 장치(MMU; Memory Management Unit)이라는 하드웨어에 의해 수행(가속기)
소프트웨어 알고리즘으로 하면 속도 ↓
논리 주소 -> 논리 주소 + 베이스 레지스터 값 -> 물리 주소
- 베이스 레지스터: 프로그램의 가장 작은 물리 주소, 프로그램의 첫 물리 주소를 저장
- 논리 주소: 프로그램의 시작점으로부터 떨어진 거리
메모리 보호 기법
다른 프로그램의 영역 침범 명령어 위험
ex. 베이스 레지스터: 100/ 한계 레지스터: 150
= 물리 주소 시작점: 100번지/ 프로그램 크기(논리 주소의 최대 크기): 150
=> 150번지를 넘는 논리 주소 가질 수 X
한계 레지스터(limit register)
- 논리 주소 범위 벗어나는 명령어 실행 방지
- 한계 레지스터가 저장한 값보다 커서는 안됨
- 실행 중인 프로그램이 다른 프로그램에 영향 X 보호
- 논리 주소의 최대 크기 저장
- 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 값+한계 레지스터 값
3. 캐시 메모리
저장 장치 계층 구조/ 캐시 메모리/ 캐시 적중률/ 참조 지역성의 원리
CPU가 메모리에 접근하는 시간 < CPU의 연산 속도
-> 메모리 접근이 최소화되는 것이 좋음 -> 저장 장치 계층 구조
=> 극복하기 위한 저장장치: 캐시 메모리
저장 장치 계층 구조(Memory hierarchy) = 메모리 계층 구조
ex. CPU 내의 레지스터, 메모리(RAM), USB 메모리 비교
레지스터: CPU와 가까움/ 용량 ↓(vs. RAM)/ 접근 시간 ↑
RAM: USB 메모리보다 CPU와 가까움/ 접근 시간 ↑/ 가격 ↑
=> 가격 ↓ 대용량 저장 장치 -> 속도 ↓/ 속도 ↑ 메모리 -> 용량 ↓, 가격 ↑
=> 1개의 저장 장치만 사용 X 다양한 저장 장치 모두 사용 O
- 컴퓨가 사용하는 저장 장치 -> 'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타냄
- 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조
=> CPU에 가까운 저장 장치(위 계층) -> 빠르고, 용량 ↓, 비쌈
캐시 메모리(Cache memory)
- CPU와 메모리 사이에 위치
- 레지스터보다 용량 ↑, 메모리보다 빠른 SRAM 기반 저장 장치
- CPU의 연산 속도와 메모리 접근 속도 차이 줄이기 위해 탄생
- CPU가 사용할 일부 데이터 미리 캐시 메모리로 가지고 와서 사용
CPU: 집
메모리: 대형 마트(물건 많지만, 집과 멀리 떨어져 있어 왕복 오래 걸림)
캐시 메모리: 편의점(물건 많지 않아도 집과 가까이 있음)
- CPU(코어)와 가까운 순서대로 계층 구성
- 코어 내부: L1(level 1) 캐시, L2(level 2) 캐시 -> 고유한 캐시 메모리로 할당
/ 코어 외부: L3(level 3) 캐시 -> 여러 코어가 공유하는 형태- 캐시 메모리 용량: L1 < L2 < L3
- 속도: L3 < L2 < L1
- 가격: L3 < L2 < L1
- CPU가 메모리 내에 데이터 필요하다고 판단 -> L1 -> L2 -> L3
- 코어 내부: L1(level 1) 캐시, L2(level 2) 캐시 -> 고유한 캐시 메모리로 할당
분리형 캐시(split cache): L1 캐시 => 접근 속도 ↑
- L1I 캐시: 명령어 저장 -> 최소한의 명령어 저장 공간 확보
- L1D 캐시: 데이터 저장
- 캐시 히트(cache hit): 자주 사용될 것으로 예측한 데이터 -> 실제 사용 O
(캐시 메모리 내 데이터가 CPU에서 활용될 경우)- 캐시 적중률(cache hit ratio): 캐시가 히트되는 비율
- $캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)$
- 85~95% 이상
- 캐시 적중률 ↑ -> CPU의 메모리 접근 횟수 ↓
- 캐시 적중률(cache hit ratio): 캐시가 히트되는 비율
- 캐시 미스(cache miss): 예측 틀려 메모리에서 필요한 데이터 직접 가져와야 하는 경우
=> 캐시 미스 발생 ↑ -> 성능 ↓
캐시 메모리 -> 참조 지역성의 원리에 따라 가져올 데이터 결정
참조 지역성 원리(locality of reference, principle of locality)
CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
- 최근에 접근했던 메모리 공간에 다시 접근하려는 경향
- 변수에 값 저장
- 언제든 변수에 접근하여 저장된 값 사용 O = CPU는 변수가 저장된 메모리 공간 언제든 다시 참조 O
- 프로그램이 실행되는 동안 여러 번 사용
= CPU는 최근에 접근했던 (변수가 저장된) 메모리 공간 여러 번 다시 접근 O
=> 시간 지역성(temporal locality)
- 변수에 값 저장
- 접근한 메모리 공간 근처를 접근하려는 경향 => 공간 지역성(spatial locality)
- 하나의 프로그램 내에서도 관련 있는 데이터들은 모여서 저장
=> 캐시 메모리가 잘 작동
출처
'Computer Science > 컴퓨터구조 | 운영체제' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 08 입출력장치 (0) | 2024.01.08 |
---|---|
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 07 보조기억장치 (0) | 2024.01.08 |
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 05 CPU 성능 향상 기법 (0) | 2024.01.08 |
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 04 CPU의 작동 원리 (0) | 2024.01.08 |
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 03 명령어 (0) | 2024.01.05 |