RAM의 특징과 종류
1) RAM의 특징
RAM에는 실행할 프로그램의 명령어와 데이터가 저장된다. 이때 전원을 끄면 RAM에 저장된 명령어와 데이터는 모두 날아간다. 이렇게 전원을 끄면 저장 내용이 사라지는 저장장치를 휘발성 저장장치라고 한다.
반면 전원이 꺼져도 저장된 내용이 유지되는 저장장치를 비휘발성 저장 장치라고 하며 하드디스크, SSD, CD-ROM, USB 메모리와 같은 보조기억장치가 대표적인 비휘발성 저장 장치이다.
보조기억장치는 전원을 꺼도 내용을 유지하지만, CPU는 보조기억장치에 접근할 수 없다. 그래서 일반적으로 보조기억장치인 비휘발성 저장 장치에는 보관할 대상을 저장하고, 휘발성 저장 장치인 RAM에는 실행할 대상을 저장한다.
2) RAM의 용량과 성능
CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 가져와야 한다. RAM의 용량이 적다면,, 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아져 실행 시간이 길어진다.
예를 들어 RAM 용량이 프로그램 A, B, C 중 하나만 저장할 수 있다면, CPU는 A 프로그램을 실행하고 싶을 때 A를 RAM으로 가져오고, B를 실행하고 싶을 때는 B를 RAM으로 가져오는 번거로운 수고를 해야 한다.
하지만! RAM 용량이 크다면? 한 번에 담아두고 필요한 프로그램만 골라서 사용할 수 있다.
즉! CPU가 실행할 프로그램을 책이라고 생각하면, 보조기억장치는 책이 꽂혀있는 책꽂이이고, RAM은 책을 읽을 수 있는 책상이다. 책상이 크면 한 번에 많은 책을 둘 수 있는 것처럼 RAM이 크면 보조기억장치에서 많은 프로그램을 가져다 놓을 수 있는 것이다.
책을 책상에 많이 둔다고 모든 책을 읽을 수 있는 게 아니듯, RAM이 크다고 비례하여 프로그램 실행 속도가 빨라지는 것은 아니다.
3) RAM의 종류
RAM의 종류는 DRAM, SRAM, SDRAM, DDR SDRAM 4가지로 구분할 수 있다.
DRAM
DRAM은 Dynamic RAM의 줄임말로 동적인 RAM이다. 즉 동적으로 데이터가 사라지는 RAM이다.
DRAM은 시간이 지나면 저장된 데이터가 점차 사라지는 RAM이기에, 주기적으로 데이터를 재활성화(다시 저장) 해야 한다.
이러한 단점이 있음에도 DRAM을 사용하는 이유는 소비 전력이 낮고, 저렴하고, 집적도가 높기 때문에 대용량 설계가 용이하다는 장점이 있다.
SRAM
SRAM은 Static RAM의 줄임말로 정적인 RAM이다. 시간이 지나도 저장된 데이터가 사라지지 않는다.
주기적으로 데이터를 재활성화할 필요가 없으며 DRAM에 비해 속도가 빠르다는 장점이 있다.
하지만! SRAM은 DRAM에 비해 집적도가 낮고 소비전력도 크며 가격도 비싸다는 단점이 있다. SRAM은 보통 대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장장치인 캐시 메모리에서 주로 사용된다.
SDRAM
SDRAM은 클럭 신호와 동기화된, 발전된 형태의 DRAM이다. 클럭 타이밍에 맞춰 CPU와 정보를 주고받는다는 의미이다. 즉, SDRAM은 클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM이다.
DDR SDRAM
DDR SDRAM은 대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다. 이때 대역폭이란 ‘데이터를 주고받는 길의 너비’를 의미한다.
대역폭은 자동차 도로와 비슷한데, 한 클럭에 하나씩 정보를 주고받는 SDRAM과 비교했을 때 DDR SDRAM은 너비가 2배인 도로이다. 즉 두 배의 대역폭으로 한 클럭 당 두번씩 CPU와 데이터를 주고받을 수 있다. 이런 의미에서 한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAM을 SDR SDRAM이라고 부른다. DDR2 SDRAM은 DDR SDRAM보다 대역폭이 두 배 넓은 SDRAM이다. SDR SDRAM보다 4배가 넓은 대역폭을 갖는다는 것을 알 수 있다.
메모리의 주소 공간
1) 물리 주소와 논리 주소
메모리에는 새롭게 실행되는 프로그램이 시시때때로 적재되고 실행이 끝난 프로그램은 삭제된다. 같은 프로그램을 실행한다 해도 실행할 때마다 적재되는 주소는 달라질 수 있는데, 이런 상황에서 CPU와 실행 중인 프로그램이 현재 몇번째 주소에 저장되는지 알기는 쉽지 않다.
CPU와 실행 중인 프로그램이 이해하는 주소는 무엇일까?
주소에는 메모리가 사용하는 물리주소와 CPU와 실행 중인 프로그램이 사용하는 논리주소가 있다.
- 메모리가 사용하는 물리주소
- 말 그대로 정보가 실제로 저장된 하드웨어상의 주소를 의미한다.
- CPU와 실행중인 프로그램이 사용하는 논리주소
- 실행 중인 프로그램 각각에 부여된 0번지부터 시작되는 주소를 의미한다.
따라서 메모장, 게임을 비롯한 각각은 모두 물리주소가 아닌 0번지부터 시작하는 논리주소를 갖는다.
즉! 메모리가 사용하는 주소는 하드웨어상의 실제 주소인 물리주소이고, CPU와 실행 중인 프로그램이 사용하는 주소는 각각의 프로그램에 부여된 논리주소인 것이다.
논리 주소와 물리 주소 간 변환이 있어야만 CPU와 메모리는 서로 이해할 수 있다.
메모리 관리 장치(MMU)라는 하드웨어에 의해 논리주소와 물리주소 간 변환이 이루어진다.
MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더해 논리주소를 물리주소로 변환시킨다. 아래의 그림을 통해 보면 베이스 레지스터에는 15000이 저장되어 있지만, 논리주소가 100이기 때문에 물리주소가 15100번지로 바뀌게 되는 것이다.

