Mano의 컴퓨터시스템구조

[mano의 컴퓨터시스템 구조] 7장 마이크로 프로그램된 제어

studyingalone 2025. 1. 5. 18:35
728x90

Mano의 컴퓨터시스템 구조: 7장 마이크로 프로그램된 제어

7.1 제어 메모리

 

  1. 제어 유닛의 역할
    • 디지털 컴퓨터의 제어 유닛은 마이크로작업(microoperations)을 순차적으로 실행하기 위한 제어 신호를 생성한다.
  2. 하드와이어드 제어 vs. 마이크로프로그래밍
    • 하드와이어드 제어: 논리 설계를 통해 고정된 제어 신호를 생성.
    • 마이크로프로그래밍: 마이크로작업의 순서를 제어 메모리에 저장된 마이크로명령어(microinstructions)를 통해 수행.
  3.   제어 메모리와 마이크로프로그래밍
    • 제어 메모리는 제어 변수들이 저장된 메모리로, 일반적으로 ROM(Read-Only Memory)을 사용.
    • 마이크로명령어는 하나 이상의 마이크로작업을 지정하며, 이를 통해 다양한 연산 수행 가능.
    • 마이크로프로그램: 마이크로명령어의 순차적인 집합으로, 제어 유닛의 동작을 정의.
  4. 동작 원리
    • 제어 메모리 주소 레지스터(CMAR)가 마이크로명령어 주소를 지정.
    • 제어 데이터 레지스터(CDR)는 읽어온 마이크로명령어를 저장.
    • 마이크로명령어는 데이터를 처리하는 마이크로작업을 실행하고 다음 명령어 주소를 계산.
    • 다음 주소는 순차적으로 증가하거나 외부 입력 및 조건에 따라 결정.
  5. 장점
    • 하드웨어 수정 없이 제어 메모리에 저장된 마이크로프로그램만 변경하여 새로운 기능 추가 가능.
    • RISC 아키텍처 컴퓨터에서는 주로 하드와이어드 제어를 사용.
  6. 동적 마이크로프로그래밍
    • ROM 대신 쓰기 가능한 제어 메모리를 사용해 마이크로프로그램을 변경 가능.
    • 보통 보조 메모리에서 로드하여 초기화.
  7. 제어 유닛 구성 요소
    • 제어 메모리(ROM): 마이크로명령어 저장.
    • 주소 레지스터(Control address register): 다음 마이크로 명령어의 주소 계산.
    • 마이크로프로그램 시퀀서(주소 생성기, Next-address generator): 다음 마이크로 명령어 주소 결정.
    • 제어 데이터 레지스터(Control data register, pipeline register): 매 클럭 펄스마다 데이터 레지스터의 제어 워드에서 지정하는 마이크로 연산과 다음 마이크로 명령어를 읽어오는 동작을 동시에 한다.

 

 


7-2 Address Sequencing 

명령어 코드를 제어 메모리의 특정 위치와 연결하는 과정

 

  1. 마이크로명령어와 제어 메모리
    • 마이크로명령어는 제어 메모리에 그룹 단위로 저장되며, 각각의 그룹은 특정 작업 루틴을 지정.
    • 각 컴퓨터 명령어는 제어 메모리에서 고유한 마이크로프로그램 루틴을 가짐.
  2. 제어 메모리에서의 주소 시퀀싱 과정
    • 초기화: 컴퓨터 전원이 켜질 때 제어 주소 레지스터(CAR)에 초기 주소가 로드되어 명령어 가져오기(fetch) 루틴 시작.
    • 명령어 실행 과정:
      1. 제어 주소 레지스터를 하나 증가시킴
      2. 무조건 분기와 상태 비트 조건에 따른 조건부 분기
      3. 명령어의 비트들로부터 제어 메모리의 주소로 매핑하는 처리
      4. 서브루틴을 호출하고(call), 복귀하는 (return) 기능
  3. 주소 시퀀싱 요구 사항
    • CAR의 값 증가(순차적 명령어 실행).
    • 조건부/무조건 브랜치를 통한 흐름 제어.
    • 명령어 비트를 제어 메모리 주소로 변환하는 매핑 과정.
    • 하위 루틴 호출 및 복귀를 위한 주소 저장 장치.
  4. 조건부 분기
    • 상태 비트(carry-out, 부호 비트 등)를 테스트하여 조건에 따라 브랜치 주소를 CAR로 로드하거나 다음 주소로 진행.
    • 분기(Branch) 논리는 멀티플렉서를 사용하여 구현.
  5. 명령어 매핑
    • 명령어 코드에서 제어 메모리 주소로 매핑하는 규칙을 정의.
    • 간단한 매핑: 명령어 코드 비트를 특정 비트 위치에 배치.
      명령어 코드로부터 제어 메모리 주소로의 매
  6. 서브 루틴(subroutines)
    • 공통된 작업을 수행하는 코드 섹션을 재사용하기 위해 사용.
    • 호출 시 복귀 주소를 저장하고, 복귀 시 복원.
      • 리턴 주소는 특수한 레지스터에 미리 기억시켜두고 서브루틴으로 분기해야 다시 루틴으로 돌아올 수 있다.

 


