2014-07-20 1 views
1

현대 데스크탑 프로세서의 부동 소수점 성능에 대한 다른 질문을 볼 때 "어느 것이 더 빠름, 두 배 또는 부동입니까?"라는 질문에 대한 대답은 제 이해입니다. 하드웨어 또는 CPU의 ALU (Arithmatic Logic Unit)에서 구현되는 이러한 유형 중 어떤 것인가에 달려 있습니다.Raspberry Pi (ARM 아키텍처, BCM2835)의 부동 소수점 성능

float가 하드웨어로 구현 된 경우 double 데이터 형식 사용은 해당 데이터 형식을 사용하는 수학이 float 데이터 형식을 사용하는 소프트웨어를 통해 구현되므로 느립니다. 따라서 double은 느리고 더 많은 램을 사용합니다.

반면에 double이 하드웨어로 구현되는 경우 float 데이터 형식으로 변환하려면 변환 (일종의 절단과 같은 정렬)을 수행해야한다는 것을 알고 있습니다. 따라서 float를 사용하면 RAM이 적어 지지만 속도는 느려집니다.

Raspberry-Pi에서 하드웨어로 구현되는 데이터 형식은 무엇입니까? (똑같이 더 빠르거나 플로트 또는 더블입니까?)

BCM2835에 대한 데이터 시트의 제한된 부분을 읽으려고했으나 검색 한 정보를 찾지 못했습니다.

나는 성능을 테스트하는 좋은 방법을 생각할 수 없다는 것을 설명해야한다. 그래서 나는 시간 초과 테스트를 실행하지 않았다. 좋은 방법이란 가능한 모든 계산 또는 최소한 테스트해야하는 계산과 일관된 결과를 제공하는 테스트를 의미하는 것으로 하나의 데이터 유형이 다른 데이터 유형보다 빠르다고 합리적으로 확신 할 수있는 충분한 차이를 의미합니다. 다른.

+0

@EJP 그렇습니다. 모두 구현 되었습니까? GPU는 수레 만 처리 할 수 ​​있다고 생각합니다. 맞습니까? 어느 경우에 더 빠릅니까? (CPU에서) 플로트는 각 사이클마다 데이터 버스를 통해 더 많은 플로트가 전송 될 수 있기 때문에 플로트합니까? – user3728501

+0

이 http://en.m.wikipedia.org/wiki/ARM_architecture에 따르면 ARM hw는 단 정밀도와 배정도 모두를 지원합니다. – harmic

+0

@harmic이 점에 대해 감사드립니다. 내 생각에 float가 더 빠를 수도 있습니다. 한 번에 여러 값을 계산에 사용합니까? (예 : 배열의 값 합산, 즉 합계 제곱 인 푸리에 스펙트럼의 전력 계산) – user3728501

답변

0

라즈베리 파이는 Wikipedia에 따라 CPU로 ARM1176JZF-S (*)를 사용하며 파이프 라인 된 단 정밀도 및 배정 밀도 부동 소수점에 대한 하드웨어 지원을 제공합니다. TRM on ARM's website에서 정확한 대기 시간 및 처리량 데이터를 조회 할 수 있습니다. 짧은 버전 : 대기 시간은 단일 및 이중에 비견 될 수 있습니다. 배정 밀도 곱셈은 단 정밀도의 처리량의 절반입니다.

부동 소수점은 1176에서는 팔 모드에서만 지원된다는 점에 유의하십시오. "엄지 1"명령 세트는 부동 소수점 레지스터에 대한 액세스를 전혀 허용하지 않습니다.

(*) 1176은 고대입니다. 나는 조금 더 A9 또는 M4와 같은 좀 더 현대적인 것을 발견하지 못한다는 것에 약간 놀랐다.

+0

나는 그들이 비용을 절감하기 위해 ARM1176JZFS를 사용하기로 결정했다고 생각한다. (나는 과거에 더 깊이있는 것을 읽었다는 것을 기억한다. [그러나 이것은 내가 찾을 수있는 최고의 자료이다] (http://www.raspberrypi.org/help/faqs/# generalArm11)). – tangrs

+0

칩 벤더가 코어를 전환하는 데 비용이 드는 이유는 무엇입니까? –

+0

@dwelch : RPi는 종종 ARM 어셈블리를 배우려는 사람들에게 연결된다는 사실 때문에 두 배가되는 오래된 프로그래머에게는 비용이 많이 듭니다. Thumb2 및 NEON으로 armv7을 사용하면 대다수의 사용자에게 훨씬 더 유용합니다. 분명히, 그것은 사소한 상충 관계이며, 나는 RPi가 최첨단이 될 것이라고 기대하지 않을 것입니다. (그래서 나는 단지 * 놀랍게도 놀랍습니다.). –