제 6 장  제어 장치

6장 제어 장치

ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏ

6.1 개 요

6.2 마이크로 오퍼레이션

6.3 CPU 의 제어

6.4 고정 배선식 구현

6.5 마이크로 프로그램식 구현

ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏ

○ 제어 장치(control unit : CU)

― CPU 가 실제로 일을 하도록 하는 CPU 의 한 구성 요소

1. CPU 의 외부에 제어 신호를 보내어 메모리 및 입출력 모듈과 CPU 사이에 데이터를 교환

2. CPU 내부에 제어 신호를 보내어 레지스터들 사이에 데이터를 이동

3. ALU로 하여금 요구하는 기능을 수행

4. 그 밖의 CPU 내부 오퍼레이션들을 조정하는 역할

○ 개요

6장 제어 장치

― 제어 장치의 동작을 이해하려면...

명령어 사이클 중에 일어나는 마이크로 오퍼레이션	(micro operation)이라는 일련의 아주 기본적인 오퍼레이	션들을 이해하는 것이 필요

● 마이크로 사이클

― 마이크로 사이클(micro cycle)

마이크로 오퍼레이션을 실행하는 데 필요한 시간 즉,	CPU 의 사이클 타임으로서  CPU의 속도를 표시한다.

동기 고정식(synchronous fixed)

동기 가변식(synchronous variable)

● 제어

[1] 제어점(control point)

― 레지스터의 입력 게이트와 출력 게이트

일반적으로 하나의 레지스터에는 입력과 출력 단자에	각각 하나씩의 독립 제어점(제어 신호가 인가되는 지점)이 있다.

[2] 제어 함수(control functions)

동기식(synchronous) 디지털 시스템의 모든 레지스터의 타이밍(timing)은 마스터 클럭 발생기(master clock generator)에 의해서 제어됨

― 제어 함수 :

레지스터의 내용이 변화되도록 제어하는 2 진 변수

― 제어 함수를 발생시키는 방법에는 세 가지

1) 순차 회로로 구성된 제어 논리 네트 워크에서 상태도	나 상태표 등을 이용하는 방법

2) 일련의 타이밍 신호를 이용하는 방법,

3) 제어 메모리(control memory : CM)를 이용하는 방법

― 제어 함수가 발생하는 동작의 예

각 컴퓨터 사이클마다 T1 시간 동안 메모리로부터 한 워	드를 읽는 동작 :

T1 : MBR ←  M

타이밍 변수 T1 : 기억 장치에 대한 리드(read) 제어 입	력으로써 작용

[eqn: FT_1 ~+~bar R T_3 ~:~ A ~larrow~ B]

(이 마이크로 오퍼레이션은 T1 시간 동안 F 가 1 이거나 T3 시간 동안 R 이 0 일 때만 발생)

****제어 함수는 부울 함수(boolean function)이므로 그림 6-1과 같이 논리 게이트로 발생시킴

그림 6-1. [eqn: FT_1 ~+~bar R T_3 ~:~ A ~larrow~ B] 에서 제어 함수 발생

[3] 타이밍 순서(timing sequence)

오퍼레이션(operation)을 제어하기 위한 타이밍 신호(timing signal)의 발생 : (동기식과 비동기식)

― 동기식 : 일정 시간 간격을 가진 클럭 펄스에 의해서 컴퓨	터 각 장치의 동작이 규칙적으로 수행되는 방식으로서 회로 설계가 비교적 쉽기 때문에 가장 많이 이용됨

단점 : 일련의 동작이 클럭 펄스 또는 타이밍 펄스에 의해서 규정됨으로써 동작이 일찍 일어나도 타이밍 펄스가 발생할 때까지 다음 동작을 못하고 기다려야 하므로 시간적인 낭비가 많은 것

― 비동기식 : 하나의 동작이 완료되면 그 자리에서 곧 동작	완료의 신호를 발생하도록 하고 컴퓨터 각 장치는 이 신호를 받아서 다음 동작을 시작하는 방식

― 마이크로 컴퓨터에서는 8 에서 16 개의 타이밍 신호인 타이밍 순서(sequence)를 제공

― 순서가 한 번 반복하는 데 걸리는 시간 :

컴퓨터 사이클	(computer cycle)

그림 6-2(a) : 4 개의 연속된 타이밍 신호의 발생을 4 비트의 링 계수기(ring counter)를 사용하여 만든 것

