처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.05.21 81

RISC-V의 부동소수점 연산, 왜 이렇게 설계됐을까

Hacker News 원문 보기
RISC-V의 부동소수점 연산, 왜 이렇게 설계됐을까

부동소수점, 왜 또 이야기하나요?

요즘 RISC-V가 임베디드부터 서버까지 안 들어가는 데가 없는데요. ARM이나 x86에 익숙한 분들이 RISC-V를 들여다보면 가장 먼저 헷갈리는 부분 중 하나가 바로 부동소수점(Floating-Point) 처리거든요. "실수(소수점 있는 숫자) 계산하는 거 다 똑같은 거 아니야?" 싶지만, RISC-V는 이 부분을 꽤 독특하게 풀어놨어요. 그래서 오늘은 RISC-V가 부동소수점을 어떻게 다루는지, 왜 그렇게 설계했는지 차근차근 풀어볼게요.

부동소수점이 뭐냐면, 3.14 같은 소수점이 있는 숫자를 컴퓨터가 표현하는 방식이에요. IEEE 754라는 국제 표준이 있어서 대부분의 CPU가 이걸 따르는데, 같은 표준이라도 "어떻게 명령어를 만들고, 어떤 레지스터(CPU 안의 임시 저장소)를 쓸지"는 칩 설계자 마음이거든요. RISC-V는 여기서 모듈식 접근을 택했어요.

RISC-V만의 접근법: 필요한 만큼만 가져다 쓰세요

RISC-V는 부동소수점 기능을 통째로 강제하지 않아요. 대신 확장(extension)이라는 형태로 나눠놨는데, 단정밀도(32비트)는 F, 배정밀도(64비트)는 D, 4배 정밀도는 Q, 그리고 최근에 추가된 반정밀도(16비트)는 Zfh로 부르거든요. 작은 마이크로컨트롤러 만드는 회사는 F만 넣고, 서버 칩 만드는 회사는 D나 Q까지 다 넣는 식이에요. "필요 없으면 빼라"는 철학이 여기서도 그대로 적용된 거죠.

레지스터 구조도 흥미로워요. ARM은 정수 레지스터와 부동소수점 레지스터를 칸막이 없이 섞어 쓰는 설계도 있는데, RISC-V는 f0부터 f31까지 32개의 별도 부동소수점 레지스터를 두고 정수 레지스터와 완전히 분리시켰어요. 이렇게 하면 컴파일러가 코드를 만들 때 "이 값은 어디 두지?" 고민이 줄어들고, 하드웨어도 두 연산을 병렬로 처리하기 쉬워져요.

또 하나 재밌는 게 NaN 박싱(NaN-boxing)이에요. NaN은 "Not a Number"의 약자인데, 0으로 나누기 같은 잘못된 연산 결과를 표현하는 특별한 값이거든요. RISC-V에서는 32비트 단정밀도 값을 64비트 레지스터에 넣을 때 위쪽 32비트를 NaN 패턴으로 채워요. 이러면 64비트 명령어가 실수로 32비트 값을 읽었을 때 "어, 이거 NaN이네" 하고 바로 알 수 있어요. 사고를 사고로 만들어버리는 안전장치 같은 거죠.

반올림 모드와 예외 처리, 디테일이 살아있어요

부동소수점 연산을 하다 보면 결과가 정확히 맞아떨어지지 않을 때가 많아요. 1/3 같은 거요. 이때 어떻게 반올림할지가 중요한데, RISC-V는 명령어 안에 반올림 모드를 직접 박아넣을 수 있게 해줬어요. 매번 모드 레지스터를 바꾸지 않아도 "이번 곱셈은 0 방향으로 잘라라" 같은 지시를 한 번에 줄 수 있어요. 수치 해석이나 머신러닝처럼 정밀도가 중요한 작업에서 큰 차이를 만들어내는 부분이에요.

예외 처리도 다른 아키텍처들과 달라요. x86은 부동소수점 예외가 발생하면 인터럽트(처리 흐름을 끊고 다른 코드로 점프)를 일으키는 게 기본인데, RISC-V는 기본적으로 플래그만 세팅하고 계속 진행해요. 성능 손실을 최소화하면서, 필요하면 나중에 모아서 확인할 수 있게 한 거예요.

업계 맥락에서 보면

ARM이 NEON과 SVE로 SIMD를 강하게 밀고 있는 반면, RISC-V는 V 확장(벡터 확장)으로 가변 길이 벡터 처리를 시도하고 있어요. 이게 부동소수점과 결합되면 GPU에 가까운 연산도 표준 ISA(명령어 집합) 안에서 가능해지거든요. 인텔의 AVX-512가 "폭이 정해진 트럭"이라면, RISC-V V는 "길이를 그때그때 늘릴 수 있는 컨베이어 벨트" 같은 느낌이에요.

한국 개발자에게는?

임베디드 펌웨어 만드시는 분이라면, RISC-V 칩 고를 때 F/D 확장 지원 여부를 꼭 보세요. 없으면 소프트웨어로 부동소수점을 흉내내는 라이브러리가 들어가서 코드 크기와 속도가 확 달라져요. AI 가속기나 칩 설계 쪽에 관심 있다면, RISC-V의 모듈식 접근은 "우리 도메인에 딱 맞는 ISA를 만들 수 있다"는 가능성을 보여주는 좋은 사례예요.

한 줄로 정리하면, RISC-V의 부동소수점은 "표준을 지키되 강요하지 않는다"는 철학이 가장 잘 드러나는 부분이에요. 여러분은 부동소수점 연산이 중요한 프로젝트를 진행할 때, ARM이나 x86 대신 RISC-V를 선택지에 올려본 적 있으신가요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.