🖥️ 명령어 사이클 · CPU 구조 (5과목)
명령어 사이클(Instruction Cycle) = CPU가 하나의 명령어를
메모리에서 가져와 실행하는 전 과정. 이 사이클을 반복하며 프로그램 수행.
메모리에서 가져와 실행하는 전 과정. 이 사이클을 반복하며 프로그램 수행.
🔄 명령어 사이클 4대 단계
📥
인출 Fetch
명령어를 메모리→CPU
🔗
간접 Indirect
간접주소 실제주소 인출
⚙️
실행 Execute
명령어 실제 수행
🚨
인터럽트 Interrupt
인터럽트 발생 시 처리
기본 흐름: 인출(Fetch) → 해독(Decode) → 실행(Execute) → (필요시 인터럽트)
📋 CPU 주요 레지스터 (시험 빈출!)
| 레지스터 | 이름 | 역할 |
|---|---|---|
| PC | Program Counter 프로그램 카운터 | 다음에 실행할 명령어의 주소 저장 |
| IR | Instruction Register 명령어 레지스터 | 현재 실행 중인 명령어 저장 |
| MAR | Memory Address Register 메모리 주소 레지스터 | 접근할 메모리 주소 저장 |
| MBR (MDR) | Memory Buffer Register 메모리 버퍼 레지스터 | 메모리와 주고받는 데이터 임시 저장 |
| AC | Accumulator 누산기 | 연산 결과 저장 |
⚡ 인출(Fetch) 사이클 마이크로연산 (자주 출제)
t0: MAR ← PC (PC의 주소를 MAR로 복사)
t1: MBR ← Memory[MAR], PC ← PC+1 (명령어 인출 + PC 증가)
t2: IR ← MBR (명령어를 IR로 이동)
⏱ 명령어 실행 시간 계산
명령어 실행 시간 = 클럭 주기 × 필요 클럭 수
클럭 주기 = 1 / 클럭 주파수
예) 1[GHz] CPU → 클럭 주기 = 1/10⁹ = 1[ns] → 4클럭 명령어 = 4[ns]
클럭 주기 = 1 / 클럭 주파수
예) 1[GHz] CPU → 클럭 주기 = 1/10⁹ = 1[ns] → 4클럭 명령어 = 4[ns]
⚠ 시험 핵심 포인트
· PC = 다음 명령어 주소 / IR = 현재 명령어 (구분!)
· MAR = 주소 / MBR(MDR) = 데이터
· 명령어 사이클: 인출 → 간접 → 실행 → 인터럽트
· 인출 단계 마이크로연산: MAR←PC, MBR←M[MAR], IR←MBR
· 명령어 시간 = 클럭 주기 × 클럭 수, 클럭 주기 = 1주파수
· PC = 다음 명령어 주소 / IR = 현재 명령어 (구분!)
· MAR = 주소 / MBR(MDR) = 데이터
· 명령어 사이클: 인출 → 간접 → 실행 → 인터럽트
· 인출 단계 마이크로연산: MAR←PC, MBR←M[MAR], IR←MBR
· 명령어 시간 = 클럭 주기 × 클럭 수, 클럭 주기 = 1주파수