명령 주기

로그아웃한 편집자를 위한 문서 더 알아보기

둘러보기

사용자 모임

편집 안내

도구

인쇄/내보내기

다른 프로젝트

명령 주기(命令週期, 영어: instruction cycle, machine cycle)는 마이크로프로세서(CPU)가 메모리로부터 프로그램 된 한개의 기계어 명령어를 가져와 어떠한 동작을 요구하는지를 결정하고 명령어가 요구하는 동작들을 수행하는 과정이다. 컴퓨터의 기본적인 동작 순환이다. 한개의 기계어 명령어가 완료되면 다음 메모리의 기계어가 수행되므로 중앙 처리 장치(CPU)는 시동에서부터 컴퓨터가 꺼질 때까지 이러한 순환을 계속 되풀이한다. 따라서 이를 CPU 사이클이라고도 부른다. CPU의 동작을 하는 한 명령 주기는 계속 반복되어 전력을 소비한다. 전력소모를 줄이거나 기타 CPU를 멈출 필요가 있다면, 아이들모드(idle mode) 또는 슬립모드(sleep mode) 기계어 명령을 실행하면 CPU는 인터럽트가 들어올 때까지 멈추어 명령 주기를 멈추게 할 수 있다.

기계어 명령어 하나를 실행하기 위해 최대 4개의 단계가 필요하며, 각 단계는 CPU의 클럭 신호에 동기되어 동작한다. 각 단계는 각각 몇개의 클럭 펄스가 필요하며, 각 마이크로프로세서마다 다르다. 하나의 명령어를 실행하기 위해 단계적으로 나뉜 과정이 한 사이클이 된다. 각 단계는 마이크로코드의 프로그램과 제어회로인 마이크로시퀀서(microsequencer)에 의해 실행된다. RISC는 각 단계가 단순화되어 있지만, 블럭 전송 명령어(메모리 블럭 전송)이 존재하는 CPU가 있으므로 마지막 사이클에서 다량의 데이터 전송이 되는 경우도 있다.[1] 이런 경우 많은 클럭이 필요하다. CISC에는 없는 기능이다.

초기의 마이크로프로세서(4004, 8080, Z80, 6800, ...)는 한개의 기계어 명령어의 명령 주기가 완료될 때까지 다음 명령을 읽지 않았다. 그러나 발전과정에서 속도를 높이기 위해 한개의 명령어가 완료되기 전에 다음 명령어를 읽는 프리페치(pre-fetch)을 하고 연속적으로 요구동작을 하도록 동작한다. 보통 메모리의 기계어 코드가 끝나면 다음 번지의 메모리 기계어 명령어가 실행되므로 PC레지스터(Program Counter,또는 IP 레지스터라고도 함)를 사용하여 다음 명령어를 미리 읽는다. 그러나 조건 점프명령(인텔 x86의 JEQ, ARM의 BEQ 명령어)은 다음 주소로 점프하지 않을 수도 있으므로 다시 페치해야 한다. 인텔의 80486, ARM 등의 CPU에서 프리페치를 사용한다.

명령이 순환하는 동안 CPU에 사용되는 회로는 다음과 같다:

명령 주기는 명령어에 따라 특성이 다르므로 4개의 명령어 주기를 다 필요하지 않는 경우도 있다. 초기의 CISC 마이크로프로세서는 다음의 명령주기가 확연히 구분된다. RISC로 발달하면서 명령어의 단순화하면서 각 사이클을 단순화하는 경향이 있다.

각 컴퓨터의 CPU는 서로 다른 명령어 집합에 기반하여 각기 다른 사이클을 지니고 있으나 다음과 비슷한 순환을 가진다 (이 주기는 계속 반복된다):

명령 실행 주기 도표