GN⁺: 정수 제곱근 명령어를 구현한 프로세서가 있나요?
(retrocomputing.stackexchange.com)정수 제곱근 명령어를 구현한 프로세서가 있었나요?
- Harris RTX 2000 Forth CPU는 다단계 정수 제곱근 명령어를 제공했음.
- ENIAC은 특별한 분할기/제곱근 계산기를 사용하여 초당 최대 3번의 제곱근 연산을 수행했음.
- 정수 제곱근을 계산하는 가장 효율적인 방법은 뉴턴-랩슨 반복을 사용하여 역수(1/√x)를 계산한 다음 원래 수와 곱하는 것임.
- ARMv8의
frsqrte
와frsqrts
와 같은 현대 CPU와 GPU에서 사용되는 명령어들은 초기 추정치를 계산하고 반복적으로 정밀도를 높이는 데 사용됨. - 정수 제곱근을 계산하려면 넓은 범위의 정밀한 정수 곱셈기가 필요하지만, 대부분의 CPU는 이를 갖추지 않았음.
- 정밀도는 중요한 요소이며, 프로그래머가 정밀도와 속도 사이의 균형을 조절할 수 있도록 명령어가 분리되어 있음.
GN⁺의 의견
- 정수 제곱근 명령어는 특정한 응용 분야에서 유용할 수 있으며, 특히 3D 그래픽 계산과 같은 분야에서 중요할 수 있음.
- 이러한 명령어가 있는 프로세서는 특별한 알고리즘을 통해 고속의 연산을 가능하게 하여, 소프트웨어 레벨에서의 복잡한 계산을 줄일 수 있음.
- 그러나 현대의 많은 프로세서들은 이러한 명령어를 내장하지 않고 있으며, 대신 소프트웨어 라이브러리나 마이크로코드를 통해 이를 구현하고 있음.
- 정밀도와 속도의 균형이 중요하며, 이는 프로그래머가 상황에 맞게 조절할 수 있어야 함.
- 이 기사는 컴퓨터 역사에 관심이 있는 사람들에게 흥미로운 정보를 제공하며, 특히 저수준 프로그래밍이나 시스템 설계에 관심이 있는 사람들에게 도움이 될 수 있음.
Hacker News 의견
-
AArch64 NEON의 URSQRTE 명령어
- 32비트 고정소수점 정수로 간주된 값에 대해 대략적인 역제곱근을 계산하고, 그 값을 반으로 줄인 후 0부터 1-ε 범위로 제한함.
- FRSQRTE 명령어는 32비트 부동소수점 수에 대해 비슷한 연산을 수행함.
-
단일 클록 사이클 내 계산 가능성
- 매우 큰 룩업 테이블을 사용하면 가능함.
- 클록 사이클 내에서 수행할 수 있는 직렬 논리 게이트의 수에 따라 테이블 크기를 줄일 수 있음.
-
VAX 마이크로코드
- VAX가 제곱근 계산 기능을 가졌을 것이라는 추측.
-
전자기계 장치로 제곱근 계산
- Friden SRQ는 전자 부품 없이 덧셈과 시프트만으로 제곱근을 계산함.
- 소수점을 수동으로 조정해야 하므로 기술적으로 정수 연산으로 볼 수 있음.
-
정수 제곱근 계산 방법
- 1 + 3 + 5 + ... + (2k + 1) 수열을 사용하여 정수 제곱근을 구할 수 있음.
-
ENIAC에 대한 유머러스한 답변
- "ENIAC"이라는 답변이 재미있다고 언급.
-
제곱근의 대략적인 계산 방법
- Log2(x)를 'leading zeroes의 개수'로 대체하여 대략적인 제곱근을 계산할 수 있음.
-
6502 마이크로프로세서 팬들을 위한 제곱근 알고리즘 분석
- 6502 마이크로프로세서에 대한 제곱근 알고리즘의 철저한 분석이 있음.
-
ARM VFP의 VSQRT 명령어
- ARM VFP에는 VSQRT라는 제곱근 계산 명령어가 있음.
-
제곱근의 매우 대략적인 계산 방법
- leading 1의 위치의 절반만큼 오른쪽으로 비트 시프트하여 대략적인 제곱근을 구할 수 있음.
- 이 방법은 뉴턴-랩슨 반복법 등 더 정확한 계산을 위한 초기 추정치로 유용함.