1. 컴퓨터 구성 개요

컴퓨터는 크게 하드웨어소프트웨어 두가지로 구성되어 있다.

- 하드웨어 : 중앙 처리 장치, 모니터, 자판, 컴퓨터 기억 장치, 그래픽 카드, 사운드 카드, 메인보드와 같은 컴퓨터의 물리적 부품, 컴퓨터를 구성하는 기계적 장치
- 소프트웨어 : 컴퓨터 하드웨어에 직접 명령어를 주거나 다른 소프트웨어에 입력을 제공함으로써, 그것이 수행하도록 구현된 기능을 수행되는 것

하드웨어 구성

중앙처리장치(CPU), 기억장치, 입출력장치로 구성이 되며, 각 장치는 시스템 버스로 연결되어 있다. 시스템 버스는 데이터와 명령 제어 신호를 각 장치로 실어 나른다.

1) CPU

인간으로 비유하면 뇌와 같은 장치이다. 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행하고 처리하는 가장 핵심적인 컴퓨터의 제어 장치. 비교와 연산을 담당하는 산술논리연산장치(ALU)와 명령어의 해석과 실행을 담당하는 제어장치, 속도가 빠른 데이터 기억장소인 레지스터로 구성되어있다.

2) 기억장치

연산, 데이터, 프로그램에 필요한 정보를 보관하고 저장하는 장치이다. 크게 주기억장치(Primary Memory)보조기억장치(Secondary Memory)로 구성된다.

- 주기억장치 : 컴퓨터 내부의 CPU가 현재 처리하고 있는 내용을 저장하고 있는 기억장치이다. 대표적으로 ROM(Read Only Memory)과 RAM(Random Access Memory)으로 나뉘어진다.
- ROM : 비휘발성 메모리. But 기록된 데이터를 읽기만 가능한 장치
- RAM : ROM과 달리 읽고 쓰기 가능 But 휘발성 메모리. 응용 프로그램, 운영체제 등을 불러와서 CPU가 작업할 수 있도록 하는 기억장치.
- 보조기억장치 : 물리적인 디스크가 연결되어 있는 기억장치이다. 주기억장치보다는 느리지만 컴퓨터의 전원이 꺼져도 저장된 데이터가 휘발되지 않고 영구적인 보관이 가능하다.

2. CPU

CPU는 컴퓨터에 있어 가장 핵심적인 역할을 수행하는 부분으로 인간의 뇌에 해당한다. 크게 3가지로 나누어 설명된다.

1) 제어장치

명령어를 순서대로 실행할 수 있게 한다. 주기억장치에서 프로그램 명령어를 꺼내 해독한 후 해독한 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보낸다. 또한 이들 장치가 보낸 신호를 받아 다음에 수행할 동작을 결정한다.

2) 연산장치

사칙연산 등의 산술연산과 논리합, 부정 등의 논리연산을 수행한다. 두 가지 연산을 모두 수행하기 때문에 산술논리연산장치라고도 한다. 연산장치는 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보내 저장한다.

3) 레지스터

명령어 주소, 명령어 코드, 연산에 필요한 데이터, 연산 결과등을 임시로 저장하는 장치이다. 용도에 따라 범용 레지스터와 특수 목적 레지스터로 구분된다.

- 범용 레지스터 : 연산에 필요한 데이터를 임시로 저장하는 레지스터
- 특수 목적 레지스터 : 특별한 용도로 사용되는 레지스터, 용도와 기능에 따라 구분이 된다.(메모리 주소 레지스터, 프로그램 카운터, 명령어 레지스터 등…)

* 특수 목적 레지스터 종류

  1. 메모리 주소 레지스터(MAR) : 읽기와 쓰기 연산을 수행할 주기억장치 주소를 저장
  2. 프로그램 카운터(PC) : 다음에 수행할 명령어 주소를 저장
  3. 명령어 레지스터(IR) : 현재 실행중인 명령어 주소 저장
  4. 메모리 버퍼 레지스터(MBR) : 주기억 장치에서 읽어온 데이터나 저장할 데이터를 임시 저장
  5. 누산기(AC) : 연산 결과 임시 저장

* CPU 동작 과정

  1. 주기억장치는 I/O에서 입력받은 데이터 또는 보조기억 장치에 저장된 프로그램을 읽어온다.
  2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리를 하고 결과를 다시 주기억장치에 저장.
  3. 주기억장치는 처리 결과를 보조기억장치에 젖아하거나 출력장치로 내보낸다.
  4. 제어장치는 1~3 과정에서 명령어가 순서대로 실행될 수 있도록 각 장치를 제어한다.

* 명령어 세트 : CPU가 실행할 명령어 집합

  • 연산코드(Operation Code) + 피연산자(Operand)로 구성되어있다.
  1. 연산코드 : 연산, 제어, 데이터 전달, 입출력 기능을 가진다. (실행할 연산)
  2. 피연산자 : 주소, 숫자/문자, 논리 데이터 등을 저장한다. (필요한 데이터 or 저장 위치)
  • CPU는 프로그램을 실행하기 위해 주기억장치에서 명령어를 순차적으로 꺼내어 해독하고 실행하는 과정을 반복한다. CPU가 주기억장치에서 한번에 하나의 명령어를 꺼내서 실행하는데 필요한 일련의 활동을 명령어 사이클이라고 한다.

  • 명령어 사이클은 인출/실행/간접/인터럽트 사이클로 구성된다.

3. 캐시 메모리(Cache Memory)

  • CPU와 주기억장치 사이의 속도 차이를 완화시키기 위해 사용되는 고속 버퍼 메모리이다. CPU와 주기억장치 사이에 존재한다.

  • CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다.

  • CPU에는 캐시 메모리가 2~3개 정도 사용된다. (L1, L2, L3 캐시 메모리) 속도와 크기에 따라 분류된 것으로 L1 캐시부터 순서대로 사용된다.

* 캐시 메모리 작동 원리

1) 시간 지역성

반복문(for, while)에 사용하는 조건변수처럼 한번 참조된 데이터는 잠시 후 또 참조될 가능성이 높다.

2) 공간 지역성

배열(A[0], A[1]…) 과 같은 연속 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시 후 또 사용될 가능성이 높다.

  • 위의 특성을 이용해 캐시메모리에 CPU가 요청할 것 같은 데이터를 가져다 놓는다. 이 때 CPU가 요청한 데이터가 캐시에 있으면 Cache Hit, 없으면 Cache Miss이다.

* Cache Miss Case 3

  1. Cold miss – 해당 메모리 주소를 처음 불러서 나는 미스
  2. Conflict miss – 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스
  3. Capacity miss – 캐시 메모리의 공간이 부족해서 나는 미스
–> Conflict는 주소 할당 문제, Capacity는 공간 문제

5. ARM 프로세서(Processor)

프로세서는 이론적으로 메모리에 저장된 명령어들을 실행하는 유한 상태 오토마톤(Finite-State Automaton)을 의미한다. 쉽게는 제어장치, 연산장치, 레지스터로 구성된 디지털 시스템의 핵심 부분이다.

* ARM : Advanced RISC Machine

1990년, 영국에서 설립된 ARM사의 ARM 프로세서는 기존의 많은 프로세서의 특징들을 고려하여 설계되었다. 휴대형 임베디드 시스템(Protable Embedded System)을 타겟으로 설계하였다. ARM 프로세서는 전력 소모를 줄여, 배터리로 동작할 수 있게 하려고 작은 다이(die) 사이즈로 설계되었다.

진보된 RISC 기기의 약자로 ARM의 핵심은 RISC이다. RISC : Reduced Instruction Set Computing (감소된 명령 집합 컴퓨팅)