(ComputerArchitecture)명령 사이클

1. fetch
먼저 프로그램카운터의 초기주소값이 결정되고 주소에 의하여 명령어가 기억장치로부터 읽혀진다. 이것을 인출이라 한다.
PC를 참조하여 실행할 명령을 기억장체치에서 읽어와 IR로 전송
디코딩
다음명령을 위하여 PC 갱신
t0 : MAR ← PC                            : 명령의 번지를 전송
t1 : MBR ← M(MAR), PC ← PC+1     : 명령을 읽고, PC하나 증가
t2 : OPR ← MBR(OP), I ← MBR(I)    :  OP코드와 mode 비트를 전송

2. indirect
인출해 온 오퍼랜드르 주소값으로 하여 기억장치로 부터 내용을 다시 읽어와야 하는데 이러한 과정을 간접사이클이라 한다.fetch사이클에서 읽어드린 명령의 모드비트가 간접주소인 경우에는 이 indirect사이클로 변이되며, 유효주소를 얻기 위하여 기억장치에 접근한다.
t0 : MAR ← MBR(AD)                   : 명령의 번지를 전송
t1 : MBR ← M(MAR)                    : 명령을 읽고, PC하나 증가

3. execute
AND (q0)
ADD (q1) : AC와 MBR의 가산결과가 AC 에 저장되고 캐르는 E에 저장
t0 : MAR ← MBR(AD)
t1 : MBR ← M[MAR]
t2 : AC ← AC+MBR
LDA (q3)
STA (q4)
BUN (q5) :Branch unconditionally : 프로그램흐름을 지정된 유효번지로 옮기는 명령 (goto, 서브루틴 return)
t0 : PC← MBR(AD)
BSA (q6) : Branch and Save return address : 서브루틴 프로그램으로 분기하기위해 사용되는 명령 (서브루틴 call)
t0 : MAR ← MBR(AD), MBR(AD) ← PC, PC ← MBR(AD)
t1 : M ← MBR
t2 : PC ← PC+1
ISZ (q7)

4. interrupt
명령의 실행 도중에 입출력 장치나 그 밖의 동작에 의하여 인터럽트가 발생되면 해당 서비스를 하게 되는 데 이것을 인터럽트 사이클이라 한다. 즉, 명령 실행 과정을 계속 할 수 없는경우에 응급조치를 취한 수에 계속 실행할 수 잇도록 중앙 상태를 보관하고 외부 인터럽트를 실행하는 사이클이다. 

현재 실행중인 프로그램상태(다음명령주소PC와 관련 레지스터 내용)를 기억장치에 저장하고 인터럽트를 처리하기 위한 루틴으로 분기
t0 : MBR(AD) ← PC,  PC ← 0    : 복귀 번지를 전송, PC clear
t1 : MAR ← PC, PC ← PC+1      : MAR에 0을 전송, PC에 1 set
t2 : M ← MBR, IEN ← 0           : 복기 번지를 저장, 인터럽트 인에이블 clear
Go to fetch cycle!!

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기