명령 사이클

Instruction cycle

명령 사이클(fetch-decode-execute cycle 또는 단순히 fetch-execute cycle이라고도 함)은 명령을 처리하기 위해 중앙 처리 장치(CPU)가 부팅부터 컴퓨터가 종료될 때까지 이어지는 사이클입니다.이 단계는 가져오기 단계, 디코딩 단계 및 실행 단계의 세 가지 주요 단계로 구성됩니다.

이것은 fetch-decode-execute 사이클의 각 단계를 나타내는 간단한 그림입니다.범례:

보다 단순한 CPU에서는 명령 사이클이 순차적으로 실행되며, 각 명령은 다음 명령이 시작되기 전에 처리된다.대부분의 최신 CPU에서 명령 사이클은 명령 파이프라인을 통해 동시에, 그리고 종종 병렬실행됩니다.다음 명령은 이전 명령이 완료되기 전에 처리되기 시작합니다.이것은 사이클이 다른 단계로 [1]분할되기 때문에 가능합니다.

컴포넌트의 역할

프로그램 카운터(PC)는 다음에 실행할 명령의 메모리 주소를 유지하는 특수 레지스터입니다.페치 스테이지에서는, PC에 격납되어 있는 주소를 메모리 주소 레지스터(MAR)에 카피하고, 다음에 실행되는 명령의 메모리 주소를 「포인트」하기 위해서 PC를 인크리먼트 한다.다음으로 CPU는 MAR에 의해 기술된 메모리주소의 명령을 받아 Memory Data Register(MDR; 메모리데이터 레지스터)에 복사합니다.MDR은 메모리에서 가져온 데이터 또는 메모리에 저장 대기 중인 데이터를 유지하는 양방향 레지스터로도 작동합니다(이 때문에 메모리 버퍼 레지스터(MBR)라고도 불립니다).최종적으로 MDR 내의 명령은 현재 명령 레지스터(CIR)에 복사되며, 이 레지스터는 메모리에서 방금 가져온 명령의 임시 홀딩 접지 역할을 합니다.

디코드 단계 동안 컨트롤 유닛(CU)은 CIR의 명령을 디코딩합니다.그런 다음 CU는 연산 로직 유닛(ALU)부동 소수점 유닛(FPU)과 같은 CPU 내의 다른 컴포넌트로 신호를 전송합니다.ALU는 덧셈과 뺄셈과 같은 산술 연산을 수행하며,[dubious ] 덧셈과 나눗셈을 반복하여 수행합니다.또한 AND, OR, NOT이진 이동과 같은 논리 연산도 수행합니다.FPU는 부동소수점 작업을 수행하기 위해 예약되어 있습니다.

단계 요약

각 컴퓨터의 CPU는 다른 명령 세트에 따라 다른 사이클을 가질 수 있지만 다음 사이클과 유사합니다.

  1. 가져오기 단계:다음 명령은 현재 프로그램 카운터에 저장된 메모리 주소에서 가져와 명령 레지스터에 저장됩니다.페치 조작이 끝나면 PC는 다음 사이클에서 읽을 다음 명령을 가리킵니다.
  2. 디코딩 단계:이 단계에서 명령 레지스터에 제시된 부호화된 명령은 디코더에 의해 해석된다.
    • 유효한 주소를 읽습니다.메모리 명령(직접 또는 간접)의 경우 실행 단계는 다음 클럭 펄스 동안입니다.명령이 간접 주소를 가지고 있는 경우, 유효 주소는 메인 메모리로부터 읽혀지고, 필요한 데이터는 메인 메모리로부터 취득되어 처리되어 데이터 레지스터에 배치됩니다(클럭 펄스:T3) 명령이 직접일 경우 이 클럭 펄스 중에는 아무것도 수행되지 않습니다.이것이 I/O 명령 또는 레지스터 명령일 경우, 동작은 클럭 펄스 중에 실행됩니다.
  3. 실행 단계:CPU의 제어유닛은 일련의 제어신호로서 디코딩된 정보를 CPU의 관련기능유닛에 전달하여 레지스터에서 값을 읽고, ALU에 전달하여 수학함수 또는 논리함수를 실행하고, 그 결과를 레지스터에 다시 쓰는 등의 명령에 의해 요구되는 액션을 실행한다.ALU가 관여하고 있는 경우는, 조건 신호를 CU에 반송합니다.연산에 의해 생성된 결과는 메인 메모리에 저장되거나 출력 장치로 전송됩니다.ALU로부터의 피드백에 근거해, PC를 다른 주소로 갱신해, 다음의 명령을 취득할 수 있습니다.
  4. 반복 사이클

