마이크로시퀀서

인도의 컴퓨터 구조 및 엔지니어링에서 **시퀀서**(sequencer) 또는 **마이크로시퀀서**(microsequencer)는 컨트롤 스토어의 마이크로프로그램을 단계별로 수행하는 데 사용되는 주소를 생성한다. 이것은 CPU의 제어 장치의 일부로 사용되거나 주소 범위에 대한 독립적인 생성기로 사용된다.

일반적으로 주소는 카운터, 마이크로 명령의 필드 및 명령 레지스터의 일부 하위 집합의 조합으로 생성된다. 카운터는 다음 마이크로 명령이 실행될 명령인 일반적인 경우에 사용된다. 점프 또는 다른 논리에는 마이크로 명령의 필드가 사용된다.

CPU는 명령어 집합을 구현하므로 명령어의 비트를 시퀀서로 직접 디코딩하여 CPU의 명령을 수행하기 위한 마이크로 명령 집합을 선택할 수 있는 것이 매우 유용하다.

대부분의 최신 CISC 프로세서는 하나의 클럭 사이클에서 완료할 수 있는 낮은 복잡성의 오퍼레이션 코드를 처리하기 위해 파이프라인 방식의 논리를 사용하고, 완료하는 데 여러 클럭 사이클이 걸리는 오퍼레이션 코드를 구현하기 위해 마이크로코드를 사용한다.

최초의 통합 마이크로코드 프로세서 중 하나는 IBM PALM 프로세서로, 마이크로코드에서 프로세서의 모든 명령을 에뮬레이트했으며 최초의 개인용 컴퓨터 중 하나인 IBM 5100에서 사용되었다.

유사한 오픈 소스 마이크로시퀀서 기반 프로세서의 최근 예로는 인텔 8086/8088, 8051 및 MOS 6502 명령어 세트를 마이크로코드에서 완전히 에뮬레이트하는 MicroCore Labs의 MCL86, MCL51 및 MCL65 코어가 있다.

## 단순한 예
Digital Scientific Corp. Meta 4 Series 16 컴퓨터 시스템은 1970년에 처음 출시된 사용자 마이크로프로그래밍 가능한 시스템이었다. 마이크로코드 시퀀스의 분기는 세 가지 방식으로 발생한다.
* 분기 마이크로 명령은 조건부 또는 무조건적으로 다음 명령의 주소를 지정한다. 논리적 색인(IX) 옵션은 16비트 링크 레지스터를 분기 주소에 논리 OR되도록 하여 간단한 색인 분기 기능을 제공한다.

* 모든 산술/논리 명령은 링크 레지스터가 주소 지정하는 마이크로 명령으로 실행을 리디렉션하는 점프(J) 수정자를 허용한다.

* 모든 산술/논리 명령은 디크리먼트 카운터(D) 및 점프(J) 수정자 둘 다를 허용한다. 이 경우 8비트 루프 카운터 레지스터가 디크리먼트된다. 이때 0이 아니면 링크 레지스터의 내용으로 분기가 이루어진다. 0이면 다음 명령으로 실행이 계속된다.

분기 명령에서 허용되는 또 다른 시퀀싱 옵션은 실행(XQ) 옵션이다. 이 옵션을 지정하면 분기 주소에 있는 단일 명령이 실행되지만, 원래 분기 명령 이후에 실행이 계속된다. IX 옵션은 XQ 옵션과 함께 사용할 수 있다.

## 복잡한 예
IBM 시스템/360은 1964년에 도입된 호환 가능한 컴퓨터 시리즈로, 그 중 많은 수가 마이크로프로그래밍되었다. 시스템/360 모델 40은 복잡한 마이크로 시퀀싱 기능을 갖춘 마이크로프로그래밍된 기계의 좋은 예이다.

마이크로 스토어는 수평 마이크로 프로그래밍 방식으로 작동하는 4,096개의 56비트 마이크로 명령으로 구성된다. 스토어는 12비트 읽기 전용 주소 레지스터(ROAR)로 주소 지정된다. S/360 아키텍처의 대부분의 레지스터와 달리 ROAR의 비트는 오른쪽의 비트 0에서 왼쪽의 비트 11까지 번호가 매겨져 있다.

