본문 바로가기

제어 장치에 대해 알아보자

제어 장치는 CPU가 실행할 수 있는 명령어 집합에 따라 CPU 내부에서 각 명령어의 실행을 제어하고 관리하기 위한 장치이며 명령어의 실행 단계별로 필요한 제어 신호를 발생합니다. 이러한 제어 장치의 기본적인 동작은 명령어 주기 동안에 발생하는 일련의 마이크로 연산을 실행합니다. 즉 제어 장치는 실행할 명령어를 기초로 하여 적절한 순서로 일련의 마이크로 연산을 CPU가 작업할 수 있도록 순서 제어와 각 마이크로 연산을 실행시키는 장치입니다. 이에 따라 제어 장치는 내부적으로 순서 제어와 실행 제어를 위해 필요한 논리 회로를 갖고 있어야 합니다.

 

제어 장치에서 명령어들의 실행 과정을 단계별로 제어하고 관리하기 위해 생성되는 제어 신호들의 기능에는 각 명령어의 실행 단계를 위한 순차적 제어 클락 생성, 명령어, 인출과 인출된 명령어의 명령 코드의 디코딩, 주소 지정 모드에 따른 유효 주소 계산 및 오퍼랜드 인출, 각 레지스터의 입력과 출력 제어, ALU에 대해 필요한 연산 및 입출력의 지정, 메모리에 대한 읽기/쓰기 신호 등이 있습니다.

 

제어 장치는 기억 장치와 입출력 모듈과 데이터 전송을 위한 외부적인 제어 신호를 발생하며 레지스터 사이의 데이터 전송을 위해 산술논리 연산 장치에 지정된 연산을 실행하게 하는 내부적인 제어 신호를 발생합니다. 제어 장치의 입력은 명령어 레지스터, ALU의 연산 결과를 저장하고 있는 플래그 레지스터의 상태 정보, 그리고 외부 장치로부터의 인터럽트 신호 등으로 이루어집니다.

 

명령어 레지스터의 동작 코드는 실행 주기 동안에 실행할 마이크로 연산을 결정하는 데 사용되며 플래그 입력은 이전의 산술논리연산의 출력과 CPU의 상태를 결정하기 위해서 제어 장치에 의해 사용합니다. 그리고 제어 장치는 인가하는 각 클락 주기마다 하나의 마이크로 연산을 실행하는 임무를 가지고 있습니다.

 

CPU의 내부 제어 신호는 하나의 레지스터에서 다른 레지스터로 데이터를 전송 또는 특정한 논리연산 기능을 수행하도록 하는 신호입니다. 또한 외부 제어 신호는 시스템 버스로부터 제어 장치에 인터럽트 요청 또는 인터럽트 인식과 같은 제어 신호를 제공하거나 외부 기억 장치와 입출력 모듈로 보내는 제어 신호입니다. 각 명령어에 대해 정해진 클락 주기 순서로 제어 신호를 생성하는 제어 장치의 구현에는 제어 신호들을 논리 게이트 및 논리 회로로 생성하는 방법으로 구현하는 하드와이어적 제어 장치와 마이크로프로그램 기술을 이용하여 마이크로 명령어의 각 비트 또는 각 필드가 직접적으로 제어 신호를 생성하는 마이크로프로그램에 의한 제어 장치가 있습니다.

 

1. 하드와이어드 제어 장치

