CPU 명령어 사이클(instruction cycle)
마이크로프로세서(CPU)가 메모리로부터 프로그램 된 한개의 기계어 명령어를 가져와 어떠한 동작을 요구하는지를 결정하고 명령어가 요구하는 동작을 수행하는 연속적인 동작 과정이다.
즉, 명령어를 꺼내와 실행하기 위한 연속적인 동작 과정이다.
명령이 순환하는 동안 CPU에 사용되는 회로는 다음과 같다.
- PC : 다음에 실행할 명령어에 대한 메모리 주소를 추적
- MAR : 다음에 실행할 명령어의 메모리에 있는 주소를 보관
- MBR : 메모리로부터 페치(fetch)되어 cpu가 처리할 준비가 된 데이터나 메모리에 저장되어 대기 중인 데이터를 보관하는 양방향 레지스터
- IR : 메모리로부터 fetch 되는 (현재 실행할) 명령어를 일시적으로 보관하는 영역
- CU : 명령어 인출, 해독, 실행을 위한 제어신호를 타이밍에 맞춰 발생시킨다.
- ALU : 산술 및 논리 연산을 수행
명령어 기본 사이클
- 명령어 인출(instruction fectch) 사이클
- CPU에서 명령어를 읽어오는 단계
- 명령어 실행(instruction execution) 사이클
- CPU가 명령어를 실행하는 단계 (decode, execution)
명령어 기본 사이클 = fetch cycle + execution cycle
명령어 인출 사이클(fetch cycle)
t1 ~ t3은 순차적인 마이크로 연산을 나타낸다.
- 명령어가 저장된 주소 지정
- t1 : MAR <- PC : PC에 저장된 명령어 주소를 MAR로 전송
- MAR번지 메모리 명령어를 MBR로 전송, PC가 다음번 명령어 주소를 가리키도록 준비
- t2 : MBR <- M[MAR], PC <- PC + n
- 인출한 명령어를 IR로 전송
- t3 : IR <- MBR
명령어 실행 사이클(execution cycle)
IR로 가져온 명령어가 지시하는 내용에 따라 수행되는 마이크로 연산이 달라진다.
- 명령어 해독(decode) : 인출된 명령어를 해독한다.
- opcode 해독 : 인출한 명령어의 opcode를 (디코더 회로에서) 해독하여 동작을 구현하는 회로로 신호를 보냄
- operand 해독 : 유효주소를 얻는 과정으로, addressing mode에 따라 operand에 저장된 값을 통해 유효 주소를 얻는다. (간접 사이클이라고도 한다)
- 명령어 실행(execution) : 명령어 실행에 필요한 CPU 내외부 제어신호를 발생시킴
- decoder 출력 라인에 선정된 microcode들을 실행하여 명령어를 동작하게 한다.
예시)
- MOV B, [Y]; B <- M[Y] : operand에 포함된 메모리 주소 Y 번지의 내용을 B 레지스터로 전송
- t1 : MAR <- Y
- t2 : MBR <- M[MAR]
- t3 : B <- MBR
- ADD[Y]; AC <- AC + M[Y] : AC의 내용을 operand에 포함된 주소 Y의 내용을 더해 저장
- t1 : MAR <- Y
- t2 : MBR <- M[MAR]
- t3 : AC <- AC + MBR
- JUMP Y : operand에 포함된 주소 Y로 분기
- t1 : PC <- Y
제어 장치와 명령어 사이클
인터럽트 사이클(interrupt cycle)
interrupt란?
프로그램을 실행하고 있을 때, 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것. 즉, cpu에게 처리할 예외 상황이 발생했다고 알려주는 것
*interrupt cycle
- 인터럽트를 검사하고 그것을 처리할 인터럽트 서비스 루틴(interrupt service routine)을 호출하는 단계
- 인터럽트 핸들러 : 인터럽트를 처리하는 프로그램
'CS > OS & 하드웨어' 카테고리의 다른 글
스택 포인터 (0) | 2024.04.30 |
---|---|
CISC / RISC 개념 및 차이 (0) | 2024.04.25 |
중앙처리장치(CPU) - 2 (CPU 명령어) (0) | 2024.04.18 |
중앙처리장치(CPU) - 1 (CPU 구조) (0) | 2024.04.18 |
레지스터 (Register) (0) | 2024.04.16 |