[Computer Architecture] Ch.4 제어유니트

2024. 4. 24. 04:30카테고리 없음

목차

4.1 제어 유니트의 기능

4.2 제어 유니트의 구조

4.3 마이크로 명령어의 형식

4.4 마이크로프로그래밍

4.5 마이크로프로그램의 순서 제어

 

 

< 4.1 제어 유니트의 기능 >

- 제어 유니트의 기능

> 명령어 코드의 해독

> 명령어 실행에 필요한 제어 신호들의 발생

- 마이크로명령어(micro-instruction)

: 명령어 사이클의 각 주기에서 실행되는 각 마이크로-연산을 지정해주는 2진 비트들로서, 제어 단어(control word)라고도 함

- 마이크로프로그램(microprogram)

: 마이크로명령어들의 집합

- 루틴(routine)

: CPU의 특정 기능을 수행하기 위한 마이크로명령어들의 그룹

[예] 인출 사이클 루틴, 실행 사이클 루틴, 인터럽트 사이클 루틴

 

< 4.2 제어 유니트의 구조 >

1. 구성 요소들

- 명령어 해독기(instruction decoder)

: 명령어 레지스터(IR)로부터 들어오는 명령어의 연산코드를 해독하여 해당 연산을 수행하기 위한 루틴의 시작 주소를 결정

- 제어 주소 레지스터(control address register: CAR)

: 다음에 실행할 마이크로명령어의 주소를 지정하는 레지스터

> 이 주소는 제어 기억장치의 특정 위치를 지칭

- 제어 기억장치(control memory)

: 마이크로명령어들로 이루어진 마이크로프로그램을 저장하는 내부 기억장치

- 제어 버퍼 레지스터(control buffer register: CBR)

: 제어 기억장치로부터 읽혀진 마이크로명령어 비트들을 일시적으로 저장하는 레지스터

- 서브루틴 레지스터(subroutine register: SBR)

: 마이크로프로그램에서 서브루틴이 호출되는 경우에 현재의 CAR 내용을 일시적으로 저장하는 레지스터

- 순서제어 모듈(sequencing module)

: 마이크로명령어의 실행 순서를 결정하는 회로들의 집합

 

- 제어 유니트의 내부 구성도

제어 유니트의 내부 구성도

 

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

1) 명령어들의 종류 및 비트 패턴 정의

2) 명령어들의 실행에 필요한 하드웨어 설계

3) 각 명령어를 위한 실행 사이클 루틴 작성(마이크로프로그래밍)

4) 마이크로프로그램 코드들을 제어 기억장치에 저장

 

3. 제어 기억장치의 내부 구성

- 마이크로프로그램 루틴들을 제어 기억장치에 저장한 예

> 제어 기억장치 용량 = 128단어

> 전반부(0 ~ 63번지): 공통 루틴들 저장

> 후반부(64 ~ 127번지): 각 명령어의 실행 사이클 루틴들 저장

마이크로프로그램 루틴들을 제어 기억장치에 저장한 예

 

4. 명령어 해독 과정(시험 출제 of 사상함수)

- 명령어 해독

: 명령어의 연산 코드가 지정하는 연산을 위한 실행 사이클 루틴의 시작 주소를 결정하는 동작

* 명령어: 명령어 레지스터(IR)에 들어있다.

- 사상(mapping)을 이용한 해독 방법(주소번지를 mapping하는 방법)

  > 명령어의 연산 코드를 특정 비트 패턴과 조합

[예] 16-비트 길이의 명령어가 4비트의 연산코드, 1비트의 간접 주소지정(I) 비트 및 11비트의 주소로 구성된 경우

명령어 코드

~> 사상 함수: 1 XXXX 00

*사상함수는 제어기억장치의 주소번지가 된다.

*하나의 op code(XXXX)에 대하여 최대 4줄의 명령어 쓸 수 있다 ~> 명령어 4개 이후 서브 루틴

  > 연산코드 = 0001 ~> 실행 사이클 루틴의 시작 주소 = 1000100 (68)

  > 연산코드 = 0110 ~> 실행 사이클 루틴의 시작 주소 = 1011000 (88)

 

 

< 4.3 마이크로명령어의 형식 >

1. 마이크로명령어의 형식

- 연산필드가 두 개이면, 두 개의 마이크로-연산들을 동시에 수행 가

- 조건(CD) 필드는 분기에 사용될 조건 플래그를 지정

- 분기(BR) 필드는 분기의 종류와 다음에 실행할 마이크로명령어의 주소를 결정하는 방법을 명시

- 주소 필드(ADF)의 내용은 분기가 발생하는 경우에 목적지 마이크로명령어의 주소로 사용

마이크로명령어의 형식

2. 마이크로연산들에 대한 2진 코드 및 기호 [예]

- '연산필드1'에 위치할 마이크로-연산들

코드 마이크로-연산 기호
000 None NOP
001 MAR <- PC PCTAR
010 MAR <- IR(addr) IRTAR
011 AC <- AC + MBR ADD
100 MBR <- M[MAR] READ
101 AC <- MBR BRTAC
110 IR <- MBR BRTIR
111 M[MAR] <- MBR WRITE

- '연산필드2'에 위치할 마이크로-연산들

코드 마이크로-연산 기호
000 None NOP
001 PC <- PC + 1 INCPC
010 MBR <- AC ACTBR
011 MBR <- PC PCTBR
100 PC <- MBR BRTPC
101 MAR <- SP SPTAR
110 AC <- AC - MBR SUB
111 PC <- IR(addr) IRTPC

 

3. 조건 필드의 코드 지정

- 조건 필드: 두 비트로 구성되며, 분기의 조건으로 사용

U: 무조건 분기

I : 만약 I=1이면, 간접 사이클 루틴을 호출

S: 누산기에 저장된 데이터의 부호가 1이면, 분기

Z: 누산기에 저장된 데이터가 0(Z=1)이면, 분기

코드 조건 기호 설명
00 1 U 무조건 분기
01 I 비트 I 간점 주소지정
10 AC(S) S 누산기(AC)에 저장된 데이터의 부호
11 AC=0 Z AC에 저장된 데이터 = 0

4. 분기 필드의 코드 지정

- 분기 필드: 두 비트로 구성되며, 분기의 유형을 지정

> 조건 필드의 조건이 만족되면, ADF 필드의 내용을 CAR로 적재

~> 그 주소로 분기(JUMP 혹은 CALL)

> RET: 서브루틴으로부터 복귀(SBR에 저장된 내용을 CAR로 적재)

> MAP: 사상 방식에 의하여 분기 목적지 주소 결정