제어장치는 중앙처리장치 내부에서 명령의 흐름과 데이터 이동을 조정하는 핵심 제어 모듈이다.[1][2] 이 문서는 제어장치의 역할, 명령어 실행 흐름, 설계 방식, 그리고 현대적인 제어 기능을 함께 정리한다.[4][5]
1. 개요
2. 주요 기능
3. 명령어 실행 사이클
명령어 실행 사이클은 제어장치가 반복해서 수행하는 기본 처리 흐름이다. 일반적으로 명령어 인출, 명령어 해독, 명령어 실행으로 나뉘며, 각 단계는 이전 단계의 결과를 바탕으로 다음 동작을 정한다.[4]
인출 단계에서는 프로그램 카운터가 가리키는 주소에서 명령어를 가져오고, 해독 단계에서는 연산 코드와 주소 지정 방식을 분석한다.[4] 실행 단계에서는 실제 산술·논리 연산이나 데이터 이동이 이루어지며, 이후 상태 갱신과 다음 명령어 준비가 이어진다.[1][4]
이 과정은 작은 마이크로 연산으로 더 잘게 나뉘어 동작한다고 볼 수 있다.[2][5] 그래서 제어장치의 타이밍 설계는 시스템 전체의 응답성과 직결된다.[1][4]
4. 제어장치의 설계 방식
제어장치는 크게 하드와이어드 제어장치와 마이크로프로그램 제어장치로 나뉜다.[3][5] 하드와이어드 방식은 고정된 논리 회로로 제어 신호를 만들어 빠르게 동작하지만, 구조 변경이 어렵다는 제약이 있다.[3]
반면 마이크로프로그램 방식은 제어 메모리에 저장된 마이크로코드를 읽어 제어 신호를 생성한다.[3][5] 이 방식은 설계 변경이 비교적 쉽고 복잡한 명령을 다루기 편하지만, 추가적인 메모리 접근 때문에 하드와이어드 방식보다 느릴 수 있다.[3]
제어 로직은 종종 유한 상태 머신으로 설명된다.[2][5] 현재 상태와 입력에 따라 다음 상태를 고르고, 그 상태에 맞는 신호를 출력하는 방식이기 때문에 복잡한 제어 흐름도 단계별로 모델링할 수 있다.[2]
5. 주요 구성 요소와 상호작용
제어장치는 산술논리연산장치, 메모리, 레지스터, 입출력 장치와 맞물려 동작한다.[1][4] 연산 장치에는 수행할 작업과 타이밍을 알려 주고, 메모리에는 읽기·쓰기 시점을 지정하며, 입출력 장치에는 데이터 전송 순서를 지시한다.[1][4]
이 상호작용은 시스템 버스를 통해 연결된 장치들이 서로 충돌하지 않고 같은 순서로 움직이게 만든다.[1][5] 제어장치가 신호를 적절히 분배하지 못하면 데이터 손실이나 실행 오류가 발생할 수 있다.[4]
따라서 제어장치는 단순한 해석 모듈이 아니라 시스템 전체의 협조를 유지하는 조정자에 가깝다.[2][5] 중앙처리장치 내부의 상태와 외부 장치의 응답을 함께 고려해 다음 동작을 결정한다.[1]