그림 6-2(b) : 2 진 계수기에 해석기를 결합하여 만든 불록도.

그림 6-2(c) : 클럭 펄스가 일정한 간격으로 발생할 때 하나의 클럭 펄스가 내려오는 시점을 기준으로 하여 타이밍 신호  T0, T1, T2, T3 가 발생

(a) 4 비트 링 계수기(초기값:T=1000)

(b) 2진 계수기

(c) 4 개의 연속 타이밍 신호

그림 6-2. 4개의 연속 타이밍 신호 발생

● 메이저 상태와 타이밍

― 제어 장치의 두 가지 상태 :

시간에 관한 정보를 나타내는 상태

CPU가 무엇을 하고 있는가를 나타내는 상태

― 시간에 관한 상태를 나타내기 위한 레지스터 :

타이밍 상태(timing state) 레지스터/순서 계수기	(sequence counter)

― CPU 가 무엇을 하고 있는가를 나타내는 레지스터 :

메이저 상태(major state) 레지스터

[1] 명령어의 실행과 메모리 접근

― CPU가 프로그램을 실행하기 위해서는 명령어(instruction)와 이의 실행에 필요한 자료를 기억 장치에서 읽어내야 하며 명령어 실행 결과는 다시 기억 장치에 저장

― CPU의 속도인 마이크로 사이클과 기억 장치의 속도인 기억 장치 사이클을 비교해 보면 기억 장치의 사이클 타임은 마이크로 사이클 타임보다 수배 정도 늦다.

― 명령어를 실행하기 위해서는 각각의 명령어를 기억 장치로부터 읽어내야 하므로 최소한 한 번은 기억 장치에 접근해야 된다.

표6-1: 기본적인 명령어 3가지에 대한 예.

표 6-1. 명령어 실행 중 기억 장치의 접근 회수

명령어의 종류	기억 장치 접근 회수
JUMP A	1회, 명령어를 위한 접근
ADD A	1회, 명령어를 위한 접근 2회, A에 기억된 데이터를 위한 접근
ADD A (A는 간접 주소 형식)	1회, 명령어를 위한 접근 2회, A에 기억된 주소를 위한 접근 3회, 데이터를 위한 접근

[2]  메이저 상태

― CPU 가 무엇을 하고 있는가를 나타내는 상태

― 기억 장치의 사이클을 단위로 하여 사이클 동안에 무엇을 위해 기억 장치에 접근하는가를 나타냄

― 메이저 상태의 네 가지 :

인출 사이클(fetch), 간접 사이클(indirect)

실행 사이클(execution), 인터럽트 사이클(interrupt)

(1) 인출 사이클

•실행할 명령어를 기억 장치로부터 읽어낸다.

•명령어의 종류를 해석한다.

• 만약, 명령어가 1 사이클 명령어면 이를 실행한 후 다시 인출 사이클로 이동한다.

•만약, 1 사이클 명령어가 아니면 유효 주소를 계산한 후 간접 주소이면 간접 사이클로, 아니면 실행 사이클로 이동.

(2) 간접 사이클

•주소를 기억 장치로부터 읽어낸다.

•만약, 간접 주소이면 다시 간접 사이클로 이동한다.

•간접 주소가 아닐 때 분기(branch) 명령어면 실행 후 인출 사이클로 이동하고, 분기 명령어가 아니면 실행 사이클로 이동한다.

(3) 실행 사이클

•데이터를 기억 장치에서 읽어낸다.

•실행 후에는 인출 사이클로 이동한다.

(4) 인터럽트 사이클

• CPU 의 상태를 기억 장치나 레지스터에 기억한다.

• 응급 처리 후 인출 사이클로 이동한다.

그림 6-3 : 기본 명령어 (ADD, JMP, CMA)의 메이저 상태 변	환 과정

그림 6-3. 메이저 상태의 변천도

[3] 타이밍과 제어

― 디지털 컴퓨터는 한 단계씩 동작하며, 각 단계마다 마이크로 오퍼레이션이 실행

― 명령어들은 메모리로부터 읽혀져서 마이크로 오퍼레이션의 순서에 의해 실행됨

― 컴퓨터의 기본 동작 패턴

