👀 제어 장치란?
- 프로그램에 의해 주어진 연산의 순서를 실행해 나가기 위하여 기억 장치, 연산 장치, 입,출력 장치에 신호를 보내고, 또 이들 장치로부터 신호를 받아 다음에 수행해야 할 조작을 결정하는 부분
- 컴퓨터의 중추선이라 할 수 있다.
- 컴퓨터의 자료 처리 속도를
MIPS(Million Instructions Per Second)
로 나타내는데 1MIPS
는 1초에 백만 개의 명령어가 처리될 수 있다는 것을 의미한다.
제어 장치의 구성
- 제어 장치(control unit)는 주기억 장치에 연결되어 있는 명령어를 순서대로 호출하고 해독하여 그 결과에 따라 연산 장치, 기억 장치, 입,출력 장치에 제어 신호를 보내 원하고자 하는 동작을 유도한다.
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) 등의 발생 여부를 나타내는 특수 목적 레지스터
제어 장치의 동작
기억 장치
에 있는 명령을 꺼낸다(인출 사이클(fecth cycle))
PC
(프로그램 계수기)에 초기 번지를 저장하면 주기억 장치의 명령이 그림의 a
, b
, c
순서로 명령 레지스터(IR
)에 옮겨온다.
- 레지스터에는 1개의 명령 내용인 명령 코드와 번지부가 기억된다. 명령 해독기와 기계 사이클 부호기를 통해 해독된다.
- 각 장치에 신호를 보내고, 시간 통제 및 제어 장치를 통해 외부 장치들에게 제어 신호를 송출한다.
- 이 과정에서
PC
의 주기억 장치의 번지는 자동으로 증가된다.
1. 인출 사이클(Fetch cycle)
기억 장치
의 번지를 확인하여 명령을 읽어낼 때까지의 단계로 이 기간 동안에 명령이 주기억 장치
에서 제어 장치 내의 레지스터
로 옮겨진다.
🔸 인출 사이클 진행 과정
- 현
PC
(프로그램 계수기)의 내용을 CPU
내부 버스를 통하여 MAR
(메모리 주소 레지스터)로 전송한다.
MAR
의 값에 의해 주어진 메모리 주소의 내용(명령어)을 데이터 버스를 통하여 MBR
(메모리 버퍼 레지스터)에 저장한다.
PC
의 값이 증가한다.
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)
- 시스템에 의하여 자동적으로 발생하는 인터럽트가 아닌 프로그램 내에서 특정한 서비스를 요구하는 명령으로 인터럽트를 일으키는 경우
출처