๐ง ๊ณฑ์
๊ณฑ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ํตํด ๊ณ์ฐ๋ฉ๋๋ค.
์ฒซ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ ํผ์น์(multiplicand)๋ผ๊ณ ๋ถ๋ฅด๊ณ , ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ ์น์(multiplier)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ต์ข ๊ฒฐ๊ณผ๋ ๊ณฑ(product)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ฃผ๋ชฉํ ์ ์ ๊ณฑ์ ์ ์ต์ข ๊ฒฐ๊ณผ์ ์๋ฆฟ์๊ฐ ํผ์น์๋ ์น์์ ๋น๊ตํ์ฌ ์๋นํ ํฌ๋ค๋ ๊ฒ์ ๋๋ค.
๋ถํธ ๋นํธ๋ฅผ ๋ฌด์ํ๋ค๋ฉด n๋นํธ์ ํผ์น์์ ๋ํ m๋นํธ ์น์์ ๊ณฑ์ ๊ฒฐ๊ณผ๋ n + m ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ต๋๋ค.
๊ฒฐ๊ตญ ๋ชจ๋ ๊ฐ๋ฅํ ๊ณฑ์ ํํํ๊ธฐ ์ํด์๋ n + m ๋นํธ๊ฐ ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ ๋ง์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค๋ฒํ๋ก์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฐ์ ์ดํ ์๊ฐํ๋๋ก ํ๊ณ , ์ด์ง์ ๊ณฑ์ ์ ๊ณผ์ ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง ๊ณฑ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ์์ด๋์ด
์น์๋ 64๋นํธ ์น์ ๋ ์ง์คํฐ์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ, 128๋นํธ ๊ฒฐ๊ณผ ๋ ์ง์คํฐ๋ 0์ผ๋ก ์ด๊ธฐํ๋์ด์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
๊ณฑ์ ์ ๋งค ๋จ๊ณ๋ง๋ค ํผ์น์๋ฅผ ์ผ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์ด๋์ํค๊ณ , ํ์ํ๋ฉด ์ค๊ฐ ๊ฒฐ๊ณผ์ ๋ํด์ฃผ๋ ์์ผ๋ก ๊ณ์ฐ๋์ด์ผ ํฉ๋๋ค.
๋ํ ์น์๋ ๋งค ๋จ๊ณ๋ง๋ค ์ค๋ฅธ์ชฝ์ผ๋ก ์ด์ด์ฃผ์ด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ 64๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด 64๋นํธ ํผ์น์๊ฐ ์ผ์ชฝ์ผ๋ก 64๋ฒ ์ด๋ํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ 128๋นํธ ํผ์น์ ๋ ์ง์คํฐ๊ฐ ํ์ํฉ๋๋ค.
์ด ๋ ์ง์คํฐ์ ์ค๋ฅธ์ชฝ ์ ๋ฐ์ 64๋นํธ ํผ์น์๋ก, ์ผ์ชฝ ์ ๋ฐ์ 0์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
์ด ๋ ์ง์คํฐ๋ 128๋นํธ ๊ฒฐ๊ณผ ๋ ์ง์คํฐ์ ์ถ์ ๋๋ ํฉ๊ณผ ํผ์น์์ ์์น๋ฅผ ๋ง์ถ๊ธฐ ์ํด ๋งค ๋จ๊ณ๋ง๋ค 1๋นํธ ์ผ์ชฝ์ผ๋ก ์๋ฆฌ์ด๋ํฉ๋๋ค.
์๋๋ ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ ผ๋ฆฌ๋์ ๋๋ค.
์๋๋ ์๋ฅผ ๊ตฌํํ ๋ ผ๋ฆฌํ๋ก์ ๋๋ค.
โญ๏ธ ์์
๊ฐ๋จํ ๊ณฑ์ ์์๋ฅผ ํตํด ๊ณผ์ ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐ๋ณต | ๋จ๊ณ | ์น์ | ํผ์น์ | ๊ฒฐ๊ณผ | |
0 | ์ด๊ธฐ๊ฐ | 0011 | 0000 0010 | 0000 0000 | |
1 | [์น์]์ LSB๊ฐ [1]์ด๋ฏ๋ก [ํผ์น์ + ๊ฒฐ๊ณผ] | 0011 | 0000 0010 | 0000 0010 | |
[ํผ์น์]๋ฅผ [์ผ์ชฝ]์ผ๋ก 1์นธ Shift | 0011 | 0000 0100 | 0000 0010 | ||
[์น์]๋ฅผ [์ค๋ฅธ์ชฝ]์ผ๋ก 1์นธ Shift | 0001 | 0000 0100 | 0000 0010 | ||
2 | [์น์]์ LSB๊ฐ [1]์ด๋ฏ๋ก [ํผ์น์ + ๊ฒฐ๊ณผ] | 0001 | 0000 0100 | 0000 0110 | |
[ํผ์น์]๋ฅผ [์ผ์ชฝ]์ผ๋ก 1์นธ Shift | 0001 | 0000 1000 | 0000 0110 | ||
[์น์]๋ฅผ [์ค๋ฅธ์ชฝ]์ผ๋ก 1์นธ Shift | 0001 | 0000 1000 | 0000 0110 | ||
3 | [์น์]์ LSB๊ฐ [0]์ด๋ฏ๋ก [์ํ X] | 0000 | 0000 1000 | 0000 0110 | |
[ํผ์น์]๋ฅผ [์ผ์ชฝ]์ผ๋ก 1์นธ Shift | 0000 | 0001 0000 | 0000 0110 | ||
[์น์]๋ฅผ [์ค๋ฅธ์ชฝ]์ผ๋ก 1์นธ Shift | 0000 | 0001 0000 | 0000 0110 | ||
4 | [์น์]์ LSB๊ฐ [0]์ด๋ฏ๋ก [์ํ X] | 0000 | 0001 0000 | 0000 0110 | |
[ํผ์น์]๋ฅผ [์ผ์ชฝ]์ผ๋ก 1์นธ Shift | 0000 | 0010 0000 | 0000 0110 | ||
[์น์]๋ฅผ [์ค๋ฅธ์ชฝ]์ผ๋ก 1์นธ Shift | 0000 | 0010 0000 | 0000 0110 |
๐ง ๊ณฑ์ ์ธ์คํธ๋ญ์
RISC-V ์์๋ mul, mulh(multuply high), mulhu(multuply high unsigned),mulhsu(multuply high signed-unsigned) ์ ๋ค ๊ฐ์ง ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ถํธ์๋, ๋๋ ๋ถํธ์๋ 64๋นํธ ๊ณฑ์ ๊ตฌํฉ๋๋ค.
h๊ฐ ๋ถ์ ๊ฒ๋ค์ ๊ณฑ์ ์ ๊ฒฐ๊ณผ ์์ 64๋นํธ๋ฅผ ์ป๊ธฐ ์ํ์ฌ ์ฌ์ฉ๋๊ณ , ๋ถ์ง ์์ ๊ฒ๋ค์ ํ์ 64๋นํธ๋ฅผ ์ป๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
๋ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ๋ถํธ์๋ ์๋ผ๋ฉด u, ํ์ชฝ์ ๋ถํธ๊ฐ ์๊ณ ๋ค๋ฅธ ํ์ชฝ์ ๋ถํธ๊ฐ ์๋ค๋ฉด su๋ฅผ ์ฌ์ฉํฉ๋๋ค.