단순히 SW에서의 메모리보다 전반적인 메모리에 대해서 이해해보자.
Memory / 메모리
메모리란?
메모리란 말 그대로 기억하는 장치를 뜻한다. 무언가 작업을 하는데 있어서 컴퓨터가 처리하기 위해 작업의 내용이나, 결과, 순서, 등 잠시 기억하고 있어야 할 저장공간이 필요하게 되는데, 이때 메모라가 사용된다.
보편적으로 메모리라고하면 매인메모리(주기억장치)를 뜻하는데, 이는 좁은 의미이지 보편적으로 사용되는 말이다. 넓게 사용된다면 메모리는 많은 종류와 용도를 가지게 된다.
주기억장치와 보조기억장치로 보통 나뉘는데
휘발성과 비휘발성 메모리로도 나눌 수 있다.
이처럼 보면 주기억장치 와 휘발성, 보조기억장치와 비휘발성이 같은 집합을 생각할 수 있는데 그렇지 않다.
소프트웨어적 관점과 하드웨어적인 관점에서의 메모리는 조금 다르기 때문에 두 관점에 대해서 간단하게 알고 가보자.
소프트웨어적 관점
소프트웨어적 관점에서는 메모리는 주기억장치(cpu가 처리해야할 정보를 저장하는 곳, 실행 프로그램을 저장하는 곳.)를 메모리 혹은 RAM이라고 한다. 본래의 의미로는 컴퓨터 시스템에무언가 저장하는 공간이다.
RAM은 프로세서처럼 전자소자로 만들어져 잇고 기억할 내용이 전기적 신호로 저장되기 때문에, 하드디스크나 외부 저장장치들을 이용하는 것보도 속도가 훨씬 빠르다. 이런 장점으로 인해서 주기억장치로 사용된다.
RAM에 대해서
컴퓨터에서 어떤 저장장치보다 빠른 주기억장치가 존재하는데, RAM이라고 불린다.
RAM은 Random Access Memory의 약어로 현재 실행 중인 프로그램과 데이터, CPU 가 처리해야할 데이터들을 일시적으로 저장하는 곳이다.