7.3 Microprogram Example

컴퓨터 하드웨어 구성

 

 

  1. 메모리 구성:
    • 주 메모리: 명령어와 데이터를 저장.
    • 제어 메모리: 마이크로프로그램 저장.
  2. 레지스터:
    • 프로세서 레지스터:
      • 프로그램 카운터(PC), 주소 레지스터(AR), 데이터 레지스터(DR), 누산기 레지스터(AC).
    • 제어 유닛 레지스터:
      • 제어 주소 레지스터(CAR), 서브루틴 레지스터(SBR).
      • 마이크로프로그램 제어 장치와 함께 구성.
  3. 정보 전송 및 연산:
    • 정보 전송: 멀티플렉서를 통해 이루어짐.
      • DR: AC, PC, 메모리에서 데이터 수신 가능.
      • AR: PC, DR에서 데이터 수신 가능.
      • PC: AR에서만 데이터 수신 가능.
    • 연산:
      • 산술, 논리, 및 시프트 연산은 AC와 DR 데이터를 사용해 AC에 결과 저장.
    • 메모리 연산:
      • 주소는 AR에서 제공.
      • 입력 데이터: DR에서 메모리로.
      • 출력 데이터: 메모리에서 DR로만 전송.

 

 

 

컴퓨터 명령어

 

 

  1. 명령어 형식:
    • 3개 필드로 구성(Fig. 7-5a):
      • 간접 주소(I): 1비트.
      • 연산 코드(opcode): 4비트.
      • 주소 필드: 11비트.
  2. 메모리 참조 명령어(4가지):
    • ADD: 유효 주소의 데이터를 AC에 더함.
    • BRANCH: AC가 음수면 유효 주소로 분기, 그렇지 않으면 다음 명령 실행.
    • STORE: AC 내용을 유효 주소 메모리로 저장.
    • EXCHANGE: AC와 유효 주소 메모리 데이터 교환.

 

마이크로 명령어 형식

마이크로 명령어 코드 형식

 

기호로 표시된 마이크로 명령어

  • 구조:
    • 마이크로명령어는 레이블, 마이크로연산(Microoperations), 조건(CD), 분기(BR), 주소(AD) 5개의 필드로 구성.
    • 각 필드의 역할:
      1. Label: 공백, 기호 주소를 나타낼 수 있다. 라벨 뒤에 콜론(;)을 붙어야 한다.
      2. Microoperations: 표에서 정의된 1~3개의 기호로 구성되고 최대 3개 연산을 쉼표로 구분해 지정. (NOP은 연산 없음).
      3. CD: 조건 코드(U, I, S, Z).
      4. BR: 분기 명령어(JMP, CALL, RET, MAP).
      5. AD: 다음 명령어 주소를 심볼릭 주소, NEXT, 또는 공백(특정 BR일 경우)으로 지정.

마이크로 명령어의 각 필드에 대한 기호와 이진 코드


Fetch 루틴

  • 기능: 명령어를 메모리에서 가져와 실행 준비.

AR ← PC 
DR ←  M[AR], PC ←  PC + 1 
AR ←  DR (0-10), CAR(2-5) ← DR (11-14), CAR(0,1, 6) ←  0 


7.4 제어 장치의 설계

마이크로명령 비트 구성

  • 마이크로명령의 비트는 여러 필드로 구분되며, 각 필드는 독립적인 기능을 정의.
  • 마이크로연산 비트 수를 줄이기 위해 상호 배타적인 변수들을 그룹화하고, 필드 내의 비트를 인코딩하여 2^k개의 마이크로연산을 제공.
  • 이 방식은 비트 수를 줄이지만 디코더와 추가 하드웨어가 필요하며, 제어 신호의 지연 시간이 증가.

마이크로프로그램 시퀀서

  • 제어 메모리와 다음 주소 선택 회로로 구성.
  • 다음 주소 논리는 현재 마이크로명령의 주소 정보를 이용해 특정 주소를 제어 주소 레지스터(CAR)에 로드.
  • 상용 시퀀서는 서브루틴 호출 시 임시 주소 저장을 위한 내부 레지스터 스택 제공.

제어 메모리를 위한 마이크로 프로그램 시퀀서

마이크로프로그램 시퀀서 동작

  • 두 개의 멀티플렉서를 사용:
    • 첫 번째는 CAR에 로드할 주소 소스를 선택.
    • 두 번째는 상태 비트를 테스트하고 결과를 입력 논리로 전달.
  • CAR의 출력은 제어 메모리의 주소로 사용되며, CAR의 내용은 증가되거나 서브루틴 레지스터(SBR)에 저장 가능.

 

728x90
반응형