1) 프로그램 계수기(PC)의 내용을 번지로 하는 메모리의 워드를 MBR로 읽어 들여서 그중 오퍼레이션 레지스터(operation register; OPR)에 모드 비트(mode bit)는 I 에 놓고 OPR의 내용은 제어 장치에 의해서 해석된다.

2) 만약 메모리 참조 명령어라면 I를 체크해서 I=0 이면 메모리로부터 피연산자(operand)를 직접 읽어들이고, I=1 이면 메모리로부터 피연산자의 번지를 읽어서 다시 그 번지에 해당되는 메모리 워드를 읽은 후 그것을 피연산자의 내용으로 취한다.

3) 메모리로부터 읽혀질 때를 명령어 인출 사이클, 메모리로부터 읽은 워드가 피연산자의 번지일 경우 컴퓨터는 간접 사이클에 있고, 피연산자 자체일 경우는 실행 사이클에 있다

― 제어 장치는 4 개의 사이클을 구별하기 위해서 2 개의 플	립플롭(F와 R)을 사용 : 이 플립플롭에 2×4 해석기를 연결하여 네 개의 출력선으로 네 개의 사이클을 구분.

표 6-2. 컴퓨터 사이클 제어

플립플롭 F R	해석기 출력	컴퓨터 사이클
0 0	C0	인출 사이클(명령어를 읽음)
0 1	C1	간접 사이클(피연산산자의 번지를 읽음)
1 0	C2	실행 사이클(피연산자를 읽음)
1 1	C3	정지 사이클(응급 처리 단계)

그림 6-4 (기본 컴퓨터의 제어 장치) :	컴퓨터의 타이밍은 2 비트 순서 계수기(sequence counter : SC)와 2×4 해석기에 의해서 발생된다. 해석기로부터 나온 타이밍 신호를 t0, t1, t2, t3 로 나타내고 메모리 사이클은 두 클럭 펄스 사이의 간격보다 짧다고 가정하면 메모리 읽기(read)와 쓰기(write) 사이클은 타이밍 변수의 폴링 에지(falling edge)에서 시작되어서 다음 클럭 펄스가 도착될 때 끝남

그림 6-4. 제어 장치의 구성도

○ 마이크로 오퍼레이션

― 컴퓨터의 기능은 프로그램들을 실행하는 것

― 프로그램을 실행할 때 컴퓨터의 오퍼레이션은 한 사이클에 하나의 기계어 명령어(machine instruction)를 처리하는	식의 여러 명령어 사이클로 이루어짐

― 명령어들의 실행 시간 순서(execution time sequence)

각 명령어 사이클은 인출 사이클, 해석 사이클, 실행 사이클, 간접 사이클, 인터럽트 사이클과 같은 여러 개의 서브 사이클들로 구성되어 있고, 각 서브 사이클은 CPU의 제어 레지스터들을 포함하는 일련의 단계들로 구성되어 있으며 이러한 단계들 ⇒ 마이크로 오퍼레이션

― 마이크로 오퍼레이션의 구현

하드웨어로 구현(hardwired/고정 배선식),

소프트웨어로 구현(micro programmed 방식)

― 하드웨어로 구현	;

마이크로 오퍼레이션들이 회로로 연결

― 소프트웨어로 구현

마이크로 오퍼레이션들을 하나의 명령어로 간주

⇒ 마이크로 명령어(micro instruction)/ 마이크로 코드(micro code)

그림 6-5. 프로그램 실행을 위한 구성 요소

(a) 인출 사이클

(b) 간접 사이클

(c) 인터럽트 사이클

그림 6-6. 명령어 사이클의 데이터의 흐름

(1) 인출 사이클(fetch cycle)

∙메모리 주소 레지스터(MAR) : 시스템 버스의 주소선에 연결되어 있으며 read 나 write 오퍼레이션을	하기 위하여 메모리 내의 주소를 지정

∙메모리 버퍼 레지스터(MBR) : 시스템 버스의 데이터 선에 연결되어 있으며, 메모리에 기억될 값이나	메모리에서  읽혀진 값을 저장

∙프로그램 계수기(PC) : 다음에 인출할 명령어의 주소

∙명령어 레지스터(IR) : 인출된 명령어

MAR
MBR
PC	0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0
IR
AC

(a) 시작

MAR	0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0
MBR
PC	0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0
IR
AC

(b) 첫 단계

MAR	0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0
MBR	0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
PC	0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1
IR
AC

(c) 둘째 단계

