컴퓨터 안에서 데이터는 어떻게 처리될까?

Ji_min·2021년 3월 28일
3

CS 공부

목록 보기
1/9

목차
1. 컴퓨터 내부는 어떻게 이루어져 있을까?
2. CPU 뜯어보기
3. 데이터의 흐름

1. 컴퓨터 내부는 어떻게 이루어져 있을까?

✔ 컴퓨터 아키텍쳐는 기본적으로 폰 노이만 구조를 따름

CPU - Memory(RAM) - Disk

  1. CPU : 계산기 (연산장치)
    • 연산 → 컴퓨터가 처리하는 일(프로세스)
  2. 메모리 : 저장 공간 → 임시
  3. 디스크 : 저장 공간(저장소) → 반영구

✔ 어떻게 교수님이 강의를 더 잘 할 수 있을까?

→ 강의의 흐름이 끊기면 안 됨

→ 강의자료를 빨리 전달하면 됨

→ ❓ 어떻게 강의자료를 더 효율적으로 전달할 수 있을까?


point1 사실 교수님은 CPU라기보다는 ALU에 가깝습니다...

point2 왜 버스타고 갈까요? 지하철 타고 가면 안될까요?

point3 조교 = Register? 레지스터는 뭘까요?

2. CPU 뜯어보기

CPU란?

✔ Central Processing Unit : 중앙 처리 장치

✔ 자동차의 엔진

  • 컴퓨터를 굴러가게 하는 것.
  • 컴퓨터의 모든 일처리는 CPU를 거친다.

CPU가 하는 일?

✔ CPU는 무엇을 하는 부분일까?

  • 컴퓨터는 메모리에 해야 할 여러 일(프로세스)들을 늘어놓고 하나씩 가져와서 처리한 다음 일이 끝나면 다시 메모리에 일을 돌려준다. 이게 CPU가 하는 일의 전부이다.
  • 이 때, CPU는 한 번에 하나의 일만 처리한다. 아주 짧은 시간에 여러 일을 순차적으로 처리하기 때문에 동시에 처리하는 것으로 착각하게 하는 것이다.

✔ 그렇다면, CPU가 일을 처리한다는 게 무슨 의미일까?

  • 컴퓨터 → 전쟁 시에 미사일의 움직임을 계산하기 위해 탄생한 기계. 계산에 특화되어 있다.
  • 근본적으로는 CPU가 할 줄 아는 일은 딱 하나밖에 없다 → 연산 중에서도 덧셈
  • 0과 1의 이진수를 가지고 덧셈을 통해 모든 일을 처리할 수 있다. 몇 번 더하면 곱셈이 되고 (-)부호를 붙여서 더하면 뺄셈이 되고 몇 번 빼버리면 나눗셈이 된다. 그래서 CPU를 다른 말로 가산기라고도 한다. 여기의 핵심에 ALU가 있다.

CPU의 내부 구성

ALU, 제어장치, 레지스터


이미지 출처

  1. ALU(Arithmetic Logic Unit) : 산술연산장치

    point1 교수님 → 저장된 데이터(강의 자료)를 이용하여 산술 연산(수업)을 수행하는 부분

  2. 제어장치 : 시그널을 통해서 데이터의 흐름을 통제하는 부분. CPU 자신 및 주변 기기를 통제.

  3. 레지스터(register) : CPU 내부의 메모리

    point3 레지스터 != 캐시
    메모리라고 설명은 했지만 실제로는 저장소의 개념은 아니다. 처리를 위해 잠깐 데이터를 들고 있는 개념.

    조교 → 강의자료를 잠깐 들고 있으면서 필요할 때 교수님한테 전달했다가 수업이 끝나면 다시 담당 대학원생에게 반납한다.

    ref 참고자료1 / 참고자료2


CPU의 성능

✔ CPU의 성능이란?

얼마나 빠르게 메모리로부터 명령이나 데이터를 가져오느냐

