RAM의 특징과 종류
RAM의 특징
- 휘발성 저장 장치
- 전원이 꺼지면 저장된 내용을 잃어버린다
RAM의 용량과 성능
- 메모리가 클수록 많은 프로그램을 RAM에 로드한 후에 실행 가능할 수 있다.
- 모든 프로그램을 로드할 수 있을만큼 충분히 크다면 그 이상의 용량은 성능에 영향을 끼치지 않는다.
DRAM(Dynamic RAM)
- 저장된 데이터가 동적으로 사라지는 RAM
- 데이터의 소멸을 막기 위해서 주기적으로 재활성화
- 소비전력이 비교적 낮고, 저렴하고 집적도가 높아 일반적으로 RAM으로 사용되는 RAM
SRAM(Static RAM)
- 저장된 데이터가 정적인 RAM
- DRAM보다 일반적으로 더 빠름
- 상대적으로 소비전력이 높고 가격도 높고 집적도가 낮아 “대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치” (캐시메모리)에 사용됨
SDRAM(Synchronous DRAM)
- 특별한 DRAM
- 클럭 신호와 동기화된 DRAM
- 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM
DDR SDRAM(Double Data Rate SDRAM)
- 특별한 SDRAM
- 최근 가장 대중적으로 사용되는 RAM
- SDRAM에보다 대역폭이 2배 넓어 전송속도가 2배 빠름
메모리의 주소 공간
- 물리 주소는 메모리 하드웨어가 사용하는 주소
- 논리 주소 CPU와 프로그램이 사용하는 주소
💡 물리 주소와 논리 주소를 나누는 이유
- 프로그램이 실행되고 종료될 때마다 메모리에 적재되는 위치가 달라짐
- 메모리 주소가 바뀌어도 프로그램은 일정하게 동작하기 위해 자신 고유의 메모리 주소를 사용
메모리 관리 장치(Memory Management Unit
- 프로그램의 논리 주소로는 물리 주소에서 같은 데이터를 찾을 수 없다. (물리주소와 다른 프로그램 고유의 논리주소를 사용하기 때문
- CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다.
- 베이스 레지스터에는 프로그램의 시작 물리 주소가 저장되어 있다.
- 논리 주소는 프로그램의 시작점으로부터 떨어진 거리와 같음
한계 레지스터
- 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
- 한계 레지스터는 논리 주소의 최대 크기를 저장
- 한계 레지스터에 저장된 주소의 크기보다 큰 명령어 주소의 실행을 막음
- CPU는 메모리에 접근하기 전 논리 주소가 한계 레지스터보다 작은지 항상 검사
- 실행 중인 프로그램의 독립적인 실행 공간을 확보
- 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호
캐시 메모리
- CPU가 메모리에 접근하는 데 걸리는 시간은 연산 시간에 비교해서 많이 느리다.
메모리 계층 구조
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다
캐시 메모리
- CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
- CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
- CPU가 매번 메모리에 왔다 갔다 하는 건 시간이 오래 걸리기 때문에,
메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 사용
- 일반적으로 CPU와 가까운 순서대로 L1, L2, L3 계층의 캐시 메모리를 가진다. (가까울수록 빠르고 용량이 작다)
📖 멀티코어 프로세서의 경우 각 코어별로 L1, L2 캐시를 갖고 L3 캐시는 공용으로 갖는 형태로 설계되는 경우가 많다
참조 지역성의 원리
- 캐시 메모리는 메모리보다 용량이 작기 때문에 메모리의 모든 내용을 저장할 수 없음
- 시간 지역성: CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 공간 지역성: CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
📖 캐시 히트와 캐시 미스
- CPU가 자주 사용할 법한 내용을 예측하여 저장
캐시 히트: 예측이 들어맞을 경우(CPU가 캐시 메모리에 저장된 값을 활용할 경우 → 성능 상승)
캐시 미스: 예측이 틀렸을 경우(CPU가 메모리에 접근해야 하는 경우 → 성능 하락)
캐시 적중률: 캐시 히트
횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
캐시 라인: 메모리에서 캐시 메모리에 데이터를 적재할 때 데이터 크기만큼만 적재하지 않고 공간 지역성을 활용하기 위해 특정 크기(캐시 라인)만큼 적재한다.