YYYEJI

[MIPS] Multiplication in MIPS 본문

Computer architectures

[MIPS] Multiplication in MIPS

YEJI ⍢ 2022. 10. 20. 19:33
728x90

MIPS version 곱셈 연산을 알아보기 전에 곱셈 format을 살펴보겠습니다.

 

0010          # multiplicand

X 1001          # multiplier        

----------------------------------

0010010         # product            

 

본격적으로 MIPS 곱셈 수행 방식을 알아보겠습니다.

 

MIPS는 곱셈을 하는데 있어서 하드웨어를 줄이는 방법으로 발전해 왔습니다.

(In MIPS, Multiplier은 계속 오른쪽으로 shift 시키기 때문에 생략하겠습니다.)

Version 1

Multiplicand를 왼쪽으로 움직이고, 

product는 움직이지 않습니다.

(Using shift left logic)

 

Version2

Multiplicand와 product를 상대적으로 생각해서 

Multiplicand는 움직이지 않고

Product를 오른쪽으로 움직입니다.

(Using shift right logic)

 

Version3

Multiplier가 Product와 같은 방향으로 움직이기 때문에 

Multiplier와 Product를 하나의 hardware로 바꿉니다.

(MIPS의 목표를 이루고 있죠)

version1  → version2  → version3

지금 사용되는 방법은 version3입니다.

 

두 가지 방법이 있습니다.

 

첫 번째 방법은 아래와 같습니다.

Multiplicand 전체와 muliplier의 bit 하나씩 bit-and 연산을 수행해줍니다.

      0 0 1 0 Multiplicand
      1 0 0 1 multiplier
      0 0 1 0 0010 & 1
    0 0 0 0 sll 0010 & 0
  0 0 0 0 sll   0010 & 0
0 0 1 0 sll     0010 & 1
0 0 1 0 0 1 0 product

✓ 여기서 한 번 수행할 때마다 Shift left logic(sll)을 수행해줘야 됩니다.

bit-and 연산이 끝나면 bit를 세로로 하나씩 더해줍니다.

 

 

 

두 번째 방법은 아래와 같습니다.

Multiplicand 0 0 1 0          
product 0 0 0 0 1 0 0 1 Add
  0 0 1 0 1 0 0 1 Shift
  0 0 0 1 0 1 0 0 Shift
  0 0 0 0 1 0 1 0 Shift
  0 0 0 0 0 1 0 1 Add
  0 0 1 0 0 1 0 1 Shift
  0 0 0 1 0 0 1 0  

✓ Product의 마지막 bit를 확인해서 1이면 add and shift,

  Product의 마지막 bit를 확인해서 0이면 shift만 수행합니다. 

(srl - shift right logical)

 

 

 

아래와 같이 연산을 수행하면 됩니다.

 

 

 

Q) 음수 2진수 곱셈은 어떻게 하나요?

 

A) 우선 곱셈을 할 때 부호를 고려하지 않고 곱셈을 수행하고 마지막에 

부호에 따라 - 를 붙여주면 됩니다.

 

(-7) X (3)의 경우 7X3을 해주고 결과에 -를 붙여줍니다.

 

 

 

◡̈