```
+------------+
  |    ROAR    |
  +------------+
  11          0
```


모델 40은 마이크로 명령의 순차적 실행을 수행하지 않으므로 마이크로 시퀀서는 기존 의미에서 실제로 분기하지 않는다. 대신 각 마이크로 명령은 실행될 다음 명령의 주소를 지정한다. 마이크로 명령의 4개 필드는 새 주소에 기여한다.

* CA, 4비트: 다른 필드에 따라 다음 주소의 일부.
* CB, 4비트: 다음 주소의 비트 1 결정.
* CC, 4비트: 다음 주소의 비트 0 결정.
* CD, 2비트: 다음 주소가 조합되는 방식을 제어한다(CB 필드가 15를 포함하는 경우 제외).

본질적으로 이러한 필드의 세 가지 조합 또는 형식이 있다.

### 기능적 분기 형식
CB 필드가 15를 포함할 때 기능적 분기가 발생한다. ROAR의 새 마이크로 스토어 주소의 비트는 다음과 같이 결정된다.
* 비트 11-10: CD 필드
* 비트 9-6: CA 필드
* 비트 5: 항상 0
* 비트 4-1: Q 레지스터의 상위 4비트로, 8비트 ALU의 오른쪽 입력
* 비트 0: CC 필드로 지정된 테스트 결과

CC 필드는 기계 상태의 다양한 테스트를 지정할 수 있다. 또한 무조건 비트의 경우 상수 0 또는 1을 지정할 수도 있다.

이 형식은 마이크로 스토어의 64 워드 블록 중 하위 32 워드 내의 16개 명령 쌍 중 1개로 제어 흐름을 변경한다(비트 5는 항상 0이므로). 그런 다음 CC 필드는 쌍의 어떤 명령이 제어를 받을지 결정한다.

### CD = 0, 1, 3 형식
CD 필드가 0, 1, 또는 3일 때 제어 흐름은 현재 64워드 블록 내의 명령으로 향한다. 새 마이크로 스토어 주소의 비트는 다음과 같이 결정된다.
* 비트 11-6: 동일 유지
* 비트 5-2: CA 필드
* 비트 1: CD = 0이면 CB 필드로 지정된 테스트 결과; 그렇지 않으면 0
* 비트 0: CC 필드로 지정된 테스트 결과

CA 필드는 현재 64워드 블록 내에서 16개의 4워드 그룹 중 1개를 선택한다. 그런 다음 CB 및 CC 필드는 4개 중 어떤 명령이 제어를 받을지 결정한다.

### CD = 2 형식
CD 필드가 2일 때 제어 흐름은 명확하지 않은 방식으로 향한다. 새 마이크로 스토어 주소의 비트는 다음과 같이 결정된다.
* 비트 11-10: 동일 유지
* 비트 9-6: CA 필드
* 비트 5-2: 동일 유지
* 비트 1: CB 필드로 지정된 테스트 결과
* 비트 0: CC 필드로 지정된 테스트 결과

다음 명령은 현재 명령과 동일한 1K 워드 영역에 있다(비트 11-10이 동일하게 유지되기 때문). CA 필드는 영역 내에서 64 워드 블록을 결정한다. 이 명령은 새 블록 내에서 현재 명령이 현재 블록 내에서와 동일한 4 워드 그룹에 있다(비트 5-2가 동일하게 유지되기 때문).
그런 다음 CB 및 CC 필드는 4개 중 어떤 명령이 제어를 받을지 결정한다.

### 단순화
이 설명은 단순화되었다. 다음 기능은 무시되었다.
* 모델 40은 CPU 모드 또는 채널 모드에서 실행될 수 있다. 설명은 CPU 모드만 다룬다.
* 마이크로 명령이 기능적 분기 형식이 아니고 CD 필드가 1 또는 3이면 다음 주소의 비트 1은 항상 0이다. 이 경우 CD 및 CB 필드의 값은 발생시킬 제어선 집합 중 하나를 결정한다.

## 각주

분류:중앙 처리 장치