답변:
나눗셈은 유클리드 측정을 사용하여 몫의 결과를 나머지로 이동해야하는 반복 알고리즘입니다 ( 2 참조) . 반면, 곱셈은 (고정 된) 일련의 비트 조작 트릭으로 줄어들 수 있습니다.
aterrel이 제안한 것처럼 모든 현재 CPU가 반복적 접근 방식을 사용하는 것처럼 보이지만 비 반복적 접근 방식에 대한 일부 작업이 수행되었습니다. 가변 정밀도 부동 소수점 나누기와 제곱근은 룩업 테이블과 테일러 시리즈 확장을 사용하여 FPGA 에서 부동 소수점 나누기와 제곱근의 반복적이지 않은 구현에 대해 이야기 합니다.
동일한 기술을 사용하여 이러한 작업을 단일주기 (지연 시간이 아닌 경우 처리량)로 줄일 수 있다고 생각할 수 있지만 거대한 조회 테이블 이 필요할 수 있으므로 실리콘 부동산의 넓은 영역이 필요합니다. .
CPU를 설계 할 때 많은 절충점이 있습니다. 기능성, 복잡성 (트랜지스터 수), 속도 및 전력 소비는 모두 서로 관련되어 있으며 디자인 중에 이루어진 결정은 성능에 큰 영향을 줄 수 있습니다.
현대의 프로세서는 아마도 단일 사이클 에서 부동 소수점 분할을 수행하기에 충분한 트랜지스터를 실리콘에 전용으로 제공하는 기본 부동 소수점 유닛을 가질 수 있지만, 이러한 트랜지스터를 효율적으로 사용하기는 어려울 것입니다.
부동 소수점은 10 년 전에이 반복을 반복에서 비 반복으로 전환했습니다. 요즘에는 단일 프로세서 곱하기 및 곱하기 누산이 모바일 프로세서에서도 일반적입니다.
트랜지스터 예산을 효율적으로 사용하기 전에 분할과 같은 곱셈이 종종 반복적 인 방법으로 수행되었습니다. 당시 전용 DSP 프로세서는 대부분의 실리콘을 단일 고속 멀티플라이 누적 (MAC) 장치에 전용 할 수 있었습니다. Core2duo CPU는 부동 소수점 곱셈 대기 시간이 3이고 (값은 파이프 라인에서 나온 후 3 사이클이 됨) 한 번에 3 개의 곱셈이 가능하여 단일 사이클 처리량이 발생하는 반면 SSE2 장치는 한 번의 사이클로 여러 FP 배수를 펌프 아웃합니다.
현대의 CPU에는 거대한 실리콘 영역을 단일 사이클 분할 장치로 전용하는 대신 여러 장치가 있으며 각 장치는 병렬로 작업을 수행 할 수 있지만 특정 상황에 맞게 최적화됩니다. 실제로 SSE 와 같은 SIMD 명령어 나 Sandy Bridge 이상의 CPU 통합 그래픽 을 고려하면 CPU에 이러한 부동 소수점 나누기 단위 가 많이 있을 수 있습니다 .
일반적인 부동 소수점 나누기가 현대 CPU에 더 중요하다면, 단일 사이클을 만들기에 충분한 실리콘 면적을 할당하는 것이 합리적 일 수 있지만, 대부분의 칩 제조업체는 다른 것들을 위해 게이트를 사용하여 해당 실리콘을 더 잘 활용할 수 있다고 결정했습니다. . 따라서 하나의 작업은 느리지 만 전반적인 (일반적인 사용 시나리오의 경우) CPU는 더 빠르거나 적은 전력을 소비합니다.