V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hxndg
V2EX  ›  程序员

关于“国内 CPU”的吐槽

  •  
  •   hxndg · 2021-03-22 17:37:34 +08:00 · 916 次点击
    这是一个创建于 1102 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这几天结束了 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 厂家。

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

    2 条回复
    hxndg
        1
    hxndg  
    OP
       2021-04-02 14:22:37 +08:00
    厂商给出的解释是:
    BIOS 用于指定除法运算时 CPU 计算的路径,64 位除法运算使用路径溢出了,需要更新指定的路径
    通过升级 BIOS 解决了 64 位除法运算失败的问题
    hxndg
        2
    hxndg  
    OP
       2021-04-12 17:45:13 +08:00
    @Livid 删除掉这个帖子吧,厂商觉得影响不好,还联系到了领导
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1015 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:31 · PVG 03:31 · LAX 12:31 · JFK 15:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.