Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Raspberry Pi上的浮点性能(ARM架构,BCM2835)_C++_C_Performance_Floating Point_Raspberry Pi - Fatal编程技术网

C++ Raspberry Pi上的浮点性能(ARM架构,BCM2835)

C++ Raspberry Pi上的浮点性能(ARM架构,BCM2835),c++,c,performance,floating-point,raspberry-pi,C++,C,Performance,Floating Point,Raspberry Pi,通过阅读关于现代桌面处理器上浮点性能的其他问题,我的理解是,“哪个更快,是双精度还是浮点型?”这一问题的答案取决于这些类型中的哪一种是在硬件中实现的,或者是在CPU的ALU(我想是算术逻辑单元)中实现的 我的理解是,如果浮点是在硬件中实现的,那么使用双数据类型的速度会慢一些,因为使用该数据类型的数学是通过使用浮点数据类型的软件实现的。因此,double速度较慢,并且使用更多ram 另一方面,如果在硬件中实现double,我的理解是必须进行转换(有点像截断)才能转换为浮点数据类型。因此,使用flo

通过阅读关于现代桌面处理器上浮点性能的其他问题,我的理解是,“哪个更快,是双精度还是浮点型?”这一问题的答案取决于这些类型中的哪一种是在硬件中实现的,或者是在CPU的ALU(我想是算术逻辑单元)中实现的

我的理解是,如果浮点是在硬件中实现的,那么使用双数据类型的速度会慢一些,因为使用该数据类型的数学是通过使用浮点数据类型的软件实现的。因此,double速度较慢,并且使用更多ram

另一方面,如果在硬件中实现double,我的理解是必须进行转换(有点像截断)才能转换为浮点数据类型。因此,使用float会更慢,尽管它会使用更少的ram

在Raspberry Pi上,硬件实现了哪种数据类型?(相当于,浮动还是双精度,哪个更快?)

我试图阅读BCM2835数据表的有限部分,但没有找到我正在搜索的信息


我应该解释一下,我想不出一个测试性能的好方法,所以我没有运行任何定时测试。“好的方法”指的是评估所有可能的计算,或至少是我应该测试的计算,以及给出一致结果的测试,其差异足以合理确定一种数据类型比另一种更快。

Raspberry Pi使用ARM1176JZF-S(*)作为其CPU,根据,它具有对流水线单精度和双精度浮点的硬件支持。您可以在中查找确切的延迟和吞吐量数据。短版:单版和双版的延迟相当;双精度乘法器的吞吐量是单精度乘法器的一半

请注意,1176上仅在arm模式下支持浮点运算;“thumb 1”指令集根本不允许访问浮点寄存器


(*)1176是古老的。我有点惊讶没有发现像A9或M4这样更现代的东西。

@EJP哦,对了,它们都实现了?我认为GPU只能处理浮动,对吗?在哪种情况下,哪个更快?(在CPU上)浮动,因为每个周期可能通过数据总线发送更多的浮动?根据这一点,ARM hw支持单浮动和双浮动precision@harmic感谢这一点,我的猜测是,如果一次可以传输多个值以用于计算,那么float可能会更快?(例如,对数组中的值求和,或计算傅里叶谱中的幂,即平方和。)Raspberry Pi硬件支持单精度和双精度浮点运算。我是这么说的。有关向量浮点单位的说明,请特别参见第1.5.9段。请注意,Raspbian的某些版本不使用浮点硬件。Stephen的回答表明没有差异,到目前为止,您的计时表明没有差异,根据经验,不必有差异,这取决于总线和体系结构。这可能是64位数据总线,如果处理器在单总线和双总线之间没有性能差异,那么您不应该看到差异。做一个简单的测试,分解它并发布它们,以及你是如何计时的,也许我们可以解释为什么你看到了你看到的,或者为什么你没有看到差异。我认为他们选择使用ARM1176JZFS来削减成本(我记得过去读过一些更深入的文章)。芯片供应商交换核心是有成本的,如果你不需要改变,为什么还要改变?@dwelch:学习修补过时东西的所有程序员都要付出代价,因为RPi经常被那些想学习ARM组装的人所使用,这一事实让他们付出了双倍的代价。使用带有Thumb2和NEON的armv7对他们中的许多人来说会非常有用。显然,这是一个非平凡的权衡,我不希望RPi是最前沿的(这就是为什么我只是有点惊讶=)。我不会走那么远,非常非常非常小的一部分基于arm的产品甚至比你所说的更少。对于你所说的,使用小猎犬骨而不是覆盆子皮,对于基本的手臂材料,覆盆子皮或小猎犬骨是可以的(或一长串其他的)