👀 제어 장치란?

  • 프로그램에 의해 주어진 연산의 순서를 실행해 나가기 위하여 기억 장치, 연산 장치, 입,출력 장치에 신호를 보내고, 또 이들 장치로부터 신호를 받아 다음에 수행해야 할 조작을 결정하는 부분
  • 컴퓨터의 중추선이라 할 수 있다.
  • 컴퓨터의 자료 처리 속도를 MIPS(Million Instructions Per Second)로 나타내는데 1MIPS는 1초에 백만 개의 명령어가 처리될 수 있다는 것을 의미한다.


제어 장치의 구성

  • 제어 장치(control unit)는 주기억 장치에 연결되어 있는 명령어를 순서대로 호출하고 해독하여 그 결과에 따라 연산 장치, 기억 장치, 입,출력 장치에 제어 신호를 보내 원하고자 하는 동작을 유도한다.

controlUnit

1. 프로그램 계수기(PC : Program Counter)

  • 명령의 실행 순서를 정하기 위하여 다음에 실행될 명령이 들어 있는 번지를 기억해 두는 레지스터
  • 명령어 계수기(IC : Instruction Counter) 혹은 위치 계수기(LC : Location Counter)라고도 한다.

2. 명령 레지스터(IR : Instruction Register)

  • 프로그램 계수기(PC)가 지정한 번지에 기억되어 있는 명령을 꺼내어 이 명령을 해석하기 위하여 임시로 보관하여 두는 레지스터
  • 명령부와 번지부로 구성되어 있다.
    • 명령부 : 실행 명령 코드(operation code)가 들어 있다.
    • 번지부 : 데이터가 기억되어 있는 번지(operand)가 들어 있다.
  • 명령부의 명령 코드가 해독기에 옮겨져 해독되며 번지부의 번지가 번지 해독기에 이송되어 해독된다.

3. 명령어 해독기(Instruction Decoder)와 기계 사이클 부호기

  • 명령어 해독기 : 명령 레지스터의 명령부에 있는 명령 코드를 해독하여 기계 사이클 부호기에 그 신호를 보내는 장치
  • 기계 사이클 부호기 : 명령어 해독기로부터 보내져 온 명령을 실행하는 데 필요한 신호를 만들어 시간 통제 및 제어 장치에 보낸다.

4. 시간 통제 및 제어 장치(Timming and Control Unit)

  • 기계 사이클 부호기에서 수신된 신호를 기계 사이클의 클럭에 따라 동기시켜 필요한 최종 신호를 만들어 순서대로 각 장치들로 송출

5. 범용 레지스터(General Register)

  • CPU 내에서 자료를 처리하는 과정에 자료를 일시적으로 보관하는 장치

6. 작업 레지스터(Working Register)

  • 산술 논리를 수행하는 레지스터로 처리 결과를 보관하는 장치

7. 플래그 레지스터(Flag Register)

  • 상태 레지스터(Status register)라고도 하며 CPU의 연산 결과 상태를 저장
  • 처리 결과 0(zero), 부호(sign), 오버플로우(overflow), 자리올림(carry), 인터럽트(interrupt) 등의 발생 여부를 나타내는 특수 목적 레지스터


제어 장치의 동작

  1. 기억 장치에 있는 명령을 꺼낸다(인출 사이클(fecth cycle))
  2. PC(프로그램 계수기)에 초기 번지를 저장하면 주기억 장치의 명령이 그림의 a, b, c 순서로 명령 레지스터(IR)에 옮겨온다.
  3. 레지스터에는 1개의 명령 내용인 명령 코드와 번지부가 기억된다. 명령 해독기와 기계 사이클 부호기를 통해 해독된다.
  4. 각 장치에 신호를 보내고, 시간 통제 및 제어 장치를 통해 외부 장치들에게 제어 신호를 송출한다.
  5. 이 과정에서 PC의 주기억 장치의 번지는 자동으로 증가된다.

1. 인출 사이클(Fetch cycle)

  • 기억 장치의 번지를 확인하여 명령을 읽어낼 때까지의 단계로 이 기간 동안에 명령이 주기억 장치에서 제어 장치 내의 레지스터로 옮겨진다.