MAR	0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0
MBR	0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
PC	0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1
IR	0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
AC

(d) 셋째 단계

그림 6-7. 인출 사이클에서의 사건 발생 순서

각 마이크로 오퍼레이션은 서로 간섭하지 않는 한 하나의 단계에 동시에 실행 가능

t1 : MAR ← (PC)

t2 : MBR ← 메모리, PC   ← (PC) + 1

t3 : IR   ← (MBR)

― 각 마이크로 오퍼레이션은 하나의 시간 단위 내에 실행될	수 있다. (t1, t2, t3)의 표현은 각각 연속적인 시간 단위를	나타내는 데,

∙첫번째 시간 단위 : PC 의 내용을 MAR  로 이동.

∙두번째 시간 단위 : MAR 에 지정된 메모리의 내용	을 MBR 로 이동하고 PC 의 내용을 1 증가시킴.

∙세 번째 시간 단위 : MBR 의 내용을 IR 로 이동.

―  두 번째 시간 단위 동안에 두 번째와 세 번째 마이크로	오퍼레이션이 이루어지고 있는데, 세 번째 마이크로 오	퍼레이션은 인출 오퍼레이션에 영향을 주지 않으므로 네	번째 마이크로 오퍼레이션과 동시에 실행될 수 있다.

t1 : MAR ← (PC)

t2 : MBR ← 메모리

t3 : PC ← (PC) + 1, IR  ← (MBR)

― 이와 같이 마이크로 오퍼레이션들을 재배열하는  두 규칙

(1) 적절한 사건 순서가 지켜져야 한다. 즉 메모리를 읽는 오퍼레이션은 MAR에 저장된 주소를 이용하므로 (MAR←(PC)) 가 (MBR←메모리) 보다 선행되어야 한다.

(2) 충돌을 피해야 한다. 즉 결과를 예측할 수 없기 때문에 같은 시간 단위동안에 한 레지스터에 동시에	읽거나, 쓰지 말아야 한다. 마이크로 오퍼레이션(MBR←메모리)와 (IR←MBR)은 같은 시간 단위에서는 실행되지 않아야 한다.

(2) 간접 사이클(indirect cycle)

명령어에서 간접 주소 지정 방식을 사용하면, 간접 사이클이 실행 사이클보다 먼저 실행되어야 한다. (그림 6-6(b))

다음과 같은 마이크로 오퍼레이션들을 포함한다.

t1 : MAR ← (IR(주소))

t2 : MBR ← 메모리

t3 : IR(주소) ← (MBR(주소))

― 명령어의 주소 필드는 MAR로 이동되어서 피연산자의 주	소를 인출하는데 쓰이며, 마지막으로 IR의 주소 필드가	MBR 로부터 들어오는 주소로 갱신되고, 따라서 그것은	간접 주소가 아닌 직접 주소를 가지게 된다.	이제 IR 은  실행 사이클을 위한 준비가 완료 된다.

(3) 인터럽트 사이클

실행 사이클이 끝난 직후에 인터럽트가 발생했는 지를 검사하며, 발생하였다면 인터럽트 사이클이 시작된다. 이 사이클에서의 오퍼레이션은 컴퓨터에 따라 많이 다르다. (그림 6-6(c))

t1 : MBR ← (PC)

t2 : MAR ←  Save-address, (PC가 저장될 위치의 주소)

PC ← Routine-address,(인터럽트 처리 루틴의 주소)

t3 : 메모리 ← (MBR)

(4) 실행 사이클

N 개의 다른 연산 코드들을 갖고 있는 컴퓨터의 경우 N 개의 다른 순서로 되어 있는 마이크로 오퍼레이션이 있다.

몇 개의 예:

1) 덧셈 명령어

ADD R1, X

는 X 번지의 내용을 레지스터 R1에 더하는 것

t1 : MAR ← (IR(주소))

t2 : MBR ← 메모리

t3 : R1 ← (R1) + (MBR)

즉 ADD 명령어를 저장하고 있는 IR부터 시작하여 첫 번째 단계에서 IR의 주소 부분이 MAR 로 적재된다. 다음에 메모리로부터 데이터가 읽혀지고, 마지막으로 R1 과  MBR 의 내용이 ALU 에 의하여 더해진다.

2) PC에 1을 증가시키고, 결과가 0이면 skip하는 명령어

