#68_메이저 스테이트
- 현재 CPU가 무엇을 하고 있는가를 나타내는 상태로서, fetch(인출), indirect(간접), execute(실행), interrupt(인터럽트) 이렇게 4개의 상태가 있음
- CPU는 메이저 스테이트의 4가지 단계를 반복적으로 거치면서 동작을 수행
- 메이저 스테이트는 메이저 스테이트 레지스터를 통해서 알 수 있음
- Major Cycle 또는 Machine Cycle라고도 함
#69_인출단계(fetch cycle)
- 명령어를 주기억장치에서 중앙처리장치의 명령 레지스터로 가져와 해독하는 단계
- 읽어와 해석된 명령어가 1 Cycle 명령어면 이를 수행한 후 다시 Fetch Cycle 사이클로 변천함
- 1 Cycle명령이 아니면, 해석된 명령어의 모드비트에 따라 직접주소와 간접 주소를 판단함
제어신호 | Micro Operation | 의미 |
C0T0 | MAR <- PC | PC에 있는 번지를 MAR에 전송시킴 |
C0T1 |
MBR <- M[MAR], PC <- PC + 1 |
ㆍ메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함 ㆍ다음에 실행할 명령의 위치를 지정하기 위해 PC의 값을 1 증가시킴 |
C0T2 |
IR <- MBR[OP], 1 <- MBR[I] |
ㆍ명령어의 OP_code 부분을 명령 레지스터에 전송함 ※ 현재 MBR에는 주기억장치에서 읽어온 명령이 들어있음 ㆍ명령어의 모드비트를 플립플롭 I에 전송함 |
C0T3 |
F <- 1 또는 R <- 1 |
ㆍI가 0이면 F 플립플롭에 1을 전송하여 Execute 단계로 변환하고, I가 1이면 R 플립플롭에 1을 전송하여 Indirect 단계로 변천함 |
#70_간접 단계(Indirect cycle)
- Fetch 단계에서 해석된 명령의 주소부가 간접주소인 경우 수행됨
- Fetch 단계에서 해석한 주소를 읽어온 후 그 주소가 간접주소이면 유효주소를 계산하기 위해 다시 Indirect 단계 수행
- 간접 주소가 아닌 경우에는 명령어에 따라서 Execute 단계 또는 Fetch 단계로 이동할지를 판단함
제어신호 | Micro Operation | 의미 |
C1T0 | MAR <- MBR[AD] | MBR에 있는 명령어의 번지 부분을 MAR에 전송함 |
C1T1 | MBR <- M[MAR] | 메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함 |
C1T2 | No Operation | 동작없음 |
C1T3 | F <- 1, R<- 0 | F에 1, R에 0을 전송하여 Execute 단계로 변천함 |
#71_실행 단계(Execute Cycle)
- Fetch 단계에서 인출하여 해석한 명령을 실행하는 단계
- 플래그 레지스터의 상태 변화를 검사하여 interrupt 단계로 변천할 것인지를 판단함
- interrupt 요청 신호를 나타내는 플래그 레지스터의 변화가 없으면 Fetch 단계로 변천함
- ADD 연산을 수행하는 Execute Cycle의 단계
제어신호 | Micro Operation | 의미 |
C2T0 | MAR <- MBR[AD] | MBR에 있는 명령어의 번지 부분을 MAR에 전송함 |
C2T1 | MBR <- M[MAR] | 메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함 |
C2T2 | AC <- AC + MBR |
누산기의 값과 MBR의 값을 더해 누산기에 전송함 (실질적인 ADD연산이 이루어지는 부분임) |
C2T3 | F <- 0 또는 R <- 1 | F에 0을 전송하면 F=0, R=0이 되어 Fetch단계로 변천하고, R에 1을 주면 F=1, R=1이 되어 Interrupt 단계로 변천함 |
#72_인터럽트 단게(Interrupt Cycle)
- 인터럽트 발생 시 복귀주소(PC)를 저장시키고, 제어순서를 인터럽트 처리 프로그램의 첫 번째 명령으로 옮기는 단계
- 인터럽트 단계를 마친 후에는 항상 Fetch 단계로 변천함
제어신호 | Micro Operation | 의미 |
C3T0 | MBR[AD] <- PC, PC <- 0 |
ㆍPC가 가지고 있는, 다음에 실행할 명령의 주소를 MBR의 주소 부분으로 전송함 ㆍ복귀 주소를 저장할 0번지를 PC에 전송함 |
C3T1 | MAR <- PC, PC <- PC+1 |
ㆍPC가 가지고 있는, 값 0번지를 MAR에 전송함 ㆍ인터럽트 처리 루틴으로 이동할 수 있는 인터럽트 백터의 위치를 지정하기 위해 PC의 값을 1 증가 시켜 1로 세트시킴 |
C3T2 | M[MAR] <- MBR, IEN <- 0 |
ㆍMBR이 가지고 있는, 다음에 실행할 명령의 주소를 메모리의 MAR이 가리키는 위치(0번지)에 저장함 ㆍ인터럽트 단계가 끝날때까지 다른 인터럽트가 발생하지 않게 IEN에 0을 전송함 |
C3T3 | F <- 0, R <- 0 | F에 0, R에 0을 전송하여 Fetch 단계로 변천함 |
#73_주요 명령의 마이크로 오퍼레이션
- ADD : AC <- AC + M[AD]
제어신호 | Micro Operation | 의미 |
C2T0 | MAR <- MBR[AD] | MBR에 있는 명령어의 번지 부분을 MAR에 전송함 |
C2T1 | MBR <- M[MAR] | 메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함 |
C2T2 | AC <- AC + MBR | 누산기의 값과 MBR의 값을 더해 누산기에 전송함 |
C2T3(IEN') | F <- 0 | F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함 |
C2T3(IEN) | R <- 1 | R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함 |
- LDA(Load to AC) : AC <- M[AD]
제어신호 | Micro Operation | 의미 |
C2T0 | MAR <- MBR[AD] | MBR에 있는 명령어의 번지 부분을 MAR에 전송함 |
C2T1 | MBR <- M[MAR], AC <- 0 |
ㆍ메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함 ㆍAC에 0을 전송하여 AC를 초기화 함 |
C2T2 | AC <- AC + MBR |
ㆍ메모리에서 가져온 MBR과 AC를 더해 AC에 전송함 ㆍ초기화된 AC에 더해지므로 메모리의 값을 AC로 불러오는 것과 같음 |
C2T3(IEN') | F <- 0 | F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함 |
C2T3(IEN) | R <- 1 | R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함 |
- STA(Store AC) : M[AD] <- AC
제어신호 | Micro Operation | 의미 |
C2T0 | MAR <- MBR[AD] | MBR에 있는 명령어의 번지 부분을 MAR에 전송함 |
C2T1 | MBR <- AC |
AC의 값을 MBR에 전송함 |
C2T2 | M[MAR] <- MBR |
MBR의 값을 메모리 MAR이 지정하는 위치에 전송함 |
C2T3(IEN') | F <- 0 | F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함 |
C2T3(IEN) | R <- 1 | R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함 |
- BUN(Branch unconditionally)
ㆍBUN은 PC에 특정한 주소를 전송하여 실행명령의 위치를 변경하는 무조건 분기 명령임
제어신호 | Micro Operation | 의미 |
C2T0 | PC<- MBR[AD] |
ㆍMBR에 있는 명령어의 번지 부분을 PC에 전송함 ※ 다음에 실행할 명령의 주소를 갖는 PC의 값이 변경되었으므로 변경된 주소에서 다음 명령이 실행됨 |
C2T1 | no Operation | 동작 없음 |
C2T2 | no Operation | 동작 없음 |
C2T3(IEN') | F <- 0 | F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함 |
C2T3(IEN) | R <- 1 | R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함 |
#74_제어 데이터
- 제어장치가 제어신호를 발생하기 위한 자료로서, CPU가 특정한 메이저 상태와 타이밍 상태에 있을 때, 제어자료에 따른 제어규칙에 의해 제어신호가 발생함
① 메이저 스테이트 사이의 변천을 제어하는 데이터
② 중앙처리장치의 제어점을 제어하는 데이터
③ 인스트럭션의 수행 순서를 결정하는데 필요한 제어 데이터
#75_제어장치의 비교
- 제어장치는 필요한 마이크로 연산들이 연속적으로 수행할 수 있도록 제어 신호를 보내는 역할을 함
고정배선 제어장치 | 마이크로 프로그래밍 기법 | |
반응 속도 | 고속 | 저속 |
회로 복잡도 | 복잡 | 간단 |
결제성 | 비경제적 | 경제적 |
융통성 | 없음 | 있음 |
구성 | 하드웨어 | 소프트웨어 |
#76_입/출력장치의 구성
- 입/출력 제어 장치
ㆍ입/출력 장치와 컴퓨터 사이의 자료전송을 제어하는 장치
ㆍ데이터 버퍼 레지스터를 이용하여 두 장치간의 속도차이를 조절함
ㆍ제어신호의 논리적, 물리적 변환 그리고 에러를 제어함
ㆍ종류 : DMA, 채널, 입/출력 프로세서, 입/출력 컴퓨터
- 입/출력 인터페이스
ㆍ동작방식이나 데이터 형식이 서로 다른 컴퓨터 내부의 주기억 장치나 CPU의 레지스터와 외부 입/출력 장치간의 이진 정보를 원활하게 전송하기 위한 방법 제공
ㆍ컴퓨터와 각 주변 장치와의 다음과 같음 차이점을 해결하는 것이 목적임
① 전자기 혹은 기계적인 주변장치와 전기적인 CPU나 메모리간의 동작방식 차이
② 주변 장치와 CPU간의 데이터 전송속도의 차이
③ 주변 장치의 데이터 코드와 CPU나 메모리의 워드 형식의 차이
④ 동작 방식이 서로 다른 주변 장치들의 간섭 없는 제어
- 입/출력 버스
ㆍ주기억장치와 입/출력장치 사이의 데이터 전송을 위해 모든 주변 장치의 인터페이스에 공통으로 연결된 버스
ㆍ데이터버스, 주소버스, 제어 버스로 구성되어 있음
#77_기억장치와 입출력 장치 동작의 차이
- 기억장치는 처리속도가 nano(10-9)의 단위인 전자적인 장치이고 입출력 장치는 milli(10³)의 단위인 기계적인 장치이므로 동작방식에는 많은 차이가 있음
비교항목 | 입/출력 장치 | 기억 장치 |
동작의 속도 | 느리다 | 빠르다 |
동작의 자율성 | 타율/자율 | 자율 |
정보의 단위 | Byte(문자) | Word |
착오 발생률 | 많다 | 적다 |
#78_스풀링(spooling)
- 다중 프로그래밍 환경 하에서 용량이 크고 신속한 액세스가 가능한 디스크를 이용하여 각 사용자 프로그램이 입.출력할 데이터를 직접 I/O장치로 보내지 않고 디스크에 모았다가 나중에 한꺼번에 입.출력함으로써 입.출력 장치의 공유 및 상대적으로 느린 입.출력장치의 처리속도를 보완하는 기법
- 스풀링은 고속의 CPU와 저속의 입.출력장치가 동시에 독립적으로 동작하게 하여 높은 효율로 여러 작업을 병행 작업할 수 있도록 해줌으로써 다중 프로그래밍 시스템의 성능 향상을 가져올 수 있음
- 스풀링은 디스크 일부를 매우 큰 버퍼처럼 사용하는 방법임
'자격증 > 정보처리산업기사 - 개정전' 카테고리의 다른 글
정보처리산업기사 필기_2과목, 전자계산기 구조(#90~#94) (2) | 2020.04.17 |
---|---|
정보처리산업기사 필기_2과목, 전자계산기 구조(#79~#89) (2) | 2020.04.17 |
정보처리산업기사 필기_2과목, 전자계산기 구조(#57~#67) (0) | 2020.04.16 |
정보처리산업기사 필기_2과목, 전자계산기 구조(#46~#56) (0) | 2020.04.16 |
정보처리산업기사 필기_1과목, 데이터베이스(#41~#45) (4) | 2020.04.15 |