B-des 컴퓨터 구조

명령어 사이클을 레지스터 변화로 추적하기

CPU 사이클 문제는 fetch, decode, execute 이름보다 PC, MAR, MBR, IR 값이 언제 바뀌는지 봐야 한다. 인터럽트와 간접주소까지 연결하면 함정을 줄일 수 있다.

01

인출

PC 값을 MAR에 보내고 메모리에서 명령어를 읽어 MBR을 거쳐 IR에 적재한다.

PC는 다음 주소로 증가
02

해독

IR의 opcode와 operand를 해석해 필요한 레지스터와 주소지정 방식을 결정한다.

주소 계산 준비
03

실행

ALU 연산, 메모리 접근, 분기, 입출력 중 명령 종류에 맞는 동작을 수행한다.

분기는 PC를 바꿈
04

인터럽트

명령 종료 지점에서 인터럽트를 확인하고 상태 저장 후 처리 루틴으로 이동한다.

복귀 주소 보존
직접주소
operand가 실제 주소 명령어의 주소 필드가 바로 데이터가 있는 메모리 위치를 가리킨다.
추가 주소 읽기 적음
간접주소
operand가 주소를 담은 위치 한 번 더 메모리를 읽어 실제 데이터 주소를 얻는다.
메모리 접근 증가
즉시주소
operand 자체가 값 상수 값을 바로 사용하므로 별도 데이터 읽기가 필요 없다.
빠르지만 범위 제한
인덱스
기준 주소와 레지스터 합산 배열처럼 연속된 데이터 접근에서 위치 계산에 사용된다.
반복문과 연결

PC 증가 시점 · 인터럽트 우선 · 간접주소 함정 점검

PC 증가 시점 분기 명령은 일반 증가 후 대상 주소로 덮어쓸 수 있어 흐름을 따로 본다.
인터럽트 우선 현재 명령 실행 중간이 아니라 보통 명령 경계에서 처리 여부를 판단한다.
간접주소 함정 operand와 실제 데이터 주소를 같은 값으로 착각하지 않는다.