ISZ X

는 X 번지의 내용을  1 증가시키고, 그 결과가 0 이면 다음 명령어를 실행하지 않고 건너 뜀

t1 : MAR ← (IR(주소))

t2 : MBR ← 메모리

t3 : MBR ← (MBR)+1

t4 : 메모리 ← (MBR)

if (MBR=0) then (PC←(PC)+1).

여기에서 도입된 새로운 기능이 조건 실행이다. MBR = 0이면 PC가 증가된다. 이 검사와 실행 동작은 하나의 마이크로 오퍼레이션으로 실행될 수 있다.  이 마이크로 오퍼레이션은 MBR 의 갱신된 값이 메모리에 다시 저장되는 시간 단위 동안에 동시에 실행될 수 있다는 것에 주의해야 한다.

(5) 명령어 사이클

명령어 사이클의 각 단계가 마이크로 오퍼레이션이라는 기본적인 오퍼레이션들로 나누어지며 인출, 간접, 인터럽트 사이클에 대하여 각각 하나의 마이크로 오퍼레이션의 순서가 있고, 실행 사이클에서는 각 연산 코드에 대하여 각기 다른 마이크로 오퍼레이션 순서가 있다.  마이크로 오퍼레이션들을 서로 연결하여 생각하면, 그림 6-8이 그 결과이다. 여기서 명령어 사이클 코드(instruction cycle code : ICC)라는 새로운 2 비트 레지스터가 있다고 가정하면 ICC 는 CPU 가 그 사이클 중 어떤 부분에 있는지를 나타낸다.

00 : 인출

01 : 간접

10 : 실행

11 : 인터럽트

그림 6-8.  명령어 사이클의 흐름도

○ CPU 의 제어

● 기능적 요구 사항

― 제어 장치의 특성은 다음의 세 단계를 통하여 결정됨

(1) CPU 의 기본 구성 요소들을 정의한다.

(2) CPU 가 실행할 마이크로 오퍼레이션들을 정의한다.

(3) 마이크로 오퍼레이션들이 실행되기 위하여 제어 장	치가 수행해야 할  기능들을 결정한다.

― CPU 의 기본적인 기능 요소 :

∙ ALU

∙ 레지스터들

∙ 내부 데이터 경로들(internal data path)

∙ 외부 데이터 경로들(external data path)

∙ 제어 장치

― 마이크로 오퍼레이션의 분류:

∙ 한 레지스터에서 다른 레지스터로 데이터 전송

∙ 한 레지스터에서 외부 인터페이스로 데이터 전송

∙ 외부 인터페이스에서 레지스터로 데이터 전송

∙ 산술 또는 논리 연산의 실행

― 제어 장치의 두 가지 기본적인 기능 :

∙순서 제어(sequencing) : 제어 장치는 실행될 프로그	램에 근거하여 CPU 가 적절한 순서대로 일련의 마이	크로 오퍼레이션을 처리하게 한다.

∙실행(execution) : 제어 장치는 각 마이크로 오퍼레이	션이 실행되도록 한다.

― 제어 장치 동작의 핵심 : 제어 신호들의 사용

● 제어 신호(control signals)

제어 장치가 기능을 수행하기 위한 시스템의 상태를 결정해주는 입력과 시스템의 동작을 제어하기 위한 출력들(제어 장치의 외부 규격)

내부적으로는 제어장치는 순서 제어와 실행기능을 수행하는 데 필요한 논리회로가 있어야 한다.

그림 6-9.  제어 장치의 모델

[입력]

∙클럭(clock) : 이것은 제어 장치가 시간을 지키게 하는 데 사용된다. 제어 장치는 한 마이크로 오퍼레이션(또는 동시에 실행할 수 있는 마이크로 오퍼레이션들의 조합)을 한 클럭 펄스 동안 실행한다. 이를 processor cycle time 또는 clock cycle time이라 부른다.

∙명령어 레지스터(IR) : 명령어의 연산 코드는 실행 사이클 동안에 어떤 마이크로 오퍼레이션을 실행할 지를 결정하는 데 사용된다.

∙플래그(flags) : 이들은 CPU의 상태와 이전 ALU 오퍼레이션들의 결과를 검사하기 위하여 제어 장치에 의하여 사용된다. 예를 들어 명령어 ISZ의 경우 플래그가 영으로 세트되면 제어 장치가 PC 를 증가시킨다.

