[컴퓨터 구조] MIPS instructions

October 06, 2023


ISA란?

Instruction set architecture로 한글로 번역하면 "명령어 집합 구조"입니다.

ISA는 최하위 레벨의 프로그래밍 인터페이스로 명령어, 레지스터, 메모리 접근, I/O 등 기계어를 작성하는데 필요한 모든 정보를 포함합니다.

d

하드웨어의 최상위단과 소프트웨어의 최하위단의 추상화된 interface입니다.

그래서 ISA는 HW와 SW 사이에서 서로를 분리시키는 관문 역할을 수행한다고 말할 수 있습니다.

MIPS ISA

MIPS 아키텍쳐의 ISA를 살펴보면 다음과 같이 명령어를 나눌 수 있습니다.

이 글 이후로는 모두 MIPS 아키텍처에 대해 설명하고 있습니다.

카테고리별 명령어

카테고리 설명
Computational 계산 연산 (산술, 논리, 비교)
Load / Store 메모리의 데이터 접근
Jump and Branch 흐름 제어 (이동 / 분기)
Floating Point 실수 연산 (부동 소수점)
Memory Management 메모리 관리
Special

MIPS 레지스터

register

MIPS Register 정리

Instruction formats

MIPS 아키텍처의 명령어 format의 길이는 고정된 32bit이지만 format에 따라 bit 수와 개수를 다르게 나눠서 사용합니다.

명령어 형식은 R, I, J 총 3개의 형식이 있습니다.

Instruction-formats-for-MIPS-architecture-1

왜 이렇게 나누어서 사용할까요? 이 점을 알기 위해서 다음 철학을 살펴봅시다.

R 포맷

R

  • Register
  • 레지스터 2개를 사용한 산술, 논리, 비교 명령어
  • R 포맷은 opcode가 0임
Field name Bits 설명
op 6 연산에 대한 opcode
rs 5 source register
rt 5 source register
rd 5 destination register
shamt 5 shift amount, shift 연산을 얼마나 할 것인지 저장
funct 6 opcode 확장용 function code
  • 예시

funct, rd, rs, rt 순서

sub $t0, $s1, $s2

레지스터 s1과 s2의 값을 빼서 t0에 저장하는 코드입니다. 이를 32bit 명령어로 나태내면 다음과 같습니다.

op rs rt rd shamt funct
0 01111 01100 00100 0 0x22

I 포맷

I

  • Immediate
  • 상수를 바로 사용하기 때문에 메모리에서 상수를 로드하고 레지스터를 사용하여 저장하는 방식보다 빠름
  • 하나의 레지스터 피연산자와 하나의 상수 피연산자가 있는 산술, 논리, 비교 명령어
  • sign-extended when used (replicate msb)
Field name Bits 설명
op 6 연산에 대한 opcode
rs 5 source register
rt 5 destination register
immed 16 constant로 offset 기능을 함
가능한 범위는 ± 2^15
  • 예시

opcode rt, rs 순

lw  $t0, 24($s3)

레지스터 s3의 값이 8이라고 하면

op rs rt immed
100011 10010 01000 0000000000011000

레지스터 s3에서 저장된 값인 8을 가져와 24를 더하고 그 값인 32는 메모리 주소를 의미

즉, 메모리의 (s3 + 24) 번지인 32번지의 값을 읽어와 레지스터 t0에 저장하는 코드

J 포맷

J

1개의 피연산항만이 필요합니다. 분기 명령어에 사용하는 명령어 포맷입니다.

  • Jump

branch 정리

참고

Computer Organization and Design 5th Edition. The Hardware/Software Interface / 저자 : David A. Patterson, John L. Hennessy

https://courses.cs.washington.edu/courses/cse378/02au/Lectures/05computationalI.pdf


Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby