All Articles

CPU

CPU

About CPU

CPU : Central Processing Unit 중앙 처리 장치 컴퓨터가 사용되는 그 어떤 것(타블렛, TV, 노트북, 냉장고, 디지털 카메라 etc)이든 CPU를 가지고 있다. CPU는 컴퓨터의 정중앙(center)에서 기계어로 컴파일 된 명령어들을 해석하여 프로그램을 실행(processing)하는 장치(unit)이다. 명령어를 실행하기에 프로세서(processor)라고 부르기도 한다.

우선 CPU는 어떻게 이루어져 있는지 알아보도록 하자.

CPU Architecture

CPU Architecture


CPU는 ALU, Register and Control Unit, Bus 로 이루어져 있다.

ALU (Arithmetic and Logical Unit) : 산술논리 연산장치

연산의 종류
  1. 산술
  2. 기본적인 산술 연산으로써 + , - , * , /, % 등이 있다.
  3. 논리
  4. 참 또는 거짓의 결과값을 리턴할 AND, OR , NOT, NAND, XOR 등이 있다.
  5. 데이터
  6. 데이터 전송에 관련된 연산을 의미한다.
    레지스터 ←→ 레지스터 | 레지스터 ←→ 기억장치 | 기억장치 ←→ 기억장치
  7. 입출력
  8. CPU와 외부 장치들간의 데이터 이동을 위한 연산
  9. 프로그램 제어
  10. 명령어 실행 순서를 변경하는 연산
    분기(Branch) | 서브루틴(Subroutine call) 호출

연산 장치의 종류

  • 누산기 ACC
  • 연산 결과를 임시로 기억한다.
  • 가산기 Adder
  • 2진수들의 더하기를 수행한다.
  • 보수기 Complement
  • 2진수들의 더하기를 수행한다.
  • 데이터 레지스터 Data Register
  • 연산에 필요한 자료를 보관하는 레지스터이다.
  • 프로그램 상태 레지스터 PSWR (Program Status Word Register)
  • 플래그 레지스터 Flag Register, 상태 레지스터 Status Register 라고도 한다.

Register set: 레지스터 세트

* 레지스터에 관한 자세한 내용은 추후 업로드 될 "레지스터" 포스트에서 알아보도록 하자

CPU안에는 다양한 레지스터들로 이루어져 있다. 이를 레지스터 세트라고 한다. 레지스터는 타 메모리에 비해 속도가 제일 빠른데 그 이유는 다른 기억장치들보다 CPU와 가장 인접해 있기 때문이다. 레지스터는 CPU의 수행 능력을 올려준다. 레지스터의 종류는 PC, AR, IR, MAR, MBR이 있다.

  1. PC : Program Counter
  2. 다음턴에 어느 명령어를 가져와 실행해야 하는지에 관한 주소를 기억하고 있는 레지스터. CPU에게 실행해야 하는 시작점을 알려준다.
  3. AC : Accumulator
  4. 데이터를 일시적으로 저장하는 레지스터
  5. IR : Instruction Register
  6. 가장 최근에 인출된 명령어 코드가 무엇인지를 기억하고 있는 레지스터. 현재 실행 중인 명령을 기억한다.
  7. MAR : Memory Address Register
  8. PC에 저장된 명령어 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터
  9. MBR : Memory Buffer Register
  10. 기억장치에 쓰일 데이터나 기억장치로부터 읽혀진 데이터를 일시적으로 저장하는 레지스터

CU (Control Unit) : 제어 장치

컴퓨터의 모든 장치들의 제어를 담당한다. 메모리에 올려진 프로그램의 명령을 꺼내 해석하여 각각의 장치에 지시를 내린다.

BUS : 버스

데이터들은 버스를 통해 전송된다. CPU나 메모리, 입출력 장치간의 필요한 정보들을 전송하기 위해 사용되는 전기적 통로이다.

종류

  • 주소 버스 (Address Bus)
  • 기기의 주소를 지정할 때 사용하는 버스이다. 한 가지 방향으로만 데이터를 전송하기에 단반향 버스(Unidirection Bus)라 불린다. 특정 메모리 주소를 찾을때 사용된다.
  • 데이터 버스 (Data Bus)
  • 기기에 데이터를 전달하는 버스이다. 양방향 버스로써 CPU가 메모리나 I/O 기기에 데이터를 전송한다.
  • 제어 버스 (Control Bus)
  • 현재 상태의 변경이나 데이터 전송 제어 신호를 전달하는 버스이다. CPU가 현재 상태나 상태 변경을 메모리 또는 I/O 기기에 제어 신호로 알릴때 사용된다.

CPU의 명령어 실행

CPU의 목적은 프로그램을 실행하기 위함이라 할 수 있다. 프로그램이 실행되기까지의 과정을 자세히 알아보도록 하자.
실행될 프로그램이 메인 메모리에 올려진다. 이 과정을 process라고 한다. CPU는 메인 메모리에 들어간 프로그램(프로그램은 결국 수 많은 명령어들의 덩어리)을 실행한다.

  1. Fetch
  2. 메모리에서 데이터를 가져와 CPU의 register에 적재하는 과정을 말한다.
  3. Indirect
  4. 메모리를 참조할 때 간접주소 방식을 사용하는 경우에 실행된다.
  5. Execution
  6. 불러온 데이터와 명령으로 중앙처리장치가 연산을 수행하는 단계를 말한다.
  7. Interrupt
  8. 만약 프로그램 실행 중에 예외적인 상황이 발생할 경우에 실행된다.

Reference