CPU가 하나의 명령어를 처리하는 과정에는 어떤 정해진 흐름이 있다.
그리고 그 흐름을 반복하며 명령어들을 처리해 나간다.
이런 정형화된 흐름을 '명령어 사이클'이라고 한다.
간혹 이 흐름이 끈어지는 상황이 발생하는데 이를 '인터럽트'라고 한다.
명령어 사이클(instruction cycle)
명령어 사이클은 CPU가 프로그램의 수많은 명령어들을 하나씩 실행할때 각각의 명령어이 일정한 주기로 반복되어 실행이 되는 것을 뜻한다.
인출 사이클(fetch cycle)
메모리에 저장된 명령어 하나를 실행한다고 가정하면 CPU는 메모리에서 명령어를 가져와야 한다.
이게 명령어 사이클의 첫 번째 과정이다.
메모리에 있는 명령어를 CPU로 가지고 오는 단계를 '인출 사이클'이라고 한다.
실행 사이클(execution cycle)
CPU로 명령어를 인출했다면 실행을 해야한다.
이것이 명령어 사이클의 두 번째 과정이다.
CPU로 가져온 명령어를 실행하는 단계를 '실행 사이클'이라고 한다.
제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생시키는 단계를 뜻한다.
간접 사이클(indirect cycle)
명령어는 간단히 실행되지 않는다. 명령어를 인출하고 CPU로 가져왔다 하더라도
곧바로 실행할 수 없는 경우도 있다.
예로 간접 주소 지정 방식이 있다.
간접 주소 지정 방식은 오퍼랜드 필드에 유효 주소의 주소를 명시하는걸 뜻하는데
이 경우 명령어를 인출하고 CPU로 가져왔다 하더라도 바로 실행 사이클에 돌입할 수 없다.
명령어를 실행하기 위해서는 메모리 접근을 한 번 더 해야 하기 때문이다.
이러한 단계를 '간접 사이클'이라고 한다.
인출사이클
↘
↓ ↑ 간접 사이클 (메모리 접근이 더 필요한 경우)
↗
실행사이클
어떤 명령어는 인출과 실행 사이클만으로 실행이 되고, 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행이 된다.
'컴퓨터공학(CS) 배우기 > 혼공 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[CS] CPU의 속도 (0) | 2023.04.09 |
---|---|
[CS] 인터럽트 (0) | 2023.04.08 |
[CS] 레지스터 (0) | 2023.04.02 |
[CS] ALU와 제어장치 (0) | 2023.03.31 |
[CS] 명령어의 구조 (1) | 2023.03.27 |