Skip to main content

Command Palette

Search for a command to run...

Function and structure of control unit & Microprogram in Computer Architecture, week 8

제어 유니트의 기능과 구조 & 마이크로 프로그램, 컴퓨터 구조, 8주차

Updated
5 min read

Goals

  • 제어 유니트의 기능과 구조를 설명할 수 있다.
  • 마이크로 명령어의 형식을 설명할 수 있다.

  • 마이크로 프로그래밍과 프로그램의 순서제어를 설명할 수 있다.

💡컴퓨터의 구성요소: 중앙 처리 장치(CPU), 메모리(Memory), 입출력 장치(I/O device)

💡중앙 처리 장치 구성 요소(CPU): 산술 논리장치(ALU), 레지스터 세트(Register set), 제어장치(Control unit)

제어 유니트의 기능과 구조

(Function and structure of control unit)

제어 유니트의 기능

CPU의 핵심 기술 중 하나로 컴퓨터의 모든 작업을 조정하고 제어한다. 제어 유닛은 명령어를 해석하고 실행하기 위해 다른 하위 시스템과 상호 작용하며, 이러한 명령어의 실행을 위해 마이크로명령어(micro-instruction)를 사용할 수 있다.

제어 유니트의 구성요소

명령어 해독기, 제어 주소 레지스터, 제어 기억장치, 제어 버퍼 레지스터, 서브루틴 레지스터, 순서제어 모듈 등으로 구성되어 있다.

  • 명령어 레지스터(IR) 현재 실행 중인 명령어를 저장하는 레지스터로, 제어 유닛에서 명령어를 해독하는 데 사용된다.

💡명령어 해독기(instruction decoder) 명령어 레지스터(IR) 로부터 들어오는 명령어의 연산 코드를 해독한다. 이 코드를 통해 제어 신호를 생성하여 무슨 작업을 해야할지 정한다. 또한 마이크로명령어(micro-instruction)를 생성하는데 사용된다. 그 후엔 해당 연산을 수행하기 위한 루틴의 시작 주소를 결정한다(CAR).

💡제어 주소 레지스터(control address register: CAR) 다음 에 실행할 마이크로명령어의 주소를 미리 저장하는 레지스터이다. 피치 주소 또는 다음 명령어를 가리키는 주소로 사용된다.

💡제어 기억장치(control memory) 마이크로명령어들로 이루어진 마이크로프로그램을 저장하는 자그마한 내부 기억장치이다. 명령어의 각 비트마다 특정한 동작을 수행하는 데 사용된다.

제어 버퍼 레지스터(Control Buffer Register) 제어 기억장치로부터 읽혀진 생성된 마이크로명령어 비트들을 일시적 으로 저장하는 레지스터이다. 데이터 플로우를 관리한다.

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

순서제어 모듈(Sequence Control Module) 마이크로명령어의 실행 순서를 결정하는 회로들의 집합이다. 명령어의 흐름을 관리하고 제어하는데 사용한다.

CPU의 명령어 세트 설계 및 구현 과정

1단계 요구사항 분석: 이 과정에서 CPU가 수행해야하는 작업과 지원해야하는 명령어들의 종류를 결정한다. 이를 통해 명령어 세트의 기능과 구조에 대한 전반적인 개요를 수립한다.이는 명령어들이 CPU에서 어떻게 인식되고 해석되는지를 명세화하는 과정이다.

2단계 명령어 세트 설계: 이 과정에서는 요구사항 분석을 기반으로 각 명령어를 실행하기 위해 필요한 하드웨어를 설계한다. 이는 명령어를 해독하고 실행하는 데 필요한 제어 장치, 레지스터, ALU 등의 구성 요소를 구현하는 과정이다. CPU의 명령어 형식, 명령어 종류, 주소 지정 방식, 명령어 실행 순서 등을 결정한다. 명령어의 형식과 기능을 정의하고, 명령어 간의 상호작용을 고려하여 명령어 실행에 필요한 하드웨어를 설계한다.

3단계 인코딩: 각 명령어의 실행 사이클을 정의하고, 이를 마이크로프로그래밍 형태로 작성한다. 이는 명령어의 실행 과정을 세부적으로 기록하고 명령어 별로 필요한 제어 신호를 생성하는 과정이다.

4단계 하드웨어 구현: 작성된 마이크로프로그램 코드들을 제어 기억장치에 저장한다. 이는 CPU가 명령어를 해석하고 실행하기 위해 필요한 제어 신호를 제공하는데 사용된다. 이렇게 저장된 마이크로프로그램은 CPU가 명령어를 실행하는 동안 사용된다.


마이크로 프로그래밍(Microprogramming)

📍마이크로명령어의 형식에 대한 용어는 컴퓨터 아키텍처 및 명령어 세트에 따라 다를 수 있다. 각 CPU 제조사나 디자이너는 자체적인 아키텍처와 명령어 집합을 가지고 있으며, 이에 따라 용어가 조금씩 다를 수 있다. 예를 들어, 한 회사의 CPU에서는 "연산 필드 1"을 "연산 코드"라고 부를 수 있지만, 다른 회사의 CPU에서는 이를 다르게 명명할 수 있다.

