강민철님의 "혼자 공부하는 컴퓨터 구조+운영체제"을 기반으로 학습한 게시물입니다.
📕 목차
1. RAM의 특징과 종류
2. 메모리의 주소 공간
3. 캐시 메모리
1. RAM의 특징과 종류
📌 특징
- RAM에는 실행할 프로그램의 명령어와 데이터가 저장된다.
- 휘발성 저장 장치(volatile memory)
- 실행할 대상(process)이 저장된다.
- 전원이 꺼지면 저장된 명령어와 데이터가 모두 날아간다.
- 주 기억 장치(RAM)
- CPU가 직접 접근할 수 있다.
- 비휘발성 저장 장치(non-volatile memory)
- 보관할 대상(program)이 저장된다.
- 전원이 꺼져도 저장된 내용이 유지된다.
- 보조 기억 장치(SSD, CD-ROM, USB)
- CPU가 직접 접근할 수 없다.
- CPU가 실행하고 싶은 프로그램이 보조 기억 장치에 있다면, RAM으로 복사하여 저장한 뒤 실행한다.
📌 용량과 성능
- RAM 용량이 클 수록 보조 기억 장치에서 프로그램을 가져오는 시간을 절감할 수 있다.
- RAM 용량이 클 수록 많은 프로그램들을 동시에 빠르게 실행하는 데 유리하다.
- 일정 수준을 넘어서면 RAM 용량은 프로그램 실행 속도에 큰 영향을 주지는 못한다. (책을 많이 들고 온다고, 전부 다 읽을 수는 없다.)
📌 종류
1️⃣ DRAM
- Dynamic RAM, 저장된 데이터가 동적으로 변하는(사라지는) RAM
- DRAM은 데이터 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야 한다.
- 소비 전력이 낮고, 저렴하고, 집적도가 높아 대용량으로 설계하기 용이하다.
2️⃣ SRAM
- Static RAM, 저장된 데이터가 변하지 않는 RAM
- DRAM보다 속도는 빠르지만, 집적도가 낮고, 소비 전력도 크며, 가격도 더 비싸다.
- 대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치인 캐시 메모리에서 사용된다.
DRAM | SRAM | |
재충전 | 필요함 | 필요 없음 |
속도 | 느림 | 빠름 |
가격 | 저렴함 | 비쌈 |
집적도 | 높음 | 낮음 |
소비 전력 | 적음 | 높음 |
사용 용도 | 주기억장치(RAM) | 캐시 메모리 |
3️⃣ SDRAM
(SDRAM은 SRAM과 관계가 없다.)
- Synchronous Dynamic RAM, 클럭 신호와 동기화하여 발전된 형태의 DRAM
- 클럭에 맞춰 동작하며, 클럭마다 CPU와 정보를 주고받을 수 있다.
- SDR SDRAM(Single Data Rate SDRAM)이라고도 부른다.
4️⃣ DDR SDRAM
- Double Data Rate SDRAM, 대역폭을 넓혀 속도를 빠르게 만든 SDRAM (최근 가장 흔히 사용)
- 대역폭(data rate) : 데이터를 주고받는 길의 너비
- 한 클럭당 두 번씩 CPU와 데이터를 주고 받을 수 있다. (전송 속도도 2배 가량 빠르다)
- DDR2 SDRAM은 DDR SDRAM보다 대역폭이 두 배 넓은 SDRMA이고, 최근에는 DDR4 SDRAM을 가장 많이 사용한다.
2. 메모리의 주소 공간
📌 물리 주소와 논리 주소
- CPU와 Process는 Memory 몇 번지에 무엇이 저장되어 있는지 다 알지 못한다.
- Memory에 저장된 정보는 시시각각 변하기 때문이다.
- 실행이 끝난 Process는 삭제되고, 같은 Program이어도 실행할 때마다 적재되는 주소가 달라질 수 있다.
- 물리 주소에 애플리케이션이 직접 접근하는 것은 위험하다.
- 주소의 종류
- 물리 주소(physical address)
- 정보가 실제 저장된 하드웨어상의 주소
- kernel을 통해서만 접근할 수 있다.
- 논리 주소(logical address)
- Process에게 부여된 0번지부터 시작되는 개인 주소 (== 가상 주소(virtual address))
- 애플리케이션 관점에서는 하나의 Memory를 온전히 점유하고 있다고 판단한다.
- 물리 주소(physical address)
- 메모리 관리 장치(MMU, Memory Management Unit)
- 논리 주소와 대응되는 물리 주소를 연결(mapping)한다.
- CPU와 주소 버스 사이에 위치해있다.
- CPU가 발생시킨 logical addr에 base register 값을 더하여 physical addr로 변환한다.
- base register : 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소
- logical address : 프로그램의 시작점으로부터 떨어진 거리
📌 메모리 보호 기법
- 논리 주소 범위를 벗어난 주소에 명령이 실행되면 엉뚱한 Process의 값이 바뀐다.
- 한계 레지스터(Limit register)에 의해 논리 주소 범위를 벗어나는 명령어 실행을 방지한다.
- logical address의 최대 크기를 저장한다.
- Base register 값 ≤ Process physical address < Base register + Limit register
- CPU는 Memory 접근 전에 언제나 logical addr이 limit register보다 작은지 검사한다.
- 만약, 범위를 벗어난다면 interrupt(trap)를 발생시켜 실행을 중단한다.
3. 캐시 메모리
📌 저장 장치 계층 구조(memory hierarchy)
💡 저장 장치들을 "CPU에 얼마나 가까운가"를 기준으로 계측적으로 구분한다.
- CPU와 Memory 사이의 명제
- CPU가 메모리에 접근하는 시간은 CPU 연산 속도보다 느리다.
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
- Register는 RAM보다 용량은 작지만, 접근 시간이 압도적으로 빠르고 가격이 비싸다.
- RAM은 USB보다 같은 용량이라 할지라도, 접근 시간이 훨씬 더 빠르고 가격이 비싸다.
📌 캐시 메모리(Cache memory)
- CPU와 메모리 접근 속도의 한계를 극복하기 위한 SRAM 기반 저장 장치
- Memory에서 CPU가 사용할 일부 데이터를 미리 cache memory로 가지고 와서 활용
- 일반적으로 L1, L2 cache는 코어 내부, L3 cache는 코어 외부에 위치
- 멀티 코어 프로세서(multi-core processor)에선 L1, L2는 코어마다 고유한 cache memory로 할당되고, L3 cache는 여러 코어가 공유하는 형태를 가진다.
- 분리형 캐시(split cache)는 접근 속도를 보다 빠르게 만들기 위해 L1 cache를 나눈다.
- 명령어만을 저장하는 L1I cache
- 데이터만을 저장하는 L1D cache
📌 참조 지역성 원리(locality of reference)
- Cache memory는 CPU가 사용할 법한 대상을 예측하여 저장한다.
- 캐시 적중률(cache hit ratio) = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
- 캐시 히트(cache hit) : 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 CPU에서 재활용될 경우 (크리티컬 떴냐?)
- 캐시 미스(cache miss) : 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
- Cache memory는 오직 참조 지역성의 원리에 따라 Memory로부터 가져올 데이터를 결정한다.
- 시간 지역성(temporal locality) : CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 공간 지역성(spatial locality) : CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.