Skip to the content.

FMSUB

Summary

FMSUB는 Floating-point Multiply-Subtract (부동소수점 곱하고 빼기)의 약자입니다.


1. FMSUB 명령어의 본질과 공식

FMSUB는 앞서 배운 FMADD와 마찬가지로 일반 사무직(낱개 레지스터, S나 D) 소속입니다. 단 한 줄, 단 1클럭 만에 두 실수를 곱한 뒤 다른 수에서 빼버리는 마법을 부리는데, 공식이 아주 독특합니다.

FMSUB S0, S1, S2, S3 ; S1과 S2를 곱한 값을 ‘S3에서 빼서’ S0에 저장해라!

⚠️ 주의! 뒤에서 앞으로 뺍니다! 보통 Subtract라고 하면 (S1 * S2) - S3 일 것 같지만, 하드웨어 규칙은 맨 뒤에 있는 레지스터(S3)에서 곱한 결과값을 빼는 구조입니다. 이 순서를 거꾸로 생각해서 코드를 분석하면 완전히 엉뚱한 결론이 나기 때문에, 꼭 기억해야 할 핵심 포인트.


2. 🔄 혼동 방지! FMSUB vs FMLS 전격 비교 판넬


3. 언제 주로 사용하나요?

수학 공식이나 물리 법칙을 컴퓨터 코드로 옮기다 보면 “어떤 기준값에서 오차나 변화량을 빼는 구조”인 $Y = C - (A \times B)$ 형태를 정말 자주 만나게 됩니다.

만약 FMSUB 명령어가 없다면 CPU는 곱하기(FMUL) 따로 하고, 부호 바꾸고(FNEG), 더하기(FADD) 하는 번거로운 과정을 거쳐야 하지만, FMSUB 한 줄이면 하드웨어 융합 회로가 오차(반올림 에러)를 단 1회로 줄이면서 빛의 속도로 계산을 끝내줍니다.

🧱 융합 연산(Fused) 최종 마침표 판넬

4대 천왕을 깔끔한 공식

니모닉 소속 무대 실제 작동하는 수학 공식 하드웨어 내부의 비밀 포인트
FMADD 일반 레지스터 (S, D) $Xd = (Xn \times Xm) + Xa$ 곱하고 더하기 (가장 널리 쓰이는 기본형)
FMSUB 일반 레지스터 (S, D) $Xd = Xa - (Xn \times Xm)$ 뒤의 값(Xa)에서 곱한 값을 빼는 반전 구조!
FMLA SIMD 벡터 레지스터 (V) $Vd = Vd + (Vn \times Vm)$ 대량의 데이터를 동시에 곱하고 누적 더하기
FMLS SIMD 벡터 레지스터 (V) $Vd = Vd - (Vn \times Vm)$ 대량의 데이터를 동시에 곱하고 누적 빼기