마이크로 명령어의 형식의 예 (17비트)

  1. 연산 필드(Operation Field):

    • 연산 필드가 두 개인 경우, CPU가 두 개의 연산을 동시에 수행할 수 있다. 예를 들어, 더하기와 뺄셈 연산을 동시에 수행할 수 있다.

  2. 조건 필드 (Condition, CD): 2비트

    • 조건 필드는 분기 명령을 실행할 때 사용된다. 분기 명령은 특정 조건이 충족될 때만 실행된다. 조건 필드는 분기에 사용될 조건 플래그(condition flag)를 지정한다. 예를 들어, 조건 필드가 "1"인 경우에만 분기 명령이 실행될 수 있다.

  3. 분기 필드 (Branch, BR): 2비트

    • 분기의 종류(유형)와 분기가 발생할 때 다음에 실행할 마이크로명령어의 주소를 결정하는 방법을 명시한다.

    • ADF = 주소 필드, 제어 주소 레지스터(control address register: CAR) 다음 에 실행할 마이크로명령어의 주소를 미리 저장하는 레지스터, RET = Return, MAP = Mapping

  4. 주소 필드 (Address field, ADF):

    • 주소 필드의 내용은 분기가 발생하는 경우에 목적지 마이크로명령어의 주소로 사용된다. 분기 명령을 실행할 때 이 필드에 저장된 주소로 분기된다.

이러한 필드들을 함께 조합하여 마이크로명령어를 구성하고, CPU는 이러한 명령어를 실행하여 원하는 작업을 수행한다.

마이크로 프로그래밍

수직적 마이크로프로그래밍(Vertical microprogramming) 마이크로명령어의 연산 필드에 적은 수의 코드화된 비트 들(encoded bits)을 포함시키고, 해독기를 이용하여 그 비트들을 필요한 수 만큼의 제어 신호들로 확장하는 방식이다.

  • 장점: 마이크로명령어의 길이(비트 수) 최소화하여 제어 기억장치 용량을 감소시킨다.

  • 단점: 해독 동작에 걸리는 만큼의 지연 시간이 발생하고 하드웨어가 간단하지 않다.

수평적 마이크로프로그래밍(Horizontal microprogramming) 연산 필드의 각 비트와 제어 신호를 1:1로 대응시키는 방식이다. 필요한 제어 신호 수만큼의 비트들로 이루어진 연산필드 비 트들이 마이크로명령어에 포함되어야 한다.

  • 장점: 하드웨어가 간단하고, 해독에 따른 지연 시간이 없다.

  • 단점: 마이크로명령어의 비트 수가 길어지기 때문에 제어 기억 장치의 용량이 증가함.

마이크로 프로그램의 순서제어(microprogram sequencing)

CPU 내부에서 마이크로명령어를 순차적으로 실행하기 위한 과정을 관리하는 기능을 말한다. 이 과정은 일반적으로 제어 유닛이 담당한다. CPU의 작동을 제어하고 다음에 실행할 명령어의 주소를 결정하는 역할을 한다.


추가설명(further reference)

마이크로명령어(micro-instruction) 제어 유닛이 명령어를 해석하고 실행하기 위해 내부적으로 사용하는 명령어이다. 마이크로명령어는 보통 기본적인 CPU 동작을 제어하는 간단한 단계로 구성되어 있다. 제어 유닛은 이러한 마이크로명령어를 실행하여 CPU가 프로그램의 명령어를 올바르게 처리할 수 있도록 한다. 따라서 제어 유닛과 마이크로명령어는 CPU의 동작을 조정하고 명령어를 실행하는 데 필수적인 역할을 한다. 명령어 사이클의 각 주기에서 실행되는, 미세하게 이루어지는, 각 마이크로-연산을 지정해주는 2진 비트들로서, 제어 단어 (control word)라고도 한다.

이러한 마이크로 명령어의 모음은 마이크로 프로그램(microprogram)이다. 그리고 CPU의 특정기능을 수행하기 위해 마이크로 프로그램 내에서 그룹화된 명령어를 루틴(routine)이라고 한다. 루틴은 마이크로 프로그램 내에서 특정 작업을 수행하는데 사용된다. 루틴의 예) 인출 사이클 루틴, 실행 사이클 루틴, 인터럽트 사이클 루틴

플래그(flag)플래그들은 주로 CPU의 상태를 나타낸다. 예를 들어 더 크거나 같은 비교 연산의 결과, 영이 아닌 결과의 유무, 현재 연산이 오버플로우를 발생시키는지 여부 등을 나타낸다.

조건플래그(condition flag) 조건 플래그를 기반으로 분기 명령을 실행할지 여부를 결정할 수 있다. 예를 들어, 조건 필드가 "1"이면 특정 조건 플래그가 설정되었음을 나타내고, 분기 명령이 실행될 수 있다. 반대로 조건 필드가 "0"이면 해당 조건 플래그가 설정되지 않았으므로 분기 명령이 실행되지 않는다.

분기(branch) 컴퓨터 프로그래밍에서 "분기"는 특정 조건에 따라 프로그램의 실행 흐름을 다른 경로로 바꾸는 것을 의미한다

명령어 사이클(instruction cycle) CPU가 한 개의 명령어를 실행하는데 필요한 전체 처리 과정으로서, CPU가 프로그램 실행을 시작한 순간부터 전원을 끄거나 회복 불가능한 오류가 발생하여 중단될 때까지 반복된다. 두 개의 부사이클(sub cycle)로 분리된다.

  1. 인출 사이클 루틴(fetch cycle): CPU가 기억장치로부터 명령어를 읽어오는 단계

  2. 실행 사이클 루틴(execution cycle): 명령어를 실행하는 단계

간접 사이클 루틴(indirect cycle) 명령어에 포함되어 있는 주소를 이용하여 그 명령어 실행에 필요한 데이터의 주소를 인출하는 사이클이다. 간접 주소지정 방식(indirect addressing mode)에서 사용한다. 인출 사이클과 실행 사이클 루틴의 사이에 위치한다.