2012-01-15 7 views
7

저는 FPGA에서 구현 될 가능성이 높은 효율적인 제곱근 알고리즘에 대해 좀 더 많은 정보를 찾으려고합니다. 많은 알고리즘이 이미 발견되었지만 Intel이나 AMD와 같은 알고리즘이 있습니까? 효율적으로 나는 그들이 정말로 빠르다거나 많은 기억을 필요로하지 않는다는 것을 의미한다.제곱근의 하드웨어 구현?

EDIT : 일반적으로 질문은 일반적으로 부동 소수점 숫자이며 하드웨어의 대부분은 1 부호 비트, 8 비트 바이어스 된 지수 및 23 비트 가수로 표현되는 IEEE 754 표준을 구현하므로 언급해야합니다.

감사합니다.

+0

http://stackoverflow.com/questions/1528727/why-is-sse-scalar-sqrtx-slower-than-rsqrtx-x 자세한 정보가 있습니다. –

+0

[this] (http://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Binary_numeral_system_.28base_2.29)를 구현하지 않는 이유는 무엇입니까? 룩업 테이블 (look-up table)과 같은 것들에는 교대 만하고 추가 만하면됩니다. FPGA에 적합한 후보로 보입니다. –

+0

@Alex 주석 주셔서 감사합니다. VHDL로 구현할 수있는 방법이 아직 없기 때문에 좀 더 많은 리소스를 찾으려고 노력할 것입니다. 또 하나의 질문은 sqrt의 정수 부분을 찾지 않습니까? –

답변

5

완전한 해결책은 아니지만 몇 가지 지침이 있습니다.

부동 소수점에서 작업한다고 가정하기 때문에 부동 소수점은 가수와 지수로 저장된다는 점을 기억하십시오. 제곱근의 지수는 대수로 인해 원래 숫자의 지수의 약 절반입니다.

그런 다음 가수를 룩업 테이블로 근사 할 수 있습니다. 그러면 LUT의 결과에 정확성을 부여하기 위해 두 개의 newton-raphson 라운드를 사용할 수 있습니다.

약 8 년간이 기능을 구현하지 못했지만이 방법을 사용하여 3 ~ 4 사이클의 결과를 얻을 수있었습니다.

+0

폴 감사합니다! 특정 알고리즘을 가르쳐 주시겠습니까? 네, 부동 소수점에서 일하고 있어요. 내 질문을 편집 해 봤어요. 아니면 제가 모든 것을 이해하지 못했기 때문에 당신의 설명을 조금 넓힐 수 있겠습니까? :) –

+0

불행히도 저는 너무 오랫동안 정확하게 기억할 수 없었습니다. 세부 사항, 그리고 이전 고용주를위한 것이 었습니다. 구체적인 질문이 있으시면 최선을 다해 답변 해 드리겠습니다. –

+0

감사합니다. @Paul. 나는 당신의 질문을 가장 좋은 대답으로 표시했다. 그 아이디어는 나에게 옳은 방향으로 나를 가리킨다. 감사 –

2

빠른 역 쿼트 루트에 유용합니다.
보세요 here입니다. 처음 추측에 대해 꽤 놀랍다는 것을 알 수 있습니다.

+0

고마워요! 나는 이미 그것을 보았고 꽤 impresive하게 보였다. 그러나 "마술 수"는 처음에 나를 조금 깜짝 놀라게했다. 다시 한번 살펴 보겠습니다 :) –

+0

나는이 대답이 정말로 그 질문과 관련이 있다고 생각하지 않는다. 이 알고리즘은 제곱근의 역의 거친 근사값만을 계산하며, FPGA에서는 구현되지 않았습니다. –

+0

감사합니다. Sven. FPGA에 대한 대부분의 구현은 Newton-Raphson 방식에서 일부 변형을 사용합니까? 부서 자체를 제거하기위한 반전과 마찬가지로 비싼 작업입니까? –