본문 바로가기

컴퓨터구조

컴퓨터 구조: 명령어 사이클

728x90
반응형

일반적인 명령어 사이클:

명령어 인출 -> 명령어 해독 -> 명령어 실행

명령어 사이클을 데이터 경로(data-path) 사이클이라고 한다.

 

명령어 사이클 외에 인터럽트 사이클이 있으며, 매 명령어 사이클이 끝나고 인터럽트 유무를 점검하여 인터럽트가 있으면 인터럽트 처리 루틴을 실행한다.

 

프래그램을 실행할 때 컴퓨터 연산에서 하나의 기계어 명령은 일련의 마이크로 명령으로 구성된 명령어 사이클을 이루어 실행된다.

각 명령어 사이클은 여러 개의 작은 단위로 구성된다.

 

제어 장치를 설계하기 위해서는 더 자세하게 분할하는데 실제로 사이클은 다시 작은 일련의 단계로 세분화된다.

각 사이클은 프로세서 레지스터와 함께 동작하며, 이 단계들을 마이크로 연산이라고 한다.

각 명령은 더 짧은 하위 사이클로 구성된 명령 주기 동안 실행된다.

각 하위 사이클은 하나 이상의 마이크로 연산을 가지고 있다.

 

마이크로 연산은 프로세서의 가장 작은 동작이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

명령어 인출 사이클(instruction fetch)

명령어 인출 사이클은 모든 명령어를 실행하는 과정의 첫 번째 단계로 다음에 실행할 명령어를 주기억 장치에 읽어 오는 과정이다.

 

주소 기억 장치의 명령어가 저장된 위치를 기억하고 있는 PC를 MAR로 보낸다.

이 주소를 주소 버스에 실어서 주기억 장치로 이동하여 주기억 장치의 주소에 저장된 명령어를 읽어 데이터 버스로 이동한다.

그 다음 데이터 버스의 데이터를 MBR에 저장한 후 명령 레지스터(IR)에 저장하면 명령어 인출 사이클이 끝난다.

t1 : PC -> MAR -> 주소 버스

t2: M[MAR] -> 데이터 버스 -> MBR

t3: MBR -> 명령 레지스터(IR)

명령어 인출 사이클이 시작될 때 실행할 다음 명령의 주소는 PC에 있다.

1단계 : 이 주소(그림의 400)를 MAR로 이동한다. MAR은 주소 버스에 연결되는 레지스터이다.

2단계 : 명령어 읽어 오기. 원하는 주소(MAR에 저장한)는 주소 버스에 실리고, 제어 장치는 제어 버스에 READ 명령을 내린다.

a) 지정된 메모리 주소를 찾아 저장된 명령을 데이터 버스에 실어서 MBR로 가져온다.

b) 다음 명령을 준비하기 위해 명령 길이만큼 PC를 증가시킨다.

a와 b는 서로 간섭하지 않으므로 동시에 진행 가능하다.

3단계: MBR 내용을 명령 레지스터로 이동한다.

 

각 마이크로 연산은 데이터 레지스터 이동이 포함된다. 이러한 이동이 서로 간섭하지 않는다면 여러 연산을 한 단계 안에 수행함으로써 시간을 절약할 수 있다.

I : 명령어의 크기
바이트 단위 주소 지정이고, 명령어의 기본 크기가 2 바이트라면 I는 2가 됨

 

 

클록은 타이밍을 맞추기 위해 정기적인 시간 간격으로 클록 펄스를 발생한다.

t1, t2, t3은 연속적인 시간 단위를 나타낸다.

 

마이크로 연산을 그룹으로 묶을 때는 두 가지 규칙을 따라야한다.

1. 연산의 적절한 순서를 따라야 한다. MAR의 주소 사용

2. 충돌을 피해야 한다. 결과를 예측 할 수 없기 때문에 한 번에 동일한 레지스터에서 읽고 쓰려고 해서는 안된다.

 

명령어 해독 사이클(instruction decode)

 

명령어 해독 사이클은 명령 레지스터(IR)의 내용 중에서 오퍼랜드는 제외한 opcode만 해독기로 전달하고, 해독기는 제어 기억 장치에서 명령 연산에 해당되는 마이크로 루틴을 찾아 해독한다.

해독된 명령어에 대한 후속 마이크로 연산을 발생시킨다.

 

 

 

 

 

 

명령어 실행 사이클(instruction execute)

명령어 실행 사이클은 해독된 명령어를 실행하는 사이클이다.

- IR : operand -> MAR -> 주소 버스

명령 레지스터의 오퍼랜드를 MAR로

- M[MAR] -> MBR -> 데이터 버스

메모리에서 피연산자를 읽어 MBR로

- MBR -> R1

MBR에서 R1(누산기 역할)로

 

 

 

인터럽트 사이클

실행 주기가 완료되면 인터럽트가 발생했는지 여부를 확인하여 인터럽트가 발생했다면 인터럽트 사이클을 실행한다.

 

반응형