하드웨어

컴퓨터의 하드웨어는 중앙 처리 장치(CPU), 기억 장치, 입출력 장치 크게 3가지로 구성된다.

프로그래밍의 목적

  • CPU를 작동시켜 메모리에 데이터를 저장하고 연산하는 일
  • 따라서 ‘프로그래밍을 잘 한다’, ‘성능을 개선한다’는 ‘간결한 코드 작성’이 아닌 CPU 와 메모리를 효율적으로 사용하는 것을 의미

0과 1

컴퓨터는 0과 1을 어떻게 구분할까?

  • 전류는 전기의 흐름을 뜻한다. 전류의 양이 많으면 전기의 압력(전압)은 높고, 전류의 양이 적으면 전압은 낮다.
  • 저항을 만나면 전류를 억제시키기 때문에 전기의 양(전류)가 적어지고 전류가 적기 때문에 전압 또한 낮아진다.
  • 컴퓨터는 높은 전압(많은 전류)를 1(TRUE)로 인식하고 낮은 전압(적은 전류)를 0(FALSE)로 인식한다.

어떻게 0과 1을 전환할까?

  • 전류가 흐르는 길목에 저항이 있으면 전류는 낮아진다.
  • 전류가 많이 흐르고 있을 때 0을 표현하고자 하면 저항을 두고, 다시 1을 표현하고자 할 때 저항을 제거하면 0과 1을 스위칭할 수 있다.
  • 이 처럼 전류를 흐르게 하고 억제하는 장치, 즉 스위치 역할을 하는 것이 트랜지스터이다.

중앙 처리 장치(CPU)

  • 입력 장치로 부터 받은 명령을 실제로 처리한다.
  • 1초 동안 얼마나 많은 연산을 할 수 있는지 속도를 측정하는 단위는 기가헤르츠(GHz)이다.

CPU(컴퓨터)의 기본처리

  • 메모리의 특정 번지의 값을 레지스터에서 기억하게 한다.
  • 특정 레지스터의 값을 메모리의 특정 번지에서 기억하게 한다.
  • 레지스터간(A, B)의 연산을 한 후 레지스터(C)에서 기억하게 한다.

CPU 내부

  • 제어 장치: 연산의 종류를 선택, 모든 명령이 이루어진다.
  • 연산 장치(ALU): 반드시 레지스터에 기억되어 있는 값을 이용
  • 레지스터: 명령 및 데이터를 일시적으로 기억, 메모리에 저장되어 있는 명령 및 데이터를 레지스터에 복사후 해당 값을 이용해서 해석과 연산을 한다.
  • 이들은 각각의 버스로 연결되어 있다.

CPU Cycle

CPU 의 프로그램 실행 플로우

기계여 명령 = 오퍼레이션 코드 + 오퍼랜드(연산의 대상이 되는 데이터)

#1. Fetch

프로그램 카운터가 가리키고 있는 주소를 CPU 내부(명령레지스터)로 가져온다.

#2. Decode

명령 레지스터에 저장되어 있는 값을 컨트롤 유닛이 해석

용어 짚고 가기

  • Decode: 암호를 풀다. = 명령 레지스터에 저장된 명령을 해석하다.
  • Code: 암호화 하다.

명령에 따라 오퍼랜드가 있기도 없기도 하며, 디코드를 통해 오퍼랜드의 구조를 결정한다.

#3. Operand Fetch

오퍼랜드 패치 = 오퍼랜드를 가져오다. 오퍼랜드가 있는 명령이면, 메모리에서 오퍼랜드를 가져와서 범용 레지스터에 저장한다.

#4. Execute

Control Unit 이 ALU 에게 실행을 명령, ALU 는 두 개 혹은 한 개의 레지스터를 참조하여 실행한다.

#5. Write Back

실행 결과를 레지스터 또는 메모리에 저장한다.

기억장치(메모리)

명령이나 데이터가 저장되는 공간이다.

ROM & RAM

ROM(Read Only Memory)

  • 글자 그대로 읽기 전용 메모리
  • 전원을 꺼도 정보가 사라지지 않는다.
  • 전원이 켜질 때 처음 실행되는 프로그램을 저장할 때 이용된다.

RAM(Random Access Memory)

  • 무작위로 접근할 수 있는 메모리, 읽기쓰기를 할 수 있는 메모리
  • 전월을 끄면 정보가 사라진다.

메모리 계층

메모리는 데이터를 저장하는 공간일 뿐인데 왜 이렇게 다양한 종류가 있을까?

  • 이유는 바로 속도비용
  • CPU 안에 있는 레지스터는 메모리 중에서 가장 빠르지만 가장 비싸기 때문에 용랑은 제일 작다.

지역성과 캐시 히트

  • CPU 에 도달하려면 위에 있는 모든 계층을 거쳐야 한다.
  • 계층을 모두 거칠 경우 속도가 느려질 것 같지만 지역성이라는 개념 때문에 실제로 느려지지는 않다.

캐시

  • CPU 에서 데이터를 요청하면 메인 메모리에서 해당 데이터만 가져오는 것이 아니라, 인접 데이터도 캐시로 가져온다.
  • CPU 는 다른 데이터를 요청시 메인 메모리에서 가져오지 않고 우선 캐시에 요청후, 캐시에 없으면 그 때 메인 메모리에서 가져온다.

지역성(Locality)

  • 데이터 접근이 같은 메모리 공간이나 인접한 메모리 공간에서 자주 일어난다는 의미
  • 실제로 캐시에 필요한 데이터가 존재할 확룰은 90% 이상

QUIZ