라즈베리파이반

라즈베리파이 등 컴퓨터계열 게시판입니다.

제목컴퓨터의 구조: 명령어 사이클2023-05-29 23:53
작성자user icon Level 4

88x31.png



1. 명령어 사이클(Instruction Cycle)


CPU는 프로그램 명령어를 클럭에 따라 일정한 주기를 반복하여 실행하는데, 이 주기를 명령어 사이클(Instruction Cycle)이라고 합니다.


명령어 사이클은 CPU가 하나의 명령어를 실행하는 데 필요한 전체 처리 과정으로서, CPU가 프로그램을 실행한 순간부터 전원을 끄거나 오류가 발생하여 프로그램이 중단될 때까지 반복됩니다.


명령어 사이클은 주 기억 장치로부터 명령어를 읽어오는 단계인 인출 사이클(Fetch Cycle)과 명령어를 실행하는 단계인 실행 사이클(Execution Cycle)로 분리할 수 있습니다.


 


2. 인출 사이클(Fetch Cycle)


인출 사이클의 진행은 다음과 같습니다.


 


t0 : MAR <- PC

t1 : MBR <- M[MAR], PC <- PC + 1

t2 : IR <- MBR


첫 번째 주기 t0에서는 프로그램 카운터(PC)에 저장된 명령어 주소를 CPU 내부 버스를 통해 메모리 주소 레지스터(MAR)로 보냅니다.


두 번째 주기 t1에서는 MAR가 지정하는 기억장치 주소로부터 명령어를 읽어서 데이터 버스를 통해 메모리 버퍼 레지스터(MBR)에 저장합니다. 동시에 프로그램 카운터가 1 증가합니다.


세 번째 주기 t2에서는 MBR에 저장된 명령어를 명령어 레지스터(IR)에 저장합니다.



3. 실행 사이클(Execution Cycle)


실행 사이클 동안에는 CPU가 명령어 코드를 해독(decode)하고, 그 결과에 따라 필요한 연산들을 수행합니다. CPU가 수행하는 연산에는 데이터 이동, 데이터 처리, 데이터 저장, 프로그램 제어가 있습니다.


명령어는 연산 코드(Operation Code)오퍼랜드(operand)로 구성됩니다.


 


실행 사이클에서 수행되는 마이크로 연산들은 명령어의 연산 코드에 의해 결정되며, 명령어 실행에 필요한 데이터가 저장된 주소는 오퍼랜드에 의해 결정됩니다.



1) 데이터 이동: Load addr 명령어


Load ddr 명령어은 기억장치에 저장되어 있는 데이터를 CPU 내부 누산기(AC)에 저장하는 명령어 입니다.


t0 : MAR <- IR(addr)

t1 : MBR <- M[MAR]

t2 : AC <- MBR


첫 번째 주기 t0에서는 명령어 레지스터(IR)에 있는 오퍼랜드를 메모리 주소 레지스터(MAR)에 저장합니다.


두 번째 주기 t1에서는 MAR가 지정하는 기억장치 주소로부터 데이터를 읽어서 메모리 버퍼 레지스터(MBR)에 저장합니다.


세 번째 주기 t2에서는 MBR에 저장된 데이터를 누산기(AC)에 저장합니다.



2) 데이터 저장: STA addr 명령어


STA addr 명령어은 누산기(AC)에 저장된 데이터를 기억장치에 저장하는 명령어 입니다.


t0 : MAR <- IR(addr)

t1 : MBR <- AC

t2 : M[MAR] <- MBR


첫 번째 주기 t0에서는 명령어 레지스터(IR)에 있는 오퍼랜드를 메모리 주소 레지스터(MAR)에 저장합니다.


두 번째 주기 t1에서는 누산기(AC)에 저장된 데이터를 메모리 버퍼 레지스터(MBR)에 저장합니다.


세 번째 주기 t2에서는 MBR에 저장된 데이터를 MAR가 지정하는 기억장치 주소에 저장합니다.



3) 데이터 처리: ADD addr 명령어


ADD addr 명령어은 기억장치에 저장된 데이터를 누산기(AC)에 저장된 값에 더하여 그 결과를 다시 누산기에 저장하는 명령어 입니다.


 


t0 : MAR <- IR(addr)

t1 : MBR <- M[MAR]

t2 : AC <- AC + MBR


첫 번째 주기 t0에서는 명령어 레지스터(IR)에 있는 오퍼랜드를 메모리 주소 레지스터(MAR)에 저장합니다.


두 번째 주기 t1에서는 저장할 데이터를 MAR가 지정하는 기억장치 주소로부터 읽어서 메모리 버퍼 레지스터(MBR)에 저장합니다.


세 번째 주기 t2에서는 MBR에 저장된 데이터를 산술논리연산장치(ALU)에서 연산하여 그 결과값을 누산기(AC)에 저장합니다.



4) 프로그램 제어: JUMP addr 명령어


JUMP addr 명령어은 오퍼랜드가 가리키는 주소의 명령어로 실행 순서를 변경하는 분기(branch) 명령어 입니다.


t0 : PC <- IR(addr)


명령어 레지스터(IR)에 저장된 오퍼랜드를 PC에 저장하여 명령어 순서를 변경합니다.

#명령어 사이클# 인출 사이클# 실행 사이클
댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)