Post

[CS] Chapter 06. 메모리와 캐시 메모리

혼자 공부하는 컴퓨터 구조 + 운영체제 (한빛미디어 출판, 강민철 지음) 으로 공부한 내용을 정리합니다.
CS Study를 통해 함께 공부하고 있습니다. [github repository]

✅ 06 - 1. RAM의 특징과 종류

RAM의 하드웨어적 특성과 종류에 대해 학습한다.
핵심 키워드 : 휘발성 저장 장치 비휘발성 저장 장치 DRAM SRAM SDRAM DDR SDRAM

✔️ RAM의 특징

  • RAM에는 실행할 프로그램의 명령어데이터가 저장된다.
  • 휘발성 저장 장치(volatile memory) : 전원을 끄면 저장된 내용이 사라지는 저장 장치
    • ex) RAM
  • 비휘발성 저장 장치(non-volatile memory) : 전원이 꺼져도 저장된 내용이 유지되는 저장 장치.
    • ex) 하드 디스크, SSD, CD-ROM, USB 메모리와 같은 보조기억장치가 대표적인 비휘발성 저장 장치

보조기억장치는 전원을 꺼도 내용을 유지하지만, CPU는 보조기억장치에 직접 접근하지 못한다. 그래서 일반적으로 보조기억장치인 비휘발성 저장 장치에는 보관할 대상을 저장하고, 휘발성 저장 장치인 RAM에는 실행할 대상을 저장한다.

✔️ RAM의 용량과 성능

  • RAM 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는 데 유리함
  • 하지만, RAM 용량이 무지막지하게 크다고해서 실행 속도가 그에 비례하는 것은 아님

✔️ RAM의 종류

RAM의 종류에는 크게 DRAM, SRAM, SDRAM, DDR SDRAM이 있다.

🔎 DRAM

  • DRAM은 Dynamic RAM의 준말이다.
  • 저장된 데이터가 동적으로 변하는(사라지는) RAM을 의미한다.
  • DRAM은 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야 한다.
  • 소비 전력이 비교적 낮고, 저렴하고, 집적도가 높기 때문에 대용량으로 설계하기 용이하기 때문에, 일반적으로 메모리로써 사용하는 RAM은 DRAM이다.

‘집적도가 높다’는 의미는 ‘더 작고 빽빽하게 만들 수 있다’는 말과 같다.

🔎 SRAM

  • SRAM은 Static RAM의 준말이다.
  • 저장된 데이터가 변하지 않는 RAM을 의미한다.
  • SRAM은 DRAM보다 일반적으로 속도가 빠르다.

시간이 지나도 저장된 데이터가 사라지지 않는다고 해서 SRAM이 비휘발성 메모리인 것은 아니다. SRAM도 전원이 공급되지 않으면 저장된 내용이 날아간다.

  • SRAM은 DRAM보다 집적도가 낮고, 소비 전력도 크며, 가격도 더 비싸기 때문에 메모리로 잘 사용하지 않는다.
  • SRAM은 메모리가 아닌 대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치, 가령 캐시 메모리에서 사용된다.
 DRAMSRAM
재충전필요함필요 없음
속도느림빠름
가격저렴함비쌈
집적도높음낮음
소비 전력적음높음
사용 용도주기억장치(RAM)캐시 메모리

🔎 SDRAM

  • SDRAM(Synchronous Dynamic RAM)은 클럭 신호와 동기화된, 발전된 형태의 DRAM이다.
  • 클럭 신호와 동기화되었다는 말은 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있음을 의미한다.

🔎 DDR SDRAM

  • DDR SDRAM(Double Data Rate SDRAM)은 최근 가장 흔히 사용되는 RAM이다.
  • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다.
  • 대역폭(data rate)이란 데이터를 주고받는 길의 너비를 의미한다.
  • 한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAM을 SDR SDRAM(Single Data Rate SDRAM)이라고 부르기도 한다.
SDRAM설명SDRAM와 비교
DDR SDRAM대역폭이 두 배 넓은 SDRAM2배
DDR2 SDRAMDDR SDRAM보다 대역폭이 두 배 넓은 SDRAM4배
DDR3 SDRAMDDR2 SDRAM보다 대역폭이 두 배 넓은 SDRAM8배
DDR4 SDRAMDDR3 SDRAM보다 대역폭이 두 배 넓은 SDRAM16배

✅ 06 - 2. 메모리의 주소 공간

주소에는 물리 주소와 논리 주소가 있다. 이 두 주소의 개념과 차이, 그리고 변환 방법을 알아보자.
핵심 키워드 : 물리 주소 논리 주소 MMU 베이스 레지스터 한계 레지스터

✔️ 물리 주소와 논리 주소