∙제어 버스에서 들어오는 제어 신호들 : 시스템 버스의 제어 버스 부분을 통하여 인터럽트나 ACK 신호를 제어 장치에 제공한다.

[출력]

∙CPU 내의 제어 신호들 : 레지스터간의 데이터 전송을 발생시키는 것과 특정 ALU 기능들을 활성화 시키는 것

∙제어 버스에로 나가는 제어 신호들: 메모리로 보내는 제어 신호들과 입출력 모듈들로 보내지는 신호들

― 제어 신호의 3가지 형태 :

1) ALU 기능을 활성화 시키는 것

2) 데이터 경로를 활성화 시키는 것

3) 외부 시스템 버스나 그 밖의 외부 인터페이스로 나가	거나 들어오는 신호들

― 인출사이클 제어 신호

(1) MAR의 내용을 주소 버스에 싣도록 게이트를 열어	주는 제어 신호.

(2) 제어 버스 상의  메모리 읽기 제어 신호.

(3) 데이터 버스의 내용이 MBR에 저장되도록 게이트들	을 열어주는 제어 신호.

(4) PC 의 내용에 1 을 더하고, 그 결과를 다시 PC 에	저장시키는 제어 신호.

― 이 과정이 끝나면 제어 장치는 MBR과 IR 사이의 게이트	들을 열어 주는 제어 신호를 보낸다.

― 제어 장치가 다음에 간접 사이클을 수행할 것인지 실행 사이클을 수행해야 할 것인지를 결정하기 위해 IR에 간접 메모리 참조가 있는 지를 검사한다.

― 간접 사이클과 인터럽트 사이클은 비슷하게 실행되고, 실행 사이클의 경우 제어 장치는 먼저 연산 코드를 검사하여 어떤 일련의 마이크로 오퍼레이션을 실행해야 하는지를 결정	한다.

● 제어 신호의 예

― 그림 6-10은 한 개의 누산기만 갖고 있는 간단한 CPU로	서 구성 요소들 사이의 데이터 경로들이 표시되어 있다.	제어 신호들의 종점에는 Ci 라는 이름이 붙어 있으며 작	은 원으로 표시되어 있다. 제어 장치는 클럭, 명령어 레지스터, 플래그로부터 입력들을 받으며 각 클럭 사이클 동안 모든 입력을 읽고 제어 신호들을 발생한다.

그림 6-10. 데이터 경로와 제어 신호

― 제어 신호들의  다른 세 가지 목적지

∙데이터 경로(data paths) : 제어 장치는 데이터의 내부 흐름을 제어하는데 예를 들면 명령어 인출 시에 MBR 의 내용이 명령어 레지스터로 옮겨지며 각 경로를 제어하기 위하여 게이트가 있다 (그림 6-10 에서 원으로 나타나 있다). 제어 장치에서 나온 제어 신호가 데이터가 통과하도록 게이트를 일시 열어준다.

∙ALU : 제어 장치는 제어 신호들을 이용하여 ALU 동작을 제어하는 데, 이들 신호가 ALU 내의 여러 논리 장치들과 게이트들을 활성화 시킨다.

∙시스템 버스 : 제어 장치가 시스템 버스 중의 제어 선들로 제어 신호들을 내보낸다(예, 메모리 read 신호).

― 제어 장치는 명령어 사이클 중 지금 어디에 있는지를 계속 알아야 하며, 이를 알고 모든 입력을 읽어 마이크로 오퍼레이션을 실행시키기 위한 일련의 제어 신호를 발생한다.

― 제어 장치는 클럭을 사용하여 각 사건의 일어날 시간을 결정하여 준다.

표 6-3. 마이크로 오퍼레이션과 제어 신호들

마이크로 오퍼레이션		제어 신호들
인출 :	t1 : MAR ← (PC) t2 : MBR ← 메모리 PC ← (PC) + 1 t3 : IR ← (MBR)	C2 C5, CR C4
간접 :	t1 : MAR ← (IR(주소)) t2 : MBR ← 메모리 t3 : IR(주소) ← (MBR(주소))	C8 C5, CR C4
인터럽트 :	t1 : MBR ← (PC) t2 : MAR ← 저장될 위치 주소 PC ← 처리 루틴의 주소 t3 : 메모리 ← (MBR)	C1 C12, CW