→ CPU의 속도가 성능과 직결된다.

✔ 그럼 CPU의 성능은 무엇에 의해 결정될까? → 클럭 / 코어 / 캐시 메모리

  1. 클럭(clock)
  • CPU가 하나의 명령어를 처리한 후 다음 명령어를 처리하도록 하는 장치

  • CPU에 일정한 주기로 공급되는 전기 신호

  • CPU는 이 신호를 받고 데이터를 주거나 받고 처리하게 되는데, 이 신호 한 번에 의해서 CPU에서 한 개의 명령이 처리된다.

  • 메모리의 데이터는 캐시에 저장되어 있다가 다 쓰여지면 지워지고 다음 데이터가 들어온다. CPU는 이 캐시의 데이터를 가져다가 쓰는 것이다.

  • 이때 캐시의 데이터는 전기 신호에 의해 다음 데이터가 들어올 수 있게끔 하는데, 이 처리를 하는 게 클럭이다. 클럭이 치면 다음 명령어로 넘어가는 것이다.

  • 이때 캐시에서 CPU로 데이터가 이동하는 빠르기를 CPU의 속도라고 한다.

  • CPU의 속도

    • 초당 몇 번 연산을 수행할 수 있는지

    • 단위 : 헤르츠(Herz)

    • ex) 2.4기가헤르츠 → 2.4 x 1024 x 1024 x1024 만큼의 연산을 수행한다.

    • 비트(bit) → 한 번 연산을 할 때 계산에 들어갈 수 있는 0과 1의 개수

    • ex) 2.4GHerz의 64bit 컴퓨터의 CPU가 한 번 연산을 할 때 → 64 x 2.4 x1024 x 1024 x 1024를 1초에 연산한다. (병목현상을 고려하지 않았을 때 이론상으로)

      ref 병목현상(bottleneck)이란 데이터의 전송이 어떤 이유로 막혀있는 상태를 의미한다.

      ref 킬로 → 1024 / 메가 → 1024x킬로 / 기가 → 1024x메가 / 테라 → 1024x기가

    • 여기에 멀티 코어가 붙으면 코어 수만큼 더 곱해짐

  1. 코어(core)
  • 하나의 뇌에서 몇 개의 생각을 할 수 있는지 → 코어의 수가 많을수록 성능이 좋다.
  • CPU 한 장에 들어가는 연산 장치의 수
  • 듀얼코어 : CPU 안에 가산기(연산장치)가 (병렬로) 두 개 들어가 있어서 동시에 두 가지 프로세스를 처리할 수 있음 (like 엔진이 두 개인 자동차)
  • 쿼드코어(4개), 헥사코어(6개), 옥타코어(8개) ...
  1. 캐시 메모리(cache memory)
  • 메모리(RAM)의 속도는 HDD에 비해 엄청나게 빠르다. 그러나 CPU는 거기에 비할 수 없을 만큼 빠르다. 그래서 메모리의 속도는 CPU를 따라가지 못한다. CPU를 따라갈 만큼 RAM의 성능이 안 되는 것이다. (like 경차에 스포츠카 엔진을 달아놓은 것) 그래서 재빠르게 엔진을 보강할 수 있는 장치가 필요한데, 이런 역할을 하는 것이 캐시 메모리이다.
  • CPU가 일하고 있는 동안 메모리는 CPU 안에 있는 캐시 메모리에게 미리 데이터를 전달해 놓는다. 그러면 CPU는 메모리까지 가지 않고 캐시에서 빠르게 데이터를 가져와서 사용할 수 있게 된다.
  • 캐시 메모리에 들어가는 데이터 → 다음 할 일, 혹은 반복적으로 수행하는 일
  • 메모리보다 속도가 훨씬 빠르기 때문에 훨씬 비싸다.
  • L3, L2, L1 : 보조 장치가 여러개 존재하는 것.
  • 캐시 메모리의 용량에 따라 CPU의 성능 차이가 판가름난다.

