본문 바로가기

하드와이어드·마이크로프로그램

상태·명령 해독으로 제어 신호를 만드는 방법과 제어 기억장치의 마이크로명령 방식을 비교합니다.

앞 절의 LOAD 제어표를 누가 순서대로 선택할까요? 제어장치는 현재 명령·상태·조건에 맞춰 데이터 경로를 움직이는 신호를 생성합니다. 명령의 의미와 전기적 제어 신호 사이를 연결합니다.

하드와이어드 제어

하드와이어드 제어는 명령 해독·상태 레지스터·조합논리로 신호를 만듭니다. 현재 상태=EXEC이고 opcode=ADD일 때 ALU 덧셈·레지스터 기록 신호를 켜는 식입니다. 상태기계의 다음 상태도 조건에 따라 계산합니다.

경로를 직접 설계해 빠른 제어가 가능하지만 동작 변경은 논리 설계의 변경이 필요할 수 있습니다. “고정됐으므로 반드시 단순한 ISA만 가능하다”는 결론은 아닙니다. 실제 시스템의 설계 선택은 다양한 요소에 달려 있습니다.

마이크로프로그램 제어

제어 기억장치(control store)에는 데이터 경로를 제어하는 마이크로명령을 저장합니다. 마이크로 PC 또는 제어 주소 레지스터가 현재 마이크로명령 위치를 고르고, 다음 주소 선택 논리가 조건 분기·명령 진입 위치를 선택합니다.

사용자 프로그램의 PC가 가리키는 ISA 명령과 제어 기억장치의 마이크로명령은 계층이 다릅니다. LOAD 하나가 여러 마이크로명령으로 실행될 수 있습니다. 마이크로프로그램 방식이라고 모든 내용을 사용자가 자유롭게 수정할 수 있는 것도 아닙니다.

마이크로명령이 데이터 경로의 제어를 선택합니다

µPC 20의 제어어로 MAR를 준비한다. LOAD 결과를 기록하고 fetch로 복귀한다. 각 단계의 값과 전환 이유를 비교합니다.

컴퓨터구조 · 읽는 순서

마이크로명령이 데이터 경로의 제어를 선택합니다

제어 주소→제어 정보→제어 신호→데이터 경로 순서로 따라갑니다.

마이크로프로그램 제어 정보 흐름제어 주소로 마이크로명령을 읽고 제어 신호를 만들어 데이터 경로를 움직이며 다음 주소는 조건과 명령에 따라 선택합니다.
제어 주소현재 마이크로 PC
연결 관계제어 주소 · 현재 마이크로 PC → 제어 기억장치 · 마이크로명령 읽기
제어 기억장치마이크로명령 읽기
연결 관계제어 기억장치 · 마이크로명령 읽기 → 제어 신호 · 선택·기록·연산
제어 신호선택·기록·연산
연결 관계제어 신호 · 선택·기록·연산 → 데이터 경로 · 레지스터·ALU
데이터 경로레지스터·ALU

조건·명령에 따른 다음 제어 주소 선택은 별도 논리

마이크로프로그램 제어 정보 흐름제어 주소로 마이크로명령을 읽고 제어 신호를 만들어 데이터 경로를 움직이며 다음 주소는 조건과 명령에 따라 선택합니다.
제어 주소현재 마이크로 PC
연결 관계제어 주소 · 현재 마이크로 PC → 제어 기억장치 · 마이크로명령 읽기
제어 기억장치마이크로명령 읽기
연결 관계제어 기억장치 · 마이크로명령 읽기 → 제어 신호 · 선택·기록·연산
제어 신호선택·기록·연산
연결 관계제어 신호 · 선택·기록·연산 → 데이터 경로 · 레지스터·ALU
데이터 경로레지스터·ALU

다음 제어 주소는조건·명령으로 선택

ISA 명령 PC와 마이크로 PC는 서로 다른 계층의 위치입니다. 그림은 제어 정보의 흐름이며 모든 내부 연산이 한 사이클이라는 뜻은 아닙니다.

