제어 유닛이란?
- 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) : 마이크로명령어의 실행 순서를 결정하는 회로들의 집합이다.
제어 기억장치가 마이크로프로그램 루틴들을 제어 기억장치에 저장했다고 가정해보자.
제어 기억장치의 전체 용량은 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을 이용하여 분기 목적지 주소를 결정할 수 있다.
'콤퓨타' 카테고리의 다른 글
[Jump to Java] 필기 - 2 (0) | 2023.01.05 |
---|---|
[Jump to Java] 필기 - 1 (0) | 2023.01.03 |
[컴퓨터구조] CPU의 구조와 기능 - 3 (0) | 2021.12.16 |
[컴퓨터구조] CPU의 구조와 기능 - 2 (0) | 2021.11.08 |
[컴퓨터구조] CPU의 구조와 기능 - 1 (0) | 2021.11.01 |