3. 데이터의 흐름

어떻게 데이터를 저장하고, 저장된 데이터는 어떻게 CPU로 전달될까?

데이터의 전달은 다음의 순서를 거친다.

디스크 → 메모리 → 캐시 → (레지스터 →) CPU

✔ 디스크

디스크에 저장된 실행파일(.exe)은 코드 부분과 리소스 부분으로 구성되어 있다.

이 실행파일을 실행하려고 할 때, 코드 부분의 일부와 리소스 부분의 일부는 메모리에 올라가게 된다.

이 때 이렇게 메모리에 올라간 일을 프로세스라고 부르고, 이 프로세스를 처리하는 CPU를 프로세서라고 부른다.

디스크 관리 : 디스크의 데이터에 얼마나 빠른 속도로 접근할지 관리하는 작업


✔ 메모리

반도체 : 전류가 흘렀다 안흘렀다 하는 성질을 이용해 임시로 내용을 기억하게 한다.

메모리의 데이터 → 전류가 흐르지 않으면 데이터가 사라진다. → 휘발성을 가진다.

메모리에 저장된 데이터의 주소 → 행렬 구조를 가진다.

프로세서가 메모리에 있는 데이터를 읽거나 메모리에 데이터를 기록할 때는 먼저 메모리의 행에 신호를 보내고 나서 열에 신호를 보내어 주소를 확인하는데, 이때 행 부분을 읽는 신호를 RAS(Row Address Strobe)이라고 하고, 열 부분을 읽는 신호를 CAS(Column Address Strobe)라고 한다.

CPU의 데이터 요청 시 메모리의 동작 과정은 다음과 같다.

  1. CPU가 메인보드 칩셋에게 데이터를 요청하면 메인보드 칩셋이 그 데이터가 있는 곳의 행(row) 주소를 메모리로 보낸다.
  2. 행 주소가 메모리의 행 주소 버퍼로 들어오면 RAS가 그 행에 들어있는 모든 셀을 읽어낸다.
  3. 행 주소만으로는 필요한 데이터가 어디 있는지 알 수 없으니 이번에는 열(column) 주소를 받는다. 그러면 CAS 신호가 일어나 정확한 열을 찾아낸다.
  4. 정확한 행과 열을 찾았으니 필요한 데이터를 찾은 셈이다. 메모리 셀에 있는 내용이 출력 버퍼(output buffer)로 옮겨진다.
  5. 마지막으로 메인보드 칩셋이 출력 버퍼의 내용을 읽고 CPU로 전달한다.

한 줄 요약 : CPU로부터 요청 → RAS로 행 주소 탐색 → CAS로 열 주소 탐색 → 데이터를 읽어서 CPU에 전달


✔ 캐시 메모리

메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 전달자 역할을 하는 메모리

CPU와 메모리 간 데이터 교환을 위해 메모리로부터 미리 데이터를 받아서 잠시 가지고 있다가 CPU에게 제공한다.

CPU와 메인 메모리 사이에 존재한다고 말할 수 있는데, CPU 안에 존재할 수도 있고 역할이나 성능에 따라서는 CPU 밖에 존재할 수도 있다.

<캐시 메모리의 성능>

CPU에서 필요로 하는 데이터가 캐시 메모리에 있느냐 없느냐가 캐시 메모리의 성능을 좌우한다.

CPU가 메모리에 데이터를 요청하면 먼저 원하는 데이터가 캐시에 있는지부터 확인한다. 이 때 CPU가 필요한 데이터가 캐시에 들어와 있으면 캐시 히트(Cache Hit)라 하고 접근하고자 하는 데이터가 없을 경우를 캐시 미스(Cache Miss)라 한다.

이때 원하는 데이터가 캐시에 있을 확률을 히트율(Hit Ratio)라 한다.

따라서 캐시의 성능→ 히트율을 높이는 게 관건

