[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
1. 1*1 这在任何一台电脑上都不会超出 单字节(8 位) 整型数运算范围, 也不会超出最小字长 8 位
所需要的时间无疑是 乘法运算里 最少的.

2.
两个大数以及它们的积的十六进制表示如下:

1234567
12D687

134567
20DA7

166131977489
26AE3CCD11

两个大乘数都在 4 字节以内, 而积却超出了 4 字节(32 位).
现在我们使用的多数 PC 机都是 32 位机, 直接作为整型数计算会产生溢出, 这种情况下会是很不一样的.

用 32 位机的 RISC 指令集肯定是不能直接计算得到结果的, 得有程序支持才行.

而在 64 位(8字节)及 64 位以上的机器上, 乘数和积的存储长度都没有超出,
运算器的设计就可能让 1*1和1234567*134567 都是花费一个同样的最少的计算时间, 换而言之,
现在的 CPU 核心电路设计和 RISC 指令可以(或将会)实现:
当 操作数 和 理论计算结果 在同一个 整型数据类型 的计算范围内时, 任何小的数的运算和任何大的数的运算
都将花费同样多的时钟周期, 也就是费时一样长.

最终观点: 1*1 和 1234567*134567 在 32 位及以下的机器上会有很大的耗时差异, 而在 64 位及以上
的机器上已经实现(或将会实现)耗时完全相同.

TOP

各位想要实际测试的朋友: 至少 要用同样的 汇编代码 分别在一个 <=32位的机器 和 一个 >=64位的机器上分别做测试

TOP

以下引用 wikipedia 对 RISC 和 CISC 的相关阐述 进一步阐明我的观点: 1*1和1234567*134567, 因机器字长及CPU核心电路设计 以及 核心指令设计方案而不同, 可能耗时差异很大, 也可能都只需要耗时 1 个时钟周期.
http://zh.wikipedia.org/wiki/%E7%B2%BE%E7%AE%80%E6%8C%87%E4%BB%A4%E9%9B%86

...
另一方面,目前最常见的复杂指令集x86 CPU,虽然指令集是CISC的,但因对常用的简单指令会以硬件线路控制尽全力加速,不常用的复杂指令则交由微码循序器“慢慢解码、慢慢跑”,因而有“RISCy x86”之称。
...
复杂指令集(CISC)
例如:Intel的奔腾系列中央处理器属于复杂指令集(x86)结构,而IBM的PowerPC 970(用于苹果机Power Mac G5)中央处理器属于精简指令集(POWER)结构。但是自从 Intel Pentium Pro(P6)之后,x86复杂指令集的CPU也开始采用内核精简指令集,而在外围布置从复杂指令集到精简指令集的译码电路动态译码方式,籍此提高CPU的性能,使复杂指令集CPU也有可能在1个时钟周期内运行一条甚至多条指令
1

评分人数

TOP

返回列表