Instruction Cyle은 크게 4가지 단계를 거쳐 진행된다.
1. Memory로부터 Instruction을 fetch
2. Instruction을 Decode
3. Memory로부터 effective address 읽기
4. Instruction의 실행
특히나 3번의 과정은 Instruction의 종류에 따라 생략될 수 있다.
Instruction의 구조
앞선 cycle의 흐름을 단번에 파악하긴 어렵다.
Instruction Cycles를 이해하기 위해선, Instruction에 어떤 종류가 있는지 부터 파악해야한다.
기본적으로 16비트 컴퓨터에서 Instruction format에는 총 3가지가 있다.
1. Memory - reference Instruction
2. Register - refernce Instruction
3. I/O - reference Instruction
읽히는 바와 같이 각각 메모리, 레지스터, I/O 기반 명령어 구조를 뜻한다.
각각 하나씩 어떤 특징이 있는지 살펴보자.
Memory - Referece Instruction

- 최상위 비트는 1로 고정이며, operation code는 000 ~ 011까지의 값을 가진다.
- operation code의 조합으로 명령어의 종류가 결정된다.
- 피 연산자를 필요로 한다.
Register - Reference Instruction

- operation code는 111(고정)이며, 최상위 비트도 0(고정)이다.
- 피 연산자가 필요가 없기 때문에 따로 address part가 있지 않고, 나머지 비트로 연산의 종류를 결정 짓는다.(이를 operand가 필요하지 않다고 말한다.)
I/O - Reference Instruction

- 최상위 비트와 Operation code가 모두 1로 구성된 Instruction을 뜻한다.
- register - reference - instruction과 마찬가지로 피연산자를 필요로 하지 않는다.
아래 표는 이러한 각 Instruction의 연산 종류와 각 Instruction을 Hexadecimal로 구분한 내용이다.

나누어진 부분에 따라 각각 memory, register, i/o instruction에 대한 명령어 구조임을 알 수 있다.
Instruction Cycle FlowChart
그렇다면, 이제 Instruction Cycle을 이해할 차례이다.
대부분의 용어들은 줄임말로 적혀져있어 이해하기 어려울 수 있다.
그래서 용어 정리를 한번 해두고 가는 편이 좋은 것 같다.
SC : Sequence Counter, 순서를 카운터 한다.
AR : Address Register, 주소 저장 레지스터
IR : Instruction Register, 명령어 저장 레지스터
MAR : Memory Address Register
PC : Program Counter

- T0 : AR <- PC
- PC가 가진 주소를 AR에 넣는다.
- 즉, 다음 명령어의 주소를 넣는 것이다.
- T1 : IR <- M[AR], PC = PC + 1
- 명령어를 IR에 저장하고, PC를 하나 증가시켜준다.
- T2 : Decode operation code in IR(12 ~ 14), AR <- IR(0~11), I <- IR(15)
- 12~14번째 비트는 operation code 부분이므로, 이를 통해 어떤 종류의 명령어인지 파악한다.
- 111이 될 수 밖에 없는 I/O instruction이나 register instruction은 1을 반환하고, 그 이외는 memory instruction이다.
- AR에 IR(0~11)을 해주는 것은 memory instruction을 위한 것이며 이는 피연산자가 존재하기 때문이다.
- I <- IR(15)는 I/O instruction과 register instruction을 구분 짓기 위함과 동시에 memory instruction의 direct, indirect 주소 지정 방식을 정하는 것이기도 하다.
- 피연산자가 필요 없는 I/O instruction과 register instruction은 T3의 단계가 필요 없으며, 바로 SC<-0을 해주어 다음 실행단계를 거칠 수 있도록 한다.
- Memory - reference instruction은 operand의 주소 지정 방식이 크게 Indirect와 direct로 나뉜다.(이는 I가 1이냐 0이냐의 차이이다.)
- Indirect는 operand의 주소의 주소를 지정
- direct는 operand의 주소를 지정
- T3 : memory - reference instruction의 indirect인 mode에서만, AR <- M[AR]이 적용되며, address register에 메모리 상에 존재하는 operand값이 참조되어 들어온다.
- 이외의 direct mode에서는 달리 아무일도 하지 않는다.
References
[컴퓨터구조] 16비트 컴퓨터 설계하기 - Instruction Cycles
우리는 16비트 컴퓨터를 설계하고 있다. 이전 포스팅([컴퓨터구조] 16비트 컴퓨터 설계하기 - Control unit 설계)에서는 Control unit을 공부했는데 여기서 timeT0, T1, ...의 발생을 보았고, 특히 fetch와 decode
splendidlolli.tistory.com
[컴퓨터구조] 16비트 컴퓨터를 설계하자 - Instruction set 정의하기
배경지식: 지난 포스팅에서 명령어 코드의 구조를 확인했다. 우리의 목적은 컴퓨터를 설계하는 방법을 아는 것이다. 그러기 위해서는 컴퓨터구조를 알아야 한다고 했고, 그 컴퓨터 구조는 세가
splendidlolli.tistory.com
'🍀 Knowledge > 컴퓨터 구조' 카테고리의 다른 글
| [컴퓨터 구조] assembly로 Multiplication Program 프로그래밍 하기 (0) | 2023.10.09 |
|---|