이 히트를 위해서 언제 어떤 방식으로 어떤 데이터를 캐시에 적재해둘 것인지가 히트율을 좌우하는데, 여기에는 Write Through와 Write Back 방식이 있다.

  1. Write Through 방식
    • 쓰기 요청이 들어올 때마다 캐시와 메모리(RAM)에 둘 다 기록
    • 캐시에 의한 접근 시간 개선의 효과가 X
    • 구성 방법이 단순하다.
  2. Write Back 방식
    • 캐시에만 기록해놨다가 캐시에 그 내용이 사라질 때 메모리에 내용을 복사해서 캐시와 메모리의 내용을 동일하게 유지
    • 속도가 빠르다.
    • 구성방법이 복잡하다.
    • 기본적으로는 캐시의 장점을 살리기 위해 Write Back으로 설정한다.

<메모리 관리>

빈 공간이 없을 때 어떤 데이터를 빼버리고 어떤 데이터를 가져올 것인지 또는 어떤 프로세스에 어떤 데이터를 적재시킬지 결정해야 하는 저장공간에 대한 관리가 핵심이 된다.

이 때의 메모리 관리는 교체 알고리즘에 의해 수행된다.

대표적인 교체 알고리즘으로는 FIFO(First In First Out), LRU (Least Recently Used), LFU (Least Frequently Used) 등이 있다. 지역성을 고려해보면 최근에 가장 많이 사용하지 않았던 데이터를 빼버리는 LRU가 효율적이라고 할 수 있다.

ref 메모리의 지역성이란? 특정 부분을 집중적으로 참고하는 것으로, 시간적 지역성과 공간적 지역성이 있을 수 있다. 시간적 지역성이란 최근에 참조한 메모리에 또 접근할 가능성이 높은 특성이고, 공간적 지역성이란 한 번 참조한 메모리 인근을 접근할 가능성이 높은 특성을 말한다.


✔ CPU

프로세스는 엄청나게 많이 존재하는데, CPU는 한 번에 하나의 일밖에 처리하지 못하므로 여러 개의 프로세스들 중에 먼저 처리할 것과 나중에 처리할 것을 나눠야 한다.

이를 시분할이라고 하고, 시분할을 어떻게 할 것인지 결정하는 작업을 스케쥴링이라고 한다.

대표적인 스케쥴링 방식은 선점형 방식(preemptive)으로, 우선순위가 높은 프로세스부터 처리하는 방식이다. 그 외에 비선점형 방식으로는 FCFS(First Come First Served)라고 해서 먼저 들어온 프로세스부터 처리하는 스케쥴링 방식이 있다.

ref 선점형과 비선점형 참고

point2 버스(Bus) : 서버 내부의 컴포넌트들을 서로 연결시키는 회선 → 데이터는 물리적으로는 버스를 통해 전송된다.

further 이러한 CPU의 스케쥴링과 메모리 관리, 디스크 관리를 하는 것이 운영체제이다.


한 줄 요약

Q. "컴퓨터 안에서 데이터는 어떻게 처리될까?" 라기 보다는 "CPU는 어떻게 데이터를 가져와서 처리할까?"

A. 디스크에 저장된 데이터 → CPU가 요청하면 디스크에서 바로 꺼내가는 게 아님. 디스크의 데이터를 메모리에 옮겨놓고 메모리 데이터를 캐시 메모리로 옮겨놓음. 데이터는 가장 먼저 캐시 메모리를 살펴보고 데이터가 있으면 꺼내 씀.


더 알아보고 싶은 내용

  • 운영체제
  • 스레드
  • 가상 메모리
  • 페이지

참고한 자료

profile
Curious Libertine

1개의 댓글

comment-user-thumbnail
2023년 10월 20일

In the game geometry dash lite which transforms geometric shapes into an amazing journey, you can challenge your friends and demonstrate that you are the supreme geometry master.

답글 달기