2013-04-01 2 views
22

나는 아무것도 최적화하려고하지 않고 있지만 프로그래머로부터 항상 이것을 듣고 진실로 받아 들였습니다. 결국 그들은이 물건을 알기로되어 있습니다.왜 나누기가 곱셈보다 비쌉니까?

하지만 실제로 왜 나누기가 곱셈보다 느린 지 궁금합니다. 분열이 영광스러운 뺄셈이 아닌가? 곱셈은 영광스러운 추가인가? 그래서 수학적으로 나는 왜 어떤 방향으로 가는지 또는 다른 방향으로가는 것이 계산 상 매우 다른 비용을 갖는지 보지 못합니다.

다른 사람이 내가 전에 물어 본 내용 대신 "이유"를 알 수 있도록 이유를 설명해 주실 수 있습니까?

+0

''[표창장은 필요로했다]' –

+7

''결국이 물건을 알기로되어 있습니다. "- 대부분의 사람들이 모르는 것에 놀랄 수도 있습니다. – David

+0

부서 검색은 온라인 곱셈보다 느리고 비싸지 만 어디에서나 볼 수 있습니다. 아무도 그것이 느리지 않다고 주장하지 않는다고 생각합니다. –

답변

32

CPU의 ALU (산술 논리 단위)은 하드웨어로 구현되지만 알고리즘을 실행합니다. 클래식 곱셈 알고리즘에는 Wallace treeDadda tree이 포함됩니다. 자세한 내용은 here을 참조하십시오. 최신 프로세서에서는보다 정교한 기법을 사용할 수 있습니다. 일반적으로 프로세서는 필요한 클럭 사이클을 최소화하기 위해 비트 쌍 연산을 병렬화하려고 노력합니다. 곱셈 알고리즘은 매우 효과적으로 병렬화 될 수 있습니다 (더 많은 트랜지스터가 필요함).

Division algorithms은 효율적으로 병렬 처리 할 수 ​​없습니다. 가장 효율적인 분할 알고리즘은 매우 복잡합니다 (The Pentium FDIV bug은 복잡성 수준을 보여줍니다). 일반적으로 비트 당 더 많은 클럭 사이클이 필요합니다. 기술적 인 세부 사항이 있다면, here은 인텔의 멋진 설명입니다. 인텔 실제로는 patented 자신의 분할 알고리즘.

관련 문제