CORDIC 알고리즘은 FPGA뿐만 아니라 게임 개발이나 분산 물리 시뮬레이션 등에도 활용 가능함. 부동 소수점 계산은 플랫폼 간 결정론적 동작을 보장하기 어려운데, 고정 소수점 물리 엔진을 구현하고 CORDIC으로 삼각 함수를 구현하는 것이 한 가지 해결책이 될 수 있음.
CORDIC은 사인, 코사인 뿐만 아니라 로그, 지수, 제곱근, 벡터 크기, 극좌표-직교좌표 변환, 벡터 회전 등 다양한 연산에 활용 가능함. 사원수(쿼터니언)를 이용하면 CORDIC 기반 연산을 더 효율적이고 정확하게 수행할 수 있을 것으로 보임.
고등학교 예비 미적분 수업에서 계산기의 삼각함수 구현에 대해 배웠는데, 테일러 급수가 아니라 사실은 CORDIC이었다는 것을 알고 TI Basic으로 직접 구현해 본 경험담 공유.
2023년 현재 STM32G4 같은 저가형 MCU에도 FPU가 내장되어 있어서 고정 소수점 대신 부동 소수점을 자유롭게 쓸 수 있음. 하지만 G4에는 전용 하드웨어로 구현된 CORDIC 주변장치도 있는데, 이는 부동 소수점 정밀도 손실을 피하기 위한 것으로 보임.
22.75° 회전은 45° 회전 후 -22.5° 회전과 같다는 설명에 오류가 있는 것 같음. 22.5°가 맞는 것 같음.
Meagher의 옥트리 시스템은 정수 곱셈/나눗셈 없이 정수 연산만으로 구현되었음. 이는 옥트리 표현을 위한 빠르고 주문 제작된 VLSI 그래픽 가속 하드웨어 제작을 용이하게 함.
CORDIC은 각도에 대한 Farey 수열(또는 mediant, naive 분수 합)과 비슷한 개념으로 볼 수 있음.
CORDIC은 4비트 CPU를 탑재한 빈티지 프로그래머블 HP 계산기에서도 구현되었음. 사인 함수의 테일러 전개를 이용한 근사법도 프로그래밍 가능함.
이 글이 마음에 들었다면 수학 알고리즘을 예제와 함께 설명한 도널드 커누스의 명저 "The Art of Computer Programming"을 읽어보는 것도 좋음.
Hacker News 의견
CORDIC 알고리즘은 FPGA뿐만 아니라 게임 개발이나 분산 물리 시뮬레이션 등에도 활용 가능함. 부동 소수점 계산은 플랫폼 간 결정론적 동작을 보장하기 어려운데, 고정 소수점 물리 엔진을 구현하고 CORDIC으로 삼각 함수를 구현하는 것이 한 가지 해결책이 될 수 있음.
CORDIC은 사인, 코사인 뿐만 아니라 로그, 지수, 제곱근, 벡터 크기, 극좌표-직교좌표 변환, 벡터 회전 등 다양한 연산에 활용 가능함. 사원수(쿼터니언)를 이용하면 CORDIC 기반 연산을 더 효율적이고 정확하게 수행할 수 있을 것으로 보임.
고등학교 예비 미적분 수업에서 계산기의 삼각함수 구현에 대해 배웠는데, 테일러 급수가 아니라 사실은 CORDIC이었다는 것을 알고 TI Basic으로 직접 구현해 본 경험담 공유.
2023년 현재 STM32G4 같은 저가형 MCU에도 FPU가 내장되어 있어서 고정 소수점 대신 부동 소수점을 자유롭게 쓸 수 있음. 하지만 G4에는 전용 하드웨어로 구현된 CORDIC 주변장치도 있는데, 이는 부동 소수점 정밀도 손실을 피하기 위한 것으로 보임.
22.75° 회전은 45° 회전 후 -22.5° 회전과 같다는 설명에 오류가 있는 것 같음. 22.5°가 맞는 것 같음.
Meagher의 옥트리 시스템은 정수 곱셈/나눗셈 없이 정수 연산만으로 구현되었음. 이는 옥트리 표현을 위한 빠르고 주문 제작된 VLSI 그래픽 가속 하드웨어 제작을 용이하게 함.
CORDIC은 각도에 대한 Farey 수열(또는 mediant, naive 분수 합)과 비슷한 개념으로 볼 수 있음.
CORDIC은 4비트 CPU를 탑재한 빈티지 프로그래머블 HP 계산기에서도 구현되었음. 사인 함수의 테일러 전개를 이용한 근사법도 프로그래밍 가능함.
이 글이 마음에 들었다면 수학 알고리즘을 예제와 함께 설명한 도널드 커누스의 명저 "The Art of Computer Programming"을 읽어보는 것도 좋음.
CORDIC은 예전 DSP 분야에서 큰 인기를 끌었던 알고리즘임.
멋진 알고리즘이며, 낮은 성능의 하드웨어에서 신경망을 실행하는 데에 유용할 것 같음.