본문 바로가기

computer science

[#혼공] 혼자 공부하는 컴퓨터 구조+운영체제 [Chapter.06]

  해당 책에서 가장 궁금했던 메모리와 캐시 메모리를 공부하는 장입니다. 이 책에서는 메모리를 RAM으로 지칭하고 있습니다. 파이썬으로 데이터 엔지니어랑 작업을 하면서 메모리는 정말 많이 언급되는 키워드입니다. 지금까지 배경을 잘 쌓아왔으니, 메모리를 공부하기 부족하지 않을 타이밍인 것 같습니다. 한 번 알아보도록 하겠습니다. :) 

 

 

 

[06-1] RAM의 특징과 종류

 

 

 

RAM의 특징

 

   RAM에는 실행할 프로그램의 명령어와 데이터가 저장됩니다. 중요한 점은 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날아간다는 것입니다. 즉, 휘발성 저장 장치라고 표현할 수 있습니다. 반면, 전원이 꺼져도 저장된 내용이 유지되는 저장 장치는 비휘발성 저장 장치라고 부릅니다. CPU가 실행하고 싶은 프로그램이 보조기억장치(비휘발성)에 있다면 이를 RAM으로 복사하여 실행할 수 있습니다.

 

 

 

RAM의 용량과 성능

  

  RAM의 용량이 컴퓨터 성능에 영향을 미칠까? CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 가져와야 합니다. 하지만 RAM의 용량이 적다면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어집니다. 

 

예를 들면,

 

(1) 용량이 작은 사례

 

RAM

프로그램 A

보조 기억 장치

프로그램 A
프로그램 B
프로그램 C

 

(2) 용량이 큰 사례

 

RAM

프로그램 A
프로그램 B
프로그램 C

보조 기억 장치

프로그램 A
프로그램 B
프로그램 C

 

하지만, RAM의 용량이 무지막지하게 크다고 해서 프로그램 속도가 비례하여 빨라지는 건 아닙니다.

 

 

 

RAM의 종류

 

(1) DRAM

  Dynamic RAM의 준말입니다. 데이터가 동적으로 변하는 RAM을 의미합니다. 시간이 지나며 사라집니다.

 

(2) SRAM

  Static RAM의 준말입니다. 저장된 데이터가 변하지 않는 RAM을 의미합니다. 시간이 지나며 사라지지 않습니다.

 

(3) SDRAM

  Synchronous Dynamic RAM의 준말입니다. 클럭 신호와 동기화된, 발전된 형태의 DRAM입니다. 클럭 타이밍에 맞춰 CPU와 정보를 주고 받을 수 있음을 의미합니다. 

 

(4) DDR DRAM

  Doubl Data Rate SDRAM은 최근 가장 흔히 사용되는 RAM입니다. DDR SDRAM은 대역폭을 넓혀 속도를 빠르게 만든 SDRAM입니다. 여기서 대역폭이란 '데이털르 주고 받는 길너비'를 의미합니다.

 

 

!QUIZ

p185 [3]번. 다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요.

SRAM, DRAM

- 주로 캐시 메모리로 활용됩니다. SRAM

- 주로 주기억장치로 활용됩니다. DRAM

- 대용량화하기 유리합니다. DRAM

- 집적도가 상대적으로 낮습니다. SRAM

 

 

 

 

[06-2] 메모리의 주소 공간

 

 

 

물리 주소와 논리 주소 

 

  CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 알 수 있을까? 라는 질문에 대답은 "그렇지 않다."입니다. 그 이유는 메모리에 저장된 정보는 시시각각 변하기 때문입니다. 그렇다면, CPU가 실행 중인 프로그램이 이해하는 주소란 무엇일까?

 

  주소에는 메모리가 사용하는 물리 주소와 CPU와 실행 중인 프로그램이 사용하는 논리 주소가 있습니다.

 

물리 주소 : 말 그대로 정보가 실제로 저장된 하드웨어상의 주소입니다.

논리 주소 : 실행 중인 프로그램 각각에 부여된 0번지부터 시작되는 주소입니다.

 

  예를 들면, 현재 메모리에 메모장, 게임, 인터넷 브라우저 프로그램이 적재되어 있다고 가정해봅니다. 각각의 프로그램은 다른 프로그램들이 메모리 몇 번지에 저장되어 있는지 알 필요가 없습니다. 새로운 프로그램이 언제든 적재될 수 있고, 실행하지 않는다면 사라질 수 있기 때문입니다. 

 

  그래서 모두 물리 주소가 아닌 0번지부터 시작하는 자신만을 위한 주소인 논리 주소를 가지고 있습니다. 예를 들어, '10번지'라는 주소는 메모장에도, 게임에도, 인터넷 브라우저에도 논리 주소로써 존재할 수 있습니다. 

 

  그렇다면, 어떻게 논리 주소는 어떻게 물리 주소로 변환될까? 논리 주소와 물리 주소간의 변환은 CPU와 주소 버스 사이에 위치한 메모리 관리 장치라는 하드웨어에 의해 수행됩니다. 

 

 

 

 

 

 

[06-3] 캐시 메모리

 

 

 

 

저장 장치 계층 구조

 

  모든 사용자들은 빠르고 동시에 용량이 큰 저장 장치를 원합니다. 하지만 빠른 저장 장치와 용량이 큰 저장 장치는 양립하기 어렵습니다. "(1) CPU와 가까운 저장 장치는 빠르고 멀리 있는 저장 장치는 느리다. (2) 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다."와 같은 명제가 따르기 때문입니다. 저장 장치 계층 구조는 CPU에 얼마나 가까운가를 기준으로 계층적으로 나타내는 구조입니다.

 

 

종류 속도 용량 가격
레지스터 빠름 작음 비쌈
메모리 ~ ~ ~
보조 기억 장치 느림 저렴함

 

 

 

캐시 메모리

 

  CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 느립니다. 그럼에도 불구하고. CPU는 프로그램을 실행하는 과정에서 메모리에 번번히 접근해야만 합니다. 그래서 등장한 저장 장치가 캐시 메모리입니다. CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반 저장 장치입니다. RAM이 대형 마트라면, 캐시 메모리는 편의점 같은 존재라고 비유할 수 있습니다. 

 

 

 

참조 지역성 원리

 

  캐시 메모리는 메모리보다 용량이 작습니다. 당연하게도 캐시 메모리는 메모리에 있는 모든 내용을 가져다 저장할 수 없습니다. 캐시 메모리는 메모리의 일부를 복사하여 저장하는데, 무엇을 저장할까? 캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장합니다. 실제로 예측이 맞으면 캐시 히트라고 합니다. 반대는 캐시 미스라고 합니다. 보통 적중률은 85
~95%입니다. 보통 예측에 대한 근거는 "(1) 최근에 접근했던 메모리 공간에 다시 접근하려는 경향 (2) 접근한 메모리 공간근처에 접근하려는 경향"입니다.