CS50- 기억장치(Memory)

기억장치(Memory)

Edwith에서 제공하는 CS50의 영상과 자료를 공부하고 정리한 내용 입니다.

TL;DR

  • CPU의 용량이 크지 않은 이유는 한 번에 64bit 정도만 처리하면 되기 때문이다.
  • 하드디스크는 영구적이고 휘발성이 없고 RAM은 일시적이고 전원을 끄면 없어지는 휘발성이 있다.
  • RAM이 더 빠르고 하드디스크가 더 느린데도 하드디스크 용량이 더 큰 이유
    하드디스크에 있는 모든 것을 동시에 봐야 할 필요가 없기 때문이다.
  • 컴퓨터가 많은 일을 한꺼번에 수행한다고 알고 있는데 사실 이건 착각이다.
    CPU한 번에 한 가지 일만 처리할 수 있다.
    RAM이 많을수록 더 많은 프로그램을 한꺼번에 열 수 있는 것처럼 느낄 수 있다.

cs50-memory

CPU는 컴퓨터를 동작시키는 하나의 요소에 불과하다.
프로그램을 실행한다거나 파일을 저장하는 일을 할 때,
모든 비트는 CPU를 통과해야 한다.
CPU의 용량은 굉장히 제한적이어서 1MB 정도의 저장 공간만 있다.

CPU의 용량이 크지 않은 이유?

한 번에 64bit 정도만 처리하면 되기 때문이다.

ex) 64bit 컴퓨터가 있다고 하자.
CPU가 두 수를 더할 때, 첫 번째 숫자도 64bit를 사용하고
두 번째 숫자로 64bit를 사용한다는 것이다.

심지어 파일 크기가 몇 KB나 몇 MB이더라도
CPU 안에는 사용에 필요한 적은 양만 가지고 오는 것이다.

그렇기 때문에 다른 곳에 데이터를 저장해야 하는데,
이것을 RAM이라고 부르며 임의의 접근 기억장치를 뜻한다.

사람들이 컴퓨터 메모리 크기를 물어보는 것은 두 가지 의미가 있다.

  • RAM을 뜻하는 것일 수도 있고 하드디스크를 뜻하는 것일 수도 있다.
    두 가지 모두 메모리의 종류에 속하기 때문이다.

하드디스크 VS RAM

  • 하드디스크는 영구적이고 휘발성이 없다.
  • RAM은 일시적이고 전원을 끄면 없어지는 휘발성이 있다.

일반적으로 사람들이 메모리의 크기를 물어볼 때 거의 대부분은 RAM에 대하여 묻는 것이다.
하지만 항상 그렇지는 않다는 것을 명심하자.


컴퓨터에 있는 메모리의 종류

CPU 내부에 있는 메모리까지 포함하면 5개의 메모리

파일이나 프로그램을 더블클릭하면 도착하는 곳이 RAM이다.
문서를 작성하거나 프로그램을 실행할 때 자료나 프로그램들은 하드디스크에만 저장되는 것이 아니라, 하드디스크 드라이브(HDD)에 복사되고 RAM에 일시적으로 저장된다.

RAM에 저장되는 이유

  1. RAM하드디스크보다 훨씬 속도가 빠르기 때문이다.

2.하드디스크에 500GB의 용량이 있다고 가정해보자.
RAM에는 한 자릿수에 불과한 2GB 정도만 있을 수 있다.

여기서 의문이 생긴다.
Q) RAM이 더 빠르고 하드디스크가 더 느린데도 왜 느린 것을 더 많이 가지고 있는 걸까?
하드디스크에 있는 모든 것을 동시에 봐야 할 필요가 없기 때문이다.(모든 것을 한 번에 볼 필요가 없다.)
ex) 과제물 하나를 열어놓거나 프로그램을 몇 개 실행시킬 수 있지만
폴더 안에 있는 모든 프로그램들을 동시에 실행하는 일은 없을 것이다.
-> 현실적으로 이것들이 다 필요한 것은 아니다.

