예시에서 마이크로 명령어는 길이가 17비트 이고, 상단에 표시된 수 만큼의 비트들로 이루어지는 다섯 개의 필들로 구성된다. 이 경우 연산 필드가 두 개이므로 두 개의 마이크로-연산들이 동시에 수행될 수 있다. 조건 필드는 분기에 사용될 조건 플래그를 지정한다. 분기 필드는 분기의 종류와 다음에 실행할 마이크로 명령어의 주소를 결정하는 방법을 명시해준다. 마지막으로, 주소 필드는 분기가 발생하는 경우를 위하여 목적지 마이크로 명령어의 주소를 가지고 있다.
마이크로연산들에 대한 2진 코드 및 기호(예시)
조건 필드의 코드 지정
두 비트로 구성되며, 분기의 조건으로 사용
- U : 무조건 분기
- I : 만약 I = 1이면, 간접 사이클 루틴을 호출
- S : 누산기에 저장된 데이터의 부호가 1이면, 분기
- Z : 누산기에 저장된 데이터가 0 (Z=1)이라면, 분기
각 비트 조합이 나타내는 의미
두 비트로 구성되며, 분기의 유형을 지정
- 조건 필드의 조건이 만족되면, ADF 필드의 내용을 CAR로 적재
- 그 주소로 분기 (JUMP 혹은 CALL)
- RET : 서브루틴으로부터 복귀(SBR에 저장된 내용을 CAR로 적재)
- MAP : 사상 방식에 의하여 분기 목적지 주소 결정
마이크로프로그래밍
마이크로명령어 형식을 이용하여 몇 가지 루틴 들을 작성
마이크로명령어 형식을 이용하여 마이크로프로그래밍을 통해 작성할 수 있는 루틴의 종류는 총 3가지이다.
- 인출 사이클 루틴
- 간접 사이클 루틴
- 실행 사이클 루틴
인출 사이클 루틴
루틴은 세 개의 마이크로명령어들로 구성된다. 두번째 마이크로명령어에서는 두 개의 마이크로-연산들이 동시에 수행되는 것에 유의해야한다. 그리고 마지막 단계에서는 사상을 이용하여 CAR에 실행 사이클 루틴의 시작 주소를 적재함으로써다음 사이클에서 해당 실행루틴으로 분기가 일어나게 된다. 이러한 루틴의 각 마이크로 명령어를 2진 비트 패턴으로 변환하면 다음과 같다.
여기서 주소는 각 마이크로명령어가 저장될 제어 기억장치 내의 주소를 가리킨다.
u-ops 부분은 두 개의 마이크로-연산들을 가리키고, CD는 조건 필드, BR은 분기필드, 그리고 ADF는 주소필드에 각각 대응된다. 마지막 마이크로 명령어의 ADF는 사용되지 않으므로 모든 비트들을 0으로 세트했다.
간접 사이클 루틴
어떤 명령어가 간접 주소지정 방식을 사용하는 경우에는 명령어 내의 I비트가 1로 세트된다. 이 경우에는 실행 사이클의 시작 부분에서 간접 사이클 루틴을 호출하여 기억장치로부터 실제 오퍼랜드 주소를 읽어와야 한다. 일반적으로 간접 사이클 루틴은 인출 사이클 루틴의 다음 위치인 4번지부터 저장되며, 다음과 같은 마이크로 명령어들로 이루어진다.
IR에 저장되어 있는 명령어의 주소 필드가 가리키는 기억장치 위치로부터 실제 주소를 인출하여 다시 IR의 주소 필드에 적재하는 것이다. 이 루틴의 마지막 마이크로명령어가 실행된 다음에는 이 간접 사이클을 호출하였던 실행 사이클 루틴으로 복귀해야 한다. 이 복귀(RET)는 SBR에 저장되어 있던 원래의 제어 기억장치 주소를 CAR로 적재함으로써 수행된다.
이 루틴의 마이크로명령어들을 2진 비트 패턴으로 변환하면 다음과 같다.
실행 사이클 루틴
사상 방식을 이용하여 각 연산 코드에 대한 실행 사이클 루틴의 시작 주소를 결정하고, 각 명령어 실행을 위한 루틴을 작성한다.
- 첫 번째 명령어인 NOP은 아무런 연산도 수행하지 않고 PC만 1을 증가시키는 명령어이지만, 특정 목적을 위하여 거의 모든 CPU의 명령어 세트에 포함되어 있다.
- 이 루틴들의 마지막 마이크로 명령어에서는 그 다음에 인출 사이클 루틴(FETCH)으로 점프되도록 지정함으로써, 각 실행 사이클 루틴의 수행이 종료된 다음에는 인출 사이클부터 다시 시작 되도록 한다.
각 명령어들에 대한 실행 사이클 루틴들
마이크로프로그램의 순서 제어
- 제어 유니트가 명령어의 실행을 제어한다는 것은 제어 기억장치에 저장된 해당 마이크로명령어들을 순서대로 인출하는 동작이라고 할 수 있다.
- 각 마이크로명령어를 읽어서 연산 필드에 있는 비트들을 출력시키면, 그 비트들 자체가 제어 신호들이 되는 것이다.
순서제어(sequencing)
- 제어 유니트에서 다음에 실행될 마이크로 명령어의 주소를 결정하는 기능
제어 기억장치를 제외한 상단의 모듈들은 다음에 실행할 마이크로 명령어의 주소를 결정하는 회로들이며, 그 기능을 순서제어라고 부른다.
이 회로에서의 핵심 요소는 다음에 인출할 마이크로 명령어의 제어 기억장치 주소를 가지고 있는 CAR이다. CPU가 처음 동작을 실행하는 순간에는 cAR이 '0'으로 세트되어, 제어 기억장치의 0번지에 있는 인출 사이클 루틴의 첫 번째 마이크로명령어를 인출하면서 마이크로프로그램의 실행이 시작된다.
제어 기억장치로부터 출력된 그 마이크로명령어의 비트들 중에 CD 필드의 두 비트들은 MUX2로 보내져서 네 개의 조건 비트들 중의 하나를 선택하게 된다.(여기서 MUX는 멀티플렉서(multiplexer를 말한다.)
결과적으로 네 가지 조건값들 중의 하나가 MUX2의 출력이 되는 것이다. 그 출력은 상단의 주소 선택 회로의 한 입력(C)으로 들어간다.
주소 선택 회로의 다른 두 입력들로는 BR 필드의 두 비트들이 들어간다. 그 세 입력들이 조합되면 MUX1의 선택 신호들과 SBR의 적재(L)신호가 생성되며, 그에 따라 다음 주소들이 결정되어 CAR로 적재된다.
주소 선택 방법
- BR = 00 (JUMP) 혹은 01 (CALL)일 때,
- C = 0, 다음 위치의 마이크로명령어 선택
- C = 1, 주소 필드(ADF)가 지정하는 위치로 점프(jump) 혹은 호출(call) (단, 호출 시에는 CAR 내용을 SBR에 저장)
- BR = 10 (RET)일 때는 SBR 내용을 CAR로 적재 : 복귀
- BR = 11 (MAP)일 때는 사상 결과를 CAR에 적재되어 해당 실행 사이클 루틴으로 분기하게 된다.
제어 기억장치로부터 읽혀진 마이크로 명령어의 최상위 비트들인 마이크로-연산 비트들(u-ops)은 제어 유니트의 외부로 나가서 제어 신호들이 된다. 그런데 이 비트들이 각각 하나의 제어 신호로 사용된다면, 이 예시의 경우에는 연산 필드들이 각가 3비트씩이므로 모두 6개의 제어 신호들만 발생할 수 있다.
만약 각 마이크로-연산을 수행하는데 더 많은 제어신호들이 필요하다면, 그 비트들을 해독기들을 통과시킴으로써 그 수를 확대시킬 수 있다.
수직적 마이크로프로그래밍(vertical microprogramming)
- 마이크로 명령어의 연산 필드에는 적은 수의 코드화된 제어 비트들만 두고, 해독기를 이용하여 그 비트들을 필요한 수만큼의 제어 신호들로 확장시키는 마이크로프로그래밍 방식
각 연산 필드의 세 비트를 3 x 8 해독기를 통과시켜 8비트로 변환함으로써 모두 16개의 제어 신호들을 발생시키고 있다.
이와 같이 마이크로 명령어 내에 적은 수의 코드화된(encoded) 비트들을 포함시킴으로써 마이크로명령어의 길이(비트 수)를 줄이고, 그 대신에 외부에 해독기들을 접속하여 원하는 수만큼의 제어 신호로 확장하는 방식을 수직적 프로그래밍이라고 한다. 그리고 이 방식에서 사용되는 마이크로명령어는 수직적 마이크로명령어라고 부른다.
이 방식은 마이크로명령어의 길이가 짧기 때문에 제어 기억장치의 용량이 적게 필요하다는 장점이 있지만, 해독기를 통과하는데 걸리는 시간만큼 지연이 발생한다는 단점이 있다.
수평적 마이크로프로그래밍(horizontal microprogramming)
- 마이크로명령어의 연산 필드에 필요한 제어신호 수만큼의 비트들을 포함시키고, 각 비트를 제어신호로 직접 사용하는 마이크로 프로그래밍 방식
마이크로명령어 내 연산 필드들의 각 비트와 제어 신호를일대일로 대응시켜서, 그 수만큼의 비트들로 이루어진 마이크로명령어들을 사용하는 방식을 수평적 마이크로프로그래밍이라고 한다.
이 방식을 이용하면 제어 기억장치로부터 인출된 마이크로명령어의 마이크로-연산 비트들이 해독기를 통과할 필요 없이 직접 제어 신호로 사용될 수 있기 때문에, 하드웨어가 간단하고 해독에 따른 시간 지연이 없다는 장점이 있다. 그러나 연산 필드의 비트 수가 필요한 제어 신호들의 수만큼 제공되어야 하기 때문에 마이크로명령어의 길이가 증가하여, 제어 기억장치의 용량이 커진다는 단점이 있다.
Reference
컴퓨터 구조론 개정 5판
https://yz-zone.tistory.com/79
[ 컴퓨터구조 ] 4.3 마이크로 명령어의 형식
마이크로 명령어의 형식 ▣ 연산 필드가 두 개이면, 두 개의 마이크로-연산들을 동시에 수행 가능 ▣ 조건(CD) 필드는 분기에 사용될 조건 플래그를 지정 ▣ 분기(BR) 필드는 분기의 종류와 다음에
yz-zone.tistory.com