컴퓨터 구조
제어유닛 (Control Unit)
chan4
2023. 4. 20. 17:28
해당 블로그의 내용은 학교에서 배운 내용을 개인적으로 정리한 내용이므로, 잘못된 부분이 있을 수도 있습니다.
제어 유닛 개요
- 명령어 실행은 사이클(cycle)이라는 서브 단계를 연속하여 처리하는 것
- 각 사이클은 마이크로 연산(micro operation)을 연속적으로 실행
- 마이크로 연산은 레지스터 간 전송, 레지스터와 외부 버스 간 전송, 간단한 ALU 연산을 포함
- 각 사이클은 마이크로 연산(micro operation)을 연속적으로 실행
- 프로세서의 제어 유닛은 두 가지 작업을 실행
- 프로세서가 실행 중인 프로그램을 마이크로 연산으로 적절하게 순서대로 수행하도록 함
- 각 마이크로 연산이 실행되도록 제어신호를 생성
- 제어 신호(Control signal)
- 논리게이트를 열거나 닫도록 함
- 레지스터 간의 데이터 전송과 ALU 연산을 실행
- 제어 유닛을 구현하는 기법
- 하드와이어 방법
- 조합 논리회로를 사용하여 하드웨어가 제어 신호를 생성하는 방법
- 마이크로 프로그램
- 제어 변수를 기억장치에 저장한 제어장치
- 하드와이어 방법
제어 유닛의 기능
- 명령어 코드의 해독
- 명령어 실행에 필요한 제어 신호들의 발생
- 마이크로 명령어(micro-instruction)
- 제어 단어(control word)라고도 함
- 명령어 사이클의 각 주기에서 실행되는 마이크로-연산들에 대응되는 비트들로 이루어진 단어
- 마이크로 프로그램(microprogram)
- 마이크로 명령어들의 집합
- 루틴(routine)
- CPU의 특정 기능을 수행하기 위한 마이크로 명령어들의 그룹
- 인출 사이클 루틴
- 실행 사이클 루틴
- 인터럽트 사이클 루틴
- 예를 들면, ADD라는 동작을 수행하기 위한 아래의 코드 4줄이 하나의 루틴이다.
- CPU의 특정 기능을 수행하기 위한 마이크로 명령어들의 그룹
제어 유닛의 구조
- 명령어 해독기(Instruction decoder)
- 명령어 레지스터(IR)로부터 들어오는 명령어의 연산 코드를 해독하여
해당 연산을 수행하기 위한 루틴의 시작 주소를 결정
- 명령어 레지스터(IR)로부터 들어오는 명령어의 연산 코드를 해독하여
- 제어 주소 레지스터(CAR, Control Address Register)
- 다음에 실행할 마이크로 명령어의 주소를 저장
- 이 주소는 제어 기억장치의 특정 위치를 저장
- 제어 기억장치(Control memory)
- 마이크로 명령어들로 이루어진 마이크로 프로그램을 저장하는 내부 기억장치
- 제어 버퍼 레지스터(CBR, Control Buffer Register)
- 제어 기억장치로부터 읽혀진 마이크로 명령어 비트들을 일시적으로 저장
- 서브루틴 레지스터(SBR, SuBroutine Register)
- 마이크로 프로그램에서 서브루틴이 호출되는 경우에 현재 CAR 내용을 일시적으로 저장
- 순서제어 모듈(Sequencing module)
- 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합
CPU의 명령어 세트 설계 과정
- 명령어 종류와 비트 패턴 정의
- 명령어의 실행에 필요한 하드웨어 설계
- 각 명령어를 위한 실행 사이클 루틴 작성
- 마이크로 프로그램 코드들을 제어 기억장치에 저장
- 마이크로 프로그램은 CPU 설계 단계에서 확정
- 그 후에는 변하지 않아, 제어 기억장치는 ROM으로 만들어져 CPU 칩 내에 포함
제어 기억장치의 내부 구성
- 제어 기억장치 용량 = 512 단어(word)
- 전반부(0 ~ 63번지)
- 공통 루틴들 저장
- 후반부(64 ~ 127번지)
- 각 명령어의 실행 사이클 루틴들 저장
명령어 해독
- 명령어의 연산 코드가 지정하는 연산을 위한 실행 사이클 루틴의 시작 주소를 결정하는 동작
- 사상(mapping)을 이용한 해독 방법
- 명령어의 연산 코드를 특정 비트 패턴과 조합하는 방법
마이크로 명령어의 형식
- 연산 필드가 두 개라면, 두 개의 마이크로 연산들을 동시에 수행 가능
- 조건 필드는 분기에 사용될 조건 플래그를 지정
- 분기 필드(Branch field)
- 분기의 종류와 다음에 실행할 마이크로 명령어의 주소를 결정하는 방법을 명시
- 주소 필드(Address field)
- 분기가 발생하는 경우에 목적지 마이크로 명령어의 주소로 사용
마이크로 연산들에 대한 이진 코드 및 기호
- 연산 필드 1에 위치할 마이크로 연산들
- 연산필드 2에 위치할 마이크로 연산들
조건 필드 (CD)
- 두 비트로 구성되며, 분기의 조건으로 사용
- U: 무조건 분기
- I: 만약 I비트(간접 주소지정 비트)가 1이면, 간접 사이클 루틴을 호출
- S: 누산기에 저장된 데이터의 부호가 1이면, 분기
- Z: 누산기에 저장된 데이터가 0이면, 분기
분기 필드 (BR)
- 두 비트로 구성되며, 분기 동작을 지정
- 조건 필드의 조건이 만족되면, 주소 필드(ADF)의 내용을 CAR로 적재(Load)
- 해당 주소로 분기(JUMP or CALL)
- RET: 서브루틴으로부터 복귀(SBR에 저장된 내용을 CAR로 적재)
- MAP: 사상(mapping) 방식에 의하여 목적지 주소 결정
- 조건 필드의 조건이 만족되면, 주소 필드(ADF)의 내용을 CAR로 적재(Load)
마이크로 프로그래밍
인출 사이클 루틴 (Fetch cycle routine)
- *READ 명령어는 현재 MAR 주소에 접근한다.
- 2진 비트 패턴
- 주소: 각 마이크로 명령어가 저장될 제어 기억장치 내의 주소
간접 사이클 루틴 (Indirect cycle routine)
- 2진 비트 패턴
실행 사이클 루틴 (Excute cycle routine)
- 사상(mapping) 방식을 이용
- 각 연산 코드에 대한 실행 사이클 루틴의 시작 주소 결정
- 각 명령어 실행을 위한 루틴 작성
마이크로 프로그램의 순서 제어
- 순서 제어(Sequencing)
- 다음에 실행할 마이크로 명령어의 주소 결정
- CAR의 초기값 = 0
- MUX1
- 다음에 실행할 마이크로 명령어의 주소
- MUX2
- 조건 플래그를 선택하여 주소 선택 회로로 전송
주소 선택 방법
BR(Branch, 분기 필드) = 00(JUMP) 또는 01(CALL)일 때
- C = 0, 다음 위치의 마이크로 명령어 선택
- C = 1, 주소 필드(ADF)가 지정하는 위치로 JUMP 또는 CALL
- 호출(Call) 시에는CAR 내용을 SBR에 저장
- BR = 10(RET) 일 때
- SBR 내용을 CAR로 적재(Load), 복귀
- BR = 11(MAP) 일 때
- 사상(mapping) 결과를 CAR에 적재
제어 신호의 생성
- 제어 기억장치로부터 인출된 마이크로 명령어 내 연산 필드의 비트들이
제어 유닛의 외부로 출력되어 각각 제어 신호로 사용됨 - 제어 신호는 3개의 목적지로 전송
- 데이터 경로
- 제어 유닛은 내부 데이터 흐름을 제어
- ex. 명령어를 인출하면, MBR의 내용이 IR로 전송
- 제어 유닛은 내부 데이터 흐름을 제어
- ALU
- 일련의 제어 신호에 의해 ALU 작동을 제어하며, ALU 내의 다양한 논리 회로의 게이트를 활성화
- 시스템 버스
- 제어신호를 시스템 버스의 제어 라인(버스)으로 전송
- 데이터 경로
제어 신호 발생 방식
- 제어 신호는 마이크로 명령어를 읽을 경우 연산 필드에 있는 비트들의 출력 신호
- 제어 신호를 발생하는 방식
- 수평적(horizontal) 마이크로 명령어
- 수직적(vertical) 마이크로 명령어
수평적 마이크로 명령어 (Horizontal micro-instruction)
- 연산 필드의 각 비트와 제어 신호를 1:1 로 대응
- 필요한 제어 신호의 수만큼의 비트들로 이루어진 마이크로 명령어들을 사용하는 방식
- 제어 단어(Control word) 내의 각 비트들은 직접 제어 신호에 연결
- 장점
- 하드웨어가 간단하고, 해독에 따른 지연 시간이 없음
- 단점
- 마이크로 명령어의 비트 수가 길기 때문에, 더 큰 용량의 제어 기억장치가 필요
수직적 마이크로 명령어 (Vertical micro-instruction)
- 마이크로 명령어의 연산 필드에 적은 수의 코드화(Encoded)된 비트들을 포함
- 해독기를 이용하여 그 코드를 필요한 수 만큼의 제어 신호들로 확장
- 장점
- 마이크로 명령어의 비트 수가 짧기 때문에, 제어 기억 장치 용량이 감소
- 단점
- 해독 시간만큼의 지연 시간 발생