CPU에는 어차피 병목현상이 있다.
Why?
하드디스크 용량과 무관하게 통이 더 좁은 파이프라인으로 흘러가게 될 것이기 때문이다.

  1. RAM의 용량이 더 작은가?
  • 하드디스크보다 비싸다.(같은 용량을 사면 RAM하드디스크보다 더 비싸다.)
  • 500GB의 용량의 RAM을 사서 컴퓨터에 꽂을 수 없다.
    • 기술적으로 아직 RAM이 500GB의 용량을 담을 수 없다.
      요즘 최대로 가질 수 있는 양이 굉장히 크긴 하지만,
      128GB나 256GB도 가능하겠지만, 서버에나 그렇게 쓰인다.
    • 우리가 쓴다면 2GB, 4GB, 8GB 정도이고 데스크톱은 16GB나 32GB 정도 된다.
    • 소비자 시장에서 500GB는 아직 말도 안 되게 큰 숫자이다.
      -> 따라서 이 정도 크기는 소비자 시장에서는 가지기 어렵다.

그래도 괜찮다.
Why?
우리와 같은 사람들은 컴퓨터에게 그렇게 많은 일을 한꺼번에 부탁하는 것이 불가능하기 때문이다.

결국 RAM하드디스크 모두 서로 상용하며 계속 커질 것이다.

용량이 크고 속도가 느린 곳에서 용량이 작고 속도는 빠른 곳으로 가는 파이프라인이 만들어진다.

하드디스크에 있는 프로그램을 더블클릭하면 RAM에 적재되고
어떠한 일이 실제로 발생하기 위해서 (컴퓨터가 키 입력이나 마우스 클릭에 반응하기 위해서)
CPU로 비트가 흘러 들어간다.

RAM의 종류

  • L1 캐시
  • L2 캐시
  • L3 캐시

용량이 더 작고 비싸지만 더 빠르고 작은 크기의 메모리이다.
CPU에 가까울수록 더 빨리 데이터를 받을 수 있지만 그 데이터 양은 적다.
Why?
기술적인 효율성을 위해 이러한 흐름으로 만든다.

CPU가 항상 일하게 만들고 싶다면,
CPU 옆에 서있는 사람들이 가장 빠른 것이 좋을 것이다.
Why?
비트를 계속해서 줄 수 있을 것이므로.
이 줄 맨 끝에 있는 하드디스크는 좀 느려도 괜찮다.
Why?
충분한 양만 주어지면 메가바이트나 킬로바이트 양의 비트들이 저장될 것이고
CPU는 항상 할 일이 있을 것이다.

따라서, 데이터가 이렇게 큰 쪽에서 작은 쪽으로 옮겨가는 것이 실제로 문제가 되지 않는다.

하드디스크 용량에 신경 써야 하는 이유

하드디스크가 더 있으면 더 많은 영화, 음악, 문서를 저장할 수 있고 백업도 더 많이 할 수 있으므로 소비자로서 장점이 많다.

RAM 용량이 클수록 좋은 이유

RAM이 크면 어떤 것을 할 수 있을까?
더 많은 기능을 동시에 수행할 수 있다.
그래서 어떤 프로그램이나 파일을 더블클릭해서 열 때마다
결국 하드디스크에서 RAM으로 적재하게 된다.
적어도 우리가 사용해야 할 부분은 RAM으로 적재된다.

대부분의 사람들은 여러 개의 프로그램을 한꺼번에 쓸 것이다.
이 프로그램들은 사실 동시에 실행되고 있지 않다.

컴퓨터는 엄청나게 빠르고 우리는 그에 비해 느리기 때문에
컴퓨터는 이 일들이 한꺼번에 일어나는 것처럼 착각하게 만드는 것이다.

결국 컴퓨터 안을 들여다보면 보통 CPU는 1개밖에 없다.
요즘에는 2개의 CPU나 2개의 코어가 있다고들 하지만
컴퓨터 안에는 사실 이 뇌 역할을 하는 것이 거의 없다.

그래서 대여섯 개나 10개 정도의 프로그램을 돌리면 실제로 일어나는 일은
1초에 10억 개씩 처리하는 속도라면 컴퓨터는 MS Word 실행하여
비트들을 순식간에 읽고 쓰고 처리하며
동시에 AOL 메신저 Safari, Firefox 브라우저, 이메일 등 모든 프로그램을 그 순간 안에 처리한다.
그 순간에 일어난 일들이 한꺼번에 발생된 것처럼 보인다.