CR = Read control signal to system bus

Cw = Write control signal to system bus

● CPU의 내부 구성

그림 6-11. 내부 버스를 표시한 CPU구조

― 그림 6-11 : 내부 CPU 버스를 이용하여 그림 6-10을  다시 정렬한 것

○ 고정 배선식 구현

― 제어 장치의 구현

∙Hardwired implementation

∙Microprogrammed implementation

― 고정 배선식 구현 : 제어 장치는 기본적으로 조합 회로이며 입력 논리 신호	가 일련의 출력 논리 신호들로 변환되고, 이 출력 신호	들이 제어 신호가 됨

● 제어 장치의 입력

그림 6-12.  제어 장치와 해석된 입력

― 주요 입력 :	명령어 레지스터,	클럭, 플래그, 제어 버스 신호들

표 6-4. 4 개의 입력과 16 개의 출력을 갖고 있는 해석기

● 제어 장치의 회로

― 제어 장치의 내부 회로 기능 :	기본적으로 해야 할 일은 각 제어 신호에 대하여 입력 기능으로 이 신호를 부울 표현식으로 유도하는 것

예) 그림 6-10 의  예를 다시 살펴보자.

표 6-3에는 명령어 사이클의 네 단계 중 세 단계를	제어하는데 필요한 마이크로 오퍼레이션들과 제어 신호	들을 포함하고 있다.

이 중에서 한 제어 신호 C5를 생각하는데 이 신호는 외	부 데이터 버스에서 데이터를 읽어 MBR 에 적재 하는	데, 표 6-3 을 보면 이 신호가 두 번 나타나 있다. 그리고 다음과 같은 뜻을 가진 새로운 두 신호 P 와 Q를	정의하자.

PQ = 00       인출 사이클

PQ = 01       간접 사이클

PQ = 10       실행 사이클

PQ = 11       인터럽트 사이클

이 때 C5 를 다음과 같은 부울 표현으로 정의된다.

[eqn: C_5~=~bar P ∙bar Q ∙T_2 + bar P ∙Q∙T_2]

즉 제어 신호 C5 는 인출과 간접 사이클의 두 번째 시간	단위 동안에 발생된다.

그런데 이 식도 완전하지 않은 데, C5 가 실행 사이클에	도 필요하기 때문이다.

같은 예에서 메모리에서 LDA, ADD, AND 의 세 명령	어만 읽었다면, C5 를 다음과 같이 정의할 수 있다.

[eqn: C_5~=~bar P ∙bar Q ∙T_2 + bar P ∙Q∙T_2 +P∙bar Q ∙(LDA+ADD+AND)∙T_2~]

이와 같은 처리를 CPU 가 생성하는 모든 제어 신호에	대하여 반복할 수 있으며 결과는 제어 장치의 동작 즉	CPU 의 동작을 정의하는 부울식들의 집합이 된다.

― 현재의 컴퓨터에서는 한층 더 간단한 micro programming을 이용하여 제어하는 간단한 방법	이 많이 사용됨

○ 마이크로 프로그램식 구현

1950 년대 초에 윌키스(M, V. Wilkes)에 의하여 처음으로  고정 배선식 구현의 복잡성을 피할 수 있는 체계적인 제어 장치의 설계 방식을 제안

― IBM S/360(1964년4월):  마이크로	프로그램 방식을 사용

● 마이크로 명령어(micro instructions)

― 현재의 컴퓨터 : 제어 장치를 마이크로 프로그래밍 식으로	구현

― 표 6-3 : 제어 신호를 사용하고 있을 뿐 아니라 각 마이크로 오퍼레이션이 기호로 표현되어 있다. 이러한 표현은 마이크로 프로그래밍 언어이며 각 줄에서는 동시에 일어나는 마이크로 오퍼레이션들이 기술되어 있는데 이를 마이크로 명령어라 한다. 이러한 일련의 명령어의 모임을 마이크로 프로그램 또는 펌웨어(firm ware)라 함

― 일반적으로 하드웨어보다 펌웨어로 설계하는 것이 쉬우며 소프트웨어 프로그램보다 펌웨어 프로그램을 짜는 것이 더 어렵다.

―  마이크로 프로그래밍의 개념을 이용한 제어 장치의 구현

―  각 마이크로 오퍼레이션에서 제어 장치가 해야 할 일:

-제어 신호들을 발생시키는 것

-각 비트가 한 제어선을 나타내게 되어 있는 제어 워드	(control word)를 만들 수가 있고, 각 제어 워드에 1 들	과 0 들의 서로 다른 패턴으로 각 마이크로 오퍼레이션	을 나타낼 수가 있다.

― 제어 장치가 수행할 일련의 마이크로 오퍼레이션들을 나타	내기 위하여 제어 워드들을 함께 묶은 것이 수평적 마이	크로 명령어(horizontal micro instruction)(그림 6-10(a))	이며, 마이크로 명령어 또는 제어 워드의 형식은 다음과	같다.

(a) 수평적 마이크로 명령어

(b) 수직적 마이크로 명령어

그림 6-13. 전형적인 마이크로 명령어 형식

― CPU 내부 제어선들의 각 선에 한 비트, 각 시스템 버스 제	어선에 한 비트를 할당하고 있으며 분기가 일어나는 조	건을 나타내는 조건 필드와 분기가 일어났을 때 다음에	실행해야 할 마이크로 명령어의 주소가 들어 있는 필드	가 있다.

― 마이크로 명령어의 해석 :

(1) 각 마이크로 명령어를  실행하기 위하여 1 비트로 표시되어 있는 모든 제어선들을 on 시키고 0 으로 표시되어 있는 제어 선들을 off 시켜 만든 제어 신호들이 한개 이상의 마이크로 오퍼레이션들을 실행시킬 것이다.

(2) 조건 비트로 표시되어 있는 조건이 거짓이면,  다음 마이크로 명령어가 순서대로 실행된다.

(3) 조건 비트로 표시되어 있는 조건이 참이면, 다음에 실행될 마이크로 명령어는 주소 필드에 의하여 지정된다.

― 그림 6-14 :	제어 메모리 내에 이들 제어 워드들이나 마이크로 명령어들이 어떻게 들어 있는가를 보여주고 있는데 각 루틴 내의 마이크로 명령어들은 순차적으로 실행됨

그림 6-14.  제어 메모리의 구성

● 마이크로 프로그램을 이용한 제어 장치

― 그림 6-14 : 제어 장치의 동작을 기술한 프로그램이 들어	있는 제어 메모리를 보여주고 있는 데, 단순히 이 프로그램을 실행하기만 하면 제어 장치를 실현

그림 6-15.  제어 장치의 세부 구조

― 제어 장치의 동작 :

(1) 한 명령어를 실행하기 위하여 순서 제어 논리 장치가 제어 메모리로 read 명령어를 보낸다.

(2) 제어 주소 레지스터에 있는 주소의 워드가 제어 버퍼 레지스터로 읽어 들인다.

(3) CBR의 내용에 따라 제어 신호들과 순서 논리 장치(sequencing logic : SL)를 위한 다음 주소 정보가 발생된다.

(4) SL은 CBR 과 ALU 의 플래그들로부터 발생된 다음 주소 정보에 근거하여  새로운 주소를 CAR 에 적재한다.

― 이 모든 동작이 한 클럭 펄스 동안에 이루어진다.

그림 6-16.  마이크로 프로그램식 제어 장치의 동작 모습

● 윌키스 제어(Wilkes Control)

그림 6-17.  윌키스의 마이크로 프로그램식 제어 장치

― 윌키스는 1951년에 처음으로 마이크로 프로그램식 제어 장치의 사용을 제안(그림 6-17)

― 윌키스가 제안한 가상 컴퓨터의 CPU는 다음과 같은 레지스터들을 갖고 있다.

A     피승수(multiplicand)

B     누산기(하위비트의 반쪽)

C     누산기(상위비트의 반쪽)

D     시프트 레지스터

― 이외에 제어 장치에만 액세스할 수 있는 세 레지스터와	두 개의 1비트 플래그가 있는데 그 레지스터들은 다음과 같다.

E     메모리 주소 레지스터와 임시 보관소의 역할

F     프로그램 계수기(PC)

G     카운팅(counting)에 사용되는 임시 레지스터

― 표 6-5  : 이 예에서 사용한 기계 명령어 세트

― 표 6-6 : 제어 장치를 구현하고 있는 모든 마이크로 명령어들을 기호 형태로 나타내고 있는데 모두 38 개의 마이크로 명령어로 시스템을 완전히 정의