06-1. RAM의 특징과 종류
(1) RAM의 특징
RAM에는 실행할 프로그램의 명령어와 데이터가 저장되는데, 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날아간다.
휘발성 저장 장치: 전원을 끄면 저장된 내용이 사라지는 저장 장치
비휘발성 저장 장치: 전원이 꺼져도 저장된 내용이 유지되는 저장 장치로, SSD, CD-ROM, USB 메모리와 같은 보조기억장치가 대표적이다.
CPU는 보조기억장치에 직접 접근하지 못하기 때문에, 보조기억장치인 비휘발성 저장 장치에는 '보관할 대상'을 저장하고, 휘발성 저장 장치인 RAM에는 '실행할 대상'을 저장한다.
(2) RAM의 용량과 성능
RAM 용량이 충분히 크다면 보조기억장치에서 많은 데이터를 가져와 미리 RAM에 저장할 수 있고, 많은 프로그램을 빠르게 실행하는 데 유리하다.
RAM 용량이 커지면 프로그램 실행 속도가 어느 정도 증가하는 것은 맞지만, 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지는 않는다.
(3) RAM의 종류
RAM의 종류에는 크게 DRAM, SRAM, SDRAM, DDR SDRAM이 있다.
DRAM(Dynamic RAM)
: 저장된 데이터가 동적으로 변하는(사라지는) RAM
- 시간이 지나면 저장된 데이터가 점차 사라지기 때문에, 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야 한다는 단점이 있다.
- 하지만 소비 전력이 비교적 낮고, 저렴하고, 집적도가 높기 때문에(더 작고 빽빽하게 만들 수 있기 때문에) 일반적으로 많이 사용한다.
SRAM(Static RAM)
: 저장된 데이터가 변하지 않는 RAM
- 시간이 지나도 저장된 데이터가 사라지지 않기 때문에, 주기적으로 데이터를 재활성화할 필요도 없다.
- 일반적으로 DRAM보다 속도가 빠르다.
- DRAM보다 집적도가 낮고, 소비 전력도 크며, 가격도 더 비싸다.
- '대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치', 캐시 메모리에서 사용된다.
SDRAM(Synchronous Dynamic RAM)
: 클럭 신호와 동기화된 발전된 형태의 DRAM
- 클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있다.
DDR SDRAM(Double Data Rate SDRAM)
: 대역폭(데이터를 주고받는 길의 너비)를 넓혀 속도를 빠르게 만든 SDRAM
- 최근 가장 흔히 사용되는 RAM이다.
- 한 클럭에 한 번씩 CPU와 데이터를 주고받을 수 있는 SDRAM에 비해 DDR SDRAM은 두 배의 대역폭으로 한 클럭당 두 번씩 CPU와 데이터를 주고받을 수 있으며, 그렇기 때문에 전송 속도가 두 배 가량 빠르다.
- 최근에 흔히 사용되는 메모리는 DDR4 SDRAM으로, SDR SDRAM보다 열여섯 배(2$^4$) 넓은 대역폭을 가진다.
※ SDRAM(Single Data SDRAM): 한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAM
06-2. 메모리의 주소 공간
(1) 물리 주소와 논리 주소
메모리에 저장된 정보는 시시각각 변하기 때문에, CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못한다.
주소에는 메모리가 사용하는 물리 주소가 있고, CPU와 실행 중인 프로그램이 사용하는 논리 주소가 있다.
물리 주소(physical address): 정보가 실제로 저장된 하드웨어상의 주소
논리 주소(logical address): 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소
예를 들어 현재 메모리에 메모장, 게임, 인터넷 브라우저 프로그램이 적재되어 있다고 가정했을 때, 각 프로그램은 현재 다른 프로그램들이 메모리 몇 번지에 저장되어 있는지, 즉 다른 프로그램들의 물리 주소가 무엇인지 굳이 알 필요가 없다. 새로운 프로그램이 언제든 적재될 수 있고, 실행되지 않는 프로그램은 언제든 메모리에서 사라질 수 있기 때문이다.
그래서 메모장, 게임, 인터넷 브라우저는 모두 물리 주소가 아닌 0번지부터 시작하는 자신만을 위한 주소인 논리 주소를 가지고 있다. 프로그램마다 같은 논리 주소가 있을 수 있으며, CPU는 이 논리 주소를 받아들이고, 해석하고, 연산한다.
CPU가 메모리와 상호작용하려면 논리 주소와 물리 주소 간의 변환이 이루어져야 하는데, 이는 CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MMU)라는 하드웨어에 의해 수행된다.
MMU(Memory Management Unit): CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환
베이즈 레지스터는 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소를 저장하는 셈이고, 논리 주소는 프로그램의 시작점으로부터 떨어진 거리인 셈이다.
(2) 메모리 보호 기법
다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요한데, 이는 한계 레지스터가 담당한다.
한계 레지스터: 논리 주소의 최대 크기를 저장
즉, 프로그램의 물리 주소의 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만이 된다.
CPU는 메모리에 접근하기 전에 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사한다. 만약 CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 하면 인터럽트(트랩)을 발생시켜 실행을 중단한다.
06-3. 캐시 메모리
(1) 저장 장치 계층 구조
저장 장치는 일반적으로 다음과 같은 명제를 따른다.
1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
저장 장치 계층 구조(memory hierarchy): 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조
CPU에 가까운 저장 장치일수록 빠르고, 용량이 작고, 비싸다.
(2) 캐시 메모리
CPU는 프로그램을 실행하는 과정에서 메모리에 빈번히 접근해야 하는데, CPU 연산 속도가 아무리 빨라도 메모리에 접근하는 속도가 그에 따라가지 못한다면 소용이 없다.
캐시 메모리(cache memory): CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
캐시 메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생했으며, 캐시 메모리에 CPU가 필요로 하는 데이터가 있다면 필요한 데이터로의 접근 시간을 줄일 수 있다.
컴퓨터 내부에는 여러 개의 캐시 메모리가 있는데, CPU(코어)와 가까운 순서대로 계층을 구성한다.
코어와 가까운 순서대로 L1 캐시, L2 캐시, L3 캐시라고 부르며, 일반적으로 L1 캐시와 L2 캐시는 코어 내부에, L3 캐시는 코어 외부에 위치해 있다.
CPU가 메모리 내에 데이터가 필요하다고 판단하면 우선 L1 캐시에 해당 데이터가 있는지를 알아보고, 없다면 L2, L3 캐시 순으로 데이터를 검색한다. L1 캐시와 L2 캐시는 코어마다 고유한 캐시 메모리로 할당되고, L3 캐시는 여러 코어가 공유하는 형태로 사용된다.
※ 분리형 캐시: L1 캐시를 조금이라도 접근 속도를 빠르게 만들기 위해 명령어만을 저장하는 L1I 캐시와 데이터만을 저장하는 L1D 캐시로 분리
(3) 참조 지역성 원리
캐시 메모리는 메모리의 일부를 복사하여 저장하는데, CPU가 사용할 법한 대상을 예측하여 저장한다.
캐시 히트(cache hit): 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
캐시 미스(cache miss): 자주 사용될 것으로 예측하여 캐시 메모리에 저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
캐시 미스가 발생하면 CPU가 필요한 데이터를 메모리에서 직접 가져와야 하기 때문에 캐시 메모리의 이점을 활용할 수 없다.
캐시 적중률: 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
캐시 적중률이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있다. 우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85%~95%이다.
캐시 메모리는 참조 지역성의 원리에 따라 CPU가 사용할 법한 데이터를 예측하여 메모리로부터 가져올 데이터를 결정한다.
1. 시간 지역성(temporal locality): CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다
- 변수에 값을 저장하고 나면 언제든 변수에 다시 접근하여 변수에 저장된 값을 사용할 수 있다. 다시 말해, CPU는 변수가 저장된 메모리 공간을 언제든 다시 참조할 수 있다.
2. 공간 지역성(spatial locality): CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
- CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 한데 모여 있다.
'Computer Science > Computer Architecture' 카테고리의 다른 글
[ 혼자 공부하는 컴퓨터구조 + 운영체제 ] Chapter08. 입출력장치 (1) | 2024.06.06 |
---|---|
[ 혼자 공부하는 컴퓨터구조 + 운영체제 ] Chapter04. CPU의 작동 원리 (0) | 2024.05.25 |
[ 혼자 공부하는 컴퓨터구조 + 운영체제 ] Chapter03. 명령어 (0) | 2024.05.16 |
[ 혼자 공부하는 컴퓨터구조 + 운영체제 ] Chapter02. 데이터 (0) | 2024.04.26 |
[ 혼자 공부하는 컴퓨터구조 + 운영체제 ] Chapter 01. 컴퓨터 구조 시작하기 (0) | 2024.04.19 |