*컴퓨터 구조 및 설계 5th Edition (저자 David A. Patterson 과 John L. Hennessy)를 기반으로 작성되었습니다.

*MIPS 어셈블리언어 기반으로 작성되었습니다.

 

명령어는 컴퓨터 내부에서 높고 낮은 전기 신호의 연속으로 저장되므로 숫자로 표현할 수 있습니다. 실제로 명령어의 각 부분을 숫자로 볼 수 있으며, 이 숫자들을 나란히 늘어놓으면 명령어가 됩니다.

 

예를 들어, 다음 어셈블리 명령어의 실제 MIPS의 언어 버전을 십진수와 이진수의 형태로 표현하면 다음과 같습니다.

$$add \, \$t0,\$s1,\$s2$$

<십진수 표현법>

0 17 18 8 0 32

<이진수 표현법>

000000 10001 10010 01000 00000 100000

*세부 설명은 MIPS 명령어 필드 설명 부분에서 진행하겠습니다.

 

위 예제에서 보인 레이아웃을 명령어 형식(instruction format)이라고 합니다. MIPS 명령어 길이는 데이터 워드와 마찬가지로 32비트이며, "간단하게 하기 위해서는 규칙적인 것이 좋다" 라는 설계 원칙에 따라 모든 MIPS 명령어는 32비트 입니다.

 

어셈블리 언어와 구별하기 위하여 명령어를 숫자로 표현한 것을 기계어(machine language)라고 하고, 이런 명령어들의 시퀀스를 기계 코드(machine code)라 합니다.

 

16진수 2진수 16진수 2진수
1 0001 a 1010
2 0010 b 1011
3 0011 c 1100
4 0100 d 1101
5 0101 e 1110
6 0110 f 1111
7 0111    
8 1000    
9 1001    

모든 컴퓨터의 데이터 길이는 4의 배수이므로 16진수(hexadecimal)가 많이 사용됩니다. 기수 16은 2의 멱승이므로 이진수 4비트를 16진수 숫자 하나로 쉽게 바꿀 수 있으며, 그 반대도 마찬가지 입니다. 

 

 

MIPS 명령어 필드

op rs rt rd shamt funct
더보기

     6bits                       5bits                          5bits                           5bits                             5bits                           6bits

  • op: 명령어가 실행할 연산의 종류로서, 연산자(opcode)라고 부릅니다.
  • rs: 첫 번째 근원지(source) 피연산자 레지스터를 의미합니다.
  • rt: 두 번째 근원지 피연산자 레지스터를 의미합니다.
  • td: 목적지(destination) 레지스터를 의미합니다. 연산 결과가 기억됩니다.
  • shamt: 자리이동(shift)량을 의미합니다.
  • funct: 기능(function)을 의미합니다. op 필드에서 연산의 종류를 표시하고 funct 필드에서 연산을 구체적으로 지정합니다.

5비트 필드로는 부족한 경우가 있을 수 있습니다. 설계원칙 4번 "좋은 설계에는 적당한 철충이 필요하다." 라는 원칙에 의거하여 MIPS 설계자들이 택한 절충안은 모든 명령어의 길이를 같게 하되, 명령어 종류에 따라 형식은 다르게 하는 것이었습니다. 위와 같은 명령어 형식을 R타입 또는 R 형식(R은 Register를 의미합니다.)이라 하며, 이것만으로는 불충분하기 때문에 I 타입 또는 I 형식(I는 immediate)라는 명령어 형식을 만들었습니다. I 타입은 수치 연산과 데이터 전송 명령어에서 사용되며 그 모양은 다음과 같습니다.

op rs rt constant or address

각 필드는 6bits, 5bits, 5bits, 16bits입니다. I - 형식의 명령어에서는 rt필드의 의미가 바뀌어 적재 결과가 들어갈 목적지 레지스터 번호를 표시하는 것으로 바뀌었습니다.

 

명령어 형식이 여러가지가 되면서 하드웨어는 복잡해지지만 모든 형식을 유사하게 함으로써 복잡도를 낮출 수 있었습니다.

+ Recent posts