본문 바로가기
Computer/컴퓨터구조

[컴퓨터구조] Instructions, RISC-V(3): 명령어의 컴퓨터 내부 표현

by 거부기씨 2024. 5. 29.
728x90
반응형

명령어도 컴퓨터 내부에서는 높고 낮은 전기 신호의 연속으로 저장되므로 숫자로 표현할 수 있다.

 

RISC-V의 명령어의 길이는 워드 길이인 32비트이다. 모든 RISC-V 명령어는 예외 없이 32비트이다.

 

명령어를 숫자로 나타내어 보자.

add x9, x20, x21
0000000 10101 10100 000 01001 0110011

 

이렇게 명령어를 이진수의 필드로 구성하는 표현 형식을 명령어 형식(instruction format)이라고 하고, 이렇게 명령어를 숫자로 표현하는 것을 기계어(machine language)라고 한다. 이런 명령어들의 sequence를 machine code라고 한다. 

 

instruction format에 대해 더 알아보자.

 

1. RISC-V 명령어의 필드

RISC-V 명령어의 각 필드에는 명칭이 붙어 있다.

funct7 (7 bits) rs2 (5 bits) rs1 (5 bits) funct3 (3 bits) rd (5 bits) opcode (7 bits)

 

  • opcode: 명령어가 실행할 연산의 종류. 연산자.
  • rd: 목적지 레지스터. 연산 결과가 기억된다.
  • funct3: 추가 opcode field
  • rs1: 첫 번째 register source operand
  • rs2: 두 번째 register source operand
  • funct7: 추가 opcode field

산술 연산자에서는 위와 같은 instruction format이 잘 적용되지만, lw나 addi와 같은 명령어에서는 이를 사용하기에 한계가 있다. RISC-V에서는 모든 명령어의 길이를 같게 하되, 명령어 종류에 따라 형식을 다르게 한다. 예를 들어 위의 instruction format은 R-type이다. 이 형식에 대해 더 자세히 살펴보자.

 

1) R-type

funct7 (7 bits) rs2 (5 bits) rs1 (5 bits) funct3 (3 bits) rd (5 bits) opcode (7 bits)


2) I-type

상수 피연산자 하나를 갖는 산술 연산 명령어나 적재 명령어에 사용된다.

immediate (12 bits) rs1 (5 bits) funct3 (3 bits) rd (5 bits) opcode (7 bits)

 

3) S-type

2개의 source register와 주소 offset을 위한 immediate field가 필요한 저장 명령어(sw)를 위해서 사용된다.

immediate[11:5] (7 bits) rs2 (5 bits) rs1 (5 bits) funct3 (3 bits) immediate[4:0] (5 bits) opcode (7 bits)

 

12비트의 immediate는 하위 5비트, 상위 7비트로 나누어지는데, 이는 모든 명령어 형식에서 rs1, rs2 필드의 위치를 같게 하기 위해서이다.

 

2. RISC-V 어셈블리 언어를 기계어로 번역

프로그래머가 작성하는 것부터 컴퓨터가 실행하는 것까지 모든 과정을 다뤄보자.

 

먼저 다음 C 문장을 살펴보자.

A[30] = h + A[30] + 1;

 

이 C 문장은 아래와 같이 컴파일 된다.

lw x9, 120(x10)
add x9, x21, x9
addi x9, x9, 1
sw x9, 120(x10)

 

이 네 명령어에 해당하는 RISC-V machine language를 살펴보자. 편의를 위해 기계어 명령어를 십진수로 표현해보자.

 

 

rs1이 같은 위치에서 나타나는 것을 확인할 수 있다.

 

이진수로 표현해 기계어를 확인해보자.

 

명령어의 각 요소가 field와 어떻게 매칭되는지 확인해보자.

추가적으로, addi의 경우 immediate 값 120을 2^5로 나눠 상위 7 비트와 하위 5 비트로 분리할 수 있다. 상위 7비트에는 몫 3이 들어가고, 하위 부분에는 나머지 24가 들어간다.

728x90
반응형