: 명령어를 순서대로 실행
: 고속 기억 장치
특수 목적 레지스터 중 중요한 것
명령어 세트?
: CPU가 실행할 명령어 집합
CPU는 프로그램을 실행하기 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독, 실행
→ 명령어 사이클 : 하나의 명령어를 인출하여 실행하는데 필요한 활동
→ 인출/실행/간접/인터럽트 사이클
주기억장치의 지정된 주소에서 하나의 명령어 가져옴 → 실행 사이클에서 명령어 실행 → 하나의 명령어 실행이 완료되면 그 다음 명령어 인출 사이클 시작
인출 사이클과 실행 사이클에 의한 명령어 처리 과정
: 인출 사이클에서 가장 중요한 부분은 PC값 증가
Fetch Cycle
T0 : MAR <- PC # 실행할 명령어의 주소를 MAR로 전달
T1 : MBR <- M[MAR], # MAR에 위치한 메모리 내용을 MBR로 전달,
T1' : PC <- PC+1 # 다음 실행할 명령어를 위해PC 1 증가
T2 : IR <- MBR # 메모리 내용을 IR 로 전달
T3 : F <- 1 or R <- 1 # F=1 이면 실행 사이클로, R=1 이면 간접 사이클로 진행
인출한 이후 명령어 실행 과정
Indirect Cycle
T0 : MAR <- MBR[ADDR] # MBR에 있는 주소를 MAR로 전송
T1 : MBR <- M[MAR] # 피연산자를 읽고, MAR위치 값을 MBR에 전송
T3 : F <- 0, R <- 0 # 1Cycle 명령이면 Fetch Cycle로 진행
T3' : F <- 1, R <- 0 # 실행 명령이면 Execute Cycle로 진행
이미 인출이 진행되고 명령어만 실행하면 되기 때문에 PC 증가 필요 X
IR에 MBR 값이 이미 저장된 상태를 의미함
따라서 AC에 MBR을 더해주기만 하면 됨
ISZ(Increment and Skip if Zero)
: 메모리의 값을 읽고 그 값을 1 증가시킨 후, 음수에서 시작한 그 값이 0이면 현재 명령을 건너뛰고 다음 명령으로 이동
T1 : MBR <- M[MAR]
T2 : MBR <- MBR + 1
T3 : M[MAR] <- MBR, if(MBR == 0) then (PC <- PC + 1)
Interrupt Cycle
MBR[ADDR] = PC # 리턴 번지를 MBR에 저장(상태 저장)
PC = 0
MAR = PC
PC = PC + 1
M[MAR] = MBR
IEN = 0
MBR[ADDR] <- PC, PC <- 0
MAR <- PC, PC <- PC + 1
M[MAR] <- MBR, IEN = 0
R <- 0 AND F <- 0
Fetch → Indirect → Execute → Interrupt