【发布时间】:2014-12-09 19:21:12
【问题描述】:
我在看一些关于算法的讲座,教授用乘法作为如何改进朴素算法的例子......
这让我意识到乘法并不那么明显,虽然我在编码时只是认为它是一个简单的原子操作,但乘法需要一个算法来运行,它不像对数字求和那样工作。
所以我想知道,现代桌面处理器实际使用什么算法?我猜他们不依赖对数表,也不用数千和循环......
【问题讨论】:
-
您需要指定“整数”或“浮点数”;可能还有哪个 CPU。请注意,对于浮点,指数相加,有效数字相乘,有效数字大多在 1.0 到 1.9999* 的范围内,这使得它们“更适合”对整数没有意义的方法..
-
您需要选择一个特定的 CPU 并查看它的完整数据表(我的意思是 10MByte 或更大的 PDF)。他们有时会提到这样的事情。但是要确定您需要询问 CPU 开发人员/制造商或 inspect its die Visual6502 包含很多芯片的镜头,然后选择一个...较旧的整数乘法器现在使用 Shift 和 Add 乘法,谁知道呢(LUT,近似值,Karatsuba ...)
-
如果您确实是指 FP:很多 FP 乘数是整数尾数乘数。添加指数很简单,并且重新规范化尾数结果只是对指数的额外 0 或 1 偏移,假设标准化的输入和结果。
-
ALU 的内部设计可以成为 CPU 快速和节能的秘诀之一。这对 CPU 架构师来说很有趣,但与软件完全无关,甚至与 asm 的低级手动调整无关。重要的是性能:延迟和吞吐量。也就是说,就硬件设计算作编程而言,这是一个编程问题,但它询问的是现有设计是如何完成的。
标签: algorithm x86 cpu-architecture alu micro-architecture