MIPS란? 개념 정리



1. MIPS(Microprocessor without Interlocked Pipeline Stages)란?

1.1. 특징

image mips32 Instruction

  • MIPS(Microprocessor without Interlocked Pipeline Stages)란 MIPS Technologies에서 개발한 RISC 기반의 명령어 집합 체계(Instruction Set Architecture)입니다.
  • RISC1 방식 중에 많이 사용되는 ISA 중 하나입니다. 다른 RISC 로 많이 사용되는 ISA는 ARM 이 있습니다.

1.2. 명령어

MIPS 명령어 체계는 3가지 종류의 명령어로 구성되어 있습니다.

  • R type: c = a + b와 같은 연산을 할 때, 2개의 레지스터 값을 이용하여 연산을 한 다음, 다른 레지스터에 연산한 값을 기록한다. 연산을 하는데 사용되는 레지스터는 각각 rs(register source의 약자), rt(register target의 약자)라고 칭하며, 값은 rd(register direction의 약자)에 저장합니다.
  • I type: R type처럼 두 값을 이용해 연산을 한 다음 다른 하나의 레지스터에 저장을 하지만, 연산할 값을 하나는 레지스터에서 가져오고 다른 하나는 레지스터가 아니라 지정된 임의의 값을 사용합니다. R type 명령어에 있는 약자인 rs와 rt를 그대로 사용하며, 이때 사용되는 임의의 값은 immediate(줄여서 imm이라고도 하며, 즉시값이라고도 부른다)로 이며, 계산은 rt = rs + imm와 같은 형태로 이루어집니다.
  • J type: 무조건 분기 명령어로, 특정 메모리 주소로 바로 이동이 필요한 경우에 사용합니다.

MIPS 16비트 체계에서의 명령어 구성과 예시는 아래와 같습니다.

1.2.1. MIPS 16bit 명령어 구성 방식

R타입 명령어
4bit opcode
3bit rs
3bit rt
3bit rd
3bit funct
I타입 명령어
4bit opcode
3bit rs
3bit rt
6bit immediate
J타입 명령어
4bit opcode
12bit address

1.2.2. MIPS 16bit R타입 명령어 예시

0번 레지스터의 값 +  1번 레지스터의 값 = 2번 레지스터에 값 
R타입 명령어
4bit opcode
3bit rs
3bit rt
3bit rd
3bit funct
0000
000
001
010
000
  • opcode2 : R타입 명령어의 opcode 값은 0이므로 앞의 4bit는 0
  • rs, rt, rd : 사용한 레지스터의 값
  • funct : 실행할 연산인 덧셈의 값인 000

2. MIPS(million instructions per second)란?

2.1. 특징

  • 초당 명령 수(Instructions per second, IPS)는 컴퓨터의 프로세서 속도 측정 단위입니다. IPS는 단위 시간당 처리할 수 있는 명령어를 뜻합니다.
  • IPS 종류와 특성은 아래와 같습니다.
    • TIPS(팁스, thousand instructions per second) : 컴퓨터가 1초 동안 천개(thousand)의 명령을 처리할 수 있는 능력
    • MIPS(밉스, million instructions per second) : 컴퓨터가 1초 동안 백만개(million)의 명령을 처리할 수 있는 능력
    • GIPS(깁스, billion instructions per second) : 컴퓨터가 1초 동안 십억개(billion)의 명령을 처리할 수 있는 능력
  • 유사한 용어로 CPI(Cycle Per Instruction)가 있으며 이는 명령어 당 평균 소요 사이클(사이클/개)이며, IPS의 역수값입니다.
  • 명령어 별 특성은 고려되지 않고 있다는 한계점이 있습니다. 슈퍼 컴퓨터에서는 부동 소수점 명령어가 1초에 몇번 실행될 수 있는가를 나타내는 단위로 FLOPS를 연산속도의 단위로 많이 사용합니다.

2.1. 계산식

\[\text{IPS} = \text{Core number} \times \text{Clock} \times \frac{ \text{1} } {\text{Clock for 1 Instruction}}\]

출처

  1. RISC (Reduced Instruction Set Computer)는 프로그램에서 자주 사용되는 명령어만 효율적으로 구현하여 프로세서를 단순화하고, 덜 일반적인 작업은 서브 루틴으로 구현하여 드물게 사용하였습니다. 이를 통하여 H/W 구조를 단순하게 하였습니다. 반대 개념으로 많이 사용되는 개념인 복잡한 명령어 세트 컴퓨터 (CISC)에는 많은 특수 명령어가 있으며, 그 중 일부는 실제 프로그램에서 거의 사용되지 않을 수 있습니다. H/W가 복잡하지만, 특정 명령에 대하여 최적화되어 설계되는 경우에는 속도가 RISC보다 훨씬 더 빠를 수 있습니다. 

  2. opcode는 해당 명령어가 실행할 연산의 종류를 정의하는 code입니다.