cpu-architecture - 大多数整数乘法指令的原因是什么?
问题描述
大多数整数乘法实际上不需要乘法:
- 自 486 以来,浮点数通常由专用硬件处理。
- 乘以常数,例如将数组索引按元素的大小缩放,在通常情况下它是 2 的幂的情况下可以减少到左移,或者在一般情况下是一系列左移和加法。
- 如果在循环的上下文中,与访问 2D 数组相关的乘法通常可以简化为加法。
那么还剩下什么?
- 某些类似的库函数
fwrite
将许多元素和元素大小作为运行时参数。 - 精确的十进制算术,例如 Java 的
BigDecimal
类型。 - 这种形式的密码学需要乘法并且不由它们自己的专用硬件处理。
- 大整数,例如用于探索数论。
- 我现在没有想到的其他情况。
这些都不是很常见,但所有现代 CPU 架构都包含整数乘法指令。(RISC-V 从指令集的最小版本中省略了它们,但甚至因为走到这一步而受到批评。)
有没有人分析过有代表性的代码示例,例如 SPEC 基准测试,以准确找出大多数实际使用整数乘法的用例(通过动态频率而不是静态频率来衡量)?
解决方案
推荐阅读
- macos - 无法在 Safari 中打开开发者工具
- python - 使用 Python 使用属性名称按路径搜索元素并替换 xml 中的值
- html - 在任何情况下如何在页面底部添加页脚?
- docker - docker 中的伪分布式 hadoop dfs。从本地计算机连接到 dfs 时出现问题
- react-native - 映射到元素数组时的 RN 奇怪的样式行为
- python - 将打印输出写入 csv selenium
- java - swagger-maven-plugin v3 中没有描述文件
- apache-kafka - 检索 Kafka Producer 配置
- javascript - 引用在函数范围内创建并稍后与 HTML 元素相关的对象的最优雅方式是什么?
- python-3.x - 熊猫找呼叫中心经理所在区域