728x90
Mano의 컴퓨터시스템 구조: 7장 마이크로 프로그램된 제어
7.1 제어 메모리
- 제어 유닛의 역할
- 디지털 컴퓨터의 제어 유닛은 마이크로작업(microoperations)을 순차적으로 실행하기 위한 제어 신호를 생성한다.
- 하드와이어드 제어 vs. 마이크로프로그래밍
- 하드와이어드 제어: 논리 설계를 통해 고정된 제어 신호를 생성.
- 마이크로프로그래밍: 마이크로작업의 순서를 제어 메모리에 저장된 마이크로명령어(microinstructions)를 통해 수행.
- 제어 메모리와 마이크로프로그래밍
- 제어 메모리는 제어 변수들이 저장된 메모리로, 일반적으로 ROM(Read-Only Memory)을 사용.
- 마이크로명령어는 하나 이상의 마이크로작업을 지정하며, 이를 통해 다양한 연산 수행 가능.
- 마이크로프로그램: 마이크로명령어의 순차적인 집합으로, 제어 유닛의 동작을 정의.
- 동작 원리
- 제어 메모리 주소 레지스터(CMAR)가 마이크로명령어 주소를 지정.
- 제어 데이터 레지스터(CDR)는 읽어온 마이크로명령어를 저장.
- 마이크로명령어는 데이터를 처리하는 마이크로작업을 실행하고 다음 명령어 주소를 계산.
- 다음 주소는 순차적으로 증가하거나 외부 입력 및 조건에 따라 결정.
- 장점
- 하드웨어 수정 없이 제어 메모리에 저장된 마이크로프로그램만 변경하여 새로운 기능 추가 가능.
- RISC 아키텍처 컴퓨터에서는 주로 하드와이어드 제어를 사용.
- 동적 마이크로프로그래밍
- ROM 대신 쓰기 가능한 제어 메모리를 사용해 마이크로프로그램을 변경 가능.
- 보통 보조 메모리에서 로드하여 초기화.
- 제어 유닛 구성 요소
- 제어 메모리(ROM): 마이크로명령어 저장.
- 주소 레지스터(Control address register): 다음 마이크로 명령어의 주소 계산.
- 마이크로프로그램 시퀀서(주소 생성기, Next-address generator): 다음 마이크로 명령어 주소 결정.
- 제어 데이터 레지스터(Control data register, pipeline register): 매 클럭 펄스마다 데이터 레지스터의 제어 워드에서 지정하는 마이크로 연산과 다음 마이크로 명령어를 읽어오는 동작을 동시에 한다.
7-2 Address Sequencing
명령어 코드를 제어 메모리의 특정 위치와 연결하는 과정
- 마이크로명령어와 제어 메모리
- 마이크로명령어는 제어 메모리에 그룹 단위로 저장되며, 각각의 그룹은 특정 작업 루틴을 지정.
- 각 컴퓨터 명령어는 제어 메모리에서 고유한 마이크로프로그램 루틴을 가짐.
- 제어 메모리에서의 주소 시퀀싱 과정
- 초기화: 컴퓨터 전원이 켜질 때 제어 주소 레지스터(CAR)에 초기 주소가 로드되어 명령어 가져오기(fetch) 루틴 시작.
- 명령어 실행 과정:
- 제어 주소 레지스터를 하나 증가시킴
- 무조건 분기와 상태 비트 조건에 따른 조건부 분기
- 명령어의 비트들로부터 제어 메모리의 주소로 매핑하는 처리
- 서브루틴을 호출하고(call), 복귀하는 (return) 기능
- 주소 시퀀싱 요구 사항
- CAR의 값 증가(순차적 명령어 실행).
- 조건부/무조건 브랜치를 통한 흐름 제어.
- 명령어 비트를 제어 메모리 주소로 변환하는 매핑 과정.
- 하위 루틴 호출 및 복귀를 위한 주소 저장 장치.
- 조건부 분기
- 상태 비트(carry-out, 부호 비트 등)를 테스트하여 조건에 따라 브랜치 주소를 CAR로 로드하거나 다음 주소로 진행.
- 분기(Branch) 논리는 멀티플렉서를 사용하여 구현.
- 명령어 매핑
- 명령어 코드에서 제어 메모리 주소로 매핑하는 규칙을 정의.
- 간단한 매핑: 명령어 코드 비트를 특정 비트 위치에 배치.
명령어 코드로부터 제어 메모리 주소로의 매
- 서브 루틴(subroutines)
- 공통된 작업을 수행하는 코드 섹션을 재사용하기 위해 사용.
- 호출 시 복귀 주소를 저장하고, 복귀 시 복원.
- 리턴 주소는 특수한 레지스터에 미리 기억시켜두고 서브루틴으로 분기해야 다시 루틴으로 돌아올 수 있다.
7.3 Microprogram Example
- 메모리 구성:
- 주 메모리: 명령어와 데이터를 저장.
- 제어 메모리: 마이크로프로그램 저장.
- 레지스터:
- 프로세서 레지스터:
- 프로그램 카운터(PC), 주소 레지스터(AR), 데이터 레지스터(DR), 누산기 레지스터(AC).
- 제어 유닛 레지스터:
- 제어 주소 레지스터(CAR), 서브루틴 레지스터(SBR).
- 마이크로프로그램 제어 장치와 함께 구성.
- 프로세서 레지스터:
- 정보 전송 및 연산:
- 정보 전송: 멀티플렉서를 통해 이루어짐.
- DR: AC, PC, 메모리에서 데이터 수신 가능.
- AR: PC, DR에서 데이터 수신 가능.
- PC: AR에서만 데이터 수신 가능.
- 연산:
- 산술, 논리, 및 시프트 연산은 AC와 DR 데이터를 사용해 AC에 결과 저장.
- 메모리 연산:
- 주소는 AR에서 제공.
- 입력 데이터: DR에서 메모리로.
- 출력 데이터: 메모리에서 DR로만 전송.
- 정보 전송: 멀티플렉서를 통해 이루어짐.
- 명령어 형식:
- 3개 필드로 구성(Fig. 7-5a):
- 간접 주소(I): 1비트.
- 연산 코드(opcode): 4비트.
- 주소 필드: 11비트.
- 3개 필드로 구성(Fig. 7-5a):
- 메모리 참조 명령어(4가지):
- ADD: 유효 주소의 데이터를 AC에 더함.
- BRANCH: AC가 음수면 유효 주소로 분기, 그렇지 않으면 다음 명령 실행.
- STORE: AC 내용을 유효 주소 메모리로 저장.
- EXCHANGE: AC와 유효 주소 메모리 데이터 교환.
마이크로 명령어 형식
기호로 표시된 마이크로 명령어
- 구조:
- 마이크로명령어는 레이블, 마이크로연산(Microoperations), 조건(CD), 분기(BR), 주소(AD) 5개의 필드로 구성.
- 각 필드의 역할:
- Label: 공백, 기호 주소를 나타낼 수 있다. 라벨 뒤에 콜론(;)을 붙어야 한다.
- Microoperations: 표에서 정의된 1~3개의 기호로 구성되고 최대 3개 연산을 쉼표로 구분해 지정. (NOP은 연산 없음).
- CD: 조건 코드(U, I, S, Z).
- BR: 분기 명령어(JMP, CALL, RET, MAP).
- 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
반응형
'Mano의 컴퓨터시스템구조' 카테고리의 다른 글
[mano의 컴퓨터시스템 구조] 9장 파이프라인과 벡터 처리 (1) | 2025.02.02 |
---|---|
[mano의 컴퓨터시스템 구조] 8장 중앙 처리 장치 (1) | 2025.01.18 |
[mano의 컴퓨터시스템 구조] 6장 기본 컴퓨터 프로그래밍 (1) | 2024.12.16 |
[mano의 컴퓨터시스템 구조] 5장 기본 컴퓨터의 구조와 설계 (0) | 2024.11.27 |
[mano의 컴퓨터시스템 구조] 4장 레지스터 전송과 마이크로 연산 (0) | 2024.11.21 |