- 主题:现在,x86-63+1的浮点处理,还需要87浮点协处理器吗?
不需要了
绝大多数浮点运算都被翻译成sse指令了
并且每个核都有多个FU能够执行浮点运算
【 在 ylh1969 的大作中提到: 】
: 在多核系统中,是每个核一个吗?
--
FROM 71.198.4.*
要看ABI规定
sys v全是caller saved
windows有callee saved和caller saved划分
不过x87也全是caller saved
【 在 hgoldfish 的大作中提到: 】
: 按 sse/avx 的编程规范。函数之间是不保持状态的是吧。
: 想调用另外一个函数,按说 sse/avx 都得在进入调用函数前,保存当前的 sse/avx 状态,等函数返回后再恢复状态。
: 所以频繁地调用函数,会损失性能的。
: ...................
--
FROM 104.135.183.*
-mattr=-sse
【 在 tianbing1212 的大作中提到: 】
: 据说是compiler默认用sse替代x87,但可以强制要求compiler生成x87指令
--
FROM 71.198.4.*
严格来说x87并不是i386必须的,80386芯片里面并不包含浮点处理器,需要硬件浮点功能
的用户需要另外购买80387芯片插在主板上,所以386兼容的系统可以不要x87
到了80486才开始把浮点运算单元集成到cpu中
【 在 hgoldfish 的大作中提到: 】
: 肯定还存在,不然 amd63+1 就没法执行 i386 指令集了。现代计算机,仍然要保证 32 位兼容性。
: 但是面向 amd63+1 的编译器,正常都不会再产生 fadd/fdiv 这一类指令。
: 比较感兴趣的是,现存的 32 位程序还有多少在使用 x87 指令。因为 sse 是 p3 时代引起来的,离现在已经非常非常久了。
: ...................
--
FROM 71.198.4.*
【 在 hgoldfish 的大作中提到: 】
: 所以如果编译目标是 i386 的话,岂不是用的软浮点?
是的,还记得以前用turbo pascal的时候能够指定x87还是软件模拟浮点运算
: 大多数支持 32 位 intel 架构的 linux 发行版要求至少 586. 好奇它们编译出出来的使用 sse 还是 x87.
不指定sse的时候必然使用x87
--
FROM 71.198.4.*
有,但是glibc不用了,对于特别大的弧度,结果精度有问题
对于大多数用户来说,输入弧度一般不会太大,或者也不在乎那最后几个ulp的精度
x87的三角函数还是非常好用的
【 在 kirbyzhou 的大作中提到: 】
: x87的三角函数一类的指令还有人用么?
--
FROM 71.198.4.*