- 프로그램 실행과정에서 각 명령은 명령 사이클에 의해 수행된다.
- 명령 사이클은 인출 사이클, 실행 사이클, 인터럽트 사이클로 구성된다.
- 각 사이클들은 마이크로 오퍼레이션(실제 수행되는 가장 작은 기본 단위)으로 구성된다.
인출 -> (간접) -> 실행 -> 인터럽트
1. 인출 사이클(Fetch Cycle)
- 명령어를 인출한 후 해독
- PC -> MAR -> MBR -> IR
1) PC -> MAR
현재 PC에 저장된 주소를 MAR로 보낸다
2) MAR -> MBR , PC -> PC+1
MAR이 가르키는 메모리 주소에서 명령어를 읽어 MBR에 적재
PC가 다음 명령어 주소를 가르키게 한다
3) MBR -> IR
MBR에 저장된 명령어가 명령어 레지스터(IR)로 이동한다.
2. 실행 사이클(Execute Cycle)
1. 데이터 이동
1) IR -> MAR
IR의 Operand 주소를 MAR로 보낸다
2) MAR -> MBR
MAR이 가르키는 메모리 주소에서 데이터를 MBR에 적재
3) MBR -> AC
MBR의 데이터를 AC에 적재
2. 데이터 처리
- IR -> MAR -> MBR + AC -> AC
1) IR -> MAR
IR의 Operand 주소를 MAR로 보낸다.
2) MAR -> MBR
MAR이 가르키는 메모리 주소에서 데이터를 MBR에 적재
3) MBR + AC -> AC
AC의 내용과 MBR의 데이터를 더해 AC에 저장
3. 데이터 저장
- IR -> MAR , AC -> MBR , MBR -> MAR
1) IR -> MAR
IR의 Operand 주소를 MAR로 보낸다. (데이터를 저장할 주소)
2) MBR -> AC
MAR이 가르키는 메모리 주소에서 데이터를 MBR에 적재 (저장할 데이터)
3) MBR -> MAR
MBR의 데이터를 MAR이 가르키는 메모리 주소에 저장
4. 제어
IR -> PC
분기할 목적지의 주소가 PC에 적재됨
3. 간접 사이클(Indirect Cycle)
- 간접 주소를 사용할 경우 실행 사이클이 시작되기 전에 유효주소를 기억장치로부터 읽어와 IR의 Operand에 저장
- 인출 사이클과 실행 사이클 사이에 위치
1) IR -> MAR
IR의 Operand 주소를 MAR로 보낸다.
2) MAR -> MBR
MAR이 가르키는 데이터의 유효주소를 MBR로 보냄
3) MBR -> IR
데이터의 유효주소를 IR에 적재
4. 인터럽트 사이클(Interrupt Cycle)
- 한 명령어의 실행 사이클을 종료하고 다음 명령어를 위한 인출 사이클을 시작하기 전에 인터럽트 요구 신호가 대기중인지 검사
- 인터럽트 요구가 들어왔다면 현재의 명령어 실행을 끝내고, PC(다음 명령어 주소)를 스택에 저장
- 인터럽트 서비스 루틴을 호출하기 위해 루틴의 시작 주소를 PC에 저장
시작 주소는 인터럽트를 요구한 장치로부터 전송되거나 미리 정해진 값임
1) PC -> MBR
다음 실행될 명령어 주소를 MBR에 저장
2) SP -> MAR , ISR -> PC
SP(스택 포인터)의 내용을 MAR에 저장
PC의 내용은 ISR(인터럽트 서비스 루틴) 시작주소로 변경
3) MBR -> MAR
MBR에 저장된 원래 PC의 값(복귀주소)를 스택에 저장
5. 사이클 타임
1) 동기 고정식
- 사이클 타임 중에서 가장 수행시간이 긴 것으로 CPU 클럭 주기를 고정
- 마이크로 오퍼레이션 사이클 타임이 모두 같으므로 제어기를 구현하기 쉽다
2) 동기 가변식
- 수행시간이 유사한 것 끼리 모아서 하나의 군을 만들고, 그 군에 대하여 서로 다른 마이크로 사이클 타임을 준다
- 제어기 설계가 어렵다
3) 비동기식
- 원하는 만큼의 사이클 타임을 각각 할당
- 제어가 복잡해 거의 사용하지 않는다