이 예의 조건

  • 본문과 전체 도표의 예를 따라 주소 설정부터 레지스터 기록까지 진행합니다.

주소 설정

µPC 20의 제어어로 MAR를 준비한다.

직전 단계와 현재 단계
상태직전 단계 없음현재: 주소 설정
µPC·데이터 1—MAR=10
µPC·데이터 2—µPC20

변화와 이유

  • 다음 µPC 21
  • µPC·데이터
  • 제어 전환

장면별 값과 변화
예의 값과 변화
관찰·상황값·보충 정보변화·이유
주소 설정

µPC 20의 제어어로 MAR를 준비한다.

  • µPC·데이터 1: MAR=10
  • µPC·데이터 2: µPC20
  • µPC·데이터
  • 제어 전환
  • 다음 µPC 21
읽기 요청

µPC 21에서 메모리에 한 번 요청한다.

  • µPC·데이터 1: memory[10]=7
  • µPC·데이터 2: MDR=0
  • 다음 µPC 22
첫 대기

아직 값이 준비되지 않았다.

  • µPC·데이터 1: READY=0
  • µPC·데이터 2: µPC22
  • µPC·데이터 3: 대기 방문 1번째
  • µPC 22와 MDR 0 유지
둘째 대기

제어어를 유지해 준비를 기다린다.

  • µPC·데이터 1: READY=0
  • µPC·데이터 2: µPC22
  • µPC·데이터 3: 대기 방문 2번째
  • µPC 22 유지
준비 완료

값이 준비된 방문에서 래치한다.

  • µPC·데이터 1: READY=1
  • µPC·데이터 2: MDR=7
  • 다음 µPC 23
레지스터 기록

LOAD 결과를 기록하고 fetch로 복귀한다.

  • µPC·데이터 1: R1=7
  • µPC·데이터 2: ISA-PC 101 유지
  • 다음 µPC 0

마이크로명령이 데이터 경로의 제어를 선택합니다

µPC 20의 제어어로 MAR를 준비한다. LOAD 결과를 기록하고 fetch로 복귀한다. 각 단계의 값과 전환 이유를 비교합니다.

컴퓨터구조 · 읽는 순서

마이크로명령이 데이터 경로의 제어를 선택합니다

제어 주소→제어 정보→제어 신호→데이터 경로 순서로 따라갑니다.

마이크로프로그램 제어 정보 흐름제어 주소로 마이크로명령을 읽고 제어 신호를 만들어 데이터 경로를 움직이며 다음 주소는 조건과 명령에 따라 선택합니다.
제어 주소현재 마이크로 PC
연결 관계제어 주소 · 현재 마이크로 PC → 제어 기억장치 · 마이크로명령 읽기
제어 기억장치마이크로명령 읽기
연결 관계제어 기억장치 · 마이크로명령 읽기 → 제어 신호 · 선택·기록·연산
제어 신호선택·기록·연산
연결 관계제어 신호 · 선택·기록·연산 → 데이터 경로 · 레지스터·ALU
데이터 경로레지스터·ALU

조건·명령에 따른 다음 제어 주소 선택은 별도 논리

마이크로프로그램 제어 정보 흐름제어 주소로 마이크로명령을 읽고 제어 신호를 만들어 데이터 경로를 움직이며 다음 주소는 조건과 명령에 따라 선택합니다.
제어 주소현재 마이크로 PC
연결 관계제어 주소 · 현재 마이크로 PC → 제어 기억장치 · 마이크로명령 읽기
제어 기억장치마이크로명령 읽기
연결 관계제어 기억장치 · 마이크로명령 읽기 → 제어 신호 · 선택·기록·연산
제어 신호선택·기록·연산
연결 관계제어 신호 · 선택·기록·연산 → 데이터 경로 · 레지스터·ALU
데이터 경로레지스터·ALU

다음 제어 주소는조건·명령으로 선택

ISA 명령 PC와 마이크로 PC는 서로 다른 계층의 위치입니다. 그림은 제어 정보의 흐름이며 모든 내부 연산이 한 사이클이라는 뜻은 아닙니다.

