② MAR에 저장된 주소를 메모리에서 찾아서 메모리의 내용을 MBR에 넣는다;
이 동작을 마이크로 연산으로 표현하면, 다음과 같다.
MBR ← M[MAR]
M[MAR]은 MAR의 내용을 메모리 번지로 하는 그 번지의 내용을 말한다.
예를 들어, MAR에 808이 있고, 메모리 808번지에 "LOAD 900"이 있다면,
M[MAR]은 "LOAD 900"을 말한다.
③ MBR의 내용을 IR에 넣는다;
이 동작을 마이크로 연산으로 표현하면, 다음과 같다.
IR ← MBR
그런데, ②에서 다음 명령어의 인출을 위하여 PC의 값을 1증가한다.
PC와 'MBR ← M[MAR]'은 서로 독립적이므로 (독립적; 서로 영향을 주지 않음)
두 연산을 동시에 실행할 수 있다.
동시에 실행함으로써 계산시간을 절약할 수 있다.
따라서 ②는 다음과 같이 개선할 수 있다.
MBR ← M[MAR]
PC ← PC + 1
인출 명령을 간추리면 다음 표와 같다.
<Fetch의 마이크로 연산>
시간 | 마이크로 연산 | 설명 |
| MAR ← PC | PC의 내용을 MAR에 넣는다 |
| MBR ← M[MAR], PC ← PC + 1 | MAR에 저장된 주소를 메모리에 찾아서 MBR에 넣는다. PC를 1증가한다 |
| IR ← MBR | MBR의 내용을 IR에 넣는다 |
인출 동안에 PC는 다음 명령어의 주소를 갖는다.
예; 이 경우 PC는 “809”를 저장한다.
Fetch의 결과로 명령어가 메모리에서 IR에 들어온다.
그렇다면 이제 IR에 있는 명령을 실행하는 단계가 남았다.
실행가능한 명령어는 다수 있으나 명령어의 개념을
이해 할 수 있는 최소개로 한정하고자 한다.
우선 LOAD, ADD, STORE, JUMP의 네 개의 명령어부터 시작하자.
【연습문제】
(1) 모든 응용 프로그램은 (예; HWP한글, 워드, 엑셀, 데아터베이스, 게임, 등)
CPU에서 실행가능한 마이크로 연산으로 바뀐다. (O/X)
(2) 마이크로 연산은 레지스터 단위의 연산을 말하며
더 이상 나눌수 없는 최소 단위의 연산이다. (O/X)
(3) 다음 명령어의 주소를 계산하기 위한 마이크로 연산은 무엇인가?
(4) Fetch 명령은 메모리에서 내용(contents)을 가져오는 명령이다.
메모리에서 내용을 가져오려면 그 내용의 주소가 필요한데,
그 주소는 어디에 있는가?
(5) M[MAR]의 뜻은 무엇인가?
(6) Fetch 명령은 메모리의 내용을 최종적으로 어디에 저장하는가?