'2.1.2. 명령어 활용 및 제어' 파트는 CPU가 명령어를 어떻게 해석하고, 이를 실행하기 위해 내부적으로 어떤 세부 동작(마이크로 오퍼레이션)을 수행하는지를 다룹니다. 필기 시험에서 개념과 특징 비교 문제가 매우 자주 출제되는 영역입니다.
1. 명령어의 구성 및 분석 (Instruction Format)
명령어는 CPU가 수행할 동작을 지시하는 최소 단위로, 크게 두 부분으로 나뉩니다.
- 연산 코드 (Op-code, Operation Code): 수행할 동작(더하기, 로드, 저장 등)을 지정합니다. 비트 수가 $n$이면 $2^n$개의 연산을 정의할 수 있습니다.
- 오퍼랜드 (Operand): 연산에 필요한 데이터나 데이터가 저장된 메모리 주소를 지정합니다.
주소 지정 방식 (Addressing Mode)
오퍼랜드 필드에 무엇을 적느냐에 따라 나뉩니다. (시험 단골 주제)
- 즉시 주소 (Immediate): 데이터 자체를 명령어에 포함 (가장 빠름).
- 직접 주소 (Direct): 데이터가 있는 실제 주소를 명령어에 포함.
- 간접 주소 (Indirect): 데이터가 있는 주소의 주소가 담긴 곳을 지정 (최소 2번 이상의 메모리 참조 필요).
- 인덱스/상대 주소: 특정 레지스터(PC 등) 값에 변위 값을 더해서 주소를 결정.
| 형식 | 특징 | 장점 | 단점 |
| 0-주소 | 스택(Stack) 사용, 주소부 없음 | 명령어가 짧음 | 스택 조작 명령이 많이 필요함 |
| 1-주소 | 누산기(Accumulator) 사용 | 구조가 단순함 | 연산 결과를 항상 누산기에 저장 |
| 2-주소 | 일반적인 형태 (MOV A, B) | 계산 결과가 한쪽에 남음 | 한쪽 피연산자가 파괴됨 |
| 3-주소 | 프로그램 전체 길이 최소화 | 원래 데이터 보존 가능 | 명령어 한 개의 길이가 매우 김 |
| 분류 | 주요 명령어 | 역할 설명 |
| Data Transfer (데이터 전송) | LOAD, STORE, MOVE, PUSH, POP | 레지스터, 메모리 사이에서 데이터를 단순히 복사/이동합니다. |
| Data Manipulation (데이터 조작) | ADD, SUB, AND, OR, SHIFT, ROTATE | 산술 연산이나 논리 연산을 통해 데이터를 가공합니다. |
| Program Manipulation (프로그램 제어) | BRANCH, JUMP, CALL, RETURN | 프로그램의 실행 흐름(순서)을 변경합니다. (분기 명령어) |
| Input / Output (입출력) | INPUT, OUTPUT, IN, OUT | CPU와 외부 장치 사이에서 데이터를 주고받습니다. |
2. 마이크로 오퍼레이션 (Micro-operation)
명령어 하나를 수행하기 위해 CPU 내부 레지스터와 ALU 사이에서 일어나는 가장 작은 단위의 동작입니다.
- 특징: 한 개의 클록 펄스(Clock Pulse) 동안 수행됩니다.
- 마이크로 사이클 타임 (Micro Cycle Time): 마이크로 오퍼레이션을 수행하는 데 걸리는 시간입니다.
- 동기 고정식: 모든 동작의 수행 시간을 가장 긴 동작에 맞춰 동일하게 설정 (제어 단순, 시간 낭비 있음).
- 동기 가변식: 동작별로 수행 시간을 다르게 설정 (효율적, 제어 복잡).
- 비동기식: 앞 동작이 끝나면 다음 동작을 수행 (가장 복잡, 거의 안 쓰임).
3. 제어 장치 (Control Unit) 구현 방식 비교
명령어를 해석하여 제어 신호를 보내는 방식은 두 가지가 있습니다. 이 비교 표는 반드시 암기해야 합니다.
| 구분 | 하드와이어드 제어 (Hardwired) | 마이크로프로그램 제어 (Microprogrammed) |
| 구현 방식 | 논리 회로 (Gate, Flip-flop) 조합 | 별도의 제어 메모리(ROM)에 저장된 프로그램 |
| 속도 | 매우 빠름 | 상대적으로 느림 |
| 유연성 | 변경이 매우 어려움 (회로 수정 필요) | 변경이 쉬움 (소프트웨어적 수정) |
| 비용 | 고가 | 저가 |
| 적용 | RISC, 고속 컴퓨터 | CISC, 일반적인 컴퓨터 |
4. 명령어 사이클 (Instruction Cycle)
하나의 명령어를 실행하는 전체 과정입니다. 4가지 단계의 순서와 역할을 기억하세요.
- 인출 (Fetch): 메모리에서 명령어를 읽어 CPU(IR 레지스터)로 가져오는 단계.
- 간접 (Indirect): 간접 주소 방식일 경우, 실제 데이터의 주소를 한 번 더 읽어오는 단계.
- 실행 (Execute): 명령어를 해독하고 실제 연산을 수행하는 단계.
- 인터럽트 (Interrupt): 인터럽트 발생 시 이를 처리하는 단계.
필기 시험 핵심 요약
- Op-code 비트 수 계산: "연산 코드가 4비트일 때 최대 몇 가지 연산이 가능한가?" -> $2^4 = 16$가지.
- 간접 주소 방식의 특징: 메모리를 최소 2번 이상 참조해야 하므로 속도가 느리다는 점이 오답 지문으로 자주 나옵니다.
- 마이크로프로그램 방식: "회로가 단순하고 수정이 용이하다"는 장점이 핵심 키워드입니다.
'study > 컴퓨터시스템기사' 카테고리의 다른 글
| 2.2.1. 기억장치 동작 분석: 주기억장치, 보조기억장치(종류/특징), 캐시메모리(구성/동작), 연관기억장치 특성 (1) | 2026.01.19 |
|---|---|
| 2.1.3. 연산장치 응용: 멀티스레딩, 파이프라인 동작 분석 (0) | 2026.01.19 |
| 2.1.1. 연산 장치 구조 분석: 레지스터 구조 및 구성, ALU 구조 및 동작 (0) | 2026.01.07 |
| 1.4.2. 시스템 소프트웨어 모듈: 디바이스 드라이버, 시스템 라이브러리 (0) | 2025.12.26 |
| 1.4.1. 인터페이스 구현: 시스템 콜(System Call), IPC(내부 프로세스 통신) (1) | 2025.12.24 |