现代cpus跳过乘以零吗?

use*_*927 6 cpu instructions multiplying

我想知道当前cpus当至少其中一个为零时,是否避免乘以两个数字.谢谢

Rok*_*alj 8

  1. 现代CPU - 你的意思是什么?你的意思是最常用的(如x86,AMD64,ARM)或最近开发的.每个处理器架构都有自己的属性.而且,每个公司(如Intel或AMD)都可以使处理器的方式不同(通常是公司秘密).

  2. 当你质疑时,我对此表示怀疑.你知道,如果考虑实际优化的乘法运算百分比,那么在每次乘法过多之前,甚至检查数字是否等于零两次.

  3. 这样的优化会使CPU变得更加昂贵.

假设平均程序中有1%的乘法乘以零(并且可能低得多).这意味着与零的比较必须比乘以仅仅考虑开销的速度快200倍(并且更多的是在实践中有用).

我认为你从人的角度来看这个问题太过分了.当你乘以时,你清楚地看到其中一个被乘数为零并得出结论.但是,与计算机有很大不同.计算机实际上必须检查所有64位或32位以确保某些东西等于零.

  1. 如果我是你,我不担心.处理器制造商和编译器编写者正在尽最大努力实现最佳性能.他们对一切都有文学思想.

  • 乘法(以及加法/减法)是几乎所有现代非嵌入式硬件上的固定延迟 - 除非涉及非正规.所以操作数是否为零并不重要.(如果硬件对零进行特殊处理,则可以节省一些电量.) (2认同)

Pup*_*ppy -3

我希望现代台式机 CPU 中会有这样的东西。