이 예의 조건

  • 본문과 전체 도표의 예를 따라 주소 설정부터 레지스터 기록까지 진행합니다.
예의 값과 변화
관찰·상황값·보충 정보변화·이유
주소 설정

µPC 20의 제어어로 MAR를 준비한다.

  • µPC·데이터 1: MAR=10
  • µPC·데이터 2: µPC20
  • µPC·데이터
  • 제어 전환
  • 다음 µPC 21
읽기 요청

µPC 21에서 메모리에 한 번 요청한다.

  • µPC·데이터 1: memory[10]=7
  • µPC·데이터 2: MDR=0
  • 다음 µPC 22
첫 대기

아직 값이 준비되지 않았다.

  • µPC·데이터 1: READY=0
  • µPC·데이터 2: µPC22
  • µPC·데이터 3: 대기 방문 1번째
  • µPC 22와 MDR 0 유지
둘째 대기

제어어를 유지해 준비를 기다린다.

  • µPC·데이터 1: READY=0
  • µPC·데이터 2: µPC22
  • µPC·데이터 3: 대기 방문 2번째
  • µPC 22 유지
준비 완료

값이 준비된 방문에서 래치한다.

  • µPC·데이터 1: READY=1
  • µPC·데이터 2: MDR=7
  • 다음 µPC 23
레지스터 기록

LOAD 결과를 기록하고 fetch로 복귀한다.

  • µPC·데이터 1: R1=7
  • µPC·데이터 2: ISA-PC 101 유지
  • 다음 µPC 0

수평형 마이크로명령은 여러 제어 신호를 직접 표현해 폭이 넓어질 수 있습니다. 수직형은 신호를 더 압축해 해독을 거치는 방식으로 비교할 수 있습니다. 실제 형식은 이 두 극단 사이 조합도 가능합니다. 폭·해독 비용·동시에 표현 가능한 제어를 함께 봅니다.

µPC에서 제어어와 다음 주소까지 추적하기

제어 기억장치의 주소도 구체적인 값으로 따라가 봅니다. 앞 절의 MAR·MDR 모델을 사용하고, 명령 인출·해독이 끝난 LOAD R1,[10] 실행 루틴에 진입한다고 가정합니다. 시작 상태는 µPC=20, IR.addr=10, M[10]=7, MDR=0, R1=0입니다. 사용자 프로그램 PC는 이미 다음 ISA 명령 위치인 101을 가리키며 이 루틴에서는 바뀌지 않습니다. 주소 0은 다음 명령을 인출하는 마이크로루틴의 진입점입니다.

다음 표의 제어어는 비트열 대신 동작·조건·다음 주소를 적은 자체 작성 교육 형식입니다. 각 행은 한 마이크로단계에서 선택할 제어어입니다. MemWrite=0은 모든 행에 공통입니다. 메모리 읽기는 요청 뒤 나중에 완료되며, READY=1이면 응답 값 7이 안정돼 있다는 모델 조건을 둡니다.

제어 기억장치 주소제어어가 지시하는 동작다음 µPC
20MAR←IR.addr21
21MAR 주소의 메모리 읽기 요청을 한 번 시작22
22WAIT_READ: READY=0이면 레지스터 유지, READY=1이면 MDR←응답READY=0이면 22, READY=1이면 23
23R1←MDR0

22번 제어어는 그대로 있고 조건 입력 READY가 바뀝니다. 제어어를 해독한 논리가 READY와 함께 MDR 기록 허용 및 다음 주소를 결정하는 방식입니다. 제어 기억장치의 내용이 매 순간 저절로 바뀌는 설명이 아닙니다. 읽기 요청은 21에서 한 번 시작했으므로 22를 반복할 때마다 새 요청을 내지 않습니다. 실제 메모리 인터페이스의 요청·완료 규약은 설계에 따라 다르며 이 표를 모든 CPU의 타이밍으로 일반화하지 않습니다.

READY가 22번을 처음 두 번 방문할 때 0, 세 번째 방문에서 1이면 다음처럼 실행됩니다. 표의 값은 그 행을 실행한 뒤의 상태입니다.

