[혼공컴운] Ch06 메모리와 캐시 메모리

Hyunjoon Choi·2023년 7월 15일
0

혼공컴운

목록 보기
6/15
post-thumbnail

📢 본 글은 혼공학습단 미션과 함께 정리해보는 글 입니다.

RAM의 특징과 종류

메모리 중 RAM을 더 깊게 보면 다음과 같다.

RAM의 특징

  • RAM에는 실행할 프로그램의 명령어와 데이터가 저장됨
  • 휘발성 저장 장치: 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날아감

RAM의 용량과 성능

  • RAM의 용량이 작다면 프로그램을 실행할 때 보조기억장치에서 가져오는 횟수가 많아진다.
  • 반대로 RAM의 용량이 크다면 담고 있는 프로그램의 갯수가 많아지므로 보조기억장치에서 가져오는 횟수가 적게 될 수 있다.
  • 필요 이상으로 용량이 커졌다면 속도가 비례하여 증가하지는 않는다. 비슷하기 때문이다.

RAM의 종류

DRAM (Dynamic RAM)

  • 저장된 데이터가 동적으로 변한다. (사라진다.)
  • 시간이 지나면 저장된 데이터가 사라진다.
  • 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화 (다시 저장)해야 한다.
  • 소비 전력이 낮고, 저렴하고, 집적도가 높다. → 대용량 설계에 용이하다.

SRAM (Static RAM)

  • 시간이 지나도 저장된 데이터가 사라지지 않는다.
  • DRAM보다 속도가 일반적으로 빠르다.
  • DRAM보다 소비 전력이 높고, 비싸고, 집적도가 낮다. → 대용량 설계에 불리하다. 그런데 캐시 메모리에서 사용된다. 캐시 메모리는 속도가 중요하기 때문이다.

SDRAM (Synchronous Dynamic RAM)

  • 클럭 신호와 동기화된 DRAM
  • 클럭에 맞춰 동작하며, 클럭마다 CPU와 정보를 주고받을 수 있음

DDR SDRAM (Double Data Rate SDRAM)

  • 최근 가장 흔하게 사용되는 RAM
  • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM (두 배)

메모리의 주소 공간

주소에는 논리 주소물리 주소가 있다.
CPU와 현재 실행 중인 프로그램은 현재 메모리의 특정 번지에 무엇이 저장되어 있는지 알지 못한다. 메모리에 저장된 정보는 시시각각 달라지기 때문이다.

물리 주소와 논리 주소

물리 주소

  • 메모리 입장에서 바라본 주소를 뜻한다.
  • 정보가 실제로 저장된 하드웨어상의 주소이다.

논리 주소

  • CPU, 실행 중인 프로그램 입장에서 바라본 주소를 뜻한다.
  • 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소이다.
  • 각 프로그램들은 자신만을 위한 논리 주소만 알고 있으면 된다. 다른 프로그램들의 정보는 알 필요가 없다.

물리 주소와 논리 주소의 변환

  • 물리 주소와 논리 주소의 변환이 필요하다. 논리 주소의 0번지들은 많은 반면, 실제 물리 주소의 0번지는 하나만 존재하기 때문이다. 그렇기 때문의 특정 프로그램이 가지고 있는 논리 주소의 0번지가 물리 주소로는 어디를 의미하는지 알아야 한다.
  • 논리 주소와 물리 주소의 변환은 메모리 관리 장치 (MMU, Memory Management Unit)라는 하드웨어에 의해 수행된다.
    • MMU는 논리 주소와 베이스 레지스터 값을 더하는 방식으로 논리 주소를 물리 주소로 변환해준다.
    • 베이스 레지스터에는 프로그램의 물리 주소상의 시작 주소가 담긴다.
    • 논리 주소실제로 저장되어있는 프로그램의 시작점으로부터 얼마나 떨어져있느냐를 뜻한다.

메모리 보호 기법

다른 프로그램의 주소에 접근하는 명령어와 같은 것들은 제한될 필요가 있다. 프로그램의 논리 주소 영역을 벗어났기 때문이다.

이와 같이 논리 주소 범위를 벗어나는 명령어 실행을 방지하면서 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 하는 것으로는 한계 레지스터 (limit register)가 쓰인다.

즉 프로그램의 물리 주소 범위는 베이스 레지스터 ≤ xx < 베이스 레지스터 + 한계 레지스터가 된다.

만약 범위를 벗어난다면 인터럽트를 발생시켜 실행을 중단시킨다.


캐시 메모리

