'2.1.2. 명령어 활용 및 제어' 파트는 CPU가 명령어를 어떻게 해석하고, 이를 실행하기 위해 내부적으로 어떤 세부 동작(마이크로 오퍼레이션)을 수행하는지를 다룹니다. 필기 시험에서 개념과 특징 비교 문제가 매우 자주 출제되는 영역입니다.

1. 명령어의 구성 및 분석 (Instruction Format)

명령어는 CPU가 수행할 동작을 지시하는 최소 단위로, 크게 두 부분으로 나뉩니다.

  • 연산 코드 (Op-code, Operation Code): 수행할 동작(더하기, 로드, 저장 등)을 지정합니다. 비트 수가 $n$이면 $2^n$개의 연산을 정의할 수 있습니다.
  • 오퍼랜드 (Operand): 연산에 필요한 데이터나 데이터가 저장된 메모리 주소를 지정합니다.

주소 지정 방식 (Addressing Mode)

오퍼랜드 필드에 무엇을 적느냐에 따라 나뉩니다. (시험 단골 주제)

  1. 즉시 주소 (Immediate): 데이터 자체를 명령어에 포함 (가장 빠름).
  2. 직접 주소 (Direct): 데이터가 있는 실제 주소를 명령어에 포함.
  3. 간접 주소 (Indirect): 데이터가 있는 주소의 주소가 담긴 곳을 지정 (최소 2번 이상의 메모리 참조 필요).
  4. 인덱스/상대 주소: 특정 레지스터(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가지 단계의 순서와 역할을 기억하세요.

  1. 인출 (Fetch): 메모리에서 명령어를 읽어 CPU(IR 레지스터)로 가져오는 단계.
  2. 간접 (Indirect): 간접 주소 방식일 경우, 실제 데이터의 주소를 한 번 더 읽어오는 단계.
  3. 실행 (Execute): 명령어를 해독하고 실제 연산을 수행하는 단계.
  4. 인터럽트 (Interrupt): 인터럽트 발생 시 이를 처리하는 단계.

필기 시험 핵심 요약

  • Op-code 비트 수 계산: "연산 코드가 4비트일 때 최대 몇 가지 연산이 가능한가?" -> $2^4 = 16$가지.
  • 간접 주소 방식의 특징: 메모리를 최소 2번 이상 참조해야 하므로 속도가 느리다는 점이 오답 지문으로 자주 나옵니다.
  • 마이크로프로그램 방식: "회로가 단순하고 수정이 용이하다"는 장점이 핵심 키워드입니다.

+ Recent posts