정보처리기사 필기 - 2과목 전자계산기 구조
4장 명령 실행과 제어
1. 마이크로 오퍼레이션
· 한 개의 Clock 펄스 동안 실행되는 기본 동작
· 한 단계씩 이루어지는 동작
· 명령을 수행하기 위해 CPU 내의 레지스터와 플래그의 상태 변환을 일으키는 작업
· 제어신호 : 마이크로 오퍼레이션의 순서를 결정하기 위하여 제어 장치가 발생하는 신호
· 종류
- 수평 마이크로 명령(각 비트가 각 제어신호에 대응), 수직 마이크로 명령, 나노 명령
· 마이크로 프로그램 : 어떤 명령을 수행할 수 있도록 된 일련의 제어 워드가 특수한 기억장치 속에 저장된 것
- ROM에 저장되고 경제적이며 하드와이어드 방식보다 느림
· 마이크로 오퍼레이션중에 인덱스 레지스터는 플그램으로 레지스터의 내용 변경 가능
마이크로 프로그램을 이용한 제어방식 |
고정배선제어방식(하드웨어방식, 하드와이어 제어 방식) |
구조적이고 임의적인 설계 가능 / 유지보수 용이 |
복잡 |
경제적, 설계비용 감소 |
비쌈 |
느림 |
빠름 |
· 마이크로 프로그램 제어기가 다음에 수행할 마이크로 인스트럭션의 주소를 결정하는데 사용하는 정보
- 인스트럭션 레지스터(IR), CPU의 상태 레지스터, 마이크로 인스트럭션에 나타난 주소
· Micro Cycle Time 부여 방식
- 동기 고정식
= 동작 시간이 모두 같음
= 가장 긴 마이크로 오퍼레이션의 동작을 마이크로 사이크 타임으로 정함
= 동작시간이 비슷할 때 유리(시간 지연X)
= 클록 사이클 = 가장 긴 시간 + 지연 시간
- 동기 가변식
= 동작 시간이 그룹별로 다름
= 각 그룹 간 서로 다른 사이클 타임의 동기를 맞추기 위해 그룹 간의 마이크로 사이클 타임을 정수배가 되게함
- 비동기식 : 동작시간이 모두 다름
· data flow machine : 프로그램 내의 모든 인스트럭션들이 그들의 수행에 필요한 피연산자들이 모두 준비되었을 때 그 인스트럭션을 수행하는 것으로 데이터 추진(data driven) 방식이라 할 수 있는 것
※ 하나의 명령을 처리하는 과정
① 인스트럭션 패치
② 인스트럭션 디코딩
③ 오퍼랜드 패치
④ 실행
⑤ 인터럽트 조사
2. 메이저 스테이트
· 메이저 스테이트 : 현재 CPU가 무엇을 하고 있는지를 나타내는 상태
※ PC(프로그램 카운터) : 다음에 실행할 명령어의 버지를 기억
MBR : 기억장치에 출입하는 데이터가 일시적으로 저장
MAR : 기억장치에 출입하는 데이터의 주소 기억
· 인출단계(Fetch Cycle)
- 명령어를 주기억장치에서 중앙처리장치의 명령 레지스터로 셋 시켜 가져와 해독
- 명령어 종류 판별
- 명령어를 가져오기 위해 기억장치에 접근
- 중앙처리장치가 fetch 상태인 경우에 명령어가 제어점을 제어
① MAR ← PC
② MBR ← M[MAR], PC ←PC+1
③ IR ← MBR[OP]
· 간접단계(Indirect Cycle)
- 주소부가 간접주소인 경우에만 수행
- 오퍼랜드의 주소를 읽어내는 단계(기억장치로부터 주소 인출)
- 유효주소를 계산하기 위한 단계
① MAR ← MBR[AD]
② MBR ← M[MAR]
· 실행단계(Execute Cycle)
- 실행상태에서 interrupt 요청이 발생되면 interrupt로 가고 아니면 fetch 상태로 감
- ADD ① MAR ← MBR[AD] ② MBR ← M[MAR] ③ AC ← AC+MBR |
- LDA(load to AC) ① MAR ← MBR[AD] ② MBR ← M[MAR], AC ← 0 ③ AC ← AC+MBR |
- STA(store to AC) ① MAR ← MBR[AD] ② MBR ← AC ③ M(MAR) ← MBR |
-BSA(Branch and Save Return Address) ① MAR ← MBR[AD], MBR[AD] ← PC, PC ← MBR[AD] ② M[MAR] ← MBR[AD] ③ PC ← PC+1 |
· 인터럽트단계(Interrupt Cycle)
- 서브루틴의 호출
- 인터럽트가 끝나면 항상 fetch 상태로 무조건 감
① MBR[AD] ← PC, PC ← 0
② MAR ← PC, PC ← PC+1
③ M[MAR] ← MBR, IEN ← 0
인터럽트가 진행되면 다른 인터럽트를 배제하기 위해 IEN 플래그에 0을 셋 시킴