메모리의 종류와 역할이 무엇일까?
RAM
--
RAM은
주기억장치 중의 하나로 일반적으로 "메모리"라고 지칭하기도 한다.
RAM 특징
- 휘발성 저장 장치
- CPU가 빠르게 접근 가능 (= 빠르게 데이터를 읽고, 쓰기 가능)
- 현재 실행 중인 프로그램의 데이터 및 명령어를 임시로 저장 (= 보조기억장치에서 복사하여 저장)
RAM 용량에 따른 성능 변화
용량이 작음 (하나의 프로그램의 데이터만 담을 수 있을 정도)
- A프로그램을 실행시키기 위해 "보조기억장치"에서 해당 데이터를 "RAM"에 복사
- A프로그램 실행 후 B프로그램을 실행시키기 위해 다시 해당 데이터 "보조기억장치"에서 "RAM"에 복사
- B프로그램 실행 가능 (= A프로그램 실행 불가능)
- 동시에 실행할 수 있는 프로그램의 수 제한
- 프로그램 간의 전환이 느려짐
- 사용 가능한 RAM 용량보다 큰 프로그램이 정상적으로 실행 불가능 or 실행 속도 저하
- 가상 메모리 사용 증가
용량이 넉넉함 (여러 프로그램의 데이터들을 담을 수 있을 정도)
- A프로그램을 실행시키기 위해 "보조기억장치"에서 해당 데이터를 "RAM"에 복사
- B프로그램도 실행시키기 위해 "보조기억장치"에서 해당 데이터를 'RAM"에 복사
- A프로그램과 B프로그램을 동시에 실행 가능
- 동시에 실행할 수 있는 프로그램의 수가 늘어남
- 가상 메모리 사용이 최소화 (하드 드라이브에 대한 의존도 감소, 시스템 속도, 응답성 향상)
- 고사양 작업 처리 가능
RAM의 일반적인 종류
- DRAM
- SRAM
- SDRAM
- DDR SDRAM
DRAM (Dynamic RAM)
저장된 데이터가 동적으로 변하는(사라지는) RAM으로
시간이 지나면 저장된 데이터가 점차 사라진다.
그래서 데이터의 소멸을 막기 위해 주기적으로 데이터를 재활성화(재 저장)해야 한다.
- 소비 전력이 상대적으로 낮음
- 저렴
- 대용량 설계하기 용이
SRAM (Static RAM)
저장된 데이터가 변하지 않는 RAM으로
DRAM과 반대로 시간이 지나도 저장된 데이터는 사라지지 않는다.
DRAM과 달리 주기적으로 데이터를 재활성화할 필요가 없기 때문에 상대적으로 속도가 더 빠르다.
- 소비 전력이 상대적으로 높음
- 비쌈
- 대용량 설계하기 어려움
DRAM & SRAM 비교
DRAM | SRAM | |
재충전 | 필요 | 필요 없음 |
속도 | 느림 | 빠름 |
가격 | 저렴 | 비쌈 |
집적도 | 높음 | 낮음 |
소비 전력 | 적음 | 높음 |
사용 용도 | 주기억장치 (RAM) | 캐시 메모리 |
SDRAM (Synchronous Dynamic RAM)
클럭 신호와 동기화되어 발전된 형태의 DRAM다.
(SRAM과는 전혀 관계 없음)
클럭 신호와 동기화 = 클럭 타이밍에 맞춰 CPU와 정보를 주고받기가 가능
즉, 클럭에 맞춰 동작하며, 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM이다.
DDR SDRAM (Double Data Rate SDRAM)
요즘 가장 흔히 사용되는 RAM으로
대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다.
대역폭 (Data Rate) = 데이터를 주고받는 길(통로)의 너비
즉, 자동차 도로의 1차선, 2차선, 4차선처럼 데이터를 한 클럭에 여러 개를 주고받을 수 있다.
DDR SDRAM = 2차선
DDR2 SDRAM = 4차선
--
메모리의 주소 공간
--
메모리에서 저장된 위치는 주소로 나타낼 수 있다.
이때 주소는 2가지 종류가 있다.
- 물리 주소
- 논리 주소
물리 주소는
실제 메모리(RAM)의 특정 위치를 나타내는 주소다.
즉, 데이터가 실제로 저장된 하드웨어상의 주소를 의미한다.
논리 주소는
프로그램이 실행될 때 생성되는 주소로
CPU의 명령어나 프로세스가 데이터를 참조할 때 사용하는 주소다.
즉, CPU와 실행 중인 프로그램이 사용하는 가상의 주소다.
이 논리 주소는
0번지부터 시작하는 자신만을 위한 가상의 주소로
각 프로그램마다 개별적인 주소를 가지고 있다.
위 그림처럼
물리 주소는 메모리가 사용하는 하드웨어상의 실제 주소를 의미하고
논리 주소는 CPU와 실행 중인 각 프로그램이 사용하는 가상의 주소를 의미한다.
논리 주소는
CPU 내부에 보관하고 있는 것이 아니라
프로그램이 실행 중에 필요한 순간에만 생성 후 바로 사용한다.
CPU는 논리 주소만 이해할 수 있다.
하지만 CPU가 메모리와 상호작용을 하려면
논리 주소와 물리 주소 간의 변환을 해주는 과정이 필요하다.
(논리 주소와 물리 주소가 다르기 때문)
이때 논리 주소와 물리 주소 간의 변환을 해주는 "메모리 관리 장치 (MMU, Memory Management Unit)"이 존재한다.
MMU는
CPU와 주소 버스 사이에서 하드웨어로 존재하며
"베이스 레지스터"를 사용하여 논리 주소와 물리 주소를 서로 변환한다.
MMU는
CPU 외부에 별도의 하드웨어로 존재할 수도 있으며,
CPU 내부에 포함될 수도 있다.
즉, 시스템 설계와 CPU 아키텍처에 따라 다르다.
다만 일반적으로 CPU 내부에 통합되어 있다.
CPU가 요청한 논리 주소와 MMU의 베이스 레지스터의 값을 더하여 물리 주소로 변환한다.
위 그림처럼
만약 CPU가 논리 주소 기준으로 "게임"의 0x0100 주소의 데이터를 지우고 싶다고 접근을 하면
MMU는 해당 주소에 베이스 레지스터의 값을 더하여 물리 주소로 변환 후 접근하게 된다.
즉, MMU의 베이스 레지스터의 값은 프로그램의 첫 물리 주소를 저장한 값이고
논리 주소는 해당 프로그램의 첫 물리 주소(시작점)로부터 떨어진 거리인 것이다.
--
메모리 보호 기법
--
"게임" 프로그램의 논리 주소가 0x000 ~ 0x250라고 가정하자.
이때 만약 CPU가 해당 논리 주소에 벗어나는 0x500을 접근하려고 한다면
해당 논리 주소를 물리 주소로 변환할 때 "게임"프로그램이 아닌 다른 프로그램의 물리 주소에 접근하게 될 것이다.
이러한 상황을 막기 위해 "한계 레지스터(limit register)"라는 레지스터를 제공한다.
한계 레지스터는
실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호해 주는 레지스터로
해당 프로그램의 공간 크기를 가지고 있다.
해당 한계 레지스터는 MMU에 접근하기 전에 검증을 하는 단계로
CPU가 요청한 논리 주소가 해당 프로그램의 크기 안에 포함되는지 검증한 뒤에 MMU로 전달하게 된다.
--
'CS > 컴퓨터 구조' 카테고리의 다른 글
캐시 메모리 (0) | 2024.09.04 |
---|---|
[CPU 성능 향상] ISA (+ CISC, RISC) (0) | 2024.08.28 |
[CPU 성능 향상] 명령어 병렬 처리 기법 (0) | 2024.08.27 |
[CPU 성능 향상] 클럭, 멀티코어, 멀티스레드 (0) | 2024.08.26 |
[CPU 작동 원리] 명령어 사이클과 인터럽트 (0) | 2024.08.25 |