어떤 명령어가 간접 주소지정방식을 사용하는 경우에는 명령어 내의 간접(I) bit가 ‘1’로 세트됨.
= 이때는 실행 사이클의 시작 부분에서 간접 사이클 루틴을 호출하여 기억장치로부터 실제 오퍼랜드 주소를 읽어 와야 함.
= 보통, 간접 사이클 루틴은 인출 사이클 루틴의 다음 위치인 4번지부터 저장.
간접 사이클 루틴의 마이크로명령어
= 간접 사이클 루틴은 IR에 적재된 명령어의 주소필드가 가리키는 기억장치 위치로부터 실제 주소를 인출하여 다시 IR의 주소필드에 적재하는 동작.
= 이 루틴의 마지막 마이크로명령어가 실행된 다음에는 이 간접 사이클을 호출하였던 실행 사이클 루틴으로 복귀해야 함. (복귀 : CAR ← SBR)
이 루틴의 마이크로명령어를 2진 bit 패턴으로 변환하면,
[표4-4] 연산코드에 대한 사상의 결과.
= NOP : 아무런 연산도 수행하지 않고 PC만 1을 증가시키는 명령어임.
위의 명령어들에 대한 실행 사이클 루틴들을 작성하면 [그림 4-5]와 같음. (2.2절 내용 근거)
루틴의 마지막 마이크로명령어에는 그 다음에 인출 사이클 루틴(FETCH)으로 점프하도록 지정
= 각 실행 사이클 루틴의 수행이 종료된 다음에는 인출 사이클부터 다시 시작되도록 함.
※ 각 마이크로명령어들에 대한 2진 코드로의 변환은 연습문제 4.4를 통해 직접 수행해 보라.
“제어 유닛이 명령어의 실행을 제어한다.”의 의미
=> 제어 기억장치에 저장된 해당 마이크로명령어를 순서대로 인출한다.
=> 마이크로명령어를 읽어서 연산필드에 있는 bit을 출력시키면, 그 bit들 자체가 제어신호가 됨.
※ 제어 유닛이 명령어 실행을 제어하는 과정을 이해 하기 위해 [그림 4-6]을 살펴보자.
= 여기서 제어 기억장치를 제외한 상단의 모듈들은 다음에 실행할 마이크로명령어의 주소를 결정하는 회로이며, 그 기능을 순서제어(sequencing)라 함.
이 회로의 핵심은 다음에 인출할 마이크로명령어의 제어 기억장치 주소를 가지고 있는 CAR임.
= CAR의 초기값은 ‘0’ 인출 사이클 루틴의 첫 번째 마이크로명령어
= 제어 기억장치의 0번지에 있는 마이크로명령어를 인출하면서 마이크로 p/g의 실행이 시작됨.
[그림 4-6]에서, 제어 기억장치의 출력 중에 CD필드는 MUX2로 보내져서 네 개의 조건 bit 중의하나를 선택. 결과적으로 [표 4-2] 중 하나가 MUX2의 출력됨.