왜 Random Access Memory인가?
바로 빠른 접근을 위해서이다. 주로 Sequential Access는 원하는 메모리까지 순차적으로 접근하게되어 때에 따라서 매우 오래걸린다. 즉, 쉽게보면 속도가 일정하지 않고 평균적으로 메모리량이 N이라면 N/2만큼 소모 되는 것이다. 하지만 Random Access 방식으로 접근한다면 비어있는 메모리를 아무거나 골라서 접근하기 때문에 항상 같은 시간이 소모하게 된다. 빠르면서도 일정한 속도를 유지할 수 있다.
메모리 종류
크게 CPU 캐시, CPU 레지스터, RAM, DISK(SSD), SWAP 메모리, 가상메모리가 존재한다.
1. CPU 캐시
CPU 캐시는 CPU와 RAM 사이에 위치하여 데이터 접근 시간을 단축시키는 역할을 하는 고속의 스토리지(SRAM)이다. 이는 CPU가 자주 사용하는 데이터와 명령어를 저장하고 있어, 다음에 CPU가 해당 데이터나 명령어를 필요로 할 때 더 빠르게 접근할 수 있다.
- 고속 액세스: CPU 캐시는 SRAM으로 구현되며, RAM보다 접근 속도가 매우 빠르다.
- 계층 구조: 캐시는 여러단계(L1,L2,L3...)로 구성되어 있으며, L1이 가장 빠르고 용량이 적으며, L3는 상대적으로 느리지만 용량이 더 크다.
- 데이터 임시 저장: 휘발성 메모리로, 전원이 꺼지면 데이터가 사라짐.
- 자동관리: 캐시의 내용은 운영체제가아닌 CPU 하드웨어에 의해 자동으로 관리된다.
- 지역성의 원리: 프로그램은 시간적 지역성과 공간적 지역성의 원리에 따라 동작하므로, 캐시는 이 원리를 이용해 효율을 극대화한다.
1.1 장점
1. 성능향상: 자주 접근하는 데이터와 명령어를 빠르게 제공함으로써 CPU의 대기시간을 줄이고 전체 시스템의 성능을 향상시킴.
2. 효율적인 데이터 처리: 프로그램 실행 중에 생성되는 대량의 중복 접근을 줄여 데이터 처리 효율을 증가시킴.
1.2 단점
1. 비용: SRAM 기반의 캐시는 DRAM 기반의 주 메모리보다 비용이 매우 많이 든다.
2. 한정된 크기: 캐시는 상대적으로 작은 크기로 설계되어 모든 데이터를 저장할 수 없다.
1.3 사용 에시
- 컴퓨터 게임: 게임 중 CPU는 반복적으로 같은 계산을 수행하는 경우가 많은데 이런 결과를 저장하여 속도를 올려 성능을 향상시킨다.
- 과학적 계산: 대규모 과학적 계산을 수행하는 소프트웨어는 같은 데이터 세트를 여러번 사용하기도하기 때문에, 보관하여 계산 속도와 복잡성을 줄인다.
- 데이터베이스 서버: 데이터 베이스 뭐리 결과는 잠시동안 캐시에 저장되어, 같은 쿼리가 반복될 때 빠른 응답을 가능하게 한다.
2. CPU 레지스터
CPU 레지스터는 컴퓨터 프로세서 내부의 매우 빠른 데이터 저장소(SRAM)로, 현재 실행 중인 연산에 사용되는 데이터와 명령을 임시로 저장한다. 이 레지스터들은 프로세서가 직접 접근할 수 있는 가장 빠른 메모리 형태이다. 레지스터의 값들은 논리적 연산을 하는데도 사용되고 메모리 주소와 프로세스의 스케줄링과도 관련이 깊어 매우 빨라야한다.
- 고속접근: 레지스터는 PCU의 속도에 맞춰 설계되어 있어, 데이터의 읽기와 쓰기가 매우 빠르다.
- 한정된 크기: CPU는 한정된 수의 레지스터를 가지고 있으며, 각각의 명확한 용도와 크기를 가진다.
- 특별한 용도: ㅂ루 레지스터는 특별한 목적을 위해 예약되어 있다. 예를들어, 프로그램 카운터는 다음에 실행할 명령의 주소를 보관하고, 상태 레지스터는 최근 연산의 결과를 나타내는 플래그를 저장한다.
- 임시 데이터 저장: 연산 중간 결과나 중요한 제어 데이터를 저장하는 데 사용된다.
2.1 장점
- 성능 최적화: 레지스터를 통해 CPU는 연산에 필요한 데이터를 즉시 접근할 수 있어 프로세싱 속도가 매우 빨라진다.
- 연산 효율성: 복잡한 명령을 실행할 때 중간 결과를 레지스터에 젖아함으로써 연산 과정을 더 효율적으로 만든다.
2.2 단점
- 제한된 크기: 제한된 수의 레지스터만 사용할 수 있으므로, 프로그램이 더 많은 레지스터를 필요로 할 때 복잡성이 증가할 수 잇다.
- 관리 필요: 프로그래머나 컴파일러는 레지스터 할당을 효율적으로 관리해야 하며, 이는 때때로 복잡한 최적화를 요구한다.
2.3 사용 예시
- 연산수행
- 명령 실행: 프로그램 카운터 레지스터는 다음에 실행될 명령의 주소를 저장하며, 이를 통해 CPU는 실행할 명령의 순서를 알 수 있다.
- 시스템 호출: 응용 프로그램이 운영 체제의 기능을 요청할 때, 필요한 매개변수를 레지스터를 통해 전달할 수 있따.
- 상태 플래그: 연산 결과에 따라 특정 레지스터 내의 플래그가 설정되며, 이를 통해 프로그램은 분기 결정을 내릴 수 있따.
3. 램(RAM)
RAM은 컴퓨터의 주기억장치로 사용되며, 현재 실행중인 프로그램과 프로그램에 의해 처리되는 데이터를 일시적으로 저장하는 역할을 한다. RAM은 휘발성 메모리이기 때문에, 전원이 꺼지면 저장된 데이터가 소실된다.
- 임의 접근: 메모리의 어떤 위치나 동일한 시간 내에 접근할 수 있다는 것을 의미한다. 이는 데이터를 순차적으로 접근하는 것이 아니라 임의의 순서로 접근할 수 있음을 나타낸다.
- 휘발성: RAM은 컴퓨터의 전원이 꺼지면 데이터가 사라지는 휘발성 메모리이다. 이는 컴퓨터가 꺼진 후에 정보가 유지도지 않는다는 것이다.
- 빠른 데이터 전송 속도: RAM은 데이터를 빠르게 읽고 쓸 수 있어서, CPU가 필요로 하는 속도로 데이터를 처리할 수 있또록 한다.
- 동적인 데이터 저장: 실행 중인 프로그램은 계속해서 RAM에 데이터를 쓰고 읽으며, 이는 시스템이 켜져 있는 동안 계속해서 변화한다.
3.1 장점
- 빠른 속도: 데이터를 매우 빠르게 읽고 쓸 수 있어, 프로그램의 실행 속도를 향상시킬 수 있다.
- 직접 접근: CPU는 RAM내의 데이터에 직접적으로 접근할 수 있으며, 이는 시스템의 효율성과 반응 속도를 증가시킨다.
3.2 단점
- 휘발성: 전원이 꺼지면 데이터 유지가 안되어 장기적인 저장이 불가능함.
- 비용: RAM은 하드드라이브나 SSD같은 다른 형태의 저장 매체보다 비교적 비용이 더 많이 든다.
3.3 사용 예시
- 운영체제
- 애플리케이션 실행
- 멀티 태스킹
- 데이터 처리
4. 디스크(SSD)
ROM의 일종인 Memory이다.
SSD뿐만아니라 과거에는 HDD를 사용했다. 디스크는 다른 특징과 장단점 보다 무엇인지만 알고 넘어가자.
자기디스크를 활용한 HDD는 파일을 읽고 사용하는데 있어서 기계적인 장치를 사용하기 때문에 SSD나 RAM에 비해서 상대적으로 많이 느리다. HDD는 대용량 데이터를 저장하고 보관하는데 있어서 비용이 저렴하기 때문에 적합하한 위부 충격에는 취약하다.
SSD는 플래시 메모리 칩을 사용하여 전기적 접근을 가능하게 하여 매우 빠른 시간을 제공한다. 충격에도 강하고 플레시기반 메모리는 전류가 흐르지 않아도 데이터가 날아가지 않는다. 대신 HDD에 비해서 비싸다.
5. SWAP 메모리
스왑 메모리는 컴퓨터 시스템의 주 메모리(RAM)이 부족할 때, 하드 드라이브의 일부 공간을 가상 메모리로 사용하는 기술이다. 이 과정에서 운영 체제는 RAM에서 사용되지 않는 페이지를 스왑 공간으로 옮겨내어, RAM을 비워 새로운 작업에 사용할 수 있게 한다.
- 가상 메모리 확장: 스왑은 시스템의 가상 메모리 공간을 확장하고, 물리적 RAM이 부족할 때 시스템의 메모리를 효율적으로 사용할 수 있게 한다.
- 디스크 기반: 스왑 메모리는 HDD 또는 SSD와 같은 보조 저장 장치에 위치한다. 이는 RAM보다 접근 속도가 느리지만, 비휘발성이라는 장점이 있다.
- 페이지 교체 알고리즘: 운영 체제는 특정 알고리즘(LRU, FIFO 등)을 사용하여 어떤 메모리 페이지를 스왑 아웃할지 결정한다.
- 시스템 성능에 영향: 스오바을 많이 사용하게 되면 디스크I/O가 증가하여 시스템의 성능이 저하될 수 있다.
5.1 장점
- 메모리 활용 최적화: 스왑 메모리를 사용함으로써 RAM을 보다 효율적으로 활용할 수 있다.
- 비용 절감: 물리적 메모리를 추가하는 것보다 비용이 적게 들며, 기존 시스템에서 메모리를 확장할 수 있는 간단한 방법을 제공한다.
- 프로그램 실행 지원: RAM의 크기게 제한받지 않고 더많은 프로그램을 실행할 수 있게 한다.
5.2 단점
- 속도 저하: 스왑 메모리는 물리적 메모리보다 접근 속도가 느리므로, 스왑을 많이 사용하면 시스템의 성능이 눈에 띄게 저하될 수 있ㄷ.
- 디스크 마모 or 수명 단축: 특히 SSD의 경우, 지속적인 쓰기 작업으로 인해 드라이브의 수명이 단축될 수 있다.
5.3 사용 예시
- 멀티태스킹 환경
- 리스소 집약적 작업
- 저메모리 시스템
6. 가상 메모리
가상 메모리는 컴퓨터의 운영 체제가 물맂거 메모리(RAM)을 보다 효율적으로 사용하도록 확장하는 기술이다.
이 이스템은 물리적 메모리의 크기를 초과하는 프로그램이 실행될 수 있게 해주고, 실제 물리적 메모리보다 더 큰 메모리 주소 공간을 프로그램에 제공하는 것처럼 보이게 한다.
- 페이지화: 가상 메모리 시스템은 물리적 메모릴르 페이지라고 하는 고정 크기의 블록으로 나눈다. 동일한 크기의 페이지로 가상 주소 공간도 나누어져 있고, 이를 통해 프로그램은 연속적이지 않은 메모리 공간을 사용할 수 있게 된다.
- 스왑: 사용 중이지 않는 페이지는 스왑공간(하드 드라이브나, SSD에 위치한)으로 이동되어 저장된다. 필요할 때 이 페이지들은 다시 물맂거 메모리로 불러와진다.
- 가상 주소 공간: 각 프로그램은 자신만의 가상 주소 공간을 가지며, 이는 실제 물리적 주소와는 독립적이다. 운영 체제의 메모리 관리자가 가상 주소를 물맂거 주소로 매핑한다.
- 메모리 보호: 가사 ㅇ메모리는 각 프로그램이 다른 프로그램의 메모리 공간에 무단으로 접근하는 것을 방지함으로써 메모리 보호 기능을 제공한다.
6.1 장점
- 메모리 확장: 프로그램은 실제로 가용한 물리적 메모리보다 더 큰 메모리 공간을 사용할 수 있다.
- 자원 공유: 프로게스 간에 메모리 자원을 공유할 수 있게 해주며, 이를 통해 프로세스 간 통신이 요이해진다.
- 멀티태스킹 향상: 여러 프로그램이 동시에 실행되는 환경에서 각 프로그램에 충분한 메모리 공간을 제공하여 멀티태스킹 성능을 개선한다.
6.2 단점
- 성능 저하: 스왑 작업으로 인해 빈번한 디스크I/O가 발생하면 시스템의 성능이 저하될 수 있다.
- 디스크 사용: 스왑 공간을 일반적으로 HDD나 SDD에 위치하기 때문에, 이들 스토리지의 수명이 단축될 수 있다.
6.3 사용예시
하드웨어적 관점
RAM의 종류
RAM의 종류는 1. DRAM, 2. SRAM, 3. SDRAM, 4. DDR SDRAM이 있다.
1. DRAM
DRAM은 Dynamic Random Access Memory로,
저장된 데이터가 동적으로 사라지는 RAM을 의미한다.
(시간이 지난다면 사라진다는 뜻)
- 작동 구조 : 각 비트를 캐패시터에 저장하는데, 캐패시터는 전하를 축적하여 전하의 유무로 0과 1로 상태를 나타내는데, 시간이 지나면 전하를 잃어버린다. 때문에 메모리 컨트롤러는 주기적으로 DRAM의 상태를 확인하여 전압작용으로 캐패시터의 충전 상태를 복원(refresh)한다.
- 속도와 밀도: DRAM은 빠른 액세스 속도를 제공한다. 비교적 높은 밀도로 제작될 수 있기 때문에 많은 양의 데이터를 저장할 수 있다. ( 개별 셀이 차지하는 공간이 작기 때문에 가능하다고 한다. )
/* 개별 셀: 트랜지스터 + 캐패시터/
- 비용 효율성: DRAM은 제조 비용이 상대적으로 저렴하다. 때문에 대량의 메모리를 필요로 하는 컴퓨터 시스템에 많이 사용된다.
- 전력 소모 : 지속적인 새로 곷미이 필요하기 때문에 DRAM은 SRAM보다 더 많은 전력을 소비한다.
SRAM은 새로고침이 없는 대신, 더 많은 트랜지스터를 사용하여 각 비트를 저장하므로 비용과 공간 면에서는 비효율적이다.
- 사용 예시: 컴퓨터의 주 메모리로 사용, 운영 체제, 응용 프로그램 및 현재 작업 중인 데이터를 저장하는데 사용된다.
2. SRAM
SRAM은 Static Random Access Memory로,
DRAM과 달리 refresh 과정이 필요없고 전원만 꺼지지 않는다면 데이터가 사라지지 않고 일반적으로 DRAM보다 높은 성능을 가진다.
- 구조: SRAM은 한 비트를 저장하기 위해 4~6개의 틀랜지스터를 사용한다. 때로 추가적인 소자가 필요하면 더 사용한다. 이러한 구조는 데이터 셀을 안정적으로 유지가 가능하고 refresh가 없이 데이터를 정적으로 저장할 수 있다.
- 속도: SRAM은 DRAM에 비해 접근 속도가 빠르다는 장점이 있다. 고성능 컴퓨팅 시스템에서 캐시 메모리의 용도로 사용된다.
- 전력 소모: 새로고침이 필요 없기 때문에 DRAM보다 전력소모가 적다.(대기모드 기준) 하지만 작동 모드에서는 더 많은 트랜지스터를 사용하기 때문에 전력소모가 클 수 있다.
- 비용 밀도: DRAM보다 비용이 더 많이 들고, 한정된 공간에서 더 적은 데이털르 저장할 수 있는 밀도를 가지고 있다. 이러한 이유로 SRAM은 시스템 내에서 제한된 용도로 사용된다. 주로 캐시 메모리 같은 고속으로 접근해야하는 분야에 적합함.
- 안정성: DRAM보다 데이터 저장이 더 안정적이다. 전원이 공급되는 동안에는 데이터가 쉽게 손실되지 않고, 이로 인해 고성능 컴퓨팅 환경에 적합함.
- 사용 예시:주로 CPU 캐시 메모리, 라우터의 라우팅 테이블, 하드웨어 등록부 등
속도가 중요하고, 지속적인 데이터 새로 고침으로 인한 지연이 허용되지 않는 응용 분야에 사용된다.
3. SDRAM
SDRAM은 Synchronous Dynamic Randome Access Memory로,
동기식 메모리의 한 형태이다. 시스템의 클록 신호화 동기화되어 작동하는 DRAM으로, 기존 비동기 DRAM에 비해 상당한 성능 향상을 제공한다.
- 동기식 작동: 시스템의 클록과 동기화되어 작동하기 때무넹, 메모리 엑세스 시간을 예측할 수 있고 이에 최적화 할 수 있다. 이는 데이터의 전송 속도를 향상시키고 전체적인 시스템 성능을 개선한다.
- 버스트 전송: 한번의 클록 사이클에 여러 비트의 데이터를 순차적으로 전소에할 수 있는
버스트모드를 지원한다. 이를 통해 메모리와 프로세서 간의 데이터 전송 효율성이 향상된다.
- 파이프라이닝: 파이프라인 구조를 사용하여 여러 명령을 동시에 처리할 수 있다. 이는 메모리가 이전 요청을처리하는 동안 새로운 메모리 엑세스 요청을 받을 수 있게 해, 지연 시간을 줄이고 데이터 처리량을 증가시킨다.
- 듀얼 에지 클로킹: 일부 SDRAM은 클록의 상승 에지와 하강 에지 모두에서 데이터를 전송할 수 잇는 능력을 가진다. 이 기술은 DDR SDRAM에서 중요한데, 이 기술은 SDRAM의 발전 형태로 클록 사이클당 두 번의 데이터 전송을 가능하게 해 대역폭을 두배로 증가시킨다.
- 캐스(CAS) 지연: Column Address Strobe(CAS) 지연이라는 매개변수를 가지고 있는데, 이는 메모리 컨트롤러가 적절한 열을 선택하고 그 열에서 데이터를 읽거나 쓰는데 필요한 시간을 나타낸다. 이 지연 시간은 메모리의 성능을 결정하는 중요한 요소 중 하나이다.
4. DDR SDRAM
DDR SDRAM은 Double Data Rate SDRAM으로,
SDRAM의 발전된 형태이다. 한 클록 사이클에 데이터를 두 번 전송하여 대역폭을 두 배로 늘린 메모리 기술이다. DDR 메모리는 SDRAM에 비해 데이터 처리량이 크게 향상된 것이 특징이다.
흔히 RAM카드를 살 때 DDR2, DDR3, DDR4 하는 것은 이 DDR을 말한다. 최근에는 DDR5까지 출시되었음.
- DOUBLE Data Rate: DDR메모린느 클록 신호의 상승 에지와 하강 에지에 서 모두 데이터를 전송할 수 있다. 이것은 표준 DSRAM이 한 클록 사이클에 한 번만 데이터를 전송하는 것과 대조된다. 결과적으로 DDR 메모리는 클록 신호의 빈도수를 늘리지 않고도 더 많은 데이터를 전송할 수 있다.
- **파이프라인 구조: DDR 메모리는 파이프라인 구조를 사용하여, 하나의 액션(ex: 읽기)이 진행되는 동안 다른 액션이 대기하는 대신 다음 클록 사이클에서 바로 시작할 수 있또록 한다. 이는 메모리 처리량을 증가시키고 지연 시간을 감소시킨다.
- 전압 감소: 초기의 DDR은 2.5V의 작동 전압ㅇ르 사용했으며, 그 이후 세대(DDR2, DDR3...)들은
1.8V, 1.5V, 1.2V.. 로 점점 전압을 낮춰 전력 소모를 감소시켰다.
- 명령 신호의 조정: DDR SDRAM은 명령과 데이터의 신호를 조정하여 보다 효율적인 데이터 전송이 이루어지도록 한다. 이는 SDRAM에 비해 더 복잡한 컨트롤러 디자인을 요구한다.
- 사용 예시: DDR 메모리는 개인용 컴퓨터, 서버, 워크스테이션 등 다양한 전자 장치에서 메인 메모리로 사용된다.