CPU의 메모리 접근 시간은 연산 속도보다 느리다. 이 문제를 개선할 때 쓰이는 장치가 캐시 메모리이다.

저장 장치 계층 구조

저장 장치의 특징

  • CPU와 가까운 저장 장치일수록 속도가 빠르다.
  • 속도가 빠를수록 용량이 작다.
  • 속도가 빠를수록 가격이 비싸다.

이를 구분하기 위해 CPU에 얼마나 가까운지를 기준으로 저장 장치들을 구분한 것저장 장치 계층 구조라고 한다.

지금까지 배운 것으로는 레지스터, 메모리, 보조기억장치 순으로 속도가 빠르며, 용량이 작고, 가격이 비싸다.

캐시 메모리

위의 순서에 따르면, CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 느리다.

그런데 메모리는 현재 실행 중인 프로그램의 데이터들이 저장되어 있는 곳이기 때문에 CPU가 자주 접근할 수 밖에 없다. 이때 부족한 속도를 극복시켜줄 때 캐시 메모리를 쓸 수 있다.

레지스터보다 용량이 크고 메모리보다 빠른 특징을 가지고 있다. SRAM 기반의 저장 장치이다.

캐시 메모리는 레지스터와 메모리 사이 계층에 존재한다. 캐시 메모리 또한 계층적으로 구성할 수 있다.

L1 캐시

  • 레지스터보다 용량이 크다.
  • L2보다는 용량이 작다.
  • CPU에 가까워서 속도가 빠르다.

L2 캐시

  • 일반적으로 L1 캐시와 같이 코어 내부에 위치한다.

L3 캐시

  • 일반적으로 코어 외부에 위치한다.

멀티 코어 프로세서에서 L1 캐시와 L2 캐시는 코어마다 고유하게 할당 (즉, 각 코어마다 L1 캐시와 L2 캐시의 내용은 서로 다를 수 있다. 그래서 이들의 싱크를 맞춰주는 것이 필요하다.)되고, L3 캐시는 여러 코어가 공유하는 형태로 사용된다.

분리형 캐시
L1 캐시에서는 접근 속도를 최대한 빠르게 만들기 위해 명령어만을 저장하는 L1I 캐시와 데이터만을 저장하는 L1D 캐시로 분리하는 경우가 있는데, 이를 분리형 캐시라고 한다.

참조 지역성 원리

캐시의 목적을 다시 보자.

캐시는 CPU가 메모리에 접근하는 횟수를 줄이기 위해 등장했다.

그렇다면 캐시에는 CPU가 자주 사용할법한 내용을 담아두어야 CPU가 실제 메모리에 접근하는 횟수를 줄일 수 있을 것이다.

이처럼 캐시 메모리가 담아둔 내용이 실제로 CPU가 찾고자 했던 내용일 경우 캐시 히트라고 한다. 실패했다면 캐시 미스라고 한다.

캐시 적중률은 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)로 계산한다.

이 캐시 적중률을 높이기 위해서는 메모리로부터 잘 가져와야 하는데, 이때 사용하는 원리가 참조 지역성의 원리이다.

1️⃣ CPU는 최근에 접근했던 메모리 공간에 다시 접근하려고 한다.

프로그래밍을 할 때 변수에 값을 담아두면 해당 변수는 다시 활용할 가능성이 높다. 이러한 경우를 뜻한다.

2️⃣ CPU는 접근한 메모리 공간 근처를 접근하려고 한다.

이는 공간 지역성이라고 하기도 한다.

CPU가 실행하려는 프로그램은 관련된 데이터들이 한데 모인 경우가 많다.

따라서 CPU는 최근에 접근했던 공간과 그 근처를 다시 쓸 확률이 높다.


미션

  • 185p 문제 3번: SRAM, DRAM 구분
    • 주로 캐시 메모리로 활용되는 것은 SRAM이다.
    • 주로 주기억장치로 활용되는 것은 DRAM이다.
    • 대용량화하기 유리한 것은 DRAM이다.
    • 집적도가 상대적으로 낮은 것은 SRAM이다.
  • 205p 문제 1번
    • 저장 장치 계층 구조 도식도
      • 위에서부터 아래대로 각각 레지스터 - 캐시 메모리 - 메모리 - 보조기억장치 순서이다.
      • 위에서부터 아래로 갈 수록 빠르고, 저장 용량이 작으며, 가격이 비싸다.

부족하거나 보완할 점이 있다면 댓글 부탁드립니다 😃

profile
개발을 좋아하는 워커홀릭

0개의 댓글