1. RAM과 ROM
- RAM (Random Access Memory) : 휘발성 저장장치
- RAM의 크기와 성능 간의 관계: 많은 프로그램을 동시에 빠르게 실행하는 데에 유리
- RAM의 종류
- DRAM(Dynamic RAM): 시간이 지나면 점차 저장된 데이터가 사라지는 RAM (메인 메모리에서 주로 사용)
> 재충전: 필요
> 속도: 느림
> 가격: 저렴함
> 집적도: 높음
> 소비전력: 적음
> 사용 용도: 주기억장치 (RAM) - SRAM(Static RAM): 시간이 지나도 저장된 데이터가 사라지지 않는 RAM (캐시 메모리에서 주로 사용)
> 재충전: 필요 없음
> 속도: 빠름
> 가격: 비쌈
> 집적도: 낮음
> 소비전력: 높음
> 사용 용도: 캐시메모리 - SDRAM(Synchromous Dynamic RAM): 클럭과 동기화된 RAM (클럭의 타이밍에 맞춰 CPU와 정보를 주고받을 수 있는 RAM)
- DDRSDRAM(Double Data Rate SDRAM): 대역폭을 넓혀 속도를 높인 RAM
- DRAM(Dynamic RAM): 시간이 지나면 점차 저장된 데이터가 사라지는 RAM (메인 메모리에서 주로 사용)
- ROM (Read Only Memory): 한번 저장을 하면 읽기만 가능한 저장장치
- ROM의 종류
- Mask ROM: 가장 기본적인 형태의 ROM
- PROM(Programmable ROM): 데이터를 한번 새길 수 있는 ROM
==> 한 번에 한해 사용자가 직접 원하는 데이터를 써넣을 수 있는 ROM - EPROM (Erasable PROM): 지우고 다시 저장 가능한 PROM
==> 자외선 혹은 전기를 이용해 지우기 가능 - UVEPROM(Ultra-Violet PROM): 자외선을 이용해 데이터를 지울 수 있는 ROM
- EEPROM(Electrically Erasable PROM): 고전압의 전기 신호를 이용해 데이터를 지울 수 있는 ROM
- 플래시 메모리: EEPROM의 발전된, 저렴한 형태, 반도체 기반의 저장장치
==> 메인 메모리 범주에 속한다기보다는 '범용 넓은 저장장치'
- ROM의 종류
2. 리틀 엔디안과 빅 엔디안
- 메모리에 데이터를 넣는 순서
- 일반적으로 메모리는 바이트 단위로 저장
- But CPU로부터 메모리가 받아들이는 데이터는 4 바이트(32 비트), 혹은 8바이트(64비트) 워드(Word) 단위
- 1바이트씩 저장하는 메모리의 경우: 4바이트 데이터는 네 개의 주소에 걸쳐 저장
- 1바이트씩 저장하는 메모리의 경우: 8바이트 데이터는 여덟 개의 주소에 걸쳐 저장
- 엔디안
- 연속해서 저장해야 하는 바이트를 저장하는 순서
- 나라마다 글을 읽는 순서가 다르듯, 메모리에 바이트를 밀어넣는 순서도 다르다
- 리틀 엔디안, 빅 엔디안
- 서로 다른 시스템 간에 데이터를 전송할 때에는 엔디안을 고려해야 한다.
- NUXI Problem: 엔디안을 고려하지 않아 "UNIX"가 "NUXI" 꼴로 보인 문제
- 오늘날 데이터 송수신 간에 사용자가 엔디안을 고려하지 않는 이유는 네트워크 전송시 엔디안이 빅 엔디안으로 통일되었기 때문
- 빅 엔디안
- 낮은 번지 주소부터 상위 바이트부터 저장하는 방식
- 여기서 상위 바이트란 수를 이루는 가장 큰 값(MSB)
- 1A2B 3C4D를 저장하면 1A, 2B, 3C, 4D 순으로 저장
- 일상적으로 읽고 쓰는 숫자 체계를 읽는 순서와 동일하기 때문에 메모리 값을 직전 읽기 편리 (디버깅)
- 리틀 엔디안
- 낮은 번지 주소부터 하위 바이트부터 저장하는 방식
- 여기서 하위 바이트란 수를 이루는 가장 작은 값(LSB)
- 1A2B 3C4D를 저장하면 낮은 주소번지부터 4D, 3C, 2B, 1A 순으로 저장
- 수치 계산(자리 올림 등)이 편리
3. 논리 주소와 물리 주소
- 물리 주소: 실제 메모리의 하드웨어 상의 주소
- 논리 주소: CPU와 실행 중인 프로그램이 사용하는 주소 (0번지부터 시작)
- 모든 프로그램은 0번지부터 시작하는 각자의 논리 주소를 사용한다.
- CPU는 0번지부터 시작하는 각 프로그램의 논리 주소를 인출/해석/실행한다.
- 주소 변환:
> CPU/프로그램이 사용하는 주소 체계(논리 주소)와 메모리가 사용하는 주소 체계(물리 주소)가 다를 때 주소 변환을 이용한다.
> 논리 주소와 물리 주소 간의 변환을 담당하는 장치: MMU(Memory Management Unit) - MMU의 기본 동작
- 베이스 레저스터 활용한 주소 변환
- 베이스 레지스트 = 기준 주소
- 논리 주소 = 기준 주소로부터 떨어진 수
4. 저장 장치 계층 구조와 캐시 메모리
- CPU와 멀어질수록 달라지는 저장장치의 특성
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 용량이 작고, 가격이 비싸다.
==> 빠른 접근 속도와 큰 용량이 양립하기 어려운 이유
- CPU가 아무리 빨리 정보를 처리해도 메모리가 발맞춰주지 않으면 헛수고다.
이를 극복하기 위해 등장한 것이 캐시 메모리다. - 캐시 메모리
- CPU와 메모리 간의 속도 차를 극복하기 위해 탄생
- CPU와 메모리 사이에 위치, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반
- CPU에서 사용할 법한 정보를 미리 가져와 저장
- CPU가 자주 사용할 법한 내용을 예측 (참조 지역성의 원리(locality of reference))
- 시간 지역성: CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 공간 지역성: CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
- 캐시 메모리에 데이터가 있을 때와 없을 경우
- 캐시 메모리가 CPU가 요구하는 정보를 저장할 경우: 캐시 히트 (메모리 접근 X)
- 캐시 메모리가 CPU가 요구하는 정보를 저장할 경우: 캐시 미스 (메모리 접근)
- 캐시 히트율: 키시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)