![CPU 제어상태(Major State)](https://q-a.kr/wp-content/uploads/2025/01/5.png)
CPU 제어상태(Major State), 메모리에 저장된 명령어를 실행하는 과정에서 일련의 사이클을 따르며 수행하는 것을 의미합니다.. 이는 명령어 실행 사이클(Instruction Execution Cycle)이라고도 하며, 일반적으로 아래와 같은 주요 상태로 구분됩니다.
- Fetch
- Decode
- Execute
- Interrupt
명령어 인출(Fetch)
-
설명: CPU가 실행할 명령어를 메모리에서 가져오는 단계입니다.
-
과정
-
프로그램 카운터(PC, Program Counter)가 현재 실행할 명령어의 메모리 주소를 지정합니다.
-
CPU의 메모리 주소 레지스터(MAR, Memory Address Register)가 해당 주소를 메모리에 전달합니다.
-
메모리는 해당 주소에서 명령어를 읽어 메모리 버퍼 레지스터(MBR, Memory Buffer Register) 또는 명령어 레지스터(IR, Instruction Register)에 저장합니다.
-
프로그램 카운터(PC)가 다음 명령어 주소로 증가합니다.
-
명령어 해석(Decode)
-
설명: 인출된 명령어를 분석하여 CPU가 수행할 작업을 결정하는 단계입니다.
-
과정
-
명령어가 명령어 레지스터(IR)에 저장됩니다.
-
명령어 해독기(Decoder)가 해당 명령어를 분석하여 어떤 연산을 수행할지 결정합니다.
-
필요하면 명령어 실행을 위해 추가적인 데이터(예: 메모리 주소, 연산 값 등)를 가져옵니다.
-
명령어 실행(Execute)
-
설명: 해석된 명령어를 실행하는 단계입니다.
-
과정
-
명령어에 따라 CPU의 산술 논리 연산장치(ALU, Arithmetic Logic Unit)가 계산을 수행하거나, 데이터 이동, 입출력 요청 등을 처리합니다.
-
연산 결과가 레지스터나 메모리에 저장됩니다.
-
특정 조건을 만족하면 프로그램 카운터(PC)를 수정하여 분기(branch) 명령을 수행할 수도 있습니다.
-
결과 저장(Store)
-
설명: 실행된 명령어의 결과를 메모리 또는 레지스터에 저장하는 단계입니다.
-
과정
-
연산 결과를 특정 레지스터 또는 메모리 주소에 저장합니다.
-
만약 출력을 동반하는 명령이라면, 결과를 입출력 장치(I/O Device)로 전송할 수도 있습니다.
-
다음 명령어를 실행하기 위해 CPU는 다시 명령어 인출(Fetch) 단계로 돌아갑니다.
-
인터럽트 검사(Interrupt Check)
-
설명: CPU는 실행 중에 특정 인터럽트가 발생했는지 확인하며, 필요하면 실행을 중단하고 인터럽트 처리를 진행합니다.
-
과정
-
인터럽트가 발생하면 현재 실행 중인 명령을 멈추고, 인터럽트 핸들러(Interrupt Handler)를 실행합니다.
-
CPU는 인터럽트 처리를 마친 후 다시 원래 실행 중이던 프로세스로 복귀합니다.
-
CPU 제어 상태(Major State) 순서
-
명령어 인출(Fetch) → 프로그램 카운터(PC)에서 명령어를 가져옴.
-
명령어 해석(Decode) → CPU가 명령어의 의미를 분석함.
-
명령어 실행(Execute) → 명령어에 따른 연산 또는 작업을 수행함.
-
결과 저장(Store) → 연산 결과를 저장하거나 출력함.
-
인터럽트 검사(Interrupt Check) → 필요한 경우 인터럽트 처리 후 다음 명령 실행.
이 과정이 빠른 속도로 반복되면서 CPU가 지속적으로 작업을 수행합니다.
[…] 명령어 가져오기(Fetch) → 해석(Decode) → 실행(Execute) 과정을 반복하며 프로그램을 […]