0️⃣ 메모리란?
메모리의 사전적 정의는 아래와 같다. 늘 사전적 정의는 이해하기 어렵지만 이렇게 간결한 설명 또한 없다.
데이터나 명령을 비롯하여 컴퓨터 내부에서 계산 처리 한 결과를 기억하는 장치. 주기억 장치와 보조 기억 장치로 나눈다.
좀 더 쉽게 말하자면, "현재 실행되는 프로그램(이하 프로세스)의 명령어와 데이터를 저장하는 부품" 이라고 보면 된다. 즉, 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.
이러한 메모리는 크게 두 가지 종류가 있는데 바로 ROM(Read Only Memory)과 RAM(Random Access Memory)이다. 일반적으로 우리가 부르는 메모리는 RAM이라고 이야기 하는 경우가 대다수긴 하지만 말이다. 본격적으로 RAM에 대해 알아보기 전에 ROM과 RAM의 차이부터 간단히 비교하고 넘어가자.
ROM (Read Only Memory) |
비휘발성 메모리 전원 공급이 끊겨도 데이터가 지워지지 않음 한 번 저장한 데이터를 빠른 속도로 읽어낼 수 있지만 다시 기록할 수는 없음 때문에 불변하는 데이터를 저장할 때 유용 |
RAM (Random Access Memory) |
휘발성 메모리 전원 공급이 끊기면 데이터가 지워짐 전원이 꺼지면 프로세스가 다시 시작될 때까지 빈 값으로 유지 임시 정보를 저장하는 데에 유용 |
1️⃣ RAM에 대해서
우리가 컴퓨터를 구매할 때 가장 중요하게 보는 부품 중 하나가 바로 RAM이다. 램이 몇이냐? 라는 말은 한 번 쯤 질문해보거나 들어보았을 것이다. RAM이 클 수록 좋다, 너무 작은 크기의 RAM은 성능이 좋지 않다 등등의 이유가 있을텐데 일부는 맞고 일부는 틀리다.
RAM은 프로세스의 명령어와 데이터를 저장하고 있기 때문에 CPU가 연산하기 위해 사용하는 장치 중 하나이다. RAM의 크기가 작으면 하나의 데이터를 저장할 수 밖에 없을텐데, CPU의 속도에 비해 RAM은 매우 느리기 때문에 CPU가 RAM이 보조기억장치로부터 데이터를 가져오는 것을 기다릴 수 밖에 없다. 이는 RAM의 용량이 클 수록 프로그램들을 동시에 빠르게 실행할 수 있고 이는 CPU가 동시에 시행할 수 있는 성능을 향상시키는 것을 의미한다.
하지만 왜 이렇게 좋은 장점을 가지고 있음에도 RAM의 용량과 컴퓨터 성능이 비례하지는 않는 것일까? RAM이 일정 크기 이상 커지면 오히려 컴퓨터가 이를 100% 활용하지 못하고 빈 공간이 남기 때문이다.
2️⃣ RAM의 종류
이러한 RAM도 하나만 존재하는 것은 아니다.
1. DRAM (Dynamic RAM)
- DRAM은 저장된 데이터가 동적으로 사라지는 RAM을 의미한다. 시간이 지나면 데이터가 점차 사라지기 때문에 일정 주기로 데이터를 refresh 해줘야 한다.
- 소비전력이 비교적 낮고 저렴하다.
- 집적도가 높아 대용량으로 설계하기가 용이하다.
2. SRAM (Static RAM)
- DRAM은 저장된 데이터가 변하지 않는 것으로 시간이 지나도 사라지지 않는다.
- 소비전력이 높고 값이 비싸다.
- 집적도가 낮아 대용량으로 설계할 필요는 없지만 속도가 빨라야 할 때 사용된다. ex) 캐시메모리
3. SDRAM (Synchronous Dynamic RAM)
- 클럭 신호와 동기화된 RAM으로 클럭 타이밍에 맞춰 CPU와 정보를 주고 받을 수 있다.
4. DDR SDRAM (Double Data Rate SDRAM)
- 최근 가장 흔하게 사용되는 RAM이다.
- 대역폭 (데이터를 주고받는 길의 너비)을 넓혀 속도를 빠르게 만든 SDRAM이다.
- 일반 SDRAM은 1클럭 신호에 1개의 데이터를 주고 받을 수 있지만 DDR SDRAM은 2개의 데이터를 주고 받을 수 있다.
- 1클럭 1데이터를 주고 받는 RAM을 SDR SDRAM (Single Data Rate SDRAM)이라고 부르기도 한다.
- DDR2 SDRAM은 SDR SDRAM보다 4배 넓고 DDR3 SDRAM은 SDR SDRAM보다 8배 넓다. (2의 제곱)
❗ 출처
- 강민철, 혼자 공부하는 컴퓨터구조 + 운영체제, 한빛미디어 (2022)
참고 사이트1 : https://www.guru99.com/ko/difference-between-rom-ram.html
'CS' 카테고리의 다른 글
[얼레벌레 공부하는 CS] 프로세스와 스레드 (1) | 2024.06.03 |
---|---|
[얼레벌레 공부하는 CS] 운영체제 (0) | 2024.05.31 |
[얼레벌레 공부하는 CS] 컴파일 언어와 인터프리터 언어 (0) | 2024.05.13 |
[얼레벌레 공부하는 CS] 2진법과 16진법 (0) | 2024.05.09 |
[얼레벌레 공부하는 CS] 자료구조와 Stack, Queue (2) | 2024.04.24 |