컴퓨터 구조

제어유닛 (Control Unit)

chan4 2023. 4. 20. 17:28

해당 블로그의 내용은 학교에서 배운 내용을 개인적으로 정리한 내용이므로, 잘못된 부분이 있을 수도 있습니다. 

 

제어 유닛 개요

  • 명령어 실행은 사이클(cycle)이라는 서브 단계를 연속하여 처리하는 것
    • 각 사이클은 마이크로 연산(micro operation)을 연속적으로 실행
      • 마이크로 연산은 레지스터 간 전송, 레지스터와 외부 버스 간 전송, 간단한 ALU 연산을 포함
  • 프로세서의 제어 유닛은 두 가지 작업을 실행
    • 프로세서가 실행 중인 프로그램을 마이크로 연산으로 적절하게 순서대로 수행하도록 함
    • 각 마이크로 연산이 실행되도록 제어신호를 생성
  • 제어 신호(Control signal)
    • 논리게이트를 열거나 닫도록 함
    • 레지스터 간의 데이터 전송과 ALU 연산을 실행
  • 제어 유닛을 구현하는 기법
    • 하드와이어 방법
      • 조합 논리회로를 사용하여 하드웨어가 제어 신호를 생성하는 방법
    • 마이크로 프로그램
      • 제어 변수를 기억장치에 저장한 제어장치

 

제어 유닛의 기능

  • 명령어 코드의 해독
  • 명령어 실행에 필요한 제어 신호들의 발생
  • 마이크로 명령어(micro-instruction)
    • 제어 단어(control word)라고도 함
    • 명령어 사이클의 각 주기에서 실행되는 마이크로-연산들에 대응되는 비트들로 이루어진 단어
  • 마이크로 프로그램(microprogram)
    • 마이크로 명령어들의 집합
  • 루틴(routine)
    • CPU의 특정 기능을 수행하기 위한 마이크로 명령어들의 그룹 
      • 인출 사이클 루틴
      • 실행 사이클 루틴
      • 인터럽트 사이클 루틴
    • 예를 들면, ADD라는 동작을 수행하기 위한 아래의 코드 4줄하나의 루틴이다.

 

제어 유닛의 구조

  • 명령어 해독기(Instruction decoder)
    • 명령어 레지스터(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) 방식에 의하여 목적지 주소 결정

 

마이크로 프로그래밍

 

인출 사이클 루틴 (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)된 비트들을 포함
    • 해독기를 이용하여 그 코드를 필요한 수 만큼의 제어 신호들로 확장
  • 장점
    • 마이크로 명령어의 비트 수가 짧기 때문에, 제어 기억 장치 용량이 감소
  • 단점
    • 해독 시간만큼의 지연 시간 발생