🔸 인출 사이클 진행 과정

  1. PC(프로그램 계수기)의 내용을 CPU 내부 버스를 통하여 MAR(메모리 주소 레지스터)로 전송한다.
  2. MAR의 값에 의해 주어진 메모리 주소의 내용(명령어)을 데이터 버스를 통하여 MBR(메모리 버퍼 레지스터)에 저장한다.
  3. PC의 값이 증가한다.
  4. MBR의 내용(명령어 코드)을 IR(명령 레지스터)로 이동한다.

2. 실행 사이클(Execution cycle)

  • 읽어진 명령에 의해 필요한 신호를 만들어 결과를 얻을 때까지의 단계
  • 명령 레지스터명령 코드 내용이 명령 해독기에 의해 해독되고, 해독된 내용은 부호기에 의해 각 장치로 신호를 보내게 된다.
  • 해독된 내용이 가산 명령이면 부호기의 신호에 의해 누산기(accumulator)의 내용이 소거되고, 명령 레지스터의 번지부가 주기억 장치의 번지 지정에서 산출되어 기억 레지스터로 옮긴 후 누산기와 가산기의 연산에 의해 계산된 결과는 누산기에 임시 저장된다.
  • 여기까지 끝나면 실행 사이클이 끝나고 다시 인출 사이클이 시작된다. 이러한 과정을 기계 사이클(machine cycle)이라 한다.

3. 인터럽트(Interrupt)

  • CPU의 플래그 레지스터는 인터럽트에 관한 정보를 포함한다.
  • 인터럽트가 CPU에 가해지면 현재 처리 프로그램을 일단 중지시키고, 인터럽트 프로그램을 수행시킨다.
  • 인터럽트는 CPU의 제어 버스에 속하며, 인터럽트용 전기 신호 단자에 의해 CPU가 인지하게 된다.
  • 어떤 처리 프로그램의 실행중에 제어 프로그램의 서비스를 요구하는 예기치 못한 일이 발생했을 때에 이걸 하드웨어로 포착해서 감시 프로그램(Supervisor)에게 제어권을 인도하기 위한 기능
  • 인터럽트가 발생하여 제어권이 제어 프로그램(Control program)에 주어지면 제어 프로그램이 중에 준비된 인터럽트 처리 루틴(Interrupt handling routine)이 실행된다. 이 루틴의 처리가 끝나면 시스템은 인터럽트가 발생하기 전 상태로 되돌아가서 먼저 실행되던 프로그램의 실행을 다시 시작한다.

🔸 인터럽트 종류

1. 기계 체크 인터럽트(Machine check interrupt)

  • 어떤 프로그램 실행중에 장치 착오로 인하여 발생하는 인터럽트
  • 기계에 착오가 발생했을 경우에 인터럽트가 일어나 제어 프로그램으로 제어권이 넘어간다.
  • 제어 프로그램 내의 인터럽트 처리 루틴이 CPU의 제어권을 인도받아서 필요한 진단이나 착오 정정의 처리를 수행한 후 제어권을 다시 처리 프로그램에 되돌려 준다.

2. 외부 인터럽트(External interrupt)

  • 오퍼레이터가 필요에 의해서 콘솔에 있는 인터럽트 키를 누를 때 발생하는 인터럽트
  • 오퍼레이터가 시스템에 어떤 요구나 응답을 할 때 필요하다.
  • 인터럽트 키를 누름으로써 인터럽트가 발생하여 오퍼레이터가 필요한 내용의 명령을 손으로 조작할 수 있다.

3. 프로그램 인터럽트(Program interrupt)

  • 프로그램 실행중에 프로그램 상의 착오나 예외 상태가 발생했을 경우 일어나는 인터럽트

4. 입,출력 인터럽트(I/O interrupt)

  • CPU는 입,출력 조작의 계시를 명령하는 것 뿐이지 실제로 입,출력 조작을 지시하는 것은 채널에서 이루어진다. 그래서 채널이 입,출력 조작을 함과 동시에 CPU는 다른 처리를 한다.
  • 입,출력 조작이 끝나거나 입,출력 착오가 발생되면 CPU의 서비스가 필요해지므로 채널이 인터럽트 신호를 발생시킨다.
  • 이 때 CPU는 제어 프로그램 중의 인터럽트 처리 루틴(I/O Interrupt handling routine)이 실행된다.

5. 제어(감시) 프로그램 호출 인터럽트(Supervisor call interrupt)

  • 시스템에 의하여 자동적으로 발생하는 인터럽트가 아닌 프로그램 내에서 특정한 서비스를 요구하는 명령으로 인터럽트를 일으키는 경우


출처

  • 컴퓨터 사이언스(김철 저)