CPU

CPU의 구성 및 동작

CPU는 명령어를 해석하여 실행하는 장치이다

기본 구성

  • 산술논리 연산장치 (Arithmetic and Logic Unit, ALU) CPU에서 데이터를 연산하는 장치이며, 사칙연산과 같은 산술 연산과 AND, OR 등의 논리 연산을 수행한다.

  • 제어장치 (Control Unit) CPU에서 작업을 지시하는 부분

  • 레지스터 (Register) CPU 내에서 데이터를 임시로 보관하는 곳

CPU의 명령어 처리 과정

  • 먼저 CPU가 연산을 수행하려면 필요한 데이터를 가져와 임시로 보관해야 하는 데, 이때 사용되는 장소가 레지스터이다.

  • 데이터가 레지스터에 준비가 되면 ALU가 두 값을 연산하고 그 값은 다른 레지스터에 저장한다.

  • 제어장치는 명령어를 해석하는 역할을 한다. 아래 LOAD, ADD, MOVE 등의 명령어를 해석하여 제어 신호를 보내고 CPU 내의 데이터 흐름을 조절한다.

LOAD mem(100), register 2;
LOAD mem(120), register 3;
ADD register 5, register 2, register 3;
MOVE register 5, mem(160);

레지스터의 종류

사용자 가시 레지스터 (User-visible register)

  • 사용자 프로그램에 의해 변경되는 레지스터이다.

  • 데이터 레지스터: 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다.

  • 주소 레지스터: 데이터 또는 명령어가 저장된 메모리의 주소는 여기에 저장된다.

특수 레지스터/사용자 불가시 레지스터

  • 위의 두 가지 외에 특별한 용도로 사용되는 레지스터

  • 사용자가 임의로 변경할 수 없다.

  • 프로그램 카운터: 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려주는 역할을 한다. (명령어 포인터라고도 한다.)

  • 명령어 레지스터: 현재 실행 중인 명령어를 저장한다. 제어 장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보낸다.

  • 메모리 주소 레지스터: 메모리와 데이터 교환을 할 때 주소를 지정하기 위해 사용한다. 명령어를 처리하는 과정에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장한다.

  • 메모리 버퍼 레지스터: 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장한다. 위의 메모리 주소 레지스터와 함께 동작한다.

레지스터의 동작

LOAD mem(100), register 2;
  • 프로그램 카운터에는 현재 실행중인 코드의 행 번호 1이 저장된다. 명령어 레지스터에는 LOAD 명령이 탑재된다.

  • 제어장치가 명령어 레지스터에 저장된 명령을 해석하여 메모리에 있는 데이터를 가져오라는 제어 신호를 보낸다.

  • 메모리 주소 레지스터에는 100이 저장되고 메모리 관리자는 메모리의 100번지에 저장도니 값을 메모리 버퍼 레지스터로 가져온다.

  • 제어 장치는 메모리 버퍼 레지스터에 저장된 값을 레지스터 2로 옮긴다.

기타

  • 프로그램 상태 레지스터

  • 플래그 레지스터

  • 상태 레지스터

  • 컨디션 레지스터

버스의 종류

버스는 CPU와 메모리, 주변장치 간에 데이터를 주고받을 때 사용한다. 버스에는 다음 작업을 지시하는 제어 신호, 메모리의 위치 정보를 알려주는 주소, 처리할 데이터가 오고 가며 각각 제어버스, 주소버스, 데이터버스에 실린다.

  • 제어 버스

    • 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고간다.

    • 메모리에서 데이터를 가져올 때는 읽기 신호를, 처리한 데이터를 메모리로 옮겨놓을 때는 쓰기 신호를 보낸다.

    • 주변장치의 경우도 마찬가지이다.

    • 제어 버스는 CPU의 제어 장치에 연결되어 있다.

    • 제어 버스의 신호는 양방향으로 오고간다.

  • 주소 버스

    • 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지를 아려주는 위치 정보가 오고 간다.

    • 주변장치 역시 하드디스크의 어느 위치에서 데이터를 읽어올 지, 어느 위치에 저장할 지에 대한 정보가 주소 버스를 통해 전달된다.

    • 주소 버스는 메모리 주소 레지스터와 연결되어 있으며 단방향이다. (CPU -> 메모리 or 주변장치)

  • 데이터 버스

    • 제어버스가 다음에 어떤 작업을 할지 신호를 보내고 주소 버스가 위치 정보를 전달하면 데이터가 데이터 버스에 실려 목적지까지 이동한다.

    • 데이터 버스는 메모리 버퍼 레지스터와 연결되어 있으며 양방향이다.

  • 버스의 대역폭: 한 번에 전달할 수 있는 데이터의 최대 크기. 만약 32bit CPU라면 버스의 대역폭도 32bit이다.

  • 워드: CPU가 한 번에 처리할 수 있는 데이터의 최대 크기. 32bit CPU에서 1워드는 32bit이다.

Last updated