-> 컴퓨터가 많은 일을 한꺼번에 수행한다고 알고 있는데 사실 이건 착각이다.
-> 결론적으로 CPU는 한 번에 한 가지 일밖에 처리할 수 없다.
좋은 컴퓨터는 두 가지 일을 처리할 수도 있다.
어찌 되었든 우리는 이 차이를 느끼지 못한다.

-> RAM이 많을수록 더 많은 프로그램을 한꺼번에 열 수 있다.

그런데 이게 필수일까?
프로그램들을 계속해서 종료해야 한다면 귀찮지 않을까?

가상 기억 장치

그래픽 프로그램 포토샵을 실행한다고 해보자.
윈도우나 MacOS 같은 요즘 컴퓨터는 가상 기억장치라는 것을 제공하는데
잘 드러나지 않는 비밀 기능이긴 하지만,
윈도우나 MacOS가 어떤 파일이 공간을 너무 많이 차지한다고 여기면
사용자가 어떤 다른 프로그램을 앞으로 끌어 가지고 올 때 RAM에 있는 것들을 하드디스크 내의 별개의 공간으로 옮긴다.
우리가 눈치채지 못하게 이 비트들을 RAM에서 하드디스크로 옮긴다.
우리가 앞으로 끌어당긴 그 프로그램을 실행시키기 위한 공간이 필요하기 때문이다.

원하는 프로그램이 다른 프로그램보다 앞으로 오게끔 그 아이콘을 클릭하면 뭔가 버벅거리고 지연이 좀 있다.
-> 아마도 후순위에 있던 프로그램이 우리가 모르는 사이에 잠시 동안 하드디스크의 한 공간으로 옮겨져 가상 장치로 저장되어 있기 때문에 그런 것이다.

우선순위로 바뀌는 데에 영점 몇 초에서 몇 초까지도 걸리는 이유는
하드디스크에 있던 그 비트들을 몰래 다시 RAM으로 옮겨놓아야 하고
RAM에 있던 후순위로 옮겨야 할 그 프로그램은 다시 하드디스크로 옮겨야 하기 때문이다.

-> RAM이 많으면 이런 짜증 나는 과정들을 거치지 않아도 된다.
그래서 요즘 시대에 컴퓨터를 살 때 가장 많은 투자를 하면 좋은 부분이
CPU 속도를 늘리거나 디스크 공간을 늘리는 것도 좋지만 체감상으로 느끼기에 RAM이 아닐까 싶다.
-> 컴퓨터가 한 번에 더 많은 양을 처리하는 듯한 착각을 느끼게 하니까.

L2 캐시, L1 캐시

대부분 숫자가 높으면 더 좋은 것은 맞지만
다른 요인들도 많기 때문에 1.3GHz 컴퓨터가 1.5GHz 컴퓨터보다 더 빠를 수 있다.
Why?
더 느릴 것 같은 1.3GHz 컴퓨터가 RAM 용량이 더 클 수도 있다.
-> 이렇게 되면 한 번에 더 많은 일을 처리할 수 있다는 뜻이고 여러분은 사람이기 때문에 지연을 잘 느끼지 못하기 때문에 CPU내의 L2나 L1 캐시가 더 좋을 수도 있다.
더 많은 비트들을 CPU 근처에 대기시켜서 도울 수 있을 것이다.

어떤 프로그램은 특정 연산에 최적화되도록 설정되어 있다.
게임을 하거나 포토샵을 쓸 때 그 상황에 더 좋은 CPU가 있고 그래서 결국에는 단순히 사양을 읽는 것보다 구매평을 읽거나 컴퓨터를 좋아하는 사람이 올린
포토샵 같은 프로그램을 서로 다른 컴퓨터에 실행시켜 속도를 비교하는 동영상을 참고하는 것이 좋다.

이렇게 실제 시간을 보고 비교해서 결정하는 것이 기계적 세부사항을 파고드는 것보다 나을 수도 있다.


참고