보근은 참고 있다
2.5 명령어의 컴퓨터 내부 표현 본문
사람이 컴퓨터에 명령을 내리는 방법과 컴퓨터가 명령어를 해석하는 방법의 차이를 알아보자. 명령어도 컴퓨터 내부에서는 높고 낮은 전기 신호의 연속으로 저장된다. 실제로 명령어의 각 부분을 숫자로 볼 수 있으며, 이 숫자들을 나란히 늘어놓으면 명령어가 된다.
레지스터 역시 명령어에 참조되기 때문에 레지스터 각각을 숫자로 매핑하는 규칙이 있다. $s0 ~ $s7은 16~23, $t0 ~ $t7은 8~15 등등.
MIPS 명령어의 길이는 데이터 워드와 마찬가지로 32비트이다. "간단하게 하기 위해서는 규칙적인 것이 좋다"라는 설계 원칙을 따른 것이다.
MIPS 어셈블리 언어를 기계어로 변환하면 다음과 같다.
위의 명령어 형식(instruction format)으로 나타낸 기계어는 "add $t0, $s1, $s2"를 기계어(machine language)로 표현한 것이다.
위의 명령어 형식은 R타입(Register)이라고 한다. 피연산자 3개가 다 레지스터인 명령어의 명령어 형식이다. 명령어의 각 부분은 필드(field)라고 부른다.
- op : 명령어가 실행할 연산의 종류로서 연산자(opcode)라고 부른다.
- rs : 첫 번째 근원지(source) 피연산자 레지스터.
- rt : 두 번째 근원지 피연산자 레지스터.
- rd : 목적지(destination) 레지스터. 연산 결과가 기억된다.
- shamt : 자리이동량(shift amount).
- funct : 기능(function). op 필드에서 연산의 종류를 표시하고 funct 필드에서는 그 중의 한 연산을 구체적으로 지정한다. 기능 코드(function code)라고도 부른다.
위의 R타입보다 필드 길이가 더 길어야 하는 경우에는 문제가 생길 수 있다. lw, sw나 addi같이 상수가 들어가는 경우이다. R타입을 그대로 사용하면 상수를 겨우 5비트 32까지만 표현할 수 있다.
이런 문제 때문에 모든 명령어의 길이를 같게 하고 싶은 생각과 명령어 형식을 한 가지로 통일하고 싶은 생각 사이에서 충돌이 생긴다. 여기서 마지막 하드웨어 설계 원칙이 도출된다.
설계 원칙 3 : 좋은 설계에는 적당한 절충이 필요하다.
MIPS 설계자들이 택한 절충안은 명령어의 길이는 같게 하되, 명령어 종류에 따라 형식은 다르게 하는 것이다.
위의 명령어 형식은 I타입(Immediate)으로 상수를 피연산자로 두는 명령어를 위한 명령어 형식이다. 상수를 나타내는 필드가 16비트로 ±2^15바이트 (±2^13워드)를 지정할 수 있다.
내장 프로그램 개념
오늘날의 컴퓨터는 두 가지 중요한 원리에 바탕을 두고 있다.
- 명령어는 숫자로 표현된다.
- 프로그램은 메모리에 기억되어 있어서 숫자처럼 읽고 쓸 수 있다.
이것이 내장 프로그램 개념이다. 이 개념을 발명한 덕택에 컴퓨터가 눈부시게 발전할 수 있었다. 메모리에는 여러가지 다양한 프로그램이 기억될 수 있다.
명령어를 숫자로 취급하게 된 결과, 프로그램이 이진수 파일 형태로 판매되게 되었다. 이것은 기존 명령어 집합과 호환성이 있다면 다른 컴퓨터의 소프트웨어를 물려받을 수 있다는 의미를 갖는다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
2.7 판단을 위한 명령어 (0) | 2020.10.14 |
---|---|
2.6 논리연산 명령어 (1) | 2020.10.14 |
2.4 부호있는 수와 부호없는 수 (0) | 2020.10.14 |
2.3 피연산자 (0) | 2020.10.14 |
2.2 하드웨어 연산 (0) | 2020.10.14 |