Skip to content

Fetch and Execute

instruction의 수행은 다음과 같은 fetch-execute cycle로 구성된다.

Fetch

CPU가 instruction(명령어)을 실행하기 위해,
memory에서 instruction을 register (정확히는 instruction register)로 가져오는 것 을 의미함.

  • stored program computer에서는
    memory에 처리해야 하는 instruction들의 list가 저장되어 있음.
  • Program Counter register (← PC register)가 reference하고 있는 memory location (=다음에 수행되어야하는 instruction이 저장된 memory location)에 저장된 instruction을
    instruction register로 가져오는 것을 fetch 라고 함.

  • PC에 저장된 주소가 address bus를 통해 memory로 주어지고,
  • address bus를 통해 전달된 address에 해당하는 memory location에 저장된 값이
  • data bus를 통해 instruction register로 저장됨.
  • 이 값이 사실 instruction임.

Execute

fetch된 instruction이 해당 instruction의 내용에 따라, memory에서 값을 읽어오는 등의 여러 작업이 이루어지며 이에 따라 해당 instruction이 수행됨. 이 단계를 Execution cycle이라고 부름.

이같이 fetch된 instruction을 수행하기 위해 memory에 접근하는 등의 작업을 하는 동안, instruction이 저장되어 있는 공간이 바로 instruction register임.


하나의 instruction을 수행하기 위한 fetching-execution cycle은 여러 단계가 필요하기 때문에, 현재 단계가 무엇인지를 나타내는 counter가 필요하다.

Control Unit(or Execution Unit)은

  • 해당 counteropcode, mode들에 할당된 bit를 읽어들여
  • 현재 필요한 제어 signal을 필요한 component들에게 전달한다.

이같은 signal들의 흐름을 제어하는 것을 signal traffic control이라고 부름.

Control Unit에서의 traffic control은 random logic을 통해 이루어지거나 memory를 기반으로 하는 microcode로 구현된다. 결국 control unit은 여러 state를 가지는 일종의 state-machine이며, 이 때문에 memory기반의 state machine으로 구현가능하다.