天嵌 ARM开发社区

 找回密码
 注册
查看: 3149|回复: 6

2440的浮点运算处理

[复制链接]
队长阿超 发表于 2013-2-25 14:07:19 | 显示全部楼层 |阅读模式
最近在移植一个语音编解码工具时出现的问题,源码编译好将库和可执行文件下载到板子上运行,结果发现:
程序运行特别慢,在PC上10秒完成的,在2440上运行了4分钟才完成
由于程序中涉及到许多浮点运算,所以我想是不是2440的浮点处理有关系
我对浮点,定点运算了解不多,希望各位能帮我解决这个问题。
亚瑟王 发表于 2013-2-25 14:52:35 | 显示全部楼层
1、2440的主频只有400MHz,在处理大数据量的运算时有些吃力。
2、2440没有硬件浮点数,只能用软件浮点数,这个也是比较费时的。
建议购买天嵌科技的TQ210来做这类处理,TQ210支持硬件浮点数,主频也高达1GHz,处理这方面的事情没问题。
 楼主| 队长阿超 发表于 2013-2-25 15:18:00 | 显示全部楼层
浮点运算,一种是软浮点,一种是浮点模拟器 ,浮点模拟器是利用了undefined instrction handler,也就是进入未定义指令异常模式,这么做带来的后果是带来极频繁的exception,大大增加中断延迟,降低系统实时性。
 楼主| 队长阿超 发表于 2013-2-25 15:20:17 | 显示全部楼层
我不知道现在我的板子用的是软浮点还是浮点模拟器,
我用的光盘自带的内核和4.3.3工具链,结果在论坛看到:4.3.3不支持浮点运算
也不知道是哪里的问题
亚瑟王 发表于 2013-2-25 15:31:26 | 显示全部楼层
队长阿超 发表于 2013-2-25 15:20
我不知道现在我的板子用的是软浮点还是浮点模拟器,
我用的光盘自带的内核和4.3.3工具链,结果在论坛看到: ...

肯定支持软件浮点数的,最简单的测试方法:编写一个浮点数运算的简单程序,比如1.1×1.3,然后看计算结果。
 楼主| 队长阿超 发表于 2013-2-26 10:17:04 | 显示全部楼层
我在网上找的资料,一:早期ARM上的浮点模拟器:
早期的ARM没有协处理器,所以浮点运算是由CPU来模拟的,即所需浮点运算均在浮点运算模拟器(float math emulation)上进行,需要的浮点运算,常要耗费数千个循环才能执行完毕,因此特别缓慢。
直到今天,在ARM Kernel配置时,都有如下选项:
Floating point emulation  --->
[ ] NWFPE math emulation
[ ] FastFPE math emulation (EXPERIMENTAL)
在这里,可以配置ARM 浮点模拟器。

浮点模拟器 模拟浮点是利用了undefined instrction handler,在运算过程中遇到浮点计算是产生异常中断,这么做带来的后果是带来极频繁的exception,大大增加中断延迟,降低系统实时性。

二:软浮点技术:
软浮点支持是由交叉工具链提供的功能,与Linux内核无关。当使用软浮点工具链编译浮点操作时,编译器会用内联的浮点库替换掉浮点操作,使得生成的机器码完全不含浮点指令,但是又能够完成正确的浮点操作。

三:浮点协处理器:
在较新版本的ARM中,可以添加协处理器。 一些ARM CPU为了更好的处理浮点计算的需要,添加了浮点协处理器。
并定义了浮点指令集。 如果不存在实际的硬件,则这些指令被截获并由浮点模拟器模块(FPEmulator)来执行。

对应用程序中浮点运算的编译,一种是编译成硬浮点指令,一种是编译成软浮点。

我自己的理解如下:
我的程序编译时用的可能是硬浮点:tq2440不支持硬浮点,也就是没有浮点协处理器,那么硬浮点指令被截获并由浮点模拟器模块来执行,由上面的资料可知,浮点模拟器处理速度很慢,这就和我的程序执行结果一致。
这只是我的猜测而已,如何知道交叉编译器编译时用的是硬浮点还是软浮点,请知道的人帮帮忙,谢谢!
我的kernel是光盘自带的2.6.30.4的内核,交叉编译器是光盘自带的arm-linux-gcc4.3.3版本









 楼主| 队长阿超 发表于 2013-2-27 14:02:41 | 显示全部楼层
没人吗。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-19 16:13 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表