5.1 Instruction codes
micro operation(마이크로 연산)들이 모여서 instructions이 되고, 그 instructions이 모여서 프르그램이 된다.
❓ Instruction이란?
: CPU가 프로그램에서 수행해야 할 구체적인 작업을 정의하는 기본 명령어이다. 인스트럭션은 연산 코드와 피연산자로 이루어지며, 이를 통해 CPU가 데이터를 처리하고 명령을 수행하게 된다.
Instruction의 기본 포멧
즉 instruction은 명령어의 종류와 피연산자의 주소로 이루어져있고, 각각 4bit, 12bit로 이루어져있다. 그리고 피연산자의 값은 16 bit로 이루어져있다.
memory의 구조
메모리의 사이즈는 16bit이고, 메모리 전체의 주소는 instruction의 Adress에 의해서 결정된다. instruction의 Adress는 총 12bit이므로 메모리 전체의 주소 값의 크기는 2의 11승인 4096이다. 따라서 메모리 주소는 0에서 2^11 -1 까지 설정할 수 있다.
AC(Accumulator) - 누산기: 누적돼서 처리된다.)
기본적으로 처리되는 결과가 저장되는 레지스터이다.
Effective address(유효주소)
: 실제 피연산자의 주소를 이야기한다.
유효 주소를 지정하는 방식
1. 즉시 주소 지정(Immediate Addressing)
: 명령어 내에 피연산자의 값이 바로 포함되어 있는 경우이다. 즉, 피연산자 값이 명령어 자체에 있어 메모리를 따로 참조할 필요가 없다.
예를 들면, "너에게 데이터 5개를 줄게!" 라고 하는 것
2. 직접 주소 지정(Direct Addressing)
: 명령어에 피연산자의 메모리 주소가 포함된 경우이다. 명령어가 직접 메모리 주소를 참조하여 그 주소에 저장된 값을 가져오는 방식이다.
예를 들면, "데이터가 1000번 창고에 있으니깐 거기서 가져와!" 라고 하는 것
3. 간접 주소 지정(Indirect Addressing)
: 명령어에 피연산자의 메모리 주소가 포함된 경우이다. 명령어가 직접 메모리 주소를 참조하여 그 주소에 저장된 값을 가져오는 방식이다.
예를 들면, "데이터는 500본 창고에 저장된 노트에 적인 주소에 있어!" 라고 하는 것
위에서 instructions 포멧에 대해서 다루어봤다.
더 자세히 살펴보면 위의 그림과 같이 Opcode 내부에 I bit라고 해서 I가 0이면 직접 주소 지정을 하고, I가 1이면 간접 주소 지정을 한다. 다. 따라서, I bit를 제외하고, 나머지 3bit가 명령어를 의미한다.
[I가 0인 경우 - 직접 주소 지정]
I가 0이기 때문에, 직접 주소 지정 방식을 사용한다. 457번 주소에 있는 값이 해당 operand(피 연산자)가 되는 것이다. 따라서 해당 값과 AC를 더해서 AC에 저장하는 것이다. (유효 주소는 457)
[I가 1인 경우 - 간접 주소 지정]
I가 1이기 때문에, 간접 주소 지정 방식을 사용한다. 300번 주소에 있는 값을 주소로 가지는 값이 해당 operand(피 연산자)가 되는 것이다. 따라서 해당 값과 AC를 더해서 AC에 저장하는 것이다. (유효 주소는 1350)