关于“国内 CPU”的吐槽

2021-03-22 17:37:34 +08:00
 hxndg

这几天结束了 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	-4294967295

而 该国产 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 厂家。

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

940 次点击
所在节点    程序员
2 条回复
hxndg
2021-04-02 14:22:37 +08:00
厂商给出的解释是:
BIOS 用于指定除法运算时 CPU 计算的路径,64 位除法运算使用路径溢出了,需要更新指定的路径
通过升级 BIOS 解决了 64 位除法运算失败的问题
hxndg
2021-04-12 17:45:13 +08:00
@Livid 删除掉这个帖子吧,厂商觉得影响不好,还联系到了领导

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX