RAM의 특징과 종류
- 주기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고, 메모리라는 용어는 그 중 RAM을 지칭하는 경우가 많다.
RAM의 특징
- RAM에 저장된 명령어와 데이터가 전원을 끄면 날라간다.
- 이렇게 전원을 끄면 저장된 내용이 사라지는 저장 장치를 휘발성 저장 장치라고 한다.
- 반면 전원이 꺼져도 저장된 내용이 유지되는 저장 장치를 비휘발성 저장 장치라고 한다.
- 하드디스크나 SSD, CD-ROM, USB 메모리와 같은 보조기억장치가 대표적인 비휘발성 저장 장치이다.
- 보조기억장치는 전원을 꺼도 내용을 유지하지만 CPU는 보조기억장치에 직접 접근은 하지 못한다.
- 그래서 보조기억장치인 비휘발성 저장 장치에는 ‘보관할 대상’을 저장하고, 휘발성 저장 장치인 RAM에는 ‘실행할 대상’을 저장한다.
- CPU가 실행하고 싶은 프로그램이 보조 기억장치에 있다면 이를 RAM으로 복사하여 저장한 뒤 실행한다.
RAM의 용량과 성능
- RAM 용량이 크면 어떤 점이 좋을까?
- CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 RAM으로 가져와야 하는데 RAM 용량이 적다면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어진다.
- RAM 용량이 작을 경우 CPU가 실행하고 싶은 프로그램이 있을 때마다 RAM으로 가지고 와야한다.
- 하지만 RAM 용량이 충분히 크다면 보조 기억장치에서 많은 데이터를 가져와 미리 저장할 수 있다.
- 많은 프로그램을 실행하는데 유리하다.
- RAM 용량이 커지면 프로그램 실행 속도가 어느 정도 증가하는 것은 맞지만, 용량이 필요 이상으로 커졌을 때는 속도가 그에 비해 증가하지는 않는다.
RAM의 특징과 종류
- 주기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고, 메모리라는 용어는 그 중 RAM을 지칭하는 경우가 많다.
- RAM에 저장된 명령어와 데이터가 전원을 끄면 날라간다.
- 이렇게 전원을 끄면 저장된 내용이 사라지는 저장 장치를 휘발성 저장 장치라고 한다.
- 반면 전원이 꺼져도 저장된 내용이 유지되는 저장 장치를 비휘발성 저장 장치라고 한다.
- 하드디스크나 SSD, CD-ROM, USB 메모리와 같은 보조기억장치가 대표적인 비휘발성 저장 장치이다.
- 보조기억장치는 전원을 꺼도 내용을 유지하지만 CPU는 보조기억장치에 직접 접근은 하지 못한다.
- 그래서 보조기억장치인 비휘발성 저장 장치에는 ‘보관할 대상’을 저장하고, 휘발성 저장 장치인 RAM에는 ‘실행할 대상’을 저장한다.
- CPU가 실행하고 싶은 프로그램이 보조 기억장치에 있다면 이를 RAM으로 복사하여 저장한 뒤 실행한다.
- RAM 용량이 크면 어떤 점이 좋을까?
- CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 RAM으로 가져와야 하는데 RAM 용량이 적다면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어진다.
- RAM 용량이 작을 경우 CPU가 실행하고 싶은 프로그램이 있을 때마다 RAM으로 가지고 와야한다.
- 하지만 RAM 용량이 충분히 크다면 보조 기억장치에서 많은 데이터를 가져와 미리 저장할 수 있다.
- 많은 프로그램을 실행하는데 유리하다.
- RAM 용량이 커지면 프로그램 실행 속도가 어느 정도 증가하는 것은 맞지만, 용량이 필요 이상으로 커졌을 때는 속도가 그에 비해 증가하지는 않는다.
RAM의 종류
- RAM의 종류는 크게 DRAM, SRAM, SDRAM, DDR, SDRAM이 있다.
DRAM
- DRAM 은 Dynamic RAM의 준말로, 저장된 데이터가 동적으로 변하는(사라지는) RAM을 의미
- 시간이 지나 저장된 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야한다.
- 이러한 단점에도 불구하고 일반적으로 메모리로써 사용하는 RAM은 DRAM이다.
- 소비 전력이 비교적 낮고, 저렴하고 집적도가 높기 때문에 대용량으로 설계하기 용이하다.
SRAM
- SRAM은 Static RAM의 준말로, 저장된 데이터가 변하지 않는 RAM이다.
- 시간이 지나도 저장된 데이터가 사라지지 않아 재활성화 필요가 없다.
- SRAM은 DRAM보다 일반적으로 속도도 더 빠르다.
- 이러한 장점에도 불구하고 메모리로 사용되는 RAM은 일반적으로 SRAM이 아닌 DRAM이다.
- SRAM은 DRAM보다 집적도가 낮고 소비전력도 크며 가격도 더 비싸기 대문이다.
- SRAM은 메모리가 아닌 ‘대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치’, 가령 캐시 메모리에서 사용된다.
DRAM SRAM
재충전 | 필요함 | 필요없음 |
속도 | 느림 | 빠름 |
가격 | 저렴함 | 비쌈 |
집적도 | 높음 | 낮음 |
소비 전력 | 적음 | 높음 |
사용 용도 | 주기억장치(RAM) | 캐시 메모리 |
SDRAM
- SDRAM은 클럭 신호와 동기화된, 발전된 형태의 DRAM입니다. ‘클럭 신호와 동기화되었다‘는 말은 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있음을 의미한다.
- 즉 클럭에 맞춰 동작하며 클럭마다 cpu와 정보를 주고받을 수 있는 DRAM이다.
DDR SDRAM
- 최근 가장 흔히 사용되는 RAM이다.
- DDR SDRAM은 대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다. 여기서 대역폭이란 ‘데이터를 주고받는 길의 너비’를 의미한다.
- SDRAM과 비교했을 DDR SDRAM은 너비가 두 배인 도로와 같다.
- 한 클럭에 한 번씩 CPU와 데이터를 주고받을 수 있는 SDRAM에 비해 DDR SDRAM은 두 배의 대역폭으로 한 클럭당 두 번씩 CPU와 데이터를 주고받을 수 있다.
- 전송 속도도 두 배가량 빠르다.
- DDR2 SDRAM은 SDR SDRAM보다 너비가 네 배 넓은 도로, 최근 흔히 사용하는 메모리는 DDR4 SDRAM으로 열어섯 배 넓은 대역폭을 가진다.
6-2 메모리의 주소 공간
- 그동안 메모리에 저장된 정보의 위치는 주소로 나타낼 수 있다고 설명했지만 사실 주소에는 물리주소와 논리주소가 있다.
- 물리주소 는 메모리 하드웨어가 사용하는 주소이고 논리주소는 CPU와 실행 중인 프로그램이 사용하는 주소이다.
물리 주소와 논리 주소
- 메모리가 사용하는 물리주소는 말 그대로 정보가 실제로 저장된 하드웨어상의 주소를 의미한다.
- 반면 CPU와 실행 중인 프로그램이 사용하는 논리 주소는 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소를 의미한다.
- 메모리가 사용하는 주소는 하드웨어상의 실제 주소인 물리 주소이고, CPU와 실행 중인 프로그램이 사용하는 주소는 각각의 프로그램에 부여된 논리 주소이다.
- CPU가 이해하는 주소가 논리주소라고 해도 메모리와 상호작용을 위해서는 논리 주소와 물리 주소 간의 변환이 이루어져야 한다.
- 논리 주소와 물리 주소간의 변환은 CPU와 주소 버스 사이에 위치한 메모리 관리 장치 (MMU)라는 하드웨어에 의해 수행된다.
- MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다.
- 현재 베이스 레지스터에 15000이 저장되어 있고 CPU가 발생시킨 논리 주소가 100번지라면 이 논리 주소는 아래 그림처럼 물리주소 15100번지(100+15000)으로 변환된다.
- 물리 주소 15000번지부터 적재된 프로그램 A의 논리주소는 100번지에는 이렇게 접근이 가능한 것이다.
- 베이스 레지스터는 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소를 저장하는 셈이고
- 논리 주소는 프로그램의 시작점으로부터 떨어진 거리인 셈이다.
메모리 보호 기법
- 메모장 프로그램의 물리 주소가 1000번지부터 1999번지, 인터넷 브라우저 프로그램의 물리주소가 2000번지부터 2999번지, 게임 프로그램의 물리 주소가 3000번지부터 3999번지라고 가정해 보자
- 만약 메모장 프로그램 명령어 중 (논리주소)1500번지에 숫자 100을 저장하라 와 같은 명령어가 있다면 숫자 100은 어떤 물리 주소에 저장될까? 또는 인터넷 브라우저 프로그램 명령어 중 1100번지의 데이터를 삭제하라 와 같은 명령어가 있다면 어떤 물리 주소의 데이터가 삭제될까요?
- 이 두명령어는 실행되어도 안전할까? 안된다
- 프로그램의 논리 주소 영역을 벗어났기 때문이다. 메모장 프로그램 명령어는 애꿎은 인터넷 브라우저 프로그램에 숫자 10을 저장하고, 인터넷 브라우저 프로그램 명령어는 자신과는 전혀 관련 없는 게임 프로그램 정보를 삭제한다.
- 이렇게 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 영향을 받지 않도록 보호할 방법이 필요하다
- 이것이 바로 한계 레지스터라는 레지스터가 담당한다
- 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면 한계 레지스터는 논리의 최대 크기를 저장한다.
- 즉 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만이 된다.
- 만약 CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 하면 인터러트(트랩)을 발생시켜 실행을 중단한다.
6-3 캐시 메모리
- CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다. CPU가 연산을 빨리 한다 해도 메모리에 접근하는 시간이 느리면 CPU의 빠른 연산 속도는 아무런 쓸모가 없다.
- 이를 극복하기 위한 저장 장치가 캐시 메모리이다.
- 캐시 메모리의 탄생 배경과 특징을 이해하려면 우선 저장 장치 계층 구조라는 개념을 이해해야한다.
저장 장치 계층 구조
- ‘빠른 저장 장치’와 ‘용량이 큰 저장 장치’는 양립하기 어렵다
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다
- CPU 내의 레지스터 메모리 USB를 비교해보자
- CPU와 가장 가까운 레지스터는 일반적으로 RAM보다 용량은 작지만 접근 시간이 압도적으로 빠르고 가격이 비싸다.
- USB 메모리보다 CPU에 가까운 RAM은 접근 시간이 훨씬 더 빠르지만 같은 용량이라 할지라도 가격은 더 비싸다.
- 저장장치들의 장단점이 명확하기 때문에 일반적으로 컴퓨터는 다양한 저장 장치를 모두 사용하게 된다.
- 컴퓨터가 사용하는 저장장치들은 ‘CPU’와 얼마나 가까운가를 기준으로 계층적으로 나타낼 수 있는데 이것을 저장 장치 계층 구조라고한다.
캐시 메모리
- 그래서 등장한 것이 캐시 메모리는 CPU와 메모리 사이에 위치하고 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장장치다.
- 캐시 메모리는 CPU의 연산속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생했다.
- CPU가 메모리에 왔다 갔다 하는 건 시간이 오래 걸리니 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 활용한다.
- 캐시 메모리까지 반영한 저장 장치 계층 구조이다.
- 캐시 메모리들은 CPU(코어)와 가까운 캐시 메모리를 L1캐시, L2캐시, L3캐시 라고 부른다.
- 메모리 용량은 L1,L2,L3순으로 커지고 속도는 L3,L2,L1 순으로 빨라진다. 가격은 L3,L2,L1순으로 비싸진다.
- CPU가 메모리 내에서 데이터가 필요하면 L1,L2,L3순으로 데이터를 검색한다.
- L1,L2캐시는 코어마다 고유한 캐시 메모리로 할당되고, L3 캐시는 여러 코어가 공유하는 형태로 사용한다.
참조 지역성 원리
- 캐시 메모리는 메모리보다 용량이 작다.
- 캐시 메모리는 CPU가 사용할 법한 대상을 예측해서 저장한다.
- 이때 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우를 캐시 히트라고 한다
- 반대로 예측 실패로 메모리에서 필요한 데이터를 직접 가져와야하는 경우 캐시 미스라고 한다.
- 캐시가 히트되는 비율을 캐시 적중률이라고 하고 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수) 과 같이 계산한다.
- 캐시 메모리는 참조 지역성의 원리를 따라 메모리로부터 가져올 데이터를 결정한다.
- 참조 지역성의 원리란 CPU가 메모리에 접근할 때 주된 경향을 바탕으로 만들어진다.
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 시간 지역성
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
- 공간 지역성
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
'혼자 공부하는 컴퓨터 구조+운영체제' 카테고리의 다른 글
8장 장치 컨트롤러와 장치 드라이버 (1) | 2024.06.05 |
---|---|
7장 보조기억장치 (0) | 2024.06.05 |
5장 CPU 성능 향상 기법 (0) | 2024.06.04 |
4장 CPU의 작동 원리 (1) | 2024.05.19 |
3장 명령어 (0) | 2024.05.18 |