베이스 레지스터는 프로그램의 가장 작은 물리주소이다. 즉 프로그램의 첫 물리 주소를 저장하는 것이고, 논리주소는 프로그램의 시작점으로부터 떨어진 거리인 것이다.
2) 메모리 보호 기법
프로그램 실행을 하는 과정에서 프로그램의 논리주소를 벗어나는 명령어가 주어지면 어떻게 될까?
이땐 명령어가 실행되면 안 되는데, 이는 한계 레지스터가 담당한다.
한계 레지스터는 논리 주소의 최댓값을 저장한다.
즉, 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상이고 베이스 레지스터 값 + 한계 레지스터 값 미만이 되는 것이다. CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보단 작아야 한다.

논리 주소가 한계 레지스터 값 보다 큰 경우에는 인터럽트를 발생시켜 실행을 중단한다.
캐시 메모리
CPU는 프로그램을 실행하는 과정에서 메모리에 저장된 데이터를 빈번하게 사용한다.
하지만! CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다는 특징이 있다.
CPU가 연산을 아무리 빨리한다 해도 메모리에 접근하는 시간 자체가 느리면 CPU의 빠른 연산속도는 의미가 없어지는데 이를 극복하기 위한 저장장치가 바로 캐시 메모리이다.
1) 저장 장치 계층 구조
케시 메모리를 이해하기 위해서는 저장 장치 계층 구조라는 개념을 알아야 한다.
일반적으로 사람들은 빠르면서 용량이 큰 저장 장치를 원한다. 하지만 저장장치는 아래와 같은 특징을 갖는데, 이 때문에 빠르고 용량이 큰 저장장치는 불가능하다.
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 적고, 가격이 비싸다.
CPU 내부의 레지스터, RAM, USB 메모리를 비교하자면 CPU와 가장 가까운 레지스터는 RAM에 비해 빠르지만 가격이 비싸다. 또 USB보다 CPU에 가까운 RAM도 접근 시간은 빠르지만 가격이 비싸다.
따라서 컴퓨터는 다양한 저장장치를 사용하는데, 이러한 저장 장치들이 CPU에 얼마나 가까운 가를 기준으로 계층적으로 나타낼 수 있다. 이를 저장 장치 계층 구조라고 한다.