또한 대부분의 CPU에서 인터럽트가 발생할 수 있습니다.이로 인해 CPU는 인터럽트 서비스 루틴으로 점프하여 실행한 후 돌아갑니다.경우에 따라서는 명령이 중간에 중단될 수 있으며, 명령은 아무런 영향을 미치지 않지만 인터럽트에서 돌아온 후에 다시 실행됩니다.

개시

사이클은 시스템에 전원이 공급되는 즉시 시작됩니다.시스템 아키텍처에 의해 정의된 초기 PC 값은 다음과 같습니다(예를 들어 인텔 IA-32 CPU의 경우 사전 정의된 PC 값은 다음과 같습니다).0xfffffff0통상, 이 주소는, 읽기 전용 메모리(ROM)의 일련의 순서를 가리키고 있습니다.이것에 의해, operating [2]system의 로드(또는 기동) 프로세스가 개시됩니다.

가져오기 단계

가져오기 단계는 각 명령에서 동일합니다.

  1. CPU는 PC의 내용을 MAR로 전송하고 제어 버스를 통해 읽기 명령을 전송합니다.
  2. 읽기 명령(주소가 PC와 동일한 경우)에 응답하여 메모리는 데이터 버스 상의 PC에 의해 지정된 메모리 위치에 저장된 데이터를 반환합니다.
  3. CPU는 데이터를 데이터 버스에서 MDR로 복사합니다(MBR이라고도 합니다.의 컴포넌트의 역할 섹션을 참조하십시오).
  4. 몇 초 후에 CPU는 명령 디코딩을 위해 MDR에서 명령 레지스터로 데이터를 복사합니다.
  5. 다음 명령을 가리키도록 PC가 증가합니다.이 순서에서는, CPU 의 다음 사이클을 준비합니다.

제어 장치는 메모리 장치에서 명령의 주소를 가져옵니다.

디코딩 단계

디코딩 프로세스를 통해 CPU는 실행할 명령을 결정할 수 있으므로 명령을 수행하기 위해 몇 개의 오퍼랜드를 가져올 필요가 있는지 알 수 있습니다.메모리에서 가져온 opcode는 다음 단계를 위해 디코딩되고 적절한 레지스터로 이동합니다.디코딩은 일반적으로 CPU제어 유닛에 있는 바이너리 디코더를 통해 수행됩니다.

유효 주소 읽기

이 절차에서는 실행하는 조작 유형을 평가합니다.메모리 동작의 경우 컴퓨터는 직접 메모리 동작인지 간접 메모리 동작인지를 확인합니다.

  • 다이렉트 메모리 동작 - 아무것도 실행되지 않습니다.
  • 간접 메모리 조작 - 유효 주소는 메모리에서 읽어냅니다.

I/O 또는 레지스터 명령일 경우 컴퓨터는 그 유형을 확인하고 명령을 실행합니다.

실행 단계

CPU는 일련의 제어 신호로 대응하는 컴퓨터 컴포넌트에 디코딩된 명령을 전송합니다.명령이 산술 또는 논리를 포함하는 경우 ALU가 사용됩니다.이 단계는 최종 사용자의 관점에서 유용한 명령 사이클의 유일한 단계입니다.그 외 모든 것은 실행 단계를 수행하기 위해 필요한 오버헤드입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Crystal Chen, Greg Novick and Kirk Shimano (2000). "Pipelining". Retrieved 2019-06-26.
  2. ^ Bosky Agarwal (2004). "Instruction Fetch Execute Cycle" (PDF). Archived from the original (PDF) on June 11, 2009. Retrieved 2012-10-14.