단계선택한 µPC읽은 제어어·조건실행 뒤 MAR·MDR·R1다음 µPC
120주소 전달10·0·021
221읽기 요청 시작10·0·022
322READY=0, 유지10·0·022
422READY=0, 유지10·0·022
522READY=1, 응답 저장10·7·023
623목적지 레지스터 기록10·7·70

따라서 선택 주소열은 20→21→22→22→22→23이고, 다음 선택은 0입니다. LOAD가 끝난 뒤 R1은 7, 입력 메모리 M[10]은 7로 보존됩니다. 마이크로단계가 여섯 번 진행돼도 ISA PC가 여섯 번 증가하지 않습니다. 명령 PC와 µPC가 서로 다른 일을 한다는 사실을 상태표에서 확인할 수 있습니다.

명령과 제어의 등가성을 확인하기

하드와이어드·마이크로프로그램 구현이 서로 달라도 같은 ISA 명령의 결과는 약속대로 나와야 합니다. 검증에서는 초기 레지스터·메모리·명령을 같게 두고 최종 상태와 허용되는 예외를 비교합니다. 내부 단계 수가 같아야 한다는 요구는 아닙니다.

예를 들어 ADD는 두 입력의 합을 목적지에 기록해야 합니다. 제어 기억장치에 실수로 MemWrite=1이 추가되면, 레지스터 결과가 맞더라도 메모리를 훼손할 수 있습니다. 바뀌어야 하는 상태와 바뀌면 안 되는 상태를 모두 검사해야 합니다.

독립 문제: 잘못된 제어 비트

LOAD의 마지막 단계는 R1←MDR이며 M[10]=7, MDR=7, R1=0입니다. 정상 최종 R1·M[10]을 쓰세요. 이 단계가 R1←MDR 대신 M[MAR]←R1로 기록됐고 MAR=10이면 어떤 오류가 생기나요? 검사 항목을 제안하세요.

힌트

데이터 7이 준비돼 있는 것과 올바른 목적지에 기록하는 것은 다릅니다.

풀이

정상은 R1=7, M[10]=7입니다. 오류에서는 메모리에 기존 R1=0을 써 M[10]=0이고 R1은 0으로 남습니다. 레지스터 기록 결과와 입력 메모리 보존을 함께 검사하면 발견할 수 있습니다. 마이크로프로그램을 읽을 때 각 줄의 출발지·목적지·다음 주소를 표시하세요.

독립 문제: 완료를 기다리지 않은 분기

같은 시작 상태에서 22번의 READY 관찰값이 첫 방문 0, 두 번째 방문 1이라면 정상 선택 µPC 주소열과 최종 R1을 쓰세요. 오류 제어어가 READY=0에서도 다음 주소를 23으로 정하되 MDR은 계속 유지한다면, 첫 방문 직후 어떤 주소로 이동하고 R1은 무엇이 되나요? 그 결과를 “메모리가 0을 반환했다”고 설명해도 되나요?

주소 추적 힌트

다음 주소 선택과 MDR 기록 허용은 각각 확인합니다. READY=0일 때 MDR의 시작 값이 남아 있다는 사실을 기록하세요.

주소 추적 풀이

정상 선택열은 20→21→22→22→23이고 다음은 0입니다. 두 번째 22 방문에서 응답 7을 MDR에 넣고, 23에서 R1에 옮겨 R1=7이 됩니다. 오류는 첫 22 방문 뒤 바로 23으로 이동합니다. 아직 MDR=0이므로 23에서 R1=0을 기록하고 루틴을 끝냅니다. 이는 완료 전 오래된 MDR 값을 사용한 제어 오류이며, 메모리가 반환한 값이 0이었다는 증거가 아닙니다. 두 경우 모두 이 실행 루틴의 ISA PC는 101이고, 메모리 쓰기를 하지 않아 M[10]=7을 보존합니다. 제어어의 목적지 비트와 다음 주소 조건을 함께 검증해야 합니다.

다음 병렬처리에서는 이러한 처리 단위를 여러 개 사용했을 때 달라지는 데이터·명령 흐름을 비교합니다.