레지스터가 CPU와 가장 가깝기에 속도는 빠르지만 가격이 느리다는 것을 알 수 있다.
2) 캐시 메모리
CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 느리다. 그럼에도 CPU는 프로그램을 실행하는 과정에서 메모리에 자주 접근해야 하는데, 이를 도와주는 장치가 캐시 메모리이다.
캐시 메모리란?
CPU와 메모리 사이에 위치하며 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반의 저장 장치이다. (SRAM이란, 시간이 지나도 저장된 데이터가 사라지지 않는 RAM이다. 그러나 전원을 끄면 사라진다.)

캐시 메모리는 CPU의 연산 속도와 메모리의 접근 속도의 차이를 줄이기 위해 만들어졌다. CPU가 매번 메모리를 왔다 갔다 하는 건 시간이 오래 걸리기에 메모리에서 CPU가 사용할 일부 데이터를 캐시 메모리에 담아두는 것이다.
장바구니 역할?로 생각하면 좋을 것 같다. 어차피 살 거.. 쉽게 살 물건들을 볼 수 있으니까…?
위의 이미지로 이해해 보자면, CPU를 집으로 메모리에 접근하는 행위를 마트에 간다고 가정한다면 캐시메모리는 집과 마트 사이의 편의점 역할을 해주는 것이다.

캐시 메모리를 사용하면 데이터로의 접근 시간을 단축할 수 있다는 장점이 있다.

캐시 메모리는 앞서 공부한 것과 같이 레지스터와 메모리 사이에 위치하여 중간 다리 역할을 해주는 것이다.
이러한 캐시 메모리는 CPU(코어)와 가까운 순서대로 계층을 구성할 수 있다.
코어와 가장 가까운 캐시 메모리를 L1 캐시, 그다음이 L2 캐시, 그다음 가까운 캐시 메모리가 L3이다.

용량은 L1 <L2 <L3 순이며 속도는 L3 <L2 <L1 순으로 빨라진다.

멀티 코어 프로세서의 경우에는 L1 캐시와 L2 캐시는 코어마다 고유한 캐시 메모리로 할당되고 L3 캐시는 여러 코어가 공유하는 형태로 사용된다.
3) 참조 지역성 원리
캐시 메모리는 메모리보다 용량이 적기 때문에 캐시 메모리에 메모리의 모든 내용을 담을 수는 없다.
캐시 메모리는 CPU가 사용할 것 같은 대상을 예측하는데, 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내의 데이터가 CPU에서 활용될 경우를 캐시 히트라고 한다. 반대로 예상이 틀린 경우를 캐시 미스라고 한다. 캐시 미스인 경우 CPU가 필요한 데이터를 직접 가져와야 하기 때문에 캐시 메모리의 이점을 잃는 것과 같다.
캐시가 히트되는 비율을 캐시 적중률이라고 한다. 계산식은 아래와 같다.
캐시 히트 횟수 / ( 캐시 히트 횟수 + 캐시 미스 횟수 )
우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85~89% 이상이다.
캐시 메모리는 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 정하는데. 바로 참조 지역성의 원리를 따른다. 참조 지역성의 원리는 아래와 같다.
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
하나씩 살펴보자.
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
변수를 예로 들어보자면 변수에 값을 저장하고 나면 언제든 변수에 다시 접근할 수 있다. 또한 변수에 저장된 값은 한번 사용되고 끝나지 않고 실행되는 동안 여러 번 반복되서 사용된다.
즉, CPU는 최근에 접근했던(변수가 저장된) 메모리 공간을 여러 번 접근할 수 있다는 것이다.
이처럼 최근에 접근했던 메모리 공간에 다시 접근하려는 경향을 ‘시간 지역성’이라고 한다.
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
CPU가 실행하려는 프로그램은 보통 관련된 데이터끼리 모여있다. 워드 프로세서를 사용하는 경우 자동 저장 기능, 입력 기능 등등이 모여서 활용된다. 이렇게 접근한 메모리 공간 근처에 접근하려는 경향을 ‘공간 지역성’이라고 한다.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Chapter 08 입출력장치 (0) | 2023.12.12 |
---|---|
[컴퓨터 구조] Chapter 07 보조기억장치 (3) | 2023.12.05 |
[컴퓨터 구조] Chapter 05 CPU 성능 향상 기법 (0) | 2023.11.18 |
[컴퓨터 구조] Chapter 04 CPU의 작동원리 (1) | 2023.11.13 |
[컴퓨터 구조] Chapter 03 명령어 (0) | 2023.11.11 |