물리 주소(physical address)
메모리 하드웨어가 사용하는 주소
논리 주소(logical address)
CPU와 실행 중인 프로그램이 사용하는 주소

논리 주소와 물리 주소간의 변환은 CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MMU: Memory Management Unit)라는 하드웨어에 의해 수행된다.

MMU는 CPU가 발생시킨 논리 주소베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다.

베이스 레지스터는 프로그램의 가장 작은 물리주소, 즉 프로그램의 첫 물리 주소를 저장하는 셈이고, 논리 주소는 프로그램의 시작점으로부터 떨어진 거리인 셈이다.

image

✔️ 메모리 보호 기법

다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요하다. 이는 한계 레지스터(limit register)라는 레지스터가 담당한다.

한계 레지스터

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
  • 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장
  • 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값

image

image

✅ 06 - 3. 캐시 메모리

저장 장치 계층 구조를 통해 저장 장치의 큰 그림을 그리고, CPU와 메모리 사이에 위치한 캐시 메모리를 학습한다.
핵심 키워드 : 저장 장치 계층 구조 캐시 메모리 캐시 적중률 참조 지역성의 원리

CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다. CPU가 연산을 아무리 빨리 한다 해도 메모리에 접근하는 시간이 느리면 CPU의 빠른 연산 속도는 아무런 쓸모가 없을 것이다. 이를 극복하기 위한 장치가 캐시 메모리이다.

✔️ 저장 장치 계층 구조(memory hierarchy)

‘빠른 저장 장치’와 ‘용량이 큰 저장 장치’는 양립하기 어렵다. 저장 장치는 일반적으로 아래와 같은 명제를 따르기 떄문이다.

  1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
  2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.

ex) CPU 내의 레지스터, 메모리(RAM), USB 메모리

저장 장치 계층 구조(memory hierarchy)
컴퓨터가 사용하는 저장장치들은 ‘CPU에 얼마나 가까운가’를 기준으로 계층적으로 나타낸 것

image 저장 장치 계층 구조

✔️ 캐시 메모리(cache memory)

  • 캐시 메모리(cache memory)는 CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치이다.
  • 캐시 메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생했다.

image

image 캐시 메모리까지 반영한 저정 장치 계층 구조

  • 캐시 메모리는 CPU(코어)와 가까운 순서대로 계층을 구성한다.
    • 코어와 가장 가까운 캐시 메모리를 L1(level 1) 캐시
    • 그 다음 가까운 캐시 메모리를 L2(level 2) 캐시
    • 그 다음 가까운 캐시 메모리를 L3(level 3) 캐시라고 부른다.

image

일반적으로 L1 캐시와 L2 캐시는 코어 내부에, L3 캐시는 코어 외부에 위치해 있다.

image 멀티코어 프로세서의 캐시 메모리

🔎 분리형 캐시(split cache)

L1 캐시는 조금이라도 접근 속도를 빠르게 만들기 위해 명령어만을 사용하는 L1 캐시인 L1I 캐시와 데이터만을 저장하는 L1 캐시인 L1D 캐시로 분리하는 경우도 있다. 이를 분리형 캐시라고 한다.

image 분리형 캐시

✔️ 참조 지역성 원리(locality of reference, principle of locality)

메모리가 보조기억장치의 일부를 복사하여 저장하는 것 처럼 캐시 메모리는 메모리의 일부를 복사하여 저장한다.

🔎 캐시 히트(cache hit)
자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
🔎 캐시 미스(cache miss)
자주 사용될 것으로 예측하여 캐시 메모리에 저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
🔎 캐시 적중률(cache hit ratio)
캐시가 히트되는 비율 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85%~95% 이상이다.

캐시 메모리는 참조 지역성의 원리(locality of reference, principle of locality) 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정한다.

  1. CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
  2. CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.

1️⃣ ‘최근에 접근했던 메모리 공간에 다시 접근하려는 경향’

변수에 저장된 값은 일반적으로 한 번만 사용되지 않고 프로그램이 실행되는 동안 여러 번 사용된다. ‘최근에 접근했던 메모리 공간에 다시 접근하려는 경향’을 시간 지역성(temporal locality)이라고 한다.

2️⃣ ‘접근한 메모리 공간 근처를 접근하려는 경향’

  • CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 한데 모여 있다.
  • 그리고 하나의 프로그램 내에서도 관련 있는 데이터들은 모여서 저장된다.
  • ‘접근한 메모리 공간 근처를 접근하려는 경향’을 공간 지역성(spatial locality)이라고 한다.
This post is licensed under CC BY 4.0 by the author.

[CS] Chapter 05. CPU 성능 향상 기법

[CS] Chapter 07. 보조기억장치