본문 바로가기

운영체제

중앙처리장치(CPU) - 3 (CPU 명령어 사이클)

728x90
반응형

Goal

  • 명령어 사이클에 대해 설명할 수 있다.

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은 순차적인 마이크로 연산을 나타낸다.

  1. 명령어가 저장된 주소 지정
    • t1 : MAR <- PC : PC에 저장된 명령어 주소를 MAR로 전송
  2. MAR번지 메모리 명령어를 MBR로 전송, PC가 다음번 명령어 주소를 가리키도록 준비
    • t2 : MBR <- M[MAR], PC <- PC + n
  3. 인출한 명령어를 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)을 호출하는 단계
  • 인터럽트 핸들러 : 인터럽트를 처리하는 프로그램

 

<참고> 입출력 인터럽트 방식의 발전 과정

더보기

*폴링(Polling) : 인터럽트 사용 이전 방식으로 CPU가 직접 입출력 장치에서 데이터를 가져오거나 내보내는 방식

*인터럽트(interrupt) 방식 : 입출력 장치 관리자가 입출력 장치에서 데이터를 가져오거나 내보낸다.

 

입출력 인터럽트 관련 용어 설명

*직접 메모리 접근 (DMA, Direct Memory Access)

CPU와 독립적으로 직접적으로 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템 기능

  • CPU 부담이 큰 폴링 방식을 보완하는 기능이다.
  • 인터럽트 시스템을 구성하는 데 필수 요소이다.

 

*사이클 스틸링(cycle stealing)

CPU가 입출력장치에게 메모리 사용 권한을 양보하는 것

 

입출력 채널과 프로세서가 동시에 주기억장치를 접근하려고 하면 문제가 발생할 때, 입출력 채널의 우선순위를 높게 주는 방식이다. 일반적으로 채널은 적은 양의 사이클을 필요로 하기 때문에 채널의 우선순위를 높여주면 입출력 장비의 효율이 높아진다.

728x90
반응형