콤퓨타

[컴퓨터구조] 제어 유닛

찹쌀동수육 2021. 12. 18. 23:55

제어 유닛이란?

 - CPU의 장치 중 하나로 프로세서의 조작을 지시하며, 입출력 장치를 제어한다. 또한 명령어를 읽고 해석하며, 데이터 처리를 위한 제어 신호를 발생시킨다.

 

제어 유닛의 기능

 - 제어 유닛은 명령어의 해독과 명령어 실행에 필요한 제어 신호를 발생시킨다.

 - 마이크로 명령어 (Micro Instruction, Control Word) : 명령어 사이클의 각 주기에서 실행되는 각 마이크로연산을 지정해주는 2진 비트로, 제어 단어라고도 한다.

 - 마이크로 프로그램 (Microprogram) : 마이크로명령어들의 집합

 - 루틴(Routine) : CPU의 특정 기능을 수행하기 위한 마이크로명령어들의 그룹이다.

  = 루틴은 인출 사이클 루틴, 실행 사이클 루틴, 인터럽트 사이클 루틴 등이 있다.

 

제어 유닛의 구성 요소

 - 제어 유닛은 명령어 해독기, 제어 주소 레지스터, 제어 기억장치, 제어 버퍼 레지스터, 서브루틴 레지스터, 순서제어 뫃듈 등이 있다.

 - 명령어 해독기 (Instruction Decoder) : IR(명령어 레지스터)로부터 명령어를 받고, 명령어의 연산코드를 해독하여 해당 연산을 수행하기 위한 루틴의 시작 주소를 결정해준다.

 - 제어 주소 레지스터 (Control Address Register : CAR) : 다음에 실행할 마이크로명령어의 주소를 저장하는 레지스터이며, 주소는 제어 기억장치의 특정 위치를 의미한다.

 - 제어 기억장치 (Control Memory) : 마이크로명령어로 이루어진 마이크로프로그램을 저장하는 내부 기억장치이다.

 - 제어 버퍼 레지스터 (Control Buffer Register : CBR) : 제어 기억장치로부터 읽혀진 마이크로명령어 비트들을 일시적으로 저장하는 레지스터이다.

 - 서브루틴 레지스터 (Subroutine Register : SBR) : 마이크로프로그램에서 서브루틴이 호출될 때, 현재의 CAR 내용을 일시적으로 저장하는 레지스터이다.

 - 순서제어 모듈 (Sequencing Module) : 마이크로명령어의 실행 순서를 결정하는 회로들의 집합이다.

그러므로 CPU는 다음과 같이 구성되어있다고 할 수 있다.

 

제어 기억장치가 마이크로프로그램 루틴들을 제어 기억장치에 저장했다고 가정해보자.

제어 기억장치의 전체 용량은 128Word이며, 0~63번지는 공통 루틴들이 저장되고, 64~127번지는 각 명령어의 실행 사이클 루틴을 저장된다.

위의 예시를 그림으로 표현하면 다음과 같다.

 

 

명령어의 해독

 - 명령어의 연산코드가 지정하는 연산을 위한 실행 사이클 루틴의 시작 주소를 결정하는 동작이다.

 - Mapping을 이용하여 해독하는 방법을 이용해보면, 명령어의 연산 코드를 특정 비트 패턴과 조합하는 방식이다.

  = 예를 들어 16bit 명령어가 4bit의 연산코드(xxxx), 1bit의 간접 주소지정비트(m), 11bit의 주소로 구성되어있다.

  = 명령어 코드 : xxxx/m/01110010110

  = 위와 같은 명령어라면 사상함수를 이용하여 "1xxxx00"와 같은 형태로 Mapping하여 실행 사이클 루틴의 시작 주소를 알아 낼 수 있다.

  = 만약 연산코드가 0010 이라면, 실행 사이클 루틴의 시작 주소는 1001000(72)이 된다.

 

 

마이크로명령어의 형식

마이크로 명령어의 형식을 살펴보자

 - 연산 필드가 2개라면 마이크로연산을 동시에 2개 수행가능하다.

 - 조건 필드는 분기에 사용될 조건 플래그를 지정한다.

 - 분기 필드는 분기의 종류와 다음에 실행할 마이크로명령어의 주소를 결정하는 방법을 지정한다.

 - 주소 필드는 분기가 발생했을 때, 목적지 마이크로명령어의 주소로 사용된다.

 - 각각의 연산 필드에 들어갈 수 있는 마이크로연산은 지정되어있다. (서로 다른 명령어를 가짐, 같은 명령어 존재함.)

 

 - 조건 필드는 2bit로 구성되어있으며, 분기의 조건으로 사용된다.

  = 무조건 분기, 간접 주소지정, 누산기에 저장된 데이터 부호가 1이면 분기, 누산기에 저장된 데이터가 0이면 분기

  = 각각은 00, 01, 10, 11로 코드를 가지며 조건도 가지고 있다.

 

 - 분기 필드는 2bit로 구성되어있으며, 분기 동작을 지정한다.

  = 조건 필드의 조건이 만족하면 주소 필드의 내용을 CAR에 적재하고 해당 주소로 분기한다.

  = 서브루틴에서 복귀도 가능하며, Mapping을 이용하여 분기 목적지 주소를 결정할 수 있다.