명령어 해독기 : 명령어 레지스터(IR)로부터 들어오는 연산 코드를 해독하고 명령어의 연산 코드가 지정하는 연산을 수행하기 위해 실행 사이클 루틴의 시작 주소를 결정
-> mapping을 통해 시작 주소 결정
mapping
명령어의 연산코드를 특정 비트 패턴과 조합하여 실행 사이클 루틴의 시작 주소를 찾는 방법
위 그림은 16비트의 길이 명령어로 4비트의 연산코드, 1비트의 간접 주소지정 비트, 7비트의 주소로 이루어져있다.
제어 주소 레지스터(control address register : CAR) : 다음에 실행할 마이크로 명령어의 주소를 저장하는 레지스터로, 이 주소는 제어 기억장치의 특정 위치를 지칭
제어 기억장치 : 마이크로 명령어들로 이루어진 마이크로 프로그램을 저장하는 내부 기억장치
0~63번지 : 공통 루틴인 인출, 간접, 인터럽트 사이클 저장
64~127번지 : 각 명령어의 실행 사이클 루틴들 저장
제어 버퍼 레지스터(control buffer register : CBR) : 제어 기억장치로부터 읽혀진 마이크로 명령어 비트들을 일시적으로 저장하는 레지스터
서브루틴 레지스터(subroutine register : SBR) : 마이크로 프로그램에서 서브루틴이 호출되는 경우에 현재의 CAR내용을 일시적으로 저장하는 레지스터
순서제어 모듈 : 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합
명령어 사이클 반복 + 서브 사이클 (마이크로 연산)
마이크로 명령어 : 명령어 사이클의 각 주기에서 실행되는 마이크로 연산들에 대응되는 비트들로 이루어진 단어
마이크로 프로그램 : 마이크로 명령어들의 집합
루틴 : CPU의 특정 기능을 수행하기 위한 마이크로 명령어들의 집합
제어기억장치에 아래와 같이 마이크로명령어가 저장되어있다.
연산 필드 : 2개면, 2개의 마이크로 연산 동시 수행 가능
조건 필드 : 분기에 사용될 조건 플래그 지정
분기 필드 : 분기의 종류, 다음 실행 마이크로 명령어의 주소 결정하는 방법 명시
주소 필드 : 분기가 발생하는 경우의 목적지 마이크로 명령어 주소로 사용
아래 그림과 같이 사상 방식을 이용하여 각 연산 코드에 대한 실행 사이클 루틴의 시작 주소를 결정하고, 각 명령어 실행을 위한 루틴을 작성한다.
제어 유니트는 제어 기억장치에 저장된 마이크로 명령어들을 순서대로 인출하여 명령어 실행을 제어한다.
다음에 실행할 마이크로 명령어의 주소, 즉 CAR의 값을 결정하여 순서를 제어한다.