메모리/캐시메모리
RAM의 특징
<-> 보조기억장치: 비휘발성 저장 장치
- 실행할 대상을 저장하며 전원이 꺼지면 저장된 내용을 잃어버리는 휘발성 저장 장치
- RAM의 용량이 클수록 많은 프로그램들을 동시에 실행하는 데에 유리하다
RAM의 종류
-
DRAM(Dynamic RAM)
- 저장된 데이터가 동적으로 사라지는 RAM
- 데이터 소멸을 막기 위해 주기적으로 재활성화 해야함
- 일반적으로 메모리로 사용되는 RAM
- 상대적으로 소비전력이 낮고 저렴하고 집적도 높음
- 대용량으로 설계하기 용이
👉 주기억장치로 사용
-
SRAM(Static RAM)
- 저장된 데이터가 정적인(사라지지 않는) RAM
- DRAM보다 일반적으로 더 빠름
- 일반적으로 캐시 메모리에서 사용되는 RAM
- 상대적으로 소비전력이 높고 가격이 높으며 집적도가 낮음
- 대용량으로 설계할 필요는 없으나 빨라야 하는 장치에 사용
- SDRAM(Synchronous DRAM)
- 클럭 신호와 동기화된 특별한(발전된 형태의) DRAM -> 대역폭 single
- DDR SDRAM(Double Data Rate SDRAM)
- 대역폭을 넓혀 속도를 빠르게 만든 SDRAM
- 최근 가장 대중적으로 사용함
- DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM -> 각각 SDRAM보다 4배, 8배, 16배
메모리에 저장된 값들이 시시각각 변하기 때문에 CPU와 실행중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못한다.
물리 주소
- 메모리 입장에서 바라본 주소
- 정보가 실제로 저장 된 하드웨어상의 주소
- 물리 주소에는 겹치는 번지 주소가 없다.(0번지에서 z번지까지 차례대로)
논리 주소
- CPU와 실행 중인 프로그램 입장에서 바라본 주소
- 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소
- 각 프로그램이 0번지부터 N번지까지 부여
메모리와 상호작용을 하려면 물리 주소와 논리 주소간의 변환이 이루어진다.
-> MMU(메모리 관리 장치)라는 하드웨어에 의해 변환
MMU
- MMU는 논리 주소와 베이스 레지스터(프로그램의 기준주소) 값을 더하여 물리 주소로 변환
ex) CPU: 프로그램 A의 100번지 데이터 삭제
논리 주소 100 -> MMU(베이스 레지스터) 15000 -> 물리 주소 15100번지 삭제
- 베이스 레지스터: 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장
- 논리 주소: 프로그램의 시작점으로부터 떨어진 거리
메모리 보호
한계 레지스터
-
프로그램 영역을 침범할 수 있는 명령어의 실행을 막음
-
베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장
-
베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터+한계 레지스터 값
베이스 레지스터에 100, 한계 레지스터에 150이 저장되어 있다고 가정.
-> 물리 주소 시작점이 100번지, 프로그램 크기(논리 주소의 최대 크기)는 150
-
CPU는 메모리에 접근하기 전 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사
-
실행중인 프로그램의 독립적인 실행 공간 확보, 다른 프로그램을 침범하지 못하게 보호
저장 장치 계층 구조
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
레지스터 vs 메모리(RAM) vs USB메모리
- 낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도를 감수해야 하고, 빠른 속도의 저장 장치를 원한다면 작은 용량과 비싼 가격을 감수해야 한다.
CPU에 얼마나 가까운가
를 기준으로 계층적으로 나타낼 수 있다.
캐시 메모리
- CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
- CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
- 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가져와서 쓴다
- 집: CPU, 메모리: 대형마트, 캐시메모리: 편의점으로 비유할 수 있다.
캐시메모리를 반영한 저장 장치 계층 구조
-
계층적 캐시 메모리
- L1-L2-L3 캐시: 일반적으로 L1과 L2캐시는 CPU(코어) 내부에, L3캐시는 코어 외부에 위치
- 멀티코어 프로세서의 캐시 메모리의 경우 L3캐시는 외부에서 공유하고 L1,L2캐시는 각각으로 구성되기도 함.
-
캐시 메모리 특징
- 캐시 메모리는 메모리보다 용량이 작다
- 메모리의 모든 내용을 저장할 수 없다
- CPU가 자주 사용할 법한 내용을 예측해서 저장
- 예측이 들어맞을 경우 = 캐시 히트
- 예측이 틀렸을 경우 = 캐시 미스
- 캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
-
참조 지역성의 원리
- CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.