하드와이어드 제어 장치는 순서 제어기, 제어 신호 생성기, 디코더, 그리고 입력 신호로 구성되어 있습니다. 제어 장치의 주요 입력에는 명령어 레지스터, 클락, 플래그 레지스터의 상태 정보, 외부의 제어 신호 등이 있습니다. 하드와이어드 제어 장치는 입력 신호에 따라 제어 신호가 지정하는 출력 논리 신호를 생성하며 플래그 레지스터의 상태 정보와 외부의 제어 신호에 따라 개별 비트들이 각각 의미를 갖습니다. 또한 하드와이어드 제어 장치는 명령어 레지스터의 동작 코드에 따라 서로 다른 조합의 논리 신호를 생성하여 다양한 동작을 실행합니다. 이러한 기능은 디코더에 의해 이루어지며 디코더는 n개의 입력과 2n개의 서로 다른 2진 출력을 갖습니다. 또한 하드와이어드 제어 장치는 인가된 클락에 따라 규칙적으로 반복되는 제어 클락을 생성하여 마이크로 연산을 실행합니다. 제어 장치에서는 각 명령어의 실행 단계의 순차적 제어 클락을 순서 제어기를 통해 생성하고 각 단계별로 해당 명령어 실행에 필요한 제어 신호를 제어신호 생성기에서 논리 회로로 생성합니다. 각 명령어에 따라 제어 클락 주기에 정의된 제어 신호를 발생하며 이에 따라 제어 장치는 마이크로 연산을 실행합니다. 또한 제어 신호 생성기에 인가되는 제어 클락은 명령어 주기 끝에서 다시 T0에서 시작할 수 있도록 순서 제어기에 의해 초기화됩니다. 예를 들어 기억 장소 X의 내용을 레지스터 R1에 더하는 "ADD E1, X"를 실행하기 위한 마이크로 연산을 실행 클락 순서대로 6단계 동작으로 나열할 수 있습니다. 각 명령어 실행의 제어 클락 T0 ~ T2의 명령어 인출과 디코딩 단계는 모든 명령어에 공통으로 실행되기 때문에 제어 장치는 모든 명령어에 대해 동일한 제어 신호를 생성합니다. 그러나 실행단계는 명령 코드가 ADD에 해당하는 경우에만 실행되도록 제어 신호를 발생합니다. 하드 웨어적 구현은 제어 신호 생성에 필요한 지연 시간이 매우 작다는 장점이 있으나 각 제어 신호 생성에 필요한 논리 회로는 명령 코드 및 주소 지정 모드 등에 따라 매우 복잡해질 수 있다는 단점을 지니고 있습니다.

 

2. 마이크로프로그램에 의한 제어 장치

CPU의 제어 장치에서 각 명령어 실행 단계별로 마이크로 연산에 필요한 제어 신호를 논리 회로로 구현하는 대신 각 실행 단계별로 마이크로 연산에 필요한 제어신호에 해당하는 비트를 갖는 명령어를 실행함으로써 제어신호를 생성할 수 있습니다. 각 기계 명령어의 실행을 구성하는 마이크로 연산들을 수행하는데 필요한 제어 신호들을 마이크로 명령어로 생성하는 것이 마이크로 프로그램을 제어 장치입니다.

 

명령어는 기계 명령어를 의미하며 명령어 실행을 위한 제어 장치 내의 프로그램을 구성하는 명령어를 마이크로 명령어라고 합니다. 마이크로 프로그램에 의한 제어 장치에 저장되고 제어 기억 장치로부터 명령어를 가져와서 각 기계 실행에 필요한 신호를 발생합니다. 마이크로 명령어로 구성되는 마이크로 프로그램은 읽기만 수행하므로 제어 기억 장치는 ROM으로 구현되는데 이것을 펌웨이라고 합니다.

 

제어 기억 장치를 참조하기 위해서는 참조할 주소가 제어 주소 레지스터에 적제되어야 하는데 다음에 인출할 마이크로 명령어의 주소는 기계 명령어의 코드와 순서 제어기에 의해 정해집니다. 제어 프로그램을 구성하는 루틴 개수는 명령어의 형식, 명령 코드의 수, 그리고 주소 지정 모드의 수에 따라 정해집니다. 복잡한 명령어의 실행을 제어하는 제어 장치에 대해서도 마이크로 프로그래밍은 하드웨어적 방식에 비해 구현이 비교적 간단하므로 보다 복잡한 명령어들의 구현이 가능하게 되었습니다. 또한 논리 회로로 구현하는 하드웨어적 제어에 비해 명령어 집합 설계에 유연성과 자유성을 주므로 보다 복잡한 명령어들이 갖는 CPU 구조의 구현을 가능하게 하였습니다.

'컴퓨터정보' 카테고리의 다른 글

기억 장치의 계층 구조  (0) 2022.01.07
기억 장치란 무엇일까?  (0) 2022.01.07
레지스터란 무엇인가?  (0) 2022.01.06
CPU 명령어 종류를 알아보자 2장  (0) 2022.01.06
CPU 명령어 종류를 알아보자 1장  (0) 2022.01.05