技术解析

关于“国内 CPU”的吐槽
0
2021-06-09 17:22:50
idczone

这几天结束了 MT 僵硬的面试,把精力放到了我司国产化支持的进程上,就发生了一个让人啼笑不得的事情。查询的过程不写了,直接写结果。

某国产 CPU 计算无符号整数除法,竟然会出错。

指令为 div %rcx:

普通的 X86_64CPU div 前

rax            0x0	0
rcx            0xffffffffffffffff	-1
rdx            0xffffffff00000001	-4294967295

普通的 X86_64CPU div 后

rax            0xffffffff00000001	-4294967295
rcx            0xffffffffffffffff	-1
rdx            0xffffffff00000001	-429496抗投诉服务器7295

而 该国产 CPU div 前

(gdb) info reg
rax            0x0                 0
rcx            0xffffffffffffffff  -1
rdx            0xffffffff00000001  -4294967295

该国产 CPU div 后

rax            0x1                 1
rcx            0xffffffffffffffff  -1
rdx            0x1                 1

然后找了“中间商”,实际上是主板厂商联系 CPU 厂家,CPU 厂家回复:有没有测试程序可以让我们测试下?

我:?不是有寄存器的值了吗?你们自己写个程序?

最后我写了个测试程序给了 CPU 厂家。

我主要疑惑的是:这种测试不该出厂就做好吗?!


厂商给出的解释是:
BIOS 用于指定除法运算时 CPU 计算的路径,64 位除法运算使用路径溢出了,需要更新指定的路径
通过升级 BIOS 解决了 64 位除法运算失败的问题

删除掉这个帖子吧,厂商觉得影响不好,还联系到了领导

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服